xþ÷ b ÄÐzþ÷ T zþ÷ T xþ÷ : zþ÷ 0 zþ÷ 2 Ã-\ý öüÄe w ÌÿÁ þÿ°üï ÿÿ¨üë ûÿrüÐ úÿhüË ùÿ`üÇ øÿXüà ÷ÿPü¿ öÿHü· õÿ<üµ ôÿ4ü± óÿ,ü­ òÿ$ü© íÿüû ìÿôû ëÿìû êÿäû éÿÜû èÿÔû çÿÌû­ æÿÄû© åÿ¼û¥ äÿ´û¡ ãÿ¬û âÿ¤û Ûÿlûã Úÿdûß Ùÿ\ûÛ ØÿTû× ×ÿLûÓ ÐþÉE ÿÿÉEP Æ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þÿ@ LIB000° PASS1Y¯ PASS3YJ INDEX LINK E ¦ CLIXY º T Ä PRIMS Æ SUPRUNÊ DIR Ë DELETEÑ RENAMEÓ LOADUPÖ DBUG Ü OY ì RUN ï BVTXY ò I û DPAL SBLD3Y F PASS2Y0 INSERT DVDUPY¢ CLI1Y ¥ RXO22S 2SUPUBC¿ 2LOAD7SÀ CLI1S Þ SBLD3Yñ DVRUBYý SUP32 LOAD7Y PERM1Y# BVT1Y ) FSLSIY2 RXO22Y@ MOTH6YF SUPENG "SUP31 T PERM2Yk CLIXS p SUPINF 2RXO22TÑ 2RXO22ZØ 2LIST Ã-\ý öüÄe w ÌÿÁ þÿ°üï ÿÿ¨üë ûÿrüÐ úÿhüË ùÿ`üÇ øÿXüà ÷ÿPü¿ öÿHü· õÿ<üµ ôÿ4ü± óÿ,ü­ òÿ$ü© íÿüû ìÿôû ëÿìû êÿäû éÿÜû èÿÔû çÿÌû­ æÿÄû© åÿ¼û¥ äÿ´û¡ ãÿ¬û âÿ¤û Ûÿlûã Úÿdûß Ùÿ\ûÛ ØÿTû× ×ÿLûÓ ÐþÉE ÿÿÉEP CLI ÆeÞÿµ âÿàÿuaàÿu àÿÞÿõ ðÿîÿuaîÿ (@ô% ìÿß  ðÿ¹¨ ðÿNa Ù  ª ñÿÀE òÿèÿÝ° v@ô¥ ìÿñÿ²Ä âÿôÿºÈ Ù UÌ Ð@õ% Þ@ô% a÷ ö ò@Á%þÿ a÷ ä a÷ Ì A÷ ¼ &Aõ% a÷ ® ôÿÎe0 `A÷ v Æeúÿ* üÿW-üÿ ®AÁ% Æeþÿô& ÒAõ%ÿÿ ÆeöÿÌ4 ìÿ÷ÿç< úÿ5aúÿÎ> üÿò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 PAS1 Æe`âµ øÿ8N ÆeúÿÓØ üÿu-üÿúÿ ÷ v=ñ ÷ Ö<,æ Æeþÿ5î @ô%G Æeüÿûø Úÿ?þ ÷ Ü;@ @àÀe0 $$$$$$ $PON $POFF $PONOFF $MAPVIRT $MAPABS $GETID $ALARM $LINKIN $MAPHWR SUPRUN $RUN DQS12Z DQS11E DUP11Z DUP11E READXY READX READFNAM SIN00Y INITIALI Æ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ð% þë¸  ù_$ DEIMOS VSN 9.1F system for UBC (1982-01-07) 3500 DVDUPY N 0 SUP32 60002 0 PERM2Y 60006 0 BVT1Y 60012 150 RXO22Y 60016 300 FSLSIY 60022 300 LOAD7Y 60026 220 CLI1Y 60032 100 MOTH6Y 60036 50 -7 270 RING INTERFACE 776740 (RX) -6 274 (TX) ! FILE 'LOAD7S' !************** !* LOAD17S * !* 22.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 P2F(%BYTEINTEGER SERVICE, REPLY, A1, A2, %C B1, B2, C1, C2) %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 (P2F) %NAME P2 %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 %CONSTINTEGERNAME INSTRM0 = K'160032' %CONSTRECORD (STRDF) %NAME INSTR1 = K'160062' %CONSTBYTEINTEGERNAME TT NO = K'160061' %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 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) INSTRM0 = 0; ! ENSURE IT IS 'NULL' D2 == D1; D3 == D2; P2 == P ID = GETID %CYCLE GLA DISP = 0 P_SERVICE = 0 POFF(P2) !* VALID SERVICES ARE:- !* P_SERVICE = LOADID - LOADER REQUEST %IF P2_A1 = 1 %START; ! REQUEST TO LOAD ! P_A = 1 - REQUEST TO LOAD ! P_B = ADDRESS OF LOAD ! P2_C1 = 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 T BIT REPLY TO HERE = P_REPLY TFLAG = P2_C1; FSYS = P2_A2; TT NO = P2_C2 %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: %IF INSTR1_FSYS # 0 %START INSTR1_FSYS = 0 CLOSE INPUT; -> INP %FINISH FAULT = 3 -> STEP DOWN %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)_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!TT NO<<8 NEWPSECT_URS_R5 = GLA DISP RELEASE(OSEG) N = SVC(SCHEDULE, NEWID, 0) -> DO REPLY %FINISH %CONTINUE ERROR: RELEASE(OSEG) N = SVC(DELETE, NEWID, 0) STEP DOWN: NEWID = 0; ! PROG STOPPING TO CLI TTFLAG = REPLY TO HERE; P_C = 1 DO REPLY: %IF TTFLAG # 0 %START; ! REPLY TO CALLER P_SERVICE = TTFLAG; P_REPLY = 5 P_A = NEWID; P_B = FAULT PON(P2) %FINISH CLOSE INPUT %REPEAT %INTEGERFN WORD %INTEGER S, T READSYMBOL(S); READSYMBOL(T) CKSM = CKSM+S+T %RESULT = T << 8+(S&X'FF') %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 ! FILE 'CLI1S' !************** !* CLI1S * !* 23.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 %OWNINTEGER TT SER = 1; ! TT HANDLER (SHAREABLE CODE !!) %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) %RECORDFORMAT P2F(%BYTEINTEGER SERVICE, REPLY, A1, A2, %C %BYTEINTEGERNAME B, %BYTEINTEGER C1, C2) %CONSTBYTEINTEGERNAME INT CHAR = K'100060'; ! IN SEG 4 !!! %CONSTBYTEINTEGERNAME CHANGE OUT ZERO = K'160310' %RECORDFORMAT D1F(%INTEGER X) %RECORDFORMAT D2F(%BYTEINTEGERNAME B) %RECORDFORMAT D3F(%INTEGERNAME Z) %RECORDFORMAT D4F(%RECORD (PSECTF) %NAME PST) %RECORD (PF)P %RECORD (P2F) %NAME P2 %INTEGER ID, INPT %INTEGER 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 PRI %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; P2 == P %IF TT SER#1 %THEN CHANGE OUT ZERO = TT SER; ! SWITCH TO NEW CONSOLE ID = GETID -> FROM OUT; ! INITIAL SPECS LOAD %CYCLE PUT READ ON(0) %IF READ FLAG = 0 P_SERVICE = 0 POFF(P) %IF P_REPLY = TT SER %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 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(1) P2_A1 = 1; P2_A2 = FSYS; P_B = D1_X P2_C1 = 0; P2_C2 = TT SER PON(P2) %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 %ELSE %IF P_A = 0 %START %IF P_B = 3 %START PRINTSTRING("*no "); PRI %ELSE PRINTSYMBOL('*'); PRI PRINTSTRING(" fault ") PRINTSYMBOL(P_B+'0') %FINISH NEWLINE %FINISH %FINISH PROG = PROG-1 %IF PROG <= 0 %THEN PROG = 0 %AND PUT READ ON(1) %FINISH %REPEAT %ROUTINE PRI %INTEGER I, J %CYCLE I = 1, 1, 6 J = STORE(I) %EXIT %IF J<= ' ' PRINTSYMBOL(J) %REPEAT %END %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 = TT SER; 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 I = SVC(SCHEDULE, PST_ID, 1); ! HOLD IT PNAME(PST_NAME) PRINTSTRING(' purged I = SVC(DELETE, PST_ID, 0) -> OK COMSW(5): ! KILL I = SVC(SCHEDULE, PST_ID, 1) I = SVC(SCHEDULE, PST_ID, K'020000') -> 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: I = SVC(SCHEDULE, PST_ID, 0); ! REMOVE HOLD %IF PST_STATE # T POFF %THEN ->OK 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 I = SVC(SCHEDULE, PST_ID, 1); ! HOLD IT -> 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 SBLDüÝ öÿuaöÿR Na÷ 4 f ÷ r ò a÷ r ÷ , ø a÷ V Á%A Na÷ ¬ æ@õ% a÷ ª BA÷ P a÷ f a÷ T a÷ B A÷ V @möÿ& ´A÷ Þ ¾A÷ Ä a÷ è @möÿH öA÷ a÷ Ú B÷ x (B÷ Z @möÿH TBõ% Na÷  BÁ% ¸BÀ% ÊBumì ÒBÀ% üBW=æ ÀBmà Na÷ * èþÑd òC÷ º Amöÿq @möÿ0 4D÷ ÆeöÿÎ a÷ L a÷ j üÿNa÷ úÿߤ ¸Dõ%úÿüÿ a÷ ò úÿ@íüÿÀ öÿC´ ÞDõ%öÿüÿ öÿb¶ @löÿB øÿBmöÿ @löÿð öÿ@møÿ& ÆeüÿvÆ üÿNa÷ 2 üÿ÷ p hEõ% ÆeúÿFØ ÿÿüÿW-üÿ üÿ¼è üÿÀe(0À @löÿB üÿÂe Blöÿ ÿÿüÿW-üÿ üÿÀe @löÿB ¢þµø ÆeîÿÜü a÷ ä úÿNa÷ v (Fõ%1 öÿP a÷ | BFõ%T a÷ h öÿQ \Fõ%4 öÿê& a÷ < a÷ * àïÿ > ôÿm@ îÿNa Ù 6B ÂFõ% a÷ â ÚF÷ þ ÿÿüÿW-üÿ8 ÿÿøÿW-øÿÿ øÿjV Bmøÿ Blöÿ° öÿ@müÿ5 ôÿ<` u`òÿ0b îÿNa a÷ J rG÷ f a÷ 8 a÷ ( Æeúÿ üÿNa÷ â úÿNa÷ Ø @]üÿ Æeüÿè õeýÿüÿò üÿ÷ Ò ÁEøÿÁe0 Æeøÿ¥¦ øÿWª $H÷ n >H÷ T FHÁ%0 øÿé´ nH÷ øÿ÷ ` àÈ Î àÉ Á% àÉ ñ àÉ Á àÈ ÷ àÈ Î ôI÷ `þa<` `þaÿÿÿÿÿÿ SUPER CODE BASE? FILE: PATCH?! SUPERVISOR LOADS FROM 000000 TO AND 60000 TO ( TOP OF STORE IS DETERMINED AT RUN TIME DED LOC?/ RESETTING OF INTERRUPT NUMBERS AND VECTORS INT: VECTOR:1ERROR - INTS FROM 0 TO -5 ARE FIXED IN FILE BRUN DISC? PUT ON UNIT 0 ON SITE # 2 4 ON BOTTOM SITE *** FAILED TO TURN DISC WRITE CHECK OFF *** FAILED TO WRITE BLOCK TO DISC CORE IMAGE WRITTEN NOW IPL Ã-\ý öüÄe w ÌÿÁ þÿ°üï ÿÿ¨üë ûÿrüÐ úÿhüË ùÿ`üÇ øÿXüà ÷ÿPü¿ öÿHü· õÿ<üµ ôÿ4ü± óÿ,ü­ òÿ$ü© íÿüû ìÿôû ëÿìû êÿäû éÿÜû èÿÔû çÿÌû­ æÿÄû© åÿ¼û¥ äÿ´û¡ ãÿ¬û âÿ¤û ÊÿÄU ¤ÿ÷5 áÿ<ú àÿJù SUPRþß Æe ÿµ ¦ÿ¨ÿua¨ÿu ¨ÿ¤ÿõ ÔÿÊÿuaÊÿ5 Õÿñ¤ a÷ 4 a÷ ò u ÀÿrÔ aGl> ß%üÿ Úÿ®æ Øÿpê °ÿaò ÊÿÎÿu ÎÿÒÿ/ö ìÿÀe æÿÂe ÀEýÿ" Îÿ3" aÁe4 Èÿ{< 2 Àe æÿÀe Èÿ÷ T ^ À% Æÿ(` ~ Àe u-ÆÿÈÿ( ìÿÀe Èÿ-f ¦ Áe Îÿnh ÌÿJ" ìÿÃe Èÿ÷ Æ W=ºÿ ìÿðÅ ÂEýÿ ìÿðÕ ºÿ+¦ ìÿæ¬ ìÿÀe Èÿ-² @mìÿ5 ÄÿNa÷ ¶ ðÿFâ °ÿÔÿ5 ÔÿÎÿuaÎÿ1 Pýæò aÁe¾ÿu Äÿîÿ" ôÿ5, pí¾ÿ @-îÿ ÄÿNaf ðÿ÷ Ì òÿÖ( ôÿÎ* Úû 2 ¢ÿõB ¼ÿ©F ¶ÿzJ ºÿëL  ÿnN H-¼ÿ H-¶ÿ ¶ÿèP ¬ÿmZ u-¼ÿ¶ÿ pm¼ÿ Hí¼ÿi` Üÿðd ²ÿnn ®ÿ3t ®ÿ×t CmèÿÃe äÿÓv ®ÿWt `Áe ªÿì¢ ²ÿæ¤ àÿS¨ Cmêÿõ àÿNº A]²ÿu ¬ÿ ÿIÔ Üù Ø AmêÿÁe äÿ ò ¦ÿàÿkö ®ÿüú °ÿW-°ÿ7 °ÿÀeÜÿ ¨ÿÁg( ¦ÿèÿ `Áe ®ÿx* ®ÿWt `Áe äÿÒ, ¸ÿÀ. ªÿz0 túÿÀE ¬ÿ°6 ®ÿ×t ÀEÀÿ ¸ÿÎ> ðEüÿ ìÿðU þ÷ ` ºÿ©h ¸ÿ×t túÿÀE ¸ÿWt ¸ÿ×t Æeþÿå| aÃe4 Æeîÿq WtøÿÁE ðÿB`µ bA-ðÿ HmîÿO Hb?¢ p-òÿ Hmîÿ¨° øÿíÄ îÿgÊ öÿýÎ ÆeþÿrØ øÿ÷ ÆeÔÿu° ÆeþÿÙ Úÿ@d ÿÿöÿW-öÿ öÿðf öÿWt ÀôFh îô®l þÿ6p fÿhr ÖÿØÿuaØÿ öÿW-öÿ7 túÿÀE `WtúÿÁE `ðÿu ðÿäÿà öÿW-öÿÞ¾ öÿ÷ :cõe p-äÿ ØÿÁeF Öÿ!¤ Öÿüÿ¶¦ cõe0 túÿÂE òÿ½¬ `WtúÿÁE æÿ9® `×túÿÃE üÿÂe0 òÿAíòÿÁ üÿÀeP âÿWt ìÿ@íæÿÀ âÿ˸ ìÿBíæÿ xdW-îÿ! W-îÿ# dõ%! ÞÿCÊ ªdÀeX âÿWt túÿÀE ÜÿÁå@ âdumÜÿðÿµ âÿ]Ò æÿWt ÞÿÔØ Òü>â Beõe îÿKæ öýÚè øÿ7ð öÿêô×ø ôÿnú ~eõe öÿAþ öÿÚÿ¨ túÿÂE Úÿ@íöÿ ÿÿöÿW-öÿ1 ÔÿÁe âÿöÿõ öÿW-öÿO öÿWt úÿÕ" öÿW-öÿ Æeþÿ vÿE@ Vg×7tÿ Æeþÿ ÿÿÿÿÿÿ ÿÿÿÿÿÿ TT00 DISC DIRT LOAD CLI MOTH LOAD°Á øÿáF °ÿ®ÿua®ÿu ®ÿ¬ÿõ ìÿêÿuaêÿ æÿïü êÿð¥ íÿÁE ¶ÿ?" íÿÀE ºÿ_$ tóÿÀEøÿ5 Üÿ$& íÿÃE Ù Ï( ðÿÀE Ôÿÿ, Âÿ÷ Ú ÔÿÊÿõ Êÿ¤6 ÿÿÄÿÃ> ÿÿäÿW-äÿ :àÅD VAô¥. 8àÍL ;à®R zAô¥. ÿÀå0 ÔÿÂX :àÀE 8àÛ\ ÿÿäÿW-äÿ äÿè^ Ôÿ ` ÊAõ¥0 ´ÿ<à¶d èAõ¥ ;à§t äÿNa÷ 2B÷ äÿNa÷ P àÿí  ÿÿäÿW-äÿ äÿ(¤ ÞÿNa÷ äÿ@möÿp æÿØÿì öÿÁe ôÿN° Øÿç´ öÿÀe ÈÿºÂ àÿñÄ ÿÿÜÿW-Üÿ Üÿ÷Æ BmöÿÂe ÚÿNa÷ V ^Cõ% äÿNa÷ @ àÿdÔ tCõ% ¾ÿYØ âÿ à ¤Cõå àÿQâ ÜÿWt Àÿsð âÿ7ø âCõå @aÁE?Àp túÿÂE âÿÁþ Üÿ÷ ¨ 0Dõå @môÿ5 ÜÿW-Üÿ Üÿæ ÿäÿ·" Ù <& þÿäÿu-äÿ äÿÀU ÔDõ% êDõ% ¸ÿv8 °ÿ.: Eu-ÊÿÔÿ äÿNa÷ f äÿNa÷ Z Ìÿ[R zEWtóÿÁEøÿu ÌÿÀE u-ÀÿÌÿc Ðÿ«^ ¸Eu-ÜÿÄÿ Ù ÿd ÜÿÄÿ¤h æEu-Ðÿ°ÿ ØÿNa÷ ® ³ÿÁE ³ÿìt àÿ=x *FW=°ÿÿ ØÿNa÷ h ³ÿÀE ÿ@mØÿ5 ØÿNa÷ 6 ÀäÿF ¶ÿWt ÖÿrÀ òÿ7 íÿ?È Öÿîÿu ÆÿðÿÄÊ Ù ÈÌ ^G÷ V ÆeúÿàØ üÿNa÷ . úÿNa÷ $ ³ÿÁE ÿAmüÿAmúÿp ³ÿ§Þ üÿÃE Æeþÿôè ÌGõ%ÿÿ ÆeþÿÄö Æeøÿ£ úÿüÿuaüÿ¶ úÿøÿá Öÿë B~]( Æeøÿ94 øÿúÿuaúÿR: üÿÜ< Æeìÿ îÿðÿuaðÿ8P øÿu-øÿìÿ7 øÿÂT üÿ÷V ÿÿöÿW-öÿ öÿUZ öÿ@mîÿ öÿ@müÿ òÿ(\ 4IÁ% øÿ÷ > À²À>À À²Àÿÿÿÿÿÿ ø¨¨¨ ø((Ð ø¨¨¨ ø((Ð ø¨¨P P¨¨P @`Pø@ @`Pø@ Ð%â%ø% &$&V&\&d&l&t&x& ÷ ìÿß ÿ x¿& ÿ t¿ ú üÿ½ `Áå0 àø òÿ ø òÿ° ÷ nÿ W,òÿf" ÷ êý îÿÁ% ÷ jÿÅå TTPL2T3T ÁEøÿ BVTY à ÆeÚÿµ Ù q¤ Ù |¦ Üÿ5aÜÿɪ Úÿ5aÚÿ½¬ aÁe^ a÷ . Ù WÆ îÿõE ìÿqÎ ÿA-îÿ aGl4 &Aõ%a îÿ/Ö FA4- |A4- èÿ¼ò ÌþÅö aGlB pB4-T ðýÅ@ B4-D îÿ&J ¬Bt-èÿF ÿÿèÿæL ÎBt-èÿF ÿÿèÿ4 æB4-D rýÄn ZCÁe tóÿÀEøÿ5 ÜÿÁe a÷ º BD4- ,üÄÄ Æeþÿ²È dDõ% lDôe DðU@ Æeþÿ#Ú  Dô%( ÆeþÿÛð èÿPò Æeþÿ´ø bÿ]þ Æeôÿ àÿøÿ5 Þÿöÿ0 a÷ X öÿWtóÿÁEøÿu öÿÀE ÚÿÀe ÿÿúÿW-úÿP úÿ4 Ù /0 Ù (2 ¶þF6 Æeþÿq: Ù áB nþFF øÿ÷ ÀbÂ<À ÀbÂÿÿÿÿÿÿ p¿þÿÿÿ FSYSnÉ ÆeÂÿµ ÆeôÿÆ öÿ÷ÿ& B@õ% üÿñ `@Àe úÿè¤ öÿNa Æeúÿ- aÁen À@ -j aÁen æ@ô% þþ9î Æeîÿ® 6AÀe üÿ!( ôÿÀe @-üÿ4 ÔÿÐ, ÿÿúÿW-úÿ2 lÔÿu îÿb8 üÿ*B ªþ²F ÆeúÿàZ WtùÿÁE üÿR^ Æeüÿ a5,` Ù >¬ öÿY® Ù Ö° ÞÿW¸ ÞÿNa Ù >º Ù ¶Æ Öÿ?È òÿpÌ CÁen þümÒ ßÿÖÿÓâ Þÿ×ÿÍä âÿÚÿ@æ îÿ\î tóÿÀEøÿ5 ßÿÁE Ù Âö âÿÀE Êÿ$ø  Cô% îÿÏ Tüm& îÿØÿ ÖÿNa Ù 7. äÿðÿZR øCÁ% àðÿ½T ÒÿÑV îÿ«X ÒÿÓ\ (DI-êÿ ÿÿîÿ 6Dô% ÒÿÑ¢ DI-êÿ ÿÿîÿ ap-ðÿL p-ðÿV ðÿc° Öþ:º ìÿÒà ÃÿÞä ÂÿNa7 ìÿîÿ ÌÿÀe êÿªú ÒÿÓþ ¶Eô% äÿðÿt. ÜEÁ% àðÿ×0 ÒÿÒ2 êÿL4 îÿe6 êÿS< ÒÿÑB 8Fô% ÿÿîÿfn tóÿÀEøÿ5 æÿhp hF@-ôÿm äÿÁE Êÿ3t ÌÿH¢^ ÃÿEz ÂÿM| ÂÿNa7 ÂÿNa7 ÊÿÀe ÊÿÀe îÿ>® èÿnÔ ÌÿðÅ êüõÚ ÌÿðÕ ÿÿîÿ ~GÉÅ ÿÂ`µ øÿ÷ ( À°ÈBÀ À°Èÿÿÿÿÿÿ XX@@@ RXO2>Á Æeäÿµ Æeöÿ öÿNa Ù ¬  Æeþÿc¬ ÀE?à túÿÀE ü4`l ÀEÿóÀ ¶@ôE ÆeþÿùÆ Þ@×7x ì@×7x Æeþÿ NA×7x \A×7x ÁEÀÿ@` Ù Tü èÿæÿuaæÿa Ù o" îA×7x ðÿNa Ù ÷0 BW=öÿ ñÿÀE XB5-< öÿ@àÀ äÿ5aäÿ= äÿW/äÿ äÿ±l èýyr Âý{z ðÿI  ñÿ㢠ðÿNa øÿ÷ B Àÿÿÿÿÿÿ MOTH Æeàÿµ îÿìÿuaìÿþ\ Ù q^ Ù \` ðÿÛd ðÿNa Ù Âf <@õ¥ ñÿÀE âÿPj V@õ¥üÿðÿ a÷ J ôÿàÿu öÿâÿwx êÿ¯~ ÿÿèÿW-èÿ èÿ@mêÿ aÁe4 aGl¬ î@÷ ´ ô@÷ ¢ Æeüÿj¬ õeýÿüÿf üÿ÷ * ÁEøÿÁe0 fA÷ 0 øÿ÷ àÈ Î ÀÌÀ<À ÀÌÀÿÿÿÿÿÿ NOT READY! BAD SEGMENT ADDRESS ERROR ILLEGAL INSTR BPT TRAPINSTR ILLEGAL SVCTR BAD SER SVCTR TIME FAULTCTR 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 SUPRþß Æe ÿµ ¦ÿ¨ÿua¨ÿu ¨ÿ¤ÿõ ÔÿÊÿuaÊÿ5 Õÿ1¤ a÷ 4 ìÿRª ìÿT° ìÿV¶ a÷ ò u ìÿY¼ Àÿ²Ô aGl> ß%üÿ Úÿïæ Øÿ±ê Úÿßì °ÿ¡ò ÔÿTô ÊÿÎÿu ÎÿÒÿoö ìÿÀe æÿÂe Ðÿ^" ÀEýÿ" Îÿ3" aÁe4 Èÿ¼< æÿÀe Èÿ÷ T Æÿh` > Àe ÌÿQb u-ÆÿÈÿ( ìÿÀe Èÿmf f Áe Îÿ®h ÌÿJ" ìÿÃe Èÿ÷ Æ Ü W=ºÿ ìÿðÅ ÂEýÿ ìÿðÕ ºÿk¦ ìÿ&¬ ìÿÀe Èÿm² ºÿɺ @mìÿ5 àÿ×¼ ÄÿNa÷ ¶ °ÿÅì °ÿÔÿ5 ÕÿÖî ÔÿÎÿuaÎÿ1 Pý&ò 2üAú aÁe¾ÿu Äÿîÿb ôÿ5, pí¾ÿ @-îÿ ÄÿNaf ðÿ÷ Ì Úûà2 Ìûà: ¢ÿ6B ¼ÿêF ¶ÿ»J ºÿ,L  ÿ®N H-¼ÿ H-¶ÿ ¶ÿ(P `ûÝX ¬ÿ­Z u-¼ÿ¶ÿ pm¼ÿ Hí¼ÿ©` Üÿ0d àÿSj ²ÿ®n ªÿ\p ®ÿst ®ÿ×t CmèÿÃe ®ÿWt `Áe ªÿ-¢ ²ÿ'¤ êÿÁ¶ Cmêÿõ A]²ÿu ªÿÈÀ ¬ÿ ÿ ÜùàØ Ìùàâ ´ùàè êÿÖî AmêÿÁe äÿIò ¦ÿàÿ«ö ®ÿ<ú °ÿW-°ÿ7 °ÿÀeÜÿ ¨ÿÁg( ¦ÿèÿG `Áe Òøà" °ÿÃ( ®ÿ¹* ®ÿWt `Áe ªÿ»0 ¦ÿÖ2 túÿÀE ¬ÿð6 ®ÿ×t ÀEÀÿ JþËD ðEüÿ 2ûÎN ìÿðU þ÷à` ºÿéh ¸ÿNj ¸ÿ×t túÿÀE ¸ÿWt ¸ÿ×t Æeþÿ%| aÃe4 Æeîÿ± WtøÿÁE ðÿB`µ bA-ðÿ Hmîÿ p-òÿ Hmîÿé° úÿDz HbQ¸ øÿ.Ä îÿ§Ê öÿ=Î Æeþÿ²Ø øÿ÷ ÆeÔÿu° ÆeþÿÙ Úÿ@d ÿÿöÿW-öÿ öÿðf öÿWt ÀôFh îô®l þÿ6p fÿhr ÖÿØÿuaØÿ öÿW-öÿ7 túÿÀE `WtúÿÁE `ðÿu ðÿäÿà öÿW-öÿÞ¾ öÿ÷ :cõe p-äÿ ØÿÁeF Öÿ!¤ Öÿüÿ¶¦ cõe0 túÿÂE òÿ½¬ `WtúÿÁE æÿ9® `×túÿÃE üÿÂe0 òÿAíòÿÁ üÿÀeP âÿWt ìÿ@íæÿÀ âÿ˸ ìÿBíæÿ xdW-îÿ! W-îÿ# dõ%! ÞÿCÊ ªdÀeX âÿWt túÿÀE ÜÿÁå@ âdumÜÿðÿµ âÿ]Ò æÿWt ÞÿÔØ Òü>â Beõe îÿKæ öýÚè øÿ7ð öÿêô×ø ôÿnú ~eõe öÿAþ öÿÚÿ¨ túÿÂE Úÿ@íöÿ ÿÿöÿW-öÿ1 ÔÿÁe âÿöÿõ öÿW-öÿO öÿWt úÿÕ" öÿW-öÿ Æeþÿ vÿE@ Vg×7tÿ Æeþÿ ÿÿÿÿÿÿ ÿÿÿÿÿÿ TT00 DISC DIRT LOAD CLI MOTH Ö%è%þ% &*&\&b&j&r&z&z& ÿ ~¿& ÿ z¿ ô üÿ½ `Áå0 à!ø òÿ ø òÿ° ÷ nÿ W,òÿj" ÷ êý îÿÁ% ÷ jÿÅå TTPL2T3T ÁEøÿ ! FILE 'CLI1S' !************** !* CLI1S * !* 23.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 %OWNINTEGER TT SER = 19; ! TT HANDLER (SHAREABLE CODE !!) %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) %RECORDFORMAT P2F(%BYTEINTEGER SERVICE, REPLY, A1, A2, %C %BYTEINTEGERNAME B, %BYTEINTEGER C1, C2) %CONSTBYTEINTEGERNAME INT CHAR = K'100060'; ! IN SEG 4 !!! %CONSTBYTEINTEGERNAME CHANGE OUT ZERO = K'160310' %RECORDFORMAT D1F(%INTEGER X) %RECORDFORMAT D2F(%BYTEINTEGERNAME B) %RECORDFORMAT D3F(%INTEGERNAME Z) %RECORDFORMAT D4F(%RECORD (PSECTF) %NAME PST) %RECORD (PF)P %RECORD (P2F) %NAME P2 %INTEGER ID, INPT %INTEGER 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 PRI %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; P2 == P %IF TT SER#1 %THEN CHANGE OUT ZERO = TT SER; ! SWITCH TO NEW CONSOLE ID = GETID -> FROM OUT; ! INITIAL SPECS LOAD %CYCLE PUT READ ON(0) %IF READ FLAG = 0 P_SERVICE = 0 POFF(P) %IF P_REPLY = TT SER %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 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(1) P2_A1 = 1; P2_A2 = FSYS; P_B = D1_X P2_C1 = 0; P2_C2 = TT SER PON(P2) %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 %ELSE %IF P_A = 0 %START %IF P_B = 3 %START PRINTSTRING("*no "); PRI %ELSE PRINTSYMBOL('*'); PRI PRINTSTRING(" fault ") PRINTSYMBOL(P_B+'0') %FINISH NEWLINE %FINISH %FINISH PROG = PROG-1 %IF PROG <= 0 %THEN PROG = 0 %AND PUT READ ON(1) %FINISH %REPEAT %ROUTINE PRI %INTEGER I, J %CYCLE I = 1, 1, 6 J = STORE(I) %EXIT %IF J<= ' ' PRINTSYMBOL(J) %REPEAT %END %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 = TT SER; 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 I = SVC(SCHEDULE, PST_ID, 1); ! HOLD IT PNAME(PST_NAME) PRINTSTRING(' purged I = SVC(DELETE, PST_ID, 0) -> OK COMSW(5): ! KILL I = SVC(SCHEDULE, PST_ID, 1) I = SVC(SCHEDULE, PST_ID, K'020000') -> 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: I = SVC(SCHEDULE, PST_ID, 0); ! REMOVE HOLD %IF PST_STATE # T POFF %THEN ->OK 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 I = SVC(SCHEDULE, PST_ID, 1); ! HOLD IT -> 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 DEIMOS VSN 9.1F 23.APR.80 (LSI 11 23 VERSION (DUV11))(NEW SUPR) 3500 DVRUBY N 0 SUP32 60002 0 PERM2Y 60006 0 BVT1Y 60012 150 RXO22Y 60016 300 FSLSIY 60022 300 LOAD7Y 60026 220 CLI1Y 60032 100 MOTH6Y 60036 50 -11 320 KB#2 VEC=776520, SER = 19 -12 324 TT#2 264=1600 266=340 DEIMOS VSN 9.1F 27.MAR.81 (LSI 11 23 VERSION (DUP11) (ENGINEERS 1123) SUPER CODE BASE? 003500 FILE: DVDUPY 000000 000000 003477 000000 FILE: SUP32 003500 011000 015415 060002 FILE: PERM2Y 015500 000000 020673 060006 FILE: BVT1Y 020700 024300 025443 060012 FILE: RXO22Y 025700 027600 030001 060016 FILE: FSLSIY 030400 034400 040661 060022 FILE: LOAD7Y 041200 046200 046463 060026 FILE: CLI1Y 047000 053200 053703 060032 FILE: MOTH6Y 054100 055100 055415 060036 FILE: RESETTING OF INTERRUPT NUMBERS AND VECTORS INT: -11 VECTOR:000320(001736) KB#2 VEC=776520, SER = 19 INT: -12 VECTOR:000324(001746) TT#2 INT: -31 VECTOR:000300(002176) DUP11 #1 AT 760050 INT: -32 VECTOR:000304(002206) TX INT: -7 VECTOR:000330(001672) RING INTERFACE 764040 INT: -6 VECTOR:000334(001662) INT: PATCH? SUPERVISOR LOADS FROM 000000 TO 055415 AND 60000 TO 063707 TOP OF STORE IS DETERMINED AT RUN TIME DISC? PUT ON UNIT 1 CORE IM100 055100 055415 060036 FILE: RESETTING OF INTERRUPT NUMBERS AND VECTORS INT: -11 VECTOR:000320(001736) KB#2 VEC=776520, SER = 19 INT: -12 VECTOR:000324(001746) TT#2 INT: -31 VECTOR:000300(002176) DUP11 #1 AT 760050 INT: -32 VECTOR:000304(002206) TX INT: PATCH? SUPERVISOR LOADS FROM 000000 TO 055415 AND 60000 TO 063707 TOP OF STORE IS DETERMINED AT RUN TIME DISC? PUT ON UNIT 1 CORE IMAGE WRITTEN AGE WRITTEN THIS FILE ILLUSTRATES THE OUTPUT WHEN YOU BUILD A SYSTEM. Notes 1) It writes the new system onto unit 1 - you cannot however boot that disc until a bootstrap has been put on block 0. The easiest way is to run:- FORMAT - this formats the disc on unit 1 RXINIT - This initialises the disc on unit 1, then copies bootstrap block and system onto unit 1 THen SYSBLD the system with the commands LOGON 10 SBLD3Y SUPENG,D/.TT (Supeng is the steering file - including matching an interrupt service number to where it actually interrups) ( D is a dummy file name) DEIMOS VSN 9.1F 31.MAR.81 (LSI 11 23 VERSION (DUP11) (ENGINEERS 1123) SUPER CODE BASE? 003500 FILE: DVDUPY 000000 000000 003477 000000 FILE: SUP32 003500 011000 015415 060002 FILE: PERM2Y 015500 000000 020673 060006 FILE: BVT1Y 020700 024300 025443 060012 FILE: RXO22Y 025700 027600 030001 060016 FILE: FSLSIY 030400 034400 040661 060022 ! FILE 'RX022S' ! RX02 FLOPPY DISC HANDLER ! THIS IS THE UNIT 0&1 VERSION ! %% LAST UPDATED 2ND APRIL 1980 FILE=RX022S ! USES SYSTEM SLOTS 8 AND 14. INT SLOT -8. ! CALLING PARAMETERS ARE AS FOLLOWS ! P_A1=MODE (0=READ,1=WRITE) ! P_A2=ADDRESS OF BUFFER IN MEMORY ! P_A3=BLOCK NUMBER ON DISC ! SINCE DEIMOS DEALS IN 512 BYTE BLOCKS ALL TRANSFERS ARE 2*256 !BYTE SECTORS. THE FIRST 77 BLOCKS ARE RESERVED FOR THE SYSTEM. !WITHIN EACH TRACK OF 26 SECTORS THE SECTORS ARE INTERLEAVED. ! ON EXIT P_A1=FAULT NO. (0=OK) ! ANY ERROR WILL RESULT IN UP TO 10 RETRIES. ! STACK=300 STREAMS=0 %CONTROL K'101011' %SYSTEMROUTINESPEC LINKIN(%INTEGER SERVICE) %SYSTEMROUTINESPEC MAPHWR(%INTEGER SEG) %SYSTEMINTEGERFNSPEC MAP ABS(%INTEGER VAD,LEN,ID) %SYSTEMINTEGERFNSPEC GET ID %PERMROUTINESPEC SVC(%INTEGER EP,P1,P2) %BEGIN %RECORDFORMAT PF(%BYTEINTEGER SERVICE,REPLY,%INTEGER A1,A2,A3) %RECORDFORMAT P2F(%INTEGER D) %RECORDFORMAT RXF(%INTEGER CONTROL,DBREGDEIMOS VSN 9.1F 31.MAR.81 (LSI 11 23 VERSION (DUP11) (ENGINEERS 1123) 3500 DVDUPY N 0 SUP32 60002 0 PERM2Y 60006 0 BVT1Y 60012 150 RXO22Y 60016 300 FSLSIY 60022 300 LOAD7Y 60026 220 CLI1Y 60032 100 MOTH6Y 60036 50 -11 320 KB#2 VEC=776520, SER = 19 -12 324 TT#2 -31 300 DUP11 #1 AT 760050 -32 304 TX -7 330 RING INTERFACE 764040 -6 334 %CONSTRECORD(RXF)%NAME RX=K'117170'; !DEVICE ADDR ! VECTOR = 264 ! SYSTEM CONSTANTS %OWNINTEGER KID %CONSTINTEGER SYS1=3; !UNIT 2 %CONSTINTEGER SYS2=14; !UNIT 3 %CONSTINTEGER DINT=-3; !INT SLOT ! RX02 PARAMETERS %CONSTINTEGER TRBIT=K'400'; !READY BIT %OWNINTEGER TOP=1000 %OWNINTEGER BOT=88 %CONSTINTEGER RETC=10; !RETRY COUNT %CONSTINTEGER READ=0; !INPUT PARAMS %CONSTINTEGER WRITE=1 %CONSTINTEGER READFN=K'107'; !RX02 FUNCTIONS %CONSTINTEGER WRITEFN=K'105' %CONSTINTEGER EMPTYFN=K'103' %CONSTINTEGER FILLFN=K'101' %CONSTINTEGER TRDONE = K'200' %CONSTBYTEINTEGERARRAY SECMAP(1:26)= %C 1,3,5,7,9,11,13,15,17,19,21,23,25,2,4,6,8,10,12,14,16,18,20,22,24,26 ! GENERAL VARIABLS %RECORD (PF) P,PX %RECORD (P2F) %NAME P2 %OWNINTEGER SYS,FAULT,ID,CONT,SECTOR,TRACK,RETRIES,MAPIND,I,VADDR,PAR,FN !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!FILE: LOAD7Y 041200 046200 046463 060026 FILE: CLI1Y 047000 053200 053703 060032 FILE: MOTH6Y 054100 055100 055415 060036 FILE: RESETTING OF INTERRUPT NUMBERS AND VECTORS INT: -11 VECTOR:000320(001736) KB#2 VEC=776520, SER = 19 INT: -12 VECTOR:000324(001746) TT#2 INT: -31 VECTOR:000300(002176) DUP11 #1 AT 760050 INT: -32 VECTOR:000304(002206) TX INT: -7 VECTOR:000330(001672) RING INTERFACE 764040 INT: -6 VECTOR:000334(001662) INT: PATCH? SUPERVISO!!!!!!!!!!!!!!!!!!!!! ! INTEGERFNS START HERE !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! REPORT FAULT SEND A MESSAGE TO MOTHER %INTEGERFN REPORT FAULT %RECORD (PF) PX PX_SERVICE=7; PX_REPLY=KID PX_A1=SECTOR; PX_A2=TRACK; PX_A3=RX_DBREG PONOFF(PX) %RESULT = PX_A1 %END ! MAPADDR MAPS BUS ADDRESS %INTEGERFN MAPADDR(%INTEGER VADDR) PAR=MAP ABS(VADDR,256,ID) %RESULT=1 %IF PAR=0 PAR=PAR+(VADDR&K'17700')>>6 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 EDIT²Ä Æeȱµ ÆeþÿRÌ N`÷ b Æeþÿ=ä ¢@ð% ª@ð%` îÿ´ú Î@ô% îÿÂåX ,îÿ0 ,îÿ9 lîÿt äþï$ ÆeþÿH( ô%ÿÿ: ÄþÂ2 ¤Að%( ¤þp6 Æeþÿ ÆeüÿÞF êA4-B @`ð¥ 4B4-8 üÿò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 T ¾À Æeðÿµ öÿNa÷ 0@õ% öÿÀE ðÿc" öÿ÷ P øÿ÷ * À@À<À À@Àÿÿÿÿÿÿ %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 $RUN 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= DELE¦À ÆeÞÿµ àöÿ¨ öÿð¥ òÿW-òÿ òÿ@aA òÿAmöÿp àçÿr Þÿêÿuaêÿ° æÿNa a÷ 2 øÿ÷ " àÈ Î ÀHÀ<À ÀHÀÿÿÿÿÿÿ FAILED RENA¦À ÆeÔÿµ àöÿ¨ $àôÿ òÿW-òÿ òÿ@aA òÿAmöÿp òÿW-òÿ òÿ@aA òÿAmôÿp æÿäÿuaäÿt a÷ N øÿ÷ > àÈ Î ÀHÀ<À ÀHÀÿÿÿÿÿÿ FAILED 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? -> 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$49NEWLINES,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 RUN ÆeÆÿµ àöÿ¨L òÿiP òÿNa@ öÿÀe H@÷ ô Æeþÿ òÿÇ\ àçÿi^ Æÿêÿ0`êÿð Ù ­b Æeøÿ ÿÿüÿu-üÿøÿ üÿðn üÿ@m úÿÁ% øÿ÷ 6 À@À<À À@Àÿÿÿÿÿÿ TT00 à ÆeÚÿµ Ù q¦ Ù |¨ Üÿ5aÜÿɬ Úÿ5aÚÿ½® aÁe^ a÷ . Ù WÈ îÿõE ìÿqÐ ÿA-îÿ aGl4 &Aõ%a îÿ/Ø FA4- |A4- èÿ¼ô ÌþÅø èÿ aGlB pB4-T ðýÅB B4-D îÿ&L ¬Bt-èÿF ÿÿèÿæN ÎBt-èÿF ÿÿèÿ4 æB4-D rýÄp ZCÁe tóÿÀEøÿ5 ÜÿÁe \þ©  a÷ º BD4- ,üÄÆ Æeþÿ²Ê dDõ% lDôe DðU@ Æeþÿ#Ü  Dô%( ÆeþÿÛò èÿPô Æeþÿ´ú Æeôÿ àÿøÿ5 Þÿöÿ0 a÷ X öÿWtóÿÁEøÿu öÿÀE ÚÿÀe ÿÿúÿW-úÿP úÿ4" Ù /2 Ù (4 ¶þF8 Æeþÿq< Ù áD nþFH øÿ÷ ÀbÂ<À ÀbÂÿÿÿÿÿÿ P½õÿôÿ 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 úÿÁ% øÿ÷ ~ àÈ Î ÷ tÿ Àÿÿÿÿÿÿ ÀPASS1YPASS2Y PASS3YLINK ,PRIMS(0)/OY, .TT OY/O2,OY O2,OY/OY F A U L T ~ 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 ôÿm@ îÿNa Ù 6B ÂFõ% a÷ â ÚF÷ þ ÿÿüÿW-üÿ8 ÿÿøÿW-øÿÿ øÿjV Bmøÿ Blöÿ° öÿ@müÿ5 ôÿ<` u`òÿ0b îÿNa a÷ J rG÷ f a÷ 8 a÷ ( Æeúÿ üÿNa÷ â úÿNa÷ Ø @]üÿ Æeüÿè õeýÿüÿò üÿ÷ Ò ÁEøÿÁe0 Æeøÿ¥¦ øÿWª $H÷ n >H÷ T FHÁ%0 øÿé´ nH÷ øÿ÷ ` àÈ Î àÉ Á% àÉ ñ àÉ Á àÈ ÷ àÈ Î ôI÷ `þa<` `þaÿÿÿÿÿÿ SUPER CODE BASE? FILE: PATCH?! SUPERVISOR LOADS FROM 000000 TO AND 60000 TO ( TOP OF STORE IS DETERMINED AT RUN TIME DED LOC?/ RESETTING OF INTERRUPT NUMBERS AND VECTORS INT: VECTOR:1ERROR - INTS FROM 0 TO -5 ARE FIXED IN FILE BRUN DISC? PUT ON UNIT 0 ON SITE # 2 4 ON BOTTOM SITE *** FAILED TO TURN DISC WRITE CHECK OFF *** FAILED TO WRITE BLOCK TO DISC CORE IMAGE WRITTEN NOW IPL 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 a÷ ¸ NÑVÑ4 NÑAm,ÑAm,Ñu HÑBm,ÑBm,ѵ 0Ñ.Ñ äJu-(Ñ0Ñ* @aÀepÚ5 "Ño  AaÁepÚ AaÁepÚ .Ñ(ÑÞ° ®÷þ² ¢÷p´ 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 ÷_À èÿ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 üÿï¨ ºà¼à¼¬ ¬â;° â¼à¡² üÿ}´ xNÂe üÿu-üÿöÿ% üÿɶ üÿÀEüÿ& ÷ ´O `Áeºäu úÿ±¸ `ÁeÂâu øÿ½º ÆeþÿÑÄ *ùÙÆ îò¼Ê ºà¼àÝÌ ¢ñdÎ ÆeÄÿ¨Ð ÆeüÿWø üÿNa÷ |Oö dñdþ Æeöÿ« Ou-úÿøÿ) úÿ@møÿ¡ `Áe<çu ÊOI- ØOI- üÿøÿõ üÿúÿµ þO÷ ÒN Æeúÿ úÿW-úÿ úÿí üÿNa÷ ºNõ%, ÆeúÿÂ, àüÿõ àúÿ5`úÿ= úÿu/úÿüÿ (ðd4 Æeúÿj6 ÷ PN:8 ÐPW= ÷ @Ns: àPõEøÿ àüÿõ àúÿ5`úÿ= úÿu/úÿüÿ ÷ úM *Qõ% ¨à÷ ¸àBঠ÷ ´MÚN lQõ% ~Qõ% dñDX ¶àö\ äî³^ Æeòÿ{` p,¦à Dîød ÷ nL `Áe<çp Làãf üÿÀ% øÿúÿõEðÿúÿq æühr rR÷ ~LÁ%, |R÷ dL7 ²à£x öÿþz ÷ ¬K DçôÿX~ äRõ% àÿñ¥ ôÿ¨àm (Sõ% ôÿõ% `Sð% êüÏ¢ tSW-úÿ W-úÿ öÿ ¦ ÷ ªJ `Áe<çp ÂSÃ% ñe0u ¼ìd¾ üÿ¢àp úÿ à[Ä lü3Æ TTõ%A ¨à-Ê `Tõ% ®Tð%  à£Ü  à7à  à0ä äëeê úTõ% ®îÃð ¨à÷ 8I ¸àCàò bî»ö RUõ% xëdþ fUõ% ¸àCàò |àòÿ5 zàöÿõ öÿu-öÿòÿ îUõ% úUõ% píôÿ°àT :Võ%A àÿó¥ têd& Æeüÿ®( ÁEàÿp bàs, ÷ ÀG üÿn. Æeüÿd6 üÿw: ¬é³> Æ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 ÿÿ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 %IF PAR>=K'2000' %START; !SET 17TH&18TH BITS CONT=CONT!(PAR&K'6000')<<2 PAR=PAR&K'1777' %FINISH %RESULT=0 %END ! SEEK DOES READ/WRITE %ROUTINE SEEK(%INTEGER FN) RETRIES=0 RD: RX_CONTROL=CONT!FN; !GO+INT ENABLE %WHILE RX_CONTROL&TRDONE=0 %CYCLE; %REPEAT RX_DBREG=SECTOR %WHILE RX_CONTROL&TRDONE=0 %CYCLE; %REPEAT RX_DBREG=TRACK P2_D=(DINT)&X'FF' POFF(P2); !WAIT FOR INT %IF RX_CONTROL<0 %START; !ERROR RETRIES=RETRIES+1 %IF RETRIES#RETC %THEN ->RD; !TRY AGAIN FAULT = REPORT FAULT %IF FAULT = 0 %THEN RETRIES=0 %AND -> RD %FINISH %END ! BUFFER DOES FILL/EMPTY %ROUTINE BUFFER(%INTEGER FN) RETRIES=0 WD: RX_CONTROL=CONT!FN; !GO+INT ENABLE %WHILE RX_CONTROL&TRDONE=0 %CYCLE; %REPEAT RX_DBREG=128; !WORD COUNT %WHILE RX_CONTROL&TRDONE=0 %CYCLE; %REPEAT RX_DBREG=PAR<<6+VADDR&K'77'; !BUS ADDRESS P2_D=(DINT)&X'FF' POFF(P2); !WAIT FOR INT %IF RX_CONTROL<0 %START; !ERROR RETRIES=RETRIES+1 %IF RETRIES#RETC %THEN ->WD FAULT = REPORT FAULT %IF FAULT = 0 %THEN RETRIES = 0 %AND ->WD %FINISH %END !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !***** CODE STARTS HERE LINKIN(DINT) P2==PX MAPHWR(4); !MAP TO DICS REGS KID=GET ID LINKIN(SYS1); LINKIN(SYS2) %WHILE RX_CONTROL&K'40' = 0 %CYCLE; %REPEAT ! MAIN LOOP-WAIT FOR DISC REQUEST %CYCLE P_SERVICE=0 POFF(P) %IF P_A3&K'020000'#0 %START P_A3 = P_A3&K'017777' CONT=K'420'; !UNIT 3 SYS=2 %FINISHELSESTART CONT=K'400' SYS=1 %FINISH FAULT=0; ID=P_REPLY FN = P_A1 VADDR=P_A2 ! ! CHECK IF ACCESS TO RESEVED AREA ! %IF VADDR=0 %START BOT=0; FAULT=9 %ELSESTART %IF P_A3TOP %C %THEN FAULT=4 %AND ->FIN FAULT=MAPADDR(VADDR) ->FIN %IF FAULT#0 ! ! COMPUTE TRACK&SECTOR ! TRACK=P_A3//13 MAPIND=(P_A3-(TRACK*13))*2+1 ! ! DO DOUBLE TRANSFER ! %CYCLE I=1, 1, 2 SECTOR=SECMAP(MAPIND) %IF FN=READ %START; !READ SEQUENCE SEEK(READFN) BUFFER(EMPTYFN) %IF FAULT = 0 %ELSEIF FN=WRITE %START; !WRITE SEQUENCE BUFFER(FILLFN) SEEK(WRITEFN) %FINISH %EXIT %IF FAULT # 0 MAPIND=MAPIND+1; !NEXT SECTOR VADDR=VADDR+256; !NEXT ADDRESS ! PAR = PAR+4; ! THIS REALLY SHIFTS IT ! ALLWAYS DO NEXT BIT FOR NOW, 2 PROBLEMS, NEW SEG & > 32K ! %IF VADDR&K'17777'<512 %START PAR=MAP ABS(VADDR,0,10); !NEW SEG-RELEASE OLD ONE FAULT=MAPADDR(VADDR) ! %FINISH %EXITIF FAULT#0 %REPEAT PAR=MAP ABS(VADDR,0,10); !RELEASE USER SEG %FINISH ! !RETURN MESSAGE TO USER ! FIN: P_A1=FAULT P_SERVICE=ID P_REPLY = SYS1 PON(P) %REPEAT %ENDOFPROGRAM ! TEMP VERSION TO PRINT OUT ERRORS ! FILE 'RX022S' ! RX02 FLOPPY DISC HANDLER ! THIS IS THE UNIT 0&1 VERSION ! %% LAST UPDATED 2ND APRIL 1980 FILE=RX022S ! USES SYSTEM SLOTS 8 AND 14. INT SLOT -8. ! CALLING PARAMETERS ARE AS FOLLOWS ! P_A1=MODE (0=READ,1=WRITE) ! P_A2=ADDRESS OF BUFFER IN MEMORY ! P_A3=BLOCK NUMBER ON DISC ! SINCE DEIMOS DEALS IN 512 BYTE BLOCKS ALL TRANSFERS ARE 2*256 !BYTE SECTORS. THE FIRST 77 BLOCKS ARE RESERVED FOR THE SYSTEM. !WITHIN EACH TRACK OF 26 SECTORS THE SECTORS ARE INTERLEAVED. ! ON EXIT P_A1=FAULT NO. (0=OK) ! ANY ERROR WILL RESULT IN UP TO 10 RETRIES. ! STACK=300 STREAMS=0 %CONTROL K'101011' %SYSTEMROUTINESPEC LINKIN(%INTEGER SERVICE) %SYSTEMROUTINESPEC MAPHWR(%INTEGER SEG) %SYSTEMINTEGERFNSPEC MAP ABS(%INTEGER VAD,LEN,ID) %SYSTEMINTEGERFNSPEC GET ID %PERMROUTINESPEC SVC(%INTEGER EP,P1,P2) %BEGIN %RECORDFORMAT PF(%BYTEINTEGER SERVICE,REPLY,%INTEGER A1,A2,A3) %RECORDFORMAT P2F(%INTEGER D) %RECOR LOADS FROM 000000 TO 055415 AND 60000 TO 063707 TOP OF STORE IS DETERMINED AT RUN TIME DISC? PUT ON UNIT 1 CORE IMAGE WRITTEN $PON $POFF $PONOFF $MAPVIRT $MAPABS $LINKIN $MAPHWR $MAPABS $GETID ÿÿÿÿÿÿ VSN009E ùÿúÿ ÆeÞÿµ øÿÝ( Æeþÿ+þ RX02ZÁ Æeäÿµ ÆeüÿÔ õeýÿüÿf üÿ÷ ò ÁEøÿÁe0 Æeöÿi¤ ÷ÿÁ¨ üÿÀª öÿNa Ù f¬ Æeþÿ ÀE?à túÿÀE ü4`l Ü@ô% ÀEÿóÀ ô@ôE Æeþÿ»Ò ÆeüÿI" ÆeþÿÊB Ù ¾H Æeþÿ a÷ H Ðþ%R ÆeþÿjV Ù Fb Æeþÿ a÷ ® aÀe  ÁEàÿt öþ,¬ Æeöÿe¶ øÿ©Ô ný%Ú A×7x *A×7x Ù Öâ °þ÷ ú ¤þTè zA×7x xþ÷  ¦A÷  ®Aô% Æeþÿî èA×7x øÿää øÿØî ÂEøÿÂ% aÂe  úÿÃe ÀEøÿ ÀEàÿ4 5`øÿs Æeäÿµ øÿ×B Æeüÿ õeýÿüÿf üÿ÷ ò ÁEøÿÁe0 Æeöÿ©¤ öÿNa Ù ¦¬ Æeþÿ]¸ ÀE?à túÿÀE ü4`l ÀEÿóÀ ÆeþÿûÒ °þ÷ ú xþ÷  lþOò ÿÿÿÿÿÿ ÆeðÿÃD øÿ5N üÿþP øÿÀe @-üÿ a÷ L vT À%ÿÿ À%þÿ À%ýÿ EK ERROR TRAV Æeþÿ. ÁEÀÿ@` a÷ B Ôý÷ Èý÷ àý5* Ù ^: èÿæÿuaæÿä< Ù @> Ù òB ðÿNa Ù zP W=öÿ ñÿÀE öÿ@àÀ äÿ5aäÿ= äÿW/äÿ ðÿ/| `üÚ´ tûÿÂEøÿµ öRDFORMAT RXF(%INTEGER CONTROL,DBREG) %CONSTRECORD(RXF)%NAME RX=K'117170'; !DEVICE ADDR ! VECTOR = 264 ! SYSTEM CONSTANTS %OWNINTEGER KID %CONSTINTEGER SYS1=3; !UNIT 2 %CONSTINTEGER SYS2=14; !UNIT 3 %CONSTINTEGER DINT=-3; !INT SLOT ! RX02 PARAMETERS %CONSTINTEGER TRBIT=K'400'; !READY BIT %OWNINTEGER TOP=1000 %OWNINTEGER BOT=88 %CONSTINTEGER RETC=10; !RETRY COUNT %CONS Æe´ÿµ øÿÇ& ÆeöÿÄ úÿ5aúÿõ öÿNa Æeüÿc" Æeþÿ að¥ Æeúÿ úÿÓ8 üÿ0< À@Á%0 AmüÿÁå0 úÿëB HAÁ%N lAõ%T AÂ%S ºAÂ% Æeúÿî~ að¥ üÿu-üÿúÿ üÿ@m Amüÿ a1¢Õ ,BtmüÿN Æeþÿy Æeþÿé¨ a÷ ¤ Æeþÿ¤´ a÷ r *C÷ @ 8C÷ 2 BC÷ FC÷ $ PC÷ ÐÿìÄ °þôÔ vý:Ö Æeøÿ*Ú ÆeþÿoÞ úÿèà ÀCô%æ ~üõæ øÿ­ê úÿ4ì ò¥ÿÿÐÿ üÿNa÷ b a÷ t ð¥ÿÿÐÿ tDõ% ºD5mö úÿ` ÀDõ% ºþ^( °þ£* öD4-ì E4-ì Øþ:4 &Eô%ÿÿî ®û:D Æeúÿ^H hEô%ÿÿê ÿÿüÿW-üÿå üÿíN @læÿ ¦Eô%æ ²E5-î úÿ¯V üÿÂe 8û:\ Æeöÿì` à÷ÿÝl üÿõn öÿNa Ù Ôp $úÂr a÷ l Æeþÿy àñÿV Æeþÿ? Æeþÿ Ù A  Æû}¢ Æeþÿµ¦ ÷ÿóª Æeôÿz´ òÿÁE aGl: ¢ù:¾ vGô% bù:Þ a÷ ð ¼G÷ Ô @ù:ì a÷  "ù:ú ÷ÿÁE ÷ÿÁE a÷ p Êý9$ ôÿÁe üÿÒ8 øÿM> öÿ¤@ üÿÀe ÿÀ = ìHõ% @lÌÿÈ¥ üÿ@lÌÿ úÿWF ôÿu-üÿôÿ üÿ«H @lÌÿ öÿ-J TIõ% üÿ1P ¬I÷ ä ºü¹d J÷:f Æeøÿøj ôÿúÿ úÿÁe æÿät àIð¥ üÿu-üÿøÿ @læÿ Bmüÿ óÿÃE Æeüÿç  óÿu¨ Dû8ª Jõê° Æeüÿ¬¸ a÷ x aÁeº ìõè@ öÿãB Ù ÉD :ø¤F öÿ3T À÷úf `ùüj *Kߥ? 0à»x K÷ æ PL÷ 4 TLߥA hLߥL 0àn  LߥH 0àV¨ ¢Lô¥ æL4-¤ ôLô%8 INDERØ ÆeÚýµ ôýòýuaòýò ÿÿîýW-îýý ìýNa÷ l îý@mòýH ÿÿÞýW-Þý) ýýÀE v@À% a÷ H @W=îý a÷ & AaÁeôýf Â@õ% þýÀEøÿÀe0 ÂEøÿÂe0 Úý÷ Ú Üý÷ Ò @A÷ ~ øÿ÷ N àÈ ÷ àÈ Î ! FILE 'FEP_PRT9BS' ! FILE 'FEP_PRT9BS' !********************* !* PRT9S/PRT9Y * !* DATE: 25.AUG.80 * !*HISTORY UNCERTAIN * !!!!!!!!!!!!!!!!!!!!!! !STACK = 140 %CONTROL X'100001'; ! TRUSTED PROGRAM AND QUICK ! ROUTINE ENTRY AND EIS %CONSTINTEGER KERNEL SER = 10 %OWNINTEGER SECONDARY = 1; !PRIM = 0, SEC = 1 %OWNINTEGER SECAD = 0; !SECONDARY ADDRESS %CONSTINTEGER WMAX = 56; ! MAX NO OF WRITES %CONSTINTEGER SFMASK = 63; ÀTÀ<À ÀTÀÿÿÿÿÿÿ FILE: DONE SHAREDF INSEVØ ÆeZôµ ôýòýuaòýõ ô~ôua~ôU >@÷ ÿÿ|ô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: ! FILE 'DUPHDE' !************** !* DUPHDE * !*DA:02.MAR.81* !************** %CONTROL K'100001'; ! 'SYSTEM' PROGRAM AND ! TRUSTED PROG %RECORDFORMAT PARF(%INTEGER TYPE, ADDRESS, LEN) %EXTERNALROUTINE DUP11E(%RECORD (PARF) %NAME P) %SYSTEMROUTINESPEC MAPHWR(%INTEGER SEG) %SYSTEMINTEGERFNSPEC GETID %SYSTEMROUTINESPEC LINKIN(%INTEGER SER) %SYSTEMINTEGERFNSPEC MAP ABS(%INTEGER ADR, LEN, REQ ID) %PERMINTEGERFNSPEC SVC(%INTEGER EP, P0, P1) %RECORDFORMAT PF(%BYTEINTEGER SER, REPLY, %INTEGER A1, A2, A3) %RECORDFORMAT DUP11F(%INTEGER RCS, RDB, TCS, TDB) %OWNRECORD (DUP11F) %NAME DUP = 1; ! SET UP BY PROT ON INITIALISE %RECORDFORMAT DESF(%INTEGER PT, %BYTEINTEGER STATE, S1, %C %INTEGER MAXLN, P1, FLAG, SEG, SA, VEC, INTNO) %RECORDFORMAT DES2F(%RECORD (DESF) RX, TX) %RECORDFORMAT PAR2F(%INTEGER TYPE, %RECORD (DUP11F) %NAME ADDRESS,LEN) %RECORDFORMAT R1F(%INTEGER N) %RECORDFORMAT R2F(%RECORD (DES2F) %ARRAYNAME DES) %RECORD (PAR2F) %NAME P2 %OWNRECORD (DES2F) %NAME DES %OWNRECORD (DES2F) %ARRAY %NAME DESX %RECORD (R1F) R1; %RECORD (R2F) %NAME R2 %CONSTINTEGER INITIALISE = 0 %CONSTINTEGER LINE INPUT = 1 %CONSTINTEGER LINE OUTPUT = 2 %CONSTINTEGER INPUT HERE = 3 %CONSTINTEGER OUTPUT DONE = 4 %CONSTINTEGER MARK = K'377' %CONSTINTEGER RSET=K'100',DSR=K'1000',DTR=2,RTS=4,CTS=K'20000' %CONSTINTEGER DCD=K'10000',RXEN=K'20',TXEN=K'20',DLEN=K'40' %CONSTINTEGER PARM = K'101062'; ! MODE=BYTE, NO CRC %CONSTINTEGER TSOM = K'400', TEOM = K'1000' %CONSTINTEGER DRS = K'400', SND = K'20', RCVEN = K'20' %OWNINTEGER TX REPLY, RX REPLY %ROUTINESPEC OCTAL(%INTEGER N) %SWITCH TYPESW(INITIALISE:OUTPUT DONE) %OWNINTEGER TYPE, F, CAD, OSEG, I, X %OWNINTEGER PAR, MID, PAD %OWNINTEGERARRAY RADDR(0:7) -> TYPE SW(P_TYPE) TYPE SW(INITIALISE): ! LEN IS NOW THE DEVICE NUMBER (0-2) MID = GET ID MAPHWR(3) P2 == P DUP == P2_ADDRESS %CYCLE I = 1, 1, 7; ! FIND ABSOLUTE ADDRESSES RADDR(I) = MAP ABS(I<<13, 256, MID); ! MY ADDRESSES F = MAP ABS(I<<13, 0, MID); ! AND OFF AGAIN %REPEAT X = SVC(22, 0, 0); ! MAP TO DUP DESCRIPTOR AREA R2 == R1 R1_N = X&K'77'; ! JUST THE PAGE DISPLACEMENT DESX == R2_DES; DES == DESX(P_LEN) DES_RX_VEC = K'160000'!(P_ADDRESS&K'17777') DES_TX_VEC = DES_RX_VEC DUP_TCS = DUP_TCS!DRS; ! RESET THE DEVICE I = 0; ! TO FORCE A MOV #0, DUP_RDB = I; ! PARM = 0 DUP_RCS = DUP_RCS!DTR %WHILE DUP_RCS&DSR = 0 %CYCLE; %REPEAT DUP_RCS = DUP_RCS!RTS %WHILE DUP_RCS&CTS = 0 %CYCLE; %REPEAT %WHILE DUP_RCS&DCD = 0 %CYCLE; %REPEAT DUP_TCS = DUP_TCS!K'100'!SND DUP_TDB = TSOM %RETURN TYPE SW(OUTPUT DONE): ! TRANSMITTER TYPE = LINE OUTPUT %IF DES_TX_FLAG < 0 %OR TXREPLY = 0 %START !! TRANSMITTER ERROR PRINTSTRING('TX ERROR P_LEN = 1 %ELSE P_LEN = 0 %FINISH P_TYPE = LINE OUTPUT TXREPLY = 0 %RETURN TYPE SW(INPUT HERE): !! RECEIVER INTERRUPT X = DES_RX_FLAG %IF X < 0 %OR RX REPLY = 0 %START F = -2; ! FRAME ERROR ! %IF DUP_RSR&K'20' # 0 %THEN F = -3; ! SILO FULL FLT: ! DUP_RCR = 0; ! CLEAR DOWN ! DUP_RCR = K'10'; ! AND UP AGAIN %ELSE ! %IF DUP_RSR&K'1000' # 0 %THEN F = -1 %AND -> FLT ! WC OVERFLOW F = DES_RX_PT-CAD ! NUMBER OF BYTES TRANS ! %IF DUP_RSR&K'074000' # 0 %THEN F = F-1 %IF F> 252 %START PRINTSTRING("DUP NASTY:") OCTAL(DUP_RCS); SPACE; OCTAL(CAD); SPACE; OCTAL(F);NEWLINE %FINISH %FINISH P_TYPE = LINE INPUT P_ADDRESS = PAD; ! PASS BLOCK ADDRESS BACK P_LEN = F RX REPLY = 0 %RETURN TYPE SW(LINE INPUT): !! USER CALL !! READ REQUEST %IF RX REPLY # 0 %THEN -> ABORT RXREPLY = MID PAD = P_ADDRESS ! PAR = MAP ABS(PAD, P_LEN, RXREPLY) PAR = RADDR(PAD>>13) %IF PAR = 0 %THEN -> ABORT CAD = PAD&K'17777'!K'140000'; ! IN SEG NO 6 DES_RX_MAXLN = P_LEN DES_RX_SEG = PAR DES_RX_PT = CAD DUP_RCS = DUP_RCS!K'100'!RCVEN DES_RX_STATE = 0 %RETURN TYPE SW(LINE OUTPUT): !! OUTPUT REQUEST %IF TX REPLY # 0 %THEN -> ABORT TX REPLY = MID OSEG = P_ADDRESS ! PAR = MAP ABS(OSEG, P_LEN, TX REPLY) PAR = RADDR(OSEG>>13) %IF PAR = 0 %THEN -> ABORT DES_TX_SEG = PAR DES_TX_PT = P_ADDRESS&K'17777'!K'140000'; ! IN SEG NO 6 DES_TX_SA = P_LEN; ! LENGHT IN CHARS DES_TX_STATE = 1; ! TELL IT TO EXPECT INTS %RETURN ABORT: PRINTSTRING('DUP FAIL %CYCLE; %REPEAT %ROUTINE OCTAL(%INTEGER N) %INTEGER I PRINTSYMBOL((N >> I)&7+'0') %FOR I = 15, -3, 0 %END %END %ENDOFFILE %IF TX REPLY # 0 %THEN -> ABORT %END ! CIRC BUFFER SIZE FOR WRITES %CONSTSTRING (7) VSN = 'VSN009H' %PERMINTEGERFNSPEC SVC(%INTEGER EP, B, C) %BEGIN %RECORDFORMAT XXF(%INTEGER DUMMY) %CONSTRECORD (XXF) %NAME NULL = 0 %SYSTEMROUTINESPEC ALARM(%INTEGER TICKS) %SYSTEMROUTINESPEC LINKIN(%INTEGER SER) %RECORDFORMAT PARF(%INTEGER TYPE, %RECORD (XXF) %NAME B, %C %INTEGER LEN) %EXTERNALROUTINESPEC DQS11E(%RECORD (PARF) %NAME L) %EXTERNALROUTINESPEC DUP11E(%RECORD (PARF) %NAME B) %CONSTBYTEINTEGERNAME ID = K'160030' %OWNINTEGER LINE TYPE = 0; ! 0=DQS11, 1=DUP11E %OWNINTEGER LINE = 0; !LOGICAL LINE %OWNRECORD (XXF) %NAME HANDLER ADDRESS = 1; ! SET BY INITIATING PROG %CONSTINTEGERNAME NO OF BUFF = K'100112'; ! NO OF BUFFERS (BUFF3) %OWNINTEGER BIG LIMIT = 7; ! TRY AT 5 FOR NOW %OWNINTEGER CRITICAL = 8; ! NO TO RETURN BUFFERS AT %OWNINTEGER MAX READS = 4; ! MAX IT IS ALLOWED TO HOLD %OWNINTEGER RR TIME = 2; ! TIME IN 1/2 SEC TO SEND RR %CONSTINTEGER INITIALISE = 0; ! CALLS & REPLIES TO LINE HANDLER ROUTINES %CONSTINTEGER LINE INPUT = 1 %CONSTINTEGER LINE OUTPUT = 2 %CONSTINTEGER INPUT HERE = 3 %CONSTINTEGER OUTPUT DONE = 4 %CONSTINTEGER INPUT REQ = 1; ! INTERFACE TO HIGHER LEVEL %CONSTINTEGER OUTPUT REQ = 2 %CONSTINTEGER BOUNCE = 3 %CONSTINTEGER PUT DOWN = 4 %CONSTINTEGER PUT UP = 5 %CONSTINTEGER MONIT = 6 %CONSTINTEGER BUFFER MANAGER = 17 %OWNINTEGER RX INT = -7, TX INT = -6 %RECORDFORMAT MEF(%BYTEINTEGER HLEN, HTYPE, LEN, TYPE, %C %BYTEINTEGERARRAY A(0:240)) %RECORDFORMAT HDLCF(%BYTEINTEGER ADD, TYPE) %RECORDFORMAT MEF2(%BYTEINTEGER HLEN, HTYPE, %RECORD (HDLCF) HDLC) %RECORDFORMAT PE(%BYTEINTEGER SER, REPLY, %INTEGER A1, A2, A3) %RECORDFORMAT P2F(%BYTEINTEGER SER, REPLY, FN, LINE, %C %RECORD (MEF) %NAME M, %BYTEINTEGER LEN, S1) %OWNRECORD (PARF) PAR %OWNRECORD (PE)P %OWNRECORD (P2F) %NAME P2 %OWNINTEGER RSTATE, TSTATE %INTEGER I %OWNINTEGER ISTATE=2, ACTIVE=0 %OWNINTEGER AAA, EEE, FFF, TTT !A..LAST MESSAGE ACKNOWLEDGED ! BY OTHER END !E..NUMBER OF NEXT MESSAGE ! EXPECTED !F..LAST OUTPUT MESSAGE HELD+1 !T..LAST MESSAGE SENT %OWNINTEGER DATA MISSED, ABORT REQ %OWNINTEGER WPEND; !WRITES PENDING %OWNINTEGER INPUT EXP; !BLOCKS OF INPUT EXPECTED %OWNINTEGER CLOCK0, CLOCK1, CLOCK2, CLOCK3, CLOCK4, CLOCK5 !CLOCK1. CLEARED WHEN ACK ! RECEIVED, AND WHEN RETRY STARTS ! TIMED WHEN ACK ! OUTSTANDING !CLOCK2. TIME SINCE VALID ! MESSAGE FROM OTHER END !CLOCK3. NO OF TRANSMIT ! RETRIES. CLEARED WHEN ACK ! RECEIVED !CLOCK. TIME SINCE RR OR SARM %OWNINTEGER IRD, RR RD, RNR RD, REJ RD, I TR, RR TR, REJ TR %OWNINTEGER BAD ACK, BAD FR, DM, SILO FULL, RNR TR, I RE TR %OWNINTEGER Q MAX, DCOU, DSYM %RECORDFORMAT WDSE(%RECORD (MEF2) %NAME M, %INTEGER LEN) %RECORDFORMAT BPF(%RECORD (MEF2) %NAME M) %OWNRECORD (WDSE) %NAME WDESC %OWNRECORD (WDSE) %ARRAY WSPACE(0:SFMASK) %OWNRECORD (WDSE) %NAME IDESC %OWNRECORD (WDSE) ICURR %OWNRECORD (WDSE) %NAME IPOOL %OWNRECORD (WDSE) OM %OWNRECORD (BPF) %NAME IM %OWNRECORD (BPF) %NAME ME2 %CONSTBYTEINTEGERNAME CHANGE OUT ZERO = K'160310' %CONSTINTEGER T3 SER = 21 %CONSTBYTEINTEGERNAME INT = K'160060' %CONSTBYTEINTEGERARRAY INIT(0:1) = 4, 2; ! INITIAL STATE OF ISTATE %RECORDFORMAT M1F(%INTEGER A, B, C, D, E, F) %RECORD (M1F) M1, M2 %SWITCH SW(INPUT REQ: MONIT) %ROUTINE START INPUT PAR_TYPE = LINE INPUT; PAR_B == ICURR_M_HDLC; PAR_LEN = ICURR_LEN %IF LINE TYPE = 0 %START DQS11E(PAR) %ELSE %IF LINE TYPE = 1 %START DUP11E(PAR) %FINISH %END %ROUTINE WREPLY(%INTEGER FLAG, BLOCK) P_SER = KERNEL SER; P_REPLY = ID P2_FN = OUTPUT REQ; P_A2 = BLOCK; P_A3 = FLAG P2_LINE = LINE !! MONITOR(P) PON(P) %END %ROUTINE RETURN BUFF %RECORD (WDSE) %NAME ME2 P_SER=BUFFER MANAGER; P_REPLY=ID P_A1=1; P2_M == WDESC_M P2_M_TYPE = WDESC_M_HTYPE %IF P2_M_TYPE # 0 %OR INPUT EXP > MAX READS %OR NO OF BUFF %C < CRITICAL %START PON(P) %ELSE ME2 == P2_M ME2_M == IPOOL IPOOL == ME2 INPUT EXP = INPUT EXP+1 %FINISH %END %ROUTINE ASK FOR BUFFER P_SER = BUFFER MANAGER; P_REPLY = ID P_A1 = 0; P_A3 = 0; ! ASK FOR BIG BUFFER PON(P) %END %ROUTINE TELL PRINTSTRING("PROT"); WRITE(LINE, 1); PRINTSYMBOL(':') %END %ROUTINE DELETE READS %WHILE %NOT IPOOL == NULL %CYCLE INPUT EXP = INPUT EXP-1 ME2 == IPOOL; IPOOL == ME2_M P2_M == ME2 P_SER = BUFFER MANAGER; P_REPLY = ID; P_A1 = 1 PON(P) %REPEAT INPUT EXP = 0 %END %ROUTINE ABORT(%INTEGER TYPE) ! REASONS FOR ABORT: !1..NOTHING VALID RECEIVED IN ! 40 TICKS !2..10 RETRIES TO RE-TRANSMIT !3..DEVICE HANDLER FAULT !4..RESET FROM BRIAN !6..SARM RECEIVED FROM PRIMARY !7..NO READS ONFOR 24 TRIES !8..TOO MANY WRITES (IE FULL UP) %INTEGER X, I %RETURNIF ISTATE # 0; !ALREADY DOWN %IF ABORTREQ = 0 %START TELL; PRINTSTRING("DEAD ") PRINTSYMBOL(TYPE+'0') WRITE(DATA MISSED, 3); DATA MISSED = 0 NEWLINE WREPLY(1, 0); !TELL GATE DOWN !SET RESTRICTIVE CONDITION %FINISH %IF ACTIVE = 2 %START ABORTREQ = 1 %ELSE ABORTREQ = 0 !TIDY UP REQUESTS X = 0 %WHILE AAA # FFF %CYCLE; !TIDY UP REQUESTS WDESC == WSPACE(AAA) RETURN BUFF WDESC_M == NULL AAA = (AAA+1)&SFMASK X = X+1 %IF X&7 = 7 %THEN I = SVC(18, 1, 0) %REPEAT I = SVC(18, 2, 0); ! PUT PRIO BACK TO 2 ISTATE = INIT(SECONDARY) DELETE READS %FINISH %END %ROUTINE HANDLE OUTPUT %RECORD (HDLCF) %NAME HDLC %RECORD (MEF2) %NAME M %INTEGER TYPE, LEN %RETURNIF ACTIVE # 0; !ABORT IF TRANSMITTER BUSY %IF ABORT REQ # 0 %THEN ABORT(0) %IF ISTATE # 0 %START; ! IN INITIAL SEQUENCE %IF ISTATE = 4 %START; ! SEND SARM ISTATE = 3; ! GOES BACK TO 4 AFTER CLOCK TICK TYPE = X'0F'; !SARM -> SEND1 %FINISH %IF ISTATE = 1 %START; ! READY TO SEND UA ISTATE = 0 TYPE = X'63'; !UA -> SEND1 %FINISH %RETURN; ! ISTATE#ABOVE VALUES %FINISH %IF RSTATE = 3 %START RSTATE = 2 REJ TR = REJ TR+1 TYPE = 9; !REJ -> SEND %FINISH %IF RSTATE = 6 %START; ! SEND RNR TYPE = 5 RNR TR = RNR TR+1 RSTATE = 5; ! GET IT TO SEND RR IF POSSIBLE -> SEND %FINISH %IF TTT # FFF %AND TSTATE = 0 %C %AND (TTT-AAA)&7#6 %START WDESC == WSPACE(TTT) M == WDESC_M; HDLC == M_HDLC LEN = WDESC_LEN TYPE = EEE << 5+(TTT&7) << 1 TTT = (TTT+1)&SFMASK ACTIVE = 2; !BIG BLOCK BEING TRANSMITTED CLOCK1 = 0; !SET TIMER I RE TR = I RE TR+1; ! TOTAL NO OF I FRAMES TR -> PUT %FINISH %IF RSTATE = 1 %OR (RSTATE = 2 %AND CLOCK0 >= 5) %START RSTATE = 0 %IF RSTATE = 1 TYPE = 1; !RR RR TR = RR TR+1 %ELSE %RETURN !! SEND: TYPE = EEE << 5+TYPE SEND1: HDLC == OM_M LEN = 2 ACTIVE = 1; !SHORT BLOCK BEING TRANSMITTED PUT: CLOCK0 = 0 HDLC_ADD = SECAD; HDLC_TYPE = TYPE PAR_TYPE = LINE OUTPUT; PAR_B == HDLC; PAR_LEN = LEN %IF LINE TYPE = 0 %START DQS11E(PAR) %ELSE %IF LINE TYPE = 1 %START DUP11E(PAR) %FINISH %END !! %ROUTINE HANDLE INPUT %RECORD (HDLCF) %NAME HDLC %RECORD (WDSE) %NAME IMESS %RECORD (MEF2) %NAME M %INTEGER R, S, X, TYPE M == ICURR_M HDLC == PAR_B; ! NB: HDLC AND M ARE PICKED UP SEPERATELY !!!!!! %UNLESS HDLC == M_HDLC %START PRINTSTRING("PROT:BAD ADDRESS %CYCLE;%REPEAT %FINISH ! PAR_LEN<0 BUFFER TOO SMALL %IF PAR_LEN < 0 %START %IF PAR_LEN = -1 %START DM = DM+1 CLOCK4 = CLOCK4+1 %IF CLOCK4>24 %THEN ABORT(7) %ELSE %IF PAR_LEN = -2 %START BAD FR = BAD FR+1 %ELSE %IF PAR_LEN = -3 %START SILO FULL = SILO FULL+1 %FINISH -> NOISE %FINISH TYPE = HDLC_TYPE&X'EF'; ! IGNORE POLL -> NOISE %IF ABORT REQ # 0 %IF ISTATE # 0 %START -> NOISE %IF ISTATE = 10 ! KEEP DOWN IF NO READS OR LINE MEANT TO BE DOWN DCOU = DCOU+1; DSYM = TYPE; ! RETAIN FOR MONITORING %IF TYPE = X'0F' %START; ! SARM SEEN %IF SECONDARY = 1 %OR SECAD > HDLC_ADD %START ISTATE = 1; ! SEND UA %ELSE -> NOISE; ! IGNORE IT %ELSE -> NOISE %UNLESS SECONDARY = 0 %AND TYPE = X'63' ISTATE = 0; ! ALL DONE %FINISH RSTATE = 1; ! SEND RR TSTATE = 0 AAA = 0; EEE = 0; FFF = 0; TTT = 0 CLOCK1 = 0; CLOCK2 = 0; !RESET CLOCKS CLOCK3 = 0 WREPLY(0!(HDLC_ADD<<8), 0); !TELL NOEL UP WPEND = 0 -> END3 %FINISH %IF TYPE = X'0F' %START %IF CLOCK2 >= 15 %START !SARM RECEIVED & THIS IS ! SECONDARY ABORT(6); !SARM RECEIVED %FINISH -> NOISE %FINISH R = (TYPE >> 5)&7 TYPE = TYPE&15 %IF TYPE&1 = 0 %START; !INFORMATION BLOCK S = TYPE >> 1 %IF S # EEE %START RSTATE = 3 %UNLESS RSTATE = 2 !REJECT IF NOT ALREADY SET -> END1 %FINISH !PASS MESSAGE UP P_SER = KERNEL SER; P_REPLY = ID P2_FN = INPUT REQ; P2_LINE = LINE P2_M == M P2_M_TYPE = M_HTYPE P2_M_LEN = PAR_LEN-2 %IF 0 # P2_M_TYPE # 64 %START PRINTSTRING("PROT: GROTTED %FINISH PON(P) I RD = I RD+1 HDLC == NULL; !NO CURRENT BUFFER EEE = (EEE+1)&7 %IF RSTATE = 5 %THEN RSTATE = 1 %ELSE RSTATE = 5 !! SEND RR IF 2 OUTSTANDING, ELSE WAIT AND SEE %IF NO OF BUFF < BIG LIMIT %THEN RSTATE = 6; ! SEND RNR %ELSE %IF TYPE = 1 %START; !RR TSTATE = 0 RR RD = RR RD+1 %ELSE %IF TYPE = 5 %START; !RNR TSTATE = 1 RNR RD = RNR RD+1 %ELSE %IF TYPE = 9 %START ! 9=REJ REJ RD = REJ RD+1 %ELSE TELL; PRINTSTRING("NOISE"); WRITE(TYPE, 1); WRITE(R, 1) NEWLINE -> NOISE %FINISH; %FINISH; %FINISH %FINISH !! END1: !CHECK ACKNOWLEDGEMENT X = AAA %WHILE X&7 # R %CYCLE %IF X = TTT %START; !NO ACK EXPECTED BAD ACK = BAD ACK+1 -> END3 %FINISH X = (X+1)&SFMASK %REPEAT %UNLESS ACTIVE = 2 %AND X = TTT %START !IGNORE ACK FOR BLOCK !CURRENTLY BEING TRANSMITTED !UPDATE A COUNTER %WHILE AAA # X %CYCLE WDESC == WSPACE(AAA) RETURN BUFF I TR = I TR+1 WDESC_M == NULL WPEND = WPEND-1; !COUNT DOWN TRANSMIT REQUESTS AAA = (AAA+1)&SFMASK CLOCK1 = 0; CLOCK3 = 0 %REPEAT %IF TYPE = 9 %THEN TTT = AAA; !REJ..RESET TRANSMIT COUNT %FINISH END3: !VALID MESSAGE CLOCK2 = 0; !RESET VALIDITY TIMER NOISE: %IF %NOT HDLC == NULL %AND %NOT ICURR_M==IM %START %IF ISTATE = 10 %START WDESC == ICURR; ! MAP TO IT FOR RETURN BUFF RETURN BUFF %RETURN %FINISH !! USE THE SAME ONE AGAIN %ELSE %RETURN %IF ISTATE = 10; ! HOLD IT DOWN %IF INPUT EXP > 0 %START CLOCK5 = 0 ICURR_M == IPOOL IPOOL == IPOOL_M; INPUT EXP = INPUT EXP-1 ICURR_M_HTYPE = ICURR_M_HDLC_TYPE %IF ICURR_M_HTYPE=0 %THEN ICURR_LEN =252 %C %ELSE ICURR_LEN = 60 %ELSE ICURR_M == IM; ICURR_LEN = 6 %FINISH %FINISH %IF INPUT EXP<2 %THEN ASK FOR BUFFER START INPUT HANDLE OUTPUT %END %ROUTINE CLOCK INT %INTEGER FLAG ALARM(25); !RESTART CLOCK CLOCK0 = CLOCK0+1 %IF ISTATE # 0 %START %RETURN %IF CLOCK0 < 5 %OR ISTATE = 10 ISTATE = INIT(SECONDARY); !SEND ANOTHER SARM %ELSE CLOCK4 = 0 %IF INPUT EXP > 0 CLOCK2 = CLOCK2+1 %IF CLOCK2 >= 80 %START !NOTHING FROM OTHER END IN 80 ! TICKS %IF CLOCK4>10 %THEN FLAG = 7 %ELSE FLAG = 1 -> LABORT %FINISH %IF NO OF BUFF = 0 %START CLOCK5 = CLOCK5+1 %IF CLOCK5 > 60 %THEN FLAG=7 %AND ->LABORT %FINISH %IF AAA # TTT %THEN CLOCK1 = CLOCK1+1 %IF CLOCK1 > RR TIME %AND AAA # TTT %AND TSTATE = 0 %START CLOCK3 = CLOCK3+1; !COUNT RETRIES %IF CLOCK3 > 30 %START FLAG = 2 -> LABORT %FINISH CLOCK1 = 0 TTT = AAA; !RESET TRANSMIT COUNT %ELSE %IF CLOCK0 >= RR TIME %START; !SEND ANOTHER RR RSTATE = 6 %IF NO OF BUFF < BIG LIMIT RSTATE = 1 %IF RSTATE = 0 %OR RSTATE = 5 %ELSE %RETURN !! LABORT: ABORT(FLAG); !1..NOTHING VALID IN 40 ! TICKS..2..10 RETRIES TO ! RETRANSMIT %FINISH; %FINISH; %FINISH HANDLE OUTPUT %END !! %ROUTINE REINITIALISE !! GRABS THE INTERRUPT SERVICE NOS AND SETS/RESETS THE DEVICE LINKIN(RXINT); LINKIN(TXINT) PAR_TYPE = INITIALISE PAR_B ==HANDLER ADDRESS PAR_LEN = LINE; ! MULTIPLE DUPS, PASS LINE NO !! MUST BE EITHER 0, 1, 2 - REFERS TO POSITION !! IN PSEUDO DMA TABLE IN SUPERVISOR %IF LINE TYPE = 0 %START DQS11E(PAR) %ELSE %IF LINE TYPE = 1 %START DUP11E(PAR) %FINISH ICURR_M == IM; ICURR_LEN = 6 ACTIVE = 0; ABORT REQ = 0 START INPUT %END !! MAP VIRT(BUFFER MANAGER,5,4) MAP VIRT(BUFFER MANAGER, 6, 5) IM == M1; OM_M == M2 CHANGE OUT ZERO = T3 SER P2 == P P2_SER = 0; POFF(P2); ! WAIT FOR INSTRUCTIONS LINE = P2_FN; LINE TYPE = P2_LINE&7 HANDLER ADDRESS == P2_M RXINT = P2_LEN!X'FF00'; TXINT = P2_S1!X'FF00' %IF P2_LINE&K'70' # 0 %THEN %C ISTATE = 10 %ELSE ISTATE = INIT(SECONDARY) !! IF ANY OF BITS 3-5 IS SET, LINE IS HELD DOWN REINITIALISE; ! GRAB INTERRUPTS AND RESET DEVICE WREPLY(2, 0); ! HERE I AM (HELLO TO KERNEL) I = SVC(18, 2, 0) ALARM(25) HANDLE OUTPUT ASK FOR BUFFER %CYCLE P_SER = 0 POFF(P) %IF P_SER&X'80' # 0 %START; ! INTERRUPT %IF P_SER = TX INT&X'FF' %THEN I = OUTPUT DONE %ELSE %C I = INPUT HERE PAR_TYPE = I %IF LINE TYPE = 0 %START DQS11E(PAR) %ELSE %IF LINE TYPE = 1 %START DUP11E(PAR) %FINISH %IF PAR_TYPE = LINE OUTPUT %START ACTIVE = 0; HANDLE OUTPUT %ELSE HANDLE INPUT %FINISH %CONTINUE %FINISH %IF P_REPLY = 0 %START CLOCK INT; ! CLOCK INTERRUPT %IF INT = '?' %START INT = 0 TELL; WRITE(ISTATE, 4); WRITE(RSTATE, 4) WRITE(INPUT EXP, 5); WRITE(W PEND, 4) WRITE(Q MAX, 4); QMAX = 0; SPACES(4) WRITE(DCOU, 4); WRITE(DSYM, 4) NEWLINE TELL; WRITE(IRD, 4);WRITE(RRRD, 4);WRITE(RNRRD, 4);WRITE(REJRD, 4) WRITE(ITR,6);WRITE(RRTR, 4); WRITE(RNR TR, 4) WRITE(REJTR, 4); NEWLINE TELL; WRITE(BADACK, 4);WRITE(BADFR, 4);WRITE(SILOFULL, 4);WRITE(DM, 4) WRITE(I RE TR-ITR, 5) NEWLINE %FINISH %IF INT = 'A' %START; ! ABORT THE LINE INT = 0 ABORT(4); ! REQUEST TO PUT DOWN %FINISH %IF INT = 'L' %START; ! LOWER PRIORITY MAX READS = 3; BIG LIMIT = 10; RR TIME = 4 INT = 0 %FINISH %IF INT = 'H' %START; ! HIGHER PRIORITY MAX READS = 6; BIG LIMIT = 4 INT = 0 %FINISH %CONTINUE %FINISH %IF P_REPLY = BUFFER MANAGER %START; ! BUFFER HAS ARRIVED ME2 == P2_M ME2_M == IPOOL IPOOL == ME2 INPUT EXP = INPUT EXP+1 %CONTINUE %FINISH !! USER REQUEST -> SW(P2_FN) SW(OUTPUT REQ): !WRITE REQ %IF ISTATE = 0 %START WPEND = WPEND+1; ! COUNT PENDING WRITES %IF WPEND > Q MAX %THEN Q MAX = W PEND %IF WPEND = WMAX %START TELL; PRINTSTRING("FULL!") ABORT(8); ! FULL UP %CONTINUE %FINISH WDESC == WSPACE(FFF) WDESC_M == P2_M WDESC_M_HTYPE = P2_M_TYPE WDESC_LEN = P2_LEN+2 FFF = (FFF+1)&SFMASK HANDLE OUTPUT; !KICK TRANSMIT %ELSE; ! NOT UP, SO DISCARD SW(INPUT REQ): ! BEING PHASED OUT P_SER = BUFFER MANAGER; P_REPLY = ID P_A1 = 1 PON(P) %FINISH %CONTINUE SW(BOUNCE): ! FORCE LINE BOUNCE ABORT(4) %CONTINUE SW(PUT DOWN): ! FORCE AND HOLD DOWN ABORT(4); ISTATE = 10 %CONTINUE SW(PUT UP): ! ALLOW IT UP AGAIN %IF INPUT EXP = 0 %THEN ASK FOR BUFFER ISTATE = INIT(SECONDARY) REINITIALISE; ! GRAB INTERRUPTS AND RESET DEVICE ! MAY HAVE BEEN DOWN LINE LOADED %CONTINUE SW(MONIT): INT = '?' %REPEAT %ENDOFPROGRAM ABORT(4); ISTATE = 10 aÁe¬ ÃEÀÿô nõ¤ä Ù @î øÿ÷ Æeôÿ· aGld öÿ5aöÿ= öÿW/öÿ úÿøÿuaøÿr¢ ÁEÀÿu úÿî¤ ÿÿÿÿÿÿ TX ERROR DUP NASÉ a÷ ö a÷   WtóÿÁEøÿÁ ÜþD: WtóÿÁEøÿÁ Æeüÿ~f õeýÿüÿf üÿ÷ @ ÁEøÿÁe0 (þCn àÈ Î TY: DUP FAIL $PON $POFF $PONOFF $MAPVIRT $MAPABS DUP11E $MAPHWR $GETID $LINKIN $MAPABS Æeþÿ­ ÿÿÿÿÿÿ $PON $POFF $PONOFF $MAPVIRT $MAPABS DQS11E ! FILE 'DUPHDE' !************** !* DUPHDE * !*DA:02.MAR.81* !************** %CONTROL K'100001'; ! 'SYSTEM' PROGRAM AND ! TRUSTED PROG %RECORDFORMAT PARF(%INTEGER TYPE, ADDRESS, LEN) %EXTERNALROUTINE DQS11E(%RECORD (PARF) %NAME P) %END %ENDOFFILE àÈ ÷ àÈ Î ÷ 6ÿ Æeþÿ< ðÿNa òÿÀE àðÿõ àñÿ? òÿ£ ðÿNa Ù \" Æeþÿ aÀe@ ÀLÈ% a÷ Ð ÜL÷ ¨ aÁe0 a÷ | 4M÷ \ ÆeøÿvD ðÿêÿ0`êÿíN êÿñ¥ a÷ 4 |ó:V aÂe@ aGlÀ &ó:h 0Nò¥ üÿW-üÿ ÜNõ% ÆeòÿŬ Æeúÿ½º Oô% âð&Ì ÿÁå0 ÿÂå0 úÿgÐ ¦ðXÔ öÿìâ ÌOÁ%ýÿ ØOõ% üÿ!ö úÿ¨ø úÿòÿu üÿôÿõ ôÿu-ôÿòÿO ôÿûú aÀe@ HPÈ% aGlâ vPõ%þÿöÿ àñÿ0 ´Põ%þÿöÿ ÒûY* a÷ ¤ Ù ØH ÿÿôÿW-ôÿ ôÿ!N @lèÿð ÿÿôÿW-ôÿ ôÿìT QÁ% lèÿp àñÿa^ Ù l` Æeøÿâh ÞQ÷ øQ÷ r úÿ²r RÁ%0 ôî¡t øÿýv &R÷ 4 Æeüÿ} DR÷ & LRÁ% nR÷ ì ðÿîÿuaîÿõ ðÿìÿuaìÿõ ðÿêÿuaêÿu êÿèÿ¾¤ àÿÞÿuaÞÿu ÞÿÜÿu ÜÿÚÿð¦ Îÿ\ª Ù ¡® Êÿ<´ a÷ | öRô% $ÿnÐ a÷ Î ¶ÿdÖ a÷ þ lSô%; a÷ \ ¾ÿNa÷ R ºÿNa÷ H ¸ÿNa÷ > ¼ÿYâ ¶ÿÂÿõ ¾ÿÅÿÿè ÈSÁE ºÿÈÿu ¸ÿÉÿ§ì ÂÿNa Ù 3ð èS÷ r aÀe@ Þþ2þ a÷ v ðÿNa ¶ò2 "õ³$ øTÀ%/ ´ÿ5a´ÿ= ´ÿW/´ÿ ´ÿ%> aÀe¢ ñÿÃ\ WtóÿÁEøÿf Ù C^ àÿS` ôÿFf ðÿNa Ù õh Ù ¦n ,Vô% a÷ J dVõ¥ ñÿÀE Vߥ? z馮 Ôý¿² øÿ÷ | àÈ Î àÉ Á% àÉ ñ àÉ Á àÈ ÷ àÈ Î TINTEGER READ=0; !INPUT PARAMS %CONSTINTEGER WRITE=1 %CONSTINTEGER READFN=K'107'; !RX02 FUNCTIONS %CONSTINTEGER WRITEFN=K'105' %CONSTINTEGER EMPTYFN=K'103' %CONSTINTEGER FILLFN=K'101' %CONSTINTEGER TRDONE = K'200' %CONSTBYTEINTEGERARRAY SECMAP(1:26)= %C 1,3,5,7,9,11,13,15,17,19,21,23,25,2,4,6,8,10,12,14,16,18,20,22,24,26 ! GENERAL VARIABLS %RECORD (PF) P,PX %RECORD (P2F) %NAME P2 %OWNINTEGER SYS,FAULT,ID,CONT,SECTOR,TRACK,RETRIES,MAPIND,I,VADDR,PAR,FN !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! INTEGERFNS START HERE !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! %ROUTINE OCTAL(%INTEGER N) %INTEGER I PRINTSYMBOL((N>>I)&7+'0') %FOR I = 15, -3, 0 %END ! REPORT FAULT SEND A MESSAGE TO MOTHER %INTEGERFN REPORT FAULT %RECORD (PF) PX PX_SERVICE=7; PX_REPLY=KID PX_A1=SECTOR; PX_A2=TRACK; PX_A3=RX_DBREG PONOFF(PX) %RESULT = PX_A1 %END ! MAPADDR MAPS BUS ADDRESS %INTEGERFN MAPADDR(%INTEGER VADDR) PAR=MAP ABS(VADDR,256,ID) %RESULT=1 %IF PAR=0 PAR=PAR+(VADDR&K'17700')>>6 %IF PAR>=K'2000' %START; !SET 17TH&18TH BITS CONT=CONT!(PAR&K'6000')<<2 PAR=PAR&K'1777' %FINISH %RESULT=0 %END ! SEEK DOES READ/WRITE %ROUTINE SEEK(%INTEGER FN) RETRIES=0 RD: RX_CONTROL=CONT!FN; !GO+INT ENABLE %WHILE RX_CONTROL&TRDONE=0 %CYCLE; %REPEAT RX_DBREG=SECTOR %WHILE RX_CONTROL&TRDONE=0 %CYCLE; %REPEAT RX_DBREG=TRACK P2_D=(DINT)&X'FF' POFF(P2); !WAIT FOR INT %IF RX_CONTROL<0 %START; !ERROR PRINTSTRING("SEEK ERROR "); OCTAL(RX_CONTROL); SPACE OCTAL(RX_DBREG) RX_CONTROL = CONT!K'17'; ! ISSUE ERROR ENQUIRY %WHILE RX_CONTROL&TRDONE = 0 %CYCLE; %REPEAT RX_DBREG = K'177700' %CYCLE; %REPEAT SPACES(4); OCTAL(RX_CONTROL); SPACE; OCTAL(RX_DBREG) NEWLINE RETRIES=RETRIES+1 %IF RETRIES#RETC %THEN ->RD; !TRY AGAIN FAULT = REPORT FAULT %IF FAULT = 0 %THEN RETRIES=0 %AND -> RD %FINISH %END ! BUFFER DOES FILL/EMPTY %ROUTINE BUFFER(%INTEGER FN) RETRIES=0 WD: RX_CONTROL=CONT!FN; !GO+INT ENABLE %WHILE RX_CONTROL&TRDONE=0 %CYCLE; %REPEAT RX_DBREG=128; !WORD COUNT %WHILE RX_CONTROL&TRDONE=0 %CYCLE; %REPEAT RX_DBREG=PAR<<6+VADDR&K'77'; !BUS ADDRESS Æe´ÿµ øÿÇ& ÆeöÿÄ úÿ5aúÿõ öÿNa Æeüÿc" Æeþÿ að¥ Æeúÿ úÿÓ8 üÿ0< À@Á%0 AmüÿÁå0 úÿëB P2_D=(DINT)&X'FF' POFF(P2); !WAIT FOR INT %IF RX_CONTROL<0 %START; !ERROR PRINTSTRING("TRANSFER FAULT "); OCTAL(RX_CONTROL); SPACE OCTAL(RX_DBREG); NEWLINE RETRIES=RETRIES+1 %IF RETRIES#RETC %THEN ->WD FAULT = REPORT FAULT %IF FAULT = 0 %THEN RETRIES = 0 %AND ->WD %FINISH %END !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !***** CODE STARTS HERE LINKIN(DINT) P2==PX MAPHWR(4); !MAP TO DICS REGS KID=GET ID LINKIN(SYS1); LINKIN(SYS2) %WHILE RX_CONTROL&K'40' = 0 %CYCLE; %REPEAT ! MAIN LOOP-WAIT FOR DISC REQUEST %CYCLE P_SERVICE=0 POFF(P) %IF P_A3&K'020000'#0 %START P_A3 = P_A3&K'017777' CONT=K'420'; !UNIT 3 SYS=2 %FINISHELSESTART CONT=K'400' SYS=1 %FINISH FAULT=0; ID=P_REPLY FN = P_A1 VADDR=P_A2 ! ! HAÁ%N lAõ%T AÂ%S ºAÂ% Æeúÿî~ að¥ üÿu-üÿúÿ üÿ@m Amüÿ KERN¾Î Æeôÿµ ÆeþÿL a÷ Z 8@÷ < <@õ% Æeöÿo" öÿÃ( à÷ÿÓ* üÿ½. öÿNa Ù t0 Æeöÿ9< ÷ÿzD øÿ]F üÿUH ýÿ÷J öÿNa Ù >L Æeöÿ öÿWX à÷ÿgZ øÿY\ úÿF^ öÿNa ÆeôÿÑh ôÿ!t ùÿ¡v úÿÂx tøÿÂÅ ûÿðz ýÿB| öÿNa Æeîÿ< aÁeJ úÿ}¶ îÿɸ ÂA5-D îÿ%º aÃeJ üÿ£¼ ôAÃe øÿÂe ðÿëÌ ðÿNa Ù ÔÐ Æeîÿ öÿÅâ öÿNa Ù ¬ä ÷ÿÀE VBÀ% úÿòÿÓî ýÿöÿ:ø øÿ¯ü öÿNa Ù fþ ùÿÁE úÿòÿ ¶Bõ¥ òÿÁå ÖBð¥ òÿÁå Cõ¥þÿøÿ: Cõ¥ÿÿøÿ îÿ5aîÿý ÿÿîÿu/îÿðÿ îÿý: aÁeJ öÿôÿuaôÿ£D Ù èL a1¢Õ ,BtmüÿN Æeþÿy Æeþÿé¨ a÷ ¤ Æeþÿ¤´ a÷ r *C÷ @ 8C÷ 2 BC÷ øÿzR üÿÂE öÿNa7 ^ýST õ¥ÿÿýÿ Æeöÿ½ TDð¥ øÿ´¦ ùÿ!¨ úÿïª üÿ¯¬ öÿø° ÷ÿt² öÿNa Ù F´ Æeþÿ ÀDõ% ÚDõ%P ZûL ٠ Ò Ù xÔ Ù cÖ Ù OØ Èà9Ü öÿ5aöÿý ÿÿöÿW/öÿ öÿ<ô ºEô% FC÷ $ PC÷ ÐÿìÄ °þôÔ vý:Ö Æeøÿ*Ú ÆeþÿoÞ úÿèà ÀCô%æ ~üõæ øÿ­ê úÿ4ì ò¥ÿÿÐÿ üÿNa÷ b a÷ t Dúw& býd. ÿBà´ àFÁ% aGld ,Gô% aGlx îGô% ÃEÀÿ æøÒÆ äý¯È Àý¹Ð ÞHq, Üý;î ð¥ÿÿÐÿ tDõ% ºD5mö úÿ` ÀDõ% ºþ^( °þ£* öD4-ì E4-ì Øþ:4 &Eô%ÿÿî \Iô% ¬Iô% ðIô%ÿ vJ4-È ¦JÁ%ú ¬J4mÌ ²Jô%ú ÎJô%ÿ ÞJ4-Ê þJ4-Ò Kô%ÿ K4-Ê CHECK IF ACCESS TO RESEVED AREA ! %IF VADDR=0 %START BOT=0; FAULT=9 %ELSESTART %IF P_A3TOP %C %THEN FAULT=4 %AND ->FIN FAULT=MAPADDR(VADDR) ->FIN %IF FAULT#0 ! ! COMPUTE TRACK&SECTOR ! TRACK=P_A3//13 MAPIND=(P_A3-(TRACK*13))*2+1 ! ! DO DOUBLE TRANSFER ! %CYCLE I=1, 1, 2 SECTOR=SECMAP(MAPIND) %IF FN=READ %START; !REA ®û:D Æeúÿ^H hEô%ÿÿê ÿÿüÿW-üÿå üÿíN @læÿ ¦Eô%æ ²E5-î úÿ¯V üÿÂe 8û:\ Æeöÿì` à÷ÿÝl üÿõn öÿNa Ù Ôp $úÂr a÷ l ªú°Ø  úÁÜ üú&è Öú5ð D SEQUENCE SEEK(READFN) BUFFER(EMPTYFN) %IF FAULT = 0 %ELSEIF FN=WRITE %START; !WRITE SEQUENCE BUFFER(FILLFN) SEEK(WRITEFN) %FINISH %EXIT %IF FAULT # 0 MAPIND=MAPIND+1; !NEXT SECTOR VADDR=VADDR+256; !NEXT ADDRESS ! PAR = PAR+4; ! THIS REALLY SHIFTS IT ! ALLWAYS DO NEXT BIT FOR NOW, 2 PROBLEMS, NEW SEG & > 32K ! %IF VADDR&K'17777'<5u Æeþÿy àñÿV Æeþÿ? Æeþÿ Ù A  Æû}¢ Æeþÿµ¦ ÷ÿóª Æeôÿz´ òÿÁE aGl: ¢ù:¾ vGô% bù:Þ a÷ ð ¼G÷ Ô @ù:ì a÷  "ù:ú ÷ÿÁE ÷ÿÁE a÷ p Êý9$ ôÿÁe üÿÒ8 øÿM> öÿ¤@ üÿÀe ÿÀ = ìHõ% @lÌÿÈ¥ üÿ@lÌÿ úÿWF ôÿu-üÿôÿ üÿ«H @lÌÿ öÿ-J TIõ% üÿ1P ¬I÷ ä ºü¹d J÷:f Æeøÿøj ôÿúÿ úÿÁe æÿät àIð¥ üÿu-üÿøÿ @læÿ Bmüÿ óÿÃE Æeüÿç  óÿu¨ Dû8ª Jõê° Æeüÿ¬¸ a÷ x aÁeº ¼ÿYâ ¶ÿÂÿõ ¾ÿÅÿÿè ÈSÁE ºÿÈÿu ¸ÿÉÿ§ì ÂÿNa Ù 3ð èS÷ r aÀe@ Þþ2þ a÷ v ðÿNa ¶ò2 "õ³$ øTÀ%/ ´ÿ5a´ÿ= ´ÿW/´ÿ ´ÿ%> aÀe¢ ñÿÃ\ WtóÿÁEøÿf Ù C^ àÿS` ôÿFf ðÿNa Ù õh Ù ¦n ,Vô% a÷ J dVõ¥ ñÿÀE Vߥ? z馮 Ôý¿² øÿ÷ | àÈ Î àÉ Á% àÉ ñ àÉ Á àÈ ÷ àÈ Î 12 %START PAR=MAP ABS(VADDR,0,10); !NEW SEG-RELEASE OLD ONE FAULT=MAPADDR(VADDR) ! %FINISH %EXITIF FAULT#0 %REPEAT PAR=MAP ABS(VADDR,0,10); !RELEASE USER SEG %FINISH ! !RETURN MESSAGE TO USER ! FIN: P_A1=FAULT P_SERVICE=ID P_REPLY = SYS1 PON(P) %REPEAT %ENDOFPROGRAM òÿR¾ ðÿÌÀ ñÿf ðÿNa øÿ÷ àÈ ÷ àÈ Î NSFER FAULT ³ $PON $POFF $PONOFF $MAPVIRT $MAPABS $LINKIN $MAPHWR $MAPABS $GETID öA×7x ÁEÀÿ@` a÷ B Ôý÷ Èý÷ RBô% àýõ* èÿæÿuaæÿ¤< Ù ²B ªB×7x ðÿSN ðÿNa Ù :P ÂBW=öÿ ÊBõE àöÿØT ñÿÀE C5-< öÿ@àÀ äÿ5aäÿ= äÿW/äÿ ÄCôe ñÿ& ðÿNa Ù ÞÄ øÿ÷ àÈ ÷ àÈ Î Àÿÿÿÿÿÿ SEEK ERROR TRANSFER FAULT õEðÿðÿH¾ W=ðÿ Ù åâ ÀEøÿ4 0Lô% ÂEÀÿ´ týÿÂE ôEøÿÈ ó¥ÿÿ ð¥ÿÿ ÐL4-8 òÿÀEøÿ@-öÿ ÀEàÿ5 t-òÿf aÀe  ÁEàÿt Òø%T Hùôt (ø©v lø%z Æeüÿ üÿN¨ þø^ ~M4-¦ °Mô% ÐMô% ÃEÀÿô ÿ×tüÿÃE WtýÿÁE àCàô ÿWtüÿÁE ÂEøÿ bø§Z v÷%Ì Æeþÿ Ð Ù OØ Èö©ê Ù _ò Ù Kô Èà3ü ÂEøÿ´ Ù É" öÿë& î÷}8 0ýÁF Ø ôd Dø!l ÿÀà2 ÿÁàr LOÀe TOô% WtýÿÁE 0àdJ 0àUf öõÝh JþCl $þBz a÷ x aÁe  ÃEàÿô Ù M¬ pýC° dýC¸ <ö5² ÐöÓÊ "Pô% .Pô% ÃEøÿô tüÿÂEøÿ´ ÁEøÿt tüÿÀEøÿ4 P4-È \öIä RýCÀ @ô÷Æ äûÊÊ .ýBÎ $ýBØ øÿ÷ àÈ Î ÷ Lÿ PROT DEAD PROT:BAD ADDRESS PROT: GROTTED NOISE FULL!« $PON $POFF $PONOFF $MAPVIRT $MAPABS $ALARM $LINKIN DQS11E DUP11E Ù Æ0 üÿL4 Æeþÿ Ù ~H ÆeþÿZN a÷ H ÐþåR Æeþÿ*V ÌP4-Ê ^õª* 0ôK4 ÂQô% ÆeþÿÚn a÷ ® ,B÷ :Bô% NB4-j aÀe  FþÈ¢ ÁEàÿt öþì¬ Æeöÿ%¶ ¬ý_¾ ÿ×À ÄBÀ% øÿÑÊ ÚBÀ% øÿiÔ nýåÚ ðBô% øÿ¤ä $C4-j ÂEøÿÂ% aÂe  úÿÃe ÀEøÿ ÀEàÿ4 ìQô% dôÊF Ôô ôÿ5, D^õe üÿúH J^õ%ì üÿ@m üÿAm ôÿyV Æeüÿ üÿjh Náxn Æeüÿ§t üÿFz Æeþÿz øÿ÷ $ àÈ Î ÀÀÈ<À ÀÀÈÿÿÿÿÿÿ DISASTER PPPPPP HHô%P PHô% hH4-l tHô% ªHô% ²Hß% ¶ùßÊ v÷åÌ ÆeþÿÉÐ Èöiê Èàóü ÂEøÿ´ öÿ«& î÷=8 ÂJߥ? 0à$J ÐK÷ Þ ÔKߥA ìKô¥ 0Lô% a÷ x aÁe  ÃEàÿô øõߢ @ô·Æ 0àÛÔ øÿ÷ àÈ Î ÷ Lÿ Æeþÿ ÆeôÿÝ aGld öÿ5aöÿ= öÿW/öÿ úÿøÿuaøÿ LOÁEÀÿu ¦OÈU ¾OðUP a÷ ö >PÂ%ü a÷   WtóÿÁEøÿÁ Üþj: WtóÿÁEøÿÁ Æeüÿ£f õeýÿüÿf üÿ÷ @ ÁEøÿÁe0 (þin àÈ Î ÀHÂHÀ Áÿÿÿÿÿÿ VSN009EHÀ ¶ÁæÁ ùÿúÿ PROT DEAD PROT:BAD ADDRESS PROT: GROTTED NOISE FULL! ÀºÁÿÿÿÿÿÿ ¶ÁLN ÀHÂÿÿÿÿÿÿ TX ERROR DUP NASTY: DUP FAIL PROT DEAD PROT:BAD ADDRESS PROT: GROTTED NOISE FULL! ÀºÁÿÿÿÿÿÿ ¶ÁLN ÀHÂÿÿÿÿÿÿ TX ERROR DUP NASTY: DUP FAIL