; PDP-11 DOS SYSTEM MACROS V003A ;COPYRIGHT 1972 DIGITAL EQUIPMENT CORPORATION ; ;  JUNE 1, 1972. .MACRO .PARAM R0=%^O0 R1=%^O1 R2=%^O2 R3=%^O3 R4=%^O4 R5=%^O5 R6=%^O6 R7=%^O7 SP=%^O6 PC=%^O7 PSW=^O177776 SWR=^O177570 .ENDM .MACRO .INIT .LBLCK .MCALL .AMODE .AMODE .LBLCK EMT <^O6> .ENDM .MACRO .RLSE .LBLCK .MCALL .AMODE .AMODE .LBLCK EMT <^O7> .ENDM .MACRO .CLOSE ..kQØr¯”üô@ü,@üž,@H.ükQ@üËx@kÐŽHü£HüIH.ürHü(HüxKH@üúMH€ükeH].ü3fH ”KH€”K` H ”Kö H”KôHä.”K%H”K KH”K[MH”K¸QH€”KàQH@.”KRH”K RH”K™wH”K“yH”KµzH@¬.”K[H ”K-€HC`ÎOHC`ÏOHC`ÐOH™.C`ÑOHC`ÒOHC`ÓOHC`ÔOHC`ÕOHb.C`ÖOHC`×OH C`öOH C`÷OH C`øOH Ö.C`ùOH C`. g¯”; ¨9@; P<@= à@.k€ @kÀ�@|@@½à@üôHÔ.ü,Hüž,HükQHüËxHù`@Y.q!`@t!@t!À@t!@Q@t!€p@Õ.¬!@""�`@µ"€W@t'È@t'€Ô@{.¯-`@å8 Z@09@49€%@59@j@ˆ.69@79@79@@79}@<9@l.<9@@<9}@>9ð@>9@@>9€¢@Ç.D9@D9€%@J9@®9@ ;@. ;À@uL.•€%¯”(Ð &}hjö&h|Ž.áy shX:†(ìX:;d(X:vL(Œ–×f(.Œ–;d(2Œ–vL(ÀRà(*lz‹w(är» (Àärh(ärBx((Î÷æ CREF V004A #Œ–×f‡À À%ü‚’ X:† X:vLŒ–;ddÀ À%ü‚’ X:;d X:vLŒ–vL=À À%ü‚’ X:vL X:vLär» á ò LBLCK .MCALL .AMODE .AMODE .LBLCK EMT <^O17> .ENDM .MACRO .READ .LBLCK,.LBUFF .MCALL .AMODE .AMODE .LBUFF .AMODE .LBLCK EMT <^O4> .ENDM .MACRO .WRITE .LBLCK,.LBUFF .MCALL .AMODE .AMODE .LBUFF .AMODE .LBLCK EMT <^O2> .ENDM .MACRO .OPENO .LBLCK,.FBLCK .MCALL .CODE,.OPEN .CODE .FBLCK,<^O2> .OPEN .LBLCK,.FBLCK .ENDM .MACRO .OPENI .LBLCK,.FBLCK .MCALL .CODE,.OPEN .CODE .FBLCK,<^O4> .OPEN .LBLCK,.FBLCK .E úOH g» @ gh@”’µz@‘.Ì– ’H(qQ€W((; ¨9hÞ; Pq!`h@t!hJ t!Àh"°.t!@Qhn"t!€phn"¬!h¤""�`hµ"€Whjé.ö&h¼t'Èh‚t'€Ôh€¯-`h å8 Zhâë.09hê49€%hÞ59@jhÞ69h 79hÞY.79@hÞ79}hÞ<9hÞ<9@hÞ<9}hÞ .>9ðhÞ>9@hÞ>9€¢hÞD9hD9€%h.J9hÞ®9h¬ ;h&# ;Àh$#uL `;@{L}@kQ€p@kQØr@ý.¹QàL@ R`;@ºWÀ+@X€p@iYày@Ú.¹ZÈd@d^@C`ÎO@C`ÏO@C`ÐO@8.C`ÑO@C`ÒO@C`ÓO@C`ÔO@C`ÕO@£.C`ÖO@C`×O@C`öO@C`÷O@C`øO@0.C`ùO@C`úO@/d@@Ùf Z@¬p<@".¬ppß@Uq@Xq}@$wà~@|~ÈK@ÿ.*’@( g‹w(H g» h ghhHè”’µzh@¯”‚÷ g‹wq.£€€€ñ£€%€€€ñã ärh© òärBxÖ êär» Ç ðärh§ ðärBxÔ èär» Å îärh¥ îärBxÒ æär» à ìärh£ ìärBxÐ äär» Á êärh¡ NDM .MACRO .OPENU .LBLCK,.FBLCK .MCALL .CODE,.OPEN .CODE .FBLCK,<^O1> .OPEN .LBLCK,.FBLCK .ENDM .MACRO .OPENC .LBLCK,.FBLCK .MCALL .CODE,.OPEN .CODE .FBLCK,<^O13> .OPEN .LBLCK,.FBLCK .ENDM .MACRO .OPENE .LBLCK,.FBLCK .MCALL .CODE,.OPEN .CODE .FBLCK,<^O3> .OPEN .LBLCK,.FBLCK .ENDM .MACRO .OPEN .LBLCK,.FBLCK .MCALL .AMODE .AMODE .FBLCK .AMODE .LBLCK EMT <^O16> .ENDM `;h.{L}hÐkQ€phv"kQØrhv"¹QàLhX' R`;h˜%,.ºWÀ+h6%X€phB%iYàyhιZÈdh`%d^hr«./d@h2Ùf Zh¬p .ENDM .MACRO .WAITR .LBLCK,.ADDR .MCALL .AMODE .AMODE .ADDR .AMODE .LBLCK EMT <^O0> .ENDM .MACRO .BLOCK .LBLCK,.BBLCK .MCALL .AMODE .AMODE .BBLCK .AMODE .LBLCK EMT <^O11> .ENDM .MACRO .TRAN .LBLCK,.TBLCK .MCALL .AMODE .AMODE .TBLCK .AMODE .LBLCK EMT <^O10> .ENDM .MACRO .SPEC .LBLCK,.SARG .MCALL .AMODE .AMODE .SARG .AMODX:† X:vL"Œ–;dFÀ À%"ü‚t X:;d X:vL"Œ–vLÀ À%"ü‚t X:vL X:vL"Ô€| ABEILMNOPQRTUZˆär» É òärh© òärBxÖ êär» Ç ðärh§ ðärBxÔ èär» Å îärh¥ î¾Ðü €0ü € €°e€o€‡oÀv‘&… C`ÐO€…C`ÐO€…C`ÒO€…#C`ÒO€Y.䀃t€‘€�µ€ €€½.…C`ÒO€… C`ÒO€…C`ÒO€…C`ÒO€…%C`ÒO€w. €P€ó€„€…;€¯Å.…C`ÎO€…C`ÒO€…C`ÒO€…C`ÒO€…'C`ÎO€u.0³À€ð£€¡®€¨²€€ ²€ €€±.… C`ÎO€…C`ÎO€…C`ÎO€…!C`ÏO€…)C`ÏO€u.Vв€€ñ²€%€€ñ¶€¢º€¤Ø÷&… C`ÏO€…C`ÏO€…C`ÎO€…#C`ÎO€ärBxÆ Úär» · àärh— àärBxÄ  Öär» µ Þärh• ÞärBx Üär» ³ Üärh“ ÜärBxÀ Üär» ± Ú lz‹wärh� Ö lz‹wE .LBLCK EMT <^O12> .ENDM .MACRO .STAT .LBLCK .MCALL .AMODE .AMODE .LBLCK EMT <^O13> .ENDM .MACRO .ALLOC .LBLCK,.FBLCK,.N .MCALL .AMODE .AMODE .N .AMODE .FBLCK .AMODE .LBLCK EMT <^O15> .ENDM .MACRO .DELET .LBLCK,.FBLCK .MCALL .AMODE .AMODE .FBLCK .AMODE .LBLCK EMT <^O21> .ENDM .MACRO .RENAM .LBLCK,.OFB,.NFB .MCALL .AMODE .AMODE .NFB .AMODE .OFB .AMODE .LBLCK EMT <^O20> .ENDM ärBxÒ êär» à ìärh£ ìärBxÐ äär» Á êärh¡ êärBxÎ  àär» ¿  èärh Ÿ  èärBx Ì  àär» ½  æärh �  æärBx Êc.|€ Ø€ € Ø€÷Ø€%€÷ €¬%.…C`ÐO€… C`ÐO€…C`÷O€…C`÷O€…%C`ÎO€5.¢€€@ %€ €€@ŠË€€À Ë€ €€ÀŠ~@€r.…C`ÏO€…C`ÏO€…C`ÏO€…C`ÏO€…'C`ÕO€v.È~@€ù~€%@€ù\!€ˆ42}€s:€€.… C`÷O€…C`÷O€…C`ÔO€…!C`ÎO€…)C`ÏO€.î€ s:€ €€€Š¬:€˜@€@ŠA€€£KðF&… C`ÏO€…C`ÎO€…C`ÏO€…#C`ÓO€^.@€ÿ£K &@€ÿ£Kà8@€þ£K09@€þ£K K@€þ£K¨.…C`÷O€… C`÷O€…ärBx¹ ÖÖ(· ÷ æˆ�¾÷ ¼ Ây(  ÀRà Œ–×f ÀRà X:†¾µ,0R÷ ² Â÷ ¬ ²÷ ¢ ÷ æˆ÷ ù. X:†R X:† X:†²Œ–×f "ÀRàò.T ÀÁ÷ Šæ"ˆÆ¢ÿÁ±±Š*ÀRà  ÀRà" $är» (ärh*z1ŠÁ Á ÷Æå·÷ 9÷ 7 7 ­. ärBxÀRàÀRà Œ–×f"X:† ,&œÀæ|æ!ˆæ æˆæˆÁE .MACRO .APPEND .LBLCK,.1FB,.2FB .MCALL .AMODE .AMODE .2FB .AMODE .1FB .AMODE .LBLCK EMT <^O2> .ENDM .MACRO .LOOK .LBLCK,.FBLCK,.OP .MCALL .AMODE .AMODE .FBLCK .IIF NB,.OP,CLR -(SP) .AMODE .LBLCK EMT <^O14> .ENDM .MACRO .KEEP .LBLCK,.FBLCK .MCALL .AMODE .AMODE .FBLCK .AMODE .LBLCK EMT <^O24> .ENDM .MACRO .EXIT EMT <^O60> .ENDM .MACRO .TRAP .STUS  æär» » ä ô‹wärhx @¤ ô‹w@ärBxe àär» ¹ â lz‹wärh˜ Ê lz‹wärBx­ Þär» · à ô‹wärhi  À ô‹w ärBxv Üär» µ Z„ •HqZärh¹ C`úO€…C`úO€…%C`úO€µ.:ðK@€þ¤K@€õ¥K€˜@€ý¦K@€õ¦Køf€@ð‹.…C`úO€…C`÷O€…C`úO€…C`÷O€…'C`ÏO€Ö.`³KÀ€ðµK€ €ðzQÀD€ @R€@�@R@8€K.… C`ÎO€…C`ÎO€…C`öO€…!C`ÏO€…)C`ÏO€M.†@ œS@€óœS€%@€ó®S@€®S€ @€�pTl&… C`÷O€…C`÷O€…C`ÐO€…#C`ÐO€.¬€€€�pT@8€€€ ”T@€p”T@€ò”T€%@€òOX™.…C`ÏO€… C`ÏO€…C`ÕO€…C`÷O€…%C`÷O€0.Ò€€ OX€ €€‹OX€€ÀñOX€%€€ÀñèY€ b*X:†À| ÀRà ÀRà ÀRàq.º´áS! áSfæ"ˆæ"ˆæ .ˆ‚ Ò•‚& X:†´ ÀRà" ÀRà" X:† ;.à? ŠÀÁ´÷ þ¼Á Â÷ è ÷ & Ö& X:†´ X:†  X:†&X:† ‡.ÄÊ÷ ´ Ž`÷•Ã5÷•÷•7 -"ÊX:† X:†&X:†¤., & ÄÄ÷ Šw r†æB!ˆ‚eŽ ƒŽæ iX:†  Ä (X:† ©.Rˆ7 � ê†ÄÊ÷ ®ŽeÎeÎE··†¦"X:† ,.ADDR .MCALL .AMODE .AMODE .ADDR .AMODE .STUS MOV #^O1,-(SP) EMT <^O41> .ENDM .MACRO .STFPU .STUS,.ADDR .MCALL .AMODE .AMODE .ADDR .AMODE .STUS MOV #^O3,-(SP) EMT <^O41> .ENDM .MACRO .RECRD .LBLCK,.RBLCK .MCALL .AMODE .AMODE .RBLCK .AMODE .LBLCK EMT <^O25> .ENDM .MACRO .DUMP .LOW,.HIGH,.CDE .MCALL .AMODE .AMODE .LOW .AMODE .HIGH .AMODE .CDE EMT <^O64> .ENDM .MACRO .RSTRT .ADDR .MCALL .AMODEzd •HqzärBxÆ Üär» ³ Ü g» ärhM Ü ghärBxZ Ôär» ± z` •Hqzärh• „V •Hq„ärBx¸ ØqQ€WM(÷ æˆw øæ"ˆÆÁ ±Y.Œ–×f ÀRà Ô€| ÀRà"ÀRàs, ±1ŠÁ Á ÷Æå·÷ æF!ˆ·y..…C`ÏO€…C`ÏO€…C`ÏO€…C`ÏO€…'C`ÎO€}.ø[q`"€är€€@ är€ €€@Œêr€€ êr€ €€a.… C`ÎO€…C`ÏO€…C`ÏO€…!C`ÏO€…)C`ÏO€s.Œ©s€³s€€€´s€w€€€ w€ &… C`ÎO€…C`ÑO€…C`ÎO€…#C`ÏO€a.D€€€‹;w€¿‹w€±–w€¸œw€ ðœw[.…C`ÏO€… C`ÎO€…C`ÎO€…C`ÎO€…%C`ÎO€Š.j€%€ðœw@8€ðœwK€ ðžw€²¢w€´â.…C`ÎO€…C`ÎO€…C`ÎO€…C`ÎO€…'C`ÎO€�.�y€€~Ly€˜ Ê"ÀRà&ÀRà .x÷ lÁ¬BÊ ¦ˆ— ÷ 润ˆê" ¬ X:† X:† $X:†¶8&ž¦ˆW °ìw¾þÀ fÎåfà=& ° X:†À X:† lz‹w‘ SA] ç ¼3 ¼¼S.¼· ‡ ð•æ÷ Ö ðH&�X:†ÀRà W.â/ˆÎ5w Âÿƒ&&ˆ& ˆƒÖ ‚÷ ^.p€�À ‡÷ ´Ô Ë  (ÒJÒ� "J‚! .AMODE .ADDR MOV #^O2,-(SP) EMT <^O41> .ENDM .MACRO .CORE MOV #^O100,-(SP) EMT <^O41> .ENDM .MACRO .MONR MOV #^O101,-(SP) EMT <^O41> .ENDM .MACRO .MONF MOV #^O102,-(SP) EMT <^O41> .ENDM .MACRO .DATE MOV #^O103,-(SP) EMT <^O41> .ENDM .MACRO .TIME MOV #^O104,-(SP) EMT <^O41> .ENDM .MACRO .GTUIC MOV #^O105,-(SP) EMT <^O41> .ENDM .MA" är» ärh ärBxÀRàŒ–×f_D·2æ¼æ!ˆ0"ÀRàÀRà2 ¼Ô€|‰ MACRO V004A âÀRàÍ è qQ€WTê.Tw ®JÁ áS! áSfæ"ˆæ"ˆñ‹ñ& Ô€|J X:†  ÀRà" "ÀRà"q.z0ˆÅ� õ‹Ê æ .ˆ‚Ò•? Šw j wˆ& X:†  •HqÊ X:†  &X:† E. tÿÁ Ât÷ @!÷ ÄÄ÷ ¦� ‡Ä¾Þ. X:†  X:†tX:†  •Hq#áy€»€ðây€»€ðãyð@€.… C`ÖO€…C`ùO€…C`ÎO€…!C`ÎO€…)C`øO€.¶üãyh@€ûãyà@€ûãy &@€üãyè&@€ûãy`' &… C`øO€…C`øO€…C`øO€…#C`øO€½.Ü@€ûäy@€øåy€˜@€úæy@€øæyøf€€€ðñyA.…C`øO€… C`øO€…C`øO€…C`øO€…%C`ÏO€â.€»€ðóy}€€Àð z@€à z@€ö z€%@€ö'.…C`ÎO€…C`ÏO€…C`ÐO€…C`÷O€…'C`÷O€,.(Yz€ €€À”z€€À Ñd€‰ €€À €€ €|.… C`ÏO€…C`ÏO€…C`ÔO€…!C`ÏO€…)C`ÏO€m$..Ê RRÊ  ä ÷ &æˆ &戇ÛÀRà ®.T && æ ˆÖ –%òÖ ÷ T ì‡÷Tè¯X:†T&X:†T�.z÷ L÷ 1Äe-Ä`Ä`&7À÷ F  ÀRà X:†Y. Â^Ò• à 7÷ ÷ põR‘û Š÷^ô. X:†^X:;dX:;d &X:†^(X:;d`*Æ÷ ²7 · ÿ ÷ „Å Ôw Ìþƒ‡™. X:vLX:† X:†X:† ÀRà B  èèü.%CRO .SYSDV MOV #^O106,-(SP) EMT <^O41> .ENDM .MACRO .RADPK .ADDR .MCALL .AMODE .AMODE .ADDR CLR -(SP) EMT <^O42> .ENDM .MACRO .RADUP .ADDR,.WRD .MCALL .AMODE .AMODE .WRD .AMODE .ADDR MOV #^O1,-(SP) EMT <^O42> .ENDM .MACRO .D2BIN .ADDR .MCALL .AMODE .AMODE .ADDR MOV #^O2,-(SP) EMT <^O42> .ENDM .MACRO .BIN2D .ADDR,.WRD .MCALL .AMODE .AMODE .WRD .AMODE .ADDR MOV #^O3,-(SP) EMT <^O42> .ENDM &Ä (•Hq¾µ.Æ÷  Ž`·ŠŠÃ5÷Š� ‡w ð„÷ jX:†ŠX:†Š(X:†j\,ì æˆæ ˆ–%Î ŽeÁXÂ^÷ ê ÷d8. ÀRà ÀRà X:†X X:†^&X:†d8.h7 ßÕ}ßd& ĸ÷ °w ¤†æ.X:†hX:†  X:† X:† •Hq¸Â.6B!ˆ‚eŽ ƒŽæâˆÀ|7÷~� ä†. X:†âX:†|X:†"X:†~$X:†.\Å Nľ÷ ¸ŽeÎeÎE·†÷ hÁÂ÷ •Hq¾ÀRà &'.NÀ‹ €€@ñ €€%€@ññ�}€j˜@€x;¯1&… C`ÏO€…C`ÏO€…C`ÎO€…#C`ÓO€^.t;¯B;¯Ì\¯E\¯XHi¯þ$; ¨9; P<= àk€ &kÀ�b.šÈ}‹¯Ì³¯œÖ¯œÖ¯õ$|@½àù` q!`(t!Œ.ÀÖ¯xÖ¯Ö¯Ðׯ}Ú¯êrì t!Àt!@Qt!€p"¬!ž.æÞ¯p!ü¯‚ü¯P‚$°^l°„!í$""�` µ"€Wt'Èt'€Ô$¯-`ë. n°(è÷ 7 ê÷À÷ ˜÷ >÷ ¦÷ w­.Œ–;d X:†êÀRàÀRà$X:;d."Ä÷ FÅ Å%Å%Å%Å% ï X:†“.4Å%‚Å%"†÷ T‘÷ >ã÷ 8ú÷üX:†&X:;d(X:†´&ZÀ÷ Ö· 7 î· · ÷-ï.X:†X:;dX:;dX:;d X:;dô.xæƒ÷âf÷ ÷ D€ÀåÀ ÀeÃá&X:† X:;d X:†(X:;dm.ž C  C ÷ ê%÷-äʇ ‚÷-æŇ) .MACRO .O2BIN .ADDR .MCALL .AMODE .AMODE .ADDR MOV #^O4,-(SP) EMT <^O42> .ENDM .MACRO .BIN2O .ADDR,.WRD .MCALL .AMODE .AMODE .WRD .AMODE .ADDR MOV #^O5,-(SP) EMT <^O42> .ENDM .MACRO .CSI1 .CMDBF .MCALL .AMODE .AMODE .CMDBF EMT <^O56> .ENDM .MACRO .CSI2 .CSBLK .MCALL .AMODE .AMODE .CSBLK EMT <^O57> .ENDM .MACRO .DTCVT .ADDR .MCALL .CVTDT *Ô€|3.‚Ì÷ † Á"÷ FÁ3÷ v ÁÁí ÷ 0Á . X:†Ì X:†" Ô€|3är»  ÀRà�.¨B÷ ` Šw ^Ìw R ÷ wRþÁBÊ ,& Ô€|B X:†Ì X:†  "•Hq€Î¦ˆ¦ˆÉ ÷‡1•Hq}â†X,è. X:†â X:†† X:†X ÀRà, ÀRà»Ô€|è. ERRORS DETECTED: FREE CORE: . –DWORDS # ÑqQ€WÜp.Ü ðH&/ˆÎ5+n°ðn°è!n°€%n°`$å8 Z0949€%59@j&69F.2À+n°ˆ,n°à.n°Kn°ÈK$7979@79} <9(<9@à.Xn° Nn°&Xn°HXn°�[n°}Ó <9}>9ð>9@">9€¢œ.~n°ð}n°€¢q°€%z°dz°xd$D9 D9€%J9®9$ ;.¤é°¼Ré°ày ±� ±Ÿ ±í$ ;ÀuL`;{L}kQ€p&kQØrà.Ê, ±|—1±˜q3±Ð4<±L;,‚÷-i.ÀRàX:†äX:† X:†æ(X:†^"ÄèÀ‡÷- ¼‚ ‡÷- ·‚‡÷-Ê.X:†è ÀRà X:;d X:†X:;d r.Þ²†÷ <7÷ V� ÁÑ B…þÿÅU3&X:†X:;dX:†X:†‘.Åà… …  ÷ ú‰âP—Ä% ŠÀÁ X:† (X:†ý.*÷ ÀwÐþ÷ÿÿÀ÷ øÁ÷ 7Áa&X:†X:†$X:†(X:†?(P÷ 7Àm€ 7÷ & ·À�…. X:†-.CVTDT #^O0,.ADDR .ENDM .MACRO .TMCVT .ADDR .MCALL .CVTDT .CVTDT #^O1,.ADDR .ENDM .MACRO .CVTDT .CDE,.ADDR,.VAL1,.VAL2 .MCALL .AMODE .IF NB,.VAL2 .AMODE .VAL2 .ENDC .IF NB,.VAL1 .AMODE .VAL1 .ENDC .AMODE .ADDR .AMODE .CDE EMT <^O66> .ENDM .MACRO .GTPLA CLR -(SP) MOV #^O5,-(SP) EMT <^O41> .ENDM .MACRO .STPLA .ADDR .MCALL .AMODE .AMODE .ADDR MOV #^O5,-(SP) EMT <^O41> .ENDM .MACRO .GTCIL .w àƒ& &ˆ|.& ˆƒÖ ‚ Âe@÷ F€�À ‡÷ ®Ô !.(Ë  (ÒTÒ�Ê ÁRRÊ JÇT X:†.N&æˆ &戇÷ pÄe5Ä`Ä`&7w(X:†ˆ.tÀ÷ L(ÂÌÒ• à 7÷ ÷ @õR‘L X:†ÌX:;d X:;d $šû Š÷Ì÷ ,7 7 · 7 Ê. X:†Ì X:;dX:vLX:vLX:†î,¶÷÷ ¤÷ „Å]Ìw ƒ‡fÎåã.X:†X:† X:†²$¹QàL R`;ºWÀ+ X€p(iYày³.ðD±Åž\±�±ˆ,’±„:ѱ€X ¹ZÈdd^/d@"Ùf ZQ.ѱ–Õ±@QÕ± gú±,€)²å~±$¬p< ¬ppßUqXq}$$wà~¡<§² q¬|~ÈK*’ïó0X:†X:†X:†  ÀRà.p ÷ \,æÀÐ &&÷ ü÷ êÂeƒÎ îX:† ÀRàX:† .–Ã5ÃðÿÓ Áæ&     ÷ HN †Ñ•ˆ.¼#Ö è€Ñ•@åÖ ÷ ¦ÍÀ� Àe7  ÃSX:† "X:† .â· Á Âäf÷ ú– ‡wêý¦Îm—%^^.X:† X:;d X:†ä$X:† (X:†^Ë.ƒ÷ fÂe¦fÀP þ‚à èÀí� � ÷ Íär»  är» 3..*Âmà÷ "Ò•-�÷ ‚Âmà÷ �‚ 1 MOV #^O107,-(SP) EMT <^O41> .ENDM .MACRO .GTSTK CLR -(SP) MOV #^O4,-(SP) EMT <^O41> .ENDM .MACRO .STSTK .ADDR .MCALL .AMODE .AMODE .ADDR MOV #^O4,-(SP) EMT <^O41> .ENDM .MACRO .RUN .RNBLK .MCALL .AMODE .AMODE .RNBLK EMT <^O65> .ENDM .MACRO .FLUSH .CDE .MCALL .AMODE .AMODE .CDE EMT <^O67> .ENDM ; THE MACRO .AMODE ACCEPTS ONE ARGUMENT AND ; AS A FUNCTION OF THE ADDRESSING MODE OF ; THE ARGUMENT GENERATES THE2X:†X:vL.ÚfwØþ÷ · ÷ ÷ È 7 ÷ ÷ . X:†Œ–;d X:vL$X:†�÷N÷PÅ–Ä….ÀRà X:†N X:†X:†PX:†È.„÷ ÿ÷|r÷ ÷ ž÷ ž÷ 2÷ öw.& •Hq„ X:†|X:†r$X:;dó <ØÉ•Hq q ¯”¯ÞqQ€W> .>Át ÷ ¤ÁâÉ fˆfˆ7 ĸ÷ . X:†t X:†  X:†â"X:† &•Hq¸Ç3; MAGTAP.317 ; MAGTAP.316 9-MAY-73 ; MAGTAP.315 4-MAY-73 ; MAGTAP.314 2-MAY-73 ; MAGTAP.313 1-MAY-73 ; MAGTAP.312 27-APR-73 ; MAGTAP.311 26-APR-73 ; MAGTAP.310 24-APR-73 ; MAGTAP.309 21-APR-73 .TITLE MAGTAP ;********************************************************************** ;* M A G T A P ** ;* ** ;* PROGRAM IDENTIFICATION. 4X:†X:†%T‚ ‚ ‡öŒ–×f {  ÷ ÍX:†Z(.ZÀjP þ‚Àåj€ ‡ cç'ÿÿ ŠfÀÁ»jj (X:†w.€÷ �ÀÐ À%hû‡÷-  &À 5. X:† X:†hX:†  X:†(X:† r,¦77œ0m7 ž7 œ€÷ ž €÷ &f· J*X:† 0X:†žX:†œX:†žr.ÊœÁœÂ÷ „Ò• Ò• Ò• Ò• ŠÀÁ]X:†œX:†œ õ5 APPROPRIATE ; MOV TO -(SP). ; ADDRESS MODES THAT ARE TROUBLESOME (E.G. ; X(SP)) OR UNLIKELY (E.G. SP) WILL RESULT ; IN A .ERROR TO CMO INCLUDING THE ; VALUE OF THE ADDRESS MODE (E.G. X(SP) ; IS REPRESENTED AS 000066), THE ARGUMENT ITSELF ; AND THE TEXT "ADDRESSING MODE ILLEGAL AS SYSTEM ; MACRO ARGUMENT". ; .MACRO .AMODE .ARG SP=%^O6 .NTYPE .SYM,.ARG ;.SYM=ADDRESS MODE. .IF LE,.SYM-^O5 MOV .ARG,-(SP) ;R0 TO R5 .MEXIT .ENDC .IF EQ,.SYM&^O70-^O10 .IF LE,.SYM&^O7-6&dvþ÷ �÷- ë w ÷ €Â).X:† X:† X:†X:;dX:†€€‚÷„x·€7 x÷* •Hq„ X:†xX:†€X:†x`(˜zæ|æâˆ· Áð! ! á„fæ÷.X:†z X:†| X:†âX:;d X:†ð‡¸âˆ‡= X:†â•Hq@kQ4d†lz‹wþ PA` ç ¾/ qQ€W¾qQ€W¾,¾÷ ì7 ‡÷ À7`7 MAGTAP - MAGNETIC TAPE INTERFACE ** ;* SUBROUTINE USING THE KT-11C AND THE GULF CONTROLLER ** ;* ** ;* PURPOSE. ALL COMMUNICATIONS WITH THE MAGNETIC TAPES WILL ** ;* BE THROUGH THIS SUBROUTINE. THIS ROUTINE PERFORMS THE ** ;* FOLLOWING MAGNETIC TAPE FUNCTIONS: ** ;* 1 OPEN (RETURN STATUS) ** ;* 2 CLOSEG.ð÷ ø÷9ž�€wê CROSS REFERENCE T¯X:†žóABLE S-Û 0³.0SMPCE Á ÷ šÁ É f„ X:† X:†  "X:† (VˆfˆÄÄ÷ ^û w ÷ º ÷ÿÿº«& ÄX:†X:†º"X:†ºrí r–Ï vm v÷~²7 º7 ²÷´æh*~X:†²X:†ºX:†²X:†´D.Ž¶æ ˆÁ.! ! á„fæ ˆ‡÷ Â^. X:†E^O6 MOV .ARG,-(SP) ;@R0 TO @R6 .MEXIT .ENDC .ENDC .IF EQ,.SYM&^O60-^O20 MOV .ARG,-(SP) ;[@](R0)+ TO [@](R7)+ .MEXIT   ; #N,@#ADDR .ENDC .IF EQ,.SYM&^O40-^O40 .IF LE,.SYM&^O7-^O5 MOV .ARG,-(SP) ;[@]-(R0) TO [@]-(R5) .MEXIT   ;[@]X(R0) TO [@]X(R5) .ENDC .ENDC .IF EQ,.SYM&^O67-^O67 MOV .ARG,-(SP) ;ADDR AND @ADDR .MEXIT .ENDC .ERROR .SYM  ;.ARG ADDRESSING MODE ILLEGAL .PRINT   ;AS SYSTEM MACRO ARGUMENT. .ENDM ; THE MAF÷ÿÿ7 7 ¤. X:† X:;dX:;d X:;d$X:;d ¸â7 ÷ 7 ÂÌ·Ý.X:;dX:;d X:†X:;d X:†Ìfø ÷P ÷ ‚eÁŽvÁÄ.X:vL X:†P X:vL X:;d‚X:†ŽŸ*ðæâˆ· À�íÀ5'÷U @Œ €÷]. X:†ð X:†âX:;d X:†íX:vLg.0÷ ÿÈ÷U Š/D D` Š™W! ‚;X:;dX:;dX:vLÕ.VW! ‡W! õ· òR‘E”@�Ê À5@ø÷5@H (NO OPERATION) ** ;* 3 READ ** ;* 4 WRITE ** ;* 5 WRITE FILE MARK ** ;* 6 REWIND ** ;* 7 SPACE (+-N) RECORDS ** ;* 10 SKIP (+-N) FILES ** ;* €ˆ""""ˆˆˆˆ """"""""""""""""""""""""""""""""""""ADDB 7B CpE›pA›p +›p_›oQ8}=Ó\ ¢/B@›‚T}¨À\ vI i›ƒT}¨À\ vc ƒ›ër@λz\ þmJ‘›$D€ˆÿ333»»»»;33333333333333333333333#"""""""""ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÅaå €�Í‹æÄ,L ƒÖ B8Žw&ÄB“Œ ýƒàÇ` % &ˆÄ‚— ýÿ}†&*ˆCÒ$’$ŽÎ’Âe ¦’ÎEÀÿ—%>k†ŽŒ †—£Î a€Ê‹a�ÊÕ€ŠŠ¦¦˜æ×$Ž & *ˆÖ PÓ$â ΋ÎŠË  ìË Î‹ ¡Î €Ó óËdË ÎŠ Î �(ˆÍ 1�£'ˆuÊ �÷ ÂQ$f €$Ë5@ ðU ‘C΋ Î �Cb÷ ŽM΋ÍðU@ ððU€ &„ ¥¥„ „ Ñ B"‘â‹Ã Å.&0 æM &0 & þÿ�M 0Š ¶&CRO .CODE SETS UP THE FILEBLOCK ; WITH THE HOW OPEN CODE. ; THE ADDRESS OF THE FILEBLOCK MUST ; BE IN A REGISTER (R0 TO R5) .MACRO .CODE .FBLK,.N .NTYPE .SYM,.FBLK .IF LE,.SYM-^O5 MOVB #.N,-^O2(.FBLK) ;R0 TO R5 .MEXIT .ENDC .ERROR .SYM  ;.FBLK ADDRESSING MODE ILLEGAL .PRINT   ;FOR .OPEN FILE BLOCK .ENDM JX:;d •HqÊ(.|dÅe Åå ïJ‘÷UÅ€ç÷ ‚÷ XX:†dX:vL$X:;d‚Ù ¢ÿ÷�$÷5d7Š÷Ì.X:† X:†$X:†dX:† X:†ÌÎ.º÷ ÷ ‚À ‡ÁÌ! ! á„fæí&X:;dX:;dX:;d X:†Ì¹.à,ˆæ,ˆ÷�ÉÙQ$Ñ §÷ Dý€˜ ƒÿ& ÀRà, ÀRà,X:†ÉX:;dÇ.+ƒfÁˆÑ ƒ ×-‚ƒÿÀŠÂ÷ ýÀ  X:†ˆX:†‚X:†ŠRK¶ X:†  X:†. X:†  (X:†^Å(´Á.æ ˆ÷‹+÷] ÷ |ÿïÀô. X:†. X:† X:†+X:†X:;d¿"Ô,0Š.÷ (÷ ´ÿ÷^÷ ¢‡t.X:†, X:†. X:†^X:;dÀRà É&  # ×EÑEîò*î÷ Ø· †æˆ· †æÀˆœ7O. X:† ÀRàX:† X:†À "X:†+.#ÂÌ ƒ÷ æò¥ ÿÿ†Ò• Ò• Âà£# ¥X:† X:†Ìx.6Ä5 L11 MULTIPLE REWIND ** ;* ALL THREE STANDARD R0S I/O EXITS ARE SUPPORTED BY MAGTAP. ** ;* ** ;* USAGE. THE ASSEMBLER LINKAGE TO MAGTAP IS: ** ;* ** ;* MOV #LIST,-(SP) ;PUSH LIST ADDRESS ON STACK ** ;* EMT MAGTAP ** ;* M; MT4T.03 ; MT4T.02 8-MAY-73 .TITLE MAGT4 .LIST MEB .MACRO LMAC EX,DN,DA,FU,NW,CT,?A,?B,?C,?D MOV #C-REL,R0 MOV R0,-(SP) EMT 71 ; MAGTAP .IFEQ EX-1 MOV (R0),R1 CMP R1,#1 .WORD 1374 ; BRANCH IF NOT EQUAL .ENDC .IFEQ EX-3 INC A BR A+2 A: .WORD 0 TST A BNE A+2 .ENDN.,ùâ‹�âwŽ÷U²Á5AðÿÑ — Pƒ×X:†ŽX:vL &X:†PÐ.R÷U â‹R”‡÷ ðwfþ÷ h7 Å õ‹Ê�ØX:vLÀRà &•HqÊÊ&x÷U& ÷�$÷ H÷ %÷5_.X:vLX:†$X:†X:†X:vLÈ&–A÷ Z>5÷5X÷ ÷5(.X:vL X:†ZX:†XX:;dX:vL 6$´X÷Ì ÷‹ ÷5X÷E{.X:†X X:†Ì X:vL ärBx X:†XÅ&Ð÷=X!OæÈæÀˆ„ †æÀˆæÈ戇4. X:†È X:†À X:†À X:†È $ÀRà!Œ–×fw·Š·Š· B&X:† X:†X:†\I.\à ÷ øf÷ òÿ�Áe0R�‡&ÄÃÁ $X:†�.‚@÷ Ã(÷ @÷ !ñ„‡÷ ¸À š X:†•.¨ Àe ÀeÉÿÀe Àe �‡  ¶ À. X:†  "X:†  $X:†¶ &X:†  (X:†À.ÎV N÷ ô÷Á! ! Â--÷ @ &P ** ;* THE FORTRAN EQUIVALENT CALL IS: ** ;* ** ;* CALL MAGTAP(IADDR(LIST)) ** ;* ** ;* THE FORMAT OF THE LIST IS AS FOLLOWS: ** ;* ** QC TST ERROR(R0) BEQ D JMP MTESE .IFEQ EX-3 B: CLR A RTS PC .ENDC .BOUND C: .WORD 1 ; THREAD .BYTE 4,EX ; MAGTAP, EXIT TYPE .IFEQ EX-3 .WORD B-REL ; RETURN ADDRESS FOR EXIT 3 .IFF .WORD 0 .ENDC .WORD DN,0,0 ; DEVICE NUMBER ERROR WORD SYSTEM .WORD DA-REL,16,20 ; DATARÎÝŠŽ ÷5XÁÖ.X:vLX:†X X:vLX:†ŠX:†XÉ.÷ Ò• ÷ РЀÁœ÷ œ÷Ì ÷c. Ô€|‚ X:†œ X:†œ $X:†Ì&X:vL Å&P ÎÝŠ÷ üÎ M?Š ÂœÒ Â%—. X:†PX:vL  X:†ŠX:vL X:†œ€.2Ìû÷5X[ÁÉ Âž÷ z ÁÉ 1. X:†Ì X:†X X:vL X:†ž $X:vL .XÂ¥÷ dÉ5`Ê•'É5@Ê•G œÀ ? X:†¥ $X:†œ (X:;d ˆ.~H H÷5XS X:†VX:;dX:;d X:†O.ô÷ ‚ ü‡ `÷ &‚ ø‡úÑ ó÷ jÀ‡À ”$X:†Ž.À À &À À €e‡÷ ^@ðµ4ð $‡ # ðÜ.@A‡À €ÀåÀå÷ÿÀåÒÿÀå@‡æ& Î á.fÁ @  ÀàŽ ö ö€Ö ‡&  Î ù £.Œ†Á`@ à ø÷ ÷ 2ÿw ùA ‡@�ðà &ðÒ.²÷ À5÷-÷ Àõ¥ðú†÷ ¦w ¼"X:vLX:;dX:vL ð�.ØÖøAç÷ –· ÷À ‡T;* LIST THREAD ** ;* +2 EXIT TYPE (1-3) DEVICE TYPE ** ;* +4 EXIT ADDRESS (EXIT TYPE 3 ONLY) ** ;* +6 DEVICE NUMBER FOR FUNCTIONS 1-10, SET BITS FOR 11 ** ;* +10 RETURN ERROR PARAMETER (0 TO 14) ** ;* +12 SYSTEM (CALLING TASK #) ** ;* +14 DATA BUFFER ADDRESS U BUFFER ADDRESS SYS SYS .WORD FU,NW,CT ; FUNCTION CODE BUFFER SIZE COUNT .WORD 0,0,0,0 ; STATUS RES1 RES2 RES3 D: NOP ; ************************************************************* .ENDM ERROR = 8. R0 = %0 R1 = %1 R2 = %2 R3 = %3 R4 = %4 R5 = %5 SP = %6 PC = %7 .PAGE ; TASK HEADER .WORD 1 ; THREV÷ D·Ò• · ûƒÂœQ&X:†XX:;d"X:;d (X:†œ[.¤÷ â¬Á ÷ Z€Áœ÷ ê?Š À÷  . X:†¬X:vL X:†œ X:vL $ÀRàš.ÊP÷5$X¥óÖ À ÷ œ÷-ƒ÷Á. X:†XX:† X:†&X:†(X:†Z.ðwœ÷ ŽÀ H H÷5X „÷ À›&Œ–vL X:†œ X:;d  X:†Xí.À£ ˜Ê• „ û‚£ҕ Á÷5XÉ "& X:†£ X:†£ X:vL"X:†X·.<÷ ˆÒ• W2X:vLX:;dX:vLž.þ  ã.$  ñ.J 3$p ÷ · ÅŸõµðø· ²*X:;dX:;dX:;dX:;dð”.Œ ÅŸ‡÷ æÁàƒCà ±@ @ý � ƒ #HX:;dX:;d[.² 1- ‚à`€ ÀEðQ$ƒ'÷ ÎÀr.Ø `À`B ‡÷ ¼ € #Á`B ú‡ ‡ ÀRàÂX ** ;* +16 KPAR6 VALUE FOR VIRTUAL DATA BUFFER ADDRESS (ASR 6) ** ;* +20 SYSTEM VIRTUAL EQUIVALENT OF DATA BUFFER ADDRESS ** ;* +22 FUNCTION (CODES LISTED ABOVE) ** ;* +24 NWORD ** ;* +26 COUNT ** ;* +30 STATUS ** ;* +32 -BACKSPACE FLAG REPEAT COUNT YAD .WORD 4 ; TASK NUMBER .BYTE 20 ; SYSTEM TASK .BYTE 1 ; PRIORITY .WORD MGTS-REL ; ENTRY .WORD 100,0 ; MAX TIME / TIMER .WORD 200 ; STACK SIZE .WORD 0 ; CPU STATUS .WORD 0 ; STACK POINTER .WORD 0 ; ARG .BYTE 6 .BYTE TSKEND-TSTACK/100 .WORD 0,0 ; TPDR 1-2 Z Á÷5X­ÄÉ ÷ fÉ5`½ X:vLX:†Xµ.bÒ•'É5@ò•GÿÿÒ• Ä —÷ ø÷ ”*"ÀRà¦.ˆæÀÀE· "ÁÿÿÑ‹7 †R’@’÷ .f&X:vLX:†" Ô€|ÿÿX:vLw(®÷ ÷ 77 ÷÷  ê釾&X:†X:†ÀRàô‹wä rX  qQ€WX qQ€WÎb.ÎÀÀ] =÷ ¤W!:VW!=R÷ ,÷ Ü mX:;d X:;d .ôwî÷ ÷ Î w` ÷ üW![.þ sô ÷ ž � € #1-Á`õ w/ô (ÀRà—.$  7sô ’$s ÷ h·7 ÷ ^Ÿ& ÀRàô  ÀRà"ÀRàß$J À÷ µŠõ`µ ÀàÁx.ÀRà ÀRà ärBx ärh är» ¡.f BÂà· ‚w :÷�R ýõàõàÅåùï&är»  ÀRà är» "ärhÇ.Œ ƒ à ý‡÷ u5Ї7€÷ fÅ ärh ärBxÀRà.² ABC�ÄÈ …‡\ ** ;* +34 RESERVED ** ;* +36 RESERVED ** ;* ** ;* THE RETURN ERROR CODES ARE AS FOLLOWS: ** ;* ** ;* 0 I/O SUCCESSFUL ** ;* 1 LIST ALREADY IN A QUEUE ] .WORD 0,0,0 ; TPDR3 - 5 .WORD 0,77406 ; TPDR 6 - 7 .WORD 0,0,0 ; TPAR 0 - 2 .WORD 0,0,0 ; TPAR 3 - 5 .WORD 0,7600 ; TPAR 6 - 7 . = . + 12. .CSECT MTTES REL = . TSTACK: .BLKW 200 MGTS: MOV #1000,MTRCC ; WRITE 16 FILES 37 RECORDS PER FILE MTES1: DEC MTRCC BEQ MTESTE MOV #4,R4 ; WRITE COMMAND ^$÷ ¶Í.W!: ÀÀílÀ5ÿ÷U÷ ì5÷ Šõ‹< X:†X:;dlX:vLG.@ÊÁÂ÷ ¤Ø÷ �À5Ò÷U –* •HqÊ ”’µz X:†üô&X:vL.f‡÷ W!= W!:÷ Rô÷ ŒÀ€ µ$X:†ˆ.Œ‡;÷--÷ ¾÷ f÷ ( ÷5 ÀÀEM& X:† •Hq X:†&X:†%&²ßÀU 7P÷÷5÷-Ó. X:†X:†X:†X:† X:†þ.Ð÷­÷U_æ¦f¦6l.ÀRà är» ärh ärBx X:†£.Ø Þ �‚ƒ„À ‡RRRRRRR‡    ”.þ    ‡R”þ⋇Â5Âå¦÷ R‡x.$ Àê €ÊeÊ-‚w rö�7ê ‡>&X:†ê ÀRàär» "X:†êô.J &È üÈê·ê‡ÀÀe 7 1‡À>.X:†êX:†êÀRà"är» (är» ‚.p Àe@7 *‚÷ LÿÃÄ÷ ¼ÿÂÂåV är» är» M,– ²,ú†· òeÂåòe` ** ;* 2 INVALID DEVICE TYPE ** ;* 3 ILLEGAL EXIT TYPE ** ;* 5 ILLEGAL DEVICE NUMBER ** ;* 6 ILLEGAL COUNT FOR SPACE OR SKIP ** ;* 10 ILLEGAL I/O FUNCTION CODE ** ;* 11 FATAL HARDWARE ERROR, STATUS REG IS IN WORD 13 ** ;* 12 MAGNETIC TAPE TIME OUT aMOV MTRCC,R1 BIC #177740,R1 ; WRITE E O F AFTER 31 RECORDS BNE MTES2 INC R4 ; WRITE FILE MARK MTES2: MOV R4,.+56 ; STORE FUNCTION CODE MOV R4,.+136 ; STORE FUNCTION CODE LMAC 2,0,MWOUT,4,150,0 ; WRITE UNIT 0 LMAC 2,1,MWOUT,4,150,0 ; WRITE UNIT 1 BR MTES1 MTESTE: LMAC 2,0,MWRIN,6,0,0 ; REWIND LMAC 1,1,MWRIN,6,0,0 ; REb÷U÷ B÷ ° ÷U.X:† X:† X:†X:vLX:† .ö÷ Ô÷wÈþ÷ ÆÁff÷ Š‘‘÷ ê&X:vL X:;dX:vL X:†L. ” Á÷5 ÷- ÉUff÷ È¡áEª& X:†X:vLX:†•Hq/.B ¿ÿ‰U÷ ä Ñ‹w¤w÷U@÷ h ‡ÄLX:†X:† X:vL�.h  ÂÁ5€Ê5Š ÷UÁ5· , X:† X:†üž,€ X:vL$ü,µ.Ž Á �  H÷þöä 7Z. är» ärhX:;d är» ärhLº 7 à á4@7!û‡Ž&X:;dX:;d ÀRàŒ–;d *  w w w Áññ.X:;d  X:;d X:;därh ärhû$1ŠÁ Á õ€ë&är»  är» ärBxŒ–vL G  ‡_ód ** ;* 13 END OF TAPE DETECTED ;* 14 WRITE COMMAND FOR REAL WITHOUT WRITE RING ** ;* ** ;* COUNT =NUMBER OF WORDS READ BY THE READ COMMAND ** ;* =NUMBER OF RECORDS (+-N) TO SPACE ** ;* =NUMBER OF FILES (+-N) TO SKIP ** ;* =UNUSED FOR ALL OTHER FUNCTIONS *eWIND LMAC 2,0,MWRIN,3,200,0 ; READ LMAC 1,0,MWRIN,3,200,0 ; READ MT100: LMAC 2,0,MWRIN,7,0,3 ; SPACE LMAC 1,0,MWRIN,3,200,0 ; READ LMAC 1,0,MWRIN,7,0,-2 ; SPACE LMAC 2,0,MWRIN,3,200,0 ; READ MT150: LMAC 2,1,MWRIN,3,200,0 ; READ LMAC 2,1,MWRIN,10,0,3 ; SKIP FILES LMAC 1,1,MWRIN,3,200,0 ; READ LMAC 1,1,MWRIN,7,0,51 ; SPACf÷ nw�ÁÁE€ÿwi&X:vLX:vLX:vL(X:vL¼.´ Á Á & fÖ AfÎÁEÿ÷ ž ñ Z Ó •Hq •Hq(Z .Ú wŒÀ Ίý Á 1PÖ �êÁ @ÁEsX:vLär»  är» È. Á%P%ÁEÀÁ% Á5ÁEÿ�Á%p*.& ÁEðÁ%ðÁEÏÿÁ%Á% A A ÁànL Á5÷U@‡{X:vL•Hqë.¼¼¼¼H¼’¼:@¦¼ˆˆ¼œ¼ˆvg; MT5T.03 ; MT5T.02 8-MAY-73 .TITLE MAGT5 .LIST MEB .MACRO LMAC EX,DN,DA,FU,NW,CT,?A,?B,?C,?D MOV #C-REL,R0 MOV R0,-(SP) EMT 71 ; MAGTAP .IFEQ EX-1 MOV (R0),R1 CMP R1,#1 .WORD 1374 ; BRANCH IF NOT EQUAL .ENDC .IFEQ EX-3 INC A BR A+2 A: .WORD 0 TST A BNE A+2 .ENDh* ;* ** ;* PROGRAMMER: 67 ** ;* DATE 10.04.72 ** ;* ** ;* GULF ELECTRONIC SYSTEMS ** ;* ** ;*************************************************************iE MT175: LMAC 2,1,MWRIN,3,200,0 ; READ LMAC 2,1,MWRIN,10,0,-2 ; SKIP FILES LMAC 1,1,MWRIN,3,200,0 ; READ LMAC 3,1,MWRIN,3,200,0 ; READ MT200: LMAC 3,0,MWRIN,7,0,2 ; SPACE RECORD LMAC 3,0,MWRIN,3,200,0 ; READ LMAC 2,3,MWRIN,11,0,0 BR MTEND MTESE: NOP ; USE FOR ERROR BREAK POINT MTEND: EMT 4 ; EXIT ; .WORD 0 MWOUT: .AjqQ€WZ é.Z ‡÷ NÀ5øÿ÷UÀEøÿ‡÷ *÷­ ÀíX:vL"X:†$X:†�.€ € ‡À À‹€ÀeÀ5ÿ÷UÀÿ‡æ¦X:†X:vL(X:†�.¦ ÷ ˜· ÷ ’×­€Ö À‡À ÷ ´÷  X:vLX:†X:†º.Ì F÷€η÷ 6 ‡÷ vÿÃüÿ÷ ‚ÿ�K X:†X:†G.ò ÷ ´Ãøÿ÷ ªÃÀÿÀ0÷UÀ@‡7 º"X:vLi. ˜· & W!@ Î5÷UÎU÷ –òkC TST ERROR(R0) BEQ D JMP MTESE .IFEQ EX-3 B: CLR A RTS PC .ENDC .BOUND C: .WORD 1 ; THREAD .BYTE 4,EX ; MAGTAP, EXIT TYPE .IFEQ EX-3 .WORD B-REL ; RETURN ADDRESS FOR EXIT 3 .IFF .WORD 0 .ENDC .WORD DN,0,0 ; DEVICE NUMBER ERROR WORD SYSTEM .WORD DA-REL,16,20 ; DATAl********* ; .DEF MAGTAP,MTINT .REF PUSHR,POPR,ACTIVE,$CTASK,IOSTAT,DSPTCH,RESTOR,RELTSK .REF UNSPND,QSAVEI,PPASV5,PPASV6,SVPPA,SAVE .REF TSK.PC,QTIME,DQTIME,IOCOMX ; ; M A G T A P E Q U A T E P A R A M E T E R S ; DATUM = 1 MULRE = 1 ; 0 FOR DELETE, 1 TO INCLUDE DEVICE = 2. ;LOGICAL DEVICE TYPE TYPE = 3. ;EXIT TYPE $EXIT = 4. ;I/O COMPLETE ADSCII /THIS BUFFER OF DATA WILL BE USED TO TEST THE MAGNETIC TAPE 62C/ .EVEN MTRCC: .WORD 1234 ; REPEAT COUNT .ASCII /SECOND LINE OF THE WRITE, REWIND, AND READ TEST 62 CHARACTERS./ MWRIN: .ASCII /INPUT BUFFER/ .EVEN .BLKW 30 .WORD 0 .BLKW 200 . = . + 200 TSKEND: .END nW!†X:vL X:vLÝ.> #÷ Š÷% ÷ b÷ @ÎU^W!- }X:vLy.d ÷÷ bW!(÷ °ÎU SW!(÷  W!X:;dX:;dW.Š +÷ >ÎUFÎ5ÎU@ 5÷ ÷ 0.° æW!(Ë53Î ÷5dË5@·¢ÛX:†d&X:†¶.Ö ÷5dÎUÎU7÷ |Ë5÷U© X:†d(X:vL².ü ËEffff÷ ¡¡¡¡PÎU0÷ &÷ ò*" €U‡÷ ¤÷ ,þW!)÷Uo BUFFER ADDRESS SYS SYS .WORD FU,NW,CT ; FUNCTION CODE BUFFER SIZE COUNT .WORD 0,0,0,0 ; STATUS RES1 RES2 RES3 D: NOP ; ************************************************************* .ENDM ERROR = 8. R0 = %0 R1 = %1 R2 = %2 R3 = %3 R4 = %4 R5 = %5 SP = %6 PC = %7 .PAGE ; TASK HEADER .WORD 1 ; THREpDRESS DEVNUM = 6. ;DEVICE NUMBER LEVEL = 7. ;I/O PRIORITY ERROR = 8. ;ERROR PARAMETER SYSTEM = 10. ;RESERVED (SAVE TASK NUMBER) DATA = 12. ;ADDRESS OF DATA BUFFER DTPAR = 14. ;KPAR6 VALUE FOR VIRTUAL DATA BUFFER ADDRESS DTVIRT = 16. ;SYSTEM VIRTUAL EQUIVALENT OF DATA BUFFER ADDRES FUNCT = 18. ;FUNCTION CODE NWORD = 20. q; UPDATE 9/29/72 ROS3.SYS ; UPDATE 09.20.72 ;ROS3.SYS ; UPDATE 8/23/72 ROS3.SYS ; UPDATE 8/17/72 ROS3.SYS ; UPDATE 8/15/72 ROS3.SYS ; UPDATE 8/1/72 ROS3.SYS ; UPDATE 7/31/72 ROS3.SYS ; UPDATE 7/28/72 ROS3.SYS ; UPDATE 07.21.72 ROS3.SYS ;* ;* G E N E R A L S Y S T E M E Q U A T E S ;* $1145 = 1 ;1 = 11/45 0 = NOT 11/45 r‡÷ އ¶X:vLô‹wG IX 9 qQ€WX qQ€WD ç.D 7 jÁO÷ ˵@1Q¤Ëµ 0Ñ‹·¢,µ Ô€|OX:;d$X:†Ò.j 7 DÁU˵@!Q¤·¢ыʋÑ‹€’ÀEÿ&¿ Ô€|UX:†3.� À À €eÀ Àm77 À� € À Àm à7 Ü.är» X:†X:†ärBx $X:†.¶ Ì Ñ‹çX:†ô‹w| keX ¶ qQ€WX qQ€WÀ k.À ÷5dÉ‹ ·¢sAD .WORD 5 ; TASK NUMBER .BYTE 20 ; SYSTEM TASK .BYTE 1 ; PRIORITY .WORD MGTS-REL ; ENTRY .WORD 100,0 ; MAX TIME / TIMER .WORD 200 ; STACK SIZE .WORD 0 ; CPU STATUS .WORD 0 ; STACK POINTER .WORD 0 ; ARG .BYTE 6 .BYTE TSKEND-TSTACK/100 .WORD 0,0 ; TPDR 1-2 t ;BUFFER SIZE IN WORDS COUNT = 22. ;SEE DEFINITION ABOVE STATUS = 24. ;HARDWARE STATUS REGISTER RES1 = 26. ;RESERVED 1 RES2 = 28. ;RESERVED 2 RES3 = 30. ;RESERVED 3 ; MTDVLM = 1 ;HIGHEST LOGICAL DEVICE NUMBER (0 & 1) MTMREW = 177774 ;COM OF DEFINED LOGICAL UNITS MTREP = 18. ;MAG TAPE REPEAT COUNT (4N+2) ; .IFZ DATUu$1125 = 0 ;1 = 11/25 0 = NOT 11/25 $1120 = 0 ;1 = 11020 OR LESS (11/05, ETC.) $KT11C = 1 ;1 = KT11C SEGMENTATION ;0 = NO SEGMENTATION $FPP = 0 ;1 = FLOATING POINT PROCESSOR IS IN SYSTEM .IFZ $1125!$1145 .IFNZ $KT11C!$FPP XXXXXXXX .ENDC .ENDC $RASM = 1 ;1 = ASSEMBLER IS IN SYSTEM .IFG $KT1vW U†W U†÷U~.X:†dX:† Ô€|U Ô€|U(X:vL~.æ J’÷ Ô‹“€ —¢—¢ ÷U ŠîX:vL&X:vLï ŠÊÕ€‡—Ô€|O·O iqQ€W ,. À ÷ ‡÷ 4÷ Þ÷5÷U@÷ ôX:†$X:†#.: ÷ Žï÷Uë‡÷ ô Œ ÷ N· ÷ æþ÷ ›X:vL"X:;d` PÁÂ&w†; X:† X:†&Œ–×f »  · w .WORD 0,0,0 ; TPDR3 - 5 .WORD 0,77406 ; TPDR 6 - 7 .WORD 0,0,0 ; TPAR 0 - 2 .WORD 0,0,0 ; TPAR 3 - 5 .WORD 0,7600 ; TPAR 6 - 7 . = . + 12. .CSECT MTTE5 REL = . TSTACK: .BLKW 200 MGTS: MOV #1000,MTRCC ; WRITE 16 FILES 37 RECORDS PER FILE MTES1: DEC MTRCC BEQ MTESTE MOV #4,R4 ; WRITE COMMAND xM MTWORD = 167540 ;WORD COUNT REGISTER MTSTAT = 167542 ;STATUS REGISTER MTCOMM = 167544 ;COMMAND REGISTER MTMEMO = 167546 ;MEMORY ADDRESS REGISTER .IFF MTSTAT = 772520 ; STATUS REGISTER MTCOMM = 772522 ; COMMAND REGISTER MTBCNT = 772524 ; 2'S COMPLEMENT BYTE COUNT REG MTMEMO = 772526 ; MEMORY ADDRESS REGISTER .ENDC ; ; COMMAND CODES FOR MAGNETIC TAPE CONTROLLER .IFZ y1C-1 XXXXXXXX .ENDC $DELAY = 2 ;INDICATES TYPE OF MEMORY AND IS USED ;IN SOME DELAY LOOPS ;1 = 1.2 US CORE ;2 = 850 NS CORE ;3 = 11/45 SOLID STATE MEMORY ; STANDARD REGISTER DEFINITIONS R0 = %0 R1 = %1 R2 = %2 R3 = %3 R4 = %4 R5 = %5 SP = %6 z,÷X:†,qQ€Wn ].n ÷ p÷ ÷÷ ^÷ øÀ÷ V ÷�K& •Hq  X:†•HqX:†.” .÷U ÷ Š÷ ÷ $ÁÂ÷ :w".X:†.X:†X:† X:† "X:†$º ž÷ ÷÷ ¼ÿ÷5d7 |.•Hq  X:†•HqX:†X:†d`Ö 7 ÷ ¨ÿ‡�X:†X:†ô‹w -  £¼ r qQ€W¼ qQ€Wâ á.â ÷ ìÁÂ÷ À÷ ì÷ ø÷ ,‡÷ 6 {MOV MTRCC,R1 BIC #177740,R1 ; WRITE E O F AFTER 31 RECORDS BNE MTES2 INC R4 ; WRITE FILE MARK MTES2: MOV R4,.+56 ; STORE FUNCTION CODE MOV R4,.+136 ; STORE FUNCTION CODE LMAC 2,0,MWOUT,4,150,0 ; WRITE UNIT 0 LMAC 2,1,MWOUT,4,150,0 ; WRITE UNIT 1 BR MTES1 MTESTE: LMAC 2,0,MWRIN,6,0,0 ; REWIND LMAC 1,1,MWRIN,6,0,0 ; RE| DATUM READ = 1 WRIT = 2 ;WRITE BUFFER WRFM = 4 ;WRITE FILE MARK WEXG = 10 ;WRITE WITH EXTENDED GAP SPCF = 20 ;SPACE FILE FORWARD BCKF = 40 ;BACK SPACE FILE SPCR = 100 ;SPACE RECORD FORWARD BCKR = 200 ;BACK SPACE RECORD REWD = 400 ;REWIND ENAB = 1000 ;ENABLE INTERRUPT OFFL = 20}PC = %7 .IFNZ $FPP AC0 = %0 ; AC1 = %1 ;FLOATING AC2 = %2 ; POINT AC3 = %3 ; ACCUMULATOR AC4 = %4 ; DEFINITIONS AC5 = %5 ; .ENDC ; .IFNZ $KT11C $ROSM = 100000 ;ROS MASK FOR SYSTEM TASKS TO USE .ENDC ;TO 'OR' WITH ROS ADDRESSES TO POINT .IFZ $KT11C ~ X:† X:†G. ä ÷ ÿ ÷ üþ‡÷ b÷U‡70÷0 X:vL&X:†0Ò..2÷ ’ÂŽŠJ‘Ò‹÷ œ— ®ø‡Á¯¡˜þ%.X:†X:†2 X:†Ž X:†® $X:†¯+.TÉ• wÜ ‡Â&÷ R‘(÷ p— eù‡â‹e& X:†Ü X:;d&X:† $X:;de%.z÷÷5 XÁ[÷ ‚÷ 8÷ BýÂÀ ÷ a& X:†X Ô€|["X:;d&X:;d . â•-À÷ â• �À�Š÷ ê ‡Äâ•z X:;dX:†Š¨WIND LMAC 2,0,MWRIN,3,200,0 ; READ LMAC 1,0,MWRIN,3,200,0 ; READ MT100: LMAC 2,0,MWRIN,7,0,3 ; SPACE LMAC 1,0,MWRIN,3,200,0 ; READ LMAC 1,0,MWRIN,7,0,-2 ; SPACE LMAC 2,0,MWRIN,3,200,0 ; READ MT150: LMAC 2,1,MWRIN,3,200,0 ; READ LMAC 2,1,MWRIN,10,0,3 ; SKIP FILES LMAC 1,1,MWRIN,3,200,0 ; READ LMAC 1,1,MWRIN,7,0,51 ; SPAC€00 ;OFF LINE CLEA = 40000 ;CLEAR CONTROLLER MTDVS = 14 ; SHIFT COUNT MTINB = 1000 ; INTERRUPT ENABLE MTCLR = 30000 ; CLEAR CONTROLLER MTRWD = 100 ; TEST IF REWINDING MTUIC = 10000 ; UNIT NUMBER INCREMENT .IFF OFFL = 0 ; SET OFFLINE READ = 2 ; READ RECORD WRIT = 4 ; WRITE RECORD WRFM = 6 ; WRITE FILE MARK SPCR = 10 ; SPACE RECORD BCKR � ; TO USER ASR 4 $ROSM = 0 ; .ENDC PS = 177776 ; $DEBUG = 1 ; ROS DEBUG SWITCH $CORAL = 0 ; CORE ALLOCATION ; =0 SOFTWARE ; =1 HARDWARE ; ; ; TASK CONTROL SYSGEN EQUATE CARDS ; NPRIOR = 10. ; NO. OF SOFTWARE PRIORITY LEVELS PRIBKG = NPRIOR ; PRIORITY OF BACKGROUND $BATCH = ‚$Æ  à ÷ ˆ Áe0J�Ä ò‡ÎÔ€|[«[TABLE OF CONTENTSÜqQ€Wâ].â÷ ú7 Â8À ÷ ÀÒ— <÷‡ÒÀ ª& ÀRà X:†8X:† X:†<5.÷ r‡÷U÷U÷ €÷  ÷ ˆ‡CïX:vLX:vLý..÷U‡÷ ¦Å ÷ "ö÷ €ôù‡C!ôw|¼ X:vL�.Tƒ ÷ è Œ ÷ P `ƒ ý‡‡Š ÊE‡ÊU‡Â@.z÷ ÷ (   ÷U€7÷ &X:;dƒE MT175: LMAC 2,1,MWRIN,3,200,0 ; READ LMAC 2,1,MWRIN,10,0,-2 ; SKIP FILES LMAC 1,1,MWRIN,3,200,0 ; READ LMAC 3,1,MWRIN,3,200,0 ; READ MT200: LMAC 3,0,MWRIN,7,0,2 ; SPACE RECORD LMAC 3,0,MWRIN,3,200,0 ; READ LMAC 2,3,MWRIN,11,0,0 BR MTEND MTESE: NOP ; USE FOR ERROR BREAK POINT MTEND: EMT 4 ; EXIT ; .WORD 0 MWOUT: .A„ = 12 ; BACKSPACE RECORD WEXG = 14 ;WRITE WITH EXTENDED GAP SPCF = 10 ; SPACE FILE FORWARD BCKF = 12 ; BACK SPACE FILE REWD = 16 ; REWIND MTDVS = 10 ; SHIFT COUNT MTINB = 20101 ; INTERRUPT ENABLE CLEA = 10000 ; CLEAR CONTROLLER ENAB = 100 ; INTERRUPT ENABLE MTCLR = 1400 ; CLEAR CONTROLLER MTRWD = 2 ; TEST IF REWINDING MTUIC = 400 ; UNIT NUMBE… 1 ; BATCH OPTION .IFLE NPRIOR ; XXXXXXXX ;NPRIOR MUST BE GREATER THAN ZERO .ENDC MXTASK = 20 ; MAX # OF CORE TASKS IN SYSTEM NLTASK = 1 ; LARGEST TASK # OF TASKS LOADED WITH SYSTEM ;NOTE: IF OVERLAYS ARE USED, THEN THE ;FIRST OVERLAY TASK NUMBER IS MXTASK+1 OVTMIN = MXTASK+1 ;FIRST OVERLAY TASK NUMBER OVRLAY † X:;d X:vL&X:;d  ‡¤Œ–;d  ÷¶X:;dqQ€W¤3.¤‡ƒ ƒ ¦÷ Â÷ Œ ÷ Šü÷ VýÊ`õŠ÷‹  &ärBx ž.Ê7 7 ÷ nü÷ :ý‡ƒ ƒ à ÷ ŒBGW!<!UX:† X:†Q.ð÷ î@@B! à €÷ ØÀ’ÀE€ÿ÷ 0í}X:;d’.÷ ¶õ‹Êã à (€Á )÷ ô&÷ – ÷ v Á •HqÊ£.<Œ÷ ëà € (‡÷U&÷ j€e � X:vLqSCII /THIS BUFFER OF DATA WILL BE USED TO TEST THE MAGNETIC TAPE 62C/ .EVEN MTRCC: .WORD 1234 ; REPEAT COUNT .ASCII /SECOND LINE OF THE WRITE, REWIND, AND READ TEST 62 CHARACTERS./ MWRIN: .ASCII /INPUT BUFFER/ .EVEN .BLKW 30 .WORD 0 .BLKW 200 . = . + 200 TSKEND: .END ˆR INCREMENT MDATST = 134600 ; BITS TO TEST IN THE DATUM STATUS REGISTER ENDTAP = 2000 ; END OF TAPE BIT .ENDC ; ; FIRST AND LAST WORDS FOR LIST THREAD MTFRST: .WORD 0 .IFZ $KT11C MTLAST: .WORD MTFRST .IFF MTLAST: .PACK MTFRST CDTLST: .WORD 0 ; USED TO SAVE CURRENT LIST S.V.A. MTPAR5: .WORD 0 ; USED TO SAVE CURRENT LIST PAR5 .ENDC NMTREQ: .WORD -1 ; NUMBER OF (REQUESTS - 1) IN QU‰= 0 ; SYSTEM OVERLAY OPTION OVRLAY = 1 ;SYSTEM OVERLAY OPTION (1 = OVERLAY) ;0 = NO OVERLAY, 1 = OVERLAY .IFNZ OVRLAY ; MAXOVR = 140 ; MAX # OF OVERLAY TASKS IN SYSTEM .ENDC ;(NOT USED IF OVRLAY = 0) .IFZ OVRLAY ; MAXOVR = 0 ;SET TO ZERO ONLY IF NO OVERLAYS .ENDC TASMAX = MXTASK+MAXOVR ;MAXIMUM NUMBEŠ.bW  ÷ Öû÷ ¢ü ‡÷U¢ƒ ƒ à ÷ ÌX:vLm,ˆèœæTÞ ÷UÂÁHL÷ nü ûí¢& •HqTX:vL X:†H•HqV) V°¬ qQ€W° qQ€W¬ô‹wß (X B qQ€WX qQ€W¬{&¬· · ÷ æÃHÄP! W a.X:vL X:vLX:;d X:†H X:†P`.Ê@ü‚÷AFÅ%+Å%-÷€@÷ øõµÊ& X:†@ X:†FX:†@ (•HqÊÉ.ðË5ø· DŒEUE ; ; MAGNETIC TAPE FUNCTION JUMP TABLE MTFCT =.-2 .WORD MOPEN ;OPEN .WORD MCLOS ;CLOSE .WORD MREAD ;READ .WORD MWRIT ;WRITE .WORD MWEOF ;WRITE FILE MARK .WORD MREWI ;REWIND .WORD MSPRC ;SPACE +-N RECORDS .WORD MSKFI ;SKIP +-N FILES .IFNZ MULRE .WORD MUREW ;REWIND MULTIPLE UNITS .ENDC �R OF TASKS (INCL OVERLAYS .IFLE MXTASK ; XXXXXXXX ;MXTASK MUST BE GREATER THAN ZERO .ENDC .IFL NLTASK ; QTAB XXXXXXXX ;NTASK CANNOT BE NEGATIVE .ENDC .IFG NLTASK-MXTASK ; QTAB XXXXXXXX ;NTASK MUST BE <= MXTASK .ENDC .IFNZ OVRLAY ; ; STATE SIZE OF DYNAMIC COŽ ÷ j÷ ’Åå0bab b b ÷mMX:†D`.BD äÅ%.w BÞ�Å%E÷ œæ÷ Æ&X:†BX:†DX:†B$X:;dÃ.<÷ Œ ÷U·÷ ` 7`DÁ@@T@T@Th &X:;dX:vLX:;dX:†D.b÷ D1×"3‚÷ ø· F÷ Ò÷eF÷ D>&X:†DX:†F$X:†F(X:†Dk.ˆì÷ F÷ Ë ú€æ ÷ ì÷ Î5÷ Þ÷ ¸X:†Fd.®Ú÷ Ö÷ ÀÎ óÖ ÷åF· DÌ÷ F÷ Æû†hX:†FX:†D"� ; MAGNETIC TAPE RETURN AFTER INTERRUPT JUMP TABLE MTRET =.-2 .WORD MOPEN ;OPEN .WORD MCLOS ;CLOSE .WORD MRREA ;READ .WORD MRWRI ;WRITE .WORD MRWEO ;WRITE FILE MARK .WORD MRREW ;REWIND .IFZ DATUM .WORD MSPRC ;SPACE +-N RECORDS .IFF .WORD MRPRC .ENDC .WORD MSKFI ;SKIP +-N FILES .I‘RE STORAGE IN ROS ; $DYNSZ = 54000 ; RESERVE DYNAMIC CORE POOL .ENDC ; ; THE FOLLOWING IS A LIST OF PRIORITY PROPERTIES ; +1 = TIME SLICE PRIORITY (CORE OR OVERLAY) ; 0 = FIXED OVERLAY TASK (MAY BE CORE) ; -1 = FREE TASKS (CORE OR DYNAMIC OVERLAY) ; PRIP01 = -1 ; PRIORITY PROPERTY LEVEL 1 PRIP02 = -1 ; PRIORITY PROPERTY LEVEL 2 PRIP03 = 1 ; PRIORITY P’X:†F.Ô÷e€F÷‹G÷U€�á b(J’ʃ û÷ ÂX:†FX:†GX:vLL.úŽ ÷5d ‚  òUÿH±r H & X:†dX:vL X:†H &X:†Hf,  ûË €÷UËm@7 7 ÷€7%.X:vLX:†@X:†X:vL X:†Œ.D ÷ ˆ À‡×"Ì̇÷ 0· F÷ B÷ $÷ ¦X:;dX:†F.j÷ 4÷ $÷ ¢l�a þ‡ƒ ù‡¡Á v.�   ‡â b b b ‡ÁwH÷ �à �Å%î.”FNZ MULRE .WORD MUREWI .ENDC MTIMV =.-3 ; TIME OUT VALUE IN SECONDS .BYTE 5 ; READ .BYTE 5 ; WRITE .BYTE 5 ; WRITE FILE MARK .BYTE 180. ; REWIND .BYTE 5 ; SPACE .BYTE 60. ; SKIP .IFNZ MULRE .BYTE 1 ; MULTIPLE REWIND .ENDC .BOUND MTTLI: ;MAGNETIC TAPE TIMER LIST .WORD 1 .WORD 0,0,0 •ROPERTY LEVEL 3 PRIP04 = 1 ; PRIORITY PROPERTY LEVEL 4 PRIP05 = -1 ; PRIORITY PROPERTY LEVEL 5 PRIP06 = -1 ; PRIORITY PROPERTY LEVEL 6 PRIP07 = -1 ; PRIORITY PROPERTY LEVEL 7 PRIP08 = -1 ; PRIORITY PROPERTY LEVEL 8 PRIP09 = -1 ; PRIORITY PROPERTY LEVEL 9 PRIP10 = -1 ; PRIORITY PROPERTY LEVEL 10 PRIP11 = 0 ; PRIORITY PROPERTY LEVEL –¶,÷ $ Á÷  ÷5Xw 7 wôô Ã&X:;dX:†XX:vL "X:vL³.Ü)÷÷ \÷ RÁW" ‰ à ! à ! ¾X:† X:† X:;dÛ*ÃÃC ÷ ÷ à 7 Áþ.X:;dX:;dX:;dX:;d X:;d¤.$É É á á ÷U‡÷U‡÷  À÷ 6 X:;dX:vLX:vL�,J| Á� ƒ Á ÷ ÷  I÷U ‡¥& X:†X:;d"X:vLô‹wŠè!nHXo€¢n�[oà.xÈK˜ ; RSVRD 1 TO 3 .BYTE SECR ; TIMER RESOLUTION .BYTE 20 ; TIMER OPTIONS (J) .WORD 0 ; RESERVED .WORD MTTIM ; OPTIONAL (J=1) ; ; MACRO DEFINITIONS ; .MACRO SAV.56 .IFNZ $KT11C MOV @#$KPAR5,-(SP) MOV @#$KPAR6,-(SP) .ENDC .ENDM ; .MACRO RST.56 .IFNZ $KT11C MOV (SP)+,@#$KPAR6 MOV (SP)+,@#$KPAR5™11 PRIP12 = 1 ; PRIORITY PROPERTY LEVEL 12 PRIP13 = -1 ; PRIORITY PROPERTY LEVEL 13 PRIP14 = -1 ; PRIORITY PROPERTY LEVEL 14 PRIP15 = -1 ; PRIORITY PROPERTY LEVEL 15 PRIP16 = 0 ; PRIORITY PROPERTY LEVEL 16 .IFNZ OVRLAY ; .IFL 16.-NPRIOR XXXXXXXX TABLES AND PARAMETERS CURRENTLY CODED XXXXXXXX FOR MAXIMUM OF 16 PRIORITY Lšv. qQ€Wn qQ€Wo qQ€Wn qQ€Wo qQ€Wx¸yÀ+x N€ˆ,�K€ð˜. qQ€Wy qQ€Wx qQ€W€ qQ€W� qQ€W€‚*ˆ&X‰ qQ€Wˆ qQ€W‰qQ€Wn-.n÷ < C ‡÷ 2 üú÷ * øöÁ  ÷ î è.”÷ n ÷ 4 ÷5@  ƒC BW!&W!pX:†š.º!B ÷ äÁ C ‡C à ƒ ÷ š ÷ (P&X:vLI.à· ÷ ˜ À÷ Ø  ±B À ý÷ ·P\X:vL"X:†(X:†\œ .ENDC .ENDM .PAGE ; S T A R T O F M A G T A P MAGTAP: JSR R5,PUSHR ;SAVE R0-R5 ON STACK MOV 14.(SP),R0 ;R0 = F.W.A. OF LIST SAV.56 MOV #1,R4 ;SET ERROR CODE IN R4 DEC (R0) ;IS THREAD = 1 BNE MTERR ;IF NOT, RETURN ; IS DEVICE TYPE = 4 INC R4 ; SET R4 = 2 CMPB DEVICE(R0),#4 BNE MTERR �EVEL .ENDC ; ; THE FOLLOWING SYSGEN PARAMETERS SPECIFY THE NUMBER OF ; ENTRY'S IN A PRIORITY'S QPART TABLE. IF ZERO, THAT ; PRIORITY WILL NOT BE ALLOWED OVERLAY TASKS. A MAXIMUM ; OF 127 ENTRYS PER QPART WILL BE ALLOWED. ; ****NOTE: BE SURE PRIORITIES GREATER THAN NPRIOR HAVE ; TABLE SIZES OF 0 ; NEQP01 = 10. ; NO. OF ENTRYS QPART LEVEL 1 NEQP02 = 10. ; NO. OF ENTRYS QPART LEVEL 2 NEQP03 = ž.·0\ ·@X—0€÷`Z÷ à €·PXÕ÷U)&X:†\X:†XX:†Z$X:†X1,‡%X:vLlz‹wŠ LIX ã ÐNLl qQ€WÐ J  Î qQ€WÎqQ€W2t2· ÷U‡îX:;d X:vL•HqZH(Z™w[Mö “y%` àQ¸QR Rô K-€[µzsŒ–×fw÷ ^iX:†^Œ–;djÁ^ÂX÷ ö!\  ;RETURN IF NOT 4 ; IS EXIT TYPE 1 OR 2 INC R4 ;SET R4 = 3 MOVB TYPE(R0),R1 ;R1 = EXIT TYPE BLE MTERR ;BRANCH IF .LE. 0 CMP R1,R4 BGT MTERR ; BR IF .GT. 3 ; IS THE FUNCTION CODE DEFINED MOV #10,R4 ;SET R4 = 8 MOV FUNCT(R0),R1 ;PLACE FUNCTION CODE IN R1 MOV R1,RES2(R0) BLE MTERR ;BRANCH IF NEGATIVE CMP ¡ 10. ; NO. OF ENTRYS QPART LEVEL 3 NEQP04 = 10. ; NO. OF ENTRYS QPART LEVEL 4 NEQP05 = 10. ; NO. OF ENTRYS QPART LEVEL 5 NEQP06 = 10. ; NO. OF ENTRYS QPART LEVEL 6 NEQP07 = 10. ; NO. OF ENTRYS QPART LEVEL 7 NEQP08 = 10. ; NO. OF ENTRYS QPART LEVEL 8 NEQP09 = 10. ; NO. OF ENTRYS QPART LEVEL 9 NEQP10 = 10. ; NO. OF ENTRYS QPART LEVEL 10 ¢& X:†^ X:†XqQ€Wö!qQ€W>Ý.>C ÷  !À÷ z  ±B À ý÷ ·Pfþ"X:†(X:†f¡.d·0fê·@dà ·PdæÃ Þ ß÷U‡.X:†fX:†dX:†dX:†&X:vL጖×fq÷ßh…X:†hŒ–;dT÷hdðX:†hX:†dlz‹w ’  ENR Û @DSö qQ€W@Ñ >CRö qQ€W>Ϥ R1,R4 .IFZ MULRE BGT MTERR ;BR IF R1 IS MORE THAN 8 .IFF BGT MT01 ;BR IF MORE THAN 8 .ENDC MOV #5,R4 ; SET LOGICAL DEVICE ERROR CODE MOVB DEVNUM(R0),R1 BLT MTERR ; BR IF NEGATIVE DEVICE NUMBER CMP R1,#MTDVLM ; IS DEVICE NUMBER DEFINED BGT MTERR ; BR IF NOT INC R4 ; SET SKIP OR SPACE COUNT ERROR CO¥NEQP11 = 0. ; NO. OF ENTRYS QPART LEVEL 11 NEQP12 = 0. ; NO. OF ENTRYS QPART LEVEL 12 NEQP13 = 0. ; NO. OF ENTRYS QPART LEVEL 13 NEQP14 = 0. ; NO. OF ENTRYS QPART LEVEL 14 NEQP15 = 0. ; NO. OF ENTRYS QPART LEVEL 15 NEQP16 = 0. ; NO. OF ENTRYS QPART LEVEL 16 ; ; ; THE FOLLOWING ASSIGNS THE START BLOCK IN THE CORE POOL ; FOR A SPECIFIC PRIORITY. ; $SB0¦ Š> qQ€WŠqQ€WŠ_.Š÷ È À÷ 0  À ýƒPñà Ã÷ÿA$°÷j‡×-˜X· tã÷U‡3.X:†j X:†X:†tX:vL•Hqz®zÀv@QdÀ@qQ€WÌm.Ì·Š÷ rE÷ ø Âr÷ lÁwl÷ vÁ.X:vL X:†rX:†rX:†l"X:†lU(òR�÷-n †Á÷ b· n7 pó÷-p.X:†n X:;dX:†nX:†p"X:†pl. †Á÷ H· põÁmÀj€ Ñ­ü€ ¨DE CMP R1,#7 BLT MT02 TST COUNT(R0) BEQ MTERR ;BR IF COUNT IS ZERO CLR NWORD(R0) MT01: .IFNZ MULRE CMP R1,#11 BGT MTERR ; BR IF MORE THAN 9 .ENDC MT02: CLR SYSTEM(R0) ; PLACE LIST IN THREAD MOV @#PS,-(SP) ;INHIBIT INTERRUPTS, SAVE PROGRAM STATUS REG. SPL 7 ;SET PRIORITY TO 7 .IFZ $KT11C ©01 = 0. $SB002 = 4. $SB003 = 4. $SB004 = 4. $SB005 = 4. $SB006 = 4. $SB007 = 12. $SB008 = 12. $SB009 = 12. $SB010 = 12. $SB011 = 0. $SB012 = 0. $SB013 = 0. $SB014 = 0. $SB015 = 0. $SB016 = 0. ; $NBLKS = $DYNSZ/2-1/256.+1 ; NO. OF BLOCKS IN DYNAMIC CORE ; ; THE FOLLOWING ASSIGNS STORAGE BLOCK SIZES FOR EACH PRIORITY. ; A) IF DYNAMIC-CONTª†.X:;d X:†p Ô€|mX:†j"ÀRàM.8Áå^÷ &÷ °⥠ýÒ‹Á€ÁUÁUR�·G Ô€|^X:vL.^r7ЇÂ%ö‚÷ Â|R�‡Ò• ¦Â|Žà�.X:†rX:vL X:†ö X:†| &X:†|º$„¢" ævæˆw Œx7 r‡ˆ. X:†v ÀRà ÀRà X:†xX:†rÔ€|m™ ma•Hq„ù„ J& X:†  ÀRà X:†ÀRà í –¨z¬MOV R0,@MTLAST ;QUEUE IT MOV R0,MTLAST .IFF MOV R0,-(SP) ; STORE SYSTEM VIRTUAL LIST ADDRESS ON STACK JSR PC,SVPPA ; GET LIST'S PPA (PACKED PHYSICAL ADDRESS ) MOV MTLAST,-(SP) ; CONVERT THE ADDRESS OF THE LAST ENTRY IN QUEUE JSR PC,PPASV6 ; GET LAST'S SVA (SYSTEM VIRTUAL ADDRESS ) MOV 2(SP),@(SP)+ ; QUEUE THE CURRENT REQUEST MOV (SP)+,MTLAST MOV 16(R0),@#$­AINS THE LARGEST ALLOWABLE BSIZE ; VALUE ; ; B) IF FIXED OR TIME SLICED-CONTAINS ASSIGNED BSIZE ; VALUE FOR THAT PRIORITY ; .IFL PRIP01 $PS001 = $NBLKS-$SB001 .ENDC .IFGE PRIP01 $PS001 = 4. ; ASSIGN 4 BLOCKS - 1024 WORDS .IFL $NBLKS-$SB001-$PS001 XXXXXXXX ; PRI 1 TOO LARGE .ENDC .ENDC .IFL PRIP02 $PS002 = $NBLKS-$SB00®qQ€W ˜ ÷�·Š÷‡÷�Ä.X:†X:vL X:vLX:†X:vL’.´·Š÷‡É �fAÊ•Á RŒÀ¦.X:†X:vL X:vLX:†X:vL¬.ÚfAœÀ ���ÁŒ¡ ÀÀÀeÊ•…Á JŒÀŠüÒ‹ÀÀ ó�‡ÚÀRà¿×EÑENqQ€W!.÷ È÷÷ wô÷  í÷5ú÷ XZÅ^÷5{ X:†X:vL X:†Xf.<dÅö °KPAR6 .ENDC CMP 16+4*$KT11C(SP),#TSK.PC ; IS CALLER A TASK BNE MT04 ; BRANCH IF NOT MOV $CTASK,R2 INCB IOSTAT(R2) MOV R2,SYSTEM(R0) MT04: MOV (SP)+,@#PS MOV #MTREP,RES1(R0) ; SET REPEAT COUNT AND CLEAR BACK SPACE INC NMTREQ ; BUMP NUMBER OF REQUESTS BNE MTEX2 ;BR IF NOT FIRST IN QUEUE .IFNZ $KT11C MOV R0,CDTLST ; ±2 .ENDC .IFGE PRIP02 $PS002 = 4. ; ASSIGN 4 BLOCKS - 1024 WORDS .IFL $NBLKS-$SB002-$PS002 XXXXXXXX ; PRI 2 TOO LARGE .ENDC .ENDC .IFL PRIP03 $PS003 = $NBLKS-$SB003 .ENDC .IFGE PRIP03 $PS003 = 4. ; ASSIGN 4 BLOCKS - 1024 WORDS .IFL $NBLKS-$SB003-$PS003 XXXXXXXX ; PRI 3 TOO LARGE .ENDC .ENDC ²ÄÄ÷ Òë÷†÷ BÁ0„÷ ’.X:†d •HqÄX:†† "X:†0&X:†„�.b¦& ·À÷ D 'æÁEŠÅÉEßÿÑU· ÀRàÀRà X:†.ˆQa7 Á÷ nÀ÷  à÷5@÷�ÀRà X:†&X:†õ*®Å­ô÷E—ÿ÷Ué÷Eßÿ*÷U*Áì.X:†X:†X:†X:†*"X:†*Ù.Ð&÷ 4÷ L÷†÷ ˆ÷†7 À÷ À �& X:†&X:††X:†† ÀRàzö7 ÷ . öw r‡Ø´SAVE LIST S.V.A. FOR INTERRUPT ROUTINE MOV $KPAR5,MTPAR5 ; SAVE KPAR5 FOR INTERRUPT POUTINE .ENDC MOV FUNCT(R0),R1 ;RETURN JUMP TO ASL R1 JSR PC,@MTFCT(R1) ; ROUTINE CMP RES2(R0),#2 BLE MTXB2 TST R4 BEQ MTEX1 ;BR IF NO ERRORS MTXB2: JSR PC,MTDEQ ; DEQUEUE REQUEST BR MTEXIT MTERR: INC (R0) MOV R4,ERROR(R0) µ .IFL PRIP04 $PS004 = $NBLKS-$SB004 .ENDC .IFGE PRIP04 $PS004 = 4. ; ASSIGN 4 BLOCKS - 1024 WORDS .IFL $NBLKS-$SB004-$PS004 XXXXXXXX ; PRI 4 TOO LARGE .ENDC .ENDC .IFL PRIP05 $PS005 = $NBLKS-$SB005 .ENDC .IFGE PRIP05 $PS005 = 4. ; ASSIGN 4 BLOCKS - 1024 WORDS .IFL $NBLKS-$SB005-$PS005 XXXXXXXX ¶X:† Ô€|rÔ€|rÆr END OF PASS 1'qQ€W ,. — zƒ÷ wÜ Âr÷ VþÁ‰Â&÷ à ÷ �& X:†zX:†r Ô€|‰ "X:;d&<,0†÷ ÷†÷ *÷5dÀ‚Ð,7½.X:††X:††X:†d X:†‚$X:†,&T‚÷ ä÷‹ŠT÷5@XP7 7 Â".X:†‚ X:†ŠX:†XX:;dÀRàî.rÌÀ÷ : $÷ rÊ÷ €ÁÉ5÷ 0þÊ X:†Ì •HqŠ X:†\.˜Á¸ ;STORE ERROR CODE IN LIST MTEXIT: MOV @#MTSTAT,STATUS(R0) RST.56 JSR R5,POPR ;RESTORE REGISTERS MOV (SP)+,(SP) ;MOVE RETURN ADDRESS RTS PC ;RETURN TO CALLE- MTEX1: MOV #MTTLI,-(SP) ;ADDRESS OF MAG TAPE TIMER LIST MOV FUNCT(R0),R1 MOVB MTIMV(R1),-(SP) ; TIMER DELAY JSR PC,QTIME TST (SP)+ MTEX2: CMPB #2,TYPE(R0) ;TYPE 2 ? ¹ ; PRI 5 TOO LARGE .ENDC .ENDC .IFL PRIP06 $PS006 = $NBLKS-$SB006 .ENDC .IFGE PRIP06 $PS006 = 4. ; ASSIGN 4 BLOCKS - 1024 WORDS .IFL $NBLKS-$SB006-$PS006 XXXXXXXX ; PRI 6 TOO LARGE .ENDC .ENDC .IFL PRIP07 $PS007 = $NBLKS-$SB007 .ENDC .IFGE PRIP07 $PS007 = 4. ; ASSIGN 4 BLOCKS - 1024 WORDS .IFLº‚÷ l ÷ dÁÉ¥a¨÷ &þÒ• — þ@ Ô€|‚ X:† (X:†þ®.¾Ú‡÷ 2Õ7 ÷ (À÷ à÷ Ò• ÁØÀRà (X:†H.ä÷ àýÒ• Á÷ èýê ŠÀÁÌ÷ ¤Â̇ù X:† X:†Ì &X:†Ì: ÷ À÷4À�‡Ï X:†•HqŠžŠ =% R G @|Ô€|‚„‚******SYMBOL TABLEqQ€W.À ÷ ’÷ ¨  Ä��… ÷ n· �÷ •X:†X:†$¼ BNE MTEXIT ;BR IF NOT TST SYSTEM(R0) ;SEE IF THIS IS A TASK CALLING BEQ MTEXIT ;BR IF THE CALLER IS NOT A TASK .IIF NE $KT11C ADD #4,SP ; THE CALLER IS A TASK, THE PAR'S CAN GO MOV @#PS,14.(SP) ;PLACE PS ON STACK JSR R5,POPR ;RESTORE REGESTERS CLR -(SP) ;SET INVOLUNTARY SUSPEND FLAG JSR PC,QSAVEI ;AND LET QSAVI SUSPEND THE TASK JMP DSPTCH ½ $NBLKS-$SB007-$PS007 XXXXXXXX ; PRI 7 TOO LARGE .ENDC .ENDC .IFL PRIP08 $PS008 = $NBLKS-$SB008 .ENDC .IFGE PRIP08 $PS008 = 4. ; ASSIGN 4 BLOCKS - 1024 WORDS .IFL $NBLKS-$SB008-$PS008 XXXXXXXX ; PRI 8 TOO LARGE .ENDC .ENDC .IFL PRIP09 $PS009 = $NBLKS-$SB009 .ENDC .IFGE PRIP09 $PS009 = 4. ¾X:vLŒ.B\ý÷ jýÄ †7‹÷ †`÷5 d\ÄEÿšÂç&X:vLX:††X:†d &•Hqš…&h„÷­#— zƒ÷ ªÒÒÒ£.X:†„X:† X:;d# X:†zX:††÷�# ÷-$ — 5.X:†X:† X:;d#X:†X:;d$â.š~ƒ÷ „ÒÒ÷ xÀ‚@a �ø‚‘€` 9& X:†~X:†X:†‚ X:†�î,À‚ó‚Á‚W f÷5dÑÑÄ †Ò�]. X:†‚ X:†‚ X:†fX:†d X:†jÀ.PAGE ; MAGNETIC TAPE INTERRUPT ROUTINE MTINT: JSR R5,SAVE SPL 5 TST NMTREQ BMI MTEYIT .IFZ $KT11C MOV MTFRST,R0 ;PLACE LIST ADDRESS IN R0 .IFF MOV CDTLST,R0 ; PLACE CURRENT LIST S V A IN R0 MOV MTPAR5,$KPAR5 ; GET CURRENT LIST PAR5 .ENDC MOV #MTTLI,-(SP) JSR PC,DQTIME TST (SP)+ CLR R4 ; BRANCH ON FUNCTION CÁ ; ASSIGN 4 BLOCKS - 1024 WORDS .IFL $NBLKS-$SB009-$PS009 XXXXXXXX ; PRI 9 TOO LARGE .ENDC .ENDC .IFL PRIP10 $PS010 = $NBLKS-$SB010 .ENDC .IFGE PRIP10 $PS010 = 4. ; ASSIGN 4 BLOCKS - 1024 WORDS .IFL $NBLKS-$SB010-$PS010 XXXXXXXX ; PRI 10 TOO LARGE .ENDC .ENDC .IFL PRIP11 $PS011 = $NBLKS-$SB011 Â(ä@Àåf�Ä †ÒÒÄ †Ò·}.X:† X:†fX:†X:† X:†Ï"„Ñ�Å Ñ� w‚… wa÷Û.X:†„X:†X:† X:†‚X:†-$€‡·„÷ „‡.X:†X:;d$X:†„X:†„•Hqša&š À Ààà€ààHŒ–;d$ $wŠ#¨X:;d#ô‹wM 3f6ô qQ€W6qQ€W4ý,4ÿ÷•ÿ#‡ÀbÐÈ‚-Èåf æ`æÄODE ON RETURNING FROM AN INTERRUPT MOV FUNCT(R0),R5 ;LOAD FUNCTION CODE (1 TO 8) ASL R5 JSR PC,@MTRET(R5) MOV @#MTSTAT,STATUS(R0) BIT @#MTSTAT,#ENDTAP ; TEST FOR END OF TAPE MARK BEQ MTINT2 MOV #13,ERROR(R0) ; SET END OF TAPE INDICATOR IN LIST MTINT2: TST R5 BNE MTEYIT MTINRE: JSR PC,MTDQXN MTEYIT: JMP RESTOR .PAGE MTDQXN: Å.ENDC .IFGE PRIP11 $PS011 = 4. ; ASSIGN 4 BLOCKS - 1024 WORDS .IFL $NBLKS-$SB011-$PS011 XXXXXXXX ; PRI 11 TOO LARGE .ENDC .ENDC .IFL PRIP12 $PS012 = $NBLKS-$SB012 .ENDC .IFGE PRIP12 $PS012 = 4. ; ASSIGN 4 BLOCKS - 1024 WORDS .IFL $NBLKS-$SB012-$PS012 XXXXXXXX ; PRI 12 TOO LARGE .ENDC .ENDC .IÆ. X:;d# X:†bX:†‚ X:†f $X:†`Z XXˆw ÂXb×-„Zƒ÷5Ï. X:†X X:†X X:†bX:†„ X:†Zh"pdÀXȆà„ÈåXàæ¾.X:†d X:†XX:††X:†„ X:†X<ŠRæXˆw ŒXT÷fÓ. X:†R X:†X X:†X X:†T X:†fš(ž‚÷Z„‡÷ &&f÷‹Š%÷ "Â.X:†‚ X:†Z X:†„X:†ŠX:;d^.¾Þ÷ Á–÷ @Á÷ · Ò•+ ŠÀŠ.X:†È JSR PC,MTDEQ ; DEQUEUE REQUEST CMPB TYPE(R0),#2 ;TYPE 2 EXIT BNE MTIN00 MOV SYSTEM(R0),-(SP) ;PLACE TASK NUMBER ON STACK CLR -(SP) ;PUSH 0 ON STACK JSR PC,UNSPND TST (SP)+ ;POP OFF ERROR CODE MTIN00: CMPB TYPE(R0),#3 BNE MTIN02 MOV R0,-(SP) ; LIST ADDRESS MOV SYSTEM(R0),-(SP) ; TASK NUMBER JSR PC,IOCÉFL PRIP13 $PS013 = $NBLKS-$SB013 .ENDC .IFGE PRIP13 $PS013 = 4. ; ASSIGN 4 BLOCKS - 1024 WORDS .IFL $NBLKS-$SB013-$PS013 XXXXXXXX ; PRI 13 TOO LARGE .ENDC .ENDC .IFL PRIP14 $PS014 = $NBLKS-$SB014 .ENDC .IFGE PRIP14 $PS014 = 4. ; ASSIGN 4 BLOCKS - 1024 WORDS .IFL $NBLKS-$SB014-$PS014 XXXXXXXX ; PRI 14ÊÞX:† Ô€|–X:;dX:;d*äÁÜ÷ Hw &w A÷8�€«.X:†Ü X:;d& Ô€|AX:;dÔ€|–– PAGE úqQ€W-.ÀÀÀfA÷ �…fˆÝ5@úÎ.,÷ ”çw ¢è‚÷ ˜· Œ†w Þÿ†�œˆ1Â’Å.X:†Œ X:†† X:†� "X:†ˆ (X:†’N.R ƒR”þ€˜áÅ€ùÉ•?ö€˜ðµÊûÒ¥ ç "•HqÊ‹.xÒ• Ò• Âà£# „ †æŽæˆw ˆÿ�Ö& X:†Ž ÀRà &ÀRÌOMX ; EXECUTE I/O COMPLETE SUBROUTINE MTIN02: TST NMTREQ BMI MTDQD ; BR IF -1 MOV MTFRST,R0 ;GET NEXT LIST ADDRESS .IFNZ $KT11C MOV R0,-(SP) ; CONVERT LIST ADDRESS JSR PC,PPASV5 ; FROM PACKED PHYSICAL TO MOV (SP)+,R0 ; SYSTEM VIRTUAL MOV R0,CDTLST ; SAVE FOR NEXT MOV $KPAR5,MTPAR5 ; INTERRUPT MOV DTPAR(R0),@#$KPAR6 Í TOO LARGE .ENDC .ENDC .IFL PRIP15 $PS015 = $NBLKS-$SB015 .ENDC .IFGE PRIP15 $PS015 = 4. ; ASSIGN 4 BLOCKS - 1024 WORDS .IFL $NBLKS-$SB015-$PS015 XXXXXXXX ; PRI 15 TOO LARGE .ENDC .ENDC .IFL PRIP16 $PS016 = $NBLKS-$SB016 .ENDC .IFGE PRIP16 $PS016 = 4. ; ASSIGN 4 BLOCKS - 1024 WORDS .IFL $NBLKS-$Îà (X:†�Mž„ †æŽæ†ˆ· Œ‡ž& X:†Ž X:††X:†ŒŒ–×fӷЉ·Š‹÷ ²h&X:†‰ X:†‹qQ€W²qQ€W²L,²÷�÷ *÷ Zó¯ҕ Á÷ >·Þ‡�. Ô€|�X:;d X:†¯ Ô€|$X:†Þ Ô€|�i�.MAIN.ÏqQ€WÖ].Öà ÷ ~f÷ ðÿ�Áe0R�‡&Ä{ &X:†‹.üÃ@÷ Ã(÷ @÷ !ñ„‡ ÷ <z X:†‘("Ð ;INITIALIZE KPAR FOR DATA BUFFER ADDR .ENDC MOV FUNCT(R0),R1 ;RETURN JUMP TO ASL R1 ; FUNCTIONAL JSR PC,@MTFCT(R1) ; ROUTINE CMP RES2(R0),#2 BLE MTINRE TST R4 BNE MTINRE MTIN05: MOV #MTTLI,-(SP) MOV FUNCT(R0),R1 MOVB MTIMV(R1),-(SP) JSR PC,QTIME TST (SP)+ MTDQD: RTS PC .PAGE ; MAGNETIC TAÑSB016-$PS016 XXXXXXXX ; PRI 16 TOO LARGE .ENDC .ENDC ; ; .ENDC ; MATCH FOR .IFNZ OVRLAY ; ; ROS SYSTEM TASK NUMBERS ; ; $INPNO = 1 ; INPUT $CPTNO = MXTASK+2. ; COMPRS $INITD = 3. ; DISC INITIALIZER $FLTNO = MXTASK+4. ; FILE LIST $RLDNO = MXTASK+5. ; ROS LOADER $RASNO = MXTASK+6. ; ROS ASSEMBLER TASK NUMBER $UTLNO = ÒÀ  Àe ÀeÉÿÀe Àe �‡�•Hq¸Å¸ â| †/. X:†  X:†â X:†| X:†  X:††€ÂN X”Ú. X:†N X:†  X:†X X:†”qQ€WB|.B÷ Œ÷ „& ÃÄÎRw ˜¾ÎEþÿ· G" X:† X:†¾(X:† Ê.h †Î ÷U÷U‹U€‡Ã ææ‚¿X:vLX:vL "X:† ‰.Žæææ�&÷ 4÷ .÷UÎ%¤X÷ þzX:vL .´”$Þ Æe È+ -ÔPE TIME OUT ROUTINE MTTIM: JSR R5,PUSHR TST NMTREQ ; IS QUEUE EMPTY BMI MTTIM2 .IFZ $KT11C MOV MTFRST,R0 .IFF MOV CDTLST,R0 ; GET LIST S.V.A. MOV MTPAR5,$KPAR5 ; AND ASSOCIATED PAR5 .ENDC CMP FUNCT(R0),#11 BNE MTTIM1 JSR PC,MUREWI TST R2 BEQ MTTIM4 MOV #MTTLI,-(SP) ; TIMER LIST MOV Õ MXTASK+7. ; ROS UTILITY TASK $TKCNO = MXTASK+8. ; TASK C??? $TMRNO = 2. ; TIMER QUEUE PROCESSOR ; .PAGE $ABMES = 3 ; NO. OF ABORT MESSAGE BUFFERS .IFL $ABMES ; $ABMES MUST BE => 0. XXXXXX ; ABRT .ENDC ; PSTP ; THE SYSGEN PARAMETER '$PST CONTROÖb*x/T&X!÷ Ô 7 Œb”$ç$X:† „.ÚŒb¤(¤(Ê5`Ì5`Ê5@Ì5@2­ Ñ.ÌU ÷ ÌE ÿ‡SSST‡wžJ ŒB‡ŒR‡‹ X:† ž.&€&€ € N ÷ H@ æ€ �€ Ú.LN ÷ Ö € ‡æ& Î Á @  Ààè.rŽ ö ö€Ö ‡&  Î ù †Á`@ à øª.˜÷ ¦þ÷ ôÿ÷5@÷ æÿ÷5`7  X:†"X:†(X:†¼.¾7 ÷UÀ‡7 à ÷ ËE7 Ë5&X:†  X:Ø #1,-(SP) ; TIMER DELAY JSR PC,QTIME TST (SP)+ BR MTTIM2 ; DEQUEUE THE REQUEST MTTIM1: MOV #12,R4 MTTIM4: JSR PC,MTDQXN MTTIM2: JSR R5,POPR ;RESTORE REGISTERS RTS PC ;RETURN TO CALLER .PAGE ; MAGNETIC TAPE OPEN ; MOPEN: JSR PC,MTINIT BR MCL10 ;GO TO COMMON EXIT FOR OPEN/CLOSE ; ; ; MAGNETIC TAPE CLOSE ; MCLOS:ÙLS THE EXECUTION PATH*PSTP ; DURING A TASK ERROR. PSTP ; = -1 ROS + USER ROUTINES PSTP ; = 0 ROS PSTP ; = +1 USER PSTP ; PSTP $PST = 0 ; PSTP ; ÚvLX:†&X:† ^.ä · · wà÷ ˆ7÷÷ Ì÷÷-Ú. X:† X:vL ÀRà&X:†(•Hq�. ÷ öË5÷U@Ë5Ë5@G÷U ÛX:vL(X:vLã.0ËE@AÁÂ÷ ² ŠË 8ËU 5÷ ¾Ë �@ X:† X:†C.V÷ ¬÷ Ð÷U (Â÷ š'€÷UW!X:vLX:;d&X:vLt.|. W!$À‹÷U€— ÷ , åSX:vLu.¢W!.÷ x÷U ÷ *÷ €‡Ü CLR R4 MCL10: RTS PC .PAGE ; M A G N E T I C T A P E R E A D MREAD: JSR PC,MTINIT BPL MREA1 JSR PC,MTBAD ; FORM READ COMMAND IN R3 BIS #READ,R3 ;INCLUSIVE OR UNIT NUMBER AND COMMAND MOV R3,@#MTCOMM ;GIVE READ COMMAND MREA1: RTS PC ; ; THIS ROUTINE IS ENTERED AFTER A READ ATTEMPT OR A BACK SPACE RECORD ; BYTE RES1 IS THE REREAD REPEAT COUNT ; Ý PSTP .PAGE $CLOCK = 0 ; INTERRUPTS SOURCE OFR MAINTAINING ; ; TIMERS AND DECKS ; ; 0=DEC LINE FREQUENCY(KW11-2) ; ; 1=DDS CLOCKSX ;FOLLOWING ARE SYSGEN PARAMETERS FOR THE TIMER AND CALENDAR ROUTINES ; NORMALLY THE BASE PERIOD FOR THE TIMERS IS THE INTERRUPT PERIOD, AND ; IF THAT PERIOD IS DESIRED FOR USE BY ANY Þw 0Îû|X:vL&Îa.È È õ+-&"&':%FÝÂ÷ ®w ¼@Ú (@j.:ÖÈ ¼ CDOB*F÷ ŽÿL w\þÂeÂeÂe.`æ·÷ pÿ·‡÷ X÷ 8òµ‡÷ N÷SX:;d X:;dX:;d°.†Á! ! Â--÷ @ ÷ ‚ ü‡ `jX:;dX:;d X:† .à BIT 15 OF RES1 IS THE BACK SPACE RECORD FLAG MRREA: CLR R5 ;SET I/O COMPLETE TST RES1(R0) ; TEST BACKSPACE FLAG BPL MRRE1 ;CONTINUE IF NOT SET JSR PC,MREAD BR MRRE3 MRRE1: .IFZ DATUM MOV @#MTSTAT,R2 BMI MRRE6 ; BR IF EOF DETECTED ASH #4,R2 ;MOVE ERROR BIT INTO SIGN BIT BMI MRRE2 ;BRANCH IF ERROR SáTIMER MODULE, "RESO" MUST BE ; SET TO 1, AND THAT RESOLUTION (ZERO) SPECIFIED BY THOSE MODULES. ; IF IT IS DESIRED TO MAKE THE BASE PERIOD COARSER THAN THE INTERRUPT ; PERIOD, "$TMBAS" MUST BE SET TO THE DESIRED RATIO OF BASE PERIOD TO ; INTERRUPT PERIOD. $TMBAS = 0 ;DE-SELECT ALTERNATE BASE PERIOD OPTION ; THE FOLLOWING PARAMETERS SPECIFY THE MULTIPLIERS THAT WILL BE LOADED ; INTO THE RESOLUTION COUNTER TABLES FOR DETERMINING THE PERIOD OF EACH ; RESOULTION. THE PEâ¬÷ &‚ ø‡úÑ ó÷ À‡À À À &À À KX:†–.Ò€e‡÷ @ðµ4Ê $‡ A‡À €ò •HqÊ›.øÀåÀå÷ÿÀåÒÿÀå@‡÷ Ä  ÷CÃå0b X:;d"X:;d#.× ‚ ‡€ „& „ †N`Ä Á ù†ÀU€ö�7.DÁ`÷ ˜Àeäw‡÷  ÷ ÿ7 ÷UŽX:†$•Hqå.j ‡@�Ê ÷ À5÷ ÷U$.X:vL •HqÊX:vL X:vL (X:vLY.�÷-÷ Fõµ>Êú÷ ,÷UäET MRRE6: SUB @#MTWORD,COUNT(R0) ; SUB WORD COUNT .IFF MRRE6: BIT @#MTSTAT,#MDATST BNE MRRE2 ; BRANCK IF ANY ERRORS MOV @#MTBCNT,R1 ASR R1 ADD R1,COUNT(R0) .ENDC BR MRRE4 MRRE2: MOV #11,R4 DEC RES1(R0) ; DEC REPEAT COUNT BEQ MRRE4 JSR PC,MTINIT BPL MRRE4 MOVB #200,RES1+1(R0) ;SET BACK SPACE FLAG åRIOD OF A GIVEN RESOLUTION LEVEL DEPENDS ON ALL ; THE PRECEDING LEVELS (WITH LOWER NUMBERS), WHICH ACT AS SUCCESSIVE ; MULTIPLIERS IN COUNTING TO THE GIVEN RESOLUTION LEVEL. ; THUS, FOR "RES4", ITS PERIOD WOULD BE: ; RES4*RES3*RES2*RES1*RES0 --- IN UNITS OF THE BASE PERIOD RES0 = 1 ; 0.01 SEC RES1 = 1 ; 0.01 SEC RES2 = 2 ; 0.02 SEC RES3 = 5 ; 0.1 SEC RES4 = 2 ; æá÷ ·  &X:;dX:vL •HqÊ X:vL2¶7 ÷ÀE€ÿ‡S.X:vLX:vL  X:;dX:vL•HqÊ®.Ê ¾.ð € Í. @@@@@@@@@@@@@@@@@o<@@@@@@@@@iqQ€WÈf(È÷ · ÷ õµÊø· ÅŸ`.X:;dX:;dX:;d •HqÊ X:;d; èëX:;dô‹wè .IFNZ DATUM MOV #-1,@#MTBCNT .ENDC BIS #BCKR,R3 ;R3 =BACK SPACE COMMAND MOV R3,@#MTCOMM ;GIVE BACK SPACE COMMAND MRRE3: INC R5 ;SET I/O NOT COMPLETE MRRE4: RTS PC .PAGE ; M A G N E T I C T A P E W R I T E ; R0 = ADDRESS OF LIST ; BYTE RES1 IS REWRITE REPEAT COUNT ; BIT 15 OF RES1 IS BACK SPACE RECORD FLAG ; MWRIT: é0.2 SEC RES5 = 5 ; 1.0 SEC RES6 = 5 ; 5.0 SEC RES7 = 2 ; 10.0 SEC RES8 = 3 ; 30.0 SEC RES9 = 2 ; 60.0 SEC RES10 = 5 ; 5 MIN RES11 = 2 ; 10 MIN RES12 = 3 ; 30 MIN RES13 = 2 ; 60 MIN RES14 = 2 ; 2 HRS RES15 = 6 ; 12 ên xKX ³ qQ€WX qQ€Wê..ê€Åå ÿø�‡A@”N¤üÀEÿ@`…À÷ j‡è. À÷ `‡À÷ V‡÷ h7 h· jÀü&X:;dh X:;dh$X:;dj (X:†(6 ÐjÈ"ƒ÷UÀ÷ $‡&X:;dj X:†X:vLô‹w' úMV  qQ€WV qQ€WV ­&V ÷5€d · h÷l÷El7 „. X:†dX:;dhX:†X:;dlX:;dlv.t n‡÷ æÁàƒCà ±@ @ý � ƒ #1-×ìJSR PC,MTINIT BPL MWRI1 JSR PC,MTBAD MOV #14,R4 ;SET ERROR CODE MOV @#MTSTAT,R2 .IFZ DATUM ASR R2 ;PLACE BIT 0 IN CARRY BIT BCS MWRI1 ;BR IF NO WRITE RING .IFF ASH #13.,R2 ; PLACE WRITE RING BIT IN SIGN BIT BMI MWRI1 ; BR IF NO WRITE RING .ENDC CLR R4 ;CLEAR ERROR FLAG ; IS THIS THE FOí HRS ; IN SYSTEMS WHERE THE BASE PERIOD IS GREATER THAN ONE MILLISECOND, ; "MSECR" WILL NECESSARILY HAVE A PERIOD GREATER THAN ONE MILLISECOND. MSECR = 0 ;MAX RESOLUTION: #0 AT 10 MILLISECONDS SECR = 5 ;"RES5" IS THE ONE-SECOND RESOLUTION TRES = SECR ; FOR TIME-SLICE WATCH-DOG IN RPOM $NRES = 16. ;USE MAX # OF RESOLUTIONS .IFLE $NRES XXXXXXXX ;$NRES MUST BE FROM 1 TO 16 îX:;dn<.š  ‚à`€ ÀEðQ$ƒ)÷ ÒÀ`j&ÀRà¢.À À`B !‡÷ À € #Á`B ú‡ ‡ sü!Ø (ü!«.æ ÷ ¢ � € #1-Á`õ7. w("X:†.(ÀRà. ! 7sü!’$s"÷ h·7 ÷ ^h& ÀRàü!"ÀRà"ÀRà§$2!À÷ µŠõ`µ ÀàÁ}.ÀRà ÀRà ärBx ärh är» ¥.N!BÂà· ‚w xá�R ýõàõàÅåùÈðURTH TRY MOV RES1(R0),R2 ;LOAD REPEAT COUNT IN R2 BIC #177774,R2 BEQ MWRI2 ;BRANCH TO ISSUE WRITE WITH EXTENDED GAP ; ISSUE NORMAL WRITE BIS #WRIT,R3 ;OR IN WRITE COMMAND BR MWRI3 MWRI2: BIS #WEXG,R3 ;OR IN WRITE WITH EXTENDED GAP MWRI3: MOV R3,@#MTCOMM ;STORE IN COMMAND REGISTER MWRI1: RTS PC .PAGE ; THIS ROUTINE IS ENTERED BY THE INTERRUPT PROCESSOR AFñ .ENDC .IFG $NRES-16. XXXXXXXX ;COME ON! MUST BE LESS THAN 17 .ENDC ; THE BASE PERIOD FOR THE TIME-OF-DAY CLOCK, ABORT, AND TIME-SLICE IS ; NORMALLY THE INTERRUPT PERIOD, AS SPECIFIED BY "TICRES". ; IF A MULTIPLIER FOR THIS INTERRUPT IS DESIRED TO PRODUCE A COARSER ; BASE PERIOD, USE THE PARAMETER "$ABMPL" TO SPECIFY THE RATIO DESIRED. TICRES = 10. ;T-O-D CLOCK TICKS-PER-SECOND $ABMPL = 0 ;NO T-O-D CLOCò&är»  ÀRà är» "ärhÇ.t!ƒ à ý‡÷ u5Ї7€÷ <fÅé ärh ärBxÀRà .š!ABC�ÄÈ …‡æ¦f&÷ ;.ÀRà är» ärh ärBx X:†£.À!ÁÂÃ㿦f¦6Þ �‚£& X:† X:† X:† X:†¦.æ!ƒ„À ‡RRRRRRR‡       /. "‡R”þ⋇÷ ”ú&÷ ’ó÷   & &÷ 8ãÀÜ.2"÷ Hÿ÷ fÅ�ÿ÷ P÷ Ä’’ ’÷ ”ýÀŠˆ ¾ôTER WRITE COMMANDS ; MRWRI: CLR R5 ;SET I/O COMPLETE TST RES1(R0) BPL MRWR1 ;BRANCH IF THE BACK SPACE IS NOT SET JSR PC,MWRIT BR MRRE3 MRWR1: .IFZ DATUM MOV @#MTSTAT,R2 ASH #4,R2 ;PALCE ERROR BIT IN SIGN BIT BMI MRRE2 ;BR IF ERROR ; PLACE WORD COUNT AND STATUS IN LIST SUB @#MTWORD,COUNT(R0) .IFF BIT @#MTõK BASE MULTIPLIER TODINT = 320 ;INTERRUPT VECTOR FOR T-O-D INTERRUPT TIMINT = TODINT+4 ;INTERRUPT VECTOR FOR INTERVAL TIMER STLINT = TIMINT+4 ;VECTOR FOR STALL ALARM INTERRUPT STLREG = 167000 ;ADDRESS FOR STALL ALARM RESET .IFNZ $CLOCK CLKENB = 167002 ;ADDRESS FOR ENABLE OF CLOCKS TODBIT = 4 ;BIT TO ENABLE TIME-OF-DAY INTERRUPT TIMBIT = 10 ;BIT TO ENABLE INTERVAL TIö &X:†Šÿ.X"$ȆÈe‡7 wÀ÷U‡÷ Üüù÷– X:††X:;d X:vL.~"˜÷š÷ Žý÷ \÷ , ÷ �þ÷ *ò÷ á&X:†X:†˜ X:† X:†š‰.¤"Ê ÒÒœ÷U@÷ ¬â÷ â÷ ¾û 7 ˜Ä& X:vLX:†œX:vL&X:†˜é.Ê"÷-š÷UŃÿ÷ ²÷ ý‡÷ ¶òÀ¿â&X:†X:†šX:vL&X:†Ô.ð"&÷ ô$7–7œ&÷ ¨Åƒÿ÷ ú·Ž’<X:†–X:†œ&X:†ŽøSTAT,#MDATST BNE MRRE2 ; BRANCH IF ANY ERRORS MOV @#MTBCNT,R1 ASR R1 ADD R1,COUNT(R0) .ENDC RTS PC .PAGE ; M A G N E T I C T A P E W R I T E F I L E M A R K ; MWEOF: JSR PC,MTINIT BPL MWEOF1 MOV #14,R4 ;SET ERROR CODE MOV @#MTSTAT,R2 .IFZ DATUM ASR R2 ;PLACE BIT 0 IN CARRY BIT BCS ùMER INTERRUPT STLBIT = 0 ;BIT TO ENABLE STALL ALARM INTERRUPT .ENDC .IFZ $CLOCK CLKENB = 777546 ;ADDRESS OF DEC LINE CLOCK TODBIT = 0 ; TIMBIT = 100 ;CLOCK ENABLE BIT STLBIT = 0 ; .ENDC $TMSLC = 1 ;SYSTEM OPTION FOR INCLUDING TIME-SLICING $SWATZ = 20. ;NUMBER OF ENTRIES IN SCHEDULER "WAIT" TABLE $TWATZ = 20. ;WORDS IN TIMER'S "WAIú.#ÒÊ’÷ Äü‡ƒ ÷ Ê÷ @÷ @÷ ¼÷âX:vLg.<#ÿÿ–÷ l÷ *÷ v ææ&÷ â÷ @ÅDX:†–X:vLr.b#‚ÿwÖþ÷U‡À÷ þ7 7 œæ€÷ êû-X:vLX:vL X:†œØ.ˆ#Å%?·Sœ÷ 8ü÷ ÀûÀ÷ |ý¡ íÖ ‡åX:†œ.®# 7 ÷ &à #÷-–&ƒ÷ ¨û÷ œ Å%�&X:vLX:†–X:vL$X:†œÏ.Ô#\0÷ Å ÷ œ:�÷ ¨÷ òûú÷ ~÷ œ;X:†œ(X:†ü MWEOF1 ;BR IF NO WRITE RING .IFF ASH #15,R2 BMI MWEOF1 .ENDC CLR R4 ;CLEAR ERROR FLAG BIS #WRFM,R3 ; COMMAND MOV R3,@#MTCOMM ;GIVE COMMAND MWEOF1: RTS PC ; ; THIS ROUTINE IS ENTERED BY THE INTERRUPT PROCESSOR AFTER WRITE E O F OPERATION ; MRWEO: CLR R5 ;SET I/O COMPLETE MOV RES1(R0),R1 BPL MRWEO1 ;BýT" TABLE .PAGE ; $DTAPE = 1 ; DECTAPE OPTION ; NDISCS = 1 ;NO. OF DISC CONTROLLERS (0 = NO DISCS) ; $DDSDC = 1 ; USE DDS DICS ; ACTSIZ = 20. ; MAXIMUM NO. OF ENTRIES IN AUTH. CODE .IFL 20.-ACTSIZ XXXXXXXX ; ERROR-ALLOCATE MORE LOCATIONS XXXXXXXX ; FOR AUTHORIZATION CODES .ENDC ; .IFNZ NDISCS DRESDI = 1 þœõ.ú#á· ÷ Þû÷ Š ÷ ‚õE ÷ zE ÷5€XßX:vL(X:†X¤. $ À7 ÷U€€‡÷ ”û÷ nøfæÃX:vLX:vL X:vLi.F$÷ 8 ÷ >ƒ…η nÁnÁe?fæÃŽX:;dX:;dnX:;dnð.l$ ÷ Å$÷  ÷ ƒ…¶ ÷ Ò÷f�.’$÷ ðÿ…Åe0wò ÷ "ß÷U@÷ ¶ãÀ5 }X:vL&ükQf.¸$ƒ ÷%n" à à €‡÷ ‚À5÷ ÷Ì(n" X:†X:;d‚üËx (X:†ÌkRANCH IF BACK SPACE FLAG IS NOT SET JSR PC,MWEOF BR MRRE3 MRWEO1: .IFZ DATUM MOV @#MTSTAT,R2 ASH #4,R2 ;PLACE ERROR BIT IN SIGN BIT BPL MWEOF1 .IFF BIT @#MTSTAT,#MDATST BNE MRRE2 ; BRANCH IF ANY ERRORS .ENDC RTS PC .PAGE ; M A G N E T I C T A P E R E W I N D ; MREWI: JSR PC,MTINIT BPL MREW1  ; DISC RESIDENT DIRECTORY OPTION .IFL 3-NDISCS XXXXXXXX ; PRESENTLY CODED FOR MAX. OF 3 DISCS .ENDC ; NDPRT1 = 5 ; NO. OF PRIORITY LEVELS IN DISC 1 QUEUES .IFL NDPRT1-3 XXXXXXXX ; MUST BE AT LEAST THREE .ENDC MAXID1 = 500. ; MAXIMUM ID ON DISC 1 ; .IFG NDISCS-1 NDPRT2 = 7 ; NO. OF PRIORITY LEVELS IN DISC 2 QUEUES .Þ$÷ û÷ ˜ùÀ÷ ôû Å ÷ ”÷ ŽX:;dÀRà$X:†”`.%÷ ”÷ ¼úÄ ÷ ~÷ ¾ùùW!'÷ n÷ <àX:†”.*%»· ”÷ ®ú×÷ ú*ÃŒ!÷ ú$÷ ¨Å NX:†”X:†Œ'.P%ƒ ÷ Šúü÷ ÷ òù÷ úÁff÷  åà X:†‘.v%À ÷ þû¡¡7 ÷wŠã÷Uö÷’³&X:†X:†"X:vL(X:†’¨œ% ÷U‡.X:;d  X:vLô‹w0Ë0 .IFZ DATUM BIT @#MTSTAT,#2 ;TEST LOAD POINT BIT .IFF BIT @#MTSTAT,#40 .ENDC BNE MREW2 BIS #REWD,R3 MOV R3,@#MTCOMM MREW1: RTS PC MREW2: CLR RES2(R0) BR MREW1 ; ; THIS ROUTINE IS ENTERED BY THE INTERRUPT PROCESSOR AFTER A REWIND ; MRREW: CLR R5 ;SET I/O COMPLETE RTS PC .PAGE ; MAGNETIC TAPE SPACE RECO.IFL NDPRT2-3 XXXXXXXX ; MUST BE AT LEAST THREE .ENDC MAXID2 = 500. ; MAXIMUM ID ON DISC 2 .ENDC ; .IFG NDISCS-2 NDPRT3 = 3 ; NO. OF PRIORITY LEVELS IN DISC 3 QUEUES .IFL NDPRT3-3 XXXXXXXX ; MUST BE AT LEAST THREE .ENDC MAXID3 = 500. ; MAXIMUM ID ON DISC 3 .ENDC $SYSFL = NDISCS+5 ; NO. OF SYSTEM FILE ID'S IN ROS ; € ¨%ÐW©%î8¾%n¿%ñ. qQ€W¨% qQ€W©% qQ€W¾% qQ€W¿%qQ€W¨%6.¨% ÷ L÷ "ú÷U‡û÷ 6Áà ÷ cX:vL"X:;d .Î%¤÷ ð@’B   Å ÷ øù� ôC w€).ô%÷ zù<÷ Ôû ¦Ã<Ä>C!W!^õµn X:;d�.&8Ê÷ ¾ùù÷ ¦ùŽC D÷ ¬ù C!D!ùH •Hqʧ.@&Á Á � õ€Ž ÅU€÷UÀpÀr�P:ŠïX:vLX:;dp "X:;drÆ.f&Š÷ xù7p‡Àpà x‘Å H 7÷ HùèRD (+-N) ; MSPRC: .IFZ DATUM CLR R5 ;SET I/O COMPLETE TST @#MTSTAT ;CHECK FOR FILE MARK BMI MSPRC5 JSR PC,MTINIT ;INITIALIZE BPL MSPRC2 TST COUNT(R0) BEQ MSPRC2 BMI MSPRC3 ;BR IF NEGATIVE ; DECREMENT (N) AND SPACE FORWARD DEC COUNT(R0) INC NWORD(R0) BIS #SPCR,R3 ; BR MSPRC4 ; INCRE  ; COMPID,FTDIR,CDIMGE,CDIHDR,TTFILE .IFZ DRESDI NCFILE = $SYSFL+40. ; NO. OF CORE RESIDENT FILE ID'S .ENDC .IFNZ DRESDI NCFILE = NDISCS+$SYSFL+40. ; NO. OF CORE RESIDENT ID'S ; ; INCLUDING DOD'S AND SYSTEM FILES NCRWDS = NCFILE*5 ; NO. OF CORE RESIDENT WORDS NEEDED ; ; FOR CORE DIRECTORY NCRLOC = NCRWDS+NCRWDS X:;dpX:;dp$X:;dú.Œ&7p‡÷ ”�fÅ'÷ …ö7 ”Â5ÂåX:;dp X:†” X:†”V.²&¦÷ >Ö R‘‡À� €ÊeÊ-pX:†� ÀRà(är» g.Ø&‚w øÛ�7� ‡° ‡ð  €&È éX:†�.þ&üÈ�·�‡÷ ¶ÿâ Á‚¦fR Á%�û‚–&X:†� X:†� X:†‚ $X:†�Y.$'R’· ’‡ÂŠ€÷ ¼ÿ€÷ ®ÿ�â @÷ ¾ X:†’ X:†Š2.J'¢ú ÷ ¤ÿ÷ ’ MENT (N) AND SPACE BACK MSPRC3: INC COUNT(R0) DEC NWORD(R0) BIS #BCKR,R3 MSPRC4: MOV R3,@#MTCOMM ;GIVE COMMAND INC R5 ;SET I/O NOT COMPLETE MSPRC2: RTS PC MSPRC5: TST NWORD(R0) BGT MSPRC6 INC NWORD(R0) DEC COUNT(R0) BR MSPRC2 MSPRC6: DEC NWORD(R0) INC COUNT(R0) BR MSPRC2 .IFF ; NO. OF LOCATIONS IN CORE RESIDENT ; ; DIRECTORY .ENDC ERRPRT = 1 ; PRINT-OUT DISC ERROR MESSAGES OPTION CHKPTC = 1 ;1 = CHECKPOINTING ALLOWED .IFZ $KT11C .IFNZ CHKPTC XXXXXXXX .ENDC .ENDC FXPART = 1 ; FIXED PARTITION OPTION $SGMNT = 1 ; SEGMENT LOAD OPTION $FTMAX = 10. ; LARGEST FILE TYPE IN SYSTEM‡÷ ”D÷ >7 >æ,ˆæ¢&X:†’X:† ÀRà> $ÀRà,¶.p'8æ,ˆ ÷ ÷ FÜ÷ ààÀ5öÄà Ì%§, ÀRà8 ÀRà,Œ–vLükQ $X:†Ê.–'n"ðƒ ƒ Ã%ë÷ ®÷ ÷ løåÌ ã÷ Äú÷ ‚£n"(X:;d‚k.¼'Ýæ,ˆ÷ ‚æ,ˆ ÷ >ù÷>Ç÷U`. ÀRà,X:;d‚ ÀRà,ÀRà>$ÀRà>T.â' 7 ‚7 ‡÷ b÷ ÷ ø÷ .ù· ‚÷ Äìx&X:vL X:;d‚X:;d$X:;d‚l(óÀ‚‡âX:;d JSR PC,MTINIT ; INITIALIZE BPL MSPRC3 ; BRANCH IF ERROR MOV COUNT(R0),R1 BMI MSPRC3 NEG R1 BIS #SPCR,R3 ; OR IN SPACE COMMAND MSPRC1: MOV R1,@#MTBCNT ; PLACE COUNT IN CONTROLLER REGISTER MOV R3,@#MTCOMM ; GIVE COMMAND MSPRC2: RTS PC MSPRC3: BIS #BCKR,R3 ; OR IN BACKSPACE COMMAND BR MSPRC1 MRPRC: MOV COUNT(R0),R1 BPL MSPRC4  $IDMAX = 500. ; LARGEST FILE ID IN SYSTEM-- ; ; MUST BE >= MAXID1,2,3,..,N $FTDRL = $FTMAX*3/64.+1 ; NO. OF SECTORS IN FILE TYPE DIRECTORY $ROSFW = NDISCS+$SYSFL*5 ; NO. OF WORDS IN ROS FILES $CDISZ = NCRWDS-$ROSFW/64.+1 ; NO. OF SECTORS IN CORES ; ; DIRECTORY IMAGE $TKFL1 = TASMAX*5 ; # BYTES IN REG TASK TABLES $TKFL2 = TASMAX-MXTASK*3 ‚ÀRà*Ú *Ôx¨zÒ'»zkQÔx  qQ€WÒ'Œ–vL A  ‡_óCOM R1 MSPRC4: ADD @#MTBCNT,R1 MOV R1,NWORD(R0) CLR R5 RTS PC .ENDC .PAGE ; MAGNETIC TAPE SKIP FILES (+-N) ; MSKFI: CLR R5 ;SET I/O COMPLETE MOV @#MTSTAT,R1 .IFZ DATUM ASL R1 .IFF ASH #5,R1 .ENDC BMI MSKFI5 JSR PC,MTINIT ;INITIALIZE BPL MSKFI2 .IFNZ DATUM MOV  ; # BYTES IN EXT OF TASK TABLES $TKFLN = $TKFL1+$TKFL2+2+3/4*2 ; # WORDS IN ALL TASK TABLES ; + 'TASKS' + EVEN NUMBER OF ; WORDS FOR DISCIO $TKFNS = $TKFLN/64.+1 ; NO. OF SECTORS IN TASK TABLE FILE ; ; THE FOLLOWING IS FOR DISC RESIDENT DIRECTORIES ; DIRAD1 = 320. ; DISC RESIDENT DIRECTORY ADDRESS DISC 1 ; ; LEAVES ROOM FOR 20K ROS B#-77776,@#MTBCNT .ENDC TST COUNT(R0) BEQ MSKFI2 BMI MSKFI3 ;BR IF NEGATIVE DEC COUNT(R0) INC NWORD(R0) BIS #SPCF,R3 ;FORM SKIP FILE COMMAND BR MSKFI4 MSKFI3: INC COUNT(R0) ;INCREMENT COUNT DEC NWORD(R0) BIS #BCKF,R3 ;FORM BACK SPACE FILE COMMAND MSKFI4: MOV R3,@#MTCOMM ;GIVE COMMAND INC R5 OOT .IFZ DRESDI DIRLN1 = 0 ; ZERO LENGTH .ENDC .IFNZ DRESDI DIRLN1 = MAXID1-1/12.+1 ; DISC DIRECTORY 1 LENGTH .IFG NDISCS-1 DIRAD2 = 0 ; DISC RESIDENT DIRECTORY ADDRESS DISC 2 DIRLN2 = MAXID2-1/12.+1 ; DISC DIRECTORY 2 LENGTH .ENDC .IFG NDISCS-2 DIRAD3 = 0 ; DISC RESIDNET DIRECTORY ADDRESS DISC 3 DIRLN3 = MAXID3-1/12.+1 ; DISC DIRECTORY 3 LENGTH ;SET I/O NOT COMPLETE MSKFI2: RTS PC MSKFI5: TST NWORD(R0) BGT MSKFI6 INC NWORD(R0) DEC COUNT(R0) BR MSKFI2 MSKFI6: DEC NWORD(R0) INC COUNT(R0) BR MSKFI2 .PAGE .IFNZ MULRE ; MAGNETIC TAPE MULTIPLE DRIVE REWIND MUREW: CLR R2 ;USE AS DEVICE NUMBER COUNTER MOVB DEVNUM(R0),R1 MOV R1,-(SP) .ENDC .ENDC ; ; THE FOLLOWING CONTAINS THE FILE TYPE STATUS DESCRIPTORS ; FOR EACH FILE TYPE. ; $FD000 = 41 ; FILE TYPE 0, LOG UNIT 1, NO COMPRESSION $FD001 = 1 ; FILE TYPE 1, LOG UNIT 1 $FD002 = 1 ; FILE TYPE 2, LOG UNIT 1 $FD003 = 1 ; FILE TYPE 3, LOG UNIT 1 $FD004 = 1 ; FILE TYPE 4, LOG UNIT 1 $FD005 = 101 ; FILE TYPE 5, LOG UNIT  ;SAVE ON STACK BIC #MTMREW,R1 ;CLEAR ALL BUT DEFINED UNITS MURE1: ASR R1 BCC MURE2 ;BR IF BIT 0 WAS CLEAR MOVB R2,DEVNUM(R0) ;SET DEVICE NUMBER IN LIST JSR PC,MTINIT BPL MURE2 BIC #ENAB,R3 ; CLEAR INTERRUPT ENABLE BIS #REWD,R3 ;SET REWIND COMMAND MOV R3,@#MTCOMM ;GIVE COMMAND MURE2: INC R2 ;INC DEVICE NUMBER TST R1 ! 1, CKSAVE REQUIRED $FD006 = 1 ; FILE TYPE 6, LOG UNIT 1 $FD007 = 1 ; FILE TYPE 7, LOG UNIT 1 $FD008 = 1 ; FILE TYPE 8, LOG UNIT 1 $FD009 = 1 ; FILE TYPE 9, LOG UNIT 1 .IFL 10.-$FTMAX XXXXXXXX ; ONLY SET UP FOR 10. FILE TYPES .ENDC $OVTYP = 5. ; FILE TYPE FOR OVERLAY TASKS ; ; FILE TYPE SIZE TABLE - IN SECTORS ; .IFNZ DRESDI $ ;HAVE ALL REWINDS BEEN ISSUED BNE MURE1 ;BR IF NOT MOV (SP)+,DEVNUM(R0) ;RESTOR RTS PC ;RETURN ; MUREWI: MOV DEVNUM(R0),R1 CLR R2 ;DONE FLAG CLR R3 ;DEVICE NUMBER BIC #MTMREW,R1 ;CLEAR ALL BUT DEFINED UNITS MURE3: ASR R1 BCC MURE4 ;BR IF BIT 0 WAS CLEAR BIC #MTCLR,@#MTCOMM ; CLEAR TAPE UNIT NUMBER % $FS000 = DIRAD1+DIRLN1+$FTDRL+$CDISZ+$TKFNS .ENDC .IFZ DRESDI $FS000 = $FTDRL+$CDISZ+$TKFNS .ENDC $FS001 = 300. $FS002 = 300. $FS003 = 300. $FS004 = 300. $FS005 = 2500. $FS006 = 300. $FS007 = 2500. $FS008 = 300. $FS009 = 300. ; $ALOD1 = $FS000+$FS001+$FS002+$FS003+$FS004 $ALOD2 = $FS005+$FS006+$FS007+$FS008+$FS009 .IFL 8192.-$ALOD1-$ALOD2 XXXXXXX(BIS R3,@#MTCOMM ; SET UNIT NUMBER BIT #MTRWD,@#MTSTAT ; TEST REWIND BIT BEQ MURE4 ;BR IF DONE INC R2 ;INC IF NOT DONE MURE4: ADD #MTUIC,R3 ; INC UNIT NUMBER TST R1 ;HAVE ALL UNITS BEEN CHECKED BNE MURE3 ;BR IF NOT MURE5: RTS PC .ENDC .PAGE ; THIS IS A MAGNETIC TAPE CONTROLLER INITIALIZATION ROUTINE ; CALL IS JSR PC,MTINIT ; RE)X ; ONLY 8192 SECTORS AVAIL.- 1/2 MEGAWORDS .ENDC ; .IFNZ $BATCH $BCHID = NDISCS+$SYSFL+1 ; FILE ID FOR BATCH FILE $BCHTP = 7. ; BATCH FILE TYPE $RASIZ = 200. ; NO. OF ENTRIES IN USERS SYMBOL TABLE ; ; IN RASM ; ; NOTE: 4 WORDS/ENTRY $LSDSZ = 1000. ; NO. OF WORDS RESERVED FOR LOADERS ; ; SYMBOL ,TURNS WITH ; R3 = DEVICE NUMBER SHIFTED FOR A COMMAND INSTRUCTION ; R4 = 0 AND (N) BIT SET IF NO ERROR ; R4 = 1 AND (N) BIT CLEAR IF TIME OUT ERROR MTINIT: MOV #CLEA,@#MTCOMM ;ISSUE CLEAR TO MAG TAPE CONTROLLER MOVB DEVNUM(R0),R3 ;OBTAIN DEVICE NUMBER ASH #MTDVS,R3 ; LEFT SHIFT MOV R3,@#MTCOMM ;STORE UNIT NUMBER IN COMMAND REGISTER BIS #MTINB,R3 ; SET INTERRUPT ENABLE ; CLEAR BACK SPACE FLAG AND SE-DIRECTORY (LSD) ; ; NOTE: $LSDSZ MUST BE >/= TO ; $MXOBJ*7/2 (5 WO-DS PE- SY4B6L#D $MXOBJ = 20. ; MAX NO. OF OBJECT MODULES TO BE ; ; LINKED INTO ANY GIVEN LOAD ; ; MODULE. .ENDC .ENDC ; MATCHES .IFNZ NDISCS .PAGE ; ; TTYIO SYSGEN PARAMETERS ; NTTYS = 1 ;NO. 0T DELAY COUNTER TO ZERO CLRB RES1+1(R0) ;CLEAR BACK SPACE FLAG CLR R4 CMP FUNCT(R0),#1 ;OPEN COMMAND BEQ MTIN3 MOVB @#MTSTAT,R1 ;LOAD WITH BYTE SIGN EXTENDED .IFNZ DATUM ASH #11,R1 .ENDC BPL MTIN2 ; BRANCH IF READY BIT WAS 0 MTIN3: RTS PC ;RETURN MTIN2: MOV #11,R4 BR MTIN3 ; .PAGE ; PLACE 1OF TELETYPES ;IN SYSTEM SYSTTY = 0 ;LOGICAL UNIT NO. OF SYSTEM ;TTY DEVICE MSGBUF = 0 ;MESSAGE BUFFERING OPTION: IF 1, ;DISC MESSAGE BUFFERING VERSION IS ;ASSEMBLED. IF 0, CORE VERSION IS ;ASSEMBLED. DISCUN = 1 ;LOGICAL UNIT NO. OF DISC TO BE USED 4BUFFER ADDRESS AND WORD COUNT IN CONTROLLER REGISTERS MTBAD: .IFZ $KT11C MOV DATA(R0),@MTMEMO .IFF MOV DTPAR(R0),@#772354 MOV DTVIRT(R0),-(SP) JSR PC,SVPPA ; TO PPA MOV (SP)+,R5 ; LOAD PPA CLR R4 ; PLACE BITS ASHC #2,R4 ; 16 & 17 IN R4 .IFZ DATUM ASH #2,R4 ; SET ADDRESS MOV R4,@#MTSTAT ; BITS 16 & 17 5 ;FOR MESSAGE BUFFERING DBUFSZ = 1 ;NO. OF 64 WORD DISC SECTORS ALLOCATED ;FOR BUFFERING OF ONE MESSAGE ON DISC FILESZ = 20*DBUFSZ ;NO. OF SECTORS PER FILE NTRYS = 3 ;NO. OF TRYS TO OUTPUT A CHARACTER ;TO TTY TTOTIM = 15. ;MILLISECOND COUNT FOR TTY ;OUTPUT TIMERS TTITIM = 15. ;SECOND COUNT FOR TTY INP8 .IFF ASH #4,R4 ; SET ADDRESS BIS R4,R3 ; BITS 16 & 17 .ENDC ; DATUM MOV DATA(R0),R4 ; GET BITS 0 & 1 BIC #177774,R4 BIS R4,R5 MOV R5,@#MTMEMO ; SET BITS 0 THRU 15 .ENDC ; KT11C MOV NWORD(R0),R5 ;GET WORD COUNT MOV R5,COUNT(R0) .IFZ DATUM MOV R5,@#MTWORD .IFF 9UT/OPERATOR ;RESPONSE TIMERS TTWTIM = 240. ;SECOND COUNT FOR WAIT TIMER NWUCH = 5 ;NO. OF CHARS TO BE OUTPUT FOR ;WARMUP OF A TTY UNIT EOMCH = 33 ;ALTERNATE EOM CHAR (ALT KEY) EOMOPT = 0 ;EOM CHAR OPTION WHERE ; 1 = EOM IS FOLLOWED BY CR AND LF ; 0 = NOT FOLLOWED BY CR AND LF EOMPRT <MOV NWORD(R0),R5 ; GET WORD COUNT ASL R5 ; BYTE COUNT NEG R5 MOV R5,@#MTBCNT .ENDC RTS PC .PAGE ; DEQUEUE THE REQUEST MTDEQ: MOV R4,ERROR(R0) DEC NMTREQ MOV @#MTSTAT,STATUS(R0) MOV @#PS,-(SP) ;SAVE CURRENT CPU STATUS REGISTER SPL 7 ;INHIBIT INTERRUPTS MOV (R0),MTFRST ;PUT NEXT GUY IN THRAED AT TOP OF QUEUE = = 0 ;EOM PRINT OPTION WHERE ; 1 = EOM IS PRINTED ; 0 = EOM IS NOT PRINTED EOLCH = 12 ;CHAR BEING USED FOR END OF LINE ON ;TTY INPUT ECHOCH = 40 ;ECHO CHAR -- CHAR OUTPUT FOR NO ECHO MRCH = 25 ;MESSAGE RESTART CHAR (CONTROL U) LINELN = 72. ;LINE LENGTH: NO. OF CHARS TO BE @ BNE MTDEQ2 MOV #MTFRST,MTLAST .IFNZ $KT11C CLC ROR MTLAST CLC ROR MTLAST .ENDC MTDEQ2: MOV #1,(R0) ;SET LIST READY MOV (SP)+,@#PS ;UN-INHIBIT THE INTERRUPTS MOV SYSTEM(R0),R2 ;GET TASK NUMBER OF REQUESTOR BEQ MTDEQ1 ;BRANCH IF NOT A TASK DECB IOSTAT(R2) ;OTHERWISE, DECREMENT THE I/O IN PROGRES BNE MTDEQ1 A ;TYPED IN A LINE .PAGE ;*********************************************************************** ;* ** ;* SEGMENT REGISTER ADDRESSES REQUIRED BY THE PROGRAMS WHEN ** ;* IMPLEMENTED ON AN 11/45 OR 11/25, EITHER WITH SEGMENTATION. ** ;* ** .IFNZ $KT11C ;* ;* K E R N E L S E G M E N T R E G I S T E R S ;* $KP MOV R2,-(SP) ;GO TO OVERLAY MONITOR SO THE TASKS CORE JSR PC,RELTSK ; CAN BE RELEASED MTDEQ1: RTS PC .END EAR0 = 772340 ; $KPAR1 = 772342 ; $KPAR2 = 772344 ;KERNEL $KPAR3 = 772346 ; PAGE $KPAR4 = 772350 ; ADDRESS $KPAR5 = 772352 ; REGISTERS $KPAR6 = 772354 ; $KPAR7 = 772356 ; ; $KPDR0 = 772300 ; $KPDR1 = 772302 ; $KPDR2 = 772304 ;KERNEL $KPDR3 = 772306 ; PAGEI $KPDR4 = 772310 ; DESCRIPTOR $KPDR5 = 772312 ; REGISTERS $KPDR6 = 772314 ; $KPDR7 = 772316 ; ;* ;* U S E R S E G M E N T R E G I S T E R S ;* $UPAR0 = 777640 ; $UPAR1 = 777642 ; $UPAR2 = 777644 ;USER $UPAR3 = 777646 ; PAGE $UPAR4 = 777650 ; ADDRESS $UPAR5 = 777652 ; REGISTERS $UPAR6 = 77765M4 ; $UPAR7 = 777656 ; ; $UPDR0 = 777600 ; $UPDR1 = 777602 ; $UPDR2 = 777604 ;USER $UPDR3 = 777606 ; PAGE $UPDR4 = 777610 ; DESCRIPTOR $UPDR5 = 777612 ; REGISTERS $UPDR6 = 777614 ; $UPDR7 = 777616 ; .ENDC .PAGE ;****************************************************************Q****** ;* ** ;* IN THE FOLLOWING EQUATES, A ZERO MEANS DO NOT INCLUDE ** ;* THE OPTION. ** ;* ** ;* C A R D R E A D E R E Q U A T E S ** ;* ** ;********************************************************U************** NCR = 1 ;NUMBER OF CARD READERS IN SYSTEM BIN = 0 ; DON'T INCLUDE BINARY MODE BCD = 1 ;1 = INCLUDE ALPHANUMERIC MODE, 0 = DONT TTYSW = 1 ;1 = SWITCH INPUT TO TTY ON COMMAND INEBC = 0 ; 1=PROVIDE OFR INTERNAL EBCDIC CODE EXEBC = 0 ; 1=PROVIDE FOR EXTERNAL EBCDIC CODE ; (029 CARD CODE) $RES = 1 Y ; TIMER RES. FOR CREAD (=10.0 MSEC.) $100MS = 10. ;MULTIPLE USING $RES FOR 100 MS $500MS = 50. ;MULTIPLE USING $RES FOR 1/2 SECOND $1SEC = 100. ;MULTIPLE USING $RES FOR 1 SECOND MXTIME = 180. ;MAX SECONDS TO WAIT FOR OPR RESPONSE ; ; NOTE: THE ABOVE TIMES DO NOT NEED TO BE EXACT. SELECT THE ; PROPER VALUES TO GET AS CLOSE AS POSSIBLE TO THE ; TIMES STATES. ; ; ; C] / R V E C T O R I N F O R M A T I O N ; ; CR1 = 2 ;LOGICAL UNIT NO. FOR CR # 1 CR2 = 2 ;LOGICAL UNIT NO. FOR CR # 2 CR3 = 0 ;LOGICAL UNIT NO. FOR C/R # 3 CR4 = 0 ;LOGICAL UNIT NO. FOR C/R # 4 ; ; C / R D E V I C E I / O A D D R E S S E S ; CRS.1 = 777160 ;CARD READER STATUS - C/R # 1 CRB1.1 = 777162 ;CARD READER BINARY DATA BUFFER CRB2.1 a = 777164 ;CARD READER COMPRESSED DATA ADDRESS ; CRS.2 = 777160 ;CARD READER STATUS - C/O # 2 CRB1.2 = 777162 ;CARD READER BINARY DATA CRB2.2 = 777164 ;CARD READER COMPRESSED DATA ; CRS.3 = 0 ;CAR READER STATUS - C/R # 3 CRB1.3 = 0 ;CARD READER BINARY DATA BUFFER CRB2.3 = 0 ;CARD READER COMPRESSED DATA BUFFER ; CRS.4 = 0 ;CARD READER STATUS -e C/R # 4 CRB1.4 = 0 ;CARD READER BINARY DATA BUFFER CRB2.4 = 0 ;CARD READER COMPRESSED DATA BUFFER ; CRVC.1 = 230 ; C/R # 1 INTERRUPT VECTOR CRVC.2 = 230 ;C/R # 2 INTERRUPT VECTOR CRVC.3 = 0 ;C/R # 3 INTERRUPT VECTOR CRVC.4 = 0 ;C/R # 4 INTERRUPT VECTOR .PAGE ;********************************************************************** ;* i ** ;* L I N E P R I N T E R E Q U A T E C A R D S ** ;* ** ;********************************************************************** NLP = 1 ;NUMBER OF LINE PRINTERS IN SYSTEM NLPRTY = 3 ;NUMBER OF L/P PRIORITY LEVELS LPBACK = 1 ;1 = BACKUP L/P WITH TTY BY OPER COMMAND LPVC.1 = 200 ;L/P m# 1 INTERRUPT VECTOR ADDRESS LPVC.2 = 200 ;L/P # 2 INTERRUPT VECTOR ADDRESS LPVC.3 = 000 ;L/P # 3 INTERRUPT VECTOR ADDRESS LPVC.4 = 000 ;L/P # 4 INTERRUPT VECTOR ADDRESS LPDT.1 = 765010 ;L/P # 1 DATA BUFFER I/O ADDRESS LPDT.2 = 765010 ;L/P # 2 DATA BUFFER I/O ADDRESS LPDT.3 = 0 ;L/P # 3 DATA BUFFER I/O ADDRESS LPDT.4 = 0 ;L/P # 4 DATA BUFFER I/O ADDRESS LFRG.1 = q 765012 ;L/P # 1 LINE FEED REGISTER LFRG.2 = 765012 ;L/P # 2 LINE FEED REGISTER LFRG.3 = 0 ;L/P # 3 LINE FEED REGISTER LFRG.4 = 0 ;L/P # 4 LINE FEED REGISTER CNT.1 = 765014 ;L/P # 1 WORD COUNT REGISTER CNT.2 = 765014 ;L/P # 2 WORD COUNT REGISTER CNT.3 = 0 ;L/P # 3 WORD COUNT REGISTER CNT.4 = 0 ;L/P # 4 WORD COUNT REGISTER CMD.1 = 765016 u ;L/P # 1 COMMAND REGISTER CMD.2 = 765016 ;L/P # 2 COMMAND REGISTER CMD.3 = 0 ;L/P # 3 COMMAND REGISTER CMD.4 = 0 ;L/P # 4 COMMAND REGISTER STAT.1 = 765016 ;L/P # 1 STATUS REGISTER STAT.2 = 765016 ;L/P # 2 STATUS REGISTER STAT.3 = 0 ;L/P # 3 STATUS REGISTER STAT.4 = 0 ;L/P # 4 STATUS REGISTER ; y ; LPSIZE = 132. ;NUMBER OF CHARACTERS IN L/P BUFFER LPMXTM = 180. ;MAX NO SECONDS LPRNTR WAITS FOR OPER ACTION LPINH = 4 ;INTERRUPT LEVEL OF L/P $NLINE = 56. ; MAX LINES/PAGE (=CONTROL TAPE. $LPERR = 10. .PAGE ;*********************************************************************** ;* ** ;* MACROS TO SATISFY THE DIRECTIVES PR}ESENT IN PALRES ** ;* (OUR VERSION OF PAL11R) BUT NOT PRESENT IN MACRO-11R. ** ;* ** .MACRO .REF A,B,C,D,E,F,G,H,I,J .IRP X, .GLOBL X .ENDM .ENDM .REF .MACRO .DEF A,B,C,D,E,F,G,H,I,J .REF A,B,C,D,E,F,G,H,I,J .ENDM .DEF ; ; ; ; MACRO DEF. FOR QUEUES ; .MACRO .QUE A,B,C .BO�UND .LIST ME A = .-4 B = .-2 .REPT C .WORD 0 .IFZ $KT11C .WORD .-2 ; NOTE: PPA WHEN RESOLVED BY IPL .ENDC .IFNZ $KT11C .PACK .-2 .ENDC .ENDR .NLIST ME .ENDM ; ; MACRO TO SET PRIORITY LEVEL 7 ; .MACRO .LOCK PSR = 177776 .IFZ $1145 MOVB #340,@#PSR .ENDC .IFNZ $…1145 SPL 7 .ENDC ; ; SET INTERRUPT LOCKOUT .ENDM ; ‰�‘