xþ÷ b ÄÐzþ÷ T zþ÷ T xþ÷ : zþ÷ 0 zþ÷ 2 Ã-\ý öüÄe w ÌÿÁ þÿ°üï ÿÿ¨üë ûÿrüÐ úÿhüË ùÿ`üÇ øÿXüà ÷ÿPü¿ öÿHü· õÿ<üµ ôÿ4ü± óÿ,ü­ òÿ$ü© íÿüû ìÿôû ëÿìû êÿäû éÿÜû èÿÔû çÿÌû­ æÿÄû© åÿ¼û¥ äÿ´û¡ ãÿ¬û âÿ¤û ÊÿÄU ¤ÿ÷5 áÿ<ú àÿJù Æe ÿµ ¦ÿ¨ÿua¨ÿu ¨ÿ¤ÿõ ÔÿÊÿuaÊÿ5 a÷ 4 a÷ ò u ÀÿÁ% aGl> ß%üÿ ÊÿÎÿu ÎÿÒÿ ìÿÀe æÿÂe ÀEýÿ" Îÿ3" aÁe4 æÿÀe Èÿ÷ T ÆÿÀe u-ÆÿÈÿ( ìÿÀe ÈÿÁe ÌÿJ" ìÿÃe Èÿ÷ Æ W=ºÿ ìÿðÅ ÂEýÿ ìÿðÕ ìÿÀe @mìÿ5 ÄÿNa÷ ¶ °ÿÔÿ5 ÔÿÎÿuaÎÿ1 °ÿWp aÁe¾ÿu Äÿîÿ! ôÿ5, pí¾ÿ ¾ÿ@-îÿ ÄÿNaf ðÿ÷ Ì  ÿH-¼ÿ H-¶ÿ ¬ÿu-¼ÿ¶ÿ pm¼ÿ Hí¼ÿ ®ÿ×t CmèÿÃe ®ÿWt `Áe Cmêÿõ A]²ÿu ¬ÿ ÿp AmêÿÁe ¦ÿàÿ °ÿW-°ÿ7 °ÿÀeÜÿ ¨ÿÁg( ¦ÿèÿC `Áe ®ÿWt `Áe túÿÀE ®ÿ×t ÀEÀÿ ðEüÿ ìÿðU ¸ÿ×t túÿÀE ¸ÿWt ¸ÿ×t Æeþÿ aÃe4 Æeîÿ@ WtøÿÁE ðÿB`µ bA-ðÿ Hmîÿ5 p-òÿ Hmîÿ5 Æeþÿ@ øÿ÷ ÿÿÿÿÿÿ ÿÿÿÿÿÿ TT00 DISC DIRT LOAD CLI MOTH Ö%è%þ% &*&\&b&j&r&z&z& ÿ ~¿& ÿ z¿ ô üÿ½ `Áå0 àø òÿ ø òÿ° ÷ nÿ W,òÿj" ÷ êý îÿÁ% ÷ jÿÅå TTPL2T3T ÁEøÿ ÆeÚÿµ Üÿ5aÜÿõ Úÿ5aÚÿõ aÁe^ a÷ . îÿõE ÿîÿõ ÿA-îÿ aGl4 aGlB ðý4-D îÿt-èÿF ÿÿèÿf t-èÿF ÿÿèÿ4 $ýÁe tóÿÀEøÿ5 ÜÿÁe a÷ º Æeþÿõ% Æeþÿô%( Æeþÿæ Æeþÿ Æeôÿ àÿøÿ5 Þÿöÿ0 a÷ X öÿWtóÿÁEøÿu öÿÀE ÚÿÀe ÿÿúÿW-úÿP Æeþÿ& øÿ÷ bÂ<À ÀbÂÿÿÿÿÿÿ p¿þÿÿÿ Æeäÿµ Æeöÿõ öÿNa Æeþÿf ÀE?à túÿÀE ü4`l ÀEÿóÀ Æeþÿ4 Æeþÿ4 ÁEÀÿ@` èÿæÿuaæÿæ Ù ×7x ðÿNa Ù W=öÿ àöÿô ñÿÀE öÿ@àÀ äÿ5aäÿ= äÿW/äÿ ðÿNa øÿ÷ B Àÿÿÿÿÿÿ ÆeÂÿµ Æeôÿ öÿ÷ÿõ% üÿu öÿNa Æeúÿõ aÁen aÁen Æeîÿ@ ôÿÀe @-üÿ4 ÿÿúÿW-úÿ2 lÔÿu Æeúÿ WtùÿÁE Æeüÿ5 a5,` ÞÿNa ßÿÖÿu Þÿ×ÿu âÿÚÿ5 tóÿÀEøÿ5 ßÿÁE âÿÀE îÿô% îÿØÿæ ÖÿNa äÿðÿÁ% àðÿf ÒÿI-êÿ ÿÿîÿ îÿ¼ ÒÿI-êÿ ÿÿîÿ ap-ðÿL p-ðÿV ÂÿNa7 ìÿîÿ@ ÌÿÀe îÿw äÿðÿÁ% àðÿf ÿÿîÿ@ tóÿÀEøÿ5 æÿ@-ôÿm äÿÁE ÌÿH¢^ ÂÿNa7 ÂÿNa7 ÊÿÀe ÊÿÀe ÌÿðÅ ÌÿðÕ ÿÿîÿ ÿÂ`µ øÿ÷ ( °ÈBÀ À°Èÿÿÿÿÿÿ XX@@@ °ÿ®ÿua®ÿu ®ÿ¬ÿõ ìÿêÿuaêÿ êÿð¥ íÿÁE ¶ÿÂ% íÿÀE tóÿÀEøÿ5 íÿÃE ðÿÀE Âÿ÷ Ú ÔÿÊÿõ ÿÿÄÿõ ÿÿäÿW-äÿ :àô¥. ;àô¥. ÿÀå0 :àÀE ÿÿäÿW-äÿ Ôÿõ¥0 ´ÿ<àã äÿNa÷ ;à÷ äÿNa÷ P ÿÿäÿW-äÿ ÞÿNa÷ äÿ@möÿp æÿØÿ@ öÿÁe öÿÀe Èÿõå ÿÿÜÿW-Üÿ BmöÿÂe ÚÿNa÷ V àÿõ% äÿNa÷ @ àÿõ% ¾ÿõ% âÿõå ÜÿWt âÿõå @aÁE?Àp túÿÂE Üÿ÷ ¨ Øÿõå @môÿ5 ÜÿW-Üÿ ÿäÿ+ þÿäÿu-äÿ äÿÀU °ÿu-ÊÿÔÿ äÿNa÷ f äÿNa÷ Z WtóÿÁEøÿu ÌÿÀE u-ÀÿÌÿc Ðÿu-ÜÿÄÿ ÜÿÄÿ@ u-Ðÿ°ÿ ØÿNa÷ ® ³ÿÁE àÿW=°ÿÿ ØÿNa÷ h ³ÿÀE ÿ@mØÿ5 ØÿNa÷ 6 ²þõ% ÀäÿB ¶ÿWt Öÿîÿu Æÿðÿf Ù ÷ V Æeúÿæ üÿNa÷ . úÿNa÷ $ ³ÿÁE ÿAmüÿAmúÿp üÿÃE Æeþÿõ%ÿÿ Æeþÿ@ Æeøÿõ úÿüÿuaüÿæ úÿøÿB Æeøÿõ øÿúÿuaúÿæ Æeìÿõ îÿðÿuaðÿ@ øÿu-øÿìÿ7 ÿÿöÿW-öÿ öÿ@mîÿ öÿ@müÿ òÿÁ% øÿ÷ > ²À>À À²Àÿÿÿÿÿÿ ÆeÞÿµ âÿàÿuaàÿu àÿÞÿõ ðÿîÿuaîÿô% ðÿNa ñÿÀE òÿèÿ4 ìÿñÿ@ âÿôÿ1 a÷ ö Á%þÿ a÷ ä a÷ Ì a÷ ® ôÿÎe0 Æeúÿ5 üÿW-üÿ úÿÁ% Æeþÿõ%ÿÿ Æeöÿ5 ìÿ÷ÿõ úÿ5aúÿA öÿNa Æeüÿ÷ j õeýÿüÿf üÿ÷ ÁEøÿÁe0 Æeøÿõ øÿúÿuaúÿæ Æeìÿõ îÿðÿuaðÿ@ øÿu-øÿìÿ7 ÿÿöÿW-öÿ öÿ@mîÿ öÿ@müÿ òÿÁ% Æeüÿõ ÿÿüÿW-üÿ üÿ@m Æeæÿ aW¬< 0,èÿêÿ üÿúÿuaúÿC ÿÿöÿW-öÿ üÿÁe® îÿðe êÿõ% aÁe= a÷ f ðÿu-ðÿæÿ# bý÷ æ øÿÀe ÿÿöÿW-öÿ aÁeð @mêÿ& ÿÿöÿW-öÿ @møÿÀe ¼ü÷ @ øÿÀe ÷ 0 ÿÂå0 ÿÂ`Âå0 øÿð¥ ìÿòÿæ øÿð¥" øÿ÷ àÈ Î ÷ *ÿ BÁ>À ÀBÁÿÿÿÿÿÿ LOADUP stopped F A U L T term req. *no fault LOGON TASKS REGSS SEGSS PURGE KILLE FREEE HOLDE INTDE KICKE ABORT TASK? purged Æeàÿµ îÿìÿuaìÿæ ðÿNa Ù õ¥ ñÿÀE õ¥üÿðÿ a÷ J ôÿàÿu öÿâÿæ ÿÿèÿW-èÿ èÿ@mêÿ aÁe4 aGl¬ Æeüÿõ õeýÿüÿf üÿ÷ * ÁEøÿÁe0 øÿ÷ àÈ Î ÌÀ<À ÀÌÀÿÿÿÿÿÿ NOT READY! BAD SEGMENT ADDRESS ERROR ILLEGAL INSTR BPT TRAPINSTR ILLEGAL SVCTR BAD SER SVCTR TIME FAULTCTR À!À(À+ V@X@Z@[ ÆeÔÿ Æeþÿ@ ÿÿöÿW-öÿ öÿWt ÖÿØÿuaØÿõ öÿW-öÿ7 túÿÀE `WtúÿÁE `ðÿu ðÿäÿõ öÿW-öÿÞ¾ öÿ÷ p-äÿ ØÿÁeF ÖÿüÿC túÿÂE `WtúÿÁE `×túÿÃE üÿÂe0 òÿAíòÿÁ üÿÀeP âÿWt ìÿ@íæÿÀ ìÿBíæÿ W-îÿ! W-îÿ# ÞÿÀeX âÿWt túÿÀE ÜÿÁå@ umÜÿðÿµ æÿWt Òüõe öÿêôÀ öÿÚÿ_ túÿÂE Úÿ@íöÿ ÿÿöÿW-öÿ1 ÔÿÁe âÿöÿõ öÿW-öÿO öÿWt öÿW-öÿ Æeþÿ_ vÿ×7tÿ Æeþÿ@ SUPRUN¢ RENAME£ SYRRUN¦ T § VERIFY© DIR ¶ DBUG ¼ F Ì CPUTY à LP23 á LIB000â PRIMS ã DELETEç NEWLIBé PASS2Yë BDUT3OE BINLDYQ LOADUPC CRSHY o COMMY r E w INDEX INSERT LOAD LINK OY V PEEK ³ I ° RUN ¼ PASS1Y¿ RXINIT COPYRX ALIST DPAL R FORMATa ASS11 d BVTXY CLIXY PASS3Y£ RECODEÇ LIBOLDÑ LOAD7SI CLI1Y Þ CLI1S ç LOAD7Yù SUPY W SIN00Yg SUP009 SIN009 BVT1S ® BVTXS à TESTS $RUN RENA¦À ÆeÔÿµ àöÿ¨ $àôÿ òÿW-òÿ òÿ@aA òÿAmöÿp òÿW-òÿ òÿ@aA òÿAmôÿp æÿäÿuaäÿt a÷ N øÿ÷ > àÈ Î ÀHÀ<À ÀHÀÿÿÿÿÿÿ FAILED $RUN T ¾À Æeðÿµ öÿNa÷ 0@õ% öÿÀE ðÿc" öÿ÷ P øÿ÷ * À@À<À À@Àÿÿÿÿÿÿ VERIdÒ î½ê½uaê½È( Æeþÿ àã½½T è½GV â½N` Ù éX a÷ Ò a÷ ¼ a÷ ¨ º@÷ ò Æeüÿñn Ø@÷ , õeýÿüÿf üÿ÷ ¤ ÁEøÿÁe0 Æeîÿ´z tñÿÀEþÿ5 üÿõE úÿW-úÿ úÿW-úÿ @apm îÿpàîÿÎ a±lò Aañ% úÿW-úÿ õ%ÿÿ Bíúÿ¦ ÷ Ü ÷ î õ îÿÎe0 @B÷ a÷ j Na÷ XBW- Na÷ l Þ´ ~Bõ%. Na÷ Z S¶ Na÷ > ä¸ ¬Bõ%P Na÷ & ÄBõ%N ìBõ% üBõ% Na÷ Ü ÷ T ÷ ( ÒÆ LCõ%N a÷ Z a÷ à @mê½ a÷ ® Na÷ > ´Cõ% ÎC÷ r î½Na7 AaÁeî½u ì½°ü XDõ%N `Dõ%F a÷ Ì týÿÀE àÀe0 ÀEøÿÀe0 Nü÷ > ì½È¥ @mì½ "Eõ%F ÞûÈ& 6Eõ% HE÷ ø hEu- E÷ ¢ a÷ ¤ ^û6B tùÿÀE ÀEàÿ5 WtûÿÁE CaÃeø¿æ AaÁeø¿u ö¿ T dFõ%N |F÷ Ä a÷ Æ a÷ ² úÌ` ¾F÷ tüÿÀE ÁEðÿÁ ap\0 Gõ%N Gõ%F rùQ| a÷ è a÷ Ô |G÷ Ä Gõ%N a÷ ¦ `ù÷ ÀGõ%N tùÿÀE ÀEàÿ5 WtûÿÁE CaÃeø¿æ Ö÷þ¦ tùÿÀE ÀEàÿ5 WtûÿÁE CaÃeø¿æ .÷ý¼ AaÁeø¿u ö¿Þ ×tüÿÃE ÀEðÿÀ að<  PIõ%N a÷ ê a÷ Ö ÎEÀÿ& a÷ ¾ x÷sÔ t÷ÿÀEøÿÀe0 túÿÀEøÿÀe0 ÐIô% AaÁeø¿f Jõ%N a÷ 4 Ìögä HJõ%N ,þ¶î XJ÷ è \Jõ%N a÷ Ä a÷ ² J÷ ¢ ºJ÷ a÷ t a÷ ` a÷ @ K÷ & øÿ÷ àÈ Î àÈ ÷ àÈ ÷ àÈ Î àÈ Î ÷ Òþ `fb<` `fbÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ *** DISC FAULT ON BLOCK IN STATE UNIT? LIST? HEADING? ==== ==== " NAME FIRST SIZE PR USER BLOCK OUT OF RANGE BLOCK : PR MISMATCH, EXP: , ACT: : BLOCKS CORRUPTED NUMBER OF BLOCKS = BLOCK LOST FROM FILE - NOW RECOVERED - NEXT BLOCK IS BLOCKS LOST - NOW RECOVERED CORRUPT BLOCKS DETECTED FIRST = , LAST = , USED = , FREE =¥ DIR fÄ ÆeÜýµ ÆeüÿUl ðý p òý^t øýôý0`ôý îýÁea öýox H@ð% Ù Ý| a÷ º t@÷ ª x@÷ L Æeüÿ5 ÿÿüÿW-üÿ üÿB` øýÃE Æeúÿ¸ª úÿj® ÿÿüÿW-üÿ2 ÆeüÿtÀ üÿòÄ a÷ ¾ Æeüÿ<Ô îýWtýÿu ¾AÁe0 àÂe0 àöÿÇú -àÀE âýüþ ÿÿìý ÿÿèýW-èý èý@að ÿÿæýW-æý2 ÿÿèýW-èý èý@aA æýWp èýB`2¬Üýøý$ èýC`3¬Üýøý ÿÿäýW-äý äýÜ$ äý@aA æýWp äýB`° øýÜý8& æýìýa* þBõ%ÿÿìý êý¯> þýÇB ÿÿìý øþÿF JC÷ z øÿ÷ p àÈ ÷ àÈ ÷ àÈ Î àÈ Î ÀhÀ<À ÀhÀÿÿÿÿÿÿ DIRECTORY BLOCK READ ERROR FILES FSYS= DBUGРÆe¬ÿµ øÿÏ òÿôÿuaôÿu ôÿðÿp ÔÿO¤ a÷ ² h@÷ ä v@÷ Ö P a° ÚÿNa÷ ° ÖÿNa÷ ¦ îÿ㸠ª@õ% ÿA-Úÿ Æ@õ% a÷ Ô aGl¦ a÷ ² A÷ L a÷ ö $A÷ ( èÿ÷ PA÷ ì a÷ N òÿØü öÿ¾þ ÿÿîÿW-îÿ îÿ@möÿ ÿÿîÿW-îÿ @möÿð% îÿWt Amöÿu èAW=àÿ àÿÂe ÿÿîÿW-îÿ Amöÿp @ÞÿB ÀØÿ dB÷ ª æÿ÷ Ê ÌýH. æÿ÷ º æÿ÷ ª ¬ýÌ> a÷ ð Þÿb\ rýý^ ÔBõ% a÷ 4 æÿZf Týýh æÿ÷ B Ôÿ£r îÿW-îÿ îÿÀt 0Cõ% a÷ Ø JC÷ a÷ ¼ æÿ÷ Ö Æeúÿ Ôÿ,¬ ÿÿüÿW-üÿ @löÿ a÷ Þ a÷ À ÿÿüÿW-üÿ üÿú¾ ÂlöÿÂe úÿ·Ä ÷ n ÷ rD÷ ô ÁEøÿÁ% ÷ & ²D÷ ð ÆeþÿûÜ a÷ Ö äD÷ ¾ ÆeþÿËì ôþ5ò Æeúÿ¢ú $E÷ ~ ÿÿüÿW-üÿ a÷ 8 ¦E÷ ü Æeöÿ öÿ´( ÆE÷ ÚE÷ r êE÷ b ÿÿöÿ<. úE÷ B úÿW-úÿ F÷ < üÿ5pöÿw ÚýD8 üÿ¯: >F÷ þ ¾ýÜ@ ÆeìÿyH ðÿ'L îÿ%P øÿõE øÿvR tóÿÀEøÿ5 ìÿ8T a÷ $ øÿÂE àB,2 øÿöÿõ úÿ(h uRúÿ°l äFõe a÷ ¬ ðÿúz öÿøÿð 2Gu- XG÷ \Gõe a÷ @ GÁ% ôÿ÷ & ²G÷ ð ¶Gõå îÿF¨ Ôþ¥ª Æþ¯¬ Æeüÿì² õeýÿüÿö¶ üÿ÷ ÁEøÿÁe0 Æeøÿ©Â a÷ ê lÞÿu üÿàÌ úÿW-úÿ øÿíÔ øÿªÿ0Ö ,ÿíÚ a÷ ú þþ÷ Ø 8û5à a÷ Ô (û5ì ÆeüÿÑô üÿXø ªÿ®ú âþ7þ Æeúÿ a÷ Î ÿÿúÿb `Iõ%A üÿW-üÿ a÷ ô 8þ7( Æeþÿä0 *ú54 ÆeðÿÞ< ðÿÂT øÿHX öÿNa÷ @ Jõ%+ ôÿNa÷ . Jõ%C 5lÞÿøÿ. 0Jõ%G @lÜÿÀe LJõ%R a÷ T ¢ý7j ôÿNa÷ à lJõå0 ôÿ@p a5ll øÿ¢t öÿNa÷ ¶ øÿõe øÿõå øÿx~ Öÿöÿ a÷ Ò àJW=øÿ a÷ À tóÿÀEøÿÀ øÿÁE ,Kõ%= a÷ ` ZKõ%* nK÷ 4 ðÿJ¨ vKõe øÿߪ Æeüÿ.´ òÿðE ×tóÿÃEøÿõ üÿJÄ àÁ,2 $üXÆ àK5-B òK5-~ Ù ½Î òÿRÔ òÿùØ ÆûÁÞ Æeüÿqæ üÿÌê \LW= tøÿÀE ýÿ²ì Æeþÿ+ö Lô%ÿÿ~ ^÷5ú øÿ÷ ^ ,MÈ Î àÈ ÷ àÈ ÷ àÈ Î àÈ Î ÷ Òþ Âÿÿÿÿÿÿ ÿÿEIRPWBCAD?NOTFLS+- Debug? T NOT SET S,A,I,R,P,W,N,O,B OR C PLEASE! Task ID? ID ? NEW PROGRAM CODE? STREAM? DUMP FROM? LENGTH? STATE = POFFQ: SEGMENTS NO ADDR LEN STACK=R0R1R2R3R4R5PCPS = , Cannot Dump - Points to Hardware Registers ZEROES ADDR? BP: ADDR= CONT= BP TABLE FULL! ODD! SEGMENT? -> F |Í Æe¬ûµ øÿÓn Æeüÿ õeýÿüÿ³Þ üÿ÷ ´ ÁEøÿÁe0 Æeúÿ]ì üÿW-üÿ üÿ@m @÷ Æ ¨@÷ ¶ úÿ5ö úÿ¶ø üÿW-üÿ üÿòú Þ@÷ `÷ j üÿ@m Añ%? A÷ : Æeøÿ üÿNa÷ JAõå0 úÿNa÷ ø øÿNa÷ î pA÷ Þ úÿÀå0 @møÿÀå0 úÿ¼ Æeüÿü2 àóýg8 ôý§: úýöý0`öýV< lÌý° øý2> üAð% øýn@ Ù %B (B÷ ,B÷ ø Æeüÿ òýüÿ 5`üÿÌ` ~Bõ% Ù In Æeôÿ à÷ÿs Îýêýi Ìýëýd ÿÿôÿW-ôÿ ôÿÂ`° úýìýò êýúÿ 5`úÿ öÿNa Æeøÿ Îýüÿ<ª ÌýúÿM¬ ÖýÌýr® ØýÎýh° øÿ·² üÿÎýÒ´ úÿÌý㶠Æeüÿ2À ÿÿüÿW-üÿ üÿB` úýÃE XüíÐ Æeúÿ¼Ø úÿmÜ ÿÿüÿW-üÿ2 ðý¸ä Æeüÿuî üÿõò a÷ X lD÷ H ºý¶ú Æeüÿ? ÌýWtýÿu ªDÁe0 àÂe0 ÎD÷ æ Æeüÿá üÿN" EÁ%ÿÿ a÷ ¢ Âýþ( ûý, Æeúÿ DEõ%3 üÿW-üÿ2 üÿø: ÿÿúÿW-úÿ úÿÖ> úÿB`C `³¬úý²ýð@ @`ð¥? ÆEð¥¿ÿ²ý úÿÂ` hú(F îEõ% úÿÂ`°¬úý²ý Æeúÿ òýúÿ 5`úÿæd XFð% ÿÿüÿW-üÿÿ üÿóp @`𥠬ûót Æeøÿ ¼F÷ ø ÿÿúÿW-úÿ ÿÿüÿW-üÿ Amüÿp úFÁ%2 $Gõ% Îýhº -àÀE Ìýð¼ nú»¾ $ýþÆ 0à¡Î ¾ý\Ð \G÷ X a÷ Æ gÔ jG÷ ô Á% ÷ Ú ø ÊýNa÷ Ú ÚØ ÀýNa÷ È GW-ÀýA W-ÀýZ W-Àý0 W-Àý9 ¾Gõ%# ÀýÀU ²ý½æ ²ýNaæ àGõ%? ¾ýãê Êý²ý4î Àý³ý7ð üGõ%? ²ýNaæ @øÄô ÆýÃø Bû»þ JH÷ j ð ^H÷ V ð ÆýW-Æý a5,F a÷ $ È"  H÷ ¬þè&  þH> a÷ þ ÆýÀF âöÇP 0I÷ 6I÷ ~ >Iõ% a÷ à ²ýNa& ÆýÄv I÷ * ¨Iõ% a÷ v ²ýNa& ÆýĤ a÷ è a÷ @ ðI÷ n Äý«® ÈýNa÷ P Jõ%Y ÈýNa÷ > Jõ%E ÈýNa÷ , 2Jõ%S Äýlº @Jõ% ÈýNa÷ a÷ ¸ ÀýNa÷ Ü J÷ Ì Àý÷ & Jõ%Y þ÷Á%ÿÿ ¸J÷ ü °ø¬ì Â÷Á%ÿÿ a÷ Ð ôJ÷ À Âö¼ø Tüèú ÎýNaæ ÌýNa7 bý°. <ùþ2 a÷ æ ²ýNa& a÷ Ð ¬ýNa& ÎýêýxT ÌýëýsV ÎýâýtX ÌýãýoZ ÿÿÈýW-Èý Èýj\ Èý@a0 ²ýìýå^ ¬ýäý°` ÚýÁd êýÞýuaÞýcj âýàýuaàý]l ÚýNa Ù %n êK÷ Ê a÷ Ì øK÷ ¼ ¾õ¼z Pûç| L÷ ÌýÄý ²ýNa& ÿÿÈýW-Èý? Èýc² ÈýÌýG´ tõ»¶ Æýĸ &÷»¼ a÷ Z  ó!À rL÷ B ÄýÌýïÒ ªúèÖ ªLõ% a÷ t ²ýNa& ÄýÆò a÷ æ rú@ô a÷ D ìL÷ r ÿÿÐýÜú üL÷ R ÈýNa÷ T ÆýNa÷ J M÷ : Mu-ÆýÈý W-ÆýT 0Mõ%L FMõ%L \Mõ%ÿÿÐý ØýNaæ ÖýNa7 þÔý} Òýt ÆMÁ%ÿÿ{ ÌMߥA vùÝ* ¬ûNa& ¬ûNaæ ÿÿÆýW-Æýÿ ÆýÊ2 Æý@a𥠬ûÁE `Nõ% ´÷d< Ôýä> àô®H ¦N÷ Äþ°P a÷ ø ´þ°X ~øèZ ÌýÄý³t ÿÿÈýW-Èý? Èý v îNߥA ÈýÌý ¾ò¼| Æý-~ a÷ ¨ týÿÀEøÿÀe0 ÈýÀEøÿÀe0 a÷ b bO÷ R ÿÿÀýc® ¾ý*° ÿÿÈýW-Èý Èýg´ Èý@að ÿÿÆýW-Æý2 ÆýÞº ÿÿÈýW-Èý Èýñ¾ Èý@aA ÆýWp ÈýB`2¬¸ýúý$ ÈýC`3¬¸ýúý ÿÿÄýW-Äý ÄýâÄ Äý@aA ÆýWp ÄýB`° úý¸ý`Æ ÆýÀýSÊ JPõ%ÿÿÀý ,ó±Ø ZPõ% ÿÿÀý`à úþ®ä .ñ»æ P÷ $ ¼öèì øÿ÷ àÈ Î àÈ ÷ àÈ 1ð àÈ Î àÈ Î ÷ ²þ À~Á<À À~Áÿÿÿÿÿÿ DIRECTORY BLOCK READ ERROR FILES CORRUPT > ¨ NO FILE ?! NAME START CODE BLOCKS FILE? FILE? NO FILE AUTOMATIC? FILE CORRUPT CORRUPT OLD FILE: NEW FILE: RENAME FAILS FILE? IN FILE? NO FILE T FAILS ON USER FILES8 CPUT¨À Æeäÿµ <@ߥA êÿW-êÿè X@õ% ðÿNa äÿ÷ ² a÷ ø Ê@÷ Ô Î@ߥM â@ߥH ö@ߥT 0à//DOC DEST=LP23,USER=ERCM08 $$$$$$ $PON $POFF $PONOFF $MAPVIRT $MAPABS $GETID $ALARM $LINKIN $MAPHWR SUPRUN $RUN DQS12Z DQS11E DUP11Z DUP11E READXY READX READFNAM SIN00Y INITIALI %CONSTINTEGER NL = 10 %PERMINTEGERFNSPEC CPU TIME %PERMROUTINESPEC PROMPT(%STRING(63) S) %PERMROUTINESPEC SELECTOUTPUT(%INTEGER N) %PERMROUTINESPEC SELECTINPUT(%INTEGER N) %PERMINTEGERFNSPEC MATCH(%STRINGNAME S, %STRING(255) T) %PERMSTRING(255)%FNSPEC FROMSTRING(%STRINGNAME S, %INTEGER L, U) %PERMBYTEINTEGERMAPSPEC CHARNO(%STRINGNAME S, %INTEGER N) %PERMSTRING(1)%FNSPEC TOSTRING(%INTEGER N) %PERMBYTEINTEGERMAPSPEC LENGTH(%STRINGNAME S) %PERMROUTINESPEC READ(%INTEGERNAME J) %PERMROUTINESPEC SKIPSYMBOL %PERMROUTINESPEC READSYMBOL(%INTEGERNAME N) %PERMINTEGERFNSPEC NEXTSYMBOL %PERMROUTINESPEC SPACES(%INTEGER N) %PERMROUTINESPEC SPACE %PERMROUTINESPEC NEWLINES(%INTEGER N) %PERMROUTINESPEC NEWLINE %PERMROUTINESPEC PRINTSTRING(%STRING(255) S) %PERMROUTINESPEC PRINTSYMBOL(%INTEGER N) %PERMROUTINESPEC WRITE(%INTEGER N,M) %PERMROUTINESPEC CLOSEINPUT %PERMROUTINESPEC CLOSEOUTPUT %RECORDFORMAT DZXCF(%INTEGER X) %PERMROUTINESPEC XPON(%RECORD (DZXCF) %NAME P) %PERMROUTINESPEC XPOFF(%RECORD (DZXCF) %NAME P) %PERMROUTINESPEC XPONOFF(%RECORD (DZXCF) %NAME P) %PERMROUTINESPEC XMAP VIRT(%INTEGER ID, HIS SEG, MY SEG) %SYSTEMROUTINESPEC PON(%RECORD (DZXCF) %NAME P) %SYSTEMROUTINESPEC POFF(%RECORD (DZXCF) %NAME P) %SYSTEMROUTINESPEC PONOFF(%RECORD (DZXCF) %NAME P) %SYSTEMROUTINESPEC MAP VIRT(%INTEGER ID, HIS SEG, MY SEG) %SYSTEMINTEGERFNSPEC MAP ABS(%INTEGER VAD, LEN, ID) %RECORDFORMAT ZX(%INTEGER X) %PERMROUTINESPEC PUSH(%RECORD (ZX) %NAME Q,E) %PERMRECORD (ZX) %MAPSPEC POP(%RECORD (ZX) %NAME Q) %PERMINTEGERFNSPEC SWAB(%INTEGER X) %LIST %ENDOFPERM DELE¦À ÆeÞÿµ àöÿ¨ öÿð¥ òÿW-òÿ òÿ@aA òÿAmöÿp àçÿr Þÿêÿuaêÿ° æÿNa a÷ 2 øÿ÷ " àÈ Î ÀHÀ<À ÀHÀÿÿÿÿÿÿ FAILED NEWL Æeöÿµ öÿW-öÿ øÿ÷ B À@À<À À@Àÿÿÿÿÿÿ PAS2JÌ ÆeHßµ LßJßuaJßD Æeþÿ ÷ ¬^O a÷ Ê^f ÷ Þ^ a÷ ´^ ÷ Æ^÷ ÷ Ô]¿ ÆeþÿK ¬@1, Æeþÿù, è@ð% ÆeúÿÁ6 üÿp: A÷ â]u úÿå> AÁ%0 .A÷ ²]wB ]Áå0 Amúÿu üÿyD ÆeòÿxJ ZAõ% øÿNa÷ üÿüT ôÿõ% úÿu-úÿòÿ! ¬A÷ D]Aíôÿu öÿ÷ (];Z ÷ Ô\u üÿ$\ âAumöÿüÿþ^ ÆeþÿÆf Àþdj Æeøÿ ÁEÀÿu üÿßt ºànx zþ$z üÿW-üÿ ÀEÀÿ5 úÿôe B5-& ÷ z\< ÷ p\@ Æeþÿñ ÷ >\f ÷ 6\& ÷ .\ ¸àR  Úýd¢ Æeþÿ²¤ ÷ ø[f ÿ÷ ì[n¨ ¸àxª Æeþÿv® ÷ Â[f ÷ f[ Æeþÿ<¸ ÷ L[ ÷ ,[ Üü³À Æeþÿ ôþ~Ä ÆeüÿâÈ üÿW-üÿ ÷ TZ Æeþÿ¥Ð ®ÿ¡Ô ÷ ¬Z ÷ èZf ¨ýåØ Æeþÿ_Þ ÷ pZ ÷ ¬Zf lýÐâ ÷ NZ þû³æ Æeüÿ%è ÜDõ% òDõ% ÷ :Y üÿ#þ @Eõ% ÷ òX ºàJäç üÿNä ÷ ÎX ÷ ¢X ºàJäë üÿNä/ ÷ ~X àEõEøÿ õEøÿ Æeüÿ 6Fõ% PFõ% fFõ% üÿ£6 ÷ ¸W ºàJäë8 LäÇ: üÿNäD< ÊFõEøÿ 6û²F ÆeþÿÁJ (Gõ% >Gõ% ÷ ôV ºàJäëZ ÷ ÐV GõEøÿ õEøÿ Æeüÿîl °àüÿõE üÿ°àðå Æeþÿ¼t Æeþÿ¡| Æeöÿ Æeþÿª Àeæÿ@- zHñ% äúÿ0 :÷e¤ üÿ*¦ øÿu-øÿöÿ òþ¡² ¾öÜ´ |÷d¶ ÆeöÿV¸ ºàøÿ üÿW-üÿ üÿ¦Â ÷ ¬T `Áejäu ¶I1,¼à `÷¹È ÆIq-øÿ üÿúÿu >÷¯Ð ìIô% Æeþÿ¥Ú ®ödÞ Æeüÿ üÿW-üÿ üÿýä ´õÀæ ÆeüÿCì |Jõ% Vö5ð ÷ ÂS üÿW-üÿ jäÂE ÿÿräqö ÷ nS ÿÿrä¢ú èõeü Æeúÿ½þ üÿW-üÿ ÷ &S `Áejäu Æeüÿ4B dàð% üÿvJ üÿ¾^ üÿbâËb Æeþÿ­f dàð% Öÿ?j bâgx Jî%z ÆeüÿI| dàð% &èÓ~ Æeþÿä Æeþÿ bâØÿC dâÖÿ@ ÆeþÿX bâØÿ Æeþÿ. bâØÿØ  dàB¢ ºçd¤ Æeúÿó¦ Áeæÿ ¸à3¬ æÿHß0`Hßv° JßÁE ÷ \EOº a÷ dEϾ ÷ 4E JßÂE ÿÿüÿu-üÿúÿ LßÂE ¦æ³Î Æeúÿ-Ð Áeæÿ ÷ ÆDåÖ Jß}Ø üÿwÜ úÿNa÷ ¸DÈÞ JßÁE úÿLßsà bâHß fædè Æeøÿ ê úåvî =,´à æåqð üÿ{ò øÿÒö øÿÉú ÆeöÿÙ aGl. °[Áe ¾þE Ö[ð% Â`ò% Ìéæ6 ¦å¾> êíTB LêTH æ\È% öÿµZ ¬éTn 2ýOp héT¤ îüPª Zí¤Æ ÜéëÈ øÿÁe Æeüÿ¤Ö PèÇÚ üÿuÜ .èTä Æeìÿfæ ®á÷ê Àeìÿ ìÿNa7 Áeìÿ há²ô Æeôÿïö öÿNa7 öÿôÿ ÆeðÿC `÷ Ø>u ôÿë* `õ% ôÿ5. Þåí0 Ìå·4 \ç+6 p`õ%  `õ% òÿ$F òÿÜJ `á¿L ôÿu-ôÿðÿ ôÿªP :åþR è`õ% aõ% ´íJ` @aõ% Øý§j jaÈ%  äpp öÿNa7 ÆüÇz 4ån| èaõ% ôÿ÷ R<@ rçb  Æeúÿbª úÿÏ® üÿW-üÿ üÿ0° úÿ@- Æeòÿ"º ôÿõ% òÿ¼Æ fëúÖ ZãTÚ öÿNa7 ¶úÉâ ¤âTø ÆeÞÿäú âÿõ% àÿÞÿ5 âÿu-âÿÞÿ Òdõ% ÒáT$ ¦é{, àÿ´6 ÷ â8 `1,ºàrä þÞg8 àÿÜ< âÿW-âÿ âÿÐ> àÿ×D àÿôÿ5 ìÿ F ðÿ4J ìÿNa7 Áeìÿ ÁEøÿÁeÀ ÀáÐT äÿNa7 xã Z RàT\ ÆeÒÿ &àÀv Âfð% ìÿy| Ôfõ% êfõ% ¦gÁ% æÿʤ èÿ,¦ ÚÿNa7 4Þc¬ þÝú¶ òÙ]¸ âÿÁEøÿf ÷ r6Áe ÔÙä¼ Ôÿu-ÔÿÒÿ! ÔÿÅÄ  ÝcÈ îÛÁÌ ÷ z5 pä®Ö öÿNa7 ¤Ýeê ¸àÔî ìÿöú öÿNa7 öÿNa7 Úñ$ äÙé. h×a0 ¸àÍ6 öÿNa7 DðK> ~Ùß@ òÖÏB ,kõ% üÿîD ÊÜëF $ï H $Ù¶J XÛTP öÿNa7 ¤ïKT îÿNa7 ÂòÏV u-öÿîÿ ºØÝ^ ºànàp øÿhàp úÿlàp öÿjà ®Ý÷p úÿÓ| öÿNa7 ¼lñ¥ îÿNa7 W=Ôÿ Øÿð% ØÿÖÿu ìÿâ¾ AíÔÿu öÿNa7 *nõ% ìÿûÌ À×ñÎ ºànà´Ö øÿhàp öÿjàp úÿlà BØTÚ ºnò% ÂnõU Pðþæ öÿNa7 îÿNa7 xïSê ÚÚïò ºànàûö øÿhàp öÿjàp úÿlàÆø AíÔÿu ¾oð% Æoõ% Ðìÿñ öÿNa7 PÚS$ löª& ºÖT( È%ÿÿ Àìÿá4 öÿNa7 ¼êø8 ÔÿÝ< XÕÚB Ðpõ%ÿ :ÑáH øÕUN òÔ`Z HÓÔ\ ªØïb ºànàÉf øÿhàp öÿjàp úÿlà Øÿ=n |í©r ¶qÈ% RÔ"x $ÐS~ öÿNa7 ,ì©° L×U² hóª´ ¶ÓT¸ 2sõ% ìÿîÀ öÿNa7 ÌçöÄ pÖïÊ ºànà öÿjàp øÿhàp úÿlàXÐ Zë©Ô ìÒUÞ ZÖVà 2Ö+ä VÒTð RÒTö Æeþÿbú ¼t}m Æt}í Ðt}] ÷ B)} ÷ *)} Æeúÿ ÷ :)Á%E ÖuW< üÿ}4 æÿHß0`H߸> ¾ÐTH üÿ1L üÿæ\ üÿß` ú×Bn &Ë?r äÏT~ Æeèÿ Àeèÿ èÿNa7 Âeèÿà ØÿÁe ºwõ% `âúÿM¤ úÿò% xȲ® úÿ»´ üÿº¸ Øÿõ, Øÿó% úå+Ê ¦û´Ð "æûÔ ÖÿËE <Dzæ Æeúÿ£è vyðe dàiò ÷ Â$ `Áe<çu üÿ®ö üÿñ¥ Øÿ×< "zõ% ºà¼àÓ Æeìÿ¸ ÿÿìÿõ ìÿNa7 Æeüÿ` fÞR" üÿþ$ jÿ¿(  Å³, Æeúÿ êÿüÿÞ4 ÷ .# `Áeºàu 4{I- RÅ2: Æeþÿ¥B ¦ÄÎD ÷ Ð" `Áeºàw ÆeüÿaJ nà9N üÿCP Àeæÿ@ üÿpT ºà¼à ¬â^Z ¬â]` àÇ#f ÿÿøÿÎh q,ºàfà "ÑÂj ÆÑ®l ºàâÿÓn fà`p Æeøÿjt Æ|õ%0uøÿ øÿÎå0u7 ºà¼à Æeúÿ úÿA  ³,ºàâÿ ÂeæÿB úÿr¬ üÿjÄ üÿ3Æ 8~õ% ºàfàìÌ Æeþÿ¤Ð *ÂbÒ ~~×0 þÁ³Ú ÆeèÿrÜ và`ä Ä~Á% ÷ & Á%= 0úÿð% úÿ6ð òÿNa7 êÿNa7 &ߨô 4Å ö q,ºà¼à úÿð% òÿNa7 0,ºànà4 p-òÿjà p-öÿlà p-ôÿhà `Áejäu ,là 0,ºàpà òÿèÿB µ`èÿý èÿW/èÿ èÿP* `1,¼àrä6 âê. ºà¯2 ¨Êµ4 ºànàA òÿjà0 àÈóH b¿²J ÆeúÿÁL và¶P º¾ÞR úÿ_T üÿúÿ¦ tàA^ æÿHß0`HßÙb ºÄ(t W=üÿ XøÝz W=úÿ tà2~ Æeìÿz þÛj¤ øúÞ¨ ìÿã° vàÍ´ öÿNa7 îÿNa7 ºÚѺ ÀÀã¾ xÀäÈ ÄůРÆeøÿ¤Ô üÿ^Ø õ%0uüÿ üÿúÜ üÿ¹â ´àÁå üÿ·ê øÿ3ì J½+ð @½*ô 0½oø üÿÌú øÿÎe úÿÎe ºàæÿ& üÿ°àa ºà¼à| þº³" ÆeúÿY$ àÿñ%0u ÿÿúÿW-úÿ úÿ,2 1,üÿº \¾á6 ºàfà*: ÀEàÿ4 üÿùD ¾½éL °»²P ¨» T  »ÆV õEøÿ X»;f @»¬p ºàfàFv Æeþÿôz 0,ºàfà ~¹_| ÆeÖÿÛ ÁEðÿÁ ÃEðÿà ÁeÖÿà W=úÿ öÿJ  èÿNaæ ÖÿNa7 ÀÞ¯¢ Áeèÿà èÿNaæ ÖÿNa7 Ú¾T° Æeîÿæ² îÿLº ôÿG¼ dàÏÀ Øÿüÿj Öÿò% Öÿò% òÿ6È ÁEðÿÁ% Öÿò% ôÿNa7 hÒÍÔ $Á×Ö öÿEÚ Amôÿf Amøÿf ðÿ1Þ üÿð% dàßä Imòÿñ þÍÌð ÎEðÿ& ÖÿubòÿI Öÿñ% Øÿubòÿ Öÿñ% Øÿñ% Cmôÿæ Cmøÿæ üÿð% °Ì$& Dì;* ÁEðÿÁ ÌÕ, ubòÿ dàÿ4 âëC8 ìÓå< µdB Æeìÿ µçH ìÿ/J øÿÙL ìÿNa7 Áeìÿ д³R Æeàÿ?T \âêÿ2\ ^âèÿÎ^ `âæÿÈ` bâäÿÂb Lÿsf dà%h êÿñ% 1,´à àÿ³n ìÿ/r ðÿ¥t ìÿNa7 &Ú½v àÿöÿõ Áeìÿ Âeìÿà ìÿNa7 ËÞ~ ìÿNaf âÿÎå ÿÿøÿ5 °àèÿa àÿ5aàÿÖ Lààÿu `÷ z aGl< ²Òª ¼A¬ `८ ðÿ÷ ( îÿü¼ Èʧ¾ BçBmîÿ¦ `Áe.çu Þÿ°À LÊc Øÿð% ÖÿHb<Ê `Áe<çu ÞÿRì (ɼî ÖÉ|ô bâÖÿpø Öÿò% è°Âú PíXþ îÿÁ% àP." ª¯/2" ¯/:" ¨à÷ Ä °àBàÂe °àZ>" ¨à÷ ¨ îÿ*@" àÿð¥ Làs` °àºH" °àÃe LàCíîÿñ nü@T" XüîZ" ÔûIt" Ͳv" jä2x" lvàÁ ®úd¢" úʦ" zú¾¨" júXª" bâØÿø®" Øÿò% Ú´8°" ºà¼à0 `Áe<çu 6°'º" |಼" \¯ì¾" ¸àCàò |àÔÿ5 zàòÿõ òÿu-òÿÔÿ ÞÿÂl hùïÆ" `Áe<çu ÀÄÕÈ" Þÿ𥠰­yÎ" dº|Ð" |àmÔ" üæ×Ö" ¯ÃØ" ¸àCàò |àÒÿ5 zàòÿõ òÿu-òÿÒÿ 8±Xà" þ¬Ôä" ºàfàæ ,µ¿ì" øàð" ¨à÷ ò ôÿìò" òÿu-òÿÐÿ ôÿØø" ÷ b Á%, ÷ H 7 ôÿ,ú" ¤àôþ" ¤àôÿÊ ôÿÎÿ5 òÿu-òÿÎÿ0 ÒÂt $ ¨àÌÿ5 îÿu-îÿÌÿ ¤à$0$ uíôÿ Èöî6$ ôÿÊÿ5 òÿu-òÿÊÿY òÿÅ8$ `Áe<çp Là>:$ ö«®H$ ä«öJ$ «ìN$ àÁtR$ ¨àÈÿ5 îÿu-îÿÈÿ îÿÈb$ à,h$ àLj$ ¹¸l$ rªÊp$ bª5t$ ºàîÿ³v$ Tª+x$ ôÿ2|$ ìÿNa÷ ¨ à¬à· àÿñ%0u ´àÂeíÿ µ`îÿ6 àÿÁE Cíäÿà òÿ7¢$ òÿÒ¤$ ¦àAíòÿr äÿòÿu-òÿÆÿD òÿYª$ ¦àЬ$ `Áe<çu `Áe<çu Úÿ#®$ ÿÿôÿs¶$ ôÿƺ$ ôÿCmðÿCmîÿñ ôÿd¾$ ·±Æ$ äÿÄÿµ òÿu-òÿÄÿ5 `Áe<çu Üÿ`Ð$ ৠÖ$ îÿ8æ$ Öß&ê$ §0î$ §yò$ ºàfà;ô$ úÿ÷ 4 ôÿ1ü$ @§ôþ$ ºàöÿx ´àÎå öÿÎe ºàfà­ ºà¼àw ôEÿ¿, ôEÿï. ôE¿ÿ2 ôE÷ÿ4 ôEþÿ6 °àèÿL,& îêá0& \§¥2& öÿÎe §÷6& èÿ°à ªT<& ´àBD& òÿ*F& æÿHßuaHßÐH& øÿ°à5 bàÊJ& àIL& ¦àfN& ¾àW-¾à AaÁejä ä$Z& JäÒ\& Ràµ`& æÿ^àua^àÙb& Þ±×d& u-ºàfà ¶¥:h& 6¥õE ¸à©j& ¾àW-¾à@ ºàÀE? øÿ÷ Ô àut& àÈ Î ÷ 2ÿ !Ît&  L¤ÿÿÿÿÿÿ *ABORT AT LINE ûÿêÿ STRING TOO LONG BDUTàÇ ÆeÒûµ øÿ­, ÆeüÿIB $@÷ & üÿNa÷ >@õå0 üÿpL @]üÿ= b@÷ è Á% l@÷ Î rT ÆeüÿAZ àÿüÿ5`üÿý ÿÿüÿW/üÿÿ üÿ9b ðÿ#j àñÿsl öÿPn Ü@õ% öÿLp ôÿBr òÿ@t ðÿN` Ù ûv ÚÿÃ| a÷ x w 0A÷ Z ÿ Æeþÿv a÷ F `÷ ` a÷ 0 A÷ ® Æeþÿê¦ ÜAõ% nþÓ¬ Æeüÿ·° õeýÿüÿÁ´ üÿ÷ X ÁEøÿÁe0 .þÒº Æeôÿ öÿÈÄ úÿøÈ öÿôÿu øÿüÿõåýÿüÿu-üÿôÿ õeýÿüÿQÎ üÿ÷ Ø ÁEøÿÁe0 ÆeøÿõØ a÷ ¢ läÿf týÿÀ ÿÿüÿu-üÿøÿU üÿ×ì ÿÿúÿW-úÿ úÿóð @múÿÀ xþ4ò C÷ Ä C÷ ¾ ÿÿúÿW-úÿ úÿ­ú @múÿÀ @múÿÀ WtøÿÁE èýÆþ èC÷ ¢ ìÿNa÷ ¬ &D÷ n a÷ f :D÷ æÿNa÷ ì ^D÷ Ü èÿØûõ ÿÿäÿu-äÿØû êÿ@mäÿ& ÚýNa& âûàD Dõ%Y ÚýNaæ ¶Dõ%Y ¾D÷ Ì a÷ Î ÌD÷ ¾ lü8j a÷ À ÞÿNa7 (ûân ÿÿäÿW-äÿÿ äÿ¹p ÞÿÚý½r èÿÖûõ ÿÿäÿu-äÿÖû äÿ{v êÿ@mäÿ& ÚýNaæ FEõ%Y a÷ > ÞÿNa7 èÿÔûõ ÿÿäÿu-äÿÔû] êÿ@mäÿ& ÚýNa& ÿÿàÿW-àÿÿ @ap-ÞÿÚý8 ÜÿL  a÷  a÷ ¸ êÿ@mäÿ& ü÷ ^ ìûµ¬ a÷ z (F÷ b ,Fõ% Üÿa¶ >Fõ%Y ôú8Ö ÚýNa& a÷ ( rF÷ èÿNa7 Fõ%ÿ \û­ê ¦F÷ ä @aÀeÚý& a÷ Ø ÈF÷ æÿNa÷ ^ ðFõ%Y ÚýNaæ ÂûÓø G÷ : æÿNa÷ 8Gõ%Y ÚýNaæ a÷ < æÿNa÷ Ü rGõ%Y G÷ þ G÷ ð ÚûNaæ Æøµ& Fú÷ :ú÷ ÌG÷ ¾ a÷ Æ ÚG÷ p æÿNa÷ L Hõ%N °ü/6 ÞÿNa7 ð÷â: ÚûÀE ÞÿÁE a÷ Z @H÷ J a÷ P PH÷ ú æÿNa÷ Ö xHõ%Y èÿÒûõ ÿÿäÿu-äÿÒûC äÿÞN êÿ@mäÿ& ÚýNa& Ä÷àP êÿ@mäÿ& ÚûNaæ ÚûÀE ÞÿÁE ü@P5 Úû¯T ÚûNaæ |÷´V þHW=Úû ÚýNaæ ^÷þX øÿ÷ n àÈ Î àÉ Á% àÉ ñ àÉ Á "JC`è àÈ ÷ àÈ Î ÎEé` àÈ Î ÷ pþ ô d` ÀâÁ<À ÀâÁÿÿÿÿÿÿ HANDLER ERROR DISC= START BLOCK(OCTAL)= NUMBER OF BLOCKS(OCTAL)= LOOP? UNIT BLOCK TEST NUMBER= LIST? TEST COMPLETED OCTAL PATTERN= OCTAL PATTERN= COMPARE ERROR BLK IS AT BAD SECTOR-CANNOT PATCH WORD OFFSET= NEW BLOCK LIST? ARE YOU SURE?? MORE CHANGES?!ENSURE FORMAT ENABLE SWITCH IS ON)ENSURE WRITE PROTECT OVERRIDE SWICH IS ON ALTER STATUS? NEW STATUS(OCTAL)= STATUS ERROR! ARE YOU SURE? BINL^Ð ÆeúÿG, üÿNa÷ ¶ úÿNa÷ ¬ @]üÿ Æeüÿs: õeýÿüÿ üÿ÷ ÁEøÿÁe0 @÷ T Æeüÿ#J õeýÿüÿ-N üÿ÷ Ê ÁEøÿÁe0 Ô@÷ a÷ Ä Na÷ ð î@÷ à Na÷ ¦ :A÷ NAõ%Y nAõ% vAõå Na÷ L ¨A÷ & °Aõ%Y a÷ 8 &þ®Â öÿ-Ð ôÿuaôÿ*Ò ðÿNa Ù ¢Ô dB÷ øÿ÷ 0 àÈ Î àÈ Î ```<` ```ÿÿÿÿÿÿ REPORT? DONE CORE IMAGE WRITTENÜ N3,ZBA$1NL,21,0,2A$4CPUTIME,24,0,7G0G0$7PROMPT,7,0,7G0$8S,65,63,0G0$10SELECTOUTPUT,7,0,7G0$12N,17,0,0G0$14SELECTINPUT,7,0,7G0$15N,17,0,0G0$16MATCH,24,0,7G0$18S,66,0,0$19T,65,255,0G0$20FROMSTRING,72,255,7G0$21S,66,0,0$23L,17,0,0$24U,17,0,0G0$22CHARNO,41,0,7G0$24S,66,0,0$25N,17,0,0G0$25TOSTRING,72,1,7G0$27N,17,0,0G0$28LENGTH,41,0,7G0$29S,66,0,0G0$30READ,7,0,7G0$32J,18,0,0G0$34SKIPSYMBOL,7,0,7G0G0$37READSYMBOL,7,0,7G0$39N,18,0,0G0$41NEXTSYMBOL,24,0,7G0G0$43SPACES,7,0,7G0$45N,17,0,0G0$46SPACE,7,0,7G0G0$49NEWLIN $PON $POFF $PONOFF $MAPVIRT $MAPABS FREESEGL CPUQ FREEPARA PSECTA ONTMQ ÿÿÿÿÿÿ Æe ÿµ ¦ÿ¨ÿua¨ÿu ¨ÿ¤ÿõ ÔÿÊÿuaÊÿ5 Õÿ8¤ a÷ 2 ìÿ[ª ìÿ]° ìÿ_¶ a÷ ð u ìÿb¼ Àÿ¹Ô aGl> ß%üÿ Úÿöæ Øÿ¸ê Úÿæì °ÿ¨ò Ôÿ[ô ÊÿÎÿu ÎÿÒÿvö ìÿÀe æÿÂe Ðÿe" ÀEýÿ" Îÿ3" aÁe4 ÈÿÃ< æÿÀe Èÿ÷ R Æÿo` ÌÿXb u-ÆÿÈÿ( ìÿÀe Èÿvf Îÿµh ÌÿJ" ìÿÃe Èÿ÷ Ä W=ºÿ ìÿðÅ ìÿðÕ ìÿ=¤ ìÿÀe Èÿvª ºÿಠ@mìÿ5 àÿî´ ÄÿNa÷ Ä °ÿÜä °ÿÔÿ5 Õÿíæ ÔÿÎÿuaÎÿ1 `ý.ê BüIò °ÿ×ø aÁe¾ÿu ðÿ]ú ¾ÿÃü Äÿîÿy ôÿ5, pí¾ÿ @-îÿ ÄÿNaf ðÿ÷ Ú òÿ- ôÿ%" êûç* Üûç2 ¢ÿM: ¶ÿÒB ºÿCD  ÿÆF H-¼ÿ H-¶ÿ ¶ÿ?H pûäP ¬ÿÄR u-¼ÿ¶ÿ pm¼ÿ Hí¼ÿÀX ÜÿG\ àÿjb ²ÿÅf ªÿsh ®ÿ×t CmèÿÃe äÿ*n ®ÿWt `Áe àÿª  êÿØ® Cmêÿõ àÿ¥² A]²ÿu ªÿ߸ ¬ÿ ÿ Ì ìùçÐ ÜùçÚ Äùçà êÿíæ AmêÿÁe äÿaê ¦ÿàÿÂî ®ÿSò °ÿW-°ÿ7 °ÿúú °ÿÀeÜÿ ¨ÿÁg( ¦ÿèÿ^ `Áe °ÿÚ ®ÿÐ" ®ÿWt `Áe äÿ*$ ªÿÒ( ¦ÿî* túÿÀE ®ÿ×t ÀEÀÿ ¸ÿ%6 Jþâ< ðEüÿ 2ûåF ìÿðU &øæN ¸ÿeb ¸ÿ×t túÿÀE ¸ÿWt ¸ÿ×t ¨÷çj Æeþÿ=t aÃe4 ÆeîÿÈ~ WtøÿÁE ðÿB`µ bA-ðÿ ¤ Hmîÿ¦ ® Hb ¸ p-òÿ Hmîÿ úÿÞª Ü Hbh° øÿE¼ îÿ¿Â öÿTÆ ÆeþÿÉÐ øÿ÷ PARAMS STORE KSEGL SERMAP $RUN INITIALI $PON $POFF $PONOFF $MAPVIRT $MAPABS FREESEGL CPUQ PSECTA ONTMQ PARAMS STORE ÿÿÿÿÿÿ TT00 DISC DIRT LOAD CLI MOTH ÆeÔÿ×° Æeþÿ; Úÿ¢d ÿÿöÿW-öÿ öÿRf öÿWt Àô¨h fÿÊr ÖÿØÿuaØÿöz âÿf| öÿW-öÿ7 túÿÀE `WtúÿÁE `ðÿu ðÿäÿ% öÿW-öÿÞ¾ öÿ÷ p-äÿ ØÿÁeF Öÿüÿ ôÿíª túÿÂE `WtúÿÁE `×túÿÃE üÿÂe0 òÿAíòÿÁ âÿf´ üÿÀeP âÿWt ìÿ@íæÿÀ âÿ-¸ îÿç¾ ìÿBíæÿ W-îÿ! W-îÿ# Þÿ¥Ê âÿWt túÿÀE ÜÿÁå@ umÜÿðÿµ âÿ¿Ò æÿWt Þÿ6Ø Òü â îÿ­æ öý<è öÿðô öÿêô9ø ôÿÐú öÿ£þ öÿÚÿ túÿÂE Úÿ@íöÿ ÿÿöÿW-öÿ1 ÔÿÁe âÿöÿõ öÿW-öÿO öÿWt úÿ7" öÿW-öÿ Æeþÿï: vÿ§@ ×7tÿ ÆeþÿÿJ KSEGL SERMAP INITIALI FREEPARA CRSH¾Ø Æeþÿa ÿ÷ â tøÿÀE @löÿB tøÿÂE Æeúÿ~ üÿu-üÿúÿ ÷ Vÿñ ÷ Nÿ? òÿW-òÿ aÁe- ðÿ\þðe ðÿõe \þNaæ îÿ÷ ¬þk þÀeþÿ& ÷ ~þB øÿ÷ Àÿÿÿÿÿÿ ¢À¨À®À´ÀºÀ<À $RUN $PON $POFF $PONOFF $MAPVIRT $MAPABST ®%À%Ö%ú% À¢À®% À¨ÀÀ% À®ÀÖ% À´Àú% COMMÊ ÆeÜÿµ àÿÞÿuaÞÿõ ðÿîÿuaîÿuT Ù SV ðÿÛZ ðÿNa Ù Â\ ñÿÀE èÿt^ N@õ§ àðÿ9 f@4-6 n@4-4 àñÿ;n îÿÀe< öÿ.p ðÿNa Ù :t êÿÆ| Ù Ë~ ôÿÀE ÞÿÀe öÿæÿM æÿÜÿõ ÿÿìÿu-ìÿÜÿ- ìÿAmàÿp èÿðÿõ òÿæ  ðÿNa Ù Q¢ ¶þz¤ øÿ÷ P ÀLÂ@À ÀLÂÿÿÿÿÿÿ EDIT²Ä Æeȱµ ÆeþÿRÌ N`÷ b Æeþÿ=ä ¢@ð% ª@ð%` îÿ´ú Î@ô% îÿÂåX ,îÿ0 ,îÿ9 lîÿt äþï$ ÆeþÿH( ô%ÿÿ: ÄþÂ2 ¤Að%( ¤þp6 Æeþÿ ÆeüÿÞF êA4-B @`ð¥ 4B4-8 @÷ ÿÿ|ôW-|ôý zôNa÷ Ö |ô@mòýH ÿÿlôW-lô2 Aañ¥ ¨@÷ L °@÷ | tô÷ t rô÷ l rôÀe Ô@õå nôjôu ò@÷ jôÂE ,Auíjôvô\ |ôNa÷ ø a÷ þ vô÷ xô÷ ø nA÷ h rA@m vônôÐ A÷ ¢ ôÀe Áeôýf AaÁe AaW¼ \ô÷ t AaÁe \ôÀeôý& hôþý] ÿÿ|ôW-|ôý |ô@mòý øÿNa÷ ( (C÷ øÿNa÷ ú öÿNa÷ ð øÿÁE õeýÿøÿf øÿ÷ t ÁEøÿÁe0 C÷ ¤ øÿ÷ 2 àÈ Î ÀVÀ2À ÀVÀÿÿÿÿÿÿ INSERT FILE? ILLEGAL LOAD PT: LOAD ÆeÖÿµ Æeþÿ ìÿêÿ0`êÿ(R àñÿwX öÿÅZ Ù Ã\ Æeøÿ5f øÿçj @÷ Ì ¶@÷ ² úÿÉp ¾@Á%0 øÿMt è@÷ p ÆeüÿÍ A÷ b .A÷ * ðÿîÿuaîÿÑ èÿNa÷ èÿ÷ 4 XAõ% èÿO¦ a÷ j Öÿm´ èÿNa÷ ÎAõ%; àÿNa÷ ø ÞÿNa÷ î ÚÿNa÷ ä ØÿNa÷ Ú ,BÁE HB÷ øÿ÷ àÉ Á% àÉ ñ àÉ Á àÈ Î ÀZÁ<À ÀZÁÿÿÿÿÿÿ SYSTEM LOADED LINKÖÔ ÆeÌÒµ Æeüÿ @÷ 2 õeýÿüÿ¯æ üÿ÷ $ ÁEøÿÁe0 Æeüÿ_ò üÿNa÷ Ä Æeüÿ; ÂÿWt üÿÀE Æeþÿ Æeþÿï tøÿÀE ÆeúÿÅ$ úÿv( üÿO, Aõ%ÿ üÿ1. AíüÿÁ Æeøÿ`> pA÷ È A÷ ® ÒþuJ üÿ>L ´A÷ t ÜÔÖÿuaÖÿºX ÚÔØÔuaØÔu ØÔÖÔ ÿÿìÿW-ìÿ $àÐÔ ÿÿìÿW-ìÿ ìÿAmÐÔp ðÿvj a÷ ² ÿÿìÿW-ìÿ ìÿ?r êÿNa÷ Ú ^Bõ% a÷ v ~B÷ º B÷   ìÿNa÷ a÷ > æBWp òB÷ l Øÿ§  $àÐÔö¦ a÷ D ÿÿìÿW-ìÿ RC÷ Àäÿ*À ÜÔNaf ú ´Â ¦C÷ Î Æeþÿ7Î ØÔÀeÜÔ ÚÔÔÔýÔ BlØÿ³ äÿ@làÿ3 |üËÜ Æeþÿ÷ ® $D÷ P Æeúÿ üÿ?ò ÿÿüÿu-üÿúÿ üÿ¯ö aÁeh Ìûõø aÁeh Æeúÿ ÒDñ¥ lÖÿu Æeâÿ^0 úÿüÿuaüÿ[J êÿÐL æÿúN üÿÀeÜÔ úÿøÿ èÿyX ÐEW0 ÚE0m0 ÂlÖÿJ u-èÿêÿ èÿêÿ aÁeh ÿ@à& hFõ% ìÿ÷ ê ìÿZz èÿÂE ÁläÿÀ ðÿÀ`B üÿÀeÜÔ úÿÒÔ² ÒFW=èÿ ÂlØÿ Áläÿp èÿÀE aÁeh ÷ ô ZGõe 2þ§® ÷ ô ú° Öøñ´ Æeúÿ:º üÿä @-üÿ aÁeh úÿ§Æ ÷ ° æ a÷ ¦ üÿ,Ð ¦øËÔ ÆeâÿüÚ ÌÒäÿ 5`äÿ°ü ìÿâÿ5`âÿý ÿÿâÿW/âÿ ìÿAa à÷ÿx æÿúÿuaúÿz öÿNa àïÿY îÿNa Æeúÿ) `÷ ~ òÿù$ lØÿp làÿÃe ÚÿA, àÁàp Üÿä. IÁEÿ "IÁ% a÷ 6 lâÿÂe? äÿG> üÿ*F a÷ ò a÷ à @läÿ& tö@L I÷ À ð%ø*àÿ Fú&P `÷ R ôÿo\ öIÁ% èÿ{` äù*b öÿ?h èÿAmüÿf zözl Xöor Æeøÿ ºJ÷ , àüÿè ìÿúÿ µ`úÿý ÿÿúÿW/úÿ ìÿAmüÿB øÿ÷ Æeôÿ æÿ.¨ @,æÿp aÁeh ÿÿúÿW-úÿ) úÿs° `ÁeÌÒu øÿ}² æø¨Â èK÷ v °þUÌ âÿØÿ Øÿ3Ò lüæØ HùÏÚ æÿÇä Æeòÿ làÿu øÿpô läÿÁ% ìäÿu àAíøÿWtóÿÁEøÿu tóÿÂEøÿµ òÿVø a÷ Ô nó3þ a÷ À \ó÷ ¨ âÿÎe öÿNa7 îLu-òÿöÿ Mu-òÿöÿ öÿNa7 8Mu-òÿüÿ öÿNa7 äÿAmøÿÁå àòË* Æeúÿ öÿ¶6 ôò(: ÿÿüÿu-üÿúÿ üÿÐ< üÿ@m ¤ò¶> ,óíH Æeþÿ öÿ%R nòdT @ò)V Æeúÿ9` ôÿúÿ 5`úÿ= ôÿúÿýeúÿúÿ@ úÿ^d üÿNa÷ üÿ÷ Ì pmüÿöÿ¹j ÚN÷ N pññv ÆeüÿË| üÿW-üÿ/ Æeðÿ¬ ÌÒúÿ 5`úÿB úÿüÿø ,Oô%ÿÿ: ìÿðÿ 5`ðÿ= ðÿW/ðÿÄ àóÿ8¦ ôÿö¨ òÿNa Ù O® àóÿî¸ ôÿÞº öÿÀ¼ øÿK¾ òÿNa VðñÄ øÿ÷ t ÂdÆä¼! ÎEîÆ àÈ Î àÈ ÷ àÈ Î ÷ |þ  X¦<   X¦ÿÿÿÿÿÿ NAME? STACK: SUPERVIOR CODE BASE? STREAMS: PROG: *DOUBLE DEF? XDEF: XREF: DDEF: DREF: UNDEFINED! LIB000 STACK OVERFLOW? CODE: GLA: GLA BUFFER OVERFLOW FILE FORMAT ERROR FILE: TOTALS: CODE = GLA/STACK = VIRTUAL MEMORY TOO SMALL NO OUTPUT FILE READ DISC FAILS WRITE DISC FAILS !************** !* BVT1S * !*DA:09.APR.80* !************** %CONTROL K'100001'; ! 'SYSTEM' PROGRAM (FAST ROUTINE ENTRY/EXIT) %PERMROUTINESPEC SVC(%INTEGER EP, P1, P2) %BEGIN %SYSTEMROUTINESPEC MAPHWR(%INTEGER SEGS) %SYSTEMROUTINESPEC LINKIN(%INTEGER SER) %RECORDFORMAT PF(%BYTEINTEGER SERVICE, REPLY, %C %INTEGER A1, A2, A3) %RECORDFORMAT TTF(%INTEGER KBS, KBD, TTS, TTD) %RECORDFORMAT BUFF(%INTEGER PT, LAST, %BYTEINTEGERARRAYNAME B) %RECORDFORMAT BUFFX(%INTEGER PT, LAST, ARRAYPT) %CONSTRECORD (BUFFX) %NAME NULL = 0 %CONSTINTEGER RUBOUT=K'177' %CONSTINTEGER CAN=24 %CONSTINTEGER CR=13 %CONSTINTEGER BELL=7 %CONSTINTEGER ESC=K'33' %CONSTINTEGER SI=K'17'; ! SHIFT INTO LOWER MODE (CTRL O) %CONSTINTEGER SO=K'16'; ! SHIFT OUT (CTRL N) %CONSTINTEGER DLE=K'20'; ! (CTRL P) %CONSTINTEGER EOT = K'04'; ! EOF (CTRL D) %CONSTINTEGER DC1=K'21'; ! CANCEL OUTPUT (CTRL Q) %CONSTINTEGER TA IMPSLÁ ÆeÆÿµ àöÿ¨t òÿix òÿNaæ òÿ@að òÿJz òÿ@aA ÿÂe0 ÆÿÑ| òÿ@að Çÿç~ j@õe òÿNa@ öÿÀe òÿNaæ &àôÿ ôÿð¥ òÿNaÀe òÿNaæ òÿNaæ òÿ@að òÿNaæ $àöÿ òÿT¢ òÿNaæ òÿ@að òÿW¦ òÿNaæ òÿNaæ òÿ@að òÿ7® òÿNaæ àôÿ ² òÿ@að òÿ߶ òÿNaæ òÿ@að òÿ¸¼ òÿ@aA ÿÂe0 Æÿ,¾ òÿ@að ÇÿAÀ òÿV òÿNa@ öÿÀe 0B÷ Æeþÿ òÿÆÌ àçÿ{Î -àéÿZÐ Æÿêÿ0`êÿÀ 1àÀE ìÿ¼Ò æÿN` Ù mÔ æÿcÖ ÒB÷ ì ÆeøÿÝæ ÿÿüÿu-üÿøÿ üÿ´ì üÿ@m úÿÁ% øÿ÷ ~ PEEKøÀ Æeèÿµ Æeüÿn üÿNa÷ â a÷ â a÷ Ê b@÷ n@ñ% ìÿb. öÿí< ¤@Á% öÿíB a÷ P êÿôJ ôÿýN â@Wt Amöÿu òÿßP î@Á%@ êÿÀX þþWt Amèÿu ðÿÓ\ a÷ ð öÿW-öÿ FA÷ Ä RAÁ% a÷ ¦ ÿÿêÿIv öÿ÷ ° òÿY| øÿ÷ J ,BÈ Î ÷ hÿ Àÿÿÿÿÿÿ LENGTH = BINARY FILE NON-DEIMOS PROGRAM FILE DEIMOS Program, Task Name: Text File àÈ Î ÷ tÿ Àÿÿÿÿÿÿ ÀPASS1YPASS2Y PASS3YLINK ,PRIMS(0)/OY, .TT OY/O2,OY O2,OY/OY F A U L T ~ B = 9; ! TAB (IMPLEMENTED AS 3 SPACES) %OWNRECORD (TTF) %NAME TT=K'137560' %OWNINTEGER KBINT=-2 %OWNINTEGER TTINT=-1 %OWNINTEGER TTSER=1; ! ??? %OWNINTEGER CLIID=2 %OWNINTEGER TT STATUS=0, UPPER=32, TT IDLE=0, E PT=0, EFPT=0 %RECORD (PF) P2 %OWNRECORD (PF) %NAME P %CONSTINTEGER NO OF SPECS = 6 %OWNBYTEINTEGERARRAY SPECS(0:NO OF SPECS) = RUBOUT, CAN, ESC, CR, SI, SO, TAB %INTEGER CHAR, I, IN MODE, E LAST %INTEGER OUTID, SEG, CLI FLAG, CID, CADR %OWNRECORD (BUFF) OUT, INH %RECORD (BUFFX) %NAME BUFX, INX %RECORDFORMAT HF(%RECORD (HF) %NAME H, %RECORD (PF) P) %RECORDFORMAT QF(%RECORD (HF) %NAME H) %OWNRECORD (HF) %ARRAY HA(0:15) %OWNRECORD (HF) %NAME H %OWNRECORD (QF) HI, HO %OWNRECORD (QF) FREE %OWNINTEGER FIRST, LAST, CURR %OWNBYTEINTEGERARRAY BUFFER(0:255) %OWNBYTEINTEGERARRAY ECHOB(1:40) %SWITCH INS(0:NO OF SPECS), STATE(0:7) %ROUTINESPEC DRIVE TT(%INTEGER CHAR) %ROUTINESPEC ECHO(%INTEGER X) %ROUTINESPEC ECHO BELL %ROUTINESPEC TRANSFER INPUT %ROUTINESPEC OUTPUT REPLY %ROUTINESPEC PLANT(%INTEGER N) !! %CONSTBYTEINTEGERARRAY CANM(0:3)= 3, '#', CR, NL !! %CONSTBYTEINTEGERARRAY CLIM(0:3)= 3, '<', 8, '>' %CONSTINTEGER MYSEG=4, MSA=K'100000' %CONSTINTEGER MYISEG=3, MISA=K'060000' MAPHWR(5); ! MAP REGS TO SEG 5 LINKIN(TTSER); LINKIN(KBINT); LINKIN(TTINT) TT_KBS=K'100' BUFX==OUT INX= RUN ÆeÆÿµ àöÿ¨L òÿiP òÿNa@ öÿÀe H@÷ ô Æeþÿ òÿÇ\ àçÿi^ Æÿêÿ0`êÿð Ù ­b Æeøÿ ÿÿüÿu-üÿøÿ üÿðn üÿ@m úÿÁ% øÿ÷ 6 À@À<À À@Àÿÿÿÿÿÿ PAS1 Æe`âµ øÿ8N ÆeúÿÓØ üÿu-üÿúÿ ÷ v=ñ ÷ Ö<,æ Æeþÿ5î @ô%G Æeüÿûø Úÿ?þ ÷ Ü;@ @àÀe0 Æeþÿ´ Æeöÿ Æeøÿ§ üÿW-üÿ ÷ v;u ÷ L;@ øÿ÷ <à óÿúÿ nìüÿ3* üÿÂE øÿ÷ $;ÁEüÿ@ AíøÿÁ üÿu-üÿöÿ Æeþÿa2 ÷ v; ÆeôÿA> ÷ ¼:ÁD îë®F îëüÿèH ªB5,ðëüÿ üÿ[J xâáL bâAmüÿÁe øÿ3N ÷ ö:÷ ðëöÿõ ðëôÿ5`ôÿ= ôÿu/ôÿöÿ ôÿhV p-üÿðë ÷ ´:/X bCð% ÷ T:¨b ÷ t:md ÷ d:÷ ø9Æh C÷ ò9÷l ÷ Ì9æ a÷ :ìp aGlø a÷ ü9w a÷ î9w a÷ à9w a÷ Ò9w a÷ Ä9¶ a÷ ¬9r a÷  9l a÷ |9Z a÷ p9T a÷ d9N a÷ X9H a÷ L9B a÷ @97 a÷ 491 a÷ (9+ ÷ :9 ÷ (9 a÷ ô8 a÷ è8 a÷ Ü8 a÷ Ð8Oª a÷ Æ8H¬ E÷ ¶8º® ÷ 28&² ¬ýn´ ,ý"¶ 0lðëbâ& bâÎe ÷ *8d¸ êë-º PEõ% ÷ V7 ÆeüÿN îú]Æ üÿW-üÿ üÿ~È 7ÁeA ÆeðÿèÒ øÿËà òÿõ% òÿÚâ úÿu-úÿðÿ# úÿÛä Aíòÿu ÷ 86u üÿÁè ªFumöÿüÿ1ê üù4î Æeæÿ nâèÿH pânâï râæÿ5 Æeþÿ; Æeöÿ Æeôÿ `Áenìu øÿ 2 vGW2 ÃEðÿÃ% ÷ "5} øÿÔ: ~ù < ÃEðÿÃ% ÃEðÿÃ% ÷ Ê4} øÿÁF àëðE àëíH îëìë¤R lâüÿñX úÿI\ úÿH` ÷ Ú4uPúÿvd ÀEðÿÀ% ÁEðÿÁ% úÿ²j äë$l ÁEðÿÁ% hânì îÿnì t lâîÿSv lâõU úÿw| úÿ:~ ÿÀ%P ðÿnì° (IõU ÀEðÿÀ% lâBíüÿµ ÁEøÿp lâê  ìpâÂå B]úÿf ôÿ÷ @3@ ôÿA]öÿp nìÈ¢ lâüë² lâpâ² Æeþÿ ÷ 03Á% bâ©´ ì÷#¸ ÷ v3;º ÷ ^3ÿ¼ J÷ ö2÷¾ `÷ Ä2«Ê ì÷ (37Î <öåÒ æJð% öëÔÖ öJð%% öëÃÜ Kð% ÃEüÿÃå Æõ ê ÆeðÿDî lâBìpâ nìðÿ 5,úÿ öÿ®ö nìôÿ_ú ôÿÀE öÿ%ü ÷ Z1ÁEüÿu @íöÿ5 òÿC`Cíöÿ `s-ðÿnì pâúÿg 5,lâúÿ ÷ î0 ÃEðÿ ÂEøÿ°  Lð%S ¸LW=ôÿ ÂEðÿÂ% êÿK vâ;$ þë?( üÿÊ. hâfâ ðÿê2 8MW=ôÿ @Mð%A üëðÿ jìðÿ?8 fMðe þëû: 3,pâúÿ öÿüë B`2,nìnìNH xþ J âý N ÆeþÿØT ÜMð%' &ü_^ "óâ` ,Nð%9 ìðå0 ìðeÉÿ TNðeA ´û_t Àò v jNð%' rNÁ% Æeäÿ# Æeþÿ ìÁeÊÿw ìÁeÑÿw Æeþÿ$ ôNõ% ìüÿ ìæÿ#à ðëîë0 ìúë=â jÿ¯è <ÿbø ìBíüÿ îOÁ%ÿÿa @Pð% þë¸  ù_$ tPð% æÿüë®. Ðñè0 nð 2 pâlâù@ `Áenìu úÿ#F úÿEH ÷ Ì+}`úÿ[N ÷ ¢+@ äÿAoúÿp nì-R lâXV JQð%' îÿW-îÿ îÿÃ^ ìÿvd `ø_h \þ!j lâÏr ¾Q0,râlâ ²ðát þëdv nâúÿ& 0ï z òQð%' ìüë# &R0- @R0- ¤÷_¢ xRðå ìüëðe þ믶 ìü뼸 `î º lâS¾ >÷_À èÿyÄ äRW=èÿ èÿÂE ðëîëw äö¼Ð ðëîëw Ðí`Ö ¼ö_Ø ìÿTÜ pmìÿlâ ìðEÀÿ ÷ ¼) üëOè êÿ1ì @×0? W=êÿ ÷ p)uPðÿ üëöÿ}ô ðëîëÂø äûhú þëðEÀÿþë<ü þëÊ ôÿ¼& æùç* pìÝ, ²Tð% Èùç0 Fì×4 ÜTð% üëN8 üë¾: òTõ% úTð% ÞëuF ìÿ[N þëæP  Uð%u üë(b ÊUõ% Dë×h öÿ¾l üëyn ôÿrp þUW=ðÿ@ Vð%5 üêúz üëAmôÿ¡ RVõ% üëBmôÿÂE ÿÂ%0 rVõ% üëÁE ÿÁ%` ìüë£ lüëB AmôÿÂE öÿæë Vê   ÆeôÿŨ Æeþÿì® øÿ8¸ ÂEðÿÂ% øÿy¼ ÀEðÿÀ Ì÷Ͼ Æeþÿ 5lüÿ 1,tâüÿ) üÿ8È ÿÂ%@ ÿÂ%@ tâüÿ½Ø a÷ v%@ ÷ z%f ÷ n%f ÷ b%µÞ X÷ 2%ºà 0,pânâ ~è3è pâúÿ¢ê ªþ!ì úÿéð nìÂE XþYø 5,nâöÿ öÿúÿ <þ!þ Æeúÿ6 üÿW-üÿ ÷ ¶#u YÁ% úÿ÷ 6$ Æeæÿâ Æeøÿ;& àëøÿp ØäÃE òÿüÿ5`üÿõEÿ @`Àeàë5 úÿ­8 B-øÿ PZÈå B`Âe îÿüÿ²B ôÿîÿíF a÷ 4#@ ÷ D#÷ `ò$P Æeþÿ@R a÷ ì"wV ôZ÷ HþÆZ [÷ x"@ 2þ5\ [÷ b"@ ÷ ¬"÷ öÿ¨d úÿþh Ôþzâýj !ÁEðÿu èÿ`n ôëèÿ¼p ÷ ("f ÷ ò! ÷ ä!@ ÷ Ô!Ëx \÷ ¤!ºz zâ0,|âzâ ôÿàëq Bmòÿ± èÿôëâ òÿüÿ#  \ð%i ¶\ð%V ,üÿ< ,üÿO ,üÿ< ,üÿ@ &]ðe ÂEøÿ± ôëÙ¢ ôëèÿç¦ J]p, p,þëüÿw Z]ð%; Øé6¬ f]õ% ,üÿB ,üÿH q,ôëòë ¬]ñ% ¼]ñ% vâ9Æ |â0,zâ|â ôÿàëq Bmòÿ± Øä(Î èÿôë6Ð üë0ç8Ò ôÿÀE þÀ%ÿ &ý4Ú V^u-ìÿêÿ 5,|âêÿe |âìÿ êÿîÿ·ì Øäòÿ5 óÿðð àëôÿ ôëRö éîÿàø òÿ0ç' |âîÿ7 òÿ~âå `_ð%; vâ vâ¶$ vâ¡( Ðâ_0 àëS2 äë¯4 Dí$6 dþÈ: ÚþQ@ tûºB 0þ¸F þÌL ÁEðÿÁ% ÂEðÿÂ% ÁEøÿr ôëBX l`Á% z`Á% ôë/\ ÁEðÿÁ% ÁEøÿr ôëøf |ý°n Ì`ñ%þÿöë fþíp ðÿðÿ§r  íçt þëwv Bþ)x nìúÿ Jê¡| hâfâW êÿÂEøÿÂe *ÿðÿ¸ baW<êÿøÿ ðÿnìv nìîÿq ðÿnì! êÿÁEøÿÁ% êÿ-¢ ôÿúÿõE lüݪ 5,|âìÿ üÿã® ØûV² êÿjìm¶ ðÿlìq¸ bu-ìÿêÿ Æýĺ râ0,pârâ Là°¼ ¬ý?¾ ¢ýè öÿOÄ nìêÿWÆ pìðÿ\È bbu-ìÿêÿ pý?Ì vâ¦Î ÈûÝÐ jâ¿Ô äë2Ø æëÍÚ vâ%Ü ÂbqlðëbâÓà <çIä &Þ î äÝWö Pëæú |cð%; êëôëÜ FÝ " ¦êç& ÄõC* üÿ·, fÞC. pâòÿ,6 hõO8 °,òÿpâQ ìpâà üÿà< úÝ_> üÿnìzB üÿCìòÿð úÿöÿu`öÿ} üÿöÿý öÿu/öÿøÿ nìnìäH òÿðJ üÿrâ?N ÆeÀÿ9V ÆeþÿÖ| DÛi~ Æeþÿ Æeüÿê 5ljâ lìüÿ5  üÿÎE ÁEøÿf Rÿ­¦ üÿÀE ÿÀ%P üÿÀE ÿÀ%T Üþ9ª Èæ$¬ Æeüÿ/° òÿÑ´ ªþs¶ ìüÿĸ `Wnõå øÿÎå fnõå øÿJJ "ýYN ìØÿõe pÒKP ìÚÿõe FØÄR ÜÿdâÙX `â.Z ÞÿÅ\ Îÿ.^ ìêÿõEþÿêÿu îÿWp Vü{v 6Ѹx Öÿ\| ìÿ÷ ÁEþÿu êÿl  ÔoW=äÿ ìAmîÿ îÐϨ pW=æÿ äÿá® àÿo° àÿÕ¶ ìÿn¸ rpW0 ìAmîÿ RÐμ îÿ'Ä ìâÿõEþÿâÿ0Î ÖÿäÐ ìÿ÷ ¢ ÁEþÿu êÿlÒ âÿ{Ô äÿÀEþÿ æÿ~Ú @]êÿ5 ìÿDâ æÿÊè ¨qõU æÿªò ÀEþÿ@ øÿkö @]âÿ5 A]êÿu ÎÿBmÔÿ± ôÿW ìÎEþÿ7 Nô×& ÂrW=Üÿ úÓ', Üÿó. Îÿ¥0 êëÿ6 ÊÿÈÿw føYF Tøíh Pø{n HøPz ÒÿÐÿ ÒÿÊ| "øÙ~ ÒsÁeA øÿ@àÀeA ìAíøÿu ìÂÿ5`Âÿ= ìÂÿu/ÂÿÄÿ &÷{¨ ìÜÿu ÜÿÚÿõe Úÿ)² 8Ò(´ àö|¶ ðñÚº Êö|¼ B𨾠ôÿCÀ ¦öß `âìÄ `âÓÈ öï¨Ì jìøÿ nìôÿ Juu-Òÿôÿ r-Òÿlì ÒÿCíôÿõ ôÿÆÔ õàøÿÛÖ ôÿÂEðÿæ ôÿÝØ `Àejì5 ÌÌ½Ü ´u}]ôÿúÿ Þõ|à `â#â ¼õ~ä Òÿ5æ @íÒÿ  õ|ì lÊÎð rõ{ø fõ¼ú 6võ%6 dvô% añ%A Üô| Øô|& Ìô`( Òÿjì râjìñ jìØ6 Ðÿlì Òÿjì¤: (wu-ÐÿÒÿ DËæ> ÐÿÒÿ Òÿ@íÐÿ ôÿFD PwÀe ôÿcF râ©H rwB,pâ râAmôÿu râøÿõ øÿu-øÿÀÿ ´wõ%2 .ÉWR tʤT >ÊÙX Ló{^ öÿ©d îÉYh àÇ0j lìÂEðÿÂ% ÀǤl Ôò|n ôëêëfp Úxð% °ò|t A-Üÿ ìøÿõå yÀEðÿÀ% NǸ  Jëµ¢ 6Ǹ¤ ôÿ¤ª ìøÿõå øÿp° `Áenìf àëÁEðÿÁ% àëÁE ÿÁ%P øÿk¼ `Áenìf âËÿÊ êþ,Ò ôzõ% îË Ô nâpâp èÿnâ æÿrâ&Ú `â9Ü ÚÑ$Þ a÷ | a÷ r xâiì êëêî fâ5afâu fâhâ à râõ nâ¤ø `âµú @aÀenì& ØÊ®ü ö{õ%@ ì÷ * a÷ x a÷ b l|õ% ||÷ B øÿ÷ ® àÈ ÷ àÈ ÷ àÈ Î àÈ Î ÷ àþ ²ÿÿÿÿÿÿ 27/9/76I ^ ^ _ ,!+!2!1 3!7!6 =!=<@KJMNL^m _S¡ee fffm^ Z[ep FCDEGJKLMNe^ ffFCDEHGJKLMN^e fJKLMN^ fPQs VWX+T-S+-STSR §jTS ¨+-§$&'( ª©§$& +¨%)( ¬«¨% «+-¨$&'( ­®¬¨$& ¢q¢; ¤;FEJKNLM^e_ Á'AgA.Iæ@ @fÀi@èB (Ã+C @ÎT/ ©K¦@ nHnI¤A½ ÆÈîHTK= ®HäA®IN R)Á,N ·AÐ"C 7BÁ&E ÷AÐ"C BÇ$N Ù!Ì" êCÎ*E @Í"N* Y'Á&É!@AÁ#Î'Ó"ªCL Ô"R'A& FE'T Ò'G)Á&ñUÒ&1VÉ)T ðEI&E ±UÓ"ãJÁ ÷BÐ"C 7CÎ$S$¢JÌ)E N*Å#E)A uÄxDÐ"C u[Á&E µÄ¸DÐ"C µ[A(Ó rÆxFÐ"C 2Æ8FÐ"C 2_R)Á,N óFÐ"C ó[Á&E 5Ç8GÐ"C BS*°EA(S ÷@Ð"C O* HÍ"Ó ·À¸@Ð"C W'@@ Ò"Ä$à Ô"Ó ²Â¸BÐ"C ò]Ò&ÀAE Ï*Ô$Î"Ó òÁøAÐ"C Ô*R'WDU&Ô BÅ T aJO)D Æ'Ò&A*2U uØxXÌ u\O)Í L pFO'G 0FÁ&E µØ¸XÐ"C µ\A(Ó rÚxZÐ"C 2Ú8ZÐ"C ²^R)Á,N óZÐ"C ó\Á&E 5Û8[Ð"C Ù)Ô"M AI*C$¹AÁ Ò$Î#( Î Í"µÐ¸PA(Ó rÒxRÐ"C 2Ò8RÐ"C r]R)Á,Î Í"5Ó8S WER* @Å!òß÷_G'A& EO)T ÝGÅ)S \GÈ$Ì" eÂmBdC.I CDQASPIHGOEFB COMPILER ERROR! TEXT TOO LONG TOO MANY NAMES TOO MANY LONG NAMES PROGRAM TOO COMPLEX ACCESS FORM ATOM TYPE NAME SIZE CONTEXT MATCH COPY SPEC %END %CYCLE %REPEAT %START %FINISH ORDER BOUNDS RESULT MISSING XMBK 58822 5858822 REORDER N = "!#$&%'(><=#)(tk'ND */&!%[].\x UNUSED X = NEXT = IMP11 DATED STATEMENTS COMPILED PROGRAM CONTAINS FAULT RXIN Æeâýµ a÷ r a÷ & öÿNa÷ N ìÿn> 6@õ%Y äÿNa Ù ¤F d@õ% @÷ ¶ ÿÿöÿW-öÿJ öÿ[P àåÿ7R æÿçT âýèÿuaèÿtV öÿêÿ äÿNa Ù >Z a÷ ° Ú@÷ b âýèÿuaèÿBf æÿÙh öÿ@]ìÿ5 êÿµj àåÿÙl äÿNa Ù ón a÷ f $A÷ a÷ N ÿÿöÿW-öÿ öÿW-öÿ  âýèÿuaèÿ³ öÿ@]ìÿ5 àåÿJ äÿNa a÷ Ø ²A÷ a÷ Æ øÿ÷ t àÈ Î àÈ Î ÷ >ÿ Áÿÿÿÿÿÿ À(INITIALISES FLOPPY ON UNIT 1 FOR DEIMOS .Copies Floppy Unit 0 to Unit 1 PLEASE CONFIRM? DISC TURN OFF CHECK ERROR DISC ERROR DISC WRITE ERROR SYSTEM COPIED..... DISC WRITE ERROR UNIT 1 INITIALISED COPYºÆ Æeâýµ a÷ ° öÿNa÷ È ìÿ|* (@õ%Y èÿ%0 äÿNa Ù ²2 V@õ% x@÷ D àåÿW< èÿÝ> äÿNa Ù dB ¤@õ% a÷ D ¶@÷ ÿÿöÿW-öÿè æÿ·R âýèÿuaèÿDT öÿêÿ[V äÿNa a÷ ð A÷ ² âýèÿuaèÿ æÿ¨f öÿ@]ìÿ5 àåÿ¨j äÿNa Ù Ãl a÷ ¦ TA÷ h øÿ÷ \ àÈ :z àÈ Î ÷ Nÿ À¼À<À À¼Àÿÿÿÿÿÿ À.Copies Floppy Unit 0 to Unit 1 PLEASE CONFIRM? DISC TURN OFF CHECK ERROR UPPER CHECK FAILS DISC ERROR DISC WRITE ERROR ALIS@Á Æeôÿµ Æeüÿo @÷ ¦ õeýÿüÿf üÿ÷ @ ÁEøÿÁe0 R@÷ t Æeüÿ[ üÿNa÷ 0 Æeøÿ1 üÿNa÷ ø úÿNa7 úÿÀå úÿ)* úÿu-úÿøÿ üÿNa7 üÿNa÷ úÿNa÷ úÿWt öÿ_4 Æeúÿl< 4,öÿ0 úÿNa÷ úÿ÷ * ôÿvR Nÿ*\ øÿ÷ àÈ ÷ ÷ @ÿ ÀBÀ<À ÀBÀÿÿÿÿÿÿ =INH %CYCLE I = 15, -1, 0 PUSH(FREE, HA(I)) %REPEAT %CYCLE %IF OUTID=0 %AND %NOT HO_H == NULL %START H == POP(HO); PUSH(FREE, H) P == H_P %ELSE P == P2 P_SERVICE = 0 POFF(P) %FINISH %IF P_SERVICE=KBINT&X'FF' %START CHAR=TT_KBD&127; ! STRIP PARITY BIT %CYCLE I=NO OF SPECS, -1, 0 ->INS(I) %IF CHAR=SPECS(I) %REPEAT !! NORMAL CHAR %IF CHAR>='A'+K'40' %AND CHAR<='Z'+K'40' %THENC CHAR=CHAR-UPPER; ! TURN TO UPPER PLANT(CHAR) %CONTINUE INS(0): ! RUBOUT %IF LAST#CURR %START LAST = (LAST-1)&255 ECHO(8); ECHO(' '); ECHO(8) %ELSE ECHO BELL %CONTINUE INS(1): ! CANCEL %IF LAST#CURR %START LAST = CURR ECHO('#'); ECHO(CR); ECHO(NL); E LAST=E PT %ELSE ECHO BELL %CONTINUE INS(2): ! ESCAPE - GO TO CLI CLI FLAG = 1 LAST = 0; CURR = 0; FIRST = 0 INS2: ECHO('$'); ECHO BELL %CONTINUE INS(4): ! SHIFT IN UPPER = 0; %CONTINUE INS(5): ! SHIFT OUT UPPER = 32; %CONTINUE INS(6): ! TAB PLANT(' '); PLANT(' '); PLANT(' '); %CONTINUE INS(3): ! CR PLANT(NL); CURR = LAST TRANSFER INPUT E LAST=E PT; ! ALLOW IT TO DO OUTPUT NOW %ELSE %IF P_SERVICE=TT INT&X'FF' %START ->STATE(TT STATUS) DO OUT: STATE(5): ! GOING IDLE TT STATUS=0 %IF E PT>0 %THEN TT STATUS=2 %ELSESTART %IF OUT_LAST#0 %THEN TT STATUS=1 %FINISH ->STATE(TT STATUS) STATE(1): ! NORMAL OP CHAR=OUT_B(OUT_PT); OUT_PT=OUT_PT+1 %IF OUT_PT>=OUT_LAST %THEN TT STATUS=5 %AND OUTPUT REPLY DRIVE TT(CHAR) STATE(0): %CONTINUE STATE(2): ! ECHO OP %IF EFPTDO OUT %FINISH %FINISH %IF EFPT=E PT %THEN E PT=0 %AND EFPT=0 %CONTINUE STATE(3): ! NORMAL CR STATE(4): ! ECHO CR STATE(7): ! END OF LINE - NEWLINE TT STATUS=5 DRIVE TT(NL+128) %CONTINUE STATE(6): ! IN ECHO LINE %CYCLE; %REPEAT %ELSE %IF P_SERVICE=TT SER %START; ! USER REQUEST %IF P_A1=1 %START; ! OUTPUT REQUEST %IF OUTID#0 %START H == POP(FREE) %IF H == NULL %START REJ: P_SERVICE= P_REPLY; P_REPLY = TT SER P_A1 = 1; PON(P) %CONTINUE %FINISH H_P = P; ! COPY P INTO SAFE PLACE PUSH(HO, H); ! AND QUEUE IT %CONTINUE %FINISH OUTID=P_REPLY SEG=P_A2>>13; ! SEG NO OF BUFFER MAP VIRT(OUTID, SEG, MY SEG) BUFX_ARRAYPT=MSA+(P_A2&K'17777') OUT_PT=0; OUT_LAST=P_A3; ! LENGTH %IF OUT_LAST=0 %THEN OUTPUT REPLY %ELSESTART ->DO OUT %IF TT STATUS=0; ! TT IDLE %FINISH %ELSE !! INPUT REQUEST %IF P_A1 # 0 %START CID = P_REPLY; CADR = P_A2 %CONTINUE %IF P_A3 # 0; ! JUST READ FROM CLI %FINISH H == POP(FREE) -> REJ %IF H == NULL H_P = P; ! COPY P INTO A SAFE PLACE PUSH(HI, H); ! AND Q IT %IF P_A1#0 %AND FIRST=LAST %THEN -> INS2 %IF FIRST#CURR %START; ! NON EMPTY LINE TRANSFER INPUT %FINISH %FINISH %FINISH %REPEAT %ROUTINE DRIVE TT(%INTEGER CHAR) %IF CHAR=NL %START TT STATUS=TT STATUS+2 CHAR=CR %FINISH TT_TTD=CHAR TT_TTS=TT_TTS!K'100'; ! INTS ON %END %ROUTINE ECHO(%INTEGER X) %RETURN %IF E PT>40 E PT=E PT+1; ECHOB(E PT)=X %IF TT STATUS=0 %OR TT STATUS=6 %START TT STATUS=2 DRIVE TT(X) EFPT=1 %FINISH %END %ROUTINE ECHO BELL ECHO(BELL); E LAST=E PT %END %ROUTINE PLANT(%INTEGER CHAR) BUFFER(LAST) = CHAR LAST = (LAST+1)&255 ECHO(CHAR) %END %ROUTINE TRANSFER INPUT %INTEGER SEG, I, ID, ADR, N %IF CLI FLAG # 0 %START; ! PREEMPTED BY CLI ID = CID; ADR = C ADR; CLI FLAG = 0 %ELSE %IF HI_H == NULL %THEN %RETURN H == POP(HI); PUSH(FREE, H) ID = H_P_REPLY; ADR = H_P_A2 %FINISH %IF ID#0 %START SEG=ADR>>13 MAP VIRT(ID, SEG, MYISEG) INX_ARRAY PT=MISA+(ADR&K'17777') %CYCLE I = 0, 1, 80 N = BUFFER(FIRST) INH_B(I) = N FIRST = (FIRST+1)&255 %EXIT %IF N = NL %REPEAT P_SERVICE=ID; P_REPLY=TTSER P_A1=I+1 !*********** !* SUP009 * !*21.APR.80* !*********** %CONTROL K'111011'; ! MUL+TRUSTED %PERMROUTINESPEC SVC %PERMINTEGERMAPSPEC INTEGER(%INTEGER X); ! USED IN INIT %RECORDFORMAT DUMMY(%INTEGER X) %CONSTRECORD (DUMMY) %NAME NULL=0 %BEGIN %CONSTINTEGER TASK LOW LIMIT=30 %CONSTINTEGER TASK USER LIMIT = 36 %CONSTINTEGER TASK LIMIT=55 %CONSTINTEGER FREE CELLS=50 %CONSTINTEGER NO OF SERVICES=TASK LIMIT %CONSTINTEGER FRAG NO=15 %CONSTINTEGER PSECT LENGTH=48 %CONSTINTEGER SVC LIMIT=23 %CONSTINTEGER INT LIMIT=-50 %CONSTINTEGER K SEG LIMIT=80 %CONSTINTEGER HIGHEST PRIORITY = 3 %CONSTINTEGER TTID=30; ! TASK LO LIMIT %CONSTINTEGER DKID=31; ! " " " +1 %CONSTINTEGER DIRID=32; ! " " " +2 %CONSTINTEGER LOADID=33; ! " " " +2 %CONSTINTEGER MOTHER=35; ! " " " +4 %CONSTINTEGERNAME PS=K'177776'; ! STATUS WORD %CONSTINTEGERNAME STACK LIMIT=K'177774' %RECORDFORMAT EF(%RECORD (EF) %NAME LINK, %INTEGER ID, A1) %RECORDFORMAT QF(%RECORD (EF) %NAME E) %RECORDFORMAT TF(%RECORD (TF) %NAME LINK, %INTEGER ID, T) %RECORDFORMAT KSEGF(%INTEGER USE, DADD, PAR, PDR) %RECORDFORMAT KSEGLF(%RECORD (KSEGLF) %NAME L, %INTEGER B, C, D) %RECORDFORMAT UREGSF(%INTEGER R0, R1, R2, R3, R4, R5, PC, %C PS, SP) %RECORDFORMAT SEGF(%INTEGER PAR, PDR, %RECORD (KSEGF) %NAME KSL, %C %INTEGER USE) %RECORDFORMAT PSECTF(%RECORD (QF) %NAME E,%BYTEINTEGER ID, STATE, %C %BYTEINTEGERARRAY NAME(0:3), %C %INTEGER PRIO, %RECORD (QF) POFFQ, %C %RECORD (UREGSF) URS, %INTEGER TRAPV, %C %RECORD (SEGF) %ARRAY SEG(0:7)) %RECORDFORMAT PSTF(%RECORD (PSECTF) %NAME P) %RECORDFORMAT PF(%BYTEINTEGER SERVICE, REPLY, %C %INTEGER A1, A2, A3) %RECORDFORMAT P2F(%INTEGER D, A1, A2, A3) %RECORDFORMAT MAINPF(%RECORD (MAINPF) %NAME L, %RECORD (P2F) P) %RECORDFORMAT STOREF(%INTEGER LEN, BLOCK NO) %RECORDFORMAT ADDRFN(%RECORD (ADDRFN) %NAME PSECTA, LAST32, COREA) %CONSTRECORD (ADDRFN) %NAME ADDS=K'120' %RECORDFORMAT D1F(%INTEGER X) %RECORDFORMAT D2F(%RECORD (QF) %NAME X) %RECORDFORMAT D3F(%INTEGERNAME X) %RECORD (EF) %NAME E %RECORD (TF) %NAME T, T2, TN, TB %RECORD (PSECTF) %NAME PSECT, PSECT2, PSECTN, PSECT3 %RECORD (SEGF) %NAME SEG1, SEG2 %RECORD (KSEGF) %NAME KS1, KS2 %RECORD (KSEGLF) %NAME KL %EXTERNALRECORD (KSEGLF) %NAME FREE SEGL %OWNINTEGER IPL TICKS = 0 %EXTERNALRECORD (QF) %ARRAY CPUQ(0:HIGHEST PRIORITY) !* %RECORD (PF) PX %RECORD (PF) %NAME P, Q %RECORD (P2F) %NAME P2, Q2, PXP %RECORD (MAINPF) %NAME MAINP, MP2 %EXTERNALRECORD (QF) %NAME FREE PARAM %RECORD (QF) TIME Q; ! HEAD OF TIMER LIST %INTEGER QU, SERVICE, TICKS, LEN, I, PT, L2, BLOCK, S, ID, CALL SEG %INTEGER PAR, PDR %RECORD (D1F) %NAME D1 %RECORD (D2F) D2 %RECORD (D3F) %NAME D3 %EXTERNALRECORD (PSTF) %ARRAY PSECTA(TASK LOW LIMIT:TASK LIMIT) %EXTERNALRECORD (TF) %ARRAY ONTMQ(TASK LOW LIMIT:TASK LIMIT) %EXTERNALRECORD (MAINPF) %ARRAY PARAMS(0:FREE CELLS) %EXTERNALRECORD (STOREF) %ARRAY STORE(0:FRAG NO) %RECORD (STOREF) %NAME ST1, ST2 %EXTERNALRECORD (KSEGLF) %ARRAY KSEGL(1:K SEG LIMIT) ! %EXTERNALRECORD (P2F) %ARRAY LAST THIRTY2(0:15); %OWNINTEGER LAST=0 %EXTERNALBYTEINTEGERARRAY SER MAP(INT LIMIT:NO OF SERVICES)= %C 0(40), 0, 0, 0, 0, 0, 0, MOTHER, DKID, TTID, TTID, 0, TTID, 0, DKID, DIRID, LOADID, 0, MOTHER, 0(48) %CONSTINTEGER FAULT SER=-4 !! TU 16 INT = -5 !! DQS11 TX INT = -6 !! DQS11 RX INT = -7 %SYSTEMINTEGERFNSPEC RUN %EXTERNALROUTINESPEC INITIALISE !! %PERMROUTINESPEC PUSH(%RECORD (QF) %NAME Q, %RECORD (EF) %NAME E) !! %PERMRECORD (QF) %MAPSPEC POP(%RECORD (QF) %NAME Q) !* %ROUTINESPEC SCHEDULE %ROUTINESPEC DEALLOCATE(%RECORD (KSEGF) %NAME KS) %ROUTINESPEC FAULT(%INTEGER I) !*********************************************** !* SUPERVISOR STATES * !*********************************************** %CONSTINTEGER IDLE ST=-1 %CONSTINTEGER TASK ST=0 !********************************************** !* TASK STATES * !********************************************** %CONSTINTEGER T WAIT=1 %CONSTINTEGER T POFF=2 %CONSTBYTEINTEGER T CPUQ=8 %CONSTBYTEINTEGER T RUN=16 %CONSTBYTEINTEGER T SUSP=K'200' !*********************************************** !* SVC SERVICES (BY EMT VALUE) * !*********************************************** %CONSTINTEGER INTERRUPT=-1 %CONSTINTEGER WAIT=1 %CONSTINTEGER PON R=2 %CONSTINTEGER POFF R=3 %CONSTINTEGER INSERT=4 %CONSTINTEGER DELETE=5 %CONSTINTEGER ALLOCATE CORE=6 %CONSTINTEGER FREESP=7 %CONSTINTEGER SET TIME=8 %CONSTINTEGER SCHEDULE T=9 %CONSTINTEGER MAP VIRT=10 %CONSTINTEGER GET ABS=11 %CONSTINTEGER GET ID=12 %CONSTINTEGER LINKIN=13 %CONSTINTEGER MAP SHARED=14 %CONSTINTEGER MAP HREGS=15 %CONSTINTEGER MAP PSECT=16 %CONSTINTEGER PONPOFF=17 %CONSTINTEGER SET PRIO=18 %CONSTINTEGER SET T BIT = 19 %CONSTINTEGER TOFF = 20 %CONSTINTEGER DPTAB = 22 %CONSTINTEGER TIME SER = 23 !************************************************ !* STATIC CORE LOCATIONS * !************************************************ %CONSTINTEGERNAME INT VALUE=K'40' %CONSTINTEGERNAME ALARM F=K'44' %CONSTRECORD (PSTF) %NAME PSECTX = K'46' %CONSTINTEGERNAME PSECT AREA=K'50' %CONSTINTEGERNAME FAULT TYPE=K'52' %CONSTRECORD (PSTF) %NAME LAST PSECT = K'54' %CONSTINTEGERNAME EXTRA INT INFO = K'56' %CONSTINTEGERNAME SVCADDRESS = K'30' !************************************************* %SWITCH SER(-1:SVC LIMIT) %CONSTINTEGERARRAYNAME U PAR = K'177640' %CONSTINTEGERARRAYNAME U PDR = K'177600' !*************************************************** !* START OF CODE PROPER * !*************************************************** INITIALISE; ! HELD IN DE-ALLOCATABLE SPACE !***************************************************** !* BASIC LOOP IS CPU SCHEDULER * !***************************************************** *K'013700'; *K'30'; ! MOV SVC, R0 *K'010540'; ! MOV R5, -(R0) *K'010440'; ! MOV R4, -(R0) D1 == D2; D3 == D1; PXP == PX; PX_REPLY = 0 %CYCLE %IF %NOT CPUQ(3)_E == NULL %START PSECT == POP(CPUQ(3)) %ELSE %IF %NOT CPUQ(2)_E == NULL %START PSECT == POP(CPUQ(2)) %ELSE %IF %NOT CPUQ(1)_E == NULL %START PSECT == POP(CPUQ(1)) %ELSE %IF %NOT CPUQ(0)_E == NULL %START PSECT == POP(CPUQ(0)) %ELSE !! NOTHING TO DO PSECT == NULL; PSECTX_P == NULL ->GO2 %FINISH %FINISH %FINISH %FINISH GO: %IF PSECT_STATE&T SUSP#0 %THENCONTINUE; ! DON'T RUN IT PSECT_STATE=T RUN PSECTX_P == PSECT GO2: SERVICE=RUN; ! EXTERNAL ROUTINE ->SER(SERVICE) %IF SERVICE<=SVC LIMIT FAULT TYPE=5 ERROR: INT VALUE=FAULT SER SER(INTERRUPT): ; ! DEVICE INTERRUPT %IF INT VALUE#FAULT SER %START SCHEDULE %UNLESS PSECT == NULL PX_A3 = EXTRA INT INFO; ! PASS STUFF THROUGH %ELSE PX_A2=PSECT_ID PX_A3=FAULT TYPE %FINISH -> CLOCKINT %IF INT VALUE = 0 ID=SER MAP(INT VALUE) PX_SERVICE=INT VALUE P2==PXP; P==P2 !* AND SEND IT !! SEND MESS TO RELEVANT TASK ->DO PON SER(WAIT): PSECT_STATE=T WAIT %CONTINUE; ! FIND SOMETHING ELSE SER(PON R): SER(PONPOFF):; ! PON-POFF FROM USER P2==PSECT_URS; ! MAP PARAM AREA TO HIS REGS P==P2 !* NOW PLANT ON Q !* AND SCHEDULE PROCESS IF NECESSARY ID=SER MAP(P_SERVICE); ! AND FIND THE OWNING PROCESS DO PON: PSECT3==PSECTA(ID)_P; ! PSECT OF RECEIVING MESSAGE %IF PSECT3==NULL %OR ID=0 %START FAULT TYPE=6; PX_A1 = P_SERVICE -> ERROR %FINISH Q==PSECT3_URS %IF PSECT3_STATE&T POFF#0 %AND %C (Q_SERVICE=0 %OR PSECT3_URS_R0=P2_D) %START !! IS WAITING FOR POFF, AND IS THE CORRECT MESSAGE PSECT3_STATE = (PSECT3_STATE&T SUSP)!T CPUQ; ! CODE OF SCHEDULE PUSH(CPUQ(PSECT3_PRIO), PSECT3) PON EXECUTE: Q = P2 ! LAST THIRTY2(LAST)=P2; ! LAST=(LAST+1)&15 %ELSE MAINP==FREE PARAM; ! PICK UP NEW PARAM CELL FAULT(9) %IF MAINP == NULL FREE PARAM==MAINP_L; ! RELINK FREE LIST MAINP_P = P2 PUSH(PSECT3_POFFQ, MAINP); ! PUT ON TASK POFF Q %FINISH %IF SERVICE < 0 %THEN %CONTINUE; ! (=INTERRUPT)DO A PRIO SCAN %IF SERVICE#PONPOFF %THEN ->GO2; ! PON OR POFF, SO JUST REENTER !************************************************************** ! THIS SECTION IS DEPENDENT ON THE FORMAT OF PSECTF *K'013700'; *K'54'; ! MOV LAST PSECT, R0 *K'000360'; *K'14'; ! SWAB(LAST PSECT_URS_R0) ! WOULD BE PREFERABLE IN IMP, BUT WOULD COST AT LEAST 10 WORDS !************************************************************** SER(POFF R):; ! USER POFF %UNLESS PSECT_POFFQ_E==NULL %START; ! Q NON ZERO MP2==PSECT_POFFQ_E; ! GET LAST ENTRY Q==PSECT_URS; Q2==Q %UNTIL MP2==MAINP %CYCLE; ! CYCLE WHOLE Q MAINP==POP(PSECT_POFFQ) P==MAINP_P; P2==P %IF Q_SERVICE=0 %OR Q2_D=P2_D %START MAINP_L==FREE PARAM; FREE PARAM==MAINP; ! RELINK ON Q ->PON EXECUTE %FINISH PUSH(PSECT_POFFQ, MAINP) %REPEAT %FINISH PSECT_STATE=T POFF %CONTINUE SER(SCHEDULE T): ! R0 IS ID OF TASK TO BE SCHEDULED I = PSECT_URS_R1; ! 0 = SCH, 1 = HOLD, X = ADDR SCHEDULE; ! RE-SCHEDULE CALLER PSECT==PSECTA(PSECT_URS_R0)_P FAULT(7) %IF PSECT==NULL %IF I&1 = 0 %START PSECT_STATE = PSECT_STATE&(\T SUSP); ! ENSURE NOT SUSPENDED PSECT_URS_PC = I %IF I#0 SCHEDULE %ELSE PSECT_STATE = PSECT_STATE!T SUSP; ! SUSP IT %FINISH %CONTINUE SER(DELETE): ! DELETE THE RUNNING TASK I = PSECT_URS_R0 %IF PSECT_ID=LOADID %OR I#0 %START SCHEDULE; ! RE-SCHEDULE LOADER PSECT==PSECTA(I)_P %FINISH %CYCLE; ! CLEAR OUT THE POFF Q MAINP==POP(PSECT_POFFQ) %EXITIF MAINP==NULL MAINP_L==FREE PARAM; FREE PARAM==MAINP %REPEAT %CYCLE I=7, -1, 0; ! GO DOWN THE SEGS KS1==PSECT_SEG(I)_KSL %UNLESS KS1 == NULL %START KS1_USE=KS1_USE-1 DEALLOCATE(KS1) %IF KS1_USE=0 %FINISH %REPEAT PSECTA(PSECT_ID)_P==NULL SEARCH CPU Q: %CONTINUE CLOCKINT: ! CLOCK HAS TICKED IPL TICKS = IPL TICKS+1 %IF ALARMF # 0 %START ALARMF = ALARMF-1 %IF ALARMF = 0 %START !* SEND MESSAGE TO FIRST TASK ON Q !* SET CLOCK TO NEXT TIME TN==POP(TIME Q) %UNLESS TIMEQ_E==NULL %START ALARM F=TIMEQ_E_LINK_A1 %IF ALARMF=0 %THEN ALARMF=1 %FINISH ID=TN_ID PX_SERVICE=ID; PX_REPLY=0 P2==PX; TN_T=0 ->DO PON %FINISH %FINISH %REPEAT; ! OF MAIN LOOP SER(SET TIME): ! SET TIMER FOR URS_R0 TICKS ID=PSECT_ID TN==ONTMQ(ID) TICKS=PSECT_URS_R0; ! NO OF TICKS %IF TICKS=0 %OR ONTMQ(ID)_T#0 %THEN FAULT TYPE=7 %AND ->ERROR TB==TIMEQ_E; ! LAST ENTRY ->BOT %IF TB==NULL T==TB_LINK; ! POINT TO FIRST ENTRY, IF ONLY ONE IT IS A LOOPED POINTER T_T=ALARM F; ! ADJUST FOR TIME PAST T2==TB %CYCLE; ! CHECK THE LIST %IF TICKSGO; ! IMMEDIATE RESCHEDULE SER(TIME SER): PSECT_URS_R0 = IPL TICKS ->GO; ! IMMEDIATE RESCHEDULE SER(ALLOCATE CORE): LAST PSECT_P == NULL; ! MUST RELOAD SEG REGS ON EXIT ST1 == NULL %IF PSECT_ID <= LOADID %START LEN=PSECT_URS_R0; ! CORE REQUIRED IN BLOCKS PSECT_URS_R0=0; ! URS_R1 IS THE NEW SEG L2=K'77777' %CYCLE I=FRAG NO, -1, 0 ST2 == STORE(I) %IF ST2_LEN>=LEN %AND ST2_LENGO; ! NO CORE PAR=ST1_BLOCK NO; ! ADDRESS OF BLOCK (IN BLOCKS) %IF L2>LEN %START; ! EXCESS, SO TRIM ST1_BLOCKNO=ST1_BLOCK NO+LEN ST1_LEN=ST1_LEN-LEN %ELSE ST1 = 0 KL==FREE SEGL FAULT(12) %IF KL==NULL; ! NO FREE SEGMENT CELLS FREE SEGL==KL_L KS1==KL; ! MAP THE 'REAL' TYPE ON KS1_USE=0; ! 'SHARED' WILL MAKE IT '1' S = 6 PDR=(LEN-1)<<8!6 KS1_PAR=PAR; KS1_PDR=PDR CALL SEG = PSECT_URS_R1 SEG1==PSECTN_SEG(CALL SEG) PSECT_URS_R0=BLOCK ->DO SHARED; ! FILL HIS SEG ENTRY SER(GET ABS): ! GET ABSOLUTE ADDRESS OF VIRT SEG ! R0=TARGET ID ! R1=TARGET SEGMENT ! R2=0 - DROP =1 - GET %IF PSECT_URS_R2=0 %THEN PSECT_URS_R1=-1 %ELSEC PSECT_URS_R2=0 !! THIS CHANGES IT TO THE FORMAT EXPECTED BY MAP VIRT !! IT IS ALWAYS MAPPED TO THE CALLERS SEGMENT ZERO SER(MAP VIRT): ! MAP USER A TO B ! R0 = TARGET ID ! R1 = TARGET SEG ! R2 = CALLERS SEG ! R1 = -1 SIGNIFIES DROP SEG CALL SEG=PSECT_URS_R2; ! GET CALLERS SEG NO SEG1==PSECT_SEG(CALL SEG) MAP2: S=0; PAR=0; PDR=0 %IF PSECT_ID=LOADID %THEN S=6 %IF PSECT_URS_R1<0 %START; ! DROP SEGMENT KS1==SEG1_KSL %IF KS1==NULL %THEN ->MV FAIL; ! NO SEG KS1_USE=KS1_USE-1 %IF KS1_USE=0 %THEN DEALLOCATE(KS1) SEG1=0; ! ZERO CALLERS ENTRY %ELSE !! MAP TO DESIRED SEG PSECT2==PSECTA(SER MAP(PSECT_URS_R0))_P -> MV FAIL %IF PSECT2==NULL KS1==PSECT2_SEG(PSECT_URS_R1)_KSL DO SHARED: %UNLESS KS1==NULL %START PAR=KS1_PAR; PDR=KS1_PDR!S SEG1_PAR=PAR; SEG1_PDR=PDR SEG1_KSL==KS1 KS1_USE=KS1_USE+1 %FINISH %FINISH MV FAIL: ! COMES HERE IF CALL FAILS OR IS OK PSECT_URS_R0=PAR; PSECT_URS_R1=PDR; ! PASS RESULT BACK SET SEGREGS: UPAR(CALL SEG) = PAR UPDR(CALL SEG) = PDR ->GO SER(GET ID): ! RETURN ID OF TASK IN R0 PSECT_URS_R0=PSECT_ID ->GO SER(LINKIN): ! R0 IS REQUIRED SERVICE SER MAP(PSECT_URS_R0)=PSECT_ID ->GO SER(MAP SHARED): ! R0 IS ID, R1=SEG, R2=SHARED NO PSECT2==PSECTA(PSECT_URS_R0)_P FAULT(8) %IF PSECT2==NULL SEG1==PSECT2_SEG(PSECT_URS_R1) D1_X = PSECT_URS_R2 KS1 == D2_X; ! LOADER PASSES ADDRESS OF DESCRIPT LAST PSECT_P == NULL S=2; CALL SEG = 1 ->DO SHARED SER(INSERT): ! ALLOCATE A NEW PSECT (AND MAP TO R0?) %CYCLE ID=TASK LOW LIMIT, 1, TASK LIMIT %EXIT %IF PSECTA(ID)_P==NULL %REPEAT D1_X=PSECT AREA+(ID-MOTHER-1)*(PSECT LENGTH*2) !! SHOULD BE *(PSECT LENGTH*2) PSECTA(ID)_P==D2_X PSECTN==D2_X; ! MAP TO ARRAY AND PSECTN PSECTN_ID=ID SER MAP(ID)=ID ->MPS; ! RESTART LOADER SER(MAP HREGS): ! MAP HARDWARE REGS TO SEG R0 SEG1==PSECT_SEG(PSECT_URS_R0) SEG1_PAR=K'7600'; SEG1_PDR=K'77406'; SEG1_KSL==NULL LAST PSECT_P == NULL; ! FORCE A RELOAD OF SEGMENT REGS ->GO SER(MAP PSECT): ! MAP PSECT 'R0' TO SEG IN R1 ID = PSECT_URS_R0; ! TARGET TASK ID MPS: CALL SEG=PSECT_URS_R1 SEG1==PSECT_SEG(CALL SEG) PT=0 %IF PSECT_ID=LOADID %THEN PDR=2<<8!6 %ELSE PDR=2<<8!2 D2_X==PSECTA(ID)_P %UNLESS D2_X==NULL %START PAR = D1_X>>6 SEG1_PAR=PAR; ! MAP TO THE START OF ITS BLOCK SEG1_PDR=PDR; ! ACCESS DEPENDS ON TASK SEG1_KSL == NULL PT=CALL SEG<<13!(D1_X&K'77'); ! POINT R0 TO ITS BEGINNING %FINISH PSECT_URS_R0=PT ->SET SEGREGS SER(SET PRIO): ! SET PRIO BETWEEN 0 AND 3 PSECT_PRIO = PSECT_URS_R0&3 SCHEDULE; ! CHECK A HIGHER ONE NOT RUNNING ->SEARCH CPU Q SER(SET T BIT): ! SET THE TRACE TRAP PSECT_URS_PS = PSECT_URS_PS!K'20' -> GO SER(TOFF): ! TEST FOR MESSAGES PSECT_URS_R0 = 0 %IF %NOT PSECT_POFFQ_E == NULL %THEN PSECT_URS_R0 = 1 -> GO SER(DPTAB): D1_X = SVCADDRESS-6 I = D3_X; ! = 0 IF NO DP CODE IN BRUN PT = PSECT_URS_R0; ! TARGET SEGMENT PSECT_URS_R0 = I PSECT_SEG(PT)_PAR = I>>6; PSECT_SEG(PT)_PDR = K'406' PSECT_SEG(PT)_KSL == NULL; LAST PSECT_P == NULL; ! FORCE RELOAD -> GO %ROUTINE SCHEDULE PSECT_STATE=(PSECT_STATE&T SUSP)!T CPUQ PUSH(CPUQ(PSECT_PRIO), PSECT) %END %ROUTINE DEALLOCATE(%RECORD (KSEGF) %NAME KS) %RECORD (STOREF) %NAME S, S2, S3 %RECORD (KSEGLF) %NAME KSL %INTEGER I, BOT, BLOCK, LEN BLOCK=KS_PAR; LEN=KS_PDR>>8+1 BOT=BLOCK+LEN; S2==NULL %CYCLE I=FRAG NO, -1, 0 S==STORE(I) %IF S_BLOCK NO+S_LEN=BLOCK %START %IF S2==NULL %START S_LEN=S_LEN+LEN; ! ADD IT ON THE BOTTOM S2==S; ! REMEMBER IT %ELSE S_LEN=S_LEN+S2_LEN S2 = 0 %EXIT %FINISH %ELSE %IF S_BLOCK NO=BOT %START %IF S2==NULL %START; ! NOT FOUND THE UPPER HALF S_BLOCK NO=BLOCK; S_LEN=S_LEN+LEN S2==S; ! MARK FOUND %ELSE S_BLOCK NO=S2_BLOCK NO S_LEN=S_LEN+S2_LEN S2_BLOCK NO=0; S2_LEN=0 %EXIT %FINISH %FINISH %FINISH %IF S_BLOCK NO=0 %THEN S3==S; ! REMEMBER EMPTY SLOT %REPEAT %IF S2==NULL %START S3_BLOCK NO=BLOCK; S3_LEN=LEN %FINISH KSL==KS KSL_L==FREE SEGL FREE SEGL==KSL; ! MAP SEG ENTRY BACK TO FREE LIST %END %ROUTINE FAULT(%INTEGER I) *K'016500'; *4; ! MOV 4(LNB),R0 *0 %END %ENDOFPROGRAM DIR fÄ ÆeÜýµ ÆeüÿUl ðý p òý^t øýôý0`ôý îýÁea öýox H@ð% Ù Ý| a÷ º t@÷ ª x@÷ L Æeüÿ5 ÿÿüÿW-üÿ üÿB` øýÃE Æeúÿ¸ª úÿj® ÿÿüÿW-üÿ2 ÆeüÿtÀ üÿòÄ a÷ ¾ Æeüÿ<Ô îýWtýÿu ¾AÁe0 àÂe0 àöÿÇú -àÀE âýüþ ÿÿìý ÿÿèýW-èý èý@að ÿÿæýW-æý2 ÿÿèýW-èý èý@aA æýWp èýB`2¬Üýøý$ èýC`3¬Üýøý ÿÿäýW-äý äýÜ$ äý@aA æýWp äýB`° øýÜý8& æýìýa* þBõ%ÿÿìý êý¯> þýÇB ÿÿìý øþÿF JC÷ z øÿ÷ p àÈ ÷ àÈ ÷ àÈ Î àÈ Î ÀhÀ<À ÀhÀÿÿÿÿÿÿ DIRECTORY BLOCK READ ERROR FILES FSYS= ! FILE 'LOAD7S' !************** !* LOAD17S * !* 21.APR.80 * !************** %PERMINTEGERFNSPEC SVC(%INTEGER EP, %INTEGER P1, %INTEGER P2) %PERMINTEGERMAPSPEC INTEGER(%INTEGER X) %PERMBYTEINTEGERMAPSPEC BYTEINTEGER(%INTEGER X) %PERMINTEGERFNSPEC ADDR(%INTEGERNAME X) %CONSTINTEGERNAME DUMMY = 0 %SYSTEMINTEGERFNSPEC GETID %CONTROL K'100001'; ! TRUSTED %RECORDFORMAT DUMREC(%INTEGER X) %CONSTRECORD (DUMREC) %NAME NULL = 0 !*********************************** !* * !* LOADER FAULTS * !* * !* 1 - NO CORE * !* 2 - INIT BLOCK TOO LONG * !* 3 - INIT BLOCK SHORT * !* 4 - CHECKSUM WRONG * !* 5 - OUT OF RANGE * !* 6 - END OF FILE/ NO FILE * !* 7 - MAX NO OF TASKS REACHED * !************************************ %BEGIN %CONSTINTEGER DELETE = 5 %CONSTINTEGER GET CORE = 6 %CONSTINTEGER SCHEDULE = 9 %CONSTINTEGER MAP PSECT = 16 %CONSTINTEGER TASK LOW LIMIT = 30 ! SEE SUPERVISOR FOR UPDATES %OWNINTEGER TASK LIMIT = 48 %CONSTINTEGER T POFF = 2 %CONSTINTEGER LOAD SER = 5; ! MAIN LOADER SERVICE %RECORDFORMAT UREGSF(%INTEGER R0, R1, R2, R3, R4, R5, PC, PS, SP) %RECORDFORMAT SEGF(%INTEGER PAR, PDR, DADD, USE) %RECORDFORMAT PSECTF(%INTEGER Q, %C %BYTEINTEGER ID, STATE, %BYTEINTEGERARRAY %C NAME(0:3), %BYTEINTEGER PRIO, %INTEGER POFFQ, %RECORD (UREGSF %C )URS, %INTEGER TRAPV, %RECORD (SEGF) %ARRAY SEG(0:7)) %RECORDFORMAT PSTF(%RECORD (PSECTF) %NAME P) %RECORDFORMAT PF(%BYTEINTEGER SERVICE, REPLY, %INTEGER A, B, C) %RECORDFORMAT STRDF(%INTEGER RDS, NXY, GETB, %BYTEINTEGER SER, %C REPLY, UNIT, FSYS, %BYTEINTEGERARRAY NAME(0:5), %INTEGER BL, %C N, PT, MAX, %BYTEINTEGERARRAY BUFF(0:255)) %RECORDFORMAT STRD2F(%INTEGER RDS, NXY, GETB, %BYTEINTEGER SER, %C REPLY, UNIT, %STRING (6)NAME) %RECORDFORMAT GLASF(%INTEGERARRAY FIXED(1:12), %BYTEINTEGER ID, %C CALLID, %INTEGERARRAY STRPTS(0:7), %INTEGER TOP, %BYTEINTEGER %C UNIT, FSYS, %INTEGER GLA, INTCHR, SPARE, %INTEGERARRAY GROT %C (1:11), %BYTEINTEGERARRAY INPUT(0:70)) %CONSTRECORD (GLASF) %NAME GLAS = K'100000' ! MAPPED TO MY SEG 4 %RECORDFORMAT D1F(%INTEGER X) %RECORDFORMAT D2F(%BYTEINTEGERNAME B) %RECORDFORMAT D3F(%INTEGERNAME Z) %RECORDFORMAT D4F(%RECORD (PSECTF) %NAME PST) %RECORD (PSECTF) %NAME NEWPSECT, SPST %RECORD (PF)P %RECORD (SEGF) %NAME S %INTEGER ID, I, LEN, BC, J, SEGS, ENTRY, N, NEWID, INPT %INTEGER MAX, MAX2, LOAD ACT, LOAD PT, NCHAR, STK, FAULT, OSEG %INTEGER PT, GLA DISP, OLD, TFLAG, TTFLAG, LTYPE %BYTEINTEGER CHAR, CKSM %OWNINTEGER READ FLAG = 0, UNIT = 0, FSYS = 0, PROG = 1 %OWNINTEGER REPLY TO HERE = LOAD SER %CONSTRECORD (STRDF) %NAME INSTR1 = K'160062' %OWNBYTEINTEGERARRAY STORE(0:70) %CONSTBYTEINTEGERARRAY MODETR(1:6) = 2, 6, 0(2), 2, 6 %CONSTBYTEINTEGERARRAY DISC SER(0:4) = 3, 3, 8, 14, 28 %INTEGERFNSPEC WORD %ROUTINESPEC PRINT NAME %ROUTINESPEC RELEASE(%INTEGER SEG) %ROUTINESPEC MAP SHARED SEG(%INTEGER ID, SEG, SHARED NO) %RECORD (PSECTF) %MAPSPEC INSERT %RECORD (PSECTF) %MAP %SPEC GET PSECT(%INTEGER ID) %RECORD (PSECTF) %MAP %SPEC GET NAME(%BYTEINTEGERNAME ST) %INTEGER DUMMY %RECORD (D1F)D1 %RECORD (D2F) %NAME D2 %RECORD (D3F) %NAME D3 %INTEGERARRAY LSEGM(0:7); ! HOLDS EXTENT OF USER SEG %SWITCH SW(0:7) D2 == D1; D3 == D2 ID = GETID %CYCLE GLA DISP = 0 P_SERVICE = 0 POFF(P) !* VALID SERVICES ARE:- !* P_SERVICE = LOADID - LOADER REQUEST REPLY TO HERE = LOAD SER; ! LOADER 'OWNES' UNLESS CHANGED TFLAG = 0; ! TYPE OF CALL %IF P_A = 1 %START; ! REQUEST TO LOAD ! P_A = 1 - REQUEST TO LOAD ! P_B = ADDRESS OF LOAD ! P_C = CALL FLAG !! TFLAG (CALL FLAG) !! = 0 - NORMAL LOAD !! = 1 - SHARED LOAD (IF POSSIBLE) !! = 3 - SHARED LOAD (LOADER OWNES) !! = 4 - SHARED LOAD - REPLIES WHEN LOADED !! = K'101010' - SET DPALâÇ ÆeöÿOV øÿUd úÿôf üÿêh öÿNa Ù °j Æeöÿ[v a÷ Z ÿNa÷ z ÿ÷ ô :A÷ B BAÁ%T RAÁ%F nAõ%7 ¬A÷ ê f ÷ Þ f ÊA÷ Ì f a÷ ø f üA÷ Ö Ùð Bõ%F ÷ Þ ©ú Bõe 8B÷ 4 ÷ 0 @Bõ%F pBÁ%P ÿNa÷ ö a÷ ² ÿ÷ Ì ÷ J © ´B÷ ¼Bõ%Q Rþ$& ÌBÁ%M ÖB÷ <þ$0 ÿNa÷ v a÷ 2 ÿ÷ L 2C÷   äý$> Æeþÿ a÷ t C÷ P Æeþÿ(V Æeüÿ ÄC÷ þÿüÿW-üÿ üÿ¿p a÷ Ô ÿAmüÿf ,Dõ% :D÷ Æeøÿ{ RD÷ * fD÷ vD÷ ö úÿW-úÿ D÷ ð ¸D÷ ´ Àþa¢ Æeîÿÿª ôEÿóB øDÁE øÿ$º Dûå¾ 6û- øÿöÿõ úÿÅÆ "ûuRúÿÖÊ HEõe a÷ x öÿøÿ øÿBm ÂE÷ Ô ÆEõe òÿ¡ì òÿÇò ôÿvö øEÁ% ôÿ÷ ì òÿõü F÷ ¶ Fõå 0Fôe Æeüÿs õeýÿüÿ} üÿ÷  ÁEøÿÁe0 Fúz" Æeüÿ3( üÿô,  FW= ýÿ¶. Æeúÿõ8 üÿW-üÿ ÿAmüÿf a÷ Ö "ÿHB a÷ ¸ Üþ¥J Ôû:N a÷ n ÿÿüÿW-üÿ üÿ¢V Â`Âe¸ÿµ úÿpZ ~þø\ ÄG÷ Ò jþg^ ÁEøÿÁ% H÷ Î xû¹l Æeôÿ­r ÿÿüÿW-üÿ üÿÕv Põ%. ôÿ@mâÿ ôÿ±Â üÿöÿÅÆ ôÿòÿõå òÿöÌ òÿ@mâÿ5 äÿ)Ð ìÿAíòÿH  Põ%' ôÿ@mâÿ ôÿIÞ ÂPõ%, ôÿòÿõ òÿoæ èÿÁE aGlL úPu]öÿîÿ 5@îÿ öÿ÷ ê 5`îÿ ,Qumöÿîÿ² 8Qu-ìÿôÿ Æeúÿ\ ôÿÉ¥ zQt\ ä÷A& aÂeX öÿ42 üÿN4 üÿT6 üÿ¦: ÈQð% ôÿñÕ |ðzF Æeüÿ¸N a÷ è rR÷ ôÿW¼  Rõ% üÿ¤r Æó­| Æeöÿå `÷ Î ôÿöÿc öÿôÿà ä÷Bmúÿ HSõ% ðîÓ¦ Æeüÿ*¬ õeýÿüÿ4° üÿ÷ Æ ÁEøÿÁe0 °îÓ¶ Æeøÿî¼ øÿúÿuaúÿ âS÷ ì øÿ÷ è 8T÷ Ò JT÷ À Æeúÿ üÿúÿõe üÿüÿõ üÿu-üÿúÿ üÿqð T÷ F ì÷Cmüÿà üÿüÿ° üÿ>ú ÆeúÿÑ üÿ(" üÿ6$ üÿÁE bñN& Æeüÿx. üÿ42 a÷ ¾ a÷ ¬ èìz@ Æeþÿ Æeêÿ òÿîÿuaîÿu îÿìÿu ìÿðÿ[x úÿõE÷ÿúÿþ~ Àeòÿ ôÿ@möÿf êÿ÷ êÿ@møÿA ÿ@`ÀE îÿÀeC @`Àeî÷1 a÷ t a÷ b üÿ_® $Wõ% \ï/´ 4Wô% FWô%¸ Pòwº B`Âeî÷± ôÿÚ¼ îÿÂeC ÷ ø ÆeüÿòÖ ì÷ê÷·Ø a÷ : ðW÷ Röçè ê÷×ê Jòîì FêÒò Æeþÿyø a÷ Î LXõ% a÷ ¼ a÷ ° a÷ ¦ ¨Xõ% ´Xõ% ÂX÷ H ¤éÓF ÆeüÿÙL  ñN`÷ ¾ @ ÷ t f üÿÄT øþ4Z BYW=üÿ FòÖf  î-p Æeúÿ6v üÿ§z úÿ9| Æeøÿü üÿW-üÿ aÁet `÷ Î Jò!¢ Ð Bòðÿ5 üÿu-üÿðÿw üÿÝÒ ôÿÂeC òÿöÿÔÔ øÿçÖ öÿ÷ ¤ öÿ÷ 4 ÿ@à& @`Àeî÷1 ôÿW¼ a÷ : úÿ×æ úÿ÷ è :äÒô ÆeúÿÞú üÿ?þ úÿüû üÿBòð Æeòÿ| °^u- üûøÿ4 üÿû" æ^u-úÿüÿ! üûüûí, _u-úÿüÿ üûüûÆ6 øÿüû»< NÿÝ> @ÿ!@ ªè-D Æeøÿ üÿòD öÿNa Ù ¨H ÆeüÿgP `B÷ j õeýÿüÿf üÿ÷ ÁEøÿÁe0 Æeøÿ)\ øÿúÿuaúÿBb üÿ:d øÿwf Æeìÿýn îÿðÿuaðÿ(x øÿu-øÿìÿ7 øÿ²| üÿæ~ ÿÿöÿW-öÿ öÿ@mîÿ öÿ@müÿ JCÁ% ÆeüÿD ÿÿüÿW-üÿ üÿ@m <þW  Æeæÿ ¦ êÿðÚ aW¬< 0,èÿêÿ üÿúÿuaúÿëâ ÿÿöÿW-öÿ öÿ%æ üÿÁe® 4Dõ% îÿðe êÿÑì VDõ% aÁe= øÿØò a÷ f 6ýzú ðÿu-ðÿæÿ# ÂDÁe ðD÷ æ øÿÀe êÿþ ÿÿöÿW-öÿ öÿL" aÁeð @mêÿ& >Eõ% LE÷ ÿÿöÿW-öÿ öÿþ0 @møÿÀe èÿG2 ÈüX4 ¼ü÷ @ öÿdB øÿÀe ¢ýQD öÿ4J öÿdR ÷ 0 ÿÂå0 ÿÂ`Âå0 bF÷ t öÿ0l øÿð¥ ìÿòÿæ Ù Jp äþ¢r ìÿÿx øÿð¥" øÿ÷ àÈ Î ÷ *ÿ ÀBÁ>À ÀBÁÿÿÿÿÿÿ LOADUP stopped F A U L T term req. *no fault LOGON TASKS REGSS SEGSS PURGE KILLE FREEE HOLDE INTDE KICKE ABORT TASK? purged PAS3 Æeòе øÿ¸( ÆeþÿNp a÷ ö a÷ à a÷ Ö Æeüÿ7~ üÿNa÷ @]üÿ= Æeôÿ ÆeþÿF öÿÎE þÿúÿu-úÿôÿ øÿÎE Fÿº  Æeþÿ ¨ 4ÑÁE ÿÿFÑ®´ ÆeþÿÀº Bð%? lÿrÀ Æeþÿ ÁEÀÿÁ RÑ^Æ Æeþÿ9Ò  Bðe ¦Bð%? ÿÿDÑÈÜ Æeþÿéä ÆeòÿÂö üÿbþ @`ÀepÚ5 úÿu-úÿòÿ1 @`ÀepÚ5 öÿ2, >ýP Æeøÿ ÖC4,*Ñ @`ÀepÚ5 òCð%öÿ 4,6Ñ `Áe°àp úÿ´@ :Dõ%ÿ ¢ý!F NDu-üÿúÿ lDu-úÿüÿ fýQX ~û=\ XýQ^ Æeþÿ 6ý2b `ÁepÚp àDÂe ÿÿ0ÑW-0ÑM (ÑÅt RÑ=v Ñtx 0ÑW-0Ñè &ÑNa÷ ¶ $ÑNa7 TÑNa7 Eõ%è ªE5-ø ¸Eu- Ñ$Ñ! u-TÑ u-TÑ ÐEõe ÑõE ð Ñq TÑ¢Òº  :ÑÌ° $ÑNa7 TÑNa7 @aÀe°à5 $ÑAm:ÑP TÑ¿¸ $Ñ Ñu ¢FW0 ¨Fõ%M òÑaÈ ÊFõ%< @aÀepÚ5 @aÀepÚ5 "Ñ·Ö TÑNa7 $ÑNa7 fùàØ TÑLÚ *Gu-(Ñ*Ñ ÔøNÜ *þÑÞ NÑNa7 LÑNa7 JÑNa7 2ÑNa7 tGuí ÑNÑÌæ zGõe JÑ»è @aÀe°à @Ѿî 6ÑþÐõ ,Ñu-,ÑþÐy ,Ñßð @aÀe°à5 ÐGpí@Ñ âGõe @Ñ]ø *ÑüÐ5 .Ñu-.ÑüÐ .ÑÚú @aÀepÚ5 "Ñfü (Ñ.Ñõ .ÑW-.Ñ @aÀepÚ5 .Ñu-.ÑúÐ ¤Hõå <Ñq( 6ÑøÐõ ,Ñu-,ÑøÐ ,Ñn* @aÀe°à5 Ipm@Ñ 0ÑõE Bì¢ÒÂ% DIðU þÿ¤8 BÑ7< BÑ1@ .Ñu-.ÑöÐ .Ñ0H @aÀepÚ5 "ÑèJ pmBÑ  Iõ% (Ñ.Ñõ .ÑW-.Ñ .ÑwT @aÀepÚ5 "ѤV HmBÑWX pmBÑ .Ñu-.ÑôÐ @aÀe¢Ò5 HmBÑ ,JumBÑ@Ñwl 2JumBÑNÑcn ¬þRr ÿÿ0ÑW-0ÑM a÷ ¸ NÑVÑ4 NÑAm,ÑAm,Ñu HÑBm,ÑBm,ѵ 0Ñ.Ñ äJu-(Ñ0Ñ* @aÀepÚ5 "Ño  AaÁepÚ AaÁepÚ .Ñ(ÑÞ° ®÷þ² ¢÷p´ ÿÿFÑõ ÿÿDÑ RÑ@mLÑ5 PÑjº Kõe RÑw¼ èø Ä °Ku-RÑ ÑÀEÀÿ ÈøßÊ &ÑNa÷ D øõäÖ &ÑNa÷ &Ñ@m>Ñ aGl, ,ÑNa7 JôOâ :Lu- ¢Ò$Ñ lLW2 xLW2 ~LW2 Ñ,Ñ5 °LW2 $ÑCíTÑÃå ÈLÃ% 0ÑÀE ÿ@m,Ñ& òLW2 $Ñ@íTÑÀå ,MW2 VÑ$ÑÉ $Ñ@íTÑÀå TöÃ" ¦þ#& ,ÑNa7 ,Ñ 0 0ÑÖ2 .ÑW-.Ñ .Ñg4 ,ÑNa÷ v ,ÑNa÷ R ÿÿ0ÑW-0Ñ .ÑNa7 ,ÑNa÷ âý#J ,ÑNa7 HòOP ñòh .Ñ,Ñu-,ÑòÐ8 $Ѫl $Ñ& $ÑËr VÑAíTÑÁå $ÑÖv ÀEÀÿÀ ¸Oõ%ÿ ÌOõ%ÿ a÷ L NÑ@íHÑ& a÷ 0 a÷ î NÑ@mLÑ@mJÑ& a÷ Î nP÷ ¾ øÿ÷ àÈ Î ÷ Rÿ ¨ÿÿÿÿÿÿ àÈ ÷ àÈ ÷ àÈ Î àÈ Î àÉ Á% àÉ ñ àÉ Á `B`b ÂdÆä¼! ÿÿÿÿÿÿ FAULT PHASE NO PERM CODE = GLA = PERM = LOAD DATA = TOTAL = BYTES T BIT %IF P_C < 3 %THEN REPLY TO HERE = P_REPLY %ELSE %C PROG = PROG+1 !* WITH TFLAG=3 OR 4, LOADER OWNES, SO MUST COUNT UP TFLAG = P_C %IF TFLAG = 4 %THEN TTFLAG = P_REPLY %ELSE TTFLAG = 0 SEGS = P_B >> 13 MAP VIRT(P_REPLY, SEGS, 4) PT = K'100000'!(P_B&K'17777') INPT = 1 %UNTIL I = NL %OR INPT > 40 %CYCLE I = BYTEINTEGER(PT); STORE(INPT) = I PT = PT+1; INPT = INPT+1 %REPEAT NCHAR = INPT-1 RELEASE(0) FROM OUT: ! ENTRY FOR EXTERNAL CALLS OSEG = -1 INSTR1_NAME(I) = ' ' %FOR I = 0, 1, 5 INPT = 1; OLD = 0; INSTR1_UNIT = 0 %IF STORE(1) = '.' %START; ! PR INSTR1_NXY = 0; ! TYPE = CHAR INSTR1_FSYS = 0 INPT = 3; INSTR1_SER = 13 -> INP %FINISH INSTR1_FSYS = 1; ! TYPE = FILE %IF STORE(2) = '.' %START; ! UNIT SPEC INSTR1_UNIT = STORE(1)-'0'; INPT = 3 %FINISH INSTR1_SER = DISC SER(INSTR1_UNIT) %CYCLE I = 0, 1, 6 CHAR = STORE(INPT); INPT = INPT+1 %EXITIF CHAR < '0' %OR CHAR > 'Z' INSTR1_NAME(I) = CHAR %REPEAT %IF CHAR > ' ' %START PRINTSYMBOL('?') ->STEP DOWN %FINISH INSTR1_FSYS = FSYS INP: SELECT INPUT(1); ! CONSIDER EFFECTS OF NO FILE? READSYMBOL(I) %UNTIL I < 0 %OR I = 1 %IF I < 0 %START EOF: CLOSE INPUT %IF INSTR1_FSYS # 0 %THEN INSTR1_FSYS = 0 %AND -> INP PRINTSTRING('*no ') PRINT NAME STEP DOWN: NEWLINE PROG = PROG-1 %CONTINUE %FINISH NEWPSECT == INSERT; ! ALLOCATE THE NEW PSECT %IF NEWPSECT == NULL %START FAULT = 7; -> ERROR %FINISH READSYMBOL(I); ! SKIP THE '0' !! READ THE FIRST BLOCK ( TASK DESCRIPTOR BLOCK) BC = WORD-10; ! BYTE COUNT I = WORD; ! SKIP LOAD ADDRESS %CYCLE I = 0, 1, 3 READSYMBOL(J) NEWPSECT_NAME(I) = J; ! FILL IN THE NAME %REPEAT N = ID %IF TFLAG > 0 %START SPST == GET NAME(NEWPSECT_NAME(0)) %IF SPST == NULL %THEN TFLAG = 0 %ELSESTART N = SPST_ID NEWPSECT_NAME(3) = NEWPSECT_NAME(3)+1 %C %UNTIL GETNAME(NEWPSECT_NAME(0)) == NULL !! THIS CHANGES THE NAME UNTIL IT IS UNIQUE %FINISH %FINISH SPST == GET PSECT(N) STK = WORD; ! PICKUP INITIAL VALUE OF SP BC = BC-2; ! AND STEP DOWN BC %CYCLE SEGS = 0, 1, 7 LSEGM(SEGS) = 0 %IF BC <= 0 %THEN FAULT = 3 %AND -> ERROR S == NEWPSECT_SEG(SEGS) READSYMBOL(ENTRY); BC = BC-1 %IF ENTRY > 3 %START; ! NEW FORMAT READSYMBOL(I); ! THROW AWAY SPARE BYTE BC = BC-1; ! -3 EVENTUALLY %FINISH %IF ENTRY = 3 %THEN PRINTSYMBOL('*') %AND OLD = OLD+1 -> SW(ENTRY) %UNLESS ENTRY > 7 SW(4): ! NO SEGMENT (NEW FORMAT) LEN = WORD; ! THROW DUMMY LEN AWAY BC = BC-2 SW(0): ! NO SEGMENT S = 0 %CONTINUE SW(6): ! READ/WRITE (NEW FORMAT) SW(2): ! READ/WRITE %IF GLA DISP = 0 %THEN GLA DISP = SEGS << 13 SW(5): ! READ ONLY (NEW FORMAT) SW(1): ! NORMAL, 1=READ ONLY %IF TFLAG <= 0 %OR GLA DISP #0 %START LEN = WORD+K'77' BC = BC-2 LSEGM(SEGS) = LEN&K'37700' LEN = LEN >> 6 N = SVC(GET CORE, LEN, SEGS) FAULT = 1 %AND -> ERROR %IF N = 0 %ELSE SW(7): ! SHARED SEG (NEW FORMAT) SW(3): ! SHARED SEG N = WORD BC = BC-2 N = SPST_SEG(SEGS PON(P) MAP VIRT(0, -1, MYISEG) %FINISH %END %ROUTINE OUTPUT REPLY MAP VIRT(0, -1, MYSEG) P_SERVICE=OUTID; P_REPLY=TTSER P_A1=0 PON(P) OUTID=0; OUT_LAST = 0 %END %ENDOFPROGRAM !************** !* BVTXS * !*FOR 2ND TT * !*DA:22.APR.80* !************** %CONTROL K'100001'; ! 'SYSTEM' PROGRAM (FAST ROUTINE ENTRY/EXIT) %PERMROUTINESPEC SVC(%INTEGER EP, P1, P2) %BEGIN %SYSTEMROUTINESPEC MAPHWR(%INTEGER SEGS) %SYSTEMROUTINESPEC LINKIN(%INTEGER SER) %RECORDFORMAT PF(%BYTEINTEGER SERVICE, REPLY, %C %INTEGER A1, A2, A3) %RECORDFORMAT TTF(%INTEGER KBS, KBD, TTS, TTD) %RECORDFORMAT BUFF(%INTEGER PT, LAST, %BYTEINTEGERARRAYNAME B) %RECORDFORMAT BUFFX(%INTEGER PT, LAST, ARRAYPT) %CONSTRECORD (BUFFX) %NAME NULL = 0 %CONSTINTEGER RUBOUT=K'177' %CONSTINTEGER CAN=24 %CONSTINTEGER CR=13 %CONSTINTEGER BELL=7 %CONSTINTEGER ESC=K'33' %CONSTINTEGER SI=K'17'; ! SHIFT INTO LOWER MODE (CTRL O) %CONSTINTEGER SO=K'16'; ! SHIFT OUT (CTRL N) %CONSTINTEGER DLE=K'20'; ! (CTRL P) %CONSTINTEGER EOT = K'04'; ! EOF (CTRL D) %CONSTINTEGER DC1=K'21'; ! CANCEL OUTPUT (CTRL Q) %CONSTINTEGER TAB = 9; ! TAB (IMPLEMENTED AS 3 SPACES) %OWNRECORD (TTF) %NAME TT=K'136520' %OWNINTEGER KBINT=-11 %OWNINTEGER TTINT=-12 %OWNINTEGER TTSER=19; ! ??? %OWNINTEGER CLIID=20 %OWNINTEGER TT STATUS=0, UPPER=32, TT IDLE=0, E PT=0, EFPT=0 %RECORD (PF) P2 %OWNRECORD (PF) %NAME P %CONSTINTEGER NO OF SPECS = 6 %OWNBYTEINTEGERARRAY SPECS(0:NO OF SPECS) = RUBOUT, CAN, ESC, CR, SI, SO, TAB %INTEGER CHAR, I, IN MODE, E LAST %INTEGER OUTID, SEG, CLI FLAG, CID, CADR %OWNRECORD (BUFF) OUT, INH %RECORD (BUFFX) %NAME BUFX, INX %RECORDFORMAT HF(%RECORD (HF) %NAME H, %RECORD (PF) P) %RECORDFORMAT QF(%RECORD (HF) %NAME H) %OWNRECORD (HF) %ARRAY HA(0:15) %OWNRECORD (HF) %NAME H %OWNRECORD (QF) HI, HO %OWNRECORD (QF) FREE %OWNINTEGER FIRST, LAST, CURR %OWNBYTEINTEGERARRAY BUFFER(0:255) %OWNBYTEINTEGERARRAY ECHOB(1:40) %SWITCH INS(0:NO OF SPECS), STATE(0:7) %ROUT RECO²¼ Æeîÿµ Æeöÿ® Æeüÿî üÿNa÷ ~ üÿNa÷ > üÿNa÷ 2 üÿu-üÿöÿ aÀe. üÿNa÷ Ì úÿNa÷  øÿNa÷ ¸ ôÿË, Æeèÿ ÆeüÿCX õeýÿüÿf üÿ÷ ú ÁEøÿÁe0 ºþñ^ Æeþÿ ÆeþÿÉb ÂAW= ÐÿÏd ÀEøÿÀe0 :þðr Æeüÿ ÀEüÿÀ üÿ&x DB÷ ìÿ7| Æeþÿ ýEøÿ Æeüÿl ÒBõ% âBW= òBõ% üÿõEùÿüÿ 0Cõ% @Cõ% aÀe´ Æeüÿ öÿ:² üÿNa÷ â üÿ÷ ( fþã¾ Æeüÿ3À ÿÿèÿX üÿW-üÿT ÀEüÿÀ ÀEüÿÀ ´ý»$ ìÿø& ÀEüÿÀ ÄD4-ê ðÿÎå Zü÷ à ìþD2 ÿÿöÿõ ÿÿüÿ ÁEÀÿf úÿNaæ üÿNaæ øÿNa7 ðÿÎEÀÿæ ôÿNaæ öÿNaæ òÿNa7 ðÿÎEÀÿæ ôÿNaæ öÿNaæ òÿNa7 Þüö< ÁEøÿu ðÿôÿõEøÿôÿ6 ðÿîÿ5 ïÿW=îÿ @lðÿÀå ðÿòÿõEÀÿòÿ ðÿøÿõEðÿøÿàJ ìÿ÷ êÿ÷ À 6Fõ%ÿÿüÿ õ%ÿÿöÿ$ Xü(T a÷ x 2üVZ F÷ X Èûãb öÿ}f îÿól ºFu-ðÿòÿ @òÿ òÿðÿqp lúõe ðÿqr øÿ÷ Î ^GÀàÎ àÈ ÷ àÈ Î ÷ üþ  ´¤<   ´¤ÿÿÿÿÿÿ HALT WAIT RTI BPT IOT RSET RTT NOP CC JMP RTS SPL SWAB BR BNE BEQ BGE BLT BGT BLE JSR CLR COM INC DEC NEG ADC SBC TST ROR ROL ASR ASL MARK MFPI MTPI SXT MOV CMP BIT BIC BIS ADD MUL DIV ASH ASHC XOR FADD FSUB FMUL FDIV SOB BPL BMI BHI BLOS BVC BVS BCC BCS EMT TRAP CLRB COMB INCB DECB NEGB ADCB SBCB TSTB RORB ROLB ASRB ASLB MFPD MTPD MOVB CMPB BITB BICB BISB SUB REALÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàÿÀÿøÿøÿÀÿ þÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿ þøÿøÿøÿøÿ ÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿ $$$$$$ $PON $POFF $PONOFF $MAPVIRT $MAPABS $GETID $ALARM $LINKIN $MAPHWR SUPRUN $RUN )_DADD MAP SHARED SEG(NEWID, SEGS, N) %FINISH %REPEAT !! ALL SPACE ALLOCATED %IF BC # 0 %THEN FAULT = 2 %AND -> ERROR !! PLACE REST OF INPUT LINE IN VIRTUAL SPACE (SEG 6) %CYCLE SEGS = 1, 1, 7 I = LSEGM(SEGS) %IF I > 0 %START MAP VIRT(NEWID, SEGS, 4) ! TO LOADER SEG 4 %CYCLE I = 0, 2, I-2 D1_X = K'100000'!I; D3_Z = 0 %REPEAT RELEASE(0) %UNLESS SEGS = 7 %FINISH %REPEAT GLAS_TOP = I; ! LIMIT OF AREA %IF I > K'200' %THEN LTYPE = 0 %ELSE LTYPE = 2 D1_X = K'100112'; ! IN STREAM IN(0) BUFFER AREA %WHILE INPT <= NCHAR %CYCLE D2_B = STORE(INPT) INPT = INPT+1; D1_X = D1_X+1 %REPEAT D2_B = NL; ! FOR SAFETY AND NO PARAMS RELEASE(0) !! NOW LOAD IT %CYCLE READSYMBOL(I) %UNTIL I = 1; READSYMBOL(I) CKSM = 1 BC = WORD-6; LOADPT = WORD %IF BC = 0 %THENEXIT; ! START BLOCK SEGS = LOADPT >> 13; ! GET SEG NO NEWSG: D1_X = LOADPT&K'17777'!K'100000' %IF TFLAG <= 0 %OR LOADPT <= GLA DISP %START !! 'GLA DISP' IS USUALLY NEGATIVE ! MAX2 = K'100000'!LSEGM(SEGS) %IF OSEG # SEGS %START; ! NEW SEGMENT RELEASE(OSEG); ! RELEASE IF ALLOCATED MAP VIRT(NEWID, SEGS, 4) ! MAP TO ME K'100000'-K'117776' OSEG = SEGS %FINISH %WHILE BC > 0 %CYCLE %IF D1_X > MAX2 %THEN FAULT = 5 %AND -> ERROR READSYMBOL(N) -> EOF %IF N < 0; ! END OF FILE CKSM = CKSM+N D2_B = N D1_X = D1_X+1; BC = BC-1 %IF D1_X&K'17777' = 0 %START SEGS = SEGS+1; LOADPT = 0; -> NEWSG %FINISH %REPEAT READSYMBOL(N); CKSM = CKSM+N %IF CKSM # 0 %AND OLD = 0 %START FAULT = 4; -> ERROR %FINISH %ELSE !* READ ONLY SEG OF SHARED PROG READSYMBOL(N) %AND BC=BC-1 %WHILE BC>=0 %FINISH %REPEAT %IF TFLAG = K'101010' %THEN I = K'140020' %ELSE I = K'140000' NEWPSECT_PRIO = 1; ! ONE IS STD PRIO FOR TASKS NEWPSECT_URS_PC = K'20010' NEWPSECT_URS_PS = I NEWPSECT_URS_SP = STK NEWPSECT_URS_R1 = GLA DISP NEWPSECT_URS_R0 = K'160112' ! MAP TO STREAM DEFINITIONS NEWPSECT_URS_R2 = LTYPE; ! NORMAL LOAD NEWPSECT_URS_R3 = UNIT!FSYS << 8 NEWPSECT_URS_R4 = REPLY TO HERE NEWPSECT_URS_R5 = GLA DISP RELEASE(OSEG) N = SVC(SCHEDULE, NEWID, 0) %IF TTFLAG # 0 %START; ! REPLY NOW TO CALLER P_SERVICE = TTFLAG; P_REPLY = 5 P_A = NEWID; ! PASS ID UP PON(P) %FINISH %FINISH %CONTINUE ERROR: PRINT NAME PRINTSTRING(' fault ') PRINTSYMBOL(FAULT+'0'); NEWLINE ERROR2: CLOSE INPUT RELEASE(OSEG) N = SVC(DELETE, NEWID, 0) PROG = PROG-1 %REPEAT %INTEGERFN WORD %INTEGER S, T READSYMBOL(S); READSYMBOL(T) CKSM = CKSM+S+T %RESULT = T << 8+(S&X'FF') %END %ROUTINE PRINT NAME %RECORD (STRD2F) %NAME IN2 IN2 == INSTR1 INSTR1_FSYS = 6; ! 'LENGTH OF STRING' PRINTSTRING(IN2_NAME) %END %ROUTINE RELEASE(%INTEGER SEG) %IF SEG #- 1 %START MAP VIRT(0, -1, 4); ! ALWAYS RELEASE LOADER SEG 4 %FINISH %END %ROUTINE MAP SHARED SEG(%INTEGER ID, SEG, SHARED NO) !! NOTE: CHANGES TO DISPS MADE ON 5:OCT:76 FOR 'IMPS' *K'016500'; *8; ! MOV ID, R0 *K'016501'; *6; ! MOV SEG, R1 *K'016502'; *4; ! MOV SHARED NO, R3 *K'104016'; ! EMT MAP SHARED (14) %END %RECORD (PSECTF) %MAP INSERT %CONSTINTEGER INSERTC = 4; ! SVC INSERT %RECORDFORMAT XF(%INTEGER X) %RECORD (XF) %NAME X %RECORD (D4F)X2 %RECORD (PSECTF) %NAME PS X == X2 X_X = SVC(INSERTC, 3, 3); ! INSERT AND MAP TO LOAD SEG 3 %RESULT == NULL %IF X_X = 0 PS == X2_PST; ! MAP PSECT TO IT NEWID = PS_ID %IF TASK LIMIT < NEWID %THEN TASK LIMIT = NEWID PS = 0; ! ZERO THE PSECT PS_ID = NEWID; ! REPLACE THE ID %RESULT == PS %END %RECORD (PSECTF) %MAP GET PSECT(%INTEGER ID) %INTEGER N %RECORD (D4F) %NAME D4; %RECORD (D1F)D1 D4 == D1 N = SVC(MAP PSECT, ID, 5); ! MAP TO MY K'100000' D1_X = N %RESULT == D4_PST %END %RECORD (PSECTF) %MAP GET NAME(%BYTEINTEGERNAME ST) %RECORD (PSECTF) %NAME PST %INTEGER PT, ID, J, CHAR, MATCH %RECORDFORMAT D5F(%BYTEINTEGERARRAYNAME STR) %RECORD (D2F) %NAME D2; %RECORD (D5F) D5 D2 == D5 D2_B == ST %CYCLE ID = TASK LOW LIMIT, 1, TASK LIMIT PST == GET PSECT(ID) %UNLESS PST == NULL %START %CYCLE J = 0, 1, 3 CHAR = D5_STR(J); MATCH = PST_NAME(J) %EXITIF CHAR <= ' ' >= MATCH -> NO %IF CHAR # MATCH %REPEAT %RESULT == PST %UNLESS PST_STATE = 0 %FINISH NO: %REPEAT %RESULT == NULL %END %ENDOFPROGRAM CLI12 ÆeÞÿµ âÿàÿuaàÿu àÿÞÿÎ ðÿѦ ðÿNa Ù ¸¨ ðÿÀE ÿ@-îÿ. òÿèÿõ° ^@ô¥ êÿ#º îÿñÿÄÆ âÿôÿ5 ðÿNa Ù RÌ °@õ% ¾@ô% Ò@Á%þÿ a÷ ü a÷ ä ú@÷ Ô Æeþÿ (Aõ%ÿÿ Æeöÿv îÿ÷ÿ úÿ5aúÿ{ öÿNa Ù S" Æeüÿ ¶A÷ õeýÿüÿf üÿ÷ ¬ ÁEøÿÁe0 ÆeøÿÔ6 øÿúÿuaúÿí< üÿB> øÿ!@ Æeìÿ§H îÿðÿuaðÿÒR øÿu-øÿìÿ7 øÿ\V ÿÿöÿW-öÿ öÿï\ öÿ@mîÿ öÿ@müÿ òÿÃ^  BÁ% vþ÷l Æeüÿït ÿÿüÿW-üÿ üÿ@m ÆeæÿÊ aW¬: 0,èÿìÿ üÿúÿuaúÿ ÿÿöÿW-öÿ öÿÎÀ üÿÁe  îÿðe ìÿzÆ ¬Cõ% aÁe; ðÿu-ðÿæÿ# ðÿáæ `ýFî HD÷ øÿÀe êÿ¦ú ÿÿöÿW-öÿ öÿõü aÁeâ @mêÿ& ý÷ 0 ¤D÷ * ÿÿöÿW-öÿ @møÿÀe ºü÷ à øÿðÕ a÷  öÿ<$ REðÅ öÿ92 ÿÂå0 ÿÂ`Âå0  E÷ . ìÿàH øÿðÅ ´Eð¥ ìÿòÿæ ðÿN` Ù gP ìÿÚX øÿðÕ øÿð¥" Ù ]j øú0n ÎþJr øÿ÷ h àÈ Î ÷ *ÿ À4Á>À À4Áÿÿÿÿÿÿ LOADUP stopped F A U L T term req. LOGON TASKS REGSS SEGSS PURGE KILLE FREEE HOLDE INTDE KICKE ABORT TASK? purged ! FILE 'CLI1S' !************** !* CLI1S * !* 21.APR.80 * !************** %PERMINTEGERFNSPEC SVC(%INTEGER EP, %INTEGER P1, %INTEGER P2) %PERMINTEGERMAPSPEC INTEGER(%INTEGER X) %PERMBYTEINTEGERMAPSPEC BYTEINTEGER(%INTEGER X) %PERMINTEGERFNSPEC ADDR(%INTEGERNAME X) %SYSTEMINTEGERFNSPEC GETID %CONTROL K'101011'; ! TRUSTED %RECORDFORMAT DUMREC(%INTEGER X) %CONSTRECORD (DUMREC) %NAME NULL = 0 %BEGIN %CONSTINTEGER DELETE = 5 %CONSTINTEGER SCHEDULE = 9 %CONSTINTEGER MAP PSECT = 16 %CONSTINTEGER TASK LOW LIMIT = 30 ! SEE SUPERVISOR FOR UPDATES %OWNINTEGER TASK LIMIT = 48 %CONSTINTEGER T POFF = 2 %CONSTINTEGER LOAD SER = 5; ! MAIN LOADER SERVICE %RECORDFORMAT UREGSF(%INTEGER R0, R1, R2, R3, R4, R5, PC, PS, SP) %RECORDFORMAT SEGF(%INTEGER PAR, PDR, DADD, USE) %RECORDFORMAT PSECTF(%INTEGER Q, %C %BYTEINTEGER ID, STATE, %BYTEINTEGERARRAY %C NAME(0:3), %BYTEINTEGER PRIO, %INTEGER POFFQ, %RECORD (UREGSF %C )URS, %INTEGER TRAPV, %RECORD (SEGF) %ARRAY SEG(0:7)) %RECORDFORMAT PF(%BYTEINTEGER SERVICE, REPLY, %INTEGER A, B, C) %CONSTBYTEINTEGERNAME INT CHAR = K'100060'; ! IN SEG 4 !!! %RECORDFORMAT D1F(%INTEGER X) %RECORDFORMAT D2F(%BYTEINTEGERNAME B) %RECORDFORMAT D3F(%INTEGERNAME Z) %RECORDFORMAT D4F(%RECORD (PSECTF) %NAME PST) %RECORD (PF)P %INTEGER ID, INPT %INTEGER TTFLAG, NCHAR, OSEG, CKSM %OWNINTEGER READ FLAG = 0, FSYS = 0, PROG = 1 %OWNBYTEINTEGERARRAY STORE(0:70) = 0, 'L', 'O', 'A', 'D', 'U', 'P', NL, 0(0) %ROUTINESPEC RELEASE(%INTEGER SEG) %ROUTINESPEC PUT READ ON(%INTEGER TYPE) %ROUTINESPEC OCTAL(%INTEGER N) %RECORD (PSECTF) %MAP %SPEC GET PSECT(%INTEGER ID) %RECORD (PSECTF) %MAP %SPEC GET NAME(%BYTEINTEGERNAME ST) %ROUTINESPEC PNAME(%BYTEINTEGERARRAYNAME NAME) %INTEGERFNSPEC CLI %RECORD (D1F)D1 %RECORD (D2F) %NAME D2 %RECORD (D3F) %NAME D3 D2 == D1; D3 == D2 ID = GETID -> FROM OUT; ! INITIAL SPECS LOAD %CYCLE PUT READ ON(0) %IF READ FLAG = 0 P_SERVICE = 0 POFF(P) !* VALID SERVICES ARE:- P_SERVICE = ID - REPLY FROM KEYBOARD %IF P_SERVICE = ID %START; ! REPLY FROM KEYBOARD NCHAR = P_A; ! GET NO OF CHARS READ FLAG = 0 %IF STORE(1) = NL %THENCONTINUE PROG = PROG+1; ! COUNT LOADED PROGS TTFLAG = 0; ! LOADED BY LOADER FROM OUT: ! ENTRY FOR EXTERNAL CALLS %IF CLI = 0 %THEN PROG = PROG-1 %AND %CONTINUE ! NOT AN INSTRUCTION, SO PASS TO LOADER P_SERVICE = LOAD SER; P_REPLY = ID D2_B == STORE(0) P_A = 1; P_B = D1_X; P_C = 0 PON(P) %ELSE %IF P_A = 2 %START; ! PROG STOPPING %IF P_C = 0 %START %IF PROG # 1 %THEN PRINTSTRING('stopped %ELSE %IF P_C #- 2 %START PRINTSTRING('F A U L T '); WRITE(P_C, 1) %ELSE PRINTSTRING('term req.') %FINISH NEWLINE %FINISH PROG = PROG-1 %IF PROG <= 0 %THEN PROG = 0 %AND PUT READ ON(1) %CONTINUE %FINISH %CYCLE; %REPEAT %FINISH %REPEAT %ROUTINE RELEASE(%INTEGER SEG) %IF SEG #- 1 %START MAP VIRT(0, -1, 4); ! ALWAYS RELEASE LOADER SEG 4 %FINISH %END %ROUTINE PUT READ ON(%INTEGER TYPE) %RECORDFORMAT P3F(%BYTEINTEGER SERVICE, REPLY, %INTEGER A, %C %BYTEINTEGERNAME B, %INTEGER C) %RECORD (P3F)P3 P3_SERVICE = 1; P3_REPLY = ID P3_B == STORE(1) %IF TYPE = 0 %THEN P3_A = 2 %ELSE P3_A = 5 %IF PROG < 0 %THEN PROG = 0 P3_C = PROG; ! SYSTEM IDLE FLAG READ FLAG = 1; ! WAITING FOR REPLY PON(P3) %END %ROUTINE OCTAL(%INTEGER N) %INTEGER I SPACE PRINTSYMBOL(N >> I&7+'0') %FOR I = 15, -3, 0 %END %RECORD (PSECTF) %MAP GET PSECT(%INTEGER ID) %INTEGER N %RECORD (D4F) %NAME D4; %RECORD (D1F)D1 D4 == D1 N = SVC(MAP PSECT, ID, 5); ! MAP TO MY K'100000' D1_X = N %RESULT == D4_PST %END %RECORD (PSECTF) %MAP GET NAME(%BYTEINTEGERNAME ST) %RECORD (PSECTF) %NAME PST %INTEGER PT, ID, J, CHAR, MATCH %RECORDFORMAT D5F(%BYTEINTEGERARRAYNAME STR) %RECORD (D2F) %NAME D2; %RECORD (D5F) D5 D2 == D5 D2_B == ST %CYCLE ID = TASK LOW LIMIT, 1, TASK LIMIT PST == GET PSECT(ID) %UNLESS PST == NULL %START %CYCLE J = 0, 1, 3 CHAR = D5_STR(J); MATCH = PST_NAME(J) %EXITIF CHAR <= ' ' >= MATCH -> NO %IF CHAR # MATCH %REPEAT %RESULT == PST %UNLESS PST_STATE = 0 %FINISH NO: %REPEAT %RESULT == NULL %END %ROUTINE PNAME(%BYTEINTEGERARRAYNAME NAME) %INTEGER I PRINTSYMBOL(NAME(I)) %FOR I = 0, 1, 3 %END %INTEGERFN CLI %RECORDFORMAT D1F(%STRINGNAME S) %RECORDFORMAT D2F(%BYTEINTEGERNAME N) %RECORD (D1F)D1 %RECORD (D2F) %NAME D2 %RECORD (PSECTF) %NAME PST %INTEGER I, J, K, ID, CHAR, TYPE %CONSTINTEGER COM LIMIT = 10 %CONSTSTRING (5) %ARRAY COMMS(0:COM LIMIT) = 'LOGON', %C 'TASKS', 'REGS', 'SEGS', 'PURGE', 'KILL', 'FREE', 'HOLD', 'INT', 'KICK', 'ABORT' %SWITCH COMSW(0:COM LIMIT) %RECORDFORMAT REGF(%INTEGERARRAY R(0:8)) %RECORD (REGF) %NAME REG %CONSTSTRING (2) %ARRAY REGS(0:8) = 'R0', 'R1', 'R2', 'R3', %C 'R4', 'R5', 'PC', 'PS', 'SP' %RECORD (SEGF) %NAME SEG INPT = 1 INPT = INPT+1 %WHILE 'A' <= STORE(INPT) <= 'Z' %AND INPT <= %C NCHAR STORE(0) = INPT-1 D2 == D1 D2_N == STORE(0) %CYCLE I = 0, 1, COM LIMIT %IF COMMS(I) = D1_S %START %IF I = 8 %START CHAR = STORE(INPT+1); INPT = INPT+2 %FINISH %IF I >= 2 %START PST == GET NAME(STORE(INPT+1)) %IF PST == NULL %START PRINTSTRING('TASK? %RESULT = 0 %FINISH %FINISH -> COMSW(I) %FINISH %REPEAT %RESULT = 1 COMSW(1): ! TASKS %CYCLE ID = TASK LOW LIMIT, 1, TASK LIMIT PST == GET PSECT(ID) %UNLESS PST == NULL %START PNAME(PST_NAME) OCTAL(PST_ID); OCTAL(PST_STATE) NEWLINE %FINISH %REPEAT -> OK COMSW(2): ! REGS OF NOMINATED TASK REG == PST_URS %CYCLE I = 0, 1, 8 PRINTSTRING(REGS(I)); OCTAL(REG_R(I)); SPACE NEWLINE %IF I = 4 %REPEAT NEWLINE -> OK COMSW(3): ! SEGS %CYCLE I = 0, 1, 7 SEG == PST_SEG(I) OCTAL(SEG_PAR); OCTAL(SEG_PDR) OCTAL(SEG_DADD); NEWLINE %REPEAT OK: %RESULT = 0 COMSW(4): ! PURGE PROG = PROG-1 PST_STATE = PST_STATE!K'200' PNAME(PST_NAME) PRINTSTRING(' purged I = SVC(DELETE, PST_ID, 0) -> OK COMSW(5): ! KILL PST_URS_PC = K'020000' %IF PST_STATE&(T POFF!K'200') # 0 %OR PST_STATE = 0 %START PST_STATE = PST_STATE&K'177' DO SCH: I = SVC(SCHEDULE, PST_ID, 0) %FINISH -> OK COMSW(0): ! LOG FSYS = (STORE(INPT+1)-'0') << 3+STORE(INPT+2)-'0' NEWLINE -> OK COMSW(6): ! FREE TASK (PUT ON CPUQ COMSW(9): ! KICK TASK TYPE = 0 KICK IT: PST_STATE = PST_STATE&(K'177') %IF PST_STATE # T POFF %THEN ->DO SCH P_SERVICE = PST_ID; P_REPLY = 7; P_A = TYPE; PON(P) -> OK COMSW(10): ! ABORT TASK TYPE = 1 -> KICK IT COMSW(7): ! WAIT PROCESS PST_STATE = PST_STATE!K'200' -> OK COMSW(8): ! INT 'CHAR' 'TASK' %IF PST_ID > K'42' %START; ! NOT SYSTEM TASKS MAP VIRT(PST_ID, 7, 4) INT CHAR = CHAR RELEASE(0); ! RELEASE THE SEG %FINISH -> OK %END %ENDOFPROGRAM LOAD¼Á øÿÝF ´ÿ²ÿua²ÿu ²ÿ°ÿ´ò èÿûö ìÿßü ìÿNa Ù Æþ F@õ% R@õ% íÿÀE òÿ¾ÿ r@õ% íÿÀE tóÿÀEøÿ5 Þÿ6( íÿÁE Ù g* ðÿÀE Äÿ), Äÿ÷ Öÿ¥4 ÖÿÌÿõ Ìÿ²8 ÿÿÆÿÕ@ ÿÿæÿW-æÿ :àÕF BAô¥. 4à-J ;à¢L 8àßN ;àÂT fAô¥. ÿÀå0 ÖÿÔZ :àÀE 8àï^ ÿÿæÿW-æÿ æÿö` ¶Aõ¥0 ¸ÿ<àÄf ÔAõ¥ ;à½v æÿNa÷ ¢ B÷ È 0B÷ ~ æÿNa÷ T âÿï¢ æÿ ¤ ÿÿæÿW-æÿ æÿ(¦ àÿNa÷ $ æÿ@möÿp èÿÚÿÅ® öÿÁe ôÿ'² Úÿë¶ öÿÀe ôÿ÷ Êÿ¼Ä þBõå âÿöÆ ÿÿÞÿW-Þÿ Þÿ÷È BmöÿÂe ÜÿNa÷ Z XCõ% æÿNa÷ D âÿhÖ nCõ% Àÿ/Ú äÿ¢â âÿUä ÞÿWt Âÿsò äÿ9ú ÜCõå @aÁE?Àp  ÿùþ túÿÂE Þÿ÷ Ô *Dõå @môÿ5 ÞÿW-Þÿ Þÿæ"  ÿæÿµ$ Ù >( þÿæÿu-æÿ æÿÀU ÎDõ% äDõ% ºÿv: ´ÿ0< þDu-ÌÿÖÿ æÿNa÷ j æÿNa÷ ^ ÎÿXT tEWtóÿÁEøÿu ÎÿÀE u-ÂÿÎÿc  ÿÃU Òÿ©` ²Eu-ÞÿÆÿ ÞÿÆÿ¦j àEu-Òÿ´ÿ ÚÿNa÷ ² ·ÿÁE ·ÿêv âÿ=z $FW=´ÿÿ ÚÿNa÷ l ·ÿÀE ÿ@mÚÿ5 ÚÿNa÷ : ~Fõ% ÀæÿF ÚÿÝ° ØÿîÿN¶ ìÿNa ٠㸠ÈÿÎe0 À À¾Àÿÿÿÿÿÿ *no fault y ES,7,0,7G0$50N,17,0,0G0$52NEWLINE,7,0,7G0G0$55PRINTSTRING,7,0,7G0$57S,65,255,0G0$59PRINTSYMBOL,7,0,7G0$60N,17,0,0G0$61WRITE,7,0,7G0$63N,17,0,0$64M,17,0,0G0$65CLOSEINPUT,7,0,7G0G0$68CLOSEOUTPUT,7,0,7G0G0$71DZXCF,84,0,0G2$1248X,17,0,0G2$73XPON,7,0,7G0$75P,82,0,0,71G0$76XPOFF,7,0,7G0$78P,82,0,0,71G0$79XPONOFF,7,0,7G0$81P,82,0,0,71G0$82XMAPVIRT,7,0,7G0$83ID,17,0,0$85HISSEG,17,0,0$87MYSEG,17,0,0G0$84PON,7,0,4G0$86P,82,0,0,71G0$86POFF,7,0,4G0$88P,82,0,0,71G0$89PONOFF,7,0,4G0$91P,82,0,0,71G0$92MAPVIRT,7,0,4G0$93ID,17,0,0$95HISSEG,17,0,0$97MYSEG,17,0,0G0$94MAPABS,24,0,4G0$96VAD,17,0,0$97LEN,17,0,0$99ID,17,0,0G0$96ZX,84,0,0G2$1246X,17,0,0G2$99PUSH,7,0,7G0$101Q,82,0,0,96$103E,82,0,0,96G0$101POP,89,0,7,96G0$103Q,8 %BEGIN %RECORDFORMAT TTF(%INTEGER RSR,RDB,TSR,TDB) %CONSTRECORD (TTF) %NAME TT = K'117560'; ! IN SEG 4 %INTEGER I, J, K %INTEGERARRAY A(0:100) MAP HWR(4) TT = 0 K = 0 %CYCLE %WHILE TT_RSR&K'200' = 0 %CYCLE;%REPEAT A(K) = TT_RDB; K = K+1 %IF A(K-1) = '?' %THEN %EXIT %REPEAT TT_RSR = TT_RSR&K'100' WRITE(K, 1); NEWLINE %STOP %IF K = 0 %CYCLE I = 1, 1, K-1 WRITE(A(K), 1) %REPEAT NEWLINE %ENDOFPROGRAM !*************************** !* SIN009 * !* DATE: 22.APR.80 * !* SUPERVISOR INITIALISER * !* SUPERVISOR RELEASE 9 * !*************************** %CONTROL K'100001'; ! MUL+TRUSTED %PERMROUTINESPEC SVC %PERMINTEGERMAPSPEC INTEGER(%INTEGER X); ! USED IN INIT %RECORDFORMAT DUMMY(%INTEGER X) %CONSTRECORD (DUMMY) %NAME NULL=0 %CONSTINTEGER TASK LOW LIMIT=30 %CONSTINTEGER TASK USER LIMIT = 35 %CONSTINTEGER TASK LIMIT=55 %CONSTINTEGER FREE CELLS=50 %CONSTINTEGER NO OF SERVICES=50 %CONSTINTEGER FRAG NO=10 %CONSTINTEGER PSECT LENGTH=48 %CONSTINTEGER SVC LIMIT=19 %CONSTINTEGER INT LIMIT=-50 %CONSTINTEGER K SEG LIMIT=80 %CONSTINTEGERNAME MAX CORE PT = K'40'; ! ACTUAL LOC'N OF PTR %CONSTINTEGER HIGHEST PRIORITY = 3 %CONSTINTEGER TTID=30; ! TASK LO LIMIT %CONSTINTEGER DKID=31; ! " " " +1 %CONSTINTEGER DIRID=32; ! " " " +2 %CONSTINTEGER LOADID=33; ! " " " +2 %CONSTINTEGER CLI=34; ! " " " +3 %CONSTINTEGER MOTHER=35; ! " " " +4 %CONSTINTEGERNAME PS=K'177776'; ! STATUS WORD %CONSTINTEGERNAME STACK LIMIT=K'177774' %RECORDFORMAT EF(%RECORD (EF) %NAME LINK, %INTEGER ID, A1) %RECORDFORMAT QF(%RECORD (EF) %NAME E) %RECORDFORMAT TF(%RECORD (TF) %NAME LINK, %INTEGER ID, T) %RECORDFORMAT KSEGF(%INTEGER USE, DADD, PAR, PDR) %RECORDFORMAT KSEGLF(%RECORD (KSEGLF) %NAME L, %INTEGER B, C, D) %RECORDFORMAT UREGSF(%INTEGER R0, R1, R2, R3, R4, R5, PC, %C PS, SP) %RECORDFORMAT SEGF(%INTEGER PAR, PDR, %RECORD (KSEGF) %NAME KSL, %C %INTEGER USE) %RECORDFORMAT PSECTF(%RECORD (QF)%NAME E,%BYTEINTEGER ID, STATE, %C %BYTEINTEGERARRAY NAME(0:3), %C %BYTEINTEGER PRIO, %RECORD (QF) POFFQ, %C %RECORD (UREGSF) URS, %INTEGER TRAPV, %C %RECORD (SEGF) %ARRAY SEG(0:7)) %RECORDFORMAT PSTF(%RECORD (PSECTF) %NAME P) %RECORDFORMAT PF(%BYTEINTEGER SERVICE, REPLY, %C %INTEGER A1, A2, A3) %RECORDFORMAT P2F(%INTEGER D, A1, A2, A3) %RECORDFORMAT MAINPF(%RECORD (MAINPF) %NAME L, %RECORD (P2F) P) %RECORDFORMAT STOREF(%INTEGER LEN, BLOCK NO) %RECORDFORMAT ADDRFN(%RECORD (ADDRFN) %NAME PSECTA, LAST32, COREA, %C %INTEGER CORE) %CONSTRECORD (ADDRFN) %NAME ADDS=K'130' %RECORDFORMAT D1F(%INTEGER X) %RECORDFORMAT D2F(%RECORD (QF) %NAME X) %EXTERNALRECORD (KSEGLF) %NAMESPEC FREE SEGL %EXTERNALRECORD (QF) %ARRAYSPEC CPUQ(0:HIGHEST PRIORITY) !* %EXTERNALRECORD (PSTF) %ARRAYSPEC PSECTA(TASK LOW LIMIT:TASK LIMIT) %EXTERNALRECORD (TF) %ARRAYSPEC ONTMQ(TASK LOW LIMIT:TASK LIMIT) %EXTERNALRECORD (MAINPF) %ARRAYSPEC PARAMS(0:FREE CELLS) %EXTERNALRECORD (STOREF) %ARRAYSPEC STORE(0:FRAG NO) %EXTERNALRECORD (KSEGLF) %ARRAYSPEC KSEGL(1:K SEG LIMIT) ! %EXTERNALRECORD (P2F) %ARRAYSPEC LAST THIRTY2(0:15) %EXTERNALBYTEINTEGERARRAYSPEC SER MAP(INT LIMIT:NO OF SERVICES) %EXTERNALROUTINE INITIALISE %ROUTINESPEC PNT(%INTEGER I) %ROUTINESPEC FILL SEG(%RECORD (SEGF) %NAME SEG, %C %RECORD (KSEGF) %NAME KS, %INTEGER PAR, PDR) !* %ROUTINESPEC PUSH(%RECORD (QF) %NAME Q, %RECORD (EF) %NAME E) !*********************************************** !* SUPERVISOR STATES * !*********************************************** %CONSTINTEGER IDLE ST=-1 %CONSTINTEGER TASK ST=0 !********************************************** !* TASK STATES * !********************************************** %CONSTINTEGER T WAIT=1 %CONSTINTEGER T POFF=2 %CONSTBYTEINTEGER T CPUQ=8 %CONSTBYTEINTEGER T RUN=16 %CONSTBYTEINTEGER T SUSP=K'200' !************************************************ !* STATIC CORE LOCATIONS * !************************************************ %CONSTINTEGERNAME INT VALUE=K'40' %CONSTINTEGERNAME ALARM F=K'44' %CONSTINTEGERNAME PSECT AREA=K'50' %CONSTINTEGERNAME FAULT TYPE=K'52' %CONSTRECORD (PSTF) %NAME LAST PSECT = K'54' %CONSTINTEGERNAME EXTRA INT INFO = K'56' !************************************************* %OWNINTEGERARRAY PRESET(0:287)= %C 0(2),M'TT',M'00',3,0,0(6),K'20012',K'140000',K'120200',0,0(32), 0(2),M'ID',M'CS',3,0,0(6),K'20012',K'140000',K'120200',0,0(32), 0(2),M'ID',M'TR',3,0,0(6),K'20012',K'140000',K'120200',0,0(32), 0(2),M'OL',M'DA',1,0,0(6),K'20010',K'140000',K'120300',0,0(32), 0(2),M'LC',M' I',1,0,0(6),K'20010',K'140000',K'120200',0,0(32), 0(2),M'OM',M'HT',3,0,0(6),K'20010',K'140000',K'120200',0,0(32) !*************************************************** %RECORD (PSECTF) %NAME PSECT %RECORD (KSEGF) %NAME KS1 %EXTERNALRECORD(QF) %NAMESPEC FREE PARAM %CONSTINTEGERNAME FTRAP = 4, F FLAG = K'60110' %CONSTINTEGERNAME FP = K'120000' %INTEGER SFTP %ROUTINE PUSH(%RECORD (QF) %NAME Q, %RECORD (EF) %NAME E) %IF Q_E==NULL %THEN E_LINK==E %ELSESTART E_LINK==Q_E_LINK Q_E_LINK==E %FINISH Q_E==E %END %RECORDFORMAT SF(%INTEGERARRAY SEG(0:7)) %CONSTRECORD (SF) %NAME K PAR=K'172340' %CONSTRECORD (SF) %NAME K PDR=K'172300' %CONSTRECORD (SF) %NAME U PAR=K'177640' %CONSTRECORD (SF) %NAME U PDR=K'177600' %CONSTINTEGERNAME SR0=K'177572' %CONSTINTEGERNAME SR2=K'177576' %CONSTINTEGERNAME CLOCK V=K'177546' %RECORDFORMAT DEDLOC F(%INTEGERARRAY D(0:4)) %CONSTRECORD (DEDLOCF) %NAME DEDLOC=K'60000' %RECORDFORMAT SAVEAF(%INTEGERARRAY A(0:20)) %CONSTRECORD (SAVEAF) %NAME S60120 = K'060120' %CONSTRECORD (SAVEAF) %NAME S400 = K'000400' %INTEGER I, PT, BASE, TOP CORE, ID, TOP, PERM, PERML, STK, TC %INTEGER KST, STKL, CHAR, IOSEG, MAX CORE %RECORDFORMAT D1F(%INTEGERNAME X) %RECORDFORMAT D2F(%RECORD (QF) %NAME X) %RECORD (D1F) %NAME D1 %RECORD (D2F) D2 MAX CORE = MAX CORE PT; ! PICK UP AMOUNT OF CORE %CYCLE I=0, 1, 7 K PAR_SEG(I)=I<<7; K PDR_SEG(I)=K'77406' %REPEAT K PAR_SEG(7)=K'7600'; ! MAP TO HARDWARE VECTORS SR0=1; ! GET IT GOING PS=K'340'; ! ENSUE UNINTERRUPTABLE CLOCKV=K'100' !! STACK LIMIT=K'400' D1==D2 KST=2 ALARM F=0 %FOR I=TASK LOW LIMIT, 1, TASK LIMIT %CYCLE ONTMQ(I)_ID=I %REPEAT ID=TASK LOW LIMIT PERM=DEDLOC_D(3)>>6; ! PICKUP ADDR OF PERM TOP=DEDLOC_D(5)>>6 PERML=((TOP-PERM-1)<<8)&K'177400'!2; ! READ ONLY TOP CORE=DEDLOC_D(0); TC=TOP CORE %CYCLE I=K'100000', 2, K'137336' INTEGER(I)=0 %REPEAT PSECT AREA=TOP CORE TOP CORE=TOP CORE+(TASK LIMIT-TASK USER LIMIT)*PSECT LENGTH*2 I=5 %CYCLE %EXITIF DEDLOC_D(I)=TC D1_X==PRESET(PT) PSECTA(ID)_P==D2_X PSECT==D2_X PSECT_ID=ID PT=PT+PSECT LENGTH BASE=DEDLOC_D(I)>>6 STK=DEDLOC_D(I+1)>>6 TOP=DEDLOC_D(I+2)>>6 FILL SEG(PSECT_SEG(2), KSEGL(KST), BASE, (STK-BASE-1)<<8!6) KST = KST+1; ! FILL IN CODE ADDRESS FILL SEG(PSECT_SEG(6), KSEGL(KST), STK, (TOP-STK-1)<<8!6) KST = KST+1; ! FILL IN STACK AREA PSECT_SEG(7)_PAR=K'7600' PSECT_SEG(7)_PDR=K'77406' SER MAP(ID)=ID PSECT_SEG(1)_PAR=PERM; PSECT_SEG(1)_PDR=PERML PSECT_SEG(1)_KSL==KSEGL(1) PSECT_URS_R1=K'140000'; ! VIRT ADD OF TOP OF STK PSECT_URS_SP=K'140000'+(TOP-STK)<<6 %IF LOADID <=ID<=MOTHER %START %IF ID=LOADID %THEN IOSEG=K'1400' %AND CHAR=X'0A41' %ELSEC IOSEG=K'200' %AND CHAR=X'000A' FILL SEG(PSECT_SEG(7), KSEGL(KST), %C TOP CORE>>6, (IOSEG-K'100')<<2!6); ! FILL IN I/O SEG TOP CORE=TOP CORE+IOSEG; KST=KST+1 PSECT_URS_R2=2; ! INDICATE LOADER TO PERM PSECT_URS_R4 = X'0100'; ! AND USE MAIN TT INTEGER(STK<<6+K'10')=CHAR; ! A,NL PSECT_URS_R0=K'140010'; ! POINTS TO ABOVE %FINISH !! ROUTINE SCHEDULR PUT IN LINE PSECT_STATE=(PSECT_STATE&T SUSP)!T CPUQ PUSH(CPUQ(PSECT_PRIO), PSECT) !! END OF ROPUTINE SCHEDULE I=I+2; ID=ID+1 %REPEAT !! THE NEXT SECTION DETERMINS THE TOP OF STORE SFTP = FTRAP; ! REMEMBER THE ADDRESS ERROR TRAP ADDR FTRAP = K'60100'; ! SET IT TO INTERRUPT TO 060100 F FLAG = 1; I=K'1000'; ! F FLAG IS ADDRESS FAULT FLAG %CYCLE KPAR_SEG(5) = I %IF FP # 0 %THEN PT = 0; ! ACCESS IT (1 WORD INSTR) %EXIT %IF F FLAG = 0; ! TRAPPED OUT I = I+K'200'; ! NEXT 4K %REPEAT MAX CORE = I ADDS_CORE = I FTRAP = SFTP; ! RESTORE ADDRESS ERROR TRAP I=TOP CORE>>6 STORE(0)_BLOCK NO=I STORE(0)_LEN=MAX CORE-I ADDS_PSECTA==PSECTA(TASK LOW LIMIT) ! ADDS_LAST32==LAST THIRTY2(0) ADDS_COREA==STORE(0) PARAMS(I)_L==PARAMS(I+1) %FOR I=0, 1, FREE CELLS-1 FREE PARAM==PARAMS(0) %CYCLE I=KST, 1, K SEG LIMIT-1 KSEGL(I)=0 KSEGL(I)_L==KSEGL(I+1) %REPEAT FREE SEGL==KSEGL(KST) KS1==KSEGL(1) KS1_PAR=PERM; KS1_PDR=PERML KS1_USE = 100 K PDR_SEG(I)=0 %FOR I=4, 1, 6 PNT(13); PNT(NL) PNT('D'); PNT('E'); PNT('I'); PNT('M'); PNT('O'); PNT('S') PNT(' '); PNT('V'); PNT('S'); PNT('N'); PNT(' ') PNT('9'); PNT(13); PNT(NL); PNT(NL) S400 = S60120; ! COPY AREA OF STORE FROM 60120 TO 400 %ROUTINE PNT(%INTEGER I) %CONSTINTEGERNAME TTS = K'177564' %CONSTINTEGERNAME TTD = K'177566' TTD = I %WHILE TTS&K'200' = 0 %CYCLE; %REPEAT %END %ROUTINE FILL SEG(%RECORD (SEGF) %NAME SEG, %RECORD (KSEGF) %NAME KS, %C %INTEGER PAR, PDR) SEG_PAR=PAR; SEG_PDR=PDR; SEG_KSL==KS KS_USE=1 KS_PAR=PAR; KS_PDR=PDR KS_DADD=0 %END %END %ENDOFFILE INESPEC DRIVE TT(%INTEGER CHAR) %ROUTINESPEC ECHO(%INTEGER X) %ROUTINESPEC ECHO BELL %ROUTINESPEC TRANSFER INPUT %ROUTINESPEC OUTPUT REPLY %ROUTINESPEC PLANT(%INTEGER N) !! %CONSTBYTEINTEGERARRAY CANM(0:3)= 3, '#', CR, NL !! %CONSTBYTEINTEGERARRAY CLIM(0:3)= 3, '<', 8, '>' %CONSTINTEGER MYSEG=4, MSA=K'100000' %CONSTINTEGER MYISEG=3, MISA=K'060000' MAPHWR(5); ! MAP REGS TO SEG 5 LINKIN(TTSER); LINKIN(KBINT); LINKIN(TTINT) TT_KBS=K'100' BUFX==OUT INX==INH %CYCLE I = 15, -1, 0 PUSH(FREE, HA(I)) %REPEAT %CYCLE %IF OUTID=0 %AND %NOT HO_H == NULL %START H == POP(HO); PUSH(FREE, H) P == H_P %ELSE P == P2 P_SERVICE = 0 POFF(P) %FINISH %IF P_SERVICE=KBINT&X'FF' %START CHAR=TT_KBD&127; ! STRIP PARITY BIT %CYCLE I=NO OF SPECS, -1, 0 ->INS(I) %IF CHAR=SPECS(I) %REPEAT !! NORMAL CHAR %IF CHAR>='A'+K'40' %AND CHAR<='Z'+K'40' %THENC CHAR=CHAR-UPPER; ! TURN TO UPPER PLANT(CHAR) %CONTINUE INS(0): ! RUBOUT %IF LAST#CURR %START LAST = (LAST-1)&255 ECHO(8); ECHO(' '); ECHO(8) %ELSE ECHO BELL %CONTINUE INS(1): ! CANCEL %IF LAST#CURR %START LAST = CURR ECHO('#'); ECHO(CR); ECHO(NL); E LAST=E PT %ELSE ECHO BELL %CONTINUE INS(2): ! ESCAPE - GO TO CLI CLI FLAG = 1 LAST = 0; CURR = 0; FIRST = 0 INS2: ECHO('$'); ECHO BELL %CONTINUE INS(4): ! SHIFT IN UPPER = 0; %CONTINUE INS(5): ! SHIFT OUT UPPER = 32; %CONTINUE INS(6): ! TAB PLANT(' '); PLANT(' '); PLANT(' '); %CONTINUE INS(3): ! CR PLANT(NL); CURR = LAST TRANSFER INPUT E LAST=E PT; ! ALLOW IT TO DO OUTPUT NOW %ELSE %IF P_SERVICE=TT INT&X'FF' %START ->STATE(TT STATUS) DO OUT: STATE(5): ! GOING IDLE TT STATUS=0 %IF E PT>0 %THEN TT STATUS=2 %ELSESTART %IF OUT_LAST#0 %THEN TT STATUS=1 %FINISH ->STATE(TT STATUS) STATE(1): ! NORMAL OP CHAR=OUT_B(OUT_PT); OUT_PT=OUT_PT+1 %IF OUT_PT>=OUT_LAST %THEN TT STATUS=5 %AND OUTPUT REPLY DRIVE TT(CHAR) STATE(0): %CONTINUE STATE(2): ! ECHO OP %IF EFPTDO OUT %FINISH %FINISH %IF EFPT=E PT %THEN E PT=0 %AND EFPT=0 %CONTINUE STATE(3): ! NORMAL CR STATE(4): ! ECHO CR STATE(7): ! END OF LINE - NEWLINE TT STATUS=5 DRIVE TT(NL+128) %CONTINUE STATE(6): ! IN ECHO LINE %CYCLE; %REPEAT %ELSE %IF P_SERVICE=TT SER %START; ! USER REQUEST %IF P_A1=1 %START; ! OUTPUT REQUEST %IF OUTID#0 %START H == POP(FREE) %IF H == NULL %START REJ: P_SERVICE= P_REPLY; P_REPLY = TT SER P_A1 = 1; PON(P) %CONTINUE %FINISH H_P = P; ! COPY P INTO SAFE PLACE PUSH(HO, H); ! AND QUEUE IT %CONTINUE %FINISH OUTID=P_REPLY SEG=P_A2>>13; ! SEG NO OF BUFFER MAP VIRT(OUTID, SEG, MY SEG) BUFX_ARRAYPT=MSA+(P_A2&K'17777') OUT_PT=0; OUT_LAST=P_A3; ! LENGTH %IF OUT_LAST=0 %THEN OUTPUT REPLY %ELSESTART ->DO OUT %IF TT STATUS=0; ! TT IDLE %FINISH %ELSE !! INPUT REQUEST %IF P_A1 # 0 %START CID = P_REPLY; CADR = P_A2 %CONTINUE %IF P_A3 # 0; ! JUST READ FROM CLI %FINISH H == POP(FREE) -> REJ %IF H == NULL H_P = P; ! COPY P INTO A SAFE PLACE PUSH(HI, H); ! AND Q IT %IF P_A1#0 %AND FIRST=LAST %THEN -> INS2 %IF FIRST#CURR %START; ! NON EMPTY LINE TRANSFER INPUT %FINISH %FINISH %FINISH %REPEAT %ROUTINE DRIVE TT(%INTEGER CHAR) %IF CHAR=NL %START TT STATUS=TT STATUS+2 CHAR=CR %FINISH TT_TTD=CHAR TT_TTS=TT_TTS!K'100'; ! INTS ON %END %ROUTINE ECHO(%INTEGER X) %RETURN %IF E PT>40 E PT=E PT+1; ECHOB(E PT)=X %IF TT STATUS=0 %OR TT STATUS=6 %START TT STATUS=2 DRIVE TT(X) EFPT=1 %FINISH %END %ROUTINE ECHO BELL ECHO(BELL); E LAST=E PT %END %ROUTINE PLANT(%INTEGER CHAR) BUFFER(LAST) = CHAR LAST = (LAST+1)&255 ECHO(CHAR) %END %ROUTINE TRANSFER INPUT %INTEGER SEG, I, ID, ADR, N %IF CLI FLAG # 0 %START; ! PREEMPTED BY CLI ID = CID; ADR = C ADR; CLI FLAG = 0 %ELSE %IF HI_H == NULL %THEN %RETURN H == POP(HI); PUSH(FREE, H) ID = H_P_REPLY; ADR = H_P_A2 %FINISH %IF ID#0 %START SEG=ADR>>13 MAP VIRT(ID, SEG, MYISEG) INX_ARRAY PT=MISA+(ADR&K'17777') %CYCLE I = 0, 1, 80 N = BUFFER(FIRST) INH_B(I) = N FIRST = (FIRST+1)&255 %EXIT %IF N = NL %REPEAT P_SERVICE=ID; P_REPLY=TTSER P_A1=I+1 PON(P) MAP VIRT(0, -1, MYISEG) %FINISH %END %ROUTINE OUTPUT REPLY MAP VIRT(0, -1, MYSEG) P_SERVICE=OUTID; P_REPLY=TTSER P_A1=0 PON(P) OUTID=0; OUT_LAST = 0 %END %ENDOFPROGRAM