n–n–Â(˜–vLG˜.n–f—¤˜š›�ÀŸÔ ¬¢`¢÷ 殦Ö,––ˆÆn–挖æ!ˆÀæЋ&.ˆ/ˆÖ Á®¦,¼– º¦Ã‚–fˆf ˆ–%„æ÷ ú…& Àn–?*â–Ð Naüæ@&÷ à€„À aüò —üÿd*—¦fˆ2 üÿ¦f ˆÖ & æ ¦& f ˆ·**—‹–%Àn–7Nÿæfˆfˆ÷5À@ÿ æ:ÿÃ.N—ÎEÿÎæ‡0ˆKaéfˆ0ˆw÷ v#÷Ø¢Êæv—æ$¹ˆ÷ È÷À­„—¡Kð$ˆ—æйæ$¹ˆ7 ª·Š÷ ª÷¢¢—¡KÒ¬¢¬¢„Z§vL·IÜ*¬¦Bað vL·IBa›ÿF»®¦º¦¬¢Ç*ЦÀ¶í€ ú6އÈ*ô¦‰�Á Âì¦�`w¸ÿæʦ*§æ®¦ˆƒÃåÒE€úÉU€‰æ®¦ˆ÷5Ài$<§’ÿ æŒÿÎEÿÎæ‡wÚ‰Îe‡¸*Z§7 b7 |7 n7 º7 À7Š‹7Šz7Šw÷•ÿô,~§{7 *ÿÆ^·NÆåÈ·$···æª° *¤§& æ!ˆÀæЋ&.ˆ/ˆÖ ÷‹9*Á®¦L*ȧfˆf ˆ–%æ÷ úþ…溦& f ˆ„ –%*ì§×-Ðþ÷Æþð.TT÷h¯”(8T(UC µWh1E.C _Xh)C ¤_h-l u:hLœ0*h#Ìhd.ðKhvLZ"hßfÔShIIqõh>"€ÃhÝ.)€;h)€h )€ h)€Óh¯”w÷8TZ.^Z ^C ^O ^U \ No loginsµ.& NewOld file name-- Ready ? áL at lineâó.´S÷h¯”¬ hz@¯6F@*—`@3.*\}@Þ£@{ÀD@éj@º%@4@ˆ@ˆð6@ˆkQØrW”µÀP° À%”µü‚ ¼µÀî´ À%”µü‚?äµÀrµ À%”µü‚’ö· ABEILMNOPQRTUZàš¸¥´¸‹θiœ¸£¶¸‰иgž¸¡¸¸‡Ò¸i ¸Ÿº¸…Ô¸c¢¸�¼¸ƒÖ¸ _¤¸›¾¸�ظ_¦¸™À¸Ú¸e¨¸¶·*¸ö· *¦—÷–æйæ$¹ˆ ‰ÈæÄ×-¼ † **Ê—×-ʇÎÂÎå‘ÑѠјÑÑŸ*î— Âx‘‘BÑÃp÷ j'†,üÿó5 *˜ ÑÊeÈeĉ÷å DêÃe ç*6˜"‰÷‹>w 7lüÿ<Ñ8BÑÈÖ&•*Z˜Îe,üÿ "‰÷‹é7lüÿÑÈeÈeî*~˜ "‰÷‹ôÛ7úwø÷ j÷-ÚÖp‰w*¢˜tw÷  æÀ¸¦ˆˆæʸ¦ˆˆ÷ ¢*Ƙ‰ÀÔ¸÷‹&ˆÈ &ˆÀ$¹÷‹ø*ê˜&ˆæй&ˆÈ &ˆ÷‹óæ.¹ˆ÷ ¢ 溦fˆ–%Â즃ÃåØ*¨Daúr‰wŒúæ¶ÎådÎ-Œ‡Ö V‰·Ì*4¨¤· ¦Îe·�ÑP ÷‹\ ñ›*X¨Q$BþÿÀܺ” üwðÖ ¦.ˆÖ ÿÊ�*|¨÷ÆÀæB¹/ˆ·Šid‰7ŠcæÞ¸ˆæB!ˆ·›* ¨¢÷e€œ÷ôæÞ¸ ˆ–%·l·l÷í‚fâ*Ĩ÷^Ü÷ X÷-XR‚V‰÷hÆ÷DH7 D€,è¨æXÎe·HæÀ溎å·<7 8梹æÞ¸ß*©ˆæÞ¸ˆ÷µ@�\‰ÿ b‰÷‹‚÷z*2©nè÷•rôæÞ¸ˆ÷ed�÷•]÷f`*V©r‰wNùÀ´¶‰€‰.ˆÎ " .Ú2v§@Ó>cM@ã><}@ç>¼@Ú@€Q@å.Ú@ U@Ú@\}@9P\}@9P„@_XÚ@@².ÔZu:@@wø@u~Þ@u~9€@)€«@Ó.9€74@(˜S(vY¦Xh¬¯ÀDhâ.²Îh *@hœ* #hÂ*UhÌ*¶^h –.òL"hV\&hU(Îhž:y:hGEHqhÔ..4F`Oh0[MÀDh~ÔZÚ@h�m „h �m„h\.[qOqhH[q©sh|[qÂsh^©s@Îht©sHÚhbÊ.þvÚ@hÂþvOqh8@wàh„ïyHqhJhz\qhˆ.*}Z hÌu~ Ðܸ_ª¸~·`ĸ–·.Þ¸]¬¸–·FƸ¶· à¸[®¸L¶�ȸl¶Uâ¸[°¸è¸ïʸ0¿†ä¸S²¸l¶k̸v¶Gæ¸W&@ˆ÷ P-æT·ˆw ø¸æ^·ˆÆê.Á ±u*`ˆš¸±´¸1ŠÏ¸Á Á ÷Æå·Ä.÷ -æF!ˆ·;„ˆÊ.·ä.æü‰æ!ˆá¸ MACRO V004A 9 D·@ˆ0¿C,”ˆw ®@¸Áp±áS! áSfæ^·ˆæ^·ˆñ‹š,ºˆ0ˆÅ�®(õ‹¼¶  *™æ.¹ˆ7Šœ7а7ŠÀ7ŠÍ7й7 7в *2™7Šƒ7Š•7Šy7Š˜7Š•7Š›7Š˜7Š•7ŠN§*V™7ŠK7ŠH7Љ7І7Šƒ7Š�7ŠÈ7ŠÅ7Šv®*z™7Šs7Šp7Šh7Šˆ7І7ŠX7ŠR7ŠO7ŠX‰*ž™7ŠU7ŠO÷\|÷Xz÷LØ÷HÔ7 Ò>*™7Š.7Š.7Š+7Š(7ŠnæÀ¸ˆ÷fæR¹˜*æ™æÀ¸ˆæʸˆ÷^æ`¹æʸˆæ„§æw* š!ˆÀ|¶‰À”¶‰wüwwÖæB!ˆ·†§*.š÷„rÿ|æ6¹/ˆ÷ V·ŠhÎ%X‰}*Rš– #‡÷\Pæ<¹/ˆ÷‹ä·ŠÃÎ%X‰– ðþ¥ ŽŠþ•*z©?ŽŠþ• ÀHº°&Îe°å‰ð a*ž©ð‰‰æ˜w€þÖ ÷‹÷‹.r‰l*©wäøwd‰‰æFº.ˆr‰wÒø÷‹õ÷ w*æ©ðc? X÷‹ú÷NHæB¹/ˆ÷ àR‰– ¬* ª‡R‰ÿ2÷.(æB¹/ˆ·&÷ ¼÷ ¸‚*.ª– ‡T‰÷‹Ä7о÷ Ê÷ÂÀ ¿‰Ý*RªæðwØý—%ƒX‰7Šq7 n÷%Ðft·ŠaÞ*vª÷\Áæ¸É Àl«^‰À È fÎ �eÑ óa*šª7ŠX7Š57 2<r‰ wü÷÷‹ $÷ŠF ·ŠP*¾ªB÷‹÷ ô÷‹÷‹*7Š$÷ #"h /…xhv|…C^hޝ”"÷¯”ƒ âà ˜Sâ@Ã@ÀÀö ˜S ˜S˜S¹.BBe„² ²"², „l� ¼.&£…ó ³… 2òáÿ² ÝCð.LCeÄ€ë…ó 3óáÿ óáÿ³ .rÄl´� Ôó ӀЅó æÓ$Ë ÃŽ.˜ü ƒãæþÿß þÿCC`Ä&³ „¤.¾ø # # Ÿþÿ…Ý ý‡CœCì×0öå õöC²æ\±.ˆ‚Ò•? Šw jp±wh,àˆtÿÁ\±Âı÷ @!÷h(Ͷ÷ ¦� ‡Ä°¶H,‰÷  Ž`·ŠÈ(Ã5÷¼(� ‡w ð„÷ Ž'L*,‰ æJ·ˆæJ· ˆ–%Î ŽeÁ¨°Â®°÷ ê ÷d'g,P‰f'7 (ßÕ}j°ßdl°& ζ÷ °w ¤†æb,v‰B!ˆ‚eŽ ƒŽæ2²ˆÀ@)7Ø&÷8)Ô&� ä†Ë,œ‰Å Nݶ÷ ¸ŽeÎeÎE·†-†÷ hÁ¸Â+,‰´÷ † Á¦&÷ FÁ)¸÷ v Á¾.Áí\- ÷ 0Á�,è‰8¸÷ ` Šw ^´w Rp±÷ wRþÁòµBÊ Цˆ¦ˆÉ ÷‡mòµ2²Ö²¨³h·J·_,¸ ER*vš‡÷::æH¹/ˆ÷ ·ŠáÎ%X‰– ‡E*ššZ‰÷‹7Š ·Š ÷‹7Šÿ·Š¶? ú÷Ò*¾šöðæB¹/ˆ÷ ˆ – ‡T‰÷‹–wÎ8‰÷ Í*âš¶ÀŠ¹È Á|¹PHwBæ@!ˆæÐŽåè*›Îe·@w<wÀ77 ü+†ð%¯w**›ð5 ð ðEð¯ðE U*N›ðUHð•0 0 Àe ÛððUó*r›0 ô÷‹•·ŠŽwþ7Ї÷-ŠŠw¿*–›R÷•œ÷¢†7 „Àn7xÀe 7 b•*º›?†œœÁ¥ôÁ¥Á¥íµ �öÀ*⪠7Šï 7Šé÷ Xwòþ·Šð0÷‹ôË÷‹¢*«¶w�$‰÷‹Ã÷ ¾Ê7Š·7Š�Áæ¸É r**« À>¯^‰À X‰È fÎ �eÑ ñ÷ w2,N«Žþ·Š˜÷‹fwÂü÷ådâæÞwüýTà«B¬Ì*t«L<¬OD,¯TRÊ®TA®®CC¦®ÿÿ·Šr÷‹jt‰"8*˜«‡ÃÉ¥ É¥ v‰æb·#$ƒV‰Ñ 2*¼«ÎåÎ ‚Sü‰Ö é‰÷à ÷Þ ÷Ü ‰‡Ü*à«÷‹Ú h‰fæ"ˆ·Šì 7Šé ·à – †X‰ÿ*¬Ö fÎ N` ‡÷‹ª h‰fæ"ˆ·Š½ 7Š_*(¬¸ ·² – †X‰wŠwÊÿ·Š² ·Š² wî f‰·+.äfÁ>¦€Q$΋€É É D Ÿþÿ¢.  W0üÖ �Îc·Ó‰ LÎ �÷U€ �9P„&9P„{.0öUí&æ¦f&¦ …– €�‚ƒ„…c.V– €ù&@ È ±È ý€…À�æœ &¸.|÷ �ÒÕ€ ü‡÷ �Š ý‡Â U&*\}”.¢‚ Ê‹û€‡ðU€ðU€±'Ä�ƒ”ç>¼ã><}Ú@\}&¥.È#× ‚ w ì÷ Àÿ ÅeÍ�e£Í�ú Ú@\}ÞRORS DETECTED: FREE CORE: . í:¸WORDS # (,Š ðH&/ˆÎ5w àƒ& &ˆ¸,BŠ& ˆƒÖ ‚ Âe@÷ F€�À ‡÷ ®Ô ^,hŠË  (Ò”ŠÒ�Ê Áj°RRÊ J<,ŽŠ&æˆ &戇÷ pÄe5Ä`Ä`&7ž%ó,´ŠÀ÷ L(´ҕ à 7 *÷ *÷ @õR‘ø"ÚŠû Š÷´ *÷ ,7 †*7 ž*· z%7 õ*öŠ^%÷X%Z%÷ ¤÷ h%„Å]f*Ìw ƒ‡fÎå´,‹BˆfwØþ÷ · $%÷ Œ*÷ È 7 P*÷ %÷ ÷@‹,÷V( &÷R(&Å–Äø*Þ›ÃLð0lá0ݵ 0 Z*œ0 æƒ ƒC ÷`÷‹ð÷`‡*&œ÷àüðø7ö¼÷‹ü÷‹7ŠÿÉ*Jœ÷íÜô÷mòî÷‹à 7ŠÚæàÎíÄ·¾·x*nœÀw0ÿ÷-̲†·ŠÞ÷‹¸÷ ÷‹ÂÌ*’œ÷‹½ ÀÄ.»(‰7îÄ*».‰J‰)*¶œ7nÄ.»4‰L‰7mÐ÷‹…Ä4».‰J‰7 .ÚœLÄ8»4‰L‰7m¸÷,8À¤Áúº‰À2Á »*�‰À<Á!»‰wö w‰÷‹@9d‰÷@»~!*&�æ@»æÞ¸ˆ‰ðµ@ÿÿ%É¥ w¬É¥7 L¬ê ÷‹l æÞ¸ˆ÷ " ÷ Xb¬^q.f¬÷ æ|¹æÞ¸ˆad‰÷@»¾æ@»æÞ¸ˆæÞ¸w0ެˆ÷‹^ 7ŠX æ Îeà—% ¼ ƒæ@»æÞ¸ˆ÷@»†F*¸¬æ ¼æÞ¸ˆ÷ ¼tæÞ¸ˆÀj$l‰7P Ê*ܬ7 L È%,È%×Àe7”; ×­7 7úÿg*­ 7üÿ ÷2 ·Š Ð ÷e 7 æ– æI*$­� Žå· 7  b‰÷  wØw¼÷‹Ô ¢*H­7ŠÎ ·ŠÌ ÷Î ¡÷‹À ž7Šº ›÷‹² G÷‹….l­® æÈ ÷¨  ·¢ ;w ²÷‹M |‰‰æÞ¸|”­ˆ÷ æ ÷Þ /.îà ƒ`    ü€A“’ÅÄÀ„`w ¢Cw`É*\}‚%º%.Å�F@÷‹G�ð5 ðUÄDôCAF Ú@\}G/.: ÷ 0œÄ�N„ „ ÂRÒEÀÄ ü÷Šæ{ÀD @wøNRt.` î�Å@Ð5@ýÀ ˜ƒÁœw 6CÞÄY  *\}Ú@\}‚%º%õ.†Å•À� Á þÿƒ Ð 0<Á •,*\} Ú@€QÚ@ Uþÿ"ã><}$ç>¼Ì.¬õs  q7� 7�÷ Üþ€÷ €Ä̋ ¦,V‹v¶÷ ÿ÷̰`%÷ ÷ ž÷ ž÷ 2÷ z)öw|‹Øþµ¯”¯<,~‹ÁıÂ\±÷ ¤Á2²É fˆfˆ7 Ò$ζ÷ Â$¤‹vþ÷ Æ$�÷-À$ž$ë w :)÷ '‹¶÷Ä‹þ&·'7 ô&÷ø&Ø‹ð&æ̲æ2²ˆ· )Á@²! ! á„fæi ø‹2²ˆ‡y ¶kQ4dã ~·PA0€·þ‹7*þ‹÷ ì7j$‡÷ Àî(7`ê(÷ÿÿè(7 Ø(7 }"ŒÚ(7 Ô(÷ $$7 Ä(´· 8ŒB)÷ ´>)÷ ,)eÁ”(vÁG(NŒ@²æ2²ˆ· ž(À�ß%À5'÷U )@Œ €*J�:‰ñ¥<‰ðµ@ÿÿ·ŠBÈåÂ¥/Ö*n�÷‹êæ�ÅÖݫ¥‰÷‹Ò‰‡÷‹#*’�î‰Ì÷%êÀþ$Ñ ÷ ÚÀ÷%"*¶�Ò÷Êä7 Æ7Šº‰ÅÈåðDÁe�¾*Ú�— N‰Â z„£Ž£ê£f£H¤œ¤7Šo.‰F*þ�„÷",‰á·"¦·,  ÷-üü÷‹r*"žŽ·Šˆé7Š‚>‰÷‹ñ ‰ðµ@ÿÿ¡É¥N*Fž÷wâþš*‰ôµ ‰÷å ¸„÷}*jž°¨,‰F­_÷‹è÷‹Þ·ŠÝ7ˆ *Žž2-4†÷‹Í7!z‡´*x‰(÷‹žBž­^4,¢­÷Ò æ|¹æÞ¸ˆæ@»æÞ¸ˆæÞ¸ˆ÷@»v ‰*È­Àr $l‰7X 7 T Ð%ê7$< ç7$8 äЋ<*ì­7”? ×­; Ý$‰wÌþw 6‰Á. fÎ N` î*®Î$ ‡÷‹Ø 7ŠÒ ÷@» æ@»æÞ¸ˆæÞ¸‚,4®ˆÀ $l‰Ð È%íæ@»æÞ¸ˆ÷@»è æÞ¸ó*Z®ˆÀÞ Àe7”Ç ÷µ@Á Ç÷µ@¹ P‰Ð È%â*~®âÁ< Ð $Ý$ÛЋ7”™ ×­• Ôr‰×*¢®wô·Š f‰ h‰fæ"ˆ·Š · w>ý•*Æ®w<ýW"(‡h‰÷‹è ÷W®A‡fæ"ˆ *ê®·@ æ"ˆ·8 ·Šó ·ŠÖ àf ( c.ÒÁ€”€Bû0< ‚ Á ôSÊ‹é�Ì‹õã><}ç>¼ù.øÿUÀ4KÒ‹ó�· $  Šð N�7�÷ q4 Ú@\} ç>¼&.|þ÷ ü¦Ä2ÔÓ ÔÓ Ô Îl†ã5A¦ð.DÎe†æ æË5@ÎË5ÎÆå,¸éj_XÚ@$¬ hz3.jËEAÀ2Á ˆ`Á ü Ë5Ë5öeh.� ËEÀ2 ÷‹œÁ Áew:wÀ÷\S 2":.¶ðE€÷Ö ÀÂ÷]P,pŒ‚(~(÷ ÿÈ÷Uð( Š/D D` Š™W! ‚,–ŒW! ‡W! õ· X(òR‘E”@�¼¶ À5@ø÷5@<,¼Œö#Åe Åå ïJ‘÷Už(Å€ç÷ ’(÷ ââŒÿ÷�|'Š#÷5Ä#7Šn'÷´B,úŒò'÷ ÷ ø'‚Àæ' ‡Á´! ! á„fæø, �h·ˆæh·ˆ÷�ë&Â'ÙQ$Ñ §÷ Dý€˜ ƒÿB,F�+ƒfÁŠ'Ñ ƒ ×-z'ƒÿÀz'Â÷ ýÀ i,l�ùâ‹�âwf'÷Uü'²Á5AðÿÑ —  ´ƒþ,’�÷U Ú'â‹R”‡÷ ðwfþ÷ h7 ”)Å õ‹¼¶�µ$¸�÷U´'& ÷�°"ž&÷ †"H÷ ¢'%÷5ö,²ž·Š™Â4» ÷‹‘7Š‹·Šp÷‹jÂ*»‰*ØžÃLÒÒÔ æ�d7Š`Ö‹â5·Š *üž>wÊþòµT*‰ôµ‰÷å þv* Ÿ÷‹C÷-ì`‰åz‰ã7ZÀè7"pÏ*DŸ!7,j÷-ÆÆ7#Z7-T×-J±,hŸ·ŠBÌ­.‰v‰Ì­ÀÍfÁý½)*ŽŸ‰Áö½Àމ�ÀÀÂ& &Àäø*²Ÿ¥*‰¢„0‰ŸwÊ÷zÀ~Âj*ÖŸÂeÁìE÷‹Ún!"Î Ãe ÷‹È+*úŸÂewÈÂea÷‹²ÀeÀe Éæ"ˆ·9*¯" – †X‰·ŠÔ ·Š¸ Ñ÷‹š зŠÃ Í·ŠÉ ÷‹‚*2¯Š Èf‰·Š® ÄE€¯UL¯¬ÿÿf‰&fÀ` ‹*V¯À-\ ÷ �€w¤ü·Šc ‰Àf¾‰@r‰*z¯w0óf‰Ö ÷‹6 r‰wór‰ wór‰q*ž¯w ó÷‹ ‰÷‹ Àຉ÷‹E `÷Þ¯Ò |¯æ.¹ˆ÷ Ð ÷È IЯây$ԯ昹æ.¹ˆ7 ² ·Š ÷ ² ÷ª ²î¯âyÿ*ò¯÷ž 昹æ.¹ˆ ‰Âª · ª .†Ñ ˆ ˆ /*°‘‘‘‘‘Èe &Îe —%z‚¦Îe ·%| *:°‚ì"‰÷‹| wP¦Îe ·%b ܃&Nà ü$¦œÎ9P„ ç>¼Ô.ÜÂe bΊý¢%"b¢JàÆ & æÆå 7Šp (o.MDœtU…& N•N`�§‡Í­>… …&@ß Û ã><}>ž.(þÿw 2ý&@…æ<†I�ß`þÿ‡÷‹ '€��<$ b.Nÿÿœ@BÐ BÈ‹û€ÀÁfþÈ Ð Ú@\}·.tÁ È‹ù€@÷ ¢÷ÁŠ$� ü’w C( ‚)º%L.š‡Â áB €à™w E‡·Š (DÄ `Ì‹€³‚º% * $Ö�¢'A÷ Ì">5÷5À"÷'Ž'÷5¶"ô�²"÷´€'÷‹×*÷5ž"÷EB$Žh'÷=’"b'!Îݺ#Ž ÷5~"Á,.Žx¸Âì³÷ Ò• ÷ РЀÁì³÷ œ÷´*'÷©$TŽ ´&'ÎÝ~#÷ üÎ M?Š'Âì³Ò Â%L,rŽ´û÷5,"[Á„µÉ Âî³÷ z ÁˆµÉ ),˜ŽÂõ³÷ dÉ5`Ê•'É5@Ê•G Âì³Àø´Ú,¾ŽH H÷5Ü!÷ D·&&Ò• · &ûƒÂì³u,äŽ÷ âÂü³ÁŒ&÷ Z€Áì³÷ ê?Šz&À<(÷ A, �P÷5$”!¥óÖ À ÷ œ÷-@!@!ƒ÷8!8!ˆ,0�w°&Âì³÷ !* (Á¦EàÁeEÜE!"Ãe ÷‹*B |ÂeÂe=÷‹jÀeÀe ÃZ*f àÁ^E¼ÁeE (¶÷‹@7”¼÷µ˜*Š ¶7”±÷¥«÷¥£ à ÊɵÆ^*® à‹Ä1a(È÷ŒÄ wÿ÷|ó*Ò ‡wwœ‰·"ÂôæÔ¸ˆ·Š(÷ ¦} ö ÷ž�ø xQ–*ü ÷’æn¹æÔ¸ˆæØ¡æ!ˆÀ‚¾‰Ààº* ¡‰Âe · ¶ †ƒœÁ¾× N‰Ã {¦£È*D¡ÀšÀ-”.&À¾‰‰Àf¾‰€7Š•ð5É*h¡Àe 7 "Ñ ˆ ˆ P*^°"‰÷‹\ w0æ.¹¦ˆˆ7Š… 7Šƒ À¤¶‰f*‚°÷‹r n‰·Š0 7ŠZ r‰wò÷�" � À0º·Š?*¦°R P‰¶Îå¦Îeº'‡–´D´$´´´ì´µ€¸1ʰ®¸R¶2¶Þ³�¸’²³8³D³z³6ްֳ̳°µZµØµ$µ¾µµžµ¼¶vò°Ú¶æ¶,·6·T·^·x·„·�·œ·#±¨·´·À·â·î·ú·¸¸¸æ³±üµ<´P±j²p²r¶z²2¸>¸§_*.±H¸T¸`¸j¸t¸÷‹›‰æÞ¸ˆðµ@ÿÿø…‰£*R±÷„¾÷í\¸÷V´·á°ÄLÁ¤@`� é*v±Âž‚ Á F`w`,w`*w`(w`(w`"w`(å*š±w`‰‡  ýé#.À„7ÄR ddÌ Ì ƒ‚ ÷ B¤$ ƒ t Ð.æà ÌmÞüûÌ Ì Ìmšä ¤$ ÷ Ä€W%E‰š{ÀD‚'º%Ð. „`Á ý…ß ÷Š· 8&ÀÈ•àŠå¯6F8$Ú2v§¿.2È• ÷UàŠÈ•<à È   €÷ :€÷U 9P„$:].Xw æû¦ÎEÿ—%@‚w ÄûÀÈ w !9P„"9P„‘.~Èûß`þÿÁÂH0Ò A û†îH@ZÀ¸9P\}(*\}/.¤Åà È $ŽÀø´H H÷5Z! „÷ À<,V�À󳠘ʕ „ û‚Âó³Ò• Á„µ÷52!É =,|�÷ ˆÒ• Áˆµ÷5!­ÄÉ ÷ fÉ5`ò,¢�Ò•'É5@ò•GÿÿÒ• Ä —÷ €'ø÷ ”Æ,È�æÀ¤%ÀE· ˜ Áõ·Ñ‹7 Ž%†R’@’÷ .ã&î�÷ ÷ 7X 7 V ÷:'÷  ê釴 –·r˜’ù,�Àö$À]ø$=÷ ¤W!:VW!=R÷ ,÷ Ü ­,4�wî÷ ÷ Î w` ÷ üW!$÷ ¶ ,Z�W!: À Àíò$À5ÿ÷Uþ$÷ ì5÷ Šõ‹¡,€�¼¶Á(¿ÂR°÷ ¤Ø÷ �À5Ò÷UÖ$ N%l÷‡Á¾‰Ñ• Ñ• ÷¸*Œ¡&À¾÷‹c‰‰€Àe 7 8݇æ„§æŸ*°¡!ˆ‰÷‹?7ŠXæÔ¸ˆæÔ¸ˆ‡¶£ô£¤Í*Ô¡¤¤Æ(æÀ¾‰ÑMOÑDUÑLEÑ• €‰œ*ø¡÷FÑ• Ñ• À¾‰×,¦£¶£ˆÀ”¾‰„*¢Ñ•<€‰Ñ•>Ñ• €‰Ñ• €‰÷V*@¢Ý@‰Ñ• €‰Ñ• €‰÷æÏw¦*d¢ÀÁÈÉr"‰÷‹úwÎ ÷ Z7Š˜*ˆ¢æ$¹¦ˆˆæÀ¸¦ˆˆæʸ¦ˆˆwŒ *¬¢w÷‹Bg‰7 (ðµ@ÿÿwRÉ¥:‰Á*Тñ¥<‰ÂäÑ ‘$!&÷%Ð7 À7 ÆI*¾±÷¾÷‹+êæÞ¸ˆ÷‹# ÷¬±š÷ šQâ±÷t^’÷ ’÷Š™ò±^Ü*ö±÷~æ|¹æÞ¸ˆ7 n7ŠëæB!ˆ·,÷e—*²d&·ô÷íî÷åè†V‰„ÁÜ@àFàÕ*>²wàpwànwàlwàjwàpwàZ� ¼‚ G*b²Â ý‰‡W"W"X‰‡&œÿÿÖEüÿP‰Ã*†²ðµ@ÿÿP‰‡÷@»¦æÞ¸ˆ÷‹W ÷æ²Îª²÷ Î÷t^Æ÷ Æ÷¾]¾²^*²÷²æ|¹æÞ¸ˆ7 ¢7Šæ@»æÞ¸ˆ Q*æ²÷%–7 †7 Œè÷„'ø Å øÅà È ðU ¤Þ£u~ÞÚ@€Q.ÊÅ ÷Åþÿ à È CœÄñµÓ"Ó>cM ÔZu:u~9€þÿ$Ú@\}L.ð1Š‚ ôUôóU0÷ j ã><}$)€«(9€74 .ŠݬþÂå  Âm‡ßàþÿÀ�Äz*\}*—`&(.<21 1Š÷ Nû   ý0 0 w ŽýP2 ç>¼$Ú@\}�bÄ2ß`þÿÒ1  2ªó.(÷h¯”(,¦�‡÷ W!= W!:÷ Rô÷ ŒÀŽ€ K,Ì�‡;÷-~,%-÷ ¾÷ f÷ ( ÷5l ÀtÀEª$ò�ßÀU 7PZ÷fV÷5L÷-Vý,‘F÷­M=÷UP$÷U.÷ B÷ ° ÷U‰,6‘:$÷ Ô÷®#>$wÈþ÷ ÆÁV°ff÷ Š‘‘÷ £,\‘” ÁV°÷5 $÷-ä’$ ÉUff÷ È¡áE,‚‘¿ÿ‰U÷ ä Ñ‹w¤ÓwÎ÷U@Ò#÷ h ‡Äâ,¨‘V° Âf°Á5€Ê5Š ÷U¬#Á5· g,Α¦#Á �  H÷þª#÷ nw�™#ÁÁE€ÿw€#â,ô‘Á Á & f¶Ö A ¶fÎÁEÿ÷ ž ñ )‰"7Š &‰ÈåB *ô¢ðµ@ÿÿÂ%CÂ%nÂ%· ÒÂ%êK*£÷•²¦)w_æÞ¸ ˆÖ €·ŠÃ÷‹‰‰{,<£ðµ@ÿÿ7НÉ¥ôwÐwÀÀdÁ¿§*b£‰Àø¾‰÷Ð& æÊæÞ¸¦ˆˆ–‰i*†£˜ÂRº¦ ÒåÈåÒ(¦Ñ È R”ü7Šº*ª£$&‰BÈåðµ@ÿÿÂ%<Â%2Â%q*Σ· Â%è÷•ò/wr ÂÚÂeÂe · ê*ò£Â†—¢øÂå·¾÷‹îæ�ÉÖݯ ÷ ç*¤Ì÷‹Øà‰wê‰w�þ÷•ž·oŒ*:¤÷ ^÷¥Œƒ‚Ä|ÅzÕ*ä¦Â8€$Ý* ³Ñ Âeà— ¼ƒÂ@»·¦æÞ¸ˆœÿÿÂE×*.³ØÿP‰‚‡æÞ¸¦ˆˆ‡7Š# Àâ¼7� $¶,R³ Ñ ÷‹£÷Ò®÷.¹ª÷º ÷$¹œM*x³‡Àb 7Š> â¼ ÷ †æh½æ~ˆ÷�I 6*œ³" ÷ næâ¼æfˆ÷�· ÷ŘÿÀe†Ó*À³7  h½Ãƒ¾‰É¥ü‡r‰wÎîr‰wO*䳯î‰fÎ �e P"Ð È û€‰‡üf&æ/*´¦f&~ ¶ €�‚ƒ„…‡æ˜À NŒ*,´ý†‘“ΕÎ ø†Ö ‡r‰whî‰ÅþÿÄýÿ *P´C”Ã¥ Ã¥$ × A‡Ãå ÃåÃå +Þ@Þ2g@{ÀD@Ì.ü`@\!`@ù&„@ :t@ª:ï@&.¯:¼@ã><}@ç>¼@Ú@€Q@Ú@\}@0.[MÀD@9P„@�m„@[qOq@©s@Î@m.üv@üv2g@üvBx@üv¤y@þvÚ@@�.þvOq@|…C^@„…µ@„…õ@„…@ .(((¬ ÎÙxh$bh¶z¸hf.í&|—høí&Òšh ô&\qh`ô&Tuh<ô&šwh~ê.ø&hŠø&T[h€ø&\qh>ø&»zhœø&ÐÀhê.b,hÖœ,µhvœ,�hœ,Þhp/hè,š’ø,’wŒe#À Ίý Áz&1PÖ �êÁl&@ÁE,@’Á%P%ÁEÀÁ% Á5ÁEÿ�Á%pg,f’ÁEðÁ%ðÁEÏÿÁ%Á% A A Áૌ’Á5÷U@Ú"‡¼, ¶¼¼¼¼H¼’¼—2¶¦¼ˆˆ¼œ¼ˆÓ,š’‡÷ NÀ5øÿ÷UÆ"ÀEøÿ‡÷ *÷­�© Àíò,À’¤€ ‡À À‹€ÀeÀ5ÿ÷U–"Àÿ‡ærù,æ’÷ ˜· ˆ"÷ ’×­a€Ö ÀX‡À ÷ ´÷ Ê, “F÷€Bη>÷ 6 ‡÷ vÿÃüÿ÷ ‚ÿ�Û,2“ ÷ ´Ãøÿ-þÿÌeÕ”•*^¤Œ Ê ü&f"‰÷‹Rw& 7TwR�€–%õ*‚¤Â�J— N‰Â z”¤ì¢ˆ£ä£ì¢È ·oÐ*¦¤‡B”C”÷"÷åƒmÃeüÿ¦ÂE€ÿÅ— $ʤN‰Â z֤Τô¤¥¥¥.¥>¥T¥h¥Û*褈¥¥Î¤¥.¥>¥DDm ‰ÈåÍDQ$(‰D‰ ‰‘* ¥ÈåÅ ‰ Ddð ‰7´DQ$(‰D‰Äí¨îDÒ*0¥(‰D‰Q$DdÈåæ ‰7�DQ$(‰D‰DdÈåêÅ*T¥DQ$4‰H‰7hÈåDDd7RÖ Èå¨*x¥–É¥ŽÉ¥‹F‰Ä>¦ ‰ÄJ ‰ÈåwËœ¥þþº*¬¦Bað vL·IBa›ÿF»®¦.Ãå ¬*t´Â   ¦  ‚eÂ`„ ä�… Þv‰‡‰0*˜´ÄþÿÅýÿÂæ´ ‡€âƒ ûË× »*¼´Ãe ÃeÃe Ãe Ñ�Ò … è€Ð „ ßv[*à´‰‡@(ö �‘Ä‘ö €ÄB‰ *µŽ‡Ä¸Äm‡æÄÎå Ö-š‡6‰‡‰Àt*(µˆ7 ˆ‡‰Îe‡ð¥Àe ò#û0-j*Lµ÷6‰‡‰]ÀJÀT7 °*pµF‡‰‡#0- ð¥6‰Îeh*”µ‡Àe è*‰‡ô¥ûÎe‡*‰‡ö*¸µÎe‡&Àô÷e æ2‰€‡‰F/L.y:hÄ:dœwhZ:d¦whT"qh`3qh\&.IqhèIqhä\qµhp\q�hÆ\qÞh’.\qæhž²rh¬mwh”uwhÚ=†÷qh.%’üvhÞ™’È}h™’Ë}h²–hèü–h˯”‘÷¯”¼Ï¼ Š l " ( (Š (l õ \` (\¶� ¶æJ (æ(“.? 6ÃmÁœ Áo2ÅA÷ B’ÅÅez}6 0÷ ªÃÀÿÀ0÷U "À@‡7 ´,X“˜· 4"& W!@ Î5÷U"ÎU÷ –òW!k,~“#÷ Š÷% è!÷ b÷ @ÎU^W!- ³,¤“÷F!F!÷ bW!(÷ °ÎU SW!(÷  W!q,Ê“+÷ >ÎUFÎ5ÎU@ 5÷ ÷ m,ð“æW!(Ë53Î ÷5¬Ë5@·¢Q\,”÷5–ÎUÎU7÷ |Ë5÷U6!@,<”ËEffff÷ ¡¡¡¡PÎU0÷ &÷ òM(b” €U‡÷ ¤÷ ,þW!)÷Uö ‡÷ Ž‡Ý š·I˜’),„”7 jÁE¸÷ b ˵@1Q¤Ëµ 0Ñ‹·¢¿,1º¦¬¢Ç*ЦÀ¶í€ ú6އÈ*ô¦‰�Á Âì¦�`w¸ÿæʦ*§æ®¦ˆƒÃåÒE€úÉU€‰æ®¦ˆ÷5Ài$<§’ÿ æŒÿÎEÿÎæ‡wÚ‰Îe‡¸*Z§7 b7 |7 n7 º7 À7Š‹7Šz7Šw÷•ÿô,~§{7 *ÿÆ^·NÆåÈ·$···æª° *¤§& æ!ˆÀæЋ&.ˆ/ˆÖ ÷‹9*Á®¦L*ȧfˆf ˆ–%æ÷ úþ…溦& f ˆ„ –%*ì§×-Ðþ÷Æþðæº¦fˆ–%Â즃ÃåØ*¨Daúr‰wŒúæ¶ÎådÎ-Œ‡Ö V‰·Ì2*ܵÄÖ‰÷e Î÷e Ê””””2‰‰‡‰n*¶Ä¬Äe 7!ª †­ #‚ô‡2-ðƒë*$¶7!š‚÷e ’׉À€Áe  ‚‰‡!…*H¶!!!!ö‰Á @`� 7 V‡‰‡B„*l¶Â ýö& æÈ‡ LINK-11 V00v*�¶7A PASS 1 PASS 2 k*´¶# ÄåÀþÁ¾¾‰Áž‰À¶¾‰ý*ضV‰÷£`j‰wžð÷‹Tj‰À|¹Á!¿‰÷*ü¶‚07 .À0ºÁ(¿‰7 ÷ÎÀ0ºÁ¿%* ·‰À¿‰wXð÷Œj‰Ý€Áð¾‰À辉L32..&ÀEùÿ1°+Ö Å67·pÆnÀ�yg€h :t6p"n&yL.Lw „…7Š�÷�h�&Ä‚Lä d¤$)$ w[qOq�h�Š.r÷ w ·nJ4�1‡w �ñq"{ÀD þvOqnþvÚ@(ç>¼«.˜1 €Ænw ‡w7pÆÄ�[,ã><} n�m„ù&„©s@Îp&ù&„G.¾wxEÀfH`5  Š×­eƒõ5"Äx Ú@\} eË.䈊7 h� €ý Â÷ Å�xõU4,ª”7 DÁK¸Ëµ@!Q¤·¢§ыʋÑ‹€’ÀEÿ&¡,ДÀ À €eÀ ÀmÆ#7r7p À�ï#€ À Àmt à7 ¦ö”^Ì Ñ‹± ž·ke˜’¦,•÷5®É‹ ·¢UW K¸†W K¸†÷UL 2,&•J’÷ J Ô‹“€ —¢—¢ ÷U( Š|L• ŠÊÕ€‡ÔE¸ À,T•À ÷ ‡÷ 4÷ Þ÷5è÷U@à÷ ô[,z•÷ Žï÷Uìë‡÷ ô Œ ÷ N· X÷ æþ÷ Z •PÁR°Âv°w†x  µ· Øú ,®•÷ p÷H š÷D –÷ ^÷ øÀ÷ V ÷�x5*4¨¤· ¦Îe·�ÑP ÷‹\ ñ›*X¨Q$BþÿÀܺ” üwðÖ ¦.ˆÖ ÿÊ�*|¨÷ÆÀæB¹/ˆ·Šid‰7ŠcæÞ¸ˆæB!ˆ·›* ¨¢÷e€œ÷ôæÞ¸ ˆ–%·l·l÷í‚fâ*Ĩ÷^Ü÷ X÷-XR‚V‰÷hÆ÷DH7 D€,è¨æXÎe·HæÀ溎å·<7 8梹æÞ¸ß*©ˆæÞ¸ˆ÷µ@�\‰ÿ b‰÷‹‚÷z*2©nè÷•rôæÞ¸ˆ÷ed�÷•]÷f`*V©r‰wNùÀ´¶‰€‰.ˆÎ "þ¥ ŽŠþ•*z©?ŽŠþ• ÀHº°&Îe°å‰ð a6*D·÷Àö& æð‡÷ˆæj‰É‰ ‰Äå÷L*h·ÁÔ&æÎ‰‡÷‰Âj‰wlÿ÷жj‰€*Œ·w`ÿ÷�ªj‰wTÿ÷Žžj‰wÜï÷�’j‰*°·wÐï÷�†j‰wÄï&þÿÎEÿÎæ‚÷‹&¥*Ô·wÿ7Šw¢ï÷–Xj‰w–ï÷†Lj‰w–*ø·Šï÷“@j‰w~ï÷ƒ4j‰wrï÷„(j‰w5*¸fïæ†ÎEÿÎæ‡wRï÷•j‰wFï÷¦*@¸Òüj‰‡÷¨òj‰w0ï÷«æj‰w$ï÷Ó^.d¸Új‰‡÷ÔÐj‰‡÷­Æj‰wï&æʸˆæʸ˜.Œ¸ˆ‡&æÔ¸ˆæÔ¸ˆðµ@ô$·ŠNP‰&æÀ¸7÷Ui hx$ã><}Ç. ÷ÐÆpÉÄf�À4À�x÷ Á$9P„ù&„ ù&„pf&x�.0âB�· ^·�^Âm–w ÿE BÝà;|…C^^^–Œ.Vò Îw €  @ˆ×‡Àww¬x ñ‹� þvOq\!`Àw"x·.|ˆñ1 ñ�x‡ñE@ 1ŠÂfü x(f¢.¢@Àí€Àe 2`‡w  ÷ NÅðÕlŒ þvOq(lß.È W!ÿü‡7 tIw ÂZ÷ h H,Ô•¨÷U v÷ Š÷ ÷ $ÁR°Â`°÷ :w¯"ú•ž÷þP÷úL÷ ¼ÿ÷5¢7 {–:7 8÷ ¨ÿ‡, ¢·£ü•b,"–÷ ìÁ`°ÂR°÷ À÷ ì÷ ø÷ ,‡÷ 6 V,H– ä ÷ ÿ ÷ üþ‡÷ b÷U ‡7÷D,n–ä÷ ’ÂÞ±ŠJ‘Ò‹÷ œ— þ±ø‡Áÿ±¡˜þq,”–É• w� ‡Âµ÷ ¨ R‘(÷ p— Sµù‡â‹Í,º–÷÷5 æÁQ¸÷ ‚÷ 8÷ BýÂÀ÷ é,à–â•-À÷ â• �À�â÷ ê ‡Äâ•$"—  à ÷ ˆ Áe0J�Ä ò‡ Q¸TABLE*ž©ð‰‰æ˜w€þÖ ÷‹÷‹.r‰l*©wäøwd‰‰æFº.ˆr‰wÒø÷‹õ÷ w*æ©ðc? X÷‹ú÷NHæB¹/ˆ÷ àR‰– ¬* ª‡R‰ÿ2÷.(æB¹/ˆ·&÷ ¼÷ ¸‚*.ª– ‡T‰÷‹Ä7о÷ Ê÷ÂÀ ¿‰Ý*RªæðwØý—%ƒX‰7Šq7 n÷%Ðft·ŠaÞ*vª÷\Áæ¸É Àl«^‰À È fÎ �eÑ óa*šª7ŠX7Š57 2<r‰ wü÷÷‹ $÷ŠF ·ŠP*¾ªB÷‹÷ ô÷‹÷‹*7Š$÷ öÀ*⪠7Šï 7Šé÷ Xwòþ·Šð0÷‹ôË÷‹¢F*´¸ˆæÀ¸ˆ‡EEEExQ#ظ€M^ÐfÀ*"¹\M€fây€f$¹Š¹Ô¸n¹Þ¸¿*F¹|¹.¹˜¹i*j¹²'޹@G*°¹l*Ô¹0?¬¢0¿œø¹=*º,«0zÓ«… âyð�*(ºóG÷  õ �tþvOqZ‘.îõ wrw ÷ 0à Ã÷rw ßÓqr[qOq"r&è.\ÅrÅe% W1ü‡ÅeW!ðÜà ·ŠtXr(tÁ.:÷­tð‚ σ ÷•ÿÿu·Šu7ŠtÂ�u— @¬tðuut"ué.` ‚ò¾Áð÷ 7†÷ h „Â�u 2ò ³ð uG.†7 u ‚ò÷ PÅ�uÅ 5òßÓ\‚ � w YuuÏ.¬ðò€ èw ð•· Z� ßÓ\÷ FÁ ô7Z""""""" """"""DDDDDDD@ˆˆˆˆˆˆˆ€ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ@DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD"""""""""""""""""""""""""""""""""""""ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆÌÌÌÌÌADDB CvLG¡KÚu›vLÀD¡KÚJ›#^Úc—›kQØr¡KÚ&¨›¨zkQÚN]¾› €kQÚyK¡›¸kQÚ¬›P}kQÚ)¸›»z–,¡KÚ›4æý›$DÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßÝÝ͈ˆˆˆˆˆˆˆˆˆˆÌÌÌÌÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ,¿Îe‡Ö Îå�ê8Ž&¿ÁŠÁ ý‡ÁÀe™ ,¿ ÷X´íI*«¶w�$‰÷‹Ã÷ ¾Ê7Š·7Š�Áæ¸É r**« À>¯^‰À X‰È fÎ �eÑ ñ÷ w2,N«Žþ·Š˜÷‹fwÂü÷ådâæÞwüýTà«B¬Ì*t«L<¬OD,¯TRÊ®TA®®CC¦®ÿÿ·Šr÷‹jt‰"8*˜«‡ÃÉ¥ É¥ v‰æb·#$ƒV‰Ñ 2*¼«ÎåÎ ‚Sü‰Ö é‰÷à ÷Þ ÷Ü ‰‡Ü*à«÷‹Ú h‰fæ"ˆ·Šì 7Šé ·à – †X‰ÿ*¬Ö fÎ N` ‡÷‹ª h‰fæ"ˆ·Š½ 7Š_*(¬¸ ·² – †X‰wŠwÊÿ·Š² ·Š² wî f‰·+ L¬ê ÷‹l æÞ¸ˆ÷ " ÷ Xb¬^qJLºqQà[ì*Öº/E CC TRANSFER ADDRESS: 0» LOW LIMIT: /» HIGH LIMIT: í'» þ>»ÚT» LINK11.OVR ô ¼Ú<ༀÔ h½€Mî½ ü½,¾ ¾ ********** H*f¾UNDEFINED REFERENCES «*оLOAD MAP SECTION ENTRY ADDRES´®¾S SIZE  –ľ,JKððZ&Zß.ÒÅ Å%ðüï±w ‡w ÷ @÷÷ ð¹[qOqþvOqï.ø Åò w ÷ (÷ P@ ßÓ\B÷ è þvOq©.P W1øï÷ °Ù÷ ,fC @ ÷ w.DA ƒ÷ �ßÓ\‡ßÓ\¦æÅÅEþV.jCAÅeÃÂÂEñÿ‚òˆƒ ƒ ƒ ƒ Â`÷ Zƒ®.�‚‡Â÷ L÷ðl Ã÷ ´ÿ5";ÂCðl3.¶ø6÷‹i1·ŠhÂ�h Âe— %‚—2Àó÷ l ihh„…LE OF CONTENTS3,"—÷ ú7  ˆ°À ÷ ÀÒ— Œ°÷‡ÒÀ …,H—÷ r‡÷U÷U÷ €÷  ÷ ˆ‡C¼,n—÷Uü‡÷ ¦Å ÷ "ö÷ €ôù‡C!ôw|à,”—ƒ ÷ è Œ ÷ P `ƒ ý‡‡Š ÊE‡ÊU‡Â},º—J÷ D÷ (   ÷Uš€7(÷ Á à—‡á ȵ÷8ÿ+,ä—‡ƒ ƒ ¦÷ Â÷ Œ ÷ Šü÷ VýÊ`õŠ÷‹Ñ w, ˜7 H7 F÷ nü÷ :ý‡ƒ ƒ à ÷ ŒBGW!<!á,0˜÷ î@@B! à €÷ ØÀ¤’ÀE€ÿ÷ 0íù,V˜÷ ¶õ‹¼¶ã à (€Á )÷ ôM.f¬÷ æ|¹æÞ¸ˆad‰÷@»¾æ@»æÞ¸ˆæÞ¸w0ެˆ÷‹^ 7ŠX æ Îeà—% ¼ ƒæ@»æÞ¸ˆ÷@»†F*¸¬æ ¼æÞ¸ˆ÷ ¼tæÞ¸ˆÀj$l‰7P Ê*ܬ7 L È%,È%×Àe7”; ×­7 7úÿg*­ 7üÿ ÷2 ·Š Ð ÷e 7 æ– æI*$­� Žå· 7  b‰÷  wØw¼÷‹Ô ¢*H­7ŠÎ ·ŠÌ ÷Î ¡÷‹À ž7Šº ›÷‹² G÷‹….l­® æÈ ÷¨  ·¢ ;w ²÷‹M |‰‰æÞ¸|”­ˆ÷ æ ÷Þ /ž­^4,¢­÷Ò æ|¹æÞ¸ˆæ@»æÞ¸ˆæÞ¸ˆ÷@»v ˾ W(ξ ?LOAD MODULE EOM „ö¾ ÷ ¿ × ¿:ß'¿.ä.¿ óZ§øO„…õå.ÜLí‡  ÷ xÿ5,5, 5,õ‹À.�7Ši‡ÂCé÷‹iÔÅ7Šh  ±É ii"hL.(‡ w ’&!"/7"d€÷ Lÿ·j+‡� þvOqd&j�.NÅeB"wjæC÷ þþwlƒ÷ òþö Ìjl×.t±Îdˆ÷‹hÞÀfÙ÷ TÔ dhfb.š÷ J÷ðl– w ‡¦B ÷ 2ÅEÜ Å “ ð l[qOqÀ.À‚‡�ÅofA 7 hwœh& Nœ P&÷ – ÷ v V,|˜Œ÷ ëà € (‡÷UÞ&÷ j€e � F,¢˜W  ÷ Öû÷ ¢ü ‡÷U´¢ƒ ƒ à ÷ 9*ȘèœæF¶Þ ÷U˜ÂÁ˜°L÷ nü ûíƒ H¶ð˜ì˜ë ¦·(˜’2$옷 ˆ· „÷ æòذĠ°! W Y, ™�°ü‚÷A‚Å%+Å%-÷€j÷ øõµ¼¶,0™Ë5ø· X ÷ j÷ ’Åå0bab b b ÷m^,V™:: äÅ%.w *Þ�Å%E÷ œæŽ÷ W,|™ˆ÷ Œ ÷Uè·x÷ ` 7`þÁ@@T@T@Thm,¢™÷ î1×"3‚÷ ø· Þ÷ Ò÷eÒ÷ ÌÍQ‰*È­Àr $l‰7X 7 T Ð%ê7$< ç7$8 äЋ<*ì­7”? ×­; Ý$‰wÌþw 6‰Á. fÎ N` î*®Î$ ‡÷‹Ø 7ŠÒ ÷@» æ@»æÞ¸ˆæÞ¸‚,4®ˆÀ $l‰Ð È%íæ@»æÞ¸ˆ÷@»è æÞ¸ó*Z®ˆÀÞ Àe7”Ç ÷µ@Á Ç÷µ@¹ P‰Ð È%â*~®âÁ< Ð $Ý$ÛЋ7”™ ×­• Ôr‰×*¢®wô·Š f‰ h‰fæ"ˆ·Š · w>ý•*Æ®w<ýW"(‡h‰÷‹è ÷W®A‡fæ"ˆ *ê®·@ æ"ˆ·8 ·Šó ·ŠÖ àfæ"ˆ·9*¯" – †X‰·ŠÔ ·Š¸ Ñ÷‹š зŠÃ Í·ŠÉ ÷‹‚R .NLIST .LIST ME .TITLE SY.P11 SYSTEM LOW CORE AND DEFINITIONS ;COPYRIGHT 1971,1972 BY DIGITAL EQUIPMENT CORP., MAYNARD, MASS. ;VERSION: 04A  EDIT: 46 ;DATE:  01-SEP-72 BY: MHB/TVG/JDM ;GENERAL REGISTER DEFINITIONS R0 = %0 R1 = %1 R2 = %2 R3 = %3 R4 = %4 R5 = %5 SP = %6 PC = %7 SWR = 177570 ;SWITCH REGISTER PS = 177776 ;PROCESSOR STATUS REGISTER ; PROCESSOR STATUS BIT ASSIGNMENTS C = 1  ;CARRY FLAG V = 2  ;OVERFLOW INDICATOR Z = 4 SŽ ·jfhh(j±.æ‡7 hÀž4 P È ü ˆ^ hv. ÂE€ÿ° `÷÷·�h l`÷ ¦†�Âå‚ ·�hÓ$ Þ`÷hÞ2g`÷"„…(hû.2É €*ˆ ¦ÂfÕ �w¬x¿ f6ˆ±]fx"f4.X…Ú‚·ŠiÂà÷ ¼úÌ‹÷ ¾úCÃm ‰ i„…&ö.~ÄÄEÿ Ä„ 1‘Ãl€A…ÄeL$L �.¤ÌE¸ÿ$ ä$ äÀ�ð@0 $$ ÷ ÿ ®ç>¼ã><}&[MT,È™ì÷ È÷ Ë ú€æ ÷ ì÷ Î5÷ Þ÷ ],î™Ú÷ Ö÷ ÀÎ óÖ ÷å’· ŒÌ÷ ˆ÷ Æû†�,š÷e€|÷‹w÷U€J�á b(J’ʃ û÷ ,:šŽ ÷5pÂ. ‚  òUÿ˜°±r ˜°Â Þ*`šÂ ûË €÷UËm7 à7 þ÷Ú€7g,„šh ÷ ˆ À‡×"Ì̇÷ 0· ø÷ B÷ $÷ š,ªš÷ 4÷ $÷ ¢l�a þ‡ƒ ù‡¡Á ³,К   ‡â b b b ‡ÁwH÷ �à �Å%+,öš,÷ $ Áì÷  ÷5œwj7 xwôô ²,›)÷2.÷ \÷ RÁ µW" ‰ U*2¯Š Èf‰·Š® ÄE€¯UL¯¬ÿÿf‰&fÀ` ‹*V¯À-\ ÷ �€w¤ü·Šc ‰Àf¾‰@r‰*z¯w0óf‰Ö ÷‹6 r‰wór‰ wór‰q*ž¯w ó÷‹ ‰÷‹ Àຉ÷‹E `÷Þ¯Ò |¯æ.¹ˆ÷ Ð ÷È IЯây$ԯ昹æ.¹ˆ7 ² ·Š ÷ ² ÷ª ²î¯âyÿ*ò¯÷ž 昹æ.¹ˆ ‰Âª · ª .†Ñ ˆ ˆ /*°‘‘‘‘‘Èe &Îe —%z‚¦Îe ·%| *:°‚ì"‰÷‹| wP¦Îe ·%b ܃Ñ ˆ ˆ P*^°"‰÷‹\ w0æ.¹¦ˆˆ7Š… 7Šƒ À¤¶‰fV ;ZERO FLAG N =10  ;NEGATIVE FLAG .MACR SOB REG,DST .NLIST .IFL DST-.+174 .ERROR ;TOO FAR FOR SOB .ENDC .IFG DST-.-2 .ERROR ;SOB CANNOT GO FORWARD .ENDC .LIST  DEC REG  BNE DST .ENDM .MACR SPL PR  MOV #PR*40,@#PS .ENDM ; PROCESSOR PRIORITY BIT DEFINITIONS PR7 =340  ;PRIORITY 7, BUFFER ALLOCATOR PR6 =300  ; " " 6, DECTAPE, CLOCK, CARD READER PR5 =240  ; " " 5, DISK, TTY(DC11'S) PR4 =200  ; " " 4, TTY(KL11'SWÀDä.ʶw Üdæ4 ´´ ± ÉE€ñŠÁ¶¯:¼h.ð w ¶í- îtœ ww ô•úÿÔ {ÀD$þvÚ@v.w€úÂwÁÀÑUÀ üŪ:ïã><}Ú@€Qá.<ÉE �sðU@÷U÷ Ä^Ú@\}ã><}9P„"|…C^ç.bw7�߀ñ‹� ôeÕü` ©s@Îü`¡.ˆÀ ûw ¿÷ @ÿãÅÎ ­ EËÈ@+.®$$ƒÕ $‡Xà ! à ! Ó(B›ÃÂüC ÷ ¸÷ ®à 7 ¨Á¼,d› µÉ É á á ÷U‡÷Uô‡÷  À÷ ­*Š›| ÁÂ� ƒ Á ÷ l÷  I÷UÈ ‡Ä¶·è!®›HX¯›€¢®›�[¯›à.¸›ÈK&Ì·¹›À+¸› NÀ›ˆ,Á›KÀ›ðH à·È›&XÉ›,®›÷ < C ‡÷ 2 üú÷ * øöÁ  ÷ î èA,Ô›÷ n ÷ 4 ÷5r@  ƒC BW!&W!-,ú›!B ÷ äÁ C ‡C à ƒ ÷ š ÷ p( , œ· j÷ ˜ À÷ Ø  ±B À ý÷ .·Pf¦,Fœ·0` ·@V—0€÷`N÷ à €·P@Õ÷U8Y*‚°÷‹r n‰·Š0 7ŠZ r‰wò÷�" � À0º·Š?*¦°R P‰¶Îå¦Îeº'‡–´D´$´´´ì´µ€¸1ʰ®¸R¶2¶Þ³�¸’²³8³D³z³6ްֳ̳°µZµØµ$µ¾µµžµ¼¶vò°Ú¶æ¶,·6·T·^·x·„·�·œ·#±¨·´·À·â·î·ú·¸¸¸æ³±üµ<´P±j²p²r¶z²2¸>¸§_*.±H¸T¸`¸j¸t¸÷‹›‰æÞ¸ˆðµ@ÿÿø…‰£*R±÷„¾÷í\¸÷V´·á°ÄLÁ¤@`� é*v±Âž‚ Á F`w`,w`*w`(w`(w`"w`(å*š±w`‰‡  ýé÷%Ð7 À7 ÆI*¾±÷¾÷‹+êæÞ¸ˆ÷‹# Z OR DL11E'S), HSP, HSR, LPT PR3 =140  ; " " 3, MONITOR AND FIP, EMT'S PR2 =100  ; " " 2, RUN-TIME SYSTEM PR1 =040  ; " " 1, EDITOR, INCREMENTAL COMPILER PR0 =000  ; " " 0, NULL JOB, ERROR HANDLER .IFDF JOBMAX  ;ONLY IF "CF" SEG BEFORE US... .SBTTL DEFAULT AND CHECK PARAMETERS SYSVEL = "4A   ;VERSION "4A" UNTIL FURTHER NOTICE CPU = 20.   ;PDP-11/20'S " " " .IIF NDF HERTZ HERTZ=60. ;ASSUME 60 HERTZ AC POWER [ä Ò¦C Î@ƒ ‡ ü — å.Ô ‚B`‚Õ ‚e…ßÓ\÷­h]· Z ÷ Õh]"ZQ.úw \ùE·Z÷�h]‡÷‹\7Š\¦ÂZzZh]\ \&ZÖ. ÷�]�w 6ùC‚‡Ã�tà à à ÃÝuà ÃÃ]ù]�t"uª.Fr‡Àòˆ ‡�âw ð‡Ð  ÿõ‡ˆÀåò€ °rð^.l7�uw�t‡w f÷ FæW 5� � � DÄ Zu tþvOq�.’Å AE`÷ ‚#& BÔ‹Ž Â û�%ódŠÁ ýßÓ‰.¸b\ lœ‡G ‚·LI( „·œNLsˆ·œrœ· ˆ÷Uþ‡�&L¶™w[Mö “y%` àQ¸QR Rô K-€[µzÐ ¤µ÷ û„εÁ®°Â¨°÷ \ô·,~œC ÷  !À÷ z  ±B À ý÷ зP¶,¤œ·0 ê·@à ·Püæ˜Ã Þ ß÷Uª‡Ê ªµ÷ßû¦ Úµ÷ÚúÔú® Š·EN" Œ·€œDSþ �·~œCRþ”·ÊœF,Êœ÷ È À÷ 0  À ýƒPñà Ã÷ÿ~"ðœ÷Ƈ×-X˜X· Âã÷Uh‡·]÷¬±š÷ šQâ±÷t^’÷ ’÷Š™ò±^Ü*ö±÷~æ|¹æÞ¸ˆ7 n7ŠëæB!ˆ·,÷e—*²d&·ô÷íî÷åè†V‰„ÁÜ@àFàÕ*>²wàpwànwàlwàjwàpwàZ� ¼‚ G*b²Â ý‰‡W"W"X‰‡&œÿÿÖEüÿP‰Ã*†²ðµ@ÿÿP‰‡÷@»¦æÞ¸ˆ÷‹W ÷æ²Îª²÷ Î÷t^Æ÷ Æ÷¾]¾²^*²÷²æ|¹æÞ¸ˆ7 ¢7Šæ@»æÞ¸ˆ Q*æ²÷%–7 †7 Œè÷„ä¦Â8€$Ý* ³Ñ Âeà— ¼ƒÂ@»·¦æÞ¸ˆœ^ .IIF NDF KW11P KW11P=0  ;ASSUME KW11L .IIF NDF POWER POWER=0  ;ASSUME NO POWER FAIL .IIF NDF KB2741 KB2741=0 ;ASSUME NO 2741'S .IIF NDF KBFILL KBFILL=0 ;ASSUME NO FILL .IIF NDF KBLA30 KBLA30=0 ;ASSUME NO LA30S'S .IIF NDF KBLC KBLC=1  ;ASSUME U.C. TRANSLATION .IIF NDF KBXON KBXON=0  ;ASSUME NO XON/XOFF .IIF NDF KBODTT KBODTT=0 ;ASSUME NO ODT TRAP .IIF NDF KBAUTO KBAUTO=0 ;ASSUME NO AUTO MESSAGE .IIF NDF KBRUB KBRUB=0  ;ASSUME NO SCOPES .IIF NDF KB_ÅEÿÄåasÅ Å Å BaÁœ³í� ‡×üv2g„…µ$üv!.Þ ü‚ –¶w ‡… ƒ÷ &õÃŒ B& Û [qOqM.Δ€eó ú °ö Ѓ€ ·‚ üs!‡ó "é üvBx&üv2gh.*3  DÄEÿÄ„ Äl7!`÷­h_ ÷ Ž�üv2güv¤y` h"_.P7`÷�h_w ú÷EDÄEþÄe‡w f„` h _&þvOq!.v÷ L³e Àœ€ ‡ ü¦ÎEøÿ¡ ‚ ‚ …„ üv„…µn.œ÷ ~ÿƒW Ãe`l¶Àv@QdÀ@q, �·Šr÷ ®E÷ ø ¤÷ šÁw�÷ vÁÈ&2�R�÷-†Æ †Á÷ b· v7 tó÷-n,R�¤†Á÷ H· ^õÁc¸ÀN€ Ñ­Ìü€ †,x�ÁåT¸÷ &÷ °⥠ýÒ‹Áò€ÁUÁUR�·Ý,ž�"7ŠÞ‡Â%F±‚÷ Â̰R�‡Ò• ¦Â̰Žà"Ä�¢" æưæJ·ˆw ŒJ·È°7 ä‡[ c¸¸ v¶\±J·T±´H·–¨z"à�÷�€ž·Š›÷x–‡÷�4,ô�`�·Š�÷Xˆ‡É �fAÊ•Á RŒÀp,žfAœÀ ���ÁŒ¡ aÿÿÂE×*.³ØÿP‰‚‡æÞ¸¦ˆˆ‡7Š# Àâ¼7� $¶,R³ Ñ ÷‹£÷Ò®÷.¹ª÷º ÷$¹œM*x³‡Àb 7Š> â¼ ÷ †æh½æ~ˆ÷�I 6*œ³" ÷ næâ¼æfˆ÷�· ÷ŘÿÀe†Ó*À³7  h½Ãƒ¾‰É¥ü‡r‰wÎîr‰wO*䳯î‰fÎ �e P"Ð È û€‰‡üf&æ/*´¦f&~ ¶ €�‚ƒ„…‡æ˜À NŒ*,´ý†‘“ΕÎ ø†Ö ‡r‰whî‰ÅþÿÄýÿ *P´C”Ã¥ Ã¥$ × A‡Ãå ÃåÃå Ãå ¬*t´Â   ¦  ‚eÂ`„ ä�… Þv‰‡‰0bPRTY KBPRTY=0 ;ASSUME NO PARITY GENERATION .IIF NDF KL11 KL11=0  ;ASSUME NO KL11'S .IIF NDF DC11 DC11=0  ;ASSUME NO DC11'S .IIF NDF DL11E DL11E=0  ;ASSUME NO DL11E'S RCRK11 = 0 RCRP11 = 0 .IIF NDF RF11 RF11=0  ;ASSUME NO RF11 .IIF NDF RK11 RK11=0  ;ASSUME NO RK11 .IIF NDF RP11 RP11=0  ;ASSUME NO RP11 .IIF NDF RC11 RC11=0  ;ASSUME NO RC11 .IIF NDF SWRF11 SWRF11=0 ;ASSUME NO SWAPPING RF11 .IFNZ RC11 .IFNZ RK11 RCRK11 = RC11   ;IT IS RC11cŒÌÄÁ ýŠÁåüßÓbw �.‡Ã�hà Àœ€ ‡ üŇ÷‹b¦7Ї [qOq h„…µüv2g"b..èbÂ`÷�_�w f÷C‚‡& CÜ Âb`_�í. ƒ æà Î`à Î`_œhß ¬DÄe %‡Cß ˆ ¬(.4 `ŒcCÃeS×0ü_ ¬ðÖ Åe„ß t`¬"ù&„å.Z ØÍ _Œ Cãæ€hß `jðØ € `È.€ C & Kß ÄˆW2\ˆß ¬7 rwœ &dÀÀÀeÊ•Á@žÁ JŒÀŠüÒ‹ÀÀ ó�‡R·×EÑE`,Vž÷ È÷÷ òwô÷  í÷5ú÷ 4ZÅ^÷5¬,|ž4Åö Ͷ÷ Òë÷B÷ BÁ€°Â4÷ µ,¢ž¦& ·˜À÷ D 'æŠÁV°EŠÅÉEßÿÑU®,ÈžQa7 nÁR°÷ nÀ÷  à÷5@j÷É(îžÅ­eô÷E—ÿ\÷UVé÷Eßÿr÷UlÁF,Ÿv°÷ 4÷ L÷¶÷ ˆ÷¬7 À÷ À ;6Ÿ7 ÷ . öw h¸‡Ah¸ END OF PASS 1~,JŸ— Ê´ƒ÷ wÜ Âf÷ VþÁ¸Âµ÷ à ÷ we*˜´ÄþÿÅýÿÂæ´ ‡€âƒ ûË× »*¼´Ãe ÃeÃe Ãe Ñ�Ò … è€Ð „ ßv[*à´‰‡@(ö �‘Ä‘ö €ÄB‰ *µŽ‡Ä¸Äm‡æÄÎå Ö-š‡6‰‡‰Àt*(µˆ7 ˆ‡‰Îe‡ð¥Àe ò#û0-j*Lµ÷6‰‡‰]ÀJÀT7 °*pµF‡‰‡#0- ð¥6‰Îeh*”µ‡Àe è*‰‡ô¥ûÎe‡*‰‡ö*¸µÎe‡&Àô÷e æ2‰€‡‰F*ܵÄÖ‰÷e Î÷e Ê””””2‰‰‡‰nf+RK11 SYSTEM DISK .ENDC .IFZ RK11 .IFNZ RP11 RCRP11 = RC11   ;IT IS RC11+RP11 SYSTEM DISK .ENDC .ENDC .ENDC .IFNZ RF11 .IFNZ RCRK11 ! RCRP11 .ERROR ; BOTH RF11 AND RC11 AS THE SYSTEM DISK .ENDC .ENDC .IFZ RF11 ! RK11 ! RP11 ! RC11 ! RCRK11 ! RCRP11 RF11 = 1   ;DEFAULT TO RF11 ONLY SYSTEM .ENDC .IIF NDF TC11 TC11=0  ;ASSUME NO DECTAPE .IIF NDF PC11R PC11R=0  ;ASSUME NO PAPER TAPE READER .IIF NDF PC11P PC11P=gÄ ¬$rž.¦ r÷ rB fß Jß 2�B&ÎE_rrJ2+.Ì ÿÎŽ @œà@l±å€à æj ‚E€ ‡o.ò ±`æC ß `µ`ßÓ\ƒÀ—hÄ ˆ‡€à: `}. ñÿÿf&¦æÅefÍ 6Cß `Í ûNÕ Ò  `m.> W1Í úæÁjß v(†W1ß Ö ‡ÄƒJv"Ö_.d ß `ß \fæÕ •ßÓ\v`@àå‚ß Þ–%—`\&Þ*Š ƒß `€e„�¬­ Ôß p 6 ìVh*pŸd÷ ÷X÷ *÷5,ÀDÐê7®$”Ÿ<÷ ä÷‹<T÷5@P7 J7 ’Â,²Ÿ´À÷ : $÷ rÃ|¶÷ €ÁV°É5÷ 0þ^,ØŸÁx¸÷ l ÷ dÁW°É¥a¨÷ &þÒ• — N´Î,þŸÚ‡÷ 2Õ7 8÷ (À÷ à÷ Ò• ÁX°Ì,$ ÷ àýÒ• ÁU°÷ èýê ŠÀÁ´÷ ¤Â´‡3J ÷ À÷4À�‡|¶ =% R G @Ùx¸******SYMBOL TABLE[,\ À ÷ ’÷ ¨  Ä�ç�… ÷ Øn· �÷ ó,‚ \ý÷ jýÄ †7‹ù÷ B`÷5 \ÄEÿŒ¶Âöi*¶Ä¬Äe 7!ª †­ #‚ô‡2-ðƒë*$¶7!š‚÷e ’׉À€Áe  ‚‰‡!…*H¶!!!!ö‰Á @`� 7 V‡‰‡B„*l¶Â ýö& æÈ‡ LINK-11 V00v*�¶7A PASS 1 PASS 2 k*´¶# ÄåÀþÁ¾¾‰Áž‰À¶¾‰ý*ضV‰÷£`j‰wžð÷‹Tj‰À|¹Á!¿‰÷*ü¶‚07 .À0ºÁ(¿‰7 ÷ÎÀ0ºÁ¿%* ·‰À¿‰wXð÷Œj‰Ý€Áð¾‰À辉L*D·÷Àö& æð‡÷ˆæj‰É‰ ‰Äå÷Lj0  ;ASSUME NO PAPER TAPE PUNCH .IIF NDF CR11 CR11=0  ;ASSUME NO CARD READER .IIF NDF LP11 LP11=0  ;ASSUME NO LINE PRINTERS .IIF NDF LP11C LP11C=80. ;ASSUME 80. COLUMNS .IIF NDF LPTUPC LPTUPC=140 ;ASSUME ONLY LOWER CASE .IIF NDF LPSTAT LPSTAT=52 ;ASSUME THIS STATUS LPSTAT = LPSTAT & 071 ! 2 ;CORRECT ANY ERRORS .IFG LP11-2 .ERROR ;TOO MANY LP11'S .ENDC .IIF NDF TM11 TM11=0  ;ASSUME NO MAGTAPE .IIF NDF JCUNUM JCUNUM=0 ;DEFAULT TO NO JCU SERVICE .IFNZ Jk`pìó.DK÷h¯”o €%@o @8@Ä€Ô@‡.ѳK@æ€}@ój@'@t'èK@¬.²2a@s:*}@[g5@[qOq@þvOq@ø.cø£@ü€€ @º¢Št@((K(ô b.,8^hÆo'u~h8U(CyhÖàKph xQchf q&ÕfœwhŠ Iqh cËhZ ¯”C÷(Ks.ÀÀþÀÀÀpÀÀÀÀÀÀ@À….&dÀ À€ÔÒÑ¢À ¡¾Ï€½.l$¨ *÷­·a— Ê´ƒ÷ ªÒҜҌƠš÷�™C ÷-’< — ],ڠδƒ÷ „ÒÒ|÷ xÀà@a ß³ø‚‘€` ”*¡Ò´ó‚ÁÊW ¶³÷5 ÑÑHÄ †Ò�¶&$¡1@Àå¶³�Ä †ÒÒÄ †Ò· D¡ŽÑ�Å Ñ�w|… wa ÷Ñ^¡°€‡·j÷ Âb‡Ë$Œ¶ À Ààà€àॠàµwŠ-ÿ3 ª·3fv¡ä*t¡ÿ÷•ÿ•‡À²³ÐÈH-Èå¶³ æ°³æÿ˜¡¨³ˆw ¨³²³×-,ª´ƒ÷5U °¡À¨´ÈàÈ娴àæm*h·ÁÔ&æÎ‰‡÷‰Âj‰wlÿ÷жj‰€*Œ·w`ÿ÷�ªj‰wTÿ÷Žžj‰wÜï÷�’j‰*°·wÐï÷�†j‰wÄï&þÿÎEÿÎæ‚÷‹&¥*Ô·wÿ7Šw¢ï÷–Xj‰w–ï÷†Lj‰w–*ø·Šï÷“@j‰w~ï÷ƒ4j‰wrï÷„(j‰w5*¸fïæ†ÎEÿÎæ‡wRï÷•j‰wFï÷¦*@¸Òüj‰‡÷¨òj‰w0ï÷«æj‰w$ï÷Ó^.d¸Új‰‡÷ÔÐj‰‡÷­Æj‰wï&æʸˆæʸ˜.Œ¸ˆ‡&æÔ¸ˆæÔ¸ˆðµ@ô$·ŠNP‰&æÀ¸*´¸ˆæÀ¸ˆ‡EEEExQ#nCUNUM .IFDF XXXX11 .IFNZ XXXXXX-"JC .ERROR ; BOTH JCU AND XX DEVICE SPECIFIED .ENDC .ENDC XXXX11 = 1.   ;SET UP JCU SERVICE XXXXXX = "JC XXXSIZ = 80. .ENDC .IIF NDF XXXX11 XXXX11=0 ;ASSUME NO SPECIAL DEVICE .IFZ XXXX11 XXXXXX = 0   ;NULL NAME FOR NO SPECIAL DEVICE .ENDC .IIF NDF XXXXXX XXXXXX="XX ;DEFAULT SPECIAL NAME IS "XX" .IIF NDF XXXSTS XXXSTS=0 ;DEFAULT TO R/W .IIF NDF XXXSIZ XXXSIZ=512. ;DEFAULT TO 512. BYTE BUFFER .IIF NDF XXXFRC oLå$É\ÅÉ»Å*ÅÅÏÁÅ#ÒÅ"r Å>Å=ÅÅ= ÅÅ=Åš �\-�ÕíSBÅDN ðIICSÃÅELIFS<ÖNGISS° ³6.³ÄíNTÏøSJÙEYDÖGOLATADÖTAXÜEGNAH».Ù è$RH|ÅESOL FÖELIPMO&»TNOÉÙNO ÒÅEÚÿZISRETSULÔÅTNUO  ×Yè$%TV ™ ÍZè$FTV n %Ã%[ð%$TV z /¹/\íF$TVS 9¯p Ê¡¢´æ¨³ˆw Œ¨³¤´÷¶³&Þ¡ò÷ª´î‡÷ &&f÷‹æ%÷ ü"ÂÞ,þ¡.÷ L ÁŒ¸÷ @Áî÷ · êÒ•+ ŠÀŒ($¢Á÷ Hw µw 7¸÷8¶�€¡ Œ¸ PAGE Q,F¢ÀÀÀfA÷ �…fˆÝ5@ú ,l¢÷ ”çw ¢è‚÷ ˜· ^†w Þÿֲಜر1Ââ²",’¢ ƒR”þ€˜áÅ€ùÉ•?ö€˜ðµ¼¶ûÒ¥ |,¸¢Ò• Ò• Âà£# „ †æÞ²æT·ˆw ˆÿT·à²-Þ¢„ †æÞ²æÖ²ˆ· ì‡n°µ·Š%ü·Š#ü÷ 6í£*ò¢÷“¸ö÷ *÷ ZóÂÿ±Ò• Á¸qظ€M^ÐfÀ*"¹\M€fây€f$¹Š¹Ô¸n¹Þ¸¿*F¹|¹.¹˜¹i*j¹²'޹@G*°¹l*Ô¹0?n–0¿æø¹=*º,«0zÓ«… âyð�*(ºóLºqQà[ì*Öº/E CC TRrXXXFRC=0 ;DEFAULT TO NON-FORCE TYPE .IIF NDF XXXHOR XXXHOR=0 ;DEFAULT TO NO WIDTH .IIF NDF XXINBC XXINBC=0 ;DEFAULT TO NO IN BUFS .IIF NDF XXOUBC XXOUBC=0 ;DEFAULT TO NO OUT BUFS XXXSTS = XXXSTS & 177  ;INSURE TOP BIT OFF XXXHOR = XXXHOR & 377  ;INSURE ONLY A BYTE .IFNZ XXXSTS & 2 XXXFRC = 1   ;IF OUTPUT ONLY, THEN FORCE .ENDC .IFNZ XXXSIZ -1 & 177000 .ERROR ; XX DEVICE SIZE TO BIG OR IS 0 .ENDC .IFNZ XXXSIZ & 1 .ERROR ; XX DEVICE SIZE IS ODD .ENDCs.9ÃíSO~ÙNIAHnÖATA è$ETA @ÖNGISSAEƒ._`ÙFE,ßETELEèÿõTE^øMIÁßESLvÙDN Åx…VQÆÿýLRæÿýRR¾ •S.•ÆíPX˜ÅDLEIÊíXIŠÙDNENÍÅELIFSATUs.»PNIROÎÅELIFSATUPTUOROfÈRO”ÅTEˆßBUS‚.áObßOTOHÙOLLEÈÙNDüROFdÉF ÅPM ŒÅEN%ILTUPNZÅTUPN ÐðRTSNT È.ÔíTNËÅ(VNNÙYE’ÙLLI/ èTFE.ÙHTGN�-EEÌðNEšÅTESlÙTE*ßHNTSI Èí01GOa k|t÷ >·‡ “¸.MAIN.&,£Ã ÷ ~f÷ ðÿ�Áe0R�‡&ÄR°·,<£Ã@÷ Ã(÷ @÷ !V°ñ„‡ ÷ <¶&b£À  Àe ÀeÉÿÀe Àe �‡Íª¶\±2²Ì²\±Ö²‹´¶ž³\±¨³ä³7,‚£÷ Œ÷ „& ÃV°ÄX°ÎRw ˜þ£ÎEþÿ· ² ,¨£ †Î ÷U¼÷U´‹U€‡Ã\°ææ‚j,Σæææ�&÷ 4÷ .÷UŠÎ%\¤¤X÷ þT,ô£”$Þ Æe È+ -b*x/T&X!÷ Ô 7 D Œb”$Þ,¤Œb¤(¤(Ê5`Ì5`Ê5@Ì5@2­  ,@¤ÌU ÷  uANSFER ADDRESS: 0» LOW LIMIT: /» HIGH LIMIT: í'» þ>»ÚT» LINK11.OVR ô ¼Ú<ༀÔ h½€Mî½ ü½,¾ ¾ ********** H*f¾UNDEFINED REFERENCES «*оLOAD MAP SECTION ENTRY ADDRES´®¾S SIZE  –ľ,J˾ W(ξ ?LOAD MODULE EOM „v XXXSIZ = XXXSIZ -1 & 777 +1 & 1776 .IIF NDF SMLBUF SMLBUF=64. ;ASSUME 64. SMALL BUFFERS .IFNDF BIGBUF .IFNZ TC11 BIGBUF = 1   ;ASSUME 1 BIG BUFFER WITH DECTAPE .ENDC .IFZ TC11 BIGBUF = 0   ;ASSUME NO BIG BUFFER WITH NO DECTAPE .ENDC .ENDC .IIF NDF CORMAX CORMAX=8. ;ASSUME 8.K CORMAX TOPS .IIF NDF CORTBC CORTBC=12. ;ASSUME UP TO 12.K CORE .ENDC .SBTTL      ; MACRO DEFINITIONS ; GET A WORD OUT OF THE DATA AREwkÇíGO(ßTSI2 yn.yi*ðEPATGAÑÅEDOVâTAÏ5èDI„ÙEMA0ÖWÆŸE‚ÙTXE ÅTO 0 ­:.­Ñè$MUÞÿý2MUâÿýMU2ÖDL xßOTOGRORRENWÓhÅNzÙNEPÅR3 ã!ãðKEEðÿóROFIüFIðÿõI> ýêýðSO–ÅTU\ÅTNIRÙ Õ.Šè$DA TÙEZIMODNATÙMODNA†ÙDAE ÐÅEZI³.7SDROCEÓÅDROCE ÊÿýTNUOCEœÅTES€åME4ÖÈ.]EMANE 6ÖECALPE pÙExÌE ÿ‡SSST‡wžJ ŒB‡ŒR‡´,f¤€&€ € N ÷ H@ æ€ �€ ,Œ¤N ÷ Ö € ‡æ& Î Á @  Àà%,²¤Ž ö ö€Ö ‡&  Î ù †Á`@ à øç,ؤ÷ ¦þ÷ ôÿ÷5@l ÷ æÿ÷5`^ 7 X ,þ¤7 X ÷UjÀL ‡7 à ÷ ËE7 8 Ë5ÿ,$¥ · . · bwà÷ ˆ7÷þ÷ Ì÷÷- ¸½,J¥÷ öË5÷U@Ë5Ë5@G÷U â,p¥ËE@AÁ`°ÂR°÷ ² ŠË 8ËU 5÷ ¾Ë �},–¥÷ ¬÷ Ð÷U Î (ÂZ÷ š'€÷U¸W!eö¾ ÷ ¿ × ¿:ß'¿.ä.¿ ó˜–ËzA AT RUN TIME - GWTXT .MACR GWTXT REG  MOVB (R5)+,-(R1)  MOVB (R5)+,-(R1)  MOV (R1)+,REG .ENDM ; NOTE - MACRO "LOAD" IS REPLACED BY "GWTXT" ; TRANSCENDENTALS .MACR TOPR1 OP,ADDR  MOV #ADDR,R0  JSR PC,PUSHF2  JSR PC,OP .ENDM .MACR MOVFLT ADR1,ADR2  .NLIST  .REPT FLTLEN  .LIST  MOV ADR1,ADR2  .NLIST  .ENDR  .LIST .ENDM .MACR FLTPP ARG  .NLIST  .REPT FLTLEN/2  .LIST  CMP ARG,ARG  .NLIS{ROTSErßEMUSEjÙNRUT¹ƒE Î èTHGI  �W.�Éë(DNÉíDN:ÖHNNU8ÕNU>ÖEVAPÅPEE“µLÓíNG‚ ¿'¿ÂíNI Ù ÇÇÍè$ECAPÅíRQ ¿ Ù Ùkð%PAWÂÅPETtÙPOTÖ ï÷ïèSY^ ÷ï'÷èBAüDNAËíNALÙEPAÀßNEH º Î è$EMI Ò !Ä.!íEMIÌÅOÊÅ(NRÅÉSSELNBÖ|,¼¥. W!$À‹÷U€¢— ÷ , åß,â¥W!.÷ x÷U ~÷ *÷ €‡w 0¦ûc,¦ È õ+-&"&':%FÝÂ÷ ®w ¼€¦O,z¦ÖÈ ¼ CDOB*F÷ ŽÿL w\þÂeÂeÂeM, ¦æ`·\÷ pÿ·T‡÷ X÷ 8òµ‡÷ N÷ž,Ʀ&&ÁV°! ! Â--÷ @ ÷ ‚ ü‡ `A,ì¦÷ &‚ ø‡úÑ ó÷ ÀN ‡À À À &À À 3,§€e‡÷ @ðµ4¼¶ $‡ } .TITLE TT.P11 TERMINAL SERVICE ;COPYRIGHT 1971,1972 BY DIGITAL EQUIPMENT CORP., MAYNARD, MASS. ;VERSION: 04A  EDIT: 48 ;DATE:  31-AUG-72 BY: MHB/JDM  .MACR TTYVEC TYPE,PRI .REPT TYPE .NLIST .IFL UNITNO-16. .LIST .WORD TTIINT,PRI+UNITNO .WORD TTOINT,PRI+UNITNO .NLIST .ENDC .IFGE UNITNO-16. .LIST .WORD TTIIN0,PRI+UNITNO-16. .WORD TTOIN0,PRI+UNITNO-16. .NLIST .ENDC UNITNO = UNITNO+1 .LIST .ENDR .ENDM .ASECT . = 60~T  .ENDR  .LIST .ENDM .MACR FLTCLR ARG  .NLIST  .REPT FLTLEN-2  .LIST  CLR ARG  .NLIST  .ENDR  .LIST .ENDM ; VECTOR MACRO .MACR VECTOR ORG,ADDR,PR . = ORG .WORD ADDR,PR .ENDM ; ARGUMENT MACROS .MACR ARGS A1,A2,A3 .NLIST .IFNZ A3+0 .LIST .WORD A1*4+A2*4+A3 .NLIST .ENDC .IFZ A3+0 .IFNZ A2+0 .LIST .WORD A1*4+A2 .NLIST .ENDC .IFZ A2+0 .LIST .WORD A1 .NLEVASNžÅKCè.GOLNÆÅGNIS�ÉLITNÒíLARÅTIAŽÉELIH|mlèETALÄROÇÙREÅq „a.„ÃûÂûÁûÀû½û¼û½û¿ûÃûÄûÅûÄûw.ª±û²û´û½ûÂûÇûôûò.Ðûûzü©üÌüýýýPý\ýŸýµýÞýþ*þ¿þ ÿFÿù.öiÿmÿ{ÿ�ÿ|ÿww ÀÄ5>þvOq".ÄU Ä5ÄEå€ÄEä„÷ ÄE€Ä5Ñ.BÄUÄEç„þ`W£ï0Ä‹€W£w….h° þîB“÷ ¬%Ä5… €A‡À €†,8§ÀåÀå÷ÿÀåÒÿÀå@‡÷ Ä  ÷˜ ˜ CÃå0V,^§× ‚ ‡€ „& „ †N`Ä Á ù†ÀU€ö�t,„§Á`÷ ˜Àeäwć÷  ÷ ÿ7 \÷U­,ª§Ä ‡@�¼¶ ÷ Ò À5÷ Ê ÷U¢ ¿,Ч÷- º ÷ Fõµ>¼¶ú÷ ,÷U„ á÷ · Ôö§– 7 – ÷î Ž ÀE€ÿ‡,¼¶ ,â¶ € *,· @@@@@@@@@@@@@@@@@Ì.·@@@@@@@@@Æ&¨÷ä à · � UNITNO = 0 TTYVEC 1,PR4 . = 300 UNITNO = KL11+1 TTYVEC DC11,PR5 UNITNO = 1 TTYVEC KL11,PR4 UNITNO = KL11+DC11+1 TTYVEC DL11E,PR4 .CSECT TT .GLOBL TTYS20,TTYS30,CHRUSR,CHRU02,IOREDO ;INTERNAL .GLOBL TTYSER,CHOUTO,TTIN08,SLEEP.,IOWAIT .GLOBL TTICR9,TTICPO,TTYHNG,TTIIN1,TTOIN1 .GLOBL JBWAIT,JBSTAT,TTYCLK,TTILST,JOBTBL ;(TABLES) .GLOBL DEVTBL,TTOLST,JOBCLK,TTSLST .GLOBL SAVJOB,RTI3,FETCH,SAVREG  ;(MONITOR) .GLOBL ‚IST .ENDC .ENDC .LIST .ENDM ; PUSH-POP MACRO .MACR .PPM PSHPOP,AD1,AD2,AD3 .BYTE PSHPOP .NLIST .IFNZ AD1+0 .LIST ME. = .+2 .BYTE AD1&177400/400,AD1&377 .NLIST .ENDC .IFNZ AD2+0 .LIST ME. = .+2 .BYTE AD2&177400/400,AD2&377 .NLIST .ENDC .IFNZ AD3+0 .LIST ME. = .+2 .BYTE AD3&177400/400,AD3&377 .NLIST .ENDC .LIST .ENDM ; LOOP MACROS .MACR .BLOOP NAME,COUNT NAME'1: DEC COUNT  ;BEƒà÷ RÂÃÁ— (ª.Ž÷ `�`B•÷ ‚“�úà° Å Þ Nð ѳK.´¤C÷ ¼q÷ ,Ä5Zð¡¢÷ Áþ.Ú``Ä5÷ ÷ Ä5Ä5ÄE *o @8o €%®.À…’à°þW!%° þÄE Ä5 Æ.&Ã5÷ Ä50ðÅøÿC`BÂåÅå Ä€Ô&t'èK».L¥(� ü'àp$Ä5÷ öÉ ôð|t'èK 'Ê.r€AÄEÄJ÷ ²„Ú ÷ õµ¼¶ø· È ÅŸ`(¨Ä W ®·xK˜’£,*¨€Åå ÿø�‡A@”N¤üÀEÿ@`…À÷ j‡$,P¨À÷ `‡À÷ V‡÷ î 7 è · æ ÀR°“&v¨ÐÞ ÈÚ"ƒ÷Uæ À÷ $‡ ²·úM–¨$–¨÷5€ · ° ÷¼® ÷E¨ 7 r,´¨¦ ‡÷ æÁàƒCà ±@ @ý � ƒ #1-Ð,Ú¨ ‚à`€ ÀEðQ$ƒ)÷ ÒÀD`[,©À`B !‡÷ À € #Á`B ú‡ ‡ s<ªK,&©÷ ¢ � € #1-Á`õ78 wô V,L© 7î s<ª’$sPª…RESREG,CLRBUF,STORE,TABBER,IOFINI .GLOBL FREBUF,SCHEDX .GLOBL TTICZC,TTICOC,TTICUC,TTICCC,LINES4 ;(MESSAGE) .GLOBL TTBACK,EXCDED,CRLF0,LF ;RSTS TELETYPE SCAN ROUTINES ;NOTES ON VARIOUS PARAMETERS: ; FP AND EP POINT TO THE START OF THE BUFFER CURRENTLY BEING FILLED ; OR EMPTIED ; FC AND EC EACH CONTAIN MINUS THE NUMBER OF UNUSED BYTES ; IN THE CURRENT BUFFER -1; E.G. A FRESH BUFFER HAS FC=-37 AND ; A FULL BUFFER HAS FC=-1 ; BC CONTAINS THE NUMBER OF BUFFERS THE USER HAS †G LOOP NAME BMI NAME'2+2 ;IF COUNT EXAUSTED, EXIT .ENDM .MACR .ELOOP NAME NAME'2: BR NAME'1  ;END OF LOOP NAME .ENDM ; FILL WITH 0'S MACRO .MACR ZSKIP N ; 0 FILL OF N 0'S COMES NEXT .NLIST .REPT N .WORD 0 .ENDR .LIST .ENDM ; TESTING MACROS .MACR IF A1,REL,A2,ADDR,BY  CMP'BY A1,A2  ;BRANCH IF A1 REL A2  B'REL ADDR .ENDM .MACR IFZERO REL,A1,ADDR,BY  TST'BY A1  ;BRANCH IF A1 REL 0  B'REL ADDR ‡2÷ ÄH`÷ ¢ð J�.˜à÷ ’°þÁÄEð5ÄE p0ª.¾w ÀÁ‡N!`p£æ–2w”[qOq "–,.äÚ÷ pÙÁ’ÁeEÉ‹€pþp”DÔD ÁØ— E—. ¬ÀÓÁÁØÉã¨ÁÆB”‡`ð‹7èÄ5åË.0«B”…àáþ`B” „`E× ƒ‡Ë ÃbÄo ƒK.Vã‹�Õ¢üòÎeàðU‡Ë‹÷Ã’aîÃE.| ¬ã Ãbùã Ñ àðE�þ`  Z.¢ÄU‚B•— F ˆ÷ h·Ø 7 Ö ÷ ^a"r©ÀÊ ÷ È µŠÏ¸õ`´¸µ œ¸ÀàÁÔ,Ž© BÂà· ¤ ‚w xá�R ýõàš¸õà´¸Ååù},´©ƒ à ý‡÷ u´¸5ŠÏ¸‡7n €÷ <fÅ»,Ú©b Aš¸B´¸C�θÄR°È …‡æ¦f&÷ Ç,ªÁR°ÂW°ÃV°ÄX°‡æ¦f¦6Þ �‚ß,&ªƒ„À ‡RRRRRRR‡       k,Lª‡R”þ⋇÷ ”ú&÷ ’ó÷   & &÷ 8ãÀ,rª÷ Hÿ÷ fÅ�ÿ÷ P÷ Ä’’ ’÷ ”ýÀÚ´ˆ û,˜ª$È6 Èe‡7 d wÀ÷U¾ ‡÷ Üüù÷,¾ª’& ÷Ž" ÷ Žý÷ ‰YET TO ALLOCATE. ; IT IS DECREMENTED WHENEVER A BUFFER IS ALLOCATED, AND INCREMENTED ; WHEN A BUFFER IS RETURNED. WHEN BC<=0, USER CAN'T (NORMALLY) GET ; ANOTHER ; TERMINAL HUNG (POSSIBLY) SERVICE ; DON'T TOUCH REGISTERS R0 AND R5 !! ; R1 IS DDB ADDRESS ; R2 IS 0 FOR O.K. OR 1 FOR HANG UP DC11 OR DL11E ; R3 IS INPUT CSR ADDRESS TTYHNG: MOV R2,-(SP) ; SAVE HANG UP FLAG MOV #4,R4  ; CONSTANT (CARRIER DET BIT ON DC11) .IF NE DC11 ! DL11E ; THEN NO LINE Š .ENDM .MACR IFSIGN A1,SGN,ADDR,BY  TST'BY A1  B'SGN ADDR  ;BRANCH IF A1 SGN'US .ENDM .MACR JMASK0 REL,A1,MASK,ADDR,BY  BIT'BY #'MASK,A1 ;IF 0 REL A1 & MASK  B'REL ADDR  ;THEN GO TO ADDR .ENDM .MACR IFZ A1,ADDR,BY  TST'BY A1  BEQ ADDR  ;IF A1 = 0 THEN ADDR .ENDM .MACR IFNZ A1,ADDR,BY  TST'BY A1  BNE ADDR  ;IF A1 <> 0 THEN ADDR .ENDM .MACR IFTOKA REL,ARG,ADDR  JSR R5,TATEST  .WORD ARG  B'REL ADDR .ENDM ‹B•— N ÄUðeþB•÷ 1.ÈB•÷ Ó$°�B•— %ÄU— $ÄU .îÄEB•— ( ð5 ð5@Ä5Ä5›.ÄUÅ à0‘Ç`0‘^ ÁˉÁ÷  ``; ¶.:# ÉIàÓ ð5ã c# ÷ Å5 ÅEp.`øÿs� ó ÷ Å5 æfÅ5jü€€ º¢Šte.†ÃeÅ5 Å5Áe@b7 ö‡ÀàŵÏ  ª.¬  àÀ…ƒàð‡fÁÝ w?"(,.Ò�Œ\÷ , ÷ �þ÷ *ò÷ Ø,äªÊ Ò¢ Òü ÷U@„ ÷ ¬â÷ â÷ ¾û 7 à 9, «÷-FÚ ÷UZ Ńÿ÷ ²÷ ý‡÷ ¶òÀ*¿,0«&÷ ô$7ª 7¬ &÷ ¨Åƒÿ÷ ú·Š ’I,V«ÒÊ2 ’÷ Äü‡ƒ ÷ Ê÷ @÷ @÷ ¼÷ÿ,|«ÿÿf ÷ l÷ *÷ v æú æ&÷ â÷ @ÅÅ,¢«‚ÿwÖþ÷UÄ ‡À÷ þ7 Ò 7 , æ€÷ êûI,È«Å%?·S ÷ 8ü÷ ÀûÀ÷ |ý¡ íÖ ‡¡,î« 7 š ÷ &à #÷-äŠ &ƒ÷ ¨û÷ Ü Å%*,¬\0÷ Å ÷ È:�÷ ¨÷ òûú÷ ~÷ ²-,:¬á· N ÷ Þû�NUMBER CHECK REQUIRED MOVB TTLINE(R1),R2 ; GET LINE NUMBER * 2 CMP R2,#KL11*2 ; IS THIS A DC11 OR DL11E ? BLOS TTYHN6  ; NOPE, FORGET DATASET HUNG CHECKS    ; THIS CONDITIONAL IS DEDICATED TO    ; DEC ENGINEERING WITHOUT WHOSE HELP IT .IF NE DL11E  ; WOULD HAVE BEEN UNNECESSARY CMP R2,#KL11+DC11*2 ; DC11 OR DL11E ? BLOS TTYHDC  ; BRANCH ON DC11 TTYHDL: MOV #100040,R2 ; DATASET STATUS CHANGE + IE ON DL11E MOV #10000,R4 ; CARRIER DETECTOR IS BIT 12 ON Ž .MACR TBITT A1,ADDR  BITB #'A1,TOKE(R0)  BEQ ADDR .ENDM ; JOB DATA STRUCTURE. ; 1. JOB DATA BLOCK #1 (JDB) JDIOB = 0   ;POINTER TO THE SECOND BLOCK JDFLG = 2   ;JOB STATUS FLAGS JDIOST = 4   ;I/O STATUS OF JOB, ERROR CODES JDSP = 6   ;RELATIVE USER STACK POINTER JDCPU =10   ;CPU TIME IN SYSTEM TICKS JDCON =12   ;CONNECT TIME JDKCT =14   ;KILO-CORE TICKS USED JDDEV =16   ;DEVICE TIME USED (MINUTES) JDSIZ0 =20   ;C�… Ãe$ð w Þÿ‡ÄE& Ä5û ²2ar.øB•— +ü— -N ÷å‹Ö å•-B“— .„. ÷ ªÄUàpþ‡— -ìÍ•éÅhpa.D þ÷ `•�à— W!h퉗 ñ‡÷ tõ.j ÃÒ “ ÷ h“ øÓ$“  ÷ tÃÛ Â”÷ j©Ò "Û .� ”÷ d”“ “ ÷ T•‡÷ p€“ ú†±.¶ —  ÷“ ‡—  Ѓ— `ï‡ÂE ì    é.Ü ÷ BÂE€Ä5—  —  ‡Ä5÷ º æ€}á. À‡—  çƒÄE�÷ Š ÷ ‚õE ÷ zE ÷5€Hì,`¬ À 7 ÷U€ €‡÷ ”û÷ nøfæÃ,†¬~÷ 8 ÷ >ƒ…η ¾ÁºÁe?fæÃ±,¬¬ ÷ Å$÷  ÷ ƒ…¶ ÷ Ò÷fÚ,Ò¬÷ ðÿ…Åe0wò ÷ "ß÷U@Œ÷ ¶ãÀ5 ,,ø¬ƒ ÷%®ªX à à €‡÷ bÀ5÷ ÷´·,­Î÷ û÷ ˜ùÀ÷ ôû Å  ÷ ¤÷ Žc,D­÷ œ÷ ¼úÄ ÷ ~÷ ¾ùùW!'÷ n÷ <àF,j­»· t÷ ®ú×÷ ú*Ã\!÷ ú$÷ ¨Å Õ,�­ƒ ÷ Šúü÷ ÷ òù÷ úÁR°ff÷  å,¶­‘DL11E ASL (SP)  ; DATA TERMINAL READY IS BIT 1 ON DL'S BR TTYHN7  ; GO DO THE DATASET HUNG TESTS .ENDC    ; SO MUCH FOR DL11E'S TTYHDC: .IF NE DC11  ; DC11'S ARE EASIER MOV #100100,R2 ; DATASET STATUS CHANGE +IE ON DC11 .ENDC    ; SO MUCH FOR DC'S TTYHN7: BIC (R3),R2  ; IF IE+STATUS CHANGE BOTH SET, THEN BEQ TTYHN5  ; IT FORGOT TO INTERRUPT. SO BRANCH !! .ENDC    ; END OF SPECIAL DC AND DL STUFF TTYHN6: MOV #300,R2  ; KL'S,DC'S,DL'S MAY ALL HA’URRENT SIZE OF JOB, IN K'S JDSIZ1 =21   ;SIZE NEEDED FOR NEXT TIME, IN K'S JDRESB =22   ;L3 QUEUE TASKS TO RE-START ON RESIDENCY JDPPN =24   ;JOB'S PROJECT/PROGRAMMER NUMBER JDMFDB =26   ;BLOCK NUMBER OF MFD BLOCK WITH N.B. JDMFDO =30   ;ABS POINTER TO 'UAR' ENTRY IN N.B. ; 2. JOB DATA BLOCK #2 (IOB) ; THIS BLOCK POINTS TO EACH OF THE USER'S POSSIBLE 16. CHANNELS. ; IF THE ENTRY IS NON-ZERO THE CHANNEL HAS BEEN OPENED. ; JOB FLAG(JDFLG), AND JOB ST“÷ ¶êÄUòÄ �— " ój».( — '°�ÄU€ ° — — ÄE.N ÄE€Ä5€‡÷ ‚œƒà‡ fÅEàÿÅ5A s:*}ƒ.t ’$ÅE ‚ … ý…‡w À0 `ÅÊŸþvOq R.š W!þw ‡A`Õ É õAbDä 0ä ÷   [qOqS.À ˜ÿ÷ Ì ñcô— 0 — 9´‡— A— a cø£fæ Z¯‡¯²‡vó.ì÷h¯”C µW@ôþ_@ãÐM@ü.”À ÷ þû¡¡7 Ž÷ŒwŠã÷Uœö÷ÆÜ­0÷UŒ‡Áæ·€ è­ÐWé­î8þ­nÿ­i,è­ ÷ L÷ "ú÷Uv‡û÷ 6Áæà ÷ 7,®¤÷ ð@’B   Å ÷ øù� ôC w€e,4®÷ zù<÷ Ôû Âî´¦Ã<Ä>C!W!^õµ,Z®8¼¶÷ ¾ùù÷ ¦ùŽC D÷ ¬ù C!D!ùÝ,€®Á Á � õ€Ž ÅU€÷UÜÀÄÀ`µ�P:ŠM,¦®Š÷ xù7¬‡À¦à x‘Å H 7&÷ Hù{,Ì®7އ÷ �fÅ'÷ …ö7 úÂ5ÂåR,ò®¦÷ >Ö R‘‡ÀØ Â<·€ÊeÊ-‚ •NG ON BIC (R3),R2  ; NORMAL DATA INTERRUPTS - CHECK IT. BNE TTYHN4  ; BRANCH ON POSITIVE HAPPINESS FACTOR TTYHN5: TST 2(R3)  ; ELSE TRY TO UNHANG THE ANIMAL BIC #140,(R3) ; TRY CLEARING IE'S INCB TTYHCT  ; AND SAY WE DID IT TTYHN4: BIS #140,(R3) ; INTERRUPT ENABLE INPUT CSR MOV (SP)+,R2 ; POP HANGUP FLAG BACK INTO R2 .IF NE DC11 ! DL11E ; SHOULD WE HANGUP DATASET ? BEQ TTYHN3  ; NOT THIS TIME BIC R2,(R3)  ; YES, CLEAR DATA TERMINAL READY RTS PC –ATUS(JBSTAT), AND JOB WAIT(JBWAIT) ; REGISTER BIT ASSIGNMENTS. ;(JDFLG): JFSTOP =100000   ;STOP JOB ASAP, SET BY SCHEDULER JFTIM = 40000+JFSTOP  ;JOB IS TO STOP, QUANTUM IS UP JFHIBY = 20000   ;RUNNING IN RESPONSE TO "HELLO" OR "BYE" JFPCB = 10000   ;PC BACKED UP FOR I/O RE-DO JFGO = 4000   ;FORCE JOB TO RE-START JFCCC = 2000   ;ENABLED ^C TRAP FOR USER JFSYS = 1000   ;USER IS RUNNING PRIVILEGED JFIRST = 400   ;FRESH USER, NO COMMANDS AS YET JFCC = 2—å#X@æÎ:@î`@ðX†@òèy@$.óö@ôÅž@t'ÖK@U(Cy@œ,X@Ð.œ,\@œ,f@t:) @àKp@ N_`@€.xQc@¶Rö@ßfa@[qOq@ÖsH:@ž.ku @þvOq@cË@ú¨8ŸHø©H8.©ÀHæ©ÀvHÜ9©H´9©óLH.:©H,.:©ÀvH;©€ H¾>©HÀ>©@HÄA©Hj.D©HÆF©HG©ÐfH„G© gHÎK©H·.L©HÐO©HÔX©Ï^H¸Éª€}HŠB«ÀvH>‚.T«H T«ÅžHL^«HH˜æ,¯‚w øÛ�7¼ ‡° ‡ð  €&È ø,>¯üÈœ·˜‡÷ ¶ÿâ ÁÒ´¦fR Á%à´û‚¼,d¯R’· v‡ÂÚ´€÷ ¼ÿ€÷ ®ÿ�â @÷ ,Н¢ú ÷ ¤ÿ÷ L‡÷ ”D÷ ®>7 Òæh·ˆæè,°¯t·æh·ˆ ÷ &÷ FÜ÷ ààÀ5öÄX°Ã Ì%Ð,Ö¯®ªðƒ ƒ Ã%ë÷ ®÷ ÷ løåÌ ã÷ Äú÷ t!,ü¯Ýæh·ˆ÷ hæh·ˆ ÷ dù÷\Ç÷Uz,"° L7 F7 ć÷ b÷ ÷ ø÷ .ù· ,÷ Äì'H°óÀ"‡zf·Ôx¨z°»zkQÔxRðµ‡Ë,踣™ ; AND BAG IT TTYHN3: BIT R4,(R3)  ; CARRIER ON ? BEQ TTYHN2  ; IF NOT, THEN LEAVE IT ALONE BITB #TTWRC,TTSTS2(R1); ALREADY ENABLED ? BEQ TTYHN2  ; IF SO, THEN LEAVE IT ALONE ALSO MOVB TTLINE(R1),R2 ; ELSE GET LINE NUMBER AGAIN CLR TTYCLK(R2) ; CLEAR ANY TIME OUT TIMERS JSR PC,DDBSET ; AND ENABLE DC11 OR DL11E LINE .ENDC    ; DAT'S ALL THE DATASET STUFF TTYHN2: ADD #4,R3  ; BUMP R3 TO OUTPUT CSR BIC #4,(R3)  ; CLEAR MAINT. BIT ALWAYS BITB #TTHUš00+JFSTOP  ;^C TYPES AT THE TTY BY USER JFABRT = 100   ;BAD ERROR, FATAL IT IS, ABORT JOB JFNOPR = 40   ;USER HAS NO PRIVILEGES JFKILL = 20   ;KILL THIS JOB JFRTS = 16   ;RUN TIME ERROR INDICATORS JFSWRR = 1   ;SWAP ERROR FOR JOB ;(JBSTAT)/(JBWAIT) JSRES =100000   ;IN-SWAP COMPLETED ON REQUEST JSDSK = 40000   ;FILE I/O IS DONE JSKEY = 20000   ;DELIMITER IN KEYBOARD BUFFER JSTEL = 10000   ;ROOM IN TTY OUTPUT BUFFER JSPTR = 4000   ;DEL›}«`;H`}«d;HXô.}«n;H”}«s;H¬“«@8Hf“«ÀvH™«³ZH°Ø.¹«pqH&½«|—HHÈÀ« H¤ã«HÂÑ.ó«Ù�HD(Ð(nü zh üzh" Î.hrhéjhÈ_X¤_hÐq%håñv ZhrÀ.”wÌhìà~hÀâ~` h ã~ÜThr å~ZXhT#.å~~uhÐ ç~þhþç~€!hPç~±'hèç~OMh R.ç~³dhvç~chôé~Èhð~ºh`ð~ hzcð~v~h0 ü€€ h¯”ì÷¯”H @H îöd" М€�€ñ£€%€�€ñã€�@ 〠€�@‹ä@‚,¹`ä@‹ôä€%@‹ô@ @‰t@ À@‰vD o,4¹€�À D € €�ÀŒJ €�€ J € €�€Œû „† þ,Z¹„‡Y „� „¬ „É „‚w,€¹É Àv„†ë @‚@ë € @‚Àû @‚Pû € @‚,¦¹Ðü ‚0ü € ‚°e„o„‡oÀvé,̹„ƒt„‘„�µ„ „€ ,ò¹€P„ó„„„…;€¯,º³À€ð£€¡®€¨²€� ²€ €�,>ºŠ²€�ñ²€%€�ñ¶€¢º€¤ØY�NG+TTWRC,TTSTS2(R1); IS THIS TERMINAL HUNG ? BNE TTYHN1  ; NOT NOW INCB TTYHCT  ; YES, COUNT AS HUNG CLR 2(R3)  ; SEND A NULL TO UNHANG IT BIC #100,(R3) ; TRY CLEARING INTERRUPT ENABLE BIS #100,(R3) ; INTERRUPT ENABLE OUTPUT CSR TTYHN1: BIT #200,(R3) ; READY SHOULD HAVE COME UP BNE TTYHN0  ; MAY NOT HAVE ANY EFFECT ON DL11E'S BICB #TTHUNG,TTSTS2(R1); SAY HUNG FOR NEXT TIME TTYHN0: RTS PC  ; EXIT ;ROUTINE TO GET A CHARACTER FROM USER žIMITER IN READER BUFFER JSPTP = 2000   ;ROOM IN PUNCH BUFFER JSDTA = 1000   ;DECTAPE I/O IS DONE JSLPT = 400   ;ROOM IN LPT BUFFER JSMTA = 200   ;MAGTAPE I/O IS DONE JSCDR = 100   ;DELIMITER IN CARD READER BUFFER JSTIM = 40   ;WAITING FOR TIMER TO FIRE JSFIP = 20   ;WAITING FOR THE FILE PROCESSOR JSXXX = 10   ;WAITING FOR XX DEVICE JSNUL = 1   ;WAITING FOR A SMALL BUFFER JSALL = JSKEY+JSTEL+JSPTR+JSPTP+JSLPT+JSCDR+JSTIM+JSXXX+JSNUL Ÿî Ðö ÐP P t*ø�p ž. Ðt Ð* Ðø Ð� Ðp èZ hÚ �$,. Ðh ÐÚ Ð� Ð$ Ð,id Z $ &2B. ÐZ Ð$ Ð  Ð& Ð2 n àB¨š¢. Ðà ÐB Ш К Ð x ô¼Ü<M. Ðô м Ð ÐÜ Ð<¿‚ ° †€€ Ã. а І Ѐ Ѐ Ð ? ,dº‚ Ø€ ‚ Ø‹÷Ø€%‹÷ €¬%Z,Šº€�@ %€ €�@ŠË€�À Ë€ €�ÀŠ~@‡rx,°º~@‹ù~€%@‹ù\!†ˆ42}€s:€�W,Öº€ s:€ €�€Š¬:€˜@�@ŠA€…£Kð£,üº@‹ÿ£K &@‹ÿ£Kà8@Žþ£K09@Žþ£K K@Žþ£KÍ,"»ðK@Žþ¤K@‹õ¥K€˜@Žý¦K@‹õ¦Køf�@ð¼,H»³KÀ€ðµK€ €ðzQÀDŠ @R�@�@R@8�£,n»@ œS@‹óœS€%@‹ó®S@‚®S€ @‚�pT¶,”»€�€�pT@8€�€ ”T@‡p”T@‹ò”T€%@‹òOXÞ,º»€� OX€ €�‹OX€�ÀñOX€%€�¡BUFFER INTO R2 ;RAISE CPU PRIORITY TO 7 AND SAVE R3 ON SP STACK TTYS20: MOV (R5),R2  ;BUILD AN ABSOLUTE POINTER ADD R3,R2  ;TO THE CHARACTER WE WANT MOVB (R2),R2  ;AND GET THE CHARACTER BIS #PR7,@#PS ;DISABLE INTERRUPTS WHILE POINTERS MOVE JSR R3,@(SP)+ ;RETURN WITH R3 ON STACK ;INTERFACE FOR PROGRAMMED I/O TO AND FROM TTY ;ENTERED VIA .READ OR .WRITE ON A TTY CHANNEL TTYSER: CLR R2  ;SEE IF HE'S DETACHED BEFORE DOING TTY I/O .IFNZ DC11 ! DL11E BITB #TTWRC¢; CORE ALLOCATION BITS SWP = 100000 FRC =  40000 ; LEVEL THREE QUEUE (L3Q) TASK BIT ASSIGNMENTS QTIMER = 1  ;TIMER SERVICE TO BE RUN QFIP = 2  ;RUN FIP FOR THIS GUY QSCHED = 4  ;SCHEDULE SCHEDULER SCHEDULE BIT QSWAP = 10  ;RUN THE SWAPPER QFILE = 20  ;RUN THE FILE I/O DRIVERS QDTSYM = 40  ;RUN THE DECTAPE SYMBIONT QBUF = 100  ;BUFFER ALLOCATOR QBUFSM = 200  ;RUN THE SMALL BUFFER AVAILABLE ALERTER QDDCON = 400  ;DECTA£Ð—.,¬À…Ã1w E`ÃBã þvOq�.&ƒ ƒ üÃùÃeÿ@ÀeÅeMPPeBP$E.L ÐÈÅ€DÄ ‘ðÕ€ ‡`ÓÈ‹Ã.rÃÄåÄ e a AeM †¬‰a(ƒ !áÀå' t'ÖK+.˜÷ ¥åå‹ €ñ±vw ‡Â çà ÷€At:) [qOqQ.¾äÿ5"4÷ L÷ ÷ ÷ ÿÿ54|$ 4ðX†ãÐMóö"(4p.äÿU 4w RˆÿE&4! ÷ 0@0 ¤ÀñèY€ Â,à»[q`"€är€�@ är€ €�@Œêr€� êr€ €�Á,¼Œ©s€³s€ƒ€´s€w€�€ w€ e,,¼€�€‹;w€¿‹w€±–w€¸œw€ ðœw¾,R¼€%€ðœw@8€ðœwK€ ðžw€²¢w€´F,x¼y€ˆ~Ly�˜áy€»€ðây€»€ðãyð@ŒU,ž¼üãyh@Œûãyà@Œûãy &@Œüãyè&@Œûãy`'=,ļ@Œûäy@Œøåy€˜@Œúæy@Œøæyøf€�€ðñyt,ê¼€»€ðóy}€�Àð z@‚à z@‹ö z€%@‹ös,½Yz€ €�À”z€�À Ñd†‰ €�À €€ �Ö,6½À‹ €�@ñ €€%�@ñ¥,TTSTS2(R1);IS THE KB ENABLED? BNE TTYS04  ;NOPE .ENDC CMPB DDJBNO(R1),JOB ;IF THEY MATCH, O.K. BEQ TTYS02  ;IF MATCHED, THEN NORMAL TTYS04: MOV @JOBDA,-(SP) ;ELSE GET ADDRESS OF IOB CMP R1,@(SP)+ ;AND SEE IF IT IS CONSOLE BEQ TTYS03  ;IF SO, THEN MORE CHECKING MOV #DETKEY,@IOSTS ;IF NOT, THEN IMMEDIATE ERROR BR TTRTI3  ;AND FAST EXIT TTYS03: BIT #JFHIBY,@JOBF ;RUNNING "LOGIN" OR "LOGOUT"? BEQ IOTEST  ;IF NOT, THEN CONDITIONAL JOB KILL BR IOKIL¦PE I/O DRIVER COMPLETE QDACON = 1000  ;DECTAPE BLOCK ALLOCATOR COMPLETE QUECDR = 2000  ;CARD READER I/O DONE QMTACN = 4000  ;MAGTAPE BRING INTO CORE COMPLETE QMTADN =10000  ;MAGTAPE I/O DONE ;JCU DEFINITIONS JCOVFL =100000  ;OVERFLOW FLAG JCEATB = 40000  ;EAT BIT JCCATA = 20000  ;HELLO FAILED BIT JCLIVE = 10000  ;LINE LIVE BIT JCALLB =JCOVFL+JCEATB+JCCATA JCALL1 =JCEATB+JCCATA ; TRANSFER CONTROL BLOCK (XRB) ; USED BY USER I/O INTERFACE §  4æÎ:4œ,\"¶Rö‘. ÷ æ 0Â,÷ Þ¬€ÿ5 ¾‰Î¡ "´.0!pw ÷ ÷ Ú°•;w ²þ×÷ ÚÝ N_`ôþ_àKp€.V0Š:÷ F,÷ âÂÊ5@wð $å#X.|ÁÅõ‹ w÷‰w nþ#ì‰ð ÷÷ tÖsH:(àKp .¢×0 "0 0 60Š8ÿ5 4w <þHd 4”.Èö‰ðµ@°Š6w€— žwè— &P.îÂå&— *¨ñ�}€j˜@…x;¯1o,\½˜;¯B˜;¯Ì®•\¯E–—\¯XH”—i¯],‚½È}è—‹¯ÌÀ•³¯œ~œÖ¯œ€œÖ¯Š•0,¨½Ö¯xb›Ö¯®ªÖ¯Ð®ª×¯}ä—Ú¯êr(,νV—Þ¯p!ª—ü¯‚˜ü¯P‚À˜$°^^•l°„!~,ô½"—n°*›n°ð›n°è!›n°€%J›n°ð,¾À+›n°ˆ,›n°à.›n°K›n°ÈK›Ç,@¾n° N›n°&X›n°HX›n°�[›n°}S,f¾D›n°ð}P›n°€¢›q°€%ìšz°df«z°xdf,Œ¾d«é°¼RD–é°àyœ ±�¶ª ±Ÿ¶ª ±ü,²¾,˜¯ ±©L  ;IF SO, THEN UNCONDITIONAL KILL! TTYS02: MOV R0,R2  ;COPY LOW BYTE OF EMT MOVB TTLINE(R1),R0 ;GET TTY LINE # BIT R2,#2  ;WAS IT A READ OR WRITE? BNE TTYS10  ;SINCE READ =XXXXX2, IT WAS A READ .IFNZ JCUNUM .GLOBL JCUN2,BUFWAIT,SEXJOB,BRKOPR CMP R0,#JCUN2 ;JCU UNIT? BLO TTYS01  ;NOPE BIT #JCEATB,@TTILST(R0);DID HE EAT A LINE JUST NOW? BEQ TTYS01  ;NO MOV #JSTEL,R2 ;YES BR IOREDO  ;SO WAIT FOR TTY .ENDC TTYS01: TST (R5)+  ;ANYTHING ªTO THE FILE PROCESSOR XRLNK = 0  ;LINK WORD FOR RTS STRING PROCESSOR XRPTR = 2  ;POINTER WORD FOR RTS XRLEN = 4  ;STRING LENGTH FOR RTS XRBC = 6  ;BYTE COUNT FOR THIS OPERATION XRLOC =10  ;XRLNK TO UER BUFFER DISPLACEMENT XRCI =12  ;CHANNEL INDEX FOR OPERATION ;FILE CONTROL BLOCK (FCB) ;THE FCB CONTAINS SUFFICIENT DATA TO READ OR ;WRITE FILES WITHIN A LIMITED RANGE (7 CLUSTERS OF UP TO 256 SEGMENTS). ;FOR EACH OPEN FILE, THE FOLLOWING INFORMATION IS« ð ̉ÿ5û—%^øz ÄË ^8.ô ÷ ,!÷ DwÃÉà Élœ,f ï.:Ô T Äe‡Äe ‡!œ;÷ " ÿ5@Äõ"(g.`Äe ,&°,åö‹Ì•ÿÿU@ø‰”•´ $².†ÅB‚ u ‡ðU ðE0 0 40Š È.¬20 ÷&(ð&(0à(ð.*0à*ð‹6  &(&.Ï.Ò0Š30Š0 0 ÷ ð‹4,0 .|—Ø­1±˜qv­3±Ð4‚­<±L;œN,ؾD±Åž ­\±²—�±ˆ,rœ’±„:N—ѱ€3,þ¾¸—ѱ– ˜Õ±@Ql—Õ± gVªú±,€ –)²å~Ö$¿Z–§² qæ—£@ˆ1­LEFT TO OUTPUT? BEQ TTRTI3  ;NO, SO WE'RE DONE. EASY, WASN'T IT TST (R1)  ;HAS HE TYPED A ^O RECENTLY? BMI TTRTI3  ;YES, SO DON'T TYPE ANYTHING JSR PC,TTYS20 ;GET A CHARACTER FROM USER BUFFER JSR PC,CHOUTO ;GET RID OF THE CHARACTER JSR R3,TTYS30 ;PRIORITY =3, UPDATE BYTE COUNT + JSTEL+JSNUL ;SET TTY FLAG IF NECESSARY BR TTYS01  ;AND CONTINUE OUTPUTTING ;ROUTINE TO DROP PRIORITY, TEST FOR FULL BUFFER, AND PUT USER TO SLEEP ;WHEN MONITOR® RETAINED: FCIDX = 0  ;I/O HANDLER INDEX (DISK FILE HANDLER=0) FCSTS = 1  ;STATUS BITS FOR FILE FCBC = 2  ;SEGMENT COUNT FOR CURRENT XFER FCUNT = 3  ;FILE UNIT NUMBER FCSIZ = 4  ;# OF SEGMENTS IN FILE FCNLB = 6  ;NEXT LOGICAL BLK TO READ/WRITE FCFLB =10  ;FIRST LOGICAL BLOCK IN WINDOW FCLUS =12  ;FILE CLUSTER SIZE (MINUS 1) FCANB =13  ;NAME BLOCK OFFSET DIVIDED BY 2 FCDNB =14  ;PHYSICAL SEG # OF NAME BLOCK FCETC =16  ;SET BY USER TO RELATIVE CMA FOR XFER FCWN¯ø !÷ ”!$÷ š0Š4p÷ ð‹5c.°Š5 ,, ͉0Š5÷ übð‹2.D@pŠ2w肜ü °, ð 0,– ü Ó.j÷ Â(à° (Ÿ(‚œü °æ0о(( ü -.�2÷ „ð Øð‹8Õ̉0!œ÷ —¨.¶,C,Â.Ò · ,÷-(&÷ P.,"($&™.ܺp&ðUwò ð‹3¡,�O‚ä÷ €.á,Áð‹3ð ×ð ,,I.(° .TITLE DK.P11 DISK IO DRIVER(S) ;COPYRIGHT 1971,1972 BY DIGITAL EQUIPMENT CORP., MAYNARD, MASS. ;VERSION: 04A  EDIT: 19 ;DATE:  12-JUN-72 BY: MHB/YL .ASECT .IFNZ RF11 ! SWRF11 VECTOR 204,DFFINT,PR5 .ENDC .IFNZ RCRK11!RCRP11 VECTOR 210,DFFINT,PR5 .ENDC .IFNZ RK11 VECTOR 220,DKINT,PR5 .ENDC .CSECT DK .GLOBL DISK .GLOBL SATRX1,SATRX2,SATRX5,DSKLOD,FARCNT .GLOBL QUEUED,SA± BUFFER IS FULL. IF CHARACTER IS ACCEPTED, THE ;USER BUFFER POINTERS ARE UPDATED AND RETURN IS TO CALLER VIA R3 ;CALL JSR R3,TTYS30 ; + FLAGS TO CLEAR IN STATUS IF BUFFER IS FULL ; ...   ;RETURN IF CHARACTER ACCEPTED TTYS30: BIC #PR4,@#PS ;DROP DOWN TO LEVEL 3 AGAIN BCS TTYS31  ;DID MONITOR ACCEPT CHARACTER CMP (SP)+,(R3)+ ;YES, SKIP ARGS AND POP BAD R3 FROM STACK INC (R5)  ;UPDATE USER BUFFER POINTER DEC -(R5)  ;AND ADJUST USER BYTE COUNT RTS R3  ;RETURN ²D =20  ;UFD ADDRESS OF NEXT RETRIEVAL WINDOW ;THE HIGH BYTE OF THE FIRST WORD HAS THE FOLLOWING BIT ASSIGNMENTS: FCNLBB =100000  ;IF 1, THE 'FCNLB' IS BACKED UP FCFUFD = 40000  ;IF 1, THE OPEN FILE IS A UFD FCLOCK = 20000  ;IF 1, THE CURRENT BUFFER IS LOCKED FCNOEX = 10000  ;IF 1, THE FILE MAY NOT BE EXTENDED FCUPDT = 4000  ;IF 1, THE FILE IS OPEN FOR UPDATE FCWRIT = 2000  ;IF 1, USER MAY NOT WRITE FILE FCREAD = 1000  ;IF 1, USER MAY NOT READ FILE FCUSE = 400  ³S͉ð‹3üBÂ.à,*õƒ‡,ð° ‹ .¤.N!ÃˆË !Ë !(Ë !*Ë ! Ë á7  ˆT.tË ð((0à(ð.*0à*÷ 0Š4w6þ÷ è™(.g.šÂ(à° (ø÷ î÷ ®¿ .wþ÷ ÈÂ(àd(.&(.À° (ø÷ Îp÷ ŠÃ˜Ë pË p Ë p_ ˜8.æ*Ë p(Ë pË p— ° ÂåÃ. — 0 Âå°$÷ 0* ø °.2$ô÷ Æðµ°Š40 ðµ@´VREG,RESREG,RESRT4,QUEUER ;(MONITOR) .GLOBL DSDONQ,L3QUE,UNTCLU   ;(TABLES) .IFNZ RF11!RCRK11!RCRP11 .GLOBL DSKQUF,DSKGO .ENDC .IFNZ RK11 .GLOBL DSKQDK,RKREST,DSKGDK   ;(IF RK11) .ENDC FARCNT = 6  ;FAIRNESS COUNT ; COMPUTE SATRX1,SATRX2,SATRX5 WHICH ARE: ; SATRX1 = # INITIALLY FREE SECTORS ON SYSTEM ; SATRX2 = "SATSIZ" MAXIMUM SAT POINTER ; SATRX5 = SECTOR # FOR SPECIAL RC11 + ??? SYSTEMS µAND RESTORE SAVED R3 TTYS31: MOV (R3)+,R2 ;GET WAIT BITS TO SET CMP (SP)+,(SP)+ ;POP GOOD AND BAD R3'S FROM STACK IOREDO: SUB #2,6*2(SP) ;BACK UP HIS PC TO POINT TO EMT CALL BIS #JFPCB,@JOBF ;AND REMEMBER THAT IT'S BEEN BACKED UP!! MOVB JOB,R1  ;GET THE JOB NUMBER IOSWM: MOV R2,JBWAIT(R1) ;SET THE WAIT BIT CLR JBSTAT(R1) ;AVOID ^C PROBLEMS THAT MAY COME UP IOWAIT: JSR R5,SAVJOB ;DUMP THIS JOB FOR NOW JMP @SCHEDX  ;AND GO SCHEDULE US ;WE COME HERE IF HE WAN¶;IF 1, THIS USER GOT THE 1ST WRITE PRIVS ;FILE REQUEST QUEUE BLOCK (FIRQB) (PRONOUNCED 'FURK-BE') ;ALL REQUESTS FOR FILE PROCESSING ARE MADE BY SETTING THE NECESSARY PARAMETERS ;IN THE FIRQB, AND QUEUEING THE FIRQB IN THE FILE REQUEST QUEUE. ;ONLY RELEVANT PARAMETERS NEED BE SUPPLIED. FIP IS ENTERED WITH THE ADDRESS ;OF THE FIRQB IN R4, AND EXITED IN LIKE MANNER. ;THE JOB ISSUING A FIRQB SHOULD, WHENEVER POSSIBLE, BE POSITION INDEPENDENT, ;SINCE A FIRQB ALMOST ALWA·° !(.X÷ *0Š4ðµõð.÷ T á÷ 6¶.~wbý÷ Dp”.0Š/÷ ¤þ÷ ,.áá.¤,. ù÷ †þ÷ äaa÷ B‚`ƒLlŠ &Lp.Ê.Ë‹-,.I,á•ÀÿD %#.ðá•Áÿ÷ ´á’÷ ®,.,.É÷ rb.Q$,.!÷ €‡Î‰,!W!­.<$,/× (à ᜢ÷ R÷ :a÷ l ¢,.bDB`„ÄeÂe ʵ ÊÕÌJÒ3à Ì N.ˆ/ʵÌj‰À'Ì ¸ .IFNZ RF11 ; RF11 AS THE SYSTEM DISK... SATRX1 = 1024.*RF11-1 SATRX2 = 128.*RF11-1&177000+1000 SATRX5 = 0 DSKLOD = 177462 .ENDC .IFZ RF11 .IFZ RCRK11 ! RCRP11 .IFNZ RK11 ; RK11 AS THE SYSTEM DISK... SATRX1 = 4800.-1 SATRX2 = 600.-1&177000+1000 SATRX5 = 0 DSKLOD = 177406 .ENDC .ENDC .IFNZ RCRK11 ; RK11 + RC11 AS THE SYSTEM DISK... SATRX1 = 4800.-1 SATRX2 = 600.-1&177000+1000 SATRX5 = 4800. DSKLOD = 177406 .ENDC .ENDC ¹TS TO READ FROM THE TTY ;WE USE THE .READ TO INDICATE THAT HE WANT'S THE ^O FLAG CLEARED ;RTS SETS R4 TO THE NUMBER OF SECONDS TO WAIT ON INPUT TTYS10: BIC #NOOUTP,(R1) ;CLEAR THE NO OPUTPUT TO TTY FLAG TST (R5)+  ;CLEAR THE COUNT OF TRANSMITTED BYTES TTYS11: JSR PC,CHRUSR ;MOVE CHARACTER TO USER BUFFER BCS TTYS14  ;BUFFER'S EMPTY...TOO BAD INC -(R5)  ;UPDATE THE TRANSFER COUNT CMPB R2,#12  ;WAS IT A LINEFEED? BEQ TTYS17  ;YES, SO STOP FEEDING CHARACTERS CMPB ºYS REQUIRES AT LEAST ONE DISK ACCESS TO PROCESS. ;FIRQB ENTRIES INCLUDE THE FOLLOWING: FQQQ = 0  ;QUEUE WORD, SET BY FIP FQJOB = 2  ;2*JOB # ISSUING REQUEST FQFUN = 3  ;FUNCTION REQUESTED FQFIL = 4  ;2*CHANNEL NUMBER FQERNO = 4  ;ERROR MESSAGE CODE AND TEXT BEGIN FQPPN = 6  ;PROJECT-PROGRAMMER NUMBER FQCOM3 = 6  ;INTERNAL DATA FQNAM1 =10  ;2 WORD FILENAME IN RADIX 50 FQEXT =14  ;.EXT IN RADIX 50 FQSIZ =16  ;SEGMENTS IN FILE OR SEGMENTS TO EXTEND FQCOM2 =16  »ö$扬­,Wá•— º.®÷ ø! ÷ ìÂ.ð `Ê ’  ð € .¤.Ô8á•3÷ Ì÷ ´÷ Àwœ‚ ‚ , î! .ú¡ÄBÂEüÿ‚`‚`CÃEüÿƒ`œ6¡ ¡Î  6“.  ¡1 ¡1 Ä çQ$ÎÑ.F؉Â.¡’÷ Z÷ BÑ ÇÙ‰,,M .°.lÑ ‡W"Ñ úá•¿ÿw*͉‰ Â.Ò ¡J J �  .˜.’JT‡ œ3 µ@ µl$Ãeð‡[.¸Ó‹ûµ¼;DISK QUEUEING AND DRIVERS ;THERE ARE 10. POSSIBLE RSTS-11 SYSTEM CONFIGURATIONS ;  RF11 RK11 RP11 RCRK11 RCRP11 ;RF11 ONLY # 0 0 0 0 ;RF11+RK11 # # 0 0 0 ;RF11+RP11 # 0 # 0 0 ;RF11+RK11+RP11 # # # 0 0 ;RC11+RK11 0 # 0 # 0 ;RC11+RP11 0 0 # 0 # ;RC11+RK11+RP11 0 # # # 0 ;RK11 ONLY 0 # 0 0 0 ;RP11 ONLY 0 0 # 0 0 ;RK11+RP11 0 # # 0 0 DISK: MOVB #-5,DSQERR(R4) ;SET RETR½R2,#32  ;WAS IT A ^Z? BEQ TTYS17  ;YES--PASS IT TO HIM AND QUIT CMPB R2,#33  ;WAS IT AN ALTMODE? BEQ TTYS17  ;YES--STOP NOW CMP -2(R5),(R5)+ ;ARE WE AT END OF BUFFER? BGT TTYS11  ;STILL ROOM FOR MORE, SO KEEP AT IT TTYS17: BICB #TTDDT,TTSTS2(R1);GET HIM OUT OF DDT SUBMODE TTRTI3: JMP RTI3  ;BACK TO THE USER ;COME HERE WHEN ENTERING KEYBOARD WAIT. IF THIS IS A LOCAL TTY, AND ;READER IS NOW IDLE, THEN START IT UP, IN CASE TAPE IS IN READER¾;INTERNAL RETURN ADDRESS FQNAM2 =20  ;3 WORD NEW FILE NAME .EXT IN RADIX 50 FQSWIT =20  ;OPEN FOR OUTPUT SWITCH FQMODE =22  ;MODE INDICATOR FQCOM1 =26  ;INTERNAL RETURN DISPATCH FQPROT =27  ;NEW PROTECTION CODE (LOW BYTE -1 IF REAL) FQDEV =30  ;2 BYTE ASCII DEVICE NAME FQDEVN =32  ;1 BYTE UNIT NUMBER (HIGH BYTE -1 IF REAL) FQCLUS =34  ;FILE CLUSTER SIZE FOR FILE CREATES FQCOM =34  ;DDB LINK ADDRESS FQFUN1 =36  ;CHAINING FUNCTION FQFUN2 =37  ;INTERNAL EXTRA FUNC¿ÃñµÓ l$î͉W"–)ÞÑ ‡B‚`BdBd‚œö�¡‡Î‰ÿÿÿÿÝöÍ.ÅEøÿp�$€å‰ÿÿÿÿÿ¬Àð‹7í È.&,, ‡ðµ@ðµÎep.L‡÷  ¬Àù,ó,#ñî÷ ÞÿK.rë‡÷ z¬¤æ!áÂ0¢"†ÊåZ‡Õ.˜Â,Š$ƒ¡âe‡ÉÏ ° ° "Â$Â*ß.¾¢"‡×‰Ê Z”‡Â& Š$‚≡–¢ ‡Â (®.äð•7;Ê5ÊU@ð‹6 0œ30ÀY COUNTER TO 4 RETRIES .IFNZ RK11!RP11 ;***** IF NOT ONLY RF11 .IFNZ RK11  ;***** IF RK11 .ENDC .IFNZ RF11  ;***** IF RF11 TSTB DSQUNT(R4) ;CHECK THE UNIT FOR 0 .IFNZ RK11  ;***** IF RK11 BNE DISKDK  ;IF NON-0, THEN RK11 DISK .ENDC .ENDC .IFNZ RCRK11!RCRP11 ;***** IF RC11 .IFNZ RK11  ;***** IF RK11 CMP DSQDMA(R4),#4800.;CHECK TO SEE IF RC11 ADDRESS BLO DISKDK  ;IF <4800., THEN RK11 DISK .ENDC .ENDC .ENDC .IFNZ RF11!RCRK11!RCRP11 Á. ;IF A JOB GOES INTO WAIT, AND IS IN EDITOR MODE (PR1 IN STATUS), AND IS ;NOT LOGGED IN (JFNOPR BIT SET IN JOBF), THEN THE JOB IS WIPED OUT. TTYS14: BITB #TTDDT,TTSTS2(R1);SEE IF IN DDT SUBMODE BEQ TTYS18  ;HE'S NOT--NORMAL RULES PREVAIL TST -(R5)  ;HE IS--DID HE GET AT LEAST ONE CHAR? BNE TTYS17  ;YES--BACK TO JOB, REGARDLESS OF DELIMITERS TTYS18: .IFNZ JCUNUM CMP R0,#JCUN2 ;JCU? BLO NOJCU  ;NOPE BIT #JCLIVE,@TTILST(R0);ALIVE? BEQ TTYS19  ;NOPE MOV #JÂTION ; FIRQB FUNCTION DEFINITIONS. ; THIS TABLE CONTAINS THE FIRQB FUNCTION CODES TO BE LOADED INTO ;THE "FQFUN" FIELD OF A FIRQB USED IN A FIP CALL. A MACRO IS USED TO ;DEFINE THESE ITEMS TO ALLOW ADDITION WITHOUT REGARD TO ORDER. ;THE FUNCTION CODE THEN IS USED TO DEFINE THE FUNCTION'S POSITION ;IN A TABLE USED BY FIP TO DO THE CALLING. ; THE MACRO TO DEFINE A FIRQB FUNCTION: .FQ0 =-6  ;MINUS 2*NUMBER OF RESIDENT FUNCTIONS .FQ =0  ;SET THE COUNTER .MACR FQÃ÷ D (àKp . w òö€ú0Š6‡ß þÿ? Àw $Ák"î`(Ð.0 ÂJ …„ƒ`ÔÔƒäÔÅ ø‡ d,72« J —.V È! ÷ ‰ ,ù, /÷ ù÷ Ðwz.| ÷ rÿ°Š8— � — ”Â5÷ `þÊ.¢ $¡œÈ ÷ ÿ!Ée÷ ðþ÷ "÷ 4ÿ°Š6÷ ³ È .È Ìø0Š8‡ð í‰Ì‰°Š:÷ à÷ á•Øÿ÷ ¾þa.î ! ÷ ´þ÷ ˆÂ¡æ ,À,b,Œ �. ωæÄ JSR R1,QUEUED ;CALL DISK QUEUER FOR THE + DSKQUF  ;FAST DISK QUEUE    ;AND FALL INTO "DSKGO" DSKGO: MOV R1,-(SP) ;SAVE R1 AND MOV R2,-(SP) ;R2 ON THE STACK MOV DSKQUF,R4 ;GET THIS REQUEST ADDRESS ADD #DSQDMA,R4 ;POINT TO THE SEGMENT NUMBER MOV (R4)+,R2 ;GET THAT NUMBER .IFNZ RCRK11 SUB #4800.,R2 ;CORRECT FOR RC11+RK11 .ENDC .IFNZ RF11 ! SWRF11 ;***** IF RF11 MOV #RFCLR,@#RFCS ;CLÅSKEY,R2 ;WAIT FOR KB BR IOREDO  ;AND GO WAIT .ENDC NOJCU: TST R4  ;IS THE WAIT 0? BEQ .+6  ;IF SO, THEN LEAVE CLOCK ALONE MOV R4,TTYCLK(R0) ;TIME OUT TTY WAIT TTYS16: MOV TTILST(R0),R4 ;GET ADDRESS OF INPUT CSR .IFNZ DC11 ! DL11E ;ONLY TEST IF REMOTES EXIST CMP R0,#KL11+1*2 ; DATASET ? (DC OR DL) BHIS TTYS15  ; YES, BRANCH. .ENDC BIT #4000,(R4) ;CHARACTER ALREADY COMING IN BNE TTYS15  ;IF SO, THEN DON'T KILL IT INC (R4)  ;IF NOT, START ONE ÆDEF FUN FUN'FQ =.FQ+.FQ0   .FQ=.FQ+2 .ENDM ; DEFINE THOSE FUNCTIONS ; FILE OPERATIONS FQDEF WIN ;TURN A WINDOW ON OPEN FILE (INTERNAL) FQDEF EXT ;EXTEND AN OPEN FILE FQDEF EXC ;EXTEND A CLOSED FILE (INTERNAL) FQDEF GAR ;GARBAGE COLLECT USER'S AREA FQDEF CLS ;CLOSE AN OPEN FILE FQDEF OPN ;OPEN A FILE FQDEF OPC ;OPEN A FILE AFTER CREATING/EXTENDING (INTERNAL) FQDEF CRE ;CREATE AND EXTEND AND OPEN A FILE FQDEF CRT ;CREATE AND EXTEND AND OPEN .TMP ÇWXÄCâDd,Á$©Î¤•‡¡•÷   Â.: pþƒ ä�Ãä�÷ 8÷ ¨þ¬€ 0 á•×ÿ÷ Lþ¸.` !0 "w w4÷÷ ž÷÷ |þÂE¯ÿÂ%³.† щá6÷ ä! ÷ Þá•Üÿ÷ Ø!!p a.¬ ÷ Â÷ Lýœ$ ¡�÷ ¶0Š90 ÷ ¢ý?,!.Ò , >щ÷ þ,%œ— �— ¶.ø „Ò‰°Š9¬9Ù‰ à à ƒÜ= ð != "= …. ÷ Ðý,,ÖÒ‰ð‹9÷ 2ðŠ9).D ú÷ ýÅÁeÅ•÷ Žpp’Ñ ÷ ZÅ•iÈEAR THE RF11 CONTROL MOV #RFDAE,R1 ;POINT TO HARDWARE ADDRESSES SWAB R2  ;MULTIPLY BY 256 CLR (R1)  ;CLEAR ENTENDED ADDRESS MOVB R2,(R1)  ;AND SET HIGH ORDER ADDRESS CLRB R2  ;NOW GET LOW ORDER ADDRESS MOV R2,-(R1) ;AND LOAD THE LOW ORDER ADDRESS .ENDC .IFZ RF11  ;***** IF RC11 .IFZ SWRF11 ASL R2  ;MULTIPLY BY 8 SINCE ASL R2  ;THE RC11 DISK WORKS IN ASL R2  ;32 WORD BLOCKS MOV R2,@#RCDA ;SET THE RC11 DISK ADDRESS MOV #RCBA+2,R1 ;SEÉIF POSSIBLE TTYS15: .IFNZ KBXON BITB #TTXOFF,TTSTS3(R1);WAS THERE AN XOFF SENT? BEQ TTYS19  ;IF NOT, THEN NO XON SHOULD BE SENT MOV #021,R2  ;IF SO, THEN GET THE XON CHARACTER JSR PC,CHO07 ;AND SEND IT BICB #TTXOFF,TTSTS3(R1);AND SAY THAT XON HAS BEEN SENT .ENDC TTYS19: MOV #JSKEY,R2 ;GO INTO DELIMITER WAIT IOTEST: BIT #JFNOPR,@JOBF ;IF HE'S NOT LOGGED IN, WIPE OUT JOB BEQ IOREDO  ;HE IS LOGGED IN BIT #PR1,7*2(SP) ;BUT ONLY IF EDITOR CALLED FOR KEYBOARD IOÊFILE WITH UNIQUE NAME FQDEF DLN ;DELETE A FILE BY NAME FQDEF REN ;RENAME AN EXISTING FILE ; ACCOUNT RELATED COMMANDS FQDEF LIN ;LOG A USER IN (UUO-INTERNAL) FQDEF BYE ;LOG A USER OUT (UUO-INTERNAL) FQDEF DIR ;GET DIRECTORY INFORMATION (UUO) FQDEF PAS ;CREATE A NEW USER ACCOUNT (UUO-INTERNAL) FQDEF DLU ;DELETE USER ACCOUNT AND ALL FILES (UUO-INTERNAL) FQDEF RAD ;READ ACCOUNTING DATA (UUO-INTERNAL) FQDEF CPK ;CLEAN UP A DISK PACK FQDEF CHU ;CHANGE PASSWORË.j ÷ váð•À÷ ÷÷ Èð•Ýÿ;ð‹:ω .� ð‹: ÷ ºüì‰÷ >÷ àý‡÷ ,ù‚ì‰÷ @ý÷ ?.¶ ZöÔ•â÷ :ü$¡œâ ÷ Úü! Ée÷ n â éÜ Êüwü£¤¥Þ æ ø.æ Ät‘  `Ò €4Š Ó‰ , Z‰À†(y.  `ÊÒí  ‡÷ rö÷ ÊE÷ Öû&á �.2  l$— D¡œF wfü¦³²§Â"¡”¡”ÉBdÉ YF "=.X €Ñ ‡¡”¡”ÉD’¤ƒ’¦ ƒ¬È ‚ ûƒœÍ &#ÌT THE HARDWARE POINTER .ENDC .ENDC MOV (SP)+,R2 ;RESTORE R2 NOW DSKGO6: CLR -(SP)  ;NO SPECIAL FORM FOR FUNCTION DSKGPP: MOV (R4)+,-(R1) ;SET THE CORE ADDRESS MOV (R4)+,-(SP) ;GET SECTOR COUNT (+) SWAB (SP)  ;TIME 256. FOR WORDS CLRB (SP)  ;MINUS THE UNIT NEG (SP)  ;NEGATED MOV (SP)+,-(R1) ;AND SET... MOVB (R4)+,(SP) ;SET THE FUNCTION CLRB (R4)  ;CLEAR THE FAIRNESS COUNT MOV (SP)+,-(R1) ;LOAD FUNCTION AND GO MOV (SP)+,R1 ;AND FINALLY RESÍ BEQ IOREDO  ;WASN'T EDITOR--MUST BE LOGIN CUSP IOKILL: BIS #JFKILL+JFABRT,@JOBF ;SAY HE WANTS TO DIE BR IOWAIT  ;AND FORCE A SCHEDULE ; .SLEEP EMT SLEEP.: MOVB JOB,R1  ;HANDLE .SLEEP EMT---------------------- MOV (SP),JOBCLK(R1) ;USER SUPPLIED # SECONDS IN R0 BEQ TTRTI3  ;IF SLEEP(0) THEN NO SLEEPING! MOV #JSTIM+JSKEY,R2 ;WAIT UNTIL TIME IS UP OR DELIMITER SEEN BR IOSWM  ;SET THE WAIT MASK ;ROUTINE TO MOVE A CHARACTER FROM MONITOR ÎD FOR AN ACCOUNT (UUO-INTERNAL) ; COMPILER AND RUN-TIME SUPPORTED COMMANDS FQDEF CAL ;ALLOCATE USER AREA FQDEF CSI ;CALL CSI TO PARSE DEV:FILE.EXT (CHAIN?) FQDEF CAT ;INITIAL USER AREA SETUP ; FAVORS FQDEF SOK ;LOOK FOR *.BAS NON-EXISTANCE FQDEF UNS ;UNSAVE *.BAS FQDEF OLD ;LOOK FOR *.BAS EXISTANCE FQDEF RUN ;LOOK FOR *.BAC EXISTANCE ; DECTAPE COMMANDS FQDEF DTA ;ALLOCATE BLOCKS FOR DTA OUTPUT FILE (INTERNAL) FQDEF DTE ;DECTAPE SYMBIONT ERROR PROCEÏÈ &Í ü.~ &—#ŽcÉ ƒ ƒe— ‚áÂå¡”¡”Éä.¤ B`‚œ ÂEüÿƒœÍ CdÃœÒ ‚Ê�a¢¨ÈΉ£¤RÍ Ò .Ê ¥¬­ 6¦©²´³µ§ª¨«]`c®°·˜.ð ¹¶¸®°®°^ad¯±»½º¼¯± ¯±_be> $ ¸.$ ÷ êô0@̕ᕠ÷ <ðU÷ 2ûCB`‹  ¶RöÉ.J ¦ B`‚lÂ`¡’æ÷ ƒƒ Î óV$÷  (òèyQ.p äÉÏ ÷ :ûà ÷ Z÷-" !÷ BC ÷`ÐTORE R1 RTS PC  ;AND EXIT .ENDC ;RK11 DISK DRIVER .IFNZ RK11  ;***** IF RK11 DISKDK: JSR R5,SAVREG ;SAVE ALL REGISTERS MOVB DSQUNT(R4),R2 ;AND GET THE UNIT NUMBER .IFNZ RF11  ;***** IF RF11 DEC R2  ;CORRECT UNIT NUMBER .ENDC MOV R2,DSQOUN(R4) ;SET PHYSICAL UNIT NUMBER ADD R2,DSQOUN(R4) ;AND MAKE IT TIMES TWO ASR R2  ;ROTATE UNIT NUMBER ROR R2  ;THROUGH THE CARRY BIT ROR R2 ÑCHAIN BUFFER TO USER BUFFER ;CALL WITH R1 POINTING TO DDB ;  R3 POINTING TO RUN TIME LINK BLOCK ;  R5 POINTING TO BUFFER POINTER ;IF CHARACTER IS TRANSFERRED, ; C= 0 ON RETURN AND BUFFER POINTER IS UPDATED ;ELSE C= 1 AND BUFFER POINTER IS UNALTERED CHRUSR: MOV R4,-(SP) ;SAVE TIME OUT VALUE IN CASE WE NEED IT BIS #PR7,@#PS ;PRIORITY 7 WHILE PLAYING WITH POINTER JSR R5,FETCH ;GET THE CHARACTER + DDINP+FP ;FROM THE INPUT BUFFER BIC #PR4,@#PS ;AND DROP DOWN TO LEVEL 3 AGÒSSOR (INTERNAL) FQDEF DTL ;LIST A DECTAPE DIRECTORY (INTERNAL) FQDEF DTK ;KILL A DECTAPE FILE (INTERNAL) FQDEF DTK1 ;INTERMEDIATE "KILL" FUNCTION (INTERNAL) FQDEF DTN ;RENAME A DECTAPE FILE (INTERNAL) FQDEF DTR ;READ DECTAPE DIRECTORY ONTO DISK (INTERNAL) FQDEF DTS ;SHUT A DECTAPE FILE (INTERNAL) FQDEF DTO ;OPEN A DECTAPE FILE (INTERNAL) FQDEF DTZ ;DECTAPE ZERO FUNCTION (INTERNAL) ;MAG TAPE COMMANDS FQDEF MTO ;OPEN MAGTAPE FILE (INTERNAL) FQDEF MTC ;CLOÓÃ" _.– "à ÅD5! ÷ ôDaÂm"Œ˜Âí"Z" ßfa""("û.¼ µ ŵ à æ‡wxú÷ úú÷ öúɇ!   Æ.â ÷ Âúðå"0 ‡÷ Üÿp ‡ ï.€†ˆ‚¡ŒŽž’•˜›?£�‡‰ƒ¢�áâãàä<%.å�Ÿ“–™œ¤é� ”—š�¥f L�.L#7ëíïñìîðòóôõöØÚ! ÷ ú!¬€,#7A.rõ÷ Ž÷ îù,f,î‰.˜f÷ Ô ;AND INTO THE HIGH ORDER ROR R2  ;3 BITS OF THE REGISTER MOV DSQDMA(R4),R0 ;NOW GET THE DISK SEGMENT NUMBER BR DISKK1  ;AND GO FIND THE REAL ADDRESS DISKK2: ADD R0,R2  ;ADD INTO THE REAL DISK ADDRESS ASR R0  ;DIVIDE THE ANSWER BY ASR R0  ;4 SO WE CAN ADD R1,R0  ;ADD THE REMAINDER TO IT DISKK1: MOV R0,R1  ;COPY THE NUMBER BIC #-17-1,R1 ;AND DIVIDE BY 16; GET REMAINDER BIC R1,R0  ;AND THE EXACT ANSWER BNE DISKK2  ;IF NON-0 THEN ADD IT IN ANDÕAIN BCS CHRU01  ;MONITOR BUFFER IS EMPTY CHRU02: MOV (R5),R4  ;GET USER RELATIVE BUFFER POINTER ADD R3,R4  ;CONVERT TO ABSOLUTE POINTER (C=0) MOVB R2,(R4)  ;STORE THE CHARACTER INC (R5)  ;UPDATE BUFFER POINTER .IFNZ JCUNUM CMP R2,#15  ;CR? BNE CHRU03  ;NOPE CMPB (R1),#TTYHND ;KEYBOARD TYPE? BNE CHRU03  ;NOPE CMP R0,#JCUN2 ;JCU? BLO CHRU03  ;NOPE BIS #JCEATB,@TTILST(R0);SET EAT BIT INCB BUFWAIT  ;ONE MORE WAITING CHRU03: CLC ÖSE MAGTAPE FILE (INTERNAL) FQDEF MTU ;OPEN UTILITY ROUTINE (INTERNAL) ;ADDITIONAL COMMANDS FQDEF ZER ;ZERO A USER'S DISK AREA (UUO-INTERNAL) FQDEF ATT ;ATTACH TO A DETACHED JOB (UUO-INTERNAL) FQDEF DET ;DETACH FROM A JOB (UUO-INTERNAL) FQDEF MNT ;MOUNT A DISK PACK ON-LINE ; SYSTEM RELATED COMMANDS FQDEF UUO ;SYSTEM CALL TO FIP (UUO ONLY) FQDEF ERR ;READ AN ERROR MESSAGE FROM (UUO) FQDEF ASS ;ASSIGN DEVICE TO USER (UUO) FQDEF DEA ;DE-ASSIGN A ×hf‰ ßf¦‰ É ‰ áÿá‡BƒI.¾÷ „¡! ùá‡÷ |ù÷ á÷ ðUƒku ôÅž"C µW&ôÅž .ä÷ dù! ‡Ñ ÷ ‚ùà‰wöù÷ Nùøá‰÷ êùø. ¬€!‡Ô‰á• á•á• á•ßÿ+.0á•÷ rù$á•Þÿá•1÷ bù÷ ùð¥€à.V! ÷ Jùð¥¡á•×ÿ÷ <ù÷ €ù÷ ’ÿ÷  (œ,Xœ.|Éí÷ $ù÷ lù& ÷ Pþ÷ F*ƒ÷ êýýÎ �W¤ È.¢À÷ ù÷ úø÷ æ÷ &þñÖ wÐû€÷ ÞÕ.ÈàðeØ LOOP CMP R1,#12.  ;CHECK THE REMAINDER FOR OVERFLOW BLT DISKK3  ;AND IF NEEDED, THEN ADD #4,R1  ;CORRECT THE REMAINDER SO WE CAN DISKK3: ADD R1,R2  ;ADD IT TO THE REAL DISK ADDRESS MOV R2,DSQPDA(R4) ;NOW SET THE REAL PHYSICAL ADDRESS BIC #-17740-1,R2 ;CLEAR ALL BUT THE CYLINDER NUMBER MOV R2,DSQOPT(R4) ;AND PUT INTO OPTIMAZATION WORD JSR R5,RESREG ;GET OUR REGISTERS BACK JSR R1,QUEUED ;AND QUEUE THE REQUEST INTO + DSKQDK  ;THE RK11 DISK QUEUE    Ù.ENDC CHRU01: MOV (SP)+,R4 ;RESTORE R4 RTS PC  ;RETURN ;------------------FIELD TTY INTERRUPTS-------------------------------- .IFGE DC11+KL11+DL11E-16. TTIIN0: MOV @#PS,-(SP) ;SAVE LINE NUMBER -16. ADD #16.,(SP) ;NOW CORRECT IT BR TTIIN1 TTOIN0: MOV @#PS,-(SP) ;SAVE LINE NUMBER -16. ADD #16.,(SP) ;NOW CORRECT IT BR TTOIN1 .ENDC TTIINT: MOV @#PS,-(SP) ;SAVE THE LINE NUMBER TTIIN1: MOV #TTIN,-(SP) ;ADDRESS OF TTY INPUT ÚDEVICE (UUO) FQDEF RST ;RESET ALL I/O CAHNNELS EXCEPT 0 FQDEF DAL ;DE-ASSIGN ALL DEVICES, EXCEPT CONSLE TTY (UUO) ;.FQ HAS TABLE SIZE COMPUTING FACTOR (IN BYTES) ;.FQ0 HAS NON-RESIDENT OFFSET IN TABLE ;.FQ0 AND .FQ CANNOT BE REUSED ;I/O ERROR CODES-- SET IN JDIOST FOR EACH I/O OPERATION (@IOSTS) BADDIR = 2  ;DIRECTORY SCREWED UP OR ILLEGAL DIRECTORY DEVICE BADNAM = 4  ;BADLY FORMED FILE NAME INUSE = 6  ;FILE OF SAME NAME IS IN USE NOROOM =10  ;DIRÛ"÷ Ò!" áÀÖw 6Z‡Õ‰1ì"Z  Zh.îw *R1"÷ 1l"q Þ ðe"O  R†.1ì"Ž ¶÷ Òøw Úï ß÷ òûa÷ rø÷ ž�.:†Ó�Ò± ±ŠÞ ÷ F÷ l÷ ˜ý° †.`á•àÿ÷ Døá•êÿ÷ Îñ ÷ ^â÷ ʱ ÷ ¼.†P÷ ²á•2÷ øÞ � 樦¦wø!"Ã7 ¨&.¬^° C á’÷ ò÷÷ ê÷÷ ý°Š7÷ Ìñ0Š7,&¤ ^€.ÒЉfŬÅp•W!p¥øu 6Ü;AND FALL TO "DSKGDK" DSKGDK: MOV #DSKQDK,R4 ;SET UP A POINTER TO ARM POSITION JSR PC,DSKOPT ;AND FIND THE BEST REQUEST TO DO MOV DSKQDK,R4 ;GET THE BEST REQUEST'S ADDRESS MOV #RKDA,R1 ;NOW SET THE HARDWARE POINTER DSKGK1: MOV DSQPDA(R4),(R1) ;AND SET THAT ADDRESS ADD #DSQCMA,R4 ;POINT R4 TO THE OTHER PARAMETERS .IFNZ RF11!RCRK11!RCRP11 BR DSKGO6  ;AND CONTINUE .ENDC .IFZ RF11!RCRK11!RCRP11 DSKGÝPROCESSOR BR TTPOLL  ;NOW PICK UP THE LINE # TTOINT: MOV @#PS,-(SP) ;SAVE LINE # TTOIN1: MOV #TTOUT,-(SP) ;AND PROVIDE ADDRESS OF OUTPUT PROCESSOR ; BR TTPOLL  ;PICK UP LINE # ;ONCE UPON A TIME, TTY'S WERE POLLED, ERGO THE NAME. NOW THE LINE NUMBER ;FOR EACH TTY IS STORED IN THE STATUS WORD PART OF ITS VECTOR. WHEN IT ;INTERRUPTS, THE VECTOR IS LOADED INTO THE PSW, AND THE NUMBER IS EXTRACTED BY TTPOLL. TTPOLL: JSR R5,SAVREG ;SAVE R5-R0 MOV 7*2(SPÞECTORY IS FULL OR SAT IS EMPTY NOSUCH =12  ;FILE OR UFD DOES NOT EXIST NODEVC =14  ;NO SUCH DEVICE ON SYSTEM NOTCLS =16  ;CAN'T OPEN ALREADY OPEN CHANNEL NOTAVL =20  ;DEVICE NOT AVAILABLE TO USER NOTOPN =22  ;TRYING TO OPERATE ON UNINITTED CHANNEL PRVIOL =24  ;PROTECTION VIOLATION EOF =26  ;END OF FILE ON READ/WRITE ABORT =30  ;OPERATION ABORTED DATERR =32  ;DATA ERROR ON DEVICE HNGDEV =34  ;HUNG DEVICE FOR JOB HNGTTY =36  ;HUNG TTY FOR JOB (WAIT EXHAUSTED) FIEß.ø…¯7Üþÿ‡ÀŽfÁ# d ÅÌ�÷ Ö÷¹  þÿå.! ! ! ÷ Beð5|± ¡’!œ…÷ _  xQc4.D÷ Øú÷ Òú÷ awN÷ðp’w÷ ò$(U(CyC.jÁ÷ ðñð‡÷ Tÿw –ÿX÷ ¾þ : cË"Xe.�w †ÿT‡Õ‰÷ €þá• ÷ ÷÷ 4ü÷ Öûý÷ ^ðÌ•7 T†.¶Þ ÷ RðÌÕw Rÿ\†÷ $÷÷ Äþw°ù€÷ ä \p.Ü÷0Š1ƒÃEüÿÜ-ð°pŠ1ƒƒ ƒ ÃEüÿðàO6: CLR -(SP)  ;NO SPECIAL FORM FOR FUNCTION DSKGPP: MOV (R4)+,-(R1) ;SET THE CORE ADDRESS MOV (R4)+,-(SP) ;GET SECTOR COUNT (+) SWAB (SP)  ;TIMES 256. FOR WORDS CLRB (SP)  ;MINUS THE UNIT NEG (SP)  ;NEGATED MOV (SP)+,-(R1) ;AND SET... MOVB (R4)+,(SP) ;SET THE FUNCTION CLRB (R4)  ;CLEAR THE FAIRNESS COUNT MOV (SP)+,-(R1) ;LOAD THE FUNCTION AND GO MOV (SP)+,R1 ;AND FINALLY RESTORE R1 RTS PC  ;AND EXIT .ENDC .ENDC á),R0 ;GET THE SAVED PROCESSOR STATUS BIC #-37-1,R0 ;NOW GET ONLY THE LINE NUMBER ASL R0  ;NOW IS LINE NUMBER TIMES 2 MOV DEVTBL(R0),R1 ;GET THE TTY DDB MOV #TTILST,R4 ;BUILD POINTER INTO TTILST ADD R0,R4  ;THIS LINE'S ENTRY MOV (R4)+,R3 ;GET HIS INPUT CSR ADDRESS MOV (R3)+,R2 ;AND GET THE CONTENTS OF CSR .IFNZ DC11 ! DL11E ;CONDITION ON DC11'S OR DL11E'S BPL TTP03  ;PLAIN ORDINARY DATA INTERRUPT TST (R3)  ;MAKE SURE HE INTERRUPTS AGAIN .IF NZ DâXST =40  ;FILE ALREADY EXISTS--DELETE IT FIRST DTOOOF =42  ;TOO MANY OPEN FILES ON UNIT BADFUO =44  ;ILLEGAL FIP UUO FOR JOB INTLCK =46  ;INTERRLOCK ERROR WRGPAK =50  ;WRONG DISK PACK MOUNTED NOTMNT =52  ;NO DISK PACK IS MOUNTED ON DRIVE PAKLCK =54  ;DISK PACK IS LOCKED OUT BADCLU =56  ;BAD CLUSTER SIZE SPECIFIED PRIVAT =60  ;PRIVATE PACK ILLEGALLY REFERENCED INTPAK =62  ;NON-CLEARED UP PACK MOUNTED BADPAK =64  ;BAD DISK PACK DETKEY =66  ;I/O TO DETACHED KEYBã ¸.Ü¡Œð°‡@Á0Š1Î5 ‰ À.(pŠ1Ö5ð‹1â‰C•ð‹1Å`Å ƒƒ ÃE-.NùÿÇ`Í÷ zþápŠ1Þ CÕð Ù÷& Ä.tN•ŽŒ¯‡ÎŒÎaÞ ø÷ nö÷ Æ:ã‰÷ ¾6ä‰! I•c.šI”*!‡ðU ‡¦v¶ C“Å`‡! I•Â.À‡Ñ ‡! ‡f÷ 0õ!$N– E …–%w¤ü÷ ¤.æ ö÷ ¢ÿ á•¿ÿf÷ ´õ…,&‡!&iðµÈ. ø≖%÷ pø÷ öîÌ• ‡ðU@‡……wô¤.2wa¯^afkQp•0‡ä .IFNZ RK11!RP11 ; RK11 AND RP11 SEEK DISTANCE MINIMUMIZER ;CALL: JSR PC,DSKOPT (CLOSED) ;  R4- POINTS TO CONTROL TABLE: ;   WORD 1 - DISK QUEUE ROOT WORD ;    2-N - ARM POSITION TABLE, 1 PER DRIVE ;  DSQFAR- FAIRNESS COUNT (BYTE) ;  DSQOUN- DRIVE(UNIT) NUMBER X 2 (WORD/BYTE) ;  DSQOPT- SEEK ADDRESS FOR ABOVE DRIVE (WORD) ;BACK: RETURNS AT INST FOLLOWING CALL. ; R0-R5- UNCHANGED ; TOP OF STACK HAS CONåL11E  ;DL11E'S ARE WEIRDO INTERFACES CMP R0,#KL11+DC11+1*2; IS IT A DL11E ? BLO TTPDC  ; BRANCH IF NOT BIS #146,-(R3) ;SET IE'S+REQ TO SEND+DATA TERM RDY ASL R2  ;SHIFT RING BIT INTO BIT INTO BIT 15 BMI TTMRNG  ;BRANCH ON RING-ELSE CARRIER XITION BIT R2,#20000 ;CARRIER COMING OR GOING ? BEQ TTP06  ;IT WENT.GIVE IT 2 SECONDS TO COME BACK BR TTP05  ;COMING. FIX HIM UP .ENDC    ;END DL11E CONDITIONAL .IF NZ DC11  ; TTPDC: BIS #101,-(R3) ;MAKE æOARD CTRLCE =70  ;^C PROGRAM ABORT SATTBD =72  ;CORRUPTED FILE STRUCTURE ; ERRORS (TRAP+COUNT ; COUNT = 53 TO 177) ; ERROR MODIFIERS FATAL = 200  ;FATAL ERROR (NO RETURN) POST = TRAP  ;POST AN ERROR PSTFLT = 2+JFSTOP ;FLOATING ERROR PSTFIX = 4+JFSTOP ;FIX ERROR PSTDV0 = 6+JFSTOP ;DIVISION BY 0 ERROR IOTERR = TRAP+1  ;GET THE FIP ERROR .MACR $ERDEF NAME NAME = TRAP+UNITNO UNITNO=UNITNO+1 .ENDM UNITNO = 52  ;ERRORS çD!f÷ PõÜ.XÏpµ0«Õ‹‡pµ0¦ú… ÅEE‡fC`í.~Ãe ˵÷ øÅEm% é‰Ëµñ x º.¤ó ó Ãíj‰ÃmÀËÅ ËÕ÷  B.Êú÷ ´ù÷ @ìÁ÷ ðþ& N•Î NaNd¡—…f÷ ! ˜.ðÂ"÷ fø:f÷ Þùé± f÷ võãfp&÷ H "¾.2øÝf÷ æÿp&äðE0÷ ÄôðU0¬¡�.<≰`¡ø�‡°Š6fðU ðµÿ.bðE ÷ .î÷ €ù°w úýç  ̤»Ð�`ÎèTENTS OF R1 ; QUEUE PASSED HAS BEST OPERATION AS FIRST ENTRY ;REGISTER USAGE: ; R0 - CURRENT QUEUE ENTRY ; R1 - BEST ENTRY SO FAR ; R2 - ENTRY BEFORE ENTRY IN R1, NOT THE NEXT BEST ; R3 - TEMP STORAGE ; R4 - POINTER TO QUEUE ROOT, TABLE TOP ; R5 - GOAL TO BEST ON DISTANCE ; R6 - (SP) - PERVIOUS QUEUE ENTRY, OLD R0 ; R7 - POINTER TO NEXT INSTRUCTION ; FIND SHORTEST SEEK DISTANCE DSKOPT: JSR R5,SAVREG MOV R4,-(SP) ;SET PREVIOUS ENTRY AS QUEUE ROOT MOV (R4)+,R0 ;SET CURéSURE TERMINAL READY IS ON ASL R2  ;SHIFT CARRIER TRANSITION BIT INTO SIGN BMI TTP04  ;BRANCH IF CARRIER TRANSITION .ENDC    ; TTMRNG: MOV R0,R2  ;COPY LINE # TIMES 2 MOV #30.,R5  ;SET 30 SECOND TIME OUT MOV #TTP07,-(SP) ;AND SET RETURN ADDRESS DDBSET: ASL R2  ;NOW TIMES 4 ASL R2  ;NOW TIMES 8. ADD #TTSLST,R2 ;NOW A POINTER INTO INIT DC11 LIST MOV (R2)+,(R3) ;SET INPUT CSR MOV (R2)+,4(R3) ;SET OUTPUT CSR MOVB (R2)+,TTSTS1(R1);SET STATUS 1 êSTART HERE $ERDEF VCSERR  ;VIRTUAL BUFFER NOT 512. BYTES $ERDEF VCAERR  ;VIRTUAL CORE NOT ON DISK $ERDEF SIZERR  ;ARRAY TOO BIG $ERDEF VCOERR  ;VIRTUAL CORE NOT OPENED $ERDEF BSERR  ;ILLEGAL I/O CHANNEL $ERDEF LINERR  ;LINE TOO LONG $ERDEF FLTERR  ;FLOATING POINT ERROR $ERDEF EXPERR  ;ARGUMENT TOO LARGE IN EXP $ERDEF SINERR  ;ARGUMENT TOO LARGE IN SIN $ERDEF FIXERR  ;INTEGER ERROR $ERDEF BDNERR  ;ILLEGAL NUMBER $ERDEF LOGERR  ;TRANSëˆЉ̗Æ`W �E.�ð ÷‰÷ víÔ•w Îý  HHé$°‰�8H .¶ ÔL‰°é°�8H © H8°�ø)ßDDD”³5¬.Üw ’ý.õÎÆ)ù`æçèé$fi�¬¾¬w vý.ïù1!¥.8±Èi8ö)óoÈ8æAÈ´„qç`þÿl.(8Ã÷ äìw @ý.¹È53w ææ -4øÈÎ6ÆqÑ.N5`)iß�8øæÜ4ùȥЩ 1Þ)Ÿ.t8ÚñÖ8Ïûüý8£÷ ˆìw äü.™-øúÆ`ôšw Ôüf÷1÷ 8øü ¨,.¨w ÆüiÃ>(8 iÍ>)8 Î>*f.%ìRENT ENTRY, BUMP TO TABLE MOV R0,R1  ;SET THE FIRST AS THE BEST MOV (SP),R2  ;AND PREVIOUS ENTRY ADDRESS CMPB DSQFAR(R0),#FARCNT;FIRST ENTRY ?? BHIS DSKOP5  ;IF SO, THEN DO IT FIRST !! MOV #177777,R5 ;SET A BIG DISTANCE, MAKE IT EASY ; SCAN QUEUE LOOKING FOR MIN DISTANCE OR TIME EXCEEDED DSKOP0: INCB DSQFAR(R0) ;BUMP THE FAIRNESS COUNT CMPB DSQFAR(R0),#FARCNT;TEST TIME IN QUEUE BLO DSKOP1  ;NOT OLD ENOUGH AS YET CLR R5  ;DISTANCE OF ZERO IS HARD TO BEAT íMOVB (R2)+,TTSTS2(R1);SET STATUS 2 MOVB (R2)+,TTSTS3(R1);SET STATUS 3 MOVB (R2)+,DDHORC(R1);SET FORMS WIDTH RTS PC  ;EXIT TTP04: BIT R2,#4*2  ;SEE IF COMING OR GOING BEQ TTP06  ;BRANCH IF GOING-HOPE HE LOGGED OUT TTP05: CLR TTYCLK(R0) ;ELSE MAKE HIM LOOK LIKE A TELETYPE BICB #TTWRC,TTSTS2(R1);SAY ENABLED .IFNZ KBAUTO MOVB DDJBNO(R1),R3 ;IS DDB ASSIGNED TO A JOB? BNE TTP01  ;YES, SO DON'T TOUCH IT JSR R5,CLRBUF ;MAKE SURE INPUTîCENDENTAL ERROR $ERDEF SQRERR  ;IMAGINARY SQUARE ROOTS $ERDEF SUBERR  ;SUBSCRIPT OUT OF RANGE $ERDEF MINVER  ;CAN'T INVERT MATRIX $ERDEF ODD  ;OUT OF DATA $ERDEF ONBAD  ;ON STATEMENT OUT OF RANGE $ERDEF NEDERR  ;NOT ENOUGD DATA IN RECORD $ERDEF IOLERR  ;INTEGER OVERFLOW, FOR LOOP $ERDEF DIVBY0  ;DIVISION BY 0 ; CANNOT RESUME FROM FOLLOWING ERRORS ERRCC = UNITNO $ERDEF XCDCOR  ;MAXIMUM CORE EXCEEDED $ERDEF STMERR  ;STATEMENT NOT FOUND $ERDEï)о8.)ÒÁ'ξ8.)Ѿ8. Q�`8 fi�8û¬· îæîw €ü>8w xü>f`2 Ów nü Ï+`f  Ç w bü,`w Zü1j8¾.` $¯$w Jüf)b ˆ80XQ 6�.6& ÷ Êø÷ ÉíŽ ÷ ªò¬Àð%ï¡“  œ,X�\ÉŒ÷ Jò÷ BòÎ ü÷ püió.ü÷h¯”C _X@C ¤_@ü z@K.üz@¯šw@³Wu@œ€%@ð BR DSKOP3  ;AND SET THIS AS THE BEST ; R0 POINTS TO ENTRY TO BE CHECKED, (SP) POINTS TO PREVIOUS ENTRY DSKOP1: MOV DSQOUN(R0),R3 ;GET UNIT NUMBER X 2 ADD R4,R3  ;ADD IN TABLE BASE AND GET MOV (R3),R3  ;POSTION OF THAT UNIT'S ARM SUB DSQOPT(R0),R3 ;TAKE THE ABSOLUTE VALUE BHIS DSKOP2  ;OF THE DISTANCE BETWEEN NEG R3  ;THIS REQUEST AND UNIT'S ARM DSKOP2: CMP R3,R5  ;AND SEE IF BEST SO FAR BHIS ñ BUFFER IS CLEAR + DDINP+EP JSR R5,CLRBUF ;CLEAR OUTPUT BUFFER TOO... + DDOUT+EP MOV #'I,R2  ;LET'S SAY HE TYPED AN "I" JSR R5,STORE ;SO STORE IT AWAY + DDINP+FP JSR PC,TTILF1 ;NOW GO STORE LF AND SET UP JOB .ENDC BR TTP01  ;AND EXIT TTP06: MOV #2,R5  ;CARRIER DROPPED--WAIT 2 SECONDS TTP07: BISB #TTWRC,TTSTS2(R1);SAY WAITING FOR CARRIER MOV R5,TTYCLK(R0) ;AND SET THE TIME-OUT FOR THIS LINE BR TTP01  ;AND CHECK THE OTHER LINES .ENDC   ;ENòF BADERR  ;ILLEGAL STATEMENT $ERDEF STPERR  ;STOP $ERDEF ERRERR  ;UNIMPLEMENTED CODE $ERDEF DIMERR  ;MATRIX DIMENSION ERROR $ERDEF PRERRS  ;USING-STRING FORMAT ERROR $ERDEF PRNER1  ;BAD NUMBER IN PRINT-USING $ERDEF PRNER2  ;PRINT-USING BUFFER OVERFLOW $ERDEF UDMERR  ;ARRAY WITHOUT DIM $ERDEF EXITTM  ;RETURN WITHOUT GOSUB $ERDEF EXITNR  ;FNEND WITHOUT FUNCTION CALL $ERDEF UNDFNI  ;UNDEFINED FUNCTION CALLED $ERDEF COSERR  ;ILLEGAL SYMBOL ó<$@‘.XøM@òL"@óµ @t'ÖK@„:"@Æ.„: "@¶Rö@µW$@µW@$@_X¤_@ð.N`7=@N`žu@Õfœw@Ùf£Z@Ùf©Z@Í.Ùf¬Z@Ùf³Z@[g5@Iqõ@[qOq@„.[qj@³s„!@kua@v @þvOq@Å.ÁyØš@Çy@ÇyXÀ@òya@»zTŠ@=.»zVŠ@/}a@u~$@à~@â~` @Ô.ã~ÜT@å~ZX@ç~þ@ç~€!@ç~±'@.ç~OM@ç~³d@ç~c@ð~º@ð~ @ó.ôDSKOP4  ;NOT THE BEST, FIRST COME FIRST SERVE MOV R3,R5  ;SET A NEW GOAL DSKOP3: MOV R0,R1  ;SET THE BEST ENTRY ADDRESS MOV (SP),R2  ;AND THE PREV ENTRY ADDR TOO ; R1 HAS BEST, R2 HAS PREV ENTRY TO BEST, R5 HAS BEST DISTANCE DSKOP4: MOV R0,(SP)  ;SAVE PREVIOUS ENTRY MOV (R0),R0  ;LINK ON TO NEXT ENTRY BNE DSKOP0  ;AVOID LOOKING AT LO CORE ; PLACE BEST ENTRY AT THE TOP OF THE QUEUE AND UPDATE ARM POSITION MOV (R1),(R2) ;LINK AROUND THE BEST IN THE WEST õD DC11 OR DL11E CONDITIONAL TTP03: JSR PC,@6*2(SP) ;NOW CALL THE PROPER ROUTINE TTP01: JSR R5,RESREG ;RESTORE ALL THE REGISTERS CMP (SP)+,(SP)+ ;REMOVE OLD PS AND INPUT/OUTPUT ADDR RTI   ;NOW WE CAN EXIT FROM THE INTERRUPT ;TTY CHARACTER OUTPUT ROUTINE (INTERRUPT LEVEL 4 OR 5) ;FEEDS THE NEXT CHAR FROM BUFFER TO TTY ;CALL: JSR PC,TTOUT ;ON ENTRY, R1=DDB ADDRESS, R3=TKB TTOUT: ADD #4,R3  ;SKIP TO OUTPUT DATA BUFFER BISB #TTHUNG,TTSTS2(R1);NOTö $ERDEF TLOPNV  ;ILLEGAL VERB $ERDEF TLNZSP  ;ILLEGAL EXPRESSION $ERDEF TLNOIT  ;ILLEGAL MODE MIXING $ERDEF TLIFFE  ;ILLEGAL IF STATEMENT $ERDEF TLCONI  ;ILLEGAL CONDITIONAL CLAUSE $ERDEF TLNOTF  ;ILLEGAL FUNCTION NAME $ERDEF TLQDUM  ;ILLEGAL DUMMY VARIABLE $ERDEF TLMFND  ;ILLEGAL FN REDEFINITION $ERDEF TLRNNM  ;ILLEGAL LINE NUMBER(S) $ERDEF MODERR  ;MODIFIER ERROR $ERDEF TLORDT  ;CAN'T COMPILE STATEMENT $ERDEF OUTOAS  ;EXPRESSION TOO C÷ð~v~@ ±\~@4²Å@4²À@4²Œs@).(à(˜ ¬ hzh’» S(hÜôþ_h€ P.ô`h´ ãÐMh:å#XhÀåPsh¸åVshj/.å^shšæË:hèæÎ:hÚæ€}h&î`hÈó.î`hÒðX†hò¯yhJòèyhVóöhZŸ.ójh2ôÅžh` œ,Xh œ,\hü œ,fh í. N_`h¦ _XÚ@h޳sZqh"³s\qhÖsH:h>hku hˆ ¯”‹÷¯” j `ô ø r zh. à` àô àø àr àzøMOV -(R4),(R1) ;PLACE OLD #1 AS #2 MOV R1,(R4)+ ;SET BEST AS #1 DSKOP5: MOV DSQOUN(R1),R3 ;GET DRIVE NUMBER X 2 ADD R4,R3 MOV DSQOPT(R1),(R3) ;SET UP NEW ARM POSITION ; ALL DONE WITH MIN SEEK DISTANCE TST (SP)+  ;DUMP THE STACK ITEM JSR R5,RESREG JSR R1,@(SP)+ ;RETURN WITH R1 ON THE TOP OF STACK .ENDC .IFNZ RF11!RCRK11!RCRP11 ;RC11 AND RF11 DISK INTERRUPT SERVICE DFFINT: JSR R5,SAVREG ;Sù HUNG IF INTERRUPTED TTO06: JSR R5,FETCH ;GET A CHARACTER + DDOUT+FP ;FROM OUTPUT BUFFER BCS TTO03  ;BRANCH IF NONE LEFT TTO04: MOV R2,(R3)  ;PUSH THE CHARACTER OUT THERE .IFNZ JCUNUM CMP R3,#160000 ;JCU? BHIS REALTT  ;NOPE BIS #100,-(R3) ;YES .ENDC REALTT: CMP DDOUT+BC(R1),#3 ;ROOM IN OUTPUT BUFFER? BGE TTO02  ;YES, SO SET JSTEL RTS PC  ;RETURN TTO03: BIC #100,-(R3) ;DISABLE INTERRUPT BR TTO02  ;AND SET TTY READY FLAG, IN CASE úOMPLICATED $ERDEF FUNERR  ;ARGUMENTS DON'T MATCH $ERDEF TLTMAF  ;TOO MANY ARGUMENTS $ERDEF TLINCD  ;INCONSISTENT FUNCTION USAGE $ERDEF CPNSDF  ;ILLEGAL DEF NESTING $ERDEF CPUPFR  ;FOR WITHOUT NEXT $ERDEF CPUFNX  ;NEXT WITHOUT FOR $ERDEF CPUPDF  ;DEF WITHOUT FNEND $ERDEF CPUPED  ;FNEND WITHOUT DEF $ERDEF TLJNKY  ;CONSTANT STRING NEEDED $ERDEF TLNOFN  ;TOO FEW ARGUMENTS $ERDEF SASYNE  ;SYNTAX ERROR $ERDEF SAFNOS  ;STRING IS NEEDED $Eû( (N –â³. à( àN à  à– àâe2 Ü †´’X. àÜ à  à† à´ à’< Öô˜ Z@. àÖ àô à˜ à  àZ F ˆ àˆz Å z ür àüàÓ.¦)Bƒ÷ ‚÷ –%‡@ÀÂ÷ w‡ v Ùf¬Z"&[g5M.&� á÷ ÷ àÿ÷ ÷ ÷ ÂÊUÊEåC _X _X¤_üz üAVE ALL REGISTERS AT INTERRUPT MOV #DSKQUF,R0 ;LET R0 BE THE QUEUE STARTING POINT MOV #DSKGO,R1 ;AND LET R1 BE THE RESTART ROUTINE MOV (R0),R4  ;GET THIS PROCESSED DSQ POINTER .IFNZ RF11 ! SWRF11 MOV #RFCS,R2 ;GET RF11 CONTROL STATUS POINTER .ENDC .IFZ RF11 .IFZ SWRF11 MOV #RCCS,R2 ;GET RC11 CONTROL STATUS POINTER .ENDC .ENDC TST (R2)  ;WAS THERE ANY ERROR? BPL DFFIN1  ;NOT THIS TIME .IFNZ RF11 ! SWRF11 BIT #006000,(R2) ;WAS THE ERROR HARý;HANDLE ^O TYPED BY USER-------------------------------------------- ;IF HE ALREADY TYPED A ^O, THEN CANCEL IT'S EFFECT, OTHERWISE ;CLEAR OUTPUT BUFFER, KILL FUTURE OUTPUT TO TTY, AND ECHO ^O TTICO: TST (R1)  ;IS HE TOGGLING ^O? BMI TTIC01  ;YES--REENABLE HIS OUTPUT JSR PC,TTIC10 ;NO--DO BUFFER HOUSEKEEPING TTIC02: JSR R5,ASCOUT ;AND ECHO + TTICOC  ;<^> RTS PC TTIC01: BIC #NOOUTP,(R1) ;ALLOW PROGRAMMED I/O ON TTY BR TTIC02  ;þRDEF SASNOI  ;NUMBER IS NEEDED $ERDEF TLURTP  ;DATA TYPE ERROR $ERDEF TLXDIM  ;1 OR 2 DIMENSIONS ONLY $ERDEF FUCORE  ;PROGRAM LOST-SORRY $ERDEF RESERR  ;RESUME AND NO ERROR $ERDEF DIMED2  ;REDIMENSIONED ARRAY $ERDEF TLIDIM  ;INCONSISTENT SUBSCRIPT USE $ERDEF NOGOTO  ;ON STATEMENT NEEDS GOTO $ERDEF EOSERR  ;END OF STATEMENT NOT SEEN $ERDEF TLCNTD  ;WHAT? $ERDEF TLPRNM  ;BAD LINE NUMBER PAIR $ERDEF EDBMCE  ;NOT ENOUGH CORE $ERDEF EDEXOÿ .Lá÷ ÷ ºÿ÷ w †*€†…‰÷ Î÷ ä÷ ²C ¤_ _X¤_N`žuç.r÷ ¤öÿU÷ „w†÷ û÷ æ}Füz4²À"ü zp.˜& Åp:& Åa÷ àôô_Mt 4 ^.¾ÿU"4'÷ à‰ðU÷ ! ÷ ÷ 4ð~ ç~€!$ç~c].äï÷ &! v÷ f÷ ÿNÿU÷ ÷ Ëç~€!ç~OM"&XøMš. w Ø,€£‡ÿU÷ ÷ 2ß þÿw ´« €HN`žuõ.0‡ôD/WRITE PROT? .ENDC .IFZ RF11 .IFZ SWRF11 BIT #014000,(R2) ;WAS THE ERROR HARD/WRITE PROT? .ENDC .ENDC .ENDC DFFIN7: BEQ DFFIN5  ;SOFT ERRORS ARE JUST RETRIED DFFIN8: MOVB #HNGDEV,DSQERR(R4);HARD/WRITE PROT ERRORS YIELD THIS DFFIN5: MOVB DSQUNT(R4),R2 ;GET LOGICAL UNIT NUMBER ASL R2  ;TIMES 2 FOR WORD ADDRESSING INCB UNTCLU+1(R2) ;COUNT AS ERROR TSTB DSQERR(R4) ;DID WE HAVE A HRAD ERROR BPL DFFIN1  ;YES OR COUNT IS GONE SO QUIT INCB DSQERR(R4)AND ECHO ^O TTIC10: BIS #NOOUTP,(R1) ;SET THE NO OUTPUT FLAG IN DDB JSR R5,CLRBUF ;AND NOW WIPE OUT OUTPUT BUFFER + DDOUT+EP ;POINTER TO DDB SECTION INVLOVED TTO02: MOVB DDJBNO(R1),R3 ;GET JOB INDEX OF OWNER BIS #JSTEL,JBSTAT(R3) ;SET TTY FLAG RTS PC  ;AND BACK ;TTY CHARACTER INPUT ROUTINE ;CALL JSR PC,TTIN ;ON ENTRY, R0=2*LINE, R1=DDB ADDRESS, R3=TKB TTIN: MOV (R3)+,R2 ;PICK UP INPUT CHARACTER TTIN10: BIC #-177-1,R2 ;JUNK EXTRANEOUS BIN  ;EXECUTE ONLY FILE $ERDEF NRNERR  ;PLEASE USE THE RUN COMMAND $ERDEF EDCONE  ;CAN'T CONTINUE $ERDEF EDARSV  ;FILE EXISTS-USE REPLACE $ERDEF KCOREM  ;K OF CORE USED $ERDEF SWPERR  ;SWAP ERROR FOR JOB $ERDEF LOGNOT  ;PLEASE SAY HELLO $ERDEF NONOIM  ;ILLEGAL IN IMMEDIATE MODE $ERDEF TLTRNK  ;TEXT TRUNCATED $ERDEF FIELDE  ;FIELD OVERFLOWS BUFFER $ERDEF DISERR  ;ILLEGAL FIELD VARIABLE $ERDEF NORACS  ;NOT A RANDOM ACCESS DEVICE $ERDEF NO0Àÿ4�&€ 0   w.V€ € Â�âFˆ�bÀ o‰÷ 牀Jˆÿ‹6 Ãüz$6È.|æÁ�bÀÀ  ÅdÀ ýV!Q$EÃe�bà  Ä.¢üW$}‰Þ÷ VÚE êUw ÷ dÂÝ‚t'ÖK‚ ±\~(=.ÈÊEÈÊ5C¡0 ÷ É É ÿE4w êâ~` &4G.î¶| !ÈÑ ¿‰ÉíÂÊE ÷ Z$ÿU€û| (ª.æ ¡÷ Î ûÖ ÿEEÅmæß@þÿ ¯šw ;ELSE COUNT THE ERROR BNE DFFIN6  ;AND WHY NOT (BECAUSE IT IS 0?) DFFIN1: BIS DSQL3Q(R4),L3QUE;NOW SET THE L3 BITS ON COMPLETION MOV @(R0)+,-(R0) ;AND DEQUEUE TO THE NEXT REQUEST BIT #QFILE,DSQL3Q(R4);WAS THAT REQUEST FOR FILES? BEQ DFFIN3  ;IF NOT, THEN NO MORE QUEUEING JSR R5,QUEUER ;IF SO, THEN QUEUE IT INTO + DSDONQ  ;THE FILE SERVICE QUEUE DFFIN3: TST (R0)  ;ARE THERE MORE REQUESTS IN THE QUEUE BEQ DFFIN4  ;IF NOT, THEN WE ARE FINALLY DONE DFFIN2: JSRTS BEQ TTIN04  ;AND IGNORE NULLS .IFNZ KBLC BITB #TTUC,TTSTS3(R1);CONVERT LOWER TO UPPER? BEQ TTIN15  ;LEAVE IT ALONE CMPB R2,#140  ;LOW SIDE BLO TTIN15  ;TOO LOW CMPB R2,#173  ;HIGH SIDE BHI TTIN15  ;TOO HIGH BIC #40,R2  ;CONVERT TO LOWER CASE .ENDC TTIN15: MOV #RUBOUT,R4 ;SEE IF WE'RE IN RUBOUT MODE BIT R4,(R1)  ;IF WE ARE, THEN DO WE STAY THERE? BEQ TTIN06  ;WE WEREN'T, SO DON'T BOTHER CHECKING CMPB R2,#17TMTA  ;DEVICE NOT MAGTAPE $ERDEF NOMATH  ;WRONG MATH PACKAGE ; EXTRA ERRORS COMMON TO ALL EDNOPB = NOSUCH/2+TRAP NOPERR = NOTOPN/2+TRAP RWPERR = PRVIOL/2+TRAP BADUUO = BADFUO/2+TRAP CTRLCT = CTRLCE/2+TRAP DETUUO = DETKEY/2+TRAP ;DEVICE DATA BLOCK (DDB) ;THESE 16. WORD BLOCKS ARE PERMANENTLY ASSIGNED TO EACH DEVICE ;AND TELETYPE IN THE SYSTEM. THE DEVICE TABLE (DEVTBL) CONTAINS ;POINTERS TO EACH DDB. ;IF A DEVICE IS ASSIGNED TO A JOB, THEN T"„: "e.:wáÿ5÷ ÿUêÑ Z÷ hœ$³s„! Õfœw&4²Å..`ÿ5€ò‰ÿEŽ„4ÿEEÄ awpJè4$´.†aß@þÿw÷ u‰ç‰÷  ÿEˆÿ5€p„:"üz &«.¬ÿU€÷ r÷ ‚—  !w ÜŠ ÷ ÷ …"Š &ð~v~�.Ò÷ Ì•á÷ Æ0 ^ÿEAÀ ÷ $` å~ZXâ~` ã~ÜT"«.øð‰ÿU÷ ÷ Ô÷ |ÿ5ÿ5 PC,(R1)  ;IF SO, THEN GO TO THE STARTING ROUTINE DFFIN4: JMP RESRT4  ;AND EXIT NICELY ;RK11 DISK INTERRUPT SERVICE .IFNZ RK11  ;***** IF RK11 DKINT: JSR R5,SAVREG ;SAVE ALL REGISTERS ON INTERRUPT MOV #DSKQDK,R0 ;LET R0 BE THE QUEUE STARTING POINT MOV #DSKGDK,R1 ;AND LET R1 BE THE RESTART ROUTINE MOV (R0),R4  ;GET THE CURRENT REQUEST INTO R4 MOV #RKER,R2 ;GET A POINTER TO THE HARDWARE STATUS MOV  7  ;WE WERE, SHOULD WE REMAIN BEQ TTIN06  ;THIS IS ANOTHER RUBOUT, SO WE SHOULD BIC R4,(R1)  ;NO LONGER IN RUBOUT MODE JSR R5,ASCOUT ;ECHO A <\> + TTBACK TTIN06: BITB #TTDDT,TTSTS2(R1);IS HE CURRENTLY IN DDT SUBMODE? BEQ TTIN08  ;NOPE--SCHEDULE ON BASIS OF DELIMITER JSR R5,IOFINI ;MAKE THIS USER RUNNABLE + JSKEY TTIN08: JSR R5,TTSIVE ;IS IT A WEIRDO CHARACTER .BYTE 34  ;SAFE CHARACTERS .BYTE 174  ;HIGH LIMIT + TTICHL  ;LIST OF FUNNY CHARACTERS HE ENTRY IN "DDJBNO" ;CONTAINS THE NUMBER OF THE OWNER JOB. IF 0, THE DEVICE IS AVAILABLE ;EACH TIME A DEVICE IS INIT'ED, THE INIT COUNT IN "DDCNT" IS INCREMENTEDD, ;WHEN THE DEVICE IS CLOSED, THE COUNT IS DECREMENTED. IF THE COUNT ;GOES TO 0, AND THE DEVICE WAS NOT "ASSIGNED" THEN IT IS RETURNED ;TO THE SYSTEM; OTHERWISE IT IS RETAINED BY THE JOB ;THE NON-DEVICE-DEPENDENT ENTRIES IN THE DDB ARE: DDIDX = 0  ;HANDLER INDEX DDSTS = 1  ;STATUS AND ACCESS CONTROL BYTE DDJBNO = 2  ;OW  4¡ òya&4".÷ 6Àð0 :ß þÿ÷ Îw¯Âþÿ "à~8.Dß þÿÀÁDÀ@0`ÿE€8  ¶Rö(».jÃbÄ ý‡àÈw>! ÷ Â2‚œÂe0÷ �Çy2(Ùf£ZÈ.�ô‰÷ Hw N( †�‰÷ ÷ lü÷ w 8T­÷ ½ç~þN`žup.¶É ÷ Tü÷ w VóÑ w Zî! ÷ ç~±'N`žu(Çy].Ü÷ þ4 w €ã‡ÿ‹4 �&�ÃlÄe÷ (R2)+,R5 ;PUT THE ERROR REGISTER INTO R5 MOV (R2),-(SP) ;AND PUT THE CONTROL STATUS ON STACK MOV #RKREST,R3 ;NOW GET THE RESET STATUS POINTER BIT #040000,(SP) ;WAS THERE A HARD ERROR? BEQ DKINT1  ;IF NOT, THEN NO RESET NEEDED MOV #1,(R2)  ;IF SO, THEN RESET THE CONTROL TSTB (R2)  ;AND WAIT FOR READY (UP AT BPL .-2  ;LEVEL 5!) IT SHOULD BE FAST DKINT1: CMP R3,R4  ;WAS THIS A RESET INTERRUPT? BEQ DKINT2  ;IF SO, THEN HANDLE SPECIALLY TST (SP)+  ;CHEC  + TTIDSP-2 ;LIST OF SUBROUTINES TO HANDLE ABOVE BR TTIN04  ;IT WAS A WEIRDO JSR R5,STORE ;STORE IN INPUT BUFFER + DDINP+FP BCS TTIN05  ;DIDN'T FIT, RING BELL BIT #HAFDUP+NOECHO+TAPE,(R1) ;SHOULD WE ECHO CHARACTER BNE TTIN04  ;NO TTIN03: JSR PC,CHOUT ;OUTPUT THE CHARACTER TTIN04: JSR R5,FREBUF ;IS THERE STILL ROOM LEFT? .BYTE DDINP+BC,2 ;IN INPUT BUFFER BCS TTIN07  ;IF NOT, THEN DON'T START READER BIS #1,@TTILST(R0) ;YES,SO TURN IT ON .IFZ KBNER JOB INDEX (0 IF FREE) DDUNT = 3  ;DEVICE/DISK UNIT NUMBER DDTIME = 4  ;TIME ASSIGNED OR INITED DDHORZ = 6  ;HORIZONTAL POSITION DDVERT = 7  ;VERTICAL POSITION DDINP =10  ;INPUT CONTROL AREA DDOUT =22  ;OUTPUT CONTROL AREA DDHORC =34  ;CHARACTERS PER LINE DDVERC =35  ;LINES PER PAGE DDCNT =36  ;INIT COUNT FOR DEVICE ;BIT ASSIGNMENTS FOR DDB STATUS WORDS ARE AS FOLLOWS: ;(DDSTS): DDSTAT =100000  ;INTERNAL STATUS, CLEARED BY "CLOSE" DDWLO = 2000  ;WRITj4"l.$„´ ìÐ! ! ¡ ¡Ã|Å”ý&|.(× |†!”w æ”ú d‚•÷ w ƒ Å íÌ |óµ dÙf£Z"òL"î$N÷ wb÷ ÷ w\Í,œ€%u~$<$Ùf³ZÙf©Z\)#jV.       VV†ü.†÷ Lw V» &€†ó‰÷ <÷ |w FX€ô•÷ Â.¬Fá÷ ! áÿÀw ä Â÷ ÷ Vj Çy $Ùf£Z¹.K THAT CONTROL STATUS AGAIN BPL DFFIN1  ;IF NO ERROR, THEN PROCEED NORMALLY BIT R5,#010000 ;DOES THE DRIVE NEED RESETTING? BEQ DKINT5  ;NO, TRY FOR OTHER ERRORS MOV R3,(R0)  ;IF SO, PUT THE RESET BLOCK IN QUEUE MOV R4,(R3)  ;AND LINK QUEUE INTO THE RESET BLOCK MOV DSQPDA(R4),@#RKDA;SET THE PHYSICAL ADDRESS MOV #115,(R2) ;AND LOAD A DRIVE RESET FUNCTION BR DFFIN4  ;AND EXIT FROM THE INTERRUPT DKINT5: BIT R5,#122340 ;THESE ARE THE HARD/WRITE PROT BITS DPINTXON TTIN07: .ENDC TTIN09: RTS PC  ;RETURN .IFNZ KBXON TTIN07: BITB #TTXON,TTSTS2(R1);DOES THIS TTY HAVE XOFF? BEQ TTIN09  ;IF NOT, THEN JUST EXIT BISB #TTXOFF,TTSTS3(R1);IF SO, THEN SAY WE SENT XOFF MOV #023,R2  ;SINCE WE DID SEND AN XOFF JMP CHO07  ;TO THE TTY IN QUESTION .ENDC TTIN05: MOV #007,R2  ;RING THE BELL .IFNZ JCUNUM CMP R0,#JCUN2 ;JCU? BLO SKPCOM  ;NOPE BIS #JCOVFL,@TTILST(R0);YES AND FULL TOO .ENDC SKPCOM: JSR R5,IOFINIE-LOCK FOR DEVICE IF SET DDRLO = 1000  ;READ LOCK FOR DEVICE IF SET ;(DDCNT): DDASN =100000  ;DEVICE ASSIGNED THROUGH COMMAND DDUTIL =040000  ;DEVICE ASSIGNED FOR UTILTY SEQUENCE ; TTY DDB DEFINITIONS TTSTS1 = 01  ;STATUS 1 ;DDJBNO = 02  ;OWNER JOB NUMBER TTSTS2 = 03  ;STATUS 2 ;DDTIME = 04  ;TIME ASSIGNED ;DDHORZ = 06  ;HORIZONTAL POSITION TTSTS3 = 07  ;STATUS 3 ;DDINP = 10  ;INPUT PARAMETERS FP = 00 ;FILL BUFFER POINTÒw8þ÷ Bð‰÷ ÷ ,ûÂ÷ ô Ânç~³d N`žur.ø´´ w÷ |4 4 4 ôïç~cm.ô‡w á÷ ÷ g&÷ J4 Xóµ ÇyXÀ³WuØ.Dw  XÿE4„‡w w ÷ Õ B“rùóµ óµ  N`žu÷.jrÂÀÐ P ý?Â2ƒœ`µW$ µW@$&2�.�à à à ôw D« €ô�ô&á‚&t'ÖK‚' ±\~H.¶Ä4: BR DFFIN7  ;GO CHECK THEM IN COMMON CODE DKINT2: MOV (SP)+,R5 ;GET THE CONTROL STATUS BIT #160000,R5 ;AND CHECK FOR ERRORS OR RESET DONE BEQ DFFIN4  ;IF NO BITS, THEN IGNORE THE INTERRUPT MOV (R4),(R0) ;UNQUEUE THE RESET BLOCK MOV (R4),R4  ;AND GET THE ORIGINAL REQUEST TST R5  ;ANY ERROR OCCUR? BMI DFFIN8  ;YES, SO CALL IT A HUNG DEVICE .ENDC DFFIN6: MOVB #FARCNT,DSQFAR(R4);FOR REQUEST TO RUN FIRST TIME BR DFFIN2  ;NOW GO START IT  ;AWAKEN HIM IF HIS BUFFER IS FULL + JSKEY BR TTIN03 ;HANDLE SPECIAL INPUT CHARACTERS ;ALL THESE ROUTINES ARE CALLED FROM TTSIVE VIA A ; JSR PC,X  ;X IS THE ROUTINE ;HANDLE CONTROL M (^M)-------------------------------------------------- TTICR: JSR R5,STORE ;STORE , IN INPUT BUFFER + DDINP+FP ;DUE TO POPULAR REQUEST TTIC12: BIT #TT2741+HAFDUP+NOECHO+TAPE,(R1);ARE WE ECHOING? BNE TTICR2  ;NO TTILF1: JSR R5,ASCOUT ;ECHO AS ER FC = 02 ;FILL COUNT EP = 04 ;EMPTY BUFFER POINTER EC = 06 ;EMPTY COUNT BC = 10 ;BUFFER COUNT ;DDOUT = 22  ;OUTPUT PARAMETERS ;DDHORC = 34  ;HORIZONTAL MAXIMUM TTLINE = 35  ;KEYBOARD NUMBER ; TTY STATUS 1 [WORD VALUES]: NOOUTP = 100000  ;JUNK PROGRAMMED OUTPUT HAFDUP =  40000  ;HALF DUPLEX TTY NOECHO =  20000  ;DON'T ECHO ON TTY TAPE =  10000  ;TAPE MODE RUBOUT =  4000  ;LAST CHARACTER TYPED WAS RUBOUT ;WLO =  2000  ;NO WRITE LOæ!‰âÎ ü!ááÄ LŒây»zTŠ»zVŠ"6.Ü)à dà ý„÷ Áe(šw ô» ÂÉ óµ ý.! ÷ w¨÷ ÷ ú÷ Bÿwòü÷ ^Â5¿œN`7=ç~þ+.(Â5 ‡Â5ÂUÂE ¿÷ D÷ Ðþô• —.N÷  ÿÿE$w ‚ €0Æðÿÿ0 Â0 Ä È.t÷ ÂU0Ô âNˆbÀ€ø…&Ô Ô Æ.šÔÀeÔ Ô%ÔT ‹ .END  + CRLF0  ;OUTPUT TTIC11: MOV #12,R2  ;NOW THE TTICR1: JSR R5,STORE ;NOW STORE IT IN INPUT BUFFER + DDINP+FP BCS TTIN05  ;DIDN'T FIT-RING BELL TTICR3: MOVB DDJBNO(R1),R3 ;GET JOB # BNE TTICR4  ;IF JOB ISN'T DEFINED, DEFINE IT! TTICR9: MOV #JOBTBL+2,R3 ;LOOK FOR A JOB NUMBER TTICR5: TST (R3)+  ;SEE IF THIS SLOT IS AVAILABLE BEQ TTICR6  ;IT IS--GRAB IT BPL TTICR5  ;AT END OF JOBTBL (-1) TTICR7: JSR R5,ASCOUT ;NO--TELL HIM TOUGH LUCK, BCK OUT ;RLO =  1000  ;NO READ LOCK OUT TT2741 =  400  ;TERMINAL IS A 2741 TYPE ; TTY STATUS 2 [BYTE VALUES]: TT33 = 200  ;MODEL 33 TTY (NO HARDWARE TAB) TT35 = 100  ;MODEL 35 TTY (HARDWARE VT AND FF) TTDDT =  40  ;INTO DDT SUBMODE TTXON =  20  ;TERMINAL HAS XON/XOFF FEATURE TTRUB =  10  ;SPECIAL RUBOUTS TTHUNG =  4  ;TTY HUNG STATUS (0 IS HUNG) TTDCA =  2  ;SENT CTRL/N FOR DIRECT ADDRESSING TTWRC =  1  ;WAITING FOR CARRIER ; TTY STATUS 3 [BYT›.À„wðÁíFˆÁm÷ ´ÿHˆ÷ ¬ÿ÷ ¦ÿt´•.æ Áít“@ˆÀŸ6 ô•X@ˆòÍ �N6w. Õ ÁmÀ  ±À…�‰w & { $óµ ‡.2¡ÿ5 4ö‰w æÀ!Â÷ Ìþð‰ECe 4óµ {.XÅEþCAà À,÷ lÎ Å Æô  ¼.~ ‡w Tÿü÷ 4ô÷ b0 ÄðÅeÂ`Ù.¤Î ! IÓM’°Ä° ÂÑ Ö w ‡Æô•× .TITLE TB.P11 SYSTEM TABLES ;COPYRIGHT 1971,1972 BY DIGITAL EQUIPMENT CORP., MAYNARD, MASS. ;VERSION: 04A  EDIT: 54 ;DATE:  01-SEP-72 BY: MHB/JDM .ASECT . = 0  ;FOR NO BOOTSTRAP HALT VECTOR 4,AUTORE,PR7 ;BUS ERRORS VECTOR 10,AUTORE,PR7 ;RESERVED INSTRUCTIONS VECTOR 14,AUTORE,PR7 ;ODT TRAP VECTOR 24,RELOAD,PR7 ;POWER FAIL .IFNZ POWER VECTOR 24,POWERF,PR7 .ENDC . = 40  ;FOR HISTORY JMP @#INIT  ;GO INIT OURSELVES . = 50  ;MOABY + EXCDED  ;"TOO BAD" .IFNZ JCUNUM MOVB TTLINE(R1),R3 ;GET LINE # CMP R3,#JCUN2 ;JCU? BLO NOJC00  ;NOPE BIS #JCCATA,@TTILST(R3);FAILURE .ENDC NOJC00: JSR R5,CLRBUF ;WIPE OUT THE OLD INPUT BUFFER + DDINP+EP ;FOR INPUT RTS PC  ;RETURN TTICR2: BIT #TAPE,(R1) ;IF TAPE MODE, DON'T TYPE ANYTHING BNE TTICR3  ;SKIP THE ECHO BIT #TT2741+NOECHO,(R1);SHOULD WE ECHO LF? .IFNZ JCUNUM BIT #TT2741+NOECHO+HAFDUP,(R1);NO LF FOR JCU .ENDC BNE E VALUES]: TTCR = 200  ;2741 SENT , EOT IN TRANSIT TTCRO = 100  ;PDP-11 SENT , SKIP NEXT TTEOA =  40  ;WAITING FOR EOA FROM 2741 TTUC =  20  ;IN UPPER CASE SHIFT OR TRANS TO U.C. TTXOFF =  10  ;XOFF WAS SENT TO TERMINAL TTFILL =  7  ;FILL AMOUNT (0 TO 6 ; 7 IS LA30 FILL) ; LINE PRINTER DDB DEFINITIONS LPTCH0 = 040000  ;IF 1, THEN CHANGE 0 TO O LPTUCO = 020000  ;IF 1, THEN ONLY UPPER CASE LPTLS = 010000  ;IF 1, THEN LS òL"N.ÊÀíÀeÂ4wÜð Äû0 Ä÷ Øÿ4¦ Î.ðÁíLˆÁíJˆÁmÿ‹6�Àÿ‹4 €ÿE€€o6"4g.4ÿEIð‡w ÷ Z ! ÿ5Éå4 óµ $R.<÷ ÷ ÂÂe4ò î€l² ! ’�ÇyXÀ ÁyØš�.bwN÷ ÿU÷ 2 B2 @2 H2 ^ò;· Õfœw[qj‘.ˆBf÷ ºúÿEÀÈ b7&Žàð ÿ RE HISTORY BR RELOAD  ;SIMPLE RELOAD BR XCRASH  ;SIMPLE CRASH DUMP AUTORH: HALT   ;NO CRASH DUMPS IF HALTS BR RELOAD  ;RELOAD ON CONTINUE . = 110 AUTORE: SUB @#TIME,@#ITIME ;CHECK FOR TOO OFTEN BEQ AUTORH  ;IF TOO OFTEN, THEN HALT IT XCRASH: RESET   ;CLEAR THOS REGISTERS THAT WE CAN CMP @#SWR,#-1 ;CHECK FOR REALLY MEANING IT AUTOBR: BR AUTORH  ;IF NOT 177777, THEN DON'T DO IT JMP @#RELOA0 ;THEN CONTINUE RELOAD: JMP @#REL!TTIC11  ;NO-JUST LEAVE TTY QUIET FOR NOW MOVB DDHORC(R1),DDHORZ(R1);RESET POSITION SINCE JSR R5,ASCOUT ;ECHO THE LINE FEED TO HIS CR + LF  ;LINE FEED STRING BR TTIC11  ;AND NOW DO THE REST ;HANDLE ^Z ON INPUT----------------------------------------------------- TTICZ: JSR R5,ASCOUT ;ECHO <^>,,, + TTICZC BR TTICR1  ;NOW SET KYBD FLAG ;HANDLE ALTMODES ON INPUT----------------------------------------------- ;CHANGE THEM TO AS"11 LPTSFT = 004000  ;IF 1, THEN FORMS CONTROL ; DISK REQUEST QUEUE ENTRY BLOCK (DSQ) ;THIS BLOCK OF 16 WORDS IS PASSED TO AND FROM THE DISK DRIVERS ;TO INITIATE DISK DATA TRANSFERS AND TO SIGNAL THAT A TRANSFER ;HAS BEEN COMPLETED. IF THE TRANSFER WAS NOT DONE THE BLOCK ;IS PASSED BACK WITH A ZERO ERROR COUNT IN DSQERR. DSQ = 0  ;QUEUE LINK WORD DSQJOB = 2  ;JOB NO.*2 OF REQUESTOR DSQERR = 3  ;RE-TRY COUNT AND ERROR FLAG DSQL3Q = 4  ;L3QUE TASK BIT TO# F.®& œ Î ‡e  4L$:¡¡÷ å.Բ€€eÞw ‰`wÑ \‰^‰Âß(û.úÿUï¡Àÿ5‡ÿ5ÿU! ÷&Þ. ¡×[‰ÿ5ÿEw _‰C4H.F ƒ`Ñ „Ãlƒ #a(ñw a(]‰ÿU#(i.l ²Ñ D÷„`ÃlEmÕ¤Õ¤íÕ¤ëS•S•!>.’ ‰àÉU”U”„à!ÉS”S”–aá0 Èw fæ$OA1 ;CONTINUE . = SYSTAK ; THE SYSTEM NAME GOES HERE... .NAME. .BYTE 0 . = 1000 .WORD TTXLST  ;FOR EASY FINDING OF "TTSLST" .WORD TTILST .WORD TTOLST ; LOAD THE PUSH-POP TABLE INITIALLY . = TABL2  ;REORG TO THE TABLE .REPT 256. .WORD ERROR  ;ALL INITIALLY UNIMPLEMENTED .ENDR ; LOAD THE VERB TABLE INITIALLY . = TLDIPT .REPT 21.+40. .WORD TLER18  ;ALL INITIALLY ERRORS .ENDR .CS%CII 33 AND ECHO <$> TTIAL1: .IFZ KBLC-2 TSTB TTSTS3(R1) ;ALLOWING 175,176 AS CHARACTERS? BPL TTIALT  ;NOPE TST (R5)+  ;IF YES, THEN TAKE NORMAL EXIT RTS PC  ;EXIT ALREADY .ENDC TTIALT: MOV #33,R2  ;ALL ALTMODES ARE 033 TST (R5)+  ;MAKE IT LOOK LIKE AN ALMOST NORMAL CHAR BIT #HAFDUP,(R1) ;IN HALF DUPLEX MODE? BEQ TTICR3  ;IF NOT, THEN NORMAL JSR PC,CHOUT ;IF SO, THEN ECHO A "$" MOV #33,R2  ;AND RESTORE THE ALTMODE VALUE BR TTICR3  ;AND T& SET AT COMPLETION DSQDMA = 6  ;DISK SEGMENT NUMBER DSQCMA =10  ;CORE ADDRESS OF THE TRANSFER DSQCNT =12  ;SEGMENT COUNT OF THE TRANSFER DSQUNT =13  ;FILE UNIT NUMBER DSQFUN =14  ;OPERATION FUNCTION CODE DSQFAR =15  ;QUEUE FAIRNESS OR PRIORITY DSQMSC =16  ;FCB POINTER DSQPDA =20  ;PHYSICAL DISK ADDRESS DSQOPT =22  ;DISK OPTIMIZATION WORD DSQOUN =24  ;PHYSICAL DISK UNIT NUMBER * 2 ; DISK FUNCTION CODES, TO BE LOADED INTO DSQFUN RFUN =105  ;READ DISK WFUN =' $óµ ÷.¸ ÄÌ cÄí±, ‰, ƒ Ë Ämf�.Þ íQ$Î èÖ w Õ w.ý÷ ú÷ ! ÷ ÷ €òL" ð~º&Çyf. üw ¤ÿ 6ð‰ ƒÜ¦ ƒÜ¦î  º.* ò¥ •?÷ ÿ‹4 �¡÷ âüB÷ Ž ƒÙf£Z4&Ùf£ZÔ.P à ôÖ 0á÷ w ! ÷ B÷ !÷ †*Iqõ4²Œsóµ Çy"Ùf¬Z(ð~ºë.v w 6ÿ€ wŽøÿE€2Šw …2 ƒœ à (ECT TB ORG000 = .  ;THIS ORIGIN MUST BE 0!!! .GLOBL EMTBL,IOHAND,UNTCNT,UNTCNE,UNTCLU ;INTERNAL .GLOBL XCRASH,AUTORE,XCRSEG,RELOAD,XCRSEX .GLOBL L3QTBL,TTSLST,HERZ10,DEVCLC,CORTBL .GLOBL NULINE,TIMDEV,TTILST,TTOLST,NAME1 .GLOBL DEVCNT,DEVPTR,DEVTBL,DEVEND,JOBMX2 .GLOBL CLRSRT,CLREND,FRESML,FREBIG,DP0UNT .GLOBL IOFLG,SIZES,DEVTBE,AUTOBR,LPTDEV,LPSTS .GLOBL SATPTR,SATSIZ,SATSRT,SATCNT,MAXUN2 .GLOBL DSDONQ,TTICLK,JOBCLK,TTYCLK,NAME2 .GLOBL CLOKIN,LCS.1,LCS.2)HE REST OF THE STUFF TOO ;HANDLE LINE-FEED ON INPUT---------------------------------------------- TTILF: BIT #TAPE+NOECHO,(R1) ;IN TAPE MODE NOW? BNE TTIC11   ;YES-STORE THE LF, BUT DON'T ECHO BR TTILF1   ;NO- STORE IT AND ECHO CR-LF TOO TTICR6: TSTB FIPNLG   ;LOGINS PERMITTED? BNE TTICR7   ;IF NOT, THEN SAY SO BUFFER, GETSML   ;GET A BUFFER TO BE THE IO BLOCK BVS TTICR7 MOV R4,-(SP)  ;SAVE THE BUFFER ADDRESS BUFFER, GETSML   ;AND GET ANOTHER FOR*103  ;WRITE DISK ;DIRECTORY BLOCK FORMAT PATTERNS ;THE BELOW SYMBOLS ARE USED TO ACCESS THE VARIOUS ;ITEMS IN A DIRECTORY BLOCK. THIS SECTION ALSO ;DEFINES THE FORMATS OF VARIOUS ITEMS IN THE BLOCKS. ;ALL-ALL-ALL-ADDRESSING OF ITEMS IN DIRECTORY BLOCKS ; IS TO BE DONE WITH THESE SYMBOLS ; (PLEASE) ;MFD NAME BLOCK ULNK = 0   ;LINK TO NEXT NAME, 0 IS END OF CHAIN UNAM = 2   ;3 WORD FIELD, PPN(1) - PASSWORD (2,3) USTAT =10   ;STATUS BYTE UPROT =1+€ óµ 9.œ 2Š Ç`w À‡‚lþòL"". Âe ƒÔÃÔÃmËïÅ í… ‚lÒ Å çƒÌ º.è ÃÃmóÅ óÕ ów ¦þ† ‡w žþv w ц $v i. –þ| ð È!ȇá ÀÂå ° ÷ –| $.4 ô°ÀÂmCò 2 2  áw NþÏ/}aN.Z ‚ ÈÃÊÊ`Šà‹Ëࡇò ð È+‚ * € ,,LCS.3,XXXDEV .GLOBL JCUN0,JCUN2,JCLAST,SCHEDX .GLOBL L3QUE,FIQUE,DTRWQ,DTDRQ,DTSQ,DT.IND .GLOBL MTAQUE,JOBTBL,JBSTAT,JBWAIT,XCRSEC .IFNZ RF11!RCRK11!RCRP11 .GLOBL DSKQUF,DSKGO .ENDC .IFNZ RK11 .GLOBL DSKQDK,RKREST,DSKGDK .ENDC .GLOBL LPTDDB,PTRDDB,PTPDDB,CDRDDB,CDRBUF .GLOBL CRTIMR,LPTIMR,LPTUPC,JBCLOK,TIMTTY .GLOBL XXXDDB,XXXSER .GLOBL JOBMAX,KL11,TTYDDB,SYSVEL,SYSVEN ;CONFIG .GLOBL DC11,SMLBUF,BIGBUF,TC11,CORMAX .GLOBL FIP,USERIO,DIRAC,FILS- DATA BLOCK BVC TTICR8 MOV (SP)+,R4 BUFFER, RETSML BR TTICR7 TTICR8: MOV R4,-(R3)  ;HAVE TWO BLOCKS--LINK TO JOBTBL MOV (SP)+,(R4)  ;AND LINK I/O BLOCK TO DATA BLOCK MOV R1,@(R4)+  ;LINK TTY DDB TO IO BLOCK MOV #JFNOPR+JFIRST,(R4)+ ;INITIALIZE JOB FLAGS TST (R4)+ MOV #USRSP,(R4) ADD #JDSIZ0-JDSP,R4  ;NOW SKIP TO SIZE IN DATA BLOCK MOV (PC)+,(R4)+  ;AND INITIALIZE TO 2K .BYTE 2,2 SUB #JOBTBL,R3  ;NOW GET JOB INDEX .1   ;PROTECTION BYTE UACNT =12   ;ACCESS COUNT UAA =14   ;ACCOUNT BLOCK LINK UAR =16   ;UFD SEGMENT START, 0 IS NO UFD ;MFD ACCOUNT BLOCK ;ULNK = 0   ;+1 TO SIGNAL BLOCK IN USE, -2 IF BAD BLOCK MCPU = 2   ;ACCUM CPU TIME FOR ACCT MCON = 4   ;ACCUM CONNECT TIME MKCT = 6   ;ACCUM KILO CORE TICKS MDVT =10   ;ACCUM DEVICE TIME MLOGI =12   ;# OF LOGINS MLOGO =13   ;# OF LOGOUTS MDPER =14   ;TOTAL SEGMENTS PERMITTED TO OWN UCLUS =16   ;UFD CLUS/°È‡æÎmV ù‚wfkua5ó.q÷h¯”ä€%@,8^@l u:@G.o €%@» S(@Ø€%@œ€%@ÎÖ(@Q.ô`@åPs@åVs@å^s@éj@².î`@î`@òL"@ò¯y@'@Â.t'@t'ÖK@t'èK@t:˜b@t:¨u@ä.t:6œ@„:Ö(@ž:L@€Q/x@ ;GET HIM OUT OF ANY I/O WAITS BY SETTING ALL STATUS BITS WE CAN TTICC: JSR R5,CLRBUF ;CLEAR INPUT BUFFER + DDINP+EP BIC #NOECHO+TAPE,(R1);GET HIM OUT OF TAPE MODE JSR PC,TTIC10 ;CLEAR OUTPUT BUFFER TOO BIS #JSALL,JBSTAT(R3) ;TRY VERY HARD TO START JOB MOV JOBTBL(R3),R3 ;GET JOB DATA ADDRESS BEQ TTICC1  ;IF NOT A JOB, FORGET ^C TST (R3)+  ;POINT TO JDFL6= 6   ;DATE OF CREATION UTC =10   ;TIME OF CREATION ; =12   ;UNUSED ; =14   ;UNUSED ;UCLUS =16   ;FILE CLUSTER SIZE ;UFD RETRIEVAL INFORMATION BLOCK (RIB) ;ULNK = 0   ;LINK TO NEXT RIB, 0 IS END OF CHAIN UENT = 2   ;ENTRY LIST BEGIN - 7 WORDS TOTAL ;    ;ENTRY CONTAINS CLUSTER START SEGMENT # ;    ;IF 0 THEN END OF LIST ;PROTECTION BYTE BIT ASSIGNMENTS (UPROT) UFD/MFD ;BIT 15(7) - 200 PRIVILEGE BIT, USED TO SET JFSYS ; " 14(67h( ³s„!hzµ.kuahv h˜þvH!hÈÁyØšhn ÁyÐÀh, ;.ÇyhÚÇyXÀhêòyah 1z—hÐ/}ahê.E~ Zh8 u~$häÙ¯ø±h4²Åh4²Àh–4²Œsh¯”)÷¯”w DŽ øpD ù  àå øpà$ W $ äÝ øpä( O ( Üá øpÜ8 G8 ˜êÂJë. øp˜ øpê øp øp øpJž8.ENDC .IFNZ JCUNUM .GLOBL SCHJCU .ENDC ; DEFINE THE DDB'S ; FIRST A MACRO TO DEFINE DDB'S .MACR .DDB INDEX,STATUS,UNIT,A,B,C,D,E,F,G,H,I,J,K,L,M,N .BYTE INDEX,STATUS+0 ;INDEX - STATUS 0 .BYTE 0,UNIT+0 ;JOB - UNIT 2 .WORD 0  ;TIME  4 .BYTE A+0,B+0  ;HORZ - VERT 6 .WORD C+0  ;INPUT  10 .WORD D+0  ;  12 .WORD E+0  ;  14 .WORD F+0  ;  16 .WORD G+0  ;  20 .WORD H+0  ;OUTPUT  22 .WO9G IN JOB DATA TSTB (R3)  ;ALREADY PENDING ON CONTROL/C? BPL TTICC3  ;NOPE BIC #JFCCC,(R3) ;IF SO, THEN DISABLE PROGRAM TRAPPING TTICC3: BIS #JFCC+JFGO,(R3) ;SET CONTROL/C AND FORCED GO TTICC1: JSR R5,ASCOUT ;NOW TYPE THE <^C,CR,LF> + TTICCC BR TTICC2  ;AND NOW FINISH UP ;CHECK FOR FUNNY TTY CHARACTER ON INPUT OR OUTPUT ;FIRST CHECK TO SEE IF CHARACTER IS IS NORMAL RANGE ;IF NOT, SEE IF IT MATCHES WEIRDO LIST ;CALL JSR R5,TTSIVE ; .BYTE :) - 100 UNUSED ; " 13(5) - 040 WRITE PROTECT FROM WORLD ; " 12(4) - 020 READ " " " ; " 11(3) - 010 WRITE " " GROUP ; " 10(2) - 004 READ " " " ; " 9(1) - 002 WRITE " " SELF ; " 8(0) - 001 READ " " " ;STATUS BYTE BIT ASSIGNMENTS (USTAT) UFD/MFD ;BIT 7 - 200  MARKED FOR DELETE IF 1 ; " 6 - 100  FILE IF 0, MFD/UFD IF 1 ; " 5 - 040  NOT TO BE KILLED IF 1 ; " 4 - 020  NOT TO BE EXTENDED IF 1 ; " 3 - 010  FILE;B Ê Ò¦•. øpÊ øp  øp øpÒ øp¦RL Ú¬&âÖ. øp øpÚ øp¬ øp& øpâ�V ²ü¸.¾. øp² øp øpü øp¸ øp.� b ~ b Ø« øpØf  f ’pu øp’ øppr ^ r èR2 øpè øpR¶ ã¶ ÈFº€ú—. øpÈ øpF øpº øp€ øpúÈ À žn<RD I+0  ;  24 .WORD J+0  ;  26 .WORD K+0  ;  30 .WORD L+0  ;  32 .BYTE M+0,N+0  ;HORZ - VERT 34 .WORD 0  ;COUNT - ASGN 36 .ENDM ; THIS FIRST PART COVERS ANY AND ALL ".ASECT"S ; IT GOES FROM 000000 TO 'BOTTOM' (=005640) . = ORG000+BOTTOM ; TTY DDB'S UNITNO = 0 TTYDDB: .REPT KL11+1 .DDB TTYHND,0,224,72.+1,20,,,,,5.,,,,,5.,72.+1,UNITNO*2 UNITNO = UNITNO+1 .ENDR .REPT DC11+DL11E .DDB TTYHND,0,225,7=LOW,HIGH ;LIMITS TO PASS ; + ADDRESS OF WEIRDO LIST ; + ADDRESS-2 OF LIST OF ROUTINES TO HANDLE THESE ; ...   ;RETURN IF WEIRD ; ...   ;RETURN IF NORMAL ;ON ENTRY, R2=CHAR ;ON EXIT, R3,R4 ARE DESTROYED TTSIVE: CMPB R2,(R5)+ ;COMPARE WITH LOW LIMIT BLO TTS01  ;LESS THAN LOW; CHECK IT CMPB R2,(R5)+ ;COMPARE WITH HIGH LIMIT BHI TTS02  ;GREATER; CHECK IT TTS05: ADD #6,R5  ;NORMAL RETURN RTS R5  ;RETURN TTS01: INC R5  ;GET OVER ODD BYTE BOUNDRY T> ALREADY OPEN FOR UPDATE ; " 2 - 004  FILE ALREADY OPEN FOR WRITE ; " 1 - 002  MUST BE ZERO ; " 0 - 001  FILE IS 'OUT OF SAT' IF 1 ;FILE DIRECTORY LINK WORD FORMAT ;BITS 15-12  SEGMENT OFFSET WITHIN CLUSTER (0-17) ; " 11-9  CLUSTER NUMBER   (0-6) ; " 8-0  BLOCK START WITHIN SEGMENT (0-760) ;   (IN INCREMENTS OF 20) ; MONITOR AND SYSTEM CALLS OF NON-GLOBAL NATURE ; CALLS TO THE MONITOR BUFFER MANAGER BUFFER =000004  ;BUFFER ?  øpž øpnÊ öÊ fúJš@„. øpf øpú øpJ øpš øp@É Ô ˜z øp˜Ú êÚ °n¸ʓ. øp° øpn øp øp¸ øpÊèä ÎÆ¾nh½. øpÎ øpÆ øp¾ øpn øphî tHàXÌì. øpt øpH øpà øpX øpÌUø ’Ì^Ò˜s. øp’ øpÌ øp^ øpÒ øp˜æ Ò–øœþ˜@2.+1,20,,,,,5.,,,,,5.,72.+1,UNITNO*2 UNITNO = UNITNO+1 .ENDR .REPT JCUNUM .DDB TTYHND,100,224,72.+1,20,,,,,5.,,,,,5.,72.+1,UNITNO*2 UNITNO = UNITNO+1 .ENDR ; DECTAPE DDB'S .IFNZ TC11 UNITNO = 0 DTADDB: .REPT TC11*2 .DDB DTAHND,,UNITNO,,,,,,,,,,UNITNO*3 UNITNO = UNITNO+1 .ENDR .ENDC ; LP11 DDB'S .IFNZ LP11 UNITNO = 0 LPTDDB: .REPT LP11 .DDB LPTHND,LPSTAT,UNITNO,LP11C+1,66.,,,,,,,ATS02: MOV (R5),R4  ;ADDRESS OF CHARACTER LIST TTS03: MOVB (R4)+,R3 ;GET CHARACTER FROM LIST BEQ TTS05  ;END OF LIST? CMPB R2,R3  ;NOT END; MATCH? BNE TTS03  ;NO; KEEP GOING SUB (R5)+,R4 ;POSITION IN LIST ASL R4  ;TIMES 2 ADD (R5)+,R4 ; +DSIPATCH ORIGIN JSR PC,@(R4)+ ;DISPATCH THRU TABLE RTS R5  ;AND GO HOME ;GET MOST RECENTLY STORED CHARACTER FROM INPUT BUFFER ;WORKS FROM THE OTHER END OF THE BUFFER, WHEN COMPARED WITH "FETCBMANAGER OP-CODE (IOT) ; ARGUMENT FORMS FOR "BUFFER" CALLS: GETBIG =100200  ;GET BIG, 256. WORD, BUFFER GETSML =000200  ;GET SMALL, 16. WORD, BUFFER RETBIG =100000  ;RETURN BIG BUFFER RETSML =000000  ;RETURN SMALL BUFFER ; CALLS TO THE MONITOR EMT HANDLER ;EMT ASSIGNMENTS-- CALFIP =104100  ;CALL FIP, WITH FIRQB ADDRESS IN R4 FIERR =104000  ;CALL FIERR, ERROR CODE IN LO 6 BITS .READ =104102  ;SERIAL READ .WRITE =104104  ;SERIAL WRITE .CORE =104106  ;CHANGE USC. øpÒ øp– øpø øpœ øpþ j Ú 8. øp øpj øpÚ øp øp À  üüË øpü øpü$ ²$ fø6 ,É. øp  øpf øpø øp6 øp,i. âÐp0. øpâ øpÐ øpp øp0 øp­ 8 Þ¿ øpÞ< 1< Ö NÚW* øpÖ øp øpN øpÚF :F XÒ˜b+. øpD,,,19.,LP11C+1,66. UNITNO = UNITNO+1 .ENDR .ENDC ; PAPER TAPE DDB'S .IFNZ PC11R PTRDDB: .DDB PTRHND,4,,,,,,,,6. .ENDC .IFNZ PC11P PTPDDB: .DDB PTPHND,2,,,,,,,,,,,,,6. .ENDC ; CARD READER DDB .IFNZ CR11 CDRDDB: .DDB CDRHND,4 .ENDC ; MAGTAPE DDB'S .IFNZ TM11 UNITNO = 0 MTADDB: .REPT TM11 .DDB MTAHND,,UNITNO UNITNO = UNITNO+1 .ENDR .EH" ;CALL ; JSR PC,TTGET ;R0=2*LINE,R1=DDB ADDRESS ; ... RETURN  ;R2=CHAR,R3=R4=?,V=1 IF NO CHARACTER TTGET: MOV DDINP+FP(R1),R3 ;FILL POINTER BEQ TTGE05  ;NO FILL POINTER- INDICATE NO CHARACTER MOV R3,R4  ;COPY POINTER FOR LATER USE MOV R1,R2  ;GET A MORE USEFUL DDB POINTER ADD #DDINP+FC,R2 ;LIKE ONE THAT POINTS TO FILL COUNT ADD (R2),R3  ;R3=BUFFER ADDRESS+FILL COUNT MOVB 40(R3),-(SP) ;LAST CHAR IN TO TOP OF STACK CMPB (SP),#15 ;NOT CR BEQ TTGET1FER CORE SIZE .LOCK =104110  ;LOCK USER IN CORE .DAR =104112  ;DIRECT ACCESS READ .DAW =104114  ;DIRECT ACCESS WRITE .WAIT =104116  ;GO INTO I/O WAIT .SLEEP =104120  ;SLEEP JOB FOR N SECONDS .KILL =104122  ;KILL JOB .MTSPC =104124  ;MAGTAPE SPECIAL FUNCTION ;FILE PROCESSOR DEFINITIONS R50BAS =006273  ;.BAS FILENAME EXTENSION, SOURCE R50BAC =006253  ;.BAC FILENAME EXTENSION, COMPILED R50TMP =077430  ;TEMP FILE EXTENSION - TMP R50SYS =0752GX øp øpÒ øp˜ øpbí n qn ° H T ä Î 8. øp° øpH øpT øpä øpÎ " x òx øpò| ê| ÆØXìR* øpÆ øpØ øpX øpì† 5 † F øpFŠ ‰ Š l`ˆ øpl øp`À G À º< øpº øpÌ % Ì <bu øp< øpbî H î J« øpJô HENDC ; XX DEVICE DDB'S .IFNZ XXXX11 UNITNO = 0 XXXDDB: .REPT XXXX11 .DDB XXXHND,XXXSTS,UNITNO,XXXHOR,,,,,,XXINBC,,,,,XXOUBC,XXXHOR UNITNO = UNITNO+1 .ENDR .ENDC ; START OF THE CLEARED AREA CLRSRT = . ; FREE CORE FRESML: . = SMLBUF*32.+. FREBIG: . = BIGBUF*512.+. ; TABLE DEFINITIONS .MACR .TABLE NAME,WORDS NAME = . . = WORDS*2+. .ENDM ; HUNG DEVICE DETERMINATION DEVCLC = LP1I  ;STOP HERE CMPB (SP),#12 ;NOT LF BEQ TTGET1  ;STOP HERE CMPB (SP),#33 ;NOT ALT BEQ TTGET1  ;STOP HERE DEC (R2)  ;BACK UP FILL COUNT CMP (R2),#-37 ;WAS IT THE ONLY CHAR IN BUFFER? BNE TTGE09  ;NO SO WE'RE DONE CLR -(SP)  ;FOR USE IN SETTING FC LATER CMP -(R2),4(R2) ;WAS THIS THE ONLY BUFFER? BNE TTGE01  ;NO- WE'LL HAVE TO SEARCH THE EMPTY LIST CLR DDINP+EP(R1) ;YES-ZERO THE EMPTY POINTER CLR -(SP)  ;THIS WILL BE NEW FILL POINTER TTGE04J73  ;SYSTEM FILE EXTENSION - SYS ; DEFINED PPN'S PPN11 =1*256.+1 ;[1,1] - SYSTEM MANAGER PPN12 =1*256.+2 ;[1,2] - SYSTEM LIBRARY PPN01 =0*256.+1 ;[0,1] - SYSTEM FILES ; FILE PROCESSOR PARAMETERS FILSEG =512.  ;SIZE OF FILE SEGMENT IN BYTE ; LIST OF THE HANDELR INDEXES DSKHND = 0 TTYHND = 2 DTAHND = 4 LPTHND = 6 PTRHND =10 PTPHND =12 CDRHND =14 MTAHND =16 XXXHND =20 ; ARRAY HEADER DEFS FORCE = 40  ;FORCE I/O ARYIOB = 20  ;ARRAY IS FOR I/O K ô öð øpö„ Ö „ d øpdØ # Ø ø øpøÖ ‘ Ö ˆ‹ øpˆ2 ¥ 2 „% øp„øpk.æ æ&æ*æ"æ$À°0w Ÿ "ª.&^÷ w 2w ÂÚ5êE w» S( î`î`�.L÷ >‰ê5 ÚU Uw @ÕÀ@Õ!Â5ô`ò¯yåVs(ê.r¡J€`�J‰E÷ >ÅeL1+CR11 ; SYSTEM TABLES .TABLE JOBTBL,JOBMAX+2  ;JOB DATA ADDRESSES .TABLE JBSTAT,JOBMAX+1  ;JOB STATUS TABLE .TABLE JBWAIT,JOBMAX+1  ;JOB IO WAIT CONDITION TABLE .TABLE TTYCLK,NULINE+1  ;TTY TIMER TABLE .TABLE JOBCLK,JOBMAX+1  ;JOB TIMER TABLE .TABLE DEVCLK,DEVCLC  ;HUNG DEVICE TIMING .TABLE CORTBL,CORTBC+1  ;CORE ALLOCATION (1K'S) .TABLE NAME1,JOBMAX+1  ;PROGRAM NAME TABLE PART 1 .TABLE NAME2,JOBMAX+1  ;PROGRAM NAME TABLE PART 2 JBCLOK = JBSM: MOV (SP)+,(R2)+ ;SET FILL POINTER FROM STACK MOV (SP)+,(R2) ;SET FILL COUNT FROM STACK INC DDINP+BC(R1) ;UPDATE BUFFER COUNT BUFFER, RETSML  ;RETURN THE BUFFER TTGE09: MOVB (SP)+,R2 ;RETURN THE CHARACTER RTS PC  ;RETURN TTGE01: MOV DDINP+EP(R1),R3 ;START OF EMPTY CHAIN TTGE02: CMP R4,(R3)  ;NEXT TO LAST BUFFER? BEQ TTGE03  ; IF SO, ITS POINTER AND R4 AGREE MOV (R3),R3  ;NOPE, GO TO NEXT BUFFER BR TTGE02  ;AND KEEP LOOKING TTGE03: CLR (R3) N;SYSTEM DATA AREA ;FIXED STACK ORIGINS-------------------------------------------------- SYSTAK = 640  ;BOTTOM OF SYSTEM R6 STACK FISTAK = 1000  ;BOTTOM OF FIP STACK USRSP = 1000  ;BOTTOM OF USER (RELATIVE) STACK ;---------------------------------------------------------------------- ; CONDITIONALS ON WHETHER TB.P11 SEGMENT .IFDF HNGHND  ;ONLY TRUE IF TB.P11 .MACR WORD. Q .WORD Q .ENDM .MACR BYTE. Q .BYTE Q .ENDM .ENDC .IFNDOfff@&Àmó &¦.˜&w D‚Åe  C  C @ÀÀmà L ÎÖ(&­.¾Ç` $` a&Œà á$Ã&”à .äûàÃ÷¡¡¡¡‡BÂew †Ê �I‰ð t'ÖK Ü. wfÄa awÀpJ@€`aEm å^s c.0Åef•&  C  C à @À€`Ç` T.V÷ ð÷ íH뀄•a÷ Ð  ÷ ,hf˜{ hfX*ž.|!…‡&æ¦&¦…‰0‰ÿ5PTAT-JOBCLK LPTIMR = DEVCLK CRTIMR = DEVCLK+DEVCLC+DEVCLC-1-1 ; QUEUES L3QUE: .WORD 0 FIQUE: .WORD 0 DSDONQ: .WORD 0 .IFNZ RF11!RCRK11!RCRP11 DSKQUF: .WORD 0 .ENDC .IFNZ RK11 RKREST: .WORD 0 DSKQDK: .WORD 0 DSKADK: .REPT RK11 .WORD 0 .ENDR .ENDC .IFNZ TC11 DTDRQ: .WORD 0 DTSQ: .WORD 0 DTRWQ: .WORD 0 DT.IND: .WORD 0 .ENDC .IFNZ TM11 MTAQUE: .WORD 0 .ENDC ; LIST OF THE SAT LISTS Q ;END THE CHAIN COM (SP)  ;CHANGE 0 TO -1 ON STACK MOV R3,-(SP) ;NEW FILL BUFFER ADDRESS BR TTGE04  ;DO THE BOOKKEEPING AND GET OUT TTGET1: TST (SP)+  ;DUMP STACK TTGE05: SEV   ;INDICATE NO CHARACTER RTS PC  ;RETURN ;HANDLE ^U TYPED BY USER------------------------------------------------ ;ECHO <^U,CR.LF> ;AND WIPE OUT INPUT BUFFER UP TILL LAST CR,LF,OR ALTMODE TTICU: BITB #TTDDT,TTSTS2(R1);SPECIAL MODE? BNE TTIR07  ;IF SO, THEN KRF HNGHND  ;TRUE IF NO TB.P11 .MACR WORD. Q .=.+2 .ENDM .MACR BYTE. Q .=.+1 .ENDM .ENDC .ASECT . = 2 CRASH: BYTE. 0   ;CRASH COUNTER TTYHCT: BYTE. 0   ;HUNG TTY COUNTER . = 44 IDATE: WORD. 0   ;INITIAL DATE ITIME: WORD. 0   ;INITIAL TIME . = FISTAK   ;ORIGIN AFTER STACKS ; FILE PROCESSOR BUFFER AREA FIPBUF = .   ;NON-RESIDENT CODE . = .+FILSEG  ;1 SEGMENT LONG FIBUF = .   ;DIRECTORY BUFFER . S@4 Äø[g3$4{.¢ããNˆÿEÀ4ccÑ fEþÿ@•À ø  Ì 4¢.Èÿ 4ù€! W!‚I…Ä4“%€& ÌEŽ€Â€è44&.î@Ì5 ò H òæÿÌEwA‰! η (³s\qÒ.À!JÄá ááa‡ÂEñÿÌE€‡`°®nZ.:=‰¬3‰ª7 €‚ƒœþÿT¦J¦ ˪ ®.`€æÃ5~ζ ÁEÿE€ÃE€ÿÖ [åPså^s ð.†T ; SAT INTRENAL LOGICAL POINTER LIST SATPTR: .REPT RF11N+RK11+RP11 .WORD 0 .ENDR ; SAT BYTE SIZE LIST SATSIZ: .REPT RF11N+RK11+RP11 .WORD 0 .ENDR ; UNIT CLUSTER SIZE LIST AND ERROR COUNTERS UNTCLU: .REPT RF11N+RK11+RP11 .BYTE 0,0 .ENDR ; SAT STARTING SEGMENT LIST SATSRT: .REPT RF11N+RK11+RP11 .WORD 0 .ENDR ; COUNT OF FREE SEGMENTS IN SAT LIST SATCNT: .REPT RF11N+RK11+RP11 .WORD 0 .ENDR ; UNIT STATUEEP CHAR TTICU1: JSR PC,TTGET ;GET MOST RECENT CHARACTER BVC TTICU1  ;CONTINUE JSR R5,ASCOUT ;NOW ECHO <^U,CR,LF> + TTICUC TTIR01: RTS PC  ;AND RETURN ;HANDLE RUBOUT FROM TTY CONSOLE----------------------------------------- ;IGNORE IT IF IN TAPE MODE ;OTHERWISE ECHO CHARACTER TYPED ;UNLESS THERE'S NOTHING TO ECHO--THEN ECHO TTIRO: BIT #TAPE,(R1) ;TAPE MODE? BNE TTIR01  ;YES- IGNORE RUBOUT BITB #TTDDT,TTSTS2(R1);SPECIAL MODE? BEQ TTIR06  ;NOPE TTV= .+FILSEG  ;1 SEGMENT LONG FIBMAP = .-20   ;START OF MAP BLOCK FIBENT = .-16   ;START OF MAP ENTRIES FIBEND = .-1   ;LAST BYTE OF BUFFER SATBUF = .   ;SAT BUFFER . = .+FILSEG  ;1 SEGMENT LONG ; SYSTEM DIRTY DATA AREA FOR: ; MONITOR ; FILE PROCESSOR ; SAT PROCESSOR DATE: WORD. 0  ;DAY,MONTH,YEAR TIME: WORD. 0  ;MINUTES UNTIL MIDNIGHT (1440.) TIMSEC: BYTE. 60.  ;SECONDS UNTIL NEXT MINUTE (60.) TIMTIC: BYTE. 10.  ;SYSTEW/× Ã6ƒ òæÿÖ%@3ƒ÷ 4& Ô�Ô•—6&e.¬RÔ„÷ l ! ÷ ‚’$÷ „Ä |Ùf¬Z$C.Ò!Â÷ ÷ ÷ ²J€‚ƒ„q" l u:Ùf¬ZÙf©Zœ€%K.øÀ‰¿T4¶õ€@Ê× >dž�fÁm„c!Ú4"].ý‡„à År ÆÿÅírHÆæÈ`É § "ÈL.DÉÿÿI a•a•@Ñ `‡ÂrVôÑ ka•a•F ².jEd‡Âò ^ ñ  ÄEaXUS LIST ; WORD FORMAT: X YZC CCC CCC CCC CCC ; X=1 MEANS NOT MOUNTED ; Y=1 MEANS PRIVATE PACK ; Z=1 MEANS DISK LOCKED OUT UNTCNT: UNITNO = 0 DFUNIT: .IFNZ RF11 DF0UNT = UNITNO .WORD 0 UNITNO = UNITNO+1 .ENDC DKUNIT: .IFNZ RK11 DK0UNT = UNITNO .REPT RK11 .WORD 0 UNITNO = UNITNO+1 .ENDR .ENDC DPUNIT: DP0UNT = UNITNO MAXUNT = UNITNO-1 MAXUN2 = MAXUNT*2 UNTCNE = .-2 ; END OF CLEARED AREA CLREND = .-2 ; DEVICYIR07: TST (R5)+  ;MAKE NORMAL RTS PC  ;AND EXIT TTIR06: MOV #RUBOUT,R4 ;IS HE ALREADY IN RUBOUT MODE? .IFNZ KBRUB BIT R4,TTSTS2-1(R1) ;SEE IF SPECIAL RUBOUTS BEQ TTIR03  ;NOPE BIT #NOECHO,(R1) ;TYPING CONFIDENTIAL STUFF? BNE TTIR03  ;IF SO, THEN LET HIM HANDLE IT JSR PC,TTGET ;YES, SO GET BACK ONE BVS TTIR08  ;NO MORE, SO NOTHING BIT R2,#140  ;PRINTABLE? BEQ TTIR08  ;NOPE TTIR09: JSR R5,ASCOUT ;ELSE, DO THE SPECIAL RUBOUT + SPCRUB ZM TICKS UNTIL NEXT SECOND (10.) TIMCLK: BYTE. 6.  ;CLOCK TICKS UNTIL NEXT SYSTEM TICK (6.) NEXT: BYTE. 0  ;# OF JOB NEXT TO BE RUN JOB: BYTE. 0  ;# OF JOB RUNNING NOW (0 FOR NULJOB) SWAPF: BYTE. 0  ;# OF SWAPS PENDING -1 CORPTR: WORD. 0  ;INDEX FOR CORTBL ROUND ROBIN SCAN JOBPTR: WORD. 0  ;INDEX FOR JOBTBL ROUND ROBIN SCAN CORFOR: WORD. 0  ;INDEX FOR ROUND ROBIN FORCE SCAN CSRLN = 17.  ;# OF CONTEXT SWITCHED, RELOCATED ITEMS. JOBORG: WOR[ awQ$‡è $8.�ȉ(@I a•a•@Ñ õ-ÂrVõa•a•@Õ °.¶! ¡ ² ^ÅíáÉía÷ ïæà (Ü.Ü @ÕB‚`€ ƒº‰`D„à!•!•@‡a•a•@Å .`ÿ5õ 6¿‰ñ‰è‰Âa•a•E…† X.(Hö2 HÅmß@þÿåÿ5ÅD Í À">.NEcõ ú5! ÷ÿE€Ö w÷ ŠÿÅ  ³s\q(R.tÍ \E UNIT NUMBER MAXIMUMS DEVCNT: + RF11N-1  ;DF0: + RK11-1  ;DK0: TO DKN: + RP11-1  ;DP0: TO DPN: + NULINE+1-1 ;KB0: TO KBN: + TC11*2-1 ;DT0: TO DTN: + LP11-1  ;LP0: TO LPN: + PC11R-1  ;PR0: + PC11P-1  ;PP0: + CR11-1  ;CR0: + TM11-1  ;MT0: TO MTN: .IFNZ XXXX11 + XXXX11-1 ;XX: .ENDC DEVPTR: + DFUNIT  ;RF DISK UNIT LIST + DKUNIT  ;RK DISK UNIT LIST + DPUNIT  ;RP DISK UNIT LIST + TTYDEV  ;KB U]ADD #2,DDHORZ(R1) ;AND CORRECT DDB COUNTER TTIR08: RTS PC  ;THATS ALL FOLKS SPCRUB: .BYTE 10,40,10,0 ;BACKSPACE, SPACE, BACKSPACE, NULL .NLIST .IFNZ RUBOUT/400-TTRUB .ERROR ^%YOU BLEW IT - TTRUB AND RUBOUT MUST MATCH% .ENDC .LIST .ENDC TTIR03: BIT R4,(R1)  ;IF NOT, ECHO A <\> FIRST BNE TTIR04  ;HE IS, SO DON'T BOTHER BIS R4,(R1)  ;PUT HIM IN RUBOUT MODE JSR R5,ASCOUT ;AND NOW THE <\> + TTBACK TTIR04: JSR PC,TTGET ;GET LAST CHARACTER TYPED ^D. 0  ;CSR0 ABSOLUTE ORIGIN OF IMPURE AREA R5RING: WORD. 0  ;CSR1 (CONTEXT SWITCHED RELOCATED #1) R1RING: WORD. 0  ;CSR2 SAVE R1 FOR LEX. ANAL SCTH: WORD. 0  ;CSR3 POINTER TO CURRENT TEXT HEADER SPTA: WORD. 0  ;CSR4  " " " TEXT AREA SPDA: WORD. 0  ;CSR5  " " " DATA AREA R1CORG: WORD. 0  ;CSR6 START OF USER STACK R6CORG: WORD. 0  ;CSR7 START OF SYSTEM STACK COSI: WORD. 0  ;TL CODE STACK INITIAL COSP: WORD. 0  ;" " _ôEcõ úwÂCÃíòfDÄ ÄeI8.š02 fá·%†÷ RûÅEm‡I ID‡÷ ½y.À I ‡q IT‡D CÌ@ù ‡1 Id‡Iä‹.æ‡a•a•@ÀmH‡@CÃeÄlÃly ¾.  Ä ¤ú‚¯‡¤ ô¯¸‡Ä Ó¥….2 ìò„ ¡‡¯µ‡a‡@Âa•a•@9  ¬.XÀmpBB`à°‡a•a•@€`$ $y.~!! `Iࡉ`IàJŠà‡a•a•@Àm`NIT LIST + DTADEV  ;DT UNIT LIST + LPTDEV  ;LP UNIT LIST + PTRDEV  ;PR UNIT LIST + PTPDEV  ;PP UNIT LIST + CDRDEV  ;CR UNIT LIST + MTADEV  ;MT UNIT LIST .IFNZ XXXX11 + XXXDEV  ;XX UNIT LIST .ENDC ; TABLE OF DDB POINTERS DEVTBL: . = NULINE+1*2+. DEVTBE: . = TC11*2*2+. . = LP11*2+. . = PC11R*2+. . = PC11P*2+. . = CR11*2+. . = TM11*2+. . = XXXX11*2+. DEVEND = .-2 ; TABLE OF POINTERS TO DDB POINTER TABLES TTYDEV = DEVTBaBVS TTIR02  ;ANYTHING RETURNED? BIT #NOECHO,(R1) ;SHOULD WE TYPE CHARACTER? BNE TTIR01  ;NO--HE'S TYPING CONFIDENTIAL MATERIAL BR CHOUT  ;YES, ECHO IT ;OUTPUT THE CHARACTER IN R2 ;IF TTY IS BUSY, THEN BUFFER IT ;IF TTY IS IDLE, THEN JUST SHOOT IT OUT ;ALSO TAKES SPECIAL NOTE OF CR,LF,TAB,VT,AND FF ;R0=2*LINE,R1=DDB ADDRESS,R2=CHAR,R3 IS DESTROYED ;CALL JSR PC,CHOUT ; ... RETURN [C=1 IF IT DIDN'T GET ACCEPTED] CHOUTO: JSR R5,FREBUF ;IS THERE b " CURRENT POINTER COSL: WORD. 0  ;" " " LIMIT OPSI: WORD. 0  ;" OPERATOR " INITIAL OPSP: WORD. 0  ;" " " CURRENT POINTER OPSL: WORD. 0  ;" " " LIMIT OASI: WORD. 0  ;" OPERAND " INITIAL OASP: WORD. 0  ;" " " CURRENT POINTER OASL: WORD. 0  ;" " " LIMIT    ;THE ORDER JOBDA,JOBF,IOSTS,JOBTIM IS IMPORTANT JOBDA: WORD. 0  ;ADDRESS OF CURRENT JOB'S DATA BLOCK JOBF: WORD. 0  ;POINTER TO STAc!‡I$ v  ¬.¤I$  I$ I$I$Éÿÿ‡I$û ‡¬.Ê÷ ÷ ÷ ÷  ÷ j$Ø€%Ø€%Ø€%Ø€%&Ø€%€.ðÂÿÿÁeþÿ‰‡÷ ÷ ÷÷ ìþ#÷ äþ‰ t'èKþÿØ€%f.÷ Üþ ÷ Ôþ÷ Ìþ÷ Äþ @bbÜ.<Àí?Áe ×÷ ¨þòñ†ÂÿÿïÂòLï "&û.b2 N‡7 ü7 7 ü¹‰Âò4Jƒü ü J.ˆÃe<‹PËmdL DTADEV = NULINE+1*2+TTYDEV LPTDEV = TC11*2*2+DTADEV PTRDEV = LP11*2+LPTDEV PTPDEV = PC11R*2+PTRDEV CDRDEV = PC11P*2+PTPDEV MTADEV = CR11*2+CDRDEV XXXDEV = TM11*2+MTADEV ; DECTAPE CONDITIONALS .IFZ TC11 ; DO DUMMY GLOBAL DEFINITIONS DT.IND = 0 DTSQ = 0 DTRWQ = 0 DTDRQ = 0 DTASER = AUTORH DTSYM = AUTORH DTAS15 = AUTORH BUFQ = AUTORH DTQCON = AUTORH DTWCON = AUTORH .GLOBL DTAS15 .ENDC ; MAGTAPE CONDITIONALeROOM TO DO THIS? .BYTE DDOUT+BC,2 ;CHECK OUTPUT CHAIN BCS CHO08  ;IF NOT, THEN SAY NO ROOM CHOUT: .IFNZ KBRUB  ;FOR SCOPES BITB #TTDCA,TTSTS2(R1);IF SO, INTO DIRECT ADDRESSING? BEQ CHNDCA  ;NOT NOW JMP TTODA0  ;UP TO Y-ADDRESS, SO NULL FILL .ENDC CHNDCA: JSR R5,TTSIVE ;MAGIC CHARACTER .BYTE 40  ;SMALLEST ASCII VALUE NORMAL BY DEFAULT .BYTE 177  ;HIGHEST ASCII VALUE + TTOCHL  ;WEIRD0 LIST + TTODSP-2 ;HANDLERS FOR WEIRDOS BR CHO02  ;FOUND OfTUS OF THAT JOB IOSTS: WORD. 0  ;POINTER TO JOB'S I/O STATUS JOBTIM: WORD. 0  ;# TICKS JOB HAS USED SINCE STARTING QUANT: WORD. 0  ;SCHEDULAR QUANTUM FREES: WORD. 0  ;POINTER TO START OF SMALL FREE BUFFER LIST WORD. 0  ;COUNT OF FREE SMALL BUFFERS FREEB: WORD. 0  ;POINTER TO START OF BIG FREE BUFFER LIST WORD. 0  ;COUNT OF FREE LARGE BUFFERS SWAPAR: WORD. 0  ;SWAP PARAMETER BLOCK WORD. 0  ;JOB # BEING SWAPPED WORD. QSWAP  gËàËe£NÜ 4a‘ À.®Îí´4 ‡€LÀmÈ Ùbð¥ ù—‰.ÔÃíÂeLÒ Ò lÀí€ ÅÄÄe4»$:.úÝ÷ <÷ 6 æ÷ 2ƒ„”ÄE€ÿü¡ ù¡ h. ö¡ó¡'¡"Ä,€Â ¡ —¢ —¢".F —¢“”óÄ �‚ „Þ …‰÷ "þ÷ ).lw÷ ÈÞ …À0 Øÿƒ”þ×  û×  øS gxA|.’×  ð Øÿò ÄÄe4áí´`´à× s hS .IFZ TM11 ; DO DUMMY GLOBAL DEFINITIONS MTAQUE = 0 MTASER = AUTORH MTSPC. = AUTORH MTACON = AUTORH MTADNE = AUTORH MTASET = AUTORH .GLOBL MTASET .ENDC ; XX DEVICE CONDITIONALS .IFZ XXXX11 XXXSER = AUTORH XXXDDB = 0 .ENDC ; LINE PRINTER CONDITIONALS .IFZ LP11 ; DO DUMMY GLOBAL DEFINITIONS LPTDDB = 0 LPTS10 = AUTORH LPTHNG = AUTORH LPTSER = AUTORH LPTGO = AUTORH .GLOBL LPTS10,LPTGO .ENDiNE CHO04: BIT R2,#140  ;PRINTABLE CHARACTER? BEQ CHO07  ;IF NOT, THEN USE IT BUT DON'T COUNT CHO05: DECB DDHORZ(R1) ;COUNT THE CHARACTER POSITION BNE CHO07  ;IF NOT AT THE END THEN CONTINUE MOV R2,-(SP) ;IF SO, THEN SAVE THE CHARACTER JSR PC,TTIR02 ;AND PRINT A CR/LF FIRST MOV (SP)+,R2 ;NOW GET BACK THAT CHARACTER BR CHO05  ;AND GO USE IT CHO01: JSR R5,STORE ;TTY BUSY, SO BUFFER CHARACTER + DDOUT+FP ;IN OUTPUT BUFFER BCC CHO06  ;IT FIT, SO UPDATE j;LEVEL 3 BIT TO SET ON COMPLETION WORD. 0  ;DISK SECTOR ADDRESS WORD. 0  ;CORE ADDRESS WORD. 0  ;SECTOR COUNT FOR OPERATION WORD. 0  ;FUNCTION (READ, WRITE) WORD. 0  ;CORTBL POINTER ASSOCIATED WITH SWAP WORD. 0  ;PHYSICAL DISK ADDRESS WORD. 0  ;OPTIMIZATION WORD WORD. 0  ;UNIT NUMBER TIME 2 ;BUFFER CONTROL AREA, FIBUF AND FIPBUF FIBPHS: WORD. 0  ;CURRENT SEGMENT IN FIBUF FIBSTA: BYTE. 0  ;BUFFER STATUS --- ORDER COUNTS k¸.¸, × ×   4 ‚à LÊ —#¢Ñ � $¢$.Þ4‰÷ | —#ÈÖ ŽÅwŒü€‰´‰÷ pÿ÷ ÂÈÜ.Þ Ñ ‡÷ bÿ÷ Þ Áe‡÷ á2 ÷  D¼o €%t'èKÒ.*Âe4‚l“”Ä ý?ÂÂe4„„lƒh ´.P÷ ! ÷ ﻉ‚lJò‹ ‡w BÙ$„:Ö(Ì.vDBl„`÷ &“ Š&÷ „ „Œ•!4‰£ gxAo €%n.œ‡w à ÷ Ž æ÷ ƒ“”þà ÀlC ; PAPER TAPE CONDITIONALS .IFZ PC11R ; DO DUMMY GLOBAL DEFINITIONS PTRDDB = 0 PTRSER = AUTORH .ENDC .IFZ PC11P PTPDDB = 0 PTPSER = AUTORH .ENDC ; CARD READER CONDITIONALS .IFZ CR11 ; DO DUMMY GLOBAL DEFINITIONS CDRL3Q = AUTORH CDRDDB = 0 CDRHNG = AUTORH CDRBUF = 0 CDRSER = AUTORH .ENDC ; IO HANDLER TABLE IOHAND: .WORD FILSER .WORD TTYSER .IFNZ TC11 ! LP11 ! PC11R ! PC11P ! CR11 ! TM11 ! XmPOSITION CHO08: RTS PC  ;IT DIDN'T FIT, RETURN CHO07: CHO03: .IFNZ KBPRTY BIC #-177-1,R2 ;CLEAR ALL BUT GOOD BITS MOV R2,R3  ;THEN COPY THE CHARACTER .IFZ KBPRTY-1 ;BELOW IS FOR EVEN PARITY BR PARTY0  ;DO EVEN PARITY .ENDC PARTY1: ADD #200,R2  ;ACCUMULATE PARITY BIT PARTY0: ASR R3  ;CHECK FOR A BIT ON BCS PARTY1  ;IF ON, THEN FLIP PARITY BIT BNE PARTY0  ;IF MORE BITS, THEN CONTINUE .ENDC MOV TTOLST(R0),R3 ;GET ADDRESSn--- FIBUNT: BYTE. 0  ;CURRENT DISK UNIT --- ORDER COUNTS --- FIPSEG: BYTE. 0  ;SEGMENT CURRENTLY IN FIPBUF, UNIT 0 ASSUMED ;BUFFER CONTROL AREA, STABUF THE SAT BUFFER SATUNT: BYTE. 0  ;CURRENT SAT UNIT SATSEG: WORD. 0  ;CURRENT PHYSICAL SEGMENT OF SAT SATMOD: BYTE. 0  ;NON-0 IF SAT NEEDS WRITING ;HANDY USER FACTS ; ***** ORDER COUNTS FOR NEXT THREE ITEMS ***** FIPRIV: BYTE. 0  ;NON-0 IF NOT PRIVILEGED, 0 IF SO FIUSER: WORD. 0  ;PPN OF USER CURRENTLY IN FIP FIoÞ …£„:Ö(€Q/x Ùf¡Z$ß.‰wÀüæ¦&ww‡W" ƒß5 þÿ/….讉Cà à à à ÃeDÂòJDÄ Äo2‡É ùp"2S. ÷ ÈÿÌ ùæƒ`æ Î5@Ä ÄìÀÀl7.4 Š„ ýÀ÷ ÷ Ž Ð�Е�•÷ ÈçÜfÇ‹.Z �‰ ‚wÎ÷ lÿƒ`Âe4ò ²ã.€ 2 ÷ Fȥȥ .È¥=È¥oÈ¥ É.¦ 0÷ ÷ .ë€ ² ²,‡2 ÷ R/‰Ö Þ.Ì ‡€pXXX11 .WORD DTASER .ENDC .IFNZ  LP11 ! PC11R ! PC11P ! CR11 ! TM11 ! XXXX11 .WORD LPTSER .ENDC .IFNZ  PC11R ! PC11P ! CR11 ! TM11 ! XXXX11 .WORD PTRSER .ENDC .IFNZ  PC11P ! CR11 ! TM11 ! XXXX11 .WORD PTPSER .ENDC .IFNZ  CR11 ! TM11 ! XXXX11 .WORD CDRSER .ENDC .IFNZ  TM11 ! XXXX11 .WORD MTASER .ENDC .IFNZ q OF XMITER STATUS REGISTER BIT (R3)+,#100 ;ACTIVE? BNE CHO01  ;IF SO, THEN WE MUST BUFFER CHARACTER MOVB R2,(R3)  ;OUTPUT THE CHARACTER BIS #100,-(R3) ;ENABLE THE INTERRUPT CHO06: CHO02: +CLC ! CLV  ;REPORT GOODNESS RTS PC  ;RETURN TTIR02: JSR R5,ASCOUT ;OUTPUT CR,LF + CRLF0  ;THE STRING RTS PC  ;RETURN TTOT05: DECB DDHORZ(R1) ;CORRECT THE POSITION BNE CHO02  ;IF NOT AT END THEN RETURN MOVB DDHORC(R1),DDHORZ(R1);ELSE RESET POSITION BR rJBDA: WORD. 0  ;POINTER TO CURRENT FIP USERS JOB DATA AREA ;COMMON ITEMS NEEDED FOR FILE PROCESSOR OPERATIONS FIPUNT: BYTE. 0  ;DISK UNIT --- ORDER COUNTS --- FIPGEN: BYTE. 0  ;GENERIC MODE --- ORDER COUNTS --- FIPCLU: WORD. 0  ;FILE CLUSTER SIZE FIPMUC: WORD. 0  ;UFD/MFD CLUSTER SIZE ;FILE PROCESSOR OVERHEAD DATA AREA FIPSP: WORD. 0  ;VALUE OF SP AFORE FIP STOPS FIPR6: WORD. 0  ;VALUE OF SP AFTER FIP STARTS I: WORD. 0  ;BLOCK OFFSET OF LINK **ORDER** J: sÄl€lmó ÷ Dò•ÈÅ€‡½.ò ÷ ¼ÿ÷ äÿ¢ ò  ’À÷ ¦ÿÈ• ÷ žÿв õ. Äàó Ä3‡3 À ×-þÿ$.® $þÿÍ.> óââââBˆbbbbæÎeÊÿÞóM ®.d óÅ@ ÿ‹4'�ÿ 6L3 ÿ62 [46$6Þ.Š ‰×'þÿ$w€‰ÄBó‹ Ëââ¦Âüå^sÇ.° ÷ J÷ ‚bb¾3 ×'þÿ$ãV(Å wøö­ßfÔS Ùf¬Z".Ö €„¦Â�â…âNˆ…b�b‚t XXXX11 .WORD XXXSER .ENDC ; IO BUFFER SIZES SIZES: .WORD 512. ;DISK .WORD 128. ;KB: .IFNZ TC11 ! LP11 ! PC11R ! PC11P ! CR11 ! TM11 ! XXXX11 .WORD 510. ;DT: .ENDC .IFNZ  LP11 ! PC11R ! PC11P ! CR11 ! TM11 ! XXXX11 .WORD 128. ;LP: .ENDC .IFNZ  PC11R ! PC11P ! CR11 ! TM11 ! XXXX11 .WORD 128. ;PR: .ENDC .IFNZ  PC11P ! CR11 ! TM11 ! XXXX11 .WORD 128. ;PP: .ENDC .IFNZ  uCHO02  ;AND EXIT ;HANDLE TABS ON OUTPUT TTOTAB: TSTB TTSTS2(R1) ;TAB OR NO TAB BPL TTOT04  ;HARDWARE TAB SO DO IT MOV #040,R2  ;SOFTWARE TAB SO CHANGE TO SPACES JSR R5,TABBER ;AND DO THE TABBING + CHO04  ;TO THIS OUTPUT ROUTINE RTS PC  ;AND EXIT TTOT04: JSR R5,TABBER ;SET THE POSITION WITH + TTOT05  ;A DUMMY ROUTINE .IFNZ KB2741 ! KBFILL ! KBRUB TTOCU9: MOV #1,-(SP) ;SET TAB FILL FACTOR .ENDC TTOT02: .IFZ KB2741 ! KBvBYTE. 0  ;SEGMENT OFFSET OF LINK **ORDER** K: BYTE. 0  ;CLUSTER NUMBER OF LINK **ORDER** ; DISK REQUEST BLOCK FORM FIR INTERNAL FIP FIPAR: WORD. 0  ;QUEUE LINK WORD FIJOB: WORD. 0  ;FIP JOB NUMBER WORD. QFIP  ;L3 QUEUE TASK BITS WORD. 0  ;DISK ADDRESS WORD. 0  ;CORE ADDRESS FICNT: WORD. 1  ;COUNT AND UNIT WORD. 0  ;FUNCTION WORD. 0  ;MISC PASSED WORD WORD. 0  ;PHYSICAL DISK ADDRESS WORD. 0  ;DISK OPTIMIZATION wófffÎEf7.ü ÷ þ‚ ÷ ¡´´‡÷ ¾ÿ Ó�Ó•| &¸." "“K÷ Hˆ÷ ðïw�Ä÷ �ýÀE&€y gxAn.H ¾‰¦a…2 @áw í &è.n 4*áw a€rƒaƒàòR ,8^ ö.” Â`BaaÅ`Õ$åƒ ý‡…`f•ƒ ýƒM.º ‚4`4`Í AAcB †E ÷ Võ�5`ˆ.à ò `Ec à÷ B€5àÍ AEbB!ó† àEà:. EmÍ EcAAlB øƒ5`õµ òx CR11 ! TM11 ! XXXX11 .WORD 82. ;CR: .ENDC .IFNZ  TM11 ! XXXX11 .WORD 512. ;MT: .ENDC .IFNZ  XXXX11 .WORD XXXSIZ ;XX: .ENDC ; IO FLAGS AND MAX LENS IOFLG: .BYTE ARYIOB!0 ;DISK .BYTE 14.*18.+1 .BYTE ARYIOB!FORCE ;KB: .BYTE 0  ;SPECIAL .IFNZ TC11 ! LP11 ! PC11R ! PC11P ! CR11 ! TM11 ! XXXX11 .BYTE ARYIOB!0 ;DT: .BYTE 14.*18.+1 yFILL ! KBRUB BR CHO07  ;IF NO FILLING THEN SEND CHARACTER .ENDC .IFNZ KB2741 ! KBFILL ! KBRUB TTOCU1: JSR PC,CHO07 ;IF FILLING SEND CHARACTER MOVB TTSTS3(R1),R2 ;AND GET THE FILL COUNT BIC #-7-1,R2 ;CLEAR OFF THE EXTRA BITS BEQ TTOVT2  ;IF FILL=0 THEN EXIT NOW TTOT09: DEC R2  ;COUNT DOWN BEQ TTIME1  ;DONE (COUNT IS ON STACK) ASL (SP)  ;INCREASE FILL COUNT BR TTOT09  ;AND LOOP... .ENDC ;HANDLE FORM FEEDS ON OUTPUT TTOFF: .IFNZ KBFILL ! KB27zWORD. 0  ;PHYSICAL DISK UNIT * 2 ; SAT LIST AND LOGIN CONTROL STATUS GETCLS: BYTE. 1 BYTE. 2 BYTE. 4 BYTE. 10 BYTE. 20 BYTE. 40 BYTE. 100 BYTE. 200 BYTE. 0 FIPNLG: BYTE. 0  ;NON-0 FOR NO LOGINS ; BASES FOR SYSTEM FILE ON UNIT 0 OVBASE: WORD. 0  ;OVERLAY FILE BASE ERBASE: WORD. 0  ;ERROR MESSAGE FILE BASE SWBASE: WORD. 0  ;SWAP AREA DISK FILE BASE BFBASE: WORD. 0  ;BUFFER FILE B{5`}., ïCmCaƒàæ`5 à ‡÷ ¤þ ‚€ù.R j÷ ˜þô•ô•÷ ¸.„Äo2“˜ "2’.x  @þÿ   ÂeD&÷ ¦þa²2 � Bx8"Õ.ž „“2œ 2œ‡÷ <þô•÷ dÖÿ% † ž:Lž:LM.Ä 6È�‰÷ Bþô• ÷ Fõ‡÷ ,þ  6¬.ê ÃeÂæ ý&÷ þÃe£ ýè. ô•à@÷ ²ûPˆ÷ ªû@ˆÁÅÿ 6‡'"&6.6 w |.ENDC .IFNZ  LP11 ! PC11R ! PC11P ! CR11 ! TM11 ! XXXX11 .BYTE ARYIOB!FORCE ;LP: .BYTE 0  ;SPECIAL .ENDC .IFNZ  PC11R ! PC11P ! CR11 ! TM11 ! XXXX11 .BYTE ARYIOB!FORCE ;PR: .BYTE 14.*9.+1 .ENDC .IFNZ  PC11P ! CR11 ! TM11 ! XXXX11 .BYTE ARYIOB!FORCE ;PP: .BYTE 14.*9.+1 .ENDC .IFNZ  CR11 ! TM11 ! XXXX11 .BYTE ARYIOB!FORCE ;CR: .BYTE 14.*5.+1 .ENDC .IFNZ  }41 !KBRUB MOV #9.,-(SP) ;SET THE FORM FEED FACTOR BR TTOVT1  ;AND CONTINUE .ENDC ;HANDLE VERTICAL TABS ON OUTPUT TTOVT: .IFNZ KBRUB BITB #TTRUB,TTSTS2(R1);SCOPE? BNE TTODA0  ;YES - THEN CURSOR CONTROL .ENDC .IFNZ KBFILL ! KB2741 ! KBRUB MOV #5.,-(SP) ;SET THE VT FACTOR .ENDC TTOVT1: BITB #TT35,TTSTS2(R1);HARD OR SOFT? BNE TTOT02  ;IF HARD, THEN DO IT JSR R5,ASCOUT ;IF SOFT, THEN SEND LINE FEEDS + LINES4  ;4 LINE FEEDS .IFZ KBFILL ! KB2~ASE ; DEVICE NAME TABLE DEVNAM: WORD. "DF  ;RF DISK WORD. "DK  ;RK DISK WORD. "DP  ;RP DISK DEVNKB: WORD. "KB  ;TTY KEYBOARD WORD. "DT  ;DECTAPE WORD. "LP  ;LINE PRINTER WORD. "PR  ;PAPER TAPE READER WORD. "PP  ;PAPER TAPE PUNCH WORD. "CR  ;CARD READER WORD. "MT  ;MAGTAPE WORD. XXXXXX  ;XX DEVICE WORD. 0  ;TABLE'S END UPDATE: WORD. 0  ;FILLED TO UPNOP OR UPDAT0 PRINU0: WORD. 0  ;FILLED IN LATER PRINU1: WOCClÀ”À  ƒ’‰Ä2`)„:Ö(2Ê.\ &TGwÞÿw! Îw˜ô7­¤éj³sZq(Œ.‚ ›‰`   ôÕ ‡ÌE€‡ÌU‡ÌE0.¨ ‡ÌU ‡÷ "ý Ó�Ó•PSHˆ÷ Zÿ&Ô6N(6[.Î Ã÷ dÁe ýÞ …„?6Ñ  "6Ž.ô �‰ÂÂe @œÀŠ�ÊÒ”ÀŠüÀ÷ $Áe� Î.ÂÂe „”“”Ä üw„w CÃl& ñ #„:Ö(î.@€ TM11 ! XXXX11 .BYTE ARYIOB!0 ;MT: .BYTE 14.*18.+1 .ENDC .IFNZ  XXXX11 .IFNZ XXXFRC  ;XX: .BYTE ARYIOB!FORCE .ENDC .IFZ XXXFRC .BYTE ARYIOB!0 .ENDC .IFNZ XXXHOR .BYTE 0 .ENDC .IFZ XXXHOR UNITNO = XXXSIZ/14. .IFG UNITNO-18. UNITNO = 18. .ENDC UNITNO = UNITNO*14.+1 .BYTE UNITNO .ENDC .ENDC ; EMT TABLE EMTBL: .WORD FIP ;CALFIP .WORD�741 ! KBRUB RTS PC .ENDC .IFNZ KBFILL ! KB2741 ! KBRUB BR TTOVT2 .ENDC TTOCR: .IFNZ KBFILL ! KBLA30 ! KB2741 ! KBRUB JSR PC,CHO07 ;SEND OUT THE .IFNZ KBRUB BITB #TTRUB,TTSTS2(R1);SCOPE TYPE? BNE TTOCR6  ;YES, NO NULL FILL EVER .ENDC .ENDC .IFZ KBLA30 ! KB2741 .IFNZ KBFILL ! KBRUB MOVB TTSTS3(R1),R2 ;GET THE FILL COUNT BIC #-7-1,R2 ;CLEAR THE EXTRA BITS BNE TTOCR4  ;IF FILL THEN SEND IT MOVB DDHORC(R1),D‚RD. 0  ;THIS ALSO ; FILE PROCESSOR RESIDENT FUNCTION CONTROL TABLE ; THIS TABLE GIVES THE LOCATION AND RESIDENCE OF THE FILE PROCESSOR ; FUNCTIONS. IT IS ADDRESSED BY THE FIRQB FUNCTION FIELD (FQFUN). ; LO BYTE OF THE ENTRY GIVES THE LOGICAL SEGMENT THAT THE CODE LIVES ; IN THE OVERLAY FILE. IS THE OFFICIAL NAME. ; HI BYTE OF AN ENTRY GIVES THE STARTING ADDRESS OF THE FUNCTION ; WITHIN THE SEGMENT. THE OFFSET IS IN WORDS (BYTES/2). FIDSP =.  ;THE FIRƒΔ÷ ¡‡ÂrB‡a•a•Âr@øÜ gxA"+.f×'þÿôƒHÃm÷怉ŽÜæÿ‡w BE$„:Ö(—.ŒÃ÷ ¦æŽÄ–& Œ ‡Ž ãûÎ —#Ž–’.²ÎeÒÿÎe Îe “•ä ì€ Š‡w ÷ á ‡Ãï„:Ö(" gxA».Ø2׬ƒÿ5"4Љw a‡w É24„:Ö($„:Ö(‘.þ‡& &÷ Dþ„€‡&Àö&Àò  ¬.$€”ÀE€ÿÀå0  ± à $…æà …à °„ USERIO ;.READ .WORD USERIO ;.WRITE .WORD CORE. ;.CORE .WORD ULOCK ;.LOCK .WORD DIRAC ;.DAR .WORD DIRAC ;.DAW .WORD IOWAIT ;.WAIT .WORD SLEEP. ;.SLEEP .WORD KILL. ;.KILL .IFNZ TM11 .WORD MTSPC. ;.MTSPC .ENDC ; LEVEL 3 SERVICE DISPATCH TABLE L3QTBL: .WORD TIMERS .WORD FIPRET SCHEDX: .IFZ JCUNUM .WORD SCHED .ENDC .IFNZ JCUNUM .WORD SCHJCU .ENDC .WORD SWPRET .WORD FILRET .WORD DTSYM .WORD BUFQ .WORD BUF…DHORZ(R1);ELSE CORRECT COUNTER RTS PC  ;AND EXIT .ENDC .ENDC .IFNZ KBLA30 TTOCR1: MOVB #7,-(SP) ;LA30 FILL IS THE ONLY 7 FILL BICB TTSTS3(R1),(SP)+;DID THE BIC CLEAR ALL 3 BITS? BNE TTOCR5  ;NOPE MOV #20.,-(SP) ;IF SO BREAK IS ON CHAR #20. .ENDC .IFNZ KBLA30 ! KB2741 TTOCR2: MOVB DDHORC(R1),R2 ;GET MAX POSITION SUB DDHORZ(R1),R2 ;AND FIND CURRENT POSITION BIC #-377-1,R2 ;CLEAR OUT THE JUNK BITS CMP R2,(SP)+ ;FAR ENOUGH? BLO TTOCR3  ;YES (<†ST TABLE ENTRY ADDRESS . = FIDSP+.FQ ; PUSH-POP TABLE AREA DEFINED TABL2 = . . = 256.*2+. ;THERE ARE 256. PP'S BOTTRO = .-1&177740+40 ;BOTTOM FOR RUN-ONLY RSTS DOTABV = 46  ;VERB TABLE OFFSET TLDIPT = .  ;ED AND TR VERBS . = 21.*2+. TLDIPB = .  ;TR VERBS . = 40.*2+. TLDIPL = .-2-TLDIPT+DOTABV BOTTOM = .-1&177740+40 ;MAKE A NICE ORIGIN .LIST .NLIST .TITLE SYIO.P11 HARDWARE IO DEFINITIONS ;COPYRIGHT 1971,1972 BY ‡.J…ƒe…`…ÄÕå Ùÿâ ðÿß ÝÿÜ ûÿ¦.p ýÿ ÄÕ±ÄÕÎÖ ÄՀ áÄŒ‡.–æfæúÃó,TV‚a•a•@À OÀ`a•a•ôf ú:.¼B‚ †ó Vˆ …óÿÿV3 T‡Â Â`ó V7.âˆb󄼉ÅeÖ 2ˆâüÈ úæfæúÃó,Af"ú&ø.TVí‚a•a•@À ÷ &a•a•@€ †÷ ó Ü[g3&[g3›..V ÷ À÷ ÅÀ ÷ ñ÷ ŽU¥ñ€" ä€%hfX*[g3" z€%,ˆSMQ .IFNZ TC11 ! CR11 ! TM11 .WORD DTQCON .WORD DTWCON .ENDC .IFNZ CR11 ! TM11 .WORD CDRL3Q .ENDC .IFNZ TM11 .WORD MTACON .WORD MTADNE .ENDC ; TTY TERMINAL CHARACTERISTICS LIST (DC11'S AND DL11E'S ONLY) TTSLST = KL11+1*8. TTSLST = .-TTSLST ; INDEX VIA TTSLST+LINE NUMBER*8. ; "TTSLST" IS BUILT AS FOLLOWS: ; WORD 1 DC11 OR DL11E INPUT CSR ; WORD 2 DC11 OR DL11E OUTPUT CSR ; BYTE 3.0 TTSTS1  STATUS 1 BITS ; BYTE 3‰20.) ADD #40.,R2  ;IF >=20. THEN ADD 40. AND ASR R2  ;DIVIDE ASR R2  ;BY 16. ASR R2  ;FOR FILL TTOCR3: ASR R2  ;OR 2 IF <20. .ENDC .IFNZ KBFILL ! KBLA30 ! KB2741 ! KBRUB TTOCR4: MOVB DDHORC(R1),DDHORZ(R1);RESET INTERNAL COUNTER TTIMER: MOV R2,-(SP) ;SAVE THE NULL COUNT TTIME1: CLR R2  ;SEND NULLS JSR PC,CHO07 ;NOW SEND 1 NULL DEC (SP)  ;MORE? BGT TTIME1  ;YEP TTOVT2: TST (SP)+  ;NO, DUMP STACK RTS PC  ;AND EXIT .ENDC ŠDIGITAL EQUIPMENT CORP., MAYNARD, MASS. ;VERSION: 04A  EDIT: 09 ;DATE:  26-MAY-72 BY: MHB ; RC DISK DEFINITIONS RCCS =177446  ;CONTROL STATUS RCDA =177442  ;DISK ADDRESS RCBA =177452  ;BUS ADDRESS ; RF DISK DEFINITIONS RFDAE =177470  ;EXTENDED DISK ADDRESS RFCS =177460  ;CONTROL STATUS RFCLR =000400  ;CLEAR CONTROL STATUS ; RK DISK DEFINITIONS RKDA =177412  ;DISK ADDRESS RKER =177402  ;ERROR REGISTER RKCS =177404  ;CONTROL STATUS ; RP DISK DE‹.TU¥ºæXæ¦! a•a•@Àma•a•BÂm‚ Ý X¦&9.z†Â "I ‡Â Ò ù€ "ù‡æXæ¦÷ X$¦([gð2�. a•a•@Àm€ †À ÷ w*õÀ Àeð ö€÷ ´ [g3 t'èK$~#DT1:IN/E PASS 2 LINKw,d~-11 V007A PASS 1 #OV‰ NAME OF INSTALLATION: ú,Z‰à‰}} ENTER THE AC POWER FREQUENCYÔ,€‰ IN HERTZ. THE ONLY RESPONSES ARE '60W,¦‰' AND '50'; THE DEFAULT IS '60'. ENTEỦR YOUR FREQUENCY: ™à‰ AC FREQUENCY: …,ø‰ªŠªª IS YOUR CLOCK A KW11L (STAND‰,ŠARD LINE FREQUENCÓY CLOCK) OR A KW11P Ø,DŠ(PROGRAMMABLE CLOCK). ANSWER 'L' FOR ¹,jŠA KW11L OR 'P' FOR A KW11P. THE DEFAU(,�ŠLT IS A KW11L. YOURS IS: CLOC/,¶ŠK: |‹ºº IF YOU WISH LINE PRINTER¾,ÜŠ LISTINGS OF THE RSTS ASSEMBLIES THATn,‹ ARE TO FOLLOW, THEN ANSWER WITH A 'YÙ,(‹'; ELSE ANSWER WITH 'N' FOR NO LISTINGo,N‹S. THE DEFAULT IS NO LISTINGS. YOUR AX,t‹NSWER:  LP LISTINGS: ¤�  Ò,š‹ THERE ×ARE TWO OPTIONAL MODULES THAT Ý,À‹YOU CAN INCLUDE AND SAVE ON YOUR RSTS¤,æ‹ SYSTEM DISK FOR LATER CALLING. THEY º, ŒARE: DSKINT RSTS V4A DISK INITIALIZATX,2ŒION PROGRAM INIT IS USED TO CREATE R�,XŒSTS V4A NON-SYSTEM DISKS. ROLLIN RO�,~ŒLLIN-ROLLOUT DISK+DECTAPE+MAGTAPE COPYK,¤Œ ROLLIN IS USED TO DUMP OR LOAD DISKA,ÊŒS TO OR FROM EITHER DECTAPE OR MAGTA,ðŒPE. ANSWER THE QUESTION ABOUT THE MO²Û,�DULE'S NAME WITH EITHER 'Y' TO INCLUD®,<�E THE MODULE OR 'N' TO OMIT THE MODUL¬,b�E. THE DEFAULT IS TO OMIT THE MODULE. Q,ˆ� INCLUDE MODULE 'DSKINT': DS\ ®�KINT: ,¶�Ú� INCLUDE MODULE 'ROLLIN': BÜ� ROLLIN: *,ì�’Žžž ENTER NUMBER OF DL11E TYPE I©,ŽNTERFACES ON THE SYSTEM. THE VALUE ISV,8Ž BETWEEN 0 AND 16, AND THE DEFAULT VALÑ,^ŽUE IS 0. YOU HAVE HOW MANY ßDL11E TYPEŸ,„Ž INTERFACES: DL11E'S: V�ª„,ªŽª IF YOU WISH AUTOMATIC POWER FAIL R±,ÐŽECOVERY, THEN ANSWER THIS QUESTION WIF,öŽTH A 'Y'; ELSE ANSWER WITH A 'N'. THEx,� DEFAULT IS TO HAVE THE POWER FAIL CO­,B�DE. HOW ABOUT YOU:  POWER FAIL" h�: š,l��™™ ENTER THE HIGHEST JOB NUMBERb,’� YOU WANT FOR YOUR SYSTEM. IT MUST BEÎ,¸� BETWEEN 1 AND 17. THERE IS NO DEFAUL�,Þ�ãT FOR THIS VALUE. YOUR HIGHEST JOB NUMB�BER IS: b� MAX JOB NUMBER: Ö,(�(‘÷÷ ENTER THE NUMBER OF KL11 PLU,N�S DL11A PLUS DL11B TYPE INTERFACES ON},t� THE SYSTEM. NOTE THAT THIS VALUE DOES´,š�N'T INCLUDE THE CONSOLE'S INTERFACE. ,À�THE VALUE, THEREFORE, HAS A RANGE OF 3,æ�0 TO 16. THE DEFAULT VALUE IS 0. YOU „! ‘HAVE HOW MANY INTERFACES: Q#(‘ KL11+DL11A+DL11B'S: Iç,F‘ꑜœ ENTER NUMBER OF DC11 TYPE INô,l‘TERFACES ON THE SYSTEM. THE VALUE IS ',’‘BETWEEN 0 AND 16, AND THE DEFAULT VALU?,¸‘E IS 0. YOU HAVE HOW MANY DC11 TYPE I|#Þ‘NTERFACES: DC11'S: x,ü‘Ø’ÓÓ IF YOU DESIRE THE GENERALIZE�,"’D TERMINAL FILL FEATURE OF THE TERMINP,H’AL SERVICE, THEN ANSWER THIS QUESTION Ó,n’ WITH 'Y'; ELSE ANSWER WITH 'N' FOR NOv,”’ GENERALIZED FILL. THE DEFAULT IS NëO 8#º’GENERALIZED FILL. YOU WANT: Ø’ FILL: Ë,è’¸“ÇÇ IF YOU HAVE ANY SERIAL LA30 a,“TYPE TERMINALS, THEN ANSWER THIS QUES ,4“TION WITH 'Y'; ELSE IF YOU DON'T HAVE¨,Z“ ANY SERIAL LA30'S, THEN ANSWER WITH 'f,€“N'. THE DEFAULT IS THE NO ANSWER. ANY`¦“ SERIAL LA30'S: à,¸“ SERIAL LA30'S: &•NN THISö,Þ“ IS A MULTIPLE CHOICE QUESTION: '1' S*,”ELECTABLE LOWER TO UPPERï CASE TRANSLATÝ,*”ION AND ASCII 33,175,176 ARE ALL ESÑ,P”CAPE '2' NO TRANSLATIONS EVER MADE ANŸ,v”D ASCII 33,175,176 ARE ALL ESCAPE ê,œ”'3' SELECTABLE LOWER TO UPPER CASE TRAê,”NSLATION AND SELECTABLE FOR ASCII 1-,è”75,176 AS ESCAPE THE DEFAULT IS CHOIC=,•E '1'. YOUR CHOICE IS:  LC CONù,4•VERSION: 8–òò ANSWER THIS QUESTI“,Z•ON WITH 'Y' IF YOU HAVE REMOTE TERMINB,€•ALS SUCH AS ANó ASR33 THAT HAVE THE LOC(,¦•AL READER CONTROL FEATURE CALLED XON(Ò,Ì•+XOFF). ANSWER WITH 'N' IF YOU DO NOT.,ò• WANT THE XON FEATURE IN YOUR SYSTEM.`,– THE DEFAULT IS 'N'. YOU WANT: m,>– XON: D—õõ IF YOU WANT THE TERMS,d–INALS THAT CALL IN TO YOUR DATASET TY,Š–PE INTERFACES TO GET AN AUTOMATIC ANSWˆ,°–ER MESSAGE, THEN ANSWER THIS QUESTION,Ö– WITH 'Y'; ELSE ANSWER 'N' AND THEY WY,ü–ILL ÷GET NO MESSAGE. THE DEFAULT IS NOº'"— MESSAGE. DO YOU WANT MESSAGES: Å,D— AUTO ANSWER: ,˜ÊÊ IF YOU,j— HAVE ANY SCOPE TYPE TERMINALS, THEN Aß,�—NSWER QUESTION WITH 'Y'; ELSE ANSWER ×,¶—'N' AND YOU WILL NOT HAVE THE TERMINA,Ü—L SERVICE SUPPORT FOR SCOPE TYPE TERM4,˜INALS. THE DEFAULT IS NO. SCOPE SUPPOR$(˜T: SCOPES: ,>˜J™ THIS MULTIPLE CHOICE QUESTIO ,d˜N IS ABOUT PARûITY GENERATION FOR TERM×,Š˜INALS. YOUR ANSWER AFFECTS ALL TERMIN²,°˜ALS: '1' NO PARITY GENERATION (8 BITS^,Ö˜ SENDABLE) '2' EVEN PARITY GENERATED [,ü˜ '3' ODD PARITY GENERATED THE DEFAULT,"™ IS NO PARITY GENERATION. YOUR CHOICE:øH™ PARITY: o,\™¼šWW IF YOU DON'T HAVE THE RF11 2è,‚™56K FIXED HEAD DISK, THEN ANSWER WITH7,¨™ A '0'. IF YOU DO HAVE THE RF11 DISK, ,Ι THEN IT WILL BE YOUR ÿSYSTEM DISK, AND™,ô™ ANSWER WITH THE NUMBER OF RS11 256K ,šPLATTERS THAT ARE ON THE RF11 CONTROLW,@š(1 TO 8). THE DEFAULT IS AN ANSWER OF,fš '1' MEANING RF11 AS SYSTEM DISK AND í,Œš1 RS11 256K PLATTER ON THE RF11. YOUR |²šANSWER: o¼š RF11: ,Ìš¾›êê IF YOU HAVE THE RK11 CARTRIDð,òšGE DISK CONTROL ON YOUR SYSTEM, THEN l,›ANSWER WITH THE NUMBER OF RK03 PLUS Rh,>›K05 DRIVES THAT YOU HAVE(1 TO 8). IF Y¸,d›OU DON'T HAVE THE RK11 ANSWER WITH A Œ,Š›0. THE DEFAULT IS AN ANSWER OF 0. YOUˆ#°›R ANSWER IS: RK11: ¡,Λ�EE SINCE YOU SAID THAT YOU DON'¨,ô›T HAVE AN RF11 FIXED HEAD DISK AND YO$,œU DO HAVE THE RK11 DISK, I AM ASKING IÝ,@œF YOU HAVE THE RC11 64K FIXED HEAD DIý,fœSK CONTROL FOR USE AS A SWAPPING AND 6,ŒœOVERLAY DEVICE. IF YOU DO, THEN ANSWER¡,²œ WITH THE NUMBER OF RS64 64K PLATTERS,Øœ ON THE RC11(1 TO 4); ELSE ANSWER 0 FÐ#þœOR NO RC11. YOUR ANSWER IS: � RC11: ¬,,�,ž÷÷ ENTER NUMBER OF TU56 DUAL DEü,R�CTAPE DRIVES ON THE SYSTEM. THIS WOULã,x�D BE A NUMBER FROM 1 TO 4 CORRESPONDIN,ž�G TO 2 TO 8 DECTAPE DRIVES. IF YOU HA„,Ä�PPEN TO HAVE NO DECTAPE AT ALL THEN A,ê�NSWER 0. THE DEFAULT IS 1. YOUR NUMBEá!žR OF TU56 DUAL DRIVES IS: ¡ ,ž TC11: ™,<žÈž„„ IF YOU HAVE A HIGH SPEED PAPQ,bžER TAPE READER, THEN ANSWER 'Y'; ELSEr,ˆž ANSWER 'N'. THE DEFAULT IS AN ANSWER[,®ž OF 'N'. YOUR ANSWER IS:  PT R,ÔžEADER: hŸƒƒ IF YOU HAVE A HIGH Ss,úžPEED PAPER TAPE PUNCH, THEN ANSWER 'Y›, Ÿ'; ELSE ANSWER 'N'. THE DEFAULT IS AN ñ'FŸ ANSWER OF 'N'. YOUR ANSWER IS: úhŸ PT PUNCH: ,|ŸJ ÆÆ IF YOU HAVE A CARD READER (BC,¢ŸE IT THE CR11 PUNCHED CARD READER OR l,ÈŸTHE CM11 MARK SENSE CARD READER) THEN,îŸ ANSWER 'Y'; ANSWER 'N' FOR NO CARD REó, ADER. THE DEFAULT IS AN ANSWER OF 'N'ì%: . YOUR ANSWER: CR11: ‰,Z ö ““ IF YOU HAVE THE LP11 LINE PRí,€ INTER, THEN ANSWER WITH A 'Y'; ELSE Af,¦ NSWER 'N' FOR NO LINE PRINTER. THE DE#,Ì FAULT IS AN ANSWER OF 'N'. YOUR ANSWER’ ò : ÿö  LP11: È,¡–¡ˆˆ ENTER THE NUMBER OF COLUMNS P,,¡ON YOUR LP11 LINE PRINTER. THE VALUE m,R¡MUST BE 80 OR 132. THE DEFAULT VALUE I—,x¡S 80. NUMBER OF COLUMNS IS:  …ž¡LP COLUMNS: k,¬¡‚¢ÎÎ ANSWER WITH A 'Y' IF YOUR LP�,Ò¡11 LINE PRINTER HAS A 96 CHARACTER (UE,ø¡PPER AND LOWER CASE) CHARACTER SET; E²,¢LSE ANSWER 'N' FOR ONLY THE 64 CHARACTy,D¢ER SET. THE DEFAULT IS THE 64 CHARACT¢,j¢ER SET. 96 CHARACTERS: LP UC:I,�¢ ’£øø IF YOU HAVE THE TM11 MAGTAœ,¶¢PE CONTROL, THEN ANSWER WITH THE NUMB”,Ü¢ER OF TU10 DRIVES (7 TRACK PLUS 9 TRA#,£CK). IF YOU HAVE NO MAGTAPE, THEN ANSW‰,(£ER WITH A 0. THE DEFAULT IS 0 AND THE,N£ RANGE OF NUMBER OF DRIVES IS FROM 1 �,t£TO 8. NUMBER OF TU10 DRIVES: P š£TM11: M,¢£&¥|| ENTER THE NUMBER OF SMALL (1ƒ,È£6 WORD) BUFFERS YOU WISH TO HAVE FOR ã,î£YOUR SYSTEM. THE DEFAULT IS 64 SMALL BY,¤UFFERS, WHICH SEEMS TO BE A GOODLY NU�,:¤MBER. THE RANGE IS FROM 10 TO 999 SMAü,`¤LL BUFFERS. THE NUMBER OF SMALL BUFFERÊ,†¤S FOR OPTIMUM SYSTEM OPERATION IS A F´,¬¤UNCTION OF THE NUMBER OF JOBS POSSIBLŽ,Ò¤E AND HOW MANY FILES THOSE JOBS WILL Ï,ø¤HAVE OPEN AT ONCE. NUMBER OF SMALL BUFe,¥FERS:  SMALL BUFFERíX´÷ ,¿ ™ÀeÁ‡ýÁ ŠÁ&¿æê�ÎåÖ ‡Îe¿,S: (¦áf,D¥á ENTER THE NUMBER OF BIG (256 WORD)y,j¥ BUFFERS FOR YOUR SYSTEM. THE NUMBER í,�¥IS FROM 1 TO 8. IF YOU SPECIFY A NUMBk,¶¥ER GREATER THAN THE NUMBER OF DECTAPEÀ,Ü¥ DRIVES, THEY WILL GO TO WASTE. THE DE’+¦FAULT IS 1. NUMBER OF BIG BUFFERS: \,(¦ BIG BUFFERS: §ÌÌ THIS Ia,N¦S A MULTIPLE CHOICE QUESTION ABOUT THE ,t¦ DECODE TABLE FOR YOUR CARD READER: ¢,š¦'1' DEC 029 DECODE% Õ•.Õ•U�0Áe1Õ• Áå W C D �eà¾,éÎ ŽeÎ Î ¦ W �0Áå’f$ ¬ º¾,-¢+ W .�0Áå”膾†‡Îe ¢´À”¾,ZˆÒwæˆÒwæ´æˆÜwæˆÜwæ&þÿð n¾,¬<÷ ‡ˆðwæˆðw溳æhõwÁ³Áåþ”À³H¾,¢Á0ˆˆæwæˆæwæˆæwæˆæwæ”­æˆæwæ"¾,Ýxæø¹÷ˆæwæÚ¹·!ˆFæˆðwæˆÒwæü½,\ˆðwæˆÒwæˆðwæˆðwæÞ„æˆðwæˆðwÖ½,Qæ@~æv÷ Ú?ŠÞ· â ÿ•è· ì ÿ•ò÷ °½,Øè†Àˆðwæˆðwæ~æª÷ ?Šæý# TABLE '2' DEC 026 ô,À¦DECODE TABLE '3' IBM 1401 DECODE TABLÛ,æ¦E THE DEFAULT IS CHOICE '1'. YOUR CHO(, §ICE:  CR DECODE: ¾§�� IFÐ,2§ YOU WANT THE SPECIAL FEATURE OF LINE ,X§PRINTER FORMATTING THEN ANSWER 'Y'; Eø,~§LSE ANSWER 'N'. THE DEFAULT IS 'N'. LÁ¤§INE PRINTER FORMATTING: õ,¾§ LP FORMAT: ²©ØØ THE FOLLÿ,ä§OWING QUESTIONS ARE ABOUT OPTIONAL SPE¸, ¨CIAL FEATURES. IF Y·  ÿ•н,s·  ÿ•$÷ Æ,×-¾†Àˆðwæˆðwæd½,U4{æˆðwæ&xæκ÷ˆðwæˆÜwæˆÜwæ>½,;ýÁ Š Á£€ÀõN¢ Y¢F÷ ¸�Àý½,mÁ Š Á–€ÀõN¢ Y¢j÷ ”‹À»7ò¼,€MÀñY¢N¢ ˆ÷ 0¹õ×­¬¬ÀF÷ ̼,!K}ÀN÷ Ò|ÀV÷ Y|À Y¢¸÷ ¼ŠÀƒÂ¦¼,LP÷•ˆÂL÷•0ùõ×­· ,ÿ•· Xÿ•€¼,V&· *Mÿ•íY¢N¢÷ D‰Ê×­Z¼,Ò4�Ê×­ìªÀV· Z,ÿ•`· dUÿ•j· nP4¼,Ûÿ•õY¢N¢D÷ âý'OU WANT THE FEATURV,0¨E DESCRIBED, THEN ANSWER WITH A 'Y'; Ð,V¨ELSE ANSWER WITH 'N' TO OMIT THE FEATP,|¨URE. THE DEFAULT FOR THE FOLLOWING IS º,¢¨'N'. ALL RSTS V4A SYSTEM GET THE AUT^,ȨOMATIC SYSTEM RELOAD AND RE-START FOLm,î¨LOWING A SYSTEM ERROR, BUT THERE ARE ,©SPECIAL ROUTINES THAT ATTEMPT TO RECOVŠ,:©ER FROM MOST OF THESE ERRORS WITHOUT ì,`©AFFECTING MORE THAN THE USER THAT CAU,†©SED THE ER¦ªÀŠ· Ž,ÿ•”· ¼,4˜Pÿ•ž· ¢Uÿ•õY¢N¢x÷ \ªÀè»,“¾· Â,ÿ•È· ÌOÿ•Ò· ÖIÿ•õY¢,»,€N¢/¬÷ Æ©Àò· ö,ÿ•ü· Fÿ•· œ»,o Nÿ•õY¢N¢à÷ Ô§À&· *,ÿ•v»,(0· 42ÿ•Æ<· @2ÿ•ÁH· L2ÿ•í P»,s¬ñX¬ ¬¼l· p2ÿ•‹ *»,•¬�X¬E¬* ¬3˜· œ4ÿ•»,¢9¤· ¨Eÿ•®· ²4ÿ•㺷 ¾Eÿ•Ä· Þº,‰È4ÿ•· ¬»X¬ ¬[è· ì¸º,åXÿ•ò· öÞý+ROR. DO YOU WANT THESE ROUTIy,¬©NES: NO FAIL: Dªww THE Ò,Ò©RECORD I/O FEATURE ENABLES THE VERBS: ‚,ø© LSET,RSET,FIELD,GET,PUT,CVT,XLATE. �+ªDO YOU WANT THE RECORD I/O FEATURE: ªDª RECORD I/O: ¶,Zª’ª// DO YOU WANT THE FILE 'UPDATEÉ€ª' MODE FEATURE: Á’ª UPDATE: W,¤ªÔª'' DO YOU WANT 'PRINT-USING' IN3ʪCLUDED: f,Ôª PRINT-USING: «## 4ÿ•Î ¬ek· Dÿ•’º,É· 4ÿ•Þ ¬âD¬X¬'Elº,¬M ¬ò4¢Z2¢%÷ *«ÀZè†÷Fº,0�÷×­@¥Àú Õ•`³W!.Õ•ü ¢”Û º,ž9¬ß0¬ ¬ç9¬ë0¬ú¹,ðï9¢ò0¢õþÿ,\³Å,ˆ÷ ¤£ÀÌ· Ô¹,ãÐ,ÿ•Ö· ÚTÿ•à· äMÿ•0vù×­òú®¹,I÷   Ä,³ÅÊ÷ ”¢À`ù7÷•eù7÷•jùˆ¹,þ3÷•õY¢ N¢ò÷ ®¡ÀÔ ¬Ø0b¹,½¬hù.÷•mù2÷•rù3÷•wù1÷•é ¬<¹,Úý/DO YOU«!úª WANT THE 'MAT' COMMANDS: ¸« MATRIX: À,(«’¬aa SELECT YOUR MATH PACKAGE FRO[,N«M THE LIST. THERE IS NO DEFAULT FOR TZ,t«HIS QUESTION. 2 STANDARD 2-WORD MA�,š«TH 2E 2-WORD EAE MATH 2X STANDARD ,À«2-WORD WITH NO FUNCTIONS 2EX 2-WORD EÕ,æ«AE WITH NO FUNCTIONS 4 STANDARD 4-Wö, ¬ORD MATH 4E 4-WORD EAE MATH 4X STA,2¬NDARD 4-WORD WITH NO FUNCTIONS 4EX 4-t,X¬Ní2¬ñ3¬õ1¢8¢'J÷ ¡À¹,1Ž· ’,ÿ•˜· œMÿ•¢· ¦Rÿ•¬· °Oð¸,Œÿ•¶· ºFÿ•õY¢N¢’÷ (§ÀÖ· ʸ,òÚPÿ•à· äLÿ•×ù1÷•õY¢tN¢w¤¸,÷ \ À· ,ÿ•· 6ÿ•· 2ÿ•$~¸,Ë· (0ÿ• 09ÿ•6· :2ÿ•@· D0ÿ•X¸,òL1ÿ•R· V0ÿ•\· `4ÿ•f· j1ÿ•ò2¸,z3¢$2¢1¢H÷ @¦ÀŒ· �Rÿ•– ¸,· šCÿ• · ¤,ÿ•ª· ®Rÿ•´· ¸Cÿ•æ·,]{ú1÷•õY¢bN¢e–÷ ~ŸÀÁûÖý3WORD EAE WITH NO FUNCTIONS ENTER MATH×~¬ PACKAGE DESIRED: +’¬ MATH PACKAGE: Ð,ª¬z­ÈÈ IF YOU WANT THE SAMPLE OF THU,ЬE KEYBOARD DIALOGUE ON YOUR LP11 LINE®,ö¬ PRINTER, THEN ANSWER THIS QUESTION W$,­ITH 'Y'; ELSE ANSWER WITH 'N' FOR SAMPz,B­LE ON THE KEYBOARD. THE DEFAULT IS 'Nˆ,h­'. SAMPLE ON LP:  SAMPLE ON LP5 Ž­: V,’­ .TITLE CF.MAC RSTS V4A ;COÕ,¸­PYRI0÷•âÀ·,· æ,ÿ•ì· ðTÿ•ö· úDÿ•0#ú×­ñš·, ÷  ÄñÅ â÷ .�À&· *,ÿ•t·,Ü0· 4Pÿ•:· >Pÿ•Ñú1÷•õY¢N¢N·,|÷ ÞžÀ`· d,ÿ•j· nRÿ•t· xP(·,�ÿ•Ûú1÷•òY¢2N¢5V÷ >žÀšÆ÷ê·,»¨÷   Ä—±Å x÷ è0ú×­0^ú׭ܶ,|ЛÀòÔ÷   Äg±Å¤÷ ΚÀñð÷ ¶¶,  Ä>±Å Â÷ ^™Àlú1÷•tú2÷•�¶,Çò3¢2¢ 1¢ì÷ @˜Àeú1÷•õYj¶, ¢N¢ ÷ \—ÀOúÒý7GHT 1972 BY DIGITAL EQUIPMENT CORPO,Þ­., MAYNARD, MASS. 01754 ;VERSION: 04A“,® EDIT: 11 ;DATE: 07-JUL-72 BY: MHB ¨,*® SYSVEN = 12. ;EDIT NUMBER .MACRO ö,P®.NAME. ;SYSTEM NAME (1. TO 15. CHARS-,v®) .ASCII "ANY SYSTEM NAME" .ENDM Çœ® HERTZ =  ¥®60.,ª® ;AC POWER FREQUENCY IN HERTZ KW11•ЮP = 3Ô®0F,Ù® ;1 IF KW11P CLOCK; ELSE 0 (KW11L) fÿ® POWER = 1÷•ñY¢N¢ D¶,˜$÷ 0_ù×­H–ÀCú1÷•õY¢N¢ H¶,å÷ @•À'ú0÷•/ú2÷•ò3¢2¢ 1¢øµ, r÷ Ò“À&ú1÷•õY¢N¢ Ž÷ ê’ÀÒµ,qú1÷•õY¢N¢ ª÷ þ‘Àòö÷   ¬µ,ĸ¯Å Æ÷ î�Àò ÷   Ä›¯Å †µ,{â÷ H‘Àò. ÷   Äf¯Å þ÷ *�Àð`µ,ºJ ÷ ÂÃÄ=¯Åû ÷ n�ÀÆù0÷•õ:µ, N¢Y¢ : ÷ ¦ŽÀ®ù1÷•õP¢L¢µ, V ÷ ú‰À ’ë ¬ï0¬ó5¢6î´,ꢥ®Á‚ Îý; ¸¯1, ¯ ;1 IF POWER FAIL RECOVERY; ELSE 0 z3¯ JOBMAX = N =¯16.u,B¯ ;MAXIMUM NUMBER OF JOBS KL11 = Õ h¯ f¯0.„,k¯ ;# OF KL11'S (EXCLUDING CONSOLE KL11Ê‘¯) DC11 = ’›¯0.O# ¯ ;# OF DC11'S DL11E = ¨¸¯0.2'½¯ ;# OF DL11E'S KBFILL = ¥Ù¯0@,Þ¯ ;1 IF FILL NEEDED FOR TERMINAL(S); EF°LSE 0 KBLA30 = ÷ \‰Àú Ñ• W¢"Ñ•ø‘�È´,* — €ÿÂE”‚®Á÷þÿ,û¸ ÷ 6ˆÀ · ¢´, S¢Ì ÷ ‡ÀˆÜwæˆÜwæ2xæˆÜwæ x|´,üæŽÃ÷ˆÒwæüwæ�Ã÷ˆÜwæˆÒwæ V´,§HH´ öHHº³  €²³  ¶ RSFEUF BD)OR.W56(2G BIF O;# �³'Z1.‹³ � = F ‡³BUIG BS ERFFBU) RDWO6.(1L ALSMF O;# a³,.O64\³ [ =UFW³$LBSM 0SEEL; 11TMF I'S10TUF O;# 1³,º0.,³Êý? y°0,° ;1 IF SERIAL LA30'S; ELSE 0 KBLC =  ?° e?°1Ø,D° ;1 IF ONLY UC,2 IF UC + 175,176; ELSÂj°E 0 KBXON = °w°0¡,|° ;1 IF XON+XOFF FEATURE; ELSE 0 KBAUÍ¢°TO = §°0q,¬° ;1 IF AUTO ANSWER MESSAGE; ELSE 0 K¦Ò°BRUB = QÙ°0?,Þ° ;1 IF SCOPE TERMINAL(S); ELSE 0 KBP–±RTY = K ±0 ,± ;1 IF “ =11TM 11³úLPR HA C64R FO0 14, ARCH6 9OR F77;3 ù²,0»14ô²  Ó = C UPPTì²ó L) 2.13R O0.(8H DTWIR TEINPRE IN;L Ʋ,.í80Á²  =1C¼²üP1 L0 E LS ER;TEINPRE IN L11LPF I;1 –²,0…‘²` =11Œ²ÌLP 0SEEL; ERADRED AR C11CRF I;1 f²,0µa²� =11\²§CR 0SEEL; CHUN PPETAR PEPAF I;1 6²,0å1²¡ =1P,²ÆýÂýEVEN,2 IF ODD PARITY; ELSE 0 °5± RF11 = >±1.©,C± ;# RS11'S IF RF11; ELSE 0 RK11 = Œ i± |g±0.�,l± ;# RK03'S+RK05'S IF RK11; ELSE 0 RC·’±11 = [—±0.Q,œ± ;# RS64'S IF RC11+; ELSE 0 TC11 =; ± ×ñ1.$,ȱ ;# TU56 DUAL DECTAPE DRIVES IF TC11;jî± ELSE 0 PC11R = E²0,² ;1 IF PAPER TAPE READER; ELSE 0 PC1Š