ƾ�Á! † "ÀW ð¿ü‡NÀº  ý‡÷ f kÀr¿ pðÀX¿7ÚýÀ ÷ pÁ&¼B÷ :  /�öB ôÁeðÁ&¼À7  ý÷ `É ÷ €¸Â ºC„ÂeÔ Ô¤!ü‡€ðÿÁeæ— ¼î‡è ÷ N º‘— ¼ü‡ö " ü‡ß �Àetüÿ÷ ZÅEðÿWuÅe ºÄºT!ºü‡‡ÎeÀ ý· ý÷5àúÀ ºÎå‡& �ŠÀÀ ºõ÷ €À  ºîf Ìür f rvÐÁÔý‰r t@PÁ ÿ!á ºáÿáÉ‹þ�‡Àpÿˆ È‹þÀÎ?ÀE€ÿ A‡ Z‚Àe  À ÷‹®?ý À ÷ ìÿÀŠ÷ äÿ ÷ ÞÿÀ ‡7ˆ?‡P 6¬ ½ Ë : € p t È *  ) k j I K J ] [ Y W V U T S R Q P O M L K J I H G F D C B A @ ? > Z ¿ = e c f d b a ` Á § - Á ^ ] \ [ Y X W V U T S R Q P O N M L Z I K J ] \ [ Z Y W V U T S R Q P O M L K J I ] !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghimkÍm Ìrs]ÔY Ï�/ld lib1 ---644 3 1 /usr/sys/lib1 lib2 ---644 3 1 /usr/sys/lib2 param.h ---644 3íÁ  l ]Ï]ÏíÁ°ü…\™æ\™æí�êRSTY ÏY Ïí‘XaY ÏY Ïí‘ÖnY ÏY Ïí�˜oY ÏY Ïí‘ðzY ÏY Ïí‘Æ„Y ÏY Ïí‘È“Y ÏY Ïí� ”•–—Y ÏY Ïí�ä˜Y ÏY Ïä�¾™Y ÏY Ïí�¢šY ÏY Ïí�°›œ�Y ÏY Ïí‰HžŸ ¡¢Y ÏY Ïí‘t­Y ÏY Ïí‘€»Y ÏY Ïí‘–ÅY ÏY Ïí�8ÆÇÈÉY ÏY Ïí�ÊY ÏY Ïí�ŽËÌY ÏY Ïí�ÂÍÎÏÐÑÒÓÔY ÏY Ïí�~ÕÖY ÏY Ïí‘ÄàY ÏY Ïí�–áY ÏY Ïí‘"ìY ÏY Ïí�®íîY ÏY Ïí�ïðñòY ÏY Ïí�ÀóY ÏY Ïí�È ôõö÷øùúY ÏY Ïí�àûY ÏY Ï퉸 ýþÿY ÏY Ïí‘ Y ÏY Ïí‘LY ÏY Ïí‰ðY ÏY Ïí‰ Y ÏY Ïí�Ö  !Y ÏY Ïí‘f,Y ÏY Ïí�î -./0123Y ÏY Ïí‰î45678Y ÏY Ïí‘„CY ÏY Ïí�rDY ÏY Ïí�BEFGHY ÏY Ïí‰$IY ÏY Ïí‘ÄUY ÏY Ïí�ÂVWXY ÏY Ïí‘âbY ÏY Ïí�ðcY ÏY Ïí�defgY ÏY Ï퉘hijkY ÏY Ïí�ÆlY ÏY Ïí��mY ÏY Ïí�,noY ÏY Ïí‘|yY ÏY Ïí�–zY ÏY Ïí�°{|}~Y ÏY Ïí�b€�‚Y ÏY Ïí�ªƒ„Y ÏY ÏíÁ@†Y ÏY ϶¡Y ÏY Ï$�Y ÏY ÏíÁ­\ê\åæä�¾‡Y ÏY Ïí�¼ˆ‰Š‹ŒY ÏY Ïä�ž�Ž��Y ÏY Ïä‘(šY ÏY Ïä�›œ�žY ÏY Ï퉟 ¡¢£Y ÏY Ïí�ܤY ÏY Ϥ�¥Y ÏY Ϥ�F¦Y ÏY Ϥ�8§Y ÏY Ïí‰Æ¨©ª«Y ÏY Ïí� ¬Y ÏY ÏíÁŽ\èè\èè푺¸Y ÏY Ï푨8ÖY ÏY Ïí‘ JýY ÏY Ϥ�ˆ�  ¡ ™ …   Ÿ ]¼]Ѥ�` Y ÏY Ϥ‘ 5(Y ÏY Ϥ�T)Y ÏY Ϥ‘¦1C\IçY Ϥ‘ÎGL\®è\®è¤‘2„Y ÏY Ϥ�Ö …†‡ˆ‰Š‹Y ÏY Ϥ�LŒ�Y ÏY ÏíÁ �Y ÏY ÏÿÁ �Y ÏY ÏíÁð9 \ç\"æíÁ ‘Y ÏY ÏíÁàz\Èå\Èåí�– ’“”•–—Y ÏY Ïí�Ö˜™š›Y ÏY Ïí�bœ�žŸY ÏY Ïí‘*$³Y ÏY Ïí�Ê´µ¶·¸Y ÏY Ï표ÃY ÏY Ïí‘ÚÎY ÏY Ïí‘$ÛY ÏY Ïí‘åY ÏY Ïí�ZæçèY ÏY Ïí�éY ÏY Ïí�bêëìY ÏY Ïí�0íîïY ÏY Ï퉾ðñòY ÏY Ïí�ðóY ÏY Ïí‘`ýY ÏY Ï푲Y ÏY Ïí‘>Y ÏY Ïí�ÔY ÏY Ïí‘Î$0Y ÏY Ïí�:123Y ÏY Ïí�Â45Y ÏY Ïí�06789Y ÏY Ïí‘ÜGY ÏY Ïí�–HIJKLY ÏY Ïí�hMNOPY ÏY Ïí‘"OyY ÏY ÏíÁÀÔY ÏY Ϥ‘`-’Y ÏY Ϥ‘Ì6¯Y ÏY Ϥ‘×½Y ÏY Ϥ‘èÎY ÏY Ϥ‘…,æY ÏY Ϥ‘t1Y ÏY Ϥ�1 Y ÏY Ϥ�@     Y ÏY Ϥ‘*Y ÏY Ϥ�ÜY ÏY Ϥ�3 !"#$%Y ÏY Ϥ�¨&'()Y ÏY Ϥ‘ AKY ÏY Ϥ‘¤#^Y ÏY Ϥ�N_`abcY ÏY Ϥ�» defghiY ÏY Ϥ�jkY ÏY Ϥ�ÁlmnY ÏY Ïí�† opqrsY ÏY Ϥ�Ytuvwxyz{Y ÏY Ϥ�ð|}~Y ÏY Ϥ‘ÿ�Y ÏY Ϥ�]Ž��Y ÏY Ϥ‘þ=°Y ÏY Ϥ‘Z@ÒY ÏY Ϥ�[ÓY ÏY ÏíÁ dY ÏY Ϥ�ŒÕÖ×Y ÏY Ïí‘ /ðY ÏY Ϥ‘2Y ÏY Ϥ‘2 Y ÏY Ϥ‘î9(Y ÏY Ϥ‘n#;Y ÏY Ϥ‘BF`Y ÏY Ϥ�®abcY ÏY ÏíÁ�Ÿ\ ßY Ïí�efghY ÏY Ïí‘æ7…Y ÏY Ïí�¤ †‡ˆ‰ŠY ÏY Ïí�p‹ŒY ÏY Ïí���Ž��‘Y ÏY ϶� ’Y ÏY Ïí‘ žY ÏY ÏíÁ�\ çY Ϥ�’ ¡Y ÏY Ϥ�¢£Y ÏY Ϥ�˜¤Y ÏY Ϥ�¥¦Y ÏY Ϥ‘ÐRÑY ÏY Ϥ�TÒÓÔÕÖY ÏY Ϥ‘yUY ÏY ÏíÁÀ$Y ÏY Ϥ�äY ÏY Ϥ�øY ÏY Ϥ�Ò     Y ÏY Ϥ�ÍY ÏY Ϥ�ìY ÏY Ϥ�JY ÏY Ϥ�*Y ÏY Ϥ�ÄY ÏY Ϥ�V Y ÏY Ϥ��  !"#Y ÏY ÏíÁ`+\šßY Ϥ� %&'Y ÏY Ϥ�Ý(Y ÏY Ϥ�ô)Y ÏY Ϥ�è*Y ÏY ÏíÁp^Y ÏY Ϥ�R,Y ÏY Ϥ‘ˆ:Y ÏY Ϥ‘+KY ÏY Ϥ�<LMNOPQRSY ÏY Ϥ‘P]Y ÏY ÏíÁpE Y ÏY ÏíÁ°; \ûæ\û椑?hY ÏY Ϥ‘–uY ÏY Ϥ�vwxY ÏY Ϥ�dyzY ÏY Ϥ�Á{|}Y ÏY Ϥ�c ~€�‚Y ÏY Ϥ�Fƒ„…†Y ÏY Ϥ�m ‡ˆ‰Š‹ŒY ÏY Ϥ�¾�Ž��‘Y ÏY Ϥ�’“”Y ÏY Ϥ‘{£Y ÏY Ϥ�; ¤¥¦§¨©ªY ÏY Ϥ�5«¬­®Y ÏY Ϥ� ¯°±²Y ÏY Ϥ�»³´µY ÏY Ϥ�G¶Y ÏY Ϥ‘“ÃY ÏY Ϥ�j ÄÅÆÇÈÉÊY ÏY Ϥ�îËÌY ÏY Ϥ�|ÍÎÏÐÑÒÓÔY ÏY Ϥ�¢ÕÖרÙÚÛÜY ÏY Ϥ�î ÝÞßàáâãY ÏY Ϥ�e äåæçèéY ÏY Ϥ‘éóY ÏY Ϥ�þôõö÷Y ÏY Ϥ�� øùúûüýY ÏY Ϥ�þÿY ÏY Ϥ�, Y ÏY Ϥ�‡Y ÏY Ϥ‘h!Y ÏY Ϥ‘'Y ÏY Ϥ‘ñ$;Y ÏY Ϥ�}<Y ÏY Ϥ�C=>?Y ÏY Ϥ�á@AY ÏY Ϥ�ŠBCDY ÏY Ϥ�°EFGHY ÏY Ϥ�4IJKY ÏY Ϥ�LMNOPY ÏY Ϥ‘ì!bY ÏY Ϥ�‚ cdefghiY ÏY Ϥ‘¯wY ÏY Ϥ�ôxyY ÏY Ϥ‘BœY ÏY Ϥ‘†¦Y ÏY Ϥ‘ϳY ÏY Ϥ‘¿Y ÏY Ϥ‘¤ËY ÏY Ϥ‘ÜY ÏY Ϥ�ÝÞßY ÏY Ϥ‘êìY ÏY Ϥ�¹íY ÏY Ϥ� îïðY ÏY Ϥ�AñòóôõY ÏY Ϥ‘ÆY ÏY Ϥ�†Y ÏY Ϥ‘'Y ÏY Ϥ‘}Y ÏY Ϥ‘*Y ÏY Ϥ�5+Y ÏY Ϥ‘s:Y ÏY Ϥ�±<=>Y ÏY Ϥ‘†KY ÏY Ϥ‘`UY ÏY Ϥ‘0"hY ÏY Ϥ�DijklmY ÏY Ϥ�ûnoY ÏY Ϥ�•pqrsY ÏY Ϥ� tuvwxyY ÏY Ϥ‘&ŽY ÏY Ϥ‘NœY ÏY Ϥ�0�žŸ ¡Y ÏY Ϥ�¸ ¢£¤¥¦§¨Y ÏY Ϥ�L©ªY ÏY Ϥ‘ñµY ÏY Ϥ�³¶·¸¹Y ÏY Ϥ�* º»¼½¾¿ÀY ÏY Ϥ�ÚÁÂY ÏY Ϥ‘ýÒY ÏY Ϥ‘eáY ÏY Ϥ�—âãäåY ÏY Ϥ�®æçY ÏY Ϥ�D èéêëìíY ÏY Ϥ�u îïðñò\²æY Ϥ� óôõö÷ø\<æY Ϥ‘ž Y ÏY ÏíÁ ¿  \³åY Ϥ‘‰ Y ÏY Ϥ�L  Y ÏY Ϥ�@   Y ÏY Ϥ‘ & Y ÏY Ϥ�3' ( Y ÏY Ϥ�ƒ) * + Y ÏY Ϥ�Ó, - Y ÏY Ϥ�¦ . / 0 1 2 3 Y ÏY Ϥ�ï4 Y ÏY Ϥ�$5 6 7 8 9 Y ÏY Ϥ�: ; Y ÏY Ϥ‘õJ Y ÏY Ϥ�ÇK L M N Y ÏY Ϥ�ìO Y ÏY Ϥ‘AZ Y ÏY Ϥ‘Äe Y ÏY Ϥ�à f g h i j k Y ÏY Ϥ�+l m n Y ÏY Ϥ‘k| Y ÏY Ϥ�Ã} Y ÏY Ϥ�°~  € Y ÏY Ϥ�­� ‚ ƒ Y ÏY Ϥ‘Û� Y ÏY Ϥ‘á'¥ Y ÏY Ϥ�4¦ § Y ÏY Ϥ�ÿ¨ Y ÏY Ϥ‘Ó· \wšY Ϥ�Ú¸ ¹ º Y ÏY Ϥ�y» ¼ ½ ¾ Y ÏY Ϥ�îÀ Á Y ÏY Ϥ�å à Y ÏY Ϥ�9Ä Å Y ÏY Ϥ�Æ Y ÏY Ϥ�¸Ç È Y ÏY Ϥ�NÉ Ê Ë Ì Í Y ÏY Ϥ�Ë Î Ï Ð Ñ Ò Ó Y ÏY Ϥ‘ÜÞ Y ÏY Ϥ‘ë Y ÏY Ϥ�mì í Y ÏY Ϥ�L î ï ð ñ ò Y ÏY Ϥ�™ó Y ÏY Ϥ‘š Y ÏY Ϥ�£  Y ÏY Ϥ�£    Y ÏY Ϥ�_ Y ÏY Ϥ�ö Y ÏY Ϥ�  Y ÏY Ϥ�g     Y ÏY ÏíÁt Y ÏY Ϥ�V      Y ÏY Ϥ�Š   Y ÏY Ϥ�& Y ÏY Ϥ� Y ÏY Ϥ�ª ! " # Y ÏY Ϥ�˜$ % & ' ( ) * + Y ÏY Ϥ�®, Y ÏY Ϥ�ƒ- . / 0 Y ÏY Ϥ�1 2 3 4 Y ÏY Ϥ�X5 Y ÏY Ϥ‘y? Y ÏY Ϥ�™@ A B C Y ÏY Ϥ�9 D E F G H I J Y ÏY Ϥ�FK Y ÏY Ϥ‘"U Y ÏY Ϥ�óV W X Y ÏY Ϥ�ŒY Y ÏY Ϥ�éZ Y ÏY Ϥ�¬[ \ ] ^ Y ÏY Ϥ�>_ Y ÏY Ϥ�Š` a Y ÏY Ϥ�Çb c d Y ÏY Ϥ�¸e Y ÏY Ϥ�Þf g h Y ÏY Ϥ�æi j k Y ÏY Ϥ�ål Y ÏY Ϥ�2m n o p Y ÏY Ϥ�tq r Y ÏY Ϥ�üs Y ÏY Ϥ�u v Y ÏY ÏíÁ`— Æ à Y ÏY Ϥ�Iw Y ÏY Ϥ�x Y ÏY Ϥ�•y Y ÏY Ϥ�Kz Y ÏY Ϥ�Ì{ Y ÏY Ϥ�æ| Y ÏY Ϥ�ç} Y ÏY Ϥ�±~ Y ÏY Ϥ�{ Y ÏY Ϥ�²€ Y ÏY Ϥ�õ� Y ÏY Ϥ�·‚ Y ÏY Ϥ�ºƒ Y ÏY Ϥ�¶„ Y ÏY Ϥ�:… Y ÏY Ϥ�§† ‡ Y ÏY Ϥ�Úˆ Y ÏY Ϥ� ‰ Y ÏY Ϥ�‹Š Y ÏY Ϥ�{‹ Y ÏY Ϥ�uŒ Y ÏY Ϥ�� Y ÏY Ϥ�tŽ � Y ÏY Ϥ�¬� Y ÏY Ϥ�ß‘ Y ÏY Ϥ�’ Y ÏY Ϥ�ƒ“ Y ÏY Ϥ�7” • Y ÏY Ϥ�‹– Y ÏY Ϥ�S˜ Y ÏY Ϥ�—™ Y ÏY Ϥ�lš › Y ÏY Ϥ�Šœ Y ÏY Ϥ�,� Y ÏY Ϥ�9ž Y ÏY Ϥ�eŸ Y ÏY Ϥ�Ü  Y ÏY Ϥ�é¡ Y ÏY Ϥ�/¢ £ Y ÏY Ϥ�{¤ Y ÏY Ϥ�™¥ Y ÏY Ϥ�Ѧ Y ÏY Ϥ�|§ ¨ © Y ÏY Ϥ�Úª Y ÏY Ϥ�« Y ÏY Ϥ�C¬ ­ Y ÏY Ϥ�ü® Y ÏY Ϥ�†¯ Y ÏY Ϥ�¬° Y ÏY Ϥ�± Y ÏY Ϥ�ò² Y ÏY Ϥ�Ú³ Y ÏY Ϥ�Ò´ Y ÏY Ϥ�Àµ Y ÏY Ϥ�¶ · ¸ ¹ º Y ÏY Ϥ�» Y ÏY Ϥ�¼ ½ ¾ Y ÏY Ϥ�I¿ À Y ÏY Ϥ�*Á  à Y ÏY Ϥ�Ä Y ÏY Ϥ�¨Å Y ÏY Ϥ�’Ç Y ÏY Ϥ�ÏÈ Y ÏY Ϥ�É Y ÏY Ϥ�Ê Ë Y ÏY Ϥ�ôÌ Y ÏY Ϥ�ÁÍ Y ÏY Ϥ�´Î Y ÏY Ϥ�jÏ Ð Y ÏY Ϥ�{Ñ Y ÏY Ϥ�gÒ Y ÏY Ϥ�Ó Y ÏY Ϥ�ÒÔ Y ÏY Ϥ�Õ Y ÏY Ϥ��Ö Y ÏY Ϥ�,× Y ÏY Ϥ�¢Ø Y ÏY Ϥ�UÙ Y ÏY Ϥ�áÚ Y ÏY Ϥ�—Û Y ÏY Ϥ�ÉÜ Y ÏY Ϥ�ÓÝ Y ÏY Ϥ�WÞ Y ÏY Ϥ�ß Y ÏY ÏíÁ D Y ÏY Ϥ‘vî Y ÏY Ϥ�–ï ð ñ ò ó ô õ ö Y ÏY Ϥ‘Í Y ÏY Ϥ‘ Y ÏY Ϥ�®       Y ÏY Ϥ‘?! Y ÏY Ϥ�œ" # $ Y ÏY Ϥ‘ ;C Y ÏY ÏíÁ€7 ]ª]ª¤�tF G Y ÏY Ϥ�#H Y ÏY ÏíÁàt ]Ù]Ù¤‘èkÆ ]Ì]Ñ$‘ Å \ú\ú¤‘&+S ]‰\“ÿ¤‘wq \¤êY Ϥ�Õr Y ÏY Ϥ�xs Y ÏY ÏíÁ î \ú\ú¤‘Æ„ \çïY Ϥ�’… † Y ÏY Ϥ�Æ ‡ ˆ ‰ Š ‹ Œ � Y ÏY Ϥ�ôŽ � � ‘ ’ “ ” • Y ÏY Ϥ�9– — ˜ Y ÏY Ϥ�ô™ Y ÏY Ϥ�!š › œ Y ÏY Ϥ�� � ž Ÿ   ¡ ¢ £ Y ÏY Ϥ�I¤ ¥ ¦ § Y ÏY Ϥ�v¨ © ª « ¬ Y ÏY Ϥ�_­ ® ¯ Y ÏY Ϥ�4° ± ² Y ÏY Ϥ�ì³ ´ Y ÏY Ϥ� µ ¶ · ¸ ¹ Y ÏY Ϥ�Œº » ¼ ½ Y ÏY Ϥ�f¾ ¿ À Y ÏY Ϥ�¤ Á Â Ã Ä Å Æ Y ÏY Ϥ�Ù Ç È É Ê Ë Ì Y ÏY Ϥ�- Í Î Ï Ð Ñ Y ÏY Ϥ�ƒÒ Ó Ô Õ Ö × Ø Ù Y ÏY Ϥ‘Jç Y ÏY Ϥ�1è é ê ë Y ÏY Ϥ�tì í Y ÏY Ϥ��ï Y ÏY Ϥ�¼ð Y ÏY Ϥ�1ñ ò Y ÏY ÏíÁ@_ Y ÏY Ϥ�( ó ô õ ö ÷ ø ù Y ÏY Ϥ�oú û ü ý þ Y ÏY Ϥ�: ÿ    Y ÏY Ϥ�p      \·ïY Ϥ�q   Y ÏY Ϥ�I       Y ÏY Ϥ�n   Y ÏY Ϥ�l       \žïY Ϥ�B ! " Y ÏY Ϥ‘ˆ- Y ÏY Ϥ�2. / 0 1 2 \ÓïY Ϥ‘`> Y ÏY Ϥ�r ? @ A B C D E Y ÏY Ϥ‘‚O Y ÏY Ϥ�ÜP Q Y ÏY Ϥ�¥R S T U Y ÏY Ϥ�ôV W X Y Y ÏY Ϥ�jZ [ \ ] ^ Y ÏY Ϥ�#` Y ÏY Ϥ‘úµ¼ ]ÆY Ϥ‘›Ô ]Ì\Áé¤�­  Y ÏY Ϥ�ƒ Y ÏY Ϥ�Ž! Y ÏY Ϥ�ä" Y ÏY Ϥ�š# Y ÏY Ϥ�s$ Y ÏY Ϥ�G% & Y ÏY ϶�\0 ]Ó\¢ì¤�- § ¦ ]|]Ф�\£ ¢ ]º]Ѥ�¯4 5 6 Y ÏY ÏÿÁ 8 \ÿåY Ï]]ª¤�`1 E ]¼]Ñ]]Ϥ�V¥ ¤ ]œ]Ð]¿]«í�.s r \@ê\ææí�(  ~ | } { z y \Xê\šæÿ‘´]u\õêÿÁ o \þå\öåí�m n \àå\Þå¶�\÷à\÷àÚð€Àå-Ö � É‹ W¢v� ·ŠÐ÷ B”ó Á‘À ý ÁJ‘ Ñ üyrþu0drx<tpw (bad usage 7�wÀ‰í…@”w èÿû…Aw îÿ÷ H ‰Î‰÷^‰ ‡7(‰Ê÷-Õ …Á:w ¶ÿw ¾ÿ -- not in archive format ‰Îʇ·ŠÞ×­Úzö‡0‰ ‡0‰6‰Î€ ‡7‰·7´…w ^ÿcannot open temp file Àމò w Õ …÷Ž~÷Šz÷†v÷‚r…À‚€ ÀE7ÀN‰…È‹¤/úú…Á@ ÿÿûw ÞÿÀò ú¢òЋùa%…ww‰ÊH‡‰D‡7ú@Éÿÿw ¢ÿÀò ú�”û÷æô÷âð÷�Áì÷�¸ç÷¸âÀ¾‰òÂÔÀ²‰Êà7 Àž‰Êñ ÷5¬À†‰À~‰w öþ…Ánÿw þw þ -- cannot open ÁPÿw ðýw øý -- phase error À4‰òÁJ÷ä"ÿwW ‡÷À‰Êà7 ÕÀü‰Êè÷5 Àâ‰ÀÞ‰…‰ä¶4‡7ÌÁæ÷ä¾þwW ‡÷À¤‰Êà7 £Àš‰ÊèÀމ÷5¤Àx‰&fÁŒÀ†��…Áäw ýw ý -- cannot create Áäw àüÀ w Èü…f@÷‹:w ¸üÀ w °üÁäw ¸üÀ w  ü�…‰äʇ÷- ‡‚÷-ƒÕ ÷äøÁð…w êüw šülw <ýiw ’ýw ”ÿrw \ýw ªýòw €þw €ÿcìw ¸üw hü8w ýP÷ Àw Zý Éÿÿw ‚ÿw Rÿrw ýw hýêw >þw >ÿcäw vüw &üw Èüw ýÉÿÿw êüw ÿdòw þw ÿcìw ôw àûno archive file w Êûcannot create archive file Áw"Ñ W,þÿÿÿúá w Òüw ®þaó0‰‰¶؇7ȉØÀÀ‰Ê7 À®‰Êòw Tûw `û´w ü÷ ¸w RüÉÿÿw ®ýw Lþxïw üìw .ãw ,ûšw Îû ÷ „w üÉÿÿw þw æûðw ÍÂ� W ÿÿûâÿÿw ÐúÁ¾w Èúò… -- not found /tmp/vtmamÿH. wú÷ œÀ�‰<À�‰À�‰÷‹ w ˆi ÷h ÷åR ‰R @‰ ‰pbw 0p? ‰S ‰^ ‰i ‰t ‰pS ^ i t y/lib/as2-g&D7 Ô‹€ ü7À‰wÀ‰Õ „…&D7‰<†7‰$‡„…´Š ­ zîƒ7w ˜ÿ? ‰·ŠA&f@÷N ? F&w vÿ €¦æÃ(7�,ÀJÁ —r Ãe0à�ƒH~À‰Dƒ‚�€…f xxxx  @%Õ …÷ ä! ?. ÷e( ×-$ < ‡÷< À�ª‰<÷ ö À�š‰÷•aå w ÿt 7�ˆ‡÷ f÷ 8t÷ Ž!€õƒ£· |£í÷ rê&÷ 8!=9!:7d„÷ vT„!€†!w êþxÐ̵w ÜþmÌÝŽ ôŒ ÄÀ,÷ ®ð�z HÀ ÷�r ÷n 7�ðd ‚ À�ç‰N «÷ ¼÷ š�W €†w ˆþxW ¢ ÃE ÷ . ÉÅÃEàÿ Éбw \þ.÷• !;! · –!÷ Žw 2þx‡w *þx÷ ÷ BúwÒþ ‚‡w þf ‡! !;!Îe‡f¦æÅÂ2& ÷ ´Î`Ò�E÷ ªÃ ü� rè@À ÀeZ Z‚À*Â2 ”$õ”$ó”$ñ”$ïÄB&Äe7! ƒ÷e‰v „””””  7Äå&Ãå× R ‡ÃåR  —r„ÄeÃåš  —r„Äe÷  ý„ƒ‚Ö �‡÷ ‚œÒ ‡7�\ ‡¦æf  ÷ dw bý09 Àå0Wq `Wt`ð b f  .A 7�@…ƒ‚‡@÷ ¤þÀea× bÀe …ƒ‚Îe‡À�â7ŠÜ‡÷ äÀŸâ· ÞÀE€ÿö‡À�¼‰H‡À 7¼÷HºæÀ�ž7Šš‰÷ЬÀ‡÷ œw @üiw ûÀ’Ð 7 7ˆ·Šl‰ †÷öÿw ¨û? wtû7�L÷V&fÄ÷ füÁPD”÷ ZüûÄÿÿ÷ Pü�„¤Ä87 2‡÷ ÷ 6ü‡÷ "ÿœÒ !yJlL$p”ÒŽr¾†pÚ÷ úþÁb Ñ‹ü‡D’‡//<>%ć7�ºW 0‡W 9ƒwvý÷ Nþ ‡÷ |÷ v&÷ pÀ€U7¦Ä÷ ªûÄš÷ ¢ûÄÖ ‡÷ ˆþ  ÷‡w ûg¥Ä<÷ vû7 f÷ $Á ÄU÷ `û· PôÄÿÿ÷ RûÄ<Ö ‡÷ 8þ    \ ÷ þÂR€¤Ò‹ü€‡€” ‡ >� ‡w žú<wþùn t e0r apÿw äú€  <wÞ÷ t÷e"‡“ öw ¼úñ&÷ rþ€À xš444@Vbn„†x¢¢¢"ÀxxØÞææ÷ ÷ ¸Âí´— ÿηe¤‡÷ à!,÷ ¤‡÷ øý÷ Ì÷e„‡÷ Ê!,÷ „÷ Úý÷ ¸÷ef‡÷ ¬· \!,÷ ¼ýö‡÷mòH÷ ®ý‡· >÷E8‡÷ ~à w pùU · ¼‡!€ ‡ÌÕ ÷ zý!,÷ pýó‡ÁüÁ ñøN7(ð€ Àå7ä‡!€ ‡ÌU ÷ @ý!,÷ 6ý÷ ‡w ùx‡!('!-6!$G!*M÷ î!( ÷ ý÷ à÷ ¨÷ Ä÷e† ‡× ÷ � ‡÷en ‡÷ Ðü÷ ®÷ –÷ r!+÷ ºü ‡À‡÷ ¬ü!(7ÞÄ-Æ÷ ˜ü÷ v÷ ^÷ : ‡÷ „ü÷ b÷e ‡÷ rü *÷ @ÿ7`ú‡w :ø*‡w 2øa‡— ‚× × ‚÷ âÿ‡w øe‡!)w ø)‡÷ ü‡fæ+7 N Ã÷ üw @ø“[!a‡!k †�çÄ À O€w ²÷fK  HÁb D$ Ñ ü÷ ö÷ |ÿÖ …‡y+š -š *š /š &š š š š %š [² ^š ¨ !š —£+÷ 0ÿ‘­Á À¦æ÷ Tû÷ 2ÿ!]w "÷]À�ƒ‚· rÅè •#Õ üY}+B -L *l /x b &V &  %0 !Š ^ = � ¡ w t�t3w jf� rB*w XB`%w NBà w DA B@w 8BPw .BpBw "f� rw A B`Î+wdþ&ÎPÎEßÿÀEàÿÃEàÿ &ÀƒÀ Õ  ÃÕ  ƒU…ôôôôþôôôôîþôôîôôôôôôôôôôôôôôôôôôîðòôðððöðððððð.ú0123456789ðþðôôôABCDEFGHIJKLMNOPQRSTUVWXYZðìðð_ôabcdefghijklmnopqrstuvwxyzôêôôô/tmp/atm1a/tmp/atm2a/tmp/atm3a/tmp/atm4Z~ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ<R ...r0r1r2r3r4r5sppcexitforkreadwriteopenclosewaitcreatlink unlink exec chdir time makdirchmodchownbreakstatseektellmountumountsetuidgetuidstimefstatmdatesttygtty nice"signal0mov movb �cmp cmpb  bit 0bitb °bic @bicb Àbis Pbisb Ðadd `sub àbrbnebeqbgebltbgtblebpl€bmi�bhi‚blosƒbvc„bvs…bhis†bec†bcc†blo‡bcs‡bes‡jbrjnejeqjgejltjgtjlejpl€jmi�jhi‚jlosƒjvc„jvs…jhis†jec†jcc†jlo‡jcs‡jes‡clr clrb Šcom @ comb @Šinc € incb €Šdec À decb ÀŠneg negb ‹adc @ adcb @‹sbc € sbcb €‹tst À tstb À‹ror rorb Œrol @ rolb @Œasr € asrb €Œasl À aslb ÀŒjmp @swab Àjsrrts€sys ‰clc¡clv¢clz¤cln¨sec±sev²sez´sen¸cfccðsetfðsetd ðsetiðsetl ðclrf ñnegf Àñabsf €ñtstf @ñmovf õmovif þmovfiûmovof ÿmovfoüaddf ôsubf ömulf òdivf ùcmpf ÷modf ómovie ýmoveiúldfps @ðstfps €ðfr0fr1fr2fr3fr4fr5alstalscvmpypmulpdivrashtashcvdvdrxorxsxt À mark sob~.byte.even.if.endif.globl.text.data.bss.comm0‰ ‡0‰P…@W¯-Õ À 7 Hì7� w w €ìS 7�ô w vì^ 7�í ÷ w¼ëÁš À2 ÂfD”a‘„~÷ �KÁe W þ퇇 —rèà ÃeZ× Z‚Ã*ã ù‡UVWXYZ[\]^_`Ž8ø#0‰ˆ ð ‰@7Ø÷ ‚0‰ ‡0‰¬·Ä7 jÁaw�º‰æø‡� W zöƒ ‰æ€‡7‰æ †Àd÷ º‰Tmp file? 7è÷ —#$· ‰Ž‡7ÐÀš÷ „Cannot open file 0‰¬À w Fw ìready Æ"7 ’÷ –ÃøÀ’÷ V5w Ð R /ÃÂ2@÷ ð Ë Ãeù× ž6 ‡w œtoo many lines ÓrÀ@‰”Àø÷ "€ 7`\7`À&‰š¿Ãø÷ ²ºÀ”…& È‹Ž ¤ ú€‡÷ø4À쉠‡À ×-"[ †ÀŸ·  î?Š ‡À‰7 ºäw,À°‰7 ¨Àþ ‰÷ð÷ ”÷ JÀø÷ @@÷ :wàþà ÷ r‰7 jÁøC À_w üÀw ô@’w îW¤ ðwªþ7ˆ÷ 2ÿ7‚ÀŒ‰¦‡ 0‡ 9‚Îe‡ a‡ z‚Îe‡Áb 1 W f†�À”÷ Öÿ÷÷ ¼ÿóÁúÉ-à ñ-ÜÁåú� Îe‡ÁeW :î‡ÁjÉ É-´ñ-°‡ÁeóW 6 ‡w àþout of symbol space É~ñ|1 1 ‡ À”û‡÷‹ã÷ ˆ …7ÖÀ‰æ…& ÁÂ2É É-6‚€ "ƒNÁeó�wwfÀ‰¬À‰ødÎe‡ÁÂ2É  Áeùw 4þlabel not found ‡ÀjÁ:ñWõ€@PPÐöøW ^÷‡ ‡7 <ÄR÷ ¦"÷ \ÿÀš÷ –ÿ1÷ †· ˆ!Æ.ï‡w Èýout of code space ÷ ô,ÔƇ7 èÄÚ.÷ J-þÿÖ Ô Ô< ÷ Ê!Â2 ‡w zýout of code space ÔÆ7¤ÄÚ.wÒwäÃøÀ”÷ Ðýà w H R ÃøÀ”Ô\ T÷ pþ »æ÷ ´ý÷ ÀýÖ ÷ Vþà y¤æ$0J<˜°ºÜTpz Tܦƒà ÷ æ _ØÎe‡÷ ÔŠ ‡÷ Ôœ ‡ ñ÷ þÿ÷ ü÷ ¨ ÔH à ÷ – [‡ WÔÖ ‡ QÔt ‡ÔÜ ÷ Ôþ ‡÷ Ô< ‡÷ œý _ "à ÷ DÔ à ïÔF ƒ Ì”£"¥ ù&ÄeÄEÀ”Þ÷ Ô0 &Ô ÷ Øþ� ‡÷ þÔ` ‡ ÷ î ñ÷ .ÔL ‡÷ ü&÷ & =÷÷ ô÷ ¾Ôö7ò%€�T@ ý‡Ô8 ÁÞÑ> à ÷ –Ô² Ô0 ÔÆ7 ÷ Jþ ‡w jûfor/next imbalance Á–ñ@7ŽÔ: ÐÖ $‡÷ >Ô ‡÷ 4à ÷ . õ€@÷ nà ÷ Ô ‡Ô* ‡ –ÔJ ‡÷ ÷ 6‡÷ " =÷ &‡÷ &÷ û÷ âÿw Ö ‡÷ . & | ‡÷ ø÷ w èŒ ñ÷ è÷ w Ø~ é÷ Ž÷ ,‡& &÷ €÷ Æ”÷ ÔÒ Ž óÎ ÔŒ ûÖ ‡ > <  =‡Àš ×¢=ƒ À¢ ×¢>ƒ Àº Àª ×¢= ƒ À² ×¢=‡ƒ À ÷ PÎe‡÷ . + - ‡÷ 4÷ w $æ ñ÷ $÷ w ð é÷ . * / ‡÷ ÷ w òø ñ÷ ò÷ w âþ é÷  ^‡÷ Ö÷ w Æ ôÀ”÷ Èú _÷ ðÿÔì ‡÷´ ( ÷ pþ )À”'÷ Œù .÷ Îùà w zR÷ Ž÷ Ìù÷ Øù w &ùreserved name ÔD T7 X÷ Bù÷ Lú ( ÷ >w RB  )ñÀ”ñ [÷ *÷ ùw 2z 7  ]ßÀ”߇÷ T…÷ Ô2 · ø ‡Ô( ø‡& ×¢)À”Ž ÷ ˜ý ,úT”…Ã’:÷Ä \SñðÔ \ô \#㪠÷¦ · ¤ ÷ ž@ñðw„ õ&û÷ Fú€÷ òùD\÷ úÀl ÷  ÷ *úÄR\÷ $ ‰²†7 õ&û õ7ûº ÷ rù Î-° ‚Àø÷ bø· ¢ óÖ Àò  ‰÷ä \ ‰æ‰À÷ ®÷ vÀ÷ ¢À÷ š·Šë \ ÷ Ž7Šß \õw ¢\õw 2\“õSõõw \À÷ `À÷ X\À w ¼ø\• "w ®øù„ ÄE\Ã’ × ¾6 ‚w @÷out of space 7ä \Sñð$Kñð!SñðKñð÷ ~÷ v÷ n ÷ f ÷ ^÷ Vñ1õ€@.@ø*õÀÀeÐUø"õ ô!Ëñ\õÀñ ôõ òSõ õùSõ õw ¦ †w –öBad exponentiation õ#ø\ ø\÷ îù÷ èô€@øó#\ õï÷ ¤ w Töbad return õÊ ÷† ÄÀ ÝÃeûWpC`æÀ&Î D#õûB w ösubscript out of range ÀE� à âùÀjÈ Àeû 6 ‡w Êõout of symbol space Q$&0 �BÂE� €ÉEþÿ PºÖ ƒ \SõK÷ð‡ÀÀeÐ5 w võused before set õ‡&ÄÚÄeÌ ô5ø÷ À=w ”ö4õw >À w ‚öè„\Ì 7Ö 7Ò Àb÷ ‚õ‡&Ä\ÄeÌ ÀE÷ ú÷ ÂÿÀ[w 6ö€@ þw ÜÀ]w ö„‡÷ ÷ Äû@ À   †xþ  ( 0 F \ t � ¢ Ì Àÿÿ÷ Hö%c õû÷ ÎZw öüVw îÈR†w nôBad log w ؾG†w XôBad sine w ¶<†w BôBad cosine w ª^0†w *ôBad arctangent Ô (÷ þùHwŒýÔ æ&÷ ºóÄ> Ãø÷ øøÔ> ”ƒÄ* Ãe\%  õó€@@øÃewJýw Âóarg count ÷ ü Áô@î‚€ Áeû1õ‡w ’óbad arg %Þ õGBñð7øžwø¢…&øføÀ÷ J÷ õ7øŠõ7ø|÷ …7õr÷ 7õr@ñðñ÷€@ðõ@ö@ò€Fû&÷ €À7�PÀJ‰ð†7:‰æ‡ } &  -Ž } Àå0 ‚Wp `õÀe0Ö  Õ …¦ðWð€føf¦& ñ }  -Ž } Àå0 ‚÷ „ö‚ ô þÿ } Àå0 ‚÷ f õ 5ww lÿÀå0B`Wõ€@¦ — &ƒñÖ �õÿ Wò Bƒ~Ö ùòð„õÿÖ ÀñÀe0‚�VõVðÕ …÷€\ðò B@þô‡Îe‡÷ 7 Á‹À-} — þÿ— ÷ Õ …¦Â÷ Àe} €À w¶ÁÎÁmȦÂmÄB ƒW¨0û� ‚ À.} À0} ‚ ú ¦Â˜� †Î À.} Î €”} óÖ ‡¦ðWð€f¦ÁÈøÂÈ� †À;} €÷ öÀ Ý Vð…7N ð7þFò€7ðæóB@ûÀe0} Î ÷Ö ‡f À-} ÷ �Õ … r f÷ ðÿ€Àe0} ‡b.out/tmp/btma/dev/vt0listdonerunprindispifgotoretufornextoctadraweraspromsavedumpargexplogsincosatnrndexprint7d@ñðw h&Àñw `Àñ!7J& @ñðŽ ÀñAñðÎeÁñùw 87õ´Î5Àñ7ô¨7ô¤Ö5ÀñVðÖõ–õVõ€…fø¦øæø¦ðWð€@H7÷–ð7÷†ð wõf@ù@øw Àñ7ô`…ø7öPwôLùw 7ôR…À<æøÃòXõCòXôÎ üÎÂøƒò˜ôÎ üÖ Bùò…v~†Ž–ž¦®–€@É@Ú!¢ÂhI@Ú!¢ÂhAy‚ü™1ïÔ?ÌçÏ‘y"?ÊD{‘ÕAv#O›ÅP#C†àÌõ!+šC“ô|¥]2CU*j 4¬xBJÔÃÔh{CþWú*Rs¸CL¦~Sz€ñæ& ¦ðWð€fø¦ø&&ø€ñ7órWó€?Wò€A@û€mWõ€@€ ‡ö€@ †ÀñVñð€Àñø@ò·õh�ò·ôZ�ò·ôL�ò·ô>�ò·ô0òBø·ôh�ò·ôZ�ò·ôL�ò·ô>ù€–õVõVðÖ …"@ƒùNnDOLX2�ú»ê–ËxØ©3Ÿ‰ÖIáä”¶ÂTXÇ]1 ªDø!ñ‡ûLÎç%§dîÇIgN5& GbÜqhÌDK§Ÿ-?á7 ‡fÁWp3Áe @7 ÀE€�‡7 '÷ø&¦ðWð€&øføæÁ’: 7Šà&@ñð%·ŠÔ&Àñó€@Añð&ø@øÃº:7ó¾ø@ø—ôL>—ó BÀûÀe0#�‚ @ñððÁ’:Ñ”× º:ü‡õ ‚  ó BAñðú‚ ÷ ÷  üW º:†Îeó B@ûÀe0�‡À’:Àm\÷ P&€` ’:‡’ÃeÈ�¢9 È•0 ’:ƒ ŠöÈ•1‚ Á&À$€`0Š’:À’:ƒVõõVð‡@ñðAñð…€føWó€@ðVõ€ñw ‡føWó@ðÀñVõ…w ܇òw …Võ±…¦ðWð€¦øfø@ñðõ€@¡67ó˜ð�fûö@fûÎ ô@øAò·õd�ò·ôV�ò·ôHòBø·ô`�ò·ôR�ø@öôù7ò^&úŽe—#Ö 7õV± —#�ÿÖ ñ¡ý¡Võ–õVð…½E=s½M¡BÔ�Ÿ˜Û`½=B.p«ª½ˆF±�:|+eiD(/èzC•¸@;ª\)ñµ@óù3dÞÿÿÿÿÿÿÿ@ñðõÿÿ±…¦ðWð€¦øfø&úý7÷VðýÎ øö€@Wô€@ùø@ò·õ`�ò·ôR�ò·ôD�ò·ô6òBø·ô^�ò·ôP�ò·ôBùVþwòôVõ–õVð…5@óù3eÞ1@rÑ÷zÏÀÂ�lŽ÷B‰¨‰#"™Âû3’h±@×?ØG�e˜@Â�lŽ›BÙ,½k$Âç“aXUÎå‰à‰‰ø‰‰‰‰¶Ì>ÌÌÌÌÍÌ bcdefghijklmˆ…Ö ÂˆW!Å $€¢-7 j7‰ñ‡7XÀT‰ˆ ‡ÃˆÀ”÷ &Ä ûðÀ4܉ÚÂ刷À‰ˆ‰�— ˆ‡À‰ˆÂˆ‡À Z ð€&Ð 6÷ "–% ‰/lib/c0/lib/c1/lib/crt0.ow \ 5êÿ5ìÿ5ôÿ5öÿ5òÿµ òÿ@òÿ@-_žÀ @mžÀ%-T@òÿÀ @mœÁF 7Ì þy· °&· ®&Ú· ª&×· ¦&÷ ^Ñ· ’&· ’&Ì@òÿÀ @mð‹÷ :¿÷$ 2õìÿ¸@òÿÀ @mœÀ%0÷2 @òÿÀ @mœÀ%1Ÿ÷< ð›@òÿÀ @m5øÿNøÿß > À%c@öÿµ öÿÀ pøÿx&Îoføÿ÷ â Ö &ß z Ö 5øÿNøÿæÜ&ß T Ö À _N@ôÿµ ôÿÀ pøÿÜ&Nøÿß > À%o_Nµ êÿ_Nõ öÿ_j÷ –%%Îf ß 2 7f  æ` ß ÆÖ 5îÿß ÄÀJ °Š ïÎæ< ß ÚÖ À À. °Š òÎæß ’Ö À5Î6æß ’Ö Î ß 2 7üð•1Îðß 2 7ìð•2ÎÞß 2 7Üð•3÷ ô$ ÎÆß 2 7Èð•5÷ Ö$ 먧 2 7®ð•45 òÿu-òÿöÿ_jW-öÿ @òÿÀ x&ær ß ² Ö ÷x b#÷ Œ$Îi@òÿÀ &x&÷ h Ö &ß z Ö 7P@òÿÀ x&ß €7,#÷ T$_b÷ b$_bÀ _^÷ #÷#÷ 4$÷| þ"7 ü"7 ô"Î&æÔß ˜ Ö À _^÷€ Ð"÷ÚÌ"÷ÖÈ"÷ ð#Îs@òÿÀ &x&÷ ÊÖ &ß z Ö 7°÷¬ž"÷ È#÷¤’"7 �"Î&ærß ˜ Ö À _÷ ¤#÷„ h"÷zd"÷p`"7 ^"Î&æˆ ß ˜ Ö Î\ß ô÷ n#E÷� 6"÷” 2"÷>."7 ,"Î0ß – Î*ß – Î&ß – Î&æ– ß ˜ Ö Îo@òÿÀ &x&ß z Ö 5øÿß – Nøÿæž ß ¦Ö À Τ ß – À Nøÿæª ß ² Ö · ä"µ òÿ_„÷ Ø"_õ ôÿ\5 òÿ÷¼ ”!÷À �!÷~Œ!õðÿu-òÿôÿ@ðÿµ ðÿÀ Aòÿµ òÿÁ pÜ&&îõ ìÿ @ðÿµ ðÿÀ ðÄ &@ðÿµ ðÿÀ ðÈ &@ðÿµ ðÿÀ ðÌ &@ðÿµ ðÿÀ 0 &Î&æÐ ß ˜ Ö W-öÿW-êÿ ÎoæV!ß z Ö ß – ÷ wj w X ÷ "ÎÜß – ÎÖß – ÷ î!ÎÊß – ÎÄß – Î¾ß – Î¬ß – ÷ ² w w  ¨7 Ð!@Àeôý7º!7´!@Àeîû7®!Ψ!fß $Ö À @_øÎŽ!ß `À%#΀!ß Ä@_øÀp!° Àh!ð @Àeèù7^!@Àeò7^! !ÈWp Aa1ŠòWp Aa1 ò„ ïÎæØ ß ^ Ö 7*!0Îæà ß ^ Ö 7!0@ÀeTí7 !@ÀeTñ7ô 7 ò Îè æºß äÖ À άæè ß ² Ö ÷ ¬þ÷ nÀ %÷-¶ ¸ ÷ ¤ ή æß Ö W­Tñ# Ü Ä”Î� &ß Ö ÷΂ æ ß Ö ×Îr ß NÎj ß ÄÎ^ ß ÄÀ0w¤ w ’ ÷-F F · J ÷D @ ?Š<  ÷ fÀ%#Â! _ÞÄ _Þ!a!z !A!Z!_gõööÿß . ÷ À%a!zô!A!Zî!0!9è!_ä ß . ÷ ²Žföÿß ^ Ö 5øÿ— 7 ¢Â³w-øÿ–Â¬Îø ß ø! _òÄ _ò÷ ”ó— ˜@øÿð`÷ |À% Ä ß n ô ß n ÀfÀ%'× "KÎß . õôÿ· ø÷ 8À ! Ä ß . !\ð÷ ß . ê7 È— (?ŠÒ÷ þÀ% Ä ÷÷-´¶Î !ß øÎ¨fôÿß $Ö À Nôÿæ!ß øÖ ÷†€ß . ÷ ¬_* ß . — Î,!ß øw¨w –ÎVæ À%oC@õe”¥üÔ‹ñ Àw w øõ  Nß ôwîw Ü€w®DÄeÀŸ¤ · ž %ß TôwÀ7 Š7 €ׯ€-· x· v÷"j'7 n .÷h'ƒÁ BÞ üJB d˜ o’ xÈ fÒ ep c~ sN l Ó•-÷ C r f÷ ðÿ€Àe0�‡•à •1à /Áæ Ò‹ƒ D~'Â�!”! ÷ f v÷ öÿ€€LÀe0 9Àe�‡Â¤÷ zš÷ p‚ƒà&æ Ä Ãm|÷ zß TÃ~Ä Ž”ß Tà Î ß TÃ~Ö „w¦þ7 N ÀŸD· @Àå0 ‚· 6Wp `ñÀe0[ƒÄeÓ•?‡f…À÷ ,ÀP�· ÷ ÷ @…‡f…÷ …‡Àä Àåx'7ÀÒ€ ‰˜!÷x'È÷À×-º‚÷²‡f…@‰†w® w°f…w¼w¸‰ž!†wŽw’f…w¤w ‰¤!wrf…‰†wd wff…w~‰ª!7‡A …‡7 2f…A÷ &÷ À€U…‡f…A÷ …‡ñ @Àe721@‰°! ‡À À 1 @Þ± ‡wÜf…ww‰¶!†w wÄf…wîwꉼ!†w¢w¦f…wÖAɉÂ!F‡  Df…@A&÷ €À÷ 6f…@A÷ @+ñ 9�± ‡&÷ €óf…A÷ @Àe&7bw^·ãX@‰È!±ñ‡wø7 ê…‡f…Awzwv÷5nWpÁeÈ!W Î! ‡W " †ñTwN‰"‡w´Àw¤f¦æ&Ø „ƒ‚�€f…w ‰"†wz w|f…÷ "&‰†Ö w`Ö }w\f…@‰Af… w,üÿ.Àw"(Àe w"Àew"@l€ …‡ß Ö –%Æe7òÀÿÿF…‡Õ @…&æ¦äHÅåF‚ƒ„…‡,"È&/lib/mcrt0.o/lib/crt2.o/lib/crt20.o/usr/c/c0/usr/c/c12OPScpt¶š¬�° Þ/tmp/ctm0a%s: c0-Pc1c2/lib/c2as-/bin/asa.outa.outmove failed: %s ld-x-l2-lc-l/bin/lddefineincludeCan't creat %s Undefined controlNested 'include'Missing file %sControl syntax%d: Line overflow *¼ ò À ¤ Can't find %s Try again Fatal error in %s üÿðÿýÿøÿ‰x'‰ ‰‰‰ ‰‰‰¶‰7 ï7ï7ï7úî7ôî7îî7èî7âî7Üî7Öî7Ðî7Êî0‰ ‰pqrstuvwxy êÒÌ ð€&Ð 6÷ –% ‰w  W-õ øÿ@5øÿW-õ öÿ@5öÿ føÿß   Ö 7Š Nøÿæ ß D Ö _r föÿß   Ö 7h Nöÿæ" ß D Ö _rÎæ�!æH ß ¾ –%×-â ÷Ü Þ$ ×-Ò Nöÿæ0 ß D Ö PÀ¼ Àmº 7 ÷¶  ×-¶ ÷ þ÷eøÎ�!æìß ‚ Ö À’ Àeü7‚$Îæ�!æÎß ¾ –%÷„%h$÷�%f$÷ Ò ÷ ¼Î@ ß D 7 ®÷!¦÷ ò ?�žÀ% À”· �È‹ò÷!„÷ àwÈ w ¶ ÷ 5øÿ÷ j/÷ N5öÿׯZ õ øÿ÷m`ò#ÀD· @’7Pׯ6 · 0õ øÿ÷Ì#È#õ öÿ ÷ õ öÿ÷m ²#ôwR w @ ÀhΜ#ß $æD ß D Ö ÷ò_ØÎ~#æH ß D Ö _ØÎl#ß $ÎEÿß JÎ ß æ ÷¼GÎJ#ß $5øÿNøÿµ øÿß $ÀEÿ5öÿNöÿß JðÎ ß æ ,Î#ß $ß ¢÷ `÷ z 5 öÿW-öÿ @öÿœ!æL ß D Ö µ öÿï ÷ ¦ ÁP 7Œ þy wb w P ׯ ,À· üõ¢"øÿ÷ „À wøÿ’"À õˆ"öÿwøÿ€"@öÿw w  Nß Þ5øÿ÷ ¸÷ Ò@øÿwôw âW- W-}Næl ß D Ö Næp ß D Ö w¼w ª7 "5 æÿõ+äÿ7 t5 èÿׯNaׯFzׯ>_H5 îÿ@îÿµ îÿ@að•_ðÿµ æÿׯaׯz ׯ0ׯ9ׯþ_W-îÿ@îÿµ îÿ@aðŸäðÿ· ÞÝW-îÿ@îÿµ îÿ@a0Šðÿô@Àeðÿß <À · ²÷ άׯ¦0-ׯž9)µ æÿ7 °ׯŽ0õâÿõ âÿׯx0ׯp9Á†upâÿw~À\· X’ÀeÐÿ7`lè_žÀŸDTµ èÿ@äÿ÷mRÜ ÷íJÔ õ èÿ@æÿJÀ· ’5äÿ Àå+ ‚À xò¸øÀ_ž· ð_ž· èõìÿõˆ êÿ÷ jþÀ 7 z Àv À Nmìÿß Þ7Ú÷ º÷ ÔwêÿV ׯ¨]·  _žÁt 7  þy wÔw  ÀŒÀ Àm 5øÿÀ€À Àm 5öÿÎŒ ß <À _°Înß Þ5ôÿuôÿöÿ÷ >]Nöÿføÿß tÖ 5ôÿ5 ðÿW-ðÿ @ðÿœ!æ’ ß D Ö µ ðÿïΖ ß D õ ôÿ_NöÿÎeß Þæ˜ ß D Ö @öÿÀe5òÿõ ôÿõeòÿ@òÿß Þæœ ß D Ö îΠ ß D NöÿÎeß Þ5øÿNöÿß Þ5öÿ wÊw ¸NÎeß Þ5øÿNøÿÎeüÿß Þ5öÿÀ%ß õôÿ@öÿÀE?À%À 5 ôÿ· 2 :NøÿÎeþÿß ÞW-öÿ÷ @øÿ `ß ¢Nøÿß Þ5öÿW-öÿÖ @ôÿ€ W-öÿ–%@ôÿÀeW-öÿÆe NøÿÎeß Þ€ @môÿ@ôÿww ð÷ B÷ ^À Næø ß tÖ À ÷ |Àí wÊw ¸DCÀe!†% ùÀwœw Š÷ Ü÷ øÀ õ-J À@ÀEàÿÀ%Î_ß àë· w`w N5 øÿw-¨† fÎeæîß à –%Î@Àeøÿ&æØß ¾ –%À%· Î@øÿ-õ/b‚õm\ÀXÀeÿÀEÿ5à fÎeæ’ß à –%Î@Àeøÿ&æ|ß ¾ –%À%· t@øÿw¶w ¤÷bb æTæNß à –%w–w „÷å B Î æø æ&ß ¾ –%À%  Àw^w Lõø öÿõ!ôÿW-öÿ!†@öÿµ öÿ’5øÿ u-øÿð@ôÿµ ôÿH�øÿéW-ôÿ !†@ôÿµ ôÿŠö÷ÈÒ÷ÄÎwúw è€wXDÄeÀŸN · H %ß æ ôwÌ7 47 *ׯ*-· "· ÷"¦'7  .÷¤'ƒÁ° BÞ üJÔ d* o$ xZ fd e c sà l Ó•-÷ C r f÷ ðÿ€Àe0�‡•à •1à /Á� Ò‹ƒ D~'¤ ¨  ÷ f v÷ öÿ€€LÀe0 9Àe�‡ÂN÷ zÂD÷ p‚ƒà&æ Ä Ãm&÷ $ß æ Ã~Ä Ž”ß æ à Î ß æ Ã~Ö „w¦þ7 ø ÀŸî· êÀå0 ‚· àWp `ñÀe0[ƒÄeÓ•?‡f…@÷ ¼÷´w¤w n®'@�w b®'×-šw t®'@7 |wþf…wpw Z®'7 fwèf…÷ V÷¢%PÀH‰¢% ‡À À 78 Àß4· 0…‡7B 7 …‡f…@w‰¬ †w† wˆf…ww‰° †wfwjf…@wìw艶 †wDwHf…@wÐw̉¼ †w" w$·¬wª·¨‡ÆžÅœÎš‡7–ÀÿÿF…‡Õ @…&æ¦äHÅåF‚ƒ„…‡fA7n‰Â ‡  �…Ñÿÿ�±…fAñ &÷ €ø9�± �…&fA÷ �€…@Àe&7:w6·ã0@‰ä ±ñ‡þÿ÷ÿ/corea.out%s not found %s not found Bad format: %s ? %o %o %c"$&'/=JÀ€(øØ\%o%c +-[üü²²®savr5%c(%o,%o) üÿðÿýÿøÿ‰‰‰‰‰¶w w&w šë€Àw �ë…‰crt0.ocdb.oprintf.oD ffltpr.oÜ putchr.oæ getchr.o@ fstat.o‚ open.o  read.o¾ seek.oà reset.o retrn.o rsave.o. put.oN savr5$¢'_main"_fcore$ê _fsym$ì _symoff$î _lp$ð _errflg$ò _symlen$ô _symct$ö _symbol$ø _symflg$!_symval$!_ssymbol$!_ssymflg$ !_ssymval$!_line$!_regbuf$�!_uuusp$�%_usize$’%_uregs$”%_textsiz$–%_pc# _r5# _dot$˜%_tdot$š%_dotinc# _lastcom# rsave"0 _open"  _printf"D _read"¾ _fstat"‚ _setexit" _getchar"@ _command"vrretrn"> _expr"‚_getcnt"Ü_scomman"ì_cget"$_printc"J_putchar"æ _vallook"¢_reset" _printtr"j_get"Þ_symlook"<_findrou"t_symset"ˆ_symget"¨_eqstr"t_savsym"à_seek"à ndigit$¤'pfloat"Ü pscien"Ü _fout$®'_flush"* putc"p flush"� retrn"( _errno$º)_fin$œ%cerror" mrsave". putw#È fcreat"N {|}~€�‚ƒÚÞ  ð€&Ð 6÷ $–% ‰/dev/rk2/dev/rp0/tmp/ktmpw @À @m W-õÚõ@À ð Úµ ÷W-^@žÀ%-Wõ õeuøÿý‹øÿL@øÿµ øÿ’=· · ò· ï@ß >Á· Á 1Êõ õeÜ@ß >Áª· ¦Á 1–õ õeÉ@ß >7‚õ õe»Áö7Ü þy ±÷ ˆ7 €Îß À7`õ õeNæß ˆÖ Nß ’÷ àÎ8ß Œ÷.W-Næß ÔÖ w¼w ª fß ìÖ 7¶÷ ² Næ$ß ˆÖ _6÷ ÎÄæß N Ö ÷ æ?÷ âÀâÀ ß 7ˆÎ„ß ²À _6ζæ*ß ¢Ö 7®Îæß ~Ö À5Î:æß ~Ö Î^ß 7:74Î0ß ²À _6Î ß 7�À^tß 7Îzß ²À _6Îìß ²À _6 7!*†@Àeúý&Îeß N Ö  × · ´Àt@Àeúý`ß „ƒ ï„ ß÷ â1÷ŒÀÜtÀ-€%†Îæv& ß ž–%Àna’Áwt¬@0 æRß ØÖ À ÎDæ4ß ˆÖ · 6Ô_67 ,÷ t_>Înß Œ æ*ß ìÖ 7ZÎPæÁÁíÀ r&æöß ÆeÄÿÿ õäøýw-øýÞF†@øýð W/øýÃ6Nøýæ8ß zÖ D/øýÎlß Î ß DøýÎ ß ×-Ð@Àeúý&ß Ø Ö  føýß  Ö Ã  Î<ß zÎ ß õeøý¶Î’ß ŒÎ*ß ê_6÷ žÎÄæß N Ö ÷ fQÎß ŒÎfß ìÖ 7î÷ ê Næ@ß ˆÖ _67 <7 7ŠÈ7ŠÅ7ŠÂ ß ” À ÀeÿÿÀÀe!‡7 ¶ æR&ß l–%÷ ¤ß ” Ä éÎÄæß ø Ö Îrß Œ÷ ì_6÷ Ú  æV&ß l–%À · Xð÷ VÎPæ\ß zÖ À–Àí�Àeþÿ76 ! Àªa’ÀÀEðÿœâ7`ÀtüÿÀEðÿœâ7`„ ç÷ þÎøænß zÖ  À:t!†ÀÞa’ÀEÿà × €Î&Ž æzß z–%„ äΠæ„ß zÖ Î�æ�ß zÖ Î†æœß zÖ Î|æ¨ß zÖ Îlæ´ß zÖ ÎbæÀß zÖ ÎVæÌß zÖ ÎJæØß zÖ Î,ß Œww Î*ß ê÷ Úwþw ì@@ï5øÿõ øÿ@øÿ @A@ìwÊw ¸ý5€_h÷ $ÎæÌ& ß ž–%À7t Á¼a Ð÷ ú æ@À¨Àm œÿÿ�ep�ÿÿ@ð‹@œ&Îe@À~Àmvœÿÿ�ep�ÿÿý5 · R_h @ÀEÿŸÀ%@6Î@&@œ&ß ž–%÷ v!÷ r÷ ¢÷dšÎ^ß 7Îß ²À 7 FÀ0 ÿîö÷eð· Ú÷ (i· Æý5H· ¾ !AÀ @mð 8· ¦ æäÀ @m&ß l–%À _,@ÀeúýÀ @m&ß N Ö  × ÀÀ @að úý ŽæêÀÀ @a&úýß l–%ƒ êÂå „ ¼ !À @mð  ŽæðÀ @m&ß l–%Âå „ æwâ w Ð D · €À ,– Næà&æöß ˆÆe‚ ë÷ ì7!æ ‡Ä Næ¶&æß ˆÆe÷ ¤· ˜7!–ƒ7�ÀäÀe!‡7!Ú‡Næz&æß ˆÆeÀ_ Î&& ß ž–%÷ œ%À7t–ÀÂÀ`ˆ°÷ 6· 2 _ Næ"&æ,ß ˆÆeÀ_ ÀŠÀ`ˆÐõ _ @Àeøý&ß N Ö  × _ õ _ õ ÀÀ @a5øýøÿ_þ ÷ cÀÀ @aœúýÀ%.ÀÀ @að‹ûýUÀÀ @aœûýÀ%.ÀÀ @að‹üýG÷ ÷døÎ^ß 7rÎnß ²À 7 ¤À^ðPÀÀ @a?øýLÀHðŒ —  ÀÀ €`@að‹úý‚ ô‚ ÷ f ŽÀÀ &@Àeúý`æRß –%·`J÷eü · D€À 5,ÊøÿÀÀ @Àeúý`fæÈføÿæ>ß ˆÆe‚ âW-øÿÀüt@-øÿ Næ–&æXß ˆÆe_þ ÷ ÌÀ~@møÿðŠÿÿÃe_ˆ w@ w . µ @À% Î.ß Î.ß Î.ß .@,(Ä,7!*†A1" ô N&ß  Ö ÄeêÎ?ß Î?ß Î?ß Î/ß  @&æß Z–%Î@Àeìÿ&æß ð–%@Àeìÿæjß zÖ wv w d ÎfÎe& ß ž–%7!À7ºN&ß N Ö À²t@mÎÎEðæpß zÖ ÎÎeß @ ÎÎeß @ w w üNß €Î/& ß œ Ö Î/&Ž ß œ Ö Î &ß œ Ö Î:&ß œ Ö Î &ß œ Ö w²w  AÀ r Îe0ß AÀ r NÎe0ß Nß wxw f÷ èÀäà × dÎvß ˆ _J ÀÀ ÊÄ  ÷ ¶@Àeúý&ß N Ö wúýž × d ÀÀ ÁÁ Aapüýʃ óww îÎfæþß Z–%Îfæìß ð–%À% Næ†ß ˆÖ ÷ –wºw ¨×-*d!õ"øý5 øÿW-øÿd @øÿÀ @aAøÿÁ pÊúýµ øÿï7 ö @Àeøýfß ø Ö Àà · Ü À pÊwVw DÎfæTß Z–%ÎfæBß –%À% Næ–ß ˆÖ ÷ ìww þ5 øÿ@µ ’5öÿW-öÿ0ôW-öÿ9ðAøÿWp AmöÿÁeÐÿuøÿå@øÿwÆw ´N f fffß zÆe÷ œwœw ŠW-ÿÿÎ¦ß ˆÀ_Ô wvw dCµ W-  ,Ä‚7!€ †# — €N¦ß ØÖ À% Î¦ß NÖ À ÄeÝ æß NÖ ww îCBÄ7!†-´ÄeõwÔw €wDÄeÀŸ ·  %ß ôw¦7 ö7 ìׯì-· ä· â÷"ž7 Ú .÷œƒÁæBÞ üJ d`oZx�fše8cFsl Ó•-÷ C r f÷ ðÿ€Àe0�‡•à •1à /ÁR Ò‹ƒ D~'¶º ÷ f v÷ öÿ€€LÀe0 9Àe�‡Â÷ zÂ÷ p‚ƒà&æ Ä Ãmè÷ æß Ã~Ä Ž”ß à Î ß Ã~Ö „w¦þ7 º ÀŸ°· ¬Àå0 ‚· ¢Wp `ñÀe0[ƒÄeÓ•?‡f…À†÷ ,À|P�· r÷ l÷ @…‡f…÷ …‡ÀP Àå¬7^ À>€ ‰¾÷¬4÷,×-&‚÷‡f…@‰†w” w–f…w w ‰Ä†wtwxf…@)‰†w`wdf…wîwê‰ÊwDf…wÜw؉Іw*w.w 2w f wb AupNNmfß 8Ö ww  Â< @@í5ôÿ€ _š�Á fAôÿÀ rBpuôÿ@@môÿ5øÿ5öÿD@€à5!øÿ†føÿ&ÿ ä –%5òÿ µàøÿ@øÿ&ß žÖ êõ òÿ„`åõ öÿ3ƒæföÿÿ ® –%5òÿ ε`öÿ@öÿ&ß žÖ êõ òÿ5!øÿε`öÿ@öÿ&&ß Â–%µ`øÿ@øÿÔÎ&ß žÖ ƒà„`±ƒàÊ5!øÿ$@øÿ@íAAíöÿ ‡NföÿŽ`ß 8Ö uøÿ Nøÿfß 8Ö @öÿ€`5_Bµàøÿ@øÿ&æß –%µàöÿ@öÿ_ˆw°w žõÖ øÿDC“Ô’“�õ øÿúwŒw zõ² öÿDCB5“øÿ”’Ò’S�øÿõ öÿ÷w^f…@wÚwÖ‰Ö†w"w&f…÷ÆÂwm¼‰Ü†wÀ°wmªwþf…wš‰Ü†wâwŒ wÞf…@w|wx‰â†w¸ wºf…Aw¨w¤÷5œWpÁeâW è ‡W 0 †ñ‚w|‰0‡wvÀwff¦æ&Ø „ƒ‚�€f…$‰wNf…wD‰6†w2 w4f…@w*w&‰:†wwf…@‰7x ÀÿÿF…‡Õ @…&æ¦äHÅåF‚ƒ„…‡ESTEDTw ÖÿNß €ß „wÎÿw ¼ÿ @ÀeòÿL@4À¸ &ß ÀÖ ß ¤ÂÀ¤×, J×, J— — ×, ÷UvõÿÿøÿõoöÿÎwæß dÖ 5øÿÎ/æß dÖ 5öÿÀD µ øÿµ øÿ×,µ öÿµ öÿ×, Î&ß ÀÖ ß ¤³ Àwêþw ØþDC ß 0@mÀe“þÁím Áe¼À rfÀ€åwªþw ˜þ΀p@&fß ž–%Ãú ®!ÁÀ r<RÁÀ r<ÁÀ r<RÁÀ r<À rWtC`À rÒÁeÀ rwž ÃFÎß 0!Îß 0àƒ õ÷~ 7~ Îß 0À%n÷ò ÀÀ ,@ÀÀ ì@ƒ õ÷Ô€ Ò7 D À®!wÊýw ¸ýÄ€ÃbÀ”�üAA WpÁe|CÄ€Ô”Ô”Ô”„ @Àe�WpÁe’CÔ”Ô”Ô”Ž&ß TÖ ŽÎed&ß TÖ ŽÎed&ß TÖ ŽÎed&ß TÖ Äe@ &ß TÖ À€wýw ýAÀ rÁ ÀnÀmwúüw èüD„ W- C —r �À r Áe0T�Ô• AÀ r Áe0T�w°ü€�6rw ‡€�6r@‡f…@õ Á P`Hm` …‡ ÿÿdbgilsuÚ´¨®¤.%s: /bin/checkcannot open %s %l %4l/.cannot write %s URKfree%l dups in free %l missing %6l %3o spcl %6l files %6l large %6l direc %6l indir %6l used %6l last %6l free %6l idirldirsdir%l blk; i=%l(%s) %l geq; i=%l(%s) %l bad; i=%l(%s) %l dup; i=%l(%s) %l ino; i=%l(%s) "%.16s" %l din; i=%l(%s) %.14s%4o bad freeblock read error %d write error %d out of memory üÿðÿýÿøÿ‰¬‰ ‰‰‰‰Â!‰7Þù7Øù7Òù7Ìù7Æù7Àù7ºù7´ù7®ù7¨ù7¢ù7œù0‰ ‰‰PF^bDay Mon 00 00:00:00 1900 SunMonTueWedThuFriSatJanFebMarAprMayJunJulAugSepOctNovDec…†‡ˆ‰Š‹Œ�Ž��‘’v„ ð€&Ð 6÷ –% ‰w >W-Îvß Îß >@  Ê‹—¢0—¢7Î‚ß Îß >Àt�’ÁeÐÿ@P‚ æÄ5!ÎÀ @m&ß Ö À µ øÿÀ @mß ¶„ çNøÿß >w°w žõŒøÿ÷-FòÀ>À 5¼øÿý‹Nøÿæšß Ö Nøÿfæžß –%wdw R€wòDÄeÀŸè · â %ß ¤ôw67 Î7 ÄׯÄ-· ¼· º÷"þ7 ² .÷üƒÁnBÞ üJ’dèoâxf"eÀcÎsžl Ó•-÷ C r f÷ ðÿ€Àe0�‡•à •1à /Á* Ò‹ƒ D~'¦ª ÷ f v÷ öÿ€€LÀe0 9Àe�‡Âè÷ zÂÞ÷ p‚ƒà&æ Ä ÃmÀ÷ ¾ß ¤Ã~Ä Ž”ß ¤à Î ß ¤Ã~Ö „w¦þ7 ’ ÀŸˆ· „Àå0 ‚· zWp `ñÀe0[ƒÄeÓ•?‡f…À^÷ ,ÀTP�· J÷ D÷ @…‡f…÷ …‡À( Àå 7ÆÀ€ ‰®÷  ÷×-þ‚÷ö‡f…w˜w”‰´†w wError 0Not super-userNo such file or directoryNo such processError 4I/O errorNo such device or addressArg list too longExec format errorBad file numberNo childrenNo more processesNot enough corePermission deniedError 14Block device requiredMount device busyFile existsCross-device linkNo such deviceNot a directoryIs a directoryInvalid argumentFile table overflowToo many open filesNot a typewriterText file busyFile too largeNo space left on deviceIllegal seekread-only file systemf…@‰7ÀÀÿÿF…‡Õ @…&æ¦äHÅåF‚ƒ„…‡arg count bad mode Unknown error%s%s: %s üÿðÿýÿøÿ‰ ‰4<Lfv~ˆ¢´ÆÖâô 6HTfv†–¨¼Ðâò(¢2…D! w nchown uid f1 ... ÅeC×¢0×¢9w ¶ 7Àw ÜÔ†w 2Can't open /etc/uids ‰Âw ÖÔ†w Who? ‰ : €¤ñw ¸Ôñ‡ ùèÊ‹öw ¤Ô :úw F>Äåw Õ w‰†Àöÿ77 Ћ· ûÀ‰w š? Ä ä‰ } Ô ‡Àå0 ‚Wp `óÕ …À”Õ …/etc/passwdfA7~‰¢‡ �…Éÿÿ�±…fAñ @Àe7x1@‰È‡À �±…À 1 @Þ± �…&@wLÕ‹þ@á@ 7BÀ‰Î… ÅE€…‰www Šÿ†…&w ~ÿÀ€U…‰‰®—%F·2·^Ö € ” Wq Áå0W 3†E`õÅe@tüÿ7 ‰¤&‡&‰€‰®€‰@tÀEþÀe®Å B‰¤ ‡&÷Ìÿ‰€‰®‡‰À‰ž‰error /dev/junk’—%w âUsage: cmp arg1 arg2 ‰Ö ·‰ †w ¸Can't open arg1. ‰7H·‰ †w �Can't open arg2. ‰7& w Œ”…w ‚š(… €÷ Êw T: À÷ ¼w F ÷ °w : ÂeÞw Hš …w &EOF on arg1. ‰‰w EOF on arg2. ‰w•¢À‰’÷… ÅE…AW,@ÀEÿñ …ñå@w÷e‰1²…qñeñå@ñe…&æ w—#wÄe07À‰’Î íÖ „‡  ð€&Ð 6÷ –% ‰w š5 ðýW-@¢-@¬tõ õeõðýW- Îæ æß ’–%Îß  @&ß tÖ 5øý Îæ æß ’–%Îß @Àeúýføýß Ö uþýèýNèý@&ß ìÖ 5öýp@Àeúý@&ß TÖ @þýÀEÿŸÀ%@Q@5îý@5ìý@Àeúý5êý@êýµ êýAìýµ ìýA’H�@�ó@êýð•/ÿÿuêýìý@îýµ îý’=�êý @êýµ êý¢/uìýêýíNèý@Àeúý&ß ìÖ 5öý Îæ4 æß ’–%Îß  ÎæL æß ’–%Îß Î@Àeúý&føýß 2–%5ôý/@ôýÎ æd æß ’–%Îß Nôý@Àeúý&föýß ’–%@-ôý Î æp æß ’–%Îß µ òýÃ@ðý@Àeúýæfòýß t–%õ þÎ@Àeúý&æß ’–% ß wNw <uøÿ@øÿõ øÿÀ @@møÿÈ• óAÀ r 5öÿ Nõ fföÿß t–%õ @@mC —r Ãe0È�µ @wÖf…wŠw†‰~ †wÌwÐf…@‰f…@wd‰„ †w¦ w¨f…@wJwF‰ˆ †w‚w†f…w2w.‰Ž †wd wff…ww‰” †wDwHf…@wüwø‰š †w"w&@…&æ¦äHÅåF‚ƒ„…‡7ÌÀÿÿF…‡Usage: cp oldfile newfile Cannot open old file. Cannot creat new file. Cannot creat new file. Read error Write error. ‰‰‰‰‰‰€¸X ð€&Ð 6÷ –% ‰w ¸W-a@7Ž ÷ À Îæ æß ––%÷ lÎ æ¸ ß RÖ Î¸ ß ð Îðñæ¸ ß RÖ Îâ ß €÷•|\ θ ß fÀ Îæ æß ––%Îæ ß $Ö 5øÿÎò ß €÷•}, Î& føÿß B–%Î æØ føÿß ––%θ ß €÷¾ Èθ ß øÎæ¾ æß ––%θ ß À Z Ä Î&æß ––%뾄 æß ––%w–w „ ÷ p— _h— _h÷ V5øÿW-øÿ_hW-øÿ_h÷ 65öÿW-öÿ5 öÿµ øÿ÷ 5ôÿõ ôÿ\W-ôÿ;X÷ à @Àeðÿß €@Àeðÿß  ׯÚpõe öÿõ öÿ;W-öÿ77 º7 ¸ÃelIJ!ß Âß r„ ö €À > ß r÷NøÿÎeÿÿß rNöÿæß ”Ö Nôÿæ<ß ”Ö  æ<ß ”Ö Àwnw \À>@m7!4†· ,7*wLw :ÁupwÄõ ß rùNß rww ÂîÊ‹Àÿÿ$�”ÁeÐÿWp @Ä !dÀÿÿÊ‹Àÿÿ€”ÀeÐÿ× Àÿÿ·¢À`w¼f…wwþ‰. †w„wˆf…@wæwâ‰4 †wb wdf…�@A‰†wH wJf… ‰¦BR‚w4f…@w˜w”‰: †wwf…@‰74ÀÿÿF…‡Õ @…&æ¦äHÅåF‚ƒ„…‡ESTEDTw ÖÿNß ß wÎÿw ¼ÿ @ÀeòÿL@4À& &ß RÖ ß 6ÂÀ×, J×, J— — ×, ÷UäõÿÿøÿõoöÿÎwæß öÖ 5øÿÎ/æß öÖ 5öÿÀ² µ øÿµ øÿ×,µ öÿµ öÿ×, Î&ß RÖ ß 6³ Àwêþw ØþDC ß Â@mÀe“þÁím Áe¼À rfÀ€åwªþw ˜þ΀p@&fß 0–%öÂü ÁÀ r<RÁÀ r<ÁÀ r<RÁÀ r<À rWtC`À rÒÁeÀ rwZÃFÎß Â!Îß Âàƒ õ÷:7:Îß ÂÀ%n÷` ÀÀ ,@ ÀÀ ì@ ƒ õ÷B€ Ò7 Àü wÊýw ¸ýľ Ãb À”�üAA WpÁe| Cľ Ô”Ô”Ô”„ @Àe�WpÁe’ CÔ”Ô”Ô”Ž&ß æÖ ŽÎed&ß æÖ ŽÎed&ß æÖ ŽÎed&ß æÖ Äe@ &ß æÖ À¾ wýw ýAÀ rÁ ÀnÀmwúüw èüD„ W- C —r �À r Áe0T�Ô• AÀ r Áe0T�w°ü€�6rw·€�6r@‡f…@õ Á P`Hm` …‡bad conversion no permission /usr/adm/wtmp‰‰‰PFðôDay Mon 00 00:00:00 1900 SunMonTueWedThuFriSatJanFebMarAprMayJunJulAugSepOctNovDecêzÎ…DÕ ! ww$w,!w"‰Ü†wX7J7 H‰Ü‡7<‰á4‡‰"÷-ÌP÷-ÄF(À¾Àm¼×-ÂÀ Àe7@‰À¢ À]ƒÀÀ]7`‰"7@‰"Àe"7ü@‰w ,è7 ì7 ä÷¦·¨0‰ ‡0‰r!!!÷€Àˆ‰dÀrÀå7†Àt‰Àj‰dÀÞÀEÿ7h7 N÷ p÷ ¦÷ B÷T ,•æ:æ:÷ †÷.:·,·$÷ “÷ ö÷ Ú0‰rÆúw ô? Ðw êFile not found. ‰Ä¢ÀÔ‰€À ö×­Ì Ô�Äò ŠÄ¢‡A Ö yÑ ù…÷+¤7 ¢7 ~7 œ7 š• 0  9Y a zwØ A Zfw ªÿ0ä‹÷ @÷fZ‡+Z-Z î.ä_ä^˜*Pÿÿ÷Ì· .÷  7 ÷] w t†÷ 7 ×-+÷íü÷møô÷+ì«÷ôè÷ ä÷ Î×÷ ÚÔ  Àå0Á Á Á ×p P`• 0‡ 9ðƒ .Á„ w¦Ä ¹Ä ÷"†Áf   ÁfæÔ‹£.£0‡£9ƒ£A‡£Z ƒ£_£a‡£z‚Î å“ãÖ ÷ ö÷ 2£;wÿÔ‹wÉ7$wŒþw `þn· ‡/\ü?,P^˜=Ø:!d'ˆ"”$ª&à%œ`ÿÿÅAÝ üAwðÎÝ úAÝ ‡êíôþ!%)6=G^nrvb`^ZLNPXRhjrz‚Š’z‚ö~ªè‚‚ꆂ슂ð’‚ò–‚ôš‚øžlü£l¨l­l²lþ·l¼ªúD õð÷ D÷ ÷ ‡÷ 6D÷ ¶÷  w Ø ÷ j÷ Þ‡÷ D÷ Ž÷ ̇@”÷ û‡7ÂÀ‰Ž‡w JD‡7 �÷ w Hò‡÷ ÷ Œ‡· t÷¦ 7 h÷š w F‡7 V÷ˆ w 8‡7 Dw r ‡÷ Èw 4. ‡÷ ú÷ 8‡÷ 4÷mR 4ÀN wþý÷ · ‡÷5÷ øöw <�„‡· è÷ 7 Ü÷ w ”¦‡&÷ €÷ ÂÀ÷ ×-Ô÷ À‡ÀEÿ   ‡ †÷ àþ‡w „\ v Àe0÷ Èþ vÀe0÷ ºþ vÀe0÷ ¬þ‡w  ‡÷ XÀVÝ ÷ R…7t ÷ D÷BL÷ ,÷E@w Ž�÷ ÷ ÀEÿý ÷ ÷ ÷m2 éÕ …÷ ÷ö‡Wð€&æ×þ —þ @ñðÀñÀ-÷ þ÷ð„ ùú÷ðÄ òúó@ûÀe0÷ ðýÀ.÷ èýÃó@ûÀe0÷ Øýà øÀE÷ Ìýƒ„f€ À-÷ ´ý÷ �‡ r f÷ ðÿ€Àe0÷ ’ý‡×-*.÷L@‡÷ ,‡¦Á°Âd÷ ÷ 7 ÁÂ: ÷ ‚‡Àf$ $ $$Ñ wô‡Ñ Ñ Ñ Q$B 쇷 Ô7 Þ‡fÅ" Ãÿÿw!ð †A à C ‚W †… ‚CBÅe ì…‡@w <7ÀЉ†· z…Àx‰–÷‡À õÀ‚…& ’6œ€…×-H? Æû‡ÀmTÀm6Õ …· 6…Á  ‚ !�ÉÅøÿÉÕ0¡ € € õ· wÀ‰š‡@•÷ Lüû… ÅE…w êÿ ‡w âÿ ‡w Úÿ*‡w Òÿ(‡w Êÿ)‡w Âÿb‡w ºÿ,‡@w `ÿ7À°Õ · ¢…÷ œú‰õ‡wÀ�÷ ‚÷ ÷‰䇅æÎE÷ÿÀEøÿ @À€ € € ÀEùÿx. 6 L f € Î ÷ `ÿ÷ ¢Ö I÷ \ÿFÖ ÷ Bÿ÷ Fÿ÷ ˆw ÿ)+9Ö ÷ (ÿw ÿ-(÷ j÷ (ÿ,Ö ÷ ÿ÷ Ô÷ ~÷ ÿ÷ L÷ ÿ ÀÃ5¼Ö ÷ èþÃ5 w ¼þ$÷ ¢÷ L ÷ ˜Àe@`Á÷ 8Õ …À…ÀÀEøÿÀ 7þ ¨ À‰š‡r0r1r2r3r4r5sppcfæf÷ ’ý —#à �æ@”÷ ’úÎ úÖ …, w ,þ-w $þ+À÷ ìýÖ ƒ…‡AÁew, w tý–‡÷4÷ ÷ þ‡&Áž €@D@$f÷ &ú^Áeõÿ�àmovÿ� àcmpÿ�0àbitÿ�@àbicÿ�Pàbisÿ`àaddÿààsu?€ clr?€@ com?€€ inc?€À dec?€ neg?€@ adc?€€ sbc?€À tst?€ ror?€@ rol?€€ asr?€À asl?@jmp?Àswab?@ðldfps?€ðstfps?Àðstst?ñclrf?@ñtstf?€ñabsf?Àñnegf?À sxt?€ mtpi?€�mtpd?@ mfpi?@�mfpdÿp¶mulÿr¶divÿt¶ashÿv¶ashcÿLbrÿLbneÿLbeqÿLbgeÿLbltÿLbgtÿLbleÿ€Lbplÿ�Lbmiÿ‚LbhiÿƒLblosÿ„Lbvcÿ…Lbvsÿ†Lbhisÿ‡Lblonhaltnwaitnrtiniotnresetÿò²mulfÿó²modfÿô²addfÿõ²movfÿö²subfÿ÷²cmpfÿøÚmovfÿù²divfÿúÚmoveiÿûÚmovfiÿüÚmovfoÿý²movieÿþ²movifÿÿ²movofðncfccðnsetfðnseti ðnsetd ðnsetlÿrjsrÿxrxor€’rts žcflg°žsflgÿˆÒemtÿ‰âsys? Æmarkÿ~0sob˜ÌsplÿÿÐoctÎEÿ÷ Ôù€À À ÀÀŒÀŒÀŒÀŒ€ € € € ÀE8ð& ÎEÿÎ ÷ Æù÷ ¢ù€túÿw ú�7`°Àm�7’÷ ®ù€w þù–7`˜‡Î ÷ �ù÷ lù€w äù�7`~‡÷ Zùƒ×túÿ÷ ¦ú÷ tù€ÀEÀÿ ÷ >ù€ÀEÿÀ5€ÀUÿ€ À Àm(÷ ¢ú‡Ö ‡÷ ùƒ×túÿ÷ dú÷ 2ù€w ‚ù�7`‡÷ øøƒ÷ Hú‡÷ ìø‚ÁÂÂ5 Â5@’÷ õ�  ô‡nzvcÎEÀÿÎEøÿ÷ ¸ø€ÀEÿ÷ dø‡÷ ¨ø‚ÂEÿ€  —  ò†�0÷ ¼ô¦2÷ˆŽÎ Ö ‡w ^ø;÷ez÷eˆw º÷˜÷ àùíÂÇÌÑÖÜáçìò÷þ !',16<CJQW\agkrw|ƒ‡�’— ÷ º÷€÷ j÷‡corea.out?0HangupInterruptQuitIllegal instructionTrace/BPTIOTEMTFP exceptionKilledBus errorSegmentation violationBad system call?15?16?17sp ps pc r0 r1 r2 r3 r4 r5 fr0 fr1 fr2 fr3 fr4 fr5 fpsr releexitforkreadwriteopenclosewaitcreatlinkunlinkexecchdirtimemakdirchmodchownbreakstatseektellmountumountsetuidgetuidstimequitintrfstatemtsmdatesttygttyilginshogsleepsynckillswitchesboot"/späpsþãpcüãr0úãr1øãr2öãr3ôãr4òãr5ðãfr0ìãfr1èãfr2äãfr3àãfr4Üãfr5Øã£¤¥¦§¨©ª«¬\—%‡Ö ·R‰\ †À‰ ‰Input file. 7®0‰ ‡0‰7 ,Åì ÷ .w–À ÷ ¾À÷ w À ÷ ªÀ÷ À ÷ šwZ ÷ ôwX ÷ êwP ÷ àÀ÷ tw²À÷ ÌÀ÷ `w¸ ÷ ºwš÷ ¦:·÷ °ÁÎ Ñ  üyüÿwìî×-ZxƒÁR÷ V÷åFÁB÷ F÷å6w°ÿ‰0‰÷L&€,úÿ‰öå7 4€÷ œÀ‰X7 w| 7�‚÷ �÷ * ¯÷ †÷  ÷  ¨÷ ¥‰‰À‰£‡ ‰š–š/etc/msh! W!ì_Ô ÷ Æ@þÿ÷ .÷ Î � ÷ ²CÃåìƒ  —rdÀ÷ 8ƒ÷÷ ¨ wÚþ÷ È †_Æ÷ Xø÷ „W!ì÷•sÖwÄ €‡_ÒÀ ì÷ ,÷ Ž pìw”þ÷ wŒþ÷ F €‡_ÒÀ ì f÷ è÷ "€÷ Œ÷ , ‡ ÷ ÷ ‡÷ wLþ÷ : †_Ô÷  ÷  ÷ w0þÀ® ÷ €‡À÷ v÷ ¬÷  C¢÷ Ž ÷ ÐÁ÷ Œ÷ †wöýÀâ÷ F÷ twäý÷ r ¦Âl÷  fÁ÷ Xƒ‚÷ H ‡ÀJ÷ ÷ ¨÷ >÷ vw¨ý÷ –†_ÔB÷ І�÷ Z_ÔCÈ ÷ N�÷ Á÷ ‡÷ wný÷ \†_ÔfÁ ·÷ â‡÷ B†_Ô@@ì ƒ_Ô÷ À÷ ì€_Ô7¸÷ ¬Á°÷ ¬ — ‡÷ ^ÂåøÀ— ‡À ÷ Fwðü÷ Þ†_ÔC÷ Ò†_ÔB÷ ,÷ š�÷ VÁ÷ PwÀü÷ ®†_ÔBÃD÷ ì C�÷ 0ÂÂì _0Á÷ Ä÷ È€_ÔÂ5WpdDÁ÷ ¬`‚ ‚ €÷ ÷ €÷ LBÀàÀeû€ € �÷ r÷ v÷ f惂÷ ¨ C÷ fÁ÷ ¢÷ œ�¸C÷ ˆ fÁ÷ ˆ÷ ‚ƒ�÷ d÷ ž€÷ ÷ ¢B÷ ¾÷ ÷ ÷ V�÷ PÀ €�÷ DöÂÁ÷ 8�÷ n�÷ *Ö Ö w–û ÷ F÷ VÁ÷ w‚û& ÷ 0÷ @÷ 0 ]Î Î  [Ž ÷ ªðÖ wPû÷ wHû÷ 6†_Ôfÿ º Á´q,÷ ²÷e ×-œÚ†�’÷ –‡÷  7‡À‰Ú‰Nesting depth. ÷eX×-TÚë†? LæÞ7 Ú÷ | !÷ jû·Èò7Ä ÷ Z÷ ^÷ î ÷ V÷ æ  ù·¢w‚ú÷ 2ü÷ l÷ î À ÷ ¤ ÷ ¨ À �÷ î÷ Òû†÷ ä÷ wPú÷ ü÷ :÷ ¼ À ÷ È÷ öw4ú÷ ¼÷  ûwØþ÷ Øû÷ ÷ ” À ÷ J ÷ N À €÷ ”÷ xûw°þ÷ ˆ÷ ¶wôù÷� rÀ‰J÷v^ÆüwÔù ÷ „fÁè÷ X÷ ~×­Ø06×­Ð9%ÀÈÀå0ÁÂ÷ 4À ÷ ê w²ƒÂ:÷ ÊNÁ÷ ƒÂš÷ `NÁ÷ ü÷ *7„Ó×­~A ×­vFÀnÀå7Ò÷d`�‡÷ XÀ�R7 N‡ÿ ° À@‰â‡À À�4‡fÁ’÷ È ‡7"�‡÷ 7 å‰Ár÷ v÷åf�wœÿW!ì_Ô÷ wÌøÀ‰ W!ì À‰Ì À‰Ê ‡Aþÿ÷ L‡fW!ì÷ ¾ÿ÷ xW!ìùÀêÐ  ê‚ú&Àåì€ 7�ñÀ‰R÷ €ë…wLø¦f&& ÷ Ì ÷ ø ‡ cúƒ ÿÿ÷ÎUôÖ ÷ ˜ 7°w¨À‰Vu÷ > ÷ B †À‰a À‰Ë e÷ ` f÷ ˜ €N÷ ÷Vè· ä÷  ÷   ÿÿÁà÷ ð ÷ ô  ÿÿ �÷ p÷-À÷ (÷ ´÷ Á°÷ Áª÷ ü  Y‡ ÷  ÷ 0  S ÿÿN )ƒÂ~÷ ÜB�÷ Ü Žÿ ð�÷ º ïÁ\÷ n ÷ r ‡7J÷ ²ø�÷ ® À‰Ê €�‚‡�÷ @ ÷ D  —r Âe0·÷ xÃe0÷÷ l÷  †�÷ d Ú —r è& æÁà÷ P Àÿÿ÷  C�÷ " B÷ Šv�÷ $ ÀÎ ÷1¦÷ é÷ *_@‰^ àÖ �÷ ö £ -1fÁv÷ ÊÀmÌÀ && �÷ ¸ÁZÀ0÷ „ (�÷ ^ ÷ b €Î÷ àƒÁ÷ ˆÂ ÷ ŠvÁ÷ ˆ ÷ ‚ ÷ ®÷ z Àe0Á÷ 4 ãÁü÷ P6 †À0÷  ôÎ À-ÁÜñ ÷  À ÷ þÖ Ö �÷ . ‡f÷ & ÷ RÀe0 9ƒÀeÁ¤÷ Ò�÷  ‡÷ _@À÷ z‰b ÷Ú lÀ÷ d‰â‡7�Ú À‰\w6õUW!P†‡À‰¦ Out of pushdown. W!ì‚ ±‡A¡‡ 0? è Æ v!% *Ž+r-~ .Ð/Z0Z1Z2Z3Z4Z5Z6Z7Z8Z9D<v=ž>ê?ZAZBZCZDZEZFPIrK2LboèPêQüSVvXÄZD[Ö^h_ìc¦d0fPirk2lboèpêqüsvvxÄz&&f榀€ìÄÄì ÷ ¨f�÷ t�÷ l7 fÄ !�÷ Œ�÷ ‚@aÀmJ7 F dÀåd÷6À‹€Àed÷ÿÿ(�÷ êÝÀ�÷ Ü÷ ¼÷ À‡ü± q÷ ¦÷ ª ÿÿ÷  ‡ cú÷ Àÿÿ÷ q�‚ƒ…„€‡f&÷ ¾7 º ÷ ü‡‹Àí® ÷¨ ÀedÀ¥dÀåd7 – ÷ Øë ÀíŠ ÷ J÷ *÷ .÷ * cqÀÿÿ÷ *÷ ÷ q€�‡fæ¦&æ æ æ æ 7 : �÷ Ü÷ à�¶ ÷ ÷ Hv€÷ ®÷ Jÿw  Á÷ °÷ ´�öÁ÷ à÷ vÀ÷ €÷ ÿw à €€ìÀlÀì÷ ô÷ Üv7  �÷ ¶�÷ ®�÷ Ö.‡�÷ šñmš 6 �÷ ¸‡Âpƒc�÷ ¾`Á rd@�÷ ¨è· ` Î Ñ�÷ –€c÷ �É÷ F €�÷ tþ¶- �÷ *¶- �÷ Ö Ö Ö �€‚ƒ…‡fæ¦&æ ÷ "v‚€€ìwd÷7 ò �÷ Ä÷ þwÚ €÷ d÷ p÷ t€÷ öýw w È 7 È Á÷ –÷ Ðw® À÷ 6÷ B÷ F€÷ Èýw– w š w š Š Ä €€ìÀlÀì†_ö7p �€ ÷ ¾ Á\ ÷ 7 b ÁN ÷ ê÷ îW! · J Wqd÷ Ú`÷ < Dqd÷ È`D Å D sÁ ÷ ª÷ ®†×pdÂ÷ ž`—pd÷ ”`B @÷ ò —v÷ Þ € €r·Ú ÁÊ ÷ ¼÷ ¤€ ÁÀ ÷ ®& Á² ÷ Ô‡÷p² ƒc —rdŽÀÁš ÷ ÎíÁ� €÷ Â÷ xÀ„ Á| ÷ Ô& Ár ÷ ¨‡Áh ÷ †à‚ã €€ÀedÎÁL ÷ ‚è·H �÷ àÀ@ ÷ l÷ Ô÷ . �Á$ ñ q,wþþ÷  À À ÷ <Áþ Àÿÿ÷ 0Âð Ãî ÷ :ûfÁ÷ Ö·Þ �÷ Ê7 Ø ÷ ‡ÀEÿÀmÊ 7 Æ  dÀåd· ¸ ÷ èí÷ ® À÷ Ø÷ 8÷ <‡qø÷ Ž €÷ ®ûÁ| ÷ ÷ ‡qø÷ p €Á^ ÷ ˆûÁT ÷ F�€‚ƒÄF …¡‡æ¦&À÷ PfÀ÷ â�÷ ÷ <f€÷ ¤Á÷ ð÷ *fÀ÷ ’÷ ž7 ÷ ž€·  ÷ û�÷ Æ3Âöƒ÷ ÄüvÁ÷ Â÷ ¨÷ ¸À ‚ƒ÷ \ûvÁ÷ žƒÁ÷ €÷ ºBÀ÷ "÷ 8ûvÁ÷ z�÷ tÈ÷ Š!�÷ Pwàó ƒ�÷ X÷ J÷ v �÷ @÷ ú�÷ 2�÷ $�÷ �€‚ƒ‡@@ì‡@@ì‡÷ ,‡7�÷ "†ñ 7�ÀÀ ‡÷  À÷ šÀ‡÷ †‡± À ‡ ±‡q,ùƒ@ž¡‡W ¦†W †‡‡f&€@l1 ‚11 ‡1€÷ œ€÷ ÷ r÷ b�ä€�‡q‡q,Æñ @ž¡‡f&q,@€ @ì÷ J€÷ ²÷ ÷ �q,¹“± €Ö ‡f1°N1°N1°N1°‡f&q,@€ @ì÷ Ê€÷ 2÷  ÿ÷ ��q,¹“± q,q€Ö ‡æ¦f&ìCCìƒ €÷ n€÷ Hÿ÷ 8€I 9žˆ ‰ øìBl±€�‚ƒ‡q‡qq‡&@1 †Šû€‡7 ò&¦÷ ì÷ P· â· Ü ‡Àå�÷ šÀeÀ &Àe ‡€ð ˆˆpˆ@11Ö ‚€‡÷  Ð  †ð ˆõ÷ rÀ ßÀ‰ ‰Out of space. ˆpˆÂ`è·Z ‰p†r@@ì€ @l12¶&÷ $·  ˆ1 pˆ €‡f¦æ&7 · ú Áˆ`C?ù <ÄÄå†<\L\\\Äe†ó )„,Ã÷· ÂÄ B‰´,¦„4l\4  Š0ŠÊ˜·”2 ò†ò†ÁA¿Ð  ¸‡Àp÷ ZÀ‰&‰Out of headers. · 8„ƒ‚�‡&ÀN �~À Ö ‡ @€ @€W ¦†W †‡W,††W,†-ƒ@@ì&÷ –ÿÀ ,\Àe ‡Àåˆ ú€‡&fÀ¦7œÀe0øÿ ~ùƒ0 øÿÀˆ  ¦ü‡Ázwv1 À†1À÷ ÿÀ  ‡pˆ\Àe†1Á†AÁ ñ†ñ†ö�€‡‰÷ w\è÷ Jó†_ÔfÁn÷ Ôý·f�÷j ä÷ °ú  ÷ dû÷ hû ‚÷& Æ÷ ’ú÷ Ìü€÷ 6ü ÷ @û÷ Dû€Îe÷ ÂôBÀ÷ ¨üÀÿÿ÷ <ûC÷ Ìó÷ XúÀ `÷ û÷ û ƒÎe÷ Rý�÷ LýÁ÷ Fý·4×-Z& ÷&÷<"×-<‡‡Á< 7r wpw‡<v( ) ? " " ‰0 not in switch. & ®¯°±²³´µ¶·¸¹º€ < ð€&Ð 6÷ –% ‰w 6 Ävµ _²€À @m7Ô#Î"ß vÀ ÷ d7²_¬Î "ß vÀ ÷ L7œ_¬Î"ß vÀ ÷ 47œ#_¬Î"ß vÀ ÷ 7‚#_¬Î"ß vÀ ÷d#d#_¬Î"ß vÀ ÷N#P#_¬Î""ß vÀ ÷ Ø70#_¬Î("ß vÀ ÷ À7#\Î0"ß vÀ MÎ6"ß vÀ úÿ‹þ"MÎ8"ß vÀ Ä îÎ@"ß vÀ Ä¢åÎF"ß vÀ ÷U¾"ÛÎL"ß vÀ ÷Uª"ÑÎR"ß vÀ ÷U–"ÇÎX"ß vÀ ÷U‚"½Î`"ß vÀ ÷Un"³Îp"æf"ß LÖ ÷ Š ‚ _$!v÷5H"Ä2÷ H"  æ@"ß Ö 7R" ß 7F"÷ B" Î "æt"ß LÖ ÷ 8 ÷ " ζæ"ß îÖ 7"Îß 7 "÷ " Îä!æ†"ß LÖ ÷ ú ÷ Ø! ÀÒ!7¸7²!v· °!÷ ¤÷  Îš"ß L÷ Æ ÎŒß ` 7˜!÷ ˆ!÷Ž!Ž!Îtß ` 7€!×-z!ÿÿ×-t!ÿÿβ"ß L÷ „ 7 f!7 d!7 b!÷T!l!Îæß ¨ Ö À5Τæß ¨ Ö ÷ ! Îæ !æ4!ß > –%÷ !ñÀ!÷ !À _7 !÷ ð À!Àmþ À-â ÷5Ô ÀÜ ÀmÄ÷ Ò ƒ#ŠûδæÄ æØ ß > –%7¾ ×-º ÿÿÎÆ"ß ÷5’ ÷ °÷ &7 š  · x †À† €`È‹·„ ‚ ô÷ ÷ x ÷ €÷ ö÷-j L · j ÷5F ÷:T · T ÃB ÀF € ÀE÷5"  À”5øÿó’ÿÿS�øÿ ÷à ÷  ÷  ÷ 7  _ ÂÔ¦Ì Ö _w4w "÷ ê÷-䯷 ä· àÎ񾮾Úß –%7!¾ÎÌ"ß ÷ 67 ¬wèw ÖÄŽ=¥@µ È‹öý‹ Ä 7jÀw°w žÄV £0 £9 ÁWp @•@`ÀeÐÿð•Àt ùà ÷Àt ò7÷ °ÿCpCÀÁÒ"7Ì þy ßÎîæî"ß LÖ ÷ w,w D÷5Ä!a!zÄeàÿ÷5¬!A!ZÄe ß vwèw Ö�®· ª· ”À�À-p‚÷ ’þ÷z’w¼w ª @œ P÷ bß 2"! · f ÷ `Î ß v÷ Röß 2· 4À0À-&‚Î ß v7 7 ,wTw BD÷5ì!a!zÄeàÿ÷5Ô!A!ZÄe �!ÀEÿ÷ Èß v"W- ÷-¸°†À�´ß v· ¦ô7  ÷-š’· œ· Ž÷-Š‚‚ß vwºw ¨÷ ÷ „w¨w –Îdæ^æ#ß L–%ÎVæPæ#ß L–%÷ F_øÎ<æ&#ß LÖ wbw PÎ@Àe&æß –%wBw 0÷-žÎD#À À È#fæ<#ß L–%ww €wâDÄeÀŸØ · Ò %ß üôwä7 ¾7 ´ׯ´-· ¬· ª÷"8$7 ¢ .÷6$ƒÁ¸BÞ üJÜd2o,xbfle csèl Ó•-÷ C r f÷ ðÿ€Àe0�‡•à •1à /Á Ò‹ƒ D~'ÂR#ÂV# ÷ f v÷ öÿ€€LÀe0 9Àe�‡ÂØ÷ zÂÎ÷ p‚ƒà&æ Ä Ãm°÷ ®ß üÃ~Ä Ž”ß üà Î ß üÃ~Ö „w¦þ7 ‚ ÀŸx· tÀå0 ‚· jWp `ñÀe0[ƒÄeÓ•?‡f…wdw`‰Z#†w8w<f…@)‰†w$w(f…w8w4‰`#†ww f…@ww‰f#†wäwèf…÷wmþ‰l#†wÆÀòwmìwÀf…w܉l#†w¤wÎ w f…Aww÷5üWpÁel#W r# ‡W º# †ñâw܉º#‡w\ÀwLf¦æ&Ø „ƒ‚�€f…@wªw¦‰À#†wwError 0Not super-userNo such file or directoryNo such processError 4I/O errorNo such device or addressArg list too longExec format errorBad file numberNo childrenNo more processesNot enough corePermission deniedError 14Block device requiredMount device busyFile existsCross-device linkNo such deviceNot a directoryIs a directoryInvalid argumentFile table overflowToo many open filesNot a typewriterText file busyFile too largeNo space left on deviceIllegal seekread-only file systemf…@‰7üÀÿÿF…‡Õ @…&æ¦äHÅåF‚ƒ„…‡œ †—�Ž �…‡’�€�‚ƒ„ ˆ‰Š‹Œ�‘“”•–˜™š›ž  ¡¢£¤¥¦§¨[.<(+!&©ª«¬­®¯°±]$*);^-/²³´µ¶·¸¹|,%_>?º»¼½¾¿ÀÁÂ`:#@'="ÃabcdefghiÄÅÆÇÈÉÊjklmnopqrËÌÍÎÏÐÑ~stuvwxyzÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæç{ABCDEFGHIèéêëìí}JKLMNOPQRîïðñòó\ŸSTUVWXYZôõö÷øù0123456789úûüýþÿ7-./% <=2&?'@O{[lP}M]\Nk`Kaðñòóôõö÷øùz^L~no|ÁÂÃÄÅÆÇÈÉÑÒÓÔÕÖרÙâãäåæçèéJàZ_my�‚ƒ„…†‡ˆ‰‘’“”•–—˜™¢£¤¥¦§¨©ÀjС !"#$()*+, 01345689:;>áABCDEFGHIQRSTUVWXYbcdefghipqrstuvwx€Š‹Œ�Ž��š›œ�žŸ ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÊËÌÍÎÏÚÛÜÝÞßêëìíîïúûüýþÿibs=obs=cbs=bs=if=of=skip=count=conv=,ebcdicasciilcaseucaseswabnoerrorsyncbad arg: %s cannot open: %s cannot create: %s counts: cannot be zero not enough memory readwrite*bkwxöìÞèönot a number: %s %l+%l records in %l+%l records out %l truncated records %s: %s Unknown errorüÿðÿýÿøÿ‰‰‰‰B$7~æ7xæ7ræ7læ7fæ7`æ7Zæ7Tæ7Næ7Hæ7Bæ7<æ0‰‰, 4 D ^ n v € š ¬ ¾ Î Ú ì ü   . @ L ^ n ~ Ž   ´ È Ú ê ú  ¼½¾¿ÀÁÂÃÄ€¨ ð€&Ð 6÷ –% ‰/dev/rk2/dev/rp0w �W-õ@À ð µ ÷õ õøÿu-øÿW- @øÿÀ @mæ ß Ö @øÿÀ @mß œµ øÿâw0w  fß 6Ö 7ú!÷ ö!Næ ß Ö ÷ ÎΨ æß ¾Ö 5 øÿ÷ $À µ øÿùNøÿæ ß Ö Î®!ß wÆw ´÷ œÀ˜5öÿõ öÿW-öÿdÎ ß  D@öÿÀ 5® øÿõ øÿ 9À\Àe@-øÿ‡w-øÿN ‡Nøÿæ0 ß Ö %÷ 8@Àeöýføÿß ¾Ö wöý5 öÿW-öÿd @öÿÀ AöÿÁ Aapøý® µ öÿï@øÿww üÎfæÜ ß v–%ÎfæÊ ß T–%5øÿÀ%NæF ß Ö ÎÀ"føÿæV ß –%÷ Žw²w  €wŽ DÄeÀŸ„ · ~  %ß Æôw„7 j 7 ` ׯ` -· X · V ÷,²"7 N  .÷°"ƒÓ ÁˆBÝ üJ¨dîofeÖcàs´l Ó•-÷ 6 r f÷ ðÿ€Àe0�‡•à •$ÁÌ“”C~÷ fWtýÿÁEà÷ ðÿ€ÀEøÿÀe0�‡Â ÷  Â–÷ –‚Ò Â ƒó‹ÿÿà ùÎ ÁpÁàŠ�`wp÷ dß Æ÷ `û·XΟT· Nß Æø÷ F ÷ :Î ß Æ÷ 2ûwœþ7 $ ÀŸ· Àå0 ‚· Wp `ñÀe0[ƒÄeÓ•?‡f…@÷ ì÷äwÐw ¾"@�w ¾"×-Êw "¾"@7 ¨w¬f…wœw ¾"7 ’w–f…@‰†w~ w€f…w0w,‰n †w^wbf…@ww‰t †w<w@f…@wøwô‰z †w wf…$‰wf…@‰7 ÀÿÿF…‡Õ @…&æ¦äHÅåF‚ƒ„…‡fA7ž‰€ ‡  �…Ñÿÿ�±…fAñ &÷ €ø9�± �…&fA÷ �€…@Àe&7jwf·ã`@‰¢ ±ñ‡ %s cannot open %s %l bad free count bad free block (%l) read error %d count = %d; errno = %d ‰‰‰‰¶w w&w jä€Àw `ä…‰ö —%Ö ·‰òZi‡ÀFÀEÿŸ @b÷èÿ‰[‡7Š]@‰‚R‡À P÷ :ôÂÜÿÃö“”þ„à ׬ÿÿ/Ó•/“”þ‰öZ9‡÷5`äÛ„ҋþâ• Â僷À‰„ ‰”×­î Ä ‰•×­ß  ‰”×­Î ã÷×­Äx×­¼yÚ ‰ö‡§‰À‰ô‰.? V(ª÷…Ö Å ÷‹nw  ‰ÀØ€¢-¬a· èé¬så÷ ÚâÁ€”þÁ 7 Â÷($÷(V‰(÷ ÷ ²΀w âˉ€ä‡÷EÿŸf÷5 ` ‡Â(ÃP· ä†Ò û w ¦‡· ‡÷e‰Ò·À÷%@$÷ ®w ~‡÷ ¤‰€†‡&f€‰ #‡À !÷ õ×-.ñ×-..÷ êÂ�Ñ•/W¬þÿ/Á ‘”þÁ æ÷ Dÿƒe×� Š€‰Ä÷ Ú�w ‡÷ Î…÷ LÀ ÷ p€€”÷ dûÀ ÷ Z…fÅpÄ�kÅeÿD w÷ÿW!‡fÅeÿwøÿ…eD…‡&f÷ …„‡ s f÷ ðÿ€Àe0÷ ‡w ( ‡.fA7v‰V‡  �…Ñÿÿ�±…fAñ &÷ €ø9�± �…&fA÷ �€…@Àe&7Bw>·ã8@‰x±ñ‡‰¶w w&w ’ÿ€Àw ˆÿ…‰²d  ð€&Ð 6÷ (–% ‰i/dev/rp0/etc/ddate/dev/mt0w ’ κ)ß ÎW-õ õ@À  µ ÷õ õeuøÿ@Ÿøÿ_„@øÿµ øÿ’gÎ ß †÷ ª ædß „ Ö 5ôÿ@ôÿ Îæ¾)fôÿß ¬–%Nôÿß 2Ö@ß êWp w&õeõ Å· Ð( 7Â(7¼(¼õ`Tôÿõ„ôÿ÷¢(¤(÷ž( (@ß êt5öÿõeõ @öÿ w-ôÿv(ƒ÷ n(wíôÿj(õ öÿñ�÷ ø0d hžiÐsòu’_|W-Î$ ß †÷ °@æ> ß †Ö  @&ß „ Ö 7ú!Àö! @æD ß †Ö ÷ nÎT ß †Î¾)ß À÷ Öβ!æß èÖ À²t& ß $Ö t ß & 7š!Ä–!5 òÿ5 ðÿ5 ôÿw-ôÿ€;†Îº#fôÿÎeß èÖ Ãº#× º%*†À#Àœ ÎÀœ&ß $Ö 5öÿ÷,H'‡÷,@'÷,:' ‡µ òÿumöÿðÿ@öÿ€ ÄeÃe Óµ ôÿÁNðÿfòÿæl ß †–%÷ ’ĺ#ß .ÔäÔâÔä&Ôâ&Ôà&ÔÞ&Ô&κ#ß LÀÀt& ß $Ö 5ôÿÄ® @ôÿõ ôÿÀ ß |ÄeôÄ’ 5 ôÿw-ôÿ„†Îº#fôÿÎeß èÖ Ãº#× º%†Îeÿÿæß òÖ ÄeÃe ïµ ôÿÝÎR&æ€ ß †Ö ÀF&Îæ~ß „ Ö 5ôÿ@ôÿÎæº)fôÿß ¢ –%Î’ ß †Îº)ß Àww @ @Π ß †Nß ~ ß †wêw ØÄº%Cß .@Àe À †ÔøÎº%ß Lý5 @ά ß †W@Àe@Àe!8†3ý5 κ'&ß èÖ Ãº'× º)†Àõ @$κ%æß èÖ Îº%ß |Ãeéõ @κ%&ß èÖ Îº%ß |ÄeÂ@κ%ß .õ @κ%ß |ö· à$wôw âÎfæ¾ß N –%Îfæ¬ß ¬–%À% Næ¶ ß †Ö ÷ w®w œCÄÄ À  úw�w ~Äÿ BÄ À ƒdúÀ 3Àà Nß |w`w NÀd&· `&À-~†ÎÆ ß †Î&$ß 2÷ @7B&À% À8&÷ �ó7 ,&÷ �Îfæô#ß ¢ –%À%ÎÔ ß †÷ bwòw à @µ ’× 0ö× 9óWp Á`ÁeÐÿDëw¸w ¦ÎffÎEÿß ¶ –%ÀÎ'„ wŠw xÎæªß „ Ö 7X#ÀT# Ζæâ ß †Ö ÷ ÆwVw D€w^%DÄeÀŸT% · N% %ß Rôw(7 :%7 0%ׯ0%-· (%· &%÷,î+7 % .÷ì+ƒÓ ÁôBÝ üJdZo€fŠeBcLs l Ó•-÷ 6 r f÷ ðÿ€Àe0�‡•à •$Áœ$“”C~÷ fWtýÿÁEà÷ ðÿ€ÀEøÿÀe0�‡Âp$÷  Âf$÷ –‚Ò Â ƒó‹ÿÿà ùÎ Á@$ÁàŠ�`w@$÷ 4$ß R÷ 0$û·($Ο$$· $ß Rø÷ $ ÷ $Î ß R÷ $ûwœþ7 ô# ÀŸê#· æ#Àå0 ‚· Ü#Wp `ñÀe0[ƒÄeÓ•?‡f…@‰†wª w¬f…@‰f…@÷ œ#÷”#w~#w ®ú+@�w ¢ú+×-z#w ´ú+@7 V#w^f…wJ#w šú+7 @#wHf…@w<w8‰ô †w"w&f… ‰¦BR‚wf…÷ Þ ÷Î)Ø ÀÐ ‰Î) ‡À À 7À Àß¼ · ¸ …‡7ä$ 7 ¨ …‡f…÷ÐÌwmƉú †w¬Àºwm´w¦f…@w¦w¢‰!†w€ w‚�¦B@$ü‚‚Yf…wzwv‰!†wNwRf…@w^wZ‰ !†w,w0f…$‰w&@…&æ¦äHÅåF‚ƒ„…‡7$ÀÿÿF…‡fA7‰!‡  �…Ñÿÿ�±…fAñ &÷ €ø9�± �…&fA÷ �€…@Àe&7ÞwÚ·ãÔ@‰4!±ñ‡ESTEDTw LÿNß ˜ ß œ wDÿw 2ÿ @ÀeòÿL@4Àš &ß Ø Ö ß ¼ ÂÀ†×, J×, J— — ×, ÷UXõÿÿøÿõoöÿÎwæß | Ö 5øÿÎ/æß | Ö 5öÿÀ& µ øÿµ øÿ×,µ öÿµ öÿ×, Î&ß Ø Ö ß ¼ ³ Àw`þw NþDC ß H @mÀe“þÁím Áe¼À rfÀ€åw þw þ΀p@&fß ¶ –%Ã6"Â.ÁÀ r<RÁÀ r<ÁÀ r<RÁÀ r<À rWtC`À rÒÁeÀ rwÚ!ÃFÎß H !Îß H àƒ õ÷º!7º!Îß H À%n÷Ô ÀÀ ,:!ÀÀ ì:!ƒ õ÷¶€ Ò7 €!À.w@ýw .ýÄÎ+Ã\!À”�üAA WpÁev!CÄÎ+Ô”Ô”Ô”„ @Àe�WpÁeŒ!CÔ”Ô”Ô”Ž&ß l Ö ŽÎed&ß l Ö ŽÎed&ß l Ö ŽÎed&ß l Ö Äe@ &ß l Ö ÀÎ+w”üw ‚üAÀ rÁ ÀnÀmwpüw ^üD„ W- C —r �À r Áe0T�Ô• AÀ r Áe0T�w&ü€�6rwN ‡€�6r@‡f…@õ Á P`Hm` …‡".˜:bad character in key no file system specified %s: cannot open %s incremental dump from %l files %l blocks %l phase errors date updated the epoch special read error %l change tapes write error can not open %s ‰‰.‰‰‰‰¶w w&w öè€Àw ìè…‰PFv z Day Mon 00 00:00:00 1900 SunMonTueWedThuFriSatJanFebMarAprMayJunJulAugSepOctNovDec@. ð€&Ð 6÷ –% ‰w Lõ õøÿu-øÿu-øÿÎ Î @øÿÀ @m&æ ß `–%µ øÿåww €wÈDÄeÀŸ¾ · ¸ %ß ôwæ7 ¤7 šׯš-· ’· �÷,2 7 ˆ .÷0 ƒÓ ÁÎBÝ üJîd4oZfdec&súl Ó•-÷ 6 r f÷ ðÿ€Àe0�‡•à •$Á“”C~÷ fWtýÿÁEà÷ ðÿ€ÀEøÿÀe0�‡ÂÚ÷  ÂÐ÷ –‚Ò Â ƒó‹ÿÿà ùÎ ÁªÁàŠ�`wª÷ žß ÷ šû·’ΟŽ· ˆß ø÷ € ÷ tÎ ß ÷ lûwœþ7 ^ ÀŸT· PÀå0 ‚· FWp `ñÀe0[ƒÄeÓ•?‡f…@÷ &÷w w Œ> @�w €> ×-w ’> @7 âw<f…wÖw x> 7 Ìw&@…&æ¦äHÅåF‚ƒ„…‡7¼ÀÿÿF…‡fA7n‰ ‡  �…Ñÿÿ�±…fAñ &÷ €ø9�± �…&fA÷ �€…@Àe&7:w6·ã0@‰( ±ñ‡%s%c‰¶w w&w šâ€Àw �â…‰@tÎ —¯-· ¦$w Üw l 0‰ ‡0‰š0‰‡0‰˜· < 0‰7 *7 T*7 j$÷ @$·\$„7 ÷  Ô ×¢-· ÷  öÁZ*š*Ò’Ñ”ý÷$$º$÷ ¨$w@w,w P0‰˜ ‰7 Œ$w P÷€$²w øW ûÆè#÷ p$ 7 j$÷Ø#j$÷Ò#f$wˆ÷ X$ÿ‹„ĸ#Ô 7!´# ‚Ì5ùÌ 7¨#÷Þ*d w ò÷ œ#À‰,7 ($w Ž· $÷ $ $÷$$w XD;N,\÷-î#X#¡‚÷æ#R#w X›÷Þ#Ú#æw *r“aöcde f†gæi6klìmŽnbpboÈq’rÌsövêw¼=V!t Êw pw æ W DCw p× s· ’× v87 †wÎþw þw N&w ôw Dw N ÷2#2#w àw 0w : ÷#ˆ"÷-„"€"ƒ÷z"z"w ¾w ÷å#÷-ü"`" ‡÷ô"\"w 2f üwfþw6þw ’w âw ÄÄÐ"w ¸w r Z%÷eÀ"÷-¼"¼"òƒ÷¶""äw ¦w ²w V ‰w ˜w  W ØÀ8% 7 düw 6 w À ÷ ¤÷¢w w ‰Z*Á‡7p"÷`"È!7 l"7 f"w –ú üw þw 4w ´ W ûW ¨fw  ÃZ)w š W \w � W ™ÁU€S�W “N î#Šw t W g· ú!7 ô!ww òÎà!Äà!w Ø Îw Ê ÷ Ô! ׯÒ! w – w ² öÀZ'æ²!w *€w èÉ!÷eœ!÷-˜!˜!ØƒÖ w ýwÜüw w nw ΉZ*¶ô‡7|!7 |!÷Z'z!Ä`!w HÀZ%w  7a`!D”?‘^!· Z!×-V!Z) ‡ÀF!‰Z'Ó‡÷Z'@!! ë÷e!÷-!!ÙƒÀ(!ÀåZ'7ÊÀ!‰ º‡À!‰÷ *²w D¯w €w î÷â ð ÷íB ê · æ w & w ĉ�‡&0‰‰‡ üÖ ÷ à0‰˜w L ˆÀŒ ‰Àˆ ‰ ‰¼¸‰¼/etc/mshwÎûw *÷ | ÷-ÖÒõ†÷eb ÷^ Z w~ýw w Xw :ÄF w .w ÷e8 ÷-4 4 óƒ÷. –wÂÃZ%ÄZ'7 , · ( ×-$ 2ƒÔ•\Ô• w ¬ Z'îÀ”  À” "�Ô•Ô•^ä ÁÒ Ñ‹ü  †Ô•\÷ $÷eÎÐ�ÎT’Ô•Ô•-ÈÔ• w L Z'…¦æÀ÷ ƒ‚‡ —ræƒÀ ÷ îÿÎe0”•‡\ > <OIwâúw²ú& æw êw >÷ Fôw ¸ W ûW ìw æ0Ä”Ô 7!�‚ÌEù„7!‚Îew ö ô„¤ ñö  ëÄÞ*–% w \ W à ä‹W \ƒ  T�!B+†ìT� Š· ¸w:úw úw fw œw ÷w ¬÷-œœ‡÷-”–‚ìÁŠÑ ÷ˆ‚€÷~æ·àâw`Þ� Ùâ ÁfÂd÷\ÈƒÓ ÄÔ ÀäÁ ý‚ Ñ Ò · @ò‡Á7 6÷Þ*b÷ ^?ŠZ…w Üw –W ²ƒCw Áw 2 Â:÷e4×-0Ž$‡÷z$&J÷òZòìòE’w Öw âÁz$ÀZ%P”Ñ‹üà• w jZ%w ²w (W wÔ÷Òw öÁš*Ñ‹þá• w <š* Šw ù7 –7 €w ÔÖ÷ ˆB÷ pÕ … À À+À/T?‚-Ê.($00Ø1Þ2Þ3Þ4Þ5Þ6Þ7Þ8Þ9Þ'0 ^8w �®$Èw ˆ¬$ÄÁrw já ww pP%¸wDøw ÌæRÎe·#HƒÎ@·#<„w È·#0îçw žæ$Îå·#†Î·#„w š·#îзœw P%‚÷m’~Æwx…÷ „,· ~wèþææ w† w ÊW 0W 9ÎpÁå0C`ówf÷ 6÷š.à ÷ :7 4 ÷`w˜þwl÷w”÷w ‚w ,÷‚ÄhÃEƒ 7!\øƒêä 7öw ^ÿP%w\þ& Âz$Ê J Ò — Ž$øƒ Ž Ö …Á’$@$W ¦$ûƒ …á …&f Á²ÃZ%w Ó• w :Z%�€… r fw ðÿÎe0“•…÷ x ÷ pÄÆ7!ÄŸ†Ô 7R÷¸N…÷ RĬ7<7:…Ä27!0‰‚w Ä&w …7!‚‡7!~ ‚…÷- rƒ…÷ …w|öwLöw fW pw \· ÞW ò…ÄZ%w HT�W !Z'÷‡å×-Ø. ß…×- �J܆] ÄÔ 7w fÓ ÷e#7!üü‚ÀZ%w …ÂäÂ5w Á6�`Ö• w W ù·¾…r�z"‚ Â5ÿÀ:‰ À2‰z" ‡×-øþ†÷eî …À‰* 4TMPæÁZ%ÄEÄEÿ÷z ÎÃEþ7!À7!´÷z"¸ 7¬ÀΉ ÀƉz wš� ƒ Ã5ÿöÄeÙƒ…wõÄZ*w W W ôw W ûW T�!š*ô‡ç!Z* Š÷ ž7 ˜ÃZ*Äš*Ô”þ÷‹´÷…÷‹¬ÑÚ*ÄZ*òÄZ%w T�W !Z'÷‡À…÷ >ÁŸ:· 6Á ÷…À$‰Z'¯‡7`7÷Z'çÀ‰÷ (w Býwjôw ÔýÃàÀFÀ`ÄØáÀå76Ô þw †…÷•aâ‰b Z%†‰b †·ŠÎ×­Êzòƒ#7Œ‰b ‡7~ÀB+7ì7ê7èw <÷ÿÿ>÷Ò7 .Àz$7�  Ž$üƒ…w ü‰À<‰À8‰ ‰b …æ¢ÎeÎEÿ·#·‰ Ö …wwòô$w d w Ìw V& w P, w ¸w bS�× 4%ô‡Š× 3%†Ó•…Ë …w �w :W S�× 4%݇7 &wþw pÕw wÊw † w ZÓ•$× 4%Ƈèw HÁw @ w êW ^ÁŸzÁe�rw ÔW ÑS�× 3%͆w ÂW ]ôŠ£ÿÕLŸ÷FS•× 4%¼†Õ‹…×­š…ÃZ%ÄZ' •פ üÄÄeþ7w ìüÄZ%7 7úô$Á”yXnv”𤬶ÐÀÊÜ7ØÕ …æ&w Ôÿ·ÄÖ õ„ƒ¥ òðÔ¤ÝíÁ”&¥þ ¥ Ôä&¥ ýw TÛÉw JÖÄ÷€7 z&æwn£ ¸ÈÄ æ&w dÿ 7!X6Æe¸„ƒ!í‚Ö ³•W S Ë‹üÕ Õ Õ üÓ‹þ…w�ñw`ñÁZ%ÂZ'ÃZ)w R”ûÀ” & D7!ì÷•— Z)ù‡åÀE€�— Z)ì‡Þ·Ì@”� — Z)ø‡Ò÷®…w DÌ T Ô úw¾……|Á²÷ ~ÁŸª´· ¤  ‰8%‡À ÁXê7 †…w®ò@w 7jwdÀ‰\ … „ ¤ ü…! tmp file ? Editing System *‰Z'‰‰ÿÿÀœz w^ë‰l ^> *Š ^ \r Š .’ *þ $š [ w ÀîƒúÖ wˆî‰/tmp/etmaÝ*z$רÙÚÛÜÝÞ߀ ð€&Ð 6÷ –% ‰w 8Î& & ß .–%w2f…@wÆw‰ †w$ w&@…&æ¦äHÅåF‚ƒ„…‡7”ÀÿÿF…‡‰@ÒJ ð€&Ð 6÷ –% ‰w  5ìÿ5ôÿ5öÿ5òÿµ òÿ@òÿ@-[À @mžÀ%-@òÿÀ @mœÁ 7¤ þy@òÿÀ @m5øÿNøÿß œ À%f@öÿµ öÿÀ pøÿ &Îoføÿ÷ $ Ö &ß Ö 5øÿNøÿæ„&ß ò Ö À µ@ôÿµ ôÿÀ pøÿ„&Nøÿß œ À%o¦µ ìÿ£· þ%· ü%žõ öÿ_Îæß Ö À5Îàæß Ö 5 òÿu-òÿöÿ_W-öÿ @òÿÀ  &æ ß v Ö 7 „ ÷ h$@òÿÀ  &ß ö7X$÷ €%U÷ Œ%RÀ M7 D$μ%æ ß , Ö 5øÿ÷ @ Î: ß Z õ øÿ7÷( $÷, $÷. $7 $μ%æ6 ß , Ö Îo@òÿÀ & &ß Ö 5øÿß Z Nøÿæ> ß LÖ À ÎD ß Z À NøÿæJ ß v Ö · Ö$µ òÿƒ÷ Ì$[õ ôÿX5 òÿ÷\ Š#÷` †#÷d ‚#õðÿu-òÿôÿ@ðÿµ ðÿÀ Aòÿµ òÿÁ p„&¼%î@ðÿµ ðÿÀ ðp ¼%@ðÿµ ðÿÀ ðt ¼%@ðÿµ ðÿÀ ð‚ ¼%@ðÿµ ðÿÀ 0 ¼%μ%æ† ß , Ö W-öÿW-ìÿ ÎoæT#ß Ö ß Z ÷ wH w 6 ÎŽ ß |÷ Ä w2 w ª7 ü#@Àeôý7æ#7à#@Àeîû7Ú#ÎÔ#fß Ê Ö À @_˜Îº#ß À%#ά#ß ˆ @_˜Àœ#° À”#ð @Àeèù7Š#@Àeò7Š#5 RíW-RíÈARíWp Aa1ŠòARíWp Aa1 òµ RíëÎæ– ß lÖ 7L#0Îæž ß lÖ 78#0@ÀeTí7,#@ÀeTñ7#7 #Îif÷ ÖÖ &ß Ö 7ÒÎð"æÊß lÖ À Î¼æ¦ ß v Ö ÷ ¼þ÷ tÀ (÷-¾"À"μ"æß ¦Ö W­Tñ#÷ª"¦"ÿ‹¢" Κ"ÀŸ˜"&ß ¦Ö · Œ"ò΄"æ ß ¦Ö ÔÎt"ß ÖÎl"ß ˆ Î`"ß ˆ À:wŒ w z ÷-H"H"· L"÷F"B"?Š>"5 ôÿ÷ ¾5øÿÀ%#õôÿW-øÿ _Îõ øÿ_ÎW-øÿaW-øÿzW-øÿAW-øÿZW-øÿ__õà!ðÿNøÿß "÷ Z5øÿÀ%a zòW-øÿAW-øÿZêW-øÿ0W-øÿ9âW-øÿ_Ý ß "÷ Ž!Nôÿfðÿß lÖ 5òÿW-ôÿ#7 z!õôÿ w-òÿl!õôÿ˜Î¶ ß ìW-øÿ _äõ øÿ_ä÷ ¼5øÿðW-ôÿ€@òÿð,!÷  5øÿÀ% À ß hó ß hÀ_è@øÿ5öÿÀ%' "RNöÿß "õÔ îÿ· À ÷ R5øÿ@-öÿ À ß "W-øÿ\í÷ ,ß "ç7 Š W-ôÿ*?ŠŒ ÷ 5øÿÀ% À ö÷-l n ÎÈ ß ìÎ` fîÿß Ê Ö À NîÿæÚ ß ìÖ _ä÷< 6 Nøÿß "÷ ¸5øÿ_Ð ß "W-ôÿÎê ß ì@øÿw< w * Î æú ß v Ö Nfß v Ö Î ß  · â· Îw w ôÀÌÀeÂÀ-ÂÎ!ß ìÀ´· °H�ÀªÀeÃÀ- ƒÀœÀeÃ7’wÀw ®À’· ŽH�wªw ˜÷ €_Îõvøÿ7 p_7 h÷ v5øÿ@øÿÁ!7` þy +÷ V5øÿÀ%/í÷ H5øÿÀ%/÷ ÷ 47À%*ÖÀ/÷-ôôÑÎòæ ß ¦Ö · êÇ@øÿww üÎÊß 5øÿ÷-¼¾Î¸ß ˆ ÷®ªÎ¬æ ß ¦Ö ÷ Äÿ5øÿõ øÿ @øÿw¼w ª uøÿ5 òÿ@øÿµ øÿ’5ðÿ5`òÿõAòÿÀ 7rfuòÿWp ÁmVuôÿý‹ôÿ6uôÿöÿuøÿ@öÿµ öÿ=¢øÿ@øÿµ øÿÈ‹@Àe@-øÿìõ 4Nôÿfß \ Ö ,ÁWp ÁmöBôÿõe ôÿB ˆõäôÿÇõ 5 òÿW-òÿ @ôÿ@mòÿHŸµ µ òÿðý‹µ ú@ôÿwÌw ºwŽ@5øÿÎ ß "ý‹øÿ@øÿµ øÿ’ôÎ ß "wŒw z5 øÿuôÿ@µ 5’öÿ W­öÿ/5 øÿòµ øÿïõåW-øÿW-øÿ @µ ’À%.@Ÿ w(w uøÿ@µ È‹ù@p�þÿ@øÿwüw ê÷ €5øÿNfß ž Ö Næ!ß v Ö Îß ¶@Àeöÿß –@-øÿ÷ W-øÿÿÿòÎ.!ß v À_Ä @öÿÀEÿ5øÿ   Næ:!ß v Ö ÷ (ø@öÿtøÿÀEÿw`w Nõ.øÿÀ(· $Aµ H’õ@øÿw6w $Nß œ À%o%uöÿ@õe5øÿuöÿ@µ 5’ôÿ@øÿµ øÿ5¢ôÿñ@øÿµ øÿÈ‹à ÀwÎw ¼õ  Nß |w²w  €wŒDÄeÀŸ‚ · | %ß  ôw„7 h7 ^ׯ^-· V· T÷" '7 L .÷ 'ƒÁâ BÞ üJ d\ oV xŒ f– e4 cB s l Ó•-÷ C r f÷ ðÿ€Àe0�‡•à •1à /ÁÄ Ò‹ƒ D~'ÂN!ÂR! ÷ f v÷ öÿ€€LÀe0 9Àe�‡Â‚÷ zÂx÷ p‚ƒà&æ Ä ÃmZ÷ Xß  Ã~Ä Ž”ß  à Î ß  Ã~Ö „w¦þ7 , ÀŸ"· Àå0 ‚· Wp `ñÀe0[ƒÄeÓ•?‡f…Àø÷ ,ÀîP�· ä÷ Þ÷ @…‡f…÷ …‡À Àå'7úÀ°€ ‰V!÷'¦÷ž×-˜‚÷�‡f…@‰†wr wtf…w¶w²‰\!wTf…‰†wF wHf…w�‰b!7‡A …‡7 .f…A÷ &÷ À€U…‡f…A÷ …‡ñ @Àe7D1@‰h! ‡À À 1 @Þ± ‡w¾f…ww‰n!†w¤ w¦f…wAɉt!F‡  Df…@A&÷ €À÷ 6f…@A÷ @+ñ 9�± ‡&÷ €óf…A÷ @Àe&7Œwˆ·ã‚@‰z!±ñ‡wø7 …‡f…Aw¤w ÷5˜WpÁez!W €! ‡W È! †ñ~wx‰È!‡w´Àw¤f¦æ&Ø „ƒ‚�€f…wJ‰Î!†wz w|f…÷ "&‰†Ö w`Ö }w\f…@‰Af… w,üÿ.Àw"(Àe w"Àew"@l€ …‡ß Ö –%Æe7 ÀÿÿF…‡Õ @…&æ¦äHÅåF‚ƒ„…‡Ô!Ècpìèl%s: fc1/usr/fort/fc1as-f.tmp1/bin/asa.outa.outmove failed: %s ld-x/lib/fr0.o-lf/lib/filib.a-l/bin/ldf.tmp1defineincludeCan't creat %s Undefined controlNested 'include'Missing file %sControl syntax%d: Line overflow *¼öÀ Can't find %s Try again Fatal error in %s üÿðÿýÿøÿ‰' ‰‰‰ ‰‰¶‰7âí7Üí7Öí7Ðí7Êí7Äí7¾í7¸í7²í7¬í7¦í7 í0‰ ‰âãäåæçèéêë@^4 ð€&Ð 6÷ –% ‰w *BW- ß ÎÀ%xÎ æ æß "–%Î& & ß þ–%1 & & ß þ–% ß ª7ø@Àeºÿß ¸À Îæ æß "–%@@Àeºÿ&ß XÖ À á æT& ß þ–%wšw ˆ5 öÿ÷ Ð5øÿÀAW-øÿ: W-øÿ @øÿ÷ ª5øÿôç÷ ž5øÿÀ% øW-øÿ W-øÿ @øÿ @öÿµ öÿ@mH�øÿ÷ h5øÿèW-øÿ ÷ V5øÿ÷@@möÿŠ wúw è5 öÿ@@möÿAAmöÿ ¢À @öÿµ öÿ@m’ èw¼w ª· `÷ w¨f…@)‰†w¨w¬f…w˜÷ –  ‰f ‡À À�ˆÀEÿôw ¦` ‡À ú 7 dwlf…@ww‰ †wF wHf…@wøwô‰& †w"w&@…&æ¦äHÅåF‚ƒ„…‡7 ÀÿÿF…‡fA7¶‰, ‡ �…Éÿÿ�±…fAñ @Àe7°1@‰R ‡À �±…À 1 @Þ± �…€ ÷x´æ ‰h""‡Î‚‰X ‡@‰h"‡ Àh"$ô$ttñ¤yîЋì¢é7˜l@‰Ö À�b‡goto error label not found ‰‰‰www Rↅ&w FâÀ€U…‰/dev|„  ð€&Ð 6÷ –% ‰w D@À @m wÔwÐ÷ÆW-÷ ZÀ  ß RÀ Î æ|æß Ø–%Î& & ß ”–%wôw â÷-~~ Àr· nÀ ÀmlwÌw º÷ 05øÿΈ÷ Âÿ&ß Ö À ÷ Úÿ@]øÿ÷ 0@øÿw’w €÷ 45øÿÎŒ÷ ˆÿ&ß Ö À ÷ ÚÿAøÿA @@÷ ò@øÿwTw BÎ�÷ Rÿ&ß Ö À ÷ À  À÷ ¸÷ ww 5 öÿ÷ ÿ_¼Î’&ß Ö À ÷ $ÿ5øÿΔ÷ ðþ&ß Ö À _¼@øÿ_ÖΖ&ß Ö À  ÷ Âþ&ß ÚÖ _ÖΚ&ß Ö À Î÷ žþ&ß ÚÖ _ÖΞ&ß Ö À ÷ ~þß _Ö΢&ß Ö À %÷ JÀ @Àeöÿß ¸Îß RD÷ @þ Τ&ß Ö À óõ öÿ À<÷ þ5øÿõ øÿ(Φføÿß Ö À ÷ öý&ß Ö $Ψføÿß Ö À ÷ Ôý&ß Ö À  À Î æ¬æß Ø–%Î ß úw’w €Nfß vÖ 5õ Nß 4À w^w LÀwNw < @aAa ¢ „ @mÈ‹Àìww j ÷ ý5’ÿõ  ζf’ÿß Ö À „ À @ap’ÿ–ÿçõ  θf’ÿß Ö À À _0À @a0 –ÿÄ @8@Àe–ÿ&f–ÿß J–% õº”ÿ@–ÿÀ`’Àƒ @m”ÿ°� ô@”ÿÀ`0Š @Àe–ÿ&f”ÿÎeß J–%@Àe–ÿ&f”ÿß J–%Àw8f…@‰†w  w f…w–w’‰èwìf…‰†wÞ wàf…wpwl‰î†w¾wÂf…@wTwP‰ô†wœ wžf…÷ D&‰†Ö w‚Ö }w~f…@ww‰ú†wXw\f…@‰Af… w,üÿ.Àw"(Àe w"Àew"@l€ …‡ß Ö –%Æe7¶ÀÿÿF…‡Õ @…&æ¦äHÅåF‚ƒ„…‡no command -o-a!()-r-w-c{}=!=if error }}/usr/bin/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ‰‰‰‰°„Ö Ä 1… W£-… 7 0@• Àå0 ‚×p `õ÷ à × ÷àÀ%‰ ܆À÷ À‰” ÓÀ‰ Í‰ r fÀ ÷ îÿ€Àe07(À‰°‡: not found non-numeric arg ¸ v0‰ ‡0‰Ü€À ‰7î ·ì w Ðw ¸ú‰h ¶†7 æ w è ‰7Ð Å.)w!P †W- õ 7â Ž 7Ú ~ 7Ò † 7 > Åe äÁ& ÷ 6 Áe?ÁE?w ÁeÿÁEÿ Cƒ` ÷  ÷  Å.)w!à †W- @ 5 õ` € ÀE`õ'Åe è7a Å.)w!¨ G†÷  ÷ ¶ +W- 'õ $7. Ž  õ$õŠ 5á 7 ~ õ"õj 7ü † õ#õV W-# W-'õ$µ` 5a u` Åe ¶wF ÷D 7a@ ÷ | ÷m  ÷å.) ÷  7  w 6@˜ ÷eT w (Fª ÷ ð w R¬ w Xª w L¬ ÷ Þ ÷ Ê w 4Z ÀÌ 7 ¸ · ´ æÁ¨ ÷ ® 7 ž @÷ ¦ € w î@@w æ@Î úÖ 7 v 7 t 7 r ? Z ÷^T w Bw Êúw Þ@w ØF÷ T w ÌRw ÆXÁ.)w $ †W, ñ @7 � w Zn ÷ " Áe êÂ@w dL úáw ~L ‰b ‰h b †7 V w Xs ‰ ‰h ‰b ÿ‰ ‰h ‰÷Ä à ÷À Ü ÷íâ Ö ÷¶ Ò ÷íÖ Ì ÷íÔ Æ ÷  7 fæ† Å^w 0 ä w F8…×- ÷ ’ ö÷e Ö òw 0, ê×-Ú "ð ã· º ×-È ÷ ® 7, ¼ ×w :×-¬ Ïw @ðž ðš Å÷  ÷ x ·ôW!^4ƒ- ûÖ ÷ ÷m  ÷ ðw ZZ ÷ôâ÷m< ØÀ¾ ^‡w >Ÿ wÌþÁ( Á W p Á�xPв÷U 7ˆw ……÷Œ¨ÀªÀm„Àí¨7šÀœÀmvÀí˜Àí˜7ˆfw Ø0 ä Å^æÿÿÁÄÑ‹þw ¼ƒW¨/úÑ‹À$ P”á‹ , ú‡÷ª÷B¦÷ .w xw Ö1…w ,Ž ×-Š ‡w ÈÌ w rG î×-r ÷ æw @ã7,X7, Rw ½ W!^!‡w 6Ð wÄý•ÌwÖ w 0 Ò w 8Ü ÷– w X ÷ –w èRÀw à@òw ì0 Ö w ä8à À„7ÖwÂ…w  ÷ \w ®XÀw ¦Fòw ¾…w 0 G…Õ w 8„w šæ ‰ÂEÀEðÿ .ƒ¡ ‚ ‚ ‚ w 6- Äå.)ÄmVf s uQ…m Âå!ÀEþÿ Ãm¬ Ãí¢ €Pƒnž À5Ãí…Á$ æ@w öLÎ úÖ …AB·À艀ÀUÿ€ ÁefÎe!¡€äà¡·€"€7¡w …w wÀ ‰‡7 øÿ…w šü wLüAÑå²…B‘ †€±üÿ…wÀd‰Ñew@øÿÀe À7w �ÿ@qøÿ…ABÀ €b7ÀEþ@`Àe@Àe‘…f¦B�J †bÒ &w šâe‚�…B’$�wÀÒ‰ÁEþ�`w€âUÿŠ ¢(�â w Àª‰…Á$ @@d@d@d rèDÄ Äe^! Á$ P$P$P$P$ä …!.)ï‡Ä^!ìÀâÀe 7 ‡Àeô7‰.)ÀÈ Á$ æPÎ ý7´Ö …f&÷ @÷ &À‰} �æw”À‰ Î öÖ �÷ À‰| …÷¶žúfAw”ÚÀ‰ ÷ÁÊ w”ÂÀ‰ ÷�‡æÄ$ w þ0 …Î ùÖ …Ö ²…Á ÷e@* ‚ 7�ÎÀp w Pìw ÉåwÀP‰ÀF‰è ‡  Äè Ñ _ N…w ÷m*¾÷¸À‰À‰ê Äê ÷e˜ 2÷ à…ÁÚÑ wÔW®-w Äð7 n7 ÔÀº7 Âw ¨åÀ¶‰è "K‡Äè a× ø D‡7#,× >‡Ô ÷.€ ÀE7Š4 7~Äe7%*ÁÒ ÂÂe‘`‘`‘ÉBd‘ÉBd‘7 ·7È7ÖÔ w .þŠ …Õ …w "þ8 wÔø@œ u5 l x e& r s nB dB…· v· ~…7 h…· r…÷•aA@œ7�ÿp žÕ … w 7F…÷ ˆ÷e‚À~Á$ æ”Î üÎ ŠüÖ Ñ  w ÀüÌ w üü…· þ…· ö…À`ÀEàÿ †À 7nœ N…Ä^7!&†%Ô ùw ,ýG wÞ÷…7 77À‰‰†w ý' …7ìÕ …÷m¢v÷m r÷mœn…fM$ u$u$u$Ð �€a.outl.outun: Can't move output fileNo relocation bits: Too many routines loaded at: Multiply defined: Too many symbols in: Relocation error in: Premature EOF on: ld: can't create l.out File not found: Format error: Symbol not found: Multiple entry point:/lib/liba.a ;_etext_edata_end^.)˜ È Ê Ì mÿ€P& ð€&Ð 6÷ –% ‰w :W- Îæ æß 2–%Îß èW-@•ý©/@,†÷„ @0ÎR @&ß Ö ÀÎÀEÿŸÀ%@ Îæ æß 2–%Îß è@@&ß òÖ À Î æ2 æß 2–%Îß è ß èwzf…@‰f…wDw@‰> †wf whf…w*w&‰D †wF wHf…@w w‰J †w"w&@…&æ¦äHÅåF‚ƒ„…‡7þÀÿÿF…‡Usage: ln target [ newname ] No directory link Can't link ‰‰‰...arasbascatcccdb check chmod chown clri cmpcpdatedbdcdddfdswdudumpechoedexitfcgotoifkillldln login@hì ð€&Ð 6÷ –% ‰w ¦˜Îæß îÖ Îæß îÖ ÷ @! ß Þ7�(!À%x Îæ æß „–%÷ BÀ!ð�!Äh!W-@!p!†Ë‹Ô”ù5 Îæ æß „–%÷ Î5hÿÀ% õ hÿ÷ æ!p!†T�hÿî!p!†Ô• ú@Àezÿæh!ß ¸Ö À _ž@Àezÿß D×¢:ZÎx!& ß @Ö õf lÿ÷E^ Îx!& ß PÖ Î æ æß „–%@Àepÿ÷ 25hÿÀ% õ hÿ÷ JAÁexÿ †T�hÿëŠwlÿ Îx!& ß PÖ Îæ& æß „–%@Àepÿß ¥ýä‹_žר:_žÎß D5 fÿ×¢: AfÿWp ”�`ÁeÐÿufÿòƒ 5 dÿ×¢: AdÿWp ”�`ÁeÐÿudÿòƒ Îß DÄÎß Dß ¼À Î æ( æß „–%_nÎr!ß nÎæ6 ß ^Ö 5jÿ%À�5nÿW-nÿaõå'nÿ @nÿÀeÐÿt&fjÿß ž–%Îæh!fjÿß „–%Njÿß öÎæ@ ß ^Ö 5jÿÎ& fjÿß ž–%Îæh!fjÿß „–%Njÿß ö æN ß ^Ö 5jÿÎ@Àenÿ&fjÿß |–%À Î@Àenÿ&æß „–%çNjÿß ö æX ß ^Ö 5jÿ Îæ` æß „–%Njÿß öNfÿæ"ß ÖÖ Ndÿß ÂNfÿß ØË‹Ãp  æx æß $–%Î æz æß „–%÷ Îæ† æß „–%_nww õ¾øÿõöÿ æ˜ ß ^Ö 7¦%DC÷ ’5ôÿÀ% õ ôÿS�ôÿóŠC¥ý© @Àe!à‡×¨:Ý5 öÿÎVß ö7 N7 L7 J@öÿwŠw xD£:Ô‹ Îæ¤ æß „–%÷ 8ïŠwTf…÷ ÷†!úÀò‰†! ‡À À 7â ÀßÞ· Ú…‡7Ö 7 Ê…‡f…wò‰¶ †wà wâf…wÜw؉º †wÀ wÂf…@‰†wª w¬f…wr@÷ $7 fw”f…w”@Àe7Œ‰À wpf…@wz‰Æ †wX wZf…wdw`‰Ê †w8w<f…@wHwD‰Ð †wwf…@w,w(‰Ö †wô wöf…@.‰†wÞ wàf…@‰†wÈ wÊf…Aw,w(÷5 WpÁeÖ W Ü ‡W $! †ñw‰$!‡w†Àwvf¦æ&Ø „ƒ‚�€f…@wΉ*!†wH wJf… ‰¦BR‚w4f…@wžwš‰.!†wwf…@‰7ÔÀÿÿF…‡Õ @…&æ¦äHÅåF‚ƒ„…‡€ ÷xÆæ ‰Š#"‡Î”‰4!‡@‰Š#‡ ÀŠ#$ô$ttñ¤yîЋì¢é7˜~@‰Ö À�t‡f¦æ&fÀ´%ЕЕ ô%†P”ûÀ Á´%œÿÿC”Âx�� 4&ø‡Ä´$Å´#æ Ã^! �rB`ÂE Œ\:!× d!†�\>!× h!ð‡ÎåÔ Õ !´%å‡Ö À´%ÂT&ÃT'”ÁE€ÿÁ R´#S´$ 4&õ‡Ä4&ÃÔ'ÂÀT& �0…Š T'ú‡& s>Åe0W!9ƒÅeW!ZƒÅe„T‘!<&ᇅ„ƒ‚�À4&‡/dev/ttyxSorry. Name: Password: No directory /tmp/utmp/usr/adm/wtmp/etc/motdmailboxYou have mail. /bin/sh-No shell. Login incorrect. /etc/passwdBad /etc/passwd ‰‰ ‰ ‰‰‰‰7Zå7Tå7Nå7Hå7Bå7<å76å70å7*å7$å7å7å0‰‰‰/dev @€ @€  @Àâ ð€&Ð 6÷ –% ‰.w "Îß † 7P$õ a@¢-Zõe½ @È‹O@ž,· h#ò· h#· r#í· Z#ê· V#· b# æ ß  Ö 7zÝ÷ÿÿpÙ· 8#· @#Ô· 0#Ñ· ,#η (#ËÊÀåa ù‚À xÂZ®®j®¨®®¢®®p®®®®®Š`’œ«õ ÷ Þ" · Ê"7 Ê"7 È"7 Æ"7 Î"õ µ õ 5 øÿu-øÿÎõe@&ß tÖ LôUµ øÿçήæÁ¦Áå¢&À r&æ¢&ß : ÆeŠĢ&!G†ô5€÷ :"÷ @"7W-æ ß ˆÖ ·Vß Â÷ "ήæÁ>�àÀ r&¦ß : Æe÷ ü!Îô!æ ß ˆÖ ƒ÷ †Îß Ãe÷ß Äe·÷ Fw w D-ÿÿ_V÷  !æ& ß ˆÖ ÷ „!dß Dœæ, ß ˆÖ @Àeêÿœ&ÎEÿß ZÖ À @Àeêÿæ2 ß ˆÖ œÎEÿæ: ß ˆÖ ô5`œÎEÿœ&ÎEÿæ@ ß ˆ–%œ&ß ¬ Ö æH ß ˆÖ Îeß È ÎeæL ß ˆÖ ÷ ¸ œ&ß Ö æX ß ˆÖ ô5æ^ ß ˆÖ æb ß ˆÖ wÚ w È ÷žZ & æRß h –%7 J5 òÿ5 øÿ5 ôÿÎÀ!ß Ö 5öÿÀ% )õ öÿÀÿÿ0W-öÿ:µ øÿõ0öÿõ øÿ@òÿµ òÿ@mH�öÿW-øÿ AôÿWp AmöÿÁeÐÿuôÿÎu-ôÿÄ@òÿµ òÿ@mŠ w. w  Îffß –%õ5ÿ„ !Àeÿtøÿ`wðw Þw†ÄÊ !Þ †ß fùwÎw ¼CÄÄ Ó=\ÀùÎß  wªw ˜Äü#CˋԔüÔ•/C — Ô”‚ ú ŠÀü#wrw `ÎÀ!fß š Ö À _ðNæÞ ß ˆÖ _p7 äÄ`$ × ÎÀ!ß Ö �ƒ ö÷ Nð÷ ®×­D.é×-:ÿÿ æb$f÷ Rÿ–%&ß tÖ —,ÿÿò × €À`Èœb$ƒ ÷ÆÎTß p wÀw ®&À†ÀeÀ-€‚Îß ÷epÄj÷ed4 4 õ ÷ (_¦@ÀeÖÿfß Œ Ö À Næî ß ˆÖ õÿÿØÿ5Šßÿ5 àÿ5 Úÿõ ÷å  _ªtØÿõE‚Úÿ@ÚÿÀEÿŸÀ%`õE Úÿ @ÚÿÀEÿŸÀ%@õE`ÚÿõU€ÚÿtÚÿt�Ýÿt�Þÿt�Üÿt�ßÿtàÿô5`÷ ^tâÿtöÿtøÿ÷ LtòÿtôÿNàÿ@�ßÿ&ß Ö 7`2w†w tDC÷ ÀEÿ}À%‚ ÀÀEÿ}À%‚ÀP ÀÀEÿ}À%‚ÀÿÿE÷ Ð ô,ƒ‚ ô,†Â ô,ƒ‚ ô,†Â �wpÊ@%ô5ó5Ãà — •Á”@à5øÿô‹ÿÿÁŒupøÿ@‚ ì w¬w š€wàDÄeÀŸÖ · Ð %ß  ôw~7 ¼7 ²ׯ²-· ª· ¨÷r$7   .÷þp$ƒÁôBÞ üJddoŠf”eBcPs l Ó•-÷ ; r f÷ ðÿ€Àe0�‡•à •)à 'Á Ò‹ƒ D~÷ fWtýÿÁEà÷ ðÿ€ÀEøÿÀe0�‡Âê÷ zÂà÷ p‚ƒà&æ Ä ÃmÂ÷ Àß  Ã~Ä Ž”ß  à Î ß  Ã~Ö „wºþ7 ” ÀŸŠ· †Àå0 ‚· |Wp `ñÀe0[ƒÄeÓ•?‡f…@÷ X÷PwÌw 4z$@�w (z$×-6w :z$@7 ¤wÄf…w˜w z$7 Žw®f…@‰†w– w˜f…@)‰†w€w„f…wZ‰ü 7‡A …‡7 Ðf…A÷ &÷ À€U…‡f…A÷ …‡ñ @Àe71@‰! ‡À À 1 @Þ± ‡wúf…wäwà‰!†wàwäw èw –w’AupNNmfß h Ö wÌw º Âl@@í5ôÿ€ _Ê �Á fAôÿÀ rBpuôÿ@@môÿ5øÿ5öÿD@€à5!øÿ†føÿ&ÿ –%5òÿ µàøÿ@øÿ&ß Î Ö êõ òÿ„`åõ öÿ3ƒæföÿÿ Þ–%5òÿ ε`öÿ@öÿ&ß Î Ö êõ òÿ5!øÿε`öÿ@öÿ&&ß ò –%µ`øÿ@øÿÔÎ&ß Î Ö ƒà„`±ƒàÊ5!øÿ$@øÿ@íAAíöÿ ‡NföÿŽ`ß h Ö uøÿ Nøÿfß h Ö @öÿ€`5_r µàøÿ@øÿ&æß ò –%µàöÿ@öÿ_¸ wfw TõøÿDC“Ô’“�õ øÿúwBw 0õâöÿDCB5“øÿ”’Ò’S�øÿõ öÿ÷wf…÷êæwmà‰!†wÜÀÔwmÎwÖf…w¾‰!†wºw° w¶f…@w wœ‰!†w� w’f…w†w‚‰!†wp wrf…&æ¦Ä€&CB€  ‚ Ô•-÷ ŠÀ€&‚ƒ„…‡÷ Áe0f—v÷ ìÿ”•‡ À —vA W ‡Áå ƒ ~‡7rÀÿÿF…‡Õ @…&æ¦äHÅåF‚ƒ„…‡fA7Ö‰ !‡  �…Ñÿÿ�±…fAñ &÷ €ø9�± �…&fA÷ �€…@Àe&7¢wž·ã˜@‰B!±ñ‡ESTEDTw ZÿNß â ß æwRÿw @ÿ @ÀeòÿL@4À^ &ß "Ö ß ÂÀJ×, J×, J— — ×, ÷UõÿÿøÿõoöÿÎwæß ÆÖ 5øÿÎ/æß ÆÖ 5öÿÀê µ øÿµ øÿ×,µ öÿµ öÿ×, Î&ß "Ö ß ³ Àwnþw \þDC ß ’@mÀe“þÁím Áe¼À rfÀ€åw.þw þ΀p@&fß –%ÃxÂŽ&ÁÀ r<RÁÀ r<ÁÀ r<RÁÀ r<À rWtC`À rÒÁeÀ rwÃFÎß ’!Îß ’àƒ õ÷ü7üÎß ’À%n÷˜ ÀÀ ,H!ÀÀ ìH!ƒ õ÷z€ Ò7 ÂÀŽ&wNýw <ýÄà#Ãj!À”�üAA WpÁe„!CÄà#Ô”Ô”Ô”„ @Àe�WpÁeš!CÔ”Ô”Ô”Ž&ß ¶Ö ŽÎed&ß ¶Ö ŽÎed&ß ¶Ö ŽÎed&ß ¶Ö Äe@ &ß ¶Ö Àà#w¢üw �üAÀ rÁ ÀnÀmw~üw lüD„ W- C —r �À r Áe0T�Ô• AÀ r Áe0T�w4ü€�6rw�‡€�6r@‡f…@õ Á P`Hm` …‡ÿÿ¢&¢&/etc/passwd %s: total %d %5d %2d %-6.6s%-6d%3d,%3d%7s %-12.12s %4d %s %.14s €d@b c-r-€w-s@x- r-w-sx-r-w-x-j z ‚ Š – ž ¦ ² º  %s unreadable %s not found ‰‰‰‰¢&‰‰‰¶w w&w 2ì€Àw (ì…‰PFÀ Ä Day Mon 00 00:00:00 1900 SunMonTueWedThuFriSatJanFebMarAprMayJunJulAugSepOctNovDec   tÈ"  ð€&Ð 6÷ –% ‰w â W-_ÆW- @žÀ%-_ÆÎ<ætß   Ö À Î€ß p÷ ‚  ß – 5êÿ; æšß 0 Ö 5ìÿ2ÎæBfìÿß N –%À '@êÿÁ�® Nìÿß l 5 ìÿW-ìÿ@ìÿœBÀ% @ìÿAìÿpœBnµ ìÿë@ìÿ0Šn=Î÷ < 5êÿÎnß zÀ $Î‚ß zÀ 뻧 zÀ Î‚ß zÀ Î‚ß zÀ Î‚ß zÀ Î‚ß zÀ Î¤ß p÷ ˜ 뻧 ¼@-êÿÈÀ�Þß l W-@5ìÿ5 ìÿW-À 5ôÿÎ<æ²ß   Ö õòÿÎ¾ß zÀ YÎ‚ß zÀ SÎ‚ß zÀ MÎ‚ß zÀ GÎ‚ß zÀ AÎæß zÀ ;Î‚ß zÀ 5uôÿöÿµ öÿ@öÿ@-*ξ@öÿÀ @m&ß |Ö À Îææ¾ænfìÿß ÎÆe@öÿÀ @mе òÿ@òÿ@-÷ „Ï¡uôÿöÿµ öÿ@öÿ@-&@öÿÀ @mÈ‹7ŠøÎ‚@öÿÀ @m&ß Ö Î‚@öÿÀ @m&ænfìÿß ÎÆeÓ÷  æ¾ß 0 Ö 5îÿÎÆß p÷ þÎæ<fîÿß N –%5ðÿ Nðÿæ<æß À –%êW-ÎÐß pÎÀ<5øÿ&& ß N –%@€ 5øÿW¯øÿy æàæØß D–%À Îæß pÎúß ¦ ÷ lw�w ~5 øÿfNmøÿæ<÷ HÖ �5�öÿW­öÿ:W­öÿ @@møÿŠÀµ øÿß w<w *5 øÿ@øÿµ øÿ@m È‹÷N æß Ö 7ŠÎæ ß Ö Îfß Ö Îæß Ö Îß � Îæ÷ ÆÖ &ß Ö Îæf fß DÆeÀ Næß pÖ @ @møÿŠwŽw |5 øÿ@@møÿ’5�öÿAAmøÿA’ õ‹öÿÀµ øÿé wNw <5 øÿ5 öÿ@@möÿÈ‹AøÿWp Böÿµ öÿBm‚’�`ÁeÐÿuøÿé@øÿww ö5 øÿ@@møÿÈ‹µ øÿ÷5 öÿ@øÿµ øÿ@mAöÿµ öÿAmH’ñwÆw ´ õ*øÿ@øÿð•a@øÿœÀ%zÎføÿß p Ö À @øÿ°ŠëÎ6ß p÷ RÎføÿß ‚ Ö 5ôÿðõ 5 öÿ fß 0 Ö 5öÿNôÿß l Nøÿß ¦ NæLß pÖ ÷ þõ 5 òÿ@òÿµ òÿ@m È‹÷NòÿÎeÿÿf fôÿß À –%Îæföÿß N –%5òÿ Nòÿæfôÿß À –%êõ  Îæ^fôÿß À –%õ öÿNöÿß l Îfß p Ö À - fß 0 Ö 5öÿ Nôÿß l Nøÿß ¦ fÎæföÿß N –%5òÿ Nòÿæfôÿß À –%êNöÿß l Nôÿß l  føÿß 0 Ö 5ôÿNøÿß ¦ _„ζfß ‚ Ö 5öÿ Nôÿß l Nøÿß ¦ %Îæfôÿß N –%5òÿ Nòÿæföÿß À –%êNöÿß l Nôÿß l Nøÿß ¦ Àwšw ˆ€w–DÄeÀŸŒ · † %ß  ôwl7 r7 hׯh-· `· ^÷"7 V .÷ƒÁÜBÞ üJdVoPx†f�e.c<s l Ó•-÷ C r f÷ ðÿ€Àe0�‡•à •1à /ÁÎ Ò‹ƒ D~'Â`Âd ÷ f v÷ öÿ€€LÀe0 9Àe�‡ÂŒ÷ z‚÷ p‚ƒà&æ Ä Ãmd÷ bß  Ã~Ä Ž”ß  à Î ß  Ã~Ö „w¦þ7 6 ÀŸ,· (Àå0 ‚· Wp `ñÀe0[ƒÄeÓ•?‡f…@÷ ú÷òwB w @�w ×-Øw @7  wžf…w w ú7  wˆf…@‰†wp wrf…wÞwÚ‰h†wPwTf…wƉn7‡A …‡7 \f…A÷ &÷ À€U…‡f…A÷ …‡ñ @Àe7z1@‰t ‡À À 1 @Þ± ‡wÊf…‰ÀEÿwÄf…wBw>‰z†w¢w¦f…@w&w"‰€†w€w„f…ww ‰††wb wdf… ‰¦BR‚wNf…wÞ‰Œ†w2 w4f…@wÄwÀ‰�†wwf…@‰7.ÀÿÿF…‡Õ @…&æ¦äHÅåF‚ƒ„…‡fA7v‰–‡  �…Ñÿÿ�±…fAñ &÷ €ø9�± �…&fA÷ �€…@Àe&7Bw>·ã8@‰¸±ñ‡€ ÷x¤æ ‰ "‡Îr‰¾‡@‰ ‡ À $ô$ttñ¤yîЋì¢é7˜\@‰Ö À�R‡ESTEDTw øþNß  ß wðþw Þþ @ÀeòÿL@4À¢ &ß ZÖ ß > ÂÀŽ×, J×, J— — ×, ÷U`õÿÿøÿõoöÿÎwæß þ Ö 5øÿÎ/æß þ Ö 5öÿÀ. µ øÿµ øÿ×,µ öÿµ öÿ×, Î&ß ZÖ ß > ³ Àw þw úýDC ß Ê@mÀe“þÁím Áe¼À rfÀ€åwÌýw ºý΀p@&fß 8–%ÃüÂJÁÀ r<RÁÀ r<ÁÀ r<RÁÀ r<À rWtC`À rÒÁeÀ rw ÃFÎß Ê!Îß Êàƒ õ÷€7€Îß ÊÀ%n÷Ü ÀÀ ,ÄÀÀ ìă õ÷¾€ Ò7 FÀJwìüw ÚüÄRÃæÀ”�üAA WpÁeCÄRÔ”Ô”Ô”„ @Àe�WpÁeCÔ”Ô”Ô”Ž&ß îÖ ŽÎed&ß îÖ ŽÎed&ß îÖ ŽÎed&ß îÖ Äe@ &ß îÖ ÀRw@üw .üAÀ rÁ ÀnÀmwüw üD„ W- C —r �À r Áe0T�Ô• AÀ r Áe0T�wÒû€�6rw ‡€�6r@‡f…@õ Á P`Hm` …‡/etc/passwdCan't open password file /tmp/utmpWho are you? /etc/passwdmailboxNo mail Save? mailboxmboxOld mail in `mbox' mailbox/mailbox From Can't send to `%s' /tmp/mtmcan't creat tmp file can't open `%s' üÿðÿýÿøÿ‰‰‰‰‰‰ ‰‰‰¶w w&w ’ú€Àw ˆú…‰/devPFø ü Day Mon 00 00:00:00 1900 SunMonTueWedThuFriSatJanFebMarAprMayJunJulAugSepOctNovDec àð‰7ˆ…Õ Õ Î ‰@ÁàÂD ”‘‘¡/ùƒ÷Ñ•/Ñ•. Š÷Úà ÷D Š× E#Š÷‹6‰¨'‡ÀF÷­$Ctúÿ †w‰ÿÁ‡w‰w ‰à ‡Ñ•. Š÷¶ÿ ‰à­†@77 Ћ· ûÀ‰À‰Ü˜. ? ÀJ¬ ð€&Ð 6÷ –% ‰f…Æå|uþÿW- Îæ æß |–%÷ @þÿ5øÿ@þÿ5öÿÎJ!@þÿ&ß ÌÖ À Îæ æß |–%÷ ÆÀÈ ÀEÿŸÀ%@_„ÎJ!@þÿ&ß ÌÖ À Îæ2 æß |–%÷ ˆ@þÿ5üÿ@þÿ5úÿ}¯üÿúÿµ üÿ@úÿµ úÿ’ ÎæL æß |–%÷ Fè@Ÿüÿ@üÿµ üÿ¢/ ÎæR æß |–%÷ ê@Ÿúÿ@úÿµ úÿ¢/ Îæj æß |–%÷ îêõ üÿ@üÿ¢. Î%æ‚ æß |–%÷ È_þ÷ Þß ¶ÎN!föÿß ÌÖ À _þÀªÀEÿŸÀ%@=õž!úÿ@úÿµ úÿAöÿµ öÿA’H�@�ó@úÿð•/ÿÿ@þÿ5öÿ@þÿ5üÿ@Ÿöÿ @öÿµ öÿ¢/uöÿüÿò@úÿµ úÿAüÿµ üÿA’H�@�óõž!öÿÎN!föÿß ÌÖ À `÷- ÷- Îæ¨ æß |–%÷ ä÷ þÀ­éõ€†ÿ ÷ $À­Øõ†ÿõ†ÿw=†ÿ¾#θÎEðföÿæ¾ ß r–%÷ ’5†ÿ5ŠÿW-†ÿ @†ÿ÷ x5†ÿôW-Šÿy÷ lNöÿß ìÀ ÎæÌ æß |–%÷ JNöÿføÿß tÖ À _ü÷ :5ŠÿW-Šÿÿÿ Î æè æß |–%÷ @Šÿ @Àeˆÿß @-Šÿö?@ÀeŒÿ5ôÿuôÿòÿ@ôÿµ ôÿAøÿµ øÿA’H�@�óuôÿðÿ@ôÿµ ôÿAöÿµ öÿA’H�@�ó fðÿfòÿæü æô ß ,ÆeÎæ!æß |–%Îß Hõ5ÿˆÿ Îæ!æß |–%÷ V@ˆÿ÷ LNøÿß ìÀ Îæ !æß |–%÷ *w f…æ Î@Àe&æß |–%wêf…¦)Î@Àeþÿ&& ß ”–%À% @�þÿF…‡f…wnDÄeÆå€ÀŸ` · Z % &&ß "Ö „ñÆe€…‡7 <7 2ׯ2-· *· (÷.è!7  .÷æ!ƒÁêBÙ üJ dPovf€e8cBsl Ó•-÷ 6 r f÷ ðÿ€Àe0�‡•à •$Á “”C~÷ fWtýÿÁEà÷ ðÿ€ÀEøÿÀe0�‡Ât÷ ¤Âj÷ šÆ ƒó‹ÿÿà ù‚&æ ÁDÁàŠ�`wD÷ 8ß "÷ 4û·,Ο(· "ß "ø÷  ÷ Î ß "÷ ûÖ „w�þ7 ô ÀŸê· æÀå0 ‚· ÜWp `ñÀe0[ƒÄeÓ•?‡f…wô@Àe7ì‰(!wÜf…@‰f…‰†wÄ wÆf…‰ÀEÿw¸f…w²w®‰.!†w– w˜f…@w”w�‰4!†wrwvf…@‰†w^ w`f…wfwb‰:!†w> w@f…wL‰@!†w$ w&f…÷ $‰†w Ä }w7ÌÀÿÿF…‡Df… 7-üÿ.À7#(Àe 7#Àe7#m€ …‡ß Ö –%Æef…@w¼w¸‰D!†wŠÿwŽÿf…/‰ÀEÿw€ÿUsage: mv name1 name2 Source file non-existent Directory target exists. ??? Directory rename only Directory rename only values of B will give rise to dom! Files are identical. %s: %o mode Cannot remove target file. Try again. /bin/cpcpno cp ? Cannot unlink source file. ‰ ‰‰‰ ‰‰@ †8 ð€&Ð 6÷ –% ‰w ¨õ D@žÀ%-=õe½ @È‹2@žÀåc ñ‚À xZ†666Œ666666€6 6˜66’·  Ø· üÕ· üÒ· ôÏ÷ÿÿbË· êÈõ õ  æ  õe@&ß Ö 7ÂÀ Î ß Ú÷ ÈÎæ” æ¦ß –%×-ž ×-–Î ß Ú÷ šÎæ€æxß „–%Îæpæfß „–%×-lÎæTæLß „–%ÎæDæ:ß „–%Î æ6& ß à–%5øÿÀ Î( ß Ú÷ &AøÿWp Nß <7üAøÿWp Næîæìß –%÷ Þ Îêæ føÿæÎß 4ÆeÎß 7ÞÎß ì5 öÿu-öÿøÿ_â÷ šÀ˜ð5 _Ö÷ ~ׯ‚_b5 ôÿW-ôÿ Àn@môÿÁfAmôÿHœµ ôÿïÀT0ŠÀLÀEàÿ5ôÿ õôÿõ ôÿÀ*ð õôÿ÷ õ ôÿ,÷ "õ ôÿÎ6 ß ÚÀø ß |Àìð5 ÀB ÀJ @môÿ’æ> ß ÚÖ ÎÄæR ß ÚÖ ÷e ´µ öÿ€÷ Äwæw Ô5 øÿ÷ �@A1, ƒõøÿAøÿwpè@.@A1, †õÿÿøÿî5 öÿW-öÿè@@möÿAAmöÿ ¢@@möÿAAmöÿ ¢Ðõÿÿøÿϵ öÿàwTw Bõ Î1Î0æX ß ÚÖ 5 øÿW-øÿ@tôÿÎEøÿÎe0æ\ ß ÚÖ @t5µ øÿåwöw ä€wÈDÄeÀŸ¾ · ¸ %ß |ôwÈ7 ¤7 šׯš-· ’· �÷"¬ 7 ˆ .÷ª ƒÁFBÞ üJjdÀoºxðfúe˜c¦svl Ó•-÷ C r f÷ ðÿ€Àe0�‡•à •1à /Á Ò‹ƒ D~'Â` Âd  ÷ f v÷ öÿ€€LÀe0 9Àe�‡Â¾÷ z´÷ p‚ƒà&æ Ä Ãm–÷ ”ß |Ã~Ä Ž”ß |à Î ß |Ã~Ö „w¦þ7 h ÀŸ^· ZÀå0 ‚· PWp `ñÀe0[ƒÄeÓ•?‡f…À4÷ ,À*P�· ÷ ÷ @…‡f…÷ …‡Àþ Àåº 7¨Àì€ ‰h ÷º â÷Ú×-Ô‚÷̇f…@‰†w¶ w¸f…@)‰†w w¤f…wPwL‰n †w‚w†w Šw dw`AupNNmfß bÖ wnw \ Â:@@í5ôÿ€ _Ä�Á fAôÿÀ rBpuôÿ@@môÿ5øÿ5öÿD@€à5!øÿ†føÿ&ÿ â–%5òÿ µàøÿ@øÿ&ß ÈÖ êõ òÿ„`åõ öÿ3ƒæföÿÿ ¬–%5òÿ ε`öÿ@öÿ&ß ÈÖ êõ òÿ5!øÿε`öÿ@öÿ&&ß ì–%µ`øÿ@øÿÔÎ&ß ÈÖ ƒà„`±ƒàÊ5!øÿ$@øÿ@íAAíöÿ ‡NföÿŽ`ß bÖ uøÿ Nøÿfß bÖ @öÿ€`5_lµàøÿ@øÿ&æß ì–%µàöÿ@öÿ_²ww öõÔøÿDC“Ô’“�õ øÿúwäw Òõ°öÿDCB5“øÿ”’Ò’S�øÿõ öÿ÷w¶f…@wNwJ‰t †wzw~f…÷:6wm0‰z †w\À$wmwVf…w‰z †w:w w6f…@wðw쉀 †w wf…@‰7ÀÿÿF…‡Õ @…&æ¦äHÅåF‚ƒ„…‡€�6rẇ€�6r@‡a.outcannot open input bad format no name list %c UATDBCuatdbc%.8s %c%cüÿðÿýÿøÿ‰º ‰‰‰¾"‰€ÖR ð€&Ð 6÷ –% ‰w šÎß ª 7ö$õeW-buìÿW¯ìÿ-[@ìÿµ ìÿ’5òÿN@òÿ+÷U˜$õøÿ<÷UŠ$õøÿ5÷U|$õøÿ.÷Un$õøÿ'÷U`$õøÿ ÷U R$õøÿÀåa ƒÀ xÂv ’hààà„ààààààZw-øÿ$wøÿ $ªõ õeÀú#÷ô#÷ì#W-@¢+ fß –Ö 7È#ÀÄ# Næ ß þ Ö _,õeõ W-Nß þõøÿõ˜#îÿõ”#ðÿ5 òÿw-òÿˆ ÷ ´5ôÿÀv#@òÿÀ pôÿÖ"@òÿ  u-ôÿöÿ€ @ 5@øÿuôÿöÿµ òÿÜ@òÿ)@øÿÀ2#À8#w-öÿ.# ÷ Rwöÿ"#wîÿ#wðÿ#wmòÿ# ÷ 4NòÿæÖ"@Àeîÿ&ß ”–%Àæ"¢Î%ß ZÎ ß ¾ ÷ Ò wŽ w | ÀÎ" 7 È"Îæ %æ%ß ”–%wh w V Îæ˜fß n–%Îæ†@&ß n–%Î ß ¾ w. w  õöÿõôÿ@ôÿAõ=H"ôÿ9@öÿNß Z5 öÿ 5 øÿW-øÿÎ ß ¾ µ øÿõ5 øÿu-øÿNôÿ@øÿÀ @m&ß 2Ö @Àeÿÿ@-øÿÎ Î ß ¾ µ øÿàumôÿôÿ¼w� w ~ @jÎß ØÎæfß n–%lÎß ØÎæ fß n–%^Îß ØNß ¨UÎß ØÎæfß n–%GÎß ØNß ÜÎ ß ¾ @tøÿß Ü3Îß ØÎæfÎEÿß n–%Î ß ¾ Îæ@tøÿ&ÎEÿß n–%÷ H >Zvˆ¤Ì 2wŒ w z ÷ <5øÿW-øÿÿÿ÷® ÷ "5öÿW-öÿÿÿ5 öÿ@öÿt@]øÿwF w 4 ÷-v v Îæö"æ` ß –%7^ ÀZ Àÿÿ7 L · P ÀL À-F· @ 7 > À2 · . œö"ÀEÿwæ w Ô õEÿW-W- W-\ Î ß ¾ Nß ¾ ,Î\ß ¾ @Î0ß ¾ Înß ¾ Î\ß ¾ Îtß ¾ Î?ß ¾ ÷  > * 4\HwT w B @-NÎeÿÿfff& ÷ È Æe&ß n–%Nf& ß n–%5À% NÎeWß ¾ NÎe0ß ¾ wêw Øuøÿw-øÿÎ ß ¾ µ øÿõwÄw ²uøÿ@øÿµ øÿ’ù@øÿ@íÀeÿÿ5ðÿ5 ìÿ@ðÿ @øÿ¬þÿbõ ðÿµ ìÿõ øÿ@ðÿ@øÿ¬þÿ.õ ðÿ÷ š÷è–5 ôÿ5 îÿ@ðÿ@íîÿÀ%@@mîÿ’5òÿW-òÿ0W-òÿ9 AôÿwpXAmòÿÁeÐÿuôÿµ îÿÝ5 öÿ@ðÿ@íîÿ@@mîÿ’5òÿW-òÿ0W-òÿ9 AöÿwpAmòÿÁeÐÿuöÿµ îÿß@ìÿ AôÿwpôAmöÿuðÿ5 ôÿ5 öÿ@ðÿõ ðÿÀ õeöÿw-öÿÌõíÆöÿµ ôÿöì5 ðÿÀ´€ @-ôÿ÷e¨÷-¤ ÷íšš· ”öµ ðÿêÎfðÿætß :–%w-ôÿtw-öÿn÷ àüÀ%ÿÿòww Nß ö5øÿ5 öÿ@øÿµ øÿ’5ôÿNôÿß ¾ µ öÿñW-öÿÎ ß ¾ µ öÿõwÌw º@ÀEÿ_Þ @ÀEÿ À _ú À _ú _6÷ 4~6@ÀEÿÀ _ú À" _ú À& _ú À* _ú À. _ú À2 _ú À6 _ú _ ÷ Þ@HPX`hp @ÀE?JÀ: _ú À> _ú ÀD _ú ÀH _ú ÀL _ú ÀP _ú ÀT _ú ÀX _ú À\ _ú À` _ú Àd _ú Àh _ú Àl _ú Àp _ú Àt _ú Àz _ú À€ _ú À† _ú _R ÷ .H R Š œ ª ¼ Ê @ÀEÀÜ _ú _t ÷ ò\  t @ÀE Àâ _ú Àæ _ú _¢ ÷ È~ €† ˜¢ @ÀEÀê _ú Àð _ú Àö _ú Àú _ú Àþ _ú À!_ú À!_ú _  ƒ À xö ¬ ´ ¼ Ä Ì Ô Ü _ò À !_ú À!_ú À!_ú À!_ú À!_ú À"!_ú @ÀEÿÀ&!_ú À*!_ú À.!_ú À2!_ú À8!_ú _Š ÷ ìB pJ rR tZ vb xŠ _ò @ÀEÿ*À"_ú ÀD"_ú ÀJ"_ú @ÀEÿ ÷ ŒÊ Ú  ÷ Žè ò N"`"n"|"Š"À˜"_ú wÄw ²€w DÄeÀŸ · ú %ß ¾ ôw–7 æ7 ÜׯÜ-· Ô· Ò÷,%7 Ê .÷%ƒÓ Ál BÝ üJŒ dÒ oø f eº cÄ s˜ l Ó•-÷ 6 r f÷ ðÿ€Àe0�‡•à •$ÁH“”C~÷ fWtýÿÁEà÷ ðÿ€ÀEøÿÀe0�‡Â÷  Â÷ –‚Ò Â ƒó‹ÿÿà ùÎ ÁìÁàŠ�`wì÷ àß ¾ ÷ Üû·ÔΟз Êß ¾ ø÷  ÷ ¶Î ß ¾ ÷ ®ûwœþ7   ÀŸ–· ’Àå0 ‚· ˆWp `ñÀe0[ƒÄeÓ•?‡f…@)‰†wwf…@÷ T÷Lw8w (%@�w %×-2w .%@7 wØf…ww %7 úwÂf…@wxwt‰œ"†wœw f…@w\wX‰¢"†wz w|�¦B@$ü‚‚Y�¦æ ‘rà CdÃÂÀ$üƒ‚ƒ‚Yf…w w‰¨"†w"w&@…&æ¦äHÅåF‚ƒ„…‡7NÀÿÿF…‡fA7ȉ®"‡  �…Ñÿÿ�±…fAñ &÷ €ø9�± �…&fA÷ �€…@Àe&7”w�·ãŠ@‰Ð"±ñ‡€�6rwº‡€�6r@‡cannot open %s jsrsobbrbnebeqbgebltbgtblejmpswabclrcomincdecnegadcsbctstrorrolasraslmarkmfpimtpisxtº â@ € 2 À Ú  @ * € ²ÀÒÀ ú " @ Ê€ òÀ  ª@Â@ ê€  À flagrtssplhaltwaitrtibptiotrsetrttmov cmpbitbicbisaddmuldivashashcxorbplbmibhiblosbvcbvsbhisbloemtsys¨ ‚Ð ‡° ƒØ ˆ¸ „à ‰˜ €À …  �È †clrbcombincbdecbnegbadcbsbcbtstbrorbrolbasrbaslbmfpdmfpd Š" ÀŠ: €‹R @Œ @Š* ‹B À‹Z €Œj @� €Š2 @‹J Œb ÀŒr €�movbcmpbbitbbicbbisbsub˜  À ð( P  ° 0 `¨ À 8 pŽ €° Ð 0� �¸ à @???‰‰‰‰¶w w&w @ì€Àw 6ì…‰"#$%&'()*+€ ^ ð€&Ð 6÷ –% ‰w V÷ ä5Îß J7ø5Îß 4Îæß ¼Ö À5Î4æß ¼Ö ÷ ö5 øÿW-Zõe@žÀ%-7½ @’Á 7Œ þyW-<õe@7² õ 2· N5/½ Nß X7>&½ Nß X7*Nß X7@žÀ%+ ½ Nß X7ô4Nß ˜µ øÿõ ¢õ øÿ ß ˜÷ ¦÷ wJw 8ÎÊ4æÄ4ß Ö  ß Vw,w &ÎÊ4ß ŽÁ¢41�@ÀeÖÿæ²4ß ^Ö @ÚÿÀEþ7‚4΀æx4ß Ö wæw Ô&×-d ÷BZ÷ T÷HL×-DH÷-<> Î æ& æR4ß 4–%÷ xÁ"À 7r74ÄÃj÷ 7 õ  fß |Ö 7PÀ _*@ÀeÖÿæ<ß ^Ö 7 0@Àeöÿß ÷ w@Àeöÿß ø2Š÷š37 úÀ”À Áh!wðpj5÷ ÒÎ~ß ¦À HÀrÀ ð j5ÀhÀ ,j5h! †ÀZÀ ÁVÁeh!pj57 °2÷ H3Î4 ß fŽÎeß fÎ8 ß fÎ‚ß fÎ< ß fÎ3ß ‚ÎD ß f÷ 2÷ 3 ÷-b2þÎ ß ´÷· æ2²ÎFß 47Ú÷4wPw >÷ ÈÀÈÀeûÿÀ-"2_L ß ¦— Žß ŠôÎ ß Š· ø1äÀŠÀ 7j5ì1Ã÷ z:ÀÀ ÁÁ ph5j5õ øÿw-øÿd Îß ¦À%  öµ øÿïƒ àÄ-šÎ ß ´øÄm*2ƒ Î"ß — Žß ´óÎ ß ´ÀÀeûÿÀ-`1Äò1 ÷ ìâÎß Ñ— ÎÄ-6õŽß ´ñÀÎÀeûÿÀ-(1Î ß ´ôw.w à À¤Àeh!Àà!Äææìß š–%Ë•þ aÀtÀeh!À ‡Ãh!Ë•ý÷ÄwØw ÆB€À Àej5žÀEÿ× ý÷ ‚ÿŸÀEÿ× þ Œ ÁÁeh!"‡Ìh!à ÛÀw~w l÷ ð0Äê07 æ0Nß ¦ÁH 7& þy· ,÷5&÷ ¶0À 7 ! · ÷ öww CÄ”ß ´úwüw êCÁÀ r ß ‚ÁÀ r NÎe0ß ´wÊw ¸CÀÁ\ 7œ þy· .0· ˆ=7 ‚7 0· ‚/÷ 0,×-0!ÀhÀí0ÀUÀ-ZÀTáÀeÿÿ7ì/Î ß Šã÷ <7 6÷ Ô/Û7 Î/Ø÷ È/Î ß ŠÑ× · Îß Šw&w B €”À%0 × 9Wp Á`ÁeÐÿDðwôw â÷-j/f/Nß ¤wÚf…À~/÷ ,Àt/P�· j/÷ d/÷ @…‡f…÷ …‡ÀH/ Àå,67ˆÀ6/€ ‰p ÷,6,/÷$/×-/‚÷/‡f…wZwV‰v †w2 w4f…@‰†w wf…@)‰†ww f…@w‰| †wê wìf…wüwø‰€ †wÊwÎf…@wàw܉† †w¨w¬f…Aww ÷5WpÁe† W Œ ‡W Ô †ñèwâ‰Ô ‡whÀwXf¦æ&Ø „ƒ‚�€f… ‰¦BR‚w4f…@wšw–‰Ú †wwf…@‰7È/ÀÿÿF…‡Õ @…&æ¦äHÅåF‚ƒ„…‡€ ÷xº/æ ‰.8"‡Îˆ/‰à ‡@‰.8‡ À.8$ô$ttñ¤yîЋì¢é7˜r/@‰Ö À�h/‡ESTEDTw tÿNß  ß  wlÿw Zÿ @ÀeòÿL@4ÀÌ &ß R Ö ß 6 ÂÀ¸×, J×, J— — ×, ÷UŠõÿÿøÿõoöÿÎwæß ö Ö 5øÿÎ/æß ö Ö 5öÿÀX µ øÿµ øÿ×,µ öÿµ öÿ×, Î&ß R Ö ß 6 ³ Àwˆþw vþDC ß Â @mÀe“þÁím Áe¼À rfÀ€åwHþw 6þ΀p@&fß 0 –%Ã.ÂX8ÁÀ r<RÁÀ r<ÁÀ r<RÁÀ r<À rWtC`À rÒÁeÀ rw¶-ÃFÎß Â !Îß Â àƒ õ÷–-7–-Îß Â À%n÷ ÀÀ ,æ ÀÀ ìæ ƒ õ÷è€ Ò7 \-ÀX8whýw VýÄ 6Ã!À”�üAA WpÁe"!CÄ 6Ô”Ô”Ô”„ @Àe�WpÁe8!CÔ”Ô”Ô”Ž&ß æ Ö ŽÎed&ß æ Ö ŽÎed&ß æ Ö ŽÎed&ß æ Ö Äe@ &ß æ Ö À 6w¼üw ªüAÀ rÁ ÀnÀmw˜üw †üD„ W- C —r �À r Áe0T�Ô• AÀ r Áe0T�wNü€�6rw*,‡€�6r@‡f…@õ Á P`Hm` …‡HB/dev/ttyxhltw–¸²ÊÜVery funny. Page  \2J\N  Ú Ðæ‰,6‰‰‰‰7xç7rç7lç7fç7`ç7Zç7Tç7Nç7Hç7Bç7<ç76ç0‰‰/devPFðôDay Mon 00 00:00:00 1900 SunMonTueWedThuFriSatJanFebMarAprMayJunJulAugSepOctNovDecöè¦ ð€&Ð 6÷ –% ‰w ŠW-'@5ìÿý‹ìÿ@ìÿµ ìÿ’· æ · Þ · Ö · Ì · È Áö7˜ þy ÞÎææ ß ÔÖ Îæò ß ÔÖ Îæþ ß ÔÖ Î æ ß ÔÖ Îæ æ&ß œÖ ÷ 2 Î,ß _0÷:b ÷ P ÷DV  æP ß 0Ö 5êÿÎNß _0 æ2 ß 0Ö 7"  æVß 0Ö 7 õòöÿõÞôÿuíôÿöÿ æ¾fêÿß p–% ß ”5îÿ5 òÿW-òÿ2_0NöÿæÞfêÿß N–%÷‹r^Îrß 45ðÿÀ%?÷ ¢Ru-îÿðÿ÷ ˜K÷ ŠÀ�EÀ�<&À�5t&ÎÝ*æ`ß Æe÷ fNðÿæjß Ö Îænß Ö ÷ <ÀÀetýÿærß Ö ÷ êÎäævß Ö Îzß ÷ ÒÎ„ß µ òÿ�w~w lAÁíºÀ r5øÿõ øÿW-øÿ W-øÿ@øÿÀe02@øÿÀeY-AÁíŠÀ r5øÿõ øÿ W-øÿ@øÿÀe8AÁílÀ r5øÿõ øÿ W-øÿ@øÿÀefÀ?wÞw Ì@µ Aµ H’õw¾w ¬5 øÿ5 öÿ÷µ×õÜöÿõôÿõÎøÿõ ôÿÀÄÀeøÿ5`öÿ@öÿtýÿ5`øÿ@öÿÀEøÿt5öÿÎføÿfôÿß p–%Îföÿfôÿß p–%Îæ0 fôÿß N–%À% Gõ0 òÿW-òÿ0 >ƒõåòÿ@òÿ"ÿÿ5@òÿÀe5ðÿý‹ðÿµ ðÿuðÿîÿW-îÿ0 †@Ÿîÿ5ìÿõ ìÿý• îÿ W-ìÿ W-ìÿ~ý•?îÿµ îÿãNðÿæ†ß Ö À¾ w”w ‚€wDÄeÀŸ ·  %ß Àôwf7 ì7 âׯâ-· Ú· Ø÷"8 7 Ð .÷6 ƒÁŠBÞ üJ®doþx4f>eÜcêsºl Ó•-÷ C r f÷ ðÿ€Àe0�‡•à •1à /ÁH Ò‹ƒ D~'ÂŽÂ’ ÷ f v÷ öÿ€€LÀe0 9Àe�‡Â÷ zÂü÷ p‚ƒà&æ Ä ÃmÞ÷ Üß ÀÃ~Ä Ž”ß Àà Î ß ÀÃ~Ö „w¦þ7 ° ÀŸ¦· ¢Àå0 ‚· ˜Wp `ñÀe0[ƒÄeÓ•?‡f…À|÷ ,ÀrP�· h÷ b÷ @…‡f…÷ …‡ÀF ÀåF 7’À4€ ‰–÷F *÷"×-‚÷‡f…w‚w~‰º†wJwNf…@wfwb‰À†w(w,f…@wJwF‰Æ†w w7®ÀÿÿF…‡Õ @…&æ¦äHÅåF‚ƒ„…‡&f¦wA@È Àe  ù‰ÌT‡‰H K÷V`÷NÖ×-F÷FLÀ:Àm8×->À Àe7®×-×-)€‰Ò÷å "€‰H  @È ò7"ì7,æ7,à 7,ÚðÖðÒ Àe 怉‚�€…€ ÷xàæ ‰Z"‡Î®‰Ø‡@‰Z‡ ÀZ$ô$ttñ¤yîЋì¢é7˜˜@‰Ö À�އakltx@XRFLp_proc_dc11_kl11_dh11/unixNo namelist /dev/mem/dev/rk0No mem /dev/rf0%3o%5d%5d%2c%6d%4d%8o %.32s üÿðÿýÿøÿ‰F f·’· ·w þ…‡‰‰‰‰‰/dev„ð  ð€&Ð 6÷ –% ‰t/dev/mt0w H W-õ„õ@À ð „µ ÷õ õeuøÿý‹øÿ3@øÿµ øÿ’ÎŽß è ÷ Ø @øÿœÿÿ5ôÿê· þç· úäÀåi ç‚À x¨Špppppppp|p|pp�|Ê÷ < æ€ß ÒÖ Ä€7˜7˜7–7”7’7”À~t& ß ÜÖ 5öÿ@öÿt ß Æ 7\ÄX@öÿõ öÿÀ  &ß Ö Äeò@ôÿ_L5 ôÿÎ„ß Î€ß Ä5 öÿÀt@-öÿ(Ô õ ôÿ u-öÿôÿNöÿæ¦ß è Ö Nöÿfôÿæªß è –%5 ôÿõ ôÿ@öÿ€ 5ôÿµ öÿÑõ ôÿNôÿæ²ß è Ö ÷ z W-Î¸ß è ÷ f @7|Îætß † Ö 7~÷ z Î`æÌß è Ö ÷ 2 ÎNæÞß è Ö ÷ œ Îvæß FÖ Ä65 öÿw-öÿ*L΀föÿÎeß FÖ Â€— €2†5òÿõ òÿ*w-öÿøƒÎß è ! æ€ß ÒÖ Žß nõ€ðÿƒ€Àe À †@ðÿõeðÿôNòÿÎeÿÿ¦ß ìÖ Âe Ë΀föÿÎeß ŒÖ µ öÿ°Îvæß ŒÖ ÷ X ÄšW- @ß ¤õeõ ïÄV5 öÿÀLt@-öÿ_F÷ Z5 òÿ@òÿÀ ð š @òÿÀ Aöÿ� ,šµ òÿî5òÿ5òÿõ òÿbõ òÿ æ€ß Ö Â€NöÿŽ ß <7ì÷ è@òÿõ òÿÀ Îæ€ß Ö ò?@òÿõ òÿÀ & æ€ß Ö õôÿò‹—,†µôÿNôÿæ€æŠß 2 –%µ,ôÿ†òŠríôÿÔÎlß R Žæ�ß  Ö €œæ�ß 2 Ö µ öÿ_*÷ Àår  ‚À x\ÚjHjjjüw w üDÌ5 5 × 1ÀÀ að )Ì5@ÀeúýÀÀ a&ß FÖ  — €À @að úý€À @aúýß ” ‚ îÀÀ aß ” ƒ Ìw�w ~DÌ5 _ä × ÀÀ a0 ƒ öW- õ  ÷ ¾ÁÁ a1ƒ ôÌES W-" × ÷ ”ÁÁ 1€ƒ õ÷ ¸�Á a1΀€‚ À a&ß ŒÖ õåÚõ ' × ÀÀ 0 €ƒ ÷ õ ÷ 6ÁÁ 1€ƒ õ÷ Z�Á a1΀€À a&ß ŒÖ ÌUw”w ‚÷ * æ€ß Ö Î€&ß ŒÖ whw Vý  @ð Îß è Nß ß è w6w $Îfæ0ß  –%Îfæß ¤ –%À% Næ"ß è Ö ÷ Ìwðw ÞÎfæêß  –%ÎfæØß 2 –%À% Næ2ß è Ö ÷ †wªw ˜Nfß Ö õ Ä BÄ À ƒdú× 3ÎBß è ÷ @wdw RÀH· DÀ-b ‡_bÎRß è ÎBß R ÷ Œ7"À% ÷ ÷ üó7 ÷ ¨õ  Îææ ß  –%Îfæö ß ¤ –%À%Î`ß è ÷ ´wØw Æ @µ ’× 0÷× 9ôWp Á`ÁeÐÿDìw w ŽÎffÎEÿß H–%÷ ’„ wrw ` æt ß † Ö 7^ ÷ Z Î` ælß è Ö ÷ w@w .Î�fß ÆÖ ÷ :,Î�æ~ß è Ö ÷ h!x_x÷ Ü! Àÿÿ!y÷ B! ÷ 6À% Ä ÷ ªõÑζæ�ß h Ö w¶w ¤Î f& ß H–%N&ß ÆÖ 5Î f& ß Z–%Àe0Aµ  �=Š@w`w N÷ T ÀP à × dÎ‚ß è ÷ ÀÀ |Ä Î’ß è ÷ ú÷  ΀&ß FÖ ÷  × d ÀÀ ÁÁ p‚|ƒ ôwèw Ö×-Ü d÷Ô Ø !d À Á p|‚„ ô7 ´ ΀fß ŒÖ À¢ · ž À p|w”w ‚€w|DÄeÀŸr · l %ß v ôwf7 X7 NׯN-· F· D÷n7 < .÷þlƒÁT BÞ üJt dÄ oê fô e¢ c° s€ l Ó•-÷ ; r f÷ ðÿ€Àe0�‡•à •)à 'Á¸ Ò‹ƒ D~÷ fWtýÿÁEà÷ ðÿ€ÀEøÿÀe0�‡Â†÷ zÂ|÷ p‚ƒà&æ Ä Ãm^÷ \ß v Ã~Ä Ž”ß v à Î ß v Ã~Ö „wºþ7 0 ÀŸ&· "Àå0 ‚· Wp `ñÀe0[ƒÄeÓ•?‡f…@÷ ô÷ìwÚw v@�w v×-Òw "v@7 ²w¬f…w¦w v7 œw–f…÷ Œ÷h†À~‰h ‡À À 7n Àßj· f…‡7t 7 V…‡f…wŠw†‰¤†w2 w4f…wpwl‰ª†w wf…@‰†wü wþf…w@w<‰°†wÜwàf…w(w$‰¶†w¾wÂf…@w w‰¼†wœw f…÷øôwmî‰Â†w~ÀâwmÜwxf…w̉†w\w¾ wXf…@w®wª‰È†w2 w4f…@w�wŒ‰Î†wwf…@‰7ÀÿÿF…‡Õ @…&æ¦äHÅåF‚ƒ„…‡fA7B‰Ô‡  �…Ñÿÿ�±…fAñ &÷ €ø9�± �…&fA÷ �€…@Àe&7w ·ã@‰ö±ñ‡ESTEDTw ZÿNß *ß .wRÿw @ÿ @ÀeòÿL@4ÀÊ &ß jÖ ß NÂÀ¶×, J×, J— — ×, ÷UˆõÿÿøÿõoöÿÎwæß Ö 5øÿÎ/æß Ö 5öÿÀV µ øÿµ øÿ×,µ öÿµ öÿ×, Î&ß jÖ ß N³ Àwnþw \þDC ß Ú@mÀe“þÁím Áe¼À rfÀ€åw.þw þ΀p@&fß H–%à Â~ ÁÀ r<RÁÀ r<ÁÀ r<RÁÀ r<À rWtC`À rÒÁeÀ rwÄÃFÎß Ú!Îß Úàƒ õ÷¤7¤Îß ÚÀ%n÷ ÀÀ ,üÀÀ ìüƒ õ÷æ€ Ò7 jÀ~ wNýw <ýÄ€ÃÀ”�üAA WpÁe8CÄ€Ô”Ô”Ô”„ @Àe�WpÁeNCÔ”Ô”Ô”Ž&ß þÖ ŽÎed&ß þÖ ŽÎed&ß þÖ ŽÎed&ß þÖ Äe@ &ß þÖ À€w¢üw �üAÀ rÁ ÀnÀmw~üw lüD„ W- C —r �À r Áe0T�Ô• AÀ r Áe0T�w4ü€�6rw8‡€�6r@‡f…@õ Á P`Hm` …‡˜:bad characteer in key %l %l-%l %l- no filesystem name can not open %s last chance before scribbling on %s isize too small the epoch read error %l write error %l checksum error change tapes read error can not open %s %s bad freeblock out of freelist ‰‰‰‰‰‰’ ‰‰‰¶w w&w Æú€Àw ¼ú…‰PF Day Mon 00 00:00:00 1900 SunMonTueWedThuFriSatJanFebMarAprMayJunJulAugSepOctNovDec9:;<=>?@ABb—% Ö €”W mw�@È‹‰N ”w�5È‹ ‰X‡‰b‡‰À‰L‰? /dev/tap0/dev/mt0€² ð€&Ð 6÷ –% ‰w &5 öÿ5 ôÿõ @'õe@5øÿW¯øÿ-@øÿ¬fµ öÿç@øÿ¬rµ ôÿÞNôÿföÿføÿß €–%ÔwÎw ¼0@ÀeÐÿfß |Ö À Næ ß LÖ _ú@ÔÿÀEÿŸÀ%@]@R÷ r5Îÿ@Îÿ Næ ß LÖ _ú@Îÿ÷ Ê@-Îÿú_úNß øÀ Næ" ß LÖ ÷ 5 øÿ @æR føÿ@æL æP æH æD æ> æ4 ß Æe NæT ß LÖ ÷ ÈNæb ß LÖ B@2÷ Ì@­×ÿõ€ÌÿõÌÿu=ÌÿÔÿ"NÔÿfær ß L–%÷ l5Ìÿ5ÎÿuÌÿÎÿW-Ìÿ @Ìÿ÷ L5ÌÿôW-Îÿy Nß œÀ Næ€ ß LÖ wPw >Î@Àe&æß –%w0w Î@Àeøÿ&& ß Z–%À% @�øÿww ð€w`DÄeÀŸV · P %ß þôwÔ7 <7 2ׯ2-· *· (÷,¶ 7  .÷´ ƒÓ ÁºBÝ üJÚd oFfPecsæl Ó•-÷ 6 r f÷ ðÿ€Àe0�‡•à •$Áž“”C~÷ fWtýÿÁEà÷ ðÿ€ÀEøÿÀe0�‡Âr÷  Âh÷ –‚Ò Â ƒó‹ÿÿà ùÎ ÁBÁàŠ�`wB÷ 6ß þ÷ 2û·*Ο&· ß þø÷  ÷ Î ß þ÷ ûwœþ7 ö ÀŸì· èÀå0 ‚· ÞWp `ñÀe0[ƒÄeÓ•?‡f…w’‰’ †wR wTf…w|@Àe7t‰– w0f…@‰f…‰†w wf…‰ÀEÿw f…@w6w2‰œ †wæwêf…ww‰¢ †wÈ wÊf…w‰¨ †w® w°f…÷ ‰†w–Ä }w’Df… 7-üÿ.À7#(Àe 7#Àe7#m€ …‡ß Ö –%Æef…@w‚w~‰¬ †w"w&@…&æ¦äHÅåF‚ƒ„…‡7`ÀÿÿF…‡%s: non existent %s: try again %s: cannot chdir /etc/globglobrm-r-f**%s: no glob %s: directory %s: %o mode %s: not removed ‰ ‰‰‰ ‰‰P…Ö Å w� € R”ý À 7Ô— [‰<W‡÷EÿŸ÷%@P—¬ÿÿ.— I—¬þÿ/E—¬þÿ.— >—¬ýÿ/:‰6‡@‰<‡À ÷ ºö×­¶. ÷‹¯ï×­©.÷‹¢è÷ F@‰À‰ø¨@‰Ò•/Ò•.Ò•. Š ‰"Š ‰2Šþÿ ‰•÷ À‰�À‰‡‰ -- directory not empty ? ´0 ð€&Ð 6÷ �–% ‰HangupQuitIllegal instructionTrace/BPT trapIOT trapEMT trapFloating exceptionKilledBus errorMemory faultBad system callw æÎß &Îß ZÀ%ß &Bà ÷, è!÷ Ä7�ô!À5ÿ÷0 Ô!Ã4 Îæß ¨Ö 7�Ò!W-7 ´! ß & ¦ß ¨Ö Ä Žß l ÎF ß 6 —®-·Š–!Îæß &Ö Îæß &Ö €Àe7V!@Àeÿÿ7L!÷ J!ÎD!ß l ÷ t7�D!÷ òw w ú²@Àe®û7$!@Àeü7!@Àeü7 !@Àeõÿ7!7Š !7Š!Ãö ÷ J×¢ ù@ÀeJû7ê ÷‹ê ÷‹æ ÎÖ @Àe®û&ß &Ö ÷‹Ì ÎT ß 6 Žß w„w rÀ¢ ÷eœ È” ÷ Æ�&û‘÷ ¼�Á� ¡ ·Š€ 7‘x AÀh · d ‘ÁU€H�éÀT · P ‘ÀJ · F Š,·œb y 7‘: ÷ b�Ϊ ‘&ß ì Ö À 7‘ θ ‘&ß ì Ö À ·Àþ· úŠÀò· î‘ÝwÂw °Ää@À 7`Úw¦w ”÷‹ÊÄ�Ä7ŠÀ‘_ð÷-°°ƒ÷å¦÷ Ôÿ�À% ù÷e’μ ß 6 ·ŠŽ‘_ð÷-xxƒ÷å n÷  ÿ�À% ù÷e ZÎÊ ß 6 ·ŠZ‘?÷ > À8· 4’Ä‹‘37 &÷ b�¡\ ÷ V�¡ À "‘ÀU€¡$÷ 4ÿ�¡0¡9‘ÀeÐÿÀ-â‘À ÀmÖ7 ÿÎÅ‘ÀE€ÿw¤w ’Î@Àeøÿ&& ß à–%À%÷ ú @øÿÀEÿwrw `u-ÎÞ @ž&ß ì Ö À õeNfß nÖ ã w*w 5 øÿD5!CŸ5µ øÿ:õ øÿõ øÿ·Š.2õ øÿ&Îß ÖËfß &Ö 33 ¯&ÂòU!N&Îeß &Ö 3ÀÁâ 7ò þy Äeºõ øÿNfß &Ö ·Š¨wr w ` 5 öÿuøÿu-øÿC@øÿž2µ öÿ7õ öÿ4õ öÿ(Îß Ö5ôÿýôÿNøÿfß ØÖ Aôÿ1NføÿÎeß &Ö Aôÿ1@ôÿ0 @ôÿÁú 7N þyõeøÿ¹Nfß ØÖ wÀ w ® Ú5 "ÿ@žÀ%)õU"ÿ5 øÿ5 öÿ5 (ÿ5 &ÿ5 ,ÿ5 *ÿD5!_üŸ5$ÿ`õ *ÿ õ øÿ·Š”Àe5øÿµ *ÿXõ *ÿõ *ÿ5öÿPÄe5!¯>õU"ÿÄåõ *ÿ)Äe5!·ŠBÄåÎ!ž&ß ì Ö À ·Š$W-$ÿ<õ (ÿ·Š5(ÿõ &ÿ·Š5&ÿõ *ÿ@,ÿµ ,ÿÀ @a0.ÿÁ!7, þyÄe‹õ øÿõ ,ÿ·Š¾Îß ÖËNöÿføÿß nÖ 3*õ ,ÿ·Š’@,ÿµ ,ÿÀ @a0 .ÿN,ÿÎeß ÖË5 *ÿu-*ÿ,ÿ@*ÿÀ À`A*ÿÁ Aap.ÿ µ *ÿîs"ÿs(ÿs&ÿÀwü w ê õe @õe “À�&ý Ö �÷ïwÊ w ¸ Î&!fß ì Ö À _ð÷•Ø@wž w Œ @ÀE€ÿwŠ w x õ _2 @_ @ Î*!æß Ö À _z@ð _n@ ß À _lÎ0!ß 6 ÎF!ß 6 _2 ÎX!æß Ö À _¾×-&_¦Î^!ß l _2 À ð÷e÷ þ_2 În!æß Ö À _ ÷ ä_øÀ�ìß &NÎe æt!ß nÖ Î€!ß l _2 Θ!æß Ö À _(  æÿÿß HÖ _2 Ξ!æß Ö À _2 @5öÿ5 øÿõ5öÿ÷ 05øÿW-øÿÿÿΠ!ß 6 _2 õ øÿ)õ5öÿ Nß &@ß &õ5öÿ Nøÿß ® Ϊ!ß l _2 õ5öÿNføÿß HÖ _2 @ð  ß & @&ß ¨Ö 5øÿõ øÿ @ß l ά!ß 6 ÷ @ð Aõ5öÿÎ@&ß ¨Ö 5øÿõ øÿ Î& føÿß –%ζ@&ß <Ö 5øÿõ øÿ @ß l κ!ß 6 ÷ –Îß &Nøÿß ZNøÿß &õ5öÿ ß &Nß ZNß &@ß &õ5öÿÎß &@ß ZNß &@ß &õ5 öÿ@ð  õ5öÿ  ß & æÊ!ß ¨Ö õ5 öÿ÷‹ª  æß &Ö  æß &Ö W/@@öÿÀEßÿ4Pß ÷ ªÀ�`ß &7ŠRÎÎfß œÖ ÷‹@@ðÔ!NÎe@&ß nÖ ÎÞ!ß l ÷ \Îúfß œÖ NÎe @& ß nÖ ÃÞÂô!‹”ƒ ü@ “”ýNÎe æ¸Îeß nÖ NÎe æ¢ß nÖ ÷ ²À @ðþ!@ð‚ NÎe@&ß nÖ @ ß l Î"ß 6 ÷ ¨@5öÿ@Àeòÿß Æ@@öÿÀEÛÿÀU4P@Àeòÿf&ß –%@@öÿÀEÖÿÀU4PN@Àeòÿ&&ß –%,@ÀEßÿ5öÿ@t]öÿß @t]öÿß   Àå ‚À x* &< j Ú wbw PNß l Î"ß l ÷ j_h Î& & ß –%÷ ªw,w ý‹ @µ ’ß Ž ôw w øÎ@Àe&æß ð–%wêw ØÎ f& ß ¨–%ß ® Î f& ß º–%Îe0ß Ž w¬w šý‹ @µ ’@-Àñ w€w n@µ =¢ @µ È‹Àï wPw >õ GÎÒ"ß ¾ÎÒ"ß ¨@Àeøÿß Ð!ÿÿ5@øÿÀE€ÿÀÀ ð 5!ß ® Î"ß l ÀÀ  ß l õ5€øÿÎ"ß l à Î("ß 6 D-Nß æ ß æ¹w²w  õ Î*"ß "_W/Î0"ß "_@ ß "wvw d"@Àeîÿß ¾@Àeîÿß ¨@ðÿÀíŒ5èÿ@ôÿÀí„5êÿ@øÿÀí|5ìÿCý‹W¯/µ ö@µ È‹î ! @að’ÚÿË‹ƒ „ ôõ�(çÿÎ& À�&ß –%Î@ÀeÚÿ&À�&ß ð–%wÂw °R@ÀeªÿæÔß ˆÖ À  õ5I`®ÿ ÀwŒf…w ‰4"†wZ w\f…@‰†wD wFf…wôwð‰8"†w$w(f…@)‰†wwf…wÈwĉ>"wôf…‰†wæ wèf…‰ÀEÿwÚf…w”w�‰D"†w¸w¼f…*‰†w¨BJ w¢f…@w^wZ‰J"†w|w€f…@wBw>‰P"†wZ w\f…Awnwj÷5bWpÁeP"W V" ‡W ž" †ñHwB‰ž"‡wÀwf¦æ&Ø „ƒ‚�€f…ww‰¤"†wØ wÚf… ‰¦BR‚wÄf…w䉪"w²f…÷ X&‰†Ö w–Ö }w’f…@w²w®‰®"†wlwpf…@‰ rÁ �dA! þ‚Af… w,üÿ.Àw"(Àe w"Àew"@l€ …‡ß Ö –%Æe7bÀÿÿF…‡Õ @…&æ¦äHÅåF‚ƒ„…‡€�6rw*‡€�6r@‡$8HR\px‚�/usr/adm/sh_acct% # /usr/adm/su_acct: cannot opensyntax errorj r ~ Š   ) ˆ02dˆd2dddˆ0dddd '" ;&<>()|^ "'Too many argsToo many characters;& &();žžˆŽž()^|HNTT¼<>(()<>&FtVÎ[?*chdirchdir: bad directorychdir: arg countshiftshift: no args login/bin/loginlogin: cannot execute wait:try again : cannot open: cannot create/dev/null/etc/globglob: cannot execute /usr/bin//bin/sh: not found : -- Core dumped**gok() ‰‰ ‰‰‰‰7ï7ï7 ï7ï7ï7úî7ôî7îî7èî7âî7Üî7Öî0‰‰+‰‰JKLMNOPQRST@r ð€&Ð 6÷ –% ‰w JuæÿW-æÿý µ æÿõåõ æÿ@æÿ`õe fß FÖ 5èÿNæ ß Ö çÎ@Àeêÿ&fèÿß $–%W-êÿW-êÿ Næ ß Ö Nèÿß ´ÈW-Næ$ ß Ö Nðÿfîÿfìÿæ* ß Æe@ìÿ@mîÿ@mðÿ5äÿNäÿfäÿæ4 ß –%Nèÿß ´›wjw X€wdDÄeÀŸZ · T %ß Êôw<7 @7 6ׯ6-· .· ,÷,v 7 $ .÷t ƒÓ ÁvBÝ üJ–dÜof eÄcÎs¢l Ó•-÷ 6 r f÷ ðÿ€Àe0�‡•à •$Á¢“”C~÷ fWtýÿÁEà÷ ðÿ€ÀEøÿÀe0�‡Âv÷  Âl÷ –‚Ò Â ƒó‹ÿÿà ùÎ ÁFÁàŠ�`wF÷ :ß Ê÷ 6û·.Ο*· $ß Êø÷  ÷ Î ß Ê÷ ûwœþ7 ú ÀŸð· ìÀå0 ‚· âWp `ñÀe0[ƒÄeÓ•?‡f…@‰†w¾ wÀf…@÷ ¬÷¤w�w Ì‚ @�w À‚ ×-Šw Ò‚ @7 hw|f…w\w ¸‚ 7 Rwff…@ww ‰> †w@wDf…wöwò‰D †w"w&@…&æ¦äHÅåF‚ƒ„…‡7ÀÿÿF…‡fA7´‰J ‡  �…Ñÿÿ�±…fAñ &÷ €ø9�± �…&fA÷ �€…@Àe&7€w|·ãv@‰l ±ñ‡a.out%s not found Bad format: %s %s: %l+%l+%l=%l (%o) ‰‰‰¶w w&w Tã€Àw Jã…‰À2 ð€&Ð 6÷ –% ‰w Vw&õ _õe@žÀ%-Juøÿµ øÿ@øÿ’6@øÿœÿÿÀ%- ÀÔ%· Ð%À ÀmÌ%È -· ´$æ· °$ã· ¬$à· ¨$Ýõ õe@7–%Ò÷ÿÿXν Nß T 7H Á 7N þyº@žÀ%+ ½ Nß T 7B$ À@%· <%À Àm8%H�÷ ,% À&%· "%À Àm%È&  !€4‘¶%„ ù÷ ø# Äa!z4�–%¶%„ ø7Šr$÷ ®  !€ À�¶%@à4�¶%„ ô÷ ¼#' !0! ! ! ô•ÿÿ¶%„ ïÎ@æ:ß Ô Ö Î`æ[ß Ô Ö Îæ{ß Ô Ö  æ€ÿß Ô Ö ÷•ÿÿa$Ä€ß xÀ%ÿÿùÄåÄåß x÷D&,#ÄåD&Àeþ€ ÀE€7#Á#À r7#À#t7ü"Àö"À Àmô"7ò"÷( à"÷Ü"Ü"ׯØ"X· Ð"ùÿ•aÈ"ÎÌ"æ¾"ß úÖ À ΀æ¬"ß  Ö Ä ׯž"zÀ”"œÀ%t÷8 „"ÑÎD ß ¬ ÷ ® ¿Št"Õß ò · h"Îæß ˜Ö À5ÎÚæß ˜Ö ÷Z#B"÷ L"÷ÿÿ&÷ X ß ò ÷ 6" À4#ÀeÀ-" ÷ ¶Îe&ß VÖ Äeî7!ô!÷ JÎê!&ß VÖ ÷ –w6 w $ 5 øÿ5 öÿÄÐ!ÃÊ!ÀÂ!À ÀmÀ!À ?†Àº!Àm²!!9†Î!ß v �À% ' õÄ Î|ß ò w-öÿ˜"Nöÿµ öÿß 5ôÿ7 Z Î!fôÿß : Ö À Nôÿß ´Ð µ øÿÃåºÎ æÀÀí0!€ &æ(!ß j Æeõ øÿ÷ !÷ ´÷ `÷ ! ƒÄÎ#“&ß ö Ö ¥ öñÎ#ß & ÎÐß ò õ øÿ‚w( w  ÄÈ 5 öÿBµ ,Žß 5øÿõ øÿ ß & 4Îeføÿß : Ö À Nøÿß ´@öÿÀ 0!ß –À µ öÿÄe‚ ÑBöÿÎ æ¦æ!ß j Æe 4€À !Î#À’&ß ö Ö ×¤ ö€À !ß –À   €À Àe!ÃåÀÀ%!†ÎÎeþÿæß Ö À ÄËþÿ3þÿëÌÄØBµ ß ò Äe· Î Žß ß  ß ò ‚ éÎ#ß & ÎŠß ò wè w Ö @ÀeDÎß v  À”�— ó w² w   Î#æH÷ "Ö &ß ¼ Ö À ÎX ß ¬ ÷ â· &w~ w l w-, @À Àm" žÀ%- @À Àm ð‹ !@À ÀmøõíîAÀ rÀea?�ÂÀ¾C —rÃeað�À¦w w î÷ ®Î#æ¤ß ¼ Ö À Îl ß ¬ ÷ 2÷hwÊw ¸Î‚ ß ¬ Nß ¬ ÎŽ ß ¬ ÷ w¤w ’÷ >· 8ÄJ7!0ß ß „ õ÷ Nwrw `Buøÿ÷ â Žß ¨ Nøÿß ¨ 5øÿ÷ ú Žß ú Nøÿß ú 5øÿ÷ Þ_@ @Àeòÿ¦ß  Ö @Àeðÿføÿß  Ö 5øÿu-òÿðÿ Áupòÿuêÿµöÿ@Ÿöÿß ˆ À µ öÿöuøÿôÿ@Ÿôÿß ˆ À µ ôÿöuöÿîÿuôÿìÿ õ êÿB-öÿƒu-ôÿøÿƒõ ôÿ@ôÿ’õ öÿAöÿA’@àÄêB-öÿƒõ öÿ@öÿ’À%0 õ êÿ@êÿ @òÿ _¤ èu-ôÿøÿƒõ ôÿ@ôÿ’À%0 õ êÿ@êÿ@ðÿ_¤ éÄ upêÿ@_¤ @îÿ’À%.‚ @ìÿ5øÿ’À%.µ øÿ€’ß ˆ À @Ÿøÿß ˆ À @øÿµ øÿ’�”@à õ êÿupêÿAðÿ@_¤ Ý€’ß ˆ À —¤0 õ êÿ@êÿ @òÿ Lë@Ÿøÿß ˆ À @øÿµ øÿ’À%0 õ êÿ@êÿ@ðÿ3瀒œ¶%‚ ú@Ÿøÿœ¶%µ øÿø!—¤ µ øÿêBuøÿ½¢øÿ—¤  µ øÿõ@Ÿøÿ�’@àwpf@ÀáwÖw ÄCÄL×¢ ×¢ ƒ ø×¢ ×¢ ×¢ ƒ õÄ ë×¢ ×¢ ƒ øÀw„w rCÄ,×¢ ƒ Ä úÀwbw PD£ £ „ øÃÆ£-À „ ýw*w C À’ß ˆ À Wp @Á”@`ÀeÐÿðwöw äW-9W-0À wÒw Àý‹ Îfµ æß 4–%ñwªw ˜D5!ô•ÿÿ¶%„ øwŒf…@‰†w^ w`f…w€w|‰� †w>wBf…@)‰†w*w.f…wT‰– 7‡A …‡7 æf…A÷ &÷ À€U…‡f…A÷ …‡ñ @Àe71@‰œ ‡À À 1 @Þ± ‡w¤f…wÞAɉ¢ F‡  Df…@A&÷ €À÷ 6f…@A÷ @+ñ 9�± ‡&÷ €óf…A÷ @Àe&7jwf·ã`@‰¨ ±ñ‡wþ7 Ü…‡w w ÆwÂAupNNmfß ˜ Ö wæw Ô Âœ@@í5ôÿ€ _ú �Á fAôÿÀ rBpuôÿ@@môÿ5øÿ5öÿD@€à5!øÿ†føÿ&ÿ D–%5òÿ µàøÿ@øÿ&ß þ Ö êõ òÿ„`åõ öÿ3ƒæföÿÿ –%5òÿ ε`öÿ@öÿ&ß þ Ö êõ òÿ5!øÿε`öÿ@öÿ&&ß "–%µ`øÿ@øÿÔÎ&ß þ Ö ƒà„`±ƒàÊ5!øÿ$@øÿ@íAAíöÿ ‡NföÿŽ`ß ˜ Ö uøÿ Nøÿfß ˜ Ö @öÿ€`5_¢ µàøÿ@øÿ&æß "–%µàöÿ@öÿ_è w€w nõ6øÿDC“Ô’“�õ øÿúw\w JõöÿDCB5“øÿ”’Ò’S�øÿõ öÿ÷w.f…÷ZVwmP‰® †wöÀDwm>wðf…w.‰® †wÔw  wÐf…AwZwV÷5NWpÁe® W ´ ‡W ü †ñ4w.‰ü ‡wŒÀw|f¦æ&Ø „ƒ‚�€f…wwü‰!†wL wNf…wæ‰!†w2 w4f…@wÌwȉ !†wwf…@‰7ÞÀÿÿF…‡Õ @…&æ¦äHÅåF‚ƒ„…‡ÿÿ-admnorRtz€†Œ¢ª-/usr/tmp/stmXaa/tmp/stmXaaCannot locate temp Can't create temp Can't create output Can't open ‰‰‰‰¶‰‰D&7,î7&î7 î7î7î7î7î7î7üí7öí7ðí7êí0‰‰ ‰‰YZ[\]^_`aà·àÖ  ‰Ð÷ Ô‰„7‰ †w ropen error: ë7¦Áaw�–‰Ð憉І� W zòƒw :can't create temp file for ‰7b7 bÀX‰æ÷-RF÷-J@ w ôimproper format: ¨Â,Âm*Âe7 &÷&ƒ ƒ÷À‰æÂàÀö‰æíw  unexpected EOF: ÀÔ‰À̉7‰ †w rcan't rewrite: wÎþ7¤‰Ð†w Ncan't read temp file for: ‰7tÀp‰æ7 Àb‰æòÀT‰ÀP‰wpþw•JÀ‰æ÷… ÅEw”0À‰æ÷À‰Ú…/tmp/stma @¶  ð€&Ð 6÷ –% ‰w |θ æß xÖ õ @_Òõe@7p Î ß äÀ Î€ß .Î ß äÀ Î€ß >Î ß äÀ Î@ß .Î ß äÀ Î@ß >Î ß äÀ Î ß .Î ß äÀ Î ß äÀ Î ß >Î( ß äÀ Îß .Î, ß äÀ Îß >Î0 ß äÀ Îß .Î6 ß äÀ Îß >Î< ß äÀ Îß .ÎB ß äÀ Îß >ÎJ ß äÀ Îß .ÎP ß äÀ Îß >ÎV ß äÀ Îß .Î^ ß äÀ Îß >Îd ß äÀ Îß >Îl ß äÀ Îß .ÀøÎòæt ß TÖ _*θ æß ZÖ wÀw ®ÀÈ 5 øÿÀº@møÿAAmøÿ ¢ @øÿµ øÿÀmš’ì7 ’Àwvw dw]‚wfw T@@ @ 7@lwPw >€wdDÄeÀŸZ · T %ß ôw"7 @7 6ׯ6-· .· ,÷, 7 $ .÷À ƒÓ ÁÂBÝ üJâd(oNfXecsîl Ó•-÷ 6 r f÷ ðÿ€Àe0�‡•à •$Á¢“”C~÷ fWtýÿÁEà÷ ðÿ€ÀEøÿÀe0�‡Âv÷  Âl÷ –‚Ò Â ƒó‹ÿÿà ùÎ ÁFÁàŠ�`wF÷ :ß ÷ 6û·.Ο*· $ß ø÷  ÷ Î ß ÷ ûwœþ7 ú ÀŸð· ìÀå0 ‚· âWp `ñÀe0[ƒÄeÓ•?‡f…@÷ Â÷ºw¦w ÈÎ @�w ¼Î ×- w ÎÎ @7 ~wxf…wrw ´Î 7 hwbf…@w ‰† †wB wDf…@w‰Š †w$ w&@…&æ¦äHÅåF‚ƒ„…‡7ÀÿÿF…‡fA7Æ‰Ž ‡  �…Ñÿÿ�±…fAñ &÷ €ø9�± �…&fA÷ �€…@Àe&7’wŽ·ãˆ@‰° ±ñ‡even-evenodd-oddraw-rawcooked-nlnlecho-echolcase-lcase-tabstabs-delaydelaytdelay-tdelayunknown mode: %s ‰ ‰‰¶w w&w Bä€Àw 8ä…‰¼ÌŠ  ð€&Ð 6÷ –% ‰w Îì& ß ðÖ À I7 (Äì£:Ô‹@ú„ ¢:>ÎP& ß ¨Ö ÷EøÎP& ß Ö Î¼ß ÈÈ÷ 8 �À% Ó‹4÷ Š÷UÆÎP& ß Ö ÎÈß ÈÎˆß òÔ¤ýã‹©:ÎÊß È ß ê æææÞß –%Îèß ÈÎþß ÈwLw :÷ d @Àeôýæß &Ö wôýJ õD ôý÷ > ÀN & æ. ß Æ–%5 öý5 øýB@Àeôýß bÀ% à À2Ò�ïŠBÄÄ €”À%:× Àôñ€”À%:× 0ø× 9õWp Á`ÁeÐÿDí5! ÀÀwtw b€w�DÄeÀŸ† · € %ß VôwF7 l7 bׯb-· Z· X÷b 7 P .÷þ` ƒÁ4BÞ üJTd¤oÊfÔe‚c�s`l Ó•-÷ ; r f÷ ðÿ€Àe0�‡•à •)à 'ÁÌ Ò‹ƒ D~÷ fWtýÿÁEà÷ ðÿ€ÀEøÿÀe0�‡Âš÷ zÂ�÷ p‚ƒà&æ Ä Ãmr÷ pß VÃ~Ä Ž”ß Và Î ß VÃ~Ö „wºþ7 D ÀŸ:· 6Àå0 ‚· ,Wp `ñÀe0[ƒÄeÓ•?‡f…@÷ ÷wîw üj @�w ðj ×-æw j @7 ÆwŒf…wºw èj 7 °wvf…÷  ÷\šÀ’‰\ ‡À À 7‚ Àß~· z…‡7ˆ 7 j…‡f…wb@÷ Æ7 Vwf…w@Àe7ø‰wøf…wê‰7‡A …‡7 (f…A÷ &÷ À€U…‡f…A÷ …‡ñ @Àe7ž1@‰ ‡À À 1 @Þ± ‡wvf…@wp‰$†w^ w`f…@wVwR‰(†w: w<f…@‰†w$ w&f…@w"‰.†w w7NÀÿÿF…‡Õ @…&æ¦äHÅåF‚ƒ„…‡fA7à‰2‡  �…Ñÿÿ�±…fAñ &÷ €ø9�± �…&fA÷ �€…@Àe&7¬w¨·ã¢@‰T±ñ‡f¦æ&fÀrЕЕ ²†P”ûÀ ÁrœÿÿC”Âx�� òø‡Är År æ Ã~ �rB`ÂE Œ\Z× „†�\^× ˆð‡ÎåÔ Õ !rå‡Ö ÀrÂÔÁE€ÿÁ Rr Sr  òõ‡ÄòÃ’ÂÀ �0…Š ú‡& s>Åe0W!9ƒÅeW!ZƒÅe„T‘!úᇅ„ƒ‚�Àò‡password: bad password file /bin/sh-cannot execute shell sorry /etc/passwd ‰‰‰ ‰‰‰‰¶w w&w (þ€Àw þ…‰ @€ @€  ¶ƒÖ à ‰·‰ †À‰"ñoprd  @‰º ‡À · zº„”aE ~ðÀ‰|÷ &À‰ÅP÷ À‰~@‰Ä? &fA÷ �€‡ r f÷ ðÿ·÷e0 À‰¶‡€ ð€&Ð 6÷ –% ‰w ÷ wf…$‰w&@…&æ¦äHÅåF‚ƒ„…‡7²ÀÿÿF…‡6—#‰ ‰wL÷ H ‰ÁíB+‰Z@p<74w2w Ò realÂZw w Àuserw w ²sys w ‰‰+ †w œTry again. ‰0‰‰ ýÁ5ÿw vCommand terminated abnormally. ‰‡Ö €Ö ÁÂjƒ‘Ò”þÀ  ø ‰jÀ`Ðx/ÐusÐr/ÐbiÐn/ ‰e ‰aw þCommand not found. ‰‰ÄTw Æ w À w º w ´ £0Ô• !SøÀ‰P‡€�r& r<w°ÄYw z w tä•:€w h w bä•:w X w R w L £0£:Ô• !XõÀ‰P w 8.ÁN rÀe07>À‰w  …f rÁe0d��…w•À‰÷… ÅE…lÖ/·®@·¨@÷΀@·Šy@Ö ×-˜@÷Ž@€·Š@” ÂøR Ò üTÚ õ÷ ÄBA÷ L>@÷‹6@ ÷Bh@÷ÀX@‰À÷ÿÿT@÷ðD@×-@Ήʉʇ7$@Á$@Wtýÿw@Á@WpÁe†w@‡w *Tape open error wœ×-À?Î w¸?…@È‹ü…w öBad usage wn0H1H2H3H4H5H6H7HcRd^fXifmlr~tŠurv’w˜xžw�|w��‡·Š1?‡·Š,?‡w hÿ¦‡·Š?‡·Š?‡·Š?w Pÿ·7Š ?w Dÿ·w <ÿô‡·Šö>‡·Šñ>‡w (ÿL‡w .ÿŠ@‡@ˆ@×-ú>w&ÿ÷ lw ŒÔ÷ Jw ÿ÷‹¯>÷‹¬>÷ J÷ $÷ Ø÷ R7w àþ‡@ˆ@�@÷ *÷‹„>w Ð mode uid gid tapa size date time name w ê w ˆþ‡@ˆ@÷ Ôw ô ÷ Öw tEND ‰¦ B”’÷ Ò‹û‚…¦fABR”þ�‚…&Àe †ÀEÿ7 7‰‡€‡w Out of core w”ÿ@”÷ û‡@•÷ û… ÅE…7�’=À‰†@‡ ‰†@À�z=‡Á†Â¤=÷ ƒ~‡fÎe N ý‡Ö ‡7 ^=÷ Øÿ ÷ °÷ 4À@/÷‹@=7j=Á†Âb=Â5÷ Æ0fæÀ & Îd~·S=Ö ƒË ÷ê ÷ â Ãe fÎeÑ ÑN ý‡Ö ƒÃe@�ñE€Áe­~÷ Ú<w "ÿDirectory checksum ÷‹µ<wŒþ÷ ¾‡ ÷ ÷‹ <‰Ó‡‰ã ‡‰†0@‰÷¬<‰†0‡ · 6<‡w NþTape read error ÷‹ã;À†0  †2ü‡èw¬ýÀø;‰†0‡ · ò;‡w þTape write error wzý7Ð;7Š À¾;‰|!‡‡&Àí¼;  ·p ÷ j À˜;‰‚À�;‰Â@·’;·V À~;‰ˆ‡‡w šýTape seek error w ýw•4 … ÷‹);÷‹";+÷  fÁÆ@÷ Xý�÷‹ ;w Xý ÷ tý x÷ jýwÌü  y÷ Vý ÷ Lý ûØw ý Õ …×-æ:÷.ò:÷ ž×-Ô:÷ Ì:ÁÌ:÷eÆ:ÂÆ@R”þ÷ |Æ@%‡&€‰œ@‡À ÷ ‚:öÀÆ@Áž@W¢.ïЋþÀ &¬ÿÿ/Е/P”þ÷ 0Šß€‰‡ÁÆ@÷ züw ‚ü -- Cannot open file wðû‰Æ@Aé‡Àˆ:ÀEÿŸ @¸‡Á†& É Î NÁew :ö‡�w ,üDirectory overflow wœûw Œþa‡w œûÆ@w ¨ûæ@ÂÆ@Ãæ@‹¤ÚÓ‹üÖ ÷‹•9 w, (:‡'‚w, :#†w Lþr‡ñô9ñU€ñ�ë9ñ�æ9÷‹Z97ŠÛ97 Ø9ñ�Ó9ñÎ9ñÞ9 ñÚ9 ‡Á†& É w &ûÆ@×-L9ÂÆ@ÃB9Ë‹“¤ü Ê‹—¢/fý �Ž Áew &9ß‡Ö ×-9 Á 9÷ $ûw ,û not found ÷ î8÷eì8×-ä8ÁÕ …w ‚ýd‡÷ >û‡f& f&@œÂœ@Ò — ¨@û‡W#ò00þÿ�÷ @à·€7~À‰˜�… r f÷ ðÿ€Àe0�‡÷ TÁ†É )ñ5€%ñ‹ñ æT8Ž BœCÃeÿB —v÷ÿ÷8‚à 8÷ t‚ °µ†0Ç~±÷ 8Ž ïÁew 8Ї÷ 0ûÁ†& æÿÿÉ ñ5€N,†NvÁew â7î‡Ö �‡ñE€wœÆ7B÷ ¼7Ùw „ùÆ@@÷ ôû ‰Æ@-‡÷ œ7— ‡À‰†0!‡ ÷ ‚ûÂå· x7ë·\ À‰ž‡7 N ÷ `ûÀ‰†0‡À À‰w@ÿfÁÆ@÷ Xùw `ù -- Phase error �1 ê‰èÀ†0  †@ü‡Á†É ñ5€ñ ñ‹÷ Áew î6퇇BœCÃeÿB —v÷ÿB÷ °³†0°Õ†0‚ É~‡¦· À6†€ÀEøÿ&Àt6€týÿÀEà‡w ¶øTape overflow w*ø÷ \ÿÂ†Ê · H6Âe· j6÷‡Âb6‚ Ãd6à ÃíV6÷ ”ÿ°µ†0· "6·"6· 6÷‹6‚ Ñ~À6w Rýw Hø entries Àò5w :ýw 0ø used ÷‹Ð5 ÀØ5w ýw ø free ÀÄ5w ýw þ÷ last ‡÷‹ž5_@&túÿÀ5 ÷ ¼€týÿÀ5€÷ ®€À5÷ ¤ @Üw ¾ü @Üw ²ü@w ¨ü@w ¦ü fÎe ÷ ¤ w ˆüÀ/÷ Œ÷€€ w rüÀ/÷ v÷€w ^ü€w RüÀ:÷ V÷€w >üÀ ÷ B÷ÁÆ@÷ ÷w $÷ ‡æsÀ5æxæ-À5æwæ-À5ÀrÀ-÷ öö€÷ ðö€÷ êö‡wœª4ñ Gw @ùx‡C@÷ Âø ‰Æ@wt‰¤<‡÷ x4× ‡÷ (ø€‰†0(‡ %à· V4ì÷F ÷ ø€‰ª‡7 4€‰wœ.‰°wœ*‰¶@ fA ‰¼�‡ f �€‰ÁÆ@÷ öw ö -- create error ‡ESTEDTw pNß ô ß øwhw V @ÀeòÿL@4Àø &ß 4Ö ß ÂÀä×, J×, J— — ×, ÷U¶õÿÿøÿõoöÿÎwæß Ø Ö 5øÿÎ/æß Ø Ö 5öÿÀ„ µ øÿµ øÿ×,µ öÿµ öÿ×, Î&ß 4Ö ß ³ Àw„w rDC ß ¤@mÀe“þÁím Áe¼À rfÀ€åwDw 2΀p@&fß –%Ã3Â.AÁÀ r<RÁÀ r<ÁÀ r<RÁÀ r<À rWtC`À rÒÁeÀ rwª2ÃFÎß ¤!Îß ¤àƒ õ÷Š27Š2Îß ¤À%n÷2 ÀÀ ,ôÀÀ ìôƒ õ÷€ Ò7 P2À.Awdw RÄlÃÀ”�üAA WpÁe0CÄlÔ”Ô”Ô”„ @Àe�WpÁeFCÔ”Ô”Ô”Ž&ß ÈÖ ŽÎed&ß ÈÖ ŽÎed&ß ÈÖ ŽÎed&ß ÈÖ Äe@ &ß ÈÖ Àlw¸w ¦AÀ rÁ ÀnÀmw”w ‚D„ W- C —r �À r Áe0T�Ô• AÀ r Áe0T�wJ€�6rw1‡€�6r@‡f…@õ Á P`Hm` …‡@…&æ¦äHÅåF‚ƒ„…‡w ò‡w ò‡‰‰‰w Lòx ‡‰‰†0‰Æ@‰†0‰Æ@‰Æ@‰Æ@/dev/tapx/dev/mt0/usr/mdec/tboot/usr/mdec/mbootPFÒ Ö Day Mon 00 00:00:00 1900 SunMonTueWedThuFriSatJanFebMarAprMayJunJulAugSepOctNovDecpqrstuvwx€* ÷ À 7�À‰‰ttyx € ÷x‚æ ‰†"‡ÎP‰€‡@‰†‡ À†$ô$ttñ¤yîЋì¢é7˜:@‰Ö À�0‡/dev@`ô  ð€&Ð 6÷ –% ‰w BW-Y@¢- @¬9 @Ž ß L7¬@œ7üõ õeÕ@¢+@Ž ß L7põ õe¿ @&ß $Ö 5øÿõ øÿ @æ ß ”Ö ÷ twøÿ’ ß 7†W-ζ@&ß òÖ 5øÿõ øÿ @æ ß ”Ö ÷ (wøÿ,)Îß 7) ß ÜÎß ÜÎn"ß Æ· ÎV&ß ÆÀ În"ß ÷ $÷ ÞÎV&æn"ß pÖ À çÎn"ß 7 Þ· ÚÎn"ß ÆÀ ÎV&ß ÷ æ÷  ÎV&æn"ß pÖ À çÎV&ß 7  Áw¤w ’÷ Ê5øÿÀ% õ øÿÀ @µ H�øÿì=Š wjw XÀX÷ T7 N*÷ F%Î:æ& ß ”Ö ÷ D"cd uF7 @µ ’5øÿNøÿß @óÎ ß @wúw èNß Ê5Nß Ê5@µ ’5øÿ @µ 5¢øÿ îý‹ · ¤Àw w Ž 5öÿ5øÿ@øÿµ øÿÀ-W¯ W¯ µ õW¯ W¯ ý‹@µ ïÜ@öÿµ öÿÀ-Ô ý‹@µ ð@ww 5 öÿ@µ ’ÀeÐÿ5øÿõ øÿW-øÿ AöÿWp @@møÿ5öÿæ@öÿwÖw Ä€w¢&DÄeÀŸ˜& · ’& %ß @ôw¨7 ~&7 t&ׯt&-· l&· j&÷,@*7 b& .÷>*ƒÓ ÁBÝ üJ"dhoŽf˜ePcZs.l Ó•-÷ 6 r f÷ ðÿ€Àe0�‡•à •$Áà%“”C~÷ fWtýÿÁEà÷ ðÿ€ÀEøÿÀe0�‡Â´%÷  Âª%÷ –‚Ò Â ƒó‹ÿÿà ùÎ Á„%ÁàŠ�`w„%÷ x%ß @÷ t%û·l%Οh%· b%ß @ø÷ Z% ÷ N%Î ß @÷ F%ûwœþ7 8% ÀŸ.%· *%Àå0 ‚· %Wp `ñÀe0[ƒÄeÓ•?‡f…@÷ %÷ø$ww RL*@�w FL*×-Þ$w XL*@7 ìwÐf…wàw >L*7 Öwºf…÷ Æ÷l ÀÀ¸‰l  ‡À À 7¨ Àߤ·  …‡7€& 7 �…‡f…@‰†w` wbf…w2w.‰, †w@wDf…@)‰†w,w0f…ww‰2 †wwf…@‰7&ÀÿÿF…‡Õ @…&æ¦äHÅåF‚ƒ„…‡�¦B@$ü‚‚YfA7¦‰8 ‡  �…Ñÿÿ�±…fAñ &÷ €ø9�± �…&fA÷ �€…@Àe&7rwn·ãh@‰Z ±ñ‡cannot open %s cannot create %s %4d ‰‰‰¶w w&w bæ€Àw Xæ…‰€Ò8 ð€&Ð 6÷ –% ‰w Nõ øÿW-@5øÿ føÿß ìÖ 5òÿõ òÿ Îæ ß ,Ö ÷ òÎß Ø7†"Îß ÂÎæÒ fòÿß –%5ôÿõ ôÿ÷ ÷ ºõÒ îÿõÒ îÿõåôÿ]ý‹îÿW-R5 ðÿW-ðÿ@îÿ@mðÿÈ‹@îÿ@mðÿÈ• @îÿ@mðÿ’ß hµ ðÿå5 ðÿW-ðÿ @ðÿœ ß hµ ðÿò@îÿœß hNîÿÎe ß 5öÿõðÿW-ðÿ @öÿ@mðÿ’ß hµ ðÿñÎ ß hõeîÿŸ†wf…@÷ z!÷r!wl!w $î"@�w î"×-X!w *î"@7 D!w´f…w8!w î"7 .!wžf…@‰†w† wˆf…@)‰†wpwtf…w,w(‰ †wRwVf…@ww ‰& †w0w4f…@wôwð‰, †wwf…@‰7˜"ÀÿÿF…‡Õ @…&æ¦äHÅåF‚ƒ„…‡fA7¦‰2 ‡  �…Ñÿÿ�±…fAñ &÷ €ø9�± �…&fA÷ �€…@Àe&7rwn·ãh@‰T ±ñ‡ESTEDTw ZÿNß $ß (wRÿw @ÿ @ÀeòÿL@4À. &ß dÖ ß HÂÀ×, J×, J— — ×, ÷UìõÿÿøÿõoöÿÎwæß Ö 5øÿÎ/æß Ö 5öÿÀº µ øÿµ øÿ×,µ öÿµ öÿ×, Î&ß dÖ ß H³ Àwnþw \þDC ß Ô@mÀe“þÁím Áe¼À rfÀ€åw.þw þ΀p@&fß B–%Þ Âö$ÁÀ r<RÁÀ r<ÁÀ r<RÁÀ r<À rWtC`À rÒÁeÀ rwB ÃFÎß Ô!Îß Ôàƒ õ÷" 7" Îß ÔÀ%n÷h ÀÀ ,Z ÀÀ ìZ ƒ õ÷J€ Ò7 èÀö$wNýw <ýÄÒ"Ã| À”�üAA WpÁe– CÄÒ"Ô”Ô”Ô”„ @Àe�WpÁe¬ CÔ”Ô”Ô”Ž&ß øÖ ŽÎed&ß øÖ ŽÎed&ß øÖ ŽÎed&ß øÖ Äe@ &ß øÖ ÀÒ"w¢üw �üAÀ rÁ ÀnÀmw~üw lüD„ W- C —r �À r Áe0T�Ô• AÀ r Áe0T�w4ü€�6rw¶‡€�6r@‡f…@õ Á P`Hm` …‡/tmp/utmpcannot open wtmp tty‰‰‰‰¶w w&w bâ€Àw Xâ…‰PFDay Mon 00 00:00:00 1900 SunMonTueWedThuFriSatJanFebMarAprMayJunJulAugSepOctNovDec€h—% À‰µ ‰·ŸïÖ …‰Ö†À‰¿‰7 À ‰ À w÷‹½÷­·Ððà D  ¥üô‹ÿÿäó¥ ÿÿà÷�ª–‰ ‡‰ , ‡÷5žÀ‰‰7v ÷ t7�Z‰ ÄrÀ˜‰Àމ À c÷ NöÀ ÁÐ¥ Á û ÁewÀ"‰ôÀ‰ À‰Ò0‰Œ ‰T À 5÷ à ×-(! ‰6‰À‰Ðê7 À×-  · ´ÀĉT Üw•òÀ‰T ÷÷‹•À‰ À‰ä‰ÀЉà‰÷??~ª ‰¬¨‰¬/etc/mshArg count Cannot open utmp ! ... /tmp/utmpEOT not logged in. Message from Permission denied. € ÷xZæ ‰X "‡Î(‰ ‡@‰X ‡ ÀX $ô$ttñ¤yîЋì¢é7˜@‰Ö À�‡‰  /dev/ttyx/dev!ls"mail#mkdir$mv%nm&od'pr(ps)restor*rew+rm,rmdir-sh.size/sort0strip1stty2su3sum4sync5time6tp7tty8uniq9who:writeolpr..;.<tty8=nullfH$0‰0‰ ‰²À ÀEéÿ7�w èŲw �   @ó #W!²ïƒÅ íW!Ðê†�è÷URÀ ÷ ØÀ ÷ ΊŲ@• A‡ Z‚Àe 5�ÿÿó að‡ zí‚÷EéÄÂô] ‰f ‰ R‰ ‰°"‡À ÷E€ÿâÂÞ — |†ÀÀ�Î÷ V€…βw  ‰°‡À Â�¬öæ‰ÁBwZ÷X6÷ ‰jLJfw>w"�@”÷ û…ÀE€ÿ7�lÀ‰°‡X ²z“€n†t‰‰àˆàÈ :login: ;login: /bin/login € d Œ ð€&Ð 6÷ –% ‰w JW- Î æ æß –%_(5 îÿ÷e¼5 ìÿõe@5´ÿ5²ÿ@´ÿµ ´ÿ’5ôÿ W-ôÿ*W-ôÿ?W-ôÿ[ëN²ÿß Aîÿµ îÿÁ Ámd õ @À%Î_Hõ ´ÿ@´ÿ’À%/=Š´ÿ u-´ÿ²ÿæ f²ÿß ÄÖ 5ðÿ@´ÿµ ´ÿÈ•/u-´ÿ²ÿÛ æ ß ÄÖ 5ðÿ Î æ æß –%_(uîÿöÿÎ@Àeòÿ&fðÿß â–%À 4Î@ÀeÞÿ&fðÿß â–%õ òÿåN´ÿ@ÀeÞÿ&ß ,Ö À @Ÿ´ÿ5ôÿ=Š´ÿ@ÀeÞÿf²ÿß 2Ö Aîÿµ îÿÁ Ám` }�ôÿ´ÿ¿Nðÿß –uöÿøÿ@îÿÀeÿÿ@-øÿ8uøÿöÿµ öÿ@öÿ@-îÿ+@öÿÀ Àm@øÿÀ Àm&ß ¸Ö À @øÿÀ Àmú5ôÿ@øÿÀ ÀmìAöÿÁ ÁmâH@öÿÀ ÀmÖHôÿε øÿÁõ @À%_HW-îÿ Î æ" æß –%_(@îÿÀ Àm� ÎŠß x΂æ~ß ¬Ö ×-v'CÎlæ, ß 2Ö 5øÿÎZføÿß ¬Ö ×-N'/Nøÿæ2 ß 2Ö 5øÿÎ2føÿß ¬Ö ×-&'øÿ÷åÀÈ8 Îæß ¬Ö Îæ@ æß –% ÎæT æß –%ww W¯.W¯. Nfß ZÖ wêw Ø @Ÿ5ðÿõÿòÿ@Ÿ5øÿ_Z5 ôÿµ @’5öÿ@@öÿ+õ ôÿ µ Nµ fß ZÖ b `@œ5öÿ@-ðÿ Àu-òÿðÿ ÁA @@5PôÿÁh 7z þy@öÿ5òÿ@-ðÿµ ôÿ¸ 2õ ðÿ µ Nµ fß ZÖ # !µ Nfß zÖ @ðÿ ÀÁt 7 þyu-øÿðÿÐ wÊw ¸ý‹Àý‹Nfµ ß ZÖ À Àî wŒw z@µ ’5øÿ @µ ’5öÿÀ u-øÿöÿçu-øÿöÿ Àw>w ,õòøÿÀì· èAµ H’õ@øÿww õÆøÿÀÀ· ¼Aµ H’õ÷ ªÀ¦· ¢Aµ H’õ@øÿwÌw ºDË‹ÓÅ€ÿûøw®f…@‰†w€ w‚f…wÔwЉˆ wbf…wÂw¾‰Ž †wHwLf…@w¦w¢‰” †w&w*f…@wŠw†‰š †ww7Ø#ÀÿÿF…‡Õ @…&æ¦äHÅåF‚ƒ„…‡p(  Arg count /.No directory No match /bin//usr/bin/shCommand not found Arg list too long -]¶”ú*?[H4zj ‰‰‰‰crt0.oglob.oclose.o–execv.o¬open.oÄread.oâwrite.oretrn.o&rsave.o4savr5$*_main"_ab$  _ava$p(_av# _string# _errno$*rsave"6_write"_copy"_open"Ä_read"â_match",_cat"2_close"–_compar"¸_strip"x_execv"¬rretrn"D_amatch"Z_umatch"zretrn".cerror"&mrsave"4Ž® ð€&Ð 6÷ Z–% ‰/bin/sh-/etc/rc/etc/init/etc/ttys/tmp/utmp/usr/adm/wtmp/dev/tty8/etc/gettyw @÷ tÀ%öC÷ VÄ  æ ææß ¸Æe÷ �÷ J!ûΤæ<ß †Ö ß pÎæFß Ö Î& &ß P–%÷•~4 Î!ß ÖÎæ!&ß –%ß p÷ ~Î�æß tÖ  ! ß p„ ø÷ À-÷ >÷ ¢Ä ÎæTß Ö  ß ¤ ææß ¸–%÷ Î÷ ˆ!û÷ þ ææ(ß ¸–%÷ ÷ D*öj ö” æ2ß Ö 7ê– ÷ À (×-Ü0øÃ– × !†÷,Êó  ‡Ä‹ ³³ò¨ò¤ÂeÃeßÔÎŠß p— – Ž— !†Žß ŒÂe÷Ö × ! †ó Ë Îß Ãeò÷ ¨Ã– × ! †Ä"Îß ŠÎß ÃeòìwPw >Ä– !!†ß ŒÄe÷w0w DÌ ß ŠÎ &ß òÖ 4 ww ôÎæ !æÆß .–%À%×­K  À�<7¨À�57¢À�.ÀeÐÿ7˜÷ ”×-Ž7 †Àw¤w ’B÷ ®Ä , æß tÖ Ã ³œ æß PÖ Î’æß 0Ö Îæß Ö  ß ¤ æ€À & ß ¸–%÷ ª w2w Îæ<ß Ö à @!aÄeÙÿ ÀeÐÿt&æß P–%Îæ$!æß –%Îß pÎæFß Ö à @7œÎ!ß ÖÎ& æß P–%Îæ!æß –%Îß pwŒf…wÔwЉ †wT wVf…wºw¶‰ †w4 w6f…@‰†w w f…wŠw†‰ †wþwf…@)‰†wêwîf…w^@Àe7V‰ wÊf…‰†w¼ w¾f…&‰w´f…€·&‰$ †w” w–f…ww ‰( †wtwxf…@wôwð‰. †wRwVf…@wØwÔ‰4 †w0 w2f…Aww÷5øWpÁe4 W : ‡W ‚ †ñÞw؉‚ ‡wîÀwÞf¦æ&Ø „ƒ‚�€f… ‰¦BR‚wºf…÷ D&‰†Ö wžÖ }wšf…@wpwl‰ˆ †wtwxf…@‰Af… w,üÿ.Àw"(Àe w"Àew"@l€ …‡ß Ö –%Æe·®w¬·ª‡Æ ÅžÎœ‡7˜ÀÿÿF…‡Õ @…&æ¦äHÅåF‚ƒ„…‡�¦B@$ü‚‚Y^/dev/ttyx‰‰‰ ‰%‰‰‰‰7‚å7|å7vå7på7jå7då7^å7Xå7Rå7Lå7Få7@å0‰‰b¶þ ð€&Ð 6÷ –% ‰w Î¸ß Ð W-Îbß ä ÷ Ð @7¸@7°Î¶æ¦ß N Ö 7f÷ b Î’ænß ä Ö ÷ ’  æ~ß l Ö 7<÷ 8 Îjæ‚ß ä Ö ÷ j  æXß l Ö 7÷ U5 öÿ5 øÿÀ<@møÿÈ‹*À0@møÿ’À%0À @møÿ’À%9 Îæ”ß ä Ö ÷  AöÿWp ÂöBmøÿ‚’�`ÁeÐÿuöÿµ øÿÐwöÿøÎèföÿ& ß @–%Îe+föÿ& ß @–%7ÐÎÌæ¦ß ä Ö ÷²jW÷ Ž æÈß l Ö 5øÿõ øÿÎÈæÀß ä Ö :ÎæÈføÿß Š –%×-*ÎÈæØß ä Ö !ÀÀm5öÿW-öÿÎÈæèß ä Ö NöÿæÈføÿß Š –%ÎÈ& ß ¾Ö Nøÿß 8 ÷ x7÷ p7 ÷- ‚ÀÀíü ÀeþÿÀ-ô ƒÎî æì æöß ä –%÷ Ì  ß „ ÀÔ Àeÿÿ5öÿÀÆ € @-öÿNöÿß „ õ öÿó5 öÿW-öÿ@öÿÀ 0 ȵ öÿô5 öÿw-öÿŠ ÎÈföÿÎeß ¾Ö µ öÿð ß è5 öÿW-öÿ@öÿÀ 0 ȵ öÿô÷êä÷æàÎæß ¾Ö wH w 6 0÷ þõ€ÚÿÎ@æ æ`æÀ�¼&ß Æe5PÚÿÎæ À�£&ß –%5PÚÿÎæÀ�Œ&ß –%5PÚÿõÒûW-Òû/@ÒûœÈÀ%0@ÒûœÈÀ%7ÎÈ@ÒûœÈ&æß ä –%÷ x @ÒûœÈÀeÐÿÁCÒû×pÁàt5PÚÿµ ÒûÍ÷ ¾5�Ýÿ÷ ¶5�Þÿ· 6õ2ØÿÎæ(& ß @–%À-4 †Î"ß ä ÷  õ•Üÿ5Šßÿ5 àÿ5 ÒûW-Òû @ÒûÀ @a0 âÿµ Òûó5 ÒûW-Òû@ÒûÀ @a0 Øý@ÒûÀ @a0 Øûµ Òûíõ @ÀeØÿ5õŠÜÿ5 Öû5 Ôû@ÚÿÀEÿŸ_Ø÷ | æÈß l Ö 5Ðûõ Ðû ÎÈæ4ß ä Ö _èÎ@ÀeØý&fÐûß Š –%5ÒûumÒûàÿ@ÀeØû@ÀeÔû&@ÀeØý&@ÀeÖû&ß Z ÆeÚNÐûß 8 _è÷ €t5âÿ÷ t5Pâÿo@°Š@ÀeØû@ÀeÔû&@ÀeØý&@ÀeÖû&æFfß â Æe µŠÜÿ@ÀeØû@ÀeÔû&@ÀeØý&@ÀeÖû&æJfØÿß â Æe õ àÿ÷ p×­D$÷‹=#@ÀeØû@ÀeÔû&@ÀeØý&@ÀeÖû&æÈæJŽ ß â Æe õeàÿ@ÀeØÿß èÔ ÁL7t  þyõ Öû@ÀeØû@ÀeÔû&@ÀeØý&@ÀeÖû&ß Z ÆeW-ÔûõUÚÿ÷ â5Öû@ÀeØûfÖûß ¾Ö uÖûâÿ5 Òûu-ÒûÔû@ÒûÀ @aAÒûÁ AapØûâÿµ ÒûîÀF 5öÿ5òÿÀ< 5øÿ5ôÿ@ØÿÀe5ÒûÎfÒû& ß @–%5ÖûÎfÒû& ß R–%tÀeÈ5Îû@ÀeÚÿ5ÌûÎÈfÖûß rÖ 5 ÒûW-Òû@ÎûõeÎûAÌûõeÌûHµ ÒûîÎÈfÖûß ¾Ö ww 5 øÿ@@møÿÈ‹@�AAmøÿA’ @øÿÀ @aµ øÿçW­- ÎÈ@�&æ`ß ä –%÷ ”w¸w ¦÷ n5 øÿ5 öÿ5 öÿ@öÿð‹È'@öÿœÈÀ%0@öÿœÈÀ%9 ÎÈærß ä Ö ÷ BAøÿWp Böÿ‚œÈ�`ÁeÐÿuøÿµ öÿÔ@øÿw@w .÷ È5öÿúÎ‚ß ä ÷ ú÷ °À% úíÁˆ7l þy 5 øÿ@øÿµ øÿp�öÿÈ÷ ~5öÿW-öÿ W-öÿ W-öÿ õ öÿæ@øÿ0ŠÈw¾w ¬Îfæ> ß ¬ –%Îfæ, ß Š –%5øÿW-øÿ Næ ß ä Ö ÷ Nwrw `Îfæô ß ¬ –%Îfæâ ß æ –%5øÿW-øÿ Næ°ß ä Ö ÷ w&w ÷ ÀÀ 5øÿÀøÀ 0 õ øÿÎÂß ä ÷ Ì÷ ÜÎÈføÿß rÖ ÷t Æ5 öÿW-öÿd @öÿÀ AöÿÁ pʵ öÿð@øÿw¬w š×-Žd÷†0 5 øÿW-øÿd @øÿÀ AøÿÁ pʵ øÿðÎÈfß ¾Ö 7 NÀJÀ p· >wNw <@À @m H½ @À @m 5øÿ5 öÿW-öÿ@øÿµ øÿHŸý‹µ µ öÿîýeW/ Nf f fß Z ÆewÖw Ä÷ ¦þ5øÿNføÿß ¾Ö 5 öÿW-öÿ @öÿÀ @m µ öÿó= @À @m Høÿ½ W/ÎÖß ä ÷ Jwnw \÷ úÀô· ð’÷ wLw :€w DÄeÀŸ ·   %ß † ôw7 ò 7 è ׯè -· à · Þ ÷"7 Ö  .÷ƒÁP BÞ üJt dÊ oÄ xú f e¢ c° s€ l Ó•-÷ C r f÷ ðÿ€Àe0�‡•à •1à /ÁN  Ò‹ƒ D~'ÂìÂð ÷ f v÷ öÿ€€LÀe0 9Àe�‡Â ÷ z ÷ p‚ƒà&æ Ä Ãmä ÷ â ß † Ã~Ä Ž”ß † à Î ß † Ã~Ö „w¦þ7 ¶  ÀŸ¬ · ¨ Àå0 ‚· ž Wp `ñÀe0[ƒÄeÓ•?‡f…À‚ ÷ ,Àx P�· n ÷ h ÷ @…‡f…÷ …‡ÀL Àå7*À: € ‰ô÷0 ÷( ×-" ‚÷ ‡f…÷ À÷ºÀ²‰Â ‡À À 7¢ Àßž· š…‡7ä 7 Š…‡f…@‰†wÊ wÌf…w¤w ‰ú†wªw®f…wŒwˆ‰†wŒw�f…@wpwl‰†wjwnf…@wTwP‰ †wH wJf… ‰¦BR‚w4f…@w w‰†wwf…@‰7ü ÀÿÿF…‡Õ @…&æ¦äHÅåF‚ƒ„…‡€�6rwÄ ‡€�6r@‡arg count %s: cannot create %s: cannot open %s: cannot open isize = %d d--777 0 0 $ %s: cannot open init %s: bad format %s: too big %l/%l: bad ratio bcdug%c/%s: bad digit too many inodes %s: cannot open ... @`pô ôè%c/%s: bad mode %s: bad number EOF :.read error: %l write error: %l out of free space indirect block full üÿðÿýÿøÿ‰‰‰‰‰‰‘’“”•–—˜™@¸ ð€&Ð 6÷ –% ‰w FW-Î ß E@¢bõ¶áøÿ @¢cõ¶¡øÿ.@ß Ä5öÿ@öÿ#@ß Ä5ôÿ@ôÿ@öÿtN]ôÿføÿ@&ß $–%À Î ß J÷ Î ß wªw ˜5 øÿ@µ ’5öÿW-öÿ0W-öÿ9ÀÿÿAøÿWp AmöÿÁeÐÿuøÿâ@øÿwZw H€wžDÄeÀŸ” · Ž %ß Êôw,7 z7 pׯp-· h· f÷,¼ 7 ^ .÷º ƒÓ Á‚BÝ üJ¢dèofeÐcÚs®l Ó•-÷ 6 r f÷ ðÿ€Àe0�‡•à •$ÁÜ“”C~÷ fWtýÿÁEà÷ ðÿ€ÀEøÿÀe0�‡Â°÷  Â¦÷ –‚Ò Â ƒó‹ÿÿà ùÎ Á€ÁàŠ�`w€÷ tß Ê÷ pû·hΟd· ^ß Êø÷ V ÷ JÎ ß Ê÷ Bûwœþ7 4 ÀŸ*· &Àå0 ‚· Wp `ñÀe0[ƒÄeÓ•?‡f…@‰f…@÷ ò÷êwÖw ÈÈ @�w ¼È ×-Ðw ÎÈ @7 ®wxf…w¢w ´È 7 ˜wbf…w ww‰6 †w: w<w ÷-zþÎF ÀlÀ V fæ> ß –%wôError 0Not super-userNo such file or directoryNo such processError 4I/O errorNo such device or addressArg list too longExec format errorBad file numberNo childrenNo more processesNot enough corePermission deniedError 14Block device requiredMount device busyFile existsCross-device linkNo such deviceNot a directoryIs a directoryInvalid argumentFile table overflowToo many open filesNot a typewriterText file busyFile too largeNo space left on device@…&æ¦äHÅåF‚ƒ„…‡7LÀÿÿF…‡fA7þ‰� ‡  �…Ñÿÿ�±…fAñ &÷ €ø9�± �…&fA÷ �€…@Àe&7ÊwÆ·ãÀ@‰² ±ñ‡arg count mknodusage: mknod name b/c major minor ‰%s: %s Unknown errorz‚’¬¼ÄÎèú (:J\f|Žš¬¼ÌÜî(8H‰¶w w&w å€Àw å…‰@Î ð€&Ð 6÷ –% ‰w ^ æ ß üÖ 5öÿÎæÎ föÿß –%W-ÃÎ × Î$†Ë‹ ÎæÎe æ ß Ð–%Ãe@ï_œW-Î ß Ð_œ W-„ @&@&ß Ö–%À Î ß  _œ@Ò‹ý —¨/ Šû@,†—¨/÷—¢/‚ @°ÃÎ × Î$O†Ë‹JÀÀe ÀÀe?€ †@&° €’@ð íÂÀÀe€ †@&° €’@ð íÃÎ$ã‹ýΤæ& ß ¸Ö 5öÿÀÀåÎ túÿ€ tæÎ föÿß <–%Ãe@®wæw Ô÷-6%ºÎ8 À(%À h fæ0 ß Ð–%w¶w ¤€wø"DÄeÀŸî" · è" %ß ^ôwˆ7 Ô"7 Ê"ׯÊ"-· Â"· À"÷Ò$7 ¸" .÷þÐ$ƒÁ<BÞ üJ\d¬oÒfÜeŠc˜shl Ó•-÷ ; r f÷ ðÿ€Àe0�‡•à •)à 'Á4" Ò‹ƒ D~÷ fWtýÿÁEà÷ ðÿ€ÀEøÿÀe0�‡Â"÷ zÂø!÷ p‚ƒà&æ Ä ÃmÚ!÷ Ø!ß ^Ã~Ä Ž”ß ^à Î ß ^Ã~Ö „wºþ7 ¬! ÀŸ¢!· ž!Àå0 ‚· ”!Wp `ñÀe0[ƒÄeÓ•?‡f…@÷ p!÷h!wX!w >Ú$@�w 2Ú$×-N!w DÚ$@7 0!wÎf…w$!w *Ú$7 !w¸f…w†w‚‰F †w–wšf…·n·j·f‰L †wr wtf…wPwL‰T †wRwVf…@w4w0‰Z †w0w4f…@ww‰` †wwError 0Not super-userNo such file or directoryNo such processError 4I/O errorNo such device or addressArg list too longExec format errorBad file numberNo childrenNo more processesNot enough corePermission deniedError 14Block device requiredMount device busyFile existsCross-device linkNo such deviceNot a directoryIs a directoryInvalid argumentFile table overflowToo many open filesNot a typewriterText file busyFile too largeNo space left on deviceIllegal seekread-only file system7t ÀÿÿF…‡Õ @…&æ¦äHÅåF‚ƒ„…‡fA7 ‰¦ ‡  �…Ñÿÿ�±…fAñ &÷ €ø9�± �…&fA÷ �€…@Àe&7ÖwÒ·ãÌ@‰È ±ñ‡/etc/mtab%s on %s arg count mount/etc/mtab%s: %s Unknown error‰‰‰‰‰^fv� ¨²ÌÞð .@J`r~� °ÀÒæú ,DR‰¶w w&w þå€Àw ôå…‰ÌÁÕÂÀ ÷ | ‰R�÷ x  öŠ÷ X î à  ‰ÕÀÀÐÐ/bÐinЕ/ ‰ÐÀÀÌÐ/uÐsr ‰ÌÀ÷ÁH ‰Á¾À‰ˆ‰? ÷  û‡ ‰À‡À À� ? * [ƒ ‡‰/etc/globroot::0:1::/: bin::3:1::/bin: rm -f /etc/mtab chdir /tmp rm -f [a-t]* [x-z]* v* chdir / /etc/update 000 010 020 030 040 050 060 070 180 090 0a0 0b0 0c0 0d0 Àö ð€&Ð 6÷ –% ‰w Î æ ß lÖ 5øÿÎæö føÿß Š–%W-Î ß f_2@ß h À Î ß 6c@Ó‹ýà ר/ Šû@,†×¨/÷×¢/ƒ @ðÄö !ö$7†@Àe ʤ*Ò‹'Àe@À †ŠùÄö$ä‹ýΤæ ß NÖ 5øÿÀåö túÿ€ tæö føÿß ¬–% ÔÄe@Æ@æ( ß fÖ wÀw ®÷-È%LÎH Àº%À � fæ@ ß f–%w�w ~€wŠ#DÄeÀŸ€# · z# %ß ôôwb7 f#7 \#ׯ\#-· T#· R#÷ú$7 J# .÷þø$ƒÁÒBÞ üJòdBohfre c.sþl Ó•-÷ ; r f÷ ðÿ€Àe0�‡•à •)à 'ÁÆ" Ò‹ƒ D~÷ fWtýÿÁEà÷ ðÿ€ÀEøÿÀe0�‡Â”"÷ zŠ"÷ p‚ƒà&æ Ä Ãml"÷ j"ß ôÃ~Ä Ž”ß ôà Î ß ôÃ~Ö „wºþ7 >" ÀŸ4"· 0"Àå0 ‚· &"Wp `ñÀe0[ƒÄeÓ•?‡f…@÷ "÷ú!wê!w %@�w %×-à!w %@7 Â!w¨f…w¶!w %7 ¬!w’f…wwü‰V †wpwtf…wèwä‰\ †wRwVf…@wÌwȉb †w0w4f…@wÐw̉ˆ †wwError 0Not super-userNo such file or directoryNo such processError 4I/O errorNo such device or addressArg list too longExec format errorBad file numberNo childrenNo more processesNot enough corePermission deniedError 14Block device requiredMount device busyFile existsCross-device linkNo such deviceNot a directoryIs a directoryInvalid argumentFile table overflowToo many open filesNot a typewriterText file busyFile too largeNo space left on deviceIllegal seekread-only file system7,!ÀÿÿF…‡Õ @…&æ¦äHÅåF‚ƒ„…‡fA7‰Π‡  �…Ñÿÿ�±…fAñ &÷ €ø9�± �…&fA÷ �€…@Àe&7ŽwŠ·ã„@‰ð ±ñ‡/etc/mtabarg count umount/etc/mtab%s not in mount table %s: %s Unknown error‰‰‰f…·‰‡ 7ˆÀÿÿwXå‰ÎÖæ"<N`p|Žž°ºÐâî 0BVj|Œœ´Â‰¶w w&w Få€Àw <å…‰‰‰$‰À#‰û..>.?getty@globAinitBmkfsCmknodDmountEmshFpasswdGrcHttysIumountJupdatesmtabnlpdª$0‰ ‡0‰ìw–Áº÷ ^"…÷e ¤÷ R÷ N÷ J÷ FÀEàÿ  ‡ ‚Äe÷ *  ÷ ÷ ÛwÊ÷�ÔÔ7 Ò÷  …Äe÷ ú÷ âôw,Ñ€÷ î÷÷ ~×-xÿwD7 4÷,÷,7 pÀ�€‰w â´7�t7 r÷ ®· Þ· ê ÷Eä ÁÜ � ÁEwÒ ÂÐ ‚ ÂE·Æ C÷6÷.ƒ`÷.÷&à Ãe÷À ƒà÷¶ Cà÷® ƒà÷¤ Áº÷ Áew zù‡ w |¦ÀŠ w r¬ÂÁÀ@w ‚¦ ú÷ °7 <w ¢¦w œ¬ÀÈ7¾‰7 ¶ÀL w .¦Áº÷ Ü#…w <¦÷ Îw 0¦÷ Âw $¦÷ ¶w ¦@w ¦@w ¦÷ š÷ –Úw *¦÷Ä  ‰÷¼  ‰÷´  ‰÷¬  ‰‰¨ÿ‰Ew•4À‰X÷À‰¦×@’ÉÝìÀEàÿ  † ‡ñmà‡ñmÖ‡fÁew ‡÷e‰Î�‡Äv !žü‡÷²¬7 ª ÷ üÔ‹! ú‡w‰‡Õ …w^ÿ×- M÷5 B÷e ÷‹Þ;& C N ƒ × ÷¶*ÿÃbÃåºà ÃUÃE × ‡Ã× ‡× ‚Î ÂmÄ Î Âíº Ã € à ƒU€w ¨¦ÿez Àw š¬ÿen ‡w To ÷ ‡w Fx‡×-r ø× ƒw 0r÷‹6€w f¦÷5P  w J¬ÿe ¿  · 8 ‡÷¶hþæ¦f&Á\w’˜ŠÀ‰Xö@7�0ØÀ Á —r Ãe0à�ƒH~À‰€�‚ƒ…f xxxx  @%Õ …÷ 4!!<÷ T$&—#Î÷ :7Z÷ !=[!:7„÷ t÷‹T À�v À ð-r ¾}ƒðj ¾wð„!€†!*w ÿxÄ÷‹ “ÀEàÿ   w úþmÌEÌ]$ 7n÷í hô ¦ô- ¢w ÐþpžÄ¼÷ ´Ä vÈ�î 78÷íæ 2ðà ‹÷ J÷ à�W ÞÃE ÷  × ·¸ šÂí² �¦Î � Ã÷ (þøÖ Œw `þ.× w RþrÉEÃEàÿ Éб! !‡· ôw˜þ! !;!Îe‡Ä ŠtvÁ†ÁeD¬É ù€tŠ„ ‡¦AÀEþ@`Àe@Àe‘‚…ww Àf¦B�J †�bÒ &w €�¢ ‚�…B’$�wÀ4‰ÁEþ�`w€âUÿŠ ¢(�â w À ‰…Ä7 ‡÷ $!€‡!‡Äeº‡ÄeÞ ‡Äö 7 ð ‡÷ ¸ À�° ‰ª‡€ 7¤ ÷  À�– ‰w øûº7�Š çIJ‡÷ªÞ ÄÚ ÷eÔ ‡w 6ý!D!<wPÖ ÷ ø÷ Æû‡“ ÷ ô ñw üüì&&÷ 0ÿ€À ÅH7 „÷ÿÿ€x.¦²ô þ¬¢ú& > Z | € „ î¢ ¢ ¢ –|ú îî÷ æÁ\÷ üþÄ �‘Î ùá‹÷Ñ• ŠÖ ‡· ÷· ÷÷ r¦÷ œþ÷ h÷ ô€ŽÎŽ Ž ·#ä‡w Ôûx‚U‚U ÷ ÜúÁHE †BCwb ÷ Èú÷‡& Ü÷°÷ — ‡·  ÎÎøË÷ Î÷‹”€÷ R —#Âe·`¤÷ežÖ ‡÷ z8†€¦æ ÂxÃ÷ XúÃÂ_÷ Lúƒ‚÷ Dú‡÷ l÷ ¾‚ ‚ ŽP÷ Âý÷ X÷‹#ÂíB €w hûþÿ}Âe ÷ 6÷‹üÂí €w HûÿÂ5 ÷  ‚  ÂEÿ‚U ÷ Öù‡w ¼úb ö÷ ô÷ Fw°þ÷ è÷ : ÷ Þ— @†× ÷ ‚U÷ šù‡÷ Â÷ :ú!,÷ ýöÖ ‡÷ 8ýÃ�ÂEÿ÷ úõ÷ "ý‡÷5€ ×-x  ÷ öù· hÖ ‡÷ lÖ ‡!€ ‡ÌÕ ÷ Àü!,÷ ¶üóÖ ‡&Á6Á ñ20÷‹w Zü¦w Tü¬‚Âe¦·ð€w ðû¦Âe€·àw àû¬€7 ô€ Àå7èÖ ‡!€‡&÷ Lü÷ Hü÷ Þ€È5ÈU °Ö ‡& !(>!-X!$k!*wä÷ ¨!(÷ ü•ÕÕþ ÷ ’÷ ä÷ ÂU0‚U‡× ÷ ΂U‡æÃE ƒÃU€ÂíXÂåW!HÂå•ÕÕ¶ Â7‚U‡÷ ¨û÷ >÷ ¶÷ Œ!+ Ö ÂU8  Õˆ ‡ÂU‡÷ zûÂU‚U‡÷ nû!(7† Ä-¦÷ Zû÷ ð÷ h÷ >‚UÂU ‡÷ Bû÷ Ø•ÕÕ8 ‚ÂU‡Î w ~ø*Î÷ ûwêþw løa‡— ‚W ƒ× ‡‡÷ àÿ  ‡w Føe‡!)w 8ø)‡÷ Øú‡Á¬W ‡· œ& ÀíJÀí’w nøÿ fÎEøÿÀtWtýÿ1Ь΂‡ÁdW ±‡fÎEøÿ · NWtýÿAœ¬Vt ‡7 dfæ+ Ã÷ Púw ø“À ÷‹œ w Š÷u 7( VS!a‡Ä ´’IÁ` D$Ñ üÖ …‡y+œ -œ *œ /œ &œ œ œ œ %œ [¼ ^œ ° ª !œ €—£+÷ ºþ‘ªÁð÷ ÆùÀ¦æ÷ Žù÷ (ÿ!]w Øö]À�ƒ‚Åî •#Õ üZ}+J -T *t /€ j &^ , " %6 ^ !’ €> � ¡ w v‚�t4w l‚Àƒ �rÂ*w X:B`%w N^Bà w D‚A B@w 8‚BPw .‚BpBw "‚Àƒ �rw ‚A B`Î+wXþ÷‹ &ÎPÎEßÿÀEàÿÃEàÿ &ÀƒÀ W%^ ÃÕ  ƒU…f7 ¸÷ (WpÀ÷ @e@`’€× ÿÿw  õrÃ��… À‡ÀEàÿ7 xƒ7r ƒÀ‡ÿ þþþþþþþþþþþþ þþþþÿ þþþþþþþþþþþþþþþþþÿþþþþþþþþþþþþþþþþþþþþþþþþ? a.out//¨®®®®ÐÖ      "0  �   0 ° @ À P Ð ` à€�‚ƒ„…†††‡‡‡€�‚ƒ„…†††‡‡‡ Š @ @Š € €Š À ÀŠ ‹ @ @‹ € €‹ À À‹ Œ @ @Œ € €Œ À ÀŒ @ À€ ‰¡¢¤¨±²´¸ðð ðð ð ñ Àñ €ñ @ñ õ þû ÿü ô ö ò ù ÷ ó ýú @ð €ðtvpprtvrx À ~—#w8ð—%÷ rÖ ·îü·ìü·êü·èüw Òð´7�hw Èð¶7�Xw ¾ð¸7�V7�L‰¨†w ð²7�Pw °±²³´µ¶·@/X , ð€&Ð 6÷ š–% ‰intcharfloatdoublestructautoexternstaticregistergotoreturnifwhileelseswitchcasebreakcontinuedodefaultforsizeofw t.êW-Îf@ß ˜Îß ô. @&ß (.Ö 7Š] @æp@ß ˜Ö Îß ô.Î^\@&ß F.Ö À ÎXZ@&ß F.Ö À Î~@ß ˜Îß ô.W-· 0X· *X @ƒÄXI!`I†Ô”ûà ù÷ d˳Âeê7 öW@Àe&ü7æWÎXZæÞWß d.Ö ÷ ÒW÷ â÷ ”#øÎ^\ß °.ÎXZß °.÷ ÌW Îß ô.wj-w X-5 øÿÃXI× `I†À”ÀE€ÿ5`øÿ÷AøÿÀ rÈWtÁebIDÀeÈ‹ÃXI× `I6†€”ÀE€ÿÁ” öÄeÀ%âUè‚ÄbIå· ,GÀ(GÀ%ÈÎ�@ß ˜Îß ô. 4 4 4 ÃXI÷ WËÕ€Àe× `I†Ò”ûw®,w œ,÷ v= Äp=÷ÿÿj=!7 èV_ˆ÷ ¸VIJV7 ®V ÷ ªV _ˆ÷ÄV÷ +�¾H·&,Ay.÷ ªV· =7  Ví· rV _ˆÎæ(&ß Œ–%_ˆÎæ2æ)æ>÷ jÆe&&ß Œ–%_ˆÎ& æ ß Œ–%À ÀP_ˆ÷ .ÿ!(%!1"÷ þU÷ z*7ôUÀðUœ¾HÀ%~!)!/!*Φ@ß ˜÷ äUÀe_ˆ!PÀ<_ˆ7J<ÀP_ˆÎ& &ß Œ–%À À._ˆÎ>æ?æ=ß Œ–%_ˆÎ& &ß Œ–%À À-_ˆÎ@æAæ=ß Œ–%_ˆÎ=æ"æ=ß Œ–%_ˆ ææ*ß Œ–%À À+_ˆ· UÎÆ@ß ˜ _ˆ÷ &U· –;7 U÷ p)ÁÜ@7b< þy· Uñ÷ R)!/î_Ê7ÀT!0ÎÎ ß +À%À<;· 8;7¨T\÷ æY÷ TVÃXI÷ ¦TÓ•.7 œT­¾H{­¾H|× `I†‘÷ Ü(ð× `I†Šû7HT÷ ¦ü7NT×/JT,À'À4T70TÀÀÎ5æ/æ&ß Œ–%Î6æ0æ|ß Œ–%Îð@ß ˜_Ê�¾Hw¤)w ’)÷ ÎS÷ J(7ÄSõ-ÀS@7 ²S@wv)w d)÷¸SÃhAÂnAÀ.:· *:7šS÷ ¦Sæ¦ætAß D,–%Î"ß n æ‚Aß D,Ö · pSñ÷ rSŽÎæˆAß D,Ö Àw)w ð(7 D÷e8DÈÎß ,ó Î$ß ÷åDÀD—"—,Î^Cß ˜ÀüC÷eöCÈuøÿôÿ@ôÿÀEçÿÀ%Nôÿß ’'5ôÿ²ŠŽfôÿæß –%Î#ß Ž & æææß þÆeÁšC÷e”C Î(ß @øÿÀEçÿÀ%_nÎ$ß _nW-øÿ5ôÿ2 5 øÿ_ªNøÿß T&&÷ ´Ö Wp �eAœDHuêÿ@ÀE¿ÿ5ìÿÀ @øÿ5ôÿW-P!W-øÿ 5ôÿõ ìÿ_ªW-êÿYõEÀÿêÿUW-!5!øÿKW-êÿ?õ5îÿ!W-øÿ<ÎÆCß ˜7W-êÿ5 ôÿõ5îÿ5 êÿ*W-)êuêÿèÿ5 êÿ õ ìÿõ5îÿ=W-êÿÙ5 ìÿõêÿ5ôÿÎß ¸(fêÿfôÿ¦ß rÆeõ5îÿW-= !W-øÿõe5 ôÿŽæfß €–%À EŽæó €Žß ¸(fêÿfôÿæß rÆeÍÀ&fôÿfæß þÆe Á¶A÷e°A õ èÿ÷å¢AÀžAÎß ¸(fèÿ& æß rÆeÁ~A÷exA w¾w ¬@Àå 8‚À xŒ”šÒØÄ*Ä+N & & ææß þÆef& f&æß þÆe Ä3Ä4N& f&æß þÆeÎÚCß ˜@w*w DCBô— ÿÿ´Àå %‚À x8R|||||R`|||nnŽæ÷ 8Ö & Žæ÷ \Ö &Žæ&ß –%w°w žDÀEçÿÀ%&æ÷ Ö &æ#æß þÆewnw \CÀÀEçÿÀ%×"×,À³ŠÀî?÷eè?ÈÎÿÿ&÷ ŠÖ &æß –%Î#ß ÷åÂ?À¾?ww ò@À%!ÎìCß ˜wÜw ÊD!ÀE‡ÿÀ%hÀ ÀEàÿ!ÀEøÿÀeÀ w˜w †· ÞBÎ^\ß °.Ä�°E÷•ªEÎL)æDß D,Ö Nff f fffß D,Æe Î ß +Î^\ß °.7‘dEw2w @ÀeõeÃÌ>@õ À ß 0öÀww îÀ¨>÷e¢>H÷ @BÎ Dß ˜Îß ô.wÒw ÀD##$Î Dß ˜w°w žD#]õ W/U@@Àå% H‚À xÀ&.JÚòöþ>6ƒ`ôÀ>÷eú=À-ƒàóÁBpCïÁÀ rêÁÀ rCå€@ @áƒP߀xÀÛÀ ×À@ ÓÀtϦÀ tÉ wàw η 2A÷ Öî#Î0Dß ˜÷ Aw´w ¢ ÷ üé_"!_"5 øÿ· Î@!*×-Ê@÷ ÐéõÀº@5øÿÀ%_5 öÿ  @Àeøÿ&ß r&Ö 5öÿ÷ ˜é7'À% ÷  !_7ú&7 ^@÷t@Nöÿ& føÿÎEøÿæß ‚ ÆeÂ:@_"€Àe5òÿ·(@ýÕ€òÿNòÿæBDß D,Ö 7 @µøÿ@øÿÀEçÿÀ%÷ é7Š&À% Nòÿß &Jõôÿ€ÀEçÿÀ%€œÀEÿÀ 5�YôÿŽß ’'2êŽß ð(—,Á� upôÿuôÿÃrøÿÎfôÿføÿfòÿß �Æe÷ ‚èÀ% €! ÎPDß ˜ß v% ß ¼w w ø7 V?ÄÔ%NælDß D,Ö Î ß –%÷DÀ¬%· ¨%7?÷ "è7ž%À%ÎzDß ˜Îß ¼ÎÞ>æ–Dß D,Ö 7|%w w ŽB ÷ äç7`%À%  ABpNŽ ÎEfæ¦Dß D,–%d Næ¸Dß D,Ö ÷ ¢çÀ%Φffß ˜Æe÷ €çÀ% ï!7î$ 7è$ ¦ffß ˜Æeõ  AÁàBpNæÈDß D,Ö õW-@ÀEçÿÀ% @ÀEøÿÀ%ÎÒDß ˜@�A @@À5ÎèDß D,w˜w †÷ àæ7\$À%W-÷ÿÿH$õ ÷ æÎ¬=fæðDß D,–%À¤=€ ÀEb×-$@ [· ˜=÷ <ë7 Ž=@Àå J‚À x"4 r   ‚ÎEß D,#÷ v# æ Eß D,Ö µ @ * && & æhæ÷ ˜úÆe &ß (ê7õ=5üöÿ&øæE7õð<&øæE÷ ´Æe #×#Ô÷ Ñw†w tÎ,Eß ˜wtw b÷ ¼åÁF7B) þy ÎREß ˜_’!õ ÷ ‚<ÄbEÄŠE÷ Îeüÿ&ß D,Ö ÷ V<÷ låÀ%_’!7Ü" ß ¼ïΜEß ˜_’!À6<Àå  ƒ_þ À xRj„Œäþ H è<Pd” Ä ÷ V Îß ˆ(_t!÷ ê _t!÷ 8 _t!÷ p5ôÿ ÷ èäÀ%lÀÎ;Àå  e‚À x¶Èôzzzzz*0÷ ø 2 À*"· &"&fôÿß è'–%÷ ~ Žß  (+÷ 4 À%;ÂZ; Àö!· ò!&fôÿß è'–%÷   Îß  (‚ Â,;Â$;Žß R*Φfôÿß è'–%÷ 4äÀ%_€!÷ $äÀ%×- ;_Â÷Œ!_’!÷„! À|!· x!&fôÿß è'–% ß ¼÷ âãÀ%×-È:ÀL!· H!Žß ˆ(Îß  ( ß ¼Žß  (_’!7(!Îß  (_’!Ãp:Ân:À!· !7`:ß  ( Àü · ø 7N:&÷ î&ß è'–% ß ¼Î4:ß ˆ(Î.:ß  (÷$:·":_’!Î:ß R*Î:ß ˆ(_t!Î:ß R*Îü9ß ˆ(_t!Ãð9Âî9À� · Œ 7à9À„ · € 7Ö9Àx · t 5øÿß  ( ß ¼Î¸9ß  (÷°9÷ ÖâÀ%_€!×-¸9 _€!Îføÿ÷ dç&ß è'–%Î~9ß  (·v9_t!÷ dø÷ �âÀ%_€!÷ T9ΨEß ˜_Â×-B9VY‡Î¼Eß ˜_ÂÿØ,9À(9÷e"9ðÎÄ· Àß  (_ÂÃ9À°· ¬79÷ ¤5ôÿß , fôÿ& & ænæ÷ ‚öÆe &ß (Ö ÷ °÷Ê8_’!÷ ¾8ÎÒEß ˜÷ ÜáÀ%iÀN· J7¤8ß  (_ÂÃ�8ÂŽ8À0· ,7€8À$· 7v8÷ ®JÎj8ß  (÷`8·^8JÎèEß ˜<÷ À%:'7 N8ÃX8Ë ÎøEß ˜_ÂËóó À· ¾3Îß  (÷ 0á7¬À%_Â7žÎ÷ Èå&ß (Ö ÷ áÀ% Î"Fß ˜ß v%_Âwš w ˆ 4÷ âàÀ%€_ü"÷ ÐàÀ%·DÎ÷ nå&ß (Ö ÷ °àÀ%€_ü"Ît7ß  (÷ –àÀ%· Î& æX7÷ .å&ægæ÷ êôÆe &ß (Ö ÷ ^àÀ%€f÷ Nà7ÊÀ% ÷ÿÿ¾ ß ¼Î 7Sõ7øÿÀ¦· ¢7ö6÷ Îä5Êþ÷ àÀ%€Aõd3ÈþÀ^3Àíà6€ À%– Î4Fß ˜ÀÌ6Àe,7>3@ÀeÌþĸ67!.3†û ß ¼wÈþ3@ÀeÌþÄ–67! 3†ÔûÎx6ß  (ÎfÊþß (Ö Nøÿß ˆ( w0 w  ÷ xßÀ% ÷ ä÷ fßÀ%ÀÎJFß ˜ß v% wô w â À65øÿ÷ 6À6V7ü5À · œ5öÿß ˆ(Âì57 è5 ß ¼ÎÚ5ß ˆ(Nöÿß  (Î#ß +ÎÂ5ß  (÷ ¾5 ÀZ· V7°5ß  (Þ5ÎXZÀဠ&ß d.Ö ÎXZæŒ5ß d.Ö ÎXZæß d.Ö ÎXZæß d.Ö !†ÎXZ&÷·Z5wøÿL5w" w  ÷H5 ß –%Ä÷ Z5&ÀV50 ÃL5À7D5×,ó3ËÀÀEçÿÀ%ó峊Îß ¦)`×ÃbI× âU@†ó‹:×"ÀÀEøÿÀ%ÀœÀEÿÀ �Y3œÀÀEÀU3×" ÀœÀEÿÀ ð �YÎÎeæ\Fß ˜Ö ×" ÎÎeævFß ˜Ö Ãe½÷ô‚4÷^4Ö0 æR9æiæ÷ àñÆe&ß (Ö À44wþ w ì ÄbI!âU†ô‹Ì ÎeæŒFß ˜Ö ôµ€4Š÷ ô#Äeåwº w ¨ D!÷ øÜù7pwš w ˆ  5 ôÿÃÿÿB5 öÿ÷ ÐÜ5øÿÀ%RÀ´3 M‚À xÌ%F&F&F&F&&Þ%Þ%Þ%Þ% ÎœFß ˜Â†3µ ôÿà Üà   ÂNöÿ&æ¦ß $ ÆeÂõV3øÿ—  Î@Àeøÿ&ß r&Ö 5öÿwøÿ.3µ ôÿà ζFß ˜Ã3 Ì§wøÿœõ ôÿÅw¾w ¬÷ 3 ÷ þÛÀ%Ââ2Ê Ê ò�l÷ ÎÀb· ^À 0 �Y—" ÷ 4èwÊ2÷ ¾Û7 À2×  Îß Ô G—" ÎÂFß ˜€œÀEÿÀ �Yý„÷ú0õ\2øÿ7 v2Îß –%Ä5„ wøÿ>2÷ RÛÀ%Π€œÀEÿÀ ð �YŽÎeæÖFß ˜Ö €œÀEÿÀ 0�YwÀw ®×-ŽdÎæFß ˜Îß ô.wžw ŒDÄ5øÿÎGß ˜ tþÿÀEÁEøÿ@Pwlw Z@tÀEAÁEøÿ@PÀUwHw 6Îfffægæ÷ ôîÆe &ß (Ö ww õ /Î#ß +À°-Àí21€ Ã*1ÎXZ&ß d.Ö ÎXZfß d.Ö ÎXZfß d.Ö ÎXZæ–ß d.Ö Ä À ÎXZæõw¨w –NæGß D,Ö w�w ~Næ$Gß D,Ö wxw fB€À5øÿÀ ß ’'2Žß ð(2Àw@w .B„ÃÀEçÿÀ% ß ’'€œÀEÿÀ �YîÀEÀ% 6!ÀÀ 0ÀEøÿ &‚À xT)`)f)j)r)z)Ž)ÀÀ ÀÀtÀt�œÁEÿÁ A�YCp@ Î*Gß ˜ Î8Gß ˜wŠw xNß ð(À5„ wlw Z÷ ´Ø70À%'÷ PÀ%;"ÄŒ/Ì ô  ôô À· ü4Ì # -÷ÿÿâ ww òÀ./œ¾HÀ%~÷ ¢7/ôÀ/wÞw Ìõ ÎPGß ˜wÆw ´÷ ÀÜÁl+÷ef+ Î$ß ÷åV+ÀR+ß , && & æfæ÷ NìÆe &ß (Ö wpw ^÷ bÿÀ%; ÷ ^Ü&& & ænæ÷ ìÆe &ß (Ö Îd.ß ˆ(w0w Î^\fß €.Ö w×þ ñ7 P57 P57 J57 F.·<5¦w Ôò@þô· ,5÷÷ (57 5 .÷5ì÷ 5$ e!& 7 .÷57 ü-÷ ò4÷ d + -Ž 7Î-w tüÖ 7 Î-÷íÊ-Æ47´-÷ Â4À'‚‡÷ ²4Àø—þ 4¦ ƒò‚~Ö ùòÀvYøÐ Ð Ð Ð À÷r-n-ÙÀÖÀR-7 L-÷ ÈÀå0 ‚· J4ÁD-wp<4`w:-Õ …Àe0…w Ú€w,4DÄeÀŸ"4 · 4 %ß +ôw¾7 47 þ3ׯþ3-· ö3· ô3÷"z`7 ì3 .÷x`ƒÁ°,BÞ üJÔ,d*-o$-xZ-fd-e-c-sà,l Ó•-÷ C r f÷ ðÿ€Àe0�‡•à •1à /Ád3 Ò‹ƒ D~'Â>IÂBI ÷ f v÷ öÿ€€LÀe0 9Àe�‡Â"3÷ zÂ3÷ p‚ƒà&æ Ä Ãmú2÷ ø2ß +Ã~Ä Ž”ß +à Î ß +Ã~Ö „w¦þ7 Ì2 ÀŸÂ2· ¾2Àå0 ‚· ´2Wp `ñÀe0[ƒÄeÓ•?‡f…÷ z0÷l^t0Àl0‰l^ ‡À À 7\0 ÀßX0· T0…‡7d2 7 D0…‡f…ww‰FI†wÐwÔf…wþAɉLIF‡  Df…@A&÷ €À÷ 6f…@A÷ @+ñ 9�± ‡&÷ €óf…A÷ @Àe&7Šw†·ã€@‰RI±ñ‡w&7 ’1…‡f…@‰ rÁ �dA! þ‚7l1ÀÿÿF…‡Õ @…&æ¦äHÅåF‚ƒ„…‡ÿÿ &.6<DLV \ d h nt|‚ˆ’–ž¢Arg countCan't find %sCan't create tempSymbol table overflowWarning: assignment understoodNonterminated comment *RŠd�rUnknown character AA$A,A:A   „ðúd4  „ðÖà„ ÐÊ„6PÀÄÜx.text.data%s L%d:.byte 0%o,0 .even %s Long character constantNonterminated stringÊAÔAÞAêA& $&.ÖÖÖ .ÖÖÖ.ÖÖÐÊÄ \  ²..data L%d:0%o;0%o;0%o;0%o .text Expression overflow !dp p . . p 4 expression overflowdeÈþ ô ¶ È ž ê Expression syntaxBad function.bss L%d:.=.+%d. .text Bad register %o*º Ð ª ÆDeclaration syntax%.8s redeclaredIllegal conditionalCall of non-functionIllegal indirectionIllegal lvalueIllegal structure ref~CˆC�CšC¢C    ÌxJÜxÜx¢Üøx ÎIllegal conversionC error-- convertInteger operand required%d: Expression overflowLvalue requiredConstant required.globl _%.8s External definition syntax.text _%.8s: Compound statement requiredL%d:jmp rretrn .comm _%.8s,0%o .data _%.8s=. .=.+%d. Too many initializers.even .text _%.8s=L%d .byte %d. 0%o;0%o 0%o;0%o;0%o;0%o Inconsistent external initializationUnexpected EOFjsr r5,mrsave;0f;%o .bss;0:.=.+2 .text jsr r5,rsave; %o Missing '}'Case not in switchSwitch table overflowDefault not in switchUnknown keywordRedefinitionØ’!ä’!:!`!Statement syntaxExpression too largeStatement syntaxUndefined structure: %.8sNot an argument: %.8s%.8s undefinedConflict in storage classType clashBad structure name%.8s redeclaredDimension/struct table overflowIllegal indirectionjbr L%d L%d:Bad structureCompiler error (length)Break/continue error<<�€8‚8‚8‚8‚8�8‚8�8€8�8)w ,)Buîÿƒ€5øÿÀ%d45 öÿ5 æÿ5 äÿ—.µ æÿ· ö]Ë ×" @Àeäÿæß ¨ Ö 5`öÿõ æÿí@Àeäÿæß ¨ Ö 5`öÿµ æÿÊeröÿ@øÿÀ ð5,EW-øÿ5W-øÿ6:W-´F6NîÿæÀF;· B;5øÿ&¦ß TÆeNîÿfæ@ß ¨–% æ;ß ,!Ö Nøÿß `!Nîÿfæ@ß ¨–%Îö:· ò:ß `!@îÿ_N W-øÿZ]W-´FÀÿÿ_N Nîÿ& ÀÄ:· À:5øÿ&¦ß TÆeõÜ\èÿNîÿfæß ¨–%5êÿwèÿ¾\ À†:· ‚:5öÿ&ß ,!Ö Nøÿß `!Nêÿfæß ¨–%5îÿ@-êÿNêÿfîÿ¦÷ ìÖ &æAß h*ÆeuêÿîÿNöÿß `!cW-øÿ#—. €,Î(Aß À!Nîÿ¦ß Ö 5îÿ€ 5ìÿNîÿf¦ß R –%À <ÎÐ9Níîÿf¦ß ‚–%5âÿÀÿÿ_N @âÿ5ðÿƒ5 òÿ€À ð5,Eµòÿ@ðÿµ ðÿ’5øÿ·Š&¼AyD—"e Žß x!5 îÿwíæÿ�[Žß àÀ —"+—"Iõ îÿ@îÿ_N ÄDòÿ„5 øÿW¯ðÿ'µ øÿµ ðÿNøÿ&ß 0Ö ¿@Ÿðÿ5øÿÀ%'µ ðÿ5 øÿNøÿ¦ß `Ö ¬€À ð5,E„Ä„ Dòÿ-Îbß šß àÀ ‘Îfß šŒ×,@òÿ,Îbß š„æÄ@òÿæ@Aß h*Ö _¨Äõèÿ Dòÿõèÿ„õèÿõvKôÿ@ðÿµ ðÿ’Àe¿ÿ5øÿÀ5õlYôÿõ5øÿ# #!Î8NíîÿæhH&ß ‚–%À õhHôÿõ´Fôÿõ5øÿß ®À W-ôÿlY /õUèÿW-fbW-ôÿlYõfbôÿõ5øÿuìÿöÿÀ ð5,E-uîÿöÿuöÿNöÿfôÿ&ß ¨–%5êÿõ5èÿæDAß h*Ö õ5øÿuêÿìÿ_¨u-êÿîÿ_¨W-ôÿvK_¨ ¦ß Ö À 9õ5èÿ+õ5èÿÎ7NíêÿÎeÿÿfòÿß Ö AâÿAœÁEÀÿ õ5èÿÎÒ6NíêÿÎeÿÿæß Ö AŸâÿÁEÀÿ uêÿîÿ@êÿ€ 5ìÿ_¨Nîÿfêÿ¦÷ >Ö &æPAß h*Æe_¨uîÿöÿW¯ðÿ-µ ðÿõ öÿuìÿöÿw-öÿ\6Î`Aß À!NöÿæˆAß h*Ö _¨W¯ðÿ(_B · dXW-fb_¨Î-ß š_¨Î)ß šW¯ðÿ+_¨÷ 4X_¨Ä@òÿÄß ®À _¨Á”A707 þyô _¨æŒAß h*Ö _¨ &ß 0Ö _¨ mæ�Aß h*Ö _¨€œÄ? _¨ÎÎl æ¤Aß h*Ö _¨ŽæªAß h*Ö _¨Îæß VÖ À% _¨Î æ´Fæß ‚–%À _¨Nîÿæ®Aß h*Ö _¨õ äÿ_¨Î¸Aß h*_¨Nøÿß š_¨w$"w " DÎÖ4Ní&ß VÖ À% Àÿÿõjðÿ5òÿ5ôÿ5öÿNf@Àeðÿ&ß 8–%wÎ!w ¼!D-ÎVBß À!÷ ¤Vß àÀ  ælY&ß ¨–%ß V ½  æfb&ß ¨–% wt!w b!B _Ð „Ä €_Ð À ,EÃ5€_Ð Ã5Žß Ô _Ð Ã5@ µøÿŽß ´røÿ€_Ð Žß  2Žß  2Ã53ß Ò&¦÷ @Ö €% µôÿ²rôÿ�Ä? €,—.ß VÀ% €,ð ðΦ÷ ÞÖ &ß ¶Ö 5øÿ ¦÷ ÆÖ &ß ¶Ö 5öÿ·$ hByò €ONöÿføÿß ¶Ö 2ô—..Ê(€A p_J Žß ÂÀ õeøÿõeöÿ—.—.€¦Îe&ß ž–%€u-øÿöÿµ øÿ@øÿNöÿføÿß ¶Ö 2¯w¢w �C_ê _°×"gÎß  3XÎß  3×"$ ###F×"3#4þ7ø:TÂrbÂeÒ Ò Ò ôôTÌ(#ÀÀå% ‚À xx|Š 4@ 4 ß Òæß ¶Ö 3ÀwÂw °b5 ¤ÿ5 ¦ÿBµžÿŽß à5œÿ@Àe¤ÿ¦fžÿß T–%õ ¤ÿõ œÿ)@¤ÿÀ AÁeÐÿ@`u¤ÿ ÿõ  ÿ×.×.þÿõ ¤ÿÃåÀæÎefžÿß ž–%õ  ÿâW-žÿ(_@õ œÿ_@õ ¤ÿ ×.Àð õ ¤ÿÃåõ ¤ÿÀ_¨×.×.þÿ#×.þÿ ÃåÀÁA1lõ ¤ÿW-žÿ( õ œÿ@Àe¤ÿß ¬@ÀeÐÿΦ÷ ðÖ &ß ¶Ö 5¢ÿW-žÿ*õ œÿµ ¢ÿ5  ÿu- ÿ¤ÿ7@ ÿÀ @a¨ÿÃeÀ5šÿ4Nšÿß Ò@-¢ÿ@¢ÿ€ W-žÿ*¶@¤ÿÀ @aÐÿ#­ô ª"@¢ÿ5¢ÿ4´µ  ÿÅ—"*Žß ÂÀ Φ÷ :Ö &ß ¶Ö 2€wÊw ¸@À @mÀe,5îÿõèöÿ5 òÿ@Àe,5!îÿƒ_Ð/*_Ê"h5 ôÿ@Àe,õ îÿO‚!J×.*FÀ"@ÁA1,Àpû(ðß  Nîÿæß €Ö ý ¤ÁAAÀ ‚2rÁ #AAÀ ‚2rÁ µ ôÿõìÿÃe®õ ôÿ u-ôÿöÿuôÿöÿ5òÿuìÿðÿÄe„õ òÿS@ð À @m5øÿDòÿCðÿý(øÿ@øÿp@øÿ0@øÿÁpÁAf‚�À r2ÀpøÿÎß  5øÿ! † Nîÿæß €Ö ý _²KøÿNîÿ&ß €Ö ý _²wöw äD5!† ÄeøwØw ÆD@Àå( I‚À x¼ÐHÖþþ,<âìò=a=ADp}7@ =@2=Q/=x@)Ä Î¨B"W-+AÀ r=AÀ r}&@ t= @t=ζBß À!w"w BCµ"À³ À À`°Î¦fß T–%Φfß T–%_–Žß  µ"ßŽß àÀ B—"*—".<—.8—.(4€"-€—"* &Îe�AA~p^ €�AADtp€0ºÊ(W-(˜Žß Ò5 öÿõ"öÿ @öÿÀ À`,ß Ò5øÿ!@öÿÀ À`5,ôÿ@öÿÀ À`°,BôÿDøÿµ öÿÝÀ‹ À À`°,wÜw ÊÎ^`fÎE€ÿß Æ,Ö wÀw ®u-@@w¤w ’DÌ  ##Àýÿ##Àþÿ#ÀÿÿÀ ð5,E -À wFw 4CÀÀå ƒ_ À xP–r „r          0@ÎæÆBß h*Ö _ÎæÌBß h*Ö _ÄæÐBß h*Ö ÀÀå 4‚À x¼ìÆØÎ æÖBß h*Ö _ÎÎe æÞBß h*Ö _ÎäBß À!ÎCß h*_Ä ÎCß À!Î æCß h*Ö _Î æCß h*Ö _Î$ß šÃ_:Ã×"($×.# À&ß 0Ö À æ Cß h*Ö OÀ À&æ&Cß h*–%A×" õ  Î+À& æ0Cß h*–%-×"À õ & æ-æ8Cß h*–%×" ×,Î æ@Cß h*Ö Î*ß š_:ÎFCß À!w^w LDN&ß VÖ ×  - W-ÃÃÀw w D _’Àå ƒ_€À x~ ¨€Î¨€€€€€€€€€€ ÖÀ _’ô À_’-À_’À_’À _’×"×"À S×"$Ã×"(×. À,×.À :×"(×.#×.À, À,À ×" ×"À, ×"×,À 5-ÀÀwàw ÎB„CÀEøÿÀ%ÄE€Ã ! À! ÁA @@?× Ä  À! ÁA @@,ÃåÄ5àÄÄ5øÀEøÿÀU× !Ä—" —,Ä ×  Ä  Àww Ä FÌ 5#õ à Îæ^Cß h* ÄeçNæbCß À!Ö wÈw ¶C×"(Ä!!#!À w–w „DÀ ð5,E--÷\HÀf wZw HDNß àÀ @ÁvC7D) þy „ ÀUw w W-À@  ‚À xz‚‚ˆˆÀÀÀwàw ΢CB Næ’Cß h*Ö _@Àz%· v%5øÿŽæß DÖ À _@€Ààtþÿ5öÿÂå€Àì5êÿÀ FAöÿWp @ó ÎæœCß h*Ö NêÿæªCß h*Ö Næ¸Cß h*Ö ÎÂCß h*ÎÊCß h*õôÿµ,ôÿ_8õ,ôÿ ÎæØCß h*Ö ÃeNæÞCß h*Ö µ ôÿãW-öÿcÀ¨$· ¤$5ôÿÀœ$· ˜$5òÿNôÿæäCß h*Ö NòÿæòCß h*Ö Ît$æþCß h*Ö Îf$· b$æDß h*Ö NôÿfòÿæDß h*–%Nôÿæ,Dß h*Ö Â ‚Îæ8Dß h*Ö ÃeôNòÿæ÷•‚>Îp:æ&Eß h*Ö Nff f fffß h*Æe Î ß šÎ^`ß ö,7‘<>wP addsubincdecjeqjnejlejgtjltjgejlosjhijlojhis/nopjbrNGNGVGVG?cG?cGfGfGpGpG?G?GTŒGTŒG G G?T±G?T±G?ÃG?ÃGÑGÑG?çG?çG?úG??H??H!H+H?:H?FH??SH??dH??dH?–H?–H?–H?œH?œH?œH?¥H?¥H?¥H?°H?°H?°H¾H¾HÆHÆHÓHÓHÝHÝH?ìHøHøHTITIIT,IT,IT?@IQIQI?gIzI?„I�ITŸIT?³ITÄIØIéI?ÿIJ?J0JT?AJXJ?oJˆJ�J–J?¢J«JT·JÈJ?çJT?K?K?#K?JKKKSK?`KaKiK? L?L?L ?L?L?%L?%L?0L?0L???L???L?ML?TL?\L?fL?pL?{L?{L?{L?‹L?‹L?‹L?�L?�L?�L?´L?´L?´L?ÍL?ÍL?ÍL?ÝL?ÝL?ÝL?ïL?ïL?ïL?M?M?M??@M?eM?eM?oM?oM?�M?‘M?¡M?²M?ÁM?ÌM?×M?ãM??íM??üM?? N??N??)N??)N??3N?X?ZX?ZX?{XT?�X?¶X?ÓX?ÓX?Y?7Y?BY??RY??_Y?šY?šY?¦Y?´Y?´Y?ÅY?ÚY?ÚY?óY?Z?Z?!Z?6Z?6Z?OZ ?lZ?zZ?–Z?³Z?ÑZ?äZ?ûZ?[?,[??:[??U[??q[??Ž[? [?«[?·[??È[?Ö[??æ[?ü[? \??\w ü€w 8DÄeÀŸ8 · ú7 %ß šôwà7 æ77 Ü7ׯÜ7-· Ô7· Ò7÷"|b7 Ê7 .÷zbƒÁÔ*BÞ üJø*dN+oH+x~+fˆ+e&+c4+s+l Ó•-÷ C r f÷ ðÿ€Àe0�‡•à •1à /ÁB7 Ò‹ƒ D~'Â0\Â4\ ÷ f v÷ öÿ€€LÀe0 9Àe�‡Â7÷ zÂö6÷ p‚ƒà&æ Ä ÃmØ6÷ Ö6ß šÃ~Ä Ž”ß šà Î ß šÃ~Ö „w¦þ7 ª6 ÀŸ 6· œ6Àå0 ‚· ’6Wp `ñÀe0[ƒÄeÓ•?‡f…w&0‰8\7‡A …‡7 X6f…A÷ &÷ À€U…‡f…A÷ …‡ñ @Àe7Ú/1@‰>\ ‡À À 1 @Þ± ‡wÌf…w°/AɉD\F‡  Df…@A&÷ €À÷ 6f…@A÷ @+ñ 9�± ‡&÷ €óf…A÷ @Àe&7?DEBC=EDCBvKhH´FlY'Arg countMissing temp fileCan't create %sTree space botch.globl fltused Illegal initializationmov%c r%d,r0 ¶@Â@Î@$47$34T:²²øjTš²²ÜÌmov%c r%d,%c(sp) tst%c r%d No match for op %dmov%c r%d,r%d Illegal use of register0%oadd r5,r%d mov%c r%d,r%d Register overflow: simplify expressionr%d%d.%d.#r ž Ž ¨$0%o0%otst r%d *$ÎAØAàAêAòAúAB BB        B Âäd, B  ü¶ B @ Î Ä B : PØB h�ì B ö °*B ¶¸ Ú J B ÎIllegal structurepBxB‚BŒB! ª | f 2 ª f | f ( ª 2 F p p Divide checkC error: const$0%oL%d%d.+%d.(r5)_%.8sIllegal structure reference$0Bad reg. referencer%dL%d(r%d)%d.(r%d)(r%d)%c%c(r%d)(r%d)pname called illegally%sNo match' for op %d*+,HIJHFFHFFPjbr L%d sub $0%o,r0 cmp r0,$0%o jhi L%d asl r0 jmp *.+4(r0) L%d L%d mov $L%d,r1 mov r0,L%d L%d:cmp r0,(r1)+ jne L%d jmp *L%d-L%d(r1) .data L%d:%o L%d:.. L%d L%d .text jsr r2,hsw; %o; L%d jmp *L%d-L%d(r1) .data L%d:L%d L%d:.. %o L%d:L%d L%d .text /esw Duplicate case (%d) "56z X ~êŽ cfcc jbr L%d L%d:tst (sp)+ cmp (sp)+,(sp)+ add $0%o,sp %d: <<�‚8‚8‚8‚8�8‚8�8€8�8>"B"?F"J"@J"F"AB">"BN"S"CW"["D["W"ES"N"6":":"6">"B"F"J"J"F" B">" 6":" `"e" e"`" :"6"j0#0#0#0#0#0#"0##0#$0#%0#(0#)0#*0#+0#-0#.0#/#00#<l"=l">l"?l"@l"Al"Bl"Cl"Dl"El"F0#G0#H0#I0#K0#L0#M0#N0#O0#P0#tstC A GBtstC #(I) GEcmpL A,B GBcmpL #(I),B GAVcmpD B,I GBKJcmpL #(I),"(J) GBKIcmpC #(I),J GAKJVcmpD "(J),I GAKIcmpP I,J GDKBcmpL *(sp)+,"(I) GDKAcmpC *(sp)+,I GCKBcmp (sp)+,"(I) KCGAVcmpP (sp)+,I bitL B,A GBbitL B,#(I) GAbitD B,I GAKIbit J,I GCKAbit (sp)+,I HA@#@# @#!@#PŠ#Fb$Gb$M<$N$K¦$Lº$MC A M' $^,A GBMC #(I) GBM' $^,#(I) clrC A GBclrC #(I) movL B,A KBmovL "(I),A KAmovC I,A GBmovL B,#(I) GBKJmovL "(J),#(I) GBKImovL J,#(I) KBGJmovL "(I),#(J) KAGJmovC I,#(J) GDKBmovL "(I),*(sp)+ GDKAmovL I,*(sp)+ bisL B,A KAbisC I,A GBbisL B,#(I) KBGJbisL "(I),#(J) KAGJbisL I,#(J) GBKJbisL "(J),#(I) GBKIbisL J,#(I) GDKBbisL "(I),*(sp)+ GDKAbisL I,*(sp)+ bicC $!F,A KAcom I bicC I,A GBbicC $!F,#(I) KAGJcom I bicC I,#(J) GBKIcom J bicC J,#(I) GDKAcom I bicC I,*(sp)+ M'C A M B,A KBM "(I),A KAM I,A GBM'C #(I) KBGJM "(I),#(J) KBmovC A',J M "(I),J movC J,A KAmovC A',J M I,J movC J,A KAGJM I,#(J) KCGBM (sp)+,#(I) KCGBmovC #(I),J M (sp)+,J movC J,#(I) asrC A GBasrC #(I) aslC A GBaslC #(I) j%8%8% ‚%!‚%"Ì%#Ô%â%$ð%%:&&H&eò$PP&(.').'*x'+ª',ª'-è&.'/Ô&0º&1¬&F)G)HÜ'I&(Jd(Kê(Lþ(MÊ(N~(O¶(fä$3\)4p)hÐ$E A jmp A GBjmp #(I) jsr pc,`A GBjsr pc,#(I) GAjsr pc,(I) clr I clrf I movC A,I movf A,I movof A,I MC A' movC A,I M' $^,A' mov A,I GBMC #(I) movC #(I),I GBM' $^,#(I) mov #(I),I movC A',I MC A mov A',I M' $^,A GBmovC #(I),-(sp) MC #(I) movC (sp)+,I GBmov #(I),-(sp) M' $^,#(I) mov (sp)+,I GEbeq 1f clr I br 2f 1: mov $1,I 2: mov $A,I mov r5,I add Z,I GBmovb *#(I),I GBmovf *#(I),I GBmovof *#(I),I GBmov *#(I),I movb *A,I movf *A,I movof *A,I mov *A,I HBmovb ~(I),I HBmovf ~(I),I HBmovof ~(I),I HBmov ~(I),I GAnegP I GAcom I KAmovC I,A KAmovfo I,A GBKAmovf I,#(I) GBmovC B,#(I) movC #(I),I GBKAmovfo I,#(I) GBKImovC J,#(I) movC J,I KAGJmovf I,#(J) KAGJmovfo I,#(J) GDKAmovC I,*(sp)+ GDKAmovfo I,*(sp)+ KAmovfi I,I movC I,A KAGJmovfi I,I movC I,#(J) GDKAmovfi I,I movC I,*(sp)+ GAKIxor J,I GCKAxor I,(sp) mov (sp)+,I GAbisD B,I GAKJbisD "(J),I GAKIbis J,I GCKAbis (sp)+,I GAbic $!F,I GAKIcom J bic J,I GCKAcom (sp) bic (sp)+,I GAGAasr I GAash $-F,I GAKIneg J ash J,I KCneg (sp) GAash (sp)+,I GAGAasl I GAash B,I GAKJash #(J),I GAKIash J,I KCGAash (sp)+,I GAGAM' I GAMP B,I GAKJMP "(J),I GAKIMP J,I KDGAMP *(sp)+,I KCGAMP (sp)+,I GAmulP B,I GAKJmulP "(J),I GAKImulP J,I KCGAmulP (sp)+,I GATsxt I- div B,I- GATsxt I- KJdiv "(J),I- GATsxt I- KIdiv J,I- KCGATsxt I- div (sp)+,I- GAdivf B,I GAKJdivf "(J),I GAKIdivf J,I KCGAdivf (sp)+,I movC A',I mulP B,I movC I,A KCmovof A',I mulf (sp)+,I movfo I,A movC A',I KJmulP "(J),I movC I,A KAmulP A',I movP I,A KCmovC A',I mulP (sp)+,I movC I,A GDKAmulP *(sp),I movC I,*(sp)+ GDKCmovC *2(sp),I mul (sp)+,I movC I,*(sp)+ GDmovof *(sp),I movf I,-(sp) KAmulf (sp)+,I movfo I,*(sp)+ movC A',I sxt I- divP B,I- movC I-,A KCmovC A',I sxt I- div (sp)+,I- movC I-,A KCGJmovC #(J),I sxt I- div (sp)+,I- movC I-,#(J) GDKCmovC *2(sp),I sxt I- div (sp)+,I- movC I-,*(sp)+ movf A',I divf B,I movf I,A movf A',I KIdivf J,I movf I,A KCmovf A',I divf (sp)+,I movf I,A KCmovof A',I divf (sp)+,I movfo I,A GDKCmovf *8(sp),I divf (sp)+,I movf I,*(sp)+ GDKCmovof *8(sp),I divf (sp)+,I movfo I,*(sp)+ movC A',I sxt I- div B,I- movC I,A KCmovC A',I sxt I- div (sp)+,I- movC I,A KCGJmovC #(J),I sxt I- div (sp)+,I- movC I,#(J) GDKCmovC *2(sp),I sxt I- div (sp)+,I mov I,*(sp)+ bisL B,A' movC A,I KAbisC I,A' movC A,I GBbisL B,#(I) movC #(I),I KBGJbisL #(J),"(I) movC "(I),I KAGJbisL I,#(J) movC #(J),I GBKJbisL "(J),#(I) movC #(I),I GBKIbisL J,#(I) movD #(I),I GDKBbisL "(I),*(sp) movD *(sp)+,I GDKAbisL I,*(sp) mov *(sp)+,I KAxor I,A' mov A,I KCmovb A',I xor I,(sp) mov (sp)+,I movb I,A GDmovC *(sp),-(sp) KAxor I,(sp) movC (sp)+,I movC I,*(sp)+ bicC $!F,A' movD A,I KAcom I bicC I,A' movC A,I KAGJcom I bicC I,#(J) movC #(J),I GBKIcom J bicC J,#(I) movC #(I),I GDKAcom I bicC I,*(sp) movC *(sp)+,I movC A',I ash $-F,I movC I,A KCmovC A',I neg (sp) ash (sp)+,I movC I,A KCGJmovC #(J),I neg (sp) ash (sp)+,I movC I,#(J) movC A',I ash B,I movC I,A KCmovC A',I ash (sp)+,I movC I,A KCGJmovC #(J),I ash (sp)+,I movC I,#(J) M B,A' mov A,I KBM "(I),A' mov A,I KAM I,A' mov A,I KBGJM "(I),#(J) mov #(J),I KCmovC A',I MP (sp)+,I movC I,A KCmovof A,I MP (sp)+,I movfo I,A KAGJM I,#(J) mov #(J),I KCGBM (sp)+,#(I) mov #(I),I KCGBmovC #(I),J MP (sp)+,J movC J,#(I) movP J,I KCGBmovof #(I),J MP (sp)+,J movfo J,#(I) movf J,I movif A,I GBmovif #(I),I GAmovif I,I GAmovfi I,I jz)Ž)Ž) ´)!´)#Ú)$â)(,*),*/F*0T*clrC -(sp) movC A,-(sp) M A mov A,-(sp) M' $^,A mov A,-(sp) GBM #(I) mov #(I),-(sp) GBmov #(I),-(sp) M' $^,#(I) mov A,-(sp) M A mov A,-(sp) M' $^,A GBmov #(I),-(sp) M #(I) GBmov #(I),-(sp) M' $^,#(I) mov $A,-(sp) GBmovb *#(I),I mov I,-(sp) GBmovf *#(I),I movf I,-(sp) GBmovof *#(I),I movf I,-(sp) GBmov *#(I),-(sp) movb *A,I mov I,-(sp) movf *A,I movf I,-(sp) movof *A,I movf I,-(sp) mov *A,-(sp) HBmovb ~(I),I mov I,-(sp) HBmovf ~(I),I movf I,-(sp) HBmovof ~(I),I movf I,-(sp) HBmov ~(I),-(sp) GCM' (sp) GCM B,(sp) GCKBM "(I),(sp) GCKAM I,(sp) GCbic $!F,(sp) GCKAcom I bic I,(sp) GCbisD B,(sp) GCKBbisD "(I),(sp) GCKAbis I,(sp) üÿðÿýÿøÿ‰‰‰¶‰×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûü(*bdevsw[])(){ 0};int (*cdevsw[])(){ 0};int rootdev {(0<<8)|0};int swapdev {(0<<8)|0};int swplo 4000;int nswap 872;w Ò ÀJ · F À ðn¤÷ À ûÀ5ðÿ5òÿζæ"ß Ö 7( 뢧 hÄnÌ `ô Zô5V-ð õ ðÿ5 ðÿÎÖß h-,!õ òÿ5 ôÿ5 òÿÎâß hô5 õ5ôÿÎ&ß ¶õeôÿÀeÔþ5`ôÿæ.ß ¶Ö 5öÿõ öÿ@öÿ 5öÿ5 øÿu-øÿöÿ Nøÿføÿ&ß ¶–%µ øÿðÄežõ ðÿÎÖß hÎêß hÄnÌ ô  ô5  & æ:ß ¶–%Äeë÷ ¸Î ß Î¶æ@ß Ö 7ö Îøß h5 øÿ@øÿÀ ¤ô5æDß ¶Ö µ øÿìÎß h5 øÿ@øÿÀ ¤ô5æHß ¶Ö µ øÿìÎß h÷ *Î~ ß wôw â@õe5øÿNøÿæLß ¶Ö ðwÊw ¸f@Àe–ÿ÷ $À%   _‚— ò— ï”�íŠ @Àe–ÿ£0 £9 �Wp B•ÀeÐÿ`ñ ÂÌ‹À@ÃnË 3æß †Ö À )ó  æPß ¶Ö À)³`×,, ×, óæfß ¶Ö Àr· nÀ ð¤À ÃeËætß ¶Ö ÀwÖw Ä@µ =¢ @µ È‹Àï w¦w ”€wDÄeÀŸ  ·  %ß Xôwx7 ò7 ¶ׯèu q x aw v þÿ-· à· Þ÷"Ö7 Ö .÷¢ƒÁ"BÞ üJFdœo–xÌfÖetc‚sRl Ó•-÷ C r f÷ ðÿ€Àe0�‡•à •1à /Á Ò‹ƒ D~'†Š ÷ f v÷ öÿ€€LÀe0 9Àe�‡Â ÷ zÂ÷ p‚ƒà&æ Ä Ãmä÷ âß XÃ~Ä Ž”ß Xà Î ß XÃ~Ö „w¦þ7 ¶ ÀŸ¬· ¨Àå0 ‚· žWp `ñÀe0[ƒÄeÓ•?‡f…À‚÷ ,ÀxP�· n÷ h÷ @…‡f…÷ …‡ÀL Àåä7òÀ:€ ‰Ž÷ä0÷(×-"‚÷‡f…÷ ÷ÔúÀò‰Ô ‡À À 7â ÀßÞ· Ú…‡7ä 7 Ê…‡f…@‰†w$ w&f…wlwh‰”†ww7¢ÀÿÿF…‡Õ @…&æ¦äHÅåF‚ƒ„…‡7  ÷˜¦ðWð€&øføæÁæ 7 €@ñð%· tÀñó€@Añð&ø@øÃ7óèø@ø—ôL>—ó BÀûÀe0#�‚ @ñððÁæÑ”× ü‡õ ‚  ó BAñðú‚ ÷ ÷  üW †Îeó B@ûÀe0�‡ÀæÀm†÷ ð€` 懒ÃeÈ�¢9 È•0 惠ŠöÈ•1‚ Á¾ÀN÷ ¸€`0ŠæÀæƒVõõVð‡ÿÿ<6bŽ�ÊFÎæ>@xþÿd~Šš¶¸ºÈ¾ÊÌöø0Ì4@Pl˜ÐÖÔàð 8:Ü>JZv¢ÚàÞêú@xæ|ˆŠ´¶îþòþ*VŽ4’²Þ  F4Jnprtv4zšÆòô,00@Bln¦0¬¼¾èêì4 ð<hj¤,¨ª¬®°è & ( 2 < F P R Z b f h x ” º Ú ô  0 N P Z h v x z „ ª Ê ò ô    L d œ ž ° ´ æ ê ì þ     " & ( @ X h l.s .=.+4 . = %d^. %s%sc.c%s %s %s %s: no more, no less %s: only one %s: cannot find üÿðÿýÿøÿ‰ä‰Ì>ÌÌÌÌÍÌ À †@øÿõeøÿôŽß €<w¤÷w ’÷D­ÌÕô‹ ß 4 &ß Ì Ö ß dß šJ Š4 ôŠß šJwP÷w >÷BʵJŽß  ð‹›C€Àe5öÿÎföÿß |Ö ¦ß â:Ö 5øÿÎföÿß ˆÖ tAøÿ@l€Àe€ÀeÀ †ÔùʵÔ^PÔ\PÄeʵÔJPÔHPNøÿß ì;w¨öw –öDô5 FÀe5Àe@-2†ý +ô5N&ß â:Ö ÂÀÀe€ †Ê Ž&ß Ü Ö ÂeïÎß €œWööþüÿ÷ º˜÷fþ´˜÷bþ°˜÷^þ¬˜÷Rþ7®÷FþÎ�˜æ ˜æºþfF ¦ÎEàÿ÷50¨þ7Š4[÷¢¾Ø ÷50”þ÷‹ [÷ 0÷ äÁÀÉ5 @@ðõQõDøQõEøQõ‘õÑõ@ðÖ † �Ö €ÁÀÉ5 ‘ðøõøõøQø‘øÑø‡¦‚€€ì¡ 2pvòÿ� ÁEr †�bæØ—÷þÒ—I Ž ‰ 2 ·—‚‡æðý÷àêýÁ`ýÁ5÷U0ÚýÁ ÷ J7Jý·Ìý‡�æÂý¦�B€”ÀEÿ±Ñ   Â5 ‰øÿÉe ÂEÊ Z·Z‚·‚ý‡1 Àÿÿ‚·rý‡€�ædý¦æ�B ÂèY·âY ± Â5 ÃÐY÷ÊYòøÿ �±‰ ƒ‚·ý‡Àƒ‚·ý‡€Á�Ô–÷ Á�Í–÷ Á�WÁ `ɾ– ‡fŽ Ž Ž ÁEøÿAœZÁ `‰å‡�ÁE÷ Bv ÀÀEÿ‡�ÁE÷ (&v ¶�Ž�€÷ 2 ‡�÷ ‡æ€üŸæD–÷¼>–I €�€÷ ‡æ\üŸæ –÷¼–&‰ ·–·Dü‡·–·:üÖ Àÿÿ‡÷ P ‘ƒ~÷ &‘ ƒ~·â•‚ ‡€¦æÔ•&€� ‚ ‚ ÷ ¾•‡·¸•‚Àÿÿ‡æâû˜·Úû‡Ÿ�€�P˜IŸ�€Ÿ�·¨ðÀÀ˜I˜‡™‡œ‡�‡ž‡Ÿ‡æ’û·.ð·*ð÷à€û¦ Á  P ‘ ƒ~‚·hû‡æbû·þï÷àVû Á & � C~·Fû‡€°mH ‡€�€í�í€  ÿÿW þ ‚Àþ‡W ‡Á@‡÷5vúüÀàôÁÀôÄ€ Ã�ÑaÅ~š—túÿÂEü�ÑЀÑ÷<ï÷8ïÆÄ· (úÀ�\  Ô™ü‡ÀÀ  Äü‡÷0Žú÷ Pæð&  �6r‡ �6r@‡�@A6v@‡@…&æ¦äHÅåF‚ƒ„…‡w Þÿ7 ZÀìôÀe ÿ߀ÿ ß ,À Πÿß # /* * Copyright 1973 Bell Telephone Laboratories Inc */ /* * DV disk driver */ #include "../param.h" #include "../buf.h" #include "../conf.h" #include "../user.h" struct { int dvcsr; int dvdbr; int dvmar; int dvwcr; int dvcbr; int dvssr; int dvair; int dvusr; }; struct { char lbyte, hbyte; }; #define DVADDR 0164000 #define NDV 1 struct { char *nblocks; int cyloff; } dv_sizes[] { 48720, 0, /* cyl 0 thru 202 */ 48720, 203, /* cyl 203 thru 405 */ 5040, 0, /* cyl 0 thru 20 */ 21840, 21, /* cyl 21 thru 111 */ 21840, 112, /* cyl 112 thru 202 */ 21840, 203, /* cyl 203 thru 293 */ 21840, 294, /* cyl 294 thru 384 */ 5040, 385, /* cyl 385 thru 405 */ }; struct { int hd1; int hd2; int cksum; char *chadr; } dvhdr; int dv_unit -1, dv_cyl, dv_head, dv_sctr, dv_count, dv_addr[2]; int dvhist; struct devtab dvtab; struct buf rdvbuf; #define HTBCOM 000000 #define CTBCOM 020000 #define CNBCOM 030000 #define INCHD 01 #define RECAL 02 #define RESET 020 #define SEEK 040 #define CLRDA); } dvstart() { register struct buf *bp; if ((bp = dvtab.d_actf) == 0) return; dv_cyl = bp->cylhd>>5; dv_head = bp->cylhd&037; dv_sctr = bp->dvsec; dv_count = bp->b_wcount<<1; dv_addr[0] = (bp->b_flags&B_XMEM)>>4; dv_addr[1] = bp->b_addr; dvexec(); } dvexec() { register struct buf *bp; bp = dvtab.d_actf; dvtab.d_active++; if (dv_unit!=(bp->b_dev.d_minor>>3)) { /* select unit */ dv_unit = bp->b_dev.d_minor>>3; DVADDR->dvcbr = LDSCOM | dv_unit; } DVADDR->dvcbr = CNBCOM | RESET | CLRD$ ð€&Ð 6÷ ðÿ–% ‰savr5$_main startmÿio.oóŠÓ¶tî xˆ……÷ ð · ê ä 7 â æâ Îe÷ Ô · Î ä 7 Æ æÆ ÎeÀrÀr ÀiÀiÀlÀl7˜ ·– …Õ …·è Á·Þ Ö �w Ž7 h ·Ê Ö �w z÷T 7 x 7 T 7 ¶ 7 ° 7 b ÷ V ÷ÿÿT w X÷” H  (w 0ÿj‰7 ˆ ÷| w 6À% ûÀ% øw üw ÿi‰a\fte†g€dziblfhHxRp‚-l0t1t2t3t4t5t6t7t8t9t,Ô/¢( )¨"> Þw r ÷ à w f7Ú ®÷Ô Ô ¥÷ Ö ÷ \ w Þw À\w º–À`   ƒð þÿ7üÿš Š÷åF †w VÞ÷ Œ w (þk‰w €· . Á( €÷ h wàþ ·\ À �P7 }Àþ ‡w èýl‰Ð8 Ð6 7ä  ‚÷& Ú÷" Öw–þ·  æ$0·  æ +· æ&æ& æw t7Œææ ææw T7lw ‚ .6w B7^· ¶ÎeÜ÷ @Îe¦÷ ¤w ` 7 &~ ÷ ŠóÖ Ö w®þÀâL°Èæòæ´îìæv¤ÎœêœwÌýw ôüm‰wàw ¢@œ €@À . @#w Ìüe‰f r Á@PÀe007ž�w $Àæ q“ Í5w fw �Õ Á w. ‚…À Â. ЋÒ Ò €   . ó‡ÂH÷e†B÷>‰@À °. ·>…W ‡w <üd‰…×-&À 7‰¶†w üf‰¦  ¢‚…×-ö 7‰†w êûg‰¦  ‚…fÁÊñ &÷ ñ €9�± �…fÁ¦÷ �…@Àe&7 @l7@‰±ñ€‡÷ Ú'fÁfñ @Àe71@‰€‡À w Jûh‰À 1 @Þ± �÷ H ÷†À …f w .Àå0 ‚Wp `õ@�÷ T…AÉ  üÖ y…ÀŸ<· 8…÷ ìf\7 âÕ …À% · Ö…&÷ ÎÀ w Öþø7 ¾€w Èþ…À�ðµ 7 ¤À w ®þ w ¶ÿw Èþ…÷ Úw öþú7 Î…w`z…w `úç‰Á²Á w Ôþû…÷6w Â÷B>ú÷ :ú �· 4·à.÷å$w ê÷e÷e*…æeæd÷ ôw ~ÁþÁeÁmæÁíîwàþ÷ ØÀ-w ÿÁÚÀ0`� wÈù÷ Äù¦ÂŽà À0w âþ@”÷ ¦ùw Öþ†~À.w Ìþ À0w Àþ…~†ù@”w ²þ„~€w ¨þ�À-w œþ À+w �þ r Àe0w ‚þ@Àe0w xþÖ …& 7 <æ& ÷ w ¦ö Îz÷ù·eù÷ ùÎ ÷ ôÂm\Àþ€cÀmè €`€ Àíæ7àö÷ ÐÀ-w þ À0w üý@”w ôý„~Ö À.w æýæ°   À0w Òý÷ œˆ~”@”w ¾ý„~·†…7 p ð×­rrð×­i ð×­_?þX ÀŸRþ ×­I?ÿB?õ<ð€ñ÷&…w FýÀ w Zý÷ |÷…w øo‰æjw &ýÀ  "w 4ýö÷ T·LðÖ …Áw |ý…Á�ÛÁíÚ € w hýÂÊÁÈw ÁÁ�»€”w îüÁ û…Á®Á w @ýÀfÁ��šҋÁ üÀtw Àü…Á‚Â�€À�y&Ž w øû ú w ìû� ΠøÎ Ñ• Î úÖ …÷JJ ððñw ’ t  T 1 ,ñþî7 ÷÷ÿ? 7 · 7 w 8×­ðr×­é×­á ð?ûØ…û?�Ð…×­Éð?øÀ… ðð×þ  ñ& w À% ÷ øÖ … + -Ž w àÀ% ÷ šÀ0Àå0 ‚ò@þôÁ ìÀe0 .‚  äæ  d  + - ew J Á4 ÂøÁ`ƒÁ € æ& Á ƒòüÖ òùÖ Àñ ,À% w ôõn…&  +  -w 0 + -Ž w Àå0 q ‚×p `õÀe0Ö  …÷ ªÀ,…w "ú÷ š…Ö �w  ø"w ¬ú Á�Â|€”w  ùD~ôw ¼ù\Ö �w xø!7 Ä÷vw |ú Á�OÂLw Ðù�D~ô\Ö �w öø1Š Á @. 1 .  ‚‰\‰\fortxx           ɩɩÉÉÉɹ  Xrerr endio"rio4"Brio8"<iio2"Niio4"Hlio2"Tlio1"Zcio8"cio16" ecvt fcvt _ndigit slcntø ilvalü itypeú iowf"viowp"liorf"ŠformpX setiordflgð binflg itmfnd^ scale\ itmflg pbuf ppar llpcnt fmtchrllp crackÔngflg` repZ itemÞswitchmswitchüafmt\ffmttefmt†gfmt€dfmtzifmtblfmtfhfmtHxfmtRscal‚minuslnumbtslash¢lpar rpar¨quote>gnumâelistŠ_nocr$d eorec1xeorec`getitm"crack1widthþ err1ndig cvswÜgflgî iocvÀiicvâlocvLlicv°focvÈficvædocvòdicvægocv´gicvîeocvìeicvæaocvaicvvxocvxicv¤hocvÎhicvœqocvêqicvœgetbuf"vchkunit"ºcreatf"Êopenf"úunitô utable$ btable$. filnamæ bufferö bufpä fputc&flush1XfflushJfgetc„nlflgb fputcc4nspace spaces–getarg~nflgò ilenû twidth fgetcnR storin gcflg gatof> atoi iowu"h ioru"� rewi"¼ enfl"¼ ftable$V _end r1.o®ðà¶d²ð€��ž•\ž\€�ˆÖ \‰&\Àe&&&&\&&\�Á‚€H`"Ô \‚� Á€p`B ˆ`$"‚–%Ô \–%\Ö €À aÔ  ü\Ö €Ì  ü\Ö „\w Pÿ)gas1" gas2"gas4"gas8"stop"lval" rval4"4rval8"$do1"Zdo12"Bdo14"Zdo2"Tdo22">do24"Tgoto"~cgoto"‚cagoto"–agoto"¦rerr gotoe¬r2.o® áÿd¦÷ N!#‡!÷ Bƒ÷ 6÷ * ÷   † ÷ ‚Î\ \€�‚�%H‚#pŽU\Ö  \Î êìŽ%çéŽ%äæŽ%áãŽ%ÞàŽ%ÛÝŽ%ØÚŽ¥Õ׎¥ÒÔilt4"ile4" ieq4"ine4"$ige4"0igt4"<lan2"hlor2"dlnt2"pieq2"vile2"‚igt2"ˆige2"Žleq2"vine2"”ilt2"|lne2"”leq1"šlne1" comparRoneHzeroNr3.o® áÿ¸0HÖ \Ô \ ðVñð€�À Á ¨Ö �Ô Ô \lif2"lif1"rif4"iif2""iif4"rif8" r4.o›±ÿ4�Že\Žå\�Vpf\�À r\Ö \Î æ \ \&\—&\iad2"isb2"imp2"idv2"i2i4" i1i4" i4i2"i4i1"ing2"&rval2"*rval1".l2l1"2r5.o®Láÿà8`÷ @ô ÷ @ö÷ @ò÷ @ùfû\€ ð ðþVþH 6 Ž \iad4"isb4"imp4"idv4"ing4".rerr load"storer6.o®aáÿ| ððõô ððõÀñô  ððõò ððVõõù&ø\ ððÎñ\ ððõ&ü\ð ð ðð ððþ&ø\ð ð ðð ððõ&û\rad4"rad8"rsb4"rsb8" rmp4"rmp8"rdv4"*rdv8"&rng4":rng8"6r4r8"Dr8r4"@i4r4"Zi2r4"Vr4i4"rr8i2"di2r8"Lr4i2"ni4r8"Pr8i4"hrerr store2r7.o®wá¶ô°„Àe&\Àe&–\Àe&\Àe$&&\ ðÀeõ&ø\w 2&N`\w &Âe‚w �`‚ †f’\bf‚~\Ö  Ð Ö Î �ePp…~Õ fþÿ‚ ÁPp‚~N ‚w fÿ�Mw ÄÿÀe&N`\™lvalp"rval1p"rval2p"rval4p"rval8p"&alval"2alvalp" arval"Larvalp">rerr getsubhr8.o®Œáÿl( Ö € \�æÃÀ € †ÁpApùÁƒf\ipi2"r9.oR{˶üX<ð ð6þ6øw fû\ð ðw fø\–%€Wõ€@õÀ ðÀ @ù@ø Wõ€@€ †@òÀ òùMw ªÿIone€@ipi4"rpi4"rpi8"rerr ra.oR Ç¶¸0H ðððVõõð føw êÿ ‡òw âÿ‡&ø\Añðûw Òÿ)9Irpr4"rpr8"log exp rerr error*rb.o®Éáÿ¸<0À`æ&&\À�„ƒÔ € ÀE`Àåfû\œ\call"callp"retrn"stsp"8rc.o®äáÿ:Œ€ ð–õÖõÖ �øÐø\Àe ð�õÐõæø¦ø\ ðð÷ –ôCô ðð÷ †öÀñCöÁñ  ðð÷ ròCòö…òÄò�øCôfø&ø\ ðð÷ T€ñ�ñ@÷ðõùEõ@òDôDø�ø@òÁñCôòôùDùäõùDõ@òEôDøÁø@òBöòôùDùÖ ðð–õÂñÎñ¦ø\€õøVõEø–õÖõHð ð ðþ ð ðõ ððÿ&ñ&ø\ ððõVõfü&ü\ ððÁ ðð ÷ ¤ÿ„÷ðÅ÷ð� ÁEf\c8c16"c16c8"üi4c8"Ør4c8"är8c8"òi4c16"Ür4c16"îr8c16"ècad8",csb8"<cmp8"Pcdv8"ncng8"¼cad16"(csb16"8cmp16"Lcdv16"jcng16"¸rval16"rval16p"gas16"ceq8"cne8"ceq16" cne16"abcdefgargÈsargdrd.o®íá¶œ.0ÁPp‚~ÂR \÷ âÿ\Àd b\898slist1"slist2"slist3"$temp re.o®öáÿFl÷ 6÷ .÷ & ÷   ÷ ÷ æ\& \ ð€õ÷ðHrle8"rlt8"req8"rne8"rge8" rgt8"(compar:one0zero6rf.o®ÿáÿFl÷ 6÷ .÷ & ÷   ÷ ÷ æ\& \€ðõ÷ðHrlt4"rle4"req4"rne4"rge4" rgt4"(compar:one0zero6rg.o® âÿT`„œ•\œ\��\ ðõø\ ðõøõø\À`˜•\À`˜\À`��\ ðÀ`õø\ ðÀ`õøõø\gmv1"gmv2"gmv4"gmv8"gmv16"stst"gmv1p"&gmv2p".gmv4p"6gmv8p"Bgmv16p"Nrh.oœúr¶ô°„Ö Î Ö Î Î Ö Î Î Î Ö Î Î Î Î Ö Î Î Î Î Î ”#†e\w ÄÿÖ Î ”#ø†e€—&\Ö Î Î ”#ï†e¦\Ö Î €À À  å†e$&&\ ðÖ Î Î Î Î ”#؆eõ&ø\ ðÖ Î €À À À À  ʆeõPõfø&ø\©gal1"gal2"gal4"gal8"gal16"$gar1"@gar2"Pgar4"`gar8"xgar16"�rerr rx.o®âÿ ecore$  !"#$%&'xT0‰Wð ·òÿÄ\A÷ æÿ÷ àÿÂhw Ò• ÂåZ·À‰Z‰ r fw ðÿ€Àe0�…Runtime error 8YIImain temp"hrerr"fptrap erret argp mesgZmÿget.oo,õ–ÿH^,$fA7X‰^‡ �…Éÿÿ�±…fAñ @Àe7R1@‰„‡À �±…À 1 @Þ± �…‰www °ÿ†…&w ¤ÿÀ€U…‰getc" getw#dfopen"put.oo,„—ÿ”|(<fA7v‰|‡  �…Ñÿÿ�±…fAñ &÷ €ø9�± �…&fA÷ �€…@Àe&7Bw>·ã8@‰ž±ñ‡‰¶w w&w ’ÿ€Àw ˆÿ…‰putc""putw#‚flush"Bfcreat"flRatan.o,A–ÿ°Xð7d@ñðw h&Àñw `Àñ!7J& @ñðŽ ÀñAñðÎeÁñùw 87õ´Î5Àñ7ô¨7ô¤Ö5ÀñVðÖõ–õVõ€…fø¦øæø¦ðWð€@H7÷–ð7÷†ð wõf@ù@øw Àñ7ô`…ø7öPwôLùw 7ôR…ÀÞæøÃòXõCòXôÎ üÎÂøƒò˜ôÎ üÖ Bùò… (08@HP8€@É@Ú!¢ÂhI@Ú!¢ÂhAy‚ü™1ïÔ?ÌçÏ‘y"?ÊD{‘ÕAv#O›ÅP#C†àÌõ!+šC“ô|¥]2CU*j 4¬xBJÔÃÔh{CþWú*Rs¸CL¦~Szatan"atan2"savehsatanvret\pi2øsq2m1arctan°sq2p1oneðpi4p4pÞp4p3 p2(p10p08q3@q2Hq1Phypot.o,—¶�.$fø€ñ�ñ@÷ðõ€@&ø@øVõùòô€@w ÚÿòðVõ…hypot"sqrt one€@mesg.o,0—ÿt& &@w Õ‹þ@á@ 7À‰&… ÅE€…‰mesg"nlist.o,@—ÿÒ <&f¦wÊA@È Àe  ù‰ÒT‡‰Þ K÷®¸÷¦ž×-ž÷ž¤À’Àm�×-–À Àe7v×-v×-n)€‰Ø÷å n"€‰Þ  @È ò7"D7,>7,8 7,2ð.ð* Àe 怉‚�€…‰‰nlist"doneÊbufÞcdoneÆcountîsin.oo,¹—ÿ„à´€ñæ& ¦ðWð€fø¦ø&&ø€ñ7órWó€?Wò€A@û€mWõ€@€ ‡ö€@ †ÀñVñð€Àñø@ò·õh�ò·ôZ�ò·ôL�ò·ô>�ò·ô0òBø·ôh�ò·ôZ�ò·ôL�ò·ô>ù€–õVõVðÖ …"@ƒùNnDOLX2�ú»ê–ËxØ©3Ÿ‰ÖIáä”¶ÂTXÇ]1 ªDø!ñ‡ûLÎç%§dîÇIgN5& GbÜqhÌDK§Ÿ-?ásin"cos"frpi2�fourth€?four€Aone€@p4¸p3°p2¨p1 p0˜q3Øq2Ðq1Èq0Àswitch.o,Õ—ÿL fA Ñ ü�…AüEúswitch"sqrt.o,È—ÿ¼J@ñð¡…ñ±…&¦ð€ÀEÿ@ðfø¦øø&øŽ Îe@ õÀBø€ùôò@~–õVõVð€¡…sqrt"half@qsort.oJY¯¶`ìxf&Ã5Á5× ÷äÐ Å¡ wÆ÷ξ÷º¶÷ „…‡E …`‡ s„ qDD`f¦D †@÷ œÿÁ`ø„ ƒÂà€÷ Šÿùÿ pD í„ëD ÿ `Dí‚&Á`€@à„í ‡€„f¦÷ Œÿ‚�Ãf¦Å@’‘’�D‚�‡f¦Å@‘D‚�‡@‰ ‡qsort"compare exch1äexchangeìwidthîexchwÎexchbºqs1@loopZloop1jttyn.oD(uÿ4b*T€ ÷x‚æ ‰h"‡ÎP‰b‡@‰h‡ Àh$ô$ttñ¤yîЋì¢é7˜:@‰Ö À�0‡/devttyn"_ttyn"name�bufher1ZdevberVrand.o,©—ÿ|"$7‡fÁWp3Áe @7ÀE€�‡rand"srand"ranx"compar.o,p–ÿd$ æ&¤à ü ‡ÀÀÿÿ„ƒÀ ‡compare"crypt.o,€–ÿÀô. lf¦æ&fÀ"ЕЕ b†P”ûÀ Á"œÿÿC”Âx�� ¢ø‡Ä"Å"æ à �rB`ÂE Œ\ô× †�\ø× "ð‡ÎåÔ Õ !"å‡Ö À"ÂÂÔÁE€ÿÁ R"S" ¢õ‡Ä¢ÃBÂÀ �0…Š Âú‡& s>Åe0W!9ƒÅeW!ZƒÅe„T‘!ªᇅ„ƒ‚�À¢‡ @€ @€  crypt"word$¢key"wheelcod"cagecode"wheeldivshiftôcageÂwheelÂecvt.oYÜEÿ  ,ä7 2÷*¦ðWð€&øføæÁ  7 @ñð%· Àñó€@Añð&ø@øÃ47ó¼ø@ø—ôL>—ó BÀûÀe0#�‚ @ñððÁ Ñ”× 4ü‡õ ‚  ó BAñðú‚ ÷ ÷  üW 4†Îeó B@ûÀe0�‡À ÀmZ÷ ‚€` ‡’ÃeÈ�¢9 È•0 ƒ ŠöÈ•1‚ ÁPÀ"÷ J€`0Š À ƒVõõVð‡Ì>ÌÌÌÌÍÌ _ndigit# ecvt"fcvt"eflag6buf sign4zerrone€@lssvgtr:buftop4tenthepsilonL>ten Bpadˆdigit1ždigit�out¨outoutàpow.o,r—¶ôHT@ñðAñð…€føWó€@ðVõ€ñw ‡føWó@ðÀñVõ…w Èÿ‡òw Àÿ…Võ±…)pow"log exp badDone€@bad1Bhalf@exp.o,§–ÿP̨¦ðWð€¦øfø@ñðõ€@¡67ó˜ð�fûö@fûÎ ô@øAò·õd�ò·ôV�ò·ôHòBø·ô`�ò·ôR�ø@öôù7ò^&úŽe—#Ö 7õV± —#�ÿÖ ñ¡ý¡Võ–õVð…½E=s½M¡BÔ�Ÿ˜Û`½=B.p«ª½ˆF±�:|+eiD(/èzC•¸@;ª\)ñµ@óù3dÞÿÿÿÿÿÿÿexp"ldexp ýstexpúone€@out„log2e´half@P2œP1”P0ŒQ1¬Q0¤sqrt2¼bigÄlog.o,#—ÿ8À¨@ñðõÿÿ±…¦ðWð€¦øfø&úý7÷VðýÎ øö€@Wô€@ùø@ò·õ`�ò·ôR�ò·ôD�ò·ô6òBø·ô^�ò·ôP�ò·ôBùVþwòôVõ–õVð…5@óù3eÞ1@rÑ÷zÏÀÂ�lŽ÷B‰¨‰#"™Âû3’h±@×?ØG�e˜@Â�lŽ›BÙ,½k$Âç“aXUlog"ldexp ýstexpúbignegÿÿsqrt2o2xone€@p3 p2˜p1�p0ˆq2¸q1°q0¨log2€ctime.o‡>Ó¶Ø @xXESTEDTw ôÿNß "ß &wÞÿw Úÿ @ÀeòÿL@4À &ß Ö ß FÂÀ×, J×, J— — ×, ÷UÔõÿÿøÿõoöÿÎwæß Ö 5øÿÎ/æß Ö 5öÿÀ¢ µ øÿµ øÿ×,µ öÿµ öÿ×, Î&ß Ö ß F³ Àwúþw öþDC ß Ò@mÀe“þÁím Áe¼À rfÀ€åwºþw ¶þ΀p@&fß –%Øþ¸ÁÀ r<RÁÀ r<ÁÀ r<RÁÀ r<À rWtC`À rÒÁeÀ rwÃFÎß Ò!Îß Òàƒ õ÷æ7æÎß ÒÀ%n÷P ÀÀ ,@ÀÀ ì@ƒ õ÷2€ Ò7 ¬À¸wÚýw ÖýÄÃbÀ”�üAA WpÁe|CÄÔ”Ô”Ô”„ @Àe�WpÁe’CÔ”Ô”Ô”Ž&ß öÖ ŽÎed&ß öÖ ŽÎed&ß öÖ ŽÎed&ß öÖ Äe@ &ß öÖ Àw.ýw *ýAÀ rÁ ÀnÀmw ýw ýD„ W- C —r �À r Áe0T�Ô• AÀ r Áe0T�wÀüPFDay Mon 00 00:00:00 1900 SunMonTueWedThuFriSatJanFebMarAprMayJunJulAugSepOctNovDec™Ù™èèÙ™Ù™ÈÙÙ™Ù™Ù™Ù_cbuf _dmsize#@_timezon#X_tzname#ZL1L2_dayligh#^_nixonfl#`_ctime"rsave _localti""_asctime"&L3rretrn _dpadd _gmtime"FL5˜L10000„L10001„L6¸_sunday"L7þL10002ÒL10003æL4_dysize"ÒL8BL10¸_ldiv _ldivr L11ÂL12ØL13ÔL14òL15ôL16 L17L9"L21bL194L20<L22|L23’_numb"öL18ÎL25ìL24òL27$L28(L26<ldiv.oša¶x"$€�6rw‡€�6r@‡_ldiv"_ldivr$"_lrem"dpadd.oÅÔÿP f…@õ Á P`Hm` …‡_dpadd"fp.o.oÍÇSÿ( Îåfptrap"atof.o?Þ¶Ì`¦ðWð€føf¦& ñ }  -Ž } Àå0 ‚÷ „ö‚ ô þÿ } Àå0 ‚÷ f õ 5ww  ÿÀå0B`Wõ€@¦ — &ƒñÖ �õÿ Wò Bƒ~Ö ùòð„õÿÖ ÀñÀe0‚�VõVðÕ …÷€\ðò B@þô‡Îe‡atof"atoi digit´one€@outžhugeÿten Bbig€\atoi.o?­ÿ„4  } &  -Ž } Àå0 ‚Wp `õÀe0Ö  Õ …atoi"gamma.oEU7¶àøà¦ðWð€7 îfø@ñð3÷Bðw ”w Þÿ†VõVð¡…õÿVõVð±…&øøw ¾ÿWö@òö7ôšWõ€@Vù&øføAò&À¬æõòôÎ üÖ €òô×€ñø7òpw |ÿÀñðÒ· h€ñæbò7ùTw `ÿ&ø@øw XÿôÀñ·HºöAð ôA&øô€@&øô€@w äÿùù…÷€@ð ô€@&øöAw êÿò…¦ø&À æøõòôÎ üÎ�øBòXôÎ üÖ €ù–õ…d\TLD<lœ”Œ„|t¤£Ç¹-qªªªª'ªk@Ž?%C¥õIAÚ!¢Âh99I9gamma"signgam$ø_signgam$ølog sin half@one€@twoAeightBlargeÿnegativexasymptot:regular²lretret&erret.goobieèp5p¬piðp4p p6dp5\p4Tp3Lp2Dp1<p0lq6œq5”q4Œq3„q2|q1tq0¤s5¸s4Às3Ès2Ðs1Øs0à*+,-./0123456789:;<=>?@ABärsave L3&L4Ø_fopen L5,L68L1Ô_seek L7NL9R_getc L10tL11pL12~L13œL14‚L15šL16˜L17œL18ÂL19ÌL8Îrretrn mon.ooEB¶ÔôÌw üÿõ  & & & ß Æeζæôß Ö ÀÎÀ æÄ&ß –%ß T÷ ´ÿÀ%5 w ¢}@p@p w€A � Wp@5`A � Wp@5à õ '@@í€ ÀE€D- †À & f ß –%ÄÿÀ f@ À &fß Æew ÿmon.out9Xxˆ˜¹èX _monitor"L2üL3þrsave L4H_profil L5ô_creat _write _close L1ð_nargs L6VL7Î_ldiv L8Òrretrn perror.oTVê¶„L¨w üÿõLøÿ÷-ðÿîÿÀèÿÀ 5øÿý‹NøÿæZß Ö Nøÿfæ^ß –%w´ÿUnknown error%s%s: %s I  (˜˜Ù_errno _sys_ner _sys_err _perror"rsave L2LL3 L46L5Z_printf L6HL7^L1Hrretrn rin.o.oEC¶(Pxw üÿ ÷ ðÿÀ÷ æÿ× -€ ò× 0 × 9Wp Á`ÁeÐÿDäBp@w°ÿ9Y™_rin"rsave L2 _getchar L3_exit L4(L5DL1Lrretrn alloc.oEC¶ˆDw üÿD OÄeÄE€À%ÿÿÄ"‡ÀmØÀ"‚òÀÀe5Àa2Àá ò ÀÀe%Â!†À5Nß À%ÿÿ Î æ æß –%÷ bÿJŽÎeß ²µwNÿw Jÿ@ÀeþÿÃÀ!ƒƒùa€ Œb´´ÀÀ`! c33wúþÿÿOut of space 9Èø 999_freelis#_slop# _alloc"rsave L2L1®L3L5fL6dL7DL10000rL10001t_sbrk L8žL9 _write _exit _free"²L4®rretrn L11ÆL12ÔL13èL14ìL15þL16L10fltpr.oYäM¶�œH ÷öÿõ÷ ðÿÁ Ó•- Ó•0�”B~ÁÔÿÓ•. Á Ó•0…~Á ”B~‡Â ÷¬ÿõ÷ ¦ÿÁ Ó•-”Ó•.Á”ÿ”B~Ó•e �Ó•- Ó•+ r Àe0�Áe0S�‡9Y99I9pfloat"pscien"Jfltused"_ndigit ecvt fcvt printf.oY M¶p˜ w üÿ€w–DÄeÀŸŒ · † %ß ôwÒÿ7 r7 Êÿׯh-· `· ^÷" 7 V .÷ƒÁlBÞ üJ�dæoàxf e¾cÌsœl Ó•-÷ C r f÷ ðÿ€Àe0�‡•à •1à /Á0ÿ Ò‹ƒ D~'˜œ ÷ f v÷ öÿ€€LÀe0 9Àe�‡ÂŒ÷ âþ‚÷ Øþ‚ƒà&æ Ä Ãmd÷ bß Ã~Ä Ž”ß à Î ß Ã~Ö „w¦þ7 6 ÀŸ,· (Àå0 ‚· Wp `ñÀe0[ƒüÿðÿýÿøÿYHidiFreset.oET¶„<·w·‡Æ Å·_setexit"_reset"sspsr5spc retrn.oET¶P$7 ÀÿÿF…‡retrn"cerror"_errno$rsave.oET¶t $Õ @…&æ¦äHÅåF‚ƒ„…‡rsave"mrsave"rretrn"ltod.ooN”kÿ< f… ð=þð…‡_ltod"bDEFGHIJMNOPQRSTUVWXYZ[\]^_`cdefghiK)9HHH_printf"_ndigit pfloat pscien _putchar rsave rretrn formp¢looprjust¤gnumlwidth ndfnd¦swtabldecimal�octalæhexàfloatscien charac¾stringÌlogicalœprbuf*prstr.ffltpr.oED¶< ÄeÓ•?‡pfloat"pscien"putchr.oED¶,p0f…Àr÷ ,ÀhP�· ^÷ X÷ @…‡f…÷ …‡À< Àå|7,À*€ ‰p÷| ÷×-‚÷ ‡‰|_putchar"_flush"._fout$vfl:getchr.oED¶ÄB0f…÷ úÿ÷ôÿÀìÿ‰ ‡À À 7Üÿ Àߨÿ· Ôÿ…‡7Èÿ 7 Äÿ…‡)())())))_getchar"_errno _fin badret4atan.ooED¶p0f…wøÿ5õw ðÿ7 ìÿwèÿ99)_atan"atan retrn savr5 atan2.oEE¶x0f…wøÿ5õuõ w ìÿ7 èÿwäÿ99)_atan2"atan2 retrn savr5 atof.oEE¶œ"Hf…ww òÿ7 ìÿwèÿÀŸ· … I9atof _atof"a_tof"retrn savr5 ptr"chdir.oEE¶p$f…w‰†wìÿ wæÿ ‰)_chdir"retrn cerror chmod.oEE¶€ $f…ww‰ †wæÿ wàÿ‰)_chmod"retrn cerror chown.oEE¶€ $f…ww‰ †wæÿ wàÿ‰)_chown"retrn cerror close.oEE¶`$f…@‰†wðÿ wêÿ)_close"retrn cerror cos.ooEF¶p0f…wøÿ5õw ðÿ7 ìÿwèÿ99)_cos"cos retrn savr5 crand.oEF¶„<f…@÷ ôÿwðÿf…÷ èÿwäÿI)9)_srand"_rand"retrn rand srand creat.oEF¶|$f…ww‰†wæÿwâÿ‰)_creat"retrn cerror crypt.oEF¶p0f…wøÿ@÷ ðÿ7 ìÿwèÿ99)_crypt"crypt retrn savr5 dup.ooEF¶h0f…@)‰†wðÿwìÿ9)dup)_dup"retrn cerror ecvt.oGëÓ¶Ü6`w "÷ øÿw ÷ îÿÅêÿ7 æÿ½}wÚÿ·Öÿ6õ· ÌÿM)9YYiYI_ecvt"_fcvt" ecvt fcvt _ndigit savr5 retrn setup&execl.oEF¶lf…w@Àe7 ‰wäÿ ‰_execl"cerror execv.oEG¶df…ww ‰wèÿ ‰_execv"cerror exp.ooEG¶p0f…wøÿ5õw ðÿ7 ìÿwèÿ99)_exp"exp retrn savr5 floor.oEG¶¨.<6õ@ñðó€@ðWö€@ó€@@ø‡6õÀñ÷ ÚÿÀñ‡_floor"_ceil" floor"ceil"$one€@fork.oEG¶\$f…‰†wòÿ wìÿ)_fork"retrn cerror fstat.oEG¶x$f…@w‰†wèÿ wâÿ‰)_fstat"retrn cerror gamma.oE_¶p0f…wøÿ5õw ðÿ7 ìÿwèÿ99)_gamma"gamma retrn savr5 getc.oEH¶Œ‚ `f…wz‰‚7‡A …‡7 Þÿf…A÷ &÷ À€U…‡f…A÷ …‡ñ @Àe7.1@‰ˆ ‡À À 1 @Þ± ‡w~ÿ‰‰YIindir_getc"<_getw"_fopen"cerror _errno badret~getc1Lgetcsw.oEH¶< f…&‰wöÿ_getcsw"retrn getgid.oEH¶P$f…/‰ÀEÿwòÿ)getgid/_getgid"retrn getuid.oEH¶Df…‰ÀEÿwòÿ_getuid"retrn gtty.ooEH¶x$f…@w‰†wèÿ wâÿ ‰)_gtty"retrn cerror kill.ooEH¶�<f…€·‰†wèÿ wâÿ%‰)_kill"retrn cerror kill%indirlink.ooEI¶€ $f…ww‰ †wæÿ wàÿ ‰)_link"retrn cerror log.ooEI¶p0f…wøÿ5õw ðÿ7 ìÿwèÿ99)_log"log retrn savr5 makdir.oEI¶p$f…w‰†wìÿ wæÿ‰)_makdir"retrn cerror mdate.oEI¶€"$f…wA@A‰"†wäÿ wÞÿ‰)_mdate"retrn cerror mknod.oEI¶œ&0f…www‰&†wàÿ wÚÿ‰)_mknod"retrn cerror mknodmount.oEI¶�&$f…···‰&†wàÿ wÚÿ‰)_mount"retrn cerror nice.oEI¶`$f…€"‰†wðÿ wêÿ)_nice"retrn cerror nlist.oEJ¶p$f·úÿ· ·w êÿ…‡)_nlist#savr5 nlist open.oEJ¶|$f…ww‰†wæÿwâÿ‰)_open"retrn cerror pipe.oEJ¶t0f…*‰†wôÿBJ wæÿ)_pipe"retrn cerror pipe*pow.oEJ¶x0f…wøÿ5õuõ w ìÿ7 èÿwäÿ9)_pow"savr5 retrn pow prof.oEJ¶„$ f…wwww ‰$wÜÿ,‰_profil"retrn putc.oEK¶ü® xf…w¦Aɉ®F‡  Df…@A&÷ €À÷ 6f…@A÷ @+ñ 9�± ‡&÷ €óf…A÷ @Àe&72w.·ã(@‰´±ñ‡wZÿ7 Vÿ…‡‰¶‰IY_putc":_putw"_fflush"j_fcreat"cerror _errno badret¢goodret¦putc1Pflxqsort.oEK¶\æ€w üÿw ôÿwîÿAupNNmfß .Ö wÒÿw Îÿ ÂÈÿ@@í5ôÿ€ _��Á fAôÿÀ rBpuôÿ@@môÿ5øÿ5öÿD@€à5!øÿ†føÿ&ÿ rÿ–%5òÿ µàøÿ@øÿ&ß ”Ö êõ òÿ„`åõ öÿ3ƒæföÿÿ <ÿ–%5òÿ ε`öÿ@öÿ&ß ”Ö êõ òÿ5!øÿε`öÿ@öÿ&&ß ¸–%µ`øÿ@øÿÔÎ&ß ”Ö ƒà„`±ƒàÊ5!øÿ$@øÿ@íAAíöÿ ‡NföÿŽ`ß .Ö uøÿ Nøÿfß .Ö @öÿ€`5_8µàøÿ@øÿ&æß ¸–%µàöÿ@öÿ_~wlþw hþõbþøÿDC“Ô’“�õ øÿúwHþw Dþõ>þöÿDCB5“øÿ”’Ò’S�øÿõ öÿ÷wþ9 i9  i9i9i_qscmp _qses _qsort"rsave _qs1".L1*rretrn L38L2�L4~L6´L7ª_qsexc"”L8´L9´L10 L11àL12L13 _qstexc"¸L14nL15RL16jL5�L20¨L18®L19´L17´L24ÐL22ÜL23âL21âread.oEK¶„"$f…@ww‰"†wâÿwÞÿ‰)_read"retrn cerror sbrk.oEK¶ôHHf…÷D@wm:‰H†wæÿÀ.wm(wØÿf…w‰H†wÄÿw w¸ÿ‰9)9)_sbrk"_end retrn cerror ndL_brk"(seek.oEL¶ˆ$$f…@ww‰$†wâÿ wÜÿ‰)_seek"retrn cerror setgid.oEL¶l0f…@.‰†wðÿ wêÿ9)setgid._setgid"retrn cerror setuid.oEM¶`$f…@‰†wðÿ wêÿ)_setuid"retrn cerror signal.oEM¶ÄbNTf…Aw wœ÷5”WpÁe\W b ‡W ª †ñzwt‰ª‡w¼ÿÀw´ÿf¦æ&Ø „ƒ‚�€7æÿ7àÿ7Úÿ7Ôÿ7Îÿ7Èÿ7Âÿ7¼ÿ7¶ÿ7°ÿ7ªÿ7¤ÿ0‰9Irtisignal0_signal"retrn cerror vectbevectªsin.o.oEN¶p0f…wøÿ5õw ðÿ7 ìÿwèÿ99)_sin"sin retrn savr5 sleep.oEN¶P$f…@#‰wòÿ_sleep"retrn sleep#sqrt.ooEN¶p0f…wøÿ5õw ðÿ7 ìÿwèÿ99)_sqrt"sqrt retrn savr5 stat.ooEO¶€ $f…wwu: jsr r0,call; _dcxint &dcopen, &dcclose, &dcread, &dcwrite, &dcsgtty,kl klin; br4+1+%d. klou; br4+1+%d. dp dpin; br6+%d. dpou; br6+%d. .globl _dprint dpin: jsr r0,call; _dprint .globl _dpxint dpou: jsr r0,call; _dpxint &dpopen, &dpclose, &dpread, &dpwrite, &nodev,dn dnou; br5+%d. .globl _dnint dnou: jsr r0,call; _dnint &dnopen, &dnclose, &nodev, &dnwrite, &nodev,dhdm dmin; br4+%d. .globl _dmint dmin: jsr r0,call; _dmint dhmÿgetpw.oEB¶Ø ,w üÿ÷ Ú @ÀeôýæØß Ö wôýÀõºôý÷ ´ÀN & æ¤ß –%5 öý5 øýB@Àeôýß À% à À2Ò�ïŠBÄÄ €”À%:× Àôñ€”À%:× 0ø× 9õWp Á`ÁeÐÿDí5! ÀÀw(ÿ/etc/passwd)X˜È‰_getpw"L2‰ †wæÿ wàÿ‰)_stat"retrn cerror stime.oEO¶h$f…�@A‰†wìÿ wæÿ)_stime"retrn cerror stty.oEO¶x$f…@w‰†wèÿ wâÿ‰)_stty"retrn cerror sync.oEP¶H $f…$‰wöÿ_sync"retrn sync$time.oEQ¶Tf… ‰¦BR‚wêÿ_time"retrn times.oEQ¶`$f…w ‰wîÿ+‰_times"retrn times+umount.oEQ¶t $f…·‰‡ 7èÿÀÿÿwàÿ)_umount#retrn _errno unlink.oER¶p$f…w‰†wìÿ wæÿ ‰)_unlink"retrn cerror wait.ooER¶€ 0f…÷ øÿ&‰†Ö wìÿÖ }wàÿ9)_wait"_nargs retrn cerror write.oER¶„"$f…@ww‰"†wâÿwÞÿ‰)_write"retrn cerror abort.oER¶( f…_abort"errlst.oES¶0 @ŒError 0Not super-userNo such file or directoryNo such processError 4I/O errorNo such device or addressArg list too longExec format errorBad file numberNo childrenNo more processesNot enough corePermission deniedError 14Block device requiredMount device busyFile existsCross-device linkNo such deviceNot a directoryIs a directoryInvalid argumentFile table overflowToo many open filesNot a typewriterText file busyFile too largeNo space left on deviceIllegal seekread-only file system2BJTn€’¢®ÀÐâì 2BRbtˆœ®¾Îæô_sys_ner# _sys_err# L1L2L3L42L5BL6JL7TL8nL9€L10’L11¢L12®L13ÀL14ÐL15âL16ìL17L18L19 L202L21BL22RL23bL24tL25ˆL26œL27®L28¾L29ÎL30æL31ôexit.ooES¶0 f…@‰_exit"hmul.ooES¶0 €6p‡_hmul"hsw.oo\dè¶D  rÁ �dA! þ‚hsw"locv.ooES¶j $f…&æ¦ÄjCB€  ‚ Ô•-÷ ŠÀj‚ƒ„…‡÷ Áe0f—v÷ ìÿ”•‡ À —vA W ‡Áå ƒ ~‡_locv"bufjdividNnargs.oET¶àJ<Af… w,üÿ.Àw"(Àe w"Àew"@l€ …‡ß Ö –%Æe_nargs"jsrsd>tstiBcmpiDadmÿccos.o®ÀÞ¶À¤hª²¤¶¦¤ºœº¾¤²¦¤¾º ¶¤²¦¤º¾ ²²ª€@A(Hhˆh¨¸ÈˆˆøÈhˆh¨(ˆˆ8HˆøÈhˆh¨hˆˆxHˆøÈ˜H¨¨ccos."ccos_ªrval8p z1_gmv8 z2_²stsp ft¤rval4 b_¶call exp. gmv4 c_ºc0œrdv4 d_¾a_²sin. rsb4 rmp4 c1 cos. rad4 c2 rval8 retrn d0–base¨dummy_²clog.o®ËÞ¶r z‚r‚trŠr†t‚vr†rŠtr‚‚z(Hhˆh˜¨¸hØøØø˜¸h(h˜8¸ˆHHHclog."clog_zrval8p z1_gmv8 z2_‚stsp ftrrval8 call cabs. gmv4 c_Šlval b_†stst a_‚atan2. rval4 alog. retrn d0lbasexdummy_‚csin.o®ÛÞ¶À¤hª²¤¶¦¤ºœº¾¤²¦¤º¾ ¶¤²¦¤º¾ ²²ª€@A(Hhˆh¨¸ÈˆˆøÈhˆh¨(ˆˆ8HˆøÈhˆh¨hˆˆxHˆøÈ˜H¨¨csin."csin_ªrval8p z1_gmv8 z2_²stsp ft¤rval4 b_¶call exp. gmv4 c_ºc0œrdv4 d_¾a_²cos. rsb4 rmp4 c1 sin. rad4 c2 rval8 retrn d0–base¨dummy_²csqrt.o®ïÞ¶ä¼\Ä̼̾¼Ô¼Ô¾¼ԼоÌÀ¼¸ÐԼо¼ÌԼо¼ÐÌÄA(Hhˆh˜¨¸hØh˜è¸høø˜8ØX¸ØhØh˜hx¸ØhØh˜ˆx¸ˆH˜˜csqrt."csqrt_Ärval8p z1_gmv8 z2_Ìstsp ft¼rval8 call cabs. gmv4 c_Ôrval4 sqrt. lval b_Ðstst a_Ìatan2. c0¸rdv4 cos. rmp4 sin. retrn d0²baseÂdummy_Ìdccos.o®û޶Ь6h²¬ʮ¬ÒœÒڬ®¬ÚҤʬ®¬Òڤ²€@A(Hhˆh¨¸ÈˆˆøÈhˆh¨(ˆˆ8HˆøÈhˆh¨hˆˆxHˆøÈ˜H¨¨dccos."dccos_²rval16p z1_gmv16 z2_Âstsp ft¬rval8 b_Êcall dexp. gmv8 c_Òc0œrdv8 d_Úa_Âdsin. rsb8 rmp8 c1¤dcos. rad8 c2¤rval16 retrn d0–base°dummy_Âdclog.o®ß¶$t0,|ŒtŒvtœt”vŒxt”tœvtŒŒ|(Hhˆh˜¨¸hØøØø˜(¸h8h˜H¸ˆHXXdclog."dclog_|rval16p z1_gmv16 z2_Œstsp fttrval16 call dcabs. gmv8 c_œlval b_”stst a_Œdatan2. r4r8 rval8 dlog. retrn d0nbasezdummy_Œdcsin.o®ß¶Ð¬6h²¬ʮ¬ÒœÒڬ®¬Òڤʬ®¬Òڤ²€@A(Hhˆh¨¸ÈˆˆøÈhˆh¨(ˆˆ8HˆøÈhˆh¨hˆˆxHˆøÈ˜H¨¨dcsin."dcsin_²rval16p z1_gmv16 z2_Âstsp ft¬rval8 b_Êcall dexp. gmv8 c_Òc0œrdv8 d_Úa_Âdcos. rsb8 rmp8 c1¤dsin. rad8 c2¤rval16 retrn d0–base°dummy_Âdcsqrt.o®!ß¶üÂ0hÊÚÂÚÄÂêÂêÄÂêÂâÄÚÆÂºâêÂâÄÂÚêÂâÄÂâÚÊA(Hhˆh˜¨¸hØh˜è¸høø˜8HØh¸ØhØh˜xˆ¸ØhØh˜˜ˆ¸ˆH¨¨dcsqrt."dcsqrt_Êrval16p z1_gmv16 z2_Ústsp ftÂrval16 call dcabs. gmv8 c_êrval8 dsqrt. lval b_âstst a_Údatan2. r4r8 c0ºrdv8 dcos. rmp8 dsin. retrn d0´baseÈdummy_Útanh.oo®-ß¶€LØRLNLVHVZVZVZR€@(H(hxˆ¨¨Ȉ¨¨è¨¨øÈˆtanh."tanh_Rstsp ftLrval4p a_call exp. gmv4 b_Vrval4 c0Hrdv4 c_Zrsb4 rad4 retrn basePabs.oo®�ß¶x0 ð ð;õ€ñ7øèÿwäÿ889)abs."dabs."retrn temp aimag.o®™ß¶l0ðVñõ7øîÿwêÿ89)aimag."rval8p retrn temp aint.o+Vq¶l0ð;õó€@wøîÿwêÿ9aint."temp one€@retrn alog.o®­ß¶¨(H ð ðð;õw èÿ‡7øâÿwÞÿw ÚÿXX)Y9Ialog."dlog."log retrn rerr temp alog10.o®¹ß¶È2T ð ð;õw êÿ‡7ò7øàÿwÜÿw ØÿÞ?Ø[7©f(XX)Y9Idlog10."alog10."log retrn rerr temp const*amax0.o®Åß¶¼>0  ð ð€ÁÑ Yþþ@÷ðøÀ ù wøÌÿwûÆÿwÂÿ8899)amax0."max0."retrn temp amax1.o®Üß¶ÜH< ðð ðð €ÁÑ Yõõ@÷ðøÀ ù wøÂÿwû¼ÿw¸ÿHHHII9amax1."dmax1." max1."retrn temp amin0.o®öß¶¼>0  ð ð€ÁÑ Yþþ@÷ðøÀ ù wøÌÿwûÆÿwÂÿ8899)amin0."min0."retrn temp amin1.o® à¶ÜH< ðð ðð €ÁÑ Yõõ@÷ðøÀ ù wøÂÿwû¼ÿw¸ÿHHHII9amin1."dmin1." min1."retrn temp amod.o+Jq¶È8H ð ð—/;õø{õ�ù—ó€@Áòö7øÒÿwÎÿw ÊÿHHI)Yamod."dmod."retrn one€@temp rerr atan.o®-ඈ< ð ð;õw êÿ7øæÿwâÿHH)I9atan."datan."atan retrn temp atan2.o®7ම0H ð ð—/ ;õ{õw Þÿ7øÚÿwÖÿw ÒÿHHYI)9atan2."datan2."retrn rerr temp atan2 cabs.o®Mඬ*H ð ðÁõQõw æÿ‡7øàÿwÜÿw ØÿXX)Y9Icabs."dcabs."hypot retrn rerr temp cexp.o®_à¶è<`ðõw ðÿ‡7øêÿõw äÿ7òàÿ7øàÿõw Öÿ7òÒÿ7øÎÿwÊÿw Æÿ8Y9i99y99)Icexp."rval8p retrn temp rerr exp sin cos cmplx.o®kඬ0< ð ð—/ ÁÑ õYõÁøQøwÖÿw Òÿ888)Icmplx."dcmplx."retrn temp rerr conjg.o®wà¶x0ðõ7øðÿõÀñ7øìÿwäÿ899)conjg."rval8p retrn temp cos.oo®�ඈ< ð ð;õw êÿ7øæÿwâÿHH)I9cos."dcos."cos retrn temp dble.o®‘à¶„Th(h8HXdble."rval4p lval r4r8 gas8 retrn temp dim.o®¥à¶”*0ð—/ ;õ;öðñ7øàÿwÜÿw Øÿ()9dim."retrn temp rerr dimag.o®²à¶l0 ðVñõ7øîÿwêÿ89)dimag."rval16p retrn temp exp.oo®Äඨ(H ð ðð;õw èÿ‡7øâÿwÞÿw ÚÿXX)Y9Iexp."dexp."exp retrn rerr temp float.o®áà¶„Th(hH8Xfloat."rval4p lval gas4 i4r4 retrn temp iabs.o®÷à¶`$ ð ð;þ€ñ7ûîÿwêÿ()iabs."retrn temp idim.o®á¶œ.0 ð ð—/ ;þ{þöðñ7ûÜÿwØÿw Ôÿ 89)idim."retrn rerr temp idint.o®%á¶\$ ð ð;õ7ûðÿwìÿ()idint."retrn temp ierr.o›Â7¶pl(ltÀÀz7 d ‡×-^¢‡w Þÿx÷eNH ÀeíPÐ��wºÿÀz"Àe7 "Àe&&æpw”ÿwÖÿÿÿÿz)99ierror."erret#lrerr retrn zeroterrbufzcerrpxeerbuf¢onepifix.o®Uá¶�`x(xX8Hhifix."int."lval r4i4 gas4 rval4p retrn temp isign.o®gá¶œ.0 ð ð—/ ;þ€ñ{þðÀñ7ûÜÿwØÿw Ôÿ 89)isign."retrn rerr temp mod.oo+Bq¶°2< ð ð—/;þø{þ�ù—ó€@Áòö7ûØÿwÔÿw Ðÿ ()Imod."retrn temp one€@rerr real.o®‘á¶t0 ð ð;õ7øêÿwæÿ889)real."dreal."retrn temp sign.o®¦á¶´4< ð ð—/ ;õ€ñ{ñðÀñ7øÖÿwÒÿw Îÿ 889)Isign."dsign."retrn temp rerr sin.o®¹á¶ˆ< ð ð;õw êÿ7øæÿwâÿHH)I9sin."dsin."sin retrn temp sngl.o®Îá¶„Th(h8HXsngl."rval8p lval r8r4 gas4 retrn temp sqrt.o®ãᶤ&H ð ð;õw êÿ‡7øäÿwàÿw Üÿ XX)Y9Isqrt."dsqrt."sqrt retrn rerr temp ctime.oà 권,$ ‰7 öÿ7ôÿ ð ð7þêÿò€HwäÿwþÞÿô7øØÿwÔÿ())))))ctime."retrn temp setfil.oóɶÜ<TÁAw ðÿñ‹w æÿpw àÿñ•ÿÿÀ� ”Ñ¥ û!ŠwÄÿX)HiH9setfil."getbuf chkunit retrn utable temp rerr nice.ooô&é¶l$Àþ À"‰wäÿ(nice."retrn temp getarg.oT r¶,p<—/‚  ÄÁAÀÔÿH Á `A T” úÄ Ô•  Â5ú—  õw¢ÿb7 šÿ÷–ÿ–ÿw�ÿ8I)89I9)getarg."iargc."^retrn temp argp jklmnopqrstuvwxyz{|}~€�‚ƒmÿmain.o÷.,¶¬$Tw üÿNfß Ö ÷ èÿÀ ÷ àÿwÜÿ(9Yi_main"rsave _yyinit _yyparse L1 _yyaccpt rretrn parser.oHvº¶P x¢ w üÿ87 p÷ÿÿl7 j5 Äþ@ÀeÊþ5øÿ÷þÿØÿ÷ L ÎJæÊÿæ@æ€ß Æeõeøÿ@øÿÈ&÷e¦ÿÀ¢ÿÈžÿÀÀ À Àe5Æþ@ÆþõeÆþ5ÊþÀEð5Èþ@Êþtôÿ_^÷ Ú÷ Ø ÷ Vÿ7ÎÎÊæžß Ö ÷ ¼÷ :ÿ7²À¬@-ÈþõeÆþÌwÈþ–÷ÿÿ÷ÿÿŒõ Äþõ Äþ–÷ xNÈþæ²ß Ö @ÈþÀ À 5àøÿ@ÈþÀ À 7àÐþÀÌþ7ÆþNÈþß @ÈþÀ À À Àe5Æþ}/Æþøÿý ÆþõeÆþõ@Æþ7þ_( _t@Äþ^· îÎ¾ß õÄþ@øÿAÁeÌþ .‡@øÿÀ À Àe5Æþ@ÆþtôÿÀ%W/ÆþõeÆþñ÷ – @øÿþÿføÿæÌß –%õåøÿ÷åúýËÀ3@ÆþÀEð7\_(÷ RÎPæøß Ö ÷ Bæ÷ÿÿ:_b  ‚À xTŒ˜˜"  ‚À xj†šÞü€wˆýÿÿstate %d, value %d, char %d character %d read reduce %d syntax errorerror recovery pops state %d, uncovers %d error recovery discards char %d ™H) Ø)) øYØY Øøø)) (8ØøØ)Ø _yyval _yylval _yypv _yydebug#x_yyv ,_yystate#z_yychar#|_yynerrs#~_yyparse"rsave L2(L3FL4€_printf L5b_yypact _yyact L6vL8^L9šL10¼_yylex L11žL10000ÌL10001ÐL12ÜL13ÞL14úL15üL16L17²_yyr2 _yyactr _yyr1 _yypgo _yygo L18\L19rL20jL21€L1tL22†L24HL25ŒL26¾_yyerror L27˜L28˜L29žL30L31ÀL32ÞL34L33ÖL35úL36ÌL37L38"L396L40øL23\L41\L7tL42trretrn zacc.oo÷9,¶T 0w üÿwöÿ9_yyaccpt"rsave L1rretrn zerr.oo÷=¶àœ08w üÿNæœß Ö ÷ èÿÎâÿæ ß Ö Î¬ß ×-Ìÿ ÀÄÿÀ þæ¸ß Ö %À®ÿÎ¼ß ÎÀß ÎÄß ÎŠÿæÈß Ö  ÷ xÿhT ^ rwdÿ %s, line %d, on input: %s \t \n \0 %c )H HH‰‰¸H‰HHH‰H‰™_yyline _yyerror"rsave L2œ_printf L3(L4 L5¬_yychar L6NL7¸_yysterm L8˜L10„L11TL12¼L1˜L13^L14ÀL15hL16ÄL17rL18ÈL9˜sswitch rretrn zinit.o÷M,¶T 0w üÿwöÿ9_yyinit"rsave L1rretrn ´œ ð€&Ð 6ÁÁå´ÁeWtýÿÁEàæ–ÁeÅfÁ f÷ ÎÿÖ  ÿÿ&Àe7Œææ´÷ °ÿÆe ÷ ¨ÿ–%÷ À‰´f…& ÷ ŽÿÖ @‰AÁN÷eHQ}þÿ± ‰ @…&æ¦äHÅåF‚ƒ„…‡No space for monitor buffer X)X9cbufs–_monitor _sbrk _main _exit"h_etext savr5 starteprol´countbasÐmrsave"zrsave"–rretrn"¤..K.Las2Mc0Nc1c2Pcrt0.oQfilib.aRfr0.oSliba.aTlibc.aUlibf.aVliby.aWmcrt0.onhsw.ohsw.o..X...Y.Z..[.À Æd ð€&Ð 6÷ 6–% ‰JanFebMarAprMayJunJulAugSepOctNovDecw È ÷P ˜*õ ,õe@¢-#½ @’· t*ëõ õe@7Z*à· V*Ý ÷ ’ vd’p|w®ÑwR*wN*Î +æ&*ß Z Ö À Î*æ^ ß |Ö VÃÆ  ! Î +ß – 5øÿ<S�øÿ„ ò5 öÿ !/�Æ 5øÿW-øÿ0W-øÿ9W-øÿaW-øÿzW-øÿAW-øÿZõ öÿ W-øÿ õ øÿµ öÿ4ŠÆ „ Î÷ ·7ŠR÷•~TÎÐ ß Ü ÷ ÷ Dw’w €÷‹7_Ê÷ 2_ÊÎÐ ß ò ùpC7ü×­|7ÿ 7ø()_Ê×­þ}wñ)ð_ÊÃ6*× ê* †7ÿâ7öþ(&ø3ÿô3üÃeð7ñè(`7õò(wÿ¾@÷ð õÀ@7òà7ôÜ(wÿ¨@÷ð7ñÆ(wñÂ(ð÷ À7ÿŽ7øº(÷ ¤(7ÿ€7÷¤(ðÎß ˆ÷ j÷ –ÂÖ — 6*†ñ2üÂe ÷×­L~7Š< ß ˆÀ�8À%aÄå(Äå0Ä !ÄWpÁe6*C æß ®Ö wRw @ ñ5üôÿ5 øÿW-øÿÈ>Nøÿß ¤À 5AøÿWp qÿÞ uüðÿ5ÿðÿð5ÿðÿ&ø5ÿôÿô5üôÿ÷ Î'AøÿWp qÿÞ ðAøÿWp qÿÞ WùpCføAøÿWp fÎeÖ æf ÷ $Æe µ øÿ¾5ÿôÿð ÷ Ê5ÿôÿùpC&øæt ÷ üÆe w˜w †Ä6*!ê* †N&ß ®Ö Äeôwrw `õ 7õ:'5øìÿ7ÿ5øìÿý  5õìÿAqÿö5øäÿuñäÿðõÀ@7ò 5÷äÿð 5õäÿ&ø@pÿVôpü@ø@5õìÿ0üõ >÷‹ž= 8õÖ ôÿW-ôÿ6*†ý‹ôÿ5 öÿW-öÿ @ôÿ@möÿAöÿ1¢Æ µ öÿðW-öÿõe ôÿß5 öÿW-öÿ @ôÿ@möÿAöÿHœÆ µ öÿñ}ôÿw|w j÷ Z&À" 7!L&À ÀmD& × AWp Á`J¬Ö Ò‹Àƒ ì„ á w"w wñð%ðõpD7øä%7õà%wÿ´@÷ð 7õÚ&ø7õÌ%ô7øÆ%ðwèw Ö÷ ¬%]Â5ñêÿ7õ27ò¬5øòÿ�À rÁ _x7õ”&ø5õòÿô5øòÿ5õêÿ5ôòÿ7÷t%ð ‚ 5õòÿ&ø5õêÿô5øêÿØ7õX%5öêÿö4E7ùTû÷T�À rÁ · D ÀÀ , ÀÀ ì ƒ õÁÀ r CŽ ÀÀ &8 æŠ ß |–%w ÷ 'õ7 '÷ €Â Ó•0�”B~Áî&Ó•. Á Ó•0…~Á ”B~‡Â ÷Æ&õ÷¼&÷ :”Ó•.Á²&”B~Ó•e �Ó•- Ó•+ r Àe0�Áe0S�‡&æ„Äe@7r&÷e(l& @ñð&Àñþ•-Ž ó€@Añð&ø@øÃD&7óžø@ø—ôL>—ó BÀûÀe0#�‚ @ñððÑ”÷ &ü‡õ ‚  ó BAñðú‚ ÷ ÷  üw ô%†Îeó B@ûÀe0�‡ÀmÜ%÷ Ô%€`€  ‡’ÃeÈ�¢9 È•0 ƒ Š÷È•1‚ ƒ„‡Ì>ÌÌÌÌÍÌw ’€w”%DÄeÀŸŠ% · „% %ß ôwv7 p%7 f%ׯf%-· ^%· \%÷-7 T% .÷þ-ƒÁèBÞ üJdXo~fˆe6cDsl Ó•-÷ ; r f÷ ðÿ€Àe0�‡•à •)à 'ÁÐ$ Ò‹ƒ D~÷ fWtýÿÁEà÷ ðÿ€ÀEøÿÀe0�‡Âž$÷ |ý”$÷ ¸ý‚ƒà&æ Ä Ãmv$÷ t$ß Ã~Ä Ž”ß à Î ß Ã~Ö „wºþ7 H$ ÀŸ>$· :$Àå0 ‚· 0$Wp `ñÀe0[ƒf…@÷ $÷$wú#w H"-@�w <"-×-ô#w N"-@7 Ò#wÆf…wÆ#w 4"-7 ¼#w°f…w0‰’ 7‡A …‡7 ¬%f…A÷ &÷ À€U…‡f…A÷ …‡ñ @Àe7ä1@‰˜ ‡À À 1 @Þ± ‡w&f… ‰¦BR‚wf… ð=þð…‡7"%ÀÿÿF…‡Õ @…&æ¦äHÅåF‚ƒ„…‡�¦B@$ü‚‚YfA7V‰ž ‡  �…Ñÿÿ�±…fAñ &÷ €ø9�± �…&fA÷ �€…@Àe&7"w·ã@‰À ±ñ‡´E"&*.26:>B/usr/adm/wtmpNo %s %-8.8s%6.2f total%9.2f ¶D€%s %2d‰‰‰¶w w&w ²é€Àw ¨é…‰ÆÈ ð€&Ð 6÷ L–% ‰ S M Tu W Th F SJanFebMarAprMayJunJulAugSepOctNovDecw øW-Î ß H÷ ~W-S@ß L5øÿW-øÿ_@W-øÿ _@@ß L!_@!'_@@øÿÀ &þæ2 ß H–%Îæ@ ß HÖ ÎæÆ &føÿß ÖÆe × � ÎæÎeÆ ß †Ö Ãeò÷ Ð@ß L!_@!'_@ÎD ß HæH ß HÖ ÎP ß H × e — °€0ŠÆ ‚ øÀÀ  æR ß HÖ ÀÀ  æX ß HÖ ÀÀ  æ^ ß HÖ Îæææl ß HÆeÎHæÆ &æŽ ß ÖÆeÎHæÝ &æÎeß ÖÆeÎHæô &æÎeß ÖÆe — ° ÎH¦ÎeÆ ß †Ö ÂeHòÃe˜Îz ß H÷ ´Î~ ß Hww  B€”× 0× 9 Wp Á`ÁeÐÿDíwàw ÎCDÄ À À”ó• ÿÿö@€ Ä À ר ø3ŠNæŒ ß HÖ w�w ~BNß ð÷•¢÷•£NŽ ß ðÀeáÀ r@ ÷•z÷•y  Àå ƒõÀ x6"Ãõ Àœ� `ƒ ÷À rDWpB`Ã@¬� > × € AW¬�  Á@0 Ãe æ @œ� �ep�� × ÁÀ r Àe0 �‚ ÁÀ r Áe0R�‚ „ À% @@m µƒ ½wvw dDÀetþÿaÀe!Áe[ùÀ rdàÁe¿ùÀ r�`!ØÃeÁÀ r@ww €w(DÄeÀŸ ·  %ß þôwð7 7 úׯú-· ò· ð÷,z"7 è .÷x"ƒÓ Á¶BÝ üJÖdoBfLecsâl Ó•-÷ 6 r f÷ ðÿ€Àe0�‡•à •$Áf“”C~÷ fWtýÿÁEà÷ ðÿ€ÀEøÿÀe0�‡Â:÷  Â0÷ –‚Ò Â ƒó‹ÿÿà ùÎ Á ÁàŠ�`w ÷ þß þ÷ úû·òΟî· èß þø÷ à ÷ ÔÎ ß þ÷ Ìûwœþ7 ¾ ÀŸ´· °Àå0 ‚· ¦Wp `ñÀe0[ƒÄeÓ•?‡f…@‰f…@÷ |÷tw`w Œ†"@�w €†"×-Zw ’†"@7 8w<f…w,w x†"7 "w&@…&æ¦äHÅåF‚ƒ„…‡7ÀÿÿF…‡fA7‰ž ‡  �…Ñÿÿ�±…fAñ &÷ €ø9�± �…&fA÷ �€…@Àe&7àwÜ·ãÖ@‰À ±ñ‡,048<@DHLPTXusage: cal [month] year %s %l %s %l %s %s %s %s %s %s Bad argument %s ‰¶w w&w ôå€Àw êå…‰îd& ð€&Ð 6÷ –% ‰ w ®¤W-Y@žÀ%-Rõøÿ@° È‹B@ž1÷ ô÷ì@øÿõ øÿÀm€È•’?�t*÷ Ò ÷Ê@øÿõ øÿÀm\Š÷¶@žæôß "Ö ÷ ü Àå1 î‚À xÌZ~š¶õeõ W- Næß "Ö ÷ ¾ÎX@&ß 4Ö À @æß "Ö ÷ ’Î^ @&ß 4Ö À @æ"ß "Ö ÷ f@Àe¨ÿæXß Ö À @ÀeXÿæ^ ß Ö À ÷ 6Î@ÀeXÿ&æ^ ß š–%@ÀeXÿæ^ ß Ö À Î@Àe¨ÿ&æXß š–%× _@ÀeXÿ@Àe¨ÿ&ß ÌÖ _ðÎ@Àe¨ÿ&ß DÖ @Àe¨ÿæXß Ö À @ÀeXÿæ^ ß Ö À ÷ èÎ@ÀeXÿ&æ^ ß š–%@ÀeXÿæ^ ß Ö À Î@Àe¨ÿ&æXß š–%«Î@Àe¨ÿ&ß DÖ @Àe¨ÿæXß Ö À Î@ÀeXÿ&æ^ ß š–%‹Î@ÀeXÿ&ß DÖ @ÀeXÿæ^ ß Ö À Î@Àe¨ÿ&æXß š–%_  ‚À xüæl¬_ÂwÔw Âõ Nß pµ A � W¯ =Š íÀÿÿwšw ˆ@ ÷ þ ÷ ø÷ ò Àå ‚À xxPX`N@À &ìæ2ß "–%wDw 2Nfß DÖ Nfß Ö À ð÷ .÷ îww õ @õ @„ ƒ Á ¢Ì‹ õ £ÀÀwÎw ¼÷ Ø÷ ˜w¼w ª€w<DÄeÀŸ2 · , %ß ÄôwŽ7 7 ׯ-· · ÷"h 7 ü .÷f ƒÁŽBÞ üJ²dox8fBeàcîs¾l Ó•-÷ C r f÷ ðÿ€Àe0�‡•à •1à /Át Ò‹ƒ D~'Â8Â< ÷ f v÷ öÿ€€LÀe0 9Àe�‡Â2÷ zÂ(÷ p‚ƒà&æ Ä Ãm ÷ ß ÄÃ~Ä Ž”ß Äà Î ß ÄÃ~Ö „w¦þ7 Ü ÀŸÒ· ÎÀå0 ‚· ÄWp `ñÀe0[ƒÄeÓ•?‡f…À¨÷ ,ÀžP�· ”÷ Ž÷ @…‡f…÷ …‡Àr Àåv 78À`€ ‰@÷v V÷N×-H‚÷@‡f…w ‰F7‡A …‡7 f…A÷ &÷ À€U…‡f…A÷ …‡ñ @Àe7¾1@‰L ‡À À 1 @Þ± ‡w f…@‰7²ÀÿÿF…‡Õ @…&æ¦äHÅåF‚ƒ„…‡Illegal flag: %c Argc = %d Can't open %s Can't open %s %s%s üÿðÿýÿøÿ‰v ‰‰Øî$:T ð€&Ð 6÷ ^–% ‰/tmp/crt0a/tmp/crt1a/tmp/crt2a/tmp/crt3a/tmp/crt4a/usr/lib/aign/usr/lib/atabw ¸W-Îß ê÷ >@žÀ%-Nß À5öÿ@öÿÀ 5`uíöÿ÷ ¨5 øÿµ øÿ@øÿ@-e÷•_L!÷• G!÷• D!÷8!ÎÊL@øÿÀ @m&ß FÖ À @øÿÀ @mæ&ß êÖ ÷  ÷–L’L÷• !÷þ Àú AøÿÁ Amf‰ �p’&"×-à  ÀØ · Ô œ&"À%/÷Ä âÀ¾ · º ð• &"×-° ÷•ÿÿ± ÷� ÷ &Ϊ ß æ”5 öÿW-öÿ föÿß RÖ @öÿµ öÿÀ „ß æì÷ ôK÷ þõ6îÿõ@ÞÿõFàÿõJäÿ5 èÿ5 øÿW-øÿ@øÿÀ ô5âÿ5æÿ@ÀeÞÿfîÿß öÖ ÷ žKµ øÿä÷ õNîÿõ^Þÿ5 øÿ õdîÿõtÞÿõ|àÿõøÿõÿÿöÿµ öÿ@öÿÀ%µ øÿ@øÿÀ @aAöÿÁ pôÞÿ÷ 6Kéµ øÿ@øÿÀ @a0 Þÿ@ÀeÞÿfîÿß öÖ ÷ wŠw x÷ÿÿX· TæPÎeŽ!æâJ÷ ´Ö �7�@À%ÿÿ7×-2ƒÎß ˜÷µ€$ ÎÀ�&æ€ß ê–%÷ ¨÷ :À4À :"È À ÌÀtÁ�è@`À 5Žøÿ@øÿÀ ØÈ ¹¸÷-^J^J÷XJTJ­wÚw È ÷ IDJ÷¦K@J÷6ò÷:î÷ýÞ÷ Ú7 Ø÷Ô÷l"Ä÷f&À÷ý°÷ ¬7 ª÷¦ æFß ÈÖ 5òÿÎß ˜õÿÿðÿµ ðÿ@ðÿÀ%Î@ðÿt&ÎeŽfòÿß æ–%À%Îß ˜ãNòÿß æ æâß ÈÖ 5òÿÎ ß ˜Î@Àeôÿ&fòÿß æ–%À%)W-ôÿ€€%Nöÿæfòÿß æ–%@-öÿÎ ß ˜Nøÿæâfòÿß æ–%@-øÿÎ ß ˜Nòÿß æNòÿß æ÷ Tδæß Ö Î´æß Ö ÷ ìHS æ*ß üÖ 7°À°Š òÎ ß æÀÁpœ ÀôÁöpœ ÀèÁèpœ ÀÜÁÚpœ ΤæÄß üÖ 7JΤæ´ß üÖ 7:Τæ¤ß üÖ 7*Τæ”ß üÖ 7ΤæÀ:À ð`:"À.ð�öL"À#×­ê>À×­Ú À×­Ì ÷ ²ûÁÄ7t  þy ÷ âÀwÆ w ´ ×-¼÷ ®ùÀœL"N×­„* Àxœ�!À%/ÀM· œÀ˜ð�`L"ÀŽÀ ðr:"À=×­H ÷ .û×­</À0œ�!À%*'À)ÀT7¬L"×­\ · @À<ð�L"À2À ðr:"À Áà7¸  þy ÷ Àwð w Þ ×-æ÷ Øø÷ 7 · · 7 Æw w ° ×-¸÷ ªø7 ¬÷ ð ÷ ê ÷ à ÷•_v÷• q÷h7 È w~ w l Á¶ WpuÆöÿ×-fD÷ Xø÷ ž ?÷ Ø 9À(ÀeŽ!@íöÿ7"×-ÀÀ7 õÿÿøÿµ øÿ@øÿÀ-ú @øÿAöÿµ öÿp’"ð×-âÀÚ· Öð• "ÀÊ· Æð•ÿÿ"÷ 7 ÖwÒw ÀW¯c W¯hÀ W¯rÀÀwšw ˆ÷ŽwŠw x7 €w|w j÷ L÷ÿÿDwfw T@7,ìC_ @7ÜCwØC@7 ÔC@7ÈC@7¶C@7²C@@mŠuøÿuòÿõôÿ@òÿõ òÿÀ Aøÿµ øÿA’upôÿuôÿðW-ôÿ€õôÿõ ôÿAôÿ À 7rRCCôÿ ·rFCÁuôÿõ ôÿµ ôÿ@ôÿÀ Àm*CÀm,C5öÿÀ-$C$†@Àe5ðÿuøÿõ ðÿ @öÿµ öÿAøÿµ øÿ ¢ò@ŸöÿRAôÿAmôÿÀ 7rÚBuôÿÏõ C· ÌBÀÈBÀ-ÂBÎß ˜@ôÿÀ Àm¬BȦBµ ÀžB@mÀ-žBÎß ˜@õ À À|B· xBÀm~BAµ H’îÀdB· `BÀmfBH� @ðPB@ðLB w¨w –uøÿ@øÿõ øÿÀ @@møÿÈ• óAÀ r 5öÿ Nõ fföÿß �–%õ @@mC —r Ãe0È�µ @w0w õ õ µ @µ A ¢ý‹Àï wøw æ×-î ÷ àô÷ Þ 7 & ÷  7 L9÷ J9 7  ÷•_¤ ÷• Ÿ ÷– 7 .97 ® wªw ˜õ @À ÀM@mÀeþ5øÿ+uíøÿ@À øAÁ @lÀMÀeÿÿ5öÿõ  µ öÿ@öÿµ AH’ó@À ðÀMNß Ruøÿ@À øAÁ @lÀMÀeÿÿ5öÿ@AÁ 1`ÀMõ  µ öÿ@öÿµ AH’ó wæw Ô@À ð ÀM@À ÀM;@À &¸M° ¸M€À%€ ÷ ,8 Næß êÖ ÷ ð· &@@À ÀM@À &ø@À &„ß ¤–%AÁ @,ÀMÀÿÿ@À 0 ÀM wNw <€wæ?DÄeÀŸÜ? · Ö? %ß Œôw 7 Â?7 ¸?ׯ¸?-· °?· ®?÷"ÚU7 ¦? .÷ØUƒÁVBÞ üJzdÐoÊxf e¨c¶s†l Ó•-÷ C r f÷ ðÿ€Àe0�‡•à •1à /Á? Ò‹ƒ D~' ÷ f v÷ öÿ€€LÀe0 9Àe�‡ÂÜ>÷ zÂÒ>÷ p‚ƒà&æ Ä Ãm´>÷ ²>ß ŒÃ~Ä Ž”ß Œà Î ß ŒÃ~Ö „w¦þ7 †> ÀŸ|>· x>Àå0 ‚· n>Wp `ñÀe0[ƒÄeÓ•?‡f…@÷ J>÷B>w&>w ÖâU@�w ÊâU×-(>w ÜâU@7 þ=wRf…wò=w ÂâU7 è=w<f…@‰†w$ w&f…ww‰"†wwf…ww‰(wèf…‰†wÚ wÜf…wà‰.7‡A …‡7 €?f…A÷ &÷ À€U…‡f…A÷ …‡ñ @Àe7”1@‰4 ‡À À 1 @Þ± ‡wRf…wjwf‰:†w8w<f…@wNwJ‰@†wwf…Aw|wx÷5pWpÁe@W F ‡W Ž †ñVwP‰Ž‡wÖÀwÆf¦æ&Ø „ƒ‚�€f…w"‰”†wœ wžf…÷ D&‰†Ö w‚Ö }w~f…@wèw䉘†wXw\f…@‰Af… w,üÿ.Àw"(Àe w"Àew"@l€ …‡ß Ö –%Æe7Ê=ÀÿÿF…‡Õ @…&æ¦äHÅåF‚ƒ„…‡ rÁ �dA! þ‚fA7<‰ž‡  �…Ñÿÿ�±…fAñ &÷ €ø9�± �…&fA÷ �€…@Àe&7w·ãþ@‰À±ñ‡ 2  À `ºrHvž®¼@".:FR`Usage: cref [-aceilosux] file1 ... Can't open %s /bin/sortsort-a-o/usr/bin/upostupost/usr/bin/crpostcrpost-3Illegal character: %o line %d Can't create user's temp file.Error %d Can't find %s Try again Fatal error in %s t = %d Unrecognized flag: %c /usr/lib/ctab/usr/lib/cign/usr/lib/etab/usr/lib/eign/usr/lib/ctab/usr/lib/cignx€Œ�š  îhœÆî0D¾î în”ÿ "'/<\r¼¢8ôFd"'*\ŽòòÊ&:ÈMÈOÈQÈSWraparound temp file %d üÿðÿýÿøÿ‰ ‰‰‰‰‰7 ü7ü7þû7øû7òû7ìû7æû7àû7Úû7Ôû7Îû7Èû0‰ ‰‰‰¶w w&w Ìü€Àw Âü…‰crt0.odr.oacts.o put.oŽprintf.oêffltpr.o‚putchr.oŒclose.oæcreat.oüexecv.ofork.o2getc.oFopen.oÈread.oæsignal.ounlink.ojwait.o„write.o¤exit.oÆnargs.oÐretrn.orsave.o(nhsw.oHput.o\savr5$ÊU_main"n_temp$Æ_t1$z_level$|_hlevel$~_dlevel$€_xtrn$‚_tp$„_tab$Ž_coll" _save"2 _out" _asym"À _asw"`_csym"º_csw"r_incl"H_decl"v_sk2"ž_sk"®_tabs"¼_semi"@_line$Ž!_l$"_lno$"_c$"_cursl$"_curs$"_curfl$$"_curf$&"_usw$0"_xsw$2"_only$4"_cross#¼_file$6"_cs$8"_flag$:"_fl$J"_gch$L"_itab$T"_xtab$`"_ipsp$l"_issp$f&_xpsp$6_xssp$:_ib1$ I_ib2$¦K_ibuf$¬M_ibuf1$®M_ibuf2$°M_mone#À_order#¾_ssw$²M_type$´M_utmp$¶M_acts#Ø_tmp#ô_ignonl#þ_gtab#rsave"*_printf"ê_exit"Æ_flags"À_init"^_fopen"F_dexit"´_driver"®_close"æ_flsh"R_callsys"örretrn"8_getc"‚_error"˜_open"È_read"æ_compile"þ_signal"_creat"ü_unlink"j_fork"2_execv"_wait"„hsw"H_search"Ò_comp"_dfile"f_put"Ž_conf"�_bct$¸M_optr$ÀM_bsp$ÈM_obuf#ø_nflush$ÈU_write"¤ndigit$ØUpfloat"‚pscien"‚_putchar"Œ_fout$âU_flush"Ðputc"~flush"žretrn""cerror"_getw"d_errno$èW_nargs"Ðmrsave"(putw#¤fcreat"\ ¡¢£¤¥¦§¨©ª«¬­®¯°±²:€0 ð€&Ð 6÷ –% ‰w  W-ÎPß x÷ Ò@žÀ%-.@œÀ%Eõöÿ÷^@œÀeÐÿ5öÿW-öÿW-öÿ Îtß x÷ tõeõ õöÿ5 øÿµ øÿ@øÿ@- @øÿÀ @m&ß  Ö 5ôÿNöÿfôÿß ðÖ Nôÿß Šá ß ÷ w:w (8õÿÿôÿ@ÀeZÿ5ðÿ5 øÿu-øÿ_üõ ðÿµ ðÿfðÿf÷ ¸Ö �_Èóý• ðÿuŸðÿòÿ=Šðÿ@ÀeZÿ5ðÿ@øÿÀ <fðÿß ªÖ À ÷ Põ øÿ À 5�Åþ5�Äþõôÿ_ôµ ôÿ@ôÿ@að• Äþ_ôE@øÿÀ <fðÿß pÖ µ ôÿNôÿ@ÀeÄþ`fðÿß pÖ 5`ôÿõ ôÿ@ôÿ@ap�òÿÄþW-ôÿ÷ Î õ øÿµ ôÿ@ôÿ@að• Äþuøÿöÿµ öÿ@öÿ@-@öÿÀ <Šòf· XuŸðÿòÿ=Šðÿ@ÀeZÿ5ðÿ@øÿÀ <fðÿß ªÖ À _ö3@øÿÀ <fðÿß pÖ µ ôÿNôÿ@ÀeÄþ`fðÿß pÖ 5`ôÿõ ôÿ@ôÿ@að• Äþuøÿöÿµ öÿ@öÿ@-@öÿÀ <Šò6QÀåÿÿ ƒ_2À xÜ4Ä22222222:(µ øÿ_ µ ôÿfôÿ@ÀeÄþ`f÷ ÎÖ �À% @ôÿ@að‹Äþè· TW­Äþ Îæ†& ß J–%· 8µ ôÿNôÿ@ÀeÄþ&& ß J–%_ö wºw ¨õ õ @5øÿµ @µ AH’õ@@íøÿw€w nõ õ µ @µ A ¢ý‹Àï wHw 6÷ œÀä · à ’&ÎæÊ fß ¾–%7x ÷ r÷Ê ¸ À´ · ° ’÷X ÷NÎŠß x wàw Îõ @À Ê @mÀeþ5øÿ+uíøÿ@À ˜AÁ @lÊ Àeÿÿ5öÿõ  µ öÿ@öÿµ AH’ó@À ðÊ Nß uøÿ@À ˜AÁ @lÊ Àeÿÿ5öÿ@AÁ 1`Ê õ  µ öÿ@öÿµ AH’ó ww @À ð Ê @À Ê $· ¢@À Ê @À &˜@À &–ß à–%AÁ @,Ê Àÿÿ@À 0 Ê w²w  €wXDÄeÀŸN · H %ß ôw„7 47 *ׯ*-· "· ÷"Ú 7  .÷Ø ƒÁäBÞ üJd^oXxŽf˜e6cDsl Ó•-÷ C r f÷ ðÿ€Àe0�‡•à •1à /Á� Ò‹ƒ D~'šž ÷ f v÷ öÿ€€LÀe0 9Àe�‡ÂN÷ zÂD÷ p‚ƒà&æ Ä Ãm&÷ $ß Ã~Ä Ž”ß à Î ß Ã~Ö „w¦þ7 ø ÀŸî· êÀå0 ‚· àWp `ñÀe0[ƒÄeÓ•?‡f…ÀÄ÷ ,ÀºP�· °÷ ª÷ @…‡f…÷ …‡ÀŽ Àåè 7DÀ|€ ‰¢÷è r÷j×-d‚÷\‡f…@‰†wr wtf…wwü‰¨†wRwVf…@wäwà‰®†w0w4f…@wÈwĉ´†wwf…@‰7ØÀÿÿF…‡Õ @…&æ¦äHÅåF‚ƒ„…‡¼Úø 4 R p Ž ¬ Ê Usage: crpost [-d] file1 file2 ... -d: 0 < d < 10  read error Ò üÿðÿýÿøÿ‰è ‰‰‰ ‚, ð€&Ð 6÷ –% ‰w øW- @¢-õ õeW- Î ææß Ö–%÷ žÎß j7(Nß >÷ &÷"ÀŽÀ Àe5øÿNøÿß j7 W-øÿÎNøÿß j7â7îÀTÀ Îeß j7Ü5 øÿw-øÿ: @øÿÀ ÀmÆ µ øÿóÎ$æ°ææ¦ß ÞÆe÷Œ”ÀÀ ÀmŠÀe7„Nß (À Îææß Ö–%Nß wâw Ð Îß j7:5 øÿW-øÿc@øÿÀ ÁÁ Ám p’Î@øÿÀ @m&ß ¨Ö À Îæ&æß Ö–%Îß øÎäß  À%ÿÿƒ ÁÀ rÁ Îß jÀÀ Àm¸ç÷ 2 Îææ¤æ æ8ß ÆeÎ’ß ~@øÿÀ ÁÁ Ám~Bøÿ �ì’� p µ øÿ™wø w æ Î\@&ß ¨Ö ÎL@&ß ¨Ö à 5öÿ5øÿ ?2?,5 ôÿÄ7!”_”À ÀmÈ Îß äÀ% µ øÿöÀ Àmòµ øÿAøÿHoÀ Àmê"ÎÐß äÀ% µ öÿöÀÀ ÀmÀµ öÿAöÿHƒ åÎ¦ß ä5�ðÿ&æ–÷ è Ö 5�òÿ€% W­òÿ µ øÿµ öÿçW­òÿ µ ôÿÀ Àmv Î\ß ä5�òÿµ øÿìÀ ÀmNµ øÿAøÿHW­ðÿ µ ôÿÀ Àm< Î$ß ä5�ðÿµ öÿìÀÀ Àmµ öÿAöÿHƒ „ _r÷ t Îòß äÀ% µ öÿöÀÀ Àmâµ öÿAöÿHƒ èÎÆß ~ÎÀß ~@ôÿwB w 0 ÷ & Îfæ¤fæ<ß ÆeÎf æŠfæDß Æeõ $õ !@A1,õe@ÀíN€ À ÀmNõeAÁí:� Hõ õ Ùõ (õ %@À @mA Á Am "@Àíþ € Aõ @`À Àmô AÁíæ � B õ �`HÕõ _fõ _f ?À ?º @€ 5øÿÎæ¨ f fføÿfß jÆe ÎÿÿæŠ f @ À &NmÎefNíøÿ@À &NmÎeß jÆe 5 êÿ5 ìÿ5 îÿu-îÿ @îÿÀ Àm6 A AíîÿÁ Ám( @b5èÿ@-êÿuèÿêÿuîÿìÿµ îÿà@Àeòÿ@Àeöÿ&ææð fìÿfføÿfß HÆe@Àeðÿ@Àeôÿ&æÿÿæ f Níìÿ@ À &NmÎefNíøÿ@À &NmÎeß HÆeNòÿfföÿfß ÞÆeNðÿ@ À &Nm@ðÿÀ àfôÿ@À &Nm@ôÿÀ àß ÞÆew¶ w ¤ ÷ š Nfæ fæLß ÆeNf æþ fæRß Æe õ ÀÀ @m  ƒ öu òÿõôÿu-ôÿ6uòÿ AôÿupÁ AmuøÿuöÿÃõ õe @ "B @À 5`öÿ@öÿ5"øÿ!‚ D ½ ƒ áµ ôÿÆwØw Æ÷ ¼ *Nfæ: fæXß ÆeNf æ fæ`ß ÆeÎf f f æhß ÆeC à ÀÀ @m ÁÁ Am 1"þÿà ñÁupÁ AmuøÿA� upÁ AmBDÄ @À à€5"øÿÄ ô=ýw w ú@¢- À5øÿÎß ”7t  @&ß *Ö ?>  @&ß *Ö ?, õ¢öÿ? 4 @öÿÀ Àm* Á�� põ øÿcõôÿu-ôÿöÿ[u-ôÿöÿ@ôÿÀ Àmú AôÿÁ Ámð Aþÿ� "µ ôÿê@ôÿÀ ÀmÖ þÿ€ 5ðÿ@ôÿÀeÿÿ5òÿu-òÿöÿ @òÿÀ Àm® ð µ òÿñ@òÿÀ Àm˜ Àeÿÿ5îÿ@òÿÀ Àm‚ HîÿNøÿfîÿfðÿfòÿfôÿß * Æe@òÿ€ 5ôÿ¡juöÿôÿW-ôÿcW-ôÿ@ôÿÀ Àm4 AôÿÁ Ám* AÁeÿÿ" @ôÿÀ Àm È õ ôÿâ@ôÿÀ Àm Àeÿÿ5ðÿ@ôÿ€ 5òÿW-òÿ @òÿÀ ÀmØð þÿõ òÿñ@òÿÀ ÀmÂþÿ€ 5îÿ@òÿÀ Àm®HîÿNøÿfðÿfîÿfôÿfòÿß * Æe@òÿÀeÿÿ5ôÿ™÷ Bwöw äu-u- jNfß  Ö u-Îa u- ÎdÎcß $õ N fß  Ö Î ß $õ Îpæòffæîß d Æeu-_Ð u- _Ð Îtß – õ _â Îz_æ Î~æ¦f fæ¢ß d Æeõ u- Î€ß – ww öu-Næ„ß – Ö u-Næˆß – Ö u-NæŒß – Ö w¼w ªuøÿu-øÿH @øÿÀ @m&þÿf ß ²–%@øÿÀ @m@øÿÀ @mìþÿf Îef ß H–%N ß – 5 öÿ@øÿÀ @mAøÿÁ Am@ìþÿ@-öÿ @ @möÿœß $µ öÿäµ øÿ´ww Næ�ß – Ö õøÿu-øÿ Aøÿup N@@í€ `æ”ß – Ö µ øÿéÎ˜ß – õøÿu-øÿ Aøÿup Á AmNæšß – Ö µ øÿìÎžß – wŠw x€wDÄeÀŸþ · ø %ß $ôw\7 ä7 ÚׯÚ-· Ò· Ð÷¨7 È .÷þ¦ƒÁ BÞ üJ" dr o˜ f¢ eP c^ s. l Ó•-÷ ; r f÷ ðÿ€Àe0�‡•à •)à 'ÁD Ò‹ƒ D~÷ fWtýÿÁEà÷ ðÿ€ÀEøÿÀe0�‡Â÷ zÂ÷ p‚ƒà&æ Ä Ãmê÷ èß $Ã~Ä Ž”ß $à Î ß $Ã~Ö „wºþ7 ¼ ÀŸ²· ®Àå0 ‚· ¤Wp `ñÀe0[ƒÄeÓ•?‡f…@÷ €÷xwhw p°@�w d°×-^w v°@7 @w¢f…w4w \°7 *wŒf…@‰†wt wvf…@)‰†w^wbf…w^‰7‡A …‡7 ìf…A÷ &÷ À€U…‡f…A÷ …‡ñ @Àe71@‰ ‡À À 1 @Þ± ‡wØf…wèw䉆w¾wÂf…@wÌwȉ †wœw f…÷¸´wm®‰&†w~À¢wmœwxf…wŒ‰&†w\w~ wXf…@wnwj‰,†w2 w4f…@wPwL‰2†wwf…@‰7°ÀÿÿF…‡Õ @…&æ¦äHÅåF‚ƒ„…‡fA7‰8‡ �…Éÿÿ�±…fAñ @Àe7ü1@‰^‡À �±…À 1 @Þ± �…fA7Љd‡  �…Ñÿÿ�±…fAñ &÷ €ø9�± �…&fA÷ �€…@Àe&7œw˜·ã’@‰†±ñ‡arg count jackpot can't open input xxpart apart binn ainn bstrip astrip bstrip x* --- . . %d%d,%d%s %7o %7o ·fÆå6 6 w ˜þ&‡ÀEÿ vðÿ6v6`v v`v öe—-äöåà —-ÿÿ€–%…‡Àÿÿú‰‰‰‰‰¸‰‰‰www þ†…&w úýÀ€U…‰‰¶w w&w 8þ€Àw .þ…‰¹º»¼½¾¿ÀÁˆBn"0‰À÷ z·úÆöÂð 7 x ÷ ÂÀ¥ À¥  Š/�ô ŠÃÂð÷  À¥ À¥ �öŠ„ ·˜°— 𠃦˜ö�¤— ðô‚“&Šö�’‹Óe  Úæ× ü‚& ÄÒ!â‚ÀeÂðR¤öÉ‹üÊ‹òÀåÀeø7 Ú7 ÔxÀ‰öžäæèêìîòônpedmfinqc? Ü^ ²BèòüƒÛ‰Œð †‰Œ¶7Œ‰Œ7„÷¥zaÀ‰—wÊþ·ŠMã€÷ èp‡�÷ > Âð÷ 8‡�ûÒ• ÷ d÷ " Âð÷  ‡�— ðù‡À"‰ðñÂåð·À ‰ð÷ è Àü‰Àø‰ ‰ŒwLþÀ艉Nf‰0‰À�qÀΉðÀ Àeð7üÂð€”÷ Ì · îú‡ìÀ¦‰ ‰Œ÷ €wôý÷ xÖ Ã wäýwâþwÜý‚À÷ š Ê‹€”÷ „ ú@Áæ÷ nÀ÷ | @ÁÔ÷ \ À‰€  û‡ ‰„~‰„Œ/bin/ed/tmp/ftmpaCannot open temp. file ƒ÷ÜÁt÷ Ôf÷ Èw<ý÷ þ2‡÷ j†Nñ÷ ê €÷ F†÷ ž�÷ ÷ ° �÷ ª ÷ ´÷ ‚ ÷ xwìü÷ pâÖ Ã ßwÜüÁþ±ÆÖ wÌüƒw|ýÃå<€÷ ˜=‡Ö ñ倦f÷ ‚‡¦÷ B ÷ L€±÷ v�÷ . ±�÷ " À÷ 8 ‚€”÷ " û@Á„÷ F÷ ÜwPüà ÃåöÖ wøüw<ü�÷ ,Ö ìÂðÒ• ÷ ìƒ÷¦÷ žwü€÷ 6"‡�Á(÷ ñå÷ z÷ î‡÷ Ò• ÷ ¤÷ dÁúñåê÷ PÕÖ Ã ÒÂðÒ• ÷ zw°ûƒw`ü€÷ Ì/‡�÷ "ÂðÒ• ÷ ‡�— ðù‡÷ Dö÷ Ò•:— ð‡÷ .Ò• ÷ æwZû— ð‡÷ ÷ ؇�ñ÷ ÷ ÆÊÖ Ã ÇÂðÒ• ÷ ðw&û÷ H÷ z ÷ >÷ p ‰ƒ�W¢p÷UŠW¢f÷U|à ï7 ¦ ÂÌ — ìü‡Â\—,÷ Ć· î Áè÷ H ƒ ÷ |c‡ ú· h Âe— 45ä‡ÁÄ÷ $÷ \)‡ð ÷ ~ö‡Àå8w °À‰š×-úéÃ5÷ (÷  ÷ Vñe÷ ô ÷ þ ÔÀú w –À‰³ÂÌ× 솀w vÀ‰ÂÀw fÀ‰²à êÀ‰²wîù€Àå8w À‰€÷ `”�×-X÷ PÂð÷ J‡�— @ù‡÷ vöÒ• ÷ lB×-*wìþ÷ > wäþ header not accounted for part of asmem released free headers free blocks size Âåð ƒ·À‰ðÂð‡&Á@÷  ÷ ؇÷ ”‚÷ � ‡Ê‹ ùÁñeìÊ‹øBÁ ÷ ¦Ö ‡€±‡&Áö÷ T÷ P÷ ˆD‡÷ D‚—¢* 7 Ž ÷0‚ Ê‹.·| ÷ &'‡Ê‹÷%Âf —¢?‚ ÷ á÷üÝ · J Ø÷%ê÷ <  ÏÁxñeÂÊ‹øBÁf÷ Ö ‡÷ÿÿº€±‡ ‰ì ‡÷ ¤wøÀ À�î ‡wîüÂðÉ‹R”üÂåð·À‰ðÀ‰ˆ‡Âð÷ b÷ `‡�— ð†ø‡¦÷ ÞÿÒ• ÷ |þ÷ †ÿÀ¥ ÁÎñe‚±‡ y  q÷ ï÷ ZÿÀ¥ øé÷ æ÷ HÿÀ¥ ïÁ�‚¡‡÷ æÙ÷ .ÿÀ¥ â‚wN÷· ÐæÁhCñåB¦ñ÷ ð ‡C±÷ Bò±±ƒ‡¦€€ìÂå8÷ ´À 7Ð : € Àe8ùÀº ° Ì‚‡‚±‡f rfÎe0À w èÿ·•� À‰ì�…f r fÎe0À w èÿ·•f À‰ì�…÷  À ‡q,†ñ ÷ Ô‡ ±‡&Àå8÷ À÷ ú€‡÷ ´‡7�X± ÷ ¦‡7�K± ÀBÀe8‡&Àå8÷ "À÷ €‡q,†ñ ÷ n7�q, †ñ ÷ Z7�ÀüÀe8‡ ±‡· Ø&f¦æìCCìƒ ƒ€÷ j€÷ º÷ @€q— oƒ÷ ¦÷ Ø&·À’‰—  ƒÃ÷÷6Î`Âà··(ƒ Àd‰ ‡ ÀVwÉ`‰‰‡Â ÑÖ €ìBl±ƒ‚�€‡À‰ error on copy f1°N1°N1°N1°‡&0æÀC�÷ þ‡Á÷ Bø€·¦°Á¯q‡qq‡&qŠq,†÷ ùq€‡f&· H€@l1 ‚11 ‡1€÷ Ü€÷ Dþ÷ (ÿ÷ ®�ä€�‡&· q€‡¦f7· ìq,‡@€ @ì÷ Ž€÷ øý÷ Üþ÷ b�@÷ Ć÷ È�ÌòÀ± q,ƒq�‚‡¦· Šq,ƒ@÷ ‚†÷ ¾· h÷ ìò\ ‚’À ‡‚ ±‡¦f7d· Hq,‡@€ @ì÷ ê€÷ Tý÷ 8þ÷ ¾�@÷ †÷ \È�(òÀ± · ô÷ xòè �‚‡f¦æ × †Â ò  ÁWv ÁEÿÁe÷ žƒ 탂�‡æ¦ ×   òÿÿ2 ô2 ü2 ƒ ð7 €‚ƒ‡æf&ƒƒ ÁWv ÁEÿÁeò ÷ @€ÀEÿ7 2ôÀb‰w‰²ôüòeü2 €€ìô@`�ƒ‡· .&·ôÀ&‰w‰2 €‡fæ  2 ô‡2 ü†€ìôÁWv ÁEÿ@`Àeƒ�¡‡ƒ × æƒ�±‡&æÃ Ä! ò,  †Â„ Ãeôƒ÷ ÿÃe$‹ ƒ„‡fæÁ÷hr Á ƒ�‡ Ã× óò,  ‡ÂÃeõ7 î&¦æ· 2· , €‡À �÷ Ѐ À &Àe "‡€ð ::Áe8p:@11Ö ƒ‚€‡÷ þ Ð  †ð :õ÷ ŠÀ ÜÀ‰bw÷Out of space. ÃÄ ë:Áe8p:ñÃe8âBl÷ž s±³3 BÂå8°8ª&÷ F· V 1:1 Áå8p: €‡f¦æ&7 H · 0 Á:`CKÃe8Ë GÄÄåä„xÄeÄ,ÂÃà 2Ãe8õ÷ òBÂe8ı´,‚¦„Êæ 2 òòÂå8·Î 4lä4 4<Äå80<·AÁe8³Ð  ¬‡À– ÷ ,À‰ªOut of headers. · „ƒ‚�‡æÀ  À ‡Î ü€‡ @€ @€W \†W 85‡W,†W,˜ƒ@@ì&÷ ”ÿÀ ,äÀe "‡Àå:Àe8 ø€‡· ¾ &À¾ ‰‰8€‡7 ° &¦‰Â†‰Â¶ ‡· ˜ 7Ž ‰Â‡7€ À‰ª÷ v ‰8÷Œ d ÷e8^ UÂ\€Àå87R Àe Âe— 05ø‡2 øÿÀ:  Zü‡Â. Âe8·& 2 òò˜À€÷  þÀ  ‡Âå8°:Á8AÁ Áe8ññññÀÐ ‰8÷ þúÀ÷ büw¼ wÞ ÷å8Ø ‚€‡ not in memory. Cannot open file cannot open output file form.mÄÅÆÇÈÉÊËÌÍ,è° ð€&Ð 6÷ –% ‰w ôÎxß twTwP÷F@7ÖÎ,@&ß , Ö À · ¾· @7®7 ª@À @m W-Î.ß BÎ ß ª÷ J5øÿÎBß BÎ ß ªõ-ÌÎNß BÎ ß ªNøÿæxæfæBß ^ Æew<w *÷ @5øÿÎd÷ Z&ß , Ö À ÷ ÷ Öÿføÿæ4ß –%÷ \@øÿwòw à÷ @5øÿÎh÷ &ß , Ö À ÷ Ä÷ Öÿføÿæðß –%÷ @øÿw¨w –÷ –Înß BÎ ß ª· €Îˆ÷ ´&ß , Ö À  ÷ &æxß –%÷ ¼÷ wRw @ ÷ |5ôÿΊfôÿß , Ö À ÷ &÷ îþ5øÿ÷ V5ôÿÎŒfôÿß , Ö À _ê@øÿ_÷ 05òÿuŸòÿðÿW¯òÿ+À 5`òÿÎŽfôÿß , Ö À  fòÿæ¤ß –%_Δfôÿß , Ö À @�ðÿfòÿ÷ Ö û5öÿ&æàß –%_Μfôÿß , Ö À @�ðÿfòÿ÷ ÐÖ û5öÿ&æß –%_Τfôÿß , Ö À "Nòÿß Z 5öÿÀ%ÿÿ Nòÿæªß BÖ Î ß ª@�ðÿföÿæHß –%__êÎÂfôÿß , Ö À ÷ < & æÂß –%__êÎÊfôÿß , Ö À @�ðÿfòÿ÷ Ö û5öÿ&æpß –%_ÎÒfôÿß , Ö À @�ðÿfòÿ÷ ÞÖ û5öÿ&æºß –%_ÎØfôÿß , Ö À @�ðÿfòÿ÷ ¦Ö û5öÿ&æ’ß –%_Îàfôÿß , Ö À &ý‹òÿW¯òÿ-@öÿt5öÿ@Ÿòÿ@möÿÀeÐÿ5öÿµ òÿè@�ðÿföÿÎEøæöß –%UGÎæfôÿß , Ö À À Àeÿÿ5öÿÎì÷ Î&ß , Ö À õ föÿæ>ß –%1#Îîfôÿß , Ö À ÀÂÀeÿÿ5öÿÎò÷ †&ß , Ö À õ föÿæVß –% Nòÿfôÿæôß B–%Î ß ªww Á`WpqÁRWpqÁDWpqÁ6· 2WpÁe@wÌw º÷-"" À· À Àmw¤w ’wò÷ �Îèæß BÖ  @aÈ‹@a’À%/@a€ 7¶„ ìf@È Ö ÷ D Ä Î ß BÎß Bw,w @&@È Ö À @&@È Ö À À wè w Ö @&@È Ö À @&@È Ö À À w¤ w ’ @&@È Ö À  Àwx w f @æ¾ß h Ö wZ w H Ϊæß BÖ Àw< w * @@&Á~Áí¤WpWtþÿfß À–%w w ö @@&ÁJÁílWpWtþÿfß À–%wÔ w  @@&À�'&ß À–%w¬ w š @Á� , ÀwŠ w x @@&À�Ü&ß À–%wb w P À�ÇtÀ¾t÷ÿÀEþP@@&&ß À–%w& w  @,-@Àÿ5øÿÀhAøÿA @@A@, ÀwÞ w Ì @ß  wÆ w ´ 5 öÿÎ@À Àm&æß B–%÷ È 5�øÿÀ%yõöÿW­øÿ ÷ ¬ 5�øÿ÷õ öÿ@ß   w\ w J W­+ u- ÀW­- AWpÿÿA- À u- Àw w ô r 5öÿ5øÿ@µ À ÀmL5Šÿ+Î*fŠÿß , Ö À _� Î,fŠÿß , Ö À _| @öÿµ öÿÀ @aðŽÿ_Ž @öÿµ öÿÀ @apŠÿŽÿË@öÿÀ @a0 Žÿõ öÿÀ W÷ 0 À @Àeøÿß ŠDNöÿ@ÀeŽÿ&fŽÿß Ä–%5 ôÿõ0Œÿ@Žÿ@môÿ’5òÿ @ôÿµ ôÿ@mŒÿp�òÿ î@Œÿ@môÿ0Š Nöÿ@ÀeŽÿ&fŒÿÎeß Ä–%Nöÿ@ÀeŽÿ&fŒÿß Ä–%Î ß ªõ øÿ Àw w ° õÿÿøÿ æXß ðÖ 7�0÷ Ð5�àÿKW­àÿ F@Àeäÿ5âÿ÷ ´=�âÿÀ%:@âÿµ âÿÈ‹5ò=ŠâÿN@Àeäÿ&ß , Ö À &÷ ~5�àÿÀ%:õ‹àÿõ@Àeäÿ5âÿ÷ ^=�âÿÀ%:µ âÿö=Šâÿ@Àeäÿß Œû5øÿ°Î¦ß ®7Š„@øÿwðw ÞDC £Ô‹ ƒ ø £ÀÀÿÿw¾w ¬ŠÎ‚fß TÖ À Nædß BÖ _d Àø ÀEÿŸÀ%@W­fW­bff ý –%À_d W­dW­bff ý –%õª òÿ5 öÿu-öÿòÿ_^ @òÿ@íöÿÀ%À@òÿ@íöÿ5ôÿ fß ðÖ 5øÿ Nævß BÖ _d õ öÿ föÿføÿß 0–%Nôÿ@Àeòý&føÿß –%À Næˆß BÖ _d Nøÿß ® @ôÿtüÿ!`t@að òýWt@aœôýÀ%.Nt@a,òýÿÿH À@aAÁ`p’rýƒ öÀ@aœqýÀ%/Àƒ @að•/rý Àƒ @aWt�`Aapœôýrý— ‚ ïÀ@a0ŠrýN f@�&@Àerý&ß ^ ÆeÀ Næšß BÖ „ šõeöÿ_è Àw´w ¢W¯.W¯. Nfß – Ö w†w tCŸõÿöÿ@Ÿ5øÿb µ @’7& µ Nµ fß – Ö X V@œÀ  ÀC-öÿ ÁA @@PÁ 7Ž þy5öÿÀ ‚ à /à µ Nµ fß – Ö ! µ Nfß ’Ö À ÀÁ¬78 þyC-øÿÓ wŠw xý‹Àý‹Nfµ ß – Ö À Àî wL ÷Ö õ7 Î ÷ €Â Ó•0�”B~Á¸ Ó•. Á Ó•0…~Á ”B~‡Â ÷� õ÷ˆ ÷ :”Ó•.Á| ”B~Ó•e �Ó•- Ó•+ r Àe0�Áe0S�‡æÁÀ @ñð'Àñþ•-Ž ó€@Añð&ø@øÃè7ó¦ø@ø—ôL>—ó BÀûÀe0#�‚ @ñððÁÀÑ”× èü‡õ ‚  ó BAñðú‚ ÷ ÷  üW è†Îeó B@ûÀe0�‡ÀÀÀm² ÷ ¬ €`€  À‡’ÃeÈ�¢9 È•0 Àƒ ŠöÈ•1‚ ÀÀƒ‡Ì>ÌÌÌÌÍÌw È€wf DÄeÀŸ\ · V  %ß Úôw¬7 B 7 8 ׯ8 -· 0 · . ÷"²7 &  .÷°ƒÁ®BÞ üJÒd(o"xXfbecsÞl Ó•-÷ C r f÷ ðÿ€Àe0�‡•à •1à /Áž  Ò‹ƒ D~'ÂèÂì ÷ f v÷ öÿ€€LÀe0 9Àe�‡Â\ ÷ pýÂR ÷ ¬ý‚ƒà&æ Ä Ãm4 ÷ 2 ß ÚÃ~Ä Ž”ß Úà Î ß ÚÃ~Ö „w¦þ7   ÀŸü · ø Àå0 ‚· î Wp `ñÀe0[ƒf…ÀÜ ÷ ,ÀÒ P�· È ÷  ÷ @…‡f…÷ …‡À¦ ÀåÀ7ÒÀ” € ‰ð÷ÀŠ ÷‚ ×-| ‚÷t ‡f…÷ V÷¬PÀH‰¬ ‡À À 78 Àß4· 0…‡7@ 7 …‡f…w* w ’¤7 wbÀŸ ·  …f…@‰†w@ wBf…w*w&‰öw"f…‰†w wf…ww‰ü†wôwøf…@wèw䉆wÒwÖf…@wÌwȉ†w° w²f…w²w®‰†w� w’f… ‰¦BR‚w|f…÷ "&‰†Ö w`Ö }w\f…@‰Af… w,üÿ.Àw"(Àe w"Àew"@l€ …‡ß Ö –%Æe7À ÀÿÿF…‡Õ @…&æ¦äHÅåF‚ƒ„…‡¦ðWð€føf¦& ñ }  -Ž } Àå0 ‚÷ „ö‚ ô þÿ } Àå0 ‚÷ f õ 5ww lÀå0B`Wõ€@¦ — &ƒñÖ �õÿ Wò Bƒ~Ö ùòð„õÿÖ ÀñÀe0‚�VõVðÕ …÷€\ðò B@þô‡Îe‡ } &  -Ž } Àå0 ‚Wp `õÀe0Ö  Õ …+Insufficient args Odd usage Missing conjunction -or-andoperand follows operand. !()-name-mtime-atime-userCannot find user <%s> -print-group-size-links-perm-exec;-ok;Error <%s / %s> %s. %s !%s! for <%s>? ;{}/usr/bin/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/etc/passwd--bad status %s --cannot open %s --cannot read %s --%s -]â  *?[dP0° „üÿðÿýÿøÿ‰À ‰‰‰‰‰ÏÐÑÒÓÔÕÖרÙÚæ D 0‰j÷ÿÿz‚Ö Âåæf·®‰`††‰`¶ †÷¥z0·Š*ñÀ‰H‰cannot open output file formaletter7Žÿ7 Œÿ÷ hÃÎÀ ÷ ® S À ÷   S„•ö÷ ˆ û ‰vùÿr£ÂÀåµ€äþ€h&Á‚€”÷ \ ûÀ• ÷ R �� r NÁèÀ Àe0÷ 6 €Àe0÷ , wç08AGMQV[blt}JanuaryFebruaryMarchAprilMayJuneJulyAugustSeptemberOctoberNovemberDecemberÀ ÷ ( wÞ÷ wØ÷  wÈÀ ÷ wÆÃœÀ•{÷ ðÀ”÷ èûÀ•}÷ Þ7 ˜÷ ¢÷œw÷ 6À• w †w ¤Á€÷   ÷ ºÁp÷ ” Áj÷ Œ ÷ ¼÷ ÷ 2 ‰&f�÷ VV‡ \ [ { ]V }Q  ÷ A‡À• ÷ �÷ HÝw Ú÷ òf÷ 8‡ 0  9÷ ð ]  } ±€÷ NN6º÷ ºÁ¼€÷ ä�±÷ ²± ÷ ¦÷ � Á–÷ Їœ· ‚�€‡f÷ rÁt÷  ÷ r÷lwâ· TÀ ÷ š@ÁN÷ z�÷ îþ÷ F÷@w¶¦@Á.÷ XÁ$÷ `†&Án÷ p‡7 �÷ , Á÷ <†7 î�÷ øÖ ‚‡Áà÷ @‡ç�÷ àÀ[w ’÷ Öû†À]w „À ÷ B€÷ ®7 ¨Á¢÷ öÁö÷ t ÷ è�÷ –Å÷ �÷Šwf· nÀå0À Î €NÁf÷ �Á\÷ ˜†7 J�÷ T÷ òý&ÁD÷ ~†7 *7 ,€‡&À[w 䀀 Àe0w ØÀ]w ÐÀ ÷ L€pÎ÷ Ç&À•:w ²À• w ªw ¶  ÷ ø÷ w ¢  ÷ ÷ B÷ 6‡ñå‡÷ Ú€÷ Ô‡&f÷ ¢�÷ š�÷ Ð"‡&÷ Š�÷ †‡��÷ z‡ ôÖ �ñeâÖ �q,ô�÷ ŽÖ ‡�€±‡78À‰ì… ‰ì‡À À�…w :÷ Á ÷ Hÿ÷ w€f¦ÁBBb2�‰ W"‚�…‚�f&Á@w  w‰€�…ÂÎ�÷ Öû— âø‡Áš÷ ¤÷ ܇÷ ¸Á†÷÷ ®‡· †÷ Àÿ÷ v$Áp÷ t÷ ¬‡÷ ˆÁ\÷ÁV÷ z÷ PÁJ÷ l÷ : ÷ –ÿ÷ :Á4÷ T÷ Ì÷ þ‰÷  À ‡q,†ñ ÷ Ô‡ ±‡&ÀåJ÷ À÷ ú€‡÷ ´‡7� ± ÷ ¦‡7�ÿ± ÀöÀeJ‡&ÀåJ÷ "À÷ €‡q,†ñ ÷ n7�Éq, †ñ ÷ Z7�´À°ÀeJ‡ ±‡· Œ&f¦æìCCìƒ ƒ€÷ j€÷ º÷ @€q— oƒ÷ ¦÷ Ø&·ÀF‰—  ƒÃ÷÷6Î`Âà··(ƒ À‰& ‡ À wÉ`‰‰&‡Â ÑÖ €ìBl±ƒ‚�€‡À‰~error on copy f1°N1°N1°N1°‡&0ætC�÷ þ‡Á÷ Bø€·Z°Á¯q‡qq‡&qŠq,†÷ ùq€‡f&· ü€@l1 ‚11 ‡1€÷ Ü€÷ Dþ÷ (ÿ÷ ®�ä€�‡&· ¸q€‡¦f7¼·  q,‡@€ @ì÷ Ž€÷ øý÷ Üþ÷ b�@÷ Ć÷ È�€òÀv± q,ƒq�‚‡¦· >q,ƒ@÷ ‚†÷ ¾· ÷ ìò‚’À ‡‚ ±‡¦f7· ü q,‡@€ @ì÷ ê€÷ Tý÷ 8þ÷ ¾�@÷ †÷ \È�Ü òÀÒ ± · ¨ ÷ xòœ �‚‡f¦æ × †Â ò  ÁWv ÁEÿÁe&÷ žƒ 탂�‡æ¦ ×   òÿÿ2 2 2 ƒ ð7 4 ‚ƒ‡æf&ƒƒ ÁWv ÁEÿÁe&ò ÷ @€ÀEÿ7 2À ‰w‰²òe2 €€ì@`�ƒ‡· â &·ÀÚ ‰w‰2 €‡fæ  2 ‡2 †€ìÁWv ÁEÿ@`Àe&ƒ�¡‡ƒ × æƒ�±‡&æÃ Ä! ò,†Â„ Ãeôƒ÷ ÿÃe6‹ ƒ„‡fæÁ÷ rÁ ƒ�‡ Ã× óò,‡ÂÃeõ7 î&¦æ· æ · à  €‡À �÷ Ѐ À &Àe "‡€ð LLÁeJpL@11Ö ƒ‚€‡÷ ² Ð  †ð Lõ÷ ŠÀ ÜÀ‰À w°ùOut of space. Ãx ëLÁeJpLñÃeJ@Bl÷R s±³3 BÂåJ°Jª&÷ F· 1L1 ÁåJpL €‡f¦æ&7 ü · ä ÁL`CKÃeJË GÄÄåB„xÄeÄ,ÂÃà 2ÃeJõ÷¶ òBÂeJı´,‚¦„Êš 2 òòÂåJ·‚ 4lB4 4NÄåJ0N·AÁeJ³Ð  ¬‡ÀJ ÷ ,À‰Out of headers. · „ƒ‚�‡æÀ  À ‡Î ü€‡ @€ @€W n†W J0‡W,†W,˜ƒ@@ì&÷ ”ÿÀ ,BÀe "‡ÀåLÀeJ ø€‡· r &Àr ‰‰J€‡7 d &¦‰þ†‰þ¶ ‡· L 7B ‰þ‡74 À‰æ÷ * ‰J÷@  ÷eJ UÂn€ÀåJ7 Àe Âe— B0ø‡2 øÿÀL  lü‡ÂâÂeJ·Ú2 òò˜À€÷  þÀ  ‡ÂåJ°LÁJAÁ ÁeJññññÀ„‰J÷ þúÀ÷ büwpw’÷åJŒ‚€‡cannot open output file form.mÜÝÞßàáâã伎 0‰À50‰z·4·2÷ °÷ ¬W£-W­v· ôW­c· íW­b· æW­n· ô· îÝ÷ ‚÷ö ÷ Ø ÷ · Ô÷à 7 Þ 7 Ü 7 Ú ÷ ÷ ÷ "À¸Á¶÷ :÷ w ¬d ‰Á^Â] Ã ÄœÅšÄ Àމd Q‡· zMÅd ñ@•ï �B ê‡Á èwf7`÷eTw NŠw Ê÷ 8Î÷ 0Ê÷ , ÷ ”À*Á(÷ ¬À w þd ÷  ÷ t Á÷ ŽÀ w àd Á^@”w Òd ú÷ @w æd �w Þd ÷ Æ÷  ‰fÀʉ÷ 2w‰¼ †À÷ RÀÂ÷ J‰7¢÷ ’7 ’7 �…‡÷ xÅt÷en‡ÀÒ÷ ‰Ã^A•2W ^w ÖèÅ W£*(A•W \W .%W *VW $#W [,w ¦Sêw œä× ^ƒÀÞ÷ º‰‡w „A•SØÀü÷ ¢‰w nÏÍ‹w bÓ$Çw VzÃÀ–Àe 7‰w >(A•W ^ÿ:¸A•Á Ö÷ îÁmh ÐA•W ]õÓZ÷ÊÿTŸÁ�Œš÷†S…Ä^Ã^[Õ …æ&[ –%ø„ƒÔ‹öô •S ð[ Á&¥þ6Ô‹æ[&Ô‹þ-L•Ý÷ lÁd °Ø[d•Ô÷ ZÁd °Ï[L&æ•÷ D�c °ùÖ d&æ•÷ ,�c °ùÖ Ì‹´[Ä æ&[ Æeª„ƒ!ô‚Ö ¥ÀfÎEøÿtWtýÿÁEàÿ‡À w ‚d ‡÷ �Áö @”w jd úÀ:w ^d ‡r f ÷ ðÿ€Àe0w @d ‡fw”À‰÷�‡fA7ü‰‡  �…Ñÿÿ�±…fAñ &÷ €ø9�± �…&fA÷ �€…@Àe&7ÈwÄ·ã¾@‰>±ñ‡&@w¨Õ‹þ@á@ 7žÀ‰D… ÅE€…‰: cannot open arg count regular expression too long regular expression syntax j ‰¶w w&w ÿ€Àw ÿ…‰‰þ* ÷ ž7�j‰lv&‡—%Ö €¢n ÷5P‰l€‡‰l’‡÷56÷•yÀ‰X‰was n À‰j‰? /dev/tty0€ ÷x€æ ‰!‡ÎN‰þ‡@‰‡ À$ô$ttñ¤yî¬ê7’:@‰Ö À�0‡/devRð) ð€&Ð 6÷ –% ‰w  W-Î ß ú÷ Žõ õeõR öÿõ!ôÿ5 øÿW-øÿ @ôÿµ ôÿAøÿAœ H�µ øÿð5 øÿu-øÿ@öÿõeöÿHôÿ@õe5òÿ@ôÿµ ôÿAòÿµ òÿA’H�@�óµ øÿÞ= öÿÎß "ÎR æ#!ß ¦Ö ÎR æ!ß ¦Ö ÎR æ!ß ¦Ö Î#!æ ß úÖ wLw :€w*GDÄeÀŸ G · G %ß Èôw7 G7 üFׯüF-· ôF· òF÷,.H7 êF .÷,HƒÓ ÁhBÝ üJˆdÎoôfþe¶cÀs”l Ó•-÷ 6 r f÷ ðÿ€Àe0�‡•à •$ÁhF“”C~÷ fWtýÿÁEà÷ ðÿ€ÀEøÿÀe0�‡Âã…‰€ ð) ð€&Ð 6÷ –% ‰w Œ W-Î ß ÷ °õ õeõ  öÿõh!ôÿ5 øÿW-øÿ @ôÿµ ôÿAøÿAœ H�µ øÿð5 øÿu-øÿ@öÿõeöÿHôÿ@õe5òÿ@ôÿµ ôÿAòÿµ òÿA’H�@�óµ øÿÞ= öÿÎæß DÖ Îæß DÖ Îæß DÖ Î  æq!ß ÈÖ Î  æl!ß ÈÖ Î  æh!ß ÈÖ Îq!æ ß Ö w˜w †€wVGDÄeÀŸLG · FG %ß êôwj7 2G7 (Gׯ(G-· G· G÷,|H7 G .÷zHƒÓ ÁŠBÝ üJªdðof eØcâs¶l Ó•-÷ 6 r f÷ ðÿ€Àe0�‡•à •$Á”F“”C~÷ fWtýÿÁEà÷ ðÿ€ÀEøÿÀe0�‡ÂhF÷  Â^F÷ –‚Ò Â ƒó‹ÿÿà ùÎ Á8FÁàŠ�`w8F÷ ,Fß ê÷ (Fû· FΟF· Fß êø÷ F ÷ FÎ ß ê÷ úEûwœþ7 ìE ÀŸâE· ÞEÀå0 ‚· ÔEWp `ñÀe0[ƒÄeÓ•?‡f…wTwP‰$ wäf…@‰f…@÷ ’E÷ŠEwvEw îˆH@�w âˆH×-pEw ôˆH@7 NEwžf…wBEw ÚˆH7 8Ewˆf…Aw$w ÷5WpÁe$ W * ‡W r †ñþwø‰r ‡wDÀw4f¦æ&Ø „ƒ‚�€@…&æ¦äHÅåF‚ƒ„…‡7ÆFÀÿÿF…‡fA7 ‰x ‡  �…Ñÿÿ�±…fAñ &÷ €ø9�± �…&fA÷ �€…@Àe&7lwh·ãb@‰š ±ñ‡arg count /usr/bin/%s not found ‰7bã7\ã7Vã7Pã7Jã7Dã7>ã78ã72ã7,ã7&ã7 ã0‰‰¶w w&w hã€Àw ^ã…‰ž¸—%w ìUsage: passwd uid password ‰Ö ·’€È‹÷ ä0Š7~Àw Ô®†w ¦cannot open password file ‰‰Ê†‰’†w ttemp file busy -- try again ‰7Á÷ B : ù÷ 4 ûñÑ‹ø÷ ô :ûÁè@”÷ ÚûÀ:÷ Ð ÷  :Wp Àå0`õ‰À  w èpermission denied · š÷ Äýw жÀ~‰Àp‰÷ ~6÷ z3· tÀw Ä®†w –cannot reopen temp file Àw ö¶†w jcannot reopen password file ÷ @ý ‰‰w ඇw x®‡‡w (format error on password file Ÿw H®‡w  ¶‡÷ ¾ w ìuid not valid ‰fA7‰&‡ �…Éÿÿ�±…fAñ @Àe7þ1@‰L‡À �±…À 1 @Þ± �…fA7Ò‰R‡  �…Ñÿÿ�±…fAñ &÷ €ø9�± �…&fA÷ �€…@Àe&7žwš·ã”@‰t±ñ‡&@w~Õ‹þ@á@ 7tÀ‰z… ÅE€…f¦æ&fÀÆ Ð•Е  †P”ûÀ ÁÆ œÿÿC”Âx�� F ø‡ÄÆ ÅÆæ ä �rB`ÂE Œ\€× ª†�\„× ®ð‡ÎåÔ Õ !Æ å‡Ö ÀÆ Âf Ãf ”ÁE€ÿÁ RÆSÆ  F õ‡ÄF Ãæ ÂÀf  �0…Š f ú‡& s>Åe0W!9ƒÅeW!ZƒÅe„T‘!N ᇅ„ƒ‚�ÀF ‡/etc/passwd/tmp/ptmp‰www þ†…&w øýÀ€U…‰‰¶w w&w 6þ€Àw ,þ…‰‰ @€ @€  àÁðW ƒ ÁEA&w”ÊÀ‰à÷‰6AYpŠ�±ÅNo error. Floating op code error Floating divide check Integer conversion error Floating overflow Floating underflow Floating undefined Floating maintennace trap `ð€1 ð€&Ð 6÷ –% ‰w Îß 2 7”@õeõ`øÿW-.@žÀ%-½ @’À%l· >@@žÀ%a÷ &@@žÀ%v· @uøÿõ õeÎ føÿß d Ö 5öÿ Nøÿæfß * Ö ÷ âÎæ0@föÿß h–%×-^? ×-V? Nøÿævß * Ö ÷ ®÷D?ª?À8?Àm6?7œ?×-8?÷ �? æŠ?Îeföÿß Š–% æ†ß d Ö 5ôÿÎŽß * ÷ ^Î0@fôÿß F Ö ÎæX@fôÿß h–%ÎæV@fôÿß h–%Îæ¦@fôÿß h–%À²>€ Á?� Wp@à7Æ>Á?WpNæ€;fôÿß h–%À¢>€ ÀE€7˜>À’>€ ÀE€7ˆ>÷PÂ>7 Š>÷ Ä>6Î æ0@föÿß h–%ÀD>À] >À%""À8>€ ÀE€7.>À†>ð&>7 8>×-4> Àp>Àm(>Á$>Hœ0@· >ñ÷eX>· >÷å X>Ç÷ > Nøÿæšß * Ö ÷ <À0>ðÿ÷e$>õ€;èÿÁ*>WpÁe€;A-èÿ)†÷P>÷->>†@èÿÀeúÿÁð=AÁ  Àâ=AèÿpÀÔ=Aèÿp÷eÂ=ÞõeèÿÎζææz=æPß ‚ ÆeÀ^=Àí\=þwþ^=Wôù7øp=÷ÿÿ@=ÎæZ@fôÿß h–%À%_6÷ (=_.7þ=7ø$=÷ =õ€H&ø7õ=ô7ø=7õ =&ø7õ =ô7ø=7õú<7÷=ð7õî<7øú<7þÚÁž<Îß  Îß  Îß  õÆ&øõÆ&ø÷ ‚ÆeõF&øõÆ&ø÷ nÆeÎß  õÆ&ø&ñ÷ VÆeõF&ø&ñ÷ FÆe7 j;×-f; #Îß  õFwþR;WòEö&øõÆ&ø÷ ÆeõFwþ4;WòEö&ø&ñ÷ úÆe· ;Ù7ñH;õF7øH;õ€FÁ;ÁeÿÿAþù7ø$; ÁH;� Wpffôÿß Š–%ÎæZ@fôÿß h–%À%Q7þÎ:7øÔ:÷ Æ:õ€H&ø7õÄ:ô7ø¾:Îß  7õÚ:&ø7õÌ:&ø÷ jÆe7õž:ÀñòúE7ù¤:7ø°:7õ´:&ø7õ¦:&ø÷ DÆeÎß  7õ˜:&ø7õŠ:&ø÷ (Æe7õt:&ø7õ~:ö7øx:7õt:&ø7õf:&ø÷ Æe£õ€FÁ$:Áí":Aþù7ø>:õHC7ø>:÷PH:÷-D:D:‡_žÀ8:7,ö9_”À(:7,ä9_”À:0ÿ 7ùè97øÜ9õFÁ:AÁíÀ9AþwòÞ9ö7øè9Îß  7õÜ9&ø&ñ÷ pÆe7õÌ9&øõHC&ø÷ \ÆeÎß  7õ°9&ø7õ¢9öHC&ø÷ <Æe7õ˜9&ø7õŠ9&ø÷ (ÆeÎ ß  7õ|9ôpC&ø7õj9ô B&ø÷ ÆeÎß  Îß  7 9×-9ÀL9Àm9’À%_À<9Àmø8’ß  · ì8é ß  õúD&ø7õ 9ô7ø97õ9÷úEðõHC7øð8÷eú8_L÷ üÎÚß * ÷ î8 ÎÒææ¦8æPß ‚ Æe÷PÆ8ÀÄ8ÀeîÿÀ-º8K†À´80ÿ 7ù„87øx8õÈC7òp8&øæš8æú÷ (Æe Ί8Îeß P5øêÿuñêÿð"Àr8Àj8&ß ¸Ö æß * Ö ÀP80ÿ uõêÿwòÂù&øæ ÷ ÎÆe Îß * ÷e$8®÷ (wÆw ´u-@@w¨w –u-@@wŠw x@A@ìwnw \@0ÿ Aqÿ ö5üöÿ5ÿöÿðÀ 5ÿöÿðÀÿÿ w.w NÎEÿß Â ww 5õ&ø÷ Æe5õ &ø÷ Æewòw à5õ7÷Àð7õÀ5ø5õ÷ÆðõÆ5ø5õû5øÿ@�øÿß  @�ùÿß  w¢w �÷ H÷ w� ÷ø6õ7 î6÷ €Â Ó•0�”B~ÁÚ6Ó•. Á Ó•0…~Á ”B~‡Â ÷²6õ÷¨6÷ :”Ó•.Áž6”B~Ó•e �Ó•- Ó•+ r Àe0�Áe0S�‡&æ„Äe@7^6÷e(X6 @ñð&Àñþ•-Ž ó€@Añð&ø@øÃ067óžø@ø—ôL>—ó BÀûÀe0#�‚ @ñððÑ”÷ 6ü‡õ ‚  ó BAñðú‚ ÷ ÷  üw à5†Îeó B@ûÀe0�‡ÀmÈ5÷ À5€`€  ‡’ÃeÈ�¢9 È•0 ƒ Š÷È•1‚ ƒ„‡Ì>ÌÌÌÌÍÌw €w€5DÄeÀŸv5 · p5 %ß Â ôwè7 \57 R5ׯR5-· J5· H5÷"´@7 @5 .÷²@ƒÁ– BÞ üJº d o x@ fJ eè cö sÆ l Ó•-÷ C r f÷ ðÿ€Àe0�‡•à •1à /Á¸4 Ò‹ƒ D~'Â,Â0 ÷ f v÷ öÿ€€LÀe0 9Àe�‡Âv4÷ hýÂl4÷ ¤ý‚ƒà&æ Ä ÃmN4÷ L4ß Â Ã~Ä Ž”ß Â à Î ß Â Ã~Ö „w¦þ7 4 ÀŸ4· 4Àå0 ‚· 4Wp `ñÀe0[ƒf…Àö3÷ ,Àì3P�· â3÷ Ü3÷ @…‡f…÷ …‡ÀÀ3 ÀåÂ@7.À®3€ ‰4÷Â@¤3÷œ3×-–3‚÷Ž3‡f…@)‰†wàwäf…@wè‰:†wÄ wÆf…wÒwΉ>†w¤w¨w ¬w 3w3AupNNmfß ° Ö w�w ~ Âð2@@í5ôÿ€ _�Á fAôÿÀ rBpuôÿ@@môÿ5øÿ5öÿD@€à5!øÿ†føÿ&ÿ ˜2–%5òÿ µàøÿ@øÿ&ß Ö êõ òÿ„`åõ öÿ3ƒæföÿÿ b2–%5òÿ ε`öÿ@öÿ&ß Ö êõ òÿ5!øÿε`öÿ@öÿ&&ß :–%µ`øÿ@øÿÔÎ&ß Ö ƒà„`±ƒàÊ5!øÿ$@øÿ@íAAíöÿ ‡NföÿŽ`ß ° Ö uøÿ Nøÿfß ° Ö @öÿ€`5_º µàøÿ@øÿ&æß :–%µàöÿ@öÿ_w*w õŠ1øÿDC“Ô’“�õ øÿúww ôõf1öÿDCB5“øÿ”’Ò’S�øÿõ öÿ÷wØf…@wÐw̉D†wœw f…@w´w°‰J†wz w|f…@‰f…&æ¦ÄÂBCB€  ‚ Ô•-÷ ŠÀÂB‚ƒ„…‡÷ Áe0f—v÷ ìÿ”•‡ À —vA W ‡Áå ƒ ~‡7¨2ÀÿÿF…‡Õ @…&æ¦äHÅåF‚ƒ„…‡f… ð=þð…‡a.outCan't find %s Bad format: %s mon.outNo mon.out No symbols: %s No time accumulated /dev/vt0Cannot open vt name %%time #call ms/call %8.8s%6.1f%6s %7.2f u>�Â(\Ãõ ÿEàÿEàüÿðÿýÿøÿ‰Â@‰‰‰‰ôõö÷øùúûü¢J—!Ä%‚w ð‰ ÷ 0‰h0‰h÷  ‰ ‡7 ‰‡Àô‰F"4 ·°÷ ¬wÖ „¥+w ö ­ÿÿ-£s· , £h7 Vw ÎÚ÷ já÷ †÷`÷\·T÷ ® 0�ˆ"€  €ú÷ ^ ÷ €w<‰1Ð#†‰1†·Ša×­]zòƒw„7Ô‰F €‰17ƇABwÑ‹þ�àwÀ‰…Too many files. 7 Ü÷ ð7 ì7�Ò÷ ² ô÷ |÷ NïÀ ÷ 7�‰'Ð#÷œ÷ ÷E‰'‡‰'‡7¢÷ÿ?žw 7 x…7 r÷ j÷ |ø‡÷ ¢9÷ ˆ÷ †÷ ~7 v ÷ tÀ‡÷ hÀ_‡÷ B 0 9 A  Z a z ÷ 6‡÷*7øÉ· $· ‡Àè7 â‡÷ ØÀ ‡÷ Š \÷ €w VR ÷ nw Dh ·  7 Šf÷ hw`€�‡durxylt a@n#\\7894312fA@¤ Ñ‹üW hW xÀ�…@”�…÷ 0÷ *ÀX‡f÷ ÷ Ž 0÷ úÁ6w 4Àª÷ P7 à‰=‡À öÁ@`7@”w �À· ÌÈ‹ÊЭÀû7˜¾÷í¶¸ÁÀ Ç�‡ÀP‰÷ ˆ÷¦ ÷ ¸ ÷´÷e¬‰‡7 ‡÷ º÷ t÷ 0‰À÷ ¬ý ‰1‰‡÷-`š 7 ”ÀE€ÿœˆ" · z‡ 7 n7 ")÷ d&÷ ÷ ’Á-T÷ W ÷ ÷ <wà6&À ÷ @€à&À ÷ 2€÷ ÷  !&w bþj€%&À÷ ÷ ¦€ ÷ ÷ v w`�?�¼· ¸×-´€‡ ÁeÁ-tûÁínÁ‡9873412À‚Àå7À‰÷j‡÷ \ý&÷ VýÀ€SÁäNÎE€ Ná €÷ °ü×-~Ì ÿøt÷en·ì^W$ÿÿåÖ ‡ad bp$ br( cc. ceF ds^ fij int ixŒ liœ llº lsÊ na ne nf pa$ blF plp sk€ sp� ss¢ taÔ tiî tr® ul un he> hx( foL ehZ ohb efj ofr m1z m2Š m3š m4ª hc¾ hyî n1ú n2 nn* ni: joJ arV ro\ nxb po„ de˜ igä tcÖ mkî ÿÿÿÿ÷ ú· Ї‡÷ î‡÷ Ê÷ Âû 7�¸7 ‡÷ Ðw ÷ 7Ð÷ þ‡÷ ¸÷v‡÷ ¬· „‡÷ ¢w î* ÷ ð7¤7¢‡w Ú* ÷ Ü7�‡w Ê&Î ÷ Âú7 0÷ ÷Ö ‡w ¬ì÷ ®7$‡÷ L÷ *÷ "û ÷ü‡7üw ‚ÞÀ ÷ ~€ 7ä7â‡÷ 7 ì‡w \÷ ^÷ B‡÷ ü7 Ô‡÷ ò÷ ¬÷ Ì÷ ¬w 0â÷ 27ž‡÷ Ðw ÷ &÷ Î À ÷ ö÷ °÷Ö ‡w öò7x÷ Ú ‡w æ÷ è7€‡÷ †w Òw d X‡÷ t÷2‡÷ J÷ Bú ÷ 6ú À 1�ˆ"ð‡Áw Ž÷ �À �÷Ї÷ (w t* ÷ v7,‡w d÷ f7‡w TÀí ÷ P7‡÷ Ä7 ¾· ¸÷  ‡w œ €"÷88‡w Ž „"÷..‡w € €"‡w x ‚"‡w p „"‡w h †"‡w ìä÷ î7\w Üæ÷ Þ7Nw Ìè÷ Î7@w ¼ê÷ ¾72÷ œ‡÷ :÷ 2ù À•€7&‡÷ "÷ ù À 7‡w x7‡÷ ÷÷ ÷ü7 w RÀ 7è‡7 ä‡w <÷ >7â‡w , ÷ .7؇w 7ˆ‡7 ‡· ¼‡÷ –w ¦· J÷ ²ù· h7 F÷ľ‡÷ ’w ÞÜ÷ à7F‡÷ &"÷ Zw Ô¦7 Áä& NÎE€Î-è÷U€àÉtáØW$ÿÿî· æÑ ÷ ÈÖ ‡· Ø÷ ¼‡÷ (À÷ „ù‡÷ ø÷÷ búÀ% ÷ æ÷ú7̇÷ èT?ŠÂ· ÈÀ²À w ÐX÷ ºG÷-ÄÄ÷ ’÷ ¸À”w ®J÷5†w º€"w ²‚"Àvw ŽJ÷ ”ãÀ\÷ v÷ rÀ ÷ j÷ :ÂÐ#€”À% ÷ ,÷ ^÷÷ Îø÷ Rñ÷ �7 R7 F÷dd÷ ^‡÷ ÀüÀmú 7 ò7 ðÀð×-î€ ÷ ‡÷ $÷ ÀÀm÷ è‡ ×-ðd€ ×-æ € Àmò÷ ÈÀÔw Ü~À÷ ¶· ‡À ÷ ,ø· ¬‡À¦7 ¢÷ âÿ‡÷ Žþfæ & & ÷ |ö +  - Àå0 ‚Ž ×p `î6ëÀe07:€ÃÀ@�W -ÀàW +À`Àƒ�…÷ )÷ &À ÀíÀíúÀíüw J÷5âw „"w †"×-ø÷ìÀÈw ÜJ7 Ö· ²÷-®¤÷ >øw(÷÷ ^ ÷-˜Ò‡÷ (ø ‰¤‡×-†Ä% †?�~· z÷ Bw`”wàb· ЇÂ#7 z7 ¤7 h7 l÷#F& ÷ âô 97 R· PõÀ% ÷ �ï&À ÷ „÷ ÷ z7 €÷ p²Óÿÿ ÷ œô7 · ÷ Žô΀À% À% ê—¬ÿÿ.· ÔöeŠÖ ÷#À÷ ä÷ ‡÷Ð#¶÷¸¤÷íòž7 È7 �7 އ÷ dw`®· Ø�‡÷p~ÀÀmœ7 š÷ hþ‡À  ‡f¦AÂ÷ pô ! ~7LŠ‚�…� ùîA÷ Àó7 .æ÷ >ô Î7  . —#Ž Á Ž  ÷ Ö÷ *—#àÖ ÷ Äw<‡×-8Ä÷å.÷*ª‡7^wÀ–‰ÀŒ‰|"� ÷-‚þ ÷ÿÿö ‡Áv÷n,÷ 2À‹÷ ¦ÿ‡· ^‡’— A ‡— Zƒ— a‡— z‚´‡¤‡fÁE?w ÷-æ¢ w ÷Ú– ÀÔ‰ÿÿÀʉF €ÀEÀÿœF �‡7 F7 ^7 ,÷ P0÷  -÷ ó7ü À% ÷ (û÷ óÀ% ô· ,ø ÷ û7 Ô ÷ Dü ÷ ÷ ^ý÷ ä÷÷ tô÷ ô 7 î ‡÷ Üú÷ >ò ÷ fw`¸ ÷ ýô÷ Î ÷ È Àv € € 7`¾ ÷ š ÷e² 7 V 7 T ÷ˆ À ÷ Ìü÷ †ú÷ Ž €7 ˆ ‡¦æ  ÷ H À^ À à €r÷ · ƒ‚÷ Lú‡À € ÷ , —¤ ú ÷5 · æ ÷-â  € ÷ Ö �€ ÷ ô€’‡÷ Ú ÄÊ 7aÒ ÷ ô • ÷  ÷ „wàÎ õÄ ÷-Æ ž ×-˜ À” Àm´ 7 ² À† À Àm¤ 7 ¢ ÷ z7 Š æ¾ • -“÷ êýÌÕ€À €ÀE€ÿÃå× #‡Â’ÂE€ÿ÷ Æý×-2 & ÷ ¨û€· < ÷ ôwà> ÷ –û÷ d Ò÷ · : Ö ¤‡Ã ÷  ÷ & )Î-> (À˜÷ ü ÷  ÷ Ô ׬ÿÿ-Ë•-÷  · ì ÷ ä Ë‹Ý÷ ˆwàÚ w`¨ · ø Ä w`Ä Ñ· Î 7˜ ÌÅ€ÿ!#Ö ´‡À– 7 ¢ ‡Àí€ Àí~ Àí€ 7� Àl Àmj Àmp 7 € À7V 7T 7R 7P ÷BR Û÷-\ \ ÷V R ‡7 D À    Áÿÿ‡À% Á‡ ‡÷ øÁX ]÷ ”ï ÷ ˆï   ÷ üõ ÷ üw* ÷Ô Ô …÷ Ð Õ …& B÷Ž L w v²&w n²&w f²&ÀŽ ÷ ¨÷ ¶ ÀÀmÀ 6Bw B~À~ €m€í€ €í &÷ rw ~À\ €å€å€å€å€e÷ Zw ~÷  ø…& f�‚ ÷ Ðû�À‹ %ý N`ñÀ  ÷ F ÷ D ÷$@ ÷ jN`á÷ .N`Ý€Õ …w ~‡&Î À ý ùV%…÷ Õ …¦æ÷ ƒ‚‡f —r æ€÷ Þÿv€Àe0ý �e‡¦æ÷ ƒ‚‡ ‡f—r 怷 ¬ · ª ÷ Ôÿv÷ œ ÷ š  ƒ—r× ÀŸ† ý N` · x ÀŸt ÷ p ÀŸl ý �e‡Â ÀŸ\ ý N`à ÀŸL ý N`ø�‡÷ #÷  · Àè7 ü÷ 2€ û÷ ^ú€ ÷ VúüÀ 7Ú€ È‹÷ ùw ”w €‡’— — .— ,— ( — )— "— '— `‡— a†Âe ‡— a— e — i— o— u— y‡&˜÷ Ôÿ÷ Æùù€¤…€´…À@÷ °ùS÷ ²ÿÀ ø7,˜÷ œùH÷ œÿù7 7Üÿÿ÷ €ù’Áaw l‚œþÿ÷…÷ bù÷á œÿÿ’w H…”’w >3’œw 2�÷ ¸ƒ÷²7°7 °̇÷¬¨÷-ž²®‡ÿÕ€–· š¨…&ÂE€ÿÁE€ÿ÷ ôþÂåa— ‚„B÷ âþÂåa— ‚æƒ×p  ¡ B Ä`De“ „ „ „ „ ÄEðÿÖp Õ „…À0÷  øC÷ –þÂåa ¦F"ÎEÀ8À�÷ jC’1ÃEðÿÎ`C`˜Á ÂE€ÿ¦˜÷ ^þ– êôÀäÖ C’ÃEðÿC`ѵ€À Á ã‹û€7Æ÷ Âñµ@ÿÿów VþÈÕ€íáµ ºÖ …&÷Ú& �÷ (øÂ2 �ÃEðÿà � ÷ ø�ùÁ2 €‡0 "!S3"#`€°p`Ð�p @€Ð P` �p"! #!4!@`�`€€P�p`Ð#s5$#D"1f1@` @P` 0P` €@``` €`p�` €`p�0 #!Q "b"1P```PPðp@ P@0`` @ !¢`@ P€Ð àA! "Q�p@`p�``@ÀF! g 3!BpÀ ` `Phk22¦jWfƒÈ†@P`@P0@ 00� @P€@`0#b&`2gˆY&F¦I00 @0 @ @@@ @`6%e`8ÿXC  @€`PP P 00p P P p P`P` )Vh`0ˆfu¤P p`0```0@`P000 `@``8U)rPEVD$*``00 0`p€` 5"0€ˆ’f„�  P€€ f"G>B"f‚()ÿ/ /öÿ/ÿ/ ÿ@ÿ/òN@/ÿ/_óÿò¸?OU3uá&'=ÿ ÿ„ //à`òÌOÂ@//ï?@öÌ/âæ0ªe:oÿu36t(óòOŸÿ€ìUH¯À/÷,ïoŽÌL�ë+/?‹??ÏÿLÿê?>?‹??oÿ,ÿêO=U˜5Ž/63'åV /ÿ)ðPñ».®/0>È.È_|»-ݶm?o/ð/3"?† /?ð@õÿò~(wf"J?H2¬ö*ÿs0 Pÿ0 ¯šoñ U®àÿÿÿÿÿÿÿÿÿÿÿ¿«Í¯Žÿ†fÆùVš/ @ðpð o~%hlr"¦ˆgjC˜†@ `@P0@ `Ð0� @P¡@`0r&b‡ˆY*F¨H0"p Š@` `P P @@``&@`6%�XfXC@  €€``P P"`q"cr Q"0`€S�!Q"0P`€Sp!)Vha0ˆf6u§P p`@`€aR pc"b'cP `0a@ `@``HU)rPUWDD*` p`0  Ë™`.`p€` 5"0 †™f”� `�€a'AAB.€   (08@H/usr/lib/suftabixcmvld/dev/tty0/tmp/rtmaÿÿÄ€ ‰Ä%ÀvÀEÿŸ À�q  À�b7 . †œ�‡À�R7 †œ‘‡À•x‡801234567abcd þÿ     @î:Z ð€&Ð 6÷ –% ‰w j ÷ êW-R@¢-Kõeõ õøÿ@@møÿÈ‹=@@møÿ’.·  !1· †!.· ‚!+· ~!(· z!%· v!"· r!· n!· n!· `!@@møÿ’ÀeÐÿ7V · L! · H!·ä y4µ øÿ½Îß ¬7HyW-Îx ß Â õ  õe@ß Âô÷ ø ÷ _>÷ è ÷ ˜ ÷ Ø _5 øÿW-øÿè_AøÿWpñ‹"i5 öÿW-öÿ AøÿWpAmöÿW¬"? µ öÿïAøÿWpW, "N×-†ÿÿΊ ß Þ 7vAøÿWpÃj×psl " "AøÿWpqÿ"føÁNWp±ÿ"–ô±ü"�øAøÿWpqÿ"føÁ,Wp±ÿ"–ô±ü"�øAøÿWpqÿ"føÁ Wp±ÿ"–ô±ü"�øAøÿWp1Š"µ øÿ‡ 5ôÿ5øÿW-øÿèSAøÿWpñ‹"I5 öÿW-öÿAôÿWpAmöÿCøÿ×pCmöÿñœ""µ öÿêAôÿWpCøÿ×pñ " "AøÿWpqÿ"Côÿ×psü"AøÿWpqÿ"Côÿ×psü"AøÿWpqÿ"Côÿ×psü"µ ôÿµ øÿ©÷ *BÎæß æÖ Î¶æ” ß ŽÖ 5øÿΦ ß D ÷ dAôÿWpNæ"føÿß H–%Nøÿß x÷ ÖtζæÌtß ŽÖ 5øÿβ ß D Nøÿß x æß æÖ ÷ ”ή÷ –ÎÎ|æfôÿæ"ß ÞÆeÎÆ æÂ ß D Ö 7ÿ^t&ø7ÿTt&ø7ÿJt&ø7ÿRt&ø÷ ŒÆe 5 øÿu-øÿôÿ:AøÿWpñ‹"0AøÿWpqþ "uüðÿAøÿWpNÎe"æÈ ß D Ö AøÿWpqÿ"føAøÿWpqÿ"føAøÿWpqÿ"fø5ÿðÿ&ø÷ Æe µ øÿÂ÷ â wPw >5õ&øæÐ ÷ îÆe ÷ ’5õwÿšs@÷ðÎÚ æÖ ß D Ö õÈC5òwÿxsù&øæÜ ÷ ®Æe 7ÿVs&ø5õ &ø5õ&ø÷ ’Æe÷ 67ÿ:s&ø5õ&ø5õ&ø÷ rÆe7ÿ$s&ø5õ&ø5õ&ø÷ XÆe7ÿswÿsô&ø5õ5ô&ø5õ&ø÷ 2Æe÷ â5õ uõuôù&øæä ÷ Æe Î ß ÜwP w > ÷ ¦5õ uõWòpCù&øæê ÷ ÞÆe 5õ ùaF&øæð ÷ ÆÆe ÷ j5õ 5÷ðÎú æö ß D Ö õÈC5ò 5ù&øæü ÷ ŠÆe wÐ w ¾ ÷ 4 ÷ .rÎ!ß D ÷ Š ÷ wr fß ÀÖ 5øÿ Næ!ß D Ö _ªÎ@ÀeÜÿ&føÿß Ä–%À%_¢@ÀeÜÿAÁeäÿ †“ÀEÿà × × €Ì•?„ ê÷ – @ÀeÜÿ@�éÿ&æ*!ß D –%Æõ€@&ø7ÿtqô7ünq@ÀeÜÿß Þ 5öÿAöÿWp± "5þêÿ5üðÿ5ÿðÿðõ€H&ø5ÿðÿô5üðÿõpC&ø5ÿðÿò5üðÿ5ÿðÿ&øAöÿWp±ÿ"–ô±ü"�ø5ÿðÿ&ø7ÿðpô7üêp5þìÿ5üðÿ5ÿðÿðõ€H&ø5ÿðÿô5üðÿ5ÿðÿ&øAöÿWp±ÿ"–ô±ü"�ø5ÿðÿ&ø7ÿªpô7ü¤p5þîÿ5üðÿ5ÿðÿðõ€H&ø5ÿðÿô5üðÿ5ÿðÿ&øAöÿWp±ÿ"–ô±ü"�ø5ÿðÿ&ø7ÿdpô7ü^p_Nøÿß xwä w Ò @A1,Nfß |Ö ÷  @A@ì @A@ìw� w ~ Nß âAqþù5üöÿNß âAqþù5üòÿ5ÿöÿuÿòÿ@÷ð ÷ ²ÀÿÿÀ5ÿöÿuÿòÿ@÷ð ÷ ’ÀÀÿÿ w w  Nß â5üöÿNß â5üòÿ5ÿöÿuÿòÿ@÷ð ÷ LÀÿÿÀ5ÿöÿuÿòÿ@÷ð ÷ ,ÀÀÿÿ w° w ž ý‹ñ @0ÿAqÿôwˆ w v  æ4!ß ÀÖ 5Þÿ_Ú Î@Àeäÿ&fÞÿß Ä–%À%H@Àeäÿß Þ 5âÿ5þìÿ&ø7ÿ¦nô7ü nAâÿWpqìÿ "5ÿîÿ&ø7ÿznô7ütnAâÿWpuÿîÿqü"5ÿòÿ&ø7ÿ^nô7üXnAâÿWpuÿòÿqü"5ÿöÿ&ø7ÿBnô7ü—ó BÀûÀe0#�‚ @ñððÑ”÷ Rmü‡õ ‚  ó BAñðú‚ ÷ ÷  üw *m†Îeó B@ûÀe0�‡Àmm÷ m€`€  ‡’ÃeÈ�¢9 È•0 ƒ Š÷È•1‚ ƒ„‡Ì>ÌÌÌÌÍÌw <€wÊlDÄeÀŸÀl · ºl %ß Üôw 7 ¦l7 œlׯœl-· ”l· ’l÷"z7 Šl .÷zƒÁ° BÞ üJÔ d*o$xZfdecsà l Ó•-÷ C r f÷ ðÿ€Àe0�‡•à •1à /Ál Ò‹ƒ D~'ÂX!Â\! ÷ f v÷ öÿ€€LÀe0 9Àe�‡ÂÀk÷ hý¶k÷ ¤ý‚ƒà&æ Ä Ãm˜k÷ –kß ÜÃ~Ä Ž”ß Üà Î ß ÜÃ~Ö „w¦þ7 jk ÀŸ`k· \kÀå0 ‚· RkWp `ñÀe0[ƒf…@÷ 8k÷0kwkw à z@�w Ô z×-kw æ z@7 ôjw\f…wèjw Ì z7 ÞjwFf…÷ Êh÷ xÄhÀ¼h‰ x ‡À À 7¬h Àߨh· ¤h…‡7¸l 7 ”h…‡f…@‰†wì wîf…wÊwƉ`!†wÌwÐf…@)‰†w¸w¼f…wžwš‰f!†wšwžw ¢w "jwjAupNNmfß Ö w†w t Âøi@@í5ôÿ€ _n�Á fAôÿÀ rBpuôÿ@@môÿ5øÿ5öÿD@€à5!øÿ†føÿ&ÿ  i–%5òÿ µàøÿ@øÿ&ß rÖ êõ òÿ„`åõ öÿ3ƒæföÿÿ ji–%5òÿ ε`öÿ@öÿ&ß rÖ êõ òÿ5!øÿε`öÿ@öÿ&&ß ––%µ`øÿ@øÿÔÎ&ß rÖ ƒà„`±ƒàÊ5!øÿ$@øÿ@íAAíöÿ ‡NföÿŽ`ß Ö uøÿ Nøÿfß Ö @öÿ€`5_µàøÿ@øÿ&æß ––%µàöÿ@öÿ_\w w õ’høÿDC“Ô’“�õ øÿúwüw êõnhöÿDCB5“øÿ”’Ò’S�øÿõ öÿ÷wÎf…@wœw˜‰l!†w’w–f…AwÊwÆ÷5¾WpÁel!W r! ‡W º! †ñ¤wž‰º!‡wRÀwBf¦æ&Ø „ƒ‚�€f…@wlwh‰À!†wwf…@‰7®iÀÿÿF…‡Õ @…&æ¦äHÅåF‚ƒ„…‡ rÁ �dA! þ‚fA7 ‰Æ!‡  �…Ñÿÿ�±…fAñ &÷ €ø9�± �…&fA÷ �€…@Àe&7ÖwÒ·ãÌ@‰è!±ñ‡ÿÿ  $ . : D     Ƙ˜vŽÆ˜˜pˆÆ˜˜|²Æ˜˜^d¬Æ˜˜j‚/usr/adm/sh_acct***other/usr/adm/sht_acctCan't save Can't truncate %8s%-8.8s%6.0f%7s%6.2f%%%6.1f%9.2f%9.2f%7s%6.2f%%Only 1 file with -s Can't open %s %3d %.8s /usr/adm/sht_acct**junk**%.8s--üÿðÿýÿøÿ‰‰‰7¼ð7¶ð7°ð7ªð7¤ð7žð7˜ð7’ð7Œð7†ð7€ð7zð0‰‰‰¶w w&w þð€Àw ôð…‰€D ð€&Ð 6÷ –% ‰w �5 öÿW-Î ß Œ÷ @5ôÿ@ôÿµ ôÿ’5øÿW-øÿ0W-øÿ9Î ß Œ÷ ÎAöÿWp AmøÿÁeÐÿuöÿßNöÿß œw,w €w²DÄeÀŸ¨ · ¢ %ß Bôwþ7 Ž7 „ׯ„-· |· z÷,H 7 r .÷F ƒÓ ÁúBÝ üJd`o†f�eHcRs&l Ó•-÷ 6 r f÷ ðÿ€Àe0�‡•à •$Áð“”C~÷ fWtýÿÁEà÷ ðÿ€ÀEøÿÀe0�‡ÂÄ÷  Âº÷ –‚Ò Â ƒó‹ÿÿà ùÎ Á”ÁàŠ�`w”÷ ˆß B÷ „û·|Οx· rß Bø÷ j ÷ ^Î ß B÷ Vûwœþ7 H ÀŸ>· :Àå0 ‚· 0Wp `ñÀe0[ƒÄeÓ•?‡f…@‰f…@÷ ÷þwêw šT @�w ŽT ×-äw  T @7 ÂwJf…w¶w †T 7 ¬w4f…@#‰w&@…&æ¦äHÅåF‚ƒ„…‡7ŽÀÿÿF…‡fA7@‰ ‡  �…Ñÿÿ�±…fAñ &÷ €ø9�± �…&fA÷ �€…@Àe&7 w·ã@‰> ±ñ‡arg count bad character ‰¶w w&w Èâ€Àw ¾â…‰@!~2 ð€&Ð 6÷ J–% ‰w þNß 0ß Jwøw æNß 0ß rß s�ÀwÌw ºW- @&ß ØÖ 7,EÀ(EÎ@ß ÷ XÎß Ò7C æ@ß .Ö 7ÖB æ@ß .Ö 7ÈB æ@ß .Ö 7ºB æ@ß .Ö 7¬B æ$@ß .Ö 7žB æ,@ß .Ö 7�B æ4@ß .Ö 7‚BÎæ<@ß .Ö ÎæD@ß .Ö ÷ èÀRB¬÷ Ô Äô÷BB À4B¬À(BŽß 0ú÷ Âw°w ž÷ Ê5øÿÀ%  5÷ BW-øÿ "÷ 2 ƒs�øÿ@øÿÀðC ÎêCß ¼7 âC÷ €5øÿì÷ºA÷ n5øÿÚôÀ¦Aß  w*w B€ „ƒ!œß ðöÎ ß ðwöw ä÷ š@µ ’5øÿ ÷ ‚p�øÿ ï2€wºw ¨@"À)À&À#À ÀÀÀÀÀ À À ÷ òÆÌL@b@t@ wRw @À´@%÷ š@À–@À%롧 ŠÀ%ÿÿ ÷ 2Îæ†@æ”@ß ö–%÷ Î÷eÈ`@ÀÞ<÷eØ<Äd@÷`@^@wêw ØýL@wD@wÔw ÂÄ"@Ã2@ÀÄ ûw´w ¢ Ä@Næß 4Ö À À î÷ .ÿ4 €27Ú?÷ ÿÌNß Ü 3 3ŠÀwJw 8@ "÷ äþ5øÿD@5öÿ5!öÿ ÷ Æþœ2�‹ƒñ@øÿð@øÿwòw à@@ AÀÿÿ>@À8D@B@5øÿœ5ôÿ€œ5öÿu-ôÿöÿÀu-ôÿöÿÀÿÿ!µ øÿ Àÿÿµ øÿÀÕwVw DB5 øÿ€ @„ƒõôÿœß lÀ%õÿÿôÿ! *�ÀeÐÿ5öÿ W-öÿ €  õ öÿ� @PΚ@ß AøÿWp Amöÿuøÿ!Aøÿupôÿ@×w¼w ªuøÿ÷ Zý÷ Týõöÿ@õÿÿöÿ@ 5øÿ³AøÿÀ r Áe0r�AøÿÀ r 5øÿ@øÿ@öÿ÷ ýŒò•-‹À÷ ìüŒÙw2w Nß Ðf÷ ÄþÖ `ß jw w úNß Ðf÷ žþÖ àß jwæw ÔNß Ð&f÷ xþÖ VpNß jw¼w ªNß Ð&f÷ NþÖ Á À rß jwŽw |@Nß Ü@Nß ÜNß ÜNß ÜüôÎß <w<w *Nfß ˜Ö Nß Nß ww ü@D@!ß <„øß <wÜw ÊNß üNß wÂw °Î&<ß vw°w ž@>Dœß jή@ß 05øÿNøÿæß êÖ ¦ß ˜Ö ß JŽß ­_òβ@ß 0æß ˜Ö ß JÎß @5¿w$w Nß 0æ¶@÷ úÖ &ß êÖ æl;÷ <ýÖ &ß êÖ ß J÷ òÀH;_X÷ ÿ÷ à÷ Ž÷ À û÷ ¬À û÷ Ä÷ rw®w œÀ;÷ îø7;À;· ø:θ@ß · ô:íÀö:7 î:7 ì: Äâ:ÀÞ:,ÎÔ:ß <· Î:?Æ:wHw 6À¸:÷ Šÿ7¦:7 ¨:Àœ:÷ Òù0Š_v À†:œß l_Ô Àt:ð•Àj:_v Àb:ð•ÀX:_v ÄP:÷ ,ÿ7H:ÀD:4Š_v À4:œß lÀ%Î :ß <å÷:ô•_v À:ð•Àú9_v Àò9ð• Àè9_v Äà9÷ ¼þ7Ø9ÀÔ9œß lÀ%ô• ô•÷¸9_v Ħ9÷ ‚þ7ž9Àš9œß lÀ%ô• ô•÷~9_v Àl9ð• Àb9_v ÀZ9œ÷ 0þÃF9­ Î<9ß <ô• _v ÷ þ7 9À9ÎÆ@ß À9¬Ì9Ä9ë3Àö8ð•ÿì8Àè8bÀâ8ð•ÀØ8ZÀÒ8ð•ÀÈ8RÀå ƒÀ xæ 2 D � ¢ ´ î ( : ²  ÷ Ô÷À’8 ÷ jý7†8À‚8œß lÀ  À ÷ f8� @0 ÌZ8ÄV8÷ 2ý7N8ã3÷J8Îß rÎß ÷ l÷ó• Àw¬w š÷ Zý¬ß <õwˆw v÷ ,÷pwnw \CÀÎÞ@ß ÄÎß <wFw 4÷ êö@ð ß ž t�5 øÿuôÿ@ôÿBôÿ5 ôÿ÷ ¾ü€œ5öÿ@öÿ_` õôÿŽß <÷ œüî@ôÿò•ç@ôÿò•à@øÿÎâ@ß 5 øÿ_” @øÿõøÿ_” @ôÿ _@øÿ_” @ôÿWÎAß @øÿ_” @ôÿK÷ "ü5îÿÀ 2�5öÿ@îÿ¬ 4÷ ôõ5ðÿ Nðÿæfîÿß à –%5îÿ@îÿœ5êÿÀ%}îÿðÿuîÿðÿNðÿæ& ß à –%5îÿæW-êÿÎ"Aß = ðÿNîÿß <%µôÿõöÿ5 øÿÀå ƒ À xr 2 b b F T � † x x ¨ @øÿÎ4Aß 5 ôÿ�5òÿu-öÿòÿß ž W-öÿõöÿt�öÿŒ_ 5ìÿß ¸ 3Š€!W-òÿ W-öÿÎTAß _ W-òÿ÷ Êô5ìÿs�òÿsìÿKìÿCìÿºwþw ì 5ôÿ÷ šô@0CÀ÷ Žú÷ |ô5øÿ DøÿÀœ_ÂÎß <÷ júõ ææß à –%ô•áÎß <÷ Bú5 ôÿ׬ õôÿÎß <÷ $ú÷ ô5øÿÀœ5öÿ W-öÿ€  W-öÿ� @P W-öÿ � @P W-öÿ� @P= øÿNøÿæ æß à –%@øÿ=øÿ׬@øÿ0  Îß <Nøÿæ& ß à –%@ôÿ ׬TÎß <÷ vùÀœ5öÿ W-öÿ€  W-öÿ � @0<tøÿô•@øÿp�ôÿÎß <÷ 0ù@ôÿ _TÀå ƒÀ xÔ’ôôôôôjôôôôxôxxx€ò•4ŠÀÎbAß ww  5ìÿ5òÿ5ôÿ5êÿ5öÿ5îÿ÷ ¨øÀœ—  õöÿÎß <÷ ŒøÀœ— ΂Aß Îß <w-öÿ3_ì÷ Vò5øÿæ & ß à –%Àœ€_0— <— ÷ $ò5îÿNîÿæß (Ö Àœ€_0— $— ΠAß Îß <÷ æñ5êÿæ& ß à –%Àœ€_0— ÎÀAß Îß <÷ ¶÷Àœ—  €  õ ôÿ€  õ òÿ� @Po —  ÄÎß <7!2-7!2EÎæAß Îß <÷ Tñ5ôÿ÷ Lñ5òÿNôÿæ& ß à –%׬ä@òÿAôÿp÷ &÷Àœ×7@ôÿÓ÷ ÷׬Ì÷ úð5ôÿæ& ß à –%׬¼“@òÿ¸÷ Üö׬±÷ Äð5òÿæ& ß à –%׬¡_@öÿ@öÿœÎBß @öÿð@öÿð•søÿ@îÿµ ìÿ}îÿøÿuîÿøÿ@êÿ õeìÿ}êÿøÿuêÿøÿ÷ Bð5ðÿ @ôÿ @ôÿ=ðÿNôÿß <@ðÿ0 @òÿ @ðÿAòÿpNòÿß <}ðÿøÿs�ìÿó�²0À_ð÷ Šø5øÿ@øÿ¬_èuøÿöÿ@öÿœÎBß @öÿð•Bøÿ@öÿ°÷ Dø5øÿuøÿöÿJöÿ@øÿœ=@øÿ¬G÷ ø5øÿ@øÿ¬=røÿ@øÿ0ŠBøÿ÷ ö÷5øÿ@øÿ¬Nøÿß <Þ@øÿ¬Nøÿß <÷ (õ5øÿœNøÿß <÷ Fü5øÿ2 }øÿöÿ@öÿ0 @øÿÎ.Bß w2 w CÀ5øÿ/ 5öÿÄDøÿ5!!µ öÿœß l5øÿW-øÿ€ W-øÿ‚ ä€3@öÿÜ wº w ¨ B„ ƒÀõ Ä2À wˆ w v @÷ $î5ìÿ5øÿ 5ðÿ5îÿ*�= øÿ×-¼. _*uìÿøÿ@ 5îÿ5ðÿuðÿ@5îÿ_Ú÷ Æíýøÿõøÿ÷ ¸í5öÿAøÿ1}îÿöÿ�5èÿ@øÿp�èÿW-èÿ Îæß ZÖ Aöÿ1±uøÿîÿ÷ hí5ôÿ÷ `í5òÿ÷ XíAöÿ1òœJôÿròÿõêÿ@êÿ= òÿ fêÿß ZÖ =òÿõêÿ@êÿ@òÿ0 Îfêÿß ZÖ 5êÿNêÿß ÐAòÿ1Nêÿß _ÄDöÿ÷ˆ-_*5øÿ@øÿ5öÿ@öÿµôÿµòÿ@òÿâ—¬ Nîÿfôÿß ôÖ À Õ Nîÿfôÿß lÖ À Ë@ôÿ5!îÿ5 ðÿ5ðÿDøÿ)÷ Lì@ 4 _*CÌ@ðÿ@4_*À õêÿu-êÿðÿô_*Cêÿð5øÿ@øÿ5öÿ@öÿ@øÿœ5æÿW-æÿ!€¼@ðÿ_úDðÿƒµêÿÀ3­_úõ êÿ�5!îÿ_úÃìµôÿµòÿ}ðÿôÿ@ôÿ0 @òÿ5èÿ—¬2Nîÿfôÿß ôÖ 5æÿ@æÿ_ú@èÿ_dÀuíæÿèÿ@èÿ_d@èÿ_úNîÿfôÿß ôÖ 5æÿ@æÿ_úá@èÿ W-æÿ€  õ ðÿ� @0@ôÿpîÿ_d_|@èÿõ èÿÀ Nîÿfôÿß lÖ À _úî_duìÿøÿNöÿß <CøÿNøÿß <ÀIõøÿ@øÿ5öÿ@öÿ@øÿ¬Žß ݵôÿµòÿ Ä €  ý òÿ� @0@ôÿNôÿß <5 ôÿNôÿß Üfòÿß BÖ @ôÿNôÿß <Nòÿß <Žß <©wBw 0CÄÀœ.�ô•"÷ ,÷ jè$÷ :êß j ƒ À x0ü>>ÎJBß Úß ÜwÌw º ×-,* _¶ uøÿuøÿøÿ@øÿœ€_†W-Îß ä ׬ÎlBß ÄÎß ¸ ÀΈBß _¶Îß äß r ß 3ŠÈÀœÎ”Bß Ä­Î¦Bß ÷ Âè5ôÿ5ðÿ@ôÿ°2 @øÿ5öÿ Ä €  õ öÿ� @0 5!öÿθBß ‚$÷ rè5òÿ=ôÿuòÿôÿß äAôÿ1Î@öÿ&ß ZÖ &ß BÖ uöÿöÿÈŽß 0€úÀuðÿôÿ‹ó•@ôÿ2uôÿòÿNôÿß <uòÿôÿ_x@ôÿ&ß BÖ çÎß äÎß ¸ Îß ä5öÿföÿ¦ß º–%5ôÿß Nöÿß Kôÿó•_x@øÿß Üõöÿ@øÿ5 öÿÎß ž  s�öÿ_x ƒ_ŽÀ x–ŽŽŽŽŽŽŽÌèdNwlw ZDC@Î&ß jÖ )Î&ß @Ö #Î&ß ôÖ Î&ß Ö Î&ß ˜Ö Àå ƒÀ xþæòÚÎ wöw ä @@œ7L'@œ_Ê5òÿÎ&ß ZÖ ß _à5øÿuøÿòÿÎ&ß ZÖ Îføÿß žÖ Îß €_ìŽß <_à5öÿuöÿòÿ &ß ZÖ Î@öÿ&ß ZÖ æß BÖ _à5øÿuøÿöÿuöÿòÿ &ß ZÖ Îføÿß žÖ 5ôÿ@ôÿfÎ@öÿ&ß ZÖ @ôÿNôÿß <Î¦ß ˜Ö æß BÖ Žß @@ôÿÁ1, Žæß BÖ Nôÿß <.÷ LåAôÿAHÀ4¦ß ˜Ö æß BÖ Nôÿß <ß <Žß    ƒÀ xØVr²êÀ¬%Còÿ7  %@òÿÀ@ æß ZÖ ÷ x% ÷ p%÷l% ׬ÎÐBß Àwäw ÒCB×-<%Žß ,ÀœÎòBß ó•Îß ³Žß JÄß ´  ƒàÀ x¬ntff‚Šwjf…@‰†wj wlf…@)‰†wTwXf…@‰f…@÷ ¦$÷ž$w’$w ¸¢C@�w ¬¢C×-„$w ¾¢C@7 j$w f…w^$w ¤¢C7 T$wôf…wH$÷ R&  ‰®E‡À À�D&ÀEÿôw î¨E‡À ú 7 $w´f…÷Š#†#wm€#‰C†w’Àt#wmn#wŒ�¦æ ‘rà CdÃÂÀ$üƒ‚ƒ‚Yf…w>#w:#‰C†wDwHf…@w"#w#‰$C†w"w&@…&æ¦äHÅåF‚ƒ„…‡7t'ÀÿÿF…‡fA7à"‰*C‡ �…Éÿÿ�±…fAñ @Àe7Ú"1@‰PC‡À �±…À 1 @Þ± �…fA7®"‰VC‡  �…Ñÿÿ�±…fAñ &÷ €ø9�± �…&fA÷ �€…@Àe&7z"wv"·ãp"@‰xC±ñ‡°Gÿÿcannot open inputfsendstartdefinereturnfreturnsyspitsyspot„ ¢$¨'–*�-¨"~(Š+®=„ x)´,œ/Out of free space bad integer string eof on inputillegal literal stringpopno operand preceding operatorillegal juxtaposition of operandserror in functionno operand at end of expressiontoo many ('sunrecognized component in matchno space beginning statementunrecognized component in matchunrecognized component in assignmentunrecognized component in gotoname doubly definedname doubly definedillegal component in defineattempt to take an illegal valueattempt to store in a valuephase errorillegal functionillegal functionparameters do not matchattempt to transfer to non-labelattempt to make an illegal assignment‰°G‰‰‰www (݆…&w ÝÀ€U…‰‰¶w w&w ZÝ€Àw PÝ…‰ !"#$%&'()*+,-./®|z ð€&Ð 6÷ –% ‰w vÄ5!:À @m¢- À @mœ÷P$À @mŽ ß °7L÷ ðpt°Ê÷ "À @m7À @m7„ Ã÷ þ×-øÎ,æìß þÖ À Îæàæß .–%÷ €÷ Ê÷ô 7!ÈYÎ,ß :à  Î2ß ê÷ J = ÀŽ€`È‹À„€`2’8‚ ôÁÀ rÀea�‚ 1�8ÁìÀ rÁea@�‚ 1�82Š8· ÐÎ2æ8ß €Ö À Îæöæß .–%÷ Î Î2æß ºÖ × ©„ ¤Î2ß êÎŒß è˜wîw Ü Cˋע0 ×¢9Wp Â’�`ÁeÐÿDƒ îw¶f…@‰†wˆ wŠf…w‰ 7‡A …‡7 ‚f…A÷ &÷ À€U…‡f…A÷ …‡ñ @Àe7º1@‰ ‡À À 1 @Þ± ‡wf…w�AɉF‡  Df…@A&÷ €À÷ 6f…@A÷ @+ñ 9�± ‡&÷ €óf…A÷ @Àe&7w·ã@‰±ñ‡wZ7 x…‡f…@wêwæ‰$†w4w8f…@‰�¦æ ‘rà CdÃÂÀ$üƒ‚ƒ‚Y7ÀÿÿF…‡Õ @…&æ¦äHÅåF‚ƒ„…‡èFN0N2N4N6N8N1N3N5N7N9cannot open input xCannot create output ‰‰‰¶‰‰€2 ð€&Ð 6÷ –% ‰w &@ÀeÖÿæß ˜Ö @ÚÿÀEÿŸÀ%  À7Ì@õ À%*ζ@&ß zÖ Á¦· ¢Á 1 @ÀeÖÿ@&ß ØÖ À @ÚÿÀEÿŸÀ% · rõeÏ  — !÷ T Îæ2 & ß ¶–% à Žß  €‚ „ pœ2 2"ÞŽß Ùw6w $÷ À @5ôÿ5 öÿu-öÿ'5 øÿw-øÿà@@íöÿ@-ôÿNôÿNNíöÿföÿÎe2"@øÿÀ & ß ø–%µ øÿßumôÿöÿÕw¾f…w”w�‰ †w†wŠf…@wx‰ †wj wlf…@w^wZ‰ †wFwJf…wFwB‰& †w( w*f…@w(w$‰, †ww7"ÀÿÿF…‡Õ @…&æ¦äHÅåF‚ƒ„…‡‰‰‰‰‰À`  ð€&Ð 6÷ –% ‰w ê 7F#7:# 7>#72# 76#7*#À 7,#7 #õ -õe@žÀ%-#½ @È‹@ž · Šò· €ï· |ìÁ 7~ þyâõ õeõ w´"W-@7ª"5 øÿW-øÿ@øÿAøÿñ•`"Aœ`"p�` µ øÿî÷ .Î`#ß –5ôÿ@ôÿÀEÿð•`"ñ5 öÿõøÿW-øÿ@øÿð‹`"@öÿµ öÿp�øÿ`"µ øÿí@öÿ0Š`"õ`"ðÿ5 øÿW-øÿ@øÿ0Š`!µ øÿõ÷ ˜@ðÿµ ðÿ’5ôÿÎ`#ß –5ôÿõ ôÿÎh#ß –5òÿõ òÿuôÿòÿ@ôÿÀEÿp�òÿ` @òÿÀEÿð•`!ÑÎh#ß –5òÿ@òÿÀEÿð•`!ñ÷•v5 øÿW-øÿ@øÿð‹` @øÿp�øÿ` ÷ ð@øÿ0Š` µ øÿç7 L!Îß 27H#Îß Îp#ß ‚5ôÿ$õ ôÿö@ôÿÀEÿœ` ÀEÿ5ôÿ÷ œ w-ôÿ˜@ôÿÀEÿð‹`!@ôÿ7€ß ÂÕ÷ tw|w j @ð @_ @A1"½ @_ @žÀ%[_Nß Nß 5øÿ=@0 Nß _èNß 5öÿu-öÿøÿ[@&° €’À%]P@pöÿ@øÿe@žÀ%0ÀÀ 5ðÿ5 òÿ@ž5ôÿÀ%0@ðÿÀe0@-ôÿAðÿupòÿAmôÿÁeÐÿuòÿ@° á@&° €’À%]õ òÿõèòÿ@pòÿ@øÿÎ æ æß È–%÷  Àå* ï‚À xø@ÐÐNß ww ò@&° €’5øÿW-øÿ\8 5ôÿ5öÿW-öÿ@ž5øÿÀ%0W-øÿ7@ôÿt@møÿÀeÐÿ5ôÿµ öÿ@° Þõ öÿuôÿøÿ @&° €’5øÿõ øÿ@ð Š@øÿÀEÿwPf…@÷ ª ÷¢ wœ w fx%@�w Zx%×-ˆ w lx%@7 t wöf…wh w Rx%7 ^ wàf…@‰†wÈ wÊf…@)‰†w²w¶f…w؉& 7‡A …‡7 "f…A÷ &÷ À€U…‡f…A÷ …‡ñ @Àe7Œ1@‰, ‡À À 1 @Þ± ‡w,f…@w^wZ‰2 †wwf…@‰7†!ÀÿÿF…‡Õ @…&æ¦äHÅåF‚ƒ„…‡fA7‰8 ‡  �…Ñÿÿ�±…fAñ &÷ €ø9�± �…&fA÷ �€…@Àe&7ÜwØ·ãÒ@‰Z ±ñ‡cdsv|‚šBad string ‰‰‰‰¶w w&w øå€Àw îå…‰ Àpa ð€&Ð 6÷ –% ‰w b õ @À%Îß \÷ â÷ r´q÷ t°q÷ v¬q7 °q7 ®q÷ªqõôÿ@ôÿÀ @mžÀ%-7@ôÿÀ @mœ@ôÿÀ @mœæß \Ö ÷ v· X · TÁ<7Œ þyµ ôÿõ @À%ÎLß \÷ <¿÷ X æXß þÖ 5âÿÎæfâÿß 8–%5àÿW-àÿÎfß ’ Î4æfâÿß 8–%5àÿW-àÿ4Îpß ’ δæ:fâÿß 8–%5àÿW-àÿ´Îzß ’ ÎäLæîfâÿß 8–%5àÿW-àÿäLÎ„ß ’ Nâÿß NÎôæß ZÖ ÷ŽZp÷šVp÷¦Rp÷²NpÎæ@pß þÖ 7*p÷ &p"Î pß Nõÿÿêÿµ êÿ@êÿÀ%@êÿÀ r°Š ñÀpœ À%zÎ¾ß ’ Òõêÿ@êÿõ êÿÀ ζ@êÿÀ &rß €Ö AêÿÁ 1öqê@õ À _’ @ôÿµ ôÿÀ @m&ß þÖ 7†o÷ ‚oÎÎß ’ Îß 6 5êÿ{NêÿŽ æÒqÀ�4o&÷ ÊÖ &ß € –%õÿÿèÿ5 æÿõäÿÎ@ß  78@êÿ€ @-äÿ;Aèÿµ èÿÁm,A’WpBæÿµ æÿÂm‚’�`uÞÿ@ÞÿÀ :ß  AÞÿÁ 1:AÞÿWpBäÿµ äÿÂmæ‚’�`uÞÿ@ÞÿœîÎEÿß  AÞÿ1�î¿Á¾AmèÿA’Wp°Bmæÿ‚’�`uÞÿ@ÞÿÀ :ß  AÞÿÁ 1:_‚Îpnß N_Hõêÿ@êÿõ êÿÀ  fêÿß Ü Ö @êÿÀ öqß Nìõêÿ@êÿõ êÿÀ 4÷ ü 5îÿõ îÿ @êÿÀ &r@êÿÀ &ræîæèæÞß žÆe Îòß ’ õ îÿÎøß ’ ÷ ²5àÿu-àÿîÿÎþß ’ Æõÿÿêÿµ êÿ@êÿÀ%1÷ € 5îÿõ îÿ@êÿÀ r@êÿÀ &rææß žÆeÎß ’ õ îÿÎß ’ ÷ <5àÿu-àÿîÿÎ ß ’ ÈζæJmß €Ö 74m÷ 0mÎ&ß ’  æ0ß þÖ 7m÷ mÎ@ß ’ ÷ mõÿÿêÿµ êÿfêÿÎeÌæ÷ ÂÖ �À% ðõ•öÿµŠöÿ@�öÿÀ%_Š @�öÿÀ &rß þÖ 7²l÷ ®lÎLß ’ ÷¤lõÿÿèÿµ èÿfèÿÎm æ÷ ZÖ �À% ÀŠ@mèÿÈ‹_pèõÿÿìÿ5 æÿµ ìÿ@ìÿ@-èÿ7À`@mìÿAæÿ1¢Ì NèÿæJ& ß € –%ÇÀ<@mìÿAæÿ1¢Ìõÿÿæÿµ æÿfæÿÎeÌæ÷ ÖÖ �À% @æÿð‹ÌëÀµ æÿ¡Nèÿæì& ß € –%õÿÿèÿÎß Ð µ èÿAèÿÁmÊ �ÀÂ@mèÿ’À% Nèÿæ®& ß € –%õÿÿèÿàΆkß N@�öÿÀ rß ¼_  & ß Ü Ö Î`kß NÎVkß N÷Tk æRkß þÖ 7>k÷ :kÎVß ’ ζæ4kß €Ö 7k÷ kÎ`ß ’ Îß 6 5êÿ_ø7 ðj7 õÿÿèÿ5 æÿõäÿ@êÿ€ @-äÿE7 ÊjAèÿµ èÿÁmàA’WpBæÿµ æÿÂm΂’�`uÞÿNÞÿß J ÁºAmèÿA’WpNÀª@mæÿ’`ß J · xjAÞÿWpBäÿµ äÿÂm†‚’�`uÞÿNÞÿß $ ÷-PjPj÷HjHjµ÷ Bj7 jõ7 4j÷ €Â Ó•0�”B~Á jÓ•. Á Ó•0…~Á ”B~‡Â ÷øiõ÷îi÷ :”Ó•.Áäi”B~Ó•e �Ó•- Ó•+ r Àe0�Áe0S�‡&æ„Äe@7¤i÷e(ži @ñð&Àñþ•-Ž ó€@Añð&ø@øÃvi7óžø@ø—ôL>—ó BÀûÀe0#�‚ @ñððÑ”÷ Niü‡õ ‚  ó BAñðú‚ ÷ ÷  üw &i†Îeó B@ûÀe0�‡Àmi÷ i€`€  ‡’ÃeÈ�¢9 È•0 ƒ Š÷È•1‚ ƒ„‡Ì>ÌÌÌÌÍÌw €wÆhDÄeÀŸ¼h · ¶h %ß ôôw7 ¢h7 ˜hׯ˜h-· �h· Žh÷",x7 †h .÷*xƒÁÈBÞ üJìdBo<xrf|ec(søl Ó•-÷ C r f÷ ðÿ€Àe0�‡•à •1à /Áþg Ò‹ƒ D~'Â*Â. ÷ f v÷ öÿ€€LÀe0 9Àe�‡Â¼g÷ hý²g÷ ¤ý‚ƒà&æ Ä Ãm”g÷ ’gß ôÃ~Ä Ž”ß ôà Î ß ôÃ~Ö „w¦þ7 fg ÀŸ\g· XgÀå0 ‚· NgWp `ñÀe0[ƒf…@÷ 4g÷,gwþfw ¬4x@�w  4x×-gw ²4x@7 Öfw<f…wÊfw ˜4x7 Àfw&f…@‰†w wf…@÷ ¦wf…÷  wôf…wªw¦‰2†wÒwÖf…w’@Àe7Љ8w²f…wHf5õw ¶7 †wTwXf…wæe5õuõ w 7 Öew<f…@wwü‰D†wwf…Aw.w*÷5"WpÁeDW J ‡W ’ †ñw‰’‡wÖÀwÆf¦æ&Ø „ƒ‚�€f…wÔ‰˜†wœ wžf…÷ D&‰†Ö w‚Ö }w~f…@wšw–‰œ†wXw\f…@‰Af… w,üÿ.Àw"(Àe w"Àew"@l€ …‡ß Ö –%Æe7ÊfÀÿÿF…‡Õ @…&æ¦äHÅåF‚ƒ„…‡fA7‰¢‡  �…Ñÿÿ�±…fAñ &÷ €ø9�± �…&fA÷ �€…@Àe&7ÎwÊ·ãÄ@‰Ä±ñ‡7°‡fÁ¨Wp3Áe @7šÀE€�‡@ñðAñð…€føWó€@ðVõ€ñw ‡føWó@ðÀñVõ…w ܇òw …Võ±…¦ðWð€¦øfø@ñðõ€@¡67ó˜ð�fûö@fûÎ ô@øAò·õd�ò·ôV�ò·ôHòBø·ô`�ò·ôR�ø@öôù7ò^&úŽe—#Ö 7õV± —#�ÿÖ ñ¡ý¡Võ–õVð…½E=s½M¡BÔ�Ÿ˜Û`½=B.p«ª½ˆF±�:|+eiD(/èzC•¸@;ª\)ñµ@óù3dÞÿÿÿÿÿÿÿ@ñðõÿÿ±…¦ðWð€¦øfø&úý7÷VðýÎ øö€@Wô€@ùø@ò·õ`�ò·ôR�ò·ôD�ò·ô6òBø·ô^�ò·ôP�ò·ôBùVþwòôVõ–õVð…5@óù3eÞ1@rÑ÷zÏÀÂ�lŽ÷B‰¨‰#"™Âû3’h±@×?ØG�e˜@Â�lŽ›BÙ,½k$Âç“aXUåÿarg count Unrecognizable argument: %c 1n¢¨¢‚arg count /usr/lib/saltread saltread saltread saltread salt/tmp/ttmpa1/tmp/ttmpa2/tmp/ttmpa3/tmp/ttmpa4creat tmp fileopen input file/bin/sortsort-osortforkprobs/bin/uniquniquniqforkprobcreat tmp/usr/lib/w2006open w2006open tmpopen tmp create tmp/bin/sortsort-r-osortforkprob/bin/catcat/bin/prpr-3-hPossible typo's and spelling errorsprforkprobcannot %s read error write error on t.%d óBÛùÐ"`å„@,Cz¥lxüÿðÿýÿøÿ‰ ‰‰‰7Xú7Rú7Lú7Fú7@ú7:ú74ú7.ú7(ú7"ú7ú7ú0‰ ‰‰‰¶w w&w û€Àw üú…‰:;<=>?@ABCDEF† ð€&Ð 6÷ –% ‰f…ÆåW-Î ß ²÷ P@¢-@œÀeÐÿ5üÿW-üÿW-üÿ Î( ß ²÷ õeõ õüÿ5 þÿµ þÿ@þÿ@- @þÿÀ @m&ß Ö 5úÿNüÿfúÿß ÖÖ Núÿß l7 :ß ß F÷ °w:f…Æåõÿÿþÿµ þÿfþÿÎe’$f÷ Ö �À% @þÿ¬’$ÿÿ@þÿœ’$_ ã@þÿœ’$5�úÿÀ%ÿÿõ• úÿ@þÿ0Š’$Φ$æ’$ß ÄÖ À · äK(ÀÜ µ üÿNüÿæº$& ß r–%κ$æ’$ß „Ö 5üÿΦ$æ’$ß „Ö õ üÿ@üÿA�úÿp�º$7 ’µ üÿfüÿÎeº$f÷ BÖ �À% @üÿ¬º$ÿÿ@üÿð• º$@üÿœº$à_ÞNß þ7�Â"À% À�¸"ó_ÞÀ* µ üÿNüÿæº$& ß r–%÷ F…‡f…¦)õ µ ff÷ °Ö �W¯ W¯ uŸþÿ=Š@�þÿãâ F…‡f…¦)õ õ @5þÿµ @µ AA’H�@�ó@@íþÿF…‡f…æ õ õ µ @µ A ¢@ŸÀï F…‡f…æ ÷ 2À._ Àl"· h"’_lÎæ† fß æ–%7 Àþ÷† >"À:"· 6"’÷ä ÷ÚÎ< ß ² F…‡f…Æåõ @À †"@mÀeþ5þÿ.uíþÿ@À J AÁ @l†"Àeÿÿ5üÿõ @ µ üÿ@üÿµ AA’H�ð@À ð†"Nß Fuþÿ@À J AÁ @l†"Àeÿÿ5üÿ@AÁ 1`†"õ @ µ üÿ@üÿµ AA’H�ð F…‡f…æ @À †"@À †"$· & @À †"@À &J @À &H ß 4–%AÁ @,†"Àÿÿ@À 0 †" F…‡f…wÌ DÄeÆå€ÀŸ¾ · ¸  % &&ß ŒÖ „ñÆe€…‡7 š 7 � ׯ� -· ˆ · † ÷.†%7 ~  .÷„%ƒÁ*BÙ üJJd�o¶fÀexc‚sVl Ó•-÷ 6 r f÷ ðÿ€Àe0�‡•à •$Áþ“”C~÷ fWtýÿÁEà÷ ðÿ€ÀEøÿÀe0�‡ÂÒ÷ ¤ÂÈ÷ šÆ ƒó‹ÿÿà ù‚&æ Á¢ÁàŠ�`w¢÷ –ß Œ÷ ’û·ŠΟ†· €ß Œø÷ x ÷ lÎ ß Œ÷ dûÖ „w�þ7 R ÀŸH· DÀå0 ‚· :Wp `ñÀe0[ƒÄeÓ•?‡f…@‰†wŒ wŽf…@‰f…@÷ ú÷òwìw Ð’%@�w Ä’%×-Øw Ö’%@7 Äw@f…w¸w ¼’%7 ®w*f…@wZwV‰L †ww7Œ ÀÿÿF…‡f…w4w0‰R †wØÿwÜÿf…@ww‰X †w¶ÿwºÿfA7‰^ ‡  �…Ñÿÿ�±…fAñ &÷ €ø9�± �…&fA÷ �€…@Àe&7ÎwÊ·ãÄ@‰€ ±ñ‡Usage: cpost [-d] file1 file2 ... -d: 0 < d < 10 read error Ž"‰‰‰‰¶w w&w ç€Àw üæ…‰€Ø> ð€&Ð 6÷ –% ‰-lww °õ @À% ÀõeAAW¢- Á@0!õøÿ@@møÿ’ !r÷Ž÷ˆµ øÿí÷ ~wxõ õe5 øÿõ 7ŠH Îì @øÿÀ @m&ß ÒÖ À @øÿÀ @mæ† ß ÌÖ M÷ ¨õöÿÀ@möÿÈ‹1À@möÿ’ÎØ ß ¤#ÎÜ ß ¤Îà ß ¤Îä ß ¤Îè ß ¤÷ ºa"cúlpwJµ öÿÉõ Μ @øÿÀ @mæ˜ ß ÌÖ µ øÿ@øÿ@-�wXw FÄ ÎØ ß lÎÜ ß lÎà ß lÎä ß lÎè ß lÎì ß RÂE€ÿÄ $÷ 0— .— 'Îè ß ˆÎì ß À  À— ðØ ÎØ ß ˆ Ð‚œ Â5ËÂ5  Æà Îä ß ˆƒÂ5ÎÜ ß ˆÎà ß ˆ²Â5 Â5Ĩwpw ^@ð=wTw B½ ý @° w8w &N@&ß TÖ æž ß ÌÖ ww þ€w DÄeÀŸ ·   %ß xôwâ7 ü7 òׯò-· ê· è÷,ö"7 à .÷ô"ƒÓ Á:BÝ üJZd oÆfÐeˆc’sfl Ó•-÷ 6 r f÷ ðÿ€Àe0�‡•à •$Á^“”C~÷ fWtýÿÁEà÷ ðÿ€ÀEøÿÀe0�‡Â2÷  Â(÷ –‚Ò Â ƒó‹ÿÿà ùÎ ÁÁàŠ�`w÷ öß x÷ òû·êΟæ· àß xø÷ Ø ÷ ÌÎ ß x÷ Äûwœþ7 ¶ ÀŸ¬· ¨Àå0 ‚· žWp `ñÀe0[ƒÄeÓ•?‡f…@÷ ~÷vwbw Œ#@�w €#×-\w ’#@7 :w f…w.w x#7 $wôf…wʉ¤ 7‡A …‡7 f…A÷ &÷ À€U…‡f…A÷ …‡ñ @Àe7~1@‰ª ‡À À 1 @Þ± ‡wjf…&æ¦Ä%CB€  ‚ Ô•-÷ ŠÀ%‚ƒ„…‡÷ Áe0f—v÷ ìÿ”•‡ À —vA W ‡Áå ƒ ~‡7RÀÿÿF…‡Õ @…&æ¦äHÅåF‚ƒ„…‡�¦B@$ü‚‚YfA7¬‰° ‡  �…Ñÿÿ�±…fAñ &÷ €ø9�± �…&fA÷ �€…@Àe&7xwt·ãn@‰Ò ±ñ‡%s: cannot open %s %7s ‰‰‰¶w w&w \å€Àw Rå…‰d8f TYH  ð€&Ð 6÷ –% ‰w (7 5øÿß ¦Nfß ÂÖ À0:Àetüÿ7„Eµ øÿNøÿß ¦÷ F÷ ”÷ êµ øÿNøÿß ¦÷ \µ øÿNøÿß ¦÷ l%µ øÿNøÿß ¦÷ X*µ øÿNøÿß ¦÷ ÷ â2wª6w ˜6@Àeæÿß ª6@À AæÿAmèÿp~:w‚6w p6÷‰¢9wr6w `6÷ôˆ’9wb6w P6÷ „9Î~9fß ¤/Ö wD6w 26@Àe5ôÿ5 øÿ@øÿµ øÿ@m’5îÿ_|W-îÿ%Nîÿß î_x@ôÿõeôÿ5öÿ@øÿµ øÿ@m’5îÿ_Rõ öÿ @öÿ 5öÿÎ-ß îNöÿß €ÇNöÿß îÂuöÿìÿ@ìÿµ ìÿ’5îÿNîÿß îó±uöÿðÿõ ðÿÎ6;ß 0Î<;ß õòÿw-òÿ‚8!@òÿtüÿÀ @mðÿAòÿÁEðÿ t×  Á@0Nòÿæ@;ß Ö µ òÿÛÎD;ß _ Nöÿß _ Nöÿß €_ ÁF;7ø8 þy õåôÿÎ%ß îNîÿß î_ wÐ4w ¾4AÀ r 5øÿNøÿß €AÀ r NÎe0ß îwš4w ˆ4÷ þΦ7æb;ß Ö Î¤7ær;ß Ö Î†5æ„;ß Ö Î”;ß õøÿw-øÿl7@øÿt,>xNøÿæ¨;ß Ö µ øÿêΰ;ß Î ß îζ;ß 5 øÿw-øÿ07 NøÿÎeæÊ;ß Ö µ øÿðÎ7ÎeæÒ;ß Ö ÷ XýÎø6æø6æê6æä6æÜ;ß ÆeÎÒ4æÌ4æÖ4æÐ4æ<ß ÆeÎò6æì6æ$<ß –%À¢4À 5ÎEôÿÎ`7æ¾6æH<ß –%ÎŒ4æŠ4æ€4@ôÿÀå,O€ &æb<ß ÆeÎ(7æ"7æŒ<ß –%Έ6ÀJ4À àæ¬<ß Ö Îl6æÀ<ß Ö Îb6æ\6æÔ<ß –%ÎH6æ=ß Ö Î<6æ=ß Ö Î<=ß õøÿ@øÿÀ ð ~:@øÿÀ ~:@øÿÀ ì|:æJ=ß Ö µ øÿè@øÿÀ |:ÎíÌ5æR=ß Ö õøÿw-øÿ¢5%Nøÿæh=ß Ö @øÿÀ 5î‰öÿõ öÿNöÿæn=ß Ö @öÿÀ 5t‹öÿïÎr=ß µ øÿ×5 øÿw-øÿX5'NøÿÎeæt=ß Ö @øÿÀ 5¬Šöÿõ öÿNöÿæz=ß Ö @öÿÀ 5t‹öÿïÎ~=ß µ øÿÕ÷ 05÷ ,5)÷ü4΀=ß ÷ 5Î5æŽ=ß Ö ÷ 5÷ þ4Ζ=ß ÷ ð4Îê4æš=ß Ö Î¢=ß w€1w n1÷ 4Τ=ß Nf f fffß Æe Î 5æ´=ß Ö ÷  üÎ`4ß Š.5øÿNøÿß îô÷ R-w1w 1NæÀ=ß Ö ÷�ƒwü0w ê0NæÎ=ß Ö · tƒÁpƒÀ r Á Î ß îwÊ0w ¸0ÎÒ=ß w¸0w ¦0õ„4øÿõâ‰öÿ@øÿõ øÿÀ @µ Aöÿµ öÿH’ðw‚0w p0õâ‰øÿÀH4Àeâ‰@-øÿ‚@øÿAµ  ¢ ý‹øÿÀµ øÿæw>0w ,0õP1øÿ@€ À 7`B1À>1Àå,O€ À-21ÎÚ=ß Ð@øÿw0w ò/5 øÿu-øÿ @øÿÀ @mHµ øÿòwÚ/w È/  7!F>À @mÁ Am@RÀ @m"ÂÀ @mÈ„ ã€wŽ/w |/ Îwæê=ß ü0Ö 7‚7 ‚õøÿW-@žÀ%-@œÀ%v Îwæò=ß ü0Ö 7À�õøÿu-øÿ Îr@øÿÀ @m&ß ü0Ö 742÷ ”øÎü=ß  æ>ß ´ Ö ÷ 2 æ>ß ´ Ö Îæ >ß ´ Ö ÷,Oè/5 ôÿ5 øÿ÷ 25òÿm@òÿb ß �5öÿ@öÿÀ pôÿJ�ìë5 ôÿèµ øÿ@øÿtÀU5ôÿݵ øÿ@øÿtÀU5ôÿÒµ øÿ@øÿtÀU5ôÿÇÎ>ß Î:>ß .÷  »@öÿtð,“>x³÷2¯ÎL>ß Ð÷ ˆÀ% Îf>ß Ð÷“æ1žNòÿæŠ>ß ÐÖ ·.ª>yŽ÷ø.ÆlÀò.÷eì.ÈÀä.÷eÞ.ÈÀÖ.÷eÐ.ÈÀÈ.÷eÂ. ÷¼.Œl5 øÿ÷ 5òÿ_¢ @òÿ_’ ÷-œ.llÎî>ß õ øÿÎ?ß ÐÎß �?v.×/r.Î?ß Ðõøÿ÷eZ.ÑÎß �?L.×/H. ÀF.À Á:.Á pJ�v8÷e,.õ øÿÎD?ß Ð³À.À ðUv8õ øÿÎN?ß ÐÎ.æh?ß Ö ÷ @Îr?ß õ øÿÀÞ-÷eØ-ÁÚ- H· Ò-ÀÎ-À ðÂ-x_® ×­Z} G×­S}\C÷‹M}@À�F}4ÀÆ-tð >x4À¶-tð >x,À¦-t0 >x%À˜-tð'>xÀˆ-tð">xÀx-tð\>x Ζ@ß ÐÁ¦@7¢3 þy JÀL-tÁH-· D-p>x×-<-<×­¨| Àã‰Àâ‰5øÿ@Ÿøÿ5ôÿ!W-ôÿaW-ôÿzW-ôÿAW-ôÿZ W-ôÿ_W-ôÿ0W-ôÿ9µ øÿÚÎÒ,Îeÿÿæâ‰æÂ@ß –%À¸,À 0 J�À®,wŽ)w |) 5 ðÿ÷ Z- õT-ôÿ÷m�J-÷ÿÿF-7 øŽÎŒ,ß Š.5ôÿW-ôÿ W-ôÿ W-ôÿ W-ôÿ · -Î\,ß Š.5ôÿçW-ôÿ/6ÎF,ß Š.À%*ÎÒ@ß ÐÎ0,ß Š.5ôÿõ ôÿW-ôÿ · Ä,W-ôÿ* Î ,ß Š.5ôÿÀ%/Îö+ß Š.5ôÿâõ ôÿ _Œ–5 øÿ@ôÿ_Zõ"òÿõ'òÿ@øÿµ øÿð• â‰Î²+ß Š.5ôÿ@-òÿ w-øÿJ,@øÿµ øÿp�ôÿâ‰ë@øÿœá‰À%\ w-øÿ$,@øÿµ øÿp�ôÿâ‰Ø_jÎ^+ß Š.5ôÿ À_ŒÀ_ŒÀ_ŒÀ_ŒÀ_ŒÀ_ŒÀ_Œõðÿ·(Ü@y@ôÿð‹¦:@ôÿ_ŒW-ôÿ0;W-ôÿ97@ôÿÀeÐÿ7®ŒW-ôÿ0ÀÀ 5öÿÎÀ*ß Š.5ôÿW-ôÿ0W-ôÿ9ÁxŒupöÿAmôÿÁeÐÿwhŒÎ�*ß Š.5ôÿçwôÿ0+À _Œ@ôÿð‹¦:w-øÿ+@øÿµ øÿp�ôÿâ‰÷ +õþ*ôÿ÷ÿÿö*Î@*ß Š.5ôÿßõ øÿÎAß ÐwôÿÒ*Á"A7È0 þyw-øÿ¶*@øÿµ øÿ0Šâ‰õõ ðÿXÎ6Aß ÎÀ _žÀ_ŒÎxÎeß Tõ ôÿÎ0Níôÿß TW-ôÿÿÎ@ß TW-ôÿþ ß TNôÿÎe ß Tõeòÿµ öÿÄ÷ Ä#ξ#Îe0ß T ß T@À Aòÿ� p L@òÿ€ 7`¶#wf w T ÷ ÚéNæ€Bß Ö @À 5ÎEðÿ@À 5ÌEòÿu-òÿðÿ †NòÿæŒBß Ö õeòÿñ@À ð L@À  L æ’Bß Ö _ õøÿw-øÿþ"=@øÿÀ 5b}öÿ3Nøÿæ¢Bß Ö õ öÿ_ÐW-öÿÿ_¬ÎªBß _ÎW-öÿþβBß _ÎNöÿæ¸Bß Ö @öÿ æÂBß Ö µ øÿ¿÷ Œ" Ά"æÌBß Ö _ÎÞBß ÷ Òèw@w .uöÿý öÿõeöÿù@öÿ À 5î‰À8À ð LÀ,· (w w ú ÷ ü$ ÷ zâÎ@Àe&æLCß –%ÀøÀ 5ÎEòÿÀìÀ 5ÌEôÿu-ôÿòÿ †u/ôÿÎdCß Ðõeôÿð}òÿNß êAòÿ1ÀªÀ õeòÿAòÿpÎEuòÿøÿ@øÿÀå,O€ À-ŠÎ€Cß Ðwbw PÎ~ß 7t æpŽ æhß L–%õøÿw-øÿT@øÿÀ vAöÿÁ @ìW- @À ìH@mÀ „j @À ìH@mÀm4À „Jww ü uøÿ5 òÿu-òÿøÿ @òÿÀ @mÈ µ òÿòu-òÿøÿ _â*uíòÿøÿ5 öÿw-öÿâ_Ú*5 ôÿu-ôÿøÿ%@òÿ@môÿÀ @mÈ @òÿ@môÿÀ @mAöÿAmôÿÁ 1"„j @öÿ@môÿÀ ð „j_Ò*µ ôÿ×÷ z ÷ ÜÖNöÿfòÿæhDß –%5 ôÿu-ôÿøÿ2@òÿ@môÿÀ @mÈ &@öÿ@môÿÀ-@ÎzDß Ð@öÿ@môÿÀ-,@öÿ@môÿ7@öÿ@môÿÀ AòÿAmôÿÁ Amp„jµ ôÿÊ÷ î'5 öÿw-öÿì !Î�Dß 5 ôÿW-ôÿ @öÿ@môÿÀ „jæ’Dß Ö µ ôÿíΖDß õe öÿÛ@öÿ@íòÿµ öÿ_†)ΘDß Ðwj w X ÷ îÕβDß 6õðÿõøÿw-øÿl_(,Nøÿß ^,@øÿÀ pðÿ‚€õÿÿòÿ5 êÿ5 öÿw-öÿ. 5@öÿÀ ð L,@öÿÀ 5, Lòÿ%5 îÿ@öÿÀ 5 Lìÿuöÿôÿw-ôÿö @ôÿÀ 5, Lìÿµ îÿµ ôÿðu-îÿêÿuìÿòÿuîÿêÿµ öÿÇ@êÿÀeÿÿÀ 7`æ÷ (Õ5 öÿw-öÿ¦ !@öÿÀ ð L@öÿÀ 5, LòÿNöÿß T@öÿÀ  Lß Tõeðÿ÷e˜µ öÿÛ÷eŒÎÿÿß TNòÿß Tõeðÿµ øÿ_+÷ ZÚθDß 6õøÿw-øÿ6 @øÿÀ ‚€ß Tµ øÿò÷ ,Úwò w à  æ Ž æb}ß L–%@À ðb}õöÿõ öÿ65 öÿ5 øÿw-øÿÖ -@øÿÀ f…¦)@-5  fß þ5Ö 5þÿ2õÎfß þ5Ö 5þÿ%õζfß Â5Ö 5þÿNæREß º0Ö ÷ ú 1>1$11a1r81wR1@þÿNfþÿß ¢1Ö @þÿF…‡w œ*AWp ÁeRœuøÿ@øÿAøÿñAp�føÿÎe÷ ŒÀ†÷ ‚À ¶œæd÷ JÖ Àed=øÿ@øÿA� p� Nß 8À%x@øÿð@ÀeÒÿfß à5Ö À W-Òÿ( õ @øÿð@øÿðW/øÿc&føÿÎeæ2÷ ÄÖ =øÿ@øÿð2W/øÿÿÿ@øÿAÁ ÁeÊœp@=øÿ@øÿðw–w „AWp ÁeRœuøÿ@øÿð @øÿ¬ 2@øÿœ "Î& fß †6–%@øÿføÿfß ¼6–%Î@øÿ &fß †6–% Àå ‚À xD333ð2@øÿAøÿñ•Aœp�@øÿ0Š · úÀöÀ pøÿ¶œNß ¬5wÌf…¦)5 þÿW-þÿ Nþÿß º2µ þÿõNß Þ6wŠw Ž€w*iDÄeÀŸ i · i %ß R5ôwr7 i7 ühׯüh-· ôh· òh÷"äœ7 êh .÷✃Á4BÞ üJ@4d–4o�4xÆ4fÐ4en4c|4sL4l Ó•-÷ C r f÷ ðÿ€Àe0�‡•à •1à /Ábh Ò‹ƒ D~'ÂhEÂlE ÷ f v÷ öÿ€€LÀe0 9Àe�‡Â h÷ zÂh÷ p‚ƒà&æ Ä Ãmøg÷ ögß R5Ã~Ä Ž”ß R5à Î ß R5Ã~Ö „w¦þ7 Êg ÀŸÀg· ¼gÀå0 ‚· ²gWp `ñÀe0[ƒÄeÓ•?‡f…@÷ Žg÷†gwtgw :ìœ@�w .ìœ×-lgw @ìœ@7 Lgw¤f…w@gw &ìœ7 6gwŽf…@‰†wv wxf…w¦w¢‰pE†wVwZf…@wЉvE†w: w<f…wtwp‰zE†wwf…@wXwT‰€E†wøwüf…÷D@wm:‰†E†wÚÀ.wm(wÔf…w‰†E†w¸w  w´f…@wúwö‰ŒE†wŽ w�f…wà‰’Ew~f…@wÎwʉ–E†wXw\f…@‰Af… w,üÿ.Àw"(Àe w"Àew"@l€ …‡ß Ö –%Æe7¼gÀÿÿF…‡Õ @…&æ¦äHÅåF‚ƒ„…‡�¦B@$ü‚‚Y rÁ �dA! þ‚fA7‰œE‡  �…Ñÿÿ�±…fAñ &÷ €ø9�± �…&fA÷ �€…@Àe&7Ü wØ ·ãÒ @‰¾E±ñ‡€ ÷x gæ ‰ôž"‡ÎÚf‰ÄE‡@‰ôž‡ Àôž$ô$ttñ¤yîЋì¢é7˜Äf@‰Ö À�ºf‡�¬ ,OÜú_�dÿÿ ÿÿ}} NULL { %v }cdilsv’p8¾œDb int nterms %d; int nnonter %d; int nstate %d; char *yysterm[] { "%v", 0 }; char *yysnter[] { "%v", "%v" }; %d/%d terminals, %d/%d nonterminals %d/%d productions, %d/%d states %d S/R, %d R/R conflicts reported %d/%d working sets used memory: states,etc. %d/%d, parser %d/%d %d/%d distinct lookahead sets %d extra closures %d action entries %d action entries saved through merging %d states %d goto entries %d entries saved by goto default times(sec): %d/60 total time: %d/60 %v: %d %v: %d conflicts: %d S/R, %d R/R fatal error: , line %d int %s[] {0,%d,-1}; memory overflowy.tab.cy.output# $$error$accept int yyval 0; int *yypv; int yylval 0; yyactr(__np__){ %size not yet implemented%size must be followed by a numberbad precedence syntax, input %d²>¼>Ä>Ð>VWXYVWYUVXP þÒ . P ¶è P ´´œ¼& switch(__np__){ previous rule not terminatedterminal illegal on lhs of productionmissing :semicolon preceeds action case %d: break;rule not terminated before \\ } } \= must appear inside ruleillegal \= syntaxnonterminal %v illegal after \=\{ appears within a rulesyntax error, input %d&@,@4@<@VX)XUW‚ â l ‚ P „ Ì ‚ „   } } too many nonterminals, limit %dtoo many terminals, limit %dinvalid escape"'0\ntÞ Î À î   ° þ # define %s %d illegal /ä@ì@ò@ú@) ^&.V^FN^6>Fillegal character"%'\¨°rtermleftbinaryrightprecsize simpleinvalid use of '\' or '%', or bad reserved wordeof before \}yyvalyypv[%d]$EOF inside commentEOF in string or character constantaction does not terminate BB"B=>@$,Ðô@ÈbÖìHstate %d, pre-nonterminal %v states %d and %d have equal positions state %d %i same as %d %v accepterrorshift %dreduce %d . reduce %d . error %v -> %vtoo many lookahead setsnonterminal %v not defined! %v: %l %d too many statesputitem(%i), state %d yacc error--duplicate itemout of state space%d: %v %d, %v %d, working set overflow State %d, nolook = %d flag set! %i %l yyact %d: R/R conflict ( red'ns %d and %d ) on %v %d: S/R conflict(shift %d, red'n %d) on %vyypactyyr1yyr2off = %d, k = %d action table overflow %d no space in action tableyygoyypgo%v: gotos on %v nonterminal %v %d %d cgetc: %d not open to readcgetc: error on %dcputc: %d not opencputc: writing %dERROR copen: bad file %süÿðÿýÿøÿ‰‰‰‰‰Ÿ‰+‰‰‰¶w w&w øñ€Àw îñ…‰/devcrt0.oy0.oy1.oy2.oÂy3.oœy4.oê%getc.oŠ.ferror.o¤/fopen.oü0,û¢1ÿº2exit.o„3printf.o°3ffltpr.oH5putchr.oR5close.o¬5creat.oÂ5fstat.oà5open.oþ5read.o6sbrk.o>6seek.o†6times.oª6write.o¼6exit.oÞ6nargs.oè6retrn.o27rsave.o@7ssw.o`7nhsw.or7put.o†7ttyn.o8savr5$Þœ_main"_tbitset$ÊE_nolook#d8_nstate#f8_pstate$ÌE_apstate$ìH_tystate$ L_stsize#h8_memsiz#j8_mem0$,O_mem#l8_amem$„j_actsiz#n8_memact#p8_nprod#r8_prdptr$6_ttyn"8_fstat"à5_IEHfbak$Êœ_cclose"º2_close"¬5_exit"Þ6ndigit$âœpfloat"H5pscien"H5_putchar"R5_fout$ìœ_flush"–5putc"¨7flush"È7cerror"27_end$Ÿ_brk"f6_errno$òžmrsave"@7putw#¢Efcreat"†7ttyn"8QRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxZ..\.]ac^cal_comm`crefacrpostbdiffcfeddfindeformfgrepgmesghniceinohupjpasswdkpfelprofmroffnsaosleeppsnoqsplitrteestrttypouupostvwcwyaccrpwd# /* C compiler Copyright 1972 Bell Telephone Laboratories, Inc. */ #include "c0h.c" int isn 1; int peeksym -1; int line 1; int debug 0; int dimp 0; struct kwtab { char *kwname; int kwval; } kwtab[] { "int", INT, "char", CHAR, "float", FLOAT, "double", DOUBLE, "struct", STRUCT, "auto", AUTO, "extern", EXTERN, "static", STATIC, "register", REG, "goto", GOTO, "return", RETURN, "if", IF, "while", WHILE, "else", ELSE, "switch", SWITCH, "case", CASE, "break", BREAK, "continue", CONTIN, "do", DO, "default", DEFAULT, "for", FOR, "sizeof", SIZEOF, 0, 0, }; main(argc, argv) char *argv[]; { extern fin; int treespace[ossiz]; register char *sp, *np; register struct kwtab *ip; if(argc<4) { error("Arg count"); exit(1); } if((fin=open(argv[1],0))<0) { error("Can't find %s", argv[1]); exit(1); } if (fcreat(argv[2], ascbuf)<0 || fcreat(argv[3], binbuf)<0) { error("Can't create temp"); exit(1); } if (argc>4) proflg++; xdflg++; for (ip=kwtab; (np = ip->kwname); ip++) { for (sp = symbuf; sphclass = KEYWC; np->htype = ip->kwval; } xdflg = 0; treebase = treespace+10; putw(treebase, binbuf); while(!eof) { extdef(); blkend(); } fflush(ascbuf); fflush(binbuf); exit(nerror!=0); } struct hshtab *lookup() { int ihash; register struct hshtab *rp; register char *sp, *np; ihash = 0; for (sp=symbuf; spname)) { for (sp=symbuf; sp= &hshtab[hshsiz]) rp = hshtab; } if(++hshused >= hshsiz) { error("Symbol table overflow"); exit(1); } rp->hclass = 0; rp->htype = 0; rp->hoffset = 0; rp->dimp = 0; sp = symbuf; if (xdflg) *sp =| 0200; for (np=rp->name; sp=0) { c = peeksym; peeksym = -1; if (c==NAME) mosflg = 0; return(c); } if (peekc) { c = peekc; peekc = 0; } else if (eof) return(EOF); else c = getchar(); loop: switch(ctab[c]) { case INSERT: /* ignore newlines */ inhdr = 1; c = getchar(); goto loop; case NEWLN: if (!inhdr) line++; inhdr = 0; case SPACE: c = getchar(); goto loop; case EOF: eof++; return(0); case PLUS: return(subseq(c,PLUS,INCBEF)); case MINUS: return(subseq(c,subseq('>',MINUS,ARROW),DECBEF)); case ASSIGN: if (subseq(' ',0,1)) return(ASSIGN); c = symbol(); if (c>=PLUS && c<=EXOR) { if (peekc==0) peekc = getchar(); if (ctab[peekc] != SPACE && (c==MINUS || c==AND || c==TIMES)) { error("Warning: assignment understood"); nerror--; } return(c+30); } if (c==ASSIGN) return(EQUAL); peeksym = c; return(ASSIGN); case LESS: if (subseq(c,0,1)) return(LSHIFT); return(subseq('=',LESS,LESSEQ)); case GREAT: if (subseq(c,0,1)) return(RSHIFT); return(subseq('=',GREAT,GREATEQ)); case EXCLA: return(subseq('=',EXCLA,NEQUAL)); case DIVIDE: if (subseq('*',1,0)) return(DIVIDE); com: c = getchar(); com1: switch(c) { case '\0': eof++; error("Nonterminated comment"); return(0); case '\n': if (!inhdr) line++; inhdr = 0; goto com; case 001: /* SOH, insert marker */ inhdr++; default: goto com; case '*': c = getchar(); if (c!='/') goto com1; } c = getchar(); goto loop; case PERIOD: case DIGIT: peekc = c; if ((c=getnum(c=='0'?8:10)) == FCON) cval = isn++; return(c); case DQUOTE: return(getstr()); case SQUOTE: return(getcc()); case LETTER: sp = symbuf; if (mosflg) { *sp++ = '.'; mosflg = 0; } while(ctab[c]==LETTER || ctab[c]==DIGIT) { if (sphclass==KEYWC) { if (csym->htype==SIZEOF) return(SIZEOF); cval = csym->htype; return(KEYW); } return(NAME); case AND: return(subseq('&', AND, LOGAND)); case OR: return(subseq('|', OR, LOGOR)); case UNKN: error("Unknown character"); c = getchar(); goto loop; } return(ctab[c]); } subseq(c,a,b) { if (!peekc) peekc = getchar(); if (peekc != c) return(a); peekc = 0; return(b); } getstr() { register int c; register char *t, *d; nchstr = 1; t = ".text"; d = ".data"; printf("%s\nL%d:.byte ", (strflg?t:d), cval=isn++); while((c=mapch('"')) >= 0) { printf("0%o,", c); nchstr++; } printf("0\n.even\n%s\n", (strflg?d:t)); return(STRING); } getcc() { register int c, cc; register char *ccp; cval = 0; ccp = &cval; cc = 0; while((c=mapch('\'')) >= 0) if(cc++ < ncpw) *ccp++ = c; if(cc>ncpw) error("Long character constant"); return(CON); } mapch(ac) { register int a, c, n; static mpeek; c = ac; if (mpeek) { a = mpeek; mpeek = 0; } else a = getchar(); loop: if (a==c) return(-1); switch(a) { case '\n': case '\0': error("Nonterminated string"); peekc = a; return(-1); case '\\': switch (a=getchar()) { case 't': return('\t'); case 'n': return('\n'); case 'b': return('\b'); case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': n = 0; while (n<0100 && '0'<=a && a<='7') { n =<< 3; n =+ a-'0'; a = getchar(); } mpeek = a; return(n); case 'r': return('\r'); case '\n': if (!inhdr) line++; inhdr = 0; a = getchar(); goto loop; } } return(a); } tree() { #define SEOF 200 #define SSIZE 20 int *op, opst[SSIZE], *pp, prst[SSIZE]; register int andflg, o; register struct hshtab *cs; int p, ps, os, *np; osleft = ossiz; space = treebase; op = opst; pp = prst; cp = cmst; *op = SEOF; *pp = 06; andflg = 0; advanc: switch (o=symbol()) { case NAME: cs = csym; if (cs->hclass==0 && cs->htype==0) if(nextchar()=='(') { /* set function */ cs->hclass = EXTERN; cs->htype = FUNC; } else if (initflg) cs->hclass = EXTERN; else { /* set label */ cs->htype = ARRAY; if (cs->hoffset==0) cs->hoffset = isn++; } *cp++ = block(2,NAME,cs->htype,cs->hdimp, cs->hclass,0); if (cs->hclass==EXTERN) { np = cs->name; for (o=0; o<4; o++) { pblock(*np); if (((*np++)&~0177) == 0) break; } } else pblock(cs->hoffset); goto tand; case FCON: if (!initflg) printf(".data\nL%d:0%o;0%o;0%o;0%o\n.text\n",cval,fcval); case CON: case SFCON: *cp++ = block(1,o,(o==CON?INT:DOUBLE),0,cval); goto tand; /* fake a static char array */ case STRING: *cp++ = block(3, NAME, ARRAY+CHAR,0,STATIC,0,cval); tand: if(cp>=cmst+cmsiz) { error("Expression overflow"); exit(1); } if (andflg) goto syntax; andflg = 1; goto advanc; case INCBEF: case DECBEF: if (andflg) o =+ 2; goto oponst; case COMPL: case EXCLA: case SIZEOF: if (andflg) goto syntax; goto oponst; case MINUS: if (!andflg) { if ((peeksym=symbol())==FCON) { fcval = - fcval; goto advanc; } if (peeksym==SFCON) { fcval = - fcval; cval =^ 0100000; goto advanc; } o = NEG; } andflg = 0; goto oponst; case AND: case TIMES: if (andflg) andflg = 0; else if(o==AND) o = AMPER; else o = STAR; goto oponst; case LPARN: if (andflg) { o = symbol(); if (o==RPARN) o = MCALL; else { peeksym = o; o = CALL; andflg = 0; } } goto oponst; case RBRACK: case RPARN: if (!andflg) goto syntax; goto oponst; case DOT: case ARROW: mosflg++; break; } /* binaries */ if (!andflg) goto syntax; andflg = 0; oponst: p = (opdope[o]>>9) & 077; if ((o==COMMA || o==COLON) && initflg) p = 05; opon1: ps = *pp; if (p>ps || p==ps && (opdope[o]&RASSOC)!=0) { switch (o) { case INCAFT: case DECAFT: p = 37; break; case LPARN: case LBRACK: case CALL: p = 04; } if(op>=opst+SSIZE) { error("expression overflow"); exit(1); } *++op = o; *++pp = p; goto advanc; } --pp; switch (os = *op--) { case SEOF: peeksym = o; build(0); /* flush conversions */ return(*--cp); case CALL: if (o!=RPARN) goto syntax; build(os); goto advanc; case MCALL: *cp++ = block(0,0,0,0); /* 0 arg call */ os = CALL; goto fbuild; case LPARN: if (o!=RPARN) goto syntax; goto advanc; case LBRACK: if (o!=RBRACK) goto syntax; build(LBRACK); goto advanc; } fbuild: build(os); goto opon1; syntax: error("Expression syntax"); errflush(o); return(0); } declare(askw, tkw, offset, elsize) { register int o; register int skw; skw = askw; do { offset =+ decl1(skw, tkw, offset, elsize); if (xdflg && skw!=MOS) return; } while ((o=symbol()) == COMMA); if (o==SEMI || o==RPARN && skw==ARG1) return(offset); decsyn(o); } decl1(askw, tkw, offset, elsize) { int t1, chkoff; register int type, skw; register struct hshtab *dsym; skw = askw; chkoff = 0; mosflg = skw==MOS; if ((peeksym=symbol())==SEMI || peeksym==RPARN) return(0); if ((t1=getype()) < 0) goto syntax; type = 0; do type = type<<2 | (t1 & 030); while (((t1=>>2) & 030)!=0); type =| tkw; dsym = defsym; if (!(dsym->hclass==0 || (skw==ARG && dsym->hclass==ARG1) || (skw==EXTERN && dsym->hclass==EXTERN && dsym->htype==type))) if (skw==MOS && dsym->hclass==MOS && dsym->htype==type) chkoff = 1; else { redec(); goto syntax; } dsym->htype = type; if (skw) dsym->hclass = skw; if (skw==ARG1) { if (paraml==0) paraml = dsym; else parame->hoffset = dsym; parame = dsym; } if (elsize && ((type&07)==RSTRUCT || (type&07)==STRUCT)) { dsym->lenp = dimp; chkdim(); dimtab[dimp++] = elsize; } elsize = 0; if (skw==MOS) { elsize = length(dsym); if ((offset&1)!=0 && elsize!=1) { offset++; elsize++; } if (chkoff && dsym->hoffset != offset) redec(); dsym->hoffset = offset; } if ((dsym->htype&030)==FUNC) { if (dsym->hclass!=EXTERN && dsym->hclass!=AUTO) error("Bad function"); dsym->hclass = EXTERN; } if (dsym->hclass==AUTO) { autolen =+ rlength(dsym); dsym->hoffset = -autolen; } else if (dsym->hclass==STATIC) { dsym->hoffset = isn; printf(".bss\nL%d:.=.+%d.\n.text\n", isn++, rlength(dsym)); } else if (dsym->hclass==REG) { if ((type&07)>CHAR && (type&030)==0 || (type&030)>PTR || regvar<3) error("Bad register %o", type); dsym->hoffset = --regvar; } syntax: return(elsize); } getype() { register int o, type; register struct hshtab *ds; switch(o=symbol()) { case TIMES: return(getype()<<2 | PTR); case LPARN: type = getype(); if ((o=symbol()) != RPARN) goto syntax; goto getf; case NAME: defsym = ds = csym; type = 0; ds->ssp = dimp; getf: switch(o=symbol()) { case LPARN: if (xdflg) { xdflg = 0; ds = defsym; declare(ARG1, 0, 0, 0); defsym = ds; xdflg++; } else if ((o=symbol()) != RPARN) goto syntax; type = type<<2 | FUNC; goto getf; case LBRACK: if ((o=symbol()) != RBRACK) { peeksym = o; cval = conexp(); for (o=ds->ssp&0377; oname); } {|}~€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘ô´intcharfloatdoublestructautoexternstaticregistergotoreturnifwhileelseswitchcasebreakcontinuedodefaultforsizeofw hÿêW-ÎZß Îß  @&ß Ö 7:ÿ @ædß Ö Îß Î@&ß Ö À Î@&ß Ö À Îrß Îß W-· Öþ· ÒþÂþƒÄ!†Ô”ûà ù÷ d˳Âeê7 žþ@Àe&ü7”þÎæŒþß Ö ÷ ‚þ÷ |þ÷ xþøÎß Îß ÷ bþ Îß wPþw Lþ5 øÿÃ× †À”ÀE€ÿ5`øÿ÷AøÿÀ rÈWtÁeDÀeÈ‹Ã× 6†€”ÀE€ÿÁ” öÄeÀ%€ è‚Äå· âýÀÞýÀ%ÈÎ„ß Îß 4 4 4 Ã÷ ²ýËÕ€Àe× †Ò”ûw”ýw �ý÷ € Äz ÷ÿÿt !7 tý_r÷ jýÄdý7 `ý ÷ Zý _r÷Lý÷ Hý�·>ýöy.÷ 2ý· $ 7 (ýí· "ý _rÎæ(&ß v–%_rÎæ2æ)æ>÷ jÆe&&ß v–%_rÎ& æ ß v–%À ÀP_r÷ .ÿ!(%!1"÷ °ü÷ ªü7¦üÀ¢üœÀ%~!)!/!*Îšß ÷ züÀe_r!PÀ<_r7T ÀP_rÎ& &ß v–%À À._rÎ>æ?æ=ß v–%_rÎ& &ß v–%À À-_rÎ@æAæ=ß v–%_rÎ=æ"æ=ß v–%_r ææ*ß v–%À À+_r· Àû뼧 _r÷ ®û·   7 ¤û÷  ûÁÐ7l  þy· ˆûñ÷ ‚û!/î_´7rû!0ÎÎ ß À%ÀF · B 7Jû\÷ æY÷ TVÃ÷ 2ûÓ•.7 (û­{­|× †‘÷ ûð× †Šû7úú÷ ¦ü7òú×/îú,À'ÀØú7ÒúÀÀÎ5æ/æ&ß v–%Î6æ0æ|ß v–%Îäß _´�wŠúw †ú÷ €ú÷ zú7vúõ-rú@7 dú@w\úw Xú÷PúÃ\ÂbÀ8 · 4 7<ú÷ 6úæ¦æhß –%Î"ß X ævß Ö · úñ÷ úŽÎæ|ß Ö Àwèùw äù7 Þù Î'ß XÀƒ À%õ‘ó× Îˆß Àw¨ùw ¤ùC÷ ž _Ä” 7 � _Áþ7‚  þyÎ ß 7jùÀÿÿ?÷ `ù·Zù¶y À 3À 0À- — @!0!7 €tÀeÐÿ`÷ ùë7 €À ÷ ù· ô7 øø÷ ôø!³Àÿÿwâøw Þø^÷ôÖø÷ÒøÐø@ÀeÐÿ5øÿ@Àe¦ÿ5Îÿ÷¶øýÈøÿýÎÿ ÷ ûÀå -ƒ_® À xr¢ ‚ ¢ ® ® ® ® ® ® ® ® ® ® ® ® Θ¼|˜® ® ® ®    ® ®  ® ® ®  ª ® " j ® ® ® ® j ® ® ª Â.øÊ ò ÷ øÀ%(Êò÷ øÊ òò Àæ· â2 ¦¦¦ææß Æe ÁÊ÷÷eÄ÷ —"€Àe5žÿ × INžÿß @žÿõežÿÈ5€ÿ=ƒ ïŽß 6÷ €÷ 7õz÷&øæt÷æ÷ l÷Æe Îd÷& × & æææß ÆeÎ@÷& æ& æææß Æe Á ÷÷e÷ ×-÷P‡Î0ß Îß Ä _ú Ä_XÄ RÃeOÄ M_ú Ä H÷ Bù7ÈÀ%7õÈöÀñ7øÂö_X×-° 7õ²öÀñ7ø¬öÀ€7x¤öÀ ö_XÃ%&Ä #× /Ã#Ã$Ä ÷ âø× Ãe÷ZÃd Ä _ú · RöÄ _ú  ÀÀ t÷ÿÀEÀÿ5¤ÿ× × ÷ $öõ¤ÿuÎÿ¢ÿu-¤ÿ¢ÿ u-¤ÿ¢ÿ4ÀÀ ð5€.ÀÁD7> þy õ%¤ÿ@øÿAÁeøÿ ‡Î\ß Îß õeøÿ@øÿÈõeÎÿ@ÎÿH¤ÿ_Xõ¤ÿÞõåÎÿ@øÿõåøÿ5 ÿÁp7ú þy ÷j ß ÷åhõÀdõ5× *N ÿß _X & & & ß ÆeÁ:õ÷e4õ õd ÿN ÿß ƒ×  _X× Îß _XÎˆß Îß wòôw îôCN ffæß l Æe5`÷ Êô× ÷ *÷À% ç!!× @ß ¾w”ôw �ôC5 öÿ×  À7tô÷ Üö7bÀ%  _t ÷ Î5øÿ_p  tAøÿÁEçÿ@P@øÿtþÿ5øÿÀ5îD]ÂôÊ × —" × —"„, × —"„,õöÿ2à Ê× ÷ Ðó·Êó÷ œ_p À¼ó°·´óõ ÀEøÿÀ%ÀEøÿÀ% ò�Ž÷ ŒóÀ„· €À p 5 × Žß 5 õ5 µ µ õ öÿµ,÷ r€ÀEçÿÀ% —"—"Îšß Ê—" Žß 7`óÀó 4—"òæŽß æØ· Ôæ¨ß –%"—"ÀEøÿÀ%Ä5 ÀEçÿÀ%×-¬òæÀß Ö ÷ ˜òÀ”ò2@ wˆòw „ò÷ êôÁÐ7J þy÷ àÿtÀU_º÷ Ðÿ÷ ¾ôÀ% _°ÀBò7<ò ò�2÷ œôÀå f‚À xâ ,¨è ÷ ò7 ò ò & & æ ß  Æe·ôñ· ðñ÷ VôÀ%IÀtÀUÐ÷ <ôÀ%)7º÷ Àñ7¼ñ€œÀEÿ7!ª Á fÎeÁžñ~p^„ ñÀŒ· ˆÀ ð†ñ÷ ìóÀ% Àn· jÀ ðÀtÀU’7JÀß ¾ÀÿÿwBñw >ñÎàß Nß w(ñw $ñÎñÎeæôß Ö w ñÿÿ  &.6@ F N R X^flr|€ˆŒArg countCan't find %sCan't create tempSymbol table overflowWarning: assignment understoodNonterminated comment *<tNz\Unknown character .   nÚäNŠŠnøÚÀÊn º´n :ª®Æb.text.data%s L%d:.byte 0%o,0 .even %s Long character constantNonterminated string¾ÈÒÞ& $&ÀÀÀôúÀÀÀÀÀº´® \ŠŠœ.data L%d:0%o;0%o;0%o;0%o .text Expression overflow !dZ Z   Z  expression overflowdeÈè Þ   ² ˆ Ô Expression syntaxBad function.bss L%d:.=.+%d. .text Bad register %o*¤ º ” °Declaration syntax%.8s redeclared‰¨¸ÈÙ¨¸¨ø˜ø¨¸¹©88©i˜i˜IÉÙ¨è˜è ¸)‰88X88XXII¨¸8©8)‰Y999IyÉ (Ù yyI9É 99(¨ I¨yyÉ yÉ 9è Ù8YY((8É 89ÉÉÉÙ¨()‰9É 999)‰ùÙ9X X ù9X )‰Ùب)‰¨9É Ù É yyÉ )‰IiiˆyÉÉi(yyhhiéÙY Ù(Ù(yyyˆ¨¸ééééÙÙYi¨¸yy(yy¨()‰©)‰Y‰))Yˆx¨ØØX ɨÉÉ)‰É‰©©‰‰©YÙˆÙÙˆˆ)‰¨()‰‰¨)_cvtab _opdope _ctab _symbuf _hshused _hshtab € _space _cp _cmst P_isn#ô_swtab _swp _contlab _brklab _retlab _deflab _nauto _autolen _peeksym#ö_peekc _eof _line#ø_treebas _debug#ú_defsym _funcsym _xdflg _proflg _csym _cval _fcval _nchstr _nerror _paraml _parame _strflg _osleft _mosflg _initflg _inhdr _dimtab È_binbuf _ascbuf _dimp#ü_regvar _kwtab#þL1L2L3 L4L5L6 L7&L8.L96L10@L11FL12NL13RL14XL15^L16fL17lL18rL19|L20€L21ˆL22Œ_main"”L25ZL27dL29rrsave L24²_error _exit _open _fin L26â_fcreat L10000L28L30*L312L32^L34:L35H_lookup"°L33X_putw L37zL38Š_extdef _blkend _fflush L10001¤L10002¨L23¬rretrn L49„L40¾L41ÐL42äL43L44ôL20000fL46L488L50TL51\L52f_symbol"lL74šL88ºL10005ÐL10006ØL87<L91tL89NL93zL83\L111äL10012öL10013L10014L10015L10016 L10017.L112nL66ÚL67äL109NL69L94ŠL95ŠL68øL78ÚL98ÀL63ÊL80 L97ºL20004´L81 L108:L76ªL62®L99ÆL110bL54’L55ŒL53rL56¢L57ºL58´L20006´L20008´_getchar hsw L64Ô_subseq"vL70:L71�L72ZL73†L10003zL75žL77ÄL79ôL82\L90XL84bL10007lL10008šL10009ž_getnum L96¶_getstr"¤_getcc"L100ØL101ØL10010èL102øL103ðL104øL105L1064L107$L114ŠL115˜L113 L117\L118bL119hL122vL123|L10018ÐL10019Ò_printf L120Ü_mapch"XL121úL10020L10021L129ˆL125(L126BL128PL140 L10023¶L10024¾L10025ÈL10026ÒL10027ÞL136L147ÀL150ÀL153ÀL157ôL158úL148ÀL151ÀL154ÀL149ÀL152ÀL146ºL145´L144®L10029þL10030L139ŠL138ŠL141œL161L131L132L133L135xL10031‚L130L155ÂL156ìL159_tree"L181L1860L10038DL10039NL222Z L221Z L219 L220 L223Z L224 L226\L10042pL10043zL234è L233Þ L230  L231² L229ˆ L235Ô L236ˆL163XL213® L209¢ L205‚ L210¢ L166ÎL182˜L184¼L179|L183˜L194 L188 L189 L193 L192 L211ª L195" L200j L199j L212ª L167_nextcha L168òL169L170þL171L172_block L173rL174PL178è_pblock L176nL180˜L10032¨L10033¬L20013ÜL185 L187ú L191¸ L20014¶ L197B L198d L201p L20015¶ L203| L207˜ L20016¶ L10035Ø L214ä L215ä L10036 L216b L10040 L217 L225< L10044€ _build L162 _errflus _declare" L240 _decl1"l L10045> L237h L238> L239J L10046\ L241b _decsyn"¾L261šL265¨L269ÀL10047„ L10048ˆ L10049  L243¦ L242t _getype"x L244p L247¶ L245È L246Ú L248 L10050ò L10051 L2498 L251& L252L L253@ L254H _redec"ØL255„ L10052j _chkdim L256Æ _length L257® L258À L259ì L260è L262 _rlength L20017l L264, L266p L267p L10054D L10053X L268d L10057ÐL10058ÖL274¤ L277º L273” L290°L10059Œ L270ºL276Ì L275°L289¨L283,L280è L281L282L284Š_conexp L285NL286lL287hL288šL292àL291ÔL294ôL293ðfltused “”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®# /* C compiler Copyright 1972 Bell Telephone Laboratories, Inc. */ #include "c0h.c" build(op) { register int t1; int t2, t3, t; struct tnode *p3, *disarray(); register struct tnode *p1, *p2; int d, dope, leftc, cvn, pcvn; if (op==LBRACK) { build(PLUS); op = STAR; } dope = opdope[op]; if ((dope&BINARY)!=0) { p2 = chkfun(disarray(*--cp)); t2 = p2->type; } p1 = *--cp; if (op==SIZEOF) { t1 = length(p1); p1->op = CON; p1->type = INT; p1->dimp = 0; p1->value = t1; *cp++ = p1; return; } if (op!=AMPER) { p1 = disarray(p1); if (op!=CALL) p1 = chkfun(p1); } t1 = p1->type; pcvn = 0; switch (op) { /* end of expression */ case 0: *cp++ = p1; return; /* no-conversion operators */ case COMMA: case LOGAND: case LOGOR: *cp++ = block(2, op, 0, 0, p1, p2); return; case QUEST: if (p2->op!=COLON) error("Illegal conditional"); t = t2; goto nocv; case CALL: if ((t1&030) != FUNC) error("Call of non-function"); *cp++ = block(2,CALL,decref(t1),p1->dimp,p1,p2); return; case STAR: if (p1->op==AMPER || p1->op==AMPERA) { *cp++ = p1->tr1; return; } if ((t1&030) == FUNC) error("Illegal indirection"); *cp++ = block(1,STAR,decref(t1),p1->dimp,p1); return; case AMPER: if (p1->op==STAR) { p1->tr1->dimp = p1->dimp; p1->tr1->type = incref(t1); *cp++ = p1->tr1; return; } if (p1->op==NAME) { if (p1->class==AUTO) op = AMPERA; *cp++ = block(1,op,incref(t1),p1->dimp,p1); return; } error("Illegal lvalue"); break; case INCBEF: case DECBEF: case INCAFT: case DECAFT: chklval(p1); *cp++ = block(2,op,t1,p1->dimp,p1,plength(p1)); return; case ARROW: *cp++ = p1; chkw(p1); p1->type = PTR+STRUCT; build(STAR); p1 = *--cp; case DOT: if (p2->op!=NAME || p2->class!=MOS) error("Illegal structure ref"); *cp++ = p1; t = t2; if ((t&030) == ARRAY) { t = decref(t); p2->ssp++; } setype(p1, t, p2->dimp); build(AMPER); *cp++ = block(1,CON,7,0,p2->nloc); build(PLUS); if ((t2&030) != ARRAY) build(STAR); return; } if ((dope&LVALUE)!=0) chklval(p1); if ((dope&LWORD)!=0) chkw(p1); if ((dope&RWORD)!=0) chkw(p2); if ((dope&BINARY)==0) { if (!fold(op, p1, 0)) *cp++ = block(1,op,t1,p1->dimp,p1); return; } if (t2==7) { t = t1; p2->type = 0; /* no int cv for struct */ t2 = 0; goto nocv; } cvn = cvtab[11*lintyp(t1)+lintyp(t2)]; leftc = cvn&0100; t = leftc? t2:t1; if (op==ASSIGN && t1!=STRUCT && t2!=STRUCT) { t = t1; if (leftc || cvn!=3) /* int -> float */ goto nocv; } if (cvn =& 077) { if (op==COLON && t1>=PTR && t1==t2) goto nocv; if (cvn==077) { if ((dope&RELAT)==0 || t1float */ leftc = 0; cvn = 4; t = t1; goto rcvt; } else goto illcv; } p1 = convert(p1, t, cvn, plength(p2)); } else { rcvt: p2 = convert(p2, t, cvn, plength(p1)); } nocv:; } if ((dope&RELAT)!=0) { if (op>NEQUAL && (t1>=PTR || t2>=PTR)) op =+ 4; /* ptr relation */ t = 0; /* relational is integer */ } if (fold(op, p1, p2)) return; *cp++ = block(2,op,t,(p1->dimp==0? p2:p1)->dimp,p1,p2); if (pcvn) { p1 = *--cp; *cp++ = convert(p1, 0, pcvn, plength(p1->tr1)); } } convert(p, t, cvn, len) struct tnode *p; { register int n; switch(cvn) { /* int -> ptr */ case 1: n = TIMES; goto md; /* ptr -> int */ case 2: n = DIVIDE; md: return(block(2, n, t, 0, p, block(1, CON, 0, 0, len))); /* int -> double */ case 3: n = ITOF; goto di; /* double -> int */ case 4: n = FTOI; di: return(block(1, n, t, 0, p)); } error("C error-- convert"); return(p); } setype(ap, at, adimptr) struct tnode *ap; { register struct tnode *p; register t, dimptr; p = ap; t = at; dimptr = adimptr; p->type = t; if (dimptr != -1) p->dimp = dimptr; switch(p->op) { case AMPERA: case AMPER: setype(p->tr1, decref(t), dimptr); return; case STAR: setype(p->tr1, incref(t), dimptr); return; case PLUS: case MINUS: setype(p->tr1, t, dimptr); } } chkfun(ap) struct tnode *ap; { register struct tnode *p; register int t; p = ap; if (((t = p->type)&030)==FUNC) return(block(1,AMPER,incref(t),p->dimp,p)); return(p); } struct tnode *disarray(ap) struct tnode *ap; { register int t; register struct tnode *p; p = ap; /* check array & not MOS */ if (((t = p->type)&030)!=ARRAY || p->op==NAME&&p->class==MOS) return(p); p->ssp++; *cp++ = p; setype(p, decref(t), -1); build(AMPER); return(*--cp); } chkw(p) struct tnode *p; { register int t; if ((t=p->type)>CHAR && top!=NAME && p->op!=STAR) error("Lvalue required"); } fold(op, ap1, ap2) struct tnode *ap1, *ap2; { register struct tnode *p1; register int v1, v2; p1 = ap1; if (p1->op!=CON || (ap2!=0 && ap2->op!=CON)) return(0); v1 = p1->value; v2 = ap2->value; switch (op) { case PLUS: v1 =+ v2; break; case MINUS: v1 =- v2; break; case TIMES: v1 =* v2; break; case DIVIDE: v1 =/ v2; break; case MOD: v1 =% v2; break; case AND: v1 =& v2; break; case OR: v1 =| v2; break; case EXOR: v1 =^ v2; break; case NEG: v1 = - v1; break; case COMPL: v1 = ~ v1; break; case LSHIFT: v1 =<< v2; break; case RSHIFT: v1 =>> v2; break; default: return(0); } p1->value = v1; *cp++ = p1; return(1); } conexp() { register struct tnode *t; initflg++; if (t = tree()) if (t->op != CON) error("Constant required"); initflg--; return(t->value); } °±²³´µ¶·¸¹º»¼r 2� w üÿW-Î(ß õ$@À 5îÿõ5îÿ÷åÊÿÀÆÿß ¸ß vµøÿ÷å¬ÿÀ¨ÿW-Îß Ë3 3 3À‚ÿ÷e|ÿÈ_dW-# Îß ¸W-dÎß vÄ5 èÿ@·FÿÖ y$À:ÿ÷e4ÿÈ_dŽæ& & fæß ôÆe _X—"Îr ß Žuøÿôÿ_ ÀEçÿÀ%Ά ß ŽŽææ&÷ ØþÖ &ædæß ôÆe _X×"#×" À°þ÷eªþÈ_dÀEçÿÀ%Μ ß ŽÎæ&÷ ‚þÖ &æ$æß ôÆe_X×"$Àðß Á1ÀHþ÷eBþÈ_d×"×,õÎæ&÷ þÖ &fæß ôÆe_Xΰ ß Žõ5îÿÎß Tõ5îÿÎß "õ5 îÿŽß "õ5îÿ_n æfß v–%À _dÎæ&fæß ôÆe_XÎß TÎß ææ&fæß ôÆe _XÀdý÷e^ýÈÎß "ó Î$ß ÷åBýÀ>ý—"—,ÎÀ ß ŽÀ"ý÷eýÈuøÿôÿ@ôÿÀEçÿÀ%Nôÿß 5ôÿ²ŠŽfôÿæß ü–%Î#ß Ž & æææß ôÆeÁÀü÷eºü Î(ß @øÿÀEçÿÀ%_dÎ$ß _dW-øÿ5ôÿ2 5 øÿ_ Nøÿß J&&÷ ´Ö Wp �eAœuêÿ@ÀE¿ÿ5ìÿÀ @øÿ5ôÿW-P!W-øÿ 5ôÿõ ìÿ_ W-êÿYõEÀÿêÿUW-!5!øÿKW-êÿ?õ5îÿ!W-øÿ<Î( ß Ž7W-êÿ5 ôÿõ5îÿ5 êÿ*W-)êuêÿèÿ5 êÿ õ ìÿõ5îÿ=W-êÿÙ5 ìÿõêÿ5ôÿÎß fêÿfôÿ¦ß hÆeõ5îÿW-= !W-øÿõe5 ôÿŽæfß v–%À EŽæó €Žß fêÿfôÿæß hÆeÍÀ&fôÿfæß ôÆe ÁÜú÷eÖú õ èÿ÷åÈúÀÄúÎß fèÿ& æß hÆeÁ¤ú÷ežú w˜úw ”ú@Àå 8‚À x‚Š�ÈÎÄ*Ä+N & & ææß ôÆef& f&æß ôÆe Ä3Ä4N& f&æß ôÆeÎ< ß Ž@wúw úDCBô— ÿÿ´Àå %‚À x.HrrrrrHVrrrddŽæ÷ °ùÖ & Žæ÷ ¢ùÖ &Žæ&ß ü–%wŠùw †ùDÀEçÿÀ%&æ÷ dùÖ &æ#æß ôÆewHùw DùCÀÀEçÿÀ%×"×,À³ŠÀù÷eùÈÎÿÿ&÷ ùÖ &æß ü–%Î#ß ÷åèøÀäøwÞøw Úø@À%!ÎN ß Žw¶øw ²øD!ÀE‡ÿÀ%hÀ ÀEàÿ!ÀEøÿÀeÀ wrøw nø· høÎß Ä�\ø÷•VøÎRøæh ß Ö Nff f fffß Æe Î ß Îß 7‘øw øw ø@ÀeõeÃô÷@õ À ß &öÀwÚ÷w Ö÷ÀÐ÷÷eÊ÷H÷ Â÷În ß ŽÎß w¬÷w ¨÷D##$΂ ß ŽwŠ÷w †÷D#]õ W/U@@Àå% H‚À x¶ $ @ Ðèìôþ4 ,    ƒ`ôÀ&÷÷e ÷À-ƒàóÁBpCïÁÀ rêÁÀ rCå€@ @áƒP߀xÀÛÀ ×À@ ÓÀtϦÀ tÉ wºöw ¶ö· °ö÷ ¬ö#Î’ ß Ž÷ –öwŽöIllegal conditionalCall of non-functionIllegal indirectionIllegal lvalueIllegal structure refà ê ò ü      Ân@ÒnÒn˜Òîn–ÄIllegal conversionC error-- convertInteger operand required%d: Expression overflowLvalue requiredConstant required™yyyyøyy9yy©yy©yyØyyyyyy¨yyØØyyyyØyy™™™™©™™™™yy©yy™™™™™™ ¨ˆ ©©Y˜ ˜ ¨ ¨ˆ ©™™i™™iiI ™™™™yy™™i™ i™_cvtab _opdope _ctab _symbuf _hshused _hshtab € _space _cp _cmst P_isn _swtab _swp _contlab _brklab _retlab _deflab _nauto _autolen _peeksym _peekc _eof _line _treebas _debug _defsym _funcsym _xdflg _proflg _csym _cval _fcval _nchstr _nerror _paraml _parame _strflg _osleft _mosflg _initflg _inhdr _dimtab È_binbuf _ascbuf _dimp _regvar _build"L15r L19† L23œ L28° L36À L10003Ö L10004à L10005ê L10006ò L10007ü L10008 L39L9ÂL31nL20@L17L10ÒL32nL11ÒL29nL33˜L12ÒL13îL30nL24–L34ÄL51( rsave L2L3N_disarra"¸_chkfun"vL4Š_length L1dL5ªL6ªhsw _block"ôL20002XL14ü_error"ŽL16 L18_decref L20005XL10000LL21^L22rL20008XL25Æ_incref L26þL27ÚL20011XL40_chklval"TL41"_chkw""L420L43n_fold"vL20014X_plength L20017XL10001ÒL35ÚL37 _setype"üL45†_lintyp"JL10009¼L10010¾L46îL47 L10011 L482L10012(L50(L52`L53LL54„L55è_convert"hL59 L60ÈL61ÄL10013¾L10014L10015L62drretrn L73< L72ìL66ŠL68�L69ÈL71ÎL67”L63øL70ÒL75L83rL78HL79HL80VL81dL82dL20020hL20023hL85²L84´L10018àL87äL86L90N L88FL92^L91ŠL93pL94†L96h _fflush _printf _putchar L95ðL98 L99 _pblock"&L102n L101P_exit L100PL105‚ L104rL103rL20024@ L107–L122@ L118 L119$ L110ÐL111èL112ìL113ôL114þL1214 L120, L115 L116 L117 L108ÒL106B _conexp"F L126’ _tree L124f L125f ¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍ# /* C compiler Copyright 1972 Bell Telephone Laboratories, Inc. */ #include "c0h.c" extdef() { register o, width; int type, elsize, nel; char *cs; register struct hshtab *ds; if(((o=symbol())==EOF) || o==SEMI) return; type = 0; xdflg++; xxx: if (o==KEYW) { if (cval==EXTERN) { o = symbol(); goto xxx; } if ((type=cval)>STRUCT) goto syntax; /* not type */ elsize = 0; if (type==STRUCT) { elsize = strdec(&type, 0); if ((peeksym=symbol())!=KEYW) blkhed(); } } else { if (o!=NAME) goto syntax; peeksym = o; } do { defsym = 0; strflg = 1; decl1(EXTERN, type&07, 0, elsize); if ((ds=defsym)==0) return; cs = ds->name; funcsym = ds; *cs =| 0200; /* non-deletable */ printf(".globl _%.8s\n", cs); xdflg = 0; type = ds->type; if ((type&030)==FUNC && ((peeksym=symbol())==LBRACE || peeksym==KEYW)) { cfunc(cs); return; } nel = 1; while ((ds->type&030)==ARRAY) { nel = dimtab[ds->ssp&0377]; ds->type = decref(ds->type); } width = length(ds); if (ds->type==STRUCT) { nel =* width/2; width = 2; } ds->type = type; cinit(cs, type, nel, width); } while ((o=symbol())==COMMA); if (o==SEMI) return; syntax: error("External definition syntax"); errflush(o); statement(0); } cfunc(cs) char *cs; { register savdimp; strflg = 0; savdimp = dimp; printf(".text\n_%.8s:\n", cs); declist(ARG); regvar = 5; retlab = isn++; if ((peeksym = symbol()) != LBRACE) error("Compound statement required"); statement(1); printf("L%d:jmp rretrn\n", retlab); dimp = savdimp; } cinit(cs, type, nel, awidth) char *cs; { register o, ninit, width; width = awidth; if ((peeksym=symbol())==COMMA || peeksym==SEMI) { printf(".comm _%.8s,0%o\n", cs, (nel*width+1)&~01); return; } ninit = 0; printf(".data\n_%.8s=.\n", cs); if ((o=symbol())==LBRACE) { do ninit = cinit1(cs, type, width, ninit); while ((o=symbol())==COMMA); if (o!=RBRACE) peeksym = o; } else { peeksym = o; ninit = cinit1(cs, type, width, 0); } if (ninit1 && (type&030)!=ARRAY && (type&07)!=STRUCT) error("Too many initializers"); if (((nel&width)&01) != 0) printf(".even\n"); } cinit1(cs, type, width, ninit) char *cs; { float sf; register struct tnode *s; if ((peeksym=symbol())==STRING && type==ARRAY+CHAR) { peeksym = -1; if (ninit) bxdec(); printf(".text\n_%.8s=L%d\n", cs, cval); return((nchstr+1) & ~01); } if (peeksym==RBRACE) return(ninit); initflg++; s = tree(); initflg = 0; switch(width) { case 1: printf(".byte "); if (s->op != CON) bxdec(); case 2: if (s->op==CON) { printf("%d.\n", s->value); break; } rcexpr(block(1,INIT,0,0,s), regtab); break; case 4: sf = fcval; printf("0%o;0%o\n", sf); goto flt; case 8: printf("0%o;0%o;0%o;0%o\n", fcval); flt: if (s->op==FCON || s->op==SFCON) break; default: bxdec(); } return(++ninit); } bxdec() { error("Inconsistent external initialization"); } statement(d) { register o, o1, o2; int o3, o4; struct tnode *np; stmt: switch(o=symbol()) { case EOF: error("Unexpected EOF"); case SEMI: case RBRACE: return; case LBRACE: if(d) { if (proflg) { o = "jsr\tr5,mrsave;0f;%o\n.bss;0:.=.+2\n.text\n"; } else o = "jsr r5,rsave; %o\n"; printf(o, blkhed()-4); } while (!eof) { if ((o=symbol())==RBRACE) return; peeksym = o; statement(0); } error("Missing '}'"); return; case KEYW: switch(cval) { case GOTO: if (o1 = simplegoto()) branch(o1); else dogoto(); goto semi; case RETURN: doret(); goto semi; case IF: np = pexpr(); o2 = 0; if ((o1=symbol())==KEYW) switch (cval) { case GOTO: if (o2=simplegoto()) goto simpif; cbranch(np, o2=isn++, 0); dogoto(); label(o2); goto hardif; case RETURN: if (nextchar()==';') { o2 = retlab; goto simpif; } cbranch(np, o1=isn++, 0); doret(); label(o1); o2++; goto hardif; case BREAK: o2 = brklab; goto simpif; case CONTIN: o2 = contlab; simpif: chconbrk(o2); cbranch(np, o2, 1); hardif: if ((o=symbol())!=SEMI) goto syntax; if ((o1=symbol())==KEYW && cval==ELSE) goto stmt; peeksym = o1; return; } peeksym = o1; cbranch(np, o1=isn++, 0); statement(0); if ((o=symbol())==KEYW && cval==ELSE) { o2 = isn++; branch(o2); label(o1); statement(0); label(o2); return; } peeksym = o; label(o1); return; case WHILE: o1 = contlab; o2 = brklab; label(contlab = isn++); cbranch(pexpr(), brklab=isn++, 0); statement(0); branch(contlab); label(brklab); contlab = o1; brklab = o2; return; case BREAK: chconbrk(brklab); branch(brklab); goto semi; case CONTIN: chconbrk(contlab); branch(contlab); goto semi; case DO: o1 = contlab; o2 = brklab; contlab = isn++; brklab = isn++; label(o3 = isn++); statement(0); label(contlab); contlab = o1; if ((o=symbol())==KEYW && cval==WHILE) { cbranch(tree(), o3, 1); label(brklab); brklab = o2; goto semi; } goto syntax; case CASE: o1 = conexp(); if ((o=symbol())!=COLON) goto syntax; if (swp==0) { error("Case not in switch"); goto stmt; } if(swp>=swtab+swsiz) { error("Switch table overflow"); } else { swp->swlab = isn; (swp++)->swval = o1; label(isn++); } goto stmt; case SWITCH: o1 = brklab; brklab = isn++; np = pexpr(); chkw(np); rcexpr(block(1,RFORCE,0,0,np), regtab); pswitch(); brklab = o1; return; case DEFAULT: if (swp==0) error("Default not in switch"); if ((o=symbol())!=COLON) goto syntax; label(deflab = isn++); goto stmt; case FOR: o1 = contlab; o2 = brklab; contlab = isn++; brklab = isn++; if (o=forstmt()) goto syntax; label(brklab); contlab = o1; brklab = o2; return; } error("Unknown keyword"); goto syntax; case NAME: if (nextchar()==':') { peekc = 0; o1 = csym; if (o1->hclass>0) { error("Redefinition"); goto stmt; } o1->hclass = STATIC; o1->htype = ARRAY; if (o1->hoffset==0) o1->hoffset = isn++; label(o1->hoffset); if ((peeksym=symbol())==RBRACE) return; goto stmt; } } peeksym = o; rcexpr(tree(), efftab); semi: if ((o=symbol())==SEMI) return; syntax: error("Statement syntax"); errflush(o); goto stmt; } #define forsps 150 forstmt() { int l, savxpr[forsps]; int *st, *ss; register int *sp1, *sp2, o; if ((o=symbol()) != LPARN) return(o); if ((o=symbol()) != SEMI) { /* init part */ peeksym = o; rcexpr(tree(), efftab); if ((o=symbol()) != SEMI) return(o); } label(contlab); if ((o=symbol()) != SEMI) { /* test part */ peeksym = o; rcexpr(block(1,CBRANCH,tree(),brklab,0), cctab); if ((o=symbol()) != SEMI) return(o); } if ((peeksym=symbol()) == RPARN) { /* incr part */ peeksym = -1; statement(0); branch(contlab); return(0); } l = contlab; contlab = isn++; st = tree(); if ((o=symbol()) != RPARN) return(o); ss = space; if (space-treebase > forsps) { error("Expression too large"); space = &treebase[forsps]; } sp2 = savxpr; for (sp1=treebase; sp1hoffset = 0; cs = paraml; paraml = paraml->hoffset; if (cs->htype==FLOAT) cs->htype = DOUBLE; cs->hoffset = pl; cs->hclass = AUTO; if ((cs->htype&030) == ARRAY) { cs->htype =- 020; /* set ptr */ cs->ssp++; /* pop dims */ } pl =+ rlength(cs); } for (cs=hshtab; csname[0] == '\0') continue; /* check tagged structure */ if (cs->hclass>KEYWC && (cs->htype&07)==RSTRUCT) { cs->lenp = dimtab[cs->lenp&0377]->lenp; cs->htype = cs->htype&~07 | STRUCT; } if (cs->hclass == STRTAG && dimtab[cs->lenp&0377]==0) error("Undefined structure: %.8s", cs->name); if (cs->hclass == ARG) error("Not an argument: %.8s", cs->name); } osleft = ossiz; space = treebase; rcexpr(block(1, SETREG, regvar), regtab); return(autolen); } blkend() { register struct hshtab *cs; for (cs=hshtab; csname[0]) { if (cs->hclass==0) error("%.8s undefined", cs->name); if((cs->name[0]&0200)==0) { /* not top-level */ cs->name[0] = '\0'; hshused--; } } } } errflush(ao) { register o; o = ao; while(o>RBRACE) /* ; { } */ o = symbol(); peeksym = o; } declist(skwd) { int o, elsize, ndec; register offset, tkw, skw; offset = 0; loop: ndec = 0; tkw = -1; skw = skwd; elsize = 0; while ((o=symbol())==KEYW) switch (cval) { case AUTO: case STATIC: case EXTERN: case REG: if (skw) error("Conflict in storage class"); skw = cval; ndec++; if (tkw<0) continue; goto list; case STRUCT: o = cval; elsize = strdec(&o, skw==MOS); cval = o; case INT: case CHAR: case FLOAT: case DOUBLE: ndec++; if (tkw>=0) error("Type clash"); tkw = cval; if (skw==0) continue; goto list; default: goto brk1; } brk1: peeksym = o; if (ndec==0) return(offset); list: if (tkw<0) tkw = INT; if (skw==0) skw = AUTO; offset = declare(skw, tkw, offset, elsize); goto loop; } strdec(tkwp, mosf) int *tkwp; { register elsize, o; register struct hshtab *ssym; struct hshtab *ds; mosflg = 1; ssym = 0; if ((o=symbol())==NAME) { ssym = csym; if (ssym->hclass==0) { ssym->hclass = STRTAG; ssym->lenp = dimp; chkdim(); dimtab[dimp++] = 0; } if (ssym->hclass != STRTAG) redec(); mosflg = mosf; o = symbol(); } mosflg = 0; if (o != LBRACE) { if (ssym==0) { syntax: decsyn(o); return(0); } if (ssym->hclass!=STRTAG) error("Bad structure name"); if ((elsize = dimtab[ssym->lenp&0377])==0) { *tkwp = RSTRUCT; elsize = ssym; } peeksym = o; } else { ds = defsym; mosflg = 0; elsize = declist(MOS); if (elsize&01) elsize++; defsym = ds; if ((o = symbol()) != RBRACE) goto syntax; if (ssym) { if (dimtab[ssym->lenp&0377]) error("%.8s redeclared", ssym->name); dimtab[ssym->lenp&0377] = elsize; } } return(elsize); } chkdim() { if (dimp >= dimsiz) { error("Dimension/struct table overflow"); exit(1); } } ÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåİ w üÿ ÷ öÿ_¦!_¦5 øÿ· Üÿ!*×-Òÿ÷ ÊÿõÀÂÿ5øÿÀ%_’5 öÿ  @Àeøÿ&ß ö Ö 5öÿ÷ ’ÿ7ŽÿÀ% ÷  !_’7tÿ7 pÿ÷jÿNöÿ& føÿÎEøÿæß ÆeÂLÿ_¦€Àe5òÿ·8ÿýÕ€òÿNòÿæß Ö 7 ÿµøÿ@øÿÀEçÿÀ%÷ ÿ7ÿÀ% Nòÿß ªJõôÿ€ÀEçÿÀ%€œÀEÿÀ 5ôÿŽß 2êŽß —,Á� upôÿuôÿÃrøÿÎfôÿføÿfòÿß Æe÷ |þÀ% €! Î$ß ß ú  ß @wVþw Rþ7 LþÄHþNæ@ß Ö Î ß  ÷,þÀ(þ· $þ7 þ÷ þ7þÀ%ÎNß Îß @Îþýæjß Ö 7ðýwìýw èýB ÷ Þý7ÚýÀ%  ABpNŽ ÎEfæzß –%d NæŒß Ö ÷ œýÀ%Φffß Æe÷ zýÀ% ï!7hý 7bý ¦ffß Æeõ  AÁàBpNæœß Ö õW-@ÀEçÿÀ% @ÀEøÿÀ%Î¦ß @�A @@À5Î¼ß wäüw àü÷ Úü7ÖüÀ%W-÷ÿÿÂüõ ÷ æÎ´üfæÄß –%À¢ü€ ÀEb×-–ü@ [· ˆü÷ „ü7 ~ü@Àå J‚À x–¦¸$ö$$$ÎÖß #÷ v# æÞß Ö µ @ * && & æhæ÷ üÆe &ß ê7õü5üöÿ&øæä7õöû&øæî÷ ìûÆe #×#Ô÷ ÑwÒûw ÎûÎß wÀûw ¼û÷ ¶ûÁÚ7’  þy Î&ß _ õ ÷ ŽûÄ6Ä^÷ Îeüÿ&ß Ö ÷ lû÷ fûÀ%_ 7Vû ß @ïÎpß _ À>ûÀå  ƒ_‚À xÖîh‚ÌlÀÔèH÷ ûÎß _ø÷ üú_ø÷ ôú_ø÷ p5ôÿ ÷ âúÀ%lÀÖúÀå  e‚À x:Lxþþþþþ®´÷ °ú2 À¦ú· ¢ú&fôÿß –%÷ �úŽß +÷ „úÀ%;Âzú Àrú· nú&fôÿß –%÷ \úÎß ‚ ÂNúÂHúŽß Φfôÿß –%÷ .úÀ%_ ÷ úÀ%×-ú_F÷ú_ ÷þù Àøù· ôù&fôÿß –% ß @÷ ÜùÀ%×-ÐùÀÈù· ÄùŽß Îß  ß @Žß _ 7¢ùÎß _ ÔùÂ�ùÀŒù· ˆù7„ùß  Àxù· tù7pù&÷ î&ß –% ß @ÎXùß ÎPùß ÷Hù·Dù_ Î<ùß Î4ùß _øÎ(ùß Î ùß _øÃùÂùÀ ù· ù7ùÀù· üø7øøÀôø· ðø5øÿß  ß @ÎÜøß ÷Ôø÷ ÐøÀ%_ ×-Àø _ Îføÿ÷ ¬ø&ß –%Πøß ·˜ø_ø÷ �ø÷ ŠøÀ%_ ÷ zøÎ|ß _F×-hø ‡Î�ß _FÿTøRøÀNø÷eHøðÎ@ø· <øß _FÃ0øÀ,ø· (ø7$ø÷ ¤5ôÿß  fôÿ& & ænæ÷ øÆe &ß Ö ÷ °÷ì÷_ ÷ ä÷Î¦ß ÷ Ö÷À%iÀÊ÷· Æ÷7Â÷ß _Fô÷°÷À¬÷· ¨÷7¤÷À ÷· œ÷7˜÷÷ ®JÎŒ÷ß ÷„÷·€÷JÎ¼ß <÷ p÷À%:'7 f÷Ãb÷Ë ÎÌß _FËóó À>÷· :÷3Îß ÷ *÷7&÷À%_F7÷Î÷ ÷&ß Ö ÷ ÷À% Îöß ß ú _Fwæöw âö4÷ ÜöÀ%€_€ ÷ ÊöÀ%·¾öÎ÷ ¶ö&ß Ö ÷ ªöÀ%€_€ Θöß ÷ �öÀ%·„öÎ& æzö÷ vö&ægæ÷ höÆe &ß Ö ÷ XöÀ%€f÷ Hö7DöÀ% ÷ÿÿ8ö ß @Î.öSõ(öøÿÀ"ö· ö7ö÷ ö5Êþ÷ öÀ%€AõþõÈþÀøõÀíôõ€ À%– Îß ÀàõÀe,7Øõ@ÀeÌþÄÌõ7!Èõ†û ß @wÈþ¶õ@ÀeÌþĪõ7!¦õ†ÔûΜõß ÎfÊþß Ö Nøÿß w|õw xõ÷ rõÀ% ÷ fõ÷ `õÀ%ÀÎß ß ú w@õw <õÀ6õ5øÿ÷ ,õÀ7"õÀõ· õ5öÿß Â õ7 õ ß @Îüôß Nöÿß Î#ß Îäôß ÷ Üô ÀÖô· Òô7Îôß ÃÄôÎÀဠ&ß Ö Îæªôß Ö Îæß Ö ÎæŽôß Ö !†Î&÷·xôwøÿrôwnôw jô÷bô ß  Ä÷ Tô&ÀNô0 ÃFôÀ7>ô×,ó3ËÀÀEçÿÀ%ó峊Îß `×Ã× € @†ó‹:×"ÀÀEøÿÀ%ÀœÀEÿÀ 3œÀÀEÀU3×" ÀœÀEÿÀ ð ÎÎeæ0ß Ö ×" ÎÎeæJß Ö Ãe½÷ôvó÷rópó æjóæiæ÷ ^óÆe&ß Ö ÀNówJów FóÄ!€ †ô‹Ì Îeæ`ß Ö ôµ€4Š÷ óÄeåwów óD!÷ òòù7êòwæòw âò 5 ôÿÃÿÿB5 öÿ÷ Êò5øÿÀ%RÀ¼ò M‚À xP Ê Ê Ê Ê ž b b b b  Îpß ÂŽòµ ôÿà Üà   ÂNöÿ&æ¦ß ÆeÂõ^òøÿ—  Î@Àeøÿ&ß ö Ö 5öÿwøÿ6òµ ôÿà ÎŠß Ã"ò Ì§wøÿòõ ôÿÅw òw ò÷þñ ÷ øñÀ%ÂìñÊ Ê ò�àñ÷ ÎÀÖñ· ÒñÀ 0 —" ÷ Âñw¼ñ÷ ¸ñ7 ²ñ×  Îß G—" Î–ß €œÀEÿÀ ý„÷tñ0õnñøÿ7 hñÎß  Ä5„ wøÿPñ÷ LñÀ%Π€œÀEÿÀ ð ŽÎeæªß Ö €œÀEÿÀ 0w ñw ñ×-ñd뼧 Îß wêð.globl _%.8s External definition syntax.text _%.8s: Compound statement requiredL%d:jmp rretrn .comm _%.8s,0%o .data _%.8s=. .=.+%d. Too many initializers.even .text _%.8s=L%d .byte %d. 0%o;0%o 0%o;0%o;0%o;0%o Inconsistent external initializationUnexpected EOFjsr r5,mrsave;0f;%o .bss;0:.=.+2 .text jsr r5,rsave; %o Missing '}'Case not in switchSwitch table overflowDefault not in switchUnknown keywordRedefinition\ h ¾ŒäStatement syntaxExpression too largeStatement syntaxUndefined structure: %.8sNot an argument: %.8s%.8s undefinedConflict in storage classType clashBad structure name%.8s redeclaredDimension/struct table overflow ©ÙÙ))‰9¸‰™È©)ˆ(8ˆ¹ 9¹ÈÉ™™é)ˆéȹ¹ )ÈÈ))Ȉȹ ))ÙÈù)iéiÈȉ˜ééɹ ˆ¹ ˆ¹ÈI)ˆÙ) H i y Ù) ™™ i  9 é™™ y  ÙÉX  Ù))™™ Ù™™H   ) ÉÙ™™É ™™Ù ÉH Ù ÉÙÙX ÙH ÉX ÉH ÉÙ™™É™™Ù™™ É ÉÙé Ù Ù™ ¹ˆ¹¨ˆ™¹¹¹™™ Ù™™ÙÈ ‰˜Ù¹ˆ™™ù ÉÙ™™É™™ÙÙ ÉÙˆ9 9Ɉ™™ ))阈¹ )é˜É )Ù鉘))ÉÉ™™ÉéiiiˆiiiiiiiÉ ˜H ¹ 鈹 ¹¹¨¹™™H ùùÙH  h Ù ù™™ù ¹˜ˆ ˜ùˆ ˜ˆ ˜Yˆ ˜ù¹¹ )(XXˆˆˆˆIiiɉ˜¹ XXˆI¹ )¹ و٘ÙÙˆÙ)¹ Yɹ¹¹ˆ9YYxˆˆ)‰Y‰ˆˆˆ¹ ¹ˆ¹_cvtab _opdope _ctab _symbuf _hshused _hshtab € _space _cp _cmst P_isn _swtab _swp _contlab _brklab _retlab _deflab _nauto _autolen _peeksym _peekc _eof _line _treebas _debug _defsym _funcsym _xdflg _proflg _csym _cval _fcval _nchstr _nerror _paraml _parame _strflg _osleft _mosflg _initflg _inhdr _dimtab È_binbuf _ascbuf _dimp _regvar _extdef"L12L17$rsave _symbol L1¦L2$L3~L4:L5’L8Œ_strdec"ö _blkhed"’ L11Œ_decl1 _printf L13L10000_cfunc"ªL14L15D_decref _length L16d_cinit"L9€L10Œ_error _errflus"ú _stateme"@rretrn L19@L21NL22j_declist" L20öL18L25zL26ŒL34œL37¦L39¼L100012L24PL23L27šL30l_cinit1"L28‚L29ŽL32´L33ÐL35ÔL36L38L43ÄL48ÖL52ÞL54äL57îL41fL42H_bxdec".L40*L44t_tree L58$L47¦L50¸L53öL56L49¸L51ÖL20000ÊL45Ì_block _rcexpr L20002L60L59<L66&L726L74^L77pL107|L109�L114¦L117¼L121ÌL10007ÚL10008æL65\L61 L69hL78¾L118ŒL123äL124öL62FL10009TL70�L71zL73~L75�L76²L116‚L81îL85L86L100hL111ÌL105lL101ÀL102ÔL103èL112L115H_simpleg L82_branch L84ø_dogoto _doret _pexpr"„ L87þL98þL90LL93xL95®L96´L91¸_cbranch _label L92Î_nextcha L94ˆ_chconbr L97 L10003öL99Z_conexp L106”L108¨_chkw _pswitch"À L113&_forstmt" L63äL120®L122ÊL134L1262 L125€ L127d L128d L129´ L130´ L131Ô L20004z L132þ L133( L1354 L136> L137V L138` L141L140¬ L139¼ L143à _putchar L1448 _putw L20006r L146„ L142Ž L1570L159JL148¨ L149ú L150Ð L151ð _rlength L152þ L153„ L154~ L155B L156h L158~ _blkend"¶ L166`L161À L162ö L164ð L165à L167ð L163ð L160ö L169 L170 L168 L182pL190ŠL172" L1732 L174ä L192ä L185Ê L186Ê L187Ê L188Ê L184ž L177b L179b L178b L180b L181n L193z L183z L194€ L195ˆ _declare L10010® L10011² L189Ú L204–L210ªL197JL1984_chkdim"ôL199>_redec L200ŽL201bL202X_decsyn L196ðL203pL205ˆL206îL207ªL208îL209àL213ºL212_exit L211fltused çèéêëìíîïðñòóôõö÷øùúûüýþÿ# /* C compiler Copyright 1972 Bell Telephone Laboratories, Inc. */ #include "c0h.c" decref(at) { register t; t = at; if ((t & ~07) == 0) { error("Illegal indirection"); return(t); } return((t>>2) & ~07 | t&07); } incref(t) { return((t<<2)&~034 | (t&07) | PTR); } cbranch(tree, lbl, cond) struct tnode *tree; { rcexpr(block(1,CBRANCH,tree,lbl,cond),cctab); } rcexpr(tree, table) int table; struct tnode *tree; { register c, *sp; if (tree == 0) return; putchar('#'); c = space-treebase; sp = treebase; putw(c, binbuf); putw(tree, binbuf); putw(table, binbuf); putw(line, binbuf); while(c--) putw(*sp++, binbuf); } branch(lab) { printf("jbr\tL%d\n", lab); } label(l) { printf("L%d:", l); } plength(ap) struct tname *ap; { register t, l; register struct tname *p; p = ap; if (((t=p->ntype)&~07) == 0) /* not a reference */ return(1); p->ntype = decref(t); l = length(p); p->ntype = t; return(l); } length(acs) struct tnode *acs; { register t, n; register struct tnode *cs; cs = acs; t = cs->type; n = 1; while ((t&030) == ARRAY) { t = decref(t); n = dimtab[cs->ssp&0377]; } if ((t&~07)==FUNC) return(0); if (t>=PTR) return(2*n); switch(t&07) { case INT: return(2*n); case CHAR: return(n); case FLOAT: return(4*n); case DOUBLE: return(8*n); case STRUCT: return(n * dimtab[cs->lenp&0377]); case RSTRUCT: error("Bad structure"); return(0); } error("Compiler error (length)"); } rlength(cs) struct tnode *cs; { register int l; if (((l=length(cs))&01) != 0) l++; return(l); } simplegoto() { register struct hshtab *csp; if ((peeksym=symbol())==NAME && nextchar()==';') { csp = csym; if (csp->hclass==0 && csp->htype==0) { csp->htype = ARRAY; if (csp->hoffset==0) csp->hoffset = isn++; } if ((csp->hclass==0||csp->hclass==STATIC) && csp->htype==ARRAY) { peeksym = -1; return(csp->hoffset); } } return(0); } nextchar() { while (ctab[peekc]==SPACE) peekc = getchar(); return(peekc); } chconbrk(l) { if (l==0) error("Break/continue error"); } dogoto() { register struct tnode *np; *cp++ = tree(); build(STAR); chkw(np = *--cp); rcexpr(block(1,JUMP,0,0,np), regtab); } doret() { if (nextchar() != ';') rcexpr(block(1, RFORCE, 0, 0, tree()), regtab); branch(retlab); } putchar(c) { putc(c, ascbuf); } †`dw üÿDÄ5øÿ렧  tþÿÀEÁEøÿ@PwÎÿw Êÿ@tÀEAÁEøÿ@PÀUwªÿw ¦ÿÎfffægæ÷ ˆÿÆe &ß ˆÖ wxÿw tÿõ /Î#ß nÀ`ÿÀí\ÿ€ ÃTÿÎ&ß Ö Îfß Ö Îfß Ö Îæ$ÿß Ö Ä À Îæõw ÿw ÿNæšß Ö wòþw îþNæ¤ß Ö wÚþw ÖþB€À5øÿÀ ß 2Žß ^2Àw¢þw žþB„ÃÀEçÿÀ% ß €œÀEÿÀ îÀEÀ% 6!ÀÀ 0ÀEøÿ &‚À xÂÎÔØàèüÀÀ ÀÀtÀt�œÁEÿÁ ACp@ Îªß Î¸ß wìýw èýNß ^À5„ wÎýw Êý÷ Äý7ÀýÀ%'÷ PÀ%;"ĬýÌ ô  ôô À’ý· Žý4Ì # -÷ÿÿrý wfýw býÀ\ýœÀ%~÷ Ný7JýôÀDýw@ýw <ýõ ÎÐß w(ýw $ý÷ ýÁý÷eý Î$ß ÷åýÀýß  && & æfæ÷ âüÆe &ß ˆÖ wÒüw Îü÷ bÿÀ%; ÷ ¼ü&& & ænæ÷ ªüÆe &ß ˆÖ Κüß öw’üw ŽüÎfß Ö wzüIllegal indirectionjbr L%d L%d:Bad structureCompiler error (length)Break/continue errorù9ù9ùi9ùiii˜¸˜¸˜¸˜Y¸˜9ù9ù9ù9ùˆˆ9ù9ù©)É™™)9ù9(I999ù9ù©yy¸yyÈi9ù©ié9ù¨9_cvtab _opdope _ctab _symbuf _hshused _hshtab € _space _cp _cmst P_isn _swtab _swp _contlab _brklab _retlab _deflab _nauto _autolen _peeksym _peekc _eof _line _treebas _debug _defsym _funcsym _xdflg _proflg _csym _cval _fcval _nchstr _nerror _paraml _parame _strflg _osleft _mosflg _initflg _inhdr _dimtab È_binbuf _ascbuf _dimp _regvar _decref"L3†rsave L2_error L1.rretrn _incref"2_cbranch"V_block _rcexpr"ˆL5„L6ò_putchar"n_putw L20001ÜL8ò_branch"öL10š_printf L9 _label"L12¤L11"_plength"&L14BL13Z_length"^L28ªL30¸L16pL17”L18¤L15L19°L29L22ÎL23ÔL24ØL25àL26èL27ü_rlength"L32,_simpleg"2_symbol L34”_nextcha"šL35vL36vL10001€L37”L33–L39 L40¸_getchar _chconbr"ÀL43ÐL42ÔL41Ô_dogoto"Ø_tree _build _chkw L44*_doret".L46bL45j_putc L47‚# #include "c0h.c" /* * info on operators: * 01-- is binary operator * 02-- left (or only) operand must be lvalue * 04-- is relational operator * 010-- is assignment-type operator * 020-- non-float req. on left * 040-- non-float req. on right * 0100-- is commutative * 0200-- is right, not left-associative * 0400-- is leaf of tree * *0XX000-- XX is priority of operator */ int opdope[] { 000000, /* EOF */ 000000, /* ; */ 000000, /* { */ 000000, /* } */ 036000, /* [ */ 002000, /* ] */ 036000, /* ( */ 002000, /* ) */ 014201, /* : */ 007001, /* , */ 000000, /* 10 */ 000000, /* 11 */ 000000, /* 12 */ 000000, /* 13 */ 000000, /* 14 */ 000000, /* 15 */ 000000, /* 16 */ 000000, /* 17 */ 000000, /* 18 */ 000000, /* 19 */ 000400, /* name */ 000400, /* short constant */ 000400, /* string */ 000400, /* float */ 000400, /* double */ 000000, /* 25 */ 000000, /* 26 */ 000000, /* 27 */ 000000, /* 28 */ 034200, /* sizeof */ 034202, /* ++pre */ 034202, /* --pre */ 034202, /* ++post */ 034202, /* --post */ 034220, /* !un */ 034202, /* &un */ 034220, /* *un */ 034200, /* -un */ 034220, /* ~un */ 036001, /* . (structure reference) */ 030101, /* + */ 030001, /* - */ 032101, /* * */ 032001, /* / */ 032001, /* % */ 026061, /* >> */ 026061, /* << */ 020161, /* & */ 017161, /* | */ 017161, /* ^ */ 036001, /* -> */ 000000, /* int -> double */ 000000, /* double -> int */ 016001, /* && */ 015001, /* || */ 000000, /* 55 */ 000000, /* 56 */ 000000, /* 57 */ 000000, /* 58 */ 000000, /* 59 */ 022005, /* == */ 022005, /* != */ 024005, /* <= */ 024005, /* < */ 024005, /* >= */ 024005, /* > */ 024005, /*

p */ 024005, /* >=p */ 012213, /* =+ */ 012213, /* =- */ 012213, /* =* */ 012213, /* =/ */ 012213, /* =% */ 012253, /* =>> */ 012253, /* =<< */ 012253, /* =& */ 012253, /* =| */ 012253, /* =^ */ 012213, /* = */ 000000, /* 81 */ 000000, /* 82 */ 000000, /* 83 */ 000000, /* 84 */ 000000, /* 85 */ 000000, /* 86 */ 000000, /* 87 */ 000000, /* 88 */ 000000, /* 89 */ 014201, /* ? */ 000000, /* 91 */ 000000, /* 92 */ 000000, /* 93 */ 000000, /* 94 */ 000000, /* 95 */ 000000, /* 96 */ 000000, /* 97 */ 000000, /* 98 */ 000000, /* 99 */ 036001, /* call */ 036001, /* mcall */ 000000, /* goto */ 000000, /* jump cond */ 000000, /* branch cond */ 000000, /* 105 */ 000000, /* 106 */ 000000, /* 107 */ 000000, /* 108 */ 000000, /* 109 */ 000000 /* force r0 */ }; /* * conversion table: * 0100-- convert left operand * 0*0XX-- XX is conversion number, to wit: * 000: none * 001: int -> ptr * 002: ptr -> int * 003: int -> double * 004: double -> int * 077: generally illegal */ char cvtab[] { 0000, /* i : i */ 0000, /* i : c */ 0103, /* i : f */ 0103, /* i : d */ 0077, /* i : s */ 0101, /* i : *i */ 0000, /* i : *c */ 0101, /* i : *f */ 0101, /* i : *d */ 0101, /* i : *s */ 0101, /* i : ** */ 0000, /* c : i */ 0000, /* c : c */ 0103, /* c : f */ 0103, /* c : d */ 0077, /* c : s */ 0101, /* c : *i */ 0000, /* c : *c */ 0101, /* c : *f */ 0101, /* c : *d */ 0101, /* c : *s */ 0101, /* c : ** */ 0003, /* f : i */ 0003, /* f : c */ 0000, /* f : f */ 0000, /* f : d */ 0077, /* f : s */ 0077, /* f : *i */ 0077, /* f : *c */ 0077, /* f : *f */ 0077, /* f : *d */ 0077, /* f : *s */ 0077, /* f : ** */ 0003, /* d : i */ 0003, /* d : c */ 0000, /* d : f */ 0000, /* d : d */ 0077, /* d : s */ 0077, /* d : *i */ 0077, /* d : *c */ 0077, /* d : *f */ 0077, /* d : *d */ 0077, /* d : *s */ 0077, /* d : ** */ 0077, /* s : i */ 0077, /* s : c */ 0077, /* s : f */ 0077, /* s : d */ 0077, /* s : s */ 0077, /* s : *i */ 0077, /* s : *c */ 0077, /* s : *f */ 0077, /* s : *d */ 0077, /* s : *s */ 0077, /* s : ** */ 0001, /* *i : i */ 0001, /* *i : c */ 0077, /* *i : f */ 0077, /* *i : d */ 0077, /* *i : s */ 0002, /* *i : *i */ 0077, /* *i : *c */ 0077, /* *i : *f */ 0077, /* *i : *d */ 0077, /* *i : *s */ 0002, /* *i : ** */ 0000, /* *c : i */ 0000, /* *c : c */ 0077, /* *c : f */ 0077, /* *c : d */ 0077, /* *c : s */ 0077, /* *c : *i */ 0000, /* *c : *c */ 0077, /* *c : *f */ 0077, /* *c : *d */ 0077, /* *c : *s */ 0077, /* *c : ** */ 0001, /* *f : i */ 0001, /* *f : c */ 0077, /* *f : f */ 0077, /* *f : d */ 0077, /* *f : s */ 0077, /* *f : *i */ 0077, /* *f : *c */ 0002, /* *f : *f */ 0077, /* *f : *d */ 0077, /* *f : *s */ 0077, /* *f : ** */ 0001, /* *d : i */ 0001, /* *d : c */ 0077, /* *d : f */ 0077, /* *d : d */ 0077, /* *d : s */ 0077, /* *d : *i */ 0077, /* *d : *c */ 0077, /* *d : *f */ 0002, /* *d : *d */ 0077, /* *d : *s */ 0077, /* *d : ** */ 0001, /* *s : i */ 0001, /* *s : c */ 0077, /* *s : f */ 0077, /* *s : d */ 0077, /* *s : s */ 0077, /* *s : *i */ 0077, /* *s : *c */ 0077, /* *s : *f */ 0077, /* *s : *d */ 0002, /* *s : *s */ 0077, /* *s : ** */ 0001, /* ** : i */ 0001, /* ** : c */ 0077, /* ** : f */ 0077, /* ** : d */ 0077, /* ** : s */ 0002, /* ** : *i */ 0077, /* ** : *c */ 0077, /* ** : *f */ 0077, /* ** : *d */ 0077, /* ** : *s */ 0002 /* ** : ** */ }; /* * character type table */ char ctab[] { EOF, INSERT, UNKN, UNKN, UNKN, UNKN, UNKN, UNKN, UNKN, SPACE, NEWLN, UNKN, UNKN, UNKN, UNKN, UNKN, UNKN, UNKN, UNKN, UNKN, UNKN, UNKN, UNKN, UNKN, UNKN, UNKN, UNKN, UNKN, UNKN, UNKN, UNKN, UNKN, SPACE, EXCLA, DQUOTE, UNKN, UNKN, MOD, AND, SQUOTE, LPARN, RPARN, TIMES, PLUS, COMMA, MINUS, PERIOD, DIVIDE, DIGIT, DIGIT, DIGIT, DIGIT, DIGIT, DIGIT, DIGIT, DIGIT, DIGIT, DIGIT, COLON, SEMI, LESS, ASSIGN, GREAT, QUEST, UNKN, LETTER, LETTER, LETTER, LETTER, LETTER, LETTER, LETTER, LETTER, LETTER, LETTER, LETTER, LETTER, LETTER, LETTER, LETTER, LETTER, LETTER, LETTER, LETTER, LETTER, LETTER, LETTER, LETTER, LETTER, LETTER, LETTER, LBRACK, UNKN, RBRACK, EXOR, LETTER, UNKN, LETTER, LETTER, LETTER, LETTER, LETTER, LETTER, LETTER, LETTER, LETTER, LETTER, LETTER, LETTER, LETTER, LETTER, LETTER, LETTER, LETTER, LETTER, LETTER, LETTER, LETTER, LETTER, LETTER, LETTER, LETTER, LETTER, LBRACE, OR, RBRACE, COMPL, UNKN }; Ø<<�€8‚8‚8‚8‚8�8‚8�8€8�8; .even .endif getdig: mov _peekc,r0 beq 1f clr _peekc br 2f 1: jsr pc,_getchar 2: sub $'0,r0 cmp r0,$9. bhi 1f inc totdig mov _cval,r1 mul base,r1 add r0,r1 mov r1,_cval tst (r5)+ rts r5 1: add $'0,r0 rts r5 .bss base: .=.+2 nfract: .=.+2 decpt: .=.+2 totdig: .=.+2 # /* C compiler, part 2 Copyright 1972 Bell Telephone Laboratories, Inc. */ #include "c1h.c" char maprel[] { EQUAL, NEQUAL, GREATEQ, GREAT, LESSEQ, LESS, GREATP, GREATQP, LESSP, LESSEQP }; char notrel[] { NEQUAL, EQUAL, GREAT, GREATEQ, LESS, LESSEQ, GREATQP, GREATP, LESSEQP, LESSP }; struct tconst czero { CON, INT, 0, 0}; struct tconst cone { CON, INT, 0, 1}; struct tconst fczero { SFCON, DOUBLE, 0, 0 }; struct table *tabtab[] { regtab, efftab, cctab, sptab, 0 }; int nreg 3; int isn 10000; int namsiz 8; int *treebase; main(argc, argv) char *argv[]; { int treespace[ossiz]; struct table *table; register *sp, c, *tree; if (argc<4) { error("Arg count"); exit(1); } if(fopen(argv[1], ascbuf)<0 || fopen(argv[2], binbuf)<0){ error("Missing temp file"); exit(1); } if (fcreat(argv[3], outbuf) < 0) { error("Can't create %s", argv[3]); exit(1); } treebase = getw(binbuf); if (treebase < treespace) { error("Tree space botch"); exit(1); } while ((c=getc(ascbuf)) > 0) { if(c=='#') { sp = treebase; c = getw(binbuf); tree = getw(binbuf); table = tabtab[getw(binbuf)]; line = getw(binbuf); while(--c >= 0) *sp++ = getw(binbuf); if (table==0) /* is switch */ pswitch(treebase, sp, tree); else { tree = optim(tree); nstack = 0; rcexpr(tree, table, 0); } } else putchar(c); } if (nfloat) printf(".globl fltused\n"); fflush(outbuf); exit(nerror!=0); } char *match(atree, table, nrleft) struct tnode *atree; struct table *table; { int op, d1, d2, t1, t2, dope; struct tnode *p2; register struct tnode *p1, *tree; register struct optab *opt; if ((tree=atree)==0) return(0); if (table==lsptab) table = sptab; op = tree->op; dope = opdope[op]; if ((dope&LEAF) == 0) p1 = tree->tr1; else p1 = tree; t1 = p1->type; d1 = dcalc(p1, nrleft); if ((dope&BINARY)!=0) { p2 = tree->tr2; t2 = p2->type; d2 = dcalc(p2, nrleft); } for (; table->op!=op; table++) if (table->op==0) return(0); for (opt = table->tabp; opt->tabdeg1!=0; opt++) { if (d1 > (opt->tabdeg1&077) || (opt->tabdeg1 >= 0100 && (p1->op != STAR))) continue; if (notcompat(p1, opt->tabtyp1)) { continue; } if ((opdope[op]&BINARY)!=0 && p2!=0) { if (d2 > (opt->tabdeg2&077) || (opt->tabdeg2 >= 0100) && (p2->op != STAR) ) continue; if (notcompat(p2,opt->tabtyp2)) continue; } return(opt); } return(0); } rcexpr(atree, atable, reg) struct tnode *atree; struct table *atable; { register r; int modf; register struct tnode *tree; register struct table *table; table = atable; if((tree=atree)==0) return(0); switch (tree->op) { case SETREG: nreg = tree->type-1; return; case CBRANCH: cbranch(tree->btree, tree->lbl, tree->cond, 0); return(0); case INIT: if (tree->tr1->op == AMPER) tree->tr1 = tree->tr1->tr1; if (tree->tr1->op!=NAME && tree->tr1->op!=CON) error("Illegal initialization"); else cexpr(tree, regtab, nreg); return(0); case EXCLA: if ((opdope[tree->tr1->op] & RELAT) != 0) { tree = tree->tr1; tree->op = notrel[tree->op - EQUAL]; } break; case RFORCE: if((r=rcexpr(tree->tr1, table, reg)) != 0) printf("mov%c r%d,r0\n", isfloat(tree->tr1), r); return(0); case COMMA: rcexpr(tree->tr1, efftab, reg); tree = tree->tr2; break; case TIMES: case DIVIDE: case ASTIMES: case ASDIV: pow2(tree); } if ((r=cexpr(tree, table, reg))>=0) { return(r); } if (table!=regtab) if((r=cexpr(tree, regtab, reg))>=0) { modf = isfloat(tree); if (table==sptab || table==lsptab) { printf("mov%c r%d,%c(sp)\n", modf, r, table==sptab? '-':0); nstack++; } if (table==cctab) { printf("tst%c r%d\n", modf, r); } return(0); } error("No match for op %d", tree->op); } cexpr(atree, table, areg) struct tnode *atree; struct table *table; { int c, r; register struct tnode *p, *p1, *tree; struct table *ctable; struct tnode *p2; char *string; int reg, reg1, rreg, flag, nargs, fflag; char *opt; tree = atree; reg = areg; p1 = tree->tr2; if ((c = tree->op)==CALL) { r = 0; nargs = 0; fflag = 0; if (tree->tr1->op!=NAME) { /* get nargs right */ nargs++; nstack++; } if(p1->op) { while (p1->op==COMMA) { r =+ comarg(p1->tr2, &fflag); p1 = p1->tr1; nargs++; } r =+ comarg(p1, &fflag); nargs++; } tree->op = CALL+1; tree->degree = r; /* save arg length */ } if ((opdope[c]&RELAT||c==LOGAND||c==LOGOR) && table!=cctab) { cbranch(tree, c=isn++, 1, reg); rcexpr(&czero, table, reg); branch(isn, 0); label(c); rcexpr(&cone, table, reg); label(isn++); return(reg); } if(c==QUEST) { if (table==cctab) return(-1); cbranch(tree->tr1, c=isn++, 0, reg); flag = nstack; rreg = rcexpr(p1->tr1, table, reg); nstack = flag; branch(r=isn++, 0); label(c); reg = rcexpr(p1->tr2, table, rreg); if (rreg!=reg) printf("mov%c r%d,r%d\n", isfloat(tree),reg,rreg); reg = rreg; label(r); goto retrn; } if (c==AMPER && tree->tr1->op==NAME && tree->tr1->class==REG) error("Illegal use of register"); reg = oddreg(tree, reg); reg1 = reg+1; if (chkleaf(tree, table, reg) >= 0) goto retrn; if ((opt=match(tree, table, nreg-reg))==0) return(-1); string = opt->tabstring; p1 = tree->tr1; p2 = 0; if (opdope[tree->op] & BINARY) p2 = tree->tr2; loop: switch(c = *string++) { case '\0': if (tree->op==CALL+1) { popstk(tree->degree); reg = 0; nstack =- nargs; } retrn: if (!isfloat(tree)) if (tree->op==DIVIDE || tree->op==ASDIV) reg--; return(reg); /* A1 */ case 'A': p = p1; goto adr; /* A2 */ case 'B': p = p2; goto adr; /* A */ case 'O': p = tree; adr: c = 0; if (*string=='\'') { c++; string++; } pname(p, c); goto loop; /* I */ case 'M': if ((c = *string)=='\'') string++; else c = 0; prins(tree->op, c); goto loop; /* B1 */ case 'C': if ((opdope[tree->op]&LEAF) != 0) p = tree; else p = p1; goto pbyte; /* BF */ case 'P': p = tree; goto pb1; /* B2 */ case 'D': p = p2; pbyte: if (p->type==CHAR) putchar('b'); pb1: if (isfloat(p)) putchar('f'); goto loop; /* BE */ case 'L': if (p1->type==CHAR || p2->type==CHAR) putchar('b'); p = tree; goto pb1; /* C1 */ case 'E': p = p1->tr1; goto const; /* C2 */ case 'F': p = p2->tr1; const: printf("0%o", p); goto loop; /* F */ case 'G': p = p1; flag = 01; goto subtre; /* S */ case 'K': p = p2; flag = 02; goto subtre; /* H */ case 'H': p = tree; flag = 04; subtre: ctable = regtab; c = *string++ - 'A'; if ((c&02)!=0) ctable = sptab; if ((c&04)!=0) if (p->op!=INCAFT && p->op!=DECAFT && match(p, efftab, nreg-reg)) ctable = efftab; else ctable = cctab; if ((c&01)!=0) { p = p->tr1; if(collcon(p) && ctable!=sptab) { if (p->tr2->op==AMPERA) flag =| 010; p = p->tr1; } } if (table==lsptab && ctable==sptab) ctable = lsptab; if (c&010) r = reg1; else if (opdope[p->op]&LEAF || p->degree < 2) r = reg; else r = areg; rreg = rcexpr(p, ctable, r); if (flag&010) printf("add r5,r%d\n", rreg); if (c&010) reg1 = rreg; else if (rreg!=reg && ctable==regtab) if (oddreg(tree, 0)==0 && (flag&04 || flag&01 && xdcalc(p2, nreg-rreg-1) <= (opt->tabdeg2&077) || flag&02 && xdcalc(p1,nreg-rreg-1) <= (opt->tabdeg1&077))) { reg = rreg; reg1 = rreg+1; } else printf("mov%c\tr%d,r%d\n", isfloat(tree), rreg, reg); goto loop; /* R */ case 'I': r = reg; if (*string=='-') { string++; r--; } goto preg; /* R1 */ case 'J': r = reg1; preg: if (r>nreg) error("Register overflow: simplify expression"); printf("r%d", r); goto loop; case '-': /* check -(sp) */ if (*string=='(') { nstack++; if (table!=lsptab) putchar('-'); goto loop; } break; case ')': /* check (sp)+ */ putchar(')'); if (*string=='+') nstack--; goto loop; case '#': p = p1->tr1; goto nmbr; case '"': p = p2->tr1; goto nmbr; case '~': p = p1; nmbr: if(collcon(p)) { switch((p = p->tr2)->op) { case CON: if (p->value) printf("%d.", p->value); break; case AMPER: pname(p->tr1, 0); break; case AMPERA: p = p->tr1; printf("%d.", p->nloc+p->offset); break; } } goto loop; /* V */ case 'V': tree->op = maprel[tree->op - EQUAL]; goto loop; /* Z */ case 'Z': printf("$0%o", p1->offset+p1->nloc); goto loop; case '^': /* for ++ --, tr2 is length */ printf("0%o", tree->tr2); goto loop; case 'T': /* "tst R" if 1st op not in cctab */ if (dcalc(p1, 5)>12 && !match(p1, cctab, 10)) printf("tst r%d\n", reg); goto loop; case '`': /* for jsr pc,*$F on compression */ if (fflag) printf("*$"); goto loop; } putchar(c); goto loop; } chkleaf(atree, table, reg) struct tnode *atree; { struct tnode lbuf; register struct tnode *tree; tree = atree; if (dcalc(tree, nreg-reg) > 12) return(-1); lbuf.op = LOAD; lbuf.type = tree->type; lbuf.degree = tree->degree; lbuf.tr1 = tree; return(cexpr(&lbuf, table, reg)); } comarg(atree, flagp) int *flagp; { register struct tnode *tree; tree = atree; if (tree->type==STRUCT) error("Illegal structure"); if (nstack || isfloat(tree)) { rcexpr(tree, sptab, 0); return(arlength(tree->type)); } (*flagp)++; rcexpr(tree, lsptab, 0); return(0); } optim(atree) struct tnode *atree; { register op, dope; int d1, d2; struct tnode *t; register struct tnode *tree; if ((tree=atree)==0) return(0); op = tree->op; if (op==0) return(tree); dope = opdope[op]; if ((dope&LEAF) != 0) return(tree); if ((dope&BINARY) == 0) return(unoptim(tree)); /* is known to be binary */ if ((dope&COMMUTE)!=0) { acomm: d1 = tree->type; tree = acommute(tree); tree->type = d1; return(tree); } tree->tr1 = optim(tree->tr1); tree->tr2 = optim(tree->tr2); if ((dope&RELAT) != 0) { if (degree(tree->tr1) < degree(tree->tr2)) { t = tree->tr1; tree->tr1 = tree->tr2; tree->tr2 = t; tree->op = maprel[op-EQUAL]; } if (tree->tr1->type==CHAR && tree->tr2->op==CON && dcalc(tree->tr1) <= 12 && tree->tr2->value <= 127 && tree->tr2->value >= 0) tree->tr2->type = CHAR; } d1 = max(degree(tree->tr1), 1); d2 = max(degree(tree->tr2), 0); switch (op) { case CALL: tree->degree = 10; break; case QUEST: case COLON: tree->degree = max(d1, d2); break; case MINUS: if (tree->tr2->op==CON) { /* const */ tree->op = PLUS; tree->tr2->value = -tree->tr2->value; goto acomm; } goto def; case DIVIDE: case ASDIV: case ASTIMES: if (ispow2(tree) == 0) { case MOD: case ASMOD: d1 =+ 2; d2 =+ 2; } case LSHIFT: case RSHIFT: if (tree->tr1->op==CON && tree->tr2->op==CON) { const(op, &tree->tr1->value, tree->tr2->value); return(tree->tr1); } def: default: tree->degree = d1==d2? ++d1: max(d1, d2); break; } return(tree); } unoptim(atree) struct tnode *atree; { register struct tnode *subtre, *tree; register int *p; double static fv; struct { int integer; }; if ((tree=atree)==0) return(0); if (tree->op==CBRANCH) { tree->btree = optim(tree->btree); return(tree); } subtre = tree->tr1 = optim(tree->tr1); /* try to reduce * & */ if (tree->op==STAR && (subtre->op==AMPER || subtre->op==AMPERA)) return(subtre->tr1); if (tree->op == ITOF && subtre->op == CON) { fv = subtre->value; p = &fv; p++; if (*p++==0 && *p++==0 && *p++==0) { subtre->type = DOUBLE; subtre->value = fv.integer; subtre->op = SFCON; return(subtre); } } if (subtre->op == CON) switch(tree->op) { case NEG: subtre->value = -subtre->value; return(subtre); case COMPL: subtre->value = ~subtre->value; return(subtre); } tree->degree = max(1, degree(subtre)); return(tree); } struct acl { int nextl; int nextn; struct tnode *nlist[20]; struct tnode *llist[21]; }; acommute(atree) { struct acl acl; int d, i, op, flt; register struct tnode *t1, **t2, *tree; struct tnode *t; acl.nextl = 0; acl.nextn = 0; tree = atree; op = tree->op; flt = isfloat(tree); insert(op, tree, &acl); acl.nextl--; if (!flt) { /* put constants together */ t2 = &acl.llist[acl.nextl]; for (i=acl.nextl;i>0&&t2[0]->op==CON&&t2[-1]->op==CON;i--) { acl.nextl--; t2--; const(op, &t2[0]->value, t2[1]->value); } } if (op==PLUS && !flt) { /* toss out "+0" */ if (acl.nextl>0 && (*t2)->op==CON && (*t2)->value==0) { acl.nextl--; t2--; } if (acl.nextl <= 0) return(*t2); /* subsume constant in "&x+c" */ if (t2[0]->op==CON && (t2[-1]->op==AMPER || t2[-1]->op==AMPERA)) { t2--; t2[0]->tr1->offset =+ t2[1]->value; acl.nextl--; } } else if (op==TIMES) { t1 = acl.llist[acl.nextl]; if (t1->op==CON && t1->value==0) return(t1); } if (op==PLUS && !flt) distrib(&acl); tree = *(t2 = &acl.llist[0]); d = max(degree(tree), 1); if (op==TIMES && !flt) d++; for (i=0; itr2 = t = *++t2; t1->degree = d = degree(t)>=d? d+1:d; t1->tr1 = tree; tree = t1; } if (tree->op==TIMES && ispow2(tree)) tree->degree = max(degree(tree->tr1), 1); return(tree); } distrib(list) struct acl *list; { /* * Find a list member of the form c1c2*x such * that c1c2 divides no other such constant, is divided by * at least one other (say in the form c1*y), and which has * fewest divisors. Reduce this pair to c1*(y+c2*x) * and iterate until no reductions occur. */ register struct tnode **p1, **p2; struct tnode *t; int ndmaj, ndmin; struct tnode **dividend, **divisor; struct tnode **maxnod, **mindiv; loop: maxnod = &list->llist[list->nextl]; ndmaj = 1000; dividend = 0; for (p1 = list->llist; p1 <= maxnod; p1++) { if ((*p1)->op!=TIMES || (*p1)->tr2->op!=CON) continue; ndmin = 0; for (p2 = list->llist; p2 <= maxnod; p2++) { if (p1==p2 || (*p2)->op!=TIMES || (*p2)->tr2->op!=CON) continue; if ((*p1)->tr2->value == (*p2)->tr2->value) { (*p2)->tr2 = (*p1)->tr1; (*p2)->op = PLUS; (*p1)->tr1 = (*p2); *p1 = optim(*p1); squash(p2, maxnod); list->nextl--; goto loop; } if (((*p2)->tr2->value % (*p1)->tr2->value) == 0) goto contmaj; if (((*p1)->tr2->value % (*p2)->tr2->value) == 0) { ndmin++; mindiv = p2; } } if (ndmin > 0 && ndmin < ndmaj) { ndmaj = ndmin; dividend = p1; divisor = mindiv; } contmaj:; } if (dividend==0) return; t = list->nlist[--list->nextn]; p1 = dividend; p2 = divisor; t->op = PLUS; t->type = (*p1)->type; t->tr1 = (*p1); t->tr2 = (*p2)->tr1; (*p1)->tr2->value =/ (*p2)->tr2->value; (*p2)->tr1 = t; t = optim(*p2); if (p1 < p2) { *p1 = t; squash(p2, maxnod); list->nextl--; goto loop; } *p2 = t; squash(p1, maxnod); list->nextl--; goto loop; } squash(p, maxp) struct tnode **p, **maxp; { register struct tnode **np; for (np = p; np < maxp; np++) *np = *(np+1); } const(op, vp, av) int *vp; { register int v; v = av; switch (op) { case PLUS: *vp =+ v; return; case TIMES: *vp =* v; return; case AND: *vp =& v; return; case OR: *vp =| v; return; case EXOR: *vp =^ v; return; case DIVIDE: case MOD: if (v==0) error("Divide check"); else if (op==DIVIDE) *vp =/ v; else *vp =% v; return; case RSHIFT: *vp =>> v; return; case LSHIFT: *vp =<< v; return; } error("C error: const"); } insert(op, atree, alist) struct acl *alist; { register d; register struct acl *list; register struct tnode *tree; int d1, i; struct tnode *t; tree = atree; list = alist; if (tree->op == op) { ins: list->nlist[list->nextn++] = tree; insert(op, tree->tr1, list); insert(op, tree->tr2, list); return; } tree = optim(tree); if (tree->op == op) goto ins; if (!isfloat(tree)) { /* c1*(x+c2) -> c1*x+c1*c2 */ if ((tree->op==TIMES||tree->op==LSHIFT) && tree->tr2->op==CON && tree->tr1->op==PLUS && tree->tr1->tr2->op==CON) { d = tree->tr2->value; if (tree->op==TIMES) tree->tr2->value =* tree->tr1->tr2->value; else tree->tr2->value = tree->tr1->tr2->value << d; tree->tr1->tr2->value = d; tree->tr1->op = tree->op; tree->op = PLUS; if (op==PLUS) goto ins; } } d = degree(tree); for (i=0; inextl; i++) { if ((d1=degree(list->llist[i]))llist[i]; list->llist[i] = tree; tree = t; d = d1; } } list->llist[list->nextl++] = tree; } putchar(c) { putc(c&0177, outbuf); } *+,-./0123456789:;<=>?@ABCDEFGHIJ# /* * C compiler */ #include "c1h.c" max(a, b) { if (a>b) return(a); return(b); } degree(at) struct tnode *at; { register struct tnode *t; if ((t=at)==0 || t->op==0) return(0); if (t->op == CON) return(-3); if (t->op == AMPER) return(-2); if (t->op == AMPERA) return(-1); if ((opdope[t->op] & LEAF) != 0) { if (t->type==CHAR) return(1); return(0); } return(t->degree); } pname(ap, flag) struct tnode *ap; { register i; register struct tnode *p; p = ap; loop: switch(p->op) { case SFCON: case CON: printf("$0%o", p->value); return; case FCON: printf("L%d", p->value); return; casename: case NAME: if (i = p->offset) printf("%d.+", i); switch(p->class) { case AUTO: printf("%d.(r5)", p->nloc); return; case EXTERN: printf("_%.8s", &(p->nloc)); return; case STRUCT: error("Illegal structure reference"); printf("$0"); return; case REG: if (i) error("Bad reg. reference"); printf("r%d", p->nloc); return; } /* presumably, it's static */ printf("L%d", p->nloc); return; case AMPER: putchar('$'); p = p->tr1; goto loop; case STAR: p = p->tr1; /* reg[const] or statchar[reg] */ if (p->op==PLUS) { if (p->tr2->op==AMPER) { pname(p->tr2->tr1, 0); printf("(r%d)", p->tr1->nloc); return; } printf("%d.(r%d)", p->tr2->value, p->tr1->nloc); return; } else if (p->op==INCAFT) { printf("(r%d)%c", p->tr1->nloc, flag?0:'+'); return; } else if (p->op==DECBEF) { printf("%c(r%d)", flag?0:'-', p->tr1->nloc); return; } else if (p->op==NAME && p->class==REG) { printf("(r%d)", p->nloc); return; } putchar('*'); goto loop; } error("pname called illegally"); } xdcalc(ap, nrleft) struct tnode *ap; { register struct tnode *p; register d; p = ap; d = dcalc(p, nrleft); if (d<20 && p->type==CHAR) { if (nrleft>=1) d = 20; else d = 24; } return(d); } dcalc(ap, nrleft) struct tnode *ap; { register struct tnode *p, *p1; if ((p=ap)==0) return(0); switch (p->op) { case NAME: case AMPER: return(12); case CON: case SFCON: return(p->value==0? 4:(p->value==1?5:8)); case FCON: return(12); case STAR: p1 = p->tr1; if (p1->op==NAME || p1->op==CON) return(12); if (p1->op==STAR) p1 = p1->tr1; if (p1->op==PLUS && p1->tr1->op==NAME && p1->tr1->class==REG && p1->tr2->op==CON) return(12); if (p1->op==PLUS && p1->tr2->op==AMPER && p1->tr1->op==NAME && p1->tr2->type==(PTR+CHAR) && p1->tr1->class==REG) return(12); if ((p1->op==INCAFT || p1->op==DECBEF) && p1->tr1->type!=(STRUCT+PTR)) p1 = p1->tr1; if (p1->op==NAME && p1->class==REG) return(12); } return(p->degree<=nrleft? 20: 24); } notcompat(ap, ast) struct tnode *ap; { register at, st; register struct tnode *p; p = ap; at = p->type; st = ast; if ((at&07)==STRUCT) at =& 077770; /* map to int */ if (st==0) /* word, byte */ return(at>1 & at<=07); if (st==1) /* word */ return(at>0 & at<=07); st =- 2; if ((at&077740) != 0) at = 020; if ((at&077770) != 0) at = at&07 | 020; if (st==2 && at==3) at = 2; if (p->op==NAME && p->class==REG && at==INT && st==CHAR) return(0); return(st != at); } prins(op, c) { register struct instab *insp; register char *ip; for (insp=instab; insp->op != 0; insp++) { if (insp->op == op) { ip = c? insp->str2: insp->str1; if (ip==0) break; printf("%s", ip); return; } } error("No match' for op %d", op); } collcon(ap) struct tnode *ap; { register op; register struct tnode *p; p = ap; if(p->op==PLUS) { op = p->tr2->op; if (op==CON || op==AMPER || op==AMPERA) return(1); } return(0); } isfloat(at) struct tnode *at; { register struct tnode *t; t = at; if ((opdope[t->op]&RELAT)!=0) t = t->tr1; if (t->type==FLOAT || t->type==DOUBLE) { nfloat = 1; return('f'); } return(0); } oddreg(t, areg) struct tnode *t; { register reg; reg = areg; if (!isfloat(t)) switch(t->op) { case DIVIDE: case MOD: case ASDIV: case ASMOD: reg++; case TIMES: case ASTIMES: return(reg|1); } return(reg); } arlength(t) { if (t>=PTR) return(2); switch(t) { case INT: case CHAR: return(2); case FLOAT: case DOUBLE: return(8); } return(1024); } pswitch(afp, alp, deflab) struct swtab *afp, *alp; { int tlab, ncase, i, j, tabs, worst, best, range; register struct swtab *swp, *fp, *lp; int poctab[swsiz]; fp = afp; lp = alp; if (fp==lp) { printf("jbr L%d\n", deflab); return; } tlab = isn++; if (sort(fp, lp)) return; ncase = lp-fp; lp--; range = lp->swval - fp->swval; /* direct switch */ if (range>0 && range <= 3*ncase) { if (fp->swval) printf("sub $0%o,r0\n", fp->swval); printf("cmp r0,$0%o\n", range); printf("jhi L%d\n", deflab); printf("asl r0\n"); printf("jmp *.+4(r0)\n"); for (i=fp->swval; i<=lp->swval; i++) { if (i==fp->swval) { printf("L%d\n", fp->swlab); fp++; } else printf("L%d\n", deflab); } goto esw; } /* simple switch */ if (ncase<8) { i = isn++; j = isn++; printf("mov $L%d,r1\n", i); printf("mov r0,L%d\n", j); printf("L%d:cmp r0,(r1)+\n", isn); printf("jne L%d\n", isn++); printf("jmp *L%d-L%d(r1)\n", j, i); printf(".data\nL%d:", i); for (; fp<=lp; fp++) printf("%o\n", fp->swval); printf("L%d:..\n", j); for (fp = afp; fp<=lp; fp++) printf("L%d\n", fp->swlab); printf("L%d\n.text\n", deflab); goto esw; } /* hash switch */ best = 077777; for (i=ncase/4; i<=ncase/2; i++) { for (j=0; jswval, i)]++; worst = 0; for (j=0; jworst) worst = poctab[j]; if (i*worst < best) { tabs = i; best = i*worst; } } printf("jsr r2,hsw; %o; L%d\n", tabs, isn); printf("jmp *L%d-L%d(r1)\n", isn+tabs+1, isn+1); printf(".data\nL%d:", isn++); for (i=0; i<=tabs; i++) printf("L%d\n", isn+i); for (i=0; iswval, tabs) == i) printf("%o\n", ldiv(0, swp->swval, tabs)); } printf("L%d:", isn++); for (i=0; iswval, tabs) == i) printf("L%d\n", swp->swlab); } printf(".text\n"); esw: printf("/esw\n"); } sort(afp, alp) struct swtab *afp, *alp; { register struct swtab *cp, *fp, *lp; int intch, t; fp = afp; lp = alp; while (fp < --lp) { intch = 0; for (cp=fp; cpswval == cp[1].swval) { error("Duplicate case (%d)", cp->swval); return(1); } if (cp->swval > cp[1].swval) { intch++; t = cp->swval; cp->swval = cp[1].swval; cp[1].swval = t; t = cp->swlab; cp->swlab = cp[1].swlab; cp[1].swlab = t; } } if (intch==0) break; } return(0); } ispow2(atree) { register int d; register struct tnode *tree; tree = atree; if (!isfloat(tree) && tree->tr2->op==CON) { d = tree->tr2->value; if (d>0 && (d&(d-1))==0) return(d); } return(0); } pow2(atree) struct tnode *atree; { register int d, i; register struct tnode *tree; tree = atree; if (d = ispow2(tree)) { for (i=0; (d=>>1)!=0; i++); tree->tr2->value = i; d = tree->op; tree->op = d==TIMES? LSHIFT: (d==DIVIDE? RSHIFT: (d==ASTIMES? ASLSH: ASRSH)); } } cbranch(atree, albl, cond, areg) struct tnode *atree; { int l1, opfix; register lbl, reg; register struct tnode *tree; struct tnode lbuf; lbl = albl; reg = areg; if ((tree=atree)==0) return; switch(tree->op) { case LOGAND: if (cond) { cbranch(tree->tr1, l1=isn++, 0, reg); cbranch(tree->tr2, lbl, 1, reg); label(l1); } else { cbranch(tree->tr1, lbl, 0, reg); cbranch(tree->tr2, lbl, 0, reg); } return; case LOGOR: if (cond) { cbranch(tree->tr1, lbl, 1, reg); cbranch(tree->tr2, lbl, 1, reg); } else { cbranch(tree->tr1, l1=isn++, 1, reg); cbranch(tree->tr2, lbl, 0, reg); label(l1); } return; case EXCLA: cbranch(tree->tr1, lbl, !cond, reg); return; case COMMA: rcexpr(tree->tr1, efftab, reg); tree = tree->tr2; break; } opfix = 0; if ((opdope[tree->op]&RELAT)==0) { lbuf.op = NEQUAL; lbuf.type = tree->type; lbuf.degree = tree->degree; lbuf.tr1 = tree; lbuf.tr2 = &czero; if (isfloat(tree)) lbuf.tr2 = &fczero; tree = &lbuf; } if (tree->tr2->op==CON && tree->tr2->value==0) opfix = 200; rcexpr(tree, cctab, reg); if (isfloat(tree)) printf("cfcc\n"); branch(lbl, tree->op+opfix, !cond); } branch(lbl, aop, c) { register op; if(op=aop) prins(op,c); else printf("jbr"); printf("\tL%d\n", lbl); } label(l) { printf("L%d:", l); } popstk(a) { switch(a) { case 0: return; case 2: printf("tst (sp)+\n"); return; case 4: printf("cmp (sp)+,(sp)+\n"); return; } printf("add $0%o,sp\n", a); } error(s, p1, p2, p3, p4, p5, p6) { register f; nerror++; fflush(outbuf); f = outbuf[0]; outbuf[0] = 1; printf("%d: ", line); printf(s, p1, p2, p3, p4, p5, p6); putchar('\n'); fflush(outbuf); outbuf[0] = f; } LMNOPQRSTUVWXYZ[\]int opdope[] { 000000, /* EOF */ 000000, /* ; */ 000000, /* { */ 000000, /* } */ 036000, /* [ */ 002000, /* ] */ 036000, /* ( */ 002000, /* ) */ 014201, /* : */ 007001, /* , */ 000000, /* 10 */ 000000, /* 11 */ 000000, /* 12 */ 000000, /* 13 */ 000000, /* 14 */ 000000, /* 15 */ 000000, /* 16 */ 000000, /* 17 */ 000000, /* 18 */ 000000, /* 19 */ 000400, /* name */ 000400, /* short constant */ 000400, /* string */ 000400, /* float */ 000400, /* double */ 000000, /* 25 */ 000000, /* 26 */ 000000, /* 27 */ 000000, /* 28 */ 000000, /* 29 */ 034202, /* ++pre */ 034202, /* --pre */ 034202, /* ++post */ 034202, /* --post */ 034220, /* !un */ 034202, /* &un */ 034220, /* *un */ 034200, /* -un */ 034220, /* ~un */ 036001, /* . (structure reference) */ 030101, /* + */ 030001, /* - */ 032101, /* * */ 032001, /* / */ 032001, /* % */ 026061, /* >> */ 026061, /* << */ 020161, /* & */ 016161, /* | */ 016161, /* ^ */ 036001, /* -> */ 000000, /* int -> double */ 000000, /* double -> int */ 000001, /* && */ 000001, /* || */ 000000, /* 55 */ 000000, /* 56 */ 000000, /* 57 */ 000000, /* 58 */ 000000, /* 59 */ 022005, /* == */ 022005, /* != */ 024005, /* <= */ 024005, /* < */ 024005, /* >= */ 024005, /* > */ 024005, /*

p */ 024005, /* >=p */ 012213, /* =+ */ 012213, /* =- */ 012213, /* =* */ 012213, /* =/ */ 012213, /* =% */ 012253, /* =>> */ 012253, /* =<< */ 012253, /* =& */ 012253, /* =| */ 012253, /* =^ */ 012213, /* = */ 000000, /* 81 */ 000000, /* 82 */ 000000, /* 83 */ 000000, /* 84 */ 000000, /* 85 */ 000000, /* 86 */ 000000, /* 87 */ 000000, /* 88 */ 000000, /* 89 */ 014201, /* ? */ 000000, /* 91 */ 000000, /* 92 */ 000000, /* 93 */ 000000, /* 94 */ 000000, /* 95 */ 000000, /* 96 */ 000000, /* 97 */ 000000, /* 98 */ 000000, /* 99 */ 036001, /* call */ 036001, /* mcall */ 000000, /* goto */ 000000, /* jump cond */ 000000, /* branch cond */ 000400, /* set nregs */ 000000, /* 106 */ 000000, /* 107 */ 000000, /* 108 */ 000000, /* 109 */ 000000 /* force r0 */ }; /* * C pass 2 header */ struct tnode { int op; int type; int degree; struct tnode *tr1, *tr2; }; struct bnode { int bop; struct tnode *btree; int lbl; int cond; }; struct tname { int nop; int ntype; int elsize; int class; int offset; int nloc; }; struct tconst { int cop; int ctype; int cdeg; int value; }; struct optab { char tabdeg1; char tabtyp1; char tabdeg2; char tabtyp2; char *tabstring; }; struct table { int tabop; struct optab *tabp; }; struct instab { int iop; char *str1; char *str2; }; struct swtab { int swlab; int swval; }; char maprel[]; char notrel[]; int nreg; int isn; int namsiz; int line; char binbuf[518]; char ascbuf[518]; char outbuf[518]; int nerror; struct table cctab[]; struct table efftab[]; struct table regtab[]; struct table sptab[]; struct table lsptab[]; struct instab instab[]; int opdope[]; int nstack; int nfloat; struct tconst czero, cone, fczero; #define swsiz 200 #define ossiz 500 /* operators */ #define EOF 0 #define SEMI 1 #define LBRACE 2 #define RBRACE 3 #define LBRACK 4 #define RBRACK 5 #define LPARN 6 #define RPARN 7 #define COLON 8 #define COMMA 9 #define KEYW 19 #define NAME 20 #define CON 21 #define STRING 22 #define FCON 23 #define SFCON 24 #define INCBEF 30 #define DECBEF 31 #define INCAFT 32 #define DECAFT 33 #define EXCLA 34 #define AMPERA 29 #define AMPER 35 #define STAR 36 #define NEG 37 #define COMPL 38 #define DOT 39 #define PLUS 40 #define MINUS 41 #define TIMES 42 #define DIVIDE 43 #define MOD 44 #define RSHIFT 45 #define LSHIFT 46 #define AND 47 #define OR 48 #define EXOR 49 #define ARROW 50 #define ITOF 51 #define FTOI 52 #define LOGAND 53 #define LOGOR 54 #define EQUAL 60 #define NEQUAL 61 #define LESSEQ 62 #define LESS 63 #define GREATEQ 64 #define GREAT 65 #define LESSP 66 #define LESSEQP 67 #define GREATP 68 #define GREATQP 69 #define ASPLUS 70 #define ASMINUS 71 #define ASTIMES 72 #define ASDIV 73 #define ASMOD 74 #define ASRSH 75 #define ASLSH 76 #define ASSAND 77 #define ASOR 78 #define ASXOR 79 #define ASSIGN 80 #define QUEST 90 #define CALL 100 #define MCALL 101 #define JUMP 102 #define CBRANCH 103 #define INIT 104 #define SETREG 105 #define LOAD 106 #define RFORCE 110 #define BRANCH 111 #define LABEL 112 /* types */ #define INT 0 #define CHAR 1 #define FLOAT 2 #define DOUBLE 3 #define STRUCT 4 #define RSTRUCT 5 #define PTR 010 #define FUNC 020 #define ARRAY 030 /* storage classes */ #define KEYWC 1 #define MOS 4 #define AUTO 5 #define EXTERN 6 #define STATIC 7 #define REG 8 #define STRTAG 9 #define ARG 10 /* Flag bits */ #define BINARY 01 #define LVALUE 02 #define RELAT 04 #define ASSGOP 010 #define LWORD 020 #define RWORD 040 #define COMMUTE 0100 #define RASSOC 0200 #define LEAF 0400 / C operator tables .globl fltused; fltused=. .globl _instab .data _instab: 40.; 1f; 3f; .text; 1:; .data 70.; 1b; 3f 41.; 2f; 4f; .text; 2:; .data 71.; 2b; 4f 30.; 3f; 1b; .text; 3:; .data 31.; 4f; 2b; .text; 4:; .data 32.; 3b; 1b 33.; 4b; 2b 60.; 0f; 1f; .text; 0:; 1:; .data 61.; 1b; 0b 62.; 2f; 5f; .text; 2:; 5:; .data 63.; 3f; 4f; .text; 3:; 4:; .data 64.; 4b; 3b 65.; 5b; 2b 66.; 6f; 9f; .text; 6:; 9:; .data 67.; 7f; 8f; .text; 7:; 8:; .data 68.; 8b; 7b 69.; 9b; 6b 260.; 0b; 1b 261.; 1b; 0b 262.; 2b; 5b 263.; 3b; 4b 264.; 4b; 3b 265.; 5b; 2b 266.; 0b; 1b 267.; 7f; 8f; .text; 7:; 8:; .data 268.; 8b; 7b 269.; 1b; 0b 0 / c code tables-- set condition codes .globl _cctab .data _cctab=. 106.; rest 28.; rest 21.; rest 22.; rest 30.; rest 31.; rest 34.; rest 35.; rest 36.; rest 37.; rest 40.; rest 41.; rest 42.; rest 43.; rest 45.; rest 46.; rest 47.; cc47 48.; rest 60.; cc60 61.; cc60 62.; cc60 63.; cc60 64.; cc60 65.; cc60 66.; cc60 67.; cc60 68.; cc60 69.; cc60 70.; rest 71.; rest 72.; rest 73.; rest 75.; rest 76.; rest 77.; rest 78.; rest 79.; rest 80.; rest 0 .text / relationals cc60: %a,z %ad,zf tstB1 A1 %n*,z %nd*,zf F* tstB1 #1(R) %n,z %nf,zf FC %aw,aw %ab,ab cmpBE A1,A2 %nw*,aw %nb*,ab F* cmpBE #1(R),A2 %n,aw %nf,ad F V cmpB2 A2,R %nw*,ew* %nb*,eb* F* S1* cmpBE #1(R),#2(R1) %nw*,e %nd*,ef F* S1 cmpB1 #1(R),R1 %n,ew* %nf,ed* F S1* V cmpB2 #2(R1),R %n,e %nf,ef F S1 cmpBF R,R1 %nw*,nw* %nb*,nb* FS* S* cmpBE *(sp)+,#2(R) %nw*,n %nd*,nf FS* S cmpB1 *(sp)+,R %n,nw* FS S* cmp (sp)+,#2(R) %n,n %nf,nf SS F V cmpBF (sp)+,R / & as in "if ((a&b) ==0)" cc47: %a,a bitBE A2,A1 %n*,a F* bitBE A2,#1(R) %n,a F bitB2 A2,R %n,e F S1 bit R1,R %n,n FS S bit (sp)+,R / set codes right rest: %n,n %nf,nf H .data .even .text €ö" ð€&Ð 6÷ –% ‰w š 5ìÿ5öÿ5ôÿ5ðÿW- @&ß `Ö 7° Î? ß ¦_òW-ζ@&ß BÖ 7š"Î? ß ¦_ò÷ n5øÿW-øÿ W-øÿ 5 ôÿõ ìÿ W-øÿ%5 ìÿÎ ß ú@øÿ_ÔÎ ß ú÷ _òõ ðÿÎ ß úÎ:ß ¦Ì÷ 5øÿÀ%1W-øÿ2NøÿÎeß ¦ºÎOß ¦wøÿÚ²÷ ÒÎCß ¦ªÎDß ¦¥ÎLß ¦ ÎPß ¦› ÷ ~&102:EDFhÎ?ß ¦‰÷ €Îeß ¦�ÎGß ¦,÷ f5øÿÀ%1ÎJß ¦ÎIß ¦wøÿF_„ÎHß ¦ÎMß ¦_„ÎVß ¦µ öÿ_„ÎKß ¦õöÿõAòÿ÷ 5øÿµ òÿøõeòÿôõeòÿðõeòÿìõeòÿè÷ ¬ú*12CS>wøÿ´Nòÿß ¦_„÷ ¢À%1Î#ß ¦Î"ß ¦_„õ ðÿÎ ß ú÷ t5øÿbõîÿ÷ â5òÿ2Î;ß ¦îõ îÿ÷ È5òÿ%õîÿ÷ ¸5òÿõîÿ÷ ¨5òÿ5 òÿõîÿ÷ ’5òÿõîÿ÷ ‚5òÿõ?îÿ÷ ö5øÿÀ%*õe@îÿwøÿàNòÿfîÿæ$ ß ú–%©Î0 ß úõìÿõôÿõðÿ_„÷ .VZ6 H Nøÿß ¦�õ ôÿ5 ôÿ_„Î ß ¦_„õ ðÿÎ ß ¦_„õ ôÿ 5 ôÿÎ^ ß ú5 ðÿ_„õ öÿÎj ß ú5 öÿÎn ß úõôÿ_„µ öÿ ÷ ¦Þær „ š ´ Nøÿß ¦_„wÌw º5 öÿ÷ ôõîøÿ7 è÷ ê5øÿõ øÿ &W-øÿ{µ öÿ÷ Ì5øÿW-øÿ}÷ ²ÿ5øÿõ öÿW-øÿ ÷ œÿ5øÿõ öÿ÷ ŽË@øÿwNw < ÷ vÿÃùÃöÃóÃðÃíÃêÃeçÀåb ƒÀ xÂ�îœî–îîŠîîîîîî¨îî¢îîî„7ÀwÈw ¶€wDÄeÀŸö · ð %ß ¦ôwš7 Ü7 ÒׯÒ-· Ê· È÷,#7 À .÷#ƒÓ ÁhBÝ üJˆdÎoôfþe¶cÀs”l Ó•-÷ 6 r f÷ ðÿ€Àe0�‡•à •$Á>“”C~÷ fWtýÿÁEà÷ ðÿ€ÀEøÿÀe0�‡Â÷  Â÷ –‚Ò Â ƒó‹ÿÿà ùÎ ÁâÁàŠ�`wâ÷ Öß ¦÷ Òû·ÊΟÆ· Àß ¦ø÷ ¸ ÷ ¬Î ß ¦÷ ¤ûwœþ7 – ÀŸŒ· ˆÀå0 ‚· ~Wp `ñÀe0[ƒÄeÓ•?‡f…@÷ ^÷VwBw D#@�w 8#×-<w J#@7 wÂf…ww 0#7 w¬f…÷ ô÷!îÀæ‰! ‡À À 7Ö ÀßÒ· Î…‡7Þ 7 ¾…‡f…wxwt‰Â †wHwLf…w`w\‰È †w*w.�¦æ ‘rà CdÃÂÀ$üƒ‚ƒ‚Y7nÀÿÿF…‡Õ @…&æ¦äHÅåF‚ƒ„…‡�¦B@$ü‚‚YfA7ä‰Î ‡  �…Ñÿÿ�±…fAñ &÷ €ø9�± �…&fA÷ �€…@Àe&7°w¬·ã¦@‰ð ±ñ‡.data 1:<.text; 0 =.+2; 0.text;.byte %o,%o;1f , ˜,în²zÂ1ˆaÒcÞe¢i\0> .text \n> <¶HÎTÎXd p%ìAÀIÎY~ Ò: B‚FŒRÌVP#rCÜS‰‰‰¶w w&w $ç€Àw ç…‰ int nofloat; int peekc; main(argc, argv) char **argv; { /* A1 -> A A2 B A O B1 C B2 D BE L BF P C1 E C2 F F G H H R I R1 J S K I M M N * +1 S +2 C +4 1 +8 z -> 4 c 10 a 14 e 20 n 63 * +0100 */ auto c,snlflg,nlflg,t,smode,m,ssmode; extern fin, fout; smode = nlflg = snlflg = ssmode = 0; if (argc>1) if ((fin = open(argv[1], 0)) < 0) { putchar('?\n'); return; } if (argc>2) if ((fout = creat(argv[2], 0666)) < 0) { putchar('?\n'); return; } loop: c = getc(); if (c!='\n' && c!='\t') nlflg = 0; if (ssmode!=0 && c!='%') { ssmode = 0; printf(".data\n1:<"); } switch(c) { case '\0': printf(".text; 0\n"); flush(); return; case ':': if (!smode) printf("=.+2; 0"); else putchar(':'); goto loop; case 'A': if ((c=getc())=='1' || c=='2') { putchar(c+'A'-'1'); goto loop; } putchar('O'); peekc = c; goto loop; case 'B': switch (getc()) { case '1': putchar('C'); goto loop; case '2': putchar('D'); goto loop; case 'E': putchar('L'); goto loop; case 'F': putchar('P'); goto loop; } putchar('?'); goto loop; case 'C': putchar(getc()+'E'-'1'); goto loop; case 'F': putchar('G'); goto subtre; case 'R': if ((c=getc()) == '1') putchar('J'); else { putchar('I'); peekc = c; } goto loop; case 'H': putchar('H'); goto subtre; case 'I': putchar('M'); goto loop; case 'V': putchar('V'); snlflg++; goto loop; case 'S': putchar('K'); subtre: snlflg = 1; t = 'A'; l1: switch (c=getc()) { case '*': t++; goto l1; case 'S': t =+ 2; goto l1; case 'C': t =+ 4; goto l1; case '1': t =+ 8; goto l1; case '2': t =+ 16; goto l1; } peekc = c; putchar(t); goto loop; case '#': if(getc()=='1') putchar('#'); else putchar('"'); goto loop; case '%': if (smode) printf(".text;"); loop1: switch (c=getc()) { case 'a': m = 16; t = flag(); goto pf; case ',': putchar(';'); goto loop1; case 'i': m = 12; t = flag(); goto pf; case 'z': m = 4; t = flag(); goto pf; case '1': m = 5; t = flag(); goto pf; case 'c': t = 0; m = 8; goto pf; case 'e': t = flag(); m = 20; goto pf; case 'n': t = flag(); m = 63; pf: if ((c=getc())=='*') m =+ 0100; else peekc = c; printf(".byte %o,%o", m, t); goto loop1; case '\n': printf(";1f\n"); ssmode = 1; nlflg = 1; smode = 1; goto loop; } putchar(c); goto loop1; case '\t': if (nlflg) { nlflg = 0; goto loop; } putchar('\t'); goto loop; case '\n': if (!smode) { putchar('\n'); goto loop; } if (nlflg) { nlflg = 0; printf("\\0>\n.text\n"); smode = 0; goto loop; } if (!snlflg) printf("\\n"); snlflg = 0; printf(">\n<"); nlflg = 1; goto loop; case 'X': case 'Y': case 'T': snlflg++; } putchar(c); goto loop; } getc() { auto t, ifcnt; ifcnt = 0; gc: if (peekc) { t = peekc; peekc = 0; } else t = getchar(); if (t==0) return(0); if (t=='{') { ifcnt++; t = getchar(); } if (t=='}') { t = getc(); if (--ifcnt==0) if (t=='\n') t = getc(); } if (ifcnt && nofloat) goto gc; return(t); } flag() { register c, f; f = 0; l1: switch(c=getc()) { case 'w': f = 1; goto l1; case 'i': f = 2; goto l1; case 'b': f = 3; goto l1; case 'f': f = 4; goto l1; case 'd': f = 5; goto l1; case 's': f = 6; goto l1; case 'p': f =+ 16; goto l1; } peekc = c; return(f); } / c code tables .globl _efftab .data _efftab=. 30.; ci30 31.; ci30 32.; ci30 / same as 30 33.; ci30 / same as 31 80.; ci80 70.; ci70 71.; ci70 / - like + 77.; ci77 78.; ci78 75.; ci75 76.; ci76 0 .text / ++,-- prefix, postfix ci30: %ai,n %abp,n %ab,n IB1 A1 %aip,n %adp,n %afp,n I' $^,A1 %nbp*,n %ni*,n %nb*,n F* IB1 #1(R) %nip*,n %ndp*,n %nfp*,n F* I' $^,#1(R) / = ci80: %a,z %ad,zf clrB1 A1 %n*,z %nd*,zf F* clrB1 #1(R) %a,aw %ab,a movBE A2,A1 %ab,n* %a,nw* S* movBE #2(R),A1 %a,n S movB1 R,A1 %n*,aw %nb*,a F* movBE A2,#1(R) %n*,ew* %nb*,e* F* S1* movBE #2(R1),#1(R) %n*,e F* S1 movBE R1,#1(R) %e*,nw* %eb*,n* S* F1* movBE #2(R),#1(R1) %e*,n S F1* movB1 R,#1(R1) %n*,nw* %nb*,n* FS* S* movBE #2(R),*(sp)+ %n*,n FS* S movBE R,*(sp)+ / =| i ci78: %a,a bisBE A2,A1 %a,n S bisB1 R,A1 %n*,a F* bisBE A2,#1(R) %e*,n* S* F1* bisBE #2(R),#1(R1) %e*,n S F1* bisBE R,#1(R1) %n*,e* F* S1* bisBE #2(R1),#1(R) %n*,e F* S1 bisBE R1,#1(R) %n*,n* FS* S* bisBE #2(R),*(sp)+ %n*,n FS* S bisBE R,*(sp)+ / =& i ci77: %a,c bicB1 $!C2,A1 %a,n S com R bicB1 R,A1 %n*,c F* bicB1 $!C2,#1(R) %e*,n S F1* com R bicB1 R,#1(R1) %n*,e F* S1 com R1 bicB1 R1,#1(R) %n*,n FS* S com R bicB1 R,*(sp)+ / =+ ci70: %a,1 I'B1 A1 %aw,aw I A2,A1 %aw,nw* S* I #2(R),A1 %aw,n S I R,A1 %n*,1 F* I'B1 #1(R) %ew*,nw* S* F1* I #2(R),#1(R1) %a,nw* S* movB1 A1',R1 I #2(R),R1 movB1 R1,A1 %a,n S movB1 A1',R1 I R,R1 movB1 R1,A1 %ew*,n S F1* I R,#1(R1) %nw*,n SS F* I (sp)+,#1(R) %n*,n SS F* movB1 #1(R),R1 I (sp)+,R1 movB1 R1,#1(R) / =>> ci75: %n,z %a,1 asrB1 A1 %n*,1 F* asrB1 #1(R) / =<< ci76: %n,z %a,1 aslB1 A1 %n*,1 F* aslB1 #1(R) .data .even / c code tables-- compile to register .globl _regtab .data _regtab=. 106.; cr106 30.; cr30 31.; cr30 32.; cr32 33.; cr32 34.; cr34 35.; cr35 29.; cr29 36.; cr36 37.; cr37 38.; cr38 101.; cr100 80.; cr80 40.; cr40 41.; cr40 / - like + 42.; cr42 43.; cr43 44.; cr43 45.; cr45 46.; cr46 47.; cr47 48.; cr48 49.; cr49 70.; cr70 71.; cr70 72.; cr72 73.; cr73 74.; cr74 75.; cr75 76.; cr76 77.; cr77 78.; cr78 79.; cr79 102.; cr102 51.; cr51 52.; cr52 104.; cr104 0 .text / init expression cr104: %c,n C1 %a,n %af,n A1 / goto cr102: %i,n jmp A1 %n*,n F* jmp #1(R) / call cr100: %a,n %a,nf jsr pc,`A1 %n*,n %n*,nf F* jsr pc,#1(R) %n,n %n,nf F jsr pc,(R) / addressible cr106: %z,n clr R %zf,n clrf R %a,n movB1 A1,R %ad,n movf A1,R %af,n movof A1,R /++,-- prefix cr30: %ai,n %abp,n %ab,n IB1 A1' movB1 A1,R %adp,n %afp,n %a,n I' $^,A1' mov A1,R %nbp*,n %ni*,n %nb*,n F* IB1 #1(R) movB1 #1(R),R %ndp*,n %nfp*,n %n*,n F* I' $^,#1(R) mov #1(R),R / ++,-- postfix cr32: %ai,n %abp,n %ab,n movB1 A1',R IB1 A1 %adp,n %afp,n %a,n mov A1',R I' $^,A1 %nbp*,n %nb*,n %ni*,n F* movB1 #1(R),-(sp) IB1 #1(R) movB1 (sp)+,R %ndp*,n %nfp*,n %n*,n F* mov #1(R),-(sp) I' $^,#1(R) mov (sp)+,R / ! cr34: %n,n FC beq 1f clr R br 2f 1: mov $1,R 2: / &unary cr35: %a,n %af,n mov $A1,R / & unary of auto cr29: %e,n %ef,n mov r5,R add Z,R / *unary cr36: %nbp*,n F* movb *#1(R),R %ndp*,n F* movf *#1(R),R %nfp*,n F* movof *#1(R),R %n*,n F* mov *#1(R),R %abp,n movb *A1,R %adp,n movf *A1,R %afp,n movof *A1,R %a,n mov *A1,R %nbp,n H* movb ~(R),R %ndp,n H* movf ~(R),R %nfp,n H* movof ~(R),R %n,n H* mov ~(R),R / - unary cr37: %n,n %nf,n F negBF R / ~ cr38: %n,n F com R / = cr80: %a,n %ad,nf S movB1 R,A1 %af,nf S movfo R,A1 %nd*,af F* S movf R,#1(R) %n*,a F* movB1 A2,#1(R) movB1 #1(R),R %nf*,af F* S movfo R,#1(R) %n*,e F* S1 movB1 R1,#1(R) movB1 R1,R %ed*,nf S F1* movf R,#1(R1) %ef*,nf S F1* movfo R,#1(R1) %n*,n %nd*,nf FS* S movB1 R,*(sp)+ %nf*,nf FS* S movfo R,*(sp)+ %a,nf S movfi R,R movB1 R,A1 %e*,nf S F1* movfi R,R movB1 R,#1(R1) %n*,nf FS* S movfi R,R movB1 R,*(sp)+ / ^ -- xor cr49: %n,e F S1 xor R1,R %n,n FS S xor R,(sp) mov (sp)+,R / | cr48: %n,a F bisB2 A2,R %n,e* F S1* bisB2 #2(R1),R %n,e F S1 bis R1,R %n,n FS S bis (sp)+,R / & cr47: %n,c F bic $!C2,R %n,e F S1 com R1 bic R1,R %n,n FS S com (sp) bic (sp)+,R / >> cr45: %n,z F %n,1 F asr R %n,c F ash $-C2,R %n,e F S1 neg R1 ash R1,R %n,n SS neg (sp) F ash (sp)+,R / << cr46: %n,z F %n,1 F asl R %n,aw F ash A2,R %n,ew* F S1* ash #1(R1),R %n,e F S1 ash R1,R %n,n SS F ash (sp)+,R / +, - cr40: %n,z F %n,1 F I' R %n,aw %nf,ad F IBF A2,R %n,ew* %nf,ed* F S1* IBF #2(R1),R %n,e %nf,ef F S1 IBF R1,R %n,nw* %nf,nd* SS* F IBF *(sp)+,R %n,n %nf,nf SS F IBF (sp)+,R / * -- R must be odd on integers cr42: %n,aw %nf,ad F mulBF A2,R %n,ew* %nf,ed* F S1* mulBF #2(R1),R %n,e %nf,ef F S1 mulBF R1,R %n,n %nf,nf SS F mulBF (sp)+,R / / R must be odd on integers cr43: %n,aw F T sxt R- div A2,R- %n,ew* F T sxt R- S1* div #2(R1),R- %n,e F T sxt R- S1 div R1,R- %n,n SS F T sxt R- div (sp)+,R- %nf,ad F divf A2,R %nf,ed* F S1* divf #2(R1),R %nf,ef F S1 divf R1,R %nf,nf SS F divf (sp)+,R / =* cr72: %a,aw %ad,ad movB1 A1',R mulBF A2,R movB1 R,A1 %af,nf SS movof A1',R mulf (sp)+,R movfo R,A1 %a,ew* %ad,ed* movB1 A1',R S1* mulBF #2(R1),R movB1 R,A1 %aw,n %ad,n S mulBF A1',R movBF R,A1 %a,n SS movB1 A1',R mulBF (sp)+,R movB1 R,A1 %nw*,n %nd*,nf FS* S mulBF *(sp),R movB1 R,*(sp)+ %n*,n FS* SS movB1 *2(sp),R mul (sp)+,R movB1 R,*(sp)+ %nf*,nf FS* movof *(sp),R movf R,-(sp) S mulf (sp)+,R movfo R,*(sp)+ / =/ ; R must be odd on integers cr73: %a,aw movB1 A1',R sxt R- divBF A2,R- movB1 R-,A1 %a,n SS movB1 A1',R sxt R- div (sp)+,R- movB1 R-,A1 %e*,n SS F1* movB1 #1(R1),R sxt R- div (sp)+,R- movB1 R-,#1(R1) %n*,n FS* SS movB1 *2(sp),R sxt R- div (sp)+,R- movB1 R-,*(sp)+ %ad,ad movf A1',R divf A2,R movf R,A1 %ad,ef movf A1',R S1 divf R1,R movf R,A1 %ad,nf SS movf A1',R divf (sp)+,R movf R,A1 %af,nf SS movof A1',R divf (sp)+,R movfo R,A1 %nd*,nf FS* SS movf *8(sp),R divf (sp)+,R movf R,*(sp)+ %nf*,nf FS* SS movof *8(sp),R divf (sp)+,R movfo R,*(sp)+ / =mod; R must be odd on integers cr74: %a,aw movB1 A1',R sxt R- div A2,R- movB1 R,A1 %a,n SS movB1 A1',R sxt R- div (sp)+,R- movB1 R,A1 %e*,n SS F1* movB1 #1(R1),R sxt R- div (sp)+,R- movB1 R,#1(R1) %n*,n FS* SS movB1 *2(sp),R sxt R- div (sp)+,R mov R,*(sp)+ / =| cr78: %a,a bisBE A2,A1' movB1 A1,R %a,n S bisB1 R,A1' movB1 A1,R %n*,a F* bisBE A2,#1(R) movB1 #1(R),R %e*,n* S* F1* bisBE #1(R1),#2(R) movB1 #2(R),R %e*,n S F1* bisBE R,#1(R1) movB1 #1(R1),R %n*,e* F* S1* bisBE #2(R1),#1(R) movB1 #1(R),R %n*,e F* S1 bisBE R1,#1(R) movB2 #1(R),R %n*,n* FS* S* bisBE #2(R),*(sp) movB2 *(sp)+,R %n*,n FS* S bisBE R,*(sp) mov *(sp)+,R / =^ -- =xor cr79: %aw,n S xor R,A1' mov A1,R %ab,n SS movb A1',R xor R,(sp) mov (sp)+,R movb R,A1 %n*,n FS* movB1 *(sp),-(sp) S xor R,(sp) movB1 (sp)+,R movB1 R,*(sp)+ / =& cr77: %a,c bicB1 $!C2,A1' movB2 A1,R %a,n S com R bicB1 R,A1' movB1 A1,R %e*,n S F1* com R bicB1 R,#1(R1) movB1 #1(R1),R %n*,e F* S1 com R1 bicB1 R1,#1(R) movB1 #1(R),R %n*,n FS* S com R bicB1 R,*(sp) movB1 *(sp)+,R / =>> cr75: %a,c movB1 A1',R ash $-C2,R movB1 R,A1 %a,n SS movB1 A1',R neg (sp) ash (sp)+,R movB1 R,A1 %n*,n SS F1* movB1 #1(R1),R neg (sp) ash (sp)+,R movB1 R,#1(R1) / =<< cr76: %a,aw movB1 A1',R ash A2,R movB1 R,A1 %a,n SS movB1 A1',R ash (sp)+,R movB1 R,A1 %n*,n SS F1* movB1 #1(R1),R ash (sp)+,R movB1 R,#1(R1) / =+ cr70: %aw,aw I A2,A1' mov A1,R %aw,nw* S* I #2(R),A1' mov A1,R %aw,n S I R,A1' mov A1,R %ew*,nw* S* F1* I #2(R),#1(R1) mov #1(R1),R %a,n %ad,nf SS movB1 A1',R IBF (sp)+,R movB1 R,A1 %af,nf SS movof A1,R IBF (sp)+,R movfo R,A1 %ew*,n S F1* I R,#1(R1) mov #1(R1),R %nw*,n SS F* I (sp)+,#1(R) mov #1(R),R %n*,n %nd*,nf SS F* movB1 #1(R),R1 IBF (sp)+,R1 movB1 R1,#1(R) movBF R1,R %nf*,nf SS F* movof #1(R),R1 IBF (sp)+,R1 movfo R1,#1(R) movf R1,R / int -> float cr51: %aw,n movif A1,R %nw*,n F* movif #1(R),R %n,n F movif R,R / float, double -> int cr52: %nf,n F movfi R,R .data .even .text €�‚ƒ„…†‡ˆ‰Š‹Œ/ c code tables-- expression to -(sp) .globl _sptab .data _sptab=. 106.; cs106 30.; cs30 31.; cs30 32.; cs32 33.; cs32 35.; cs35 36.; cs36 40.; cs40 41.; cs40 47.; cs47 48.; cs48 0 .text / name cs106: %z,n %zf,n clrB1 -(sp) %aw,n movB1 A1,-(sp) / ++,-- prefix cs30: %ai,n %abp,n I A1 mov A1,-(sp) %aw,n I' $^,A1 mov A1,-(sp) %nbp*,n %ni*,n F* I #1(R) mov #1(R),-(sp) %nip*,n F* mov #1(R),-(sp) I' $^,#1(R) / ++,-- postfix cs32: %ai,n %abp,n mov A1,-(sp) I A1 %aip,n mov A1,-(sp) I' $^,A1 %nbp*,n %ni*,n F* mov #1(R),-(sp) I #1(R) %nip*,n F* mov #1(R),-(sp) I' $^,#1(R) / & unary cs35: %i,n mov $A1,-(sp) / * unary cs36: %nbp*,n F* movb *#1(R),R mov R,-(sp) %ndp*,n F* movf *#1(R),R movf R,-(sp) %nfp*,n F* movof *#1(R),R movf R,-(sp) %n*,n F* mov *#1(R),-(sp) %abp,n movb *A1,R mov R,-(sp) %adp,n movf *A1,R movf R,-(sp) %afp,n movof *A1,R movf R,-(sp) %a,n mov *A1,-(sp) %nbp,n H* movb ~(R),R mov R,-(sp) %ndp,n H* movf ~(R),R movf R,-(sp) %nfp,n H* movof ~(R),R movf R,-(sp) %n,n H* mov ~(R),-(sp) / + cs40: %n,1 FS I' (sp) %n,aw FS I A2,(sp) %n,nw* FS S* I #2(R),(sp) %n,n FS S I R,(sp) / & cs47: %n,c FS bic $!C2,(sp) %n,n FS S com R bic R,(sp) / | cs48: %n,a FS bisB2 A2,(sp) %n,n* FS S* bisB2 #2(R),(sp) %n,n FS S bis R,(sp) .data .even .text mÿcctab.o5Ùb ÿPÔ´0nnvv?ƒ?ƒ††��?Ÿ?ŸT¬T¬ÀÀ?TÑ?TÑ?ã?ãññ?????.??.AK?Z?f??s??„??„jÆÆÆÆÆÆ"Æ#Æ$Æ%Æ(Æ)Æ*Æ+Æ-Æ.Æ/¦0Æ<=>?@ABCDEFÆGÆHÆIÆKÆLÆMÆNÆOÆPÆtstC A GBtstC #(I) GEcmpL A,B GBcmpL #(I),B GAVcmpD B,I GBKJcmpL #(I),"(J) GBKIcmpC #(I),J GAKJVcmpD "(J),I GAKIcmpP I,J GDKBcmpL *(sp)+,"(I) GDKAcmpC *(sp)+,I GCKBcmp (sp)+,"(I) KCGAVcmpP (sp)+,I bitL B,A GBbitL B,#(I) GAbitD B,I GAKIbit J,I GCKAbit (sp)+,I HA_cctab#ÔrestÆcc47¦cc60efftab.oxZ ÿ¬ �`?¾?¾?¾?Ä?Ä?Ä?Í?Í?Í?Ø?Ø?Øææîîûû?  T/T/CTTTTT?hyy?�¢?¬¸TÇT?ÛTì?':?FXT?i€?—°·¾?ÊÓTßð?T?+?9?K?rs{?ˆ‰‘ !PLF$G$MþNÆKhL|MC A M' $^,A GBMC #(I) GBM' $^,#(I) clrC A GBclrC #(I) movL B,A KBmovL "(I),A KAmovC I,A GBmovL B,#(I) GBKJmovL "(J),#(I) GBKImovL J,#(I) KBGJmovL "(I),#(J) KAGJmovC I,#(J) GDKBmovL "(I),*(sp)+ GDKAmovL I,*(sp)+ bisL B,A KAbisC I,A GBbisL B,#(I) KBGJbisL "(I),#(J) KAGJbisL I,#(J) GBKJbisL "(J),#(I) GBKIbisL J,#(I) GDKBbisL "(I),*(sp)+ GDKAbisL I,*(sp)+ bicC $!F,A KAcom I bicC I,A GBbicC $!F,#(I) KAGJcom I bicC I,#(J) GBKIcom J bicC J,#(I) GDKAcom I bicC I,*(sp)+ M'C A M B,A KBM "(I),A KAM I,A GBM'C #(I) KBGJM "(I),#(J) KBmovC A',J M "(I),J movC J,A KAmovC A',J M I,J movC J,A KAGJM I,#(J) KCGBM (sp)+,#(I) KCGBmovC #(I),J M (sp)+,J movC J,#(I) asrC A GBasrC #(I) aslC A GBaslC #(I) _efftab#�ci30ci80Lci70$ci77þci78Æci75hci76|regtab.o'ÑL ÿÜ&ªö Œ?@?C?C ?F?M?Y?Y?d?d??s??s?�?ˆ?�?š?¤?¯?¯?¯?¿?¿?¿?Ñ?Ñ?Ñ?è?è?è???????#?#?#?K?K?K??t?™?™?£?£?µ?Å?Õ?æ?õ?? ???!??0?????O??]??]??g?p?p?|‰šµÇT?áT?ò????+T?A?\?y??†?¢?T®?¿??Ì?Ý?ê??ý? ? ?# ?0 ??C ?] ?` ?i ?Tt ?„ ??‘ ?¢ ?¥ ?­ ?­ ?T· ?T· ?Æ ?Æ ?Ò ?Ò ??ã ??ã ?ó ?ó ?Tÿ ?Tÿ ? ? ?? ?? ?0 ?TD ?] ??s ?� ?T™ ?ª ??¸ Ê Ê ?ç T T ?. ?. ?D ?g ?g ?‡ ?´ ð ? T?A ?s © Æ ?å ? ?- ?[ ‹ ?¯ T?Ù ? =?QgT‚T?¢T¿ßü??>?R?»?ÑT?í?3Y?w?¢Ô?ð?;K?`Tr?Ž?Ž?¯T?Ñ?ê???8?k?v??†??“jJjj ´!´"þ#$"%l&ze$P‚(`)`*ª+Ü,Ü-.:/0ì1ÞFDGDHIXJ–KL0MüN°Oèf3Ž4¢hE A jmp A GBjmp #(I) jsr pc,`A GBjsr pc,#(I) GAjsr pc,(I) clr I clrf I movC A,I movf A,I movof A,I MC A' movC A,I M' $^,A' mov A,I GBMC #(I) movC #(I),I GBM' $^,#(I) mov #(I),I movC A',I MC A mov A',I M' $^,A GBmovC #(I),-(sp) MC #(I) movC (sp)+,I GBmov #(I),-(sp) M' $^,#(I) mov (sp)+,I GEbeq 1f clr I br 2f 1: mov $1,I 2: mov $A,I mov r5,I add Z,I GBmovb *#(I),I GBmovf *#(I),I GBmovof *#(I),I GBmov *#(I),I movb *A,I movf *A,I movof *A,I mov *A,I HBmovb ~(I),I HBmovf ~(I),I HBmovof ~(I),I HBmov ~(I),I GAnegP I GAcom I KAmovC I,A KAmovfo I,A GBKAmovf I,#(I) GBmovC B,#(I) movC #(I),I GBKAmovfo I,#(I) GBKImovC J,#(I) movC J,I KAGJmovf I,#(J) KAGJmovfo I,#(J) GDKAmovC I,*(sp)+ GDKAmovfo I,*(sp)+ KAmovfi I,I movC I,A KAGJmovfi I,I movC I,#(J) GDKAmovfi I,I movC I,*(sp)+ GAKIxor J,I GCKAxor I,(sp) mov (sp)+,I GAbisD B,I GAKJbisD "(J),I GAKIbis J,I GCKAbis (sp)+,I GAbic $!F,I GAKIcom J bic J,I GCKAcom (sp) bic (sp)+,I GAGAasr I GAash $-F,I GAKIneg J ash J,I KCneg (sp) GAash (sp)+,I GAGAasl I GAash B,I GAKJash #(J),I GAKIash J,I KCGAash (sp)+,I GAGAM' I GAMP B,I GAKJMP "(J),I GAKIMP J,I KDGAMP *(sp)+,I KCGAMP (sp)+,I GAmulP B,I GAKJmulP "(J),I GAKImulP J,I KCGAmulP (sp)+,I GATsxt I- div B,I- GATsxt I- KJdiv "(J),I- GATsxt I- KIdiv J,I- KCGATsxt I- div (sp)+,I- GAdivf B,I GAKJdivf "(J),I GAKIdivf J,I KCGAdivf (sp)+,I movC A',I mulP B,I movC I,A KCmovof A',I mulf (sp)+,I movfo I,A movC A',I KJmulP "(J),I movC I,A KAmulP A',I movP I,A KCmovC A',I mulP (sp)+,I movC I,A GDKAmulP *(sp),I movC I,*(sp)+ GDKCmovC *2(sp),I mul (sp)+,I movC I,*(sp)+ GDmovof *(sp),I movf I,-(sp) KAmulf (sp)+,I movfo I,*(sp)+ movC A',I sxt I- divP B,I- movC I-,A KCmovC A',I sxt I- div (sp)+,I- movC I-,A KCGJmovC #(J),I sxt I- div (sp)+,I- movC I-,#(J) GDKCmovC *2(sp),I sxt I- div (sp)+,I- movC I-,*(sp)+ movf A',I divf B,I movf I,A movf A',I KIdivf J,I movf I,A KCmovf A',I divf (sp)+,I movf I,A KCmovof A',I divf (sp)+,I movfo I,A GDKCmovf *8(sp),I divf (sp)+,I movf I,*(sp)+ GDKCmovof *8(sp),I divf (sp)+,I movfo I,*(sp)+ movC A',I sxt I- div B,I- movC I,A KCmovC A',I sxt I- div (sp)+,I- movC I,A KCGJmovC #(J),I sxt I- div (sp)+,I- movC I,#(J) GDKCmovC *2(sp),I sxt I- div (sp)+,I mov I,*(sp)+ bisL B,A' movC A,I KAbisC I,A' movC A,I GBbisL B,#(I) movC #(I),I KBGJbisL #(J),"(I) movC "(I),I KAGJbisL I,#(J) movC #(J),I GBKJbisL "(J),#(I) movC #(I),I GBKIbisL J,#(I) movD #(I),I GDKBbisL "(I),*(sp) movD *(sp)+,I GDKAbisL I,*(sp) mov *(sp)+,I KAxor I,A' mov A,I KCmovb A',I xor I,(sp) mov (sp)+,I movb I,A GDmovC *(sp),-(sp) KAxor I,(sp) movC (sp)+,I movC I,*(sp)+ bicC $!F,A' movD A,I KAcom I bicC I,A' movC A,I KAGJcom I bicC I,#(J) movC #(J),I GBKIcom J bicC J,#(I) movC #(I),I GDKAcom I bicC I,*(sp) movC *(sp)+,I movC A',I ash $-F,I movC I,A KCmovC A',I neg (sp) ash (sp)+,I movC I,A KCGJmovC #(J),I neg (sp) ash (sp)+,I movC I,#(J) movC A',I ash B,I movC I,A KCmovC A',I ash (sp)+,I movC I,A KCGJmovC #(J),I ash (sp)+,I movC I,#(J) M B,A' mov A,I KBM "(I),A' mov A,I KAM I,A' mov A,I KBGJM "(I),#(J) mov #(J),I KCmovC A',I MP (sp)+,I movC I,A KCmovof A,I MP (sp)+,I movfo I,A KAGJM I,#(J) mov #(J),I KCGBM (sp)+,#(I) mov #(I),I KCGBmovC #(I),J MP (sp)+,J movC J,#(I) movP J,I KCGBmovof #(I),J MP (sp)+,J movfo J,#(I) movf J,I movif A,I GBmovif #(I),I GAmovif I,I GAmovfi I,I _regtab#ªcr106Jcr30jcr32´cr34þcr35cr29cr36"cr37lcr38zcr100$cr80‚cr40`cr42ªcr43Ücr45cr46:cr47cr48ìcr49Þcr70Dcr72cr73Xcr74–cr75cr760cr77ücr78°cr79ècr102cr51Žcr52¢cr104sptab.o�…Œ ÿäðÄl???*?8?8?I?^?^?w?”?”?¥?º?º?Ó ?ð?þ??7?U?h??—?°??¾??Ù??õ???$?/?;??L?Z??j?€?�??£j <!<#b$j(´)´/Î0ÜclrC -(sp) movC A,-(sp) M A mov A,-(sp) M' $^,A mov A,-(sp) GBM #(I) mov #(I),-(sp) GBmov #(I),-(sp) M' $^,#(I) mov A,-(sp) M A mov A,-(sp) M' $^,A GBmov #(I),-(sp) M #(I) GBmov #(I),-(sp) M' $^,#(I) mov $A,-(sp) GBmovb *#(I),I mov I,-(sp) GBmovf *#(I),I movf I,-(sp) GBmovof *#(I),I movf I,-(sp) GBmov *#(I),-(sp) movb *A,I mov I,-(sp) movf *A,I movf I,-(sp) movof *A,I movf I,-(sp) mov *A,-(sp) HBmovb ~(I),I mov I,-(sp) HBmovf ~(I),I movf I,-(sp) HBmovof ~(I),I movf I,-(sp) HBmov ~(I),-(sp) GCM' (sp) GCM B,(sp) GCKBM "(I),(sp) GCKAM I,(sp) GCbic $!F,(sp) GCKAcom I bic I,(sp) GCbisD B,(sp) GCKBbisD "(I),(sp) GCKAbis I,(sp) _sptab#ðcs106cs30cs32<cs35bcs36jcs40´cs47Îcs48Ü‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®¯# #define JBR 1 #define CBR 2 #define JMP 3 #define LABEL 4 #define DLABEL 5 #define ESW 6 #define EROU 7 #define FOR 8 #define JSW 9 #define MOV 10 #define CLR 11 #define COM 12 #define INC 13 #define DEC 14 #define NEG 15 #define TST 16 #define ASR 17 #define ASL 18 #define SXT 19 #define CMP 20 #define ADD 21 #define SUB 22 #define BIT 23 #define BIC 24 #define BIS 25 #define MUL 26 #define DIV 27 #define ASH 28 #define XOR 29 #define TEXT 30 #define DATA 31 #define BSS 32 #define EVEN 33 #define MOVF 34 #define MOVOF 35 #define MOVFO 36 #define ADDF 37 #define SUBF 38 #define DIVF 39 #define MULF 40 #define CLRF 41 #define CMPF 42 #define NEGF 43 #define TSTF 44 #define CFCC 45 #define JEQ 0 #define JNE 1 #define JLE 2 #define JGE 3 #define JLT 4 #define JGT 5 #define JLO 6 #define JHI 7 #define JLOS 8 #define JHIS 9 #define BYTE 100 struct node { char op; char subop; struct node *forw; struct node *back; struct node *ref; int labno; char *code; int refc; }; struct { int combop; }; struct optab { char *opstring; int opcode; } optab[] { "jbr", JBR, "jeq", CBR | JEQ<<8, "jne", CBR | JNE<<8, "jle", CBR | JLE<<8, "jge", CBR | JGE<<8, "jlt", CBR | JLT<<8, "jgt", CBR | JGT<<8, "jlo", CBR | JLO<<8, "jhi", CBR | JHI<<8, "jlos", CBR | JLOS<<8, "jhis", CBR | JHIS<<8, "jmp", JMP, "/esw", ESW, "/for", FOR, ".globl",EROU, "mov", MOV, "clr", CLR, "com", COM, "inc", INC, "dec", DEC, "neg", NEG, "tst", TST, "asr", ASR, "asl", ASL, "sxt", SXT, "cmp", CMP, "add", ADD, "sub", SUB, "bit", BIT, "bic", BIC, "bis", BIS, "mul", MUL, "ash", ASH, "xor", XOR, ".text",TEXT, ".data",DATA, ".bss", BSS, ".even",EVEN, "movf", MOVF, "movof",MOVOF, "movfo",MOVFO, "addf", ADDF, "subf", SUBF, "divf", DIVF, "mulf", MULF, "clrf", CLRF, "cmpf", CMPF, "negf", NEGF, "tstf", TSTF, "cfcc", CFCC, 0, 0 }; char line[512]; struct node first; char *curlp; int nbrbr; int nsaddr; int redunm; int iaftbr; int njp1; int nrlab; int nxjump; int ncmot; int nrevbr; int nchange; int isn 20000; int debug; char *lasta; char *lastr; char *firstr; char revbr[] { JNE, JEQ, JGT, JLT, JGE, JLE, JHIS, JLOS, JHI, JLO }; char regs[12][20]; #define RT1 10 #define RT2 11 #define FREG 5 #define NREG 5 #define LABHS 127 #define OPHS 57 struct optab *ophash[OPHS]; struct { int int;}; struct { char lbyte; }; main(argc, argv) char **argv; { register int niter, maxiter, isend; extern end; extern fin, fout; int nflag; if (argc>1 && argv[1][0]=='+') { argc--; argv++; debug++; } if (argc>1 && argv[1][0]=='-') { argc--; argv++; nflag++; } if (argc>1) { if ((fin = open(argv[1], 0)) < 0) { printf("C2: can't find %s\n", argv[1]); exit(1); } } else fin = dup(0); if (argc>2) { if ((fout = creat(argv[2], 0666)) < 0) { fout = 1; printf("C2: can't create %s\n", argv[2]); exit(1); } } else fout = dup(1); lasta = firstr = lastr = sbrk(2); maxiter = 0; opsetup(); do { isend = input(); movedat(); niter = 0; do { refcount(); do { iterate(); clearreg(); niter++; } while (nchange); rmove(); } while (jumpsw()); output(); if (niter > maxiter) maxiter = niter; lasta = firstr; } while (isend); flush(); fout = 2; if (nflag) { printf("%d iterations\n", maxiter); printf("%d jumps to jumps\n", nbrbr); printf("%d inst. after jumps\n", iaftbr); printf("%d jumps to .+2\n", njp1); printf("%d redundant labels\n", nrlab); printf("%d cross-jumps\n", nxjump); printf("%d code motions\n", ncmot); printf("%d branches reversed\n", nrevbr); printf("%d redundant moves\n", redunm); printf("%d simplified addresses\n", nsaddr); printf("%dK core\n", ((lastr+01777)>>10)&077); flush(); } } input() { register struct node *p, *lastp; register int op; lastp = &first; while ((op = getline()) >= 0) { switch (op.op) { case LABEL: p = alloc(sizeof first); if (line[0] == 'L') { p->combop = LABEL; p->labno = getnum(line+1); p->code = 0; } else { p->combop = DLABEL; p->labno = 0; p->code = copy(line); } break; case JBR: case CBR: case JMP: case JSW: p = alloc(sizeof first); p->combop = op; if (*curlp=='L' && (p->labno = getnum(curlp+1))) p->code = 0; else { p->labno = 0; p->code = copy(curlp); } break; default: p = alloc(sizeof first); p->combop = op; p->labno = 0; p->code = copy(curlp); break; } p->forw = 0; p->back = lastp; lastp->forw = p; lastp = p; p->ref = 0; if (op==EROU) return(1); } lastp->forw = 0; return(0); } getline() { register char *lp; register c; lp = line; while (c = getchar()) { if (c==':') { *lp++ = 0; return(LABEL); } if (c=='\n') { *lp++ = 0; return(oplook()); } *lp++ = c; } return(-1); } getnum(ap) char *ap; { register char *p; register n, c; p = ap; n = 0; while ((c = *p++) >= '0' && c <= '9') n = n*10 + c - '0'; if (*--p != 0) return(0); return(n); } output() { register struct node *t; register struct optab *op; register int byte; t = &first; while (t = t->forw) switch (t->op) { case LABEL: printf("L%d:", t->labno); continue; case DLABEL: printf("%s:", t->code); continue; default: if ((byte = t->subop) == BYTE) t->subop = 0; for (op = optab; op->opstring!=0; op++) if (op->opcode == t->combop) { printf("%s", op->opstring); if (byte==BYTE) printf("b"); break; } if (t->code) printf("\t%s\n", t->code); else if (t->op==JBR || t->op==CBR) printf("\tL%d\n", t->labno); else printf("\n"); continue; case JSW: printf("L%d\n", t->labno); continue; case 0: if (t->code) printf("%s", t->code); printf("\n"); continue; } } copy(ap) char *ap; { register char *p, *np; char *onp; register n; int na; na = nargs(); p = ap; n = 0; if (*p==0) return(0); do n++; while (*p++); if (na>1) { p = (&ap)[1]; while (*p++) n++; } onp = np = alloc(n); p = ap; while (*np++ = *p++); if (na>1) { p = (&ap)[1]; np--; while (*np++ = *p++); } return(onp); } opsetup() { register struct optab *optp, **ophp; register int *p; for (optp = optab; p = optp->opstring; optp++) { ophp = &ophash[((p[0]+p[1].lbyte)&077777) % OPHS]; while (*ophp++) if (ophp > &ophash[OPHS]) ophp = ophash; *--ophp = optp; } } oplook() { register struct optab *optp; register char *lp, *op; static char tmpop[32]; struct optab **ophp; op = tmpop; for (lp = line; *lp && *lp!=' ' && *lp!='\t';) *op++ = *lp++; *op++ = 0; while (*lp=='\t' || *lp==' ') lp++; curlp = lp; ophp = &ophash[((tmpop[0].int+tmpop[2])&077777) % OPHS]; while (optp = *ophp) { op = optp->opstring; lp = tmpop; while (*lp == *op++) if (*lp++ == 0) return(optp->opcode); if (*lp++=='b' && *lp++==0 && *--op==0) return(optp->opcode + (BYTE<<8)); ophp++; if (ophp >= &ophash[OPHS]) ophp = ophash; } if (line[0]=='L') { lp = &line[1]; while (*lp) if (*lp<'0' || *lp++>'9') return(0); curlp = line; return(JSW); } curlp = line; return(0); } refcount() { register struct node *p, *lp; static struct node *labhash[LABHS]; register struct node **hp; for (hp = labhash; hp < &labhash[LABHS];) *hp++ = 0; for (p = first.forw; p!=0; p = p->forw) if (p->op==LABEL) { labhash[p->labno % LABHS] = p; p->refc = 0; } for (p = first.forw; p!=0; p = p->forw) { if (p->op==JBR || p->op==CBR || p->op==JSW) { p->ref = 0; lp = labhash[p->labno % LABHS]; if (lp && p->labno == lp->labno) { p->ref = lp; lp->refc++; continue; } for (lp=first.forw; lp; lp = lp->forw) { if (lp->op==LABEL && p->labno==lp->labno) { p->ref = lp; lp->refc++; break; } } } } for (p = first.forw; p!=0; p = p->forw) if (p->refc==0) p->refc++; } iterate() { register struct node *p, *rp; nchange = 0; for (p = first.forw; p!=0; p = p->forw) { if ((p->op==JBR||p->op==CBR||p->op==JSW) && p->ref) { rp = nonlab(p->ref); if (rp->op==JBR && rp->labno) { nbrbr++; p->labno = rp->labno; decref(p->ref); rp->ref->refc++; p->ref = rp->ref; nchange++; } } if (p->op==JBR) { while (p->forw && p->forw->op!=LABEL) { nchange++; iaftbr++; if (p->forw->ref) decref(p->forw->ref); p->forw = p->forw->forw; p->forw->back = p; } rp = p->forw; while (rp && rp->op==LABEL) { if (p->ref == rp) { p->back->forw = p->forw; p->forw->back = p->back; p = p->back; decref(rp); nchange++; njp1++; break; } rp = rp->forw; } xjump(p); p = codemove(p); } } } xjump(ap) { register int *p1, *p2, *p3; int nxj; nxj = 0; p1 = ap; if ((p2 = p1->ref) == 0) return(0); for (;;) { while ((p1 = p1->back) && p1->op==LABEL); while ((p2 = p2->back) && p2->op==LABEL); if (!equop(p1, p2)) return(nxj); p3 = alloc(sizeof first); p3->combop = LABEL; p3->labno = isn; p3->ref = 0; p3->code = 0; p3->refc = 1; p3->back = p2->back; p3->forw = p2; p2->back->forw = p3; p2->back = p3; p1->combop = JBR; p1->ref = p3; p1->labno = isn++; p1->code = 0; nxj++; nxjump++; nchange++; } } codemove(ap) struct node *ap; { register struct node *p1, *p2, *p3; p1 = ap; if (p1->op!=JBR || (p2 = p1->ref)==0) return(p1); while (p2->op == LABEL) if ((p2 = p2->back) == 0) return(p1); if (p2->op!=JBR && p2->op!=ESW && p2->op!=FOR) return(p1); p2 = p2->forw; p3 = p1->ref; while (p3) { if (p3->op==JBR || p3->op==ESW) { if (p1 == p3) return(p1); ncmot++; nchange++; if (p2->back->op==FOR) { p2->back->op = JBR; p2->back->labno = p2->labno; p2->back->ref = p2; p2->refc++; p2->back->code = 0; } p1->back->forw = p2; p1->forw->back = p3; p2->back->forw = p3->forw; p3->forw->back = p2->back; p2->back = p1->back; p3->forw = p1->forw; decref(p1->ref); return(p2); } else p3 = p3->forw; } return(p1); } rmove() { register struct node *p; register char *cp; register int r; int r1, flt; for (p=first.forw; p!=0; p = p->forw) { if (debug) { for (r=0; r<2*NREG; r++) if (regs[r][0]) printf("%d: %s\n", r, regs[r]); printf("-\n"); } flt = 0; switch (p->op) { case MOVF: case MOVFO: case MOVOF: flt = NREG; case MOV: dualop(p); if ((r = findrand(regs[RT1], flt)) >= 0) { if (r == flt+isreg(regs[RT2]) && p->forw->op!=CBR) { p->forw->back = p->back; p->back->forw = p->forw; redunm++; continue; } } repladdr(p, 0, flt); r = isreg(regs[RT1]); r1 = isreg(regs[RT2]); dest(regs[RT2], flt); if (r >= 0) if (r1 >= 0) savereg(r1+flt, regs[r+flt]); else savereg(r+flt, regs[RT2]); else if (r1 >= 0) savereg(r1+flt, regs[RT1]); source(regs[RT1]); continue; case ADDF: case SUBF: case DIVF: case MULF: flt = NREG; case ADD: case SUB: case BIC: case BIS: case MUL: case DIV: case ASH: dualop(p); repladdr(p, 0, flt); source(regs[RT1]); dest(regs[RT2], flt); if (p->op==DIV && (r = isreg(regs[RT2])>=0)) regs[r+1][0] = 0; continue; case CLRF: case NEGF: flt = NREG; case CLR: case COM: case INC: case DEC: case NEG: case ASR: case ASL: case SXT: singop(p); dest(regs[RT1], flt); continue; case TSTF: flt = NREG; case TST: singop(p); repladdr(p, 0, flt); source(regs[RT1]); continue; case CMPF: flt = NREG; case CMP: case BIT: dualop(p); source(regs[RT1]); source(regs[RT2]); repladdr(p, 1, flt); continue; case CBR: case CFCC: continue; default: clearreg(); } } } jumpsw() { register struct node *p, *p1; register t; int nj; t = 0; nj = 0; for (p=first.forw; p!=0; p = p->forw) p->refc = ++t; for (p=first.forw; p!=0; p = p1) { p1 = p->forw; if (p->op == CBR && p1->op==JBR && p->ref && p1->ref && abs(p->refc - p->ref->refc) > abs(p1->refc - p1->ref->refc)) { p->subop = revbr[p->subop]; t = p1->ref; p1->ref = p->ref; p->ref = t; t = p1->labno; p1->labno = p->labno; p->labno = t; nrevbr++; nj++; } } return(nj); } abs(x) { return(x<0? -x: x); } equop(ap1, p2) struct node *ap1, *p2; { register char *cp1, *cp2; register struct node *p1; p1 = ap1; if (p1->combop != p2->combop) return(0); if (p1->op>0 && p1->opcode; cp2 = p2->code; if (cp1==0 && cp2==0) return(1); if (cp1==0 || cp2==0) return(0); while (*cp1 == *cp2++) if (*cp1++ == 0) return(1); return(0); } decref(ap) { register struct node *p; p = ap; if (--p->refc <= 0) { nrlab++; p->back->forw = p->forw; p->forw->back = p->back; } } nonlab(ap) struct node *ap; { register struct node *p; p = ap; while (p && p->op==LABEL) p = p->forw; return(p); } alloc(an) { register int n; register char *p; n = an; n++; n =& ~01; if (lasta+n >= lastr) { if (sbrk(2000) == -1) { write(2, "Out of space\n", 14); exit(1); } lastr =+ 2000; } p = lasta; lasta =+ n; return(p); } clearreg() { register int i; for (i=0; i<2*NREG; i++) regs[i][0] = '\0'; } savereg(ai, as) char *as; { register char *p, *s; p = regs[ai]; s = as; if (source(s)) return; while (*p++ = *s) if (*s++ == ',') break; *--p = '\0'; } dest(as, flt) char *as; { register char *s; register int i; s = as; if ((i = isreg(s)) >= 0) regs[i+flt][0] = 0; while ((i = findrand(s, flt)) >= 0) regs[i][0] = 0; while (*s) { if ((*s=='(' && (*(s+1)!='r' || *(s+2)!='5')) || *s++=='*') { for (i=flt; icode; p2 = regs[RT1]; while (*p2++ = *p1++); regs[RT2][0] = 0; } dualop(ap) struct node *ap; { register char *p1, *p2; register struct node *p; p = ap; p1 = p->code; p2 = regs[RT1]; while (*p1 && *p1!=',') *p2++ = *p1++; *p2++ = 0; p2 = regs[RT2]; *p2 = 0; if (*p1++ !=',') return; while (*p2++ = *p1++); } findrand(as, flt) char *as; { register char *s; register int i; register char *p; for (i = flt; i='0' && s[1]<='4' && s[2]==0) return(s[1]-'0'); return(-1); } check() { register struct node *p, *lp; lp = &first; for (p=first.forw; p!=0; p = p->forw) { if (p->back != lp) abort(); lp = p; } } source(ap) char *ap; { register char *p1, *p2; p1 = ap; p2 = p1; if (*p1==0) return(0); while (*p2++); if (*p1=='-' && *(p1+1)=='(' || *p1=='*' && *(p1+1)=='-' && *(p1+2)=='(' || *(p2-2)=='+') { while (*p1 && *p1++!='r'); if (*p1>='0' && *p1<='4') regs[*p1 - '0'][0] = 0; return(1); } return(0); } repladdr(p, f, flt) struct node *p; { register r; int r1; register char *p1, *p2; static char rt1[50], rt2[50]; if (f) r1 = findrand(regs[RT2], flt); else r1 = -1; r = findrand(regs[RT1], flt); if (r1 >= NREG) r1 =- NREG; if (r >= NREG) r =- NREG; if (r>=0 || r1>=0) { p2 = regs[RT1]; for (p1 = rt1; *p1++ = *p2++;); if (regs[RT2][0]) { p1 = rt2; *p1++ = ','; for (p2 = regs[RT2]; *p1++ = *p2++;); } else rt2[0] = 0; if (r>=0) { rt1[0] = 'r'; rt1[1] = r + '0'; rt1[2] = 0; nsaddr++; } if (r1>=0) { rt2[1] = 'r'; rt2[2] = r1 + '0'; rt2[3] = 0; nsaddr++; } p->code = copy(rt1, rt2); } } movedat() { register struct node *p1, *p2; struct node *p3; register seg; struct node data; struct node *datp; if (first.forw == 0) return; datp = &data; for (p1 = first.forw; p1!=0; p1 = p1->forw) { if (p1->op == DATA) { p2 = p1->forw; while (p2 && p2->op!=TEXT) p2 = p2->forw; if (p2==0) break; p3 = p1->back; p1->back->forw = p2->forw; p2->forw->back = p3; p2->forw = 0; datp->forw = p1; p1->back = datp; p1 = p3; datp = p2; } } if (data.forw) { datp->forw = first.forw; first.forw->back = datp; data.forw->back = &first; first.forw = data.forw; } seg = -1; for (p1 = first.forw; p1!=0; p1 = p1->forw) { if (p1->op==TEXT|p1->op==DATA||p1->op==BSS) { if (p1->op == seg || p1->forw&&p1->forw->op==seg) { p1->back->forw = p1->forw; p1->forw->back = p1->back; p1 = p1->back; continue; } seg = p1->op; } } } ±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑcvopt $1.s $1.i rm a.out as $1.i if -r a.out rm $1.i mv a.out $1.o ar r tab.a $1.o rm $1.o Z..x.yc00.czc00.o{c01.c|c01.o}c02.c~c02.oc03.c€c03.o�c04.c‚c04.oƒc0h.c„c0t.s…c10.c†c11.c‡c12.cˆc1h.c‰c1t.sŠcctab.s‹cvoptŒcvopt.c�efftab.sŽregtab.s�sptab.s�tab.a‘c20.c’trcstatement too long syntax error in type statement redeclaration missing ( in array declarator syntax error in dimension statement inappropriate or gratuitous array declarator syntax error in subscript bound illegal character common variable is a parameter or already in common common syntax error subroutine/blockdata/function not first statement subroutine/function syntax error block data syntax error redeclaration in external external syntax error implicit syntax error subscript on non-array incorrect subscript count subscript out of range subscript syntax error DATA syntax error DATA semantics error equivalence inconsistency equivalence syntax error separate common blocks equivalenced common block illegally extended by equivalence common inconsistency created by equivalence DATA table overflow () imbalance in expression expression syntax error illegal variable in equivalence Storage initialized twice by DATA non array/function used with subscripts/arguments goto syntax error illegal return continue, return, stop, call, end, or pause syntax error assign syntax error if syntax error I/O syntax error do or I/O iteration error do end missing illegal statement in block data multiply defined labels undefined label dimension mismatch expression syntax error end of statement in hollerith constant array too large B table overflow unrecognized statement  .ZR0‰ž.—% À‰\ ‰Àÿÿ‰Ö €w Ä,ä7î‡À5*w -ê9‡À<*w -ð;†wÆ)÷†M÷ AÆ@÷lGG÷pG¼K÷•_ØKw f#hóU ,AÃÚMÀ× êM‡× ôM‚À34× Nð‡w 8%Áö=w l&Bw p�x î÷ä-w ¼ìw �w žw ª÷Ê-áw Ì lAö=w ª,ð;w Ø$àèl�f0Ä^*D*ÐsubroutinefunctionblockdataexternaldimensioncommonequivalencedataformatimplicitInput file? _ &Bw ªÔ�€wrw V À !À,AÀEø w °óEÿ,A³S,Aæw .  ƒw èw  Ö  $Þ (w |Ö …functionBw :ðÕ …logical*1logicalinteger*1integer*2integerdoublecomplexdoubleprecisioncomplexreal*8realw pÀ æw fƒ w Ê…w w N $ê (w ®…ó58,Aw žæóE8,AóU,A& w   × w °À &À ó‹,A æ€Ð þð‹,Aw à $ß "w @À\D àê+· æ+‚  ý ˆ7DDƒ3.A…fw ¤ À Kæ W¢/� w ˆôw F >w v BLóU ,AÅw n 2w dÀ .æw Z ƒw ÿw Jƒó5À,Aw ¬ &@0Að0A€õ0Aõ .Aõ.AóU@,A $Ô » (w p ……÷îI÷æI ÷ÜI÷ ¤*w H Àe&w Ì‚À w 2 …³,Aw ¶  (ò…& Îew žÀ Ö èóU€,A³2Aw ˆ $îÖ  "Úw v (Õ…÷bIw d÷ &*w Ê  (w ¾ …w FÀ ó58,Aw ¦óU,Aw * $í (w Š…w àeAö=…w ý6�&W¤/0@”¬h$+ a‡ÀåB”— - B”—¬h$— a‡ÂåÁ  ‚À  °XMÀe úƒ@” ,×Ö  /É‹É…Ö w …w r ÷ AÈ;w w 0w (w Vw Z  ÷ üA#†À,AÀEÇÿ æÃ.A à w ¨æ0A³0A³2Aw à#`ƒðƒ3 .A³2AÃeÚ…ÀHxÄÌÚÚŒw `"main: …w R"%n.: %n_  ÷ |AL†À.AFÁ `æf ÂeC 9‚ ù&w À,AŠÀw " rval%dp; %n_ Ã,AÃEø×  ÃEøÿÜL)w Ü! %c%di2 €w Æ! stst; d%d+%d. €ÂÖ ƒÃe±…w (#w 6#… eúÁ>fW¤(Qw ,À MÅw ¢B” — , — (Bw –%W¤,<w À 8w z ÂW¢(� w r%‚T1… ƒ úá@íV1ÀlV12àV1‚T1ƒ úÀT1sT1T15T1 w @” ,Ð ) @”w :…¦ ,¬w úw &…œw ÜÀ,AÀ5€ÀEÇÿ  w Îó T1óT1…f Ãe÷ Ö?‡…Áö=w Ø…ó58,Añw ˆó R1ìÀ,AÀEÇÿ  âó5€,AÞó T1ó5@,A×óòE2Aw ˜!7`èE³ R1Í ÁÿÅÁ,V1ÁV1ó5@,AÄÃT1Å òÄ Áí¶E³ R1ÂV1Bà³2Aw P!`„ „ÃT1Å ï7�E£2AíV1³ R1ó5@,A3-0A0Aw à@ÀlV13 2Aw ÎóU@,A30A0A@ÀlV1w ² 32A&w Þ €eÂ0A€,2A22AÃT1Å ÊwÎþw úw ÷L/2&Áö=Bw @6 &w *€x Ð ìÖ À$8 w ªsAö=w (.%d: w þ Bw Ô �x ° w w e×-œDw 2w 6ÀÒ7¿w ¼÷L/®%w ¶ Bw ºÛ � x´ w¼w Îe…÷ „% w Êù÷ BDw  ×-6Dw L w Òw D ´ h€ ¦ & ò¾Êœx^~b\D*^*doif(endfileendassigncallcontinuereturngotopausestopreadprintwriterewindbackspaceformatdataw $w  (…Ö Ö w ì*…¢$— F/‡w Ú,…òŒ$ /· †$2 /÷e€$w &  &ä¦w VæÃEøÿ× Ùw  $Ôw ‚w ƒŠÃw n gas%d goto; 2f Â.$€/w Nt%d: ƒ‚&æw øw ¸ &w ΂w Ê—%$w   &w ¶‚w ²€w  do2w þ do1ƒŠÃ‚w ì%d; o%d 2: …À ÷ … · ¢#†Âe2 /ø÷ ï…&ˆ#2 /w À+€/÷år#w – goto; t%d o%d: €‡w ú w ^7 "4w Àifw JÃEøÿ×  w R; 1f w jýw D1: …æw r w 0; .%dÎ w Ê $ðÖ Ö w $w ¶ (…w (…w z  &T¦w n  (Mþ w z‚‚¦‚,Aw nƒÃUÀmvw ¨ƒw …ƒ‚æw j‚æw B‚w @ƒÃUÀasw zw  …w Â&W¤tW¤ow ô (w &€æw ` lval; .%d ÃÔÖ w `'…w (…Ê ƒw 0 lval9¦—" w vÀ ó‹,AÀalw  alvalw Â.A€À `€w ì; d%dw ø6‚…æÃ,AÃUw ´ƒw w À; %d.¦w Ðw ¬; ó5@,AÂ0Aw ˜%n+œ,AÂEÇÿ— w €%n. w r%n_ Ã,A‚…w H…¦Ê ƒœ-Aw J rval%d‚×" w ŒÀ ó‹,AÀar¥w  arvalŠ—""w 8‚ƒÀœ-Aw ü%d. Ã,A…—"ƒœ‚w Ü rval%d; c%d ‚ƒ…—"=‚‚‚Êå ‚w FÿGw @ÿ‚æ‚w †—/ÂÂEøÿ— ‚Êå‚w ÿÂw ƒ'‚÷ ²ƒ¦w ú‚‚w êþ‚w 胗")‚‚w ÐþÂw Ì‚‚w ¾þÂw º‚€ †Êe À Êåžw äw —"‡Ã…w 6‚…ó‹,Aw Öp…¦Ãâw È stsp; ft+%d. æÃe÷Â& ‚Ž —"$ ¦‚ƒw X‚ðƒw L€‚ƒÃw t callw Šÿw f; %n.; ft+%d.; %d.; ÷-\Z>÷TR>·N…ÃÃ.AÊ -—" +—"*'—" ƒw  lval; c%d æw –ý‚w ’Ãw è stsp; ft+%d. ÷eæ… w †üÃÚw À stst; ft+%d. ÷e¾…¦& Ž ‚—"$ ¦‚w *ýÂw &‚ïw ýÂw €‚ƒ; .Aw |5…¦æÂEøÃEøƒ w J ÷ ƒ÷ w : ƒ‚…¦ÂŠÃÂEøÿ‚œL)w %c%d‚‡—" —""Ê ƒÃ,A…—"ƒ…—"‡Ã…¦‚‚‚w ¼ÿ w ¶ÿ‚æ‚w ªÿ‚÷ ƒ‚…€ƒ †ÂŠÀEøÿÃEøÿ †ÀP‡ngpiprdvmpsbadltleeqnegtgentanor@’¬h$ w  ?w ^ goto; .%d 3W¢(w š $w : agoto $w , cagoto W¤(÷ <D@” )ûW¤,w Vfw ú cgoto Ñ‹÷ �É‹w ú #…w w Ò .%d @” ,ó )w ¸ 0 ‡w È #‡w (&w >ûÂw :þ€… É‹ w 4 3× 0w Ìw v stop; %d !w  × w ¤w N paus; %d ÷ Þ:w N %Îw , retrn É‹…w 4 &…×-. AÕ …w °À òó58,AóU,Aw úw `—""—"*áw üw Ø0 ׿w  5 $ (, Šæ& W¤(#w üþ÷L/v "  $w fÎe "€âw z %s É‹w ” (w z )w Z endio Ö …ìñöûiowuioruiowfiorfiowp@’¬h$ w žw ÿ…&w Îø÷L/àw (7:w r iDNö=w ð lval; .%d w ˆ &€Õ …w  $û…÷L/šW¢(Bw <w  þ…&& Ê ƒÀ,AÀEÇÿ ÎÃ.AæÎ ƒeÃw ˆ slist1; d%d 2:w 0øÎ w j slist3 Àiow BÖ w P slist2; 2bw R€…� w T=w Vÿw Fw Î …@ !†¨,û&fÈ•)� w 8õw €fw "ÿw  w ö�Þ•,w Ž … "w ò )…Â�•š¦w ý‚w ¸ %s  (w À )Ö …bksprewienflw  $_w Р…w  Vw ¾Äùw  Mw ¬Öùw   w ˜ê…w ì w  8‡ 5‚w |…w Ð  û  w b8w  ‡ ‚w J8öw ž w  ‡ ‚w .Töw ‚ w  w j…w l  B w 4ÿw ÿ "w ¼ …w D …À w ª …Âw 0  w €w Æ€…ƒ&w vÀ,AÀEÇÿ w ^Ã* €¦Â ÷eʲ2 … ÷e ò—¬ò•÷*7òä· Þw € cDNCLw ¨ …7 ò58,AòU,Aw ƒw ê €,AÀEÇÿ    w â!òE8,AáÀ …À"…Ä÷e~“æ] ¾‚Âå… ðw À< ‰w âê9w Üð;w w .w w "w 6w Âê9 ‰<* ÷ h6‰À‰w b×-ä5…w 6.bss ÃB6 w &ft: .=.+%d. !R1w .data w base:  ÷ 0/]†ó58,Aw î À,AÂ2AÀEÇÿ ( % ó5€,A w º%n. = %d.  Â2A w š.comm %n,%d. ÃeÆó5À,A w v%n_ = %d. î w °Â5³2A7`ø4w L%n_ = base+%d. ×w f…ÀÐ4x$$8w .globl main …w .globl %n. … ÷ 0.‡…À,AÀEGÿ KÂ2AHÁR1D †C"Áeùw Ä.bss .globl %n %n: .=.+%d. .text (w –.data .globl %n %n: ¦æCw öƒ‚Bàw €w ¬w \.=.+%d. .text Ãe§w ÊÃ7 Zw Ð1 s f÷À'w .%d: <Áü=w ŒÀô& Àì& ƒ †2 R1 2 R1Âe ów ú3w &3R1ÃeÌw Ì .even w Jw X r i÷À–& ÀŽ&ƒ †2 R1êÂeøw ¤4w Ðá…@” > \&À\w ¦ê9€w žê9íw V \0> …w ÔÃR1Äê9w Ú  cúw N¤Ä õ‡w Bcw nÂR1ƒ †Áê9D ‡B(ü@Àåè9€ w c%d: ð€w ð %o ä…Áö=w 4fæŽàŽ ¦ÂR1ƒ�Ò €S$ùÀ ü⠃ΠŽ`ƒ#ƒƒÖ �…×­�%À�‰%Â.w h÷ ¨ÀñÁñÂÀp%ŠÀÁEøÿW W  ð7û|0ðÁHLàÁDLwøj0 7øh07ø^07øT0ÁDLS”À ýÃ5Š…&¦ ñWþ & W¢-� Ž @”Àå0 ƒ þÿ  õ  ò€þôî   5 4æ & W¢-� Ž W¢+� @”Àå0 ‚×p `öÖ  Â`ƒBøÂe& æ Âå�òûÖ òùÖ ÀñW¨,&ø� w @ÿVõ‚€…×-1… ÷ ’*7†À,AÀEÇÿ -À.A*B `€w 0 d%d: %d. Á €w  ..; öw  %d.; ïÂ,AŠÂw ò %d. ÃeÆ…fw f ÄR1Åä7w l  &ÁR1Ã÷ V„…… dîÁú=7 ÂBw L (w®w² ôf�‚!‡wŽw &À îó58,Aw vÀ,A7 0·Š0÷Å0À5€ÞÀEÇÿ  Öó5@,A×-Ü/ÎÔ0A×-Î/Ç ó 2AóÂ/2Aw h 7`¸/ W¢( � w 4÷E8¢/÷Uœ/ Àœ-A€ ÀE7ZÔl2A÷ ø÷ òÃ�Á"ÔT2f�‚w n   g· Ìw Z `W¤* × Zw ìÀ V�7¬äÁ f¦÷r"ŠÃÔÅàTCÁCLw Êü7 †�‚÷­S" /@÷ÅÀÿ/×-ü.  ôåüÿ×­4" ôeþÿ÷5Ü.)×­"%W¢/ W¤,÷ 6—¤,wˆþ—¤/Ê‹—¢,‚ �÷ wFþw w w øÄR1Åä7w wøý×-l.#ÃR1Ä À`.w ´.=.+%d. .text …w Áí@. Ùw �.=.+%d. .text … À@à"� w l.=.+%d. `À`€ &€w J%o Î øÖ ÃeÄ †ó"øÿÛ…7 ðw @ w l… "4,‡f ¦A‚É‹ ‘¤É‹üÀ V%�…Ñ‹þ€ ñ‚�…· ô-&¦@ A·  † Ò ù— ,A†JÒ ·¨ ‚€…×-ž Aif¦ÀŽ w þÀ w Áö=@’w Â"AR À‰\!· b õ‡� íÁ AÀ‰X!‰p! †@Ñ w ®w : /†À,w Âð&BÑ Â €‰ú.‡À ×­î õò€‰ú. ‡À À�Ö  w ‚ñÀ‰^!€‰W AÁ‡À w d÷ AÌ‚�… ** _Unknown diagnostic/usr/fort/errorsfæ ÀCL”Áå0W ‚×p C`öÀƒ�…&f@w ¾ ð;@w  ð;ÀZw  ð;A@’w ¢ ð;Ñ‹ú�€…¦Bw <þè$>� †€ Àe07�K*÷• F*7ŠC*ÃÀ 'f@œþÿœh$ ƒw ÂW¤,w  †ƒW¤) �ÂCLJ”—¤)ü"ŠÀ�À ‚…7 – W ö=ƒwœÿÿŠ ÂCL@”�œh$x‚"Š"š"®",#À(á‹æw ´ýâÁ w þw .CL‚ …Ãw  W¢. ¦Bw Zýè$‚9‚R”0W¢h1À ¬h$+ Šw ˜þÂCL� æ° Î & R”w Jý7Ž À ÷¶3Ò• Ž ùƒÖ ÊÃUÀ‚…w ¬Ãw w $ ŠÀ‚…@’¬h$Õ …w îÿü� �úW¤eW¬ÿÿdÁ …W¢+W¢-w ÄÿõÃW¨eÃR”R”w ºÿ…&¦@’¬h$Õ ÂCL@”�œh$ ù öÁ Šâ• ‚€…&¦Bw @üpGÀ À ‚€Õ …À,(÷et#�”þ7( L†Àb#Àe,A7 X#á‡À‰.$ ‰Àÿÿ‰Symbol table overflow W¤+W¨-� w „ý ŠÃ`ÃÕÕ ….false..true.**/*-+.lt..le..eq..ne..gt..ge..not..and..or.(),=ó5,A w &À�ù& a‡ÀåÀ 3\XM,Aó58,AóU,A…æ ÀpGÎ †Ð‹þÃeùÃCL”þƒ…fw �… r fÀ w îÿ€Àe07�(À‰ÓM…Õ …@Ö À À xÐ%Jœæ7 ú' 7 Áö=÷ �Àå0 ‚×p `õÀe07�Î'÷÷ò · ÷ d s ' ".7ª'Áef÷ D 7 –'ÀU€�W Aò‡Ö UƒfÁàã•h r Áe0c� r Áe0c�Àe0#��7 T' h5 fW ö= ƒ@˜¬h$ø¬h$$� N †@”Àå0×p `÷À7'�Ñ•h÷ ® 7ü&À ÀU€�W A †÷ ì&î��Àh�W A†‡w JùŠƒ÷‹ìwÆþ…w :=-&w .,'w &(Ö …€%ýf� w )�¬=…@& Î  ¢ ¢(Ž ¢)Î ЋñÕ Ö Õ …À�T&7ŠN&‡÷ B ÷ 8 &ö7�5&À ÷ 0&À% ìÀ% é À‰"(À‰‡À�&7Šý% w 4ä7‡ÀE€ÿù · ÷ ® 7 ¨ c÷ Èÿ ç ø · ˆ‡À‡EOF on input &æ¦f&DÕ‹þ… ÅE•W %w ê9÷•N s c  d0 o( nw òê9â÷ ~Cw àüÁCL÷ n@”Ö ûw Ìê9÷÷ X@w ¾ê9@ŠÀÅw °ê9Á÷ <Â÷ 2 ÷ µ rf÷ òÿ€Àe0w |ê9‡€�‚ƒ„…AW ƒ‡Á Áe�aA‡fæÃEøÿÁœL)ƒŠÃw ÿ %c%c%dƒ�…w èþ …?irlc??gw ‚ø × w øÕ …w äÿ7Î$w .ørDNö=Õ …Àœ-Aw € ÀE…fÀ,AÀEÇÿ À.A&PpÎ ýÖ @�…À<*w .L/†wH…w @L/‡&w ÒL/7<w ÈL/70Áö=w L/‡À ÀE€�öŠ€Õ …À>‰…À‰** ‰Àÿÿ‰Temp file? f.tmp1f.tmp2×-Œ#w úõ2w R÷fAö=…w F÷dAö=…ó5,A w öú¦ÂCLw žõ¾*—¢ € œ!,&ÀEðÿ3\´*,A€€ € € € ÀEðÿ3´*.A‚…absiabsdabsaintintidintamodmodamax0amax1max0max1dmax1amin0amin1min0min1dmin1floatifixsignisigndsigndimidimsnglrealdrealaimagdimagdblecmplxdcmplxconjgdconjgexpdexpcexpdcexpalogdlogclogdclogalog10dlog10sindsincsindcsincosdcosccosdccostanhsqrtdsqrtcsqrtdcsqrtatandatanatan2datan2dmodcabsdcabs"D" @"" D" D "D"Bb„b„$&Hfˆ"Dfˆ"Dfˆ"D"Dfˆ"Dfˆ""Dfˆ"D"DDb„À,AÀEÇÿ w Öó …f&æ¦ Â.A¦Åw Âü À w ªó f@qDa…Rqw (õ $Î éw Šóå "w |ó —%w nó‚ƒÅœ-ADq@„……fA7°‰¦.‡ �…Éÿÿ�±…fAñ @Àe7ª1@‰Ì.‡À �±…À 1 @Þ± �…fA7~‰Ò.‡  �…Ñÿÿ�±…fAñ &÷ €ø9�± �…&fA÷ �€…@Àe&7JwF·ã@@‰ô.±ñ‡f&Ã5Á5× ÷–.b Å¡ wX ÷€.P ÷l.H ÷ „…‡E …`‡ s„ qDD`f¦D †@÷ äñÁ`ø„ ƒÂà€÷ Òñùÿ  D í„ëD ÿ òDí‚&Á`÷ ¤ÿ‚�Ïf¦Å@’‘’�D‚�‡f¦ÅÂ@‘D‚�‡@‰ ‡‰www Xþ†…&w LþÀ€U…‰‰¶w w&w Šþ€Àw €þ…‰ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïmÿf11.o)�­¶�l¨0‰—% À‰\ ‰Àÿÿ‰Ö €w Ôÿî‡Àw Èÿ‡Àw ¼ÿ†w´ÿ÷®ÿ÷¨ÿ÷¢ÿ÷œÿ÷•_•ÿw ’ÿhóU ÃÀ× ‡× ‚À34× 4ð‡w bÿÁw ZÿBw Rÿ�x î÷Dÿw @ÿìw :ÿ�w 2ÿw .ÿ÷*ÿáw $ÿlw ÿw ÿsubroutinefunctionblockdataexternaldimensioncommonequivalencedataformatimplicitInput file? _ Ø)èX9øh9yYhY˜©ÈéùIˆhhhhéé  )Ù  ùHù8HXhxˆ˜¨¸Èsymsize@linsize namsize°smblsize�intconrealconlogconlog1conint1conint2condblcondcplxconcplxcondata ibuf obuf tbuf line eline ifno efno errp errb eerrb symtab esymtab esymp symtp namebuf enamebuf namep symbuf esymbuf ch ch1 progt holquo nxtaloc imptab nerror temp functm edata dsize pass1"fptrap getline flush perror lookup getype ssubr sfunc sbloc sextr sdime scomm sequi sdata sform simpl stype isagn ptemp funok signoff fopen fcreat lookid tfil1 tfil2 tfildiag mes2\emes2hblankchscan1šstmtabsublstîf12.o›—\0Œúˆ&Bw øÿh�€wìÿw èÿÀ !ÀÀEø w ÒÿóEÿ³Sæw Àÿ ƒw ´ÿw °ÿÖ  $Þ (w žÿÖ …functionBw ˆÿ˜„Õ …logical*1logicalinteger*1integer*2integerdoublecomplexdoubleprecisioncomplexreal*8real ùˆ)ˆˆ9) symsize@linsize namsize°smblsize�intconrealconlogconlog1conint1conint2condblcondcplxconcplxcondata ibuf obuf tbuf line eline ifno efno errp errb eerrb symtab esymtab esymp symtp namebuf enamebuf namep symbuf esymbuf ch ch1 progt holquo nxtaloc imptab nerror temp functm edata dsize stype"getype"rtyptab"˜sfunc1 lookup getsym error sdime1 funtabhtvaltab„f13.o–j¤ðÊLw üÿÀ æw òÿƒ w æÿ…w w Úÿ $ê (w Êÿ…ó58w ºÿæóE8óU& w ¤ÿ  × w ”ÿÀ &À ó‹ æ€Ð þð‹w lÿ $ß "w \ÿÀVÿ àPÿ· Lÿ‚  ý ˆ7>ÿƒ3…ÙÙéÙéxéxxÙùxxÙé™  ™xsymsize@linsize namsize°smblsize�intconrealconlogconlog1conint2condblcondcplxconcplxcondata ibuf obuf tbuf line eline ifno efno errp errb eerrb symtab esymtab esymp symtp namebuf enamebuf namep symbuf esymbuf ch ch1 progt holquo nxtaloc imptab nerror temp functm edata dsize sdime"sdime1":getsym error geti dimu f14.o–1¦È°Xfw úÿ À Kæ W¢/� w Þÿôw Øÿ>w ÒÿÿÿóU Åw Äÿ 2w ºÿÀ .æw °ÿ ƒw ¤ÿw  ÿƒó5Àw ’ÿ &@ð€õõ õóU@ $Ô » (w Vÿ ……ÉÉù èxÉÉÉÙÉxéxxxxxxésymsize@linsize namsize°smblsize�intconrealconlogconlog1conint2condblcondcplxconcplxcondata ibuf obuf tbuf line eline ifno efno errp errb eerrb symtab esymtab esymp symtp namebuf enamebuf namep symbuf esymbuf ch ch1 progt holquo nxtaloc imptab nerror temp functm edata dsize scomm"getsym sdime1 error getid lookid ncomf15.o¢¥j¹Ø°d÷úÿ÷òÿ ÷èÿ÷ ”w Þÿ Àe&w Òÿ‚À w Èÿ …³w ¼ÿ  (ò…& Îew ¤ÿÀ Ö èóU€³w Žÿ $îÖ  "Úw |ÿ (Õ…÷nÿw jÿ÷ w `ÿ  (w Tÿ …999))ˆˆˆ9))symsize@linsize namsize°smblsize�intconrealconlogconlog1conint1conint2condblcondcplxconcplxcondata ibuf obuf tbuf line eline ifno efno errp errb eerrb symtab esymtab esymp symtp namebuf enamebuf namep symbuf esymbuf ch ch1 progt holquo nxtaloc imptab nerror temp functm edata dsize ssubr"sfunc"sbloc"Œsfunc1"funok#°getsym error f16.o–©Ü@Lw üÿÀ ó58w ìÿóUw àÿ $í (w Ðÿ…w Èÿe…ÙxùxÙù 8symsize@linsize namsize°smblsize�intconrealconlogconlog1conint2condblcondcplxconcplxcondata ibuf obuf tbuf line eline ifno efno errp errb eerrb symtab esymtab esymp symtp namebuf enamebuf namep symbuf esymbuf ch ch1 progt holquo nxtaloc imptab nerror temp functm edata dsize sextr"sequi"4getsym putc error ptemp f17.o–ɪ8z4w üÿ6�&W¤/0@”¬+ a‡ÀåB”— - B”—¬— a‡ÂåÁ  ‚À  °~ÿÀe úƒ@” ,×Ö  /É‹É…Ö w Šÿ…ÉØØXésymsize@linsize namsize°smblsize�intconrealconlogconlog1conint2condblcondcplxconcplxcondata ibuf obuf tbuf line eline ifno efno errp errb eerrb symtab esymtab esymp symtp namebuf enamebuf namep symbuf esymbuf ch ch1 progt holquo nxtaloc imptab nerror temp functm edata dsize simpl"getype chrtab error ñòóôõö÷øùúûüýþÿmÿf21.o–¶°¬"Xw üÿ÷ôÿw ðÿw ìÿw èÿw äÿw àÿÉXIé ùÙsymsize@linsize namsize°smblsize�intconrealconlogconlog1conint2condblcondcplxconcplxcondata ibuf obuf tbuf line eline ifno efno errp errb eerrb symtab esymtab esymp symtp namebuf enamebuf namep symbuf esymbuf ch ch1 progt holquo nxtaloc imptab nerror temp functm edata dsize pass2"signon signoff calloc salloc equiv entry f22.o–g²ô"  ÷ úÿ#†ÀÀEÇÿ æÃ à w Úÿæ³³w Èÿ`ƒðƒ3 ³ÃeÚ…À¬ÿxX`nn w œÿmain: …w Žÿ%n.: %n_  ÷ zÿL†ÀFÁ `æf ÂeC 9‚ ù&w RÿÀŠÀw Fÿ rval%dp; %n_ ÃÃEø×  ÃEøÿÜw ÿ %c%di2 €w ÿ stst; d%d+%d. €ÂÖ ƒÃe±…©xxÙxxxéxx)))©xÙx)x8))symsize@linsize namsize°smblsize�intconrealconlogconlog1conint2condblcondcplxconcplxcondata ibuf obuf tbuf line eline ifno efno errp errb eerrb symtab esymtab esymp symtp namebuf enamebuf namep symbuf esymbuf ch ch1 progt holquo nxtaloc imptab nerror temp functm edata dsize calloc"entry"Pdeclimpl size getc getw xbuf code typ main`subrnfunctnblocd f23.o–4´„ü|w üÿw øÿ… eúÁ fW¤(Qw àÿÀ MÅw ¢B” — , — (Bw ÂÿW¤,<w ¶ÿÀ 8w z ÂW¢(� w žÿ‚… ƒ úá@íÀl2à‚ƒ úÀs5 w dÿ@” ,Ð ) @”w Lÿ…¦ ,¬w >ÿw 8ÿ…œw 0ÿÀÀ5€ÀEÇÿ  w ÿó ó…)9ÉÙÉÙèèèèèèèèèùù xùèèsymsize@linsize namsize°smblsize�intconrealconlogconlog1conint2condblcondcplxconcplxcondata ibuf obuf tbuf line eline ifno efno errp errb eerrb symtab esymtab esymp symtp namebuf enamebuf namep symbuf esymbuf ch ch1 progt holquo nxtaloc imptab nerror temp functm edata dsize equiv"getsym consub eqvtab error declimpl perror setln getln equsetÌf24.o–ƵÌ8Lf Ãe÷ òÿ‡…Áw æÿ…ó58ñw Øÿó ìÀÀEÇÿ  âó5€Þó ó5@×ó¤ÿw žÿ7`šÿ³ Í ÁÿÅÁ,Áó5@ÄÃÅ òÄ Áíhÿ³ ÂBà³w Vÿ`„ „ÃÅ ï7Bÿ£í³ ó5@3-w ÿ@Àl3 w ÿóU@3@Àlw òþ 3&w äþ€e€,2ÃÅ ÊwÎþ© xéÈxxÈxIxùIÈÈÈxÈIÈÈxùÈIxÈÈxxxÙÈxÙxxxÈÙxùxxxÈsymsize@linsize namsize°smblsize�intconrealconlogconlog1conint2condblcondcplxconcplxcondata ibuf obuf tbuf line eline ifno efno errp errb eerrb symtab esymtab esymp symtp namebuf enamebuf namep symbuf esymbuf ch ch1 progt holquo nxtaloc imptab nerror temp functm edata dsize salloc"eqvtab error declimpl size perror  mÿf31.o–}¼‚ðw üÿw ôÿ÷îÿÁBw äÿt &w Úÿ€x ìÖ ÀÊÿ w Äÿsw ºÿ.%d: w ®ÿ Bw ¦ÿ�x îw –ÿw �ÿe×-Šÿw ‚ÿ2w |ÿÀxÿ¿w rÿ¼÷jÿw fÿ Bw ^ÿ� xòwJÿw Fÿe…÷ >ÿ w 6ÿù÷ 0ÿw *ÿ×-$ÿw ÿw ÿw ÿ¾doif(endfileendassigncallcontinuereturngotopausestopreadprintwriterewindbackspaceformatdataé x‰Ù9©8™Ù)9)9I9Yx‰Ù)9¹Y) )ÉIùˆèh˜¨¸ÈØø(8HXhxsymsize@linsize namsize°smblsize�intconrealconlogconlog1conint2condblcondcplxconcplxcondata ibuf obuf tbuf line eline ifno efno errp errb eerrb symtab esymtab esymp symtp namebuf enamebuf namep symbuf esymbuf ch ch1 progt holquo nxtaloc imptab nerror temp functm edata dsize pass3"ifstmt"�isagn signon signoff getline lookup sasgn error perror doend sform sdata sdo sassi scall scont sretu sgoto sif spaus sstop sread sprin swrit srewi sback sendf blocks blockp code ptemp dotabp scan3fmttabtfmtlststmtabsublstîstmtab1sublst1òsend¾f33.o�—¶´pÄw üÿw  (…Ö Ö w æÿ*…ÂÞÿ— ‡w Ôÿ,…òÌÿ· Æÿ2÷e¼ÿw ¸ÿ &ä¦w ¬ÿæÃEøÿ× Ùw œÿ $Ôw ’ÿ‚w ŒÿƒŠÃw ‚ÿ gas%d goto; 2f Âjÿ€üÿw bÿt%d: ƒ‚&æw Nÿw Jÿ&w Dÿ‚w <ÿ—%$w 2ÿ&w ,ÿ‚w $ÿ€w ÿ do2w ÿ do1ƒŠÃ‚w ÿ%d; o%d 2: …À ÷ … · Þþ†Âe2 þÿø÷ ï…&ÂÄþ2 þÿw ºþ+€üÿ÷å®þw ªþ goto; t%d o%d: €‡ùyˆi˜i˜y ) 9YIy˜I) 9Y 9YIIIy˜y˜˜yIsymsize@linsize namsize°smblsize�intconrealconlogconlog1conint1conint2condblcondcplxconcplxcondata ibuf obuf tbuf line eline ifno efno errp errb eerrb symtab esymtab esymp symtp namebuf enamebuf namep symbuf esymbuf ch ch1 progt holquo nxtaloc imptab nerror temp functm edata dsize sdo"dobeg"doend"getlab e2 error lvalue rvalue code convrt dou dotabp edotab dotab gen6f34.o–eÁ¤€”w üÿw øÿ7 "4w ìÿÀifw äÿÃEøÿ×  w Öÿ; 1f w Ìÿw Èÿ1: …æw ºÿ w ´ÿ; .%dÎ w ¤ÿ $ðÖ Ö w ”ÿw �ÿ (…w „ÿ(…ÉéIù ùYù)i)Ùsymsize@linsize namsize°smblsize�intconrealconlogconlog1conint2condblcondcplxconcplxcondata ibuf obuf tbuf line eline ifno efno errp errb eerrb symtab esymtab esymp symtp namebuf enamebuf namep symbuf esymbuf ch ch1 progt holquo nxtaloc imptab nerror temp functm edata dsize sif"e2 error rvalue code ifstmt iserror getsym geti genop getlab newline f35.o–ÿÂ0º¬w üÿ &T¦w ðÿ (Mþ w àÿ‚‚¦‚w ÐÿƒÃUÀmvw Âÿƒw ¼ÿ…ƒ‚æw °ÿ‚æw ¨ÿ‚w ¢ÿƒÃUÀasw ”ÿw �ÿ…w Šÿ&W¤tW¤ow vÿ (w lÿ€æw dÿ lval; .%d ÃÔÖ w Jÿ'…éé x)i‰ù )iyYéùÙsymsize@linsize namsize°smblsize�intconrealconlogconlog1conint2condblcondcplxconcplxcondata ibuf obuf tbuf line eline ifno efno errp errb eerrb symtab esymtab esymp symtp namebuf enamebuf namep symbuf esymbuf ch ch1 progt holquo nxtaloc imptab nerror temp functm edata dsize sasgn"sassi"rerror e2 lvalue rvalue code convrt geti getsym getlab genop newline name f36.o–ƒÅ¼ Ð w üÿ…Ê ƒw îÿ lval9¦—" w vÀ ó‹Àalw Æÿ alvalw €À `€w ªÿ; d%dw œÿ6‚…æÃÃUw ˆÿƒw ‚ÿw ~ÿ; %d.¦w Ðw jÿ; ó5@Âw Vÿ%n+œÂEÇÿ— w >ÿ%n. w 0ÿ%n_ Â…w ÿ…¦Ê ƒœw ÿ rval%d‚×" w ŒÀ ó‹Àar¥w Üþ arvalŠ—""w 8‚ƒÀœw ºþ%d. Ã…—"ƒœ‚w šþ rval%d; c%d ‚ƒ…—"=‚‚‚Êå ‚w FÿGw @ÿ‚æ‚w †—/ÂÂEøÿ— ‚Êå‚w ÿÂw ƒ'‚÷ ²ƒ¦w ú‚‚w êþ‚w 胗")‚‚w ÐþÂw Ì‚‚w ¾þÂw º‚€ †Êe À Êå°w ¸ýw ´ý—"‡Ã…w ¤ý6‚…ó‹w ”ýp…¦ÃŠýw †ý stsp; ft+%d. æÃe÷jý& ‚Ž —"$ ¦‚ƒw X‚ðƒw L€‚ƒÃw 2ý callw Šÿw $ý; %n.; ft+%d.; %d.; ÷-ýý÷üüúü·öü…ÃÃÊ -—" +—"*'—" ƒw Ìü lval; c%d æw –ý‚w ’êüw ¦ü stsp; ft+%d. ÷eŽü… w †üÂüw ~ü stst; ft+%d. ÷efü…¦& Ž ‚—"$ ¦‚w *ýÂw &‚ïw ýÂw €‚ƒ; w ü5…¦æÂEøÃEøƒ w ü ÷ ƒ÷ w øû ƒ‚…¦ÂŠÃÂEøÿ‚œw Üû%c%d‚‡—" —""Ê ƒÃ…—"ƒ…—"‡Ã…¦‚‚‚w ¼ÿ w ¶ÿ‚æ‚w ªÿ‚÷ ƒ‚…€ƒ †ÂŠÀEøÿÃEøÿ †ÀP‡ngpiprdvmpsbadltleeqnegtgentanorI9x9x9xY™99xx9x99xIx9x9x9x9Yyx9‰9‰99‰‰‰‰‰x9‰9‰‰9‰x99h9xsymsize@linsize namsize°smblsize�intconrealconlogconlog1conint2condblcondcplxconcplxcondata ibuf obuf tbuf line eline ifno efno errp errb eerrb symtab esymtab esymp symtp namebuf enamebuf namep symbuf esymbuf ch ch1 progt holquo nxtaloc imptab nerror temp functm edata dsize lvalue"rvalue"àconvrt"ätype"2funcappl"pname"Œerror lookup code iserror genop typ newline functn size aryapplœsimparyjarydopeBpbitbmaxtyp”optab°fapp1 f37.o–ÿÆTÞˆ@’¬ w òÿ?w ìÿ goto; .%d 3W¢(w š $w Èÿ agoto $w ºÿ cagoto W¤(÷ <D@” )ûW¤,w Vfw ˆÿ cgoto Ñ‹÷ �É‹w nÿ#…w fÿw `ÿ .%d @” ,ó )w Fÿ 0 ‡w <ÿ#‡w 4ÿ&w .ÿÂw &ÿ€…Héééé éé Ù)9symsize@linsize namsize°smblsize�intconrealconlogconlog1conint2condblcondcplxconcplxcondata ibuf obuf tbuf line eline ifno efno errp errb eerrb symtab esymtab esymp symtp namebuf enamebuf namep symbuf esymbuf ch ch1 progt holquo nxtaloc imptab nerror temp functm edata dsize sgoto"intexp"Èe2 code getsym error getlab rvalue convrt chrtab stmlist–f38.o–+É@¬ É‹ w öÿ 3× 0w æÿw âÿ stop; %d !w Îÿ × w ¾ÿw ºÿ paus; %d ÷ ¦ÿw  ÿ%Îw ˜ÿ retrn É‹…w †ÿ&…×-~ÿÕ …w rÿÀ òó58óUw \ÿw Xÿ—""—"*áw Hÿw Dÿ0 ×I9)I9))Y)YIXIxxiy‰)symsize@linsize namsize°smblsize�intconrealconlogconlog1conint2condblcondcplxconcplxcondata ibuf obuf tbuf line eline ifno efno errp errb eerrb symtab esymtab esymp symtp namebuf enamebuf namep symbuf esymbuf ch ch1 progt holquo nxtaloc imptab nerror temp functm edata dsize sstop"scall"Šspaus".sretu"Vscont"piserror"~ptemp code geti getsym error declimpl e11 funcappl f39.o–:Ë0Bœæw  5 $ (, Šæ& W¤(#w Ôÿ÷Îÿ "  $w fÎe "€„w ¨ÿ %s É‹w ” (w Žÿ)w ˆÿ endio Ö …Ž“˜�¢iowuioruiowfiorfiowp@’¬ w Jÿw Fÿ…&w >ÿ÷8ÿw 2ÿ7,ÿw (ÿiw ÿ lval; .%d w ÿ&€Õ …w  $û…÷òþW¢(Bw èþw äþ…&& Ê ƒÀÀEÇÿ ÎÃæÎ ƒeÃw ¶þ slist1; d%d 2:w  þÎ w ˜þ slist3 Àiow †þÖ w ~þ slist2; 2bw lþ€…� w bþ=w Vÿw Fw Rþ…@ !†¨,û&fÈ•)� w 4þw €fw "ÿw  w þ�Þ•,w þ… "w þ)…Â2Â7Â<¦w ìý‚w æý %s  (w Ôý)Ö …bksprewienfl¸É™)™¨IyY¸É9y)x™¸ÉIyxx™Y™é™9ù Ù)™)symsize@linsize namsize°smblsize�intconrealconlogconlog1conint2condblcondcplxconcplxcondata ibuf obuf tbuf line eline ifno efno errp errb eerrb symtab esymtab esymp symtp namebuf enamebuf namep symbuf esymbuf ch ch1 progt holquo nxtaloc imptab nerror temp functm edata dsize sread"swrit" sprin"sback"þsrewi"sendf" getsym error geticon e2 lvalue rvalue iserror convrt code chrtab blocks blockp doend genop levzer dobeg intexp ptemp newline nelem getfmt¨iotype„listülstitmchkelðbksp2rewi7enfl<f32.o–;¾PüHw  $_w Ð…w  Vw ¾$ùw  Mw ¬6ùw Æÿ  w ˜J…w ²ÿw  8‡ 5‚w |f…w –ÿ û  w b˜w  ‡ ‚w J˜öw dÿw  ‡ ‚w .´öw Hÿw  w Ê…w 2ÿ B w 4ÿw ÿ "w ÿ…w ÿ…À w ÿ…Âw öþ w €w Æà…ƒ&w ÜþÀÀEÇÿ w ^Ã* €¦Âºþ÷e´þʲ2 …¤þ÷ežþ ò—¬ò•÷†þò‚þ· |þw xþcw nþ…7 hþò58òUw Vþƒw Pþ€ÀEÇÿ    w 8þ!òE8áÀ …À"…Ãþ÷eþ“æ] ¾‚Âå…ùùùùùùéùéù)x    y99IxèùYxxi)xéx  symsize@linsize namsize°smblsize�intconrealconlogconlog1conint2condblcondcplxconcplxcondata ibuf obuf tbuf line eline ifno efno errp errb eerrb symtab esymtab esymp symtp namebuf enamebuf namep symbuf esymbuf ch ch1 progt holquo nxtaloc imptab nerror temp functm edata dsize e1"e2"e11"error getsym blockp blocks declimpl conu ptemp functn funimpl blockÞe3$e46e5Ne5aJe6je6afe7a˜e7œe8¸e8a´e9Îe9aÊe10àappl”    !"#$%&'mÿf41.o–7Ò$L| ðw úÿÀôÿ‰w îÿw èÿw âÿw Þÿw Úÿw Öÿw Òÿw Îÿ ‰ ÷ Âÿ‰À‰ÉÙÙèÙøéù9 ÙèHisymsize@linsize namsize°smblsize�intconrealconlogconlog1conint2condblcondcplxconcplxcondata ibuf obuf tbuf line eline ifno efno errp errb eerrb symtab esymtab esymp symtp namebuf enamebuf namep symbuf esymbuf ch ch1 progt holquo nxtaloc imptab nerror temp functm edata dsize pass4"signon flush dope formts globls constn fopen bsss tfil2 f42.o–yÔ¤dw üÿ×-øÿ…w îÿ.bss Ãäÿ w Þÿft: .=.+%d. !w Äÿ.data w ¸ÿbase:  ÷ ªÿ]†ó58w œÿÀÂÀEÇÿ ( % ó5€ w rÿ%n. = %d.   w Rÿ.comm %n,%d. ÃeÆó5À w .ÿ%n_ = %d. î w ÿÂÿ³7`ÿw ÿ%n_ = base+%d. ×w êþ…ù)ɉÉÉÉ©xéxxxÉxÉxÉÙIxIÉ symsize@linsize namsize°smblsize�intconrealconlogconlog1conint2condblcondcplxconcplxcondata ibuf obuf tbuf line eline ifno efno errp errb eerrb symtab esymtab esymp symtp namebuf enamebuf namep symbuf esymbuf ch ch1 progt holquo nxtaloc imptab nerror temp functm edata dsize bsss"code size declimpl cdata dodata dattab pass2f43.oQ¥¢k@ìXÀüÿx$$8w ìÿ.globl main …w Øÿ.globl %n. … ÷ Âÿ‡…ÀÀEGÿ KÂHÁD †C"Áeùw ”ÿ.bss .globl %n %n: .=.+%d. .text (w fÿ.data .globl %n %n: ¦æCw Bÿƒ‚Bàw 6ÿw 0ÿw ,ÿ.=.+%d. .text Ãe§9ÙÙ¹ˆˆèÙÙù Ùsymsize@linsize namsize°smblsize�intconrealconlogconlog1conint1conint2condblcondcplxconcplxcondata ibuf obuf tbuf line eline ifno efno errp errb eerrb symtab esymtab esymp symtp namebuf enamebuf namep symbuf esymbuf ch ch1 progt holquo nxtaloc imptab nerror temp functm edata dsize globls"code dattab onedata error perror f44.o–¯×löpw üÿÃ7 úw ðÿ1 s f÷ÀÞÿw Úÿ.%d: <Áw ŒÀÄÿ À¼ÿ ƒ †2  2 Âe ów œÿ3w –ÿ3ÃeÌw ˆÿ .even w |ÿw xÿ r i÷Àfÿ À^ÿƒ †2 êÂeøw Fÿ4w @ÿá…@” > \&À\w "ÿ€w ÿíw ÿ\0> …Ù9é9ù9988 8ùÙé998 )è)èùsymsize@linsize namsize°smblsize�intconrealconlogconlog1conint2condblcondcplxconcplxcondata ibuf obuf tbuf line eline ifno efno errp errb eerrb symtab esymtab esymp symtp namebuf enamebuf namep symbuf esymbuf ch ch1 progt holquo nxtaloc imptab nerror temp functm edata dsize formts"strout"Äsetln getln code error perror putc xbuf f45.o›Vçè"”w üÿÃÄw ðÿ  cúw N¤Ä õ‡w Úÿcw Ôÿƒ †ÁD ‡B(ü@Àå€ w ²ÿc%d: ð€w ¢ÿ %o ä…Áw 4fæŽàŽ ¦Âƒ�Ò €S$ùÀ ü⠃ΠŽ`ƒ#ƒƒÖ �…×­VÿÀ�OÿÂ.w Fÿ÷ BÿÀñÁñÂÀ6ÿŠÀÁEøÿW W  ð7ûÿðÁàÁwø ÿ 7øÿ7øýþ7øóþÁS”À ýÃ5Š…)Hè9éùHèè  HIIYIùøøùùùùøsymsize@linsize namsize°smblsize�intconrealconlogconlog1conint1conint2condblcondcplxconcplxcondata ibuf obuf tbuf line eline ifno efno errp errb eerrb symtab esymtab esymp symtp namebuf enamebuf namep symbuf esymbuf ch ch1 progt holquo nxtaloc imptab nerror temp functm edata dsize constn"evalcon"¦error perror code getcon setln getln xbuf negflg packconjf46.o–÷ÚÌJ(&¦ ñWþ & W¢-� Ž @”Àå0 ƒ þÿ  õ  ò€þôî   5 4æ & W¢-� Ž W¢+� @”Àå0 ‚×p `öÖ  Â`ƒBøÂe& æ Âå�òûÖ òùÖ ÀñW¨,&ø� w @ÿVõ‚€…×-4ÿ… ÷ (ÿ7†ÀÀEÇÿ -À*B `€w ÿd%d: %d. Á €w èþ..; öw Üþ%d.; ïŠÂw Æþ%d. ÃeÆ…)©xxÙÙÙxÙsymsize@linsize namsize°smblsize�intconrealconlogconlog1conint2condblcondcplxconcplxcondata ibuf obuf tbuf line eline ifno efno errp errb eerrb symtab esymtab esymp symtp namebuf enamebuf namep symbuf esymbuf ch ch1 progt holquo nxtaloc imptab nerror temp functm edata dsize getcon"dope"Ècode f47.oP¥ÙóÔÐ$fw úÿÄÅw îÿ &ÁÃ÷ Úÿ„…… dîÁ7 ÆÿBw Àÿ (w®w² ôf�‚!‡wŽw šÿÀ îó58w ŠÿÀ7‚ÿ·Šÿ÷ÅyÿÀ5€ÞÀEÇÿ  Öó5@×-VÿÎÔ×-HÿÇ ó ó8ÿw 2ÿ7`.ÿ W¢( � w ÿ÷E8ÿ÷Uÿ Àœ€ ÀE7ÿÔl÷ üþ÷ öþÃ�óþÔT2f�‚w âþ   g· Òþw Îþ `W¤* × Zw ¸þÀ V�7°þäÁ f¦÷¤þŠÃÔÅàTCÁw �þ7 Œþ�‚÷­…þƒþ@÷ÅÀÿxþ×-tþ  ôåüÿ×­fþ ôeþÿ÷5Tþ)×­Nþ%W¢/ W¤,÷ :þ—¤,wˆþ—¤/Ê‹—¢,‚ �÷ þwFþw þw þw üýÄÅw îýwøý×-æý#ÃÄ ÀÖýw Òý.=.+%d. .text …w Áí¶ý Ùw ®ý.=.+%d. .text … À@à"� w Šý.=.+%d. `À`€ &€w hý%o Î øÖ ÃeÄ †ó"øÿÛ…7 Hýw Dý w >ý… "4,‡y¸È‰¸é 99ˆ™ˆIIIˆ9ˆ9ˆYˆYYIIIˆˆ  I9ù9i Iø©ùIIIIIII  )))¸ÈÙ9¸Y Y   )Ùsymsize@linsize namsize°smblsize�intconrealconlogconlog1conint1conint2condblcondcplxconcplxcondata ibuf obuf tbuf line eline ifno efno errp errb eerrb symtab esymtab esymp symtp namebuf enamebuf namep symbuf esymbuf ch ch1 progt holquo nxtaloc imptab nerror temp functm edata dsize cdata"dodata"onedata"fcompare"Äcode getcon error getsym consub size geti setln getln declimpl evalcon dattab contab perror qsort negflg repfact holround dloop)*+,-./0123456789:mÿfx1.o–'ìx,f ¦A‚É‹ ‘¤É‹üÀ V%�…Ñ‹þ€ ñ‚�…symsize@linsize namsize°smblsize�intconrealconlogconlog1conint2condblcondcplxconcplxcondata ibuf obuf tbuf line eline ifno efno errp errb eerrb symtab esymtab esymp symtp namebuf enamebuf namep symbuf esymbuf ch ch1 progt holquo nxtaloc imptab nerror temp functm edata dsize lookup"fx2.o¡¥žAü8|· üÿ&¦@· îÿ† Ò ù— †JÒ ·Ôÿ‚€…×-Êÿif¦À¾ÿw ºÿÀ w ²ÿÁ@’w ¦ÿÂR À‰· Žÿõ‡� íÁÀ‰‰& †@Ñ w jÿw fÿ/†À,w \ÿð&BÑ Â €‰8‡À ×­v õò€‰8 ‡À À�^ w ÿñÀ‰€‰W Á‡À w þþ÷øþ‚�… ** _Unknown diagnostic/usr/fort/errorsyhYxYYh9ùééhYhùYééXéhYsymsize@linsize namsize°smblsize�intconrealconlogconlog1conint1conint2condblcondcplxconcplxcondata ibuf obuf tbuf line eline ifno efno errp errb eerrb symtab esymtab esymp symtp namebuf enamebuf namep symbuf esymbuf ch ch1 progt holquo nxtaloc imptab nerror temp functm edata dsize error"perror"2tput tdecml mes2mes1errfil&ich8mes3fx3.o�¥á4X@fæ À”Áå0W ‚×p C`öÀƒ�…&f@w Ðÿ@w ÈÿÀÂÿw ¾ÿA@’w ´ÿÑ‹ú�€…øéù9ùésymsize@linsize namsize°smblsize�intconrealconlogconlog1conint1conint2condblcondcplxconcplxcondata ibuf obuf tbuf line eline ifno efno errp errb eerrb symtab esymtab esymp symtp namebuf enamebuf namep symbuf esymbuf ch ch1 progt holquo nxtaloc imptab nerror temp functm edata dsize geti"ptemp"&putc putw fx4.oö8$¶Ð `¦Bw øÿ>� †€ Àe07�âÿ÷• Ýÿ7ŠÚÿÃÀ 'f@œþÿœŽ ƒw ÂW¤,w  †ƒW¤) �ÂJ”—¤)ü"ŠÀ�À ‚…7 ÔW ƒwœÿÿÈÂ@”�œŽx¨°ÀÔRÀ(á‹æw DÿâÁ w þw .‚ …Ãw  W¢. ¦Bw ÿ‚9‚R”0W¢h1À^¬Ž+ Šw ðþÂ� ææþÎ & R”w Úþ7Ž À ÷¶3Ò• Ž ùƒÖ ÊÃUÀ‚…w ¬Ãw w $ ŠÀ‚…@’¬ŽÕ …w îÿü� �úW¤eW¬ÿÿdÁ …W¢+W¢-w ÄÿõÃW¨eÃR”R”w ºÿ…&¦@’¬ŽÕ Â@”�œŽ ù öÁ Šâ• ‚€…&¦Bw üýÀ À ‚€Õ …Àæý÷eàý�”þ7Øý †ÀÎýÀe7 Æýá‡À‰T ‰Àÿÿ‰Symbol table overflow W¤+W¨-� w „ý ŠÃ`ÃÕÕ ….false..true.**/*-+.lt..le..eq..ne..gt..ge..not..and..or.(),= ùùùøøø )ø9ø Èé¹éعˆ©symsize@linsize namsize°smblsize�intconrealconlogconlog1conint1conint2condblcondcplxconcplxcondata ibuf obuf tbuf line eline ifno efno errp errb eerrb symtab esymtab esymp symtp namebuf enamebuf namep symbuf esymbuf ch ch1 progt holquo nxtaloc imptab nerror temp functm edata dsize getsym"getid"Älookid"úchrtab"Žlookup error geti holround bastabsrconstjlstchr`eos°letÀnumÔperRnumst|isnumnexponˆovflTeovfljfx5.o– óÔTó5 w &À�ðÿ a‡ÀåÀ 3\~ÿó58óU…æ ÀÎ †Ð‹þÃeùÔþƒ…xéXxxx¸èsymsize@linsize namsize°smblsize�intconrealconlogconlog1conint2condblcondcplxconcplxcondata ibuf obuf tbuf line eline ifno efno errp errb eerrb symtab esymtab esymp symtp namebuf enamebuf namep symbuf esymbuf ch ch1 progt holquo nxtaloc imptab nerror temp functm edata dsize declimpl"getname"2fx6.o–€ôœ2(fw �… r fÀ w îÿ€Àe07�ÛÿÀ‰… symsize@linsize namsize°smblsize�intconrealconlogconlog1conint2condblcondcplxconcplxcondata ibuf obuf tbuf line eline ifno efno errp errb eerrb symtab esymtab esymp symtp namebuf enamebuf namep symbuf esymbuf ch ch1 progt holquo nxtaloc imptab nerror temp functm edata dsize tput""tdecml"td fx7.o–ßõˆLÕ …@Ö À À xØèøsymsize@linsize namsize°smblsize�intconrealconlogconlog1conint2condblcondcplxconcplxcondata ibuf obuf tbuf line eline ifno efno errp errb eerrb symtab esymtab esymp symtp namebuf enamebuf namep symbuf esymbuf ch ch1 progt holquo nxtaloc imptab nerror temp functm edata dsize signon"signoff"pass2 pass3 pass4 passtabfx8.o.5÷¶tZ¬æ7 úÿ 7 ôÿÁ÷ �Àå0 ‚×p `õÀe07�Òÿ÷Îÿ÷&Èÿ· Äÿ÷ d s ' ".7ªÿÁef÷ D 7 –ÿÀU€�W ÿÿò‡Ö UƒfÁàã•h r Áe0c� r Áe0c�Àe0#��7 Tÿ h5 fW ƒ@˜¬ø¬$� N †@”Àå0×p `÷À7ÿ�Ñ•h÷ ® 7ÿÀ ÀU€�W ÿÿ †÷ ìþî��Àh�W ÿÿ†‡w ÖþŠƒ÷‹ÌþwÆþ…w :=-&w .,'w &(Ö …€%ýf� w )�¬=…@& Î  ¢ ¢(Ž ¢)Î ЋñÕ Ö Õ …À�Xþ7ŠRþ‡÷ B ÷ 8 &ö7�8þÀ ÷ 0þÀ% ìÀ% é À‰LÀ‰‡À�þ7Šþ w úý‡ÀE€ÿù · B÷ < 7 6 c÷ Èÿ ç ø · ‡À‡EOF on input II99II(II(I(ù)I)) èsymsize@linsize namsize°smblsize�intconrealconlogconlog1conint1conint2condblcondcplxconcplxcondata ibuf obuf tbuf line eline ifno efno errp errb eerrb symtab esymtab esymp symtp namebuf enamebuf namep symbuf esymbuf ch ch1 progt holquo nxtaloc imptab nerror temp functm edata dsize getline"isagn"<levzer"zerror getc chrtab get¤lino\err1&get1ömesLemesZnlflgZfx9.o–GùTêp&æ¦f&DÕ‹þ… ÅE•W %w Üÿ÷•N s c  d0 o( nw ²ÿâ÷ ~Cw ¤ÿÁ÷ n@”Ö ûw Œÿ÷÷ X@w ~ÿ@ŠÀÅw pÿÁ÷ <Â÷ 2 ÷ µ rf÷ òÿ€Àe0w <ÿ‡€�‚ƒ„…AW ƒ‡Á Áe�aA‡ÉèÉèÙèÉèÉèÉèÉèsymsize@linsize namsize°smblsize�intconrealconlogconlog1conint2condblcondcplxconcplxcondata ibuf obuf tbuf line eline ifno efno errp errb eerrb symtab esymtab esymp symtp namebuf enamebuf namep symbuf esymbuf ch ch1 progt holquo nxtaloc imptab nerror temp functm edata dsize code"putc getname cstrbcchrxcdecžcoct”cnamRcgetÔfxa.o–Uû¸:4fæÃEøÿÁœ2ƒŠÃw êÿ %c%c%dƒ�…w Òÿ …?irlc??gÙÙsymsize@linsize namsize°smblsize�intconrealconlogconlog1conint2condblcondcplxconcplxcondata ibuf obuf tbuf line eline ifno efno errp errb eerrb symtab esymtab esymp symtp namebuf enamebuf namep symbuf esymbuf ch ch1 progt holquo nxtaloc imptab nerror temp functm edata dsize genop"newline"*code typ"2fxb.o–šü°0@w üÿ × w ìÿÕ …w äÿ7Þÿw ÚÿrÕ …Ùéyùxsymsize@linsize namsize°smblsize�intconrealconlogconlog1conint2condblcondcplxconcplxcondata ibuf obuf tbuf line eline ifno efno errp errb eerrb symtab esymtab esymp symtp namebuf enamebuf namep symbuf esymbuf ch ch1 progt holquo nxtaloc imptab nerror temp functm edata dsize geticon"getlab"getsym geti ptemp fxc.o–èý¤6(Àœw € ÀE…fÀÀEÇÿ À&PpÎ ýÖ @�…xxxsymsize@linsize namsize°smblsize�intconrealconlogconlog1conint2condblcondcplxconcplxcondata ibuf obuf tbuf line eline ifno efno errp errb eerrb symtab esymtab esymp symtp namebuf enamebuf namep symbuf esymbuf ch ch1 progt holquo nxtaloc imptab nerror temp functm edata dsize size"nelem"error fxd.o.lÙ¶0XpÀw øÿ†wðÿ…w êÿ‡&w àÿ7Úÿw Öÿ7ÐÿÁw Èÿ‡À ÀE€�öŠ€Õ …À¬ÿ‰…è 8ù8)8I)8989symsize@linsize namsize°smblsize�intconrealconlogconlog1conint1conint2condblcondcplxconcplxcondata ibuf obuf tbuf line eline ifno efno errp errb eerrb symtab esymtab esymp symtp namebuf enamebuf namep symbuf esymbuf ch ch1 progt holquo nxtaloc imptab nerror temp functm edata dsize setln"getln"tfil2 tfildiag fopen getc getw xbuf fxe.o–©´2@À‰ ‰Àÿÿ‰Temp file? f.tmp1f.tmp2symsize@linsize namsize°smblsize�intconrealconlogconlog1conint2condblcondcplxconcplxcondata ibuf obuf tbuf line eline ifno efno errp errb eerrb symtab esymtab esymp symtp namebuf enamebuf namep symbuf esymbuf ch ch1 progt holquo nxtaloc imptab nerror temp functm edata dsize tfildiag"tfil1"#tfil2"*mes1emes1#fxf.o–±�&4×-üÿw ôÿ2w îÿf…w âÿd…)éÙ8Ù8symsize@linsize namsize°smblsize�intconrealconlogconlog1conint2condblcondcplxconcplxcondata ibuf obuf tbuf line eline ifno efno errp errb eerrb symtab esymtab esymp symtp namebuf enamebuf namep symbuf esymbuf ch ch1 progt holquo nxtaloc imptab nerror temp functm edata dsize sform"sdata"ptemp error fxg.o–lLøLó5 w ôÿ¦Âw êÿT—¢ € œ·&ÀEðÿ3\J€€ € € € ÀEðÿ3J‚…absiabsdabsaintintidintamodmodamax0amax1max0max1dmax1amin0amin1min0min1dmin1floatifixsignisigndsigndimidimsnglrealdrealaimagdimagdblecmplxdcmplxconjgdconjgexpdexpcexpdcexpalogdlogclogdclogalog10dlog10sindsincsindcsincosdcosccosdccostanhsqrtdsqrtcsqrtdcsqrtatandatanatan2datan2dmodcabsdcabs"D" @"" D" D "D"Bb„b„$&Hfˆ"Dfˆ"Dfˆ"D"Dfˆ"Dfˆ""Dfˆ"D"DDb„xÉèÙxxsymsize@linsize namsize°smblsize�intconrealconlogconlog1conint2condblcondcplxconcplxcondata ibuf obuf tbuf line eline ifno efno errp errb eerrb symtab esymtab esymp symtp namebuf enamebuf namep symbuf esymbuf ch ch1 progt holquo nxtaloc imptab nerror temp functm edata dsize funimpl"getname lookup funtabTfuntabt·typtabJfxh.o–àlŽ@ÀÀEÇÿ w îÿ …f&æ¦ Â¦Åw Ðÿ À w Âÿ f@qDa…Rqw °ÿ $Î éw ¢ÿå "w ”ÿ —%w †ÿ‚ƒÅœDq@„……xéxùéÉéééxsymsize@linsize namsize°smblsize�intconrealconlogconlog1conint2condblcondcplxconcplxcondata ibuf obuf tbuf line eline ifno efno errp errb eerrb symtab esymtab esymp symtp namebuf enamebuf namep symbuf esymbuf ch ch1 progt holquo nxtaloc imptab nerror temp functm edata dsize consub"getsym geti error geticon fxx.oA¥uüäHÐsymsize@linsize namsize°smblsize�intconrealconlogconlog1conint1conint2condblcondcplxconcplxcondata$æibuf$æobuf$ì tbuf$ò line$øeline$ifno$efno$errp$ errb$"eerrb$.symtab$.esymtab$nesymp$nsymtp$pnamebuf$renamebuf$"namep$"symbuf$Eesymbuf$Ôch$Ôch1$Õprogt$Öholquo$Ønxtaloc$Úimptab$Ünerror$Dtemp$Ffunctm$Hedata$Jdsize!dholround#dimu$eqvtab$Tconu$dou$blockp$dotabp$ dotab$ edotab$Hfunctn$Hblocks$Nnegflg$Jrepfact$Lcontab$ædattab$Txbuf$N<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_/ example of UNIX fortran / calling interface to machine code / this example is a function that / returns the single precision / sum of all of its single precision arguments. / for example: / f = sum(1.,2.,3.) / sets f to 6. .globl sum. / defination of entry .globl retrn / reference of return sum.: / entry point value / location of return value .+2 / pointer to execution code setf / no d/f i/l modes guaranteed mov *2(sp),r0 / arg count mov r3,r1 / r3 points to arg list tst (r1)+ / zeroth arg is old r3 clrf fr0 / start of actual function 1: addf *(r1)+,fr0 / add in each argument sob r0,1b / for each argument movf fr0,value / make returned value available jmp retrn / actual return .bss value: .=.+4 / space for return value / synopsis: / 1. save registers r3, sp / 2. arg list (pointers to values) / begins at 2(r3) / 3. entry name is name of function / followed by "." / 4. first word after entry point is / location of return value. this is / true for both functions and subroutines / 5. second word after entry point is / pointer to pdp-11 code body / 6. return is expedited by a jump to / the globl routine "retrn" Z..“.”errors•fc1–f1o.a—f2o.a˜f3o.a™f4o.ašfxo.a›sum.s w ô wþ÷ x‰@•÷ rû… ÅE…÷  yÕ  ÷ Š… ‰‡À À¸‡®w‰‡@‰À À”÷ õ@‰Õ‹þ… ÅE…À 7vÀ‰‡f÷ �‡ r fÀ ÷ îÿ€Àe0÷ Êÿ‡÷ tÿ û‡fÁ2 ‰w*Wp3Áe @7ÀE€AÁ p�…w0‰…w ìÿ w þþBlack Jack ·Ì 0�›€  4ú‡Æºw Øþnew game 7 –÷mšš7 ”÷ ðw  ÷š–÷ ÷jv÷fr÷ (7dÀVÀm` · Tw „þ up ÷ Ü÷6N÷2JÀ+÷ àþæÿÿæÿÿ7 :×-4wº· (÷÷÷æ*÷ �÷  þ÷ œþ÷mâò÷mÞò÷ øw÷mÞ÷ æ÷ Ðw úýInsurance? w ÚÀÜ7`Æ€ 7`®÷ ¢7à¶À 7à°÷ ¦×-š Y×-Š÷ �w ªýYou have black jack! Ö ÷ ZšÀ€7`j€ 7`d’÷ D6÷-2J÷ Jw dýSplit pair? w B· ,Ö €×- #‡×- ‚w 4ýDouble down? w Žc÷mì÷ v÷ †ý÷mÌÜ×-Ø$ƒ÷å Î ×-ȃ÷ Æ w èüYou bust ·åÀw~þ÷å ¢êw ÊüHit? w °wˆþ÷ ‚ w °üYou have Àt÷ (ý÷ ýæhw:þÎ Kw ŠüDealer has ÷D@÷ Ö÷m0<÷m,8÷ 0 w ^ü = blackjack ÷(×-ƒ÷  w 6ü = bust 7 ö÷å îë×-è†À+÷ ˆüÊw ü = ÀÎ÷ †ü÷ nü€ À-¾Ö ù·åÊõ·eÄòÀ¾Àí¸÷ üwìü×-h†w ÀûShuffle ÷ ¸÷4L÷š÷$–‡÷ $ÀZ÷ üÀT÷ ü×-F ÷ t‡÷ l‡æ:×- ÷ ˜ÿw ü÷ úÿœ›Áòÿpœ››±“›Ž 7 �Á r7œŠöwœ—ò7 êÀ · âÀ €  ƒÀ 7Ê€‡÷ xû÷ wôú÷ Ìw ðúAction $À¸÷ hûÀÀ÷ ‡& w Êú You break evenÖ w ²ú You win $ w  ú You lose $ €÷ û÷ þú‡A23456789TJQKHSDC÷ …wú€5Vþ  ð€&Ð 6÷ ’–% ‰w F5õFCøÿ÷5ž@$÷ ÔC!÷ ÐC×-ÌCÎß ÈÀ Îß ÈÀ Îß ÈÀ Î& æß .–%÷5N@'×-zC#÷ tC ÷ pC÷ lCÎß ÈÀ Îß ÈÀ Îß ÈÀ Îþÿ& æß .–%÷ buøÿöÿw-öÿŽB%@öÿõeöÿ5ôÿNöÿß ¤ ÎÖ?ß ÈÀ @øÿõeøÿHôÿ@øÿõeøÿHöÿõeöÿ÷ Ô ×wøÿ$÷ žB!÷ šB×-–BüÿÎ<ß bÀ Î=ß bÀ Î>ß bÀ Î& æ<ß Ô–%÷5¨>'×-DBüÿ#÷ >B ÷ :B÷ 6BÎ:ß bÀ Î;ß bÀ Î<ß bÀ Îþÿ& æ<ß Ô–%÷ &uøÿöÿw-öÿè@%@öÿõeöÿ5ôÿNöÿß â-Î2>ß bÀ @øÿõeøÿHôÿ@øÿõeøÿHöÿõeöÿ÷ n,×wøÿ–@wš2w ˆ2@À p=xC NNmfß þÖ wp2w ^2@À ð øC$ÀP@÷eJ@ÁP@B ‚øC �ì°@HÀ0@÷e*@AWtA]H@À ð øC Àw 2€À xCÂÁ5 ,ÚCZÁ5,ìCTÁ5, DNÁ5„,DHÁ5 ,DBÁ50,D<Á50,äC6Á5 ,ÖC0w f îÿw ^òÿw V w Nw Šðÿw ‚ þÿw zw rð5 xC,æCð5xC,êC ‡À‡BC±0xC Á`DøC !7!4!1…±0xC Á`DøCù!&!#…BC±0xC Á`DøC !!!…±0xC Á`DøCù!!…… ‡€À xCÂþÿÁ5 ,ÚCZÁ5,ìCTÁ5, DNÁ5„,DHÁ5 ,DBÁ50,D<Á50,äC6Á5 ,ÖC0w f îÿw ^òÿw V w Nw Šðÿw ‚ þÿw zw rð5 xC,Dÿÿð5xC, Dÿÿ ‡À‡BC±0xC Á`DøC !ýÿ7!ûÿ4!úÿ1…±0xC Á`DøCù!ýÿ&!ûÿ#…BC±0xC Á`DøC !üÿ!ûÿ!úÿ…±0xC Á`DøCù!üÿ!ûÿ…… ‡ÄöCÃvDÂ,=Á?ÀdÀ xFTÈ8ZœÌ5 ó w z@Àe7 V:w fþÿÌ5ó w R@Àe 7 .:w >ó 0w 0Ì5)ó &w  !w  âÿw ôÿw w ú„"w ò w ê0 w â0ìÿw Ú Þÿ#)Á —€·R<‡w ê îÿw âòÿw Ú w Òéw Èðÿw Àw ¸ þÿw °Øw ¦ îÿw žòÿw – w Žw †ðÿw ~ þÿw vw n·w > îÿw 6òÿw . w &w ðÿw  þÿw w –L5À@c À °@Òí|;@€ @`�R�…Õ …&æL5CcDcÀ  ÒíT;ÀÀåøC€ �R�å îÀ °@Òí:;ÀÀåøC€ �R�Õ ƒ„…w -÷ @" w-w -5 øÿ×-ú:UÀô:5þÿöÿW-öÿW-öÿõeøÿõ öÿõåøÿ×-\; À×-V; Á@`Wp u`øÿ×-2; À×-(; Á@`t5`øÿ×-;÷ ";õå øÿ×-;÷ ;õå øÿ@øÿwN,w <,5 øÿ÷5–7×-Ò: ×-Ì:×-Æ:õeøÿ÷5p7×-¶: ×-°:×-ª:õeøÿW-øÿ(õøÿ×-B7×-|:×-p:×-x: ×-b:×-j:õe(øÿ×- 7×-L:×-F:×-N: ×-8:ÿÿ×-@:ÿÿõe(øÿ@øÿwv+w d+ Àd9,þÿ AÀT95úÿôÿ@ôÿÀ ,øC 3Nôÿß Þ!À  +õ(9øÿuøÿöÿ÷ r÷5 òÿw-öÿ9õeöÿ@öÿõeöÿß â-Nôÿß Þ!5òÿ÷ º$õ òÿåwøÿÜ8@òÿ wÚ*w È*÷ H" wÊ*ľ8ƒ�‚�Ô¼8Ô6Ô 6”Ô à ÀøCÀ 7ì°@œ8€øC3øC2 øC÷ÿÿâ5À xì ü ì ì d à ~ Âà —  3 øCóDÔ7L8‡— ‚�Âe·š5^× P[÷e48× `U÷e2(8× pO÷eq8óøCÔ78‡— ÷EV5= ;÷EJ57ƒ ÷F5÷E<5— ×  · Ö7÷b87 b8Ô7º7‡×  · ¸7÷@87 68Ô7œ7‡÷ ’7÷å˜7 7ˆ7‡÷ ~7÷ †7Ô7r7‡Äl77Â47¼47b77T7 à òøCøCsøCÀ x& 2 8 : L ^ j ‚ ·’4‡÷Æ77 ¾7÷€4‡÷¦77 ¨7÷n4‡òøC3 D‡òøC‡w ê(÷ à6* æÖ6æÐ6ß 5–%5 øÿÎ@Àeôÿ&æ¶6ß Þ4–%Nôÿß – 5ôÿÀ õ øÿê5øÿçwøÿ˜6À w”(w ‚(w„6ÎÔ3æ@ß R2Ö ÷ t6Î@ß R2Nß àÎ ß $÷ V6Nß ¤ Nß â-÷ À ÷ *6/ æ"6æ6ß 5–%Î@Àeöÿ&æ6ß Þ4–%Nöÿß – 5öÿ@-À wøÿæ5÷ â5 Î ß $õ öÿÜ7 Ì5òwØ'w Æ'u�ùÿu�øÿ@øÿw¾'w ¬' ÷-¶5¶5÷®5®5õHôøÿ7  5÷ ö5ôÿÀeÀ-ˆ5wôÿ~5wôÿz5 )uôÿòÿw-òÿj5õeòÿNòÿß ¤ Nøÿß P05öÿ÷ Úýu-öÿøÿwòÿ:5uöÿøÿõeòÿßwôÿ(5@øÿw('w ' ÷-5n2Î5fß ðÖ D· 5Àú45òÿ5ôÿ÷ ¶÷Îê4fôÿß Ö õHôøÿw-òÿÔ4%÷ Æ4"õeòÿNòÿß ¤ Î2ß ÈÀ Nøÿß P05öÿ5 øÿ5øÿ÷ (ýu-øÿõeòÿ×÷ Œ4wôÿ~4@øÿw~&w l& ÷-t4Æ1@_DÀ\45ôÿ5öÿ5øÿ÷ ÷w-öÿF4?@öÿõeöÿ 5òÿ7 84/5 ,@ôÿõeôÿCöÿ×tøÿà ÃøCà ð@  —rd—t�CöÿÃEÿà ÃøCà ð@ —rd�PH@ôÿõeôÿHöÿõeöÿ½u-ôÿøÿwøÿ¸3À¾3H· ¶3Nôÿføÿß Ö wôÿš3uøÿöÿõš3òÿw-öÿˆ3+õeöÿNöÿß ¤ ÎØ0ß ÈÀ Nfòÿß ú0Ö 5ðÿõHôðÿu-ðÿòÿuðÿòÿ÷ Ðûu-òÿõeöÿÑ÷ 43wøÿ&3@òÿw&%€À ÄVBw ä âÿþÿw Øôÿþÿw Ì„"þÿw À þÿw ´0 þÿw ¨0ìÿþÿw œ Þÿþÿw ª îÿýÿûÿw ˜òÿýÿûÿw † ÿÿýÿûÿw tÿÿýÿûÿw bðÿåüÿûÿw P þÿåüÿûÿw >åüÿûÿw ,åüÿûÿ ‡p5xCAe÷ N÷ J…Åe…fp5xCAe÷ 2…q5xCAeñ øCøÕ &÷ ÷ ÷ ÷ „%ì…Åe…q%øCTþÿ‡w º#ÎÞ@ß R2÷ Ú Î ß �4÷xD¤1À 1÷eš1Èÿÿ ææ@ß ¦4Ö 7z1À Îæ\Cæj1ß Þ4–%5 øÿ@øÿµ øÿÀ ðøC@øÿµ øÿÀ ðøC@øÿµ øÿÀ ðøC@øÿµ øÿÀ ðøC@øÿµ øÿÀ ðøC@øÿµ øÿÀ ðøC@øÿµ øÿÀ ðøC@øÿÀ ðøCõøÿ@øÿõ øÿÀ @øÿÀ ðD@øÿÀ ðÿÿXD@øÿÀ AøÿÁ AøC phDâõ@øÿ@øÿõ øÿÀ @øÿÀ Cøÿ —rà ÃÎ@ÁBøÿ—týÿ ‚Î@—t�PpxCá ß Îwh"w V" 5 òÿ5 øÿõöÿ@öÿõ öÿÀ M÷ B0÷ D0NöÿÎe1Î8Níöÿß $Î ß $µ òÿõôÿ@ôÿõ ôÿÀ %µ òÿÎ ß $@øÿµ øÿÀ 5øCðÿ@ðÿœú@ß $ãõ5òÿÎ*ß $ÚÎ-ß $ÕÎ ß $÷ ¢/­÷ °/ÎAÎAß R2Î>Aß R2wŽ!w |! @tøÿ5øÿ@ÀEÿ5öÿ÷ r/ Nøÿß ôNöÿß ô_J÷ P/Nß ¤ Nß â- 5òÿ5ôÿÀ(/þÿ 2‚À xNZZ ü&6@öÿÀ øCß NÎ/ß $Nøÿß zÀê.ð üÿ Îxß $ÀØ.üÿß NÎ/Î-ß $Nöÿß zõ òÿ Î(ß $Îqß $Î)ß $õ ôÿÎeß $Îpß $÷ àÀ Î+ß $÷ x.(÷ üö'Îoß $Î-ß $Îoß $Î-ß $Îoß $ÃõôÿÎpß $™õòÿÎpß $‘÷ ìw w  õ @ 5@œ@A5ß $wôw â@týÿ5øÿAÀ ruöÿÁ%Îqß $ Îkß $À@íöÿ5öÿ@öÿœHA5öÿÀ ß $÷ ”-NøÿÎe1Î8Níøÿß $wzw hAÀ rNÎeaß $Î8@týÿàß $wJw 8@Àå  ‚À x>BZÎ ß $Á(-À rÁ õ7 -· -Î@Àe&æß $5–%wðw ÞAÀ r NAÀ r À rfAÀ r<&fæNAß R2Æewªw ˜Îü)ß ÈÀ Îò)ß bÀ À w€w n÷ îÁp,Á 1`VC÷ f,· ²)À\, À7N,wLw :À@, À72,À ÷ |)w(w ×- ,–÷, ×-,jÿ÷ÿÿö+7 ð+õúÿøÿW-øÿ3@øÿÀ 5°@öÿõ öÿõå2öÿõe2öÿõ öÿAöÿ À rd AöÿÀ rd5öÿõ øÿ @øÿÀ AöÿWpdÁí†+p°@µ øÿÉõè5öÿõ@øÿ@øÿõ øÿÀ @øÿÀ øCÀ °@ß ^(5àöÿíW-öÿ ÷>+W-öÿÐ÷.+ ×-„(÷+7 +w w õl(øÿ5 öÿNøÿß ’À õö*öÿW-øÿõ øÿðõ öÿwöÿÚ*ÀwÜw Ê÷ Â*BõÂ*øÿuøÿöÿ÷ ¼*÷ `ç÷ éw-öÿ¤*-õeöÿ÷ ž*Nöÿß ¤ Nöÿß â-Nß *5ôÿ÷ z*÷ þò÷ 8õ ôÿ wöÿZ*wøÿV*ÀõeöÿÏwøÿB* wDw 2÷ �ýÀ  Gõ&*øÿuøÿöÿ÷ *÷ jè÷ ¾æõ- *øÿ0õ $w-öÿú))õeöÿ÷ ô)Nöÿß â-Nöÿß ¤ Nß ’5ôÿ÷ Ð)÷ ”÷ Nòõ ôÿwøÿ²) õeöÿÓwøÿ )Àw w Ž÷ õ 7 |)÷ âõ‚)öÿ@öÿÀ 5VCøÿ÷ vòÀ ÷ JþÀ ÷ T7b)÷ J) ÷ ý÷ N)÷ ÒñÜ÷ Ù÷ 4)Î\Aß R2÷ DÎ")ß Ú @öÿÀ 5VCöÿ@öÿ@íøÿ5øÿædAß R2Ö AöÿÀ 7rJ&À%–×-B&®­×-8&W-øÿ´¥×-(&W-øÿ< ×-º(™W-øÿ<•×-&�· þ%�w¦w ”÷ R5øÿ÷ 5öÿ5ôÿw-ôÿ~(õeôÿ@ôÿõeôÿ5"øÿñwöÿ`(Nøÿß Ú ÎpAß R2wöÿH(×wJw 8 7 0(÷ Æ70(÷ üõØMòÿ÷ °5ôÿÀ% À ÷ ,ô@òÿµ òÿH�ôÿí@òÿµ òÿŠ÷ØMò'Î~Aß ºÀ ÷ ü×-4% ÷ Ú' ΆAß ºÀ Îß ÎÎŒAß ºÀ ÷ .Á°'Á 1`VCÎ�'æ’Aß ~Ö Î„'æ˜Aß ~Ö ¥ÎžAß ºÀ ÷ œÿ‹r'÷ ÷–÷ ,5øÿ÷f' ÷ D5øÿ7 V'ΤAß R2€w@w .÷ &5øÿ÷ 5öÿÿ‹ ' @øÿt@]öÿww þÀŸ'5øÿ a h Àè&œ5öÿ 1 8 ÷eÊ&À8@íöÿt@møÿÀeŸÿ5øÿw´w ¢õ¤&øÿ@µ ’5öÿ @øÿµ øÿ’@-öÿð wøÿx&Àwvw d÷ vÀ%ΪAß R2÷ nõN&øÿ÷ N&÷ òâ÷ ’äw-øÿ6&÷ ŽùÀ ÷ .&ξAÎÊAÎÖAß R2÷ *@øÿww ü7 ú%÷ þ%÷ <ð÷ 85øÿwìw Ú÷ Ð%÷ ´7 Þ%@Àeöÿß Ä4÷ ÖÀ Îß 64Nøÿß L4÷ R÷ „ ß 64Nöÿß L4Nøÿß 64 æòAæìAæâAß `4Æe æ BæBæøAß `4Æe÷ >wb�‚÷ ‡ƒCà× 4ƒ ÃEC`f¦C †K"Áeùƒ ƒÂå€ "ù@‘@‰ b(C éƒçC @‘@‰ b(Cã‚æÁÁe÷ ”ÿ‚�LJ0‰À50‰º0‰À50‰Ä0‰‡0‰w¾þ&0‰Ä€,úÿ‰öå· |$€ ‰&fÁíV1€ ÀíN1@·J1·D1‡w ZõZ$øÿÀT$,þÿÿÿ÷ N$÷ ÷ Ìì÷ ô÷ïNöÿß â-÷.$õ-$$øÿ#À$t5öÿÀ $ÀEÿ5Pöÿfföÿý –%÷ ô#ÛNöÿß ¤ · 8!7 â#ÙwÞw Ì÷ Ò#$×-! Î Á!À r Îe0ß $Áü À r NÎe0ß $Î.ß $Î ß $ ×-Ž#Î ß $÷Nß à÷ j#Î ß $w^w LÎ ß $Î�ß Î ß $w<w *@7,€*#5 øÿW-øÿ@@øÿÀ AøÿÁ Am ,øCµ øÿî@° ‚wöw äˆ5 tÿW-tÿ@ @tÿÀ @aAtÿÁ pøCvÿµ tÿïõÄ"öÿ5 øÿ@Àevÿæ2 ß Ö @øÿw¦w ”À”"5öÿ5øÿ÷ hö÷ Š"÷ .ß÷ Îà@øÿÀeÀ-l"2@öÿõeöÿß â-÷ X=ôÿ÷ w-öÿF"@öÿõeöÿ5ôÿ÷ 8"ä@öÿõeöÿß ¤ ÷ Z=ôÿ÷ ¤êãÎ"føÿß Ö @øÿww ò 5øÿ5ôÿ@ôÿµ ôÿÀ 5Œ@òÿý òÿ5öÿ5`øÿð@øÿ wÊw ¸ 5øÿ5ôÿ@ôÿµ ôÿÀ 5˜@òÿý òÿ5öÿ5`øÿð@øÿ w�w ~ @À 5øCðÿõr!øÿuøÿöÿ÷ l!÷ t÷ "äw-öÿT!3õeöÿ@öÿõeöÿÀEÿ5òÿ5 ì@öÿþÿtøÿ5ôÿNðÿß ^(&@ôÿÀ &øC÷ Ö €%Õwøÿþ AðÿÁ A°@À r<wøÿæ wèw ÖÎ÷ÿæ fß .#–%Îùÿæfß .#–%Îæ fß .#–%Î æfß .#–%Îøÿæfß .#–%Îÿÿæ fß .#–%Îæfß .#–%Îæfß .#–% & fß .#–%w@w .@À p=xC À AAmÁ 1`ÖBww "Àÿÿ5òÿ5ôÿ5öÿ5øÿÀÿÿ5êÿ5ìÿ5îÿ5ðÿõÿÿèÿÎBß ºÀ ÎBß ºÀ õøÿõìÿõôÿõêÿ5 òÿbÎBß ºÀ Î Bß ºÀ õøÿõìÿõêÿL@Àeìÿ@Àeðÿ&@Àeôÿ&@Àeøÿ&ß Ö%ÆeÀN· J’5æÿ * x@Àeêÿ@Àeîÿ&@Àeòÿ&@Àeöÿ&ß Ö%ÆeW-æÿ-@Àeêÿ@Àeîÿ&@Àeòÿ&ß î&–%÷ âÀÞ· Ú’5æÿ + õèÿÀÄ· À’5æÿõ æÿ _Ò%À¨5àÿ5âÿ÷ ¢÷ FÛ÷ æÜõÿÿäÿ5 Üÿw-âÿ€jõeâÿ@âÿtøÿÀ 5øCÚÿ÷ jNâÿß ¤ Nâÿß â-ÀL5úÿÞÿNìÿfðÿfôÿføÿÀ2&øÿfÚÿß �'Æe À .NêÿfîÿfòÿföÿfÞÿÀ&üÿß �'Æe À ÷ Pñfèÿß 6(Ö À õ äÿ õ ÜÿÎ$Bß R2õÜÿuâÿäÿõeâÿ÷ ¾÷ Bæ•÷ | ’wàÿ¤õ ÜÿÀÿÿ@äÿw˜w †Àˆ· „’5øÿ q= N fffß Ö%Æe_ê&W-øÿkýN fffß Ö%ÆeYW-øÿp ýý 1ý -W-øÿnýW-øÿbý W-øÿrý÷ àׯÚpAÁeÿÿÀ r} ý· ºý  ý  @Àe=ýÿÿׯ˜/ · �N ffß î&–%w€w nÀp· l’5øÿ q= W-øÿkýNffß î&–%ý ,ý(W-øÿr= ÕW-øÿnýÍW-øÿbýÅW-øÿ0 W-øÿ9@øÿÀeÏÿ=÷ ÜwÞ w Ì AÀ ruöÿ@týÿ5øÿ÷ ¸À@íøÿ5øÿW-öÿ À@íöÿ5öÿõôÿ5 ôÿNfß 6(Ö À Nôÿf ß 6(Ö À Nøÿf ß 6(Ö À Nöÿfß 6(Ö À À w8 w & õ  Nß ^(@- Àw w þ õ @ @wô ÄöCÃvDÂàÁ?ÀdÀ x (è)¦)„)b)) (Ì5 ó îÿw zîÿ@Àå 7 w fþÿÌ5ó òÿw Ròÿ@Àå7 âw >ó ðÿ0w 0ðÿÌ5€)ó àÿ&w àÿ!w  âÿw ôÿw w ú„"w ò w ê0 w â0ìÿw Ú Þÿ#)Á —€·‡w ê îÿw âòÿw Ú w Òéw Èðÿw Àw ¸ þÿw °Øw ¦ îÿw žòÿw – w Žw †ðÿw ~ þÿw vw n·w > îÿw 6òÿw . w &w ðÿw  þÿw w –L5À@c À Ê4ì°@@€ @`�R�…Õ …&æL5CcDcÀ Ò ÀÀåøC€ �R�å ïÀ Êôì°@ÀÀåøC€ �R�Õ ƒ„…w È õÈøÿ÷ Öýõ¾öÿwøÿ¶÷ zÛõ®ôÿwøÿ¦@öÿ@íôÿ€ 5òÿµ òÿ@òÿw” w ‚ 5 øÿ×-z?×-xþÿ À×-rþÿ Á@`Wp u`øÿ×-Nýÿ À×-Dýÿ Á@`t5`øÿ×-ÿÿ÷ þõå øÿ×-ÿÿ÷ ìõå øÿ@øÿwú w è 5 øÿ÷5B×-Îÿÿ ×-Èÿÿ×-Âÿÿõeøÿ÷5×-²ÿÿ ×-¬ÿÿ×-¦ÿÿõeøÿW-øÿ(õøÿ×-ð:×-xÿÿ×-lÿÿ×-Tÿÿ ×-^ÿÿ×-Fÿÿõe(øÿ×-º>×-Hÿÿ×-Bÿÿ×-*ÿÿ ×-4ÿÿ×-ÿÿõe(øÿ@øÿw" w  À,þÿ @À5úÿôÿ@ôÿÀ ,øCÿÿ 2Nôÿß Þ!À  *õÔøÿuøÿöÿ÷ xÓ5 òÿw-öÿ¾õeöÿ@öÿõeöÿß ¤ Nôÿß Þ!5òÿ÷ &ßõ òÿåwøÿˆ@òÿwˆw võ@øÿ@øÿõ øÿÀ @øÿÀ 0 ÖBô×-Tõ@øÿ@øÿõ øÿÀ @øÿÀ AøÿÁ 1l @ÖBð÷ 0÷5‚ ΂÷5tÎrß †"õ@øÿ5 òÿ@øÿõ øÿÀ 3AøÿÁ AÖBWpduðÿNøÿß H5 öÿ@öÿµ öÿÀ 5VBôÿâ@ôÿÀ 5°@îÿõ îÿ AðÿÀ Bîÿ r5àòÿäAðÿÀ 5rîÿ5`òÿÜ@òÿ wŒÄ€ƒ�‚�Ô~ÔÐÔΔԠà ÀøCÀ 7ì°@^€øC3øC2 øC÷ÿÿ¤À x8.¾. /¢.,/,/:.Âà —  3 øCóÿÿèCÔ7‡— ‚�Âå·\_× 0\÷åö× V÷å2ê× P÷åqÞóûÿøCÔ7Ƈ— ~÷E>— p;÷E 7ƒ ÷÷Eü— x× > ÷ –÷üÿ’7 ’Ô7z‡× : ÷ x÷üÿp7 fÔ7\‡÷ R÷eX 7H‡÷ >· FÔ72‡Ä,7‚7|7"7 à òøCøCsøCÀ xf/r/x/z/Œ/ž/ª/‚ ·T‡÷üÿö7 î÷<B‡÷üÿÖ7 Ø÷<0‡òÿÿøC3 èC‡òÿÿøC‡w ª÷-´´÷¬¬õ¸ øÿ7 ž÷ ôð5ôÿÀeÀ-†wôÿ|wôÿx -uôÿòÿw-òÿh!@òÿõeòÿ5îÿNòÿß â-Nøÿß F5öÿ÷ ÿu-öÿøÿwòÿ0uöÿøÿõeòÿÛwôÿ@øÿww  ÷-dÎfß ú0Ö D· üÀð5òÿ5ôÿ÷ ø÷Îàfôÿß Ö õ¸ øÿw-òÿÊ%÷ ¼"õeòÿNòÿß â-Îß bÀ Nøÿß F5öÿ5 øÿ5øÿ÷ ^þu-øÿõeòÿ×÷ ‚wôÿt@øÿwtw b ÷-j¼@_N2ÀR5ôÿ5öÿ5øÿ÷ V÷w-öÿ<?@öÿõeöÿ5òÿw-òÿ00u-òÿ,@ôÿõeôÿCöÿ×tøÿà ÃøCà ð@ —rd—t�CöÿÃEÿà ÃøCà ð@  —rd�PH@ôÿõeôÿHöÿõeöÿ½u-ôÿøÿwøÿ®À´H· ¬Nôÿføÿß Ö wôÿ�uøÿöÿõ�òÿw-öÿ~+õeöÿNöÿß â-ÎÐß bÀ Nfòÿß ðÖ 5ðÿõ¸ ðÿu-ðÿòÿuðÿòÿ÷ ýu-òÿõeöÿÑ÷ *wøÿ@òÿww €wîDÄeÀŸä · Þ %ß $ôwî7 Ê7 ÀׯÀ-· ¸· ¶÷"JP7 ® .÷HPƒÁ¾2BÞ üJâ2d83o23xh3fr3e3c3sî2l Ó•-÷ C r f÷ ðÿ€Àe0�‡•à •1à /Á& Ò‹ƒ D~'Â0BÂ4B ÷ f v÷ öÿ€€LÀe0 9Àe�‡Âä÷ zÂÚ÷ p‚ƒà&æ Ä Ãm¼÷ ºß $Ã~Ä Ž”ß $à Î ß $Ã~Ö „w¦þ7 Ž ÀŸ„· €Àå0 ‚· vWp `ñÀe0[ƒÄeÓ•?‡f…÷ B÷BN<À4‰BN ‡À À 7$ Àß · …‡7& 7 …‡f…@‰†w  w f…@)‰†wôwøf…wÐ @Àe7È ‰8BwÔf…‰†wÆ wÈf…€"‰†w° w²f…w� wŒ ‰>B†w�w”f…*‰†w€BJ wzf…@wZ wV ‰DB†wTwXf…@w> w: ‰JB†w2 w4f…@w w ‰PB†wwf…@‰7þÀÿÿF…‡Õ @…&æ¦äHÅåF‚ƒ„…‡%d. ...       ”*Ú*t+L,æ,JZ ø ” Hô|ü þÔþÔþœÿd,,ô„¸ @< Chess /usr/lib/bookkqrbnp PNBRQK a b c d e f g h q q q q k k k k r n b b n r ppnbrqkrnb%s: %d:%d%d Resign time = %d Illegal move resignfirstclockwhiteblackscoreeh? Draw by repetition White wins Black wins Stale mate /bin/mailmailchess/usr/bin/mailmailchesso-o-ooooo-oooambiguous üÿðÿýÿøÿ ‰‰‰‰‰ijklmnopqrstuvwxyz{|}~€�‚ƒ„öž—%$—¯- · ’ *‰‰À‰@)‰@‰‰‰‰ ‰‰ø  ‰@)‰@‰ ‰ö‰w  Type y to move first: w Š÷ 2 Iw z 1111 2222 3333 4444 1234 1234 1234 1234 1 ---- ---- ---- ---- 2 ---- ---- ---- ---- 3 ---- ---- ---- ---- 4 ---- ---- ---- ----÷?˜ ×­ yw .ÁÂL@@f@f@f ÷ x w ÀYou win ‰Â ì÷JZ ÷ X "‰w jw èÙ÷ D w ŒI have a force win: "‰7 ÷e w 2ùÁ W  &ƒ@÷  W  ƒÀå” € w  xW  ƒ÷ ä À#‰@Àå” € w ú o÷ È ÛÀ#‰×÷ º w QED ‰Á ‰– ‡À À�ˆ  ô ñ 9Ày #ç *À �W¤ à…‰w ð” …fw ¦ÿÁ @”Àå1 †À À &@”Àå1 †€UÀ À &@”Àå1  †€UÀ ð ” W¢ Ö ÷  Öw LIllegal move Ì&÷ è€ w o€�…f÷ Ðw ÂÁ” À¶Àe1�À®Àe1�À¦Àe1�@�À‰” �Õ …&w †æ‚æ|ævÀxw r·åj·åh·åf·dÀZ``ÀmRÀmP€ w $ÀDw Õ w.À‰” �…fÀ Õ w&À‰Î ùÖ …U%…&tüÿÀEüÿ7 € ÀEüÿ7â€ÀEüÿ7Ú…f¦Á” Â@@  ÑÑ  ò‚�…@•÷ ª A ZÀe 7�†À‰– ë… ÅE…f �`C �… r� CpD�D`¦@ "Á`û„ ƒÂà€ "úw &D ñ„ïD w Dî‚&Á`w ¦ÿ‚�Ðf¦æƒ @‘à ûƒ‚�… …f ‰ÁmöWp/Ëwî@ÀÀEüÿ�…f¦÷ ÜÁÂL  @@f@f@fxÜÿ°÷eª?¦÷e å Õ · ¦‚�…CD äÄ 7à ;ÁÂL@@f@f@fxþ øä@è þ&øè þ&Øw tÿ€Ø€Øw `ÿ€ € ߃„„ƒ; < ±ì þ÷ °ë þÛ ÁÂL@@f@f@fx D ÷Ä +  ì þÜæ&w øþ€( €( ’ƒ+ „, ‚ö((.((((((((((((((ªªª¨ªªªªªªªª²ªªªªw ~ý & ñ ” ñ” ÂÃL€€f€f€flp à øw ,þ`1 ” @À °” p– ÁeW €ÝÁ” ” Ãw †ýÁ” W  †Ñ Bò ” ò” ÷Öä÷ â"‰w ôý 2 ” çw ý¸ò” w Üü€€ w Þû x…/dev/ttyc/usr/bin/dds” – ˜ š ” œ ¤ ¬ ” ž ¨ ² ” ´ Ô ô ” ¶ Ø ú ” ¼ ä ” ¾ è  – ž ¦ ® – ¶ Ö ö – ¾ æ  ˜   ¨ ° ˜ ¸ Ø ø ˜ À è  š   ¦ ¬ š ¢ ª ² š ¸ Ö ô š º Ú ú š À æ š  ê  œ ž   ¢ œ ¼ Ü ü œ ¾ à  ž ¾ Þ þ   À à ¢ À Þ ü ¢  â  ¤ ¦ ¨ ª ¤ Ä ä  ¤ Æ è ¦ Æ æ  ¨ È è  ª È æ  ª Ê ê ¬ ® ° ² ¬ Ä Ü ô ¬ Æ à ú ¬ Ì ì ¬ Î ð  ® Æ Þ ö ® Î î  ° È à ø ° Ð ð  ² È Þ ô ² Ê â ú ² Ð î ² Ò ò  ´ ¶ ¸ º ´ ¼ Ä Ì ´ ¾ È Ò ¶ ¾ Æ Î ¸ À È Ð º À Æ Ì º Â Ê Ò ¼ ¾ À Â Ä Æ È Ê Ì Î Ð Ò Ô Ö Ø Ú Ô Ü ä ì Ô Þ è ò Ö Þ æ î Ø à è ð Ú à æ ì Ú â ê ò Ü Þ à â ä æ è ê ì î ð ò ô ö ø ú ô ü  ô þ   ö þ   ø   ú  ú   ü þ         È œÿ `w ô wþ÷ x‰@•÷ rû… ÅE…÷  yÕ  ÷ Š… ‰‡À À¸‡®w‰‡@‰À À”÷ õ@‰Õ‹þ… ÅE…À 7vÀ‰‡f÷ �‡ r fÀ ÷ îÿ€Àe0÷ Êÿ‡÷ tÿ û‡fÁ2 ‰w*Wp3Áe @7ÀE€AÁ p�…w0‰…w ÿMOO w úþnew game ÁPÑ•ÿÿW TûÁPw ˜ÿ ÂP ù— Tû�W Tò7 w$w ¶þbad guess ÁTW¤ W Yú÷ Hÿ7 Ü7 Úw Šþ? ÁTÑ•ÿÿW YûÁT÷ ˜þ �Àå0 Ô†ÂT Ð— Xû�ÂP · �— TùW Xä÷ `þ »ÁTÂPR¤· l÷ fW X÷À^÷ ˜þw þ bulls; ÀF÷ ‚þw ôý cows ×-4· .wFÿÀ&÷ ^þw Ðý guesses wÂþ€w ô wþ÷ x‰@•÷ rû… ÅE…÷  yÕ  ÷ Š… ‰‡À À¸‡®w‰‡@‰À À”÷ õ@‰Õ‹þ… ÅE…À 7vÀ‰‡f÷ �‡ r fÀ ÷ îÿ€Àe0÷ Êÿ‡÷ tÿ û‡fÁ2 ‰w*Wp3Áe @7ÀE€AÁ p�…w0‰…w ÿTic-Tac-Toe w òþAccumulated knowledge? w èþ ‰b‡‰’è@‰À’Ð þà 72Àå’€ ÷ 2ÿw ¤þ 'bits' of knowledge w rÿŠw „þnew game ÷~àÀsŠ |ü‡Ás@”À ÀXÀO@ÀåC÷ ÀþW vW yW |è÷ ¦þW |ã‡÷ œþw "þ? ÷ Dþ Àå1 O‚ð‹sL÷ (þ Fñ•sw 4L÷ 7 L7 JÄs̋̕w Y÷ ¾ ŠÁ’w <† û 7 ‡77· „ !|߇÷ þ(×-ø÷~ðÀìÐè7äÀâÈ•wÿw hýIllegal move ÷ þwêþw NýYou win w >ýI concede Á®Â~· ’†‘ûwœw�þw ýI win w€þ Á f Wq€”œs`G~@… ‡— Jí‡À‡ÀsЋ  |û‡w ÆüDraw w4þ‡ÁJ÷ ÷ `÷ `� W bò‡Õ Õ …@”œsÀ ‡‰b ‡÷ø‰è@‰Á’B€ ýÃ’Ë  üóÿÿþÿøñÁå’w,÷ ²ü@€ ÷ ¾üw 0ü 'bits' returned ‰b‰’wü/usr/games/ttt.kCH?b=а+Â<2.30L,b+t+%/áH>CØ6Æ6/CÀ63HIAHˆIjH€@ÏH!0VHöH�B´GÕ?@IÎG/H�?cHIÉH0ÛE??ã>âEv/0$HÇHhH?«EuEñ>”?›=Ü>[E�EàE¬>‹EQG3?èEkEà+ë>Ž?±<‡?ñGr<C)H÷GW?ÉDö<�DCœEF-BrB ?M= F¸>ï>ßG!E0!ß ž Ö „ ñÎB!ß ž ÎD!ß ž ÷ Ø_~ ×-D ÎZ!ß ž ÷ DÀeÿÿ × ÀÀ €`"ƒ öÎh!ß ž Û77!c_€ ×-ü Îz!ß ž  !8÷ ôÀeÿÿ× ÿÿ05 øÿW-øÿ @øÿÀ €`" µ øÿóÎß ¬ ëÀtÀe:"÷ šÎž!ß ž _â ò5β!ß ž _â „ Å÷ nÎÈ!ß ž _â Àåm ƒ À x� ˜ ž ž ž ž ž à _ˆ À8tÀe:"òEÎß ¬ !À €`7À tðU@"_€ Îâ!ß ž ÷ ~À%y Îø!ß ž ÷ lÀ%y_Ð_ØwÚw ÈõøÿÎß ¬ õ õ øÿõÀtÀe:" — €À a"ÿÿ€À aHÀ‚ îÛw€w n÷ .�À% ù‘¡ ¡ Ä‹÷ $÷ �ò‘7<À�w@w .÷ :Îî$ß ¤Á,wp&@Á"@xß æ@À ÷ &ß ÄÖ wüw ê ÷ ¨× "× × 0× 9 × à ÷ –÷ |õ Wp @À`ÀeÐÿ÷ `Ûwœw ŠDC — €À atð0@"À‚ ï wbw P@@ïwNw <€wLDÄeÀŸB · < %ß Jôw 7 (7 ׯ-· · ÷,ô$7  .÷ò$ƒÓ Á BÝ üJ,dro˜f¢eZcds8l Ó•-÷ 6 r f÷ ðÿ€Àe0�‡•à •$ÁŠ“”C~÷ fWtýÿÁEà÷ ðÿ€ÀEøÿÀe0�‡Â^÷  ÂT÷ –‚Ò Â ƒó‹ÿÿà ùÎ Á.ÁàŠ�`w.÷ "ß J÷ û·Ο· ß Jø÷  ÷ øÎ ß J÷ ðûwœþ7 â ÀŸØ· ÔÀå0 ‚· ÊWp `ñÀe0[ƒÄeÓ•?‡f…@÷ ª÷¢wŠw ¸%@�w ¬%×-ˆw ¾%@7 bwHf…wVw ¤%7 Lw2f…÷ 8÷è"2À*‰è" ‡À À 7 Àß· …‡7* 7 …‡f…@÷ †wàf…÷ €wÔw Øw ÚwÖAupNNmfß 0Ö w¼w ª @@í5òÿÀ-¤_`AòÿÀ 7r”5òÿµ òÿAòÿwp„uòÿ@@mòÿ5ôÿ@Àíl5øÿuöÿõm^øÿ@øÿ@-ôÿ ƒfôÿføÿÿ D–%À îu-öÿôÿ!ƒõí2öÿ@öÿ@-ôÿ†föÿfôÿÿ –%À u-øÿôÿuöÿôÿNöÿføÿß dÖ Êßu-øÿôÿ&@ôÿ@íAAíôÿ ‡NfôÿÎmÌß 0Ö uôÿ Nôÿfß 0Ö @ôÿÀm¨5_6Nöÿføÿß dÖ uøÿôÿªwˆw võ|øÿ@øÿõ øÿÀ @Ÿ5öÿ@µ AŸH�@µ H�öÿèwHf… ‰¦BR‚wf…@‰€6p‡74ÀÿÿF…‡Õ @…&æ¦äHÅåF‚ƒ„…‡fA7‰"‡  �…Ñÿÿ�±…fAñ &÷ €ø9�± �…&fA÷ �€…@Àe&7ÚwÖ·ãÐ@‰2"±ñ‡7¼‡fÁ´Wp3Áe @7¦ÀE€�‡8:d–˜¢¤àD|ªÒÔÞàHJb|–Æ8VX^`šœÒ "$`ˆªØ*`’´æNZ\†ª¬¸ºðXr�Instructions? (y-n) You are in room %d You fell into a pit You were eaten by the wumpus Theres a bat in your room I smell a wumpus Bats nearby I feel a draft There are tunnels to %d Move or shoot (m-s) which room? You hit the wall Give list of rooms terminated by 0 You shot yourself You slew the wumpus That was your last shot Another game? (y-n) Same room setup? (y-n) ‰¶w w&w úï€Àw ðï…‰“”•–—˜™š›œ�Z..œ.�bjžchessŸcubic moo¡ttt¢ttt.k£wump. .. r0 r1 r2 r3 r4 r5 sp pc csw mov movb cmp cmpb bit bitb bic bicb bis bisb add sub br bne beq bge blt bgt ble bpl bmi bhi blos bvc bvs bhis bec bcc blo bcs bes jbr jne jeq jge jlt jgt jle jpl jmi jhi jlos jvc jvs jhis jec jcc jlo jcs jes clr clrb com comb inc incb dec decb neg negb adc adcb sbc sbcb tst tstb ror rorb rol rolb asr asrb asl aslb jmp swab jsr rts sys clc clv clz cln sec sev sez sen cfcc setf setd seti setl clrf negf absf tstf movf movif movfi movof movfo addf subf mulf divf cmpf modf movie movei ldfps stfps fr0 fr1 fr2 fr3 fr4 fr5 als alsc mpy mul div ash ashc dvd xor sxt mark sob .byte .even .if .endif .globl .text .data .bss .comm     auto break case char 4 continue default define do double 4 else extern 2 float 4 for goto if include int 4 register return static struct 3 switch while        …>+D;62(!1 -:".?:H5&  * $ <6:(E    -3$ =8 K  8-  G55K.'E IF%  ) >'  $# #4 .%&O@-9'   8'10%$ 1)1&' @,'00>(-B    ,I 0,"/ *$475L 5 4'U;3 *;)G3K.S /( "-+7    K     ;,      .      %  2          1        -2            -   !          &B      7  -  8                       @  >           #           5                ;    '           1  %                      #                        ' -     %6   '                  §¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐDDmÅw#4Â*<RÝÅËÛÅ œôóôrärârðîíðlìëôhóhçäãâetéalésôisôipôiìytéotéanôinôicôiatéhîinémélìibìiléhéfédéâiaéíaiá÷orìoræorùar÷arçuarôarâoarîarìiaréarçarâaròo÷ooèooíonôenótanìanèanèolæolæielöiãióaiíaitôetåäreãreârevåleDalåcåe%edäedäe$edådåäuceÂeóteaèeaarézanézalézárdézóelvënivìievCñuonôinõîuäuÂuÅquatuátótatôatôorátenátíatèousãlosiïs÷isasõr$óuræigõr#ôrótoræor÷herärãrârócopyïnótonðhonçoneïn$ånn%aòinãlinìinóomãomôimúlôlólðlöillckìëlçlælälãlðaâlfaâlãaâlótabláblâläalíalóalìikågõagòiagerágmágkágdág÷ifënifóeæreâe÷idôidóidñuencæluånc&esåncerånciånc%óanceráncaráncîancâalánciáncêusôicóticðiecðlacáðrooóelòi$ìieìoìontôinótrinròinpðinnîinmíinlìinúlinôlin%sìinrìinðlinnëlinkìinçlinælinälinãlinâlinyôhineethéneôhingçindäinbâinéníout÷ort÷ittôiseôispðisrîisnîisðlisçuisçlisbìisgçisdäisésçrapâorïugâurgöicîaìaíiáôrãhƒifƒedásci÷orâoo÷alãracâacæus÷elôelóhelótalótaâalvåuåkåthåtchåaådñua#uáôaurá%gïîaonáîaôiaóia%ôriáriáîiáäiáãiaçaíea$òeacôiãaóiãaéãaãaâaîuoòiõ#iõ#eõivésôisiíisalés$eés$aésòooäoèaôowäowôurópooîooíoo aléúaôioéúaôioléáôioôio%sóioóionéoçioãioãoôoóoòiðiîiíiìiëióteiôaightå÷omåíeoëekåôeeóee#óa÷omáíaôiaóia$eéaãiaÃiaãleaíea#eáíacòçrouõóhiëeeúarÂrôo#óo$òiïizåãovåoöeãomðutå%usôeostå%ácôe÷ritå%isôe%esôe%asôeótearôertå%måôe÷aôeråopåðaðewnå$sîeonårmållådäleâlekånôheæaôheeiôhethåshåðhechådgårdåoundåldåidåäucåncåBåóa&acõìa&ecõìa&icõìa&egõìa$uïuôiouçiouãiou$iïuçeouãeoueïubõîesìesbó%pïìibéCøeCóeDshåDchåÁionésinésaléslïçishtåsiåsgçesgåsdäesdåsãasèearæooiïæronðriníenãienián÷righârighæligh÷eighóhifãraf$dgåçoaãoaâoa÷ha$esô%quiôôiô%oséôóiôinéôniô(faâiléôãaâiléôðaâiléôâiléôiôâurôoòñuar$uáríenôaòionáriárnïíðlgçlðaâlfaâlãaâláblâlìók&gòaðhlïçæîeìeckåëeâodótudäeedâ÷aäaability able about above absence abstract academic accept acceptable accepted accepts access accessed accessible accomplished accordance according accordingly account accuracy accurately achieve achieved achievement across act acting action actions activated activates activation active activities activity actual actually actuated adapted add added adding addition additional additions additive address addressed adequate adjacent administration adopted advance advantage advantageously affairs affect affected affects aforementioned after afternoon again against age agencies agency ago agreed agreement ahead aid air algebraic algol algorithm algorithms all allow allowed allows almost alone along already also alter altered alternate alternative alternatively alternatives although always america american among amount amplifier amplitude an analog analogous analyses analysis analyze and angle animal announced annual anode anodes another answer answered answers any anyone anything apart apparatus apparent apparently appeal appear appearance appeared appearing appears application applications applied applies apply applying approach appropriate appropriately approximate approximated approximately approximation april arbitrary are area areas argued argument arguments arise arises arithmetic around arrangement arrangements array arrays arrive arriving art article arts as aside ask asked asking aspect aspects assign assigned assignment assistance associated association assume assumed assumes assuming assumption asymmetric at atmosphere atom attack attempt attempts attention attitude attorney attractive audio august author authority automatic available average avoid aware away axes axis back background bad balance ball bandwidth bank bar base based basic basis be bear became because become becomes becoming been before began begin beginning begins behavior behind being belief believe believed bell below beneath benefit bent besides best better between beyond bill binary biometrika bit bits black block blocks blue board body book books both bottom bought bound boundaries boundary bounds box branch branches break breakdown brief bring broad broken brought brown bubble budget build building buildings built burning bus buses business busy but buy by cable calculation california call called calling calls came can cannot capabilities capability capable capacity capital card care career careful carefully carried carries carroll carry carrying case cases cathode cathodes catholic caught cause caused causes causing cell cells center centered central century certain certainly chain chairman chance chang change changed changes channel channels chapter character characteristic characteristics characters charge charged charging chart check checked chemical chief children choice choices choose chosen circle circuit circuitry circuits circumstances citizens city civil claim claims class classes classified clean clear clearly clock close closed closely closer closest closure cluster clustering clusterings clusters cm code coding coefficient coefficients coffee cold collection college color column columns combination combinations combined combining come comes coming command comment comments commerce commercial committee common communicates communication communications communist community compact companies company comparable compared comparison compensate compensation competent competition compilers compiling complement complete completed completely completion complex complexity complicated component components composite composition comprise comprises comprising computation computational computations compute computed computer computing conceived concentrated concentration concept concepts concern concerned concerning conclude conclusion conclusions condition conditional conditions conductivity conductor conductors conference confidence configuration configurations congruent connected connecting connection connections connects consequently consider considerable consideration considerations considered considering consistent consisting consists constant constants constrained constraint constraints construct constructed constructing construction contact contacts contain contained containing contains contents continue continued continues continuing continuity continuous contract contrast control controllable controlled controlling controls convenient convention conventional conventions conversely conversion convert converted converter converting cooperation coordinate coordinates core corporation correct correctly correlation correspond corresponding corresponds cosines cost costs could council count counted counter counting countries country counts couple coupled coupling course courses court cover covered create created credit crisis criterion critical crop cross crossovers cubic culture current currently curve curves cut cutoff cutting cycle cycles daily dallas damage danger dark data date day days dead deal debugging december decide decided decision decisions declared decoded decoder decoding decomposition decrease decreases decreasing deep defect defects define defined defines defining definite definition definitions degree delay delayed delays delete demand density department departures depend dependent depending depends depicted depth derived deriving descendant descendants describe described describing description design designated designed designs desirable desire desired despite destination detail detailed details detected detection detects determine determined determines determining develop developed developing development deviation deviations device devices diagonal diagram diagrams dial diameter dictates dictionary did die dielectric difference differences different differential difficult difficulties difficulty diffusion digit digital digits dimension dimensions direct directed direction directions directly director discharge discharges disclosed discloses disclosure disconnected discovered discrepancy discrete discuss discussed discussion display displays disposed dissimilarities dissimilarity distance distances distinct distinction distinguish distortions distribution divided division do document documented does doing dollars domain dominant done doped dotted double doubt down dr draw drawing drawn drew drink drive driving drop dropped due duration during dust duty dynamic each earlier early earth ease easier easily east easy economic economically economy edge edges editing editor education educational effect effective effectively effects efficiency efficient efficiently effort efforts eight either electric electrical electrode electrodes electronic electrons element elements eliminate eliminated else embedded embodiment embodiments emotional emphasis employed employees empty enable enabled enclosed encoding encountered encourage end ends energy engineering english enough enter entered entire entirely entities entitled entries envelope environment epitaxial equal equally equals equation equations equilibrium equipment equipped equivalent equivalently error errors escape especially essential essentially establish established establishing estimated et etc evaluated even evening event events ever every everybody everyone everything evidence evidenced evident evil exact exactly examine examined example examples exceeds excellent except exception exchange exclusive executed executing execution exercise exhibit exist existence existing exists exit expect expected expects expense expensive experience experiment experimental experiments experts explain explained explanation explicit explicitly exponential exposed express expressed expression extend extended extensive extent external extinguished extra extreme extremely fabricated face faces facilities fact factor factors facts faculty failed failure fair fairly faith fall falls false familiar families family far fashion fast faster favor fear feasible feature features february feed feedback feel feeling feet felt few fewer field fields fifteen fifth fig figs figure figures file filed files filled filling film filter filtering final finally financial find finding finds fine finished finite fire firm first fiscal fit fitting five fixed flexibility flip floor flop flops flow follow followed following follows food foot for force forced forces foregoing foreign forest form formal format formed former forming forms formula formulation forth fortran forward found four fourth fraction frame frames free freedom french frequencies frequency frequently fresh friend friendly from front full fully function functional functions fund fundamental funds furnish furnishes further furthermore future gain gap gas gaseous gate gates gating gave general generality generalization generalized generally generate generated generates generating generation generator geometries geometry german germany get gets getting give given gives giving glass global glow go goal goes going gone good goods government governments grant granted graph graphic great greater greatest greatly green gross ground grounded grounds group grouped grouping groups grow growing growth guaranteed guarantees guard guess guests had hair half hall hand handle handling hands happen happened hard hardly hardware has have having he head health heard heat heavily heavy held help helped hence here herein hereinafter hidden hierarchical high higher highest highly hill him himself his historical history hold holding hole home hook hope horizontal hospital hot hour hours house housing how however human hundred idea ideal ideas identical identification identified identify identity idle if illustrate illustrated illustrating illustration illustrative image immediate immediately impact implement implementation implemented implicitly implied implies imply importance important impossible improve improved improvement impurities impurity in inches include included includes including incoming incorporated increase increased increases increasing increment indeed independence independent index india indicate indicated indicates indicating indicative individual individuals industrial industry inequality influence information informed initial initialize initially initiate initiated input inputs inserted inside instability install instance instances instantaneously instead instruction instructions insurance integer integers integral integrated intellectual intended intensity intent inter interaction interactions interchange interconnected interconnection interest interested interesting interests interface interior intermediate internal international interpreted interstage interval intervals into introduced introduction invention inverse inverted inverter investigation invites involve involved involves involving ion ions is issue issued issues it items its itself james january jersey job jobs john joined jointly jr judge judged judgment judicious july jump june just justice justification justify keep keeping kennedy kept key kill kind kinds knew know knowledge known knows labeled labelled labels laboratories laboratory lack lag laid land language languages large larger largest last late later latter law laws lay layer layers layout lead leader leaders leadership leading leads learn learned learning least leave leaving led left leftmost legal length less let letter letters level levels liability liable liberal library lie lies life light like likely limit limitations limited limiting limits line linear linearly lines link links list listing lists literature little live lived load loaded loading local locally located location locations log logic logical long longer longest look looked looking looks loop loops lose loss losses lost lot low lower lowest machine machinery machines made magnetic magnitude main maintain maintained maintenance major majority make makes making man management manager manner manual manufacturer manufacturers manufacturing many mapping march margins mark marked market mask masking mass master match matched matches matching material materials mathematical mathematically matrices matrix matter matters maximum may me mean meaning meaningful means meant measure measured measurement measurements measures measuring mechanical mechanism medical meet meeting meetings member members membership memory men mentioned merely merged merging message met metal metallization method methods metric middle might miles military million mind minds minimal minimize minimizes minimizing minimum minister minor minutes missing mistakes mixture mode model models modern modes modification modifications modified modular moment money monotone monotonic monotonically month months moon moral more moreover morgan morning most motor mounted move moved moves moving much multi multidimensional multiple multiplication multiplier multipliers multistage multivariate murder murray must mutually my name named names narrow nation national nations natural naturally nature near nearer nearest nearly necessarily necessary need needed needs negative neighboring neither net network neutral never nevertheless new news next nice night nine no nobody node nodes noise non none nonlinear nor normal normalized normally north not notation note noted notes nothing notice noting novel november now nuclear number numbered numbers numeric numerical object objective objects observation observe observed obtain obtained obvious obviously occasion occupied occupy occur occurred occurrence occurrences occurring occurs october odd of off offer offered office officer officers official officials often oil old omitted on once one ones only onto open opened opening operate operated operates operating operation operations opinion opportunities opportunity opposite optimal optimization optimum options or order ordered ordering orders ordinary organization organizations organized orientation oriented origin original originally orthogonal other others otherwise ought our ourselves out outline outlined output outputs outside over overall overlap own page pain pair pairs paper paragraph parallel parameter parameters part partial particular particularly parties partitioning parts party pass passed passes passing past patent path paths patient pattern patterns pay peak people per perfect perform performance performed performing performs perhaps period periodically peripheral permanent permit permits permitted person personal personnel persons pertinent phase phases phenomena philosophy physical pick picked pickup picture piece pieces place placed places placing plan planar plane planned planning plans plant plants plausible play played playing plays please plotted plurality plus point pointed pointer points polarity police policies policy political polynomial pool poor popular population portion position positive possibility possible possibly post potential power powerful practical practice preceding precise precision predetermined predicted prepared presence present presented presents press pressure presumably pretty prevent prevents previous previously price prices primarily primary prime priming principal principle principles print printed prints prior priority privacy private probability probably problem problems proc procedure procedures process processed processes processing processor produce produced produces producing product production products professional professor program programmer programmers programming programs progress project projections projects proof propagate propagated propagating propagation proper properly properties property proportional proposal proposals proposed protect protection proved provide provided provides providing provision public publication published pulse pulses pure purely purpose purposes put puts quality quantization question questions quick quickly quiet quite radio raised random randomly range rank rapid rapidly rare rate rated rates rather ratio rational reach reached reaction read readable reader readers readily reading ready real reality realize realized realizing really rear reason reasonable reasonably reasons receive received receives receiving recent recently recognize recognized record records recover rectangular recursive recursively red reduce reduced reduces reduction refer reference references referred refers reflect refused regard regarded regarding regardless region regions register registers regression regular rejected relate related relates relating relation relations relationship relative relatively relay release released relevant reliability relief remain remainder remained remaining remains remembered remote remove removed removes repeat repeated repeatedly replaced replaces report reported reports represent representation representations representative represented representing represents request require required requirement requirements requires requiring requisite research reserved reset resetting resistance resistivity resistor resistors resolution resources respect respective respectively response responsibility responsible responsive rest restored restrict restricted result resulting results return returned returns reverse review reviewed rich right rights rise risk roads role roles room root roots rose rotation roughly round rounded route routed routine routines routing routings row rows rule rules run running runs safe said sales same sample samples sampling san satisfied satisfies satisfy save say saying says scalar scale scaled scaling scan schematically school schools science sciences scientific scope sea search second secondary seconds secret section sections security see seeing seek seeking seem seemed seems seen segment segments seldom select selected selection selectively self semiconductor send sense sensitive sensitivity sent separate separation september sequence sequences sequentially serial series serious serve served serves service serviced services serving set sets setting seven several severe shall shape share sharp sheet shift shifting shifts ship shop short shot should show showed showing shown shows side sides sign signal signals significance significant significantly similar similarly simple simpler simplest simplicity simply simultaneously since single sit site situation situations six size sizes skilled slightly slot slots slow slowly small smaller smallest snow so social society soft software solid solution solutions solved some someone something sometimes somewhat somewhere son soon sophisticated sort sought sound source sources space spaced spaces spacing spatial speaking special specific specifically specifications specified specify specifying speech speed spent spirit spite splitting spoke spot spread spring square squares stable staff stage stages stand standard standards standing stands start started starting state stated statement statements states static station stations statistical statistically status stay steady step steps still stimuli stimulus stop stopped storage store stored stores straight straightforward strange strategy stream street streets strength stress strict strong strongly structure structures struggle student students studied studies study style subject subjected subjects submitted subroutines subsequent subsequently subset subsets substantial substantially substituting substitution substrate succeeding success successful successive successively such suddenly sufficient sufficiently suggest suggested suggests suitable suitably sum summarize summary summing supervision supervisory supplied supplies supply support supporting suppose supposed sure surface surprised surrounds survey switch switched switches switching symmetric symmetry system systematic systems table tables take taken takes taking talk talked talking tapes target task tax teacher teachers teaching teachings team technical technique techniques technology teeth telephone temp temperature temporary ten tend tends term terminal terminals terminated terminating termination terms test tested testing tests texas text than that the their them themselves then theorem theoretical theory there thereby therefore thereof these they thick thickness thin thing things think thinking third thirty this those though thought three threshold through throughout thus time times timing tip tips title to today together toggled told tolerances tone too took top total touch toward towards track trade traditional traffic train training transaction transfer transformation transformations transistor transistors transition translated translation transmission transmit transmitted travel traverse treated treatment tree trees trial triangle tried triggered trip trivial trouble truck true truly try trying tube turn turned turning turns twenty twice two type types typical typically ultimate unaltered unchanged undefined under underlying understand understanding understood unequal unfortunately unidirectionality unidirectionally uniform union unique unit united units unity universe university unless unrelated unstable until unusual up update upon upper us usage use used useful useless user users uses using usual usually utility utilization utilized utilizing valid validity value values van variable variables variance variation varied variety various vary vast vector vectors verification verified version versions vertical very via view viewed vis visible vision visit vital vocational voice voids voltage voltages volume wait waiting wall walls want wanted wants war was washington water wavelength way ways we week weeks weight weighting weights well went were western what whatever when whenever where whereby wherein wherever whether which while white who whole whom whose why wide width will william willing wind wise wish with within without women word words work worked workers working works world worst worth would write writer writers writing written wrong wrote year years yes yet yield yields york you young your zero zone zones רÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿZ..¤.¥aign¦atab§cign¨ctab©saltªsuftab«w2006/ copy and execute DEC loaders core = 24. prs = 177550 mov $dldr,r0 mov $[core*2048.]-300,r1 mov r1,r2 1: mov (r0)+,(r1)+ cmp r0,$end blo 1b jmp (r2) dldr: 10706 24646 10705 62705 114 5001 13716 177570 6016 103402 5016 404 241 6116 1001 10116 5000 4715 105303 1374 4715 4767 74 10402 162702 4 22702 2 1441 4767 54 61604 10401 4715 2004 105700 1753 0 751 110321 770 16703 150 105213 105713 100376 116303 2 60300 42703 177400 5302 207 12667 44 4715 10304 4715 303 50304 16707 26 4767 177752 4715 105700 1342 6204 103002 0 677 6304 114 0 . = dldr-500+744 16701 26 12702 352 5211 105711 100376 116162 2 [core*2048.]-400 5267 177756 765 prs end: / dli -- DEC format tape interpreter .globl fopen, fcreat, getc, putc, flush, mesg mov (sp)+,r5 cmp r5,$1 bne 1f jsr r5,mesg; ; .even sys exit 1: tst (sp)+ mov (sp)+,r0 jsr r5,fcreat; obuf bec 1f jsr r5,mesg; ; .even 1: mov $ppt,r0 cmp r5,$3 blt 1f mov (sp)+,r0 1: jsr r5,fopen; ibuf bec 1f jsr r5,mesg; ; .even sys exit 1: jsr pc,get tst r0 beq 1b cmp r0,$1 bne err jsr pc,get jsr pc,get mov r0,-(sp) jsr pc,get swab r0 bis r0,(sp) jsr pc,get mov r0,r1 jsr pc,get swab r0 bis r0,r1 sub $6,(sp) ble 2f cmp r1,origin beq 3f mov r1,origin jsr r5,flush; obuf mov obuf,r0 sys seek; origin: 0; 0 3: jsr pc,get jsr pc,put dec (sp) bgt 3b tst (sp)+ jsr pc,get br 1b 2: jsr r5,flush; obuf sys exit put: jsr r5,putc; obuf inc origin rts pc get: jsr r5,getc; ibuf bec 1f err: jsr r5,flush; obuf mov icount,r0 jsr pc,decml jsr r5,mesg; < Input error\n\0>; .even sys exit 1: inc icount rts pc decml: mov r0,r1 clr r0 div $10.,r0 mov r1,-(sp) tst r0 beq 1f jsr pc,decml 1: mov (sp)+,r0 add $'0,r0 mov r0,icount mov $1,r0 sys write; icount; 1 rts pc ppt: .even .bss count: .=.+2 ch: .=.+2 icount: .=.+2 ibuf: .=.+520. obuf: .=.+520. / unix DEC-tape time/mtrack track formatter nword = 256. nblock = 578. endz = 7200. ps = 177776 tcst = 177340 tccm = 177342 tcwc = 177344 tcba = 177346 tcdt = 177350 mov r5,savr5 mov sp,savsp start: mov savr5,r5 mov savsp,sp jsr pc,4(r5) .even clr r0 mov $cobtab,r1 1: jsr pc,bcomobv mov r2,(r1)+ inc r0 cmp r0,$512. bne 1b mov $buffer,r0 1: mov $-1,(r0)+ cmp r0,$buffer+nword+nword blo 1b mov savr5,r5 jsr pc,2(r5) mov $340,ps mov $tcdt,r5 mov $13,tccm jsr pc,flag / 8Kch for end zone mov $endz,r4 1: jsr r0,mtrack; 101101 dec r4 bne 1b / foreward guard mov $199.,r4 1: jsr r0,mtrack; 10101 dec r4 bne 1b / blocks mov $nblock,r3 1: jsr r0,mtrack; 10101 jsr r0,mtrack; 10110 jsr r0,mtrack; 11010 jsr r0,mtrack; 01000 jsr r0,mtrack; 01000 jsr r0,mtrack; 01000 jsr r0,mtrack; 01000 mov $nword-4,r4 2: jsr r0,mtrack; 111000 dec r4 bne 2b jsr r0,mtrack; 111011 jsr r0,mtrack; 111011 jsr r0,mtrack; 111011 jsr r0,mtrack; 111011 jsr r0,mtrack; 101001 jsr r0,mtrack; 100101 jsr r0,mtrack; 10101 dec r3 bne 1b / rear guard mov $199.,r4 1: jsr r0,mtrack; 10101 dec r4 bne 1b / rear end zone mov $endz,r4 1: jsr r0,mtrack; 10010 dec r4 bne 1b clr tccm / end of mtrack pass / go back 12 blocks mov $12.,r0 mov $4002,tccm 1: incb tccm jsr pc,flag dec r0 bne 1b / put comobv(nblock-1) in everything / up to end zone mov $nblock-1,r0 mov r0,bn jsr pc,comobv mov $17,tccm jsr pc,flag 1: movb r1,tcst mov r0,(r5) jsr pc,flag1 br 1b / reverse pass put in / foreward and reverse / block numbers mov $4017,tccm jsr pc,flag 1: mov $nword+3.,r4 2: clrb tcst clr (r5) jsr pc,flag dec r4 bne 2b clrb tcst clr (r5) mov bn,r0 jsr pc,comobv jsr pc,flag movb r1,tcst mov r0,(r5) jsr pc,flag dec bn blt check clrb tcst clr (r5) jsr pc,flag clrb tcst clr (r5) jsr pc,flag clrb tcst mov bn,(r5) jsr pc,flag clrb tcst clr (r5) jsr pc,flag clrb tcst clr (r5) jsr pc,flag br 1b / foreward pass / confirm block numbers / write all 1's in data check: clrb tcst clr (r5) jsr pc,flag1 br check clr r4 1: mov $3,tccm jsr pc,flag cmp (r5),r4 bne error1 mov $-nword,tcwc mov $buffer,tcba mov $15,tccm jsr pc,flag inc r4 cmp r4,$nblock bne 1b mov $3,tccm jsr pc,flag1 br error2 / reverse pass / confirm block numbers / read data and compare / to all 1's 1: mov $4003,tccm jsr pc,flag dec r4 cmp r4,(r5) bne error3 mov $-nword,tcwc mov $buffer,tcba mov $4005,tccm jsr pc,compare jsr pc,flag tst r4 bne 1b mov $4003,tccm jsr pc,flag1 br error4 jsr pc,compare jmp start error1: mov $1,r0 br 1f error2: mov $1,r0 br 1f error3: mov $3,r0 br 1f error4: mov $4,r0 br 1f error5: mov $5,r0 br 1f error6: mov $6,r0 br 1f error7: mov $7,r0 1: add $'0,r0 movb r0,0f mov tcst,-(sp) mov tccm,-(sp) mov $1,tccm mov savr5,r5 jsr pc,4(r5) 0: .even mov (sp)+,r1 mov (sp)+,r0 0 rts pc compare: mov r0,-(sp) mov $buffer,r0 1: cmp (r0)+,$-1 bne error5 cmp r0,$buffer+nword+nword blo 1b mov (sp)+,r0 rts pc mtrack: mov (r0)+,(r5) jsr pc,flag rts r0 flag: bit $100200,tccm beq flag blt error6 rts pc flag1: bit $100200,tccm beq flag1 bge 1f tst tcst bge error7 add $2,(sp) 1: rts pc comobv: mov r0,r4 bic $!777,r0 asl r0 mov cobtab(r0),r0 swab r0 clr r1 ror r0 rol r1 asl r0 asl r0 rol r1 swab r4 bic $177401,r4 bis cobtab(r4),r0 rts pc bcomobv: mov r0,r2 bic $!70,r2 mov r0,r3 mov $6.,r4 1: asr r3 dec r4 bne 1b bic $!7,r3 bis r3,r2 mov r0,r3 mov $6.,r4 1: asl r3 dec r4 bne 1b bic $!700,r3 bis r3,r2 com r2 bic $!777,r2 rts pc bn: .=.+2 savr5: .=.+2 savsp: .=.+2 cobtab: .=.+1024. buffer: .=.+nword+nword / list on kl-11 followon ascii file mov $ascii,r1 1: movb (r1)+,r0 beq 1f jsr pc,(r5) br 1b 1: rts pc ascii: <\0> ÜÆ¾Ä¼¿�Á! † "ÀW ´¿ü‡N÷ ÅD¿À=Í õ   @÷� #ôÁåD ï‡ï ŠD Òƒ÷R÷èR÷ \ B ¤Ñ‹ü �Áe@W 0ó‡÷ ¬¹·, €&€ € 7   ý‡÷ ÷ † " ü‡ß œ7 ì÷-æâ‚÷ ö÷ XóÁÔ÷ Áeû�‡ß5Põüß‹RõùßþTõß®Võß`Rõß‹Rõýß RõßÿÿTõß `Rõã÷e†· €‡ß`Rõ7 t‡*Àpÿˆ È‹þÀ@ÀE€ÿ A‡ Z‚Àe  À ÷‹ú?ý À Í ÀŠÍ Í À ‡7Ú?‡€ŸÍ Ž úÎeÎE‡/ copy mag tape to disk jsr pc,rew 2: jsr pc,4(r5) <'p' for rp; 'k' for rk\n\0> .even jsr pc,2(r5) cmp r0,$'k bne 3f mov $rkblk,r0 br 1f 3: cmp r0,$'p bne 2b mov $rpblk,r0 1: mov r0,rxblk mov $'\n,r0 jsr pc,(r5) jsr pc,4(r5) .even jsr pc,numb mov r0,bno jsr pc,4(r5) .even jsr pc,numb mov r0,r1 beq 2f 1: jsr pc,rblk dec r1 bne 1b 2: jsr pc,4(r5) .even jsr pc,numb mov r0,r1 1: jsr pc,rblk jsr pc,wblk dec r1 bne 1b jsr pc,rew rts pc numb: clr r1 1: jsr pc,2(r5) cmp r0,$'\n beq 1f sub $'0,r0 cmp r0,$9 bhi 2f mul $10.,r1 add r0,r1 br 1b 1: mov r1,r0 rts pc 2: jsr pc,4(r5) .even tst (sp)+ rts pc mts = 172520 mtc = 172522 mtbrc = 172524 mtcma = 172526 rblk: bit $2,*$mts bne rblk tstb *$mtc bge rblk mov $-512.,*$mtbrc mov $buf,*$mtcma mov $60003,*$mtc 1: tstb *$mtc bge 1b tst *$mtc bge 1f jsr pc,4(r5) .even mov $-1,*$mtbrc mov $60013,*$mtc br rblk 1: rts pc rew: mov $60017,*$mtc rts pc wblk: mov bno,r0 inc bno mov r1,-(sp) mov r0,r1 clr r0 jmp *rxblk rpda = 176724 rpblk: div $10.,r0 mov r1,-(sp) mov r0,r1 clr r0 div $20.,r0 bisb r1,1(sp) mov $rpda,r1 mov (sp)+,(r1) mov r0,-(r1) br 1f rkda = 177412 rkblk: div $12.,r0 ash $4.,r0 bis r1,r0 mov $rkda,r1 mov r0,(r1) 1: mov $buf,-(r1) mov $-256.,-(r1) mov $3,-(r1) 1: tstb (r1) bge 1b tst (r1) blt 1f mov (sp)+,r1 rts pc 1: jsr pc,4(r5) .even mov (sp)+,r1 dec bno br wblk .bss buf: .=.+512. rxblk: .=.+2 bno: .=.+2 / format RK03/05 disk packs rkda = 177412 5 mov $203.*2,r4 clr r3 1: mov $rkda+2,r0 mov r3,-(r0) mov $buf,-(r0) mov $-12.*256.,-(r0) mov $6003,-(r0) 2: tstb (r0) bge 2b tst (r0) blt 1f add $20,r3 dec r4 bne 1b rts pc 1: jsr pc,4(r5) ; .even rts pc buf: .=.+2 ´Æ¾Ä”¿�Á! † "ÀW Œ¿ü‡N÷ ìÅ¿À=Í õ   @÷� #ôÁåD ï‡ï ŠD Òƒ÷*÷è*÷ ^ B ¤Ñ‹ü �Áe@W 0ó‡÷ ˆ¹·,ø€&€ ¡ 7î   ý‡÷ ÷ ` " ü‡ß ›ÀèþÁâþÉÉ‹þÉ È-ªöÉÉ‹þÉ ðÂeÂ-�ôé àŒàÉ‹þÉ Ü‡÷È?‡*Àpÿˆ È‹þÀB@ÀE€ÿ A‡ Z‚Àe  À ÷‹"@ý À Í ÀŠÍ Í À ‡7@‡€ŸÍ Ž úÎeÎE‡/ tape boot program to load and transfer / to a 'tp' entry / entry is made by jsr pc,*$0 / so return can be rts pc / jsr pc,(r5) is putc / jsr pc,2(r5) is getc / jsr pc,4(r5) is mesg core = 24. .mt. = 0 .. = [core*2048.]-512. start: mov $..,sp mov $name,r4 mov sp,r1 cmp pc,r1 bhis 2f clr r0 cmp (r0),$407 bne 1f mov $20,r0 1: mov (r0)+,(r1)+ cmp r1,$end blo 1b jmp (sp) 2: jsr pc,rew mov $tvec,r5 mov $'=,r0 jsr pc,(r5) 2: mov r4,r1 1: jsr pc,2(r5) cmp r0,$'\n beq 1f cmp r0,$'@ beq 2b movb r0,(r1)+ cmp r0,$'# bne 1b sub $2,r1 cmp r1,r4 blo 2b br 1b 1: clrb (r1) cmp r1,r4 blos start mov $1,tapa mov $-6144.,wc jsr pc,taper clr r1 1: mov r1,r2 mov r4,r0 2: cmpb (r0)+,(r1) bne 2f tstb (r1)+ bne 2b br 1f 2: mov r2,r1 add $64.,r1 cmp r1,$12288. blo 1b jsr pc,rew br start 1: mov 44.(r2),tapa mov 38.(r2),r0 inc r0 clc ror r0 neg r0 mov r0,wc clr r0 1: clr (r0)+ cmp r0,sp blo 1b jsr pc,taper jsr pc,rew clr r0 cmp (r0),$407 / unix a.out? bne 2f 1: mov 20(r0),(r0)+ cmp r0,sp blo 1b 2: jsr pc,*$0 br start .if .mt. mts = 172520 mtc = 172522 mtbrc = 172524 mtcma = 172526 taper: clr mtma cmp mtapa,tapa beq 1f bhi 2f jsr pc,rrec br taper 2: jsr pc,rew br taper 1: mov wc,r1 1: jsr pc,rrec add $256.,r1 bmi 1b rts pc rrec: bit $2,*$mts bne rrec tstb *$mtc bge rrec mov $-512.,*$mtbrc mov mtma,*$mtcma mov $60003,*$mtc 1: tstb *$mtc bge 1b tst *$mtc bge 1f mov $-1,*$mtbrc mov $60013,*$mtc br rrec 1: add $512.,mtma inc mtapa rts pc rew: mov $60017,*$mtc clr mtapa rts pc .endif .if .mt.-1 tcdt = 177350 tccm = 177342 taper: mov $tcdt,r0 mov $tccm,r1 for: mov $3,(r1) / rbn for 1: tstb (r1) bge 1b tst (r1) blt rev cmp tapa,(r0) beq rd bgt for rev: mov $4003,(r1) / rbn bac 1: tstb (r1) bge 1b tst (r1) blt for mov (r0),r2 add $5,r2 cmp tapa,r2 blt rev br for rd: clr -(r0) / bus addr mov wc,-(r0) / wc mov $5,-(r0) / read 1: tstb (r1) bge 1b tst (r1) blt taper rts pc rew: mov $4003,tccm rts pc .endif tvec: br putc br getc br mesg tks = 177560 tkb = 177562 getc: mov $tks,r0 inc (r0) 1: tstb (r0) bge 1b mov tkb,r0 bic $!177,r0 cmp r0,$'A blo 1f cmp r0,$'Z bhi 1f add $40,r0 1: cmp r0,$'\r bne putc mov $'\n,r0 tps = 177564 tpb = 177566 putc: tstb tps bge putc cmp r0,$'\n bne 1f mov $'\r,r0 jsr pc,(r5) mov $'\n+200,r0 jsr pc,(r5) clr r0 jsr pc,(r5) mov $'\n,r0 rts pc 1: mov r0,tpb rts pc mesg: movb *(sp),r0 beq 1f jsr pc,(r5) inc (sp) br mesg 1: add $2,(sp) bic $1,(sp) rts pc end: tapa: .=.+2 mtapa: .=.+2 mtma: .=.+2 wc: .=.+2 name: .=.+32. / disk boot program to load and transfer / to a unix entry / entry is made by jsr pc,*$0 / so return can be rts pc core = 24. .. = [core*2048.]-512. start: mov $..,sp mov sp,r1 cmp pc,r1 bhis 2f reset clr r0 cmp (r0),$407 bne 1f mov $20,r0 1: mov (r0)+,(r1)+ cmp r1,$end blo 1b jmp (sp) 2: mov $inod,r0 1: clr (r0)+ cmp r0,sp blo 1b jsr pc,getc cmp r0,$'k bne 3f mov $rkblk,r0 br 1f 3: cmp r0,$'p bne 2b mov $rpblk,r0 1: mov r0,rxblk mov $'\n,r0 jsr pc,putc mov $names,r1 1: mov r1,r2 2: jsr pc,getc cmp r0,$'\n beq 1f cmp r0,$'/ beq 3f movb r0,(r2)+ br 2b 3: cmp r1,r2 beq 2b add $14.,r1 br 1b 1: mov $names,r1 mov $1,r0 1: clr bno jsr pc,iget tst (r1) beq 1f 2: jsr pc,rmblk br start mov $buf,r2 3: mov r1,r3 mov r2,r4 add $16.,r2 tst (r4)+ beq 5f 4: cmpb (r3)+,(r4)+ bne 5f cmp r4,r2 blo 4b mov -16.(r2),r0 add $14.,r1 br 1b 5: cmp r2,$buf+512. blo 3b br 2b 1: clr r1 1: jsr pc,rmblk br 1f mov $buf,r2 2: mov (r2)+,(r1)+ cmp r2,$buf+512. blo 2b br 1b 1: clr r0 cmp (r0),$407 bne 2f 1: mov 20(r0),(r0)+ cmp r0,sp blo 1b 2: jsr pc,*$0 br start iget: add $31.,r0 mov r0,r5 ash $-4.,r0 jsr pc,rblk bic $!17,r5 ash $5.,r5 add $buf,r5 mov $inod,r4 1: mov (r5)+,(r4)+ cmp r4,$addr+16. blo 1b rts pc rmblk: add $2,(sp) mov bno,r0 inc bno bit $LRG,mode bne 1f asl r0 mov addr(r0),r0 bne rblk 2: sub $2,(sp) rts pc 1: clr -(sp) movb r0,(sp) clrb r0 swab r0 asl r0 mov addr(r0),r0 beq 2b jsr pc,rblk mov (sp)+,r0 asl r0 mov buf(r0),r0 beq 2b rblk: mov r1,-(sp) mov r0,r1 clr r0 jmp *rxblk rpda = 176724 rpblk: div $10.,r0 mov r1,-(sp) mov r0,r1 clr r0 div $20.,r0 bisb r1,1(sp) mov $rpda,r1 mov (sp)+,(r1) br 1f rkda = 177412 rkblk: div $12.,r0 ash $4.,r0 bis r1,r0 mov $rkda+2,r1 1: mov r0,-(r1) mov $buf,-(r1) mov $-256.,-(r1) mov $5,-(r1) 1: tstb (r1) bge 1b mov (sp)+,r1 rts pc tks = 177560 tkb = 177562 getc: mov $tks,r0 inc (r0) 1: tstb (r0) bge 1b mov tkb,r0 bic $!177,r0 cmp r0,$'A blo 1f cmp r0,$'Z bhi 1f add $40,r0 1: cmp r0,$'\r bne putc mov $'\n,r0 tps = 177564 tpb = 177566 putc: tstb tps bge putc cmp r0,$'\n bne 1f mov $'\r,r0 jsr pc,putc mov $'\n+200,r0 jsr pc,putc clr r0 jsr pc,putc mov $'\n,r0 rts pc 1: mov r0,tpb rts pc end: inod = ..-1024. mode = inod addr = inod+8. buf = inod+32. bno = buf+514. rxblk = bno+2 names = rxblk+2 LRG = 10000 reset = 5 Z..¬.­dldr.s®dli.s¯dtf.s°list.s±mboot²mcopy.s³rkf.s´tbootµtboot.s¶uboot.s|000 nul|001 soh|002 stx|003 etx|004 eot|005 enq|006 ack|007 bel| |010 bs |011 ht |012 nl |013 vt |014 np |015 cr |016 so |017 si | |020 dle|021 dc1|022 dc2|023 dc3|024 dc4|025 nak|026 syn|027 etb| |030 can|031 em |032 sub|033 esc|034 fs |035 gs |036 rs |037 us | |040 sp |041 ! |042 " |043 # |044 $ |045 % |046 & |047 ' | |050 ( |051 ) |052 * |053 + |054 , |055 - |056 . |057 / | |060 0 |061 1 |062 2 |063 3 |064 4 |065 5 |066 6 |067 7 | |070 8 |071 9 |072 : |073 ; |074 < |075 = |076 > |077 ? | |100 @ |101 A |102 B |103 C |104 D |105 E |106 F |107 G | |110 H |111 I |112 J |113 K |114 L |115 M |116 N |117 O | |120 P |121 Q |122 R |123 S |124 T |125 U |126 V |127 W | |130 X |131 Y |132 Z |133 [ |134 \ |135 ] |136 ^ |137 _ | |140 ` |141 a |142 b |143 c |144 d |145 e |146 f |147 g | |150 h |151 i |152 j |153 k |154 l |155 m |156 n |157 o | |160 p |161 q |162 r |163 s |164 t |165 u |166 v |167 w | |170 x |171 y |172 z |173 { |174 | |175 } |176 ~ |177 del| alpha A A | beta B B | gamma \ \ GAMMA G G | delta D D | DELTA W W epsilon S S | zeta Q Q | eta N N THETA T T | theta O O | lambda L L LAMBDA E E | mu M M | nu @ @ xi X X | pi J J | PI P P rho K K | sigma Y Y | SIGMA R R tau I I | phi U U | PHI F F psi V V | PSI H H | omega C C OMEGA Z Z | nabla [ [ | not _ _ partial ] ] | integral ^ ^ <[1234567890-_]^\ >qwertyuiop@ asdfghjkl;: zxcvbnm,./ <[1234567890-_]^\ > @ ;: ,./ <{!"#$%&'() =_}~| >QWERTYUIOP` ASDFGHJKL+* ZXCVBNM,.? <{ !"#$%&'() =_} ~ | >QWERTYUIOP` ASDFGHJKL+* ZXCVBNM,.? 2 1 1 1 1 1 1 1 1 1 1 012345670123456701234567012345670123456701234567012345670123456701234567 x x x x x x x x x Z..·.¸ascii¹greekºkbd»tabsstruct node ( struct node *p1; struct node *p2; char typ; char ch; ); int freesize; struct node *lookf; struct node *looks; struct node *lookend; struct node *lookstart; struct node *lookdef; struct node *lookret; struct node *lookfret; int cfail; int rfail; struct node *freelist; struct node *namelist; int lc; struct node *schar; #include "sno.h" /* * Snobol III */ int freesize; struct node *freespace &end; int *fault -1; mes(s) { sysput(strstr(s)); } init(s, t) { register struct node *a, *b; a = strstr(s); b = look(a); delete(a); b->typ = t; return(b); } main(argc, argv) char *argv[]; { extern fin, fout; register struct node *a, *b, *c; if(argc > 1) { fin = open(argv[1], 0); if(fin < 0) { mes("cannot open input"); exit(); } } fout = dup(1); lookf = init("f", 0); looks = init("s", 0); lookend = init("end", 0); lookstart = init("start", 0); lookdef = init("define", 0); lookret = init("return", 0); lookfret = init("freturn", 0); init("syspit", 3); init("syspot", 4); a = c = compile(); while (lookend->typ != 2) { a->p1 = b = compile(); a = b; } cfail = 1; a->p1 = 0; if (lookstart->typ == 2) c = lookstart->p2; while (c=execute(c)); flush(); } syspit() { extern fin; register struct node *b, *c, *d; int a; if ((a=getchar())=='\n') return(0); b = c = alloc(); while(a != '\n') { c->p1 = d = alloc(); c = d; l: c->ch = a; if(a == '\0') { if(fin) { close(fin); fin = 0; a = getchar(); goto l; } rfail = 1; break; } a = getchar(); } b->p2 = c; if(rfail) { delete(b); b = 0; } return(b); } syspot(string) struct node *string; { register struct node *a, *b, *s; s = string; if (s!=0) { a = s; b = s->p2; while(a != b) { a = a->p1; putchar(a->ch); } } putchar('\n'); } strstr(s) char s[]; { int c; register struct node *e, *f, *d; d = f = alloc(); while ((c = *s++)!='\0') { (e=alloc())->ch = c; f->p1 = e; f = e; } d->p2 = e; return(d); } class(c) { switch (c) { case ')': return(1); case '(': return(2); case '\t': case ' ': return(3); case '+': return(4); case '-': return(5); case '*': return(6); case '/': return(7); case '$': return(8); case '"': case '\'': return(9); case '=': return(10); case ',': return(11); } return(0); } alloc() { register struct node *f; register int i; extern fout; if (freelist==0) { if (--freesize < 20) { if ((i=sbrk(1200)) == -1) { flush(); write (fout, "Out of free space\n", 18); exit(); } freesize =+ 200; } return(freespace++); } f = freelist; freelist = freelist->p1; return(f); } free(pointer) struct node *pointer; { pointer->p1 = freelist; freelist = pointer; } nfree() { register int i; register struct node *a; i = freesize; a = freelist; while(a) { a = a->p1; i++; } return(i); } look(string) struct node *string; { register struct node *i, *j, *k; k = 0; i = namelist; while (i) { j = i->p1; if (equal(j->p1, string) == 0) return(j); i = (k=i)->p2; } i = alloc(); i->p2 = 0; if (k) k->p2 = i; else namelist = i; j = alloc(); i->p1 = j; j->p1 = copy(string); j->p2 = 0; j->typ = 0; return(j); } copy(string) struct node *string; { register struct node *j, *l, *m; struct node *i, *k; if (string == 0) return(0); i = l = alloc(); j = string; k = string->p2; while(j != k) { m = alloc(); m->ch = (j=j->p1)->ch; l->p1 = m; l = m; } i->p2 = l; return(i); } equal(string1, string2) struct node *string1, *string2; { register struct node *i, *j, *k; struct node *l; int n, m; if (string1==0) { if (string2==0) return(0); return(-1); } if (string2==0) return(1); i = string1; j = string1->p2; k = string2; l = string2->p2; for(;;) { m = (i=i->p1)->ch; n = (k=k->p1)->ch; if (m>n) return(1); if (mp1; q = s->p2; sign = 1; if (class(p->ch)==5) { /* minus */ sign = -1; if (p==q) return(0); p = p->p1; } loop: m = p->ch - '0'; if (m>9 | m<0) writes("bad integer string"); n = n * 10 + m; if (p==q) return(n*sign); p = p->p1; goto loop; } binstr(binary) { int n, sign; register struct node *m, *p, *q; n = binary; p = alloc(); q = alloc(); sign = 1; if (binary<0) { sign = -1; n = -binary; } p->p2 = q; loop: q->ch = n%10+'0'; n = n / 10; if (n==0) { if (sign<0) { m = alloc(); m->p1 = q; q = m; q->ch = '-'; } p->p1 = q; return(p); } m = alloc(); m->p1 = q; q = m; goto loop; } add(string1, string2) { return(binstr(strbin(string1) + strbin(string2))); } sub(string1, string2) { return(binstr(strbin(string1) - strbin(string2))); } mult(string1, string2) { return(binstr(strbin(string1) * strbin(string2))); } div(string1, string2) { return(binstr(strbin(string1) / strbin(string2))); } cat(string1, string2) struct node *string1, *string2; { register struct node *a, *b; if (string1==0) return(copy(string2)); if (string2==0) return(copy(string1)); a = copy(string1); b = copy(string2); a->p2->p1 = b->p1; a->p2 = b->p2; free(b); return(a); } dcat(a,b) struct node *a, *b; { register struct node *c; c = cat(a,b); delete(a); delete(b); return(c); } delete(string) struct node *string; { register struct node *a, *b, *c; if (string==0) return; a = string; b = string->p2; while(a != b) { c = a->p1; free(a); a = c; } free(a); } sysput(string) { syspot(string); delete(string); } dump() { dump1(namelist); } dump1(base) struct node *base; { register struct node *b, *c, *e; struct node *d; while (base) { b = base->p1; c = binstr(b->typ); d = strstr(" "); e = dcat(c, d); sysput(cat(e, b->p1)); delete(e); if (b->typ==1) { c = strstr(" "); sysput(cat(c, b->p2)); delete(c); } base = base->p2; } } writes(s) { sysput(dcat(binstr(lc),dcat(strstr("\t"),strstr(s)))); flush(); if (cfail) { dump(); flush(); exit(); } while(getc()); while (compile()); flush(); exit(); } getc() { register struct node *a; static struct node *line; static linflg; while (line==0) { line = syspit(); if(rfail) { cfail++; writes("eof on input"); } lc++; } if (linflg) { line = 0; linflg = 0; return(0); } a = line->p1; if (a==line->p2) { free(line); linflg++; } else line->p1 = a->p1; return(a); } -./0123456789#include "sno.h" compon() { register struct node *a, *b; register int c; static next; if (next == 0) schar = getc(); else next = 0; if (schar == 0) { (a=alloc())->typ = 0; return(a); } switch (class(schar->ch)) { case 1: schar->typ = 5; return(schar); case 2: schar->typ = 16; return(schar); case 3: a = schar; for(;;) { schar = getc(); if (schar == 0) { a->typ = 0; return(a); } if (class(schar->ch) != 3) break; free(schar); } next = 1; a->typ = 7; return(a); case 4: schar->typ = 8; return(schar); case 5: schar->typ = 9; return(schar); case 6: a = schar; schar = getc(); if (class(schar->ch) == 3) a->typ = 10; else a->typ = 1; next = 1; return(a); case 7: a = schar; schar = getc(); if (class(schar->ch) == 3) a->typ = 11; else a->typ = 2; next = 1; return(a); case 8: schar->typ = 12; return(schar); case 9: c = schar->ch; a = getc(); if(a == 0) goto lerr; b = schar; if(a->ch == c) { free(schar); a->typ = 15; a->p1 = 0; return(a); } b->p1 = a; for(;;) { schar = getc(); if (schar == 0) lerr: writes("illegal literal string"); if(schar->ch == c) break; a->p1 = schar; a = schar; } b->p2 = a; schar->typ = 15; schar->p1 = b; return(schar); case 10: schar->typ = 3; return(schar); case 11: schar->typ = 4; return(schar); } b = alloc(); b->p1 = a = schar; schar = getc(); while(schar!=0 & !class(schar->ch)) { a->p1 = schar; a = schar; schar = getc(); } b->p2 = a; next = 1; a = look(b); delete(b); b = alloc(); b->typ = 14; b->p1 = a; return(b); } nscomp() { register struct node *c; while((c=compon())->typ == 7) free(c); return(c); } push(stack) { register struct node *a; (a=alloc())->p2 = stack; return(a); } pop(stack) struct node *stack; { register struct node *a, *s; s = stack; if (s == 0) writes("pop"); a = s->p2; free(s); return(a); } expr(start, eof, e) struct node *e; { register struct node *stack, *list, *comp; int operand, op, space, op1; struct node *a, *b, *c; int d; list = alloc(); e->p2 = list; stack = push(0); stack->typ = eof; operand = 0; space = start; l1: if (space) { comp = space; space = 0; } else comp = compon(); l3: op = comp->typ; switch (op) { case 7: space = 1; free(comp); comp = compon(); goto l3; case 10: if (space == 0) { comp->typ = 1; goto l3; } case 11: if (space == 0) { comp->typ = 2; goto l3; } case 8: case 9: if (operand == 0) writes("no operand preceding operator"); operand = 0; goto l5; case 14: case 15: if (operand == 0) { operand = 1; goto l5; } if (space == 0) goto l7; goto l4; case 12: if (operand == 0) goto l5; if (space) goto l4; l7: writes("illegal juxtaposition of operands"); case 16: if (operand == 0) goto l5; if (space) goto l4; b = compon(); op = comp->typ = 13; if (b->typ == 5) { comp->p1 = 0; goto l10; } comp->p1 = a = alloc(); b = expr(b, 6, a); while((d=b->typ) == 4) { a->p1 = b; a = b; b = expr(0, 6, a); } if (d != 5) writes("error in function"); a->p1 = 0; l10: free(b); goto l6; l4: space = comp; op = 7; operand = 0; goto l6; } if (operand==0) writes("no operand at end of expression"); l5: space = 0; l6: op1 = stack->typ; if (op > op1) { stack = push(stack); if (op == 16) op = 6; stack->typ = op; stack->p1 = comp; goto l1; } c = stack->p1; stack = pop(stack); if (stack == 0) { list->typ = 0; return(comp); } if (op1 == 6) { if (op != 5) writes("too many ('s"); goto l1; } if (op1 == 7) c = alloc(); list->typ = op1; list->p2 = c->p1; list->p1 = c; list = c; goto l6; } match(start, m) struct node *m; { register struct node *list, *comp, *term; struct node *a; int b, bal; term = bal = 0; list = alloc(); m->p2 = list; comp = start; if (!comp) comp = compon(); goto l2; l3: list->p1 = a = alloc(); list = a; l2: switch (comp->typ) { case 7: free(comp); comp = compon(); goto l2; case 12: case 14: case 15: case 16: term = 0; comp = expr(comp, 6, list); list->typ = 1; goto l3; case 1: free(comp); comp = compon(); bal = 0; if (comp->typ == 16) { bal = 1; free(comp); comp = compon(); } a = alloc(); b = comp->typ; if (b == 2 | b == 5 | b == 10 | b == 1) a->p1 = 0; else { comp = expr(comp, 11, a); a->p1 = a->p2; } if (comp->typ != 2) { a->p2 = 0; } else { free(comp); comp = expr(0, 6, a); } if (bal) { if (comp->typ != 5) goto merr; free(comp); comp = compon(); } b = comp->typ; if (b != 1 & b != 10) goto merr; list->p2 = a; list->typ = 2; a->typ = bal; free(comp); comp = compon(); if(bal) term = 0; else term = list; goto l3; } if(term) term->typ = 3; list->typ = 0; return(comp); merr: writes("unrecognized component in match"); } compile() { register struct node *b, *comp; struct node *r, *l, *xs, *xf, *g; register int a; int m, t, as; m = l = as = xs = xf = t = 0; comp = compon(); a = comp->typ; if (a == 14) { l = comp->p1; free(comp); comp = compon(); a = comp->typ; } if (a != 7) writes("no space beginning statement"); free(comp); if (l == lookdef) goto def; comp = expr(0, 11, r=alloc()); a = comp->typ; if (a == 0) goto asmble; if (a == 2) goto xfer; if (a == 3) goto assig; m = alloc(); comp = match(comp, m); a = comp->typ; if (a == 0) goto asmble; if (a == 2) goto xfer; if (a == 3) goto assig; writes("unrecognized component in match"); assig: free(comp); comp = expr(0, 6, as=alloc()); a = comp->typ; if (a == 0) goto asmble; if (a == 2) goto xfer; writes("unrecognized component in assignment"); xfer: free(comp); comp = compon(); a = comp->typ; if (a == 16) goto xboth; if (a == 0) { if (xs!=0 | xf!=0) goto asmble; goto xerr; } if (a != 14) goto xerr; b = comp->p1; free(comp); if (b == looks) goto xsuc; if (b == lookf) goto xfail; xerr: writes("unrecognized component in goto"); xboth: free(comp); xs = alloc(); xf = alloc(); comp = expr(0, 6, xs); if (comp->typ != 5) goto xerr; xf->p2 = xs->p2; comp = compon(); if (comp->typ != 0) goto xerr; goto asmble; xsuc: if(xs) goto xerr; comp = compon(); if (comp->typ != 16) goto xerr; comp = expr(0, 6, xs=alloc()); if (comp->typ != 5) goto xerr; goto xfer; xfail: if (xf) goto xerr; comp = compon(); if (comp->typ != 16) goto xerr; comp = expr(0, 6, xf=alloc()); if (comp->typ != 5) goto xerr; goto xfer; asmble: if(l) { if (l->typ) writes("name doubly defined"); l->p2 = comp; l->typ = 2; /* type label;*/ } comp->p2 = r; if (m) { t++; r->p1 = m; r = m; } if (as) { t =+ 2; r->p1 = as; r = as; } (g=alloc())->p1 = 0; if (xs) { g->p1 = xs->p2; free(xs); } g->p2 = 0; if (xf) { g->p2 = xf->p2; free(xf); } r->p1 = g; comp->typ = t; comp->ch = lc; return(comp); def: r = nscomp(); if (r->typ != 14) goto derr; l = r->p1; if (l->typ) writes("name doubly defined"); l->typ = 5; /*type function;*/ a = r; l->p2 = a; r = nscomp(); l = r; a->p1 = l; if (r->typ == 0) goto d4; if (r->typ != 16) goto derr; d2: r = nscomp(); if (r->typ != 14) goto derr; a->p2 = r; r->typ = 0; a = r; r = nscomp(); if (r->typ == 4) { free(r); goto d2; } if (r->typ != 5) goto derr; free(r); if ((r=compon())->typ != 0) goto derr; free(r); d4: r = compile(); a->p2 = 0; l->p1 = r; l->p2 = 0; return(r); derr: writes("illegal component in define"); } ;<=>?@ABCDEFGHIJ#include "sno.h" /* * sno3 */ bextend(str, last) struct node *str, *last; { register struct node *a, *s; register int b; int c, d; s = str; if ((c = s->p1) == 0) goto bad; b = d = 0; a = s->p2; if(a == 0) { a = c; goto eb2; } eb1: if (a == last) goto bad; a = a->p1; eb2: d++; c = class(a->ch); if (c == 1) { /* rp */ if (b == 0) goto bad; b--; goto eb3; } if (c == 2) { /* lp */ b++; goto eb1; } eb3: if (b == 0) { s->p2= a; return(d); } goto eb1; bad: return(0); } ubextend(str, last) struct node *str, *last; { register struct node *a, *b, *s; s = str; a = s->p1; if(a == 0) goto bad; b = s->p2; if(b == 0) goto good; if (b == last) goto bad; a = b->p1; good: s->p2 = a; return(1); bad: return(0); } search(arg, r) struct node *arg, *r; { struct node *list, *back, *str, *etc, *next, *last, *base, *e; register struct node *a, *b, *var; int c, d; a = arg->p2; list = base = alloc(); last = next = 0; goto badv1; badvanc: a = a->p1; if (a->typ == 0) { list->p1 = 0; if (rfail == 1) { a = 0; goto fail; } list = base; if (r == 0) next = last = 0; else { next = r->p1; last = r->p2; } goto adv1; } b = alloc(); list->p1 = b; list = b; badv1: list->p2 = back = alloc(); back->p1 = last; b = a->p2; c = a->typ; list->typ = c; if (c < 2) { back->p2 = eval(b, 1); goto badvanc; } last = list; str = alloc(); etc = alloc(); back->p2 = var = alloc(); var->typ = b->typ; var->p1 = str; var->p2 = etc; e = b->p1; if (e == 0) etc->p1 = 0; else etc->p1 = eval(e, 0); e = b->p2; if (e == 0) etc->p2 = 0; else { e = eval(e, 1); etc->p2 = strbin(e); delete(e); } goto badvanc; retard: a = back->p1; if (a == 0) { rfail = 1; goto fail; } list = a; back = list->p2; var = back->p2; str = var->p1; etc = var->p2; if (etc->p2) goto retard; if (var->typ == 1) { if (bextend(str, last) == 0) goto retard; goto adv0; } if (ubextend(str, last) == 0) goto retard; adv0: a = str->p2; adv01: if (a == last) next = 0; else next = a->p1; advanc: a = list->p1; if (a == 0) { a = alloc(); if (r == 0) { a->p1 = a->p2 = 0; goto fail; } b = r->p1; a->p1 = b; if (next == 0) { a->p2 = r->p2; goto fail; } while(1) { e = b->p1; if (e == next) { a->p2 = b; goto fail; } b = e; } } list = a; adv1: back = list->p2; var = back->p2; d = list->typ; if(d < 2) { if (var == 0) goto advanc; if (next == 0) goto retard; a = next; b = var->p1; e = var->p2; while(1) { if (a->ch != b->ch) goto retard; if (b == e) goto adv01; if (a == last) goto retard; a = a->p1; b = b->p1; } } str = var->p1; etc = var->p2; str->p1 = next; str->p2 = 0; c = etc->p2; if (var->typ == 1) { d = bextend(str, last); if (d == 0) goto retard; if (c == 0) goto adv0; while(1) { c =- d; if (c == 0) goto adv0; if (c < 0) goto retard; d = bextend(str, last); if (d == 0) goto retard; } } if (c == 0) { if(d==3 & next!=0) { str->p2 = last; goto adv0; } goto advanc; } while(c--) if (ubextend(str, last) == 0) goto retard; goto adv0; fail: list = base; goto f1; fadv: free(back); b = list->p1; free(list); if (b == 0) return(a); list = b; f1: back = list->p2; var = back->p2; if (list->typ < 2) { delete(var); goto fadv; } str = var->p1; etc = var->p2; if (a != 0 & etc->p1 != 0) { if (str->p2 == 0) { free(str); str = 0; } assign(etc->p1, copy(str)); } if (str) free(str); free(etc); free(var); goto fadv; } #include "sno.h" /* * sno4 */ and(ptr) struct node *ptr; { register struct node *a, *p; p = ptr; a = p->p1; if (p->typ == 0) { switch (a->typ) { case0: case 0: a->typ = 1; case 1: goto l1; case 3: flush(); return(syspit()); case 5: a = a->p2->p1; goto l1; case 6: return(binstr(nfree())); } writes("attempt to take an illegal value"); goto case0; l1: a = copy(a->p2); } return(a); } eval(e, t) struct node *e; { struct node *list, *a2, *a3, *a4, *a3base; register struct node *a1, *stack, *op; if (rfail == 1) return(0); stack = 0; list = e; goto l1; advanc: list = list->p1; l1: op = list->typ; switch (op) { default: case 0: if (t == 1) { a1 = and(stack); goto e1; } if (stack->typ == 1) writes("attempt to store in a value"); a1 = stack->p1; e1: stack = pop(stack); if (stack) writes("phase error"); return(a1); case 12: a1 = and(stack); stack->p1 = look(a1); delete(a1); stack->typ = 0; goto advanc; case 13: if (stack->typ) writes("illegal function"); a1 = stack->p1; if (a1->typ!=5) writes("illegal function"); a1 = a1->p2; op = a1->p1; a3base = a3 = alloc(); a3->p2 = op->p2; op->p2 = 0; a1 = a1->p2; a2 = list->p2; f1: if (a1!=0 & a2!=0) goto f2; if (a1!=a2) writes("parameters do not match"); op = op->p1; goto f3; f2: a3->p1 = a4 = alloc(); a3 = a4; a3->p2 = and(a1); assign(a1->p1, eval(a2->p2, 1));/* recursive */ a1 = a1->p2; a2 = a2->p1; goto f1; f3: op = execute(op); /* recursive */ if (op) goto f3; a1 = stack->p1->p2; op = a1->p1; a3 = a3base; stack->p1 = op->p2; stack->typ = 1; op->p2 = a3->p2; f4: a4 = a3->p1; free(a3); a3 = a4; a1 = a1->p2; if (a1 == 0) goto advanc; assign(a1->p1, a3->p2); goto f4; case 11: case 10: case 9: case 8: case 7: a1 = and(stack); stack = pop(stack); a2 = and(stack); a3 = doop(op, a2, a1); delete(a1); delete(a2); stack->p1 = a3; stack->typ = 1; goto advanc; case 15: a1 = copy(list->p2); a2 = 1; goto l3; case 14: a1 = list->p2; a2 = 0; l3: stack = push(stack); stack->p1 = a1; stack->typ = a2; goto advanc; } } doop(op, arg1, arg2) { register int a1, a2; a1 = arg1; a2 = arg2; switch (op) { case 11: return(div(a1, a2)); case 10: return(mult(a1, a2)); case 8: return(add(a1, a2)); case 9: return(sub(a1, a2)); case 7: return(cat(a1, a2)); } return(0); } execute(e) struct node *e; { register struct node *r, *b, *c; struct node *m, *ca, *d, *a; r = e->p2; lc = e->ch; switch (e->typ) { case 0: /* r g */ a = r->p1; delete(eval(r->p2, 1)); goto xsuc; case 1: /* r m g */ m = r->p1; a = m->p1; b = eval(r->p2, 1); c = search(m, b); delete(b); if (c == 0) goto xfail; free(c); goto xsuc; case 2: /* r a g */ ca = r->p1; a = ca->p1; b = eval(r->p2, 0); assign(b, eval(ca->p2, 1)); goto xsuc; case 3: /* r m a g */ m = r->p1; ca = m->p1; a = ca->p1; b = eval(r->p2, 0); d = search(m, b->p2); if (d == 0) goto xfail; c = eval(ca->p2, 1); if (d->p1 == 0) { free(d); assign(b, cat(c, b->p2)); delete(c); goto xsuc; } if (d->p2 == b->p2->p2) { assign(b, c); free(d); goto xsuc; } (r=alloc())->p1 = d->p2->p1; r->p2 = b->p2->p2; assign(b, cat(c, r)); free(d); free(r); delete(c); goto xsuc; } xsuc: if (rfail) goto xfail; b = a->p1; goto xboth; xfail: rfail = 0; b = a->p2; xboth: if (b == 0) { return(e->p1); } b = eval(b, 0); if (b == lookret) return(0); if (b == lookfret) { rfail = 1; return(0); } if (b->typ!=2) writes("attempt to transfer to non-label"); return(b->p2); } assign(adr, val) struct node *adr, *val; { register struct node *a, *addr, *value; addr = adr; value = val; if (rfail == 1) { delete(value); return; } switch (addr->typ) { default: writes("attempt to make an illegal assignment"); case 0: addr->typ = 1; case 1: delete(addr->p2); addr->p2 = value; return; case 4: sysput(value); return; case 5: a = addr->p2->p1; delete(a->p2); a->p2 = value; return; } } TUVWXYZ[\Z..¼.½sno.h¾sno1.c¿sno2.cÀsno3.cÁsno4.c# /* * acct [ -w wtmp ] [ -d ] [ -p people ] */ #define TSIZE 30 #define USIZE 200 struct { char name[8]; char tty; char fill1; float time; int fill2; } ibuf; struct ubuf { char name[8]; float utime; } ubuf[USIZE]; struct tbuf { struct ubuf *userp; float ttime; } tbuf[TSIZE]; char *wtmp; int pflag, byday; double dtime; double midnight; double lastime; double day 1440.; int pcount; char **pptr; int montab[] { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; char *monasc[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" }; main(argc, argv) char **argv; { int c, fl; register i; register char *ip; extern fin; int f; wtmp = "/usr/adm/wtmp"; while (--argc > 0 && **++argv == '-') switch(*++*argv) { case 'd': byday++; continue; case 'w': if (--argc>0) wtmp = *++argv; continue; case 'p': pflag++; continue; } pcount = argc; pptr = argv; if (fopen(wtmp, &fin) < 0) { printf("No %s\n", wtmp); return; } for(;;) { ip = &ibuf; for (i=0; i<16; i++) { if ((c=getc(&fin)) < 0) goto brk; *ip++ = c; } fl = 0; for (i=0; i<8; i++) { c = ibuf.name[i]; if ('0'<=c&&c<='9'||'a'<=c&&c<='z'||'A'<=c&&c<='Z') { if (fl) goto skip; continue; } if (c==' ' || c=='\0') { fl++; ibuf.name[i] = '\0'; } else goto skip; } loop(); skip:; } brk: ibuf.name[0] = '\0'; ibuf.tty = '~'; time(&ibuf.time); loop(); print(); } loop() { double ltod(); register i; register struct tbuf *tp; register struct ubuf *up; if (ibuf.fill1||ibuf.fill2) return; ibuf.time = ltod(&ibuf.time)/60.; if(ibuf.tty == '|') { dtime = ibuf.time; return; } if(ibuf.tty == '}') { if(dtime == 0.) return; for(tp = tbuf; tp < &tbuf[TSIZE]; tp++) tp->ttime =+ ibuf.time-dtime; dtime = 0.; return; } if (lastime>ibuf.time || lastime+(1.5*day) midnight) { upall(1); print(); newday(); for (up=ubuf; up < &ubuf[USIZE]; up++) up->utime = 0.0; } if (ibuf.tty == '~') { ibuf.name[0] = '\0'; upall(0); return; } if ((i = ibuf.tty) >= 'a') i =- 'a' - '9'; i =- '0'; if (i<0 || i>=TSIZE) i = TSIZE-1; tp = &tbuf[i]; update(tp, 0); } print() { int i; float ttime, t; ttime = 0.0; for (i=0; i0.0) ttime =+ t; if (pflag && ubuf[i].utime > 0.0) { printf("\t%-8.8s%6.2f\n", ubuf[i].name, ubuf[i].utime/60.); } } if (ttime > 0.0) { pdate(); printf("\ttotal%9.2f\n", ttime/60.); } } upall(f) { register struct tbuf *tp; for (tp=tbuf; tp < &tbuf[TSIZE]; tp++) update(tp, f); } update(tp, f) struct tbuf *tp; { int i, j; struct ubuf *up; double t, t1; if (f) t = midnight; else t = ibuf.time; if (tp->userp) { t1 = t - tp->ttime; if (t1>0.0 && t1 < 1.5*day) tp->userp->utime =+ t1; } tp->ttime = t; if (f) return; if (ibuf.name[0]=='\0') { tp->userp = 0; return; } for (up=ubuf; up < &ubuf[USIZE]; up++) { if (up->name[0] == '\0') break; for (j=0; j<8 && up->name[j]==ibuf.name[j]; j++); if (j>=8) break; } for (j=0; j<8; j++) up->name[j] = ibuf.name[j]; tp->userp = up; } among(i) { register j, k; register char *p; if (pcount==0) return(1); for (j=0; j midnight) break; yrs++; tim =+ year; } days = (midnight-tim-720.)/day; montab[1] = 28; if(yrs%4 == 0) montab[1]++; for (mons=0; montab[mons]<=days; mons++) days =- montab[mons]; mons =% 12; printf("%s %2d", monasc[mons], days+1); } _`abcdefg/ ar -- archive/library mov (sp)+,r0 sub $2,r0 ble userr tst (sp)+ mov (sp)+,r1 clr r2 1: tstb (r1) beq 1f cmpb (r1),$'v bne 2f inc r1 incb vflg br 1b 2: tst r2 bne userr movb (r1)+,r2 br 1b 1: tst r2 beq userr mov $arglst,r1 1: mov (sp)+,(r1)+ dec r0 bgt 1b clr (r1)+ mov $swlst,r1 1: cmp r2,(r1)+ beq 1f tst (r1)+ bne 1b br userr 1: jmp *(r1) swlst: 'r; comr 'u; comu 'd; comd 'x; comx 't; comt 0; 0 userr: jsr r5,diag .even putc: movb r0,ch mov $1,r0 sys write; ch; 1 rts r5 print: movb (r1)+,r0 beq 1f jsr r5,putc br print 1: rts r5 diag: mov r5,r1 jsr r5,print tst tfo beq 1f sys unlink; tfil 1: sys exit getaf: mov arglst,0f sys open; 0:..; 0 bes 1f mov r0,afi sys read; buf; 2 cmp buf,magic bne magerr tst (r5)+ 1: rts r5 magerr: mov arglst,r1 jsr r5,print jsr r5,diag < -- not in archive format\n\0> .even mktmp: sys stat; tfil; buf bes 1f incb tfil+8 cmpb tfil+8,$'z blo mktmp br tferr 1: sys signal; 2; 1 ror r0 bcs 1f sys signal; 2; done 1: sys creat; tfil; 600 bes tferr mov r0,tfo sys open; tfil; 0 bes tferr mov r0,tfi rts r5 tferr: jsr r5,diag .even getdir: mov afi,r0 sys read; dir; 16. cmp r0,$16. bne 1f jsr r5,mvname tst (r5)+ 1: rts r5 mvname: mov name,rname mov name+2,rname+2 mov name+4,rname+4 mov name+6,rname+6 rts r5 skip: mov size,r0 inc r0 bic $1,r0 mov r0,0f mov afi,r0 sys seek; 0:..; 1 rts r5 trim: mov r0,r2 1: tstb (r0) beq 1f cmpb (r0)+,$'/ beq trim br 1b 1: rts r5 match: mov $arglst+2,r1 1: mov (r1)+,r0 beq 1f cmp r0,$-1 beq 1b jsr r5,trim mov $name,r0 2: cmp r0,$name+8. beq 2f cmpb (r0),(r2)+ bne 1b tstb (r0)+ bne 2b 2: cmp (r5)+,-(r1) 1: rts r5 mvfil: mov (r1),9f mov (r1),0f sys stat; 0:..; buf bes operr sys open; 9:..; 0 bes operr mov r0,fio mov (r1),r0 mov $-1,(r1) jsr r5,trim mov $name,r0 1: cmp r0,$name+8. beq 1f movb (r2)+,(r0)+ bne 1b 1: mov buf+32.,mtim mov buf+34.,mtim+2 movb buf+7.,ouid movb buf+4.,mode mov buf+10.,size mov tfo,r0 sys write; dir; 16. mov size,r2 1: mov fio,r0 sys read; buf; 512. sub r0,r2 mov r0,0f beq 1f mov tfo,r0 sys write; buf; 0:.. br 1b 1: tst r2 bne phserr bit $1,size beq 1f mov tfo,r0 sys seek; 1; 1 1: mov fio,r0 sys close jsr r5,mvname rts r5 operr: mov 9b,r1 jsr r5,print jsr r5,diag < -- cannot open\n\0> .even phserr: mov 9b,r1 jsr r5,print jsr r5,diag < -- phase error\n\0> .even copyfl: mov tfo,r0 sys write; dir; 16. mov size,r1 mov $rname,9b 1: mov r1,0f beq 1f cmp r1,$512. blo 2f mov $512.,0f 2: mov afi,r0 sys read; buf; 0:.. sub r0,r1 mov r0,0f beq phserr mov tfo,r0 sys write; buf; 0:.. br 1b 1: bit $1,size beq 1f mov afi,r0 sys seek; 1; 1 mov tfo,r0 sys seek; 1; 1 1: rts r5 xtract: / movb mode,0f sys creat; rname; 0:666 bes noxerr mov r0,fio mov size,r1 mov $rname,9b 1: mov r1,0f beq 1f cmp r1,$512. blo 2f mov $512.,0f 2: mov afi,r0 sys read; buf; 0:.. sub r0,r1 mov r0,0f beq phserr mov fio,r0 sys write; buf; 0:.. br 1b 1: mov fio,r0 sys close bit $1,size beq 1f mov afi,r0 sys seek; 1; 1 1: mov r0,-(sp) mov r1,-(sp) mov mtim+2,r1 mov mtim,r0 / sys mdate mov (sp)+,r1 mov (sp)+,r1 rts r5 noxerr: mov $rname,r1 jsr r5,print jsr r5,diag < -- cannot create\n\0> .even table: mov $rname,r1 jsr r5,print mov $'\n,r0 jsr r5,putc rts r5 mesg: mov r1,-(sp) mov (r5)+,r0 tstb vflg beq 1f jsr r5,putc mov $' ,r0 jsr r5,putc mov $rname,r1 jsr r5,print mov $'\n,r0 jsr r5,putc 1: mov (sp)+,r1 rts r5 oldnew: sys stat; rname; buf bes 1f cmp buf+32.,mtim blo 1f bhi 2f cmp buf+34.,mtim+2 blos 1f 2: tst (r5)+ mov $rname,tname mov $tname,r1 1: rts r5 comr: jsr r5,mktmp jsr r5,getaf br copfl 1: jsr r5,getdir br copfl jsr r5,match br 2f jsr r5,mesg; 'r jsr r5,skip jsr r5,mvfil br 1b 2: jsr r5,copyfl jsr r5,mesg; 'c br 1b comu: jsr r5,mktmp jsr r5,getaf br noaf 1: jsr r5,getdir br copfl tst arglst+2 beq 2f jsr r5,match br 3f mov $-1,(r1) 2: jsr r5,oldnew br 3f jsr r5,mesg; 'r jsr r5,skip jsr r5,mvfil br 1b 3: jsr r5,copyfl jsr r5,mesg; 'c br 1b comd: jsr r5,mktmp jsr r5,getaf br noaf 1: jsr r5,getdir br 1f jsr r5,match br 2f mov $-1,(r1) jsr r5,skip jsr r5,mesg; 'd br 1b 2: jsr r5,copyfl jsr r5,mesg; 'c br 1b 1: jsr r5,nfound br copfl noaf: jsr r5,diag .even crterr: jsr r5,diag .even copfl: mov $arglst,r1 mov (r1)+,0f 1: tst (r1)+ beq 1f cmp -2(r1),$-1 beq 1b tst -(r1) jsr r5,mvfil jsr r5,mesg; 'a br 1b 1: sys signal; 2; 1 / no interrupts during copy back sys creat; 0:..; 666 bes crterr mov r0,afo sys write; magic; 2 1: mov tfi,r0 sys read; buf; 512. mov r0,0f beq done mov afo,r0 sys write; buf; 0:.. br 1b done: jsr r5,diag <\0> .even comx: jsr r5,getaf br noaf 1: jsr r5,getdir br 1f tst arglst+2 beq 3f jsr r5,match br 2f mov $-1,(r1) 3: jsr r5,xtract jsr r5,mesg; 'x br 1b 2: jsr r5,skip br 1b 1: jsr r5,nfound br done comt: jsr r5,getaf br noaf 1: jsr r5,getdir br 1f tst arglst+2 beq 2f jsr r5,match br 3f mov $-1,(r1) 2: jsr r5,table 3: jsr r5,skip br 1b 1: jsr r5,nfound br done nfound: mov $arglst+2,r2 1: mov (r2)+,r1 beq 1f cmp r1,$-1 beq 1b mov $-1,-(r2) jsr r5,print mov $notfnd,r1 jsr r5,print br 1b 1: rts r5 notfnd: < -- not found\n\0> .even tfil: .even magic: -147. .bss afi: .=.+2 afo: .=.+2 tfi: .=.+2 tfo: .=.+2 fio: .=.+2 rname: .=.+9. ch: .=.+1 vflg: .=.+1 .even tname: .=.+2 dir: name: .=.+8. mtim: .=.+4 ouid: .=.+1 mode: .=.+1 size: .=.+2 arglst: .=.+200. buf: .=.+512. ijklmnopqrst/ / copyright 1972 bell telephone laboratories inc. / / PDP-11 assembler pass 0 jmp start go: jsr pc,assem movb pof,r0 sys write; outbuf; 512. movb pof,r0 sys close movb fbfil,r0 sys close tstb errflg bne aexit jsr r5,fcreat; a.tmp3 mov r0,r1 mov symend,0f sub $usymtab,0f sys write; usymtab; 0:.. mov r1,r0 sys close sys exec; 2f; 1f jsr r5,filerr; 2f; "?\n aexit: sys unlink; a.tmp1 sys unlink; a.tmp2 sys unlink; a.tmp3 sys unlink; a.tmp4 sys exit 1: 2f a.tmp1 a.tmp2 a.tmp3 a.tmp4 unglob: 3f 0 2: fpass2: 3: <-g\0> .even filerr: mov r4,-(sp) mov (r5)+,r4 mov r4,0f clr r0 1: tstb (r4)+ beq 1f inc r0 br 1b 1: mov r0,1f mov $1,r0 sys write; 0:0; 1:0 mov r5,0f mov $1,r0 sys write; 0:0; 2 tst (r5)+ mov (sp)+,r4 rts r5 fcreat: mov r4,-(sp) mov (r5)+,r4 mov r4,0f 1: sys stat; 0:..; outbuf bec 2f mov r4,0f sys creat; 0:..; 444 bes 2f mov (sp)+,r4 rts r5 2: incb 9.(r4) cmpb 9.(r4),$'z blos 1b mov r4,0f jsr r5,filerr; 0:..; "?\n sys exit / / copyright 1972 bell telephone laboratories inc. / / a2 -- pdp-11 assembler pass 1 error: incb errflg mov r0,-(sp) mov r1,-(sp) mov (r5)+,r0 mov *curarg,0f beq 1f clr *curarg mov r0,-(sp) jsr r5,filerr; 0:0; '\n mov (sp)+,r0 1: mov r2,-(sp) mov r3,-(sp) mov line,r3 movb r0,1f mov $1f+6,r0 mov $4,r1 2: clr r2 dvd $10.,r2 add $'0,r3 movb r3,-(r0) mov r2,r3 sob r1,2b mov $1,r0 sys write; 1f; 7 mov (sp)+,r3 mov (sp)+,r2 mov (sp)+,r1 mov (sp)+,r0 rts r5 1: .even betwen: cmp r0,(r5)+ blt 1f cmp (r5)+,r0 blt 2f 1: tst (r5)+ 2: rts r5 putw: tst ifflg beq 1f cmp r4,$'\n bne 2f 1: mov r4,*obufp add $2,obufp cmp obufp,$outbuf+512. blo 2f mov $outbuf,obufp movb pof,r0 sys write; outbuf; 512. dec nblocks bne 2f movb pof,r0 sys close movb $'a,a.tmp4+9. jsr r5,fcreat; a.tmp4 movb r0,pof 2: rts pc / / copyright 1972 bell telephone laboratories inc. / / a3 -- pdp-11 assembler pass 1 assem: jsr pc,readop jsr pc,checkeos br ealoop tst ifflg beq 3f cmp r4,$200 blos assem cmpb (r4),$21 /if bne 2f inc ifflg 2: cmpb (r4),$22 /endif bne assem dec ifflg br assem 3: mov r4,-(sp) jsr pc,readop cmp r4,$'= beq 4f cmp r4,$': beq 1f mov r4,savop mov (sp)+,r4 jsr pc,opline br ealoop 1: mov (sp)+,r4 cmp r4,$200 bhis 1f cmp r4,$1 / digit beq 3f jsr r5,error; 'x br assem 1: bitb $37,(r4) beq 1f jsr r5,error; 'm 1: bisb dot-2,(r4) mov dot,2(r4) br assem 3: mov numval,r0 jsr pc,fbcheck movb dotrel,curfbr(r0) asl r0 movb dotrel,nxtfb mov dot,nxtfb+2 movb r0,nxtfb+1 mov dot,curfb(r0) movb fbfil,r0 sys write; nxtfb; 4 br assem 4: jsr pc,readop jsr pc,expres mov (sp)+,r1 cmp r1,$200 bhis 1f jsr r5,error; 'x br ealoop 1: cmp r1,$dotrel bne 2f bic $40,r3 cmp r3,dotrel bne 1f 2: bicb $37,(r1) bic $!37,r3 bne 2f clr r2 2: bisb r3,(r1) mov r2,2(r1) br ealoop 1: jsr r5,error; '. movb $2,dotrel ealoop: cmp r4,$'; beq assem1 cmp r4,$'\n bne 1f inc line br assem1 1: cmp r4,$'\e bne 2f tst ifflg beq 1f jsr r5,error; 'x 1: rts pc 2: jsr r5,error; 'x 2: jsr pc,checkeos br assem1 jsr pc,readop br 2b assem1: jmp assem fbcheck: cmp r0,$9. bhi 1f rts pc 1: jsr r5,error; 'f clr r0 rts pc checkeos: cmp r4,$'\n beq 1f cmp r4,$'; beq 1f cmp r4,$'\e beq 1f add $2,(sp) 1: rts pc / / copyright 1972 bell telephone laboratories inc. / / a4 -- pdp-11 assembler pass1 rname: mov r1,-(sp) mov r2,-(sp) mov r3,-(sp) mov $8,r5 mov $symbol,r2 clr -(sp) 1: jsr pc,rnch add r3,(sp) movb r3,(r2)+ sob r5,1b 1: jsr pc,rnch tst r3 bne 1b mov (sp)+,r1 clr r0 div $hshsiz,r0 mov r1,r0 asl r0 add $hshtab,r0 1: cmp r0,$hshtab bhi 2f mov $2*hshsiz+hshtab,r0 2: mov $symbol,r2 mov -(r0),r4 beq 3f cmp (r2)+,(r4)+ bne 1b cmp (r2)+,(r4)+ bne 1b cmp (r2)+,(r4)+ bne 1b cmp (r2)+,(r4)+ bne 1b br 1f 3: mov symend,r4 mov r4,(r0) mov r4,-(sp) add $20,r4 cmp r4,0f blos 4f add $512.,0f sys break; 0:end 4: mov (sp)+,r4 mov (r2)+,(r4)+ mov (r2)+,(r4)+ mov (r2)+,(r4)+ mov (r2)+,(r4)+ clr (r4)+ clr (r4)+ mov r4,symend sub $4,r4 1: mov r4,-(sp) mov r4,r3 sub $8,r3 cmp r3,$usymtab blo 1f sub $usymtab,r3 clr r2 div $3,r2 mov r2,r4 add $4000,r4 / user symbol br 2f 1: sub $symtab,r3 clr r2 div $3,r2 mov r2,r4 add $1000,r4 / builtin symbol 2: jsr pc,putw mov (sp)+,r4 mov (sp)+,r3 mov (sp)+,r2 tst (sp)+ mov (sp)+,r1 rts pc rnch: jsr pc,rch movb chartab(r0),r3 ble 1f rts pc 1: movb r0,ch clr r3 rts pc number: mov r2,-(sp) mov r3,-(sp) mov r5,-(sp) clr r1 clr r5 1: jsr pc,rch jsr r5,betwen; '0; '9 br 1f sub $'0,r0 mpy $10.,r5 add r0,r5 als $3,r1 add r0,r1 br 1b 1: cmp r0,$'b beq 1f cmp r0,$'f beq 1f cmp r0,$'. bne 2f mov r5,r1 clr r0 2: movb r0,ch mov r1,r0 mov (sp)+,r5 mov (sp)+,r3 mov (sp)+,r2 rts pc 1: mov r0,r3 mov r5,r0 jsr pc,fbcheck add $141,r0 cmp r3,$'b beq 1f add $10.,r0 1: mov r0,r4 mov (sp)+,r5 mov (sp)+,r3 mov (sp)+,r2 add $2,(sp) rts pc rch: movb ch,r0 beq 1f clrb ch rts pc 1: dec inbfcnt blt 2f movb *inbfp,r0 inc inbfp bic $!177,r0 beq 1b rts pc 2: movb fin,r0 beq 3f sys read; inbuf;512. bcs 2f tst r0 beq 2f mov r0,inbfcnt mov $inbuf,inbfp br 1b 2: movb fin,r0 clrb fin sys close 3: decb nargs bgt 2f mov $'\e,r0 rts pc 2: tst ifflg beq 2f jsr r5,error; 'i jmp aexit 2: mov curarg,r0 tst (r0)+ mov (r0),0f mov r0,curarg incb fileflg sys open; 0:0; 0 bec 2f mov 0b,0f jsr r5,filerr; 0:0; jmp aexit 2: movb r0,fin mov $1,line mov r4,-(sp) mov r1,-(sp) mov $5,r4 jsr pc,putw mov *curarg,r1 2: movb (r1)+,r4 beq 2f jsr pc,putw br 2b 2: mov $-1,r4 jsr pc,putw mov (sp)+,r1 mov (sp)+,r4 br 1b / / copyright 1972 bell telephone laboratories inc. / / a5 -- pdp-11 assembler pass 1 readop: mov savop,r4 beq 1f clr savop rts pc 1: jsr pc,8f jsr pc,putw rts pc 8: jsr pc,rch mov r0,r4 movb chartab(r0),r1 bgt rdname jmp *1f-2(r1) fixor escp 8b retread dquote garb squote rdname skip rdnum retread string 1: escp: jsr pc,rch mov $esctab,r1 1: cmpb r0,(r1)+ beq 1f tstb (r1)+ bne 1b rts pc 1: movb (r1),r4 rts pc esctab: .byte '/, '/ .byte '\<, 035 .byte '>, 036 .byte '%, 037 .byte 0, 0 fixor: mov $037,r4 retread: rts pc rdname: movb r0,ch cmp r1,$'0 blo 1f cmp r1,$'9 blos rdnum 1: jmp rname rdnum: jsr pc,number br 1f rts pc squote: jsr pc,rsch br 1f dquote: jsr pc,rsch mov r0,-(sp) jsr pc,rsch swab r0 bis (sp)+,r0 1: mov r0,numval mov $1,r4 jsr pc,putw mov numval,r4 jsr pc,putw mov $1,r4 tst (sp)+ rts pc skip: jsr pc,rch mov r0,r4 cmp r0,$'\e beq 1f cmp r0,$'\n bne skip 1: rts pc garb: jsr r5,error; 'g br 8b string: mov $'<,r4 jsr pc,putw clr numval 1: jsr pc,rsch tst r1 bne 1f mov r0,r4 bis $400,r4 jsr pc,putw inc numval br 1b 1: mov $-1,r4 jsr pc,putw mov $'<,r4 tst (sp)+ rts pc rsch: jsr pc,rch cmp r0,$'\e beq 4f cmp r0,$'\n beq 4f clr r1 cmp r0,$'\\ bne 3f jsr pc,rch mov $schar,r2 1: cmpb (r2)+,r0 beq 2f tstb (r2)+ bpl 1b rts pc 2: movb (r2)+,r0 clr r1 rts pc 3: cmp r0,$'> bne 1f inc r1 1: rts pc 4: jsr r5,error; '< jmp aexit schar: .byte 'n, 012 .byte 't, 011 .byte 'e, 004 .byte '0, 000 .byte 'r, 015 .byte 'a, 006 .byte 'p, 033 .byte 0, -1 / / copyright 1972 bell telephone laboratories inc. / / a6 -- pdp-11 assembler pass 1 opline: mov r4,r0 jsr r5,betwen; 0; 200 br 1f cmp r0,$'< bne xpr jmp opl17 xpr: jsr pc,expres add $2,dot rts pc 1: movb (r4),r0 cmp r0,$24 beq xpr jsr r5,betwen; 5; 36 br xpr mov r0,-(sp) jsr pc,readop mov (sp)+,r0 asl r0 jmp *1f-12(r0) 1: opl13 / map fop freg,fdst to double opl6 opl7 opl10 opl11 opl13 / map fld/fst to double opl13 opl13 / map fop fsrc,freg to double opl15 opl16 opl17 opl20 opl21 opl22 opl23 xpr opl25 opl26 opl27 opl13 / map mul s,r to double opl31 opl32 xpr xpr opl35 opl36 / jbr opl35: mov $4,-(sp) br 1f / jeq, etc opl36: mov $6,-(sp) 1: jsr pc,expres cmp r3,dotrel bne 1f sub dot,r2 bge 1f cmp r2,$-376 blt 1f mov $2,(sp) 1: add (sp)+,dot rts pc /double opl13: opl7: jsr pc,addres op2: cmp r4,$', beq 1f jsr pc,errora rts pc 1: jsr pc,readop opl15: / single operand jsr pc,addres add $2,dot rts pc opl31: / sob jsr pc,expres cmp r4,$', beq 1f jsr pc,errora 1: jsr pc,readop /branch opl6: opl10: opl11: jsr pc,expres add $2,dot rts pc / .byte opl16: jsr pc,expres inc dot cmp r4,$', bne 1f jsr pc,readop br opl16 1: rts pc / < (.ascii) opl17: add numval,dot jsr pc,readop rts pc /.even opl20: inc dot bic $1,dot rts pc /.if opl21: jsr pc,expres tst r3 bne 1f jsr r5,error; 'U 1: tst r2 bne opl22 inc ifflg opl22: /endif rts pc /.globl opl23: cmp r4,$200 blo 1f bisb $40,(r4) jsr pc,readop cmp r4,$', bne 1f jsr pc,readop br opl23 1: rts pc opl25: opl26: opl27: mov dotrel,r1 asl r1 mov dot,savdot-4(r1) mov savdot-[2*25](r0),dot asr r0 sub $25-2,r0 mov r0,dotrel rts pc / .common opl32: cmp r4,$200 blo 1f bis $40,(r4) jsr pc,readop cmp r4,$', bne 1f jsr pc,readop jsr pc,expres rts pc 1: jsr r5,error; 'x rts pc addres: cmp r4,$'( beq alp cmp r4,$'- beq amin cmp r4,$'$ beq adoll cmp r4,$'* beq astar getx: jsr pc,expres cmp r4,$'( bne 2f jsr pc,readop jsr pc,expres jsr pc,checkreg jsr pc,checkrp add $2,dot clr r0 rts pc 2: cmp r3,$24 / register type bne 1f jsr pc,checkreg clr r0 rts pc 1: add $2,dot clr r0 rts pc alp: jsr pc,readop jsr pc,expres jsr pc,checkrp jsr pc,checkreg cmp r4,$'+ bne 1f jsr pc,readop clr r0 rts pc 1: mov $2,r0 rts pc amin: jsr pc,readop cmp r4,$'( beq 1f mov r4,savop mov $'-,r4 br getx 1: jsr pc,readop jsr pc,expres jsr pc,checkrp jsr pc,checkreg clr r0 rts pc adoll: jsr pc,readop jsr pc,expres add $2,dot clr r0 rts pc astar: jsr pc,readop cmp r0,$'* beq 1f jsr pc,addres add r0,dot rts pc 2: jsr r5,error; '* rts pc errora: jsr r5,error; 'a rts pc checkreg: cmp r2,$7 bhi 1f cmp r3,$1 beq 2f cmp r3,$4 bhi 2f 1: jsr pc,errora 2: rts pc errore: jsr r5,error; 'e rts pc checkrp: cmp r4,$') beq 1f jsr r5,error; ') rts pc 1: jsr pc,readop rts pc / / copyright 1972 bell telephone laboratories inc. / / a7 -- pdp-11 assembler pass 1 expres: mov r5,-(sp) mov $'+,-(sp) clr opfound clr r2 mov $1,r3 br 1f advanc: jsr pc,readop 1: mov r4,r0 jsr r5,betwen; 0; 177 br .+4 br 7f movb (r4),r0 mov 2(r4),r1 br oprand 7: cmp r4,$141 blo 1f cmp r4,$141+10. bhis 2f movb curfbr-141(r4),r0 asl r4 mov curfb-[2*141](r4),r2 bpl oprand jsr r5,error; 'f br oprand 2: clr r3 clr r2 br oprand 1: mov $esw1,r1 1: cmp (r1)+,r4 beq 1f tst (r1)+ bne 1b tst opfound bne 2f jsr pc,errore 2: tst (sp)+ mov (sp)+,r5 rts pc 1: jmp *(r1) esw1: '+; binop '-; binop '*; binop '/; binop '&; binop 037; binop 035; binop 036; binop '%; binop '[; brack '^; binop 1; exnum '!; binop 0; 0 binop: cmpb (sp),$'+ beq 1f jsr pc,errore 1: movb r4,(sp) br advanc exnum: mov numval,r1 mov $1,r0 br oprand brack: mov r2,-(sp) mov r3,-(sp) jsr pc,readop jsr pc,expres cmp r4,$'] beq 1f jsr r5,error; '] 1: mov r3,r0 mov r2,r1 mov (sp)+,r3 mov (sp)+,r2 oprand: inc opfound mov $exsw2,r5 1: cmp (sp),(r5)+ beq 1f tst (r5)+ bne 1b br eoprnd 1: jmp *(r5) exsw2: '+; exadd '-; exsub '*; exmul '/; exdiv 037; exor '&; exand 035;exlsh 036;exrsh '%; exmod '!; exnot '^; excmbin 0; 0 excmbin: mov r0,r3 / give left flag of right br eoprnd exrsh: neg r1 beq exlsh inc r1 clc ror r2 exlsh: jsr r5,combin; 0 als r1,r2 br eoprnd exmod: jsr r5,combin; 0 mov r1,-(sp) mov r2,r1 clr r0 dvd (sp)+,r0 mov r1,r2 br eoprnd exadd: jsr r5,combin; 0 add r1,r2 br eoprnd exsub: jsr r5,combin; 1 sub r1,r2 br eoprnd exand: jsr r5,combin; 0 com r1 bic r1,r2 br eoprnd exor: jsr r5,combin; 0 bis r1,r2 br eoprnd exmul: jsr r5,combin; 0 mpy r2,r1 mov r1,r2 br eoprnd exdiv: jsr r5,combin; 0 mov r1,-(sp) mov r2,r1 clr r0 dvd (sp)+,r0 mov r0,r2 br eoprnd exnot: jsr r5,combin; 0 com r1 add r1,r2 br eoprnd eoprnd: mov $'+,(sp) jmp advanc combin: mov r0,-(sp) bis r3,(sp) bic $!40,(sp) bic $!37,r0 bic $!37,r3 cmp r0,r3 ble 1f mov r0,-(sp) mov r3,r0 mov (sp)+,r3 1: tst r0 beq 1f tst (r5)+ beq 2f cmp r0,r3 bne 2f mov $1,r3 br 2f 1: tst (r5)+ clr r3 2: bis (sp)+,r3 rts r5 / / copyright 1972 bell telephone laboratories inc. / / a8 -- pdp-11 assembler pass 1 chartab: .byte -14,-14,-14,-14,-02,-14,-14,-14 .byte -14,-22, -2,-14,-14,-22,-14,-14 .byte -14,-14,-14,-14,-14,-14,-14,-14 .byte -14,-14,-14,-14,-14,-14,-14,-14 .byte -22,-20,-16,-14,-20,-20,-20,-12 .byte -20,-20,-20,-20,-20,-20,056,-06 .byte 060,061,062,063,064,065,066,067 .byte 070,071,-20,-02,-00,-20,-14,-14 .byte -14,101,102,103,104,105,106,107 .byte 110,111,112,113,114,115,116,117 .byte 120,121,122,123,124,125,126,127 .byte 130,131,132,-20,-24,-20,-20,137 .byte -14,141,142,143,144,145,146,147 .byte 150,151,152,153,154,155,156,157 .byte 160,161,162,163,164,165,166,167 .byte 170,171,172,-14,-26,-14,-14,-14 namedone: .byte 0 a.tmp1: a.tmp2: a.tmp3: a.tmp4: .even nblocks: 126. curfb: -1;-1;-1;-1;-1;-1;-1;-1;-1;-1 obufp: outbuf symend: usymtab .bss curfbr: .=.+10. savdot: .=.+6 bufcnt: .=.+2 hshsiz = 1000. hshtab: .=2*hshsiz+. pof: .=.+1 wordf: .=.+1 fin: .=.+1 fbfil: .=.+1 fileflg:.=.+1 errflg: .=.+1 ch: .=.+1 .even symbol: .=.+8. obufc: .=.+2 outbuf: .=.+512. line: .=.+2 inbfcnt:.=.+2 ifflg: .=.+2 inbfp: .=.+2 nargs: .=.+2 curarg: .=.+2 opfound:.=.+2 savop: .=.+2 numval: .=.+2 nxtfb: .=.+4 usymtab:.=.+36. end: .text / / copyright 1972 bell telephone laboratories inc. / / a9 -- pdp-11 assembler pass 1 eae = 0 / key to types / 0 undefined / 1 absolute / 2 text / 3 data / 4 bss / 5 flop freg,dst (movfo, = stcfd) / 6 branch / 7 jsr / 10 rts / 11 sys / 12 movf (=ldf,stf) / 13 double operand (mov) / 14 flop fsrc,freg (addf) / 15 single operand (clr) / 16 .byte / 17 string (.ascii, "<") / 20 .even / 21 .if / 22 .endif / 23 .globl / 24 register / 25 .text / 26 .data / 27 .bss / 30 mul,div, etc / 31 sob / 32 .comm / 33 estimated text / 34 estimated data / 35 jbr / 36 jeq, jne, etc symtab: / special variables <.\0\0\0\0\0\0\0>; dotrel:02; dot:000000 <..\0\0\0\0\0\0>; 01; dotdot:000000 / register ; 24;000000 ; 24;000001 ; 24;000002 ; 24;000003 ; 24;000004 ; 24;000005 ; 24;000006 ; 24;000007 .if eae /eae & switches ; 01;177570 ; 01;177300 ; 01;177302 ; 01;177304 ; 01;177306 ; 01;177310 ; 01;177311 ; 01;177312 ; 01;177314 ; 01;177316 .endif / system calls ; 01;0000001 ; 01;0000002 ; 01;0000003 ; 01;0000004 ; 01;0000005 ; 01;0000006 ; 01;0000007 ; 01;0000010 ; 01;0000011 ; 01;0000012 ; 01;0000013 ; 01;0000014 ; 01;0000015 ; 01;0000016 ; 01;0000017 ; 01;0000020 ; 01;0000021 ; 01;0000022 ; 01;0000023 ; 01;0000024 ; 01;0000025 ; 01;0000026 ; 01;0000027 ; 01;0000030 ; 01;0000031 ; 01;0000034 ; 01;0000036 ; 01;0000037 ; 01;0000040 ; 01;0000042 ; 01;0000060 / double operand ; 13;0010000 ; 13;0110000 ; 13;0020000 ; 13;0120000 ; 13;0030000 ; 13;0130000 ; 13;0040000 ; 13;0140000 ; 13;0050000 ; 13;0150000 ; 13;0060000 ; 13;0160000 / branch ; 06;0000400 ; 06;0001000 ; 06;0001400 ; 06;0002000 ; 06;0002400 ; 06;0003000 ; 06;0003400 ; 06;0100000 ; 06;0100400 ; 06;0101000 ; 06;0101400 ; 06;0102000 ; 06;0102400 ; 06;0103000 ; 06;0103000 ; 06;0103000 ; 06;0103400 ; 06;0103400 ; 06;0103400 / jump/branch type ; 35;0000400 ; 36;0001000 ; 36;0001400 ; 36;0002000 ; 36;0002400 ; 36;0003000 ; 36;0003400 ; 36;0100000 ; 36;0100400 ; 36;0101000 ; 36;0101400 ; 36;0102000 ; 36;0102400 ; 36;0103000 ; 36;0103000 ; 36;0103000 ; 36;0103400 ; 36;0103400 ; 36;0103400 / single operand ; 15;0005000 ; 15;0105000 ; 15;0005100 ; 15;0105100 ; 15;0005200 ; 15;0105200 ; 15;0005300 ; 15;0105300 ; 15;0005400 ; 15;0105400 ; 15;0005500 ; 15;0105500 ; 15;0005600 ; 15;0105600 ; 15;0005700 ; 15;0105700 ; 15;0006000 ; 15;0106000 ; 15;0006100 ; 15;0106100 ; 15;0006200 ; 15;0106200 ; 15;0006300 ; 15;0106300 ; 15;0000100 ; 15;0000300 / jsr ; 07;0004000 / rts ; 010;000200 / simple operand ; 011;104400 / flag-setting ; 01;0000241 ; 01;0000242 ; 01;0000244 ; 01;0000250 ; 01;0000261 ; 01;0000262 ; 01;0000264 ; 01;0000270 / floating point ops ; 01;170000 ; 01;170001 ; 01;170011 ; 01;170002 ; 01;170012 ; 15;170400 ; 15;170700 ; 15;170600 ; 15;170500 ; 12;172400 ; 14;177000 ; 05;175400 ; 14;177400 ; 05;176000 ; 14;172000 ; 14;173000 ; 14;171000 ; 14;174400 ; 14;173400 ; 14;171400 ; 14;176400 ; 05;175000 ; 15;170100 ; 15;170200 ; 24;000000 ; 24;000001 ; 24;000002 ; 24;000003 ; 24;000004 ; 24;000005 / 11/45 operations ; 30;072000 ; 30;073000 ; 30;070000 .if eae-1 ; 30;070000 ; 30;071000 ; 30;072000 ; 30;073000 .endif ; 30;071000 ; 07;074000 ; 15;006700 ; 11;006400 ; 31;077000 / specials <.byte\0\0\0>; 16;000000 <.even\0\0\0>; 20;000000 <.if\0\0\0\0\0>; 21;000000 <.endif\0\0>; 22;000000 <.globl\0\0>; 23;000000 <.text\0\0\0>; 25;000000 <.data\0\0\0>; 26;000000 <.bss\0\0\0\0>; 27;000000 <.comm\0\0\0>; 32;000000 ebsymtab: start: sys signal; 2; 1 ror r0 bcs 1f sys signal; 2; aexit 1: mov sp,r5 mov (r5)+,r0 cmpb *2(r5),$'- bne 1f tst (r5)+ dec r0 br 2f 1: clr unglob 2: movb r0,nargs mov r5,curarg jsr r5,fcreat; a.tmp1 movb r0,pof jsr r5,fcreat; a.tmp2 movb r0,fbfil jsr pc,setup jmp go setup: mov $symtab,r1 1: mov $symbol,r0 clr r3 mov $8,r2 mov r1,-(sp) 2: movb (r1)+,r4 add r4,r3 movb r4,(r0)+ sob r2,2b jsr pc,slot mov (sp)+,r1 mov r1,(r3) add $12.,r1 cmp r1,$ebsymtab blo 1b rts pc slot: clr r2 div $hshsiz,r2 asl r3 add $hshtab,r3 1: cmp r3,$hshtab bhi 2f mov $2*hshsiz+hshtab,r3 2: tst -(r3) bne 1b rts pc /overlay buffer inbuf = setup . =inbuf+512. •–—˜™š›œ�žŸ ¡¢/ / copyright 1972 bell telephone laboratories inc. / / a21 -- pdp-11 assembler pass 2 main: sys signal; 2; 1 ror r0 bcs 1f sys signal; 2; aexit 1: jmp start / set up sizes and origins go: / read in symbol table mov $usymtab,r1 1: jsr pc,getw bvs 1f add $14,symsiz / count symbols jsr pc,getw jsr pc,getw jsr pc,getw jsr pc,getw mov r4,r0 bic $!37,r0 cmp r0,$2 /text blo 2f cmp r0,$3 /data bhi 2f add $31,r4 /mark "estimated" mov r4,(r1)+ jsr pc,getw mov r4,(r1)+ br 3f 2: clr (r1)+ clr (r1)+ jsr pc,getw 3: jsr pc,setbrk br 1b 1: / read in f-b definitions mov r1,fbbufp movb fbfil,fin clr ibufc 1: jsr pc,getw bvs 1f add $31,r4 / "estimated" mov r4,(r1)+ jsr pc,getw mov r4,(r1)+ jsr pc,setbrk br 1b 1: mov r1,endtable mov $100000,(r1)+ / set up input text file; initialize f-b table jsr pc,setup / do pass 1 mov pc,istext jsr pc,assem / prepare for pass 2 cmp outmod,$777 beq 1f jmp aexit 1: clr dot mov $2,dotrel mov $..,dotdot clr brtabp movb fin,r0 sys close jsr r5,ofile; a.tmp1 movb r0,fin clr ibufc jsr pc,setup inc passno inc bsssiz bic $1,bsssiz mov txtsiz,r1 inc r1 bic $1,r1 mov r1,txtsiz mov datsiz,r2 inc r2 bic $1,r2 mov r2,datsiz mov r1,r3 mov r3,datbase / txtsiz mov r3,savdot+2 add r2,r3 mov r3,bssbase / txtsiz+datsiz mov r3,savdot+4 asl r3 add $20,r3 mov r3,symseek / 2*txtsiz+2*datsiz+20 sub r2,r3 mov r3,drelseek / 2*txtsiz+datsiz sub r1,r3 mov r3,trelseek / txtsiz+datsiz+20 sub r2,r3 mov r3,datseek / txtsiz+20 mov $usymtab,r1 1: jsr pc,doreloc add $4,r1 cmp r1,endtable blo 1b clr r0 jsr r5,oset; txtp mov trelseek,r0 jsr r5,oset; relp mov $8.,r2 mov $txtmagic,r1 1: mov (r1)+,r0 jsr r5,putw; txtp dec r2 bne 1b jsr pc,assem /polish off text and relocation clr istext jsr r5,flush; txtp jsr r5,flush; relp / append full symbol table mov symf,r0 mov r0,fin sys seek; 0; 0; clr ibufc mov symseek,r0 jsr r5,oset; txtp mov $usymtab,r1 1: jsr pc,getw bvs 1f mov r4,r0 jsr r5,putw; txtp jsr pc,getw mov r4,r0 jsr r5,putw; txtp jsr pc,getw mov r4,r0 jsr r5,putw; txtp jsr pc,getw mov r4,r0 jsr r5,putw; txtp mov (r1)+,r0 jsr r5,putw; txtp mov (r1)+,r0 jsr r5,putw; txtp jsr pc,getw jsr pc,getw br 1b 1: jsr r5,flush; txtp aexit: mov a.tmp1,0f sys unlink; 0:.. mov a.tmp2,0f sys unlink; 0:.. mov a.tmp3,0f sys unlink; 0:.. mov a.tmp4,0f sys unlink; 0:.. sys chmod; a.out; outmod: 777 sys exit filerr: mov *(r5),r5 1: movb (r5)+,ch beq 1f mov $1,r0 sys write; ch; 1 br 1b 1: mov $1,r0 sys write; qnl; 2 br aexit doreloc: movb (r1),r0 bne 1f bisb defund,(r1) 1: bic $!37,r0 cmp r0,$5 bhis 1f cmp r0,$3 blo 1f beq 2f add bssbase,2(r1) rts pc 2: add datbase,2(r1) 1: rts pc setbrk: mov r1,-(sp) add $20,r1 cmp r1,0f blo 1f add $512.,0f sys break; 0: end 1: mov (sp)+,r1 rts pc setup: mov $curfb,r4 1: clr (r4)+ cmp r4,$curfb+40. blo 1b mov txtfil,fin clr ibufc clr r4 1: jsr pc,fbadv tstb (r4)+ cmp r4,$10. blt 1b rts pc ofile: mov *(r5),0f sys open; 0:..; 0 bes 1f tst (r5)+ rts r5 1: jmp filerr / / copyright 1972 bell telephone laboratories inc. / / a2 -- pdp-11 assembler pass 2 outw: cmp dot-2,$4 beq 9f bit $1,dot bne 1f add $2,dot tstb passno beq 8f clr -(sp) rol r3 adc (sp) asr r3 / get relative pc bit cmp r3,$40 bne 2f / external references mov $666,outmod / make nonexecutable mov xsymbol,r3 sub $usymtab,r3 asl r3 bis $4,r3 / external relocation br 3f 2: bic $40,r3 / clear any ext bits cmp r3,$5 blo 4f mov $1,r3 / make absolute 4: cmp r3,$2 blo 5f cmp r3,$4 bhi 5f tst (sp) bne 4f add dotdot,r2 br 4f 5: tst (sp) beq 4f sub dotdot,r2 4: dec r3 bpl 3f clr r3 3: asl r3 bis (sp)+,r3 mov r2,r0 jsr r5,putw; txtp add $2,*tseekp mov r3,r0 jsr r5,putw; relp add $2,*rseekp 8: rts pc 1: jsr r5,error; 'o clr r3 jsr pc,outb rts pc 9: jsr r5,error; 'x rts pc outb: cmp dot-2,$4 / test bss mode beq 9b cmp r3,$1 blos 1f jsr r5,error; 'r 1: tstb passno beq 2f mov r2,r0 jsr r5,putc; txtp bit $1,dot bne 1f clr r0 jsr r5,putw; relp add $2,*rseekp 1: inc *tseekp 2: inc dot rts pc error: mov $666,outmod / make nonexecutable mov r3,-(sp) mov r2,-(sp) mov r1,-(sp) mov r0,-(sp) mov $argb,r1 1: movb (r1),ch beq 1f clrb (r1)+ mov $1,r0 sys write; ch; 1 br 1b 1: mov (r5)+,r0 movb r0,0f mov line,r3 mov $0f+6,r0 mov $4,r1 2: clr r2 dvd $10.,r2 add $'0,r3 movb r3,-(r0) mov r2,r3 sob r1,2b mov $1,r0 sys write; 0f; 7 mov (sp)+,r0 mov (sp)+,r1 mov (sp)+,r2 mov (sp)+,r3 rts r5 0: .even betwen: cmp r0,(r5)+ blt 1f cmp (r5)+,r0 blt 2f 1: tst (r5)+ 2: rts r5 / / copyright 1972 bell telephone laboratories inc. / / a3 -- pdp-11 assembler pass 2 assem: jsr pc,readop cmp r4,$5 beq 2f cmp r4,$'< beq 2f jsr pc,checkeos br eal1 mov r4,-(sp) cmp (sp),$1 bne 1f mov $2,(sp) jsr pc,getw mov r4,numval 1: jsr pc,readop cmp r4,$'= beq 4f cmp r4,$': beq 1f mov r4,savop mov (sp)+,r4 2: jsr pc,opline dotmax: tstb passno bne eal1 movb dotrel,r0 asl r0 cmp dot,txtsiz-4(r0) blos ealoop mov dot,txtsiz-4(r0) eal1: jmp ealoop 1: mov (sp)+,r4 cmp r4,$200 bhis 1f cmp r4,$2 beq 3f jsr r5,error; 'x br assem 1: tstb passno bne 2f movb (r4),r0 bic $!37,r0 beq 5f cmp r0,$33 blt 6f cmp r0,$34 ble 5f 6: jsr r5,error; 'm 5: bic $37,(r4) bis dotrel,(r4) mov 2(r4),brdelt sub dot,brdelt mov dot,2(r4) br assem 2: cmp dot,2(r4) beq assem jsr r5,error; 'p br assem 3: mov numval,r4 jsr pc,fbadv asl r4 mov curfb(r4),r0 movb dotrel,(r0) mov 2(r0),brdelt sub dot,brdelt mov dot,2(r0) br assem 4: jsr pc,readop jsr pc,expres mov (sp)+,r1 cmp r1,$symtab /test for dot bne 1f bic $40,r3 cmp r3,dotrel / can't change relocation bne 2f cmp r3,$4 / bss bne 3f mov r2,dot br dotmax 3: sub dot,r2 bmi 2f mov r2,-(sp) 3: dec (sp) bmi 3f clr r2 mov $1,r3 jsr pc,outb br 3b 3: tst (sp)+ br dotmax 2: jsr r5,error; '. br ealoop 1: cmp r3,$40 bne 1f jsr r5,error; 'r 1: bic $37,(r1) bic $!37,r3 bne 1f clr r2 1: bisb r3,(r1) mov r2,2(r1) ealoop: cmp r4,$'\n beq 1f cmp r4,$'\e bne 9f rts pc 1: inc line 9: jmp assem checkeos: cmp r4,$'\n beq 1f cmp r4,$'; beq 1f cmp r4,$'\e beq 1f add $2,(sp) 1: rts pc fbadv: asl r4 mov nxtfb(r4),r1 mov r1,curfb(r4) bne 1f mov fbbufp,r1 br 2f 1: add $4,r1 2: cmpb 1(r1),r4 beq 1f tst (r1) bpl 1b 1: mov r1,nxtfb(r4) asr r4 rts pc / / copyright 1972 bell telephone laboratories inc. / / a4 -- pdp-11 assembler pass 2 oset: mov r2,-(sp) mov (r5)+,r1 mov r0,r2 bic $!777,r0 add r1,r0 add $6,r0 mov r0,(r1)+ / next slot mov r1,r0 add $1004,r0 mov r0,(r1)+ / buf max mov r2,(r1)+ / seek addr mov (sp)+,r2 rts r5 putw: mov (r5),0f jsr r5,putc; 0:.. swab r0 putc: mov r1,-(sp) mov r2,-(sp) mov (r5)+,r2 mov (r2)+,r1 / slot cmp r1,(r2) / buf max bhis 1f movb r0,(r1)+ mov r1,-(r2) br 2f 1: tst (r2)+ mov r0,-(sp) jsr r5,flush1 mov (sp)+,r0 movb r0,*(r2)+ inc -(r2) 2: mov (sp)+,r2 mov (sp)+,r1 rts r5 flush: mov (r5)+,r2 cmp (r2)+,(r2)+ flush1: mov (r2)+,r1 mov r1,0f / seek address mov fout,r0 sys seek; 0:..; 0 bic $!777,r1 add r2,r1 / write address mov r1,0f mov r2,r0 bis $777,-(r2) inc (r2) / new seek addr cmp -(r2),-(r2) sub (r2),r1 neg r1 mov r1,0f+2 / count mov r0,(r2) / new next slot mov fout,r0 sys write; 0:..; .. rts r5 readop: mov savop,r4 beq 1f clr savop rts pc 1: jsr pc,getw1 cmp r4,$200 blo 1f cmp r4,$4000 blo 2f add $usymtab-4000,r4 rts pc 2: add $symtab-1000,r4 1: rts pc getw: mov savop,r4 beq getw1 clr savop rts pc getw1: dec ibufc bgt 1f movb fin,r0 sys read; inbuf; 512. bes 3f asr r0 mov r0,ibufc bne 2f 3: tst istext beq 3f movb fin,r0 sys close jsr r5,ofile; a.tmp4 movb r0,fin br getw1 3: mov $4,r4 sev rts pc 2: mov $inbuf,ibufp 1: mov *ibufp,r4 add $2,ibufp rts pc / / copyright 1972 bell telephone laboratories inc. / / as25 is empty / / copyright 1972 bell telephone laboratories inc. / / a6 -- pdp-11 assembler pass 2 opline: mov r4,r0 jsr r5,betwen; 0; 177 br 2f cmp r4,$5 beq opeof cmp r4,$'< bne xpr jmp opl17 xxpr: tst (sp)+ xpr: jsr pc,expres jsr pc,outw rts pc 2: movb (r4),r0 cmp r0,$24 /reg beq xpr cmp r0,$33 /est text beq xpr cmp r0,$34 / est data beq xpr jsr r5,betwen; 5; 36 br xpr mov 2(r4),-(sp) mov r0,-(sp) jsr pc,readop mov (sp)+,r0 asl r0 mov $adrbuf,r5 clr swapf mov $-1,rlimit jmp *1f-10.(r0) 1: opl5 opl6 opl7 opl10 opl11 opl12 opl13 opl14 opl15 opl16 opl17 opl20 opl21 opl22 opl23 xxpr opl25 opl26 opl27 opl30 opl31 opl32 xxpr xxpr opl35 opl36 opeof: mov $1,line mov $20,-(sp) mov $argb,r1 1: jsr pc,getw tst r4 bmi 1f movb r4,(r1)+ dec (sp) bgt 1b tstb -(r1) br 1b 1: movb $'\n,(r1)+ clrb (r1)+ tst (sp)+ rts pc opl30: / mpy, dvd etc inc swapf mov $1000,rlimit br opl13 opl14: / flop freg,fsrc inc swapf opl5: / flop src,freg mov $400,rlimit /double opl13: jsr pc,addres op2a: mov r2,-(sp) jsr pc,readop op2b: jsr pc,addres tst swapf beq 1f mov (sp),r0 mov r2,(sp) mov r0,r2 1: swab (sp) asr (sp) asr (sp) cmp (sp),rlimit blo 1f jsr r5,error; 'x 1: bis (sp)+,r2 bis (sp)+,r2 clr r3 jsr pc,outw mov $adrbuf,r1 1: cmp r1,r5 bhis 1f mov (r1)+,r2 mov (r1)+,r3 mov (r1)+,xsymbol jsr pc,outw br 1b 1: rts pc opl15: / single operand clr -(sp) br op2b opl12: / movf mov $400,rlimit jsr pc,addres cmp r2,$4 / see if source is fregister blo 1f inc swapf br op2a 1: mov $174000,(sp) br op2a / jbr opl35: / jeq, jne, etc opl36: jsr pc,expres tstb passno bne 1f mov r2,r0 jsr pc,setbr tst r2 beq 2f cmp (sp),$br beq 2f add $2,r2 2: add r2,dot / if doesn't fit add $2,dot tst (sp)+ rts pc 1: jsr pc,getbr bcc dobranch mov (sp)+,r0 mov r2,-(sp) mov r3,-(sp) cmp r0,$br beq 2f mov $402,r2 xor r0,r2 / flip cond, add ".+6" mov $1,r3 jsr pc,outw 2: mov $1,r3 mov $jmp+37,r2 jsr pc,outw mov (sp)+,r3 mov (sp)+,r2 jsr pc,outw rts pc /sob opl31: / sob jsr pc,expres jsr pc,checkreg swab r2 asr r2 asr r2 bis r2,(sp) jsr pc,readop jsr pc,expres tstb passno beq 3f sub dot,r2 neg r2 mov r2,r0 jsr r5,betwen; -2; 175 br 2f add $4,r2 br 1f /branch opl6: jsr pc,expres tstb passno beq 3f dobranch: sub dot,r2 mov r2,r0 jsr r5,betwen; -254.; 256. br 2f 1: bit $1,r2 bne 2f cmp r3,dot-2 / same relocation as . bne 2f asr r2 dec r2 bic $177400,r2 3: bis (sp)+,r2 clr r3 jsr pc,outw rts pc 2: jsr r5,error; 'b clr r2 br 3b /jsr opl7: jsr pc,expres jsr pc,checkreg jmp op2a / rts opl10: jsr pc,expres jsr pc,checkreg br 1f / sys, emt etc opl11: jsr pc,expres cmp r2,$64. bhis 0f cmp r3,$1 ble 1f 0: jsr pc,errora 1: bis (sp)+,r2 jsr pc,outw rts pc / .byte opl16: jsr pc,expres jsr pc,outb cmp r4,$', bne 1f jsr pc,readop br opl16 1: tst (sp)+ rts pc / < (.ascii) opl17: jsr pc,getw mov $1,r3 mov r4,r2 bmi 2f bic $!377,r2 jsr pc,outb br opl17 2: jsr pc,getw rts pc /.even opl20: bit $1,dot beq 1f cmp dot-2,$4 beq 2f / bss mode clr r2 clr r3 jsr pc,outb br 1f 2: inc dot 1: tst (sp)+ rts pc opl21: /if jsr pc,expres opl22: oplret: tst (sp)+ rts pc /.globl opl23: cmp r4,$200 blo 1f bisb $40,(r4) jsr pc,readop cmp r4,$', bne 1f jsr pc,readop br opl23 1: tst (sp)+ rts pc / .text, .data, .bss opl25: opl26: opl27: mov r0,-(sp) mov dot-2,r1 asl r1 mov dot,savdot-4(r1) tstb passno beq 1f jsr r5,flush; txtp jsr r5,flush; relp mov (sp),r2 add $txtseek-[2*25],r2 mov r2,tseekp mov (r2),r0 jsr r5,oset; txtp add $trelseek-txtseek,r2 mov (r2),r0 mov r2,rseekp jsr r5,oset; relp 1: mov (sp)+,r0 mov savdot-[2*25](r0),dot asr r0 sub $25-2,r0 mov r0,dot-2 / new . relocation tst (sp)+ rts pc opl32: cmp r4,$200 blo 1f mov r4,-(sp) jsr pc,readop jsr pc,readop jsr pc,expres mov (sp)+,r0 bit $37,(r0) bne 1f bis $40,(r0) mov r2,2(r0) 1: tst (sp)+ rts pc addres: clr -(sp) 4: cmp r4,$'( beq alp cmp r4,$'- beq amin cmp r4,$'$ beq adoll cmp r4,$'* bne getx jmp astar getx: jsr pc,expres cmp r4,$'( bne 2f jsr pc,readop mov r2,(r5)+ mov r3,(r5)+ mov xsymbol,(r5)+ jsr pc,expres jsr pc,checkreg jsr pc,checkrp bis $60,r2 bis (sp)+,r2 rts pc 2: cmp r3,$24 bne 1f jsr pc,checkreg bis (sp)+,r2 rts pc 1: mov r3,-(sp) bic $40,r3 mov (sp)+,r3 bis $100000,r3 sub dot,r2 sub $4,r2 cmp r5,$adrbuf beq 1f sub $2,r2 1: mov r2,(r5)+ / index mov r3,(r5)+ / index reloc. mov xsymbol,(r5)+ / index global mov $67,r2 / address mode bis (sp)+,r2 rts pc alp: jsr pc,readop jsr pc,expres jsr pc,checkrp jsr pc,checkreg cmp r4,$'+ beq 1f tst (sp)+ beq 2f bis $70,r2 clr (r5)+ clr (r5)+ mov xsymbol,(r5)+ rts pc 2: bis $10,r2 rts pc 1: jsr pc,readop bis $20,r2 bis (sp)+,r2 rts pc amin: jsr pc,readop cmp r4,$'( beq 1f mov r4,savop mov $'-,r4 br getx 1: jsr pc,readop jsr pc,expres jsr pc,checkrp jsr pc,checkreg bis (sp)+,r2 bis $40,r2 rts pc adoll: jsr pc,readop jsr pc,expres mov r2,(r5)+ mov r3,(r5)+ mov xsymbol,(r5)+ mov (sp)+,r2 bis $27,r2 rts pc astar: tst (sp) beq 1f jsr r5,error; '* 1: mov $10,(sp) jsr pc,readop jmp 4b errora: jsr r5,error; 'a rts pc checkreg: cmp r2,$7 bhi 1f cmp r1,$1 blos 2f cmp r3,$5 blo 1f 2: rts pc 1: jsr pc,errora clr r2 clr r3 rts pc errore: jsr r5,error; 'e rts pc checkrp: cmp r4,$') beq 1f jsr r5,error; ') rts pc 1: jsr pc,readop rts pc setbr: mov brtabp,r1 cmp r1,$brlen blt 1f mov $2,r2 rts pc 1: inc brtabp clr -(sp) sub dot,r0 ble 1f sub brdelt,r0 1: jsr r5,betwen; -254.; 256. br 1f br 2f 1: mov r1,-(sp) bic $!7,(sp) mov $1,r0 ash (sp)+,r0 ash $-3,r1 bisb r0,brtab(r1) mov $2,(sp) 2: mov (sp)+,r2 rts pc getbr: mov brtabp,r1 cmp r1,$brlen blt 1f sec rts pc 1: mov r1,-(sp) bic $!7,(sp) neg (sp) inc brtabp ash $-3,r1 movb brtab(r1),r1 ash (sp)+,r1 ror r1 / 0-bit into c-bit rts pc ·¸¹º»¼½¾¿ÀÁÂ/ / copyright 1972 bell telephone laboratories inc. / / a7 -- pdp-11 assembler expres: clr xsymbol expres1: mov r5,-(sp) mov $'+,-(sp) clr r2 mov $1,r3 br 1f advanc: jsr pc,readop 1: mov r4,r0 jsr r5,betwen; 0; 177 br .+4 br 7f movb (r4),r0 tst r0 bne 1f tstb passno beq 1f jsr r5,error; 'u 1: cmp r0,$40 bne 1f mov r4,xsymbol clr r1 br oprand 1: mov 2(r4),r1 br oprand 7: cmp r4,$141 blo 1f asl r4 mov curfb-[2*141](r4),r0 mov 2(r0),r1 movb (r0),r0 br oprand 1: mov $esw1,r1 1: cmp (r1)+,r4 beq 1f tst (r1)+ bne 1b tst (sp)+ mov (sp)+,r5 rts pc 1: jmp *(r1) esw1: '+; binop '-; binop '*; binop '/; binop '&; binop 037; binop 035; binop 036; binop '%; binop '[; brack '^; binop 1; exnum 2; exnum1 '!; binop 200; 0 binop: cmpb (sp),$'+ beq 1f jsr pc,errore 1: movb r4,(sp) br advanc exnum1: mov numval,r1 br 1f exnum: jsr pc,getw mov r4,r1 1: mov $1,r0 br oprand brack: mov r2,-(sp) mov r3,-(sp) jsr pc,readop jsr pc,expres1 cmp r4,$'] beq 1f jsr r5,error; '] 1: mov r3,r0 mov r2,r1 mov (sp)+,r3 mov (sp)+,r2 oprand: mov $exsw2,r5 1: cmp (sp),(r5)+ beq 1f tst (r5)+ bne 1b br eoprnd 1: jmp *(r5) exsw2: '+; exadd '-; exsub '*; exmul '/; exdiv 037; exor '&; exand 035;exlsh 036;exrsh '%; exmod '^; excmbin '!; exnot 200; 0 excmbin: mov r0,r3 br eoprnd exrsh: neg r1 beq exlsh inc r1 clc ror r2 exlsh: jsr r5,combin; relte2 als r1,r2 br eoprnd exmod: jsr r5,combin; relte2 mov r3,r0 mov r2,r3 clr r2 dvd r1,r2 mov r3,r2 mov r0,r3 br eoprnd exadd: jsr r5,combin; reltp2 add r1,r2 br eoprnd exsub: jsr r5,combin; reltm2 sub r1,r2 br eoprnd exand: jsr r5,combin; relte2 com r1 bic r1,r2 br eoprnd exor: jsr r5,combin; relte2 bis r1,r2 br eoprnd exmul: jsr r5,combin; relte2 mpy r2,r1 mov r1,r2 br eoprnd exdiv: jsr r5,combin; relte2 mov r3,r0 mov r2,r3 clr r2 dvd r1,r2 mov r0,r3 br eoprnd exnot: jsr r5,combin; relte2 com r1 add r1,r2 br eoprnd eoprnd: mov $'+,(sp) jmp advanc combin: tstb passno bne combin1 mov r0,-(sp) bis r3,(sp) bic $!40,(sp) bic $!37,r0 bic $!37,r3 cmp r0,r3 ble 1f mov r0,-(sp) mov r3,r0 mov (sp)+,r3 1: tst r0 beq 1f cmp (r5)+,$reltm2 bne 2f cmp r0,r3 bne 2f mov $1,r3 br 2f 1: tst (r5)+ clr r3 2: bis (sp)+,r3 rts r5 combin1: mov r1,-(sp) clr maxtyp jsr pc,maprel mov r0,r1 mpy $6,r1 mov r3,r0 jsr pc,maprel add (r5)+,r0 add r1,r0 movb (r0),r3 bpl 1f cmp r3,$-1 beq 2f jsr r5,error; 'r 2: mov maxtyp,r3 1: mov (sp)+,r1 rts r5 maprel: cmp r0,$40 bne 1f mov $5,r0 rts pc 1: bic $!37,r0 cmp r0,maxtyp blos 1f mov r0,maxtyp 1: cmp r0,$5 blos 1f mov $1,r0 1: rts pc X = -2 M = -1 reltp2: .byte 0, 0, 0, 0, 0, 0 .byte 0, M, 2, 3, 4,40 .byte 0, 2, X, X, X, X .byte 0, 3, X, X, X, X .byte 0, 4, X, X, X, X .byte 0,40, X, X, X, X reltm2: .byte 0, 0, 0, 0, 0, 0 .byte 0, M, 2, 3, 4,40 .byte 0, X, 1, X, X, X .byte 0, X, X, 1, X, X .byte 0, X, X, X, 1, X .byte 0, X, X, X, X, X relte2: .byte 0, 0, 0, 0, 0, 0 .byte 0, M, X, X, X, X .byte 0, X, X, X, X, X .byte 0, X, X, X, X, X .byte 0, X, X, X, X, X .byte 0, X, X, X, X, X / / copyright 1972 bell telephone laboratories inc. / / as8 -- PDP-11 assembler pass 2 qnl: a.out: badfil: / a file which should never exist .even a.outp: a.out a.tmp1: badfil a.tmp2: badfil a.tmp3: badfil a.tmp4: badfil tseekp: txtseek rseekp: trelseek txtmagic: br .+20 txtsiz: .=.+2 datsiz: .=.+2 bsssiz: .=.+2 symsiz: .=.+2 stksiz: .=.+2 exorig: .=.+2 .=.+2 txtseek: 20 datseek:.=.+2 .=.+2 trelseek:.=.+2 drelseek:.=.+2 .=.+2 symseek:.=.+2 .bss istext: .=.+2 brlen = 1024. brtab: .=.+[brlen\/8.] brtabp: .=.+2 brdelt: .=.+2 fbbufp: .=.+2 defund: .=.+2 savdot: .=.+6 datbase:.=.+2 bssbase:.=.+2 fbfil: .=.+2 fin: .=.+2 ibufc: .=.+2 txtfil: .=.+2 symf: .=.+2 adrbuf: .=.+12. xsymbol:.=.+2 fout: .=.+2 ch: .=.+2 wordf: .=.+2 argb: .=.+22. line: .=.+2 savop: .=.+2 curfb: .=.+20. nxtfb: .=.+20. numval: .=.+2 maxtyp: .=.+2 relfil: .=.+2 ibufp: .=.+2 txtp: .=.+6+512. relp: .=.+6+512. swapf: .=.+2 rlimit: .=.+2 passno: .=.+2 endtable:.=.+2 usymtab:.=.+20. end: .text / / copyright 1972 bell telephone laboratories inc. / / as9 -- PDP-11 assembler pass 2 eae = 0 symtab: / special variables dotrel: 02; dot:000000 /. 01; dotdot:000000 /.. / register 24;000000 /r0 24;000001 /r1 24;000002 /r2 24;000003 /r3 24;000004 /r4 24;000005 /r5 24;000006 /sp 24;000007 /pc .if eae /eae & switches 01;177570 /csw 01;177300 /div 01;177302 /ac 01;177304 /mq 01;177306 /mul 01;177310 /sc 01;177311 /sr 01;177312 /nor 01;177314 /lsh 01;177316 /ash .endif / system calls 01;0000001 /exit 01;0000002 /fork 01;0000003 /read 01;0000004 /write 01;0000005 /open 01;0000006 /close 01;0000007 /wait 01;0000010 /creat 01;0000011 /link 01;0000012 /unlink 01;0000013 /exec 01;0000014 /chdir 01;0000015 /time 01;0000016 /makdir 01;0000017 /chmod 01;0000020 /chown 01;0000021 /break 01;0000022 /stat 01;0000023 /seek 01;0000024 /tell 01;0000025 /mount 01;0000026 /umount 01;0000027 /setuid 01;0000030 /getuid 01;0000031 /stime 01;0000034 /fstat 01;0000036 /mdate 01;0000037 /stty 01;0000040 /gtty 01;0000042 /nice 01;0000060 /signal / double operand 13;0010000 /mov 13;0110000 /movb 13;0020000 /cmp 13;0120000 /cmpb 13;0030000 /bit 13;0130000 /bitb 13;0040000 /bic 13;0140000 /bicb 13;0050000 /bis 13;0150000 /bisb 13;0060000 /add 13;0160000 /sub / branch 06;0000400 /br 06;0001000 /bne 06;0001400 /beq 06;0002000 /bge 06;0002400 /blt 06;0003000 /bgt 06;0003400 /ble 06;0100000 /bpl 06;0100400 /bmi 06;0101000 /bhi 06;0101400 /blos 06;0102000 /bvc 06;0102400 /bvs 06;0103000 /bhis 06;0103000 /bec 06;0103000 /bcc 06;0103400 /blo 06;0103400 /bcs 06;0103400 /bes / jump/ branch type 35;0000400 /jbr 36;0001000 /jne 36;0001400 /jeq 36;0002000 /jge 36;0002400 /jlt 36;0003000 /jgt 36;0003400 /jle 36;0100000 /jpl 36;0100400 /jmi 36;0101000 /jhi 36;0101400 /jlos 36;0102000 /jvc 36;0102400 /jvs 36;0103000 /jhis 36;0103000 /jec 36;0103000 /jcc 36;0103400 /jlo 36;0103400 /jcs 36;0103400 /jes / single operand 15;0005000 /clr 15;0105000 /clrb 15;0005100 /com 15;0105100 /comb 15;0005200 /inc 15;0105200 /incb 15;0005300 /dec 15;0105300 /decb 15;0005400 /neg 15;0105400 /negb 15;0005500 /adc 15;0105500 /adcb 15;0005600 /sbc 15;0105600 /sbcb 15;0005700 /tst 15;0105700 /tstb 15;0006000 /ror 15;0106000 /rorb 15;0006100 /rol 15;0106100 /rolb 15;0006200 /asr 15;0106200 /asrb 15;0006300 /asl 15;0106300 /aslb 15;0000100 /jmp 15;0000300 /swab / jsr 07;0004000 /jsr / rts 10;000200 /rts / simple operand 11;104400 /sys / flag-setting 01;0000241 /clc 01;0000242 /clv 01;0000244 /clz 01;0000250 /cln 01;0000261 /sec 01;0000262 /sev 01;0000264 /sez 01;0000270 /sen / floating point ops 01;170000 / cfcc 01;170001 / setf 01;170011 / setd 01;170002 / seti 01;170012 / setl 15;170400 / clrf 15;170700 / negf 15;170600 / absf 15;170500 / tstf 12;172400 / movf 14;177000 / movif 05;175400 / movfi 14;177400 / movof 05;176000 / movfo 14;172000 / addf 14;173000 / subf 14;171000 / mulf 14;174400 / divf 14;173400 / cmpf 14;171400 / modf 14;176400 / movie 05;175000 / movei 15;170100 / ldfps 15;170200 / stfps 24;000000 / fr0 24;000001 / fr1 24;000002 / fr2 24;000003 / fr3 24;000004 / fr4 24;000005 / fr5 / 11/45 operations 30;072000 /als (ash) 30;073000 /alsc (ashc) 30;070000 /mpy .if eae-1 30;070000/ mul 30;071000 / div 30;072000 / ash 30;073000 /ashc .endif 30;071000 /dvd 07;074000 /xor 15;006700 /sxt 11;006400 /mark 31;077000 /sob / specials 16;000000 /.byte 20;000000 /.even 21;000000 /.if 22;000000 /.endif 23;000000 /.globl 25;000000 /.text 26;000000 /.data 27;000000 /.bss 32;000000 /.comm start: cmp (sp),$4 bge 1f jmp aexit 1: cmp (sp)+,$6 blt 1f mov $40,defund / globalize all undefineds 1: tst (sp)+ mov (sp)+,a.tmp1 mov (sp)+,a.tmp2 mov (sp)+,a.tmp3 mov (sp)+,a.tmp4 jsr r5,ofile; a.tmp1 movb r0,txtfil jsr r5,ofile; a.tmp2 movb r0,fbfil jsr r5,ofile; a.tmp3 movb r0,symf movb r0,fin sys creat; a.out; 0 bec 1f jsr r5,filerr; a.outp 1: movb r0,fout jmp go / overlaid buffer inbuf = start . = inbuf+512. / / copyright 1972 bell telephone laboratories inc. / / bas0 -- basic .globl main .globl sin, cos, log, exp, atan, pow .globl rand, srand .globl fptrap one = 40200 main: sys signal; 4; fptrap setd sys time mov r1,r0 mov r0,randx jsr pc,srand sys signal; 2; 1 ror r0 bes 1f sys signal; 2; intrup 1: mov sp,gsp clr seeka mov $'a,r1 1: movb r1,tmpf+8 sys stat; tmpf; line bes 1f inc r1 cmp r1,$'z blos 1b br 2f 1: sys creat; tmpf; 600 bes 2f mov r0,tfo sys open; tmpf; 0 bec 1f 2: mov $3f,r0 jsr pc,print sys exit 3: ; .even 1: mov r0,tfi jsr pc,isymtab cmp (sp),$2 blt loop mov 4(sp),argname sys 0; 9f .data 9: sys open; argname: b.out; 0 .text bes 1f mov r0,fi br loop 1: mov $1f,r0 jsr pc,print br loop 1: ; .even intrup: sys signal; 2; intrup mov $'\n,r0 jsr r5,putc jsr r5,error ; .even loop: mov gsp,sp clr lineno jsr pc,rdline mov $line,r3 1: movb (r3),r0 jsr pc,digit br 1f jsr r5,atoi; nextc cmp r0,$' / bne 1f mov $lintab,r3 mov r1,r0 bgt 2f jsr pc,serror 2: cmp r0,(r3) beq 2f tst (r3) beq 2f add $6,r3 br 2b 2: cmp r3,$elintab-12. blo 2f jsr r5,error ; .even 2: mov r0,(r3)+ mov seeka,(r3)+ mov tfo,r0 sys 0; 9f .data 9: sys seek; seeka:..; 0 .text mov $line,r0 jsr pc,size inc r0 add r0,seeka mov r0,0f mov tfo,r0 sys 0; 9f .data 9: sys write; line; 0:.. .text br loop 1: mov $line,r3 jsr pc,singstat br loop nextc: movb (r3)+,r0 rts r5 size: clr -(sp) 1: tstb (r0) beq 1f inc (sp) cmpb (r0)+,$'\n bne 1b 1: mov (sp)+,r0 rts pc rdline: mov $line,0f 1: mov fi,r0 sys 0; 9f .data 9: sys read; 0:..; 1 .text bes 2f tst r0 beq 2f cmp 0b,$line+99. bhis 2f / bad check, but a check movb *0b,r0 inc 0b cmp r0,$'\n bne 1b clrb *0b rts pc 2: mov fi,r0 beq 1f sys close clr fi br 1b 1: jmp _done error: mov fi,r0 beq 1f sys close clr fi 1: mov fo,r0 cmp r0,$1 beq 1f sys close mov $1,fo 1: tst lineno beq 1f jsr pc,nextlin br 1f mov $line,r0 jsr pc,print 1: mov r5,r0 jsr pc,print jmp loop serror: dec r3 tst fi beq 1f sys close clr fi 1: mov $line,r1 1: cmp r1,r3 bne 2f mov $'_,r0 jsr r5,putc mov $10,r0 jsr r5,putc 2: movb (r1),r0 jsr r5,putc cmpb (r1)+,$'\n bne 1b jmp loop print: mov r0,0f jsr pc,size mov r0,0f+2 mov fo,r0 sys 0; 9f .data 9: sys write; 0:..; .. .text rts pc digit: cmp r0,$'0 blo 1f cmp r0,$'9 bhi 1f add $2,(sp) 1: rts pc alpha: cmp r0,$'a blo 1f cmp r0,$'z bhi 1f add $2,(sp) 1: rts pc name: mov $nameb,r1 clr (r1) clr 2(r1) 1: cmp r1,$nameb+4 bhis 2f movb r0,(r1)+ 2: movb (r3)+,r0 jsr pc,alpha br 2f br 1b 2: jsr pc,digit br 2f br 1b 2: mov $resnam,r1 1: cmp nameb,(r1) bne 2f cmp nameb+2,2(r1) bne 2f sub $resnam,r1 asr r1 add $2,(sp) rts pc 2: add $4,r1 cmp r1,$eresnam blo 1b mov $symtab,r1 1: tst (r1) beq 1f cmp nameb,(r1) bne 2f cmp nameb+2,2(r1) bne 2f rts pc 2: add $14.,r1 br 1b 1: cmp r1,$esymtab-28. blo 1f jsr r5,error ; .even 1: mov nameb,(r1) mov nameb+2,2(r1) clr 4(r1) clr 14.(r1) rts pc skip: cmp r0,$' / bne 1f movb (r3)+,r0 br skip 1: rts pc putc: tstb drflg beq 1f jsr pc,drput rts r5 1: mov r0,ch mov $1,r0 sys write; ch; 1 rts r5 nextlin: clr -(sp) mov $lintab,r1 1: tst (r1) beq 1f cmp lineno,(r1) bhi 2f mov (sp),r0 beq 3f cmp (r0),(r1) blos 2f 3: mov r1,(sp) 2: add $6,r1 br 1b 1: mov (sp)+,r1 beq 1f mov (r1)+,lineno mov (r1)+,0f mov tfi,r0 sys 0; 9f .data 9: sys seek; 0:..; 0 .text mov tfi,r0 sys read; line; 100. add $2,(sp) 1: rts pc getloc: mov $lintab,r1 1: tst (r1) beq 1f cmp r0,(r1) beq 2f add $6,r1 br 1b 1: jsr r5,error vt: .even resnam: eresnam: symtnam: esymtnam: .data fo: 1 .bss drx: .=.+8 dry: .=.+8 drfo: .=.+2 ch: .=.+1 drflg: .=.+1 randx: .=.+2 fsgn: .=.+2 gsp: .=.+2 forp: .=.+2 exprloc:.=.+2 sstack: .=.+2 sublev: .=.+2 val: .=.+2 line: .=.+100. tfi: .=.+2 fi: .=.+2 lineno: .=.+2 nameb: .=.+6 tfo: .=.+2 symtab: .=.+1000.; esymtab: space: .=.+5000.; espace: exline: .=.+1000.; eexline: lintab: .=.+1000.; elintab: stack: .=.+1000.; estack: char dayw[] { " S M Tu W Th F S" }; char *smon[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", }; char string[432]; main(argc, argv) char *argv[]; { register y, i, j; int m; if(argc < 2) { printf("usage: cal [month] year\n"); exit(); } if(argc == 2) goto long; /* * print out just month */ m = number(argv[1]); if(m<1 || m>12) goto badarg; y = number(argv[2]); if(y<1 || y>9999) goto badarg; printf(" %s %l\n", smon[m-1], y); printf("%s\n", dayw); cal(m, y, string, 24); for(i=0; i<6*24; i=+24) pstr(string+i, 24); exit(); /* * print out complete year */ long: y = number(argv[1]); if(y<1 || y>9999) goto badarg; printf("\n\n\n"); printf(" %l\n", y); printf("\n"); for(i=0; i<12; i=+3) { for(j=0; j<6*72; j++) string[j] = '\0'; printf(" %s", smon[i]); printf(" %s", smon[i+1]); printf(" %s\n", smon[i+2]); printf("%s %s %s\n", dayw, dayw, dayw); cal(i+1, y, string, 72); cal(i+2, y, string+23, 72); cal(i+3, y, string+46, 72); for(j=0; j<6*72; j=+72) pstr(string+j, 72); } printf("\n\n\n"); exit(); badarg: printf("Bad argument\n"); } number(str) char *str; { register n, c; register char *s; n = 0; s = str; while(c = *s++) { if(c<'0' || c>'9') return(0); n = n*10 + c-'0'; } return(n); } pstr(str, n) char *str; { register i; register char *s; s = str; i = n; while(i--) if(*s++ == '\0') s[-1] = ' '; i = n+1; while(i--) if(*--s != ' ') break; s[1] = '\0'; printf("%s\n", str); } char mon[] { 0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31, }; cal(m, y, p, w) char *p; { register d, i; register char *s; s = p; d = jan1(y); mon[2] = 29; mon[9] = 30; switch((jan1(y+1)+7-d)%7) { /* * non-leap year */ case 1: mon[2] = 28; break; /* * 1752 */ default: mon[9] = 19; break; /* * leap year */ case 2: ; } for(i=1; i 9) *s = i/10+'0'; s++; *s++ = i%10+'0'; s++; if(++d == 7) { d = 0; s = p+w; p = s; } } } /* * return day of the week * of jan 1 of given year */ jan1(yr) { register y, d; /* * normal gregorian calendar * one extra day per four years */ y = yr; d = 4+y+(y+3)/4; /* * julian calendar * regular gregorian * less three days per 400 */ if(y > 1800) { d =- (y-1701)/100; d =+ (y-1601)/400; } /* * great calendar changeover instant */ if(y > 1752) d =+ 3; return(d%7); } / cat -- concatinate files mov (sp)+,r5 tst (sp)+ mov $obuf,r2 cmp r5,$1 beq 3f loop: dec r5 ble done mov (sp)+,r0 cmpb (r0),$'- bne 2f clr fin br 3f 2: mov r0,0f sys open; 0:..; 0 bes loop mov r0,fin 3: mov fin,r0 sys read; ibuf; 512. bes 3f mov r0,r4 beq 3f mov $ibuf,r3 4: movb (r3)+,r0 jsr pc,putc dec r4 bne 4b br 3b 3: mov fin,r0 beq loop sys close br loop done: sub $obuf,r2 beq 1f mov r2,0f mov $1,r0 sys write; obuf; 0:.. 1: sys exit putc: movb r0,(r2)+ cmp r2,$obuf+512. blo 1f mov $1,r0 sys write; obuf; 512. mov $obuf,r2 1: rts pc .bss ibuf: .=.+512. obuf: .=.+512. fin: .=.+2 .text Â..Ã.Äac.cÅar.sÆas11.sÇas12.sÈas13.sÉas14.sÊas15.sËas16.sÌas17.sÍas18.sÎas19.sÏas21.sÐas22.sÑas23.sÒas24.sÓas25.sÔas26.sÕas27.sÖas28.s×as29.sØbas0.sÙbas1.sÚbas2.sÛbas3.sÜbas4.sÝbas5.sÞbasx.sßcal.càcat.sácc.c/* C command */ char *tmp0; char *tmp1; char *tmp2; char *tmp3; char *tmp4; char *tmp5; char ts[1000]; char *tsp ts; char *av[50]; char *clist[50]; char *llist[50]; int instring; int pflag; int sflag; int cflag; int oflag; int proflag; int *ibuf; int *ibuf1; int *ibuf2; int *obuf; char *lp; char *line; int lineno; int exfail; struct symtab { char name[8]; char *value; } *symtab; int symsiz 200; struct symtab *defloc; struct symtab *incloc; char *stringbuf; char *pass0 "/lib/c0"; char *pass1 "/lib/c1"; char *pref "/lib/crt0.o"; main(argc, argv) char *argv[]; { char *t; int nc, nl, i, j, c, f20, nxo; int dexit(); i = nc = nl = f20 = nxo = 0; while(++i < argc) { if(*argv[i] == '-') switch (argv[i][1]) { default: goto passa; case 'S': sflag++; cflag++; break; case 'O': oflag++; break; case 'p': proflag++; pref = "/lib/mcrt0.o"; break; case 'P': pflag++; case 'c': cflag++; break; case '2': if(argv[i][2] == '\0') pref = "/lib/crt2.o"; else { pref = "/lib/crt20.o"; f20 = 1; } break; case 't': if (argv[i][2]=='0') pass0 = "/usr/c/c0"; if (argv[i][2]=='1') pass1 = "/usr/c/c1"; break; } else { passa: t = argv[i]; if(getsuf(t)=='c') { clist[nc++] = t; t = setsuf(copy(t), 'o'); } if (nodup(llist, t)) { llist[nl++] = t; if (getsuf(t)=='o') nxo++; } } } if(nc==0) goto nocom; if (pflag==0) { tmp0 = copy("/tmp/ctm0a"); while((c=open(tmp0, 0))>=0) { close(c); tmp0[9]++; } while((creat(tmp0, 0400))<0) tmp0[9]++; } if ((signal(2, 1) & 01) == 0) signal(2, &dexit); (tmp1 = copy(tmp0))[8] = '1'; (tmp2 = copy(tmp0))[8] = '2'; (tmp3 = copy(tmp0))[8] = '3'; if (oflag) (tmp5 = copy(tmp0))[8] = '5'; if (pflag==0) (tmp4 = copy(tmp0))[8] = '4'; for (i=0; i1) printf("%s:\n", clist[i]); av[0] = "c0"; if (pflag) tmp4 = setsuf(copy(clist[i]), 'i'); av[1] = expand(clist[i]); if (pflag || exfail) continue; if (av[1] == 0) { cflag++; continue; } av[2] = tmp1; av[3] = tmp2; if (proflag) { av[4] = "-P"; av[5] = 0; } else av[4] = 0; if (callsys(pass0, av)) { cflag++; continue; } av[0] = "c1"; av[1] = tmp1; av[2] = tmp2; if (sflag) tmp3 = setsuf(copy(clist[i]), 's'); av[3] = tmp3; if (oflag) av[3] = tmp5; av[4] = 0; if(callsys(pass1, av)) { cflag++; continue; } if (oflag) { av[0] = "c2"; av[1] = tmp5; av[2] = tmp3; av[3] = 0; callsys("/lib/c2", av); unlink(tmp5); } if (sflag) continue; av[0] = "as"; av[1] = "-"; av[2] = tmp3; av[3] = 0; cunlink(tmp1); cunlink(tmp2); cunlink(tmp4); callsys("/bin/as", av); t = setsuf(clist[i], 'o'); cunlink(t); if(link("a.out", t) || cunlink("a.out")) { printf("move failed: %s\n", t); cflag++; } } nocom: if (cflag==0 && nl!=0) { i = 0; av[0] = "ld"; av[1] = "-x"; av[2] = pref; j = 3; while(ivalue = defloc->name; incloc = lookup("include", 1); incloc->value = incloc->name; stringbuf = sbf; line = ln; lineno = 0; if (fcreat(tmp4, obuf) < 0) { printf("Can't creat %s\n", tmp4); dexit(); } while(getline()) { if (ibuf==ibuf2 && pflag==0) putc(001, obuf); /*SOH: insert */ if (ln[0] != '#') for (rlp = line; c = *rlp++;) putc(c, obuf); putc('\n', obuf); } fflush(obuf); close(obuf[0]); close(ibuf1[0]); return(tmp4); } getline() { register int c, sc, state; struct symtab *np; char *namep, *filname; if (ibuf==ibuf1) lineno++; lp = line; *lp = '\0'; state = 0; if ((c=getch()) == '#') state = 1; while (c!='\n' && c!='\0') { if ('a'<=c && c<='z' || 'A'<=c && c<='Z' || c=='_') { namep = lp; sch(c); while ('a'<=(c=getch()) && c<='z' ||'A'<=c && c<='Z' ||'0'<=c && c<='9' ||c=='_') sch(c); sch('\0'); lp--; np = lookup(namep, state); if (state==1) { if (np==defloc) state = 2; else if (np==incloc) state = 3; else { error("Undefined control"); while (c!='\n' && c!='\0') c = getch(); return(c); } } else if (state==2) { np->value = stringbuf; while ((c=getch())!='\n' && c!='\0') savch(c); savch('\0'); return(1); } continue; } else if ((sc=c)=='\'' || sc=='"') { sch(sc); filname = lp; instring++; while ((c=getch())!=sc && c!='\n' && c!='\0') { sch(c); if (c=='\\') sch(getch()); } instring = 0; if (state==3) { *lp = '\0'; while ((c=getch())!='\n' && c!='\0'); if (ibuf==ibuf2) error("Nested 'include'"); if (fopen(filname, ibuf2)<0) error("Missing file %s", filname); else ibuf = ibuf2; return(c); } } sch(c); c = getch(); } sch('\0'); if (state>1) error("Control syntax"); return(c); } error(s, x) { printf("%d: ", lineno); printf(s, x); putchar('\n'); exfail++; cflag++; } sch(c) { register char *rlp; rlp = lp; if (rlp==line+194) error("Line overflow"); *rlp++ = c; if (rlp>line+195) rlp = line+195; lp = rlp; } savch(c) { *stringbuf++ = c; } getch() { static peekc; register int c; if (peekc) { c = peekc; peekc = 0; return(c); } loop: if ((c=getc1())=='/' && !instring) { if ((peekc=getc1())!='*') return('/'); peekc = 0; for(;;) { c = getc1(); cloop: switch (c) { case '\0': return('\0'); case '*': if ((c=getc1())=='/') goto loop; goto cloop; case '\n': if (ibuf==ibuf1) { putc('\n', obuf); lineno++; } continue; } } } return(c); } getc1() { register c; if ((c = getc(ibuf)) < 0 && ibuf==ibuf2) { close(ibuf2[0]); ibuf = ibuf1; putc('\n', obuf); c = getc1(); } if (c<0) return(0); return(c); } lookup(namep, enterf) char *namep; { register char *np, *snp; register struct symtab *sp; int i, c; np = namep; i = 0; while (c = *np++) i =+ c; i =% symsiz; sp = &symtab[i]; while (sp->name[0]) { snp = sp; np = namep; while (*snp++ == *np) if (*np++ == '\0' || np==namep+8) { if (!enterf) subst(namep, sp); return(sp); } if (sp++ > &symtab[symsiz]) sp = symtab; } if (enterf) { snp = namep; for (np = &sp->name[0]; np < &sp->name[8];) if (*np++ = *snp) snp++; } return(sp); } subst(np, sp) char *np; struct symtab *sp; { register char *vp; lp = np; if ((vp = sp->value) == 0) return; sch(' '); while (*vp) sch(*vp++); sch(' '); } getsuf(as) char as[]; { register int c; register char *s; register int t; s = as; c = 0; while(t = *s++) if (t=='/') c = 0; else c++; s =- 3; if (c<=14 && c>2 && *s++=='.') return(*s); return(0); } setsuf(as, ch) char as[]; { register char *s; s = as; while(*s++); s[-2] = ch; return(as); } callsys(f, v) char f[], *v[]; { int t, status; if ((t=fork())==0) { execv(f, v); printf("Can't find %s\n", f); exit(1); } else if (t == -1) { printf("Try again\n"); return(1); } while(t!=wait(&status)); if ((t=(status&0377)) != 0 && t!=14) { if (t!=2) /* interrupt */ printf("Fatal error in %s\n", f); dexit(); } return((status>>8) & 0377); } copy(as) char as[]; { register char *otsp, *s; otsp = tsp; s = as; while(*tsp++ = *s++); return(otsp); } nodup(l, os) char **l, *os; { register char *t, *s; register int c; s = os; if (getsuf(s) != 'o') return(1); while(t = *l++) { while(c = *s++) if (c != *t++) break; if (*t++ == '\0') return(0); s = os; } return(1); } cunlink(f) char *f; { if (f==0) return(0); return(unlink(f)); }     /* C debugger */ int fcore; int fsym; int symoff; char *lp; int errflg; int symlen; int symct; char symbol[8]; int symflg; int symval; char ssymbol[8]; int ssymflg; int ssymval; char line[128]; int regbuf[512]; char **uuusp; char *usize; char **uregs; char *textsize; int pc -2; int r5 -9; int dot; int tdot; int dotinc 2; int lastcom '/'; main(argc, argv) char **argv; { char *corfil, *symfil; if (argc<2) corfil = "core"; else corfil = argv[1]; if (argc<3) symfil = "a.out"; else symfil = argv[2]; if ((fcore = open(corfil, 0)) < 0) { printf("%s not found\n", corfil); return; } if ((fsym = open(symfil, 0)) < 0) { printf("%s not found\n", symfil); return; } read(fsym, regbuf, 020); if (regbuf[0]==0410) textsize = regbuf[1]; else if (regbuf[0] != 0407) { /* magic */ printf("Bad format: %s\n", symfil); return; } symoff = regbuf[1] + regbuf[2]; symlen = regbuf[4]; if (regbuf[7] != 1) symoff =<< 1; symoff =+ 020; fstat(fcore, regbuf); usize = regbuf[5]-1024; read(fcore, regbuf, 1024); uuusp = ®buf[512-6]; uregs = ®buf[512]; setexit(); loop: if (errflg) { printf("?\n"); errflg = 0; } lp = line; while ((*lp = getchar()) != '\n') if (*lp++ == '\0') return; lp = line; command(); goto loop; } command() { int adrflg, n; adrflg = expr(); if (errflg) return; n = getcnt(); if (*lp == '\n') { if (!adrflg) dot =+ dotinc; } else lastcom = *lp++; if (*lp != '\n') { errflg++; return; } if (adrflg) dot = tdot; while(n) { scommand(); if (--n) dot =+ dotinc; } } scommand() { int w, c; switch(lastcom) { case '/': printf("%o\n", cget(dot)); dotinc = 2; return; case '=': printf("%o\n", dot); return; case '\'': printc(cget(dot) & 0377); putchar('\n'); dotinc = 1; return; case '"': w = cget(dot); while(c = cget(w++)&0377) printc(c); putchar('\n'); return; case '&': vallook(cget(dot)); if (errflg) reset(); for (c=0; c<8; c++) printf("%c", ssymbol[c]); return; case '$': printtrace(); return; } } getcnt() { int t1, t2; if (*lp != ',') return(1); lp++; t1 = tdot; if (expr() == 0) { tdot = t1; return(1); } t2 = tdot; tdot = t1; return(t2); } cget(n) { int w; w = get(n); if (errflg) reset(); return(w); } printc(c) { if (c<' ' || c>'}') printf("\\%o", c); else printf("%c", c); } expr() { char tsym[10]; int i, t1, t2, donef, adrflg, lastop, b; tdot = 0; adrflg = 0; lastop = '+'; ssymval = 0; donef = 0; loop: if (*lp >= 'a' && *lp <= 'z' || *lp=='_') { i = 0; tsym[i++] = '_'; adrflg++; while(*lp>='a'&&*lp<='z' || *lp>='0'&&*lp<='9' || *lp=='_') { if (i < 8) tsym[i++] = *lp; lp++; } while (i<8) tsym[i++] = '\0'; if (symlook(tsym) == 0) { errflg++; reset(); } goto loop; } if (*lp>='0' && *lp<='9') { adrflg++; ssymval = 0; if (*lp == '0') b = 8; else b = 10; while (*lp>='0' && *lp<='9') { ssymval =* b; ssymval =+ *lp++ -'0'; } goto loop; } switch (*lp) { default: donef++; case '+': case '-': switch(lastop) { case '+': tdot =+ ssymval; goto op; case '-': tdot =- ssymval; op: if (donef) return(adrflg); else lastop = *lp++; } goto loop; case ' ': case '\t': lp++; goto loop; case '[': lp++; t1 = ssymval; t2 = tdot; if (expr() == 0) tdot = 0; ssymval = get(t1 + (tdot<<1)); if (errflg) reset(); tdot = t2; if (*lp == ']') lp++; goto loop; } } printtrace() { int tpc, tr5, narg, argp, i; tpc = uregs[pc]; tr5 = uregs[r5]; if (symlook("savr5")) if (narg = get(ssymval)) tr5 = narg; while (errflg == 0) { narg = findroutine(tpc, tr5); for (i=0; i<8; i++) printf("%c", ssymbol[i]); printf("("); if (--narg >= 0) printf("%o", get(tr5+4)); argp = tr5+4; while(--narg >= 0) printf(",%o", get(argp =+ 2)); printf(")\n"); tpc = get(tr5+2); if ((tr5 = get(tr5)) == 0) break; } } findroutine(rpc, rr5) { int callpt, inst, narg; callpt = get(rr5+2); if ((inst=get(callpt-4)) == 04737) /* jsr pc,*$... */ narg = 1; else if ((inst&~077)==04700) /* jsr pc,... */ narg = 0; else { errflg++; return(0); } vallook((inst==04767?callpt:0) + get(callpt-2)); inst = get(callpt); if (inst == 05726) /* tst (sp)+ */ return(narg+1); if (inst == 022626) /* cmp (sp)+,(sp)+ */ return(narg+2); if (inst == 062706) /* add $n,sp */ return(narg+get(callpt+2)/2); return(narg); } symlook(symstr) char *symstr; { symset(); while(symget()) { if (eqstr(symbol, symstr)) { savsym(); return(1); } } return(0); } eqstr(as1, as2) int *as1, *as2; { register int *s1, *s2, *es1; s1 = as1; s2 = as2; for (es1 = s1+4; s1 < es1; ) if (*s1++ != *s2++) return(0); return(1); } vallook(value) { symset(); while(symget()) if (symval == value && (symflg&037) == 2) { savsym('_'); return; } errflg++; } get(addr) char *addr; { int w; w = 0; if (addr < textsize) { seek(fsym, addr+020, 0); if (read(fsym, &w, 2) != 2) errflg++; return(w); } if (addr >= *uuusp) addr =+ usize; else addr =- (textsize+017777) & ~017777; seek(fcore, addr+1024, 0); if (read(fcore, &w, 2) < 2) errflg++; return(w); } symset() { symct = symlen; seek(fsym, symoff, 0); } symget() { if ((symct =- 12) < 0) return(0); return(read(fsym, symbol, 12) == 12); } savsym(skip) { int ch; char *p, *q; p = symbol; q = ssymbol; while (p1 && *argv[1] == '-') { argc--; argv++; arg = *argv; while(*arg) switch(*arg++) { case 'u': uflg++; case 'l': lflg++; continue; case 's': sflg++; continue; case 'i': dlist[ndlist++] = number(argv[1]); argc--; argv++; continue; case 'b': blist[nblist++] = number(argv[1]); argc--; argv++; continue; case 'g': great = number(argv[1]); argc--; argv++; continue; } } if (lflg) sflg = 0; fout = dup(1); argc--; argv++; fprintf("%s:\n", argv[0]); check(argv[0]); flush(); close(fout); fout = 1; if(argc > 1) execv("/bin/check", argv); } check(file) char *file; { struct inode buf[16]; register i, j; int compar(), cintr(); struct fname *dnp; fi = open(file, 0); if(fi < 0) { fprintf("cannot open %s\n", file); return; } sync(); bread(1, &sblock); if (lflg) { if(uflg) { ucnt = sbrk(sblock.s_isize*2); if(bad(ucnt)) return; } else { lfdes = creat(lfile, 0666); if ((signal(2, 1) & 01) == 0) signal(2, cintr); } dn = edn = sbrk(101*6); if(bad(dn)) return; } else { bmap = sbrk(8192); icnt = sbrk(sblock.s_isize*16); if(bad(bmap) || bad(icnt)) return; } for(i=0; ipnum == 0) { if(dnp->inum != 1) j = 1; continue; } printf("%4l", dnp->inum); if (dnp->inum == i) putchar('l'); else putchar(' '); i = dnp->inum; putchar(' '); if(lflg > 1) pstat(i, buf); pfilename(dnp, 0); if(j) { j = 0; printf("/."); } putchar('\n'); } close(lfdes); unlink(lfile); return; } sync(); bread(1, &sblock); if(sflg) { close(fi); fi = open(file, 1); if(fi < 0) { fprintf("cannot write %s\n", file); return; } sblock.s_nfree = 0; sblock.s_ninode = 0; sblock.s_flock = 0; sblock.s_ilock = 0; sblock.s_fmod = 0; free(0); for(i=sblock.s_fsize-1; i>=sblock.s_isize+2; i--) { ndup = 0; chk(i, "URK", 0); if(ndup == 0) free(i); } bwrite(1, &sblock); close(fi); sync(); return; } while(i = alloc()) { if(chk(i, "free", 0)) break; nfree++; } if(ndup) printf("%l dups in free\n", ndup); ndup = sblock.s_fsize - sblock.s_isize - 2; for(i=0; i<8192; i++) { j = bmap[i]; ndup =+ bitcnt[j&017]; ndup =+ bitcnt[(j>>4)&017]; } if(ndup) printf("%l missing\n", ndup); for(i=0; iicnt[i] & 0377; if(j!=0 && j!=0200) printf("%6l %3o\n", i+1, j); } printf("spcl %6l\n", nspcl); printf("files %6l\n", nfile); printf("large %6l\n", nlarg); printf("direc %6l\n", ndir); printf("indir %6l\n", nindir); printf("used %6l\n", nused); printf("last %6l\n", hiwat); printf("free %6l\n", nfree); close(fi); } cintr() { unlink(lfile); exit(); } compar(p1, p2) struct fname *p1, *p2; { int i; i = p1->inum - p2->inum; if(i) return(i); return(p1->pnum - p2->pnum); } pass1(ip) struct inode *ip; { int buf[256]; register i, j, df; if((ip->i_mode&IALLOC) == 0) return; if(uflg) { i = ldiv(0, ino, 8); ucnt[i] =| 1<icnt[ino-1] =+ 0100; if(ip->i_nlink) icnt->icnt[ino-1] =+ 0100 + ip->i_nlink; } if((ip->i_mode&IFCHR&IFBLK) != 0) { nspcl++; return; } df = 0; if((ip->i_mode&IFMT) == IFDIR) { df = ldiv(ip->i_size0, ip->i_size1, 16); if(lflg && !uflg) { if(--nnf<0) { nnf = 100; edn = sbrk(6*101); if(bad(edn)) lflg = 0; } edn->pnum = 0; edn->inum = ino; edn++; } ndir++; } else if (lflg) return; nfile++; if((ip->i_mode&ILARG) != 0) { nlarg++; for(i=0; i<8; i++) if(ip->i_addr[i] != 0) { nindir++; if(chk(ip->i_addr[i], "idir", 0)) continue; bread(ip->i_addr[i], buf); for(j=0; j<256; j++) if(buf[j] != 0) chk(buf[j], "ldir", df); df =- 32; } return; } for(i=0; i<8; i++) { if(ip->i_addr[i] != 0) chk(ip->i_addr[i], "sdir", df); df =- 32; } } chk(ii, s, df) char *ii; { register char *i; register n, j; int b; int buf[256]; struct { int ino; char name[14]; }; i = ii; for(j=0; j= great && i) fprintf("%l geq; i=%l(%s)\n", i, ino, s); if(ino) { nused++; if(i > hiwat) hiwat = i; } if(i=sblock.s_fsize) { fprintf("%l bad; i=%l(%s)\n", i, ino, s); return(1); } n = ldiv(0, i, 8); if (lflg==0) { j = (1<0) { bread(i, buf); for(n=0; n<256; n=+8) { if(df <= 0) break; df--; if((b=buf[n]) == 0) continue; if (lflg) if(!(buf[n].name[0]=='.' && (buf[n].name[1]=='\0' || (buf[n].name[1]=='.' && buf[n].name[2]=='\0')))) { if (--nnf<0) { nnf = 100; edn = sbrk(6*101); if(bad(edn)) lflg = 0; } edn->pnum = ino; edn->inum = buf[n]; edn->nptr = lfptr; for (j=0; j<14; j++) if(buf[n].name[j] == '\0') break; j++; if(!uflg) write(lfdes, buf[n].name, j); lfptr =+ j; edn++; } for(j=0; j16*sblock.s_isize) { fprintf("%l din; i=%l(%s)\n", i, ino, s); continue; } if (!lflg) icnt->icnt[b-1]--; } } return(0); } pfilename(dp, recur) struct fname *dp; { register struct fname *p; char name[14]; if (++recur > 10) { putchar('.'); putchar('.'); putchar('.'); } else if (dp->pnum != 1) { for (p = dn; pinum==dp->pnum && p->pnum!=0) { pfilename(p, recur); goto yes; } } putchar('?'); putchar('?'); putchar('?'); yes: putchar('/'); } seek(lfdes, dp->nptr, 0); read(lfdes, name, 14); printf("%.14s", name); } pstat(i, buf) { register n, *p; n = ldiv(0, i+31, 16); if(n != bufa) { bufa = n; bread(n, buf); } p = buf + ldivr*32; printf("%4o ", p->i_mode&07777); pdate(p->i_atime); pdate(p->i_mtime); } pdate(t) int *t; { register *p; p = localtime(t); p2dig(p[5], '/'); p2dig(p[4]+1, '/'); p2dig(p[3], ' '); p2dig(p[2], ':'); p2dig(p[1], ' '); } p2dig(n, c) { putchar(n/10 + '0'); putchar(n%10 + '0'); putchar(c); } alloc() { register b, i; int buf[256]; i = --sblock.s_nfree; if(i<0 || i>=100) { fprintf("bad freeblock\n"); return(0); } b = sblock.s_free[i]; if(b == 0) return(0); if(sblock.s_nfree <= 0) { bread(b, buf); sblock.s_nfree = buf[0]; for(i=0; i<100; i++) sblock.s_free[i] = buf[i+1]; } return(b); } bread(bno, buf) { seek(fi, bno, 3); if(read(fi, buf, 512) != 512) { fprintf("read error %d\n", bno); exit(); } } free(in) { int i; int buf[256]; if(sblock.s_nfree >= 100) { buf[0] = sblock.s_nfree; for(i=0; i<100; i++) buf[i+1] = sblock.s_free[i]; sblock.s_nfree = 0; bwrite(in, buf); } sblock.s_free[sblock.s_nfree++] = in; } bwrite(bno, buf) { seek(fi, bno, 3); if(write(fi, buf, 512) != 512) { fprintf("write error %d\n", bno); exit(); } } number(s) char *s; { int n, c; n = 0; while(c = *s++) { if(c<'0' || c>'9') continue; n = n*10+c-'0'; } return(n); } fprintf(a, b, c, d, e) { printf(a, b, c, d, e); flush(); } bad(f) { if(f == -1) { fprintf("out of memory\n"); return(1); } return(0); } trace(ii, r) { register struct fname *p; register i, j; i = ii; r++; if(r > 10) return(0); for(p=dn; pinum == i) { j = p->pnum; if(j == 0 || j == 1) return(j); if(trace(j, r) == 1) { setpn(j, 1); return(1); } } setpn(i, 0); return(0); } setpn(pn, n) { register struct fname *p; register i, j; i = pn; j = n; for(p=dn; ppnum == i) p->pnum = j; } ()*+,-./0123456789:main(argc, argv) char **argv; { register i, m; register char *c; int count; if(argc < 3) { printf("arg count\n"); exit(1); } c = argv[1]; m = 0; for(m=0; *c; c++) { if(*c < '0' || *c > '7') { printf("bad mode\n"); exit(1); } m = (m<<3) | *c - '0'; } for(i=2; i; .even 1: add $4,r5 mov (r5),r3 cmpb (r3),$'0 blt 1f cmpb (r3),$'9 bgt 1f jsr r5,cvnum; geta br do 1: mov $uids,r0 jsr r5,fopen; ubuf bec 1f jsr r5,mesg; ; .even sys exit 1: mov r3,r2 2: jsr r5,getc; ubuf bcc 3f who: jsr r5,mesg; ; .even sys exit 3: cmp r0,$': beq 3f cmpb (r2)+,r0 beq 2b 2: jsr r5,getc; ubuf bcs who cmp r0,$'\n bne 2b br 1b 3: tstb (r2) bne 2b 3: jsr r5,getc; ubuf cmpb r0,$': bne 3b jsr r5,cvnum; getc do: sub $2,r4 mov r1,0f+2 tst (r5)+ 1: mov (r5)+,0f sys chown; 0:..; 0 bec 2f mov 0b,r0 mov r0,0f clr 0f+2 3: tstb (r0)+ beq 3f inc 0f+2 br 3b 3: mov $1,r0 sys write; 0:..; .. jsr r5,mesg; ; .even 2: dec r4 bgt 1b sys exit cvnum: clr r1 1: jsr r5,*(r5); ubuf bcs 1f sub $'0,r0 cmp r0,$9. bhi 1f mpy $10.,r1 add r0,r1 br 1b 1: tst (r5)+ rts r5 geta: movb (r3)+,r0 tst (r5)+ rts r5 uids: .bss ubuf: .=.+518. / clri -- clear inode cmp (sp)+,$2 blt error beq 1f mov 4(sp),fs1 mov 4(sp),fs2 1: tst (sp)+ mov (sp)+,r0 clr r5 1: movb (r0)+,r1 beq 1f mpy $10.,r5 sub $'0,r1 cmp r1,$10. bhis error add r1,r5 br 1b 1: add $31.,r5 mov r5,r0 als $-4,r0 mov r0,0f sys open; fs1: filsys; 0 bes error mov r0,-(sp) sys seek; 0:..; 3 mov (sp),r0 sys read; buf; 512. mov (sp)+,r0 sys close mov r5,r0 als $5,r0 bic $!777,r0 add $buf,r0 mov $16.,r5 1: clr (r0)+ sob r5,1b sys open; fs2: filsys; 1 bes error mov r0,-(sp) mov 0b,0f sys seek; 0:..; 3 mov (sp)+,r0 sys write; buf; 512. bes error sys exit error: mov $1,r0 sys write; 1f; 2f-1f sys exit 1: 2: filsys: .even .bss buf: .=.+512. / cmp -- compare files cmp (sp)+,$3 beq 1f jsr r5,mesg; ; .even sys exit 1: tst (sp)+ mov (sp)+,0f sys open; 0:..; 0 bec 1f jsr r5,mesg; ; .even sys exit 1: mov r0,f1 mov (sp)+,0f sys open; 0:..; 0 bec 1f jsr r5,mesg; ; .even sys exit 1: mov r0,f2 clr r2 1: jsr r5,getw; f1 bvs eof1 mov r0,r3 jsr r5,getw; f2 bvs eof2 cmp r0,r3 beq 2f mov r0,r4 mov r2,r0 jsr pc,octal jsr r5,mesg; <: \0>; .even mov r3,r0 jsr pc,octal jsr r5,mesg; < \0>; mov r4,r0 jsr pc,octal jsr r5,mesg; <\n\0> 2: add $2,r2 br 1b eof1: jsr r5,getw; f2 bvs 1f jsr r5,mesg; ; .even sys exit 1: sys exit eof2: jsr r5,mesg; ; .even sys exit mesg: movb (r5)+,ch beq 1f mov $1,r0 sys write; ch; 1 br mesg 1: inc r5 bic $1,r5 rts r5 getw: mov (r5)+,r1 cmp 2(r1),$1 bne 1f mov *4(r1),r0 bic $!377,r0 dec 2(r1) rts r5 1: sub $2,2(r1) bge 1f mov (r1),r0 mov r1,0f add $6,0f sys read; 0:..; 512. mov r0,2(r1) bne 2f sev rts r5 2: mov r1,4(r1) add $6,4(r1) sub $2,2(r1) 1: mov *4(r1),r0 add $2,4(r1) rts r5 octal: mov r4,-(sp) mov r0,r5 mov $6,-(sp) 1: clr r4 alsc $1,r4 cmp (sp),$6 beq 2f alsc $2,r4 2: add $'0,r4 mov r4,ch mov $1,r0 sys write; ch; 1 dec (sp) bne 1b tst (sp)+ mov (sp)+,r4 rts pc .bss ch: .=.+2 f1: .=.+6; .=.+512. f2: .=.+6; .=.+512. int one; int two; int three; char *ldr[3] {"", "\t", "\t\t" }; char ib1[518]; char ib2[518]; main(argc,argv) char *argv[]; { extern fout; int l; char lb1[80],lb2[80]; if(argc > 1) { if(*argv[1] == '-') { l = 1; while(*++argv[1]) { switch(*argv[1]) { case'1': if(!one) { one = 1; ldr[1][0] = ldr[2][l--] = '\0'; } break; case '2': if(!two) { two = 1; ldr[2][l--] = '\0'; } break; case '3': three = 1; break; default: printf("Illegal flag: %c\n",*argv[1]); exit(); } } argv++; argc--; } } if(argc < 3) { printf("Argc = %d\n",argc); exit(); } if(fopen(argv[1],ib1) < 0) { printf("Can't open %s\n",argv[1]); exit(); } if(fopen(argv[2],ib2) < 0) { printf("Can't open %s\n",argv[2]); exit(); } if(rd(ib1,lb1) < 0) { if(rd(ib2,lb2) < 0) exit(); copy(ib2,lb2,2); } if(rd(ib2,lb2) < 0) copy(ib1,lb1,1); while(1) { switch(compare(lb1,lb2)) { case 0: wr(lb1,3); if(rd(ib1,lb1) < 0) { if(rd(ib2,lb2) < 0) fexit(); copy(ib2,lb2,2); } if(rd(ib2,lb2) < 0) copy(ib1,lb1,1); continue; case 1: wr(lb1,1); if(rd(ib1,lb1) < 0) copy(ib2,lb2,2); continue; case 2: wr(lb2,2); if(rd(ib2,lb2) < 0) copy(ib1,lb1,1); continue; } } } rd(file,buf) char *buf; { buf--; while((*++buf = getc(file)) >= 0) if(*buf == '\n') { *buf = '\0'; return(0); } return(-1); } wr(str,n) char *str; { switch(n) { case 1: if(one) return; break; case 2: if(two) return; break; case 3: if(three) return; } printf("%s%s\n",ldr[n-1],str); } copy(ibuf,lbuf,n) { do { wr(lbuf,n); } while(rd(ibuf,lbuf) >= 0); flush(); exit(); } compare(a,b) char *a,*b; { register char *ra,*rb; ra = --a; rb = --b; while(*++ra == *++rb) if(*ra == '\0') return(0); if(*ra < *rb) return(1); return(2); } fexit() { flush(); exit(); } /* * cp oldfile newfile */ main(argc,argv) char **argv; { int buf[256]; int fold, fnew, n, ct, tell; char *p1, *p2, *bp; int mode; tell = 0; if(argc == 4 && argv[1][0] == '-' && argv[1][1] == 't') { argc--; argv++; tell = 1; } if(argc != 3) { write(1, "Usage: cp oldfile newfile\n", 26); exit(1); } if((fold = open(argv[1], 0)) < 0) { write(1, "Cannot open old file.\n", 22); exit(1); } fstat(fold, buf); mode = buf[2]; if((fnew = creat(argv[2], mode)) < 0){ stat(argv[2], buf); if((buf[2] & 060000) == 040000) { p1 = argv[1]; p2 = argv[2]; bp = buf; while(*bp++ = *p2++); bp[-1] = '/'; p2 = bp; while(*bp = *p1++) if(*bp++ == '/') bp = p2; if((fnew = creat(buf, mode)) < 0) { write(1, "Cannot creat new file.\n", 23); exit(1); } } else { write(1, "Cannot creat new file.\n", 23); exit(1); } } while(n = read(fold, buf, 512)) { if(n < 0) { write(1, "Read error\n", 11); exit(1); } else if(write(fnew, buf, n) != n){ write(1, "Write error.\n", 13); exit(1); } ct++; } if(tell) { conf(ct, 6, buf); buf[3] = '\n'; write(1, buf, 7); } exit(0); } conf(n,width,buf) char *buf; { auto i,a; i = width; while(i--) buf[i] = ' '; buf[(a = n/10)?conf(a,--width,buf):--width] = n%10 + '0'; return(++width); } int timbuf[2]; char *cbp; char *tzname[2]; int dmsize[]; char cbuf[]; char *cbp; struct { char name[8]; char tty; char fill1; int wtime[2]; int fill2; } wtmp[2]; main(argc, argv) int argc, **argv; { register char *tzn; extern int timezone, *localtime(); int wf; if(argc > 1) { cbp = argv[1]; if(gtime()) { write(1, "bad conversion\n", 15); exit(); } /* convert to Greenwich time, on assumption of Standard time. */ dpadd(timbuf, timezone); /* Now fix up to local daylight time. */ if (localtime(timbuf)[8]) dpadd(timbuf, -1*60*60); time(wtmp[0].wtime); wtmp[0].tty = '|'; if(stime(timbuf) < 0) write(1, "no permission\n", 14); if ((wf = open("/usr/adm/wtmp", 1)) >= 0) { time(wtmp[1].wtime); wtmp[1].tty = '}'; seek(wf, 0, 2); write(wf, wtmp, 32); } } time(timbuf); cbp = cbuf; ctime(timbuf); write(1, cbuf, 20); tzn = tzname[localtime(timbuf)[8]]; if (tzn) write(1, tzn, 3); write(1, cbuf+19, 6); } gtime() { register int i; register int y, t; int d, h, m; extern int *localtime(); int nt[2]; t = gpair(); if(t<1 || t>12) goto bad; d = gpair(); if(d<1 || d>31) goto bad; h = gpair(); if(h == 24) { h = 0; d++; } m = gpair(); if(m<0 || m>59) goto bad; y = gpair(); if (y<0) { time(nt); y = localtime(nt)[5]; } if (*cbp == 'p') h =+ 12; if (h<0 || h>23) goto bad; timbuf[0] = 0; timbuf[1] = 0; y =+ 1900; for(i=1970; i100) return(-1); if(*cp == 0) return(-1); if ((d = *cp++ - '0') < 0 || d > 9) return(-1); cbp = cp; return (c+d); } / db1 -- debugger fpp = 1 eae = 0 ldfps = 170100^tst db: mov sp,r5 mov (r5)+,r4 tst (r5)+ cmp r4,$2 blt 1f mov (r5),dbfile mov (r5),odbfil mov (r5)+,namfil cmp r4,$2 beq 1f mov (r5)+,namfil 1: sys open; dbfile: core; 0 bec 9f jmp fnfnd 9: mov r0,dbfin clr dbfout sys open; odbfil:core; 1 bes 1f mov r0,dbfout 1: sys open; namfil: a.out; 0 bes 1f mov r0,r1 sys read; nambuf; 20 cmp nambuf,nobjmagic beq 2f cmp nambuf,objmagic bne 1f 2: mov nambuf+2,r0 / text add nambuf+4,r0 / data cmp nambuf+16,$1 / relocation? beq 6f asl r0 / sym origin 6: add $20,r0 mov r0,0f mov r1,r0 sys seek; 0:..; 0 mov nambuf+10,r0 / symbol size cmp r0,$maxsym blos 3f mov $maxsym,r0 3: add r0,0f sys break; 0: nambuf mov r0,0f mov r1,r0 sys read; nambuf; 0:.. add $nambuf,r0 mov r0,namsiz mov r1,r0 sys close 1: jsr r5,get; zero / test new object cmp r0,nobjmagic beq 2f cmp r0,objmagic bne 1f 2: mov $20,getoff 1: mov sp,savsp sys signal; 2; 1 ror r0 bcs 1f sys signal; 2; errexit 1: cmp r4,$2 / arg count beq 9f / not core image cmp r4,$4 / no-core image flag beq 9f mov $1024.,getoff mov dbfin,r0 sys fstat; regbuf mov regbuf+12,r0 sub $1024.,r0 mov r0,f.size mov dbfin,r0 sys seek; 0; 0 mov dbfin,r0 sys read; regbuf; 1024. mov *locfpsr,r0 bic $!200,r0 mov r0,fpsr br loop 9: loop: clr error jsr pc,readlin jsr pc,readexp tst error bne errexit mov $1,count cmpb r0,$', bne 2f movb (r4)+,r0 mov addres,-(sp) mov adrflg,-(sp) jsr pc,readexp mov addres,count mov (sp)+,adrflg mov (sp)+,addres tst error bne errexit 2: movb (r4),r0 jsr pc,command tst error beq loop errexit: sys signal; 2; errexit mov savsp,sp jsr r5,mesg; ; .even br loop fnfnd: jsr r5,mesg; ; .even ex: sys exit readlin: mov $inbuf,r4 1: mov ttyfin,r0 sys read; ch; 1 tst r0 beq ex cmpb ch,$'\n beq 1f movb ch,(r4)+ br 1b 1: clrb (r4) mov $inbuf,r4 rts pc switch: mov (r5)+,r1 2: cmp r0,(r1)+ bne 1f tst (sp)+ jmp *(r1) 1: tst (r1)+ bne 2b rts r5 readexp: mov $'+,lastop clr addres clr starmod clr taddr clr adrflg nextxp: movb (r4)+,r0 cmp r0,$'0 blt 1f cmp r0,$'9 ble numin cmp r0,$'a blt 1f cmp r0,$'z bgt 1f jmp letin 1: cmp r0,$'a-40 blt 1f cmp r0,$'z-40 ble letin 1: jsr r5,switch; expsw tstb -(r4) tst starmod beq 1f mov dot,taddr br operand 1: rts pc expsw: '+; opex '-; opex ' ; nextxp '.; letin '_; letin '^; circumf '*; star -1; 0 star: mov pc,starmod br nextxp operand: inc adrflg tst starmod beq 1f clr starmod bis bytemod,error jsr r5,get; taddr tst error bne 1f mov r0,taddr 1: cmp lastop,$'+ beq 1f sub taddr,addres br 2f 1: add taddr,addres 2: mov $'+,lastop br nextxp circumf: mov dot,taddr dec taddr tst bytemod bne operand dec taddr br operand numin: clr r1 clr r3 1: sub $'0,r0 asl r1 asl r1 asl r1 mpy $10.,r3 bis r0,r1 add r0,r3 movb (r4)+,r0 cmp r0,$'0 blo 1f cmp r0,$'9 blos 1b 1: cmp r0,$'. bne 1f mov r3,r1 inc r4 1: mov r1,taddr dec r4 br operand letin: dec r4 mov $nambuf,namstrt letin1: mov $symbol,r1 clr (r1)+ clr (r1)+ clr (r1)+ clr (r1) mov $symbol,r1 mov $8.,-(sp) br 2f 1: tstb (r4)+ cmpb (r4),$'. beq 2f cmpb (r4),$'0 blo 3f cmpb (r4),$'9 blos 2f cmpb (r4),$'A blo 3f cmpb (r4),$'Z blos 2f cmpb (r4),$'_ beq 2f cmpb (r4),$'a blo 3f cmpb (r4),$'z bhi 3f 2: dec (sp) blt 1b movb (r4),(r1)+ br 1b 3: tst (sp)+ jsr pc,lookupn tst error bne 1f cmpb (r4),$'; beq 2f 1: jmp operand 2: tstb (r4)+ mov r1,namstrt br letin1 opex: mov r0,lastop jmp nextxp command: jsr r5,switch; comsw inc error rts pc comsw: '/; slash '\\; bslash '?; quest '\0; newln '^; circumf '=; equal ':; colon '!; excla ''; squote '"; dquote '$; dolr '&; amper '%; ex '`; grave -1; 0 dolr: / mov *locps,r1 / bic $!17,r1 / asl r1 / mov traptab(r1),r1 / jsr pc,string / jsr pc,pnl mov $doltab,r5 1: mov (r5)+,r1 beq 1f jsr pc,*(r5)+ br 1b .if fpp 1: mov (r5)+,r1 beq 1f ldfps fpsr jsr pc,*(r5)+ br 1b 1: mov (r5)+,r1 jsr pc,*(r5)+ .endif 1: rts pc traptab: 1f; .data; 1:; .text 1f; .data; 1:; .text 1f; .data; 1:; .text 1f; .data; 1:; .text 1f; .data; 1:; .text 1f; .data; 1:; .text 1f; .data; 1:; .text 1f; .data; 1:; .text 1f; .data; 1:; .text 1f; .data; 1:; .text 1f; .data; 1:; .text 1f; .data; 1:; .text 1f; .data; 1:; .text 1f; .data; 1:; .text 1f; .data; 1:; .text 1f; .data; 1:; .text locps: regbuf+1776 locpc: regbuf+1774 locr0: regbuf+1772 locr1: regbuf+1766 locr2: regbuf+1750 locr3: regbuf+1752 locr4: regbuf+1754 locsp: regbuf+1764 locr5: regbuf+1756 locfpsr: regbuf+4 locfr0: regbuf+6 locfr4: regbuf+16 locfr5: regbuf+26 locfr1: regbuf+36 locfr2: regbuf+46 locfr3: regbuf+56 doltab: 1f; prgreg; locsp; .data; 1:; .text 1f; proct; locps; .data; 1:; .text 1f; prgreg; locpc; .data; 1:; .text 1f; prgreg; locr0; .data; 1:; .text 1f; prgreg; locr1; .data; 1:; .text 1f; prgreg; locr2; .data; 1:; .text 1f; prgreg; locr3; .data; 1:; .text 1f; prgreg; locr4; .data; 1:; .text 1f; prgreg; locr5; .data; 1:; .text 0 .if fpp 1f; prfreg; locfr0; .data; 1:; .text 1f; prfreg; locfr1; .data; 1:; .text 1f; prfreg; locfr2; .data; 1:; .text 1f; prfreg; locfr3; .data; 1:; .text 1f; prfreg; locfr4; .data; 1:; .text 1f; prfreg; locfr5; .data; 1:; .text 0 1f; proct; locfpsr; .data; 1:; .text .endif .data .even .text .if fpp prfreg: mov *(r5)+,r4 movf (r4),fr0 cfcc beq 1f jsr pc,string jsr pc,printf jsr pc,pnl 1: rts pc .endif prgreg: jsr pc,string mov *(r5)+,r4 mov (r4),r0 jsr pc,printo mov (r4),r0 jsr pc,lookupv tst r2 beq 1f jsr r5,mesg; < \0>; .even mov (r4),r0 jsr pc,pname 1: jsr pc,pnl rts pc proct: jsr pc,string mov *(r5)+,r4 mov (r4),r0 jsr pc,printo jsr pc,pnl rts pc string: movb (r1)+,r0 beq 1f jsr pc,putc br string 1: rts pc putc: mov r0,och mov $1,r0 sys write; och; 1 rts pc equal: jsr r5,coleq; printo rts pc amper: clr bytemod mov $2,incdot jsr r5,cycle; asymp rts pc asymp: jsr pc,pname jsr pc,pnl rts pc bslash: inc bytemod mov $1,incdot br 1f slash: clr bytemod mov $2,incdot 1: jsr r5,cycle; octp rts pc grave: clr bytemod mov $2,incdot jsr r5,cycle; decp rts pc quest: clr bytemod jsr r5,cycle; psym rts pc decp: jsr pc,printd jsr r5,mesg; <.\n\0>; .even rts pc octp: jsr pc,printo jsr pc,pnl rts pc newln: tst adrflg bne 1f add incdot,dot 1: mov nlcom,r0 jmp command excla: tst adrflg bne 1f 2: inc error rts pc 1: bit $1,dot beq 1f tst bytemod beq 2b 1: jsr r5,put; dot; addres rts pc squote: inc bytemod mov $1,incdot br 2f dquote: clr bytemod mov $2,incdot 2: jsr r5,cycle; ascp rts pc ascp: mov r0,-(sp) jsr pc,ascp1 mov (sp)+,r0 tst bytemod bne 1f swab r0 jsr pc,ascp1 1: cmp count,$1 bgt 1f jsr pc,pnl 1: rts pc ascp1: bic $!377,r0 cmp r0,$'\n beq 2f cmp r0,$011 beq 2f cmp r0,$40 blo 1f cmp r0,$177 bhis 1f 2: jsr pc,putc rts pc 1: mov r0,r1 jsr r5,mesg; <\\\0> clr r0 alsc $10.,r0 add $'0,r0 jsr pc,putc clr r0 alsc $3,r0 add $'0,r0 jsr pc,putc clr r0 alsc $3,r0 add $'0,r0 jsr pc,putc rts pc colon: jsr r5,coleq; pname rts pc coleq: jsr pc,setadr mov addres,r0 jsr pc,*(r5)+ jsr pc,pnl rts r5 cycle: mov r0,nlcom jsr pc,setadr mov addres,dot tst bytemod bne 1f bic $1,dot 1: jsr r5,get; dot tst error bne 1f tst bytemod beq 2f bic $!377,r0 2: jsr pc,*(r5) tst error bne 1f dec count ble 1f add incdot,dot br 1b 1: tst (r5)+ rts r5 setadr: tst adrflg bne 1f mov dot,addres 1: rts pc .if fpp printf: ldfps $200 / round+double mov r4,-(sp) mov r3,-(sp) movif $10.,r3 movif $1,r2 clr r4 tstf r0 cfcc beq 2f bge 1f negf r0 mov $'-,r0 jsr pc,putc 1: cmpf r3,r0 cfcc bgt 1f inc r4 divf r3,r0 br 1b 1: cmpf r2,r0 cfcc ble 2f dec r4 mulf r3,r0 br 1b 2: modf r2,r0 movfi r1,r0 add $'0,r0 jsr pc,putc mov $'.,r0 jsr pc,putc mov $8.,r3 1: modf r3,r0 movfi r1,r0 add $'0,r0 jsr pc,putc dec r3 bgt 1b mov $'E,r0 jsr pc,putc mov r4,r0 mov (sp)+,r3 mov (sp)+,r4 br printd .endif printd: mov r1,-(sp) mov r0,r1 bpl 1f neg r1 mov $'-,r0 jsr pc,putc 1: jsr pc,1f mov (sp)+,r1 rts pc 1: clr r0 dvd $10.,r0 mov r1,-(sp) mov r0,r1 beq 1f jsr pc,1b 1: mov (sp)+,r0 add $'0,r0 jsr pc,putc rts pc QRSTUVWXYZ[\]^_`a/ db2 -- debugger lookupn: cmp symbol,$'. bne 1f mov dot,taddr rts pc 1: tst error beq 1f rts pc 1: mov r2,-(sp) mov $regnames,r1 mov $ereg,r2 jsr pc,1f tst error beq 2f clr error mov namstrt,r1 mov namsiz,r2 jsr pc,1f 2: mov (sp)+,r2 rts pc 1: mov $symbol,r0 cmp (r0)+,(r1)+ bne 2f cmp (r0)+,(r1)+ bne 3f cmp (r0)+,(r1)+ bne 4f cmp (r0)+,(r1)+ bne 5f tst (r1)+ mov (r1)+,taddr rts pc 2: tst (r1)+ 3: tst (r1)+ 4: tst (r1)+ 5: cmp (r1)+,(r1)+ cmp r1,r2 blo 1b inc error clr taddr rts pc lookupv: mov r5,-(sp) mov $nambuf,r5 clr r2 mov $177777,r3 1: cmp r5,namsiz bhis 4f mov 12(r5),r1 sub r0,r1 neg r1 blt 3f cmp r1,r3 bhi 3f cmp r1,$4000 bhis 3f cmp r2,r5 bhi 3f mov r1,r3 mov r5,r2 3: add $14,r5 br 1b 4: mov (sp)+,r5 rts pc get: mov *(r5)+,r0 jsr r5,remap br 3f mov r0,0f mov dbfin,r0 sys seek; 0:0; 0 bec 1f 2: inc error rts r5 1: mov dbfin,r0 sys read; temp; 2 bes 2b tst r0 beq 2b mov temp,r0 rts r5 3: clr -(sp) movb (r0),(sp) movb 1(r0),1(sp) mov (sp)+,r0 rts r5 remap: cmp getoff,$1024. bne 1f cmp r0,*locsp blo 1f add f.size,r0 1: add getoff,r0 tst (r5)+ rts r5 2: inc error rts r5 printo: mov $obuf+6,r1 clr r2 1: inc r2 movb r0,-(r1) bicb $!7,(r1) bisb $'0,(r1) clc ror r0 asr r0 asr r0 bne 1b mov r2,0f+2 mov r1,0f mov $1,r0 sys write; 0:obuf; 6 rts pc mesg: movb (r5)+,r0 beq 1f jsr pc,putc br mesg 1: inc r5 bic $1,r5 rts r5 pnl: jsr r5,mesg; <\n\0> rts pc psp: jsr r5,mesg; < \0> rts pc pstar: jsr r5,mesg; <*\0> rts pc plp: jsr r5,mesg; <(\0> rts pc prp: jsr r5,mesg; <)\0> rts pc pb: jsr r5,mesg; rts pc pcom: jsr r5,mesg; <,\0> rts pc put: mov *(r5)+,r0 jsr r5,remap br 3f mov r0,0f mov dbfout,r0 bne 1f 2: tst (r5)+ 3: inc error rts r5 1: tst error bne 3b sys seek; 0:0; 0 bes 2b mov (r5)+,0f mov dbfout,r0 tst bytemod beq 1f mov $1,0f+2 br 2f 1: mov $2,0f+2 2: sys write; 0:0; 2 bes 3b rts r5 decodadr: mov r0,r3 mov r3,-(sp) bic $!10,(sp) bic $!7,r0 cmp r0,$7 beq pcadr 7: mov r3,r0 asr r0 asr r0 asr r0 bic $!6,r0 jmp *1f(r0) 1: simp incr decr indx simp: tst (sp) beq 1f jsr pc,plp 1: jsr pc,preg tst (sp)+ beq 9f jsr pc,prp br 9f incr: tst (sp)+ beq 1f jsr pc,pstar 1: jsr pc,plp jsr pc,preg jsr r5,mesg; <)+\0>; .even br 9f decr: tst (sp)+ beq 1f jsr pc,pstar 1: jsr r5,mesg; <-(\0>; .even jsr pc,preg jsr pc,prp br 9f indx: tst (sp)+ beq 1f jsr pc,pstar 1: jsr pc,get1 jsr pc,pname jsr pc,plp jsr pc,preg jsr pc,prp br 5f pcadr: mov r3,r0 bit $20,r3 beq 7b tst (sp)+ beq 1f jsr pc,pstar 1: bit $40,r3 bne 6f jsr r5,mesg; <$\0> jsr pc,get1 jsr pc,pname br 5f 6: jsr pc,get1 add $2,r0 add r1,r0 mov $3,r1 jsr pc,pname br 5f 9: tst (r5)+ clr r0 rts r5 5: mov $2,r0 rts r5 preg: mov r3,r0 bic $!7,r0 asl r0 mov regtab(r0),obuf mov $1,r0 sys write; obuf; 2 rts pc regtab: "r0 "r1 "r2 "r3 "r4 "r5 "sp "pc pname: mov r5,-(sp) mov r3,-(sp) mov r1,-(sp) jsr pc,lookupv tst r2 beq 5f cmp (sp),$1 bne 1f tst r3 bne 5f 1: mov r2,r1 mov $8,-(sp) mov r0,r5 1: movb (r1)+,r0 beq 1f jsr pc,putc dec (sp) bne 1b 1: tst (sp)+ cmp 12(r2),r5 beq 1f blt 2f jsr r5,mesg; <-\0> br 3f 2: jsr r5,mesg; <+\0> 3: mov r3,r0 5: jsr pc,printo 1: tst (sp)+ mov (sp)+,r3 mov (sp)+,r5 rts pc get1: mov *(r5)+,r1 add $2,r1 mov r1,temp jsr r5,get; temp rts pc / db3 -- debugger psym: mov $2,incdot jsr pc,prints jsr pc,pnl rts pc prints: mov r0,-(sp) mov $optab,r1 1: mov (sp),r0 bic (r1)+,r0 cmp (r1)+,r0 bne 2f mov (r1)+,-(sp) jsr pc,string jmp *(sp)+ 2: add $8.,r1 br 1b optab: 107777; 010000; double; 107777; 020000; double; 107777; 030000; double; 107777; 040000; double; 107777; 050000; double; 007777; 060000; double; 007777; 160000; double; 100077; 005000; single; 100077; 005100; single; 100077; 005200; single; 100077; 005300; single; 100077; 005400; single; 100077; 005500; single; 100077; 005600; single; 100077; 005700; single; 100077; 006000; single; 100077; 006100; single; 100077; 006200; single; 100077; 006300; single; 000077; 000100; single; 000077; 000300; single; 000077; 170100; singlw; 000077; 170200; singlw; 000077; 170300; singlw; 000077; 170400; singlw; 000077; 170500; singlw; 000077; 170600; singlw; 000077; 170700; singlw; 000077; 006700; singlw; 000077; 006600; singlw; 000077; 106600; singlw; 000077; 006500; singlw; 000077; 106500; singlw; 000777; 070000; muldiv; 000777; 071000; muldiv; 000777; 072000; muldiv; 000777; 073000; muldiv; 000377; 000400; branch; 000377; 001000; branch; 000377; 001400; branch; 000377; 002000; branch; 000377; 002400; branch; 000377; 003000; branch; 000377; 003400; branch; 000377; 100000; branch; 000377; 100400; branch; 000377; 101000; branch; 000377; 101400; branch; 000377; 102000; branch; 000377; 102400; branch; 000377; 103000; branch; 000377; 103400; branch; 000000; 000000; noaddr; 000000; 000001; noaddr; 000000; 000002; noaddr; 000000; 000004; noaddr; 000000; 000005; noaddr; 000377; 171000; fltrev; 000377; 171400; fltrev; 000377; 172000; fltrev; 000377; 172400; fltrev; 000377; 173000; fltrev; 000377; 173400; fltrev; 000377; 174000; fltnor; 000377; 174400; fltrev; 000377; 175000; fltnor; 000377; 175400; fltnor; 000377; 176000; fltnor; 000377; 176400; fltrev; 000377; 177000; fltrev; 000377; 177400; fltrev; 000000; 170000; noaddr; 000000; 170001; noaddr; 000000; 170002; noaddr; 000000; 170011; noaddr; 000000; 170012; noaddr; 000777; 004000; specl1; 000777; 074000; specl1; 000007; 000200; specl2; 000017; 000240; specl3; 000017; 000260; specl3; 000377; 104000; specl4; 000377; 104400; specl5; 000077; 006400; specl7; 000777; 077000; specl8; 000007; 000230; specl9; 177777; 000000; specl6; fltrev: bic $!377,(sp) muldiv: jsr pc,psp mov (sp)+,r0 asl r0 asl r0 swab r0 aslb r0 aslb r0 aslb r0 aslb r0 asr r0 asr r0 asr r0 asr r0 bic $!7707,r0 mov r0,-(sp) br fltnor1 fltnor: bic $!377,(sp) br 1f double: tst (sp) bge 1f jsr pc,pb 1: jsr pc,psp mov (sp),r0 fltnor1: als $-6,r0 jsr r5,decodadr; dot add r0,incdot add dot,r0 mov r0,temp jsr pc,pcom mov (sp)+,r0 jsr r5,decodadr; temp add r0,incdot rts pc single: tst (sp) bge singlw jsr pc,pb singlw: jsr pc,psp mov (sp)+,r0 jsr r5,decodadr; dot add r0,incdot rts pc specl8: / sob jsr pc,psp mov (sp),r3 als $-6,r3 jsr pc,preg jsr pc,pcom mov (sp)+,r0 bic $!77,r0 neg r0 br 1f branch: jsr pc,psp mov (sp)+,r0 bic $!377,r0 bit $200,r0 beq 1f bis $177400,r0 1: inc r0 asl r0 add dot,r0 jsr pc,pname rts pc noaddr: tst (sp)+ rts pc specl1: / jsr jsr pc,psp mov (sp),r3 als $-6,r3 jsr pc,preg jsr pc,pcom mov (sp)+,r0 jsr r5,decodadr; dot add r0,incdot rts pc specl2: / rts jsr pc,psp mov (sp)+,r3 jsr pc,preg rts pc specl3: / opr jsr pc,psp mov (sp)+,r2 mov $3f,r1 1: bit $17,r2 beq 1f bit $10,r2 beq 2f movb (r1),r0 jsr pc,putc 2: inc r1 asl r2 br 1b 1: rts pc 3: specl7: / mark bic $!77,(sp) br specl4 specl9: / spl bic $!7,(sp) br specl4 specl4: / emt jsr pc,psp mov (sp)+,r0 bic $!377,r0 8: jsr pc,printo rts pc specl5: / sys jsr pc,psp mov (sp)+,r2 bic $!377,r2 mov r2,r0 asl r2 asl r2 cmp r2,$esystab-systab bhis 8b mov systab(r2),r1 jsr pc,string mov systab+2(r2),-(sp) mov dot,temp1 1: dec (sp) bge 2f tst (sp)+ rts pc 2: jsr r5,mesg; <;\0> add $2,temp1 add $2,incdot jsr r5,get; temp1 jsr pc,pname br 1b systab: 1f; 0; .data; 1:; .text 1f; 0; .data; 1:; .text 1f; 0; .data; 1:; .text 1f; 2; .data; 1:; .text 1f; 2; .data; 1:; .text 1f; 2; .data; 1:; .text 1f; 0; .data; 1:; .text 1f; 0; .data; 1:; .text 1f; 2; .data; 1:; .text 1f; 2; .data; 1:; .text 1f; 1; .data; 1:; .text 1f; 2; .data; 1:; .text 1f; 1; .data; 1:; .text 1f; 0; .data; 1:; .text 1f; 1; .data; 1:; .text 1f; 2; .data; 1:; .text 1f; 2; .data; 1:; .text 1f; 1; .data; 1:; .text 1f; 2; .data; 1:; .text 1f; 2; .data; 1:; .text 1f; 2; .data; 1:; .text 1f; 2; .data; 1:; .text 1f; 1; .data; 1:; .text 1f; 0; .data; 1:; .text 1f; 0; .data; 1:; .text 1f; 0; .data; 1:; .text 1f; 1; .data; 1:; .text 1f; 1; .data; 1:; .text 1f; 1; .data; 1:; .text 1f; 1; .data; 1:; .text 1f; 1; .data; 1:; .text 1f; 1; .data; 1:; .text 1f; 1; .data; 1:; .text 1f; 1; .data; 1:; .text 1f; 0; .data; 1:; .text 1f; 0; .data; 1:; .text 1f; 0; .data; 1:; .text 1f; 0; .data; 1:; .text 1f; 0; .data; 1:; .text 1f; 0; .data; 1:; .text esystab: .data .even .text specl6: / unknown jsr pc,psp mov (sp)+,r0 jsr pc,printo rts pc jklmnopqrstuv/ db4 -- debugger maxsym = 24000. core: a.out: .even zero: 0 .bss regbuf: .=.+1024. .data objmagic: 407 nobjmagic: 410 namsiz: nambuf incdot: 2 nlcom: '/ regnames: ; 1; 162000 ; 1; 161776 ; 1; 161774 ; 1; 161772 ; 1; 161770 ; 1; 161766 ; 1; 161764 ; 1; 161762 ; 1; 161760 .if fpp fregnames: ; 1; 161754 ; 1; 161750 ; 1; 161744 ; 1; 161740 ; 1; 161734 ; 1; 161730 .endif ereg: .bss starmod:.=.+2 symbol: .=.+10. getoff: .=.+2 namstrt: .=.+2 bytemod: .=.+2 savsp: .=.+2 error: .=.+2 ttyfin: .=.+2 dbfin: .=.+2 dbfout: .=.+2 ch: .=.+2 lastop: .=.+2 addres: .=.+2 taddr: .=.+2 adrflg: .=.+2 f.size: .=.+2 fpsr: .=.+2 och: .=.+2 dot: .=.+2 count: .=.+2 syscnt: .=.+2 temp: .=.+2 temp1: .=.+2 obuf: .=.+8. inbuf: .=.+128. nambuf: .=.+20 .globl getchar .globl lookchar .globl fsfile .globl seekchar .globl backspace .globl putchar .globl alterchar .globl move .globl rewind .globl create .globl zero .globl allocate .globl release .globl collect .globl w, r, a, l / cmp (sp)+,$2 blo 1f tst (sp)+ mov (sp)+,0f sys 0; 9f .data 9: sys open; 0:.=.+2; 0 .text bec 2f mov $1,r0 sys write; 4f; 5f-4f sys exit error: 4 / 4: 5: .even / 2: mov r0,source 1: sys signal; 2; 1 ror r0 bcs 1f sys signal; 2; case177 1: clr delflag mov $pdl,r5 / clr r0 jsr pc,allocate mov r1,basptr mov $10.,r0 jsr pc,putchar mov $1,r0 jsr pc,allocate mov r1,inbas mov $10.,r0 jsr pc,putchar mov $1,r0 jsr pc,allocate mov $10.,r0 jsr pc,putchar mov r1,tenptr clr r0 jsr pc,allocate mov r1,chptr clr r0 jsr pc,allocate mov r1,strptr clr r0 jsr pc,allocate mov $1,r0 jsr pc,putchar mov r1,kptr mov $1,r0 jsr pc,allocate mov $2,r0 jsr pc,putchar mov r1,sqtemp clr r0 jsr pc,allocate mov r1,divxyz loop: tst delflag bne in177 mov sp,errstack jsr pc,readc mov $casetab,r1 1: tst (r1)+ beq 2f cmp r0,(r1)+ bne 1b jmp *-4(r1) 2: jmp eh / / / case for new line (which is special for apl box) / case012: br loop / / / case q for quit / case161: cmp readptr,$readstack+2 blos 1f mov *readptr,r1 beq 2f jsr pc,release 2: sub $2,readptr mov *readptr,r1 beq 2f jsr pc,release 2: sub $2,readptr jmp loop 1: sys exit / / / case of delete character / case177: sys signal; 2; case177 mov $1,delflag mov r0,-(sp) mov 2(sp),r0 cmp -6(r0),$sys+read bne 1f sub $6,2(sp) clr delflag 1: mov (sp)+,r0 2 /rti / in177: mov $' ,ch mov $1,r0 sys write; 1f; 1 clr delflag jmp eh / .bss delflag: .=.+2 .text 1: <\n> .even / / / case digit / case060: movb r0,savec jsr pc,readin jsr pc,push br loop / / / case _ for negative numbers / case137: jsr pc,readin jsr pc,chsign jsr pc,push br loop / / / case screamer / case041: jsr pc,in041 br loop / in041: sys fork br 9f sys wait mov $1,r0 sys write; screamer; 2 rts pc 9: sys exec; 7f; 8f 4 8: 7f; 0 7: screamer: .even / / / case d for duplicate / case144: cmp r5,$pdl jeq eh clr r0 jsr pc,allocate mov -2(r5),r0 jsr pc,move jsr pc,push br loop / / / case z for stack size / case172: clr r0 jsr pc,allocate mov r5,r3 sub $pdl,r3 asr r3 2: beq 2f clr r2 dvd $100.,r2 mov r3,r0 jsr pc,putchar mov r2,r3 br 2b 2: jsr pc,push jmp loop / / / case c for flush / case143: 2: jsr pc,pop jes loop jsr pc,release br 2b / / case s for save / case163: jsr pc,readc cmp r5,$pdl bne 2f movb $'s,ch jmp eh 2: cmpb r0,$128. jhis err asl r0 mov stable(r0),r1 beq 2f jsr pc,release 2: jsr pc,pop mov r1,stable(r0) jmp loop / / / case l for load / case154: jsr pc,in154 jmp loop / in154: jsr pc,readc cmp r0,$128. jhis err asl r0 mov stable(r0),r1 beq 1f mov r1,-(sp) jsr pc,length jsr pc,allocate mov (sp)+,r0 jsr pc,move jsr pc,push rts pc 1: clr r0 jsr pc,allocate jsr pc,push rts pc / / / case - for subtract / case055: jsr pc,in055 jmp loop / in055: jsr pc,pop jes eh jsr pc,chsign jsr pc,push br in053 / / / case + for add / case053: jsr pc,in053 jmp loop / in053: mov $add3,r0 jsr pc,binop rts pc / / / case * for multiply / case052: mov $mul3,r0 jsr pc,binop tst k beq 1f jsr pc,pop mov r1,r3 mov kptr,r2 jsr pc,div3 jsr pc,push mov r3,r1 jsr pc,release mov r4,r1 jsr pc,release 1: jmp loop / / case / for divide / case057: mov $1f,r0 jsr pc,binop mov r4,r1 jsr pc,release jmp loop 1: tst k beq 1f mov r2,-(sp) mov kptr,r2 jsr pc,mul3 mov r1,-(sp) mov r3,r1 jsr pc,release mov (sp)+,r3 mov (sp)+,r2 1: jsr pc,div3 rts pc / / / case % for remaindering / case045: mov $div3,r0 jsr pc,binop jsr pc,pop jsr pc,release mov r4,r1 jsr pc,push jmp loop / / binop: jsr pc,pop jes eh mov r1,r2 jsr pc,pop jec 1f mov r2,r1 jsr pc,push jbr eh 1: mov r1,r3 jsr pc,(r0) jsr pc,push mov r2,r1 jsr pc,release mov r3,r1 jsr pc,release rts pc / / / case i for input base / case151: jsr pc,in151 jmp loop / in151: jsr pc,pop jes eh mov r1,-(sp) mov inbas,r1 mov (sp)+,inbas jsr pc,release rts pc / .bss inbas: .=.+2 .data / / / case o for output base / case157: jsr pc,in157 jmp loop / in157: jsr pc,pop jes eh mov r1,-(sp) mov basptr,r1 jsr pc,release mov (sp),basptr / / set field widths for output / and set output digit handling routines / mov (sp),r1 mov $bigout,outdit jsr pc,length cmp r0,$1. bne 2f jsr pc,fsfile jsr pc,backspace cmp r0,$16. bhi 2f mov $hexout,outdit 2: jsr pc,length jsr pc,allocate mov (sp),r0 jsr pc,move clr (sp) jsr pc,fsfile jsr pc,backspace bpl 2f add $1.,(sp) jsr pc,chsign 2: mov r1,r2 mov $1,r0 jsr pc,allocate mov $-1,r0 jsr pc,putchar mov r1,r3 jsr pc,add3 jsr pc,length asl r0 add r0,(sp) jsr pc,fsfile jsr pc,backspace cmp r0,$9. blos 2f add $1,(sp) 2: jsr pc,release mov r2,r1 jsr pc,release mov r3,r1 jsr pc,release mov (sp)+,fw cmp outdit,$hexout bne 2f mov $1,fw 2: mov $60.,ll cmp fw,$60. blo 9f; rts pc; 9: mov $60.,r1 clr r0 dvd fw,r0 mov r0,r1 mpy fw,r1 mov r1,ll rts pc / .data fw: 1 /field width for digits ll: 60. /line length .text / / / case k for skale factor / case153: jsr pc,pop jes eh mov w(r1),r0 sub a(r1),r0 cmp r0,$1 jhi eh jsr pc,rewind jsr pc,getchar jmi eh mov r0,k mov r0,r2 jsr pc,release mov kptr,r1 jsr pc,create clr r0 2: cmp r2,$2 blo 2f jsr pc,putchar sub $2,r2 br 2b 2: mov $1,r0 cmp r2,$1 blo 2f mov $10.,r0 2: jsr pc,putchar 1: jmp loop / / / case ^ for exponentiation / case136: jsr pc,pop jes eh mov r1,r3 jsr pc,pop jes eh mov r1,r2 jsr pc,exp3 jsr pc,push mov r2,r1 jsr pc,release mov r3,r1 jsr pc,release jmp loop / / / case v for square root / case166: jsr pc,pop jes eh / / multiply argument by skale factor / mov r1,r2 mov kptr,r3 jsr pc,mul3 mov r1,r3 mov r2,r1 jsr pc,release / / check for zero or negative / mov w(r3),r2 sub a(r3),r2 tst r2 jeq sqz / / look at the top one or two digits / mov r3,r1 jsr pc,fsfile jsr pc,backspace mov r0,r4 jmi eh bit $1,r2 bne 2f mov r4,r1 mul $100.,r1 mov r1,r4 mov r3,r1 jsr pc,backspace add r0,r4 2: / / allocate space for result / inc r2 asr r2 mov r2,r0 jsr pc,allocate jsr pc,zero mov r2,r0 jsr pc,seekchar mov r1,r2 / / get high order digit of arg and square root it / mov $1,r0 2: sub r0,r4 blt 2f add $2,r0 br 2b 2: inc r0 asr r0 mov r0,r4 mov r2,r1 jsr pc,fsfile jsr pc,backspace mov r4,r0 jsr pc,alterchar mov r1,-(sp) mov r3,-(sp) / / get successive approx. from Newton / 1: mov (sp),r3 /arg mov 2(sp),r2 /approx jsr pc,div3 mov r1,r3 jsr pc,add3 mov r1,-(sp) mov r3,r1 jsr pc,release mov r4,r1 jsr pc,release mov (sp)+,r1 mov sqtemp,r2 mov r1,r3 jsr pc,div3 mov r1,-(sp) mov r3,r1 jsr pc,release mov r4,r1 jsr pc,release mov (sp)+,r3 mov 2(sp),r1 jsr pc,length jsr pc,allocate mov 2(sp),r0 jsr pc,move jsr pc,chsign mov r1,r2 jsr pc,add3 jsr pc,fsfile jsr pc,backspace jsr pc,release mov r2,r1 jsr pc,release tst r0 bpl 2f / / loop if new < old / mov 2(sp),r1 jsr pc,release mov r3,2(sp) br 1b / 2: mov r3,r1 jsr pc,release mov 2(sp),r1 jsr pc,push mov (sp),r1 jsr pc,release tst (sp)+ tst (sp)+ jmp loop / sqz: clr r0 jsr pc,allocate jsr pc,push mov r3,r1 jsr pc,release jmp loop .bss sqtemp: .=.+2 .text / / / case [ for subroutine definition / case133: clr -(sp) clr r0 jsr pc,allocate jsr pc,push 1: jsr pc,readc cmp r0,$'] bne 3f tst (sp) beq 1f dec (sp) br 2f 3: cmp r0,$'[ bne 2f inc (sp) 2: jsr pc,putchar br 1b / 1: tst (sp)+ jmp loop / / / case x for execute top of stack / case170: jsr pc,in170 jmp loop / in170: jsr pc,pop jes eh mov r1,-(sp) tst *readptr beq 1f mov *readptr,r1 cmp r(r1),w(r1) bne 1f jsr pc,release br 2f 1: add $2,readptr cmp readptr,$readtop bhis 1f 2: mov (sp)+,r1 mov r1,*readptr beq 2f jsr pc,rewind rts pc 2: jsr pc,readc cmp r0,$'\n beq 3f mov r0,savec 3: rts pc 1: nderr: mov $1,r0 sys write; 1f; 2f-1f sys exit 1: 2: .even / .data readptr: readstack .bss readstack: .=.+100. readtop: .text / / case ? for apl box function / case077: add $2,readptr cmp readptr,$readtop bhis nderr clr *readptr in077: mov source,-(sp) clr source jsr pc,readc cmp r0,$'! bne 1f jsr pc,in041 mov (sp)+,source br in077 1: mov r0,savec clr r0 jsr pc,allocate jsr pc,readc jsr pc,putchar 1: jsr pc,readc jsr pc,putchar cmp r0,$'\n bne 1b mov (sp)+,source mov r1,*readptr jmp loop / / / case < for conditional execution / case074: jsr pc,in055 /go subtract jsr pc,pop jsr pc,length tst r0 beq 1f jsr pc,fsfile jsr pc,backspace tst r0 bmi 1f jsr pc,release jsr pc,in154 /load from register br case170 / 1: jsr pc,release jsr pc,readc jmp loop / / / case = for conditional execution / case075: jsr pc,in055 /go subtract jsr pc,pop jsr pc,length tst r0 beq 1f /is zero jsr pc,release jsr pc,readc jmp loop 1: jsr pc,release jsr pc,in154 /load from register jmp case170 /go to execute code / / / case > for conditional execution / case076: jsr pc,in055 /go subtract jsr pc,pop jsr pc,length tst r0 beq 1f jsr pc,fsfile jsr pc,backspace tst r0 bpl 1f jsr pc,release jsr pc,in154 /load from register jmp case170 /go to execute code 1: jsr pc,release jsr pc,readc jmp loop err: 4 / eh: movb ch,1f+2 mov $1,r0 sys write; 1f; 2f-1f mov $readstack,readptr mov errstack,sp jmp loop .data 1: <( ) ?\n> 2: .even .text / / / routine to read and convert a number from the / input stream. Numbers beginnig with 0 are / converted as octal. Routine converts / up to next nonnumeric. / / readin: clr r0 jsr pc,allocate mov r1,-(sp) mov strptr,r1 jsr pc,create jsr pc,readc 1: cmpb ch,$'0 blt 1f cmpb ch,$'9 bgt 3f mov ch,r0 sub $'0,r0 4: mov chptr,r1 jsr pc,create tst r0 beq 2f jsr pc,putchar 2: mov r1,chptr mov (sp),r3 mov inbas,r2 jsr pc,mul3 mov r1,(sp) mov r3,r1 jsr pc,release mov (sp),r3 mov chptr,r2 jsr pc,add3 mov r1,(sp) mov r3,r1 jsr pc,release jsr pc,readc mov r0,ch br 1b 3: cmpb ch,$'A blt 1f cmpb ch,$'F bgt 1f mov ch,r0 sub $67,r0 br 4b 1: mov ch,savec mov (sp)+,r1 rts pc / / / routine to read another character from the input / stream. If the caller does not want the character, / it is to be placed in the cell savec. / The routine exits to the system on end of file. / Character is returned in r0. / / jsr pc,readc / movb r0,... / / readc: tst savec beq 1f movb savec,r0 clr savec rts pc 1: tst *readptr bne 1f 2: mov source,r0 sys read; ch; 1 bes eof tst r0 beq eof movb ch,r0 rts pc 1: mov r1,-(sp) mov *readptr,r1 jsr pc,getchar bes eof1 mov r0,ch mov (sp)+,r1 rts pc / eof: tst source beq 1f clr source br 2b 1: sys exit / eof1: mov *readptr,r1 beq 2f jsr pc,release 2: sub $2,readptr mov (sp)+,r1 jmp readc / / / case p for print / case160: cmp r5,$pdl jeq eh jsr pc,in160 jmp loop / / in160: mov $1,r0 sys write; sphdr; 4 br 1f / sphdr: < > .even / 1: cmp r5,$pdl bne 1f mov $1,r0 sys write; qm; 1 mov $1,r0 sys write; nl; 1 rts pc / / do the conversion / 1: mov -2(r5),r1 jsr pc,printf rts pc / / / case f for print the stack / case146: mov r5,-(sp) 1: cmp r5,$pdl beq 2f 1: jsr pc,in160 jsr pc,pop cmp r5,$pdl bne 1b 2: mov $stable-2,r0 1: tst (r0)+ cmp r0,$stable+254. bhi 1f / mov (r0),r1 beq 1b mov r0,-(sp) sub $stable,r0 asr r0 movb r0,7f+1 mov $1,r0 sys write; 7f; 8f-7f jsr pc,printf mov (sp)+,r0 br 1b 1: mov (sp)+,r5 jmp loop / .data 7: <" " > 8: .even .text / / / routine to convert to decimal and print the / top element of the stack. / / jsr pc,printf / / printf: mov r2,-(sp) mov r1,-(sp) mov r0,-(sp) clr -(sp) jsr pc,rewind 2: jsr pc,getchar bes 2f cmp r0,$143 blos 2b cmp r0,$-1 beq 2b bis $1,(sp) br 2b 2: tst (sp)+ beq 2f jsr pc,length mov r0,0f mov a(r1),3f mov $1,r0 sys 0; 9f .data 9: sys write; 3:.=.+2; 0:.=.+2 .text br prout 2: jsr pc,fsfile jsr pc,backspace bec 1f mov $1,r0 sys write; blank; 1 mov $1,r0 sys write; asczero; 1 br prout 1: jsr pc,length mov r1,-(sp) jsr pc,allocate mov (sp),r0 mov r1,(sp) jsr pc,move mov ll,count inc count jsr pc,fsfile jsr pc,backspace cmpb r0,$-1 bne 2f mov basptr,r1 jsr pc,fsfile jsr pc,backspace cmp r0,$-1 beq 2f mov (sp),r1 jsr pc,chsign mov $'-,ch jsr pc,wrchar br 1f 2: mov $' ,ch jsr pc,wrchar 1: mov strptr,r1 jsr pc,create mov basptr,r1 jsr pc,length cmp r0,$1 blo dingout bne 1f jsr pc,rewind jsr pc,getchar cmp r0,$1. beq unout cmp r0,$-1 beq dingout cmp r0,$10. beq tenout 1: mov (sp),r3 mov basptr,r2 jsr pc,div3 mov r1,r2 mov (sp),r1 jsr pc,release mov r2,(sp) mov r4,r1 jsr pc,*outdit mov (sp),r1 jsr pc,length bne 1b / mov strptr,r1 jsr pc,fsfile 1: jsr pc,backspace bes 1f mov r0,ch jsr pc,wrchar br 1b 1: mov (sp)+,r1 jsr pc,release / / cleanup, print new line and return / prout: mov $1,r0 sys write; nl; 1 mov (sp)+,r0 mov (sp)+,r1 mov (sp)+,r2 rts pc / / tenout: mov (sp),r1 jsr pc,fsfile jsr pc,backspace mov r0,r3 clr r2 dvd $10.,r2 beq 1f 3: add $60,r2 mov r2,ch jsr pc,wrchar 1: add $60,r3 mov r3,ch jsr pc,wrchar 1: jsr pc,backspace bec 2f mov (sp)+,r1 jsr pc,release br prout 2: mov r0,r3 clr r2 dvd $10.,r2 br 3b / / dingout: clr -(sp) br 1f unout: mov $1,-(sp) 1: mov strptr,r1 jsr pc,create mov $-1,r0 jsr pc,putchar mov r1,r3 1: mov 2(sp),r1 jsr pc,length beq 1f mov r1,r2 jsr pc,add3 mov r1,2(sp) mov r2,r1 jsr pc,release mov $1,r0 tst (sp) beq 2f mov $'1,ch jsr pc,wrchar br 1b 2: tst delflag jne in177 sys write; ding; 3 br 1b 1: tst (sp)+ mov (sp)+,r1 jsr pc,release br prout / ding: < > / blank: < > sp5: <\n > minus: <-> one: <1> .even .bss count: .=.+2 .text / bigout: mov r1,-(sp) /big digit mov strptr,r1 jsr pc,length add fw,r0 dec r0 mov r0,-(sp) /end of field clr -(sp) /negative mov 4(sp),r1 jsr pc,length bne 2f mov strptr,r1 mov $'0,r0 jsr pc,putchar br 1f 2: mov 4(sp),r1 /digit jsr pc,fsfile jsr pc,backspace bpl 2f mov $1,(sp) /negative jsr pc,chsign 2: mov 4(sp),r3 /digit mov r3,r1 jsr pc,length beq 1f mov tenptr,r2 jsr pc,div3 mov r1,4(sp) /digit mov r3,r1 jsr pc,release mov r4,r1 jsr pc,rewind jsr pc,getchar jsr pc,release add $'0,r0 mov strptr,r1 jsr pc,putchar br 2b 1: mov strptr,r1 jsr pc,length cmp r0,2(sp) /end of field bhis 1f mov $'0,r0 jsr pc,putchar br 1b 1: tst (sp) /negative beq 1f mov $'-,r0 mov strptr,r1 dec w(r1) jsr pc,putchar 1: mov $' ,r0 jsr pc,putchar tst (sp)+ tst (sp)+ mov (sp)+,r1 jsr pc,release rts pc / .bss tenptr: .=.+2 .text / / / hexout: mov r1,-(sp) jsr pc,rewind jsr pc,getchar add $60,r0 cmp r0,$'9 blos 2f add $'A-'9-1,r0 2: mov strptr,r1 jsr pc,putchar mov (sp)+,r1 jsr pc,release rts pc / / wrchar: tst delflag jne in177 mov $1,r0 tst count bne 7f sys write; sp5; 6 mov ll,count mov $1,r0 7: dec count sys write; ch; 1 rts pc / / / here for unimplemented stuff / junk: movb r0,1f mov $1,r0 sys write; 1f; 2f-1f jmp loop .data 1: <0 not in switch.\n> 2: .even .text / / / / routine to place one word onto the pushdown list / Error exit to system on overflow. / / push: mov r1,(r5)+ cmp r5,$pdltop bhis pdlout rts pc / pdlout: mov $1,r0 sys write; 1f; 2f-1f 4 1: 2: .even / / / routine to remove one word from the pushdown list / carry bit set on empty stack / / / jsr pc,pop / pop: cmp r5,$pdl bhi 1f clr r1 sec rts pc 1: mov -(r5),r1 clc rts pc / / / / .data outdit: hexout .bss source: .=.+2 savec: .=.+2 ch: .=.+2 .text nl: <\n> asczero: <0> qm: .even / .bss chptr: .=.+2 strptr: .=.+2 basptr: .=.+2 errstack:.=.+2 / stable: .=.+256. .text casetab: case012; 012 /nl loop; 040 /sp case041; 041 /! case045; 045 /% case052; 052 /* case053; 053 /+ case055; 055 /- junk; 056 /. case057; 057 // case060; 060 /0 case060; 061 /1 case060; 062 /2 case060; 063 /3 case060; 064 /4 case060; 065 /5 case060; 066 /6 case060; 067 /7 case060; 070 /8 case060; 071 /9 case074; 074 /< case075; 075 /= case076; 076 /> case077; 077 /? case060; 101 /A case060; 102 /B case060; 103 /C case060; 104 /D case060; 105 /E case060; 106 /F case151; 111 /I case153; 113 /K case154; 114 /L case157; 157 /O case160; 120 /P case161; 121 /Q case163; 123 /S case166; 126 /V case170; 130 /X case172; 132 /Z case133; 133 /[ case136; 136 /^ case137; 137 /_ case143; 143 /c case144; 144 /d case146; 146 /f case151; 151 /i case153; 153 /k case154; 154 /l case157; 157 /o case160; 160 /p case161; 161 /q case163; 163 /s case166; 166 /v case170; 170 /x case172; 172 /z 0;0 / .bss pdl: .=.+100. pdltop: .text z{|}~€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›/ / / routine to add the two centennial numbers / pointed to by r2 and r3. / a pointer to the result is returned in r1 / r2 and r3 are preserved / / mov ptr1,r2 / mov ptr2,r3 / jsr pc,add3 / mov r1,... / add3: mov r0,-(sp) mov r4,-(sp) mov r5,-(sp) mov r3,-(sp) mov r2,-(sp) / / allocate a new string whose length is / the max of the two addends. / mov w(r2),r0 sub a(r2),r0 mov w(r3),r4 sub a(r3),r4 cmp r0,r4 bgt 1f mov r4,r0 1: mov r0,r4 jsr pc,allocate mov r1,-(sp) / / get everything ready / mov 2(sp),r1 jsr pc,rewind mov 4(sp),r1 jsr pc,rewind clr carry / / now add them / 2: dec r4 blt 3f mov 2(sp),r1 /r2 jsr pc,getchar mov r0,r5 mov 4(sp),r1 /r3 jsr pc,getchar add r5,r0 add carry,r0 clr carry cmp r0,$100. blt 1f sub $100.,r0 mov $1,carry 1: tstb r0 bpl 1f add $100.,r0 mov $-1,carry 1: mov (sp),r1 /r1 jsr pc,putchar br 2b / / perhaps there is an extra digit / 3: mov carry,r0 beq 2f mov (sp),r1 /r1 jsr pc,putchar / / strip leading zeros / 2: jsr pc,fsfile 2: jsr pc,backspace bes 2f beq 2b inc r(r1) 2: mov r(r1),w(r1) / / strip leading 99's / jsr pc,fsfile jsr pc,backspace cmpb r0,$-1 bne 1f 2: jsr pc,backspace bes 2f cmpb r0,$99. beq 2b jsr pc,getchar 2: mov $-1,r0 jsr pc,alterchar mov r(r1),w(r1) / / restore and return / 1: mov (sp)+,r1 mov (sp)+,r2 mov (sp)+,r3 mov (sp)+,r5 mov (sp)+,r4 mov (sp)+,r0 rts pc / .bss carry: .=.+2 .text / / / routine to change the sign of the centennial number / pointed to by r1. / negative numbers are stored in 100's complement form with / -1 as the high order digit; the second digit is not 99. / / mov ...,r1 / jsr pc,chsign / chsign: mov r1,-(sp) mov r0,-(sp) jsr pc,rewind clr chcarry / 1: jsr pc,lookchar bes 1f negb r0 sub chcarry,r0 mov $1,chcarry add $100.,r0 cmpb $100.,r0 bgt 2f sub $100.,r0 clr chcarry 2: jsr pc,alterchar br 1b / 1: clr r0 sub chcarry,r0 beq 2f jsr pc,putchar jsr pc,fsfile jsr pc,backspace jsr pc,backspace cmp r0,$99. bne 1f mov r(r1),w(r1) mov $-1,r0 jsr pc,putchar br 1f / 2: jsr pc,fsfile jsr pc,backspace bne 1f mov r(r1),w(r1) / 1: mov (sp)+,r0 mov (sp)+,r1 rts pc / .bss chcarry: .=.+2 .text / / / / / routine to multiply the two centennial numbers / pointed to by r2 and r3. / a pointer to the result is returned in r1 / r2 and r3 are preserved / / mov ptr1,r2 / mov ptr2,r3 / jsr pc,mul3 / mov r1,... / / save registers and make space for temps / mul3: mov r5,-(sp) mov r3,-(sp) /arg2 mov r2,-(sp) /arg1 mov r0,-(sp) tst -(sp) /result tst -(sp) /arg1 tst -(sp) /arg2 tst -(sp) /carry / / compute sign of result and make args positive / clr outsign mov r2,r1 jsr pc,fsfile jsr pc,backspace bmi 2f mov r2,4(sp) /arg1 br 1f 2: jsr pc,length jsr pc,allocate mov r1,4(sp) mov r2,r0 jsr pc,move jsr pc,chsign com outsign 1: mov r3,r1 jsr pc,fsfile jsr pc,backspace bmi 2f mov r3,2(sp) /arg2 br 1f 2: mov r3,r1 jsr pc,length jsr pc,allocate mov r1,2(sp) mov r3,r0 jsr pc,move jsr pc,chsign com outsign 1: / / compute the length of the result and / allocate space for it / mov w(r2),r0 sub a(r2),r0 add w(r3),r0 sub a(r3),r0 jsr pc,allocate jsr pc,zero mov r1,6(sp) /result clr offset mov 2(sp),r1 /arg2 jsr pc,rewind / / work on next digit of arg2, starting over on arg1 / 1: mov 4(sp),r1 /arg1 jsr pc,rewind mov 2(sp),r1 /arg2 jsr pc,getchar bes 3f mov r0,r2 mov 6(sp),r1 /result jsr pc,rewind add offset,r(r1) clr 0(sp) /carry / / work on next digit of arg3 / form the product of the two digits, / add to what is already there and add in old carry / to generate new dit and new carry. / 2: mov 4(sp),r1 /arg1 jsr pc,getchar bes 2f mov r0,r3 mpy r2,r3 add (sp),r3 /carry mov 6(sp),r1 /result jsr pc,lookchar add r0,r3 mov r3,r1 clr r0 dvd $100.,r0 mov r0,(sp) /carry mov r1,r0 mov 6(sp),r1 /result jsr pc,alterchar br 2b / 2: inc offset tst (sp) /carry beq 1b mov 6(sp),r1 /result jsr pc,lookchar add (sp),r0 /carry jsr pc,alterchar br 1b / 3: / / change sign of result if necessary / tst outsign bpl 1f mov 6(sp),r1 /result jsr pc,chsign / / release dregs if necessary / 1: cmp 2(sp),14(sp) beq 1f mov 2(sp),r1 jsr pc,release 1: cmp 4(sp),12(sp) beq 1f mov 4(sp),r1 jsr pc,release 1: / / restore registers and return / tst (sp)+ tst (sp)+ tst (sp)+ mov (sp)+,r1 mov (sp)+,r0 mov (sp)+,r2 mov (sp)+,r3 mov (sp)+,r5 rts pc / .bss outsign: .=.+2 offset: .=.+2 k: .=.+2 kptr: .=.+2 .text / �žŸ ¡¢£¤¥/ / / routine to divide the two centennial numbers pointed / to by r2 (the divisor) and r3 (the dividend). / A pointer to the result is returned in r1. All other / registers are preserved. If the divisor is zero, zero / is returned and the carry bit is set. / Remainder is returned in r4 and has the sign / of the dividend. / / / mov divisor,r2 / mov dividend,r3 / jsr pc,div3 / mov r1,result / mov r4,remainder / / div3: mov r5,-(sp) mov r3,-(sp) /dividend mov r2,-(sp) /divisor mov r0,-(sp) tst -(sp) /result / / allocate space for result; allocate temps if necessary / clr r0 jsr pc,allocate mov r1,0(sp) /result / / / check for divisor zero / mov 4(sp),r2 /divisor mov w(r2),r0 sub a(r2),r0 bne 1f jmp eh 1: / / compute sign of result and make arguments positive / clr divsign mov r2,r1 jsr pc,length jsr pc,allocate mov r1,divisor mov r2,r0 jsr pc,move jsr pc,fsfile jsr pc,backspace bpl 1f 2: jsr pc,chsign mov r1,divisor com divsign 1: clr remsign mov r3,r1 jsr pc,length jsr pc,allocate mov r1,dividend mov r3,r0 jsr pc,move jsr pc,fsfile jsr pc,backspace bpl 1f 2: jsr pc,chsign mov r1,dividend com divsign com remsign 1: / / / find out how many digits in the quotient result / 1: mov dividend,r2 mov divisor,r3 mov w(r2),r0 sub a(r2),r0 add a(r3),r0 sub w(r3),r0 jlo bugout mov r0,divoffset mov 0(sp),r1 /result inc r0 jsr pc,seekchar clr r0 mov dividend,r1 jsr pc,putchar / / load r5 with binary divisor for finding / trial quotient digits. If leading digit of / divisor is <10, it is scaled / clr magic mov divisor,r1 jsr pc,fsfile jsr pc,backspace mov r0,r5 cmp r5,$10. bge 2f inc magic 2: mpy $100.,r5 jsr pc,backspace add r0,r5 tst magic beq 2f mov r5,r4 mpy $100.,r4 jsr pc,backspace add r0,r5 adc r4 asl r5 rol r4 dvd $25.,r4 mov r4,r5 2: / / compute trial quotient digit / 1: mov dividend,r1 jsr pc,fsfile jsr pc,backspace bec 9f; 4; 9: mov r0,r3 mpy $100.,r3 mov r3,r2 jsr pc,backspace add r0,r2 mpy $100.,r2 jsr pc,backspace add r0,r3 adc r2 / mov r5,r0 tst magic beq 3f ashc $3,r2 3: tst divoffset beq 2f inc r0 2: dvd r0,r2 mov r2,trial / / / multiply divisor by trial digit / mov divisor,r1 jsr pc,rewind jsr pc,length inc r0 mov divxyz,r1 jsr pc,rewind clr -(sp) 2: mov divisor,r1 jsr pc,getchar bes 2f mov r0,r3 mpy trial,r3 add (sp),r3 /carry clr r2 dvd $100.,r2 mov r2,(sp) /carry mov r3,r0 mov divxyz,r1 jsr pc,alterchar br 2b 2: mov divxyz,r1 mov (sp)+,r0 jsr pc,alterchar 3: / / and subtract from dividend / jsr pc,rewind mov divoffset,r0 mov dividend,r1 jsr pc,seekchar clr -(sp) / 2: mov dividend,r1 jsr pc,lookchar bes 2f mov r0,r2 / mov divxyz,r1 jsr pc,getchar sub r0,r2 sub (sp),r2 clr (sp) mov r2,r0 bpl 3f add $100.,r0 mov $1.,(sp) 3: mov dividend,r1 jsr pc,alterchar br 2b / / put away the quotient digit / 2: mov (sp)+,divcarry mov 0(sp),r1 /result jsr pc,backspace mov trial,r0 jsr pc,alterchar jsr pc,backspace / / and go for another digit / dec divoffset bmi 1f mov dividend,r1 dec w(r1) cmp w(r1),a(r1) bge 9f; 4; 9: jmp 1b / / fix up the result / 1: tst divcarry beq 1f mov trial,r0 dec r0 jsr pc,alterchar mov dividend,r1 mov $-1,r0 jsr pc,alterchar mov divisor,r2 mov dividend,r3 jsr pc,add3 mov r1,-(sp) mov r3,r1 jsr pc,release mov (sp)+,dividend 1: mov 0(sp),r1 /result jsr pc,rewind clr divcarry 1: jsr pc,lookchar bes 1f bic $!377,r0 add divcarry,r0 clr divcarry cmp r0,$100. blt 2f sub $100.,r0 inc divcarry 2: jsr pc,alterchar br 1b / 1: tst divcarry beq 1f mov $1.,r0 jsr pc,alterchar 1: jsr pc,fsfile 1: jsr pc,backspace bes 1f bne 1f mov r(r1),w(r1) br 1b 1: / / change sign of result if necessary / tst divsign bpl 1f jsr pc,chsign 1: mov dividend,r1 jsr pc,fsfile 1: jsr pc,backspace bes 1f bne 1f mov r(r1),w(r1) br 1b 1: bugout: tst remsign bpl 1f mov dividend,r1 jsr pc,chsign / / clean up junk, restore registers, and return / 1: mov divisor,r1 jsr pc,release mov (sp)+,r1 mov (sp)+,r0 mov (sp)+,r2 mov (sp)+,r3 mov dividend,r4 mov (sp)+,r5 clc rts pc / / / / .bss divisor: .=.+2 dividend: .=.+2 divxyz: .=.+2 divoffset:.=.+2 divcarry: .=.+2 divsign: .=.+2 trial: .=.+2 remsign: .=.+2 magic: .=.+2 .text / / / / routine to exponentiate the two centennial numbers / pointed to by r2 (the base) and r3 (the exponent). / A pointer to the result is returned in r1. / / mov base,r2 / mov exp,r3 / jsr pc,exp3 / mov r1,... / / / save registers / exp3: mov r3,-(sp) /exponent mov r2,-(sp) /base mov r0,-(sp) / / 1: mov $1,r0 jsr pc,allocate mov r1,-(sp) /accumulated result mov $1,r0 jsr pc,putchar / mov r2,r1 jsr pc,length jsr pc,allocate mov r1,-(sp) /powers of the base mov r2,r0 jsr pc,move / mov r3,r1 jsr pc,length jsr pc,allocate mov r1,-(sp) /exponent mov r3,r0 jsr pc,move jsr pc,fsfile clr exptemp jsr pc,backspace bpl 1f inc exptemp jsr pc,chsign / 1: mov 0(sp),r1 jsr pc,length beq 1f mov sqtemp,r2 mov 0(sp),r3 jsr pc,div3 mov r1,0(sp) mov r3,r1 jsr pc,release mov r4,r1 jsr pc,length jsr pc,release tst r0 beq 2f / / / mov 2(sp),r2 mov 4(sp),r3 jsr pc,mul3 mov r1,4(sp) mov r3,r1 jsr pc,release 2: mov 2(sp),r3 mov r3,r1 jsr pc,length jsr pc,allocate mov r1,r2 mov r3,r0 jsr pc,move jsr pc,mul3 mov r1,2(sp) mov r3,r1 jsr pc,release mov r2,r1 jsr pc,release br 1b 1: tst exptemp beq 1f mov 10(sp),r1 jsr pc,length bne 2f jmp eh 2: cmp r0,$1 blos 2f mov 4(sp),r1 jsr pc,create br 1f 2: jsr pc,rewind jsr pc,getchar cmp r0,$1 bgt 2f mov 4(sp),r1 jsr pc,create jsr pc,putchar br 1f 2: mov 4(sp),r1 jsr pc,create 1: mov (sp)+,r1 jsr pc,release mov (sp)+,r1 jsr pc,release mov (sp)+,r1 / mov (sp)+,r0 mov (sp)+,r2 mov (sp)+,r3 rts pc / .bss exptemp: .=.+2 .text / §¨©ª«¬­®¯°±².globl getchar .globl stats .globl lookchar .globl fsfile .globl seekchar .globl backspace .globl putchar .globl alterchar .globl move .globl rewind .globl create .globl zero .globl allocate .globl release .globl collect .globl getword, putword .globl length, position .globl w, r, a, l .globl error / testing = 0 / / / routine to return the length of a string / / mov ...,r1 / jsr pc,length / mov r0,... / length: mov w(r1),r0 sub a(r1),r0 rts pc / / / routine to return the read pointer position / / mov ...,r1 / jsr pc,position / mov r0,... / position: mov r(r1),r0 sub a(r1),r0 rts pc / / / / / routine to get a word from the string / mov ...,r1 / jsr pc,getword / mov r0,... / getword: jsr pc,getchar bes noch movb r0,nchar jsr pc,getchar bec 2f dec r(r1) br noch 2: movb r0,nchar+1 mov nchar,r0 tst r0 /tst clears c-bit rts pc / / / routine to put a word onto the string / mov ...,r1 / mov ...,r0 / jsr pc,putword / putword: jsr pc,putchar swab r0 jsr pc,putchar swab r0 rts pc / .bss nchar: .=.+2 .text / / / / routine to read next character from string / pointed to by r1; character returned in r0 / c-bit set if character not available (end of file) / r1 is preserved / / mov ...,r1 / jsr pc,getchar / movb r0,... / getchar: jsr pc,lookchar bec 2f rts pc 2: inc r(r1) tst r0 /tst clears c-bit rts pc / noch: clr r0 sec rts pc / / routine to look at next character from string / pointed to by r1; character returned in r0 / c-bit set if character not available (end of file) / r1 is preserved / / mov ...,r1 / jsr pc,lookchar / movb r0,... / lookchar: .if testing jsr pc,plausible inc stats+6. .endif cmp w(r1),r(r1) blos noch movb *r(r1),r0 clc rts pc / plausible: cmp r1,$headers bhis 9f; 4; 9: cmp r1,$headend blo 9f; 4; 9: rts pc / / / / routine to move the read pointer of a string to a / specified point. If the string is not long enough, / the string is extended / / mov position,r0 / mov ...,r1 / jsr pc,seekchar / seekchar: mov r1,-(sp) mov r0,-(sp) .if testing jsr pc,plausible inc stats+10. .endif 1: mov (sp),r0 add a(r1),r0 cmp r0,l(r1) bhi 3f mov r0,r(r1) cmp r0,w(r1) blo 1f mov r0,w(r1) br 1f 3: mov (sp),r0 jsr pc,allocate mov 2(sp),r0 jsr pc,move jsr pc,swap jsr pc,release mov 2(sp),r1 br 1b 1: mov (sp)+,r0 mov (sp)+,r1 rts pc / / / routine to move read pointer of string to end of string / / mov ...,r1 / jsr pc,fsfile / fsfile: .if testing jsr pc,plausible inc stats+10. .endif mov w(r1),r(r1) rts pc / / / routine to read a string backwards / the read pointer is decremented before reading / / mov ...,r1 / jsr pc,backspace / mov r0,... / backspace: .if testing jsr pc,plausible inc stats+6. .endif cmp a(r1),r(r1) bhis noch dec r(r1) movb *r(r1),r0 clc rts pc / / / / / routine to put a character into the string / pointed to by r1; character in r0 / r0 and r1 are preserved. / / movb ch,r0 / mov ...,r1 / jsr pc,putchar / putchar: mov r1,-(sp) mov r0,-(sp) .if testing jsr pc,plausible inc stats+8. .endif 1: cmp w(r1),l(r1) blt 3f mov w(r1),r0 inc r0 sub a(r1),r0 /W-A+1 jsr pc,allocate mov 2(sp),r0 /r1 jsr pc,move jsr pc,swap jsr pc,release mov 2(sp),r1 /r1 cmp w(r1),l(r1) blt 3f 4 / 3: movb (sp),*w(r1) inc w(r1) mov (sp)+,r0 tst (sp)+ rts pc / / swap: mov w(r1),-(sp) mov w(r0),w(r1) mov (sp),w(r0) mov r(r1),(sp) mov r(r0),r(r1) mov (sp),r(r0) mov a(r1),(sp) mov a(r0),a(r1) mov (sp),a(r0) mov l(r1),(sp) mov l(r0),l(r1) mov (sp)+,l(r0) rts pc / / / routine to alter a character in the string / pointed to by r1; character in r0 / r0 and r1 are preserved. / / movb ch,r0 / mov ...,r1 / jsr pc,alterchar / alterchar: mov r1,-(sp) mov r0,-(sp) .if testing jsr pc,preposterous inc stats+8. .endif 1: cmp r(r1),l(r1) blt 3f mov l(r1),r0 inc r0 sub a(r1),r0 /W-A+1 jsr pc,allocate mov 2(sp),r0 /r1 jsr pc,move jsr pc,swap jsr pc,release mov 2(sp),r1 /r1 cmp r(r1),l(r1) blt 3f 4 / 3: movb (sp),*r(r1) inc r(r1) cmp r(r1),w(r1) ble 1f mov r(r1),w(r1) 1: mov (sp)+,r0 tst (sp)+ rts pc / / / routine to move the contents of one string / to another. / / mov source,r0 / mov dest,r1 / jsr pc,move / / on return, r1 points to the new string and should / be saved. r0 is preserved. / move: mov r3,-(sp) mov r2,-(sp) mov r1,-(sp) mov r0,-(sp) mov w(r0),r2 sub a(r0),r2 /W-A mov l(r1),r3 sub a(r1),r3 /L-A cmp r2,r3 ble 1f mov r2,r0 jsr pc,allocate mov 2(sp),r0 /r1 jsr pc,swap jsr pc,release mov r0,r1 mov 0(sp),r0 /r0 / 1: mov a(r0),(r0) mov a(r1),(r1) 1: dec r2 blt 1f movb *(r0),*(r1) inc (r0) inc (r1) br 1b / / fix up read ptr of new string / 1: mov r(r0),r2 sub a(r0),r2 add a(r1),r2 mov r2,r(r1) / / restore and return / mov (sp)+,r0 mov (sp)+,r1 mov (sp)+,r2 mov (sp)+,r3 rts pc / / / routine to rewind read pointer of string / pointed to by r1 / / mov ...,r1 / jsr pc,rewind / rewind: .if testing jsr pc,plausible inc stats+10. .endif mov a(r1),r(r1) rts pc / / routine to rewind write pointer of string / pointed to by r1 / / mov ...,r1 / jsr pc,create / create: .if testing jsr pc,plausible inc stats+10. .endif mov a(r1),w(r1) mov a(r1),r(r1) rts pc / / / routine to zero a string / / mov ...,r1 / jsr pc,zero / zero: mov r0,-(sp) .if testing jsr pc,preposterous .endif mov a(r1),r0 1: cmp r0,l(r1) bhis 1f clrb (r0)+ br 1b 1: mov (sp)+,r0 rts pc / / ´µ¶·¸¹º»¼½¾/ / / here to allocate a new block / / mov ...,r0 / jsr pc,allocate / mov r1,... / / requested size in bytes in r0 / pointer to header of allocated block returned in r1 / r0 is preserved / / convert to words, adjust for header, round up / to a power of two / / each block has a four-word header / W - write ptr (also used as link ptr in frlist) / R - read ptr / A - pointer to head of data / L - ptr to (end+1) of data w=0 r=2 a=4 l=6 / allocate: clr garbage mov r0,-(sp) mov r2,-(sp) tst stats bne 1f jsr pc,init 1: inc stats bne 9f; inc stats; 9: cmp r0,$strend-strbuf blo 9f; 4; 9: 1: sub $1,r0 bmi 1f jsr pc,log2 add $1,r0 1: asl r0 /bite to word mov r0,-(sp) add $2,r0 cmp r0,$frend-frlist+2 blo zzz 4 / / look on free list for block of required size / zzz: mov (sp),r0 tst frlist(r0) beq xxx / / found it, allocate and return / mov frlist(r0),r1 mov (r1),frlist(r0) mov a(r1),r0 mov r0,w(r1) /W mov r0,r(r1) /R tst (sp)+ mov (sp)+,r2 mov (sp)+,r0 rts pc / / no block of required size / look for larger block / xxx: tst frlist-2 beq www tst (r0)+ cmp r0,$frend-frlist bhis www tst frlist(r0) bne yyy br xxx / / there are no larger blocks; must garbage collect / www: jsr pc,collect tst r0 bne zzz / / out of space / mov $1,r0 sys write; 1f; 2f-1f sys exit 1: 2: .even / / split larger block into two smaller pieces and / link together as smaller blocks in the free list. / yyy: mov frlist(r0),r1 mov (r1),frlist(r0) mov hdrptr,r2 beq www mov (r2),hdrptr clr (r2) mov r2,(r1) mov r1,frlist-2(r0) mov l(r1),l(r2) mov l(r1),r0 sub a(r1),r0 asr r0 add a(r1),r0 mov r0,l(r1) mov r0,a(r2) br zzz / / / here to release a block / / mov ...,r1 / jsr pc,release / / pointer to block in r1 / release: / / discover that this is a plausible pointer / mov r0,-(sp) jsr pc,preposterous / / find free list index and link block to that entry / inc stats+2 mov frlist(r0),(r1) clr r(r1) mov r1,frlist(r0) clr r1 /self-defense mov (sp)+,r0 rts pc / / / jsr pc,collect / / coalesce free storage by rejoining paired blocks / on the free list. / zero is returned in r0 if no paired blocks were found. / collect: mov r1,-(sp) mov r2,-(sp) mov r3,-(sp) mov r4,-(sp) clr useful inc stats+4. clr r0 /start with smallest blocks /r0 contains frlist index loop1: mov $frlist,r1 add r0,r1 / / try next list member at this level / loop2: mov (r1),r3 beq advance /list is empty tst *(r1) /W beq advance /only one list element / / calculate address of buddy / mov a(r3),r4 sub $strbuf,r4 bit exp2(r0),r4 beq 2f bic exp2(r0),r4 br 1f 2: bis exp2(r0),r4 1: add $strbuf,r4 / / and search for him / loop3: tst 0(r3) beq nocoal mov (r3),r2 cmp a(r2),r4 beq coal mov (r3),r3 br loop3 / / have found a pair; remove both blocks from list, / coalesce them, and put them on next higher list / coal: inc useful mov (r3),r4 mov (r4),(r3) /remove him from list mov (r1),r2 mov (r2),(r1) /remove the other one cmp a(r2),a(r4) bgt 1f mov r2,-(sp) mov r4,r2 mov (sp)+,r4 1: add exp2(r0),l(r4) clr r(r4) mov frlist+2(r0),(r4) mov r4,frlist+2(r0) mov frlist-2,(r2) mov r2,frlist-2 clr r(r2) mov $strbuf,a(r2) mov $strbuf,l(r2) br loop2 / / no buddy found, try next block on this list / nocoal: mov (r1),r1 br loop2 / / advance to next free list / advance: tst (r0)+ cmp r0,$frend-frlist blo loop1 mov useful,r0 / / do we have enough headers to continue? / tst garbage beq 1f mov $1,r0 sys write; 4f; 5f-4f sys exit / 4: 5: .even / / / restore registers and return / 1: inc garbage mov (sp)+,r4 mov (sp)+,r3 mov (sp)+,r2 mov (sp)+,r1 rts pc / .bss garbage: .=.+2 .text / / routine to find integer part of log2(x) / / jsr pc,log2 / / r0 = log2(r0) / log2: mov r0,-(sp) bge 9f; 4; 9: mov $15.,r0 1: rol (sp) bmi 1f sob r0,1b 1: dec r0 tst (sp)+ rts pc / 0 /Don't move me, I'm exp(-1) exp2: 1;2;4;10;20;40;100;200;400;1000;2000;4000; 10000;20000;40000;100000 / / routine to discover whether r1 points to / a plausible header - to avoid ruination. / / r1 is preserved and r0 gets a suitable index for frlist / / jsr pc,preposterous / preposterous: cmp r1,$headers bhis 9f; 4; 9: cmp r1,$headend blo 9f; 4; 9: cmp a(r1),$strbuf /A bhis 9f; 4; 9: cmp l(r1),$strend /L blos 9f; 4; 9: mov l(r1),r0 /L sub a(r1),r0 /A mov r0,-(sp) jsr pc,log2 asl r0 cmp exp2(r0),(sp) beq 9f; 4; 9: add $2,r0 cmp r0,$frend-frlist+2 blo 9f; 4; 9: sub $2,r0 mov r0,(sp) mov frlist(r0),r0 1: beq 1f cmp r0,r1 bne 9f; 4; 9: mov (r0),r0 br 1b 1: mov (sp)+,r0 rts pc / / / routine to initialize storage area, headers and / free list upon first call to allocate a block. / The entire storage area is formed into a single block. / init: mov r0,-(sp) mov r1,-(sp) / / form all the headers into a single list. / mov $headers,r0 mov r0,frlist-2 1: add $8,r0 mov r0,-8(r0) cmp r0,$headend-8 blos 1b clr -8(r0) mov $frlist,r0 1: clr (r0)+ cmp r0,$frend blo 1b / mov frlist-2,r1 mov (r1),frlist-2 clr w(r1) mov $strbuf,r0 mov r0,a(r1) mov $strend-strbuf,r0 jsr pc,log2 asl r0 cmp r0,$frend-frlist blo 9f; 4; 9: mov r1,frlist(r0) mov exp2(r0),r0 add $strbuf,r0 mov r0,l(r1) mov $frlist-2,r1 1: mov (r1),r1 tst r1 beq 1f mov $strbuf,a(r1) mov $strbuf,l(r1) br 1b 1: mov (sp)+,r1 mov (sp)+,r0 rts pc / / .bss stats: .=.+16. useful: .=.+2 hdrptr: .=.+2 /do not move me frlist: .=hdrptr+32. frend: headers:.=hdrptr+512. headend: strbuf: .=.+10000 strend: end: signal = 48. ÀÁÂÃÄÅÆÇÈÉÊ#define LCASE 01 #define UCASE 02 #define SWAB 04 #define NERR 010 #define SYNC 020 int cflag; int fflag; int skip; int count; char *string; char *ifile; char *ofile; char *ibuf; char *obuf; char *ibs 512; char *obs 512; char *bs; char *cbs; char *ibc; char *obc; char *cbc; int nifr; int nipr; int nofr; int nopr; int ntrunc; int ibf; int obf; char *op; int nspace; char etoa[] { 0000,0001,0002,0003,0234,0011,0206,0177, 0227,0215,0216,0013,0014,0015,0016,0017, 0020,0021,0022,0023,0235,0205,0010,0207, 0030,0031,0222,0217,0034,0035,0036,0037, 0200,0201,0202,0203,0204,0012,0027,0033, 0210,0211,0212,0213,0214,0005,0006,0007, 0220,0221,0026,0223,0224,0225,0226,0004, 0230,0231,0232,0233,0024,0025,0236,0032, 0040,0240,0241,0242,0243,0244,0245,0246, 0247,0250,0133,0056,0074,0050,0053,0041, 0046,0251,0252,0253,0254,0255,0256,0257, 0260,0261,0135,0044,0052,0051,0073,0136, 0055,0057,0262,0263,0264,0265,0266,0267, 0270,0271,0174,0054,0045,0137,0076,0077, 0272,0273,0274,0275,0276,0277,0300,0301, 0302,0140,0072,0043,0100,0047,0075,0042, 0303,0141,0142,0143,0144,0145,0146,0147, 0150,0151,0304,0305,0306,0307,0310,0311, 0312,0152,0153,0154,0155,0156,0157,0160, 0161,0162,0313,0314,0315,0316,0317,0320, 0321,0176,0163,0164,0165,0166,0167,0170, 0171,0172,0322,0323,0324,0325,0326,0327, 0330,0331,0332,0333,0334,0335,0336,0337, 0340,0341,0342,0343,0344,0345,0346,0347, 0173,0101,0102,0103,0104,0105,0106,0107, 0110,0111,0350,0351,0352,0353,0354,0355, 0175,0112,0113,0114,0115,0116,0117,0120, 0121,0122,0356,0357,0360,0361,0362,0363, 0134,0237,0123,0124,0125,0126,0127,0130, 0131,0132,0364,0365,0366,0367,0370,0371, 0060,0061,0062,0063,0064,0065,0066,0067, 0070,0071,0372,0373,0374,0375,0376,0377, }; char atoe[] { 0000,0001,0002,0003,0067,0055,0056,0057, 0026,0005,0045,0013,0014,0015,0016,0017, 0020,0021,0022,0023,0074,0075,0062,0046, 0030,0031,0077,0047,0034,0035,0036,0037, 0100,0117,0177,0173,0133,0154,0120,0175, 0115,0135,0134,0116,0153,0140,0113,0141, 0360,0361,0362,0363,0364,0365,0366,0367, 0370,0371,0172,0136,0114,0176,0156,0157, 0174,0301,0302,0303,0304,0305,0306,0307, 0310,0311,0321,0322,0323,0324,0325,0326, 0327,0330,0331,0342,0343,0344,0345,0346, 0347,0350,0351,0112,0340,0132,0137,0155, 0171,0201,0202,0203,0204,0205,0206,0207, 0210,0211,0221,0222,0223,0224,0225,0226, 0227,0230,0231,0242,0243,0244,0245,0246, 0247,0250,0251,0300,0152,0320,0241,0007, 0040,0041,0042,0043,0044,0025,0006,0027, 0050,0051,0052,0053,0054,0011,0012,0033, 0060,0061,0032,0063,0064,0065,0066,0010, 0070,0071,0072,0073,0004,0024,0076,0341, 0101,0102,0103,0104,0105,0106,0107,0110, 0111,0121,0122,0123,0124,0125,0126,0127, 0130,0131,0142,0143,0144,0145,0146,0147, 0150,0151,0160,0161,0162,0163,0164,0165, 0166,0167,0170,0200,0212,0213,0214,0215, 0216,0217,0220,0232,0233,0234,0235,0236, 0237,0240,0252,0253,0254,0255,0256,0257, 0260,0261,0262,0263,0264,0265,0266,0267, 0270,0271,0272,0273,0274,0275,0276,0277, 0312,0313,0314,0315,0316,0317,0332,0333, 0334,0335,0336,0337,0352,0353,0354,0355, 0356,0357,0372,0373,0374,0375,0376,0377, }; main(argc, argv) int argc; char **argv; { register (*conv)(); register char *ip; register c; int ebcdic(), ascii(), null(), cnull(), term(); int a; conv = null; for(c=1; cibuf;) *--ip = 0; ibc = read(ibf, ibuf, ibs); } if(ibc == -1) { perror("read"); if((cflag&NERR) == 0) { flsh(); term(); } ibc = 0; for(c=0; c>1) & ~1; if(cflag&SWAB && c) do { a = *ip++; ip[-1] = *ip; *ip++ = a; } while(--c); ip = ibuf; if (fflag) { obc = ibc; flsh(); ibc = 0; } goto loop; } c = 0; c =| *ip++; (*conv)(c); goto loop; } flsh() { register c; if(obc) { if(obc == obs) nofr++; else nopr++; c = write(obf, obuf, obc); if(c != obc) { perror("write"); term(); } obc = 0; } } match(s) char *s; { register char *cs; cs = string; while(*cs++ == *s) if(*s++ == '\0') goto true; if(*s != '\0') return(0); true: cs--; string = cs; return(1); } number() { register char *cs; register n; cs = string; n = 0; while(*cs >= '0' && *cs <= '9') n = n*10 + *cs++ - '0'; for(;;) switch(*cs++) { case 'k': n =* 1024; continue; case 'w': n =* 2; continue; case 'b': n =* 512; continue; case '*': case 'x': string = cs; n =* number(); case '\0': return(n); } printf("not a number: %s\n", string); exit(); } cnull(cc) { register c; c = cc; if(cflag&UCASE && c>='a' && c<='z') c =+ 'A'-'a'; if(cflag&LCASE && c>='A' && c<='Z') c =+ 'a'-'A'; null(c); } null(c) { *op = c; op++; if(++obc >= obs) { flsh(); op = obuf; } } ascii(cc) { register c; c = 0; c =| etoa[cc]; if(cbs == 0) { cnull(c); return; } if(c == ' ') { nspace++; goto out; } while(nspace > 0) { null(' '); nspace--; } cnull(c); out: if(++cbc >= cbs) { null('\n'); cbc = 0; nspace = 0; } } ebcdic(cc) { register c; c = cc; if(cflag&UCASE && c>='a' && c<='z') c =+ 'A'-'a'; if(cflag&LCASE && c>='A' && c<='Z') c =+ 'a'-'A'; c = atoe[c] & 0377; if(cbs == 0) { null(c); return; } if(cc == '\n') { while(cbc < cbs) { null(atoe[' ']); cbc++; } cbc = 0; return; } if(cbc == cbs) ntrunc++; cbc++; if(cbc <= cbs) null(c); } term() { stats(); exit(); } stats() { printf("%l+%l records in\n", nifr, nipr); printf("%l+%l records out\n", nofr, nopr); if(ntrunc) printf("%l truncated records\n", ntrunc); } putchar(c) { write(2, &c, 1); } ÌÍÎÏÐÑÒÓÔÕÖרÙÚÛchar *dargv[] { 0, "/dev/rk2", "/dev/rp0", 0 }; struct { char *s_isize; char *s_fsize; int s_nfree; int s_free[100]; int s_ninode; int s_inode[100]; char s_flock; char s_ilock; char s_fmod; int time[2]; int pad[50]; } sblock; int fi; main(argc, argv) char **argv; { int i; if(argc <= 1) { for(argc = 1; dargv[argc]; argc++); argv = dargv; } for(i=1; i 1) printf("%s ", argv[i]); dfree(argv[i]); } } dfree(file) char *file; { int i; fi = open(file, 0); if(fi < 0) { printf("cannot open %s\n", file); return; } sync(); bread(1, &sblock); i = 0; while(alloc()) i++; printf("%l\n", i); close(fi); } alloc() { int b, i, buf[256]; i = --sblock.s_nfree; if(i<0 || i>=100) { printf("bad free count\n"); return(0); } b = sblock.s_free[i]; if(b == 0) return(0); if(b=sblock.s_fsize) { printf("bad free block (%l)\n", b); return(0); } if(sblock.s_nfree <= 0) { bread(b, buf); sblock.s_nfree = buf[0]; for(i=0; i<100; i++) sblock.s_free[i] = buf[i+1]; } return(b); } bread(bno, buf) { int n; extern errno; seek(fi, bno, 3); if((n=read(fi, buf, 512)) != 512) { printf("read error %d\n", bno); printf("count = %d; errno = %d\n", n, errno); exit(); } } #define BUFSIZ 518 int *xx; struct buf { int fdes; char junk[BUFSIZ-2]; } *buf1, *buf2; int *oldnew[2]; int ms[2] {0,0}; /*maximum serial seen en each file*/ int debug 0; int *ixold; int *ixnew; int *a0; int *b0; int *L, *R; int *J; /*index of lines in file b matched to each in file a*/ main(argc,argv) char **argv; { int i; if(argc>1&&*argv[1]=='-') { argc--; argv++; } if(argc!=3) { write(2,"arg count\n",10); exit(); } buf1 = sbrk(BUFSIZ); input(argv); a0 = oldnew[0]; b0 = oldnew[1]; i = 2*ms[1]+4; L = sbrk(i); R = buf2 = sbrk(ifdes); ms[i] = &xx[k]-oldnew[i]; } } /* check does double duty: 1. ferret out any fortuitous correspondences due to counfounding by hashing (which result in "jackpot") 2. collect random access indexes to the two files */ check(argv) char **argv; { register int i, j; int ctold, ctnew; int jackpot; char c,d; fopen(argv[1],buf1); fopen(argv[2],buf2); j = 1; ctold = ctnew = 0; ixold[0] = ixnew[0] = 0; jackpot = 0; for(i=1;i<=ms[0];i++) { if(J[i]==0) { while(getc(buf1)!='\n') ctold++; ixold[i] = ++ctold; continue; } while(jfdes); close(buf2->fdes); return(jackpot); } /* part asks inner to find the x[m][j] vector left-to-right and right-to-left, and then partitions the problem to give a maximum string. This scheme, due to hirshberg, allows one to due the dynamic programming in linear space. */ part(a,m,b,n) int a[],b[]; { int h,i1,i2,j1,j2,k,k0; int t,u; if(debug) { vprint("part a",a,a0,m,1); vprint("part b",b,b0,n,1); } while(m>0&&n>0&&a[1]==b[1]) { J[++a-a0] = ++b-b0; m--; n--; } while(m>0&&n>0&&a[m]==b[n]) J[a-a0+m--] = b-b0+n--; if(m<=0||n<=0) return; L[0] = R[0] = 0; h = m/2; inner(a,h,b,n,L,1); inner(a+m+1,m-h,b+n+1,n,R,-1); t = 0; k0 = 0; for(k=0;k<=n;k++) if((u=L[k]+R[n-k])>t) { t = u; k0 = k; } strip(a,h,b,k0,L,1,&i1,&j1); strip(a+m+1,m-h,b+n+1,n-k0,R,-1,&i2,&j2); part(a,i1,b,j1); part(a+m-i2,i2,b+n-j2,j2); } /* inner generates the last row of the matrix x[i,j] where x[i,j] shows the length of the longest common subsequence between the first i elements of vector a and the first j elements of vector b. x[i,j] is computed by the recurrence x[0,j] = x[i,0] = 0 x[i,j] = max {x[i-1,j], x[i,j-1], x[i-1,j-1]+c[i,j] where c[i,j] = 0 iff a[i]=b[j] */ inner(a,m,b,n,x,d) int a[],b[],x[]; int d; /* +1 if a and b stored forward, -1 backward */ { int aid; /* a[i*d] */ int *lbjd; /* &b[j*d] */ int i; int *y; register int xi_j_; /* x[i-1][j-1] */ register int j,t; if(debug) { vprint("inn a",a,a0,m,d); vprint("inn b",b,b0,n,d); } for(j=0;j<=n;j++) x[j] = 0; y = x; for(i=1;i<=m;i++) { x = y; xi_j_ = t = 0; aid = a[i*d]; lbjd = b; for(j=1;j<=n;j++) { if(t<*++x) t = *x; /*t=x[i][j-1] *++x=x[i-1][j]*/ if(aid== *(lbjd=+d) && xi_j_>=t) t++; xi_j_ = *x; *x = t; /* x[i][j] = t */ } } } /* strip finds the last mated pair of elements in the maximum matching of vector a and vector b, given the appropriate x vector computed by inner. it strips all elements after this mated pair, */ strip(a,m,b,n,x,d,li,lj) int a[],b[],x[]; int *li,*lj; { register int i,j,*laid; int bjd; if(debug) { vprint("strip a",a,a0,m,d); vprint("strip b",b,b0,n,d); vprint("strip x",x,x,n,1); } for(j=n;j>0&&x[j]==x[j-1];j--); bjd = b[j*d]; laid = &a[(m+1)*d]; for(i=m;i>0&&*(laid=-d)!=bjd;i--); *li = i; *lj = j; } output(argv) char **argv; { int dir; int m; int i0,i1,j0,j1; extern fout; dir = **argv=='-'; fout = dup(1); buf1->fdes = open(argv[1],0); buf2->fdes = open(argv[2],0); m = ms[0]; J[0] = 0; J[m+1] = ms[1]+1; if(dir==0) for(i0=1;i0<=m;i0=i1+1) { while(i0<=m&&J[i0]==J[i0-1]+1) i0++; j0 = J[i0-1]+1; i1 = i0-1; while(i1=1;i0=i1-1) { while(i0>=1&&J[i0]==J[i0+1]-1&&J[i0]!=0) i0--; j0 = J[i0+1]-1; i1 = i0+1; while(i1>1&&J[i1-1]==0) i1--; j1 = J[i1-1]+1; J[i1] = j1; change(i1,i0,j1,j0,dir); } flush(); } change(a,b,c,d,dir) { if(a>b&&c>d) return; range(a,b); putchar(a>b?'a':c>d?'d':'c'); if(dir==0) range(c,d); putchar('\n'); if(dir==0) { fetch(ixold,a,b,buf1,"* "); if(a<=b&&c<=d) printf("---\n"); } fetch(ixnew,c,d,buf2,dir==0?". ":""); if(dir!=0&&c<=d) printf(".\n"); } range(a,b) { if(a>b) printf("%d",b); if(a<=b) printf("%d",a); if(afdes,f[i-1],0); read(lb->fdes,lb->junk,f[i]-f[i-1]); printf(pref); for(j=0;jjunk[j]); } } vprint(s,v,v0,n,d) int *v,*v0; char *s; { int i; printf("%s\n",s); for(i=1;i<=n;i++) printf("%7o",v-v0+i*d); printf("\n"); for(i=1;i<=n;i++) printf("%7o",v[i*d]); printf("\n"); } àáâãäåæçèéêë.globl _readhash .globl getc h = 0 s = 2 .data _readhash: mov 2(sp),0f mov r5,-(sp) sub $4,sp clr h(sp) clr s(sp) 1: jsr r5,getc; 0: 0 bes 2f bic $177400,r0 cmp r0,$'\n beq 1f ashc $-16.,r0 ashc s(sp),r0 add r0,h(sp) adc h(sp) add r1,h(sp) adc h(sp) add $7,s(sp) cmp s(sp),$16. blt 1b sub $16.,s(sp) br 1b 1: clr r0 cmp h(sp),$-1 beq 1f mov h(sp),r0 1: cmp (sp)+,(sp)+ mov (sp)+,r5 rts pc 2: mov $-1,r0 br 1b / dsw - delete from tty cmp (sp)+,$2 blt 1f tst (sp)+ mov (sp)+,0f 1: sys stat; 0:dot; stbuf bes error mov stbuf+4,r0 bic $!60000,r0 cmp r0,$40000 bne error mov 0b,0f sys open; 0:..; 0 bes error mov r0,r1 1: clrb buf+17. mov r1,r0 sys read; buf; 16. bes done tst r0 beq done tst buf beq 1b mov 0b,r2 mov $obuf,r3 2: movb (r2)+,(r3)+ bne 2b mov $buf+2,r2 dec r3 cmpb -1(r3),$'/ beq 2f movb $'/,(r3)+ 2: movb (r2)+,(r3)+ bne 2b sys stat; obuf; stbuf bes error bit $60000,stbuf+4 bne 1b mov $buf+2,r2 2: tstb (r2)+ bne 2b movb $' ,-(r2) sub $buf+1,r2 mov r2,0f 2: mov $1,r0 sys write; buf+2; 0:.. clr r0 sys read; ch; 1 cmpb ch,$'\n beq 1b clr r0 sys read; ch1; 1 cmpb ch1,$'\n beq 3f 4: clr r0 sys read; ch; 1 cmpb ch,$'\n beq 2b br 4b 3: cmpb ch,$'x beq done cmpb ch,$'y bne 2b sys unlink; obuf bes error br 1b done: sys exit error: mov $1,r0 sys write; mes; 2 sys exit dot: <.\0> mes: .bss obuf: .=.+100. stbuf: .=.+40. buf: .=.+18. ch: .=.+1 ch1: .=.+1 / dusg -- summarize disk usage .globl putc, flush, _end mov $1,obuf mov (sp)+,r5 tst (sp)+ 1: dec r5 bgt 2f tstb buf1 beq 3f jsr r5,flush; obuf sys exit 3: mov $dot,r0 br 3f 2: mov (sp)+,r0 3: cmpb (r0),$'- bne 2f cmpb 1(r0),$'a bne 3f inc aflg br 1b 3: cmpb 1(r0),$'s bne 1b dec aflg br 1b 2: mov $buf1,r1 2: movb (r0)+,(r1)+ bne 2b dec r1 clr buf3+10. mov $_end,iptr mov $_end,brk sys break; _end jsr pc,tree tst aflg bpl 1b jsr r5,name br 1b tree: sys stat; buf1; buf2 bes 1f bic $!60000,buf2+4 bit $20000,buf2+4 beq 2f 1: clr r4 rts pc 2: mov $_end,r2 mov buf2+2,r3 1: cmp r2,iptr bhis 1f cmp r3,(r2)+ bne 1b clr r4 jsr r5,cname rts pc 1: cmp r2,brk blo 1f add $512.,brk sys break; brk: .. 1: mov r3,(r2)+ mov r2,iptr cmp $40000,buf2+4 beq 1f jsr pc,gsize jsr r5,cname rts pc 1: jsr pc,gsize mov r4,r3 sys open; buf1; 0 bec 1f rts pc 1: mov r0,-(sp) mov r1,-(sp) 1: mov 2(sp),r0 sys read; buf3; 16. bes 1f tst r0 beq 1f tst buf3 beq 1b cmp buf3+2,$".\0 beq 1b cmp buf3+2,$".. bne 2f tst buf3+4 beq 1b 2: mov $buf3+2,r2 mov (sp),r1 movb $'/,(r1)+ cmpb -2(r1),$'/ bne 2f dec r1 2: movb (r2)+,(r1)+ bne 2b dec r1 mov r3,-(sp) jsr pc,tree mov r4,r3 add (sp)+,r3 br 1b 1: mov (sp)+,r1 clrb (r1) mov (sp)+,r0 sys close mov r3,r4 tst aflg bmi 1f jsr r5,name 1: rts pc cname: tst aflg bgt name rts r5 name: jsr pc,pnum mov $011,r0 jsr pc,pchar mov $buf1,r2 1: movb (r2)+,r0 beq 1f jsr pc,pchar br 1b 1: mov $'\n,r0 jsr pc,pchar rts r5 gsize: mov r5,-(sp) mov buf2+10.,r5 / size movb buf2+9.,r4 add $511.,r5 adc r4 alsc $-9,r4 cmp r5,$8. blo 1f mov r5,-(sp) add $255.,r5 alsc $-8,r4 add (sp)+,r5 1: mov r5,r4 mov (sp)+,r5 rts pc pnum: mov r4,-(sp) mov r5,-(sp) mov r4,r5 jsr pc,1f mov (sp)+,r5 mov (sp)+,r4 rts pc 1: clr r4 dvd $10.,r4 mov r5,-(sp) mov r4,r5 beq 1f jsr pc,1b 1: mov (sp)+,r0 add $'0,r0 jsr pc,pchar rts pc pchar: jsr r5,putc; obuf rts pc dot: <.\0> .bss iptr: .=.+2 buf1: .=.+100. buf2: .=.+40. buf3: .=.+18. aflg: .=.+2 obuf: .=.+520. # /* * incremental dump * dump isuodh filesystem * i from date in /etc/ddate * s specify tape size in feet (feet = blocks/9) * u update /etc/ddate to current date * 0 dump from the epoch * d dump specified number of days * h dump specified number of hours */ char *dargv[] { 0, "i", "/dev/rp0", 0 }; char *dfile "/etc/ddate"; char *ofile "/dev/mt0"; struct inode { int i_mode; char i_nlink; char i_uid; char i_gid; char i_size0; char *i_size1; int i_addr[8]; int i_atime[2]; int i_mtime[2]; }; /* modes */ #define IALLOC 0100000 #define IFMT 060000 #define IFDIR 040000 #define IFCHR 020000 #define IFBLK 060000 #define ILARG 010000 struct { char *s_isize; char *s_fsize; int s_nfree; int s_free[100]; int s_ninode; int s_inode[100]; char s_flock; char s_ilock; char s_fmod; int time[2]; int pad[50]; } sblock; int *talist; int fi; int buf[256]; int dbuf[256]; int ibuf[256]; char *date[2]; char *ddate[2]; int fo; int pher; int dflg; char *tsize 15000; main(argc, argv) char **argv; { char *key; int s, i, nfil, nblk; register *tap; register struct inode *ip; time(date); if(argc == 1) { argv = dargv; for(argc = 1; dargv[argc]; argc++); } argc--; argv++; key = *argv; while(*key) switch(*key++) { default: printf("bad character in key\n"); exit(); case 'i': i = open(dfile, 0); if(i >= 0) { read(i, ddate, 4); close(i); } continue; case 's': /* tape size */ tsize = number(argv[1]) * 9; argv++; argc--; continue; case 'u': /* rewrite date */ dflg++; continue; case '0': /* dump all */ ddate[0] = ddate[1] = 0; continue; case 'd': /* dump some number of days */ i = 21600; goto sd; case 'h': /* dump some number of hours */ i = 900; goto sd; sd: ddate[0] = date[0]; ddate[1] = date[1]; s = number(argv[1])*4; argv++; argc--; while(s) { if(i > ddate[1]) ddate[0]--; ddate[1] =- i; s--; } continue; } if(argc <= 1) { printf("no file system specified\n"); exit(); } printf("%s:\n", argv[1]); fi = open(argv[1], 0); if(fi < 0) { printf("cannot open %s\n", argv[1]); exit(); } printf("incremental dump from\n"); pdate(ddate); sync(); bread(1, &sblock); talist = sbrk(size(0, sblock.s_isize*32)*512); tap = talist; nfil = 0; nblk = 0; for(i=0; ii_mode == 0) goto no; if(ip->i_nlink == 0) goto no; s = size(ip->i_size0, ip->i_size1); if(ip->i_mtime[0] < ddate[0]) goto no; if(ip->i_mtime[0] == ddate[0] && ip->i_mtime[1] < ddate[1]) goto no; nfil++; nblk =+ s; *tap = s+1; no: tap++; } } printf("%l files\n%l blocks\n", nfil, nblk); otape(); tap = buf; clrbuf(tap); *tap++ = sblock.s_isize; *tap++ = sblock.s_fsize; *tap++ = date[0]; *tap++ = date[1]; *tap++ = ddate[0]; *tap++ = ddate[1]; *tap++ = tsize; swrite(buf); i = size(0, sblock.s_isize*32); tap = talist; while(i--) { bwrite(tap); tap =+ 256; } tap = talist; for(i=0; i= 0) { write(i, date, 4); printf("date updated\n"); pdate(date); } } } pdate(d) int *d; { if(d[0] == 0 && d[1] == 0) printf("the epoch\n"); else printf(ctime(d)); } dump(ip, sz) struct inode *ip; { register *p, *q; p = dbuf; q = ip; clrbuf(p); while(q < &ip->i_mtime[2]) *p++ = *q++; swrite(dbuf); if(ip->i_mode & (IFBLK&IFCHR)) { if(sz != 0) printf("special\n"); return; } for(p = &ip->i_addr[0]; p < &ip->i_addr[8]; p++) { if(*p == 0) continue; if(ip->i_mode&ILARG) { bread(*p, ibuf); for(q = &ibuf[0]; q < &ibuf[256]; q++) { if(*q == 0) continue; if(--sz < 0) goto pe; bread(*q, dbuf); bwrite(dbuf); } } else { if(--sz < 0) goto pe; bread(*p, dbuf); bwrite(dbuf); } } if(sz) goto pe; return; pe: clrbuf(dbuf); while(--sz >= 0) bwrite(dbuf); pher++; } bread(bno, b) { seek(fi, bno, 3); if(read(fi, b, 512) != 512) { printf("read error %l\n", bno); exit(); } } clrbuf(b) int *b; { register i, *p; p = b; i = 256; while(i--) *p++ = 0; } swrite(b) int *b; { register i, s, *p; i = 255; s = 0; p = b; while(i--) s =+ *p++; *p = 031415 - s; bwrite(b); } bwrite(b) { static char *ta; if(ta++ > tsize) { printf("change tapes\n"); close(fo); while((ta = getchar()) != '\n') if(ta == 0) exit(); ta = 0; otape(); } if(write(fo, b, 512) != 512) { printf("write error\n"); exit(); } } number(s) char *s; { register n, c; n = 0; while(c = *s++) { if(c<'0' || c>'9') continue; n = n*10+c-'0'; } return(n); } size(s0, s1) { register s; extern ldivr; s = ldiv(s0&0377, s1, 512); if(ldivr) s++; return(s); } otape() { fo = open(ofile, 1); if(fo < 0) { printf("can not open %s\n", ofile); exit(); } } ö÷øùúûüýþÿmain(argc, argv) int argc; char *argv[]; { int i; argc--; for(i=1; i<=argc; i++) printf("%s%c", argv[i], i==argc? '\n': ' '); } / / copyright 1972 bell telephone laboratories inc. / / ed1 -- text editor signal = 48. cmpb *2(sp),$'- bne 1f inc shflg jsr r5,print; qed 1: jsr r5,inite sys signal; 1; 1 ror r0 bcs 1f sys signal; 1; cq1 / hangup 1: sys signal; 2; 1 bcs 1f sys signal; 2; error / interrupt inc intrflg 1: sys signal; 3; 1 clr filebuf clr filsav clr exprbuf mov $'\n,nl mov sp,gsp mov sp,r4 mov (r4)+,argc dec argc ble 8f tst (r4)+ 0: mov (r4)+,r3 cmpb (r3),$'- bne 1f inc nonum dec argc ble 8f br 0b 1: mov $filebuf,r1 mov $filsav,r2 1: movb (r3),(r2)+ movb (r3)+,(r1)+ bne 1b mov dol,addr2 mov $12,ch jmp cr1 8: jmp advanc 9: error: jsr r5,print; qerr sys signal; 2; error / interrupt clr r0 sys seek; 0; 2 clr pflag jsr r5,gclear mov ch,peekc 1: jsr r5,getc cmp r1,$12 bne 1b 8: advanc: mov gsp,sp tst pflag beq 1f clr pflag mov dot,addr1 mov dot,addr2 jmp cp1 1: tst gflag beq 1f tstb *gbufp bne 3f mov zero,r4 2: tst (r4)+ cmp r4,dol bhi 2f bit $1,(r4) beq 2b dec (r4) mov r4,dot mov $gbuf,gbufp br 3f 2: jsr r5,gclear 1: tst shflg beq 3f mov $1,r0 sys write; prompt; 1 3: clr adrflg jsr r5,address br command inc adrflg mov addr,addr1 adrloop: mov addr,addr2 jsr r5,switch; delimt br command delimt: ';; 1f ',; 2f 0 1: cmp addr,dol bhi 9b mov addr,dot 2: jsr r5,address br 9b mov addr2,addr1 br adrloop command: jsr r5,switch; comndt br 9b comndt: 'a; ca 'c; cc 'd; cd 'e; ce 'f; cf 'g; cg 'i; ci 'k; ck 'l; cl 'm; cm 'n; cn 'p; cp 'o; co 'q; cq 'r; cr 's; cs / 't; ct 'v; cv 'w; cw '=; ceq '!; cex '\n; cnl 0 co: jsr r5,setna jsr r5,getc cmp r1,$'\n beq 9f mov r1,r3 jsr r5,newline cmp r3,$'s bne 0f inc nonum br 1f 0: cmp r3,$'v bne 9f clr nonum 1: jmp advanc ca: jsr r5,set.d jsr r5,newline br ci2 cc: jsr r5,set.d jsr r5,newline jsr r5,delete mov addr1,addr2 br ci1 cd: jsr r5,set.d jsr r5,newline jsr r5,delete mov addr1,dot cmp dot,dol blos 8f mov dol,dot br 8f ci: jsr r5,set.d jsr r5,newline ci1: sub $2,addr2 cmp addr2,zero blo 9f ci2: mov addr2,dot 1: jsr r5,append; rdline br 1b 8: jmp advanc 9: jmp error cp: jsr r5,set.d jsr r5,newline cp1: jsr r5,nonzero 1: mov addr1,r4 jsr r5,getline jsr r5,print; linebuf add $2,addr1 cmp addr1,addr2 blos 1b mov addr2,dot br 8b cq: jsr r5,setna jsr r5,newline cq1: jsr r5,terme sys exit ce: jsr r5,setna jsr r5,getc cmp r1,$' / bne 9b mov $fout+2,r0 1: clr (r0)+ cmp r0,brk bne 1b jsr r5,terme jsr r5,inite mov $' ,peekc mov pc,eflag cr: jsr r5,set. jsr r5,filnam cr1: sys open; filebuf; 0 bes 9b mov r0,f mov addr2,dot clr filec clr count 1: jsr r5,append; rdfile br 1b cs: jsr r5,set.d jsr r5,nonzero 1: jsr r5,getc cmp r1,$' beq 1b cmp r1,$'\n beq 9b mov r1,-(sp) jsr r5,compile mov $rhsbuf,r3 1: jsr r5,getc cmp r1,$'\\ bne 2f jsr r5,getc cmp r1,$'\n beq 9b bis $200,r1 2: movb r1,(r3)+ cmp r1,$'\n beq 9b cmp r1,(sp) bne 1b clrb -(r3) jsr r5,getc cmp r1,$'g bne 1f inc gsubf br 2f 1: clr gsubf mov r1,peekc 2: jsr r5,newline mov gflag,(sp) 1: mov addr1,r4 jsr r5,execute br 4f mov pc,(sp) jsr r5,dosub tst gsubf beq 2f 3: cmpb *loc2,$'\n beq 2f jsr r5,gexecute br 2f jsr r5,dosub br 3b 2: mov $subbuf,r0 mov *addr1,-(sp) jsr r5,putline mov (sp)+,r0 jsr r5,findka beq 4f mov *dot,(r1) 4: add $2,addr1 cmp addr1,addr2 blos 1b tst (sp)+ beq 9f br 8f 8: jmp advanc 9: jmp error cw: jsr r5,set1d jsr r5,nonzero jsr r5,filnam sys creat; filebuf; 666 bes 9b mov r0,f clr count mov $fbuf,filep 1: mov addr1,r4 jsr r5,getline mov $linebuf,r0 mov r0,r1 jsr r5,size add r4,count 2: movb (r1)+,r4 movb r4,*filep inc filep cmp filep,$efbuf blo 3f mov f,r0 sys write; fbuf; efbuf-fbuf bes 9b mov $fbuf,filep 3: cmp r4,$'\n bne 2b add $2,addr1 cmp addr1,addr2 blos 1b mov filep,r0 sub $fbuf,r0 beq 1f mov r0,0f mov f,r0 sys 0; 7f .data 7: sys write; fbuf; 0:.. .text bes 9b 1: mov f,r0 sys close tst nonum bne 8b jsr r5,printn br 8b ceq: jsr r5,set1d jsr r5,newline mov addr2,count sub zero,count asr count jsr r5,printn br 8b cex: jsr r5,setna sys fork br 1f bes 9b mov r0,-(sp) sys signal; 2; 1 / ignore intr 2: sys wait bes 2f cmp r0,(sp) bne 2b 2: tst (sp)+ tst intrflg beq 3f sys signal; 2; error / reinstate intr 3: jsr r5,print; qex br 8b 1: mov fin,r0 sys close mov fout,r0 sys close sys exec; 2f; 1f sys exit 1: 2f 0 2: .even 9: jmp error cnl: jsr r5,set.d tst adrflg bne 1f cmp dot,dol bhis 9b add $2,addr2 1: mov addr2,addr1 jmp cp1 cl: jsr r5,set.d jsr r5,newline jsr r5,nonzero 1: mov addr1,r4 jsr r5,getline jsr r5,cprint add $2,addr1 cmp addr1,addr2 blos 1b mov addr2,dot jmp 8f cprint: mov $linebuf,r3 1: mov $subbuf,r4 clr count 2: inc count cmp count,$50. blos 3f movb $'\\,(r4)+ movb $'\n,(r4)+ jsr r5,print; subbuf br 1b 3: movb (r3)+,r0 cmp r0,$33 bne 3f movb (r3)+,r0 cmp r0,$'\n beq 1f movb r0,(r4)+ movb $10,(r4)+ movb $'^,(r4)+ br 2b 3: cmp r0,$'\n beq 1f mov $estab,r1 3: cmpb r0,(r1)+ beq 3f tstb (r1)+ bne 3b cmpb r0,$040 bhis 0f movb $'\\,(r4)+ jsr pc,numb add $3,count br 2b 0: movb r0,(r4)+ br 2b 3: movb (r1),(r4)+ movb $10,(r4)+ movb $'-,(r4)+ br 2b 1: movb $'\n,(r4)+ jsr r5,print; subbuf rts r5 numb: mov r2,-(sp) mov r3,-(sp) mov r0,r3 mov $3,r0 jsr pc,numb1 mov (sp)+,r3 mov (sp)+,r2 rts pc numb1: clr r2 dvd $8.,r2 mov r3,-(sp) mov r2,r3 dec r0 beq 1f jsr pc,numb1 1: add $'0,(sp) movb (sp)+,(r4)+ rts pc estab: .byte 10,'\\ .byte 11,'> .byte 15,'< .byte 16,'O .byte 17,'I .byte 00,00 8: jmp advanc 9: jmp error cg: clr -(sp) br 1f cv: mov pc,-(sp) 1: jsr r5,set1d jsr r5,nonzero tst gflag bne 9b 1: jsr r5,getc cmp r1,$' / beq 1b cmp r1,$'\n beq 9b jsr r5,compile mov addr1,-(sp) mov zero,r4 1: tst (r4)+ cmp r4,dol bhi 1f bic $1,(r4) br 1b 1: mov (sp),r4 cmp r4,addr2 bhi 1f add $2,(sp) jsr r5,execute br 2f tst 2(sp) bne 1b mov (sp),r4 inc -(r4) br 1b 2: tst 2(sp) beq 1b mov (sp),r4 inc -(r4) br 1b 1: mov $gbuf,r4 cmp (sp)+,(sp)+ clr r3 1: jsr r5,getc cmp r1,$'\n bne 2f tst r3 beq 5f tstb -(r4) br 3f 2: cmp r1,$'\\ bne 3f inc r3 br 4f 3: clr r3 4: movb r1,(r4)+ cmp r4,$egbuf bhis 9f br 1b 5: movb r1,(r4)+ clrb (r4) inc gflag 8: jmp advanc 9: jmp error cm: jsr r5,set.d jsr r5,nonzero jsr r5,address br 9b jsr r5,newline cmp addr,addr1 blo 1f cmp addr,addr2 bhi 2f br 9b 1: mov addr,r1 tst (r1)+ mov addr2,addr mov addr1,r2 mov addr2,dot sub r2,dot add r1,dot 1: cmp r2,r1 beq 8b tst -(r2) br 3f 2: mov addr1,r1 mov addr2,r2 mov addr,dot 3: mov r2,r3 tst (r3)+ mov r3,r4 tst (r4)+ mov (r3),r0 4: mov -(r3),-(r4) cmp r3,r1 bhi 4b mov r0,(r3) tst (r1)+ tst (r2)+ cmp r2,addr blo 3b br 8b gclear: clr gflag mov $gbuf,gbufp dec gbufp clrb *gbufp rts r5 ck: jsr r5,set.d jsr r5,getc cmp r1,$040 blos 9b mov r1,r3 jsr r5,newline mov r3,r1 jsr r5,findk beq 1f mov kp,r2 add $2,kp cmp kp,$ekname blo 1f mov $kname,kp 1: mov r1,(r2) mov addr2,dot mov *addr2,[kaddr-kname](r2) bic $1,[kaddr-kname](r2) br 8b cn: jsr r5,setna jsr r5,newline mov $kname,r1 mov $linebuf,r0 1: movb (r1)+,(r0)+ beq 1f tstb (r1)+ br 1b 1: movb $'\n,-(r0) jsr r5,print; linebuf br 8f cf: jsr r5,setna jsr r5,getc cmp r1,$'\n beq 1f mov r1,peekc mov pc,eflag jsr r5,filnam 1: mov $filsav,r1 1: tstb (r1)+ bne 1b movb $'\n,-(r1) jsr r5,print; filsav clrb (r1) 8: jmp advanc /ct: / jsr r5,set.d / jsr r5,nonzero / jsr r5,address / br 4f / jsr r5,newline / cmp addr,addr1 / blo 1f / cmp addr,addr2 / bhi 2f /4: / jmp 9b /1: / mov $2,gork / br 3f /2: / clr gork /3: / mov addr1,r4 / jsr r5,append; getline / add $2,addr1 / cmp addr1,addr2 / bhi 8b / add gork,addr1 / add gork,addr2 / br 3b /.bss /gork: .=.+2 /.text      / / copyright 1972 bell telephone laboratories inc. / / ed2 -- text editor address: clr minflg clr addr ad1: jsr r5,switch; addrt tst minflg bne 9f tst addr beq 1f tst (r5)+ 1: rts r5 addrt: ' ; ad1 11; ad1 '+; ad1 '/; fsrch '?; bsrch '-; amin '.; adot '$; adol '0; num0 '1; num1 '2; num1 '3; num1 '4; num1 '5; num1 '6; num1 '7; num1 '8; num1 '9; num1 ''; amark '^; up1 0 adot: jsr r5,addrel; dot br ad1 adol: jsr r5,addrel; dol br ad1 up1: mov dot,r1 cmp r1,zero beq 9f tst -(r1) mov r1,f jsr r5,addrel; f br ad1 9: jmp error fsrch: jsr r5,compile mov dot,-(sp) 1: add $2,(sp) cmp (sp),dol blos 2f mov zero,(sp) 2: cmp (sp),zero beq 2f mov (sp),r4 jsr r5,execute br 2f br 3f 2: cmp (sp),dot bne 1b br 9b bsrch: jsr r5,compile mov dot,-(sp) 1: sub $2,(sp) cmp (sp),zero bhis 2f mov dol,(sp) 2: cmp (sp),zero beq 2f mov (sp),r4 jsr r5,execute br 2f br 3f 2: cmp (sp),dot bne 1b br 9b 3: mov (sp)+,f jsr r5,addrel; f br ad1 addrel: add minflg,addr bne 9b mov *(r5)+,addr rts r5 amin: tst minflg bne 9f inc minflg jmp ad1 num0: mov $8.,-(sp) br 1f num1: mov $10.,-(sp) 1: mov r1,peekc clr r3 1: jsr r5,getc cmp r1,$'0 blt 1f cmp r1,$'9 bgt 1f mpy (sp),r3 sub $'0,r1 add r1,r3 br 1b 1: mov r1,peekc tst addr bne 1f mov zero,addr 1: asl r3 tst minflg beq 1f clr minflg neg r3 1: add r3,addr jmp ad1 9: jmp error 8: jmp advanc amark: jsr r5,getc jsr r5,findk bne 9b mov [kaddr-kname](r2),r2 mov zero,r4 1: mov (r4)+,r3 bic $1,r3 cmp r2,r3 beq 2f cmp r4,dol blos 1b br 9b 2: tst -(r4) mov r4,f jsr r5,addrel; f jmp ad1 findk: clr -(sp) mov $kname,r2 1: tst (r2) beq 2f cmp r1,(r2) beq 3f tst (r2)+ cmp r2,$ekname blos 1b clr r2 2: inc (sp) 3: tst (sp)+ rts r5 findka: mov $kaddr,r1 1: cmp (r1)+,r0 beq 2f cmp r1,$ekaddr blos 1b clr r1 rts r5 2: tst -(r1) rts r5 printn: mov r0,-(sp) mov r1,-(sp) clr r0 mov count,r1 mov $linebuf,r3 jsr r5,1f movb $'\n,(r3)+ jsr r5,print; linebuf mov (sp)+,r1 mov (sp)+,r0 rts r5 1: clr r0 dvd $10.,r0 mov r1,-(sp) mov r0,r1 beq 1f jsr r5,1b 1: add $'0,(sp) movb (sp)+,(r3)+ rts r5 set.: tst adrflg bne testa br 1f set1d: tst adrflg bne testa mov zero,r4 cmp r4,dol bhis 9b tst (r4)+ mov r4,addr1 1: mov dol,addr2 rts r5 set.d: tst adrflg bne testa mov dot,r4 mov r4,addr1 mov r4,addr2 rts r5 testa: mov addr1,r4 cmp r4,addr2 bhi 9b jsr r5,1f mov addr2,r4 jsr r5,1f rts r5 1: cmp r4,zero blo 9f cmp r4,dol bhi 9f rts r5 nonzero: cmp addr1,zero blos 9f rts r5 setna: tst adrflg bne 9f rts r5 8: jmp advanc 9: jmp error newline: jsr r5,getc cmp r1,$'p bne 1f jsr r5,getc inc pflag 1: cmp r1,$'\n bne 9b rts r5 rdline: mov $linebuf,r4 1: jsr r5,getc movb r1,(r4)+ cmp r1,$'\n beq 1f cmp r4,$elinbuf blo 1b br 9b 1: cmp linebuf,$".\n beq 8b rts r5 append: cmp dol,$ebuffer-5 bhis 9b jsr r5,*(r5)+ mov dol,r4 tst (r4)+ mov r4,dol jsr r5,setbrk mov r4,r3 tst (r3)+ clr (r3) add $2,dot 1: mov -(r4),-(r3) cmp r4,dot bhi 1b mov $linebuf,r0 jsr r5,putline rts r5 putline: mov r0,r4 mov oblkp,r2 bit $1,r2 beq 2f jsr r5,1f 2: mov dska,r1 add r2,r1 mov r1,*dot 2: movb (r4)+,r1 clr r0 jsr r5,1f cmp r1,$'\n bne 2b mov r2,oblkp rts r5 1: movb r1,obuf(r2) inc r2 bit $777,r2 bne 2f mov fout,r0 sys 0;7f .data 7: sys seek; dska: 0; 0 .text mov fout,r0 sys write; obuf; 512. bes tmperr cmp dska,$65536.-512. bhis tmperr add $512.,dska clr r2 2: rts r5 tmperr: mov $1,r0 sys write; scream; 3 br 9f scream: ; .even getline: mov r3,-(sp) mov $linebuf,r1 mov (r4),r4 bic $1,r4 mov r4,r3 bic $777,r4 1: mov $ibuf,2f+2 bic $!777,r3 cmp r4,iblk beq 4f cmp r4,dska bne 3f mov $obuf,2f+2 br 4f 3: mov r4,iblk mov fin,r0 sys 0; 7f .data 7: sys seek; iblk: -1; 0 .text mov fin,r0 sys read; ibuf; 512. 4: jmp 2f .data 2: movb ibuf(r3),r0 jmp 7f .text 7: movb r0,(r1)+ cmp r0,$'\n beq 1f inc r3 bit $777,r3 bne 4b add $512.,r4 br 1b 1: mov (sp)+,r3 rts r5 9: jmp error filnam: mov $filebuf,r4 jsr r5,getc cmp r1,$'\n beq 2f cmp r1,$' / bne 9b 1: jsr r5,getc cmp r1,$' / beq 1b cmp r1,$'\n beq 2f movb r1,(r4)+ cmp r4,$filebuf+filsiz blo 1b br 9b 2: cmp r4,$filebuf beq 4f clrb (r4) tst eflag beq 3f clr eflag 1: mov $filebuf,r3 mov $filsav,r4 2: movb (r3)+,(r4)+ bne 2b 3: tstb filsav beq 1b rts r5 4: tstb filsav beq 9b mov $filsav,r3 mov $filebuf,r4 br 2b rdfile: mov $linebuf,r4 1: jsr r5,fchar movb r1,(r4)+ cmp r1,$'\n beq 1f cmp r4,$elinbuf blo 1b br 9b 1: rts r5 fchar: dec filec blt 1f movb *filep,r1 inc filep tst r1 beq fchar rts r5 1: mov f,r0 sys read; fbuf; efbuf-fbuf bes 9b add r0,count mov r0,filec beq 1f mov $fbuf,filep br fchar 1: mov f,r0 sys close tst nonum bne 0f jsr r5,printn 0: jmp advanc delete: jsr r5,nonzero mov addr1,r3 mov dol,r0 add r3,r0 mov addr2,r4 sub r4,r0 sub $2,r0 mov r0,dol tst (r4)+ 1: mov (r4)+,(r3)+ bne 1b jsr r5,setbrk rts r5 inite: movb $'a,qetmp+8 1: sys stat; qetmp; linebuf bec 2f sys creat; qetmp; 400 bec 1f 2: incb qetmp+8 cmpb qetmp+8,$'z blos 1b br e1 1: mov r0,fout sys open; qetmp; 0 bes e1 mov r0,fin mov $buffer,r0 mov r0,zero mov r0,dol mov r0,dot jsr r5,setbrk mov $-1,iblk mov $1,oblkp clr dska mov $kname,r0 mov r0,kp 1: clr (r0)+ cmp r0,$ekname blos 1b rts r5 e1: jsr r5,print; qbadf sys exit terme: mov fin,r0 sys close mov fout,r0 sys close sys unlink; qetmp rts r5 setbrk: mov dol,-(sp) add $516.,(sp) bic $777,(sp) cmp (sp),brk beq 1f mov (sp),brk sys 0; 7f .data 7: sys break; brk:.. .text 1: tst (sp)+ rts r5 / / copyright 1972 bell telephone laboratories inc. / / ed3 -- text editor compile: mov r1,compt mov r1,prect mov $exprbuf,r3 jsr r5,switch; prect jsr r5,cop; 2 br cadv .data prect: ..; ceof1 '^; cadv1 prect1: '*; cerr 0 .text cadv1: jsr r5,switch; prect1 / ^* case cadv: jsr r5,switch; compt jsr r5,cop; 4 jsr r5,getc movb r1,(r3)+ cmp r3,$eexprbuf blo cadv br cerr .data compt: ..; ceof '\\; cesc '\n; cerr '.; cdot '*; cast '$; cdol '[; cccl 0 .text ceof: clrb (r3)+ cmp r3,$eexprbuf-1 bhis cerr movb $1,(r3)+ rts r5 ceof1: tst (r3) beq cerr rts r5 cesc: jsr r5,cop; 4 jsr r5,getc cmp r1,$'\n beq cerr movb r1,(r3)+ cmp r3,$eexprbuf blo cadv cerr: clr exprbuf jmp 9b cdot: jsr r5,cop; 8. br cadv cdol: jsr r5,getc mov r1,peekc cmp r1,compt beq 1f jsr r5,cop; 4 movb $'$,(r3)+ cmp r3,$eexprbuf blo cadv br cerr 1: jsr r5,cop; 20. br cadv cccl: jsr r5,cop; 12. jsr r5,getc cmp r1,$'^ bne 1f movb *f,r1 add $4,r1 movb r1,*f jsr r5,getc 1: cmp r1,$'\n beq cerr movb r1,(r3)+ cmp r3,$eexprbuf-1 bhis cerr jsr r5,getc cmp r1,$'] bne 1b clrb (r3)+ br cadv cast: bisb $2,*f br cadv cop: mov r3,f movb (r5)+,(r3)+ cmp r3,$eexprbuf bhis cerr tstb (r5)+ rts r5 gexecute: cmpb exprbuf,$2 beq 1f rts r5 / ^ in global substitute 1: mov $linebuf,r3 mov $subbuf,r4 1: movb (r4)+,(r3) cmpb (r3)+,$'\n bne 1b mov loc2,r4 add $linebuf-subbuf,r4 mov r4,locs br 1f execute: jsr r5,getline mov $linebuf,r4 clr locs 1: mov r4,loc1 mov $exprbuf,r3 eadv: movb (r3)+,r1 jmp *1f(r1) 1: eeof ecmf echr echrs edot edots eccl eccls enccl enccls edol eeof: mov r4,loc2 eeof1: tst (r5)+ efail: rts r5 ecmf: mov r3,-(sp) mov r4,-(sp) jsr r5,eadv br 1f mov (sp)+,loc1 tst (sp)+ br eeof1 1: mov (sp)+,r4 mov (sp)+,r3 cmpb (r4)+,$'\n bne ecmf br efail echr: cmpb (r3)+,(r4)+ beq eadv br efail echrs: movb (r3)+,r1 mov r4,-(sp) 1: cmpb (r4)+,r1 beq 1b br east edot: cmpb (r4)+,$'\n bne eadv br efail edots: mov r4,-(sp) 1: cmpb (r4)+,$'\n bne 1b br east eccl: jsr r5,cclas; 0 br efail br eadv enccl: jsr r5,cclas; 1 br efail br eadv enccls: mov pc,0f br 1f eccls: clr 0f 1: mov r4,-(sp) mov r3,-(sp) jmp 2f .data 2: jsr r5,cclas; 0:0 br 1f mov (sp),r3 br 2b 1: tst (sp)+ jmp east .text edol: cmpb (r4),$'\n beq eadv br efail east: dec r4 mov r3,-(sp) mov r4,-(sp) jsr r5,eadv br 1f cmp r4,locs bne 2f mov r4,4(sp) br 1f 2: add $6,sp br eeof1 1: mov (sp)+,r4 mov (sp)+,r3 cmp r4,(sp) bhi east tst (sp)+ br efail cclas: movb (r4)+,r1 cmp r1,$'\n beq 2f 1: cmpb r1,(r3)+ beq 1f tstb (r3) bne 1b tst (r5)+ beq 3f 2: tst (r5)+ br 3f 1: tst (r5)+ beq 2b 3: tstb (r3)+ bne 3b rts r5 8: jmp advanc 9: jmp error dosub: mov $linebuf,r1 mov $subbuf,r2 mov $rhsbuf,r3 1: cmp r1,loc1 beq 1f movb (r1)+,(r2)+ br 1b 1: movb (r3)+,r0 beq 1f cmp r0,$'& bne 3f mov r1,r4 2: cmp r4,loc2 beq 1b movb (r4)+,(r2)+ cmp r2,$esubbuf blo 2b br 9b 3: bic $200,r0 movb r0,(r2)+ cmp r2,$esubbuf blo 1b br 9b 1: mov r4,r1 mov r2,loc2 1: movb (r1)+,r0 movb r0,(r2)+ cmp r0,$'\n beq 1f cmp r2,$esubbuf blo 1b br 9b 1: mov addr1,dot rts r5 switch: jsr r5,getc mov (r5)+,r4 1: tst (r4) beq 1f cmp r1,(r4)+ beq 2f tst (r4)+ br 1b 1: mov r1,peekc rts r5 2: mov (sp)+,r5 jmp *(r4) getc: mov peekc,r1 bne 1f tst gflag beq 2f movb *gbufp,r1 beq 8b inc gbufp br 1f 2: clr r0 sys read; ch; 1 bes 2f tst r0 beq 2f mov ch,r1 beq getc 1: clr peekc rts r5 2: jmp cq1 print: mov (r5),r0 jsr r5,size mov r4,0f mov (r5)+,0f-2 mov $1,r0 sys 0; 7f .data 7: sys write; ..; 0:.. .text rts r5 size: clr r4 1: inc r4 cmpb (r0)+,$'\n bne 1b rts r5 qex: qbadf: qerr: qed: prompt: <*> .data qetmp: .even peekc: 0 eflag: 0 gbufp: gbuf-1 kp: kname .bss intrflg:.=.+2 argc: .=.+2 nonum: .=.+2 ibuf: .=.+512. obuf: .=.+512. kname: .=.+20. ekname: .=.+2 nl: .=.+2 kaddr: .=.+20. ekaddr: .=.+2 oblkp: .=.+2 zero: .=.+2 dol: .=.+2 dot: .=.+2 gsp: .=.+2 shflg: .=.+2 exprbuf:.=.+128.; eexprbuf: fin: .=.+2 fout: .=.+2 ch: .=.+2 fch: .=.+2 pflag: .=.+2 gflag: .=.+2 addr: .=.+2 addr1: .=.+2 addr2: .=.+2 gsubf: .=.+2 loc1: .=.+2 loc2: .=.+2 locs: .=.+2 adrflg: .=.+2 f: .=.+2 minflg: .=.+2 count: .=.+2 filec: .=.+2 filep: .=.+2 linebuf:.=.+512.; elinbuf: fbuf:subbuf:.=.+512.; efbuf: esubbuf: rhsbuf: .=.+256.; erhsbuf: filsiz = 64. filebuf:.=.+filsiz filsav: .=.+filsiz+2 gz: .=.+2 gbuf: .=.+100.; egbuf: buffer: ebuffer = buffer+8004. !"#$%&'()/* exit -- end runcom */ main() { seek(0, 0, 2); } /* Fortran command */ char *tmp; char ts[1000]; char *tsp ts; char *av[50]; char *clist[50]; char *llist[50]; int instring; int pflag; int cflag; int *ibuf; int *ibuf1; int *ibuf2; int *obuf; char *lp; char *line; int lineno; int exfail; struct symtab { char name[8]; char *value; } *symtab; int symsiz 200; struct symtab *defloc; struct symtab *incloc; char *stringbuf; main(argc, argv) char *argv[]; { char *t; int nc, nl, i, j, c, nxo; int dexit(); i = nc = nl = nxo = 0; while(++i < argc) { if(*argv[i] == '-') switch (argv[i][1]) { default: goto passa; case 'p': pflag++; case 'c': cflag++; break; } else { passa: t = argv[i]; if(getsuf(t)=='f') { clist[nc++] = t; t = setsuf(copy(t), 'o'); } if (nodup(llist, t)) { llist[nl++] = t; if (getsuf(t)=='o') nxo++; } } } if(nc==0) goto nocom; if ((signal(2, 1) & 01) == 0) signal(2, &dexit); for (i=0; i1) printf("%s:\n", clist[i]); tmp = 0; av[0] = "fc1"; av[1] = expand(clist[i]); if (pflag || exfail) continue; if (av[1] == 0) { cflag++; continue; } av[2] = 0; t = callsys("/usr/fort/fc1", av); if(tmp) cunlink(tmp); if(t) { cflag++; continue; } av[0] = "as"; av[1] = "-"; av[2] = "f.tmp1"; av[3] = 0; callsys("/bin/as", av); t = setsuf(clist[i], 'o'); cunlink(t); if(link("a.out", t) || cunlink("a.out")) { printf("move failed: %s\n", t); cflag++; } } nocom: if (cflag==0 && nl!=0) { i = 0; av[0] = "ld"; av[1] = "-x"; av[2] = "/lib/fr0.o"; j = 3; while(ivalue = defloc->name; incloc = lookup("include", 1); incloc->value = incloc->name; stringbuf = sbf; line = ln; lineno = 0; tmp = setsuf(copy(file), 'i'); if (fcreat(tmp, obuf) < 0) { printf("Can't creat %s\n", tmp); dexit(); } while(getline()) { if (ibuf==ibuf2) putc(001, obuf); /*SOH: insert */ if (ln[0] != '#') for (lp=line; *lp!='\0'; lp++) putc(*lp, obuf); putc('\n', obuf); } fflush(obuf); close(obuf[0]); close(ibuf1[0]); return(tmp); } getline() { int c, sc, state; struct symtab *np; char *namep, *filname; if (ibuf==ibuf1) lineno++; lp = line; *lp = '\0'; state = 0; if ((c=getch()) == '#') state = 1; while (c!='\n' && c!='\0') { if ('a'<=c && c<='z' || 'A'<=c && c<='Z' || c=='_') { namep = lp; sch(c); while ('a'<=(c=getch()) && c<='z' ||'A'<=c && c<='Z' ||'0'<=c && c<='9' ||c=='_') sch(c); sch('\0'); lp--; np = lookup(namep, state); if (state==1) { if (np==defloc) state = 2; else if (np==incloc) state = 3; else { error("Undefined control"); while (c!='\n' && c!='\0') c = getch(); return(c); } } else if (state==2) { np->value = stringbuf; while ((c=getch())!='\n' && c!='\0') savch(c); savch('\0'); return(1); } continue; } else if ((sc=c)=='\'' || sc=='"') { sch(sc); filname = lp; instring++; while ((c=getch())!=sc && c!='\n' && c!='\0') { sch(c); if (c=='\\') sch(getch()); } instring = 0; if (state==3) { *lp = '\0'; while ((c=getch())!='\n' && c!='\0'); if (ibuf==ibuf2) error("Nested 'include'"); if (fopen(filname, ibuf2)<0) error("Missing file %s", filname); else ibuf = ibuf2; return(c); } } sch(c); c = getch(); } sch('\0'); if (state>1) error("Control syntax"); return(c); } error(s, x) { printf("%d: ", lineno); printf(s, x); putchar('\n'); exfail++; cflag++; } sch(c) { if (lp==line+194) error("Line overflow"); *lp++ = c; if (lp>line+195) lp = line+195; } savch(c) { *stringbuf++ = c; } getch() { static peekc; int c; if (peekc) { c = peekc; peekc = 0; return(c); } loop: if ((c=getc1())=='/' && !instring) { if ((peekc=getc1())!='*') return('/'); peekc = 0; for(;;) { c = getc1(); cloop: switch (c) { case '\0': return('\0'); case '*': if ((c=getc1())=='/') goto loop; goto cloop; case '\n': if (ibuf==ibuf1) { putc('\n', obuf); lineno++; } continue; } } } return(c); } getc1() { int c; if ((c = getc(ibuf)) < 0 && ibuf==ibuf2) { close(ibuf2[0]); ibuf = ibuf1; putc('\n', obuf); c = getc1(); } if (c<0) return(0); return(c); } lookup(namep, enterf) char *namep; { char *np, *snp; struct symtab *sp; int i, c; np = namep; i = 0; while (c = *np++) i =+ c; i =% symsiz; sp = &symtab[i]; while (sp->name[0]) { snp = sp; np = namep; while (*snp++ == *np) if (*np++ == '\0' || np==namep+8) { if (!enterf) subst(namep, sp); return(sp); } if (sp++ > &symtab[symsiz]) sp = symtab; } if (enterf) { for (i=0; i<8; i++) if (sp->name[i] = *namep) namep++; while (*namep) namep++; } return(sp); } subst(np, sp) char *np; struct symtab *sp; { char *vp; lp = np; if ((vp = sp->value) == 0) return; sch(' '); while (*vp) sch(*vp++); sch(' '); } getsuf(s) char s[]; { int c; char t, *os; c = 0; os = s; while(t = *s++) if (t=='/') c = 0; else c++; s =- 3; if (c<=14 && c>2 && *s++=='.') return(*s); return(0); } setsuf(s, ch) char s[]; { char *os; os = s; while(*s++); s[-2] = ch; return(os); } callsys(f, v) char f[], *v[]; { int t, status; if ((t=fork())==0) { execv(f, v); printf("Can't find %s\n", f); exit(1); } else if (t == -1) { printf("Try again\n"); return(1); } while(t!=wait(&status)); if ((t=(status&0377)) != 0 && t!=14) { if (t!=2) /* interrupt */ printf("Fatal error in %s\n", f); dexit(); } return((status>>8) & 0377); } copy(s) char s[]; { char *otsp; otsp = tsp; while(*tsp++ = *s++); return(otsp); } nodup(l, s) char **l, s[]; { char *t, *os, c; if (getsuf(s) != 'o') return(1); os = s; while(t = *l++) { s = os; while(c = *s++) if (c != *t++) break; if (*t++ == '\0') return(0); } return(1); } cunlink(f) char *f; { if (f==0) return(0); return(unlink(f)); } ,-./0123456789âcdb.cãcheck.cächmod.cåchown.sæclri.sçcmp.sècomm.cécp.cêdate.cëdb1.sìdb2.sídb3.sîdb4.sïdc1.sðdc2.sñdc3.sòdc4.sódc5.sôdd.cõdf.cödiff1.c÷diff2.sødsw.sùdu.súdump.cûecho.cüed1.sýed2.sþed3.sÿexit.cfc.cfed1.ssignal = 48. testing = 0 / / command interpreter for form letter editor / / / command: sys signal; 2; inter jsr pc,initl mov sp,spi loop: mov spi,sp mov $buffer,r2 clr r4 clr iflag 1: jsr pc,tfiget cmpb $' ,r0 beq 1f cmpb $'\n,r0 bne 2f clrb (r2) br 4f 2: movb r0,(r2)+ br 1b 1: clrb (r2) mov $argc,r3 3: mov $arg,r2 2: jsr pc,tfiget cmpb $' ,r0 beq 1f cmpb $'\n,r0 beq 1f movb r0,(r2)+ br 2b 1: clrb (r2)+ inc r4 1: movb -(r2),sv cmp r2,$arg blos 1f movb -(r2),-(sp) movb sv,1(sp) cmp r2,$arg bhi 1b mov sp,(r3)+ br 2f 1: clrb -(sp) movb sv,1(sp) mov sp,(r3) add $1,(r3)+ 2: cmpb r0,$'\n bne 3b 1: mov -(r3),-(sp) cmp r3,$argc bhi 1b 4: mov r4,-(sp) 3: clr r0 mov $tabl,r4 2: mov (r4)+,r1 cmp r4,$tend bhi error add $2,r0 mov $buffer,r2 1: cmpb (r1)+,(r2)+ bne 2b tstb (r1) bne 1b tstb (r2) bne 2b sub $2,r0 add $jtable,r0 clr vflag clr qflag jmp *(r0) / error: mov $1,r0 sys write; err; 2 br loop / / tabl: c1; c2; c3; c4; c5; c6; c7; c8; tend: 0 c1: c2: c3: c4: c5: c6: c7: c8: err: endt: .even jtable: list; listf; ed; remove; rename; fin; q; memck; spi: .=.+2 sv: .=.+2 / / ed: mov (sp)+,r3 ble error econ: sys stat; ftemp; buffer bec 2f sys creat; ftemp; 666 mov r0,tmpw sys open; ftemp; 0 mov r0,tmpr br 1f 2: cmpb $'z,ftemp+9. bne 2f mov $1,r0 sys write; erm; 23. jmp loop 2: incb ftemp+9. br econ 1: mov (sp),r0 jsr pc,getspq bes 3f mov r0,r4 mov r2,r1 jsr pc,rewind mov $buffer,r2 1: jsr pc,getchar bes 1f movb r0,(r2)+ br 1b 1: movb $'\n,(r2)+ jsr pc,output mov r4,r1 jsr pc,rewind 2: mov $buffer,r2 1: jsr pc,getchar bes 1f movb r0,(r2)+ cmp r2,$bufend blo 1b mov tmpw,r0 sys write; buffer; 512. br 2b 1: sub $buffer,r2 beq 4f mov r2,0f mov tmpw,r0 sys write; buffer; 0:.. 4: tst iflag beq 1f mov tmpw,r0 sys close mov tmpr,r0 sys close sys unlink; ftemp jmp loop 1: mov tmpw,r0 sys close sys fork br 5f mov r1,-(sp) sys wait sys signal; 2; inter mov (sp)+,r1 mov a(r1),w(r1) 2: mov tmpr,r0 sys read; buffer; 512. tst r0 beq 2f add $buffer,r0 mov r0,bufend mov $buffer,r2 1: movb (r2)+,r0 jsr pc,putchar cmp r2,bufend blo 1b br 2b 2: mov tmpr,r0 sys close sys unlink; ftemp tst iflag beq 1f jmp loop 1: tst qflag bgt 1f tst (sp)+ dec r3 bgt 1f jmp loop 1: jmp econ jmp loop 3: mov (sp),r2 mov $2,r0 jsr pc,allocate 1: tstb (r2) beq 1f movb (r2)+,r0 jsr pc,putchar br 1b 1: mov r1,r0 mov asmem,r1 jsr pc,putword mov $2,r0 jsr pc,allocate mov r1,r0 mov asmem,r1 jsr pc,putword mov r0,r1 br 4b 5: mov $2,r0 1: sys close inc r0 cmp r0,$10. blo 1b sys exec; edd; eda sys exit eda: edd; ftemp; 0 edd: .even ftemp: erm: .even tmpw: .=.+2 tmpr: .=.+2 / / remove a 'file' from memory / remove: mov (sp)+,r3 bgt 5f mov $1,vflag mov asmem,r1 jsr pc,rewind mov r(r1),-(sp) 4: tst iflag beq 1f jmp loop 1: jsr pc,getword bes 4f mov r0,r2 jsr pc,ask bec 1f mov r(r1),(sp) br 4b 1: jsr pc,getword br 2f 5: mov (sp),r0 jsr pc,getspq bec 2f tst qflag blt 6f mov (sp),r1 jsr pc,nothere br 3f 2: mov r0,r1 jsr pc,release mov r2,r1 jsr pc,release jsr pc,rm 3: tst vflag bne 3f tst iflag beq 1f jmp loop 1: tst qflag bgt 5b 6: tst (sp)+ dec r3 bgt 5b jmp loop 3: mov asmem,r1 mov (sp),r(r1) br 4b 4: tst (sp)+ jmp loop / / rename a 'file' / rename: mov (sp)+,r3 bne 1f jmp error 1: sub $2,r3 blt 1f 5: mov (sp),r0 jsr pc,getsp bes 4f tst (sp)+ sub $4,r(r1) mov (sp),r0 mov r2,-(sp) mov r(r1),-(sp) jsr pc,getsp bes 3f mov r2,-(sp) mov r0,r1 jsr pc,release jsr pc,rm mov (sp)+,r0 mov (sp)+,r(r1) jsr pc,alterword mov (sp)+,r1 jsr pc,release br 5f 3: mov (sp)+,r(r1) mov (sp)+,r1 jsr pc,release mov $2,r0 jsr pc,allocate mov (sp)+,r2 2: movb (r2)+,r0 beq 2f jsr pc,putchar br 2b 2: mov r1,r0 mov asmem,r1 jsr pc,alterword 5: tst iflag beq 2f jmp loop 2: tst r3 beq 2f sub $2,r3 bge 5b 1: tst (sp)+ jmp error 2: jmp loop 4: mov (sp)+,r1 jsr pc,nothere tst (sp)+ br 5b / / list contents of asmem / list: mov $buffer,r2 movb $'\n,(r2)+ jsr pc,output mov (sp)+,r3 beq 1f mov $1,vflag 5: tst iflag beq 2f jmp loop 2: mov (sp),r0 jsr pc,getspq bes 4f mov r2,r1 br 3f 1: mov asmem,r1 jsr pc,fsfile sub $2,r(r1) 2: tst iflag bne 2f jsr pc,backword bes 2f mov r0,r1 3: jsr pc,getn movb $'\n,(r2)+ jsr pc,output tst vflag bne 1f mov asmem,r1 sub $2,r(r1) br 2b 1: tst qflag bgt 5b 4: tst (sp)+ dec r3 bgt 5b 2: mov $buffer,r2 movb $'\n,(r2)+ jsr pc,output jmp loop / / list a 'file / listf: mov (sp)+,r3 bgt 4f jmp error 4: mov (sp),r0 jsr pc,getspq bes 3f mov r0,r4 mov r2,r1 jsr pc,rewind mov $buffer,r2 movb $'\n,(r2)+ 1: jsr pc,getchar bes 1f movb r0,(r2)+ cmp r2,$bufend blo 1b jsr pc,output br 1b 1: mov r4,r1 jsr pc,rewind movb $':,(r2)+ cmp r2,$bufend blo 2f jsr pc,output 2: movb $'\n,(r2)+ 1: tst iflag beq 2f jmp loop 2: cmp r2,$bufend blo 2f jsr pc,output 2: jsr pc,getchar bes 1f movb r0,(r2)+ br 1b 1: jsr pc,output 3: tst qflag bgt 4b tst (sp)+ dec r3 bgt 4b mov $buffer,r2 movb $'\n,(r2)+ jsr pc,output jmp loop / fin: jsr pc,flush jsr pc,whead 4 q: jsr pc,flush jsr pc,whead sys exit memck: mov (sp)+,r3 2: ble 2f mov (sp)+,r1 cmpb (r1),$'p bne 1f bis $1,vflag br 3f 1: cmpb (r1),$'f bne 3f bis $2,vflag 3: dec r3 br 2b 2: clr freeh mov $freeb,r2 1: clr (r2)+ cmp r2,$freen blo 1b mov $headers,r2 2: cmp l(r2),$hsz beq 6f jsr pc,ck bec 1f cmp r2,asmem beq 1f mov asmem,r1 jsr pc,rewind clr r3 4: inc r3 jsr pc,getword bes 5f cmp r0,r2 bne 4b 6: inc freeh 1: cont: add $8.,r2 cmp r2,$headend-4 blo 2b mov asmem,r1 jsr pc,rewind 4: jsr pc,getword bes 4f tst r(r0) beq 2f mov r0,r2 jsr pc,ck bes 4b 2: sub $hblk,r0 jsr r5,oct mov $1,r0 sys write; re; 24. cmp vflag,$1 beq 4b bit $1,r3 beq 2f jsr pc,getword mov r0,r1 jsr pc,release br 3f 2: jsr pc,backword add $4,r(r1) mov r0,r1 jsr pc,release 3: jsr pc,rm clr r3 br 4b 4: mov freeh,r0 jsr r5,decml mov $1,r0 sys write; frh; 14. mov $freeb,r2 mov $1,r3 6: cmp r2,$freen bhis 6f mov (r2)+,r0 beq 3f jsr r5,decml mov $1,r0 sys write; frb; 18. mov r3,r0 jsr r5,decml mov $1,r0 sys write; lf; 1. 3: asl r3 br 6b 6: mov $1,r0 sys write; lf; 1. jmp loop 5: mov r2,r0 sub $hblk,r0 jsr r5,oct mov $1,r0 sys write; un; 26. tst vflag beq 1b mov r2,r1 cmp vflag,$2 beq 3f jsr pc,rewind mov $buffer,r2 2: jsr pc,getchar bes 2f movb r0,(r2)+ cmp r2,$buffer+80. blo 2b jsr pc,output br 2b 2: movb $'\n,(r2)+ jsr pc,output mov r1,r2 cmp vflag,$1 bne 3f jmp cont 3: jsr pc,release jmp cont / interrupt: 4 / un: < header not accounted for\n> re: < part of asmem released\n> lf: <\n> frh: < free headers\n > frb: < free blocks size > endc: .even ?@ABCDEFGHIJrti = 2 .globl rm .globl ck .globl loop .globl oct .globl argc .globl arg .globl tfiget .globl asmem .globl qflag .globl vflag .globl getspq .globl q .globl ask .globl getword .globl r .globl w .globl output .globl buffer .globl bufend .globl fv .globl getsp .globl release .globl nothere .globl getn .globl getchar .globl rewind .globl iflag .globl inter / output buffer / r2 = last char in buffer + 1 / r2 returned at beginning of buffer / output: sub $buffer,r2 blos 1f mov r2,0f mov $1,r0 sys write; buffer; 0:.. mov $buffer,r2 1: rts pc / / / routine to find the string pointed to by r0 / in either memory or curly / r1 = where to look / / returns error set if string not there / returns r1 = header of string if there getsp: mov r0,-(sp) mov asmem,r1 jsr pc,rewind /memory 3: jsr pc,getword bes 1f mov r0,r1 jsr pc,rewind mov (sp),r2 2: jsr pc,getchar bes 2f tstb (r2) beq 4f cmpb r0,(r2)+ beq 2b 4: mov asmem,r1 add $2,r(r1) br 3b 2: tstb (r2) bne 4b mov r1,r2 mov asmem,r1 jsr pc,getword tst (sp)+ rts pc 1: mov (sp)+,r0 sec rts pc / / finds header of string with name same as that pointed to by r0 / taking into account ? and * getspq: mov r0,-(sp) mov asmem,r1 tst qflag bgt 1f jsr pc,rewind 1: jsr pc,getword bes 1f mov r0,r1 jsr pc,rewind mov (sp),r2 2: cmpb (r2),$'* bne 3f clr strflg mov $2,qflag inc r2 tstb (r2) beq 6f mov r2,ch 3: jsr pc,getchar bes 2f tstb (r2) bne 3f cmp $2,qflag bne 4f mov ch,r2 3: cmpb (r2),$'? bne 3f inc r2 tst qflag bne 2b mov $1,qflag br 2b 3: cmpb r0,(r2)+ bne 5f inc strflg br 2b 5: cmp $2,qflag bne 4f tst strflg bne 4f dec r2 br 2b 4: mov asmem,r1 add $2,r(r1) br 1b 2: tstb (r2) bne 4b 6: mov r1,r2 mov asmem,r1 jsr pc,getword tst (sp)+ rts pc 1: mov $-1.,qflag mov (sp)+,r0 sec rts pc / / tfiget / jsr r5,tfiget / tfiget: clr r0 sys read; ch; 1 bes 1f tst iflag beq 9f; jmp loop; 9: tst r0 beq 1f movb ch,r0 rts pc 1: jmp q / / routine to print file name and error message / r2 = next free byte in buffer / nothere: mov $buffer,r2 1: tstb (r1) beq 1f movb (r1)+,(r2)+ br 1b 1: sub $buffer,r2 mov r2,0f mov $1,r0 sys write; buffer; 0:.. mov $1,r0 sys write; err4; 16. rts pc / / / routine to put characters from string in buffer / r1 = header of string / on return r2 = next free byte in buffer / getn: mov $buffer,r2 jsr pc,rewind 1: jsr pc,getchar bes 1f movb r0,(r2)+ cmp r2,$bufend bhis 1f br 1b 1: rts pc / ask: mov r2,-(sp) mov r0,r1 jsr pc,getn movb $' ,(r2)+ jsr pc,output jsr pc,tfiget cmpb $'\n,r0 bne 1f 2: mov asmem,r1 add $2,r(r1) mov (sp)+,r2 sec rts pc 1: cmpb r0,$'y beq 4f cmpb r0,$'q beq 3f 1: tst iflag bne 2b jsr pc,tfiget cmpb $'\n,r0 bne 1b br 2b 4: tst iflag bne 2b jsr pc,tfiget cmpb $'\n,r0 bne 1b mov asmem,r1 mov (sp)+,r2 clc rts pc 3: tst iflag bne 2b jsr pc,tfiget cmpb $'\n,r0 bne 1b mov (sp)+,r2 jmp loop inter: inc iflag rti / to remove an entry from asmem - r points to name ptr / rm: mov r3,-(sp) mov asmem,r1 mov r(r1),r3 sub $4,r(r1) mov r(r1),r2 mov r2,-(sp) 1: mov r3,r(r1) jsr pc,getword bes 1f mov r(r1),r3 mov r2,r(r1) jsr pc,alterword mov r(r1),r2 br 1b 1: mov r2,w(r1) mov (sp)+,r(r1) mov (sp)+,r3 rts pc / / check that header pointed to by r2 released / ck: mov r2,-(sp) mov l(r2),r0 sub a(r2),r0 sub $hblk,r2 jsr pc,log2 asl r0 mov r0,ch mov frlist(r0),r0 1: beq 1f cmp r2,r0 beq 2f add $hblk,r0 mov (r0),r0 br 1b 2: mov ch,r0 inc freeb(r0) mov (sp)+,r2 rts pc 1: mov (sp)+,r2 sec rts pc oct: mov r1,-(sp) mov r0,r1 clr r0 div $8.,r0 mov r1,-(sp) add $'0,(sp) tst r0 beq 1f jsr r5,oct 1: movb (sp)+,ch mov $1,r0 sys write; ch; 1 mov (sp)+,r1 rts r5 decml: mov r1,-(sp) mov r0,r1 clr r0 div $10.,r0 mov r1,-(sp) add $'0,(sp) tst r0 beq 1f jsr r5,decml 1: movb (sp)+,ch mov $1,r0 sys write; ch; 1 mov (sp)+,r1 rts r5 / / iflag: 0 qflag: 0 vflag: 0 .data err4: < not in memory.\n> err1: end1: .even .bss freeh: .=.+2 freeb: .=.+32. freen: ch: .=.+2 strflg: .=.+2 buffer: .=.+512. bufend: .=.+2 argc = buffer + 20. arg = buffer + 256. fv: .=.+2 .text LMNOPQRST/* find -- find files in a pathname. Use of find is documented in /usr/man/man1/find.1 . In addition, find has a secret first arg "+" which causes each file name to be printed along with a period if the predicates succeed. */ int randlast; char *pathname; int verbose; struct anode { int (*F)(); struct anode *L, *R; } node[100]; int nn; /* number of nodes */ char *fname, *path; int now[2]; int ap, ac; char **av; struct ibuf { int idev; int inum; int iflags; char inl; char iuid; char igid; char isize0; int isize; int iaddr[8]; int iatime[2]; int imtime[2]; } statb; main(argc,argv) char *argv[]; { struct anode *exlist; int find(); time(&now); ac = argc; av = argv; ap = 2; pathname = argv[1]; if(compstr(argv[1],"+")==0) { verbose++; ap++; pathname = argv[2]; } else verbose = 0; argv[argc] = 0; if(argc<3) { printf("Insufficient args\n"); exit(9); } if(!(exlist = exp())) { /* parse and compile the arguments */ printf("Odd usage\n"); exit(9); } if(ap\n",b); exit(9); } return(mk(&user,i,s)); } else if(compstr(a,"-print")==0) { --ap; return(mk(&print,0,0)); } else if(compstr(a,"-group")==0) return(mk(&group,(i=atof(b)),s)); else if(compstr(a,"-size")==0) return(mk(&size,(i = atof(b)),s)); else if(compstr(a,"-links")==0) return(mk(&links,(i=atof(b)),s)); else if(compstr(a,"-perm")==0) { for(; *b ; ++b) { if(*b=='-') continue; i =<< 3; i = i + (*b - '0'); } return(mk(&perm,i & 03777,s)); } else if (compstr(a,"-exec")==0) { i = ap - 1; while(compstr(nxtarg(),";")!=0); return(mk(&exeq,i,0)); } else if (compstr(a,"-ok")==0) { i = ap - 1; while(compstr(nxtarg(),";")!=0); return(mk(&ok,i,0)); } err: printf("Error <%s / %s>\n",a,b); exit(9); } struct anode *mk(f,l,r) struct anode *l,*r; { /*make an expression node*/ node[nn].F = f; node[nn].L = l; node[nn].R = r; return(&(node[nn++])); } nxtarg() { /* get next arg from command line */ if(ap>ac) return(0 * ap++); return(av[ap++]); } find(exlist,fullname) /* execute predicat list with current file */ struct anode *exlist; char *fullname; { register int i; path = fullname; if(verbose) printf("%s",path); for(i=0;fullname[i];++i) if(fullname[i]=='/') fname = &fullname[i+1]; i = (*exlist->F)(exlist); if(verbose) if(i) printf(".\n"); else printf("\n"); } /* execution time functions */ and(p) struct anode *p; { return(((*p->L->F)(p->L)) && ((*p->R->F)(p->R))?1:0); } or(p) struct anode *p; { return(((*p->L->F)(p->L)) || ((*p->R->F)(p->R))?1:0); } not(p) struct anode *p; { return( !((*p->L->F)(p->L))); } glob(p) struct { int f; char *pat; } *p; { return(gmatch(fname,p->pat)); } print() { printf("%s\n",path); return(1); } mtime(p) struct { int f, t, s; } *p; { return(scomp((now[0]-statb.imtime[0])*3/4,p->t,p->s)); } atime(p) struct { int f, t, s; } *p; { return(scomp((now[0]-statb.iatime[0])*3/4,p->t,p->s)); } user(p) struct { int f, u, s; } *p; { return(scomp(statb.iuid,p->u,p->s)); } group(p) struct { int f, u; } *p; { return(p->u == statb.igid); } links(p) struct { int f, link, s; } *p; { return(scomp(statb.inl,p->link,p->s)); } size(p) struct { int f, sz, s; } *p; { register int i; i = statb.isize0 << 7; i=| (statb.isize >> 9) & 0777; return(scomp(i,p->sz,p->s)); } perm(p) struct { int f, per, s; } *p; { int i; i = (p->s=='-') ? p->per : 03777; /* '-' means only arg bits */ return((statb.iflags & i) == p->per); } exeq(p) struct { int f, com; } *p; { return(doex(p->com)); } ok(p) struct { int f, com; } *p; { char c; int yes; yes = 0; printf("!%s! for <%s>? ",av[p->com],path); if((c=getchar())=='y') yes = 1; while(c!='\n') c = getchar(); if(yes) return(doex(p->com)); return(0); } /* support functions */ scomp(a,b,s) char s; { /* funny signed compare */ if(s == '+') return(a > b); if(s == '-') return(a < (b * -1)); return(a == b); } doex(com) { int ccode; int np, i, c; char *nargv[50], *ncom, *na; ccode = np = 0; while (na=av[com++]) { if(compstr(na,";")==0) break; if(compstr(na,"{}")==0) nargv[np++] = path; else nargv[np++] = na; } nargv[np] = 0; if (np==0) return(9); if(fork()) /*parent*/ wait(&ccode); else { /*child*/ execv(nargv[0], nargv, np); i = 0; ncom = "/usr/bin/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; while(c=nargv[0][i]) { ncom[9+i++] = c; } ncom[9+i] = '\0'; execv(ncom+4, nargv, np); execv(ncom, nargv, np); exit(9); } return(ccode ? 0:1); } char fin[518]; getunum(s) char *s; { /* find username in /etc/passwd & return num. */ int i; char str[20], *sp, c; extern float atof(); i = -1; fin[0] = open("/etc/passwd",0); while(c = getchar()) { if(c=='\n') { sp = str; while((*sp = getchar()) != ':') if(! *sp++) goto RET; *sp = '\0'; if(compstr(str,s)==0) { while((c=getchar()) != ':') if(! c) goto RET; sp = str; while((*sp = getchar()) != ':') sp++; *sp = '\0'; i = atof(str); break; } } } RET: close(fin); fin[0] = 0; return(i); } compstr(s1,s2) char s1[], s2[]; { /* compare strings: */ register char *c1, *c2; c1 = s1; c2 = s2; while(*c1 == *c2) if(*c1++ == '\0') return(0); /* s1 == s2 */ else c2++; return(*c1 > *c2 ? 1 : -1); } int descend(name,goal,func,arg) int (*func)(); char *name, goal; { int dir /* open directory */, offset /* in directory */; int dsize, top; struct { int dinode; char dname[14]; } dentry[32]; register int i, j, k; char aname[128]; if(stat(name,&statb)<0) { printf("--bad status %s\n",name); return(0); } if((statb.iflags&060000)!=040000){ /*not a directory*/ if(goal=='f'||goal=='b') /* search goal for files */ (*func)(arg,name); return(1); } else if(goal=='d' || goal=='b') /* search goal is directories */ (*func)(arg,name); top = statb.isize; for(offset=0 ; offset < top ; offset =+ 512) { /* each block */ dsize = 512<(top-offset) ? 512 : (top-offset); if((dir=open(name,0))<0) { printf("--cannot open %s\n",name); return(0); } if(offset) seek(dir,offset,0); if(read(dir,&dentry,dsize)<0) { printf("--cannot read %s\n",name); return(0); } close(dir); for(i = 0; i < (dsize>>4); ++i) { /* each dir. entry */ if(dentry[i].dinode==0||dentry[i].dname[0]=='.') continue; if (dentry[i].dinode == -1) break; for(j=0;aname[j]=name[j];++j); if(aname[j-1]!='/') aname[j++] = '/'; for(k=0; (aname[j++]=dentry[i].dname[k]) && k<13; ++k); aname[j] = '\0'; if(descend(aname,goal,func,arg)==0) printf("--%s\n",name); } } return(1); } gmatch(s, p) /* string match as in glob */ char *s, *p; { if (*s=='.' && *p!='.') return(0); return(amatch(s, p)); } amatch(s, p) char *s, *p; { register int cc, scc, k; int c, lc; scc = *s; lc = 077777; switch (c = *p) { case '[': k = 0; while (cc = *++p) { switch (cc) { case ']': if (k) return(amatch(++s, ++p)); else return(0); case '-': k =| lc <= scc & scc <= (cc=p[1]); } if (scc==(lc=cc)) k++; } return(0); case '?': caseq: if(scc) return(amatch(++s, ++p)); return(0); case '*': return(umatch(s, ++p)); case 0: return(!scc); } if (c==scc) goto caseq; return(0); } umatch(s, p) char *s, *p; { if(*p==0) return(1); while(*s) if (amatch(s++,p)) return(1); return(0); } VWXYZ[\]^_`abcdefgsignal = 48. testing = 0 / form letter generator / command sequence / form proto arg1 arg2... / where proto is letter rfo: sys signal; 2; int mov $-1,buf mov (sp)+,r2 /arg count tst (sp)+ /skip first arg sub $2,r2 bge 2f mov $default,-(sp) 2: mov (sp)+,letter 1: sys stat; otfil; buf bec 2f sys creat; otfil; 666 bec cont 2: cmpb $'z,otfil+4 beq err3 incb otfil+4 br 1b err3: mov $1,r0 sys write; mes3; 24. sys exit mes3: otfil: default: .even cont: mov r0,rfo clr rfo+2 jsr pc,initl / set up argument list / mov $arg,r3 mov $10.,r0 jsr pc,allocate mov r1,(r3)+ 1: dec r2 blt 1f mov $10.,r0 jsr pc,allocate mov r1,(r3)+ mov (sp)+,r4 2: movb (r4)+,r0 beq 1b jsr pc,putchar br 2b 1: sys time ashc $-7,r0 div $675.,r0 mov $daytab,r2 sub $1461.,r0 1: sub (r2)+,r0 bge 1b add -(r2),r0 mov r0,-(sp) mov arg,r1 mov montab-daytab(r2),r2 1: movb (r2)+,r0 beq 1f jsr pc,putchar br 1b 1: movb $' ,r0 jsr pc,putchar clr r0 mov (sp),r1 inc r1 div $10.,r0 mov r1,(sp) mov arg,r1 tst r0 beq 1f add $'0,r0 jsr pc,putchar 1: mov (sp)+,r0 add $'0,r0 jsr pc,putchar jmp loop daytab: 31.; 28.; 31.; 30.; 31.; 30.; 31.; 31.; 30.; 31.; 30.; 999. montab: m1; m2; m3; m4; m5; m6; m7; m8; m9; m10; m11; m12 m1: m2: m3: m4: m5: m6: m7: m8: m9: m10: m11: m12: buf: .=.+34. .=rfo+516. loop: mov $10.,r0 jsr pc,allocate mov r1,opointer jsr pc,allocate mov r1,ipointer jsr pc,allocate mov r1,curly mov $10.,r0 jsr pc,allocate mov r1,scr mov letter,r3 movb $'\{,r0 jsr pc,putchar 1: movb (r3)+,r0 beq 1f jsr pc,putchar br 1b 1: movb $'\},r0 jsr pc,putchar clr switch tst iflag beq 1f mov $1,tflag jmp interrupt 1: jsr pc,scan movb $'\n,r0 jsr r5,putc jsr r5,flushb mov scr,r1 jsr pc,release jsr pc,relarg mov opointer,r1 jsr pc,release mov ipointer,r1 jsr pc,release jsr pc,relcurl jsr pc,flush jsr pc,whead .if testing 4 .endif sys exit / scan / r1 = pointer to input header / r0 = pointer to output header / switch = 0 real output / not 0 output to r0 scan: mov r0,-(sp) mov r1,-(sp) 1: mov (sp),r1 jsr pc,getchar bes 5f cmpb r0,$'\\ beq 3f cmpb r0,$'\[ beq 4f cmpb r0,$'\{ beq 4f cmpb r0,$'\] beq 1f cmpb r0,$'\} beq 7f cmpb r0,$'\n bne 6f jsr pc,lookchar bes 5f movb $'\n,r0 6: tst switch beq 2f mov 2(sp),r1 jsr pc,putchar br 1b 2: jsr r5,putc br 1b 3: jsr pc,getchar br 6b / have [ or { 4: mov r(r1),-(sp) jsr pc,getchar bes 1f cmpb r0,$'0 blt 4f cmpb r0,$'9 bgt 4f jsr pc,getchar cmpb r0,$'\] beq 3f cmpb r0,$'\} beq 3f 4: mov (sp)+,r(r1) mov 2(sp),r0 jsr pc,esub mov r1,(sp) mov r0,2(sp) br 1b / have arg 3: tst switch beq 2f mov opointer,r1 mov 4(sp),r0 jsr pc,putword mov 2(sp),r1 2: mov (sp)+,r(r1) jsr pc,getchar inc r(r1) /skip ] jsr pc,earg br 1b 5: tst argf bne 1f mov ipointer,r1 jsr pc,pop bes 1f mov r0,(sp) br 1b 7: inc curlyf 1: mov (sp)+,r1 mov (sp)+,r0 rts pc / esub / r1 = pointer to input string / esub: mov r1,-(sp) tst switch beq 1f mov opointer,r1 jsr pc,putword 1: tst iflag beq 1f mov $2,tflag jmp interrupt 1: inc switch mov $10.,r0 jsr pc,allocate mov r1,r0 mov opointer,r1 jsr pc,putword mov (sp)+,r1 jsr pc,scan tst iflag beq 1f mov $3,tflag jmp interrupt 1: mov r2,-(sp) mov r1,r0 mov ipointer,r1 jsr pc,putword mov opointer,r1 jsr pc,pop bec 9f; 4; 9: mov r0,-(sp) /last output mov asmem,r1 jsr pc,getsp bes 2f 5: clr curlyf mov (sp),r1 mov r0,r2 jsr pc,release 6: mov opointer,r1 jsr pc,pop bec 4f clr switch 4: mov r2,r1 jsr pc,rewind tst (sp)+ mov (sp)+,r2 rts pc / not in memory 2: mov curly,r1 jsr pc,getsp bes 2f br 5b 2: mov (sp),r1 jsr pc,rewind mov $'\[,r0 1: jsr r5,tfoput jsr pc,getchar bec 1b mov $'\],r0 jsr r5,tfoput mov $10.,r0 jsr pc,allocate mov r1,r2 mov (sp),r0 tst curlyf beq 1f clr curlyf mov curly,r1 jsr pc,addentry br 2f 1: mov asmem,r1 jsr pc,whead jsr pc,addentry 2: mov r2,r1 jsr pc,accept br 6b / / / earg / r0 = number in ascii / earg: tst iflag beq 1f mov $4,tflag jmp interrupt 1: mov r1,-(sp) inc argf sub $'0,r0 asl r0 mov arg(r0),r1 beq 5f 4: mov (sp),r0 mov r1,(sp) mov ipointer,r1 jsr pc,putword mov opointer,r1 jsr pc,pop bec 3f clr switch 3: mov (sp)+,r1 jsr pc,rewind jsr pc,scan mov r0,-(sp) mov ipointer,r1 jsr pc,pop bec 9f; 4; 9: mov r0,r1 clr argf clr curlyf mov (sp)+,r0 rts pc 5: mov r0,-(sp) mov $'\[,r0 jsr r5,tfoput mov (sp),r0 asr r0 add $'0,r0 jsr r5,tfoput mov $'\],r0 jsr r5,tfoput mov $10.,r0 jsr pc,allocate mov (sp)+,r0 mov r1,arg(r0) jsr pc,accept br 4b rti = 2 / accept / r1 = header of where to put it / accept: mov r0,-(sp) movb $':,r0 jsr r5,tfoput movb $' ,r0 jsr r5,tfoput 2: jsr r5,tfiget cmpb r0,$'\n beq 1f jsr pc,putchar br 2b 1: jsr pc,putchar jsr r5,tfiget cmpb r0,$'\n beq 1f jsr pc,putchar br 2b 1: mov (sp)+,r0 rts pc / / / routine to get the last word from the string / r1=header addr / pop: jsr pc,fsfile jsr pc,backword bes 1f sub $2,w(r1) 1: rts pc / / / routine to add an entry to assoc mem or curly / r1 = header / r0 = header of string name / r2 = header of string / addentry: jsr pc,putword mov r2,r0 jsr pc,putword rts pc / / / routine to find the string pointed to by r0 / in either memory or curly / r1 = where to look / / returns error set if string not there / returns r1 = header of string if there / getsp: mov r0,-(sp) mov r1,-(sp) jsr pc,rewind /memory 3: mov 2(sp),r1 jsr pc,rewind /output mov (sp),r1 jsr pc,getword bes 1f mov r0,r1 mov r0,-(sp) jsr pc,rewind /string 2: mov (sp),r1 jsr pc,getchar bes 2f movb r0,r2 mov 4(sp),r1 jsr pc,getchar bes 4f cmpb r0,r2 beq 2b 4: tst (sp)+ 4: mov (sp),r1 add $2,r(r1) br 3b 2: tst (sp)+ mov 2(sp),r1 cmp r(r1),w(r1) bne 4b mov (sp)+,r1 jsr pc,getword tst (sp)+ rts pc 1: mov (sp)+,r1 mov (sp)+,r0 sec rts pc / / / tfoput / / jsr r5,tfoput / tfoput: mov r0,ch mov $1,r0 sys write; ch; 1 rts r5 / / / tfiget / / jsr r5,tfiget / tfiget: clr r0 sys read; ch; 1 bes 1f tst r0 beq 1f movb ch,r0 rts r5 1: jsr r5,flushb tst argf beq 1f mov opointer,r1 jsr pc,pop 1: mov $5,tflag jmp interrupt / / putc / jsr r5,putc / putc: mov r1,-(sp) mov r2,-(sp) mov $rfo+2,r1 mov r1,r2 add (r1),r2 movb r0,2(r2) inc (r1) cmp (r1),$512. bge 1f mov (sp)+,r2 mov (sp)+,r1 rts r5 1: mov (sp)+,r2 mov (sp)+,r1 / / / flush output buffer to output file. / flushb: mov r1,-(sp) mov r0,-(sp) mov $rfo,r1 mov (r1)+,r0 mov (r1),0f+2 beq 1f clr (r1)+ mov r1,0f sys write; 0:..;.. 1: mov (sp)+,r0 mov (sp)+,r1 rts r5 relarg: mov $arg,r2 1: mov (r2)+,r1 beq 2f jsr pc,release br 1b 2: cmp r2,$arge blt 1b rts pc / relcurl: mov curly,r1 jsr pc,rewind 1: jsr pc,getword bes 1f mov r0,r1 jsr pc,release mov curly,r1 br 1b 1: jsr pc,release rts pc / int: inc iflag rti / interrupt: jsr pc,relarg tst opointer beq 2f 1: mov opointer,r1 jsr pc,rewind 1: jsr pc,getword bes 1f mov r0,r1 jsr pc,release mov opointer,r1 br 1b 1: mov opointer,r1 jsr pc,release tst ipointer beq 2f mov ipointer,r1 jsr pc,release tst curly beq 2f jsr pc,relcurl tst scr beq 2f mov scr,r1 jsr pc,release 2: jsr pc,flush jsr pc,whead sys exit letter: .=.+2 arg: .=.+20. arge: 0 argf: .=.+2 switch: .=.+2 curly: .=.+2 curlyf: .=.+2 ch: .=.+2 opointer: .=.+2 ipointer: .=.+2 scr: .=.+2 iflag: 0 tflag: 0 end: .globl b1 .globl hblk .globl headers .globl initl .globl asmem .globl b1s .globl b1e .globl w1 .globl stats .globl lookchar .globl flush .globl fsfile .globl seekchar .globl backspace .globl alterchar .globl zero .globl getchar .globl putchar .globl copy .globl rewind .globl create .globl allocate .globl release .globl collect .globl w,r,a,l .globl getword .globl putword .globl backword .globl alterword / / / routine to read next character from string / pointer to by r1; character returned in r0 / c-bit set if character not availiable (eof) / / mov ...,r1 / jsr pc,getchar / movb r0,... / getchar: jsr pc,lookchar bes 1f inc r(r1) tst r0 /clears c-bit 1: rts pc / / / routine to read a string backwards / the read pointer is decremented before reading / / mov ...,r1 / jsr pc,backspace / mov r0,... / backspace: cmp a(r1),r(r1) bhis nochc dec r(r1) jsr pc,lookchar rts pc nochc: clr r0 sec rts pc / / / routine to put a word onto the string / / mov ...,r1 / mov ...,r0 / jsr pc,putword / putword: mov r0,-(sp) sub $hblk,r0 jsr pc,putchar swab r0 jsr pc,putchar mov (sp)+,r0 rts pc / / / routine to get a word from the string / / mov ...,r1 / jsr pc,getword / mov r0,... / getword: jsr pc,lookchar bes 1f movb r0,nchar inc r(r1) jsr pc,lookchar bes 1f movb r0,nchar+1 inc r(r1) mov nchar,r0 add $hblk,r0 1: rts pc / / / routine to alter the word pointed to by r(r1) / by replacing the word there with r0 / / mov wd,r0 / mov ...,r1 / jsr pc,alterword / alterword: mov r0,-(sp) sub $hblk,r0 jsr pc,alterchar swab r0 jsr pc,alterchar mov (sp)+,r0 rts pc / / / routine to get words backwards from string / / mov ...,r1 / jsr pc,backword / mov r0,... / backword: cmp a(r1),r(r1) bhis nochw dec r(r1) jsr pc,lookchar movb r0,nchar+1 cmp a(r1),r(r1) bhis nochw dec r(r1) jsr pc,lookchar movb r0,nchar mov nchar,r0 add $hblk,r0 rts pc / nochw: clr r0 sec rts pc / / / routine to copy the contents of one string / to another. / / mov source,r0 / mov dest,r1 / jsr pc,copy / mov r1,... / / on return, r1 points to the new string and should / be saved. r0 is preserved. / copy: inc stats+12. mov r0,-(sp) mov r1,-(sp) mov r2,-(sp) mov r3,-(sp) mov w(r0),r2 sub a(r0),r2 /W-A (old) mov l(r1),r3 sub a(r1),r3 /L-A (new) cmp r2,r3 blos 1f mov r2,r0 jsr pc,allocate mov 4(sp),r0 /new jsr pc,swap jsr pc,release mov r0,r1 mov 0(sp),r0 /old 1: mov a(r1),w(r1) /rewind w pointer cmp r2,$512. blos copy1 /is a short string / jsr pc,flush jsr pc,reset / mov a(r0),-(sp) 4: mov (sp),0f mov afi,r0 sys seek;0:.. ;0 /set input pointer cmp r2,$512. blos 2f mov $512.,r3 /# output this time mov r3,0f mov r3,3f add r3,(sp) sub r3,r2 /# left to output br 1f 2: mov r2,0f mov r2,3f mov r2,r3 clr r2 1: mov afi,r0 sys read;b1;0:.. bes bad cmp r0,r3 bne bad mov afout,r0 mov (r1),0f add r3,(r1) sys seek;0:.. ;0 sys write;b1;3:.. bes bad tst r2 bgt 4b tst (sp)+ / / fix up read ptr of new string / copy2: mov 6(sp),r0 /restore r0 mov r(r0),r2 sub a(r0),r2 add a(r1),r2 mov r2,r(r1) / / restore and return / mov (sp)+,r3 mov (sp)+,r2 mov (sp)+,r1 mov (sp)+,r0 rts pc / bad: mov $1,r0 sys write;1f;2f-1f 4 1: 2: .even / swap: mov w(r1),-(sp) mov w(r0),w(r1) mov (sp),w(r0) mov r(r1),(sp) mov r(r0),r(r1) mov (sp),r(r0) mov a(r1),(sp) mov a(r0),a(r1) mov (sp),a(r0) mov l(r1),(sp) mov l(r0),l(r1) mov (sp)+,l(r0) rts pc / / copy a short string / copy1: mov r(r0),-(sp) mov a(r0),r(r0) mov nchar,-(sp) mov r0,r2 /old mov r1,r3 /new 1: mov r2,r1 jsr pc,getchar bes 1f mov r3,r1 jsr pc,putchar br 1b 1: mov r2,r0 mov (sp)+,nchar mov (sp)+,r(r0) mov r3,r1 br copy2 / / / / / / routine to rewind read pointer of string / pointed to by r1 / / mov ...,r1 / jsr pc,rewind / rewind: mov a(r1),r(r1) rts pc / / / routine to rewind write pointer of string / pointed to by r1 / / mov ...,r1 / jsr pc,create / create: mov a(r1),w(r1) mov a(r1),r(r1) rts pc / / / routine to zero a string / / mov ...,r1 / jsr pc,zero / zero: mov r0,-(sp) .if testing jsr pc,preposterous .endif mov a(r1),w(r1) clrb r0 1: cmp w(r1),l(r1) bhis 1f jsr pc,putchar br 1b 1: mov a(r1),w(r1) mov (sp)+,r0 rts pc / / / / routine to move the read pointer of a string to the / relative position indicated by r0. the string is / extended if necessary - there is no error return. / / mov position,r0 / mov ...,r1 / jsr pc,seekchar / seekchar: mov r1,-(sp) mov r0,-(sp) .if testing jsr pc,preposterous .endif inc stats+10. 1: mov (sp),r0 add a(r1),r0 cmp r0,l(r1) bhi 3f mov r0,r(r1) cmp r0,w(r1) blo 1f mov r0,w(r1) br 1f 3: mov (sp),r0 jsr pc,allocate mov 2(sp),r0 jsr pc,copy jsr pc,swap jsr pc,release mov 2(sp),r1 br 1b 1: mov (sp)+,r0 mov (sp)+,r1 rts pc / / / routine to move read pointer of string to end of string / / mov ...,r1 / jsr pc,fsfile / fsfile: mov r0,-(sp) .if testing jsr pc,preposterous .endif inc stats+10. mov w(r1),r(r1) mov (sp)+,r0 rts pc / / / routine to place the character in r0 at the current / position of the read pointer - the read pointer / is not moved. / / movb ch,r0 / mov ...,r1 / jsr pc,alterchar / mov r1,... / alterchar: mov r2,-(sp) mov r1,-(sp) mov r0,nchar .if testing jsr pc,preposterous .endif inc stats+8. 1: cmp r(r1),l(r1) /W,L blo 3f mov l(r1),r0 inc r0 sub a(r1),r0 /W-A+1 jsr pc,allocate mov (sp),r0 jsr pc,copy jsr pc,swap jsr pc,release mov (sp),r1 3: mov r(r1),r0 jsr pc,bufchar bec 2f jsr pc,getbuf 2: movb nchar,(r0) mov $1,w1(r2) mov nchar,r0 /to preserve r0 for user inc r(r1) cmp r(r1),w(r1) blos 3f mov r(r1),w(r1) 3: mov (sp)+,r1 mov (sp)+,r2 rts pc / / / routine to look at next character from string / pointed to by r1; character returned in r0 / c-bit set if character not available (end of file) / r1 is preserved / / mov ...,r1 / jsr pc,lookchar / movb r0,... / lookchar: mov r2,-(sp) inc stats+6. .if testing jsr pc,preposterous .endif cmp w(r1),r(r1) /W,R blos noch mov r(r1),r0 jsr pc,bufchar bec 2f jsr pc,getbuf / 2: inc flag bne 2f jsr pc,fixct br 1f 2: mov flag,u1(r2) 1: mov (sp)+,r2 movb (r0),r0 tst r0 /clears c-bit rts pc / noch: mov (sp)+,r2 clr r0 sec rts pc / / / routine to put a character into the string / pointed to by r1; character in r0 / r0 is preserved; r1 points to the string / after return and must be saved. / / movb ch,r0 / mov ...,r1 / jsr pc,putchar / mov r1,... / putchar: mov r2,-(sp) mov r1,-(sp) mov r0,nchar .if testing jsr pc,preposterous .endif inc stats+8. 1: cmp w(r1),l(r1) /W,L blo 3f mov w(r1),r0 inc r0 sub a(r1),r0 /W-A+1 jsr pc,allocate mov (sp),r0 jsr pc,copy jsr pc,swap jsr pc,release mov (sp),r1 3: mov w(r1),r0 jsr pc,bufchar bec 2f jsr pc,getbuf 2: movb nchar,(r0) mov $1,w1(r2) mov nchar,r0 /to preserve r0 for user inc w(r1) inc flag bne 2f jsr pc,fixct br 1f 2: mov flag,u1(r2) 1: mov (sp)+,r1 mov (sp)+,r2 rts pc / / / routine to flush contents of all buffers. / / jsr pc,flush / flush: mov r1,-(sp) mov r2,-(sp) mov r3,-(sp) clr r3 1: cmp r3,$numb bhis 1f mov r3,r2 asl r2 tst w1(r2) ble 2f mov r3,r1 ashc $9.,r1 bic $777,r1 add $b1,r1 jsr pc,clean 2: inc r3 br 1b 1: mov (sp)+,r3 mov (sp)+,r2 mov (sp)+,r1 rts pc / / reset: mov r3,-(sp) mov r2,-(sp) clr r3 1: cmp r3,$numb bge 1f mov r3,r2 asl r2 mov $-1.,w1(r2) clr b1s(r2) clr b1e(r2) clr u1(r2) inc r3 br 1b 1: clr flag mov (sp)+,r2 mov (sp)+,r3 rts pc / / / routine to read from disc to a buffer / wcing the buffer if necessary / / mov disc addr,r0 / mov buffer addr,r2 / jsr pc,getb / / on return r0 = addr of byte in buffer / getb: mov r3,-(sp) mov r1,-(sp) mov r0,-(sp) mov r2,r3 asr r3 mov r3,r1 ashc $9.,r1 bic $777,r1 add $b1,r1 tst w1(r2) / w ble 1f jsr pc,clean 1: mov (sp),r0 bic $777,r0 /get lowest multiple of 512. mov r0,0f mov r0,b1s(r2) /set start mov afi,r0 sys seek;0:..;0 mov r1,0f sys read;0:..;512. mov b1s(r2),b1e(r2) add $512.,b1e(r2) / set end clr w1(r2) /clear w mov (sp)+,r0 sub b1s(r2),r0 add r1,r0 / set r0=byte addr in buffer mov (sp)+,r1 mov (sp)+,r3 rts pc / / / routine to wc a buffer / / mov buffer addr,r2 / mov buffer addr+6,r1 beginning of buffer / jsr pc,clean / clean: inc stats+24. mov r0,-(sp) mov b1s(r2),0f mov afout,r0 sys seek;0:..;0 mov r1,0f sys write;0:..;512. clr w1(r2) /clear w mov (sp)+,r0 rts pc / / / routine to get buffer addr of byte whose disc / addr is in r0 - also returns addr of write / flag for buffer in r2 / / mov disc addr,r0 / jsr pc,bufchar / mov (r0),r0 for read / inc (r2) for write must inc w / / c-bit set if char not in either buffer / bufchar: mov r1,-(sp) mov r3,-(sp) clr r3 1: mov r3,r2 asl r2 cmp r0,b1s(r2) blo 2f cmp r0,b1e(r2) bhis 2f sub b1s(r2),r0 mov r3,r1 ashc $9.,r1 bic $777,r1 add r1,r0 add $b1,r0 mov (sp)+,r3 mov (sp)+,r1 clc rts pc 2: inc r3 cmp r3,$numb blt 1b mov (sp)+,r3 mov (sp)+,r1 sec rts pc / / / routine to get a buffer / / mov disc addr,r0 / jsr pc,getbuf / mov (r0),r0 (for read) / inc (r2) must inc w for w / getbuf: mov r4,-(sp) mov r3,-(sp) mov $2,r3 clr r2 mov $1,r4 1: cmp r4,$numb bge 1f cmp u1(r3),u1(r2) bhis 2f mov r3,r2 2: inc r4 add $2.,r3 br 1b 1: mov r2,r3 jsr pc,getb add $stats+14.,r3 inc (r3) mov (sp)+,r3 mov (sp)+,r4 rts pc / / / this routine renumbers the time used cell u1(r2) / of the buffers when the clock overflows / fixct: mov r1,-(sp) mov r3,-(sp) mov $numb,r1 mov $numb,flag 2: mov r1,u1(r2) dec r1 bge 1f mov (sp)+,r3 mov (sp)+,r1 rts pc 1: clr r2 mov $2,r3 1: cmp r3,$numb2 bge 2b cmp u1(r3),u1(r2) blo 2f mov r3,r2 2: add $2,r3 br 1b z{|}~€�‚ƒ„…†‡ˆ‰Š‹Œ�.globl b1 .globl log2 .globl frlist .globl stats .globl b1s .globl b1e .globl w1 / here to allocate a new block / / / mov ...,r0 / jsr pc,allocate / mov r1,... / / requested size in bytes in r0 / pointer to header of allocated block returned in r1 / r0 is preserved / / convert to words, adjust for header, round up / to a power of two / / each block has a four-word header / W - write ptr (also used as link ptr in frlist) / R - read ptr / A - pointer to head of data / L - ptr to (end+1) of data hsz=6144. datasz = 32768. numb=4. numb2=2*numb w=0 r=2 a=4 l=6 / allocate: clr garbage mov r0,-(sp) mov r2,-(sp) mov r3,-(sp) inc stats bne 9f; inc stats; 9: cmp r0,$datasz blo 9f; 4; 9: dec r0 bmi 1f jsr pc,log2 inc r0 1: asl r0 mov r0,-(sp) add $2,r0 cmp r0,$frend-frlist+2 blo zzz 4 / / look on free list for block of required size / zzz: mov (sp),r0 tst frlist(r0) beq xxx / / found it, allocate and return / mov frlist(r0),r1 add $hblk,r1 mov (r1),frlist(r0) mov a(r1),r0 mov r0,w(r1) /W mov r0,r(r1) /R tst (sp)+ mov (sp)+,r3 mov (sp)+,r2 mov (sp)+,r0 / jsr pc,whead rts pc / / no block of required size / look for larger block / xxx: tst hblk beq www tst (r0)+ cmp r0,$frend-frlist bhis www tst frlist(r0) bne yyy br xxx / / there are no larger blocks; must garbage collect / www: jsr pc,collect tst r0 bne zzz / / out of space / mov $1,r0 sys write; 1f; 2f-1f jmp interrupt 1: 2: .even / / split larger block into two smaller pieces and / link together as smaller blocks in the free list. / yyy: mov hblk,r3 /get free header block beq www /should never get this mov frlist(r0),r1 add $hblk,r1 mov w(r1),frlist(r0) mov r3,w(r1) add $hblk,r3 mov exp2-2(r0),r2 add a(r1),r2 mov w(r3),hblk mov l(r1),l(r3) mov r2,l(r1) /L mov r2,a(r3) clr w(r3) /W' mov r1,r2 sub $hblk,r2 mov r2,frlist-2(r0) br zzz / / / here to release a block / / mov ...,r1 / jsr pc,release / / pointer to block in r1 / release: / / discover that this is a plausible pointer / mov r0,-(sp) jsr pc,preposterous / / find free list index and link block to that entry / inc stats+2 mov frlist(r0),w(r1) clr r(r1) sub $hblk,r1 mov r1,frlist(r0) clr r1 /self-defense mov (sp)+,r0 rts pc / / / jsr pc,collect / / coalesce free storage by rejoining paired blocks / on the free list. / zero is returned in r0 if no paired blocks were found. / collect: mov r1,-(sp) mov r2,-(sp) mov r3,-(sp) mov r4,-(sp) clr useful inc stats+4. clr r0 /start with smallest blocks /r0 contains frlist index loop1: mov $frlist,r1 add r0,r1 / / try next list member at this level / loop2: mov (r1),r3 beq advance /list is empty add $hblk,r3 tst (r3) /W beq advance /only one list element / / calculate address of buddy / mov a(r3),r4 sub $hsz,r4 mov exp2(r0),r2 xor r2,r4 1: add $hsz,r4 / / and search for him / loop3: cmp a(r3),r4 beq coal mov r3,r2 mov w(r3),r3 tst r3 beq nocoal add $hblk,r3 br loop3 / / have found a pair; remove both blocks from list, / coalesce them, and put them on next higher list / coal: mov $1,useful mov w(r3),w(r2) /remove him from list mov (r1),r2 add $hblk,r2 mov r3,r4 mov w(r2),w(r1) /remove other one cmp a(r2),a(r4) bhi 1f mov r2,-(sp) mov r4,r2 mov (sp)+,r4 1: mov hblk,(r2) clr r(r2) mov $hsz,a(r2) mov $hsz,l(r2) sub $hblk,r2 mov r2,hblk add exp2(r0),l(r4) /L clr r(r4) mov frlist+2(r0),w(r4) sub $hblk,r4 mov r4,frlist+2(r0) br loop2 / / no buddy found, try next block on this list / nocoal: mov (r1),r1 add $hblk,r1 br loop2 / / advance to next free list / advance: tst (r0)+ cmp r0,$frend-frlist blo loop1 mov useful,r0 / / do we have enough headers to continue? / tst garbage beq 1f mov $1,r0 sys write; 4f; 5f-4f 4 / 4: 5: .even / / / restore registers and return / 1: inc garbage mov (sp)+,r4 mov (sp)+,r3 mov (sp)+,r2 mov (sp)+,r1 rts pc / garbage:.=.+2 / / routine to find integer part of log2(x) / / jsr pc,log2 / / r0 = log2(r0) / log2: mov $15.,-(sp) tst r0 bne 1f clr (sp) br 2f 1: asl r0 bcs 2f dec (sp) br 1b 2: mov (sp)+,r0 rts pc / 0 exp2: 1;2;4;10;20;40;100;200;400;1000;2000;4000; 10000;20000;40000;100000 / / routine to discover whether r1 points to / a plausible header - to avoid ruination. / / r1 is preserved and r0 gets a suitable index for frlist / / jsr pc,preposterous / preposterous: cmp r1,$headers bhis 9f; 4; 9: cmp r1,$headend blo 9f; 4; 9: cmp a(r1),$hsz /A bhis 9f; 4; 9: cmp l(r1),$hsz+datasz /L blos 9f; 4; 9: mov l(r1),r0 /L sub a(r1),r0 /A mov r0,-(sp) jsr pc,log2 asl r0 cmp exp2(r0),(sp) beq 9f; 4; 9: add $2,r0 cmp r0,$frend-frlist+2 blo 9f; 4; 9: sub $2,r0 mov r0,(sp) mov frlist(r0),r0 1: beq 1f add $hblk,r0 cmp r0,r1 bne 9f; 4; 9: mov (r0),r0 br 1b 1: mov (sp)+,r0 rts pc / / / whead: inc stats+22. mov r0,-(sp) mov afout,r0 sys seek; 0; 0 sys write; hblk; hsz mov (sp)+,r0 rts pc / / initl: clr hblk mov r0,-(sp) mov r2,-(sp) sys open;almem; 1 /open for write bec 2f sys creat;almem; 666 bes err2 inc hblk 2: mov r0,afout sys open; almem; 0 /open for read bes err2 mov r0,afi br 1f / err2: mov $1,r0 sys write; 4f; 5f-4f 4 .data 4: 5: almem: .even .text / 1: tst hblk bgt 1f sys read; hblk; hsz /r0 already afi mov asmdisc,asmem add $hblk,asmem br 2f 1: mov $headers,r2 mov r2,r0 sub $hblk,r0 mov r0,hblk 1: add $8,r0 mov r0,(r2) add $8,r2 cmp r2,$headend-8. blo 1b clr -8(r2) mov $frlist,r0 1: clr (r0)+ cmp r0,$frend blo 1b mov hblk,r2 add $hblk,r2 mov (r2),hblk clr w(r2) mov $hsz,a(r2) mov $hsz+datasz,l(r2) mov $datasz,r0 jsr pc,log2 asl r0 cmp r0,$frend-frlist blo 9f; 4; 9: sub $hblk,r2 mov r2,frlist(r0) / / install plausible pointers to make octal dumps look nice / mov $hblk,r1 1: mov (r1),r1 tst r1 beq 1f add $hblk,r1 mov $hsz,a(r1) mov $hsz,l(r1) mov $hsz,r(r1) br 1b 1: mov afout,r0 sys write;hblk;hsz jsr pc,reset mov $4,r0 jsr pc,allocate mov r1,asmem mov r1,asmdisc sub $hblk,asmdisc 2: mov (sp)+,r2 mov (sp)+,r0 rts pc / / .bss / b1s: .=.+numb2 b1e: .=.+numb2 w1: .=.+numb2 u1: .=.+numb2 b1: .=. + [512.*numb] flag: .=.+2 stats: .=.+24. /alloc/release/collect/get/put/seek/copy useful: .=.+2 afi: .=.+2 afout: .=.+2 asmem: .=.+2 nchar: .=.+2 / / hblk: .=.+2 /must remain here - pointer to free header frlist: .=hblk+34. frend: asmdisc:.=.+2 headers: .=hblk+hsz headend: .text ��‘’“”•–—˜™š›/ getty -- get name and tty mode / for initialization / cycle through speeds and "login:" messages / summarized in itab stty = 31. gtty = 32. sys signal; 3; 1 sys signal; 2; 1 clr r0 sys gtty; name mov name+4,r0 bic $!26,r0 mov r0,flags / use xtab,cr,ucase from driver jsr r5,nextspeed 1: mov $name,r5 2: jsr r5,getc cmp r0,$'\n beq 1f cmp r0,$'\r beq 4f cmp r0,$'@ beq 1b cmp r0,$'# bne 3f cmp r5,$name blos 2b dec r5 br 2b 3: cmp r5,$name+30. bhis 2b movb r0,(r5)+ br 2b 4: bis $20,flags /cr bit mov $'\n,r0 jsr pc,putc br 2f 1: mov $'\r,r0 jsr pc,putc 2: clrb (r5)+ / determine whether terminal is upper-case only mov $name,r5 1: movb (r5)+,r0 beq 1f cmp r0,$'A blo 2f cmp r0,$'Z bhi 2f add $40,r0 / map to lc movb r0,-1(r5) br 1b 2: cmp r0,$'a blo 1b cmp r0,$'z bhi 1b bic $4,flags br 1b 1: mov fstate,r4 bis flags,4(r4) clr r0 sys 0; 9f .data 9: sys stty; fstate: .. .text go: sys exec; login; loginp sys exit getc: clr r0 sys read; ch; 1 bes done tst r0 beq done bic $!177,ch mov ch,r2 beq 1f getc1: cmp r2,$174 bhis 3f mov $1,r0 movb ch,r0 jsr pc,putc 3: mov r2,r0 rts r5 1: mov $name,(sp) jsr r5,nextspeed 2: clr r0 / flush nulls sys read; ch; 1 bes done tst r0 beq done movb ch,r2 beq 2b br getc1 done: sys exit nextspeed: mov itabp,r1 mov (r1)+,0f bne 1f mov $itab,itabp br nextspeed 1: clr r0 sys 0; 9f .data 9: sys stty; 0:.. .text bes go mov (r1)+,-(sp) mov (r1)+,fstate mov r1,itabp mov (sp)+,r1 1: movb (r1)+,r0 beq 1f jsr pc,putc br 1b 1: rts r5 putc: bic $!177,r0 movb r0,ch mov $1,r0 sys write; ch; 1 rts pc itabp: itab loginp: login name 0 itab: itn300; tnmes; tn300 itty37; ttymes; tty37 0 .data itty37: .byte 5, 5 0; 340 / any parity, raw tty37: .byte 5, 5 0; 210 / 37 parity, echo itn300: .byte 7, 7 0; 340 / any parity, raw, cr tn300: .byte 7, 7 0; 10310 / any parity, echo, no tab del ttymes: <\n\r\p:\alogin: \0> tnmes: <\n\r\p;login: \0> login: .even nl: <\n> cr: <\r> .bss flags: .=.+2 ch: .=.+2 name: .=.+32. /* global command -- glob params "*" in params matches r.e ".*" "?" in params matches r.e. "." "[...]" in params matches character class "[...a-z...]" in params matches a through z. perform command with argument list constructed as follows: if param does not contain "*", "[", or "?", use it as is if it does, find all files in current directory which match the param, sort them, and use them prepend the command name with "/bin" or "/usr/bin" as required. */ char ab[2000]; /* generated characters */ char *ava[200]; /* generated arguments */ char **av ava; char *string ab; int errno; main(argc, argv) char *argv[]; { int i, j, c; int inode, dirf, ap; int fb[8], sb[20]; char *cp, *cpo; if (argc < 3) { write(2, "Arg count\n", 10); return; } ap = 0; av++; fb[7] = 0; loop: cpo = cp = *++argv; while(c = *cp++) if (c=='*' || c=='?' || c=='[') goto compl; av[ap++] = copy(cpo); if (--argc>=2) goto loop; goto donow; compl: if(*--cp == '/') { *cp = '\0'; if((dirf=open(cp==cpo? "/" : cpo, 0))<0) goto oper; *cp++ = '/'; goto compl1; } if(cp != cpo) goto compl; if((dirf=open(".",0)) >= 0) goto compl1; oper: write(2, "No directory\n", 13); return; compl1: j = ap; l2: while (read(dirf, &inode, 2)>0) { read(dirf, fb, 14); if (inode==0) goto l2; if (match(fb, cp)) { c = *cp; *cp = '\0'; av[ap++] = cat(cpo, fb); *cp = c; } } close(dirf); i = j; while(i=2) goto loop; donow: if (ap<=1) { write(2, "No match\n", 9); return; } av[ap] = 0; strip(av); execv(av[0], av); if(errno == 7) goto toolong; i = cat("/bin/", av[0]); execv(i, av); if(errno == 7) goto toolong; i = cat("/usr", i); execv(i, av); if(errno == 2) goto per; *av = i; *--av = "/bin/sh"; execv(av[0], av); per: write(2, "Command not found\n", 18); return; toolong: write(2, "Arg list too long\n", 18); } match(s, p) char *s, *p; { if (*s=='.' && *p!='.') return(0); return(amatch(s, p)); } amatch(s, p) char *s, *p; { int c, cc, ok, lc, scc; scc = *s; lc = 077777; switch (c = *p) { case '[': ok = 0; while (cc = *++p) { switch (cc) { case ']': if (ok) return(amatch(++s, ++p)); else return(0); case '-': ok =| lc <= scc & scc <= (cc=p[1]); } if (scc==(lc=cc)) ok++; } return(0); case '?': caseq: if(scc) return(amatch(++s, ++p)); return(0); case '*': return(umatch(s, ++p)); case 0: return(!scc); } if (c==scc) goto caseq; return(0); } umatch(s, p) char *s, *p; { if(*p==0) return(1); while(*s) if (amatch(s++,p)) return(1); return(0); } compar(s1,s2) char *s1, *s2; { int c1,c2; loop: if ((c1 = *s1++)==0) return(0); if ((c2 = *s2++)==0) return(1); if (c1==c2) goto loop; return(c1>c2); } copy(s1) char *s1; { char *ts; ts = string; while(*string++ = *s1++); return(ts); } cat(s1, s2) char *s1, *s2; { char *ts; ts = string; while(*string++ = *s1++); string--; while(*string++ = *s2++); return(ts); } strip(v) char **v; { register char **p, *cp; for(p = v; cp = *p++;) while(*cp) *cp++ =& 0177; } int offset 0; main(argc, argv) char *argv[]; { extern fin; char line[64]; if (argc<2 || ttyn(0)!='x') { write(1, "goto error\n", 11); seek(0, 0, 2); return; } seek(0, 0, 0); fin = dup(0); loop: if (getlin(line)) { write(1, "label not found\n", 16); return; } if (compar(line, argv[1])) goto loop; seek(0, offset, 0); } getlin(s) char s[]; { int ch, i; i = 0; l: if ((ch=getc())=='\0') return(1); if (ch!=':') { while(ch!='\n' && ch!='\0') ch = getc(); goto l; } while ((ch=getc())==' '); while (ch!=' ' && ch!='\n' && ch!='\0') { s[i++] = ch; ch = getc(); } while(ch != '\n') ch = getc(); s[i] = '\0'; return(0); } compar(s1, s2) char s1[], s2[]; { int c, i; i = 0; l: if(s1[i] != s2[i]) return(1); if (s1[i++] == '\0') return(0); goto l; } getc() { offset++; return(getchar()); } / grep -- g/re/p / / grep [ -v ] [ -l ] [ -n ] re [ input ] ... .globl mesg, putc, flush, fcreat, _end sys signal; 2; 1 bit $1,r0 bne 1f sys signal; 2; out 1: mov (sp)+,narg mov sp,argp jsr pc,garg 1: jsr pc,garg cmpb (r5),$'- bne 1f cmpb 1(r5),$'v bne 2f inc vflg br 1b 2: cmpb 1(r5),$'c bne 2f inc lflg br 1b 2: cmpb 1(r5),$'b bne 2f inc bflg br 1b 2: cmpb 1(r5),$'n bne 2f inc nflg inc lflg br 1b 2: 1: jsr pc,compile mov $1,obuf tst narg ble loop jsr pc,iarg br loop out: inc nflg mov $2,obuf clr obuf+2 clr obuf+4 clr obuf+6 jsr pc,nline jsr pc,nline jsr pc,pfile mov line,r0 mov line+2,r1 jsr pc,decml jsr pc,nline jsr r5,flush; obuf sys exit loop: mov $lbuf,r1 mov $elbuf-1,r2 mov $'\n,r3 mov gc4,r4 mov gc5,r5 1: dec r4 bge 2f fread: mov gcf,r0 sys read; ibuf; 512. bes eloop inc blkno mov r0,r4 beq eloop mov $ibuf,r5 br 1b 2: movb (r5)+,r0 beq 1b cmp r0,r3 / nl beq 1f movb r0,(r1)+ cmp r1,r2 / elbuf blo 1b dec r1 br 1b 1: mov r5,gc5 mov r4,gc4 add $1,line+2 adc line clrb (r1)+ jsr r5,execute br 2f tst vflg bne loop br 1f 2: tst vflg beq loop 1: tst lflg beq 1f jsr pc,pfile mov line,r0 mov line+2,r1 jsr pc,decml mov $' ,r0 jsr r5,putc; obuf 1: tst bflg beq 1f jsr pc,pfile clr r0 mov blkno,r1 jsr pc,decml mov $' ,r0 jsr r5,putc; obuf 1: mov $lbuf,r1 1: movb (r1)+,r0 beq 1f jsr r5,putc; obuf br 1b 1: jsr pc,nline jsr r5,flush; obuf br loop eloop: jsr r5,flush; obuf tst narg ble 1f jsr pc,iarg br fread 1: sys exit iarg: mov r5,-(sp) mov gcf,r0 beq 1f sys close 1: jsr pc,garg mov r5,fname sys 0; 9f .data 9: sys open; fname: 0; 0 .text bec 1f mov fname,r0 jsr pc,diag mov $9f,r0 jsr pc,diag .data 9: <: cannot open\n\0> .even .text sys exit 1: mov r0,gcf tst nflg beq 1f clr line clr line+2 1: mov (sp)+,r5 rts pc garg: dec narg blt 1f mov *argp,r5 add $2,argp rts pc 1: mov $9f,r0 jsr pc,diag .data 9: .even .text sys exit compile: mov $ebuf,r3 movb (r5)+,r1 beq cerr cmp r1,$'^ beq 1f jsr r5,cop; ecmf dec r5 1: cmpb (r5),$'* beq cerr cadv: movb (r5)+,r1 beq ceof cmp r1,$'\\ beq cesc cmp r1,$'. beq cdot cmp r1,$'* beq cast cmp r1,$'$ beq cdol cmp r1,$'[ beq cccl jsr r5,cop; echr mov r1,(r3)+ br cadv ceof: jsr r5,cop; eeof cmp r3,$eebuf blos 1f mov $9f,r0 jsr pc,diag .data 9: .even .text sys exit 1: rts pc cesc: jsr r5,cop; echr movb (r5)+,r1 mov r1,(r3)+ bne cadv cerr: mov $9f,r0 jsr pc,diag .data 9: .even .text sys exit cdot: jsr r5,cop; edot br cadv cdol: tstb (r5) beq 1f jsr r5,cop; echr mov $'$,(r3)+ br cadv 1: jsr r5,cop; edol br cadv cccl: mov ctab,r0 add $32.,r0 mov r0,0f sys break; 0:.. jsr r5,cop; eccl movb (r5)+,r1 cmp r1,$'^ bne 1f mov $enccl,*f movb (r5)+,r1 1: tst r1 beq cerr jsr pc,bitc add ctab,r1 bisb r0,(r1) movb (r5)+,r1 cmp r1,$'] bne 1b mov ctab,(r3)+ mov 0b,ctab br cadv cast: mov *f,r1 mov -(r1),*f br cadv cop: mov r3,f mov (r5)+,(r3)+ rts r5 execute: mov $lbuf,r4 mov $ebuf,r3 jmp *(r3)+ eeof: tst (r5)+ efail: rts r5 ecmf: mov r3,-(sp) mov r4,-(sp) jsr r5,*(r3)+ br 1f cmp (sp)+,(sp)+ br eeof 1: mov (sp)+,r4 mov (sp)+,r3 tstb (r4)+ bne ecmf br efail echrs echr: movb (r4)+,r1 cmp r1,(r3)+ bne efail jmp *(r3)+ echrs echrs: mov (r3)+,r1 mov r4,-(sp) 1: cmpb (r4)+,r1 beq 1b br east edots edot: tstb (r4)+ beq efail jmp *(r3)+ edots edots: mov r4,-(sp) 1: tstb (r4)+ bne 1b br east eccls eccl: movb (r4)+,r1 beq efail jsr pc,bitc add (r3)+,r1 bitb r0,(r1) beq efail jmp *(r3)+ enccls enccl: movb (r4)+,r1 beq efail jsr pc,bitc add (r3)+,r1 bitb r0,(r1) bne efail jmp *(r3)+ eccls eccls: mov r4,-(sp) mov (r3)+,-(sp) 2: movb (r4)+,r1 beq 1f jsr pc,bitc add (sp),r1 bitb r0,(r1) bne 2b 1: tst (sp)+ br east enccls enccls: mov r4,-(sp) mov (r3)+,-(sp) 2: movb (r4)+,r1 beq 1f jsr pc,bitc add (sp),r1 bitb r0,(r1) beq 2b 1: tst (sp)+ br east edol: tstb (r4) bne efail jmp *(r3)+ east: dec r4 mov r3,-(sp) mov r4,-(sp) jsr r5,*(r3)+ br 1f 2: add $6,sp br eeof 1: mov (sp)+,r4 mov (sp)+,r3 cmp r4,(sp) bhi east tst (sp)+ br efail bitc: mov $1,r0 mov r1,-(sp) bic $!7,(sp) ash (sp)+,r0 ash $-3,r1 bic $!37,r1 rts pc nline: mov $'\n,r0 jsr r5,putc; obuf rts pc pfile: tst nflg beq 1f mov fname,r1 beq 1f 2: movb (r1)+,r0 beq 2f jsr r5,putc; obuf br 2b 2: mov $':,r0 jsr r5,putc; obuf 1: rts pc decml: div $10.,r0 mov r1,-(sp) mov r0,r1 beq 1f clr r0 jsr pc,decml 1: mov (sp)+,r0 add $'0,r0 jsr r5,putc; obuf rts pc diag: mov r1,-(sp) mov r0,r1 1: movb (r1)+,0f beq 1f mov $2,r0 sys write; 0f; 1 br 1b 1: mov (sp)+,r1 rts pc .data 0: 0 .text .data ctab: _end .bss narg: .=.+2 argp: .=.+2 vflg: .=.+2 lflg: .=.+2 nflg: .=.+2 bflg: .=.+2 blkno: .=.+2 line: .=.+4 f: .=.+2 ebuf: .=.+512.; eebuf: lbuf: .=.+512.; elbuf: gcf: .=.+2 gc4: .=.+2 gc5: .=.+2 ibuf: .=.+512. obuf: .=.+518. «¬­®¯°±²³´/* if command */ int ap; int ac; char **av; main(argc, argv) char *argv[]; { argv[argc] = 0; ac = argc; av = argv; ap = 1; if (argc<2) return; if (exp()) if(doex(0)) { write(1, "no command\n", 11); seek(0, 0, 2); } } char *nxtarg() { if (ap>ac) return(0*ap++); return(av[ap++]); } exp(s) { int p1; p1 = e1(); if (eq(nxtarg(), "-o")) return(p1 | exp()); ap--; return(p1); } e1() { int p1; p1 = e2(); if (eq(nxtarg(), "-a")) return (p1 & e1()); ap--; return(p1); } e2() { if (eq(nxtarg(), "!")) return(!e3()); ap--; return(e3()); } e3() { int p1, ccode; register char *a; ccode = 0; if ((a=nxtarg())==0) goto err; if(eq(a, "(")) { p1 = exp(); if(!eq(nxtarg(), ")")) goto err; return(p1); } if(eq(a, "-r")) return(tio(nxtarg(), 0)); if(eq(a, "-w")) return(tio(nxtarg(), 1)); if(eq(a, "-c")) return(tcreat(nxtarg())); if(eq(a, "{")) { /* execute a command for exit code */ if(fork()) /*parent*/ wait(&ccode); else { /*child*/ doex(1); goto err; } while((a=nxtarg()) && (!eq(a,"}"))); return(ccode? 0 : 1); } p1 = nxtarg(); if (p1==0) goto err; if(eq(p1, "=")) return(eq(a, nxtarg())); if(eq(p1, "!=")) return(!eq(a, nxtarg())); err: write(1, "if error\n", 9); exit(9); } tio(a, f) { a = open(a, f); if (a>=0) { close(a); return(1); } return(0); } tcreat(a) { return(1); } eq(a, b) char *a, *b; { register int i; i = 0; l: if(a[i] != b[i]) return(0); if(a[i++] == '\0') return(1); goto l; } doex(earg) { register int np, i, c; char *nargv[50], *ncom, *na; np = 0; while (na=nxtarg()) { if(earg && eq(na,"}")) break; nargv[np++] = na; } if(earg && (!eq(na, "}"))) return(9); nargv[np] = 0; if (np==0) return(earg); execv(nargv[0], nargv, np); i = 0; ncom = "/usr/bin/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; while(c=nargv[0][i]) { ncom[9+i++] = c; } ncom[9+i] = '\0'; execv(ncom+4, nargv, np); execv(ncom, nargv, np); return(1); } #define tabsize 20 #define all p = &itab[0]; p < &itab[20]; p++ #define ever ;; #define ncom 1 #define single 0173030 #define reboot 0173040 char shell[] "/bin/sh"; char minus[] "-"; char runc[] "/etc/rc"; char init[] "/etc/init"; char ifile[] "/etc/ttys"; char utmp[] "/tmp/utmp"; char wtmpf[] "/usr/adm/wtmp"; char ctty[] "/dev/tty8"; char *com[ncom] { "/etc/getty", }; int fi; struct { int flag; int line; int comn; } line; struct tab { int pid; int line; int comn; } itab[tabsize]; struct { char name[8]; char tty; char fill; int time[2]; int wfill; } wtmp; main() { register i; register struct tab *p, *q; int reset(); /* * if not single user, * run shell sequence */ if(getcsw() != single) { i = fork(); if(i == 0) { execl(shell, shell, runc, 0); exit(); } while(wait() != i); close(creat(utmp, 0644)); if ((i = open(wtmpf, 1)) >= 0) { seek(i, 0, 2); wtmp.tty = '~'; time(wtmp.time); write(i, &wtmp, 16); close(i); } } /* * main loop for hangup signal * close all files and * check switches for magic values */ setexit(); signal(1, reset); for(i=0; i<10; i++) close(i); switch(getcsw()) { case single: error: termall(); i = fork(); if(i == 0) { open(ctty, 2); dup(0); execl(shell, minus, 0); exit(); } while(wait() != i); case reboot: termall(); execl(init, minus, 0); reset(); } /* * open and merge in init file */ fi = open(ifile, 0); q = &itab[0]; while(rline()) { if(line.flag == '0') continue; for(all) if(p->line==line.line || p->line==0) { if(p >= q) { i = p->pid; p->pid = q->pid; q->pid = i; p->line = q->line; p->comn = q->comn; q->line = line.line; q->comn = line.comn; q++; } break; } } close(fi); if(q == &itab[0]) goto error; for(; q < &itab[tabsize]; q++) term(q); for(all) if(p->line != 0 && p->pid == 0) dfork(p); for(ever) { i = wait(); for(all) if(p->pid == i) { rmut(p); dfork(p); } } } termall() { register struct tab *p; for(all) term(p); } term(ap) struct tab *ap; { register struct tab *p; p = ap; if(p->pid != 0) { rmut(p); kill(p->pid, 9); } p->pid = 0; p->line = 0; } rline() { static char c[4]; if(read(fi, c, 4) != 4 || c[3] != '\n') return(0); line.flag = c[0]; line.line = c[1]; line.comn = c[2] - '0'; if(line.comn<0 || line.comn>=ncom) line.comn = 0; return(1); } dfork(ap) struct tab *ap; { register i; register char *tty; register struct tab *p; p = ap; i = fork(); if(i == 0) { signal(1, 0); tty = "/dev/ttyx"; tty[8] = p->line; chown(tty, 0); chmod(tty, 0622); open(tty, 2); dup(0); execl(com[p->comn], minus, 0); exit(); } p->pid = i; } rmut(p) struct tab *p; { register i, f; static char zero[16]; f = open(utmp, 1); if(f >= 0) { i = p->line; if(i >= 'a') i =+ '0' + 10 - 'a'; seek(f, (i-'0')*16, 0); write(f, zero, 16); close(f); } f = open(wtmpf, 1); if (f >= 0) { wtmp.tty = p->line; time(wtmp.time); seek(f, 0, 2); write(f, &wtmp, 16); close(f); } } / kill process mov (sp)+,r4 tst (sp)+ loop: dec r4 ble done mov (sp)+,r5 clr r3 cmpb (r5),$'- bne 1f inc r5 clr signo 1: movb (r5)+,r0 beq 1f sub $'0,r0 cmp r0,$9 bhi error mul $10.,r3 add r0,r3 br 1b 1: tst signo bne 1f tst r3 ble error cmp r3,$12. bgt error mov r3,signo br loop 1: mov r3,r0 sys 37.; signo: 9. / kill bec loop mov r3,r0 jsr pc,decml mov $1,r0 sys write; m1; em1-m1 br loop error: mov $1,r0 sys write; m2; em2-m2 br loop done: sys exit decml: mov r0,r1 clr r0 div $10.,r0 mov r1,-(sp) tst r0 beq 1f jsr pc,decml 1: mov (sp)+,r0 add $'0,r0 mov r0,ch mov $1,r0 sys write; ch; 1 rts pc m1: <: not found\n> em1: m2: em2: .bss ch: .=.+2 / ld1 -- link editor orig: sys signal; 2; 1 ror r0 bcs 1f sys signal; 2; sintr 1: mov (sp)+,r0 dec r0 bgt 1f sys exit 1: mov r0,argc mov sp,argp 1: jsr r5,nxtarg br pass2 jsr r5,load1 br 1b pass2: sys creat; l.out; 666 bec 1f clr filnam jsr r5,mesg; outfile sys exit 1: mov r0,fout mov $symtab,r5 1: cmp r5,esymp bhis 1f cmp 10(r5),$40 / undefined? bne 2f tst 12(r5) / common? bne 2f jsr r0,issymbol; _end br 2f jsr r0,issymbol; _etext br 2f jsr r0,issymbol; _edata br 2f clr relflg / save relocation br 1f 2: add $14,r5 br 1b 1: mov txtsiz,r1 tst nflg beq 1f add $77,r1 / 0 mod 64 bic $77,r1 mov r1,txtsiz add $17777,r1 bic $17777,r1 1: mov datsiz,r2 mov r1,r3 add r2,r3 / bss origin clr r4 tst dcom bne 1f tst relflg beq 9f 1: mov $symtab,r5 1: cmp r5,esymp bhis 1f cmp 10(r5),$40 / undefined bne 2f mov 12(r5),r0 / common? beq 2f / no mov r4,12(r5) / common origin add r3,12(r5) inc r0 bic $1,r0 / even add r0,r4 / new common origin mov $47,10(r5) / temp. common type 2: add $14,r5 br 1b 1: add r4,bsssiz 9: mov $symtab,r5 1: cmp r5,esymp bhis 1f tst dcom bne 3f tst relflg beq 2f 3: cmp 10(r5),$40 / undefined bne 2f tst 12(r5) / common? bne 2f jsr r0,issymbol; _end br 3f br 4f 3: mov $44,10(r5) / bss type mov bsssiz,12(r5) / at end of bss sub r4,12(r5) / common compensation br 2f 4: jsr r0,issymbol; _etext br 3f br 4f 3: mov $42,10(r5) / text type mov txtsiz,12(r5) / at end of text 4: jsr r0,issymbol; _edata br 3f br 2f 3: mov $43,10(r5) / data type mov datsiz,12(r5) 2: cmp 10(r5),$43 blt 2f / undef, abs or text beq 3f cmp 10(r5),$47 / common bne 4f mov $44,10(r5) / set bss br 2f 4: add r2,12(r5) / bss add r4,12(r5) / common total 3: add r1,12(r5) / data 2: add $14,r5 br 1b 1: mov r1,fdatorg mov r3,fbssorg add r4,fbssorg mov symsiz,locsymsiz add esymp,symsiz sub $symtab,symsiz tst sqflg beq 1f clr symsiz 1: jsr r5,oattach; otxtp; zero add $20,oattpt jsr r5,oattach; odatp; txtsiz tst relflg / suppress relocation? bne 1f jsr r5,oattach; otrelp; datsiz jsr r5,oattach; odrelp; txtsiz 1: jsr r5,oattach; osymp; datsiz tst entptr beq 1f tst exorig beq 2f jsr r5,mesg; mulent / too many entry points 2: mov entptr,r0 mov 12(r0),exorig inc exorig / 0 entry means none 1: mov $7,-(sp) mov $magic,r1 / write magic at start tst sqflg beq 1f clr symsiz 1: mov (r1)+,r0 tst nflg beq 1f inc r0 / ro text segment 1: jsr r5,putwrd; otxtp 1: mov (r1)+,r0 jsr r5,putwrd; otxtp dec (sp) bne 1b tst (sp)+ clr txtsiz clr datsiz clr bsssiz clr *rlistp mov $rlist,rlistp 1: jsr r5,nxtarg2 br 1f jsr r5,load2 br 1b 1: jsr r5,flush; otxtp jsr r5,flush; odatp tst relflg bne 1f jsr r5,flush; otrelp jsr r5,flush; odrelp 1: mov $symtab,r1 1: cmp r1,esymp bhis 1f cmp 10(r1),$40 bne 2f tst 12(r1) / common? bne 2f mov r1,r0 clr filnam jsr r5,smesg; undmes 2: tst sqflg beq 3f add $14,r1 br 1b 3: mov $6,r2 2: mov (r1)+,r0 jsr r5,putwrd; osymp dec r2 bne 2b br 1b 1: jsr r5,flush; osymp done: sys unlink; a.out sys link; l.out; a.out bec 1f clr filnam jsr r5,mesg; movemes sys exit 1: sys unlink; l.out sys chmod; a.out; outmod: 777 sys exit sintr: sys unlink; l.out sys exit load1: mov txtsiz,txtorg mov datsiz,datorg sub ctxtsiz,datorg mov bsssiz,bssorg sub ctxtsiz,bssorg sub cdatsiz,bssorg mov $14,locsymsiz clr ndef mov r5,-(sp) mov esymp,-(sp) mov $local,r5 jsr r5,attach; txtp; csymorg 1: jsr r5,getsym bvs 1f cmp symbol+10,$40 bge 2f / external tst xtflg bne 1b add $14,locsymsiz / count locals br 1b 2: jsr r5,lookup mov (r4),r0 beq 2f / not yet in table cmp 10(r0),$40 bgt 1b / multiply defined cmp symbol+10,$42 / is text? bne 3f tst 12(r0) / is genuine common? bne 1b / yes, don't satisfy with text 3: inc ndef / remember def occurred cmp symbol+10,$40 bgt 3f dec ndef / forget def occurred cmp 12(r0),symbol+12 / extend common region? bge 1b br 3f 2: mov r4,(r5)+ jsr r5,enter cmp symbol+10,$40 ble 1b 3: jsr r5,relsym mov (r4),r0 mov symbol+10,10(r0) mov symbol+12,12(r0) br 1b 1: tst libflg / load anyway if not library beq 1f tst ndef / load library if any definitions bne 1f mov (sp)+,esymp / rip out symbols 2: cmp r5,$local / see if end of entered symbols blos 2f clr *-(r5) / rip out hash entry br 2b 1: tst (sp)+ tst entry beq 1f add txtorg,entry tst exorig beq 5f jsr r5,mesg; mulent 5: mov entry,exorig 1: add locsymsiz,symsiz / total of local symbs mov rlistp,r0 cmp r0,$rliste blo 1f jsr r5,mesg; toomany jmp done 1: mov reopened,r1 bne 1f mov *argp,r1 cmp r1,$libfil bne 1f movb wlib,r1 / library, just remember letter name 1: mov r1,(r0)+ mov libflg,(r0)+ / remember start of routine beq 3f / not library bis $1,reopened 3: mov r0,rlistp jsr r5,addin 2: mov (sp)+,r5 rts r5 load2: mov txtsiz,txtorg mov fdatorg,r0 add datsiz,r0 sub ctxtsiz,r0 mov r0,datorg mov fbssorg,r0 add bsssiz,r0 sub ctxtsiz,r0 sub cdatsiz,r0 mov r0,bssorg mov r5,-(sp) jsr r5,attach; txtp; csymorg mov $local,r5 mov $-1,-(sp) / local symbol index mov filnam,r1 2: tstb (r1)+ bne 2b 2: cmp r1,filnam blos 2f cmpb -(r1),$'/ bne 2b tstb (r1)+ 2: mov $symbol,r0 2: movb (r1)+,(r0)+ bne 3f tstb -(r1) 3: cmp r0,$symbol+8. blo 2b mov $37,symbol+10 mov txtorg,symbol+12 tst sqflg bne 1f jsr r5,wrlocsym 1: jsr r5,getsym bvs 1f jsr r5,relsym inc (sp) cmp symbol+10,$40 blo 5f jsr r5,lookup tst (r4) bne 6f jsr r5,mesg; snotfound br 1b 6: cmp symbol+10,$40 bgt 2f beq 4f 5: tst xtflg bne 1b / skip locals jsr r5,wrlocsym / write local symbol br 1b 2: mov (r4),r0 cmp 10(r0),symbol+10 bne 2f cmp 12(r0),symbol+12 beq 4f 2: jsr r5,smesg; multi 4: cmp r5,$elocal blo 3f jsr r5,mesg; locovflo jmp done 3: mov (sp),(r5)+ / save local index mov (r4),(r5)+ / save symbol location br 1b 1: mov r5,locp tst (sp)+ jsr r5,attach; txtp; ctxtorg jsr r5,attach; relp; ctrelorg mov txtsiz,relbas 1: jsr r5,txtlod br 1f tst relflg bne 2f jsr r5,putwrd; otrelp 2: mov r3,r0 jsr r5,putwrd; otxtp br 1b 1: jsr r5,attach; txtp; cdatorg jsr r5,attach; relp; cdrelorg mov datorg,r0 mov r0,relbas mov r5,locp mov (sp)+,r5 1: jsr r5,txtlod br 1f tst relflg bne 2f jsr r5,putwrd; odrelp 2: mov r3,r0 jsr r5,putwrd; odatp br 1b 1: jsr r5,addin rts r5 txtlod: jsr r5,getwrd; txtp bvs 1f tst (r5)+ mov r0,r3 jsr r5,getwrd; relp bvc 2f jsr r5,mesg; relerr sys exit 2: mov r0,r2 bic $1,r2 bic $!17,r0 cmp r0,$7 blos 3f / external symbol reference clc ror r2 asr r2 asr r2 asr r2 / get symbol number jsr r5,lookloc / get symbol cmp 10(r4),$40 bgt 2f / still undefined sub $symtab,r4 add locsymsiz,r4 mov r5,-(sp) mov r4,r5 clr r4 dvd $14,r4 als $4,r4 bis r4,r0 mov (sp)+,r5 br relrel 2: / symbol now defined add 12(r4),r3 / symbol value mov 10(r4),r2 sub $41,r2 bic $!1,r0 bne 4f tst r2 beq 5f / not relative & relocatable add dotdot,r3 br 5f 4: tst r2 bne 5f / relative & absolute sub dotdot,r3 5: asl r2 bis r2,r0 br relrel / absolute, text, data, or bss symbol 3: add *reltab(r2),r3 relrel: bit $1,r0 beq 1f sub relbas,r3 / relative relocation 1: rts r5 wrlocsym: mov $symbol,r1 mov $6,-(sp) 3: mov (r1)+,r0 jsr r5,putwrd; osymp / write out local symbol dec (sp) bne 3b tst (sp)+ rts r5 ÃÄÅÆÇÈÉÊËÌÍÎÏÐÑ/ ld2 -- link editor attach: mov (r5)+,r1 / buffer mov (r5)+,r2 / file origin, size mov (r2),0f / seek ptr mov fin,r0 sys seek; 0:..; 0 mov (r2),r0 bis $777,r0 inc r0 / start of next block add $10,r1 mov r1,-(sp) add $1000,(sp) / buf max mov r0,-(r1) / next seek ptr mov (sp),-(r1) sub (r2)+,r0 / left in buffer sub r0,(sp) / next buffer word mov (sp),-(r1) mov (sp)+,0f / buffer loc cmp (r2),r0 bge 1f mov (r2),r0 1: mov r0,0f+2 / number to read mov (r2),-(r1) / left in file jsr r5,rdchk; 0:..; .. rts r5 rdchk: mov (r5)+,0f mov (r5)+,0f+2 mov fin,r0 sys read; 0:..; .. bes 1f cmp r0,0b+2 bne 1f rts r5 1: jsr r5,mesg; premeof jmp sintr getwrd: mov (r5)+,r1 sub $2,(r1)+ / left in file bge 1f sev / end of file rts r5 1: mov (r1)+,r2 / word ptr cmp r2,(r1)+ / eob ptr bhis 1f / end of buffer mov (r2)+,r0 mov r2,-4(r1) rts r5 1: mov (r1),0f mov fin,r0 sys seek; 0:..; 0 add $1000,(r1)+ / new seek ptr mov r1,0f mov -10(r1),r0 / left in file add $2,r0 cmp r0,$1000 ble 1f mov $1000,r0 / read 1000 at most 1: mov r0,0f+2 jsr r5,rdchk; 0:..; .. mov (r1)+,r0 mov r1,-10(r1) / new next word rts r5 oattach: mov (r5)+,r1 mov (r5)+,r2 mov oattpt,r0 add (r2),r0 mov r0,oattpt mov r0,r2 bic $!777,r0 add r1,r0 add $6,r0 mov r0,(r1)+ / next slot mov r1,r0 add $1004,r0 mov r0,(r1)+ / buf max mov r2,(r1)+ / seek addr rts r5 putwrd: mov r1,-(sp) mov r2,-(sp) mov (r5)+,r2 mov (r2)+,r1 / slot cmp r1,(r2) / buf max bhis 1f mov r0,(r1)+ mov r1,-(r2) br 2f 1: tst (r2)+ mov r0,-(sp) jsr r5,flush1 mov (sp)+,*(r2)+ add $2,-(r2) 2: mov (sp)+,r2 mov (sp)+,r1 rts r5 flush: mov (r5)+,r2 cmp (r2)+,(r2)+ flush1: mov (r2)+,r1 mov r1,0f / seek address mov fout,r0 sys seek; 0:..; 0 bic $!777,r1 add r2,r1 / write address mov r1,0f mov r2,r0 bis $777,-(r2) inc (r2) / new seek addr cmp -(r2),-(r2) sub (r2),r1 neg r1 mov r1,0f+2 / count mov r0,(r2) / new next slot mov fout,r0 sys write; 0:..; .. rts r5 lookup: mov $symbol,r1 mov (r1)+,r0 add (r1)+,r0 add (r1)+,r0 add (r1)+,r0 mov r0,r1 clr r0 dvd $hshsiz,r0 mov r1,r4 asl r4 add $hshtab,r4 1: mov (r4)+,r0 beq 3f / not found mov $symbol,r1 cmp (r1)+,(r0)+ bne 2f cmp (r1)+,(r0)+ bne 2f cmp (r1)+,(r0)+ bne 2f cmp (r1)+,(r0)+ bne 2f 3: tst -(r4) rts r5 2: cmp r4,$2*hshsiz+hshtab blo 1b mov $hshtab,r4 br 1b enter: mov esymp,r0 add $14,r0 cmp r0,0f blo 1f add $500.,r0 mov r0,0f sys break; 0:symtab 1: mov esymp,r0 mov r0,(r4) mov $symbol,r1 mov $6,-(sp) 1: mov (r1)+,(r0)+ dec (sp) bne 1b mov r0,esymp tst (sp)+ rts r5 smesg: mov r1,-(sp) mov r0,-(sp) jsr pc,1f tst filnam beq 2f mov $1,r0 sys write; qsemi; 1 2: mov (sp)+,r1 mov $8.,-(sp) 3: movb (r1)+,ch beq 4f mov $1,r0 sys write; ch; 1 4: dec (sp) bne 3b tst (sp)+ mov (sp)+,r1 br 2f mesg: jsr pc,1f mov $1,r0 2: sys write; qnl; 1 rts r5 1: mov $666,outmod / make a.out nonexecutable mov r1,-(sp) mov (r5)+,r1 1: movb (r1)+,ch beq 1f mov $1,r0 sys write; ch; 1 br 1b 1: mov filnam,r1 beq 9f 1: movb (r1)+,ch beq 1f mov $1,r0 sys write; ch; 1 br 1b 1: 9: mov (sp)+,r1 rts pc getsym: mov $6,-(sp) mov $symbol,r4 1: jsr r5,getwrd; txtp bvs 2f mov r0,(r4)+ dec (sp) bne 1b tst (sp)+ rts r5 2: tst (sp)+ sev rts r5 nxtarg2: mov rlistp,r1 add $4,rlistp mov (r1)+,r0 beq 1f / end of args cmp r0,$177 / see if system library bhi 2f cmp r0,$1 / see if archive beq 3f movb r0,wlib mov $libfil,r0 2: jsr r5,aopen br nxtarg2 3: mov (r1),libflg beq 2f sub $20,(r1) mov (r1),0f mov fin,r0 sys seek; 0:..; 0 2: mov fin,r0 sys read; arcmag; 40 bes bform1 cmp r0,$20 blt bform1 mov $arcmag,r4 tst (r1)+ beq filstrt cmp r0,$40 bne bform1 br libstrt 1: rts r5 bform1: jmp bform nxtarg: add libnxt,libflg / see if library beq advarg / no mov libflg,0f mov fin,r0 sys seek; 0:..; 0 mov fin,r0 sys read; arcmag+2; 40 / get arc header, seg hdr mov $arcmag+2,r4 add $20,libflg cmp r0,$40 beq libstrt / not end of libr advarg: dec argc bge 1f rts r5 1: mov argp,r1 tst (r1)+ mov r1,argp cmpb *(r1),$'- bne opnarg jsr r5,specarg br advarg opnarg: clr libflg clr libnxt mov *argp,r0 clr reopened jsr r5,aopen br advarg mov fin,r0 sys read; arcmag; 42 / read arc header if any, file hdr bes bform mov r0,r3 mov $arcmag,r4 add r4,r3 cmp r3,$arcmag+20 blo bform cmp (r4),arcmagic bne filstrt cmp r3,$arcmag+42 blo bform tst (r4)+ mov $22,libflg libstrt: mov 16(r4),r0 / next library start inc r0 bic $1,r0 mov r0,libnxt clr 14(r4) / end of name mov r4,filnam / archive entry name add $20,r4 / point to file start filstrt: cmp (r4)+,magic / see if object file bne bform mov $ctxtorg,r1 mov libflg,r2 / text origin in file add $20,r2 / skip header mov (r4)+,r0 mov r2,(r1)+ / text origin mov r0,(r1)+ / text size add r0,r2 mov (r4)+,r0 mov r2,(r1)+ / data origin mov r0,(r1)+ / data size add r0,r2 mov (r4)+,(r1)+ / bss size mov r2,(r1)+ / text reloc origin mov ctxtsiz,(r1) / text reloc size add (r1)+,r2 mov r2,(r1)+ / data reloc origin mov cdatsiz,(r1) / data size add (r1)+,r2 mov (r4)+,r0 mov r2,(r1)+ / symbol table origin mov r0,(r1)+ / symbol table size mov (r4)+,r0 / stack size cmp r0,stksiz blo 1f mov r0,stksiz 1: mov (r4)+,entry / entry tst (r4)+ / relocation suppressed? beq 1f jsr r5,mesg; norel rts r5 1: tst (r5)+ rts r5 bform: jsr r5,mesg; format jmp sintr specarg: mov (r1),r0 movb 1(r0),r0 cmpb r0,$'u beq use cmpb r0,$'l beq libarg cmpb r0,$'x beq xtsym cmpb r0,$'e beq entarg cmpb r0,$'r beq savrel cmpb r0,$'s beq squash cmpb r0,$'n beq new cmpb r0,$'d beq sdcom rts r5 squash: inc sqflg inc xtflg rts r5 savrel: clr relflg rts r5 xtsym: inc xtflg rts r5 libarg: movb $'a,wlib mov (r1),r1 movb 2(r1),r0 beq 1f movb r0,wlib 1: mov $libfil,*argp tst (r5)+ rts r5 entarg: clr r4 jsr r5,use mov (r4),entptr rts r5 use: dec argc blt 2f add $2,argp mov *argp,r0 mov $symbol,r1 mov $8.,-(sp) 1: movb (r0)+,(r1)+ beq 1f dec (sp) bgt 1b 1: dec (sp) ble 1f clrb (r1)+ br 1b 1: tst (sp)+ mov $40,(r1)+ clr (r1)+ jsr r5,lookup tst (r4) bne 2f jsr r5,enter 2: rts r5 new: inc nflg rts r5 sdcom: inc dcom rts r5 relsym: mov symbol+10,r0 bic $!37,r0 beq 1f cmp r0,$5 bhis 1f asl r0 add *reltab-2(r0),symbol+12 1: rts r5 lookloc: mov $local,r4 1: cmp r4,locp bhis 1f cmp (r4)+,r2 beq 2f tst (r4)+ br 1b 1: jsr r5,mesg; snotfound jmp sintr 2: mov (r4),r4 rts r5 aopen: clr reopened mov r0,0f mov r0,filnam mov fin,r0 beq 1f sys close 1: sys open; 0:..; 0 bec 1f jsr r5,mesg; fnotfound rts r5 1: mov r0,fin tst (r5)+ rts r5 addin: add ctxtsiz,txtsiz add cdatsiz,datsiz add cbsssiz,bsssiz rts r5 issymbol: mov r1,-(sp) mov (r0)+,r1 cmp (r1)+,(r5) bne 1f cmp (r1)+,2(r5) bne 1f cmp (r1)+,4(r5) bne 1f cmp (r1)+,6(r5) beq 2f 1: tst (r0)+ 2: mov (sp)+,r1 rts r0 ÓÔÕÖרÙÚÛÜÝÞßà/ ldx -- link editor a.out: l.out: undmes: movemes: /comconfl: / norel: toomany: multi: locovflo: relerr: premeof: outfile: fnotfound: format: snotfound: mulent: libfil: wlib: <.a\0> qnl: <\n> qsemi: <;> .even _etext: <_etext\0\0> _edata: <_edata\0\0> _end: <_end\0\0\0\0> dotdot: .. zero: 0 rlistp: rlist esymp: symtab reltab: zero txtorg datorg bssorg arcmagic: -147. magic: br .+20 txtsiz: .=.+2 datsiz: .=.+2 bsssiz: .=.+2 symsiz: .=.+2 stksiz: .=.+2 exorig: .=.+2 relflg: 1 .bss libflg: .=.+2 sqflg: .=.+2 dcom: .=.+2 nflg: .=.+2 datoffs:.=.+2 entptr: .=.+2 entry: .=.+2 xtflg: .=.+2 txtorg: .=.+2 datorg: .=.+2 bssorg: .=.+2 fdatorg: .=.+2 fbssorg: .=.+2 ctxtorg:.=.+2 ctxtsiz:.=.+2 cdatorg:.=.+2 cdatsiz:.=.+2 cbsssiz: .=.+2 ctrelorg:.=.+2 ctrelsiz:.=.+2 cdrelorg:.=.+2 cdrelsiz:.=.+2 csymorg: .=.+2 csymsiz: .=.+2 arcmag: .=.+42 argc: .=.+2 argp: .=.+2 oattpt: .=.+2 locp: .=.+2 locsymsiz:.=.+2 fout: .=.+2 fin: .=.+2 reopened:.=.+2 ndef: .=.+2 ch: .=.+2 filnam: .=.+2 relbas: .=.+2 libnxt: .=.+2 symbol: .=.+14 txtp: .=.+10+512. relp: .=.+10+512. otxtp: .=.+6+512. odatp: .=.+6+512. osymp: .=.+6+512. otrelp: .=.+6+512. odrelp: .=.+6+512. rlist: .=.+512. rliste: local: .=.+1024. elocal: hshsiz = 1000. hshtab: .=2*hshsiz+. symtab: esymtab = orig+16384.-300. # /* * ln target [ new name ] */ struct ibuf { int inum; int iflags; char inl; char iuid; int isize; int iaddr[8]; char *ictime[2]; char *imtime[2]; int fill; }; #define DIR 040000 #define FMT 060000 main(argc, argv) char **argv; { static struct ibuf statb; register char *np; if (argc<2) { write(1, "Usage: ln target [ newname ]\n", 29); exit(1); } if (argc==2) { np = argv[1]; while(*np++); while (*--np!='/' && np>argv[1]); np++; argv[2] = np; } stat(argv[1], &statb); if ((statb.iflags&FMT) == DIR) { write(1, "No directory link\n", 18); exit(1); } if (link(argv[1], argv[2])<0) { write(1, "Can't link\n", 11); exit(1); } exit(0); } # /* * login [ name ] */ struct { char name[8]; char tty; char ifill; int time[2]; int ufill; } utmp; struct { int regs[2]; int tflags; } ttyb; char *ttyx; #define ECHO 010 main(argc, argv) char **argv; { char pbuf[128]; register char *namep, *np; char pwbuf[9]; int t, sflags, f, c, uid, gid; signal(3, 1); signal(2, 1); ttyx = "/dev/ttyx"; if ((utmp.tty=ttyn(0)) == 'x') { write(1, "Sorry.\n", 7); exit(); } ttyx[8] = utmp.tty; loop: namep = utmp.name; if (argc>1) { np = argv[1]; while (namep= 0) { t = utmp.tty; if (t>='a') t =- 'a' - (10+'0'); seek(f, (t-'0')*16, 0); write(f, &utmp, 16); close(f); } if ((f = open("/usr/adm/wtmp", 1)) >= 0) { seek(f, 0, 2); write(f, &utmp, 16); close(f); } if ((f = open("/etc/motd", 0)) >= 0) { while(read(f, &t, 1) > 0) write(1, &t, 1); close(f); } if ((f = open("mailbox", 0)) >= 0) { write(1, "You have mail.\n", 15); close(f); } chown(ttyx, uid); setgid(gid); setuid(uid); if (*np == '\0') np = "/bin/sh"; execl(np, "-", 0); write(1, "No shell.\n", 9); exit(); bad: write(1, "Login incorrect.\n", 17); goto loop; } getpwentry(name, buf) char *name, *buf; { extern fin; int fi, r, c; register char *gnp, *rnp; fi = fin; r = 1; if((fin = open("/etc/passwd", 0)) < 0) goto ret; loop: gnp = name; rnp = buf; while((c=getchar()) != '\n') { if(c <= 0) goto ret; *rnp++ = c; } *rnp++ = '\0'; rnp = buf; while (*gnp++ == *rnp++); if ((*--gnp!=' ' && gnp lock: lpd: .even .bss ch: .=.+2 dfi: .=.+2 dbuf: .=.+18. print: .=.+518. proto: .=.+518. insert: .=.+518. buf: .=.+400. sleep = 35. signal = 48. /* * lpr -- on line print to Line Printer */ tfname; nact; tff; first; main(argc, argv) int argc; char *argv[]; { char *arg, *remote; int c, f, flag, cflag; flag = 0; tfname = ranname("/usr/lpd/tfxxx"); if(tfname) tff = creat(tfname, 0666); else tff = -1; if(tff < 0) { printf("Cannot create in /usr/lpd\n"); exit(); } ident(); if(argc == 1) copy(0); while(--argc) { arg = *++argv; c = *arg; if(c == '+' || c == '-') { cflag = c; if(*++arg == '\0') { flag = cflag; continue; } } else cflag = flag; if(cflag == '+') goto cf; if(*arg == '/' && cflag != '-') { card('F', arg); nact++; continue; } f = ranname("/usr/lpd/lfxxx"); if(f) { if(link(arg, f)) goto cf; card('F', f); card('U', f); nact++; goto df; } cf: f = open(arg, 0); if(f < 0) { printf("Cannot open %s\n", arg); continue; } copy(f); close(f); df: if(cflag == '-') { f = unlink(arg); if(f < 0) printf("Cannot remove %s\n", arg); } } if(nact) { f = ranname("/usr/lpd/dfxxx"); if(f) link(tfname, f); else printf("Cannot rename in /usr/lpd\n"); unlink(tfname); execl("/etc/lpd", "lpd", 0); } unlink(tfname); } copy(f) int f; { int fn, ff, i, nr, nc; static int buf[256]; fn = ranname("/usr/lpd/cfxxx"); if(fn) ff = creat(fn, 0666); else ff = -1; if(ff < 0) { printf("Cannot create in /usr/lpd\n"); return; } nc = 0; nr = 0; while((i = read(f, buf, 512)) > 0) { write(ff, buf, i); nc =+ i; if(nc >= 512) { nc =- 512; nr++; if(nr > 400) { printf("Copy file is too large\n"); break; } } } close(ff); card('F', fn); card('U', fn); nact++; } card(c, s) int c; char s[]; { char *p1, *p2; static char buf[512]; int col; p1 = buf; p2 = s; col = 0; *p1++ = c; while((c = *p2++) != '\0') { *p1++ = c; col++; } *p1++ = '\n'; write(tff, buf, col+2); } ident() { int c, i, j, n; char *b1p; static char b1[100], b2[100]; b1p = b1; if(getpw(getuid(), b1)) { b1p = "pdp::::gok:"; } j = 0; while(c = "$ ident "[j]) b2[j++] = c; i = 0; n = 5; while(--n) while(b1p[i++] != ':'); while((c = b1p[i++]) != ':') b2[j++] = c; b2[j++] = ','; i = 0; while((c = b1p[i++]) != ':') b2[j++] = c; b2[j++] = '\0'; card('L', b2); } ranname(s) char s[]; { static int buf[20]; loop: s[11] = ranc(); s[12] = ranc(); s[13] = ranc(); if(stat(s, buf)) return(s); goto loop; } ranc() { int buf[2], c; if(!first) { time(buf); srand(buf[1]); first++; } c = rand(); return(((c>>11)%10)+'0'); } # /* * list file or directory */ struct { int fdes; int nleft; char *nextc; char buff[512]; } inf; struct ibuf { int idev; int inum; int iflags; char inl; char iuid; char igid; char isize0; int isize; int iaddr[8]; char *iatime[2]; char *imtime[2]; }; struct lbuf { char lname[14]; int lnum; int lflags; char lnl; char luid; char lgid; char lsize0; int lsize; char *lmtime[2]; }; struct lbufx { char *namep; }; int aflg, dflg, lflg, sflg, tflg, uflg, iflg, fflg; int fout; int rflg 1; int flags; int uidfil -1; int tblocks; int statreq; struct lbuf *lastp &end; struct lbuf *rlastp &end; char *dotp "."; #define IFMT 060000 #define DIR 0100000 #define CHR 020000 #define BLK 040000 #define ISARG 01000 #define LARGE 010000 #define SUID 04000 #define SGID 02000 #define ROWN 0400 #define WOWN 0200 #define XOWN 0100 #define RGRP 040 #define WGRP 020 #define XGRP 010 #define ROTH 04 #define WOTH 02 #define XOTH 01 main(argc, argv) char **argv; { int i, j; extern struct lbuf end; register struct lbuf *ep, *ep1; register struct lbuf *slastp; struct lbuf lb; int compar(); fout = dup(1); if (--argc > 0 && *argv[1] == '-') { argv++; while (*++*argv) switch (**argv) { case 'a': aflg++; continue; case 's': sflg++; statreq++; continue; case 'd': dflg++; continue; case 'l': lflg++; statreq++; uidfil = open("/etc/passwd", 0); continue; case 'r': rflg = -1; continue; case 't': tflg++; statreq++; continue; case 'u': uflg++; continue; case 'i': iflg++; continue; case 'f': fflg++; continue; default: continue; } argc--; } if (fflg) { aflg++; lflg = 0; sflg = 0; tflg = 0; statreq = 0; } if (argc==0) { argc++; argv = &dotp - 1; } for (i=0; i < argc; i++) { if ((ep = gstat(*++argv, 1))==0) continue; ep->namep = *argv; ep->lflags =| ISARG; } qsort(&end, lastp - &end, 28, compar); slastp = lastp; for (ep = &end; eplflags&DIR && dflg==0 || fflg) { if (argc>1) printf("\n%s:\n", ep->namep); lastp = slastp; readdir(ep->namep); if (fflg==0) qsort(slastp, lastp - slastp, 28, compar); if (statreq) printf("total %d\n", tblocks); for (ep1=slastp; ep1lnum == -1) return; if (iflg) printf("%5d ", p->lnum); if (lflg) { pmode(p->lflags); printf("%2d ", p->lnl); if (getname(p->luid&0377, tbuf)==0) printf("%-6.6s", tbuf); else printf("%-6d", p->luid&0377); if (p->lflags & (BLK|CHR)) printf("%3d,%3d", p->lsize.dmajor&0377, p->lsize.dminor&0377); else printf("%7s", locv(p->lsize0, p->lsize)); printf(" %-12.12s ", ctime(p->lmtime)+4); } else if (sflg) printf("%4d ", nblock(p->lsize0, p->lsize)); if (p->lflags&ISARG) printf("%s\n", p->namep); else printf("%.14s\n", p->lname); } getname(uid, buf) int uid; char buf[]; { int j, c, n, i; inf.fdes = uidfil; seek(inf.fdes, 0, 0); inf.nleft = 0; do { i = 0; j = 0; n = 0; while((c=getc(&inf)) != '\n') { if (c<0) return(-1); if (c==':') { j++; c = '0'; } if (j==0) buf[i++] = c; if (j==2) n = n*10 + c - '0'; } } while (n != uid); buf[i++] = '\0'; return(0); } nblock(size0, size) char *size0, *size; { register int n; n = ldiv(size0, size, 512); if (size&0777) n++; if (n>8) n =+ (n+255)/256; return(n); } int m0[] { 3, DIR, 'd', BLK, 'b', CHR, 'c', '-'}; int m1[] { 1, ROWN, 'r', '-' }; int m2[] { 1, WOWN, 'w', '-' }; int m3[] { 2, SUID, 's', XOWN, 'x', '-' }; int m4[] { 1, RGRP, 'r', '-' }; int m5[] { 1, WGRP, 'w', '-' }; int m6[] { 2, SGID, 's', XGRP, 'x', '-' }; int m7[] { 1, ROTH, 'r', '-' }; int m8[] { 1, WOTH, 'w', '-' }; int m9[] { 1, XOTH, 'x', '-' }; int *m[] { m0, m1, m2, m3, m4, m5, m6, m7, m8, m9}; pmode(aflag) { register int **mp; flags = aflag; for (mp = &m[0]; mp < &m[10];) select(*mp++); } select(pairp) int *pairp; { register int n, *ap; ap = pairp; n = *ap++; while (--n>=0 && (flags&*ap++)==0) *ap++; putchar(*ap); } makename(dir, file) char *dir, *file; { static char dfile[100]; register char *dp, *fp; register int i; dp = dfile; fp = dir; while (*fp) *dp++ = *fp++; *dp++ = '/'; fp = file; for (i=0; i<14; i++) *dp++ = *fp++; *dp = 0; return(dfile); } readdir(dir) char *dir; { static struct { int dinode; char dname[14]; } dentry; register char *p; register int j; register struct lbuf *ep; if (fopen(dir, &inf) < 0) { printf("%s unreadable\n", dir); return; } tblocks = 0; for(;;) { p = &dentry; for (j=0; j<16; j++) *p++ = getc(&inf); if (dentry.dinode==0 || aflg==0 && dentry.dname[0]=='.') continue; if (dentry.dinode == -1) break; ep = gstat(makename(dir, dentry.dname), 0); if (ep->lnum != -1) ep->lnum = dentry.dinode; for (j=0; j<14; j++) ep->lname[j] = dentry.dname[j]; } close(inf.fdes); } gstat(file, argfl) char *file; { struct ibuf statb; register struct lbuf *rep; if (lastp+1 >= rlastp) { sbrk(512); rlastp.idev =+ 512; } rep = lastp; lastp++; rep->lflags = 0; rep->lnum = 0; if (argfl || statreq) { if (stat(file, &statb)<0) { printf("%s not found\n", file); statb.inum = -1; statb.isize0 = 0; statb.isize = 0; statb.iflags = 0; if (argfl) { lastp--; return(0); } } rep->lnum = statb.inum; statb.iflags =& ~(ISARG | DIR); if ((statb.iflags&IFMT) == 060000) { statb.iflags =& ~020000; } else if ((statb.iflags&IFMT)==040000) { statb.iflags =& ~IFMT; statb.iflags =| DIR; } rep->lflags = statb.iflags; rep->luid = statb.iuid; rep->lgid = statb.igid; rep->lnl = statb.inl; rep->lsize0 = statb.isize0; rep->lsize = statb.isize; if (rep->lflags & (BLK|CHR) && lflg) rep->lsize = statb.iaddr[0]; rep->lmtime[0] = statb.imtime[0]; rep->lmtime[1] = statb.imtime[1]; if(uflg) { rep->lmtime[0] = statb.iatime[0]; rep->lmtime[1] = statb.iatime[1]; } tblocks =+ nblock(statb.isize0, statb.isize); } return(rep); } compar(ap1, ap2) struct lbuf *ap1, *ap2; { register struct lbuf *p1, *p2; register int i; int j; struct { char *charp;}; p1 = ap1; p2 = ap2; if (dflg==0) { if ((p1->lflags&(DIR|ISARG)) == (DIR|ISARG)) { if ((p2->lflags&(DIR|ISARG)) != (DIR|ISARG)) return(1); } else { if ((p2->lflags&(DIR|ISARG)) == (DIR|ISARG)) return(-1); } } if (tflg) { i = 0; if (p2->lmtime[0] > p1->lmtime[0]) i++; else if (p2->lmtime[0] < p1->lmtime[0]) i--; else if (p2->lmtime[1] > p1->lmtime[1]) i++; else if (p2->lmtime[1] < p1->lmtime[1]) i--; return(i*rflg); } if (p1->lflags&ISARG) p1 = p1->namep; else p1 = p1->lname; if (p2->lflags&ISARG) p2 = p2->namep; else p2 = p2->lname; for (i=0; i<14; i++) if ((j = *p1.charp++ - *p2.charp++) || p1.charp[-1]==0) return(rflg*j); return(0); } ùúûüýþÿ       fed2.sfed3.sfind.cform1.sform2.sform3.sform4.s form5.s form6.s getty.s glob.c goto.cgrep.sif.cinit.ckill.sld1.sld2.sldx.sln.clogin.clpd.slpr.cls.ca.outl.outa.out/* mail command usage mail prints your mail mail file people sends file to people by login name mail person sends following tty input to him */ char iobuf[518]; char ubuf[16]; main(argc, argv) char *argv[]; { char *buf; static char myname[20], junk[40], number[20]; static char hisname[40], hisdir[40]; auto j, j0, k, n, mail, file, mynumber; if(argc==1 || (argc==2 && argv[1][0]=='-')) goto printm; if(fopen("/etc/passwd", iobuf) < 0) { printf("Can't open password file\n"); exit(); } if(mynumber = ttyn(0)) { if((file = open("/tmp/utmp",0)) < 0) goto otherway; while(read(file,ubuf,16)) { if(mynumber == ubuf[8]) { close(file); file = 0; while(file < 8 && ubuf[file] != ' ') { myname[file] = ubuf[file]; file++; } myname[file] = 0; goto namefound; } } } otherway: mynumber = getuid(); for(;;) { if(!(getfield(myname) && getfield(junk) && getfield(number) && getfield(junk) && getfield(junk) && getfield(junk) && getfield(junk))) { printf("Who are you?\n"); exit(); } if(atoi(number) == mynumber) break; } namefound: close(iobuf[0]); if(argc > 2) file = argv[1]; else file = 0; j0 = argc>2? 1: 0; fopen("/etc/passwd", iobuf); k = 2; for(;;) { if(!(getfield(hisname) && getfield(junk) && getfield(junk) && getfield(junk) && getfield(junk) && getfield(hisdir) && getfield(junk))) break; j = j0; while(++j < argc) if(comp(argv[j], hisname)) { send(file, myname, hisname, hisdir); argv[j][0] = 0; if(++k >= argc) exit(); } } j = j0; while(++j < argc) if(argv[j][0] != 0) { junk[0] = 0; append(argv[j], junk); send(file, myname, argv[j], junk); } exit(); printm: if((mail=open("mailbox", 0)) < 0) { printf("No mail\n"); exit(); } while(n = read(mail, iobuf, 512)) write(1, iobuf, n); if(argc != 2) { printf("Save? "); read(0, buf=iobuf, 512); } else buf = &argv[1][1]; if(buf[0] == 'y') { if(concat("mailbox","mbox",0)) printf("Old mail in `mbox'\n"); } unlink("mailbox"); exit(); } getfield(buf) char buf[]; { int j; char c; j = 0; while((c = buf[j] = getc(iobuf)) >= 0) if(c==':' || c=='\n') { buf[j] =0; return(1); } else j++; return(0); } /* send overwrites hisdir */ send(file, myname, hisname, hisdir) char hisname[], myname[], hisdir[]; { static char buf[512]; int n; for(n = 0 ; hisdir[n++];); append("/mailbox", hisdir); buf[0] = 0; append("\nFrom ",buf); append(myname,buf); append(" ",buf); time(buf+256); append(ctime(buf+256),buf); if(!concat(file,hisdir,1,buf)) printf("Can't send to `%s'\n",hisname); hisdir[n] = 0; } comp(n1, n2) char n1[], n2[]; { int i; char c; i = 0; while((c=n1[i]) == n2[i]) if(c == 0) return(1); else i++; return(0); } atoi(a) char a[]; { int i, j; i = 0; j = 0; while(a[j]) i = i*10 + a[j++] - '0'; return(i); } append(tail, head) char head[], tail[]; { int i, j; i = 0; while(head[i]) i++; j = 0; while(head[i++] = tail[j++]); } concat(fn1,fn2,flg,header) char *fn1,*fn2; int flg; char *header; { char *flname; int fn; int tmp,n; static buf[512]; flname = "/tmp/mtm\0\0"; for(flname[8] = 'a' ; flname[8] <= 'z' ; flname[8]++) if(stat(flname,buf) < 0) goto found; notmp: printf("can't creat tmp file\n"); exit(); found: if((tmp = creat(flname,0400)) < 0) goto notmp; if(!fn1) /*standard input file*/ fn = 0; else if((fn = open(fn1,0)) < 0) { close(tmp); unlink(flname); printf("can't open `%s'\n", fn1); exit(); } if(flg) { for(n = 0 ; header[n++] ;); write(tmp,header,n-1); } while(n = read(fn,buf,512)) write(tmp,buf,n); if(flg) write(tmp,"\n",1); if(fn) close(fn); if(stat(fn2,buf) >= 0) { if((fn = open(fn2,0)) < 0) { close(tmp); unlink(flname); return(0); } while(n = read(fn,buf,512)) write(tmp,buf,n); close(fn); } close(tmp); if((tmp = open(flname,0)) < 0) { unlink(flname); goto notmp; } if((fn = creat(fn2,0666)) < 0) { close(tmp); unlink(flname); return(0); } while(n = read(tmp,buf,512)) write(fn,buf,n); close(fn); close(tmp); unlink(flname); return(1); }     / mesg -- set current tty to accept or forbid messages .globl ttyn clr r0 jsr pc,ttyn movb r0,ttyno sys stat; ttyx; stbuf bes error cmp (sp)+,$1 beq flip tst (sp)+ mov (sp)+,r0 cmpb (r0),$'n beq setno br setyes flip: bit $2,stbuf+4 beq setyes setno: sys chmod; ttyx; 600 bes error br say setyes: sys chmod; ttyx; 622 bes error say: bit $2,stbuf+4 beq wasno wasyes: movb $'y,nmes+4 wasno: mov $1,r0 sys write; nmes; 6 sys exit nmes: error: mov $1,r0 sys write; 1f; 2 sys exit 1: ttyx: ttyno = .-2 .even stbuf: .=.+40. / makdir -- make a directory sys getuid mov r0,uid mov sp,r5 tst (r5)+ loop: tst (r5)+ dec (sp) bgt 1f sys exit 1: mov (r5),r0 mov $buf1,r1 mov $buf2,r2 clr r3 1: movb (r0)+,r4 beq 2f movb r4,(r1)+ movb r4,(r2)+ cmpb r4,$'/ bne 1b mov r2,r3 br 1b 2: movb $'/,(r1)+ movb $'.,(r1)+ clrb (r1) mov $dot,dir tst r3 beq 1f mov $buf2,dir clrb (r3) cmp r3,$buf2+1 beq 1f clrb -(r3) / ??? 1: tstb uid beq 2f sys stat; dir:..; stbuf / status of parent dir bes error mov stbuf+4,r0 cmpb uid,stbuf+7 bne 1f ash $-6,r0 1: ror r0 ror r0 bcc error / no write permission in parent 2: mov (r5),0f sys makdir; 0:..; 140777; 0 bes error / prob already exists mov (r5),0f sys chown; 0:..; uid:.. mov (r5),0f sys link; 0:..; buf1 bes error movb $'.,(r1)+ clrb (r1) mov dir,0f sys link; 0:..; buf1 bec loop error: mov (r5),r0 mov r0,0f clr 0f+2 1: tstb (r0)+ beq 1f inc 0f+2 br 1b 1: mov $1,r0 sys write; 0:..; .. mov $1,r0 sys write; ques; 3 br loop dot: <.\0> ques: < ?\n> .even .bss buf1: .=.+100. buf2: .=.+100. stbuf: .=.+40. # struct { char *s_isize; char *s_fsize; int s_nfree; int s_free[100]; int s_ninode; int s_inode[100]; char s_flock; char s_ilock; char s_fmod; int s_time[2]; } filsys; struct inode { int i_number; int i_mode; char i_nlink; char i_uid; char i_gid; char i_size0; char *i_size1; int i_addr[8]; int i_time[4]; }; /* modes */ #define IALLOC 0100000 #define IFMT 060000 #define IFDIR 040000 #define IFCHR 020000 #define IFBLK 060000 #define ILARG 010000 #define ISUID 04000 #define ISGID 02000 #define IREAD 0400 #define IWRITE 0200 #define IEXEC 0100 int utime[2]; int fin; int fsi; int fso; char *charp; int buf[256]; char string[50]; char *fsys; char *proto; main(argc, argv) char **argv; { int f, n; /* * open relevent files */ time(utime); if(argc != 3) { printf("arg count\n"); exit(); } fsys = argv[1]; proto = argv[2]; fso = creat(fsys, 0666); if(fso < 0) { printf("%s: cannot create\n", fsys); exit(); } fsi = open(fsys, 0); if(fsi < 0) { printf("%s: cannot open\n", fsys); exit(); } fin = open(proto, 0); if(fin < 0) { n = 0; for(f=0; proto[f]; f++) { if(proto[f]<'0' || proto[f]>'9') { printf("%s: cannot open\n", proto); exit(); } n = n*10 + proto[f]-'0'; } filsys.s_fsize = n; filsys.s_isize = ldiv(0, n, 43+ldiv(0, n, 1000)); printf("isize = %d\n", filsys.s_isize); charp = "d--777 0 0 $ "; goto f3; } /* * get name of boot load program * and read onto block 0 */ getstr(); f = open(string, 0); if(f < 0) { printf("%s: cannot open init\n", string); goto f2; } read(f, buf, 020); if(buf[0] != 0407) { printf("%s: bad format\n", string); goto f1; } n = buf[1]+buf[2]; if(n > 512) { printf("%s: too big\n", string); goto f1; } read(f, buf, n); wtfs(0, buf); f1: close(f); /* * get total disk size * and inode block size */ f2: filsys.s_fsize = getnum(); filsys.s_isize = getnum(); f3: if(filsys.s_isize > filsys.s_fsize || filsys.s_fsize-filsys.s_isize-2 < filsys.s_isize) { printf("%l/%l: bad ratio\n", filsys.s_fsize, filsys.s_isize); exit(); } free(0); for(n=filsys.s_fsize-1; n!=filsys.s_isize+1; n--) free(n); /* * initialize files */ for(n=0; n<256; n++) buf[n] = 0; for(n=0; n!=filsys.s_isize; n++) wtfs(n+2, buf); cfile(0); /* * write out super block */ for(n=0; n<256; n++) buf[n] = 0; filsys.s_time[0] = utime[0]; filsys.s_time[1] = utime[1]; wtfs(1, &filsys); } cfile(par) struct inode *par; { struct inode in; int db[256], ib[256]; int dbc, ibc; static ino; int i, f, *p1, *p2; /* * get mode, uid and gid */ getstr(); in.i_mode = IALLOC; in.i_mode =| gmode(string[0], "bcd", IFBLK, IFCHR, IFDIR); in.i_mode =| gmode(string[1], "u", ISUID); in.i_mode =| gmode(string[2], "g", ISGID); for(i=3; i<6; i++) { if(string[i]<'0' || string[i]>'7') { printf("%c/%s: bad digit\n", string[i], string); exit(); } in.i_mode =| (string[i]-'0')<<(15-3*i); } in.i_uid = getnum(); in.i_gid = getnum(); /* * general initialization prior to * switching on format */ ino++; in.i_number = ino; if(ldiv(0, ino, 16) > filsys.s_isize) { printf("too many inodes\n"); exit(); } in.i_nlink = 1; in.i_size0 = 0; in.i_size1 = 0; for(i=0; i<8; i++) in.i_addr[i] = 0; for(i=0; i<256; i++) { db[i] = 0; ib[i] = 0; } if(par == 0) { par = ∈ in.i_nlink--; } dbc = 0; ibc = 0; switch(in.i_mode&IFMT) { case 0: /* * regular file * contents is a file name */ getstr(); f = open(string, 0); if(f < 0) { printf("%s: cannot open\n", string); break; } while((i=read(f, db, 512)) > 0) { in.i_size1 =+ i; newblk(&dbc, db, &ibc, ib); } close(f); break; case IFBLK: case IFCHR: /* * special file * content is maj/min types */ in.i_addr[0] = getnum()<<8; in.i_addr[0] =| getnum(); break; case IFDIR: /* * directory * put in extra links * call recursively until * name of "$" found */ par->i_nlink++; entry(par->i_number, "..", &dbc, db, &ibc, ib); in.i_nlink++; entry(in.i_number, ".", &dbc, db, &ibc, ib); in.i_size1 = 32; for(;;) { getstr(); if(string[0]=='$' && string[1]=='\0') break; entry(ino+1, string, &dbc, db, &ibc, ib); in.i_size1 =+ 16; cfile(&in); } break; } if(dbc != 0) newblk(&dbc, db, &ibc, ib); if(ibc > 8) { in.i_mode =| ILARG; dbc = alloc(); wtfs(dbc, ib); in.i_addr[0] = dbc; } else for(i=0; i'9') { printf("%s: bad number\n", string); exit(); } n = n*10 + string[i] - '0'; } return(n); } getstr() { int i, c; loop: switch(c=getch()) { case ' ': case '\t': case '\n': goto loop; case '\0': printf("EOF\n"); exit(); case ':': while(getch() != '\n'); goto loop; } i = 0; do { string[i++] = c; c = getch(); } while(c!=' '&&c!='\t'&&c!='\n'&&c!='\0'); string[i] = '\0'; } rdfs(bno, bf) { int n; seek(fsi, bno, 3); n = read(fsi, bf, 512); if(n != 512) { printf("read error: %l\n", bno); exit(); } } wtfs(bno, bf) { int n; seek(fso, bno, 3); n = write(fso, bf, 512); if(n != 512) { printf("write error: %l\n", bno); exit(); } } alloc() { int bno, i; filsys.s_nfree--; bno = filsys.s_free[filsys.s_nfree]; filsys.s_free[filsys.s_nfree] = 0; if(bno == 0) { printf("out of free space\n"); exit(); } if(filsys.s_nfree <= 0) { rdfs(bno, buf); filsys.s_nfree = buf[0]; for(i=0; i<100; i++) filsys.s_free[i] = buf[i+1]; } return(bno); } free(bno) { int i; if(filsys.s_nfree >= 100) { buf[0] = filsys.s_nfree; for(i=0; i<100; i++) buf[i+1] = filsys.s_free[i]; wtfs(bno, buf); filsys.s_nfree = 0; } filsys.s_free[filsys.s_nfree] = bno; filsys.s_nfree++; } entry(ino, str, adbc, db, aibc, ib) char *str; int *adbc, *db, *aibc, *ib; { char *s; int i; db[*adbc] = ino; (*adbc)++; s = &db[*adbc]; for(i=0; i<14; i++) { *s++ = *str; if(*str != '\0') str++; } *adbc =+ 7; if(*adbc >= 256) newblk(adbc, db, aibc, ib); } newblk(adbc, db, aibc, ib) int *adbc, *db, *aibc, *ib; { int bno, i; bno = alloc(); wtfs(bno, db); for(i=0; i<256; i++) db[i] = 0; *adbc = 0; ib[*aibc] = bno; (*aibc)++; if(*aibc >= 256) { printf("indirect block full\n"); exit(); } } getch() { if(charp) return(*charp++); return(getchar()); }         ! " # $ % main(argc, argv) int argc; char **argv; { int m, a, b; if(argc != 5) { printf("arg count\n"); goto usage; } if(*argv[2] == 'b') m = 0160666; else if(*argv[2] == 'c') m = 0120666; else goto usage; a = number(argv[3]); if(a < 0) goto usage; b = number(argv[4]); if(b < 0) goto usage; if(mknod(argv[1], m, (a<<8)|b) < 0) perror("mknod"); exit(); usage: printf("usage: mknod name b/c major minor\n"); } number(s) char *s; { int n, c; n = 0; while(c = *s++) { if(c<'0' || c>'9') return(-1); n = n*10 + c-'0'; } return(n); } #define NMOUNT 16 #define NAMSIZ 32 struct mtab { char file[NAMSIZ]; char spec[NAMSIZ]; } mtab[NMOUNT]; main(argc, argv) char **argv; { register int ro; register struct mtab *mp; register char *np; int n, mf; mf = open("/etc/mtab", 0); read(mf, mtab, NMOUNT*2*NAMSIZ); if (argc==1) { for (mp = mtab; mp < &mtab[NMOUNT]; mp++) if (mp->file[0]) printf("%s on %s\n", mp->spec, mp->file); return; } if(argc < 3) { printf("arg count\n"); return; } ro = 0; if(argc > 3) ro++; if(mount(argv[1], argv[2], ro) < 0) { perror("mount"); return; } np = argv[1]; while(*np++) ; np--; while(*--np == '/') *np = '\0'; while(np > argv[1] && *--np != '/') ; if(*np == '/') np++; argv[1] = np; for (mp = mtab; mp < &mtab[NMOUNT]; mp++) { if (mp->file[0] == 0) { for (np = mp->spec; np < &mp->spec[NAMSIZ-1];) if ((*np++ = *argv[1]++) == 0) argv[1]--; for (np = mp->file; np < &mp->file[NAMSIZ-1];) if ((*np++ = *argv[2]++) == 0) argv[2]--; mp = &mtab[NMOUNT]; while ((--mp)->file[0] == 0); mf = creat("/etc/mtab", 0644); write(mf, mtab, (mp-mtab+1)*2*NAMSIZ); return; } } } / ms -- mini-shell mov $sbuf,r1 mov $cbuf,r2 clr r3 jsr pc,nonblank cmp r0,$'\n bne loop sys exit loop: mov r1,(r2)+ 1: movb r0,(r1)+ jsr pc,getc cmp r0,$' / beq 1f cmp r0,$'\n beq go br 1b 1: clrb (r1)+ jsr pc,nonblank cmp r0,$'\n beq go br loop go: clr (r2)+ tst r3 / to call glob bne 1f sys exec; sbuf; cbuf mov $bn,r0 mov $"/b,(r0)+ mov $"in,(r0)+ movb $'/,(r0)+ sys exec; bn; cbuf mov $usr,r0 mov $"/u,(r0)+ mov $"sr,(r0)+ sys exec; usr; cbuf br error 1: mov $gl,cbuf-2 sys exec; gl; cbuf-2 error: mov $1,r0 sys write; 1f; 2 sys exit 1: nonblank: jsr pc,getc cmp r0,$' / beq nonblank rts pc getc: clr r0 sys read; ch; 1 bes 1f tst r0 beq 1f movb ch,r0 cmp r0,$'? beq 3f cmp r0,$'* beq 3f cmp r0,$'[ bne 2f 3: inc r3 2: rts pc 1: sys exit ch: .=.+1 gl: .even .bss usr: .=.+4 / room for /usr bn: .=.+5 / room for /bin/ sbuf: .=.+1000. .even .=.+2 / slot for ptr to glob cbuf: .=.+20. /* mv [-d] file1 file2 unlink file2 link file1 file2 unlink file1 */ int stbuf[42]; struct sbuf { int dev; int inum; int imode; char nlink; char uid; char gid; char siz0; char siz1; int addr[8]; int adate[2]; int mdate[2]; }; char strbuf[70]; main(argc,argv) int argc; char *argv[]; { char **argp; char *argp1, *argp2, *argp3, *argp4; char *p, *p1, *p2; char place[100]; int i; int status; int b; argp = argv; /* check for correct number of arguments */ if(argc != 3){ write(1,"Usage: mv name1 name2\n",22); exit(); } /* is there anything to do? */ argp3 = argp[1]; argp4 = argp[2]; if(stat(argp[1], stbuf) < 0){ write(1,"Source file non-existent\n",25); exit(); } /* yes, there is a source. check whether file or directory */ if((stbuf[0].imode & 060000) == 040000){ /* The source is a directory, so we do lots of checking and messing around so as not to get into trouble. This patch of code contains administrative policies rather than system restrictions. */ if(stat(argp[2], stbuf) >= 0){ write(1,"Directory target exists.\n",25); exit(); } argp1 = argp[1]; argp2 = argp[2]; while(*argp1 == *argp2){ argp1++; if(*argp2++ == 0){ write(1,"???\n",4); exit(); } } while(*argp1)if(*argp1++ == '/'){ write(1,"Directory rename only\n",22); exit(); } while(*argp2)if(*argp2++ == '/'){ write(1,"Directory rename only\n",22); exit(); } if(*--argp1 == '.'){ write(1,"values of B will give rise to dom!\n",37); exit(); } }else{ /* the source is a file. */ setuid(getuid()); if(stat(argp4, &stbuf[2]) >= 0){ if((stbuf[2].imode & 060000) == 040000){ argp2 = strbuf; while(*argp2++ = *argp4++); argp2[-1] = '/'; argp4 = argp[1]; argp1 = argp[1]; while(*argp4) if(*argp4++ == '/') argp1 = argp4; while(*argp2++ = *argp1++); argp4 = strbuf; } if(stat(argp4, &stbuf[2]) >= 0){ if((stbuf[0]==stbuf[2]) && (stbuf[1]==stbuf[3])){ write(1,"Files are identical.\n",21); exit(); } if(getuid() == stbuf[2].uid) b = 0200; else if(getgid() == stbuf[2].gid) b = 020; else b = 02; if((stbuf[2].imode & b) == 0) { printf("%s: %o mode ", argp4, stbuf[2].imode & 07777); i = b = getchar(); while(b != '\n' && b != '\0') b = getchar(); if(i != 'y') exit(); } if(unlink(argp4) < 0){ write(1,"Cannot remove target file.\n",27); exit(); } } } } if(link(argp3, argp4) < 0){ i = fork(); if(i == -1){ write(1,"Try again.\n",11); exit(); } if(i){ while(wait(&status) != i); }else{ p = place; p1 = p; while(*p++ = *argp3++); p2 = p; while(*p++ = *argp4++); execl("/bin/cp","cp", p1, p2, 0); write(1, "no cp\n", 6); exit(1); } if((status & 0377) != 0){ write(1,"?\n", 2); exit(); } if(status != 0) exit(); } if(unlink(argp3) < 0){ write(1,"Cannot unlink source file.\n",26); exit(); } } putchar(c) { write(1, &c, 1); } getchar() { char c; if(read(0, &c, 1) != 1) return(0); return(c); } /* nice */ char *args[100]; char string[10000]; main(argc, argv) int argc; char *argv[]; { int i; char **argp, *strp, *p; if(argc < 2) { printf("arg count\n"); exit(); } argc--; argv++; argp = args; strp = string; for (i=0; i<9; i++) *strp++ = "/usr/bin/"[i]; for(i=0; i 0 && *argv[1] == '-') { argv++; while (*++*argv) switch (**argv) { case 'n': nflg++; continue; case 'c': cflg++; continue; case 'g': gflg++; continue; case 'u': uflg++; continue; case 'r': rflg = -1; continue; case 'p': pflg ++; continue; default: continue; } argc--; } if (argc==0) fi = open("a.out", 0); else fi = open(*++argv, 0); if(fi < 0) { printf("cannot open input\n"); exit(); } read(fi, buf, 020); if(buf[0]!=0407 && buf[0]!=0410) { printf("bad format\n"); exit(); } seek(fi, buf[1], 1); /* text */ seek(fi, buf[2], 1); /* data */ if(buf[7] != 1) { seek(fi, buf[1], 1); seek(fi, buf[2], 1); /* reloc */ } n = ldiv(0, buf[4], 12); if(n == 0) { printf("no name list\n"); exit(); } nlp = sbrk(12*n); read(fi, nlp, n*12); if (pflg==0) qsort(nlp, n, 12, compare); fout = dup(1); close(1); for(i=0; ityp&040)==0) goto out; if(cflg) { if(nlp->name[0] != '_') goto out; for(j=0; j<7; j++) nlp->name[j] = nlp->name[j+1]; nlp->name[7] = '\0'; } j = nlp->typ&037; if(j > 4) j = 1; if(j==0 && nlp->val) j = 5; if(uflg && j!=0) goto out; if(!uflg) { if(j==0) printf(" "); else printo(nlp->val); printf("%c ", (nlp->typ&040? "UATDBC":"uatdbc")[j]); } printf("%.8s\n", nlp); out: nlp++; } flush(); } compare(p1, p2) struct nl *p1, *p2; { int a, i; a = 0; if(nflg) { if(p1->val > p2->val) { a = 1; goto out; } if(p1->val < p2->val) { a = -1; goto out; } } for(i=0; i<8; i++) if(p1->name[i] != p2->name[i]) { if(p1->name[i] > p2->name[i]) a = 1; else a = -1; goto out; } out: return(a*rflg); } printo(v) { int i; printf("%c", v<0?'1':'0'); for(i=0; i<5; i++) { printf("%c", ((v>>12)&7)+'0'); v =<<3; } } /* nohup */ char *args[100]; char string[10000]; main(argc, argv) int argc; char *argv[]; { int i; char **argp, *strp, *p; if(argc < 2) { printf("arg count\n"); exit(); } argc--; argv++; argp = args; strp = string; for (i=0; i<9; i++) *strp++ = "/usr/bin/"[i]; for(i=0; i 1) { p = *argv; if(*p == '-') { while((i = *p++) != '\0') { switch(i) { case 'o': conv =| 001; f = 6; break; case 'd': conv =| 002; f = 5; break; case 'a': conv =| 004; f = 4; break; case 'h': conv =| 010; f = 4; break; case 'c': conv =| 020; f = 5; break; case 'b': conv =| 040; f = 7; break; } if(f > max) max = f; } argc--; argv++; } } if(!conv) { max = 6; conv = 1; } if(argc > 1) if(**argv != '+') { fi = open(*argv, 0); if(fi < 0) { printf("cannot open %s\n", *argv); goto done; } argv++; argc--; } if(argc > 1) offset(*argv); loop: f = 1; a[0] = addr[0]; a[1] = addr[1]; for(i=0; i>8); break; case 040: pre(7); putn(n&0377, 8, 3); putchar(' '); putn((n>>8)&0377, 8, 3); break; } } getw() { int b1, b2; b1 = getc(); if(b1 == -1) { eof = 1; return(0); } b2 = getc(); if(b2 == -1) b2 = 0; return(b1|(b2<<8)); } getc() { if(gidx >= gcnt) { gcnt = read(fi, gbuf, 512); if(gcnt <= 0) return(-1); gidx = 0; } if(++addr[1] >= basem) { addr[0]++; addr[1] = 0; } return(gbuf[gidx++]&0377); } putc(c) { c =& 0377; if(c>037 && c<0177 && c!='\\') { putchar(' '); putchar(c); return; } putchar('\\'); switch(c) { case '\0': putchar('0'); break; case '\n': putchar('n'); break; case '\\': putchar('\\'); break; case '\t': putchar('t'); break; default: putchar('?'); } } putn(n, b, c) { if(!c) return; putn(ldiv(0,n,b),b,c-1); if((n=lrem(0,n,b)) > 9) putchar(n-10+'a'); else putchar(n+'0'); } pre(n) { int i; for(i=n; i 0) if(p[-2] == 'b') { i--; b++; p--; } if(i > 0) if(p[-2] == '.') { i--; base = 10; basem = 1000; } a[0] = 0; for(j=0; i-j>3; j++) { d = s[j]; if(d>='0' && d<='9') a[0] = a[0]*base + d-'0'; } a[1] = 0; for(; i-j>0; j++) { d = s[j]; if(d>='0' && d<='9') a[1] = a[1]*base + d-'0'; } if(b) { i = a[0]*basem+a[1]; a[0] = 0; a[1] = 0; while(i--) { a[1] =+ 512; while(a[1] >= basem) { a[1] =- basem; a[0]++; } } } i = 0; while(a[0] > addr[0]+1) { addr[1] =+ 512; while(addr[1] >= basem) { addr[1] =- basem; addr[0]++; } i++; } seek(fi, i, 3); while(a[0]!=addr[0] || a[1]!=addr[1]) if(getc() == -1) break; } putop(n) { char *p; int i, c; p = getop(n); for(i=0; (c = *p++) != '\0'; i++) putchar(c); for(; i<4; i++) putchar(' '); } getop(n) { switch(n&0170000) { case 0000000: switch(n&0177000) { case 0004000: return("jsr"); case 0077000: return("sob"); } switch(n&0177400) { case 0000400: return("br"); case 0001000: return("bne"); case 0001400: return("beq"); case 0002000: return("bge"); case 0002400: return("blt"); case 0003000: return("bgt"); case 0003400: return("ble"); } switch(n&0177700) { case 0000100: return("jmp"); case 0000300: return("swab"); case 0005000: return("clr"); case 0005100: return("com"); case 0005200: return("inc"); case 0005300: return("dec"); case 0005400: return("neg"); case 0005500: return("adc"); case 0005600: return("sbc"); case 0005700: return("tst"); case 0006000: return("ror"); case 0006100: return("rol"); case 0006200: return("asr"); case 0006300: return("asl"); case 0006400: return("mark"); case 0006500: return("mfpi"); case 0006600: return("mtpi"); case 0006700: return("sxt"); } switch(n&0177740) { case 0000240: return("flag"); } switch(n&0177770) { case 0000200: return("rts"); case 0000230: return("spl"); } switch(n&0177777) { case 0000000: return("halt"); case 0000001: return("wait"); case 0000002: return("rti"); case 0000003: return("bpt"); case 0000004: return("iot"); case 0000005: return("rset"); case 0000006: return("rtt"); } break; case 0010000: return("mov "); case 0020000: return("cmp"); case 0030000: return("bit"); case 0040000: return("bic"); case 0050000: return("bis"); case 0060000: return("add"); case 0070000: switch(n&0177000) { case 0070000: return("mul"); case 0071000: return("div"); case 0072000: return("ash"); case 0073000: return("ashc"); case 0074000: return("xor"); } break; case 0100000: switch(n&0177400) { case 0100000: return("bpl"); case 0100400: return("bmi"); case 0101000: return("bhi"); case 0101400: return("blos"); case 0102000: return("bvc"); case 0102400: return("bvs"); case 0103000: return("bhis"); case 0103400: return("blo"); case 0104000: return("emt"); case 0104400: return("sys"); } switch(n&0177700) { case 0105000: return("clrb"); case 0105100: return("comb"); case 0105200: return("incb"); case 0105300: return("decb"); case 0105400: return("negb"); case 0105500: return("adcb"); case 0105600: return("sbcb"); case 0105700: return("tstb"); case 0106000: return("rorb"); case 0106100: return("rolb"); case 0106200: return("asrb"); case 0106300: return("aslb"); case 0106500: return("mfpd"); case 0106600: return("mfpd"); } break; case 0110000: return("movb"); case 0120000: return("cmpb"); case 0130000: return("bitb"); case 0140000: return("bicb"); case 0150000: return("bisb"); case 0160000: return("sub"); case 0170000: switch(n&01777000) { case 0:0; } break; } return("???"); } < = > ? @ A B C D E F G H I / passwd -- change user's password .globl mesg .globl crypt .globl getc .globl flush .globl fcreat .globl putc .globl fopen cmp (sp)+,$3 bge 1f jsr r5,mesg ; .even sys exit 1: tst (sp)+ mov (sp)+,uidp mov (sp)+,r0 tstb (r0) beq 1f jsr pc,crypt clrb 8(r0) 1: mov r0,cryptp mov $passwf,r0 jsr r5,fopen; ibuf bec 1f jsr r5,mesg ; .even sys exit 1: sys stat; tempf; obuf+20. bec 2f sys creat; tempf; 222 bec 1f 2: jsr r5,mesg ; .even sys exit 1: mov r0,obuf / search for uid comp: mov uidp,r1 1: jsr pc,pcop cmp r0,$': beq 1f cmpb r0,(r1)+ beq 1b 2: jsr pc,pcop cmp r0,$'\n bne 2b br comp 1: tstb (r1)+ bne 2b / skip over old password 1: jsr pc,pget cmp r0,$': bne 1b / copy in new password mov cryptp,r1 1: movb (r1)+,r0 beq 1f jsr pc,pput br 1b 1: mov $':,r0 jsr pc,pput / validate permission clr r1 1: jsr pc,pcop cmp r0,$': beq 1f mpy $10.,r1 sub $'0,r0 add r0,r1 br 1b 1: sys getuid tst r0 beq 1f cmp r0,r1 beq 1f jsr r5,mesg ; .even br done 1: inc sflg 1: jsr pc,pcop br 1b done: jsr r5,flush; obuf mov obuf,r0 sys close mov ibuf,r0 sys close tst sflg beq 1f tst dflg bne 1f inc dflg mov $tempf,r0 jsr r5,fopen; ibuf bec 2f jsr r5,mesg ; .even br 1f 2: mov $passwf,r0 jsr r5,fcreat; obuf bec 2f jsr r5,mesg ; .even br 1f 2: jsr pc,pcop br 2b 1: sys unlink; tempf sys exit pput: jsr r5,putc; obuf rts pc pget: jsr r5,getc; ibuf bes 1f rts pc 1: jsr r5,mesg ; .even br done pcop: jsr r5,getc; ibuf bes 1f jsr r5,putc; obuf rts pc 1: tst sflg bne 1f jsr r5,mesg ; .even 1: br done .data passwf: tempf: .even .bss ibuf: .=.+520. obuf: .=.+520. cryptp: .=.+2 uidp: .=.+2 sflg: .=.+2 dflg: .=.+2 / print last floating error stst = 170300^tst stst r1 cmp r1,$14 blos 1f clr r1 1: bic $1,r1 mov mesg(r1),r1 1: movb (r1)+,ch beq 1f mov $1,r0 sys write; ch; 1 br 1b 1: sys exit mesg: 1f 2f 3f 4f 5f 6f 7f 8f 1: 2: 3: 4: 5: 6: 7: 8: .even .bss ch: .=.+2 /* * print file with headings * 2+head+2+page[56]+5 */ int ncol 1; char *header; int col; int icol; int file; char *bufp; int bufs 5120; char buffer[5120]; int line; char *colp[72]; int peekc; int fpage; int page; int colw; int nspace; int width 72; int length 66; int ntflg; char *tty; int mode; struct inode { int dev; int inum; int flags; char nlink; char uid; char gid; char siz0; int size; int ptr[8]; int atime[2]; int mtime[2]; }; main(argc, argv) char **argv; { int nfdone; int onintr(); extern fout; tty = "/dev/ttyx"; fout = dup(1); close(1); if ((signal(2, 1) & 01) == 0) signal(2, onintr); fixtty(); for (nfdone=0; argc>1; argc--) { argv++; if (**argv == '-') { switch (*++*argv) { case 'h': if (argc>=2) { header = *++argv; argc--; } continue; case 't': ntflg++; continue; case 'l': length = getn(++*argv); continue; case 'w': width = getn(++*argv); continue; default: ncol = getn(*argv); continue; } } else if (**argv == '+') { fpage = getn(++*argv); } else { print(*argv); nfdone++; } } if (nfdone==0) print(0); flush(); onintr(); } onintr() { chmod(tty, mode); exit(0); } fixtty() { struct inode sbuf; extern fout; tty[8] = ttyn(fout); fstat(fout, &sbuf); mode = sbuf.flags&0777; chmod(tty, 0600); } print(fp) char *fp; { struct inode sbuf; register int sncol, sheader; register char *cbuf; extern fout; if (length <= 10) length = 66; if (width <= 0) width = 72; if (ncol>72 || ncol>width) { write(fout, "Very funny.\n", 12); exit(); } colw = width/ncol; sncol = ncol; sheader = header; if (--ncol<0) ncol = 0; if (fp) { file = open(fp, 0); if (file<0) return; fstat(file, &sbuf); } else { file = 0; time(sbuf.mtime); } if (header == 0) header = fp; cbuf = ctime(sbuf.mtime); cbuf[16] = '\0'; page = 1; icol = 0; colp[ncol] = bufp = buffer; nexbuf(); while (tgetc(ncol)) { colp[ncol]--; if (colp[ncol] < buffer) colp[ncol] = &buffer[bufs]; line = 0; if (ntflg==0) { puts("\n\n"); puts(cbuf+4); puts(" "); puts(header); puts(" Page "); putd(page); puts("\n\n\n"); } putpage(); if (ntflg==0) while(line512) n = 512; if ((n = read(file, rbufp, n)) <= 0) *rbufp = 0376; else { rbufp =+ n; if (rbufp >= &buffer[bufs]) rbufp = buffer; *rbufp = 0375; } bufp = rbufp; } tgetc(ai) { register char **p; register int c, i; i = ai; loop: c = **(p = &colp[i]) & 0377; if (c == 0375) { nexbuf(); c = **p & 0377; } if (c == 0376) return(0); (*p)++; if (*p >= &buffer[bufs]) *p = buffer; if (c==0) goto loop; return(c); } getc(i) { register int c; if (peekc) { c = peekc; peekc = 0; } else c = tgetc(i); switch (c) { case '\t': icol++; if ((icol&07) != 0) peekc = '\t'; return(' '); case '\n': icol = 0; break; case 010: case 033: icol--; break; } if (c >= ' ') icol++; return(c); } puts(as) char *as; { register int c; register char *s; if ((s=as)==0) return; while (c = *s++) put(c); } putd(an) { register int a, n; n = an; if (a = n/10) putd(a); put(n%10 + '0'); } put(ac) { register int ns, c; c = ac; switch (c) { case ' ': nspace++; col++; return; case '\n': col = 0; nspace = 0; line++; break; case 010: case 033: if (--col<0) col = 0; if (--nspace<0) nspace = 0; } while(nspace) { if (nspace>2 && col > (ns=((col-nspace)|07))) { nspace = col-ns-1; putcp('\t'); } else { nspace--; putcp(' '); } } if (c >= ' ') col++; putcp(c); } getn(ap) char *ap; { register int n, c; register char *p; p = ap; n = 0; while ((c = *p++) >= '0' && c <= '9') n = n*10 + c - '0'; return(n); } putcp(c) { if (page >= fpage) putchar(c); } P Q R S T U V W X Y /* * Print execution profile */ struct nl { char name[8]; int value; float time; int ncall[2]; }; struct nl nl[600]; struct fnl { char fname[8]; int flag; int fvalue; }; struct cnt { int cvalue; int cncall[2]; } cbuf[200]; struct inode { int idev; int inum; int flags; char nlink; char uid; char gid; char size0; int size; int ptr[8]; int ctime[2]; int mtime[2]; int fill; }; int buf[17]; int i; int j; int highpc; int lowpc; int ccnt; int pcl; int pch; int bufs; int nname; double time; double totime; double maxtime; double scale; double lastx; double lasty; struct nl *np; struct nl *npe; int aflg; int vflg; int lflg; int symoff; int symsiz; int vf; int etext; int fout; int ncount; main(argc, argv) char **argv; { char *namfil; int timcmp(), valcmp(); int nf, pf, overlap; double fnc, ltod(); struct cnt *cp; fout = dup(1); argv++; namfil = "a.out"; while (argc>1) { if (**argv == '-') { if (*++*argv == 'l') lflg++; if (**argv == 'a') aflg = 040; if(**argv == 'v') vflg++; } else namfil = *argv; argc--; argv++; } if ((nf = open(namfil, 0)) < 0) { printf("Can't find %s\n", namfil); done(); } read(nf, buf, 020); if (buf[0] != 0407 && buf[0] != 0410) { /* a.out magic */ printf("Bad format: %s\n", namfil); done(); } symsiz = buf[4]; symoff = buf[1] + buf[2]; if (buf[7] != 1) symoff =<< 1; seek(nf, symoff+020, 0); if ((pf = open("mon.out", 0)) < 0) { printf("No mon.out\n"); done(); } fstat(pf, buf); read(pf, &lowpc, 2); read(pf, &highpc, 2); read(pf, &ncount, 2); bufs = buf->size/2 - 3*(ncount+1); read(pf, cbuf, ncount*6); lowpc = (lowpc>>1) & 077777; highpc = (highpc>>1) & 077777; npe = nl; for (nname = 0; symsiz > 0; symsiz =- 12) { read(nf, buf, 12); if ((buf->flag | aflg) != 042) continue; buf->fvalue = (buf->fvalue>>1) & 077777; npe->value = buf->fvalue; for (i=0; i<8; i++) npe->name[i] = buf->fname[i]; npe++; nname++; } if (nname == 0) { printf("No symbols: %s\n", namfil); done(); } npe->value = 077777; npe++; for (cp = cbuf; cp < &cbuf[ncount]; cp++) for (np = nl; np < npe; np++) if (cp->cvalue-6 == np->value<<1) { np->ncall[0] = cp->cncall[0]; np->ncall[1] = cp->cncall[1]; break; } qsort(nl, nname, 18, &valcmp); scale = (highpc-lowpc)/(bufs+0.0); for (i = -1; read(pf, &ccnt, 2)==2; i++) { if (ccnt == 0) continue; time = ccnt; if (ccnt<0) time =+ 65536.; totime =+ time; if(time > maxtime) maxtime = time; pcl = lowpc + scale*i; pch = lowpc + scale*(i+1); for (j=0; j= nl[j+1].value) continue; overlap=(min(pch,nl[j+1].value)-max(pcl,nl[j].value)); nl[j].time =+ overlap*time/scale; } } if (totime==0.0) { printf("No time accumulated\n"); done(); } if(!vflg) goto print; vf = open("/dev/vt0", 1); if(vf < 0) { printf("Cannot open vt\n"); done(); } fout = vf; vtch(1); vtch(1); vtch(3); point(-2048., -2048.); point(-2048., 2048.); vtch(3); point(0., -2048.); point(0., 2048.); for(j=0; j<9; j++) { vtch(3); point(-2048., 2048. - j*512.); point(0., 2048. - j*512.); } lastx = 0.; lasty = 2048.; scale = 4096./(i-1); seek(pf, 6*(ncount+1), 0); while(read(pf, &ccnt, 2)==2) { time = ccnt; if(ccnt < 0) time =+ 65536.; vtch(3); point(lastx, lasty); lastx = -time*2000./maxtime; point(lastx, lasty); vtch(3); point(lastx, lasty); lasty =- scale; point(lastx, lasty); } scale = 4096./(highpc-lowpc); lastx = 50.; for(np = nl; npvalue < lowpc) continue; if(np->value >= highpc) continue; time = np->time/totime; lasty = 2048. - (np->value - lowpc)*scale; vtch(3); point(0., lasty); point(50., lasty); vtch(3); point(lastx-50., lasty); point(lastx, lasty); vtch(9); point(lastx+10., lasty+60.); vtch(1); vtch(3); for(j=0; j<8; j++) if(np->name[j] != '_') vtch(np->name[j]); vtch(0); lastx =+ 500.; if(lastx > 2000.) lastx = 50.; } done(); print: printf(" name %%time #call ms/call\n"); if (!lflg) qsort(nl, nname, 18, &timcmp); for (np = nl; nptime/totime; printf("%8.8s%6.1f", np->name, 100*time); fnc = ltod(np->ncall); if (fnc != 0.0) { printf("%6s", locv(np->ncall[0], np->ncall[1])); printf(" %7.2f\n", np->time/(fnc*.06)); } else printf("\n"); } done(); } min(a, b) { if (ab) return(a); return(b); } valcmp(p1, p2) struct nl *p1, *p2; { return(p1->value - p2->value); } timcmp(p1, p2) struct nl *p1, *p2; { float d; d = p2->time - p1->time; if (d > 0.0) return(1); if (d < 0.0) return(-1); return(0); } vtch(c) int c; { putchar(c&0377); } point(x, y) float x, y; { point1(x); point1(y); } point1(xy) float xy; { int ixy; struct { char b1; char b2;}; if(xy > 2047.) xy = 2047.; if(xy < -2048.) xy = -2048.; ixy = xy; vtch(ixy.b1); vtch(ixy.b2); } done() { flush(); exit(); } [ \ ] ^ _ ` a b c d # #include "/usr/sys/param.h" #include "/usr/sys/proc.h" #include "/usr/sys/tty.h" #include "/usr/sys/user.h" #define NDC11 10 #define NKL11 4 #define NDH11 16 struct { char name[8]; int type; char *value; } nl[5]; struct proc proc[1]; struct user u; int lflg; int kflg; int xflg; int tflg; int aflg; int mem; int swap; int stbuf[257]; char *coref; main(argc, argv) char **argv; { struct proc *p; int n, b; int i, c, mtty; char *ap; int hmem; if (argc>1) { ap = argv[1]; while (*ap) switch (*ap++) { case 'a': aflg++; break; case 't': tflg++; break; case 'x': xflg++; break; case 'l': lflg++; break; case 'k': kflg++; break; } } setup(&nl[0], "_proc"); setup(&nl[1], "_dc11"); setup(&nl[2], "_kl11"); setup(&nl[3], "_dh11"); nlist("/unix", nl); if (nl[0].type==0) { printf("No namelist\n"); return; } coref = "/dev/mem"; if(kflg) coref = "/dev/rk0"; if ((hmem = open(coref, 0)) < 0) { printf("No mem\n"); return; } mem = open(coref, 0); swap = open("/dev/rf0", 0); n = &proc[1]; b = &proc; n =- b; seek(hmem, nl[0].value, 0); mtty = ttyn(0); for (i=0; i>3); if (proc[0].p_wchan) printf("%8o", proc[0].p_wchan); else printf(" "); } prcom(); printf("\n"); } } ttyc(p) struct tty *p; { int n; struct { struct tty xdc11[]; }; n = p - nl[1].value->xdc11; if (n>=0 && nxdc11; if(n>=0 && nxdc11; if(n>=0 && n>3; laddr = (laddr&07)<<6; seek(mf, baddr, 3); seek(mf, laddr, 1); if (read(mf, stbuf, 512) != 512) return(0); for (ip = &stbuf[256]; ip > &stbuf[0];) { if (*--ip == -1) { cp = ip+1; if (*cp==0) cp++; for (cp1 = cp; cp1 < &stbuf[256]; cp1++) { c = *cp1; if (c==0) *cp1 = ' '; else if (c < ' ' || c > 0176) *cp1 = '?'; } printf(" %.32s ", cp); return(1); } } return(0); } char dot[] "."; char dotdot[] ".."; char root[] "/"; char name[512]; int file, off -1; struct statb {int devn, inum, i[18];}x; struct entry { int jnum; char name[16];}y; main() { int n; loop0: stat(dot, &x); if((file = open(dotdot,0)) < 0) prname(); loop1: if((n = read(file,&y,16)) < 16) prname(); if(y.jnum != x.inum)goto loop1; close(file); if(y.jnum == 1) ckroot(); cat(); chdir(dotdot); goto loop0; } ckroot() { int i, n; if((n = stat(y.name,&x)) < 0) prname(); i = x.devn; if((n = chdir(root)) < 0) prname(); if((file = open(root,0)) < 0) prname(); loop: if((n = read(file,&y,16)) < 16) prname(); if(y.jnum == 0) goto loop; if((n = stat(y.name,&x)) < 0) prname(); if(x.devn != i) goto loop; x.i[0] =& 060000; if(x.i[0] != 040000) goto loop; cat(); prname(); } prname() { name[off] = '\n'; write(1,name,off+1); exit(); } cat() { int i, j; i = -1; while(y.name[++i] != 0); if((off+i+2) > 511) prname(); for(j=off+1; j>=0; --j) name[j+i+1] = name[j]; off=i+off+1; name[i] = root[0]; for(--i; i>=0; --i) name[i] = y.name[i]; } # /* * restore from incremental dumps */ char *dargv[] { 0, "t", 0 }; char *ifile "/dev/mt0"; char *ofile; struct inode { int i_mode; char i_nlink; char i_uid; char i_gid; char i_size0; char *i_size1; int i_addr[8]; int i_atime[2]; int i_mtime[2]; }; /* modes */ #define IALLOC 0100000 #define IFMT 060000 #define IFDIR 040000 #define IFCHR 020000 #define IFBLK 060000 #define ILARG 010000 struct { char *s_isize; char *s_fsize; int s_nfree; int s_free[100]; int s_ninode; int s_inode[100]; char s_flock; char s_ilock; char s_fmod; int time[2]; int pad[50]; } sblock; int isize; int *talist; int fi; int buf[256]; int dbuf[256]; int cbuf[256]; char *date[2]; char *ddate[2]; int fo; int pher; char *tsize 15000; int iflg; int wflg; char file[10]; int ilist[100]; main(argc, argv) char **argv; { char *key; register *tap, *p; register struct inode *ip; int i, com, sz, *q; if(argc == 1) { argv = dargv; for(argc = 1; dargv[argc]; argc++); } argc--; argv++; key = *argv; while(*key) switch(*key++) { default: printf("bad characteer in key\n"); exit(); case 't': case 'r': case 'x': com = key[-1]; continue; case 'i': iflg++; continue; case 'w': wflg++; continue; } otape(); sread(buf, 0); tap = buf; isize = *tap++; *tap++; /* fsize */ date[0] = *tap++; date[1] = *tap++; ddate[0] = *tap++; ddate[1] = *tap++; tsize = *tap++; i = size(0, isize*32); talist = sbrk(i*512); tap = talist; while(i--) { tread(tap, 0); tap =+ 256; } switch(com) { case 't': com = 0; pdate(ddate); pdate(date); tap = talist; for(i=0; i sblock.s_isize) { printf("isize too small\n"); continue; } sread(dbuf, 0); dealoc(ip); q = dbuf; for(p = ip; p < &ip->i_mtime[2]; ) *p++ = *q++; restor(ip, sz-1); } dwrite(i+2, buf); } dwrite(1, &sblock); exit(); case 'x': tap = ilist; while(argc > 1) { *tap++ = number(argv[1]); argv++; argc--; } tap = talist; for(i=0; ii_size0 == 0 && ip->i_size1 < 512) com = ip->i_size1; write(fo, dbuf, com); if(com > ip->i_size1) ip->i_size0--; ip->i_size1 =- com; } close(fo); chmod(file, ip->i_mode); chown(file, ip->i_uid); } exit(); } } dealoc(p) struct inode *p; { register struct inode *ip; register i, j; int xbuf[256]; ip = p; if(ip->i_mode & (IFCHR&IFBLK)) return; for(i=0; i<8; i++) if(ip->i_addr[i]) { if(ip->i_mode&ILARG) { dread(ip->i_addr[i], xbuf); for(j=0; j<256; j++) if(xbuf[j]) free(xbuf[j]); } free(ip->i_addr[i]); } } restor(p, sz) struct inode *p; { register struct inode *ip; register i, j; ip = p; if(ip->i_mode & (IFCHR&IFBLK)) return; for(i=0; i<8; i++) ip->i_addr[i] = 0; if(sz <= 8) { for(i=0; ii_addr[i] = rcop(); ip->i_mode =& ~ILARG; return; } j = 0; while(sz >= 256) { for(i=0; i<256; i++) dbuf[i] = rcop(); ip->i_addr[j] = alloc(); dwrite(ip->i_addr[j++], dbuf); sz =- 256; } if(sz) { for(i=0; i<256; i++) dbuf[i] = 0; for(i=0; ii_addr[j] = alloc(); dwrite(ip->i_addr[j], dbuf); } ip->i_mode =| ILARG; } rcop() { register b; b = alloc(); tread(cbuf, 0); dwrite(b, cbuf); return(b); } pdate(d) int *d; { if(d[0] == 0 && d[1] == 0) printf("the epoch\n"); else printf(ctime(d)); } dread(bno, b) { seek(fo, bno, 3); if(read(fo, b, 512) != 512) { printf("read error %l\n", bno); exit(); } } dwrite(bno, b) { seek(fo, bno, 3); if(write(fo, b, 512) != 512) { printf("write error %l\n", bno); exit(); } } sread(b, flag) int *b; { register i, s, *p; tread(b, flag); if(flag) return; i = 256; s = 0; p = b; while(i--) s =+ *p++; if(s != 031415) { printf("checksum error\n"); exit(); } } tread(b, flag) { static char *ta; if(ta++ > tsize) { printf("change tapes\n"); close(fi); while((ta = getchar()) != '\n') if(ta == 0) exit(); ta = 0; otape(); } if(flag) seek(fi, 1, 4); else if(read(fi, b, 512) != 512) { printf("read error\n"); exit(); } } number(s) char *s; { register n, c; n = 0; while(c = *s++) { if(c<'0' || c>'9') continue; n = n*10+c-'0'; } return(n); } size(s0, s1) { register s; extern ldivr; s = ldiv(s0&0377, s1, 512); if(ldivr) s++; return(s); } otape() { fi = open(ifile, 0); if(fi < 0) { printf("can not open %s\n", ifile); exit(); } } dwait(ino) { register i; dconv(ino, file); loop: if(wflg) { printf("%s ", file); i = getchar(); if(i == 'x') exit(); if(i == '\n') return(-1); if(i != 'y') goto flush; i = getchar(); if(i != '\n') { flush: while((i=getchar()) != '\n') if(i == '\0') exit(); goto loop; } } i = creat(file, 0666); return(i); } dconv(n, p) char *p; { register i; if(i = ldiv(0, n, 10)) p = dconv(i, p); *p++ = lrem(0, n, 10) + '0'; *p = '\0'; return(p); } alloc() { register b, i; i = --sblock.s_nfree; if(i<0 || i>=100) { printf("bad freeblock\n"); exit(); } b = sblock.s_free[i]; if(b == 0) { printf("out of freelist\n"); exit(); } if(sblock.s_nfree <= 0) { dread(b, cbuf); sblock.s_nfree = cbuf[0]; for(i=0; i<100; i++) sblock.s_free[i] = cbuf[i+1]; } return(b); } free(in) { register i; if(sblock.s_nfree >= 100) { cbuf[0] = sblock.s_nfree; for(i=0; i<100; i++) cbuf[i+1] = sblock.s_free[i]; sblock.s_nfree = 0; dwrite(in, cbuf); } sblock.s_free[sblock.s_nfree++] = in; } o p q r s t u v w x y z { / rew -- rewind dec/mag tape cmp (sp)+,$2 blt 1f tst (sp)+ mov (sp)+,r0 movb (r0)+,r1 cmp r1,$'m beq rewm movb r1,tapx+8 tstb (r0) bne error 1: sys open; tapx; 0 br rew rewm: movb (r0)+,r1 beq 1f movb r1,mtx+7 tstb (r0) bne error 1: sys open; mtx; 0 rew: bes error sys read; word; 2 bes error sys exit error: mov $1,r0 sys write; 0f; 2 sys exit 0: tapx: mtx: .even .bss word: .=.+2 main(argc, argv) char *argv[]; { char *arg; int fflg, rflg; fflg = 0; rflg = 0; while(--argc > 0) { arg = *++argv; if(arg[0] == '-') { if(arg[1] == 'f') { fflg++; continue; } if(arg[1] == 'r') { rflg++; continue; } } rm(arg, fflg, rflg); } } struct stbuf { int dev; int inum; int mode; char nlink; char uid; char gid; char siz0; char siz1; int addr[8]; int adate[2]; int mdate[2]; }; rm(arg, fflg, rflg) char arg[]; { char *p; int buf[20]; int i, b; if(stat(arg, buf)) { printf("%s: non existent\n", arg); return; } if((buf->mode & 060000) == 040000) { if(rflg) { i = fork(); if(i < 0) { printf("%s: try again\n", arg); return; } if(i) { while(wait() != i); return; } if(chdir(arg)) { printf("%s: cannot chdir\n", arg); exit(); } p = 0; execl("/etc/glob", "glob", "rm", "-r", fflg? "-f": "*", fflg? "*": p, 0); printf("%s: no glob\n", arg); exit(); } printf("%s: directory\n", arg); return; } if(!fflg) { if(getuid() == buf->uid) b = 0200; else b = 2; if((buf->mode & b) == 0) { printf("%s: %o mode ", arg, buf->mode); i = b = getchar(); i = b; while(b != '\n' && b != '\0') b = getchar(); if(i != 'y') return; } } if(unlink(arg)) printf("%s: not removed\n", arg); } putchar(c) { write(1, &c, 1); } getchar() { char c; if(read(0, &c, 1) != 1) return(0); return(c); } / rmdir -- unlink directory mov (sp)+,r5 tst (sp)+ loop: dec r5 ble done mov (sp)+,r1 mov $name,r2 clr r0 1: inc r0 movb (r1)+,(r2)+ bne 1b dec r2 dec r0 mov r0,size cmp r2,$name beq error sys stat; name; stbuf bes error bic $!60000,stbuf+4 cmp $40000,stbuf+4 bne error cmpb -1(r2),$'. bne 1f cmp r2,$name+1 beq error cmpb -2(r2),$'/ beq error cmpb -2(r2),$'. bne 1f cmp r2,$name+2 beq error cmpb -3(r2),$'/ beq error 1: sys open; name; 0 bes error mov r0,r1 1: mov r1,r0 sys read; stbuf; 16. bes 1f tst r0 beq 1f tst stbuf beq 1b cmpb stbuf+2,$'. bne error1 tstb stbuf+3 beq 1b cmpb stbuf+3,$'. bne error1 tstb stbuf+4 beq 1b error1: jsr pc,prname mov r1,r0 sys close mov $1,r0 sys write; mes1; emes1-mes1 br loop 1: mov r1,r0 sys close movb $'/,(r2)+ movb $'.,(r2)+ movb $'.,(r2)+ clrb (r2) sys unlink; name clrb -(r2) sys unlink; name clrb -2(r2) sys unlink; name br loop error: jsr pc,prname mov $1,r0 sys write; mes2; emes2-mes2 br loop prname: mov $1,r0 sys write; name; size:.. rts pc done: sys exit mes1: < -- directory not empty\n> emes1: mes2: < ?\n> emes2: .even .bss name: .=.+40. stbuf: .=.+40. #define size 1000 /* interpret command time accounting */ int lflg; int cflg; int jflg; int nflg; int aflg; int rflg; int tflg; int vflg; int uflg; int thres 1; int sflg; int bflg; int fout; struct tab { char name[8]; int count; float realt; float cput; float syst; } tab[size]; struct ftab { char fname[8]; char fill1[4]; char fill2; char uid; int frealt; int fcput; int fsyst; }; float treal; float tcpu; float tsys; int junkp -1; char *sname; float ncom; main(argc, argv) char **argv; { int i, j, k; extern tcmp(), ncmp(), bcmp(); extern float sum(); float ft; init(); if (argc>1) if (argv[1][0]=='-') { argv++; argc--; for(i=1; argv[0][i]; i++) switch(argv[0][i]) { case 'b': bflg++; break; case 'l': lflg++; break; case 'c': cflg++; break; case 'j': jflg++; break; case 'n': nflg++; break; case 'a': aflg++; break; case 'r': rflg++; break; case 't': tflg++; break; case 's': sflg++; aflg++; break; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': thres = argv[0][i]-'0'; break; case 'v': vflg++; break; case 'u': uflg++; break; } } fout = dup(1); if (argc<2) acct("/usr/adm/sh_acct"); else while (--argc) acct(*++argv); if (uflg) { flush(); return; } /* * cleanup pass * put junk together */ if (vflg) strip(); if(!aflg) for (i=0; i= 0200)) *cp = '?'; } if (uflg) { printf("%3d %.8s\n", fbuf.uid, fbuf.name); continue; } ncom =+ 1.0; i = enter(&fbuf); tab[i].count++; x = fbuf.frealt; if (x<0.) x =+ 65536.; x =* 60.; tab[i].realt =+ x; treal =+ x; x = fbuf.fcput; if (x<0.) x =+ 65536.; tab[i].cput =+ x; tcpu =+ x; x = fbuf.fsyst; if (x<0.) x =+ 65536.; tab[i].syst =+ x; tsys =+ x; } close(ff); } ncmp(p1, p2) struct tab *p1, *p2; { if(p1->count == p2->count) return(tcmp(p1, p2)); if(rflg) return(p1->count - p2->count); return(p2->count - p1->count); } bcmp(p1, p2) struct tab *p1, *p2; { float f1, f2; float sum(); f1 = sum(p1)/p1->count; f2 = sum(p2)/p2->count; if(f1 < f2) { if(rflg) return(-1); return(1); } if(f1 > f2) { if(rflg) return(1); return(-1); } return(0); } tcmp(p1, p2) struct tab *p1, *p2; { extern float sum(); float f1, f2; f1 = sum(p1); f2 = sum(p2); if(f1 < f2) { if(rflg) return(-1); return(1); } if(f1 > f2) { if(rflg) return(1); return(-1); } return(0); } float sum(p) struct tab *p; { if(p->name[0] == 0) return(0.0); return( p->cput+ p->syst); } init() { struct tab tbuf; int i, j, f; if ((f=open("/usr/adm/sht_acct", 0))<0) return; while (read(f, &tbuf, 22) == 22) { i = enter(&tbuf); ncom =+ tbuf.count; tab[i].count = tbuf.count; treal =+ tbuf.realt; tab[i].realt = tbuf.realt; tcpu =+ tbuf.cput; tab[i].cput = tbuf.cput; tsys =+ tbuf.syst; tab[i].syst = tbuf.syst; } close(f); } enter(fbuf) struct ftab *fbuf; { int i, j; i = 0; for (j=0; j<8; j++) { i = i*7 + fbuf->fname[j]; } if(i < 0) i = -i; for (i=%size; tab[i].name[0]; i = (i+1)%size) { for (j=0; j<8; j++) if (tab[i].name[j]!=fbuf->fname[j]) goto no; goto yes; no:; } for (j=0; j<8; j++) tab[i].name[j] = fbuf->fname[j]; yes: return(i); } strip() { int i, j, k, c; j = enter("**junk**"); for (i = 0; i 1) { promp = 0; close(0); f = open(v[1], 0); if(f < 0) { prs(v[1]); err(": cannot open"); } } if(**v == '-') { setintr++; signal(quit, 1); signal(intr, 1); } dolv = v+1; dolc = c-1; loop: if(promp != 0) prs(promp); peekc = getc(); main1(); goto loop; } main1() { char line[linesiz]; char *args[argsiz]; int trebuf[tresiz]; register char c, *cp; register *t; argp = args; eargp = args+argsiz-5; linep = line; elinep = line+linesiz-5; error = 0; gflg = 0; do { cp = linep; word(); } while(*cp != '\n'); treep = trebuf; if(gflg == 0) { if(error == 0) t = syntax(args, argp); if(error != 0) err("syntax error"); else execute(t); } } word() { register char c, c1; *argp++ = linep; loop: switch(c = getc()) { case ' ': case '\t': goto loop; case '\'': case '"': c1 = c; while((c=readc()) != c1) { if(c == '\n') { error++; peekc = c; return; } *linep++ = c|quote; } goto pack; case '&': case ';': case '<': case '>': case '(': case ')': case '|': case '^': case '\n': *linep++ = c; *linep++ = '\0'; return; } peekc = c; pack: for(;;) { c = getc(); if(any(c, " '\"\t;&<>()|^\n")) { peekc = c; if(any(c, "\"'")) goto loop; *linep++ = '\0'; return; } *linep++ = c; } } tree(n) int n; { register *t; t = treep; treep =+ n; return(t); } getc() { register char c; if(peekc) { c = peekc; peekc = 0; return(c); } if(argp > eargp) { argp =- 10; while((c=getc()) != '\n'); argp =+ 10; err("Too many args"); gflg++; return(c); } if(linep > elinep) { linep =- 10; while((c=getc()) != '\n'); linep =+ 10; err("Too many characters"); gflg++; return(c); } getd: if(dolp) { c = *dolp++; if(c != '\0') return(c); dolp = 0; } c = readc(); if(c == '\\') { c = readc(); if(c == '\n') return(' '); return(c|quote); } if(c == '$') { c = getc(); if(c>='0' && c<='9') { if(c-'0' < dolc) dolp = dolv[c-'0']; goto getd; } } return(c&0177); } readc() { int c; if(read(0, &c, 1) != 1) exit(); return(c&0377); } /* * syntax * empty * syn1 */ syntax(p1, p2) char **p1, **p2; { while(p1 != p2) { if(any(**p1, ";&\n")) p1++; else return(syn1(p1, p2)); } return(0); } /* * syn1 * syn2 * syn2 & syntax * syn2 ; syntax */ syn1(p1, p2) char **p1, **p2; { register char **p; register *t, *t1; int l; l = 0; for(p=p1; p!=p2; p++) switch(**p) { case '(': l++; continue; case ')': l--; if(l < 0) error++; continue; case '&': case ';': case '\n': if(l == 0) { t = tree(4); t[dtyp] = tlst; t[dlef] = syn2(p1, p); t[dflg] = 0; if(**p == '&') { t1 = t[dlef]; t1[dflg] =| fand|fint; } t[drit] = syntax(p+1, p2); return(t); } } if(l == 0) return(syn2(p1, p2)); error++; } /* * syn2 * syn3 * syn3 | syn2 */ syn2(p1, p2) char **p1, **p2; { char **p; int l, *t; l = 0; for(p=p1; p!=p2; p++) switch(**p) { case '(': l++; continue; case ')': l--; continue; case '|': case '^': if(l == 0) { t = tree(4); t[dtyp] = tfil; t[dlef] = syn3(p1, p); t[drit] = syn2(p+1, p2); t[dflg] = 0; return(t); } } return(syn3(p1, p2)); } /* * syn3 * ( syn1 ) [ < in ] [ > out ] * word word* [ < in ] [ > out ] */ syn3(p1, p2) char **p1, **p2; { register char **p; char **lp, **rp; register *t; int b[100], n, l, i, o, c, flg; flg = 0; if(**p2 == ')') flg =| fpar; lp = 0; rp = 0; i = 0; o = 0; n = 0; l = 0; for(p=p1; p!=p2; p++) switch(c = **p) { case '(': if(l == 0) { if(lp != 0) error++; lp = p+1; } l++; continue; case ')': l--; if(l == 0) rp = p; continue; case '>': p++; if(p!=p2 && **p=='>') flg =| fcat; else p--; case '<': if(l == 0) { p++; if(p == p2) { error++; p--; } if(any(**p, "<>(")) error++; if(c == '<') { if(i != 0) error++; i = *p; continue; } if(o != 0) error++; o = *p; } continue; default: if(l == 0) b[n++] = *p; } if(lp != 0) { if(n != 0) error++; t = tree(5); t[dtyp] = tpar; t[dspr] = syn1(lp, rp); goto out; } if(n == 0) error++; b[n++] = 0; t = tree(n+5); t[dtyp] = tcom; for(l=0; l= 0) { seek(i, 0, 2); goto f1; } } i = creat(t[drit], 0666); if(i < 0) { prs(t[drit]); err(": cannot create"); exit(); } f1: close(1); dup(i); close(i); } if((f&fpin) != 0) { close(0); dup(pf1[0]); close(pf1[0]); close(pf1[1]); } if((f&fpou) != 0) { close(1); dup(pf2[1]); close(pf2[0]); close(pf2[1]); } if((f&fint)!=0 && t[dlef]==0 && (f&fpin)==0) { close(0); open("/dev/null", 0); } if((f&fint) == 0 && setintr) { signal(intr, 0); signal(quit, 0); } if(t[dtyp] == tpar) { if(t1 = t[dspr]) t1[dflg] =| f&fint; execute(t1); exit(); } close(acctf); gflg = 0; scan(t, &tglob); if(gflg) { t[dspr] = "/etc/glob"; execv(t[dspr], t+dspr); prs("glob: cannot execute\n"); exit(); } scan(t, &trim); execv(t[dcom], t+dcom); cp1 = linep; cp2 = "/usr/bin/"; while(*cp1 = *cp2++) cp1++; cp2 = t[dcom]; while(*cp1++ = *cp2++); execv(linep+4, t+dcom); execv(linep, t+dcom); if(runcom()) { t[dspr] = "/bin/sh"; t[dcom] = linep; execv(t[dspr], t+dspr); } prs(t[dcom]); err(": not found"); exit(); case tfil: f = t[dflg]; pipe(pv); t1 = t[dlef]; t1[dflg] =| fpou | (f&(fpin|fint)); execute(t1, pf1, pv); t1 = t[drit]; t1[dflg] =| fpin | (f&(fpou|fint|fand)); execute(t1, pv, pf2); return; case tlst: f = t[dflg]&fint; if(t1 = t[dlef]) t1[dflg] =| f; execute(t1); if(t1 = t[drit]) t1[dflg] =| f; execute(t1); return; } } err(s) char *s; { prs(s); prs("\n"); if(promp == 0) { seek(0, 0, 2); exit(); } } prs(s) char *s; { while(*s) putc(*s++); } putc(c) { write(2, &c, 1); } prn(n) int n; { register a; if(a=ldiv(0,n,10)) prn(a); putc(lrem(0,n,10)+'0'); } any(c, s) int c; char *s; { while(*s) if(*s++ == c) return(1); return(0); } equal(s1, s2) char *s1, *s2; { while(*s1++ == *s2) if(*s2++ == '\0') return(1); return(0); } pwait(i, t) int i, *t; { register p, e; int s; if(i != 0) for(;;) { times(&timeb); time(timeb.proct); p = wait(&s); if(p == -1) break; e = s&0177; if(mesg[e] != 0) { if(p != i) { prn(p); prs(": "); } prs(mesg[e]); if(s&0200) prs(" -- Core dumped"); } if(e != 0) err(""); if(i == p) { acct(t); break; } else acct(0); } } acct(t) int *t; { if(t == 0) enacct("**gok"); else if(*t == tpar) enacct("()"); else enacct(t[dcom]); } enacct(s) char *s; { struct stime timbuf; struct { char cname[14]; int realt; int bcput; int bsyst; } tbuf; register i; register char *np; times(&timbuf); time(timbuf.proct); tbuf.realt = timbuf.proct[1] - timeb.proct[1]; tbuf.bcput = timbuf.cputim[1] - timeb.cputim[1]; tbuf.bsyst = timbuf.systim[1] - timeb.systim[1]; do { np = s; while (*s != '\0' && *s != '/') s++; } while (*s++ != '\0'); for (i=0; i<13; i++) { tbuf.cname[i] = *np; if (*np) np++; } tbuf.cname[13] = uid; seek(acctf, 0, 2); write(acctf, &tbuf, 20); } runcom() { int buf[40]; if(stat(linep, buf) < 0) return(0); if((buf[2]&060111) != 0) return(0); return(1); } ‘ ’ “ ” • – — ˜ ™ š › œ � ž Ÿ   ¡ ¢ £ ¤ /* size -- determine object size */ main(argc, argv) char **argv; { int buf[010], f, ac, sum; ac = argc; if (ac==1) { *argv = "a.out"; ac++; --argv; } while(--ac) { ++argv; if((f=open(*argv, 0))<0) { printf("%s not found\n", *argv); continue; } read(f, buf, 0020); if(buf[0]!=0410 && buf[0]!=0407) { printf("Bad format: %s\n", *argv); close(f); continue; } if (argc>2) printf("%s: ", *argv); printf("%l+%l+%l=", buf[1],buf[2],buf[3]); sum = buf[1]+buf[2]+buf[3]; printf("%l (%o)\n", sum, sum); close(f); } } main(argc, argv) char **argv; { int c, n; char *s; n = 0; if(argc < 2) { printf("arg count\n"); exit(); } s = argv[1]; while(c = *s++) { if(c<'0' || c>'9') { printf("bad character\n"); exit(); } n = n*10 + c - '0'; } sleep(n); } #define L 512 #define N 7 #define C 20 #define MEM (16*2048) int ibuf[259]; int obuf[259]; char *file; char *filep; int nfiles; int nlines; int ntext; int *lspace; char *tspace; int aflg; int dflg; int mflg; int nflg; int rflg 1; int sfield -1; int schar; int cmp(); char map[256]; int term(); char *outfil; int eargc; char **eargv; main(argc, argv) char **argv; { extern char end; register a; char *arg; eargv = argv; while (--argc > 0) { if(**++argv == '-') for(arg = *argv;;) { switch(*++arg) { case '\0': if(arg[-1] == '-') eargv[eargc++] = "-"; break; case 'a': aflg++; continue; case 'd': dflg++; continue; case 'm': mflg++; continue; case 'n': nflg++; continue; case 'o': if(--argc > 0) outfil = *++argv; continue; case 'r': rflg = -1; continue; default: sfield = number(++*argv); break; } break; } else if (**argv == '+') schar = number(++*argv); else eargv[eargc++] = *argv; } if(eargc == 0) eargv[eargc++] = "-"; for(a=0; a<128; a++) (map+128)[a] = a; if(!aflg) for(a='a'; a<='z'; a++) (map+128)[a] = (map+128)[a-'a'+'A']; (map+128)['\n'] = 0; if(rflg < 0) for(a=0; a<128; a++) (map+128)[a] = 127-(map+128)[a]; if(dflg) { for(a=0; a<'0'; a++) if(a!='\n' && a!=' ' && a!='\t') (map+128)[a] = -1; ignore('9'+1,'A'-1); ignore('Z'+1,'a'-1); ignore('z'+1,127); } ignore(-128,0); (map+128)[127] = -1; a = MEM; while(brk(a) == -1); a =- 512; brk(a =- 512); /* for recursion */ lspace = &end; a =- &end; nlines = ((a-L)>>1) & 077777; nlines =/ 5; ntext = nlines*8; tspace = lspace+nlines; file = "/usr/tmp/stmXaa"; loop: filep = file; while(*filep != 'X') filep++; for(*filep = 'a';;(*filep)++) { if(stat(file, lspace) < 0) { a = creat(file, 0600); if(a >= 0) break; } if(*filep == 'z') { if(file[1] != 't') { file = "/tmp/stmXaa"; goto loop; } mess("Cannot locate temp\n"); exit(); } } close(a); filep++; if ((signal(2, 1) & 01) == 0) signal(2, term); nfiles = eargc; if(!mflg) { ibuf[0] = -1; sort(); close(0); } for(a = mflg?0:eargc; a+N < nfiles; a=+N) { newfile(); merge(a, a+N); } if(a != nfiles) { oldfile(); merge(a, nfiles); } term(); } sort() { register char *cp; register *lp, c; int done; int i; int f; done = 0; i = 0; do { cp = tspace; lp = lspace; while(lp < lspace+nlines && cp < tspace+ntext) { *lp++ = cp; while((*cp++ = c = getc(ibuf)) != '\n') { if(c >= 0) continue; cp--; close(ibuf[0]); if(i < eargc) { if((f = setfil(i++)) == 0) ibuf[0] = 0; else if(fopen(f, ibuf) < 0) cant(f); } else break; } if(c < 0) { done++; lp--; break; } } qsort(lspace, lp-lspace, 2, cmp); if(done == 0 || nfiles != 0) newfile(); else oldfile(); while(lp > lspace) { cp = *--lp; do putc(*cp, obuf); while(*cp++ != '\n'); } fflush(obuf); close(obuf[0]); } while(done == 0); } struct merg { char l[L]; int b[259]; }; merge(a, b) { register struct merg *p; register char *cp; register i; struct { int *ip;}; int f; int j; p = lspace; j = 0; for(i=a; ib[0] = dup(0); else if(fopen(f, p->b) < 0) cant(f); ibuf[j] = p; if(!rline(p)) j++; p++; } i = j; qsort(ibuf, i, 2, cmp); if(i > 0) for(;;) { cp = ibuf[i-1]; do putc(*cp, obuf); while(*cp++ != '\n'); if(rline(ibuf[i-1])) { i--; if(i == 0) break; } cp = &ibuf[i]; while (--cp.ip > ibuf && cmp(cp.ip, cp.ip-1) < 0) { p = *cp.ip; *cp.ip = *(cp.ip-1); *(cp.ip-1) = p; } } p = lspace; for(i=a; ib[0]); p++; if(i >= eargc) close(creat(setfil(i))); } fflush(obuf); close(obuf[0]); } rline(mp) struct merg *mp; { register char *cp; register *bp, c; bp = mp->b; cp = mp->l; do { c = getc(bp); if(c < 0) return(1); *cp++ = c; } while(c != '\n'); return(0); } newfile() { if(fcreat(setfil(nfiles), obuf) < 0) { mess("Can't create temp\n"); term(); } nfiles++; } char * setfil(i) { if(i < eargc) if(eargv[i][0] == '-' && eargv[i][1] == '\0') return(0); else return(eargv[i]); i =- eargc; filep[0] = i/26 + 'a'; filep[1] = i%26 + 'a'; return(file); } oldfile() { if(outfil) { if(fcreat(outfil, obuf) < 0) { mess("Can't create output\n"); term(); } } else obuf[0] = 1; } cant(f) { mess("Can't open "); mess(f); mess("\n"); term(); } term() { register i; if(nfiles == 0) nfiles++; for(i=eargc; i= 0) { pa = skip(pa); pb = skip(pb); } if(schar) { pa = slip(pa); pb = slip(pb); } if(nflg) { pa = snip(pa, &sa); pb = snip(pb, &sb); sign = sa*(sa==sb); for(ipa = pa; digit(*ipa); ipa++); for(ipb = pb; digit(*ipb); ipb++); jpa = ipa; jpb = ipb; a = 0; if(sign) while(ipa > pa && ipb > pb) if(b = *--ipb - *--ipa) a = b; while(ipa > pa) if(*--ipa != '0') return(sign ? -sign : -sa); while(ipb > pb) if(*--ipb != '0') return(sign ? sign : sb); if(a) return(a*sign); if(*(pa=jpa) == '.') pa++; if(*(pb=jpb) == '.') pb++; while(digit(*pa) && digit(*pb)) if(a = *pb++ - *pa++) return(sign ? a*sign : sb); while(digit(*pa)) if(*pa++ != '0') return(sign ? -sign : -sa); while(digit(*pb)) if(*pb++ != '0') return(sign ? sign : sb); } loop : while((a = (map+128)[*pa]) < 0) pa++; while((b = (map+128)[*pb]) < 0) pb++; if(a == b) { if(*pa++ != '\n') { pb++; goto loop; } pa = *i; pb = *j; while(*pa == *pb) { if(*pa++ == '\n') return(0); pb++; } return((*pb - *pa) * rflg); } return(b - a); } skip(pp) char *pp; { register i; register char *p; p = pp; if(i = sfield) do { while(*p == ' ' || *p == '\t') p++; while(*p != ' ' && *p != '\t' && *p != '\n') p++; } while(--i); while(*p == ' ' || *p == '\t') p++; return(p); } slip(pp) char *pp; { register i; register char *p; p = pp; i = schar; do { if(*p != '\n') p++; } while(--i); return(p); } snip(pp,ls) char *pp; int *ls; { register char *p; register int s; p = pp; while(*p == ' ' || *p == '\t') p++; s = rflg; if(*p == '-') { s = -s; p++; } *ls = s; return(p); } number(ap) char *ap; { register int n; register char *p; p = ap; n = 0; while(digit(*p)) n = n*10 + *p++ - '0'; return(n); } digit(c) { if(c <= '9' && c >= '0') return(1); return(0); } mess(s) char *s; { while(*s) write(2, s++, 1); } ignore(a,b) { register c; for(c = a; c <= b; c++) (map+128)[c] = -1; } © ª « ¬ ­ ® ¯ ° ± ² ³ ´ µ ¶ int count 1000; int fnumber; int ibuf[259]; int obuf[259]; char fname[100]; char *ifil; char *ofil; main(argc, argv) char *argv[]; { register i, c, f; for(i=1; i='0' && *s<='9') n = n*10 + *s-'0'; return(n); } / strip -- strip relocation and symbols mov (sp)+,argc tst (sp)+ br loop unloop: sys unlink; s.tmp loop: dec argc bgt 1f sys exit 1: mov (sp)+,r4 mov r4,0f sys open; 0:..; 0 bec 1f jsr r5,mesg; ; .even br loop 1: mov r0,fi mov $'a,r1 1: movb r1,s.tmp+8 sys stat; s.tmp; buf bec 2f sys creat; s.tmp; 400 bec 1f 2: inc r1 cmp r1,$'z blos 1b jsr r5,mesg; ; .even sys exit 1: mov r0,fo clr buf mov fi,r0 sys read; buf; 512. mov r0,r3 cmp buf,magic beq 1f cmp buf,magic1 beq 1f jsr r5,mesg; ; .even br unloop 1: mov buf+2,r2 add buf+4,r2 add $20,r2 clr buf+10 mov $1,buf+16 / no reloc bits flag 1: cmp r2,r3 bge 2f mov r2,r3 2: mov r3,0f mov fo,r0 sys write; buf; 0:.. sub r3,r2 ble 1f mov fi,r0 sys read; buf; 512. mov r0,r3 bne 1b jsr r5,mesg; ; .even 1: mov fo,r0 sys close mov fi,r0 sys close mov r4,0f sys creat; 0:..; 0 / same mode as before bec 1f jsr r5,mesg; ; .even jmp unloop 1: mov r0,fo sys open; s.tmp; 0 bec 1f jsr r5,mesg; ; .even sys exit 1: mov r0,fi 1: mov fi,r0 sys read; buf; 512. mov r0,0f beq 1f mov fo,r0 sys write; buf; 0:.. br 1b 1: mov fi,r0 sys close mov fo,r0 sys close jmp unloop mesg: movb (r5)+,ch beq 1f mov $1,r0 sys write; ch; 1 br mesg 1: inc r5 bic $1,r5 mov r4,r1 1: movb (r1)+,ch beq 1f mov $1,r0 sys write; ch; 1 br 1b 1: mov $1,r0 sys write; qnl; 1 rts r5 s.tmp: qnl: <\n> .even magic: 407 magic1: 410 .bss fi: .=.+2 fo: .=.+2 argc: .=.+2 buf: .=.+512. ch: .=.+2 Â...mail.cmesg.smkdir.smkfs.cmknod.c mount.c!msh.s"mv.c#nice.c$nm.c%nohup.c&od.c'passwd.s(pfe.s)pr.c*prof.c+ps.c,pwd.c-restor.c.rew.s/rm.c0rmdir.s1sa.c2sh.c3size.c4sleep.c5sort.c6split.c7strip.s8stty.cchar *arg; int mode[3]; main(argc, argv) char *argv[]; { int i; gtty(1,mode); while(--argc > 0) { arg = *++argv; if(eq("even")) set(0200); if(eq("-even")) reset(0200); if(eq("odd")) set(0100); if(eq("-odd")) reset(0100); if(eq("raw")) set(040); if(eq("-raw") || eq("cooked")) reset(040); if(eq("-nl")) set(020); if(eq("nl")) reset(020); if(eq("echo")) set(010); if(eq("-echo")) reset(010); if(eq("lcase")) set(04); if(eq("-lcase")) reset(04); if(eq("-tabs")) set(02); if(eq("tabs")) reset(02); if(eq("-delay")) set(01); if(eq("delay")) reset(01); if(eq("tdelay")) reset(010000); if(eq("-tdelay")) set(010000); if(arg) printf("unknown mode: %s\n", arg); } stty(1,mode); } eq(string) char *string; { int i; if(!arg) return(0); i = 0; loop: if(arg[i] != string[i]) return(0); if(arg[i++] != '\0') goto loop; arg = 0; return(1); } set(b) { mode[2] =| b; } reset(b) { mode[2] =& ~b; } /* su -- become super-user */ char password[100]; char pwbuf[100]; int ttybuf[3]; main() { register char *p, *q; extern fin; if(getpw(0, pwbuf)) goto badpw; (&fin)[1] = 0; p = pwbuf; while(*p != ':') if(*p++ == '\0') goto badpw; if(*++p == ':') goto ok; gtty(0, ttybuf); ttybuf[2] =& ~010; stty(0, ttybuf); printf("password: "); q = password; while((*q = getchar()) != '\n') if(*q++ == '\0') return; *q = '\0'; ttybuf[2] =| 010; stty(0, ttybuf); printf("\n"); q = crypt(password); while(*q++ == *p++); if(*--q == '\0' && *--p == ':') goto ok; goto error; badpw: printf("bad password file\n"); ok: setuid(0); execl("/bin/sh", "-", 0); printf("cannot execute shell\n"); error: printf("sorry\n"); } / sum -- check sum file mov (sp)+,r3 tst (sp)+ loop: dec r3 bgt 1f sys exit 1: mov (sp)+,0f sys open; 0:..; 0 bec 3f mov $1,r0 sys write; 1f; 2f-1f br loop 1: 2: .even 3: mov r0,r1 clr r5 1: mov r1,r0 sys read; buf; 512. bes err tst r0 beq print inc bcnt mov $buf,r2 2: movb (r2)+,r4 add r4,r5 adc r5 sob r0,2b br 1b err: mov $1,r0 sys write; 1f; 2 print: jsr pc,decml mov $1,r0 sys write; bl; 1 mov bcnt,r5 jsr pc,decml mov $1,r0 sys write; nl; 1 mov r1,r0 sys close br loop 1: nl: <\n> bl: < > .even decml: mov r0,-(sp) mov r1,-(sp) mov r5,r1 jsr pc,1f mov (sp)+,r1 mov (sp)+,r0 rts pc 1: clr r0 dvd $10.,r0 mov r1,-(sp) mov r0,r1 beq 1f jsr pc,1b 1: mov (sp)+,ch add $'0,ch mov $1,r0 sys write; ch; 1 rts pc .bss ch: .=.+2 bcnt: .=.+2 buf: .=.+512. main() { sync(); } int open[9] { 1 }; int n 1; int t 0; char in[512]; char out[512]; main(argc,argv) char **argv; { int register r,w,p; struct { int x1[2], type, x2[15]; } buf; fstat(1,&buf); t = (buf.type&060000)==020000; while(argc-->1) { open[n++] = creat(argv[1],0666); if(stat(argv[1],&buf)>=0) if((buf.type&060000)==020000) t++; argv++; } r = w = 0; for(;;) { for(p=0;p<512;) { if(r>=w) { if(t>0&&p>0) break; w = read(0,in,512); r = 0; if(w<=0) { stash(p); return; } } out[p++] = in[r++]; } stash(p); } } stash(p) { int k; int i; int d; d = t ? 10 : p; for(i=0; i; .even mov $ltbuf,r2 jsr r5,ptime jsr r5,mesg; ; .even jsr r5,ptime jsr r5,mesg; ; .even jsr r5,ptime sys exit execarg: sys fork br newproc bec 2f jsr r5,mesg; ; .even sys exit 2: mov r0,r2 sys signal; 2; 1 2: sys wait cmp r0,r2 bne 2b bit $377,r1 beq 1f jsr r5,mesg; ; .even clr r0 sys seek; 0; 2 1: rts pc newproc: tst (sp)+ mov (sp)+,r0 tst (sp)+ mov $ibuf,r1 mov $end,r2 1: mov (sp)+,r3 mov r2,(r1)+ 2: movb (r3)+,(r2)+ bne 2b dec r0 cmp r0,$1 bgt 1b clr (r1)+ sys exec; end; ibuf mov $end-10.,r0 mov $"x/,(r0)+ mov $"us,(r0)+ mov $"r/,(r0)+ mov $"bi,(r0)+ mov $"n/,(r0)+ sys exec; end-5; ibuf sys exec; end-9.; ibuf jsr r5,mesg; ; .even clr r0 sys seek; 0; 2 sys exit printd: mov $tbuf+4,r4 jsr r5,tdiv; 10. jsr r5,tdiv; 10. jsr r5,tdiv; 10. jsr r5,tdiv; 10. 1: cmpb (r4),$'0 bne 1f movb $' ,(r4)+ cmp r4,$tbuf+3 bne 1b 1: mov $2,r0 sys write; tbuf; 4 rts pc ptime: mov (r2)+,r0 mov (r2)+,r1 div $3600.,r0 mov r0,-(sp) clr r0 div $60.,r0 mov r1,clicks mov $tbuf+9.,r4 jsr r5,tdiv; 10. jsr r5,tdiv; 6. movb $':,-(r4) mov (sp)+,r0 jsr r5,tdiv; 10. jsr r5,tdiv; 6. movb $':,-(r4) jsr r5,tdiv; 10. jsr r5,tdiv; 10. jsr r5,tdiv; 10. 1: cmpb (r4),$'0 beq 2f cmpb (r4),$': bne 1f 2: movb $' ,(r4)+ cmp r4,$tbuf+8. bne 1b 1: mov $2,r0 sys write; tbuf; 9. jsr r5,mesg; <.\0>; .even mov clicks,r1 clr r0 div $6,r0 add $'0,r0 mov r0,ch mov $2,r0 sys write; ch; 1 jsr r5,mesg; <\n\0>; .even rts r5 tdiv: mov r1,-(sp) mov r0,r1 clr r0 div (r5)+,r0 add $'0,r1 movb r1,-(r4) mov (sp)+,r1 rts r5 mesg: movb (r5)+,ch beq 2f mov $2,r0 sys write; ch; 1 br mesg 2: inc r5 bic $1,r5 rts r5 ch: .=.+1 .even .bss clicks: .=.+2 ibuf: .=.+50. tbuf: .=.+10. ltbuf: .=.+16. end: .=.+1000. / tap1 -- dec-disk lod/dmp .globl _localtime, _end namep = 0 mode = 2 uid = 4; gid = 5 size0 = 7 size1 = 8 time0 = 10. time1 = 12. tapea = 14. dirsiz = 16. mdirent = 496. mov (sp),rnarg mov (sp)+,narg mov $cmr,command incb flu tst (sp)+ cmp narg,$2 bge 1f mov $2,narg br 3f 1: mov (sp)+,r0 mov sp,parg 1: movb (r0)+,r1 beq 3f mov $swtab,r2 2: cmp r1,(r2)+ beq 2f tst (r2)+ bne 2b br useerr 2: jsr pc,*(r2)+ br 1b 3: jsr pc,optap mov $_end,r4 / string pointer jsr pc,setb jmp *command optap: tstb flm bne 2f mov $578.,tapsiz mov $192.,ndirent sys open; tc; 2 br 3f 2: mov $-1,tapsiz mov $mdirent,ndirent cmp command,$cmr beq 2f sys open; mt; 0 br 3f 2: sys open; mt; 1 3: bes 1f mov r0,fio mov ndirent,r1 ash $-3,r1 mov r1,ndentd8 mov ndirent,r1 mul $dirsiz,r1 add $dir,r1 mov r1,edir rts pc 1: jsr r5,mesg ; .even jmp done setcom: cmp command,$cmr bne useerr mov (r5)+,command rts r5 noflag: mov (r5)+,r0 beq 1f tstb (r0) beq noflag br useerr 1: rts r5 useerr: jsr r5,mesg ; .even jmp done swtab: '0; dcof '1; dcof '2; dcof '3; dcof '4; dcof '5; dcof '6; dcof '7; dcof 'c; dcc 'd; dcd 'f; dcf 'i; dci 'm; dcm 'r; dcr 't; dct 'u; dcu 'v; dcv 'w; dcw 'x; dcx 0; 0 dcof: movb r1,tcx movb r1,mtx rts pc dcc: incb flc rts pc dcf: incb flf rts pc dcd: jsr r5,setcom; cmd rts pc dci: incb fli rts pc dcm: incb flm rts pc dcu: incb flu jsr r5,setcom; cmr rts pc dcr: clrb flu jsr r5,setcom; cmr rts pc dct: jsr r5,setcom; cmt rts pc dcv: incb flv rts pc dcw: incb flw rts pc dcx: jsr r5,setcom; cmx rts pc cmd: jsr r5,noflag; flm; flc; flf; 0 cmp narg,$2 bgt 1f jmp useerr 1: jsr pc,rddir jsr r5,gettape; delete jsr pc,wrdir br check cmr: jsr r5,noflag; 0 tstb flc bne 1f tstb flm bne 1f jsr pc,rddir br 2f 1: jsr pc,clrdir 2: jsr pc,getfiles jsr pc,update br check cmt: jsr r5,noflag; flc; flf; flw; 0 jsr pc,rddir tstb flv beq 1f jsr r5,mesg < mode uid gid tapa size date time name\n\0>; .even 1: jsr r5,gettape; taboc br check1 cmx: jsr r5,noflag; flc; flf; 0 jsr pc,rddir jsr r5,gettape; xtract br done check: check1: jsr pc,usage done: jsr r5,mesg ; .even sys exit encode: mov r2,-(sp) mov r4,(r1) mov (r5)+,r2 1: movb (r2),(r4)+ jsr pc,setb tstb (r2)+ bne 1b mov (sp)+,r2 rts r5 decode: mov r2,-(sp) mov r1,-(sp) mov (r1),r1 mov (r5)+,r2 1: movb (r1)+,(r2)+ bne 1b mov (sp)+,r1 mov (sp)+,r2 rts r5 setb: mov r0,-(sp) mov r4,r0 add $513.,r0 cmp r0,sp bhis 2f bic $777,r0 cmp r0,0f beq 1f mov r0,0f sys break; 0:.. bes 2f 1: mov (sp)+,r0 rts pc 2: jsr r5,mesg ; .even jmp done / tap2 -- dec-tape lod/dmp pstr: movb (r1)+,r0 beq 1f jsr pc,putc br pstr 1: rts pc mesg: movb (r5)+,r0 beq 1f jsr pc,putc br mesg 1: inc r5 bic $1,r5 rts r5 putc: movb r0,ch mov $1,r0 sys write; ch; 1 rts pc getc: clr r0 sys read; ch; 1 movb ch,r0 rts pc clrdir: mov $dir,r1 mov ndirent,r2 1: jsr pc,clrent sob r2,1b rts pc clrent: mov r1,-(sp) add $dirsiz,(sp) 1: clr (r1)+ cmp r1,(sp) blo 1b tst (sp)+ rts pc rddir: clr sum jsr pc,clrdir clr r0 jsr pc,rseek jsr pc,tread mov tapeb+510.,r0 beq 1f tstb flm beq 1f mov r0,ndirent 1: mov $dir,r1 mov ndirent,r2 1: bit $7,r2 bne 2f jsr pc,tread mov $tapeb,r3 2: mov r1,-(sp) mov r3,-(sp) mov $32.,r0 clr -(sp) 2: add (r3)+,(sp) sob r0,2b bis (sp),sum tst (sp)+ bne 2f mov (sp),r3 tst (r3) beq 2f mov r3,0f jsr pc,9f .data 9: jsr r5,encode; 0:.. rts pc .text add $32.,r3 mov r1,-(sp) add $dirsiz,(sp) tst (r1)+ / namep 9: mov (r3)+,(r1)+ cmp r1,(sp) blo 9b tst (sp)+ 2: mov (sp)+,r3 add $64.,r3 mov (sp)+,r1 bic $100000,mode(r1) add $dirsiz,r1 sob r2,1b tst sum beq 1f jsr r5,mesg ; .even tstb fli bne 1f jmp done 1: jsr pc,bitmap rts pc wrdir: clr r0 jsr pc,wseek tstb flm bne 1f sys open; tboot; 0 bes 3f br 2f 1: sys open; mboot; 0 bes 3f 2: mov r0,r1 sys read; tapeb; 512. mov r1,r0 sys close mov ndirent,tapeb+510. 3: jsr pc,twrite mov $dir,r1 mov ndirent,r2 1: bit $7,r2 bne 2f mov $256.,r0 mov $tapeb,r3 3: clr (r3)+ sob r0,3b mov $tapeb,r3 2: mov r3,-(sp) tst (r1) beq 2f mov r3,0f jsr pc,9f .data 9: jsr r5,decode; 0:.. rts pc .text 2: add $32.,r3 mov r1,-(sp) add $dirsiz,(sp) tst (r1)+ 9: mov (r1)+,(r3)+ cmp r1,(sp) blo 9b tst (sp)+ mov (sp)+,r3 clr -(sp) mov $31.,r0 2: sub (r3)+,(sp) sob r0,2b mov (sp)+,(r3)+ dec r2 bit $7,r2 bne 1b jsr pc,twrite tst r2 bne 1b rts pc tread: mov fio,r0 sys read; tapeb; 512. bes trderr cmp r0,$512. bne trderr 1: inc rseeka rts pc trderr: jsr r5,mesg ; .even tstb fli beq 1f mov $tapeb,r0 2: clr (r0)+ cmp r0,$tapeb+512. blo 2b br 1b 1: jmp done twrite: mov fio,r0 sys write; tapeb; 512. bes twrerr cmp r0,$512. bne twrerr inc wseeka rts pc twrerr: jsr r5,mesg ; .even jmp done rseek: mov r0,rseeka mov r0,0f mov fio,r0 sys 0; 9f .data 9: sys seek; 0:..; 3 .text bes seekerr rts pc wseek: mov r0,-(sp) sub wseeka,r0 bge 1f neg r0 1: cmp r0,$25. / longest write seek ble 1f mov (sp),0f beq 2f dec 0f 2: mov fio,r0 sys 0; 9f .data 9: sys seek; 0:..; 3 .text mov fio,r0 sys read; wseeka; 1 1: mov (sp),wseeka mov (sp)+,0f mov fio,r0 sys 0; 9f .data 9: sys seek; 0:..; 3 .text bes seekerr rts pc seekerr: jsr r5,mesg ; .even jmp done verify: movb (r5)+,0f inc r5 tstb flw bne 1f tstb flv beq 2f 1: jsr pc,9f .data 9: jsr r5,mesg 0:; .even rts pc .text mov r1,-(sp) mov $name,r1 jsr pc,pstr mov (sp)+,r1 tstb flw beq 1f jsr r5,mesg < \0> jsr pc,getc cmp r0,$'x bne 3f jsr pc,getc jmp done 3: cmp r0,$'\n beq 3f cmp r0,$'y bne 4f jsr pc,getc cmp r0,$'\n beq 2f 4: jsr pc,getc cmp r0,$'\n bne 4b br 1b 1: jsr r5,mesg <\n\0> 2: tst (r5)+ 3: rts r5 getfiles: cmp narg,$2 bne 1f mov $".\0,name jsr pc,callout 1: cmp narg,$2 ble 1f dec narg mov *parg,r1 add $2,parg mov $name,r2 2: movb (r1)+,(r2)+ bne 2b jsr pc,callout br 1b 1: rts pc expand: sys open; name; 0 bes fserr mov r0,-(sp) 1: mov (sp),r0 sys read; catlb; 16. bes fserr tst r0 beq 1f tst catlb beq 1b mov $name,r0 mov $catlb+2,r1 cmpb (r1),$'. beq 1b 2: tstb (r0)+ bne 2b dec r0 mov r0,-(sp) cmpb -1(r0),$'/ beq 2f movb $'/,(r0)+ 2: movb (r1)+,(r0)+ bne 2b jsr pc,callout clrb *(sp)+ br 1b 1: mov (sp)+,r0 sys close rts pc fserr: mov $name,r1 jsr pc,pstr jsr r5,mesg < -- Cannot open file\n\0>; .even jmp done callout: sys stat; name; statb bes fserr mov statb+4,r0 bic $!60000,r0 beq 1f cmp r0,$40000 beq expand rts pc 1: mov $dir,r1 clr -(sp) 1: tst (r1) bne 3f tst (sp) bne 2f mov r1,(sp) 2: add $dirsiz,r1 cmp r1,edir blo 1b mov (sp)+,r1 bne 4f jsr r5,mesg ; .even jmp done 4: jsr r5,verify; 'a rts pc jsr r5,encode; name br 2f 3: jsr r5,decode; name1 mov $name,r2 mov $name1,r3 3: cmpb (r2)+,(r3) bne 2b tstb (r3)+ bne 3b tst (sp)+ tstb flu beq 3f cmp time0(r1),statb+32. blo 3f bhi 1f cmp time1(r1),statb+34. bhis 1f 3: jsr r5,verify; 'r rts pc 2: mov statb+4,mode(r1) bis $100000,mode(r1) movb statb+7,uid(r1) movb statb+8,gid(r1) tstb flf beq 2f clrb statb+9. clr statb+10. 2: movb statb+9.,size0(r1) mov statb+10.,size1(r1) mov statb+32.,time0(r1) mov statb+34.,time1(r1) 1: rts pc Ô Õ Ö × Ø Ù Ú Û Ü Ý / tap3 -- dec-tape lod/dmp gettape: mov $dir,r1 clr -(sp) 1: tst (r1) beq 2f jsr r5,decode; name cmp rnarg,$2 ble 4f mov $name,r2 mov *parg,r3 3: tstb (r3) beq 3f cmpb (r2)+,(r3)+ beq 3b br 2f 3: tstb (r2) beq 4f cmpb (r2),$'/ bne 2f 4: mov r1,-(sp) jsr pc,*(r5) mov (sp)+,r1 inc (sp) 2: add $dirsiz,r1 cmp r1,edir blo 1b tst (sp)+ bne 2f cmp rnarg,$2 ble 2f mov *parg,r1 jsr pc,pstr jsr r5,mesg < not found\n\0>; .even 2: dec narg add $2,parg cmp narg,$2 bgt gettape tst (r5)+ rts r5 delete: jsr r5,verify; 'd rts pc jsr pc,clrent rts pc numb: mov r1,-(sp) mov r0,-(sp) clr r0 br 1f numbx: mov r1,-(sp) mov r0,-(sp) movb size0(r1),r0 1: mov $catlb,r2 1: mov $" ,(r2)+ cmp r2,$catlb+12. blo 1b cmp (r5),$2 bne 1f mov $"00,-2(r2) 1: mov (sp)+,r1 jsr pc,numb2 mov (r5)+,r0 sub r0,r2 mov r2,0f mov r0,0f+2 mov $1,r0 sys 0; 9f .data 9: sys write; 0:..; .. .text mov (sp)+,r1 rts r5 numb1: clr r0 numb2: div $10.,r0 mov r1,-(sp) mov r0,r1 beq 1f jsr pc,numb1 1: mov (sp)+,r0 add $'0,r0 movb r0,(r2)+ rts pc update: jsr pc,bitmap mov $dir,r1 1: tst (r1) beq 2f bit $100000,mode(r1) beq 2f tstb size0(r1) bne 9f tst size1(r1) beq 2f 9: mov ndentd8,-(sp) inc (sp) movb size0(r1),r2 mov size1(r1),r3 add $511.,r3 adc r2 ashc $-9,r2 mov r3,size 3: mov (sp),r2 mov size,r3 4: jsr pc,bitcalc inc r2 bitb (sp)+,map(r0) bne 4f sob r3,4b mov (sp)+,tapea(r1) jsr pc,setmap br 2f 4: inc (sp) br 3b 2: add $dirsiz,r1 cmp r1,edir blo 1b jsr pc,wrdir update1: mov $dir,r1 clr -(sp) mov $-1,-(sp) 1: tst (r1) beq 2f bit $100000,mode(r1) beq 2f cmp tapea(r1),(sp) bhis 2f mov tapea(r1),(sp) mov r1,2(sp) 2: add $dirsiz,r1 cmp r1,edir blo 1b tst (sp)+ mov (sp)+,r1 bne 1f rts pc 1: bic $100000,mode(r1) movb size0(r1),mss mov size1(r1),r2 bne 4f tst mss beq update1 4: jsr r5,decode; name mov tapea(r1),r0 jsr pc,wseek clr r3 sys open; name; 0 bes phserr mov r0,r3 3: tst mss bne 4f cmp r2,$512. blo 3f 4: mov r3,r0 sys read; tapeb; 512. bes phserr cmp r0,$512. bne phserr jsr pc,twrite sub $512.,r2 sbc mss br 3b 3: mov r2,0f beq 3f mov r3,r0 sys 0; 9f .data 9: sys read; tapeb; 0:.. .text bes phserr cmp r0,0b bne phserr jsr pc,twrite 3: mov r3,r0 sys read; tapeb; 512. bes phserr tst r0 bne phserr mov r3,r0 sys close 2: jmp update1 phserr: mov r1,-(sp) mov $name,r1 jsr pc,pstr jsr r5,mesg < -- Phase error\n\0>; .even mov (sp)+,r1 clr time0(r1) / time beq 2b sys close br 2b bitmap: mov $map,r0 1: clr (r0)+ cmp r0,$emap blo 1b mov $dir,r1 1: tst (r1) beq 2f bit $100000,mode(r1) bne 2f tst size1(r1) bne 3f tstb size0(r1) beq 2f 3: jsr pc,setmap 2: add $dirsiz,r1 cmp r1,edir blo 1b rts pc setmap: movb size0(r1),r2 mov size1(r1),r3 add $511.,r3 adc r2 ashc $-9.,r2 mov tapea(r1),r2 1: jsr pc,bitcalc bitb (sp),map(r0) bne maperr bisb (sp)+,map(r0) inc r2 sob r3,1b rts pc bitcalc: mov (sp),-(sp) cmp r2,tapsiz bhis maperr mov r2,r0 bic $!7,r0 mov r0,-(sp) mov $1,r0 als (sp)+,r0 mov r0,2(sp) mov r2,r0 ash $-3,r0 bic $160000,r0 rts pc maperr: jsr r5,mesg ; .even jmp done usage: jsr pc,bitmap mov $dir,r2 1: tst (r2) beq 2f inc nentr 2: add $dirsiz,r2 cmp r2,edir blo 1b mov ndentd8,r2 inc r2 mov tapsiz,r3 dec r3 sub ndentd8,r3 1: jsr pc,bitcalc bitb (sp)+,map(r0) beq 2f inc nused mov r2,lused br 3f 2: inc nfree tstb flm bne 1f 3: inc r2 sob r3,1b 1: mov nentr,r0 jsr r5,numb; 4 jsr r5,mesg < entries\n\0>; .even mov nused,r0 jsr r5,numb; 4 jsr r5,mesg < used\n\0>; .even tstb flm bne 1f mov nfree,r0 jsr r5,numb; 4 jsr r5,mesg < free\n\0>; .even 1: mov lused,r0 jsr r5,numb; 4 jsr r5,mesg < last\n\0>; .even rts pc taboc: tstb flv beq 4f mov mode(r1),r0 mov r0,-(sp) ash $-6,r0 bit $40,r0 jsr pc,pmod mov (sp),r0 ash $-3,r0 bit $200,r0 jsr pc,pmod mov (sp)+,r0 bit $1000,r0 jsr pc,pmod clr r0 bisb uid(r1),r0 jsr r5,numb; 4 clr r0 bisb gid(r1),r0 jsr r5,numb; 4 mov tapea(r1),r0 jsr r5,numb; 5 mov size1(r1),r0 jsr r5,numbx; 9. mov r1,-(sp) add $time0,(sp) jsr pc,_localtime mov r0,(sp) mov 10.(r0),r0 jsr r5,numb; 3 mov $'/,r0 jsr pc,putc mov (sp),r0 mov 8.(r0),r0 inc r0 jsr r5,numb; 2 mov $'/,r0 jsr pc,putc mov (sp),r0 mov 6(r0),r0 jsr r5,numb; 2 mov (sp),r0 mov 4(r0),r0 jsr r5,numb; 3 mov $':,r0 jsr pc,putc mov (sp)+,r0 mov 2(r0),r0 jsr r5,numb; 2 mov $' ,r0 jsr pc,putc 4: mov $name,r1 jsr pc,pstr jsr r5,mesg <\n\0> rts pc pmod: beq 1f mov $'s,-(sp) br 2f 1: bit $1,r0 beq 1f mov $'x,-(sp) br 2f 1: mov $'-,-(sp) 2: bit $2,r0 beq 1f mov $'w,-(sp) br 2f 1: mov $'-,-(sp) 2: bit $4,r0 beq 1f mov $'r,r0 br 2f 1: mov $'-,r0 2: jsr pc,putc mov (sp)+,r0 jsr pc,putc mov (sp)+,r0 jsr pc,putc rts pc xtract: movb size0(r1),mss bne 2f tst size1(r1) beq 1f 2: jsr r5,verify; 'x rts pc mov size1(r1),r3 mov tapea(r1),r0 jsr pc,rseek sys unlink; name mov mode(r1),0f sys 0; 9f .data 9: sys creat; name; 0:.. .text bes crterr mov r0,r2 2: tst mss bne 3f cmp r3,$512. blo 2f 3: jsr pc,tread mov r2,r0 sys write; tapeb; 512. bes crterr1 cmp r0,$512. bne crterr1 sub r0,r3 sbc mss br 2b 2: mov r3,0f beq 2f jsr pc,tread mov r2,r0 sys 0; 9f .data 9: sys write; tapeb; 0:.. .text bes crterr1 cmp r0,0b bne crterr1 2: mov r2,r0 sys close movb gid(r1),0f sys 0; 9f .data 9: sys chgrp; name; 0:.. .text movb uid(r1),0f sys 0; 9f .data 9: sys chown; name; 0:.. .text mov time0(r1),r0 mov r1,-(sp) mov time1(r1),r1 sys 0; 9f .data 9: sys smdate; name .text mov (sp)+,r1 1: rts pc crterr1: clr r0 mov r1,-(sp) clr r1 / sys smdate; name mov (sp)+,r1 mov r2,r0 sys close crterr: mov $name,r1 jsr pc,pstr jsr r5,mesg < -- create error\n\0>; .even rts pc ß à á â ã ä å æ ç è é ê / tap4 -- dec-tape lod/dmp .data tc: tcx: mt: mtx: <0\0> tboot: mboot: .even .bss dir: . = .+[mdirent*dirsiz] tapeb: map: .=.+4096. emap: ch: .=.+1 flc: .=.+1 flf: .=.+1 fli: .=.+1 flm: .=.+1 flu: .=.+1 flv: .=.+1 flw: .=.+1 .even command:.=.+2 sum: .=.+2 size: .=.+2 nentr: .=.+2 nused: .=.+2 nfree: .=.+2 lused: .=.+2 catlb: .=.+20. narg: .=.+2 rnarg: .=.+2 parg: .=.+2 fio: .=.+2 mss: .=.+2 ndirent:.=.+2 ndentd8:.=.+2 edir: .=.+2 rseeka: .=.+2 wseeka: .=.+2 tapsiz: .=.+2 name: .=.+32. name1: .=.+32. statb: .=.+40. chgrp = 0. / fake smdate = 30. int dflag 0; int sflag 0; int cflag 0; int save 0; char code[256]; char squeez[256]; char vect[256]; struct string { int last, max, rep; char *p; } string1, string2; int inbuf[259]; main(argc,argv) char **argv; { int i, j; int c, d; char *compl; extern fout; string1.last = string2.last = 0; string1.max = string2.max = 0; string1.rep = string2.rep = 0; string1.p = string2.p = ""; if(--argc>0) { argv++; if(*argv[0]=='-') { while(*++argv[0]) switch(*argv[0]) { case 'c': cflag++; continue; case 'd': dflag++; continue; case 's': sflag++; continue; } argc--; argv++; } } if(argc>0) string1.p = argv[0]; if(argc>1) string2.p = argv[1]; for(i=0; i<256; i++) code[i] = vect[i] = 0; if(cflag) { while(c = next(&string1)) vect[c&0377] = 1; j = 0; for(i=1; i<256; i++) if(vect[i]==0) vect[j++] = i; vect[j] = 0; compl = vect; } for(i=0; i<256; i++) squeez[i] = 0; for(;;){ if(cflag) c = *compl++; else c = next(&string1); if(c==0) break; d = next(&string2); if(d==0) d = c; code[c&0377] = d; squeez[d&0377] = 1; } while(d = next(&string2)) squeez[d&0377] = 1; squeez[0] = 1; for(i=0;i<256;i++) { if(code[i]==0) code[i] = i; else if(dflag) code[i] = 0; } inbuf[0] = 0; fout = dup(1); close(1); while((c=getc(inbuf)) >=0 ) { if(c == 0) continue; if(c = code[c&0377]&0377) if(!sflag || c!=save || !squeez[c&0377]) putchar(save = c); } flush(); } next(s) struct string *s; { int a, b, c, n; int base; if(--s->rep > 0) return(s->last); if(s->last < s->max) return(++s->last); if(*s->p=='[') { nextc(s); s->last = a = nextc(s); s->max = 0; switch(nextc(s)) { case '-': b = nextc(s); if(bp++!=']') goto error; s->max = b; return(a); case '*': base = (*s->p=='0')?8:10; n = 0; while((c = *s->p)>='0' && c<'0'+base) { n = base*n + c - '0'; s->p++; } if(*s->p++!=']') goto error; if(n==0) n = 1000; s->rep = n; return(a); default: error: write(1,"Bad string\n",11); exit(); } } return(nextc(s)); } nextc(s) struct string *s; { int c, i, n; c = *s->p++; if(c=='\\') { i = n = 0; while(i<3 && (c = *s->p)>='0' && c<='7') { n = n*8 + c - '0'; i++; s->p++; } if(i>0) c = n; else c = *s->p++; } if(c==0) *--s->p = 0; return(c&0377); } / tty -- get tty number .globl ttyn clr r0 jsr pc,ttyn tst r0 movb r0,nam mov $1,r0 sys write; name; 5 sys exit name: nam: .even char w2006[24]; flg 0; char realwd[26]; char *wd {&realwd[1]}; /* int etext; int rathole[1000]; */ int neng; int npr; int table[2]; int tab1[26]; int tab2[730]; char tab3[19684]; int logtab[256]; float inctab[256]; char nwd[26]; mask 0377; int tot; int wtot; char *buf[3]; file[3]; ptr[3]; char *name[4]; bsp[768]; main(argc,argv) int argc; char *argv[]; { char let,lt; auto arg,num,t,sw,i,j,k,l,m,salt,er,c; int unl(); int junk; /* monitor(&main, &etext, rathole, 1000); */ if(--argc < 1){printf("arg count\n"); exit(); } buf[0] = bsp; buf[1] = bsp + 0400; buf[2] = bsp + 01000; ptr[0] = 0; ptr[1] = 0; ptr[2] = 1; arg = 1; while(argv[arg][0] == '-') { switch(argv[arg][1]) { default: printf("Unrecognizable argument: %c\n",argv[arg][1]); exit(); case 0: case 'n': neng++; break; case '1': npr++; } arg++; if(--argc < 1) { printf("arg count\n"); exit(); } } if(!neng) { salt = open("/usr/lib/salt",0); er = read(salt,table,4); if(er != 4)err("read salt"); er = read(salt,tab1,52); if(er != 52) err("read salt"); er = read(salt,tab2,1460); if(er != 1460) err("read salt"); er = read(salt,tab3,19684); if(er != 19684)err("read salt"); close(salt); } signal(2,unl); name[0] = "/tmp/ttmpa1"; name[1] = "/tmp/ttmpa2"; name[2] = "/tmp/ttmpa3"; name[3] = "/tmp/ttmpa4"; topen: file[0] = open(name[0],1); if(file[0] > 0){ close(file[0]); j = -1; while(++j < 4)name[j][9]++; if(name[0][9] == 'z')err("creat tmp file"); goto topen; } j = 2; while(j--)file[j] = creat(name[j],0666); while(argc--){ file[2] = open(argv[arg++],0); if(file[2] < 0)err("open input file"); while((j = wdval(2)) != 0){ put(dfile(nwd[0]),nwd,j+1); k = -1; l = 0; m = 1; table[0] = incr(table[0]); while(m <= j+1){ c = 27*wd[k++] + wd[l++]; tab2[c] = incr(tab2[c]); c = 27*c + wd[m++]; tab3[c] = incr(tab3[c] & 0377); } c = 27*wd[k] + wd[l]; tab2[c] = incr(tab2[c]); } done1: close(file[2]); } /* junk = creat("junk\0",0666); write(junk,table,4+52+1460+19684); close(junk); */ j = 2; while(j--){flsh(j,0); close(file[j]); } j = 2; while(j--){ sw = fork(); if(sw == 0){execl("/bin/sort","sort","-o",name[j],name[j],0); err("sort"); } if(sw < 0)err("fork"); er = wait(); if(er != sw)err("probs"); } j = -1; while(++j < 2){ sw = fork(); if(sw == 0){execl("/bin/uniq","uniq",name[j],name[j+2]); err("uniq"); } if(sw < 0)err("fork"); er = wait(); if(er != sw)err("prob"); } file[0] = creat(name[0],0666); if(file[0] < 0)err("creat tmp"); file[1] = open("/usr/lib/w2006",0); if(file[1] < 0)err("open w2006"); ptr[1] = 1; j = -1; while((w2006[++j] = get(1)) != '\n'); lt = 1; while(++lt < 4){ file[2] = open(name[lt],0); if(file[2] < 0)err("open tmp"); ptr[2] = 1; getw: k = -1; while((wd[++k] = get(2)) != '\n')if(wd[k] == 0)goto done; scan: i = -1; l = 0; while(++i <= k){ if(wd[i] < w2006[l]){ put(0,wd,k); goto getw; } if(wd[i] > w2006[l]){ l = -1; while((w2006[++l] = get(1)) != '\n') if(w2006[l] == 0)goto fin; goto scan; } l++; } goto getw; fin: put(0,wd,k); k = -1; while((wd[++k] = get(2)) != 0){ if(wd[k] == '\n'){ put(0,wd,k); k = -1; }} done: close(file[2]); unlink(name[lt]); } flsh(0,0); close(file[1]); close(file[0]); ptr[1] = 1; file[1] = open(name[0],0); if(file[1] < 0)err("open tmp "); file[0] = creat(name[1],0666); if(file[0] < 0)err("create tmp"); while((j = wdval(1)) != 0){ wtot = 0; flg = 0; k = -1; l = 0; m = 1; while(m <= j+1){ tot = 0; c = wd[k++]*27 + wd[l++]; digram(c); digram(wd[k]*27 + wd[l]); tot =>> 1; c = c*27 + wd[m++]; trigram(c); if(tot > wtot) wtot = tot; } if(wtot < 0) wtot = 0; t = conf(wtot,3,wd); wd[3] = ' '; put(0,wd,3); put(0,nwd,j+1); } flsh(0,0); close(file[1]); close(file[0]); /* monitor(0); goto unl; */ sw = fork(); if(sw == 0){execl("/bin/sort","sort","-r","-o",name[1],name[1] ,0); err("sort"); } if(sw < 0)err("fork"); er = wait(); if(er != sw)err("prob"); sw = fork(); if(sw == 0){ if(npr) { execl("/bin/cat","cat",name[1],0); } else { execl("/bin/pr","pr","-3", "-h", "Possible typo's and spelling errors",name[1],0); err("pr"); } } if(sw < 0)err("fork"); er = wait(); if(er != sw)err("prob"); unl(); } unl() { int j; j = 2; while(j--)unlink(name[j]); exit(); } trigram(c) int c; { int t; t = logtab[tab3[c]&0377]; tot =- t; return; } digram(c) int c; { int t; t = logtab[tab2[c]]; tot =+ t; return; } dfile(c) char c; { if(c >= 'a' && c <= 'k')return(0); return(1); } err(c) char c[];{ auto j; printf("cannot %s\n",c); j = 4; while(j--)unlink(name[j]); exit(); } get(ifile) int ifile;{ static char *ibuf[10]; if(--ptr[ifile]){ return(*ibuf[ifile]++);} if(ptr[ifile] = read(file[ifile],buf[ifile],512)){ if(ptr[ifile] < 0)goto prob; ibuf[ifile] = buf[ifile]; return(*ibuf[ifile]++); } ptr[ifile] = 1; return(0); prob: ptr[ifile] = 1; printf("read error\n"); return(0); } put(ofile,s,optr) char s[]; {auto i; while(optr-- >= 0) buf[ofile][(ptr[ofile] < 512)?ptr[ofile]++:flsh(ofile,1)] = *s++; return; } flsh(ofile,i){auto error; error = write(file[ofile],buf[ofile],ptr[ofile]); if(error < 0)goto prob; ptr[ofile] = i; return(0); prob: printf("write error on t.%d\n",file); exit(); } wdval(wfile) int wfile; { static let,wflg; auto j; beg: j = -1; if(wflg == 1){wflg = 0; goto st; } while((let = get(wfile)) != '\n'){ if(let == 0)return(0); st: if(let == '%' && j != -1)goto cont; if(let == '-'){ if((let = get(wfile)) == '\n'){ while((let = get(wfile)) == '\n'); goto st; } wflg = 1; goto ret; } if(let == 047){if(j < 1)goto ret; goto cont; } if(let < 'A')goto ret; if(let <= 'Z'){ wd[++j] = let - 0100; nwd[j] = let + ' '; goto cont; } if(let < 'a' || let > 'z')goto ret; wd[++j] = let - 0140; nwd[j] = let; cont: ; } while(((let = get(wfile)) == '.') || (let == 047)){ while((let = get(wfile)) != '\n'); } wflg = 1; ret: if(j < 1)goto beg; nwd[j+1] = '\n'; wd[j+1] = 0; return(j); } conf(n,width,cbuf) char cbuf[]; { auto i,a; i = width; while(i--)cbuf[i] = ' '; cbuf[(a = n/10)?conf(a,--width,cbuf):--width] = n%10 + '0'; return(++width); } incr(gork) int gork; { float log(), exp(), pow(); int static first; int ii; if(first == 0){ inctab[0] = 1; logtab[0] = -10; for(ii=1; ii<256; ii++){ inctab[ii] = exp(-ii/30.497); logtab[ii] = log(30.*pow(1.0333,ii+0.) - 30.) + .5; } logtab[1] = -10; first = 1; } if(inctab[gork] > rand()/32768.) gork++; if(gork > 255) gork = 255; return(gork); } ô õ ö ÷ ø ù ú û ü ý þ ÿ #define NMOUNT 16 #define NAMSIZ 32 struct mtab { char file[NAMSIZ]; char spec[NAMSIZ]; } mtab[NMOUNT]; main(argc, argv) char **argv; { register struct mtab *mp; register char *p1, *p2; int mf; mf = open("/etc/mtab", 0); read(mf, mtab, NMOUNT*2*NAMSIZ); if(argc != 2) { printf("arg count\n"); return; } if (umount(argv[1]) < 0) { perror("umount"); return; } p1 = argv[1]; while(*p1++) ; p1--; while(*--p1 == '/') *p1 = '\0'; while(p1 > argv[1] && *--p1 != '/') ; if(*p1 == '/') p1++; argv[1] = p1; for (mp = mtab; mp < &mtab[NMOUNT]; mp++) { p1 = argv[1]; p2 = &mp->spec[0]; while (*p1++ == *p2) if (*p2++ == 0) { for (p1 = mp->file; p1 < &mp->file[NAMSIZ*2];) *p1++ = 0; mp = &mtab[NMOUNT]; while ((--mp)->file[0] == 0); mf = creat("/etc/mtab", 0644); write(mf, mtab, (mp-mtab+1)*2*NAMSIZ); return; } } printf("%s not in mount table\n", argv[1]); } fields 0; letters 0; linec; mode; uniq; main(argc, argv) int argc; char *argv[]; { extern fin, fout; int f; static char b1[1000], b2[1000]; loop: if(argc > 1) { if(*argv[1] == '-') { if(argv[1][1] <= '9') fields = conv(&argv[1][1]); else mode = argv[1][1]; argc--; argv++; goto loop; } if(*argv[1] == '+') { letters = conv(&argv[1][1]); argc--; argv++; goto loop; } f = open(argv[1], 0); if(f < 0) { printf("cannot open %s\n", argv[1]); exit(); } fin = f; } else fin = dup(0); if(argc > 2) { f = creat(argv[2], 0666); if(f < 0) { printf("cannot create %s\n", argv[2]); exit(); } fout = f; } else fout = dup(1); close(0); close(1); gline(b1); l1: linec++; if(gline(b2)) { pline(b1); flush(); exit(); } if(equal(b1, b2)) goto l1; pline(b1); linec = 0; l2: linec++; if(gline(b1)) { pline(b2); flush(); exit(); } if(equal(b1, b2)) goto l2; pline(b2); linec = 0; goto l1; } gline(buf) char buf[]; { int c; while((c = getchar()) != '\n') { if(c == '\0') return(1); *buf++ = c; } *buf = 0; return(0); } pline(buf) char buf[]; { int c; switch(mode) { case 'u': if(uniq) {; uniq = 0; return; } break; case 'd': if(uniq) break; return; case 'c': printf("%4d ", linec); } uniq = 0; while((c = *buf++) != 0) putchar(c); putchar('\n'); } equal(b1, b2) char b1[], b2[]; { int c; b1 = skip(b1); b2 = skip(b2); while((c = *b1++) != 0) if(c != *b2++) return(0); if(*b2 != 0) return(0); uniq++; return(1); } char * skip(s) char *s; { int nf, nl; nf = nl = 0; while(nf++ < fields) { while(*s==' ' || *s=='\t') s++; while( !(*s==' ' || *s=='\t') ) if(*s == 0) return(s); else s++; } while(nl++ < letters) if(*s == 0) return(s); else s++; return(s); } conv(s) char *s; { int d, n; n = 0; for(;;) { d = *s++ - '0'; if(0>d || d>9) break; n = n*10 + d; } return(n); } sys fork br 1f sys exit 1: sys sync mov $30.,r0 sys sleep br 1b sleep = 35. sync = 36. #define NUL 1 #define SPC 2 #define PUN 4 #define ALP 8 #define NEW 16 int linect[2]; int alphct[2]; int punct[2]; int wordct[2]; int ctlct[2]; int roffflg 0; int codeflg 0; char *code "-lw"; char class[128] { NUL,NUL,NUL,NUL,NUL,NUL,NUL,NUL, NUL,SPC,NEW,NUL,NUL,NUL,NUL,NUL, NUL,NUL,NUL,NUL,NUL,NUL,NUL,NUL, NUL,NUL,NUL,NUL,NUL,NUL,NUL,NUL, SPC,PUN,PUN,PUN,PUN,PUN,PUN,PUN, PUN,PUN,PUN,PUN,PUN,PUN,PUN,PUN, ALP,ALP,ALP,ALP,ALP,ALP,ALP,ALP, ALP,ALP,PUN,PUN,PUN,PUN,PUN,PUN, PUN,ALP,ALP,ALP,ALP,ALP,ALP,ALP, ALP,ALP,ALP,ALP,ALP,ALP,ALP,ALP, ALP,ALP,ALP,ALP,ALP,ALP,ALP,ALP, ALP,ALP,ALP,PUN,PUN,PUN,PUN,ALP, PUN,ALP,ALP,ALP,ALP,ALP,ALP,ALP, ALP,ALP,ALP,ALP,ALP,ALP,ALP,ALP, ALP,ALP,ALP,ALP,ALP,ALP,ALP,ALP, ALP,ALP,ALP,PUN,PUN,PUN,PUN,NUL }; char buf[518]; main(argc,argv) char **argv; { int i, j; register int c; if(--argc>=1 & **++argv=='-') { /* `&' is intentional */ for(i=1;c=argv[0][i];i++) if(c=='r') roffflg = 1; else codeflg = 1; if(codeflg) code = argv[0]; argc--; argv++; } i = 0; do { if(argc<=0) buf[0] = 0; else if(fopen(argv[i],buf)<0) { printf("%s: cannot open\n", argv[i]); continue; } count(); for(j=1;code[j];j++) { switch(code[j]) { case 'l': putd(linect); break; case 'a': putd(alphct); break; case 'p': putd(punct); break; case 'w': putd(wordct); break; case 'c': putd(ctlct); break; } } printf("%s\n", argc<=0?"":argv[i]); } while(++i=0) { c =& 0177; if(newline) { if(roffflg&&(c=='.'||c=='\'')) { inc(ctlct); while(((c=getc(buf)>=0))&&c!='\n'); continue; } else { newline = 0; inc(linect); } } if(c<0) continue; c = class[c]; if(c&NUL) continue; if(c&(ALP|PUN)) { if(token==c) continue; if(token==0) inc(wordct); token = c; if(c&ALP) inc(alphct); else inc(punct); continue; } if(c&(SPC|NEW)) { token = 0; if(c&NEW) newline = 1; } } } clear(ct) int ct[2]; { ct[0] = ct[1] = 0; } inc(ct) int ct[2]; { ct[0]++; if(ct[0]==0) ct[1]++; } putd(ct) int ct[2]; { printf("%7s ",locv(ct[1],ct[0])); } /* * who */ int fout; int buf[256]; main(argc, argv) char **argv; { char *s, *cbuf; int n, fi, i; struct { char name[8]; char tty; char pad1; int time[2]; char pad2[2]; } *p; s = "/tmp/utmp"; if(argc > 1) s = argv[1]; fi = open(s, 0); if(fi < 0) { write("cannot open wtmp\n", 17); exit(); } fout = dup(1); close(1); loop: n = read(fi, buf, 512); if(n == 0) { flush(); exit(); } p = &buf; for(p = &buf; (n=-16)>=0; p++) { if(p->name[0] == '\0' && argc==1) continue; for(i=0; i<8; i++) { if(p->name[i] == '\0') p->name[i] = ' '; putchar(p->name[i]); } for(i=0; i<3; i++) putchar("tty"[i]); putchar(p->tty); cbuf = ctime(p->time); for(i=3; i<16; i++) putchar(cbuf[i]); putchar('\n'); } goto loop; } / write -- write to another user .globl ttyn cmp (sp)+,$2 beq 1f bgt 2f mov $1,r0 sys write; argm; eargm-argm sys exit 2: movb *4(sp),ltty 1: tst (sp)+ mov (sp)+,r5 sys open; utmp; 0 bec 1f mov $1,r0 sys write; film; efilm-film sys exit 1: mov r0,ufil 1: mov ufil,r0 sys read; ubuf; 16. tst r0 bne 2f jmp 8f 2: tstb ltty beq 2f cmpb ltty,8.+ubuf bne 1b 2: mov $ubuf,r3 mov r5,r4 mov $9.,r2 2: dec r2 beq 2f cmpb (r4)+,(r3)+ beq 2b tstb -1(r4) bne 1b cmpb $' ,-1(r3) bne 1b 2: movb 8.+ubuf,ttyno sys open; ttyx; 1 bes 3f sys stat; ttyx; statbuf bes 3f bit $2,statbuf+4 bne 2f 3: mov $1,r0 sys write; dnymes; ednymes-dnymes sys exit 2: mov r0,ttyf clr r0 jsr pc,ttyn mov r0,r3 mov statbuf,r4 mov ufil,r0 sys seek; 0; 0 1: mov ufil,r0 sys read; ubuf; 16. tst r0 beq unknown cmp r3,ubuf+8. bne 1b mov $ubuf,r0 mov $8.,r1 1: cmpb $' ,(r0)+ beq 1f dec r1 bne 1b 1: neg r1 add $8,r1 mov r1,0f 6: mov ttyf,r0 sys write; mesg; emesg-mesg mov ttyf,r0 sys 0; 5f .data 5: sys write; ubuf; 0:2 .text mov ttyf,r0 sys write; qnl; 4 sys signal; 2; 9f 7: clr r0 sys read; ch; 1 tst r0 beq 9f tst nlflg beq 1f cmp ch,$'! bne 1f sys fork br mshproc sys wait mov $1,r0 sys write; excl; 2 br 7b 1: clr nlflg cmp ch,$'\n bne 1f inc nlflg 1: mov ttyf,r0 sys write; ch; 1 br 7b 8: movb (r5)+,ch beq 8f mov $1,r0 sys write; ch; 1 br 8b 8: tstb ltty beq 8f mov $1,r0 sys write; ltty-1; 2 8: mov $1,r0 sys write; errmsg; eerrmsg-errmsg sys exit 9: mov ttyf,r0 sys write; endmsg; eendmsg-endmsg sys exit unknown: mov $"??,ubuf br 6b mshproc: sys exec; msh; mshp sys exit .data nlflg: 1 .text mshp: msh 0 msh: argm: eargm: film: efilm: .data < > / is ltty -1 ltty: .=.+1 .text excl: qnl: <...\n> .data ttyx: ttyno = .-2 .text utmp: endmsg: eendmsg: errmsg: < not logged in.\n> eerrmsg: mesg: <\nMessage from > emesg: dnymes: ednymes: .even .bss ttyf: .=.+2 ubuf: .=.+16. statbuf:.=.+40. ch: .=.+2 ufil: .=.+2 signal = 48. 9su.c:sum.s;sync.c<tee.c=time.s>tp1.s?tp2.s@tp3.sAtp4.sBtr.cCtty.sDtypo.cEumount.cFuniq.cGupdate.sHwc.cIwho.cJwrite.sldfps = 170100^tst stfps = 170200^tst / .globl atan .globl atan2 / / floating-point arctangent / / atan replaces the value in fr0 by its arctangent / in the range [-pi/2,pi/2]. / / atan2 places in fr0 the arctangent of fr0/fr1 / in the range [-pi,pi]. / / there are no error exits / / coefficients are #5076 from Hart & Cheney. / / atan: jsr r0,save tstf fr0 cfcc blt 1f jsr r5,satan br ret 1: negf fr0 jsr r5,satan negf fr0 br ret / atan2: jsr r0,save clr -(sp) tstf fr0 cfcc bge 1f inc (sp) negf fr0 1: tstf fr1 cfcc beq 2f bgt 1f add $2,(sp) negf fr1 1: divf fr1,fr0 jsr r5,satan br 1f 2: movf pi2,fr0 1: bit $2,(sp) beq 1f negf fr0 addf pi2,fr0 addf pi2,fr0 1: bit $1,(sp)+ beq 1f negf fr0 1: ret: ldfps (sp)+ movf (sp)+,fr3 movf (sp)+,fr2 movf (sp)+,fr1 mov (sp)+,r0 rts r5 save: movf fr1,-(sp) movf fr2,-(sp) movf fr3,-(sp) stfps -(sp) ldfps $40200 / DP, no interrupt jmp (r0) satan: cmpf sq2m1,fr0 cfcc bge arctan cmpf sq2p1,fr0 cfcc bgt 1f movf one,fr1 divf fr0,fr1 movf fr1,fr0 jsr r5,arctan negf fr0 addf pi2,fr0 rts r5 1: movf fr0,fr1 subf one,fr0 addf one,fr1 divf fr1,fr0 jsr r5,arctan addf pi4,fr0 rts r5 arctan: mov $p4p,r0 mov $4,-(sp) movf fr0,fr3 mulf fr3,fr3 movf *(r0)+,fr1 1: mulf fr3,fr1 addf *(r0)+,fr1 dec (sp) bne 1b mov $4,(sp) movf fr3,fr2 br 2f 1: mulf fr3,fr2 2: addf *(r0)+,fr2 dec (sp) bne 1b tst (sp)+ divf fr2,fr1 mulf fr1,fr0 rts r5 / p4p: p4;p3;p2;p1;p0 q3;q2;q1;p0 one: 40200;0;0;0 pi2: 40311;7732;121041;64302 pi4: 40111;7732;121041;64302 sq2p1: 40432 101171 114774 167461 sq2m1: 37724 11714 147747 74621 p4: 37442 145026 75504 15621 p3: 40725 21566 115517 50305 p2: 41443 160206 172714 25441 p1: 41632 172223 76027 56645 p0: 41462 25125 6152 126064 q3: 41170 10112 141724 64324 q2: 41573 53776 25372 71522 q1: 41670 123114 51576 75020 / one = 1.00000 00000 00000 00000 d0 / sq2p1=2.41421 35623 73095 04880 d0 / sq2m1= .41421 35623 73095 04880 d0 / pi2 = 1.57079 63267 94896 61923 d0 / p4 = .15897 40288 48230 7048 d0 / p3 = .66605 79017 00926 2658 d1 / p2 = .40969 26483 21022 5637 d2 / p1 = .77477 68771 92042 0862 d2 / p0 = .44541 34005 92906 8032 d2 / q4 = .10000 00000 00000 0000 d1 / q3 = .15503 97755 14219 8753 d2 / q2 = .62835 93051 10323 7683 d2 / q1 = .92324 80107 23009 7484 d2 / q0 = .44541 34005 92906 8044 d2 ldfps = 170100^tst stfps = 170200^tst / .globl atof .globl atoi / / atof - ascii to floating (input) conversion / uses klt's ghastly calling convention / result is returned in fr0 / / atof: stfps -(sp) ldfps $200 movf fr1,-(sp) mov r1,-(sp) mov r2,-(sp) / clr -(sp) clrf fr0 clr r2 jsr r5,*(r5) cmpb r0,$'- bne 2f inc (sp) 1: jsr r5,*(r5) 2: sub $'0,r0 cmp r0,$9. bhi 2f jsr pc,digit br 1b inc r2 br 1b 2: cmpb r0,$'.-'0 bne 2f 1: jsr r5,*(r5) sub $'0,r0 cmp r0,$9. bhi 2f jsr pc,digit dec r2 br 1b 2: cmpb r0,$'e-'0 bne 1f mov (r5),0f jsr r5,atoi; 0:.. sub $'0,r0 add r1,r2 1: movf $one,fr1 mov r2,-(sp) beq 2f bgt 1f neg r2 1: cmp r2,$38. blos 1f clrf fr0 tst (sp)+ bmi out movf $huge,fr0 br out 1: mulf $ten,fr1 sob r2,1b 2: tst (sp)+ bge 1f divf fr1,fr0 br 2f 1: mulf fr1,fr0 cfcc bvc 2f movf $huge,fr0 2: out: tst (sp)+ beq 1f negf fr0 1: add $'0,r0 mov (sp)+,r2 mov (sp)+,r1 movf (sp)+,fr1 ldfps (sp)+ tst (r5)+ rts r5 / / digit: cmpf $big,fr0 cfcc blt 1f mulf $ten,fr0 movif r0,fr1 addf fr1,fr0 rts pc 1: add $2,(sp) rts pc / / one = 40200 ten = 41040 big = 56200 huge = 77777 / atoi / ascii to integer input conversion / jsr r5,atoi; getc .globl atoi atoi: clr r1 jsr r5,*(r5) clr -(sp) cmp r0,$'- bne 2f inc (sp) 1: jsr r5,*(r5) 2: sub $'0,r0 cmp r0,$9 bhi 1f mpy $10.,r1 add r0,r1 br 1b 1: add $'0,r0 tst (sp)+ beq 1f neg r1 1: tst (r5)+ rts r5 / default comparison routine for qsort / set codes for / / cmp (r0),(r4) / .globl compare compare: mov r3,-(sp) mov r4,-(sp) 1: cmpb (r0)+,(r4)+ bne 1f dec r3 bne 1b clr r0 br 2f 1: blo 1f mov $1,r0 br 2f 1: mov $-1,r0 2: mov (sp)+,r4 mov (sp)+,r3 tst r0 rts pc / crypt -- password incoding / mov $key,r0 / jsr pc,crypt .globl crypt, word crypt: mov r1,-(sp) mov r2,-(sp) mov r3,-(sp) mov r4,-(sp) mov r5,-(sp) mov r0,r1 mov $key,r0 movb $004,(r0)+ movb $034,(r0)+ 1: cmp r0,$key+64. bhis 1f movb (r1)+,(r0)+ bne 1b 1: dec r0 / / / fill out key space with clever junk / mov $key,r1 1: movb -1(r0),r2 movb (r1)+,r3 xor r3,r2 movb r2,(r0)+ cmp r0,$key+128. blo 1b / / / establish wheel codes and cage codes / mov $wheelcode,r4 mov $cagecode,r5 mov $256.,-(sp) 2: clr r2 clr (r4) mov $wheeldiv,r3 3: clr r0 mov (sp),r1 div (r3)+,r0 add r1,r2 bic $40,r2 bis shift(r2),(r4) cmp r3,$wheeldiv+6. bhis 4f bis shift+4(r2),(r5) 4: cmp r3,$wheeldiv+10. blo 3b sub $2,(sp) tst (r4)+ tst (r5)+ cmp r4,$wheelcode+256. blo 2b tst (sp)+ / .data shift: 1;2;4;10;20;40;100;200;400;1000;2000;4000;10000;20000;40000;100000 1;2 wheeldiv: 32.; 18.; 10.; 6.; 4. .bss cagecode: .=.+256. wheelcode: .=.+256. .text / / / make the internal settings of the machine / both the lugs on the 128 cage bars and the lugs / on the 16 wheels are set from the expanded key / mov $key,r0 mov $cage,r2 mov $wheel,r3 1: movb (r0)+,r1 bic $!177,r1 asl r1 mov cagecode(r1),(r2)+ mov wheelcode(r1),(r3)+ cmp r0,$key+128. blo 1b / / / now spin the cage against the wheel to produce output. / mov $word,r4 mov $wheel+128.,r3 3: mov -(r3),r2 mov $cage,r0 clr r5 1: bit r2,(r0)+ beq 2f incb r5 2: cmp r0,$cage+256. blo 1b / / we have a piece of output from current wheel / it needs to be folded to remove lingering hopes of / inverting the function / mov r4,-(sp) clr r4 div $26.+26.+10.,r4 add $'0,r5 cmp r5,$'9 blos 1f add $'A-'9-1,r5 cmp r5,$'Z blos 1f add $'a-'Z-1,r5 1: mov (sp)+,r4 movb r5,(r4)+ cmp r4,$word+8. blo 3b / mov (sp)+,r5 mov (sp)+,r4 mov (sp)+,r3 mov (sp)+,r2 mov (sp)+,r1 mov $word,r0 rts pc .bss key: .=.+128. word: .=.+32. cage: .=.+256. wheel: .=.+256. # /* * This routine converts time as follows. * The epoch is 0000 Jan 1 1970 GMT. * The argument time is in seconds since then. * The localtime(t) entry returns a pointer to an array * containing * seconds (0-59) * minutes (0-59) * hours (0-23) * day of month (1-31) * month (0-11) * year-1970 * weekday (0-6, Sun is 0) * day of the year * daylight savings flag * * The routine corrects for daylight saving * time and will work in any time zone provided * "timezone" is adjusted to the difference between * Greenwich and local standard time (measured in seconds). * In places like Michigan "daylight" must * be initialized to 0 to prevent the conversion * to daylight time. * * "nixonflg,", if set to 1, will * cause daylight savings time all year around * independently of "daylight". * * The routine does not work * in Saudi Arabia which runs on Solar time. * * asctime(tvec)) * where tvec is produced by localtime * returns a ptr to a character string * that has the ascii time in the form * Thu Jan 01 00:00:00 1970n0\\ * 01234567890123456789012345 * 0 1 2 * * ctime(t) just calls localtime, then asctime. */ char cbuf[26]; int dmsize[12] { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; int timezone 5*60*60; int tzname[] { "EST", "EDT", }; int daylight 1; /* Allow daylight conversion */ int nixonflg 1; /* Daylight time all year around */ #define SEC 0 #define MIN 1 #define HOUR 2 #define MDAY 3 #define MON 4 #define YEAR 5 #define WDAY 6 #define YDAY 7 #define ISDAY 8 ctime(at) int *at; { return(asctime(localtime(at))); } localtime(tim) int tim[]; { register int *t, *ct, dayno; int daylbegin, daylend; int copyt[2]; t = copyt; t[0] = tim[0]; t[1] = tim[1]; dpadd(t, -timezone); ct = gmtime(t); dayno = ct[YDAY]; if (nixonflg && (ct[YEAR]>74 || ct[YEAR]==74 && (dayno > 5 || dayno==5 && ct[HOUR]>=2))) { daylight =| 1; daylbegin = -1; daylend = 367; } else { daylbegin = sunday(ct, 119); /* last Sun in Apr */ daylend = sunday(ct, 303); /* last Sun in Oct */ } if (daylight && (dayno>daylbegin || (dayno==daylbegin && ct[HOUR]>=2)) && (dayno= dysize(d1); d1++) d0 =- dysize(d1); xtime[YEAR] = d1; xtime[YDAY] = d0; /* * generate month */ if (dysize(d1)==366) dmsize[1] = 29; for(d1=0; d0 >= dmsize[d1]; d1++) d0 =- dmsize[d1]; dmsize[1] = 28; *tp++ = d0+1; *tp++ = d1; xtime[ISDAY] = 0; return(xtime); } asctime(t) int *t; { register char *cp, *ncp; register int *tp; cp = cbuf; for (ncp = "Day Mon 00 00:00:00 1900\n"; *cp++ = *ncp++;); ncp = &"SunMonTueWedThuFriSat"[3*t[6]]; cp = cbuf; *cp++ = *ncp++; *cp++ = *ncp++; *cp++ = *ncp++; cp++; tp = &t[4]; ncp = &"JanFebMarAprMayJunJulAugSepOctNovDec"[(*tp)*3]; *cp++ = *ncp++; *cp++ = *ncp++; *cp++ = *ncp++; cp = numb(cp, *--tp); cp = numb(cp, *--tp+100); cp = numb(cp, *--tp+100); cp = numb(cp, *--tp+100); cp =+ 2; cp = numb(cp, t[YEAR]); return(cbuf); } dysize(y) { if((y%4) == 0) return(366); return(365); } numb(acp, n) { register char *cp; cp = acp; cp++; if (n>=10) *cp++ = (n/10)%10 + '0'; else *cp++ = ' '; *cp++ = n%10 + '0'; return(cp); } / C library -- signed dp add .globl _dpadd _dpadd: mov r5,-(sp) mov sp,r5 mov 4(r5),r0 tst 6(r5) sxt r1 add r1,(r0)+ add 6(r5),(r0) adc -(r0) mov (sp)+,r5 rts pc ldfps = 170100^tst stfps = 170200^tst / ftoa -- basic g fp conversion .globl _ndigit .globl ecvt .globl fcvt / ecvt converts fr0 into decimal / the string of converted digits is pointed to by r0. / the number of digits are specified by _ndigit / r2 contains the decimal point / r1 contains the sign fcvt: clr eflag br 1f ecvt: mov $1,eflag 1: stfps -(sp) ldfps $200 movf fr0,-(sp) movf fr1,-(sp) mov r3,-(sp) mov $buf,r1 clr r2 clr sign tstf fr0 cfcc beq zer bgt 1f inc sign negf fr0 1: modf $one,fr0 tstf fr1 cfcc beq lss gtr: movf fr0,-(sp) movf fr1,fr0 1: mov $buftop,r3 1: modf tenth,fr0 movf fr0,fr2 movf fr1,fr0 addf $epsilon,fr2 modf $ten,fr2 movfi fr3,r0 add $'0,r0 movb r0,-(r3) inc r2 tstf fr0 cfcc bne 1b / mov $buf,r1 1: movb (r3)+,(r1)+ cmp r3,$buftop blo 1b / movf (sp)+,fr0 br pad zer: inc r2 br pad lss: dec r2 modf $ten,fr0 tstf fr1 cfcc beq lss inc r2 jsr pc,digit1 pad: jsr pc,digit br out br pad digit: cmp r1,$buftop bhis 1f add $2,(sp) modf $ten,fr0 digit1: movfi fr1,r0 add $'0,r0 movb r0,(r1)+ 1: rts pc / out: mov $buf,r0 add _ndigit,r0 tst eflag bne 1f add r2,r0 1: cmp r0,$buf blo outout movb (r0),r3 add $5,r3 movb r3,(r0) 1: cmpb (r0),$'9 ble 1f movb $'0,(r0) cmp r0,$buf blos 2f incb -(r0) br 1b 2: movb $'1,(r0) inc r2 1: outout: mov sign,r1 mov _ndigit,r0 tst eflag bne 1f add r2,r0 1: clrb buf(r0) mov $buf,r0 mov (sp)+,r3 movf (sp)+,fr1 movf (sp)+,fr0 ldfps (sp)+ rts pc epsilon = 037114 one = 40200 ten = 41040 .data tenth: 037314; 146314; 146314; 146315 _ndigit:10. .bss buf: .=.+40. buftop: sign: .=.+2 eflag: .=.+2 .text .globl exp / ldfps = 170100^tst stfps = 170200^tst ldexp = 176400^movif stexp = 175000^movfi / / exp accepts its argument and returns its result / in fr0. The carry bit is set if the result overflows. / The coefficients are #1067 from Hart & Cheney. / / movf arg,fr0 / jsr r5,exp / movf fr0,result / exp: stfps -(sp) ldfps $200 /di mode movf fr2,-(sp) movf fr1,-(sp) tstf fr0 cfcc bne 1f movf $one,fr0 /exp(0) clc br out 1: modf log2e,fr0 /exp(x) = 2^(x*log2(e)) cfcc bmi 2f movfi fr1,-(sp) /save integer part subf $half,fr0 br 3f 2: movfi fr1,-(sp) dec (sp) addf $half,fr0 3: movf fr0,fr1 / -.5 < x < +.5 mulf fr1,fr1 /arg**2 / movf P2,fr2 mulf fr1,fr2 addf P1,fr2 mulf fr1,fr2 addf P0,fr2 mulf fr2,fr0 /xP(x**2) / movf fr1,fr2 addf Q1,fr2 mulf fr1,fr2 addf Q0,fr2 /Q(x**2) / movf fr2,fr1 subf fr0,fr1 addf fr2,fr0 divf fr1,fr0 /(Q+xP)/(Q-xP) mulf sqrt2,fr0 / stexp fr0,-(sp) add (sp)+,(sp) / cmp (sp),$177 ble 2f tst (sp)+ movf big,fr0 /overflow sec br 1f 2: cmp (sp),$-177 bge 2f tst (sp)+ clrf fr0 /underflow clc br 1f 2: ldexp (sp)+,fr0 clc 1: out: movf (sp)+,fr1 movf (sp)+,fr2 ldfps (sp)+ rts r5 / / P0: 42675; 36404; 77563; 46675 P1: 41241; 116724; 114237; 60333 P2: 36675; 27102; 125560; 136652 Q0: 43210; 100661; 76072; 62453 Q1: 42151; 27450; 75350; 112503 log2e: 40270; 125073; 24534; 13761 sqrt2: 40265; 02363; 31771; 157144 half = 40000 one = 40200 / big: 77777; 177777; 177777; 177777 / / P0 = .15139 06799 05433 89158 94328 d4 / P1 = .20202 06565 12869 27227 886 d2 / P2 = .23093 34775 37502 33624 d-1 / / Q0 = .43682 11662 72755 84984 96814 d4 / Q1 = .23318 42114 27481 62379 0295 d3 / Q2 = .1 d1 / / log2e = 1.44269 50408 88963 40735 99246 / sqrt2 = 1.41421 35623 73095 04880 16887 / fakefp -- fake floating point simulator .globl fptrap fptrap: sub $2,(sp) 2 / rti / fp1 -- floating point simulator rti = 2 bpt = 3 m.ext = 200 / long mode bit m.lngi = 100 / long integer mode .globl fptrap .globl ac0, ac1, ac2, ac3 fptrap: dec reenter bge 1f 4 / reentered! 1: mov (sp)+,spc mov (sp)+,sps mov r0,sr0 sys signal; 4; fptrap mov $sr1,r0 mov r1,(r0)+ mov r2,(r0)+ mov r3,(r0)+ mov r4,(r0)+ mov r5,(r0)+ mov sp,(r0)+ sub $8,sp / room for double push mov (r0),r5 / pc clr trapins mov -(r5),r5 / trapped instruction mov r5,r4 bic $7777,r4 cmp r4,$170000 beq 1f jmp badins 1: bic $100000,fpsr / clear fp error bic $170000,r5 mov r5,r4 bit $7000,r4 bne class3 bit $700,r4 bne class2 cmp r4,$12 blos 1f jmp badins 1: asl r4 jmp *1f(r4) 1: i.cfcc / 170000 i.setf / 170001 i.seti / 170002 badins badins badins badins badins badins i.setd / 170011 i.setl / 170012 class2: cmp r5,$400 bge 1f jsr r1,fsrc; mod0rx; mod242 br 2f 1: jsr r1,fsrc; mod0f; mod24f 2: mov r3,r5 asl r4 asl r4 clrb r4 swab r4 asl r4 jsr pc,*1f(r4) jmp sret 1: badins / 1700xx i.ldfps / 1701xx i.stfps / 1702xx badins / 1703xx - stst i.clrx / 1704xx i.tstx / 1705xx i.absx / 1706xx i.negx / 1707xx class3: cmp r5,$5000 blt 1f mov r5,r2 clrb r2 cmp r2,$6400 blt 2f sub $1400,r2 2: cmp r2,$5000 bne 2f jsr r1,fsrc; mod0rx; mod242 br 3f 2: cmp r2,$5400 bne 2f jsr r1,fsrc; mod0ra; mod24i br 3f 2: jsr r1,fsrc; mod0f; mod24d br 3f 1: jsr r1,fsrc; mod0f; mod24f 3: jsr pc,freg mov r2,r5 clrb r4 swab r4 asl r4 jsr pc,*1f(r4) br sret 1: badins / 1700xx badins / 1704xx i.mulx / 1710xx i.modx / 1714xx i.addx / 1720xx i.ldx / 1724xx i.subx / 1730xx i.cmpx / 1734xx i.stx / 1740xx i.divx / 1744xx i.stexp / 1750xx i.stcxj / 1754xx i.stcxy / 1760xx i.ldexp / 1764xx i.ldcjx / 1770xx i.ldcyx / 1774xx i.cfcc: mov fpsr,r0 bic $!17,r0 mov r0,sps br ret i.setf: bic $m.ext,fpsr br ret i.setd: bis $m.ext,fpsr br ret i.seti: bic $m.lngi,fpsr br ret i.setl: bis $m.lngi,fpsr br ret badins: inc trapins br ret sret: mov $fpsr,r0 bic $17,(r0) tst (r5) bpl 1f bis $10,(r0) br ret 1: bne ret bis $4,(r0) ret: mov $sr1,r0 mov (r0)+,r1 mov (r0)+,r2 mov (r0)+,r3 mov (r0)+,r4 mov (r0)+,r5 mov (r0)+,sp mov sr0,r0 mov sps,-(sp) mov spc,-(sp) tst trapins bne 1f inc reenter rti 1: bpt freg: mov r5,r2 bic $!300,r2 asr r2 asr r2 asr r2 add $ac0,r2 rts pc fsrc: mov r5,r3 bic $!7,r3 / register asl r3 add $sr0,r3 mov r5,r0 bic $!70,r0 / mode asr r0 asr r0 jmp *1f(r0) 1: mod0 mod1 mod2 mod3 mod4 mod5 mod6 mod7 mod24f: mov $4,r0 bit $m.ext,fpsr beq 1f add $4,r0 1: rts pc mod24d: mov $8,r0 bit $m.ext,fpsr beq 1f sub $4,r0 1: rts pc mod242: mov $2,r0 rts pc mod24i: mov $2,r0 bit $m.lngi,fpsr beq 1f add $2,r0 1: rts pc mod0: jmp *(r1)+ mod0f: sub $sr0,r3 / get fp ac cmp r3,$6*2 bhis badi1 asl r3 asl r3 add $ac0,r3 tst (r1)+ rts r1 mod0ra: bit $m.lngi,fpsr bne badi1 mod0r: cmp r3,$ssp bhis badi1 mod0rx: tst (r1)+ rts r1 mod1: cmp r3,$spc beq badi1 mov (r3),r3 br check mod2: mov (r3),-(sp) jsr pc,*2(r1) cmp r3,$spc bne 1f mov $2,r0 mov *(r3),pctmp mov $pctmp,(sp) 1: add r0,(r3) mov (sp)+,r3 br check mod3: mov *(r3),-(sp) add $2,(r3) mov (sp)+,r3 br check mod4: cmp r3,$spc / test pc beq badi1 jsr pc,*2(r1) sub r0,(r3) mov (r3),r3 br check mod5: cmp r3,$spc beq badi1 sub $2,(r3) mov *(r3),r3 br check mod6: mov *spc,-(sp) add $2,spc add (r3),(sp) mov (sp)+,r3 br check mod7: jsr r1,mod6; ..; .. mov (r3),r3 br check badi1: jmp badins check: bit $1,r3 bne badi1 cmp (r1)+,(r1)+ rts r1 setab: mov $asign,r0 jsr pc,seta mov r3,r2 mov $bsign,r0 seta: clr (r0) mov (r2)+,r1 mov r1,-(sp) beq 1f blt 2f inc (r0)+ br 3f 2: dec (r0)+ 3: bic $!177,r1 bis $200,r1 br 2f 1: clr (r0)+ 2: mov r1,(r0)+ mov (r2)+,(r0)+ bit $m.ext,fpsr beq 2f mov (r2)+,(r0)+ mov (r2)+,(r0)+ br 3f 2: clr (r0)+ clr (r0)+ 3: mov (sp)+,r1 asl r1 clrb r1 swab r1 sub $200,r1 mov r1,(r0)+ / exp rts pc norm: mov $areg,r0 mov (r0)+,r1 mov r1,-(sp) mov (r0)+,r2 bis r2,(sp) mov (r0)+,r3 bis r3,(sp) mov (r0)+,r4 bis r4,(sp)+ bne 1f clr asign rts pc 1: bit $!377,r1 beq 1f clc ror r1 ror r2 ror r3 ror r4 inc (r0) br 1b 1: bit $200,r1 bne 1f asl r4 rol r3 rol r2 rol r1 dec (r0) br 1b 1: mov r4,-(r0) mov r3,-(r0) mov r2,-(r0) mov r1,-(r0) rts pc 6 7 8 9 : ; < = > / fp2 -- floating point simulation i.ldx: mov (r3)+,(r2)+ mov (r3)+,(r2)+ bit $m.ext,fpsr beq 1f mov (r3)+,(r2)+ mov (r3)+,(r2)+ rts pc 1: clr (r2)+ clr (r2)+ rts pc i.stx: mov (r2)+,(r3)+ mov (r2)+,(r3)+ bit $m.ext,fpsr beq 1f mov (r2)+,(r3)+ mov (r2)+,(r3)+ 1: rts pc i.clrx: clr (r3)+ clr (r3)+ bit $m.ext,fpsr beq 1f clr (r3)+ clr (r3)+ 1: rts pc i.negx: tst (r3) beq 1f add $100000,(r3) 1: rts pc i.absx: bic $!77777,(r3) rts pc i.tstx: rts pc i.cmpx: mov $areg,r5 tst (r2) bge 1f tst (r3) bge 1f cmp (r2),(r3) bgt 4f blt 3f 1: cmp (r2)+,(r3)+ bgt 3f blt 4f cmp (r2)+,(r3)+ bne 1f bit $m.ext,fpsr beq 2f cmp (r2)+,(r3)+ bne 1f cmp (r2)+,(r3)+ beq 2f 1: bhi 3f 4: mov $1,(r5) rts pc 3: mov $-1,(r5) rts pc 2: clr (r5) rts pc i.ldcyx: mov (r3)+,(r2)+ mov (r3)+,(r2)+ bit $m.ext,fpsr bne 1f mov (r3)+,(r2)+ mov (r3)+,(r2)+ rts pc 1: clr (r2)+ clr (r2)+ rts pc i.stcxy: mov (r2)+,(r3)+ mov (r2)+,(r3)+ bit $m.ext,fpsr bne 1f clr (r3)+ clr (r3)+ 1: rts pc i.ldcjx: mov $asign,r0 mov $1,(r0)+ mov (r3)+,(r0)+ bit $m.lngi,fpsr beq 1f mov (r3)+,(r0)+ clr (r0)+ clr (r0)+ mov $32.-8,(r0)+ jmp saret 1: clr (r0)+ clr (r0)+ clr (r0)+ mov $16.-8,(r0) jmp saret i.stcxj: mov r3,r5 mov $asign,r0 jsr pc,seta mov $areg,r0 mov (r0)+,r1 mov (r0)+,r2 mov (r0)+,r3 mov aexp,r0 1: cmp r0,$48.-8 bge 1f clc ror r1 ror r2 ror r3 inc r0 br 1b 1: bgt xoflo tst r1 bne xoflo 1: bit $m.lngi,fpsr beq 1f tst asign bge 2f neg r3 adc r2 bcs 2f neg r2 2: mov r2,(r5) mov r3,2(r5) rts pc 1: tst r2 bne xoflo tst asign bge 2f neg r3 2: mov r3,(r5) rts pc xoflo: bis $1,fpsr / set fixed overflow (carry) jmp ret i.ldexp: mov $asign,r0 jsr pc,seta mov (r3),aexp jsr pc,reta jmp sret i.stexp: mov $asign,r0 jsr pc,seta mov aexp,(r3) mov r3,r5 jmp sret i.ldfps: mov (r3),fpsr jmp ret i.stfps: mov fpsr,(r3) jmp ret / fp3 -- floating simulation i.addx: jsr pc,setab br 1f i.subx: jsr pc,setab neg bsign 1: tst bsign beq reta tst asign beq retb mov areg+8,r1 sub breg+8,r1 blt 1f beq 2f cmp r1,$56. bge reta mov $breg,r0 br 4f 1: neg r1 cmp r1,$56. bge retb mov $areg,r0 4: mov r1,-(sp) mov (r0)+,r1 mov (r0)+,r2 mov (r0)+,r3 mov (r0)+,r4 add (sp),(r0) 1: clc ror r1 ror r2 ror r3 ror r4 dec (sp) bgt 1b mov r4,-(r0) mov r3,-(r0) mov r2,-(r0) mov r1,-(r0) tst (sp)+ 2: mov $areg+8,r1 mov $breg+8,r2 mov $4,r0 cmp asign,bsign bne 4f clc 1: adc -(r1) bcs 3f add -(r2),(r1) 2: dec r0 bne 1b br 5f 3: add -(r2),(r1) sec br 2b br 5f 4: clc 1: sbc -(r1) bcs 3f sub -(r2),(r1) 2: dec r0 bne 1b br 5f 3: sub -(r2),(r1) sec br 2b saret: mov $areg,r1 5: tst (r1) bge 3f mov $areg+8,r1 mov $4,r0 clc 1: adc -(r1) bcs 2f neg (r1) 2: dec r0 bne 1b neg -(r1) 3: jsr pc,norm br reta retb: mov $bsign,r1 mov $asign,r2 mov $6,r0 1: mov (r1)+,(r2)+ dec r0 bne 1b reta: mov r5,r2 mov $asign,r0 tst (r0) beq unflo mov aexp,r1 cmp r1,$177 bgt ovflo cmp r1,$-177 blt unflo add $200,r1 swab r1 clc ror r1 tst (r0)+ bge 1f bis $100000,r1 1: bic $!177,(r0) bis (r0)+,r1 mov r1,(r2)+ mov (r0)+,(r2)+ bit $m.ext,fpsr beq 1f mov (r0)+,(r2)+ mov (r0)+,(r2)+ 1: rts pc unflo: clr (r2)+ clr (r2)+ bit $m.ext,fpsr beq 1f clr (r2)+ clr (r2)+ 1: rts pc ovflo: bis $2,fpsr / set v-bit (overflow) jmp ret i.mulx: jsr pc,i.mul br saret i.modx: jsr pc,i.mul jsr pc,norm mov $asign,r0 mov $bsign,r1 mov $6,r2 1: mov (r0)+,(r1)+ dec r2 bne 1b clr r0 / count mov $200,r1 / bit clr r2 / reg offset 1: cmp r0,aexp bge 2f / in fraction bic r1,areg(r2) br 3f 2: bic r1,breg(r2) 3: inc r0 clc ror r1 bne 1b mov $100000,r1 add $2,r2 cmp r2,$8 blt 1b jsr pc,norm jsr pc,reta cmp r5,$ac1 beq 1f cmp r5,$ac3 beq 1f bit $200,breg bne 2f clr bsign 2: add $8,r5 jsr pc,retb sub $8,r5 1: rts pc i.divx: jsr pc,setab tst bsign beq ovflo sub bexp,aexp jsr pc,xorsign mov r5,-(sp) mov $areg,r0 mov (r0),r1 clr (r0)+ mov (r0),r2 clr (r0)+ mov (r0),r3 clr (r0)+ mov (r0),r4 clr (r0)+ mov $areg,r5 mov $400,-(sp) 1: mov $breg,r0 cmp (r0)+,r1 blt 2f bgt 3f cmp (r0)+,r2 blo 2f bhi 3f cmp (r0)+,r3 blo 2f bhi 3f cmp (r0)+,r4 bhi 3f 2: mov $breg,r0 sub (r0)+,r1 clr -(sp) sub (r0)+,r2 adc (sp) clr -(sp) sub (r0)+,r3 adc (sp) sub (r0)+,r4 sbc r3 adc (sp) sub (sp)+,r2 adc (sp) sub (sp)+,r1 bis (sp),(r5) 3: asl r4 rol r3 rol r2 rol r1 clc ror (sp) bne 1b mov $100000,(sp) add $2,r5 cmp r5,$areg+8 blo 1b tst (sp)+ mov (sp)+,r5 jmp saret i.mul: jsr pc,setab add bexp,aexp dec aexp jsr pc,xorsign mov r5,-(sp) mov $breg+4,r5 bit $m.ext,fpsr beq 1f add $4,r5 1: clr r0 clr r1 clr r2 clr r3 clr r4 1: asl r0 bne 2f inc r0 tst -(r5) 2: cmp r0,$400 bne 2f cmp r5,$breg bhi 2f mov $areg,r0 mov r1,(r0)+ mov r2,(r0)+ mov r3,(r0)+ mov r4,(r0)+ mov (sp)+,r5 rts pc 2: clc ror r1 ror r2 ror r3 ror r4 bit r0,(r5) beq 1b mov r0,-(sp) mov $areg,r0 add (r0)+,r1 clr -(sp) add (r0)+,r2 adc (sp) clr -(sp) add (r0)+,r3 adc (sp) add (r0)+,r4 adc r3 adc (sp) add (sp)+,r2 adc (sp) add (sp)+,r1 mov (sp)+,r0 br 1b xorsign: cmp asign,bsign beq 1f mov $-1,asign rts pc 1: mov $1,asign rts pc / fpx -- floating point simulation reenter: 1 .bss asign: .=.+2 areg: .=.+8 aexp: .=.+2 bsign: .=.+2 breg: .=.+8 bexp: .=.+2 fpsr: .=.+2 trapins: .=.+2 ac0: .=.+8. ac1: .=.+8. ac2: .=.+8. ac3: .=.+8. ac4: .=.+8. ac5: .=.+8. sr0: .=.+2 sr1: .=.+2 .=.+2 .=.+2 .=.+2 .=.+2 ssp: .=.+2 spc: .=.+2 sps: .=.+2 pctmp: .=.+8 .globl gamma, signgam, _signgam .globl log, sin half = 040000 one = 40200 two = 40400 eight = 41000 large = 77777 ldfps = 170100^tst stfps = 170200^tst / / gamma computes the log of the abs of the gamma function. / gamma accepts its argument and returns its result / in fr0. The carry bit is set if the result is / too large to represent. / The sign of the gamma function is / returned in the globl cell signgam. / / The coefficients for expansion around zero / are #5243 from Hart & Cheney; for expansion / around infinity they are #5404. / / movf arg,fr0 / jsr r5,gamma / movf fr0,... / gamma: stfps -(sp) ldfps $200 clr signgam movf fr1,-(sp) tstf fr0 cfcc ble negative cmpf $eight,fr0 cfcc blt asymptotic jsr r5,regular / lret: jsr r5,log bec ret 4 ret: movf (sp)+,fr1 ldfps (sp)+ clc rts r5 / erret: movf $large,fr0 movf (sp)+,fr1 ldfps (sp)+ sec rts r5 / / here for positive x > 8 / the log of the gamma function is / approximated directly by the asymptotic series. / asymptotic: movf fr0,-(sp) movf fr0,fr1 jsr r5,log subf $half,fr1 mulf fr1,fr0 subf (sp),fr0 addf goobie,fr0 / movf $one,fr1 divf (sp)+,fr1 movf fr0,-(sp) movf fr1,-(sp) mulf fr1,fr1 / mov r0,-(sp) mov $p5p,r0 mov $5,-(sp) movf *(r0)+,fr0 1: mulf fr1,fr0 addf *(r0)+,fr0 dec (sp) bne 1b tst (sp)+ mov (sp)+,r0 mulf (sp)+,fr0 addf (sp)+,fr0 br ret / / here on negative / the negative gamma is computed / in terms of the pos gamma. / negative: absf fr0 movf fr0,fr1 mulf pi,fr0 jsr r5,sin negf fr0 cfcc beq erret bgt 1f inc signgam absf fr0 1: mov signgam,-(sp) mulf fr1,fr0 divf pi,fr0 jsr r5,log movf fr0,-(sp) movf fr1,fr0 jsr r5,gamma addf (sp)+,fr0 negf fr0 mov (sp)+,signgam br ret / / control comes here for arguments less than 8. / if the argument is 23 then the argument / is reduced in range by the formula / gamma(x+1) = x*gamma(x) / regular: subf $two,fr0 cfcc bge 1f addf $two,fr0 movf fr0,-(sp) addf $one,fr0 movf fr0,-(sp) addf $one,fr0 jsr r5,regular divf (sp)+,fr0 divf (sp)+,fr0 rts r5 1: cmpf $one,fr0 cfcc bgt 1f addf $one,fr0 movf fr0,-(sp) subf $two,fr0 jsr r5,1b mulf (sp)+,fr0 rts r5 1: movf fr2,-(sp) mov r0,-(sp) mov $p4p,r0 mov $6,-(sp) movf fr0,fr2 movf *(r0)+,fr0 1: mulf fr2,fr0 addf *(r0)+,fr0 dec (sp) bne 1b mov $7,(sp) movf fr2,fr1 br 2f 1: mulf fr2,fr1 2: addf *(r0)+,fr1 dec (sp) bne 1b tst (sp)+ mov (sp)+,r0 divf fr1,fr0 movf (sp)+,fr2 rts r5 / p4p: p6;p5;p4;p3;p2;p1;p0 q6;q5;q4;q3;q2;q1;q0 / p6 = -.67449 50724 59252 89918 d1 / p5 = -.50108 69375 29709 53015 d2 / p4 = -.43933 04440 60025 67613 d3 / p3 = -.20085 27401 30727 91214 d4 / p2 = -.87627 10297 85214 89560 d4 / p1 = -.20886 86178 92698 87364 d5 / p0 = -.42353 68950 97440 89647 d5 / q7 = 1.0 d0 / q6 = -.23081 55152 45801 24562 d2 / q5 = +.18949 82341 57028 01641 d3 / q4 = -.49902 85266 21439 04834 d3 / q3 = -.15286 07273 77952 20248 d4 / q2 = +.99403 07415 08277 09015 d4 / q1 = -.29803 85330 92566 49932 d4 / q0 = -.42353 68950 97440 90010 d5 p1: 143643 26671 36161 72154 p2: 143410 165327 54121 172630 p3: 142773 10340 74264 152066 p4: 142333 125113 176657 75740 p5: 141510 67515 65111 24263 p6: 140727 153242 163350 32217 p0: 144045 70660 101665 164444 q1: 143072 43052 50302 136745 q2: 43433 50472 145404 175462 q3: 142677 11556 144553 154177 q4: 142371 101646 141245 11264 q5: 42075 77614 43022 27573 q6: 141270 123404 76130 12650 q0: 144045 70660 101665 164444 p5p: s5;s4;s3;s2;s1;s0 / / s5 = -.16334 36431 d-2 / s4 = +.83645 87892 2 d-3 / s3 = -.59518 96861 197 d-3 / s2 = +.79365 05764 93454 d-3 / s1 = -.27777 77777 35865 004 d-2 / s0 = +.83333 33333 33331 01837 d-1 / goobie = 0.91893 85332 04672 74178 d0 s5: 135726 14410 15074 17706 s4: 35533 42714 111634 76770 s3: 135434 3200 171173 156141 s2: 35520 6375 12373 111437 s1: 136066 5540 132625 63540 s0: 37252 125252 125252 125047 goobie: 40153 37616 41445 172645 pi: 40511 7732 121041 64302 .bss _signgam: signgam:.=.+2 L M N O P Q R S T / getw/getc -- get words/characters from input file / fopen -- open a file for use by get(c|w) / / calling sequences -- / / mov $filename,r0 / jsr r5,fopen; ioptr / / on return ioptr buffer is set up or error bit is set if / file could not be opened. / / jsr r5,get(c|w)1; ioptr / / on return char/word is in r0; error bit is / set on error or end of file. / / ioptr is the address of a 518-byte buffer / whose layout is as follows: / / ioptr: .=.+2 / file descriptor / .=.+2 / charact+2 / pointer to next character (reset if no. chars=0) / .=.+512. / the buffer .globl getc,getw,fopen fopen: mov r1,-(sp) mov (r5)+,r1 mov r0,0f sys 0; 9f .data 9: sys open; 0:..; 0 .text bes 1f mov r0,(r1)+ clr (r1)+ mov (sp)+,r1 rts r5 1: mov $-1,(r1) mov (sp)+,r1 sec rts r5 .data getw: mov (r5),9f mov (r5)+,8f jsr r5,getc; 8:.. bec 1f rts r5 1: mov r0,-(sp) jsr r5,getc; 9:.. swab r0 bis (sp)+,r0 rts r5 .text getc: mov r1,-(sp) mov (r5)+,r1 dec 2(r1) bge 1f mov r1,r0 add $6,r0 mov r0,0f mov r0,4(r1) mov (r1),r0 sys 0; 9f .data 9: sys read; 0:..; 512. .text bes 2f tst r0 bne 3f 2: mov (sp)+,r1 sec rts r5 3: dec r0 mov r0,2(r1) 1: clr r0 bisb *4(r1),r0 inc 4(r1) mov (sp)+,r1 rts r5 / hypot -- sqrt(fr0**2 + fr1**2) -> fr0; no overflow unless / necessary. / c-bit is set on overflow .globl hypot .globl sqrt hypot: movf fr1,-(sp) absf fr0 absf fr1 cmpf fr0,fr1 cfcc bne 1f movf $one,fr0 br 3f 1: blt 2f movf fr0,-(sp) movf fr1,fr0 movf (sp)+,fr1 2: divf fr1,fr0 mulf fr0,fr0 3: addf $one,fr0 jsr r5,sqrt mulf fr1,fr0 cfcc movf (sp)+,fr1 rts r5 one = 40200 / C library-- long divide/remainder .globl _ldiv, _ldivr .globl _lrem _ldiv: mov 2(sp),r0 mov 4(sp),r1 div 6(sp),r0 mov r1,_ldivr rts pc _lrem: mov 2(sp),r0 mov 4(sp),r1 div 6(sp),r0 mov r1,r0 rts pc .bss _ldivr: .=.+2 .globl log ldfps = 170100^tst stfps = 170200^tst ldexp = 176400^movif stexp = 175000^movfi / / log accepts its argument and returns its result / in fr0. The carry bit is set if the argument is / zero or negative. / The coefficients are #2705 from Hart & Cheney. / / movf arg,fr0 / jsr r5,log / movf fr0,... / log: tstf fr0 cfcc bgt 1f movf $bigneg,fr0 /return -(big) on error sec rts r5 1: stfps -(sp) ldfps $200 /di mode movf fr2,-(sp) movf fr1,-(sp) / stexp fr0,-(sp) /scale ldexp $0,fr0 cmpf sqrt2o2,fr0 cfcc blt 1f ldexp $1,fr0 dec (sp) 1: movf fr0,fr1 /(1/2)^(1/2) < x < 2^(1/2) subf $one,fr0 addf $one,fr1 divf fr1,fr0 /z = (x-1)/(x+1) movf fr0,fr1 mulf fr0,fr1 /z^2 / movf p3,fr2 mulf fr1,fr2 addf p2,fr2 mulf fr1,fr2 addf p1,fr2 mulf fr1,fr2 addf p0,fr2 mulf fr2,fr0 /zP(z) / movf fr1,fr2 addf q2,fr2 mulf fr1,fr2 addf q1,fr2 mulf fr1,fr2 addf q0,fr2 /Q(z) / divf fr2,fr0 /zP(z)/Q(z) movif (sp)+,fr1 mulf log2,fr1 addf fr1,fr0 / movf (sp)+,fr1 movf (sp)+,fr2 ldfps (sp)+ rts r5 / / one = 40200 bigneg = 177777 / sqrt2o2: 40065; 02363; 31771; 157145 log2: 40061; 71027;173721;147572 / p0: 141300; 16201; 02154; 10216 p1: 41367;124211; 21611;114442 p2: 141032; 31773; 64222; 40261 p3: 37727;114303;110107;114145 / q0: 141100; 16201; 02154; 10216 q1: 41233;154404;136454; 22153 q2: 141016;111747; 07541; 52530 / / /p0 = -.24013 91795 59210 50986 8484 d2 /p1 = .30957 29282 15376 50062 264 d2 /p2 = -.96376 90933 68686 59324 d1 /p3 = .42108 73712 17979 7145 d0 / /q0 = -.12006 95897 79605 25471 7525 d2 /q1 = .19480 96607 00889 73051 623 d2 /q2 = -.89111 09027 93783 12337 d1 /q3 = .1 d1 / .globl mesg / usage: / jsr r5,mesg / / .even / ... / / string is output onto $1 / mesg: mov r0,-(sp) mov r5,r0 mov r5,0f 1: tstb (r5)+ bne 1b sub r5,r0 com r0 mov r0,0f+2 mov $1,r0 sys 0; 9f .data 9: sys write; 0:..; .. .text inc r5 bic $1,r5 mov (sp)+,r0 rts r5 / monitor-- create mon.out for prof / jsr r5,monitor; lowpc; highpc; buf; bufsize / / jsr r5,monexit .globl monitor .globl monexit profil = 44. monitor: mov r0,-(sp) mov r1,-(sp) mov r2,-(sp) mov (r5)+,r1 / lo pc mov (r5)+,r2 / hi pc mov (r5)+,r0 / buff mov r1,(r0)+ mov r2,(r0)+ mov r0,buff sub r1,r2 ble botch mov (r5)+,r0 / size sub $4,r0 ble botch cmp r0,r2 blt 1f mov r2,r0 1: mov r0,bufs clr r1 div r2,r0 bvc 1f mov $77777,r0 1: asl r0 mov r0,scale sys 0; 9f .data 9: sys profil; buff:.. ; bufs:..; lowpc:..; scale:.. .text mov (sp)+,r2 mov (sp)+,r1 mov (sp)+,r0 rts r5 monexit: mov r0,-(sp) sys creat; monout; 017 bes botch mov buff,0f sub $4,0f mov bufs,0f+2 add $4,0f+2 sys 0; 9f .data 9: sys write; 0:..; .. .text mov (sp)+,r0 rts r5 botch: mov $1,r0 sys write; mesg; emesg-mesg 4 mesg: emesg: monout: .even / nlist -- extract values from name list / / jsr r5,nlist; file; list / ... / / /list: ; type; value / ; type; value / ... / 0 .globl nlist nlist: mov r0,-(sp) mov r1,-(sp) mov r2,-(sp) mov (r5)+,0f mov (r5)+,r1 mov r1,r0 1: tst (r0) beq 1f add $8.,r0 clr (r0)+ clr (r0)+ / initialize to undefined br 1b 1: sys 0; 9f .data 9: sys open; 0:..; 0 .text bes done mov r0,r2 sys read; buf; 20 cmp r0,$20 bne cdone mov buf+4,count / assume older a.out mov buf+2,0f cmp buf,$405 beq 1f mov buf+8.,count / now assume newer mov buf+2,r0 / txt add buf+4,r0 / data cmp buf+16,$1 / relocation? beq 4f asl r0 / txt+data reloc 4: add $20,r0 / header mov r0,0f cmp buf,$410 beq 1f cmp buf,$407 bne cdone 1: mov r2,r0 sys 0; 9f .data 9: sys seek; 0:..; 0 .text 1: sub $12.,count blt cdone mov r2,r0 sys read; buf; 12. cmp r0,$12. bne cdone mov r1,r0 2: tst (r0) beq 1b cmp (r0),buf bne 1f cmp 2(r0),buf+2 bne 1f cmp 4(r0),buf+4 bne 1f cmp 6(r0),buf+6 bne 1f mov buf+8.,8.(r0) mov buf+10.,10.(r0) 1: add $12.,r0 br 2b cdone: mov r2,r0 sys close done: mov (sp)+,r2 mov (sp)+,r1 mov (sp)+,r0 rts r5 .bss buf: .=.+20 count: .=.+2 .globl pow, log, exp pow: / 0^0~ is 0 tstf fr0 cfcc bne 1f tstf fr1 cfcc beq bad rts r5 1: / -^i is +^i fixed sign bpl 1f movf fr1,-(sp) modf $one,fr1 cfcc bne bad1 movf (sp)+,fr1 absf fr0 jsr r5,1f bes bad movf fr1,-(sp) modf $half,fr1 cfcc beq 2f negf fr0 2: movf (sp)+,fr1 rts r5 1: jsr r5,log bes 1f mulf fr1,fr0 jsr r5,exp 1: rts r5 bad1: movf (sp)+,fr1 bad: sec rts r5 one = 40200 half = 40000 / putw/putc -- write words/characters on output file / / fcreat -- create an output file for use by put(w|c) / / calling sequences -- / / mov $filename,r0 / jsr r5,fcreat; ioptr / / on return ioptr is set up for use by put or error / bit is set if file could not be created. / / mov(b) thing,r0 / jsr r5,put(w|c)1; ioptr / / the character or word is written out. / / jsr r5,flush; ioptr / / the buffer is fled. / .globl putc, putw, flush, fcreat fcreat: mov r1,-(sp) mov (r5)+,r1 mov r0,0f sys 0; 9f .data 9: sys creat; 0:..; 666 .text bes 1f mov r0,(r1)+ 2: clr (r1)+ clr (r1)+ mov (sp)+,r1 rts r5 1: mov $-1,(r1)+ mov (sp)+,r1 sec rts r5 .data putw: mov (r5),8f mov (r5)+,9f mov r0,-(sp) jsr r5,putc; 8:.. mov (sp)+,r0 swab r0 jsr r5,putc; 9:.. rts r5 .text putc: mov r1,-(sp) mov (r5)+,r1 1: dec 2(r1) bge 1f mov r0,-(sp) jsr pc,fl mov (sp)+,r0 br 1b 1: movb r0,*4(r1) inc 4(r1) mov (sp)+,r1 rts r5 flush: mov r0,-(sp) mov r1,-(sp) mov (r5)+,r1 jsr pc,fl mov (sp)+,r1 mov (sp)+,r0 rts r5 fl: mov r1,r0 add $6,r0 mov r0,-(sp) mov r0,0f mov 4(r1),0f+2 beq 1f sub (sp),0f+2 mov (r1),r0 sys 0; 9f .data 9: sys write; 0:..; .. .text 1: mov (sp)+,4(r1) mov $512.,2(r1) rts pc / / copyright 1972 bell telephone laboratories inc. / / quicker sort / mov $base,r1 / mov $base+[n*width],r2 / mov $width,r3 / jsr pc,qsort / r0,r1,r2,r3,r4 are used .globl qsort .globl compare qsort: mov r5,-(sp) mov r4,-(sp) bit $1,r3 bne 1f bit $1,r1 bne 1f cmp r3,$2 bne 2f mov $exch1,exchange br 3f 2: mov r3,r5 clc ror r5 mov r5,width mov $exchw,exchange br 3f 1: mov $exchb,exchange 3: jsr pc,qs1 mov (sp)+,r4 mov (sp)+,r5 rts pc qs1: mov r1,r5 neg r5 add r2,r5 bgt 1f rts pc 1: clr r4 dvd r3,r4 asr r4 mpy r3,r4 mov r5,r4 add r1,r4 mov r1,-(sp) mov r2,-(sp) loop: cmp r1,r4 bhis loop1 mov r1,r0 jsr pc,compare bgt loop1 add r3,r1 br loop loop1: cmp r2,r4 blos 1f sub r3,r2 mov r2,r0 jsr pc,compare bge loop1 jsr pc,*exchange cmp r1,r4 bne loop mov r2,r4 br loop 1: cmp r1,r4 beq 1f jsr pc,*exchange mov r1,r4 br loop1 1: mov (sp)+,r2 mov r4,-(sp) mov r4,r1 add r3,r1 mov r2,r0 sub r1,r0 sub 2(sp),r4 cmp r0,r4 blo 1f mov (sp)+,r0 mov (sp)+,r4 mov r1,-(sp) mov r2,-(sp) mov r0,r2 mov r4,r1 1: jsr pc,qs1 mov (sp)+,r2 mov (sp)+,r1 br qs1 exchb: mov r1,-(sp) mov r2,-(sp) mov r3,r5 1: movb (r1),r0 movb (r2),(r1)+ movb r0,(r2)+ sob r5,1b mov (sp)+,r2 mov (sp)+,r1 rts pc exchw: mov r1,-(sp) mov r2,-(sp) mov width,r5 1: mov (r1),r0 mov (r2),(r1)+ mov r0,(r2)+ sob r5,1b mov (sp)+,r2 mov (sp)+,r1 rts pc exch1: mov (r1),r0 mov (r2),(r1) mov r0,(r2) rts pc .bss exchange: .=.+2 width: .=.+2 / random fixed point number generator .globl rand, srand srand: mov r0,ranx rts pc rand: mov r1,-(sp) mov ranx,r1 mpy $13077.,r1 add $6925.,r1 mov r1,r0 mov r0,ranx bic $100000,r0 mov (sp)+,r1 rts pc .data ranx: 1 ldfps = 170100^tst stfps = 170200^tst / .globl sin .globl cos / / floating point sin/cos / replaces the value in fr0 by its sin/cos / there are no error exits / coefficients are #3370 from Hart & Cheney / cos: absf fr0 mov $1,-(sp) br 1f sin: clr -(sp) 1: stfps -(sp) ldfps $200 movf fr1,-(sp) movf fr2,-(sp) mov r0,-(sp) / / quadrant reduction - arg = (2/J)x / -1 < arg < 1 / movf fr0,-(sp) absf fr0 modf frpi2,fr0 modf $fourth,fr1 mulf $four,fr1 movfi fr1,r0 add 34(sp),r0 movf $one,fr1 inc r0 ror r0 bcs 1f subf $one,fr0 1: ror r0 bcc 1f negf fr0 1: tstf (sp)+ cfcc bpl 1f negf fr0 1: movf fr0,fr1 mulf fr0,fr1 /arg^2 / movf p4,fr2 mulf fr1,fr2 addf p3,fr2 mulf fr1,fr2 addf p2,fr2 mulf fr1,fr2 addf p1,fr2 mulf fr1,fr2 addf p0,fr2 mulf fr2,fr0 / zP(z^2) / movf fr1,fr2 addf q3,fr2 mulf fr1,fr2 addf q2,fr2 mulf fr1,fr2 addf q1,fr2 mulf fr1,fr2 addf q0,fr2 / Q(z^2) / divf fr2,fr0 / zP(z^2)/Q(z^2) / mov (sp)+,r0 movf (sp)+,fr2 movf (sp)+,fr1 ldfps (sp)+ tst (sp)+ / clc /tst clears carry rts r5 / fourth = 37600 one = 40200 four = 40600 / frpi2: 40042;174603; 67116; 42025 / p0: 046117;031130;175220;165273 p1: 145626;154170;031651;104637 p2: 044726;162341;133224;052302 p3: 143530;056427;005061;125021 p4: 042021;174005;170441;175607 q0: 046003;163716;123445;167144 q1: 044707;047147;032436;120046 q2: 043423;156142;064161;007314 q3: 042004;123513;026637;160477 / /p0 = .13578 84097 87737 56690 92680 d8 /p1 = -.49429 08100 90284 41611 58627 d7 /p2 = .44010 30535 37526 65019 44918 d6 /p3 = -.13847 27249 98245 28730 54457 d5 /p4 = .14596 88406 66576 87222 26959 d3 /q0 = .86445 58652 92253 44299 15149 d7 /q1 = .40817 92252 34329 97493 95779 d6 /q2 = .94630 96101 53820 81805 71257 d4 /q3 = .13265 34908 78613 63589 11494 d3 /q4 = .1 d1 ldfps = 170100^tst stfps = 170200^tst / / sqrt replaces the f.p. number in fr0 by its / square root. newton's method / .globl sqrt / / sqrt: tstf fr0 cfcc bne 1f clc rts r5 /sqrt(0) 1: bgt 1f clrf fr0 sec rts r5 / sqrt(-a) 1: mov r0,-(sp) stfps -(sp) mov (sp),r0 bic $!200,r0 / retain mode ldfps r0 movf fr1,-(sp) movf fr2,-(sp) / movf fr0,fr1 movf fr0,-(sp) asr (sp) add $20100,(sp) movf (sp)+,fr0 /initial guess mov $4,r0 1: movf fr1,fr2 divf fr0,fr2 addf fr2,fr0 mulf $half,fr0 / x = (x+a/x)/2 sob r0,1b 2: movf (sp)+,fr2 movf (sp)+,fr1 ldfps (sp)+ mov (sp)+,r0 clc rts r5 / half = 40000 / switch -- switch on contents of r0 / / / calling sequence -- / / jsr r5,switch; swtab / / r0 is looked up in swtab and if found / control is returned to the corresponding place / if r0 is not found, the next inline instruction is / executed / / swtab format -- / / swtab: / val1; ret1 / val2; ret2 / ... / valn; retn / ..; 0 / .globl switch switch: mov r1,-(sp) mov (r5)+,r1 1: cmp r0,(r1)+ beq 1f tst (r1)+ bne 1b 2: mov (sp)+,r1 rts r5 1: mov (r1)+,r1 beq 2b mov r1,r5 br 2b Â..K.Latan.sMatof.sNatoi.sOcompar.sPcrypt.sQctime.cRdpadd.sSecvt.sTexp.sUfakfp.sVfp1.sWfp2.sXfp3.sYfpx.sZgamma.s[get.s\hypot.s]ldiv.s^log.s_mesg.s`mon.sanlist.sbpow.scput.sdqsort.serand.sfsin.sgsqrt.shswitch.sittyn.s/ return name of current tty .globl ttyn, _ttyn _ttyn: mov 2(sp),r0 br 1f ttyn: clr r0 1: mov $'x,name tst -(sp) sys fstat; buf bes er1 mov buf+2,(sp) sys open; dev; 0 bes er1 mov r0,r1 1: mov r1,r0 sys read; buf; 16. bes er cmp r0,$16. bne er mov $buf,r0 cmp (r0)+,(sp) bne 1b cmp (r0)+,$"tt bne 1b cmpb (r0)+,$'y bne 1b tstb (r0)+ beq 1b cmpb (r0),$'\0 bne 1b movb -(r0),name er: mov r1,r0 sys close er1: tst (sp)+ movb name,r0 rts pc .data dev: .even .bss buf: .=.+40. name: .=.+2 / C library -- abort .globl _abort _abort: mov r5,-(sp) mov sp,r5 4 .globl _atan,atan,retrn,savr5 _atan: mov r5,-(sp) mov sp,r5 mov r5,savr5 movf 4(r5),fr0 jsr r5,atan clr savr5 jmp retrn .globl _atan2,atan2,retrn,savr5 _atan2: mov r5,-(sp) mov sp,r5 mov r5,savr5 movf 4(r5),fr0 movf 12.(r5),fr1 jsr r5,atan2 clr savr5 jmp retrn / C library -- atof / a = atof(string); / returns a floating-point number in a_ corresponding to / the ascii string______. See ATOF(III). .globl atof,_atof,a_tof,retrn,savr5 _atof: mov r5,-(sp) mov sp,r5 mov 4(r5),ptr jsr r5,atof; a_tof clr savr5 jmp retrn a_tof: movb *ptr,r0 inc ptr rts r5 .bss ptr: .=.+2 / C library -- chdir / error = chdir(string); .globl _chdir, retrn, cerror _chdir: mov r5,-(sp) mov sp,r5 mov 4(r5),0f sys 0; 9f bec 1f jmp cerror 1: clr r0 jmp retrn .data 9: sys chdir; 0:.. / C library -- chmod / error = chmod(string, mode); .globl _chmod, retrn, cerror _chmod: mov r5,-(sp) mov sp,r5 mov 4(r5),0f mov 6(r5),0f+2 sys 0; 9f bec 1f jmp cerror 1: clr r0 jmp retrn .data 9: sys chmod; 0:..; .. / C library -- chown / error = chown(string, owner); .globl _chown, retrn, cerror _chown: mov r5,-(sp) mov sp,r5 mov 4(r5),0f mov 6(r5),0f+2 sys 0; 9f bec 1f jmp cerror 1: clr r0 jmp retrn .data 9: sys chown; 0:..; .. / C library -- close / error = close(file); .globl _close, retrn, cerror _close: mov r5,-(sp) mov sp,r5 mov 4(r5),r0 sys close bec 1f jmp cerror 1: clr r0 jmp retrn .globl _cos,cos,retrn,savr5 _cos: mov r5,-(sp) mov sp,r5 mov r5,savr5 movf 4(r5),fr0 jsr r5,cos clr savr5 jmp retrn .globl _srand, _rand, retrn .globl rand, srand _srand: mov r5,-(sp) mov sp,r5 mov 4(r5),r0 jsr pc,srand jmp retrn _rand: mov r5,-(sp) mov sp,r5 jsr pc,rand jmp retrn / C library -- creat / file = creat(string, mode); / / file == -1 if error .globl _creat, retrn, cerror _creat: mov r5,-(sp) mov sp,r5 mov 4(r5),0f mov 6(r5),0f+2 sys 0; 9f bec 1f jmp cerror 1: jmp retrn .data 9: sys creat; 0:..; .. / C runtime startoff .globl savr5 .globl _main start: setd mov sp,r0 mov (r0),-(sp) tst (r0)+ mov r0,2(sp) jsr pc,_main cmp (sp)+,(sp)+ clr r0 sys exit .bss savr5: .=.+2 / C library -- crypt / cstring = crypt(key); .globl _crypt .globl crypt, retrn, savr5 _crypt: mov r5,-(sp) mov sp,r5 mov r5,savr5 mov 4(r5),r0 jsr pc,crypt clr savr5 jmp retrn / C library -- dup / f = dup(of) / f == -1 for error dup = 41. .globl _dup, retrn, cerror _dup: mov r5,-(sp) mov sp,r5 mov 4(r5),r0 sys dup bec 1f jmp cerror 1: jmp retrn / C interface to ecvt & fcvt .globl _ecvt, _fcvt .globl ecvt, fcvt, _ndigit .globl savr5, retrn _ecvt: jsr r5,setup jsr pc,ecvt br 1f _fcvt: jsr r5,setup jsr pc,fcvt 1: mov savr5,r5 clr savr5 mov r2,*16(r5) mov r1,*20(r5) jmp retrn setup: mov sp,savr5 movf 4(sp),fr0 mov 14(sp),_ndigit jmp (r5) int sys_nerr 30; char *sys_errlist[] { "Error 0", "Not super-user", "No such file or directory", "No such process", "Error 4", "I/O error", "No such device or address", "Arg list too long", "Exec format error", "Bad file number", "No children", "No more processes", "Not enough core", "Permission denied", "Error 14", "Block device required", "Mount device busy", "File exists", "Cross-device link", "No such device", "Not a directory", "Is a directory", "Invalid argument", "File table overflow", "Too many open files", "Not a typewriter", "Text file busy", "File too large", "No space left on device", "Illegal seek", "read-only file system", }; / C library -- execl / execl(file, arg1, arg2, ... , 0); / .globl _execl, cerror _execl: mov r5,-(sp) mov sp,r5 mov 4(r5),0f mov r5,r0 add $6,r0 mov r0,0f+2 sys 0; 9f jmp cerror .data 9: sys exec; 0:..; .. / C library -- execv / execv(file, argv); / / where argv is a vector argv[0] ... argv[x], 0 / last vector element must be 0 / .globl _execv, cerror _execv: mov r5,-(sp) mov sp,r5 mov 4(r5),0f mov 6(r5),0f+2 sys 0; 9f jmp cerror .data 9: sys exec; 0:..; .. / C library -- exit / exit(code) / code is return in r0 to system .globl _exit _exit: mov r5,-(sp) mov sp,r5 mov 4(r5),r0 sys exit .globl _exp,exp,retrn,savr5 _exp: mov r5,-(sp) mov sp,r5 mov r5,savr5 movf 4(r5),fr0 jsr r5,exp clr savr5 jmp retrn / C library-- fake floating output .globl pfloat .globl pscien pfloat: pscien: add $8,r4 movb $'?,(r3)+ rts pc .globl _floor, _ceil .globl floor, ceil one = 40200 _floor: movf 2(sp),fr0 floor: tstf fr0 cfcc bge 1f modf $one,fr0 cfcc beq 2f subf $one,fr1 br 2f 1: modf $one,fr0 2: movf fr1,fr0 rts pc _ceil: movf 2(sp),fr0 ceil: negf fr0 jsr pc,floor negf fr0 rts pc / C library-- floating output .globl pfloat .globl pscien .globl fltused .globl _ndigit .globl ecvt .globl fcvt fltused: / force loading pfloat: tst r2 bne 1f mov $6,_ndigit 1: movf (r4)+,fr0 jsr pc,fcvt tst r1 beq 1f movb $'-,(r3)+ 1: tst r2 bgt 1f movb $'0,(r3)+ 1: mov r2,r1 ble 1f 2: movb (r0)+,(r3)+ sob r1,2b 1: mov _ndigit,r1 beq 1f movb $'.,(r3)+ 1: neg r2 ble 1f 2: dec r1 blt 1f movb $'0,(r3)+ sob r2,2b 1: tst r1 ble 2f 1: movb (r0)+,(r3)+ sob r1,1b 2: rts pc pscien: tst r2 bne 1f mov $6,_ndigit 1: movf (r4)+,fr0 jsr pc,ecvt tst r1 beq 1f movb $'-,(r3)+ 1: movb (r0)+,(r3)+ movb $'.,(r3)+ mov _ndigit,r1 ble 1f 2: movb (r0)+,(r3)+ sob r1,2b 1: movb $'e,(r3)+ dec r2 mov r2,r1 bge 1f movb $'-,(r3)+ neg r1 br 2f 1: movb $'+,(r3)+ 2: clr r0 div $10.,r0 add $'0,r0 movb r0,(r3)+ add $'0,r1 movb r1,(r3)+ rts pc .globl _fmod, retrn _fmod: mov r5,-(sp) mov sp,r5 movf 4(r5),fr0 divf 12.(r5),fr0 modf $one,fr0 mulf 12.(r5),fr1 movf 4(r5),fr0 subf fr1,fr0 jmp retrn one = 40200 / C library -- fork / pid = fork(); / / pid == 0 in child process; pid == -1 means error return .globl _fork, retrn, cerror _fork: mov r5,-(sp) mov sp,r5 sys fork br 1f bec 2f jmp cerror 1: clr r0 2: jmp retrn / C library -- fstat / error = fstat(file, statbuf); / int statbuf[17] or / char statbuf[34] / as appropriate .globl _fstat, retrn, cerror _fstat: mov r5,-(sp) mov sp,r5 mov 4(r5),r0 mov 6(r5),0f sys 0; 9f bec 1f jmp cerror 1: clr r0 jmp retrn .data 9: sys fstat; 0:.. .globl _gamma,gamma,retrn,savr5 _gamma: mov r5,-(sp) mov sp,r5 mov r5,savr5 movf 4(r5),fr0 jsr r5,gamma clr savr5 jmp retrn / getw/getc -- get words/characters from input file / fopen -- open a file for use by get(c|w) indir = 0 .globl _getc, _getw, _fopen .globl cerror .comm _errno,2 _fopen: mov r5,-(sp) mov sp,r5 mov 4(r5),0f sys 0; 9f .data 9: sys open; 0:..; 0 .text bes badret mov 6(r5),r1 mov r0,(r1)+ clr (r1)+ clr r0 mov (sp)+,r5 rts pc _getw: clr _errno mov r5,-(sp) mov sp,r5 mov 4(r5),r1 jsr pc,getc1 mov r0,-(sp) jsr pc,getc1 swab r0 bis (sp)+,r0 mov (sp)+,r5 rts pc _getc: mov r5,-(sp) mov sp,r5 mov 4(r5),r1 jsr pc,getc1 mov (sp)+,r5 rts pc getc1: dec 2(r1) bge 1f mov r1,r0 add $6,r0 mov r0,0f mov r0,4(r1) mov (r1),r0 sys 0; 9f .data 9: sys read; 0:..; 512. .text bes badret tst r0 beq badret dec r0 mov r0,2(r1) 1: clr r0 bisb *4(r1),r0 inc 4(r1) rts pc badret: jmp cerror / getchar() -- get a character from input file fin .globl _getchar .comm _errno,2 .comm _fin,518. _getchar: mov r5,-(sp) mov sp,r5 dec _fin+2 bge 1f mov $_fin+6,_fin+4 mov _fin,r0 sys read; _fin+6; 512. bes badret tst r0 beq badret dec r0 mov r0,_fin+2 1: clr r0 bisb *_fin+4,r0 inc _fin+4 mov (sp)+,r5 rts pc badret: mov r0,_errno clr r0 clr _fin+2 mov (sp)+,r5 rts pc Â..j.kabort.slatan.smatan2.snatof.sochdir.spchmod.sqchown.srclose.sscos.stcrand.sucreat.svcrt0.swcrypt.sxdup.syecvt.szerrlst.c{execl.s|execv.s}exit.s~exp.sffltpr.s€floor.s�fltpr.s‚fmod.sƒfork.s„fstat.s…gamma.s†getc.s‡getchr.sˆgetcsw.s/ C library - getcsw / csw = getcsw(); .globl _getcsw _getcsw: sys 38. rts pc / C library -- getgid / gid = getgid(); / getgid = 47. .globl _getgid, retrn _getgid: mov r5,-(sp) mov sp,r5 sys getgid bic $!377,r0 jmp retrn getpw(uid, buf) int uid; char buf[]; { auto pbuf[259]; static pwf; register n, c; register char *bp; if(pwf == 0) { fopen("/etc/passwd", pbuf); pwf = pbuf[0]; } else pbuf[0] = pwf; if(pwf < 0) return(1); seek(pwf, 0, 0); pbuf[1] = 0; pbuf[2] = 0; for (;;) { bp = buf; while((c=getc(pbuf)) != '\n') { if(c == '\0') return(1); *bp++ = c; } *bp++ = '\0'; bp = buf; n = 3; while(--n) while((c = *bp++) != ':') if(c == '\n') return(1); while((c = *bp++) != ':') { if(c<'0' || c>'9') continue; n = n*10+c-'0'; } if(n == uid) return(0); } return(1); } / C library -- getuid / uid = getuid(); / .globl _getuid, retrn _getuid: mov r5,-(sp) mov sp,r5 sys getuid bic $!377,r0 jmp retrn / C library -- gtty / error = gtty(filep, ttyvec); / filep is descriptor of open tty / ttyvec[0, 1, 2] correspond to args of gtty .globl _gtty, retrn, cerror _gtty: mov r5,-(sp) mov sp,r5 mov 4(r5),r0 mov 6(r5),0f sys 0; 9f bec 1f jmp cerror 1: clr r0 jmp retrn .data 9: sys gtty; 0:.. .globl _hmul _hmul: mov 2(sp),r0 mul 4(sp),r0 rts pc / C library-- hash switch .globl hswitch / jsr pc,hswitch; size; table; default / p0 / 0 / ... /p0: L; V / ... / 0 hswitch: mov (sp)+,r1 mov r2,-(sp) mov r3,-(sp) mov r0,r3 clr r2 div (r1)+,r2 asl r3 add (r1)+,r3 mov (r3),r3 beq 1f 2: mov (r3)+,r2 beq 1f cmp (r3)+,r0 bne 2b mov (sp)+,r3 rts r2 1: mov (sp)+,r3 mov (sp)+,r2 jmp *(r1)+ / C library -- kill .globl _kill, retrn, cerror kill = 37. indir = 0 _kill: mov r5,-(sp) mov sp,r5 mov 4(sp),r0 mov 6(sp),8f sys indir; 9f .data 9: sys kill; 8:.. .text bec 1f jmp cerror 1: clr r0 jmp retrn / C library -- link / error = link(old-file, new-file); / .globl _link, retrn, cerror _link: mov r5,-(sp) mov sp,r5 mov 4(r5),0f mov 6(r5),0f+2 sys 0; 9f bec 1f jmp cerror 1: clr r0 jmp retrn .data 9: sys link; 0:..; .. / C library -- long output conversion .globl _locv _locv: mov r5,-(sp) mov sp,r5 mov r4,-(sp) mov r3,-(sp) mov r2,-(sp) mov $buf,r4 mov 6(r5),r3 mov 4(r5),r2 bpl 1f neg r2 neg r3 sbc r2 movb $'-,(r4)+ 1: jsr pc,1f clrb (r4)+ mov $buf,r0 mov (sp)+,r2 mov (sp)+,r3 mov (sp)+,r4 mov (sp)+,r5 rts pc 1: jsr pc,divid add $'0,r1 mov r1,-(sp) ashc $0,r2 beq 1f jsr pc,1b 1: movb (sp)+,(r4)+ rts pc divid: clr r1 mov $32.,r0 1: ashc $1,r2 rol r1 cmp r1,$10. blo 2f sub $10.,r1 inc r3 2: sob r0,1b rts pc .bss buf: .=.+12. .globl _log,log,retrn,savr5 _log: mov r5,-(sp) mov sp,r5 mov r5,savr5 movf 4(r5),fr0 jsr r5,log clr savr5 jmp retrn / C library -- return floating-point from long integer .globl _ltod _ltod: mov r5,-(sp) mov sp,r5 setl movif *4(r5),fr0 seti mov (sp)+,r5 rts pc / C library -- makdir / error = makdir(string); .globl _makdir, retrn, cerror _makdir: mov r5,-(sp) mov sp,r5 mov 4(r5),0f sys 0; 9f bec 1f jmp cerror 1: clr r0 jmp retrn .data 9: sys makdir; 0:.. / C runtime startoff including monitoring cbufs = 150. .globl _monitor .globl _sbrk .globl _main .globl _exit .globl _etext .comm savr5,2 start: setd mov sp,r0 mov (r0),-(sp) tst (r0)+ mov r0,2(sp) mov $_etext,r1 sub $eprol,r1 add $7,r1 ash $-3,r1 bic $!17777,r1 mov $cbufs,-(sp) add $3*[cbufs+1],r1 mov r1,-(sp) asl r1 mov r1,-(sp) jsr pc,_sbrk tst (sp)+ cmp r0,$-1 beq 9f mov r0,-(sp) add $6,r0 mov r0,countbase mov $_etext,-(sp) mov $eprol,-(sp) jsr pc,_monitor add $10.,sp jsr pc,_main cmp (sp)+,(sp)+ jsr pc,_exit 9: mov $1,r0 sys write; 8f; 9f-8f .data; 8: ; 9:.even; .text _exit: mov r5,-(sp) mov sp,r5 clr -(sp) jsr pc,_monitor tst (sp)+ mov 4(r5),r0 sys exit .globl mrsave .globl rsave .globl rretrn mrsave: mov *(r5)+,r1 bne 1f mov countbase,r1 add $6,countbase mov r5,(r1)+ mov r1,*-2(r5) 1: inc 2(r1) bne rsave inc (r1) rsave: mov r5,r0 mov sp,r5 mov r4,-(sp) mov r3,-(sp) mov r2,-(sp) sub (r0)+,sp jmp (r0) rretrn: sub $6,r5 mov r5,sp mov (sp)+,r2 mov (sp)+,r3 mov (sp)+,r4 mov (sp)+,r5 rts pc .bss countbase: .=.+2 .text eprol: / C library-- mdate .globl _mdate, retrn, cerror _mdate: mov r5,-(sp) mov sp,r5 mov 4(r5),0f mov 6(r5),r1 mov (r1)+,r0 mov (r1),r1 sys 0; 9f bec 1f jmp cerror 1: clr r0 jmp retrn .data 9: sys mdate; 0:.. / C library -- mknod / error = mknod(string, mode, major.minor); .globl _mknod, retrn, cerror mknod = 14. _mknod: mov r5,-(sp) mov sp,r5 mov 4(r5),0f mov 6(r5),0f+2 mov 8(r5),0f+4 sys 0; 9f bec 1f jmp cerror 1: clr r0 jmp retrn .data 9: sys mknod; 0:..; ..; .. monitor(lowpc, highpc, buf, bufsiz, cntsiz) char *lowpc, *highpc; int *buf, bufsiz; { register char *o; static *sbuf, ssiz; if (lowpc == 0) { profil(0, 0, 0, 0); o = creat("mon.out", 0666); write(o, sbuf, ssiz<<1); close(o); return; } if (nargs() <= 4) cntsiz = 0; ssiz = bufsiz; buf[0] = lowpc; buf[1] = highpc; buf[2] = cntsiz; sbuf = buf; buf =+ 3*(cntsiz+1); bufsiz =- 3*(cntsiz+1); if (bufsiz<=0) return; o = ((highpc - lowpc)>>1) & 077777; if(bufsiz < o) o = ldiv(bufsiz, 0, o<<1); else o = 077777; profil(buf, bufsiz<<1, lowpc, o<<1); } / C library -- mount / error = mount(dev, file, flag) .globl _mount, retrn, cerror _mount: mov r5,-(sp) mov sp,r5 mov 4(sp),0f mov 6(sp),0f+2 mov 8(sp),0f+4 sys 0; 9f bec 1f jmp cerror 1: clr r0 jmp retrn .data 9: sys mount; 0:..; ..; .. / C library -- nargs .globl _nargs _nargs: mov 2(r5),r1 / pc of caller of caller mov r5,-(sp) mov sp,r5 clr r0 cmp -4(r1),jsrsd bne 1f mov $2,r0 1: cmp (r1),tsti bne 1f add $2,r0 br 2f 1: cmp (r1),cmpi bne 1f add $4,r0 br 2f 1: cmp (r1),addi bne 2f add 2(r1),r0 2: asr r0 mov (sp)+,r5 rts pc jsrsd: jsr pc,*$0 tsti: tst (sp)+ cmpi: cmp (sp)+,(sp)+ addi: add $0,sp / C library-- nice / error = nice(hownice) .globl _nice, retrn, cerror _nice: mov r5,-(sp) mov sp,r5 mov 4(sp),r0 sys nice bec 1f jmp cerror 1: clr r0 jmp retrn / C library -- nlist / struct { / char name[8]; / int type; / int value; / } list[]; / terminated by a null name. / nlist(file, list); .globl _nlist, savr5, nlist .data _nlist: mov r5,-(sp) mov sp,savr5 mov 4(sp),0f mov 6(sp),0f+2 jsr r5,nlist; 0:..; .. mov (sp)+,r5 rts pc / C library -- open / file = open(string, mode) / / file == -1 means error .globl _open, retrn, cerror _open: mov r5,-(sp) mov sp,r5 mov 4(r5),0f mov 6(r5),0f+2 sys 0; 9f bec 1f jmp cerror 1: jmp retrn .data 9: sys open; 0:..; .. int errno; int sys_nerr; char *sys_errlist[]; perror(s) char *s; { char *c; c = "Unknown error"; if(errno < sys_nerr) c = sys_errlist[errno]; if(*s == '\0') printf("%s", c); else printf("%s: %s\n", s, c); } / pipe -- C library / pipe(f) / int f[2]; .globl _pipe, retrn, cerror pipe = 42. _pipe: mov r5,-(sp) mov sp,r5 sys pipe bec 1f jmp cerror 1: mov 4(r5),r2 mov r0,(r2)+ mov r1,(r2) clr r0 jmp retrn / C library -- pow (power) .globl _pow .globl savr5 .globl retrn .globl pow _pow: mov r5,-(sp) mov sp,r5 mov r5,savr5 movf 4(r5),fr0 movf 12.(r5),fr1 jsr r5,pow clr savr5 jmp retrn / C library -- printf .globl _printf .globl _ndigit .globl pfloat .globl pscien .globl _putchar .globl rsave .globl rretrn _printf: jsr r5,rsave; 128. mov 4(r5),formp / format mov r5,r4 add $6,r4 / arglist loop: movb *formp,r0 beq 1f inc formp cmp r0,$'% beq 2f 3: mov r0,(sp) jsr pc,*$_putchar br loop 1: jmp rretrn 2: clr rjust clr _ndigit cmpb *formp,$'- bne 2f inc formp inc rjust 2: jsr r3,gnum; width clr ndfnd cmp r0,$'. bne 1f jsr r3,gnum; _ndigit 1: mov sp,r3 mov $swtab,r1 1: mov (r1)+,r2 beq 3b cmp r0,(r1)+ bne 1b jmp (r2) swtab: decimal; 'd octal; 'o hex; 'x float; 'f scien; 'e charac; 'c string; 's logical; 'l 0; 0 decimal: mov (r4)+,r1 bge 1f neg r1 movb $'-,(r3)+ br 1f logical: mov (r4)+,r1 1: jsr pc,1f br prbuf 1: clr r0 div $10.,r0 mov r1,-(sp) mov r0,r1 beq 1f jsr pc,1b 1: mov (sp)+,r0 add $'0,r0 movb r0,(r3)+ rts pc charac: movb (r4)+,(r3)+ bne 1f dec r3 1: movb (r4)+,(r3)+ bne prbuf dec r3 br prbuf string: mov _ndigit,r1 clr r3 mov (r4),r2 1: tstb (r2)+ beq 1f inc r3 sob r1,1b 1: mov (r4)+,r2 br prstr hex: mov $1f,r2 .data 1: -4; !17 .text br 2f octal: mov $1f,r2 .data 1: -3; !7 .text 2: mov (r4)+,r1 clr r0 jsr pc,1f br prbuf 1: mov r1,-(sp) ashc (r2),r0 beq 1f jsr pc,1b 1: mov (sp)+,r0 bic 2(r2),r0 add $'0,r0 cmp r0,$'9 ble 1f add $'A-'0-10.,r0 1: movb r0,(r3)+ rts pc float: mov ndfnd,r2 jsr pc,pfloat br prbuf scien: mov ndfnd,r2 jsr pc,pscien br prbuf prbuf: mov sp,r2 sub r2,r3 prstr: mov r4,-(sp) mov $' ,-(sp) mov r3,r4 neg r3 add width,r3 ble 1f tst rjust bne 1f 2: jsr pc,*$_putchar sob r3,2b 1: tst r4 beq 2f 1: movb (r2)+,(sp) jsr pc,*$_putchar sob r4,1b 2: tst r3 ble 1f mov $' ,(sp) 2: jsr pc,*$_putchar sob r3,2b 1: tst (sp)+ mov (sp)+,r4 jmp loop gnum: clr ndfnd clr r1 1: movb *formp,r0 inc formp sub $'0,r0 cmp r0,$9. bhi 1f inc ndfnd mul $10.,r1 add r0,r1 br 1b 1: add $'0,r0 mov r1,*(r3)+ rts r3 .bss width: .=.+2 formp: .=.+2 rjust: .=.+2 ndfnd: .=.+2 / profil .globl _profil .globl retrn _profil: mov r5,-(sp) mov sp,r5 mov 4(r5),0f mov 6(r5),0f+2 mov 10(r5),0f+4 mov 12(r5),0f+6 sys 0; 9f jmp retrn .data 9: sys 44.; 0:..; ..; ..; .. / putw/putc -- write words/characters on output file .globl _putc, _putw, _fflush, _fcreat .globl cerror .comm _errno,2 _fcreat: mov r5,-(sp) mov sp,r5 mov 4(r5),0f mov 6(r5),r1 mov pc,(r1) / a putatively illegal file desc. sys 0; 9f .data 9: sys creat; 0:..; 666 .text bes badret mov r0,(r1)+ clr (r1)+ clr (r1)+ br goodret _putw: mov r5,-(sp) mov sp,r5 mov 4(r5),r0 mov 6(r5),r1 mov r0,-(sp) jsr pc,putc1 mov (sp)+,r0 swab r0 jsr pc,putc1 br goodret _putc: mov r5,-(sp) mov sp,r5 mov 4(r5),r0 mov 6(r5),r1 jsr pc,putc1 mov 4(r5),r0 br goodret putc1: dec 2(r1) blt 1f movb r0,*4(r1) inc 4(r1) rts pc 1: mov r0,-(sp) jsr pc,fl mov (sp)+,r0 br putc1 _fflush: mov r5,-(sp) mov sp,r5 mov 4(r5),r1 jsr pc,fl br goodret fl: mov r1,r0 add $6,r0 mov r0,-(sp) mov r0,0f mov 4(r1),0f+2 beq 1f sub (sp),0f+2 mov (r1),r0 sys 0; 9f .data 9: sys write; 0:..; .. .text 1: mov (sp)+,4(r1) mov $512.,2(r1) rts pc badret: jmp cerror goodret: clr _errno mov (sp)+,r5 rts pc / C library -- putchar .globl _putchar,_flush .globl _fout _putchar: mov r5,-(sp) mov sp,r5 mov _fout+4,r0 bne 1f jsr pc,fl mov _fout+4,r0 1: movb 4(r5),(r0)+ beq 1f inc _fout+4 dec _fout+2 bgt 1f jsr pc,fl 1: mov 4(r5),r0 mov (sp)+,r5 rts pc _flush: mov r5,-(sp) mov sp,r5 jsr pc,fl mov (sp)+,r5 rts pc fl: mov _fout+4,r0 beq 1f sub $_fout+6,r0 mov r0,0f mov _fout,r0 bne 2f inc r0 2: sys 0; 9f .data 9: sys write; _fout+6; 0:.. .text 1: mov $_fout+6,_fout+4 mov $512.,_fout+2 cmp _fout,$2 bhi 1f mov $1,_fout+2 1: rts pc .bss _fout: .=.+518. int (*qscmp)(); int qses; qsort(a, n, es, fc) char *a; int n, es; int (*fc)(); { qscmp = fc; qses = es; qs1(a, a+n*es); } qs1(a, l) char *a, *l; { register char *i, *j; register es; char *lp, *hp; int n, c; es = qses; start: if((n=l-a) <= es) return; n = (n/(2*es))*es; hp = lp = a+n; i = a; j = l-es; for(;;) { if(i < lp) { if((c = (*qscmp)(i, lp)) == 0) { qsexc(i, lp =- es); continue; } if(c < 0) { i =+ es; continue; } } loop: if(j > hp) { if((c = (*qscmp)(hp, j)) == 0) { qsexc(hp =+ es, j); goto loop; } if(c > 0) { if(i == lp) { qstexc(i, hp =+ es, j); i = lp =+ es; goto loop; } qsexc(i, j); j =- es; i =+ es; continue; } j =- es; goto loop; } if(i == lp) { if(lp-a >= l-hp) { qs1(hp+es, l); l = lp; } else { qs1(a, lp); a = hp+es; } goto start; } qstexc(j, lp =- es, i); j = hp =- es; } } qsexc(i, j) char *i, *j; { register char *ri, *rj, c; int n; n = qses; ri = i; rj = j; do { c = *ri; *ri++ = *rj; *rj++ = c; } while(--n); } qstexc(i, j, k) char *i, *j, *k; { register char *ri, *rj, *rk; char c; int n; n = qses; ri = i; rj = j; rk = k; do { c = *ri; *ri++ = *rk; *rk++ = *rj; *rj++ = c; } while(--n); } / C library -- read / nread = read(file, buffer, count); / / nread ==0 means eof; nread == -1 means error .globl _read, retrn, cerror _read: mov r5,-(sp) mov sp,r5 mov 4(r5),r0 mov 6(r5),0f mov 8(r5),0f+2 sys 0; 9f bec 1f jmp cerror 1: jmp retrn .data 9: sys read; 0:..; .. / C library -- reset, setexit / reset() / will generate a "return" from / the last call to / setexit() / by restoring sp, r5 / and doing a return. / / useful for going back to the main loop / after a horrible error in a lowlevel / routine. .globl _setexit .globl _reset _setexit: mov sp,ssp mov r5,sr5 mov (sp),spc rts pc _reset: mov ssp,sp mov sr5,r5 mov spc,(sp) rts pc .bss ssp: .=.+2 sr5: .=.+2 spc: .=.+2 ‰getgid.sŠgetpw.c‹getuid.sŒgtty.s�hmul.sŽhsw.s�kill.s�link.s‘locv.s’log.s“ltod.s”makdir.s•mcrt0.s–mdate.s—mknod.s˜mon.c™mount.sšnargs.s›nice.sœnlist.s�open.sžperror.cŸpipe.s pow.s¡printf.s¢prof.s£putc.s¤putchr.s¥qsort.c¦read.s§reset.s¨retrn.s/ C return sequence .globl retrn, cerror, _errno cerror: mov r0,_errno mov $-1,r0 retrn: mov r5,sp mov (sp)+,r5 rts pc .bss _errno: .=.+2 rin() { register n, c, f; f = 1; n = 0; loop: c = getchar(); if(c == '\0') exit(); if(c == '-') { f = -f; goto loop; } if(c>='0' && c<='9') { n = n*10+c-'0'; goto loop; } return(n*f); } / C register save and restore .globl rsave .globl mrsave .globl rretrn mrsave: tst (r5)+ rsave: mov r5,r0 mov sp,r5 mov r4,-(sp) mov r3,-(sp) mov r2,-(sp) sub (r0)+,sp jmp (r0) rretrn: sub $6,r5 mov r5,sp mov (sp)+,r2 mov (sp)+,r3 mov (sp)+,r4 mov (sp)+,r5 rts pc /old = sbrk(increment); / /sbrk gets increment more core, and returns a pointer / to the beginning of the new core area / .globl _sbrk,_end, retrn, cerror _sbrk: mov r5,-(sp) mov sp,r5 mov nd,0f add 4(r5),0f sys 0; 9f bec 1f jmp cerror 1: mov nd,r0 add 4(r5),nd jmp retrn .globl _brk / brk(value) / as described in man2. / returns 0 for ok, -1 for error. _brk: mov r5,-(sp) mov sp,r5 mov 4(r5),0f sys 0; 9f bec 1f jmp cerror 1: mov 4(r5),nd clr r0 jmp retrn .data 9: sys break; 0:.. nd: _end / C library -- seek / error = seek(file, offset, ptr); .globl _seek, retrn, cerror _seek: mov r5,-(sp) mov sp,r5 mov 4(r5),r0 mov 6(r5),0f mov 8(r5),0f+2 sys 0; 9f bec 1f jmp cerror 1: clr r0 jmp retrn .data 9: sys seek; 0:..; .. / C library -- setgid / error = setgid(uid); setgid = 46. .globl _setgid, retrn, cerror _setgid: mov r5,-(sp) mov sp,r5 mov 4(r5),r0 sys setgid bec 1f jmp cerror 1: clr r0 jmp retrn / C library -- setuid / error = setuid(uid); .globl _setuid, retrn, cerror _setuid: mov r5,-(sp) mov sp,r5 mov 4(r5),r0 sys setuid bec 1f jmp cerror 1: clr r0 jmp retrn / C library -- signal / signal(n, 0); /* default action on signal(n) */ / signal(n, odd); /* ignore signal(n) */ / signal(n, label); /* goto label on signal(n) */ rti = 2 signal = 48. .globl _signal, retrn, cerror _signal: mov r5,-(sp) mov sp,r5 mov 4(r5),r1 mov r1,0f mov 6(r5),0f+2 beq 1f bit $1,0f+2 bne 1f mul $6.,r1 add $vect-6.,r1 cmp r1,$vect blo 2f cmp r1,$evect bhis 2f mov 0f+2,4(r1) mov r1,0f+2 1: sys 0; 9f bes 3f jmp retrn 2: mov $22.,r0 / EINVAL 3: jmp cerror 1: mov r1,-(sp) mov r2,-(sp) mov r3,-(sp) mov r4,-(sp) jsr pc,*(r0)+ mov (sp)+,r4 mov (sp)+,r3 mov (sp)+,r2 mov (sp)+,r1 mov (sp)+,r0 rti .data vect: jsr r0,1b; .. jsr r0,1b; .. jsr r0,1b; .. jsr r0,1b; .. jsr r0,1b; .. jsr r0,1b; .. jsr r0,1b; .. jsr r0,1b; .. jsr r0,1b; .. jsr r0,1b; .. jsr r0,1b; .. jsr r0,1b; .. evect: 9: sys signal; 0:..; .. .globl _sin,sin,retrn,savr5 _sin: mov r5,-(sp) mov sp,r5 mov r5,savr5 movf 4(r5),fr0 jsr r5,sin clr savr5 jmp retrn .globl _sleep, retrn sleep = 35. _sleep: mov r5,-(sp) mov sp,r5 mov 4(r5),r0 sys sleep jmp retrn .globl _sqrt,sqrt,retrn,savr5 _sqrt: mov r5,-(sp) mov sp,r5 mov r5,savr5 movf 4(r5),fr0 jsr r5,sqrt clr savr5 jmp retrn / C library-- simple switch .globl sswitch / jsr pc,sswitch / L; V / ... / 0; default sswitch: mov (sp)+,r1 mov r2,-(sp) 1: mov (r1)+,r2 beq 1f cmp (r1)+,r0 bne 1b rts r2 1: mov (sp)+,r2 jmp *(r1)+ / C library -- stat / error = stat(string, statbuf); / int statbuf[18] or / char statbuf[36] / as appropriate .globl _stat, retrn, cerror _stat: mov r5,-(sp) mov sp,r5 mov 4(r5),0f mov 6(r5),0f+2 sys 0; 9f bec 1f jmp cerror 1: clr r0 jmp retrn .data 9: sys stat; 0:..; .. .globl _stime, retrn, cerror _stime: mov r5,-(sp) mov sp,r5 mov 4(sp),r1 mov (r1)+,r0 mov (r1),r1 sys stime bec 1f jmp cerror 1: clr r0 jmp retrn / C library -- stty / error = stty(filep, ttyvec); / filep is descriptor of open tty / ttyvec[0, 1, 2] correspond to args of stty .globl _stty, retrn, cerror _stty: mov r5,-(sp) mov sp,r5 mov 4(r5),r0 mov 6(r5),0f sys 0; 9f bec 1f jmp cerror 1: clr r0 jmp retrn .data 9: sys stty; 0:.. / C library -- switch .globl bswitch bswitch: mov *(sp)+,r1 1: cmp (r1)+,r0 beq 1f tst (r1)+ bne 1b 2: mov -4(r1),pc 1: mov (r1)+,r0 beq 2b mov r0,pc .globl _sync, retrn sync = 36. _sync: mov r5,-(sp) mov sp,r5 sys sync jmp retrn / C library -- time / tvec = time(tvec); / / tvec[0], tvec[1] contain the time .globl _time, retrn _time: mov r5,-(sp) mov sp,r5 sys time mov r2,-(sp) mov 4(r5),r2 mov r0,(r2)+ mov r1,(r2)+ mov (sp)+,r2 jmp retrn / C library -- times .globl _times, retrn times = 43. _times: mov r5,-(sp) mov sp,r5 mov 4(r5),0f sys 0; 9f jmp retrn .data 9: sys times; 0:.. / C library -- umount/ .globl _umount, retrn .comm _errno,2 .data _umount: mov r5,-(sp) mov sp,r5 mov 4(sp),0f sys umount; 0:.. bes 1f clr r0 br 2f 1: mov r0,_errno mov $-1,r0 2: jmp retrn / C library -- unlink / error = unlink(string); / .globl _unlink, retrn, cerror _unlink: mov r5,-(sp) mov sp,r5 mov 4(r5),0f sys 0; 9f bec 1f jmp cerror 1: clr r0 jmp retrn .data 9: sys unlink; 0:.. / C library -- wait / pid = wait(); / or, / pid = wait(&status); / / pid == -1 if error / status indicates fate of process, if given .globl _wait, _nargs, retrn, cerror _wait: mov r5,-(sp) mov sp,r5 jsr pc,_nargs mov r0,-(sp) sys wait bec 1f tst (sp)+ jmp cerror 1: tst (sp)+ beq 2f mov r1,*4(r5) / status return 2: jmp retrn / C library -- write / nwritten = write(file, buffer, count); / / nwritten == -1 means error .globl _write, retrn, cerror _write: mov r5,-(sp) mov sp,r5 mov 4(r5),r0 mov 6(r5),0f mov 8(r5),0f+2 sys 0; 9f bec 1f jmp cerror 1: jmp retrn .data 9: sys write; 0:..; .. ©rin.cªrsave.s«sbrk.s¬seek.s­setgid.s®setuid.s¯signal.s°sin.s±sleep.s²sqrt.s³ssw.s´stat.sµstime.s¶stty.s·switch.s¸sync.s¹time.sºtimes.s»umount.s¼unlink.s½wait.s¾write.s/ / copyright 1972 bell telephone laboratories inc. / / roff1 -- text formatter .globl ttyn nop = 000240 signal = 48. ibuf: /init code in ibuf+obuf cmp sp,$end bhi 1f jsr r5,string; emes1 sys exit 1: clr r0 jsr pc,mesg sys signal; 1; place sys signal; 2; place jsr pc,makebf sys open; suffil; 0 bes 1f mov r0,suff sys seek; 20; 0 bes 1f mov suff,r0 sys read; suftab; 2*26. 1: clr r0 mov (sp)+,argc dec argc bne 1f jmp place 1: tst (sp)+ mov (sp),r4 cmpb (r4)+,$'+ bne 2f jsr r5,pnum; pfrom br 3f 2: cmpb -1(r4),$'- bne 2f cmpb (r4),$'s bne 0f inc stop br 3f 0: cmpb (r4),$'h bne 0f clr slow br 3f 0: jsr r5,pnum; pto 3: dec argc bgt 1b 2: mov $nop,get1a mov $ibuf,ibufp mov $ibuf,eibuf mov sp,argp jsr pc,topbot clr r0 1: movb r0,trtab(r0) inc r0 cmp r0,$128. bne 1b jsr pc,rbreak jsr pc,istop jmp loop makebf: sys stat; bfn; stbuf bec 2f sys creat; bfn; 400 bec 1f 2: incb bfn+8 cmpb bfn+8,$'z blos makebf jmp place 1: mov r0,ibf sys write; sufbuf;128. sys open; bfn;0 mov r0,ibf1 rts pc string: mov (r5)+,r1 mov r1,r2 mov r1,0f 1: tstb (r1)+ bne 1b sub r2,r1 mov r1,1f mov $1,r0 sys write; 0:..; 1:.. rts r5 emes1: xxx: .even obuf=ibuf+512. .=ibuf+1024. loop: clr nlflg jsr pc,getchar cmpb r0,cc beq 2f movb r0,ch jsr pc,text br loop 2: jsr pc,control jsr pc,flushi br loop mesg: tst r0 bne setsame jsr pc,ttyn movb r0,ttyx+8. sys stat; ttyx; stbuf mov stbuf+4,0f mov 0f,1f bic $22,0f sys chmod; ttyx; 0:.. rts pc setsame: sys chmod; ttyx; 1:.. rts pc pnum: mov r4,ibufp mov $37777,eibuf jsr r5,number1; 0 mov r0,*(r5)+ clr ch rts r5 flushi: clr ch tst nlflg bne 1f jsr pc,getchar br flushi 1: rts pc gettchar: tst ul ble getchar tst ulstate beq 3f tst bsc bgt 1f tst ulc bgt 2f clr ulstate br 3f 1: dec bsc mov $010,r0 rts pc 2: dec ulc mov $'_,r0 rts pc 3: jsr pc,getchar cmp r0,$'0 blt 1f cmp r0,$'9 ble 2f cmp r0,$'A blt 1f cmp r0,$'Z ble 2f cmp r0,$'a blt 1f cmp r0,$'z ble 2f 1: tst ulc bgt 3f rts pc 3: mov $1,ulstate mov r0,ch br gettchar 2: inc bsc inc ulc rts pc getchar: mov ch,r0 beq 1f clr ch rts pc 1: tst nlflg beq 1f mov $'\n,r0 rts pc 1: jsr pc,get1 cmp r0,$'\\ bne 2f jsr pc,get1 jsr r5,switch; esctab br 3f 2: cmp r0,$033 /prefix bne 3f jsr pc,get1 jsr r5,switch; pfxtab 3: cmp r0,$'\n bne 3f inc nlflg clr column 3: mov r1,-(sp) jsr pc,width add r1,column mov (sp)+,r1 rts pc esctab: .byte 'd, 032 /hlf (down) .byte 'u, 035 /hlr (up) .byte 'r, 036 /flr (reverse) .byte 'x, 016 /SO (extra chars) .byte 'y, 017 /SI (normal characters) .byte 'l, 0177 /delete .byte 't, 011 /hor tab .byte 'a, 0100 /at sign .byte 'n, 043 /number sign .byte '\\, 134 /backslash .byte 0, 0 pfxtab: .byte '7, 036 /flr .byte '8, 035 /hlr .byte '9, 032 /hlf .byte '4, 030 /brs .byte '3, 031 /rrs .byte '1, 026 /set hor tabs .byte '2, 027 /clr hor tabs .byte 0,0 pfxtab1: switch: mov r1,-(sp) mov (r5)+,r1 1: cmpb (r1)+,r0 beq 1f tstb (r1)+ bne 1b cmp r1,$pfxtab ble 0f cmp r1,$pfxtab1 bgt 0f mov $037,r0 0: mov (sp)+,r1 rts r5 1: movb (r1)+,r0 mov (sp)+,r1 rts r5 get1: tst nspace ble 1f dec nspace mov tabc,r0 rts pc 1: mov r1,-(sp) 4: tst ip beq 5f jsr pc,rbf br 6f 5: tst nx bne 0f mov ibufp,r1 cmp r1,eibuf bne 3f 0: mov ifile,r0 bne 2f 1: jsr pc,nextfile 2: clr nx sys read; ibuf; 512. bes done tst r0 beq 1b mov $ibuf,r1 add r1,r0 mov r0,eibuf 3: movb (r1)+,r0 mov r1,ibufp 1: cmp r0,$011 /tab bne 6f mov (sp)+,r1 mov $tabtab,r0 inc nspace 1: tstb (r0) beq get1 cmpb column,(r0)+ bge 1b movb -(r0),nspace sub column,nspace br get1 6: get1a: br 7f tst r0 beq 4b 7: mov (sp)+,r1 rts pc nextfile: mov ifile,r0 beq 1f sys close 1: tst nx beq 2f mov $nextf,0f br 3f 2: dec argc blt done mov *argp,0f add $2,argp 3: sys open; 0:..; 0 bes done mov r0,ifile rts pc done: jsr pc,rbreak jsr pc,eject jsr pc,flush place: sys signal; 2; 1 mov $1,r0 jsr pc,mesg sys unlink; bfn sys exit rts pc putchar: cmp pn,pfrom blt 2f clr pfrom bic $!177,r0 beq 2f movb trtab(r0),r0 cmp r0,$' bne 1f inc nsp 2: rts pc 1: cmp r0,$'\n bne 1f clr nsp clr ocol br 2f 1: tst nsp beq 2f tst slow bne 4f jsr pc,dsp cmp nsp,r1 blt 4f mov $011,3f+2 cmp r1,$1 bgt 8f mov $040,3f+2 dec nsp br 9f 8: sub r1,nsp 9: mov r0,-(sp) 3: mov $011,r0 jsr pc,pchar1 mov (sp)+,r0 br 1b 4: mov r0,-(sp) mov $' ,r0 jsr pc,pchar1 mov (sp)+,r0 dec nsp bne 4b 2: cmp r0,$026 blt 2f cmp r0,$037 beq 3f bgt 2f mov r0,-(sp) jsr r5, switch; unpfx cmp (sp)+,r0 beq 2f mov r0,-(sp) mov $033,r0 /prefix jsr pc,pchar1 dec ocol mov (sp)+,r0 2: pchar1: cmp r0,$011 bne 1f jsr pc,dsp br 2f 1: jsr pc,width 2: add r1,ocol movb r0,*obufp inc obufp cmp obufp,$obuf+128. beq flush 3: rts pc dsp: clr r1 1: add $8.,r1 cmp ocol,r1 bgt 1b sub ocol,r1 bne 2f mov $8.,r1 2: rts pc unpfx: .byte 032, '9 .byte 035, '8 .byte 036, '7 .byte 031, '3 .byte 030, '4 .byte 026, '1 .byte 027, '2 .byte 0,0 flush: mov obufp,r0 sub $obuf,r0 mov r0,0f mov $1,r0 sys write; obuf; 0:0 mov $obuf,obufp rts pc control: jsr pc,getchar mov r0,-(sp) jsr pc,getchar swab r0 bis (sp),r0 mov $contab,r1 1: mov (r1)+,(sp) bic $100000,(sp) cmp r0,(sp) bne 4f mov (r1),(sp) tst -(r1) bpl 3f jsr pc,flushi cmp ilistp,$iliste bgt 5f mov ip,*ilistp add $2,ilistp mov (sp),ip br 5f 3: jmp *(sp)+ 4: cmp (r1)+,$-1 bne 1b 5: tst (sp)+ rts pc contab: ; casead ; casebp
; casebr ; casecc ; casece ; caseds ; casefi ; casein ; caseix

  • ; caseli ; casell ; casels ; casena ; casene ; casenf ; casepa ; casebl ; casepl ; casesk ; casesp ; casess ; caseta ; caseti ; casetr
      ; caseul ; caseun ; casehe ; casehx ; casefo ; caseeh ; caseoh ; caseef ; caseof ; casem1 ; casem2 ; casem3 ; casem4 ; casehc ; casehy ; casen1 ; casen2 ; casenn ; caseni ; casejo ; casear ; casero ; casenx ; casepo ; casede ; caseig ; casetc ; casemk bnames: .=.+100. -1; -1 á â ã ä å æ ç è é ê ë ì í / / copyright 1972 bell telephone laboratories inc. / / roff2 -- runoff casead: jsr pc,rbreak inc ad rts pc rts pc casebr: jsr pc,rbreak rts pc casecc: jsr pc,skipcont jsr pc,getchar cmp r0,$'\n beq 1f movb r0,cc 1: mov r0,ch rts pc casece: jsr pc,rbreak jsr r5,number; 0 jsr pc,min mov r0,ce jsr pc,need rts pc caseds: jsr pc,rbreak mov $2,ls rts pc casefi: jsr pc,rbreak inc fi rts pc casein: jsr pc,rbreak jsr r5,number; in jsr pc,min mov r0,in mov r0,un rts pc caseix: jsr r5,number; in jsr pc,min mov r0,in rts pc caseli: jsr r5,number; 0 mov r0,-(sp) 1: dec (sp) blt 1f jsr pc,flushi clr nlflg jsr pc,text br 1b 1: tst (sp)+ rts pc casell: jsr r5,number; ll jsr pc,min mov r0,ll rts pc casels: jsr pc,rbreak jsr pc,skipcont jsr pc,getchar cmp r0,$'\n bne 1f mov ls1,ls rts pc 1: mov r0,ch jsr r5,number1; ls dec r0 jsr pc,min inc r0 mov r0,ls mov r0,ls1 rts pc casena: jsr pc,rbreak clr ad rts pc casene: jsr r5,number; 0 jsr pc,min jsr pc,need rts pc casenf: jsr pc,rbreak clr fi rts pc casepa: casebp: jsr pc,rbreak jsr pc,eject jsr pc,skipcont tst nlflg bne 1f jsr r5,number; pn jsr pc,min mov r0,pn 1: rts pc casebl: jsr pc,rbreak jsr r5,number; 0 jsr pc,min mov r0,-(sp) jsr pc,need2 1: dec (sp) blt 1f mov $' ,r0 jsr pc,storeline jsr pc,rbreak br 1b 1: tst (sp)+ rts pc casepl: jsr r5,number; pl mov r0,pl jsr pc,topbot rts pc casesk: jsr r5,number; 0 jsr pc,min mov r0,skip rts pc casesp: jsr pc,rbreak jsr r5,number; 0 jsr r5,nlines; nline rts pc casess: jsr pc,rbreak mov $1,ls rts pc casetr: jsr pc,skipcont 1: jsr pc,getchar cmp r0,$'\n beq 1f mov r0,r1 jsr pc,getchar cmp r0,$'\n bne 2f mov $' ,r0 2: movb r0,trtab(r1) br 1b 1: rts pc caseta: mov $tabtab,r1 1: jsr r5,number; 0 jsr pc,min dec r0 ble 1f movb r0,(r1)+ br 1b 1: clrb (r1)+ rts pc caseti: jsr pc,rbreak jsr r5,number; in jsr pc,min mov r0,un rts pc caseul: jsr r5,number; 0 jsr pc,min mov r0,ul rts pc caseun: jsr r5,number; 0 sub in,r0 neg r0 jsr pc,min mov r0,un rts pc casehx: tst hx beq 1f clr hx br 2f 1: inc hx 2: jsr pc,topbot rts pc casehe: jsr r5,headin; ehead mov ehead,ohead rts pc casefo: jsr r5,headin; efoot mov efoot,ofoot rts pc caseeh: jsr r5,headin; ehead rts pc caseoh: jsr r5,headin; ohead rts pc caseef: jsr r5,headin; efoot rts pc caseof: jsr r5,headin; ofoot rts pc casem1: jsr r5,number; ma1 jsr pc,min mov r0,ma1 br 1f casem2: jsr r5,number; ma2 jsr pc,min mov r0,ma2 br 1f casem3: jsr r5,number; ma3 jsr pc,min mov r0,ma3 br 1f casem4: jsr r5,number; ma4 jsr pc,min mov r0,ma4 1: jsr pc,topbot rts pc casehc: jsr pc,skipcont jsr pc,getchar cmp r0,$'\n bne 1f movb $200,r0 1: mov r0,ohc rts pc casetc: jsr pc,skipcont jsr pc,getchar cmp r0,$'\n bne 1f mov $' ,r0 1: mov r0,tabc rts pc casehy: jsr r5,number; 0 mov r0,hyf rts pc casen1: jsr pc,rbreak mov $1,numbmod br 1f casen2: jsr pc,rbreak mov $2,numbmod 1: clr nn jsr r5,number; 0 tst r0 ble 1f mov r0,lnumber rts pc 1: clr numbmod rts pc casenn: jsr r5,number; 0 jsr pc,min mov r0,nn rts pc caseni: jsr r5,number; ni jsr pc,min mov r0,ni rts pc casejo: jsr r5,number; 0 mov r0,jfomod rts pc casear: clr ro rts pc casero: inc ro rts pc casenx: jsr pc,skipcont jsr r5,getname; nextf inc nx jsr pc,nextfile inc nlflg clr ip mov $ilist,ilistp rts pc casepo: jsr pc,rbreak jsr r5,number; po jsr pc,min mov r0,po rts pc casede: tst ip bne 5f jsr pc,skipcont jsr r5,getname; bname clr skp mov $contab,r1 clr -(sp) 1: mov (r1)+,(sp) beq 2f bic $100000,(sp) cmp bname,(sp) bne 3f 2: bis $100000,bname mov nextb,(r1) mov bname,-(r1) br 4f 3: cmp (r1)+,$-1 bne 1b inc skp 4: tst (r1)+ jsr pc,copyb tst (sp)+ 5: rts pc caseig: inc skp jsr pc,copyb rts pc casemk: jsr pc,rbreak mov $002,r0 /stx jsr pc,putchar rts pc / / copyright 1972 bell telephone laboratories inc. / /roff3 -- runoff skipcont: jsr pc,getchar mov r0,r2 jsr pc,alph2 beq skipcont 1: cmp $' ,r0 bne 1f jsr pc,getchar br 1b 1: mov r0,ch rts pc rbreak: tst nc ble 4f clrb *linep inc totout mov ls,r0 dec r0 jsr r5,nlines; nline tst pl beq 4f cmp nl,bl bne 1f 3: jsr pc,eject 1: tst nl bne 3f mov ma1,r0 jsr r5,nlines; newline bit $1,pn bne 1f jsr r5,headout; ehead br 2f 1: jsr r5,headout; ohead 2: mov ma2,r0 jsr r5,nlines; newline dec skip bge 3b 3: mov po,r0 jsr pc,space jsr pc,donum mov un,r0 jsr pc,space jsr pc,jfo mov $line,r2 1: movb (r2)+,r0 cmp $' ,r0 bne 2f jsr pc,fill tst nc bne 1b br 3f 2: jsr pc,putchar dec nc bgt 1b 3: jsr pc,newline clr nwd clr ne mov in,un 4: jsr pc,setnel rts pc jfo: tst jfomod beq 1f mov fac,r0 add fmq,r0 beq 1f clr fac clr fmq mov nel,r0 cmp jfomod,$1 bne 2f asr r0 2: jsr pc,space 1: rts pc donum: tst numbmod beq 2f dec nn blt 1f mov $5,r0 add ni,r0 jsr pc,space rts pc 1: clr r0 cmp lnumber,$100. bge 1f inc r0 cmp lnumber,$10. bge 1f inc r0 1: add ni,r0 jsr pc,space mov lnumber,r0 jsr r5,decimal; putchar mov $2,r0 jsr pc,space inc lnumber 2: rts pc newline: mov $'\n,r0 jsr pc,putchar inc nl rts pc nline: mov nl,r0 beq 1f cmp r0,bl beq 1f jsr pc,newline 1: rts pc number: jsr pc,skipcont number1: mov r1,-(sp) mov r3,-(sp) clr r3 clr -(sp) clr -(sp) 1: jsr pc,getchar cmp r0,$'+ beq 2f cmp r0,$'- beq 2f sub $'0,r0 cmp r0,$9. bhi 3f inc (sp) mpy $10.,r3 add r0,r3 br 1b 2: mov r0,2(sp) br 1b 3: add $'0,r0 mov r0,ch mov (sp)+,r0 bne 1f mov $1,r3 mov r3,r0 1: mov (r5)+,r0 beq 1f mov (r0),r0 1: mov (sp)+,r1 cmp r1,$'- bne 1f sub r3,r0 br 2f 1: cmp r1,$'+ bne 1f add r3,r0 br 2f 1: mov r3,r0 2: mov (sp)+,r3 mov (sp)+,r1 rts r5 eject: tst pl beq 1f tst nl beq 1f mov pl,r0 sub nl,r0 sub ma4,r0 sub hx,r0 jsr r5,nlines; newline bit $1,pn bne 2f jsr r5,headout; efoot br 3f 2: jsr r5,headout; ofoot 3: cmp numbmod,$1 bne 3f mov $1,lnumber 3: mov ma4,r0 jsr r5,nlines; newline clr nl inc pn 1: cmp pn,pto ble 1f jsr pc,flush jmp place 1: istop: tst stop beq 2f cmp pn,pfrom blo 2f jsr pc,flush / mov sp,r1 / sys signal; 2; 1f clr r0 sys read; garb; 1 1: / mov r1,sp / sys signal; 2; place 2: rts pc storeline: cmp linep,$line+linsiz bhis 1f movb r0,*linep inc linep jsr pc,width add r1,ne sub r1,nel inc nc 1: rts pc getword: mov $word,r2 clr wne clr wch clr nhyph clr hypedf mov $word,wordp clr -(sp) 1: jsr pc,gettchar cmp r0,$'\n beq 3f cmp r0,ohc bne 2f inc hypedf br 1b 2: cmp $' ,r0 bne 2f jsr pc,storeword br 1b 2: mov r0,-(sp) mov $' ,r0 jsr pc,storeword tst spaceflg beq 2f jsr pc,storeword clr spaceflg 2: mov (sp)+,r0 2: jsr pc,storeword bisb (sp),-1(r2) /add in hyphen clr (sp) jsr pc,gettchar cmp r0,ohc bne 1f inc hypedf jsr pc,gettchar mov $200,(sp) 1: cmp $' ,r0 beq 1f cmp $'\n,r0 bne 2b cmpb -1(r2),$'. bne 1f inc spaceflg 1: add $2,2(sp) 1: clrb (r2)+ 3: tst (sp)+ mov $word,wordp tst nc bne 1f jsr pc,setnel 1: rts pc setnel: mov $line,linep mov ll,nel sub un,nel clr ne clr fac clr fmq rts pc storeword: jsr pc,width add r1,wne inc wch movb r0,(r2)+ rts pc need: mov r0,r3 mpy ls,r3 mov r3,r0 need2: add nl,r0 cmp r0,bl ble 1f jsr pc,eject 1: rts pc min: tst r0 bge 1f clr r0 1: rts pc getname: mov r1,-(sp) mov r2,-(sp) mov (r5)+,r1 mov $18.,r2 1: jsr pc,getchar cmp r0,$041 blt 2f cmp r0,$0176 ble 4f 2: mov r0,ch 3: clrb (r1)+ mov (sp)+,r2 mov (sp)+,r1 rts r5 4: movb r0,(r1)+ dec r2 beq 3b br 1b copyb: mov (r1),r1 jsr pc,flushi clr nlflg mov $1,-(sp) 1: jsr pc,getchar cmp r0,$'\n bne 2f mov $1,(sp) clr nlflg br 4f 2: cmp r0,$'. bne 9f cmp (sp),$1 bgt 3f blt 9f inc (sp) br 4f 3: dec r1 clr r0 inc (sp) br 4f 9: clr (sp) 4: tst skp bne 5f jsr pc,wbf 5: cmp (sp),$3 bne 1b tst (sp)+ tst skp bne 6f mov r1,nextb 6: rts pc popi: cmp ilistp,$ilist beq 1f sub $2,ilistp mov *ilistp,ip 1: rts pc wbf: mov r0,char mov r1,offb mov ibf,r0 sys seek; offb:..;0 mov ibf,r0 sys write; char;1 inc r1 cmp ibf1,ofile bne 1f mov $-1,ofile 1: rts pc rbf: mov ip,r1 mov ibf1,nfile jsr pc,rdsufb tstb r0 bne 2f jsr pc,popi rts pc 2: inc ip rts pc alph: movb (r0),r2 alph2: cmp r2,$'A blo 1f cmp r2,$'Z blos 2f cmp r2,$'a blo 1f cmp r2,$'z bhi 1f 2: sez rts pc 1: clz rts pc rdsufb: mov r1,-(sp) bic $77,r1 cmp r1,sufoff bne 1f cmp nfile,ofile beq 2f 1: mov r1,sufoff mov nfile,ofile mov nfile,r0 sys seek; sufoff: -1; 0 mov nfile,r0 sys read; sufbuf; 512. 2: mov (sp),r0 bic $!77,r0 movb sufbuf(r0),r0 mov (sp)+,r1 rts pc ÷ ø ù ú û ü ý þ ÿ / / copyright 1972 bell telephone laboratories inc. / / roff4 -- runoff text: / inc tottext clr ulstate clr wch clr wne tst ce bne nofill tst fi beq nofill jsr pc,getchar 2: mov r0,ch cmp $' ,r0 bne 2f jsr pc,rbreak 1: jsr pc,getchar cmp $' ,r0 bne 2b inc un br 1b 2: cmp r0,$'\n bne 2f jsr pc,rbreak clr ch jsr pc,nline br 4f 2: tst wch bne 3f jsr pc,getword br 4f 3: jsr pc,movword bne 2b jsr pc,adjust br 2b 4: dec ul bge 1f clr ul 1: rts pc nofill: jsr pc,rbreak 1: jsr pc,gettchar cmp r0,$'\n beq 1f jsr pc,width add r1,ne jsr pc,storeline br 1b 1: tst ce ble 2f dec ce mov nel,r0 asr r0 bpl 1f clr r0 1: add r0,un tst numbmod beq 2f add $2,un 2: clr fac clr fmq mov $1000,nwd mov $' ,r0 jsr pc,storeline jsr pc,rbreak dec ul bpl 2f clr ul 2: rts pc adjust: mov r2,-(sp) mov r3,-(sp) clr r2 clr r3 tst ad beq 1f mov nwd,r0 dec r0 ble 1f mov nel,r3 ble 1f dvd r0,r2 1: mov r3,fac mov r2,fmq mov (sp)+,r3 mov (sp)+,r2 jsr pc,rbreak rts pc fill: mov fmq,r0 1: inc r0 dec nc cmpb (r2)+,$' beq 1b dec r2 bit $1,totout beq 2f inc fac cmp fac,nwd blt 1f inc r0 br 1f 2: dec fac bmi 1f inc r0 1: jsr pc,space movb (r2),r0 rts pc movword: mov wch,wordend mov wordp,r4 add r4,wordend tst nwd bne 2f 1: movb (r4)+,r0 cmp r0,$' bne 1f dec wch jsr pc,width sub r1,wne br 1b 1: dec r4 2: cmp wne,nel ble 1f cmp nel,$4 ble 1f mov ls,r0 add nl,r0 cmp r0,bl bgt 2f mov ls,r0 asl r0 add nl,r0 cmp r0,bl bgt 1f 2: jsr pc,hyphen 1: clr nhyph mov wch,-(sp) 1: movb (r4)+,r0 cmp r0,$'- bne 2f movb (r4),r2 jsr pc,alph2 bne 2f bisb $200,(r4) 2: tst r0 bpl 2f bic $!177,r0 mov r4,r3 sub $4,r3 cmp r3,$word blo 2f movb (r3),r2 bic $!177,r2 jsr pc,alph2 beq 3f cmp nel,$2 ble 2f 3: mov r0,-(sp) clr r0 jsr pc,storeline mov (sp)+,r0 inc nhyph 2: jsr pc,width sub r1,wne jsr pc,storeline dec wch bne 1b tst nel blt 1f inc nwd tst (sp)+ clz rts pc 1: mov linep,r3 1: tst nhyph bne 2f tst nwd beq 3f cmp wch,(sp) beq 4f 2: movb -(r3),r0 bne 2f dec nhyph bne 5f tst nwd beq 6f 5: tst nel ble 2f 6: cmpb -1(r3),$'- beq 3f movb $'-,(r3) dec nel inc ne br 3f 2: dec nc tstb (r3) beq 1b jsr pc,width sub r1,ne add r1,nel inc wch dec r4 add r1,wne br 1b 3: inc nwd 4: mov r4,wordp bicb $!177,(r4) cmp r4,$word bge 4f 4 4: tst (sp)+ sez rts pc topbot: mov pl,r0 bne 1f clr bl rts pc 1: sub ma3,r0 sub ma4,r0 sub hx,r0 mov r0,bl mov ma1,r0 add ma2,r0 add hx,r0 cmp r0,bl blt 1f mov $2,r0 mov r0,ma1 mov r0,ma2 mov r0,ma3 mov r0,ma4 mov $66.,pl br topbot 1: cmp nl,bl ble 1f mov bl,nl 1: rts pc width: cmp r0,ohc beq 2f tst r0 beq 2f cmp r0,$0177 beq 2f cmp r0,$010 bne 1f mov $-1,r1 rts pc 1: cmp $' ,r0 bgt 2f mov $1,r1 rts pc 2: clr r1 rts pc headin: jsr pc,skipcont mov nextb,r1 mov r1,*(r5)+ jsr pc,gettchar cmp r0,$'\n beq 2f mov r0,r2 1: jsr pc,gettchar cmp r0,$'\n beq 2f cmp r0,r2 bne 3f clr r0 3: jsr pc,wbf br 1b 2: clr r0 jsr pc,wbf mov r1,nextb mov ll,llh rts r5 headout: tst hx bne 0f tst (r5)+ rts r5 0: clr -(sp) mov *(r5),r2 mov ibf1,nfile jsr r5,headseg; width mov r0,-(sp) jsr r5,headseg; width mov r0,-(sp) jsr r5,headseg; width mov r0,-(sp) mov po,r0 jsr pc,space tst numbmod beq 1f mov $5,r0 add ni,r0 mov r0,6(sp) 1: mov *(r5)+,r2 jsr r5,headseg; putchar mov llh,r0 add 6(sp),r0 sub 2(sp),r0 asr r0 sub 4(sp),r0 bge 1f clr r0 1: mov r0,-(sp) jsr pc,space jsr r5,headseg; putchar mov llh,r0 sub (sp)+,r0 sub (sp)+,r0 sub (sp)+,r0 sub (sp)+,r0 add (sp)+,r0 jsr pc,space jsr r5,headseg; putchar jsr pc,newline rts r5 headseg: clr -(sp) 1: mov r1,-(sp) mov r2,r1 inc r2 jsr pc,rdsufb mov (sp)+,r1 tstb r0 beq 1f cmp r0,$'% beq 2f jsr pc,*(r5) add r1,(sp) br 1b 2: mov pn,r0 clr r1 tst ro beq 2f mov $ones,onesp mov $fives,fivesp jsr pc,roman add r1,(sp) br 1b 2: jsr pc,decml add r1,(sp) br 1b 1: mov (sp)+,r0 tst (r5)+ rts r5 space: jsr r5,nlines; putchar rts pc nlines: mov r0,-(sp) 1: dec (sp) blt 1f mov $' ,r0 jsr pc,*(r5) br 1b 1: cmp (r5)+,(sp)+ rts r5 decimal: jsr pc,decml tst (r5)+ rts r5 decml: mov r2,-(sp) mov r3,-(sp) jsr pc,decml1 mov (sp)+,r3 mov (sp)+,r2 rts pc decml1: mov r1,-(sp) clr r2 mov r0,r3 dvd $10.,r2 mov r3,-(sp) mov r2,r0 beq 1f jsr pc,decml mov r1,2(sp) 1: mov (sp)+,r0 add $'0,r0 jsr pc,*(r5) add (sp)+,r1 rts pc roman: mov r2,-(sp) mov r3,-(sp) jsr pc,roman1 mov (sp)+,r3 mov (sp)+,r2 rts pc roman1: clr r2 mov r0,r3 bne .+4 rts pc mov r1,-(sp) dvd $10.,r2 mov r3,-(sp) mov r2,r0 inc onesp inc fivesp jsr pc,roman mov r1,2(sp) dec onesp dec fivesp clr r2 mov (sp)+,r3 dvd $5.,r2 cmp r3,$4 bne 1f movb *onesp,r0 jsr pc,*(r5) add r1,(sp) tst r2 beq 2f inc onesp movb *onesp,r0 dec onesp br 3f 2: movb *fivesp,r0 3: jsr pc,*(r5) add (sp)+,r1 rts pc 1: tst r2 beq 2f movb *fivesp,r0 jsr pc,*(r5) add r1,(sp) 2: dec r3 blt 1f movb *onesp,r0 jsr pc,*(r5) add r1,(sp) br 2b 1: mov (sp)+,r1 rts pc        / / copyright 1972 bell telephone laboratories inc. / / hyp1 -- driver hyphen: tst hypedf bne 3f tst hyf beq 3f inc hypedf mov wordp,r0 clr nhyph 1: jsr pc,punct bne 1f inc r0 br 1b 1: jsr pc,alph bne 3f 1: inc r0 jsr pc,alph beq 1b dec r0 mov r0,hstart 1: inc r0 tstb (r0) beq 2f jsr pc,punct bne 3f br 1b 2: jsr r5,suffix jsr r5,digram 3: rts pc punct: movb (r0),r2 cmp r2,$' / beq 1f cmp r2,$'. beq 1f cmp r2,$', beq 1f cmp r2,$'( beq 1f cmp r2,$') beq 1f cmp r2,$'" beq 1f cmp r2,$'\' beq 1f cmp r2,$'` 1: rts pc maplow: cmp r2,$'a bhis 1f add $'a-'A,r2 1: rts pc vowel: cmp r2,$'a beq 1f cmp r2,$'e beq 1f cmp r2,$'i beq 1f cmp r2,$'o beq 1f cmp r2,$'u beq 1f cmp r2,$'y 1: rts pc checkvow: mov r0,-(sp) 1: movb -(r0),r2 jsr pc,vowel beq 1f jsr pc,alph beq 1b mov (sp)+,r0 clz rts r5 1: mov (sp)+,r0 sez rts r5 / hyp2 -- suffix and digram digram: mov hstart,r0 1: jsr pc,alph bne 3f jsr pc,vowel beq 1f dec r0 br 1b 1: mov r0,hstart 1: movb -(r0),r2 jsr pc,alph2 bne 3f jsr pc,vowel bne 1b clr maxdig mov r0,nhstart 1: mov $1,r3 movb -1(r0),r2 jsr pc,alph2 beq 2f movb (r0),r2 mov $'a,r1 jsr r5,dilook; bxh br 4f 2: movb -2(r0),r2 mov $xxh,0f jsr pc,alph2 beq 2f mov $bxxh,0f 2: movb -1(r0),r1 movb (r0),r2 jsr r5,dilook; 0:xxh 4: movb (r0)+,r1 movb (r0),r2 jsr r5,dilook; xhx movb (r0),r1 movb 1(r0),r2 jsr r5,dilook; hxx cmp r3,maxdig blos 2f mov r3,maxdig mov r0,maxloc 2: cmp r0,hstart blo 1b mov nhstart,hstart cmp maxdig,thresh blo digram bisb $200,*maxloc inc nhyph / mov maxdig,*octbufp / inc octcnt / add $2,octbufp br digram 3: rts r5 dilook: mov r4,-(sp) bic $!177,r2 bic $!177,r1 jsr pc,maplow sub $'a,r2 cmp r2,$'z-'a bhi 3f mov r2,r4 mov r1,r2 jsr pc,maplow sub $'a,r2 cmp r2,$'z-'a bhi 3f mov r3,-(sp) mov r2,r3 mpy $13.,r3 clr r2 clc ror r4 adc r2 add r3,r4 add (r5)+,r4 movb (r4),r4 tst r2 bne 1f asr r4 asr r4 asr r4 asr r4 1: bic $!17,r4 mov r4,r3 mpy (sp)+,r3 br 4f 3: clr r3 tst (r5)+ 4: mov (sp)+,r4 rts r5 suffix: mov hstart,r0 jsr pc,alph bne 4f jsr pc,maplow sub $'a,r2 asl r2 mov suftab(r2),-(sp) bic $!37777,(sp) beq 3f 1: mov hstart,r0 mov (sp),r1 jsr pc,rdsuf movb (r1),r3 beq 3f bic $!17,r3 add r3,(sp) add r1,r3 2: movb -(r3),r2 cmp r3,r1 ble 2f bic $!177,r2 mov r2,-(sp) movb -(r0),r2 jsr pc,maplow cmp r2,(sp)+ bne 1b br 2b 2: mov hstart,r0 tst (sp)+ movb (r1),r3 bic $!17,r3 add r1,r3 bitb $200,(r1)+ bne 1f 2: dec r0 cmp r3,r1 ble 2f tstb -(r3) bpl 2b 1: mov r0,hstart dec hstart bitb $100,-1(r1) bne 2b jsr r5,checkvow bne 4f bisb $200,(r0) br 2b 2: bitb $40,-(r1) beq suffix br 4f 3: tst (sp)+ 4: rts r5 rdsuf: mov r0,-(sp) mov suff,nfile mov 4(sp),r1 jsr pc,rdsufb mov $sufb,r2 movb r0,(r2)+ mov r0,r3 bic $!17,r3 1: dec r3 blt 1f inc r1 jsr pc,rdsufb movb r0,(r2)+ br 1b 1: mov $sufb,r1 mov (sp)+,r0 rts pc / / copyright 1972 bell telephone laboratories inc. / / hyp4 -- digram tables bxh: .byte 060,000,040,000,040,000,000,040,000,000,040,000,040 hxx: .byte 006,042,041,123,021,024,063,042,002,043,021,001,022 .byte 140,000,200,003,260,006,000,160,007,000,140,000,320 .byte 220,000,160,005,240,010,000,100,006,000,200,000,320 .byte 240,000,120,003,140,000,000,240,010,000,220,000,160 .byte 042,023,041,040,040,022,043,041,030,064,021,000,041 .byte 100,000,140,000,220,006,000,140,003,000,200,000,000 .byte 200,000,120,002,220,010,000,160,006,000,140,000,320 .byte 020,000,020,000,020,000,000,020,000,000,020,000,000 .byte 043,163,065,044,022,043,104,042,061,146,061,000,007 .byte 100,000,140,000,040,000,000,100,000,000,120,000,000 .byte 140,000,040,011,060,004,001,120,003,000,140,000,040 .byte 200,000,100,000,140,000,000,140,000,000,140,000,240 .byte 200,000,140,000,160,000,000,220,000,000,140,000,240 .byte 200,000,140,000,160,000,000,220,000,000,060,000,240 .byte 021,043,041,121,040,023,042,003,142,042,061,001,022 .byte 120,000,140,010,140,010,000,140,002,000,120,000,120 .byte 000,000,000,000,360,000,000,000,000,000,160,000,000 .byte 100,000,040,005,120,000,000,100,000,000,060,000,140 .byte 140,040,100,001,240,041,000,242,000,002,140,000,100 .byte 240,000,120,002,200,000,000,320,007,000,240,000,340 .byte 101,021,041,020,040,005,042,121,002,021,201,000,020 .byte 160,000,100,000,140,000,000,160,006,000,220,000,140 .byte 140,000,020,001,020,000,000,100,001,000,300,000,000 .byte 000,000,000,000,000,000,000,000,000,000,000,000,000 .byte 106,041,040,147,040,000,063,041,001,102,160,002,002 .byte 300,000,040,017,140,017,000,240,000,000,140,000,120 bxxh: .byte 005,150,153,062,062,246,152,127,146,203,310,017,206 .byte 100,000,120,000,140,000,000,100,000,000,120,000,060 .byte 100,000,040,000,060,000,000,060,000,000,220,000,040 .byte 100,000,120,000,200,000,000,100,000,000,140,000,060 .byte 043,142,046,140,062,147,210,131,046,106,246,017,111 .byte 060,000,020,000,060,000,000,040,000,000,100,000,000 .byte 060,000,040,000,040,000,000,040,000,000,100,000,040 .byte 100,000,100,000,100,000,000,040,000,000,100,000,140 .byte 066,045,145,140,000,070,377,030,130,103,003,017,006 .byte 040,000,040,000,020,000,000,040,000,000,100,000,000 .byte 200,000,020,000,140,000,000,120,000,000,120,000,040 .byte 120,000,040,000,060,000,000,060,000,000,160,000,040 .byte 120,000,040,000,120,000,000,040,000,000,160,000,040 .byte 120,000,020,000,140,000,000,120,000,000,140,000,040 .byte 051,126,150,140,060,210,146,006,006,165,003,017,244 .byte 120,000,040,000,160,000,000,140,000,000,060,000,140 .byte 000,000,000,000,000,000,000,000,000,000,000,000,000 .byte 140,000,140,000,060,000,000,100,000,000,140,000,020 .byte 120,000,020,000,060,000,000,060,000,000,060,000,040 .byte 140,000,020,000,100,000,000,140,000,000,140,000,020 .byte 070,125,051,162,120,105,126,104,006,044,000,017,052 .byte 140,000,020,000,140,000,000,060,000,000,060,000,040 .byte 020,000,000,000,020,000,000,000,000,000,000,000,060 .byte 140,000,160,000,200,000,000,140,000,000,000,000,240 .byte 065,042,060,200,000,210,222,146,006,204,220,012,003 .byte 240,000,020,000,120,000,000,200,000,000,200,000,240 xhx: .byte 032,146,042,107,076,102,042,146,202,050,006,000,051 .byte 036,377,057,013,057,366,377,057,001,377,057,000,040 .byte 037,377,020,000,100,022,377,057,362,116,100,000,017 .byte 057,377,057,031,137,363,377,037,362,270,077,000,117 .byte 074,142,012,236,076,125,063,165,341,046,047,000,024 .byte 020,017,075,377,040,001,377,017,001,204,020,000,040 .byte 057,017,057,340,140,362,314,117,003,302,100,000,057 .byte 057,357,077,017,100,366,314,057,342,346,037,000,060 .byte 252,145,072,157,377,165,063,066,164,050,363,000,362 .byte 000,000,020,000,020,000,000,017,000,000,020,000,000 .byte 117,017,237,377,200,354,125,110,004,257,000,000,300 .byte 057,367,054,357,157,216,314,114,217,353,053,000,057 .byte 077,213,077,077,177,317,377,114,377,352,077,000,076 .byte 077,213,077,077,157,177,377,054,377,352,117,000,075 .byte 125,230,065,216,057,066,063,047,345,126,011,000,033 .byte 057,377,051,360,120,361,273,056,001,256,057,000,060 .byte 000,000,000,000,000,000,000,000,000,000,000,000,000 .byte 076,310,056,310,137,174,273,055,335,266,033,000,155 .byte 077,157,057,360,057,063,042,024,077,206,020,000,040 .byte 057,037,077,360,100,365,377,037,362,176,050,000,026 .byte 167,146,042,112,077,110,062,254,366,052,377,000,163 .byte 060,000,040,000,120,000,377,060,012,000,037,000,257 .byte 037,232,157,361,040,003,125,010,001,256,000,000,340 .byte 377,377,377,377,377,377,377,377,377,377,377,017,277 .byte 253,315,257,216,377,206,146,306,371,126,232,000,004 .byte 057,012,100,360,160,360,000,040,000,017,157,000,176 xxh: .byte 045,150,154,162,042,246,210,147,152,103,230,017,206 .byte 100,000,040,000,140,000,000,100,000,021,120,017,060 .byte 100,000,040,002,140,320,000,060,000,001,220,017,040 .byte 100,001,120,001,241,000,000,100,000,020,140,017,060 .byte 023,162,046,142,022,207,210,131,052,106,250,017,110 .byte 060,000,042,000,160,000,000,040,000,212,100,017,000 .byte 140,000,040,002,140,000,000,120,000,040,120,017,040 .byte 100,000,100,000,140,001,021,140,000,046,100,017,140 .byte 066,045,025,201,020,130,146,030,130,103,025,017,006 .byte 100,000,040,000,020,000,000,040,000,000,200,017,000 .byte 200,000,020,001,140,000,000,140,000,000,120,017,040 .byte 120,026,042,020,140,161,042,143,000,022,162,017,040 .byte 121,042,060,020,140,200,000,123,000,021,220,017,041 .byte 121,042,060,120,140,200,000,123,000,021,160,017,041 .byte 051,126,150,141,060,210,146,066,026,165,026,017,247 .byte 120,000,040,003,160,000,000,140,000,021,100,017,140 .byte 000,000,000,000,200,000,000,000,000,000,000,017,000 .byte 141,023,122,040,160,143,042,142,000,047,143,017,020 .byte 120,000,040,006,140,060,000,141,000,026,100,017,040 .byte 140,000,020,007,100,000,000,140,000,001,140,017,020 .byte 110,125,051,162,120,125,127,104,006,104,000,017,052 .byte 140,000,040,000,160,000,000,140,000,000,060,017,000 .byte 040,005,020,000,040,313,231,030,000,140,000,017,056 .byte 140,000,160,000,200,000,000,140,000,000,000,017,240 .byte 065,042,060,040,000,206,231,146,006,224,220,017,004 .byte 240,000,020,000,140,000,000,220,000,000,200,017,141 .even             / / copyright 1972 bell telephone laboratories inc. / / roff5 -- runoff slow: 1 pto: 9999. po: 0 ls: 1 ls1: 1 pn: 1 ma1: 2 ma2: 2 ma3: 1 ma4: 3 ll: 65. llh: 65. hx: 1 pl: 66. ad: 1 fi: 1 cc: '. ohc: 200 hyf: 1 hypedf: 0 obufp: obuf thresh: 240 tabc: ' tabtab: .byte 8.,16.,24.,32.,40.,48.,56.,64.,72.,0 suffil: ones: fives: ttyx: bfn: .even ofile: -1 nextb: 4 ilistp: ilist .bss stop: .=.+2 garb: .=.+2 bname: nextf: .=.+20. nx: .=.+2 ibf: .=.+2 ibf1: .=.+2 skp: .=.+2 ip: .=.+2 ilist: .=.+8. iliste: .=.+2 column: .=.+2 ocol: .=.+2 nspace: .=.+2 fac: .=.+2 fmq: .=.+2 nhl: .=.+2 nel: .=.+2 jfomod: .=.+2 wordp: .=.+2 nlflg: .=.+2 /tottext: .=.+2 /totcon: .=.+2 spaceflg: .=.+2 ch: .=.+2 linep: .=.+2 undflg: .=.+2 wordend: .=.+2 maxdig: .=.+2 maxloc: .=.+2 totout: .=.+2 hstart: .=.+2 nhstart: .=.+2 nhyph: .=.+2 argc: .=.+2 argp: .=.+2 ibufp: .=.+2 eibuf: .=.+2 wne: .=.+2 nl: .=.+2 bl: .=.+2 nc: .=.+2 ne: .=.+2 lnumber: .=.+2 numbmod: .=.+2 skip: .=.+2 nwd: .=.+2 ulstate: .=.+2 ulc: .=.+2 bsc: .=.+2 nsp: .=.+2 nn: .=.+2 ro: .=.+2 pfrom: .=.+2 ni: .=.+2 onesp: .=.+2 fivesp: .=.+2 ul: .=.+2 ce: .=.+2 in: .=.+2 un: .=.+2 wch: .=.+2 suff: .=.+2 sufb: .=.+20. sufbuf: .=.+512. suftab: .=.+[2*26.] ifile: .=.+2 char: .=.+2 nfile: .=.+2 ehead: .=.+2 ohead: .=.+2 efoot: .=.+2 ofoot: .=.+2 trtab: .=.+128. word: .=.+200. stbuf: linsiz = 500. line: .=.+linsiz end: / suftab - suffix table suftab: sufa+20 0 sufc+20 sufd+20 sufe+20 suff+20 sufg+20 sufh+20 sufi+20 0 sufk+20 sufl+20 sufm+20 sufn+20 sufo+20 sufp+20 0 sufr+20 sufs+20 suft+20 0 0 0 0 sufy+20 0 sufa: .byte 2,200+'t /-TA .byte 2,200+'s /-SA .byte 3,200+'t,'r /-TRA .byte 3,200+'d,'r /-DRA .byte 3,200+'b,'r /-BRA .byte 2,200+'p /-PA .byte 2,200+'n /-NA .byte 2,200+'m /-MA .byte 3,200+'p,'l /-PLA .byte 2,200+'l /-LA .byte 2,200+'k /-KA .byte 3,200+'t,'h /-THA .byte 3,200+'s,'h /-SHA .byte 2,200+'g /-GA .byte 2,200+'d /-DA .byte 2,200+'c /-CA .byte 2,200+'b /-BA .byte 0 sufc: .byte 4,'e,'t,200+'i /ET-IC .byte 7,'a,'l,200+'i,'s,200+'t,'i /AL-IS-TIC .byte 4,'s,200+'t,'i /S-TIC .byte 4,'p,200+'t,'i /P-TIC .byte 5,200+'l,'y,'t,200+'i /-LYT-IC .byte 4,'o,'t,200+'i /OT-IC .byte 5,'a,'n,200+'t,'i /AN-TIC .byte 4,'n,200+'t,'i /N-TIC .byte 4,'c,200+'t,'i /C-TIC .byte 4,'a,'t,200+'i /AT-IC .byte 4,'h,200+'n,'i /H-NIC .byte 3,'n,200+'i /N-IC .byte 3,'m,200+'i /M-IC .byte 4,'l,200+'l,'i /L-LIC .byte 4,'b,200+'l,'i /B-LIC .byte 3,'l,200+'i /L-IC .byte 3,'h,200+'i /H-IC .byte 3,'f,200+'i /F-IC .byte 3,'d,200+'i /D-IC .byte 3,200+'b,'i /-BIC .byte 3,'a,200+'i /A-IC .byte 3,200+'m,'a /-MAC .byte 3,'i,200+'a /I-AC .byte 0 sufd: .byte 4,200+'w,'o,'r /-WORD .byte 4,200+'l,'o,'r /-LORD .byte 4,200+'f,'o,'r /-FORD .byte 4,200+'y,'a,'r /-YARD .byte 4,200+'w,'a,'r /-WARD .byte 5,200+'g,'u,'a,'r /-GUARD .byte 4,200+'t,'a,'r /-TARD .byte 5,200+'b,'o,'a,'r /-BOARD .byte 4,200+'n,'a,'r /-NARD .byte 5,200+'l,'i,'a,'r /-LIARD .byte 4,200+'i,'a,'r /-IARD .byte 4,200+'g,'a,'r /-GARD .byte 4,200+'b,'a,'r /-BARD .byte 3,200+'r,'o /-ROD .byte 4,200+'w,'o,'o /-WOOD .byte 4,200+'h,'o,'o /-HOOD .byte 4,200+'m,'o,'n /-MOND .byte 4,200+'t,'e,'n /-TEND .byte 5,200+'s,'t,'a,'n /-STAND .byte 4,200+'l,'a,'n /-LAND .byte 4,200+'h,'a,'n /-HAND .byte 4,200+'h,'o,'l /-HOLD .byte 4,200+'f,'o,'l /-FOLD .byte 5,200+'f,'i,'e,'l /-FIELD .byte 3,200+'v,'i /-VID .byte 3,200+'c,'i /-CID .byte 4,200+'s,'a,'i /-SAID .byte 4,200+'m,'a,'i /-MAID .byte 4,'t,200+'t,'e /T-TED .byte 3,'t,200+'e /T-ED .byte 4,200+'d,'r,'e /-DRED .byte 4,200+'c,'r,'e /-CRED .byte 4,200+'b,'r,'e /-BRED .byte 5,'v,200+'e,'l,'e /V-ELED .byte 100+4,'a,'l,200+'e /AL/ED .byte 140+3,200+'e,'e //EED .byte 40+5,'e,'d,200+'d,'e /ED-DED .byte 4,'d,200+'d,'e /D-DED .byte 40+4,'e,'d,200+'e /ED-ED .byte 3,'d,200+'e /D-ED .byte 5,200+'d,'u,'c,'e /-DUCED .byte 300+2,'e /E/D .byte 5,200+'s,'t,'e,'a /-STEAD .byte 4,200+'h,'e,'a /-HEAD .byte 0 sufe: .byte 5,'a,'r,200+'i,'z /AR-IZE .byte 5,'a,'n,200+'i,'z /AN-IZE .byte 5,'a,'l,200+'i,'z /AL-IZE .byte 6,200+'a,'r,'d,200+'i,'z /-ARD-IZE .byte 5,200+'s,'e,'l,'v /-SELVE .byte 5,200+'k,'n,'i,'v /-KNIVE .byte 5,200+'l,'i,'e,'v /-LIEVE .byte 100+3,200+'q,'u //QUE .byte 7,'o,'n,200+'t,'i,'n,200+'u /ON-TIN-UE .byte 3,200+'n,'u /-NUE .byte 3,200+'d,'u /-DUE .byte 300+2,'u /U/E .byte 300+5,'q,'u,'a,'t / QUAT/E .byte 4,'u,200+'a,'t /U-ATE .byte 5,200+'s,'t,'a,'t /-STATE .byte 4,200+'t,'a,'t /-TATE .byte 6,200+'t,'o,'r,200+'a,'t /-TOR-ATE .byte 5,'e,'n,200+'a,'t /EN-ATE .byte 4,200+'m,'a,'t /-MATE .byte 5,200+'h,'o,'u,'s /-HOUSE .byte 5,200+'c,'l,'o,'s /-CLOSE .byte 4,'i,200+'o,'s /I-OSE .byte 4,200+'w,'i,'s /-WISE .byte 5,'a,'s,200+'u,'r /AS-URE .byte 40+4,200+'s,'u,'r /-SURE .byte 6,200+'f,'i,'g,200+'u,'r /-FIG-URE .byte 40+3,200+'t,'r /-TRE .byte 5,200+'s,'t,'o,'r /-STORE .byte 4,200+'f,'o,'r /-FORE .byte 5,200+'w,'h,'e,'r /-WHERE .byte 3,200+'d,'r /-DRE .byte 3,200+'c,'r /-CRE .byte 3,200+'b,'r /-BRE .byte 5,200+'s,'c,'o,'p /-SCOPE .byte 4,'y,200+'o,'n /Y-ONE .byte 5,200+'s,'t,'o,'n /-STONE .byte 5,200+'p,'h,'o,'n /-PHONE .byte 4,200+'g,'o,'n /-GONE .byte 4,'e,200+'o,'n /E-ONE .byte 40+4,200+'e,'n,'n /-ENNE .byte 40+5,'a,200+'r,'i,'n /A-RINE .byte 5,200+'c,'l,'i,'n /-CLINE .byte 4,200+'l,'i,'n /-LINE .byte 4,200+'s,'o,'m /-SOME .byte 4,200+'c,'o,'m /-COME .byte 4,200+'t,'i,'m /-TIME .byte 3,200+'z,'l /-ZLE .byte 3,200+'t,'l /-TLE .byte 3,200+'s,'l /-SLE .byte 3,200+'p,'l /-PLE .byte 5,200+'v,'i,'l,'l /-VILLE .byte 4,'c,'k,200+'l /CK-LE .byte 3,200+'k,'l /-KLE .byte 3,200+'g,'l /-GLE .byte 3,200+'f,'l /-FLE .byte 3,200+'d,'l /-DLE .byte 3,200+'c,'l /-CLE .byte 5,200+'p,'a,200+'b,'l /-PA-BLE .byte 5,'f,'a,200+'b,'l /FA-BLE .byte 5,200+'c,'a,200+'b,'l /-CA-BLE .byte 6,200+'s,'t,'a,'b,'l /-STABLE .byte 4,200+'a,'b,'l /-ABLE .byte 3,200+'b,'l /-BLE .byte 4,200+'d,'a,'l /-DALE .byte 4,200+'m,'a,'l /-MALE .byte 4,200+'s,'a,'l /-SALE .byte 4,200+'l,'i,'k /-LIKE .byte 340+5,'g,200+'u,'a,'g /-G/UAGE .byte 5,200+'r,'i,'a,'g /-RIAGE .byte 5,'e,'r,200+'a,'g /ER-AGE .byte 4,'m,200+'a,'g /M-AGE .byte 4,'k,200+'a,'g /K-AGE .byte 4,'d,200+'a,'g /D-AGE .byte 4,200+'w,'i,'f /-WIFE .byte 5,200+'k,'n,'i,'f /-KNYFE .byte 3,200+'s,'e /-SEE .byte 4,200+'f,'r,'e /-FREE .byte 340+2,'e /EE .byte 4,200+'w,'i,'d /-WIDE .byte 4,200+'t,'i,'d /-TIDE .byte 4,200+'s,'i,'d /-SIDE .byte 6,200+'q,'u,'e,'n,'c /-QUENCE .byte 7,200+'f,'l,'u,200+'e,'n,'c /-FLU-ENCE .byte 40+6,'e,'s,200+'e,'n,'c /ES-ENCE .byte 6,'e,'r,200+'e,'n,'c /ER-ENCE .byte 5,'i,200+'e,'n,'c /I-ENCE .byte 40+5,200+'s,'a,'n,'c /-SANCE .byte 6,'e,'r,200+'a,'n,'c /ER-ANCE .byte 6,'a,'r,200+'a,'n,'c /AR-ANCE .byte 5,200+'n,'a,'n,'c /-NANCE .byte 7,200+'b,'a,'l,200+'a,'n,'c /-BAL-ANCE .byte 5,'i,200+'a,'n,'c /I-ANCE .byte 7,200+'j,'u,'s,200+'t,'i,'c /-JUS-TICE .byte 5,200+'s,'t,'i,'c /-STICE .byte 5,200+'p,'i,'e,'c /-PIECE .byte 5,200+'p,'l,'a,'c /-PLACE .byte 340+1 //E .byte 0 suff: .byte 5,200+'p,'r,'o,'o /-PROOF .byte 4,200+'s,'e,'l /-SELF .byte 3,200+'r,'i /-RIF .byte 40+4,200+'l,'i,'e /-LIEF .byte 0 sufg: .byte 3,200+'l,'o /-LOG .byte 4,200+'l,'o,'n /-LONG .byte 5,'t,200+'t,'i,'n /T-TING .byte 6,200+'s,'t,'r,'i,'n / -STRING .byte 5,'r,200+'r,'i,'n /R-RING .byte 5,'p,200+'p,'i,'n /P-PING .byte 5,'n,200+'n,'i,'n /N-NING .byte 5,'m,200+'m,'i,'n /M-MING .byte 5,'l,200+'l,'i,'n / L-LING .byte 5,200+'z,'l,'i,'n /-ZLING .byte 5,200+'t,'l,'i,'n /-TLING .byte 40+5,'s,200+'l,'i,'n /S-LING .byte 5,'r,200+'l,'i,'n /R-LING .byte 5,200+'p,'l,'i,'n /-PLING .byte 6,'n,200+'k,'l,'i,'n /N-KLING .byte 5,'k,200+'l,'i,'n /K-LING .byte 5,200+'g,'l,'i,'n /-GLING .byte 5,200+'f,'l,'i,'n /-FLING .byte 5,200+'d,'l,'i,'n /-DLING .byte 5,200+'c,'l,'i,'n /-CLING .byte 5,200+'b,'l,'i,'n /-BLING .byte 6,'y,200+'t,'h,'i,'n /Y-THING .byte 7,'e,'e,'t,'h,200+'i,'n /EETH-ING .byte 6,'e,200+'t,'h,'i,'n /E-THING .byte 5,'g,200+'g,'i,'n /G-GING .byte 5,'d,200+'d,'i,'n /D-DING .byte 5,'b,200+'b,'i,'n /B-BING .byte 3,200+'i,'n /-ING .byte 0 sufh: .byte 5,200+'m,'o,'u,'t /-MOUTH .byte 5,200+'w,'o,'r,'t /-WORTH .byte 4,200+'w,'i,'t /-WITH .byte 5,'t,200+'t,'i,'s /T-TISH .byte 5,'e,200+'t,'i,'s /E-TISH .byte 5,'p,200+'p,'i,'s /P-PISH .byte 5,'r,200+'n,'i,'s /R-NISH .byte 5,'n,200+'n,'i,'s /N-NISH .byte 5,200+'p,'l,'i,'s /-PLISH .byte 5,200+'g,'u,'i,'s / -GUISH .byte 5,200+'g,'l,'i,'s / -GLISH .byte 5,'b,200+'l,'i,'s / B-LISH .byte 5,'g,200+'g,'i,'s /G-GISH .byte 5,'d,200+'d,'i,'s /D-DISH .byte 3,200+'i,'s /-ISH .byte 5,200+'g,'r,'a,'p /-GRAPH .byte 7,200+'b,'o,'r,200+'o,'u,'g /-BOR-OUGH .byte 5,200+'b,'u,'r,'g /-BURGH .byte 4,200+'v,'i,'c /-VICH .byte 3,200+'n,'a /-NAH .byte 3,200+'l,'a /-LAH .byte 4,200+'m,'i,200+'a /-MI-AH .byte 0 sufi: .byte 3,200+'t,'r /-TRI .byte 3,200+'c,'h /-CHI .byte 200+3,'i,'f /IF-I .byte 200+3,'e,'d /ED-I .byte 5,200+'a,'s,'c,'i /-ASCII .byte 0 sufk: .byte 4,200+'w,'o,'r /-WORK .byte 4,200+'b,'o,'o /-BOOK .byte 4,200+'w,'a,'l /-WALK .byte 5,200+'c,'r,'a,'c /-CRACK .byte 4,200+'b,'a,'c /-BACK .byte 0 sufl: .byte 3,200+'f,'u /-FUL .byte 5,'s,200+'w,'e,'l /S-WELL .byte 4,200+'t,'e,'l /-TELL .byte 5,200+'s,'h,'e,'l /-SHELL .byte 5,200+'s,'t,'a,'l /-STALL .byte 4,200+'s,'t,'a /-STAL .byte 4,200+'b,'a,'l /-BALL .byte 3,'v,200+'e /V-EL .byte 3,'u,200+'e /U-EL .byte 3,'k,200+'e /K-EL .byte 4,'t,'h,200+'e /TH-EL .byte 5,'t,'c,'h,200+'e /TCH-EL .byte 3,'a,200+'e /A-EL .byte 140+4,200+'q,'u,'a //QUAL .byte 40+3,'u,200+'a /U-AL .byte 3,200+'t,'a /-TAL .byte 4,'u,'r,200+'a /UR-AL .byte 40+5,'g,200+'o,200+'n,'a /G-O-NAL .byte 4,'o,'n,200+'a /ON-AL .byte 3,200+'n,'a /-NAL .byte 4,200+'t,'i,'a /-TIAL .byte 4,200+'s,'i,'a /-SIAL .byte 40+5,200+'t,'r,'i,200+'a /-TRI-AL .byte 4,'r,'i,200+'a /RI-AL .byte 4,200+'n,'i,200+'a /-NI-AL .byte 4,200+'d,'i,200+'a /-DI-AL .byte 4,200+'c,'i,'a /-CIAL .byte 3,200+'g,'a /-GAL .byte 4,200+'m,'e,'a /-MEAL /.byte 40+4,200+'r,'e,200+'a /-RE-AL .byte 40+4,200+'r,'e,'a /-REAL .byte 6,'c,200+'t,'i,200+'c,'a /C-TI-CAL .byte 5,200+'s,'i,200+'c,'a /-SI-CAL .byte 4,200+'i,200+'c,'a /-I-CAL .byte 3,200+'c,'a /-CAL .byte 3,200+'b,'a /-BAL .byte 0 sufm: .byte 3,200+'n,'u /-NUM .byte 5,'o,200+'r,'i,200+'u /O-RI-UM .byte 40+3,'i,200+'u /I-UM .byte 40+3,'e,200+'u /E-UM .byte 5,'i,'v,200+'i,'s /IV-ISM .byte 4,200+'t,'i,'s /-TISM .byte 5,'i,200+'m,'i,'s /I-MISM .byte 5,'a,'l,200+'i,'s /AL-ISM .byte 40+4,'e,200+'i,'s /E-ISM .byte 40+4,'a,200+'i,'s /A-ISM .byte 4,200+'r,'o,'o /-ROOM .byte 3,200+'d,'o /-DOM .byte 3,200+'h,'a /-HAM .byte 0 sufn: .byte 4,200+'t,'o,'w /-TOWN .byte 4,200+'d,'o,'w /-DOWN .byte 4,200+'t,'u,'r /-TURN .byte 5,200+'s,'p,'o,'o /-SPOON .byte 4,200+'n,'o,'o /-NOON .byte 4,200+'m,'o,'o /-MOON .byte 11,'a,'l,200+'i,200+'z,'a,200+'t,'i,'o /AL-I-ZA-TION .byte 7,200+'i,200+'z,'a,200+'t,'i,'o /-I-ZA-TION .byte 7,'l,200+'i,200+'a,200+'t,'i,'o /L-I-A-TION .byte 4,200+'t,'i,'o /-TION .byte 40+5,'s,200+'s,'i,'o /S-SION .byte 4,200+'s,'i,'o /-SION .byte 4,'n,200+'i,'o /N-ION .byte 4,200+'g,'i,'o /-GION .byte 4,200+'c,'i,'o /-CION .byte 3,200+'c,'o /-CON .byte 3,200+'t,'o /-TON .byte 3,200+'s,'o /-SON .byte 3,200+'r,'i /-RIN .byte 3,200+'p,'i /-PIN .byte 3,200+'n,'i /-NIN .byte 3,200+'m,'i /-MIN .byte 3,200+'l,'i /-LIN .byte 3,200+'k,'i /-KIN .byte 5,200+'s,'t,'e,'i /-STEIN .byte 4,200+'t,'a,'i /-TAIN .byte 5,'g,'h,'t,200+'e /GHT-EN .byte 5,200+'w,'o,'m,200+'e /-WOM-EN .byte 3,200+'m,'e /-MEN .byte 4,'o,200+'k,'e /O-KEN .byte 3,'k,200+'e /K-EN .byte 4,200+'t,'e,'e /-TEEN .byte 4,200+'s,'e,'e /-SEEN .byte 40+3,200+'s,'a /-SAN .byte 5,200+'w,'o,'m,200+'a /-WOM-AN .byte 3,200+'m,'a /-MAN .byte 4,200+'t,'i,'a /-TIAN .byte 4,200+'s,'i,'a /-SIAN .byte 40+4,'e,200+'i,'a /E-IAN .byte 4,200+'c,'i,'a /-CIAN .byte 300+3,'i,'a /IA/N .byte 5,200+'c,'l,'e,'a /-CLEAN .byte 4,200+'m,'e,'a /-MEAN .byte 40+3,'e,200+'a /E-AN .byte 0 sufo: .byte 5,200+'m,'a,'c,200+'r /-MAC-RO .byte 0 sufp: .byte 5,200+'g,'r,'o,'u /-GROUP .byte 2,200+'u /-UP .byte 4,200+'s,'h,'i /-SHIP .byte 4,200+'k,'e,'e /-KEEP .byte 0 sufr: .byte 4,200+'z,'a,'r /-ZARR .byte 300+2,'r /R/R .byte 3,200+'t,'o /-TOR .byte 40+3,200+'s,'o /-SOR .byte 40+4,200+'r,'i,200+'o /-RI-OR .byte 4,'i,'z,200+'e /IZ-ER .byte 5,200+'c,'o,'v,200+'e /-COV-ER .byte 4,'o,200+'v,'e /O-VER .byte 8.,200+'c,'o,'m,200+'p,'u,'t,200+'e /-COM-PUT-ER .byte 40+5,'u,'s,200+'t,'e /US-TER .byte 5,'o,'s,'t,200+'e /OST-ER .byte 40+5,200+'a,'c,200+'t,'e /-AC-TER .byte 6,200+'w,'r,'i,'t,200+'e /-WRIT-ER .byte 40+5,'i,'s,200+'t,'e /IS-TER .byte 40+5,'e,'s,200+'t,'e /ES-TER .byte 40+5,'a,'s,200+'t,'e /AS-TER .byte 4,200+'s,'t,'e /-STER .byte 5,'a,'r,200+'t,'e /AR-TER .byte 4,'r,'t,200+'e /RT-ER .byte 40+5,'m,200+'e,200+'t,'e /M-E-TER .byte 5,200+'w,'a,200+'t,'e /-WA-TER .byte 3,'r,200+'e /R-ER .byte 4,'o,'p,200+'e /OP-ER .byte 5,200+'p,'a,200+'p,'e /-PA-PER .byte 4,'w,'n,200+'e /WN-ER .byte 40+4,'s,200+'n,'e /S-NER .byte 4,'o,'n,200+'e /ON-ER .byte 4,'r,'m,200+'e /RM-ER .byte 4,'l,'l,200+'e /LL-ER .byte 5,'d,200+'d,'l,'e /D-DLER .byte 4,200+'b,'l,'e /-BLER .byte 3,'k,200+'e /K-ER .byte 5,'n,200+'t,'h,'e /N-THER .byte 6,200+'f,'a,200+'t,'h,'e /-FA-THER .byte 6,'e,'i,200+'t,'h,'e /EI-THER .byte 4,'t,'h,200+'e /TH-ER .byte 4,'s,'h,200+'e /SH-ER .byte 4,200+'p,'h,'e /-PHER .byte 4,'c,'h,200+'e /CH-ER .byte 4,'d,'g,200+'e /DG-ER .byte 4,'r,'d,200+'e /RD-ER .byte 6,'o,'u,'n,'d,200+'e /OUND-ER .byte 4,'l,'d,200+'e /LD-ER .byte 4,'i,'d,200+'e /ID-ER .byte 5,200+'d,'u,'c,200+'e /-DUC-ER .byte 4,'n,'c,200+'e /NC-ER .byte 100+2, 200+'e / /ER .byte 3,200+'s,'a /-SAR .byte 40+6,'a,'c,200+'u,200+'l,'a /AC-U-LAR .byte 40+6,'e,'c,200+'u,200+'l,'a /EC-U-LAR .byte 40+6,'i,'c,200+'u,200+'l,'a /IC-U-LAR .byte 40+6,'e,'g,200+'u,200+'l,'a /EG-U-LAR .byte 0 sufs: .byte 40+4,'u,200+'o,'u /U-OUS .byte 5,200+'t,'i,'o,'u /-TIOUS .byte 5,200+'g,'i,'o,'u /-GIOUS .byte 5,200+'c,'i,'o,'u /-CIOUS .byte 40+4,'i,200+'o,'u /I-OUS .byte 5,200+'g,'e,'o,'u /-GEOUS .byte 5,200+'c,'e,'o,'u /-CEOUS .byte 4,'e,200+'o,'u /E-OUS .byte 140+2,200+'u //US .byte 4,200+'n,'e,'s /-NESS .byte 4,200+'l,'e,'s /-LESS .byte 140+2,200+'s //SS .byte 40+5,'p,200+'o,200+'l,'i /P-O-LIS .byte 140+2,200+'i //IS .byte 100+3,200+'x,'e /X/ES .byte 100+3,200+'s,'e /S/ES .byte 100+4,'s,'h,200+'e /SH/ES .byte 100+4,'c,'h,200+'e /CH/ES .byte 300+1 //S .byte 0 suft: .byte 6,'i,'o,'n,200+'i,'s /ION-IST .byte 5,'i,'n,200+'i,'s /IN-IST .byte 5,'a,'l,200+'i,'s /AL-IST .byte 6,'l,200+'o,200+'g,'i,'s /L-O-GIST .byte 5,'h,'t,200+'e,'s /HT-EST .byte 4,'i,200+'e,'s /I-EST .byte 5,'g,200+'g,'e,'s /G-GEST .byte 4,'g,200+'e,'s /G-EST .byte 5,'d,200+'d,'e,'s /D-DEST .byte 4,'d,200+'e,'s /D-EST .byte 4,200+'c,'a,'s /-CAST .byte 5,200+'h,'e,'a,'r /-HEART .byte 4,200+'f,'o,'o /-FOOT .byte 3,'i,200+'o /I-OT .byte 5,200+'f,'r,'o,'n /-FRONT .byte 5,200+'p,'r,'i,'n /-PRINT .byte 4,200+'m,'e,'n /-MENT .byte 5,200+'c,'i,'e,'n /-CIENT .byte 4,'i,200+'a,'n /I-ANT .byte 6,200+'w,'r,'i,'g,'h /-WRIGHT .byte 6,200+'b,'r,'i,'g,'h /-BRIGHT .byte 6,200+'f,'l,'i,'g,'h /-FLIGHT .byte 6,200+'w,'e,'i,'g,'h /-WEIGHT .byte 5,200+'s,'h,'i,'f /-SHIFT .byte 5,200+'c,'r,'a,'f /-CRAFT .byte 40+4,'d,'g,200+'e /DG-ET .byte 4,200+'g,'o,'a /-GOAT .byte 4,200+'c,'o,'a /-COAT .byte 4,200+'b,'o,'a /-BOAT .byte 4,200+'w,'h,'a /-WHAT .byte 0 sufy: .byte 40+4,'e,'s,200+'t /ES-TY .byte 40+5,'q,'u,'i,200+'t /QUI-TY .byte 4,200+'t,'i,200+'t /-TI-TY .byte 40+5,'o,'s,200+'i,200+'t /OS-I-TY .byte 4,200+'s,'i,200+'t /-SI-TY .byte 5,'i,'n,200+'i,200+'t /IN-I-TY .byte 4,'n,'i,200+'t /NI-TY .byte 40+10,'f,'a,200+'b,'i,'l,200+'i,200+'t /FA-BIL-I-TY .byte 10,200+'c,'a,200+'b,'i,'l,200+'i,200+'t /-CA-BIL-I-TY .byte 10,200+'p,'a,200+'b,'i,'l,200+'i,200+'t /-PA-BIL-I-TY .byte 6,200+'b,'i,'l,200+'i,200+'t /-BIL-I-TY .byte 3,'i,200+'t /I-TY .byte 4,200+'b,'u,'r /-BUR-Y .byte 4,200+'t,'o,200+'r /-TO-RY .byte 5,200+'q,'u,'a,'r /-QUAR-Y .byte 40+4,'u,200+'a,'r /U-ARY .byte 7,200+'m,'e,'n,200+'t,'a,200+'r /-MEN-TA-RY .byte 6,'i,'o,'n,200+'a,'r /ION-ARY .byte 4,'i,200+'a,'r /I-ARY .byte 4,'n,200+'o,200+'m /N-O-MY .byte 3,200+'p,'l /-PLY .byte 4,'g,200+'g,'l /G-GLY .byte 5,200+'p,'a,200+'b,'l /-PA-BLY .byte 5,'f,'a,200+'b,'l /FA-BLY .byte 5,200+'c,'a,200+'b,'l /-CA-BLY .byte 4,200+'a,'b,'l /-ABLY .byte 3,200+'b,'l /-BLY .byte 2,200+'l /-LY .byte 3,200+'s,'k /-SKY .byte 40+6,'g,200+'r,'a,200+'p,'h /G-RA-PHY .byte 4,'l,200+'o,200+'g /L-O-GY .byte 2,200+'f /-FY .byte 3,200+'n,'e /-NEY .byte 3,200+'l,'e /-LEY .byte 4,'c,'k,200+'e /CK-EY .byte 3,200+'k,'e /-KEY .byte 4,200+'b,'o,'d /-BODY .byte 5,200+'s,'t,'u,'d /-STUDY .byte 340+4,'e,'e,'d /EEDY .byte 2,200+'b /-BY .byte 3,200+'w,'a /-WAY .byte 3,200+'d,'a /-DAY .byte 0 .even % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B Â..¿.Àroff1.sÁroff2.sÂroff3.sÃroff4.sÄroff5.sÅroff7.sÆroff8.sÇsuftab.sZ..Â.Ãs1s2Ks3js4¿s7struct buf { int b_flags; struct buf *b_forw; struct buf *b_back; struct buf *av_forw; struct buf *av_back; int b_dev; int b_wcount; char *b_addr; char *b_blkno; char b_error; char *b_resid; } buf[NBUF]; /* * forw and back are shared with "buf" struct. */ struct devtab { char d_active; char d_errcnt; struct buf *b_forw; struct buf *b_back; struct buf *d_actf; struct buf *d_actl; }; struct buf bfreelist; #define B_WRITE 0 #define B_READ 01 #define B_DONE 02 #define B_ERROR 04 #define B_BUSY 010 #define B_XMEM 060 #define B_WANTED 0100 #define B_RELOC 0200 #define B_ASYNC 0400 #define B_DELWRI 01000 struct { char d_minor; char d_major; }; struct bdevsw { int (*d_open)(); int (*d_close)(); int (*d_strategy)(); int *d_tab; } bdevsw[]; int nblkdev; struct cdevsw { int (*d_open)(); int (*d_close)(); int (*d_read)(); int (*d_write)(); int (*d_sgtty)(); } cdevsw[]; int nchrdev; ß ,5ôÿÃ@¨õòÿÌ•ô•ôô· CÀC4ô 4ŠÃŠÀ× ¨À†Äû´Šø@òÿ´Š´Š Àð§°ŠÎÀß òDôÿ7Ò§CòÿÂõ øÿ´ŽæYß ¾GÖ 5öÿÀ Ë•tøÿ μÀß ò & &ß "–%ôÕË•÷€§ töÿ € À õNöÿµ öÿføÿµ øÿß 4Ö ðw–ìw „ìÄH§5öÿt u-öÿ ÎNmföÿNíæYß H–%@ÎÀß òNæYß ¾GÖ  Î¼Àß òNöÿæ&ß "–%ôÕ÷ Æý´ 5 øÿu-øÿöÿ Ž‚ æNmøÿß 4Ö µ øÿñÎföÿæYß H–% ß ÷ @íwÖëw Äë@5öÿõ5ø÷•o¦ _F@ð53õ5øÿFNöÿß â ÷•?¤w„éw réwzéw héDCB ýw^éw LéDõ 5ÀetýÿæÊYß ¾GÖ à ÎðTß ,ß LôÕ f& æß x?ÆeÀ ÎUß ,õ   fæYß H–%ô ôÅ4Š÷‹‚>7Š|>Î8[ß .w¸èw ¦èÀj£0 ß LôŠÀetýÿ&æÊYß H–%ÌÅ ß Ü wlèw Zè÷ Œ£_H Ä*_!ò_†ô‹à Äe ô5-ù´ŠÀê¢0`ÄÎUß ,ô•4Š tÀ2£Àe?túÿÀEü´€ÀetýÿæÊYß ¾GÖ ÎUß ,Îß êŽÎeß ê ¦& ß 8–%÷Ü¢p¢÷n¢7 d¢Nß ZÃV¢óÕ ¦_F5 ôÿW-ôÿ@ôÿÀ @m@ôÿÀ @m0 µ ôÿë@0ß <@ðU@tøÿ5ôÿÀ @mCýÕNöÿß â0 l@À @m Nöÿß âß <@À @m°ýÕW- @À @m7~@@7 x@=@ôÿÀ @m°Žföÿß ®:Ö @ÀEÿ5ôÿÀ À`Nöÿß â5øÿ@ôÿÀ À`ˆNøÿß <ß <ß L<@ôÿÀ À`7ü?€w6êw $ê÷‹â¤�â¤÷ ष ष ؤ· Ф÷ ΤÀÿÿ@�æº¤ß Ö À ç÷•j£¤Àÿÿ wàéw Îé÷ –¤÷‹„¤ÄŸ†¤÷ „¤· „¤· |¤· t¤ÀEÿ Îh¤ß øí÷•jS¤Àÿÿw”éw ‚é call1: tst -(sp) .if .45 spl 0 .endif .if .45-1 bic $340,PS .endif br 1f call: mov PS,-(sp) 1: mov r1,-(sp) mfpi sp mov 4(sp),-(sp) bic $!37,(sp) bit $30000,PS beq 1f clrb _runrun .if .45 .if .fpp mov $20,_u+4 / FP maint mode .endif .endif 1: jsr pc,*(r0)+ bit $30000,PS beq 1f tstb _runrun beq 2f jsr pc,_savfp jsr pc,_swtch 2: .if .45 .if .fpp mov $_u+4,r1 bit $20,(r1) bne 1f mov (r1)+,r0 ldfps r0 movf (r1)+,fr0 movf (r1)+,fr1 movf fr1,fr4 movf (r1)+,fr1 movf fr1,fr5 movf (r1)+,fr1 movf (r1)+,fr2 movf (r1)+,fr3 ldfps r0 .endif .endif 1: tst (sp)+ mtpi sp mov (sp)+,r1 tst (sp)+ mov (sp)+,r0 rti .globl _savfp _savfp: .if .fpp mov $_u+4,r1 bit $20,(r1) beq 1f stfps (r1)+ movf fr0,(r1)+ movf fr4,fr0 movf fr0,(r1)+ movf fr5,fr0 movf fr0,(r1)+ movf fr1,(r1)+ movf fr2,(r1)+ movf fr3,(r1)+ 1: .endif rts pc .globl _incupc _incupc: mov r2,-(sp) mov 6(sp),r2 / base of prof with base,leng,off,scale mov 4(sp),r0 / pc sub 4(r2),r0 / offset clc ror r0 mul 6(r2),r0 / scale ashc $-14.,r0 inc r1 bic $1,r1 cmp r1,2(r2) / length bhis 1f add (r2),r1 / base mov nofault,-(sp) mov $2f,nofault mfpi (r1) inc (sp) mtpi (r1) br 3f 2: clr 6(r2) 3: mov (sp)+,nofault 1: mov (sp)+,r2 rts pc .globl _display _display: .if .45 mov PS,-(sp) mov $340,PS mov CSW,r1 bit $1,r1 beq 1f bis $30000,PS dec r1 1: jsr pc,fuword mov r0,CSW mov (sp)+,PS .endif rts pc / Character list get/put .globl _getc, _putc .globl _cfreelist _getc: mov 2(sp),r1 mov PS,-(sp) mov r2,-(sp) .if .45 spl 5 .endif .if .45-1 jsr pc,_spl5 .endif mov 2(r1),r2 / first ptr beq 9f / empty movb (r2)+,r0 / character bic $!377,r0 mov r2,2(r1) dec (r1)+ / count bne 1f clr (r1)+ clr (r1)+ / last block br 2f 1: bit $7,r2 bne 3f mov -10(r2),(r1) / next block add $2,(r1) 2: dec r2 bic $7,r2 mov _cfreelist,(r2) mov r2,_cfreelist 3: mov (sp)+,r2 mov (sp)+,PS rts pc 9: clr 4(r1) mov $-1,r0 mov (sp)+,r2 mov (sp)+,PS rts pc _putc: mov 2(sp),r0 mov 4(sp),r1 mov PS,-(sp) mov r2,-(sp) mov r3,-(sp) .if .45 spl 5 .endif .if .45-1 jsr pc,_spl5 .endif mov 4(r1),r2 / last ptr bne 1f mov _cfreelist,r2 beq 9f mov (r2),_cfreelist clr (r2)+ mov r2,2(r1) / first ptr br 2f 1: bit $7,r2 bne 2f mov _cfreelist,r3 beq 9f mov (r3),_cfreelist mov r3,-10(r2) mov r3,r2 clr (r2)+ 2: movb r0,(r2)+ mov r2,4(r1) inc (r1) / count clr r0 mov (sp)+,r3 mov (sp)+,r2 mov (sp)+,PS rts pc 9: mov pc,r0 mov (sp)+,r3 mov (sp)+,r2 mov (sp)+,PS rts pc .globl _backup .globl _regloc _backup: .if .45-1 mov 2(sp),ssr+2 mov r2,-(sp) jsr pc,backup mov r2,ssr+2 mov (sp)+,r2 movb jflg,r0 bne 2f .endif mov 2(sp),r0 movb ssr+2,r1 jsr pc,1f movb ssr+3,r1 jsr pc,1f movb _regloc+7,r1 asl r1 add r0,r1 mov ssr+4,(r1) clr r0 2: rts pc 1: mov r1,-(sp) asr (sp) asr (sp) asr (sp) bic $!7,r1 movb _regloc(r1),r1 asl r1 add r0,r1 sub (sp)+,(r1) rts pc .if .45-1 backup: clr r2 / backup register ssr1 mov $1,bflg / clrs jflg mov ssr+4,r0 jsr pc,fetch mov r0,r1 ash $-11.,r0 bic $!36,r0 jmp *0f(r0) 0: t00; t01; t02; t03; t04; t05; t06; t07 t10; t11; t12; t13; t14; t15; t16; t17 t00: clrb bflg t10: mov r1,r0 swab r0 bic $!16,r0 jmp *0f(r0) 0: u0; u1; u2; u3; u4; u5; u6; u7 u6: / single op, m[tf]pi, sxt, illegal bit $400,r1 beq u5 / all but m[tf], sxt bit $200,r1 beq 1f / mfpi bit $100,r1 bne u5 / sxt / simulate mtpi with double (sp)+,dd bic $4000,r1 / turn instr into (sp)+ br t01 / simulate mfpi with double ss,-(sp) 1: ash $6,r1 bis $46,r1Z L M N O P Q R T U V W X Y [ \ ] ^ _ ` a b / -(sp) br t01 u4: / jsr mov r1,r0 jsr pc,setreg / assume no fault bis $173000,r2 / -2 from sp rts pc t07: / EIS clrb bflg u0: / jmp, swab u5: / single op mov r1,r0 br setreg t01: / mov t02: / cmp t03: / bit t04: / bic t05: / bis t06: / add t16: / sub clrb bflg t11: / movb t12: / cmpb t13: / bitb t14: / bicb t15: / bisb mov r1,r0 ash $-6,r0 jsr pc,setreg swab r2 mov r1,r0 jsr pc,setreg / if delta(dest) is zero, / no need to fetch source bit $370,r2 beq 1f / if mode(source) is R, / no fault is possible bit $7000,r1 beq 1f / if reg(source) is reg(dest), / too bad. mov r2,-(sp) bic $174370,(sp) cmpb 1(sp),(sp)+ beq t17 / start source cycle / pick up value of reg mov r1,r0 ash $-6,r0 bic $!7,r0 movb _regloc(r0),r0 asl r0 add ssr+2,r0 mov (r0),r0 / if reg has been incremented, / must decrement it before fetch bit $174000,r2 ble 2f dec r0 bit $10000,r2 beq 2f dec r0 2: / if mode is 6,7 fetch and add X(R) to R bit $4000,r1 beq 2f bit $2000,r1 beq 2f mov r0,-(sp) mov ssr+4,r0 add $2,r0 jsr pc,fetch add (sp)+,r0 2: / fetch operand / if mode is 3,5,7 fetch * jsr pc,fetch bit $1000,r1 beq 1f bit $6000,r1 bne fetch 1: rts pc t17: / illegal u1: / br u2: / br u3: / br u7: / illegal incb jflg rts pc setreg: mov r0,-(sp) bic $!7,r0 bis r0,r2 mov (sp)+,r0 ash $-3,r0 bic $!7,r0 movb 0f(r0),r0 tstb bflg beq 1f bit $2,r2 beq 2f bit $4,r2 beq 2f 1: cmp r0,$20 beq 2f cmp r0,$-20 beq 2f asl r0 2: bisb r0,r2 rts pc 0: .byte 0,0,10,20,-10,-20,0,0 fetch: bic $1,r0 mov nofault,-(sp) mov $1f,nofault mfpi (r0) mov (sp)+,r0 mov (sp)+,nofault rts pc 1: mov (sp)+,nofault clrb r2 / clear out dest on fault mov $-1,r0 rts pc .bss bflg: .=.+1 jflg: .=.+1 .text .endif .globl _fubyte, _subyte .globl _fuword, _suword _fubyte: mov 2(sp),r1 bic $1,r1 jsr pc,gword cmp r1,2(sp) beq 1f swab r0 1: bic $!377,r0 rts pc _subyte: mov 2(sp),r1 bic $1,r1 jsr pc,gword mov r0,-(sp) cmp r1,4(sp) beq 1f movb 6(sp),1(sp) br 2f 1: movb 6(sp),(sp) 2: mov (sp)+,r0 jsr pc,pword clr r0 rts pc _fuword: mov 2(sp),r1 fuword: jsr pc,gword rts pc gword: mov PS,-(sp) .if .45 spl 7 .endif .if .45-1 bis $340,PS .endif mov nofault,-(sp) mov $err,nofault mfpi (r1) mov (sp)+,r0 br 1f _suword: mov 2(sp),r1 mov 4(sp),r0 suword: jsr pc,pword rts pc pword: mov PS,-(sp) .if .45 spl 7 .endif .if .45-1 bis $340,PS .endif mov nofault,-(sp) mov $err,nofault mov r0,-(sp) mtpi (r1) 1: mov (sp)+,nofault mov (sp)+,PS rts pc err: mov (sp)+,nofault mov (sp)+,PS tst (sp)+ mov $-1,r0 rts pc .globl _copyin, _copyout _copyin: jsr pc,copsu 1: mfpi (r0)+ mov (sp)+,(r1)+ sob r2,1b br 2f _copyout: jsr pc,copsu 1: mov (r0)+,-(sp) mtpi (r1)+ sob r2,1b 2: mov (sp)+,nofault mov (sp)+,r2 clr r0 rts pc copsu: mov (sp)+,r0 mov r2,-(sp) mov nofault,-(sp) mov r0,-(sp) mov 10(sp),r0 mov 12(sp),r1 mov 14(sp),r2 asr r2 mov $1f,nofault rts pc 1: mov (sp)+,nofault mov (sp)+,r2 mov $-1,r0 rts pc .globl _idle _idle: mov PS,-/ Copyright 1973 Bell Telephone Laboratories Inc / machine language assist .45 = 1 / 0 = 11/40 1 = 11/45 .fpp = 1 / non-UNIX instructions mfpi = 6500^tst mtpi = 6600^tst .if .45 spl = 230 .if .fpp ldfps = 170100^tst stfps = 170200^tst .endif .endif wait = 1 rti = 2 reset = 5 .globl trap, call .globl _trap trap: mov PS,-4(sp) tst nofault bne 1f mov SSR0,ssr .if .45 mov SSR1,ssr+2 .endif mov SSR2,ssr+4 mov $1,SSR0 jsr r0,call1; _trap 1: mov $1,SSR0 mov nofault,(sp) rti .globl _runrun, _swtch(sp) .if .45 spl 0 .endif .if .45-1 bic $340,PS .endif wait mov (sp)+,PS rts pc .globl _savu, _retu, _aretu _savu: .if .45 spl 7 .endif .if .45-1 bis $340,PS .endif mov (sp)+,r1 mov (sp),r0 mov sp,(r0)+ mov r5,(r0)+ .if .45 spl 0 .endif .if .45-1 bic $340,PS .endif jmp (r1) _aretu: .if .45 spl 7 .endif .if .45-1 bis $340,PS .endif mov (sp)+,r1 mov (sp),r0 br 1f _retu: .if .45 spl 7 .endif .if .45-1 bis $340,PS .endif mov (sp)+,r1 mov (sp),KISA6 mov $_u,r0 1: mov (r0)+,sp mov (r0)+,r5 .if .45 spl 0 .endif .if .45-1 bic $340,PS .endif jmp (r1) .globl _spl0, _spl1, _spl4, _spl5, _spl6, _spl7 _spl0: .if .45 spl 0 .endif .if .45-1 bic $340,PS .endif rts pc _spl1: .if .45 spl 1 .endif .if .45-1 bis $40,PS bic $300,PS .endif rts pc _spl4: .if .45 spl 4 rts pc .endif _spl5: .if .45 spl 5 .endif .if .45-1 bis $340,PS bic $100,PS .endif rts pc _spl6: .if .45 spl 6 .endif .if .45-1 bis $340,PS bic $40,PS .endif rts pc _spl7: .if .45 spl 7 .endif .if .45-1 bis $340,PS .endif rts pc .globl _copyseg _copyseg: mov PS,-(sp) .if .45 mov 4(sp),SISA0 mov 6(sp),SISA1 mov $10340,PS .endif .if .45-1 mov UISA0,-(sp) mov UISA1,-(sp) mov $30340,PS mov 10(sp),UISA0 mov 12(sp),UISA1 mov UISD0,-(sp) mov UISD1,-(sp) mov $6,UISD0 mov $6,UISD1 .endif mov r2,-(sp) clr r0 mov $8192.,r1 mov $32.,r2 1: mfpi (r0)+ mtpi (r1)+ sob r2,1b mov (sp)+,r2 .if .45-1 mov (sp)+,UISD1 mov (sp)+,UISD0 mov (sp)+,UISA1 mov (sp)+,UISA0 .endif mov (sp)+,PS rts pc .globl _clearseg _clearseg: mov PS,-(sp) .if .45 mov 4(sp),SISA0 mov $10340,PS .endif .if .45-1 mov UISA0,-(sp) mov $30340,PS mov 6(sp),UISA0 mov UISD0,-(sp) mov $6,UISD0 .endif clr r0 mov $32.,r1 1: clr -(sp) mtpi (r0)+ sob r1,1b .if .45-1 mov (sp)+,UISD0 mov (sp)+,UISA0 .endif mov (sp)+,PS rts pc .globl _dpadd _dpadd: mov 2(sp),r0 add 4(sp),2(r0) adc (r0) rts pc .globl _dpcmp _dpcmp: mov 2(sp),r0 mov 4(sp),r1 sub 6(sp),r0 sub 8(sp),r1 sbc r0 bge 1f cmp r0,$-1 bne 2f cmp r1,$-512. bhi 3f 2: mov $-512.,r0 rts pc 1: bne 2f cmp r1,$512. blo 3f 2: mov $512.,r1 3: mov r1,r0 rts pc .globl start, _end, _edata, _main start: bit $1,SSR0 bne start / loop if restart reset / initialize systems segments mov $KISA0,r0 mov $KISD0,r1 mov $200,r4 clr r2 mov $6,r3 1: mov r2,(r0)+ mov $77406,(r1)+ / 4k rw add r4,r2 sob r3,1b / initialize user segment mov $_end+63.,r2 ash $-6,r2 bic $!1777,r2 mov r2,(r0)+ / ksr6 = sysu mov $usize-1\<8|6,(r1)+ / initialize io segment / set up counts on supervisor segments mov $7600,(r0)+ / ksr7 = IO mov $77406,(r1)+ / rw 4k .if .45 mov $6,SISD0 mov $6,SISD1 .endif / get a sp and start segmentation mov $_u+[usize*64.],sp inc SSR0 / clear bss mov $_edata,r0 1: clr (r0)+ cmp r0,$_end blo 1b / clear user block mov $_u,r0 1: clr (r0)+ cmp r0,$_u+[usize*64.] blo 1b / set up previous mode and call main / on return, enter user mode at 0R mov $30000,PS jsr pc,_main mov $170000,-(sp) clr -(sp) rti .globl _ldiv _ldiv: clr r0 mov 2(sp),r1 div 4(sp),r0 rts pc .globl _lrem _lrem: clr r0 mov 2(sp),r1 div 4(sp),r0 mov r1,r0 rts pc .globl _lshift _lshift: mov 2(sp),r1 mov (r1)+,r0 mov (r1),r1 ashc 4(sp),r0 mov r1,r0 rts pc .globl rsave rsave: mov r5,r0 mov sp,r5 mov r4,-(sp) mov r3,-(sp) mov r2,-(sp) sub (r0)+,sp jmp (r0) .globl rretrn rretrn: sub $6,r5 mov r5,sp mov (sp)+,r2 mov (sp)+,r3 mov (sp)+,r4 mov (sp)+,r5 rts pc .globl _u _u = 140000 usize = 16. CSW = 177570 PS = 177776 SSR0 = 177572 SSR2 = 177576 KISA0 = 172340 KISA6 = 172354 KISD0 = 172300 .if .45 SSR1 = 177574 SISA0 = 172240 SISA1 = 172242 SISD0 = 172200 SISD1 = 172202 .endif .if .45-1 UISA0 = 177640 UISA1 = 177642 UISD0 = 177600 UISD1 = 177602 .endif .bss .globl nofault, ssr, badtrap nofault:.=.+2 ssr: .=.+6 badtrap:.=.+2 #define CHAR 01 #define BLOCK 02 #define INTR 04 #define EVEN 010 int tabp[20]; int tabpp; struct tab { char *name; int count; int address; int key; char *codea; char *codeb; char *codec; char *coded; char *codee; } table[] { "console", -1, 60, CHAR+INTR, "\tklin; br4\n\tklou; br4\n", ".globl\t_klrint\nklin:\tjsr\tr0,call; _klrint\n", ".globl\t_klxint\nklou:\tjsr\tr0,call; _klxint\n", "", "\t&klopen, &klclose, &klread, &klwrite, &klsgtty,", "pc", 0, 70, CHAR+INTR, "\tpcin; br4\n\tpcou; br4\n", ".globl\t_pcrint\npcin:\tjsr\tr0,call; _pcrint\n", ".globl\t_pcpint\npcou:\tjsr\tr0,call; _pcpint\n", "", "\t&pcopen, &pcclose, &pcread, &pcwrite, &nodev,", "clock", -2, 100, INTR, "\tkwlp; br6\n", ".globl\t_clock\n", "kwlp:\tjsr\tr0,call; _clock\n", "", "", /* * 110 unused * 114 memory parity * 120 XY plotter * 124 DR11-B * 130 AD01 * 134 AFC11 * 140 AA11 * 144 AA11 * 150-174 unused */ "lp", 0, 200, CHAR+INTR, "\tlpou; br4\n", "", ".globl\t_lpint\nlpou:\tjsr\tr0,call; _lpint\n", "", "\t&lpopen, &lpclose, &nodev, &lpwrite, &nodev,", "rf", 0, 204, BLOCK+CHAR+INTR, "\trfio; br5\n", ".globl\t_rfintr\n", "rfio:\tjsr\tr0,call; _rfintr\n", "\t&nulldev,\t&nulldev,\t&rfstrategy, \t&rftab,", "\t&nulldev, &nulldev, &rfread, &rfwrite, &nodev,", /* * 210 RC */ "tc", 0, 214, BLOCK+INTR, "\ttcio; br6\n", ".globl\t_tcintr\n", "tcio:\tjsr\tr0,call; _tcintr\n", "\t&nulldev,\t&tcclose,\t&tcstrategy, \t&tctab,", "", "rk", 0, 220, BLOCK+CHAR+INTR, "\trkio; br5\n", ".globl\t_rkintr\n", "rkio:\tjsr\tr0,call; _rkintr\n", "\t&nulldev,\t&nulldev,\t&rkstrategy, \t&rktab,", "\t&nulldev, &nulldev, &rkread, &rkwrite, &nodev,", "tm", 0, 224, BLOCK+CHAR+INTR, "\ttmio; br5\n", ".globl\t_tmintr\n", "tmio:\tjsr\tr0,call; _tmintr\n", "\t&tmopen,\t&tmclose,\t&tmstrategy, \t&tmtab,", "\t&tmopen, &tmclose, &tmread, &tmwrite, &nodev,", "cr", 0, 230, CHAR+INTR, "\tcrin; br6\n", "", ".globl\t_crint\ncrin:\tjsr\tr0,call; _crint\n", "", "\t&cropen, &crclose, &crread, &nodev, &nodev,", /* * 234 UDC11 */ "rp", 0, 254, BLOCK+CHAR+INTR, "\trpio; br5\n", ".globl\t_rpintr\n", "rpio:\tjsr\tr0,call; _rpintr\n", "\t&nulldev,\t&nulldev,\t&rpstrategy, \t&rptab,", "\t&nulldev, &nulldev, &rpread, &rpwrite, &nodev,", /* * 260 TA11 * 264-274 unused */ "dc", 0, 308, CHAR+INTR, "\tdcin; br5+%d.\n\tdcou; br5+%d.\n", ".globl\t_dcrint\ndcin:\tjsr\tr0,call; _dcrint\n", ".globl\t_dcxint\ndcou:\tjsr\tr0,call; _dcxint\n", "", "\t&dcopen, &dcclose, &dcread, &dcwrite, &dcsgtty,", "kl", 0, 308, INTR, "\tklin; br4+1+%d.\n\tklou; br4+1+%d.\n", "", "", "", "", "dp", 0, 308, CHAR+INTR, "\tdpin; br6+%d.\n\tdpou; br6+%d.\n", ".globl\t_dprint\ndpin:\tjsr\tr0,call; _dprint\n", ".globl\t_dpxint\ndpou:\tjsr\tr0,call; _dpxint\n", "", "\t&dpopen, &dpclose, &dpread, &dpwrite, &nodev,", /* * DM11-A */ "dn", 0, 304, CHAR+INTR, "\tdnou; br5+%d.\n", "", ".globl\t_dnint\ndnou:\tjsr\tr0,call; _dnint\n", "", "\t&dnopen, &dnclose, &nodev, &dnwrite, &nodev,", "dhdm", 0, 304, INTR, "\tdmin; br4+%d.\n", "", ".globl\t_dmint\ndmin:\tjsr\tr0,call; _dmint\n", "", "", /* * DR11-A+ * DR11-C+ * PA611+ * PA611+ * DT11+ * DX11+ * DL11 * DJ11 */ "dh", 0, 308, CHAR+INTR+EVEN, "\tdhin; br5+%d.\n\tdhou; br5+%d.\n", ".globl\t_dhrint\ndhin:\tjsr\tr0,call; _dhrint\n", ".globl\t_dhxint\ndhou:\tjsr\tr0,call; _dhxint\n", "", "\t&dhopen, &dhclose, &dhread, &dhwrite, &dhsgtty,", /* * GT40 * LPS+ * VT20 */ "mem", 0, 300, CHAR, "", "", "", "", "\t&nulldev, &nulldev, &mmread, &mmwrite, &nodev,", 0 }; char *stra[] { "/ Copyright 1974 Bell Telephone Laboratories Inc", "/ low core", "", "br4 = 200", "br5 = 240", "br6 = 300", "br7 = 340", "", ". = 0^.", "\tbr\t1f", "\t4", "", "/ trap vectors", "\ttrap; br7+0.\t\t/ bus error", "\ttrap; br7+1.\t\t/ illegal instruction", "\ttrap; br7+2.\t\t/ bpt-trace trap", "\ttrap; br7+3.\t\t/ iot trap", "\ttrap; br7+4.\t\t/ power fail", "\ttrap; br7+5.\t\t/ emulator trap", "\ttrap; br7+6.\t\t/ system entry", "", ". = 40^.", ".globl\tstart", "1:\tjmp\tstart", "", 0, }; char *strb[] { "", ". = 240^.", "\ttrap; br7+7.\t\t/ programmed interrupt", "\ttrap; br7+8.\t\t/ floating point", "\ttrap; br7+9.\t\t/ segmentation violation", 0 }; char *strc[] { "", "/ floating vectors", ". = 300^.", 0, }; char *strd[] { "", "//////////////////////////////////////////////////////", "/\t\tinterface code to C", "//////////////////////////////////////////////////////", "", ".globl\tcall, trap", 0 }; char *stre[] { "/*", " *\tCopyright 1974 Bell Telephone Laboratories Inc", " */", "", "int\t(*bdevsw[])()", "{", 0, }; char *strf[] { "\t0", "};", "", "int\t(*cdevsw[])()", "{", 0, }; char *strg[] { "\t0", "};", "", "int\trootdev\t{(0<<8)|0};", "int\tswapdev\t{(0<<8)|0};", "int\tswplo\t4000;", "int\tnswap\t872;", 0, }; int fout; main() { register struct tab *p; int i, n, ev; int flagf, flagb; tabp[tabpp++] = table; while(input()); /* * pass1 -- create interrupt vectors */ flagf = flagb = 1; fout = creat("l.s", 0666); puke(stra); for(p=table; p->name; p++) if(p->count != 0 && p->key & INTR) { if(p->address>240 && flagb) { flagb = 0; puke(strb); } if(p->address >= 300) { if(flagf) { ev = 0; flagf = 0; puke(strc); } if(p->key & EVEN && ev & 07) { printf("\t.=.+4\n"); ev =+ 4; } ev =+ p->address - 300; } else printf("\n. = %d^.\n", p->address); n = p->count; if(n < 0) n = -n; for(i=0; icodea, i, i); } if(flagb) puke(strb); puke(strd); for(p=table; p->name; p++) if(p->count != 0 && p->key & INTR) printf("\n%s%s", p->codeb, p->codec); flush(); close(fout); /* * pass 2 -- create configuration table */ fout = creat("c.c", 0666); puke(stre); for(i=0; p=tabp[i]; i++) if(p->key & BLOCK) printf("%s\n", p->coded); puke(strf); for(i=0; p=tabp[i]; i++) if(p->key & CHAR) printf("%s\n", p->codee); puke(strg); flush(); close(fout); } puke(s) char **s; { char *c; while(c = *s++) printf("%s\n", c); } input() { char line[100]; register char *p; register struct tab *q; register n; p = line; while((n=getchar()) != '\n') { if(n == 0) return(0); if(n == ' ' || n == '\t') continue; *p++ = n; } *p++ = 0; n = 0; p = line; while(*p>='0' && *p<='9') { n =* 10; n =+ *p++ - '0'; } if(n == 0) n = 1; if(*p == 0) return(1); for(q=table; q->name; q++) if(equal(q->name, p)) { if(q->count < 0) { printf("%s: no more, no less\n", p); return(1); } q->count =+ n; if(q->address < 300 && q->count > 1) { q->count = 1; printf("%s: only one\n", p); } tabp[tabpp++] = q; return(1); } printf("%s: cannot find\n", p); return(1); } equal(a, b) char *a, *b; { while(*a++ == *b) if(*b++ == 0) return(1); return(0); } c d e f g h i j k l m n o p chdir /usr/c ed c0t.s /fpp/g/1/s//0/ w q as c0t.s mv a.out c0t.o cc -s -n c0?.o cp a.out /lib/c0 rm a.out c0t.o chdir /usr/source/s1 ed db1.s /fpp/g/1/s//0/ w q as db?.s strip a.out cp a.out /bin/db rm a.out chdir /usr/source/s3 as fp?.s mv a.out fp.o ar r /lib/liba.a fp.o rm fp.o chdir /usr/fort ld -s -u pass1 -u pass2 -u pass3 -u pass4\ f1o.a f2o.a f3o.a f4o.a fxo.a -l cp a.out fc1 rm a.out chdir /usr/source/s1 as bas?.s ld -s a.out -l cp a.out /bin/bas rm a.out chdir /usr/source/s3 cc -c ctime.c ar r /lib/liba.a ctime.o rm ctime.o chdir /usr/source/s1 cc -s -n date.c cp a.out /bin/date cc -s -n dump.c cp a.out /bin/dump cc -s -n ls.c cp a.out /bin/ls rm a.out chdir /usr/source/s2 cc -s -n mail.c cp a.out /bin/mail cc -s -n pr.c cp a.out /bin/pr as tp?.s ld -s a.out -l -lc cp a.out /bin/tp cc -s -n who.c cp a.out /bin/who rm a.out È..Ë.lconf.cl.outÎmch.sÏmkconf.cÐflrcÑtmrcpmkconf rc low.sa.outa.outc.o# /* * Copyright 1973 Bell Telephone Laboratories Inc */ #include "../param.h" #include "../user.h" #include "../buf.h" #include "../conf.h" #include "../systm.h" #include "../proc.h" #include "../seg.h" char buffers[NBUF][514]; struct buf swbuf; struct { int int;}; #define PS 0177776 int tmtab; int raflag 1; bread(dev, blkno) { register struct buf *rbp; rbp = getblk(dev, blkno); if (rbp->b_flags&B_DONE) return(rbp); rbp->b_flags =| B_READ; rbp->b_wcount = -256; (*bdevsw[dev.d_major].d_strategy)(rbp); iowait(rbp); return(rbp); } breada(adev, blkno, rablkno) { register struct buf *rbp, *rabp; register int dev; dev = adev; rbp = 0; if (!incore(dev, blkno)) { rbp = getblk(dev, blkno); if ((rbp->b_flags&B_DONE) == 0) { rbp->b_flags =| B_READ; rbp->b_wcount = -256; (*bdevsw[adev.d_major].d_strategy)(rbp); } } if (rablkno && !incore(dev, rablkno) && raflag) { rabp = getblk(dev, rablkno); if (rabp->b_flags & B_DONE) brelse(rabp); else { rabp->b_flags =| B_READ|B_ASYNC; rabp->b_wcount = -256; (*bdevsw[adev.d_major].d_strategy)(rabp); } } if (rbp==0) return(bread(dev, blkno)); iowait(rbp); return(rbp); } bwrite(bp) struct buf *bp; { register struct buf *rbp; register flag; rbp = bp; flag = rbp->b_flags; rbp->b_flags =& ~(B_READ | B_DONE | B_ERROR | B_DELWRI); rbp->b_wcount = -256; (*bdevsw[rbp->b_dev.d_major].d_strategy)(rbp); if ((flag&B_ASYNC) == 0) { iowait(rbp); brelse(rbp); } else if ((flag&B_DELWRI)==0) geterror(rbp); } bdwrite(bp) struct buf *bp; { register struct buf *rbp; rbp = bp; if (bdevsw[rbp->b_dev.d_major].d_tab == &tmtab) bawrite(rbp); else { rbp->b_flags =| B_DELWRI | B_DONE; brelse(rbp); } } bawrite(bp) struct buf *bp; { register struct buf *rbp; rbp = bp; rbp->b_flags =| B_ASYNC; bwrite(rbp); } brelse(bp) struct buf *bp; { register struct buf *rbp, **backp; register int sps; rbp = bp; if (rbp->b_flags&B_WANTED) wakeup(rbp); if (bfreelist.b_flags&B_WANTED) { bfreelist.b_flags =& ~B_WANTED; wakeup(&bfreelist); } if (rbp->b_flags&B_ERROR) rbp->b_dev.d_minor = -1; /* no assoc. on error */ backp = &bfreelist.av_back; sps = PS->int; spl6(); rbp->b_flags =& ~(B_WANTED|B_BUSY|B_ASYNC); (*backp)->av_forw = rbp; rbp->av_back = *backp; *backp = rbp; rbp->av_forw = &bfreelist; PS->int = sps; } incore(adev, blkno) { register int dev; register struct buf *bp; register struct devtab *dp; dev = adev; dp = bdevsw[adev.d_major].d_tab; for (bp=dp->b_forw; bp != dp; bp = bp->b_forw) if (bp->b_blkno==blkno && bp->b_dev==dev) return(bp); return(0); } getblk(dev, blkno) { register struct buf *bp; register struct devtab *dp; extern lbolt; if(dev.d_major >= nblkdev) panic("blkdev"); loop: if (dev < 0) dp = &bfreelist; else { dp = bdevsw[dev.d_major].d_tab; for (bp=dp->b_forw; bp != dp; bp = bp->b_forw) { if (bp->b_blkno!=blkno || bp->b_dev!=dev) continue; spl6(); if (bp->b_flags&B_BUSY) { bp->b_flags =| B_WANTED; sleep(bp, PRIBIO); spl0(); goto loop; } spl0(); notavail(bp); return(bp); } } spl6(); if (bfreelist.av_forw == &bfreelist) { bfreelist.b_flags =| B_WANTED; sleep(&bfreelist, PRIBIO); spl0(); goto loop; } spl0(); notavail(bp = bfreelist.av_forw); if (bp->b_flags & B_DELWRI) { bp->b_flags =| B_ASYNC; bwrite(bp); goto loop; } bp->b_flags = B_BUSY | B_RELOC; bp->b_back->b_forw = bp->b_forw; bp->b_forw->b_back = bp->b_back; bp->b_forw = dp->b_forw; bp->b_back = dp; dp->b_forw->b_back = bp; dp->b_forw = bp; bp->b_dev = dev; bp->b_blkno = blkno; return(bp); } iowait(bp) struct buf *bp; { register struct buf *rbp; rbp = bp; spl6(); while ((rbp->b_flags&B_DONE)==0) sleep(rbp, PRIBIO); spl0(); geterror(rbp); } notavail(bp) struct buf *bp; { register struct buf *rbp; register int sps; rbp = bp; sps = PS->int; spl6(); rbp->av_back->av_forw = rbp->av_forw; rbp->av_forw->av_back = rbp->av_back; rbp->b_flags =| B_BUSY; PS->int = sps; } iodone(bp) struct buf *bp; { register struct buf *rbp; rbp = bp; rbp->b_flags =| B_DONE; if (rbp->b_flags&B_ASYNC) brelse(rbp); else { rbp->b_flags =& ~B_WANTED; wakeup(rbp); } } clrbuf(bp) int *bp; { register *p; register c; p = bp->b_addr; c = 256; do *p++ = 0; while (--c); } binit() { register struct buf *bp; register struct devtab *dp; register int i; struct bdevsw *bdp; bfreelist.b_forw = bfreelist.b_back = bfreelist.av_forw = bfreelist.av_back = &bfreelist; for (i=0; ib_dev = -1; bp->b_addr = buffers[i]; bp->b_back = &bfreelist; bp->b_forw = bfreelist.b_forw; bfreelist.b_forw->b_back = bp; bfreelist.b_forw = bp; bp->b_flags = B_BUSY; brelse(bp); } i = 0; for (bdp = bdevsw; bdp->d_open; bdp++) { dp = bdp->d_tab; dp->b_forw = dp; dp->b_back = dp; i++; } nblkdev = i; } /* * Device start routine for disks */ #define IENABLE 0100 #define WCOM 02 #define RCOM 04 #define GO 01 devstart(bp, devloc, devblk, hbcom) struct buf *bp; int *devloc; { register int *dp; register struct buf *rbp; register int com; dp = devloc; rbp = bp; *dp = devblk; /* block address */ *--dp = rbp->b_addr; /* buffer address */ *--dp = rbp->b_wcount; /* word count */ com = (hbcom<<8) | IENABLE | GO | rbp->b_flags&B_XMEM; if (rbp->b_flags&B_READ) /* command + x-mem */ com =| RCOM; else com =| WCOM; *--dp = com; } /* * swap I/O */ swap(blkno, coreaddr, count, rdflg) { register int *fp; fp = &swbuf.b_flags; spl6(); while (*fp&B_BUSY) { *fp =| B_WANTED; sleep(fp, PSWP); } *fp = B_BUSY | rdflg | (coreaddr>>6)&B_XMEM; swbuf.b_dev = swapdev; swbuf.b_wcount = - (count<<5); /* 32 w/block */ swbuf.b_blkno = blkno; swbuf.b_addr = coreaddr<<6; /* 64 b/block */ (*bdevsw[swapdev>>8].d_strategy)(&swbuf); spl6(); while((*fp&B_DONE)==0) sleep(fp, PSWP); if (*fp&B_WANTED) wakeup(fp); spl0(); *fp =& ~(B_BUSY|B_WANTED); return(*fp&B_ERROR); } /* * make sure all write-behind blocks * on dev (or NODEV for all) * are flushed out. */ bflush(dev) { register struct buf *bp; loop: spl6(); for (bp = bfreelist.av_forw; bp != &bfreelist; bp = bp->av_forw) { if (bp->b_flags&B_DELWRI && (dev == NODEV||dev==bp->b_dev)) { bp->b_flags =| B_ASYNC; notavail(bp); bwrite(bp); goto loop; } } spl0(); } physio(strat, abp, dev, rw) struct buf *abp; int (*strat)(); { register struct buf *bp; register char *base; register int nb; int ts; bp = abp; base = u.u_base; if (base&01 || u.u_count&01 || base>=base+u.u_count) goto bad; ts = (u.u_tsize+127) & ~0177; nb = (base>>6) & 01777; if (nb < ts) goto bad; if ((((base+u.u_count)>>6)&01777) >= ts+u.u_dsize && nb < 1024-u.u_ssize) goto bad; spl6(); while (bp->b_flags&B_BUSY) { bp->b_flags =| B_WANTED; sleep(bp, PRIBIO); } bp->b_flags = B_BUSY | rw; bp->b_dev = dev; bp->b_addr = base&077; base = UISA->r[nb>>7] + (nb&0177); bp->b_flags =| (base>>6) & B_XMEM; bp->b_blkno = lshift(u.u_offset, -9); bp->b_addr =+ base<<6; bp->b_wcount = -(u.u_count>>1); bp->b_error = 0; u.u_procp->p_flag =| SLOCK; (*strat)(bp); spl6(); while ((bp->b_flags&B_DONE) == 0) sleep(bp, PRIBIO); u.u_procp->p_flag =& ~SLOCK; if (bp->b_flags&B_WANTED) wakeup(bp); spl0(); bp->b_flags =& ~(B_BUSY|B_WANTED); u.u_count = (-bp->b_resid)<<1; geterror(bp); return; bad: u.u_error = EFAULT; } geterror(abp) struct buf *abp; { register struct buf *bp; bp = abp; if (bp->b_flags&B_ERROR) if ((u.u_error = bp->b_error)==0) u.u_error = EIO; } u v w x y z { | } ~  € � ‚ ƒ # /* * Copyright 1973 Bell Telephone Laboratories Inc */ /* * GP DR11C driver used for C/A/T */ #include "../param.h" #include "../user.h" #include "../tty.h" #define CATADDR 0167750 #define PCAT 9 #define CATHIWAT 60 #define CATLOWAT 15 struct { int catlock; struct clist oq; } cat; struct { int catcsr; int catbuf; }; ctopen(dev) { if (cat.catlock==0) { cat.catlock++; CATADDR->catcsr =| IENABLE; } else u.u_error = ENXIO; } ctclose() { /* CATADDR->catcsr = 0; */ cat.catlock = 0; } ctwrite(dev) { register c; extern lbolt; while ((c=cpass()) >= 0) { spl5(); while (cat.oq.c_cc > CATHIWAT) sleep(&cat.oq, PCAT); while (putc(c, &cat.oq) < 0) sleep(&lbolt, PCAT); catintr(); spl0(); } } catintr() { register int c; if (CATADDR->catcsr&DONE && (c=getc(&cat.oq))>=0) { CATADDR->catbuf = c; if (cat.oq.c_cc==0 || cat.oq.c_cc==CATLOWAT) wakeup(&cat.oq); } } # /* * Copyright 1973 Bell Telephone Laboratories Inc */ /* * DC-11 driver */ #include "../param.h" #include "../conf.h" #include "../user.h" #include "../tty.h" #include "../proc.h" /* base address */ #define DCADDR 0174000 #define NDC11 14 /* Control bits */ #define CDLEAD 01 #define CARRIER 04 #define SPEED1 010 #define STOP1 0400 #define RQSEND 01 #define PARITY 040 #define ERROR 0100000 #define CTRANS 040000 #define RINGIND 020000 struct tty dc11[NDC11]; struct dcregs { int dcrcsr; int dcrbuf; int dctcsr; int dctbuf; }; int dcrstab[] { 0, /* 0 baud */ 0, /* 50 baud */ 0, /* 75 baud */ 0, /* 110 baud */ 01101, /* 134.5 baud: 7b/ch, speed 0 */ 0111, /* 150 baud: 8b/ch, speed 1 */ 0, /* 200 baud */ 0121, /* 300 baud: 8b/ch, speed 2 */ 0, /* 600 baud */ 0131, /* 1200 baud */ 0, /* 1800 baud */ 0, /* 2400 baud */ 0, /* 4800 baud */ 0, /* 9600 baud */ 0, /* X0 */ 0, /* X1 */ }; int dctstab[] { 0, /* 0 baud */ 0, /* 50 baud */ 0, /* 75 baud */ 0, /* 110 baud */ 0501, /* 134.5 baud: stop 1 */ 0511, /* 150 baud */ 0, /* 200 baud */ 0521, /* 300 baud */ 0, /* 600 baud */ 0531, /* 1200 baud */ 0, /* 1800 baud */ 0, /* 2400 baud */ 0, /* 4800 baud */ 0, /* 9600 baud */ 0, /* X0 */ 0, /* X1 */ }; dcopen(dev, flag) { register struct tty *rtp; register *addr; if (dev.d_minor >= NDC11) { u.u_error = ENXIO; return; } rtp = &dc11[dev.d_minor]; rtp->t_addr = addr = DCADDR + dev.d_minor*8; rtp->t_state =| WOPEN; addr->dcrcsr =| IENABLE|CDLEAD; if ((rtp->t_state&ISOPEN) == 0) { rtp->t_quit = 034; /* FS */ rtp->t_intrup = 0177; /* DEL */ addr->dcrcsr = IENABLE|CDLEAD|SPEED1; addr->dctcsr = IENABLE|SPEED1|STOP1|RQSEND; rtp->t_state = ISOPEN | WOPEN; rtp->t_flags = ODDP|EVENP|ECHO; } if (addr->dcrcsr & CARRIER) rtp->t_state =| CARR_ON; while ((rtp->t_state & CARR_ON) == 0) sleep(&rtp->t_rawq, TTIPRI); rtp->t_state =& ~WOPEN; if (u.u_procp->p_ttyp == 0) u.u_procp->p_ttyp = rtp; } dcclose(dev) { register struct tty *tp; (tp = &dc11[dev.d_minor])->t_state = 0; wflushtty(tp); } dcread(dev) { register struct tty *tp; tp = &dc11[dev.d_minor]; if ((tp->t_addr->dcrcsr&CARRIER) != 0) ttread(tp); } dcwrite(dev) { register struct tty *tp; tp = &dc11[dev.d_minor]; if ((tp->t_addr->dcrcsr & CARRIER) != 0) ttwrite(tp); } dcxint(dev) { register struct tty *tp; ttstart(tp = &dc11[dev.d_minor]); if (tp->t_outq.c_cc == 0 || tp->t_outq.c_cc == TTLOWAT) wakeup(&tp->t_outq); } dcrint(dev) { register struct tty *tp; register int c, csr; tp = &dc11[dev.d_minor]; c = tp->t_addr->dcrbuf; if (((csr = tp->t_addr->dcrcsr) & CARRIER) == 0) { if ((tp->t_state&WOPEN) == 0) { tp->t_addr->dcrcsr =& ~CDLEAD; if (tp->t_state & CARR_ON) signal(tp, SIGHUP); flushtty(tp); } tp->t_state =& ~CARR_ON; return; } if (csr&ERROR || (tp->t_state&ISOPEN)==0) { if (tp->t_state&WOPEN && csr&CARRIER) tp->t_state =| CARR_ON; wakeup(tp); return; } csr =& PARITY; if (csr&&(tp->t_flags&ODDP) || !csr&&(tp->t_flags&EVENP)) ttyinput(c, tp); } dcsgtty(dev, av) int *av; { register struct tty *tp; register r; register int *v; tp = &dc11[dev.d_minor]; v = av; if (v) { *v++ = tp->t_speeds; *v++ = 0; *v++ = tp->t_flags; return; } wflushtty(tp); tp->t_speeds = u.u_arg[0]; tp->t_flags = u.u_arg[2]; if (r = dcrstab[tp->t_speeds.lobyte&017]) tp->t_addr->dcrcsr = r; if (r = dctstab[tp->t_speeds.hibyte&017]) tp->t_addr->dctcsr = r; } # /* * Copyright 1973 Bell Telephone Laboratories Inc */ /* * DH-11 driver * This driver calls on the DHDM driver. * If the DH has no DM11-BB, then this driver will * be fake. To insure loading of the correct DM code, * lib2 should have dhdm.o dh.o and dhfdm.o in that order. */ #include "../param.h" #include "../conf.h" #include "../user.h" #include "../tty.h" #include "../proc.h" #define DHADDR 0160020 #define NDH11 16 struct tty dh11[NDH11]; int ndh11 NDH11; #define BITS6 01 #define BITS7 02 #define BITS8 03 #define PENABLE 020 #define OPAR 040 /* beware DEC manuals */ #define HDUPLX 040000 #define IENABLE 030100 #define PERROR 010000 #define FRERROR 020000 #define SSPEED 7 /* standard speed: 300 baud */ #define PS 0177776 int dhsar; struct dhregs { int dhcsr; int dhnxch; int dhlpr; int dhcar; int dhbcr; int dhbar; int dhbreak; int dhsilo; }; dhopen(dev, flag) { register struct tty *tp; extern dhstart(); if (dev.d_minor >= NDH11) { u.u_error = ENXIO; return; } tp = &dh11[dev.d_minor]; tp->t_addr = dhstart; DHADDR->dhcsr =| IENABLE; tp->t_state =| WOPEN|SSTART; if ((tp->t_state&ISOPEN) == 0) { tp->t_quit = 034; /* FS */ tp->t_intrup = 0177; /* DEL */ tp->t_speeds = SSPEED | (SSPEED<<8); tp->t_flags = ODDP|EVENP|ECHO; dhparam(tp); } dmopen(dev); tp->t_state =& ~WOPEN; tp->t_state =| ISOPEN; if (u.u_procp->p_ttyp == 0) u.u_procp->p_ttyp = tp; } dhclose(dev) { register struct tty *tp; (tp = &dh11[dev.d_minor])->t_state =& (CARR_ON|SSTART); wflushtty(tp); } dhread(dev) { register struct tty *tp; tp = &dh11[dev.d_minor]; if ((tp->t_state&CARR_ON) != 0) ttread(tp); } dhwrite(dev) { register struct tty *tp; tp = &dh11[dev.d_minor]; if ((tp->t_state&CARR_ON) != 0) ttwrite(tp); } dhrint() { register struct tty *tp; register int c; while ((c = DHADDR->dhnxch) < 0) { /* char. present */ tp = &dh11[(c>>8)&017]; if (tp >= &dh11[NDH11]) continue; if((tp->t_state&ISOPEN)==0 || (c&PERROR)) { wakeup(tp); continue; } if (c&FRERROR) /* break, return null */ c = 0; ttyinput(c, tp); } } dhsgtty(dev, av) int *av; { register struct tty *tp; register r; register int *v; tp = &dh11[dev.d_minor]; v = av; if (v) { *v++ = tp->t_speeds; *v++ = 0; *v++ = tp->t_flags; return; } wflushtty(tp); tp->t_speeds = u.u_arg[0]; tp->t_flags = u.u_arg[2]; dhparam(tp); } dhparam(atp) struct tty *atp; { register struct tty *tp; register int lpr; tp = atp; spl5(); DHADDR->dhcsr.lobyte = (tp - dh11) | IENABLE; lpr = (tp->t_speeds.hibyte<<10) | (tp->t_speeds.lobyte<<6); if (tp->t_speeds.lobyte == 4) /* 134.5 baud */ lpr =| BITS6|PENABLE|HDUPLX; else if (tp->t_flags&EVENP) if (tp->t_flags&ODDP) lpr =| BITS8; else lpr =| BITS7|PENABLE; else lpr =| BITS7|OPAR|PENABLE; DHADDR->dhlpr = lpr; spl0(); } dhxint() { register struct tty *tp; register ttybit, bar; bar = DHADDR->dhbar; DHADDR->dhcsr =& ~0101060; bar = (bar|dhsar)^bar; ttybit = 1; for (tp = dh11; tp < &dh11[NDH11]; tp++) { if(bar&ttybit) { dhsar =& ~ttybit; tp->t_state =& ~BUSY; dhstart(tp); } ttybit =<< 1; } } dhstart(atp) struct tty *atp; { extern ttrstrt(); register lineno, c; register struct tty *tp; int sps; struct { int int; }; sps = PS->int; spl5(); tp = atp; if (tp->t_state&(TIMEOUT|BUSY) || (tp->t_outq.c_cc==0)) return; if ((c = getc(&tp->t_outq))<=0177) { tp->t_char = c; lineno = tp-dh11; DHADDR->dhcsr.lobyte = lineno | IENABLE; DHADDR->dhcar = &tp->t_char; DHADDR->dhbcr = -1; lineno = 1<dhbar =| lineno; dhsar =| lineno; tp->t_state =| BUSY; } else { timeout(ttrstrt, tp, (c&0177)+6); tp->t_state =| TIMEOUT; } if (tp->t_outq.c_cc == 0 || tp->t_outq.c_cc == TTLOWAT) wakeup(&tp->t_outq); PS->int = sps; } # /* * Copyright 1973 Bell Telephone Laboratories Inc */ /* * DM-BB driver */ #include "../param.h" #include "../tty.h" #include "../conf.h" #define DMADDR 0170500 struct tty dh11[]; int ndh11; #define DONE 0200 #define SCENABL 040 #define CLSCAN 01000 #define TURNON 07 /* RQ send, CD lead, line enable */ #define CARRIER 0100 struct dmregs { int dmcsr; int dmlstat; }; dmopen(dev) { register struct tty *tp; tp = &dh11[dev.d_minor]; DMADDR->dmcsr = dev.d_minor; DMADDR->dmlstat = TURNON; if (DMADDR->dmlstat&CARRIER) tp->t_state =| CARR_ON; DMADDR->dmcsr = IENABLE|SCENABL; spl5(); while ((tp->t_state&CARR_ON)==0) sleep(&tp->t_rawq, TTIPRI); spl0(); } dmint() { register struct tty *tp; if (DMADDR->dmcsr&DONE) { tp = &dh11[DMADDR->dmcsr&017]; if (tp < &dh11[ndh11]) { wakeup(tp); if ((DMADDR->dmlstat&CARRIER)==0) { if ((tp->t_state&WOPEN)==0) { signal(tp, SIGHUP); DMADDR->dmlstat = 0; flushtty(tp); } tp->t_state =& ~CARR_ON; } else tp->t_state =| CARR_ON; } DMADDR->dmcsr = IENABLE|SCENABL; } } # /* * Copyright 1973 Bell Telephone Laboratories Inc */ /* * DM-BB fake driver */ #include "../tty.h" #include "../conf.h" struct tty dh11[]; dmopen(dev) { register struct tty *tp; tp = &dh11[dev.d_minor]; tp->t_state =| CARR_ON; } # /* * Copyright 1973 Bell Telephone Laboratories Inc */ /* * DN-11 ACU interface */ #include "../param.h" #include "../conf.h" #include "../user.h" struct dn { struct { char dn_stat; char dn_reg; } dn11[3]; } #define DNADDR 0175200 #define PWI 00200 #define ACR 00100 #define DLO 0020 #define DONE 0200 #define IENABLE 0100 #define DSS 040 #define PND 020 #define MENABLE 04 #define DPR 02 #define CRQ 01 #define DNPRI 5 dnopen(dev, flag) { register struct dn *dp; register int rdev; rdev = dev.d_minor; dp = &DNADDR->dn11[rdev]; if (dp->dn_reg&(PWI|DLO)) u.u_error = ENXIO; else { DNADDR->dn11[0].dn_stat =| MENABLE; dp->dn_stat = IENABLE|MENABLE|CRQ; } } dnclose(dev) { DNADDR->dn11[dev.d_minor].dn_stat =& MENABLE; } dnwrite(dev) { register struct dn *dp; register c; extern lbolt; dp = &DNADDR->dn11[dev.d_minor]; for(;;) { while ((dp->dn_stat&DONE)==0) sleep(DNADDR, DNPRI); dp->dn_stat =& ~DONE; contin: if (dp->dn_reg&(PWI|ACR)) { u.u_error = EIO; return; } if (dp->dn_stat&DSS) return; c = 0; if (u.u_count==0 || (dp->dn_stat&PND)==0 || (c=cpass())<0) continue; if (c=='-') { sleep(&lbolt, DNPRI); sleep(&lbolt, DNPRI); goto contin; } dp->dn_reg = c-'0'; dp->dn_stat =| DPR; } } dnint(dev) { wakeup(DNADDR); } # /* * Copyright 1973 Bell Telephone Laboratories Inc */ /* * DP-11 Synchronous interface driver */ #include "../param.h" #include "../conf.h" #include "../user.h" #include "../buf.h" /* control info */ struct { char *dp_buf; char *dp_bufp; int dp_nxmit; char dp_state; char dp_timer; int dp_proc; } dp11; /* device registers */ struct { int dprcsr; char dprbuf; char dpsyn0; int dptcsr; char dptbuf; char dpsyn1; }; /* bits */ #define ODDPAR 010000 #define IENABLE 0100 #define HDUPLX 02 #define CTRANS 0100000 #define RORUN 040000 #define RING 020000 #define DSRDY 010000 #define CARRIER 04000 #define DONE 0200 #define IENABLE 0100 #define SIENABL 040 #define WRITE 1 #define READ 0 #define DTRDY 01 #define RCVACT 04000 #define DPADDR 0174770 #define DPPRI 5 dpopen(dev, flag) { int dptimeout(); if (dp11.dp_proc!=0 && dp11.dp_proc!=u.u_procp) { u.u_error = ENXIO; return; } dp11.dp_proc = u.u_procp; dp11.dp_state = READ; if (dp11.dp_buf==0) { dp11.dp_buf = getblk(NODEV); dp11.dp_bufp = dp11.dp_buf->b_addr; dp11.dp_timer = 60; timeout(dptimeout, 0, 60); } DPADDR->dpsyn0 = 026; DPADDR->dprcsr = HDUPLX|IENABLE; DPADDR->dptcsr = IENABLE|SIENABL|DTRDY; } dpclose() { DPADDR->dprcsr = 0; DPADDR->dptcsr = 0; dp11.dp_timer = 0; dp11.dp_proc = 0; if (dp11.dp_buf != 0) { brelse(dp11.dp_buf); dp11.dp_buf = 0; } } dpread() { register char *bp, **epp; bp = dp11.dp_buf->b_addr; epp = &dp11.dp_bufp; for(;;) { if(dpwait()) return; if (*epp > bp) break; spl6(); if (dp11.dp_timer <= 1) { spl0(); return; } sleep(&dp11, DPPRI); spl0(); } iomove(dp11.dp_buf, 0, min(u.u_count, *epp-bp), B_READ); } dpwrite() { register char *bp; if (u.u_count==0 ||dpwait()) return; dp11.dp_state = WRITE; bp = dp11.dp_buf->b_addr; dp11.dp_bufp = bp; if (u.u_count>512) u.u_count = 512; dp11.dp_nxmit = u.u_count; iomove(dp11.dp_buf, 0, u.u_count, B_WRITE); dpstart(); } dpwait() { for(;;) { if ((DPADDR->dptcsr&DSRDY)==0 || dp11.dp_buf==0) { u.u_error = EIO; return(1); } spl6(); if (dp11.dp_state==READ && (DPADDR->dptcsr&CARRIER)==0) { spl0(); return(0); } sleep(&dp11, DPPRI); spl0(); } } dpstart() { register int c; extern char partab[]; dp11.dp_timer = 5; if (--dp11.dp_nxmit >= 0) { c = (*dp11.dp_bufp++) & 0177; DPADDR->dptbuf = c | ~partab[c]&0200; } else { dp11.dp_bufp = dp11.dp_buf->b_addr; dp11.dp_state = READ; } } dptimeout() { if (dp11.dp_timer==0) return; if (--dp11.dp_timer==0) { dpturnaround(); dp11.dp_timer = 1; } timeout(dptimeout, 0, 60); } dprint() { register int c; c = DPADDR->dprbuf & 0177; if (dp11.dp_state==READ) { if ((DPADDR->dprcsr&ODDPAR) == 0) c =| 0200; if (dp11.dp_bufp < dp11.dp_buf->b_addr+512) *dp11.dp_bufp++ = c; } } dpxint() { register int dpstat; dpstat = DPADDR->dptcsr; DPADDR->dptcsr =& ~(CTRANS|RORUN|RING|DONE); if (dpstat & (CTRANS|RORUN)) dpturnaround(); else if (dpstat&DONE && dp11.dp_state==WRITE) dpstart(); } dpturnaround() { dp11.dp_timer = 5; DPADDR->dprcsr =& ~RCVACT; if (dp11.dp_state==WRITE) { dp11.dp_state = READ; dp11.dp_bufp = dp11.dp_buf->b_addr; } wakeup(&dp11); } # /* * Copyright 1973 Bell Telephone Laboratories Inc */ /* * KL-11 driver */ #include "../param.h" #include "../conf.h" #include "../user.h" #include "../tty.h" #include "../proc.h" /* base address */ #define KLADDR 0177560 #define KLBASE 0176500 #define NKL11 4 #define DSRDY 02 #define RDRENB 01 struct tty kl11[NKL11]; struct klregs { int klrcsr; int klrbuf; int kltcsr; int kltbuf; } klopen(dev, flag) { register *addr; register struct tty *tp; if(dev.d_minor >= NKL11) { u.u_error = ENXIO; return; } tp = &kl11[dev.d_minor]; tp->t_quit = 034; /* ctl shf l */ tp->t_intrup = 0177; /* DEL */ if (u.u_procp->p_ttyp == 0) u.u_procp->p_ttyp = tp; addr = KLADDR; if(dev.d_minor) addr = KLBASE-8 + 8*dev.d_minor; tp->t_addr = addr; tp->t_flags = XTABS|LCASE|ECHO|CRMOD; tp->t_state = CARR_ON; addr->klrcsr =| IENABLE|DSRDY|RDRENB; addr->kltcsr =| IENABLE; } klclose(dev) { wflushtty(&kl11[dev.d_minor]); } klread(dev) { ttread(&kl11[dev.d_minor]); } klwrite(dev) { ttwrite(&kl11[dev.d_minor]); } klxint(dev) { register struct tty *tp; tp = &kl11[dev.d_minor]; ttstart(tp); if (tp->t_outq.c_cc == 0 || tp->t_outq.c_cc == TTLOWAT) wakeup(&tp->t_outq); } klrint(dev) { register int c, *addr; register struct tty *tp; tp = &kl11[dev.d_minor]; addr = tp->t_addr; c = addr->klrbuf; addr->klrcsr =| RDRENB; if ((c&0177)==0) addr->kltbuf = c; /* hardware botch */ ttyinput(c, tp); } klsgtty(dev, v) int *v; { register struct tty *tp; tp = &kl11[dev.d_minor]; if (v) v[2] = tp->t_flags; else { wflushtty(tp); tp->t_flags = u.u_arg[2]; } } # /* * Copyright 1973 Bell Telephone Laboratories Inc */ /* * LP-11 Line printer driver */ #include "../param.h" #include "../conf.h" #include "../user.h" #define LPADDR 0177514 #define IENABLE 0100 #define DONE 0200 #define LPPRI 10 #define LPLWAT 50 #define LPHWAT 100 #define EJLINE 60 #define MAXCOL 80 struct { int lpsr; int lpbuf; }; struct { int cc; int cf; int cl; int flag; int mcc; int ccc; int mlc; } lp11; #define CAP 01 #define EJECT 02 #define OPEN 04 #define FORM 014 lpopen(dev, flag) { if(lp11.flag & OPEN || LPADDR->lpsr < 0) { u.u_error = EIO; return; } lp11.flag =| (CAP|EJECT|OPEN); LPADDR->lpsr =| IENABLE; lpcanon(FORM); } lpclose(dev, flag) { lpcanon(FORM); lp11.flag = 0; } lpwrite() { register int c; while ((c=cpass())>=0) lpcanon(c); } lpcanon(c) { register c1, c2; c1 = c; if(lp11.flag&CAP) { if(c1>='a' && c1<='z') c1 =+ 'A'-'a'; else switch(c1) { case '{': c2 = '('; goto esc; case '}': c2 = ')'; goto esc; case '`': c2 = '\''; goto esc; case '|': c2 = '!'; goto esc; case '~': c2 = '^'; esc: lpcanon(c2); lp11.ccc--; c1 = '-'; } } switch(c1) { case '\t': lp11.ccc = (lp11.ccc+8) & ~7; return; case FORM: case '\n': if((lp11.flag&EJECT) == 0 || lp11.mcc!=0 || lp11.mlc!=0) { lp11.mcc = 0; lp11.mlc++; if(lp11.mlc >= EJLINE && lp11.flag&EJECT) c1 = FORM; lpoutput(c1); if(c1 == FORM) lp11.mlc = 0; } case '\r': lp11.ccc = 0; return; case 010: if(lp11.ccc > 0) lp11.ccc--; return; case ' ': lp11.ccc++; return; default: if(lp11.ccc < lp11.mcc) { lpoutput('\r'); lp11.mcc = 0; } if(lp11.ccc < MAXCOL) { while(lp11.ccc > lp11.mcc) { lpoutput(' '); lp11.mcc++; } lpoutput(c1); lp11.mcc++; } lp11.ccc++; } } lpstart() { register int c; while (LPADDR->lpsr&DONE && (c = getc(&lp11)) >= 0) LPADDR->lpbuf = c; } lpint() { register int c; lpstart(); if (lp11.cc == LPLWAT || lp11.cc == 0) wakeup(&lp11); } lpoutput(c) { if (lp11.cc >= LPHWAT) sleep(&lp11, LPPRI); putc(c, &lp11); spl4(); lpstart(); spl0(); } # /* * Copyright 1973 Bell Telephone Laboratories Inc */ struct map { char *m_size; char *m_addr; }; malloc(mp, size) struct map *mp; { register int a; register struct map *bp; for (bp = mp; bp->m_size; bp++) { if (bp->m_size >= size) { a = bp->m_addr; bp->m_addr =+ size; if ((bp->m_size =- size) == 0) do { bp++; (bp-1)->m_addr = bp->m_addr; } while ((bp-1)->m_size = bp->m_size); return(a); } } return(0); } mfree(mp, size, aa) struct map *mp; { register struct map *bp; register int t; register int a; a = aa; for (bp = mp; bp->m_addr<=a && bp->m_size!=0; bp++); if (bp>mp && (bp-1)->m_addr+(bp-1)->m_size == a) { (bp-1)->m_size =+ size; if (a+size == bp->m_addr) { (bp-1)->m_size =+ bp->m_size; while (bp->m_size) { bp++; (bp-1)->m_addr = bp->m_addr; (bp-1)->m_size = bp->m_size; } } } else { if (a+size == bp->m_addr && bp->m_size) { bp->m_addr =- size; bp->m_size =+ size; } else if (size) do { t = bp->m_addr; bp->m_addr = a; a = t; t = bp->m_size; bp->m_size = size; bp++; } while (size = t); } } # /* * Copyright 1973 Bell Telephone Laboratories Inc */ /* * Memory special file * minor device 0 is physical memory * minor device 1 is kernel memory * minor device 2 is EOF/RATHOLE */ #include "../param.h" #include "../user.h" #include "../conf.h" #include "../seg.h" mmread(dev) { register c, bn, on; int a; if(dev.d_minor == 2) return; do { bn = lshift(u.u_offset, -6); on = u.u_offset[1] & 077; a = UISA->r[0]; spl7(); UISA->r[0] = bn; if(dev.d_minor == 1) UISA->r[0] = KISA->r[(bn>>7)&07] + (bn & 0177); c = fubyte(on); UISA->r[0] = a; spl0(); } while(u.u_error==0 && passc(c)>=0); } mmwrite(dev) { register c, bn, on; int a; if(dev.d_minor == 2) { c = u.u_count; u.u_count = 0; u.u_base =+ c; dpadd(u.u_offset, c); return; } for(;;) { bn = lshift(u.u_offset, -6); on = u.u_offset[1] & 077; if ((c=cpass())<0 || u.u_error!=0) break; a = UISA->r[0]; spl7(); UISA->r[0] = bn; if(dev.d_minor == 1) UISA->r[0] = KISA->r[(bn>>7)&07] + (bn & 0177); subyte(on, c); UISA->r[0] = a; spl0(); } } /* * Copyright 1973 Bell Telephone Laboratories Inc */ char partab[] { 0001,0201,0201,0001,0201,0001,0001,0201, 0202,0004,0003,0205,0005,0206,0201,0001, 0201,0001,0001,0201,0001,0201,0201,0001, 0001,0201,0201,0001,0201,0001,0001,0201, 0200,0000,0000,0200,0000,0200,0200,0000, 0000,0200,0200,0000,0200,0000,0000,0200, 0000,0200,0200,0000,0200,0000,0000,0200, 0200,0000,0000,0200,0000,0200,0200,0000, 0200,0000,0000,0200,0000,0200,0200,0000, 0000,0200,0200,0000,0200,0000,0000,0200, 0000,0200,0200,0000,0200,0000,0000,0200, 0200,0000,0000,0200,0000,0200,0200,0000, 0000,0200,0200,0000,0200,0000,0000,0200, 0200,0000,0000,0200,0000,0200,0200,0000, 0200,0000,0000,0200,0000,0200,0200,0000, 0000,0200,0200,0000,0200,0000,0000,0201 }; # /* * Copyright 1973 Bell Telephone Laboratories Inc */ /* * PC-11 Paper tape reader/punch driver */ #include "../param.h" #include "../conf.h" #include "../user.h" #define PCADDR 0177550 #define CLOSED 0 #define WAITING 1 #define READING 2 #define EOF 3 #define RDRENB 01 #define IENABLE 0100 #define DONE 0200 #define BUSY 04000 #define ERROR 0100000 #define PCIPRI 30 #define PCOPRI 40 #define PCOLWAT 50 #define PCOHWAT 100 #define PCIHWAT 250 struct { int pcrcsr; int pcrbuf; int pcpcsr; int pcpbuf; }; struct clist { int cc; int cf; int cl; }; struct pc11 { int pcstate; struct clist pcin; struct clist pcout; } pc11; pcopen(dev, flag) { extern lbolt; if (flag==0) { if (pc11.pcstate!=CLOSED) { u.u_error = ENXIO; return; } pc11.pcstate = WAITING; while(pc11.pcstate==WAITING) { PCADDR->pcrcsr = IENABLE|RDRENB; sleep(&lbolt, PCIPRI); } } else { PCADDR->pcpcsr =| IENABLE; pcleader(); } } pcclose(dev, flag) { if (flag==0) { spl4(); while (getc(&pc11.pcin) >= 0); PCADDR->pcrcsr = 0; pc11.pcstate = CLOSED; spl0(); } else pcleader(); } pcread() { register int c; spl4(); do { while ((c = getc(&pc11.pcin)) < 0) { if (pc11.pcstate==EOF) goto out; if ((PCADDR->pcrcsr&(ERROR|BUSY|DONE))==0) PCADDR->pcrcsr =| IENABLE|RDRENB; sleep(&pc11.pcin, PCIPRI); } } while (passc(c)>=0); out: spl0(); } pcwrite() { register int c; while ((c=cpass())>=0) pcoutput(c); } pcstart() { register int c; if (PCADDR->pcpcsr&DONE && (c = getc(&pc11.pcout)) >= 0) PCADDR->pcpbuf = c; } pcrint() { if (pc11.pcstate==WAITING) { if (PCADDR->pcrcsr&ERROR) return; pc11.pcstate = READING; } if (pc11.pcstate==READING) { if (PCADDR->pcrcsr&ERROR) pc11.pcstate = EOF; else { putc(PCADDR->pcrbuf, &pc11.pcin); if (pc11.pcin.cc < PCIHWAT) PCADDR->pcrcsr =| IENABLE|RDRENB; } wakeup(&pc11.pcin); } } pcpint() { register int c; if ((c=getc(&pc11.pcout)) >= 0) PCADDR->pcpbuf = c; if (pc11.pcout.cc <= PCOLWAT) wakeup(&pc11.pcout); } pcoutput(c) { if (PCADDR->pcpcsr&ERROR) { u.u_error = EIO; return; } if (pc11.pcout.cc >= PCOHWAT) sleep(&pc11.pcout, PCOPRI); putc(c, &pc11.pcout); pcstart(); } pcleader() { register int i; i = 100; do pcoutput(0); while (--i); } # /* * Copyright 1973 Bell Telephone Laboratories Inc */ #include "../param.h" #include "../systm.h" #include "../user.h" #include "../inode.h" #include "../file.h" #include "../reg.h" #define PIPSIZ 4096 pipe() { register *ip, *rf, *wf; ip = ialloc(rootdev); if(ip == NULL) return; wf = falloc(); if(wf == NULL) { iput(ip); return; } u.u_ar0[R1] = u.u_ar0[R0]; rf = falloc(); if(rf == NULL) { wf->f_count = 0; u.u_ofile[u.u_ar0[R1]] = NULL; iput(ip); return; } wf->f_flag = FWRITE|FPIPE; wf->f_inode = ip; rf->f_flag = FREAD|FPIPE; rf->f_inode = ip; ip->i_count = 2; ip->i_flag = IACC|IUPD; ip->i_mode = IALLOC; } readp(fp) int *fp; { register *rp, *ip; rp = fp; ip = rp->f_inode; loop: plock(ip); if(rp->f_offset[1] == ip->i_size1) { if(rp->f_offset[1] != 0) { rp->f_offset[1] = 0; ip->i_size1 = 0; if(ip->i_mode&IWRITE) { ip->i_mode =& ~IWRITE; wakeup(ip+1); } } prele(ip); if(ip->i_count < 2) return; ip->i_mode =| IREAD; sleep(ip+2, PPIPE); goto loop; } u.u_offset[0] = 0; u.u_offset[1] = rp->f_offset[1]; readi(ip); rp->f_offset[1] = u.u_offset[1]; prele(ip); } writep(fp) { register *rp, *ip, c; rp = fp; ip = rp->f_inode; c = u.u_count; loop: plock(ip); if(ip->i_count<2 || c==0) { prele(ip); u.u_count = c; return; } if(ip->i_size1 == PIPSIZ) { ip->i_mode =| IWRITE; prele(ip); sleep(ip+1, PPIPE); goto loop; } u.u_offset[0] = 0; u.u_offset[1] = ip->i_size1; u.u_count = min(c, PIPSIZ-u.u_offset[1]); c =- u.u_count; writei(ip); prele(ip); if(ip->i_mode&IREAD) { ip->i_mode =& ~IREAD; wakeup(ip+2); } goto loop; } plock(ip) int *ip; { register *rp; rp = ip; while(rp->i_flag&ILOCK) { rp->i_flag =| IWANT; sleep(rp, PPIPE); } rp->i_flag =| ILOCK; } prele(ip) int *ip; { register *rp; rp = ip; rp->i_flag =& ~ILOCK; if(rp->i_flag&IWANT) { rp->i_flag =& ~IWANT; wakeup(rp); } } # /* * Copyright 1973 Bell Telephone Laboratories Inc */ /* * RF disk driver */ #include "../param.h" #include "../buf.h" #include "../conf.h" #include "../user.h" struct { int rfcs; int rfwc; int rfba; int rfda; int rfdae; }; struct devtab rftab; struct buf rrfbuf; #define NRFBLK 1024 #define RFADDR 0177460 #define GO 01 #define RCOM 02 #define WCOM 04 #define IENABLE 0100 rfstrategy(abp) struct buf *abp; { register struct buf *bp; bp = abp; if (bp->b_blkno >= NRFBLK*(bp->b_dev.d_minor+1)) { bp->b_flags =| B_ERROR; iodone(bp); return; } bp->av_forw = 0; spl5(); if (rftab.d_actf==0) rftab.d_actf = bp; else rftab.d_actl->av_forw = bp; rftab.d_actl = bp; if (rftab.d_active==0) rfstart(); spl0(); } rfstart() { register struct buf *bp; if ((bp = rftab.d_actf) == 0) return; rftab.d_active++; RFADDR->rfdae = bp->b_blkno.hibyte; devstart(bp, &RFADDR->rfda, bp->b_blkno<<8, 0); } rfintr() { register struct buf *bp; if (rftab.d_active == 0) return; bp = rftab.d_actf; rftab.d_active = 0; if (RFADDR->rfcs < 0) { /* error bit */ if (++rftab.d_errcnt <= 10) { rfstart(); return; } bp->b_flags =| B_ERROR; } rftab.d_errcnt = 0; rftab.d_actf = bp->av_forw; iodone(bp); rfstart(); } rfread(dev) { physio(rfstrategy, &rrfbuf, dev, B_READ); } rfwrite(dev) { physio(rfstrategy, &rrfbuf, dev, B_WRITE); } # /* * Copyright 1973 Bell Telephone Laboratories Inc */ /* * RK disk driver */ #include "../param.h" #include "../buf.h" #include "../conf.h" #include "../user.h" #define RKADDR 0177400 #define NRK 4 #define NRKBLK 4872 #define RESET 0 #define GO 01 #define SEEK 010 #define DRESET 014 #define IENABLE 0100 #define DRY 0200 #define ARDY 0100 #define WLO 020000 #define CTLRDY 0200 #define SEEKCMP 020000 #define B_SEEK 02000 struct buf *rk_q[NRK]; int *rk_ap; struct { int rkds; int rker; int rkcs; int rkwc; int rkba; int rkda; }; struct devtab rktab; struct buf rrkbuf; rkstrategy(abp) struct buf *abp; { register struct buf *bp; register *qc, *ql; int d; bp = abp; d = bp->b_dev.d_minor-7; if(d <= 0) d = 1; if (bp->b_blkno >= NRKBLK*d) { bp->b_flags =| B_ERROR; iodone(bp); return; } bp->av_forw = 0; bp->b_flags =& ~B_SEEK; if(bp->b_dev.d_minor < 8) d = bp->b_dev.d_minor; else d = lrem(bp->b_blkno, d); spl5(); if ((ql = *(qc = &rk_q[d])) == NULL) { *qc = bp; if (RKADDR->rkcs&CTLRDY) rkstart(); goto ret; } while ((qc = ql->av_forw) != NULL) { if (ql->b_blknob_blkno && bp->b_blknob_blkno || ql->b_blkno>bp->b_blkno && bp->b_blkno>qc->b_blkno) { ql->av_forw = bp; bp->av_forw = qc; goto ret; } ql = qc; } ql->av_forw = bp; ret: spl0(); } rkstart() { register struct buf *bp; register int *qp; for (qp = rk_q; qp < &rk_q[NRK];) { if ((bp = *qp++) && (bp->b_flags&B_SEEK)==0) { RKADDR->rkda = rkaddr(bp); rkcommand(IENABLE|SEEK|GO); if (RKADDR->rkcs<0) { /* error bit */ bp->b_flags =| B_ERROR; *--qp = bp->av_forw; iodone(bp); rkerror(); } else bp->b_flags =| B_SEEK; } } } rkaddr(bp) struct buf *bp; { register struct buf *p; register int b; int d, m; p = bp; b = p->b_blkno; m = p->b_dev.d_minor - 7; if(m <= 0) d = p->b_dev.d_minor; else { d = lrem(b, m); b = ldiv(b, m); } return(d<<13 | (b/12)<<4 | b%12); } rkintr() { register struct buf *bp; if (RKADDR->rkcs < 0) { /* error bit */ if (RKADDR->rker&WLO || ++rktab.d_errcnt>10) rkpost(B_ERROR); rkerror(); } if (RKADDR->rkcs&SEEKCMP) { rk_ap = &rk_q[(RKADDR->rkds>>13) & 07]; devstart(*rk_ap, &RKADDR->rkda, rkaddr(*rk_ap), 0); } else rkpost(0); } rkpost(errbit) { register struct buf *bp; if (rk_ap) { bp = *rk_ap; bp->b_flags =| B_DONE | errbit; *rk_ap = bp->av_forw; rk_ap = NULL; iodone(bp); rktab.d_errcnt = 0; rkstart(); } } rkerror() { register int *qp; register struct buf *bp; rkcommand(IENABLE|RESET|GO); for (qp = rk_q; qp < &rk_q[NRK];) if ((bp = *qp++) != NULL && bp->b_flags&B_SEEK) { RKADDR->rkda = rkaddr(bp); while ((RKADDR->rkds&(DRY|ARDY)) == DRY); rkcommand(IENABLE|DRESET|GO); } } rkcommand(com) { RKADDR->rkcs = com; while((RKADDR->rkcs&CTLRDY)==0); } rkread(dev) { physio(rkstrategy, &rrkbuf, dev, B_READ); } rkwrite(dev) { physio(rkstrategy, &rrkbuf, dev, B_WRITE); } # /* * Copyright 1973 Bell Telephone Laboratories Inc */ /* * RP disk driver */ #include "../param.h" #include "../buf.h" #include "../conf.h" #include "../user.h" struct { int rpds; int rper; int rpcs; int rpwc; int rpba; int rpca; int rpda; }; struct { char lbyte, hbyte; }; #define RPADDR 0176710 #define NRP 8 struct { char *nblocks; int cyloff; } rp_sizes[] { 40600, 0, /* cyl 0 thru 202 */ 40600, 203, /* cyl 203 thru 405 */ 9200, 0, /* cyl 0 thru 45 */ 9200, 360, /* cyl 360 thru 405 */ -1, 0, /* cyl 0 thru 327 */ -1, 78, /* cyl 78 thru 405 */ 0, 0, /* cyl X thru Y */ 0, 0, /* cyl X thru Y */ }; struct devtab rptab; struct buf rrpbuf; #define GO 01 #define RESET 0 #define RCOM 02 #define WCOM 04 #define HSEEK 014 #define IENABLE 0100 #define READY 0200 #define SUFU 01000 #define SUSU 02000 #define SUSI 04000 #define HNF 010000 /* * Use av_back to save track+sector, * b_resid for cylinder. */ #define trksec av_back #define cylin b_resid rpstrategy(abp) struct buf *abp; { register struct buf *bp; register char *p1, *p2; bp = abp; p1 = &rp_sizes[bp->b_dev.d_minor&07]; if (bp->b_dev.d_minor >= (NRP<<3) || bp->b_blkno >= p1->nblocks) { bp->b_flags =| B_ERROR; iodone(bp); return; } bp->av_forw = 0; bp->cylin = p1->cyloff; p1 = bp->b_blkno; p2 = lrem(p1, 10); p1 = ldiv(p1, 10); bp->trksec = (p1%20)<<8 | p2; bp->cylin =+ p1/20; spl5(); if ((p1 = rptab.d_actf)==0) rptab.d_actf = bp; else { for (; p2 = p1->av_forw; p1 = p2) { if (p1->cylin <= bp->cylin && bp->cylin < p2->cylin || p1->cylin >= bp->cylin && bp->cylin > p2->cylin) break; } bp->av_forw = p2; p1->av_forw = bp; } if (rptab.d_active==0) rpstart(); spl0(); } rpstart() { register struct buf *bp; if ((bp = rptab.d_actf) == 0) return; rptab.d_active++; RPADDR->rpda = bp->trksec; devstart(bp, &RPADDR->rpca, bp->cylin, bp->b_dev.d_minor>>3); } rpintr() { register struct buf *bp; register int ctr; if (rptab.d_active == 0) return; bp = rptab.d_actf; rptab.d_active = 0; if (RPADDR->rpcs < 0) { /* error bit */ /* printf("rpcs %o\nrpds %o\n", RPADDR->rpcs, RPADDR->rpds); printf("rper %o\n", RPADDR->rper); printf("flags %o\nblk %o\n", bp->b_flags, bp->b_blkno); */ if(RPADDR->rpds & (SUFU|SUSI|HNF)) { RPADDR->rpcs.lbyte = HSEEK|GO; ctr = 0; while ((RPADDR->rpds&SUSU) && --ctr); } RPADDR->rpcs = RESET|GO; ctr = 0; while ((RPADDR->rpcs&READY) == 0 && --ctr); if (++rptab.d_errcnt <= 10) { rpstart(); return; } bp->b_flags =| B_ERROR; } rptab.d_errcnt = 0; rptab.d_actf = bp->av_forw; bp->b_resid = RPADDR->rpwc; iodone(bp); rpstart(); } rpread(dev) { if(rpphys(dev)) physio(rpstrategy, &rrpbuf, dev, B_READ); } rpwrite(dev) { if(rpphys(dev)) physio(rpstrategy, &rrpbuf, dev, B_WRITE); } rpphys(dev) { register c; c = lshift(u.u_offset, -9); c =+ ldiv(u.u_count+511, 512); if(c > rp_sizes[dev.d_minor & 07].nblocks) { u.u_error = ENXIO; return(0); } return(1); } # /* * Copyright 1973 Bell Telephone Laboratories Inc */ /* * TC-11 DECtape driver */ #include "../param.h" #include "../conf.h" #include "../buf.h" #include "../user.h" struct { int tccsr; int tccm; int tcwc; int tcba; int tcdt; }; struct devtab tctab; #define TCADDR 0177340 #define NTCBLK 578 #define TAPERR 0100000 #define TREV 04000 #define READY 0200 #define IENABLE 0100 #define UPS 0200 #define SAT 0 #define RNUM 02 #define RDATA 04 #define SST 010 #define WDATA 014 #define GO 01 #define SFORW 1 #define SREV 2 #define SIO 3 tcclose(dev) { bflush(dev); } tcstrategy(abp) struct buf *abp; { register struct buf *bp; bp = abp; if(bp->b_blkno >= NTCBLK) { bp->b_flags =| B_ERROR; iodone(bp); return; } bp->av_forw = 0; spl6(); if (tctab.d_actf==0) tctab.d_actf = bp; else tctab.d_actl->av_forw = bp; tctab.d_actl = bp; if (tctab.d_active==0) tcstart(); spl0(); } tcstart() { register struct buf *bp; register int *tccmp, com; if ((bp = tctab.d_actf) == 0) return; tccmp = &TCADDR->tccm; if (((*tccmp).hibyte&07) != bp->b_dev.d_minor) (*tccmp).lobyte = SAT|GO; tctab.d_errcnt = 20; tctab.d_active = SFORW; com = (bp->b_dev.d_minor<<8) | IENABLE|RNUM|GO; if ((TCADDR->tccsr & UPS) == 0) { com =| TREV; tctab.d_active = SREV; } *tccmp = com; } tcintr() { register struct buf *bp; register int *tccmp; register int *tcdtp; tccmp = &TCADDR->tccm; bp = tctab.d_actf; if (*tccmp&TAPERR) { *tccmp =& ~TAPERR; if (--tctab.d_errcnt <= 0) { bp->b_flags =| B_ERROR; goto done; } if (*tccmp&TREV) { setforw: tctab.d_active = SFORW; *tccmp =& ~TREV; } else { setback: tctab.d_active = SREV; *tccmp =| TREV; } (*tccmp).lobyte = IENABLE|RNUM|GO; return; } tcdtp = &TCADDR->tcdt; switch (tctab.d_active) { case SIO: done: tctab.d_active = 0; if (tctab.d_actf = bp->av_forw) tcstart(); else TCADDR->tccm.lobyte = SAT|GO; iodone(bp); return; case SFORW: if (*tcdtp > bp->b_blkno) goto setback; if (*tcdtp < bp->b_blkno) goto setforw; *--tcdtp = bp->b_addr; /* core address */ *--tcdtp = bp->b_wcount; tccmp->lobyte = (bp->b_flags&B_XMEM) | IENABLE|GO | (bp->b_flags&B_READ?RDATA:WDATA); tctab.d_active = SIO; return; case SREV: if (*tcdtp+3 > bp->b_blkno) goto setback; goto setforw; } } # /* * Copyright 1973 Bell Telephone Laboratories Inc */ /* * TM tape driver */ #include "../param.h" #include "../buf.h" #include "../conf.h" #include "../user.h" struct { int tmer; int tmcs; int tmbc; int tmba; int tmdb; int tmrd; }; struct devtab tmtab; struct buf rtmbuf; char t_openf[8]; char *t_blkno[8]; char *t_nxrec[8]; #define TMADDR 0172520 #define GO 01 #define RCOM 02 #define WCOM 04 #define WEOF 06 #define SFORW 010 #define SREV 012 #define WIRG 014 #define REW 016 #define DENS 060000 /* 9-channel */ #define IENABLE 0100 #define CRDY 0200 #define GAPSD 010000 #define TUR 1 #define HARD 0102200 /* ILC, EOT, NXM */ #define EOF 0040000 #define SSEEK 1 #define SIO 2 tmopen(dev, flag) { register dminor; dminor = dev.d_minor; if (t_openf[dminor]) u.u_error = ENXIO; else { t_openf[dminor]++; t_blkno[dminor] = 0; t_nxrec[dminor] = 65535; } } tmclose(dev, flag) { register int dminor; dminor = dev.d_minor; t_openf[dminor] = 0; if (flag) tcommand(dminor, WEOF); tcommand(dminor, REW); } tcommand(unit, com) { extern lbolt; while (tmtab.d_active || (TMADDR->tmcs & CRDY)==0) sleep(&lbolt, 1); TMADDR->tmcs = DENS|com|GO | (unit<<8); } tmstrategy(abp) struct buf *abp; { register struct buf *bp; register char **p; bp = abp; p = &t_nxrec[bp->b_dev.d_minor]; if (*p <= bp->b_blkno) { if (*p < bp->b_blkno) { bp->b_flags =| B_ERROR; iodone(bp); return; } if (bp->b_flags&B_READ) { clrbuf(bp); iodone(bp); return; } } if ((bp->b_flags&B_READ)==0) *p = bp->b_blkno + 1; bp->av_forw = 0; spl5(); if (tmtab.d_actf==0) tmtab.d_actf = bp; else tmtab.d_actl->av_forw = bp; tmtab.d_actl = bp; if (tmtab.d_active==0) tmstart(); spl0(); } tmstart() { register struct buf *bp; register int com; int unit; register char *blkno; loop: if ((bp = tmtab.d_actf) == 0) return; unit = bp->b_dev.d_minor; blkno = t_blkno[unit]; if (t_openf[unit] < 0 || (TMADDR->tmcs & CRDY)==0) { bp->b_flags =| B_ERROR; tmtab.d_actf = bp->av_forw; iodone(bp); goto loop; } com = (unit<<8) | (bp->b_flags&B_XMEM) | IENABLE|DENS; if (blkno != bp->b_blkno) { tmtab.d_active = SSEEK; if (blkno < bp->b_blkno) { com =| SFORW|GO; TMADDR->tmbc = blkno - bp->b_blkno; } else { if (blkno==0) com =| REW|GO; else { com =| SREV|GO; TMADDR->tmbc = bp->b_blkno - blkno; } } TMADDR->tmcs = com; return; } tmtab.d_active = SIO; TMADDR->tmbc = bp->b_wcount << 1; TMADDR->tmba = bp->b_addr; /* core address */ TMADDR->tmcs = com | ((bp->b_flags&B_READ)? RCOM|GO: ((tmtab.d_errcnt)? WIRG|GO: WCOM|GO)); } tmintr() { register struct buf *bp; register int unit; if ((bp = tmtab.d_actf)==0) return; unit = bp->b_dev.d_minor; if (TMADDR->tmcs < 0) { /* error bit */ while(TMADDR->tmrd & GAPSD) ; /* wait for gap shutdown */ if ((TMADDR->tmer&(HARD|EOF))==0 && tmtab.d_active==SIO) { if (++tmtab.d_errcnt < 10) { t_blkno[unit]++; tmtab.d_active = 0; tmstart(); return; } } else if(bp != &rtmbuf && (TMADDR->tmer&EOF)==0) t_openf[unit] = -1; bp->b_flags =| B_ERROR; tmtab.d_active = SIO; } if (tmtab.d_active == SIO) { tmtab.d_errcnt = 0; t_blkno[unit]++; tmtab.d_actf = bp->av_forw; tmtab.d_active = 0; iodone(bp); bp->b_resid = TMADDR->tmbc; } else t_blkno[unit] = bp->b_blkno; tmstart(); } tmread(dev) { tmphys(dev); physio(tmstrategy, &rtmbuf, dev, B_READ); u.u_count = -rtmbuf.b_resid; } tmwrite(dev) { tmphys(dev); physio(tmstrategy, &rtmbuf, dev, B_WRITE); u.u_count = 0; } tmphys(dev) { register unit, a; unit = dev.d_minor; a = lshift(u.u_offset, -9); t_blkno[unit] = a; t_nxrec[unit] = ++a; } # /* * Copyright 1973 Bell Telephone Laboratories Inc */ /* * general TTY subroutines */ #include "../param.h" #include "../systm.h" #include "../user.h" #include "../tty.h" #include "../proc.h" #include "../inode.h" #include "../file.h" #include "../reg.h" #include "../conf.h" struct { int int; }; #define PS 0177776 char maptab[] { 000,000,000,000,004,000,000,000, 000,000,000,000,000,000,000,000, 000,000,000,000,000,000,000,000, 000,000,000,000,000,000,000,000, 000,'|',000,'#',000,000,000,'`', '{','}',000,000,000,000,000,000, 000,000,000,000,000,000,000,000, 000,000,000,000,000,000,000,000, '@',000,000,000,000,000,000,000, 000,000,000,000,000,000,000,000, 000,000,000,000,000,000,000,000, 000,000,000,000,000,000,'~',000, 000,'A','B','C','D','E','F','G', 'H','I','J','K','L','M','N','O', 'P','Q','R','S','T','U','V','W', 'X','Y','Z',000,000,000,000,000, }; struct cblock { struct cblock *c_next; char info[6]; }; struct cblock cfree[NCLIST]; struct cblock *cfreelist; struct { int ttrcsr; int ttrbuf; int tttcsr; int tttbuf; }; gtty() { int v[3]; register *up, *vp; vp = v; sgtty(vp); if (u.u_error) return; up = u.u_arg[0]; suword(up, *vp++); suword(++up, *vp++); suword(++up, *vp++); } stty() { register int *up; up = u.u_arg[0]; u.u_arg[0] = fuword(up); u.u_arg[1] = fuword(++up); u.u_arg[2] = fuword(++up); sgtty(0); } sgtty(v) { register struct file *fp; register struct inode *ip; if ((fp = getf(u.u_ar0[R0])) == NULL) return; ip = fp->f_inode; if ((ip->i_mode&IFMT) != IFCHR) { u.u_error = ENOTTY; return; } (*cdevsw[ip->i_addr[0].d_major].d_sgtty)(ip->i_addr[0], v); } wflushtty(atp) struct tty *atp; { register struct tty *tp; tp = atp; spl5(); while (tp->t_outq.c_cc) sleep(&tp->t_outq, TTOPRI); flushtty(tp); spl0(); } cinit() { register int ccp; register struct cblock *cp; register struct cdevsw *cdp; ccp = cfree; for (cp=(ccp+07)&~07; cp <= &cfree[NCLIST-1]; cp++) { cp->c_next = cfreelist; cfreelist = cp; } ccp = 0; for(cdp = cdevsw; cdp->d_open; cdp++) ccp++; nchrdev = ccp; } /* * flush all TTY queues */ flushtty(atp) struct tty *atp; { register struct tty *tp; register int sps; tp = atp; while (getc(&tp->t_canq) >= 0); while (getc(&tp->t_outq) >= 0); wakeup(&tp->t_rawq); wakeup(&tp->t_outq); sps = PS->int; spl5(); while (getc(&tp->t_rawq) >= 0); tp->t_delct = 0; PS->int = sps; } /* * transfer raw list to canonical list, * doing code conversion. */ canon(atp) struct tty *atp; { register char *bp; char *bp1; register struct tty *tp; register int c; tp = atp; spl5(); while (tp->t_delct==0) { if ((tp->t_state&CARR_ON)==0) return(0); sleep(&tp->t_rawq, TTIPRI); } spl0(); loop: bp = &canonb[2]; while ((c=getc(&tp->t_rawq)) >= 0) { if (c==0377) { tp->t_delct--; break; } if ((tp->t_flags&RAW)==0) { if (bp[-1]!='\\') { if (c==CERASE) { if (bp > &canonb[2]) bp--; continue; } if (c==CKILL) goto loop; if (c==CEOT) continue; } else if (maptab[c] && (maptab[c]==c || (tp->t_flags&LCASE))) { if (bp[-2] != '\\') c = maptab[c]; bp--; } } *bp++ = c; if (bp>=canonb+CANBSIZ) break; } bp1 = bp; bp = &canonb[2]; c = &tp->t_canq; while (bpt_flags; if ((c =& 0177) == '\r' && t_flags&CRMOD) c = '\n'; if ((t_flags&RAW)==0 && (c==tp->t_quit || c==tp->t_intrup)) { signal(tp, c==tp->t_intrup? SIGINT:SIGQIT); flushtty(tp); return; } if (tp->t_rawq.c_cc>=TTYHOG) { flushtty(tp); return; } if (t_flags&LCASE && c>='A' && c<='Z') c =+ 'a'-'A'; putc(c, &tp->t_rawq); if (t_flags&RAW || c=='\n' || c==004) { wakeup(&tp->t_rawq); if (putc(0377, &tp->t_rawq)==0) tp->t_delct++; } if (t_flags&ECHO) { ttyoutput(c, tp); ttstart(tp); } } /* * put character on TTY output queue, adding delays, * expanding tabs, and handling the CR/NL bit. */ ttyoutput(ac, tp) struct tty *tp; { register int c; register struct tty *rtp; register char *colp; int ctype; rtp = tp; c = ac&0177; if (c==004 && (rtp->t_flags&RAW)==0) return; if (c=='\t' && rtp->t_flags&XTABS) { do ttyoutput(' ', rtp); while (rtp->t_col&07); return; } if (rtp->t_flags&LCASE) { switch (c) { case '{': c = '('; goto esc; case '}': c = ')'; goto esc; case '|': c = '!'; goto esc; case '~': c = '^'; goto esc; case '`': c = '\''; esc: ttyoutput('\\', rtp); } if ('a'<=c && c<='z') c =+ 'A' - 'a'; } if (c=='\n' && rtp->t_flags&CRMOD) ttyoutput('\r', rtp); if (putc(c, &rtp->t_outq)) return; colp = &rtp->t_col; ctype = partab[c]; c = 0; switch (ctype&077) { /* ordinary */ case 0: (*colp)++; /* non-printing */ case 1: break; /* backspace */ case 2: if (*colp) (*colp)--; break; /* newline */ case 3: if (*colp) c = max((*colp>>4) + 3, 6); *colp = 0; break; /* tab */ case 4: if ((rtp->t_flags&NTDELAY)==0) c = 1 - (*colp | ~07); *colp =| 07; (*colp)++; break; /* vertical motion */ case 5: c = 0177; break; /* carriage return */ case 6: c = 6; *colp = 0; } if (c && (rtp->t_flags&NODELAY)==0) putc(c|0200, &rtp->t_outq); } ttrstrt(atp) { register struct tty *tp; tp = atp; tp->t_state =& ~TIMEOUT; ttstart(tp); } ttstart(atp) struct tty *atp; { register int *addr, c; register struct tty *tp; struct { int (*func)(); }; tp = atp; addr = tp->t_addr; if (tp->t_state&SSTART) { (*addr.func)(tp); return; } if ((addr->tttcsr&DONE)==0 || tp->t_state&TIMEOUT) return; if ((c=getc(&tp->t_outq)) >= 0) { if (c<=0177) addr->tttbuf = c | (partab[c]&0200); else { timeout(ttrstrt, tp, c&0177); tp->t_state =| TIMEOUT; } } } ttread(atp) struct tty *atp; { register struct tty *tp; tp = atp; if (tp->t_canq.c_cc || canon(tp)) while (tp->t_canq.c_cc && passc(getc(&tp->t_canq))>=0); } ttwrite(atp) struct tty *atp; { register struct tty *tp; register int c; tp = atp; while ((c=cpass())>=0) { spl5(); while (tp->t_outq.c_cc > TTHIWAT) { ttstart(tp); sleep(&tp->t_outq, TTOPRI); } spl0(); ttyoutput(c, tp); } ttstart(tp); } Ú Û Ü Ý Þ ß à á â ã ä å æ # /* * Copyright 1973 Bell Telephone Laboratories Inc */ /* * Screw Works interface via DC-11 */ #include "../tty.h" #define VSADDR 0174150 #define CDLEAD 01 #define B1200 030 #define STOP1 0400 #define CLSEND 02 #define RQSEND 01 struct { int vsrcsr; int vsrbuf; int vsxcsr; int vsxbuf; }; struct { struct clist iq; struct clist oq; } vs; char vsmap[] "?0*#?546?213?879?"; vsopen(dev) { VSADDR->vsrcsr = IENABLE|B1200|CDLEAD; VSADDR->vsxcsr = STOP1|IENABLE|B1200; vschar(0); } vsclose(dev) { VSADDR->vsrcsr =& ~IENABLE; while (getc(&vs.iq) >= 0); } vswrite(dev) { register int count, c; count = 0; while ((c=cpass()) >= 0) { if (--count <= 0) { count = 60; vschar(0); } vschar(c); } vschar(0); } vschar(c) { c =^ 0277; /* magic map */ spl5(); while (vs.oq.c_cc > 60) { vsxintr(); sleep(&vs.oq, TTIPRI); } putc(c, &vs.oq); vsxintr(); spl0(); } vsxintr() { static lchar; register c; register int *xcsr; xcsr = &VSADDR->vsxcsr; if (*xcsr&DONE) { if (lchar==0277) { *xcsr =& ~RQSEND; lchar = 0; if (vs.oq.c_cc==0) goto wake; } if ((*xcsr&CLSEND) == 0) { *xcsr =& ~RQSEND; *xcsr =| RQSEND; if ((*xcsr&CLSEND) == 0) goto wake; } if ((c = getc(&vs.oq)) >= 0) VSADDR->vsxbuf = lchar = c; if (vs.oq.c_cc <= 15) wake: wakeup(&vs.oq); } } vsread(dev) { register int c; spl5(); while ((c = getc(&vs.iq)) < 0) sleep(&vs.iq, TTIPRI); spl0(); passc(vsmap[c&017]); } vsrintr() { register int c; c = VSADDR->vsrbuf; if (vs.iq.c_cc<=10) putc(c, &vs.iq); wakeup(&vs.iq); } # /* * Copyright 1973 Bell Telephone Laboratories Inc */ /* * VT01 driver via DR11C to 11/20 */ #include "../param.h" #include "../user.h" int vtflag; struct vtreg { int csr; int buf; }; #define VTADDR 0167770 #define RQINT 01 #define BIENABL 040 #define SEOF 0100000 #define VTPRI 8 vtopen(dev, flag) { if (!flag) u.u_error = ENXIO; else VTADDR->csr = BIENABL; } vtclose() { VTADDR->buf = SEOF; VTADDR->csr =| RQINT; } vtwrite() { register int c; int register count; while ((c=cpass()) >= 0) { retry: for (count=0; count<10; count++) if ((VTADDR->csr&RQINT)==0) { VTADDR->buf = c&0377; VTADDR->csr =| RQINT; goto contin; } spl5(); if (VTADDR->csr&RQINT) { vtflag++; sleep(VTADDR, VTPRI); } spl0(); goto retry; contin:; } } vtintr() { VTADDR->csr =& ~RQINT; if (vtflag) { vtflag = 0; wakeup(VTADDR); } } È..Ò.Óbio.cÔcat.cÕdc.cÖdh.c×dhdm.cØdhfdm.cÙdn.cÚdp.cÛkl.cÜlp.cÝmalloc.cÞmem.cßpartab.càpc.cápipe.cârf.cãrk.cärp.cåtc.cætm.cçtty.cèvs.cévt.cÍdv.cstruct file { char f_flag; char f_count; int f_inode; char *f_offset[2]; } file[NFILE]; /* flags */ #define FREAD 01 #define FWRITE 02 #define FPIPE 04 struct filsys { int s_isize; int s_fsize; int s_nfree; int s_free[100]; int s_ninode; int s_inode[100]; char s_flock; char s_ilock; char s_fmod; char s_ronly; int s_time[2]; }; struct inode { char i_flag; char i_count; int i_dev; int i_number; int i_mode; char i_nlink; char i_uid; char i_gid; char i_size0; char *i_size1; int i_addr[8]; int i_lastr; } inode[NINODE]; /* flags */ #define ILOCK 01 #define IUPD 02 #define IACC 04 #define IMOUNT 010 #define IWANT 020 #define ITEXT 040 /* modes */ #define IALLOC 0100000 #define IFMT 060000 #define IFDIR 040000 #define IFCHR 020000 #define IFBLK 060000 #define ILARG 010000 #define ISUID 04000 #define ISGID 02000 #define IREAD 0400 #define IWRITE 0200 #define IEXEC 0100 # /* * Copyright 1973 Bell Telephone Laboratories Inc */ #include "../param.h" #include "../systm.h" #include "../filsys.h" #include "../buf.h" #include "../inode.h" #include "../user.h" iinit() { register *cp, *bp; bp = bread(rootdev, 1); cp = getblk(NODEV); if(u.u_error) panic("iinit"); bcopy(bp->b_addr, cp->b_addr, 256); brelse(bp); mount[0].m_bufp = cp; mount[0].m_dev = rootdev; cp = cp->b_addr; cp->s_flock = 0; cp->s_ilock = 0; cp->s_ronly = 0; time[0] = cp->s_time[0]; time[1] = cp->s_time[1]; } alloc(dev) { int bno; register *bp, *ip, *fp; fp = getfs(dev); while(fp->s_flock) sleep(&fp->s_flock, PINOD); bno = fp->s_free[--fp->s_nfree]; if(bno == 0) { fp->s_nfree++; printf("No space on dev %d\n", dev); u.u_error = ENOSPC; return(NULL); } if(fp->s_nfree <= 0) { fp->s_flock++; bp = bread(dev, bno); ip = bp->b_addr; fp->s_nfree = *ip++; bcopy(ip, fp->s_free, 100); brelse(bp); fp->s_flock = 0; wakeup(&fp->s_flock); } bp = getblk(dev, bno); clrbuf(bp); fp->s_fmod = 1; return(bp); } free(dev, bno) { register *fp, *bp, *ip; fp = getfs(dev); fp->s_fmod = 1; while(fp->s_flock) sleep(&fp->s_flock, PINOD); if(fp->s_nfree >= 100) { fp->s_flock++; bp = getblk(dev, bno); ip = bp->b_addr; *ip++ = fp->s_nfree; bcopy(fp->s_free, ip, 100); fp->s_nfree = 0; bwrite(bp); fp->s_flock = 0; wakeup(&fp->s_flock); } fp->s_free[fp->s_nfree++] = bno; fp->s_fmod = 1; } ialloc(dev) { register *fp, *bp, *ip; int i, j, k, ino; fp = getfs(dev); while(fp->s_ilock) sleep(&fp->s_ilock, PINOD); loop: if(fp->s_ninode > 0) { ino = fp->s_inode[--fp->s_ninode]; ip = iget(dev, ino); if(ip->i_mode == 0) { for(bp = &ip->i_mode; bp < &ip->i_addr[8];) *bp++ = 0; fp->s_fmod = 1; return(ip); } printf("busy i\n"); iput(ip); goto loop; } fp->s_ilock++; ino = 0; for(i=0; is_isize; i++) { bp = bread(dev, i+2); ip = bp->b_addr; for(j=0; j<256; j=+16) { ino++; if(ip[j] != 0) continue; for(k=0; ks_inode[fp->s_ninode++] = ino; if(fp->s_ninode >= 100) break; cont:; } brelse(bp); if(fp->s_ninode >= 100) break; } if(fp->s_ninode <= 0) panic("out of inodes"); fp->s_ilock = 0; wakeup(&fp->s_ilock); goto loop; } ifree(dev, ino) { register *fp; fp = getfs(dev); if(fp->s_ilock) return; if(fp->s_ninode >= 100) return; fp->s_inode[fp->s_ninode++] = ino; fp->s_fmod = 1; } getfs(dev) { register struct mount *p; for(p = &mount[0]; p < &mount[NMOUNT]; p++) if(p->m_bufp != NULL && p->m_dev == dev) { p = p->m_bufp->b_addr; return(p); } panic("no fs"); } update() { register struct inode *ip; register struct mount *mp; register *bp; if(updlock) return; updlock++; for(mp = &mount[0]; mp < &mount[NMOUNT]; mp++) if(mp->m_bufp != NULL) { ip = mp->m_bufp->b_addr; if(ip->s_fmod==0 || ip->s_ilock!=0 || ip->s_flock!=0 || ip->s_ronly!=0) continue; bp = getblk(mp->m_dev, 1); ip->s_fmod = 0; ip->s_time[0] = time[0]; ip->s_time[1] = time[1]; bcopy(ip, bp->b_addr, 256); bwrite(bp); } for(ip = &inode[0]; ip < &inode[NINODE]; ip++) if((ip->i_flag&ILOCK) == 0) { ip->i_flag =| ILOCK; iupdat(ip); prele(ip); } updlock = 0; bflush(NODEV); } # /* * Copyright 1973 Bell Telephone Laboratories Inc */ #include "../param.h" #include "../systm.h" #include "../user.h" #include "../proc.h" #define UMODE 0170000 #define CSW 0177570 #define PS 0177776 struct { int integ; }; clock(dev, sp, r1, nps, r0, pc, ps) { register struct callo *p1, *p2; register struct proc *pp; /* * restart clock */ *lks = 0115; /* * display register */ display(); /* * callouts * if none, just return * else update first non-zero time */ if(callout[0].c_func == 0) goto out; p2 = &callout[0]; while(p2->c_time<=0 && p2->c_func!=0) p2++; p2->c_time--; /* * if ps is high, just return */ if((ps&0340) != 0) goto out; /* * callout */ spl5(); if(callout[0].c_time <= 0) { p1 = &callout[0]; while(p1->c_func != 0 && p1->c_time <= 0) { (*p1->c_func)(p1->c_arg); p1++; } p2 = &callout[0]; while(p2->c_func = p1->c_func) { p2->c_time = p1->c_time; p2->c_arg = p1->c_arg; p1++; p2++; } } /* * lightning bolt time-out * and time of day */ out: if((ps&UMODE) == UMODE) { u.u_utime++; if(u.u_prof[3]) incupc(pc, u.u_prof); } else u.u_stime++; if(++lbolt >= 60) { if((ps&0340) != 0) return; lbolt =- 60; if(++time[1] == 0) ++time[0]; spl1(); if(time[1]==tout[1] && time[0]==tout[0]) wakeup(tout); if((time[1]&03) == 0) wakeup(&lbolt); for(pp = &proc[0]; pp < &proc[NPROC]; pp++) if(pp->p_time != 127) pp->p_time++; if(runin!=0) { runin = 0; wakeup(&runin); } if((ps&UMODE) == UMODE) { u.u_ar0 = &r0; pp = u.u_procp; if(issig()) psig(); if(pp->p_pri < 105) pp->p_pri++; savfp(); swtch(); } } } timeout(fun, arg, tim) { register struct callo *p1, *p2; register t; int s; t = tim; s = PS->integ; p1 = &callout[0]; spl7(); while(p1->c_func != 0 && p1->c_time <= t) { t =- p1->c_time; p1++; } p1->c_time =- t; p2 = p1; while(p2->c_func != 0) p2++; while(p2 >= p1) { (p2+1)->c_time = p2->c_time; (p2+1)->c_func = p2->c_func; (p2+1)->c_arg = p2->c_arg; p2--; } p1->c_time = t; p1->c_func = fun; p1->c_arg = arg; PS->integ = s; } # /* * Copyright 1973 Bell Telephone Laboratories Inc */ #include "../param.h" #include "../user.h" #include "../filsys.h" #include "../file.h" #include "../conf.h" #include "../inode.h" #include "../reg.h" getf(f) { register *fp, rf; rf = f; if(rf<0 || rf>=NOFILE) goto bad; fp = u.u_ofile[rf]; if(fp == NULL) { bad: u.u_error = EBADF; fp = NULL; } return(fp); } closef(fp) int *fp; { register *rfp, *ip; rfp = fp; if(rfp->f_flag&FPIPE) { ip = rfp->f_inode; ip->i_mode =& ~(IREAD|IWRITE); wakeup(ip+1); wakeup(ip+2); } if(rfp->f_count <= 1) closei(rfp->f_inode, rfp->f_flag&FWRITE); rfp->f_count--; } closei(ip, rw) int *ip; { register *rip; register dev, maj; rip = ip; dev = rip->i_addr[0]; maj = rip->i_addr[0].d_major; if(rip->i_count <= 1) switch(rip->i_mode&IFMT) { case IFCHR: (*cdevsw[maj].d_close)(dev, rw); break; case IFBLK: (*bdevsw[maj].d_close)(dev, rw); } iput(rip); } openi(ip, rw) int *ip; { register *rip; register dev, maj; rip = ip; dev = rip->i_addr[0]; maj = rip->i_addr[0].d_major; switch(rip->i_mode&IFMT) { case IFCHR: if(maj >= nchrdev) goto bad; (*cdevsw[maj].d_open)(dev, rw); break; case IFBLK: if(maj >= nblkdev) { bad: u.u_error = ENXIO; return; } (*bdevsw[maj].d_open)(dev, rw); } } access(ip, mode) int *ip; { register *rip, m; rip = ip; m = mode; if(m == IWRITE && getfs(ip->i_dev)->s_ronly != 0) { u.u_error = EROFS; return(1); } if(u.u_uid == 0) return(0); if(u.u_uid != rip->i_uid) { m =>> 3; if(u.u_gid != rip->i_gid) m =>> 3; } if((rip->i_mode&m) != 0) return(0); u.u_error = EACCES; return(1); } owner(ip) int *ip; { if(u.u_uid == ip->i_uid) return(1); return(suser()); } suser() { if(u.u_uid == 0) return(1); u.u_error = EPERM; return(0); } ufalloc() { register i; for (i=0; if_count==0) { u.u_ofile[i] = fp; fp->f_count++; fp->f_offset[0] = 0; fp->f_offset[1] = 0; if (fp>maxfp) maxfp = fp; return(fp); } printf("no file\n"); u.u_error = ENFILE; return(NULL); } # /* * Copyright 1973 Bell Telephone Laboratories Inc */ #include "../param.h" #include "../systm.h" #include "../user.h" #include "../inode.h" #include "../filsys.h" #include "../conf.h" #include "../buf.h" struct inode *maxip; iget(dev, ino) int dev; int ino; { register struct inode *p; register *ip2; int *ip1; register struct mount *ip; loop: ip = NULL; for(p = &inode[0]; p < &inode[NINODE]; p++) { if(dev==p->i_dev && ino==p->i_number) { if((p->i_flag&ILOCK) != 0) { p->i_flag =| IWANT; sleep(p, PINOD); goto loop; } if((p->i_flag&IMOUNT) != 0) { for(ip = &mount[0]; ip < &mount[NMOUNT]; ip++) if(ip->m_inodp == p) { dev = ip->m_dev; ino = ROOTINO; goto loop; } panic("no imt"); } p->i_count++; p->i_flag =| ILOCK; return(p); } if(ip==NULL && p->i_count==0) ip = p; } if((p=ip) == NULL) panic("no inodes"); if (p>maxip) maxip = p; p->i_dev = dev; p->i_number = ino; p->i_flag = ILOCK; p->i_count++; p->i_lastr = -1; ip = bread(dev, ldiv(ino+31,16)); ip1 = ip->b_addr + 32*lrem(ino+31, 16); ip2 = &p->i_mode; while(ip2 < &p->i_addr[8]) *ip2++ = *ip1++; brelse(ip); return(p); } iput(p) struct inode *p; { register *rp; rp = p; if(rp->i_count == 1) { rp->i_flag =| ILOCK; if(rp->i_nlink <= 0) { itrunc(rp); rp->i_mode = 0; ifree(rp->i_dev, rp->i_number); } iupdat(rp); prele(rp); rp->i_flag = 0; rp->i_number = 0; } rp->i_count--; prele(rp); } iupdat(p) int *p; { register *ip1, *ip2, *rp; int *bp, i; rp = p; if((rp->i_flag&(IUPD|IACC)) != 0) { if(getfs(rp->i_dev)->s_ronly) return; i = rp->i_number+31; bp = bread(rp->i_dev, ldiv(i,16)); ip1 = bp->b_addr + 32*lrem(i, 16); ip2 = &rp->i_mode; while(ip2 < &rp->i_addr[8]) *ip1++ = *ip2++; if(rp->i_flag&IACC) { *ip1++ = time[0]; *ip1++ = time[1]; } else ip1 =+ 2; if(rp->i_flag&IUPD) { *ip1++ = time[0]; *ip1++ = time[1]; } bwrite(bp); } } itrunc(ip) int *ip; { register *rp, *bp, *cp; rp = ip; if((rp->i_mode&(IFCHR&IFBLK)) != 0) return; for(ip = &rp->i_addr[0]; ip < &rp->i_addr[8]; ip++) if(*ip) { if((rp->i_mode&ILARG) != 0) { bp = bread(rp->i_dev, *ip); for(cp = bp->b_addr; cp < bp->b_addr+512; cp++) if(*cp) free(rp->i_dev, *cp); brelse(bp); } free(rp->i_dev, *ip); *ip = 0; } rp->i_mode =& ~ILARG; rp->i_size0 = 0; rp->i_size1 = 0; rp->i_flag =| IUPD; } maknode(mode) { register *ip; ip = ialloc(u.u_pdir->i_dev); ip->i_flag =| IACC|IUPD; ip->i_mode = mode|IALLOC; ip->i_nlink = 1; ip->i_uid = u.u_uid; ip->i_gid = u.u_gid; wdir(ip); return(ip); } wdir(ip) int *ip; { register char *cp1, *cp2; u.u_dent.u_ino = ip->i_number; cp1 = &u.u_dent.u_name[0]; for(cp2 = &u.u_dbuf[0]; cp2 < &u.u_dbuf[DIRSIZ];) *cp1++ = *cp2++; u.u_count = DIRSIZ+2; u.u_segflg = 1; u.u_base = &u.u_dent; writei(u.u_pdir); iput(u.u_pdir); } # /* * Copyright 1973 Bell Telephone Laboratories Inc */ #include "../param.h" #include "../user.h" #include "../systm.h" #include "../proc.h" #include "../text.h" #include "../inode.h" #include "../seg.h" int lksp[] { 0177546, 0172540, 0 }; int icode[] { 0104413, 0000014, 0000010, 0000777, 0000014, 0000000, 0062457, 0061564, 0064457, 0064556, 0000164, }; main() { extern schar; register i1, *p; /* * zero and free all of core */ updlock = 0; UISA->r[0] = KISA->r[6] + USIZE; UISD->r[0] = 077406; for(; fubyte(0) >= 0; UISA->r[0]++) { clearseg(UISA->r[0]); maxmem++; mfree(coremap, 1, UISA->r[0]); } printf("mem = %l\n", maxmem*10/32); maxmem = min(maxmem, MAXMEM); mfree(swapmap, nswap, swplo); /* * determine clock */ UISA->r[7] = KISA->r[7]; UISD->r[7] = 077406; for(p=lksp;; p++) { if(*p == 0) panic("no clock"); if(fuword(*p) != -1) { lks = *p; break; } } /* * set up system process */ proc[0].p_addr = KISA->r[6]; proc[0].p_size = USIZE; proc[0].p_stat = SRUN; proc[0].p_flag =| SLOAD|SSYS; u.u_procp = &proc[0]; /* * set up 'known' i-nodes */ sureg(); *lks = 0115; cinit(); binit(); iinit(); rootdir = iget(rootdev, ROOTINO); rootdir->i_flag =& ~ILOCK; u.u_cdir = iget(rootdev, ROOTINO); u.u_cdir->i_flag =& ~ILOCK; /* * make init process * enter scheduling loop * with system process */ if(newproc()) { expand(USIZE+1); u.u_uisa[0] = USIZE; u.u_uisd[0] = 6; sureg(); copyout(icode, 0, 30); return; } sched(); } sureg() { register *up, *rp, a; a = u.u_procp->p_addr; up = &u.u_uisa[0]; rp = &UISA->r[0]; while(rp < &UISA->r[8]) *rp++ = *up++ + a; if((up=u.u_procp->p_textp) != NULL) a =- up->x_caddr; up = &u.u_uisd[0]; rp = &UISD->r[0]; while(rp < &UISD->r[8]) { *rp = *up++; if((*rp++ & WO) == 0) rp[(UISA-UISD)/2-1] =- a; } } estabur(nt, nd, ns) { register a, *ap, *dp; if(nseg(nt)+nseg(nd)+nseg(ns) > 8 || nt+nd+ns+USIZE > maxmem) { u.u_error = ENOMEM; return(-1); } a = 0; ap = &u.u_uisa[0]; dp = &u.u_uisd[0]; while(nt >= 128) { *dp++ = (127<<8) | RO; *ap++ = a; a =+ 128; nt =- 128; } if(nt) { *dp++ = ((nt-1)<<8) | RO; *ap++ = a; a =+ nt; } a = USIZE; while(nd >= 128) { *dp++ = (127<<8) | RW; *ap++ = a; a =+ 128; nd =- 128; } if(nd) { *dp++ = ((nd-1)<<8) | RW; *ap++ = a; a =+ nd; } while(ap < &u.u_uisa[8]) { *dp++ = 0; *ap++ = 0; } a =+ ns; while(ns >= 128) { a =- 128; ns =- 128; *--dp = (127<<8) | RW; *--ap = a; } if(ns) { *--dp = ((128-ns)<<8) | RW | ED; *--ap = a-128; } sureg(); return(0); } nseg(n) { return((n+127)>>7); } # /* * Copyright 1973 Bell Telephone Laboratories Inc */ #include "../param.h" #include "../inode.h" #include "../user.h" #include "../systm.h" #include "../buf.h" namei(func, flag) int (*func)(); int flag; /* * func = function called to get name * &uchar if name is in user space * &schar if name is in system space * flag = 0 if name is saught * 1 if name is to be created * 2 if name is to be deleted * return is incremented locked inode. * NULL if name not found */ { register struct inode *dp; register c; register char *cp; int eo, *bp; /* * start from indicated * directory */ dp = u.u_cdir; if((c=(*func)()) == '/') dp = rootdir; iget(dp->i_dev, dp->i_number); while(c == '/') c = (*func)(); cloop: /* * here dp contains pointer * to last component matched. */ if(u.u_error) goto out; if(c == '\0') return(dp); /* * if there is another component, * dp must be a directory and * must have x permission */ if((dp->i_mode&IFMT) != IFDIR) { u.u_error = ENOTDIR; goto out; } if(access(dp, IEXEC)) goto out; /* * gather up name into * users' dir buffer */ cp = &u.u_dbuf[0]; while(c!='/' && c!='\0' && u.u_error==0) { if(cp < &u.u_dbuf[DIRSIZ]) *cp++ = c; c = (*func)(); } while(cp < &u.u_dbuf[DIRSIZ]) *cp++ = '\0'; while(c == '/') c = (*func)(); if(u.u_error) goto out; /* * search the directory */ u.u_offset[1] = 0; u.u_offset[0] = 0; u.u_segflg = 1; eo = 0; u.u_count = ldiv(dp->i_size1, DIRSIZ+2); bp = NULL; eloop: if(u.u_count == 0) { if(bp != NULL) brelse(bp); if(flag==1 && c=='\0') { if(access(dp, IWRITE)) goto out; u.u_pdir = dp; if(eo) u.u_offset[1] = eo-DIRSIZ-2; else dp->i_flag =| IUPD; return(NULL); } u.u_error = ENOENT; goto out; } if((u.u_offset[1]&0777) == 0) { if(bp != NULL) brelse(bp); bp = bread(dp->i_dev, bmap(dp, ldiv(u.u_offset[1], 512))); } bcopy(bp->b_addr+(u.u_offset[1]&0777), &u.u_dent, (DIRSIZ+2)/2); u.u_offset[1] =+ DIRSIZ+2; u.u_count--; if(u.u_dent.u_ino == 0) { if(eo == 0) eo = u.u_offset[1]; goto eloop; } for(cp = &u.u_dbuf[0]; cp < &u.u_dbuf[DIRSIZ]; cp++) if(*cp != cp[u.u_dent.u_name - u.u_dbuf]) goto eloop; if(bp != NULL) brelse(bp); if(flag==2 && c=='\0') { if(access(dp, IWRITE)) goto out; return(dp); } bp = dp->i_dev; iput(dp); dp = iget(bp, u.u_dent.u_ino); if(dp == NULL) return(NULL); goto cloop; out: iput(dp); return(NULL); } schar() { return(*u.u_dirp++ & 0377); } uchar() { register c; c = fubyte(u.u_dirp++); if(c == -1) u.u_error = EFAULT; return(c); } # /* * Copyright 1973 Bell Telephone Laboratories Inc */ #include "../seg.h" #define KL 0177560 struct { int rsr; int rbr; int xsr; int xbr; int csw; }; char *panicstr; int kisa6; printf(fmt,x1,x2,x3,x4,x5,x6,x7,x8,x9,xa,xb,xc) char fmt[]; { register char *s; register *adx, c; adx = &x1; loop: while((c = *fmt++) != '%') { if(c == '\0') return; putchar(c); } switch(c = *fmt++) { case 'd': if(*adx < 0) { putchar('-'); *adx = -*adx; } case 'l': case 'o': printn(*adx, c=='o'? 8: 10); break; case 'c': putchar(*adx); break; case 's': s = *adx; while(c = *s++) putchar(c); } adx++; goto loop; } printn(n, b) { register a; if(a = ldiv(n, b)) printn(a, b); putchar(lrem(n, b) + '0'); } putchar(c) { register rc, s; rc = c; if(KL->csw == 0) return; while((KL->xsr&0200) == 0); if(rc == 0) return; s = KL->xsr; KL->xsr = 0; KL->xbr = rc; if(rc == '\n') { putchar('\r'); putchar(0177); putchar(0177); } putchar(0); KL->xsr = s; } panic(s) char *s; { panicstr = s; kisa6 = KISA->r[6]; update(); printf("panic: %s\n", s); for(;;) idle(); } # /* * Copyright 1973 Bell Telephone Laboratories Inc */ #include "../param.h" #include "../inode.h" #include "../user.h" #include "../buf.h" #include "../conf.h" #include "../systm.h" readi(aip) struct inode *aip; { int *bp; int lbn, bn, on; register dn, n; register struct inode *ip; ip = aip; if(u.u_count == 0) return; ip->i_flag =| IACC; if((ip->i_mode&IFMT) == IFCHR) { (*cdevsw[ip->i_addr[0].d_major].d_read)(ip->i_addr[0]); return; } do { lbn = bn = lshift(u.u_offset, -9); on = u.u_offset[1] & 0777; n = min(512-on, u.u_count); if((ip->i_mode&IFMT) != IFBLK) { dn = dpcmp(ip->i_size0, ip->i_size1, u.u_offset[0], u.u_offset[1]); if(dn <= 0) return; n = min(n, dn); if ((bn = bmap(ip, lbn)) == 0) return; dn = ip->i_dev; } else { dn = ip->i_addr[0]; rablock = bn+1; } if (ip->i_lastr+1 == lbn) bp = breada(dn, bn, rablock); else bp = bread(dn, bn); ip->i_lastr = lbn; iomove(bp, on, n, B_READ); brelse(bp); } while(u.u_error==0 && u.u_count!=0); } writei(aip) struct inode *aip; { int *bp; int n, on; register dn, bn; register struct inode *ip; ip = aip; ip->i_flag =| IACC|IUPD; if((ip->i_mode&IFMT) == IFCHR) { (*cdevsw[ip->i_addr[0].d_major].d_write)(ip->i_addr[0]); return; } if (u.u_count == 0) return; do { bn = lshift(u.u_offset, -9); on = u.u_offset[1] & 0777; n = min(512-on, u.u_count); if((ip->i_mode&IFMT) != IFBLK) { if ((bn = bmap(ip, bn)) == 0) return; dn = ip->i_dev; } else dn = ip->i_addr[0]; if(n == 512) bp = getblk(dn, bn); else bp = bread(dn, bn); iomove(bp, on, n, B_WRITE); if(u.u_error != 0) brelse(bp); else if ((u.u_offset[1]&0777)==0) bawrite(bp); else bdwrite(bp); if(dpcmp(ip->i_size0, ip->i_size1, u.u_offset[0], u.u_offset[1]) < 0 && (ip->i_mode&(IFBLK&IFCHR)) == 0) { ip->i_size0 = u.u_offset[0]; ip->i_size1 = u.u_offset[1]; } ip->i_flag =| IUPD; } while(u.u_error==0 && u.u_count!=0); } max(a, b) char *a, *b; { if(a > b) return(a); return(b); } min(a, b) char *a, *b; { if(a < b) return(a); return(b); } iomove(bp, o, an, flag) struct buf *bp; { register char *cp; register int n, t; n = an; cp = bp->b_addr + o; if(u.u_segflg==0 && ((n | cp | u.u_base)&01)==0) { if (flag==B_WRITE) cp = copyin(u.u_base, cp, n); else cp = copyout(cp, u.u_base, n); if (cp) { u.u_error = EFAULT; return; } u.u_base =+ n; dpadd(u.u_offset, n); u.u_count =- n; return; } if (flag==B_WRITE) { while(n--) { if ((t = cpass()) < 0) return; *cp++ = t; } } else while (n--) if(passc(*cp++) < 0) return; } # /* * Copyright 1973 Bell Telephone Laboratories Inc */ #include "../param.h" #include "../systm.h" #include "../user.h" #include "../proc.h" #include "../inode.h" #include "../reg.h" signal(tp, sig) { register struct proc *p; for(p = &proc[0]; p < &proc[NPROC]; p++) if(p->p_ttyp==tp) psignal(p, sig); } psignal(p, sig) int *p; { register *rp; rp = p; rp->p_sig = sig; if(rp->p_stat == SWAIT) { rp->p_wchan = 0; rp->p_stat = SRUN; if(runout) { runout = 0; wakeup(&runout); } } } issig() { register n; if(n = u.u_procp->p_sig) if((u.u_signal[n]&1) == 0) return(n); return(0); } psig() { register n, p; register *rp; rp = u.u_procp; n = rp->p_sig; rp->p_sig = 0; if((p=u.u_signal[n]) != 0) { u.u_error = 0; u.u_signal[n] = 0; suword(u.u_ar0[R6]=-2, u.u_ar0[RPS]); suword(u.u_ar0[R6]=-2, u.u_ar0[R7]); u.u_ar0[R7] = p; return; } switch(n) { case SIGQIT: case SIGINS: case SIGTRC: case SIGIOT: case SIGEMT: case SIGFPT: case SIGBUS: case SIGSEG: case SIGSYS: if(core()) n =+ 0200; } u.u_arg[0] = (u.u_ar0[R0]<<8) | n; exit(); } core() { register s, *ip; extern schar; u.u_error = 0; u.u_dirp = "core"; ip = namei(&schar, 1); if(ip == NULL) { if(u.u_error) return(0); ip = maknode(0666); } if(!access(ip, IWRITE)) { itrunc(ip); u.u_offset[0] = 0; u.u_offset[1] = 0; u.u_base = &u; u.u_count = USIZE*64; u.u_segflg = 1; writei(ip); s = u.u_procp->p_size - USIZE; estabur(0, s, 0); u.u_base = 0; u.u_count = s*64; u.u_segflg = 0; writei(ip); } iput(ip); return(u.u_error==0); } # /* * Copyright 1973 Bell Telephone Laboratories Inc */ #include "../param.h" #include "../user.h" #include "../proc.h" #include "../text.h" #include "../systm.h" #include "../file.h" #include "../inode.h" #include "../buf.h" #define PS 0177776 struct { int integ; }; sleep(chan, pri) { register *rp, s; u.u_dsleep = 0; s = PS->integ; rp = u.u_procp; if(pri >= 0) { if(issig()) goto psig; rp->p_wchan = chan; rp->p_stat = SWAIT; rp->p_pri = pri; spl0(); if(runin != 0) { runin = 0; wakeup(&runin); } swtch(); if(issig()) { psig: aretu(u.u_qsav); return; } } else { rp->p_wchan = chan; rp->p_stat = SSLEEP; rp->p_pri = pri; spl0(); swtch(); } PS->integ = s; } wakeup(chan) { register struct proc *p; register n, c; loop: c = chan; n = 0; for(p = &proc[0]; p < &proc[NPROC]; p++) if(p->p_wchan == c) { if(runout!=0 && (p->p_flag&SLOAD)==0) { runout = 0; n++; } p->p_wchan = 0; p->p_stat = SRUN; runrun++; } if(n) { chan = &runout; goto loop; } } sched() { struct proc *p1; register struct proc *rp; register a, n; /* * find user to swap in * of users ready, select one out longest */ goto loop; sloop: runin++; sleep(&runin, PSWP); loop: spl6(); n = -1; for(rp = &proc[0]; rp < &proc[NPROC]; rp++) if(rp->p_stat==SRUN && (rp->p_flag&SLOAD)==0 && rp->p_time > n) { p1 = rp; n = rp->p_time; } if(n == -1) { runout++; sleep(&runout, PSWP); goto loop; } /* * see if there is core for that process */ spl0(); rp = p1; a = rp->p_size; if((rp=rp->p_textp) != NULL) if(rp->x_ccount == 0) a =+ rp->x_size; if((a=malloc(coremap, a)) != NULL) goto found2; /* * none found, * look around for easy core */ spl6(); for(rp = &proc[0]; rp < &proc[NPROC]; rp++) if((rp->p_flag&(SSYS|SLOCK|SLOAD))==SLOAD && rp->p_stat == SWAIT) goto found1; /* * no easy core, * if this process is deserving, * look around for * oldest process in core */ if(n < 3) goto sloop; n = -1; for(rp = &proc[0]; rp < &proc[NPROC]; rp++) if((rp->p_flag&(SSYS|SLOCK|SLOAD))==SLOAD && (rp->p_stat==SRUN || rp->p_stat==SSLEEP) && rp->p_time > n) { p1 = rp; n = rp->p_time; } if(n < 2) goto sloop; rp = p1; /* * swap user out */ found1: spl0(); rp->p_flag =& ~SLOAD; xswap(rp, 1, 0); goto loop; /* * swap user in */ found2: if((rp=p1->p_textp) != NULL) { if(rp->x_ccount == 0) { if(swap(rp->x_daddr, a, rp->x_size, B_READ)) goto swaper; rp->x_caddr = a; a =+ rp->x_size; } rp->x_ccount++; } rp = p1; if(swap(rp->p_addr, a, rp->p_size, B_READ)) goto swaper; mfree(swapmap, (rp->p_size+7)/8, rp->p_addr); rp->p_addr = a; rp->p_flag =| SLOAD; rp->p_time = 0; goto loop; swaper: panic("swap error"); } swtch() { static int *p; register i, n; register struct proc *rp; if(p == NULL) p = &proc[0]; savu(u.u_rsav); retu(proc[0].p_addr); loop: rp = p; p = NULL; n = 127; for(i=0; i= &proc[NPROC]) rp = &proc[0]; if(rp->p_stat==SRUN && (rp->p_flag&SLOAD)==SLOAD) { if(rp->p_pri < n) { p = rp; n = rp->p_pri; } } } if(p == NULL) { p = rp; idle(); goto loop; } rp = p; retu(rp->p_addr); sureg(); if(rp->p_flag&SSWAP) { rp->p_flag =& ~SSWAP; aretu(u.u_ssav); } return(1); } newproc() { int a1, a2; struct proc *p, *up; register struct proc *rpp; register *rip, n; for(rpp = &proc[0]; rpp < &proc[NPROC]; rpp++) if(rpp->p_stat == NULL) goto found; panic("no procs"); found: /* * make proc entry for new proc */ p = rpp; rip = u.u_procp; up = rip; rpp->p_stat = SRUN; rpp->p_flag = SLOAD; rpp->p_ttyp = rip->p_ttyp; rpp->p_textp = rip->p_textp; rpp->p_pid = ++mpid; rpp->p_ppid = rip->p_pid; rpp->p_time = 0; /* * make duplicate entries * where needed */ for(rip = &u.u_ofile[0]; rip < &u.u_ofile[NOFILE];) if((rpp = *rip++) != NULL) rpp->f_count++; if((rpp=up->p_textp) != NULL) { rpp->x_count++; rpp->x_ccount++; } u.u_cdir->i_count++; /* * swap out old process * to make image of new proc */ savu(u.u_rsav); rpp = p; u.u_procp = rpp; rip = up; n = rip->p_size; a1 = rip->p_addr; rpp->p_size = n; a2 = malloc(coremap, n); if(a2 == NULL) { rip->p_stat = SIDL; rpp->p_addr = a1; savu(u.u_ssav); xswap(rpp, 0, 0); rpp->p_flag =| SSWAP; rip->p_stat = SRUN; } else { rpp->p_addr = a2; while(n--) copyseg(a1++, a2++); } u.u_procp = rip; return(0); } expand(newsize) { int i, n; register *p, a1, a2; p = u.u_procp; n = p->p_size; p->p_size = newsize; a1 = p->p_addr; if(n >= newsize) { mfree(coremap, n-newsize, a1+newsize); return; } savu(u.u_rsav); a2 = malloc(coremap, newsize); if(a2 == NULL) { savu(u.u_ssav); xswap(p, 1, n); p->p_flag =| SSWAP; swtch(); /* no return */ } p->p_addr = a2; for(i=0; ip_addr); sureg(); } # $ % & ' ( ) * + , # /* * Copyright 1973 Bell Telephone Laboratories Inc */ #include "../param.h" #include "../conf.h" #include "../inode.h" #include "../user.h" #include "../buf.h" #include "../systm.h" bmap(ip, bn) struct inode *ip; int bn; { register *bp, *bap, nb; int *nbp, d, i; d = ip->i_dev; if (bn & ~03777) { u.u_error = EFBIG; return(0); } if((ip->i_mode&ILARG) == 0) { /* * small file algorithm */ if((bn & ~7) != 0) { /* * bad part: * convert small to large */ if ((bp = alloc(d)) == NULL) return(0); bap = bp->b_addr; for(i=0; i<8; i++) { *bap++ = ip->i_addr[i]; ip->i_addr[i] = 0; } ip->i_addr[0] = bp->b_blkno; bdwrite(bp); ip->i_mode =| ILARG; goto large; } nb = ip->i_addr[bn]; if(nb == 0 && (bp = alloc(d)) != NULL) { bdwrite(bp); nb = bp->b_blkno; ip->i_addr[bn] = nb; ip->i_flag =| IUPD; } if (bn<7) rablock = ip->i_addr[bn+1]; else rablock = 0; return(nb); } /* * large file algorithm */ large: i = bn>>8; if((nb=ip->i_addr[i]) == 0) { ip->i_flag =| IUPD; if ((bp = alloc(d)) == NULL) return(0); nb = bp->b_blkno; ip->i_addr[i] = nb; } else bp = bread(d, nb); bap = bp->b_addr; i = bn & 0377; if((nb=bap[i]) == 0 && (nbp = alloc(d)) != NULL) { nb = nbp->b_blkno; bap[i] = nb; bdwrite(nbp); bdwrite(bp); } else brelse(bp); rablock = bap[i+1]; return(nb); } passc(c) char c; { if(u.u_segflg) *u.u_base = c; else if(subyte(u.u_base, c) < 0) { u.u_error = EFAULT; return(-1); } u.u_count--; if(++u.u_offset[1] == 0) u.u_offset[0]++; u.u_base++; return(u.u_count == 0? -1: 0); } cpass() { register c; if(u.u_count == 0) return(-1); if(u.u_segflg) c = *u.u_base; else if((c=fubyte(u.u_base)) < 0) { u.u_error = EFAULT; return(-1); } u.u_count--; if(++u.u_offset[1] == 0) u.u_offset[0]++; u.u_base++; return(c&0377); } nodev() { u.u_error = ENODEV; } nulldev() { } bcopy(from, to, count) int *from, *to; { register *a, *b, c; a = from; b = to; c = count; do *b++ = *a++; while(--c); } # /* * Copyright 1973 Bell Telephone Laboratories Inc */ #include "../param.h" #include "../systm.h" #include "../user.h" #include "../proc.h" #include "../text.h" #include "../buf.h" #include "../reg.h" #include "../inode.h" char regloc[8]; exec() { int ap, na, nc, *bp; int ts, ds; register c, *ip; register char *cp; extern uchar; /* * pick up file names * and check various modes * for execute permission */ ip = namei(&uchar, 0); if(ip == NULL) return; bp = getblk(NODEV); if(access(ip, IEXEC)) goto bad; /* * pack up arguments into * allocated disk buffer */ cp = bp->b_addr; na = 0; nc = 0; while(ap = fuword(u.u_arg[1])) { na++; if(ap == -1) goto bad; u.u_arg[1] =+ 2; for(;;) { c = fubyte(ap++); if(c == -1) goto bad; *cp++ = c; nc++; if(nc > 510) { u.u_error = E2BIG; goto bad; } if(c == 0) break; } } if((nc&1) != 0) { *cp++ = 0; nc++; } /* * read in first 8 bytes * of file for segment * sizes: * w0 = 407/410 (410 implies RO text) * w1 = text size * w2 = data size * w3 = bss size */ u.u_base = &u.u_arg[0]; u.u_count = 8; u.u_offset[1] = 0; u.u_offset[0] = 0; u.u_segflg = 1; readi(ip); u.u_segflg = 0; if(u.u_error) goto bad; if(u.u_arg[0] == 0407) { u.u_arg[2] =+ u.u_arg[1]; u.u_arg[1] = 0; } else if(u.u_arg[0] != 0410) { u.u_error = ENOEXEC; goto bad; } if(u.u_arg[1]!=0 && (ip->i_flag&ITEXT)==0 && ip->i_count!=1) { u.u_error = ETXTBSY; goto bad; } /* * find text and data sizes * try them out for possible * exceed of max sizes */ ts = ((u.u_arg[1]+63)>>6) & 01777; ds = ((u.u_arg[2]+u.u_arg[3]+63)>>6) & 01777; if(estabur(ts, ds, SSIZE)) goto bad; /* * allocate and clear core * at this point, committed * to the new image */ u.u_prof[3] = 0; xfree(); xalloc(ip); c = USIZE+ds+SSIZE; expand(USIZE); expand(c); while(--c >= USIZE) clearseg(u.u_procp->p_addr+c); /* * read in data segment */ estabur(0, ds, 0); u.u_base = 0; u.u_offset[1] = 020+u.u_arg[1]; u.u_count = u.u_arg[2]; readi(ip); /* * initialize stack segment */ u.u_tsize = ts; u.u_dsize = ds; u.u_ssize = SSIZE; estabur(u.u_tsize, u.u_dsize, u.u_ssize); cp = bp->b_addr; ap = -nc - na*2 - 4; u.u_ar0[R6] = ap; suword(ap, na); c = -nc; while(na--) { suword(ap=+2, c); do subyte(c++, *cp); while(*cp++); } suword(ap+2, -1); /* * set SUID/SGID protections */ if(ip->i_mode&ISUID) if(u.u_uid != 0) u.u_uid = ip->i_uid; if(ip->i_mode&ISGID) u.u_gid = ip->i_gid; /* * clear sigs, regs and return */ c = ip; for(ip = &u.u_signal[0]; ip < &u.u_signal[NSIG]; ip++) if((*ip & 1) == 0) *ip = 0; for(cp = ®loc[0]; cp < ®loc[6];) u.u_ar0[*cp++] = 0; u.u_ar0[R7] = 0; for(ip = &u.u_fsav[0]; ip < &u.u_fsav[25];) *ip++ = 0; ip = c; bad: iput(ip); brelse(bp); } rexit() { u.u_arg[0] = u.u_ar0[R0] << 8; exit(); } exit() { register int *q, a; register struct proc *p; for(q = &u.u_signal[0]; q < &u.u_signal[NSIG];) *q++ = 1; for(q = &u.u_ofile[0]; q < &u.u_ofile[NOFILE]; q++) if(a = *q) { *q = NULL; closef(a); } iput(u.u_cdir); xfree(); a = malloc(swapmap, 8); p = getblk(swapdev, a); bcopy(&u, p->b_addr, 256); bwrite(p); q = u.u_procp; mfree(coremap, q->p_size, q->p_addr); q->p_addr = a; q->p_stat = SZOMB; loop: for(p = &proc[0]; p < &proc[NPROC]; p++) if(q->p_ppid == p->p_pid) { wakeup(&proc[1]); wakeup(p); for(p = &proc[0]; p < &proc[NPROC]; p++) if(q->p_pid == p->p_ppid) p->p_ppid = 1; swtch(); /* no return */ } if(q->p_ppid == 1) panic("no init proc"); q->p_ppid = 1; goto loop; } wait() { register f, *bp; register struct proc *p; f = 0; loop: for(p = &proc[0]; p < &proc[NPROC]; p++) if(p->p_ppid == u.u_procp->p_pid) { f++; if(p->p_stat == SZOMB) { u.u_ar0[R0] = p->p_pid; bp = bread(swapdev, f=p->p_addr); mfree(swapmap, 8, f); p->p_stat = NULL; p->p_pid = 0; p->p_ppid = 0; p->p_sig = 0; p->p_ttyp = 0; p->p_flag = 0; p = bp->b_addr; u.u_cstime[0] =+ p->u_cstime[0]; dpadd(u.u_cstime, p->u_cstime[1]); dpadd(u.u_cstime, p->u_stime); u.u_cutime[0] =+ p->u_cutime[0]; dpadd(u.u_cutime, p->u_cutime[1]); dpadd(u.u_cutime, p->u_utime); u.u_ar0[R1] = p->u_arg[0]; brelse(bp); return; } } if(f) { sleep(u.u_procp, PWAIT); goto loop; } u.u_error = ECHILD; } fork() { register struct proc *p1, *p2; p1 = u.u_procp; for(p2 = &proc[0]; p2 < &proc[NPROC]; p2++) if(p2->p_stat == NULL) goto found; u.u_error = EAGAIN; goto out; found: if(newproc()) { u.u_ar0[R0] = p1->p_pid; u.u_cstime[0] = 0; u.u_cstime[1] = 0; u.u_stime = 0; u.u_cutime[0] = 0; u.u_cutime[1] = 0; u.u_utime = 0; return; } u.u_ar0[R0] = p2->p_pid; out: u.u_ar0[R7] =+ 2; } sbreak() { register a, n, d; int i; /* * set n to new data size * set d to new-old * set n to new total size */ n = (((u.u_arg[0]+63)>>6) & 01777) - nseg(u.u_tsize)*128; if(n < 0) n = 0; d = n - u.u_dsize; n =+ USIZE+u.u_ssize; if(estabur(u.u_tsize, u.u_dsize+d, u.u_ssize)) return; u.u_dsize =+ d; if(d > 0) goto bigger; a = u.u_procp->p_addr + n - u.u_ssize; i = n; n = u.u_ssize; while(n--) { copyseg(a-d, a); a++; } expand(i); return; bigger: expand(n); a = u.u_procp->p_addr + n; n = u.u_ssize; while(n--) { a--; copyseg(a-d, a); } while(d--) clearseg(--a); } 3 4 5 6 7 8 9 : ; < = # /* * Copyright 1973 Bell Telephone Laboratories Inc */ #include "../param.h" #include "../systm.h" #include "../user.h" #include "../reg.h" #include "../file.h" #include "../inode.h" read() { rdwr(FREAD); } write() { rdwr(FWRITE); } rdwr(mode) { register *fp, m; m = mode; fp = getf(u.u_ar0[R0]); if(fp == NULL) return; if((fp->f_flag&m) == 0) { u.u_error = EBADF; return; } u.u_base = u.u_arg[0]; u.u_count = u.u_arg[1]; u.u_segflg = 0; if(fp->f_flag&FPIPE) { if(m==FREAD) readp(fp); else writep(fp); } else { u.u_offset[1] = fp->f_offset[1]; u.u_offset[0] = fp->f_offset[0]; if(m==FREAD) readi(fp->f_inode); else writei(fp->f_inode); dpadd(fp->f_offset, u.u_arg[1]-u.u_count); } u.u_ar0[R0] = u.u_arg[1]-u.u_count; } open() { register *ip; extern uchar; ip = namei(&uchar, 0); if(ip == NULL) return; u.u_arg[1]++; open1(ip, u.u_arg[1], 0); } creat() { register *ip; extern uchar; ip = namei(&uchar, 1); if(ip == NULL) { if(u.u_error) return; ip = maknode(u.u_arg[1]&07777); open1(ip, FWRITE, 2); } else open1(ip, FWRITE, 1); } open1(ip, mode, trf) int *ip; { register struct file *fp; register *rip, m; rip = ip; m = mode; if(trf != 2) { if(m&FREAD) access(rip, IREAD); if(m&FWRITE) { access(rip, IWRITE); if((rip->i_mode&IFMT) == IFDIR) u.u_error = EISDIR; } } if(u.u_error) goto out; if(trf) itrunc(rip); prele(rip); openi(rip, m&FWRITE); if(u.u_error) goto out; if ((fp = falloc()) == NULL) goto out; fp->f_flag = m&(FREAD|FWRITE); fp->f_inode = rip; return; out: iput(rip); } close() { register *fp; fp = getf(u.u_ar0[R0]); if(fp == NULL) return; u.u_ofile[u.u_ar0[R0]] = NULL; closef(fp); } seek() { int n[2]; register *fp, t; fp = getf(u.u_ar0[R0]); if(fp == NULL) return; if(fp->f_flag&FPIPE) { u.u_error = ESPIPE; return; } t = u.u_arg[1]; if(t > 2) { n[1] = u.u_arg[0]<<9; n[0] = (u.u_arg[0]>>7) & 0777; } else { n[1] = u.u_arg[0]; n[0] = 0; if(t!=0 && t!=3 && n[1]<0) n[0] = -1; } switch(t) { case 1: case 4: n[0] =+ fp->f_offset[0]; dpadd(n, fp->f_offset[1]); break; default: n[0] =+ fp->f_inode->i_size0; dpadd(n, fp->f_inode->i_size1); case 0: case 3: ; } fp->f_offset[1] = n[1]; fp->f_offset[0] = n[0]; } link() { register *ip, *xp; extern uchar; ip = namei(&uchar, 0); if(ip == NULL) return; if((ip->i_mode&IFMT)==IFDIR && !suser()) goto out; /* * NOTE: * the ip should not be unlocked here, BUT * if its not, the following namei may hang */ ip->i_flag =& ~ILOCK; u.u_dirp = u.u_arg[1]; xp = namei(&uchar, 1); if(xp != NULL) { u.u_error = EEXIST; iput(xp); } if(u.u_error) goto out; if(u.u_pdir->i_dev != ip->i_dev) { iput(u.u_pdir); u.u_error = EXDEV; goto out; } wdir(ip); ip->i_nlink++; ip->i_flag =| IUPD; out: iput(ip); } mknod() { register *ip; extern uchar; if(suser()) { ip = namei(&uchar, 1); if(ip != NULL) { u.u_error = EEXIST; goto out; } } if(u.u_error) return; ip = maknode(u.u_arg[1]); ip->i_addr[0] = u.u_arg[2]; out: iput(ip); } sslep() { char *d[2]; spl7(); d[0] = time[0]; d[1] = time[1]; dpadd(d, u.u_ar0[R0]); while(dpcmp(d[0], d[1], time[0], time[1]) > 0) { if(dpcmp(tout[0], tout[1], time[0], time[1]) <= 0 || dpcmp(tout[0], tout[1], d[0], d[1]) > 0) { tout[0] = d[0]; tout[1] = d[1]; } sleep(tout, PSLEP); } spl0(); } # /* * Copyright 1973 Bell Telephone Laboratories Inc */ #include "../param.h" #include "../systm.h" #include "../reg.h" #include "../buf.h" #include "../filsys.h" #include "../user.h" #include "../inode.h" #include "../file.h" #include "../conf.h" #define CSW 0177570 struct { int csw; }; getswit() { u.u_ar0[R0] = CSW->csw; } gtime() { u.u_ar0[R0] = time[0]; u.u_ar0[R1] = time[1]; } stime() { if(suser()) { time[0] = u.u_ar0[R0]; time[1] = u.u_ar0[R1]; wakeup(tout); } } setuid() { register uid; uid = u.u_ar0[R0].lobyte; if(u.u_ruid == uid.lobyte || suser()) { u.u_uid = uid; u.u_ruid = uid; } } getuid() { u.u_ar0[R0].lobyte = u.u_ruid; u.u_ar0[R0].hibyte = u.u_uid; } setgid() { register gid; gid = u.u_ar0[R0].lobyte; if(u.u_rgid == gid.lobyte || suser()) { u.u_gid = gid; u.u_rgid = gid; } } getgid() { u.u_ar0[R0].lobyte = u.u_rgid; u.u_ar0[R0].hibyte = u.u_gid; } sync() { update(); } nice() { register n; n = u.u_ar0[R0]; if(n > 20) n = 20; if(n < 0 && !suser()) n = 0; u.u_nice = n; } unlink() { register *ip, *pp; extern uchar; pp = namei(&uchar, 2); if(pp == NULL) return; prele(pp); ip = iget(pp->i_dev, u.u_dent.u_ino); if(ip == NULL) panic("unlink -- iget"); if((ip->i_mode&IFMT)==IFDIR && !suser()) goto out; u.u_offset[1] =- DIRSIZ+2; u.u_base = &u.u_dent; u.u_count = DIRSIZ+2; u.u_dent.u_ino = 0; writei(pp); ip->i_nlink--; ip->i_flag =| IUPD; out: iput(pp); iput(ip); } chdir() { register *ip; extern uchar; ip = namei(&uchar, 0); if(ip == NULL) return; if((ip->i_mode&IFMT) != IFDIR) { u.u_error = ENOTDIR; bad: iput(ip); return; } if(access(ip, IEXEC)) goto bad; iput(u.u_cdir); u.u_cdir = ip; prele(ip); } chmod() { register *ip; extern uchar; ip = namei(&uchar, 0); if(ip == NULL) return; if(owner(ip)) { ip->i_mode =& ~07777; ip->i_mode =| u.u_arg[1]&07777; ip->i_flag =| IUPD; } iput(ip); } chown() { register *ip; extern uchar; ip = namei(&uchar, 0); if(ip == NULL) return; if(owner(ip)) { ip->i_uid = u.u_arg[1]; if(u.u_uid != 0) ip->i_mode =& ~ISUID; ip->i_flag =| IUPD; } iput(ip); } fstat() { register *fp; fp = getf(u.u_ar0[R0]); if(fp == NULL) return; stat1(fp->f_inode, u.u_arg[0]); } stat() { register ip; extern uchar; ip = namei(&uchar, 0); if(ip == NULL) return; stat1(ip, u.u_arg[1]); iput(ip); } stat1(ip, ub) int *ip; { register i, *bp, *cp; iupdat(ip); bp = bread(ip->i_dev, ldiv(ip->i_number+31, 16)); cp = bp->b_addr + 32*lrem(ip->i_number+31, 16) + 24; ip = &(ip->i_dev); for(i=0; i<14; i++) { suword(ub, *ip++); ub =+ 2; } for(i=0; i<4; i++) { suword(ub, *cp++); ub =+ 2; } brelse(bp); } dup() { register i, *fp; fp = getf(u.u_ar0[R0]); if(fp == NULL) return; if ((i = ufalloc()) < 0) return; u.u_ofile[i] = fp; fp->f_count++; } smount() { int d; register *ip; register struct mount *mp, *smp; extern uchar; d = getmdev(); if(u.u_error) return; u.u_dirp = u.u_arg[1]; ip = namei(&uchar, 0); if(ip == NULL) return; if(ip->i_count!=1 || (ip->i_mode&(IFBLK&IFCHR))!=0) goto out; smp = NULL; for(mp = &mount[0]; mp < &mount[NMOUNT]; mp++) { if(mp->m_bufp != NULL) { if(d == mp->m_dev) goto out; } else if(smp == NULL) smp = mp; } if(smp == NULL) goto out; mp = bread(d, 1); if(u.u_error) { brelse(mp); goto out1; } smp->m_inodp = ip; smp->m_dev = d; smp->m_bufp = getblk(NODEV); bcopy(mp->b_addr, smp->m_bufp->b_addr, 256); smp = smp->m_bufp->b_addr; smp->s_ilock = 0; smp->s_flock = 0; smp->s_ronly = u.u_arg[2] & 1; brelse(mp); ip->i_flag =| IMOUNT; prele(ip); return; out: u.u_error = EBUSY; out1: iput(ip); } sumount() { register d; register struct inode *ip; register struct mount *mp; update(); d = getmdev(); if(u.u_error) return; for(mp = &mount[0]; mp < &mount[NMOUNT]; mp++) if(mp->m_bufp!=NULL && d==mp->m_dev) goto found; u.u_error = EINVAL; return; found: for(ip = &inode[0]; ip < &inode[NINODE]; ip++) if(ip->i_number!=0 && d==ip->i_dev) { u.u_error = EBUSY; return; } ip = mp->m_inodp; ip->i_flag =& ~IMOUNT; iput(ip); ip = mp->m_bufp; mp->m_bufp = NULL; brelse(ip); } getmdev() { register d, *ip; extern uchar; ip = namei(&uchar, 0); if(ip == NULL) return; if((ip->i_mode&IFMT) != IFBLK) u.u_error = ENOTBLK; d = ip->i_addr[0]; if(ip->i_addr[0].d_major >= nblkdev) u.u_error = ENXIO; iput(ip); return(d); } F G H I J K L M N # /* * Copyright 1973 Bell Telephone Laboratories Inc */ #include "../param.h" #include "../user.h" #include "../reg.h" #include "../proc.h" ssig() { register a; a = u.u_arg[0]; if(a<=0 || a>=NSIG) { u.u_error = EINVAL; return; } u.u_ar0[R0] = u.u_signal[a]; u.u_signal[a] = u.u_arg[1]; u.u_signal[9] = 0; /* kill not allowed */ if(u.u_procp->p_sig == a) u.u_procp->p_sig = 0; } kill() { register struct proc *p; for(p = &proc[0]; p < &proc[NPROC]; p++) if(p->p_pid == u.u_ar0[R0]) goto found; u.u_error = ESRCH; return; found: if(p->p_ttyp != u.u_procp->p_ttyp) if(!suser()) return; psignal(p, u.u_arg[0]); } times() { register *p; for(p = &u.u_utime; p < &u.u_utime+6;) { suword(u.u_arg[0], *p++); u.u_arg[0] =+ 2; } } profil() { u.u_prof[0] = u.u_arg[0] & ~1; /* base of sample buf */ u.u_prof[1] = u.u_arg[1]; /* size of same */ u.u_prof[2] = u.u_arg[2]; /* pc offset */ u.u_prof[3] = (u.u_arg[3]>>1) & 077777; /* pc scale */ } # /* * Copyright 1973 Bell Telephone Laboratories Inc */ int sysent[] { 0, &nullsys, /* 0 = indir */ 0, &rexit, /* 1 = exit */ 0, &fork, /* 2 = fork */ 2, &read, /* 3 = read */ 2, &write, /* 4 = write */ 2, &open, /* 5 = open */ 0, &close, /* 6 = close */ 0, &wait, /* 7 = wait */ 2, &creat, /* 8 = creat */ 2, &link, /* 9 = link */ 1, &unlink, /* 10 = unlink */ 2, &exec, /* 11 = exec */ 1, &chdir, /* 12 = chdir */ 0, >ime, /* 13 = time */ 3, &mknod, /* 14 = mknod */ 2, &chmod, /* 15 = chmod */ 2, &chown, /* 16 = chown */ 1, &sbreak, /* 17 = break */ 2, &stat, /* 18 = stat */ 2, &seek, /* 19 = seek */ 0, &nosys, /* 20 = x */ 3, &smount, /* 21 = mount */ 1, &sumount, /* 22 = umount */ 0, &setuid, /* 23 = setuid */ 0, &getuid, /* 24 = getuid */ 0, &stime, /* 25 = stime */ 0, &nosys, /* 26 = x */ 0, &nosys, /* 27 = x */ 1, &fstat, /* 28 = fstat */ 0, &nosys, /* 29 = x */ 1, &nullsys, /* 30 = smdate */ 1, &stty, /* 31 = stty */ 1, >ty, /* 32 = gtty */ 0, &nosys, /* 33 = x */ 0, &nice, /* 34 = nice */ 0, &sslep, /* 35 = sleep */ 0, &sync, /* 36 = sync */ 1, &kill, /* 37 = kill */ 0, &getswit, /* 38 = switch */ 0, &nosys, /* 39 = x */ 0, &nosys, /* 40 = x */ 0, &dup, /* 41 = dup */ 0, &pipe, /* 42 = pipe */ 1, ×, /* 43 = times */ 4, &profil, /* 44 = prof */ 0, &nosys, /* 45 = tiu */ 0, &setgid, /* 46 = setgid */ 0, &getgid, /* 47 = getgid */ 2, &ssig, /* 48 = sig */ 0, &nosys, /* 49 = x */ 0, &nosys, /* 50 = x */ 0, &nosys, /* 51 = x */ 0, &nosys, /* 52 = x */ 0, &nosys, /* 53 = x */ 0, &nosys, /* 54 = x */ 0, &nosys, /* 55 = x */ 0, &nosys, /* 56 = x */ 0, &nosys, /* 57 = x */ 0, &nosys, /* 58 = x */ 0, &nosys, /* 59 = x */ 0, &nosys, /* 60 = x */ 0, &nosys, /* 61 = x */ 0, &nosys, /* 62 = x */ 0, &nosys /* 63 = x */ }; # /* * Copyright 1973 Bell Telephone Laboratories Inc */ #include "../param.h" #include "../systm.h" #include "../user.h" #include "../proc.h" #include "../text.h" #include "../inode.h" xswap(p, ff, os) int *p; { register *rp, a; rp = p; if(os == 0) os = rp->p_size; a = malloc(swapmap, (rp->p_size+7)/8); if(a == NULL) panic("out of swap space"); xccdec(rp->p_textp); rp->p_flag =| SLOCK; if(swap(a, rp->p_addr, os, 0)) panic("swap error"); if(ff) mfree(coremap, os, rp->p_addr); rp->p_addr = a; rp->p_flag =& ~(SLOAD|SLOCK); rp->p_time = 0; if(runout) { runout = 0; wakeup(&runout); } } xfree() { register *xp; if((xp=u.u_procp->p_textp) != NULL) { u.u_procp->p_textp = NULL; xccdec(xp); if(--xp->x_count == 0) { mfree(swapmap, (xp->x_size+7)/8, xp->x_daddr); xp = xp->x_iptr; xp->i_flag =& ~ITEXT; iput(xp); } } } xalloc(ip) int *ip; { register struct text *xp; register *rp, ts; if(u.u_arg[1] == 0) return; rp = NULL; for(xp = &text[0]; xp < &text[NTEXT]; xp++) if(xp->x_count == 0) { if(rp == NULL) rp = xp; } else if(xp->x_iptr == ip) { xp->x_count++; u.u_procp->p_textp = xp; goto out; } if((xp=rp) == NULL) panic("out of text"); xp->x_count = 1; xp->x_ccount = 0; xp->x_iptr = ip; ts = ((u.u_arg[1]+63)>>6) & 01777; xp->x_size = ts; if((xp->x_daddr = malloc(swapmap, (ts+7)/8)) == NULL) panic("out of swap space"); expand(USIZE); expand(USIZE+ts); estabur(0, ts, 0); u.u_count = u.u_arg[1]; u.u_offset[1] = 020; u.u_base = 0; readi(ip); rp = u.u_procp; rp->p_flag =| SLOCK; swap(xp->x_daddr, rp->p_addr+USIZE, ts, 0); rp->p_flag =& ~SLOCK; rp->p_textp = xp; rp = ip; rp->i_flag =| ITEXT; rp->i_count++; out: if(xp->x_ccount == 0) { savu(u.u_ssav); xswap(u.u_procp, 1, 0); u.u_procp->p_flag =| SSWAP; swtch(); /* no return */ } xp->x_ccount++; } xccdec(xp) int *xp; { register *rp; if((rp=xp)!=NULL && rp->x_ccount!=0) if(--rp->x_ccount == 0) mfree(coremap, rp->x_size, rp->x_caddr); } # /* * Copyright 1973 Bell Telephone Laboratories Inc */ #include "../param.h" #include "../systm.h" #include "../user.h" #include "../proc.h" #include "../reg.h" #include "../text.h" #include "../seg.h" #define CSW 0177570 #define EBIT 1 #define UMODE 0170000 #define SETD 0170011 struct { int count; int (*call)(); } sysent[64]; char regloc[8] { R0, R1, R2, R3, R4, R5, R6, R7 }; trap(dev, sp, r1, nps, r0, pc, ps) char *sp; { register i, a; savfp(); u.u_ar0 = &r0; if(dev == 8) { psignal(u.u_procp, SIGFPT); if((ps&UMODE) == UMODE) goto err; return; } if(dev==1 && fuword(pc-2)==SETD && u.u_signal[SIGINS]==0) return; if((ps&UMODE) != UMODE) goto bad; if(dev==9 && sp<-u.u_ssize*64) { if(backup(&r0) == 0) if(!estabur(u.u_tsize, u.u_dsize, u.u_ssize+SINCR)) { u.u_ssize =+ SINCR; expand(u.u_procp->p_size+SINCR); a = u.u_procp->p_addr + u.u_procp->p_size; for(i=0; i= 100) psignal(u.u_procp, SIGSYS); err: if(issig()) psig(); if(u.u_error != 0) { ps =| EBIT; r0 = u.u_error; } u.u_procp->p_pri = PUSER + u.u_nice; if(u.u_dsleep++ > 15) { u.u_dsleep = 0; u.u_procp->p_pri++; swtch(); } return; bad: printf("ka6 = %o\n", KISA->r[6]); printf("aps = %o\n", &ps); for(a = CSW->r[0]; a == CSW->r[0]; ) idle(); panic("trap"); } trap1(f) int (*f)(); { savu(u.u_qsav); (*f)(); } nosys() { u.u_error = 100; } nullsys() { } È..í.îalloc.cïclock.cðfio.cñiget.còmain.cónami.côprf.cõrdwri.cösig.c÷slp.cøsubr.cùsys1.cúsys2.cûsys3.cüsys4.cýsysent.cþtext.cÿtrap.cld -x low.o mch.o conf.o lib1 lib2 mÿmain.oX’¶è â0´w üÿ7 öÿÀìôÀe ÿ߀ÿ ß À Πÿß · ÎÿΠÿææß –%Ÿ  ÿéÁ²ÿWp WtûÿNæþß Ö Îæ–ÿß Ö 7ŒÿΈÿæ„ÿæß –%ßîô®ÿߎÿÃâË Îß Îß À%ÿÿM÷Nÿ÷ìôTÿ÷Pÿ÷•<ÿ÷Õ7ÿ÷lÿ÷ ‚ÿM&ÿ÷ "ÿ÷ ÿ÷ ÿÎæÿß Ö 7ÿÿÅÿÎæúþß Ö 76ÿÿÅ0ÿ÷ æþÀ Îß ÷>ÿ÷Hÿ÷ Î& æèß –%Ãe¤÷ ®þwªþw ¦þÀÜþ Äjàÿ× °ÿ†€`ùÀ¾þíÄzÀÿ× �ÿ† Ó5ù³àöwXþw TþNß Ì&f÷ Ö &f÷ Ö €e€eÀ% @@m@mÀeÀ-þ÷• CþÀÿÿg ÃjÂzW-€ ÒÄe€õå€óõ  @tÀeÿÀUDmÄW-€ ÒÄe€õå€óõ  @tÀeÿÀUDm× z†  úDmW-€ Äå€õå€â#óõ  À€@ítÀU"Àe€ÿ#÷ �þ w4ýw 0ý@Àetùÿwýfÿ`õ ‰ ÿ /etc/initmem = %l no clockéI(é(8éXéhé)988˜¨ùiiiih ùÙéù II  8 Hy‰é  ‰éé ‰é‰_u ò_canonb _coremap È_swapmap È_rootdir _lbolt _time _tout _callout x_mount _mpid _runin _runout _runrun _maxmem _lks _rootdev _swapdev _swplo _nswap _updlock _rablock _proc è_text È_inode € _lksp#â_icode#è_main"L5þL10rsave L2_fubyte L3J_clearse _mfree L4D_printf _min L6–L9¢_panic _fuword L11H_sureg"V_cinit _binit _iinit _iget _newproc L12N_expand _copyout L1RL8H_sched rretrn L14lL15zL16ˆL17�L18¤L13¤_estabur"¨_nseg"ÌL10000îL21úL20ÈL22L23L24<L25@L26ZL27xL28xL29„L30ˆL31¢L32Âalloc.oXX¶À J6°w üÿÎæòÿß Ö Îÿÿß ÷‹ÎJß Î&æß –%Îß 7¸ÿ÷²ÿ°ÿ4Š˜4Š™4Š›7œšÿ7ž–ÿw�ÿw ŒÿNß `ò‹˜ Φÿ¦Îe˜ß Ö ôò €À €`5øÿõ øÿ² NæPß Ö ÷•oÿ 3ò !²Š˜Nøÿfß Ö òÎd¦Îeæß –%ß 2Š˜ŽÎe˜ß Nøÿfß Ö ß ò•šwÊþw ÆþNß `ô•šô‹˜ Φÿ&Îe˜ß Ö ô-d#´Š˜Nfß Ö ÂÎd¦&Îeß –%4 Îß 4Š˜Îe˜ß ´ À apô•šw2þw .þ Nß `ô‹™Î¦ÿ&Îe™ß Ö ôô•š€_"Îdß Žß ô Îô ÎÎÀ a5ÐòÿNòÿfß Ö ò â€Àe€ÀeÀ Ó† ù´Š™5 òÿ5 øÿ5#øÿNNøÿÎefß Ö Â5 öÿW-öÿ2µ òÿ@öÿÀ €`È &5 ôÿW-ôÿd@ôÿt5,@ôÿt5,òÿµ ôÿéδ ÎÀ apòÿÐ-ÎdõeöÿÊÎß -Îdµ øÿ¯ô ÎÎlß 4Š™Îe™ß _wÚüw ÖüNß `ô‹™-Îd δ ÎÀ apÐô•šw üw œüÄ!†ô  5#ÄeîÎzß wfüw bü÷ \üP· VüÃ× 0†ó *Àô‹š#ô‹™ ô‹˜ô‹›Îæß Ö 4Ššôüœô üžÎ¦&ß –%Žß ÃeÍÄ!€ †ÌµÌÕß ß Äe ï7 ÂûÎÿÿß w¶ûiinitNo space on dev %d busy i out of inodesno fs¹ùÈØ‰ø‰ù‰YY9¹˜¸‰ÈèØø9¹˜ØHè9¹˜¸èÈxxøè9¹9¹ˆˆø9¹99ˆˆØYYHxx989_canonb _coremap È_swapmap È_rootdir _lbolt _time _tout _callout x_mount _mpid _runin _runout _runrun _maxmem _lks _rootdev _swapdev _swplo _nswap _updlock _rablock _buf J_bfreeli _inode € _u ò_iinit"L3Jrsave _bread _getblk L2._panic _bcopy _brelse L1lrretrn _alloc"pL8P_getfs"`L5€L6˜_sleep L7Ì_printf L42L9_wakeup _clrbuf _free"6L11LL12dL13²_bwrite L10Ê_ialloc"ÎL22dL34lL15ÞL16L21öL14"L19_iput L17L18T_iget L20FL23`L24L26‚L27îL28æL29žL30ÌL10000ÆL32æL31ÆL25üL33_ifree"&L35\L41zL37jL38ŽL40ˆL36–L39ˆ_update"šL42FL43®L44L46L45L47L48:L504_iupdat _prele L494_bflush iget.oX—¶ H\w üÿ Ä!€ :†5--5-)̵ ÌÕΦÿ&ß Ö æ̵—  †„,µõÕÂeñÎHß ´ŠÌÕS ô‹Äe ÄÎPß 7!jÿƒ7dÿttÌ•´ŠôÿÿÎfÎeß Ö fß Ö ÎfÎeß Ö t€l5øÿÀeÀeÀ †@øÿõeøÿôŽß wàþw ÜþD­ÌÕô‹ ß 4 &ß Ö ß tß Š4 ôŠß wŒþw ˆþBʵJŽß ð‹›C€Àe5öÿÎföÿß Ö ¦ß Ö 5øÿÎföÿß Ö tAøÿ@l€Àe€ÀeÀ †ÔùʵÔþÔþÄeʵÔôýÔòýNøÿß wäýw àýDô5 FÀe5Àe@-2†ý +ô5N&ß Ö ÂÀÀe€ †Ê Ž&ß Ö ÂeïÎß N&ß Ö = õeÈôE4Š 4 ÌÕwBýw >ýÀ ýß ÌÕ@ÀU€4ô•ô�Lý ô�Gý ß wýw üü@7HýÄZÃH× V†Ô”û÷ý÷•ý÷X ýÎ0ýß Î(ýß w¸üno imtno inodeshhxˆˆØØÙÙ8HXˆ™è™88HXYYYY¨™H8ˆ8™YxYY™YXXXYYXYY¸Y™_canonb _coremap È_swapmap È_rootdir _lbolt _time _tout _callout x_mount _mpid _runin _runout _runrun _maxmem _lks _rootdev _swapdev _swplo _nswap _updlock _rablock _u ò_inode € _bdevsw _nblkdev _cdevsw _nchrdev _buf J_bfreeli _maxip _iget"L13HL16Prsave L2L3 L4†L6tL7:_sleep L8jL9DL10bL12\L11\_panic L20000L14€L5€L15’L17œ_ldiv _bread _lrem L18üL19_brelse rretrn _iput" L21fL22T_itrunc"_ifree _iupdat"t_prele L20pL24_getfs L23L25àL26îL27þL28L29_bwrite L30ºL318L32¨L34 L35ŽL36fL37ˆL39‚_free L38‚L33 _maknode"¾_ialloc _wdir"L42L43"_writei L41Dprf.o5¯u¶äV$àw üÿ@Àe@µ ’À%% 5Žß Òñ@µ ’ÁV7  þy Ë Î-ß ÒÀ — oÎÎ æß ’Ö ÃeËÎß ÒùÄ•öŽß Òúwnÿw jÿNfß Ö N&ß ’Ö Nfß Ö Îe0ß Òw.ÿw *ÿDß xÿ!ß5€tÿûÄ Ãtÿ tÿvÿ! Î ß ÒÎß ÒÎß Ò ß ÒßtÿwØþw ÔþwÌþ÷ìôÆþ÷ ÂþNænß Ö ÷ °þýwªþcdlosxHZZ€rpanic: %s 9‰9˜¸‰9‰9 )Y‰_panicst _kisa6 _printf"rsave L2L3L4,L1Ž_putchar"ÒL10003VL10004`L10005@L11xL7HL9ZL10ZL12€L15rL8ZL10000fL10001j_printn"’L5rL13‚rretrn _ldiv L17¶_lrem L16ÎL18$L19âL20ìL21_panic"(_update L23nL24L_idle L25RL22Rrdwri.oYÍ_¶ì X,w üÿ B÷ 2_4ÊÕ€ÀEÿŸÀ% ¦�œWp AÉ Ö _4Î÷ÿæBß Ö 5ôÿ5öÿÀìÿÀEþ5òÿÎÜÿæNíòÿß ’Ö €ÀEÿŸÀ%`#ξÿæ¸ÿ¦ €œ &ß ÆeÄ Hæß ’Ö Nöÿ¦ß Ö 5ôÿ9„„@ôÿ€ 7*ÿ€€ @-öÿ Îÿfôÿ&ß –%Nôÿ&ß Ö 5øÿröÿÎæfòÿføÿß ®ÆeNøÿß ÷‹ ÿ÷ ÿ…wÈþw ÄþBÊÕ€ÀEÿŸÀ% ¦�œWp AÉ Ö _r÷ Ðþ_rÎ÷ÿæBß Ö ÀºþÀEþ5ôÿΪþæNíôÿß ’Ö 5öÿ€ÀEÿŸÀ%` Î¦ß Ö W„„W-öÿÎ&ß Î&ß Ö 5øÿ föÿfôÿføÿß ®Æe÷‹/þNøÿß ÷5ÿ*þNøÿß Nøÿß Îþæ þ¦ €œ &ß ÆeÀ ò5 ò�èý òäý ÊÕ÷‹Íý÷ Ðý‚wŠýw †ýu-ƒ@@wnýw jýu-†@@wRýw NýC@@m÷‹lý*ÀQÀ]jýÀ5#õ Î&æVýß ÎæJý&ß –%Ä ÷•j/ý%÷`0ýÎæBß Ö ÷à"ýõ Àà À ÷ Îü”�öÀà À „ ’ß À ów¨üéh(XhÉɘ¸Øéh(h˜¸ØèXéééÈèYˆ_inode € _u ò_buf J_bfreeli _bdevsw _nblkdev _cdevsw _nchrdev _canonb _coremap È_swapmap È_rootdir _lbolt _time _tout _callout x_mount _mpid _runin _runout _runrun _maxmem _lks _rootdev _swapdev _swplo _nswap _updlock _rablock _readi"rsave L14L2>L5>_lshift _min"’L6È_dpcmp _bmap L7ÖL8ô_breada L20000_bread _iomove"®_brelse L3(L100004L44rretrn _writei"8L11lL10rL14vL15ÊL16ÎL17à_getblk L20002èL19L20.L21&_bawrite L22._bdwrite L23bL12fL10001rL13r_max"vL25ŠL24ŽL27¦L26ªL29 L30î_copyin L20004ú_copyout L32 L28T_dpadd L33:L34&L36T_cpass L37:L38T_passc slp.ooXò¶´øˆw üÿ7ŠçÃþÿÄ*õ "÷ äÿÀ tÌ•t�÷ Ìÿ÷‹Èÿ7ŠÂÿÎß |÷ .÷ ²ÿÀ Î¸ß tÌ•t�÷ �ÿ÷ ßþÿw„ÿw €ÿB Ä!è†-÷‹dÿôµ7ŠVÿƒ 4 Ì•·ŠHÿÄeçà õÜw2ÿw .ÿ ·Š&ÿΜÿæß Ö ÷ ÿÂÿÿÄ!膣 ôµ­5øÿ�Äeì— ÿÿ·ŠÚþΜÿæÙ÷ ÌþDøÿô‹ mÎæß Ö H÷  þÄ!è †�ÀEøÿÀ%£)Äeð— ¦ÂÿÿÄ!è†�ÀEøÿÀ% ££­5øÿ�Äeæ— …Døÿ÷ ,þôÅ æ&ß –%_è@øÿô‹ Î&æ&ß ÆeÀ ,ôm´Š DøÿÎ&æ& ß ÆeÀ  Àetýÿ&æß –%ô ôÕ4Š_èÎøß wˆýw „ý÷ Œ÷„Îß Îvýß Âp7 là !2Âe— è‡Â—¢€œÀEþÿÀ%ƒ¬·4ƒœ„ ã÷ (·"÷ ýÔÂŽ ß ÷ þüòµòÅÎ¼ß Àwàüw Üü Ä!è†Ì‹ÄeøÎß 5ôÿÃòüõòÿÌ•ô•ôô· ˜üÀ”ü4ô 4ŠÃŠ× ¨†Äû´Šø@òÿ´Š´Š À¢ü°ŠÎß Dôÿ7„üCòÿÂõ øÿ´Žæß Ö 5öÿÀ Ë•tøÿ Î¼ß  & &ß –%ôÕË•÷2ü töÿ € À õNöÿµ öÿføÿµ øÿß Ö ðwÈûw ÄûÄúû5öÿt u-öÿ ÎNmföÿNíæß –%@Îß Næß Ö  Î¼ß Nöÿæ&ß –%ôÕ÷ Æý´ 5 øÿu-øÿöÿ Ž‚ æNmøÿß Ö µ øÿñÎföÿæß –% ß ÷ ûwûswap errorno procsÙ ùÙÙØùh‰Ùééùè‰ÙÙØiéèHèi¨ØØXø‰ÙHXéXùh‰Ù ÉÉ H HèH¨ è‰Ù HøHHèH¨èHøXù‰_u ò_proc è_text È_canonb _coremap È_swapmap È_rootdir _lbolt _time _tout _callout x_mount _mpid _runin _runout _runrun _maxmem _lks _rootdev _swapdev _swplo _nswap _updlock _rablock _file _inode € _buf J_bfreeli _sleep"rsave L2\_issig L3R_spl0 L4F_wakeup"|_swtch"xL6t_aretu L1xrretrn L8‚L9ŒL10¾L12¸L13¬L11¸L14ÊL7Ê_sched"ÎL37øL16èL17ÖL20001â_spl6 L18ôL19L21L20L220L23LL24L_malloc L25ìL26dL27„L10000~L29ÐL28~L30’L31ÆL33ÀL10001²L32À_xswap L34 L35_swap L36l_mfree _panic L15tL39L40Š_savu _retu L41šL42¨L43âL45¼L46ÞL47ÞL44ÞL48ò_idle _sureg L49_newproc" L55L51*L52:L54BL534L56~L57ŽL59 L60L63L504L62_copyseg _expand"8L65tL64ôL66²L67ºL68ØL69Òsubr.oX¶�x�w üÿ@5öÿõ5ø÷• _œ@ð53õ5øÿFNöÿß  _œ5 ôÿW-ôÿ@ôÿÀ @m@ôÿÀ @m0 µ ôÿë@0ß @ðU@tøÿ5ôÿÀ @mCýÕNöÿß 0 l@À @m Nöÿß ß @À @m°ýÕW- @À @m7èþ@7 âþ=@ôÿÀ @m°Žföÿß Ö @ÀEÿ5ôÿÀ À`Nöÿß 5øÿ@ôÿÀ À`ˆNøÿß ß ß @ôÿÀ À`7fþ€w`þw \þ÷‹Œþ�Œþ÷ Šþ· Šþ· ‚þ· zþ÷ xþÀÿÿ@�ædþß Ö À ç÷•jMþÀÿÿ w þw þ÷ @þ÷‹.þÄŸ0þ÷ .þ· .þ· &þ· þÀEÿ Îþß í÷•jýýÀÿÿw¾ýw ºý÷•éýw®ýw ªýw¤ýw  ýDCB ýwˆýéY8ˆ88ˆÉÉø8ˆˆ(É9éYYYYYYYY¨Y9éYYYYYYYY(Y9éY9é9é9_bdevsw _nblkdev _cdevsw _nchrdev _inode € _u ò_buf J_bfreeli _canonb _coremap È_swapmap È_rootdir _lbolt _time _tout _callout x_mount _mpid _runin _runout _runrun _maxmem _lks _rootdev _swapdev _swplo _nswap _updlock _rablock _bmap"rsave L2$L1œL3–L4Ä_alloc L5JL6RL7|L8v_bdwrite L134L14 L10L11L20000šL15B_bread L16†L17Œ_brelse rretrn _passc" L19ÐL21²L22ÀL10000ðL18ò_subyte _cpass"öL24L20001:L25(L27L28L23>_fubyte _nodev"BL29N_nulldev"RL30X_bcopy"\L34nL32pL33tL31ttext.ooXŸ¶tX<<w üÿDõ 5Àetýÿæß Ö à ÎXß ß *ôÕ f& æß ÆeÀ Îjß õ   fæß –%ô ôÅ4Š÷‹lÿ7ŠfÿÎß wZÿw VÿÀŒÿ0 ß *ôŠÀetýÿ&æß –%ÌÅ ß wÿw ÿ÷ ®ÿ_& Ä!Ȇô‹à Äe ô5-ù´ŠÀ ÿ0`ÄÎvß ô•4Š tÀTÿÀe?túÿÀEü´€Àetýÿæß Ö Î‚ß Îß ŽÎeß  ¦& ß –%÷þþ’þ÷�þ7 †þNß ÃxþóÕ ¦æ Îe&ß ÆeóÅ3CËÕ ³Šô‹ Î¼ß  ææ.þß –%À$þðÕ÷ Þý´Š wÖýw ÒýDô‹ ôŠ &æß –%w¨ýout of swap spaceswap errorout of textout of swap spaceÉ(è(X¹¹¸x™ÉY(XØ™ÉYxxYY(èÈÈØYYYYèY(XYY™ÉX™_canonb _coremap È_swapmap È_rootdir _lbolt _time _tout _callout x_mount _mpid _runin _runout _runrun _maxmem _lks _rootdev _swapdev _swplo _nswap _updlock _rablock _u ò_proc è_text È_inode € _xswap"L4XL6jrsave L2_malloc L3<_panic _xccdec"*_swap L5jL7‚_mfree L8¢_wakeup L1¢rretrn _xfree"¦L10îL11î_iput L9î_xalloc"òL22vL24‚L12&L13L146L16 L18L19L15L20öL21BL23Š_expand _estabur _readi L25"_savu _swtch L27TL28TL26Ttrap.oo5¾x¶´ Ð"Àw üÿ÷ öÿ@Àe 7ÒW-Îæß Ö @ÀEÿÀ%ð__œW-NÎeþÿß À% ð÷ j_œ@ÀEÿÀ%ð_dW- AÀ4 t@-9†@Àe ß À 1ÎÎeæ æß –%À $÷eøÿÀzÿÎeß Àjÿ Ábÿ@l 7!Ðÿ_œà ÎæÎeìÿß Ö „ ñ7Š3ÿ@ ‚À x(Ž”š8 D88¦Ä æ ÿß Ö @Àed7�óþ÷‹ïþeõENÎeþÿß ÀEÀÿ5õ !Nß õeÎß ÀEÀÿ5ÃeÄÌÄÉÄÆÄÃÄ ÀC@tÀ 5` @t, Îß Á 1¨Ãe„ î÷¼þhþ@tß  ×­5þdÎ æ.þß Ö ÷ èýÀ ÷ àý÷‹þõUÀ�þ5 ÀþÁ�´þÁedp�À�©þ·Š¥þÀ%%7Š›þÀâý°Š÷ žýÎìôæØß Ö @Àeæâß Ö ÃxÿÃ'xÿ÷ nýúÎìß w`ýw \ýÎ¸ß ý wJýw Fý÷•duýw:ýw 6ýw0ýþ÷øùúýka6 = %o aps = %o trap©¹IIØIIHIIIhIIˆIII¨IIØIIxxHIIxIIØÉéIIIIIIII ((iˆ™©H¨™©I™©™_canonb _coremap È_swapmap È_rootdir _lbolt _time _tout _callout x_mount _mpid _runin _runout _runrun _maxmem _lks _rootdev _swapdev _swplo _nswap _updlock _u ò_proc è_text È_sysent _regloc#Ð_trap"rsave _savfp L2@_psignal L3L1œL10000d_fuword L4dL5_backup L6_estabur L7_expand L8â_copyseg L10üL208L13(L15ŽL16”L17šL18 L11DL19¦L14,L22¬L23ÂL24ÄL25èL26ä_trap1" L27_issig L28 _psig L294_swtch L31Ø_printf L32âL33ˆL34”_idle L35ì_panic rretrn _savu L36²_nosys"¶L37Â_nullsys"ÆL38Ìsig.ooX˶pú`w üÿÄ!è †5-N&ß .Ö ÄeðwÒÿw ÎÿDt�£ 4 Ì•÷‹°ÿ7ŠªÿÎß wžÿw šÿÀÐÿœÀ ð5À wxÿw tÿªÿ„œ2ŠÀ À+7Š�ÿÀ 0 ÀÀ2ÀÁ&1àúÿ@úÿ&ß Ö ÀÀÁ1àúÿ@úÿ&ß Ö Àòÿð"Àå ‚À x       ,   ÷ À Äe€À¶ÿtQ7nÿ÷ Âþw¾þw ºþ7Šëþ÷úÿÎæß Ö à ÷‹Íþ CÎ¶ß Î€æß Ö À ,Îß 7 ®þ7 ¬þ÷ þ÷œþ÷•ŒþÎß ÀˆþÀeðÿ && ß –%7 pþt7hþ7ŠZþÎß Îß ÷‹Kþ Àwþcore™hh ™¹¹¸8 ™YX ™YXYXYY¸YY¸YYY™ ™YY¸ÈY8YYXYYYHYXYYYHhY _canonb _coremap È_swapmap È_rootdir _lbolt _time _tout _callout x_mount _mpid _runin _runout _runrun _maxmem _lks _rootdev _swapdev _swplo _nswap _updlock _rablock _u ò_proc è_inode € _signal"rsave L2 L3*L5$_psignal".L4$L1*rretrn L7^L8^_wakeup L6^_issig"bL10‚L11‚L9„_psig"ˆL13ú_suword L12>L26,L16 L17 L18 L19 L20 L21 L22 L23 L24 _core"BL14,_exit L28ú_schar _namei L29zL30pL27ö_maknode _access L31â_itrunc _writei _estabur _iput L10001òsysent.o5;x¶ø(8HXhxˆ˜¨¸ÈØèø(8HXhxˆ˜¨XX¸XÈØXèø(XX8HXhXxˆ˜XXXXXXXXXXXXXXX_sysent#_nullsys _rexit _fork _read _write _open _close _wait _creat _link _unlink _exec _chdir _gtime _mknod _chmod _chown _sbreak _stat _seek _nosys _smount _sumount _setuid _getuid _stime _fstat _stty _gtty _nice _sslep _sync _kill _getswit _dup _pipe _times _profil _setgid _getgid _ssig sys1.ooX8¶ô.lw üÿ æß Ö à _òÎÿÿß 5òÿÎ@æß Ö À _ä@òÿ5 öÿ5 ôÿÎZß 5øÿ%µ öÿ ÿÿ_ä÷e<Nøÿµ øÿß !ÿÿ_䑵 ôÿW-ôÿþ÷•�ÿ_äÄ æÔõ5ôÿе ôÿ÷¨†ÿ÷‚ÿ7 ‚ÿ7 |ÿ÷•jÿÎß 7Š`ÿ÷‹]ÿ_ä×-Äÿ÷m¾ÿ¾ÿ7 ¸ÿ÷ ´ÿ˵ ׬÷•+ÿ_ä×-”ÿí÷•ÿ_äÀ„ÿÀe?túÿÀEü5ðÿÀrÿÀmpÿÀe?túÿÀEü5îÿÎfîÿfðÿß –%À _ä7 ‚ÿ÷ �þÎß @îÿÀe$Îß ß Ä À%À þ aß ó fîÿ& ß –%7 „þÀìþÀe7~þ÷âþtþÎß wðÿÚþwîÿÖþ÷ÒþÎÎþæÈþæÂþß –%@òÿ@ôÿ AöÿÁ @àÀeüÿ5øÿÀÎþpøÿúÿNöÿføÿß Ö @ôÿ @öÿõ öÿÀ õeøÿ@øÿ&ß Ö €’&„ ß Ö Ò‹÷æÎÿÿføÿÎeß Ö ó5÷‹²ý÷œ ªýó5÷œ �ýÄÃÀ× Ú†Ë5 Ãeö— †€”À Àmþ ÷Àþ0 Ã× 6† ûÎß Nòÿß w ýw ýÀæýt7 ý÷ wðüw ìüÄÀ!Ú†ÔúÄŠ!¨ † Îß ÄeôÎýß ÷ ²üÎæß Ö Îæœüß Ö Î¦æß –%Žß Ä´ü &æß –%ô ̕— è†2- Îß Žß — è †2- ò Âeó÷ üÂeÞ- Î.ß ô Ðwúûw öû — è[†€Áü1, Q„ —¢M¿²ü€ æÀûß Ö ææß –% Š2 2 2Š2 2ŠÂ·lâjüŽäæâß Ö ŽÜæâß Ö ·lÞDüŽàæÞß Ö ŽÚæÞß Ö À,ü°¨üÿÎß Âe¢Ä Î(æbûß Ö –÷• Oûwûw ûÄFûÃ× è†Ë‹Ãeø÷• 'û÷ êúÀ ?Æû7 ¾û7 ¼û7 °û7 ®û7 ¬û7 ¢û ÿ¦ûÀÁžû1`w°úw ¬úÎXûß t&À@ûÀe?túÿÀEü€åà  ÀÀí0ûÀ,ûÀe`Î"ûæûŽ`æûß –%À A·`û Àˆú À`ÀíøúõøÿÃîúÀà À &Žàß Ö „ ôNøÿß Îß ÀHú À`öúÀà À Ä &Žàß Ö ô€ À Ä ß ÷wÒùno init procÙèø(YXYˆYXYYYYY¸YYYYYYYYYYYYYøY ((YXøYYYYY¸YYYYYYøYhh¨hYYYXX¸¸YYXXˆ˜©ÙYY©ÙXXXXHYˆ (h XxˆY˜hhhèèhh9h©ÙhhYY è(˜YXøXøYXøXøY˜Y8Y©ÙYhhY©YYYYYYYYY©ÙYèYYYYYYøYYYYH((YYHX©_canonb _coremap È_swapmap È_rootdir _lbolt _time _tout _callout x_mount _mpid _runin _runout _runrun _maxmem _lks _rootdev _swapdev _swplo _nswap _updlock _rablock _u ò_proc è_text È_buf J_bfreeli _inode € _regloc _exec"rsave _uchar _namei L1ò_getblk _access L2äL3L_fuword L4¤L5n_fubyte L7žL8²_readi L9L11òL12"_estabur _xfree _xalloc _expand L13ŽL14¨_clearse _suword L154L16hL19T_subyte L17bL18fL20ŽL21ŽL22œL23¢L24¶L26°L25°L27ºL28ÌL29ØL30â_iput _brelse rretrn _rexit"ö_exit"L31 L49.L33L34&L35*L36BL38<_closef L37<_malloc _bcopy _bwrite _mfree L39¢L40¦L41êL43ä_wakeup L44ÆL45àL47ÚL46Ú_swtch L42äL48ú_panic L32_wait"L51L52L53ÎL55ÈL56È_bread _dpadd L50èL54ÈL57â_sleep _fork"ìL59úL60 L62L61L63@_newproc L64:L58L_sbreak"P_nseg L66~L65*L67êL68ÈL69à_copyseg L70L71L72L73*sys2.ooX[¶H ,àw üÿÎß $wîÿw êÿÎß $wÜÿw ØÿCÎ´ß Ä >̰÷• ñÿ8÷\ðÿ÷Xìÿ7ŠÞÿ̵ × ß ß 7Êÿ7Âÿ× ß ß ÎÎí ÿ&Îeß Ö ÀúÿÀíŒÿ?.wDÿw @ÿ æß Ö Ä · Òÿ æÌÿ&ß 2–%wÿw ÿÎæß Ö Ä ÷‹/ÿΜÿÎEðß ÎÎæ&ß 2–%wÎþw ÊþCBW-Â5Îæß Ö Â5΀æß Ö ÀÀEÿŸÀ%@÷•·þ÷‹³þõ Îß Îß ŽÎEýÿæß Ö ÷‹�þ ÷ Pþ€ÀEüÿ �ôÎß w4þw 0þÎÿß Ä ÀÿÀ 0 Šß w þw þÎèþß Ä T̵÷•#þMÃ�þ× À„þt 5øÿÀxþtùÿÀEþ5öÿõfþøÿ5 öÿà × õ øÿõÿÿöÿÀ ‚À xl¤v‚¤v5möÿ œ 5`öÿ @Àeöÿ&ß Ö tøÿtöÿwLýw Hý æß Ö Ä :ÀEÿŸÀ%@÷ "ýÀ ,ÌÅ÷ÀýjýÎæß Ö à ÷•1ýÎß ÷‹'ýÀRý4,ß ÷• ýß ´ŠÌÕß w¼üw ¸ü÷ ²üÀ Îæß Ö Ä ÷•Ëü ÷‹Åü Î2ýß ô*ýß wrüw nü÷ hüõdüöÿõ`üøÿÎ>ý@Àeöÿ&ß Ö ÎHüæBüføÿföÿß ÆeÀ )Î,üæ&üæ$üæüß ÆeÀ Nøÿföÿæüæüß ÆeÀ wöÿðûwøÿìûÎZæß È÷ ØûwÔû™É™É™YøYYYYYYHhYYˆ¨YY¸YYYÉ™ØèYYÉ™ØèYYHÉ™ˆˆYYØèøY (É™YøYXXÉ™YøYYYYY¸É™ØèIYYØèY(YY(Yˆ(É™IØèYYYHY(É™ùYYY¸YYYYiiiiiihXiÉ_canonb _coremap È_swapmap È_rootdir _lbolt _time _tout _callout x_mount _mpid _runin _runout _runrun _maxmem _lks _rootdev _swapdev _swplo _nswap _updlock _rablock _u ò_file _inode € _read"rsave _rdwr"$L1rretrn _write"L2 _getf L3¸L4HL5tL6l_readp L8¬_writep L9�_readi L10˜_writei _dpadd _open"¼_uchar _namei L11æ_open1"2_creat"êL13L12._maknode L20003"L16€L17Z_access L18€L19€L20ÂL21’_itrunc _prele _openi _falloc L15È_iput _close"ÌL22ð_closef _seek"ôL23°L24L25>L26^L27^L32‚L28¤L30vL31vL20008–_link"´L35@L10001â_suser L36:L37 L38,_wdir _mknod"DL40nL41nL42„L39Š_sslep"Ž_spl7 L20009´_dpcmp L45$L10002 L46_sleep _spl0 L43(sys3.ooXƒ¶DZ`w üÿÿxÿÚwðÿw ìÿÿæÿÊÀÆðÞÿüÿwÖÿw Òÿ÷ ÌÿÀ ÷ªÂÿÀ¤7üÿºÿÎß w¬ÿw ¨ÿÄŸˆÄ­Øÿ÷ ˜ÿÀ 7‘Èÿ7‘Æÿwˆÿw „ÿÿ�¸ÿbÀ^ð�¬ÿwnÿw jÿÄŸJÄ­›ÿ÷ ZÿÀ 7‘‹ÿ7‘‰ÿwJÿw Fÿÿ�{ÿ$À ð�oÿw0ÿw ,ÿ÷ &ÿw"ÿw ÿÄþÿ!ÄÄ ÷ ÿÀ  7‘ìÿwøþw ôþÎæß Ö à 4Îß Î,ÿæß Ö Ä ÎZß ÀEÿŸÀ%@÷ ªþÀ ÷åäþ÷XØþ÷Ôþ7 èþÎß ôŠÌÕÎß ß wrþw nþ æß Ö Ä ÀEÿŸÀ%@÷•}þß Î@&ß Ö À ôÎpþß 7hþß wþw þ æß Ö Ä ß À ôEÿÀ–þÀEð4PÌÕß wÖýw Òý æß Ö Ä ß À ô�Zþ ÷‹âýôEÌÕß w”ýw �ýÎpþß Ä Î$þ&ß ÀÖ wnýw jý æß Ö Ä Îüý&ß ÀÖ ß w@ýw <ýNß Î@&Îeß Ö @&ß Ö Î@&Îeß Ö tÀlÀe@Àe5 !@õefß Ö õe„ í ! Žfß Ö õe„ òÎß wŠüw †üÎfýß à ÷ rüÀ ðгŠw^üw Zü÷ b5øÿ÷‹ƒü_Ž÷ìü–ü æß Ö Ä ^­Tô5 P Ã×  †ó õ"øÿC ÂÃeð ;Îføÿß Ö ÷‹üÎß /2JøÿÎÿÿß 2΀&æß –%€2Š™2Š˜ÀDüÀEþÿ2�›Îß ÌÕß ÷•¯ûß wnûw jû÷ dû÷ n÷‹‘û1— †ò „"Âeõ÷•oû Ã× € †ó Ä,÷•QûÃe ðƒËÅÎß ƒ2 Îß wòúw îú æß Ö à ÀÀEÿŸÀ%`÷•ýúÄÀœÀ-ºú÷•éúÎß w¦úunlink -- igetùyùYyyYùYyYyYhxùyyYyyùyyyyùyyYyyùyyyyùiùyYyùèøy(HYyxyyyxˆˆùèøyˆØyˆyùèøyˆùèøyyˆùyxyùèøyˆùÈØèø((xùyx¹xùyyyèøˆˆèyxˆ˜yxyˆùiyˆˆyˆˆyˆxùèøy¹yˆ_canonb _coremap È_swapmap È_rootdir _lbolt _time _tout _callout x_mount _mpid _runin _runout _runrun _maxmem _lks _rootdev _swapdev _swplo _nswap _updlock _rablock _buf J_bfreeli _u ò_inode € _file _bdevsw _nblkdev _cdevsw _nchrdev _getswit"rsave L1 rretrn _gtime"L2&_stime"*_suser L4P_wakeup L3P_setuid"TL10000lL6tL5t_getuid"xL7Ž_setgid"’L10001ªL9²L8²_getgid"¶L10Ì_sync"Ð_update L11Ú_nice"ÞL13òL14L12_unlink"L17Z_uchar _namei L15Š_prele _iget L16D_panic L10002ZL18~_writei _iput _chdir"ŽL19äL20ÂL21º_access _chmod"èL22&_owner L23 _chown"*L24hL25bL26^_fstat"l_getf L27Ž_stat1"À_stat"’L28¼_iupdat _ldiv _bread _lrem L30(L31N_suword L32JL33PL34lL35h_brelse L29r_dup"vL36ž_ufalloc _smount"¢_getmdev"L37ŽL38‚L39èL40L42üL43L44L41L45*L46ˆ_getblk _bcopy _sumount"’L47 L48¬L49ÂL10003¼L51ÊL50¼L52ÎL53îL55èL54èL56VL57:L58Nsys4.oo5 x¶î,w üÿÄžÄ ! ÷•À ?ÀÀÀ ð|À7 žÀ¬Àúÿ0Šw¶ÿw ²ÿÄ!è†?-†Äeö÷•ÉÿÁÆÿ1,÷ ~ÿÀ Î&ß Ö wjÿw fÿÄÚ!æ †æüÿß Ö ÷eðÿówBÿw >ÿÀàÿÀE7÷Öÿ÷ÒÿÀÎÿ€ ÀE€7wÿ9   ‰9  ‰9 X ‰9 ‰_u ò_proc è_ssig"rsave L10000L2L1FL3Frretrn _kill"JL5TL6hL8pL7bL4’L9†_suser _psignal _times"–L11 L12º_suword L10º_profil"¾L13ênami.ooX°¶0lHw üÿÄ<ý À%/Äæÿ&ß Ö × /ý ù÷‹ýÿà _*ÀEÿŸÀ%@÷•Ýÿß _(Î@&ß Ö À óÂH× / à ÷‹±ÿ— V†Ò�ý ð— V†Šû× /ý ù÷‹ƒÿÒ7 Šÿ7 „ÿ÷•rÿ5 øÿÎ& ß Ö 7fÿ5 öÿ÷ ^ÿ*õ öÿNöÿß W-à ΀&ß Ö À ¦7Vÿõ øÿ@øÿÀeðÿ7 ÿ_(ÌÕ_(÷•ÿ‘÷5ÿÿõ öÿNöÿß Îæîþß Ö &ß Ö &ß Ö 5öÿÎæX@öÿ&ÀºþÀEþ`ß –%÷e¨þ÷  þ÷ ´þõ øÿ™õ”þøÿ•ÂH— V †€ÁZÁåH�` ¢ˆ‚ óõ öÿNöÿß W-à ΀&ß Ö À _Z5öÿß ÎDþföÿß Ö Ä _6 wÒýw ÎýÀþ· þ’ÀEÿwºýw ¶ýÎþ· þß !ÿÿ÷•jÑýw”ý©YÈHhè(h(舘¨(hHÈ©©H_inode € _u ò_canonb _coremap È_swapmap È_rootdir _lbolt _time _tout _callout x_mount _mpid _runin _runout _runrun _maxmem _lks _rootdev _swapdev _swplo _nswap _updlock _rablock _buf J_bfreeli _namei"rsave L2_iget L3(L46L56L6ZL7FL1*L8d_iput L20000(_access L9xL10˜L11�L12˜L13¢L14¢L15°_ldiv L16ÞL178L18ò_brelse L190L20(L20001(L22vL23N_bmap _bread _bcopy L24´L26¸L27ÒL28ÎL29àL30rretrn _schar"._uchar"F_fubyte L34ffio.ooXt¶ÈŠ"`w üÿCà × ÀÀ ŠÄ ÷•  wÒÿw ÎÿD̵óE€ÎÎeß ÎÎeß ­ “ÎEýÿ&ß ~Ö ôŠw‚ÿw ~ÿD�­ ÀEÿŸÁŠ7æ þyfæ�Wp AÉ fæ€tÈ –%ß wÿw ÿD�ÀEÿŸÁ–7– þy· ðþ fæ�Wp AÉ · Öþ÷•ÿ fæ€tÈ –%w´þw °þDC× € ß ð‹›÷•Áþ÷‹¼þ ô­²þ Àtýÿô­£þ Àtýÿô0 ÷• …þÀwFþw BþÀ�tþAAœ  À÷ w"þw þ÷‹PþÀ÷•Aþ wþw þ ! À ð Š?Îþ„ ò÷•þÀÿÿwÒýw Îý÷ Äÿ#Ä! †ô‹ÀÀ 0Š´Š4 4 7!šýƒ7”ý ÄeæÎ¢ß ÷•³ý wvý `°ÄØ ` &Hno file ‰ ¹‰è蹉H(¨¹‰YH9 (¹‰˜ ¹‰ ¹‰ ¹‰ ¹‰ÉÉx ¹_u ò_file _bdevsw _nblkdev _cdevsw _nchrdev _inode € _getf"rsave L2 L3(rretrn _closef".L5\_wakeup L6v_closei"~L4zL10001ŠL10002ŽL11°L12ÄL13ØL8ØL10003¨L20000Ö_iput L7Þ_openi"âL10005–L10006šL17 L19&L21HL10007L18,L20001FL204L14H_access"LL23x_getfs L20002²L24‚L22¶L25¢L26¢L27¬_owner"ºL29ÖL28Ú_suser"ÞL31ðL30ø_ufalloc"üL33L34 L36L32*L35_maxfp _falloc".L44¢L38>L20003„L39BL40vL42pL43lL37†L41p_printf clock.o5Ít¶ÌÒw üÿÿMôÿ÷ ðÿ÷ ðÿ2ÃË ó ÃeøË õ5à#÷ Èÿ÷ ÄÿÄô  Ì &ü Ö ÄeóÃ3  3ÄeÃeó@ÀEÿÀ%ð · N÷ ^ Îèfß Ö · 6· VÿÀRÿÀ%<Wõ5àS÷å<>ÿ· <ÿ· 4ÿ÷ 0ÿ÷-.ÿ,ÿ÷-$ÿ"ÿÎß ÷5ÿÎß Â— è †—¬²ŠÂeô÷‹èþ7ŠâþÎß @ÀEÿÀ%ð@Àe 7¨ÿÂúþ÷ ºþÀ ÷ ²þ—¬i²Š÷ ¢þ÷ žþwšþw –þBõþÿøÿÄ÷ ‚þô #ãÄe÷Œàó ÃeúÄ ‡óó óÃåóŒtt_øÿþÿw.þyé‰yxÉyxxIIHHIIIIYY‰YiYih¨YH¨XX©©¨¨II)Iiy‰yx©‰_canonb _coremap È_swapmap È_rootdir _lbolt _time _tout _callout x_mount _mpid _runin _runout _runrun _maxmem _lks _rootdev _swapdev _swplo _nswap _updlock _u ò_proc è_clock"rsave _display L2zL3L4*_spl5 L5zL6BL7\L8`L9zL10¢L12¦_incupc L13bL1bL14Ì_spl1 L15è_wakeup L16øL17üL18L20L19L21&L22b_issig L23N_psig L24Z_savfp _swtch rretrn _timeout"f_spl7 L26~L27�L28”L29 L30 L31ºL25Îa b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~  € � ‚ ƒ „ … † ‡ ˆ ‰ Š ‹ Œ � Ž � � ‘ ’ “ ” • – — ˜ ™ š › œ � ž Ÿ   ¡ ¢ £ ¤ ¥ ¦ § ¨ © ª « ¬ ­ ® ¯ ° ± ² ³ ´ µ ¶ · ¸ ¹ º » úSðX;4ÐàÐáÐâÐãÐäÐåÐæw¦¬€²€¸À¸À¾€Ä Ê ÐçÐèÐé7\ŠK7VTK7PÜ87JœS7D~M7>ÀPö*ÿüÿ÷ \’÷šþV’÷–þR’÷’þN’÷†þ7z÷zþÎ2’æ ˜æîþfF ¦ÎEàÿ÷50Üþ7ŠÂV÷Ö¾Ø ÷50Èþ÷‹®V÷ 0÷ äÁÀÉ5 @@ðõQõDøQõEøQõ‘õÑõ@ðÖ † �Ö €ÁÀÉ5 ‘ðøõøõøQø‘øÑø‡¦‚€€ì¡ 2pvòÿ� ÁEr †�bæz‘÷Êt‘I Ž ‰ 2 ·d‘‚‡æ$þ÷àþÁ”ýÁ5÷U0þA; /* reset and clear */ if (dv_cyl != (~(DVADDR->dvssr|0177000))) { /* seek */ DVADDR->dvcbr = CTBCOM | dv_cyl; if(dvrdy()) return; DVADDR->dvcbr = CNBCOM | SEEK | RESET; DVADDR->dvair = 1<dvcsr = DONE | IENABLE; return; } DVADDR->dvcbr = HTBCOM | dv_head; /* select head */ if(dv_count <= -512) DVADDR->dvwcr = -512; else DVADDR->dvwcr = dv_count; dvhdr.hd1 = (dv_head<<8)+dv_cyl; /* set up header */ dvhdr.hd2 = 0170000|dv_sctr; dvhdr.cksum = -dvhdr.hd1-dvhdr.hd2; dv0!0!1œHŽ3¶30!0.T.ø20!0!0!0!0!0!0!0!0!0!0!0!0!0!0!no init procunlink -- iget `77*7 `^7x7š7no file blkdev|#`{}@~ABCDEFGHIJKLMNOPQRSTUVWXYZ`{|}~ºE¢E®E¨E´EÊE����‚…†���������€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€� (SÐRâRâR"SpS4S`{|}~°R¤R¶RªR¼R€Rlow.ohdr.chadr = dv_addr[1]; if(dvrdy()) return; DVADDR->dvmar = &dvhdr; DVADDR->dvcbr = ((bp->b_flags&B_READ)? CHRCOM : CHWCOM ) | (dv_sctr<<1); DVADDR->dvcsr = IENABLE | GO | (dv_addr[0]<<4); } dvintr() { register struct buf *bp; register int csr; if (dvtab.d_active == 0) return; bp = dvtab.d_actf; dvtab.d_active = 0; csr = DVADDR->dvcsr; DVADDR->dvcsr = DONE; if (csr&ATTN) { /* seek complete */ DVADDR->dvair.lbyte = 0; if(DVADDR->dvssr>0) { /* error */ printf("ssr %o\n",DVADDR->dvssr); ½ Ë : € p t È *  ) k j I K J ] [ Y W V U T S R Q P O M L K J I H G F D C B A @ ? > Z ¿ = e c f d b a ` DVADDR->dvcbr = CNBCOM | RECAL | RESET; dv_unit = -1; if(dvrdy()) return; DVADDR->dvcbr = CTLRST; if (++dvtab.d_errcnt<=10) { dvexec(); return; } dvherr(0); return; } else { dvexec(); return; } } else { /* r/w complete */ if (csr<0) { /* error */ dvhist++; dv_unit = -1; if((dvtab.d_errcnt&03)==03) { DVADDR->dvcbr = CNBCOM | RECAL | RESET; printf("csr %o\n",csr); if(dvrdy()) return; } DVADDR->dvcbr = CTLRST; if(++dvtab.d_errcnt<=12) { N®æNíòÿß Ö €ÀEÿŸÀ%`#Î0®æ*®¦ €œ &ß ÈÆeÄ Hæß Ö Nöÿ¦ß ÞÖ 5ôÿ9„„@ôÿ€ 7ŒM€€ @-öÿ Î|Mfôÿ&ß ,;–%Nôÿ&ß â:Ö 5øÿröÿÎæfòÿføÿß <ÆeNøÿß €<÷‹}­÷ €­…wîòw ÜòBÊÕ€ÀEÿŸÀ% ¦�œWp AàXÉ Ö _÷ B­_Î÷ÿæBÀß –Ö À,­ÀEþ5ôÿέæNíôÿß Ö 5öÿ€ÀEÿŸÀ%` Î¦ß ÞÖ W„„W-öÿÎ&ß =Î&ß â:Ö 5øÿ föÿfôÿføÿß <Æe÷‹¡¬Nøÿß €< ÷5ÿœ¬Nøÿß h<Nøÿß 8<΄¬æ~¬¦ €œ &ß ÈÆeÀ ò5 ò�Z¬ òV¬ 0100 #define CHRCOM 070000 #define CHWCOM 0130000 #define LDSCOM 0140000 #define CTLRST 0170000 #define DRVRDY 04000 #define ATTN 0400 #define DONE 0200 #define IENABLE 0100 #define GO 01 /* * Use av_back to save sector, * b_resid for cylinder+track. */ #define dvsec av_back #define cylhd b_resid dvstrategy(abp) struct buf *abp; { register struct buf *bp; register char *p1, *p2; bp = abp; p1 = &dv_sizes[bp->b_dev.d_minor&07]; if (bp->b_dev.d_minor >= (NDV<<3) || bp->b_blkno >= p1->nblocks  Ä Ê ¾ À Â Ç É Ì < � \ i 3 à ž œ › š ˜ – • ” “ ’ ‘ � � Ž � Œ ‹ Š ‰ ˆ ‡ † „ ƒ ‚ h N g , . / _ X 2 — + ; ' ( ^ ¨ © ª « dvexec(); return; } dvherr(0); return; } else { if ((dv_count =+ 512)<0) { /* more to do */ dpadd(dv_addr,512); if (++dv_sctr>=12) { dv_sctr = 0; if (++dv_head>=20) { dv_head = 0; dv_cyl++; } } dvexec(); return; } } } dvtab.d_errcnt = 0; dvtab.d_actf = bp->av_forw; bp->b_resid = DVADDR->dvwcr+0160000; iodone(bp); dvstart(); } dvrdy() { register int cnt; cnt = 0; while(--cnt && (DVADDR->dvssr&DRVRDY)); if (cnt==0) { printf("divÄeîΞTß ,wtùw bù÷ (OP· "OÃ[× 4[0†ó *Àô‹š#ô‹™ ô‹˜ô‹›Îæß ì<Ö 4Ššô4Nœô0NžÎ¦&ß –%Žß ¸;ÃeÍÄò_!rl†ÌµÌÕß 0ß fJÄe ï7 ŽNÎÿÿß *@wÄøw ²ø Äò_!rl:†5--5-)̵ ÌÕΦÿ&ß ²Ö æ̵Â[— 4[ †„,µõÕÂeñΤTß ,´ŠÌÕS ô‹Äe ÄάTß ,7!„`ƒ7~`ttÌ•´ŠôÿÿÎfÎeß HÖ fß ®:Ö ÎfÎeß TÖ t€l5øÿÀeÀeÀ †@øÿõeøÿôŽß L<w¤÷w ’÷D­ÌÕa not ready\n"); dvherr(1); return(1); } else return(0); } dvherr(n) { register struct buf *bp; bp = dvtab.d_actf; printf("dev %o,blk %o,flg %o\n",bp->b_dev,bp->b_blkno,bp->b_flags); bp->b_flags =| B_ERROR; dvtab.d_errcnt = 0; dvtab.d_active = 0; dvtab.d_actf = bp->av_forw; iodone(bp); if(n==0) dvstart(); } dvread(dev) { if(dvphys(dev)) physio(dvstrategy, &rdvbuf, dev, B_READ); } dvwrite(dev) { if(dvphys(dev)) physio(dvstrategy, &rdvbuf, dev, B_WRITE); } dvphys(dev) { register c;) { bp->b_flags =| B_ERROR; iodone(bp); return; } bp->av_forw = 0; p2 = ldiv(bp->b_blkno,12); bp->cylhd = ((p1->cyloff+p2/20)<<5)|(p2%20); bp->dvsec = lrem(bp->b_blkno,12); spl5(); if ((p1 = dvtab.d_actf)==0) dvtab.d_actf = bp; else { for (; p2 = p1->av_forw; p1 = p2) { if (p1->cylhd <= bp->cylhd && bp->cylhd < p2->cylhd || p1->cylhd >= bp->cylhd && bp->cylhd > p2->cylhd) break; } bp->av_forw = p2; p1->av_forw = bp; } if (dvtab.d_active==0) dvstart(); spl0(Á ÷ J7~ý·þ‡�æöý¦�B€”ÀEÿ±Ñ   Â5 ‰øÿÉe ÂEÊ®U·ªU‚·¶ý‡1 Àÿÿ‚·¦ý‡€�æ˜ý¦æ�B ÂvU·pU ± Â5 Ã^U÷XUòøÿ �±‰ ƒ‚·Pý‡Àƒ‚·Dý‡€Á�v�÷ Á�o�÷ Á�_RÁ `É`� ‡fŽ Ž Ž ÁEøÿAœ,UÁ `‰å‡�ÁE÷ Bv ÀÀEÿ‡�ÁE÷ (&v ¶�Ž�€÷ 2 ‡�÷ ‡æ´üŸææ�÷ˆà�I €�€÷ ‡æ�üŸæÂ�÷ˆ¼�&‰ ·´�·xü‡·ª�·nüÖ Àÿÿ‡÷ P ‘ƒ~÷ &‘ ƒ~·„�‚ ‡€¦æv�&€� ‚ ‚ ÷Ø`�‡·Z�‚Àÿÿ‡æü˜·ü c = lshift(u.u_offset, -9); c =+ ldiv(u.u_count+511, 512); if(c > dv_sizes[dev.d_minor & 07].nblocks) { u.u_error = ENXIO; return(0); } return(1); } ÷ þÌEHÀ0ô ôŸþÿwþw üýD@�tƒ õ,Ä, ÀÃò wÂýw ¾ý@�À-´ýÎRß õ Ã,@�tÄ!"5-5- ÷ výÌ5 ÌU@ÎÎÿ&ß Ö ÷ \ýØ÷ Výß tFÜ÷ Bý×-Dý ÷U@4ýÎÎÿæß Ö ÷ "ý»÷ ýÀýß tÌ5ÌUß ªÌˆ00ôôÀ03t tw¼üw ¸üD÷ ®üÌ5ÎÎÿ&ß Ö ö÷ –üß .wŒüw ˆüDÃþÿ÷ zü00ÌUßþÿwZüw VüDÌUÌ5ß žÌE@ß w0üw ,ü@à à ýwüw üÀ7ü7ü7ü7üû — #�WpÁeDôÿÿ �WpÁetôôÊûÀÄû07¼ûÌß ž‚ Ú õøÿý øÿ @øÿóó‚ õeøÿð·€ûw|ûw xûDCLää @ tÁÁEÏÿ@PÀUAË5ÂUÂU¤w6ûw 2ûÄ÷ (ûÌ5 ÌU@Μÿ&ß Ö ô@túÿÀEÏÿ@] ÀU ÷öúþú@t 7òúwðú@t7âúæÀÌútøÿtÈ Ö ÷ ¸úÌ5Μÿ&ß Ö öÌ5@ß ÷ ”úÌEHÀEûÿw„úw €ú÷ zúÄ|ú!Ì5W-ÿÿ5-  ÌUß tß åæ÷ >úw:úw 6úDÃjúÃ5_$÷5\ú_$ÀÀmPúÀ ‡_$À¶úÀeÀE5øÿÀtúÿÀEüµ øÿ_$ÀÀmútúÿÀEüAøÿÁm€ú ‡ÀÀívú€ p÷ ¸ùÌ5 ÌU@ÎÎÿ&ß Ö ô@ ÀU t ÀÀEÀÿ4€tùÿÀ  ÿ�ÁE€ÿ@`ÀtúÿÀEÏÿ PÎ÷ÿæBß Ö 4Àt4`À„ù€ 4 4ŠÀpùðÕ&ý Ö ÷ "ùÌ5ÎÎÿ&ß Ö öÀFùðÅÌ5@ß ÷ ôøÌEH À 7$ùß .÷•j ùwÒøw ÎøDÌ57�óø÷•ëøw°øblkdev)8y)88y)8y)8øy)y)ø))(ø()(y)8y)I¸(8)8II))()(8II)y))8Iy))y)øy)y)())))Ø()))8Iy)y)è)8yééééèy8)8øIy)))(Iy)     )8h )8 øI  y) y_u ò_buf J_bfreeli _bdevsw _nblkdev _cdevsw _nchrdev _canonb _coremap È_swapmap È_rootdir _lbolt _time _tout _callout x_mount _mpid _runin _runout _runrun _maxmem _lks _rootdev _swapdev _swplo  Í Î Ï Ð Ñ Ò Ó Õ Ö × Ø Ù Ú Û Ü Ý Þ ß à á â ã ä å æ ç è é ê ë ì í î ï ð ñ ò ó ô õ ö ÷ ø ù ú û ü ý þ ÿ                      _nswap _updlock _rablock _proc è_buffers _swbuf _tmtab _raflag#P_bread"rsave _getblk">L2 L1F_iowait"Drretrn _breada"J_incore"L4–L5–L6êL7Î_brelse"žL8êL9üL3_bwrite" L11FL12RL13R_geterro".L10R_bdwrite"VL15x_bawrite"†L16‚L14‚L17šL19´_wakeup L20ÊL21Ö_spl6 L18üL23L246L260L22:L250L28VL29R_panic L30VL31bL32ºL33rL34ºL35´L36¦_sleep _spl0 _notavai"tL27@L37àL38L40RL41fL39pL42¢_iodone"¦L44ÂL45ÌL43Ì_clrbuf"ÐL49âL47äL48èL46è_binit"ìL51L52TL53PL54\L55|L56tL50€_devstar"„L58ÀL59ÄL57Æ_swap"ÊL61ØL62ðL63HL64\L65hL60x_bflush"|L67‚L68ŠL69¾L71¸L10000¦L70¸L66Â_physio"ÆL73$L10001DL74HL75`_lshift L76ÞL77òL78L72*L80LL81LL79Ltty.oX„¶(À˜hw üÿ@ÀeôÿÎß ‚÷‹ÄŠÎ&ß Ö ÎÄe&ß Ö ÎÄe&ß Ö w¸ÿw ´ÿÄVß 7LÄeß 7@Äeß 74 ß ‚w~ÿw zÿÎZß ÀÀEÿŸÀ% ÷•‹ÿ fæÁœWp AÉ –%w6ÿw 2ÿD÷ (ÿô Î&Îe ß Ö ôß B÷ ÿwÿw þþÄÀeÀE× ‚Ëâþ÷ÞþÃeö ÂÊ „ Âe ú7Âþw¾þw ºþDÎeß À øÎe ß À øß Îe ß Ãþÿ÷ |þß À ú4Šßþÿwdþw `þC÷ Vþó‹ óµ XÎ æß Ö ð÷ 2þÄÎß — ÿóŠ5øÿÄÀÀe5!øÿ6†Ž„ ’&ß Ö ôó5 $­ÿÿ\— #!ÔƒÄ Ò— @Í— Ëò‹À‚¬Àó5­þÿ\‚œÀÄ ”�!À†µÀw�ýw ŒýBC„ÃE€ÿÀÀ% Ä5à Ä5 ƒ¬ƒ¬ƒ¬ÎÎ¦ß Ö Žß B8—"Žß B1Ä5× A× ZÃe Žæß Ö Ä5 × ×  Žß Žæÿß Ö À ²ŠÄ5Žæß >Ö Žß ÈwÂüw ¾üC@ÀE€ÿ!ó5 _ª! ó5 Îæ ß >Ö óµö_ªó5%Á@7® þy Ä( Ä)Ä!Ä^Ä'Îæ\ß >Ö !a!zÄeàÿ! ó5Îæ ß >Ö ÎÎe &ß Ö À QÀÀe�5øÿ ÀEÀÿ 4‚À x*8Œ<Db€†ŠŠ(Ê‹&ÊŠ$Ê‹!΀’tüÿ&Îeß Ö ó5À�’ÁUøÿ@àÊÕŠŠÄÄ ŠÄ ó5 ÎÎe &ÎU€ß Ö wRûw NûDôÅß Èw8ûw 4ûB„òµ¦Ì Ö &ô5€"òµŽÎe ß × ÀœÀEÿÀP4 ÎÎE€ÿ¦æ®ß –%òÕwÊúw ÆúDô ß œÀ ô  Îeß ß À òw�úw ŒúD÷ ‚ú÷ zú- 2 ß ÈÎ&Îe ß Ö ð÷ Vúæß >Ö âß Èw@ú|#`{}@~ABCDEFGHIJKLMNOPQRSTUVWXYZ`{|}~¼¤°ª¶Ì)YYXXXi)YˆYˆYˆYi)Y¨YÈi)é9i)øø  ÈÙi)èè((éèi)é9èi)ø(i)hXi)i)èhøi)èX i)™ é9i_canonb _coremap È_swapmap È_rootdir _lbolt _time _tout _callout x_mount _mpid _runin _runout _runrun _maxmem _lks _rootdev _swapdev _swplo _nswap _updlock _rablock _u ò_partab _proc è_inode € _file _bdevsw _nblkdev _cdevsw _nchrdev _maptab#À_cfree _cfreeli _gtty"rsave _sgtty"‚L1D_suword rretrn _stty"H_fuword L2~_getf L3ÆL4®_wflusht"Ê_spl5 L6ØL7ð_sleep _flushtt"B_spl0 L5ú_cinit"þL9L10(L11"L12.L13:L144L8>L16L_getc L17\L18\L19l_wakeup L20„L21�L15˜_canon"œL23ªL24ÊL25¼L22lL26ÎL27ÒL28æL29L37öL38h_putc L30^L31<L32.L34^L35^L10000PL36\_ttyinpu"pL40˜L41ÊL10001ªL10002¶L10003º_signal L39:L42ØL43îL10004 L44$L45$L46:_ttyoutp">_ttstart"ÈL10007@L10008JL60¼L55¤L58°L57ªL59¶L61ÌL10005dL47ªL48ŠL51rL49~L50†L52ÜL10009œL56ÀL62ÜL63öL76ŒL668L64ŒL68<L70DL72bL74€L75†L20000Š_max L73xL77ª_ttrstrt"®L78ÄL80æL792L812L82L832_timeout _ttread"6L10011PL85lL86PL87l_passc L84l_ttwrite"pL89z_cpass L90¶L91†L92¦L88¼malloc.o57x¶Þ8w üÿCË õ"‡ÄsmKíÃeóþÿóüÿøÃeæ w¼ÿw ¸ÿBD-‚Ì Äeø5!ƒþÿmüÿ€ tmüÿ€@m-*4cüÿÌ &Äe4þÿ4üÿö€@m-Ì tíLmõ  ´ÂLÄeõów"ÿ¹¹_malloc"rsave L2 L3>L58L64L9$L7.L84L1@L48rretrn _mfree"DL11RL12bL13\L14žL18ÚL16ŠL19ºL20ÚL21ÚL24ÀL22ÔL23ÚL10Úpipe.ooX+¶”ì¬w üÿÎöÿß Ä 0÷ èÿ ß 'À¼ð¸üÿ÷ Ìÿà 2ŠÀ¤üÿÀ 0 Šß Ê•2Ë•3ô•Ì•ô€wˆÿw „ÿDÎß  3- &ô 4 3 ó5€óE€ÎÎeß Îß Ê׬óUÎæÎeß Ö Ó7 ^ÿ7ZÿÎß ôPÿÎß Êwÿw üþDÂ.ÿÎß  ׬ Îß Ê·ÿ6×, óU€Îß ÊÎæÎeß Ö Þ7 èþ÷ äþÎÎíÜþ¦ß Ö 7ÌþàÎß Îß Êó5ÄóEÎÎeß »w`þw \þD̵ ÌÕÎ&ß Ö ôÌÕw6þw 2þDÌÅ̵ÌÅß wþ™ù¨ÉèYYÉYXè ™x¨YY¸Y ™YY¨YYY(Y8x ™¨ ™x _canonb _coremap È_swapmap È_rootdir _lbolt _time _tout _callout x_mount _mpid _runin _runout _runrun _maxmem _lks _rootdev _swapdev _swplo _nswap _updlock _rablock _u ò_inode € _file _pipe"rsave _ialloc L1t_falloc L2&_iput L3Trretrn _readp"xL5†_plock" L6àL7ºL8º_wakeup _prele"ÊL4ü_sleep _readi _writep"L10L10000$L110L9œL12V_min _writei L15ªL16ÂL14ÆL18èL17ècat.oo5Éu¶À€w üÿ÷ öÿ· ðÿßU@èï÷•wÞÿw Úÿ7 ÔÿwÐÿw Ìÿ÷ Æÿ#÷ ¾ÿ×-¼ÿ<Î æß Ö ôÎ&ß Ö À Î æß Ö ð÷ ÷ ~ÿÙwxÿw tÿß5€èïÎß  êï÷ Xÿ×-RÿÎß w@ÿI)) ‰I)‰IÙù)(((Hh(‰‰I(¸))(è‰_u ò_partab _cat _ctopen"rsave L2L3L1rretrn _ctclose""L4,_ctwrite"0L66_cpass L7„_spl5 L8BL9Z_sleep L10Z_putc L11z_lbolt _catintr"ˆ_spl0 L5„L13¼_getc L10000´L14¼_wakeup L12¼dc.o.o5/v¶b@¬w üÿW­÷•#GA�WpÁeD@�tÀeø4ôÕËUAôµô•ô•ËIóIô•ôÈË5ôÕôµÎ &ß Ö õôÅÀ¦ÿð Àœÿ0wXÿw TÿA�WpÁeD1Šß w6ÿw 2ÿA�WpÁeDü5ß wÿw ÿA�WpÁeDü5ß wêþw æþA�WpÁeDNß ô - Îe ß w´þw °þA�WpÁeDÀ5ôµüEôµÎ&ß Ö ß ôÅ(Â5€ôµôµÂ5ôÕß ÂEßÿ ô5@ ô5€æß Ö wþw þA�WpÁeDB  ß ô~þô|þ�ÀEðÿÀ bü�ÀEðÿÀ ‚ðwžýAIQYAIQY¹Ix(III¹xhI¹x¨I¹xèI¹xHI¹x¨¸H8I¹xhIII_bdevsw _nblkdev _cdevsw _nchrdev _u ò_partab _proc è_dc11 ¤_dcrstab#b_dctstab#‚_dcopen"rsave L2L1¤L3jL4vL5vL6Œ_sleep L7¤rretrn _dcclose"¨_wflusht L8Æ_dcread"ÊL10ì_ttread L9ì_dcwrite"ðL12_ttwrite L11_dcxint"_ttstart L10000>L14H_wakeup L13H_dcrint"LL16¤L17œL18–_signal _flushtt L15ôL10001²L19ÎL20ÆL10003ÞL10002êL21ô_ttyinpu _dcsgtty"øL23 L22^L24FL25^dn.o.o5öv¶4êPw üÿC�ÀÀ Àe€úôµ�÷•ßÕ€úÌ•EwÎÿw Êÿ@�À ðÅûÿ€úw¸ÿw ´ÿ@�À Àe€ú̵€Îæ€úß Ö õÌÅ€ôµÀ÷•µÿ(̵ % ÷ °ÿä̵á÷ dÿÝ× -Îæß Ö Îæß Ö ØÀÀeÐÿ4�ÌÕÃw(ÿw $ÿ΀úß wÿiI©i©iIIYxx©i¨©_bdevsw _nblkdev _cdevsw _nchrdev _u ò_dnopen"rsave L2$L3.L1.rretrn _dnclose"2L4D_dnwrite"HL6ZL8ZL9p_sleep L10tL11„L5Ô_cpass L12Ä_lbolt L7Ô_dnint"Ø_wakeup L13ædp.o.o5;w¶ŒÊèw üÿ÷ þÿ÷-øÿ*÷•'÷æÿ7Šàÿ÷ ÖÿÎÿÿß 7ÈÿÀÄÿ7Àÿ÷•<¿ÿÎ<& æòß –%ß•ûùßBøùßaüùw’ÿw Žÿ øù üù7Їÿ7 „ÿ÷ xÿÎrÿß 7 jÿwfÿw bÿÀ\ÿÃ÷ ªÀ &Ä"‚÷ Dÿ×­Gÿ÷ 8ÿÎæß Ö ÷ $ÿçÎæáæVÿ÷ ÿ–%&& æÿß Æewüþw øþ÷ 2ÿ#÷ FÀ ÷•èþÀÞþ7Øþ×-ÿƒ÷ÿ÷ÿÆþ æüþ& æ¶þß Æe÷ Vw¦þw ¢þß5üù÷ ”þ÷•ÃþÀ÷ ‚þ÷‹„þß5üù÷ pþ Îæß Ö ÷ ZþÜwTþw Pþ÷•Oþ÷ HþÀ@þ· <þ’ÀE€ÿ�@ ÀEÿQ�þùÀþ7þ7Šþwþw þ÷‹ þ÷Šþ÷ Ž÷•ùýÎ<& æòß –%wÞýw ÚýÀ—úùÀE€ÿ÷‹Ðýß5øùÄU€À¸ýÀeÀ-®ý†À¨ý· ¤ý‘wœýw ˜ýÄüùßE€àüùÄ5À÷  Ä5€×­|ý÷ ÿwjýw fý÷•eýßEøù×­Zý7ŠRýÀHý7DýÎß w6ý™yyIIIyyyØyyyyø ™yyyy8y ™yx©yÉxØÉIéyø ™IyyyIIIyIyø ™yI©yÉxØÉ ™yyyy¸yyy ™yyyø ™yyyyy ™y ™yyyyyxÈ _bdevsw _nblkdev _cdevsw _nchrdev _u ò_buf J_bfreeli _dp11 _dpopen"rsave L2L1jL3X_getblk _dptimeo"ò_timeout rretrn _dpclose"nL5–_brelse L4–_dpread"šL7¬_dpwait"ZL6L8Þ_spl6 L9Ê_spl0 _sleep _min _iomove _dpwrite"L10VL118_dpstart"¬L13`L10000nL15zL12¨L16”L14¨L18à_partab L19îL17îL20L21_dpturna"–_dprint""L23`L24DL25`L22`_dpxint"dL27€L28’L29’L26’L31¾_wakeup L30Ækl.oo5Õw¶¸pÈw üÿW­÷•#/A�WpÁeCó•ó•Àð ÀþÿðÄpÿõ‹@�tÀe8ý3óó•ÌUCôU@wˆÿw „ÿA�WpNÎeß wlÿw hÿA�WpNÎeß wPÿw LÿA�WpNÎeß w4ÿw 0ÿA�WpÁeDß ô - Îe ß wþþw úþA�WpÁeBƒÄËUÄ53Ž&ß Ö wÆþw ÂþA�WpÁeDõ @0ß ôBÿw�þ™IxIIé™xé™x8é™xhé™x˜Èé™xé™xIé_bdevsw _nblkdev _cdevsw _nchrdev _u ò_partab _proc è_kl11 x_klopen"rsave L2L1tL3BL4Zrretrn _klclose"x_wflusht L5�_klread"”_ttread L6¬_klwrite"°_ttwrite L7È_klxint"Ì_ttstart L10000ôL9þ_wakeup L8þ_klrint"L11,_ttyinpu L106_klsgtty":L13`L14lL12lmem.o5ex¶˜Pw üÿW­7ÎúÿæBß Ö À"ÀEÀÿõ ÿøÿ÷ Îÿß ÿW­ÀtùÿÀEøÿÀ àôÁÁE€ÿ@` ÿŽß _øÿ ÿ÷ ”ÿ÷‹Çÿß À Éw€ÿw |ÿW­ Ä®ÿ7 ªÿ7a¤ÿæBß Ö 8ÎúÿæBß Ö ÀˆÿÀEÀÿ÷ :ÿ'÷‹iÿ$õ ÿøÿ÷ &ÿß ÿW­ÀtùÿÀEøÿÀ àôÁÁE€ÿ@` ÿ¦ß Ö _øÿ ÿ÷ êþÈwäþi˜ ©ÈÙ )i X˜ ‰ ©¸Ù)_u ò_bdevsw _nblkdev _cdevsw _nchrdev _mmread"rsave L1|L4_lshift _spl7 L5Z_fubyte _spl0 L2lL10000|_passc L3|rretrn _mmwrite"€L7¨_dpadd L6L8¨_cpass L9L10_subyte pc.o5¿x¶ðê w üÿõ ÷ ðÿ÷•÷àÿ×-ÜÿßAhÿÎæß Ö ñßU@lÿ÷ Šw´ÿw °ÿõ ÷ ¤ÿÎß À ù hÿ7 Žÿ÷ Šÿ÷ Vw€ÿw |ÿ÷ vÿÎß ×-fÿß5€ˆhÿßUAhÿÎæß Ö çß À â÷ 6ÿw2ÿw .ÿ÷ (ÿß �øwÿw ÿß5€lÿÎß nÿwöþw òþ×-ìþß5€hÿ!÷Úþ×-Öþß5€hÿ÷ÄþÎæjÿß Ö ×-²þúßUAhÿÎß wšþw –þÎß nÿ×-ˆþ2Îß wpþw lþß5€lÿ÷•“þ×-^þdÎ(æß Ö Îfß Ö ÷ ÿw.þw *þÄd ß �Ä ûwþyYIYYØè y9XXYy y9XXYXèy yi yXX yYYYYX8YXX yXXYXX yIYXèX8 y _bdevsw _nblkdev _cdevsw _nchrdev _u ò_pc11 _pcopen"rsave L2>L3L1HL4 L6H_lbolt _sleep _pcleade"Òrretrn _pcclose"LL8x_spl4 L9\_getc L10j_spl0 L11|L7|_pcread"€L15ŠL16ŠL17¼L18ÆL19¬L13¼_passc L14ÆL12Ê_pcwrite"ÎL21Ô_cpass L22ä_pcoutpu"�L20ä_pcstart"èL24L23_pcrint" L26&L25bL27bL28>L29Z_putc L30Z_wakeup _pcpint"fL32|L33ŒL31ŒL35¦L34ÎL36¼L40ÜL38âL39æL37ærf.o5 y¶ÌŒw üÿD� � Wt ,‡ÌUß 4 ÷ Ðÿ÷ Òÿ7ÌÿÀÈÿ07Àÿ÷‹´ÿ÷ ÷ ªÿw¦ÿw ¢ÿÄ¢ÿ·Š–ÿ�8ÿ t&æ6ÿ&ß Æewpÿw lÿ÷‹fÿÄfÿ7Š\ÿß 0ÿ ·ŠSÿÀ�OÿÀ%  ÌU7Š?ÿ7>ÿß ÷ ˆÿw*ÿw &ÿÎfææß Æewÿw ÿ fææß Æewèþ©Èéyyyyy9I©yyhI©yyyyyyyÈI©ˆØI©ˆØI_buf J_bfreeli _bdevsw _nblkdev _cdevsw _nchrdev _u ò_rftab _rrfbuf _rfstrat"rsave L2(_iodone L1V_spl5 L3<L4DL5R_rfstart"Z_spl0 rretrn L6Œ_devstar _rfintr"�L7ÒL8¾L9ºL20000Î_rfread"Ö_physio L10ô_rfwrite"øL11rk.o5-y¶ÀØw üÿD� Àeùÿ5øÿõ øÿõøÿAøÿWp-‡ÌUß C4 ÌE­ � Nøÿ&ß Ö 5øÿ÷ ˜ÿ@øÿÀ Àe  ß5€ÿ÷ @ƒ´,†3-‡´,ðƒ3-ìƒ2ô2÷ >ÿw:ÿw 6ÿÃ× †ÄûÌ5øß  ÿÎIß |ß ÿ ÌU#ß ÷ (âÌUßwêþw æþD� Àeùÿ5öÿõ öÿ� 5øÿNöÿæß Ö 5øÿNöÿæß Ö ÁÀ r t&ÁÀ r �U@AøÿWt @Pwzþw vþß ÿß5 ÿ·ŠcþÀ�_þÀ% Îß ü÷ ~ß5 ÿÀÿtóÿÀEøÿÀ Àe7.þ æ(þ÷ :ÿÖ &æ ÿæþß Æe ß üwþw þ÷ úýÄôý@ÀU P?äý7 àýß 7Š×ý÷ ˜þwÎýw ÊýÎAß |Ä!†ûË5øÎß  ÿÀÿÀE?ÿÀ%€øÎMß |æw„ýw €ý_ÿß5€ÿûwjýw fýÎfææß ÆewHýw Dý fææß Æew(ýÉø8IxÉÙÉxxøÙÉ8xÙÉ™™x‰‰‰èÙɉ‰‰‰ø™ÙÉxxÙÉÙɨÈÙɨÈÙ_buf J_bfreeli _bdevsw _nblkdev _cdevsw _nchrdev _u ò_rk_q _rk_ap _rktab _rrkbuf _rkstrat"rsave L2"L3<_iodone L1ÂL4RL20000`_lrem _spl5 L6ŠL8¾_rkstart"ÆL11ˆL10ºL10001 L10000°_spl0 rretrn L13ÐL14_rkaddr"_rkcomma"|L16 _rkerror"2L12L19@L20^_ldiv _rkintr"†L22´L10002¨L23°_rkpost"üL24ò_devstar L25øL21øL27.L26.L29DL30xL32^L33nL28xL35ˆL36’L34’_rkread"–_physio L37´_rkwrite"¸L38Ôtc.o5gy¶†øw üÿNß wîÿw êÿD-B‡ÌUß 4 ÷ Èÿ÷ Êÿ7ÄÿÀÀÿ07¸ÿ÷‹¬ÿ÷ ÷ ¢ÿwžÿw šÿÄšÿ#ÃâþÀœÀEøÿ�  Ë•÷•uÿ÷•nÿ� tÀUCß5€àþÂU÷•Nÿ‹wHÿw DÿÃâþÄ@ÿË5€!ËE€÷Š-ÿ ÌU7Š"ÿ7"ÿ#÷ xÿ#Ë5÷•ÿËE÷•üþËUË•C:ÂèþÀ�êþÀå 1‚À x&:tÚß•âþß $´"ß‚´"Ö‡"" ÀEÏÿÌ5ÁÁ @PÀUA �÷•Žþ€Àe-¿‡¸wzþ™¨É™øyyyyyiÉ™yyyyÉ™yyyyyyyøyÉ_bdevsw _nblkdev _cdevsw _nchrdev _buf J_bfreeli _u ò_tctab _tcclose"rsave _bflush L1rretrn _tcstrat"L30_iodone L2^_spl6 L4DL5LL6Z_tcstart"b_spl0 L7´L8†L9²_tcintr"¸L11L12ìL20ÚL21,L222L14þL15òL16L17þL10‚L25‚L23:L24tL10000`L10001dtm.o5Ëy¶Ü *xw üÿD�ô‹÷•! ´ŠÀ 0 À ðÿÿwÎÿw ÊÿD�4Šõ Î&ß bÖ Î&ß bÖ wžÿw šÿ÷‹”ÿß5€RõÎæß Ö ñ@t@]ÀU`Rõwbÿw ^ÿD� À Àeô"‚ô"†ÌUß (Ì5ß ß Ì5€ 4 ÷ ÿ÷ ÿ7ÿÀÿ07úþ÷‹îþ÷ ÷ äþwàþw ÜþÄÜþ`� 5øÿ@øÿÀ @øÿð‹ß5€Rõ ÌU7¬þß â@øÿtÁEÏÿ@PÀU@`-÷•|þ-ƒÃU €í  ÃUÃU €àTõßRõ÷•Fþ À TõVõÌ5À÷‹'þÀ ÀÀPRõwþw þÄ þL� ß Rõ*ß5Zõûß5€ÄPõ×­äý·ŠÝýÀ�ÙýÀ% ÀÀ ° 7ŠÆý*!ß5@Põó•ÿÿÌU÷•¦ý×­¢ý7Š›ýÀÀ ° 7’ý7Šˆýß ôTõÀÀ 0÷ Œþwhýw dýNß øÎfææžß ÆeÀRý 7xýw4ýw 0ýNß ø fææžß Æe7 Lýwýw ýD�Î÷ÿæBß Ö À ðÀ ƒ ÁpwÖüÙ˜i˜¨¸Ù˜Ùy˜¨Ù¸ø(øIyyyyy™Ùy¨˜yøyyyÙyyyy¨yˆ˜yyy¨yyø¨ÙˆH‰iÙˆHiÙhˆ¨¸_buf J_bfreeli _bdevsw _nblkdev _cdevsw _nchrdev _u ò_tmtab _rtmbuf _t_openf _t_blkno _t_nxrec _tmopen"rsave L2L3.L1.rretrn _tmclose"2L5R_tcomman"bL4^L7hL10000vL8†_lbolt _sleep L6š_tmstrat"žL10àL11Ì_iodone L9L12à_clrbuf L13î_spl5 L14L15 L16_tmstart" _spl0 L18&L17ìL10001PL19bL20´L21–L20000ªL23 L24®L10002ÖL10003æL10004âL10005æ_tmintr"ðL25”L26ZL27L28L29<L31PL20001�L32PL33†L34�_tmread"˜_tmphys"ø_physio L35È_tmwrite"ÌL36ô_lshift L37&vs.o5Rz¶T”?0*#?546?213?879?w êÿßYhøßXlø ß |wÒÿw ÎÿßE@høÎß À ùw´ÿw °ÿ ÷ ¨ÿ Ä Ä< ß |Îß |ñ ß |w„ÿw €ÿÀ¿5x@÷ nÿ×-pÿ< ÷ *Î æß Ö òÎfß Ö ÷ ÷ <ÿw8ÿw 4ÿÃløË5€(×-¸¿ËE7 ¬÷ ÿË5ËEËUË5Îß 7€nø×-êþÎß wÔþw Ðþ÷ ÊþÎß Î æß Ö ò÷ ªþÀEðÿœß w–þw ’þÄjø×-ˆþ Î&ß Ö Îß wlþY‰Y¸‰Y ‰YIˆ˜©‰Y¸8‰YI¸ˆ©ˆ‰Y˜8‰_partab _vs L1_vsmap"_vsopen"rsave _vschar"|L2*rretrn _vsclose".L4:_getc L5HL3H_vswrite"LL7T_cpass L8rL9jL6x_spl5 L11’L12®_vsxintr"È_sleep _putc _spl0 L10ÄL14”L15(L16îL17 L18L19L20(_wakeup L13(_vsread",L226L23R_passc L21f_vsrintr"jL25ˆL24�vt.o5jz¶Ä²Pw üÿõ ÷•%ß øïwâÿw Þÿ߀úïßUøïwÌÿw Èÿ÷ Âÿ% × ß5øï ÀEÿúïßUøïëƒ î÷ ”ÿß5øï · ˆÿÎæøïß Ö ÷ vÿÛwpÿw lÿßEøï÷ `ÿ7 ZÿÎøïß wNÿ9 y9y9É9Xiy9¨y_u ò_vtflag _vtopen"rsave L2L3L1rretrn _vtclose"L40_vtwrite"4L6:_cpass L7ŒL8BL9DL10hL12dL11d_spl5 L14†_sleep _spl0 L5Œ_vtintr"�L16®_wakeup L15®partab.o5Šxÿ€ ����‚…†���������€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€�_partab#rp.ob.o5Ly¶,0 |w üÿD� ÀEøÿtÀe0­ @ -‡ÌUß L4 ôÎ æß Ö Î æß Ö ÁÀ rWt�PtÁÀ r4`÷ ~ÿÀÿ7zÿÂô,‚2- ‡ô,‡2-‚ƒë´3÷‹<ÿ÷ ÷ 2ÿw.ÿw *ÿÄ*ÿ·ŠÿÔý� týÿ&æÒý&ß Æewøþw ôþ÷‹îþ8Äîþ7Šäþß Ìý$ß5Èý ß• Ìý ß5Èýà ùßÌý ß5€Ìýà ù·Š§þÀ�£þÀ%  ÌU7Š“þ7’þôÎýß ÷ Nÿwxþw tþNß âÀ Îfææß ÆewJþw FþNß âÀ  fææß Æewþw þÎ÷ÿæBß Ö Îæ@þÎeÿß Ö `@�ÀEøÿt,0†÷•þ ÀwÐý˜ž˜žËð#ð#hÿÿÿÿN¹è)‰‰‰ÉÙ¹‰‰øÙ¹‰‰‰‰‰‰‰èÙ¹˜ØÙ¹˜ØÙ¹h(iiÙ_buf J_bfreeli _bdevsw _nblkdev _cdevsw _nchrdev _u ò_rp_size#0_rptab _rrpbuf _rpstrat"rsave L10000*L26_iodone L1Î_lrem _ldiv _spl5 L3ŽL4ÀL5ŽL6¸L10001¤L10002´L7´L8Ê_rpstart"Ò_spl0 rretrn L9_devstar _rpintr"L10„L11jL12@L132L14@L15HL16VL17fL20000€_rpread"ˆ_rpphys"âL19²_physio L18²_rpwrite"¶L21ÞL20Þ_lshift L23(L22,lp.o.o5x¶´4<w üÿ÷5úÿß Lÿ÷• ÷UäÿßU@LÿÎ ß dwÌÿw ÈÿÎ ß d7 Àÿw¶ÿw ²ÿ÷ ¬ÿß døwœÿw ˜ÿD÷5’ÿ!a!z ÄeàÿÁ7| þy Á7„ þy Ã( Ã)Ã'Ã!Ã^Îß d÷ :ÿÄ-ØÀ0ÿÀeÀE7$ÿI÷5ÿ÷ ÿ÷ ÿ7 ÿ· ÿ×-ÿ<÷5ôþÄ ß Æ! 7 äþ7 Þþ&÷ Øþ#÷ Òþ ÷-ÌþÈþÎ ß Æ7 ºþ×-¸þP÷-°þ¬þÎ ß Æ· žþõß Æ· ’þ· �þw‚þw ~þß5€Lÿ Îß Nÿów^þw Zþ÷ Òÿ×-Pþ2÷ HþÎß w:þw 6þ×-0þdÎ æß Ö Îfß Ö ÷ þ÷ †ÿ÷ þwþ .Öèè(v:`{|}~¶ª¼°Â†yYIYÉyYÉyÉyYYYYYYYYYYYYYYYYYYYYYYYYÉyXˆÉyYYXØÉyYXX)9É_bdevsw _nblkdev _cdevsw _nchrdev _u ò_lp11 _lpopen"rsave L10000L2L10_lpcanon"drretrn _lpclose"4L3F_lpwrite"JL5P_cpass L6`L4`L8†L9˜L11†L19†L10007L10008 L10009�L29.L22ÖL24èL23èL28(L20000vL32:L10002L10003&L10004¢L16¶L13ªL17¼L15°L18ÂL14ÆL7zL10005üL25(L26_lpoutpu"ÆL27(L33NL34vL35VL36l_lpstart"~L38„L39ž_getc L37ž_lpint"¢L10010ºL41Â_wakeup L40ÂL43â_sleep _putc _spl4 _spl0 L42üdhdm.o5ªv¶ìÌDw üÿA�WpÁeD@�@ñßBñß5@BñôÕß`@ñ÷ ÆÿôµÎ &ß Ö õ÷ ¬ÿw¨ÿw ¤ÿß5€@ñ1Á@ñÁEðÿWpÁeDÁ„ÿWpÁe!†ß ß5@Bñôµ Î&ß Ö  Bñß ôÅôÕß`@ñw4ÿ‰X©Øé ‰XiXHxˆ _partab _bdevsw _nblkdev _cdevsw _nchrdev mÿbio.oW í¶lP ¨w üÿNfß >Ö Ì5ÌUôÿ &@�tÈ Ö ß Dw¶ÿw ²ÿB N¦ß Ö À N¦ß >Ö Ì5ÌUôÿ &@�tÈ Ö õ 'N¦ß Ö À ÷  N¦ß >Ö Ë5Îß žËUóÿ æ@�tÈ Ö Ä N¦ß Ö ß Dwöþw òþDÌEôÿ &� tÈ Ö Ã5ß Dß žÃ5ß .wªþw ¦þD� t,ß †ÌUß žwzþw vþDÌUß wbþw ^þDÌ5@ß ÷5@Fþ÷E@>þÎß Ì5ô•ÿÿ ÃÂþÿ_dh11 _ndh11 _dmopen"rsave L20_spl5 L3:L4P_sleep _spl0 L1Trretrn _dmint"XL6ÈL7Â_wakeup L8¼L9´_signal _flushtt L10ÂL5Èdh.oo5vv¶(  w üÿW­÷•#6A�WpÁeDôNßU@0àôÕ ôµô•ô•ôôÈß ŽNß ôÅôÕÀÈÿð À¾ÿ0wzÿw vÿA�WpÁeDñÅçÿß wVÿw RÿA�WpÁeDôµß w0ÿw ,ÿA�WpÁeDôµß w ÿw ÿÃà"ÁWtøÿÁEðÿWpÁeD!àð†ôµÃ5ß åÃ5  æß Ö Ûw¶þw ²þA�WpÁeDB   ß ô,ÿô*ÿß Žwrþw nþD÷ dþÁåÀ rÀU@0�à�t �Wt@P­ÃU@ô5€ ô5@ÃUÃUÃU2ßà÷ þwþw þýÂàßE0‚à€À]ìý�@xÃÄ!à†Â0 À@ @ 7@ÊýôÅ ß Nà Äeìw²ýw ®ýõþÿøÿ÷ ¢ýBòµ!Kò HŽÎe ß À%"ò��ÁåÀ rÀU@0�à€ÀeàßÿÿàÀtQà7QBýòÕ ÎÎE€ÿÎe¦æß –%òÕò —, ŽÎe ß _øÿþÿwüü¹IxII9¹xX9¹x˜9¹xØ9¹xxHh9¹xXII9¹¹x9¹™xx™9¹¹¨x™ØèH9_bdevsw _nblkdev _cdevsw _nchrdev _u ò_partab _proc è_dh11 à_ndh11#_dhsar _dhopen"rsave L2L1‚_dhstart"NL3\_dhparam"Ž_dmopen L4‚rretrn _dhclose"†_wflusht L5¦_dhread"ªL7Ì_ttread L6Ì_dhwrite"ÐL9ò_ttwrite L8ò_dhrint"öL11üL12FL10000*L132_wakeup L14:_ttyinpu L10F_dhsgtty"JL16rL15Š_spl5 L18ÒL19òL20îL21èL23ò_spl0 L17ú_dhxint"þL25"L26JL28BL27DL24JL29_getc L30ÆL31â_ttrstrt _timeout L10001ðL32údhfdm.o5Æv¶Äxw üÿA�WpÁeDôÕwâÿyX™_partab _bdevsw _nblkdev _cdevsw _nchrdev _dh11 _dmopen"rsave L1rretrn Ît°ß ’Îl°ß Ü w|õw jõ@Àe@µ ’À%% 5Žß Öñ@µ ’Á¶T7|D þy Ë Î-ß ÖÀ — oÎÎ æß –Ö ÃeËÎß ÖùÄ•öŽß Öúwêôw ØôNfß HÖ N&ß –Ö Nfß TÖ Îe0ß Öwªôw ˜ôDß xÿ!ß5€tÿûÄ Ãtÿ tÿvÿ! Î ß ÖÎß ÖÎß Ö ß ÖßtÿwTôw Bôw \÷ìôœ\÷ ÊúNæÎTß Ö ÷ �òýw&ôw ô B÷ Ø®_ŽÊÕ€ÀEÿŸÀ% ¦�œWp ATÉ Ö _ŽÎ÷ÿæBÀß bÖ 5ôÿ5öÿÀ’®ÀEþ5òÿ΂®æNíòÿß ìÖ €ÀEÿŸÀ%`#Îd®æ^®¦ €œ &‡Á@‡÷5zûüÀàôÁÀôÄ€ Ã�ÑaÅ~Â?—túÿÂEü�ÑЀÑ÷@ð÷<ðÆÄ· ,ûÀ  ü‡ÀÀ  Äü‡÷0’û÷ �ûæð&  �6r‡ �6r@‡�@A6v@‡@…&æ¦äHÅåF‚ƒ„…‡˜)/* * variables */ #define NBUF 15 #define NINODE 100 #define NFILE 100 #define NMOUNT 5 #define MAXMEM (32*32) #define SSIZE 20 #define SINCR 20 #define NOFILE 15 #define CANBSIZ 256 #define CMAPSIZ 100 #define SMAPSIZ 100 #define NCALL 20 #define NPROC 50 #define NTEXT 20 #define NCLIST 100 /* * priorities * probably should not be * altered too much */ #define PSWP -100 #define PINOD -90 #define PRIBIO -50 #define PPIPE 1 #define PWAIT 40 #define PSLEP 90 #define PUSER 100 /* * signals * dont change */ #define NSIG 13 #define SIGHUP 1 #define SIGINT 2 #define SIGQIT 3 #define SIGINS 4 #define SIGTRC 5 #define SIGIOT 6 #define SIGEMT 7 #define SIGFPT 8 #define SIGKIL 9 #define SIGBUS 10 #define SIGSEG 11 #define SIGSYS 12 /* * fundamental constants * cannot be changed */ #define USIZE 16 #define NULL 0 #define NODEV (-1) #define ROOTINO 1 #define DIRSIZ 14 struct { char lobyte; char hibyte; }; struct proc { char p_stat; char p_flag; char p_pri; char p_sig; char p_null; char p_time; int p_ttyp; int p_pid; int p_ppid; int p_addr; int p_size; int p_wchan; int *p_textp; } proc[NPROC]; /* stat codes */ #define SSLEEP 1 #define SWAIT 2 #define SRUN 3 #define SIDL 4 #define SZOMB 5 /* flag codes */ #define SLOAD 01 #define SSYS 02 #define SLOCK 04 #define SSWAP 010 #define R0 (0) #define R1 (-2) #define R2 (-9) #define R3 (-8) #define R4 (-7) #define R5 (-6) #define R6 (-3) #define R7 (1) #define RPS (2) /* * Copyright 1973 Bell Telephone Laboratories Inc */ /* * KT-11 registers */ #define KISA 0172340 #define UISD 0177600 #define UISA 0177640 #define RO 02 #define RW 06 #define WO 04 #define ED 010 struct { int r[8]; }; char canonb[CANBSIZ]; int coremap[CMAPSIZ]; int swapmap[SMAPSIZ]; int *rootdir; int lbolt; int time[2]; int tout[2]; struct callo { int c_time; int c_arg; int (*c_func)(); } callout[NCALL]; struct mount { int m_dev; int *m_bufp; int *m_inodp; } mount[NMOUNT]; int mpid; char runin; char runout; char runrun; int maxmem; int *lks; int rootdev; int swapdev; int swplo; int nswap; int updlock; int rablock; struct text { int x_daddr; int x_caddr; int x_size; int *x_iptr; char x_count; char x_ccount; } text[NTEXT]; struct clist { int c_cc; int c_cf; int c_cl; }; struct tty { struct clist t_rawq; struct clist t_canq; struct clist t_outq; int t_flags; int *t_addr; char t_delct; char t_col; char t_intrup; char t_quit; char t_state; char t_char; int t_speeds; }; char partab[]; #define TTIPRI 10 #define TTOPRI 20 #define CERASE '#' #define CEOT 004 #define CKILL '@' /* limits */ #define TTHIWAT 50 #define TTLOWAT 30 #define TTYHOG 256 /* modes */ #define NODELAY 01 #define XTABS 02 #define LCASE 04 #define ECHO 010 #define CRMOD 020 #define RAW 040 #define ODDP 0100 #define EVENP 0200 #define M2741 0400 #define OCORR 02000 #define ICORR 04000 #define NTDELAY 010000 /* Bits */ #define DONE 0200 #define IENABLE 0100 #define TIMEOUT 01 #define WOPEN 02 #define ISOPEN 04 #define SSTART 010 #define CARR_ON 020 #define BUSY 040 tRpartab.ožUdh.ožUdhfdm.o¢Xtrap"start"þcall"@_klrint"¾K_klxint"ˆK_pcrint"6M_pcpint"’M_clock"9_tcintr"¦Q_rkintr"œO_tmintr"dT_dhrint"”V_dhxint"œW_trap"®nofault$È™ssr$Ê™_runrun$�\_swtch"^_u!À_savfp"¦_incupc"Ä_display" _getc"4_putc"Ž_cfreeli$’\_spl5"\_backup"ð_regloc#Z_fubyte",_subyte"F_fuword"p_suword"�_copyin"Ì_copyout"Ø_idle"_savu"&_retu"<_aretu"4_spl0"P_spl1"T_spl4"X_spl6"`_spl7"d_copyseg"h_clearse"˜_dpadd"º_dpcmp"È_end$Ô™_edata#�\_main"Ä_ldiv"|_lrem"ˆ_lshift"–rsave"¦rretrn"´badtrap$Й_bdevsw#ÀX_nulldev"0_rkstrat"N_rktab$”\_tcclose"îP_tcstrat"Q_tctab$ž\_tmopen"tR_tmclose"¦R_tmstrat"S_tmtab$¨\_cdevsw#ÚX_klopen"¼J_klclose"4K_klread"PK_klwrite"lK_klsgtty"öK_rkread"¬P_rkwrite"ÎP_nodev" _tmread" U_tmwrite"@U_dhopen"žU_dhclose"$V_dhread"HV_dhwriteß ”ÆeÄ Hæß ìÖ Nöÿ¦ß ªÖ 5ôÿ9„„@ôÿ€ 7I€€ @-öÿ ÎIfôÿ&ß ø:–%Nôÿ&ß ®:Ö 5øÿröÿÎæfòÿføÿß ÆeNøÿß L<÷‹±­÷ ´­…wîòw ÜòBÊÕ€ÀEÿŸÀ% ¦�œWp ATÉ Ö _Ì÷ v­_ÌÎ÷ÿæBÀß bÖ À`­ÀEþ5ôÿÎP­æNíôÿß ìÖ 5öÿ€ÀEÿŸÀ%` Î¦ß ªÖ W„„W-öÿÎ&ß ì<Î&ß ®:Ö 5øÿ föÿfôÿføÿß Æe÷‹Õ¬Nøÿß L< ÷5ÿЬNøÿß 4<Nøÿß <θ¬æ²¬¦ €œ &ß ”ÆeÀ ò5 ò�ެ òЬ ÊÕ÷‹s¬÷ v¬‚w°ñw žñu-ƒ@@w”ñw ‚ñô‹ ß Ø4 &ß ˜ Ö ß 0ß fJ Š4 ôŠß fJwP÷w >÷BʵJŽß Ò ð‹›C€Àe5öÿÎföÿß HÖ ¦ß ®:Ö 5øÿÎföÿß TÖ tAøÿ@l€Àe€ÀeÀ †ÔùʵÔâKÔàKÄeʵÔÎKÔÌKNøÿß ¸;w¨öw –öDô5 FÀe5Àe@-2†ý +ô5N&ß ®:Ö ÂÀÀe€ †Ê Ž&ß ¨ Ö ÂeïÎß L0d!t!zB2Bd!°.4-¢.v3Ò-d!d!H1ÐHÂ3ê3d!d.ˆ.,3d!d!d!d!d!d!d!d!d!d!d!d!d!d!d!no init procunlink -- iget `67J7^7 `’7¬7Î7no file blkdev|#`{}@~ABCDEFGHIJKLMNOPQRSTUVWXYÖ w¾¹w ¬¹A�WpÁe—Dõ @0ß üBô†twˆ¹w v¹õ ÷ >K÷•ós÷.K×-*KßAhÿÎæD_ß æÖ ñßU@lÿ÷ Šw<¹w *¹õ ÷ зÎ|—ß 4À ù hÿ7 ÜJ÷ ®·÷ Vw¹w ö¸÷ ¢·Î|—ß 4×-´Jß5€ˆhÿßUAhÿÎæ|—ß æÖ çß ~À â÷ Z·wº¸w ¨¸÷ ÐÎß ¼Møw ¸w ޏß5€lÿ΂—ß 4nÿw~¸w l¸×-:Jß5€hÿ!÷(J×-$Jß5€hÿ÷JÎ|—æjÿß ŽÖ ×-JúßUAhÿÎ|—ß bw"¸w ¸Î‚—ß 4nÿ×-ÖI2΂—ß bwø·w æ·ß5€lÿ÷•gr×-¬IdÎ(æ‚—ß æÖ ΂—f/ Copyright 1974 Bell Telephone Laboratories Inc / low core br4 = 200 br5 = 240 br6 = 300 br7 = 340 . = 0^. br 1f 4 / trap vectors trap; br7+0. / bus error trap; br7+1. / illegal instruction trap; br7+2. / bpt-trace trap trap; br7+3. / iot trap trap; br7+4. / power fail trap; br7+5. / emulator trap trap; br7+6. / system entry . = 40^. .globl start 1: jmp start . = 60^. klin; br4 klou; br4 . = 70^. pcin; br4 pcou; br4 . = 100^. kwlp; br6 kwlp; br6 . = 214^. tcio; br6 . = 220^ß ŽÖ ÷ ÿw¶·w ¤·Äd ß ¼MÄ ûwž·w Œ·D� Àeùÿ5øÿõ øÿõøÿAøÿWp-‡ÌUß ˆ>C4 ÌE­ � Nøÿ&ß ˆÖ 5øÿ÷ Þµ@øÿÀ Àeˆ—  ß5€ÿ÷ @ƒ´,†3-‡´,ðƒ3-ìƒ2ô2÷ xµwضw ƶÈ—× �—†ÄûÌ5øß ,O ÿÎIß ’Pß ÿ ÌU#ß ˆ>÷ (âÌUßwˆ¶w v¶D� Àeùÿ5öÿõ öÿ� 5øÿNöÿæß ˆÖ 5øÿNöÿæß |Ö ÁÀ r t&ÁÀ r �U@AøÿWt @Pw¶w ¶ß ÿß5 ÿ·Šá À�Ý À% Îß P÷ ~ß5 ÿÀÿtóÿÀEøÿÀ Àeˆ—7¨G æ¢G÷ :ÿÖ &æ ÿæ’Gß f?Æe ß Pw¢µw �µ÷ tGÄnG@ÀU P?^G7 ZGß ˆ>7ŠU ÷ ˜þwlµw ZµÎAß ’PĈ—!�—†ûË5øÎß ,O ÿÀÿÀE?ÿÀ%€øÎMß ’Pæw"µw µ_ÿß5€ÿûwµw ö´Îfæ’—æNß ¨@Æewæ´w Ô´ fæ’—æNß ¨@ÆewÆ´w ´´Nß ^@w´´w ¢´D-B‡ÌUß ˆ>4 ÷ :³÷ z 7t Àp 07h ÷‹\ ÷ ÷ ³wd´w R´ÄJ #ÃâþÀœÀEøÿ�  Ë•÷•% ÷• � tÀUCß5€àþÂU÷•þ ‹w´w ü³ÃâþÄð Ë5€!ËE€÷ŠÝ ÌU7ŠÒ 7Ò #÷ xÿ#Ë5÷•¸ ËE÷•if ! -r l.s -o ! -r c.c goto bad as l.s mv a.out ../low.o as mch.s mv a.out ../mch.o cc -c c.c mv c.o ../conf.o mv l.s low.s mv c.c conf.c ld -x ../low.o ../mch.o ../conf.o ../lib1 ../lib2 mv a.out ../../../unix chmod 644 low.s conf.c ../low.o ../mch.o ../conf.o ../../../unix echo rm mkconf.c and rc when done exit : bad echo l.s or c.c not found V¤ h(8HXhxˆ˜¨ÈØèø(8xˆHX8hxˆ˜¨¸ÈØè8_bdevsw#_nulldev _rkstrat _rktab _tcclose _tcstrat _tctab _tmopen _tmclose _tmstrat _tmtab _cdevsw#_klopen _klclose _klread _klwrite _klsgtty _rkread _rkwrite _nodev _tmread _tmwrite _dhopen _dhclose _dhread _dhwrite _dhsgtty Èß ,WNß ¢XôÅôÕÀ*jð À j0w�¯w ~¯A�WpÁeæ—DñÅçÿß üBwl¯w Z¯A�WpÁeæ—Dôµß hGwF¯w 4¯A�WpÁeæ—Dôµß ¢Gw ¯w ¯Ãà"ÁWtøÿÁEðÿWpÁeæ—D!Æ™ð†ôµÃ5ß båÃ5  æß ¢DÖ ÛwÌ®w º®A�WpÁeæ—DB   ß üBôŽiôŒiß ,Wwˆ®w v®D÷ "­Áåæ—À rÀU@0�à�t �Wt@P­ÃU@ô5€ ô5@ÃUÃUÃU2ßà÷ ¸¬w®w ®ÂàßE0‚à€À]B�@xÃÄæ—!Æ™†Â0 À@ @ 7@òAôÅ ß ìWà ÄeìwÈ­w ¶­w ²õ@7X°ÄZÀÃHÀ× VÀ†Ô”û÷(°÷•°÷XÀ°Î@°ß ÆÎ8°ß w|õw jõ@Àe@µ ’À%% 5Žß ñ@µ ’ÁŽY7 I þy Ë Î-ß À — oÎÎ æß ÊÖ ÃeËÎß ùÄ•öŽß úwêôw ØôNfß |Ö N&ß ÊÖ Nfß ˆÖ Îe0ß wªôw ˜ôDß xÿ!ß5€tÿûÄ Ãtÿ tÿvÿ! Î ß Îß Îß  ß ßtÿwTôw Bôwa÷ìôa÷ ÊúNæ¦Yß 8Ö ÷ �òýw&ôw ô B÷ ¤®_ÂÊÕ€ÀEÿŸÀ% ¦�œWp AÞXÉ Ö _ÂÎ÷ÿæBÀß –Ö 5ôÿ5öÿÀ^®ÀEþ5òÿÎstruct user { int u_rsav[2]; /* must be first */ int u_fsav[25]; /* must be second */ char u_segflg; char u_error; char u_uid; char u_gid; char u_ruid; char u_rgid; int u_procp; char *u_base; char *u_count; char *u_offset[2]; int *u_cdir; char u_dbuf[DIRSIZ]; char *u_dirp; struct { int u_ino; char u_name[DIRSIZ]; } u_dent; int *u_pdir; int u_uisa[8]; int u_uisd[8]; int u_ofile[NOFILE]; int u_arg[5]; int u_tsize; int u_dsize; int u_ssize; int u_qsav[2]; int u_ssav[2]; int u_signal[NSIG]; int u_utime; int u_stime; int u_cutime[2]; int u_cstime[2]; int *u_ar0; int u_prof[4]; char u_nice; char u_dsleep; } u; /* u = 140000 */ /* u_error codes */ #define EFAULT 106 #define EPERM 1 #define ENOENT 2 #define ESRCH 3 #define EIO 5 #define ENXIO 6 #define E2BIG 7 #define ENOEXEC 8 #define EBADF 9 #define ECHILD 10 #define EAGAIN 11 #define ENOMEM 12 #define EACCES 13 #define ENOTBLK 15 #define EBUSY 16 #define EEXIST 17 #define EXDEV 18 #define ENODEV 19 #define ENOTDIR 20 #define EISDIR 21 #define EINVAL 22 #define ENFILE 23 #define EMFILE 24 #define ENOTTY 25 #define ETXTBSY 26 #define EFBIG 27 #define ENOSPC 28 #define ESPIPE 29 #define EROFS 30 Z..È.Ébuf.hÊconf.hËconfÒdmrêfile.hëfilsys.hìinode.híkenldlib1lib2param.hproc.hreg.hseg.hsystm.htext.h tty.h low.oOmch.ojconf.o user.hZ.....Z.[adm\binxc“fortœgames¤lib¬mdec·pub¼snoÂsourceÈsystmpqlpd‡Ÿ�€�P˜IŸ�€Ÿ�·ÜðÀÀ˜I˜‡™‡œ‡�‡ž‡Ÿ‡æÆû·bð·^ð÷à´û¦ Á  P ‘ ƒ~‚·œû‡æ–û·2ð÷àŠû Á & � C~·zû‡€°mH ‡€�€í�í€  ÿÿW þ ‚Àþ‡W ‡Á@‡÷5ªúüÀàôÁÀôÄ€ Ã�ÑaÅ~Â�“—túÿÂEü�ÑЀÑ÷pï÷lïÆÄ· \úÀêW  B“ü‡ÀÀ  Äü‡÷0Âú÷ Pæð&  �6r‡ �6r@‡�@A6v@‡@…&æ¦äHÅåF‚ƒ„…‡w Þÿ7 ¤UÀìôÀe ÿ߀ÿ ß øÀ Πÿß d· xUΠÿææYß H–%Ÿ  ÿéÁ\UWp WtûÿNæZTß Z`{|}~îEÖEâEÜEèEþE����‚…†���������€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€�low.omch.oconf.oÄmain.oÄalloc.o¦iget.oð prf.o8rdwri.oŽslp.oæsubr.oÞtext.oVtrap.o®sig.o~!sysent.ox#sys1.ox#sys2.o¦)sys3.oÒ-sys4.o,3nami.o4fio.o†6clock.o9bio.oâ:tty.o2Bmalloc.oòGpipe.oÐHkl.o¼Jpc.o,Lrk.oNtc.oîPtm.o˜· ôYΠÿææ²]ß 6H–%Ÿ  ÿéÁØYWp WtûÿNæ2Yß 8Ö Îæ¼Yß Ö 7²YÎÖRæÔRæz^ß 6H–%ßîô®ÿߎÿÃYË Îâ@øÿtÁEÏÿ@PÀU@`-÷•¤-ƒÃU €í  ÃUÃU €àTõßRõ÷•n À TõVõÌ5À÷‹OÀ ÀÀPRõwÀ´w ®´Ä4L� ß Rõ*ß5Zõûß5€ÄPõ×­ ·ŠÀ�À% ÀÀ ° “7Šî*!ê’ß5@Põó•ÿÿ“ÌU÷•Î×­Ê7ŠÃÀÀ ° “7º7аß T>ôTõÀÀ 0“÷ Œþw´w ´Nß ÈQÎfæê’ænOß t@ÆeÀlA 7¨nwä³w Ò³Nß ÈQ fæê’ænOß t@Æe7 |nw¸³w ¦³D�Î÷ÿæBÀß bÖ À ð“À ƒ wŒ·w z·÷ ÔDÄÎD@ÀU P?¾D7 ºDß T>7ŠÍ ÷ ˜þwV·w D·ÎAß tNÄÊ’!Ò’†ûË5øÎß M ÿÀÿÀE?ÿÀ%€øÎMß tNæw ·w ú¶_ÿß5€ÿûwò¶w à¶ÎfæÔ’æøKß t@Æewжw ¾¶ fæÔ’æøKß t@Æew°¶w ž¶D�ô‹“÷•Qq ´Š“À 0 “À ðÿÿ“w~¶w l¶D�4Š“õ Î&ß 2OÖ Î&ß 2OÖ wN¶w <¶÷‹¼ß5€RõÎæ”Zß ²Ö ñ@t@]ÀU`Rõw¶w ¶D� À Àe“ô"‚ô"†ÌUß T>(Ì5ß ~>ß T>Ì5€ 4 ÷ b´÷ 47.À*07"÷‹÷ ÷ 0´w�µºtwˆ¹w v¹D� Àeùÿ5øÿõ øÿõøÿAøÿWp-‡ÌUß T>C4 ÌE­ � Nøÿ&ß TÖ 5øÿ÷ È·@øÿÀ ÀeÊ’  ß5€ÿ÷ @ƒ´,†3-‡´,ðƒ3-ìƒ2ô2÷ b·w¸w °¸ÃÊ’× Ò’†ÄûÌ5øß M ÿÎIß tNß ÿ ÌU#ß T>÷ (âÌUßwr¸w `¸D� Àeùÿ5öÿõ öÿ� 5øÿNöÿæß TÖ 5øÿNöÿæß HÖ ÁÀ r t&ÁÀ r �U@AøÿWt @Pw¸w ð·ß ÿß5 ÿ·ŠY À�U À% Îß ôM÷ ~ß5 ÿÀÿtóÿÀEøÿÀ ÀeÊ’7E æE÷ :ÿÖ &æ ÿæòDß 2?Æe ß ôMÞ7 Lv÷ HvÎÎí@v¦ß ìÖ 70vàÎß ’Îß fJó5ÄóEÎÎeß .»wD»w 2»D̵ ÌÕÎ&ß ²Ö ôÌÕw»w »DÌÅ̵ÌÅß .wøºw æºW­÷•›u/A�WpÁeR’Có•ó•À€uð ÀvuðÄpÿõ‹@�tÀe8ý3óó•ÌUCôU@w€ºw nºA�WpNÎeR’ß ÈBwdºw RºA�WpNÎeR’ß 4GwHºw 6ºA�WpNÎeR’ß nGw,ºw ºA�WpÁeR’Dß ÆFô - Îe ß .wö¹w ä¹A�WpÁeR’BƒÄËUÄ53Ž&ß nDÖ w¾¹w ¬¹A�WpÁeR’Dõ @0ß ÈBôøÃeæ w~½w l½BD-‚Ì Äeø5!ƒþÿmüÿ€ tmüÿ€@m-*4cüÿÌ &Äe4þÿ4üÿö€@m-Ì tíLmõ  ´ÂLÄeõówä¼w Ò¼Î� ß @ Ä 0÷ Ìï ß Ü 'À xðxüÿ÷ °ïà 2ŠÀxüÿÀ 0 ŠÀß Ü Ê•2Ë•3ô•Ì•ô€wl¼w Z¼DÎß ß ¸;åæ÷ ¬Ãw Åw úÄDüÃ5_ÒA÷5®_ÒAÀÀm¢À ‡_ÒAÀ€ÀeÀE5øÿÀtúÿÀEüµ øÿ_ÒAÀÀmntúÿÀEüAøÿÁmÒ ‡ÀÀíÈ€ p÷ 6ÃÌ5 ÌU@ÎÎÿ&ß ²Ö ô@ ÀU t ÀÀEÀÿ4€tùÿÀ  ÿ�ÁE€ÿ@`ÀtúÿÀEÏÿ PÎ÷ÿæBÀß bÖ 4Àt4`ÀÖ~€ 4 4ŠÀÂ~ðÕ&ý Ö ÷  ÂÌ5ÎÎÿ&ß ²Ö öÀ˜~ðÅÌ5@ß .÷ bÂÌEH À 7v~ß ÜA÷•j_~w¤Ãw ’ÃDÌ57�ŽÇw |ÇD÷ ,ÆÌ5ÎÎÿ&ß ²Ö ö÷ Æß ÜAw^Çw LÇDÃþÿ÷ øÅ00ÌUßþÿw,Çw ÇDÌUÌ5ß L<ÌE@ß .wÇw ðÆ@à à ýwæÆw ÔÆÀ¼m7/7/7/7 / — #�WpÁerlDôÿÿ �WpÁeþptô¼môØ.ÀÒ.07Ê.Ìß L<‚ Ú õúSøÿý øÿ @øÿóó‚ õeøÿð·¤.wNÆw <ÆDCLää @ tÁÁEÏÿ@PÀUAË5ÂUÂU¤wÆw öÅÄ�÷ ¦ÄÌ5 ÌU@Μÿ&ß ²Ö ô@túÿÀEÏÿ@] ÀU ÷€lO@t 7`Ow^O@t7POæ�ÀVtøÿtþSÈ L<Ã5ß ÜAw|Éw jÉD� t,TøWß 4<ÌUß LFÜ÷ ÀÆ×-R0¼m ÷U@B0ÎÎÿæ¼mß ²Ö ÷ �Æ»÷ ŠÆÀ,0ß ">Ì5ÌUß ¸;ªÌˆ00ôôÀ03t tw÷‹B!7ŠËw ,ËBõþÿøÿÄžZ÷ ÖÉô #ãÄe÷Œàó ÃeúÄ ‡óó óÃåóŒtt_øÿþÿwÒÊw ÀÊNfß ì<Ö Ì5ÌUôÿ &@�tþSÈ Ö ß ò=wˆÊw vÊB N¦ß ®<Ö À N¦ß ì<Ö Ì5ÌUôÿ &@�tþSÈ Ö õ 'N¦ß ®<Ö À ÷ 6N¦ß ì<Ö Ë5Îß L<ËUóÿ æ@�tþSÈ Ö Ä N¦ß ®:Ö ß ò=wÈÉw ¶ÉDÌEôÿ &� tþSÈ Ö Ã5ß ò=ß ýÿô0 ÷• 3ˆÀwtÍw bÍÀ�"ˆAAœ  À÷ wPÍw >Í÷‹þ‡À÷•ï‡ w2Íw Í ! À ð ŠÀ?|ˆ„ ò÷•¿‡ÀÿÿwÍw îÌ÷ Äÿ#ÄÜm!üp†ô‹ÀÀ 0ŠÀ´Š4 4 7!D8ƒ7>8 ÄeæÎŠVß ÷•a‡ w¤Ìw ’ÌÿMT"÷ êÈ÷ ²!2ÞZË ó ÃeøË õ5à#÷ Ë÷ †!ÄžZô  Ì &ü Ö ÄeóÞZ3  3ÄeÃeó@ÀEÿÀ%ð · r‡÷ ‚‡ ÎèÀfß �Ö · Z‡· !À !À%<Wõ5àS÷å<ö · ö · î ÷ tÊ÷-è ê ÷-Þ à ΚZß .÷5ΠΔZß .ÂB[— *_ †—¬²ŠÂeôß Ü Î^Šföÿß ¼ Ö Ä _4 wlÏw ZÏÀ8Š· 4Š’ÀEÿwTÏw BÏÎ Š· Šß ø!ÿÿ÷•jë‰w.Ïw ÏCà × ÀÀ ŠÀÄ ÷• ¿‰ wÏw îÎD̵óE€ÎÎeß .ÎÎeß .­ “ÎEýÿ&ß Ð6Ö ôŠw°Îw žÎD�­ ÀEÿŸÁrV7| þyfæ�Wp ATÉ fæ€tüSÈ –%ß Ü wLÎw :ÎD�ÀEÿŸÁ~V7, þy· r6 fæ�Wp A TÉ · V6÷•³ˆ fæ€túSÈ –%wâÍw ÐÍDC× € ß Ò ð‹›÷•oˆ÷‹jˆ ô­`ˆ Àtýÿô­Qˆ Àt½w °½CË õ"‡ÄsmKíÃeóþÿóüÿøÃeæ w~½w l½BD-‚Ì Äeø5!ƒþÿmüÿ€ tmüÿ€@m-*4cüÿÌ &Äe4þÿ4üÿö€@m-Ì tíLmõ  ´ÂLÄeõówä¼w Ò¼Î4ß t Ä 0÷ Ìï ß 'Àìwðèwüÿ÷ °ïà 2ŠÀÔwüÿÀ 0 ŠÀß Ê•2Ë•3ô•Ì•ô€wl¼w Z¼DÎß pJ3- &ô 4 3 ó5€óE€ÎÎeß bÎß šJ׬óUÎæÎeß æÖ Ó7 Žv7ŠvÎß Žô€vÎß šJwä»w Ò»DÂ^vÎß pJ׬ý À%/Ä’&&ß ¼ Ö × /ý ù÷‹Œà _6ÀEÿŸÀ%@÷•÷‹ß Ü _6Î@&ß ž7Ö À óÂHÀ× / à ÷‹Ë‹— VÀ†Ò�ý ð— VÀ†Šû× /ý ù÷‹�‹Ò7 ¤‹7 ž‹÷•Œ‹5 øÿÎ& ß HÖ 7€‹5 öÿ÷ x‹*õ öÿNöÿß LÓ÷ ÒÙ÷ n÷‹ó�1Â[— 4[†ò „"Âeõ÷•Ñ� Ãò_× rl †ó Ä,÷•³�Ãe ðƒËÅÎß Ü ƒ2 Îß LÒw ,ÒÄB[!*_†?-Ž�Äeö÷•ÑŒÁÎŒ1,÷ ¶À Î&�&ß x!Ö wòÑw àÑÄÚÀ!æÀ †æ�ß \Ö ÷eøŒówÊÑw ¸ÑÀèŒÀE7 �÷ÞŒ�÷ÚŒ�ÀÖŒ€ ÀE€7 �wšÑw ˆÑÄVŒ÷‹D�ôEÌÕß Ü wvÕw dÕÎÒ�ß R6Ä Î†�&ß ^0Ö wPÕw >Õ æ,6ß æ3Ö Ä Î^�&ß ^0Ö ß Ü w"Õw ÕNß 0Î@&Îeß HÖ @&ß ®:Ö Î@&Îeß TÖ tÀlÀe@Àe5 !@õefß \Ö õe„ í ! Žfß \Ö õe„ òÎß L×ÄŸ¬’Ä­ý‘÷ ì À 7‘í‘7‘ë‘w,×w ×ÿ�Ý‘†’À‚’ð�Ñ‘w×w ×÷ ”Ýw×w òÖÄ`’!ÄÄ ÷ ˜ À  7‘N’wÚÖw ÈÖÎæ,6ß æ3Ö à 4Îß fJÎŽ‘æß ¼ Ö Ä ÎbVß ,ÀEÿŸÀ%@÷ < À ÷åF‘÷XÀ:‘÷6‘7 J‘Îß ’ôŠÌÕÎß Ü ß Ü wTÖw BÖ æ,6ß æ3Ö Ä ÀEÿŸÀ%@÷•ß�ß Ü Î@&ß ž7Ö À ôÎÒ�ß Ü 7Ê�ß fJwúÕw èÕ æ,6ß æ3Ö Ä ß 8À ôEÿÀø�ÀEð4PÌÕß Ü w¸Õw ¦Õ æ,6ß æ3Ö Ä ß 8À ô�¼�  œ 5`öÿ @Àeöÿ&ß †Ö tøÿtöÿwZÙw HÙ æ,6ß æ3Ö Ä :ÀEÿŸÀ%@÷ à À ,ÌÅ÷N”ø“Îæ,6ß æ3Ö à ÷•¿“Îß Ü ÷‹µ“Àà“4,ß Ü ÷•›“ß ¼´ŠÌÕß Ü wÊØw ¸Ø÷ p À Îæ,6ß æ3Ö Ä ÷•Y“ ÷‹S“ ÎÀ“ß zô¸“ß Ü w€Øw nØ÷ &×õˆ-öÿõ„-øÿÎÌ“@Àeöÿ&ß †Ö Îl-æf-føÿföÿß ”ÆeÀ )ÎP-æJ-æL-æF-ß ”ÆeÀ Nøÿföÿæ0-æ*-ß ”ÆeÀ wöÿ-wøÿ-ÎZæšZß ²È÷ ‚Öwâ×w Ð×ÿxÿ<“wÒ×w À×ÿÞ,,“À(“ðÖ,üÿw¸×w ¦×÷ ^ À ÷ “º,À“7üÿ²,ΚZß .wP–× ß Zß ’Μ–Îí.–&Îeß †Ö Àˆ–Àí–?¼–wRÛw @Û æ,6ß æ3Ö Ä · `– æZ–&ß ¤*–%w$Ûw ÛÎæ,6ß æ3Ö Ä ÷‹½•Î*–ÎEðß zÎÎæ&ß ¤*–%wÜÚw ÊÚCBW-Â5Îæß ž7Ö Â5΀æß ž7Ö ÀÀEÿŸÀ%@÷•E•÷‹A•õ Îß ØÎß fJŽÎEýÿæß 47Ö ÷‹• ÷ ^ €ÀEüÿ �ôÎß Ü wBÚw 0ÚΞ•ß R6Ä À�•À 0 ŠÀß €6wÚw ÚÎv•ß R6Ä T̵÷•±”MÃ•× À•t 5øÿÀ•tùÿÀEþ5öÿõô”øÿ5 öÿà × õ øÿõÿÿöÿÀ ‚À xÞ+,è+ô+,è+5möÿæÞÀß †Ö À蘰¨üÿÎß L<Âe¢Ä Î(æ˜ß ²Ö –÷• ˜wPÝw >ÝĘÃB[× *_†Ë‹Ãeø÷• ã—÷ xïÀ ?‚˜7 z˜7 x˜7 l˜7 j˜7 h˜7 ^˜ ÿb˜ÀÁZ˜1`wìÜw ÚÜÎ˜ß \t&Àü—Àe?túÿÀEü€åà  ÀÀíì—Àè—Àe`ÎÞ—æØ—Ž`æÐ—ß 8–%À A·`Ä—Â ÀD— À`Àí´—õøÿê—Àà À &Žàß 4Ö „ ôNøÿß ê Îß êÀ— À`Ãr—Àà À Ä &Žàß 4Ö ô€ À Ä ß d÷wÜw üÛÎß –)wüÛw êÛÎß –)wêÛw ØÛCÎB—ß R6Ä >̰÷• –8÷ê–~–÷æ–z–7Šl–̵ × ß I ß œI7X–7 ÃeöÂ,U— 2U†€”À ÀmÚš ÷ÀÒš0 ÃÀ× 6À† ûÎß Ü Nòÿß Lœ7 >œ7 8œ÷•&œÎß Z7Šœ÷‹œ_(&×-€œ÷mzœzœ7 tœ÷ pœ˵ ׬÷•ç›_(&×-Pœí÷•Õ›_(&À@œÀe?túÿÀEü5ðÿÀ.œÀm,œÀe?túÿÀEü5îÿÎfîÿfðÿß 8–%À _(&7 >œ÷ øÎß @îÿÀe$Îß êß êÄ À%À\› aß dó fîÿ& ß 8–%7 @›À¨›Àe7:›÷ž›0›Îß Zwðÿ–›wîÿ’›÷Ž›ÎŠ›æ„›æ~›ß 8–%@òÿ@ôÿ AöÿÁ @àÀeüÿ5øÿÀŠ›pøÿúÿNöÿføÿß \Ö @ôÿ @öÿõ öÿÀ õeøÿ@øÿ&ß \Ö €’&„ ß Ö Ò‹÷æÎÿÿføÿÎeß \Ö ó5÷‹nš÷œ fšó5÷œ YšÄÃÀÀ× ÚÀ†Ë5÷•°-ƒÃU €í  ÃUÃU €àTõßRõ÷•z À TõVõÌ5À÷‹[À ÀÀPRõwP±w >±Ä@L� ß Rõ*ß5Zõûß5€ÄPõ×­·ŠÀ� À% ÀÀ ° Æ—7Šú*!¨—ß5@Põó•ÿÿ¾—ÌU÷•Ú×­Ö7ŠÏÀÀ ° Æ—7Æ7мß ˆ>ôTõÀÀ 0Æ—÷ Œþw¨°w –°Nß lUÎf樗æSß ¨@ÆeÀ†B 7kwt°w b°Nß lU f樗æSß ¨@Æe7 ØjwH°w 6°D�Î÷ÿæBÀß –Ö À ðÆ—À ƒ ÁpÖ—w°w °W­÷•…j6A�WpÁeæ—DôìWßU@0àôÕ ôµô•ô•ôôEžÀ 0 ÀÀÀèžÀÁÜž1àúÿ@úÿ&ß \Ö ÀÈžÀÁ¼ž1àúÿ@úÿ&ß \Ö À¨žð"Àå ‚À xV"j"j"j"j"j"j"v"j"j"j"÷ À Äe€ÀlžtQ7$ž÷ Ìwôâw ââ7Š¡�÷NUº�Îæ6ß æ3Ö à ÷‹ƒ� C릧 z΀æß ž7Ö À ,Îß Ø7 d�7 b�÷ÀV�÷R�÷•B�Îß ’À>�Àeðÿ && ß 8–%7 &�t7�7Š�Îß ’Îß Ü ÷‹� Àw<âw *â æ,6ß æ3Ö à _6&Îÿÿß ì<5òÿÎ@æß ž7Ö À _(&@òÿ5 öÿ5 ôÿÎ�ß <5øÿ%µ öÿ ÿÿ_(&÷eøœNøÿµ øÿß ø!ÿÿ_(&‘µ ôÿW-ôÿþ÷•Yœ_(&Ä æÔõ5ôÿ†ÿ÷ &°w†±üüøKîWÐNOnOøWˆJKK8KÂKüüŽN°NìÐNOhQœQìúQ.RìDRì hfÿ`õ ‰ ÿ /etc/initmem = %l no clockiinitNo space on dev %d busy i out of inodesno fsno imtno inodescdlos|L^^„vpanic: %s swap errorno procsout of swap spaceswap errorout of textout of swap spaceþ÷øùúýka6 = %o aps = %o trapcore@!:&0(r)„).*>+J'\*&,¦.D#,/®-¶,†/È/”(00f+0!@102ò-.È-0!0! 00!@!FBþA0!|.-n.B3ž-Îß <ÀEÀÿ5ÃeÄÌÄÉÄÆÄÃÄ ÀC@tTUÀ 5` @t,TU Îß <Á 1¨ÀÃe„ î÷B îŸ@tVUß !×­»ŸdÎ æ´Ÿß x!Ö ÷ À ÷ 8÷‹™ŸõUÀ��Ÿ5 ÀŠŸÁ�: Áedp�À�/ ·Š+ À%%7Š! ÀhŸ°Š÷ NöÎìôæ4Uß Ö @Àeæ>Uß Ö ÃxÿÃ'xÿ÷ ØâúÎHUß ,wfäw TäθÀß òý wPäw >ä÷•dûžw@äw .äw6äw $äÄB[!*_ †5-N&ß x!Ö Äeðwäw öãDt�£ 4 Ì•÷‹ž97Š˜9Î8[ß .wÔãw ÂãÀ†žœÀ ð5ÀÀ w®ãw œãÂ`ž„œ2ŠÀ ÀÀ+7Ššô‹˜ Φÿ&Îe˜ß æÖ ô-d#´Š˜Nfß =Ö ÂÎd¦&Îeß :–%4 Îß ì;4Š˜Îe˜ß b´ À apô•šw@ûw .û Nß  ô‹™Î¦ÿ&Îe™ß æÖ ôô•š€_È Î`Yß 8Žß ô Îô ÎÎÀ a5ÐòÿNòÿfß ð Ö ò â€Àe€ÀeÀ Ó† ù´Š™5 òÿ5 øÿ5#øÿNNøÿÎefß â:Ö Â5 öÿW-öÿ2µ òÿ@öÿÀ €`È &5 ôÿW-ôÿd@ôÿt5,¤d@ôÿt5,¦dòÿµ ôÿéδ ÎÀ apòÿÐ-ÎdõeöÿÊÎß €<-Îdµ øÿ¯ô ÎÎhYß `4Š™Îe™ß b_¶ wèùw ÖùNß  ô‹™-Îd δ æ Îe&ß x?ÆeóÅ3CËÕ ³Šô‹ μÀß ò ææ ¢ß "–%À¢ðÕ÷ æø´Š w4çw "çDô‹ ôŠ &æYß H–%wçw ôæ÷ îâ@Àe 7X¢W-Îæž¡ß x!Ö @ÀEÿÀ%ð_Ž _!W-NÎeþÿß <À% ð÷ ð¡_!@ÀEÿÀ%ð_Þ W- AÀº¡ t@-9†@Àe ß ¼À 1Κ¡Îeæ�¡æŠ¡ß 8–%À $÷e~¡À¡Îeß êÀð  Áè @l 7!V¡_!à ÎæÎeìÿß 4Ö „ ñ7й @ ‚À xŽ¢   ² ¾²² Ä æ� ß x!Ö @Àed7�y ÷‹u eõENÎeþÿß <ÀEÀÿ5õ !Nß <õe"nV_dhsgtty"èV_pcopen",L_pcclose"xL_pcread"¬L_pcwrite"úL_rootdev#Y_swapdev#Y_swplo#Y_nswap#Y_canonb$²\_coremap$²]_swapmap$z^_rootdir$B__lbolt$D__time$F__tout$J__callout$N__mount$Æ__mpid$ä__runin$æ__runout$è__maxmem$ê__lks$ì__updlock$î__rablock$ð__proc$ò__text$Úc_inode$¢d_lksp#Y_icode#Y_mfree"6H_printf"8_min" _panic"`_sureg"_cinit"0C_binit"Î>_iinit"¦_iget"ð _newproc"_expand"_sched"´_est¬ ËUË•C:ÂèþÀ�š Àå 1‚À xR(RbRÈQß•âþß ˆ>$´"ß‚´"Ö‡"" ÀEÏÿÌ5ÁÁ @PÀUA �÷•> €Àe-¿‡¸w@³w .³D�ô‹¾—÷•­m ´Š¾—À 0 Æ—À ðÿÿÖ—w³w ü²D�4о—õ Î&ß ÖRÖ Î&ß ÖRÖ wÞ²w ̲÷‹È ß5€RõÎæD_ß æÖ ñ@t@]ÀU`Rõw¢²w �²D� À ÀeÖ—ô"‚ô"†ÌUß ˆ>(Ì5ß ²>ß ˆ>Ì5€ 4 ÷ ò°÷ @ 7: À6 07. ÷‹" ÷ ÷ À°w ²w ²Ä `� 5øÿ@øÿÀ Æ—@øÿð‹¾—ß5€Rõ ÌU7àß ˆ>â@øÿtÁEÏÿ@PÀU@`-p11$(“_lpcanon"^R_lpoutpu"ÀS_lpstart"xSi"Ð6_maxfp$üp_timeout"B:_buffers$þp_swbuf$�_raflag#”V_iowait"ò=_incore"®<_geterro"ÜA_notavai"">_iodone"T>_devstar"2?_physio"t@_partab#6W_maptab#žV_cfree$2�_sgtty"€B_wflusht"ÈB_flushtt"@C_canon"šC_ttyinpu"nD_ttyoutp"[_rablock$@[_proc$B[_text$*__inode$ò__lksp#>T_icodeisa6$Úm_putchar"Ö_printn"–_readi"Z_bmap"ª_breada"ø:_iomove"_bawrite"4<_bdwrite"<_max"Ð_cpass" _passc"J_file$Üm_issig"¬!_malloc"¾G_xswap""_swap"x?_xccdec"L_xfree"È_xalloc"_sysent#TU_psignal"x!_trap1"!_psig"Ò!_nosys"0!_nullsys"@!_signal"J!_core"Œ"_exit"T&_schar"6_namei"æ3_access"ž7_rexit":&_fork"0(_read"r)_write"„)_open".*_close">+_wait"J'_creat"\*_link"&,_unlink"¦._exec"wtch"*_u!À_savfp"r_incupc"�_display"Ö_getc"_putc"Z_cfreeli$ìW_spl5"(_backup"¼_regloc#,U_fubyte"ø_subyte"_fuword"<_suword"\_copyin"˜_copyout"¤_idle"ä_savu"ò_retu"_aretu"_spl0"_spl1" _spl4"$_spl6",_spl7"0_copyseg"4_clearse"d_dpadd"†_dpcmp"”_end$B“_edata#êW_main"�_ldiv"H_lrem"T_lshift"brsave"rrretrn"€badtrap$>“_bdevsw#úS_nulldev"ü_rkstrat"øK_rktab$#DT_mfree"H_printf"_min"ì_panic",_sureg"æ_cinit"üB_binit"š>_iinit"r_iget"¼ _newproc"Ò_expand"ê_sched"€_estabur"8_nseg"\_buf$rl_bfreeli$¼m_bread"®:_getblk"ì<_bcopy"_brelse"L<_alloc"â_getfs"Ò _sleep"²_wakeup"._clrbuf"~>_free"¨ _bwrite"¸;_ialloc"@ _iput"Ü _ifree"˜ _update" _iupdat"0_prele"fJ_bflush"*@_nblkdev$Òm_nchrdev$Ôm_maxip$Öm_itrunc"Ø_maknode"z_wdir"¼_writei"’_panicst$Øm_k Îß šJ·Bv6×, óU€Îß šJÎæÎeß æÖ Þ7 v÷ vÎÎí v¦ß Ö 7üuàÎß ÆÎß šJó5ÄóEÎÎeß b»wD»w 2»D̵ ÌÕÎ&ß æÖ ôÌÕw»w »DÌÅ̵ÌÅß bwøºw æºW­÷•gu/A�WpÁe—Có•ó•ÀLuð ÀBuðÄpÿõ‹@�tÀe8ý3óó•ÌUCôU@w€ºw nºA�WpNÎe—ß üBwdºw RºA�WpNÎe—ß hGwHºw 6ºA�WpNÎe—ß ¢Gw,ºw ºA�WpÁe—Dß úFô - Îe ß bwö¹w ä¹A�WpÁe—BƒÄËUÄ53Ž&ß ¢D'Îæ\ß pEÖ !a!zÄeàÿ! ó5Îæ ß pEÖ ÎÎe &ß ŽÖ À QÀÀe�\5øÿ ÀEÀÿ 4‚À x\FjF¾FnFvF”F²F¸FŠŠ(Ê‹&ÊŠ$Ê‹!΀’tüÿ&Îeß Ö ó5À�’ÁUøÿ@àÊÕŠŠÄÄ ŠÄ ó5 ÎÎe &ÎU€ß ŽÖ wÔ¾w ¾DôÅß úFwº¾w ¨¾B„òµ¦Ì Ö &ô5€"òµŽÎe ß 4× Àœ\ÀEÿÀP4 ÎÎE€ÿ¦æàFß v:–%òÕwL¾w :¾Dô ß ÎCÀ ô  Îeß 4ß ~À òw¾w ¾D÷ $Ô÷ ¤¼- 2 ß úFÎ&Îe ß æÖ ð÷ t¼æß pEÖ âß úFwÎÀ apÐô•šw®ùw œùÄÆ_!ä_†ô  5#ÄeîÎvYß `wtùw bù÷ ¤SP· žSÃÆ_× ä_0†ó *Àô‹š#ô‹™ ô‹˜ô‹›Îæß =Ö 4Ššô°Rœô¬RžÎ¦&ß :–%Žß ì;ÃeÍÄ¢d!"q†ÌµÌÕß dß šJÄe ï7 SÎÿÿß ^@wÄøw ²ø Ä¢d!"q:†5--5-)̵ ÌÕΦÿ&ß æÖ æ̵ÂÆ_— ä_ †„,µõÕÂeñÎ|Yß `´ŠÌÕS ô‹Äe Ä΄Yß `7!eƒ7údttÌ•´ŠôÿÿÎfÎeß |Ö fß â:Ö ÎfÎeß ˆÖ t€l5øÿÀeÀeô‹ mÎæYß ¾GÖ H÷ îÄB[!*_ †�ÀEøÿÀ%£)Äeð— ¦ÂÿÿÄB[!*_†�ÀEøÿÀ% ££­5øÿ�Äeæ— …Døÿ÷ –íôÅ æ&ß "–%_š@øÿô‹ Î&æ&ß x?ÆeÀ ,ôm´Š DøÿÎ&æ& ß x?ÆeÀ  Àetýÿ&æÊYß H–%ô ôÕ4Š_šÎÚTß ,wVîw Dî÷ |÷B[|ÎÀß òÎDß Âð{7 ì{à !2Âe— *_‡ÂB[—¢€œÀEþÿÀ%ƒ¬·´{ƒœ„ ã÷ ¨{·¢{÷ BìÔ˜{Ž ß ÷ 2ïòµòÅμÀß Àw®íw œí ÄB[!*_†Ì‹ÄeøÎæTu-†@@wxñw fñC@@m÷‹¬*ÀQÀ]¬À5#õ Î&æü«ß ˜Îæð«&ß ¤–%Ä ÷•jÕ«%÷`Ö«ÎæBÀß †Ö ÷àÈ«õ Àà À ÷ ”�öÀà À „ ’ß JÀ ówÎðw ¼ð7Š5¬ÃþÿÄx«õ "÷ Þ À tÌ•t�÷ 6ï÷‹LF7ŠFFÎ6[ß .÷ .÷ ¬ À θÀß tÌ•t�÷ úî÷ ßþÿwRðw @ðB ÄB[!*_†-÷‹êEôµ7ŠÜEƒ 4 Ì•·Š€BÄeçà õ8[Üwðw îï ·ŠªEΜÿæ6[ß ²Ö ÷ ŽîÂÿÿÄB[!*_†£ ôµ­5øÿ�Äeì— ÿÿ·Š`EΜÿæ8[Ù÷ 6îDøÿ...bin;dev>etcKlibXmntYtmpZusrÌunixì@ ð€&Ð 6÷ –% ‰.../w ¬Î æß rÖ  æß 2Ö 7È÷ úÎæ4æ¶ß P–%5øÿÀ%÷ Ú÷-È ìÎ–ß ×-¸÷ ÷ æÎß ÉwFw 4Î æ6ß rÖ 5öÿ÷ ŽõTøÿÎß 5öÿ÷ v æß 2Ö 7.÷ `Îæ4æß P–%5öÿÀ%÷ @÷ .íÎ æ6ß rÖ 5öÿ÷ "õ-èøÿÝ÷EÿŸâ×-Þ@Ö÷ 4÷ wšw ˆÀ ð• Î–Ž æ æß ’–%÷ Jwnw \õÿÿøÿµ øÿ@øÿð‹6øÀ^@møÿÀeÀ%ÿ÷ ¢ÿÀH€ 5öÿõ öÿ @öÿ@møÿAöÿpœ  õ öÿñ@øÿÀm€ 7@øÿð�>þ õ øÿõ øÿ @øÿAøÿpœ6 õ øÿówÚf…wä‰î†w¨ wªf…@‰†w’ w”f…w¸w´‰ò†wrwvf…@wœw˜‰ø†wPwTf…w„w€‰þ†w2 w4f…@wfwb‰†wwf…@‰7†ÀÿÿF…‡Õ @…&æ¦äHÅåF‚ƒ„…‡ÿÿ ‰‰‰‰‰q.Z..@tÀeÿÀUDm× zÀ†  úDmW-€ Äå€õå€â#óõ  À€@ítÀU"Àe€ÿ#÷ �þ w$ýw ý@Àetùÿwýw üüÎæ¶Kß ®:Ö Îÿÿß ì<÷‹¡·ÎnTß ,Î&æß –%Îß L<7\R÷vKTR4Š˜4Š™4Š›7œ¾Q7žºQwžüw ŒüNß Ò ò‹˜ Φÿ¦Îe˜ß ²Ö ôò €À €`5øÿõ øÿ² NætTß Ö ÷•ý¶ 3ò !²Š˜Nøÿfß ®:Ö òÎd¦Îeæß –%ß L<2Š˜ŽÎe˜ß .Nøÿfß ì<Ö ß ~>ò•šwØûw ÆûNß Ò ô•šô‹˜ Φÿ&Îe˜ß ²Ö ô-d#´Š˜Nfß ì<Ö int &lpopen, &lpclose, &nodev, &lpwrite, &nodev,rf rfio; br5 .globl _rfintr rfio: jsr r0,call; _rfintr &nulldev, &nulldev, &rfstrategy, &rftab, &nulldev, &nulldev, &rfread, &rfwrite, &nodev,tc tcio; br6 .globl _tcintr tcio: jsr r0,call; _tcintr &nulldev, &tcclose, &tcstrategy, &tctab,rk rkio; br5 .globl _rkintr rkio: jsr r0,call; _rkintr &nulldev, &nulldev, &rkstrategy, &rktab, &nulldev, &nulldev, &rkread, &rkwrite, &nodev,tm tmio; br5 .globlÿÿ�±…fAñ @Àe7æ1@‰ð‡À �±…À 1 @Þ± �…fA7º‰ö‡  �…Ñÿÿ�±…fAñ &÷ €ø9�± �…&fA÷ �€…@Àe&7†w‚·ã|@‰±ñ‡fA Ñ ü�…AüEú‰www ÿ†…&w ÿÀ€U…‰‰¶w w&w Nÿ€Àw Dÿ…‰ÊT¸0‰0‰0‰‰ÀF †‰À‡‰Î‡@‰" ‡À ÷ äö×-àdfò‰‰ ‰À‰w RÀ¸w Ö4 ‡ ‰Î ‡‰Î‡7ª  ‰À‰w (À #‰‰ÀF ô‡áÀЉÀ€‰"ë‡À æ÷ rõÀ$"dfðw :ì‡ÁF w ,:‡ � W¤ õ Ñ• W N ïW V ì†÷À�Pw ¸LÀ:‰w ì:‡ ùw Þ:‡ UöÁF w Ì:‡� ø!Š ‰F ëÀö‰ ‰$£L`B~FdUÄw`ÿ!ŠÀG w j@©‡À w Þ4!ŠÀG w P@œ‡w h@‡w À4øw Ø4Àš‰�Á @‰Á ü…/dev/lp/usr/lpd/lock/usr/lpdfA7ì‰Ê‡ �…ÉÂÎd¦&Îeß –%4 Îß ¸;4Š˜Îe˜ß .´ À apô•šw@ûw .û Nß Ò ô‹™Î¦ÿ&Îe™ß ²Ö ôô•š€_” ΈTß Žß Ü ô Îô ÎÎÀ a5ÐòÿNòÿfß ¼ Ö ò â€Àe€ÀeÀ Ó† ù´Š™5 òÿ5 øÿ5#øÿNNøÿÎefß ®:Ö Â5 öÿW-öÿ2µ òÿ@öÿÀ €`È &5 ôÿW-ôÿd@ôÿt5,ô_@ôÿt5,ö_òÿµ ôÿéδ ÎÀ apòÿÐ-ÎdõeöÿÊÎß L<-Îdµ øÿ¯ô ÎÎ�Tß ,4Š™Îe™ß ._‚ wèùw ÖùNß Ò ô‹™-Îd δ ÎÀ apÐô•šw®ùw œùÄ[!4[†ô  5#n6n ð€&Ð 6÷ h –% ‰console klin; br4 klou; br4 .globl _klrint klin: jsr r0,call; _klrint .globl _klxint klou: jsr r0,call; _klxint &klopen, &klclose, &klread, &klwrite, &klsgtty,pc pcin; br4 pcou; br4 .globl _pcrint pcin: jsr r0,call; _pcrint .globl _pcpint pcou: jsr r0,call; _pcpint &pcopen, &pcclose, &pcread, &pcwrite, &nodev,clock kwlp; br6 .globl _clock kwlp: jsr r0,call; _clock lp lpou; br4 .globl _lpint lpou: jsr r0,call; _lprap trap; br7+4. / power fail trap; br7+5. / emulator trap trap; br7+6. / system entry. = 40^..globl start1: jmp start. = 240^. trap; br7+7. / programmed interrupt trap; br7+8. / floating point trap; br7+9. / segmentation violation/ floating vectors. = 300^./////////////////////////////////////////////////////// interface code to C//////////////////////////////////////////////////////.globl call, trap/* * Copyright 1974 Bell Telephone Laboratories Inc */int dhin; br5+%d. dhou; br5+%d. .globl _dhrint dhin: jsr r0,call; _dhrint .globl _dhxint dhou: jsr r0,call; _dhxint &dhopen, &dhclose, &dhread, &dhwrite, &dhsgtty,mem &nulldev, &nulldev, &mmread, &mmwrite, &nodev,/ Copyright 1974 Bell Telephone Laboratories Inc/ low corebr4 = 200br5 = 240br6 = 300br7 = 340. = 0^. br 1f 4/ trap vectors trap; br7+0. / bus error trap; br7+1. / illegal instruction trap; br7+2. / bpt-trace trap trap; br7+3. / iot t _tmintr tmio: jsr r0,call; _tmintr &tmopen, &tmclose, &tmstrategy, &tmtab, &tmopen, &tmclose, &tmread, &tmwrite, &nodev,cr crin; br6 .globl _crint crin: jsr r0,call; _crint &cropen, &crclose, &crread, &nodev, &nodev,rp rpio; br5 .globl _rpintr rpio: jsr r0,call; _rpintr &nulldev, &nulldev, &rpstrategy, &rptab, &nulldev, &nulldev, &rpread, &rpwrite, &nodev,dc dcin; br5+%d. dcou; br5+%d. .globl _dcrint dcin: jsr r0,call; _dcrint .globl _dcxint dco‰‰‰ ‰‰Ì>ÌÌÌÌÍÌ €@Añð&ø@øÃL7ó ø@ø—ôL>—ó BÀûÀe0#�‚ @ñððÁ$Ñ”× Lü‡õ ‚  ó BAñðú‚ ÷ ÷  üW L†Îeó B@ûÀe0�‡À$Àm¨÷ Ü€` $‡’ÃeÈ�¢9 È•0 $ƒ ŠöÈ•1‚ ÁªÀp÷ ¤€`0Š$À$ƒVõõVð‡/usr/lpd/tfxxxCannot create in /usr/lpd /usr/lpd/lfxxxCannot open %s Cannot remove %s /usr/lpd/dfxxxCannot rename in /usr/lpd /etc/lpdlpd/usr/lpd/cfxxxCannot create in /usr/lpd Copy file is too large pdp::::gok:$ ident /etc/passwdüÿðÿýÿøÿ‰"‰ ‰‰‰ ‰‰ …‡7 " f…A÷ &÷ À€U…‡f…A÷ …‡ñ @Àe7¦1@‰Þ ‡À À 1 @Þ± ‡wf…‰ÀEÿwf…wnwj‰ä †wæ wèf…wTwP‰ê †wÆwÊf…@w8w4‰ð †w¤w¨f…@ww‰ö †w‚ w„f…wwþ‰ü †wb wdf… ‰¦BR‚wNf…wÒ‰ †w2 w4f…@w¸w´‰ †wwf…@‰7° ÀÿÿF…‡Õ @…&æ¦äHÅåF‚ƒ„…‡7l‡fÁdWp3Áe @7VÀE€�‡7 Œ ÷„ ¦ðWð€&øføæÁ$ 7 l @ñð%· ` Àñó@ôÿµ ôÿ0ІÎ†æLß ²Ö w~w l÷ >A1� ÷ 2A1� ÷ &A1� Îêfß òÖ À @áw6w $÷ ¾ @Àeöÿß  Nøÿß ˆ· ¤÷ 5ôÿAôÿWtõÿÀ r Áe0@wðw Þ÷ l @Àeôýæ² ß ÞÖ wôýR õL ôý÷ F D & æ: ß Î–%5 öý5 øýB@Àeôýß À% à *Ò�ñŠBÄÄ €”À%:ù× ø€”À%:× 0ø× 9õWp Á`ÁeÐÿDí5!É Àw,w €wª DÄeÀŸ  · š  %ß ôwþ7 † 7 €ׯ| -· t · r ÷"7 j  .÷ ƒÁÌBÞ üJðdFo@xvf€ec,sül Ó•-÷ C r f÷ ðÿ€Àe0�‡•à •1à /Áæ Ò‹ƒ D~'¾   ÷ f v÷ öÿ€€LÀe0 9Àe�‡Â  ÷ z– ÷ p‚ƒà&æ Ä Ãmx ÷ v ß Ã~Ä Ž”ß à Î ß Ã~Ö „w¦þ7 J  ÀŸ@ · < Àå0 ‚· 2 Wp `ñÀe0[ƒÄeÓ•?‡f…À ÷ ,À P�·  ÷ ü ÷ @…‡f…÷ …‡Àà Àå"7€ÀÎ € ‰Æ ÷"Ä ÷¼ ×-¶ ‚÷® ‡f…@‰†wì wîf…@÷ wÞf…÷ wÒf…w w‰Ì †w°w´f…w@Àe7‰Ò w�f…wò‰Ø 7‡Aß 5øÿõ øÿ ζføÿß ¤Ö 5öÿõÿÿöÿõ öÿÎh ß `C5 ðÿ5 òÿÎæ" fß ¬–%5ôÿNôÿæ" föÿß B –%umôÿðÿW-ðÿõåðÿµ òÿW-òÿ�΄ ß `ÕNöÿß rNøÿæFß ²Ö NøÿæUß ²Ö · l wÚw Èõ"øÿuöÿ5 ôÿ@øÿµ øÿH�@öÿµ öÿ’5 @øÿµ øÿH�µ ôÿï@øÿµ øÿÈ• NôÿÎeæ"æ ß B –%wpw ^ õ"ðÿÎ"÷ 0&ß œÖ À _Fõœ ðÿ5 ôÿ@ôÿœ¨ 5øÿ@ôÿµ ôÿp�øÿ†ñ5 öÿõòÿõ òÿ @öÿµ öÿ@mðÿ¢:öò@öÿµ öÿ@mðÿ’5øÿÀ%:@ôÿµ ôÿp�øÿ†ì@ôÿµ ôÿð•,†5 öÿ@öÿµ öÿ@mðÿ’5øÿÀ%:@ôÿµ ôÿp�øÿ†ìÀ X8 ð€&Ð 6÷ –% ‰w d 5 ðÿÎÀ ß 7ì ÷ è ζæÞ ß ¤Ö 7Ø ÷ÿÿÐ ÷ Ì ÎÐ ß `÷  ÷ ºW- ß æõ _’õeuøÿ@Ÿøÿ5ôÿW-ôÿ+W-ôÿ- uôÿîÿµ øÿý‹øÿuîÿðÿÝuðÿîÿW-îÿ+5W¯øÿ/W-îÿ- NøÿæFß ²Ö · 2 ÃÎì ß 5òÿõ òÿNòÿføÿß nÖ À NòÿæFß ²Ö NòÿæUß ²Ö · ì  føÿß ŽÖ 5òÿõ òÿNøÿæü ß `Ö �Nòÿß æNòÿß rW-îÿ-Nøÿß ( 5òÿõ òÿNøÿæ ß `Ö _p÷ „ !Î ß 5òÿõ òÿNòÿæf ß nÖ Î. ß `ÎR ß (  æT æJ ß Â–%Î: ß ( w¦w ” ÎX Ö Îæ@Uß ìÖ 76UÎ2Næ0NæÊYß H–%ßîô®ÿߎÿÃ>TË ÎdTß ,Îß <À%ÿÿM÷úT÷ìôU÷U÷•îT÷ÕéT÷B[ܹ÷ ‚ÿMÒT÷ Ž<÷ (8÷ üÎæ¸Mß ¼ Ö 7 TÿÅTÎæ Mß ¼ Ö 7¦¹ÿÅ ¹÷ (À Îß ê÷®¹÷¸¹÷ Î& æDTß ¤–%Ãe¤÷ žwšþw ˆþÀL¹ ÄjÀàÿ× °ÿ†€`ùÀ.¹íÄzÀÀÿ× �ÿ† Ó5ù³àöwHþw 6þNß \&f÷ Ö &f÷ Ö €e€eÀ% @@m@mÀeÀ-¾S÷• ³¸Àÿÿg ÃjÀÂzÀW-€ ÒÄe€õå€óõ  @tÀeÿÀUDmÄW-€ ÒÄe€õå€óõ  ÀeÿÀUDmÄW-€ ÒÄe€õå€óõ  @tÀeÿÀUDm× zÀ†  úDmW-€ Äå€õå€â#óõ  À€@ítÀU"Àe€ÿ#÷ �þ w$ýw ý@Àetùÿwýw üüÎæZPß â:Ö Îÿÿß =÷‹m·ÎFYß `Î&æß :–%Îß €<7ØV÷PÐV4Š˜4Š™4Š›7œ:V7ž6Vwžüw ŒüNß  ò‹˜ Φÿ¦Îe˜ß æÖ ôò €À €`5øÿõ øÿ² NæLYß 8Ö ÷•ɶ 3ò !²Š˜Nøÿfß â:Ö òÎd¦Îeæß :–%ß €<2Š˜ŽÎe˜ß bNøÿfß =Ö ß ²>ò•šwØûw ÆûNß  ô• æß æÖ ð÷ PÀÄ´\Îß 4— ÿóŠ5øÿÄ´\ÀÀe5!øÿ6†Ž„ ’&ß ŽÖ ôó5 $­ÿÿ\— #!´\ÔƒÄ Ò— @Í— Ëò‹v[‚¬v[ó5­þÿ\‚œv[Ä ”�!²]À†µÀwÁw ÁBC„ÃE€ÿÀÀ% Ä5à Ä5 ƒ¬ƒ¬ƒ¬ÎÎ¦ß ~!Ö Žß tC8—"Žß tC1Ä5× A× ZÃe Žæß ŽÖ Ä5 × ×  Žß bŽæÿß ŽÖ À ²ŠÄ5Žæß pEÖ Žß úFwDÀw 2ÀC@ÀE€ÿ!ó5 _ÜF! ó5 Îæ ß pEÖ óµö_ÜFó5%Áö[72 þy Ä( Ä)Ä!Ä^ÄH À 7B~ß B÷•j+~w¤Ãw ’ÃDÌ57�~÷• ~w‚Ãw pÃ@ÀeôÿÎß ´B÷‹í}ÄX~Î&ß �Ö ÎÄe&ß �Ö ÎÄe&ß �Ö w:Ãw (ÃÄ$~ß p7~Äeß p7~Äeß p7~ ß ´BwÃw îÂÎ(~ß †6ÀÀEÿŸÀ% ÷•Y} fæÁœWp AâXÉ –%w¸Âw ¦ÂD÷ RÁô Î&Îe ß æÖ ôß tC÷ $Áw„Âw rÂÄâ“ÀeÀE× ú–‚ËB÷>Ãeö ÂÚXÊ „ Âe ú7/w@Âw .ÂDÎeß 4À øÎe ß 4À øß bÎe ß bÃþÿ÷ ¦Àß 4À ú4ŠßþÿwæÁw ÔÁC÷ €Àó‹ óµ XÎt 7ÜSwÚS@t7ÌSæÌ“ÀútøÿtÄXÈ Ö ÷ 6ÄÌ5Μÿ&ß æÖ öÌ5@ß b÷ ÄÌEHÀEûÿwVÅw DÅ÷ øÃÄ2!lrÌ5W-ÿÿ5-  ÌUß V>ß ì;åæ÷ ¬Ãw Åw úÄDÈÃ5_B÷5z_BÀÀmnÀ ‡_BÀÔÀeÀE5øÿÀtúÿÀEüµ øÿ_BÀÀm:túÿÀEüAøÿÁmž ‡ÀÀ픀 p÷ 6ÃÌ5 ÌU@ÎÎÿ&ß æÖ ô@ ÀU t ÀÀEÀÿ4€tùÿÀ  ÿ�ÁE€ÿ@`ÀtúÿÀEÏÿ PÎ÷ÿæBÀß –Ö 4Àt4`À¢~€ 4 4ŠÀŽ~ðÕ&ý Ö ÷  ÂÌ5ÎÎÿ&ß æÖ öÀd~ðÅÌ5@ß b÷ bÂÌEp PSþÿnofault$ÀSSR0zÿssr$ÂSSR1|ÿSSR2~ÿcall16_runrun _swtch _u!À_savfp"¢_incupc"À_display"CSWxÿfuwordp_getc"0_putc"Š_cfreeli _spl5"X_backup"ì_regloc backupjflgbflgfetcht00t01t02t03t04t05t06t07t10t11t12t13t14t15t16t17u00ôôÀ03t twŽÇw |ÇD÷ ,ÆÌ5ÎÎÿ&ß æÖ ö÷ Æß Bw^Çw LÇDÃþÿ÷ øÅ00ÌUßþÿw,Çw ÇDÌUÌ5ß €<ÌE@ß bwÇw ðÆ@à à ýwæÆw ÔÆÀlr7˜37’37Œ37†3 — #�WpÁe"qDôÿÿ �WpÁe®utôlrôT3ÀN307F3Ìß €<‚ Ú õÀXøÿý øÿ @øÿóó‚ õeøÿð· 3wNÆw <ÆDCLää @ tÁÁEÏÿ@PÀUAË5ÂUÂU¤wÆw öÅÄÌ“÷ ¦ÄÌ5 ÌU@Μÿ&ß æÖ ô@túÿÀEÏÿ@] ÀU ÷$èS@DÌEôÿ &� tÄXÈ Ö Ã5ß &>ß €<Ã5ß Bw|Éw jÉD� t,ÆX¨\ß h<ÌUß €FÜ÷ ÀÆ×-Î4lr ÷U@¾4ÎÎÿælrß æÖ ÷ �Æ»÷ ŠÆÀ¨4ß V>Ì5ÌUß ì;ªÌˆ0ÎJ_ß b÷5J%ÎD_ß bÂò_— Úc †—¬²ŠÂeô÷‹¾%7Џ%Îæ_ß b@ÀEÿÀ%ð@Àe 7˜†Âê…÷ ŠçÀ ÷ ¨ç—¬i²Š÷ 8Ç÷ ìÜw>Ëw ,ËBõþÿøÿÄN_÷ ÖÉô #ãÄe÷Œàó ÃeúÄ ‡óó óÃåóŒtt_øÿþÿwÒÊw ÀÊNfß =Ö Ì5ÌUôÿ &@�tÄXÈ Ö ß &>wˆÊw vÊB N¦ß â<Ö À N¦ß =Ö Ì5ÌUôÿ &@�tÄXÈ Ö õ 'N¦ß â<Ö À ÷ ÚN¦ß =Ö Ë5Îß €<ËUóÿ æ@�tÄXÈ Ö Ä N¦ß â:Ö ß &>wÈÉw ¶Éð‹›÷•;ˆ÷‹6ˆ ô­,ˆ Àtýÿô­ˆ Àtýÿô0 ÷• ÿ‡ÀwtÍw bÍÀ�î‡AAœ  À÷ wPÍw >Í÷‹Ê‡À÷•»‡ w2Íw Í ! À ð ŠÀ?Hˆ„ ò÷•‹‡ÀÿÿwÍw îÌ÷ Äÿ#ÄŒr!¬u†ô‹ÀÀ 0ŠÀ´Š4 4 7!À<ƒ7º< ÄeæÎb[ß 8÷•-‡ w¤Ìw ’ÌÿMÐ&÷ êÈ÷ .&2ÃN_Ë ó ÃeøË õ5à#÷ Ë÷ &ÄN_ô  Ì &ü Ö ÄeóÃN_3  3ÄeÃeó@ÀEÿÀ%ð · >‡÷ N‡ ÎèÀfß ÄÖ · &‡· Š%À†%À%<Wõ5àS÷å<r%· r%· j%÷ tÊ÷-d%f%÷-Z%\%Nöÿß €Ó÷ ÒÙ÷ n÷‹¿�1ÂÆ_— ä_†ò „"Âeõ÷•�� âd× "q †ó Ä,÷•�Ãe ðƒËÅÎß ƒ2 Îß €Òw ,ÒÄò_!Úc†?-Z�Äeö÷•�ŒÁšŒ1,÷ ¶À ÎòŒ&ß ¬!Ö wòÑw àÑÄÚÀ!æÀ †æÐŒß �Ö ÷eÄŒówÊÑw ¸Ñß w¸Õw ¦Õ æ`6ß 4Ö Ä ß @8À ô�ˆ� ÷‹�ôEÌÕß wvÕw dÕΞ�ß †6Ä ÎR�&ß ’0Ö wPÕw >Õ æ`6ß 4Ö Ä Î*�&ß ’0Ö ß w"Õw ÕNß dÎ@&Îeß |Ö @&ß â:Ö Î@&Îeß ˆÖ tÀlÀe@Àe5 !@õefß �Ö õe„ í ! Žfß �Ö õe„ òÎß €×ÄŸx’Ä­É‘÷ ì À 7‘¹‘7‘·‘w,×w ×ÿ�©‘R’ÀN’ð��‘w×w ×÷ ”Ýw×w òÖÄ,’!ÄÄ ÷ ˜ À  7‘’wÚÖw ÈÖÎæ`6ß 4Ö à 4Îß šJÎZ‘æß ð Ö Ä Î:[ß `ÀEÿŸÀ%@÷ < À ÷å‘÷XÀ‘÷‘7 ‘Îß ÆôŠÌÕÎß ß wTÖw BÖ æ`6ß 4Ö Ä ÀEÿŸÀ%@÷•«�ß Î@&ß Ò7Ö À ôΞ�ß 7–�ß šJwúÕw èÕ æ`6ß 4Ö Ä ß @8À ôEÿÀÄ�ÀEð4PÌÕ × õ øÿõÿÿöÿÀ ‚À x,J,,(,J,,5möÿ œ 5`öÿ @Àeöÿ&ß ºÖ tøÿtöÿwZÙw HÙ æ`6ß 4Ö Ä :ÀEÿŸÀ%@÷ à À ,ÌÅ÷”Ä“Îæ`6ß 4Ö à ÷•‹“Îß ÷‹�“À¬“4,ß ÷•g“ß ð´ŠÌÕß wÊØw ¸Ø÷ p À Îæ`6ß 4Ö Ä ÷•%“ ÷‹“ ÎŒ“ß ®ô„“ß w€Øw nØ÷ &×õ2öÿõ2øÿΘ“@Àeöÿ&ß ºÖ Îè1æâ1føÿföÿß ÈÆeÀ )ÎÌ1æÆ1æÈ1æÂ1ß ÈÆeÀ Nøÿföÿæ¬1æ¦1ß ÈÆeÀ wöÿ”1wøÿ�1ÎZæJ_ß æÈ÷ ‚Öwâ×w Ð×ÿxÿ“wÒ×w À×ÿZ1ø’À¶–J–÷²–F–7Š8–̵ × ß HI ß ÐI7$–7–× ß Žß ÆÎh–Îíú•&Îeß ºÖ ÀT–Àíæ•?ˆ–wRÛw @Û æ`6ß 4Ö Ä · ,– æ&–&ß Ø*–%w$Ûw ÛÎæ`6ß 4Ö Ä ÷‹‰•Îö•ÎEðß ®ÎÎæ&ß Ø*–%wÜÚw ÊÚCBW-Â5Îæß Ò7Ö Â5΀æß Ò7Ö ÀÀEÿŸÀ%@÷••÷‹ •õ Îß Îß šJŽÎEýÿæß h7Ö ÷‹ç” ÷ ^ €ÀEüÿ �ôÎß wBÚw 0ÚÎj•ß †6Ä À\•À 0 ŠÀß ´6wÚw ÚÎB•ß †6Ä T̵÷•}”MÃê”× ÀÞ”t 5øÿÀÒ”tùÿÀEþ5öÿõÀ”øÿ5 öÿà ŽäæâÀß ºÖ ŽÜæâÀß ºÖ ·lÞ̘ŽàæÞÀß ºÖ ŽÚæÞÀß ºÖ À´˜°¨üÿÎß €<Âe¢Ä Î(æê—ß æÖ –÷• ×—wPÝw >ÝÄΗÃò_× Úc†Ë‹Ãeø÷• ¯—÷ xïÀ ?N˜7 F˜7 D˜7 8˜7 6˜7 4˜7 *˜ ÿ.˜ÀÁ&˜1`wìÜw ÚÜÎà—ß �t&ÀÈ—Àe?túÿÀEü€åà  ÀÀí¸—À´—Àe`Ϊ—椗Ž`æœ—ß l–%À A·`�— À— À`À퀗õøÿÃv—Àà À &Žàß hÖ „ ôNøÿß  Îß ÀЖ À`Ã>—Àà À Ä &Žàß hÖ ô€ À Ä ß ˜÷wÜw üÛÎß Ê)wüÛw êÛÎß Ê)wêÛw ØÛCÎ—ß †6Ä >̰÷• K–8÷Ö ó5÷‹:š÷œ 2šó5÷œ %šÄÃÀÀ× ÚÀ†Ë5 ÃeöÂZ— Z†€”À Àm¦š ÷Àžš0 ÃÀ× 6À† ûÎß Nòÿß €ä÷•dÇžw@äw .äw6äw $äÄò_!Úc †5-N&ß ¬!Ö Äeðwäw öãDt�£ 4 Ì•÷‹>7Š>Îè_ß bwÔãw ÂãÀRžœ ¦& ß l–%÷¨¢<¢÷:¢7 0¢Nß ŽÃ"¢óÕ ¦æ Îe&ß ¬?ÆeóÅ3CËÕ ³Šô‹ μÀß & ææØ¡ß V–%ÀΡðÕ÷ æø´Š w4çw "çDô‹ ôŠ &æ²]ß 6H–%wçw ôæ÷ îâ@Àe 7$¢W-Îæj¡ß ¬!Ö @ÀEÿÀ%ð_ _J!W-NÎeþÿß pÀ% ð÷ ¼¡_J!@ÀEÿÀ%ð_!W- AÀ†¡ t@-9†@Àe ß ðÀ 1Îf¡Îeæ\¡æV¡ß l–%À $÷eJ¡ÀÌ Îeß À¼  Á´ @l 7!"¡_J!à ÎæÎeìÿß hÖ „ ñ7Š… @ ‚À xÂÖ< B H æN òææT Ä æ\ ß ¬!Ö @Àed7�õþÿøÿ÷ `¬Bòµ!Kò HŽÎe ß 4À%"ò��Áåæ—À rÀU@0�à€ÀeàßÿÿàÀtQà7QjAòÕ ÎÎE€ÿÎe¦æàFß v:–%òÕò —, ŽÎe ß b_øÿþÿw­w ­A�WpÁeæ—DôÕwô¬00N”\0îPQž\tR¦RS¨\¼J4KPKlKöK00¬PÎP tR¦R U@U žU$VHVnVèV,LxL¬LúL  hfÿ`õ ‰ ÿ /etc/initmem = %l no clockiinitNo space on dev %d busy i out of inodesno fsno imtno inodescdlos°€’’¸ªpanic: %s swap errorno procsout of swap spaceswap errorout of tex· P¤· H¤· @¤ÀEÿ Î4¤ß ,í÷•j¤Àÿÿw”éw ‚é÷• ¤w„éw réwzéw héDCB ýw^éw LéDõ 5Àetýÿæz^ß òGÖ à ÎÈYß `ß €ôÕ f& æß ¬?ÆeÀ ÎÚYß `õ   fæ²]ß 6H–%ô ôÅ4Š÷‹þB7ŠøBÎè_ß bw¸èw ¦èÀ6£0 ß €ôŠÀetýÿ&æz^ß 6H–%ÌÅ ß wlèw Zè÷ X£_| ÄÚc!¢d†ô‹à Äe ô5-ù´ŠÀ¶¢0`ÄÎæYß `ô•4Š tÀþ¢Àe?túÿÀEü´€Àetýÿæz^ß òGÖ ÎòYß `Îß ŽÎeß ÈØÈé.45.fppmfpi @ mtpi € spl˜rtiresettrap"call"<_traø÷•;¦ _z@ð53õ5øÿFNöÿß   _z5 ôÿW-ôÿ@ôÿÀ @m@ôÿÀ @m0 µ ôÿë@0ß 8<@ðU@tøÿ5ôÿÀ @mCýÕNöÿß  0 l@À @m Nöÿß  ß 8<@À @m°ýÕW- @À @m7úD@7 ôD=@ôÿÀ @m°Žföÿß â:Ö @ÀEÿ5ôÿÀ À`Nöÿß  5øÿ@ôÿÀ À`ˆNøÿß 8<ß 8<ß €<@ôÿÀ À`7xD€w6êw $ê÷‹®¤�®¤÷ ¬¤· ¬¤· ¤¤· œ¤÷ š¤Àÿÿ@�æ†¤ß FÖ À ç÷•jo¤Àÿÿ wàéw Îé÷ b¤÷‹P¤ÄŸR¤÷ P¤òÅμÀß 4Àw®íw œí Äò_!Úc†Ì‹ÄeøÎ¾Yß `5ôÿà ¨õòÿÌ•ô•ôô· –GÀ’G4ô 4ŠÃŠÀ× ¨À†Äû´Šø@òÿ´Š´Š À¼§°ŠÎÀß &Dôÿ7ž§CòÿÂõ øÿ´Žæ²]ß òGÖ 5öÿÀ Ë•tøÿ μÀß & & &ß V–%ôÕË•÷L§ töÿ € À õNöÿµ öÿføÿµ øÿß hÖ ðw–ìw „ìħ5öÿt u-öÿ ÎNmföÿNíæ²]ß 6H–%@ÎÀß &Næ²]ß òGÖ  Î¼Àß &Nöÿæ&ß V–%ôÕ÷ Æý´ 5 øÿu-øÿöÿ Ž‚ æNmøÿß hÖ µ øÿñÎföÿæ²]ß 6H–% ß <÷ @íwÖëw Äë@5öÿõ55øÿ�Äeì— ÿÿ·ŠÜIΜÿæè_Ù÷ 6îDøÿô‹ mÎæ²]ß òGÖ H÷ îÄò_!Úc †�ÀEøÿÀ%£)Äeð— ¦ÂÿÿÄò_!Úc†�ÀEøÿÀ% ££­5øÿ�Äeæ— …Døÿ÷ –íôÅ æ&ß V–%_Î@øÿô‹ Î&æ&ß ¬?ÆeÀ ,ôm´Š DøÿÎ&æ& ß ¬?ÆeÀ  Àetýÿ&æz^ß 6H–%ô ôÕ4Š_ÎβYß `wVîw Dî÷ j‚÷ò_b‚ÎÀß &΂Hß <ÂN‚7 J‚à !2Âe— Úc‡Âò_—¢€œÀEþÿÀ%ƒ¬·‚ƒœ„ ã÷ ‚·‚÷ BìÔÂö�Ž ß <÷ 2ïòµÁ�Ð÷ Á�É÷ Á�þÁ `ɺ ‡fŽ Ž Ž ÁEøÿAœÁ `‰å‡�ÁE÷ Bv ÀÀEÿ‡�ÁE÷ (&v ¶�Ž�€÷ 2 ‡�÷ ‡æ„ýŸæ@÷¸:I €�€÷ ‡æ`ýŸæ÷¸&‰ ··Hý‡··>ýÖ Àÿÿ‡÷ P ‘ƒ~÷ &‘ ƒ~·Þ‚ ‡€¦æÐ&€� ‚ ‚ ÷º‡·´‚Àÿÿ‡ææü˜·Þü‡Ÿ�€�P˜IŸ�€Ÿ�·¬ñÀÀ˜I˜‡™‡œ‡�‡ž‡Ÿ‡æ–ü·2ñ·.ñ÷à„ü¦ Á  P ‘ ƒ~‚·lü‡æfü·ñ÷àZü Á & � C~·Jü‡€°mH ‡€�€í�í€  ÿÿW þ ‚Àþ‡W ÊÕ÷‹?¬÷ B¬‚w°ñw žñu-ƒ@@w”ñw ‚ñu-†@@wxñw fñC@@m÷‹Þ«*ÀQÀ]Ü«À5#õ Î&æÈ«ß ÌÎæ¼«&ß Ø–%Ä ÷•j¡«%÷`¢«ÎæBÀß ºÖ ÷à”«õ Àà À ÷ ”�öÀà À „ ’ß ~À ówÎðw ¼ð7ЬÃþÿÄD«õ "÷ Þ À tÌ•t�÷ 6ï÷‹ÈJ7ŠÂJÎæ_ß b÷ .÷ ¬ À θÀß 4tÌ•t�÷ úî÷ ßþÿwRðw @ðB Äò_!Úc†-÷‹fJôµ7ŠXJƒ 4 Ì•·ŠòFÄeçà õè_Üwðw îï ·Š&JΜÿææ_ß æÖ ÷ ŽîÂÿÿÄò_!Úc†£ ôµ­ KISA0àôKISD0ÀôusizeSISD0€ôSISD1‚ô_ldiv"x_lrem"„_lshift"’rsave"¢rretrn"°badtrap$Èu1u2u3u4u5u6u7setreg_fubyte"(_subyte"B_fuword"l_suword"Œgwordvpwordšerr¸suword”_copyin"È_copyout"Ôcopsuè_idle"_savu""_retu"8_aretu"0KISA6ìô_spl0"L_spl1"P_spl4"T_spl6"\_spl7"`_copyseg"dSISA0 ôSISA1¢ôUISA0UISA1UISD0UISD1_clearse"”_dpadd"¶_dpcmp"Ästart"ú_end _edata _main¹¹¹¹¹¹éè x ˆ ˜ ¨br4€br5 br6Àbr7àtrap start klinÈklouÎpcinÔpcouÚkwlpàtcioærkioìtmioòdhinødhouþcall _klrint _klxint _pcrint _pcpint _clock _tcintr _rkintr _tmintr _dhrint _dhxint DàáâãäåæwÜÿȀ΀ԀڀàÀàÀæÀì ò çèéø þ 74ÿ7.ÿ7(ÿ7"ÿ7ÿ7ÿ7ÿ7 ÿ7ÿ7þþHHHHHHHYHHH  ( 8 H X h 0 }; int rootdev {(0<<8)|0}; int swapdev {(0<<8)|0}; int swplo 4000; int nswap 872; /* * Copyright 1974 Bell Telephone Laboratories Inc */ int (*bdevsw[])() { &nulldev, &nulldev, &rkstrategy, &rktab, &nulldev, &tcclose, &tcstrategy, &tctab, &tmopen, &tmclose, &tmstrategy, &tmtab, 0 }; int (*cdevsw[])() { &klopen, &klclose, &klread, &klwrite, &klsgtty, &nulldev, &nulldev, &rkread, &rkwrite, &nodev, &tmopen, &tmclose, &tmread, &tmwrite, &nodev, &dhopen, &dhclose, &dhread, &dhwrite, &dhsgtty, &pcopen, &pcclose, &pcread, &pcwrite, &nodev, ou: jsr r0,call; _pcpint .globl _clock kwlp: jsr r0,call; _clock .globl _tcintr tcio: jsr r0,call; _tcintr .globl _rkintr rkio: jsr r0,call; _rkintr .globl _tmintr tmio: jsr r0,call; _tmintr .globl _dhrint dhin: jsr r0,call; _dhrint .globl _dhxint dhou: jsr r0,call; _dhxint . rkio; br5 . = 224^. tmio; br5 . = 240^. trap; br7+7. / programmed interrupt trap; br7+8. / floating point trap; br7+9. / segmentation violation / floating vectors . = 300^. dhin; br5+0. dhou; br5+0. ////////////////////////////////////////////////////// / interface code to C ////////////////////////////////////////////////////// .globl call, trap .globl _klrint klin: jsr r0,call; _klrint .globl _klxint klou: jsr r0,call; _klxint .globl _pcrint pcin: jsr r0,call; _pcrint .globl _pcpint pcabur"l_nseg"�_buf$"q_bfreeli$lr_bread"â:_getblk" =_bcopy":_brelse"€<_alloc" _getfs" _sleep"æ_wakeup"b_clrbuf"²>_free"Ü _bwrite"ì;_ialloc"t _iput"_ifree"Ì _update"@ _iupdat"d_prele"šJ_bflush"^@_nblkdev$‚r_nchrdev$„r_maxip$†r_itrunc" _maknode"®_wdir"ð_writei"Æ_panicst$ˆr_kisa6$Šr_putchar" _printn"Ê_readi"Ž_bmap"Þ_breada",;_iomove"<_bawrite"h<_bdwrite"8<_max"_cpass"Ô_passc"~_file$Œr_issig"à!_malloc"òG_xswap"V_swap"¬?_xccdec"€_xfree"ü_xalloc"H_sysent#,Z_psignal"¬!_trap1"N!_psig""_nosys"d!_nullsys"t!_signal"~!_core"À"_exit"ˆ&_schar"H6_namei"4_access"Ò7_rexit"n&_fork"d(_read"¦)_write"¸)_open"b*_close"r+_wait"~'_creat"�*_link"Z,_unlink"Ú._exec"x#_chdir"`/_gtime"â-_mknod"ê,_chmod"º/_chown"ü/_sbreak"È(_stat"d0_seek"š+_smount"t1_sumount"d2_setuid"&._getuid"J._stime"ü-_fstat">0_stty"zB_gtty"2B_nice"°._sslep"4-_sync"¢._kill"v3_getswit"Ò-_dup"H1_pipe"ÐH_times"Â3_profil"ê3_setgid"d._getgid"ˆ._ssig",3_uchar"`6_closef"´6_rdwr"Ê)_getf"†6_readp"HI_writep"ÐI_open1"Ø*_openi"h7_falloc"´8_suser"d8_owner"@8_stat1"’0_ufalloc"‚8_getmdev"à2_closei"7_maxfp$¬u_timeout"v:_buffers$®u_swbuf$Ì“_raflag#l[_iowait"&>_incore"â<_geterro"B_notavai"V>_iodone"ˆ>_devstar"f?_physio"¨@_partab#\_maptab#v[_cfree$â“_sgtty"´B_wflusht"üB_flushtt"tC_canon"ÎC_ttyinpu"¢D_ttyoutp"pE_ttstart"úF_ttrstrt"àF_ttread"hG_ttwrite"¢G_plock"pJ_kl11$—_pc11$z—_pcleade"þM_pcoutpu"¼M_pcstart"M_rk_q$ˆ—_rk_ap$�—_rrkbuf$’—_rkstart"ÜN_rkaddr",O_rkcomma"’P_rkerror"HP_rkpost"P_tcstart"PQ_rtmbuf$¨—_t_openf$¾—_t_blkno$Æ—_t_nxrec$Ö—_tcomman"ÖR_tmstart"”S_tmphys"lU_dh11$æ—_ndh11#Ž\_dhsar$Æ™_dhstart"ìW_dhparam",W_dmopen"¢Xd     ÿ þ ý ü û ú ù ø ÷ ö õ ô ó ò ñ ð ï î í ì ë ê é è ç æ å ä ã â á à ß Þ Ý Ü Û Ú Ù Ø × Ö Õ Ô Ó Ò Ñ Ð Ï Î Í Ì Ë Ê É È Ç Æ Å Ä Ã Â Á À ¿ ¾ ½ ¼ » º ¹ ¸ · ¶ µ ´ ³ ² ± ° ¯ ® ­ ¼ü‡ö " ü‡ß �Àetüÿ÷ ZÅEðÿWuÅe ºÄºT!ºü‡‡ÎeÀ ý· ý÷5àúÀ ºÎå‡& �ŠÀÀ ºõ÷ €À  ºîf Ìür f rvÐÁÔý‰r t@PÁ ÿ!á ºáÿáÉ‹þ�‡Àpÿˆ È‹þÀÎ?ÀE€ÿ A‡ Z‚Àe  À ÷‹®?ý À ÷ ìÿÀŠ÷ äÿ ÷ ÞÿÀ ‡7ˆ?‡fß È–%Φfß È–%mŽß ¦ µ"àŽß JÀ 2—"*/—.+—.('€" €¦Îe�AA~p^€0ú*Ê(W-(©Žß 5 öÿõ"öÿ @öÿÀ À`,ß 5øÿ!@öÿÀ À`5,ôÿ@öÿÀ À`°,BôÿDøÿµ öÿÝÀ‹ À À`°,ww u-@@wöw ä@ #Àýÿ##Àþÿ#Àÿÿ À ð5Ò- w¢w �CÀ_ìÎæ8,ß þ%Ö _(Îæ<,ß þ%Ö _(Àæ@,ß þ%Ö À-Î æF,ß þ%Ö _(ÎÎe æN,ß þ%Ö _(ÎT,ß ¢Îp,ß þ%_(Ît,ß T0 T D 1 2 „ ¯ ­ ¬ « ª © ¨ § ¦ ¥ ¤ £ ¢ ¡   Ÿ ž � œ › š ™ ˜ — – • ” “ ’ ‘ � � Ž � Œ ‹ Š ‰ ˆ ‡ † … œÿ.@¤ÿ ×.Àõ ¤ÿÃå@¤ÿÀ_×.×.þÿ#×.þÿ ÃåÀÁA1lõ ¤ÿW-žÿ*@¤ÿÀ @aÐÿ#G@ÀeÐÿΦ÷ ‚Ö &ß ìÖ 5¢ÿW-žÿ*@œÿµ ¢ÿ5  ÿu- ÿ¤ÿ%@ ÿÀ @a¨ÿÃeÀ5šÿ4Nšÿß @-¢ÿ@¢ÿ€ @¢ÿ5¢ÿ4´µ  ÿ×€wúw èD@@=aTADp}N@ =@I=QF=x@@Î,ß ¢_vW-+AÀ r=AÀ r}&&@ t=@t=Àå( ƒ À x¨¼DDxˆ(28Î(,ß ¢w8w &BCµ"À³ À À`°Î¦/ c code tables-- set condition codes .globl _cctab _cctab=. 106.; rest 28.; rest 21.; rest 22.; rest 30.; rest 31.; rest 34.; rest 35.; rest 36.; rest 37.; rest 40.; rest 41.; rest 42.; rest 43.; rest 45.; rest 46.; rest 47.; cc47 48.; rest 60.; cc60 61.; cc60 62.; cc60 63.; cc60 64.; cc60 65.; cc60 66.; cc60 67.; cc60 68.; cc60 69.; cc60 70.; rest 71.; rest 72.; rest 73.; rest 75.; rest 76.; rest 77.; rest 78.; rest 79.; rest 80.; rest / relationals cc60: %n,z %nf,zf FC %a,a cmpBE A1,A2 %n*,a F* cmpBE #1(R),A2 %n,a %nf,ad F V cmpB2 A2,R %n*,e* F* S1* cmpBE #1(R),#2(R1) %n*,e %nd*,ef F* S1 cmpB1 #1(R),R1 %n,e* %nf,ed* F S1* V cmpB2 #2(R1),R %n,e %nf,ef F S1 cmpBF R,R1 %n*,n* FS* S* cmpBE (sp)+,#2(R) %n*,n %nd*,nf FS* S cmpB1 *(sp)+,R %n,n* FS S* cmpB2 (sp)+,#2(R) %n,n %nf,nf SS F V cmpBF (sp)+,R / & as in "if ((a&b) ==0)" cc47: %a,a bitBE A2,A1 %n*,a F* bitBE A2,#1(R) %n,a F bitB2 A2,R %n,e F S1 bit R1,R %n,n FS S bit (sp)+,R / set codes right rest: %n,n %nf,nf H .data .even .text # /* C compiler Copyright 1972 Bell Telephone Laboratories, Inc. */ #include "c0h.c" decref(at) { register t; t = at; if ((t & ~07) == 0) { error("Illegal indirection"); return(t); } return((t>>2) & ~07 | t&07); } incref(t) { return((t<<2)&~034 | (t&07) | PTR); } cbranch(tree, lbl, cond) struct tnode *tree; { rcexpr(block(1,CBRANCH,tree,lbl,cond),cctab); } rcexpr(tree, table) int table; struct tnode *tree; { register c, *sp; if (tree == 0) return; putchar('#'); c = space-treebase; sp = treebase; putwrd(c); putwrd(tree); putwrd(table); putwrd(line); while(c--) putwrd(*sp++); } branch(lab) { printf("jbr\tL%d\n", lab); } label(l) { printf("L%d:", l); } plength(ap) struct tname *ap; { register t, l; register struct tname *p; p = ap; if (((t=p->ntype)&~07) == 0) /* not a reference */ return(1); p->ntype = decref(t); l = length(p); p->ntype = t; return(l); } length(acs) struct tnode *acs; { register t, n; register struct tnode *cs; cs = acs; t = cs->type; n = 1; while ((t&030) == ARRAY) { t = decref(t); n = dimtab[cs->ssp]; } if ((t&~07)==FUNC) return(0); if (t>=PTR) return(2*n); switch(t&07) { case INT: return(2*n); case CHAR: return(n); case FLOAT: return(4*n); case DOUBLE: return(8*n); case STRUCT: return(n * dimtab[cs->lenp]); case RSTRUCT: error("Bad structure"); return(0); } error("Compiler error (length)"); } rlength(cs) struct tnode *cs; { register int l; if (((l=length(cs))&01) != 0) l++; return(l); } simplegoto() { register struct hshtab *csp; if ((peeksym=symbol())==NAME && nextchar()==';') { csp = csym; if (csp->hclass==0 && csp->htype==0) { csp->htype = ARRAY; if (csp->hoffset==0) csp->hoffset = isn++; } if ((csp->hclass==0||csp->hclass==STATIC) && csp->htype==ARRAY) { peeksym = -1; return(csp->hoffset); } } return(0); } nextchar() { while (ctab[peekc]==SPACE) peekc = getchar(); return(peekc); } chconbrk(l) { if (l==0) error("Break/continue error"); } dogoto() { register struct tnode *np; *cp++ = tree(); build(STAR); chkw(np = *--cp); rcexpr(block(1,JUMP,0,0,np), regtab); } doret() { if (nextchar() != ';') rcexpr(block(1, RFORCE, 0, 0, tree()), regtab); branch(retlab); } # /* C compiler Copyright 1972 Bell Telephone Laboratories, Inc. */ #include "c0h.c" build(op) { register int t1; int t2, t3, t; struct tnode *p3, *disarray(); register struct tnode *p1, *p2; int d, dope, leftc, cvn, pcvn; if (op==LBRACK) { build(PLUS); op = STAR; } dope = opdope[op]; if ((dope&BINARY)!=0) { p2 = chkfun(disarray(*--cp)); t2 = p2->type; } p1 = *--cp; if (op!=AMPER) { p1 = disarray(p1); if (op!=CALL) p1 = chkfun(p1); } t1 = p1->type; pcvn = 0; switch (op) { /* end of expression */ case 0: *cp++ = p1; return; case COLON: if (t1!=t2) error("Type clash in conditional"); t = t1; goto nocv; /* no-conversion operators */ case COMMA: case LOGAND: case LOGOR: *cp++ = block(2, op, 0, 0, p1, p2); return; case QUEST: if (p2->op!=COLON) error("Illegal conditional"); t = t2; goto nocv; case CALL: if ((t1&030) != FUNC) error("Call of non-function"); *cp++ = block(2,CALL,decref(t1),p1->dimp,p1,p2); return; case STAR: if (p1->op==AMPER || p1->op==AMPERA) { *cp++ = p1->tr1; return; } if ((t1&030) == FUNC) error("Illegal indirection"); *cp++ = block(1,STAR,decref(t1),p1->dimp,p1); return; case AMPER: if (p1->op==STAR) { p1->tr1->dimp = p1->dimp; p1->tr1->type = incref(t1); *cp++ = p1->tr1; return; } if (p1->op==NAME) { if (p1->class==AUTO) op = AMPERA; *cp++ = block(1,op,incref(t1),p1->dimp,p1); return; } error("Illegal lvalue"); break; case INCBEF: case DECBEF: case INCAFT: case DECAFT: chklval(p1); *cp++ = block(2,op,t1,p1->dimp,p1,plength(p1)); return; case ARROW: *cp++ = p1; chkw(p1); p1->type = PTR+STRUCT; build(STAR); p1 = *--cp; case DOT: if (p2->op!=NAME || p2->class!=MOS) error("Illegal structure ref"); *cp++ = p1; t = t2; if ((t&030) == ARRAY) { t = decref(t); p2->ssp++; } setype(p1, t, p2->dimp); build(AMPER); *cp++ = block(1,CON,7,0,p2->nloc); build(PLUS); if ((t2&030) != ARRAY) build(STAR); return; } if ((dope&LVALUE)!=0) chklval(p1); if ((dope&LWORD)!=0) chkw(p1); if ((dope&RWORD)!=0) chkw(p2); if ((dope&BINARY)==0) { *cp++ = block(1,op,t1,p1->dimp,p1); return; } if (t2==7) { t = t1; p2->type = 0; /* no int cv for struct */ t2 = 0; goto nocv; } cvn = cvtab[11*lintyp(t1)+lintyp(t2)]; leftc = cvn&0100; t = leftc? t2:t1; if (op==ASSIGN && t1!=STRUCT && t2!=STRUCT) { t = t1; if (leftc || cvn!=3) /* int -> float */ goto nocv; } if (cvn =& 077) { if (cvn==077) { if ((dope&RELAT)==0 || t1float */ leftc = 0; cvn = 4; t = t1; goto rcvt; } else goto illcv; } p1 = convert(p1, t, cvn, plength(p2)); } else { rcvt: p2 = convert(p2, t, cvn, plength(p1)); } nocv:; } if ((dope&RELAT)!=0) { if (op>NEQUAL && (t1>=PTR || t2>=PTR)) op =+ 4; /* ptr relation */ t = 0; /* relational is integer */ } *cp++ = block(2,op,t,(p1->dimp==0? p2:p1)->dimp,p1,p2); if (pcvn) { p1 = *--cp; *cp++ = convert(p1, 0, pcvn, plength(p1->tr1)); } } convert(p, t, cvn, len) struct tnode *p; { register int n; switch(cvn) { /* int -> ptr */ case 1: n = TIMES; goto md; /* ptr -> int */ case 2: n = DIVIDE; md: return(block(2, n, t, 0, p, block(1, CON, 0, 0, len))); /* int -> double */ case 3: n = ITOF; goto di; /* double -> int */ case 4: n = FTOI; di: return(block(1, n, t, 0, p)); } error("C error-- convert"); return(p); } setype(ap, at, adimptr) struct tnode *ap; { register struct tnode *p; register t, dimptr; p = ap; t = at; dimptr = adimptr; p->type = t; if (dimptr != -1) p->dimp = dimptr; switch(p->op) { case AMPERA: case AMPER: setype(p->tr1, decref¸ ¹ º » ¼ ½ ¾ ¿ Á  à (t), dimptr); return; case STAR: setype(p->tr1, incref(t), dimptr); return; case PLUS: case MINUS: setype(p->tr1, t, dimptr); } } chkfun(ap) struct tnode *ap; { register struct tnode *p; register int t; p = ap; if (((t = p->type)&030)==FUNC) return(block(1,AMPER,incref(t),p->dimp,p)); return(p); } struct tnode *disarray(ap) struct tnode *ap; { register int t; register struct tnode *p; p = ap; /* check array & not MOS */ if (((t = p->type)&030)!=ARRAY || p->op==NAME&&p->class==MOS) return(p); p->ssp++; *cp++ = p; setype(p, decref(t), -1); build(AMPER); return(*--cp); } chkw(p) struct tnode *p; { register int t; if ((t=p->type)>CHAR && top!=NAME && p->op!=STAR) error("Lvalue required"); } # /* C compiler, part 2 Copyright 1972 Bell Telephone Laboratories, Inc. */ #include "c1h.c" char maprel[] { EQUAL, NEQUAL, GREATEQ, GREAT, LESSEQ, LESS, GREATP, GREATQP, LESSP, LESSEQP }; char notrel[] { NEQUAL, EQUAL, GREAT, GREATEQ, LESS, LESSEQ, GREATQP, GREATP, LESSEQP, LESSP }; struct table *tabtab[] { regtab, efftab, cctab, sptab, 0 }; int nreg 3; int isn 10000; int namsiz 8; int *treebase; main(argc, argv) char *argv[]; { int treespace[ossiz]; struct table *table; register *sp, c, *tree; if (argc<4) { error("Arg count"); exit(1); } if((fin=open(argv[1],0))<0) { error("Cant't find %s", argv[1]); exit(1); } if((fout=creat(argv[3],0666))<0) { error("Can't create %s", argv[3]); exit(1); } tmpfil = argv[2]; treebase = getwrd(); if (treebase < treespace) { error("Tree space botch"); exit(1); } while(c=getchar()) { if(c=='#') { sp = treebase; c = getwrd(); tree = getwrd(); table = tabtab[getwrd()]; line = getwrd(); while(--c >= 0) *sp++ = getwrd(); if (table==0) /* is switch */ pswitch(treebase, sp, tree); else { tree = optim(tree, 0); nstack = 0; rcexpr(tree, table, 0); } } else putchar(c); } if (nfloat) printf(".globl fltused\n"); flush(); exit(nerror!=0); } char *match(atree, table, nrleft) struct tnode *atree; struct table *table; { int op, d1, d2, t1, t2, dope; struct tnode *p2; register struct tnode *p1, *tree; register struct optab *opt; if ((tree=atree)==0) return(0); if (table==lsptab) table = sptab; op = tree->op; dope = opdope[op]; if ((dope&LEAF) == 0) p1 = tree->tr1; else p1 = tree; t1 = p1->type; d1 = dcalc(p1, nrleft); if ((dope&BINARY)!=0) { p2 = tree->tr2; t2 = p2->type; d2 = dcalc(p2, nrleft); } for (; table->op!=op; table++) if (table->op==0) return(0); for (opt = table->tabp; opt->tabdeg1!=0; opt++) { if (d1 > (opt->tabdeg1&077) || (opt->tabdeg1 >= 0100 && (p1->op != STAR))) continue; if (notcompat(t1, opt->tabtyp1)) continue; if ((opdope[op]&BINARY)!=0 && p2!=0) { if (d2 > (opt->tabdeg2&077) || (opt->tabdeg2 >= 0100) && (p2->op != STAR) ) continue; if (notcompat(t2,opt->tabtyp2)) continue; } return(opt->tabstring); } return(0); } rcexpr(atree, atable, reg) struct tnode *atree; struct table *atable; { register r; int modf; register struct tnode *tree; register struct table *table; table = atable; if((tree=atree)==0) return(0); switch (tree->op) { case SETREG: nreg = tree->type-1; return; case CBRANCH: cbranch(tree->btree, tree->lbl, tree->cond, 0); return(0); case INIT: if (tree->tr1->op == AMPER) tree->tr1 = tree->tr1->tr1; if (tree->tr1->op!=NAME && tree->tr1->op!=CON) error("Illegal initialization"); else cexpr(tree, regtab, nreg); return(0); case EXCLA: if ((opdope[tree->tr1->op] & RELAT) != 0) { tree = tree->tr1; tree->op = notrel[tree->op - EQUAL]; } break; case RFORCE: if((r=rcexpr(tree->tr1, table, reg)) != 0) printf("mov%c r%d,r0\n", isfloat(tree), r); return(0); case TIMES: case DIVIDE: case ASTIMES: case ASDIV: pow2(tree); } if ((r=cexpr(tree, table, reg))>=0) return(r); if (table!=regtab) if((r=cexpr(tree, regtab, reg))>=0) { modf = isfloat(tree); if (table==sptab || table==lsptab) { printf("mov%c r%d,%c(sp)\n", modf, r, table==sptab? '-':0); nstack++; } if (table==cctab) { printf("tst%c r%d\n", modf, r); if (modf=='f') printf("cfcc\n"); } return(0); } error("No match for op %d", tree->op); } cexpr(atree, table, reg) struct tnode *atree; struct table *table; { int c, r; register struct tnode *p, *p1, *tree; struct table *ctable; struct tnode *p2; char *string; int reg1, rreg, flag, nargs, fflag; tree = atree; p1 = tree->tr2; if ((c = tree->op)==CALL) { r = 0; nargs = 0; fflag = 0; if (tree->tr1->op!=NAME) { /* get nargs right */ nargs++; nstack++; } if(p1->op) { while (p1->op==COMMA) { r =+ comarg(p1->tr2, &fflag); p1 = p1->tr1; Ä Å Æ Ç È É Ê Ë Í Î Ï Ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ú Û Ü Ý Þ ß nargs++; } r =+ comarg(p1, &fflag); nargs++; } tree->op = CALL+1; tree->degree = r; /* save arg length */ } if(c==QUEST) { if (table==cctab) return(-1); cbranch(tree->tr1, c=isn++, 0, reg); flag = nstack; rreg = rcexpr(p1->tr1, table, reg); nstack = flag; branch(r=isn++, 0); label(c); reg = rcexpr(p1->tr2, table, rreg); if (rreg!=reg) printf("mov%c r%d,r%d\n", isfloat(tree),reg,rreg); reg = rreg; label(r); goto retrn; } if (c==AMPER && tree->tr1->op==NAME && tree->tr1->class==REG) error("Illegal use of register"); reg = oddreg(tree, reg); reg1 = reg+1; if (chkleaf(tree, table, reg) >= 0) goto retrn; if ((string=match(tree, table, nreg-reg))==0) return(-1); p1 = tree->tr1; p2 = tree->tr2; loop: switch(c = *string++) { case '\0': if (tree->op==CALL+1) { popstk(tree->degree); reg = 0; nstack =- nargs; } retrn: c = isfloat(tree); if (table==cctab && c) printf("cfcc\n"); if (!c) if (tree->op==DIVIDE || tree->op==ASDIV) reg--; return(reg); /* A1 */ case 'A': p = p1; goto adr; /* A2 */ case 'B': p = p2; goto adr; /* A */ case 'O': p = tree; adr: c = 0; if (*string=='\'') { c++; string++; } pname(p, c); goto loop; /* I */ case 'M': if ((c = *string)=='\'') string++; else c = 0; prins(tree->op, c); goto loop; /* B1 */ case 'C': if ((opdope[tree->op]&LEAF) != 0) p = tree; else p = p1; goto pbyte; /* BF */ case 'P': p = tree; goto pb1; /* B2 */ case 'D': p = p2; pbyte: if (p->type==CHAR) putchar('b'); pb1: if (isfloat(p)) putchar('f'); goto loop; /* BE */ case 'L': if (p1->type==CHAR || p2->type==CHAR) putchar('b'); p = tree; goto pb1; /* C1 */ case 'E': p = p1->tr1; goto const; /* C2 */ case 'F': p = p2->tr1; const: printf("%o", p); goto loop; /* F */ case 'G': p = p1; goto subtre; /* S */ case 'K': p = p2; goto subtre; /* H */ case 'H': p = tree; subtre: ctable = regtab; r = reg; c = *string++ - 'A'; if ((c&02)!=0) ctable = sptab; if ((c&04)!=0) ctable = cctab; if((c&010)!=0) r = reg1; flag = 0; if ((c&01)!=0) { p = p->tr1; if(collcon(p) && ctable!=sptab) { if (p->tr2->op==AMPERA) flag = 1; p = p->tr1; } } if (table==lsptab && ctable==sptab) ctable = lsptab; rreg = rcexpr(p, ctable, r); if (flag) printf("add r5,r%d\n", rreg); if (rreg==r || ctable!=regtab) goto loop; if (string[-2]=='G') /* left operand */ if (oddreg(tree, 0)==1) { printf("mov r%d,r%d\n", rreg, r); goto loop; } if (r==reg) { reg = rreg; reg1 = rreg+1; } else reg1 = rreg; goto loop; /* R */ case 'I': r = reg; if (*string=='-') { string++; r--; } goto preg; /* R1 */ case 'J': r = reg1; preg: if (r>nreg) error("Register overflow: simplify expression"); printf("r%d", r); goto loop; case '-': /* check -(sp) */ if (*string=='(') { nstack++; if (table!=lsptab) putchar('-'); goto loop; } break; case ')': /* check (sp)+ */ putchar(')'); if (*string=='+') nstack--; goto loop; case '#': p = p1->tr1; goto nmbr; case '"': p = p2->tr1; goto nmbr; case '~': p = p1; nmbr: if(collcon(p)) { switch((p = p->tr2)->op) { case CON: if (p->value) printf("%d.", p->value); break; case AMPER: pname(p->tr1, 0); break; case AMPERA: p = p->tr1; printf("%d.", p->nloc+p->offset); break; } } goto loop; /* V */ case 'V': tree->op = maprel[tree->op - EQUAL]; goto loop; /* Z */ case 'Z': printf("$%o", p1->offset+p1->nloc); goto loop; case '^': /* for ++ --, p2 is length */ printf("%o", p2); goto loop; case 'T': /* "tst R" if 1st op not in cctab */ if (dcalc(p1, 5)>12 && !match(p1, cctab, 10)) printf("tst r%d\n", reg); goto loop; case '`': /* for jsr pc,*$F on compression */ if (fflag) printf("*$"); goto loop; } putchar(c); goto loop; } chkleaf(atree, table, reg) struct tnode *atree; { struct tnode lbuf; register struct tnode *tree; tree = atree; if (dcalc(tree, nreg-reg) > 12) return(-1); lbuf.op = LOAD; lbuf.type = tree->type; lbuf.degree = tree->degree; lbuf.tr1 = tree; return(cexpr(&lbuf, table, reg)); } comarg(atree, flagp) int *flagp; { register struct tnode *tree; tree = atree; if (nstack || isfloat(tree)) { rcexpr(tree, sptab, 0); return(arlength(tree->type)); } (*flagp)++; rcexpr(tree, lsptab, 0); return(0); } optim(atree, tvcon) struct tnode *atree; { register op, dope; int d1, d2; struct tnode *t; register struct tnode *tree; if ((tree=atree)==0) return(0); op = tree->op; if (op==0) return(tree); dope = opdope[op]; if ((dope&LEAF) != 0) return(tree); if ((dope&BINARY) == 0) return(unoptim(tree, (tvcon&op==EXCLA)|op==CBRANCH)); if (op!=LOGAND && op!=LOGOR) tvcon = 0; /* is known to be binary */ if ((dope&COMMUTE)!=0) { acomm: d1 = tree->type; tree = acommute(tree); tree->type = d1; return(tree); } tree->tr1 = optim(tree->tr1, tvcon|(op==QUEST)); tree->tr2 = optim(tree->tr2, tvcon); if ((dope&RELAT) != 0) if (degree(tree->tr1) < degree(tree->tr2)) { t = tree->tr1; tree->tr1 = tree->tr2; tree->tr2 = t; tree->op = maprel[op-EQUAL]; } d1 = max(degree(tree->tr1), 1); d2 = max(degree(tree->tr2), 0); switch (op) { case CALL: tree->degree = 10; break; case QUEST: case COLON: tree->degree = max(d1, d2); break; case MINUS: if (tree->tr2->op==CON) { /* const */ tree->op = PLUS; tree->tr2->value = -tree->tr2->value; goto acomm; } goto def; case MOD: case DIVIDE: case ASMOD: case ASDIV: d1 =+ 2; d2 =+ 2; case LSHIFT: case RSHIFT: if (tree->tr1->op==CON && tree->tr2->op==CON) { const(op, &tree->tr1->value, tree->tr2->value); return(tree->tr1); } def: default: tree->degree = d1==d2? ++d1: max(d1, d2); break; } return(tree); } unoptim(atree, tvcon) struct tnode *atree; { register struct tnode *subtre, *tree; if ((tree=atree)==0) return(0); if (tree->op==CBRANCH) { tree->btree = optim(tree->btree, 1); return(tree); } subtre = tree->tr1 = optim(tree->tr1, tvcon & (tree->op==EXCLA)); /* try to reduce * & */ if (tree->op==STAR && (subtre->op==AMPER || subtre->op==AMPERA)) return(subtre->tr1); if (subtre->op == CON) switch(tree->op) { case NEG: subtre->value = -subtre->value; return(subtre); case COMPL: subtre->value = ~subtre->value; return(subtre); } tree->degree = max(1, degree(subtre)); return(tree); } struct acl ( int nextl; int nextn; struct tnode *nlist[20]; struct tnode *llist[21]; ); acommute(atree) { struct acl acl; int d, i, op, flt; register struct tnode *t1, **t2, *tree; struct tnode *t; acl.nextl = 0; acl.nextn = 0; tree = atree; op = tree->op; flt = isfloat(tree); insert(op, tree, &acl); acl.nextl--; if (!flt) { /* put constants together */ t2 = &acl.llist[acl.nextl]; for (i=acl.nextl;i>0&&t2[0]->op==CON&&t2[-1]->op==CON;i--) { acl.nextl--; t2--; const(op, &t2[0]->value, t2[1]->value); } } if (op==PLUS && !flt) { /* toss out "+0" */ if (acl.nextl>0 && (*t2)->op==CON && (*t2)->value==0) { acl.nextl--; t2--; } if (acl.nextl <= 0) return(*t2); /* subsume constant in "&x+c" */ if (t2[0]->op==CON && (t2[-1]->op==AMPER || t2[-1]->op==AMPERA)) { t2--; t2[0]->tr1->offset =+ t2[1]->value; acl.nextl--; } } else if (op==TIMES) { t1 = acl.llist[acl.nextl]; if (t1->op==CON && t1->value==0) return(t1); } tree = *(t2 = &acl.llist[0]); d = max(degree(tree), 1); if (op==TIMES && !flt) d++; for (i=0; itr2 = t = *++t2; t1->degree = d = degree(t)>=d? d+1:d; t1->tr1 = tree; tree = t1; } return(tree); } const(op, vp, av) int *vp; { register int v; v = av; switch (op) { case PLUS: *vp =+ v; return; case TIMES: *vp =* v; return; case AND: *vp =& v; return; case OR: *vp =| v; return; case EXOR: *vp =^ v; return; case DIVIDE: case MOD: if (v==0) error("Divide check"); else if (op==DIVIDE) *vp =/ v; else *vp =% v; return; case RSHIFT: *vp =>> v; return; case LSHIFT: *vp =<< v; return; } error("C error: const"); } insert(op, atree, alist) struct acl *alist; { register d; register struct acl *list; register struct tnode *tree; int d1, i; struct tnode *t; tree = atree; list = alist; if (tree->op == op) { ins: list->nlist[list->nextn++] = tree; insert(op, tree->tr1, list); insert(op, tree->tr2, list); return; } tree = optim(tree); if (tree->op == op) goto ins; if (!isfloat(tree)) { /* c1*(x+c2) -> c1*x+c1*c2 */ if (tree->op==TIMES && tree->tr2->op==CON && tree->tr1->op==PLUS && tree->tr1->tr2->op==CON) { d = tree->tr2->value; tree->tr2->value =* tree->tr1->tr2->value; tree->tr1->tr2->value = d; tree->tr1->op = TIMES; tree->op = PLUS; if (op==PLUS) goto ins; } } d = degree(tree); for (i=0; inextl; i++) { if ((d1=degree(list->llist[i]))llist[i]; list->llist[i] = tree; tree = t; d = d1; } } list->llist[list->nextl++] = tree; } ¦"" ð€&Ð 6÷ –% ‰f…Æå 5òÿ5üÿ5úÿ5öÿW- @&ß ®Ö 7˜ Î? ß Ò_ôW-ζ@&ß ´Ö 7d Î? ß Ò_ô÷ p5þÿW-þÿ W-þÿ 5 úÿ@òÿ W-þÿ%5 òÿÎ¦ß ú@þÿ_Ö롧 ú÷ F_ô@öÿ뼧 úÎ:ß ÒÌ÷ 5þÿÀ%1W-þÿ2NþÿÎeß ÒºÎOß Òwþÿª²÷ ÔÎCß ÒªÎDß Ò¥ÎLß Ò ÎPß Ò› ÷ $(122<EFFjÎ?ß Ò‰÷ ‚Îeß Ò�ÎGß Ò,÷ h5þÿÀ%1ÎJß ÒÎIß Òwþÿ_†ÎHß ÒÎMß Ò_†ÎVß Òµ üÿ_†ÎKß ÒõüÿõAøÿ÷ 5þÿµ øÿøõeøÿôõeøÿðõeøÿìõeøÿè÷ Rü*12 CS@wþÿ„Nøÿß Ò_†÷ ¤À%1Î#ß ÒÎ"ß Ò_†@öÿÎÂß ú÷ v5þÿbõôÿ÷ ì5øÿ2Î;ß Òîõ ôÿ÷ Ò5øÿ%õôÿ÷ Â5øÿõôÿ÷ ²5øÿ5 øÿõôÿ÷ œ5øÿõôÿ÷ Œ5øÿõ?ôÿ÷ ø5þÿÀ%*õe@ôÿwþÿ°NøÿfôÿæÊß ú–%©ÎÖß úõòÿõúÿõöÿ_†÷ 6X\ÜîNþÿß Ò�@úÿ5 úÿ_†Î ß Ò_†@öÿÎ ß Ò_†@úÿ 5 úÿÎ ß ú5 öÿ_†@üÿÎ ß ú5 üÿÎ ß úõúÿ_†µ üÿ ÷ ®àè * @ Z Nþÿß Ò_†F…‡f…Æå5 üÿÀÀõºþÿ7 ´÷ 5þÿ@þÿ (W-þÿ{µ üÿ÷ 5þÿW-þÿ}÷ °ÿ5þÿõ üÿ@üÿW-þÿ ÷ –ÿ5þÿ@üÿÀVÉ@þÿF…‡f…Æå5 üÿ÷ jÿ5þÿõüÿ÷õüÿóõüÿïõüÿëõüÿçõeüÿã÷ ®¦b¶d®fži¾p–wèwþÿÜ@üÿF…‡f…wÎDÄeÆå€ÀŸÀ · º % &&ß ÒÖ „ñÆe€…‡7 œ7 ’ׯ’-· Š· ˆ÷.Ð 7 € .÷Î ƒÁrBÙ üJ’dØoþfeÀcÊsžl Ó•-÷ 6 r f÷ ðÿ€Àe0�‡•à •$Á“”C~÷ fWtýÿÁEà÷ ðÿ€ÀEøÿÀe0�‡ÂÔ÷ ¤ÂÊ÷ šÆ ƒó‹ÿÿà ù‚&æ Á¤ÁàŠ�`w¤÷ ˜ß Ò÷ ”û·ŒΟˆ· ‚ß Òø÷ z ÷ nÎ ß Ò÷ fûÖ „w�þ7 T ÀŸJ· FÀå0 ‚· <Wp `ñÀe0[ƒÄeÓ•?‡f…w¬w¨‰h †w^wbf…@÷ þ÷öwâw ^Ü @�w RÜ ×-Üw dÜ @7 ºwf…w®w JÜ 7 ¤w7²ÀÿÿF…‡f…wŠ÷ ž  ‰ê ‡À À��ÀEÿôw †ä ‡À ú 7 Vwºÿ�B@$üJY�¦æ ‘rà CdÃÂÀ$üƒ‚ƒ‚Yf…w¸w´‰n †wdÿwhÿfA7¢‰t ‡ �…Éÿÿ�±…fAñ @Àe7œ1@‰š ‡À �±…À 1 @Þ± �…fA7p‰  ‡  �…Ñÿÿ�±…fAñ &÷ €ø9�± �…&fA÷ �€…@Àe&7<w8·ã2@‰Â ±ñ‡.data 1:<.text; 0 =.+2; 0.text;.byte %o,%o;1f . š,ðn´zÄ1ŠaÔcàe¤i\0> .text \n> <ĸHÐTÐXf r%îAÂIÐY€ Ô:"B„FŽRÎVR#tCÞS‰‰‰www fþ†…&w ZþÀ€U…‰‰¶w w&w ˜þ€Àw Žþ…‰mail m jfo mail m rhm mail m ken mail m doug mail m bwk mail m mel mail m enp mail m llc mail m lem mail m map mail m ras mail m pjp mail m jon mail m djs mail m sny mail m lad mail m abl mail m tad # /* * C compiler */ #include "c1h.c" max(a, b) { if (a>b) return(a); return(b); } degree(at) struct tnode *at; { register struct tnode *t; if ((t=at)==0 || t->op==0) return(0); if (t->op == CON) return(-3); if (t->op == AMPER) return(-2); if (t->op == AMPERA) return(-1); if ((opdope[t->op] & LEAF) != 0) return(0); return(t->degree); } pname(ap, flag) struct tnode *ap; { register i; register struct tnode *p; p = ap; loop: switch(p->op) { case SFCON: case CON: printf("$%o", p->value); return; case FCON: printf("L%d", p->value); return; casename: case NAME: if (i = p->offset) printf("%d.+", i); switch(p->class) { case AUTO: printf("%d.(r5)", p->nloc); return; case EXTERN: printf("_%.8s", &(p->nloc)); return; case STRUCT: error("Illegal structure reference"); printf("$0"); return; case REG: if (i) error("Bad reg. reference"); printf("r%d", p->nloc); return; } /* presumably, it's static */ printf("L%d", p->nloc); return; case AMPER: putchar('$'); p = p->tr1; goto loop; case STAR: p = p->tr1; /* reg[const] */ if (p->op==PLUS) { printf("%d.(r%d)", p->tr2->value, p->tr1->nloc); return; } else if (p->op==INCAFT) { printf("(r%d)%c", p->tr1->nloc, flag?0:'+'); return; } else if (p->op==DECBEF) { printf("%c(r%d)", flag?0:'-', p->tr1->nloc); return; } else if (p->op==NAME && p->class==REG) { printf("(r%d)", p->nloc); return; } putchar('*'); goto loop; } error("pname called illegally"); } dcalc(ap, nrleft) struct tnode *ap; { register struct tnode *p, *p1; if ((p=ap)==0) return(0); switch (p->op) { case NAME: case AMPER: return(12); case CON: case SFCON: return(p->value==0? 4:(p->value==1?5:8)); case FCON: return(12); case STAR: p1 = p->tr1; if (p1->op==NAME || p1->op==CON) return(12); if (p1->op==STAR) p1 = p1->tr1; if (p1->op==PLUS && p1->tr1->op==NAME && p1->tr1->class==REG && p1->tr2->op==CON) return(12); if (p1->op==INCAFT || p1->op==DECBEF) p1 = p1->tr1; if (p1->op==NAME && p1->class==REG) return(12); } return(p->degree<=nrleft? 20: 24); } notcompat(aat, ast) { register at, st; at = aat; st = ast; if ((at&07)==STRUCT) at =& 077770; /* map to int */ if (st==0) /* word, byte */ return(at>1 & at<=07); if (st==1) /* word */ return(at>0 & at<=07); st =- 2; if ((at&077740) != 0) at = 020; /* *int for **stuff */ if ((at&077770) != 0) at = at&07 | 020; if (st==2 && at==3) at = 2; return(st != at); } prins(op, c) { register struct instab *insp; register char *ip; for (insp=instab; insp->op != 0; insp++) { if (insp->op == op) { ip = c? insp->str2: insp->str1; if (ip==0) break; printf("%s", ip); return; } } error("No match' for op %d", op); } collcon(ap) struct tnode *ap; { register op; register struct tnode *p; p = ap; if(p->op==PLUS) { op = p->tr2->op; if (op==CON || op==AMPER || op==AMPERA) return(1); } return(0); } isfloat(at) struct tnode *at; { register struct tnode *t; t = at; if ((opdope[t->op]&RELAT)!=0) t = t->tr1; if (t->type==FLOAT || t->type==DOUBLE) { nfloat = 1; return('f'); } return(0); } oddreg(t, areg) struct tnode *t; { register reg; reg = areg; if (!isfloat(t)) switch(t->op) { case DIVIDE: case MOD: case ASDIV: case ASMOD: reg++; case TIMES: case ASTIMES: return(reg|1); } return(reg); } arlength(t) { if (t>=PTR) return(2); switch(t) { case INT: case CHAR: return(2); case FLOAT: case DOUBLE: return(8); } return(1024); } pswitch(afp, alp, deflab) struct swtab *afp, *alp; { int tlab, ncase, i, j, tabs, worst, best, range; register struct swtab *swp, *fp, *lp; int poctab[swsiz]; fp = afp; lp = alp; if (fp==lp) return; tlab = isn++; sort(fp, lp); ncase = lp-fp; lp--; range = lp->swval - fp->swval; /* direct switch */ if (range>0 && range <= 3*ncase) { if (fp->swval) printf("sub $%o,r0\n", fp->swval); printf("cmp r0,$%o\n", range); printf("blos 2f\njbr æ ç è é ê ë ì í ï ð ñ ò ó ô õ L%d\n2:\n", deflab); printf("asl r0\n"); printf("jmp *.+4(r0)\n"); for (i=fp->swval; i<=lp->swval; i++) { if (i==fp->swval) { printf("L%d\n", fp->swlab); fp++; } else printf("L%d\n", deflab); } return; } /* simple switch */ if (ncase<8) { printf("jsr pc,sswitch\n"); for (; fp<=lp; fp++) printf("L%d; %o\n", fp->swlab, fp->swval); printf("0; L%d\n", deflab); return; } /* hash switch */ best = 077777; for (i=ncase/4; i<=ncase/2; i++) { for (j=0; jswval, i)]++; worst = 0; for (j=0; jworst) worst = poctab[j]; if (i*worst < best) { tabs = i; best = i*worst; } } printf("jsr pc,hswitch; %o; .+4; L%d\n", tabs, deflab); for (i=0; iswval, tabs) == i) { printf("2f\n.data\n2:\n"); for (; swp<=lp; swp++) if (lrem(0,swp->swval,tabs)==i) printf("L%d;%o\n", swp->swlab, swp->swval); printf("0\n.text\n"); goto break1; } } printf("0\n"); break1:; } } sort(afp, alp) struct swtab *afp, *alp; { register struct swtab *cp, *fp, *lp; int intch, t; fp = afp; lp = alp; while (fp < --lp) { intch = 0; for (cp=fp; cpswval > cp[1].swval) { intch++; t = cp->swval; cp->swval = cp[1].swval; cp[1].swval = t; t = cp->swlab; cp->swlab = cp[1].swlab; cp[1].swlab = t; } } if (intch==0) return; } } pow2(atree) { register int d, i; register struct tnode *tree; tree = atree; if (!isfloat(tree) && tree->tr2->op==CON) { d = tree->tr2->value; if (d>0 && (d&(d-1))==0) { for (i=0; (d=>>1)!=0; i++); tree->tr2->value = i; d = tree->op; tree->op = d==TIMES? LSHIFT: (d==DIVIDE? RSHIFT: (d==ASTIMES? ASLSH: ASRSH)); } } } cbranch(atree, albl, cond, areg) struct tnode *atree; { int l1; register lbl, reg; register struct tnode *tree; lbl = albl; reg = areg; if ((tree=atree)==0) return; switch(tree->op) { case LOGAND: if (cond) { cbranch(tree->tr1, l1=isn++, 0, reg); cbranch(tree->tr2, lbl, 1, reg); label(l1); } else { cbranch(tree->tr1, lbl, 0, reg); cbranch(tree->tr2, lbl, 0, reg); } return; case LOGOR: if (cond) { cbranch(tree->tr1, lbl, 1, reg); cbranch(tree->tr2, lbl, 1, reg); } else { cbranch(tree->tr1, l1=isn++, 1, reg); cbranch(tree->tr2, lbl, 0, reg); label(l1); } return; case EXCLA: cbranch(tree->tr1, lbl, !cond, reg); return; } if ((opdope[tree->op]&RELAT)!=0 && tree->tr2->op==CON && tree->tr2->value==0) rcexpr(tree->tr1, cctab, reg); else rcexpr(tree, cctab, reg); branch(lbl, tree->op, !cond); return; } branch(lbl, aop, c) { register op; if(op=aop) { if((opdope[op]&RELAT)==0) op = NEQUAL; prins(op,c); } else printf("jbr"); printf("\tL%d\n", lbl); } label(l) { printf("L%d:", l); } popstk(a) { switch(a) { case 0: return; case 2: printf("tst (sp)+\n"); return; case 4: printf("cmp (sp)+,(sp)+\n"); return; } printf("add $%o,sp\n", a); } error(s, p1, p2, p3, p4, p5, p6) { register f; nerror++; flush(); f = fout; fout = 1; printf("%d: ", line); printf(s, p1, p2, p3, p4, p5, p6); putchar('\n'); fout = f; } # /* C compiler Copyright 1972 Bell Telephone Laboratories, Inc. */ #include "c0h.c" int isn 1; int peeksym -1; int line 1; int debug 0; struct kwtab { char *kwname; int kwval; } kwtab[] { "int", INT, "char", CHAR, "float", FLOAT, "double", DOUBLE, "struct", STRUCT, "auto", AUTO, "extern", EXTERN, "static", STATIC, "register", REG, "goto", GOTO, "return", RETURN, "if", IF, "while", WHILE, "else", ELSE, "switch", SWITCH, "case", CASE, "break", BREAK, "continue", CONTIN, "do", DO, "default", DEFAULT, "for", FOR, 0, 0, }; main(argc, argv) char *argv[]; { extern fin, fout; int treespace[ossiz]; register char *sp, *np; register struct kwtab *ip; if(argc<4) { error("Arg count"); exit(1); } if((fin=open(argv[1],0))<0) { error("Can't find %s", argv[1]); exit(1); } if((fout=creat(argv[2], 0666))<0) { error("Can't create %s", argv[2]); exit(1); } tmpfil = argv[3]; xdflg++; for (ip=kwtab; (np = ip->kwname); ip++) { for (sp = symbuf; sphclass = KEYWC; np->htype = ip->kwval; } xdflg = 0; treebase = treespace+10; putwrd(treebase); while(!eof) { extdef(); blkend(); } flush(); flshw(); exit(nerror!=0); } struct hshtab *lookup() { int ihash; register struct hshtab *rp; register char *sp, *np; ihash = 0; for (sp=symbuf; spname)) { for (sp=symbuf; sp= &hshtab[hshsiz]) rp = hshtab; } if(++hshused >= hshsiz) { error("Symbol table overflow"); exit(1); } rp->hclass = 0; rp->htype = 0; rp->hoffset = 0; rp->dimp = 0; sp = symbuf; if (xdflg) *sp =| 0200; for (np=rp->name; sp=0) { c = peeksym; peeksym = -1; if (c==NAME) mosflg = 0; return(c); } if (peekc) { c = peekc; peekc = 0; } else if (eof) return(EOF); else c = getchar(); loop: switch(ctab[c]) { case INSERT: /* ignore newlines */ inhdr = 1; c = getchar(); goto loop; case NEWLN: if (!inhdr) line++; inhdr = 0; case SPACE: c = getchar(); goto loop; case EOF: eof++; return(0); case PLUS: return(subseq(c,PLUS,INCBEF)); case MINUS: return(subseq(c,subseq('>',MINUS,ARROW),DECBEF)); case ASSIGN: if (subseq(' ',0,1)) return(ASSIGN); c = symbol(); if (c>=PLUS && c<=EXOR) return(c+30); if (c==ASSIGN) return(EQUAL); peeksym = c; return(ASSIGN); case LESS: if (subseq(c,0,1)) return(LSHIFT); return(subseq('=',LESS,LESSEQ)); case GREAT: if (subseq(c,0,1)) return(RSHIFT); return(subseq('=',GREAT,GREATEQ)); case EXCLA: return(subseq('=',EXCLA,NEQUAL)); case DIVIDE: if (subseq('*',1,0)) return(DIVIDE); com: c = getchar(); com1: switch(c) { case '\0': eof++; error("Nonterminated comment"); return(0); case '\n': if (!inhdr) line++; inhdr = 0; goto com; case 001: /* SOH, insert marker */ inhdr++; default: goto com; case '*': c = getchar(); if (c!='/') goto com1; } c = getchar(); goto loop; case PERIOD: case DIGIT: peekc = c; if ((c=getnum(c=='0'?8:10)) == FCON) cval = isn++; return(c); case DQUOTE: return(getstr()); case SQUOTE: return(getcc()); case LETTER: sp = symbuf; if (mosflg) { *sp++ = '.'; mosflg = 0; } while(ctab[c]==LETTER || ctab[c]==DIGIT) { if (sphclass==KEYWC) { cval = csym->htype; return(KEYW); } return(NAME); case AND: return(subseq('&', AND, LOGAND)); case OR: return(subseq('|', OR, LOGOR)); case UNKN: error("Unknown character"); c = getchar(); goto loop; } return(ctab[c]); } subseq(c,a,b) { if (!peekc) peekc = getchar(); if (peekc != c) return(a); peekc = 0; ö ÷ ø ù ú û ü ý ÿ     return(b); } getstr() { register int c; register char *t, *d; nchstr = 1; t = ".text"; d = ".data"; printf("%s;L%d:.byte ", (strflg?t:d), cval=isn++); while((c=mapch('"')) >= 0) { printf("%o,", c); nchstr++; } printf("0;.even;%s\n", (strflg?d:t)); return(STRING); } getcc() { register int c, cc; register char *ccp; cval = 0; ccp = &cval; cc = 0; while((c=mapch('\'')) >= 0) if(cc++ < ncpw) *ccp++ = c; if(cc>ncpw) error("Long character constant"); return(CON); } mapch(ac) { register int a, c; c = ac; loop: if((a=getchar())==c) return(-1); switch(a) { case '\n': case '\0': error("Nonterminated string"); peekc = a; return(-1); case '\\': switch (a=getchar()) { case 't': return('\t'); case 'n': return('\n'); case '0': return('\0'); case 'r': return('\r'); case '\n': if (!inhdr) line++; inhdr = 0; goto loop; } } return(a); } tree() { #define SEOF 200 #define SSIZE 20 int *op, opst[SSIZE], *pp, prst[SSIZE]; register int andflg, o; register struct hshtab *cs; int p, ps, os, *np; osleft = ossiz; space = treebase; op = opst; pp = prst; cp = cmst; *op = SEOF; *pp = 06; andflg = 0; advanc: switch (o=symbol()) { case NAME: cs = csym; if (cs->hclass==0 && cs->htype==0) if((peeksym=symbol())==LPARN) { /* set function */ cs->hclass = EXTERN; cs->htype = FUNC; } else if (initflg) cs->hclass = EXTERN; else { /* set label */ cs->htype = ARRAY; if (cs->hoffset==0) cs->hoffset = isn++; } *cp++ = block(2,NAME,cs->htype,cs->hdimp, cs->hclass,0); if (cs->hclass==EXTERN) { np = cs->name; for (o=0; o<4; o++) { pblock(*np); if (((*np++)&~0177) == 0) break; } } else pblock(cs->hoffset); goto tand; case FCON: if (!initflg) printf(".data;L%d:%o;%o;%o;%o;.text\n",cval,fcval); case CON: case SFCON: *cp++ = block(1,o,(o==CON?INT:DOUBLE),0,cval); goto tand; /* fake a static char array */ case STRING: *cp++ = block(3, NAME, ARRAY+CHAR,0,STATIC,0,cval); tand: if(cp>=cmst+cmsiz) { error("Expression overflow"); exit(1); } if (andflg) goto syntax; andflg = 1; goto advanc; case INCBEF: case DECBEF: if (andflg) o =+ 2; goto oponst; case COMPL: case EXCLA: if (andflg) goto syntax; goto oponst; case MINUS: if (!andflg) { if ((peeksym=symbol())==FCON) { fcval = - fcval; goto advanc; } if (peeksym==SFCON) { fcval = - fcval; cval =^ 0100000; goto advanc; } o = NEG; } andflg = 0; goto oponst; case AND: case TIMES: if (andflg) andflg = 0; else if(o==AND) o = AMPER; else o = STAR; goto oponst; case LPARN: if (andflg) { o = symbol(); if (o==RPARN) o = MCALL; else { peeksym = o; o = CALL; andflg = 0; } } goto oponst; case RBRACK: case RPARN: if (!andflg) goto syntax; goto oponst; case DOT: case ARROW: mosflg++; break; } /* binaries */ if (!andflg) goto syntax; andflg = 0; oponst: p = (opdope[o]>>9) & 077; if (o==COMMA && initflg) p = 06; opon1: ps = *pp; if (p>ps || p==ps && (opdope[o]&RASSOC)!=0) { putin: switch (o) { case LPARN: case LBRACK: case CALL: p = 04; } if(op>=opst+SSIZE) { error("expression overflow"); exit(1); } *++op = o; *++pp = p; goto advanc; } --pp; switch (os = *op--) { case SEOF: peeksym = o; build(0); /* flush conversions */ return(*--cp); case CALL: if (o!=RPARN) goto syntax; build(os); goto advanc; case MCALL: *cp++ = block(0,0,0,0); /* 0 arg call */ os = CALL; goto fbuild; case LPARN: if (o!=RPARN) goto syntax; goto advanc; case LBRACK: if (o!=RBRACK) goto syntax; build(LBRACK); goto advanc; } fbuild: build(os); goto opon1; syntax: error("Expression syntax"); errflush(o); return(0); } declare(askw, tkw, offset, elsize) { register int o; register int skw; skw = askw; do { offset =+ decl1(skw, tkw, offset, elsize); if (xdflg && skw!=MOS) return; } while ((o=symbol()) == COMMA); if (o==SEMI || o==RPARN && skw==ARG1) return(offset); decsyn(o); } decl1(askw, tkw, offset, elsize) { int t1, chkoff; register int type, skw; register struct hshtab *dsym; skw = askw; chkoff = 0; mosflg = skw==MOS; if ((peeksym=symbol())==SEMI || peeksym==RPARN) return(0); if ((t1=getype()) < 0) goto syntax; type = 0; do type = type<<2 | (t1 & 030); while (((t1=>>2) & 030)!=0); type =| tkw; dsym = defsym; if (!(dsym->hclass==0 || (skw==ARG && dsym->hclass==ARG1) || (skw==EXTERN && dsym->hclass==EXTERN && dsym->htype==type))) if (skw==MOS && dsym->hclass==MOS && dsym->htype==type) chkoff = 1; else redec(); dsym->htype = type; if (skw) dsym->hclass = skw; if (skw==ARG1) { if (paraml==0) paraml = dsym; else parame->hoffset = dsym; parame = dsym; } if (elsize) { dsym->lenp = dimp; dimtab[dimp++] = elsize; } elsize = 0; if (skw==MOS) { elsize = length(dsym); if ((offset&1)!=0 && elsize!=1) { offset++; elsize++; } if (chkoff && dsym->hoffset != offset) redec(); dsym->hoffset = offset; } if ((dsym->htype&030)==FUNC) { if (dsym->hclass!=EXTERN && dsym->hclass!=AUTO) error("Bad function"); dsym->hclass = EXTERN; } if (dsym->hclass==AUTO) { autolen =+ rlength(dsym); dsym->hoffset = -autolen; } else if (dsym->hclass==STATIC) { dsym->hoffset = isn; printf(".bss;L%d:.=.+%d.;.text\n", isn++, rlength(dsym)); } else if (dsym->hclass==REG) { if ((type&07)>CHAR && (type&030)==0 || (type&030)>PTR || regvar<3) error("Bad register %o", type); dsym->hoffset = --regvar; } syntax: return(elsize); } getype() { register int o, type; register struct hshtab *ds; switch(o=symbol()) { case TIMES: return(getype()<<2 | PTR); case LPARN: type = getype(); if ((o=symbol()) != RPARN) goto syntax; goto getf; case NAME: defsym = ds = csym; type = 0; ds->ssp = dimp; getf: switch(o=symbol()) { case LPARN: if (xdflg) { xdflg = 0; ds = defsym; declare(ARG1, 0, 0, 0); defsym = ds; xdflg++; } else if ((o=symbol()) != RPARN) goto syntax; type = type<<2 | FUNC; goto getf; case LBRACK: if ((o=symbol()) != RBRACK) { if (o!=CON) goto syntax; for (o=ds->ssp; oname); } # #include "c0h.c" /* * info on operators: * 01-- is binary operator * 02-- left (or only) operand must be lvalue * 04-- is relational operator * 010-- is assignment-type operator * 020-- non-float req. on left * 040-- non-float req. on right * 0100-- is commutative * 0200-- is right, not left-associative * 0400-- is leaf of tree * *0XX000-- XX is priority of operator */ int opdope[] { 000000, /* EOF */ 000000, /* ; */ 000000, /* { */ 000000, /* } */ 036000, /* [ */ 002000, /* ] */ 036000, /* ( */ 002000, /* ) */ 014201, /* : */ 007001, /* , */ 000000, /* 10 */ 000000, /* 11 */ 000000, /* 12 */ 000000, /* 13 */ 000000, /* 14 */ 000000, /* 15 */ 000000, /* 16 */ 000000, /* 17 */ 000000, /* 18 */ 000000, /* 19 */ 000400, /* name */ 000400, /* short constant */ 000400, /* string */ 000400, /* float */ 000400, /* double */ 000000, /* 25 */ 000000, /* 26 */ 000000, /* 27 */ 000000, /* 28 */ 000000, /* 29 */ 034202, /* ++pre */ 034202, /* --pre */ 034202, /* ++post */ 034202, /* --post */ 034220, /* !un */ 034202, /* &un */ 034220, /* *un */ 034200, /* -un */ 034220, /* ~un */ 036001, /* . (structure reference) */ 030101, /* + */ 030001, /* - */ 032101, /* * */ 032001, /* / */ 032001, /* % */ 026061, /* >> */ 026061, /* << */ 020161, /* & */ 017161, /* | */ 017161, /* ^ */ 036001, /* -> */ 000000, /* int -> double */ 000000, /* double -> int */ 016001, /* && */ 015001, /* || */ 000000, /* 55 */ 000000, /* 56 */ 000000, /* 57 */ 000000, /dtsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!  ¼ü‡ö " ü‡ß �Àetüÿ÷ ZÅEðÿWuÅe ºÄºT!ºü‡‡ÎeÀ ý· ý÷5àúÀ ºÎå‡& �ŠÀÀ ºõ÷ €À  ºîf Ìür f rvÐÁÔý‰r t@PÁ ÿ!á ºáÿáÉ‹þ�‡Àpÿˆ È‹þÀÎ?ÀE€ÿ A‡ Z‚Àe  À ÷‹®?ý À ÷ ìÿÀŠ÷ äÿ ÷ ÞÿÀ ‡7ˆ?‡ 000000, /* 87 */ 000000, /* 88 */ 000000, /* 89 */ 014201, /* ? */ 000000, /* 91 */ 000000, /* 92 */ 000000, /* 93 */ 000000, /* 94 */ 000000, /* 95 */ 000000, /* 96 */ 000000, /* 97 */ 000000, /* 98 */ 000000, /* 99 */ 036001, /* call */ 036001, /* mcall */ 000000, /* goto */ 000000, /* jump cond */ 000000, /* branch cond */ 000000, /* 105 */ 000000, /* 106 */ 000000, /* 107 */ 000000, /* 108 */ 000000, /* 109 */ 000000 /* force r0 */ }; /* * conversion table: * 0100-- convert left operand * 0*0XX-- XX is conversion number, to wit: * 001: int -> float * 002: int -> *int * 003: int -> *float * 004: int -> *double * 005: *int -> int * 006: *float -> int * 007: *double -> int * 010: float -> int * 011: *struct -> int * 012: int -> *struct */ char cvtab[] { 0000, /* i : i */ 0000, /* i : c */ 0103, /* i : f */ 0103, /* i : d */ 0077, /* i : s */ 0101, /* i : *i */ 0000, /* i : *c */ 0101, /* i : *f */ 0101, /* i : *d */ 0101, /* i : *s */ 0101, /* i : ** */ 0000, /* c : i */ 0000, /* c : c */ 0103, /* c : f */ 0103, /* c : d */ 0077, /* c : s */ 0101, /* c : *i */ 0000, /* c : *c */ 0101, /* c : *f */ 0101, /* c : *d */ 0101, /* c : *s */ 0101, /* c : ** */ 0003, /* f : i */ 0003, /* f : c */ 0000, /* f : f */ 0000, /* f : d */ 0077, /* f : s */ 0077, /* f : *i */ 0077, /* f : *c */ 0077, /* f : *f */ 0077, /* f : *d */ 0077, /* f : *s */ 0077, /* f : ** */ 0003, /* d : i */ 0003, /* d : c */ 0000, /* d : f */ 0000, /* d : d */ 0077, /* d : s */ 0077, /* d : *i */ 0077, /* d : *c */ 0077, /* d : *f */ 0077, /* d : *d */ 0077, /* d : *s */ 0077, /* d : ** */ 0077, /* s : i */ 0077, /* s : c */ 0077, /* s : f */ 0077, /* s : d */ 0077, /* s : s */ 0077, /* s : *i */ 0077, /* s : *c */ 0077, /* s : *f */ 0077, /* s : *d */ 0077, /* s : *s */ 0077, /* s : ** */ 0001, /* *i : i */ 0001, /* *i : c */ 0077, /* *i : f */ 0077, /* *i : d */ 0077, /* *i : s */ 0002, /* *i : *i */ 0077, /* *i : *c */ 0077, /* * i : *f */ 0077, /* *i : *d */ 0077, /* *i : *s */ 0002, /* *i : ** */ 0000, /* *c : i */ 0000, /* *c : c */ 0077, /* *c : f */ 0077, /* *c : d */ 0077, /* *c : s */ 0077, /* *c : *i */ 0000, /* *c : *c */ 0077, /* *c : *f */ 0077, /* *c : *d */ 0077, /* *c : *s */ 0077, /* *c : ** */ 0001, /* *f : i */ 0001, /* *f : c */ 0077, /* *f : f */ 0077, /* *f : d */ 0077, /* *f : s */ 0077, /* *f : *i */ 0077, /* *f : *c */ 0002, /* *f : *f */ 0077, /* *f : *d */ 0077, /* *f : *s */ 0077, /* *f : ** */ 0001, /* *d : i */ 0001, /* *d : c */ 0077, /* *d : f */ 0077, /* *d : d */ 0077, /* *d : s */ 0077, /* *d : *i */ 0077, /* *d : *c */ 0077, /* *d : *f */ 0002, /* *d : *d */ 0077, /* *d : *s */ 0077, /* *d : ** */ 0001, /* *s : i */ 0001, /* *s : c */ 0077, /* *s : f */ 0077, /* *s : d */ 0077, /* *s : s */ 0077, /* *s : *i */ 0077, /* *s : *c */ 0077, /* *s : *f */ 0077, /* *s : *d */ 0002, /* *s : *s */ 0077, /* *s : ** */ 0001, /* ** : i */ 0001, /* ** : c */ 0077, /* ** : f */ 0077, /* ** : d */ 0077, /* ** : s */ 0002, /* ** : *i */ 0077, /* ** : *c */ 0077, /* ** : *f */ 0077, /* ** : *d */ 0077, /* ** : *s */ 0002 /* ** : ** */ }; /* * character type table */ char ctab[] { EOF, INSERT, UNKN, UNKN, UNKN, UNKN, UNKN, UNKN, UNKN, SPACE, NEWLN, UNKN, UNKN, UNKN, UNKN, UNKN, UNKN, UNKN, UNKN, UNKN, UNKN, UNKN, UNKN, UNKN, UNKN, UNKN, UNKN, UNKN, UNKN, UNKN, UNKN, UNKN, SPACE, EXCLA, DQUOTE, UNKN, UNKN, MOD, AND, SQUOTE, LPARN, RPARN, TIMES, PLUS, COMMA, MINUS, PERIOD, DIVIDE, DIGIT, DIGIT, DIGIT, DIGIT, DIGIT, DIGIT, DIGIT, DIGIT, DIGIT, DIGIT, COLON, SEMI, LESS, ASSIGN, GREAT, QUEST, UNKN, LETTER, LETTER, LETTER, LETTER, LETTER, LETTER, LETTER, LETTER, LETTER, LETTER, LETTER, LETTER, LETTER, LETTER, LETTER, LETTER, LETTER, LETTER, LETTER, LETTER, LETTER, LETTER, LETTER, LETTER, LETTER, LETTER, LBRACK, UNKN, RBRACK, EXOR, LETTER, UNKN, LETTER, LETTER, LETTER, LETTER, LETTER, LETTER, LETTER, LETTER, LETTER, LETTER, LETTER, LETTER, LETTER, LETTER, LETTER, LETTER, LETTER, LETTER, LETTER, LETTER, LETTER, LETTER, LETTER, LETTER, LETTER, LETTER, LBRACE, OR, RBRACE, COMPL, UNKN }; # /* C compiler Copyright 1972 Bell Telephone Laboratories, Inc. */ #include "c0h.c" extdef() { register o, width; int type, elsize, nel; char *cs; register struct hshtab *ds; if(((o=symbol())==EOF) || o==SEMI) return; type = 0; xdflg++; xxx: if (o==KEYW) { if (cval==EXTERN) { o = symbol(); goto xxx; } if ((type=cval)>STRUCT) goto syntax; /* not type */ elsize = 0; if (type==STRUCT) { elsize = strdec(&type, 0); blkhed(); } } else { if (o!=NAME) goto syntax; peeksym = o; } do { defsym = 0; strflg = 1; decl1(EXTERN, type&07, 0, elsize); if ((ds=defsym)==0) return; cs = ds->name; *cs =| 0200; /* non-deletable */ printf(".globl _%.8s\n", cs); xdflg = 0; type = ds->type; if ((type&030)==FUNC && ((peeksym=symbol())==LBRACE || peeksym==KEYW)) { cfunc(); return; } nel = 1; while ((ds->type&030)==ARRAY) { nel = dimtab[ds->ssp]; ds->type = decref(ds->type); } width = length(ds); if (ds->type==STRUCT) { nel =* width/2; width = 2; } ds->type = type; cinit(cs, type, nel, width); } while ((o=symbol())==COMMA); if (o==SEMI) return; syntax: error("External definition syntax"); errflush(o); statement(0); } cfunc(cs) char *cs; { register savdimp; strflg = 0; savdimp = dimp; printf(".text\n_%.8s:\n", cs); declist(ARG); regvar = 5; retlab = isn++; statement(1); printf("L%d:jmp rretrn\n", retlab); dimp = savdimp; } cinit(cs, type, nel, awidth) char *cs; { register o, ninit, width; width = awidth; if ((peeksym=symbol())==COMMA || peeksym==SEMI) { printf(".comm _%.8s,%o\n", cs, (nel*width+1)&~01); return; } ninit = 0; printf(".data;_%.8s=.\n", cs); if ((o=symbol())==LBRACE) { do ninit = cinit1(cs, type, width, ninit); while ((o=symbol())==COMMA); if (o!=RBRACE) peeksym = o; } else { peeksym = o; ninit = cinit1(cs, type, width, 0); } if (ninit1 && (type&030)!=ARRAY && (type&07)!=STRUCT) error("Too many initializers"); if (((nel&width)&01) != 0) printf(".even\n"); } cinit1(cs, type, width, ninit) char *cs; { float sf; register struct tnode *s; if ((peeksym=symbol())==STRING && type==ARRAY+CHAR) { peeksym = -1; if (ninit) bxdec(); printf(".text;_%.8s=L%d\n", cs, cval); return(nchstr); } if (peeksym==RBRACE) return(ninit); initflg++; s = tree(); initflg = 0; switch(width) { case 1: printf(".byte "); case 2: if (s->op==CON) { printf("%d.\n", s->value); break; } rcexpr(block(1,INIT,0,0,s), regtab); break; case 4: sf = fcval; printf("%o;%o\n", sf); goto flt; case 8: printf("%o;%o;%o;%o\n", fcval); flt: if (s->op==FCON || s->op==SFCON) break; default: bxdec(); } return(++ninit); } bxdec() { error("Inconsistent external initialization"); } statement(d) { register o, o1, o2; int o3, o4; struct tnode *np; stmt: switch(o=symbol()) { case EOF: error("Unexpected EOF"); case SEMI: case RBRACE: return; case LBRACE: if(d) printf("jsr r5,rsave; %o\n", blkhed()-4); while (!eof) { if ((o=symbol())==RBRACE) return; peeksym = o; statement(0); } error("Missing '}'"); return; case KEYW: switch(cval) { case GOTO: if (o1 = simplegoto()) branch(o1); else dogoto(); goto semi; case RETURN: doret(); goto semi; case IF: np = pexpr(); o2 = 0; if ((o1=symbol())==KEYW) switch (cval) { case GOTO: if (o2=simplegoto()) goto simpif; dogoto(); goto hardif; case RETURN: if (nextchar()==';') { o2 = retlab; goto simpif; } cbranch(np, o1=isn++, 0); doret(); label(o1); o2++; goto hardif; case BREAK: o2 = brklab; goto simpif; case CONTIN: o2 = contlab; simpif: chconbrk(o2); cbranch(np, o2, 1); hardif: if ((o=symbol())!=SEMI) goto syntax; if ((o1=symbol())==KEYW && cval==ELSE) goto stmt; peeksym = o1; return; } peeksym = o1; cbranch(np, o1=isn++, 0);  !"$%&'()*+,-./01 statement(0); if ((o=symbol())==KEYW && cval==ELSE) { o2 = isn++; branch(o2); label(o1); statement(0); label(o2); return; } peeksym = o; label(o1); return; case WHILE: o1 = contlab; o2 = brklab; label(contlab = isn++); cbranch(pexpr(), brklab=isn++, 0); statement(0); branch(contlab); label(brklab); contlab = o1; brklab = o2; return; case BREAK: chconbrk(brklab); branch(brklab); goto semi; case CONTIN: chconbrk(contlab); branch(contlab); goto semi; case DO: o1 = contlab; o2 = brklab; contlab = isn++; brklab = isn++; label(o3 = isn++); statement(0); label(contlab); contlab = o1; if ((o=symbol())==KEYW && cval==WHILE) { cbranch(tree(), o3, 1); label(brklab); brklab = o2; goto semi; } goto syntax; case CASE: if ((o=symbol())!=CON) { if (o!=MINUS || (o=symbol())!=CON) goto syntax; cval = - cval; } if ((o=symbol())!=COLON) goto syntax; if (swp==0) { error("Case not in switch"); goto stmt; } if(swp>=swtab+swsiz) { error("Switch table overflow"); } else { swp->swlab = isn; (swp++)->swval = cval; label(isn++); } goto stmt; case SWITCH: o1 = brklab; brklab = isn++; np = pexpr(); chkw(np); rcexpr(block(1,RFORCE,0,0,np), regtab); pswitch(); brklab = o1; return; case DEFAULT: if (swp==0) error("Default not in switch"); if ((o=symbol())!=COLON) goto syntax; label(deflab = isn++); goto stmt; case FOR: o1 = contlab; o2 = brklab; contlab = isn++; brklab = isn++; if (o=forstmt()) goto syntax; label(brklab); contlab = o1; brklab = o2; return; } error("Unknown keyword"); goto syntax; case NAME: if (nextchar()==':') { peekc = 0; o1 = csym; if (o1->hclass>0) { error("Redefinition"); goto stmt; } o1->hclass = STATIC; o1->htype = ARRAY; if (o1->hoffset==0) o1->hoffset = isn++; label(o1->hoffset); if ((peeksym=symbol())==RBRACE) return; goto stmt; } } peeksym = o; rcexpr(tree(), efftab); semi: if ((o=symbol())==SEMI) return; syntax: error("Statement syntax"); errflush(o); goto stmt; } #define forsps 150 forstmt() { int l, savxpr[forsps]; int *st, *ss; register int *sp1, *sp2, o; if ((o=symbol()) != LPARN) return(o); if ((o=symbol()) != SEMI) { /* init part */ peeksym = o; rcexpr(tree(), efftab); if ((o=symbol()) != SEMI) return(o); } label(contlab); if ((o=symbol()) != SEMI) { /* test part */ peeksym = o; rcexpr(block(1,CBRANCH,tree(),brklab,0), cctab); if ((o=symbol()) != SEMI) return(o); } if ((peeksym=symbol()) == RPARN) { /* incr part */ peeksym = -1; statement(0); branch(contlab); return(0); } l = contlab; contlab = isn++; st = tree(); if ((o=symbol()) != RPARN) return(o); ss = space; if (space-treebase > forsps) { error("Expression too large"); space = &treebase[forsps]; } sp2 = savxpr; for (sp1=treebase; sp1hoffset = 0; cs = paraml; paraml = paraml->hoffset; if (cs->htype==FLOAT) cs->htype = DOUBLE; cs->hoffset = pl; cs->hclass = AUTO; if ((cs->htype&030) == ARRAY) { cs->htype =- 020; /* set ptr */ cs->ssp++; /* pop dims */ } pl =+ rlength(cs); } for (cs=hshtab; csname[0] == '\0') continue; /* check tagged structure */ if (cs->hclass>KEYWC && (cs->htype&07)==RSTRUCT) { cs->lenp = dimtab[cs->lenp]->lenp; cs->htype = cs->htype&~07 | STRUCT; } if (cs->hclass == STRTAG && dimtab[cs->lenp]==0) error("Undefined structure: %.8s", cs->name); } osleft = ossiz; space = treebase; rcexpr(block(1, SETREG, regvar), regtab); return(autolen); } blkend() { register struct hshtab *cs; for (cs=hshtab; csname[0]) { if (cs->hclass==0) error("%.8s undefined", cs->name); if((cs->name[0]&0200)==0) { /* not top-level */ cs->name[0] = '\0'; hshused--; } } } } errflush(ao) { register o; o = ao; while(o>RBRACE) /* ; { } */ o = symbol(); peeksym = o; } declist(skwd) { int o, elsize, ndec; register offset, tkw, skw; offset = 0; loop: ndec = 0; tkw = -1; skw = skwd; elsize = 0; while ((o=symbol())==KEYW) switch (cval) { case AUTO: case STATIC: case EXTERN: case REG: if (skw) error("Conflict in storage class"); skw = cval; ndec++; if (tkw<0) continue; goto list; case STRUCT: o = cval; elsize = strdec(&o, skw==MOS); cval = o; case INT: case CHAR: case FLOAT: case DOUBLE: ndec++; if (tkw>0) error("Type clash"); tkw = cval; if (skw==0) continue; goto list; default: goto brk1; } brk1: peeksym = o; if (ndec==0) return(offset); list: if (tkw<0) tkw = INT; if (skw==0) skw = AUTO; offset = declare(skw, tkw, offset, elsize); goto loop; } strdec(tkwp, mosf) int *tkwp; { register elsize, o; int sbrk; register struct hshtab *ssym; struct hshtab *ds; mosflg = 1; ssym = 0; if ((o=symbol())==NAME) { ssym = csym; if (ssym->hclass==0) { ssym->hclass = STRTAG; ssym->lenp = dimp; dimtab[dimp++] = 0; } if (ssym->hclass != STRTAG) redec(); mosflg = mosf; o = symbol(); } mosflg = 0; if (o!=LPARN && o!=LBRACE) { if (ssym==0) { syntax: decsyn(o); return(0); } if (ssym->hclass!=STRTAG) error("Bad structure name"); if ((elsize = dimtab[ssym->lenp])==0) { *tkwp = RSTRUCT; elsize = ssym; } peeksym = o; } else { ds = defsym; sbrk = o+1; /* ), } */ mosflg = 0; elsize = declist(MOS); if (elsize&01) elsize++; defsym = ds; if ((o = symbol()) != sbrk) /* ), } */ goto syntax; if (ssym) { if (dimtab[ssym->lenp]) error("%.8s redeclared", ssym->name); dimtab[ssym->lenp] = elsize; } } return(elsize); } ¸L61ÆL62ÐL63ÔL64ÜL65æL66úL67 L68<L69XL70fL71rL72ŒL73¢L74¼L75ÒL76èL77L78L79 L81DL82L83œ/L84 L85*L860L874L886L80\L89fL90fL10001vL10002zL91’L92–L93œL94¢L95´L96´L10003ÈL97ØL98ÐL99ØL100L17‚L18ˆL19’L20–L21žL23ÀL24^/L25ðL26h/L27"L28v/L294L30dL32>L33NL34LL31^L35zL36ŠL22¢L38´L39ÆL40ÚL41L42êL43üL44L37bL45L460L47†/L48LL49TL50^L52ŒL53†L51bL54œL55®L56¨L57®L59HL60??????????????????????????????????????????w~}~"z,/y*( )x+||||||||||?PAZ{{{{{{{{{{{{{{{{{{{{{{{{{{1{{{{{{{{{{{{{{{{{{{{{{{{{{{0&‰‰‰www z÷†…&w n÷À€U…‰‰¶w w&w ¬÷€Àw ¢÷…‰crt0.ostartc00.oL1L2L3 L4&L5.L66L7<L8DL9LL10VL11\L12dL13hL14nL15tL16|atement syntaxUndefined structure: %.8s%.8s undefinedConflict in storage classType clashBad structure name%.8s redeclaredIllegal indirectionjbr L%d L%d:Bad structureCompiler error (length)Break/continue error<<�‚8‚8‚8‚8�8‚8�8€8�8 .even jsr pc,2(r5) cmp r0,$'k bne 3f mov $rkblk,r0 br 1f 3: cmp r0,$'p bne 2b mov $rpblk,r0 1: mov r0,rxblk mov $'\n,r0 jsr pc,(r5) jsr pc,4(r5) .even jsr pc,numb mov r0,bno jsr pc,4(r5) .even jsr pc,numb mov r0,r1 beq 2f 1: jsr pc,rblk dec r1 bne 1b 2: jsr pc,4(r5) .even jsr pc,numb mov r0,r1 1: jsr pc,rblk jsr pc,wblk dec r1 bne 1b jsr pc,rew rts pc numb: clr r1 1: jsr pc,2(r5) cmp r0,$'\n beq 1f sub $'0,r0 cmp r0,$9 bhi 2f mul $10.,r1 add r0,r1 br 1b 1: mov r1,r0 rts pc 2: jsr pc,4(r5) .even tst (sp)+ rts pc mts = 172520 mtc = 172522 mtbrc = 172524 mtcma = 172526 rblk: bit $2,*$mts bne rblk tstb *$mtc bge rblk mov $-512.,*$mtbrc mov $buf,*$mtcma mov $60003,*$mtc 1: tstb *$mtc bge 1b tst *$mtc bge 1f mov $-1,*$mtbrc mov $60013,*$mtc br rblk 1: rts pc rew: mov $60017,*$mtc rts pc wblk: mov bno,r0 inc bno mov r1,-(sp) mov r0,r1 clr r0 jmp *rxblk rpda = 176724 rpblk: div $10.,r0 mov r1,-(sp) mov r0,r1 clr r0 div $20.,r0 bisb r1,1(sp) mov $rpda,r1 mov (sp)+,(r1) mov r0,-(r1) br 1f rkda = 177412 rkblk: div $12.,r0 ash $4.,r0 bis r1,r0 mov $rkda,r1 mov r0,(r1) 1: mov $buf,-(r1) mov $-256.,-(r1) mov $3,-(r1) 1: tstb (r1) bge 1b mov (sp)+,r1 rts pc buf: .=.+512. rxblk: .=.+2 bno: .=.+2 tèÀ% ï!7ü 7ö ¦ffß ˆÆeõ  AÁàBpNæ¶2ß 4+Ö õW-@ÀEçÿÀ% @ÀEøÿÀ%ÎÀ2ß °@�A @@À5ÎÖ2ß 4+wŒw z÷ Ôç7jÀ%W-÷ÿÿV@ ÷ îÎl,fæÞ2ß 4+–%Àd,_ž×-.@ a· ^,÷ ì7 T,@AÎð2ß 4+# æø2ß 4+Ö _” && & æhæ÷ æûÆe &ß ø&Ö 17õð+5üöÿ5ÿöÿ&øæþ2÷ ìÆe 7õÔ+&øæ3÷ ØÆe ##÷ 2Àå ƒ÷À x„ðøl2lllNµ @ wrw `Î3ß °w`w N÷ ¨æ_^ Î:3ß °_° @ ÷ :ÎeüÿæJ3ß 4+Ö À,+øÿ&ß l%Ö 5öÿ÷  !_7î7 /÷/Nöÿ& føÿÎEøÿæß p ÆeÀä._$€Àe5òÿýÕ€òÿNòÿæN2ß 4+Ö 7 ¼.µøÿ@øÿÀEçÿÀ%÷ êé7€À%×-v÷ –Hõôÿ€ÀEçÿÀ% €œÀ 5BGôÿŽß l&2ìŽß ¸'—,Á� upôÿuôÿÃrøÿÎfôÿføÿfòÿß |Æe÷ déÀ% „! Î\2ß °ß d$ ß ´wìw Ú7 .ÄÔ.Næx2ß 4+Ö Î ß „$÷º.À¨· ¤7²-Îß ´Î¦-æ†2ß 4+Ö 7’.w˜w †B ÷ Üè7rÀ% ×-hABpNŽ ÎEfæ–2ß 4+–%_„ Næ¦2ß 4+Ö ÷ –èÀ%Φffß ˆÆe÷ ×,À³ŠÀ�-÷eŠ-ÈÎÿÿ&÷ RÖ &æß ü–%Î#ß ì÷åd-À`-wÔw Â@À%!Î 2ß °wªw ˜D!ÀE‡ÿÀ%hÀ ÀEàÿ!ÀEøÿÀeÀ wdw R· v0÷ ŽÄj3÷d3Î6æ$2ß 4+Ö Nff f fffß 4+Æe Î ß -7&3w w ø@ÀeõeÃt,@õ À ß >öÀwÖw ÄÀN,÷eH,H÷ ä/Àà/Î*2ß °Îß þ,w¤w ’D##$Î>2ß °w‚w p ÷ Êê_$!_$5 øÿ· j/!$×-d/÷ žêõÀT/5øÿÀ%_5 öÿW-øÿ  @ÀeŽæÀ€À&fôÿfæß Æe Á|/÷ev/ @èÿ÷åh/Àd/Îß ~'fèÿ& æß `ÆeÁD/÷e>/ w´w ¢@2Ä*Ä+N & & ææß Æef& f&æß Æe 'Ä3Ä4N& f&æß Æe Àå ƒÀ xâlrª°Îø1ß °@ww DCBô— ÿÿ´ Žæ÷ DÖ &&ß ü–%*Žæ÷ `Ö &&ß ü–%Žæ&ß ü–%Àå ƒÀ xr ŒŒŒŒŒ 8ŒŒŒPPw„w rDÀEçÿÀ%&æ÷ êÖ &æ#æß Æew@w .CÀÀEçÿÀ%×"ì@øÿÀEçÿÀ%Î$ß ì_\ ÷ °  1¶1Ä1Ö1õ5îÿÎß põ5îÿÎß @õ5 îÿŽß @õ5îÿÎæ&fæß ÆeÁ*1÷e$1 _\W-øÿ5ôÿ2 5 øÿ_ÈNøÿß j&&÷ ÈÖ Wp �eAœ²5uêÿ@êÿÀE¿ÿ5ìÿ@ìÿ@øÿ5ôÿW-P!W-øÿ 5ôÿ@ìÿ_ÈW-êÿ_ÈõEÀÿêÿ@êÿ]W-êÿ?õ5îÿ!W-øÿÎä1ß °IW-êÿ5 ôÿõ5îÿ5 êÿ<W-)êuêÿèÿ5 êÿ2@ìÿ!õ5îÿW-êÿ 5 ìÿõêÿ5ôÿÏŽß ~'fêÿfôÿæß `ÆeÎß ~'fêÿfôÿ¦ß `Æeõ5îÿW-= !W-øÿõe5 ôÿŽææ&÷ nÖ &ædæß Æe Á‚3÷e|3 _\×"#×" Àf3÷e`3È_\ÀEçÿÀ%Îf1ß °Îæ&÷ Ö &æ$æß ÆeÁ 3÷e3 _\×"$Àðß  &Á1Àò2÷eì2È_\×"×,õÎæ&÷ ÌÖ &fæß ÆeÁ¬2÷e¦2 _\Îz1ß °_ Îß pÎß ~'ææ&fæß Æe Áj2÷ed2 _\ÀZ2÷eT2ÈÎß @ó Î$ß ì÷å82À42—"—,Ί1ß °À2÷e2Èuøÿôÿ@ôÿÀEçÿÀ%Nôÿß l&5ôÿ²ŠŽfôÿæß ü–%Î#ß ìŽ & æææß ÆeÁ¶1÷e°1 Î(ß MSRQPONLJIHGFE:A@?>=<;98765432\edcba`_^][ZYXWVUtÀUÚ÷ fôÀ%$!L€œ7!ò9 Á fÎeBGÁü8~p^„ ñÀÔ9· Ð9À ðä8BG÷ ôÀ%,À¶9· ²9À ðBGÀtÀU¡ Àå ƒÀ x‚ü ˆ¸ 7t À ÷ † ž v *¦ß ¶Àÿÿw^w LÎþ0ß °Nß d$wDw 2ÎD8Îeæ1ß °Ö w(w W-Î(ß ìõ$@À 5Ô4îÿõ5îÿ÷åv4Àr4ß Ôß �µøÿ÷åX4ÀT4W-# Îß ÔW-dÎß �Ä5 èÿ@_À4÷e4È_\5!øÿÎ"1ß °5ôÿ_ÈŽæ& & fæß Æe Áà3÷eÚ3 _\—"Î<1ß °uøÿôÿ_ÈÀEçÿÀ%ÎP1ß °þ..d& ð€&Ð 6÷ ’–% ‰intcharfloatdoublestructautoexternstaticregistergotoreturnifwhileelseswitchcasebreakcontinuedodefaultforw `-êW-Î^/ß °Îß þ, @&ß è-Ö 7`K @æh/ß °Ö Îß þ,ζ@&ß à,Ö 7&I @æv/ß °Ö Îß þ,@7 F· ðEÂ/€Ä 7!7†À”�à ø÷ T˳Âeè7 ¸E@Àe&ü7ªEΦEß Ê)ÀœE÷ ÷ ˜"ø÷ ¾+÷ b( ÷ ˜E€ ß þ,wn,w \,5 øÿà 7× 7†À”ÀE€ÿ5`øÿ÷AøÿÀ rÈWtÁe7DÀe’à 7× 7† × —"„,×  —"„,õöÿ÷ ¬2ÀÊ× Àú:·ô:Àð:°·è:@ ò�´;À®;· ª;À p BG5 × Žß ¸'5 õ5W- µ µ @öÿµ,÷ *r€ÀEçÿÀ% —"—"ÎÈ0ß °Ê—" Žß l(7`4:À0: 27—"ò"Žß l(æø!· ô!æÖ0ß 4+–%_\ —"ÀEøÿÀ%Ä5 ÀEçÿÀ%×-Ì:æî0ß °Ö ÷ ¸:À´:2@ w® w œ ÷ öô_’÷ ìÿtÀU_²÷ Üÿ÷ ÖôÀ%_¦ À€97v9 ò�\:÷ ²ô\Àd97 ^9ÂX9 & & æ ß  Æe·B9· @9÷ €ôÀ%\À.Àõ¤ÿ ÷ ®#ö ö ö d @øÿAÁeøÿ ‡Î¢0ß °Îß þ,õeøÿ@øÿÈõeÎÿ@ÎÿH¤ÿ_$õåÎÿ@øÿõåøÿ5 ÿ6÷–$ ß ì÷å"9À9H× ;N ÿß ì_$ & & & ß ÆeÁô8÷eî8 õd ÿ×  _$× Îß ì_$÷ Ú"¾ ´ ~ d� ef Èî N ÿß ì_Рζ0ß °Îß d$ _ w#w ð"CN ffæß p Æe5`Àæ;× ÷ ÷À% ç!!× @ß ¶w¤"w ’"C5 öÿ × € 7°;÷ Öö7l#À%×-b# _b ÷ º5øÿ_\  tAøÿÁEçÿ@P@øÿtþÿ5øÿÀ5îD]Â:;€× —"2?æp0÷ :#Æe Î"?& × & æææß ÆeÁt;÷en; Îò>& æ& æææß Æe ÁF;÷e@; ×-:;êC‡ÎŽ0ß °Îß þ,_ú Ä_$Ãe_ª _ú _ª !÷ Äù7Z&À%7õv>Àñ7øp>_$×-B& 7õ`>Àñ7øZ>À€7xP>ÀL>_$Ã% c × /Ã#Ã$V÷ `ù× Ãe÷è%Ãd E_ú @· >87Àå -ƒ1À xD þ                         .þ.âþ          ‚‚    Ž      Ž*   šä        ä    * _ú  ÀÀ Ô4t÷ÿÀEÀÿ5¤ÿ× Àv=õ¤ÿuÎÿ¢ÿu-¤ÿ¢ÿ u-¤ÿ¢ÿ4ÀÀ ð5€Ô4ŽÎæ60ß 4+Ö Àw(w ö'7 AÂ$G Î'ß NÀƒ À%‘ó× ÎB0ß °ÀwÆ'w ´'C÷ 'À Àÿÿ?1ÎZ0ß °7 @Àÿÿ_æ÷ ì&À ,À ) 'À $Àž@· Z(7 ”@Õ÷ ü&ž ”0Žn˜rˆtÌ ÷ Þ&ll €\âw*'w '^÷ôD@÷"@š<@ÀeÐÿ5øÿ@Àe¦ÿ5Îÿ÷šC‚<ýÈøÿýÎÿ ÷ >û_2 Âð?€"€÷ &û7¼'À%ÊòÀä?Ê ò€ÀŒ'· ˆ'2 ¦¦¦ææß Æe Áþ;÷eø; —"€Àe5žÿ × Nžÿß >@žÿõežÿÈ5€ÿƒ ïŽß ><ÀX? 7õ:?&øæ*ß f–%À À+_b÷ h)· CΜ/ß ° _bÀC· Ø*7 Cê· Cç÷ 6)!/ä ÷ h)0  6*4÷ )_®7®B!0ÎÎ ß *À%Àt*· p*7’Bf÷ üc÷ l`à 7À’BÓ•.7 ˆB¬,6{¬,6|× 7†‘÷ œ(î× 7†Šû72B÷ ¼ü74B×/0BÀ(B7$BÀ.À+Î5æ/æ&ß f–%!Î6æ0æ|ß f–%β/ß °÷ 0(_® ÷ v(RZÄ/Þ/ð/þ/œ,6w®(w œ(À¨A÷ ú'7žAõ-šA@7 ŒA@w~(w l(÷ŒAÃ0Â0ÀP)· L)7nAÀ|Aæ¦æ$0ß 4+–%Î"ß N æ20ß 4+Ö · DAñÀHA€”ÀE€ÿÀ¤÷1ÄeÀ%–C‚Ä7ä· þ4Àú4À%ÈΆ/ß °Îß þ, 4 4 4 à 7ÀÚDËÕ€Àe× 7†Ò”ûw®+w œ+À�, ÄŠ,÷ÿÿ„,!7 ¶D_bÀˆDÄ‚D7 ~D ÀzD _b÷ Ä*œ,6_H÷‚D÷ ®*ôÀvD· 2,7 lD÷ ˜*é· :D _bÎæ(&ß f–%_bÎæ2æ)æ>÷ XÆe&&ß f–%_bÎ& æ ß f–%À ÀP_b÷ &ÿ!(!1Àe_b!PÀ<_b7–+ÀP_bÎ& &ß f–%À À._bÎ>æ?æ=ß f–%_bÎ& &ß f–%À À-_bÎ@æAæ=ß f–%_bÎ=æ"æ=ß f–%_b ææê)ø6ð ð€&Ð 6÷ –% ‰w Ø(ìW-Î*ß ¢Îß È' @&ß Ô(Ö 7ÈF @æ*ß ¢Ö Îß È'ζ@&ß ª'Ö 7ŽD @æ(*ß ¢Ö Îß È'@7DB÷ X7HBÀDBAÁeü †Î8*ß ¢Îß È'÷ p';× #4ÄB÷ ÷ ÷ À 5þ)ü÷ 7êAà À÷ úù@üŽ&æÜAß –% ¦ß ¦ Ö 7 ÀA fü¦ß œ–%Îß Ò'ÁÀ¦AÎJ*ß þ%÷ À& ÷ ŠA€ ß È'w–'w „'@ _˜W-èBõà$õøÿ@øÿÀ 5Ò-îÿõ5îÿÄÄ5òÿN&ß ,Ö 5öÿõ5îÿõìÿ@ìÿ5ðÿNfìÿß ,Ö 5ôÿu/_cinit"|_stateme"´_declist"„$_cinit1"ˆ_bxdec"¢_rcexpr"ø&_simpleg"Œ(_branch"N'_dogoto"4)_doret"Š)_pexpr"&"_nextcha"ö(_cbranch"Æ&_label"f'_chconbr")_pswitch"f"_forstmt"´ putw#ê6fcreat"‚.flush"Ä.ndigit$Jpfloat"Ö,pscien"Ö,retrn"j-cerror"b-_putcha"-putc"¤._errno$2L_getcha"p-getc"D.getw#¾6fopen"$.wrd"Ê)_extdef"’_blkend" $_flush"L-_flshw"ô)rretrn"._symbol"f_getchar"p-_subseq"fsswitch"°-_getnum"*_getstr"–_getcc" hswitch"Â-_printf"4+_mapch"N_tree"ê_block" _pblock">_build"ì_errflus"d$_declare" _decl1"p _decsyn"¶_getype"f _redec"Ð_length"¸'_rlength"l(fltused"Ê)_disarra"Ô_chkfun"�_decref"l&_incref" &_chklval"p_plength"~'_chkw"@_setype"ü_lintyp"j_convert"`_putchar"-_strdec"l%_blkhed"#_cfunc"($šC_isn#þ._swtab$êC_swp$ G_contlab$ G_brklab$G_retlab$G_deflab$G_nauto$G_autolen$G_peeksym#/_peekc$G_eof$G_line#/_treebas$G_debug#/_defsym$G_xdflg$ G_csym$"G_cval$$G_fcval$&G_nchstr$.G_nerror$0G_paraml$2G_parame$4G_tmpfil$6G_strflg$8G_osleft$:G_mosflg$G_inhdr$@G_dimtab$BG_dimp$ H_regvar$ H_kwtab#/rsave"._error"°_exit"þ,_open"è-_fin$4L_creat"à,_fout$,J_lookup"¦_putfperrprintf.o4+formp"JloopF+rjust$Jgnumª,width Jndfnd&Jswtab¢+decimalÂ+octal,float.,scien8,characð+stringú+logicalÎ+prbufB,spaces*Jbufp(Jffltpr.oÖ,creat.oà,exit.oþ,å-retrn.ob-getchr.op-ssw.o°-hsw.oÂ-open.oè-rsave.o.get.o$.put.o‚.flÔ.savr5$H_main"¢_cvtab#²5_opdope#Ô4_ctab#,6_symbuf$ 7_hshused$7_hshtab$7_space$–C_cp$˜C_cmstÊ'L17ê'L18ú'L15h(L19(L21F(L22(L23(L24(L25 (L26((L278(L28˜4L20`(L29¦4L31„(L30ˆ(L33î(L34Ð(L35Ð(L10001Ú(L36î(L32ò(L38ü(L39)L37)L410)L42¾4L400)L43†)L45¾)L44Æ)c04.oÊ)c0t.oÊ)bufHbotchü)ebotch*fppnfractJtotdigJdecptJbaseJgetdigþ*ô$L175ô$L176ô$L177ô$L178%L179D4L180%L1814%L1642%L182D%L160h%L183J%L184R%L186¼%L187¦%L188°%L189&L190Ú%L191Ð%L185h&L192è%L193P4L194þ%L195d&L196(&L197d&L198Z&L199d4c03.ol&L2ˆ&L3t4L1œ&L4Â&L5ô&L6J'L7:'L8J'L10ˆ4L9b'L12’4L11z'L14š'L13´'L16L131N"L130b"L132î3L134†"L135²"L136ú"L137#L133#L139*#L140~#L141T#L142t#L143‚#L144ì#L145æ#L146Ä#L147æ#L1484L138$L150*$L151`$L153Z$L154J$L1554L156Z$L152Z$L149`$L158n$L159|$L157€$L161Œ$L162œ$L1634%L165%L166°$L167°$L168°$L169°$L170¼$L171*4L172D%L173Ê$L174âL101L102 L103 L1044L105²/L58ZL107zL108ˆL106’L1100L1110L112$0L10005ÂL10006ÄL113ÎL114ìL11520L11660L10007öL10008øL109L118L1196L1204L121DL122B0L117JL124XL125hL123æL127ÎL128lL129lL130Z0L131€L133°L134ˆL135ŽL136”L137˜L138žL139¨03èL81L91rL92€L93ØL94ìL95L96|L97€L98°L99ÒL100h3L101äL102|3L103L104 L105XL106fL107’3L108ŒL72øL109¨3L110 L111\ L112& L113¸3L114B L59~ L115Æ3L117Ì L116""L118þ L119þ L120N!L121N!L122t!L123ž!L124È!L125Ø3L126Ô!L127Þ!L128ö!L129"øL47L48ø2L42”L492L50þ2L51`L52NL533L54lL563L55°L58ºL60^ L61ÄL62:3L63ÌL64ÌL57° L65ÐL66êL67J3L68êL69 L70\3L71L73ÎL74 L750L764L77’ L788L79@L80L82òL83\L84ªL85ÀL86jL87zL88 L89¦L90ž L100L5L6L7L10L11N2L12”L10000ŽL13šL14ÂL15âL8þL9 L16\2L18x2L19†2L17xL10001œL21¼L22–2L20„L23¦2L24L27ØL25îL26úL28L29 L30<L31¶2L32@L33lL34À2L35„L36Ö2L38ÎL39´L40Þ2L37žL41ÜL43rL44ðL45ð2L46øL69ªL70´L71°L64êL72ø1L74L76`L77 L78 L73ŒL798L80PL81PL75ŒL83ÌL82ÐL10011üL85L84<L87dL88 2L86fL90~L89¬L91�L92¦L94$2L93L96"L976L95:L99lL100*2L98lL102ŽL103>2L101Žc02.o’L1$L2¶L3L4ÌL32L33L34L35:L36fL10001tL37|L38Š1L39¬L40L41.L42<L43JL44zL45’L10003ÌL10004ÎL46L47ÈL486L10005,L494L50,L51ä1L52dL53PL54¬L55ŽL56ŒL57¬L58ŽL59ÈL60ðL61ìL10006æL10007þL10008L62\L65ÐL66lL67vL68rL63L258L2592L260.L261`L251ˆL244¦L263þ0L262ÌL2651L264èc01.oìL2L3:L4fL5fL7L8vL1\L9†L10”L11"1L12ÈL13œL14œL15œL16ÄL17ÒL18<1L19ÜL20ðL21P1L22"L10000.L23@L24TL25f1L26„L27´L28øL29ÈL30z1L6 L31\ L220¸ L218Ê L219Ü L221$ L10020ô L10021 L222 L223$ L224. L225L L226@ L227H L228h L229¬ L230” L231¦ L232Ò L233Î L234È0L235î L236\ L237 L238Ö0L239\ L240\ L100230 L10022D L241P L242î0L245’L246v L243²L247† L248¦L249° L250ž L252pL253¸ L254â L255î L256ü L257PøL181üL182þL183 L184 L185 L186 L187 L188* L189* L142  L190Ð L191Ð L10014ò L192N L193ò L195þ L196ö L197ö L198ö L194 L1990 L200¢0L202Ò L203f L140 L204~ L205� L206î L207´ L208¾ L201î L209¶0L213 L10017B L210l L211B L212N L10018` L214f L10019¢ L216¨ L215b L217L132ÌL126âL141$L1432 L144.L145zL146VL147zL148bL149zL150zL151ØL152´L153ÖL154ÒL155àL156ZL157âL158þL159p0L160þL161þL10011L10012L162.L163rL164Ž0L165ú L166‚L167‚L168ŠL169ª L170ŽL171ŽL172šL173àL174ºL175ÜL176äL177äL178ìL179üL180ÔÆ¾Ä´¿�Á!†ÀW ¬¿ü‡N÷ Å<¿À=Í õ   @÷� #ôÁåD ï‡ï ŠD Öƒ÷R÷èR÷ \ B ¤Ñ‹ü �Áe@W 0ó‡÷ ¬½·, €&€ € 7   ý‡÷ ÷ † " ü‡ß  7 ì÷-æâ‚÷ ö÷ XóÁÔ÷ Áeû�‡ß5Põüß‹RõùßþTõß®Võß`Rõß‹Rõýß RõßÿÿTõß `Rõã÷e†· €‡ß`Rõ7 t‡*Àpÿˆ È‹þÀ"@ÀE€ÿ A‡ Z‚Àe  À ÷‹@ý À Í ÀŠÍ Í À ‡7â?‡€ŸÍ Ž úÎeÎE‡/ tape boot program to load and transfer / to a 'tp' entry / entry is made by jsr pc,*$0 / so return can be rts pc / jsr pc,(r5) is putc / jsr pc,2(r5) is getc / jsr pc,4(r5) is mesg core = 24. .mt. = 0 .. = [core*2048.]-512. start: mov $..,sp mov $name,r4 mov sp,r1 cmp pc,r1 bhis 2f clr r0 cmp (r0),$407 bne 1f mov $20,r0 1: mov (r0)+,(r1)+ cmp r1,$end blo 1b jmp (sp) 2: jsr pc,rew mov $tvec,r5 mov $'=,r0 jsr pc,(r5) 2: mov r4,r1 1: jsr pc,2(r5) cmp r0,$'\n beq 1f cmp r0,$'@ beq 2b movb r0,(r1)+ cmp r0,$'# bne 1b sub $2,r1 cmp r1,r4 blo 2b br 1b 1: clrb (r1) cmp r1,r4 blos start mov $1,tapa mov $-6144.,wc jsr pc,taper clr r1 1: mov r1,r2 mov r4,r0 2: cmpb (r0)+,(r1) bne 2f tstb (r1)+ bne 2b br 1f 2: mov r2,r1 add $64.,r1 cmp r1,$12288. blo 1b jsr pc,rew br start 1: mov 44.(r2),tapa mov 38.(r2),r0 inc r0 neg r0 asr r0 mov r0,wc clr r0 1: clr (r0)+ cmp r0,sp blo 1b jsr pc,taper jsr pc,rew clr r0 cmp (r0),$407 / unix a.out? bne 2f 1: mov 20(r0),(r0)+ cmp r0,sp blo 1b 2: jsr pc,*$0 br start .if .mt. mts = 172520 mtc = 172522 mtbrc = 172524 mtcma = 172526 taper: clr mtma cmp mtapa,tapa beq 1f bhi 2f jsr pc,rrec br taper 2: jsr pc,rew br taper 1: mov wc,r1 1: jsr pc,rrec add $256.,r1 bmi 1b rts pc rrec: bit $2,*$mts bne rrec tstb *$mtc bge rrec mov $-512.,*$mtbrc mov mtma,*$mtcma mov $60003,*$mtc 1: tstb *$mtc bge 1b tst *$mtc bge 1f mov $-1,*$mtbrc mov $60013,*$mtc br rrec 1: add $512.,mtma inc mtapa rts pc rew: mov $60017,*$mtc clr mtapa rts pc .endif .if .mt.-1 tcdt = 177350 tccm = 177342 taper: mov $tcdt,r0 mov $tccm,r1 for: mov $3,(r1) / rbn for 1: tstb (r1) bge 1b tst (r1) blt rev cmp tapa,(r0) beq rd bgt for rev: mov $4003,(r1) / rbn bac 1: tstb (r1) bge 1b tst (r1) blt for mov (r0),r2 add $5,r2 cmp tapa,r2 blt rev br for rd: clr -(r0) / bus addr mov wc,-(r0) / wc mov $5,-(r0) / read 1: tstb (r1) bge 1b tst (r1) blt taper rts pc rew: mov $4003,tccm rts pc .endif tvec: br putc br getc br mesg tks = 177560 tkb = 177562 getc: mov $tks,r0 inc (r0) 1: tstb (r0) bge 1b mov tkb,r0 bic $!177,r0 cmp r0,$'A blo 1f cmp r0,$'Z bhi 1f add $40,r0 1: cmp r0,$'\r bne putc mov $'\n,r0 tps = 177564 tpb = 177566 putc: tstb tps bge putc cmp r0,$'\n bne 1f mov $'\r,r0 jsr pc,(r5) mov $'\n+200,r0 jsr pc,(r5) clr r0 jsr pc,(r5) mov $'\n,r0 rts pc 1: mov r0,tpb rts pc mesg: movb *(sp),r0 beq 1f jsr pc,(r5) inc (sp) br mesg 1: add $2,(sp) bic $1,(sp) rts pc end: tapa: .=.+2 mtapa: .=.+2 mtma: .=.+2 wc: .=.+2 name: .=.+32. 11/45 KT FP KW-L MOS 16-24 DD cat PC KL _ MM 48-52 MM 8-12 MM 12-16 MM 0-4 MM 4-8 _ TC RK RF RP TM _ MM 32-36 DB MM 36-40 PL 24-32, 40-48 DD xx 11/20 ROM DA DR-B _ XX DN DC DC DC DB _ DP DC DC DC DC XX 7Îÿ7Èÿ7Âÿ7¼ÿ7¶ÿ7°ÿ7ªÿ7¤ÿ0‰9Irtisignal0_signal"retrn cerror vectbevectªnlist.oÆšû¶p$f·úÿ· ·w êÿ…‡)_nlist#savr5 nlist umount.oÌj<¶t $f…·‰‡ 7èÿÀÿÿwàÿ)_umount#retrn _errno atof.ooΩ$+¶ $Hf…ww òÿ7 ìÿwèÿÀŸ· … I9atof _atof"a_tof"retrn savr5 ptr"nice.ooçeuD¶`$f…€"‰†wðÿ wêÿ)_nice"retrn cerror getcsw.oΪ½¶< f…&‰wöÿ_getcsw"retrn kill.ooщ¶l0f…€%‰†wðÿ wêÿ)_kill"retrn cerror kill%mknod.oãÇÓ¶œ&0f…www‰&†wàÿ wÚÿ‰)_mknod"retrn cerror mknodperror.o.·4¶,0�w üÿ÷-öÿôÿÎ8ÀèÿÀ fæ0ß –%wÐÿ%s: %s Unknown errorI  (˜¹_errno _sys_ner _sys_err _perror"rsave L20L38L10000L10001_printf L1,rretrn errlst.oåæbÿÈæ<tError 0Not super-userNo such file or directoryNo such processError 4I/O errorNo such device or addressArg list too longExec format errorBad file numberNo childrenNo more processesNot enough corePermission deniedError 14Block device requiredMount device busyFile existsCross-device linkNo such deviceNot a directoryIs a directoryInvalid argumentFile table overflowToo many open filesNot a typewriterText file busyFile too largeNo smÿgetpw.o¹Ú¶h" üf…Æå À" æ"ß Ö 7õÞÿþÿ÷ÖÿÀÒÿi & æÈÿß –%7 Àÿ7 ¾ÿ5 øÿ÷ ²ÿ5üÿÀ% @üÿR@øÿµ øÿ@mH�üÿí@øÿµ øÿ@mŠ5 øÿõúÿõ úÿ@úÿ@øÿµ øÿ@m’5üÿÀ%:W-üÿ Êïé@øÿµ øÿ@m’5üÿÀ%:W-üÿ0¸W-üÿ9´AúÿWp AmüÿÁeÐÿuúÿáu-úÿ¥5 üÿõüÿÎôþß wþÿêþ@üÿF…‡/etc/passwdHYYYYxYY©pace left on device2BJTn€’¢®ÀÐâì 2BRbtˆœ®¾ÎdØ×ÖÕÔÓÒÑÐÏÎÍÌËÊÉÈÇÆÅÄÃÂÁÀ¿¾½¼»º¹¸·¶µ´³²±°¯®­¬«ª©¨§¦¥¤£¢¡ Ÿž�œ›š™˜—–•”“’‘��Ž�Œ‹Š‰ˆ‡†…„ƒ‚�€~}|{zyxwvu ¼ü‡ö " ü‡ß �Àetüÿ÷ ZÅEðÿWuÅe ºÄºT!ºü‡‡ÎeÀ ý· ý÷5àúÀ ºÎå‡& �ŠÀÀ ºõ÷ €À  ºîf Ìür f rvÐÁÔý‰r t@PÁ ÿ!á ºáÿáÉ‹þ�‡Àpÿˆ È‹þÀÎ?ÀE€ÿ A‡ Z‚Àe  À ÷‹®?ý À ÷ ìÿÀŠ÷ äÿ ÷ ÞÿÀ ‡7ˆ?‡/ dli -- DEC format tape interpreter .globl fopen, fcreat, getc, putc, flush, mesg mov (sp)+,r5 cmp r5,$1 bne 1f jsr r5,mesg; ; .even sys exit 1: tst (sp)+ mov (sp)+,r0 jsr r5,fcreat; obuf bec 1f jsr r5,mesg; ; .even 1: mov $ppt,r0 cmp r5,$3 blt 1f mov (sp)+,r0 1: jsr r5,fopen; ibuf bec 1f jsr r5,mesg; ; .even sys exit 1: jsr pc,get tst r0 beq 1b cmp r0,$1 bne err jsr pc,get jsr pc,get mov r0,-(sp) jsr pc,get swab r0 bis r0,(sp) jsr pc,get mov r0,r1 jsr pc,get swab r0 bis r0,r1 sub $6,(sp) ble 2f cmp r1,origin beq 3f mov r1,origin jsr r5,flush; obuf mov obuf,r0 sys seek; origin: 0; 0 3: jsr pc,get jsr pc,put dec (sp) bgt 3b tst (sp)+ jsr pc,get br 1b 2: jsr r5,flush; obuf sys exit put: jsr r5,putc; obuf inc origin rts pc get: jsr r5,getc; ibuf bec 1f err: jsr r5,flush; obuf jsr r5,mesg; ; .even sys exit 1: rts pc ppt: .even .bss count: .=.+2 ch: .=.+2 ibuf: .=.+520. obuf: .=.+520. / disk boot program to load and transfer / to a unix entry / entry is made by jsr pc,*$0 / so return can be rts pc core = 24. .. = [core*2048.]-512. start: mov $..,sp mov sp,r1 cmp pc,r1 bhis 2f reset clr r0 cmp (r0),$407 bne 1f mov $20,r0 1: mov (r0)+,(r1)+ cmp r1,$end blo 1b jmp (sp) 2: mov $inod,r0 1: clr (r0)+ cmp r0,sp blo 1b jsr pc,getc cmp r0,$'k bne 3f mov $rkblk,r0 br 1f 3: cmp r0,$'p bne 2b mov $rpblk,r0 1: mov r0,rxblk mov $'\n,r0 jsr pc,putc mov $names,r1 1: mov r1,r2 2: jsr pc,getc cmp r0,$'\n beq 1f cmp r0,$'/ beq 3f movb r0,(r2)+ br 2b 3: cmp r1,r2 beq 2b add $14.,r1 br 1b 1: mov $names,r1 mov $1,r0 1: clr bno jsr pc,iget tst (r1) beq 1f 2: jsr pc,rmblk br start mov $buf,r2 3: mov r1,r3 mov r2,r4 add $16.,r2 tst (r4)+ beq 5f 4: cmpb (r3)+,(r4)+ bne 5f cmp r4,r2 blo 4b mov -16.(r2),r0 add $14.,r1 br 1b 5: cmp r2,$buf+512. blo 3b br 2b 1: clr r1 1: jsr pc,rmblk br 1f mov $buf,r2 2: mov (r2)+,(r1)+ cmp r2,$buf+512. blo 2b br 1b 1: clr r0 cmp (r0),$407 bne 2f 1: mov 20(r0),(r0)+ cmp r0,sp blo 1b 2: jsr pc,*$0 br start iget: add $31.,r0 mov r0,r5 ash $-4.,r0 jsr pc,rblk bic $!17,r5 ash $5.,r5 add $buf,r5 mov $inod,r4 1: mov (r5)+,(r4)+ cmp r4,$addr+16. blo 1b rts pc rmblk: add $2,(sp) mov bno,r0 inc bno bit $LRG,mode bne 1f asl r0 mov addr(r0),r0 bne rblk 2: sub $2,(sp) rts pc 1: clr -(sp) movb r0,(sp) clrb r0 swab r0 asl r0 mov addr(r0),r0 beq 2b jsr pc,rblk mov (sp)+,r0 asl r0 mov buf(r0),r0 beq 2b rblk: mov r1,-(sp) mov r0,r1 clr r0 jmp *rxblk rpda = 176724 rpblk: div $10.,r0 mov r1,-(sp) mov r0,r1 clr r0 div $20.,r0 bisb r1,1(sp) mov $rpda,r1 mov (sp)+,(r1) br 1f rkda = 177412 rkblk: div $12.,r0 ash $4.,r0 bis r1,r0 mov $rkda+2,r1 1: mov r0,-(r1) mov $buf,-(r1) mov $-256.,-(r1) mov $5,-(r1) 1: tstb (r1) bge 1b mov (sp)+,r1 rts pc tks = 177560 tkb = 177562 getc: mov $tks,r0 inc (r0) 1: tstb (r0) bge 1b mov tkb,r0 bic $!177,r0 cmp r0,$'A blo 1f cmp r0,$'Z bhi 1f add $40,r0 1: cmp r0,$'\r bne putc mov $'\n,r0 tps = 177564 tpb = 177566 putc: tstb tps bge putc cmp r0,$'\n bne 1f mov $'\r,r0 jsr pc,putc mov $'\n+200,r0 jsr pc,putc clr r0 jsr pc,putc mov $'\n,r0 rts pc 1: mov r0,tpb rts pc end: inod = ..-1024. mode = inod addr = inod+8. buf = inod+32. bno = buf+514. rxblk = bno+2 names = rxblk+2 LRG = 10000 reset = 5 Ø...utmpetmaatm2aatm3actm3aatm3aatm3actm3actm4bctm1bctm2bÑ...Úc0×c1ñcrt0.ocrt20.oìfilib.aðfr0.olib2.aåliba.aòlibc.aÄlibf.alibv.acrt2.oliby.alibp.aÁlibu.aªÆ¾ÄŠ¿�Á!†ÀW ‚¿ü‡N÷ êÅ¿À=Í õ   @÷� #ôÁåD ï‡ï ŠD Öƒ÷(÷è(÷ \ B ¤Ñ‹ü �Áe@W 0ó‡÷ †½·,ö€&€ € 7î   ý‡÷ ÷ ` " ü‡ß  ÀèþÁâþÉÉ‹þÉ È-ªöÉÉ‹þÉ ðÂeÂ-�ôé àŒàÉ‹þÉ Ü‡÷Ò?‡*Àpÿˆ È‹þÀL@ÀE€ÿ A‡ Z‚Àe  À ÷‹,@ý À Í ÀŠÍ Í À ‡7 @‡€ŸÍ Ž úÎeÎE‡@…&æ¦äHÅåF‚ƒ„…‡rsave"rretrn"retrn.or¶P$7 ÀÿÿF…‡retrn"cerror"_errno$ctime.o,»/¶àúrøw üÿNß ß àwæÿw âÿ @ÀeòÿL@4ÀØ &ß Ö ß Îwæß ÀÖ 5øÿÎ/æß ÀÖ 5öÿµ øÿµ øÿ×,µ öÿµ öÿ×,Àv Î&ß Ö ß ³ Àw@ÿw <ÿDC ß Œ@mÀe“þÁím Áe¼À rfÀ€åwÿw üþ΀p@&fß –%ÃÞþÂl/ list on kl-11 followon ascii file mov $ascii,r1 1: movb (r1)+,r0 beq 1f jsr pc,(r5) br 1b 1: rts pc ascii: <\0> / format RK03/05 disk packs rkda = 177412 mov $203.*2,r4 clr r3 1: mov $rkda+2,r0 mov r3,-(r0) mov $buf,-(r0) mov $-12.*256.,-(r0) mov $6003,-(r0) 2: tstb (r0) bge 2b tst (r0) blt 1f add $20,r3 dec r4 bne 1b rts pc 1: jsr pc,4(r5) ; .even rts pc buf: .=.+2 / unix DEC-tape time/mtrack track formatter nword = 256. nblock = 578. endz = 7200. ps = 177776 tcst = 177340 tccm = 177342 tcwc = 177344 tcba = 177346 tcdt = 177350 mov r5,savr5 mov sp,savsp start: mov savr5,r5 mov savsp,sp jsr pc,4(r5) .even clr r0 mov $cobtab,r1 1: jsr pc,bcomobv mov r2,(r1)+ inc r0 cmp r0,$512. bne 1b mov $buffer,r0 1: mov $-1,(r0)+ cmp r0,$buffer+nword+nword blo 1b mov savr5,r5 jsr pc,2(r5) mov $340,ps mov $tcdt,r5 mov $13,tccm jsr pc,flag / 8Kch for end zone mov $endz,r4 1: jsr r0,mtrack; 101101 dec r4 bne 1b / foreward guard mov $199.,r4 1: jsr r0,mtrack; 10101 dec r4 bne 1b / blocks mov $nblock,r3 1: jsr r0,mtrack; 10101 jsr r0,mtrack; 10110 jsr r0,mtrack; 11010 jsr r0,mtrack; 01000 jsr r0,mtrack; 01000 jsr r0,mtrack; 01000 jsr r0,mtrack; 01000 mov $nword-4,r4 2: jsr r0,mtrack; 111000 dec r4 bne 2b jsr r0,mtrack; 111011 jsr r0,mtrack; 111011 jsr r0,mtrack; 111011 jsr r0,mtrack; 111011 jsr r0,mtrack; 101001 jsr r0,mtrack; 100101 jsr r0,mtrack; 10101 dec r3 bne 1b / rear guard mov $199.,r4 1: jsr r0,mtrack; 10101 dec r4 bne 1b / rear end zone mov $endz,r4 1: jsr r0,mtrack; 10010 dec r4 bne 1b clr tccm / end of mtrack pass / go back 12 blocks mov $12.,r0 mov $4002,tccm 1: incb tccm jsr pc,flag dec r0 bne 1b / put comobv(nblock-1) in everything / up to end zone mov $nblock-1,r0 mov r0,bn jsr pc,comobv mov $17,tccm jsr pc,flag 1: movb r1,tcst mov r0,(r5) jsr pc,flag1 br 1b / reverse pass put in / foreward and reverse / block numbers mov $4017,tccm jsr pc,flag 1: mov $nword+3.,r4 2: clrb tcst clr (r5) jsr pc,flag dec r4 bne 2b clrb tcst clr (r5) mov bn,r0 jsr pc,comobv jsr pc,flag movb r1,tcst mov r0,(r5) jsr pc,flag dec bn blt check clrb tcst clr (r5) jsr pc,flag clrb tcst clr (r5) jsr pc,flag clrb tcst mov bn,(r5) jsr pc,flag clrb tcst clr (r5) jsr pc,flag clrb tcst clr (r5) jsr pc,flag br 1b / foreward pass / confirm block numbers / write all 1's in data check: clrb tcst clr (r5) jsr pc,flag1 br check clr r4 1: mov $3,tccm jsr pc,flag cmp (r5),r4 bne error1 mov $-nword,tcwc mov $buffer,tcba mov $15,tccm jsr pc,flag inc r4 cmp r4,$nblock bne 1b mov $3,tccm jsr pc,flag1 br error2 / reverse pass / confirm block numbers / read data and compare / to all 1's 1: mov $4003,tccm jsr pc,flag dec r4 cmp r4,(r5) bne error3 mov $-nword,tcwc mov $buffer,tcba mov $4005,tccm jsr pc,compare jsr pc,flag tst r4 bne 1b mov $4003,tccm jsr pc,flag1 br error4 jsr pc,compare jmp start error1: mov $1,r0 br 1f error2: mov $1,r0 br 1f error3: mov $3,r0 br 1f error4: mov $4,r0 br 1f error5: mov $5,r0 br 1f error6: mov $6,r0 br 1f error7: mov $7,r0 1: add $'0,r0 movb r0,0f mov tcst,-(sp) mov tccm,-(sp) mov $1,tccm mov savr5,r5 jsr pc,4(r5) 0: .even mov (sp)+,r1 mov (sp)+,r0 0 rts pc compare: mov r0,-(sp) mov $buffer,r0 1: cmp (r0)+,$-1 bne error5 cmp r0,$buffer+nword+nword blo 1b mov (sp)+,r0 rts pc mtrack: mov (r0)+,(r5) jsr pc,flag rts r0 flag: bit $100200,tccm beq flag blt error6 rts pc flag1: bit $100200,tccm beq flag1 bge 1f tst tcst bge error7 add $2,(sp) 1: rts pc comobv: mov r0,r4 bic $!777,r0 asl r0 mov cobtab(r0),r0 swab r0 clr r1 ror r0 rol r1 asl r0 asl r0 rol r1 swab r4 bic $177401,r4 bis cobtab(r4),r0 rts pc bcomobv: mov r0,r2 bic $!70,r2 mov r0,r3 mov $6.,r4 1: asr r3 dec r4 bne 1b bic $!7,r3 bis r3,r2 mov r0,r3 mov $6.,r4 1: asl r3 dec r4 bne 1b bic $!700,r3 bis r3,r2 com r2 bic $!777,r2 rts pc bn: .=.+2 savr5: .=.+2 savsp: .=.+2 cobtab: .=.+1024. buffer: .=.+nword+nword / copy and execute DEC loaders core = 24. prs = 177550 mov $dldr,r0 mov $[core*2048.]-300,r1 mov r1,r2 1: mov (r0)+,(r1)+ cmp r0,$end blo 1b jmp (r2) dldr: 10706 24646 10705 62705 114 5001 13716 177570 6016 103402 5016 404 241 6116 1001 10116 5000 4715 105303 1374 4715 4767 74 10402 162702 4 22702 2 1441 4767 54 61604 10401 4715 2004 105700 1753 0 751 110321 770 16703 150 105213 105713 100376 116303 2 60300 42703 177400 5302 207 12667 44 4715 10304 4715 303 50304 16707 26 4767 177752 4715 105700 1342 6204 103002 0 677 6304 114 0 . = dldr-500+744 16701 26 12702 352 5211 105711 100376 116162 2 [core*2048.]-400 5267 177756 765 prs end: |000 nul|001 soh|002 stx|003 etx|004 eot|005 enq|006 ack|007 bel| |010 bs |011 ht |012 nl |013 vt |014 np |015 cr |016 so |017 si | |020 dle|021 dc1|022 dc2|023 dc3|024 dc4|025 nak|026 syn|027 etb| |030 can|031 em |032 sub|033 esc|034 fs |035 gs |036 rs |037 us | |040 sp |041 ! |042 " |043 # |044 $ |045 % |046 & |047 ' | |050 ( |051 ) |052 * |053 + |054 , |055 - |056 . |057 / | |060 0 |061 1 |062 2 |063 3 |064 4 |065 5 |066 6 |067 7 | |070 8 |071 9 |072 : |073 ; |074 < |075 = |076 > |077 ? | |100 @ |101 A |102 B |103 C |104 D |105 E |106 F |107 G | |110 H |111 I |112 J |113 K |114 L |115 M |116 N |117 O | |120 P |121 Q |122 R |123 S |124 T |125 U |126 V |127 W | |130 X |131 Y |132 Z |133 [ |134 \ |135 ] |136 ^ |137 _ | |140 ` |141 a |142 b |143 c |144 d |145 e |146 f |147 g | |150 h |151 i |152 j |153 k |154 l |155 m |156 n |157 o | |160 p |161 q |162 r |163 s |164 t |165 u |166 v |167 w | |170 x |171 y |172 z |173 { |174 | |175 } |176 ~ |177 del| alpha A A | beta B B | gamma \ \ GAMMA G G | delta D D | DELTA W W epsilon S S | zeta Q Q | eta N N theta T T | THETA O O | lambda L L LAMBDA E E | mu M M | nu @ @ xi X X | pi J J | PI P P rho K K | sigma Y Y | SIGMA R R tau I I | phi U U | PHI F F psi V V | PSI H H | omega C C OMEGA Z Z | nabla [ [ | not _ _ partial ] ] | integral ^ ^ 1 4 6 4 5 2 1 1 1 1 3 2 2 2 2 4 3 3 3 3 5 5 4 6 4 6 1 1 1 1 7 2 2 2 2 8 3 3 3 3 9 4 5 4 6 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3 4 7 4 5 4 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3 5 4 8 4 5 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3 4 5 4 7 4 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3 6 4 5 4 9 1 1 1 1 2 2 2 2 3 3 3 3 struct ibuf { int inum; int iflags; char inl; char iuid; int isize; int iaddr[8]; char *ictime[2]; char *imtime[2]; int fill; }; <[1234567890-_]^\ >qwertyuiop@ asdfghjkl;: zxcvbnm,./ <[1234567890-_]^\ > @ ;: ,./ <{!"#$%&'() =_}~| >QWERTYUIOP` ASDFGHJKL+* ZXCVBNM,.? <{ !"#$%&'() =_} ~ | >QWERTYUIOP` ASDFGHJKL+* ZXCVBNM,.? ÁÀ r<RÁÀ r<ÁÀ r<RÁÀ r<À rWtC`À rÒÁeÀ rwÃFÎß Œ!Îß Œàƒ õ÷à7àÎß ŒÀ%n÷P ÀÀ ,úÀÀ ìúƒ õ÷2€ Ò7 ¦Àlw þw þÄÃÀ”�üAA WpÁe0CÄÔ”Ô”Ô”„ @Àe�WpÁeFCÔ”Ô”Ô”Ž&ß °Ö ŽÎed&ß °Ö ŽÎed&ß °Ö ŽÎed&ß °Ö Äe@ &ß °Ö Àwtýw pýAÀ rÁ ÀnÀmwPýw LýD„ W- C —r �À r Áe0T�Ô• AÀ r Áe0T�wýPFDay Mon 00 00:00:00 1900 SunMonTueWedThuFriSatJanFebMarAprMayJunJulAugSepOctNovDecY™Y¨¨™Y™YHY™Y™Y™Y™_cbuf _dmsize#ú_timezon#_dayligh#_ctime"rsave _local 2 1 1 1 1 1 1 1 1 1 1 012345670123456701234567012345670123456701234567012345670123456701234567 x x x x x x x x x ti"_asctime"àL1rretrn _dpadd _gmtime"_sunday"ÀL10000†L3¸L10001šL2¼_dysize"ŒL4üL6l_ldiv _ldivr L7|L8’L9ŽL10¬L11®L12ÄL13ÀL5ÜL17L15îL16öL180L19F_numb"°L14ˆL21¦L20¬L23ÞL24âL22ösnstat.o#.:¶ˆ$$f…@ww‰$†wâÿ wÜÿ)_snstat"cerror retrn ™Y™Y™_cbuf _dmsize#ú_timezon#_dayligh#_ctime"rsave _localti"_asctime"àL1rretrn _dpadd _gmtime"_sunday"ÀL10000†L3¸L10001šL2¼_dysize"ŒL4üL6l_ldiv _ldivr L7|L8¨™Y™YHY™YÀ”�üAA WpÁe0CÄÔ”Ô”Ô”„ @Àe�WpÁeFCÔ”Ô”Ô”Ž&ß °Ö ŽÎed&ß °Ö ŽÎed&ß °Ö ŽÎed&ß °Ö Äe@ &ß °Ö Àwtýw pýAÀ rÁ ÀnÀmwPýw LýD„ W- C —r �À r Áe0T�Ô• AÀ r Áe0T�wýPFDay Mon 00 00:00:00 1900 SunMonTueWedThuFriSatJanFebMarAprMayJunJulAugSepOctNovDecY™Y¨àúrøw üÿNß ß àwæÿw âÿ @ÀeòÿL@4Î@8ÎíÔ&ß Ö ß Îwæß ÀÖ 5øÿÎ/æß ÀÖ 5öÿµ øÿµ øÿ×,µ öÿµ öÿ×,Àv Î&ß Ö ß ³ Àw@ÿw <ÿDC ß Œ@mÀe“þÁím Áe¼À rfÀ€åwÿw üþ΀p@&fß –%ÃÞþÂlÁÀ r<RÁÀ r<ÁÀ r<RÁÀ r<À rWtC`À rÒÁeÀ rwÃFÎß Œ!Îß Œàƒ õ÷à7àÎß ŒÀ%n÷P ÀÀ ,úÀÀ ìúƒ õ÷2€ Ò7 ¦Àlw þw þÄÃùø@ò·õ`�ò·ôR�ò·ôD�ò·ô6òBø·ô^�ò·ôP�ò·ôBùVþwòôVõ–õVð…5@óù3eÞ1@rÑ÷zÏÀÂ�lŽ÷B‰¨‰#"™Âû3’h±@×?ØG�e˜@Â�lŽ›BÙ,½k$Âç“aXUlog"ldexp ýstexpúbignegÿÿsqrt2o2xone€@p3 p2˜p1�p0ˆq2¸q1°q0¨log2€ctime.o$ï¶Ô�Ÿ˜Û`½=B.p«ª½ˆF±�:|+eiD(/èzC•¸@;ª\)ñµ@óù3dÞÿÿÿÿÿÿÿexp"ldexp ýstexpúone€@out„log2e´half@P2œP1”P0ŒQ1¬Q0¤sqrt2¼bigÄlog.o,#—ÿ8À¨@ñðõÿÿ±…¦ðWð€¦øfø&úý7÷VðýÎ øö€@Wô€@ftoo"buf^oct4xfsmall€7eightBcrypt.o,€–ÿÀô. lf¦æ&fÀ"ЕЕ b†P”ûÀ Á"œÿÿC”Âx�� ¢ø‡Ä"Å"æ à �rB`ÂE Œ\ô× †�\ø× "ð‡ÎåÔ Õ !"å‡Ö À"ÂÂÔÁE€ÿÁ R"S" ¢õ‡Ä¢ÃBÂÀ �0…Š Âú‡& s>Åe0W!9ƒÅeW!ZƒÅe„T‘!ªᇅ„ƒ‚�À¢‡ @€ @€  n Bpadˆdigit1ždigit�out¨outoutàpow.o,r—¶ôHT@ñðAñð…€føWó€@ðVõ€ñw ‡føWó@ðÀñVõ…w Èÿ‡òw Àÿ…Võ±…)pow"log exp badDone€@bad1Bhalf@exp.o,§–ÿP̨¦ðWð€¦øfø@ñðõ€@¡67ó˜ð�fûö@fûÎ ô@øAò·õd�ò·ôV�ò·ôHòBø·ô`�ò·ôR�ø@öôù7ò^&úŽe—#Ö 7õV± —#�ÿÖ ñ¡ý¡Võ–õVð…½E=s½M¡Bmÿget.oo,õ–ÿH^,$fA7X‰^‡ �…Éÿÿ�±…fAñ @Àe7R1@‰„‡À �±…À 1 @Þ± �…‰www °ÿ†…&w ¤ÿÀ€U…‰getc" getw#dfopen"put.oo,„—ÿ”|(<fA7v‰|‡  �…Ñÿÿ�±…fAñ &÷ €ø9�± �…&fA÷ �€…@Àe&7Bw>·ã8@‰ž±ñ‡‰¶w 0�‡ÀüÀmJ÷ r€` ü‡’ÃeÈ�¢9 È•0 üƒ ŠöÈ•1‚ Á@ÀüƒVõõVð‡Ì>ÌÌÌÌÍÌ _ndigit#ú_ndigits#úecvt"fcvt"eflag&bufüsign$zerrone€@lssvgtr:buftop$tenthòepsilonL>tecrypt"word$¢key"wheelcod"cagecode"wheeldivshiftôcageÂwheelÂecvt.o-µUÿøò ,ð7 "÷¦ðWð€&øføæÁü 7Š@ñð%·ŠöÀñó€@Añð&ø@øÃ$7ó¬ø@ø—ôL>—ó BÀûÀe0#�‚ @ñððÁüÑ”× $ü‡õ ‚  ó BAñðú‚ ÷ ÷  üW $†Îeó B@ûÀe.oΙ¶P$f…/‰ÀEÿwòÿ)getgid/_getgid"retrn setgid.oÎw™¶l0f…@.‰†wðÿ wêÿ9)setgid._setgid"retrn cerror mount.oÎ颶€ $f…··‰ †wæÿ wàÿ‰)_mount"retrn cerror signal.oΜ¶ÄbNTf…Aw wœ÷5”WpÁe\W b ‡W ª †ñzwt‰ª‡w¼ÿÀw´ÿf¦æ&Ø „ƒ‚�€7æÿ7àÿ7Úÿ7Ôÿ…‡_fltime"twoAlocv.oo¹~âÿØR$f…ÄRBC÷ ŠÀR…‡÷ Áe0f—v÷ ìÿ”•‡ À —vA W ‡Áå ƒ ~‡_locv"bufRdivid6stime.oνœ¶h$f…�@A‰†wìÿ wæÿ)_stime"retrn cerror sync.o¹`è¶H $f…$‰wöÿ_sync"retrn sync$getgid retrn savr5 sqrt.o¹äæ¶p0f…wøÿ5õw ðÿ7 ìÿwèÿ99)_sqrt"sqrt retrn savr5 open.ooÎ3£¶|$f…ww‰†wæÿwâÿ‰)_open"retrn cerror write.oΗž¶„"$f…@ww‰"†wâÿwÞÿ‰)_write"retrn cerror fltime.o¸åÅÿt&f…¦)@6¡ 6  ðþðòAI_qscmp _qses _qsort"_qs1".retrn L16L2FL3‚L4‚L5œL6œL7œL8ÞL9ÜL10Ì_qsexc"LL110L12L13.L14ZL15Šsin.oo¹šæ¶p0f…wøÿ5õw ðÿ7 ìÿwèÿ99)_sin"sinþÿuüÿfúÿfþÿÿ rÿ–%À õmhÿþÿóu-üÿúÿƒõíXÿüÿ@üÿ&fúÿÿ Hÿ–%À u-þÿúÿuüÿúÿNüÿfþÿß LÖ Óßu-þÿúÿ%@úÿ@íAAíúÿ ‡NfúÿÎmúþß .Ö uúÿ Núÿfß .Ö @úÿÀmÖþ5ƒNüÿfþÿß LÖ uþÿúÿ«F…‡f…Æåõ¨þþÿ@þÿõ þÿÀ @Ÿ5üÿ@µ AŸH�@µ H�üÿèwrþ I  "retrn cerror hmul.o¹¢Úÿ0 €6p‡_hmul"log.o¹oâ¶p0f…wøÿ5õw ðÿ7 ìÿwèÿ99)_log"log retrn savr5 pow.o¹Óä¶x0f…wøÿ5õuõ w ìÿ7 èÿwäÿ9)_pow"savr5 retrn pow qsort.o¹Jå¶(Žüf…æ w ôÿwîÿAupNNmfß .Ö wÒÿf…Æå @@í5øÿÀ-ºÿ_FAøÿÀ 7rªÿ5øÿµ øÿAøÿwpšÿuøÿ@@møÿ5úÿu"retrn rand srand ecvt.o¸!ƶÜ6`w "÷ øÿw ÷ îÿÅêÿ7 æÿ½}wÚÿ·Öÿ6õ· ÌÿM)9YYiYI_ecvt"_fcvt" ecvt fcvt _ndigit savr5 retrn setup&exp.o¸mŶp0f…wøÿ5õw ðÿ7 ìÿwèÿ99)_exp"exp retrn savr5 gtty.o΢’¶x$f…@w‰†wèÿ wâÿ ‰)_gttyDaddiFatan.o¸LÁ¶p0f…wøÿ5õw ðÿ7 ìÿwèÿ99)_atan"atan retrn savr5 atan2.o¸aÁ¶x0f…wøÿ5õuõ w ìÿ7 èÿwäÿ99)_atan2"atan2 retrn savr5 cos.oo¸§Ã¶p0f…wøÿ5õw ðÿ7 ìÿwèÿ99)_cos"cos retrn savr5 crand.o¸Áö„<f…@÷ ôÿwðÿf…÷ èÿwäÿI)9)_srand"_rand�¦B@$ü‚‚Ysswitch"hsw.oo戟ÿh& �¦æ ‘rà CdÃÂÀ$üƒ‚ƒ‚Yhswitch"times.oε�¶`$f…w ‰wîÿ+‰_times"retrn times+nargs.o¹NäÿàJ<Df… 7-üÿ.À7#(Àe 7#Àe7#m€ …‡ß Ö –%Æe_nargs"jsrsd>tstiBcmpiretrn cerror mdate.oν¢¶€"$f…wA@A‰"†wäÿ wÞÿ‰)_mdate"retrn cerror fcreat.o¸¬Å¶,^`f…@wwîÿw êÿ†Àÿÿ f…wwÎÿw Êÿf…@ww´ÿw °ÿ@7 ¦ÿ…‡yYyiy9y_putc#:_fcreat#_fflush#$putc putw fcreat flush savr5 ssw.ooéà1ÿ@ f…wøÿ÷ 4  ‰F‡À À�&ÀEÿôw Ôÿ@‡À ú 7 ÄÿwÀÿ)Y)_getchar"retrn savr5 _getcha"_fin$@getc sbrk.ooθ—¶¨(<f…÷$ wm‰(†wæÿÀwmwØÿ‰9)_sbrk"_end retrn cerror nd,seek.ooÎS˜¶ˆ$$f…@ww‰$†wâÿ wÜÿ‰)_seek"0f…÷ øÿ‰†wîÿÄ }wâÿ9)_wait"_nargs retrn cerror fopen.o¹Ù¶ÜH<f·úÿ€·w ìÿ†Àÿÿ …7 Úÿ‡f·Òÿ·w Èÿ†Àÿÿ7 ¼ÿ…‡I9II)I_getc#(_fopen#getc fopen savr5 crypt.o¸AĶp0f…wøÿ@÷ ðÿ7 ìÿwèÿ99)_crypt"crypt retrn savr5 getchr.o¹—Ù¶Ø@H_stat"retrn cerror stty.oÎ?�¶x$f…@w‰†wèÿ wâÿ‰)_stty"retrn cerror switch.o¹*èÿD �@$Ñ üGüÿ@übswitch"time.ooÊO¶Tf… ‰¦BR‚wêÿ_time"retrn unlink.oΞ¶p$f…w‰†wìÿ wæÿ ‰)_unlink"retrn cerror wait.ooÎ[ž¶| cerror reset.o¹¥å¶¨(Hf…· w·wêÿÆÅ ö wØÿ_setexit"retrn _reset"ssp(sr5*spc,setuid.oε™¶`$f…@‰†wðÿ wêÿ)_setuid"retrn cerror sleep.o¹Ôæ¶P$f…@#‰wòÿ_sleep"retrn sleep#stat.oΊœ¶€ $f…ww‰ †wæÿ wàÿ‰))_pipe"retrn cerror pipe*putchr.o¹/å¶$Z`f…@÷ N÷Fwèÿw äÿZ@�w ØÿZ×-,w ÊÿZ@7 Àÿw¼ÿf…w´ÿw °ÿZ7 ªÿw¦ÿyIIYyiyYyi_putchar"_putcha"_fout$Z_flush"Dputc flush retrn savr5 read.ooΗ¶„"$f…@ww‰"†wâÿwÞÿ‰)_read"retrnw‰†wèÿ wâÿ‰)_fstat"retrn cerror getuid.oÎ瘶Df…‰ÀEÿwòÿ_getuid"retrn link.ooÎ>“¶€ $f…ww‰ †wæÿ wàÿ ‰)_link"retrn cerror makdir.oΤ¢¶p$f…w‰†wìÿ wæÿ‰)_makdir"retrn cerror pipe.ooéѶt0f…*‰†wôÿBJ wæÿ9)dup)_dup"retrn cerror execl.oÎj¢¶lf…w@Àe7 ‰wäÿ ‰_execl"cerror execv.oΆ¢¶df…ww ‰wèÿ ‰_execv"cerror exit.o¸_Åÿ0 f…@‰_exit"fork.oÎo‘¶\$f…‰†wòÿ wìÿ)_fork"retrn cerror fstat.oÎÒ‘¶x$f…@r¾½¼»º¹¸¶µ´³²±°¯®­¬«ª©¨§¦nopqst€•–—™š)_chmod"retrn cerror chown.oÎºŽ¶€ $f…ww‰ †wæÿ wàÿ‰)_chown"retrn cerror close.oÎ�¶`$f…@‰†wðÿ wêÿ)_close"retrn cerror creat.oÎ��¶|$f…ww‰†wæÿwâÿ‰)_creat"retrn cerror dup.ooÎþ�¶h0f…@)‰†wðÿwìÿ rretrn formp¦looprjust¨gnumvwidth¤ndfndªswtabndecimalŽoctalÔfloatúsciencharac¼stringÆlogicalšprbufspaces®bufp¬ffltpr.o¸Æÿ< ÄeÓ•?‡pfloat"pscien"chdir.oÎ"޶p$f…w‰†wìÿ wæÿ ‰)_chdir"retrn cerror chmod.oÎ5޶€ $f…ww‰ †wæÿ wàÿ‰0 ‚· Wp `ñÀe0[ƒYHi)9HHH_printf"ndigit$¢pfloat pscien _putchar rsaverepsilonL>ten Bpaddigit1*digitout4outoutjprintf.o矶t¢ w üÿ€wšDÄeÀŸ� · Š %ß ôwÒÿ7 v7 lׯl-· d· b÷,¤7 Z .÷¢ƒÓ ÁnBÝ üJŽdÔoúfe¼cÆsšl Ó•-÷ 6 r f÷ ðÿ€Àe0�‡•à •$ÁØ“”C~÷ fWtýÿÁEà÷ ðÿ€ÀEøÿÀe0�‡Â¬÷ þþ¢÷ ôþ‚Ò Â ƒó‹ÿÿà ùÎ Á|ÁàŠ�`w|÷ pß ÷ lû·dΟ`· Zß ø÷ R ÷ FÎ ß ÷ >ûwœþ7 0 ÀŸ&· "Àå99999pfloat"pscien"Ffltused"ndigit eflagzecvt”buftop|zerþone€@lssgtrÈtenth_rin"L1 _getchar L2:L3@fltpr.o¸@ƶèzä ÷öÿõ7 j÷ €Â Ó•0�”B~ÁØÿÓ•. Á Ó•0…~Á ”B~‡Â ÷°ÿõ÷$÷ :”Ó•.Áœÿ”B~Ó•e �Ó•- Ó•+ r Àe0�Áe0S�‡&æ„Äe@7Ú÷e(Ô @ñð&Àñþ•-Ž ó€@Añð&ø@øÃ¬7óžø@ø—ôL>—ó BÀûÀe0#�‚ @ñððÑ”÷ „ü‡õ ‚  ó BAñðú‚ ÷ ÷  üw \†Îeó B@ûÀe0�‡ÀmÆþ÷ <€`€  ‡’ÃeÈ�¢9 È•0 ƒ Š÷È•1‚ ƒ„‡Ì>ÌÌÌÌÍÌY8Y_getpw"L1.L2L3"_open _fin L4_seek L5FL6J_getchar L7pL8ˆL9¶L10’L11´L12¶L13ôL14_close L15rin.oo¸t¸¶ØF<f…Æå5 þÿ÷ ðÿ5üÿW-üÿ0W-üÿ9 AþÿWp AmüÿÁeÐÿuþÿé@þÿF…‡)mÿccos.o®ÀÞ¶À¤hª²¤¶¦¤ºœº¾¤²¦¤¾º ¶¤²¦¤º¾ ²²ª€@A(Hhˆh¨¸ÈˆˆøÈhˆh¨(ˆˆ8HˆøÈhˆh¨hˆˆxHˆøÈ˜H¨¨ccos."ccos_ªrval8p z1_gmv8 z2_²stsp ft¤rval4 b_¶call exp. gmv4 c_ºc0œrdv4 d_¾a_²sin. rsb4 rmp4 c1 cos. rad4 c2 rval8 retrn d0–base¨dummy_²clog.o®ËÞ¶r z‚r‚trŠr†t‚vr†rŠtr‚‚z(Hhˆh˜¨¸hØøØø˜¸h(h˜8¸ˆHHHclog."clog_zrval8p z1_gmv8 z2_‚stsp ftrrval8 call cabs. gmv4 c_Šlval b_†stst a_‚atan2. rval4 alog. retrn d0lbasexdummy_‚csin.o®ÛÞ¶À¤hª²¤¶¦¤ºœº¾¤²¦¤º¾ ¶¤²¦¤º¾ ²²ª€@A(Hhˆh¨¸ÈˆˆøÈhˆh¨(ˆˆ8HˆøÈhˆh¨hˆˆxHˆøÈ˜H¨¨csin."csin_ªrval8p z1_gmv8 z2_²stsp ft¤rval4 b_¶call exp. gmv4 c_ºc0œrdv4 d_¾a_²cos. rsb4 rmp4 c1 sin. rad4 c2 rval8 retrn d0–base¨dummy_²csqrt.o®ïÞ¶ä¼\Ä̼̾¼Ô¼Ô¾¼ԼоÌÀ¼¸ÐԼо¼ÌԼо¼ÐÌÄA(Hhˆh˜¨¸hØh˜è¸høø˜8ØX¸ØhØh˜hx¸ØhØh˜ˆx¸ˆH˜˜csqrt."csqrt_Ärval8p z1_gmv8 z2_Ìstsp ft¼rval8 call cabs. gmv4 c_Ôrval4 sqrt. lval b_Ðstst a_Ìatan2. c0¸rdv4 cos. rmp4 sin. retrn d0²baseÂdummy_Ìdccos.o®û޶Ь6h²¬ʮ¬ÒœÒڬ®¬ÚҤʬ®¬Òڤ²€@A(Hhˆh¨¸ÈˆˆøÈhˆh¨(ˆˆ8HˆøÈhˆh¨hˆˆxHˆøÈ˜H¨¨dccos."dccos_²rval16p z1_gmv16 z2_Âstsp ft¬rval8 b_Êcall dexp. gmv8 c_Òc0œrdv8 d_Úa_Âdsin. rsb8 rmp8 c1¤dcos. rad8 c2¤rval16 retrn d0–base°dummy_Âdclog.o®ß¶$t0,|ŒtŒvtœt”vŒxt”tœvtŒŒ|(Hhˆh˜¨¸hØøØø˜(¸h8h˜H¸ˆHXXdclog."dclog_|rval16p z1_gmv16 z2_Œstsp fttrval16 call dcabs. gmv8 c_œlval b_”stst a_Œdatan2. r4r8 rval8 dlog. retrn d0nbasezdummy_Œdcsin.o®ß¶Ð¬6h²¬ʿÀÁÂÃÄÅÆÈÉÊËÌÍÎÏÐÑÒÓÔÕÖר®¬ÒœÒڬ®¬Òڤʬ®¬Òڤ²€@A(Hhˆh¨¸ÈˆˆøÈhˆh¨(ˆˆ8HˆøÈhˆh¨hˆˆxHˆøÈ˜H¨¨dcsin."dcsin_²rval16p z1_gmv16 z2_Âstsp ft¬rval8 b_Êcall dexp. gmv8 c_Òc0œrdv8 d_Úa_Âdcos. rsb8 rmp8 c1¤dsin. rad8 c2¤rval16 retrn d0–base°dummy_Âdcsqrt.o®!ß¶üÂ0hÊÚÂÚÄÂêÂêÄÂêÂâÄÚÆÂºâêÂâÄÂÚêÂâÄÂâÚÊA(Hhˆh˜¨¸hØh˜è¸høø˜8HØh¸ØhØh˜xˆ¸ØhØh˜˜ˆ¸ˆH¨¨dcsqrt."dcsqrt_Êrval16p z1_gmv16 z2_Ústsp ftÂrval16 call dcabs. gmv8 c_êrval8 dsqrt. lval b_âstst a_Údatan2. r4r8 c0ºrdv8 dcos. rmp8 dsin. retrn d0´baseÈdummy_Útanh.oo®-ß¶€LØRLNLVHVZVZVZR€@(H(hxˆ¨¨Ȉ¨¨è¨¨øÈˆtanh."tanh_Rstsp ftLrval4p a_call exp. gmv4 b_Vrval4 c0Hrdv4 c_Zrsb4 rad4 retrn basePabs.oo®�ß¶x0 ð ð;õ€ñ7øèÿwäÿ889)abs."dabs."retrn temp aimag.o®™ß¶l0ðVñõ7øîÿwêÿ89)aimag."rval8p retrn temp aint.o+Vq¶l0ð;õó€@wøîÿwêÿ9aint."temp one€@retrn alog.o®­ß¶¨(H ð ðð;õw èÿ‡7øâÿwÞÿw ÚÿXX)Y9Ialog."dlog."log retrn rerr temp alog10.o®¹ß¶È2T ð ð;õw êÿ‡7ò7øàÿwÜÿw ØÿÞ?Ø[7©f(XX)Y9Idlog10."alog10."log retrn rerr temp const*amax0.o®Åß¶¼>0  ð ð€ÁÑ Yþþ@÷ðøÀ ù wøÌÿwûÆÿwÂÿ8899)amax0."max0."retrn temp amax1.o®Üß¶ÜH< ðð ðð €ÁÑ Yõõ@÷ðøÀ ù wøÂÿwû¼ÿw¸ÿHHHII9amax1."dmax1." max1."retrn temp amin0.o®öß¶¼>0  ð ð€ÁÑ Yþþ@÷ðøÀ ù wøÌÿwûÆÿwÂÿ8899)amin0."min0."retrn temp amin1.o® à¶ÜH< ðð ðð €ÁÑ Yõõ@÷ðøÀ ù wøÂÿwû¼ÿw¸ÿHHHII9amin1."dmin1." min1."retrn temp amod.o+Jq¶È8H ð ð—/;õø{õ�ù—ó€@Áòö7øÒÿwÎÿw ÊÿHHI)Yamod."dmod."retrn one€@temp rerr atan.o®-ඈ< ð ð;õw êÿ7øæÿwâÿHH)I9atan."datan."atan retrn temp atan2.o®7ම0H ð ð—/ ;õ{õw Þÿ7øÚÿwÖÿw ÒÿHHYI)9atan2."datan2."retrn rerr temp atan2 cabs.o®Mඬ*H ð ðÁõQõw æÿ‡7øàÿwÜÿw ØÿXX)Y9Icabs."dcabs."hypot retrn rerr temp cexp.o®_à¶è<`ðõw ðÿ‡7øêÿõw äÿ7òàÿ7øàÿõw Öÿ7òÒÿ7øÎÿwÊÿw Æÿ8Y9i99y99)Icexp."rval8p retrn temp rerr exp sin cos cmplx.o®kඬ0< ð ð—/ ÁÑ õYõÁøQøwÖÿw Òÿ888)Icmplx."dcmplx."retrn temp rerr conjg.o®wà¶x0ðõ7øðÿõÀñ7øìÿwäÿ899)conjg."rval8p retrn temp cos.oo®�ඈ< ð ð;õw êÿ7øæÿwâÿHH)I9cos."dcos."cos retrn temp dble.o®‘à¶„Th(h8HXdble."rval4p lval r4r8 gas8 retrn temp dim.o®¥à¶”*0ð—/ ;õ;öðñ7øàÿwÜÿw Øÿ()9dim."retrn temp rerr dimag.o®²à¶l0 ðVñõ7øîÿwêÿ89)dimag."rval16p retrn temp exp.oo®Äඨ(H ð ðð;õw èÿ‡7øâÿwÞÿw ÚÿXX)Y9Iexp."dexp."exp retrn rerr temp float.o®áà¶„Th(hH8Xfloat."rval4p lval gas4 i4r4 retrn temp iabs.o®÷à¶`$ ð ð;þ€ñ7ûîÿwêÿ()iabs."retrn temp idim.o®á¶œ.0 ð ð—/ ;þ{þöðñ7ûÜÿwØÿw Ôÿ 89)idim."retrn rerr temp idint.o®%á¶\$ ð ð;õ7ûðÿwìÿ()idint."retrn temp ierr.o®;á¶ht(lpÀÀv7 ` ‡×-Zž‡w Þÿx÷eJH ÀeíPÐ��wºÿÀv"Àe7 Àe&&ælw”ÿÿÿÿv)99ierror."erret"Frerr retrn zeroperrbufvcerrpteerbufžonelifix.o®Uá¶�`x(xX8Hhifix."int."lval r4i4 gas4 rval4p retrn temp isign.o®gá¶œ.0 ð ð—/ ;þ€ñ{þðÀñ7ûÜÿwØÿw Ôÿ 89)isign."retrn rerr temp mod.oo+Bq¶°2< ð ð—/;þø{þ�ù—ó€@Áòö7ûØÿwÔÿw Ðÿ ()Imod."retrn temp one€@rerr real.o®‘á¶t0 ð ð;õ7øêÿwæÿ889)real."dreal."retrn temp sign.o®¦á¶´4< ð ð—/ ;õ€ñ{ñðÀñ7øÖÿwÒÿw Îÿ 889)Isign."dsign."retrn temp rerr sin.o®¹á¶ˆ< ð ð;õw êÿ7øæÿwâÿHH)I9sin."dsin."sin retrn temp sngl.o®Îá¶„Th(h8HXsngl."rval8p lval r8r4 gas4 retrn temp sqrt.o®ãᶤ&H ð ð;õw êÿ‡7øäÿwàÿw Üÿ XX)Y9Isqrt."dsqrt."sqrt retrn rerr temp ctime.oà 권,$ ‰7 öÿ7ôÿ ð ð7þêÿò€HwäÿwþÞÿô7øØÿwÔÿ())))))ctime."retrn temp setfil.oóɶÜ<TÁAw ðÿñ‹w æÿpw àÿñ•ÿÿÀ� ”Ñ¥ û!ŠwÄÿX)HiH9setfild<;:9876543210/.-,+*)('&%$#"!      ÿþýüûúùø÷öõôóòñðïîíìëêéèçæåäãâáàßÞÝÜÛÚÙ ¼ü‡ö " ü‡ß �Àetüÿ÷ ZÅEðÿWuÅe ºÄºT!ºü‡‡ÎeÀ ý· ý÷5àúÀ ºÎå‡& �ŠÀÀ ºõ÷ €À  ºîf Ìür f rvÐÁÔý‰r t@PÁ ÿ!á ºáÿáÉ‹þ�‡Àpÿˆ È‹þÀÎ?ÀE€ÿ A‡ Z‚Àe  À ÷‹®?ý À ÷ ìÿÀŠ÷ äÿ ÷ ÞÿÀ ‡7ˆ?‡Y¹988899899x9Y_canonb _coremap È_swapmap È_rootdir _lbolt _time _tout _callout x_mount _mpid _runin _runout _runrun _maxmem _lks _rootdev _swapdev _swplo _nswap _u à_inode X_bdevsw _cdevsw _buf Z_bfreeli _maxip _iget"rsave L2L3 L4ˆL6vL7:_sleep L8  Åd H � ùÅ ÂÃɵ è« ¸ Á €  Üa [ Z çl ÁU |Û÷‚ T Ûr º”Êv é¿ ø` \ úûüýþÿ     w $þÀ�%þ÷ŠþÀ�þ÷ Ž÷•þÎ<& æØß –%wôýw ðýÀ—úùÀE€ÿÀ�æýß5øùÄU€ÀÎýÀeÀ-Äý†À¾ý· ºý‘w²ýw ®ýÄüùßE€àüùÄ5À÷  Ä5€×­’ý÷ ÿw€ýw |ý÷•{ýßEøù×­pý7ŠhýÀ^ý7ZýÎß wLýyYY)))YYY¸YYYYØéyYYYYYéyYXYXˆ)™Y¨éyYYY))yˆéyXé_canonb _coremap È_swapmap È_rootdir _lbolt _time _tout _callout x_mount _mpid _runin _runout _runrun _maxmem _lks _rootdev _swapdev _swplo _nswap _u à_inode X_file È_pipe"rsave _ialloc L1t_falloc L2&_iput L3Trretrn _readp"xL5†_plock"¢L6àL7ºL8_u à_iinit"rsave _bread _getblk L2.L34_panic _bcopy _brelse L1lrretrn _alloc"p_getfs"FL5€L6˜_sleep L7ÌL8:_printf L4.L9_wakeup _clrbuf _free"2L11BL12ZL13¨_bwrite L10º_ialloc"¾L15ÎL16æL17æL18@_iget L190L20L21*L14L22N_iput L23À�;ÿÀ>ÿœwøþw ôþÀ.ÿ_<BÊÕ€ÀEÿŸÀ% ¦�œWp AÉ Ö _<Îæöþæðþß –%ÀæþÀEþ5ôÿÎÖþæNíôÿß ^Ö 5öÿ€ÀEÿŸÀ%` Î¦ß Ö R„„W-öÿÎ&ß Ö 5øÿÎ&ß Ö 5øÿ föÿfôÿføÿß |Æe÷5ÿ`þNøÿß Nøÿß ÎHþæBþ¦ €œ &ß ÆeÀ ò5 ò�þ òþ ÊÕÀ�þÀþ…wÀýw ¼ýu-ƒ@@w¢ýw žýu-†@@w„ýw €ýC@@mÀ�žý,ÀQÀ]œýÀ5%@ Î&æˆýß –%Îæxý&ß –%÷•j]ý%÷`^ýÎæBß Ö ÷àPý@ LL24îL26nL27ÚL28ÒL29ŠL30¸L10000²L31²L25èL32üL33V_ifree"L34BL36PL37zL39tL35‚L38tL40d_update"†L42jL410L43žL44þL46øL45øL47L48$L50_iupdat _prele L49_bflush iget.o-\¶ð H,w üÿ Ä!X;†5-.5-*̵ ÌÕΦÿ&ß Ö æ̵—  †„,(yÈ_lbolt _time _tout _callout x_mount _mpid _runin _runout _runrun _maxmem _lks _rootdev _swapdev _swplo _nswap _u à_proc ,_text –_sysent _regloc#ô_trap"rsave L2 _psignal L1®L10000D_fuword L3\L4à_backup L5à_estabur L6à_expand L7ÂL8Ü_copyseg L9ØL11(L12êL13L14ðL15ß þ Ê•2Ë•3ô•Ì•ô€w†Àw tÀDÎß FE3- &4 3 ó5€óE€ÎÎeß ”Îß pE׬óUÎæÎeß Ö Ó7 º{7¶{Îß àô¬{Îß pEwþ¿w ì¿DŠ{Îß FE׬€Îß pE·n{7×, óU€Îß pEÎæÎeß Ö Þ7 D{÷ @{ÎÎí8{¦ß >Ö 7({Âí${Îß èÎß pEó5óEÎÎeß ”ºw\¿w J¿D̵ ÌÕÎ&ß Ö ôÌÕw2¿w ¿DÌÅ̵ÌÅß ”w¿w þ¾ÿM¤õxÿøÿõþÿöÿõ5øÿõ øÿßà0þÿßàþÿNøÿß ~xÿ_öÿþÿÀÎ 6õ5à äSÀÀj Ö À +À æˆß š Ö À+³`À×, óæžß š Ö ÀÀ· þÀ ðÀ ÃeÉæ¬ß š Ö Àw¸w ¦@µ =¢ @µ ’Àï wˆw v€w¢DÄeÀŸ˜ · ’ %ß zôwZ7 ~7 tׯt-· l· j÷,F7 b .÷DƒÓ Á BÝ üJ( dn o” fž eV c` s4 l Ó•-÷ 6 r f÷ ðÿ€Àe0�‡•à •$Áà“”C~÷ fWtýÿÁEà÷ ðÿ€ÀEøÿÀe0�‡Â´÷  Âª÷ –‚Ò Â ƒó‹ÿÿà ùÎ Á„ÁàŠ�`w„÷ xß z÷ tû·lΟh· bß zƒ ç × "Äe!,‡Ä�ÀEøÿÀ%�££ ´Š­ôŠ ƒ Û·ŠþΜÿæß Ö ›÷ üýôÅ7n æ&ß –%ŒÀX� Î&æ&ß ÆeÀ 4À.ôm´Š ÄÎ&æ& ß ÆeÀ  Àetýÿ&æß –%ô ôÕ�À 4œZ_ìÎdß wDýw @ýÀ¸÷°Îß Î2ýß Âœ7 ˜Ã !Âe— ,‡Â—¢€œÀEþÿÀ%ƒ¬·`€œ„ âÀR·L÷ ÊüÓÂBŽ ß ÷ ¸üòµ òÅ÷Xý¤ü÷Tý üŽ ß ÀwŒüw ˆü Ä!,†“ÄeøÎpß 5ôÿà.ZRP(0‰ž.—% À‰\ ‰Àÿÿ‰Ö €w Ä,ä7î‡À5*w -ê9‡À<*w -ð;†wÆ)÷†M÷ AÆ@÷lGG÷pG¼K÷•_ØKw f#hóU ,AÃÚMÀ× êM‡× ôM‚À34× Nð‡w 8%Áö=w l&Bw p�x î÷ä-w ¼ìw �w žw ª÷Ê-áw Ì lAö=w ª,ð;w Ø$àèl�f0Ä^*D*ÐsubroutinefunctionblockdataexternaldimensioncommonequivalencedataformatimplicitInput file? _ &Bw ªÔ�€wrw V À !À,AÀEø w °óEÿ,A³S,Aæw .  ƒw èw  Ö  $Þ (w |Ö …functionBw :ðÕ …89h9899999¨9999999999999ø ((9Xø99999¨999999ø9h*þÂþÿ÷ þÄ5#5ãÄeõLíÀÃeúÄ ‡óó óÃåóLttŸþÿwÂýié˜yxéyyxx99IIIYYY™YiYih¸YH¸HHHL1D_suword rretrn _stty"H_fuword L2~_getf L3ÆL4®_wflusht"Ê_spl5 L6ØL7ð_sleep _flushtt",_spl0 L5ú_cinit"þL9L10(L11"L8(L136_getc L14FL15FL16V_wakeup L17nL18zL12‚_canon"†L20�L21¤L22¤L23¨L24 L25ôL26àL27ÒL28ÐL29ôL10000Žß _øÿ ÿ÷ ²ÿÀ�åÿß À Ôwžÿw šÿÎ@æÔÿæÎÿß –%Î@æÀÿæºÿß –%÷ lÿÀ�›ÿõ ÿøÿ÷ Xÿß ÿ¦ß Ö _øÿ ÿ÷ @ÿÓw:ÿ) H Xix‰ ¸é) H X i8‰é_u à_mmread"rsave L4_ldiv _lrem _spl7 _fubyte _spl0 L2NL10000^_passc L3^L1^rretrnL39€_free L38€L33ž_maknode"¼_ialloc _wdir"L40üL42L43"_writei L41Dprf.o-Ë\¶¼f Èw üÿ@Àe@µ ’À%%€?Žß êñ@µ ’#ÀÎ-ß êÀ — oÎÎ æß ¦Ö Îß êÄ•Žß êù÷ |ÿfc:dLlLonsœÃe¶wZÿw VÿNf& ß –%N&ß ¦Ö Nf& ß –%Îe0ß êwÿw ÿDÀxÿ!ß5€tÿûÃtÿ tÿvÿ! Î ß êÎß êÎß ê ß êßtÿwÀþw ¼þ÷ ¶þ÷ ²þNjL9DL10bL12\L11\L13H_panic L1 L14‚L5‚L15–L16PL17 _ldiv _bread _lrem L18þL19_brelse rretrn _iput"$L21jL22X_itrunc"_ifree _iupdat"x_prele L20tL24L25ÚL26èL27øL28üL29 _bwrite L23L30¸L316L32¦L34žL35ŒL36dL37†mÿfp.o,Í–ÿÀÎf÷ È0‰··7ÀP�ÐP�Æå7 ´EDÄEÿ!ðw ÷E€šÅEðDÄ54Ä5À! ƒwþÄ |n8FVffffffN^W!w2Lw((êÅÄ Ä ŠÄÄ ü °w¼fÞæf–¸²¨W! BŠ— Âå— wâL— wÒ> wÈ(üw¾(ê÷ ¤…ŠÄÄ ü *ff$*îlôº„ ÌP¸"øÀªÀEðÿ7æ÷E€š÷U€’÷E@Š÷U@‚· ~ ÀæÈEÍ €ÈUÈUÀÀ‚æŽæˆ÷ D· "BÂE?ÿ‚ ‚ ‚ Âeê‡CÃEøÿà Ãe@ÀEÇÿ€ € xÚ&PZz†–¦¶À÷5€òÀe‡À÷5€àÀå‡À‡À÷5@ÈÀe‡YÃå× H†Ã à ÃeêÑ �÷5@¢>× &;†Ñ �× (6Ã6æù × (À÷¼Î, `ƒ&æËeƒ × (ù  àÃ× (ËåÃæ~÷exÎbƒwìÿÃw þÃ5ûQ$�ÀÎ÷ ÂÀÚ �f � Ð ÁE€ÿÁU€ P�÷5€â��  �Á ŠÁÁå€P‡ÀÐfŽPÎPQ7 ”‡Á5ÿ¡    ˆ öÁ5€Ä C B A È ÷ à `‡ÒÒ÷5€pÒÒ‡  ‡““÷5€X““‡  ÷5€F  ‡Ë Ëe€‡ËE€‡‡ÅÐÊ Ë ‹"“$ “$÷5€  “$“$‚͇Íÿÿ‡ ‡ÒÒ÷5€äÒÒ‡  ‡““÷5€Ì  ‡ÀÎÐÐ÷5@´Ð  ÐwL   Èw>ÅÀÎ÷ „þÀÐÀp (¡   € ÷Á ÷5@` ÷ B B ‡ �õ‡Â ÷ ( ͇÷U2wÌüÀÎ÷ þ÷÷ üw üÀÎ÷ þËÅwŽü÷wžüËüw–ü÷ Þý÷ Øý7 Þ÷ Úa÷ ÈUÁÌÁíÔW 8UÀÜ W 8EÀÐfˆc¡    Î ù à `Ö ÁØÂäÀ÷-nx ¡a ‡‰hÀ û‰h±ú ¡¡ ‡‰èÀ û‰è±úÁÐÉ ÁØÀ¡a ‡ À û! ÷ pý ÁÚÂÎÀRÀ ýBÀÎÈ ÁW !W �ÿÁe€Á¡ Ð ÁU€ÈE€ÿTR÷5€æ‡  ÷5€Ô  ‡÷UÆw`û÷ ²÷ ÷ îüÀÎÁÚ ý Á€ 7 ˆr@Ðr@Ü€ ¡ ôÁ€Âe— í÷ ªü÷ JÿW!òW! ÷5€P7 HÅe÷ ÿÅå‡÷ ,ü÷ 2¸÷í6(÷ fÀÐ    ÅÐæÀÜ$ $‡‚$‡‚$‚ÀÜä& äN & äN äƒ N ‚åN �å�SÄ C B A ¡ Ü΀ÅeW!ØÕ‡Ö …w^þ÷ œû÷m¬ž÷ š÷ rfÅà÷5€˜Åe     À € å   W!Ü‚ÀÐP�Ð…‡¡    0ç&ÀÐd& dN & dN dC N ‚eN �e€Õ÷- ÷ÿÿ ‡÷‡rtibptm.ext€m.lngi@fptrap"ac0ìíîïðñòóõö$êac1$òac2$úac3$reenterÌspc(sps*sr0sr1trapinsèbadinsffpsræclass3Àclass2„i.cfcc8i.setfFi.setiVi.setdNi.setl^fsrcÀmod0rxLmod242mod0f(mod24fêsretli.ldfpsÞi.stfpsæi.clrx–i.tstx¸i.absx²i.negx¨mod0ra>mod24imod24düfreg®i.mulx$i.modx*i.addxîi.ldxli.subxôi.cmpxºi.stx„i.divx i.stexpÌi.stcxjPi.stcxyi.ldexp¸i.ldcjx"i.ldcyxøret„mod0&mod1Pmod2Zmod3zmod4†mod5–mod6¦mod7¶badi1Âmod0rFssp&checkÆpctmp,setabÐasignÎsetaÞbsignÚnorm aregÐsaretŽaexpØxoflo®retaÄretb²bregÜunfloovfloi.mul0bexpäxorsign´ac4 ac5 L8Þ_dcwrite"âL11_ttwrite L10_dcxint"_ttstart L134_wakeup L124_dcrint"8L15‚L16€_signal _flushtt L14¾L10000�L17˜L10002¨L10001´L18¾_ttyinpu _dcsgtty"ÂL20êL19,L21L22,dn.o.o-¤\¶°Æw üÿ@�ÀÀ Àe€úôµ�÷•ßÕ€úÌ•EwÌÿw Èÿ@�À ðÅûÿ€úw¶ÿw ²ÿ@�À Àe€ú̵€Îæ€úß Ö õÌÅ€ôµÀ÷•³ÿ̵ À°ÿå̵âjþß5€lÿ÷•‘þ×-\þdÎ(æß Ö Îfß Ö ÷ ÿw,þw (þÄd ß ’Ä úwþY9)99¸ÈùY)8H9iùY)8H98ÈiùYYùY8HùY99998(98HùY8H98HùY)„w üÿ@ÀeôÿÎß ‚À�Ä€Î&ß Ö ÎÄe&ß Ö ÎÄe&ß Ö w¸ÿw ´ÿÄLß 7BÄeß 76Äeß 7* ß ‚w~ÿw zÿÎPß ÀÀEÿŸÀ% ÷•‹ÿ fæÁœWp AÉ –%w6ÿw 2ÿD÷ (ÿ Î&Îe ß Ö ôß ,÷ ÿwÿw þþÄÀeÀE× ‚Ëâþ÷ÞþÃeöwÔþw ÐþDÎeß À øÎe ß À øß Îe ß Ãþÿ÷ ’þß À ú4Šßþÿwzþw vþCÀœÎ æß Ö öÄÎß ,ó5 ­ÿÿ\— #!ƒÄ ë— @æ— å — #— @— Ä — ÿ7ŠdÿÀ0ÿ ·Š[ÿÀ�WÿÀ% ÷ œÿ ÌU7ŠCÿ7Bÿß ÷ ‚ÿw.ÿy˜¹YYYYY yYY8yYYYYYYY˜_buf Z_bfreeli _bdevsw _cdevsw _u à_rftab _rfstrat"rsave L2_iodone L1L_spl5 L32L4:L5H_rfstart"P_spl0 rretrn L6„_devstar _rfintr"ˆL7ÎL8ºL9¶rk.o-¹^¶ä‚Ðw üÿD-‡-9†­ ÌUß F4 ÌE­ � 5øÿÀ ruøÿ÷ ¦ÿ@øÿÀ Àe ß5€ÿ÷ D€´,†3-‡´, ƒ3-ƒ2ôÂå2÷ FÿwBÿw >ÿÃ× †ÀÌ5ß  ÿÎIß hÀÿ ÌU#ß ÷ ÌUÞwðþw ìþD­ � 5øÿ ÁÀ ruøÿÁÀ rÁÀ r t&ÁÀ r �UBøÿ—t �P@w�þw ŒþÀÿß5 ÿ·ŠyþÀ�uþÀ% Îß æ÷ ~ß5 ÿÀÿtóÿÀEøÿÀ Àe7Dþ æ>þ÷ JÿÖ &æ ÿæ.þß Æe ß æwþw þÀþÄ þ@ÀU P?úý7 öýß 7Šíý÷ ¦þwäýw àýÎAß hÄ!†Ë5Îß  ÿÀÿÀE?ÿÀ%€øÎMß håw˜ýw ”ý_ÿß5€ÿûw~ý™È X©¹™XXȹ™¹™yyXiiiè¹™iiiiÈy¹™XX¹™¹_buf Z_bfreeli _bdevsw _cdevsw _u à_rk_q _rk_ap _rktab _rkstrat"rsave L2.L10000"_iodone L1ºL3HL4V_spl5 L5|L6z_rkstart"¾L7¶L8|L9²L10002”L10001¤L10®_spl0 rretrn L12ÈL13 L14 _rkaddr"_rkcomma"hL15_rkerror"L16 L11 L180L19FL17l_rkintr"pL21žL10003’L22š_rkpost"æL23Ü_devstar L24âL20âL26L25L28.L29dL30bL31JL32ZL27dL34tL35~L33~tc.o-'_¶ü€ìw üÿNß wîÿw êÿD4 ÷ ÜÿÀÞÿ7ØÿÀÔÿ07ÌÿÀ�Àÿ÷ ÷ ¶ÿw²ÿw ®ÿÀ®ÿ"ÃâþÀœÀEøÿ­ Ë•÷•‰ÿ÷•‚ÿ� tÀUCß5€àþÂU÷•bÿ‹w\ÿw XÿÃâþÄTÿË5€ËE€÷ŠAÿÀ�=ÿÌUË5÷•(ÿËE÷•ÿËUË•CGÂèþÀ� ÿ67Šÿ7ÿ÷ Dÿß•âþß 1´"ß‚´"Ö‡"" ÀEÏÿÌ5ÁÁ @PÀUA �÷•®þ€Àe-¿‡¸ Àå ƒÀ xvTøw€þyˆ©yÉYYYYY©yYYYY©yYYYYYYYY8Y©_bdevsw _cdevsw _buf Z_bfreeli _u à_tctab _tcclose"rsave _bflush L1rretrn _tcstrat"_spl6 L30L48L5F_tcstart"N_spl0 L2JL6 L7rL8ž_tcintr"¤L10îL11ÌL12øL13ÞL14ÒL15èL16ÞL9|L18dL19øL20 L21_iodone L22L10000@L10001DL23TL17|tiu.o-�_¶@âlw üÿNß œ̵÷• Ì•ô•À�Õÿ·ŠÑÿÀ ÷ lwÂÿw ¾ÿ÷Š»ÿNß œŠwªÿw ¦ÿNß N_P÷ �ÿÀ’ × � @0÷ À ·ŠvÿÎæß Ö ò@�Îe€ß Ð÷ RÿÎÿÿß  ΂ÿæß Ö  && ¦ß ÆeÀbÿÀ�Sÿòœ2 @�2÷ ÿ˵Îæß Ö öËÅŽß ¬˵ Î¦ß Ö ö÷ Îþ˵÷•ùþŽß ÀøþƒÀ�éþ¯w¬þw ¨þNß N_VÀµøÿ3 ?÷ ~þ˵&Îæß Ö ö˵(˵ ZÎÿÿß Ê@�2ËÅŽß ¬˵,Îæß Ö ö³œ2 ˵Žß ÷•Eþ15 øÿ÷ þ˵ Žß &Î2þ¦ ß Ö Î&føÿ¦ß Æe„, À�ÿý Žß 2á Wpr`³w¦ýw ¢ý÷ $À 2À˜ý À�Žý7ŠˆýÎß $ß Ð�¡Ì5 ßÿþŽ¡÷•\ýßE’¡÷•Ný € Ž¡÷ 4ßM’¡w0ýw ,ýD7¡#ý ÀE€ÿ7�ý”¡ßK’¡wýw ýß5ˆ’¡ Îæÿÿß ÊÖ _¢À�åüß œÀ�Øü7ŠÒü€ÄÎüÀ æÿÿß ÊÖ _¢ß5”¡ Δ¡÷ H&ß ÊÖ R€_ˆÀ”¡ × � @0 Î ÷ &ß ÊÖ =ÀŽ¡À Àeß5’¡ ´ À”¡4�ËÅ(ô5 m œÿÿ”¡ßO’¡ß5’¡÷•ü\ËÅ�”¡ßI’¡ß5’¡÷•öûK7Šðû7îûÎß ËÕß5”¡ÀËÕõøÿß5€”¡#ßC’¡Î”¡ß œ æÿÿß ÊÖ €C-øÿ ß5€”¡ÀÀ ÐÎß Ù÷ Ôý Àå ƒÆÀ xšn¼ê wZûw VûÀ�Qû÷•ÿÿIû7ŠDûßA’¡w6ûw 2ûCNß œÎ&ß Ö 7Šû7 ûÎß Ä!`†Î&ß Ö Äeõwæúw âúDÌÅÌÕ t�ß 4 ß w²úw ®úNß œ÷•Ñú ̵$̵÷•»ú wxúw túß5’¡ß5@”¡ ÀwTúw PúD4 ÀFú7@ú÷ ’üÀ8ú070úw&úw "ú@�Îß œTÀ¬úAΤúß 4�JœæŽúß Ö 4Š>Îæ|úß Ö 7œæhúß Ö 4ŠÌÅ)× @ÎÎeÀÿß œÌÅ × @ÎÎeÀÿß œÌÕ   ƒ À x†ö*F^÷•Ÿùwdùw `ù@�ÀE€ÿ× ÁWpÁe@× @ × HÁWpÁe€þ@ wù©)‰‰ ©‰ ©i‰ˆ¸Ùø)))i¸¸Ù)¨)) ©i¸ø¸¨)Ù¨))¨ ©‰‰‰ˆ‰‰ ©‰‰ ©‰‰‰‰‰‰‰‰ ©‰‰‰ ©‰‰ˆhh ©¨ ©)) © ©‰‰‰‰ ©))È)è)è)è) ©hx _bdevsw _cdevsw _u à_buf Z_bfreeli _inode X_tiu_dch 0_tiu_cch 0_tiu _tiuopen"rsave _tiuptr"œL1:L2 L3:_tiustop"¦rretrn _tiuclos">L4R_tiuwrit"V_tiuchan"NL5P_spl5 L6ªL7€_tiubusy"ˆL8œ_sleep _stiucha"Ð_spl0 L11®_getblk _min _iomove L10000æL12ìL13üL14_tiustra"¬L15L16.L17>_brelse L9DL10001PL10P_tiuread"TL18VL19~L20üL21‚L22–L23ìL24ÂL25ÖL26ôL27 L10002:L28DL29V_tiustar"ZL30ÌL31„L32‚_wakeup L33¬L34ÌL35Æ_tiuintr"øL37ôL36ôL39_tiuerr"ÊL38¢L40NL10003>L41NL42hL43 L45ˆL46nL47’L48¨L49ºL50¼L51êL52êL53êL54 L55 L56 L570L584L59‚L60\L61zL10004fL62zL10005tL10006xL44¢L63ÆL65ì_tiucher"L66L67L68L69L64L71DL70JL73jL72„L74€L75|L77¢L76¨L79ÊL80ÒL78Ö_snstat"ÚL81˜L83xL84ö_fubyte L85_suword L86L87*L88FL89XL90^L91pL82’L93ÀL92ÞL94Útm.o-Ö_¶ –Ðw üÿ@�œ÷• °ŠÀ 0 À ðÿÿwÈÿw Äÿ@�0Š@Î&ß lÖ Î&ß lÖ w”ÿw �ÿÀ�Šÿß5€RõÎæß Ö ñ@t@]ÀU`RõwXÿw TÿD� À Àeô"‚ô"†ÌUß (Ì5ß ß Ì5€ 4 ÷ ÿÀÿ7üþÀøþ07ðþÀ�äþ÷ ÷ ÚþwÖþw ÒþÀÒþb� 5øÿ@øÿÀ @øÿœß5€Rõ ÌU7 þß á@øÿtÁEÏÿ@PÀUA`-÷•pþ-ƒÃU€íTõ €ÃUÃU €àTõßRõ÷•6þ À TõVõÌ5ÀÀ�þÀ ÀÀPRõwþw üýÀüýB� ÀRõ"ß5€„Põ×­Úý·ŠÓýÀ�ÏýÀ% ÀÀ ° 7мý÷ âþ$Àð•ÿÿÌU÷•¢ý×­žý7Š—ýÀÀ ° 7Žý7Š„ýß ÀÀ 0÷ ˜þwjý©hIhxˆé©hé©Yhx驈ÈøÈYYYYYié©YxhYÈYYYé©YYYYxYhYYYxYYÈxé_buf Z_bfreeli _bdevsw _cdevsw _u à_tmtab _t_openf _t_blkno _t_nxrec _tmopen"rsave L2L34L14rretrn _tmclose"8L5\_tcomman"lL4hL7rL10000€L8�_lbolt _sleep L6¤_tmstrat"¨L10êL11Ö_iodone L9&L12ê_clrbuf L13ø_spl5 L14 L15L16"_tmstart"*_spl0 L180L17üL10001\L19nL20ÄL21¦L22¾L23°L24¾L10002æL10003öL10004òL10005ö_tmintr"L25’L26^L27LL28JL29TL30„L31Žvs.o-/`¶Œ¤4?0*#?546?213?879?w êÿßYhøßXlø ß ŒwÒÿw ÎÿßE@høÎß À ùÎß À ùw¦ÿw ¢ÿ ÷ šÿ Ä Ä< ß ŒÎß Œð ß Œwtÿw pÿÀ¿5x@÷ ^ÿ×-`ÿ< ÷ *Î æß Ö òÎfß Ö ÷ ÷ ,ÿw(ÿw $ÿÃløË5€(×-¸¿ËE7 ¬À ÿË5ËEËUË5Îß 7€nø×-ÚþÎß wÄþw Àþ÷ ºþÎß Î æß Ö ò÷ šþÀEðÿœß w†þw ‚þÄjø×-xþ Î&ß Ö Îß w\þY‰Y¸¸‰Y)‰Yid<;:9876543210/.-,+*)('&%$#"!   Åd H � ùÅ ÂÃɵ è« ¸ Á €  Üa [ Z çl ÁU |Û÷‚ T Ûr º”Êv é¿ ø` \ úûüýþÿ     é)y XXHxˆ)yXX8)_bdevsw _cdevsw _uˆ_spl5 L13¢L14¾_vsxintr"Ø_sleep _putc _spl0 L12ÔL16¤L178L18þL190L20L21(L228_wakeup L158_vsread"<L24FL25b_passc L23v_vsrintr"zL27˜L26 vt.o-C`¶Ô´\w üÿ@÷•%ß øïwâÿw Þÿ߀úïßUøïwÌÿw Èÿ÷ Âÿ& × ß5øï ÀEÿúïßUøïƒ î÷ ”ÿß5øï · ˆÿÎæøïß Ö ÷ vÿÛÖwnÿw jÿßEøïÀ^ÿ7 XÿÎøïß wLÿ9 y9y9ÉIhyy9¸y_u à_vtflag _vtopen"rsave L2L3L1rretrn _vtclose"L40_vtwrite"4L6:_cpass L7ŽL8BL9DL10hL12dL13ŒL11d_spl5 L14†_sleep _spl0 L5Ž_vtintr"’L16°_wakeup L15°partab.o-Ü]ÿ€ ����‚…†���������€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€�_partab#dh.ob.o-t\¶¼ >0w üÿW­÷•#QßE @ñA�WpÁeDô4ßU@0àôÕ ôµô•ô•ôôÈß Ô@�@ñßBñß5@BñôÕß`0@ñôµÎ &ß Ö õôÅôÕÀ’ÿÀˆÿ0wDÿw @ÿA�WpÁeDñÅçÿß w ÿw ÿA�WpÁeDôµß wúþw öþA�WpÁeDôµß wÔþw ÐþÀà)ÁWtøÿÁEðÿWpÁeD!à†ôµ Ã5 ÀE?ÿÀ%Àß ÝÃ5  æß Ö Ówpþw lþA�WpÁeDB€  ß ôÜþôÚþß Ôw,þw (þD÷ þÁåÀ rÀU@0�à�t �Wt@P­ÃU@ÃUô5€ÃU0ßà÷ ÐýwÌýw Èý5 øÿÃõþÿöÿ÷ ´ýÄ!à:†ß0à1ôµ- *Îe ß À%´�@øÿÀU@0�àÀeàßÿÿàßPàŽÎE€ÿÎe&æß –%ôÕà µ øÿÄeÃ_öÿþÿw,ýw (ýß5€@ñ,Á@ñÁEðÿWpÁeD!à†ß ß5@Bñôµ Î&ß Ö  Bñß ôÅôÕß`0@ñwÂüy)X)))yXH)yXˆ)yXÈ)yXX8X)yXH)))y©Xé)y XXHxˆ)yXX8)_bdevsw _cdevsw _u à_partab _proc ,_dh11 à_dhopen"rsave L2L1¸_dhxint"4L3b_dhparam"ÔL4~L5„L6š_sleep L7¸rretrn _dhclose"¼_wflusht L8Ü_dhread"àL10_ttread L9_dhwrite"L12(_ttwrite L11(_dhrint",L142L15ŒL10000pL16x_wakeup L17€_ttyinpu L13Œ_dhsgtty"�L19¸L18Ð_spl5 L21L22(L23(_spl0 L200_spl6 L25PL26ÊL28¾_getc L29¢L30¾_ttrstar _timeout L27ÄL24Ð_dmintr"ÔL32:L334L34.L35&_signal _flushtt L364L31:rp.ob.o-î^¶HB tw üÿD� t4,B‚ÌUß 4 ÷ ÒÿÀÔÿ7ÎÿÀÊÿ07ÂÿÀ�¶ÿ÷ ÷ ¬ÿw¨ÿw ¤ÿÀ¤ÿ7·Š–ÿÎ æ& ß –%Î æ& ß –%ÁÀ rWt�P_Ôý� €týÿÁÀ r&€ÀEøÿtlDæÒý&ß Æew(ÿw $ÿÀ�ÿ-Äÿ7ŠÿÀÌý·Š ÿÀ�ÿÀ% ß5Èýß ÌýßÌýß5€Ìýû÷ 4ÿ ÌU7ŠÓþ7Òþß ÷ ÿw¾þ˜ž˜žË€ X˜X˜Ó‰¨Éiiiii)‰iiHXh)‰iiiiiii¨)_buf Z_bfreeli _bdevsw _cdevsw _u à_rp_size#B_rptab _rpstrat"rsave L2&_iodone L1T_spl5 L3:L4BL5P_rpstart"X_spl0 rretrn L6Ô_lrem _ldiv _devstar _rpintr"ØL7>L8*L9&L10L11L12L13 affects aforementioned after afternoon again against age agencies agency ago agreed agreement ahead aid air algebraic algol algorithm algorithms all allow allowed allows almost alone along already also alter altered alternate alternative alternatively alternatives although always america american among amount amplifier amplitude an analog analogous analyses analysis analyze and angle animal announced annual anode anodes another answer answered answers any anyone anything apart apparatus apparent apparently appeal appear appearance appeared appearing appears application applications applied applies apply applying approach appropriate appropriately approximate approximated approximately approximation april arbitrary are area areas argued argument arguments arise arises arithmetic around arrangement arrangements array arrays arrive arriving art article arts as aside ask asked asking aspect aspects assign assigned assignment assistance associated association assume assumed assumes assuming assumption asymmetric at atmosphere atom attack attempt attempts attention attitude attorney attractive audio august author authority automatic available average avoid aware away axes axis back background bad balance ball bandwidth bank bar base based basic basis be bear became because become becomes becoming been before began begin beginning begins behavior behind being belief believe believed bell below beneath benefit bent besides best better between beyond bill binary biometrika bit bits black block blocks blue board body book books both bottom bought bound boundaries boundary bounds box branch branches break breakdown brief bring broad broken brought brown bubble budget build building buildings built burning bus buses business busy but buy by cable calculation california call called calling calls came can cannot capabilities capability capable capacity capital card care career careful carefully carried carries carroll carry carrying case cases cathode cathodes catholic caught cause caused causes causing cell cells center centered central century certain certainly chain chairman chance chang change changed changes channel channels chapter character characteristic characteristics characters charge charged charging chart check checked chemical chief children choice choices choose chosen circle circuit circuitry circuits circumstances citizens city civil claim claims class classes classified clean clear clearly clock close closed closely closer closest closure cluster clustering clusterings clusters cm code coding coefficient coefficients coffee cold collection college color column columns combination combinations combined combining come comes coming command comment comments commerce commercial committee common communicates communication communications communist community compact companies company comparable compared comparison compensate compensation competent competition compilers compiling complement complete completed completely completion complex complexity complicated component components composite composition comprise comprises comprising computation computational computations compute computed computer computing conceived concentrated concentration concept concepts concern concerned concerning conclude conclusion conclusions condition conditional conditions conductivity conductor conductors conference confidence configuration configurations congruent connected connecting connection connections connects consequently consider considerable consideration considerations considered considering consistent consisting consists constant co !"$%&'()*+,-./0123456789:;<=>?@ABCDEFnstants constrained constraint constraints construct constructed constructing construction contact contacts contain contained containing contains contents continue continued continues continuing continuity continuous contract contrast control controllable controlled controlling controls convenient convention conventional conventions conversely conversion convert converted converter converting cooperation coordinate coordinates core corporation correct correctly correlation correspond corresponding corresponds cosines cost costs could council count counted counter counting countries country counts couple coupled coupling course courses court cover covered create created credit crisis criterion critical crop cross crossovers cubic culture current currently curve curves cut cutoff cutting cycle cycles daily dallas damage danger dark data date day days dead deal debugging december decide decided decision decisions declared decoded decoder decoding decomposition decrease decreases decreasing deep defect defects define defined defines defining definite definition definitions degree delay delayed delays delete demand density department departures depend dependent depending depends depicted depth derived deriving descendant descendants describe described describing description design designated designed designs desirable desire desired despite destination detail detailed details detected detection detects determine determined determines determining develop developed developing development deviation deviations device devices diagonal diagram diagrams dial diameter dictates dictionary did die dielectric difference differences different differential difficult difficulties difficulty diffusion digit digital digits dimension dimensions direct directed direction directions directly director discharge discharges disclosed discloses disclosure disconnected discovered discrepancy discrete discuss discussed discussion display displays disposed dissimilarities dissimilarity distance distances distinct distinction distinguish distortions distribution divided division do document documented does doing dollars domain dominant done doped dotted double doubt down dr draw drawing drawn drew drink drive driving drop dropped due duration during dust duty dynamic each earlier early earth ease easier easily east easy economic economically economy edge edges editing editor education educational effect effective effectively effects efficiency efficient efficiently effort efforts eight either electric electrical electrode electrodes electronic electrons element elements eliminate eliminated else embedded embodiment embodiments emotional emphasis employed employees empty enable enabled enclosed encoding encountered encourage end ends energy engineering english enough enter entered entire entirely entities entitled entries envelope environment epitaxial equal equally equals equation equations equilibrium equipment equipped equivalent equivalently error errors escape especially essential essentially establish established establishing estimated et etc evaluated even evening event events ever every everybody everyone everything evidence evidenced evident evil exact exactly examine examined example examples exceeds excellent except exception exchange exclusive executed executing execution exercise exhibit exist existence existing exists exit expect expected expects expense expensive experience experiment experimental experiments experts explain explained explanation explicit explicitly exponential exposed express expressed expression extend extended extensive extent external extinguished extra extreme extremely fabricated face faces facilities fact factor factors facts faculty failed failure fair fairly faith fall falls false familiar families family far fashion fast faster favor fear feasible feature features february feed feedback feel feeling feet felt few fewer field fields fifteen fifth fig figs figure figures file filed files filled filling film filter filtering final finally financial find finding finds fine finished finite fire firm first fiscal fit fitting five fixed flexibility flip floor flop flops flow follow followed following follows food foot for force forced forces foregoing foreign forest form formal format formed former forming forms formula formulation forth fortran forward found four fourth fraction frame frames free freedom french frequencies frequency frequently fresh friend friendly from front full fully function functional functions fund fundamental funds furnish furnishes further furthermore future gain gap gas gaseous gate gates gating gave general generality generalization generalized generally generate generated generates generating generation generator geometries geometry german germany get gets getting give given gives giving glass global glow go goal goes going gone good goods government governments grant granted graph graphic great greater greatest greatly green gross ground grounded grounds group grouped grouping groups grow growing growth guaranteed guarantees guard guess guests had hair half hall hand handle handling hands happen happened hard hardly hardware has have having he head health heard heat heavily heavy held help helped hence here herein hereinafter hidden hierarchical high higher highest highly hill him himself his historical history hold holding hole home hook hope horizontal hospital hot hour hours house housing how however human hundred idea ideal ideas identical identification identified identify identity idle if illustrate illustrated illustrating illustration illustrative image immediate immediately impact implement implementation implemented implicitly implied implies imply importance important impossible improve improved improvement impurities impurity in inches include included includes including incoming incorporated increase increased increases increasing increment indeed independence independent index india indicate indicated indicates indicating indicative individual individuals industrial industry inequality influence information informed initial initialize initially initiate initiated input inputs inserted inside instability install instance instances instantaneously instead instruction instructions insurance integer integers integral integrated intellectual intended intensity intent inter interaction interactions interchange interconnected interconnection interest interested interesting interests interface interior intermediate internal international interpreted interstage interval intervals into introduced introduction invention inverse inverted inverter investigation invites involve involved involves involving ion ions is issue issued issues it items its itself james january jersey job jobs john joined jointly jr judge judged judgment judicious july jump june just justice justification justify keep keeping kennedy kept key kill kind kinds knew know knowledge known knows labeled labelled labels laboratories laboratory lack lag laid land language languages large larger largest last late later latter law laws lay layer layers layout lead leader leaders leadership leading leads learn learned learning least leave leaving led left leftmost legal length less let letter letters level levels liability liable liberal library lie lies life light like likely limit limitations limited limiting limits line linear linearly lines link links list listing lists literature little live lived load loaded loading local locally located location locations log logic logical long longer longest look looked looking looks loop loops lose loss losses lost lot low lower lowest machine machinery machines made magnetic magnitude main maintain maintained maintenance major majority make makes making man management manager manner manual manufacturer manufacturers manufacturing many mapping march margins mark marked market mask masking mass master match matched matches matching material materials mathematical mathematically matrices matrix matter matters maximum may me mean meaning meaningful means meant measure measured measurement measurements measures measuring mechanical mechanism medical meet meeting meetings member members membership memory men mentioned merely merged merging message met metal metallization method methods metric middle might miles military million mind minds minimal minimize minimizes minimizing minimum minister minor minutes missing mistakes mixture mode model models modern modes modification modifications modified modular moment money monotone monotonic monotonically month months moon moral more moreover morgan morning most motor mounted move moved moves moving much multi multidimensional multiple multiplication multiplier multipliers multistage multivariate murder murray must mutually my name named names narrow nation national nations natural naturally nature near nearer nearest nearly necessarily necessary need needed needs negative neighboring neither net network neutral never nevertheless new news next nice night nine no nobody node nodes noise non none nonlinear nor normal normalized normally north not notation note noted notes nothing notice noting novel november now nuclear number numbered numbers numeric numerical object objective objects observation observe observed obtain obtained obvious obviously occasion occupied occupy occur occurred occurrence occurrences occurring occurs october odd of off offer offered office officer officers official officials often oil old omitted on once one ones only onto open opened opening operate operated operates operating operation operations opinion opportunities opportunity opposite optimal optimization optimum options or order ordered ordering orders ordinary organization organizations organized orientation oriented origin original originally orthogonal other others otherwise ought our ourselves out outline outlined output outputs outside over overall overlap own page pain pair pairs paper paragraph parallel parameter parameters part partial particular particularly parties partitioning parts party pass passed passes passing past patent path paths patient pattern patterns pay peak people per perfect perform performance performed performing performs perhaps period periodically peripheral permanent permit permits permitted person personal personnel persons pertinent phase phases phenomena philosophy physical pick picked pickup picture piece pieces place placed places placing plan planar plane planned planning plans plant plants plausible play played playing plays please plotted plurality plus point pointed pointer points polarity police policies policy political polynomial pool poor popular population portion position positive possibility possible possibly post potential power powerful practical practice preceding precise precision predetermined predicted prepared presence present presented presents press pressure presumably pretty prevent prevents previous previously price prices primarily primary prime priming principal principle principles print printed prints prior priority privacy private probability probably problem problems proc procedure procedures process processed processes processing processor produce produced produces producing product production products professional professor program programmer programmers programming programs progress project projections projects proof propagate propagated propagating propagation proper properly properties property proportional proposal proposals proposed protect protection proved provide provided provides providing provision public publication published pulse pulses pure purely purpose purposes put puts quality quantization question questions quick quickly quiet quite radio raised random randomly range rank rapid rapidly rare rate rated rates rather ratio rational reach reached reaction read readable reader readers readily reading ready real reality realize realized realizing really rear reason reasonable reasonably reasons receive received receives receiving recent recently recognize recognized record records recover rectangular recursive recursively red reduce reduced reduces reduction refer reference references referred refers reflect refused regard regarded regarding regardless region regions register registers regression regular rejected redŸž�œ›š™˜—–•”“’‘��Ž�Œ‹Š‰ˆ‡†…„ƒ‚�€~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>= ¼ü‡ö " ü‡ß �Àetüÿ÷ ZÅEðÿWuÅe ºÄºT!ºü‡‡ÎeÀ ý· ý÷5àúÀ ºÎå‡& �ŠÀÀ ºõ÷ €À  ºîf Ìür f rvÐÁÔý‰r t@PÁ ÿ!á ºáÿáÉ‹þ�‡Àpÿˆ È‹þÀÎ?ÀE€ÿ A‡ Z‚Àe  À ÷‹®?ý À ÷ ìÿÀŠ÷ äÿ ÷ ÞÿÀ ‡7ˆ?‡ty resistor resistors resolution resources respect respective respectively response responsibility responsible responsive rest restored restrict restricted result resulting results return returned returns reverse review reviewed rich right rights rise risk roads role roles room root roots rose rotation roughly round rounded route routed routine routines routing routings row rows rule rules run running runs safe said sales same sample samples sampling san satisfied satisfies satisfy save say saying says scalar scale scaled scaling scan schematically school schools science sciences scientific scope sea search second secondary seconds secret section sections security see seeing seek seeking seem seemed seems seen segment segments seldom select selected selection selectively self semiconductor send sense sensitive sensitivity sent separate separation september sequence sequences sequentially serial series serious serve served serves service serviced services serving set sets setting seven several severe shall shape share sharp sheet shift shifting shifts ship shop short shot should show showed showing shown shows side sides sign signal signals significance significant significantly similar similarly simple simpler simplest simplicity simply simultaneously since single sit site situation situations six size sizes skilled slightly slot slots slow slowly small smaller smallest snow so social society soft software solid solution solutions solved some someone something sometimes somewhat somewhere son soon sophisticated sort sought sound source sources space spaced spaces spacing spatial speaking special specific specifically specifications specified specify specifying speech speed spent spirit spite splitting spoke spot spread spring square squares stable staff stage stages stand standard standards standing stands start started starting state stated statement statements states static station stations statistical statistically status stay steady step steps still stimuli stimulus stop stopped storage store stored stores straight straightforward strange strategy stream street streets strength stress strict strong strongly structure structures struggle student students studied studies study style subject subjected subjects submitted subroutines subsequent subsequently subset subsets substantial substantially substituting substitution substrate succeeding success successful successive successively such suddenly sufficient sufficiently suggest suggested suggests suitable suitably sum summarize summary summing supervision supervisory supplied supplies supply support supporting suppose supposed sure surface surprised surrounds survey switch switched switches switching symmetric symmetry system systematic systems table tables take taken takes taking talk talked talking tapes target task tax teacher teachers teaching teachings team technical technique techniques technology teeth telephone temp temperature temporary ten tend tends term terminal terminals terminated terminating termination terms test tested testing tests texas text than that the their them themselves then theorem theoretical theory there thereby therefore thereof these they thick thickness thin thing things think thinking third thirty this those though thought three threshold through throughout thus time times timing tip tips title to today together toggled told tolerances tone too took top total touch toward towards track trade traditional traffic train training transaction transfer transformation transformations transistor transistors transition translated translation transmission transmit transmitted travel traverse treated treatment tree trees trial triangle tried triggered trip trivial trouble truck true truly try trying tube turn turned turning turns twenty twice two type types typical typically ultimate unaltered unchanged undefined under underlying understand understanding understood unequal unfortunately unidirectionality unidirectionally uniform union unique unit united units unity universe university unless unrelated unstable until unusual up update upon upper us usage use used useful useless user users uses using usual usually utility utilization utilized utilizing valid validity value values van variable variables variance variation varied variety various vary vast vector vectors verification verified version versions vertical very via view viewed vis visible vision visit vital vocational voice voids voltage voltages volume wait waiting wall walls want wanted wants war was washington water wavelength way ways we week weeks weight weighting weights well went were western what whatever when whenever where whereby wherein wherever whether which while white who whole whom whose why wide width will william willing wind wise wish with within without women word words work worked workers working works world worst worth would write writer writers writing written wrong wrote year years yes yet yield yields york you young your zero zone zones Òÿw ÎÿDt�£ 4 Ì•À�°ÿ7ŠªÿÎß wžÿw šÿÀÐÿœÀ ð5¶ wtÿw pÿ¦ÿ€œ2ŠÀ ¶+7ЇÿÀ 0 ¶À ÀÁ1àúÿ@úÿ&ß Ö ÀÀÁôÿ1àúÿ@úÿ&ß Ö Ààÿð%÷ FÀ Äe€Àå ƒ À x&:ÀžÿtQ7Vÿ÷ ´þw°þw ¬þ7ŠÝþ÷öþÎæß Ö À À�¿þ BÎ¶ß Î€æß Ö À ,Îß 7  þ7 žþ÷’þ÷Žþ÷•~þÎß ÀzþÀeøÿ && ß –%7 bþt7Zþ7ŠLþÎß Îß ÷‹;þ€ wúýcoreyHH???????????????????????????????????????????w~}~"z,/y*( )x+||||||||||?PAZ{{{{{{{{{{{{{{{{{{{{{{{{{{1{{{{{{{{{{{{{{{{{{{{{{{{{{{0&‰‰‰www L憅&w @æÀ€U…‰‰¶w w&w ~æ€Àw tæ…‰Žææ&÷ nÖ &ædæß Æe Á„D÷e~D _\×"#×" ÀhD÷ebDÈ_\ÀEçÿÀ%ÎhBß °Îæ&÷ Ö &æ$æß ÆeÁ"D÷eD _\×"$Àðß  &Á1ÀôC÷eîCÈ_\×"×,õÎæ&÷ ÌÖ &fæß ÆeÁ®C÷e¨C _\Î|Bß °_ Îß pÎß ~'ææ&fæß Æe ÁlC÷efC _\À\C÷eVCÈÎß @ó Î$ß ì÷å:CÀ6C—"—,ÎŒBß °ÀC÷eCÈuøÿôÿ@ôÿÀEçÿÀ%Nôÿß l&5ôÿ²ŠŽfôÿæß ü–%Î#ß ìŽ & æææß ÆeÁ¸B÷e²B Î(ß ì@øÿÀEçÿÀ%Î$ß ì_\ ÷ v ¢B¸BÆBØBõ5îÿÎß põ5îÿÎß @õ5 îÿŽß @õ5îÿÎæ&fæß ÆeÁ,B÷e&B _\W-øÿ5ôÿ2 5 øÿ_ÈNøÿß j&&÷ ÈÖ Wp �eAœ´Fuêÿ@êÿÀE¿ÿ5ìÿ@ìÿ@øÿ5ôÿW-P!W-øÿ 5ôÿ@ìÿ_ÈW-êÿ_ÈõEÀÿêÿ@êÿ]W-êÿ?õ5îÿ!W-øÿÎæBß °IW-êÿ5 ôÿõ5îÿ5 êÿ<W-)êuêÿèÿ5 êÿ2@ìÿ!õ5îÿW-êÿ 5 ìÿõêÿ5ôÿÏŽß ~'fêÿfôÿæß `ÆeÎß ~'fêÿfôÿ¦ß `Æeõ5îÿW-= !W-øÿõe5 ôÿŽæÀ€À&fôÿfæß Æe Á~@÷ex@ @èÿ÷åj@Àf@Îß ~'fèÿ& æß `ÆeÁF@÷e@@ wzw h@2Ä*Ä+N & & ææß Æef& f&æß Æe 'Ä3Ä4N& f&æß Æe Àå ƒÀ xâlrª°ÎúBß °@wÞw ÌDCBô— ÿÿ´ Žæ÷ DÖ &&ß ü–%*Žæ÷ `Ö &&ß ü–%Žæ&ß ü–%Àå ƒÀ xr ŒŒŒŒŒ 8ŒŒŒPPwJw 8DÀEçÿÀ%&æ÷ êÖ &æ#æß Æeww ôCÀÀEçÿÀ%×"×,À³ŠÀ’>÷eŒ>ÈÎÿÿ&÷ RÖ &æß ü–%Î#ß ì÷åf>Àb>wšw ˆ@À%!Î Cß °wpw ^D!ÀE‡ÿÀ%hÀ ÀEàÿ!ÀEøÿÀeÀ w*w · xA÷ bÄlD÷fDÎ8)æ&Cß +Ö Nff f fffß +Æe Î ß Ü,7(DwÐw ¾@ÀeõeÃv=@õ À ß >öÀwœw ŠÀP=÷eJ=H÷ æ@Àâ@Î,Cß °Îß Ò,wjw XD##$Î@Cß °wHw 6 ÷ Êê_$!_$5 øÿ· l@!$×-f@÷ žêõÀV@5øÿÀ%_5 öÿW-øÿ  @Àeøÿ&ß l%Ö 5öÿ÷  !_7ð'7 @÷@Nöÿ& føÿÎEøÿæß p ÆeÀæ?_$€Àe5òÿýÕ€òÿNòÿæPCß +Ö 7 ¾?µøÿ@øÿÀEçÿÀ%÷ êé7‚'À%×-x'÷ –Hõôÿ€ÀEçÿÀ% €œÀ 5DXôÿŽß l&2ìŽß ¸'—,Á� upôÿuôÿÃrøÿÎfôÿføÿfòÿß |Æe÷ déÀ% „! Î^Cß °ß d$ ß ´w²w  7 ?ÄÖ?NæzCß +Ö Î ß „$÷¼?Àª&· ¦&7´>Îß ´Î¨>æˆCß +Ö 7”?w^w LB ÷ Üè7t&À% ×-j&ABpNŽ ÎEfæ˜Cß +–%_„ Næ¨Cß +Ö ÷ –èÀ%Φffß ˆÆe÷ tèÀ% ï!7þ% 7ø% ¦ffß ˆÆeõ  AÁàBpNæ¸Cß +Ö õW-@ÀEçÿÀ% @ÀEøÿÀ%ÎÂCß °@�A @@À5ÎØCß +wRw @÷ Ôç7l%À%W-÷ÿÿX%@ ÷ îÎn=fæàCß +–%Àf=_ž×-0%@ a· `=÷ ì7 V=@AÎòCß +# æúCß +Ö _” && & æhæ÷ æûÆe &ß ø&Ö 17õò<5üöÿ5ÿöÿ&øæD÷ ÀÆe 7õÖ<&øæD÷ ¬Æe ##÷ 2Àå ƒ÷À x„ðøl2lllNµ @ w8w &ÎDß °w&w ÷ ¨æ_^ Î:·<:_° Î4:ß )Î,:ß N'_’ Î: ¹˜éxY™™™™˜Y8éxȉ ¹é)(‰ _u à_buf Z_bfreeli _bdevsw _cdevsw _canonb _coremap È_swapmap È_rootdir _lbolt _time _tout _callout x_mount _mpid _runin _runouatin: /catou: / jsr r0,call; _catintr /.globl _dcrint /dcin: / jsr r0,call; _dcrint /.globl _dcxint /dcou: / jsr r0,call; _dcxint /.globl _dprint /dpin: / jsr r0,call; _dprint /.globl _dpxint /dpou: / jsr r0,call; _dpxint /.globl _dnint /dnou: / jsr r0,call; _dnint /.globl _vsrintr /vsin: / jsr r0,call; _vsrintr /.globl _vsxintr /vsou: / jsr r0,call; _vsxintr /.globl _vtintr /dr11ca: /dr11cb: / jsr r0,call; _vtintr /.globl _draaint /dr11aa: / jsr r0,call; _draaint /.globl _drabint /dr11ab: / jsr r0,call; _drabint /.globl _catintr /c"¨ h(8Xhxˆ˜_bdevsw#_nulldev _rpstrat _rptab _cdevsw#_klopen _klclose _klread _klwrite _klsgtty _rootdev#_swapdev#_swplo#_nswap# © © ( ( ( ( fÎe& ß À–%t€l5øÿÀeÀeÀ †@øÿõeøÿôŽß ;w¤÷w ’÷D­ÌÕ� ß 04 &ß ô Ö ß Žß ÌF Š4 ôŠß ÌFwP÷w >÷BʵG€Àe5öÿÎföÿ& ß ²–%¦ß J:Ö 5øÿÎföÿ& ß À–%tAøÿ@l€Àe€ÀeÀ †ÔùʵÔøðÔöðÄeʵÔäðÔâðNøÿß ”:ÊÅw®öw œöDô5 FÀe5Àe@-2†@+ô5N&ß J:Ö ÂÀÀe€ †€Ž&ß  Ö ÂeïÎß ;N&ß  Ö = õeÈôE4Š 4 ÌÕw öw úõÀŒ°ß   Ì•@ÀUß R 5øÿ@øÿ@ôÿÀ À`ˆNøÿß Ð:ß ”:ß ;€w´éw ¢éÀ�¤�¤@�æö£ß –Ö À ÷•jߣÀÿÿ÷ Þ£· Þ£ÀÚ£· Ò£· Ê£ÀÈ£Àÿÿ wVéw DéÀ®£Àÿÿ"À�˜£ÀŸš£ Î’£ß |÷•j}£Àÿÿ÷ |£· |£Àx£· p£· h£ÀEÿwüèw êè÷•I£wìèw Úèwâèw ÐèDCB €üwÄèw ²èD@5Àetýÿæß DÖ ÀΈ\ß žß DôÕ f& æß Ú=ÆeÀ Κ\ß ž@  fæß bD–%ô ôÅÀ�Vâ7ŠPâÎß Ðw"èw èÀv¢ ß DôŠ�Àetýÿ&æ.Àõ¤ÿ ÷ t#ö ö ö d @øÿAÁeøÿ ‡Î¤Aß °Îß Ò,õeøÿ@øÿÈõeÎÿ@ÎÿH¤ÿ_$õåÎÿ@øÿõåøÿ5 ÿ6÷˜5 ß ì÷å$JÀ JH× ;N ÿß ì_$ & & & ß ÆeÁöI÷eðI õd ÿ×  _$× Îß ì_$÷  "¾ ´ ~ d� ef Èî N ÿß ì_РθAß °Îß d$ _ wÈ"w ¶"CN ffæß p Æe5`ÀèL× ÷ ÷À% ç!!× @ß ¶wj"w X"C5 öÿ × € 7²L÷ Öö7n4À%×-d4 _b ÷ º5øÿ_\  tAøÿÁEçÿ@P@øÿtþÿ5øÿÀ5îD]Â+ß @ && & æfæ÷ �íÆe &ß ø&Ö wPw >÷ bÿÀ%; ÷ JÝ&& & ænæ÷ XíÆe &ß ø&Ö ÎP.ß N'w÷ D/ Àd.w ~Y†À‰ü) ‰€w ül, trap .globl _clock kwlp: jsr r0,call; _clock /.globl _tiuintr /tiuio: / jsr r0,call; _tiuintr /.globl _rfintr /rfio: / jsr r0,call; _rfintr /.globl _rkintr /rkio: / jsr r0,call; _rkintr .globl _rpintr rpio: jsr r0,call; _rpintr /.globl _tcintr /tcio: / jsr r0,call; _tcintr /.globl _tmintr /tmio: / jsr r0,call; _tmintr .globl _klrint klin: jsr r0,call; _klrint .globl _klxint klou: jsr r0,call; _klxint /.globl _pcrint /pcin: / jsr r0,call; _pcrint /.globl _pcpint /pcou: / jsr r0,call; _pcpint6 / dcou; br5+6 / dcin; br5+7 / dcou; br5+7 / dcin; br5+10 / dcou; br5+10 / dcin; br5+11 / dcou; br5+11 / dcin; br5+12 / dcou; br5+12 / dcin; br5+13 / dcou; br5+13 / dpin; br6 / DP-11 / dpou; br6 / dnou; br5 / DN-11 . = 460^. / vsin; br5 / vsou; br5 / vsin; br5 / vsou; br5 . = 500^. / dr11ca; br5 / 11/20 display / dr11cb; br5 / dr11aa; br5 / voice answerback / dr11ab; br5 / catin; br5 / typesetter / catou; br5 ////////////////////////////////////////////////////// / interface code to C .globl cal. / tcio; br6 . = 220^. / rkio; br5 . = 224^. / tmio; br5 . = 230^. / crin; br6 . = 240^. trap; br7+7 / programmed interrupt trap; br7+10 / floating point trap; br7+11 / segmentation violation . = 254^. rpio; br5 / floating vectors / 1. kl br4 / 2. dc br5 / 3. dp br5 / 4. dm br5 / 5. dn br5 / 6. random junk . = 300^. / dcin; br5+0 / dcou; br5+0 / dcin; br5+1 / dcou; br5+1 / dcin; br5+2 / dcou; br5+2 / dcin; br5+3 / dcou; br5+3 / dcin; br5+4 / dcou; br5+4 / dcin; br5+5 / dcou; br5+5 / dcin; br5+int (*bdevsw[])() { &nulldev, &nulldev, &rpstrategy, &rptab, 0, 0, 0, 0, }; int (*cdevsw[])() { &klopen, &klclose, &klread, &klwrite, &klsgtty, }; int rootdev {(0<<8)|0}; int swapdev {(0<<8)|0}; int swplo 4000; int nswap 872; &nulldev, &nulldev, &rkstrategy, &rktab, é I I Ù &[÷ [&‰ ·[·úû‡·[·ðûÖ Àÿÿ‡÷ P ‘ƒ~÷ &‘ ƒ~·èZ‚ ‡€¦æÚZ&€� ‚ ‚ ÷VÄZ‡·¾Z‚Àÿÿ‡æ˜û˜·�û‡Ÿ�€�P˜IŸ�·fðÀÀ˜I˜‡œ‡�‡ž‡Ÿ‡æTû·ðï·ìï÷àBû¦ Á  P ‘ ƒ~‚·*û‡æ$û·Àï÷àû Á & � C~·û‡€°mH ‡€�€í�í€  ÿÿW þ ‚Àþ‡W ‡Á@‡ÀàôÁÀôÄ€ Ã�ÑaÅ~Â?—túÿÂEü�ÑЀÑ÷ï÷ïÆ· òùÀ  ü‡ÀÀ  Âü‡÷0Xú÷ Væð& €�6r‡€�6r@‡@…&æ¦äHÅåF‚ƒ„…‡�€Àe5öÿÎföÿ& ß –%¦ß œ;Ö 5øÿÎföÿ& ß –%tAøÿ@l€Àe€ÀeÀ †ÔùʵÔHCÔFCÄeʵÔ4CÔ2CNøÿß æ;ÊÅw®öw œöDô5 FÀe5Àe@-2†@+ô5N&ß œ;Ö ÂÀÀe€ †€Ž&ß f Ö ÂeïÎß bBß °uøÿôÿ_ÈÀEçÿÀ%ÎRBß °Y‡w  Y‡Temp file? 7 17 17 17 .·ú0¦w ®· ð0ú÷ ì07 ä0 .÷Ü0ï÷ Ø0$ e!& 7 Ò-÷Ä07 Ê-÷ ¶0÷ Ð + -Ž 7 -w TüÖ 7 œ-÷í˜-Š07†-÷ †0À'‚‡÷ v0Àøæ¾*÷ úëÖ ÀðNo floating point!ÀD-7 >-÷ TÀå0 ‚· .0Á2-wp 0`w(-Õ …Àe0…w À€w0DÄeÀŸ0 · 0 %ß Ü,ôw¤7 ì/7 â/ׯâ/-· Ú/· Ø/÷,"[7 Ð/ .÷ [ƒÓ Áv+BÝ üJ–+dÜ+o,f ,eÄ+cÎ+s¢+l Ó•-÷ 6 r f÷ ðÿ€Àe0�‡•à •$ÁN/“”C~÷ fWtýÿÁEà€”ÀE€ÿÀ¤÷1ÄeÀ%˜T‚ÄHä· FÀüEÀ%ÈΈ@ß °Îß Ò, 4 4 4 ÃHÀÜUËÕ€Àe× H†Ò”ûwt+w b+À’= ÄŒ=÷ÿÿ†=!7 ¸U_bÀŠUÄ„U7 €U À|U _b÷ Š*œ.G_H÷„U÷ t*ôÀxU· 4=7 nU÷ ^*é· ÷ XÆe&&ß f–%_bÎ& æ ß f–%À ÀP_b÷ &ÿ!(!1Àe_b!PÀ<_b7˜<ÀP_bÎ& &ß f–%À À._bÎ>æ?æ=ß f–%_bÎ& &ß f–%À À-_bÎ@æAæ=ß f–%_bÎ=æ"æ=ß f–%_b ææbnqrsW^lIJKLMNOXY_`acmptuvwH÷ ðÿ€ÀEøÿÀe0�‡Â"/÷  Â/÷ –‚Ò Â ƒó‹ÿÿà ùÎ Áò.ÁàŠ�`wò.÷ æ.ß Ü,÷ â.û·Ú.ΟÖ.· Ð.ß Ü,ø÷ È. ÷ ¼.Î ß Ü,÷ ´.ûwœþ7 ¦. ÀŸœ.· ˜.Àå0 ‚· Ž.Wp `ñÀe0[ƒÄeÓ•?‡f…wòwG†ww f…@‰f…@÷ F.÷>.w,w €.[@�w t.[×-$.w †.[@7 ô+wÒf…wè+w l.[7 Þ+w¼f…wÒ+÷ ò/  ‰:]‡À À�ä/ÀEÿôw ¶4]‡À ú 7 ž+w|�¦B@$ü‚‚Y�¦æ ‘rà CdÃÂÀ$üƒ‚ƒ‚Yf…wþwú‰´G†w"w&@…&æ¦äHÅåF‚ƒ„…‡7L1À*ß f–%À À+_b÷ .)· TΞ@ß ° _bÀT· Ú;7 Tê· Tç÷ ü(!/ä ÷ .)0  6*4÷ Ö(_®7°S!0ÎÎ ß *À%Àv;· r;7”Sf÷ üc÷ l`ÃHÀ”SÓ•.7 ŠS¬.G{¬.G|× H†‘÷ b(î× H†Šû74S÷ ¼ü76S×/2SÀ*S7&SÀ.À+Î5æ/æ&ß f–%!Î6æ0æ|ß f–%δ@ß °÷ ö'_® ÷ <(RZÆ@à@ò@Aœ.Gwt(w b(ÀªR÷ À'7 Rõ-œR@7 ŽR@wD(w 2(÷ŽRÃA AÀR:· N:7pRÀ~Ræ¦æ&Aß +–%Î"ß N æ4Aß +Ö · FRñÀJRŽÎæ8Aß +Ö ÀwÎ'w ¼'7 RÂ&X Î'ß NÀƒ À%‘ó× ÎDAß °ÀwŒ'w z'C÷ Ú&À Àÿÿ?1Î\Aß °7¢QÀÿÿ_æ÷ ²&À ,À ) 'À $À Q· \97 –QÕ÷ Â&ž ”0Žn˜rˆtÌ ÷ ¤&ll €\âwð&w Þ&^÷ôFQ÷$QœM@ÀeÐÿ5øÿ@Àe¦ÿ5Îÿ÷œT„MýÈøÿýÎÿ ÷ >û_2 ÂòP€"€÷ &û7¾8À%ÊòÀæPÊ ò€ÀŽ8· Š82 ¦¦¦ææß Æe ÁM÷eúL —"€Àe5žÿ × Nžÿß >@žÿõežÿÈ5€ÿƒ ïŽß ><ÀZP 7õL16"L17 L188L198L20öL158L21LL22|_expand _estabur _readi L23"_savu _swtch L25ZL26ZL24Ztrap.oo)ù̶Œ ôXäw üÿW- Îæ&ß Ö _®W-NÎeþÿß À% ðÀ€_®@ÀEÿÀ%ð_\W- AÀJ t@-9†@Àe ß À 1Î*Îeæ æß –%À $÷eÀšÿÎeß ÀŠÿ Á‚ÿ@l 7!æÿ _canonb _coremap È_swapmap È_rootdir _lbolt _time _tout _callout x_mount _mpid _runin _runout _runrun _maxmem _lks _rootdev _swapdev _swplo _nswap _u à_proc È_text –_inode X_xswap"rsave L2_malloc L3<L4^_panic _xccdec"*_swap L5jL6pL7‚_mfree L8ž_wakeup L1žrretrn _xfree"¢L10ôL11¹¹¸Xy‰9(8¸9y‰9XX9Ø9(¨˜˜¨9999¸9ø8Ø99éy‰8y–†�À 5-´ŠÀ ÿ0_Äe èÀÎ|ß ô•4Š tÀ@ÿÀe?túÿÀEü´€Àetýÿæß Ö Îß ŽÎeß  ¦& ß –%÷ôþ’þ÷�þ7 †þNß ÃxþóÕ ¦æ Îe&ß ÆeóÅ3CËÕ ³Š� Î²ß  ææ.þß –%À$þðÕ÷ Þý´Š wÖýw Òý@� ôŠ � &æß –%w¢ýout of swap spaceswap errorout of text‰(¨ØøØ8â_cpass"èL22úL21>L23L24 _fubyte L25 L262_nodev"BL27N_nulldev"RL28X_bcopy"\L32nL30pL31vL29vtext.oo)Ô̶8^*w üÿD@5Àetýÿæß Ö ÀÎ^ß ß *ôÕ f& æß ÆeÀ Îpß @  fæß –%ô ôÅÀ�pÿ7ŠjÿÎß w^ÿw ZÿÀ�ÿ ß *ôŠ�Àetýÿ&æß –%ÌÅ ß ÀLÿ0 wÿw ÿÀžÿ_& Ä!Éy9ÉyÉyÉ_bdevsw _cdevsw _inode X_u à_buf Z_bfreeli _bmap"rsave L2$L1†L3ØL4˜_alloc L5JL6RL7|L8v_bwrite L9ØL10Ô_bdwrite L11 L12 L13._bread L14|L15‚_brelse rretrn _passc"ŠL17žL18¾_subyte L19¾L16äL20ÐL10000àL10001ÈÈHȈÈH¸Éy9999999999Éy9999¸999999ß @À @m°ýÕ€W@tøÿ5ôÿ@ôÿÀ @mýÕNöÿß  =@ôÿÀ @m°Žföÿß Ö @ÀEÿ5ôÿ@ôÿÀ À`Nöÿß 5øÿ@øÿ@ôÿÀ À`ˆNøÿß ß ß €wvþw rþÀ�¢þ�¢þ@�æ–þß Ö À ÷•jþÀÿÿ÷ ~þ· ~þÀzþ· rþ· jþÀhþÀÿÿ wþw þÀNþÀÿÿ"À�8þÀŸ:þ Î2þß ÷•jþÀÿÿ÷ þ· þÀþ· þ· þÀEÿw¾ýw ºý÷•éýw®ýw ªýw¤ýw  ýDCB €üw†ýy9jL44p_newproc"tL57~L58ŽL60–L59ˆL61pL62ØL63êL64èL65þL66hL67ŽL68nL69Ž_copyseg L56–_expand"šL71ÖL70VL72L73L74:L754subr.o)ô˶˜z”w üÿ@5öÿõ5ø÷• _†@ð5Tõ5øÿ0Nöÿß  _†5 ôÿW-ôÿ@ôÿÀ @m@ôÿÀ @m0 µ ôÿë@0ß @ðU @À @m€Nöÿß  L23L246L21L25TL26T_malloc L27L28nL29 L31‚L32œL33L30œL34¢L35ìL37¶L38èL10000ÖL39æL36è_xswap L40\L41X_swap L42°_mfree L43d_panic L15¸L45~L46Î_savu L47ÞL48ìL49(L51L52$L53$L50$L548_idle _sureg L55_runout _runrun _maxmem _lks _rootdev _swapdev _swplo _nswap _file È_inode X_buf Z_bfreeli _sleep"rsave L2j_issig L3N_spl0 L4B_wakeup"Š_swtch"¼L5h_retu L1†L6‚rretrn L8�L9–L10ÊL12ÄL13¸L11ÄL14ÖL7Ö_cookies#Z_sched"ÚL16zL17|L18ì_spl6 L19öL20"L22HèˆØ8 y¹ H(ˆHèˆØ8H(H)y_u à_proc È_text –_canonb _coremap È_swapmap È_rootdir _lbolt _time _tout _callout x_mount _mpid _runin X(Hy¹ˆHH) Hy¹H ÉÉ ˆ ùÙÙØÙù Hùy¹ééùèy¹YéèùHèYÙØùØžüõòÿÌ•ô•ôô· DüÀ@ü4ô 4Šô�ˆÃŠ× ž†À´Š÷@òÿ´Š´Š ÀDü°ŠÎß Dôÿ7&üCòÿÂõ øÿ´Žæß Ö 5öÿ@öÿË•tøÿ Î²ß  & &ß –%ôÕË•töÿ € À Nöÿµ öÿføÿµ øÿß Ö ð÷ªû wfûw bûĘû5öÿt u-öÿ ÎNmföÿNíæß –%@Îß Næß Ö €Î²ß Nöÿæ&ß –%ôÕ÷ ¨ý´ 5 øÿu-øÿöÿ Ž‚ æNmøÿß Ö µ øÿñÎföÿæß –% ß ÷ ªúw¦ú swap errorno procs¹ Ùƒ ç × "Äe!ȇÄ�ÀEøÿÀ%�££ ´Š­ôŠ ƒ Û·ŠþΜÿæß Ö ›÷ üýôÅ7n æ&ß –%ŒÀX� Î&æ&ß ÆeÀ 4À.ôm´Š ÄÎ&æ& ß ÆeÀ  Àetýÿ&æß –%ô ôÕ�À 4œZ_ìÎdß wDýw @ýÀ¸÷°Îß Î2ýß Âœ7 ˜Ã ! Âe— ȇ—¢€œÀEþÿÀ%ƒ¬·`€œ„ âÀR·L÷ ÊüÓÂBŽ ß ÷ ¸üòµ òÅ÷Xý¤ü÷Tý üŽ ß ÀwŒüw ˆü Ä!Ȇ“ÄeøÎpß 5ôÿà _cpass L32&L33 L34&_passc slp.oo)Õ˶ÔZ Ðw üÿÃþÿÄ.@+÷ èÿÀ tÌ•t�÷ ÐÿÀ�Ìÿ7ŠÆÿÎß Š÷ v÷ ¶ÿÀ ÷ ®ÿ÷X¨ÿ÷T¤ÿ ß  tÌ•t�÷ ‚ÿ÷ :ßþÿwvÿw rÿ Ä!Ȇ5-À�Xÿôµ7ŠJÿƒ 4 Ì•·Š<ÿÄeæÀõÝw&ÿw "ÿÀ7”7Ž÷ ÿĆ × Äe!ȇģôµ7^ ƒ ê·ŠÚþΜÿæß Ö Û÷ ÆþÄ<� mÎæß Ö ]÷ ˜þÄ × Äe!ȇÄ�ÀEøÿÀ%£4Š2Æ_dpcmp _bmap L7Ê_bread _iomove"|_brelse L3øL10000L4rretrn _writei"L8<L9FL12FL13žL14¢L15º_getblk L16ÈL17ð_bawrite L18ø_bdwrite L19,L100L10001<L11<_max"@L21TL20ZL23rL22xL25òL26À_copyin L27Ð_copyout L28ÜL24&_dpadd L29 L30øL31(Hèyyyyyy(X™Øy_inode X_u à_buf Z_bfreeli _bdevsw _cdevsw _readi"rsave L1L2<L5<_ldiv _min"^L6Àà À ÷ üü�÷ Àà À „ ’ß À ówÖüyX¸èø8yyX¸øøÀ�;ÿÀ>ÿœwøþw ôþÀ.ÿ_<BÊÕ€ÀEÿŸÀ% ¦�œWp AÉ Ö _<Îæöþæðþß –%ÀæþÀEþ5ôÿÎÖþæNíôÿß ^Ö 5öÿ€ÀEÿŸÀ%` Î¦ß Ö R„„W-öÿÎ&ß Ö 5øÿÎ&ß Ö 5øÿ föÿfôÿføÿß |Æe÷5ÿ`þNøÿß Nøÿß ÎHþæBþ¦ €œ &ß ÆeÀ ò5 ò�þ òþ ÊÕÀ�þÀþ…wÀýw ¼ýu-ƒ@@w¢ýw žýu-†@@w„ýw €ýC@@mÀ�žý,ÀQÀ]œýÀ5%@ Î&æˆýß –%Îæxý&ß –%÷•j]ý%÷`^ýÎæBß Ö ÷àPý@ x©_proc È_prproc"rsave L2L3TL5PL6X_printf L4PL1Trretrn rdwri.o)…˶L *èw üÿBÀ2_ÊÕ€ÀEÿŸÀ% ¦�œWp AÉ Ö dÎææúÿß –%5öÿÀîÿÀEþ5ôÿÎÞÿæNíôÿß ^Ö €ÀEÿŸÀ%`#ÎÀÿæºÿ¦ €œ &ß Æe1æß ^Ö Nöÿ¦ß Ö 5öÿ"„„Nöÿ&ß Ö 5øÿÎæfôÿføÿß |ÆeNøÿß L8LL9LL10LL10000XL10001\_printn"¦L5œL11fL12nL13pL14~sswitch rretrn _ldiv L16Ì_lrem L15æL17<L18úL19L202_panic"@_prproc _update L22fL23\_idle L24bL21bprproc.o)f˶|X„w üÿ × #ÁWpÁeD“&&& & &œ&“&ææXß Æeƒ Úw¨ÿ%d %o %o %d %d %o %o %o %o )æfß Ö ÷  þýwšþpanic: %s IYhˆYYù 9Y_printf"rsave L2L3L4,L1¢_putchar"êL6€L7:L39€_free L38€L33ž_maknode"¼_ialloc _wdir"L40üL42L43"_writei L41Dprf.o)U˶¼f Èw üÿ@Àe@µ ’À%%€?Žß êñ@µ ’#ÀÎ-ß êÀ — oÎÎ æß ¦Ö Îß êÄ•Žß êù÷ |ÿfc:dLlLonsœÃe¶wZÿw VÿNf& ß –%N&ß ¦Ö Nf& ß –%Îe0ß êwÿw ÿDÀxÿ!ß5€tÿûÃtÿ tÿvÿ! Î ß êÎß êÎß ê ß êßtÿwÀþw ¼þ÷ ¶þ÷ ²þNÆl;÷Ôfè÷JèÀøÿ,N:ªªˆ‰Àøÿð%ªªN:ˆ‰À,N:UUˆ‰Àð%UUN:ˆ‰Àøÿ0,N:N:ˆÀ0,N:N:ˆ‰ÀøÿÁ1,N:N:ˆ‰p,N:N:ˆ‰ÀüÿÁ1,N:N:ˆ‰ÀüÿÁp,N:N:ˆ‰Àøÿ7N:Ü×-تªˆ‰À7N:Æ×-ÂUUˆ‰Àøÿðªª`:×-¤ªªˆ‰ÀðUU`:×-žUUˆ‰÷ÿÿˆ÷E‚�ˆˆ‰÷ÿÿrÀøÿ7LN:h×-dUUˆ‰÷ÿÿVÀ7LN:L×-Hªªˆ‰÷ÿÿBÀðEªª`:×-4UUˆ‰Àøÿ÷ÿÿ÷EUU ×-ªªˆ‰÷ªªÀøÿ7ìN:øˆ‰÷ªªìÀøÿðíÊh:ˆ‰÷UUÖÀ7ìN:̈‰÷UUÀÀðí®X:ˆ‰÷ÿÿªÀøÿ0 h:÷ žˆ‰÷ÿÿ’À0 X:÷ †ˆ‰÷ÿÿzÀøÿp h:÷ nˆ‰÷ÿÿbÀp X:÷ Vˆ‰÷ÿÿJÀøÿ° h:÷ >ˆ‰÷ÿÿ2À° X:÷ &ˆ‰÷Àøÿð h:÷ ˆ‰÷Àð X:÷ öˆ‰÷êÀøÿ0 h:÷%ÿÿ܈‰÷ÐÀ0 X:÷%ÿÿˆ‰÷ÿÿ¶Àøÿ±p h:÷ ¨ˆ‰÷ÿÿœÀ±p X:÷ Žˆ‰÷‚Àøÿ±° h:÷ tˆ‰÷hÀ±° X:÷ Zˆ‰Àp  ‰Àøÿp*ˆ ‰×'F:ªªˆ‰ß%ªªF:ˆ‰ß'F:F:ˆ‰ÀF:À%ªªˆ‰ßªª`:÷-äüˆ‰ßF:X:÷-Ò∉ÀÿÿÀGF: UUˆ‰÷ÿÿÌßEªª`:÷%UUÀˆ‰÷ÿÿ¬ßGF:X:×-¢UUˆ‰ÀªªÀçF: ˆ‰÷ªªŠßíl`:ˆ‰÷ªªx÷çF:r÷ nˆ‰ ÀgF:À%ªªˆ‰7 Tßeªª`:÷%ªªHˆ÷ªª>ßo.`:×-4ÿÿˆ‰÷ÿÿ& `:÷ ˆ‰÷ªª_ `:÷%UUˆ‰7 þŸ `:÷%ôˆ‰7 êÿ è×-âÿÿˆ‰÷Ô `:÷%ÿÿʈ‰×/¨ªªˆ‰ÿ%ªªšˆ‰ÿ/�Žˆ‰À„À%ªªˆ‰ÿªªŽ÷-n†ˆ‰ÿdt÷-\lˆ‰ÀÿÿÀON UUˆ‰÷ÿÿVÿEªªR÷%UUJˆ‰÷ÿÿ6ÿO"2÷-**ˆ‰ÀªªÀï  ˆ‰÷ªªÿíöˆ‰÷ªªÿïæþ÷ øˆ‰ ÀoÔÀ%ªªˆ‰7 ÞÿeªªÚ÷%ªªÒˆ÷ªªÈÿo¸Ä×-¾ÿÿˆ‰÷ÿÿ°? ®÷ ¨ˆ‰÷ªªœ š÷%UU’ˆ‰7 ˆ¿ †÷%~ˆ‰7 tÿ r×-lÿÿˆ‰÷^? \÷%ÿÿTˆ‰÷ÿÿH± D÷ >ˆ‰÷2±¿ .÷ (ˆ‰Àúÿ.N:ªªˆ‰Àúÿø%ªªN:ˆ‰ÀúÿÁ9.N:N:ˆ‰À÷ÿÿä7NN:Þ÷%ªªØˆ‰Àúÿ÷ÿÿÀøEªª`:×-¶UUˆ‰÷ÿÿ¨ÀúÿÁúÿ9NN:`:÷%UU”ˆ‰Àøÿ¬N:ªˆ‰Àøÿð¥ªN:ˆ‰À¬N:Uˆ‰Àð¥UN:ˆ‰Àøÿ0¬N:N:ˆ‰À0¬N:N:ˆ‰ÀøÿÁ1¬N:N:ˆ‰p¬N:N:ˆ‰ÀüÿÁ1¬N:N:ˆÀüÿÁp¬N:N:ˆ‰Àøÿ7œN:æ×­âªˆ‰À7œN:Ð×­ÌUˆ‰Àøÿ𕪪`:×­®ªªˆ‰Àð•UU`:×­¨UUÆl;÷Ôfè÷JèÀøÿ,N:ªªˆ‰Àøÿð%ªªN:ˆ‰À,N:UUˆ‰Àð%UUN:ˆ‰Àøÿ0,N:N:ˆÀ0,N:N:ˆ‰ÀøÿÁ1,N:N:ˆ‰p,N:N:ˆ‰ÀüÿÁ1,N:N:ˆ‰ÀüÿÁp,N:N:ˆ‰Àøÿ7N:Ü×-تªˆ‰À7N:Æ×-ÂUUˆ‰Àøÿðªª`:×-¤ªªˆ‰ÀðUU`:×-žUUˆ‰÷ÿÿˆ÷E‚�ˆˆ‰÷ÿÿrÀøÿ7LN:h×-dUUˆ‰÷ÿÿVÀ7LN:L×-Hªªˆ‰÷ÿÿBÀðEªª`:×-4UUˆ‰Àøÿ÷ÿÿ÷EUU ×-ªªˆ‰÷ªªÀøÿ7ìN:øˆ‰÷ªªìÀøÿðíÊh:ˆ‰÷UUÖÀ7ìN:̈‰÷UUÀÀðí®X:ˆ‰÷ÿÿªÀøÿ0 h:÷ žˆ‰÷ÿÿ’À0 X:÷ †ˆ‰÷ÿÿzÀøÿp h:÷ nˆ‰÷ÿÿbÀp X:÷ Vˆ‰÷ÿÿJÀøÿ° h:÷ >ˆ‰÷ÿÿ2À° X:÷ &ˆ‰÷Àøÿð h:÷ ˆ‰÷Àð X:÷ öˆ‰÷êÀøÿ0 h:÷%ÿÿ܈‰÷ÐÀ0 X:÷%ÿÿˆ‰÷ÿÿ¶Àøÿ±p h:÷ ¨ˆ‰÷ÿÿœÀ±p X:÷ Žˆ‰÷‚Àøÿ±° h:÷ tˆ‰÷hÀ±° X:÷ Zˆ‰Àp  ‰Àøÿp*ˆ ‰×'F:ªªˆ‰ß%ªªF:ˆ‰ß'F:F:ˆ‰ÀF:À%ªªˆ‰ßªª`:÷-äüˆ‰ßF:X:÷-Ò∉ÀÿÿÀGF: UUˆ‰÷ÿÿÌßEªª`:÷%UUÀˆ‰÷ÿÿ¬ßGF:X:×-¢UUˆ‰ÀªªÀçF: ˆ‰÷ªªŠßíl`:ˆ‰÷ªªx÷çF:r÷ nˆ‰ ÀgF:À%ªªˆ‰7 Tßeªª`:÷%ªªHˆ÷ªª>ßo.`:×-4ÿÿˆ‰÷ÿÿ& `:÷ ˆ‰÷ªª_ `:÷%UUˆ‰7 þŸ `:÷%ôˆ‰7 êÿ è×-âÿÿˆ‰÷Ô `:÷%ÿÿʈ‰×/¨ªªˆ‰ÿ%ªªšˆ‰ÿ/�Žˆ‰À„À%ªªˆ‰ÿªªŽ÷-n†ˆ‰ÿdt÷-\lˆ‰ÀÿÿÀON UUˆ‰÷ÿÿVÿEªªR÷%UUJˆ‰÷ÿÿ6ÿO"2÷-**ˆ‰ÀªªÀï  ˆ‰÷ªªÿíöˆ‰÷ªªÿïæþ÷ øˆ‰ ÀoÔÀ%ªªˆ‰7 ÞÿeªªÚ÷%ªªÒˆ÷ªªÈÿo¸Ä×-¾ÿÿˆ‰÷ÿÿ°? ®÷ ¨ˆ‰÷ªªœ š÷%UU’ˆ‰7 ˆ¿ †÷%~ˆ‰7 tÿ r×-lÿÿˆ‰÷^? \÷%ÿÿTˆ‰÷ÿÿH± D÷ >ˆ‰÷2±¿ .÷ (ˆ‰Àúÿ.N:ªªˆ‰Àúÿø%ªªN:ˆ‰ÀúÿÁ9.N:N:ˆ‰À÷ÿÿä7NN:Þ÷%ªªØˆ‰Àúÿ÷ÿÿÀøEªª`:×-¶UUˆ‰÷ÿÿ¨ÀúÿÁúÿ9NN:`:÷%UU”ˆ‰Àøÿ¬N:ªˆ‰Àøÿð¥ªN:ˆ‰À¬N:Uˆ‰Àð¥UN:ˆ‰Àøÿ0¬N:N:ˆ‰À0¬N:N:ˆ‰ÀøÿÁ1¬N:N:ˆ‰p¬N:N:ˆ‰ÀüÿÁ1¬N:N:ˆÀüÿÁp¬N:N:ˆ‰Àøÿ7œN:æ×­âªˆ‰À7œN:Ð×­ÌUˆ‰Àøÿ𕪪`:×­®ªªˆ‰Àð•UU`:×­¨UUÆl;÷Ôfè÷JèÀøÿ,N:ªªˆ‰Àøÿð%ªªN:ˆ‰À,N:UUˆ‰Àð%UUN:ˆ‰Àøÿ0,N:N:ˆÀ0,N:N:ˆ‰ÀøÿÁ1,N:N:ˆ‰p,N:N:ˆ‰ÀüÿÁ1,N:N:ˆ‰ÀüÿÁp,N:N:ˆ‰Àøÿ7N:Ü×-تªˆ‰À7N:Æ×-ÂUUˆ‰Àøÿðªª`:×-¤ªªˆ‰ÀðUU`:×-žUUˆ‰÷ÿÿˆ÷E‚�ˆˆ‰÷ÿÿrÀøÿ7LN:h×-dUUˆ‰÷ÿÿVÀ7LN:L×-Hªªˆ‰÷ÿÿBÀðEªª`:×-4UUˆ‰Àøÿ÷ÿÿ÷EUU ×-ªªˆ‰÷ªªÀøÿ7ìN:øˆ‰÷ªªìÀøÿðíÊh:ˆ‰÷UUÖÀ7ìN:̈‰÷UUÀÀðí®X:ˆ‰÷ÿÿªÀøÿ0 h:÷ žˆ‰÷ÿÿ’À0 X:÷ †ˆ‰÷ÿÿzÀøÿp h:÷ nˆ‰÷ÿÿbÀp X:÷ Vˆ‰÷ÿÿJÀøÿ° h:÷ >ˆ‰÷ÿÿ2À° X:÷ &ˆ‰÷Àøÿð h:÷ ˆ‰÷Àð X:÷ öˆ‰÷êÀøÿ0 h:÷%ÿÿ܈‰÷ÐÀ0 X:÷%ÿÿˆ‰÷ÿÿ¶Àøÿ±p h:÷ ¨ˆ‰÷ÿÿœÀ±p X:÷ Žˆ‰÷‚Àøÿ±° h:÷ tˆ‰÷hÀ±° X:÷ Zˆ‰Àp  ‰Àøÿp*ˆ ‰×'F:ªªˆ‰ß%ªªF:ˆ‰ß'F:F:ˆ‰ÀF:À%ªªˆ‰ßªª`:÷-äüˆ‰ßF:X:÷-Ò∉ÀÿÿÀGF: UUˆ‰÷ÿÿÌßEªª`:÷%UUÀˆ‰÷ÿÿ¬ßGF:X:×-¢UUˆ‰ÀªªÀçF: ˆ‰÷ªªŠßíl`:ˆ‰÷ªªx÷çF:r÷ nˆ‰ ÀgF:À%ªªˆ‰7 Tßeªª`:÷%ªªHˆ÷ªª>ßo.`:×-4ÿÿˆ‰÷ÿÿ& `:÷ ˆ‰÷ªª_ `:÷%UUˆ‰7 þŸ `:÷%ôˆ‰7 êÿ è×-âÿÿˆ‰÷Ô `:÷%ÿÿʈ‰×/¨ªªˆ‰ÿ%ªªšˆ‰ÿ/�Žˆ‰À„À%ªªˆ‰ÿªªŽ÷-n†ˆ‰ÿdt÷-\lˆ‰ÀÿÿÀON UUˆ‰÷ÿÿVÿEªªR÷%UUJˆ‰÷ÿÿ6ÿO"2÷-**ˆ‰ÀªªÀï  ˆ‰÷ªªÿíöˆ‰÷ªªÿïæþ÷ øˆ‰ ÀoÔÀ%ªªˆ‰7 ÞÿeªªÚ÷%ªªÒˆ÷ªªÈÿo¸Ä×-¾ÿÿˆ‰÷ÿÿ°? ®÷ ¨ˆ‰÷ªªœ š÷%UU’ˆ‰7 ˆ¿ †÷%~ˆ‰7 tÿ r×-lÿÿˆ‰÷^? \÷%ÿÿTˆ‰÷ÿÿH± D÷ >ˆ‰÷2±¿ .÷ (ˆ‰Àúÿ.N:ªªˆ‰Àúÿø%ªªN:ˆ‰ÀúÿÁ9.N:N:ˆ‰À÷ÿÿä7NN:Þ÷%ªªØˆ‰Àúÿ÷ÿÿÀøEªª`:×-¶UUˆ‰÷ÿÿ¨ÀúÿÁúÿ9NN:`:÷%UU”ˆ‰Àøÿ¬N:ªˆ‰Àøÿð¥ªN:ˆ‰À¬N:Uˆ‰Àð¥UN:ˆ‰Àøÿ0¬N:N:ˆ‰À0¬N:N:ˆ‰ÀøÿÁ1¬N:N:ˆ‰p¬N:N:ˆ‰ÀüÿÁ1¬N:N:ˆÀüÿÁp¬N:N:ˆ‰Àøÿ7œN:æ×­âªˆ‰À7œN:Ð×­ÌUˆ‰Àøÿ𕪪`:×­®ªªˆ‰Àð•UU`:×­¨UU ð€&Ð 6÷ �–% ‰HangupQuitIllegal instructionTrace/BPT trapIOT trapEMT trapFloating exceptionKilledBus errorMemory faultBad system callw À÷ ’!÷ ÒÀ5ÿ÷ ‚!W-7 v! ß  @&ß ÂÖ 5øÿ@øÿ @ß $Î" ß î @¢-Îæß Ö Îæß Ö @Àe7 !@Àeÿÿ7!À!Îú ß $÷ ¤7�ú ÷ òww ¸@Àe®û7Ú @Àeü7Ò @Àeü7 @Àeõÿ7º 7ŠÂ 7м õ¬ Fû÷ PW¯Fû ÷@ÀeJû7œ À�œ À�˜ Έ @Àe®û&ß RÖ 5DûÀ�| Î0 ß î NDûß Ðwˆw vÀP ÷eJ ÈB ÷ î5�øÿ.úu�øÿöÿ÷ 5�øÿ@­öÿW­øÿ ·Š$ w�øÿ MÀ ·  A�øÿÁU€H�åÀô· ðA�øÿH�Àæ· âŠ5÷ Ønt> L b w�øÿÐ÷ r5�øÿÎx @�øÿ&ß ¨Ö À w�øÿ®Î† @�øÿ&ß ¨Ö À §ÀŒ· ˆŠÀ€· |A�øÿH�×w¢w �õnøÿ@À 7`b@øÿw‚w pÀ�P õ�Jøÿ7ŠD@�øÿ_÷-22ƒ÷å(÷ Ðÿ5�øÿÀ% ø÷eΊ ß î ·Š@�øÿ_÷-ööƒ÷å ì÷ ˜ÿ5�øÿÀ% ø÷e ÖΘ ß î ·ŠÖ@�øÿ_À¶À°· ¬’5�øÿ@�øÿ@�øÿ?7 –÷ z5�øÿW­øÿ\÷ j5�øÿW­øÿ À *@�øÿÀU€%W­øÿ$÷ ÿ5�øÿW­øÿ0W­øÿ9@�øÿÀeÐÿÀ->@�øÿÀ Àm07 ÿ(¶@�øÿÀE€ÿwRw @Î@Àeøÿ&& ß ª–%À%÷ @øÿÀEÿw w u-ά @ž&ß ¨Ö À õeNfß šÖ ã wØ w Æ 5 öÿuøÿu-øÿY@øÿžBµ öÿMõ öÿ@öÿ·Š~E@öÿ3Îß Ð5ôÿýôÿNøÿfß ‚Ö Aôÿ1@øÿ¢& @ôÿ5òÿ@òÿðUNføÿÎeß RÖ Aôÿ1@ôÿ ÷ ê Ò Ò&¼(Â)Ò;\õeøÿ£@öÿNfß ‚Ö ·ŠÐwð w Þ 5 öÿuøÿu-øÿG@øÿž2µ öÿ;õ öÿ8@öÿ(Îß Ð5ôÿýôÿNøÿfß <Ö Aôÿ1NføÿÎeß ‚Ö Aôÿ1@ôÿ0 @ôÿ ÷ " ¤(ª)°^°| õeøÿµNfß <Ö w6 w $ Þ5 ÿ@¢)õUÿ5 øÿ5 öÿ5 &ÿ5 $ÿ5 *ÿ5 (ÿuôÿu-ôÿ_Ž@ôÿž5 ÿ_l@(ÿ @øÿ·Š®@ôÿÀe5øÿµ (ÿ_„õ (ÿ@(ÿuôÿöÿ_õeôÿu-ôÿ @ôÿ¢>õUÿõåôÿ@(ÿ/õeôÿu-ôÿ·ŠJõåôÿΰ @ôÿž&ß ¨Ö À ·Š(W- ÿ< @&ÿ·Šuôÿ&ÿ"@$ÿ·Šuôÿ$ÿ@(ÿ @*ÿµ *ÿÀ @apôÿ,ÿ ÷ ¾ �(´)ì<Æ>Rõeôÿ_t@øÿ@*ÿ·Š°Îß Ð5"ÿý"ÿNöÿføÿß šÖ A"ÿ1-@*ÿ·Š|@*ÿµ *ÿÀ @a0 ,ÿN*ÿÎeß Ð5"ÿý"ÿ5 (ÿu-(ÿ*ÿ@(ÿÀ @m"ÿA(ÿÁ Aap,ÿ µ (ÿí@"ÿpÿ@"ÿp&ÿ@"ÿp$ÿ@"ÿw( w  õe @õe5øÿ@Ÿøÿ5�öÿ @�öÿ&ý Ö Aøÿµ øÿ �ïåwâ w Рδ fß ¨Ö À _²÷•š@w¶ w ¤ @ÀE€ÿw¢ w � @_ê @_Ð @5 îÿθ fîÿß ÒÖ À _@ @ _4 @ ß êÀ _2 ξ ß î ÎÔ ß î _ê Îæ fîÿß ÒÖ À _† ×-â_n Îì ß $_ê ÀÈðÄ÷e¼÷ º_ê Îü fîÿß ÒÖ À _Ä Àž_¸ NÎe æ!ß LÖ Î!ß $_ê Î&!fîÿß ÒÖ À _ê  æÿÿß Ö _ê Î,!fîÿß ÒÖ À _ê @5öÿ5 øÿõ5öÿ÷ T5øÿW-øÿÿÿÎ.!ß î _ê @øÿ)õ5öÿ Nß @ß õ5öÿ Nøÿß fÎ8!ß $_ê õ5öÿNføÿß Ö _ê @ ß  @&ß ÂÖ 5øÿ@øÿ @ß $Î:!ß î ÷ ˜@Aõ5öÿÎ@&ß ÂÖ 5øÿ@øÿ Î& føÿß –%ζ@&ß Ö 5øÿ@øÿ @ß $ÎH!ß î ÷ $Îß Nøÿß 8Nøÿß õ5öÿ ß Nß 8Nß @ß õ5öÿÎß @ß 8Nß @ß õ5öÿ@ õ5öÿ  ß  æX!ß ÂÖ õ5öÿ  æß Ö  æß Ö W/@ß Ð÷ N7Š2Î�fß JÖ À� @ðb!NÎe@&ß LÖ Îl!ß $÷ μfß JÖ NÎe @& ß LÖ õ¾îÿõ‚!ìÿ@ìÿµ ìÿ’=�îÿµ îÿõ@5 ìÿ@îÿµ îÿAìÿµ ìÿA’H�@�óNÎe æpÎeß LÖ NÎe æZß LÖ ÷ ÄÀ @ðŒ!@ð: NÎe@&ß LÖ @ ß $Δ!ß î ÷ .@Àeðÿß �@5ôÿ@ÀEûÿÀUAôÿ1P@Àeðÿffôÿß Ð–%@5ôÿ@ÀEöÿÀUAôÿ1PN@Àeðÿ&fôÿß Ð–%@ß Ð@ß Ð Àå ƒÀ xâ è 6 ´ w„w rNß $Π!ß $À6_ Î& & ß –%÷ DwNw <@Ÿ @µ ’ß Fôw,w Î@Àe&æß à–%w w úÎ f& ß �–%5øÿNøÿß fÎ f& ß ¢–%Îe0ß FwÊw ¸@Ÿ @µ 5¢Àò w w Ž@µ =¢ @µ ’Àï wpw ^@LÎP"ß f@Àeøÿß ì5öÿW-öÿÿÿ<@øÿÀE€ÿ5ôÿ@ôÿÀ  u-öÿNöÿß f΢!ß $@ôÿÀ  ß $õ5€øÿΦ!ß $@ôÿζ!ß î u-öÿNß ª ß ª´wÈw ¶w¾w ¬R@Àeªÿæzß ÌÖ À  õ5I`®ÿ Àwˆf…wƉ¸!†w„ w†f…@‰†wn wpf…wšw–‰¼!†wNwRf…@)‰†w:w>f…wnwj‰Â!wf…@‰f…‰†w wf…‰ÀEÿwúf…*‰†wæBJ wàf…@ww‰È!†wºw¾f…wúwö‰Î!†wœ wžf…÷ „‰†w„Ä }w€f…@w¾wº‰Ô!†wZ w\�¦B@$ü‚‚Y�¦æ ‘rà CdÃÂÀ$üƒ‚ƒ‚Yf…wl‰Ú!wDf… 7-üÿ.À7#(Àe 7#Àe7#m€ …‡ß Ö –%Æef…ww‰Þ!†w¦wªf…@wøwô‰ä!†w„wˆf…Aw&w"÷5WpÁeä!W ê! ‡W 2" †ñwú‰2"‡wDÀw4f¦æ&Ø „ƒ‚�€@…&æ¦äHÅåF‚ƒ„…‡7ÀÿÿF…‡€�6rwü‡€�6r@‡æÁîÁlT�œVsyncLsync�ÿl€ÚÁâÁ¶Á¾ÁúÁÀè†ÌEöÈö�ÿŠÀvÁ$`VÈ0lTzÁ”J‚X ÿ `VlTÎÿˆÁR�`VÈ0lT”ÁŒ `V~V‚XÀè†$VF;N ôP^X¼Áª:^XªžÀÊÁ¸&À–YÖÁF&öÿâÁ!®ÀîÁ, 0&$öÿæ0ðzÁ‚ÁlT€�œVsync üLsyncÌXÌX€K (ÚÁâÁ¶Á¾ÁúÁ$VÈ0XTbÁ”J”X ÿàðf crÁ”J c ÿãðf cŽÁ$è�È0lTŽÁŒ« cœÁ = cœÿ«lT®Á8«ð $VzU¾ÁðlT  ]$VÖÁ®$$V‚XÈ!âÁ!®ÀÈ!îÁ, 6#ìú$ ìúæ0`ð ð€&Ð 6÷ –% ‰w ÷ wf…$‰w&@…&æ¦äHÅåF‚ƒ„…‡7²ÀÿÿF…‡t�Ýÿt�Þÿt�Üÿt�ßÿtàÿtöÿtøÿÀôtòÿtôÿNàÿ@�ßÿ&ß ÄÖ 7`Ö@Ôÿwnw \DCÀ®ÀEÿ}À%‚ ÀÀEÿ}À%‚ÀP ÀÀEÿ}À%‚ÀÿÿEÀv ô,ƒ‚ ô,†Â ô,ƒ‚ ô,†Â �wp@%ô5ó5Ãà — •Á”@à5øÿ�ÿÿÁÞupøÿ@‚ ì w”w ‚€w‚DÄeÀŸx · r %ß øôwf7 ^7 TׯT-· L· J÷,Â$7 B .÷À$ƒÓ Á¤BÝ üJÄd o0f:eòcüsÐl Ó•-÷ 6 r f÷ ðÿ€Àe0�‡•à •$ÁÀ“”C~÷ fWtýÿÁEà÷ ðÿ€ÀEøÿÀe0�‡Â”÷  ÂŠ÷ –‚Ò Â ƒó‹ÿÿà ùÎ ÁdÁàŠ�`wd÷ Xß ø÷ Tû·LΟH· Bß øø÷ : ÷ .Î ß ø÷ &ûwœþ7  ÀŸ· Àå0 ‚· Wp `ñÀe0[ƒÄeÓ•?‡f…@‰†wè wêf…@÷ Ê÷Âw:w NÎ$@�w BÎ$×-¨w TÎ$@7 w¦f…ww :Î$7 üw�f…w”w�‰î †wn wpf…÷ÆÂwm¼‰W-Nôÿæ ß 6Ö wðÿpNôÿß �Î\æÁ\AíðÿÀ r&fðÿß ¾ ÆeÀf"Î^"æ ß 6Ö uðÿòÿw-òÿ$†Nòÿß õeòÿôNôÿß õeôÿ­÷ 4w¾ w ¬ À"T@ß @œæ& ß 6Ö @Àeêÿ@œ&ß Ö À @Àeêÿæ, ß 6Ö @œæ4 ß 6Ö NÎeß è NÎeß è Îe@&@œ&÷ º–%&æ: ß 6–%À\!@@œ&ß ÄÖ æJ ß 6Ö @ð5NæP ß 6Ö NæT ß 6Ö w²w   ÷àð & æèß š –%7 à5 òÿ5 øÿ5 ôÿÎ"ß !5öÿÀ% )@öÿÀÿÿ0W-öÿ:µ øÿõ0öÿ@øÿ@òÿµ òÿ@mH�öÿW-øÿ AôÿWp AmöÿÁeÐÿuôÿÎu-ôÿÄ@òÿµ òÿ@mŠ ww ôÎffß ¼–%õ5ÿ„ !Àeÿtøÿ`wÈw ¶w 5 øÿW-øÿ @øÿÀ ¼ ß 2µ øÿòw˜w †CÄÄ Ó=ÞÀøÎß øwrw `ÄL$CÀ’Ô”üÔ•/C — Ô”‚ ú ŠÀL$w:w (Î"fß ô Ö À NæÐ ß 6Ö _@7 jõ°$øÿ5 öÿW-öÿ Î"ß !Aøÿµ øÿ �µ öÿðÀÄèÀ(×­º.á×-°ÿÿ æ²$f÷ Fÿ–%&ß DÖ  !ÀaAœ²$H�„ õÃÎØß âw†w t(À¶ÀeÀ-°‚Îß r ÷e õšÔÿ÷e’@Ôÿ0 @À¦f@ÀeÖÿfß R Ö À Næà ß 6Ö @÷åN _XDÔÿtØÿõE‚Úÿ@ÚÿÀEÿŸÀ%`õE Úÿ @ÚÿÀEÿŸÀ%@õE`ÚÿõU€ÚÿtÚÿt�Ýÿt�Þÿt�Üÿt�ßÿtàÿtöÿtøÿÀôtòÿtôÿNàÿ@�ßÿ&ß ÄÖ 7`Ö@Ôÿwnw \DCÀ®ÀEÿ}À%‚ ÀÀEÿ}À%‚ÀP ÀÀEÿ}À%‚ÀÿÿEÀv ô,ƒ‚ ô,†Â ô,ƒ‚ ô,†Â �wp@%ô5ó5Ãà — •Á”@à5øÿ�ÿÿÁÞupøÿ@‚ ì w”w ‚€w‚DÄeÀŸx · r %ß øôwf7 ^7 TׯT-· L· J÷,Â$7 B .÷À$ƒÓ Á¤BÝ üJÄd o0f:eòcüsÐl Ó•-÷ 6 r f÷ ðÿ€Àe0�‡•à •$ÁÀ“”C~÷ fWtýÿÁEà÷ ðÿ€ÀEøÿÀe0�‡Â”÷  ÂŠ÷ –‚Ò Â ƒó‹ÿÿà ùÎ ÁdÁàŠ�`wd÷ Xß ø÷ Tû·LΟH· Bß øø÷ : ÷ .Î ß ø÷ &ûwœþ7  ÀŸ· Àå0 ‚· Wp `ñÀe0[ƒÄeÓ•?‡f…@‰†wè wêf…@÷ Ê÷Âw:w NÎ$@�w BÎ$×-¨w TÎ$@7 w¦f…ww :Î$7 üw�f…w”w�‰î †wn wpf…÷ÆÂwm¼‰Ú?âCœDF@IbK(L o¾PàQòSöVfXºZ4[Æ^^_âcœdf@ibk(l o¾pàqòsövfxºz&&f榀€ìÄÄì ÷ ¨f�÷ t�÷ l7 ŽÄ !�÷ Œ�÷ ‚@aÀmr7 n dÀåd÷^À‹€Àed÷ÿÿP�÷ êÝÀD�÷ Ü÷ ¼÷ À‡ü± q÷ ¦÷ ª ÿÿ÷  ‡ cú÷ Àÿÿ÷ q�‚ƒ…„€‡f&÷ ¾7 â÷ ü‡‹ÀíÖ÷ÐÀedÀ¥dÀåd7 ¾÷ Øë Àí²÷ J÷ *÷ .÷ * cqÀÿÿ÷ *÷ ÷ q€�‡fæ¦&æ æ æ æ 7 b�÷ Ü÷ à�¶ ÷ ÷ Hv€÷ ®÷ Jÿw 6Á÷ °÷ ´�öÁ÷ à÷ vÀ÷ €÷ ÿw €€ìÀlÀì÷ ô÷ Üv7 ê�÷ ¶�÷ ®�÷ Ö.‡�÷ šñmÂ6 �÷ ¸‡Âpƒc�÷ ¾`Á rd@�÷ ¨è· ˆÎ Ñ�÷ –€c÷ �É÷ n€�÷ tþ¶- �÷ *¶- �÷ Ö Ö Ö �€‚ƒ…‡fæ¦&æ ÷ "v‚€€ìwØ÷7 �÷ Ä÷ þw€÷ d÷ p÷ t€÷ öýwêw ð7 ðÁ÷ –÷ ÐwÖÀ÷ 6÷ B÷ F€÷ Èýw¾w Âw ²쀀ìÀlÀì†_r7˜�€ ÷ ¾ Á„÷ 7 ŠÁv÷ ê÷ îW! · rWqd÷ Ú`÷ d Dqd÷ È`D Å D sÁ8÷ ª÷ ®†×pdÂ÷ ž`—pd÷ ”`B @÷ —v÷ € €r·Áò÷ ¼÷ ¤€ Áè÷ ®& ÁÚ÷ Ô‡÷pÚƒc —rdŽÀÁÂ÷ ÎíÁ¸€÷ Â÷ xÀ¬Á¤÷ Ô& Áš÷ ¨‡Á�÷ †à‚ã €€ÀedÎÁt÷ ‚è·p�÷ àÀh÷ l÷ Ô÷ V �ÁLñ q,wþþ÷ <À:À ÷ <Á&Àÿÿ÷ 0ÂÃ÷ :ûfÁ÷ Ö·�÷ Ê7 ÷ ‡ÀEÿÀmò7 î dÀåd· à÷ èí÷ ÖÀ÷ Ø÷ 8÷ <‡qø÷ ¶€÷ ®ûÁ¤÷ ÷ ‡qø÷ ˜€Á†÷ ˆûÁ|÷ F�€‚ƒÄn…¡‡æ¦&À÷ PfÀ÷ â�÷ ÷ <f€÷ ¤Á÷ ð÷ *fÀ÷ ’÷ ž7 4÷ ž€· *÷ û�÷ Æ3ƒ÷ ÄüvÁ÷ Â÷ ¨÷ ¸À ‚ƒ÷ \ûvÁ÷ žƒÁ÷ €÷ ºBÀ÷ "÷ 8ûvÁ÷ z�÷ tÈ÷ ²!�÷ PwTô ƒ�÷ X÷ J÷ v �÷ @÷ ú�÷ 2�÷ $�÷ �€‚ƒ‡@@ì‡@@ì‡÷ ,‡7�<÷ "†ñ 7�-À(À ‡÷  À÷ šÀ‡÷ †‡± À ‡ ±‡q,ùƒ@ž¡‡W J#†W *%‡‡f&€@l1 ‚11 ‡1€÷ œ€÷ ÷ r÷ b�ä€�‡q‡q,Æñ @ž¡‡f&q,@€ @ì÷ J€÷ ²÷ ÷ �q,¹“± €Ö ‡f1°N1°N1°N1°‡f&q,@€ @ì÷ Ê€÷ 2÷  ÿ÷ ��q,¹“± q,q€Ö ‡æ¦f&ìCCìƒ €÷ n€÷ Hÿ÷ 8€I 9žˆ ‰ øìBl±€�‚ƒ‡q‡qq‡&@1 †Šû€‡7 &¦÷ ÷ P· ·  ‡Àå�÷ šÀeÀ &Àe ‡€ð ,#,#p,#@11Ö ‚€‡÷ È Ð  †ð ,#õ÷ rÀ ßÀ‰ˆ‰Out of space. ,#p,#ˆ è·‚ ‰p*#r@@ì€ @l12¶&÷ $· B ,#1 p,# €‡f¦æ&7 2 · " Á,#`C?ù <ÄÄå*%<ØLØ\ØÄe*%ó )„,Ã÷· ê Ä B‰´,¦„4lØ4  .#0.#ÊÀ ·¼ 2 ò*%ò*%ÁA¿Ð  ¸‡À˜ ÷ ‚ À‰¢‰Out of headers. · ` „ƒ‚�‡&ÀN �~À Ö ‡ @€ @€W J#†W *%‡W,*%†W,*-ƒ@@ì&÷ –ÿÀ ,ØÀe ‡Àå,# ú€‡&fÀJ#7Ä Àe0øÿ "%ùƒ0 øÿÀ,#  J#ü‡Á¢ wž 1 À*%1À÷ ÿÀ  ‡p,#ØÀe*%1Á*#AÁ ñ*%ñ*%ö�€‡°N1°‡f&q,@€ @ì÷ Ê€÷ 2÷  ÿ÷ ��q,¹“± q,q€Ö ‡æ¦f&ìCCìƒ €÷ n€÷ Hÿ÷ 8€I 9žˆ ‰ øìBl±€�‚ƒ‡q‡qq‡&@1 †Šû€‡7 &¦÷ ÷ P· ·  ‡Àå�÷ šÀeÀ &Àe ‡€ð ,#,#p,#@11Ö ‚€‡÷ È Ð  †ð ,#õ÷ rÀ ßÀ‰ˆ‰Out of space. ,#p,#ˆ è·‚ ‰p*#r@@ì€ @l12¶&÷ $· B ,#1 p,# €‡f¦æ&7 2 · " Á,#`C?ù <ÄÄå*%<ØLØ\ØÄe*%ó )„,Ã÷· ê Ä B‰´,¦„4lØ4  .#0.#ÊÀ ·¼ 2 ò*%ò*%ÁA¿Ð  ¸‡À˜ ÷ ‚ À‰¢‰Out of headers. · ` „ƒ‚�‡&ÀN �~À Ö ‡ @€ @€W J#†W *%‡W,*%†W,*-ƒ@@ì&÷ –ÿÀ ,ØÀe ‡Àå,# ú€‡&fÀJ#7Ä Àe0øÿ "%ùƒ0 øÿÀ,#  J#ü‡Á¢ wž 1 À*%1À÷ ÿÀ  ‡p,#ØÀe*%1Á*#AÁ ñ*%ñ*%ö�€‡7ü ß ´ïÎ\3ß °_° À+_Î÷ h Îß N'÷ _’ ÷ N _’ ÷ â5ôÿ ÷ æÀ%`ÀÊ*K÷ , #÷ Ì +÷ ˆ À%;˜* À~· z&fôÿß Æ&–%÷ ô Îß f'‚ Âj*Âb*Žß )Φfôÿß Æ&–%÷ ¢åÀ%_ž ÷ ’åÀ%×-D*_º÷_° Àå  ƒ À x\j ¦÷æ ÀÞ· Ú&fôÿß Æ&–% ß ´÷ *åÀ%×-Ü)À®· ªŽß N'Îß f' ß ´Žß f'_° 7ŠÎß f'_° È)†)Àr· n7x)ß f' À^· Z7f)&÷ x&ß Æ&–% ß ´ÎL)ß N'ÎF)ß f'÷<)·:)_° Î2)ß )Î*)ß N'_’ Î)ß )Î)ß N'_’ Ã)Â)Àò· î7ø(Àæ· â7î(ÀÚ· Ö5øÿß f' ß ´ÎÐ(ß f'÷È(÷ äÀ%×-Ð( Îføÿ÷ †è&ß Æ&–%Ξ(ß f'·–(_’ _ž ÷ âãÀ%!)_ž ÷ ÌãÀ%_ž Àz( 7t(÷ ²ãÀ%_ž ÀF(Îh3ß °_º×-4( G‡Î|3ß °ÿ (À(÷e(ð,(η üß f'_ºÃ(Àì· è7ô'÷ 5ôÿNôÿß @ fôÿ& & ænæ÷ Ê÷Æe &ß ø&Ö ÷ ÷º'_° À®'Î’3ß °÷ üâÀ%_ž À„· €7�'ß f'_ºÃ|'Âz'Àf· b7l'ÀZ· V7b'÷ _ž ÎR'ß f'÷H'·F'_° Àå  ƒÀ xà 8@€ø €ØìXŒÎ¨3ß °_ž ÷ îÀ%:'7 'à 'Àθ3ß °_ºËóÀÀÄ· À3Îß f'÷ â7®À%,_º÷ N ÄÌÐÌ ~ 7~Î÷ `æ&ß ø&Ö ÷ ÐáÀ% ÎÆ3ß °ß d$_ºw` w N 4÷ ¨áÀ%€_""÷ –áÀ%·$Î÷ æ&ß ø&Ö ÷ váÀ%€_""Î &ß f'÷ \áÀ%·ê Î& æî%÷ Æå&ægæ÷ ØõÆe &ß ø&Ö ÷ $áÀ%€j÷ á7ª À% ÷ÿÿž  ß ´Î %ß N' Wõ”%øÿÀ€ · | 7†%÷ `å5Êþ÷ ÔàÀ%€Bõô!ÈþÀî!Àíp%€ À%– ÎØ3ß °À\%Àe,7Î!@ÀeÌþÄH%7!¾!†û ß ´wÈþ¬!@ÀeÌþÄ&%7!œ!†ÔûÎ%ß f'ÎfÊþß ø&Ö Nøÿß N' wî w Ü ÷ 6àÀ% ÷ ®ä÷ $àÀ%À Îî3ß °ß d$ _b"w® w œ Àš$5øÿÀ�$ÀêC7†$Àt · p 5öÿß N'Âv$7 r$ ß ´Àh$÷^$`$ÎX$ß N'Nöÿß f'Î#ß -Î@$ß f'Ã4$Àဠß Ê)Î,$ß Ê)Îß Ê)Î ß Ê)!†ß Ê)ú·$wøÿú#w w î ÷ö# ß „$ÄÀ$'À$0 Ãö#Àò#7ì#×,ó3ËÀÀEçÿÀ%ó峊Îß l(`ÖÃ7× –C2†Àœ,×"ÀÀEøÿÀ%ÀœÀ BGœ3�ÀÀEÀU3×" ÀœÀ BGÎÎeæ4ß °Ö ÃeË÷ôH#÷&#ž æ$æiæ÷ óÆe&ß ø&Ö Àü"wô w â Ä7!–C†�Îeæ4ß °Ö ôµ€4Š÷ ºÄeåw° w ž D!÷ îÝù7€ w� w ~  5 ôÿÃÿÿB5 öÿ÷ ÆÝ5øÿÀ%EÀv"1€Î*4ß °Âd"µ ôÿÀê=õV"øÿ — € @Àeøÿ&ß l%Ö 5öÿwøÿ0"µ ôÿÀÎD4ß °Ã"€È ƒúÀ x %ô$ô$ô$ô$Ê$°$°$°$°$´wøÿÆ @ôÿÀ €ÂNöÿ&æ¦ß  Æe’w¨w –÷Ä! ÷ èÜÀ%˜!€ Ê ò�t"Àn"· j"À 0 BG—" ÷ éw†!÷ ¬Ü7 |!× × €Îß ¶ G—" ÎP4ß °€œÀ BGý„÷þ0õ!öÿÀ€ 5øÿ7 &!Îß „$Ä5„ wöÿð ÷ 4Ü@-øÿË€€œÀ BGŽÎeæd4ß °Ö €œÀ 0BGw¨w –DÄ5øÿÎt4ß ° tþÿÀEÁEøÿ@Pwtw b@tÀEAÁEøÿ@PÀUwNw <Îfffægæ÷ "ðÆe &ß ø&Ö ww @#Î#ß -À†Àí € Ã ß Ê)Nß Ê)Nß Ê)ÎÌß Ê)Ä À Îß Ê)øwÆw ´Næˆ4ß 4+Ö w®w œNæ’4ß 4+Ö w–w „B€À5øÿÀ ß l&2Žß ¸'2Àw\w JB„ÃÀEçÿÀ% ß l&€œÀ BGðÀEÀ% 7!ÀÀ 1ÀEøÿÀÀ *À(Àt$Àt �œÁ ABGCp@Θ4ß °   ƒ À xT(((( (((8(Φ4ß °w¨w –Nß ¸'À5„ wˆw v÷ ÐÙ7fÀ%'÷ RÀ%;"Ät ôÀ6· 24# -÷ÿÿ ww À¬,6~÷ d7õÀwøw æ@ξ4ß °wàw Î÷ ¬ÝÁV÷eP Î$ß ì÷å@À<ß @ && & æfæ÷ �íÆe &ß ø&Ö wŠw x÷ bÿÀ%; ÷ JÝ&& & ænæ÷ XíÆe &ß ø&Ö ÎNß N'wJ÷ B Àbw ªH†À‰ü) ‰€w ú H‡w ÌH‡Temp file? ×þ ñ7  7  7 7 ·ò¦w Ôò@þô· â÷÷ Þ7 Ö .÷Îì÷ Ê$ e!& 7 Ä÷¶7 ¼÷ ¨÷ þ + -Ž 7’w tüÖ 7 Ž÷íŠ|7x÷ xÀ'‚‡÷ hÀø—þÂV¦ ƒò‚~Ö ùòÀ&GøÐ Ð Ð Ð À÷2.ÙÀÖÀ7 ÷ bÀå0 ‚· Áwpò`wúÕ …Àe0…w ΀wâDÄeÀŸØ · Ò %ß -ôw²7 ¾7 ´ׯ´-· ¬· ª÷, J7 ¢ .÷JƒÓ Á¢+BÝ üJÂ+d,o.,f8,eð+cú+sÎ+l Ó•-÷ 6 r f÷ ðÿ€Àe0�‡•à •$Á “”C~÷ fWtýÿÁEà÷ ðÿ€ÀEøÿÀe0�‡Âô÷  Âê÷ –‚Ò Â ƒó‹ÿÿà ùÎ ÁÄÁàŠ�`wÄ÷ ¸ß -÷ ´û·¬Ο¨· ¢ß -ø÷ š ÷ ŽÎ ß -÷ †ûwœþ7 x ÀŸn· jÀå0 ‚· `Wp `ñÀe0[ƒÄeÓ•?‡f…wÄ wÀ ‰¬6†whwlf…@‰f…@÷ ÷wîw €,J@�w t,J×-öw †,J@7 Æwf…wºw l,J7 °w7ÌÀÿÿF…‡f…w–÷ ¸  ‰:L‡À À�ªÀEÿôw ¨4L‡À ú 7 bwºÿ�¦B@$ü‚‚Y�¦æ ‘rà CdÃÂÀ$üƒ‚ƒ‚Yf…wÂw¾‰²6†w`ÿwdÿ@…&æ¦äHÅåF‚ƒ„…‡fA7މ¸6‡ �…Éÿÿ�±…fAñ @Àe7ˆ1@‰Þ6‡À �±…À 1 @Þ± �…fA7\‰ä6‡  �…Ñÿÿ�±…fAñ &÷ €ø9�± �…&fA÷ �€…@Àe&7(w$·ã@‰7±ñ‡ÿÿ &.6<DLV \ d h nt|‚ˆ’–žArg countCan't find %sCan't create %sSymbol table overflowNonterminated commentUnknown characterÜæ( 0 Pfxf|ú)¢AœyÆ}Ò"–zÔ~è+ /r?¸w¢{4.text.data%s;L%d:.byte %o,0;.even;%s Long character constantNonterminated string.data;L%d:%o;%o;%o;%o;.text Expression overflowexpression overflowExpression syntaxBad function.bss;L%d:.=.+%d.;.text Bad register %oDeclaration syntax%.8s redeclaredType clash in conditionalIllegal conditionalCall of non-functionIllegal indirectionIllegal lvalueIllegal structure refv† "$Üdœ !œ5:2œ6ÄZ„#f'Illegal conversionC error-- convertInteger operand required%d: Expression overflowLvalue required.globl _%.8s External definition syntax.text _%.8s: L%d:jmp rretrn .comm _%.8s,%o .data;_%.8s=. .=.+%d. Too many initializers.even .text;_%.8s=L%d .byte %d. %o;%o %o;%o;%o;%o Inconsistent external initializationUnexpected EOFjsr r5,rsave; %o Missing '}'Case not in switchSwitch table overflowDefault not in switchUnknown keywordRedefinitionStatement syntaxExpression too largeStatement syntaxUndefined structure: %.8s%.8s undefinedConflict in storage classType clashBad structure name%.8s redeclaredIllegal indirectionjbr L%d L%d:Bad structureCompiler error (length)Break/continue error<<�‚8‚8‚8‚8�8‚8�8€8�8®u_base òeturnÞ®u_niceH®u_dbufF®u_cdirótruct®u_name;®u_rgidX®u_dent V®u_dirp®u_fsavh®u_pdirj®u_uisa ®user:®u_ruidz®u_uisd ®®u_qsav®u_rsav ²®u_ssavâreakÜ®u_ar0õdevæoréntæloat ÷hileäefault®buf9®u_gid ž®u_arg®csr8®u_uid®u_ino Š®u_ofile6®u_segfl ¶®u_signa9B®u_offse ®vtregðûšCðûV;†7 ¶7õÿôà  àûÎHHðûðû iZ/ðûiZ/ðûiV; [3 ûþÿ–œJ#.globl _õ .comm _õ,0340 .globl _ötflag .comm _ötflag,02 #.globl _ötopen .text _ötopen: #jsr r5,rsave; 02 ‘©M int u_arg[5];  int u_tsize;  int u_dsize;  int u_ssize;  int u_qsav[2];  int u_ssav[2];  int u_signal[ 13 ];  int u_utime;  int u_stime;  int u_cutime[2];  int u_cstime[2];  int *u_ar0;  char u_nice; } u;                               int vtflag; struct vtreg { int csr; int buf; }; vtopen(dev, flag) { if (!flag) u.u_error = 6 ; else 0167770 ->csr = 040 ; } vtclose() { 0167770 ->buf = 0100000 ; 0167770 ->csr =| 01 ; } vtwrite() { regûûvV;!ûâ="=V;†û(¬û\+úÿ*û´û ötopenû\+ ötopenRûÜ'7;,ûÈv>¶7š¶7xû´ FAÏPzûV;VûV;’û<"–ûV;¤ûD¤û$ðûV;V;¶û V;ÂûfV;Öû’^;^;Z/7Êÿ„ðûiV;ÒÿÜÿßÿêÿõÿÿÿc0/tmp/ctm4b/tmp/ctm1b/tmp/ctm2b´Á¼ÁDThÀ0¨Yutmp(utmpäYžÿl(¤:ÚÁâÁ¶Á¾Á>IúÁä°`HÄä°`HÄ2Ž&fDTÎÿ2nÁæ:ZÈ0DTzÁ  Z Z&fˆÁ°=€<ä°à°`HÀDT(2°°¦ÁDT(2¼Á|:X0DTÈÁäX¶ÖÁ®*DT(¶âÁ”#®À¶îÁÀ"Ö)Úÿ°Úÿæ0¶ð8/dev/tty8‰‰‰(¤ ‰‰‰‰ ÚÿÚÿ²êÿà  òÿöÿÿÿ/etc/init´Á¼ÁXTýú^˜Zdmr\"`dmräY»ÿJ X‚f‚f\"8fK (ÚÁâÁ¶Á¾Á róÔúÁä°`HÄJŽÿÿ8f`Á >8fŽÿÿ8flÁjMXT 2vÁæ:äY0XT‚Áè°> û0¤¤üú äYŽžÁþD äY‚fªÁÆJŽäY‚f¾Á¬ù|:X0XTÈÁä†fXøÖÁ®*XT(øâÁ”#®ÀøîÁÀ"Ö)Úú°Úú.ûæ0øð$8HR\px‚�% # : cannot opensyntax error 'H<H "H(H^H| H&H)H;H> '" ;&<>()|^ "'Too many argsToo many characters;& <>([?*chdirchdir: bad directorychdir: arg countshiftshift: no args login/bin/loginlogin: cannot execute wait:try again : cannot open: cannot create/dev/null/etc/globglob: cannot execute /usr/bin//bin/sh: not found : -- Core dumped ‰üû‰ ‰‰üú‰‰+‰P"‰‰Üÿ7`ð7Zð7Tð7Nð7Hð7Bð7<ð76ð70ð7*ð7$ð7ð0‰üÿ ýûÙÿ–ûìûBû róÔÖÿ8Îÿlÿäÿ¦@lòÿT úÿþÿÿÿ-ÖÁâÁXTÏÿ¨YshÎÿƒshäY»ÿJ X‚f‚fÎÿ8fK (ÚÁâÁ¶Á¾ÁúÁä°`H2ŽÌeXÁ� ZàKÈ0XTlÁ(M⊠ÿäXT 2vÁæ:äY0XT‚Áèæ>lÿ0¤¤ÎÿläYŽžÁþDläY‚fªÁÆJä°`HÄñ ÿjÀÒÁ°ÀÁðÀXTÆ 0JÊXTâÁâÁ Jùw0¦!ø û° ûlé0$lð$8HR\px‚�% # : cannot opensyntax error 'H<H "H(H^H| H&H)H;H> '" ;&<>()|^ "'Too many argsToo many characters;& <>([?*chdirchdir: bad directorychdir: arg countshiftshift: no args login/bin/loginlogin: cannot execute wait:try again : cannot open: cannot create/dev/null/etc/globglob: cannot execute /usr/bin//bin/sh: not found : -- Core dumped4ûèúîw4ûöûþûü‰‰Üÿ7`ð7Zð7Tð7Nð7Hð7Bð7<ð76ð70ð7*ð7$ð7ð0‰üÿ ÷ûÙÿ”ûìûÂú`ÆúÒú`Öúàúâú`Úúôìú"äúûä ÿÿ”ûöûû.–û"ûÀ 4û ûŒ’û–ûäÿæ.û.ûûû4ûöûþûüöûûûþûüüü ü üwait -c*.c>x& Öÿ8Îÿwÿäÿ¦@wòÿT úÿþÿÿÿ-ûûþûüöûûûþûüüü ü ütimecc-c*.c>x& Öÿ8ÎÿÜÿäÿ¦@ òÿL úÿþÿÿÿ-´Á¼ÁlT,>ZtimeKtime>Z¶ÿlŠf6ÚÁâÁ¶Á¾ÁúÁä°ä°`HÄèU2ŽJflTÎÿ22ŽflTÎÿ2|Áæ:zZÈ0lTˆÁ  zZ˜ZfÜŽˆ–D Žä°`HÄlT€Tc|:X0lTÈÁäÂX|ÖÁ®*lT(|âÁ”#®À|îÁÀ"Ö)°<ÿ[æ0|ð—#‰ ‰wL÷ H ‰ÁíB+‰Z@p<74w2w Ò realÂZw w Àuserw w ²sys w ‰‰+ †w œTry again. ‰0‰‰ ýÁ5ÿw vCommand terminated abnormally. ‰‡Ö €Ö ÁÂjƒ‘Ò”þÀ  ø ‰jÀ`Ðx/ÐusÐr/ÐbiÐn/ ‰e ‰aw þCommand not found. ‰‰ÄTw Æ w À w º w ´ £0Ô• !SøÀ‰P‡€�r& r<w°ÄYw z w tä•:€w h w bä•:w X w R w L £0£:Ô• !XõÀ‰P w 8.ÁN rÀe07>À‰w  …f rÁe0d��…w•À‰÷… ÅE…[nÿsÿvÿyÿ�ÿˆÿŽÿ•ÿœÿ£ÿ©ÿ²ÿºÿÀÿÆÿÍÿÔÿÛÿâÿéÿòÿùÿÿÿtimecc-calloc.cconf.cfio.ciget.cmain.cnami.cprf.cprproc.crdwri.csig.cslp.csubr.csys1.csys2.csys3.csys4.csysent.ctext.ctrap.c´Á¼Á¼TKùA˜Zuser.h ùAuser.h[I(0ºf¢f ùA²VJ)PÚÁâÁÖÁâÁ"Š w¥ úÁà°`HÀõÆnà2ŽðehÁ(Mðe¼TÎÿ2nÁæ:òZÈ0¼TzÁ  òZ[ðeˆÁ°=€<ÎÿòZ[ðe”Á<ðeà°`HÀ¼TÐTÊÁ°(Iw|:X0¼TÈÁä¦XvÖÁ®*¼T(vâÁ”#®ÀvîÁÀ"Ö) ÿ° ÿùæ0vð$È&./lib/crt2.o/lib/crt20.o/usr/c/c0/usr/c/c1/usr/bin/nas/tmp/ctm0a%s: c0c1as-a.outa.outmove failed: %s ld-l2/lib/libc.a-l/bin/lddefineincludeCan't creat %s Undefined controlNested 'include'Missing file %sControl syntax%d: Line overflowCan't find %s Try again Fatal error in %s ‰Ê# ‰ ‰h ”# ‰n f·„€·w ð û†Àÿÿ …7 d‡f·\·w ðý†Àÿÿ7 F…‡f…@ww0w ,ðù†Àÿÿ f…www Nðùf…@wwöw ðù@7 è…‡‰Ê#7:ï74ï�7.ï7(ï7"ï7ï7ï7ï7 ï7ï7þî7øî0‰"‰zðwww @&w 4ïÀ€U…‰ý‰ö#¶w w&w rï€Àw hï…‰ ùAÊ#Õ#à#ë#ö#bio.obio.ocat.ocat.oclock.oclock.odc.odc.odh.odh.odn.odn.odp.odp.odraa.odraa.okl.okl.omalloc.omalloc.omem.omem.opartab.opartab.opc.opc.opipe.opipe.orf.orf.ork.ork.orp.orp.otc.otc.otiu.otiu.otm.ctm.otty.ctty.ovs.cvs.ovt.cvt.o/tmp/ctm0b/tmp/ctm1b/tmp/ctm2b/tmp/ctm3b/tmp/ctm4bZ ö#Õ#à#¼"È"Ô"ä"î"ø"# ##$#6#B#T#^#l#v#€#Š#”# #ª#¶#À#Â"Î"Ü"é"ó"ý"###-#<#K#Y#e#q#{#…#�#š#¥#°#»#Å#ýý ûùqðpð¸4ñòñ¬ö¢íX šþüÿ( ’ò6ì´ ¡íùBìBì, ýÿÿPì– qðhìÄzðqðdø ù:ùhìÿ\È520255(12*32)202010256100100201515100-100-90-50140901001312345678910111280(-1)1140010204010060010002000400010001061235678910111213151617181920212223242526272829017252001020406010012014016060000 010002000102200 120006000004000002000006000001000004000020000400020001008010204010020040010000004000020000100000040000010000020000100004000200217243001000100204060100120140161234ýý ûX ›þûÿ( mstart();it] = bp->b_blkno; )==0 && tmtab.d_active== 2 ) {>>3);USIZEÛìSFORWrí_WTSTSNTEXT�ì_REJWSIGORUNB_WANTEDüìDLEADCRB_DELWRI íDCOFdefineòñEACCES.íEIOíEAGAIN(íCHDCECHILD%íCHDBMADDRNADDRCADDRPADDRATEMFILELíENFILEIíSIO íNMREW~íRYRP"î"ø"#LO#l#v#€#TMADDR^íNINODErìNOFILEˆìB_READëìEISDIRCíEFAULTíSIGSEGÕìSIGKILÐìENOMEM+íMAXMEMzìPRIBIO­ìB_DONEîìENODEV=íSIGEMTÌìENOENTíEINVALFíSIGTRCÈìNCLIST ìSIGINTÂìSIGINSÆìSIGHUPÀìSIGQITÄìSIGIOTÊìSIGFPTÎìSIGBUSÒìDIRSIZæìEEXIST7íENOSPCXíB_XMEMøìESPIPE[íPSACCMOUNTWRITE_DONE_TERROR_IDLENMOUNTxìSIGSYSØìENOTTYOíB_BUSYôì_OPENIUPRIHARD•í_RAVLWDONEIENABLIENABL_SELWDDPIENABLE‹íENABLEDENS‚íNBUFpìEOTIDLENABLEFMTNSIG½ìRCOMiíWEOFoíCRDY�íWCOMlíDC11WIRGzíNULLÝìDH11ENOEXEC!íSREVvíREVCANBSIZ‹ìNUMODELAYIUADDRTOPENOTBLK1íCIHWATE2BIGíPSWP¤ì01ENOTDIR@íB_RELOCíCMAPSIZ�ì23EBADF#í4include¬ö56B_ASYNCí7RERRORARR_ONEFBIGUíGOfíSMAPSIZ“ìIMEOUTROOTINOäìB_ERRORñìB_WRITEéìREADZ TLOWATFBLKCHANNCALL—ìETXTBSYRíFCHR_SIGNLNFILEuìFDIRLARGSGIDLOCKEXEC_BKSTSESRCHí_ERROR_TROUBREADEPERMíPINOD©ìSSEEKžíNODEVßìEXDEV:íPPIPE±ìSINCR…ìSUIDCORRNPROCšìENXIOíPSLEP¶ìPWAIT³ìWANT_WRITREBUSY4í_SLSTS_ODDZOMBLOCK_EOFSSIZE‚ìPUSER¹ì ùiodone(bp); } else t_blkno[unit] = bp->b_blkno; tmstart(); } return; unit = bp->b_dev.d_minor; if ( 0172520 ->tmcs < 0) { if (( 0172520 ->tmer& 0102200 )==0 && tmtab.d_active== 2 ) { if (++tmtab.d_errcnt < 10) { t_blkno[unit]++; tmtab.d_active = 0; tmstart(); return; } } else t_openf[unit] = -1; bp->b_flags =| 04 ; tmtab.d_active = 2 ; } if (tmtab.d_active == 2 ) { tmtab.d_errcnt = 0; t_blkno[unit]++; tmtab.d_actf = bp->av_forw; tmtab.d_active = 0; ÿÿû#define ENFILE 23 #define EMFILE 24 #define ENOTTY 25 #define ETXTBSY 26 #define EFBIG 27 #define ENOSPC 28 #define ESPIPE 29 /* u_error codes */ #define EFAULT 106 #define EPERM 1 #define ENOENT 2 #define ESRCH 3 #define EIO 5 #define ENXIO 6 #define E2BIG 7 #define ENOEXEC 8 #define EBADF 9 #define ECHILD 10 #define EAGAIN 11 #define ENOMEM 12 #define EACCES 13 #define ENOTBLK 15 #define EBUSY 16 #define EEXIST 17 #define EXDEV 18 #define ENODEV 19 #define ENOTDIR 20 #define EISDIR 21 #define EINVAL 22 ÿÿý iodone(bp); } else t_blkno[unit] = bp->b_blkno; tmstart(); } rn; unit = bp->b_dev.d_minor; if (TMADDR->tmcs < 0) { /* error bit */ if ((TMADDR->tmer&HARD)==0 && tmtab.d_active==SIO) { if (++tmtab.d_errcnt < 10) { t_blkno[unit]++; tmtab.d_active = 0; tmstart(); return; } } else t_openf[unit] = -1; bp->b_flags =| B_ERROR; tmtab.d_active = SIO; } if (tmtab.d_active == SIO) { tmtab.d_errcnt = 0; t_blkno[unit]++; tmtab.d_actf = bp->av_forw; tmtab ÿrÿ´ ÿ= �6ÿô¤&ÿÿ”#>ÿrÿuÿxÿ~ÿ„ÿŒÿ‘ÿ–ÿ›ÿ ÿ§ÿ¬ÿµÿ»ÿÄÿÉÿÐÿÕÿÚÿßÿäÿêÿïÿõÿúÿÿÿcc-cbio.ccat.cclock.cdc.cdh.cdn.cdp.cdraa.ckl.cmalloc.cmem.cpartab.cpc.cpipe.crf.crk.crp.ctc.ctiu.ctm.ctty.cvs.cvt.c´Á¼Á”T,˜ZtimeKtime˜Z¶ÿl¢f6ÚÁâÁ¶Á¾ÁúÁä°`HÄä°`HÄäY”T”TÎÿ2pÁæ:”TÎÿ2|Áæ:[È0”TˆÁ [[.[¨e–Á°=€<ä°`HÄ”T¼TÊÁ°c|:X0”TÈÁä%X|ÖÁ®*”T(!|âÁ”#®À!|îÁÀ"Ö)!°4ÿ'[æ0|ð—#‰ ‰wL÷ H ‰ÁíB+‰Z@p<74w2w Ò realÂZw w Àuserw w ²sys w ‰‰+ †w œTry again. ‰0‰‰ ýÁ5ÿw vCommand terminated abnormally. ‰‡Ö €Ö ÁÂjƒ‘Ò”þÀ  ø ‰jÀ`Ðx/ÐusÐr/ÐbiÐn/ ‰e ‰aw þCommand not found. ‰‰ÄTw Æ w À w º w ´ £0Ô• !SøÀ‰P‡€�r& r<w°ÄYw z w tä•:€w h w bä•:w X w R w L £0£:Ô• !XõÀ‰P w 8.ÁN rÀe07>À‰w  …f rÁe0d��…w•À‰÷… ÅE…'[nÿsÿvÿyÿÿ…ÿ�ÿ’ÿ—ÿœÿ¡ÿ¨ÿ­ÿ¶ÿ¼ÿÅÿÊÿÑÿÖÿÛÿàÿåÿëÿðÿöÿûÿÿÿtimecc-cbio.ccat.cclock.cdc.cdh.cdn.cdp.cdraa.ckl.cmalloc.cmem.cpartab.cpc.cpipe.crf.crk.crp.ctc.ctiu.ctm.ctty.cvs.cvt.c´Á¼Á€ThÀ`>Zctm4aö#ctm4azZI(0’fŠfö#î²VJ)PÚÁâÁ¶Á¾Á"( ZVÜ úÁLà°`HÀBªÿtÀà02ŽðehÁ(Mðe€TÎÿ2nÁà°€TÎÿ2~Áæ€TÎÿ2ˆÁæ:.[È0€T”Á .[à°`HÀ€T¨T(I¬|:X0€TÈÁä¦XvÖÁ®*€T(vâÁ”#®ÀvîÁÀ"Ö)ÿ°ÿæ0vð$È&./lib/crt2.o/lib/crt20.o/usr/c/c0/usr/c/c1/usr/bin/nas/tmp/ctm0a%s: c0c1as-a.outa.outmove failed: %s ld-l2/lib/libc.a-l/bin/lddefineincludeCan't creat %s Undefined controlNested 'include'Missing file %sControl syntax%d: Line overflowCan't find %s Try again Fatal error in %s ‰Ê# ‰ ‰h œ# ‰ö#f·„€·w ðû†Àÿÿ …7 d‡f·\·w ðý†Àÿÿ7 F…‡f…@ww0w ,ð ù†Àÿÿ f…www Nð ùf…@wwöw ð ù@7 è…‡‰Ê#7:ï74ï�7.ï7(ï7"ï7ï7ï7ï7 ï7ï7þî7øî0‰"‰‚ðwww @&w 4ïÀ€U…‰ý‰ö#¶w w&w rï€Àw hï…‰ùîÊ#Õ#à#ë#ö#alloc.oalloc.oconf.oconf.ofio.ofio.oiget.oiget.omain.omain.onami.onami.oprf.oprf.oprproc.oprproc.ordwri.ordwri.osig.osig.oslp.oslp.osubr.osubr.osys1.osys1.osys2.osys2.osys3.osys3.osys4.osys4.osysent.osysent.otext.ctext.otrap.ctrap.o/tmp/ctm0a/tmp/ctm1a/tmp/ctm2a/tmp/ctm3a/tmp/ctm4ab f ë#¼"Ì"Ú"æ"ô"###.#>#J#V#d#r#€#Ž#œ#®#¼#Ä"Ó"à"í"û" ##%#6#D#P#]#k#y#‡#•#¥#µ#Ã#ýýû ùyðxðo<ñúñ´ö°íX ¤þúÿ( >ì´ æìöJìJì, ýÿÿXì– ¢ðpìÄ�ðšðöù:öpì$ÿ\È520255(12*32)202010256100100201515100-100-90-50140901001312345678910111280(-1)11410612356789101112131516171819202122232425262728291234501020401001020401002004001000000600000400000200000600000100000400002000040002000100000040000020000060000010000040000200004000200010001020401775700100Ä"Ó"à"í"û" ##%#6#D#P#]#k#y#‡#•#¥#µ#Ã#ýýûX ¥þùÿ( mfree(coremap, rp->x_size, rp->x_caddr);ddr);0 ))!=0)1) {USIZEãìSSWAPQíITEXTfíNTEXT¥ì_WANTED_DELWRIdefineúñEACCESíEIOûìEAGAINíECHILDíZ EMFILE,íENFILE)íIALLOCjíSW¼""æ"ô"##.#>#J##r#€#Ž##¼#NINODEzìNOFILE�ìEINVAL&íEISDIR#íEFAULTñìSIGSEGÝìSIGKILØìENOMEM íMAXMEM‚ìPRIBIOµìENODEVíENOSPC8íSIGEMTÔìENOENT÷ìESPIPE;íSIGTRCÐìNCLIST¨ìSIGINTÊìSIGINSÎìSIGHUPÈìSIGQITÌìSIGIOTÒìSIGFPTÖìSIGBUSÚìDIRSIZîìEEXISTíSSLEEP>íIACC[íIWRITE¦íSPIPEACCIMOUNT^íWRITEWRITENMOUNT€ìSIGSYSàìENOTTY/í_BUSYISANBUFxìSIDLDíDISIFMTríNSIGÅìIUPDXíISAISDNULLåìENOEXECíCANBSIZ“ìENOTBLKíSRUNBíE2BIGÿìPSWP¬ì01ENOTDIR í2CMAPSIZ—ì34EBADFíSSYSKíinclude´ö67SYSNOTDIR7EFBIG5íSMAPSIZ›ìROOTINOìì_ERROR_WRITEIREAD¡íREADIFBLK‡íONCALLŸìETXTBSY2íIFCHR€íSNFILE}ìIFDIRyíILARGŽíISGID›íILOCKUíSLOADHíIEXEC«íESRCHùìEXECOEPERMõìPINOD±ì#6#D#P#NODEVçìEXDEVíPPIPE¹ìSINCR�ìSLOCKNíISUID•íNPROC¢ìENXIOýìPSLEP¾ìPWAIT»ìIWANTbíX EBUSYíSWAIT@íSZOMBFíSSIZEŠìPUSERÁìù = 020; u.u_base = 0; readi(ip); rp = u.u_procp; rp->p_flag =| 04 ; swap(xp->x_daddr, rp->p_addr+ 8 , ts, 0); rp->p_flag =& ~ 04 ; rp->p_textp = xp; rp = ip; rp->i_flag =| 040 ; rp->i_count++; out: if(xp->x_ccount == 0) { savu(u.u_ssav); xswap(u.u_procp, 1, 0); u.u_procp->p_flag =| 010 ; swtch(); } xp->x_ccount++; } xccdec(xp) int *xp; { register *rp; if((rp=xp)!= 0 && rp->x_ccount!=0) if(--rp->x_ccount == 0) mfree(coremap, rp->x_size, rp->x_caddr); } 1]; u.u_offset[1]ÿÿûine IWRITE 0200 #define IEXEC 0100 i_count; int i_dev; int i_number; int i_mode; char i_nlink; char i_uid; char i_gid; char i_size0; char *i_size1; int i_addr[8]; } inode[NINODE]; /* flags */ #define ILOCK 01 #define IUPD 02 #define IACC 04 #define IMOUNT 010 #define IWANT 020 #define ITEXT 040 /* modes */ #define IALLOC 0100000 #define IFMT 060000 #define IFDIR 040000 #define IFCHR 020000 #define IFBLK 060000 #define ILARG 010000 #define ISUID 04000 #define ISGID 02000 #define IREAD 0400 #defÿÿý swap(xp->x_daddr, rp->p_addr+USIZE, ts, 0); rp->p_flag =& ~SLOCK; rp->p_textp = xp; rp = ip; rp->i_flag =| ITEXT; rp->i_count++; out: if(xp->x_ccount == 0) { savu(u.u_ssav); xswap(u.u_procp, 1, 0); u.u_procp->p_flag =| SSWAP; swtch(); /* no return */ } xp->x_ccount++; } xccdec(xp) int *xp; { register *rp; if((rp=xp)!=NULL && rp->x_ccount!=0) if(--rp->x_ccount == 0) mfree(coremap, rp->x_size, rp->x_caddr); } 020; u.u_base = 0; readi(ip); rp = u.u_procp; rp->pÿr"ÿ´ ÿ$ÿ�>ÿn&¤&ÿÿœ#Fÿrÿuÿxÿ€ÿ‡ÿ�ÿ”ÿ›ÿ¢ÿ¨ÿ±ÿ¹ÿ¿ÿÅÿÌÿÓÿÚÿáÿèÿñÿøÿÿÿcc-calloc.cconf.cfio.ciget.cmain.cnami.cprf.cprproc.crdwri.csig.cslp.csubr.csys1.csys2.csys3.csys4.csysent.ctext.ctrap.cšÁ¢Á¨T:N>Zctm2a:L¬ctm2aj[ˆé8X’fŠfÂfÊfÒf:L 7.9(ÚÁâÁÖÁâÁúÁLà°`HÀBªÿtÀà°*IB‚ÿ~À¨TÎÿ2pÁæ:j[È0¨T|Á¨TÎÿ2„Áæ:òZÈ0¨T�Á ÌeòZ¨ežÁy,òZ|:È0¨T®Á  ⊼Á ?⊜ÿ ¨TÎÁÌ BUB¨TâÁ¦¨TUUü6CüûîÁ~!i6Cüûû° ûé0B .ð ð€&Ð 6÷ ’–% ‰intcharfloatdoublestructautoexternstaticregistergotoreturnifwhileelseswitchcasebreakcontinuedodefaultforw `-êW-Î^/ß °Îß þ, @&ß è-Ö 7`K @æh/ß °Ö Îß þ,ζ@&ß à,Ö 7&I @æv/ß °Ö Îß þ,@7 F· ðEÂ/€Ä 7!7†À”�à ø÷ T˳Âeè7 ¸E@Àe&ü7ªEΦEß Ê)ÀœE÷ ÷ ˜"ø÷ ¾+÷ b( ÷ ˜E€ ß þ,wn,w \,5 øÿà 7× 7†À”ÀE€ÿ5`øÿ÷AøÿÀ rÈWtÁe7DÀe’à 7× 7†€”ÀE€ÿÀ¤÷1ÄeÀ%–C‚Ä7ä· þ4Àú4À%ÈΆ/ß °Îß þ, 4 4 4 à 7ÀÚDËÕ€Àe× 7†Ò”ûw®+w œ+À�, ÄŠ,÷ÿÿ„,!7 ¶D_bÀˆDÄ‚D7 ~D ÀzD _b÷ Ä*œ,6_H÷‚D÷ ®*ôÀvD· 2,7 lD÷ ˜*é· :D _bÎæ(&ß f–%_bÎæ2æ)æ>÷ XÆe&&ß f–%_bÎ& æ ß f–%À ÀP_b÷ &ÿ!(!1Àe_b!PÀ<_b7–+ÀP_bÎ& &ß f–%À À._bÎ>æ?æ=ß f–%_bÎ& &ß f–%À À-_bÎ@æAæ=ß f–%_bÎ=æ"æ=ß f–%_b ææ*ß f–%À À+_b÷ h)· CΜ/ß ° _bÀC· Ø*7 Cê· Cç÷ 6)!/ä ÷ h)0  6*4÷ )_®7®B!0ÎÎ ß *À%Àt*· p*7’Bf÷ üc÷ l`à 7À’BÓ•.7 ˆB¬,6{¬,6|× 7†‘÷ œ(î× 7†Šû72B÷ ¼ü74B×/0BÀ(B7$BÀ.À+Î5æ/æ&ß f–%!Î6æ0æ|ß f–%β/ß °÷ 0(_® ÷ v(RZÄ/Þ/ð/þ/œ,6w®(w œ(À¨A÷ ú'7žAõ-šA@7 ŒA@w~(w l(÷ŒAÃ0Â0ÀP)· L)7nAÀ|Aæ¦æ$0ß 4+–%Î"ß N æ20ß 4+Ö · DAñÀHAŽÎæ60ß 4+Ö Àw(w ö'7 AÂ$G Î'ß NÀƒ À%‘ó× ÎB0ß °ÀwÆ'w ´'C÷ 'À Àÿÿ?1ÎZ0ß °7 @Àÿÿ_æ÷ ì&À ,À ) 'À $Àž@· Z(7 ”@Õ÷ ü&ž ”0Žn˜rˆtÌ ÷ Þ&ll €\âw*'w '^÷ôD@÷"@š<@ÀeÐÿ5øÿ@Àe¦ÿ5Îÿ÷šC‚<ýÈøÿýÎÿ ÷ >û_2 Âð?€"€÷ &û7¼'À%ÊòÀä?Ê ò€ÀŒ'· ˆ'2 ¦¦¦ææß Æe Áþ;÷eø; —"€Àe5žÿ × Nžÿß >@žÿõežÿÈ5€ÿƒ ïŽß ><ÀX? 7õ:?&øæ2?æp0÷ :#Æe Î"?& × & æææß ÆeÁt;÷en; Îò>& æ& æææß Æe ÁF;÷e@; ×-:;êC‡ÎŽ0ß °Îß þ,_ú Ä_$Ãe_ª _ú _ª !÷ Äù7Z&À%7õv>Àñ7øp>_$×-B& 7õ`>Àñ7øZ>À€7xP>ÀL>_$Ã% c × /Ã#Ã$V÷ `ù× Ãe÷è%Ãd E_ú @· >87Àå -ƒ1À xD þ                         .þ.âþ          ‚‚    Ž      Ž*   šä        ä    * _ú  ÀÀ Ô4t÷ÿÀEÀÿ5¤ÿ× Àv=õ¤ÿuÎÿ¢ÿu-¤ÿ¢ÿ u-¤ÿ¢ÿ4ÀÀ ð5€Ô4.Àõ¤ÿ ÷ ®#ö ö ö d @øÿAÁeøÿ ‡Î¢0ß °Îß þ,õeøÿ@øÿÈõeÎÿ@ÎÿH¤ÿ_$õåÎÿ@øÿõåøÿ5 ÿ6÷–$ ß ì÷å"9À9H× ;N ÿß ì_$ & & & ß ÆeÁô8÷eî8 õd ÿ×  _$× Îß ì_$÷ Ú"¾ ´ ~ d� ef Èî N ÿß ì_Рζ0ß °Îß d$ _ w#w ð"CN ffæß p Æe5`Àæ;× ÷ ÷À% ç!!× @ß ¶w¤"w ’"C5 öÿ × € 7°;÷ Öö7l#À%×-b# _b ÷ º5øÿ_\  tAøÿÁEçÿ@P@øÿtþÿ5øÿÀ5îD]Â:;€× —" × —"„,×  —"„,õöÿ÷ ¬2ÀÊ× Àú:·ô:Àð:°·è:@ ò�´;À®;· ª;À p BG5 × Žß ¸'5 õ5W- µ µ @öÿµ,÷ *r€ÀEçÿÀ% —"—"ÎÈ0ß °Ê—" Žß l(7`4:À0: 27—"ò"Žß l(æø!· ô!æÖ0ß 4+–%_\ —"ÀEøÿÀ%Ä5 ÀEçÿÀ%×-Ì:æî0ß °Ö ÷ ¸:À´:2@ w® w œ ÷ öô_’÷ ìÿtÀU_²÷ Üÿ÷ ÖôÀ%_¦ À€97v9 ò�\:÷ ²ô\Àd97 ^9ÂX9 & & æ ß  Æe·B9· @9÷ €ôÀ%\ÀtÀUÚ÷ fôÀ%$!L€œ7!ò9 Á fÎeBGÁü8~p^„ ñÀÔ9· Ð9À ðä8BG÷ ôÀ%,À¶9· ²9À ðBGÀtÀU¡ Àå ƒÀ x‚ü ˆ¸ 7t À ÷ † ž v *¦ß ¶Àÿÿw^w LÎþ0ß °Nß d$wDw 2ÎD8Îeæ1ß °Ö w(w W-Î(ß ìõ$@À 5Ô4îÿõ5îÿ÷åv4Àr4ß Ôß �µøÿ÷åX4ÀT4W-# Îß ÔW-dÎß �Ä5 èÿ@_À4÷e4È_\5!øÿÎ"1ß °5ôÿ_ÈŽæ& & fæß Æe Áà3÷eÚ3 _\—"Î<1ß °uøÿôÿ_ÈÀEçÿÀ%ÎP1ß °Žææ&÷ nÖ &ædæß Æe Á‚3÷e|3 _\×"#×" Àf3÷e`3È_\ÀEçÿÀ%Îf1ß °Îæ&÷ Ö &æ$æß ÆeÁ 3÷e3 _\×"$Àðß  &Á1Àò2÷eì2È_\×"×,õÎæ&÷ ÌÖ &fæß ÆeÁ¬2÷e¦2 _\Îz1ß °_ Îß pÎß ~'ææ&fæß Æe Áj2÷ed2 _\ÀZ2÷eT2ÈÎß @ó Î$ß ì÷å82À42—"—,Ί1ß °À2÷e2Èuøÿôÿ@ôÿÀEçÿÀ%Nôÿß l&5ôÿ²ŠŽfôÿæß ü–%Î#ß ìŽ & æææß ÆeÁ¶1÷e°1 Î(ß ì@øÿÀEçÿÀ%Î$ß ì_\ ÷ °  1¶1Ä1Ö1õ5îÿÎß põ5îÿÎß @õ5 îÿŽß @õ5îÿÎæ&fæß ÆeÁ*1÷e$1 _\W-øÿ5ôÿ2 5 øÿ_ÈNøÿß j&&÷ ÈÖ Wp �eAœ²5uêÿ@êÿÀE¿ÿ5ìÿ@ìÿ@øÿ5ôÿW-P!W-øÿ 5ôÿ@ìÿ_ÈW-êÿ_ÈõEÀÿêÿ@êÿ]W-êÿ?õ5îÿ!W-øÿÎä1ß °IW-êÿ5 ôÿõ5îÿ5 êÿ<W-)êuêÿèÿ5 êÿ2@ìÿ!õ5îÿW-êÿ 5 ìÿõêÿ5ôÿÏŽß ~'fêÿfôÿæß `ÆeÎß ~'fêÿfôÿ¦ß `Æeõ5îÿW-= !W-øÿõe5 ôÿŽæÀ€À&fôÿfæß Æe Á|/÷ev/ @èÿ÷åh/Àd/Îß ~'fèÿ& æß `ÆeÁD/÷e>/ w´w ¢@2Ä*Ä+N & & ææß Æef& f&æß Æe 'Ä3Ä4N& f&æß Æe Àå ƒÀ xâlrª°Îø1ß °@ww DCBô— ÿÿ´ Žæ÷ DÖ &&ß ü–%*Žæ÷ `Ö &&ß ü–%Žæ&ß ü–%Àå ƒÀ xr ŒŒŒŒŒ 8ŒŒŒPPw„w rDÀEçÿÀ%&æ÷ êÖ &æ#æß Æew@w .CÀÀEçÿÀ%×"×,À³ŠÀ�-÷eŠ-ÈÎÿÿ&÷ RÖ &æß ü–%Î#ß ì÷åd-À`-wÔw Â@À%!Î 2ß °wªw ˜D!ÀE‡ÿÀ%hÀ ÀEàÿ!ÀEøÿÀeÀ wdw R· v0÷ ŽÄj3÷d3Î6æ$2ß 4+Ö Nff f fffß 4+Æe Î ß -7&3w w ø@ÀeõeÃt,@õ À ß >öÀwÖw ÄÀN,÷eH,H÷ ä/Àà/Î*2ß °Îß þ,w¤w ’D##$Î>2ß °w‚w p ÷ Êê_$!_$5 øÿ· j/!$×-d/÷ žêõÀT/5øÿÀ%_5 öÿW-øÿ  @Àeøÿ&ß l%Ö 5öÿ÷  !_7î7 /÷/Nöÿ& føÿÎEøÿæß p ÆeÀä._$€Àe5òÿýÕ€òÿNòÿæN2ß 4+Ö 7 ¼.µøÿ@øÿÀEçÿÀ%÷ êé7€À%×-v÷ –Hõôÿ€ÀEçÿÀ% €œÀ 5BGôÿŽß l&2ìŽß ¸'—,Á� upôÿuôÿÃrøÿÎfôÿføÿfòÿß |Æe÷ déÀ% „! Î\2ß °ß d$ ß ´wìw Ú7 .ÄÔ.Næx2ß 4+Ö Î ß „$÷º.À¨· ¤7²-Îß ´Î¦-æ†2ß 4+Ö 7’.w˜w †B ÷ Üè7rÀ% ×-hABpNŽ ÎEfæ–2ß 4+–%_„ Næ¦2ß 4+Ö ÷ –èÀ%Φffß ˆÆe÷ tèÀ% ï!7ü 7ö ¦ffß ˆÆeõ  AÁàBpNæ¶2ß 4+Ö õW-@ÀEçÿÀ% @ÀEøÿÀ%ÎÀ2ß °@�A @@À5ÎÖ2ß 4+wŒw z÷ Ôç7jÀ%W-÷ÿÿV@ ÷ îÎl,fæÞ2ß 4+–%Àd,_ž×-.@ a· ^,÷ ì7 T,@AÎð2ß 4+# æø2ß 4+Ö _” && & æhæ÷ æûÆe &ß ø&Ö 17õð+5üöÿ5ÿöÿ&øæþ2÷ ìÆe 7õÔ+&øæ3÷ ØÆe ##÷ 2Àå ƒ÷À x„ðøl2lllNµ @ wrw `Î3ß °w`w N÷ ¨æ_^ Î:3ß °_° @ ÷ :ÎeüÿæJ3ß 4+Ö À,+÷ ræÀ%_° 7ü ß ´ïÎ\3ß °_° À+_Î÷ h Îß N'÷ _’ ÷ N _’ ÷ â5ôÿ ÷ æÀ%`ÀÊ*K÷ , #÷ Ì +÷ ˆ À%;˜* À~· z&fôÿß Æ&–%÷ ô Îß f'‚ Âj*Âb*Žß )Φfôÿß Æ&–%÷ ¢åÀ%_ž ÷ ’åÀ%×-D*_º÷_° Àå  ƒ À x\j ¦÷æ ÀÞ· Ú&fôÿß Æ&–% ß ´÷ *åÀ%×-Ü)À®· ªŽß N'Îß f' ß ´Žß f'_° 7ŠÎß f'_° È)†)Àr· n7x)ß f' À^· Z7f)&÷ x&ß Æ&–% ß ´ÎL)ß N'ÎF)ß f'÷<)·:)_° Î2)ß )Î*)ß N'_’ Î)ß )Î)ß N'_’ Ã)Â)Àò· î7ø(Àæ· â7î(ÀÚ· Ö5øÿß f' ß ´ÎÐ(ß f'÷È(÷ äÀ%×-Ð( Îføÿ÷ †è&ß Æ&–%Ξ(ß f'·–(_’ _ž ÷ âãÀ%!)_ž ÷ ÌãÀ%_ž Àz( 7t(÷ ²ãÀ%_ž ÀF(Îh3ß °_º×-4( G‡Î|3ß °ÿ (À(÷e(ð,(η üß f'_ºÃ(Àì· è7ô'÷ 5ôÿNôÿß @ fôÿ& & ænæ÷ Ê÷Æe &ß ø&Ö ÷ ÷º'_° À®'Î’3ß °÷ üâÀ%_ž À„· €7�'ß f'_ºÃ|'Âz'Àf· b7l'ÀZ· V7b'÷ _ž ÎR'ß f'÷H'·F'_° Àå  ƒÀ xà 8@€ø €ØìXŒÎ¨3ß °_ž ÷ îÀ%:'7 'à 'Àθ3ß °_ºËóÀÀÄ· À3Îß f'÷ â7®À%,_º÷ N ÄÌÐÌ ~ 7~Î÷ `æ&ß ø&Ö ÷ ÐáÀ% ÎÆ3ß °ß d$_ºw` w N 4÷ ¨áÀ%€_""÷ –áÀ%·$Î÷ æ&ß ø&Ö ÷ váÀ%€_""Î &ß f'÷ \áÀ%·ê Î& æî%÷ Æå&ægæ÷ ØõÆe &ß ø&Ö ÷ $áÀ%€j÷ á7ª À% ÷ÿÿž  ß ´Î %ß N' Wõ”%øÿÀ€ · | 7†%÷ `å5Êþ÷ ÔàÀ%€Bõô!ÈþÀî!Àíp%€ À%– ÎØ3ß °À\%Àe,7Î!@ÀeÌþÄH%7!¾!†û ß ´wÈþ¬!@ÀeÌþÄ&%7!œ!†ÔûÎ%ß f'ÎfÊþß ø&Ö Nøÿß N' wî w Ü ÷ 6àÀ% ÷ ®ä÷ $àÀ%À Îî3ß °ß d$ _b"w® w œ Àš$5øÿÀ�$ÀêC7†$Àt · p 5öÿß N'Âv$7 r$ ß ´Àh$÷^$`$ÎX$ß N'Nöÿß f'Î#ß -Î@$ß f'Ã4$Àဠß Ê)Î,$ß Ê)Îß Ê)Î ß Ê)!†ß Ê)ú·$wøÿú#w w î ÷ö# ß „$ÄÀ$'À$0 Ãö#Àò#7ì#×,ó3ËÀÀEçÿÀ%ó峊Îß l(`ÖÃ7× –C2†Àœ,×"ÀÀEøÿÀ%ÀœÀ BGœ3�ÀÀEÀU3×" ÀœÀ BGÎÎeæ4ß °Ö ÃeË÷ôH#÷&#ž æ$æiæ÷ óÆe&ß ø&Ö Àü"wô w â Ä7!–C†�Îeæ4ß °Ö ôµ€4Š÷ ºÄeåw° w ž D!÷ îÝù7€ w� w ~  5 ôÿÃÿÿB5 öÿ÷ ÆÝ5øÿÀ%EÀv"1€Î*4ß °Âd"µ ôÿÀê=õV"øÿ — € @Àeøÿ&ß l%Ö 5öÿwøÿ0"µ ôÿÀÎD4ß °Ã"€È ƒúÀ x %ô$ô$ô$ô$Ê$°$°$°$°$´wøÿÆ @ôÿÀ €ÂNöÿ&æ¦ß  Æe’w¨w –÷Ä! ÷ èÜÀ%˜!€ Ê ò�t"Àn"· j"À 0 BG—" ÷ éw†!÷ ¬Ü7 |!× × €Îß ¶ G—" ÎP4ß °€œÀ BGý„÷þ0õ!öÿÀ€ 5øÿ7 &!Îß „$Ä5„ wöÿð ÷ 4Ü@-øÿË€€œÀ BGŽÎeæd4ß °Ö €œÀ 0BGw¨w –DÄ5øÿÎt4ß ° tþÿÀEÁEøÿ@Pwtw b@tÀEAÁEøÿ@PÀUwNw <Îfffægæ÷ "ðÆe &ß ø&Ö ww @#Î#ß -À†Àí € Ã ß Ê)Nß Ê)Nß Ê)ÎÌß Ê)Ä À Îß Ê)øwÆw ´Næˆ4ß 4+Ö w®w œNæ’4ß 4+Ö w–w „B€À5øÿÀ ß l&2Žß ¸'2Àw\w JB„ÃÀEçÿÀ% ß l&€œÀ BGðÀEÀ% 7!ÀÀ 1ÀEøÿÀÀ *À(Àt$Àt �œÁ ABGCp@Θ4ß °   ƒ À xT(((( (((8(Φ4ß °w¨w –Nß ¸'À5„ wˆw v÷ ÐÙ7fÀ%'÷ RÀ%;"Ät ôÀ6· 24# -÷ÿÿ ww À¬,6~÷ d7õÀwøw æ@ξ4ß °wàw Î÷ ¬ÝÁV÷eP Î$ß ì÷å@À<ß @ && & æfæ÷ �íÆe &ß ø&Ö wŠw x÷ bÿÀ%; ÷ JÝ&& & ænæ÷ XíÆe &ß ø&Ö ÎNß N'wJ÷ B Àbw ªH†À‰ü) ‰€w ú H‡w ÌH‡Temp file? ×þ ñ7  7  7 7 ·ò¦w Ôò@þô· â÷÷ Þ7 Ö .÷Îì÷ Ê$ e!& 7 Ä÷¶7 ¼÷ ¨÷ þ + -Ž 7’w tüÖ 7 Ž÷íŠ|7x÷ xÀ'‚‡÷ hÀø—þÂV¦ ƒò‚~Ö ùòÀ&GøÐ Ð Ð Ð À÷2.ÙÀÖÀ7 ÷ bÀå0 ‚· Áwpò`wúÕ …Àe0…w ΀wâDÄeÀŸØ · Ò %ß -ôw²7 ¾7 ´ׯ´-· ¬· ª÷, J7 ¢ .÷JƒÓ Á¢+BÝ üJÂ+d,o.,f8,eð+cú+sÎ+l Ó•-÷ 6 r f÷ ðÿ€Àe0�‡•à •$Á “”C~÷ fWtýÿÁEà÷ ðÿ€ÀEøÿÀe0�‡Âô÷  Âê÷ –‚Ò Â ƒó‹ÿÿà ùÎ ÁÄÁàŠ�`wÄ÷ ¸ß -÷ ´û·¬Ο¨· ¢ß -ø÷ š ÷ ŽÎ ß -÷ †ûwœþ7 x ÀŸn· jÀå0 ‚· `Wp `ñÀe0[ƒÄeÓ•?‡f…wÄ wÀ ‰¬6†whwlf…@‰f…@÷ ÷wîw €,J@�w t,J×-öw †,J@7 Æwf…wºw l,J7 °w7ÌÀÿÿF…‡f…w–÷ ¸  ‰:L‡À À�ªÀEÿôw ¨4L‡À ú 7 bwºÿ�¦B@$ü‚‚Y�¦æ ‘rà CdÃÂÀ$üƒ‚ƒ‚Yf…wÂw¾‰²6†w`ÿwdÿ@…&æ¦äHÅåF‚ƒ„…‡fA7މ¸6‡ �…Éÿÿ�±…fAñ @Àe7ˆ1@‰Þ6‡À �±…À 1 @Þ± �…fA7\‰ä6‡  �…Ñÿÿ�±…fAñ &÷ €ø9�± �…&fA÷ �€…@Àe&7(w$·ã@‰7±ñ‡ÿÿ &.6<DLV \ d h nt|‚ˆ’–žArg countCan't find %sCan't create %sSymbol table overflowNonterminated commentUnknown characterÜæ( 0 Pfxf|ú)¢AœyÆ}Ò"–zÔ~è+ /r?¸w¢{4.text.data%s;L%d:.byte %o,0;.even;%s Long character constantNonterminated string.data;L%d:%o;%o;%o;%o;.text Expression overflowexpression overflowExpression syntaxBad function.bss;L%d:.=.+%d.;.text Bad register %oDeclaration syntax%.8s redeclaredType clash in conditionalIllegal conditionalCall of non-functionIllegal indirectionIllegal lvalueIllegal structure refv† "$Üdœ !œ5:2œ6ÄZ„#f'Illegal conversionC error-- convertInteger operand required%d: Expression overflowLvalue required.globl _%.8s External definition syntax.text _%.8s: L%d:jmp rretrn .comm _%.8s,%o .data;_%.8s=. .=.+%d. Too many initializers.even .text;_%.8s=L%d .byte %d. %o;%o %o;%o;%o;%o Inconsistent external initializationUnexpected EOFjsr r5,rsave; %o Missing '}'Case not in switchSwitch table overflowDefault not in switchUnknown keywordRedefinitionStatement syntaxExpression too largeStatement syntaxUndefined structure: %.8s%.8s undefinedConflict in storage classType clashBad structure name%.8s redeclaredIllegal indirectionjbr L%d L%d:Bad structureCompiler error (length)Break/continue error<<�‚8‚8‚8‚8�8‚8�8€8�8 node = alcopy( 6,( stop - 7 ) -> pstr ) 475 527 (( stop - 7 ) -> node ) -> strr =( stop - 3 ) -> pstr 476 528 pontr( 2, 7, 1 ) 477 529 stop =- 6 478 530 BREAK_____ 479 531 CASE____ 22 :__ ˜ è   480 532 /* integral with upper limit 481 534 */ 482 535 ( stop - 8 ) -> node = alcopy( 6,( stop - 8 ) -> pstr ) 483 536 (( stop - 8 ) -> node ) -> strr =( stop - 3 ) -> pstr 484 537 pontr( 2, 8, 1 ) 485 538 pontr( 0, 8, 6 ) 486 539 stop =- 7 487 540 BREAK_____ 488 541 CASE____ 21 :__ 489 542 e,x); } goto e0; } } } if (lc==0) (b->alcyl)=x; k=add-m; } else k=add; if (k>0) { if((k+ntrk)>27) goto e1; at=k; getrk(drive,&(b->atrack[ntrk]),k); if ((b->atrack[ntrk+k-1])== -1) { e2: givtrk(drive,&(b->atrack[ntrk]),at); goto e1; } } else { k= -k; if (k>ntrk) k=ntrk; if (k>0) givtrk(drive,&(b->atrack[ntrk-k]),k); } } } else { nlc=0; dl[0]=sfms>>7; dl[1]=sfms<<9; sp= &(b->asect0); lc=(b->alcyl)&255; if (lcmpd(leng,dl)>0) goto e0; k=nsctsin(b); add=cvtleng(leng,0)-k; if (add>0) { ntrk=k/10; nsct=k%10; x=(nntc -> restore ) -> value 433 467 snode -> htsz =( .4 + pntr -> htsz ) *( b / a ) 434 468 snode -> hsz = pntl -> hsz + snode -> htsz 435 469 snode -> hbsz = 0.0 436 470 2 } 437 471 ELSE____ 438 472 { 439 473 3 IF__ ( pntr -> type == 8 || pntr -> type == 17 ) 440 474 { 441 475 4 ( pntc -> restore ) -> value = a / b - .4 442 476 À%o)· r5ׯn5-· f5õýÿðÿׯZ5+· R5ׯN57ׯF50@öÿtÁ65· 25A’@`ÀeÐÿ5öÿéAöÿupðÿ¸Bíøÿ�`uöÿ@AöÿWt@P@]úÿAôÿA @@=ÀŸì4ÀU À% @öÿW-öÿ ÷ ÀÿÿF…‡f…æ ÀŸ¶4ÀU À% · ¨4öw3f…Æå@c@tüÿ5üÿõEðÿ@@íüÿ5úÿ5 þÿu-þÿúÿ*@þÿÀ @mAþÿAmüÿÁ AmAÂBí BtB ‚4cB �@BþÿBmüÿ Bm‚µt�PHµ þÿÒ@úÿ@þÿÀ @mAþÿAmüÿÁ AmAutHõÿÿþÿu-þÿ µ þÿ@þÿÀ @m óF…‡f…Æå5 òÿõþÿ@þÿõ þÿÀ @þÿÀ 0 nlô÷ –À Àÿÿ_à0õô:ôÿõð:öÿõj35üÿÎ füÿß æÖ 5üÿÎ füÿß æÖ 5üÿNüÿÎe0ß 5 üÿW-þÿ@üÿ5¬&þÿ @üÿœ&5àþÿµ üÿí÷g Î ß Î µ þÿfþÿß æÖ 5þÿNþÿÎe0ß AüÿWpuüÿÎ ß @üÿœ@ß @üÿœ?ß @üÿœ>ß wbýf…æ AÀ rÁ ÀnÀmF…‡f…æ AÀ 5rNÎe0ß AÀ 5rF…‡f…æ ÷ >À:H�wúü„ ”rà eÃÂÀ$üJ\€�6rw&‡€�6r@‡Df… 7-üÿ.À7#(Àe 7#Àe7#m€ …‡ß Ö –%Æef…wzwv‰2†wPüwTüf…@w^wZ‰8†w.üw2üL70R L71 L72 L73r L74” _lcmp L75 L76 L77L L78` L79r L80’ L82Ú L81† L83Ú L84Ä _clscpyt _activat"à L85î L86 L10011 L87 L88d L896 L90à L91H _random _seekf"æ _errsp _locfr"îL92 L93è_locafl"HL95ÒL964L978_addd L98fL99PL100fL101p_lcmpd L102hc4–c5žrval4 c6¦r4r8 c7ªrpi8 node_pc8®c9¶c10¾c11ªargp_€c12Âmrad_xc13Êc14Òrval8p eday_mnom_ˆradian_stsp ftc15Úcall dmod. dsin. enom_˜.42rsb8 c16âdcos. rdv8 dele_�dabs. c17ærgt8 lif2 goto c18êc19âc20âdsqrt.NAüÿÀ r &æLOß ‚8–% À` À7R_ž)ÎROß ‚8_ž) _”1?ŠÌ3_ž)ÀŸÄ3À$ Àß ðÀ _Ž1_ž)õàPþÿ@þÿµ þÿŠfþÿµ þÿ÷ àð�ÎhOß ‚8÷ _ž)÷ Èð=�þÿW¯þÿ ÎnOß ‚8÷ ü_ž)@þÿµ þÿ’œ2P·Š ý•ÿÿþÿáÀ˜ ÎàPß ê"5üÿõôÿ_ž)W-üÿÿÿ5 öÿJÀj ÀæàPß ®!Ö ÀP ÀæTæàPß š1–%7 4À8 72&%Àå ƒÀ xV1°*(+2+t+|+²+È+Þ+X,�,°,-$-0-H-„-Ô-..$.f.r.~.¶. 0,020:0@öÿF…‡f…¦)@@ÎzO΀O@€ € &ætOß ‚8–%@µ ’5þÿ)@þÿ΂Oß ‚8@_‚2g­­aõØ$Ï µòÀ$ 6: /*backup*/ goto kase16; case 7: /*make person's move*/ goto kase10; case 8: /*change search depth*/ goto kase24; case 9: /*exit program*/ exit(); case 10: /*no match*/ goto kase28; } } a = special?0:12; while(!match(comlist[a])) a =+ 2; switch(a/2 + 1) { case 1: /*special list of commands*/ print("\n"); a = 0; while(*comlist[a]) { print("%s ",comlist[a]); if((comlist[a++] + 8) >= comlist[a]) print(" "); print("%sfo some form. .sp 1 .ti 0 III. SUMMARY OF COMMENTS .sp 1 .ti 5 On the fimal page of the questionnaire, we asked, "What changes would you like in your working conditions? Other comments?" These questions elicited responses from .54 of the sample, with no apparent dependence upon age or job category. In analyzing the many comments, we soon discovered that they, too, should be divided into responses by women in staff positions and by those in technical positions, for the issues of interest often differed. (W˜(8H8(8(8hx˜((xhH(xˆ8˜HXÈ88è8ø8ø88ø8ø88(88merc."merc_rval8 c0vc1~_ Lcapt_<rmp8 rad8 gmv8 ecc_`c2†c3Žincl_æL43\L44¾L45êL47`L48L49`XL50*L46vL51:L52tXL53|XL54vL55\L57Ú L58ŽL59ò L60”L61¼L62ÖL63üL65d L66*L64¶ L67NL68NL69NL70tL71~L72´L73úL74BL75šL76šL77šL78šL79öL80> L81t L82 L83 L84V L85V L8tting for three reasons: first, to save money (\|\*sACM\*S charges us by the page); second, to improve the appearance of the newsletter; and third, to demonstrate that computer typesetting is relatively practical today for small jobs. .pp If you don't like this newsletter, please write me and let me know. But if you do like it, you might want to try persuading your local computer center to obtain a typesetter. In principle, computer editing pays its way, saving more time in the re-typing of successive draf–%@èÿÀ @aðÿÿîÿ¿À AäÿWtüÿÁ Amþÿ1`AâÿWp WtüÿÁ u`àÿ@âÿÀEøÿÀ |H=Pàÿ@âÿÀEøÿÀ Aàÿ1\ŒH—5 äÿ5 èÿW-èÿ@èÿµ èÿÀ @aîÿ @èÿÀ @aìÿtûÿ5äÿçS5 ìÿ@æÿt5äÿNäÿfß –+Ö 5àÿ?5 èÿW-èÿúÎ @èÿÀ &Nmàÿß „FÖ 5êÿu-êÿìÿuêÿìÿuèÿâÿõeèÿá@ìÿ @æÿÀ @mþÿ0 _œ,@À AâÿÁ AmàÿpH@âÿtüÿ5`äÿ5 äÿ@þÿpäÿ<@äÿF…‡f…Æå5 þÿ@þÿµ þÿ@-?Næ ß Ö 5üÿ Nfüÿß 8Ö Nüÿß @@íþÿ€ %ÀA1`@À% @0 ½ ÀA1`@À% @0 ½ º F…‡f…hˆ8(8hØx8(X8hØx8(X8hˆ8(8hˆx¸xÈ(8(8hˆ8(8hØx8(X8hˆx8(X8hØ8(8hˆxˆxÈ((Xè˜8((ˆ8(8hx˜(8H8(h88hˆ(˜((x˜(8H8(h88hˆ(˜((xhH8((Xè8h˜(8H8(8(8hx˜((x“X 0°„= N]”kZ`hN]–k]ÜM”k¸[N]”kN]–kZ8hN]˜k]ÜM–kN]–k]¬M’kâ[Z8hª[^@hZ hZ@hž[^(hN]’kZ`hN]”k]°N’kN]’kZ8hN]”k]°N’k¸[^HhN]’kþYHh^”kN]–kZªDâ[ZHhZHh¸[ª[N]˜k]ÎN–kN]–k]¬M’kâ[^0hZ¾DZÆDZPh¸[ª[ZÎDZPhZÖDâ\¸[ª[Þ[^°hZ°hâ[Z h¸[Þ[^°hZ¨hN]’kZ(hN]”k]ÜM’k¸[N]’kZ0hN]”k]ÜM’k¸[N^Z¨hN]’kZ(hN]”k]°N’kN]’kZ0hN]”k]ÜM’k¸[N]’kZ°hâ[N]”k]ÜM’k¸[N]’kZ°hâ[N]”k]°N’kN]’kZ0hN]”k]°N’k¸[ª[¸[N^Z¨hN]’kZ(hN]”k]°N’kN]’kZ0hN]”k]ÜM’k¸[N]’kZ°hc66V c67V c68V c69V .106" .25ì c70V c71b score_"3t9 o9( .21 .22P c72Z .1070 d0p d1v d2| d3‚ d4ˆ d5Ž d6” d7š d8  baseierr.of zeroÖ errbuf$3cerrpôeerbufL3oneÒ io.oÚ slcntV3ilvalZ3itypeX3formp¶3setioÚrdflgN3binflgv3itmfnd¼3itmflgp3pbufb3pparmp1[i]] = 0; } } goto loop; } cpyact(){ /* copy tmg action to the next ; */ int brac; char c; brac = 0; loop: switch( c=getchar() ){ case ';': if( brac == 0 ){ putchar(c); return; } goto copy; case '{': brac++; goto copy; case '}': brac--; if( brac == 0 ){ putchar(c); return; } goto copy; case '\0': error("action does not terminate"); } copy: putchar(c); goto loop; } arrset(s) char s[]; { printf("\nint %s[] {0", s ); arrndx = 1; } arrval(n){ /* integral with lower limit 490 544 */ beautified p1base page 17 491 545 ( stop - 8 ) -> node = alcopy( 6,( stop - 8 ) -> pstr ) 492 546 (( stop - 8 ) -> node ) -> strr =( stop - 3 ) -> pstr 493 547 pontr( 2, 8, 1 ) 494 548 pontr( 1, 8, 5 ) 495 549 stop =- 7 496 550 BREAK_____ 497 551 CASE____ 2B昿ä0´D€@·Ys?²’4D´DpB€@½<@íÛ mercury venus earth mars jupiter saturn uranus neptune pluto sun 8H8HˆˆˆÈØèHø8HˆˆˆÈØèHø8Hˆhˆ˜ˆh5 öÿµ þÿÜ@öÿ@üÿÀ ° õeøÿ¨µ üÿ_ü"5 þÿµ þÿ@þÿ@-úÿ@þÿÀ @þÿÀ ¬@þÿÀ 0Šâ_öF…‡f…Æå5 þÿ÷ ˆù5�üÿ@þÿ@�üÿß ' µ þÿõ þÿ@þÿ@�üÿß ÎÐAß ¨ ÷ Bù°~;’{˜}Ò@�üÿß ËF…‡f…æ NæêAß ´Ö ÷ùwþøf…æ NæøAß ´Ö · æøÁâøÀ r Á Î ß wÌøf…æ ÎüAß ´wºøf…æ @À $Nfß Ö @À A p@À ðþ   ƒÀ x˜xhzxF…‡f…ÆåÀî67Lø7Fø7BøÎ>øÎeß n÷ 5 þÿw-þÿÊ8 @þÿÀ ðÿÿµ þÿó5 þÿ,el,er,su,y,"; /*disyllable suffixes -al -le -re -us -y*/ t = suffix(in,end,s); if(t=in||*t=='h') { t = end; while((u=suffix(in,t,suff1))!=t) { insert(u+1,ls); t = u; } if((u=suffix(in,t,suff2))!=t) { insert(u+1,ls); return; } if((u=suffix(in,t,"e,"))!=t) { if(u[2]=='e') return; insert(u+1,ls); t = u; } if(oneof(*t,"iy")&&vowel(in,t) node = alcopy( 6,( stop - 9 ) -> pstr ) 501 556 (( stop - 9 ) -> node ) -> strr =( stop - 3 ) -> pstr 502 557 pontr( 2, 9, 1 ) 503 558 pontr( 0, 9, 7 ) 504 559 pontr( 1, 9, 5 ) 505 560 stop =- 8 506 561 BREAK_____ 5Ö ÀF…‡f…Æå @À 5öÿ@À 5øÿ@øÿ5þÿ5úÿW-þÿü _†@øÿAøÿAmúÿAœÁEÿp@5üÿW-üÿüW-üÿÿ@üÿ@øÿðÿ@öÿ0 õÿÿþÿ_r@@øÿ@mœÀEÿ5üÿÀ%üuüÿïW-üÿÿ@øÿpþÿ·uþÿ@ @øÿ@mþÿð•þ@öÿð Bõ @6@øÿAøÿAmúÿAœÁEÿp@5üÿ@øÿ@mp�úÿ@üÿW-üÿü W-üÿÿ@øÿðÿuúÿuüÿúÿ@öÿð W-üÿÿÅ@øÿ@mð•ÿÎfß Ö @þÿF…‡f…Æå @À 5þÿõøÿuúÿ@þÿ@múÿœÀEÿ5üÿÀ%ü @üÿ 'µ øÿuüÿúÿè@þÿ@múÿAþÿpœ@ –‘� }jï-Mx y Üß ª�7î Øü Ü¢ r âåz o ã Ü ß n hïàRv‘Ò·Z˜1"% ò {T £ į< Ä s¢` Rƒc_Z ‹C ˜™ å3”ÚKûG\  “0�(³E­œ:˜   X ûì ó ÷ ù û    ( + . 6 < >  ¥n.nf aaa bbb ccc ddd eee fff ggg hhh iii jjj kkk lll mmm nnn ooo ppp qqq rrr sss ttt uuu vvv www xxx yyy zzz aaa bbb ccc ddd eee fff ggg hhh iii jjj kkk lll mmm nnn ooo ppp qqq rrr sss ttt uuu vvv www .ne 5 xxx .sp 30 yyy zzz aaa bbb ccc ddd eee fff ggg hhh iii jjj kkk lll mmm nnn ooo ppp qqq rrr sss ttt uuu vvv www xxx yyy zzz aaa bbb ccc ddd eee fff ggg hhh iii jjj kkk lll mmm nnn ooo ppp qqq rrr sss ttt uuu vvv www xxx yyy zzz ée { if(search(temp[t1].beg,temp[t1].ct,&xtab,0)) goto yes; } goto no; case 1: goto no; case 2: xtrn = 1; goto no; case 3: if(hlevel) type = 1; if(!level) ssw = 1; goto no; case 4: if(hlevel) type = 1; goto no; } } if(hlevel && (val == 4 || val == 3)) type = 1; if(!val == !only) goto yes; no: line[l] = c; return(0); yes: tt = t1; while(tt) if(comp(temp[t1].beg,temp[--tt].beg)) goto no; temp[t1++].term = c; return(1); } out() { auto i,ct; turn(0); } gfld(file, buf) char *buf; { char c; buf--; while(*++buf = get(file)) { if((*buf == '\t') || (*buf == '\n')) { c = *buf; *buf = '\0'; return(c); } else { continue; } } return('\0'); } copy(a, b) char *a,*b; { char *c; b--; c = --a; while(*++b = *++a); return(a - c); } comp(a, b) char *a, *b; { /* printf("comp: %s %s\n",a,b); /*DEBUG*/ a--; b--; while(*++a == *++b) { if(*a == '\0') return(1); } return(0); } char buf[512]; int nread 1; get(ifile) in subroutine moon(eday) double precision w, x, y, z double precision chp double precision long, lat, noded, sl double precision eday, xm, ym, zm double precision ecc, incl, node, mrad, argp, mnom double precision dmoon, mlong double precision dele, enom, vnom, rad integer name(3) integer option double precision wlong, nlat double precision obliq, phi, eps double precision capt, gst double precision pi, radian common pi, radian common wlong, nlat, option common obliq, phi, eps common capt,p = &symt[hptr[h]]) > symt) { j = length + 1; sp = symbol; while(j--) { if(*p++ != *sp++) goto no; } return(*p); no: h = (h + h)%hsiz; } if(install) { if(++nsym >= hsiz) err("too many","symbols"); hptr[h] = curb; length++; if((curb + length) >= ssiz) err("too many","chars"); while(length--) symt[curb++] = *symbol++; symt[curb++] = install; params->curb = curb; params->nsym = nsym; } return(0); } main(argc,argv) char **argv; { auto ifile,ofile,i,c,error,val; char on of upward or lateral movement was reported more often by those in the staff area (LS = .35, US = .40, TC = .14). The data also show higher rates for women over thity in US, but this difference does not reach an acceptable level of significance. The most common reason given for prevention of job change was lack of notification about job openings. .sp 1 .ti 5 Promotion in 1969 or since was reported reliably more often by those in the staff categories than by those in the technical category (LS = .42, US = */ ( pntc -> perturb ) -> value = off2 - pntc -> hsz; if (( pntc -> perturb ) -> value <- 320.0 ) { ( pntc -> perturb ) -> value =/ 432.0; ( pntc -> perturb ) -> unit = 'i'; } motion( 1, aladjust( pntc, 1, 1 )); ( pntc -> restore ) -> value = vert( 1, pntr ); if ( pntr -> type == 4 &&( pntr -> strl ) -> estr[ 1 ] == '\\' ) { snode -> rpnt = alcopy( 48, 0 ); ( snode -> rpnt ) -> cpnt = pntr; pntr = snode -> rpnt; pntr -> bpnt = snode; ( pntr_â÷f ×­~ a×­v z×­n A×­f Z×­^ 0×­V 9 ÀJ Á�J p�R· > ÷ püÝÀ� _b ß _Îß _Îß À _Îß À _Îß _Îß À _Îß À _Îß _Îß À _Î ß _Î ß À _Î ß _Î ß _Î ß À _Îß _Îß _Îß À _Îß À _Îß _Îß __@ÀåA 6ƒ÷À xtJT`Œ¸Ôð\ü\\\\\\\\$\\\P\\\\\\\\\JT`Œ¸Ôð\ü\\\\\\\\$\\\P÷zÀÀ\': next -> estr[ iestr - 2 ] = c; next -> estr[ iestr - 1 ] = '\0'; parse( 4, next ++ ); iestr = 0; next -> length = 0.0; continue ; case '<': parse( 15, next ); iestr = 0; continue ; case '>': parse( 17, next ); iestr = 0; continue ; case '*': next -> estr[ iestr - 1 ] = '\0'; parse( 4, next ++ ); iestr = 0; next -> length = 0.0; continue ; default: printf( "Illegal escape character\n" ); ; { if(*a < 'c') return(0); if(*a < 'h') return(1); if(*a < 'r') return(2); return(3); } sk2() { cs = SKIP2; } sk() { cs = SKIP; } tabs() { if(l == 0) l = -1; } search(symbol,length,params,install) char *symbol; int length; struct htab *params; int install; { char *sp,*p; static int curb,*hptr,hsiz,nsym,ssiz; static char *symt; auto h,i,j,k; if(hptr != params->hptr) { hptr = params->hptr; hsiz = params->hsiz; symt = params->symt; ssiz = params->ssiz; curb = params->curb; n07 562 CASE____ 31 :__ 508 563 CASE____ 32 :__ 509 564 tweek = 1 510 565 2 } 511 566 stop -> state = tabto( actset,( stop - 1 ) -> state ) 512 567 RETURN______ ( 2 ) 513 568 CASE____ 4 :_ 514 569 /* accept 515 571 */ 516 572 517 RETURN______ ( 3 ) 518 573 1 0ü5ÿøÿuÿüÿùAîÿqÿBîÿ²ÿBöWö@ò7òÚ@ìÿ0ü@òÿ0ÿAìÿqÿô@ìÿ0ü@ìÿñ0ü_ØW/îÿC@îÿ¬\;@îÿ0ÿ7öŽ@ðÿ0ü@ðÿ0ÿÀñ@ðÿ0ü5ÿøÿuÿüÿùAîÿqÿwöZò@ìÿ0ü@òÿ0ÿAìÿqÿô@ìÿ0ü@ìÿñ0ü@òÿ0ÿAîÿAqÿô@öÿ0ü_$)Nðÿß ÖW/ðÿA@ðÿ¬\9@ìÿ/@ðÿAìÿp@ìÿ5,ìÿ@ìÿpðÿ@ìÿ5, ìÿ@ìÿpðÿ @ìÿpðÿ wðÿtê_$)@ìÿ0þùÀAAöÿqÿòòA@öÿ0ü@ìÿ0þòA&ø@öÿpÿVôpü@ø@ðÿ0ÿ&ø@öÿpÿVôpü@ø@z ~ f z € æ ‚ î „ ö † ~ ~ 4 X Š  € æ þ ‚ î  „ ö  † ~ ~ f € ~   (6g1.1)("G. Sid. Time:",i3,i3,f7.3)(13x,"rt. asc.",4x,"decl.",7x,"az",7x,"el",7x,"mag")(15x,"az",6x,"el",7x,"mag")IAÚ!¢ÂhŽ=5ú”Äï”CCpC C;Zx—µÔ ó  0 Nµlmm´E@H­»BLžQŒjU=a2|QÚÜ6øqŽQ�ÇCÈal!Ra|@bSî>%»Ê: } 519 574 } beautified p1base page 18 520 577 /* Lexical analysis 521 579 */ 522 580 lex( ) 523 581 { 524 582 1 INT___ bmode, cflag, dflag 525 583 FLOAT_____ red 526 584 CHAR____ c, * ins 527 585 cflag = dflag = iestr = bmode = 0 528 586 next -> length = 0.0 529 587 WHILE_____ (( c = getchar( )) != '$' ) 530 588 { 531 589 2 5�ôÿ@�ôÿ_ ÷ ÞïÀüíõC0üÎðí÷eêíæß ÚÖ _4æØí· ÔíÎmÐí÷ Ìí�5�ôÿ÷ dï@�ôÿ7À¸íõØB0ü÷ªí?À¤íõ�B0ü÷–í5À�í€ 5òÿ@òÿµ òÿÈ•(@òÿµ òÿÈ•d@òÿµ òÿÈ•e=ŠòÿÀ^íõpB0ü÷ PíÀåa ƒ À xÄXÖÖÖlÖÖÖDÎ&í÷e íæíß ÚÖ _4Àíð•(ÀíA�ôÿp�÷ øìÁôì1�Àìì0ŠÀäìõB0üÎØì÷eÒìæ ß ÚÖ _4æÀì· ¼ìÎm¸ì÷ ´ì�5�ôÿ÷ LîW­ôÿu÷œì÷”ìÎ�ì÷eŠìæ†ìß ÚÖ _4Àxìð•(Ànìð•1ædìÎe÷ \ì�5�ôÿW­ôÿ4W­ôÿ2ÀBì0ŠÀ:ìõØB0üÎ.ì÷e(ìæß ÚÖ Îêß ÷ ì act(__np__) { switch(__np__) { } } int g[] {0,2,3,0,1,-1}; int pg[] {0,1,-1}; int r1[] {0,1,1,-1}; int r2[] {0,4,0,-1}; int a[] {0,12290,4097,16384,4099,8194,0,4099,8194,4100 ,8196,0,12289,-1}; int pa[] {0,1,2,1,7,12,-1}; int nterms 4; int nnonter 1; int nstate 5; char *sterm[] { "", "$", "error", "a", "b" }; char *snterm[] { "$accept", "s" }; ðÿ0ÿ@ìÿ0ü@ðÿ0ÿ@ìÿ0ü@ðÿ0ÿ@ìÿ0ü_$)@ðÿAìÿAp@þ5üüÿNðÿß Ö5 Úÿ@òÿfòÿÎe@ìÿ&÷  éÖ þ5üøÿNòÿß ÖõÚÿ@îÿfîÿÎe@ìÿ&÷ néÖ þ5üøÿNîÿß Ö@ÚÿÀÀ5ÚÿföÿÎe@ìÿ0þùÀA~ÿòü@öÿ¬S@öÿ¬P_ @Úÿ__@òÿ0ÿAöÿqÿöùA5üàÿ & fòÿß Z–%& ß Ö 5ÿàÿððð"@öÿ0ÿuÿàÿôÀñ@òÿ0ü & fìÿß Z–%& ß Ö @ìÿ5ÿàÿ0üÎæfìÿß Z–%æß Ö @òÿ0ÿ7ô`Àñ@ìÿ0ü5ÿàÿððð_@öÿ0ÿuÿàÿôÀñ@òÿ0ü æfòÿ IF__ ( c == '\n' ) 532 590 c = getchar( ) 533 591 IF__ ( c == ' ' && ! bmode ) 534 592 CONTINUE________ 535 593 SWITCH______ ( det( c )) 536 594 { 537 595 3 CASE____ 0 :_ 538 596 /* Alphabetic character 539 598 */ 540 599 541 IF__ ( ! iestr ) 542 600 cflag     ÷ @ÎŽAß äõþÿw-þÿš> @þÿÀ ß µ þÿò÷ wÚýf…Æå ÷ ZÎ’Aß ´÷ b΢Aß äõÿÿþÿµ þÿ@þÿÀ- $_ôNþÿß ” @þÿœ_з 4>@þÿÀ 0 @þÿÀ ðrý@þÿÀ 5úÿNúÿß À @þÿ¬Î0fúÿŽ ÷ >ýÖ àß · Ú=¾Núÿµ úÿß 5øÿ3NøÿÎeß Núÿµ úÿß 5öÿÎ0Níöÿß W-öÿÿÎ@ß W-öÿþ ß NöÿÎe ß @þÿÀ ° ÄNúÿß 5öÿÎ0Níöÿß  ß @þÿÀ € 7`6=_L· 2=@þÿÀ 5üÿ@üÿ¬@üÿÀ 5üÿó@þÿÀ AüÿÁ p@üÿÀ € 7`è<_L  ƒÀ xÞx~zèrΤAß ¨ þÿW-þÿYAþÿWp!ñ•d= 0); nextone: if(tbl1 < eotable)goto start; if(*tre1 < 0) /*no new line was found*/ return(-32000); mycount = count; for(a = 32;a;) mycount =- bitpat[a--]; counter = mycount*500/count; /*percentage that are good*/ if(beta > 200 && counter < hiscount) return(beta); return(beta + (counter - hiscount)/(level*cramping)); } / u6 -- unix / read from i-node whose number is in r1 / user's buffer is pointed to by u.base / user's count is u.count / u.fofp points to word with current file offset / u.nread accumulates total bytes passed back readi: clr u.nread tst u.count bgt 1f rts r0 1: mov r1,-(sp) cmp r1,$40. ble 1f jmp dskr / not a special file 1: asl r1 jmp *1f-2(r1) 1: rtty / tty rrk / rk0 rrk / rk1 rrk / rk2 error / unused error / unused error / unused error / unused error / unused rmem / mem rmtap / drl task to run a batch ( standard ) version from tss */ main(){ auto int n; ptime(n=0); initacc(); /* set up tempfile, if needed */ setup(); /* initialize and read productions */ ptime(++n); cpres(); /* make table of which productions yield a given nonterminal */ cpfir(); /* make a table of e free first lists */ cclose(); /* compute closures of nonterminals */ cempty(); /* make table of nontrivially empty nonterminals */ ptime(++n); actout(); /* compute action table */ ptime(+ØØùØùØXhX¨¸ÉØIh¨¸x‰‰¨1. p/k2-k4 1. ... p/k2-k4 2. n/qn1-qb3 2. ... n/kn1-kb3 3. b/kb1-qb4 3. ... n/kb3xp/k5 4. q/q1-kr5 4. ... n/k5-q3 5. b/qb4-qn3 5. ... n/qn1-qb3 6. p/q2-q4 6. ... p/k4xp/q5 7. n/qb3-q5 7. ... p/qr2-qr3 8. n/kn1-kb3 8. ... n/q3-k5 9. o-o 9. ... p/kn2-kn3 10. q/kr5-kn4 10. ... n/k5-qb4 11. r/kb1-k1+ 11. ... n/qb4-k3 12. b/qb1-kb4 12. ... p/kr2-kr4 13. q/kn4-kr3 13. ... b/kb1-q3 14. b/kb4-kn5 14. ... b/q3-k2 15. b/kn5xb/k7 15. ... n/qb3xb/k2 16. n/kb3xp/q4 16. ... n/k2xn/q4 17. b/qn3xn/q5 17. ... p/qb2-qb3 18. p,0); CDTout=open(pdp,1); i=0; while(call[i]=getchar()) i++; if(dn<0||write(dn,call,i)<0) { printf("cannot call\n"); exit(); } else putchar('+'); if(CDTin<0||CDTout<0) { printf("cannot open %s %d %d\n",pdp,CDTin,CDTout); exit(); } for(;;) { if(c=getchar()) onl[ns]=c|getchar()<<8; else break; while((c=getchar())==' '); sta[i=0]=c; while((sta[++i]=getchar())!='\n'); sta[i]='\0'; if(fopen(sta,sinp[ns])<0) printf ("cannot open %s\n",sta); else ns++; } goto idle; off: putCDT(term,nterm); idle: setexit(); if (getNfltpr.ozNeflag€{ecvtObuftop‚{zerxOone€@lss|OgtrBOtenthìOepsilonL>ten BpadŽOdigit1¤Odigit–Oout®OoutoutäOprintf.oôOformpˆ{loopPrjustŠ{gnumxQwidth†{ndfndŒ{swtablPdecimalŒPoctalÒPfloatøPscienQcharacºPstringÄPlogical˜Pprbuf Qspaces�{bufpŽ{exit.o¤Qå®Qretrn.oRgetchr.oRssw.oVRhsw.odRget.o€Rput.oÞRfl· ’÷7 –ÎŠæ„æß J–%Àv¬„· jÎX æR æR ß Œ–%ÎF æ@ æ ß J–%�À>ð•„ F…‡f…¦)w w Nfæß J–%Nfæð ß Œ–%5þÿu-þÿ Î ææß J–%w6f…ÆåÀ7�B 7�= 7�8 Nß ¾5üÿ m@üÿÀ š@üÿÀ ð š `@üÿÀ ¦ß ì5�þÿIõúÿW-úÿ€@úÿp�þÿœÀ% @üÿÀ ¦ß ì5�þÿµ úÿæ@üÿÀ ¦ß ìµ úÿAúÿ1�@úÿ€ 7$ &Î æ(æ$ß J–% ß  Î@�þÿ&æ4ß J–%  Àåÿÿ ƒíÀ x°l„  F…‡f…Æå@ŸAAœWt@P5üÿ5 þÿw-þÿ¦ @þÿÀ 5,_HÎpß Z_HÎvß Z_HÎ|ß Z_HÎ‚ß Z_H@@mþÿ’ß  ÷ ôB$ˆš°µ þÿ™Î ß  w�f…wzDÄeÆå€ÀŸl · f % &&ß  Ö „ñÆe€…‡7 H7 >ׯ>-· 6· 4÷.Ü7 , .÷ÚƒÁÒBÙ üJòd8 o^ fh e c* sþl Ó•-÷ 6 r f÷ ðÿ€Àe0�‡•à •$Á¬“”C~÷ fWtýÿÁEà÷ ðÿ€ÀEøÿÀe0�‡Â€÷ ¤Âv÷ šÆ ƒó‹ÿÿà ù‚&æ ÁPÁàŠ�`wP÷ Dß  ÷ @û·8Ο4· .ß  ø÷ & ÷ Î ß  ÷ ûÖ „w�þ7  ÀŸö· òÀå06 _det"ÄL98jL99D L100V L101h L102†L103ž L104° L105ä L106ö L107¶L108L109ÀL110nL111nL112nL113L114L115TL116žL117L118ÞL120ÆL121L122ZL123pL124†L125¸L126ÐL119Þsswitch L128 L129üL1274L130$L132²L133DL131ÖL134XL135lL136îL137<L138 flash(code); goto loop; } error("Eh?"); } erase() { wvt(2, 01, 01); } flash(c) { char *cp; int sx, sy; if (font) c =| 0100; sx = x-2048; sy = y*3 - 2048; for (cp = fontab; cp>8, sy, sy>>8, 1, 3, c+040, 0); } wvt(n, args) { int *ap, c; ap = &args; while (--n>=0) { c = *ap++ & 0377; write(vtf, &c, 1); } } error(s) char *s; { while (*s) putchar(*s++); putchar('\n'); exit(); } ˜™—–•”“’� /* escape backward */ case 010: escf = 0; goto loop; /* stop */ case 011: error("done"); exit (); /* lead forward */ case 012: leadf = 1; goto loop; /* lead backward */ case 014: leadf = 0; goto loop; /* initialize */ case 000: escf = 1; leadf = 1; rail = 0; mag = 0; font = 0; x = 0; y = 1300; goto loop; default: error("Bad control"); exit(); } /* flash code */ case 00: case 01: code =& 077; if (code==0) exit(); [esc]) x =- 55; dflag = !single[esc]; goto loop; } switch(code&017) { /* control */ /* upper rail */ case 002: rail = 1; goto loop; /* lower rail */ case 001: rail = 0; goto loop; /* upper mag */ case 003: mag = 1; goto loop; /* lower mag */ case 004: mag = 0; goto loop; /* upper font */ case 006: font = 1; goto loop; /* lower font */ case 005: font = 0; goto loop; /* escape forward */ case 007: escf = 1; goto loop; esc; if (x<=0) error("Off left edge"); } goto loop; /* lead code */ case 03: esc = ~code & 037; if (leadf) { y =- esc; if (y<0) { erase(); y = 1300; } } else { y =+ esc; if (y>1300) error("Off top"); } goto loop; /* control, size change */ case 02: if ((code&020) != 0) { /* size */ esc = code & 017; if (esc==15) error("Bad size"); size = sizetab[esc]; wvt(3, 1, 4, size); if (dflag & single[esc]) x =+ 55; if (!dflag & !single0002, /* t */ 0016, /* u */ 0037, /* v */ 0041, /* w */ 0013, /* x */ 0051, /* y */ 0007, /* z */ 0000, /* { */ 0151, /* | */ 0000, /* } */ 0000, /* ~ */ 0000}; /* del */ main() { if ((vtf=open("/dev/vt0", 1)) < 0) { error("No VT"); return; } erase(); loop: code = getchar(); if (code==0) exit(); switch(code>>5) { /* escape code */ case 04: case 05: case 06: case 07: esc = ~code & 0177; if (escf) { x =+ esc; if (x>3383) error("Off right edge"); } else { x =- 0064, /* R */ 0076, /* S */ 0056, /* T */ 0106, /* U */ 0071, /* V */ 0104, /* W */ 0102, /* X */ 0077, /* Y */ 0073, /* Z */ 0134, /* [ */ 0000, /* \ */ 0135, /* ] */ 0000, /* ^ */ 0000, /* _ */ 0000, /* ` */ 0025, /* a */ 0012, /* b */ 0027, /* c */ 0011, /* d */ 0031, /* e */ 0014, /* f */ 0045, /* g */ 0001, /* h */ 0006, /* i */ 0015, /* j */ 0017, /* k */ 0005, /* l */ 0004, /* m */ 0003, /* n */ 0033, /* o */ 0021, /* p */ 0042, /* q */ 0035, /* r */ 0010, /* s */ */ 0110, /* 0 */ 0111, /* 1 */ 0112, /* 2 */ 0113, /* 3 */ 0114, /* 4 */ 0115, /* 5 */ 0116, /* 6 */ 0117, /* 7 */ 0120, /* 8 */ 0121, /* 9 */ 0142, /* : */ 0023, /* ; */ 0000, /* < */ 0140, /* = */ 0000, /* > */ 0147, /* ? */ 0131, /* @ */ 0103, /* A */ 0075, /* B */ 0070, /* C */ 0074, /* D */ 0072, /* E */ 0101, /* F */ 0065, /* G */ 0060, /* H */ 0066, /* I */ 0105, /* J */ 0107, /* K */ 0063, /* L */ 0062, /* M */ 0061, /* N */ 0057, /* O */ 0067, /* P */ 0055, /* Q *//* * Simulate C/A/T on scope */ int x; int y; int rail; int mag; int font; int vtf; int esc; int escf; int leadf; int code; int dflag; char widtab[] { 0, 4, 3, 1, 1, 1, 1, 2, 2, 2, 1, 1, 3, 1, 3, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 3, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 2, 2, 0, 2, 1, 1, 1, 1, 1, 1, 1, 1, 3, 2, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 4, 3, 2, 1 }; int size; char sizetab[] { /* 7, 8, 10, 11, 12, 14, 18, 9, 6, 16, 20, 22, 24, 28, 36; */ 3, 3, 4, 4, 5, 6, 7, 4, 2, 6, 8, 9, 10, 14, 16 }; char single[] { 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0 }; char fontab[] { 0000, /* space */ 0145, /* ! */ 0000, /* " */ 0153, /* # */ 0155, /* $ */ 0053, /* % */ 0050, /* & */ 0150, /* ' */ 0132, /* ( */ 0133, /* ) */ 0122, /* * */ 0143, /* + */ 0047, /* , */ 0123, /* - */ 0044, /* . */ 0043, /* / integer remone, total, primes(51), num(5000) common num data & primes(1), & primes(2), & primes(3), & primes(4), & primes(5), & primes(6), & primes(7), & primes(8), & primes(9), & primes(10), & primes(11), & primes(12), & primes(13), & primes(14), & primes(15) & /2,3,5,7,11,13,17,19,23,29,31,37,41,43,47/ data & primes(16), & primes(17), & primes(18), & primes(19), & primes(20), & primes(21), & primes(22), & primes(23), & primes(24), & primes(25), & primes(26), & primes(27), & primes(28), & primes(29), & primes(30), & primes(31), & primes(32), & primes(33), & primes(34), & primes(35), & primes(36), & primes(37), & primes(38), & primes(39), & primes(40), & primes(41), & primes(42), & primes(43), & primes(44), & primes(45), & primes(46), & primes(47), & primes(48), & primes(49), & primes(50)/ & 53, & 59, & 61, & 67, & 71, & 73, & 79, & 83, & 89, & 97, & 101, & 103, & 107, & 109, & 113, & 127, & 131, & 137, & 139, & 149, & 151, & 157, & 163, & 167, & 173, & 179, & 181, & 191, & 193, & 197, & 199, & 211, & 223, & 227, & 229/ data nprimes/49/ if (ierror(104).ne.0) goto 20 do 10 i = 1,4999 read (5,100) num(i) 10 continue 20 nnum = i-1 print 300, nnum nx = nprimes+1 do 30 j = 2,nx npr = primes(j) if (npr .eq. 0) stop remone = 0 do 40 i = 1, nnum if (mod(num(i), npr) .eq. 1) & remone = remone+1 40 continue ratio = (remone*npr) / float(nnum) xmean = xmean+ratio xvar = xvar + ratio**2 print 200, npr, remone, ratio 30 continue xmean = xmean/nprimes xvar = (xvar/nprimes)-xmean**2 print 400, xmean, xvar 100 format(g1.1) 200 format(i3, i6,2x, f7.3) 300 format(i4, " cpp's"/" p 1(mod p) ratio") 400 format (/"mean ", f7.3, " variance ", f7.3) end [?lb%10000000100*488343494876+xllx]sl ?sbllx 2  1 1 1 1 1 1 1 1 1 1 define dtime(t) t '0' *x/'1'* /f(0f) t = x 0f $(t) *x/'1'* /f(1f) syspot = $(t) ' ' /(return) 1f $(t 'th') *x/'1'* /f(2f) x = $(t 'th') x *p1* 'th' syspot = p1 ' ' /(return) 2f t *p1/'1'* *p2/'1'* syspot = $(p1 '0') dtime(p2) /(return) start Jan = 'january' Feb = 'february' Mar = 'march' Apr = 'april' May = 'may' Jun = 'june' Jul = 'july' Aug = 'august' Sep = 'september' Oct = 'october' Nov = 'november' Dec = 'december' Mon = 'monday' Tue = 'tuesday' Wed = 'wednesday' Thur = 'thursday' Fri = 'friday' Sat = 'saturday' Sun = 'sunday' 1th = 'first' 0 = '0' 1 = '1' 2th = 'second' 2 = '2' 3th = 'third' 3 = '3' 4th = 'fourth' 5th = 'fifth' 5 = '5' 6th = 'sixth' 6 = '6' 7th = 'seventh' 7 = '7' 8th = 'eighth' 8 = '8' 9th = 'ninth' 9 = '9' 10 = 'ten' 10th = 'tenth' 11th = 'eleventh' 12th = 'twelfth' 12 = 'twelve' 13th = 'thirteenth' 13 = 'thir teen' 14th = 'fourteenth' 14 = '4 teen' 15th = 'fifteenth' 15 = 'fif teen' 16th = 'sixteenth' 16 = '6 teen' 17th = 'seventeenth' 17 = '7 teen' 18th = 'eighteenth' 18 = '8 teen' 19th = 'nineteenth' 19 = '9 teen' 20th = 'twentieth' 20 = 'twenty' 30th = 'thirtieth' 40 = '4 ty' 50 = 'fif ty' 30 = 'thirty' bl = ' .' date = syspit l1 date *x* ' ' *y* = x ' ' y /s(l1) date *wday* ' ' *mon* ' ' *day* ' ' *hour* ':' *min* ':' *sec*/f(end) syspot = $(wday) bl syspot = $(mon) $(day 'th') *x/'1'* /s(dsimple) day *p1/'1'* *p2/'1'* syspot = $(p1 '0') ' ' $(p2 'th') bl /(time) dsimple syspot = $(day 'th') bl time dtime(hour) syspot = bl dtime(min) syspot = bl ' and ' dtime(sec) syspot = ' second' bl end syspot = 'thank you' main() { extern fout; fout = open("/dev/cat",1); putchar(0100); /* init */ putchar(0126); /* ps 18 */ putchar(0200); /* esc 127 */ putchar(0200); /* esc 127 */ putchar(0200); /* esc 127 */ prfont(); lead(); putchar(0102); /* upper rail */ prfont(); lead(); putchar(0101); /* lower rail */ putchar(0103); /* upper mag */ prfont(); lead(); putchar(0102); /* upper rail */ prfont(); putchar(0111); /* stop */ flush(); } lead() { putchar(0140); /* 31 */ putchar(0150); /* 23 */ } esc() { putchar(0200); /* 127 */ putchar(0340); } int skips[] {16, 20, 42, 44, 99, 105}; prfont() { int i, j, k, l; putchar(0105); /* lower font-half */ i = 1; /* ch number */ for (j=0; j<3; j++) { for (k=0; k<18; k++) ch(i++); putchar(0110); /* esc backw */ esc(); lead(); for (k=0; k<18; k++) ch(i++); putchar(0107); /* esc forw */ esc(); lead(); } } ch(i) { int j; for (j = 0; j<6; j++) if (i == skips[j]) goto out; if (i==64) putchar(0106); /* upper half */ if (i>=64) i =- 63; putchar(i); out: esc(); } .de hd .po 0 .tl '-''' .po 'sp \\n(m1 .1h 'sp \\n(m2 .ns .. .wh 0 hd .de FT 'sp \\n(m3 .1f 'bp .. .wh -5 FT .de m1 .nr m1 \\$1 .. .de m2 .nr m2 \\$1 .. .de m3 .nr m3 \\$1 .nr x \\n(m3+\\n(m4+2 .ch FT -\\nx .. .de m4 .nr m4 \\$1 .nr x \\n(m3+\\n(m4+2 .ch FT -\\nx .. .m1 2 .m2 2 .m3 2 .m4 2 .de he .de 1h .tl \\$1 \\.. .. .de fo .de 1f .tl \\$1 \\.. .. .he '''' .fo '''' pig = 0 ldfps = 170100^tst / .if pig sys nice .endif ldfps $240 / begin: mov $1,r0 sys gtty; rathole bes 3f mov $1,r0 sys write; 1f; 2f-1f 3: .if pig sys nice .endif .data rathole: .=.+6 1: 2: .even .text / again: jsr r5,atof; getch .if pig sys nice .endif / tstf fr0 cfcc bpl 9f; jmp ouch; 9: bne 9f; jmp ouch; 9: cmpf big,fr0 cfcc bgt 9f; jmp ouch; 9: / divf $two,fr0 modf $one,fr0 movf fr1,fr0 mulf $two,fr0 addf $one,fr0 movf fr0,nn / 1: movf nn,fr0 movf fr0,n jsr r5,sqrt movf fr0,v mov $tab+2,r4 / movf n,fr0 movif $3,fr1 jsr r5,xt beq 2f movf n,fr0 movif $5,fr1 jsr r5,xt beq 2f / movf n,fr0 movif $7,fr1 jsr r5,xt beq 2f movf n,fr0 movif $11.,fr1 jsr r5,xx bne again 2: movf nn,fr0 addf $two,fr0 movf fr0,nn br 1b / / xt: movf fr0,fr2 divf fr1,fr2 modf $one,fr2 movf fr3,fr2 mulf fr1,fr2 cmpf fr2,fr0 cfcc rts r5 / xx: movf fr0,fr2 divf fr1,fr2 modf $one,fr2 tstf fr2 cfcc bne 9f; rts r5; 9: / movif (r4)+,fr2 addf fr2,fr1 cmp r4,$tabend blo 1f mov $tab,r4 1: / cmpf v,fr1 cfcc bge xx movf n,fr0 jsr r5,ftoa; wrchar mov $1,r0 sys write; nl; 1 .if pig sys nice .endif tst pc rts r5 / xy: movf fr0,fr2 divf fr1,fr2 modf $one,fr2 movf fr3,fr2 mulf fr1,fr2 cmpf fr2,fr0 cfcc bne 9f; rts r5; 9: addf $four,fr1 cmpf v,fr1 cfcc bge xx movf n,fr0 jsr r5,ftoa; wrchar mov $1,r0 sys write; nl; 1 .if pig sys nice .endif tst pc rts r5 / / / get one character from the console. / called from atof. / getch: clr r0 sys read; ch; 1 bec 9f; sys exit; 9: tst r0; bne 9f; sys exit; 9: mov ch,r0 rts r5 / / / write one character on the console / called from ftoa. / wrchar: mov r0,ch mov $1,r0 sys write; ch; 1 rts r5 / / / read and convert a line from the console into fr0. / atof: mov r1,-(sp) movif $10.,r3 clrf r0 1: jsr r5,*(r5) sub $'0,r0 cmp r0,$9. bhi 2f mulf r3,r0 movif r0,r1 addf r1,r0 br 1b 2: cmp r0,$' -'0 beq 1b / mov (sp)+,r1 tst (r5)+ rts r5 / / / replace the f.p. number in fr0 by its square root / sqrt: movf r0,r1 / a tstf fr0 cfcc beq 2f bgt 1f sec rts r5 / sqrt(-a) 1: seti movf fr0,-(sp) asr (sp) add $20100,(sp) movf (sp)+,fr0 movif $2,r3 / constant 2 mov $4,r0 1: movf r1,r2 divf r0,r2 addf r2,r0 divf r3,r0 / x = (x+a/x)/2 dec r0 bgt 1b 2: clc rts r5 / / ftoa: mov $ebuf,r2 1: movf fr0,fr1 divf $ten,fr1 movf fr1,fr2 modf $one,fr2 movf fr3,-(sp) mulf $ten,fr3 negf fr3 addf fr0,fr3 movfi fr3,-(r2) movf (sp)+,fr0 tstf fr0 cfcc bne 1b 1: mov (r2)+,r0 add $60,r0 jsr r5,*(r5) cmp r2,$ebuf blo 1b tst (r5)+ rts r5 / buf: .=.+38. ebuf: / / / / complain about a number which the program / is unable to digest ouch: mov $1,r0 sys write; 1f; 2f-1f jmp begin / 1: 2: .even / / one = 40200 two = 40400 four = 40600 five = 40640 six = 40700 ten = 41040 / .data big: 056177; 177777; 177777; 177777 nl: <\n> sp5: < > .even / tab: 10.; 2; 4; 2; 4; 6; 2; 6 4; 2; 4; 6; 6; 2; 6; 4 2; 6; 4; 6; 8; 4; 2; 4 2; 4; 8; 6; 4; 6; 2; 4 6; 2; 6; 6; 4; 2; 4; 6 2; 6; 4; 2; 4; 2;10.; 2 tabend: / / .bss ch: .=.+2 t: .=.+8 n: .=.+8 v: .=.+8 nn: .=.+8 .text int g[ ] { 0, 32, 39, 38, 46, 0, 1, 0, 2, 6, 19, 15, 24, 16, 25, 22, 31, 32, 40, 38, 47, 42, 52, 43, 53, 62, 69, 0, 3, 17, 26, 0, 4, 10, 21, 14, 23, 18, 27, 45, 54, 49, 58, 55, 64, 60, 68, 66, 71, 67, 72, 70, 74, 0, 5, 0, 9, 0, 29, 0, 11, 0, 12, 0, 13, - 1 } ; int pg[ ] { 0, 1, 7, 9, 29, 33, 55, 57, 59, 61, 63, - 1 } ; int r1[ ] { 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 10, 10, 10, 8, 9, 6, 6, 6, 7, 7, - 1 } ; int r2[ ] { 0, 1, 1, 3, 3, 3, 1, 3, 1, 3, 1,d     ÿþýüûúùø÷öõôóòñðïîíìëêéèçæåäãâáàßÞÝÜÛÚÙØ×ÖÕÔÓÒÑÐÏÎÍÌËÊÉÈÇÆÅÄÃÂÁÀ¿¾½¼»º¹¸·¶µ´³²±fL139lL140„L10014ºL141äL142ðL143êL144ôL145.L146L147ZL148ZL149ZL150ZL151ZL152ZL153ZL154‚L10015¸L155ÄL156L158jL159ÊL157„L160ÞL161òL1622L163bL164ÄL165úL166 L167$L169²L170DL171DL168ÊL172fL173ˆL174ÌL175äL176L177ôL178 960 27 CASE____ '^' :___ 961 28 RETURN______ ( 10 ) 962 29 CASE____ ',' :___ 963 30 RETURN______ ( 12 ) 964 31 DEFAULT_______ : 965 32 RETURN______ ( 11 ) 966 33 1 } 967 34 } ,10,20,40,100,200 / test access to file whose i-number / is in r1 / argument following call is 2 for read, 1 for write / jump to error if bad / super user can access all files access: jsr r0,iget mov i.flgs,r2 cmpb i.uid,u.uid bne 1f asrb r2 asrb r2 1: bit r2,(r0)+ bne 1f tstb u.uid beq 1f jmp error 1: rts r0 / mark current inode (ii) modified setimod: mov s.time,i.mtim mov s.time+2,i.mtim+2 dsetimod: movb $1,imod rts r0 / find the byte in core containing the / allocation bit for a gived"_close"F_execl"^_exit"v_fork"z_open"†_wait"€_read"š_seek"P_write"¨_errexit":_errsp _addd"_lcmp" one4success0fail*doneLsetup¶e1pe2rrtnv‚op1”op2–pagehdr²cvtdsröUAŸþÿH�µ þÿ—@îÿ'@úÿµ úÿ’5ôÿ@òÿ0Š2P@úÿµ úÿ’p�ðÿ2P@ôÿõ ôÿÀ @úÿµ úÿ’Aúÿµ úÿA’p�2PíJõ ìÿ@öÿµ öÿAúÿµ úÿA’H�@�5ôÿ@òÿ0Š2P@öÿµ öÿAúÿµ úÿA’H�@�p�ðÿ2P@ôÿõ ôÿÀ @öÿµ öÿAúÿµ úÿA’H�@�Aöÿµ öÿBúÿµ úÿ‚’‰���p�2Pá@öÿµ öÿAúÿµ úÿA’H�_– wöÿøT@ìÿF…‡f…ÆåDµ ÀÞT5öÿ5øÿ@öÿµ öÿÈ•ÿÿÀÄT5üÿ5þÿ@Àe¾ÿ@Àeâÿ&5õ 7÷¨Tð& æß ¼ –%5ìÿ@ìÿ 7 3AWpÈÁeè†@_¼@ìÿ@ìÿ @ìÿþuÿ ò5ü @ìÿ 5õ 7÷º2ð÷ôÌ2÷ ê_¼õ0Túÿ@õ õƒàÿwöÿT7õ†2&øæÿÿæƒæƒ÷ Æe&Àrtain women in technical positions, the need for better educational opportunities for technical women in Area 10, discrimination against older women, and poor relations with supervision. Finally, several women also made a point of mentioning that they were happy with their jobs and felt they were being treated fairly. .sp 1 IV. INTERPRETATION OF RESULTS .sp 1 .ti 5 In this section we summarize four broad areas of concern to women at Murray Hill: education, relations with supervision, recruiting and advancT  – 6 ˜ – F 6 F 6 – F ˜ – X $ž\ – ˜ T  T  š ˜ ˜ 6 \ š ˜ ˜ š 6 \ œ š š – > ` h p  H N N ¶ N t | „  H & & ¶ & . Î Œ ” ö ö ¶ ö œ ¤ Ö Ö ¶ Ö ¬ ´ î î ¶ î ¼ Ä Þ Þ ¶ Þ Ì Ô p(1); for(bp=0;inbuf[bp]==SYN;bp++); parity=0; dump("I:",inbuf,nr); if(inbuf[bp]==ENQ) { bp++; write(CDTout,lbuf,lcnt); dump("O:",lbuf,lcnt); } else break; } inbuf[nr]=DEL; return(0); } putCDT(buf,cnt) char buf[]; int cnt; { int nx; lbuf=buf; lcnt=cnt; dump("O:",buf,cnt); nx=write(CDTout,buf,cnt); if (nx0) { swait[i]--; return(0); } switch(c=getc(sinp[ of production */ if( i != 0 ){ *mem++ = -nprod; if( nprod >= maxprd ) error( "too many productions, limit %d", maxprd ); prdptr[++nprod] = mem; levprd[nprod] = 0; i = 0; } if( c == '|' ){ /* new production derives same nonterminal */ i = 1; *mem++ = *prdptr[nprod-1]; } goto circ; case '%=': if( gettok() != 'n' )error("illegal %= syntax"); c = chfind(0); /* get the terminal */ if( c >= 010000 ) error("nonterimal illegal after %=" case 2: i = dfile(curf+1); put(i,curf+1,curfl-1); if(cross) put(i,curs,cursl); else { conf(lno,4,curs); put(i,curs,5); } if((ct = temp[t1].ct) >= 8) { put(i,temp[t1].beg,8); put(i,&mone,1); } else { put(i,temp[t1].beg,ct); put(i,"\t",1); } break; case 3: i = dfile(curs); put(i,curs,cursl); if((ct = temp[t1].ct) >= 8) { put(i,temp[t1].beg,8); *curf = -1; } else { put(i,temp[t1].beg,ct); *curf = '\t'; * ins ++= '|' 624 684 * ins ++= '\\' 625 685 * ins ++= '(' 626 686 * ins ++= 'm' 627 687 * ins ++= 'i' 628 688 * ins ++= '\\' 629 689 * ins ++= '|' 630 690 * ins = '\0' 631 691 next -> length = LTAB( c, 1 ) 632 692 3 } 633 693 ELSE____ opplace( Ú ÀÖ H�wúüf…wâ ÷ ü  ‰ ‡À À�î ÀEÿôw ²‡À ú 7 ® wºü„ ”rà eÃÂÀ$üJ\€�6rw¢‡€�6r@‡f…w¤w ‰(†wZüw^üf…@wˆw„‰.†w8üw<üfA7r‰4‡ �…Éÿÿ�±…fAñ @Àe7l1@‰Z‡À �±…À 1 @Þ± �…fA7@‰`‡  �…Ñÿÿ�±…fAñ &÷ €ø9�± �…&fA÷ �€…@Àe&7 w·ã@‰‚±ñ‡°¶¼/dev/dn0cannot call cannot open %s %d %d cannot oÈëìí  ¼í 'T', 'P', 'N', 'N', 'R', 'R', 'Q', 'Q', 'P', 'N', 'T', 'T', 'O', 'O', 'T', 'T', 'D', 'D' , 'G', 'G', 'T', 'S', 'S', 'S', 'Z', 'Z', 'U', 'Q', 'R', 'Q', 'M', 'M', 'W', 'W', 'S', 'R', 'I', 'J', 'S', 'S', 'S', 'S', 'S', 'P', '[', '[', 'S', 'O', 'S', 'O', 'O', 'O' 24 38 } beautified p1base page 2 25 40 STRUCT______ adjust 26 41 { 27 42 1 CHAR____ escape[ 4 ], unit 28 43 FLOAT_____ value 29 44 INT___5 þÿ föÿ@Àeøÿ&ß F!–%ÃÎÿÿföÿ@Àeøÿ&ß F!–%Àå ƒ À x4 ØÈD ìD D D ¥Î ß a F…‡f…æ @(6Î ß Ø#Nß <)Îß Ø#NÎEÿß H;@tøÿß H;Îß Ø#Îfß ;Ö  ƒÀ x f x œ d Î2eß º F…‡f…æ @Îß Ø#Nß ¸;!$Îß Ø#Nß H;Îß Ø#Îfß ;Ö  ƒÀ x0!ä ø !ö Î6eß º F…‡f…¦)@K@ÎÎß Ø#Nfß "Ö D@Î Îß Ø#uþÿ@ÀÀ5@ @þÿµ þÿ’ß H;õ ò!@ÎÎß Ø#Nfß \Ö  ƒrgp = argp*radian mrad = 5.202803 mnom = 225.22165d0 + .0830912d0*eday - .0484*capt mnom = dmod(mnom,360.d0)*radian enom = mnom + ecc*dsin(mnom) 42 dele = (mnom - enom + ecc * dsin(enom))/(1. - ecc*dcos(enom)) enom = enom + dele if(dabs(dele) .gt. 1.e-7) go to 42 vnom = 2.*datan2(dsqrt((1.+ecc)/(1.-ecc))*dsin(enom/2.),dcos(enom/2.)) olong = vnom + argp rad = mrad*(1.d0 - ecc*dcos(enom)) noded = olong - node r = datan2(dsin(noded)*dcos(incl),dcos(noded)) - noded long = olong + r sl = dsin(incl pliv 30 45 } 31 47 STRUCT______ adjust madjust[ 100 ], * fadjust 32 48 CHAR____ greek[ ] 33 49 { 34 50 1 'O', 'N', 'N', 'J', 'I', 'P', 'N', 'J', 'D', '7', 'L', 'M', 'P', 'K', 'K', 'R', 'O', 'R' , 'K', 'L', '7', 'P', 'N', 'I' 35 51 } 36 53 STRUCT______ enode 37 54 { 38 55 1 CHAR____ estr[ 20 ] 39 56 FLOAT_____ length 40 57 } 41 59 STRUCT______ etree 42 60 { 43 61 1 INT___ type, ptsz 44 62 STRUCT______ enode * strl, * strr 45 63 STRUCT______ etree * lpnt, * cpnt, * rpnt, * bpnt 46 64 STRUCT______ adjust * perturb, * restore, * xstore 47 65 FLOAT_____ hsz, htsz, hbsz 48 66 } 49 68 STRUCT______ etree tree[ 100 ], * ttop 50 69 CHAR____ * cur, * aladjust( ) 51 70 FLOAT_____ vert( ) 52 71 CHAR____ * lcase, * ucase 53 72 STRUCT______ estack 54 73 { 55 74 1 INT___ state 56 75 STRUCT______ enode * pstr 57 76 STRUCT______ etree * node 58 77 } 59 79 STRUCT __[___ estack stack[ 20 ], * stop beautified p1base page 3 60 80 INT___ inode, * bg, * ba, potsz, iestr, tweek 61 81 STRUCT______ enode llist[ 100 ], * next À 3@Üÿ.@âÿ#@üÿ@mâÿœÀEÿ5ÞÿÀ%ü@Þÿ_$u-Þÿàÿ@üÿ@mâÿð•ÿÿuÞÿâÿÞòNàÿfÖÿß ŒÖ _$µ æÿ©@âÿ@úÿp�àÿH@îÿ@íäÿ5æÿuîÿæÿ@æÿ5@æÿ@mÚÿÀ%®uæÿìÿNæÿ@ÚÿÀ &NmúÿÎefÖÿß º–%@Úÿ@mæÿÀ @múÿ,ÿÿNìÿ@ÚÿÀ &NmúÿÎefÖÿß V–%� @æÿ 5æÿu-æÿÚÿuÚÿæÿ@æÿNæÿ@Úÿ@íæÿÀ &NmúÿÎefÖÿß V–%_&5 ÜÿÀÀètùÿ5ðÿÀ´èt 5òÿ@úÿÀeI5Ôÿ@úÿœHÀEÿ5âÿ@Àeðÿfß Ö À _$Núÿß F5æÿ fß â!Ö @íæÿ5îÿ@îÿ_&AæÿÀ r 5ÚÿAæÿÀ r uØÿ@ÚÿÀ&èÀ è5àÿ@îÿ@mØÿ5æÿ 62 82 main( ) 63 83 { 64 84 1 CHAR____ c 65 85 init( ) 66 86 potsz = 0 67 87 WHILE_____ (( c = getchar( )) != '\n' ) 68 88 potsz =( potsz * 10 ) + c - '0' 69 89 lex( ) 70 90 slide( ttop ) 71 91 twalk( ttop ) 72 92 } 73 93 pontr( w, p, s ) 74 94 INT___ w, p, s 75 95 { 76 96 1 SWITCH______ ( w ) 77+Qd¾ÁÂÃÆŸšÍÎ×èé÷Ïö µî $ýªBDGRTim{~‚– ˜ Ö Ø ì "t» %“ XÕ*c�Ón þñ ì¾ ? � ½Ü'= & >»Øÿ²–ò†  ð€&Ð 6÷ –% ‰/dev/dp0f…ÆåW-@5þÿõþÿÎæºß |Ö 5èÿ fþÿß |Ö 7*Îfþÿß |Ö 75 êÿfêÿÎeÂ÷ x �µ êÿõ@èÿ NêÿæÂfèÿß š–%À ÎÄß h÷ j Î+ß , ÀÈÀÀκæ¸fþÿæÒß hÆe÷ 8 ÷  5�üÿ ÷  t@ÝüÿÁ˜Á 1¤?÷ ì 5�üÿÀ% ø 5êÿ@aA�üÿp�ìÿµ êÿfêÿ@Àeìÿ`÷ ¼ �À% ñ@êÿ@a0ŠìÿÀBÀ ´@Àeìÿ&ß ÔÖ À @Àeìÿæèß hÖ · ¯Îæœß \Ö ÷  Îß |À Îæüæøß J–%î÷ @À%éÀÊ· Ƭ”á÷ &7�Í 7�Á 7�¨÷ 7�üÿùAîÿqÿwôò@ìÿ0ü_\&õ€@AðÿAqÿö@îÿ0ü@îÿõ€À0ü5ÿøÿuÿüÿùAîÿqÿWô€@ò@ìÿ0üwW/îÿs@îÿ¬\k5ÿøÿuÿüÿù÷ @ð2@îÿ0ÿ7ö�AðÿAqÿö@îÿ0ü@îÿ0ÿ7örÀñ@îÿ0ü5ÿøÿuÿüÿùAîÿqÿwöVò@ìÿ0ü_L'@îÿ0ÿ7ôDAðÿAqÿö@îÿ0ü@îÿ0ÿ7ô&Àñ@îÿ0ü5ÿøÿuÿüÿùAîÿqÿwö ò@ìÿ0ü@òÿ0ÿAìÿqÿôAìÿqÿô@ìÿ0ü@îÿ0ÿAðÿAqÿ@÷ð @îÿ0ÿ5üèÿ$@ðÿ0ÿ5üèÿ æfîÿß Z–%& ß Ö 5ÿèÿAîÿAqÿö@îÿ0ü@òÿJÛ]n ÆrÖ 6Å�âXÈŒ„@ËüÈ/ w �j”ÑÑm ítOŸÊ Ñ ` ª ÒÁ Íôÿæ¾Bß ´Æe_‚u-ðÿîÿ@ðÿ@ðÿ @-öÿ @ðÿ fþÿŽ ß Ö (@þÿÀe5üÿ@öÿNüÿµ üÿß 5öÿfþÿµ þÿß Ö Nüÿµ üÿß fþÿµ þÿß Ö Þ_ wvïf…¦)õ.þÿ÷..@þÿF…‡f…æ ÷ò-î-wHïf…ÆåÎêBß ´÷4ï2ïõüÿw-üÿÄ/_H5 þÿw-þÿ¶/@þÿÀ 0 µ þÿô7 ï5 þÿw-þÿž-_(@þÿÀ Àe5úÿ@úÿ_ @úÿõeúÿ"_Núÿfüÿß ‚Ö À f5 øÿw-øÿNúÿÎeþÿføÿß ®Ö À NúÿÎeþÿføÿß &Ö µ øÿå@þÿÀ Àe@-úÿ?@þÿÀ 5òÿ5 øÿw-øÿª2@øÿÀ 5öÿ@øÿÀ 5ôÿu-öÿôÿ†@öÿõeöÿ5ðÿÀ%meoutC:line inactiveI:O:O:C:write errorC:end of testC: %s %sSOH STX ETX EOT ENQ ACK NAK DLE DC1 DC2 SYN DEL ¬ÐÜ”¸è  Äô‰f·€·w Öý†Àÿÿ …7 î‡f·æ·w Òý†Àÿÿ7 Ð…‡‰‰‰www ˜ý†…&w ŒýÀ€U…‰‰¶w w&w Êý€Àw Àý…‰ RETURN______ 96 119 1 } 97 120 } 98 121 iccheck( al, bl ) 99 122 INT___ al, bl 100 123 { 101 124 1 INT___ bm 102 125 IF__ ( al || bl ) 103 126 { 104 127 2 bm = bl + 13 105 128 next -> estr[ iestr ] = '\0' 106 129 parse( bm, next ++ ) 107 130 1 } 108 131 RETURN______ 109 132 } 110 133 dvnc( ) 111 134 { 112 135 1 next -> estr[ iestr ++ ] = '\\' 113 136 next -> estr[ iestr ++ ] = '|' 114 137 next -> estr[ iestr ++ ] = '\0' 115 138 RETURN______ 116 139 } 117 140 advnc( ) 118 141 { 119 142 1 next -> estr[ iestr ++ ] = getchar( ) 120 143 next -> estr[ iestr ++ ] = '\\' 121 144 next -> estr[ iestr ++ ] = '|' 122 145 next -> estr[ iestr ] = '\0' 123 146 RETURN____H$)&H#H$%X$8#H#H$H$8#H#8#X$X$H$ .48, TC = . 26, significance level = .05). .sp 1 .ti 5 E. Working Hours .sp 1 .ti 5 Since .96 of the sample reported they work full time there is insufficient data to report in hours worded by part time employees. Interest in part time work in the future was indicated by .49 of the sample; .12 reported interest now. Interest in part time work is related to age: .36 of those over thirty reported some interest in part time work, while .70 of the younger women reported such interest. .sp 1 .ti 5 F. Children¨X0.zx_0c31rc32zc33"c34‚c35.yy_8c36Šc37’c38"zy_@c39šc40¢c41"zz_Hdxm_dym_dzm_output. c42örewi retrn baseªsun.ooànù¶è#¨    $ ,   4 < D  H . – . ˜ L š – ¶ . .  – . ˜ – 6 . 6  – 6 ˜ – & (board[49]== -1 || board[49-8]== -1)) i =+ 40; if(wkpos==62) if(board[53]== -1 && (board[54]== -1 || board[54-8]== -1) && (board[55]== -1 || board[55-8]== -1)) i =+ 40; return(i); } /* * prance * a percentage if the * piece on the move * can be driven back * by a smaller piece */ wheur4() { int *p1, *p2, ploc, i; if(lmp[-1] != 1) return(0); ploc = lmp[-3]; if(board[ploc] == -1) return(0); if(xheur(ploc)) return(0); p1 = lmp; p2 = p1; bagen(); i = 0; while(p2 != lmp) { ot2)||!valid()) putCDT(sidnak,nrep); putCDT(sidack,nrep); } else putCDT(sidnak,nrep); goto res; default: goto idle; } } char next() { char c; c=DEL; for(;bp=limit) return(1); else sleezÁ|Á€8^++:~>ÀŠtcoreAiÆcore¬pžÿlZ€Z€rÜÁÞÁÀÁÌÁ<úÁà   èÊ4 ÿÈ ÿŽÁŽÁ@|Á–'­r6èÊ4 ÿ ÿšÁetd§†Hø¢ÁdM§§ÊÁ@ ªÁØo0Ûp©¦ 0Õœ¡¾ÕØoÔÁ¶#ºqºqxFÞÁî"ÞÁ èÁªE Zæÿ@*æÿæ0Zð.ll 2i .ps 9 .vs 10p .sp .6i .ti 1.5 Wharton was indicted last week after several persons testified to a grand jury that they were falsely listed as contributors to the affair. Lankler has said that the deception was designed to make the affair, which featured such standouts as Bob Hope and Frank Sinatra, appear more successful than it was. .ti 1.5 The loan was repaid to CRP stamped in English: ``Made in the People's Republic of China.'' .sp .2 .ft I .tl '''Atlanta (Ga.) Constitution' __ 124 147 } 125 148 /* beautified p1base page 5 Goto Table 126 150 */ 127 151 tabto( pr, s ) 128 152 INT___ * pr, s 129 153 { 130 154 1 IF__ ( * pr ==( s - 1 ) || * pr == 0 ) 131 155 RETURN______ ( *( pr + 1 ) + 1 ) 132 156 ELSE____ 133 157 RETURN______ ( tabto(( pr + 2 ), s )) 134 158 } 135 160 tp( n ) 136 161 INT___ n 137 162 ZDd¸[Zˆâ[ZTd¸[ž[N]°j]°N®j¸[ª[Z˜â[N]®jZ6æ³@<î</„ @¾‰B;ßV?A¢@åÐ?$P?`å‹>•CaFB(\ @V¸>ëQ^dN]²jþYš^´j] N²jZž´Z6[Ò\ZzZ¢þYŠ~OR]„þYbdv]0 ) printf(" shift %d*n", j1 ); else printf(" reduce %d*n", -j1 ); /* do errors in here someday .... */ $) if( lastred ) printf(" . reduce %d*n*n", lastred ); else printf(" . error*n*n"); ret: settmg(); } writem(pp){ /* writes item pointed to by pp */ extrn prdptr, trmset, nontrst; auto ch,p,j; for( p=pp; *p>0; ++p ); p = prdptr(/-*p/); printf("%v -> ",*p); loop: putchar( (++p==pp)?' ^ ':' ' ); if( (ch = *p) <= 0 ) return; printf( "%v", ch ); goto loop;xm = rads*cos(longs) ym = rads*sin(longs)*cos(obliq) zm = rads*sin(longs)*sin(obliq) c print 105, xm, ym, zm 105 format("mean xyz-sun:",3f11.6) xjunk = longs/radian n1 = xjunk n1 = mod(n1,360) xjunk = amod(xjunk,1.) xjunk = xjunk*60. n2 = xjunk xjunk = amod(xjunk,1.) an3 = xjunk*60. c print 102, n1, n2, an3, rads 102 format(i4,i3,f5.1,f12.6) return end p@œšlÀEÿ5þÿW-þÿÀÎ eß º Àÿÿ(W-þÿ@NþÿfÎe�lß ˜9Ö 5@Îeß º Àÿÿ@@mþÿÀe5@ p F…‡f…¦)u- @ÀÿÿOÀ?@œšl5þÿ@þÿÀE?ÿÀ%@õEÀÿþÿu-þÿ @þÿ@@mþÿAAmþÿ1¢šlõ þÿï@þÿNfß ÎÖ Nß 25õ @Àÿÿ¾Nf ffß NÆeF…‡f…Æå@œšl5þÿ@þÿtúÿ5üÿõEÀÿþÿ@üÿ@@mþÿÀe.@üÿ@@mþÿ€ %W-üÿÿÿ@þÿW-þÿÀÀ@mõe@þÿ Nß 25õ þÿô@F…‡f…Æå@œšl5üÿ@üÿtúÿ5þÿõEcc=0; for(i=0;idabs. n4_Bc8˜c9 n5_Fc10˜c11 an6_Jc12ši4r4 rlt4 lif2 ing4 gst_Dwlong_lha_înlat_dsin. )); p1 = p2 = lmp; wgen(); if(p1 == lmp) return(3000); pvp++; ply++; qsort(p1, lmp); v1 = 3000; while(p2 != lmp) { if(intrp) goto out; p2++; wmove(*p2); if(battack(wkpos)) { v2 = bplay1(v1); if(v2 < v1) { v1 = v2; use(pv, *p2); } } wremove(); if(v1 <= ab) goto out; p2++; } out: pvp = pv; ply--; lmp = p1; return(v1); } wquies(ab, v) int ab, v; { int *p1, *p2, *p3, v1, v2, *pv; pv = pvp; *pvp =0; if(ply >= qdepth) return(v); p1 = p2 = p3 = lmp; wgen(); whi])) { case SOH: case STX: for(j=3;j>4)+3; dl[0]=(drive<<13)|(l/10+1); dl[1]=l%10; if ((s=sap[drive])!=0) { setdskl(s,&dl[2]); if((dl[3]!=dl[1])||(dl[2]!=dl[0])) { unlock(s); sap[drive]=0; } else return((sap[drive]=pageloc(s)+((lc<<4)&0360))); } if ((s=fetch(8,dl))==0) return(0); return((sap[drive]=s+((lc<<4)&0360))); } int locsctlc(drive) int drive; { extern struct dvlabel *dlabel[]; extern int m1b10[],m2b10[],*sap[]; struct dvlabel *d; int list[8],i,n,k,j,lc,trk,*s; d=dlabel[drive]; redo { 138 163 1 SWITCH______ ( n ) 139 164 { 140 165 2 CASE____ 3 :_ 141 166 CASE____ 4 :_ 142 167 RETURN______ ( 5 ) 143 168 CASE____ 33 :__ 144 169 CASE____ 10 :__ 145 170 RETURN______ ( 13 ) 146 171 CASE____ 11 :__ 147 172 RETURN______ ( 14 ) 148 173 CASE____ 5 :_ 149 174 RETURN______ ( 3 ) 150 175 CASE____ 7 :_ 151 176 RETURN______ ( 4 ) 152 177 CASE____ 25 :__ 153 178 RETURN______ ( 8 ) 154 179 CASE____ 26 :__ 155 180 RETURN______ ( 7 ) 156 181 CASE____ 28 :__ 157 182 RETURN______ ( 9 ) 158 183 CASE____ 29 :__ 159 1ðÿ²ÿBöò@ìÿ0ü]W/ðÿY@ðÿ¬\Q5ÿøÿuÿüÿù÷ @ð%5ÿüÿuÿøÿùAðÿqÿô7önÀñ@ðÿ0ü5ÿøÿuÿüÿùAðÿqÿwöRò@ìÿ0ü_¾$5ÿüÿuÿøÿùAðÿqÿô7ö4Àñ@ðÿ0ü5ÿøÿuÿüÿùAðÿqÿwöò@ìÿ0ü@îÿ0ÿ7÷ ð_ä$@îÿ0ÿðð_š%5ÿøÿuÿüÿù÷ @ð)7õâAðÿAqÿö@îÿ0ü@îÿ7õÄ0ü5ÿøÿuÿüÿùAîÿqÿwô²ò@ìÿ0ü_–%7õ¨AðÿAqÿö@îÿ0ü@îÿ7õŠ0ü5ÿøÿuÿüÿùAîÿqÿwôxò@ìÿ0ü_L'W/îÿW/îÿZ5ÿøÿuÿüÿù÷ @ð)7õLAðÿAqÿö@îÿ0ü@îÿ7õ.0ü5ÿøÿuÿ¾ 7�² 7�™÷ 7�Ž÷ þÀ%ÈÀ�€_êÎ’ß ´À 17 p×-l+Înæß \Ö 7 X×-TÎß |À Îæ–ß \Ö · .ê×-(÷ ŽÀ%· Ñ…Î’ß ¾À !Îæ¤ß \Ö Îß |À ÷ hÀ Îæ¬ß \Ö îÎæ¤ß \Ö Îæ¬ß \Ö _À_œ Àå ƒ÷À xü„wôf…¦)õ•þÿ÷-„„À|¬” Àp· lœ”5�þÿ· ^êW­þÿ ×-X÷ n÷H7 Bõµ€þÿ÷6@�þÿÀE€ÿF…‡f…¦)5 þÿÎ€æ”æü ß † –%7þ"ÀøÎ ææß J–%Îß Ð µ þÿµ þÿ@þÿ@-À?Îß Ð Ò7 ²À®¬”· ¢÷7 ¦Îšæ”æß J–%À†¬”· zÎh æb æb ß š–%ÎV æP æß J–%�ÀNð•” F…‡f…¦)w w Nfæß J–%Nfæ ß š–%5þÿu-þÿ Î æ&æ"ß J–%wDf…ÆåÀ7�R 7�M 7�H Nß ¾5üÿ m@üÿÀ ª@üÿÀ ð ª `@üÿÀ ´ß ü5�þÿIõúÿW-úÿ€@úÿp�þÿœÀ% @üÿÀ ´ß ü5�þÿµ úÿæ@üÿÀ ´ß üµ úÿAúÿ1�@úÿ€ 74 &Î æ6æ2ß J–% ß " Î@�þÿ&æBß J–%  Àåÿÿ ƒíÀ x°l„  F…‡f…Æå@ŸAAœWt@P5üÿ5 þÿw-þÿ¶ @þÿÀ 5,¤üÿµ þÿòw-þÿš Àÿÿ@þÿF…‡f…Æå 5�øÿ5üÿ5þÿ5 úÿw-úÿd _@@úÿµ úÿœ”5�öÿX_<@üÿ@þÿ _Dõüÿh@þÿ gõþÿ@üÿ @�öÿ&@�øÿx€5�øÿS@úÿ¬”÷  L@�öÿ&@�øÿx€5�øÿ@úÿ5¬”øÿ@þÿÀ7 5 3õµ€öÿ -@�öÿ&@�øÿx€5�øÿÀå ƒêÀ xRl¬ÚÚÚÞÞÞÞÞÞÞÞÞ–ÞÞÞÞÚN_0 F…‡f…Æå@Àeúÿß Þ @Àeêÿ@Àeúÿ&ß : Ö @ÀeêÿfæFß h–%5 þÿu-þÿc@@mþÿ’RÎPß h_VÎVß h_VÎ\ß h_VÎbß h_VÎhß h_VÎnß h_VÎtß 343 CASE____ 10 :__ 344 382 /* identifier 345 384 */ 346 385 347 CASE____ 11 :__ 348 386 /* numeric constant 349 388 */ 350 389 ( stop - 1 ) -> node = alcopy( tp( red ),( stop - 1 ) -> pstr ) 351 390 BREAK_____ 352 391 CASE____ 34 :__ ˆ˜ˆhˆ˜ˆhˆ˜ˆhˆ˜ˆhˆ˜ˆhˆ˜ˆhˆ˜ˆhˆ˜ˆhˆ˜ˆhˆ˜ˆhˆ˜ˆ(H(h(h(h(h(h(HhȈˆèøˆ(Hˆ(ˆ(ˆ(ˆ(ˆ(ˆˆXˆxˆˆXˆ¨¸ˆÈ¸ˆ¸(èˆèˆè(ˆHˆˆèhøˆˆ¸(èˆèˆˆ¨ÈèˆèˆˆÈ؈Øè8èˆèˆèø8driv"°G_vdmap"tA_findv"ê_lfms#ÜH_whichdr": _cvtleng"A_sfms#ÞH_grow"p2_aflent"X _find",_lcmp"�E_clscpyt"°<_activat"ö _random"ÄG_seekf"ü _errsp#ZH_locfr"_locafl"^_addd"€E_lcmpd"¶F_openf"„_closef"Ä_deletef"t_creatf"Ú_statfr"Ž_statfid"X_truncf"è_poprch"L_lock"�_pagehdr _pageloc"G_assign"8_saveall"l_fpl#2H_tailfpl#4H_erase"*_pread"¬_zap"èF_pwrite"ì_plim _bypas#XH_sseek"ô_errexit"ªEN]‚kZ(gN]„k]ÜM‚k¸[ª[¸[^@gZ8gZ¨fÄ[^°fZ8gZgª[^ÐfN]‚kN]„kZÐfN]†k]°N„kN]„kZøfN]†k]ÜM„k¸[N]„kN]†kZÐfN]ˆk]ÜM†kN]†k]¬M‚kâ[ZÐfª[^ØfZ8gZØfž[^ÀfN]‚kZøfN]„k]°N‚kN]‚kZÐfN]„k]°N‚k¸[^àfN]‚kþYàf^„kN]†kZê9â[ZàfZàf¸[ª[N]ˆk]ÎN†kN]†k]¬M‚kâ[^ÈfZþ9Z:Zèf¸[ª[Z:ZèfZ¾9â\¸[ª[Þ[^`gZ`gâ[Z¨f¸[Þ[^`gZ@gN]‚kZÀfN]„k]ÜM‚k¸[N]‚kZÈfN]„k]ÜM‚k¸[N^Z@gN]‚kZÀfN]„k]°N‚kN]‚kZÈfN]„k]ÜM‚k¸[N]‚kZ`gâ[N]„k]ÜM‚k¸[N]‚kZ`gâ[N]„k]°N‚kN]‚kH'H'H'é)é)é)H'crt0.ostarif(cs == COLLECT) save(); ct = t1; while(ct--) temp[ct].beg[temp[ct].ct] = temp[ct].term; while(t1--) { /*printf("t1 = %d beg = %d ct = %d\n",t1,temp[t1].beg,temp[t1].ct); /* DEBUG */ switch(order) { case 1: i = dfile(temp[t1].beg); if((ct = temp[t1].ct) >= 8) { ct = 8; *curf = -1; } else { *curf = '\t'; } put(i,temp[t1].beg,ct); put(i,curf,curfl); if(cross) put(i,curs,cursl); else { conf(lno,4,curs); put(i,curs,5); } break; subroutine jup(eday, xm, ym, zm) double precision long, lat, noded, r, sl double precision eday, xm, ym, zm, capt double precision ecc, incl, node, mrad, argp, mnom double precision pi, radian double precision dele, enom, vnom, olong, rad data pi/3.1415926535897932d0/ data radian/.01745329251994396d0/ capt = eday/36525. ecc = .0483376d0 + 163.d-6*capt incl = 1.308660d0 - .0055d0*capt incl = incl*radian node = 99.43785d0 + 1.011d0*capt node = node*radian argp = 12.71165d0 + 1.611d0*capt atøÿÀEøÿ5üÿÀ5tüÿ5øÿÀTW-üÿÄ@öÿAøÿ@xÀ Àe5úÿ@üÿtÀ @/úÿ@üÿt=@AüÿÁ p’ @üÿÀ p’ )@üÿÀ Àe’ 5ôÿu/ôÿúÿ@ôÿÀe5ôÿõ@úÿ=ôÿ@øÿ@ @ 5@öÿ@öÿÀ Àe5µ üÿõ øÿ©F…‡f…ÆåNß @Àå€ 5üÿ@ Nß š5þÿõÿüÿ}þÿ@ÀEÿø5üÿNN]üÿß œ5þÿÀAüÿWtøÿtÀeÿÿ5üÿ@þÿ÷ ÊöNþÿÎefÎefüÿß –%Nß @þÿF…‡f…æ @Àÿÿ  ffß –%F…‡ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ)H 210 } 185 213 fnt( icode, pl ) 186 214 INT___ icode 187 215 CHAR____ * pl 188 216 { 189 217 1 *( pl ++ ) = '\\' 190 218 *( pl ++ ) = 'f' 191 219 * pl = icode ? 'P' : 'R' 192 220 RETURN______ 193 221 } 194 223 FLOAT_____ LTAB( c, i ) 195 224 INT___ i 196 225 CHAR____ c 197 226 { 198 227 1 INT___ offset, inmd 199 228 _sfc#*)L1L2L3L4L5L6L7L8 L9$L10&L11*L120L134L14:L15uþþÿÂBíþÿ‚þBòµÿòÿBòô@þÿt@müµ þÿÐF…‡Â ÷r%õ7 h%÷ €Â Ó•0�”B~ÁT%Ó•. Á Ó•0…~Á ”B~‡Â ÷,%õ÷"%÷ :”Ó•.Á%”B~Ó•e �Ó•- Ó•+ r Àe0�Áe0S�‡&æ„Äe@7Ø$÷e(Ò$ @ñð&Àñþ•-Ž ó€@Añð&ø@øÃª$7óžø@ø—ôL>—ó BÀûÀe0#�‚ @ñððÑ”÷ ‚$ü‡õ ‚  ó BAñðú‚ ÷ ÷  üw Z$†Îeó B@ûÀe0�‡ÀmB$÷ :$€`€  ‡’ÃeÈ�¢9 È•0 ƒ Š÷È•1‚ ƒ„‡Ì>ÌÌÌÌÍÌf…wü#DÄeÆå€ÀŸî# · è# % &&ß L Ö „ñÆe€…‡7 Ê#7 À#ׯÀ#-· ¸#· ¶#÷. +7 ®# .÷ž+ƒÁBÙ üJ4dzo fªebcls@l Ó•-÷ 6 r f÷ ðÿ€Àe0�‡•à •$Á.#“”C~÷ fWtýÿÁEà÷ ðÿ€ÀEøÿÀe0�‡Â#÷ zýÂø"÷ ¶ýÆ ƒó‹ÿÿà ù‚&æ ÁÒ"ÁàŠ�`wÒ"÷ Æ"ß L ÷ Â"û·º"Ο¶"· °"ß L ø÷ ¨" ÷ œ"Î ß L ÷ ”"ûÖ „w�þ7 ‚" ÀŸx"· t"Àå0 ‚· j"Wp `ñÀe0[ƒf…@÷ T"÷L"w4"w >¬+@�w 2¬+×-2"w D¬+@7 "wf…w"w *¬+7 ö!w7$ÀÿÿF…‡f…wÜ!÷ ô#  ‰º-‡À À�æ#ÀEÿôw f´-‡À ú 7 ¨!     ped and dried paper instead of a cassette, and mounts ten fonts in twelve sizes ranging from 5 to 72 points. .30 n1 = xjunk n1 = mod(n1,360) xjunk = amod(xjunk,1.) xjunk = xjunk*60. n2 = xjunk xjunk = amod(xjunk,1.) an3 = xjunk*60. yjunk = lat/radian c print 102, n1, n2, an3, yjunk, rad 102 format(i4,i3,f5.1,2f12.6) return end > ( øùÛ¯�³F# # include "mcons.c" # include "ccmn.c" # define SKIP 0 # define COLLECT 1 # define SKIP2 2 int cross 1; int order 1; char mone -1; coll() { cs = COLLECT; temp[t1].beg = &line[l]; return; } save() { extern only; int a,tt,val; cs = SKIP; line[l] = '\0'; temp[t1].ct = &line[l] - temp[t1].beg; val = search(temp[t1].beg,temp[t1].ct,&itab,0); if(xsw) { switch(val) { case 0: if((!level&&!hlevel)||(c=='(')||xtrn||ssw) { search(temp[t1].beg,temp[t1].ct,&xtab,1); goto yes; } elst(sp,drive,lc,nsct,n) char *sp; int drive,lc,nsct,n; { char scts[10]; int d1[2],d2[2],b1,b2,k,nl,d,l,nlc; if((nlc=locsctlc(drive))==0) return(0); getsct(drive,nlc,scts,n); if(scts[n-1]== -1) { e1: givsct(drive,nlc,scts,n); return(0); } d=drive<<13; l=(lc<<5)+1; nl=(nlc<<5)+1; for(k=0; k=0;) *(sp+k)=scts[k]; retu&fß þ#–%À Àÿÿ_WÀ�ô"ÀEÿ5zÿ@ 5pÿ@zÿõ zÿÀ _W@€ 5`pÿupÿxÿ@xÿµ xÿœw5vÿ@Àe|ÿ5þÿutÿ@vÿ_ÞV@tÿõ tÿÀ @xÿµ xÿAþÿµ þÿ ¬w _WëÆ@tÿõ tÿÀ @xÿµ xÿAþÿµ þÿ ¬w_üVì _W@vÿt5vÿW-4@tÿõ tÿÀ ,@xÿµ xÿœwÀEÿ5nÿ@þÿµ þÿ’ÀEÿ5lÿ@vÿu-nÿlÿ _Wu-nÿlÿ _Wu-lÿnÿ_üVÎ_VV@þÿœtAŸþÿÁEÿ@`5lÿ@xÿœwtAxÿAœwÁEÿ@`5nÿ@lÿAnÿ@xÀ @vÿAnÿ@xÀ  _W@vÿAlÿ@xÀ _TW-@lÿÀ€5xvÿ@vÿõE€lÿõE€nÿ@tÿ@@ŸþÿÀEÿAþÿAœWt@`5lÿ# define NUL 000 # define SOH 001 # define STX 002 # define ETX 003 # define EOT 004 # define ENQ 005 # define ACK 006 # define DLE 020 # define DC1 021 # define DC2 022 # define DC3 023 # define DC4 024 # define NAK 025 # define SYN 026 # define DEL 0177 # define tmot1 30 # define tmot2 15 # define nenq 6 # define nterm 7 # define nrep 8 # define maxchars 128 int lbuf,lcnt,CDTout,CDTin; char enq[nenq] {SYN,SYN,SYN,ENQ,DEL,DEL}; char term[nterm] {SYN,SYN,SYN,DLE,EOT,DEL,DEL}; char sidap,0); CDTout=open(pdp,1); i=0; while(call[i]=getchar()) i++; if(dn<0||write(dn,call,i)<0) { printf("cannot call\n"); exit(); } else putchar('+'); if(CDTin<0||CDTout<0) { printf("cannot open %s %d %d\n",pdp,CDTin,CDTout); exit(); } for(;;) { if(c=getchar()) onl[ns]=c|getchar()<<8; else break; while((c=getchar())==' '); sta[i=0]=c; while((sta[++i]=getchar())!='\n'); sta[i]='\0'; if(fopen(sta,sinp[ns])<0) printf ("cannot open %s\n",sta); else ns++; } goto idle; off: putCDT(term,nterm); idle: setexit(); if (getCDT(tmot1)) { dump("C:","timeout",7); goto idle; } res: if(next()!=DLE||inbuf[bp++]!=EOT) goto idle; det: SID[0]=sidack[3]=sidnak[3]=next(); SID[1]=sidack[4]=sidnak[4]=next(); DCx=next(); if(next()!=ENQ) goto idle; switch (DCx) { case DC1 :/* specific poll */ if(reply(SID)) for (M=0;M<=2;M++) { putCDT(outbuf,nwp); for (N=0;N<=2;N++) if (getCDT(tmot2)) putCDT(enq,nenq); else break; if (N>=3||next()==ACK) break; } goto off; case DC2:/* selection */ if (ready(SID)>=0) { putCDT(sidack,nrep); while(getCDT(tm& fîÿß Z–%æß Ö Îæfîÿß Z–%æß Ö @ìÿ0þ5üüÿ@îÿ0þ5üøÿ@ðÿ0ÿÀñ@ðÿ0ü@ðÿ0ÿ÷ ÄðõØD&øAðÿA1õù1ü@ðÿð•i@ðÿ0ÿ7÷Üð_º"@ðÿ0ÿðð_X#5ÿøÿuÿüÿù÷ @ð 5ÿüÿuÿøÿù7öªÀñ@ðÿ0ü5ÿøÿuÿüÿùAðÿqÿwôŽò@ìÿ0ü_T#5ÿüÿuÿøÿù7òzÀñ@ðÿ0ü@ðÿ0ÿuÿüÿµÿøÿBùwò^öuÿøÿµÿüÿBùò@ìÿ0ü_¾$W/ðÿW/ðÿN5ÿøÿuÿüÿù÷ @ð%5ÿüÿuÿøÿù7öÀñ@ðÿ0ü5ÿøÿuÿüÿùAðÿqÿBðÿ²ÿBöwööò@ìÿ0ü_$5ÿüÿuÿøÿùÀñ@ðÿ0ü5ÿøÿuÿüÿùAðÿqÿB CHAR____ d 200 229 FLOAT_____ width 201 230 IF__ ( c == '\0' ) 202 231 RETURN______ ( 0.0 ) 203 232 IF__ ( '0' <= c && c <= '9' ) 204 233 RETURN______ ( 18.0 ) 205 234 IF__ ( 'A' <= c && c <= 'Z' ) 206 235 { 207 236 2 offset = c - 'A' 208 237 d = *( ucase +( 2 * offset ) + i ) 209 238 inmd = d - '7' 210 239 width = inmd 211 240 353 392 /* list compaction 354 394 */ 355 395 stop =- 2 356 396 BREAK_____ 357 397 CASE____ 13 :__ 358 398 /* op4's 359 400 */ 360 401 ( stop - 2 ) -> node = alcopy( 6,( stop - 2 ) -> pstr ) 361 402 pontr( 2, 2, 1 ) 362 403 stop =- 1 beautified p1base page 12 363 404 BREAK_____ 364 405 CASE____ 16 :__ 365 406 /* op4 with upper limit only 366 408 */ 367 409 ( stop - 6 ) -> node = alcopy( 6,( stop - 6 ) -> pstr ) 368 410 pontr( 2, 6, 1 ) 369 411 pontr( 0, 6, 4 ) 370 412 stop =- 5 371 413 BREAK_____ 372 414 CASE____ ˜     Îæfîÿß Z–%æß Ö  & fîÿß Z–%& ß Ö @ìÿ0þòÁ@îÿ0ü æfîÿß Z–%& ß Ö @ìÿ0þòA@îÿ0ü@ìÿ7õØ 0ü5ÿüÿuÿøÿùÀñ7òÌ @îÿ0ü@îÿ0ÿ&ø@öÿpÿVôpü@ø_| @òÿ0ÿAîÿAqÿ@÷ð õÚÿ@òÿ0ÿ5üèÿ @îÿ0ÿ5üèÿ5 ÚÿÎæfìÿß Z–%æß Ö  æfòÿß Z–%& ß Ö Îæfòÿß Z–%æß Ö  æfîÿß Z–%& ß Ö Îæfîÿß Z–%æß Ö @ìÿ7õ 0ü@òÿ0ÿAìÿqþWòAôÀñ@òÿ0ü5ÿüÿuÿøÿù7ò� @òÿ0ü5ÿüÿuÿøÿ RETURN______ ( width ) beautified p1base page 7 212 241 1 } 213 242 IF__ ( 'a' <= c && c <= 'z' ) 214 243 { 215 244 2 offset = c - 'a' 216 245 d = *( lcase +( 2 * offset ) + i ) 217 246 inmd = d - '7' 218 247 width = inmd 219 248 RETURN______ ( width ) 220 249 1 } 221 250 offset = 0 222 251 WHILE_____ ( offset < 18 :__ 373 415 /* op4 with lower limit only 374 417 */ 375 418 ( stop - 6 ) -> node = alcopy( 6,( stop - 6 ) -> pstr ) 376 419 pontr( 2, 6, 1 ) 377 420 pontr( 1, 6, 3 ) 378 421 stop =- 5 379 422 BREAK_____ 380 423 CASE____ 17 :__ 381 424 /* op4 with upper and lower limits 382 426en around the longest. Unless otherwise stated, each machine can set 30 characters per second, which translates into about five minutes for one of these pages. .pp .ft B Mergenthaler V-I-P .ft R (Mergenthaler Linotype Co., 1 Mergenthaler Drive, Plainview, N. Y. 11803; phone 516-694-6300). Prices range from $22,300 for a machine mounting six fonts at once, size range 6-24 points, to $33,000 for 18 typefaces, 6-36 points. You may trade 2 typefaces for one double size typeface, thus extending the range of siz 25 && mchr[ offset ] != c ) 223 252 offset =+ 1 224 253 IF__ ( offset > 24 ) 225 254 printf( "Undefined symbol\n" ) 226 255 ELSE____ 227 256 { 228 257 2 d = i ? michr[ offset ] : mrchr[ offset ] 229 258 width = d - '8' 230 259 RETURN______ ( width ) 231 260 1 } 232 261 } 233 262 opplace( hc ) 234 263 CHAR____ hc 235 264 { 236 265 1 */ 383 427 ( stop - 7 ) -> node = alcopy( 6,( stop - 7 ) -> pstr ) 384 428 pontr( 2, 7, 1 ) 385 429 pontr( 0, 7, 5 ) 386 430 pontr( 1, 7, 3 ) 387 431 stop =- 6 388 432 BREAK_____ 389 433 CASE____ 3 :_ beautified p1base page 13 390 434 /* op3 391 436 */ 392 437 ùÀñ7ò| @îÿ0ü@ìÿ0þò@A@îÿ0ü5ÿèÿ&ø@öÿpÿVôpü@ø@Úÿ_d 5ÿèÿAîÿAqÿö&ø@îÿpÿVôpü@ø  ƒÀ xt FJÒ¾@ðÿ0ÿ&ø@öÿpÿVôpü@ø_$)Nòÿß ÖW/òÿ @ìÿ@òÿ&ß ¦Ö @òÿ¬|@ðÿ " @ðÿ "@ðÿ pìÿ@ðÿ5 ðÿ@ìÿpðÿ Nðÿß Ö@òÿ0ÿAðÿAqÿô@öÿ0ü@òÿ0ÿ@ìÿ0ü@òÿ0ÿ@ìÿ0ü@òÿ0ÿ@ìÿ0ü_$)@òÿAìÿpNòÿß Ö@ìÿß Aðÿ1@îÿAðÿpNîÿß ÖNðÿß ÖÎ& fðÿß Z–%æß Ö  æfðÿß Z–%& ß Ö Î next -> estr[ 0 ] = '\\' 237 266 next -> estr[ 1 ] = '|' 238 267 next -> estr[ 2 ] = hc 239 268 next -> estr[ 3 ] = '\\' 240 269 next -> estr[ 4 ] = '|' 241 270 next -> estr[ 5 ] = '\0' 242 271 next -> length = LTAB( hc, 1 ) 243 272 RETURN______ 244 273 } 245 274 init( ) 246 275 { 247 276 1 lcase = & lcse[ 0 ] 248 277 ucase = & ucse[ 0 ] 249 278        393 CASE____ 4 :_ 394 438 /* op3 395 440 */ 396 441 397 CASE____ 5 :_ 398 442 /* op1 399 444 */ 400 445 401 CASE____ 7 :_ 402 446 /* op2 403 448 */ 404 449 ( stop -dxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"! ______ ( it ) 263 293 } 264 295 rval( aentry ) 265 296 INT___ aentry 266 297 { 267 298 1 INT___ abc, def 268 299 abc = aentry << 4 269 300 def = abc >> 4 270 301 RETURN______ ( def ) 271 302 } 272 304 /* Parses input and produces a pseudo-parse tree, returning a pointer to the top of the tree 273 307 */ 274 308 parse( token, ptoken ) 275 309 INT___ toke,c19ndcos. dele_dabs. c20rrgt8 lif2 goto c21vc22nc23ndsqrt. c24vc25vdatan2. rmp4 vnom_ olong_(c26zrad_0noded_Àr_Èlong_°sl_Ðlval stst c27nlat_¸c28‚c29Šc30’c31*r8r4 gmv4 obliq_8gmv8p xm_ym_zm_retrn basešpi_ mars.o642 next -> length = LTAB( c, 0 ) 585 643 parse( 11, next ++ ) 586 644 iestr = cflag = bmode = 0 587 645 next -> length = 0.0 588 646 CONTINUE________ 589 647 CASE____ 3 :_ 590 648 /* Right parenthesization 591 650 */ beautified p1base page 20 592 651 iccheck( cflag, dflag ) 593 N]þiZvcZŽcž[Zž â\Z~cZ–cž[Zž â\ž[Z†cZžcž[Zž â\ž[Þ[N]j]ÖNþiâ[¸[Þ[^ dN]þiZöcZ dâ[ª[N]jþYvc^jþY~c^jþY†c^j]þ&þiN]þiZš Zš L\ð ¢b^jZvcZŽcž[N]jZ~cZ–cž[N]jZ†cZžcž[N]j]v þiN]þiþYöc^jþYvc^jþY~c^jþY†c^j].þiZn N]þiZvcZŽcž[Zž â\Z~cZ–cž[Zž â\ž[Z†cZžcž[Zž â\ž[Þ[N]j]ÖNþiâ[¸[Þ[^ dN]þiZöcZ dâ[ª[N]jþYvc^jþY~c^jþY†c^j].þiN]þiZš Zž L\ð ¢b^jZvcZŽcž[N]jZ~cZ–cž[N]jZ†cZžcž[N]j]v þiN]þiþYöc^jþYvc^jþY~c^jþY†c^j]ª3þi printf( "Illegal escape code\n" ) 858 921 exit( ) 859 922 5 } 860 923 4 } 861 924 parse( iestr, next ) 862 925 BREAK_____ 863 926 DEFAULT_______ : printf( "Illegal escape code\n" ) 864 927 exit( ) 865 928 3 } beautified p1base page 26 866 929 iestr = 0 867 930 964435969 965490677 965501857 966830545 967172909 967266451 967270129 967287751 967714021 967790401 968014401 968283247 968324881 968413217 968553181 968751241 968915521 969528337 970299721 970586713 971032861 971454661 971515777 971730985 971975071 974113601 974471243 974774401 974864521 0ÿuÿèÿô@öÿ0ü_$)Nðÿß Ö@ðÿ0ÿ@öÿ0ü@ðÿ0ÿ@ìÿ0ü@ðÿ0ÿ@ìÿ0ü@ðÿ0ÿ@ìÿ0ühNðÿß ÖföÿÎe@ìÿ0þùÀA~ÿòü@ðÿ0ÿ&ø@öÿpÿVôpü@ø@ðÿ0ÿ@ìÿ0ü@ðÿ0ÿ@ìÿ0ü@ðÿ0ÿ@ìÿ0ü.@7õ„0ü@ìÿñ0ü@ìÿñ0ü@ìÿ0þ5üüÿföÿÎe5ÿüÿùÀA~ÿòü_$)_$)÷ èÖ)$)\+j+„+F…‡ $&*04:>BHLNV^fhlrtx|€‚†ˆŒŽ’”˜šž ¤™@™™™™š™™@™™™™š™3À3333333@333333™@™™™™š™L@ÌÌÌÌÍÌÌ?ÌÌÌÌÍÌÌ?ÌÌÌÌÍÌÌ?ÌÌÌÌÍ̦@ffffffL@ÌÌÌÌÍÌ™@™™™™š™Ì?ÌÌÌÌÍÌÌ?ÌÌÌÌÍÌ3@33point. No blanks may appear within a floating-point con- stant. Examples of floating-point constants are: 10.12 1.2E+6 31.2E-6 10. 52.E4 1E10 .92 .1E7 .2E-14 All floating-point constants are treated as double-precision quantities. The limits on the magnitude and precision of C Reference Manual Page 5 floating-point constants are tht came from the first set of 5 ought to be put in the place of the middle value of that set as a sequence \(em\(em it ought to be put where 9 was. The "7" ought similarly be put where 3 was, and so on. .pp The result so far is, continuing the process as far as we can: .sp .ce 4, 7, 9, 3, 4, 11, 12, 1304, 10, 15, 12, 13, 17 .ce ?, ?, 4, 7, 9, 11, 11, 12, 12, 13, 13, ?, ? .sp We have made a good start on smoothing this particular sequence. (The most obvious difficulty still facing us is the missing valu = c - 'A'; d = *( ucase +( 2 * offset ) + i ); inmd = d - '7'; width = inmd; return ( width ); } if ( 'a' <= c && c <= 'z' ) { offset = c - 'a'; d = *( lcase +( 2 * offset ) + i ); inmd = d - '7'; width = inmd; return ( width ); } offset = 0; while ( offset < 25 && mchr[ offset ] != c ) offset =+ 1; if ( offset > 24 ) printf( "Undefined symbol\n" ); else { d = i ? michr[ offset ]: mrchr[ offset ]; width = d - '8'; return ( width ); } } opplag with schematic plots based on them. It is only right that we do this \(em\(em straight lines are as important as their treatment here would suggest. .pp But not everything is a straight line. We need techniques that will help us see what the data are saying when they don't follow a straight line. .pp One approach is to try to climb the polynomial ladder. (Bah, it isn't straight; try a quadratic! Double bah, it isn't quadratic; try a cubic. And so on.) Occasionally this works well, especially when (1)ately in a stabilization process to yield reproduction quality printing. No darkroom is required. Most of these machines are sold to the newspaper industry; they tend to come with front panel switches saying ``\*sAP\*S'', ``\*sUPI\*S'', etc. In general, for your purposes, the more front panel switches and the more apparent the fixation on newspaper work, the less suitable the machine will be. Most machines contain a small computer with a program to do line justification by automatic hyphenation, keep tracy©ø y ¹øøyyy™yyÙyyyyyyytr[ 9 ] = '\0' 603 662 next -> length = LTAB( c, 0 ) 604 663 parse( 12, next ++ ) 605 664 iestr = bmode = cflag = dflag = 0 606 665 CONTINUE________ 607 666 CASE____ 4 :_ 608 667 /* Plus or minus 609 669 */ 610 670 611 CASE____ 5 :_ 612 671 /* Multiplicatiable storage classes of C are external, automatic, and static. 3_.1_ Integers________ Integers are declared using the reserved word INT; for example, the statement INT I,J,K; declares I, J, and K to have the integer data type. Integers are assumed to be represented in 2's complement notation and general- ly occupy one machine "word." The maximum magnitude of an integer is implementation dependent; in no case shall this limit be less than 32,767. [ The maximum magnitude of an inte parse( bmode, next ++ ) 644 705 iestr = bmode = dflag = cflag = 0 645 706 next -> length = 0.0 646 707 CONTINUE________ 647 708 CASE____ 8 :_ 648 709 /* Special font - escape characters 649 711 */ 650 712 iccheck( cflag, dflag ) 651 713 iestr = bmode = cflag = dflag = 0 652 714 next ->/ if(sflag = finals(t,&s)) if(sout!=(out=phread(t,out))) { *out++ = sflag>1?0140:0155; *out++ = 0140; /*,s,s or ,z,s*/ goto done; } midu(t,s); finale(t,&s); mide(t,&s); mids(t,s); if(sflag) *++s = 's'; } *--t = '#'; *++s = '#'; *++s = 0; while(*t) { *--t = '%'; i = prefix(t); if(i==0) { *sout = 0; return(sout); } u = &strings[table[i].word]; while(*u) { t++; if(tflag) write(1,u,1); u++; } if(tflag) write(1," ",1); s = &strings[table[i].phon]; while(*ªìôš²²j²üšÂÂj º šÊþÊ$þjÊÊ¢þÊþÚÊÚ¢þÚþ,¢þÚþÒÚÒÚþÒþ0Œ4þ,¢,¢Ú4Ú4þââÂêº8¢þÚþ01, 12303, 4103, 12303, 4108, 12303, 4112, 12303, 4113, 12303, 12320, 4097, 12311, 4099, 12311 , 4100, 12311, 4101, 12311, 4103, 12311, 4108, 12311, 4112, 12311, 4113, 12311, 12319, 4099, 8209, 4108, 8220, 0, 4109, 8222, 0, 12301, 4099, 8206, 4102, 8202, 4107, 8198, 4109, 8199, 4110, 8200, 4112, 8224, 0, 12312, 4099, 8209, 12292, 4099, 8209, 12291, 4100, 8210, 12293, 12295, 4105, 8226, 4106, 8227, 4107, 8225, 12297, 4108, 8228, 4112, 8229, 0, 12321, 4099, 8209, 4112, 8230, 0, 4099, 8206, 4102, 8202, 4107, W-þÿ @úÿÁ AíþÿWptA1PW-þÿ@úÿÁµ þÿBþÿ�àWptA1P€@W-þÿ @þÿÀA1P õ þÿ€ @þÿ Àÿÿ@ðUÀ   ƒÀ xšt„zF…‡f…ÆåÎæ2æ@ß È–% 5üÿ5þÿµ þÿ@þÿÀ%&÷ 5úÿó 8%Àå ƒÀ xþèèèâäW-þÿ@úÿ@úÿt5PüÿÓ@üÿÀ H5üÿÎæ:æºß È–% 5üÿ5þÿ¼@üÿF…‡f…¦)õÿÿþÿµ þÿ@þÿÀ% @þÿÀ @mAþÿÁ AmHíw¼f…Æå }/ _ò@ÀEÀÿ5þÿAAÁEÀÿuüÿ  _òW-þÿu-þÿüÿ _òõåþÿDr. C. J. Cheney Computing Laboratory University of Cambridge Corn Exchange Street Cambridge CB2 3QE, ENGLAND 3 enclosed_reportyA Simple List Moving Algorithm e222-other_authorsng Technique fotime_lagAlthougheight months n L217-other_authorsstants the prob217-name_and_address4 0 .hx .na Mr. Schwayder ck189-paperk lepho191-name_and_addressdg. 12A, RooJuly 20r_whom Taä ü¼tum per is191-other_authorsessbert Morris 189-dear_whomwaynot_technicalla Professor Verhelst titute of App189-2-name_and_addressch Laborat÷À …f w .Àå0 ‚Wp `õ@�÷ Ö…AÉ  üÖ y…ÀŸ¾· º…÷ nf\7 dÕ …À% · X…&÷ PÀ w ²þø7 @€w ¤þ…Àðµ¶C 7 &À w Šþ w ¶ÿw Èþ…÷ \w öþú7 P…w`ü…w PÏç‰Á4Á w Ôþû…÷¸w Â÷Ä<÷ ‚  �· ¶·à°÷å¦w ê÷eœ÷e¬…æeæd÷ vw ~Á€ÁeÁmhÁípwà€÷ ZÀ-w ÿÁ\À²`� wÆ ÷ ¦ÂšŽà À0w âþ@”÷ ¤ w Öþ†~À.w Ìþ À0w Àþ…~„ @”w ²þ„~€w ¨þ�À-w œþ À+w �þ r Àe0w ‚þ@Àe0w xþÖ …& 7 ¾æ& ÷ žw üÿæß Ö 5úÿ_Põ5@À 5„øÿNúÿÎeføÿÎeæß –%õ5@À 5”øÿNúÿÎeføÿÎeæß –%Núÿß õ5 nõ53@À ¤5úÿ+@Àeüÿfúÿß Ö Núÿß @Àeüÿæß Ö 5øÿ@øÿ @úÿÀå€ ÀEÿÀ @møÿAÁ 1¤õ53@À ´5úÿ+@Àeüÿfúÿß Ö Núÿß @Àeüÿæß Ö 5øÿ@øÿ @úÿÀå€ ÀEÿÀ @møÿAÁ 1´F…‡f…Æåõ¼þÿuþÿúÿõVüÿ@üÿ%@üÿ ÀEÿ@-@úÿ5,üÿ@üÿß  ó@úÿ5üÿuüÿúÿ@üÿ5üÿØw<úf…Æå NÎe ß 5þÿ T@ðµ@ï÷I^ 3 ié À [fixpl] [header] .sp 1 [[1]-name_and_address] .sp 1 Dear [[1]-dear_whom]: .fi .sp 1 {[1]-text} [footer] .sp {[1]-enclosures or copies?} .bp .pl 6 .nf [[1]-name_and_address] I have carefully read your paper "[[1]-paper]" and consulted the advice of a referee. ny thanks for your letter of [[1]-date_recI have finally received a referee's report concerning your paper "[[1]-paper]". " which you submitted for publication in the CAC¢Àf…ÆåÀ_7 êÿ? æÿÀâÿÀe5þÿÎæÒÿæÎÿß –%5úÿW-úÿÀ¸ÿNúÿæß ¤Ö õúÿ@úÿ @úÿõ úÿÀ ÀmŽÿ ôÿ†ÿ„ÿÀ€ÿ5úÿ_æõüÿfþÿý üÿÖ & ß ¤Ö °õüÿñNþÿß Î& ß ¤Ö ¡õüÿæ0ÿÎefþÿý üÿ–%& ß ¤Ö �ÎÿÎe@þÿ&@þÿ&ÎE€fþÿß Æe& ß ¤Ö _õüÿµõüÿ±NþÿÎefþÿß Ö & ß ¤Ö _άþÎefþÿß Ö & ß ¤Ö _õüÿªõüÿ‰@þÿ@þÿ&fþÿß –%À  & ß ¤Ö õåúÿ@úÿÎ& ß ¤Ö 7 8þ@þÿpþÿõeþÿ@úÿÑÐ_ ƒùÀ 1, 4, 2, 1, 1, 6, 7, 6, 7, 9, 8, 8, 1, 2, 7, 7, 9, 4, 4, 1, 1, 1, 1, 3, - 1 } ; int a[ ] { 0, 4099, 8206, 4102, 8202, 4107, 8198, 4109, 8199, 4110, 8200, 0, 4097, 16384, 0, 4101, 8207, 12289, 4099, 8209, 4101, 8208, 12290, 4100, 8210, 12294, 12296, 4097, 12298, 4099, 12298, 4100, 12298, 4101, 12298, 4103, 12298, 4108, 12298, 4112, 12298, 4113 , 12298, 12318, 12299, 4107, 8212, 0, 4099, 8206, 4102, 8202, 4107, 8198, 4109, 8199, 4110, 8200, 4111, 8214, 0, 12302, 4097, 12303, 4099, 12303, 4100, 12303, 41d0*eday dven = dven*radian mven = 212.603219d0 + 1.6021301540d0*eday mven = mven*radian dmars = 194.050950d0 - .4615761716d0*eday dmars = dmars * radian mmars = 319.529425d0 + .5240207666d0*eday mmars = mmars*radian djup = 139.18995d0 - .9025561d0*eday djup = djup*radian mjup = 225.20924d0 + .0830912d0*eday mjup = mjup*radian pturbl = .00181*sin(emoon) & + .00138*sin(dven) - .00157*sin(2.*dven) - .00019*sin(3.*dven) & + .00007*sin(dmars) + .00058*sin(2.*dmars) & + .00200*sin(djup) - .00076*sin(¨x¨Èx¨x¨ØxHhx¨ÈØxHhx¨x¨x¨ÈØ(Ø(hhvenus."venus_œrval8p eday_rvProf. M. Verhelst Instituut foor Toegepaste Economische Wetenschappen Universiteit te Leuven Dekenstraat, 2 3000 Leuven, BELGIUM gepaste Economische Wetenschappen Universiteit to Leuven Universiteit te Leuven Dekenstraat, 2 3000 Leuven BELGIUM 3000 Leuven,A Technique for Decision Table Implementation - Minimization by Procedure o not think that such minor modifications on existing I sent your paper to a referee who is mutually acceptable to the CACM and the JACM hoping for a favorable result. As you can seProf. David L. Parnas Department of Computer Science Carnegie-Mellon University Schenley Park Pittsburgh, Pennsylvania 15213 el205-name_and_addressng decimal rand Professor Siewiorek grams toApril 19, 1973 eJune 21, 1973 or189-1-dear_whom 189-1-date_sentr202-name_and_addressssme your pa[David_Gries] ngMr. Schwayder orFORTRAN Program Comprehension as a Function of Documentation UniProf. Peter R. Newsted School of Business Administration The University of Wisconsin Milwaukee, Wisconsin 53201 3 sscessing TechProf. Donald Knuth Computer Science Department Stanford University Stanford, California 94305 . Dr. M. Douglas McIlroy Room 2C526 Bell Telephone Laboratories Murray Hill, New Jersey 07974 äŒÔì¬üôiques. I do not thiProf. Dr. Edsger W. Dijkstra Technische Hogeschool te Eindhoven Eindhoven, NETHERLANDS [for_this_reason] hniques. I do not thiProf. Gerard Salton Computer Science Department Cornell University Upson Hall Ithaca, N. Y. 14850 [for_this_reason] e improvemenŒ„|¤lÔ¬d\´äüÌLTt¼ÜD ,<ì4Ä<LôDTlt$d|„”Ä\4¼´ÌäŒÔì¬üô $<4¤\d,Tl|tLŒ„œ”ÜD¼¤´ÌÄTœD\ldt<„|¬4¤œ´¼ŒÄ”äÌÜÔô,ìL\<dlD|t„œŒ¬´¤¼ÄœÜäÔôì,<Œ,ä4LL” ô¬Ttܼ$ D<d윔¬œÄ¼´ D L  d ” ¬ <´ ÔÌ Ä ìœ ä L  Œ„|tTld4Ü ¬Ìä< 4 | l ´\, Œ ldÜ,Ôüü,t¤|TDÌ TDT4\ü´$4 D lô œ œ|\ ¤ t T , ¼ $  ôÄ ü Œ Ll¤D¤Prof. William M. Waite Department of Electrical Engineering University of Colorado Boulder, Colorado 80302 .sp 2 .in 30 .nf Sincerely, .sp 3 Robert Morris, Editor .br Programming Techniques Department .in 0 rhm-pdp  $<4¤\ thi139-2-name_and_addressüÌLTSteve deJoel -de139-dear_whom Fa139-date_receivedl Bell TelephonDecember 2, 1971 om 2G-418 HolmdDr. Lee E. Heindel Bell Telephone Laboratories Room 2G-418 Holmdel, New Jersey research journal. [for_this_reason] e improvemenProf. P. J. H. King Department of Computer Science Birkbeck College University of London Malet Street London, WC1E 7HX ENGLAND e222-textr Minsky222-papery] .sp 194-2-name_and_addressrd DepartmAn External Sorting Technique for Information Stored on RotatingDr. Solomon L. Pollack Ocean Towers #410B 201 Ocean Avenue Santa Monica, California 90402 California 92037 n keep the length to202-name_and_addressss that your222-name_and_addresseldman Stanf159-name_and_addf the fact that 159-name_and_addresse traversal Prof. Edward Reingold Department of Computer Science University of Illinois Urbana, Illinois 61801 on B Nashville, Tennessee 372January 10, 1973 ] _this_reasonrWilliam_Waite. MStan -deAlthothe139-1-date_sentf139-1-dear_whom7December 14, 1971 incerely, .sp [Stanley Brown] 139-2-date_sent 139-1-name_and_addressr .br Prog139-2-dear_whomdDr. Heindel is nDecember 14, 1971 your paper isDr. Raymond E. Miller IBM Thomas J. Watson Research Center P. O. Box 218 Yorktown Heights, New York 10598 p [0], 1972 .in 0 I feel that your paper is essentially a software announcement rather than an exposition of novel technical material and is for that reason not suitable for publication in the CACM. For a statement of CACM policy concerning "how-we-did-it" papers, see page 306 of the May, 1971 issue. graded by the existence of deleted entries and secondly the key must be available in the entry for rehashing. There exist far superior schemes to rehash a table in place under certain moderate restrictions. .sp [not_novel] Tech; fpl=n; } pp=-2; } } int *fetch(type,diskloc) int type,*diskloc; { extern int *pagelist,pspace[],npages,*duplicate(),fpl,tailfpl; int n,*pp,*f; pp=pagelist+(npages<<1); for(n=npages<<1;(n>0);n=-2) { if ((*(pp+1)== *diskloc)&&((*pp&07400)==(*(diskloc+1)<<8))) { if ((*pp&0160000)==0) { if (fpl==n) fpl= *pp&0377; else { for (f=pagelist+fpl;((*f&0377)!=n);f=(*f&0377)+pagelist); *f =(*f&0177400)|(*pp&0377); if (tailfpl==n) tailfpl=f-pagelist; } *pp=(*pp&07400)|type; } *pp=+020000; return(&pspace[0]+(n<<7)); } ˜$H#H$I$##H$H$É$É$H$H$)&##˜$˜$8#H#Mr. Keith Schwayder Samsonite Corporation 11200 East 45th Avenue Denver, Colorado 80217 ND eld of search methods which eliminate188-1-dear_whoms¼¼date_revised194-2-dear_whomPDr. Pollack s to194-1-name_and_addresshe field o188-2-dear_whomy188-paper VerhelProf. Robert A. Wagner Systems and Information Science Program Vanderbilt University Box 6147 Station B Nashville, Tennessee 37235 tion 2.2.4. .sp [for_this_reason] shed in its present form. I would appreciate your rewriting the paper in line with his com’L55žL56äL57ðL58|L59.L60tL61zL62FL63˜L64FL65ôL66L67L68 L69ŠL70¼L71ÆL72îL73L74fsm.3.oL1&!L2  L3z L4ÀL5ÞL6n!L7 L8R L9  L10z L11  L12  L13¨ L14æ L16Þ L15Þ L17!L18H!L19l!L20X!L21l!L100June 22, 1973 ddJune 22, 1973 zyProgramming Languages-editore an219-1-dear_whomoShen ew_dept.ithJune 22, 1973 _a194-1-dear_whoma202 Cavouras avo194-1-date_senta194-2-date_sentaJune 22, 1973 anProgramming Languages-name_and_addressen widely discussed in theProfessor Minsky sky Department July 21e_revised{accept} CaliforProfessor King 189-3-dear_whomKDr. Hall d C. Ha194-paper LaboraProfessor David Gries Corness University Computer Science Department Upson Hall Ithaca, New York 14850 mplementations. The numbe”ÜœT ô \4äŒdä ¤d $ „ ”¬ Ü ¼ Ü ô ìì$  Ô  Ì\ | \ L ì d l | t ” œ ì ü „ ´ ü< ¼ , ´ Ì Ä Ô äÔ äÔ äÔ ä Ì  Ì  Ì  Ì  Ì  Ì  Ì  Ì  Ì  Ì  Ì  Ì  Ì  Ì  Ì  Ì  Ì  Ì idge, Massachusetts 02138 nnis_RitchieerDon_Knuths M. Ri183-1-name_and_address0 .hx .na 183-1-dear_whom-Professor Waite 183-2-date_sentn183-2-dear_whomyDecember 4, 1972 , your paper is183-2-name_and_addressrt Morris Dr. Cheney heney197-dear_whom Tu186-other_authorsessputing LaborDr. Van Tuyl Yok 94-other_author[Brian_Kernighan] Generalized E191-date_receivedessDr. Zoll A Numbering System for Combinations 63 National Institutes of He189-3-date_senta206-1-date_sento207-paperr_whoma191-dear_whomur Mr. Knott nd_addJune 21, 1973 or206-dear_whom. NJune 5, 1973 nerJanuary 4, 1973 Kenneth Thompson219-1-date_sentd191-paperand_add188-1-name_and_addresspartment oProfessor Verhelst nstituut foor{thanks} 1973 Ta191-1-date_sentd189-1-name_and_addressrithm ill,189-3-name_and_addressxas Instru191-1-dear_whomlJoan 1444 Houst182-name_and_add222-dear_whom Mi207-2-name_and_addressme your paJune 14, 1973 . Baron Department of Computer Science T t on his A Numerical Representation of Module Complexity, with Experimental Justification on a Limited Problem Space you do, the comment 188-1-date_sentaDr. Rey Roy thor222-name_and_add{accept}ack gner219-name_and_addressor_contribut215-1-dear_whomR205-paper ParnasProfessor Parnas rnas Department205-dear_whom. P222 Ramirez nd_aExpected Time Bounds for Selection ephone Laboratories Murray Hin output file form.mÁ ô1ÎÿÀôÎÿÁüópðÿÎæ æß L–%Îæ & ß L–%Îæ æß L–%÷å0¼ó-÷´ó)Àå ƒ#À x` „„„  „  à88^ h    ž,äæ Þ † .   ( @ @ Ž ô ô F F 8^À\óúÿfß (Ö ?JóÀÀ   ƒÀ xÒ x~Àæ¼ F…‡f…Æå 5þÿ7 ó5úÿ5üÿÀóñ0ü÷ öò5�ôÿÀ%$_–W­ôÿ ÷ Üò5�ôÿW­ôÿ @þÿè@�ôÿß Ä_jÀ¸òÀ5þÿ5üÿ@úÿ렧 ÷ ˜òÀ”ò· �òÀmŒòA�ôÿH�Î@�ôÿ&ß ÈÖ &øÀpòpÿVôpü@ø´À^òÀ5þÿ5úÿÀLò· HòÀmDòA�ôÿH� @�ôÿ&ß ÈÖ &øÀ*òpÿVôpü@ø‘@úÿ릧 ” ·ß— ‚Ô˜$šìå {òþ²mÅCCQ%8 §ÍE@»_zQF§DînÎqë@õ�ìHÜØ:›PÆù*Ã@RØ´AºŸDÄÃÊ2¨W@9&ø–Ë=:!•Ôdï•´D€@Ö4”¿A€@»BLžQŒjU=a2|QÚÜ6øqŽQ�hpCIAÚ!¢ÂhŽ=5ú”Äï(Hhxˆ¨¨¨Øèˆ¨¨¨Ø(ˆ¨¨؈¨¨¨Øèˆ¨¨؈¨¨¨Øè¨¨HÈØèˆ¨¨؈/ u9 -- unix / DC-11 receiver interrupt trcv: jsr r0,1f / save r0, remember which line in r0 jsr r0,1f jsr r0,1f jsr r0,1f / the "k%j" comments mean: / r0 contains i*j+k for i = the / typewriter number 1: mov r1,-(sp) mov r2,-(sp) mov r3,-(sp) mov clockp,-(sp) mov $s.syst+2,clockp sub $trcv+4,r0 / 0%4 asl r0 / 0%8 / get buffer and control/status; / ignore interrupt if bad parity / or receiver error mov rcsr(r0),r2 mov rcbr(r0),r1 tst r2 blt 1f / error tst tty+6(r0) beq 1f bit $40,rtfrx 9 3191- 5Alletter ‡receipt remind] please] reject] header] thanks] accept] fixpl0 Rfinallyrcarefully 0 .m3 enclosed_reportysorrynotfragmentfor_this_reasonrnot_novel I knownot_suitablel thButler_LampsonndDavid_Ferguson LDennis_RitchieerDon_Knuths M. Ri.m1 0 .m2 0 .m3 0 .m4 0 .hx .na .nf .bl 10 m 2C-524 Bell Telephofor_these_reasonsyour paper is nminor_improvement, your paper isMr. Keith Schwayder Samsonite Corporation 11200 East 45th Avenue Denver, Colorado 80217 e technique customary in output conversidUS_cbca`TMLI/{~^l}xq�t`jwy–omrz6mKq:8“k<=>+BDCBA@?C7A5@>;94EFGHIJKMr. Kirk Sattley Applied Data Research, Inc. 450 Seventh Avenue New York, New York 10001 inallyrcarefully 0 .m3 enclosed_reportyMiss Myrtle R. Kellington Association for Computing Machinery 1133 Avenue of the Americas New York, N. Y. 10036 Don_Knuths M. RiDr. Shen Lin Room 2C-471 Bell Telephone Laboratories Murray Hill, New Jersey 07971 ur paper is nminor_improvement, your paper isDr. M. Stuart Lynn Rice University Houston, Texas 77001 ies Murr206-1-dear_whomn207-1-date_senta189-name_and_addressneering Univ $,4<DLT\dlt|„Œ”œ¤¬´¼ÄÌÔÜäìôü $,4<DLT\dlt|„Œ”œ¤¬´¼ÄÌÔÜäìô $,4<DLT\dlt|„Œ”œ¤¬´¼ÄÌÔÜäìôü $,4<DLT\dlt|„Œ”œ¤¬´¼ÄÌÔÜäìôü@úÿF…‡f…Æå @Àe7L:Nß 5þÿ _þNþÿß ^5üÿuúÿ@tþÿ5øÿ@ÀEüÿO XNüÿÎe@Àeøÿ&ß €EÖ NþÿÎe@Àeøÿ&ß €EÖ @øÿ <NüÿÎe@Àeøÿ&ß ¶FÖ À @þÿð5  'Nüÿ@Àeøÿ&& ß p2–%À  @þÿpøÿ@þÿpúÿ À   ƒÀ xö|fNJF…‡f…Æåõ9þÿ@þÿ@þÿ5üÿu-üÿþÿ@üÿ5,@üÿ@üÿ5üÿí@þÿ5þÿß F…‡f…æ W/ @5ö@F…‡f…Æå@Àe7Ä8= @ð5ÿ? _¾Nß ö 5þÿ _¾Nþÿß ^5üÿðµS @Nþÿß & l@@üÿbl1++; } /*make man a king if necessary*/ board[*tree++ = *tbl1] = *tbl1++ <= 4 ? wking : man; b = black(beta,alpha,level,branch); /*first unmake old move*/ /*check for repetition of moves*/ if(a = *tbl2++) { /*can't have repetition on jump*/ begin = *tbl2++; while(a--) board[*tbl2++] = *tbl2++; board[*tbl2++] = 0; board[begin] = man; } else { board[begin = *tbl2++] = man; board[finish = *tbl2++] = 0; if(man == wman) /*no repetition on man moves*/ goto next; tree = tre2 + 3; 1 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 30 31 32 33 34 35 36 37 38 40 41 42 43 44 50 51 52 53 54 55 60 61 62 70 71 72 80 81 97 98 99 100 hHhHhxøØ˜((stars."stars_¬stsp ftXlval c0îstst ¯M¢M M°M<€L LìLÀLÀLMILAL@LPLt`N€N¼HÀHNeNe@ePe¼ LÀLNNN N¾G¾G°GÀGÞlÞlÐlàlëUëUàUðUÑUÂUÀUàU¶Y¡Y YÀY @N`N¯O¢O O°OŒR€R€CDÜ 0N@NVTVT@T`TŸVŸV€V V” N0Nñcâcàcd¬CCÔ O@OcHcHH€H$O O¼ C0C$ m m¬0e@e K(K™Q‘Q�Q Q‘c‚c€c c„(K0KWWW W °O¸O>m>m0m@m±a±a aÀaCCC C±S¡S SÀSâTâT€TUñRáRàRSO`B`@`P`’S’S€S S½R½R°RÀRôSáSàSTTTT TÍSÁSÀSÐSÙSÑSÐSàS/T!T T0T�p�p€p�pOUAU@UPU@T@T0T@TqT`T`T€TUUU U/U!U U0U@U@U0U@UÜ0C@CnVnVV€VqU`U`U€U–U�U€U U«U«U U°U_UQUPU`U­R¢R $,4<DLT\dlt|„Œ”œ¤¬´¼ÄÌÔÜäìôü $,4<DLT\dlt|„Œ”œ¤¬´¼ÄÌÔÜäìôüðîáàðÜ@Ü@€@A_1Q1P1`1O1A1@1P1WAAA€AßB€B€BCâA€A€ABm1a1`1p1í=á=à=ð=¯=¡= =°=œ=‘=�= =]BBB€B�=�=€=�=YDDD€DðDðD€DEÑ=Á=À=à=1111À2€2€2À2¿=±=°=À=SEEE€Eû=ñ=ð=>­W¡W W°W¸E€E€EÀEÔF€F€FGkGGG€GÏ2Á2À2Ð2ÁQÁQÀQÐQ]L]LPL`LöUöUðUV‘W�W€W WØØ€ƒqƒqqrí`í`à`aôEáEàEF‘G�G€G Gttt€t@C€C=K1K0K@KIIIIòHàHàHI­H¡H H°H‘H‘H€H HÞGÑGÐGàGkJkJJ€JìJìJ€JK111 1ÏHÁHÀHÐHµH°H°H¸HßHÑHÐHàHOIAI@IPIQKAK@K`KrI`I`I€IIII I6I!I I@IKKK KÏK€K€KL\IPIPI`ILLL L4L!L L@LqK`K`K€KrL`L`L€LuMMM€MÌ(r1)+ 2: cmp r1,sp bhis 1f clr (r1)+ br 2b 1: jsr r0,arg; u.break br sysret4 / create a file. / r1 is the protection mode / ii is the directory in which the file / will be created. / the name is sitting in u.dirbuf / here's where i-nodes are allocated maknod: bis $100000,r1 / alloc mov r1,-(sp) mov ii,r1 jsr r0,access; 1 mov r1,-(sp) mov $40.,r1 1: inc r1 jsr r0,imap bitb mq,(r2) bne 1b bisb mq,(r2) jsr r0,iget tst i.flgs blt 1b mov r1,u.dirbuf mov (sp)+,r1 jsr r0,iget jsr r0,mkdir…Æå AÀ r5þÿAÀ ruAÀ r<5üÿAÀ r<uúÿ7ŠÇAúÿÀ r Áe0w�´AúÿÀ r Àe07�¡÷•.šAüÿÀ r Áe0w�‡AüÿÀ r Àe07�t÷•:mAþÿÀ r Áe0w�ZAþÿÀ r 5þÿAþÿÀ r Áe0w�9AþÿÀ r Àe07�&õðøÿW¯øÿ0W¯øÿ:µ øÿõW¯øÿ.õ øÿ@øÿwz wv Bus errorIllegal instructionTrace trapIOT trapPower fail trapEMT trapBad system callPIR interruptFloating point exceptionMemory violationQuitInterruptKillUser I/Of…æ 7 8÷ ¢72À.Î¦ß TÀÿÿ_À# fffå.N.. wd/ u4 -- unix / save register r0,r1,r2,r3 when interrupt happens / set "ovh" time category setisp: mov r1,-(sp) mov r2,-(sp) mov r3,-(sp) mov clockp,-(sp) mov $s.syst+2,clockp jmp (r0) / interrupt from 60-cycle clock clockd: mov $-1,r0 rti clock: mov r0,-(sp) mov 4,-(sp) mov $clockd,4 mov csw,r0 mov (r0),r0 mov r0,csw mov (sp)+,4 tst *$lks / restart clock mov $s.time+2,r0 / increment time of day inc (r0) bne 1f inc -(r0) 1: mov clockp,r0 / increment appropriate time category ind chown isown: jsr r0,arg2 jsr r0,namei br error3 jsr r0,iget tstb u.uid beq 1f cmpb i.uid,u.uid beq 1f jmp error3 1: jsr r0,setimod mov (sp)+,r2 rts r0 syschmod: jsr r0,isown bit $40000,i.flgs / dir beq 2f bic $60,r2 / su & ex 2: movb r2,i.flgs br 1f syschown: jsr r0,isown tstb u.uid beq 2f bit $40,i.flgs bne 3f 2: movb r2,i.uid 1: jmp sysret4 3: jmp error / pick up 1 argument supplied by user. / argument is stashed into address following call. / user's return pc is bumped. pb utime,$6 / bhis fupdate / rts r0 fupdate: / clrb utime clr r1 jsr r0,iget tstb smod beq 1f clrb smod bis $1000,sb0 jsr r0,ppoke 1: .if ndem mov r1,-(sp) mov r2,-(sp) mov $demb,r2 1: mov 6(r2),r1 tstb -3(r1) beq 2f clrb -3(r1) bis $1000,(r2) jsr r0,ppoke 2: add $8.,r2 cmp r2,$demb+[8.*ndem] blo 1b mov (sp)+,r2 mov (sp)+,r1 .endif rts r0 / clear core / 1st arg after call is first location / 2nd arg after call is last location copyz: mov r1,-(sp) mov r2,-(sp) mov (r0)+,r1 mov 1ÎéA1ÎîAsmp 1Î@B1ΜBken 8Î D6ÎIEabl 1ÎñEllc 6ÎXIsmp bÎôIbÎ1Jsmp bÎIJbÎ\Jsmp bÎvJbÎúJsmp bÎKbÎOKsmp bÎeKbÎèKsmp bÎLbÎYLsmp bÎ MbÎhM6ÎO6ÎOsmp 6ÎP6ÎQPllc 2ÎkPsmp 6ΖP6ÎüPsmp 6Î=Q6΂Qjfo aίX c, * ins; cflag = dflag = iestr = bmode = 0; next -> length = 0.0; while (( c = getchar( )) != '$' ) { if ( c == '\n' ) c = getchar( ); if ( c == ' ' && ! bmode ) continue ; switch ( det( c )) { case 0: /* Alphabetic character */ if ( ! iestr ) cflag = bmode = 1; if ( dflag ) { printf( "Error - alphabetic character embedded in digit\n" ); exit( ); } next -> estr[ iestr ++ ] = c; next -> length =+ LTAB( c, 1 ); continuearg: mov u.sp,r1 mov *18.(r1),*(r0)+ add $2,18.(r1) rts r0 / put user's first arg into u.namep / put user's second arg into (sp) (via u.off) / note funny return sequence arg2: jsr r0,arg; u.namep jsr r0,arg; u.off mov r0,r1 mov (sp),r0 mov u.off,(sp) jmp (r1) systime: mov s.time,4(sp) mov s.time+2,2(sp) br sysret4 sysstime: tstb u.uid bne error4 mov 4(sp),s.time mov 2(sp),s.time+2 br sysret4 sysbreak: mov u.break,r1 cmp r1,$core blos 1f cmp r1,sp bhis 1f bit $1,r1 beq 2f clrb cmp r4,$'/ beq 3f cmp r3,$u.dirbuf+10. beq 3b cmpb (r3)+,r4 beq 3b br 2b 3: cmp r3,$u.dirbuf+10. beq 3f tstb (r3)+ bne 2b 3: mov r2,u.namep mov u.dirbuf,r1 tst r4 bne 1b nig: tst (r0)+ nib: rts r0 syschdir: jsr r0,arg; u.namep jsr r0,namei br error3 jsr r0,access; 2 bit $40000,i.flgs / dir beq error3 mov r1,u.cdir mov cdev,u.cdev br sysret3 / check that user is owner of / file or is super. / arg2 is called, and i-node is marked modified, since / it's used, e.g., during chmod an0 0 0 23 50 800 60 1 1 Skylab E, 41893, 73-27E 1973 7 30 17 38.52380 50.04864 218.72168 -24.39830 230.91911 0.27305 93.00614 -0.0000714 0.0019722 4210.9058 2.00000 ires for more "proffesionalism" about their jobs: a desire to feel that management has respect for their jobs and for their ability to contribute to and be responsible for their jobs. Three issues which were referred to most frequently are: advancement, relations with supervision, and responsibility. .sp 1 .ti 5 As far as advancement was concerned, women mainly wanted promotion to be open publicly to all qualified people. Public listings of job openings and requirements and a somewhat standardized merit and@f€fŸX’X�X XÓOÓOÀOàO}~bbbbb€baaaa\àOðO}m}m@m€mÏlÏlÀlÐl^`^`P```VPVPP€PíXâXàXðXT °gÀgy`r`p`€`rara`a€aðmðm€mnü€O�Oa`a```p`ÑaÂaÀaàaß2Ñ2Ð2à2/Y"Y Y0Yggg g„ €t�tºU±U°UÀUàuv´�t tŽPŽP€P�P„u€u®G®G G°GÖYÁYÀYàY­g¢g g°g�Q�Q€Q�QÈzÈz€z{ü  uÀuìfìf€fgïeïe€ef?a?a0a@aÖPÁPÀPàP¯Q¡Q Q°QTgBg@g`g�a‚a€a�a�O’O�O O6f"f f@f y yxzzOzO@O€OüQñQðQRÝ`Ý`Ð`à`Ÿn‘n�n nÖcÂcÀcàc,À`Ð`ÖQÖQÐQàQssrt‘g‘g€g gÎbÎb€bc‘`‚`€` `±`¢` `À`¿P±P°PÀP}l}ll€l”l‚l€l lô ÀuÐuö]â]à]^ygrgpg€gÏMÂMÀMÐM¹M²M°MÀMä ü4ôäÔ  D ô¬ Ì ” $pjpjhláZáZZ[/1!1 101qp€++@f#f#"$FA@HP .)(0>98@ ­­ÁGÁGÀGÐGêI€I€IJ¿¿&! (h!h! "|^|^^`ÐЀ6108ä,ä,(0UQPXNIHPƒ0001`222€2Á'Á'$(Þ1Þ1€12ia`pÂ6Â648Ã9Ã98:ô3ô3€34VV€_YX`Ÿ‘� qa`€QA@`©¡ °Œ<Œ<<= 1111j3j33€3¼±°Àý;ý;;<…�€ˆe===€=Q:Q::€:z1q1p1€1Ø?€?€?@=11101@1×:×:€:;�‰ˆ�”>>>?ÞÑÐàTFFF€FÎÁÀÐl???€?^@@@€@ùñj3llpcntn3fmtchröllpl3crackª ngflg¾3rep¸3item´ switchämswitchÆ afmt&ffmt>efmtPgfmtJdfmtDifmt,lfmt0hfmtxfmtscalL minus6 numb> slashl lparÔ rparr quotegnumÀscaleº3elistT eorec1Veorec>getitmcrack1Îwidth\3err1Òndig`3cvsw¦gflgL3iocvžiicvÀlocv*licvŽfocv¦ficv3f asr r2 cmpb p.stat-1(r2),$3 bne 2f clrb p.stat-1(r2) 2: asl r2 3: cmp p.pid-2(r2),r4 bne 3f mov r2,r5 3: cmp r2,$nproc+nproc blt 1b mov r5,r1 beq 2f asr r1 movb p.stat-1(r1),r2 beq 2f cmp r2,$3 beq 2f movb u.uno,r3 movb $3,p.stat-1(r3) cmp r2,$2 bne 2f decb p.stat-1(r1) mov $runq+4,r2 jsr r0,putlu 2: clrb u.uno jsr r0,swap halt / no returns from this swap / see if this process owns a quit / or interrupt from typewriter. if / so, set trace trap or do sys exit. / called at innsert(in,ls) char *in,**ls; { char *s,*end; end = *ls; if(*in=='e') if(*in++=='|') return; for(s=++end;s>=in;s--) s[1] = *s; *in = '|'; *ls = end; } char * suffix(in,end,s) char *in,*end,*s; { char *t; while(*s) { t = end+1; while(*s == *--t) s++; if(*s==',') { if(vowel(in,t+1) lpnt ) -> cpnt = pntl 313 344 pntl = snode -> lpnt 314 345 pntl -> bpnt = snode 315 346 ( pntl -> cpnt ) -> bpnt = pntl beautified p2.c page 9 316 347 pntl -> hsz =( pntl -> cpnt ) -> hsz 317 348 pntl -> htsz =( pntl -> cpnt ) -> htsz 318 349 pntl -> hbsz =( pntl -> cpnt ) -> hbsz 319 350 motion( 0, aladjust( pntl, 0, [fixpl] [header] .sp 3 [[1]-name_and_address] .sp 2 Dear [[1]-dear_whom]: .fi .sp 2 I am pleased to inform you that your paper "[[1]-paper]" has been accepted for publication in the Communications of the ACM. I have forwarded your manuscript to ACM to be published in the earliest possible issue. The time lag between acceptance and publication is approximately {time_lag}. .sp Please furnish the appropriate information on the enclosed page charge form and return it promptly to ACM headquarters. [footer] .sp [fixpl] [header] .sp 3 [[1]-[2]-name_and_address] .sp 2 Dear [[1]-[2]-dear_whom]: .fi .sp 2 On [[1]-[2]-date_sent], I sent you the manuscript entitled "[[1]-paper]". .sp I have not yet received your report on this manuscript. I would appreciate getting your report as soon as possible. [footer] .bp .pl 6 .nf [[1]-[2]-name_and_address] iciently novel, timely, and properly oriented to be of interest to the readers of the CACM? .sp Does it present a solution or technique amounting to more than a straightforwardB T ð€&Ð 6÷ –% ‰f…Æå @&ß xÖ 5þýÎ@Àeþ&fþýß H–%5üý@üý@a0ŠÿýNüýÎeÿÿ@Àeþ&ß ÌÖ ÎêæâæàæØæß 4Æewæf…æ wm¼À¸· ´÷E€¬wÆf…æ wm Àœ· ˜÷E€�w¦f…Æå W-_.@€ 5úÿ5 þÿuüÿ@@mþÿAAmúÿ ¢Îß Œµ þÿïÎß Œu-üÿúÿ4Îß Œ@@múÿõ üÿAüÿAm ¢#u-þÿúÿuüÿúÿÎß ¬@@mþÿ’5øÿ@@mþÿAAmüÿA’H�@@müÿH�øÿ´Èu-þÿúÿ,@@íúÿ@-úÿNúÿfß ÌÖ @úÿ€ 5`@úÿ€ 5àNNíúÿÎeÿÿfNmúÿŽ ß ÌÖ uúÿ_ÔÎYÀ ¼,ˆ†‚ù application of conventional techniques to a well-recognized problem? .sp Is the paper clearly written with terms and symbols defined? Is it logically consistent? Is the bibliography relevant and appropriately complete? .sp .in 0 Your comments on other aspects of the paper which seem to you important would also be welcome. In the event that you consider the paper publishable, but overlong, suggestions for curtailing it will be appreciated. .sp Please place your remarks on a separate sheet of paper or on the+,r1 beq 1f mov $runq+4,r2 mov $300,*$ps jsr r0,putlu clr *$ps 1: jsr r0,isintr br 2f mov (sp)+,r1 rts r0 2: jmp sysret / check to see if a quit or interrupt / from a tty belongs to the current user. / if so, don't skip on return; if not, do / skip / flush output when interrupt does belong isintr: mov r1,-(sp) mov r2,-(sp) mov u.ttyp,r1 beq 1f movb 6(r1),r1 beq 1f cmp r1,$177 bne 3f tst u.intr bne 2f 1: tst (r0)+ 4: mov (sp)+,r2 mov (sp)+,r1 rts r0 3: tst u.quit beq 1b 2: mov $L7L8ŽL9ŒL10TL11îL12ÈL13êprintf.o4formpbloopHrjustdgnum¸width`ndfndfswtab¬decimalÌoctalfloat8scienBcharacústringlogicalØprbufLspacesjbufphffltpr.oäåîread.oHretrn.ojopen.oxput.o–flèsavr5$\_main"_ncomp$T_nc2$V_nexc$X_ne2$Z_open"x_read"H_ssort"Ì_printf"4retrniles are subject to the same protection mechanism as regular \(files. .s2 3.4 Removable \(file systems .es Although the root of the \(file system is always stored on the same device (the \(fixed-head disk), it is not necessary that the entire \(file system hierarchy reside on this device. A \(file may (by means of a \fImount\fR request) be marked as a .ft I cross-device .ft R \(file. \fIMount\fR has two arguments: the name of an existing ordinary \(file, and the name of a special \(file containing its own d 1. INTRODUCTION A set of I/O routines for the GCOS C language(1) are described. These routines use TSS GEFRC(2) and have been written so that most. r0)+,r2 mov (r0)+,r3 movb wlist(r3),r1 beq 2f cmp r2,u.pri bhis 1f clrb uquant 1: clrb wlist(r3) jsr r0,putlu 2: mov (sp)+,r1 rts r0 / wait for event / 1st arg after call is wait channel number / sleep may return at any time, even if / event hasn't happened. / also it may do a return to user if he / sends an interrupt that he wants to catch sleep: mov r1,-(sp) jsr r0,isintr br 2f mov (r0)+,r1 movb wlist(r1),-(sp) movb u.uno,wlist(r1) mov cdev,-(sp) jsr r0,swap mov (sp)+,cdev movb (sp)\\v'.2m'\\h'%.2fu'\\\n", snode -> hsz ); else printf( "\\v'.2m'\\\n" ); } break ; case 13: case 14: if ( snode -> perturb ) printf( "%s%.2f%c'",( snode -> perturb ) -> escape,( snode -> perturb ) -> value,( snode -> perturb ) -> unit ); if ( nnode -> type == 14 ) printf( "\\fR" ); printf( "%s\\\n", string -> estr ); if ( nnode -> type == 14 ) printf( "\\fP\\n" ); } if ( snode -> restore ) { printf( "%s%.2f%c'\\\n",( snode -> restore ) -> escape,( snode -> restoreb $7,ttycol beq 1f movb $11,ttyoch 1: mov r1,*$tpb cmp r1,$12 bne 1f movb $15,ttyoch 1: cmp r1,$15 bne 2f movb $15.,toutt+0 clrb ttycol 2: rts r0 / paper tape input time-out subroutine / keeps setting itself up until error stops / happening instantly / (i.e., until reader goes on-line) / start (or restart) paper tape output / wake up (reschedule) all processes waiting / for an event. / 1st arg after call is queue address / 2nd arg after call is wait channel number wakeup: mov r1,-(sp) mov (tei 1: mov u.nread,*u.r0 br sysret1 rw1: jsr r0,arg; u.base jsr r0,arg; u.count mov *u.r0,r1 jsr r0,getf rts r0 sysopen: jsr r0,arg2 jsr r0,namei br error2 tst (sp) beq 1f neg r1 1: jsr r0,iopen tst (sp)+ beq op1 op0: neg r1 op1: clr r2 clr r3 1: tstb u.fp(r2) beq 1f inc r2 cmp r2,$10. blt 1b br error2 1: tst fsp(r3) beq 1f add $8.,r3 cmp r3,$[nfiles*8.] blt 1b br error2 1: mov r1,fsp(r3) mov cdev,fsp+2(r3) clr fsp+4(r3) clr fsp+6(r3) asr r3 asr r3 asr r3 inc r3 mo cmp 30,$core blo 1f cmp 30,$ecore blo 2f 1: mov $rtssym,30 2: br sysret2 sysilgins: jsr r0,arg; 10 cmp 10,$core blo 1f cmp 10,$ecore blo 2f 1: mov $sysent,10 2: br sysret2 sysmdate: jsr r0,arg; u.namep jsr r0,namei br error2 jsr r0,iget cmpb u.uid,i.uid beq 1f tstb u.uid bne error2 1: jsr r0,setimod mov 4(sp),i.mtim mov 2(sp),i.mtim+2 br sysret2 sysstty: jsr r0,gty mov r2,-(sp) mov r1,-(sp) 1: mov (sp),r1 movb tty+3(r1),0f mov $240,*$ps jsr r0,getc; 0:.. br .+4 br 1b rom init tape 47. 100036 .byte 1,3 9f-.-2 8: sys break; 0 sys open; 6f-8b+core; 0 mov r0,r1 mov $65.,r2 1: mov r1,r0 sys read; 9f-8b+core; 512. dec r2 bne 1b 1: mov r1,r0 sys read; 9f-8b+core; 512. mov 9f,r5 / size beq 1f sys creat; 9f-8b+core+4; 0 mov r0,r2 movb 9f+2,0f sys chmod; 9f-8b+core+4; 0:.. movb 9f+3,0f sys chown; 9f-8b+core+4; 0:.. 2: tst r5 beq 2f mov r1,r0 sys read; 9f-8b+core; 512. mov $512.,0f cmp r5,$512. bhi 3f mov r5,0f 3: mov r2,r0 sys write; 9f-8b+core;vb r3,u.fp(r2) mov r2,*u.r0 br sysret2 error2: jmp error sysret2: jmp sysret syscreat: jsr r0,arg2 jsr r0,namei br 2f neg r1 jsr r0,iopen jsr r0,itrunc br op0 2: mov (sp)+,r1 bic $!377,r1 jsr r0,maknod mov u.dirbuf,r1 br op0 sysmkdir: jsr r0,arg2 jsr r0,namei br .+4 br error2 tstb u.uid bne error2 mov (sp)+,r1 bic $!317,r1 / all but su and ex bis $40000,r1 / dir jsr r0,maknod br sysret2 sysclose: mov *u.r0,r1 jsr r0,fclose br error2 br sysret2 sysemt: jsr r0,arg; 30 / u1 -- unix / system entry from various traps / determine trap type, and jump to / appropriate system call handler. sysent: mov ps,u.savps incb sysflg beq 1f jmp panic 1: mov $s.syst+2,clockp / set "overhead" / save user's registers mov r0,-(sp) mov sp,u.r0 mov r1,-(sp) mov r2,-(sp) mov r3,-(sp) mov r4,-(sp) mov r5,-(sp) mov ac,-(sp) mov mq,-(sp) mov sc,-(sp) mov sp,u.sp mov 18.(sp),r0 mov -(r0),r0 sub $sys,r0 asl r0 cmp r0,$2f-1f bhis badsys bic $341,20.(sp) jmp *1f(r0) 1: sysmov 0b,r1 inc r1 tstb cc(r1) beq 1f mov r1,0f jsr r0,sleep; 0:.. br 1b 1: mov (sp)+,r1 mov (sp)+,r2 mov (r2)+,r3 beq 1f mov r3,rcsr(r1) 1: mov (r2)+,r3 beq 1f mov r3,tcsr(r1) 1: mov (r2)+,tty+4(r1) jmp sysret2 syssync: jsr r0,fupdate br 1b sysgtty: jsr r0,gty mov rcsr(r1),(r2)+ mov tcsr(r1),(r2)+ mov tty+4(r1),(r2)+ jmp sysret2 / generate tty register offset from i-number in r1 / output: offset in r1, source (destination) / of info in r2 gty: jsr r0,arg; u.off mov *u.r0,r1 jsr0f…æ ÷ öÿ÷ òÿwîÿ)9_main"_initsa _driver retrn map 1Í¢õdoug 2Íö1ÍŒötriad 1ÍÝù1Í úmel 1Í%û0Íÿûlem 0Í0üdoug aÍÞü1͉ýmel 1ͦýtriad dÍúÿsny 4ÎÞmel 5Îz1ÎI5ÎÓmel 1Îà1Εmel 1Ϋtad 5Îï5Îß5Îòllc 2Î( tad 5Î4 1΂ 5ÎŒ mel 1Ε dÎ!4Îa!sny 4΃!smp 5Îs&tad 6Î(' technology. He was a member of the US team specializing in computers applied to economics and management control. The team visited 40 planning institutes including GOSPLAN, the national planning institute in Moscow. Mr. McMains will share his impressions with us. (Sponsor \(em E. E. Zajac) .ft B MH~Auditorium .bl .ce .ps 10 .ft B THURSDAY, SEPTEMBER 20 .sp .ps 8 .ft B 2:30 \(em ALGOL68 COMPILER \(em .ft I Dr. S. R. Bourne, Cambridge University, England. .ft R ALGOL68C is a language closely related to ALof shifts, and investigating recursively reductions */ /* CSTATE and LASTRED describe the state and reduction at the top of the recursion. STATE is the current state under consideration, and the state CXT is the context state, encountered DEPTH states earlier in the search */ extrn temp1,temp2, tystate, pstate, nstate, prdptr, clash, lastred, nterms; extrn t2index, cstate, pempty, zzlalr, zzpairs, zzntlalr, maxtmp; auto p, i, shift, terml, q, n, nt, ntp, ctmp1, j, s, eprod; 139-other_authors Digital Equipm139-name_and_addressMain Street 139-paper FatemaJune 7, 1973 iveProfessor Fateman 159-date_receivedn of Powers of February 25, 1972 ssachusetts InOn the Computation of Powers of Polynomials  $<4¤\ thiProf. Richard Fateman Department of Mathematics Massachusetts Institute of Technology Cambridge, Massachusetts 02139 4¤\d,188-2-name_and_addressthms of Ve217-1-dear_whomi219-paperscript 207-2-dear_whomKProfessor King i207-2-date_sentaJune 22, 1973 Corele / 0 sysrexit / 1 sysfork / 2 sysread / 3 syswrite / 4 sysopen / 5 sysclose / 6 syswait / 7 syscreat / 8 syslink / 9 sysunlink / 10 sysexec / 11 syschdir / 12 systime / 13 sysmkdir / 14 syschmod / 15 syschown / 16 sysbreak / 17 sysstat / 18 sysseek / 19 systell / 20 sysmount / 21 sysumount / 22 syssetuid / 23 sysgetuid / 24 sysstime / 25 sysquit / 26 sysintr / 27 sysfstat / 28 sysemt / 29 sysmdate / 30 sysstty / 31 sysgtty / 32 sysilgins / 33 syslowpri / 34 syssleep / á.H..øu0ãu1Ûu2fu3 u4ýu5u6u7Xu8xu9üux£filenulls.c He will inform you of his decision. [sorry] [footer] .sp Copy to M. S. Lynn .sp [{[1]-new_dept.}-name_and_address] .bp .pl 6 .nf [[1]-name_and_address] .bp [{[1]-new_dept.}-name_and_address] ixpl] [header] .sp 3 [[1]-name_and_address] .sp 2 Dear [[1]-de[fixpl] [header] .sp 3 [[1]-name_and_address] .sp 2 Dear [[1]-dear_whom]: .fi .sp 2 Many thanks for your letter of [[1]-date_recÀnÀmF…‡f…æ AÀ 5rNÎe0ß 0AÀ 5rF…‡f…æ ÷ ò Àî H�wúüf…wà ÷ ú  ‰R‡À À�ì ÀEÿôw ²L‡À ú 7 ¬ wºü„ ”rà eÃÂÀ$üJ\€�6rw ‡€�6r@‡f…w¢wž‰n†wZüw^üf…@w†w‚‰t†w8üw<üfA7p‰z‡ �…Éÿÿ�±…fAñ @Àe7j1@‰ ‡À �±…À 1 @Þ± �…fA7>‰¦‡  �…Ñÿÿ�±…fAñ &÷ €ø9�± �…&fA÷ �€…@Àe&7 w·ã@‰È±ñ‡<<8><<¸><H­ß<€:>YMH9o< G€«YA>1.7¥{ƒ; Õo6Ö'—C-� ëw¢f@‘\NÑÍ;Ö:Dõ»¡óDð)LË´@†:Ë žš;bîÊH-t9@I,&4:xTDlšu�iSÍ@™®ÓÛÆ¨;­�Íarz´D€@Ö4”¿A€@»BLžQŒjU=a2|QÚÜ6øqŽQ�IAÚ!¢ÂhŽ=5ú”Äï(Hhxˆ¨¨¨Øèˆ¨¨¨Ø(ˆ¨¨؈¨¨¨Ø(¨¨H˜Ø(ˆ0 0 0 23 50 800 60 1 1 Cosmos 220B, 41891, 68-40B 1973 7 28 2 56.81328 74.05200 269.45703 -11.50233 248.70816 -0.14722 99.01777 -0.0000028 0.0056846 4375.1138 0.00000 -> node ) -> rpnt =( stop - s ) -> node 88 110 (( stop - s ) -> node ) -> bpnt =( stop - p ) -> node 89 111 RETURN______ 90 112 CASE____ 2 :_ 91 113 /* beautified p1base page 4 center pointer 92 115 */ 93 116 (( stop - p ) -> node ) -> cpnt =( stop - s ) -> node 94 117 (( stop - s ) -> node ) -> bpnt =( stop - p ) -> node 95 118 À 5Qþÿ@À 5¶~üÿ@üÿõ5þÿ @üÿtýÿAþÿWtýÿ @üÿÀEüÿ@üÿtýÿAþÿWtýÿ ÀÀF…‡f…Æåõÿÿôÿµ ôÿ@ôÿÀ-V_P@ôÿðµ~]ñ@ôÿÀ 5¬Uúÿ@ôÿÀ 5®Uøÿ@øÿ@íúÿ€ À%Ý5 òÿõÿÿðÿõÿÿîÿu-úÿøÿ/†@úÿ&@úÿ5îÿµ òÿ@úÿÀí¬J€ ß DÀ @ðÿuîÿðÿNfîÿfðÿfôÿæ2*ß ~ÆeõeúÿÍ@òÿŸW-òÿ@ðÿ˜Nfðÿß æ Ö À �@ôÿÀ 5–YþÿNþÿß *&5öÿ@-@öÿõeþÿ W-òÿ_jÎ^*ß r åNþÿŽ ß *&5öÿ@öÿ@ðÿ_jNfðÿföÿfôÿæx*ß ~Æe_Lu-ðÿîÿ@ðÿ@ðÿ @-öÿ @ðÿ f______ 619 697 CASE____ 4 :_ 620 698 /* Plus or minus 621 700 */ beautified p1.c page 21 622 701 623 CASE____ 5 :_ 624 702 /* Multiplication or division 625 704 */ 626 705 627 CASE____ 6 :_ 628 706 /* Equal sign 629 708 0:.. sub r0,r5 br 2b 2: mov r2,r0 sys close br 1b 1: mov r1,r0 sys close sys exec; 5f-8b+core; 4f-8b+core sys exit 4: 5f-8b+core; 0 5: 6: .even 9: / end of initialization data 0 .endif f…w„)w "’{7 z)w7Œ+ÀÿÿF…‡f…w`)÷ x+  ‰ }‡À À�j+ÀEÿôw ^š}‡À ú 7 ,)wºÿ�B@$üJY„ ”rà eÃÂÀ$üJ\fA7¸ ‰>_‡ �…Éÿÿ�±…fAñ @Àe7² 1@‰d_‡À �±…À 1 @Þ± �…fA7† ‰j_‡  �…Ñÿÿ�±…fAñ &÷ €ø9�± �…&fA÷ �€…@Àe&7R wN ·ãH @‰Œ_±ñ‡ '&. (&/*4+5>E -61:7@<DBGCHFJ  ÿÿ !79; 97 { 78 98 2 CASE____ 0 :_ 79 99 /* left pointer 80 101 */ 81 102 (( stop - p ) -> node ) -> lpnt =( stop - s ) -> node 82 103 (( stop - s ) -> node ) -> bpnt =( stop - p ) -> node 83 104 RETURN______ 84 105 CASE____ 1 :_ 85 106 /* right pointer 86 108 */ 87 109 (( stop - p ) match[j++] = k; sa: k=(k+1)&0777; } return(j); } hash(f,i,n) int f,i,n[];{ /*Finds and returns hash address corresponding to the test line beginning at f[i]. Sets n equal to the number of characters in the line. Returns -1 if eof encountered. */ extern hashc; char c; int k,j,jj; hashc++; /* printf("hash\n");/*debug*/ if(seeka(f,i,0) < 0) error("on seek"); k = 0;/*hash code*/ j = 0;/*character count*/ jj=0; /*non-blank character count*/ while((c=get(f))>0){ j++; ™™™™š™Ì?ÌÌÌÌÍÌÌ¿ÌÌÌÌÍÌÌ?ÌÌÌÌÍÌ@™™™™š™À™™™™š™@™™™™š™3@3333333À3333333@333333™?™™™™š™™?™™™™š™L@ÌÌÌÌÍÌÌ>ÌÌÌÌÍÌÌ>ÌÌÌÌÍÌÌ?ÌÌÌÌÍÌ™@™™™™š™v ”/xA Š!d)ÆA :B :ð1v ø+:Bâ:p.8\(ul\(ul\ \h'%.2fu'\(ul%s%.2f%c'%s%.2f%c'%s%s%.2f%c'\ %s%.2f%c'\ %s%.2f%c'%s%.2f%c'\ %s%.2f%c'\ %s%.2f%c'\ %s%.2f%c'%s%s%.2f%c'\s%d%s%.2f%c'\ %s%.2f%c'\s%d\ %s%.2f%c'\s%d%s%.2f%c'\ %s%.2f%c'\s%d\ %s%.2f%c'\ %s%.2f%c'\ %s%s\ \|\|%s%.2f%c'%s%s%.2f%c'\ \s%d\s%d\ \s%d\s%d\ ``V%stUdistudi%stUdystudy%stead`U~a%steinstIn%ste|nse|n%stio`UozN%stlsl%stood``UhaU%st|ablstAbl%suA`RA%sua``Ra%sualzUal%suggesugest%suit``HHU%sweat`RDU%sy#mmV%tU%t#Ud%tIcetice%tIvUup%tUUHH%tUrUoHT%te|#Ud%te|dUua%thF%thmG\s%though#GNKK%threatFTDU%throughFTHH%throwFTYR%tiAnzA%tiOntion%tianzN%tiennzr%tionzN%tioutio%titltItl%togETHe|rUHHc~GE%touchtuch%towardtord%truthUTHHF%tsUU`%ttt%ttlU\g%tueUoUe%tzU/ u0 -- unix cold = 0 .. = 0 orig = 0^. / device addresses rkda = 177412 / rk disk rkds = 177400 rkcs = 177404 mtcs = 172522 / mag. tape mtds = 172520 mtba = 172526 rcsr = 174000 / DC11 receiver rcbr = 174002 tcsr = 174004 / DC11 transmitter tcbr = 174006 lks = 172540 /clock KW11 - p tks = 177560 / console tty tkb = 177562 tps = 177564 tpb = 177566 csw = 177570 ps = 177776 / non-assembler instructions halt = 0 wait = 1 rti = 2 / parameters dmapsz = 518. imapsz = 104. dskhi = 4872. nproc = 12. nfilesl, followed by a single consonant*, then a vowel is pronounced long. Examples: .fI major relay minus local futile .fP *from the standpoint of pronunciation, .fI x .fP is not a single consonant while .fI th .fP is. However the rule is full of exceptions especially when extended to polymorphemic words: .fI camel metal digit model hexameter minicar molecule .fP It does apply reliably however to .fI u .fP We mark potential long vowels by changing them to upper case: (a) ~{ .fI aeiou .fP ] .fI u .fP ~[ .fI aeio cmp r1,$bufp+nbuf+nbuf blo 1b mov $sb0,(r1)+ mov $sb0+4,r0 mov $-[inode-systm\/2],(r0)+ mov $systm,(r0)+ mov $sysm+4,r2 1: mov r0,(r1)+ cmp (r0)+,(r0)+ mov $-512.,(r0)+ mov r2,(r0)+ add $1024.+4.,r2 cmp r0,$sb0+16.+[8*ndem] blo 1b mov $user,-(r0) / turn on clock interrupt mov $115,*$lks / set up time out subroutines mov $touts,r0 mov $startty,(r0)+ cmp (r0)+,(r0)+ mov $ntty-1,r1 1: mov $xmtto,(r0)+ dec r1 bne 1b / free all character blocks mov $510.,r2 mov $-1,r1 1: jsr r0,png 'address' back to disk if it came from there. SAVEALL(mode) Writes back all altered pages. If mode=| 0 all unlocked pages are marked as free. Buddy allocator calls Defined for 0<_size<8 TYPECODE = SIZE:8; TYPE:8; FIND(typecode) Obtain a block of space of indicated size and set type accordingly. Result is block address. FREE(address) Free a block whose address is given. Disk transfer Disk read and write routines are called only by page in current version. Make temporary versions that check to make MdÉÎ…” —¨ource of serious, career-oriented individuals by making more responsible jobs available to them. .sp 1 .ti 5 Women reported a need for counseling in what type of education might best help their present positions and prepare them for future promotions. If this information were more readily available, it would be of mutual benefit to Bell Laboratories as well as to the women. .sp 1 .ti 5 B. Relations with Supervisors .sp 1 .ti 5 Generally poor communacation between employees and their supervisors was commonl1; break; case STX: if (txt) return(0); else txt=1; if (hdr) bcc=^c; break; case DLE: if(inbuf[i]==EOT) reset(); else return(0); case ETX: bcc=^c; if((bcc==inbuf[i])&&txt) return (1); else return (0); case ACK: case NAK: case EOT: case ENQ: return(0); default: if (c&0200) return(0); else bcc=^c; } return(0); } dump(a,b,n) char a[], b[]; int n; { int i,tvec[2]; char tstr[16]; time(tvec); ctime(tvec,tstr); printf("\n%s %s \n",a,tstr); for (i=0;i node =( stop - 1 ) -> node 435 483 tweek = 0 436 484 stop =- 3 437 485 BREAK_____ 438 486 CASE____ 29 :__ 439 487 /* diacriticals beautified p1base page 15 440 489 *×­Öc 5 õþÿw-þÿ2AþÿWp NÎe”bß 0!À @þÿCµ þÿëõþÿw-þÿð1AþÿWp NÎe~ß 0!À @þÿÀe)µ þÿé@· ¾1Áº1Wp NÎe~ß ö À¨1Àe· š1Á–1Wp NÎe”bß ö À„1À 0 ¶~Àz1F…‡f…Æå  æ-ß °%Ö  æ -ß °%Ö  æ -ß °%Ö Îæ-ß °%Ö ÷Ò-.5 úÿ5 þÿ΀æ-ß èTÖ 7¸b΀æ"-ß èTÖ 7¨b÷ HùÎ,-ß ~÷ îû5øÿÀ% ß è!÷ ÚûÀ%ÎL-ß r ÷ 05�öÿW­öÿ;@�öÿõá@øÿ8 ß è!5üÿ@üÿÀ púÿ¶~@?5 úÿ<µ þÿ@þÿtÀU5úÿ1µ þÿ@þÿtÀU5úÿ&µ þÿ@þÿtÀU5úÿÎV-ß r _$Àå ƒôÀ xð# /*next move int tree*/ while(*tree >= 0 && *(tree =+ *tree + 3) >= 0) { /*check new tree for repetitions*/ if(*tree++) /*skip jumps*/ tree =+ *tree + 2; else { if(*tree++ == finish) { if((finish = *tree++) == begin) { if(b > 0) b =- b/4; else b =- b/8; goto next; } } else tree++; } } } next: if(-b >= val) bitpat[begin] = 0; if(b <= alpha)return(32000); if(-b < beta + minval)goto nextone; beta = -b; hiscount = counte¨¨¨Øèˆ¨¨؈¨¨¨Øèˆ¨¨؈Hhˆ¨¨(ØèHh¨Ø(ˆ¨¨HX¨؈¨¨¨HhØèˆ¨¨(¨¨HhØèHh¨¨H¨Ø(xˆ¨¨èˆ¨HÈHhèøHHh¨èHh¨(xHH¨HhxHhبHhxH¨Hxˆhˆ¨¨èˆ¨¨¨¨H¨ection with reuse of entry. j. mode flag bits - bit 7 =1 if file is large. bit 5 =1 if file content is not represented. bit 0 =1 if file is altered. k. number of active readers. l. number of active writers (x2). m. access permitted to general user. n. 15 bit key reqiured for special access.*/ /*duname - prototype name of a disk drive. repfun - name of the repair disk pack function. openfile - list of files currently open but not disk drives. dlabel - array of pointers to disk volume label indexed by driv: printf("STX "); break; case ETX: printf("ETX "); break; case EOT: printf("EOT "); break; case ENQ: printf("ENQ "); break; case ACK: printf("ACK "); break; case NAK: printf("NAK "); break; case DLE: printf("DLE "); break; case DC1: printf("DC1 "); break; case DC2: printf("DC2 "); break; case SYN: printf("SYN "); break; case DEL: printf("DEL "); break; default: putchar(b[i]); break; } putchar('\n'); } KÈó Fæf �P¬½   a single reduction, return 2 otherwise, return 0 */ extrn pstate, tystate; auto s, m, k, j; if( tystate[i] != 0 ) return(1); /* no need to do this */ s = m = 0; /* s = number of shifts, m = number of redns */ k = pstate[i+1]; for( j=pstate[i]; j0 ) ++s; /* a shift */ else ++m; } if( m==0 | m==1 & s==0 ) { tystate[i] = 3; return( m+1 ); $) return(0); } setstat(){ /* establish current state */ extrn cmem, memact; auto a; a = cmem;”epsilonL>ten Bpad6digit1Ldigit>outVoutoutŒprintf.oœformp¢+loop°rjust¤+gnum width +ndfnd¦+swtabdecimal4octalzfloat scienªcharacbstringllogical@prbuf´spacesª+bufp¨+åL retrn.o¦ getchr.o´ ssw.oô atof.o ptr$ get.o& put.o„ flÖ atof.o ldfps @ðstfps €ðdigit´ one€@outž hugeÿten BbigÈÀ�Š_ÐÎ‚ß šÀ 17 z×-v+Îxæß BÖ 7 b×-^Îß bÀ Îæ|ß BÖ · 8ê×-2÷ ŽÀ%· Ñ…Î‚ß ¤À !ÎæŠß BÖ Îß bÀ ÷ hÀ Îæ’ß BÖ îÎæŠß BÖ Îæ’ß BÖ _¦_‚ Àå ƒ÷À xâújwôf…¦)õ•þÿ÷-ŽŽÀ†¬„ Àz· vœ„5�þÿ· hêW­þÿ ×-b÷ n÷R7 Lõµ€þÿ÷@@�þÿÀE€ÿF…‡f…¦)5 þÿÎ€æ„æß l –%7"ÀÎ æøæôß 0–%Îß ¶ µ þÿµ þÿ@þÿ@-À?Îß ¶ Ò7 ¼À¸¬„· ¬÷7 °Î¤æ„æß 0 3 CASE____ 30 :__ 334 371 /* function name 335 373 */ 336 374 ( stop - 1 ) -> node = alcopy( 13,( stop - 1 ) -> pstr ) 337 375 tweek = 1 338 376 BREAK_____ 339 377 CASE____ 33 :__ 340 378 /* list 341 380 */ beautified p1base page 11 342 381 0–%À�¬„· „Îr æl æl ß €–%Î` æZ æ ß 0–%�ÀXð•„ F…‡f…¦)w* w& Nfæß 0–%Nfæ ß €–%5þÿu-þÿ Î ææß 0–%wDf…ÆåÀ7�\ 7�W 7�R Nß ¤5üÿ m@üÿÀ š@üÿÀ ð š `@üÿÀ šß ì5�þÿIõúÿW-úÿ€@úÿp�þÿœÀ% @üÿÀ šß ì5�þÿµ úÿæ@üÿÀ šß ìµ úÿAúÿ1�@úÿ€ 7> &Î æ&æ"ß 0–% ß  Î@�þÿ&æ2ß 0–%  Àåÿÿ ƒíÀ x–RjòòF…‡f…Æå@ŸAAœWt@P5üÿ5 þÿw-þÿÀ @þÿÀ 5,”üÿµ þÿòw-þÿ¤ Àÿÿ@þÿF…‡f…Æå 5�øÿ5üÿ5þÿ5 úÿw-úÿn _&@úÿµ úÿœ„5�öÿX_"@üÿ@þÿ _*õüÿh@þÿ gõþÿ@üÿ @�öÿ&@�øÿx€5�øÿS@úÿ¬„÷  L@�öÿ&@�øÿx€5�øÿ@úÿ5¬„øÿ@þÿÀ7 5 3õµ€öÿ -@�öÿ&@�øÿx€5�øÿÀå ƒêÀ xö8R’ÀÀÀÄÄÄÄÄÄÄÄÄ|ÄÄÄÄÀ4_ F…‡f…Æå@Àeúÿß Ä @Àeêÿ@Àeúÿ&ß Ö @Àeêÿfæ6ß N–%5 þÿu-þÿc@@mþÿ’RÎ@ß N_<ÎFß N_<ÎLß N_<ÎRß N_<ÎXß N_<Î^ß N_<Îdß N_<Îjß N_<Îpß NF…‡f…æ @À ¦#AA @@F…‡f…æ @@À ¦#@] @À ¦#@ AA @@F…‡f…æ Nfß °Ö ÷ Bwªf…¦)5 þÿu-þÿ@þÿÀ p=¦#Î1ß ²Î0ß ²µ þÿéF…‡f…¦)ÎÆ#ß °÷ pþÀ ÎÒOæàß ÌÖ 5 þÿw-þÿÎ@þÿÀ CþÿÃe ·r¸ðÒOµ þÿíÎà#ß °÷ &þÀ *ÎROæ:@ß ÌÖ ÷-0@¦:À(@À ÎeROæ”:Îí@ß ÌÖ õ@þÿw-þÿ~: À@Aþÿµ þÿÁ 1`ROò75 þÿÀæ?Àeÿÿ@-þÿ @þÿµ þÿÀ pþÿROðÀÆ?À 0 POõ¼?þÿÀ.:Àeÿÿ@-þÿ @þÿµ þÿÀ pþÿROðÀ:À ÷-�?: Á„?pPOF…‡f…ÆåÐ@ @m5tÿ5 þÿu-þÿrlangs random start call up group %d pointer %d %d*nbusy %d+ call down i = %d j = %d nbusy %d equilibrum reached after %d calls#= ×p=×£ calculated interval length is %d calls = = %f / %f = %f percent calls blockedÙ G unexpected EOF unexpected EOF€@ €@  unexpected eof ‰¨ÿ‰www lü†…&w `üÀ€U…‰‰¶w w&w žü€Àw ”ü…‰0€@p@ñðc@9ŽW@6”L@ÍÌC@1 :@Œ.2@C*@«ª#@ ×@Ù‰@&´@%I @Ë=@‰ˆ@!@ø?>ð?ñðê?¡ã?9ŽÝ?Ég×?6”Ò?! Ì?ÍÌÇ? ÎÃ?1 ¾?ú‚º?Œ.¶?a ²?C®?ALª?«ªÎÔôöüÎÐÖèòØÜÞèêôþÐÒÔêòöÌÒàèîøÌÐâôøúÖØÚîòúÜâæìðòÞâäîöÒäæîü ÐØäìúÒÚæôþÖäèðô ØæèöøüÖÚìöø ÎäêòøþÐÚêîðôüÔâèìüþÖÞàêìüÔÚàèúÎàæðöúþÒØâêðøÒÜÞòúüÐÔÜîøþ ÌÖÜöþÌØàìòô ÎÚâ ÜàäðÎÔÞìîðÌÞêæú _<Îvß N_<Î|ß N_<Î‚ß N_<@@mþÿ’ß  ÷ ô6ˆš°µ þÿ™Î ß  w�f…w|DÄeÆå€ÀŸn · h % &&ß  Ö „ñÆe€…‡7 J7 @ׯ@-· 8· 6÷.Ò7 . .÷ЃÁÆBÙ üJæd, oR f\ e c sòl Ó•-÷ 6 r f÷ ðÿ€Àe0�‡•à •$Á®“”C~÷ fWtýÿÁEà÷ ðÿ€ÀEøÿÀe0�‡Â‚÷ ¤Âx÷ šÆ ƒó‹ÿÿà ù‚&æ ÁRÁàŠ�`wR÷ Fß  ÷ Bû·:Ο6· 0ß  ø÷ ( ÷ Î ß  ÷ ûÖ „w�þ7  ÀŸø· ôÀå0 ‚· êWp ðBC<ÿ#Gÿÿÿÿ1ooutC:line inactiveI:O:O:C:write errorC:end of testC: %s %s SOH STX ETX EOT ENQ ACK NAK DLE DC1 DC2 SYN DEL  ÄôЈ¬Ü ”¸è‰f·€·w Êý†Àÿÿ …7 ä‡f·Ü·w Æý†Àÿÿ7 Æ…‡‰‰‰www Œý†…&w €ýÀ€U…‰‰¶w w&w ¾ý€Àw ´ý…‰ ÀeÌAøÿõeøÿ µ þÿî ß œ Núÿß ² Núÿß œ F…‡f…Æå"÷ Hÿ7þâ 7üÆ7þÀ7üÂÎî ß ì÷ 5þÿÀ% õ5þþÿ5üèÿ5 üÿW-üÿ!Nüÿß ^uÿèÿô&ø5ÿèÿù@üÿt0ü¦µ üÿè5 üÿw-üÿ`@üÿÀ 0 ̵ üÿôÎß ì÷ ¬7" 7Ð 5úÿõ-È þÿ_÷ 6Á¸ Wtqÿ¦@÷ðI÷ wÿ òû5üÿAüÿWpÁe(uøÿNøÿfüÿæß ì–%5 üÿW-üÿ)Nüÿæ6ß ìÖ @øÿÎ:ß ì@øÿÈ· @ Î< æ<ß ìÖ MÎFß ìõeøÿµ üÿÓAÎHß ìÎ ß ^&ø÷ |òû5üÿNüÿæTß ìÖ 5ìÿ5îÿu-ìÿüÿ @îÿµ îÿÀ ̵ ìÿñõ îÿ@îÿÀ 0 ÌNîÿæ\ß ìÖ ÷ ¤ ck[nrep] {SYN,SYN,SYN,0,0,ACK,DEL,DEL}; char sidnak[nrep] {SYN,SYN,SYN,0,0,NAK,DEL,DEL}; char DCx,SID[2]; char dp[9] "/dev/dp0"; char inbuf[maxchars],outbuf[maxchars]; int M,N,bp,nr,ns,nwp,mark,parity; int onl[3],swait[3]; struct buf { int fildes; int nleft; char *nextp; char buffer[512]; }; struct buf abf,cbf,ebf, *sinp[3] {&abf,&cbf,&ebf}; char call[10]; main(argc,argv) int argc; char *argv[]; { char *pdp; char c,sta[15]; int i,dn; if(argc>1) pdp=argv[1]; else pdp=dp; CDTin=open(pdp,0); CDTout=open(pdp,1top - 1 ) -> node; tweek = 0; stop =- 3; break ; case 29: /* diacriticals */ case 28: /* overbar */ ( stop - 1 ) -> node = alcopy( tp( red ),( stop - 1 ) -> pstr ); pontr( 2, 1, 3 ); ( stop - 4 ) -> node =( stop - 1 ) -> node; stop =- 3; break ; case 25: /* subscript */ case 26: /* superscript */ ( stop - 7 ) -> node = alcopy( tp( red ),( stop - 3 ) -> pstr ); pontr( 0, 7, 6 ); pp9ÌB46(p9ÎB@9P)ÊBÂ9òB46òB46D(Ð7l7(""4"46D(Â9úB~6ž"46F(Â9úB~6<"46(Â9úB46úB46((p9ÊB46J(p9ÌB46òB46((ê7p9ÎB@9ÆÌBÞ7p9ÌB46òB46((ê7p9ÎB@92ÌBê7p9ÌB@9‚ÊBÞ7Ä7Â9úB46N(46R(46êBÞ7Ä746úBÄ7Â9þBp9ÊB 6þB¾9ÌB@92ÊBÂ9C46V(p9ÊB 6þB¾9ÌB@9ÆÊBÞ7Â9C46Cl7$#þ"0#p9ÊB46Z(p9ÌB46Cp9ÎB@9z*ÊBÂ9 C~6^#46D(Â9C~68#46F(Â9C46Cp9ÊB46C46Cê7p9ÌB@9‚ÊBÄ7Â9 C46^(46CÞ7Â9Cp9ÊB468(46C46b(9Ð7p9ÌB@9Ì*ÊBÂ9C46f(46j(46âBÞ7Ä746n(46æBÞ7Ä746 CÐ7Â9Cp9ÊB 6¶?¾9ÌB@9ÆÊBÂ9Cp9ÊB 6¶?¾9ÌB@92ÊBÂ9"C46C4Î041463�3,3¾0è2¶03¶0wØýw øÑm‰wvw ”@œ¶C@#w ÞÑe‰f r Á@PÀe007¸�w $q“¶CÀø5Í5w fw �Õ Á wÊC&…À¶CÂÊCЋÒ Ò €   ÊCó‡Âb÷e†\÷X‰@À °ÊC·â…W ‡w NÑd‰…×-ÊÀ 7‰†w *Ñf‰¦ Ò ¢‚…×-š 7‰†w üÐg‰¦ ‚…fÁpñ &÷ Dñ €9�± �…¶CÒµ— ÊCú‡�Áå¶CÁ AÊCów ðfÁ(÷ �…@Àe&7 @l7@‰±ñ€‡÷ \'fÁèñ @Àe71@‰€‡À w :Ðh‰À 1 @Þ± �÷ Ê ðð ððþ&ø\ð ð ðð ððõ&û\Àe&\Àe&–\Àe&\Àe$&&\ ðÀeõ&ø\w 2&N`\w &Âe‚w �`‚ †f’\bf‚~\Ö  Ð Ö Î �ePp…~Õ fþÿ‚ ÁPp‚~N ‚w V£�Mw ÄÿÀe&N`\ð ð6þ6øw fû\ð ðw fø\–%€õwõ¢À @ù@ø wõ’€ †@òÀ òùMÀ`æ&&\À�„ƒÔ € ÀE`Àåfû\œ\ÁPp‚~Â`R \÷ ð¢\Àbd b\÷ 6÷ .÷ & ÷   ÷ ÷ æ\& \ ð€õ÷ðH÷ 6÷ .÷ & ÷   ÷ ÷ d0 + .985600267d0*eday - .000150*capt**2 msun = dmod(msun, 360.d0) * radian enom = msun + ecc*dsin(msun) 42 dele = (msun - enom + ecc * dsin(enom))/(1. - ecc*dcos(enom)) enom = enom + dele if(dabs(dele) .gt. 1.e-7) go to 42 vsun = 2.*datan2(dsqrt((1.+ecc)/(1.-ecc))*dsin(enom/2.),dcos(enom/2.)) argp = 281.22083d0 + .0000470684d0*eday + .000453*capt**2 argp = argp * radian emoon= 350.737681d0+12.1907491914d0*eday-.001436d0*capt**2 emoon = emoon*radian merth = msun dven = 243.070375d0 + .6165213685Bill Haggman, David Hanes, Steve Hayes, Doug Hornak, John Hunt, Lorie Jeffrey, Debbie Kadri, Barbara Kammerer, Kit Kurlantzick, Lisa Laudise, Tom Lawrence, Vivian Leiman, Oren Linfante, Marilyn Lyons, Kenny Madonna, Debbie Maluso, Dave McMahon, Daniel Menner, Patti Minkler, Don Montgomery, Kam Moore, Wayne Nickerson, Ted Ort, David Panagar, Sue Paul, Raymond Sabados, Elaine Schneider, Wayne Schreibeis, Joan Shafer, Sue Sheng, Jen Sickel, Tim Smith, David Sollows, Kathy Stumpfl, Suzy Wairich, Barb Walker, Damve; /*sort list*/ if(sort)goto clear; for(p = tbl + 3;p < table;p =+ 3) for(q = p;q > tbl;q =- 3) if(*q > *(q-3)) { /*switch entries*/ hold = *q; *q = *(q-3); *(q-3) = hold; hold = *(q+1); *(q+1) = *(q-2); *(q-2) = hold; hold = *(q+2); *(q+2) = *(q-1); *(q-1) = hold; } clear: /*clear values*/ tbl =- 3; while((tbl =+ 3) < table) *tbl = 0; /*regular move*/ return(count); jmp: table = jumpbuff; for(b = 32;b > a;) bitpat[b--] = 0; count = 0; *mov? Wð Ĭ\A×%*?†÷ ú)Â`w Ò• ÂåR·À‰R‰ r fw ðÿ€Àe0�…Runtime error ?46.(:0$?4626466(:0$?46:646>(:0$?462646B(:0$?46F646J(:0$?462646N(:0$?46F646R(:0$?462646V(:0$?462646Z(:0$?46F646^(:0$?462646b(:0$?46F646f(:0$?4626T846j�7ð946nð9 6T?46.6~6X 6T?46rZ6$466(:0$?46:6p9?T8p9?@9¼)?46vê7p9?T846B 7p9?@9¼)?Ð746zÐ7l7°°À466(:0$?46~6 6X?46.6~6Ú 6X?46fZ646X?ð9T846X?x:0$?ot2)||!valid()) putCDT(sidnak,nrep); putCDT(sidack,nrep); } else putCDT(sidnak,nrep); goto res; default: goto idle; } } char next() { char c; c=DEL; for(;bp=limit) return(1); else sleeolving the reordering of scrambled text. It was found that content ratings and ratings of sentence pair orders were highly correlated. These ratings predicted subject performance in a pair ordering task and they were related to the reordering of scrambled text. Rating methods offer a practical approach to the investigation of sentence relationships and text structure. .bp Investigation of the Structure of Connected Text By Means of Subject Ratings and Reordering of p(1); for(bp=0;inbuf[bp]==SYN;bp++); parity=0; dump("I:",inbuf,nr); if(inbuf[bp]==ENQ) { bp++; write(CDTout,lbuf,lcnt); dump("O:",lbuf,lcnt); } else break; } inbuf[nr]=DEL; return(0); } putCDT(buf,cnt) char buf[]; int cnt; { int nx; lbuf=buf; lcnt=cnt; dump("O:",buf,cnt); nx=write(CDTout,buf,cnt); if (nx0) { swait[i]--; return(0); } switch(c=getc(sinp[in loop, get name & reply number */ while(gname(name,0) <= 0) /* get last name */ {count(0,name); rindex();} /*mark start*/ try = 0; while (try++ < 2) { i = 0; while (key[++i] >=0 && name[0] > key[i] ); /* search for a key greater than or equal to name */ /* see if last buffer load, or if in previous one */ if ( key[i] < 0 || name[0] < key[i] ) i--; if (i==0) goto missing; /* before beginning */ s[3] = '1' + file[i]; if ( (fid=open(s,0)) <0) error(4); /* open·  Wp `ñÀe0[ƒÄeÓ•?‡f…@‰†wN wPf…w w ‰F†w.w2f…w @Àe7ú‰Lwf…@‰f…‰†wö wøf…@wʉR†wØ wÚf…‰ÀEÿwÌf…@÷ Z ÷R w. w R@�w F×-8 w X@7  wˆf…wú w >7 ð wrf…wLwH‰V†wP wRf… ‰BRw@f…w ‰\†w$ w&f…÷ ²‰†w Ä }w7¤ ÀÿÿF…‡ThuFriSatSunMonTueWedJanFebMarAprMayJunJulAugSepOctNovDecf…Æå΀p@&fß Ô–%5þÿ΀p@&fß æ–%52 198 pntree = & tree[ inode ++ ] 173 199 pntree -> type = md 174 200 pntree -> strl = str1 175 201 pntree -> strr = 0 176 202 pntree -> lpnt = 0 177 203 pntree -> cpnt = 0 178 204 pntree -> rpnt = 0 179 205 pntree -> bpnt = 0 180 206 pntree -> restore = 0 181 207 pntree -> perturb = 0 182 208 pntree -> xstore = 0 183 209 RETURN______ ( pntree ) 184tCDT(tmot1)) { dump("C:","timeout",7); goto idle; } res: if(next()!=DLE||inbuf[bp++]!=EOT) goto idle; det: SID[0]=sidack[3]=sidnak[3]=next(); SID[1]=sidack[4]=sidnak[4]=next(); DCx=next(); if(next()!=ENQ) goto idle; switch (DCx) { case DC1 :/* specific poll */ if(reply(SID)) for (M=0;M<=2;M++) { putCDT(outbuf,nwp); for (N=0;N<=2;N++) if (getCDT(tmot2)) putCDT(enq,nenq); else break; if (N>=3||next()==ACK) break; } goto off; case DC2:/* selection */ if (ready(SID)>=0) { putCDT(sidack,nrep); while(getCDT(tmII¸ y™(y.eq.0) goto 10 81 if(cw(j).lt.jmax) goto 11 if (shw(j).eq.1) goto 12 if (pw(j).eq.1) goto 13 pw(j)=1 shw(j)=1 cw(j)=0 9 k=k-1 jmax=0 do 94 j=1,k jj=card(j) if (line(j).eq.0) goto 93 if (jmax.lt.cw(jj) ) jmax=cw(jj) goto 94 93 if (jmax.lt.cz(jj)) jmax=cz(jj) 94 continue if (jmax.lt.n) jmax=jmax+1 if(k.le.kb) goto 17 goto 8 10 if (cz(j).lt.jmax) goto 14 if (shz(j).eq.1) goto 15 if (pz(j).eq.1) goto 16 pz(j)=1 shz(j)=1 cz(j)=0 goto 9 11 cw(j)=cw(j)+1 if (cw(j).ne.j) goto 1 if (cz(j).eq.@üÿNüÿfþÿß Ö Ö @üÿ @üÿÀmJNüÿfþÿß Ö Ö ÙÀJ & ß Ö Ö õÿÿþÿµ þÿ@þÿ@-F@þÿ¬~]?@þÿÀ 5–YøÿõšFúÿNøÿµ øÿß *&&fúÿµ úÿ÷ ªÖ 5üÿ€%$@üÿÕ@üÿNøÿß *&&fúÿ÷ ‚Ö €%@þÿð•~]@ð•~]@À pþÿ–Y ʳ÷ |AÁ 1–YF…‡f…Æåuüÿ@üÿõeüÿø@üÿÀ 5t_üÿNüÿæ¾)ß ~Ö õeüÿ@üÿ@-Î_Î ß $'@üÿ5þÿNþÿæÆ)ß ~Ö äF…‡f…Æå ÷ ìNæÊ)ß ~Ö @À 5¬Uúÿ@À 5®Uøÿu-úÿøÿ †@úÿõeúÿæÖ)ß ~Ö ð@¬~] @À –YæÜ)ß ~Ö _j @À 5–YöÿÎ ß $'Î ß $'t %d reduce %d error fatal error: action memory full %d: R/R conflict (Red'ns %d and %d) on %vmissing entry in reflect %d: S/R conflict(shift %d,red'n %d) on %v missing itemlist space fullmemory overflowout of spacetoo many statesnonterminal %v not defined! int nterms %d; int nnonter %d; int nstate %d; char *sterm[] { "%v", "%v" }; char *snterm[] { "%v", "%v" }; %d states,%d terminals,%d nonterminals,%d productions external memory %d,internal memory %d %d EQUi])) { case SOH: case STX: for(j=3;jq,ƒ@÷ ‚†÷ ¾· ÷ ìò‚’À ‡‚ ±‡¦f7· ü q,‡@€ @ì÷ ê€÷ Tý÷ 8þ÷ ¾�@÷ †÷ \È�Ü òÀÒ ± · ¨ ÷ xòœ �‚‡f¦æ × †Â ò  ÁWv ÁEÿÁe&÷ žƒ 탂�‡æ¦ ×   òÿÿ2 2 2 ƒ ð7 4 ‚ƒ‡æf&ƒƒ ÁWv ÁEÿÁe&ò ÷ @€ÀEÿ7 2À ‰w‰²òe2 €€ì@`�ƒ‡· â &·ÀÚ ‰w‰2 €‡fæ  2 ‡2 †€ìÁWv ÁEÿ@`Àe&ƒ�¡‡ƒ × æƒ�±‡&æÃ Ä! ò,†Â„ Ãeôƒ÷ ÿd@?>=<;:9876543210/.-,+*)('&%$#"!      ÿþýüûúùø÷öõôóòñðïîíìëêéèçæåäãâáàßÞݬ‡ÀJ ÷ ,À‰Out of headers. · „ƒ‚�‡æÀ  À ‡Î ü€‡ @€ @€W n†W J0‡W,†W,˜ƒ@@ì&÷ ”ÿÀ ,BÀe "‡ÀåLÀeJ ø€‡· r &Àr ‰‰J€‡7 d &¦‰þ†‰þ¶ ‡· L 7B ‰þ‡74 À‰æ÷ * ‰J÷@  ÷eJ UÂn€ÀåJ7 Àe Âe— B0ø‡2 øÿÀL  lü‡ÂâÂeJ·Ú2 òò˜À€÷  þÀ  ‡ÂåJ°LÁJAÁ ÁeJññññÀ„‰J÷ þúÀ÷ büwpw’÷åJŒ‚€‡cannot ope×ÖØÙÚÛÜÝDch 885 are various controls and only 1330 appear on the page. .pp So what's available and where do you get it? Here is a list of some manufacturers and their products. The typesetting industry is more completely surveyed in occasional issues of .ft I Printing Impressions; .ft R the most recent review was in May 1973. My list is biased towards machines which are not newspaper-oriented, and towards companies which answer their mail. Turnover is very fast in this business \(em Mergenthaler and Photon have beøÿ÷ °Y5øÿu-øÿúÿ@øÿõ@øÿ Îâcß º ÎP[ß Ž Îæcß º À[_:7 [À0[· ,[’ù÷ "[ ÷ ´YX$êcøc dd*d8dFd_ F…‡f…Æå÷jtðZÀ®ZX÷-¢bØZ÷-šbÒZ3 æ�bæ’Zß Ôa–%À Àÿÿ_´ ÎæuætZß fa–%5þÿH÷^b”ZW-þÿ ÀPb@mþÿ7‚Z@þÿð• uÀ8bÀej7jZÀ,bÀí`Z5üÿõ•þÿ@þÿ @þÿAþÿAmüÿAœup�jtõ þÿðõ–þÿ Ζæjt& ß fa–%5þÿ· ÞY@þÿÀþYSÀÔY ÀòYÀÿÿ_´ ?ŠþYÀ_´ ÷å´YÀ°Y!ΨYß À`À¢YÀ 7æj’aÀ–YÀ 7äj†YÀŠYÀ âjÀ Àe(c7pYÀvYÀ 7àjlY ÎfYß À`7 Xa7 ZY7 PY÷ØgHY7 ~Y÷þzYÀfYçÀèÐÊÌÕ©¯AULT_______ : 977 63 RETURN______ ( 11 ) 978 64 1 } 979 65 } 16 21 1 4 18 26 11 25 16 0 8 2 24 27 16 17 2 19 24 3 13 25 21 17 0 18 7 3 20 15 22 10 2 26 3 14 23 4 8 7 26 24 20 5 16 22 12 8 3 14 21 1 12 10 2 27 14 25 21 9 4 2 6 23 22 0 4 27 11 13 23 5 21 10 6 24 13 15 12 10 18 7 24 11 20 25 9 1 6 24 11 5 15 21 0 8 19 11 20 21 12 7 26 27 13 14 16 17 0 10 6 26 23 15 16 1 6 27 3 23 25 16 9 |ü|  ð€&Ð 6÷ –% ‰/dev/dp0f…ÆåW-@5þÿõþÿ fþÿß bÖ 7,Îfþÿß bÖ 7ÀÀÎæfþÿæ ß NÆe÷ | Îæ¶ß bÖ 5èÿ@èÿ ÎæÀfèÿß €–%À ÎÊß N÷ B Î+ß  ÷  5�üÿ ÷  t@ÝüÿÁ¢Á 1”?÷ ì 5�üÿÀ% ø 5êÿ@aA�üÿp�ìÿµ êÿfêÿ@Àeìÿ`÷ ¼ �À% ñ@êÿ@a0ŠìÿÀLÀ š@Àeìÿ&ß ÄÖ À @ÀeìÿæØß NÖ · ¯Îæ‚ß BÖ ÷  Îß bÀ Îæìæèß 0–%î÷ @À%éÀÔ· Ь„á÷ &7�Í 7�Á 7�²÷ 7�¾ 7�² 7�£÷ 7�˜÷ þÀ%¾9ÌB@92ÊBÞ7p9ÊB46JC46Ú?Ð7p9ÌB@92ÊBÞ7p9ÊB 6:C¾9ÌB@9ÆÊBp9ÊB 6Þ?¾9ÌB@9ÆÊBÞ7Ä7Â9NC46z(p9ÊB468(46NCÐ746((ê7p9ÌB@9à(ÊBÞ7ú7Â9RC46~(p9ÊB46‚(46Ö?ê7p9ÌB@9à(ÊBÞ7ú7Â9VC46Þ?46†(Ð7l7º&ä&ä&46Š(46Þ?46b(9Þ746Ž(46Þ?Þ7Ð746’(Ä7Â9ZC~6'46–(p9ÊB 6Þ?¾9ÌB@9ÆÊBê7Â9ZC46Ò?46RCÄ746VCÄ746ZCÄ7Â9â?46ô'Â9Ê?46&C46š(Ð7l7�'�'8'46š(46&CÞ746ž(p9ÊB468(46&C46b(9Ð7p9ÌB@9Ì*ÊBÞ7Ä7Â9^C46^C46¾?46²?ê7Ð7l7ˆ'�'�'46F(Â9Ê?46ô'Â9Î?46*Cp9ÊB46¢(p9ÌB46Â?p9ÎB@9¼)ÌBÄ7p9ÌB@9ÆÊBÐ7l7Ô'Ü'Ü'46F(Â9Î?46Ê?46Î?˜7Â9Æ?N9N9# define NUL 000 # define SOH 001 # define STX 002 # define ETX 003 # define EOT 004 # define ENQ 005 # define ACK 006 # define DLE 020 # define DC1 021 # define DC2 022 # define DC3 023 # define DC4 024 # define NAK 025 # define SYN 026 # define DEL 0177 # define tmot1 30 # define tmot2 15 # define nenq 6 # define nterm 7 # define nrep 8 # define maxchars 128 int lbuf,lcnt,CDTout,CDTin; char enq[nenq] {SYN,SYN,SYN,ENQ,DEL,DEL}; char term[nterm] {SYN,SYN,SYN,DLE,EOT,DEL,DEL}; char sida); if(CDTin<0||CDTout<0) { printf("cannot open %s %d %d\n",pdp,CDTin,CDTout); exit(); } dn=open("/dev/dn0",1); i=0; while(call[i]=getchar()) i++; if(dn<0||write(dn,call,i)<0) { printf("cannot call\n"); exit(); } else putchar('+'); for(;;) { if(c=getchar()) onl[ns]=c|getchar()<<8; else break; while((c=getchar())==' '); sta[i=0]=c; while((sta[++i]=getchar())!='\n'); sta[i]='\0'; if(fopen(sta,sinp[ns])<0) printf ("cannot open %s\n",sta); else ns++; } goto idle; off: putCDT(term,nterm); idle: setexit(); if (geout = *s++) if(*out!=001) out++; else { /*do replacement*/ u = s; while(*u) u++; while(--u>=s) *--t = *u; break; } } done: *out = 0; return(out); } char finals(in,ls) char *in,**ls; { char *end; int *val; end = *ls; val = 0; if(*end=='s'&&!oneof(end[-1],"us")) { *end-- = 0; if(*end=='\'') *end-- = 0; val = oneof(*end,"cfkpt")+1; } if(*end=='e'&&end[-1]=='i') { *end-- = 0; *end = 'y'; } *ls = end; return(val); } midu(in,end) char *in,*end;{ char *s,*t; for(s=÷eH ÀeíPÐ��w<ÀbC"Àe7 ìÀe&&æ8*wÿÿÿ`D* ð ð—/;þø{þ�ù·óªÁòö7ûøÕwâw šÕ `v* ð`~*ð—/ ;õ€ñ{ñðÀñ7øÄÕw®w fÕ `ª* ð`²*ð;õw l7ø ÕwŠ`È* ð`Ð*ð;õw 8‡7ø€Õwjw "Õ `î* ‰7 lÕ7jÕ ð ð7þ`Õò€HwZÕwþTÕô7øNÕw8……÷ v· pä 7 hæhÎe÷ Z· Tä 7 LæLÎeÀrÀr ÀiÀiÀlÀl7·…Õ …·nÁ·dÖ �w ~7 î ·PÖ �w j÷Ú7 þ7 Ú7 <7 ì÷ Cà÷ÿÿÞw `÷Ò (w (Ôj‰7 ÷w-þÿl_< ÷ ¨@þÿð•Nþÿß @ À _4 5 üÿµ üÿ@üÿÀ-t8@üÿÀ 0 óW-þÿ÷ÿ¼÷@þÿÀ 5öÿ@þÿÀ 5øÿu-öÿøÿ_†@öÿõeöÿ5úÿÀ%@úÿ@úÿÀ  Núÿfþÿß ,Ö AúÿÁ 1<õEðúÿ@úÿÀ ÀmF÷5ôÿ@úÿÀ Àm8÷5òÿu-ôÿòÿ&†@ôÿõeôÿ5úÿÀ%Núÿfþÿß ,Ö @úÿÀ  Núÿfþÿß ,Ö AúÿÁ 1Ö�Nþÿß ÞNþÿß µ þÿ_ðwÀöf…Æå @À 5úÿ@À 5øÿ@úÿõeúÿ5üÿu-úÿøÿ †@úÿõeúÿ5þÿ@-üÿ3ïW-üÿ.õEðüÿ@üÿÀ NüÿÎefß ,Ö @À AüÿÁ p@ð•À @üÿÀ p@) return(i); if(lmp[-1] != 1) return(0); if(xheur(ploc)) return(0); return(0); return(i); return(i); return(i); return(i); rp u7 _ if(comp(rp, r)) s u7 _ s = 0; s = 1; if(comp(sp, s)) int i, j, k, s, n, d; smaller u7 _ * by a smaller piece the u7 _ * a percentage if the * piece on the move v u7 _ comp(p, v) int p, v; wheur2 u7 _ wheur2() wheur3 u7 _ wheur3() wheur4 u7 _ wheur4() wheur5 u7 _ wheur5() while u7 _ while(i--) while(p2 != lmp) { e1; } diskloc[0]=(drive<<13)|1; diskloc[1]=0; l=duplicate(4,diskloc); if (l==0) { e3: close(duw[drive]); goto e2; } if ((i=(l->id))<0) { free(l); unassgn(l); f=fork(); cvtds(i&255,idstr); if (f==0) { closeall(); execl(repfun,repfun,duname,idstr,0); exit(); } while(1) { i=wait(); if(i==f) break; if(i<0) goto e3; } l=duplicate(4,diskloc); if (l==0) goto e3; if ((l->id)<0) { e4: free(l); unassgn(l); goto e3; } } (l->id)=|0100000; alter(l); if ((dlabel[drive]=copy(l,3,0))==0) goto e4; if ((lcm[drive]=copy(l+4,p°wÐ$cújvqÒ%N:dbr€&êlþsÎ Ð':fz!=Ju""Zoævcommand line too long read error ***EOF*** write error ill formed expression octal ? octal value too large decimal value too large more than six args? jump where? null reference undefined format ref 0.type? format ref does not yield single value? name? format list? format def? label or format name? primitive format item? __|_\ recursive format def with i(Hhxˆ˜¸ÈؘH(8HhxˆH¨H¨H¨H¨H¨H¨Hx˜˜˜8H˜˜8Hhx(˜(x˜˜˜8H˜˜8Hhx˜˜èøÈx˜h88x8x((xX((xX8x((xX((xx8x((xxx˜˜È˜8è˜h8˜hXhèõ ¼þÿõ¼üÿõ üÿ@üÿ @þÿ5,õeþÿñ@üÿ #@þÿœ  @þÿœ 5üÿß ¶E@üÿð•ÿÿäG@þÿAþÿñAp� ÀF…‡f…Æå @À|»pÎæn»æj»ß F–%õ`»þÿõZ»üÿõ üÿ@üÿU@þÿœ L7 šNþÿß À%CõNþÿß À :@þÿß êCuþÿøÿõ »öÿõúÿõ úÿ@úÿ @öÿõeöÿAøÿõeøÿHïõúÿõ úÿ@úÿ@öÿõeöÿ ôÎæººæ¶ºß F–%À õeþÿ¦@@÷ Øwn€�PäHâ  ‡€�PdHb` ‡¶-‚Àÿÿ‡ ‡À‡Æ¬Æå…õ€‰î‡ðÁ÷ `‰÷· €Àe7 ‰‡ ‰‰Ùß > wòÿÞ"wôÿÚ"@üÿF…‡f…æ 7 JÎTß @FF…‡f…æ ÷ÿÿ.ÎÊ$ß @FF…‡f…æ ׯ" · ÀŸÀ F…‡f…¦)· äÀàð�Þvl· Ø÷-ÔÔÎ:fß º _žH÷ ~À À¶œvl7°÷ ªÀÿÿ/÷ ŠÿÀ )ׯ®[÷ ìÀ éÀ÷ lÿÀ ׯ�.ÀtÀ 5.lþÿ· h÷-ddÈNþÿß ”JÀ ÌâÀHÈ F…‡f…Æå÷ Tè5þÿ@þÿÎ\fß º Àÿÿ_®INþÿæP#ß ˜9Ö 5üÿ@üÿìÀÀ 0 .k & füÿß Æ=–%ÁèÁ 1nkÀÞÀ 0 ®kÀÔÀ 0 îkÀÊÀ AüÿAœžlÁEÀÿAmüÿÁep.l F…‡f…Æå· ®Àª¢ ·  ׯœ] Z@Àeüÿß þ @üÿ@þÿne``MsRMrsomething``MsFtksomewhere`LsdR~vTstage`U_VaethanGPPrthatGQUdtheGNtheirGDEthemGDssthereG_VTtherebyGDEq[VtheseGCSm`theyG_^thingFtkthisGX`mthoseGNJm`toUWtodayUHHa_VtomorrowUHHs[TYRtriedUT[vaUtrueUTHHtuesdayUHHmma_VtwoUWuponNZZ[rverypTVwaterRBUEwednesdayR~rmma_VwereRHEwhatdRMUdwheredR~vTwhodHHwhomdHHswhosedHHmmwomanRJs~rwomenRts~ryes]~``cnt = 0; goto skip; mve2: p = wmov; if(board[a] <= 0)goto next2; if(board[a] == wking)p = kmov; /*set P to beginning of adjacency map for square in question*/ p =+ a*10; flg = 0; while(*++p) { if(!board[*p] && board[*(p-1)] <0) { /*legal jump*/ skip: flg = 1; *table++ = 1; /*single jump*/ *table++ = a; /*starting position*/ *table++ = *(p-1); /*jumped over*/ *table++ = board[*(p-1)]; /*man taken*/ *table++ = *p; /*ending position*/ } p++; } *movcnt =+ flg; bitpat[a] =  @úÿÀ Àmö5"þÿõeúÿí@tA@l0AúÿÁ ÁmÊp@øÿF…‡f…Æå @° 5þÿ@&ð €5øÿ@õ øÿ@øÿtA@l05üÿ@üÿtA@l.pþÿ@üÿtA@l.p @þÿtA@l.AWtB�l.p@þÿtA@l.AWtB�l.p@þÿtA@l.AWtB�l.H@þÿtA@l.AWtB�l.p@tA@l.pþÿÎiß ’,AWtB�l.1@@tA@l0AAWtB�l0H@tA@l05øÿ@øÿtA@l.A Á ÁmAÁmvÁeÿÿHN @þÿ GOTO table NONTERMINAL STATE GOTO s 0 1 2 3 ACTION table state 0 $accept -> _s $ s -> _ . reduce 2 state 1 $accept -> s_$ s -> s_a s b $ shift 8191 a shift 2 . error state 2 s -> s a_s b s -> _ same as 0 state 3 s -> s_a s b s -> s a s_b a shift 2 b shift 4 . error state 4 s -> s a s b_ . reduce 1 5 states,4 terminals,1 nonterminals,3 productions external memory 22,internal memory 20 1 EQU states,0 EQU gotos 3 states without stack 7 actionÉÉùÉÉùÉÉù9ÉÉùÉÉùÉÉùùɉø ‰‰ø84 RETURN______ ( 10 ) 160 185 1 } 161 186 } 162 188 alcopy( md, str1 ) 163 189 INT___ md 164 190 STRUCT______ enode * str1 165 191 { 166 192 1 STRUCT______ etree * pntree beautified p1base page 6 167 193 IF__ ( inode == 100 ) 168 194 { 169 195 2 printf( "Tree full - execution terminated\n" ) 170 196 exit( ) 171 197 1 } 17@Àe7`4Nß 5þÿ Nþÿß ^5üÿ @þÿð5 Îffüÿß œ9–%À F…‡f…Æå@ }p@=@Àe7è3Nß tA5úÿ _Š@úÿt ÀU5üÿ5 þÿ@Àeüÿß 5öÿ m@öÿJ5øÿNöÿß ª `AøÿÀ r(5`üÿAøÿÀ r(Wtþÿuþÿ@Àeüÿß 5ôÿá@øÿÀEüÿt5`ôÿ@öÿAôÿpJJ@ôÿðÅÿG@ôÿðÿÿJ@úÿÀ îG>t@]=@AôÿAœFWtA]øÿpNöÿß Nôÿß Næÿÿæßfß „ÆeF…‡f…æ æ f÷ ^êÖ ˆew42f…¦)Nß G5ß 5þÿýå þÿý5àþÿ ý5þÿNß @Nß öwî1õÓ 5#É7‚OÊpH=¡3ûí~ñŠ7Tê*G 7Tê*G €6YÙ#M[I‚:àðK¨ä¡5¯l ²!5¯l ²ã9qµg‘䯫3wÌ„ÏaF9Y üü¤+4wÌ„Ïa e2\Zv%È[â[^xeZz%Z‚%Zxe¸[ª[^€eZŠ%Z’%2\â[¸[ž[Zš%â[ZxeZž%â\¸[ª[^�eN]¼jZ�eN]¾jZ¢%N]Àj]tM¼jZe¸[^�eZ�eZ€eN]¼jZ�eN]¾j]°N¼j¸[ž[^˜eZ�eZ˜eª[Z€eN]¼jZ˜eN]¾j]°N¼j¸[ž[Zª%â[Z€eN]¼jZ˜eN]¾j]ÜM¼j¸[ª[Ä[^¨eZ˜eZ¨ež[^˜eN]¼jZ¨eN]¾j]XM¼jZ®%â[¨]6[z\ZôZ²%N]¼jN]¾jZª%â[Z€ež[Zª%â[Z€eª[Ä[N]Àj]ÎN¾jN]¾jZ˜eZ²%â[Ä[N]Àj]°N¾j¸[N]¾jN]ÀjZ˜eZ²%â[Ä[N]Âj]ÜMÀj else time = !time; goto start; case 25: /*change branching*/ print("branch umimplimented\n"); goto start; case 26: /*resign game*/ return(0); case 27: /*comment*/ *buffpoint = 0; goto start; case 28: /*no match*/ kase28: if(!*buffpoint) { if(forced(!first)) break; goto start; } p = mvlist; *p++ = 0; if(!(*p++ = arg())) { print("eh?\n"); getline(); goto start; } while(*p = arg()) { if(*p > 32) { print("huh?\ */ int amem[_actsize]; /* action table */ int nprod 1; /* number of productions */ int *prdptr[_nprod]; /* pointers to descriptions of productions */ /* levprd - production levels to break conflicts */ int levprd[_nprod] {0,0}; /* last two bits code associativity: 0 = no definition 1 = left associative 2 = binary 3 = right associative bit 04 is 1 if the production has an action the high 13 bits have the production level */ int nterms -1; /* number of terminals Ám þ �Àþ· þÀmþýÈ•\Àöý· òýÀmîýÈ•|ÀæýÀmâýŠF…‡f…æ @AÁeÿÿ"@@€ NfÎeß (Ö F…‡f…æ @ÀAÀ >À;À8À5À2À/À ,À )(Àå ƒ"À xÀvvˆþŽþþ|‚þþþþþþþþþþþþþ”šþ ¦þþþ|F…‡f…¦)×-òüdÎ.ß ÷ âüÁÞü· ÚüWp"Áeuþÿ}þÿ@þÿp@þÿ0 @þÿ0 @þÿ0 @þÿ0 @þÿ0 @þÿ0 @þÿ0 @þÿ0 @þÿF…‡f…æ @µ È•\@µ È•f@ÀPÀR=�F…‡f…Æå @�ñ_èW­0W­9õ�B pontr( 2, 2, 1 ) 423 470 stop =- 1 424 471 BREAK_____ 425 472 CASE____ 12 :__ 426 473 /* function 427 475 */ 428 476 ( stop - 1 ) -> node = alcopy( 16,( stop - 1 ) -> pstr ) 429 477 ( stop - 3 ) -> node = alcopy( 56,( stop - 3 ) -> pstr ) 430 478 (( stop - 3 ) -> node ) -> strr =( stop - 1 ) -> pstial adj 30 specialized adj 30 spend verb:1141 20 spends verb:1241 20 staff noun:0121 50 still advb 60 stop verb:1241 60 storage verb:1141 20 store verb:1141 20 subconsciously noun:0121 50 subject noun:0121 40 substitute noun:0121 40 support verb:1141 20 system noun:0121 40 take verb:1141 20 talk verb:1141 20 tape noun:0121 10 tapes noun:0221 10 techniques noun:0221 40 technology noun:0121 40 ten adj 75 terms noun:0221 40 than advb 100 that rels 100 relo 100 the art 100 them pro 100 then prep 100 there advb# define NUL 000 # define SOH 001 # define STX 002 # define ETX 003 # define EOT 004 # define ENQ 005 # define ACK 006 # define DLE 020 # define DC1 021 # define DC2 022 # define DC3 023 # define DC4 024 # define NAK 025 # define SYN 026 # define DEL 0177 # define tmot1 30 # define tmot2 15 # define nenq 6 # define nterm 7 # define nrep 8 # define maxchars 128 int lbuf,lcnt,CDTout,CDTin; char enq[nenq] {SYN,SYN,SYN,ENQ,DEL,DEL}; char term[nterm] {SYN,SYN,SYN,DLE,EOT,DEL,DEL}; char sidayte 200,000,000,200,000,200,200,000 .byte 000,200,200,000,200,000,000,200 .byte 000,200,200,000,200,000,000,200 .byte 200,000,000,200,000,200,200,000 .byte 200,000,000,200,000,200,200,000 .byte 000,200,200,000,200,000,000,200 .byte 000,200,200,000,200,000,000,200 .byte 200,000,000,200,000,200,200,000 .byte 000,200,200,000,200,000,000,200 .byte 200,000,000,200,000,200,200,000 .byte 200,000,000,200,000,200,200,000 .byte 000,200,200,000,200,000,000,202 / get a user's characters, / put into the DC-1Æe 5úÿ@úÿ#Îß ö æDæ>æ8æ,æ.æ(æ"æ¬æìæÚß ¸Æe5úÿÎúß ’@úÿ,΀æVæ€ß \ –%Îß ö æææææÜæÐæÐæÆæVæNææüß ¸Æe5úÿÎß ’W-úÿd æ”æ’ææ2æ ß ¸Æe 5úÿÀdÎpß 4 õ úÿ€  W-úÿd� A @@À=B æDæFæÌæRæ@ß ¸Æe 5úÿÀ  æ&æ$ænædß ¸ÆeÎ�ß d W-úÿþÿ_æ÷ Èúw f…¦)@µ Aµ A’H�@�µ þÿ@þÿÀ%ì@0Šwâ f…æ Î(ß öNæræ$ß ¢–%Î|Îílß îævæß ¢–%Î\ÎíLß îæ~æìß ¢–%w† f5, 13, 15, 14, 15, 10, 15, 14, 15, 13, 15, 14, 15 }; er has been made "most recent" bufaloc: mov r2,-(sp) clr *$ps 1: clr -(sp) / vacant buffer mov $bufp,r2 2: mov (r2)+,r5 bit $173000,(r5) / lock+keep+active+outstanding bne 3f mov r2,(sp) / save vacant 3: cmpb (r5),cdev bne 3f cmp 2(r5),r1 bne 3f tst (sp)+ br 1f 3: cmp r2,$bufp+nbuf+nbuf blo 2b mov (sp)+,r2 bne 2f jsr r0,idle; s.wait+2 br 1b 2: tst (r0)+ / don't skip if warmed over buffer 1: mov -(r2),r5 movb cdev,(r5) mov r1,2(r5) 1: cmp r2,$bufp blos 1f mov -(r2),2(r2) bement, and part time work and child care. We also offer some of our own conclusions based on the statistical evidence presented in the earlier sections of this report. .sp 1 .ti 5 A. EDUCATION .sp 1 .ti 5 Many women continue their formal education while working full time at Bell Laboratories, often without encouragement from their supervision. This interest in further education indicates women's serious attitudes towards their careers. It is important, we feel, that Bell Laboratories fully utilize this resb imod beq 1f clrb imod mov r1,-(sp) mov cdev,-(sp) mov ii,r1 mov idev,cdev jsr r0,icalc; 1 mov (sp)+,cdev mov (sp)+,r1 1: tst r1 beq 2f tst cdev bne 1f mov r1,-(sp) mov $demb+6,r3 3: mov (r3),r1 cmp -(r1),(sp) beq 4f add $8.,r3 cmp r3,$demb+[8.*ndem] blo 3b br 3f 4: mov rootdir,(sp) movb -2(r1),cdev 3: mov (sp)+,r1 1: mov r1,ii mov cdev,idev jsr r0,icalc; 0 2: mov ii,r1 rts r0 / read or write to or from inode the i-node / whos number is in r1. / arg following call is 0 to reamost women feel they have received neither encouragement nor discouragemet with respect to their participation in Bell Laboratories educational programs. .sp 1 .ti 5 D. Recruitment and Promotion .sp 1 .ti 5 The three most common ways in which women come to Bell Laboratories were, in order of decreasing occurrence: applying on their own, knowing someone already employed here, and through recruitment at school (Figure 6). We foung that .33 of the women thirty and under reported having been recruited, while o tape(i)=1 4 il=tml ir=1501 j=1 i=1501 shift =0 5 x=tape(i) if (x.ne.0) goto 6 if (pz(j).ne.0) tape(i)=1 i=i+shz(j) if(i.gt.ir) ir=i if(i.lt.il) il=i jj=j j=cz(j) goto 7 6 if (pw(j).eq.0) tape (i)=0 i=i+shw(j) if(i.gt.ir) ir=i if(i.lt.il) il=i jj=j j=cw(j) 7 shift=shift+1 if (j.eq.0) goto 20 if (shift.lt.m) goto 5 if(cnt.ge.cmax) goto 72 cnt=cnt+1 goto 8 72 cnt=1 print 104 71 write (6,102) (pz(i),shz(i),cz(i),i=1,n) write (6,103) (pw(i),shw(i),cw(i),i=1,n) 8 j=card(k) y=line(k) if stop -> state = rval( * actset ) + 1 322 358 RETURN______ ( 1 ) 323 359 CASE____ 3 :_ 324 360 /* reduce 325 362 */ 326 363 red = rval( * actset ) 327 364 actset = bg + pg[ r1[ red ]] 328 365 /* new use of actset 329 367 */ 330 368 331 SWITCH______ ( red ) 332 369 { 333 37 a++; b++; } return(*a<*b ? -1 : 1); } char * phread(in,out) /* returns address of letter after output string */ char *in,*out; { char *s; int i; i = find(in); if(compare(in,&strings[table[i].word])==0) { for(s = &strings[table[i].phon];*out = *s++;) out++; } *out = 0; return(out); } phwrite(in,out) char *in, *out; { int i,j,z; i = find(in); if(0!=(z=compare(in,&strings[table[i].word]))) { if(*out==0) return; i++; for(j=ttop;j>i;j--) { table[j].word = table[j-1].word; tablevb 100 were be:12 100 whales noun:0221 50 whaling prpt:41 20 what whwrd 100 when whrd 100 which whrd 100 while advb 100 who whrd 100 will aux:1051 100 with prep 100 words noun:0221 40 work verb:1141 20 ,c); } } } return (n); } char lowon[256] { 8, 15, 14, 15, 13, 15, 14, 15, 12, 15, 14, 15, 13, 15, 14, 15, 11, 15, 14, 15, 13, 15, 14, 15, 12, 15, 14, 15, 13, 15, 14, 15, 10, 15, 14, 15, 13, 15, 14, 15, 12, 15, 14, 15, 13, 15, 14, 15, 11, 15, 14, 15, 13, 15, 14, 15, 10, 15, 14, 15, 13, 15, 14, 15, 9, 15, 14, 15, 13, 15, 14, 15, 12, 15, 14, 15, 13, 15, 14, 15, 11, 15, 14, 15, 13, 15, 14, 15, 12, 15, 14, 15, 13, 15, 14, 15, 10, 15, 14, 15, 13, 15, 14, 15, 12, 15, 14, 15, 13, 15, 14, 15, 11, 15, 14,@öÿ0ü_@òÿ0ÿAöÿqÿöùA5üàÿ@îÿ0ÿAöÿqÿöùA5üÜÿ5ÿàÿuÿÜÿ@÷ð]5ÿàÿuÿÜÿö5üèÿ æfîÿß Z–%& ß Ö 5ÿàÿððð & fìÿß Z–%& ß Ö @ìÿ5ÿàÿ0ü@îÿ5ÿèÿ0ü 5ÿÜÿÀñ@îÿ0ü æfòÿß Z–%& ß Ö 5ÿèÿAòÿAqÿö@òÿ0üU5ÿÜÿuÿàÿö5üèÿ5ÿÜÿððð & fìÿß Z–%& ß Ö @ìÿ5ÿÜÿ0ü æfîÿß Z–%& ß Ö 5ÿÜÿÀñ@îÿ0ü æfòÿß Z–%& ß Ö @òÿ0ÿuÿèÿôÀñ@òÿ0ü & fòÿß Z–%& ß Ö @öÿ0ÿuÿàÿôÀñ@òÿ0üÎæfìÿß Z–%tion - closdriv(drive) int drive; / close UNIX files accessing device /dev/rp"drive" / _closdriv: mov 2(sp),r4 mov r4,r3 add $_dur,r3 add $_duw,r4 movb (r3),r0 sys close movb (r4),r0 sys close mov $0377,(r3) mov $0377,(r4) rts pc / / C function - unassgn(address) int *address; / disassociate core page from disk page / / This defeats the intent of the core allocator / _unassgn: mov (sp)+,r2 jsr pc,_pagehdr clr 2(r0) mov r2,pc / / C function - int cvrds(val,string) ince( hc ) char hc; { next -> estr[ 0 ] = '\\'; next -> estr[ 1 ] = '|'; next -> estr[ 2 ] = hc; next -> estr[ 3 ] = '\\'; next -> estr[ 4 ] = '|'; next -> estr[ 5 ] = '\0'; next -> length = LTAB( hc, 1 ); return ; } init( ) { lcase = & lcse[ 0 ]; ucase = & ucse[ 0 ]; stop = & stack[ 0 ]; stop -> state = 1; next = & llist[ 0 ]; bg = & g[ 0 ]; inode = tweek = 0; fadjust = & madjust[ 0 ]; ba = & a[ 0 ]; } qval( aentry ) int aentry; { int it; it = aen char mchr[ ] { ' ', '!', '`', ',', '.', ':', ';', '*', '<', '>', '^', '{', '}', '~', '(', ')', '[', ']', '+', '=', '-', '_', '/', '%', '|' } ; char mrchr[ ] { 'D', 'A', 'A', 'A', 'A', 'A', 'A', 'H', '\\', '\\', 'G', '\\', '\\', 'G', 'A', 'A', 'A', 'A', 'S', 'S', 'S', 'C', 'D', 'S', '=' } ; char michr[ ] { 'D', 'A', 'A', 'A', 'A', 'A', 'A', 'H', '\\', '\\', 'G', '\\', '\\', 'G', 'F', 'F', 'D', 'D', 'T', 'T', 'T', 'D', 'A', 'S', 'E' } ; char lcse[ ] { 'H', 'J', 'J', 'I', 'G', 'F', 'K', 'I', 312 348 313 IF__ ( tok == rval( * actset )) 314 349 RETURN______ ( awalk( tok, ptok,( actset + 1 ))) 315 350 ELSE____ 316 351 RETURN______ ( awalk( tok, ptok,( actset + 2 ))) 317 352 CASE____ 2 :_ 318 353 /* shift 319 355 */ beautified p1base page 10 320 356 ( stop ++ ) -> pstr = ptok 321 357 ( stop - 3 ) -> node = alcopy( 56,( stop - 3 ) -> pstr ) 414 460 pontr( 2, 3, 2 ) 415 461 (( stop - 3 ) -> node ) -> strr =( stop - 1 ) -> pstr 416 462 stop =- 2 417 463 BREAK_____ 418 464 CASE____ 24 :__ 419 465 /* unary operator 420 467 */ 421 468 ( stop - 2 ) -> node = alcopy( 49,( stop - 2 ) -> pstr ) 422 469 integer rah, ram, dd, dm real ras, ds 1 read(5,101) ra, decl 101 format(2g1.1) ra = ra/15. rah = int(ra) ra = amod(ra,1.) ra = ra*60. ram = int(ra) ra = amod(ra,1.) ra = ra*60 ras = ra dd = int(decl) decl = amod(decl,1.) decl = decl*60. dm = int(decl) decl = amod(decl,1.) decl = decl*60. ds = decl print 102, rah, ram, ras, dd, dm, ds 102 format(i4,i4,f6.2,i4,i4,f5.1) go to 1 end __ tok, * actset 299 334 STRUCT______ enode * ptok 300 335 { 301 336 1 INT___ red 302 337 SWITCH______ ( qval( * actset )) 303 338 { 304 339 2 CASE____ 0 :_ 305 340 /* error 306 342 */ 307 343 308 RETURN______ ( 0 ) 309 344 CASE____ 1 :_ 310 345 /* test 311 347 */ ·øÿ„   €B C ÃeB ÷Øÿ7 Ðÿ„ €E F ÆeE ÷e¶ÿä Àÿÿ/Ä v—vA �ဠ@á€�a@ @aÃU÷5|ÿA @ Áe@ ÷5jÿC B ÃeB Æ\ÿ„”Ì„ L …‡„Cvö —vÁ`@ €`�m@ L$‡¶-‚Àÿÿ‡ ‡À‡f…Æå5 ðÿׯr · jׯf+· ^µ ðÿÀÀ@ðÿÀ 5îÿ÷ 4ùÀ Àÿÿ_°P7 r7 p5 üÿ5 þÿõöÿÀüœvl7ö€ 5ôÿ÷ êuôÿòÿu-òÿöÿ/@òÿÀ ®k@òÿÀ &nk@òÿÀ &.kæ¸gß Ä'Æe@òÿÀ îk@òÿÀ &nk@òÿÀ &.k@Àeüÿ&ß Ä'Æeµ òÿÍõÚøÿõÖúÿ@Àeøÿß BREAK_____ 288 322 CASE____ 3 :_ 289 323 ttop =( stop - 1 ) -> node 290 324 printf( ".ps%d\n", potsz ) 291 325 printf( ".ft I\n" ) 292 326 RETURN______ beautified p1base page 9 293 327 CASE____ 1 :_ 294 328 RETURN______ 295 329 1 } 296 330 } 297 332 awalk( tok, ptok, actset ) 298 333 INT_r1 inc mpid mov mpid,p.pid-2(r1) movb (sp),r2 asl r2 mov p.pid-2(r2),r2 mov r2,p.ppid-2(r1) mov r2,*u.r0 mov $sysret1,-(sp) mov sp,u.usp mov $sstack,sp jsr r0,wswap jsr r0,unpack mov u.usp,sp tst (sp)+ movb (sp)+,u.uno mov mpid,*u.r0 add $2,18.(sp) clr r1 1: movb u.fp(r1),r2 beq 2f asl r2 asl r2 asl r2 incb fsp-2(r2) 2: inc r1 cmp r1,$10. blt 1b br sysret1 sysread: jsr r0,rw1 tst r1 ble error1 jsr r0,readi br 1f syswrite: jsr r0,rw1 tst r1 bge error1 neg r1 jsr r0,wri˜—�N]ed`_\e» ² ¯ acƒ‡Ö�„b® -3°*ÇÝ aæß Ö @òÿ0ÿ7ô$Àñ@ìÿ0üÎæfòÿß Z–%æß Ö 5ÿüÿuÿøÿùAòÿqÿBîÿ²ÿBôwôà ò@òÿ0üÎæfîÿß Z–%æß Ö 5ÿüÿuÿøÿùÀñAîÿqÿwô¤ ò@îÿ0ü5ÿàÿuÿÜÿ@÷ð_â5ÿàÿððð_à@òÿ0ÿ@öÿ0ü_à5ÿÜÿððð @îÿ0ÿ@öÿ0ü  ƒÀ xøü|ü_| @ìÿ0þù€@&ø@öÿpÿVöpü@ø@Úÿ_f _| Îæfìÿß Z–%æß Ö Îæfòÿß Z–%æß Ö @ìÿ7õ² 0ü5ÿüÿuÿøÿù7ò¨ @òÿ0ü@òÿ0ÿ&ø@öÿpÿVôpü@ø_| Îæfìÿß Z–%æß Ö n 276 310 STRUCT______ enode * ptoken 277 311 { 278 312 1 INT___ * pactset 279 313 pactset = ba + pa[ stop -> state ] 280 314 SWITCH______ ( awalk( token, ptoken, pactset )) 281 315 { 282 316 2 CASE____ 0 :_ 283 317 printf( "Illegal expression\n" ) 284 318 exit( ) 285 319 CASE____ 2 :_ 286 320 parse( token, ptoken ) 287 321 t as casual____ part time____ full____? .sp 1 .ti 0 3. If part time employment were a BTL policy, would you be interested in working part time now____ in the future_____ not at all____ .sp 1 .ti 0 V. Children________ .sp 1 .ti 0 1. List the number of childrenyou have in each age group. Under 3 years____, 3-5 years____, 6-12 years____, over 12 years____ .sp 1 .ti 0 2. Check the actions you would like to take when your youngest child is: .nf Under 3 yrs 3-5 yrsw "ü…‰next ); iestr = bmode = cflag = dflag = 0; continue ; case 11: /* ERROR */ printf( "Illegal input character\n" ); exit( ); } } iccheck( cflag, dflag ); next -> estr[ 0 ] = '$'; next -> estr[ 1 ] = '\0'; /* Right endmarker */ parse( 1, next ); } det( b ) char b; { if ( 'a' <= b && b <= 'z' || 'A' <= b && b <= 'Z' ) return ( 0 ); switch ( b ) { case '{': case '[': case '(': return ( 2 ); case '}': case ']': case ')': r; case 10: /* remaining diacriticals */ iccheck( cflag, dflag ); next -> estr[ 0 ] = c; next -> estr[ 1 ] = '\0'; next -> length = LTAB( c, 1 ); parse( 10, next ++ ); iestr = bmode = cflag = dflag = 0; continue ; case 12: /* comma */ if ( tweek ) { next -> estr[ iestr ++ ] = ','; next -> length =+ 9.0; parse( 13, next ); parse( 16, next ); continue ; } iccheck( cflag, dflag ); parse( 16, ++= '('; * ins ++= 'd'; * ins ++= 'e'; * ins = '\0'; next -> length = 15.0; iestr = 10; } parse( iestr, next ++ ); break ; case 'f': next -> estr[ 1 ] = '('; next -> estr[ 2 ] = c; next -> estr[ 3 ] = getchar( ); next -> estr[ 4 ] = '\0'; next -> length = 9.0; parse( 10, next ++ ); break ; case 'm': c = next -> estr[ iestr ++ ] = getchar( ); dvnc( ); if ( c == 'u' ) iestr = 4; else@þÿAþÿ1¬L@þÿ° Îfúÿß ÞÖ Núÿføÿß ¦Ö 5üÿ @A@\ ffüÿß p2–%@üÿF…‡f…Æå Î ß ,5þÿ5öÿ _uüÿNþÿÎefüÿÎeæ9ß ÖF–%Nüÿß °G5øÿ@öÿð„=@öÿAøÿÁ AîGA>WtBøÿ ‚îG‚ÂEÿ�Pp @öÿAAœFWtB‚HÂEÀ�Pp @öÿAöÿqöÿAp@þÿAþÿñTATpwöÿ=Àü<F…‡f…Æå5 úÿA� Á À r55 òÿõÿÿðÿõüÿõ üÿ@üÿT@üÿÀ îG5þÿKõôÿõ ôÿ@ôÿ @ôÿÀ @mþÿtþÿ5`úÿïAúÿÀ rÀ Aþÿ@lAþÿ@l5úÿN@þÿ5øÿ&ß �EÖ À Á@þÿ5 öÿhv õ ª: G/<� ü ý Î ‡0Ì-|kN]|kZvfZ†3â[Ä[N]~k]°N|k¸[N]|kN]~kZvfZ†3â[Ä[N]€k]ÜM~kN]~k]¬Mzk¼[â[^~fZ~fZ^fž[^†fZVfZŠ3Z>fN]zkZvfN]|k]ÜMzk¸[ª[¸[^ŽfZ†fZNfª[^fN]zkN]|kZfN]~k]°N|kN]|kZFfN]~k]ÜM|k¸[N]|kN]~kZfN]€k]ÜM~kN]~k]¬Mzkâ[Zfª[^&fZ†fZ&fž[^fN]zkZFfN]|k]°NzkN]zkZfN]|k]°Nzk¸[^.fN]zkþY.f^|kN]~kZ~3â[Z.fZ.f¸[ª[N]€k]ÎN~kN]~k]¬Mzkâ[^fZ’3Zš3Z6f¸[ª[Z¢3Z6fZ:3â\¸[ª[Þ[^–fZ–fâ[Zf¸[Þ[^–fZŽfN]zkZfN]|k]ÜMzk¸[N]zkZfN]|k]ÜMzk¸[N^d = next -> estr[ 1 ] - '7'; next -> length = red; } iestr = 13; } /* restore from op spacing */ next -> estr[ 1 ] = '('; next -> estr[ 2 ] = '*'; next -> estr[ 3 ] = c; next -> estr[ 4 ] = '\0'; parse( iestr, next ++ ); break ; case 'p': c = next -> estr[ iestr ++ ] = getchar( ); dvnc( ); if ( c == 'd' ) { iestr = 6; next -> length = 22.0; } else { iestr = 5; next ->eturn ( 3 ); case '+': case '-': return ( 4 ); case '*': case '/': return ( 5 ); case '=': case '<': case '>': return ( 6 ); case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': return ( 1 ); case ' ': return ( 7 ); case '\\': return ( 8 ); case '_': return ( 9 ); case '~': case '!': case '^': return ( 10 ); case ',': return ( 12 ); default: return ( 11 ); getchar( ); if ( c != '4' ) { printf( "Illegal escape code\n" ); exit( ); } next -> estr[ 4 ] = '\0'; next -> length = 27.0; parse( 14, next ++ ); break ; case '>': case '<': case '=': case '~': case 'a': case '!': case '-': advnc( ); next -> length = 36.0; parse( 5, next ++ ); break ; case '*': c = next -> estr[ iestr ++ ] = getchar( ); if ( c == 'j' || c == 'J' || c == 'v' || c == 'V'Ò "–È  ð€&Ð 6÷ š–% ‰f…Æå= u/R÷ zÁÂWtqÿö@÷ð0½ ÷ `wÿ*òû5üÿWpÁezuþÿ5 üÿW-üÿ@þÿõeþÿ õåþÿ@þÿÈ· b½ µ üÿä½ ÷ wÿròû5üÿÀ "ó@üÿÀ 0 "÷ (ªN fffNoæÒ ß vÆeF…‡f…Æå Î ß v÷ ö7T÷ î7NÎ$ ß v@Àeâÿß ~ ß < 5úÿ ß &  @Àeâÿ&ß  Ö 5 þÿw-þÿ5 üÿW-üÿ÷ šÀ Àe"AþÿWpBüÿ �`1zµ üÿêµ þÿá ß & Núÿß < Núÿß & F…‡f…Æå"÷ @ÿ7þ¨7ü¸ 7ÿ´ &øæšæ2 ÷ ¦Æe ÎŠß è7ü– 7ÿ’ &øæF ÷ ˆÆe25 16 10 17 20 27 4 19 10 8 15 17 18 20 5 4 6 0 2 1 18 20 23 19 13 15 14 1 25 22 8 7 2 17 23 21 22 11 15 24 12 25 4 19 3 13 14 18 12 22 19 6 7 1 25 5 22 19 26 15 9 17 12 23 26 8 9 14 18 5 27 26 3 7 9 14 20 16 19 11 0 9 17 24 5 27 22 25 11 24 9 16 28 15 5 10 24 4 27 23 14 7 26 10 23 25 13 1 18 21 10 27 15 6 22 3 11 18 9 23 19 26 8 3 24 4 2 25 31 22 17 8 27 0 25 5 26 8 21 16 19 0 31 6 20 10 28 31 7 26 11 1 29 27 30 8 29 18 10 12 9 4 16 17 1 29 18 9 30 23 0 15 31 13 13 10 9 27 20 19 17 10 8 4 20 18 17 15 6 5 4 23 20 19 18 2 1 0 25 22 15 14 13 8 1 23 22 21 17 11 7 2 25 24 19 15 12 4 3 22 19 18 14 13 12 6 26 25 22 19 7 5 1 26 23 17 15 12 9 8 27 26 18 14 9 5 3 20 19 16 14 11 9 7 27 24 22 17 9 5 0 hhh ttth222 t11111 t2222222222jhead text [ iestr ] = '\0'; bmode = dflag + 13; parse( bmode, next ++ ); iestr = bmode = dflag = cflag = 0; next -> length = 0.0; continue ; case 8: /* Special font - escape characters */ iccheck( cflag, dflag ); iestr = bmode = cflag = dflag = 0; next -> estr[ iestr ++ ] = '\\'; next -> estr[ iestr ++ ] = '|'; next -> estr[ iestr ++ ] = c; if (( c = getchar( )) == '(' ) next -> estr[ iestr ++ ] = c; else switch ( c ) { case '\øR äÊ d ä3( ä3( ä3( ä3( äì2øV ÖB.äì2v 3lJøì2ZJ( øì2Zb( B Ú ø^ v3lˆüô2ø^ v3l€üø2äì2øô2ÖB†äì2øø2œøì2Zrzøb hÒBzv3løb ްBàäì2øü2ÖBÊäì2ø^ àøì2ZrzøV hÒB¾øü2üô2ø^ üø2øV üð2ø^ üì2øb hø3øì2¢rzø3v3løb š,B´øð2¢ løb šTøì2ZrzøV hÒøì2øð2¢ l€üì2øì2øø2²€øì2üø2øì2øô2v–øì2üô2øð2hø3øð2¢ lüð2B8øð2¢ &løb ŽÜøì2Zrzøb hÒøì2øð2¢ 2l€ü 798 850 snode -> htsz =( b / a ) *( pntc -> hsz - .4 ) beautified p2.c page 20 799 851 4 } 800 852 3 } 801 853 2 } 802 854 IF__ ( pntr -> hsz == 1.2 || pntr -> htsz == 0.0 ) 803 855 { 804 856 3 IF__ (( b / a ) <= .625 ) 805 857 { 806 858 4 ( pntr -> perturb ) -> value = .4 -( pntc -> perturb ) -> value 807 859 ( pntr -> restore ) -> value = - .4 808 860 snode -> hbsz =( .4 + pntr -> hbsz ) *( b / a ) 809 861 3 } 810 862 ELSE____ 811 863 { 812 864 4 ( pntr -> perturb ) -> value = .6 -( pntc -> perturb ) -> value 813 865 ( pntr -> restore ) -> value = - .6 814 866 snode -> hbsz =( .6 + pntr -> hbsz ) *( b / a ) 815 867 3 } 816 868 2 } 817 869 ELSE____ 818 870 { 819 871 3 IF__ ( pntr -> type == 7 || pntr -> type == 17 ) 820 872 { 821 873 4 IF__ (( b / a ) <= .625 ) 822 874 { 823 875 5 ( pntr -> perturb ) -> value = .7 -( pntc -> perturb ) -> value 824 876 ( pntr -> restore ) -> value = - .7 825 877 snode -> hpg A removable \(file system is supported for each device which allows random access; at present, these include the removable disks and \s10DEC\s12tape. A removable \(file system is initialized by writing on its corresponding special \(file. A utility program is available to generate an empty \(file system. It is also possible to copy an existing \(file system to generate a new \(file system. In the latter case, all of the \(files from the existing \(file system are transferred. .s2 3.5 Protection .es Altho.nr m -7 .de hd 'sp3 .tl ''- % -'' 'sp2 .nr x 0 1 .nr y 0 1 .if \\n(dn .if \\nz .fz .nr z 0 .ns .. .de fz .fn .nf .fy .fi .ef .. .de fo .ev2 .nf .if \\nx .xf .di .ev .ch fo \\nm 'bp .. .de xf .\\n+y .rm \\ny .if \\nx-\\ny .xf .. .de fx .di fy .nr z 1 .. .de fn .di \\n+x .ev1 .if !\\nx-1 .fs .. .de fs .ti0 ------------- .br .. .de ef .br .ev .di .ch fo x .. .wh 0 hd .wh \nm fo .ch fo -100 .wh \nm fx .ch fo \nm .ce Maternity Leave Fact Sheet .sp 3 The following fact sheet summarizes maternity leave policy at# trpint() {extern nrows, rowsum; printf("\nINTERRUPT"); prbits(); prmd(nrows, rowsum); exit(); } */ 246 273 slide( pntl ) 247 274 slide( pntr ) 248 275 string -> length =( string -> length * snode -> ptsz ) / 6.0 + 2.0 * snode -> ptsz 249 276 string -> length =+(( pntl -> strl ) -> length +( pntr -> strl ) -> length ) 250 277 IF__ ( pntl -> hsz >= pntr -> hsz ) 251 278 snode -> hsz = pntl -> hsz 252 279 ELSE____ snode -> hsz = pntr -> hsz 253 280 Ibsz =( .7 + pntr -> hbsz ) *( b / a ) 826 878 4 } 827 879 ELSE____ 828 880 { 829 881 5 ( pntr -> perturb ) -> value = 1.0 -( pntc -> perturb ) -> value 830 882 ( pntr -> restore ) -> value = - 1.0 831 883 snode -> hbsz =( 1.0 + pntr -> hbsz ) *( b / a ) 832 884 4 } 833 885 3 } 834 886 ELSE779819587 780140451 780417001 781347841 781420097 781471001 781517881 782823281 783170137 784242901 784450393 784586881 784777393 784783477 784966297 784990921 785901313 786262321 787085857 787209277 787267041 788046901 788378701 788931361 789082001 790020001 790239241 790453049 790623289 790799801 791118043 791348811 792049381 792144161 792145729 792418705 793045561 794201333 794399041 794910961 794937601 795064909 796072003 796200901 796560703 797418997 797834017 798695191 798770161 798823081 799104721 79____ 835 887 IF__ ( pntr -> type == 4 &&( pntr -> strl ) -> estr[ 1 ] == '\\' ) 836 888 { 837 889 4 IF__ (( b / a ) <= .625 ) 838 890 { 839 891 5 ( pntr -> perturb ) -> value =( pntr -> htsz - .3 ) -( pntc -> perturb ) -> value 840 892 ( pntr -> restore ) -> value = -( pntr -> htsz - .3 ) 841 893 snode -> hbsz =( b / a ) *( pntr -> hsz - .8 ) 842 894 4 } 843 895 ELSE____ 844 896 { 845 897 5 ( pntr -> perturb ) -> value =( pntr -> htsz + .1 ) -( pntc -> perturb ) -> value 846 898 ( pntr -> restore ) -> value = -( pntr -> htsz + .1 ) 847 899 snode -> hbsz =( b / a ) *( pntr -> hsz - .4 ) 848 900 4 } 849 901 3 } 850 902 2 } be1 ka11 1 kb11 1 ke11-a 1 kt11-c 1 fp11-b 2 kw11-l 1 kw11-p 1 ms11-bc 2 ms11-bm 3 mf11-l 4 mm11-l 2 bm792 1 rf11 2 rs11 1 rk11 4 rk05 1 tc11 2 tu56 1 tm11 1 tu10 2 lt33-d 1 aa11-d 2 ba614 1 vt01 2 dl11-a 7 dc11-aa 14 dc11-da 1 dp11-da 1 dn11-aa 3 dn11-da 5 dr11-c 1 dr11-b 2 db11 4 dd11 6 ba11 Use of the Concept of Transparency in the Design of Hierarchically Structured Systems to this comment and if you do, the commnetMr. Schwayder ddJune 22, 1973 dd189-2-dear_whom 188-2-date_senta196-1-name_and_address General RProfessor Parnas rnas DepartmentMr. Keith Schwayder Samsonite Corporation 11200 East 45th Avenue Denver, Colorado 80217 e Research Park McLean, Virginia 22101 196-1-dear_whomP196-paper Parnas196-1-date_sentdJune 21, 1973  17-other_authorAlfie xtr Conrow215-paperwhomaddannouncement.sp Mr. Stephen MacD. Warshall, President Massachusetts Computer Associates Lakeside Office Park Wakefield, Mass. 01880 osed_reporty207-1-name_and_addressmsonite Co217-dear_whomA. and Dr. Lang hor217-2-name_and_addressdear_whom7183-date_received incerely, .sp Prof. P. J. H. King Department of Computer Science Birkbeck College University of London Malet Street London, WC1E 7HX ENGLAND November 17, 1972 ler IBM Thomas183-other_authorsch Center P. O.183-dear_whombre183-paper Wegbre183-name_and_address2 .in 0 Professor Wegbreit Aiken Computa183-1-date_sentc[William_Waite] Fast Compactification en ComputaDecember 4, 1972 arvard UniversiProf. Ben Wegbreit Aiken Computation Laboratory Harvard University Cambridge, Massachusetts 02138 nnis_RitchieerDon_Knuths M. Ri183-1-name_and_address0 .hx .na 183-1-dear_whom-Professor Waite 183-2-date_sentn183-2-dear_whomyDecember 4, 1972 , your paper is183-2-name_and_addressrt Morris Dr. Cheney heneyAlfred_Ahohom Tu217-date_receivedessputing LaborMr. Cheney arnasBrian her_authorDr. Alfred Aho Room 2C-522 Bell Telephone Laboratories Murray Hill, New Jersey 19107 bridge CB2 3QE, ENGLAND 3 enclosed_reportyI have read the manuscript of your paper "221-paper" and asked the advice of a referee. I can definitely tell you that a paper 213-1-name_and_addressme your pa213-paperon L. P¬¬ ¼sor Bays aJune 22, 1973 d207-1-dear_whomyDouglas_McIlroyaJuly 21ear_whomoProf. David L. Parnas Department of Computer Science Carnegie-Mellon University Pittsburgh, Pennsylvania 15213 e on Shell's methd¤£¢¡ Ÿž�œ›š™˜—–•”“’‘��Ž�Œ‹Š‰ˆ‡†…„ƒ‚�€~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBAMiss Joan E. Miller Bell Laboratories Murray Hill do not occur i217-2-date_sentaJune 21, 1973 p 06-other_author206-paper Newste205-date_received-- a Scheme for205-other_authorsesspies?sed com”L¬ ,_whomA. [Alfred_Aho] d_aJune 1, 1973 han] June 1, 1973 s 19-other_authorProfessor Baron {reject}rent s oApril 18, 1973 e206-name_and_addressable AlgoritProfessor Newsted sted School of215-1-date_sentaJuly 22r_whomRamProfessor Wagner agner Systems a206-other_authorsn Table Algorit206-date_receivedessf Transparen.in 30 REPLY TO: Robert Morris .in +11 Room 2C-524 Bell Telephone Laboratories Murray Hill, N.J. 07974 .sp [0], 1973 .in 0 72 .in 0 headerA Non-Recursive, In-Place Implementation of the Ford-Johnson Sorting Algorithm husetts 01754 gree with the referees analysis butMr. Gary D. Knott Bldg. 12A, Room 3063 National Institutes of Health Bethesda, Maryland 20014 policy of CACM not to accept papeDr. W. Rey MBLE Research Laboratory Avenue Em. Van Becelaere 2 B-1170 Brussels BELGIUM is the policy of CACM not to accept papeJanuary 24, 1973 n which consist191-1-name_and_addressannounceme 22-other_author213-2-name_and_a206-1-name_and_addressAlthough I enjoyed reading your manuscript and I agree that the subject is an interesting and useful one, I do not feel that your paper contains sufficient new technical information to warrant publication. [for_this_reason] ennis_RitchieerDon_Knuths M. RiMr. Kenneth L. Thompson Bell Telephone Laboratories Murray Hill, N. J. se_reasonsyour paper is nminor_improvement, your paper isConversion of Limited-Entry Decision Tables to Computer Programs - A Proposed Modification to Pollack's Algorithm 972 .in 0 Dr. M. Verhelst Institute of Applied Economic Sciences University of Louvain Louvain BELGIUM Prof. M. Verhelst Instituut voor Toegepaste Economische Wetenschappen Universiteit to Leuven Universiteit te Leuven Dekenstraat, 2 3000 Leuven BELGIUM 3000 Leuven, BELGIUM r peculiarity on the tree. I do not think that such relatively minor improvements of existing techniques should receive publication as separate papers. .sp [for_this_reason] f representation of negative numbers in such systems and about the very tDr. Ronald C. Hall Sandia Laboratories Albuquerque, New Mexico 87115 eason] for review. .sp I am looking forward to hearing froOn the Conversion of Programs to Decision Tables: Method and Objectives it has been widely distributed and is generallly availabDr. Solomon L. Pollack c/o Sterlin 1014 18th Street Santa Monica, California 90403 4 .ti -4 1. The author should say, right at An External Sorting Technique for Information Stored on Rotating Memories roach and yet the subject matter which is discussed isProf. Naftaly Minsky Department of Computer Sciences 114 Main Engineering Building University of Minnesota Minneapolis, Minnesota 55455 ese lines will not be acceptable for publication in the CACM. .sp It is the policy of the Communications not to accept a[carefully] .sp The content of your paper is highly theoretical in its approach and yet the subject matter which is discussed is of extremely narrow scope. Viewed in the context of the whole field of external sorting, I feel that your contribution represe[carefully] .sp The content of your paper is highly theoretical in its approach and yet the subject matter which is discussed is of extremely narrow scope. Viewed in the context of the whole field of external sorting, I feel that your contribution represents a relatively minor addition to the existing lore. .sp [for_this_reason] r description of the features and options of a particular software system. I feel that your paper falls under this general description and is for that reason unsuitable. otential I sent your paper to a referee who is mutually acceptable to the CACM and the JACM hoping for a favorable result. As you can see from the report enclosed, the referee felt rather strongly that your paper represents a minor result. .sp I was very disappointed to receive this report and I do not totally agree with it, but in the light of the report I do not believe that there is a prayer of ever getting it accepted in the JACM. .sp As for the CACM, your paper is too theoretical and too remote from potential applications to warrant publication there. [for_this_reason] ore serious is that the style of writing also conceals what the paper is about until one has read .ul 1 all of it in great detail. Correction of this problem is essential and will require considerable revision. .sp The following remarks are verbatim from the referees: .sp .in 4 .ti -4 1. The author should say, right at the beginning, some words (not symols) which generally describe the heart of the paper: that he is worrying about the re-ordering of loop iterations to permit more parallel execution; that the number of possible re-orderings is astronomically large, and has frightened people away from the problem; that his central idea is to restrict the space of re-orderings he considers e considerable revision. .sp The following remarks are verbatim from the referees: .sp .in 4 .ti -4 1. The author should say, right at the beginning, some words (not symols) which generally describe the heart of the paper: that he is worrying about the re-orderiautified p2.c page 21 851 903 snode -> hsz = pntl -> hsz + snode -> htsz + snode -> hbsz 852 904 IF__ (( pntr -> strl ) -> length >=( pntc -> strl ) -> length ) 853 905 max =( pntr -> strl ) -> length 854 906 ELSE____ 855 907 { 856 908 3 max =( pntc -> strl ) -> length 857 909 motion( 0, aladjust( pntr, 2, 0 )) 858 910 ( pntr -> xstore ) -> value = max -( pntr -> strl ) -> length 859 911 2 } 860 912 string -> length =(( pntl -> strl ) -> length + max ) 861 913 RETURN______ 862 914 CASE____ 9 :_ 863 915 /* overbar 864 918 */ 865 919 slide( pntc ) 866 920 string -> length =( pntc -> strl ) -> length 867 921 snode -> hsz = pntc -> hsz 868 922 snode -> htsz = pntc -$40,000, and less than two man-years was spent on the main system software. Yet \s10UNIX\s12 contains a number of features seldom o\(ffered even in much larger systems. Hopefully, however, the users of \s10UNIX\s12 will \(find that the most important characteristics of the system are its simplicity, elegance, and ease of use. .pg Besides the system proper, the major programs available under \s10UNIX\s12 are .sp .5 .in .5i .in .75 .ti .5 assembler, .ti .5 text editor based on \s10QED\s12\*r, .ti .5 linking l> htsz 869 923 snode -> hbsz = pntc -> hbsz 870 924 RETURN______ 871 925 CASE____ 10 :__ 872 926 /* remaining diacriticals & factorial 873 929 */ 874 930 slide( pntc ) 875 931 string -> length =*( snode -> ptsz / 6.0 ) 876 932 string -> length =+( pntc -> strl ) -> length 877 933 snode -> hsz = pntc -> hsz 878 934 snode -> htsz = pntc -> htsz 879 935 snode -> hbsz = pntc -> hbsz 880 936 RETURN______ 881 937 CASE____ 13 :__ 882 938 CASE____ 14 :__ 883 939 nnode -> hsz = 1.2 884 940 snode -> htsz = 0.0 885 941 snode -> hbsz = 0.0 886 942 a = snode -> ptsz beautified p2.c page 22 887 943 string -> length =*( a / 6.0 ) 888 944 RETURN______ 889 945 1 } 890 946 } beautified p3.c page 1 1 2 STRUCT______ adjust 2 3 { 3 4 1 CHAR____ escape[ 4 ], unit 4 5 FLOAT_____ value 5 6 INT___ pliv 6 7 } 7 9 STRUCT______ adjust madjust[ 100 ], * fadjust 8 10 STRUCT______ enode 9 11 { 10 12 1 CHAR____ estr[ 20 ] 11 13 FLOAT_____ length 12 14 } 13 16 STRUCT______ etree 14 17 { 15 18 1 INT___ type, ptsz 16 19 STRUCT______ enode * strl, * strr 17 20 STRUCT______ etree * lpnt, * cpnt, * rpnt, * bpnt 18 21 STRUCT______ adjust * perturb, * restore, * xstore 19 22 FLOAT_____ hsz, htsz, hbsz 20 23 } 21 25 INT___ stmode 22 26 build( lim, ps ) 23 27 FLOAT_____ lim 24 28 INT___ ps 25 29 { 26 30 1 FLOAT_____ a 27 31 a = 18.0 * ps / 6.0 28 32 ps = 0 29 33 IF__ ( lim <= a ) 30 34 { 31 35 2 printf( "\\(ul" ) 32 36 RETURN______ 33 37 1 } 34 38 WHILE_____ ( lim >= a ) 35 39 { 36 40 2 printf( "\\(ul" ) 37 41 lim =- a 38 42 ps =+ 1 39 43 IF__ ( ps > 14 ) 40 44 { 41 45 3 printf( "\\\n" ) 42 46 ps = 0 43 47 2 } 44 48 1 } beautified p3.c page 2 45 49 IF__ ( lim == 0.0 ) 46 50 RETURN______ 47 51 lim =- a 48 52 printf( "\\h'%.2fu'\\(ul", lim ) 49 53 RETURN______ 50 54 } 51 56 twalk( nnode ) 52 57 STRUCT______ etree * nnode 53 58 { 54 59 1 STRUCT______ enode * string, * string1 55 60 STRUCT______ etree * pntl, * pntc, * pntr, * snode 56 61 CHAR____ * blip 57 62 string1 = nnode -> strr 58 63 string = nnode -> strl 59 64 pntl = nnode -> lpnt 60 65 pntc = nnode -> cpnt 61 66 pntr = nnode -> rpnt 62 67 snode = nnode 63 68 SWITCH______ ( nnode -> type ) 64 69 { 65 70 2 CASE____ 48 :__ 66 71 /* Dummy node 67 74 */ 68 75 69 76 IF__ ( snode -> perturb ) 70 77 printf( "%s%.2f%c'",( snode -> perturb ) -> escape,( snode -> perturb ) -> value,( snode -> perturb ) -> unit ) 71 78 twalk( pntc ) 72 79 BREAK_____ 73 80 CASE____ 3 :_ 74 81 CASE____ 5 :_ 75 82 IF__ ( snode -> perturb ) 76 83 { 77 84 3 printf( "%s%.2f%c'",( snode -> perturb ) -> escape,( snode -> perturb ) -> value ,( snode -> perturb ) -> unit ) 78 85 2 } 79 86 twalk( pntl ) 80 87 printf( "%s", string -> estr ) 81 88 twalk( pntr ) 82 89 BREAK_____ 83 90 CASE____ 4 :_ beautified p3.c page 3 84 91 IF__ ( string -> estr[ 1 ] == '\\' ) 85 92 { 86 93 3 printf( "%s%.2f%c'\\\n",( snode -> perturb ) -> escape,( snode -> perturb ) -> value,( snode -> perturb ) -> unit ) 87 94 twalk( pntl ) 88 95 IF__ ( pntc -> xstore ) 89 96 { 90 97 4 printf( "%s%.2f%c'\\\n",( pntc -> xstore ) -> escape,( pntc -> xstore ) -> value,( pntc -> xstoRSTUVWXY[^_`abcdfghijklmnopqrstuvwxre ) -> unit ) 91 98 3 } 92 99 build( pntc -> hsz, snode -> ptsz ) 93 100 printf( "%s%.2f%c'",( pntc -> perturb ) -> escape,( pntc -> perturb ) -> value,( pntc -> perturb ) -> unit ) 94 101 printf( "%s%.2f%c'\\\n",( pntc -> restore ) -> escape,( pntc -> restore ) -> value,( pntc -> restore ) -> unit ) 95 102 twalk( pntr ) 96 103 printf( "%s%.2f%c'\\\n",( snode -> restore ) -> ary disk \(files, directories, and special \(files. .s2 3.1 Ordinary Files .es A \(file contains whatever information the user places on it, for example symbolic or binary (object) programs. No particular structuring is expected by the system. Files of text consist simply of a string of characters, with lines demarcated by the new-line character. Binary programs are sequences of words as they will appear in core memory when the program starts executing. A few user programs manipulate \(files with more strucoader, .ti .5 symbolic debugger, .ti .5 compiler for a language resembling \s10BCPL\s12\*r with types and structures (C), .ti .5 interpreter for a dialect of \s10BASIC\s12, .ti .5 text formatting program, .ti .5 Fortran compiler, .ti .5 Snobol interpreter, .ti .5 top-down compiler-compiler (\s10TMG\s12\*r), .ti .5 bottom-up compiler-compiler (\s10YACC\s12), .ti .5 form letter generator, .ti .5 macro processor (M6\*r), .ti .5 permuted index program. .sp .5 .in 0 .fi There is also a host of maintenance, utiliescape,( snode -> restore ) -> value,( snode -> restore ) -> unit ) 97 104 IF__ ( snode -> xstore ) 98 105 { 99 106 4 printf( "%s%.2f%c'\\\n",( snode -> xstore ) -> escape,( snode -> xstore ) -> value,( snode -> xstore ) -> unit ) 100 107 3 } 101 108 RETURN______ 102 109 2 } 103 110 IF__ ( snode -> perturb ) 104 111 { 105 112 3 printf( "%s%.2f%c'",( snode -> perturb ) -> escape,( snode -> perturb ) -> value ,( snode -> perturb ) -> unit ) 106 113 2 } 107 114 twalk( pntl ) 108 115 printf( "%s", string -> estr ) 109 116 twalk( pntr ) 110 117 BREAK_____ 111 118 CASE____ 7 :_ 112 119 /* superscripts 113 122 */ 114 123 115 124 IF__ ( snode -> perturb ) 116 125 { 117 126 3 printf( "%s%.2f%c'",( snode -> perturb ) -> escape,( snode -> perturb ) -> value ,( snode -> perturb ) -> unit ) 118 127 2 } 119 128 twalk( pntl ) 120 129 printf( "\\s%d%s%.2f%c'\\\n", pntr -> ptsz,( pntc -> perturb ) -> escape,( pntc -> beautified p3.c page 4 perturb ) -> value,( pntc -> perturb ) -> unit ) 121 130 twalk( pntr ) 122 131 printf( "%s%.2f%c'\\s%d\\\n",( pntc -> restore ) -> escape,( pntc -> restore ) -> value,( pntc -> restore ) -> unit, snode -> ptsz ) 123 132 BREAK_____ 124 133 CASE____ 8 :_ 125 134 /* subscript 126 137 */ 127 138 128 139 IF__ ( snode -> perturb ) 129 140 { 130 141 3 printf( "%s%.2f%c'",( snode -> perturb ) -> escape,( snode -> perturb ) -> value ,( snode -> perturb ) -> unit ) 131 142 2 } 132 143 twalk( pntl ) 133 144 printf( "\\s%d%s%.2f%c'\\\n", pntr -> ptsz,( pntc -> perturb ) -> escape,( pntc -> perturb ) -> value,( pntc -> perturb ) -> unit ) 134 145 twalk( pntr ) 135 146 printf( "%s%.2f%c'\\s%d\\\n",( pntc -> restore ) -> escape,( pntc -> restore ) -> value,( pntc -> restore ) -> unit, snode -> ptsz ) 136 147 IF__ ( snode -> restore ) 137 148 { 138 149 3 printf( "%s%.2f%c'\\\n",( snode -> restore ) -> escape,( snode -> restore ) -> value,( snode -> restore ) -> unit ) 139 150 2 } 140 151 IF__ ( snode -> xstore ) 141 152 { 142 153 3 printf( "%s%.2f%c'\\\n",( snode -> xstore ) -> escape,( snode -> xstore ) -> value,( snode -> xstore ) -> unit ) 143 154 2 } 144 155 RETURN______ 145 156 CASE____ 56 :__ 146 157 printf( "%s", string -> estr ) 147 158 twalk( pntc ) 148 159 printf( "%s\\\n", string1 -> estr ) 149 160 RETURN______ 150 161 CASE____ 6 :_ 151 162 IF__ ( snode -> bpnt ) 152 163 IF__ (( snode -> bpnt ) -> type == 6 ) 153 164 printf( "\\|\\|" ) 154 165 IF__ ( snode -> perturb ) 155 166 printf( "%s%.2ty, recreation and novelty programs. All of these programs were written locally. It is worth noting that the system is totally self-supporting. All \s10UNIX\s12 software is maintained under \s10UNIX\s12; likewise, this paper and all other \s10UNIX\s12 documents were generated and formatted by the \s10UNIX\s12 editor and text formatting program. .s1 2. Hardware .es The \s10PDP\s12-11/45 on which our \s10UNIX\s12 installation is implemented is a 16-bit word (8-bit byte) computer with 104K bytes of core. Of thf%c'",( snode -> perturb ) -> escape,( snode -> perturb ) -> value,( snode -> perturb ) -> unit ) 156 167 printf( "%s", string -> estr ) 157 168 IF__ ( snode -> restore ) beautified p3.c page 5 158 169 printf( "%s%.2f%c'\\\n",( snode -> restore ) -> escape,( snode -> restore ) -> value,( snode -> restore ) -> unit ) 159 170 IF__ ( pntl ) 160 171 { 161 172 3 printf( "\\s%d", pntl -> ptsz ) 162 173 twalk( pntl ) 163 174 IF__ ( ! pntr ) 164 175 printf( "\\s%d\\\n", snode -> ptsz ) 165 176 2 } 166 177 IF__ ( pntr ) 167 178 { 168 179 3 IF__ ( ! pntl ) 169 180 printf( "\\s%d", pntr -> ptsz ) 170 181 twalk( pntr ) 171 182 printf( "\\s%d\\\n", snode -> ptsz ) 172 183 2 } 173 184 twalk( pntc ) 174 185 IF__ ( string1 ) 175 186 printf( "\\|\\|%s\\\n", string1 -> estr ) 176 187 RETURN______ 177 188 CASE____ 16 :__ 178 189 IF__ ( snode -> perturb ) 179 190 { 180 191 3 printf( "%s%.2f%c'",( snode -> perturb ) -> escape,( snode -> perturb ) -> value ,( snode -> perturb ) -> unit ) 181 192 2 } 182 193 twalk( pntl ) 183 194 twalk( pntc ) 184 195 BREAK_____ 185 196 CASE____ 17 :__ 186 197 IF__ ( snode -> perturb ) 187 198 { 188 199 3 printf( "%s%.2f%c'",( snode -> perturb ) -> escape,( snode -> perturb ) -> value ,( snode -> perturb ) -> unit ) 189 200 2 } 190 201 twalk( pntl ) 191 202 printf( "\\s%d", pntc -> ptsz ) 192 203 twalk( pntc ) 193 204 twalk( pntr ) 194 205 printf( "\\s%d\\\n", snode -> ptsz ) 195 206 BREAK_____ 196 207 CASE____ 49 :__ 197 208 IF__ ( snode -> perturb ) 198 209 printf( "%s%.2f%c'",( snode -> perturb ) -> escape,( snode -> perturb ) -> value,( snode -> perturb ) -> unit ) 199 210 printf( "%s", string -> estr ) 200 211 twalk( pntc ) 201 212 BREAK_____ 202 213 CASE____ 9 :_ 203 214 IF__ ( snode -> perturb ) 204 215 printf( "%s%.2f%c'",( snode -> perturb ) -> escape,( snode -> perturb ) -> value,( snode -> perturb ) -> unit ) 205 216 twalk( pntc ) 206 217 printf( "\\v'-1.0m'\\h'-%.2fu'", string -> length ) beautified p3.c page 6 207 218 build( string -> length, snode -> ptsz ) 208 219 printf( "\\v'1.0m'\\\n" ) 209 220 BREAK_____ 210 221 CASE____ 10 :__ 211 222 IF__ ( snode -> perturb ) 212 223 printf( "%s%.2f%c'",( snode -> perturb ) -> escape,( snode -> perturb ) -> value,( snode -> perturb ) -> unit ) 213 224 twalk( pntc ) 214 225 SWITCH______ ( string -> estr[ 0 ] ) 215 226 { 216 227 3 CASE____ '!' :___ 217 228 CASE____ '\\' :____ 218 229 printf( "%s", string -> estr ) 219 230 BREAK_____ 220 231 DEFAULT_______ : snode -> hsz = 2.0 *( pntc -> strl ) -> length 221 232 snode -> hsz =- string -> length 222 233 snode -> hsz =/ 2.0 223 234 snode -> htsz = snode -> hsz -( pntc -> strl ) -> length 224 235 printf( "\\v'-.2m'\\h'%.2fu'%s", snode -> htsz, string -> estr ) 225 236 IF__ ( snode -> hsz > 0.0 ) 226 237 printf( "\\v'.2m'\\h'%.2fu'\\\n", snode -> hsz ) 227 238 ELSE____ printf( "\\v'.2m'\\\n" ) 228 239 2 } 229 240 BREAK_____ 230 241 CASE____ 13 :__ 231 242 CASE____ 14 :__ 232 243 IF__ ( snode -> perturb ) 233 244 printf( "%s%.2f%c'",( snode -> perturb ) -> escape,( snode -> perturb ) -> value,( snode -> perturb ) -> unit ) 234 245 IF__ ( nnode -> type == 14 ) 235 246 printf( "\\fR" ) 236 247 printf( "%s\\\n", string -> estr ) 237 248 IF__ ( nnode -> type == 14 ) 238 249 printf( "\\fP\\n" ) 239 250 1 } 240 251 IF__ ( snode -> restore ) 241 252 { 242 253 2 printf( "%s%.2f%c'\\\n",( snode -> restore ) -> escape,( snode -> restore ) -> value ,( snode -> restore ) -> unit ) 243 254 1 } 244 255 IF__ ( snode -> xstore ) 245 256 { 246 257 2 printf( "%s%.2f%c'\\\n",( snode -> xstore ) -> escape,( snode -> xstore ) -> value,( snode -> xstore ) -> unit ) 247 258 1 } 248 259 RETURN______ 249 260 } beautified p3.c page 7 250 262 /* To adequately cover all posibilities one should compare the accumulated extensions of expressions above and below the base line 251 266 */ 252 267 isit( nnode ) 253 268 STRUCT______ etree * nnode 254 269 { 255 270 1 STRUCT______ etree * snode 256 271 snode = nnode 257 272 SWITCH______ ( nnode -> type ) 258 273 { 259 274 2 CASE____ 13 :__ 260 275 CASE____ 14 :__ 261 276 RETURN______ 262 277 CASE____ 3 :_ 263 278 CASE____ 5 :_ 264 279 isit( nnode -> lpnt ) 265 280 isit( snode -> rpnt ) 266 281 RETURN______ 267 282 CASE____ 7 :_ 268 283 CASE____ 8 :_ 269 284 CASE____ 17 :__ 270 285 /* May yet need another twist 271 288 */ 272 289 isit( nnode -> lpnt ) 273 290 RETURN______ 274 291 CASE____ 16 :__ 275 292 CASE____ 56 :__ 276 293 isit( nnode -> cpnt ) 277 294 RETURN______ 278 295 CASE____ 4 :_ 279 296 IF__ (( nnode -> strl ) -> estr[ 1 ] == '\\' ) 280 297 stmode = 1 281 298 ELSE____ 282 299 { 283 300 3 isit( snode -> lpnt ) 284 301 isit( snode -> rpnt ) 285 302 2 } 286 303 RETURN______ 287 304 CASE____ 48 :__ beautified p3.c page 8 288 305 stmode = 1 289 306 RETURN______ 290 307 CASE____ 6 :_ 291 308 isit( nnode -> cpnt ) 292 309 RETURN______ 293 310 1 } 294 311 } 295 312 oyeah( r ) 296 313 INT___ r 297 314 { 298 315 1 SWITCH______ ( r ) 299 316 { 300 317 2 CASE____ 6 :_ 301 318 CASE____ 7 :_ 302 319 CASE____ 8 :_ 303 320 CASE____ 9 :_ 304 321 CASE____ 10 :__ 305 322 RETURN______ ( 6 ) 306 323 CASE____ 11 :__ 307 324 CASE____ 12 :__ 308 325 RETURN______ ( 7 ) 309 326 CASE____ 14 :__ 310 327 RETURN______ ( 8 ) 311 328 CASE____ 16 :__ 312 329 RETURN______ ( 10 ) 313 330 CASE____ 18 :__ 314 331 RETURN______ ( 11 ) 315 332 CASE____ 20 :__ 316 333 RETURN______ ( 12 ) 317 334 CASE____ 22 :__ 318 335 CASE____ 24 :__ 319 336 RETURN______ ( 14 ) 320 337 CASE____ 28 :__ 321 338 RETURN______ ( 16 ) 322 339 CASE____ 36 :__ 323 340 RETURN______ ( 22 ) 324 341 1 } 325 342 } 326 343 /* Move: 0-horizontally, 1-vertically 327 345 */ beautified p3.c page 9 328 346 motion( direc, pl ) 329 347 INT___ direc 330 348 CHAR____ * pl 331 349 { 332 350 1 * pl ++ = '\\' 333 351 * pl ++ = direc ? 'v' : 'h' 334 352 * pl ++ = '\' '; *pl=' \ 0 '; return; } ¬L22°L23Â_sbvafl"V_udlab"È_npages _pagelis L24JL25ºL27¬L28¤L29�_pspace _save L26²L30l_fetch L31PL326_move L33d_alterk L34PL35â_setdskl L10001ÄL10002ØL36PL100032L10004FL37pL38ÀL39®L40ˆL41¢_deactiv" L42¾_vtupdat"Ä_getv"L43âL44ŠL45 _truncat _freh upper limit */ ( stop - 8 ) -> node = alcopy( 6,( stop - 8 ) -> pstr ); (( stop - 8 ) -> node ) -> strr =( stop - 3 ) -> pstr; pontr( 2, 8, 1 ); pontr( 0, 8, 6 ); stop =- 7; break ; case 21: /* integral with lower limit */ ( stop - 8 ) -> node = alcopy( 6,( stop - 8 ) -> pstr ); (( stop - 8 ) -> node ) -> strr =( stop - 3 ) -> pstr; pontr( 2, 8, 1 ); pontr( 1, 8, 5 ); stop =- 7; break ; case 20: /* integral with uppees since initializationprintprint boarddrawdraw board on vt0scalechange draw scaleinputinput position from a fileoutputoutput position to a filesearchprint search depthtimechange timerbranchchange branchingresigngive up/comment01list commands02reinitialize board03list position04list score05reverse position06backup n moves07make move for player08change search099exit programword not found-(-1,d,zh,u1,u2,m,p,z,s,),?,!,:-0,- -0,bdÿþýüûúùø÷öõôóòñðïîíìëêéèçæåäãâáàßÞÝÜÛÚÙØ×ÖÕÔÓÒÑÐÎÌËÊÉÈÇÆÃÂÁÀ¿¾¼»¸·¶´³²¯«¥¤Ÿ�›š™—–•‘Œ‹Š…‚�€~Èý 'Öÿrminals,%d productions external memory %d,internal memory %d %d EQU states,%d EQU gotos %d states without stack %d action entries %d action entries saved through merging %d states %d goto entries %d entries saved by goto default %d pairs,%d matched illegal /invalid use of '\'illegal characterZ 'ø<N :T =F |> ;^ \$error$accepty.tab.cy.output act(__np__) { switch(__np__) {missing :bad syntax in precedence sectionmissing : case %d: break;illegal \= syntaxnont,s,s,i0,1k,z,s,7-1,s,e1,v,e2,n,8-1,ai,y1,t,h,9-1,n,a0,iy,n, -0,-0,-0,Your-1,y2,iu,iu,r,move-1,m,iu,iu,v,score-1,s,s,1k,o0,r,search-1,s,s,er,ch,t,ch,eh-1,e0,h,huh-1,h,3u1,1u2,h,skip-1,s,s,1k,i0,p,reverse-1,r,e0,v,er,s,s,unknown-1,u1,u2,ng,n,o1,o1,w,n,what-1,h,w,u1,t,h,b-0,b,l,ae,1k,-1,m,ae,n,B-0,b,l,ae,1k,-1,1k,i0,ng,g,w-0,h,w,a0,iy,t,h,-1,m,ae,n,W-0,h,w,a0,iy,t,h,-1,1k,i0,ng,g,-1,n,o0,-1,m,ae,t,t,ch,f…Æåõ ôÿ5 ìÿõˆWöÿõô?þÿ@ôÿœ®K5òÿVw-òÿ$6õˆBþÿ lowoff[c] + offset -byte; c = set1(1,lowoff[c],c); } } } return (n); } char lowoff[256] { 15,14,15,13,15,14,15,12 ,15,14,15,13,15,14,15 ,11, 15,14,15,13,15,14,15,12 ,15,14,15,13,15,14,15 ,10, 15,14,15,13,15,14,15,12 ,15,14,15,13,15,14,15 ,11, 15,14,15,13,15,14,15,12 ,15,14,15,13,15,14,15 ,9, 15,14,15,13,15,14,15,12 ,15,14,15,13,15,14,15 ,11, 15,14,15,13,15,14,15,12 ,15,14,15,13,15,14,15 ,10, 15,14,15,13,15,14,15,12 ,15,14,15,13,15,14,15 ,11, 15,14,15,13,15,14,15,12 ,15,14,15,13,15,14,15 ,8, ÀænSß l$Ö À ÀæænSß `4–%_T4÷ f _d,Îòæ2Qß H;Ö À<8· 88¢? ÷ .8ÀÐ À7Â_d,ÀÊ À7¼_d,À² À7¤_d,Î>Qß H;õüÿ@üÿÀ žþE*@üÿÀ þEæ@Qß H;Ö @üÿµ üÿÀ þEÀeAüÿÁ @,þE‚ÎDQß H;@üÿµ üÿÀ þEæFQß H;Ö ÐÎJQß H;_d,÷•üÿJ$À ÀænSß l$Ö ÎìæüŽ ænSß `4–%_T4ÀÔ Àß ¤À 5 öÿ_T4ÀÐ ÎæLQß zDÖ 7H=_d, æTQß zDÖ 70= À Î&=ß ÊC_d,÷Š÷†õôÿ_d,ÎâRß ú"ÀT_T4õôÿ_d,Î\Qß H;_d,÷ ¤À0AôÿWp u`þÿ@ŸþÿF@Ÿþÿœ®K,µ ìÿÀ@W· HNjp|‚”œ´ºÄÌÞäú:BbjˆŽ¶¾Üâ,2DJfnˆ�¤ª¸ÀÒÚâäìÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ  .pg Each directory always has at least two entries. The name ``\|\fB.\|\fR'' in each directory refers to the directory itself. Thus a program may read the current directory under the name ``\fB\|.\|\fR'' without knowing its complete path name. The name ``\fB\|.\|.\|\fR'' by convention refers to the parent of the directory in which it appears, that is to the directory in which it was created. .pg The directory structure is constrained to have the form of a rooted tree. Except for the special entries ``\|\fB\ÀÿÀÿ5þÿN@Àeüÿ&ß Ö @ @üÿtAþÿWt÷ÿÁE€ÿ@PAüÿWtBþÿ—töÿÂEÀÿ�PÀ rF…‡f…¦)õþÿõ þÿ@þÿ@þÿÀ  @þÿÀ ÀEÿ@-è@þÿF…‡€@ €@ Àÿ?üÿð?ÿðÿÀü###4##4#44E##4#44E#44E4EEV##4#44E#44E4EEV#44E4EEV4EEVEVVgXhhˆ˜¸hþÿAœÿÿH�ÀXU· TUAþÿAœÿÿAœ®KH�ÀBU· >UAŸþÿH�µ þÿÄõ ôÿ@ôÿ¨õð]üÿw-üÿU‡_– uüÿúÿ@üÿµ üÿ’5òÿ@Ÿüÿœ®K5ðÿ@üÿµ üÿ’0Š®K@òÿõ òÿÀ @üÿµ üÿ’0Š®Kµ üÿð@üÿµ üÿ’5òÿp�ðÿ®Kõô?þÿ@òÿ7¬®K\3õˆBþÿAòÿWp u`þÿ5 îÿµ þÿ@þÿ’c@Ÿþÿœ®K[@þÿœÿÿœ®KTµ îÿuúÿøÿ@øÿµ øÿ’5ôÿÀLT· HTAôÿ� H�À= ncols)continue; if(profit(r1, colson[i], colsoff[j])) return(1); if(profit(r2, colson[i], colsoff[j])) return(1); } return (0); } |.\|\fR'' and ``\fB\|.\|.\|\fR'', each directory must appear as an entry in exactly one other, which is its parent. The reason for this is to simplify the writing of programs which visit subtrees of the directory structure, and more important, to avoid the separation of portions of the hierarchy. If arbitrary links to directories were permitted, it would be quite dif\(ficult to detect when the last connection from the root to a directory was severed. .s2 3.3 Special Files .es Special \(files constitute the À ž8C*@üÿÀ 8Cæ²Nß ‚8Ö @üÿµ üÿÀ 8CÀeAüÿÁ @,8C‚ζNß ‚8@üÿµ üÿÀ 8Cæ¸Nß ‚8Ö ÐμNß ‚8_ž)÷•üÿ‚$À ÀæàPß ®!Ö ÎìæüŽ æàPß š1–%_Ž1ÀÔ Àß êÀ 5 öÿ_Ž1ÀÐ Îæ¾Nß ´AÖ 7€=_ž) æÆNß ´AÖ 7h= À Î^=ß A_ž)÷Š÷†õôÿ_ž)ÎTPß < ÀT_Ž1õôÿ_ž)ÎÎNß ‚8_ž)÷ ¤À0_Ž1õôÿ_ž)õüÿW-üÿ @üÿÀ AüÿAœ2PpXPµ üÿð÷öà"÷Ü"÷ê6Ø"_ž)÷ Ôó5üÿõüÿÀä€ @íüÿ5üÿ ÀÔ€ € ææNß ‚8Ö @üÿÀ ß ˆ2õôÿ_ž)_ž)÷ „ó5üÿÀš€ € @-üÿ ß etdskl(),pspace[]; diskloc[1]=0; diskloc[0]=(drive<<13)|1; if ((what&3)!=0) { if ((l=fetch(4,diskloc))==0) return; if ((what&1)!=0) { m=dlabel[drive]; move(31,m+1,l+1); } if ((what&2)!=0) { m=lcm[drive]; move(127,m+1,l+129); } alterk(l); } if ((what&12)!=0) { if (((what&4)!=0)&&((l=tap[drive])!=0)) { setdskl(l,&diskloc[0]); alterk(l); tap[drive]= ((m=fetch(6,diskloc))==0) ? m:(m+((l- &pspace[0])&255)); } if (((what&8)!=0)&&((l=sap[drive])!=0)) { setdskl(l,&diskloc[0]); alterk(l); sap[drive]= ((m=fetch(8,disp�þRí@üÿµ üÿ’0ŠþR@îÿp�ðÿþR]@üÿµ üÿ’5êÿp�ðÿþR@üÿµ üÿ’5èÿ0ŠþRw-ðÿ)F@öÿÀe7lJÀŸhJ=ÀŸbJÀe7`ZJÀVJ’3ÀNJ· JJ’ÀŸBJÀe7`:J%À4J· 0J5¢èÿÀ&J· "J’5èÿ@-êÿ@òÿ@òÿtþÿ5àòÿ@òÿtýÿ5àòÿ· îIÀu-òÿÀ}Q@òÿ AÁm‚( @òÿ 5õ„(âÿwöÿ¶Iuøÿöÿ@öÿµ öÿÁ¤I·  IA’H�@�óu-þÿúÿ†_Æ@ŸøÿÀƒ!wäÿ>(W-È u-äÿâÿW-äÿ2@@ AäÿAíâÿupÀ 7r (@mF…‡f…ÆåÀ(I5òÿ5ôÿõè†üÿ@Àeúÿ@Àeúÿ&æÿÿß R–%5þÿ@þÿ÷ Ø _¼õèHðÿu-ôÿðÿ‡@üÿpwðÿÒH@ôÿµ ôÿ’5þÿìÿ@öÿµ öÿAúÿµ úÿA’H�@�5ôÿ@òÿ0Š®K@öÿµ öÿAúÿµ úÿA’H�@�p�ðÿ®K@ôÿõ ôÿÀ @öÿµ öÿAúÿµ úÿA’H�@�Aöÿµ öÿBúÿµ úÿ‚’‰���p�®Ká@öÿµ öÿAúÿµ úÿA’H�_B wöÿÈR@ìÿF…‡f…Æå µ À®R5öÿ5øÿ@öÿµ öÿÈ•ÿÿÀ”R5üÿ5þÿ5õ 7÷ˆRð Îß Æ5ìÿ@ìÿ ÷ô@1AWpÈÁeè†@_â@ìÿ@ìÿ @ìÿ5âÿ5þâÿuÿ ò5ü @ìÿ 5õ 7÷à0ð÷ôò0÷ 4_âõ RúÿõæÿwöÿþQwúÿöQÀôQ· ðQAþÿµ þÿA’H�@�5ôÿ@Ÿþÿœ®K5ðÿÀÎQ· ÊQAþÿµ þÿA’H�@�0Š®K@ôÿõ ôÿÀ À¨Q· ¤QAþÿµ þÿA’H�@�0Š®Kµ þÿêÀˆQ· „QHŸþÿ’Aþÿµ þÿW¢Á"0Aðÿ if ( c == '-' ) { ins = &( next -> estr[ 0 ] ); * ins ++= '\\'; * ins ++= '|'; * ins ++= '\\'; * ins ++= '('; * ins ++= 'm'; * ins ++= 'i'; * ins ++= '\\'; * ins ++= '|'; * ins = '\0'; next -> length = LTAB( c, 1 ); } else opplace( c ); parse( det( c ) - 1, next ++ ); iestr = bmode = cflag = dflag = 0; next -> length = 0.0; continue ; case 7: /* Blank - default delimiter */ next -> estrr & lower limit */ ( stop - 9 ) -> node = alcopy( 6,( stop - 9 ) -> pstr ); (( stop - 9 ) -> node ) -> strr =( stop - 3 ) -> pstr; pontr( 2, 9, 1 ); pontr( 0, 9, 7 ); pontr( 1, 9, 5 ); stop =- 8; break ; case 31: case 32: tweek = 1; } stop -> state = tabto( actset,( stop - 1 ) -> state ); return ( 2 ); case 4: /* accept */ return ( 3 ); } } /* Lexical analysis */ lex( ) { int bmode, cflag, dflag; float red; charaeiouy] .fP means any worvowel. The sign ~ complements the set, so ~[ .fI aeiouy .fP ] means any nonvowel (including .fI # .fP ). The mark .fI # .fP is placed at both beginning and end of every word. .pp A vertical bar, |, is used to mark potential silent .fI e .fP positions. Upper case letters are used for potential long vowels or voiced .fI th. .fP Rewriting rules are shown with an arrow as in .fI ea \*a E sch \*a sk .fP Pronunciations are given by strings of vs phonemes in which each is proceded by a co|/\|dev\|/\|ppt\fR. Special \(files exist for each communication line, each disk, each tape drive, and for physical core memory. Of course, the active disks and the core special \(file are protected from indiscriminate access. .pg There is a threefold advantage in treating I/O devices this way: \(file and device I/O are as similar as possible; \(file and device names have the same syntax and meaning, so that a program expecting a \(file name as a parameter can be passed a device name; \(finally, special \(f˜ÁšÁˆ@Ið«G€âODD¦|>ÀŒscore�i†coreˆˆ>!lF€F€~_®K¤¢ÜÁÞÁ¼ÁÂÁÿoúÁt¨¨ðdʦaaèÊ ¨ðdʦt|ÁêMʦ¾¦–Á@†Á�RV'¤Á@–¨ðdʦ  ÁêMʦ¾¦ÈÁ@¨Á”o0‹dp¥` 0‘È‘¼‘”oÒÁv#ÈsÈsmÜÁ®"aèÁÀ úÁ¾¦Þý@ØýÔÿûÿôÿÀ0ÿÿ² ðÎ4@þÿµ þÿA�üÿp�Ê…ìfÀ_ð À_ð ÀiÀf d÷ X5�üÿÀ\À YÀ VÀ SÀ PÀ Mμ,ß r _‚ ÷ ^2 0> 28 <P =D >J \V @�üÿœ@Tw-þÿ.4@þÿµ þÿA�üÿp�Ê…÷ Ü5�üÿê@þÿÎÐ,ß r w�üÿg÷ Î ‚ â,ð,þ,w-þÿæ3@þÿµ þÿ0ŠÊ…õÀF…‡f…Æåõ¾3þÿõÊ…üÿ@þÿõ þÿÀ @µ Aüÿµ üÿA’H�ïwNf…Æåõ„3þÿõÊ…üÿ@þÿõ þÿÀ @üÿµ üÿAµ  ¢ íÀF…‡f…Æåõ5 AÁEðWp Áe~AWp Áe”buþÿW¯þÿ À 5úÿw-úÿþ2@úÿµ úÿ@mþÿ’5�üÿ@�üÿß $'ìw–f…Æå=0) goto e1; } if (x==y) (a->alcyl)= -1; else (l->lcyls[x])= -1; givlc(drive,y,1); } else { sp= &(a->asect0); k=nsctsin(a); if (((k%10)!=0)||(k<10)) return; sub=k-cvtleng(&(a->alength[0]),0); if (sub>=10) { truncate(a,&(a->alength[0]),0); sub=+((n=nsctsin(a))-k); k=n; if(((k%10)!=0)||(k<10)||(sub>=10)) return; } sub=10-sub; if ((sub>9)||(sub>sftcs)) return; if ((x=locsctlc(drive))==0) return; (a->alcyl)=x; getsct(drive,x,sp,sub); if (*(sp+sub-1)== -1) { e2: givsct(drive,x,sp,sub); (a->alcyl)= -1; return; }÷ ÷ À û÷ À û÷ L÷ úwZf…¦)Àxf÷ z÷7nfÀ ·  Τ'ß ž · íÀTf7 Lf7 Jf õ@fþÿÀ:f5,þÿÎ.fß  · (fþÿf@þÿF…‡f…ÆåÀ f÷ ~ÿ7¦7 úeÀœ ÷ ¢ø5þÿ0Š@þÿ_’ À‚œß â_Î Àpð•Àf_’ À^ð•ÀT_’ õLþÿ÷ ÿ7BÀ>@þÿ0Š@þÿ_’ À(œß âÀ%Îß  â÷be@þÿð•@þÿ_’ Àòð•Àè_’ Ààð• ÀÖ_’ õÎþÿ÷ œþ7ÄÀÀœß âÀ%@þÿð• @þÿð•÷îd@þÿ_’ õˆþÿ÷ Vþ7~Àzœß âÀ%@þÿð• @þÿð•÷p�®K5õ &øfff÷ °Æe5òÿ@òÿ À-0µ æÿ@üÿµ üÿ’5ôÿ'@üÿµ üÿ’5îÿ@ôÿõ ôÿÀ @üÿµ üÿ’Aüÿµ üÿA’p�®Kí@üÿµ üÿ’0Š®K@îÿp�ðÿ®K]@üÿµ üÿ’5êÿp�ðÿ®K@üÿµ üÿ’5èÿ0Š®Kw-ðÿd/F@öÿÀe7œPÀŸ˜P=ÀŸ’PÀe7`ŠPÀ†P’3À~P· zP’ÀŸrPÀe7`jP%ÀdP· `P5¢èÿÀVP· RP’5èÿ@-êÿ@òÿ@òÿtþÿ5àòÿ@òÿtüÿ5àòÿ· PÀu-òÿÀ}E@òÿ AÁmÆ. @òÿ 5õÈ.äÿwöÿæOuøÿöÿ@öÿµ öÿÁÔO· ÐOA’H�@�óu-þÿúÿ†_b @ŸøÿÀƒAæÿWpôÀ 5râÿ7v.Ár.AíäÿupÀ 7rf.@mF…‡f…ÆåõpOöÿ5 ìÿõ ôÿõ>Aþÿ@ôÿœ®K5òÿVw-òÿ.õˆBþÿAôÿWp u`þÿ@ŸþÿF@Ÿþÿœ®K,µ ìÿÀO· OAòÿWp!BŸþÿ�`Aœú^Còÿ×p!CmôÿÜú^ÁàH�ÀðN· ìNH�ôÿÀäN· àNAþÿµ þÿA’H�µ þÿÌ@þÿµ þÿ’œ®K @Ÿþÿ@Ÿþÿœ®K_¢µ þÿ·õ ôÿ@ôÿ›@W@öÿÀe5þÿw-þÿ‚NM†uþÿüÿu-üÿöÿBƒ@üÿAüÿ1¢ýÿ7uŸüÿêÿ@üÿœýÿ=�üÿ@üÿA�êÿp�ýÿ@üÿœ5�êÿ@üÿAüÿAœþÿp�@üÿA�êÿp�þÿ@üÿœ5�êÿ@üÿAüÿAœÿÿp�@üÿA�êÿp�ÿÿõåüÿºõeþÿ¯õåöÿõeöÿ@öÿÀ-ÒMƒ=Šöÿõ@ìÿ_Ä÷ð]¼M5 ìÿ)õ>Aþÿ@ôÿœ®KK@ôÿ7¬®KR,õˆBþÿAôÿWp u`þÿµ þÿ@þÿ’6@Ÿþÿœ®K.@þÿœÿÿœ®K'À`M· \MÈ•ÀTM· PMH�ôÿÀHM· DMAþÿAœÿÿH�À6M· 2MAþÿAœÿÿAœ®KH�À M· MAŸþÿH�µ þÿÄõ ôÿ@ôÿ¨õð]üÿw-üÿúL‡_¸uüÿúÿ@üÿµ üÿ’5òÿ@Ÿüÿœ®K5ðÿ@üÿµ üÿ’0Š®K@òÿõ òÿÀ @üÿµ üÿ’0Š®Kµ üÿð@üÿµ üÿ’5òÿp�ðÿ®Kõ>Aþÿ@òÿ7¬®K8+õˆBþÿAòÿWp u`þÿ5 îÿµ þÿ@þÿ’c@Ÿþÿœ®K[@þÿœÿÿœ®KTµ îÿuúÿøÿ@øÿµ øÿ’5ôÿÀ*L· &LAôÿ� H�ÀL· LAøÿµ øÿA’H�@ôÿõ ôÿÀ ÀúK· öKAøÿµ øÿA’H�ÀæK· âKAøÿµ øÿA’H�åÀÐK· ÌKAþÿAœÿÿH�À¾K· ºKAþÿAœÿÿAœ®KH�À¨K· ¤KAŸþÿH�µ þÿ—@îÿ'@úÿµ úÿ’5ôÿ@òÿ0Š®K@úÿµ úÿ’p�ðÿ®K@ôÿõ ôÿ prdptr[i][1] <= 0 ) /* i is empty production */ ++temp1[ *prdptr[i]&07777 ]; /* now, all explicitly empty nonterminals marked with temp1 = 1 */ /* loop as long as we keep finding nontirivial empty nonterminals */ again: for( i=1; i=010000 & temp1[*p&07777]!=0 ; ++p ) ; if( *p < 0 ){ /* we have a nontrivially empty nonterminal */ temp1[*prdptr[i]&07777] = 2; ++ŒUH�ôÿÀ„U· €UAþÿAœÿÿH�ÀrU· nUAþÿAœÿÿAœÈKH�À\U· XUAŸþÿH�µ þÿÄõ ôÿ@ôÿ¨õ ^üÿw-üÿ6U‡_– uüÿúÿ@üÿµ üÿ’5òÿ@ŸüÿœÈK5ðÿ@üÿµ üÿ’0ŠÈK@òÿõ òÿÀ @üÿµ üÿ’0ŠÈKµ üÿð@üÿµ üÿ’5òÿp�ðÿÈKõ@þÿ@òÿ7¬ÈKv3õ¢BþÿAòÿWp u`þÿ5 îÿµ þÿ@þÿ’c@ŸþÿœÈK[@þÿœÿÿœÈKTµ îÿuúÿøÿ@øÿµ øÿ’5ôÿÀfT· bTAôÿ� H�ÀVT· RTAøÿµ øÿA’H�@ôÿõ ôÿÀ À6T· 2TAøÿµ øÿA’H�À"T· TAøÿµ øÿA’H�åÀ T· TAþÿAœÿÿH�ÀúS· öSAþÿAœÿÿAœÈKH�ÀäS· àSAŸþÿH�µ þÿ—@îÿ'@úÿµ úÿ’5ôÿ@òÿ0ŠÈK@úÿµ úÿ’p�ðÿÈK@ôÿõ ôÿÀ @úÿµ úÿ’AúÿÀ @úÿµ úÿ’Aúÿµ úÿA’p�®KíJõ ìÿ@öÿµ öÿAúÿµ úÿA’H�@�5ôÿ@òÿ0Š®K@öÿµ öÿAúÿµ úÿA’H�@�p�ðÿ®K@ôÿõ ôÿÀ @öÿµ öÿAúÿµ úÿA’H�@�Aöÿµ öÿBúÿµ úÿ‚’‰���p�®Ká@öÿµ öÿAúÿµ úÿA’H�_dwöÿ¦J@ìÿF…‡f…Æå µ ÀŒJ5öÿ5øÿ@öÿµ öÿÈ•ÿÿÀrJ5üÿ5þÿ5õ 7÷fJð Îß è5ìÿ@ìÿ ÷ô)AWpÈÁeè†@_@ìÿ@ìÿ @ìÿ5âÿ5þâÿuÿ ò5ü @ìÿ5õ 7÷¾(ð÷ôÐ(÷  _õæIúÿõæÿwöÿÚIwúÿÒIÀÐI· ÌIAþÿµ þÿA’H�@�5ôÿ@Ÿþÿœ®K5ðÿÀªI· ¦IAþÿµ þÿA’H�@�0Š®K@ôÿõ ôÿÀ À„I· €IAþÿµ þÿA’H�@�0Š®Kµ þÿêÀdI· `IHŸþÿ’Aþÿµ þÿW¢Áü'Aðÿp�®K5õ &øfff÷ jöÆe5òÿ@òÿ À-ì'µ æÿ@üÿµ üÿ’5ôÿ'@üÿµ üÿ’5îÿ@ôÿõ ôÿÀ @üÿµ üÿ’Aüÿµ üÿA’p�®Kí@üÿµ üÿ’0Š®K@îÿp�ðÿ®K]@üÿµ üÿ’5êÿp�ðÿ®K@üÿµ üÿ’5èÿ0Š®Kw-ðÿ>'F@öÿÀe7xHÀŸtH=ÀŸnHÀe7`fHÀbH’3ÀZH· VH’ÀŸNHÀe7`FH%À@H· M) ænIß |=Ö 7*MÀ&MÎ"Mß Ì<÷ž%÷–%  ÷  $bfpphsRtз¨÷ÈeìL@þÿwþÿH%@þÿ€ 7D%wüÿ<%÷€_€F?Š|FÎn?ß LÀ"%Î%ß ,À Þ÷ À õÙwê#f…Æå Nß $À À_÷\LF÷ü[F÷ ºõƒüÿõƒúÿ5 øÿÎr_ß j=÷þEúE7õª$ùðB7øæE÷ Àe8ÿ7°$Àª$ Àepþ7 $@õ€@&øføÿfúÿfüÿ÷ ðòÆe õ€@&øføÿfúÿfüÿ÷ öúÆe7^$Îr_ß j=ÀŠEÀí„E7€EÁ|EÁe;À r<5 010625 05 060015 062450 Aug 30 15:55:36 15 1 010625 05 060015 062450 þÿ@þÿw-þÿ $ 7þ$7ò $uþþÿùôÈC7øþ#7þ$7òô#uþþÿùôÈC7ôæ#ùA7øÞ#7 Ø#÷ü[EÀŸE · È#ÀŸEÀe7`EôÀÈ#ΰ#ævIß J4Ö À¶##AþÿÀ r<æ‚Iß J4Ö AþÿÀ r<uøÿAøÿÀ r NAøÿÀ r &æŒIß J4–%À�0A w-\#÷ "÷  ÀP#ÎL#æ’Iß J4Ö Næü[ß ¾Ö Næ6#æü[ß b-–%ÀF…‡f…ÆåÀ# U÷\L(D@ ß Æ ß è×-D\L BÀ�ü0À Àe_LÀ-úC 8À^L5üÿ5þÿÀ�Ü05úÿ@úÿõ úÿÀ @þÿµ þÿAüÿµ üÿA’H�µ üÿí}ŸüÿþÿNæ\Lß ¾Ö Næ~"æ\Lß b-–%Àf" 7`"ÀF…‡f…æ ΞIß J4÷ w!f… :__ 487 556 /* super & sub scripts 488 558 */ 489 559 ( stop - 9 ) -> node = alcopy( 17,( stop - 5 ) -> pstr ) 490 560 pontr( 0, 9, 8 ) 491 561 pontr( 1, 9, 4 ) beautified p1.c page 17 492 562 pontr( 2, 9, 2 ) 493 563 stop =- 8 494 564 BREAK_____ 495 565 CASE____ 19 :__ 4z Wð Äf\A×%z†÷ Â`w Ò• ÂåR·À‰R‰ r fw ðÿ€Àe0�…Runtime error Tt¶Jh¶‚¬h¶‚°hº‚´h¶‚¸h¾TbÔT¼ŒJh¼h¶¨Dæ´²h¼h¨\æȲh¼‚Àh¬h´R‚¬h°h´hÀxR‚°h¸hÆ‚¸²Žh¼‚´²ŽhÀh¶Dæ"RTÄhÆF²<TÄhÊŽ„hÎhÄè  hÒhÄ8  FhÎhÄè ”hÒhÄ8 ”F²0hÆè  h°FhÆè ”h¬Fh¶‚¼TÄhÆF²ÆTÄhÒŽhÄè ˆhÄ8  hÀlFh¼hÄ8 ”w |ú Á�Âw Ðù�D~ô\Ö �w Ôø1ŠÁ @0 ‚‰1 0\”fortxx€��ž•\ž\€�ˆÖ \‰&\Àe&&&&\&&\�Á‚€H`"Ô \‚� Á€p`B ˆ`$"‚–%Ô \–%\Ö €À aÔ  ü\Ö €Ì  ü\Ö „\w &ñÖ \Ô \ ðVñð€�À Á ¨Ö �Ô Ô \÷ @ô ÷ @ö÷ @ò÷ @ùfû\€ ð ðþVþH 6 Ž \ ððõô ððõÀñô  ððõò ððVõõù&ø\ ððÎñ\ ððõ&ü\ð ð ðð ððþ&ø\ð ð ðð ððõ&û\À`æ&&\À�„ƒÔ € 87 1.0000 1.0174 1.0216 1.0692 1.0527 1.0324 0 0.9572 1.0069 0.9878 96 0.8762 0.8141 0.7800 0.8259 0.8435 0.9079 0.9070 0.9524 1.0021 0 1.0461 1.0670 1.1201 103 1.1711 1.1450 1.1501 1.0999 1.1481 1.1387 1.0872 1.0902 1.1947 0 1.2285 1.2886 1.3033 113 1.3175 1.3552 1.3284 1.3219 1.3676 1.3632 1.3843 1.4532 1.4879 0 1.4173 1.3566 1.3438 127 1.2597 1.2224 1.2076 1.2784 0 0 dÿþýüûúùø÷öõôóòñðïîíìëêéèçæåäãâáàßÞÝÜÛÚÙØ×ÖÕÔÓÒÑÐÏÎÍÌËÊÉÈÇÆÅÄÃÂÁÀ¿¾½¼»º¹¸·¶µ´³²±°¯®­¬«ª©¨§¦¥æ ήIß J4÷ w!f…æ ξIß J4ÀŸZC÷ HúÀ"ÎÌIÎÐIß àÀ ÷ š wÊ f…¦)õþÿW-þÿ @þÿAþÿÁ Bþÿ Cþÿà CmÃòÔK±L�p�®Kµ þÿâ 7ˆ!7œ!@7*/7l/7‚!@7/7Z/7‚!@7/7H/7C÷•ÿÿ ?w6 f…Æåׯ’B · ŠBùõ„Bþÿ@µ ’5üÿ @þÿµ þÿ5¢üÿ îwþÿXBׯTB · LBùÀF…‡f…æ @Ÿ @µ 5¢Àò F…‡f…¦)5 þÿׯB0ׯüA9AþÿWp ÂìA· èA‚’�`ÁeÐÿuþÿéׯÖA · ÎAù@þÿF…‡f…ÆåÀB· BH�ÀB· B· f Áb H�ÀüA· øAAµ A’uþÿH�@�+ì2øì2øø2²øì2üø2øì2øô2vøì2üô2øð2hø3øð2¢ >lüð2v3løV €hø3øð2øb Ž\B¤ v3v3ònB v 3v3€B–v 3løV €hø 3BHøV hø 3äÿ F Ú øZ äÓ P äì2øV ÖBÎäì2v3löøì2Z ( øì2Z ( øì2Z ( BÀÚ øZ äé P äì2øV ÖBäì2v3lFøì2Z &( øì2Z 2( øì2Z >( BÚ v3l¢blüð2v3l¢Jø 3v 3løb Ž~Bêøð2¢ >v3ò–Bpøð2¢ 2løV ްBÈøð2¢ &løV ŽÊBøð2Z &øV hÒøð2Z 2øV hÒøß Ö Áø1àÿÎææß L–%Îææß L–%÷åØ÷_  ÀÐ÷Øÿæß Ö Á¾÷1ÚÿÎææß L–%Îæ& ß L–%Îææß L–%÷å$€÷_  Àx÷öÿfþÿ÷ ÖùÖ &ß Ö Á^÷1øÿÎæ& ß L–%Îææß L–%À4÷Á0÷pøÿòÿ÷å $÷_  À÷ðÿæ8ß Ö Á ÷1òÿÎææß L–%ÀðöòÿÁèöpüÿ÷å Üö_  ÀÔööÿæ1ß Ö ÁÂö1øÿÎææß L–%÷å¦ö_  Àžöüÿæß Ö ÁŒö1þÿÀ„öðÿæ8ß Ö Árö1òÿÀjöòÿÁböpüÿÎæ& ß L–%Îææß L–%Îææß L–%À$öÁ öpþÿìÿ7 ö÷åöxÚ/¼/2V7ú-V7þ/ 2ö7F1ž9ú-V7F1 9ú-|F1¢91l!ž92V7ú-V7 .¨Ú/°/2V7ú-V7þ/ 2ú7F1ž9ú-V7F1 9ú-|F1¢91l!ž92V7ú-V7 .¨Ú/°/Ö/ 2þ7 .r9 .° ../œö-"X#ö-ö74#ö-ú74#ö-þ7.#ì" .r9 .° ../²ö-?X#ì" .r9 .® ../Èö-tX#ì"ú-„F1ž9ú-†7 .´Ú0ú-Ž7 .´Ú0–/ú-–7 .´Ú0–/Ö/F1 91Î"ž9Ú/°/Ö/ 28F1ž9ö-î72 91Œž9F1ž9ö-î72 9ö-n72¢9ö-v72¤9ö-~72¦91>ž9ú-„F1ž9ú-n7ú-†7–/ .´Ú0ú-v7ú-Ž7–/ .´Ú0–/ú-~7ú-–7–/ .´Ú0–/Ö/F1 91Î"ž9Ú/°/Ö/ 28ú-„F1ž9ú-n7ú-†7–/ .´Ú0ú-v7ú-Ž7–/ .´Ú0–/ú-~7ú-–7–/ .´Ú0–/Ö/F1 91Î"ž9ontr( 1, 7, 2 ); stop =- 6; break ; case 27: /* super & sub scripts */ ( stop - 9 ) -> node = alcopy( 17,( stop - 5 ) -> pstr ); pontr( 0, 9, 8 ); pontr( 1, 9, 4 ); pontr( 2, 9, 2 ); stop =- 8; break ; case 19: /* improper integrals */ ( stop - 7 ) -> node = alcopy( 6,( stop - 7 ) -> pstr ); (( stop - 7 ) -> node ) -> strr =( stop - 3 ) -> pstr; pontr( 2, 7, 1 ); stop =- 6; break ; case 22: /* integral wit@þÿ@_ôÀ  À7 ÷ @eÎÔIß J4@_ô Àåüÿ ƒñÀ xN**@Ÿœ®K5üÿÀ~A· zAAµ A’H�@�0Š®K@þÿõ þÿÀ ÀXA· TAAµ A’H�@�0Š®KìÀ estr[ 4 ] = '\\'; next -> estr[ 5 ] = '|'; next -> estr[ 6 ] = '\\'; next -> estr[ 7 ] = 'f'; next -> estr[ 8 ] = 'P'; next -> estr[ 9 ] = '\0'; next -> length = LTAB( c, 0 ); parse( 11, next ++ ); iestr = cflag = bmode = 0; next -> length = 0.0; continue ; case 3: /* Right parenthesization */ iccheck( cflag, dflag ); next -> estr[ 0 ] = '\\'; next -> estr[ 1 ] = 'f'; next -> estr[ 2 ] = 'R'; ÷ ü@Àeúÿf÷ øûÖ &ß \Ö ýEþÿwäûf…Æå@tóÿÀEøÿœ  5þÿõüÿw-¼û‡_VW-†_V@þÿ_VÀP_V@ÀEàÀeÿÿ5úÿ 5òÿ5öÿ@úÿÀ 5øÿt5ôÿ@Àeöÿ@Àeòÿ&ß Ö @5øÿ@Àeöÿ@Àeòÿ&ß Ö õ üÿ@üÿ Nôÿfòÿfþÿß d –%À ï@üÿ÷º@tóÿÎEøÿß 7 ¤À¢÷ æúõüÿõ üÿ@üÿÎf÷ ÆúÖ &fþÿß –%À%ê@üÿÏF…‡f…Æå@tóÿÀEøÿœª 5þÿõüÿw-|ú‡_–W-†_–À_–@þÿ_–@ÀEàÀeÿÿ5úÿ 5òÿ5öÿ@úÿÀ 5øÿt5ôÿ@Àeöÿ@Àeòÿ&ß Ö @ board[a]) >= 0)goto next; if(b == bking)p = kmov; /*set P to beginning of adjacency map for square in question*/ p =+ 10*a; flg = 0; while(*p) { if(!board[*p]) { /*open square*/ count++; /*increment counter*/ flg = 1; *table++ = field[b+2][*p] - field[b+2][a]; *table++ = a; /*start of move*/ *table++ = *p++; /*end of move*/ p++; continue; } if(board[*p++] > 0) /*opposing man*/ if(*p)if(!board[*p])goto jmp; p++; } *movcnt =+ flg; bitpat[a] = flg; next: if(--a)goto ed. Sorting of sentences from which function words, such as determiners, prepositions, and conjunctions, have been removed, leaving only the content words, also shows far less structure than normal text. Since on a strictly overlap-of-content argument the latter task should be very nearly as well ordered as the original, it would appear that something other than the sequence of content words must be involved in text structure. However, a variety of studies, both theoretical and empirical, extend the reugh the access control scheme in \s10UNIX\s12 is quite simple, it has some unusual features. Each user of the system is assigned a unique user identi\(fication. When a \(file is created, it is marked with the user \s10ID\s12 of its owner. Also given for new \(files is a set of six protection bits. Four of these specify independently permission to read or write for the owner of the \(file and for all other users. Thus there are bits for owner-read, owner-write, non-owner-read, and non-owner-write permissions 320, 5, 2001, "dn11-da", "xxx", 430, 5, 2011, "dr11-c", "xxx", 1290, 12, 2101, "dr11-b", "xxx", 185, 0, 2190, "dd11-a", "xxx", 185, 0, 2190, "dd11-b", "xxx", 1080, 5, 2109, "db11-a", "xxx", 2400, 15, 2900, "h960-da", "xxx", 1, 0, 0, "nopreq", "", 1, 0, 0, "preq", "", 1, 0, 0, "list", "", 1, 0, 0, "xxmm", "", 1, 0, 0, "xxdh", "", 1, 0, 0, "xxtc", "", 0 }; _€ W-þÿÎðIß J4 _€ uøÿ@øÿµ øÿAôÿµ ôÿA’H�@�5üÿ@øÿµ øÿAôÿµ ôÿA’H�@üÿõ üÿÀ @øÿµ øÿAôÿµ ôÿA’H�µ ôÿí}ŸôÿøÿÀF…‡f…Æå5 þÿ 7�Ê>7�Å>7�À>7�»>7�¶>õ!üÿõ üÿ@üÿAüÿAœ®KWp!AmüÿAœú^u`þÿ@üÿœ®K°Š`_èÁ�€>Â�x>�àWpÂ�q>Ã�k>Âà—t�`Â�`>Bpu`þÿ@þÿF…‡f…Æå˜ 5òÿ5ôÿ5öÿ5øÿõþÿW-þÿ @þÿ@aAþÿAaBþÿBaCþÿCaó•jÿÜjÿò�ŒÿÂ�±�®ÿ��p�Ðÿµ þÿàõþÿW-þÿ J@þÿ7¬®K” µ öÿNþÿ@ÀeÐÿ&ß œ$Ö 5@þÿ7¬®Kr µ øÿNþÿ@ÀeŒÿ&ß œ$Ö #@þÿ7¬®KH µ òÿNþÿ@Àe®ÿ&ß œ$Ö @þÿ7¬®K& µ ôÿNþÿ@Àejÿ&ß œ$Ö µ þÿ²õþÿW-þÿ _Ú#u-öÿøÿ$@þÿCþÿCaÜŒÿ µrøÿCþÿÜ8DÂ`°�Ù^@þÿÁ!AíþÿAœ8DCþÿCaÜÐÿ µröÿ�àp�_u-öÿøÿ@þÿAþÿAœ8Dp�Ù^@þÿÁ!AíþÿAœ8Dp�_u-öÿøÿ$@þÿAþÿAœ8DCþÿCaÜŒÿ µrøÿ�àp�Ù^@þÿCþÿCaÜÐÿ µröÿÃ!CíþÿÜ8DÂ`°�_u-òÿôÿ*@þÿAþÿAaAœŒÿ� BþÿBa‚œjÿ�`Bþÿ‚œÒC�`p�¸^@þÿAþÿAœDBþÿBa‚œ®ÿ�àBþÿBa‚œÐÿ‚ �àp�<_u-òÿôÿ@þÿAþÿAœôCp�¸^@þÿAþÿAœôCp�<_u-òÿôÿ*@þÿAþÿAœDBþÿBa‚œjÿ�àBþÿBa‚œŒÿ‚ �àp�¸^@þÿAþÿAaAœjÿ� BþÿBa‚œ®ÿ�`Bþÿ‚œÒC�`p�<_µ þÿ_"5 þÿW-þÿYAþÿWp!ñ•d¸^õüÿW-üÿ AþÿWp!Cþÿ×p!Cmüÿs¬¸^¸^AþÿWp!Cþÿ×p!Cmüÿܸ^ñ�¸^µ üÿÝõüÿW-üÿ "AþÿWp!AmüÿAœ¸^Cþÿ×p!ܸ^ÁàuúÿAþÿWp!AmüÿCþÿÃeþÿõpúÿñ�¸^µ üÿÚµ þÿ£wzf…ÆåAWpuüÿõ þÿæ @@m’�eH�5 úÿW-úÿ%W-úÿõþÿW-úÿ õþÿ@üÿ@múÿœZD fþÿ@üÿ@múÿœZD@m’�eH�µ úÿ×wôf…Æå÷ÀL4:Àü ß è ß Æ×-:ÀL÷ ¬ö _\-5 øÿõöÿõôÿÀŸ: @ôÿÎüIß ;5 ôÿ÷ ð ÀÄ\5 üÿ@üÿÀ zHß àÀ õeüÿó@üÿ€ € 55 üÿ@üÿÀ žzH@üÿµ üÿÀ zHæ Jß J4Ö @üÿµ üÿÀ zHæJß J4Ö á¹_Ð(_Ü)_œ)#include "include" initbit(nrows, ncols, rowsum) int nrows, ncols, rowsum; {extern bitstor[][ncolsmax], ncwds; char bitson[ncolword]; int i,j, c; getpat(ncols, rowsum, &bitson); for(i=0; i"€w ¤þ…À"ðµx3 7 $"À w Šþ w ¶ÿw Èþ…÷ Z"w öþú7 N"…w`ú!…w Œîç‰Á2"Á w Ôþû…÷¶!w Â÷Â!^ ÷ d �· ´!·à®!÷å¤!w ê÷eš!÷eª!…æeæd÷ t!w ~Á~!ÁeÁmf!Áín!out; if (argc != 3) { printf("Arg count\n"); exit(); } if((fin = open(argv[1], 0)) < 0) { printf("Input\n"); exit(); } if((fout = creat(argv[2], 017)) < 0) { printf("Output\n"); exit(); } lno = 1; word: for(wl = -1; wl < 20;) { if((line[++wl] = getchar()) == '\t') goto type; } if(line[wl] == '\0') goto fexit; while(line[wl] = getchar()) if(line[wl] == '\t') break; type: line[wl++] = '\n'; for(tl = -1; tl < 20;) { switch (tp[++tl] = getchar()) { case '\t': tlf%ÀŸx3À$ Àß $À _V-_f%õ\Lþÿ@þÿµ þÿŠfþÿµ þÿ÷ (ñ�ÎäJß J4÷ _f%÷ ñ=�þÿW¯þÿ ÎêJß J4÷ ü_f%@þÿµ þÿ’œ®K·ŠÎý•ÿÿþÿáÀ˜ Î\Lß ú5üÿõôÿ_f%W-üÿÿÿ5 öÿJÀj Àæ\Lß ¾Ö ÀP ÀæTæ\Lß b-–%7 4À8 72&%Àå ƒÀ x-x&ð&ú&<'D'z'�'¦' (X(x(Ð(ì(ø()L)œ)Ü)ä)ì).*:*F*~*è+ô+ú+,@öÿF…‡f…¦)@@ÎöJÎüJ@€ € &æðJß J4–%@µ ’5þÿ)@þÿÎþJß J4@_J.ÎKß J4@_J.ÎKß J4@_J. Àåüÿ ƒñÀ xì-¸-È-È-¨-@µ ’æKß J4Ö @þÿõ þÿÀ @µ ’æKß J4Ö î@µ ’æ$Kß J4Ö @F…‡f…æ ÀÖ À?�|1ÎLß Lõ-ÐÀŸh1ÀEþÿÀ-¬ ÀŸZ1æT1Îeß ¾Ö êwvf…¦)?ŠÔ0õþÿÀŸÊ0÷ ¸úÀ¾0· º0’;@þÿµ þÿÀ ðHÐKB@þÿµ þÿÀ ð2ÐK9@þÿµ þÿÀ ð&ÐK0@þÿµ þÿÀ ðÐK'@þÿµ þÿÀ 0 ÐK@þÿµ þÿÀ 0 ÐKÎ(Kß J4¶_^/÷  / /-Ú.Bþ.WÈ.bì.w0/W-þÿ"¥ÎÐKß Lw¤ f…æ ÷€_0ÀÈ÷ Ú÷ Ž ?�ì/À% Àâ/· Þ/’÷ : ê?ŠÐ/÷€_Ê/w^ f…æ w­VÀBw­LÀbw­<ÀWw­2Àw @�À-s mask for device active bits / ignore interrupt if device not supposed / to be active / else skip on device error, don't / skip if no error trapt: mov (r0)+,r2 / device control register mov *(r0)+,r1 / transaction pointer tst (sp)+ bit (r0),active beq 4b / stray interrupt 1: tstb (r2) bge 1b / device still active bic (r0)+,active tst (r2) bge 2f tst (r0)+ / skip on error 2: jmp (r0) À+F…‡f…¦)Î0Kß J45 þÿW-þÿ@9@þÿœ´?@þÿœ´?œ®Kß ¸/æ2Kß J4Ö Aþÿ� À rÁ Àè _r0Î:K_v0ÎKß J4µ þÿÃÎBKß J4wp f…¦)õü[þÿ@Ÿþÿ  & fþÿß b-–%5þÿóÎFKß J4w> f…ÆåÀæ_5þÿÀ-ø.7w-P 3ÎJKß J4w-þÿà.+†@þÿµ þÿ’5úÿ@þÿµ þÿ’5üÿu-üÿ @Ÿþÿµ þÿä@ŸþÿÀe5`þÿÝNúÿfüÿfþÿß b-–%5þÿÑF…‡f…¦)÷ N5�þÿW­þÿ#×-.€_÷ ú-ñW­þÿ*×-ì-€_ Àä-¬ÿÿ À õ• þÿ@�þÿF…‡f…¦)Î@Àeþÿ&æò3ß ì<–%@�þÿF…‡f…æ Î@Àe&æÌ3ß š=–%w f…æ @$À: Î@Àe&æß š=–%À–3· ’3H�’À% ?Š‚3÷ @tøÿß 2F…‡f…Æåõ-þÿ÷Èe-ÀŸ -5 üÿ@üÿÀ ¢Hß àÀ õeüÿó@üÿÀ ¤Hß À2@üÿÀ ž¢HàwþÿÈ,÷Èe 3wV f…Æå@ŸSõ@þÿÎLK@Ÿ&ß @Ö À _3À3Aµ A’@àt5þÿ@µ ’5üÿW¯, @µ ’t5`üÿ@œÿÿµ õ õrGúÿ@úÿõeúÿ5"üÿ@úÿõeúÿ²ðNúÿNmþÿß â1ªF…‡f…Æå@ÎRKß J4õ'þÿõüÿ@þÿ5u-þÿ'AÀ 5rþÿÎe0æTKß J4Ö À„ _ê3uüÿúÿ@úÿõ úÿÀ ÎXKß J4õAÀ 5rþÿuAþÿÀ r 5þÿõ üÿÈw f…æ C —r AÀ r ß 4AÀ r NÎe0ß 2wÌf…Æå @Àe5üÿ@µ ’5øÿÀ%%@øÿcNøÿß 2î@µ ’5øÿG@üÿõeüÿ5úÿ@úÿ@úÿ 5úÿ@úÿÎZKß J4ÏÎ-ß 2À‚ Núÿß z3Núÿß 4¾@üÿõeüÿß 2µ@üÿõeüÿ5þÿ@þÿµ þÿ’5øÿNøÿß 2ó  ÷ :à4c�4dò4s25Nøÿß 2�F…‡f…ÆåÀ ÎæbKß |=Ö 7ò_p57 è_6÷ °õøþÿW-þÿÎfþÿæøfþÿß –6ÆeNþÿæfþÿæøß –6Æeõeþÿàõùüÿõúÿ5 þÿW-þÿ@&@þÿœ´? @þÿœ´?fúÿfüÿß :7–%Aþÿ� À rÁ õùüÿõåúÿõeüÿµ þÿÖF…‡f…æ ÁÀ 7r7`ÀÀ%(ÁÀ 7rÀeø7úÁÀ 7rô7àîÀêÀ%øÀà·rØ€à7ÐÎæX>æÈß š=–%w€f…Æå@Àe5üÿ5 þÿW-þÿ/Cüÿõeüÿà·rŒ�WpWtüÿÁmzBþÿµ þÿ r,fCüÿõeüÿà·r^�WpWtüÿÁmNBþÿµ þÿ r,fÍÎæV>æ6ß š=–%Îæ,fæ$ß š=–%wÜf…Æå@œ®KS×-_9×-öÀ ×-èÀÀ5úÿõb>þÿ@þÿõeþÿ5üÿ@úÿÀeÿÿt5`þÿuíúÿüÿ@üÿ!@þÿNm@þÿ&Nm@þÿ&NmfþÿNmß –6Æe@úÿt5`þÿÙ_9õ`>þÿ@þÿõeþÿ5üÿ@üÿõ üÿÀ @þÿNm@þÿ&Nm@þÿ&NmfþÿNmß –6ÆeõeþÿÜÎ ffß $9–%@œ®Kõîüÿw-üÿèNüÿffß $9–%ÁÄWpuàüÿìÎÂffß $9–%@7¬®Kf@7¬®K\.õÜ>þÿ@þÿõeþÿ5üÿ@üÿõ üÿÀ @þÿNm@þÿ&Nm@þÿ&NmfþÿNmß –6ÆeõeþÿÜF…‡f…æ C ·r�WpWtüÿÁm wæ,C ·r�WpWtüÿÁmòwÌ,C ·ræ�WpWtüÿw¶,ÎæZ>æÎß š=–%Îæ,fæ¼ß š=–%wt ÷�,õ7 †,÷ €Â Ó•0�”B~Ár,Ó•. Á Ó•0…~Á ”B~‡Â ÷J,õ÷@,÷ :”Ó•.Á6,”B~Ó•e �Ó•- Ó•+ r Àe0�Áe0S�‡&æ„Äe@7ö+÷e(ð+ @ñð&Àñþ•-Ž ó€@Añð&ø@øÃÈ+7óžø@ø—ôL>—ó BÀûÀe0#�‚ @ñððÑ”÷  +ü‡õ ‚  ó BAñðú‚ ÷ ÷  üw x+†Îeó B@ûÀe0�‡Àm`+÷ X+€`€  ‡’ÃeÈ�¢9 È•0 ƒ Š÷È•1‚ ƒ„‡Ì>ÌÌÌÌÍÌf…w+DÄeÆå€ÀŸ + · + % &&ß 2Ö „ñÆe€…‡7 è*7 Þ*ׯÞ*-· Ö*· Ô*÷.>f7 Ì* .÷ÿôÒxÿÀ@ÿÿ€€ÿÿ@ÀÿÿÿÀÿ@ÿ€ÿ€ÿ@ÿÀÿÿ@ÿÿÀ€ÿÿ€Àÿÿ@ÿ@ÿÀÿ€ÿ€ÿÀÿ@ÿ@@(ÀÿØÿÀÿÀÿèÿ@"4:NT^d€†’˜ª²ÊÐÚâôú,2PXx€ž¤ÌÔòø*0BHZ`|„ž¦ºÀÎÖèðøúæ_ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ                                                            ÿþüÿýþÿÿÿÿþýÿüþÿÿÿþÿ_ (_L)_X(_~*÷ Î_,Àå ƒ À x,&°%ô%ø%ü%&&& &&&À À 5üÿ@üÿÀ ?ß àÀ õeüÿó@üÿ€ € _ -ÎJß J45 üÿ@üÿÀ ž?*@üÿÀ ?æJß J4Ö @üÿµ üÿÀ ?ÀeAüÿÁ @,?‚ÎJß J4@üÿµ üÿÀ ?æJß J4Ö ÐÎJß J4_f%÷<_f%÷•ÿÿ\%À, Àæ\Lß ¾Ö À Àææ\Lß b-–%_V-÷ f _f%Îòæ Jß J4Ö À(8· $8¢? ÷ 8ÀÐ À7Â_f%ÀÊ À7¼_f%À² À7¤_f%Î,Jß J4õüÿ@üÿÀ ž?*@üÿÀ ?æ.Jß J4Ö @üÿµ üÿÀ ?ÀeAüÿÁ @,?‚Î2Jß J4@üÿµ AþÿWp!Cþÿ×p!Cmüÿs¬¸^¸^AþÿWp!Cþÿ×p!Cmüÿܸ^ñ�¸^µ üÿÝõüÿW-üÿ "AþÿWp!AmüÿAœ¸^Cþÿ×p!ܸ^ÁàuúÿAþÿWp!AmüÿCþÿÃeþÿõpúÿñ�¸^µ üÿÚµ þÿ£wzf…ÆåAWpuüÿõ þÿæ @@m’�eH�5 úÿW-úÿ%W-úÿõþÿW-úÿ õþÿ@üÿ@múÿœZD fþÿ@üÿ@múÿœZD@m’�eH�µ úÿ×wôf…Æå÷ÀL4:Àü ß è ß Æ×-:ÀL÷ ¬ö _\-5 øÿõöÿõôÿÀŸ: @ôÿÎüIß ;5 ôÿ÷ ð ÀÄ\5 üÿ@üÿÀ zHß àÀ õeüÿó@üÿ€ € 55 üÿ@üÿÀ žzH@üÿµ üÿÀ zHæ Jß J4Ö @üÿµ üÿÀ zHæJß J4Ö á¹_Ð(_Ü)_œ)@Àejÿ&ß œ$Ö µ þÿ²õþÿW-þÿ _Ú#u-öÿøÿ$@þÿCþÿCaÜŒÿ µrøÿCþÿÜ8DÂ`°�Ù^@þÿÁ!AíþÿAœ8DCþÿCaÜÐÿ µröÿ�àp�_u-öÿøÿ@þÿAþÿAœ8Dp�Ù^@þÿÁ!AíþÿAœ8Dp�_u-öÿøÿ$@þÿAþÿAœ8DCþÿCaÜŒÿ µrøÿ�àp�Ù^@þÿCþÿCaÜÐÿ µröÿÃ!CíþÿÜ8DÂ`°�_u-òÿôÿ*@þÿAþÿAaAœŒÿ� BþÿBa‚œjÿ�`Bþÿ‚œÒC�`p�¸^@þÿAþÿAœDBþÿBa‚œ®ÿ�àBþÿBa‚œÐÿ‚ �àp�<_u-òÿôÿ@þÿAþÿAœôCp�¸^@þÿAþÿAœôCp�<_u-òÿôÿ*@þÿAþÿAœDBþÿBa‚œjÿ�àBþÿBa‚œŒÿ‚ �àp�¸^@þÿAþÿAaAœjÿ� BþÿBa‚œ®ÿ�`Bþÿ‚œÒC�`p�<_µ þÿ_"5 þÿW-þÿYAþÿWp!ñ•d¸^õüÿW-üÿ --; default: continue; case ' ': tp[tl++] = '\t'; put(tp, tl); put(line, wl); tl = -1; continue; case '\n': tp[tl++] = '\t'; lno++; put(tp, tl); put(line, wl); goto word; case '\0': tp[tl++] = '\t'; put(tp, tl); put(line, wl); goto fexit; } } printf("I'm confused, line %d\n", lno); exit(); fexit: flush(fout); exit; } put(buf,ct) char *buf; { while(ct--) putchar(*buf++); } comm.ccÒþ+¶/int one; int two; int three;_€ W-þÿÎðIß J4 _€ uøÿ@øÿµ øÿAôÿµ ôÿA’H�@�5üÿ@øÿµ øÿAôÿµ ôÿA’H�@üÿõ üÿÀ @øÿµ øÿAôÿµ ôÿA’H�µ ôÿí}ŸôÿøÿÀF…‡f…Æå5 þÿ 7�Ê>7�Å>7�À>7�»>7�¶>õ!üÿõ üÿ@üÿAüÿAœ®KWp!AmüÿAœú^u`þÿ@üÿœ®K°Š`_èÁ�€>Â�x>�àWpÂ�q>Ã�k>Âà—t�`Â�`>Bpu`þÿ@þÿF…‡f…Æå˜ 5òÿ5ôÿ5öÿ5øÿõþÿW-þÿ @þÿ@aAþÿAaBþÿBaCþÿCaó•jÿÜjÿò�ŒÿÂ�±�®ÿ��p�Ðÿµ þÿàõþÿW-þÿ J@þÿ7¬®K” µ öÿNþÿ@ÀeÐÿ&ß œ$Ö 5@þÿ7¬®Kr µ øÿNþÿ@ÀeŒÿ&ß œ$Ö #@þÿ7¬®KH µ òÿNþÿ@Àe®ÿ&ß œ$Ö @þÿ7¬®K& µ ôÿNþÿ(Y_label"_vt _write L1(L2:retrn line.oÄ5µ¶À@0f…Æå õ•÷ÿuøÿuúÿuüÿu þÿÎ @Àe÷ÿ&æÊÿß –%wÀÿ(9_line"_vt _write retrn move.oĵ¶¨40f…Æåõ• ûÿuüÿuþÿÎ@Àeûÿ&æÖÿß –%wÌÿ(9_move"_vt _write retrn point.oĵ¶¨40@þÿ@_ôÀ  À7 ÷ @eÎÔIß J4@_ô Àåüÿ ƒñÀ xN**@Ÿœ®K5üÿÀ~A· zAAµ A’H�@�0Š®K@þÿõ þÿÀ ÀXA· TAAµ A’H�@�0Š®KìÀM) ænIß |=Ö 7*MÀ&MÎ"Mß Ì<÷ž%÷–%  ÷  $bfpphsRtз¨÷ÈeìL@þÿwþÿH%@þÿ€ 7D%wüÿ<%÷€_€F?Š|FÎn?ß LÀ"%Î%ß ,À Þ÷ À õÙwê#f…Æå Nß $À À_÷\LF÷ü[F÷ ºõƒüÿõƒúÿ5 øÿÎr_ß j=÷þEúE7õª$ùðB7øæE÷ Àe8ÿ7°$Àª$ Àepþ7 $@õ€@&øføÿfúÿfüÿ÷ ðòÆe õ€@&øføÿfúÿfüÿ÷ öúÆe7^$Îr_ß j=ÀŠEÀí„E7€EÁ|EÁe;À r<5dI· `IHŸþÿ’Aþÿµ þÿW¢Áü'Aðÿp�®K5õ &øfff÷ jöÆe5òÿ@òÿ À-ì'µ æÿ@üÿµ üÿ’5ôÿ'@üÿµ üÿ’5îÿ@ôÿõ ôÿÀ @üÿµ üÿ’Aüÿµ üÿA’p�®Kí@üÿµ üÿ’0Š®K@îÿp�ðÿ®K]@üÿµ üÿ’5êÿp�ðÿ®K@üÿµ üÿ’5èÿ0Š®Kw-ðÿ>'F@öÿÀe7xHÀŸtH=ÀŸnHÀe7`fHÀbH’3ÀZH· VH’ÀŸNHÀe7`FH%À@H· Aþÿ@òÿ7¬®K8+õˆBþÿAòÿWp u`þÿ5 îÿµ þÿ@þÿ’c@Ÿþÿœ®K[@þÿœÿÿœ®KTµ îÿuúÿøÿ@øÿµ øÿ’5ôÿÀ*L· &LAôÿ� H�ÀL· LAøÿµ øÿA’H�@ôÿõ ôÿÀ ÀúK· öKAøÿµ øÿA’H�ÀæK· âKAøÿµ øÿA’H�åÀÐK· ÌKAþÿAœÿÿH�À¾K· ºKAþÿAœÿÿAœ®KH�À¨K· ¤KAŸþÿH�µ þÿ—@îÿ'@úÿµ úÿ’5ôÿ@òÿ0Š®K@úÿµ úÿ’p�ðÿ®K@ôÿõ ôÿõ>Aþÿ@ôÿœ®K5òÿVw-òÿ.õˆBþÿAôÿWp u`þÿ@ŸþÿF@Ÿþÿœ®K,µ ìÿÀO· OAòÿWp!BŸþÿ�`Aœú^Còÿ×p!CmôÿÜú^ÁàH�ÀðN· ìNH�ôÿÀäN· àNAþÿµ þÿA’H�µ þÿÌ@þÿµ þÿ’œ®K @Ÿþÿ@Ÿþÿœ®K_¢µ þÿ·õ ôÿ@ôÿ›@W@öÿÀe5þÿw-þÿ‚NM†uþÿüÿu-üÿöÿBƒ@üÿAüÿ1¢ýÿ7uŸüÿêÿ@üÿœýÿ=�üÿ@üÿA�êÿp�ýÿ@üÿœ5�êÿ@üÿAüÿAœþÿp�@üÿA�êÿp�þÿ@üÿœ5�êÿ@üÿAüÿAœÿÿp�@üÿA�êÿp�ÿÿõåüÿºõeþÿ¯õåöÿõeöÿ@öÿÀ-ÒMƒ=Šöÿõ@ìÿ_Ä÷ð]¼M5 ìÿ)õ>Aþÿ@ôÿœ®KK@ôÿ7¬®KR,õˆBþÿAôÿWp u`þÿµ þÿ@þÿ’6@Ÿþÿœ®K.@þÿœÿÿœ®K'p�®K5õ &øfff÷ °Æe5òÿ@òÿ À-0µ æÿ@üÿµ üÿ’5ôÿ'@üÿµ üÿ’5îÿ@ôÿõ ôÿÀ @üÿµ üÿ’Aüÿµ üÿA’p�®Kí@üÿµ üÿ’0Š®K@îÿp�ðÿ®K]@üÿµ üÿ’5êÿp�ðÿ®K@üÿµ üÿ’5èÿ0Š®Kw-ðÿd/F@öÿÀe7œPÀŸ˜P=ÀŸ’PÀe7`ŠPÀ†P’3À~P· zP’ÀŸrPÀe7`jP%ÀdP· `P5¢èÿÀVP· RP’5èÿ@-êÿ@òÿ@òÿtþÿ5àòÿ@òÿtüÿ5àòÿ· PÀu-òÿÀ}E@òÿ AÁmÆ. @òÿ 5õÈ.äÿwöÿæOuøÿöÿ@öÿµ öÿÁÔO· ÐOA’H�@�óu-þÿúÿ†_b @ŸøÿÀƒAæÿWpôÀ 5râÿ7v.Ár.AíäÿupÀ 7rf.@mF…‡f…ÆåõpOöÿ5 ìÿõ ôÿ‘àßÞÝÜÛÚØ×ÖÕÔÓÒÑÐÎÌËÊ‘Ì ±Í Î Ï Ð Ñ Á ™ › š ˜ — – • ” “ ’ ‘ ªÆ�‚ bññÅEÊö¯žðìÿ@öÿµ öÿAúÿµ úÿA’H�@�5ôÿ@òÿ0Š®K@öÿµ öÿAúÿµ úÿA’H�@�p�ðÿ®K@ôÿõ ôÿÀ @öÿµ öÿAúÿµ úÿA’H�@�Aöÿµ öÿBúÿµ úÿ‚’‰���p�®Ká@öÿµ öÿAúÿµ úÿA’H�_B wöÿÈR@ìÿF…‡f…Æå µ À®R5öÿ5øÿ@öÿµ öÿÈ•ÿÿÀ”R5üÿ5þÿ5õ 7÷ˆRð Îß Æ5ìÿ@ìÿ ÷ô@1AWpÈÁeè†@_â@ìÿ@ìÿ @ìÿ5âÿ5þâÿuÿ ò5ü @ìÿ 5õ 7÷à0ð÷ôò0÷ 4_âõ RúÿõæÿwöÿþQwúÿöQÀôQ· ðQAþÿµ þÿA’H�@�5ôÿ@Ÿþÿœ®K5ðÿÀÎQ· ÊQAþÿµ þÿA’H�@�0Š®K@ôÿõ ôÿÀ À¨Q· ¤QAþÿµ þÿA’H�@�0Š®Kµ þÿêÀˆQ· „QHŸþÿ’Aþÿµ þÿW¢Á"0AðÿþÿAœÿÿH�ÀXU· TUAþÿAœÿÿAœ®KH�ÀBU· >UAŸþÿH�µ þÿÄõ ôÿ@ôÿ¨õð]üÿw-üÿU‡_– uüÿúÿ@üÿµ üÿ’5òÿ@Ÿüÿœ®K5ðÿ@üÿµ üÿ’0Š®K@òÿõ òÿÀ @üÿµ üÿ’0Š®Kµ üÿð@üÿµ üÿ’5òÿp�ðÿ®Kõô?þÿ@òÿ7¬®K\3õˆBþÿAòÿWp u`þÿ5 îÿµ þÿ@þÿ’c@Ÿþÿœ®K[@þÿœÿÿœ®KTµ îÿuúÿøÿ@øÿµ øÿ’5ôÿÀLT· HTAôÿ� H�À:ÀN4w ® ÀBÀ ÷ † € &÷6464·04‡· Ü8‡7 Ö8‡7 *4‡w j÷ Z ÷ ( ‡÷ f7 4‡& æ÷ , ÷ Þ9w T ØG÷ . 7v3Ö À ÷ ˆ8À¦3÷ ’ ‡÷ ú÷ ®9w VB7L3‡÷0B3‡÷ Ú÷ Ž9À�3w ì&÷ ä3÷ æ÷ 68( ÷ R÷ Î3÷ "8€÷ L9Át7Áíx8@ †@ÎF3æF3æ@37 >3763÷ ì·03·.3·&3Ö ‡ ÷ þw ˆ &Á À 7r 3€@ 7²7‡w :n‡÷ ¤7 ÷ ÌÁ À 7râ2w Ž7‡À†77 ‚7w n‡÷ ÷ õ  ÷ õ  À ÀEÿÁEÿ1� Jì‡ÁæB÷ æô÷ †8 . 0õ‡ 9ò‚7p8w ä÷ ¾ À 1 þÿ@lþÿW Cß‡á ‡÷ Š÷ >8 w ²&C÷ Ž 7`2÷ œ÷ ‡w ˜ ÷ v 7Œ2÷2†6÷ 2÷ "%‡w w f‡÷ <÷ ð7À2w ^ÈB÷ ÷ö1ö17ð1‡÷ ÷ &ô  À•€7�è1‡÷ þ÷ ô  À 7�Ø1‡÷ æ÷ öó  À.7�Â1‡÷ Î÷ Þó  À7�¬1‡· œ1‡7 –1‡÷ ª÷ ^77 Ì1÷t1÷p1‡7 ´17 ´1÷ †÷ :7‡·  1w ªC÷ „ 7�1÷ hw "ÐB÷ :1· 41÷ Tw ÎB÷ Jw  C‡÷ ö6÷ ¸ ÷ F =Õ …w V÷ 4 7F1‡7 è6‡÷à6‡÷Ø6‡÷ w  tG· ”6÷ Ðö· ¦67 ”67 ”67 57 57 1÷dMv0‡÷ Î÷ ‚6À"0w ðPB÷ Ì &÷00·0÷ à ‡· F6÷ è ‡· L6÷ W ÿÿ ! ‡· ’4÷ 068÷ zw ’ tG÷‹ð407 6Á| & NÎE€Î-Ú4÷U€Ò4É¢/áÊ4 W$ÿÿïÁ| Ñ ñW$ÿÿû· Ô5Ñ ÷ Þ5 ÷ 24÷ Â5÷ "÷ \ Ö Áÿÿ7 47 ¶5‡÷ üw  tG÷‹r4÷ œ5)÷š5÷ tÿW ÿÿwˆ5÷˜/š/÷�/’/7 Œ/7 †/7 ¨4÷ j5  ÷  ö÷^5/÷p/j/÷h/b/7 P57 H5‡7 p37 n3÷ Šw ¦ 7Z3÷ xw �tG÷‹î3÷è3F3‡÷ `÷ 5 ×-¬.ˆG@÷å¢.æž.÷  77 Œ.4À 2×-ˆ.šG.&ÿz.|.÷ev.·#n."Ã÷pd.÷ÃÎp÷À 4‰À–4‰¨BÀŽ4‰÷9À~4‰¨B·$.‡& ÷ Ê÷ Úð !Ž 7r4÷ 4 À !÷ ¼ð e÷5€3  o÷5p3Ö ‡Î ü÷ |· Æ-À.4÷ .w"4ñÎ ïò& ÷ ^÷ nð x Àÿÿ÷ î Ám.3Áí,3@7ö3w Z!÷ .w FtG÷‹¤27 ž2€÷ *Á ñ�2 ÁnHÑ W ŠHúñx2þÿ±àÿÖ ‡ÁPH@"Ñ W lHú ‡ñ ÷‡ÁnHw"J2Ñ W ŠHù ‡Áå‡& w Î÷ ºÿw ¾tG÷‹2 ÷ ÄÿÁ Nw ª>Ö ‡÷ �ï÷ 03ù€öÀmÌ,€ ÀíJ2ïÀí-ìÀ-@2À:2>àä÷.2˜1‡Â’1÷ <w XÚG · 2Á 2�à÷-2ð2· T1÷ ú7 L1·ð1‡÷ w tG÷ t1÷‹t1w œîtGw –îB÷ Î · R1÷ ê ÷ÿÿ|2‡÷E"À<1‰H÷ ôw hîEèw2ô: ÷ ¢÷ V2w ´tGÀ1÷ ˆww ´?úÿ÷ z÷ .2÷ ð1<‡÷ Ž÷ ¢ó‡÷ Z÷ 2"w ltG÷‹Ê0‰tG‡Áè+W VG‚&÷ îÉP3·L3ñ|0 ÷eÈ+7 p0· ²1· ^+‡7 T+ÀN+‡¦÷ î÷ úÀ �À¥ ÷ øíø‚7–1÷ �1‡7 N0÷ ð+‡×-¬0ÿÿ÷ ܇÷ Ø+÷ ê+>÷ J÷ *  ?Šº+7 0· Z1÷ F1÷ ŽÀÂ+÷ „÷ VÂüC€ �À¥ ÷ À ÷ Ž+ö÷ (ò÷ ‚+ð7 „+7 v+÷†+ˆ+÷ ì÷ Ä÷ Â/À +À ÷ Ì 7 t+‡÷ ·÷ <+À0+Àm.+ 7 &+7 $+À"+×- +€ ÷ ‡À1÷ ¸f÷ +4÷ + ÁÁm¾*Ám +Np÷ Ô'Áø*À æª*rÁ · è*ë ×-à*d� ×-Ö* � ÁmÔ*Np÷ œÀÂ*w ® ¶ Án*Np÷ ˆ· ®*Ö ‡÷ 205Àÿ÷ fñæ4*÷ L.÷F.(*À$*Àm$*7`D/÷ FñÀ ÷ >ñ· *7 $.÷**7 *÷ .÷-/. À . æÈ)÷ <ò·%À)· ”.‡æÒ)÷ ê-÷ä-Æ)÷mÂ)æ.÷mÀ)à.À ÷ àð·®)7 Æ-÷-Ì.F)@‡7 Ä.7 €/÷dM|/÷ h/÷ ê)÷ ü)wXï7 R/×-X)dM· ü(· Ž.÷ )÷)‚.7 ú(÷-z.î(÷ Ððw$ï÷ "/÷-d.R/ ‡÷ ºð�‰ŒÀä-‰JF‰®æD.7 Ö-÷ \Á ÷í)2. ÷ äw þ(w`.÷ :Á @æÈ(÷ <ñ·%À(· ”-·ú-‡·ô-÷ °.÷-¦(ª.wvþ‡ÁPH@À €ÀmN(€ À-Ì-Ñ W lHó ‡ñ ÷‡÷ Ìüfæ & & ÷ Òê +  -7h.÷ *Ž 6÷€ÃÀ@�W -ÀàW +À`Àƒ�…&÷ ’ü€÷ . · .7.÷ Ð,÷ Èý‡×-`(üE †?X(÷eR(÷ ôw`P(wà>(· J(‡Â4C7 <(7 T(7 Þ-7 ü'÷4C"(& ÷ ê�  7 (7 0(C7 Ö'· Ô'ïÀ¥ ÷ ¶é&À À]ˆ'÷ ¦÷ â'÷ œ7 Ø'€÷ ’²Sþÿ ÷ Æé �7 �'· Ž'÷ ¶éÎÀ �À¥ À è�À¥ åò þÿ�—¬þÿ.· Ž'öe Ö ÷4C|'÷ ‡÷ ~'÷üCn'÷"'`'÷ 6'÷0'z'÷ÿÿ('÷íp'H'7 R'7 <'7 :'‡÷ äw`>'· V'‡& ÷ ´÷ ¾,Áæ*Áíê+ �%æº&w¶&÷ lü·®&‡À  ‡f¦AÂ÷ êè !‡ ~ƒ7€,Š‚�…� ùî· à*A÷ Žè7 `,æ÷ ´è�  Î7 H, . —#Ž Á Á Ž  ÷ ,÷ —#ÞÖ ÷ þ+w¨%7 ~*‡&7n-wÀà+‰ÀÖ+‰J� � ÷-Ê+Æ%÷ÿÿ¾%€‡ÁÀ+÷´+8-÷ LÀEÿ&� ÷ @ÀEÿÀ€UÀ ÷ h‡÷e’+‡ �— A ‡— Zƒ— a‡— z‚´‡¤‡fÁEw ÷-Ø,N%w ÷Ì,B%ÀÆ,‰ÿÿÀ¼,‰äH€ÀE€ÿœäH�‡w ‡÷ rÕ ´…f&ý � +# -% *÷ JNpNí / ÷ 6 &�À r6Ö Þ7Ú*€�Õ Ç …÷ ø`Ò÷ óàÍ& ¦æ& &  ý €7¦*= -Ž ý �ÀE€ÿÀå0  ‚¶ ¶ ×p `îÀe0 .¶ 6 äö 7Z*Â÷ ^ ¶-ö  æÃ ö ×p úÀƒ€rƒÖ  Ö Àƒ‚Ö ‡&æÿÿÁPHñ Ñ W lHùƒ@ö �É ô�É €À�#€ @bÀí )ë é†çÉ å€ð�€Áp#Áíð(–%‡ÁœGÉ @$W ÖGùƒ ‡ á Áe<‡¦)3f& ÷ êçG� +Ž ÷ Üç@� \ ÷ Ðçw ˜çž7 \#÷ vïÀE€ÿ ( ÷ °çÀE€ÿ&÷ ¦çÀE€ÿÀ€U÷ ‚ÿÁ Î Il<@Ä$M7 š'À Ô- ÷ 6)w r²À úw ¦² ÷$Mô(Ö �‡!dM†‡÷ Fç � \ ÷ :çw çž7 #÷ 8ÿïÀE€ÿÀå0  ? ¤"À Àmœ"Àe 7 (‡ æ-Îå Ö-ˆ"‡÷ �'ôÀz"Ð Ðp"Ðt(Ðì&÷ æ&0 þÿ7 Þ&7 Ø&Ðì"Ðf(7 b(7 à"÷F"@"ÿ @"÷e 8"w2"À ‡×-&"dMÀ"7" 7"7(7�&€· ˆ&7 †&7˜"÷-ø!¨&†7 ¤&‡÷ ¶&æp,ÎeÎEÿÎed†# ‚Îåd·X,·‰¤‡· ˆ&Ö ´‡· >&? ²!7 x&ª!Âe �Áefw ",‡÷ ¢ÿ;Ž 2÷ äõ÷ ˜'-R÷ ìã� "· <&÷ Üã �÷ z'÷ ,&   " æÔ+ÎåV é‡÷ Nÿå7L' ÷ D'÷ ô%ÌÂí&!Âå ‚ ¿!7  %Ö ‡&Î ÷ Þö÷ Ü%ùÖ ‡· ¤ ×-8&ÿÿ÷ h÷‡7 '÷ Þù÷ l!d÷ !a÷ l!+· f!÷ `!÷ 4ã�  · N!÷÷ Æ& 7Â&÷ >!÷ (õ÷ !@÷ ,!=Á(!wp¨ w`!7 !÷ |ù÷ V%0÷ !è÷ †& 7  7 þ 7 ü 7 v&Àx ÷ ìì‡÷ ì ÷ à ÷ zø÷ ô÷ N&7 Ì ÷ ¦÷ %ê÷ :&7 ¸ ÷ x7 ‡÷ ˜ô÷ æ$1÷ &Ë÷ râ�  7 6 ÷÷ w`f ÷ ø÷ð÷ n ÷ h ÀD € € 7`` 7 2 7 0 ÷D ÷ 8 À÷ Â÷÷ 4ô÷ 7 P‡÷ * €7 " ÷$¦÷ ¾‡¦æ  ÷ ²ÀüÀ ÃÜ€r÷з΃‚÷ âó7 ò‡fæ ÷ f C`÷ €�  öâ Ãm ÷ šƒ À÷ € ƒ�‡÷²’Ĉ7aŠ÷ ”  �  ÷ ”÷  wàpôä ÷-hZ×-T÷ &7 þ$æl%� -÷ @ùÌUÀ5ÀEÃå× 4C‡ÂÂE÷ ù×-& ÷  ö€· ¬$÷   wàú÷ Žö÷ Ð÷ à· òÖ ¤‡À-÷Ú"÷ t w#ÃÆ÷ p$÷ Ì0Î-Ö/À÷ Z$÷ ¶Á˜ÁíÔ"׬þÿ-ËþÿË•-÷í¾"|÷m¸"„÷ €Ë ×÷  wàrw``· „Ä Ä w``Ê· f7NÌE!4CÖ ´‡÷ $ò÷ Ð#ÁîÁ ÁmÄ#Ábw4%÷ à�  ÷ à�    ÷ ˜÷ô ÷ �÷…& Â%÷t#ø$w l²-&w d²-&w \²-&ÂÞ$w P¶ À~€m€í€ €í&ö ö ÷ † w &¶ ÀT€å€å€å€å€eö øÿ÷ h w ¶ ÷ Üò…& f�‚ ‚ ÷ ’÷ÀEÿ&� ÷ †÷ÀEÿÀ€U�À  %ý N`æÀEÿ7J!À" ÷ ê"÷ nN`Ø÷ &N`Ô€Õ …&Î À ý ùV%…÷ Õ …¦æ÷ ƒ‚‡f —r æ€÷ Þÿv€Àe0À]Ü ý �e‡÷ Õ …¦æ×-n"÷oBh"÷sBd"÷hBZ"÷lBV"÷ ƒ‚‡ ‡f—r 怷 4"· 2"÷ âÿv÷ $"÷ "" ƒ—r× ÀŸ"À]\ ý N` · ü!ÀŸø!÷ ô!ÀŸð!À]< ý �e‡Â ÀŸÜ!À]( ý N`à ÀŸÈ!À] ý N`ö�‡÷ Þï÷š"·  ÷ ÎïfÁæzÎE€Vpw�& f& & ÷ ÀÝ€7`!+ +¶  -ö 7B!÷ ö¶ ö € ö Í No÷ œ �À rWp@€÷�7 |V%�Ö … i—p°  p—p m —pÂæÈÎE€–p u—p·pD7° ÷ ¨ ‡& & ÷ öÞÀEÿ *¶ ÷ âÞÀEÿÀ€SÁú6 Ñ É û @÷ ÞÀ]^ö 6ÀRw ( Ê6 á ÁåÊ6� Á€ÀE@P–%À ‡æ÷4¼ ÁæÎE€Vpw¨& ÷ ¨Ü � - 0‡ 9‚7úw ÄôDÀ € ÀU Î À@P€ €ÀU€÷ bÜ€÷T¤‡÷ RÜÖ ÷D´‡· A÷ ìí÷ úÛ� "÷ îÛ÷ Ž÷ ‚óø ÷ zów7 î‡& ÷ ÊÝ�ÀEÿÁ| NÎE€ W$ÿÿø Ná €? 8÷ žö·4Ö ‡f¦æ÷ 0ÜÃÖF÷ &Ü  × èFù†÷ só ÷ 83 ÁêFÂÖFÒ I$üƒ @þÿqþÿ €þÿ²þÿ ðà éÁ$MÂÖFÃêF‘Ê ÀÀb€ ÷ "õÀöÀ†÷  ÷$Mšƒ‚�‡À € ÀU ÀU€‡f¦& & ÷ ~ÛÁÖF÷ tÛ W èFù†Ž ö ÀŒ)Î +÷ ^ÁU vÁJÁE€WpBNp� ÁUàw®"ŽÎUÀÀÖFÁ&MÈ ‘‘ùÑŽ" ÷$M–%‚�‡÷,øf÷ ôÚ÷ ú 7d"@÷ Hÿ7\"7 Z"÷$MÌ�‡7Òû÷ ú#÷ ò · îÀ7 Ä÷ 2Ð û÷ òÐ ÷ òüà 7¢Ð È ÷ ùw ¾w ª‡�—  — .— ,— ( — )— "— '— `‡— a†Âe ‡Â #�— a — e— i— o— u— y— A— E — I— O— U— Y‡&÷ ¬ÿ÷ Hñù€¤…€´…ÀÞ÷ 2ñS÷ Šÿà ø7Ê÷ ñH÷ tÿù7 ²7¶Ãþÿ÷ ñÁaw lè<üÿ÷ë@÷ äð÷G> þÿw Hë@w >™?w 2õ<÷ Vƒ÷P7N7 Ṅ÷JF÷-<䮇ÿU4· 8¨…&ÂE€ÿÁE€ÿ÷ ÌþÂåa— ‚„B÷ ºþÂåa— ‚æƒ×p  ¡ B Ä`De“ „ „ „ „ ÄEðÿÖp Õ „…ÀÎ÷ "ðH÷ nþÂE€ÿÂåa ¦äIÎEÀ;À¬�÷ pC’4ÃEðÿÎ`C`˜Á ÂE€ÿ¦ÂE€ÿ÷ .þ– èòÀzÖ C’ÃEðÿC`ѵ€à Á ã‹û€7\÷åVñµ@ÿÿòw LþÈUìáµ µÖ …&÷H”�÷ ¤ïÂÐH�ÃEðÿà � ÷ Žï�ùÁÐH€‡ &'�7 " û +÷ zÀEÿ÷ .œ JÀEÿ7  Àå ¦÷ X‚÷ Áw€‡ÀE€À5@ùÀ5 ÀE ïÁü íÀúÀE€@pÀ rW ÷ Ì€ ‡ÁÞÁ wGºœî8 €÷ F  qƒ ‡Á<Á Ñ AÊ6`A’÷ ¤ÿ÷ ˆfÁ€÷ ”ÿwx�‡ææ ææ¦& ÷ ¶Ö÷ °Ö ÷ ê÷ êþN`õ€÷ >ð‚·Ô·Î·Ð·Ê÷ â÷ ‡@& À€#€àÀU€÷ ÚÚÎ ôÖ ‡À@÷ &Á÷ *7 Á(÷ À`÷ · ü7 Ú‡?�· ×-ÿ‡÷ äÚ‡À �  ×-ê M‚?â÷e܇×-Ö Kp¦æ&à K÷ ÷˜ À÷z· f÷ þD`÷ ¤ô‡ à KË €Ë5@ ËE€Ë5 ËE Âd÷ |ï‡÷<ÁdÁír÷ À€Áå77 T7 &Cá ÷D÷÷ D  Âà � ô÷&�÷ *Ã(÷ îÀ÷ *÷ Þú‚ÃÖÀ÷ ÷ ú‡÷ Kþ· ℃‚‡÷ Ê&¦À h�· ª÷ ÚÀEÿ _„1Àå ÷ Æý Â5@ € ÷ ¨ 7¢ÀEÀmš÷ šþ÷ �ô‹€÷òv÷ r÷-nä÷fÜ÷ ú÷-VÐÀNf÷ �7 :æC ÷ " Ãmƒ Á Ãm÷:@Áw` ÷ 4€ÀEÀÿ÷ þÁƒ÷ìw`î÷ mÀE€À5@ À5 ÀE � ÷Äìwxè÷ ìXÀE@ À5 ÀE � ÷ ºwx¶÷ ZF  Á�÷¬÷ ~7 ¢÷ ¨6 · †0 ÁlÁE€Wp7 l÷ L· b÷   Á@ÁE€WpÁ ÷<÷ 7 2 � ÷ Ð7 "‚€‡÷-�†Àˆ÷ Ƈ÷ &fÁ~Ám~7 ô÷ š�€7 ê÷hh7 b‡÷ ŒÓ÷VÞw ëæ÷Ðf&€ rÀEÀÿÀÀUûÎ €ÀU@÷ PÓ€�‡÷ FÓ´‡ÀEÿÀÀ5@w ¶B‡w ¸B‡ÀEÀÿfWp} }�Õ …Á %ÀNÀmHÀ5 ÷@<À8À ÀeJ÷ <üÁ À rÀ@ @à@ ÀEàÿÀU`÷ üÁ ñ‡7 ÁÁí÷ ÷ ‡Á ;÷ Öþf€ À7xàÀ@ @à÷ Ð7àÈ÷ Ä 7`¾ 7`¸×-´ò 7à¬&À¦Àm¤À5 ÷˜˜ÀGÀm�÷ ˆû€@Š÷ €ûÁ Ï�‡ÀA÷5Ô€ ÷ fûÀC×-Ä€ ÷ Tû‡7 P÷ 2&A’@ÀE€ÀUP÷ 8ûÁ‹€ÎU€÷ � �÷ ˆ€÷Á7÷ (ÿ·t‡÷ ÔÐ÷ tÀr÷ ¢Ñ�ÀE€ÿ S PÀV w $Ê6á ÁåÊ6� � @÷::74÷ L÷ ЇA@$Ñ ü Á …& ÷ Zâ÷ À÷ ÊèŽ &÷ jâ€Ö ÷ h÷è è 7â ÷ þ÷ <‡f& ÷ ÑÀE€ÿÀå0Wp N  ÷ îÐÀE€ÿÀå0 `€÷ ªÿÖ �‡À’ ø÷ Ôá÷ ÿ‡ÀEÀÿÁª6 � É ûÁ @œÿÿÉ‹€ÀU€‡Á� wÚ÷EüÿÔ� � ÁEðÿÁ Á wœª6º÷Eÿ´� ñ‹ª6€÷U€¦÷ Ž×-ˆ÷––÷ŽŠ ÷ ˆ÷ú |÷þ z÷ô n7 X÷lh÷``‡ÀÜ ÷ Tÿ� Áåª6Á Á]Ð Á Áw ‡÷ á÷ „ç