ÀÁ>7$Jü_>À:ÿ à`àÀÿQ$àÈ‹þ€È �@ Ñ BàC ý†à  ` éYÿúûûüýþÿ¦SjL€üÿÿ‘Ú¡K“d›#Y`¡K“ =›kÐŽ4d´^r›8}¡K“›8}¡K“›´w ›Á´,̛ąe ¡K“Bº›{L}¡K“i ¥›xe¡K“ªQ7›é}¡K“Û9n›jL€p¡K“s%›vLG¡K“Àná›; UPDATE 9/29/72 RPOM.S29 ; UPDATE 9/27/72 RPOM.S28 ; UPDATE 9/21/72 RPOM.S27 ; UPDATE 9/9/72 RPOM.S26 ; UPDATE RPOM.S25 ; UPDATE 6/27/72 RPOM.S24 ; UPDATE 6/26/72 RPOM.S23 ; UPDATE 6/22/72 RPOM.S22 ; UPDATE 5/5/72 RPOM.S21 ; UPDATE 5/2/72 RPOM.S20 ; UPDATE 4/14/72 RPOM.S19 ; UPDATE 4/12/72 RPOM.S18 ; ; UPDATE 9/27/72 RPOM.S28 ; UPDATE 9/21/72 RPOM.S27 ; UPDATE 9/9/72 RPOM.S26 ; UPDATE RPOM.S25 ; UPDATE 6/27/72 RPOM.S24 ; UPDATE 6/26/72 RPOM.S23 ; UPDATE 6/22/72 RPOM.S22 ; UPDATE 5/5/72 RPOM.S21 ; UPDATE 5/2/72 RPOM.S20 ; UPDATE 4/14/72 RPOM.S19 ; UPDATE 4/12/72 RPOM.S18 ; UPDATE 3/31/72 RPOM.S17 ; ð´„öE0Ðf8€f<€M€ Œ�˜`T”¸�xˆw , �Áe BfÎEÿ¥Í‹€Í“„á7‚ ¡ ‚ã @ÍÕàÈ D±ˆ�“á$Ä Äe6ñ ‡‡¡ôŽæ‹BÒ •á @„ŒÇ�‡P%H aw Ɔe¦N1èÄ"—¢‡—¢ †Ä¬ÍÓã$”# Ì €Ì‹” NÎC �•Ì‹¤&À“Í•€Á ËEÀ“  ËEÿ?‹ Ë ÷ Š€ …& ð °�÷ ¸ ÷Š w 6"ð&æ¦f&·!Îû ƒ×/Èû8ŽG– €�‚ƒ„…÷/VüÎýô� ƤûÆe@ÿ8Žšûfæ fƒ"ŠÍÕàÄ UPDATE 3/31/72 RPOM.S17 ; UPDATE 3/13/72 RPOM.S16 ; UPDATE 2/24/72 RPOM.S15 ; UPDATE 2/17/72 RPOM.S14 ; UPDATE 2/16/72 RPOM.S13 ; UPDATE 2/3/72 RPOM.S12 ; UPDATE 1/28/72 RPOM.S11 ; UPDATE 1/27/72 RPOM.S10 ; UPDATE 1/24/72 RPOM.S09 ; UPDATE 1/20/72 RPOM.S08 ; UPDATE 1/19/72 RPOM.S07 ; UPDATE 1/18/72 RPOM.S06 ; UPDA UPDATE 3/13/72 RPOM.S16 ; UPDATE 2/24/72 RPOM.S15 ; UPDATE 2/17/72 RPOM.S14 ; UPDATE 2/16/72 RPOM.S13 ; UPDATE 2/3/72 RPOM.S12 ; UPDATE 1/28/72 RPOM.S11 ; UPDATE 1/27/72 RPOM.S10 ; UPDATE 1/24/72 RPOM.S09 ; UPDATE 1/20/72 RPOM.S08 ; UPDATE 1/19/72 RPOM.S07 ; UPDATE 1/18/72 RPOM.S06 ; UPDATE 1/12/72 RPOM.S05 ; UPDA� Aa ŠÁÄ,Ó‹€(q±%( à àEä‹€ÈUHQ̳ˆ (&  Î’È ˆãÈ þ†æ,^  öÿ6Sæâä$Ð%Ê5bƒÎÎeNaÅ Þ æ�ŽŒ‡ÎÅúŽŒ‡N‘ÅÅ€‡W¡ ‡W¡ ‚ ×°ÎŒ„Åe€ÎŒú�%Há  Þ p þÿM‡úÿÁEÿ¿CP È  "‚‡Ï°ÃU ` (È €ÃU (â0 úÿwêÖ w ö&Å*Í €Ã$$$’ÅEùÿð e)ÈU@ àË Ž€ � Šìò �J Ê ðU@wøþÊ Á "‹Å�ŒŒ»‡†€ Îe¢a*YŠüÿ®Á žp þÿ›Å�ÅÅÅŠ&ìÐ "üÿ E”È T‘È (P ó†$bc… Háà ä ÃUŠÊ  "ƒâ„bÄ ÃUE”Þ T‘×0 ×0 Å‹€ÃU Ê ¬…Š€È Ä Þ p¤ÃUø2"üÿà×°Úˆw°þÊ üÁ öÿ<úÿ@¹E%ŠA!ýÈ ×°5Kæ�ÎEÖŠÁEÁeEU%p!þÿ †Eà…d‘ Q¦˜b¥…epá "Еװ,ÅÅ€°Þ Q‘Ê Ã5lH!îÿO½Ác Jp þÿ† ÝÿÿÅŒW¡ Åå IŠ×°¡ŒAaÞ Q‘Þ Êœûâ `àE€Áôÿ(…f€ò a�Î Å €„cÀÊ €  Kаüÿð³OˆÂe²ƒÒ$Äd€ ÎdÎ þ†¨ã¸cÄŠüƒ æ lþÿ î�¶" ƒá  ò…ƒ EàýŒ‡… üfÍÓæ’ Ñ‹¥••Ä €Ê ñŠ DŒð†¶"ᆃ ×¢ÿÿ÷J`÷Ê Ù�רÿÿàJàú�•€ ˜b² ðÿ@àæ(Þ Î&^  TE 1/12/72 RPOM.S05 ; UPDATE 1/11/72 RPOM.S04 ; UPDATE 1/11/72 RPOM.S03 ; UPDATE 12/7/71 RPOM.S02 ; UPDATE 11/10/71 RPOM.S01 .TITLE RPOM TABLES .IFNZ NDISCS&OVRLAY ; DO NOT ASSEMBLE RPOM IF ZERO. ; ;*********************************************************************** ;* RPOM TABLES * ;* TE 1/11/72 RPOM.S04 ; UPDATE 1/11/72 RPOM.S03 ; UPDATE 12/7/71 RPOM.S02 ; UPDATE 11/10/71 RPOM.S01 .TITLE RPOM TABLES .IFNZ NDISCS&OVRLAY ; DO NOT ASSEMBLE RPOM IF ZERO. ; ;*********************************************************************** ;* RPOM TABLES * ;* * ;* PROGRAM IDENTIFICATION. ÷Â÷¾ Èî÷¬ÂÜ     ·¤  Âå�„ û7 7 hw fÄÃÁ¦@Áe@ ñ ùK"÷æÎeŽ Ž ÎÎEÿÎ\± ÀÁŽÉ K"MÑ € W ÷ÃeÄ ÔÍÀÒÁ÷ òÿðÚ ð w Rñ÷ ˜ñÿ< €w$ýæ ÷ ÊñÆew LñðºÿB· ´ÿð ð w ñ÷ \ñÿ< €wèüæ ÷ ŽñÆew ñ÷Úü|ÿ…À ð56 æÎe? 0‡ @†—#€Î€ÎÎEÿ?‚UÂU°6€ 3 w(ÿÀÒÁð² ð Ã6ðÃ妃 ðð÷ Àðÿ< €wLüæ ÷ òðÆe……ÀÿßpÿÃÃe4K#@$—2 ð œ €1Ê € ô3ô æˆæˆ0 æˆÛ×'@üßfÿDÄe"@ È H P œ * ;* PROGRAM IDENTIFICATION. OVYTBL * ;* * ;* PURPOSE. OVYTBL CONTAINS ALL TABLES, DATA AND SYSTEM * ;* EQUATE STATEMENTS REQUIRED FOR THE RPOM SYSTEM. * ;* EACH PARAMETER IS DEFINED IN THE COMMENTS FIELD. * ;* * ;* PROGRAM USAGE. EACH TABLE AND DATA ITEM IS REFER OVYTBL * ;* * ;* PURPOSE. OVYTBL CONTAINS ALL TABLES, DATA AND SYSTEM * ;* EQUATE STATEMENTS REQUIRED FOR THE RPOM SYSTEM. * ;* EACH PARAMETER IS DEFINED IN THE COMMENTS FIELD. * ;* * ;* PROGRAM USAGE. EACH TABLE AND DATA ITEM IS REFERENCED * ;* BY A RPOM SUBROU‘ŒáÅøW¤¤ƒfˆ&ðÿ´ ðÿ¶Špÿö0æÎeŒýŸ04 þÿwJþw ý¦W£ Í•,R•A!øƒÊ• Îå‚.ˆÖ æÎešæÎe4¦‚¦/ˆÖ Ö –%Ö ÈÖ …�Q$U$U%Í óö AÁåB ì‡I#ú…ˆ�ö ÷  ‡±üÿf& f ˆa(‘Ö ‘Öµ‚ñ ‡æW&ˆ& ˆ�ŠÁ †’%ŠŽ Ž Ž Ž ƒà æ,^ ¢ƒbò„)ÌŒ€�Š Ä$Š„ä$ &ˆ”$bÕ$ÒÒÊ" ƒà ƒh„" ˆÁ â��ŠW·x Ó&•—e— !+fÅfÅeÍ5@'&ˆ&ˆf}�Ö €Í CãåEå Df Í�²ÿõU@�e€÷ žÿ€õU …ÁW É�‡æ·šÿÊ w†ÿüÁ � W Mw Øÿò ò÷lÿÊ WÊ Ê W !Ê fÊ �cÁåU 8‚�WÅe Ê UÎ NÊ UÊ Á ÊÅe Ê UÊ U …Ê F!¾‡÷-ÿ¨ÿºÁŠ�ÁжÁóÁ FàÊ e· ÖÿF!ú÷-îþ„ÿçÊ ÷‹àþ©æfæÊ ÷‹ÊþõÁ´þÅÌþÕ BÕ ÍEÿ¿pS Å$þæŒÿæ`ÿ1ˆ $ ^C . DATE:- TIME:- €ÿÿðÌEÿÿEÿÿÿÅaCÐ$È&püÿcF ý–%æ$–ÅCÁ“%@`Ô³� AaENCED * ;* BY A RPOM SUBROUTINE. THOSE TABLES AND ITEMS WHICH * ;* MAY BE REFERENCED BY OTHER PROGRAMS WILL BE DECLARED * ;* IN A .DEF STATEMENT. * ;* * ;* PROGRAMMER 54 * ;* DATE * ;* REVISION TINE. THOSE TABLES AND ITEMS WHICH * ;* MAY BE REFERENCED BY OTHER PROGRAMS WILL BE DECLARED * ;* IN A .DEF STATEMENT. * ;* * ;* PROGRAMMER 54 * ;* DATE * ;* REVISION * ;* ÿDqF üŽ Ã Ãe 3‚/Âå úÂ. fÁe&œ ÎEøÿÎ NaÎe…EM üMÎJ f& N�J Ð ÁåÅ fŽ æ,^ €_ÀeÑ  Å ý†Áá AÌ‹$)&æ©EœÅ ÅeAaW$ÿÿìá ì‰ ópñ åÑ EW" gÅEÂ(�‚Âå³ Ö‡J!ùÒ … W=JÃÅ(ÉÃúÿûƒ@U%ÍÕEüÃEÿÃæŽ Ž æ,^ •$)Î6;ÍàÍ Õ ÕÍ"Õåˆ&f¦Áæ(Þ ‚�…fˆ€0 R—,üÿEƒ K�Sa K�c¶W" gËeÒ B Q$p˜  Ö�,þU%Åg"MÿB°bF ý$ÁD`)¤;�D`÷ &æ*Þ   yŒä54-üÿ †&‚&¦æ(Þ €ˆž$&& Žœæ.^ â �Áåà Ä(´  t  Äe!ö&æ#EÁeÅ  ¥ U Eøÿ÷3!(ô &W EÕüÍî$ & �Ž Ž æ.^ 8  Ãe CÃåÅÇ@!ùÀå &ææ.^  ÷‹ÚþU%Åg"G$B“$‹bF ý–%““‹? �ÁEùÿL05AaAa5ÊEçËEÿø“d ËÓe Áæ(Þ  &æ*Þ €Âeð €ÊU€Ò  âU@ * ;* * ;*********************************************************************** ; .DEF BCPOOL,ECPOOL,ALPOOL,DYSINI .REF BEGDYN,ENDDYN .CSECT ; .PAGE ; ; PRIORITY PROPERTY VALUES ARE AS FOLLOWS: ; +1 = TIME-SLICE ; 0 = FIXED ; -1 = DYNAMIC ; ; ; ; .MACRO .QPART A .LIST ME .I * ;*********************************************************************** ; .DEF BCPOOL,ECPOOL,ALPOOL,DYSINI .REF BEGDYN,ENDDYN .CSECT ; .PAGE ; ; PRIORITY PROPERTY VALUES ARE AS FOLLOWS: ; +1 = TIME-SLICE ; 0 = FIXED ; -1 = DYNAMIC ; ; ; ; .MACRO .QPART A .LIST ME .IFNZ NEQP'A .IFGE PRIP'A z³]wE_P h¾€fkNÐfmC€Mo�Erðv€ý-xÿqF üÁ–$$„D`÷ R&æ*Þ €Ð ÁD`Ì‹€ÌEùøÈ B‡� È‹9� ($)Ì & & Žœæ.^   ÷‹˜ÿU%Åg"GŒ$ä5Þ´"Û†Ê Ù€ð5`Óó �â³ : Å €ÌEË € ÌUà æ(Þ  ÓÅÅe:ÿ »(„Äå"$Á `É%ˆÍ‹áÍŠG×€hŒhE×€6 €wÔ7 l ÕÀÿ÷Óâÿð‹ýÿ7 pÖ  7 Hwr¼ü wbÚý7 *CWÊ ÷Õ€†ÿ÷Å€ÿ÷ |Ó7 7 ÷¸ÿ—×÷ ¦ÿBß³tÿýÍՀߕ@tÿ97 ì×DÄÅ÷÷Å6ÿ7Ñ2ÿG€7 FÍÕ€—÷ · %& ÷¬ÿ÷nÿÁ À”÷(Î   õ  ò÷ð7 Nÿß“pÿ÷à÷2ÿ·|ÿß³tÿ»æ&^ ƒÂ¤ÿ÷ ®Ê#ŠÊ”÷Ö÷¦—¢ø‚ · `ÿìðZÿ° 7 âþ& 7 2÷ Öþ~÷ àþÔ÷ Ôþ÷ ¾þÎÀjþÖ ê€£w ®þÁÁe°þ@@–¡ ¡ ÄtÿÔA �¸@ ×w –þÀŸ–þÄpÿÁÁe�þ�¡ ¡ ÷‹2þé�Ì“@ ‰ p @‡÷ dþè÷ ôÄÄe6Å B Å@þ%wÑìý"CY7Šøÿ †  ·Šèÿ�à�ÁåXÁe   �÷Ö •ù÷œÁß“pÿÃüý©æ4þ� w|þ÷ Ôý’ÃþFNZ NEQP'A .IFGE PRIP'A ; GENERATE TIME-SLICED OR FIXED HEADER .IFG PRIP'A ; TIME-SLICE SUSPEND TIMER .BOUND .WORD 1 ; THREAD WORD .WORD 0,0,0 .BYTE TRES ; TIME-SLICE RESOLUTION .BYTE 20 ; J-OPTION .WORD 0 ; RESET/TIMER .WORD TSABRT ; TIMER COMPLETE SUBROUTINE .WORD 0 ; TIME-OUT RACE FLAG .E ; GENERATE TIME-SLICED OR FIXED HEADER .IFG PRIP'A ; TIME-SLICE SUSPEND TIMER .BOUND .WORD 1 ; THREAD WORD .WORD 0,0,0 .BYTE TRES ; TIME-SLICE RESOLUTION .BYTE 20 ; J-OPTION .WORD 0 ; RESET/TIMER .WORD TSABRT ; TIMER COMPLETE SUBROUTINE .WORD 0 ; TIME-OUT RACE FLAG .ENDC .WORD 0 ; PAÛ7Š„ÿ÷„ÿ÷e€ÿ~ÿ÷TÿvÿÉœ.€xÐfÀêÿÄ 7îÿ7êÿßUAhÿ‡ß hÿ �ÿ—jÿÖÿ· Òÿ· ÌÿßUAhÿæ$^ ŠhÿÀ¦ÿÁ°ÿÁå� px æšÿæß hÿø�Ö À|ÿòÒH€.€M w à÷ðÿ÷îÿ÷eèÿèÿ ÀÎÿw Æ7ØÿÄ  7ÊÿßE@Lÿß LÿN�f¦Á¶ÿ<²ÿß‹Lÿ-€—¢ S—¢ Ê‹_—¢ \—¢Y—¢ —¢ ÷ €ÿ÷Qtÿ÷ nÿIŸ”Nÿ÷ dÿ÷ fÿ÷^ÿÁ Óß‹Lÿ �wLÿ·JÿßU@Lÿ‚�‚�÷$_  LÿÀÿx æÿ榄ƒöþÿÎ&ß‚þÿ…÷ þþ ß• Nÿ÷ ìþ÷ æþ÷ èþ™÷àþ‚ ¿ÿæ&^ Å –%æˆÃÃeêÿÀÀeA m€ÀÂIf•@ä O©W£Ò•^J“ÒÕ@A’�ˆ Õ• E  �ŠI£€Ò•\Í‹�ÍŠW£ À @ @Q• ŠR™Ê‹€ %•�6R˜€bÄI“ôÉ•;fI¥þAe©V!Ó… Ñפ Ì• Έã•.A!Ë•$�Q$Å ~-0  ä@‚ ß“pÿ ø̔à ä@η!NDC .WORD 0 ; PARTITION ADDRESS. 0 = NOT ALLOCATED .WORD QPRT'A ; PUSH ADDRESS .WORD QPRT'A ; PULL ADDRESS .WORD EQPT'A ; BOTTOM OF QUEUE .WORD QPRT'A ; TOP OF QUEUE .BYTE NEQP'A-1 ; MAX. ENTRIES - 1 .BYTE 0 ; ALLOCATION SWITCH .ENDC QPRT'A = . .NLIST SRC .REPT NEQP'A .WORD 0,0,0 .ENDR "RTITION ADDRESS. 0 = NOT ALLOCATED .WORD QPRT'A ; PUSH ADDRESS .WORD QPRT'A ; PULL ADDRESS .WORD EQPT'A ; BOTTOM OF QUEUE .WORD QPRT'A ; TOP OF QUEUE .BYTE NEQP'A-1 ; MAX. ENTRIES - 1 .BYTE 0 ; ALLOCATION SWITCH .ENDC QPRT'A = . .NLIST SRC .REPT NEQP'A .WORD 0,0,0 .ENDR .LIST SRC EQPT'A = .-2 EáECDæÎe0× ƒfÎåæà Ç`$Ugzw>ÃÞ  ƒ þÿ Àå  ƒÀåßÿñÀåÀýÿÀe€ èÉÕä‹ ã¦f €ÀÓ ‚ €àÀEà € à `—#'ð‚� � � à éW£'‚Í‹ W£ÉUW£‚Íe ÍeÍe Íe T“�Z�éƒ Þ  ‚W#™‚‡ ‚Îeò‰Š‰Šä‹1Â’$ 'èd €Š�âý†��dÀ0Ê ø4�@c÷ã Þ  ä‚W3ààÍ Îeõå % •ÀE€ÿÀå0Þ Í Í Í @cÍ Í `à ñV%  ÷‹–þ$Àg"HÀ˜Í @Œý†�ŠÀÕÀ ÷†U$eF ýÆeæÿ÷ v&æ*Þ €�…Ò JÊEÿŠl&ƒ†& Š Ê €æE`£"‹D  Ì ƒ øÿúà õæ(Þ ÿ àUà7Š˜ÿ ñÿÀÑ   (Hh`B$ $�Þÿ×-úÿÿææ,^ �ÃÃeÄÿBÑ„ ýßUàþÿ÷ŠÎÿJ þÿæ&^ –%·Ž7ˆÅÅe’w†ÅÅe|w~ÅxU%Í¥Õ �à� e) &œ ÎE¿µÕÅ EÅe@wH‚’¤·>• ýÂ4Æ.f ýÅ EÅåР… ý‡!‡w ~Ô‹úôŠÿÿp!‡w lÔ‹j!‡w ` Õ�!‡w R ÕAaÅBa %.LIST SRC EQPT'A = .-2 ; END OF THIS LEVEL QPART TABLE .WORD -1. ; TAIL MARKER .ENDC .NLIST ME .ENDM .QPART ; ; ; GENERATE QPART TABLES FOR 16 PRIORITIES ; ; .IRP ARG,<01,02,03,04,05,06,07,08,09,10,11,12,13,14,15> .QPART ARG .ENDM ; ; ; ; ; THE FOLLOWING TABLE CONTAINS THE ADDRESS OF THE QPART'S ; FOR EACH PRIORITY LEVEL. 0 = DOESN'T EXIST ; QPARTN = & ; END OF THIS LEVEL QPART TABLE .WORD -1. ; TAIL MARKER .ENDC .NLIST ME .ENDM .QPART ; ; ; GENERATE QPART TABLES FOR 16 PRIORITIES ; ; .IRP ARG,<01,02,03,04,05,06,07,08,09,10,11,12,13,14,15> .QPART ARG .ENDM ; ; ; ; ; THE FOLLOWING TABLE CONTAINS THE ADDRESS OF THE QPART'S ; FOR EACH PRIORITY LEVEL. 0 = DOESN'T EXIST ; QPARTN = .-2 ; TAKE CARE OF ILLEGAL÷ .ýË¥:Û÷ "ýË¥.úË¥$÷óÄ Ö Ê÷ û„ ‡& ƒ Ë¥0 ‚Ë¥Z‡Ë¥9†Ë¥A‚Ž Ž Î Ö ‡ÿÿÿÿÿ ÿ& & ACB’$2Š„… Ä  AÁe ! ! ! ! ! À`Ã0ƒ .ƒ ÷ t1à ÷ Dý Ѥ÷ 1�Ó¥,Á ÷Ë¥,çË¥<Ë¥ ¶ Ë¥.ÞË¥[åà ÷ fË¥*8ŽŠ„¶D`Ì%Ö Ê Œ%Œœÿÿ %2“ÿÿÅ"÷‹6ÿU%Gƒ÷ à ÷ Ú1²ƒ÷ ¨ýKŠƒ÷  Ó‹µ€cŠ÷ j2�ÿÿªƒ & ÁÎ’÷ |ö’÷ rýË¥:æŽ � öË¥.óË¥$ðDà UÁ •üÄ Œ ŠÁ F`ÎÕ…æ÷ 0ýË¥:½³ Ó¥*@ ‡ã¨÷ û& Î’Îå0À À À €eô& ƒ Ë¥0 ‚Ë¥Z‡Ë¥9†Ë¥A‚Ž Ž Î Ö ‡&fË¥*À”Ä à ÷ Àÿ Å”Åå@Å”Åå@aÄ À À À À À @aé…„‡ÿæ&^ –%&æˆB A!"‚W£ D•¡ ¡,öÀÿà — COK— STE— WACˆÎ&^ €e%Oü‡ÁÿÿIà ÂÿîÿZZÿÿÿÿÿÿÀòÿÀaÌ é�” ü‚ààg" )ÄeÄm`ÿ& (æ$^ `„ HàÃ((Ð&‚¦æ(Þ ¿ ÀeÃeÁþÿ À³6#‹�€#‹ Ž ·„DASA ECODBERE KITIèÿENMOäÿPR AS DU ZZ) .-2 ; TAKE CARE OF ILLEGAL LEVEL 0 .WORD QPRT01,QPRT02 .WORD QPRT03,QPRT04 .WORD QPRT05,QPRT06 .WORD QPRT07,QPRT08 .WORD QPRT09,QPRT10 .WORD QPRT11,QPRT12 .WORD QPRT13,QPRT14 .WORD QPRT15,QPRT16 .=QPARTN+2+NPRIOR+NPRIOR ; GET RID OF ENTRIES NOT NEEDED ; ; ; GENERATE DUMMY SYMBOLS FOR NON-EXISTENT QPART TABLES .IFZ NEQP01 QPRT01 = 0 .ENDC * LEVEL 0 .WORD QPRT01,QPRT02 .WORD QPRT03,QPRT04 .WORD QPRT05,QPRT06 .WORD QPRT07,QPRT08 .WORD QPRT09,QPRT10 .WORD QPRT11,QPRT12 .WORD QPRT13,QPRT14 .WORD QPRT15,QPRT16 .=QPARTN+2+NPRIOR+NPRIOR ; GET RID OF ENTRIES NOT NEEDED ; ; ; GENERATE DUMMY SYMBOLS FOR NON-EXISTENT QPART TABLES .IFZ NEQP01 QPRT01 = 0 .ENDC .IFZ NEQP02 QPRT02 = 0 ‚ 7´FILE ERROR þ!Ô ûƒ Äí&Ĥ÷ L òà ää÷ 8&€ˆ&ˆà 3Ãe0ö 7`$ÿææ Å"U%Á0é YbÇ.$)&&ˆ&cA!ããD„åÔ Ô5@Ô 7†ÿÔ‡7 DEV. FULL þß•€þÿà ߋtÿý€”vÿˆŠÊÈŠ÷¹�& N˜&Îåæ"ˆW¢0êW¬ æÑ• öÿæ&^ –%· öæþÿó‹PÎ ¡“  I£ W£ W£,C•ÃåA× >†ƒŠÀ À À `À À À`‰Šçà g À ÀEÁ A(ÁeE ÁeE ú‡ÎŠEüÅ`ÅeÀÀ— EN W=üÿï× ECÃ@Í@@ÍPNŠ�• !ÿæ&^ –%À•þÿó  ÀŠa£ Ò W£R Ò W£K� · Ìc–%¶�@ÀeJ!Š!! ä Ì‹þ€óÃeËËe÷˜æ&^ ß“pÿDÿæ&^ –%á•þÿæœ2 ÉŠA!@•   , Àå0 "‚—3àÎ Î Î Ðê— BEB W£S ɌΠΠΗ3ÅU%•#‚‹#†Ö A’ ·Š‚>ß‹tÿý€×'@üßfÿA! ¡wV–%€ÄeJ Š  ÄÄe4Ð   $)3U%À0ÿÀe @ ( úÍæ&^ ÷Æßpÿ- .IFZ NEQP02 QPRT02 = 0 .ENDC .IFZ NEQP03 QPRT03 = 0 .ENDC .IFZ NEQP04 QPRT04 = 0 .ENDC .IFZ NEQP05 QPRT05 = 0 .ENDC .IFZ NEQP06 QPRT06 = 0 .ENDC .IFZ NEQP07 QPRT07 = 0 .ENDC .IFZ NEQP08 QPRT08 = 0 .ENDC .IFZ NEQP09 QPRT09 = 0 .ENDC .IFZ NEQP10 QPRT10 = . .ENDC .IFZ NEQP03 QPRT03 = 0 .ENDC .IFZ NEQP04 QPRT04 = 0 .ENDC .IFZ NEQP05 QPRT05 = 0 .ENDC .IFZ NEQP06 QPRT06 = 0 .ENDC .IFZ NEQP07 QPRT07 = 0 .ENDC .IFZ NEQP08 QPRT08 = 0 .ENDC .IFZ NEQP09 QPRT09 = 0 .ENDC .IFZ NEQP10 QPRT10 = 0 .ENDC .IFZ NEÿæ&^ Ö ÷ s�ÉŒ3 o‚‚ m‡7Rô‹þÿý€Œ�‡ Âýÿ¡�A!B•Âå0— Z‚0àWÀ À À €ÐW£ îÂ Þ Â˜Á BŒý†È ŠÂÕ ÷†óƒÁÞ Â•/È ÁÞ Â: Î È ÂA� ŠÈ ß‹pÿý€Í—rÿÍÅ€Â^UW£î�ŠI£€Â•\È Í‹€Bœÿÿé�a“æÍŠQ“B“Ž à‚È ÂÈ  B¥N÷ Dÿ€ÀÀ…”IŠA’–% ·ŠÿŽæ&^ �%Ö ƒ& €!ýa£mB—¤:� û‡ã(÷ –#†ÃåW¥[6ÆeÁýÿ ·Š¾\cã÷ p‡Ë ûs!í b¥R©K…÷ lÆ ãÚcË Âã A!Û÷ ,‡Â ù÷ Jã ÏW£.Ì… SÂícA!ÇW¥]ûÜÀW£0‡W£9ƒÀ@W£A‡Í¥Z‡f“à••‡W£,W£ ùV¥A!¦N÷ Àÿý†À‡À Àmþþÿæ&^ –%€Àew €H R´Õ ýþ  ÃfÎaÞ Å òÆeÁýÿ· ¸W%!‚¢¨‚ ÷ Þ þD”Þ È È È bÈ È aB !ŠÃ òÖ ‡÷ Ôÿpþÿ‡Â & ÷ .À óˆŠ'ÈŠ%Î W¤, 6’ Ãíˆe‡Ô ! ÷ œÿÈ ÎeÞ ÖÈ5à Äå0¡óƒÁ ö Ê È÷ fÿ–%ÀÿÀeÄvÿÿæ&^ –%· öÁ @Àe ÅeÎ M‚Âe ƒÓ ÊÊ•Ó ÊŠŽ ú‡’$Í‹#Cã(õ‹ÿÿñ .Ó È'×$ÿÿÃ ÄœÄ %Ä`Î(Óÿÿ Ë î×(ÿÿÓ Í‹ææ,^ „+È Óÿÿ “„!ýÄvÿ ‚Âeõ‹ÿÿ   Í‹Ñå‹Ãe K) É ÁùÿÁþÿ †1 0 .ENDC .IFZ NEQP11 QPRT11 = 0 .ENDC .IFZ NEQP12 QPRT12 = 0 .ENDC .IFZ NEQP13 QPRT13 = 0 .ENDC .IFZ NEQP14 QPRT14 = 0 .ENDC .IFZ NEQP15 QPRT15 = 0 .ENDC .IFZ NEQP16 QPRT16 = 0 .ENDC ; .PAGE ; ; THE FOLLOWING TABLE CONTAINS THE NUMBER OF (REQUESTS -1) ; PENDING IN EACH PRIORITY LEV2QP11 QPRT11 = 0 .ENDC .IFZ NEQP12 QPRT12 = 0 .ENDC .IFZ NEQP13 QPRT13 = 0 .ENDC .IFZ NEQP14 QPRT14 = 0 .ENDC .IFZ NEQP15 QPRT15 = 0 .ENDC .IFZ NEQP16 QPRT16 = 0 .ENDC ; .PAGE ; ; THE FOLLOWING TABLE CONTAINS THE NUMBER OF (REQUESTS -1) ; PENDING IN EACH PRIORITY LEVEL'S QPART. ; NREQQP = .-1  AÀ ÞÄ ûÑ Àå‡ ûÀeÓÄïÅÅæ$^ &‚&¦ÁÃe ËE“]ËËeæ(Þ ˆžæ&^ ‡&æð Ý�Ö Å"uöÿßz¾Ö îÂè+ÔÆSNÊå&�ÎÃ*Ò)àÖ¨-ßfÙ QKܪ'ÿÅaå Í‹æÄ,L ƒw~ÄB“Œ ýƒàÇ` 5 þÿð5€ 6 ö ö wö wæ*ˆð w4  þÿD�ÃU€ŒŒ†ÃUÃE€Œ†ÃU S¦Ž¦�Æå &ˆ…Õ fNUVUe —#ýÿ<†…¦fæ& *ˆÖ 1ÃU€õ €ÃU@DÄEÀÿÃU!>†ÃU¦fæ& *ˆÖ õ5Àõ €ÃU ÃUÃCÝÃB E Æe¶ö v¶ööð æ*ˆ Å"U%÷‹–þGæÎe�þæfÇ.Â Ñ É Ñ EÆe¥�å‹ÄÄEv ×&&ÿæ&^ &¦Âeþÿp°ð€ÿ÷ TðÀÿœ ÅEøÿÅ ÅeE`E& & EfpCCmà æð÷ æ¦ÄÔ &ƒ ðæ°÷  ðþÿ°°÷ Ò8 ÷ ÀðÀÿ‚× À‡ÂåÀƒ ùö °°÷ �ö„%Ô Ã ý605EL'S QPART. ; NREQQP = .-1 ; TAKE CARE OF ILLEGAL LEVEL 0 .BYTE -1.,-1.,-1.,-1. .BYTE -1.,-1.,-1.,-1. .BYTE -1.,-1.,-1.,-1. .BYTE -1.,-1.,-1.,-1. .=NREQQP+1+NPRIOR ; GET RID OF ENTRYS NOT NEEDED .EVEN ; .PAGE ; ; THE FOLLOWING ARE THE ADDRESSES OF THE DEVICE REGISTERS ; FOR THE PERIPHERAL HARDWARE ALLOCATOR B3. ; .IFNZ $CORAL B3FR = 162024 ; FUNCTION6 ; TAKE CARE OF ILLEGAL LEVEL 0 .BYTE -1.,-1.,-1.,-1. .BYTE -1.,-1.,-1.,-1. .BYTE -1.,-1.,-1.,-1. .BYTE -1.,-1.,-1.,-1. .=NREQQP+1+NPRIOR ; GET RID OF ENTRYS NOT NEEDED .EVEN ; .PAGE ; ; THE FOLLOWING ARE THE ADDRESSES OF THE DEVICE REGISTERS ; FOR THE PERIPHERAL HARDWARE ALLOCATOR B3. ; .IFNZ $CORAL B3FR = 162024 ; FUNCTION REGISTER B3AR = 162022 þÿE�Å Å Å Å ÅÅ  ƒ …ã…#ûƒ�c�cDð  fNUVU00…%%%à çp¹Ö bÀÖ âþÿ¼ÅÅæ$^ &‚&¦ÁÃe ËE“]ËËeæ(Þ ˆžæ&^ ‡&æð Ý�Ö Å"uöÿÿ€ö 9�:Ÿ-  —-‚ö5@…ƒŸ­!æøÿæÇÿà à à …EÅ ‡6 öÿÿÅ&M ¶¶Ö æ$^ Å"÷‹ŠÿU%Gw‚fþÿ& ŽÜÅ …ãÅ þ†pŽ Å,M …'pÄ Ä ýpß„‚…T Ô Åe TTTTTŒìLÅ&M ¶Ž¶0 õð‹ ò�þÿœ ÅEøÿÅ CaÃeÄÅeÕ D!ûK&þÿœ ÄEøÿÄ aÎeÞ fæÅ.M &0 þÿ& NÝÄ.L &0 æL ³ÿÅ&M  Wþÿ„Eœ& … … … ‡„ ü†Îù„e&pÿ Æÿœ ÅEøÿÅ ÅeE`E& & 0pfÂ’$EAÁ B`°¦ðÀÿÿ ~ÿ0Ó þã ðÿ nÿ& &DÔ &à à à à ÂÅ ƒ`üà ic Å€J1 „ 6!(à ¡ öâ Ž ñ6!‡6 à ¡ E REGISTER B3AR = 162022 ; ANSWER REGISTER B3RR = 162020 ; REQUEST REGISTER .ENDC ; BSYB3 = 000002 ; BUSY MASK FOR B3 BOX SRCHB3 = 000060 ; SEARCH MASK FOR B3 BOX ; ; NOTE: MINIMUM SEARCH ALLOB3 = 000010 ; ALLOCATE MASK FOR B3 BOX DEALB3 = 000004 ; DE-ALLOCATE MASK FOR B3 BOX SERRB3 = 000001 ; SEARCH ERROR MASK FOR B3 BOX ; F ; ANSWER REGISTER B3RR = 162020 ; REQUEST REGISTER .ENDC ; BSYB3 = 000002 ; BUSY MASK FOR B3 BOX SRCHB3 = 000060 ; SEARCH MASK FOR B3 BOX ; ; NOTE: MINIMUM SEARCH ALLOB3 = 000010 ; ALLOCATE MASK FOR B3 BOX DEALB3 = 000004 ; DE-ALLOCATE MASK FOR B3 BOX SERRB3 = 000001 ; SEARCH ERROR MASK FOR B3 BOX ; ; COULDN'T FIN€Ó$æææËÀÿAcfNlÎ £& EÕ CDÄ Ä Ä Ä  à aüCU%W#ÿÿÕ Âeà ø÷  Î pŽ p÷ ŽÚÃÍ0‚ à ûÍP¸Ö Àeˆ  Å"÷‹bÿU%M–%þÿ& NÝæ.^ 0 ðE€ Äeœ ÃEøÿà Å`ÅeD#Eü &ææ.Þ 0 &æÅÅæ$^ &‚&¦ÁÃe ËE“]ËËeæ(Þ ˆžæ&^ ‡&æð Ý�Ö Å"uöÿVqàËÐäÿ &èì$&ìþ%É-ð�(è'óû#/÷ú ¸û‡xþC""""""" """""""""""""""""""""""""""""""""""""""233333333333333333333333DDDDDDD@DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌLADD€€B Cs@Qç{á¼|þ›s@Qæ{ß¼}þ›$DgffffffÿfffffffffffffffffffffffffffffffffffffffþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÅaå Í‹æÄ,L ƒw:ÄB8ŽŒ ýƒàÇ` 5 þÿ€�&ˆ ‚— ýÿ†ƒœÃEÀÿ× >w†× × ò f€ò5ÀeòU@ò €× [æ*ˆ² ¦¦æ× Ž & *ˆÖ G× ‚&(ˆ°Ì 8�L'ˆ°4e÷ ÌQ$ ô �BBâBä" ± üÿü× ÷ ¬ŒÉU@Ò °ðU€ Æe  Å"U%÷‹äþGæÎeÞþæfÇ.Ö … U¥… … … … U¥Ñ Bb‘â‹Ã 0Š æ*ˆ€�Ö BÃÅ.&0 æM &0 & I ; COULDN'T FIND AN AREA ERROR .IFZ $CORAL .REF B3FR,B3AR,B3RR .ENDC ; .PAGE ; ; THE FOLLOWING INFORMATION IS THE DYNAMIC CORE ; SPACE DESCRIPTORS. CORE BLOCKS (ONE GRANULE OF CORE ; SPACE) ARE OF SIZE 2**N AND ARE MULTIPLES OF DISC ; SECTORS. ; BCPOOL: .PACK BEGDYN ; BEGINNING ADDRESS OF CORE POOL ; ; SET UP BY INITIALIZATION ECPOOL: .PACK ENDDYNJD AN AREA ERROR .IFZ $CORAL .REF B3FR,B3AR,B3RR .ENDC ; .PAGE ; ; THE FOLLOWING INFORMATION IS THE DYNAMIC CORE ; SPACE DESCRIPTORS. CORE BLOCKS (ONE GRANULE OF CORE ; SPACE) ARE OF SIZE 2**N AND ARE MULTIPLES OF DISC ; SECTORS. ; BCPOOL: .PACK BEGDYN ; BEGINNING ADDRESS OF CORE POOL ; ; SET UP BY INITIALIZATION ECPOOL: .WORD ENDDYN ; ENDING ADDRESS OF CORE POOL €P ¸÷VÃÃeæÿÄœÄ`Xß Zß“ÁêÁÊÿQ$ÀÈê```BÂEùÿÂUA ‡æ$^ ÁÀêÀ¢ÿB� Â5× ‡÷ ¸ÿæ&^ ðU€ ß Âêì7 rÿfæ”`À>�÷ `ß5pþú×DD÷•è÷•æßpþß5@pþüÖ vÀ¾ÿÀe&¦âä—— ßApþ‡&ÀîÿæpþÖ b‡;�fÁ—tþÈ‹W Ø`W àpW èpW ÈgW Ð`Á¥`æ•!Á¥ æ•?�•Á €ÁeàfÁå �ÎåúÎmRÿÎaÎe°�—7 xÿ;ÈÓ7tÿ�€ŠpþÈ‹&À5€æ$^ ÷•øÿÀJÿÁBÿÀå(  ýÐ ! @ ý‚É� ÀÒþx Špþ÷ 8÷ ÿÑÁ¼þqH 7ЬÿßÕpþÂ÷DÀþø7 ºþõ7Фÿò7Š¢ÿïæ–þ懠±²3´56·¸ :£À'½"90¯SÔUVרY Ý¬¥_¾?Z-ÊKÌMNÏPÑ !$ª©»\Ò¦ABÃDÅÆGH Û.<(+ÞÉ ±²3´56·¸ ¦½':¾À90¯SÔUVרY _¬(¥\"Z-ÊKÌMNÏPÑ  $ªÝ»ÞÒ+ABÃDÅÆGH  .©Û<£É’|€:€M÷ úß@êÀêÀ5@öÀ5ó7 2÷ èÖ ÀÊÿx ·7Š(÷  ÁÁe$wÁe…wÀ¢ÿÁ Á ÷ tÇê÷ –ß@ê êM ; ENDING ADDRESS OF CORE POOL ; ; SET UP BY INITIALIZATION ; ; ***NOTE: IF $KT11C, THEN THE ABOVE ARE PACKED PHYSICAL ADDRESSES ; BSZ256 = 1 ; BLOCK SIZE 256 WORD OPTION ; ; IF SET THEN BLOCK # IN HIGH ; ; ORDER BYTE = # OF WORDS. ; ; DOUBLE FOR NO. LOCATIONS. .IFZ BSZ256 ; ; IF NON; ; SET UP BY INITIALIZATION ; ; ***NOTE: IF $KT11C, THEN THE ABOVE ARE PACKED PHYSICAL ADDRESSES ; BSZ256 = 1 ; BLOCK SIZE 256 WORD OPTION ; ; IF SET THEN BLOCK # IN HIGH ; ; ORDER BYTE = # OF WORDS. ; ; DOUBLE FOR NO. LOCATIONS. .IFZ BSZ256 ; ; IF NOT SET USE SHFTCT TO ; QT SET USE SHFTCT TO ; ; CALCULATE # WORDS BY SHIFTING SHFTCT = 0 ; SHIFT COUNT USED TO CALCULATE # .ENDC ; ; WORDS FROM # BLOCKS ; ; ; ALLOCATION POOL TABLE. CONTAINS START BLOCK IN ; CORE POOL OF SPECIFIED PRIORITY CORE SPACE ; ALPOOL = .-1 ; TAKE CARE OF ILLEGAL LEVEL 0 .BYTE $SB001 .BYTE $SB002 .BYTE $SB003 .BYTE $SB0R ; CALCULATE # WORDS BY SHIFTING SHFTCT = 0 ; SHIFT COUNT USED TO CALCULATE # .ENDC ; ; WORDS FROM # BLOCKS ; ; ; ALLOCATION POOL TABLE. CONTAINS START BLOCK IN ; CORE POOL OF SPECIFIED PRIORITY CORE SPACE ; ALPOOL = .-1 ; TAKE CARE OF ILLEGAL LEVEL 0 .BYTE $SB001 .BYTE $SB002 .BYTE $SB003 .BYTE $SB004 .BYTE $SB005 .BYTE U04 .BYTE $SB005 .BYTE $SB006 .BYTE $SB007 .BYTE $SB008 .BYTE $SB009 .BYTE $SB010 .BYTE $SB011 .BYTE $SB012 .BYTE $SB013 .BYTE $SB014 .BYTE $SB015 .BYTE $SB016 .=ALPOOL+1+NPRIOR ; GET RID OF ENTRIES NOT NEEDED .EVEN ; .CSECT .DYSIN ; ; DYNAMIC STORAGE INITIALIZATION. ; CALLED BY IPL TO INITIALIZE STORAGE ALLOCATOR TO SIZE V $SB006 .BYTE $SB007 .BYTE $SB008 .BYTE $SB009 .BYTE $SB010 .BYTE $SB011 .BYTE $SB012 .BYTE $SB013 .BYTE $SB014 .BYTE $SB015 .BYTE $SB016 .=ALPOOL+1+NPRIOR ; GET RID OF ENTRIES NOT NEEDED .EVEN ; .CSECT .DYSIN ; ; DYNAMIC STORAGE INITIALIZATION. ; CALLED BY IPL TO INITIALIZE STORAGE ALLOCATOR TO SIZE ; OF DYNAMIC CORE AND RESERVE FIXEY ; OF DYNAMIC CORE AND RESERVE FIXED OR TIME-SLICED PARTITIONS ; IF NECESSARY. ; .REF DYNSIZ DYSINI = . MOV DYNSIZ,R0 ; SIZE OF DYNAMIC STORAGE ASR R0 ; NO. OF WORDS CLRB R0 ; CALCULATE START BLOCK ; ; TABLE REGISTERS MOV R0,R1 SWAB R1 ; GET START BLOCK IN R1 NEGB R1 ; # OF BLOCKS TO ALLOCATZD OR TIME-SLICED PARTITIONS ; IF NECESSARY. ; .REF DYNSIZ DYSINI = . MOV DYNSIZ,R0 ; SIZE OF DYNAMIC STORAGE ASR R0 ; NO. OF WORDS CLRB R0 ; CALCULATE START BLOCK ; ; TABLE REGISTERS MOV R0,R1 SWAB R1 ; GET START BLOCK IN R1 NEGB R1 ; # OF BLOCKS TO ALLOCATE BISB R1,R0 ; SET ]E BISB R1,R0 ; SET UP TO ALLOCATE UNUSED PART OF BITTABLE MOV R0,B3RR ; ALLOCATE UNUSED MOV #ALLOB3,B3FR ; DYNAMIC STORAGE .IFZ $CORAL JSR PC,ALLOC ; USE SOFTWARE ALLOCATOR .ENDC CLR R0 MOV #2*USEC25,R0 D0: DEC R0 ; 50 USEC DELAY BNE D0 BIT #BSYB3,B3FR ; B3 STILL BUSY? BEQ DYSI10 ; NO HALT^UP TO ALLOCATE UNUSED PART OF BITTABLE MOV R0,B3RR ; ALLOCATE UNUSED MOV #ALLOB3,B3FR ; DYNAMIC STORAGE .IFZ $CORAL JSR PC,ALLOC ; USE SOFTWARE ALLOCATOR .ENDC CLR R0 MOV #2*USEC25,R0 D0: DEC R0 ; 50 USEC DELAY BNE D0 BIT #BSYB3,B3FR ; B3 STILL BUSY? BEQ DYSI10 ; NO HALT ; YES-HALT INIT.******a ; YES-HALT INIT.************ DYSI10: RTS PC ; RETURN TO IPL ; .CSECT .PAGE ; ; THE FOLLOWING LIST IS THE PARTITION HEADER THAT IS ; DYNAMICALLY SET IN A PARTITION BY RPOM. ; PRTHDR = . .WORD 0 ; PARTITIONS B3 ADDRESS-SET DYNAMICALLY .WORD 1 ; PRIOR & IQPART .WORD 0 ; WORK WORD .IFNZ $KT11C .WORD 0 ; WORK WORb****** DYSI10: RTS PC ; RETURN TO IPL ; .CSECT .PAGE ; ; THE FOLLOWING LIST IS THE PARTITION HEADER THAT IS ; DYNAMICALLY SET IN A PARTITION BY RPOM. ; PRTHDR = . .WORD 0 ; PARTITIONS B3 ADDRESS-SET DYNAMICALLY .WORD 1 ; PRIOR & IQPART .WORD 0 ; WORK WORD .IFNZ $KT11C .WORD 0 ; WORK WORD .ENDC ; ; DISC I/O PeD .ENDC ; ; DISC I/O PARAMETER LIST ; .WORD 1 ; THREAD WORD .BYTE SYSDSC ; LOGICAL DEVICE = SYSTEM DISC .BYTE 0 ; EXIT TYPE-SET DYNAMICALLY .WORD 0 ; I/O COMPLETE SET DYNAMICALLY .BYTE 0 ; NO I/O ERROR TASK .BYTE 2 ; DISC I/O LEVEL TWO .WORD 0,0 ; ERROR AND SYSTEM WORDS .WORD 0 ; ADDRESS OFfARAMETER LIST ; .WORD 1 ; THREAD WORD .BYTE SYSDSC ; LOGICAL DEVICE = SYSTEM DISC .BYTE 0 ; EXIT TYPE-SET DYNAMICALLY .WORD 0 ; I/O COMPLETE SET DYNAMICALLY .BYTE 0 ; NO I/O ERROR TASK .BYTE 2 ; DISC I/O LEVEL TWO .WORD 0,0 ; ERROR AND SYSTEM WORDS .WORD 0 ; ADDRESS OF BUFFER SET DYNAMICALLY .IFNZ i BUFFER SET DYNAMICALLY .IFNZ $KT11C .WORD 0,0 ; FOR SVA OF DATA BUFFER . = .+22. ; BUMP SO TRLIDX,SGLNGT,SGADDR PUT ; ; THREAD WORD OF HEADER AT 32 ; ; WORD BOUNDARY .ENDC ; ; DISC I/O DATA HEADER ; .WORD 0 ; FILE ID SET DYNAMICALLY .BYTE 1 ; USE FICE DIRECTORY INFORMATION .BYTE 0 ; I/O FCj$KT11C .WORD 0,0 ; FOR SVA OF DATA BUFFER . = .+22. ; BUMP SO TRLIDX,SGLNGT,SGADDR PUT ; ; THREAD WORD OF HEADER AT 32 ; ; WORD BOUNDARY .ENDC ; ; DISC I/O DATA HEADER ; .WORD 0 ; FILE ID SET DYNAMICALLY .BYTE 1 ; USE FICE DIRECTORY INFORMATION .BYTE 0 ; I/O FCN SET DYNAMICALLY-INITIALLY READ mN SET DYNAMICALLY-INITIALLY READ .WORD 0,0,-1. ; THREE SYSTEM WORDS-LAST ONE ALSO TAIL SWITCH ; ; THREAD WORD OF HEADER AT 32 WORD ; ; BOUNDARY .ENDC ; ; DOUBLE-WORD BOUNDARY ; .PAGE ; ; ROLL-IN ERROR TYPE-OUT MODULE. ERROR #2 ; .BOUND RIEMOD = . .WORD 1 ; THREAD WORD .WORD 0 .WORD 2 n.WORD 0,0,-1. ; THREE SYSTEM WORDS-LAST ONE ALSO TAIL SWITCH ; ; THREAD WORD OF HEADER AT 32 WORD ; ; BOUNDARY .ENDC ; ; DOUBLE-WORD BOUNDARY ; .PAGE ; ; ROLL-IN ERROR TYPE-OUT MODULE. ERROR #2 ; .BOUND RIEMOD = . .WORD 1 ; THREAD WORD .WORD 0 .WORD 2 ; ERROR NUMBER 2 .WORD q ; ERROR NUMBER 2 .WORD 0 ; ARGUMENT 1- TASK .WORD 0,0,0 ; UNUSED ARGUMENTS ; ; TIME-SLICE SUSPEND TIME-OUT ERROR MODULE ; .IFNZ $TMSLC .BOUND TSEMOD = . .WORD 1 ; THREAD WORD .WORD 0 .WORD 4 ; ERROR NUMBER 4 .WORD 0 ; ARGUMENT 1- TASK .WORD 0,0,0 ; UNUSED ARGUMENTS .ENDC ; .IFNZ $TMSr0 ; ARGUMENT 1- TASK .WORD 0,0,0 ; UNUSED ARGUMENTS ; ; TIME-SLICE SUSPEND TIME-OUT ERROR MODULE ; .IFNZ $TMSLC .BOUND TSEMOD = . .WORD 1 ; THREAD WORD .WORD 0 .WORD 4 ; ERROR NUMBER 4 .WORD 0 ; ARGUMENT 1- TASK .WORD 0,0,0 ; UNUSED ARGUMENTS .ENDC ; .IFNZ $TMSLC!CHKPTC ; ; ROLL-OUT ERROR TYPuLC!CHKPTC ; ; ROLL-OUT ERROR TYPE-OUT MODULE. ERROR #1. ; .BOUND ROEMOD = . .WORD 1 ; THREAD WORD .WORD 0 .WORD 1 ; ERROR NUMBER 1 .WORD 0 ; ARGUMENT 1- TASK .WORD 0,0,0 ; UNUSED ARGUMENTS ; .ENDC ; .PAGE ; PLOCK = 340 ; PRIORITY LOCKOUT MASK PSR = 177776 ; PROCESSOR STATUS REGISTER ADDRESS ; ; vE-OUT MODULE. ERROR #1. ; .BOUND ROEMOD = . .WORD 1 ; THREAD WORD .WORD 0 .WORD 1 ; ERROR NUMBER 1 .WORD 0 ; ARGUMENT 1- TASK .WORD 0,0,0 ; UNUSED ARGUMENTS ; .ENDC ; .PAGE ; PLOCK = 340 ; PRIORITY LOCKOUT MASK PSR = 177776 ; PROCESSOR STATUS REGISTER ADDRESS ; ; ; PARTITION STATUS VALUES - PSTAT y; PARTITION STATUS VALUES - PSTAT ; EWS = 0. ; ENTRY WAITING SERVICE PARTCK = 1. ; PARTITION CHECKPOINTABLE VOLSCK = 2. ; VOL. SUSPENDED AND CHECKPOINTABLE PRTNCK = 3. ; PARTITION NOT CHECKPOINTABLE VLSNCK = 4. ; VOL. S'PNDED AND NOT CHECKPOINTABLE IOIP = 5. ; OVERLAY I/O IN PROGRESS ABRTRQ = 6. ; ABORT REQUESTED ; ; ; ; EQUATES z; EWS = 0. ; ENTRY WAITING SERVICE PARTCK = 1. ; PARTITION CHECKPOINTABLE VOLSCK = 2. ; VOL. SUSPENDED AND CHECKPOINTABLE PRTNCK = 3. ; PARTITION NOT CHECKPOINTABLE VLSNCK = 4. ; VOL. S'PNDED AND NOT CHECKPOINTABLE IOIP = 5. ; OVERLAY I/O IN PROGRESS ABRTRQ = 6. ; ABORT REQUESTED ; ; ; ; EQUATES FOR PARTITION HEADER-FROM PARTITION BEGINN}FOR PARTITION HEADER-FROM PARTITION BEGINNING ; NOB = 0. ; NUMBER OF BLOCKS SB = 1. ; START BLOCK IQPART = 2. ; INDEX INTO QPART OPRIOR = 3. ; OVERLAY PRIORITY WORKWD = 4. ; WORK WORD IOTHRD = 6.+2*$KT11C ; I/O THREAD WORD IOEXIT = 9.+2*$KT11C ; I/O EXIT TYPE IOCOMP = 10.+2*$KT11C ; I/O COMPLETE ADDRESS IN I/O LIST DBADDR = 18.+2*$KT11C ; DATA~ING ; NOB = 0. ; NUMBER OF BLOCKS SB = 1. ; START BLOCK IQPART = 2. ; INDEX INTO QPART OPRIOR = 3. ; OVERLAY PRIORITY WORKWD = 4. ; WORK WORD IOTHRD = 6.+2*$KT11C ; I/O THREAD WORD IOEXIT = 9.+2*$KT11C ; I/O EXIT TYPE IOCOMP = 10.+2*$KT11C ; I/O COMPLETE ADDRESS IN I/O LIST DBADDR = 18.+2*$KT11C ; DATA BUFFER ADDRESS DBADR1 = 24. � BUFFER ADDRESS DBADR1 = 24. ; SVA OF DATA BUFFER DBADR2 = 22. ; ASR 6 FOR DATA BUFFER OFLEID = 20.+28.*$KT11C ; OVERLAY FILE ID IOFCN = 23.+28.*$KT11C ; I/O FUNCTION ; ; EQUATES FOR PARTITION HEADER-FROM PROGRAM (TASK) HEADER ; SGADDR = -2. ; RELATIVE SEGMENT ADDRESS SGLNGT = -4. ; SEGMENT LENGTH TRLIDX = -6. ; RELATIVE INDEX TO TRAILER HIOFCN = -13. ; ‚ ; SVA OF DATA BUFFER DBADR2 = 22. ; ASR 6 FOR DATA BUFFER OFLEID = 20.+28.*$KT11C ; OVERLAY FILE ID IOFCN = 23.+28.*$KT11C ; I/O FUNCTION ; ; EQUATES FOR PARTITION HEADER-FROM PROGRAM (TASK) HEADER ; SGADDR = -2. ; RELATIVE SEGMENT ADDRESS SGLNGT = -4. ; SEGMENT LENGTH TRLIDX = -6. ; RELATIVE INDEX TO TRAILER HIOFCN = -13. ; I/O FUNCTION FROM PROGRAM HEADER HFLEID t¸t¸¼t¸‘Ú*t¸æª»ˆæ´»ˆæÒ»æ´»ˆæC!ˆæÿ¼÷ ÊÏ*˜¸÷q,÷è¼(÷ î÷ Ø÷0,÷<;<;ôƒ´» ±Œ:‡<;ûÿûÿP*P{,*R»E. ­—x¯”É2Ú@«:<}@_M€Q@×.YeÞ@;}¸G@’è€@ €` @(£.Dö  v~v~º@v~8}.v~æˆ  7ЉÁ5·Šæˆ ·€æ±*ž~æˆæˆ7væ…I/O FUNCTION FROM PROGRAM HEADER HFLEID = -16. ; OVERLAY FILE ID FROM HEADER HDBADD = -18.-26.*$KT11C ; DATA BUFFER ADDRESS FROM HEADER HDBAD2 = -18.-22.*$KT11C ; ASR 6 FOR DATA BUFFER FROM HEADER HDBAD1 = -16.-22.*$KT11C ; SVA OF DATA BUFFER FROM HEADER HERRWD = -22.-26.*$KT11C ; ERROR WORD IN I/O LIST FOR ERROR CHECK HIOCMP = -26.-26.*$KT11C ; I/O COMPLETE FROM HEADER HIOEXT = -27.-26.*$KT11C ; I/O EXIT FROM HEADER HIOLST = -3†= -16. ; OVERLAY FILE ID FROM HEADER HDBADD = -18.-26.*$KT11C ; DATA BUFFER ADDRESS FROM HEADER HDBAD2 = -18.-22.*$KT11C ; ASR 6 FOR DATA BUFFER FROM HEADER HDBAD1 = -16.-22.*$KT11C ; SVA OF DATA BUFFER FROM HEADER HERRWD = -22.-26.*$KT11C ; ERROR WORD IN I/O LIST FOR ERROR CHECK HIOCMP = -26.-26.*$KT11C ; I/O COMPLETE FROM HEADER HIOEXT = -27.-26.*$KT11C ; I/O EXIT FROM HEADER HIOLST = -30.-26.*$KT11C ; START OF DISC I/O PARAM. LŒ2€ NhØ9€ Nh¬a6ªëyh$¯”µ÷æ.22* 8} ð. . ‘.Jv~Jš~á÷Z÷©½VŒ*v¹÷ «fæi½æ"ˆfæl½æ"ˆfæp½µ*š¹æ"ˆ÷•L¿É €÷•CµfÎEðæv½÷ ¤*¾¹ç7�iÿæ¿©*.¼æT»ˆæT»ˆæH;æl»ˆæl»ˆ7 î~÷¥YK*R¼ú~· â~æl»ˆæ„»ˆæŽ»ˆ7 &ÿ7 ,ÿ7 Ì*v¼2ÿ@t (@ˆ&€1 ¤E¤J ¬=‰0.-26.*$KT11C ; START OF DISC I/O PARAM. LIST HWRKWD = -32.-28.*$KT11C ; WORK WORD FROM HEADER PHPRI = -33.-28.*$KT11C ; PRIOR FROM PROGRAM HEADER HIQPRT = -34.-28.*$KT11C ; IQPART FROM PROGRAM HEADER PHSB = -35.-28.*$KT11C ; SB FROM PROGRAM HEADER PHNOB = -36.-28.*$KT11C ; NOB FROM PROGRAM HEADER ; ; EQUATES FOR PROGRAM HEADER ; THREAD = 0. ; THREAD WORD TASKNO = 2. ; TASK NUMBER TASTAT = 4. ŠIST HWRKWD = -32.-28.*$KT11C ; WORK WORD FROM HEADER PHPRI = -33.-28.*$KT11C ; PRIOR FROM PROGRAM HEADER HIQPRT = -34.-28.*$KT11C ; IQPART FROM PROGRAM HEADER PHSB = -35.-28.*$KT11C ; SB FROM PROGRAM HEADER PHNOB = -36.-28.*$KT11C ; NOB FROM PROGRAM HEADER ; ; EQUATES FOR PROGRAM HEADER ; THREAD = 0. ; THREAD WORD TASKNO = 2. ; TASK NUMBER TASTAT = 4. ; TASK ACCESS STATUS HPRIOR = !.Ì:¯”O ö@v}@€}@.) Z@öBx@ûy:@\!¸p@t!ö@[.É2Ú".þv@¯”Ÿ s@¤g'@̵;@#.-²Z@€}@É2Ú@�fSz@áyx@…. €` #!ˆæà½÷ ä÷\8H÷TZ· V÷ ðÀœ*–º&7BÐ Ð ÃÀÿÁ¾É•0 †‰Š· ,� 0ººƒ €Ã5óÑ• Ã5îÐ ìÅ5ÿ$~þ栻愻ˆæ„»ˆ7 ~w Ìó÷°»î}檻H*T½æŽ»ˆæŽ»ˆ· à}w ¬óÀN;ÁP{Âà$ú*x½wÈ‚ ú÷ À}· º}÷e %D! ã â ILL PAR! Å Ô.NON-QUIESCENT  ¨&@E„:@äf„:@=sL"@þv@@~.ëyÐÀ@ëyøÀ@ëy Á@ëyHÁ@ëypÁ@%.ëy˜Á@ëypÆ@ëy˜Æ@'@ñ�}@ë¨K"@L©C @R«ª:@h.ù«éd@(D[qjh¸þv@h¯”®÷(÷ì÷νèm*äº÷ ®fæ¾æ"ˆ÷RÐ÷¾Ì÷ ’Åe@Í*»Å-ÚÄ寴æÊæÿ½æ"ˆ÷• Õæ]� ; TASK ACCESS STATUS HPRIOR = 5. ; TASK PRIORITY ENTRY = 6. ; TASK ENTRY POINT MAXT = 8. ; MAXIMUM EXECUTION TIME OR TIME SLICE FREQ. CTIMER = 10. ; CURRENT TIMER VALUE STSIZE = 12. ; NO. OF WORDS IN STACK CPUST = 14. ; CPU STATUS TSTACK = 16. ; SAVED STACK POINTER TARG = 18. ; TRANSMITTED ARGUMENT .IFNZ $KT11C TPŽ 5. ; TASK PRIORITY ENTRY = 6. ; TASK ENTRY POINT MAXT = 8. ; MAXIMUM EXECUTION TIME OR TIME SLICE FREQ. CTIMER = 10. ; CURRENT TIMER VALUE STSIZE = 12. ; NO. OF WORDS IN STACK CPUST = 14. ; CPU STATUS TSTACK = 16. ; SAVED STACK POINTER TARG = 18. ; TRANSMITTED ARGUMENT .IFNZ $KT11C TPDR0 = 20. ; PAGE DESCR1þÿ3ã£ð"êô É2Ú�fSzL©C "áyxÇ.LÖ £´÷®ÿêô„Æ ßþÿæ¦f&{ 2ˆ0ˆæ¼»æª»ˆæª»ˆ‡æÆ»,𻿴»ˆæ´»ˆ‡÷ð�M€MÜ»´"À»@€‘Ú N›3˜ÿ÷ûÿþ|Õ …· ø|wfþæÒ¾æT»²*X¾ˆwvÿ DECTAPE COPY V01B e*|¾ORIGINAL ON UNIT CO4äþ÷zÜþ7 àþæl ˆa.æ÷ ÊþîÅ|DêÄå�Ä ÃS# Ó Ë û÷f. ¸¨þæl ˆÙË ÖÕ Û Å Ó÷ÆŽþò÷ 5hÎeÌ:hÎ gÌ:hÎimRhÐTq€hÐ!¯”‘÷ ±Œ:f.ŸÆ÷ Â÷6êô.ræèôæêôæìôÀ&&&&& ßèô êôìôR«ª:-.˜þÿM¦)ƒ „ßF ´7)ܼ DISK DIRECTORY c*½ UIC T FILNAM.EXT DATE Ó*,½ MODE 8PY T/* ¾O UNIT ????  *** I/O Ð*ľERROR, UNIT  *** UNRECOVERADè¾BLE COPY‘DR0 = 20. ; PAGE DESCRIPTOR REGISTER 0 TPDR1 = TPDR0+2 ; PAGE DESCRIPTOR REGISTER 1 TPDR2 = TPDR1+2 ; PAGE DESCRIPTOR REGISTER 2 TPDR3 = TPDR2+2 ; PAGE DESCRIPTOR REGISTER 3 TPDR4 = TPDR3+2 ; PAGE DESCRIPTOR REGISTER 4 TPDR5 = TPDR4+2 ; PAGE DESCRIPTOR REGISTER 5 TPDR6 = TPDR5+2 ; PAGE DESCRIPTOR REGISTER 6 TPDR7 = TPDR6+2 ; PAGE DESCRIPTOR REGISTER 7 TPAR0 = ’IPTOR REGISTER 0 TPDR1 = TPDR0+2 ; PAGE DESCRIPTOR REGISTER 1 TPDR2 = TPDR1+2 ; PAGE DESCRIPTOR REGISTER 2 TPDR3 = TPDR2+2 ; PAGE DESCRIPTOR REGISTER 3 TPDR4 = TPDR3+2 ; PAGE DESCRIPTOR REGISTER 4 TPDR5 = TPDR4+2 ; PAGE DESCRIPTOR REGISTER 5 TPDR6 = TPDR5+2 ; PAGE DESCRIPTOR REGISTER 6 TPDR7 = TPDR6+2 ; PAGE DESCRIPTOR REGISTER 7 TPAR0 = TPDR7+2 ; PAGE ADDRESS REGISTER 0 A ½ Z ˆ½ Q ‘½ H ™½ @ ¢½ 7¨½ TOTAL BLOCKS C.Ê€&Ä ô%€!„ yŽß•àþÿô¥€4Š€{*;}¸G€É2Ú€Ž" €` €( €` €+.ðŠþÿ‡D»zy:6ªëyLm ëyÐÀ"ëyøÀu.fÀ^ C—r@‰øÀ�.ëy ÁëyHÁëypÁ ëy˜Á ëypÆEæ÷ wB* €` ¤g' €` áyx L©C $Ÿ s..ƒ„Ö …—#Îe€}ñ�}Fe#ý ******* DISK MAP þé½ =ð½ BLOCKS USED ®¾ BLOCKS FREE òG@ v v$ nxÄ…e */." +%$#('&0Œ vUPDATE V004B ž* vHß•àþÿô‹€­€ Šþÿ÷Ô¤ýæÔ €` € €` €Ç.l ˆ ‡ô•€Šþÿ‡&& & & ˆÖ òê&˜•TPDR7+2 ; PAGE ADDRESS REGISTER 0 TPAR1 = TPAR0+2 TPAR2 = TPAR1+2 TPAR3 = TPAR2+2 TPAR4 = TPAR3+2 TPAR5 = TPAR4+2 TPAR6 = TPAR5+2 TPAR7 = TPAR6+2 ; REGSV = THREAD+2+32. ; LAST WORD OF STACK .ENDC .IFZ $KT11C REGSV = 20. ; LAST WORD OF STACK .ENDC ; ; ; ; EQUATES FOR TIME-SLICE OR FIXED QPART FROM QPRT'XX' ; ALLOSW = -1. ; ALLO– TPAR1 = TPAR0+2 TPAR2 = TPAR1+2 TPAR3 = TPAR2+2 TPAR4 = TPAR3+2 TPAR5 = TPAR4+2 TPAR6 = TPAR5+2 TPAR7 = TPAR6+2 ; REGSV = THREAD+2+32. ; LAST WORD OF STACK .ENDC .IFZ $KT11C REGSV = 20. ; LAST WORD OF STACK .ENDC ; ; ; ; EQUATES FOR TIME-SLICE OR FIXED QPART FROM QPRT'XX' ; ALLOSW = -1. ; ALLOCATION SWITCH MAXENT = -2. QJÎ twR¶*Ìww™yðŸyðÃ*ðw��€M€MÑR Æt.ˆ¶ÿ‡·°ÿW¥, !ôÀ÷ Æÿ1ˆÖ í‡À§.®ÁÂw(·€ÿW¥, !ÜÀ÷ –ÿ‘.Sæ.æ w æêô�¶æf÷ �Ñ‹À–[gÐ4 êôL©C  ƒ€øŽ.Tæ.'èd w æêô„…æf÷ …d[gÐ4êô L©C &ƒ€øŽø.UÖAÔA� ˜wL^îYÕ¿Ë‘ T%¿ ô)¿ ð/¿ ýt¸ÍVEK*x×E››Ò*8x››ï*\x›Ô0ˆçÀÁ$Â÷Eÿ7Pňædˆ]$úDÔ�¨üÔ�¥üÅ öÅ ·ªüæl ˆ‡ØóX& D”Ä¥ À ùD”Äå0�¡ ‚CÂà ¸.Là Â`‚`a…À ïñ¥-úÿ 6 v·êôw  &êôê™CATION SWITCH MAXENT = -2. ; MAXIMUM ENTRIES -1 TOFQUE = -4. ; TOP OF QUEUE ADDRESS BOFQUE = -6. ; BOTTOM OF QUEUE ADDRESS PULLAD = -8. ; PULL ADDRESS PUSHAD = -10. ; PUSH ADDRESS PRTADD = -12. ; PARTITION ADDRESS TIMMOD = -28. ; TIMER MODULE THREAD WORD ; HEADQP = PULLAD ; HEAD OF QUEUE POINTER IS ALSO ; ; PULLš ; MAXIMUM ENTRIES -1 TOFQUE = -4. ; TOP OF QUEUE ADDRESS BOFQUE = -6. ; BOTTOM OF QUEUE ADDRESS PULLAD = -8. ; PULL ADDRESS PUSHAD = -10. ; PUSH ADDRESS PRTADD = -12. ; PARTITION ADDRESS TIMMOD = -28. ; TIMER MODULE THREAD WORD ; HEADQP = PULLAD ; HEAD OF QUEUE POINTER IS ALSO ; ; PULL ADDRESS ; ; EQUATES FOR TIMER MO\.‚2@¯ (@ˆ&À ¤Eb.�m„¯”ÚKø€@{~T{††00000* SÒ{tÖ× Z7 Äý÷-¢ý¼ý÷­)*>z™ý³ýÀxÁ:x÷ Ì÷ªàûf÷ æwLþ>*bz÷-‚ýrý ÷­yýiý À,xÁx÷ žw¤÷ ’urv�€‡&f€#À æêô&÷ lÿ€�êô É2ÚÞ.˜ÁWtüÿÁEñÿ@`$Wt·êô€€ € ÀEøŸv* ÿÿÿÿÿÿÿÿÿÿÿÐ Í. OxJN*0|Ò{NENE*yðß*T|{L€M›Ë*x|¡ ; ; TASK STATUS VALUES = TSTAT ; ABTREQ = -3. ; ABORT REQUESTED-SERVICE IN PROGRESS DQREQ = -2. ; DE-QUEUE REQUESTED-SERVICE IN PROGRESS EXITRQ = -1. ; EXIT REQUESTED-SERVICE IN PROGRESS QUISNT = 0. ; TASK QUIESCENT OVYACT = 1. ; OVERLAY MONITOR(RPOM)WORKING ON TASK QINROS = 2. ; QUEUED IN ROS THREAD TACTVE = 3. ; TASK ACTIVE VOLSUS = 4. ¢; ABTREQ = -3. ; ABORT REQUESTED-SERVICE IN PROGRESS DQREQ = -2. ; DE-QUEUE REQUESTED-SERVICE IN PROGRESS EXITRQ = -1. ; EXIT REQUESTED-SERVICE IN PROGRESS QUISNT = 0. ; TASK QUIESCENT OVYACT = 1. ; OVERLAY MONITOR(RPOM)WORKING ON TASK QINROS = 2. ; QUEUED IN ROS THREAD TACTVE = 3. ; TASK ACTIVE VOLSUS = 4. ; VOLUNTARILY SUSPENDED INVSUS�@hf€p@�fSz@�fTz@[gÐ4@Ú.9mQŠ@imR@�m„@[qj@þv@@½.@z(d@€€(d@ƒ€øŽ@‚L{Ã_,ä|Å7 @7 8æ,{æB|ˆæB|ˆæà{æ8|k* }ˆæ8|ˆ÷‹Íþ0ˆæÒ{.ˆÖ ÷üöýæ ÷ ¢*.}Èw¨ÿƒþw’*>{ˆ7‘ýæHxæþwˆ÷•ÈüæxæÔwˆ÷ züÍ*b{÷•Îüæ:xæðwˆæ,xæâw ˆÖ Öµ€j,†{æ5@÷z„&À &÷ Úþ€�ÁWtž É2Úå.VüÿÁEñÿ@`7$ìô€ÀEàtúÿ7`ìô¶öEðìô ìô÷….èSô•hß�þÿ���ŠW  Á• Q hŠÑ.¦÷ ‚r�ŸÊ =Á Á Ä f÷ †ƒ€ �@ƒ…4f@Í.L©C @(øE„:h¸äf„:hX)€Êh#.)€bh9€p:h9€ahˆ4²¶�(r)€üXh‡÷˜þ÷V|òþ÷”|îþæ0|/ˆNá÷*R}ÒÊýNa÷ œw|ÿ÷ úþ÷-®ôþ· ¼· *v}²÷ æþ ÷-–àþ· ¤· š÷ Èþˆ¦ú÷ ®wýÎ,xæâwˆ7‘‚üæ,x¬*¬{æâwˆ÷ &ü=÷ ÷ n8÷­´ûZ0×­­û=]*Ð{÷�¦ûJw<÷ ^÷-<> ÷ ¢÷ <)¥ ; VOLUNTARILY SUSPENDED INVSUS = 5. ; INVOLUNTARILY SUSPENDED-NOT ; ; IN ROS QUEUE TDSABL = 6. ; TASK DISABLED TABRTD = 7. ; TASK ABORTED ODQREQ = 8. ; OVERLAY DE-QUEUE REQUESTED QINQPT = 9. ; QUEUED IN QPARTN-NOT YET IN ROS ; ; MISC. EQUATES ; SYSDSC = 1 ; SYSTEM DISC UNIT NO. PHDSZE = 30.+28.*$KT11C ; NO. OF¦ = 5. ; INVOLUNTARILY SUSPENDED-NOT ; ; IN ROS QUEUE TDSABL = 6. ; TASK DISABLED TABRTD = 7. ; TASK ABORTED ODQREQ = 8. ; OVERLAY DE-QUEUE REQUESTED QINQPT = 9. ; QUEUED IN QPARTN-NOT YET IN ROS ; ; MISC. EQUATES ; SYSDSC = 1 ; SYSTEM DISC UNIT NO. PHDSZE = 30.+28.*$KT11C ; NO. OF LOCATIONS IN PARTITION HEADER ; ‘æV|ˆ7 Þý÷L|8þ÷†|4þæ0|/ˆ·Ý,~"wá÷ ýæ ÷ Üw¼þæL|ˆæ†|æL|e*.~ˆ÷ ö æ>{æL|ˆæL|ˆ÷‹õü’¢ûAæâwˆæâwˆ÷•Šû÷•G*`|Èûæ,xæâwˆ Á\vÂæwæâwˆæâwm*„|ˆ÷‹‡ú ÷½dú÷tžùærú÷ ¢0ˆ€ &Cø:JÒ  Ä ÷Ÿ•þÿ÷ Þñ‹[3B &[o.þñœ[[ñœ\\ñœ]] EÅ µhhµjjî.[”.¦¦¶¶æ—þÿŸ÷ FþR7 @þŸ•þÿ÷ål.ÌBþÿêô<þæ¦f�vÂþ ¦F÷ ‚Òêô• á&0DXl€”¨½*0DXl€” ¨Ñ– ÷µ@Ð*R~íü%÷ÆÄüæàü÷ ”wŠ€ &fæ"ˆæF{U*v~æV|ˆæV|ˆ÷†Âü÷‹½üÕ÷ŒŒüæ°ü÷ ú,š~\wR—â.¨|f¦"ˆæVvæþwˆæþwˆ÷Z–ùØæþwˆæâwô*Ð|ˆ÷ ûæðwˆæÔwˆæ.væxˆæxˆX*ô|÷ 2æ˜; UPDATE 8/15/72 ROS3.SYS ; UPDATE 8/1/72 ROS3.SYS ; UPDATE 7/31/72 ROS3.SYS © LOCATIONS IN PARTITION HEADER ; ;**NOTE: LOADER HAS SIMILAR VALUE ERRTSK = 6. ; DISP. FOR TASK # IN ERROR MODULE OTSKNO = -HIOLST+TASKNO ; TASK NO. IN HEADER FROM I/O LIST IOERRW = 8. ; ERROR WORD IN I/O LIST FROM I/O LIST USEC20 = $DELAY*5 ; FOR 20 USEC DELAY LOOPS FOR B3 USEC25 = $DELAY*6 ; FOR 25 USEC DELAY 366PS F6 B3 ENTIUS = 400 ; QPART ENTRY IN USE MASK FOR FIRST ª ;**NOTE: LOADER HAS SIMILAR VALUE ERRTSK = 6. ; DISP. FOR TASK # IN ERROR MODULE OTSKNO = -HIOLST+TASKNO ; TASK NO. IN HEADER FROM I/O LIST IOERRW = 8. ; ERROR WORD IN I/O LIST FROM I/O LIST USEC20 = $DELAY*5 ; FOR 20 USEC DELAY LOOPS FOR B3 USEC25 = $DELAY*6 ; FOR 25 USEC DELAY 366PS F6 B3 ENTIUS = 400 ; QPART ENTRY IN USE MASK FOR FIRST ; ; WO¡ˆ¤*`}¦‡æ¶væâwˆæâwˆ÷‹Aù‡÷‚¶ø& *„}Î�1ù÷ ¸ÿ0ˆæ¶væÔwˆæÔwˆ÷‹ù‡÷½8,¨}J ù· z¢ E Q U A T E S ;* $1145 = 1 ;1 = 11/45 0 = NOT 11/45 $1125 = 0 ;1 = 11/£.dŸ•þÿŽŽŽ‡æþÿ& ÷ ,ÿwnŸÀ€ý&÷ E.Š€1Šh7 jý7 bý7 dý7 bý0 ÆbýwÞ�f¤5X¤wX¤DsD5X¤bX¤X_X¥¦‡÷L~ø& Î�ùø÷ €ÿ0ˆætwæðw²*Î}ˆæðwˆ÷‹�ù ÷ úætwæþwˆæþwˆõ,ò}‡÷½üzù· .‡÷0ø& Î�iù÷ 2ÿ0ˆ§25 0 = NOT 11/25 $1120 = 0 ;1 = 11020 OR LESS (11/05, ETC.) $KT11C = 1 ;1 =¨Szh¸.°:ñŠhû&f¦€57 |ý2‚æ—þÿŸœhÁ Sh&hí.ÖyÚ**ê*ü**Ÿ“þÿ&÷ ­; ; WORD OF QPART CELL ; .PAGE .TITLE RPOM ;*********************************************************************** ;* * ;* QOVLAY QOVNXT QSOVLY UNSOVY CKPT NOCKPT TSOVLY * ;* DQOVLY * ;* * ;* PROGRAM IDENTIFICATION. RPOM; ®RD OF QPART CELL ; .PAGE .TITLE RPOM ;*********************************************************************** ;* * ;* QOVLAY QOVNXT QSOVLY UNSOVY CKPT NOCKPT TSOVLY * ;* DQOVLY * ;* * ;* PROGRAM IDENTIFICATION. RPOM; ROS PROGRAM OVERLAY * ;* ±T PROCESSOR IS IN SYSTEM .IFZ $1125!$1145 .IFNZ $KT11C!$FPP XXXXXXXX .ENDC ²hfö,"f÷ Ÿ•þÿ‚�€Ž‡c±ÚKø€HïHc³ùX¤0‡00YYDûD0Yð´*ja  ŽaUN^hU^hENNiENiRE´hs¨aDEüiPR¼gP¼gALÚ~FR„jKµZe*Ì~÷-TN‡‡÷4\÷¦˜÷ bþ0ˆ÷*N÷ø÷ *ð~F÷ô@Ä…�ð E50515253545556575859N"7071727374¶ .ENDC $RASM = 1 ;1 = ASSEMBLER IS IN SYSTEM .IFG $KT11C-1 XXXXXXXX .E·7 XŽ.Xc8HXw æêôæìôæ—þÿ a 8HX[gÐ4êô"ìôÓ¸YXçX0YÛYlÓl0YƱROS PROGRAM OVERLAY * ;* MONITOR. * ;* * ;* PURPOSE. THE ROS PROGRAM OVERLAY MONITOR CONSISTS * ;* OF NINE SUBROUTINE ENTRY POINTS WHOSE PURPOSE * ;* IS PROVIDING A PRIORITY OVERLAY STRUCTURE IN A * ;* ROS II (OR ABOVE) SYSTEM. RPOM IS DESIGNED TO * ;* PROVIDE A FLEXIBLE MET² MONITOR. * ;* * ;* PURPOSE. THE ROS PROGRAM OVERLAY MONITOR CONSISTS * ;* OF NINE SUBROUTINE ENTRY POINTS WHOSE PURPOSE * ;* IS PROVIDING A PRIORITY OVERLAY STRUCTURE IN A * ;* ROS II (OR ABOVE) SYSTEM. RPOM IS DESIGNED TO * ;* PROVIDE A FLEXIBLE METHOD OF PROGRAM PARTITIONS *ÁBœ —hhù.Ê ƒCÀ ,FÄæ÷ ƒ÷8ŸW"4F�fTzœ.ðÂY¨—¨0Y‡Y¼ƒ¼0YrÃ7 jÿæ aˆæ*aˆæ6aæ aˆææ4®ˆæB®ˆw `æB®ˆ÷ ˆ*бÀþæ4®ˆæj®ˆæj®ˆæ`®ˆæ`®ˆw*.ô±0ø& æÏ . = RTPAAD A SV-PSSREDD AALTUIR VEMSTSYN IOITRTPAA ; S ATOD REEREF RISM ER TISTH. DEMAE BAY MESNCREFERE ; D ARKWAC BND ARDWAOR F4K, ERADHES K'AS THE TOFS ESDRAD ; ALTUIR VNE OTHWIT HA TCHSUD SE UISE INUTROUB SISTH ; ; Y OREM MOF ; CKLO B4KG INEDECPRE THO TET SIS R5AS. 6SR A ; NGSI USSREDD AALTUIR VEMSTSYR DEEA HSKTAE THS IA6SVTH: TENO ; ; E OT NEE S; A6SVTH+,P)(S V MO ; T ARDP,APC R 4ÿÕIS AS FOLLOWS: * ;* * ;* QOVLAY- MOV TASK,-(SP) * ;* MOV PRIOR,-(SP) * ;* MOV ARG,-(SP) * ;* JSR PC,QOVLAY * ;* TST (SP)+ * ;* Ö * ;* QOVLAY- MOV TASK,-(SP) * ;* MOV PRIOR,-(SP) * ;* MOV ARG,-(SP) * ;* JSR PC,QOVLAY * ;* TST (SP)+ * ;* BNE ERROR * Q.Ìjw1Š]ñŠ[Ÿ•þÿ÷±Š_f÷ Ö ïñ•y"[qj ][_"¼M: .òc1Š_ôý• RNAMIC CORE POOL .ENDC ; ; THE FOLLOWING IS A LIST OF PRIORITY PROPERTIES ; +1 = TIME SLICE SÄý÷-ýý†…÷ ýw 7 ý.Ò²f7 ýÃJ¾Å 7!ðü‚•� w#X øÓ• � æF¾ *ú²æj®ˆæj®ˆèæF¾æj®ˆæj®ˆTÂw ê 5÷ õ“bl ÷õ† ÷õ‚ ÷ õ~ ,vlw . %Àfp÷ºÿ(÷ ´Ê �·l êõ· èõŽ*œl÷ ˜÷‹Úõ÷ ªJS ; DD AALTUIR VEMSTSYR DEEA HSKTA; ) SP-(A,SVTH V MO ; : CEENQUSEG INLLCA ; N.IOITRTPAA ; S ESDRADO TRSTEISEG RNTMEEG SUPT SEO TEDUSS IRTPAAD ; ; 1CT1$K Z FN.I ; ; ; ET SC.C.H IT WRNTURE; PC S RT: 30S0QT NDOU FOR F 0 =OT NC.C.T SE; R2 T TS: 20S0QT E ATOGRRTEIND AN ; 10S0QT BR RYNT EXTNEO TMPBU; 2 ,R#6 D AD: 15S0QT OKS-YE; 0ÿÙBNE ERROR * ;* WHERE ERROR STATUS ON THE STACK * ;* =0, NO ERROR * ;* =1, QPART(N) FULL * ;* =-1, QPART DOES NOT EXIST FOR REQUESTED * ;* PRIORITY. * ;* * ;* QOVNXT- Ú;* WHERE ERROR STATUS ON THE STACK * ;* =0, NO ERROR * ;* =1, QPART(N) FULL * ;* =-1, QPART DOES NOT EXIST FOR REQUESTED * ;* PRIORITY. * ;* * ;* QOVNXT- MOV TASK,-(SP) a PROPERTY LEVEL 2 PRIP03 = 1 ; PRIORITY PROPERTY LEVEL 3 PRIP04 = 1 ; PRIORITY Pb…#9*Ò³w Bý!Âí¤üÄ¢üà÷ òûB ‡�#@àÒ*ö³D ‡#K` À-‚ü‚#Àzüãtü÷íÈûnüE*´#ãdüw c÷ Ž÷üÿJ÷ –ò €(*pmЕC‡Àxp·€÷Eðz7 t×-rè÷å*”mèh· böÁnÃnS$Ë-Tü÷ NÁ8n(d÷‹kû÷ä¯h7Š_ûwäþ÷ ^ò0÷‹Yò*z½-÷‹Pò*· J· HׯB · :ùׯ4 Â,ž½ׯ, w¨þ÷‹û ÷ û7Šû 20S0QT E BN E?IVCT ARYNT EIS; RQRTAB,#2)(R PBCM NO; 15S0QT E BN T? INDFI; 2)(RSKUT,OR1 P CM ) ET SDYEALR AC.C. (ORRR-EITT GO; 30S0QT Q BE ERRKMAL AI TOR FSTTE; R5 C IN RYNT EANT GE; 5 ,R2)(R V MO: 10S0QT ) ET SDYEALR AC.C. (RNTURE- T ISEXT N'ESDO; 30S0QT Q BE S ESDRADT ARQPT GE; 2 ,R3)(RTNARQP V MO EXND IRDWOE ATULLCCA; R3 ,ÿÝ MOV TASK,-(SP) * ;* JSR PC,QOVNXT * ;* * ;* QSOVLY- TASK ALREADY SUSPENDED * ;* MOV TASK,-(SP) * ;* JSR PC,QSOVLY * ;* * ;* Þ * ;* JSR PC,QOVNXT * ;* * ;* QSOVLY- TASK ALREADY SUSPENDED * ;* MOV TASK,-(SP) * ;* JSR PC,QSOVLY * ;* * ;* UNSOVY- MOV TASK,-(SP) qûÌ‹#Ë‹€ î×­Öú Ý÷  ûà÷ !*ö´œûwÔfÁ· îüw 47 æü�÷5@x Ô*µ÷-fûbûÐÂ7ŠžúÀÁ ÊÃ.° × x°üƒrЕ<‚*rnÃEÿ÷ b÷ýÿ0÷ ‚Е>‡Ð•[×­� ÿÑ*–nЕ*  ÃÝq ÷ 6÷ûÿ÷ VЕ,×­Z ÿû*ºnЕ* t `‚.H@Ä =‘Có• Ê5@@wÄ• ñ•t"[qjÎ.ncîý•^L AS TYRIIOPRT GE; 3 ,RR0 V MO . = CHSRQT ; R.TEISEG RRKWOA S IR5 ; Y.TREND IN F'TDNULCO, 0 =R2 ; F IT.XI EON2 RONT SEE BLLWIS DECON IOITNDCO ; EXND IRDWOY ITORRI P =R3 ; RYNT ERTPA Q'SSKTAF OSSREDD A =R2 ; ERMBNUK AS T =R1 ; Y ITORRI P =R0 N:URET RONUP ; ERMBNUK AS T =R1 ; Y ITORRI P =R0 : RYNT EONUP ; EDLLCAN HE WNTDESIREE OR(ÿáUNSOVY- MOV TASK,-(SP) * ;* JSR PC,UNSOVY * ;* TST (SP)+ * ;* BNE ERROR * ;* WHERE ERROR STATUS ON THE STACK * ;* =0, NO ERROR * ;* =1, TASK HAS BEEN CANCELLED DUE TO * ;* â * ;* JSR PC,UNSOVY * ;* TST (SP)+ * ;* BNE ERROR * ;* WHERE ERROR STATUS ON THE STACK * ;* =0, NO ERROR * ;* =1, TASK HAS BEEN CANCELLED DUE TO * ;* VOLUNTARY SUSPEND LE�æ@aˆæ@aˆ‡÷ œÿ÷ ˜ÿ÷ Úÿ‡÷x l |šo ÷  ÷z ` ÷  ÷ "÷ h .²o÷b L õÀfp÷ vþЕ ÷¶òwPýÄJ Ä Á"{‚&¤±ÑE̺ª*~² LIBR-11 V002A  # å*¢²ÍE ƒÖ ¸½Š½=‘ñ• cf÷ Ö ²Ä•=‘° c¼M:’.ñ•còæ¦÷ ÷ €÷ °È /„L 16 .IFNZ OVRLAY ; .IFL 16.-NPRIOR XXXXXXXX TABLES AND PARAMETERS CURRENTLY CBET NOD EE NSKTA ; Y.TRENS K'AS TICIFECSPA R FO ; E BLTAT ARQPS Y'ITORRI PEDFICIPE S ACHARSEL IL WCHSRQT ; ; ; RNTURE; PC S RT TYRIIOPR; R0 R AS R BEUM NSKTA; R1 R AS ERSTGIRES ESDRADY TRENN ILTSURE; 2 ,R0)(RTNARQP D AD ERADHEN IOITRTPAM RO FRTPAIQT GE; 2 ,R4)(RRTQPHI SBBI R2 R CL X DEIND OR WTYRIIOPR; R0 L AS Y ITORRI P'SSKTA; 0 ,R4)$ÿå VOLUNTARY SUSPEND LENGTH OF TIME * ;* EXEEDED (TIME-SLICER'S) * ;* * ;* CKPT - EMT CKPT OR THE FORTRAN * ;* EQUIVALENT: CALL CKPT * ;* * ;* NOCKPT- EMT NOCKPT OR THE FORTRAN * æNGTH OF TIME * ;* EXEEDED (TIME-SLICER'S) * ;* * ;* CKPT - EMT CKPT OR THE FORTRAN * ;* EQUIVALENT: CALL CKPT * ;* * ;* NOCKPT- EMT NOCKPT OR THE FORTRAN * ;* EQUIVALENT: CALL NOC‘àÿ7 Þÿ7 ;*Ö´Üÿ7 ¾û7 Äû7 Òÿ7 ü7 üų    ä*ú´÷•.Èþ÷ îý÷•.Ðý梲ˆwæ~²æ¢²,µˆ÷e’‡ð‡˜ «:<}K.žð‡ð‡ð‡ñ5@ìA·½ YeÞ&4Þ·.Ä“BE ALLOWED OVERLAY TASKS. A MAXIMUM ; OF 127 ENTRYS PER QPART WILL BE ALLOWED. ; ****NOTE: BE SURE PRIORITIES G”~ø]*^·w àûÄå(7ù…Ôù ¤÷mhø ùÀ- ù ‡×-™*‚·<ø·üø÷mNøôø€w ¨û…ÄÞøÃÜøá‚*¦·ZÄíØø!Rƒ(RORRIHP VBMO: 10PRFQ C ND.E R4+,P)(S V MO A SV PERADHE ; A PPDP,APC R JS SKTAT GE; P)(S,-1)(RERADHE V MO 1CT1$K Z FN.I C ND.E 1CT1$K FZ.I X DEIND OR WO. NSKTAE UTMPCO; R1 L AS . = TNPRFQ ; D OAGL SOMFRD LEAL CSOAL ; A SV-PERADHEM RAOGPRF OSSREDD=AR4 ; Y TRENT ARQPS K'AS TOFS ESDRAD= R2 ; ERMBNUK AS=TR1 ; TYRIIOPRS K'AS=TR0 ÿé;* EQUIVALENT: CALL NOCKPT * ;* * ;* TSOVLY- TASK ALREADY SUSPENDED * ;* TASK = IN $CTASK * ;* JSR PC,TSOVLY * ;* * ;* DQOVLY- TSTAT = 8(ODQREQ) êKPT * ;* * ;* TSOVLY- TASK ALREADY SUSPENDED * ;* TASK = IN $CTASK * ;* JSR PC,TSOVLY * ;* * ;* DQOVLY- TSTAT = 8(ODQREQ) * ;* MO¡ñ‹g]Dô•ð 1Šeñ‹[*1Šn ^g e$[Ç.\c@hwlêô& & ÷ „5põìôt4 Ù¢VEL 3 NEQP04 = 10. ; NO. OF ENTRYS QPART LEVEL 4 NEQP05 = 10. ; NO. OF ENTRYS QP£w&÷ \&à ø÷ ø†×¤ ¡*~¸úÃíú÷× HÃð÷Ää¯Ô”×¢ üÔ• ·Š(¬*¢¸·Š%w"…& æÆ& æÄ& æÅÖ ¤÷ š"r÷-îú÷ ^ï×-¾*Ê-Pïa*:rò-Lï ×-¬*ò->ïÕ …÷ÿÿ¸þP ^r÷  þÃÁ ; N:URET RONUP ; ERMBNUK AS=TR1 ; D LEAL CENWHT ENIDES RRECOK AS T ; ONTIMAORNF IRYNT ERTPA QTEIAPRROPP AHE TNDFIL IL WTNPRFQ ; ; ; RNTURE; PC S RT R BEUM NSKTAO TCKBA; R5 R AS T ENIDES RRECOT NOT SE; 5)(RERADHE R CL C ND.E R3+,P)(S V MO VAPST GE; A PPDD,APC R JS P)(S,-5)(RERADHE V MO 1CT1$K Z FN.I C ND.E R DEEA Hÿí * ;* MOV TASK,-(SP) * ;* JSR PC,DQOVLY * ;* * ;* RELTSK- IOSTAT = 0 * ;* MOV TASK,-(SP) * ;* JSR PC,RELTSK * ;* PROGRAMMER 54 îV TASK,-(SP) * ;* JSR PC,DQOVLY * ;* * ;* RELTSK- IOSTAT = 0 * ;* MOV TASK,-(SP) * ;* JSR PC,RELTSK * ;* PROGRAMMER 54 * ;* DATE Æ ENTRYS QPART LEVEL 9 NEQP10 = 10. ; NO. OF ENTRYS QPART LEVEL 10 NEQP11 = 0. ; NO. ².z¹ˆ·ŠFö…Àüö7þö7 :ö…÷-^X÷ V æî½÷*¢¹æ`®ˆæ`®ˆ÷ô½*÷ :ß"· …·Šþõ*ƹ…÷ Æ ³s÷ þw šó7�oïw „ôŠaPs|a÷ Œ÷ZîJî÷VîFî¼*s÷RîBî÷6îw ˆænaæ@a *Bsˆ÷´æš° ˆÖ Ö5 æš°ˆæ±æš°å*`·ˆæš°ˆ÷ 8ùæ"±æ¤° ˆÖ Ö5 椰ú*„·ˆæ¤°ˆ÷ dùæ0±æô° ˆÖ Ö5 æ'SSKTAT OUL-OL ROFS ESDRAD; 3 ,R5)(RERADHE V MO 1CT1$K FZ.I EXND IRDWOR BEUM NSKTA; R5 L AS K AS TUT-OLLRON ONGKIOR WOMRPT SE; ) R5T(TATST,ACVY#O VBMO SKTAT OUL-OL ROFR BEUM NSKTA; R5),R1K(TSOU V MO SKTAN -ILLROR FOS ESGRRO PINO I/T SE; 2)(RP,OI#I SBBI T ESQUREF OATST CVESA; ) R2,(77#1 CBBI K AS TUT-OLLRO ; ; OR FIPIO= T TAPS& 1 = T TACST SE; 1)ÿñ * ;* DATE * ;* REVISION * ;* * ;*********************************************************************** ; .DEF QOVLAY,QOVNXT,TSOVLY,CKPT,NOCKPT,QSOVLY .DEF UNSOVY,DQOVLY,GETOV,GOTOV,TSABRT .DEF FQPRTN,RELTSK .REF PPTAB,BSIZE,IFD,CHKPIO,DISCIO ò * ;* REVISION * ;* * ;*********************************************************************** ; .DEF QOVLAY,QOVNXT,TSOVLY,CKPT,NOCKPT,QSOVLY .DEF UNSOVY,DQOVLY,GETOV,GOTOV,TSABRT .DEF FQPRTN,RELTSK .REF PPTAB,BSIZE,IFD,CHKPIO,DISCIO .REF HEADER,DQRPOM,TSTAT,$CTASK,$PRIO<÷ŸFH7 Põ· <÷¯8:ׯ*žº0 $ׯ( ÒŸ · ,õí7 87$õw Îþ¬*º÷‹þô×  R×­ºõ I÷ øôÅàôwj& ¿Šî÷ €îw 8ñ w |ò7�jîÇtw RóTaJaw †ò7�[î4$tw póŠa|aæJaˆw .D`æJar,±æ±ˆÂ>±ÄÖ²÷ RÃIJÀ÷ Ì,ºÅ:&æµ²æ(RP,OI!I00#2 VBMO . = UPLSRO ; K AS TUT-OLLROF OERMBNUK AS T =R5 ; VAPSK-AS TUT-OLLROF OSSREDD AERADHEK AS T =R3 ; R2D AN1 RTHWIG ONALN URET RONUP: TENO ; ) STUEEQ(RSKTAN -ILLROF OSSREDD ARYNT ERTPA Q =R2 ; K AS TUT-OLLROF OSSREDD ARYNT ERTPA Q =R1 ; H:IT WUTKOOC LERND UEDLLCAE BSTMUE INUTROUB SISTH ; IPIO= T TAPS : SKTAN -ILLRO ; 0 = S ESDRADR DEEA HLEAB TSKTA ÿõ .REF HEADER,DQRPOM,TSTAT,$CTASK,$PRIOR .REF ACTIVE,QSAVE,QTIME,TPRTY,DQTIME,FIRST .REF LAST,ERRTYP,STACK,DSPTCH .REF PUSHR,POPR,IOSTAT,DQTIME .IFNZ $DEBUG .REF SEARCH,ALLOC,DALLOC .ENDC .IFNZ $KT11C .REF SVPPA,PPASV5,PPASV6,TVPPA .ENDC ; .CSECT OM1 ; ; TASK IS A VALID QUEUEABLE TASK. TSTAT = OVYACT = 1. ; QOVLAY = . MOV 4.(SP),R0 ; SAVE PRIORITöR .REF ACTIVE,QSAVE,QTIME,TPRTY,DQTIME,FIRST .REF LAST,ERRTYP,STACK,DSPTCH .REF PUSHR,POPR,IOSTAT,DQTIME .IFNZ $DEBUG .REF SEARCH,ALLOC,DALLOC .ENDC .IFNZ $KT11C .REF SVPPA,PPASV5,PPASV6,TVPPA .ENDC ; .CSECT OM1 ; ; TASK IS A VALID QUEUEABLE TASK. TSTAT = OVYACT = 1. ; QOVLAY = . MOV 4.(SP),R0 ; SAVE PRIORITY MOV (SP),4.(SP) ; PC TÑ4Q STRING: DQRþ*ªQDQNENE*yðHÒªò÷þr朜æÄ›ˆæÄ›ˆÀ¬œÂã*@›^'‚ †‚ ÃÁ¬ž&fæ"ˆÁeÑ• Ó.d›Â à óÑ• Ñ• Á嬞w*æÓš°ˆ÷ Òõ 椰ˆ÷ Òù æ"±æ¤°ˆæ"±¥*ôºæ±æš°ˆ ÷‹­ùæ"±æ¤°ˆ7Š�ù椰ñ*»ˆæš°ˆwTþijÁƱT$ T$Ô0ˆKaéfˆ0ˆw÷ v#÷Ø¢Êæv—æ$¹ˆ÷ È÷À­„—¡Kð$ˆ—æйæ$¹ˆ7 ª·Š÷ ª÷¢ ; CTYAOV= T TATS ; IPIO= T TAPS& 1 = T TACS K:AS TUT-OLLRO ; S.SKTAN -ILLROD AN ; UT-OLLROE THF OS'TUTA SSKTA SHE TESAREPPRP UET SUT-OLLRO ; ; C ND.E ; ET SESOD CONTIDION CTHWIN URET RND A; PC S RT S STUEEQ ROF# T ENEMCRDE; 0)(RQPEQNR CBDE S ESDRADH US PXTNET SE; ) R2D(LAUL,PR1 V MO: 10LQPL E EUQUF OOP TTOT SERE- D DI; 1 ,R2)(RUEFQTO V MO 'TDNDI; 10LQPLÿùY MOV (SP),4.(SP) ; PC TO PROPER PLACE FOR RETURN MOV 2.(SP),(SP) ; SET ARGUMENT MOV 6.(SP),-(SP) ; AND TASK IN PROPER PLACE CLR 8.(SP) ; CLEAR ERROR PARAMETER IN STACK MOV @#PSR,4.(SP) ; PROCESSOR STATUS TO STACK MOV R0,R1 ; CALCULATE PRIORITY ASL R1 ; WORD INDEX MOV (SP),R3 ; GET TASK NUMBER JSR PC,FB3ADD ; FIND BúO PROPER PLACE FOR RETURN MOV 2.(SP),(SP) ; SET ARGUMENT MOV 6.(SP),-(SP) ; AND TASK IN PROPER PLACE CLR 8.(SP) ; CLEAR ERROR PARAMETER IN STACK MOV @#PSR,4.(SP) ; PROCESSOR STATUS TO STACK MOV R0,R1 ; CALCULATE PRIORITY ASL R1 ; WORD INDEX MOV (SP),R3 ; GET TASK NUMBER JSR PC,FB3ADD ; FIND B3 ADDR FOR ALLO REQUEST .IFNZ á!€œOCTAL DUMP V001A # "œœ¬œ„¬ž•ŠšÕâ¤÷ÏÁıþ±÷ ä÷ ÀÉ%*ô»÷‹·øÉ%ó÷ Ê÷ ¦É%·Šžø€ .*¼‡óµ@ú·Š�ø÷Áıþ±÷ ~É%÷‹Iã7lüÿ<Ñ8BÑÈÖ&•*Z˜Îe,üÿ "‰÷‹é7lüÿÑÈeÈeî*~˜ "‰÷‹ôÛ7úwø÷ j÷-ÚÖp‰wä $SB009 = 12. $SB010 = 12. $SB011 = 0. $SB012 = 0. $SB013 = 0. $SB014 = 0. T BL NDOUARP RA WOR FSTTE; ) R2E(QUOF,BR1 P CM D OR WRDHI TND A ; R5+,1)(R V MO D OR WNDCOSE ; R4+,1)(R V MO L EL CIDBOD AN ; + 1)(R R CL RDWOT RSFIT GE; 3 ,R1)(R V MO SSREDD ALLPUT GE; 1 ,R2)(RADLLPU V MO . = QPLLPU ; . UEUE QTYMP EANG INLLPUT NOS MESUAS ; T.XI EONUPP QQRE NONT SES DECON IOITNDCO ; D VESAT NO- R TEISEG RRKWOA S AR1S SE UNETI ÿý3 ADDR FOR ALLO REQUEST .IFNZ $TMSLC!FXPART TSTB PPTAB(R0) ; DYNAMIC PRIORITY LEVEL? BMI QOVA10 ; YES JMP QOVC00 ; NO-QUEUE IN QPART-'PUSH' .ENDC QOVA10: MOV QPARTN(R1),R2 ; GET THIS PRIORITY'S QPART TABLE ADDRESS BNE QOVA20 JMP QOVB30 ; ERROR (-1), DOESN'T EXIST QOVA20: MOV (R2),R5 ; IS QPART CELL AVAILABLE? BEQ QOVA30 ; YES - MAKE ENTRY þ$TMSLC!FXPART TSTB PPTAB(R0) ; DYNAMIC PRIORITY LEVEL? BMI QOVA10 ; YES JMP QOVC00 ; NO-QUEUE IN QPART-'PUSH' .ENDC QOVA10: MOV QPARTN(R1),R2 ; GET THIS PRIORITY'S QPART TABLE ADDRESS BNE QOVA20 JMP QOVB30 ; ERROR (-1), DOESN'T EXIST QOVA20: MOV (R2),R5 ; IS QPART CELL AVAILABLE? BEQ QOVA30 ; YES - MAKE ENTRY INC R5 ; DID WE GETñ,ð¼àÃeËã ÃbÃåS”Î ýÖ ‡Á³Ãü²+*½÷ ¸É%‡÷ ÌÉ%ûô Ĭ°‡:.:½Å DaÌ%DL ò*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÷\ó BSIZE ; VALUE ; ; B) IF FIXED OR TIME SLICED-CONTAINS ASSIGNED BSIZE ; VALUE ôÐQÁ*òSˆ7 Lý÷ÆQ®ý÷RªýæªQ/ˆ·VwáR÷ÿ*THüæ ÷ w2þæÆQˆæRæÆQˆ÷ *¬*:T æHPæÆQOUBRSU ; T ENUMRG AEDTTMINSRA T =R5 ; O KNAS T =R4 ATST&P C =R3 N:URET RONUP ; SSREDD ARTPA Q =R2 ; C MINADYE BOT NSTMUY-ITORRI PRTPA Q =R0 ; T SEE BSTMUT OUK-OC LTYRIIOPR : RYNT EONUP ; L.EL CDSOI VND AUEUE QLEAB TRTPA Q'STYRIIOPRD XEFI ; R OEDICSLE-IM T AOFT OUY TRENN AL'UL'PL IL WQPLLPU ; ; ; RNTURE; PC S RT S DECO. NDCOP UM BND ATSESQUREÿ INC R5 ; DID WE GET TO END OF TABLE BNE QOVA20 JMP QOVB40 ; YES-ERROR TYPE 1, QPART FULL QOVA25: ADD #6.,R2 ; BUMP TO NEXT QPART CELL BR QOVA20 ; TRY AGAIN QOVA30 = . .LOCK TST (R2) ; STILL AVAILABLE? BEQ QOVA35 ; YES- CONTINUE MOVB 4.(SP),@#PSR ; RESET PRIORITY LOCKOUT BR QOVA10 ; AND SEARCH AGAIN QOVA TO END OF TABLE BNE QOVA20 JMP QOVB40 ; YES-ERROR TYPE 1, QPART FULL QOVA25: ADD #6.,R2 ; BUMP TO NEXT QPART CELL BR QOVA20 ; TRY AGAIN QOVA30 = . .LOCK TST (R2) ; STILL AVAILABLE? BEQ QOVA35 ; YES- CONTINUE MOVB 4.(SP),@#PSR ; RESET PRIORITY LOCKOUT BR QOVA10 ; AND SEARCH AGAIN QOVA35: MOV #ENTIUS,-(SP) ; ENTRY IN USE<¹/ˆ÷‹ä·ŠÃÎ%X‰– ð*vš‡÷::æH¹/ˆ÷ ·ŠáÎ%X‰– ‡E*ššZ‰÷‹7Š ·Š ÷‹7Šÿ·Š¶? ú÷Ò ; PRI 1 TOO LARGE .ENDC .ENDC .IFL PRIP02 $PS002 = $NBLKS-$SB002 .ENDC ˆwôþæÐQˆæÐQˆæÐQˆæPæ¼Q‡,Uˆæ¼Qˆw0ý7 :Ô‚æ.Pæ"ˆæ"Pæ¼Q&*@Uˆæ¼Qˆ¦‡DEð€M5152556061¿ì¾M¿2 ¿î¾K¿0"¿ð¾IF OO. NMPBU; 0)(RQPEQNR CBIN DEMAT US JRYNT EOFS ESDRAD; R1+,P)(S V MO S ESDRADH US PXTNET SE; ) R2D(HAUS,PR1 V MO: 10HQPS E EUQUF OOP TTOT SERED-DI; 1 ,R2)(RUEFQTO V MO 'TDNDI; 10HQPS T BL NDOUARP RA WOR FSTTE; ) R2E(QUOF,BR1 P CM LLCEF ORDWOD IRTHD AN ; )+R1,(R5 V MO NDCOSE ; )+R1,(R4 V MO T RSFIT SE; )+R1,(R3 V MO K ACSTN OVESA; ÿ35: MOV #ENTIUS,-(SP) ; ENTRY IN USE, C=0, PSTAT=WAITING QOVA40: MOV R3,B3RR ; SET ALLOCATION SEARCH ADDRESS BIS #SRCHB3,B3FR ; START B3 SEARCH .IFZ $CORAL JSR PC,SEARCH .ENDC MOV (SP)+,(R2) ; ENTRY IN USE, PSTAT = WAITING MOV (SP)+,OVTSK(R2) ; TASK NUMBER MOV (SP)+,TRARG(R2) ; ARGUMENT TO QPART INCB NREQQP(R0) ; BUMP NO. REQUESTS THIS PRIORITY .IFNZ $1145 , C=0, PSTAT=WAITING QOVA40: MOV R3,B3RR ; SET ALLOCATION SEARCH ADDRESS BIS #SRCHB3,B3FR ; START B3 SEARCH .IFZ $CORAL JSR PC,SEARCH .ENDC MOV (SP)+,(R2) ; ENTRY IN USE, PSTAT = WAITING MOV (SP)+,OVTSK(R2) ; TASK NUMBER MOV (SP)+,TRARG(R2) ; ARGUMENT TO QPART INCB NREQQP(R0) ; BUMP NO. REQUESTS THIS PRIORITY .IFNZ $1145 MOV #2*USEC20,R5 D1: DEC BLKS-$SB003 .ENDC .IFGE PRIP03 $PS003 = 4. ; ASSIGN 4 BLOCKS - 1024 WORDS .¿&˜¯ˆ¯0¿· ÷ ²æ̾ˆ�½÷ ¼ º*¸¯ª½÷ ² Âv¼÷ ¬  ½÷ ¢ ÷ „æ̾ˆ÷ ‰,ܯà À P)(S,-R1 V MO SSREDD ASHPUT GE; 1 ,R2)(RADSHPU V MO . = QPSHPU ; . LLFUT NOE EUQUS MESUAS ; T XI EONUPP QQRE NONT SES DECON IOITNDCO ; DEMAT US JSSREDD ARYNT ERTPA Q =R1 ; D VEERESPRS ERSTGIREE OVAB N:URET RONUP ; T ENUMRG AEDTTMINSRA T =R5 ; O KNAS=TR4 ; T TAPSD ANC = R3 ; SSREDD ARTPA=QR2 ; C MINADYE BOT NSTMUY-ITORRI PRTÿ  MOV #2*USEC20,R5 D1: DEC R5 ; 40 USEC DELAY BNE D1 .ENDC QOVA45: BIT #BSYB3,B3FR ; IF STILL BUSY - B3 HUNG UP BNE QOVB50 ; DO ERROR RECOVERY BIT #SERRB3,B3FR ; BSIZE BLOCKS AVAILABLE? BEQ QOVA47 ; YES JMP QOVD00 ; NO-CHECKPOINT OR WAIT QOVA47: MOV B3AR,B3RR ; SET UP TO ALLOCATE AREA BIS #ALLOB3,B3FR ; START ALLOCATION  R5 ; 40 USEC DELAY BNE D1 .ENDC QOVA45: BIT #BSYB3,B3FR ; IF STILL BUSY - B3 HUNG UP BNE QOVB50 ; DO ERROR RECOVERY BIT #SERRB3,B3FR ; BSIZE BLOCKS AVAILABLE? BEQ QOVA47 ; YES JMP QOVD00 ; NO-CHECKPOINT OR WAIT QOVA47: MOV B3AR,B3RR ; SET UP TO ALLOCATE AREA BIS #ALLOB3,B3FR ; START ALLOCATION .IFZ $CORAL JSR PC,A!ÿ "÷  ?ê*L„ úÄ9ÿÀA÷ Œ? „ úþý÷ &ƒ Í*püÄ9ÿÀA÷ l?ê„ úÄðÀ÷ X?ƒ*”"Ž`÷•Ò Ã5÷•Æ ÷•Á 7 ›,´°B & ÄL·÷ Šw r†æB!ˆ‚eŽ ƒŽæx¼?,Ú°ˆ7 ˜ � ê†ÄR·÷ ®ŽeÎeÎE·º #È*ô¦‰�Á Âì¦�`w¸ÿæʦ*§æ®¦ˆƒÃåÒE€úÉU€‰æ®¦ˆ÷5Ài$<§’ÿ $.ÚœLÄ8»4‰L‰7m¸÷,8À¤Áúº‰À2Á »*�‰À<Á!»‰wö w‰÷‹@9d‰÷@»~!*&�æ@»æÞ¸PA=QR0 ; ET SBET US MUT-OCKLOY ITORRI P : RYNT EONUP ; . UEUE QLEAB TRTPA Q'STYRIIOPRD XEFI ; R OEDICSLE-IM T ATOINY TRENN AH'US'PL IL WQPSHPU ; ; T ARXP!FLCMS$T Z FN.I ; PC S RT E INMBCO; 3 ,RR5 D AD 1 E YT BINE ATOLIS; R3 RBCL R3 ABSW K OCBLT ARSTT GE; 3 ,R0)(ROLPOAL VBMO S CKLO BOF. NOT GE; R5),R3E(IZBS SBBI R5 R CL . = DDüþ  .IFZ $CORAL JSR PC,ALLOC .ENDC BISB #IOIP,(R2) ; SET I/O IN PROGRESS IN PSTAT MOV B3AR,R3 ; GET PARTITION ADDRESS MOV R3,R4 ; CALCULATE ADDRESS CLRB R4 ; OF PARTITION .IFZ $KT11C ADD R4,R4 ; FROM START BLOCK .ENDC .IFNZ $KT11C ASR R4 ; FROM START BLOCK(FOR PACKED PHYSICAL) .ENDC LLOC .ENDC BISB #IOIP,(R2) ; SET I/O IN PROGRESS IN PSTAT MOV B3AR,R3 ; GET PARTITION ADDRESS MOV R3,R4 ; CALCULATE ADDRESS CLRB R4 ; OF PARTITION .IFZ $KT11C ADD R4,R4 ; FROM START BLOCK .ENDC .IFNZ $KT11C ASR R4 ; FROM START BLOCK(FOR PACKED PHYSICAL) .ENDC ADD BCPOOL,R4 ; A1�±p€�À ‡÷ ´Ô Ë  (ÒÒ±Ò�¬,¶±Ê RRÊ  ä ÷ ô &æˆ &戇³,ܱ && æ ˆÖ –%òÖ 2Æþðæº¦fˆ–%Â즃ÃåØ*¨Daúr‰wŒúæ¶ÎådÎ-Œ‡Ö V‰·Ì*4¨¤· ¦Îe·�ÑP ÷‹\ ñ3 z„£Ž£ê£f£H¤œ¤7Šo.‰F*þ�„÷",‰á·"¦·,  ÷-üü÷‹r*"žŽ·Šˆé7Š‚>‰÷‹ñ ‰ðµ@ÿÿ¡É¥4 .IFGE PRIP06 $PS006 = 4. ; ASSIGN 4 BLOCKS - 1024 WORDS .IFL $NBLKS-$SB006-$PS006 3AFB ERSTGIREK OR W =R5 ; SB1=E YT,BOB N =E0YT BS.ESDRAD3 B =R3 ; N:URET RONUP ; . NOK AS T =R3 ; TYRIIOPR =R0 ; 3. BTO ; T ESQURER FOK AS T AOFS ESDRAD3 BNDFIL IL WDD3AFB ; ; **********************************************************************;* * ;* * ESINUTROUB STYLITI UOMRP ;* * øþ ADD BCPOOL,R4 ; AND BEGINNING OF CORE POOL .IFNZ $1145 MOV #2*USEC20,R5 D2: DEC R5 ; 40 USEC DELAY BNE D2 .ENDC BIT #BSYB3,B3FR ; IF STILL BUSY-B3 HUNG UP BNE QOVB50 ; DO ERROR RECOVERY MOVB (SP),@#PSR ; RESET LOCKOUT .IFNZ $TMSLC!FXPART TSTB PPTAB(R0) ; PRIORITY TIME-SLICED OR FIXED? BMI QOVA49 ; NO ND BEGINNING OF CORE POOL .IFNZ $1145 MOV #2*USEC20,R5 D2: DEC R5 ; 40 USEC DELAY BNE D2 .ENDC BIT #BSYB3,B3FR ; IF STILL BUSY-B3 HUNG UP BNE QOVB50 ; DO ERROR RECOVERY MOVB (SP),@#PSR ; RESET LOCKOUT .IFNZ $TMSLC!FXPART TSTB PPTAB(R0) ; PRIORITY TIME-SLICED OR FIXED? BMI QOVA49 ; NO MOV QPARTN(R1),R5 ; YES-QPARAß*©ˆæÞ¸ˆ÷µ@�\‰ÿ b‰÷‹‚÷z*2©nè÷•rôæÞ¸ˆ÷ed�÷•]÷f`*V©r‰wNùÀ´¶B *üž>wÊþòµT*‰ôµ‰÷å þv* Ÿ÷‹C÷-ì`‰åz‰ã7ZÀè7"pÏ*DŸ!7,j÷-C $NBLKS-$SB007-$PS007 XXXXXXXX ; PRI 7 TOO LARGE .ENDC .ENDC .IFL PRDÿ• ¬÷ *÷  À€ÿ•œ÷ 4Û? ’Àè«*Ú÷ ´À,÷ ¦w:ýÿ5€€xü�‡ÀÀP*þjñÿ5€€^ü€ÿ Xñ€Îe ;* **********************************************************************;* 10OM CTSE.C E AG.P ; C ND.E K TSEL RIN ; ; TELEMPCOO I/R FOT AI WND AITEX; 20VBQO P JM USATSTD TEESQURET ORABT SE; ) R1T(TATSQ,REBT#A VBMO: 10A0TS E ACSPE OR CSHUINQLIRE; XXXXQN P JM D TEORABS=TUTA SSKTAT SE; ) R1T(TATSD,RTAB#T VBMO S YE; ôþ MOV QPARTN(R1),R5 ; YES-QPART ADDRESS FOR THIS PRIORITY MOV R4,PRTADD(R5) ; SET PHYSICAL ADDRESS ALLOCATED FOR THIS PRI. .ENDC QOVA49: MOV #PRTHDR,R5 ; GET ADDRESS OF PARTITION HEADER INFO. .IFNZ $KT11C MOV R4,-(SP) ; PPA JSR PC,PPASV5 ; TO MOV (SP)+,R4 ; SVA .ENDC QOVA50: MOV (R5)+,(R4)+ ; TRANSFER HEADER TO PARTITION BPL QOVA50 ; NOT ADDRESS FOR THIS PRIORITY MOV R4,PRTADD(R5) ; SET PHYSICAL ADDRESS ALLOCATED FOR THIS PRI. .ENDC QOVA49: MOV #PRTHDR,R5 ; GET ADDRESS OF PARTITION HEADER INFO. .IFNZ $KT11C MOV R4,-(SP) ; PPA JSR PC,PPASV5 ; TO MOV (SP)+,R4 ; SVA .ENDC QOVA50: MOV (R5)+,(R4)+ ; TRANSFER HEADER TO PARTITION BPL QOVA50 ; NOT FINISHED SUB #PHDSZE,R4 Qa÷‹²ÀeÀe É* (Á¦EàÁeEÜE!"Ãe ÷‹*B |ÂeÂe=÷‹jÀeÀe ÃZR .ENDC .IFL PRIP09 $PS009 = $NBLKS-$SB009 .ENDC .IFGE PRIP09 $PS009 = 4.SO SUPPRE*ÖSS TTY MESSAGES  NEXT TAPù*úE: BOTH SWITCHES "UP" T&M GOOD: É*"WRTT¸ ÀVÐ &&÷ ü÷ êÂeƒÎ F,´Ã5ÃðÿÓ Áæ&     ÷ HN †Ñ•U,D´#Ö è€Ñ•@åÖ ÷ ¦ÍÀ�Àe7 10A0TS E BN S?ESGRRO PINO I/E AV HSKTA; 1)(RATSTIO TBTS C ND.E UTKOOC LTYRIIOPRT SE; 7 L SP 5 14$1 Z FN.I C ND.E UTKOOC LTYRIIOPRT SE; SR#P,@CKLO#P VBMO 5 14$1 FZ.I T OUNTRI PORRR E ; P TYRR,EPC R JS R FO ; P)(S,-R5 V MO R BEUM NSKTAT SE; ) R5K(TSRR,ER1 V MO E ULOD MORRR EOFS ESDRAD; R5D,MOSE#T V MO XXXXQNR FOðþT FINISHED SUB #PHDSZE,R4 ; GET TO PARTITION BEGINNING MOV R3,(R4) ; SET SB AND NOB ; ; BUILD PARTITION HEADER, SET UP FOR ROLL-IN AND ; INITIATE I/O. ; R0=PRIORITY ; R1=PRIORITY WORD INDEX ; R2=ADDRESS OF REQUEST'S QPART CELL ; R4=PARTITION ADDRESS ; R4=PARTITION VIRTUAL ADDRESS ; QOVB00 = . MOV R2,R3 ; DUPLICATE QPART ADDRESS SUB  ; GET TO PARTITION BEGINNING MOV R3,(R4) ; SET SB AND NOB ; ; BUILD PARTITION HEADER, SET UP FOR ROLL-IN AND ; INITIATE I/O. ; R0=PRIORITY ; R1=PRIORITY WORD INDEX ; R2=ADDRESS OF REQUEST'S QPART CELL ; R4=PARTITION ADDRESS ; R4=PARTITION VIRTUAL ADDRESS ; QOVB00 = . MOV R2,R3 ; DUPLICATE QPART ADDRESS SUB QPARTN(R1),R3 ; CALCULATE IQPART - IaE PRIP10 $PS010 = 4. ; ASSIGN 4 BLOCKS - 1024 WORDS .IFL $NBLKS-$SB010-$PS010 XXXXb’’’’’’’’’’’’’’’£*ö’’’’’’’’’’’’’’’’’’*’’’’’’’’’’’’’’’’c,µ÷ �Àp»Ð À%À»û‡÷-@H &À6:*.µ7<7œ¸µm7 º7 ´€÷ ° €÷ &f· \,Rµ ÁœÂ§µdCC¦®ÿÿ·Šr÷‹jt‰"8*˜«‡ÃÉ¥ É¥ v‰æb·#$ƒV‰Ñ 2*¼«ÎåÎ ‚Sü‰Ö é‰÷à ÷Þ ÷Ü ‰‡Ü. GSRER PERO PIN ; ; ONTIMAORNF IRTPA QNDFI ; N RTQP,FPC R JS N CAE WSOR BEUM NSKTAT GE; R1),R2K(TSOU V MO RYNT EUEUE QOFD EA HOFS ESDRAD; R2),R1E(QUHD V MO CKTA SONS TUTA SORSSCERO PVESA; ) SP-(R,PS@# V MO H TCWI SCERAR METIT SE; 1)(RCERATM C IN . = RTABTS ; ; 9 OM CTSE.C LCMS$T Z FN.I E AG.P ; E ACSPE OR COMFRK AS TVEMORE; XXXXìþ QPARTN(R1),R3 ; CALCULATE IQPART - INDEX INTO QPART MOVB R3,IQPART(R4) ; SET IQPART IN HEADER MOVB R0,OPRIOR(R4) ; SET PARTITION'S PRIORITY MOV #GOTOV,IOCOMP(R4) ; SET I/O COMPLETE TO 'GOTOV' MOVB #3.,IOEXIT(R4) ; SET I/O EXIT TYPE MOV R4,R3 ; CALCULATE ADDRESS ADD #OFLEID,R3 ; OF DATA BUFFER MOV R3,DBADDR(R4) ; SET IT IN I/O LIST .IFNZ $KT11C ADD #020NDEX INTO QPART MOVB R3,IQPART(R4) ; SET IQPART IN HEADER MOVB R0,OPRIOR(R4) ; SET PARTITION'S PRIORITY MOV #GOTOV,IOCOMP(R4) ; SET I/O COMPLETE TO 'GOTOV' MOVB #3.,IOEXIT(R4) ; SET I/O EXIT TYPE MOV R4,R3 ; CALCULATE ADDRESS ADD #OFLEID,R3 ; OF DATA BUFFER MOV R3,DBADDR(R4) ; SET IT IN I/O LIST .IFNZ $KT11C ADD #020000,R3 ; SVA USING ASR 6 MOq’¦*ò’’’’’’’’’’’’’’’’’’‚*’’’’’’’’’’’’’’’’’’]*:’’’’’rü÷øæ¸,¶½æx¼ˆÁ†¼! ! á„fæx¼ˆ‡÷ ¶½o&<¶Á†¼æx¼ˆ÷‹9÷]ö ÷ |ÿïÀ‚ \¶&0ŠsÞ¸ˆæÞ¸w0ެˆ÷‹^ 7ŠX æ Îeà—% ¼ ƒæ@»æÞ¸ˆ÷@»†F*¸¬æ ¼æÞ¸ˆ÷ ¼tæÞ¸ˆÀj$l‰7P Ê*tÈÉr"‰÷‹úwÎ ÷ Z7Š˜*ˆ¢æ$¹¦ˆˆæÀ¸¦ˆˆæʸ¦ˆˆwŒ *¬¢w÷‹Bg‰7 (ðµ@ÿÿwRÉ¥QN P JM C ND.E ET SUTKOOC LTYRIIOPRE UR SKEMA; 7 L SP 5 14$1 Z FN.I C ND.E ET SUTKOOC LTYRIIOPRE UR SKEMA; SR#P,@CKLO#P VBMO 5 14$1 FZ.I R BEUM NSKTA; R1),R2K(TSOU V MO SSREDD AERADHEM RAOGPR; 4 ,RR1 V MO TYRIIOPRE UTMPCO; R0 R AS: 60OVGO D LEABIS DSKTAT SE; ) R4T(TATSL,ABDS#T VBMO GESAES MORRR EUT OPETY; P TYRR,EPC R JS èþ!000,R3 ; SVA USING ASR 6 MOV R3,DBADR1(R4) ; SET IT IN LIST MOV $KPAR5,DBADR2(R4) ; ASR IN LIST TOO .ENDC MOV OVTSK(R2),R5 ; GET REQUEST'S TASK NUMBER ASL R5 ; CALCULATE TASK WORD INDEX MOV IFD(R5),OFLEID(R4) ; SET IFD/FILE ID IN LIST CLRB IOFCN(R4) ; SET READ FUNCTION ADD #IOTHRD,R4 ; R4 = I/O LIST ADDRESS MOV R4,-(SP) ; SET ON STACK F"V R3,DBADR1(R4) ; SET IT IN LIST MOV $KPAR5,DBADR2(R4) ; ASR IN LIST TOO .ENDC MOV OVTSK(R2),R5 ; GET REQUEST'S TASK NUMBER ASL R5 ; CALCULATE TASK WORD INDEX MOV IFD(R5),OFLEID(R4) ; SET IFD/FILE ID IN LIST CLRB IOFCN(R4) ; SET READ FUNCTION ADD #IOTHRD,R4 ; R4 = I/O LIST ADDRESS MOV R4,-(SP) ; SET ON STACK FOR DISC SERVICE .IFNZ $TMSLC!C�,ä¶Ã ÷ øf÷ òÿ�Áe0R�‡&ÄX»Ã|, ·@÷ Ã(÷ @÷ !\»ñ„‡÷ ¸À T,0· Àe ÀeÉÿ‚”­ˆ÷ æ ÷Þ /ž­^4,¢­÷Ò æ|¹æÞ¸ˆæ@»æÞ¸ˆæÞ¸ˆ÷@»v ‰*È­Àr $l‰7X 7 ƒ–‰i*†£˜ÂRº¦ ÒåÈåÒ(¦Ñ È R”ü7Šº*ª£$&‰BÈåðµ@ÿÿÂ%<Â%2Â%q*Σ· Â%„KS-$SB011-$PS011 XXXXXXXX ; PRI 11 TOO LARGE .ENDC .ENDC .IFL PRIP12 P)(S,-R5 V MO T ENUMRG AINR BEUM NSKTAT SE; ) R5K(TSRR,ER4 V MO E ULOD MORRR EOFS ESDRAD; R5D,MOIE#R V MO . = 50OVGO ; ERMBNUK AS T =R4 ; SSREDD ARYNT ERTPA Q =R2 ; A SV-PSSREDD AERADHEK AS T =R1 ; EXND IRDWOY ITORRI P =R0 ; N -ILLROY LAEROVG INUR DEDRRCUOCR ROERD EA RSCDI ; ; OMRPM RO FITEXD AN; 15OVGO BR ESEUQUS ROF OADHET ASKTAE EUQU; 0)(RSTIR,FR3 äþ%OR DISC SERVICE .IFNZ $TMSLC!CHKPTC TSTB (R2) ; IS TASK CHECKPOINTED BPL QOVB10 ; NO JSR PC,CHKPIO ; YES - READ CHECKPOINTED TASK BR QOVB11 QOVB10 = . .ENDC JSR PC,DISCIO ; ROLL-IN OVERLAY TASK QOVB11: TST IOERRW(R4) ; DID DISCIO REQUEST PROCESS ERROR OCCUR? BNE QOVB60 ; YES ; ; BEFORE EXITING FROM RPOM AFTER A QOVLAY CALL, ROLL-IN ; &HKPTC TSTB (R2) ; IS TASK CHECKPOINTED BPL QOVB10 ; NO JSR PC,CHKPIO ; YES - READ CHECKPOINTED TASK BR QOVB11 QOVB10 = . .ENDC JSR PC,DISCIO ; ROLL-IN OVERLAY TASK QOVB11: TST IOERRW(R4) ; DID DISCIO REQUEST PROCESS ERROR OCCUR? BNE QOVB60 ; YES ; ; BEFORE EXITING FROM RPOM AFTER A QOVLAY CALL, ROLL-IN ; OR ROLL-OUT REQUEST-SET TSTAT = 9 = ‘$ÛЋ7”™ ×­• Ôr‰×*¢®wô·Š f‰ h‰fæ"ˆ·Š · w>ý•*Æ®w<ýW"(‡h‰÷‹è ÷W®A‡fæ"ˆ ’N‰Â z”¤ì¢ˆ£ä£ì¢È ·oÐ*¦¤‡B”C”÷"÷åƒmÃeüÿ¦ÂE€ÿÅ— $ʤN‰Â z֤Τô¤¥¥¥.¥>¥T¥h¥Û“NDC .IFL PRIP13 $PS013 = $NBLKS-$SB013 .ENDC .IFGE PRIP13 $PS013 = 4. ” CRS.3 = 0 ;CAR READER STATUS - C/R # 3 CRB1.3 = 0 ;CARD READER BINARY DATA BUFFERV MO: 30OVGO LYEROPPRP USTLAT SEY-PTEM; ) R0T(AS,LR3 V MO E EUQUY PTEMT NO; 30OVGO E BN D OR WADRETHS K'AS TUPT SE; 1)(R),R0T(RSFI V MO . = 20OVGO ; EDICSLE-IM TORD TEINPOCKHE CAS WIND-LEOL RSKTA ; ; OMRPM RO FITEXD AN; 20VBQO P JM 0 =ATST CND ALEABPTCKN IOITRTPAT SE; 2)(RK,TCAR#P VBMO USATSTS RON IEDEUQUT SE; ) R4T(TATSS,ROIN#Q VBMO: 15OVGO T ARQPN INDPEUS SL.VOT NOT SE; ) R2àþ) OR ROLL-OUT REQUEST-SET TSTAT = 9 = QINQPT ; R2 = QPART ENTRY ADDRESS ; QOVB15 = . MOV OVTSK(R2),R1 ; GET TASK NUMBER MOVB #QINQPT,TSTAT(R1) ; SET QINQPT AND EXIT ; ; EXIT FROM RPOM ; QOVB20 = . MOVB (SP)+,@#PSR ; POP PSR OFF STACK AND RESET ; ; LOCKOUT JUST IN CASE SET RTS PC ; ; ERROR TYPE -1, QPART DOESN'T EXIST FOR THIS PRIORITY ; QOVB30 = *QINQPT ; R2 = QPART ENTRY ADDRESS ; QOVB15 = . MOV OVTSK(R2),R1 ; GET TASK NUMBER MOVB #QINQPT,TSTAT(R1) ; SET QINQPT AND EXIT ; ; EXIT FROM RPOM ; QOVB20 = . MOVB (SP)+,@#PSR ; POP PSR OFF STACK AND RESET ; ; LOCKOUT JUST IN CASE SET RTS PC ; ; ERROR TYPE -1, QPART DOESN'T EXIST FOR THIS PRIORITY ; QOVB30 = . DEC 8.(SP) ; SET ¡œ¥þþº*¬¦Bað vL·IBa›ÿF»®¦º¦¬¢Ç*ЦÀ¶í€ ú6Ž‡È¢IP14 $PS014 = 4. ; ASSIGN 4 BLOCKS - 1024 WORDS .IFL $NBLKS-$SB014-$PS014 XXXXXXXX £COMPRESSED DATA BUFFER ; CRVC.1 = 230 ; C/R # 1 INTERRUPT VECTOR CRVC.2 = 230 ;C/R ¤`À`B ‡÷ ¼ € #Á`B ú‡ ‡ z,†¹s|º÷ ž � € #1-Á`õ w·,¬¹ 7s|º’$s�º÷ hG(ARTR R CL R DEEA HSKTAN ITYRIIOPRT SE; ) R1R(IOPR,HR0 VBMO TYRIIOPRO TCKBA; R0 R AS R0 R AS ERADHEN INTMEGUART SE; 1)(RRGTA),R2G(ARTR V MO UEUE QOS ROF ; ) R0T(AS,LR3 V MO C ND.E L AI TATK AS TADRETH; + P)(S,@R3 V MO R5ASE US; 5 SVPA,PPC R JS P)(S,-0)(RSTLA V MO 1CT1$K Z FN.I C ND.E L AI TATK AS TADRETH; 0)(RSTLA,@R3 Üþ-. DEC 8.(SP) ; SET -1 ERROR CODE ON STACK BR QOVB45 ; EXIT ; ; ERROR TYPE 1, QPART FULL FOR THIS PRIORITY ; QOVB40 = . INC 8.(SP) ; SET 1 ERROR CODE ON STACK QOVB45: MOV (SP)+,R1 ; GET TASK NUMBER THAT CAUSED ERROR CLRB TSTAT(R1) ; SET TASK QUIESCENT TST (SP)+ ; POP ARG OFF STACK BR QOVB20 ; EXIT ; ; ; ERROR-B3 BOX HUNG UP ; .-1 ERROR CODE ON STACK BR QOVB45 ; EXIT ; ; ERROR TYPE 1, QPART FULL FOR THIS PRIORITY ; QOVB40 = . INC 8.(SP) ; SET 1 ERROR CODE ON STACK QOVB45: MOV (SP)+,R1 ; GET TASK NUMBER THAT CAUSED ERROR CLRB TSTAT(R1) ; SET TASK QUIESCENT TST (SP)+ ; POP ARG OFF STACK BR QOVB20 ; EXIT ; ; ; ERROR-B3 BOX HUNG UP ; EVENTUALLY HANDLE ERROR WITH SOFTWARE BA±015-$PS015 XXXXXXXX ; PRI 15 TOO LARGE .ENDC .ENDC .IFL PRIP16 $PS016² ** ;* L I N E P R I N T E R E Q U A T E C A R D S **³R‡    a,†º   ‡R”þ⋇Â5Âå¦÷ R‡E,¬ºÀ’ ´¾€ÊeÊ-"‚w rö�7v ‡>´°µZµØµ$µ¾µµžµ¼¶vò°Ú¶æ¶,·6·T·^·x·„·�·œ·#±¨·´·À·â·î·ú·¸¸¸æ³±üµ<´P±j²p²r¶z²2¸>¸§_V MO 1CT1$K FZ.I 0 =RDWOD EAHR TSKTAT SE; 1)(R R CL C ND.E S YE; 20OVGO I BM ? EDICSLE-IM TORD TEINPOCKHE CSKTAS WA; 2)(R TBTS C PTHK!CLCMS$T Z FN.I R BEUM NSKTAE UTMPCO; R4 R AS S ESDRADR DEEA HALICYSPHM RAOGPRT SE; ) R4R(DEEA,HR3 V MO C ND.E UTKOOC LTYRIIOPRT SE; 7 L SP 5 14$1 Z FN.I C ND.E UTKOOC LTYØþ1 EVENTUALLY HANDLE ERROR WITH SOFTWARE BACK-UP ; ; QOVB50: HALT ; REAL-TIME ERROR HANDLER********* ; ; ERROR OCCURRED DURING THE DISCIO REQUEST PROCESSING. ; SOMETHING WRONG-CAN'T ROLL-IN ; QOVB60: MOV R4,R1 ADD #-HIOLST,R1 ; TASK HEADER ADDRESS .IFNZ $KT11C MOV R1,-(SP) JSR PC,ADPART ; GET ASR 5 & 6 SET-UP MOV (SP)+,R1 ; NOW A PSVA (PARTITION SYSTEM VIRTUAL ; 2CK-UP ; ; QOVB50: HALT ; REAL-TIME ERROR HANDLER********* ; ; ERROR OCCURRED DURING THE DISCIO REQUEST PROCESSING. ; SOMETHING WRONG-CAN'T ROLL-IN ; QOVB60: MOV R4,R1 ADD #-HIOLST,R1 ; TASK HEADER ADDRESS .IFNZ $KT11C MOV R1,-(SP) JSR PC,ADPART ; GET ASR 5 & 6 SET-UP MOV (SP)+,R1 ; NOW A PSVA (PARTITION SYSTEM VIRTUAL ; ; ADDRESS) ÁNUMBER OF L/P PRIORITY LEVELS LPBACK = 1 ;1 = BACKUP L/P WITH TTY BY OPER COMMAND LPVC.1 = 200 ²¾‡œ¯®Ãâ±÷t^’÷ ’÷Š™ò±^Ü*ö±÷~æ|¹æÞ¸ˆ7 n7ŠëæB!ˆ·,÷e—*²d&·ô÷íî÷åè†Äß*©ˆæÞ¸ˆ÷µ@�\‰ÿ b‰÷‹‚÷z*2©nè÷•rôæÞ¸ˆ÷ed�÷•]÷f`*V©r‰wNùÀ´¶RIIOPRT SE; SR#P,@CKLO#P VBMO 5 14$1 FZ.I EXND IRKWOR BEUM NSKTA; R4 L AS EXND IRDWOE-BLOU DTYRIIOPR; R0 L AS . = 10OVGO C ND.E R3+,P)(S V MO A PPR DEEA HSKTAT GE; PAVP,SPC R JS P)(S,-R1 V MO **** ; E IM TISTHT AERADHES ITN IRSPAS K'AS TVEOLES R**** ; **** ; 1CT1$K Z FN.I C ND.E SSREDD AERADHEE ATICPLDU; 3 ,RR1 Ôþ5 ; ADDRESS) .ENDC MOV R5,R4 ASR R4 ; TASK NUMBER ASL R0 ; PRIORITY WORD INDEX JMP GOOV50 ; DISCIO READ ERROR PROCESSING ; .IFNZ $TMSLC!FXPART ; ; PUSH REQUEST INTO QPART TABLE QUEUE ; R0 = PRIORITY ; R1 = PRIORITY WORD INDEX ; R3 = TASK'S B3 REQUEST ADDRESS IF NEEDED ; QOVC00 = . MOV QPARTN(R1)6.ENDC MOV R5,R4 ASR R4 ; TASK NUMBER ASL R0 ; PRIORITY WORD INDEX JMP GOOV50 ; DISCIO READ ERROR PROCESSING ; .IFNZ $TMSLC!FXPART ; ; PUSH REQUEST INTO QPART TABLE QUEUE ; R0 = PRIORITY ; R1 = PRIORITY WORD INDEX ; R3 = TASK'S B3 REQUEST ADDRESS IF NEEDED ; QOVC00 = . MOV QPARTN(R1),R2 ; GET QPART TABLE ADDRESS THIS PRIORÒ7Šæ@»æÞ¸ˆ Q*æ²÷%–7 †7 Œè÷„ä¦Â8€$Ý* ³Ñ Âeà— ¼ƒÂ@»·¦æÞ¸ˆœÿÿÂE×Ó.(æB¹/ˆ·&÷ ¼÷ ¸‚*.ª– ‡T‰÷‹Ä7о÷ Ê÷ÂÀ ¿‰Ý*RªæðwØý—%ƒX‰7Šq7 n÷%Ðft·ŠaÞÔNO = 2. ; TIMER QUEUE PROCESSOR ; .PAGE $ABMES = 3 ; THREE ABORT MESSAGV MO ; ESSSREDD ALETBCALOREE LVSORE; ) R3,(PC R JS Y TRENR LEAITRO TMPBU; + 3)(R T TS R LEAITRF OSSREDD AALTUAC; 3 ,RR1 D AD R LEAITRE THN INDOU FESSSREADE THE LVSOREO TIT ; LLCAD ANY VLSO ROR FTSENUMRG ANGLIAL CUPT SE ; ; . = 05OVGO C ND.E LYOVRST N'DOS-YE; 10OVGO I BM ? EDICSLE-IM TORD TEINPOCKHE CSKTA; 2)(R TBTS TCKPCH FZ.I Y'VLSO'RS Ðþ9,R2 ; GET QPART TABLE ADDRESS THIS PRIORITY BEQ QOVB30 ; ERROR (-1), QPART DOESN'T EXIST .LOCK CMPB NREQQP(R0),MAXENT(R2) ; IS QPART FULL? BEQ QOVC30 ; YES TSTB NREQQP(R0) ; WILL THIS BE FIRST REQUEST? BPL QOVC10 ; NO - PUT IN QUEUE TST PRTADD(R2) ; YES - DO WE NEED ALLOCATION? BNE QOVC10 ; NO - PUT IN QUEUE MOV R3,B3RR ; SET SEARCH:ITY BEQ QOVB30 ; ERROR (-1), QPART DOESN'T EXIST .LOCK CMPB NREQQP(R0),MAXENT(R2) ; IS QPART FULL? BEQ QOVC30 ; YES TSTB NREQQP(R0) ; WILL THIS BE FIRST REQUEST? BPL QOVC10 ; NO - PUT IN QUEUE TST PRTADD(R2) ; YES - DO WE NEED ALLOCATION? BNE QOVC10 ; NO - PUT IN QUEUE MOV R3,B3RR ; SET SEARCH ADDRESS FOR B3 BIS #SRCHB3,á*䳯î‰fÎ �e P"Ð È û€‰‡üf&æ/*´¦f&~ ¶ €�‚ƒ„…‡æ˜À NŒ*,´ý†‘“ΕÎ ø†Ö ‡r‰wâ**« À>¯^‰À X‰È fÎ �eÑ ñ÷ w2,N«Žþ·Š˜÷‹fwÂü÷ådâæÞwüýTà«B¬Ì*t«L<¬OD,¯TRãTP ; THE SYSGEN PARAMETER '$PST CONTROLS THE EXECUTION PATH*PSTP ; DURING A TASK ERROR. äSTER CNT.1 = 765014 ;L/P # 1 WORD COUNT REGISTER CNT.2 = 765014 ;L/P # 2 WORD COUNT REGISASYP B -NO; 10OVGO Q BE R?LEAITRN IOATOCEL R AREHE TIS; 3 ,R1)(RDXLITR V MO 1CT1$K FZ.I S YE; 50OVGO E BN R?CUOCR ROERD EA RSCDID DI; 1)(RWDRRHE T TS S YE; 60OVGO Q BE D?TEESQUREE BRTBO ALLWI; ) R4T(TATSQ,REDQ#O PBCM S YE; 60OVGO Q BE ? EDSTUEEQ RENBET ORABS HA; RQRTAB,#2)(R PBCM R BEUM NSKTAT GE; R4),R2K(TSOU V MO R4 R CLÌþ= ADDRESS FOR B3 BIS #SRCHB3,B3FR ; START SEARCH REQUEST .IFZ $CORAL JSR PC,SEARCH .ENDC INCB ALLOSW(R2) ; SET ALLOCATION SWITCH QOVC10: MOV #ENTIUS,R3 ; ENTRY IN USE, C=0, PSTAT=WAITING MOV (SP)+,R4 ; GET TASK NO. MOV (SP)+,R5 ; GET TRANSMITTED ARGUMENT JSR PC,PUSHQP ; 'PUSH' ENTRY INTO QPART BNE QOVC20 ; NOT FIRST REQUEST-WAIT IN TURN >B3FR ; START SEARCH REQUEST .IFZ $CORAL JSR PC,SEARCH .ENDC INCB ALLOSW(R2) ; SET ALLOCATION SWITCH QOVC10: MOV #ENTIUS,R3 ; ENTRY IN USE, C=0, PSTAT=WAITING MOV (SP)+,R4 ; GET TASK NO. MOV (SP)+,R5 ; GET TRANSMITTED ARGUMENT JSR PC,PUSHQP ; 'PUSH' ENTRY INTO QPART BNE QOVC20 ; NOT FIRST REQUEST-WAIT IN TURN MOV PRTADD(R2),R4 ; GET PARTITION ADñwŠwÊÿ·Š² ·Š² wî f‰·+ L¬ê ÷‹l æÞ¸ˆ÷ " ÷ Xb¬^q.f¬÷ æ|¹æÞ¸ˆad‰÷@»¾æ@»æò PSTP ; PSTP $PST = 0 ó.3 = 0 ;L/P # 3 COMMAND REGISTER CMD.4 = 0 ;L/P # 4 COMMAND REGISTER STAT.1 =ô’7ŠŽ wtwhb.ªw šÄk   Ä%{ û‚ÀEøÿÄ Äe‚ whÄåÏ k {  ˜.Ðd ÷ÀD Á- ÷ ô Y TRENT ARQPS K'AS TOFS ESDRAD; 2 ,R0)(RTNARQP D AD ERADHEN IOITRTPAM RO FRTPAIQT GE; 2 ,R1)(RRTQPHI SBBI R2 R CL EXND IRDWOY ITORRI PKEMA; R0 L AS ERADHEN IOITRTPAM RO FTYRIIOPRT GE; R0),R1I(PRPH VBMO C ND.E LEABSSREDD AERADHEK AS T &ERADHE ; R1+,P)(S V MO S N'IOITRTPAL ALO SVAPST GE; T ARDP,APC R JS P)(S,-R1 V MO 1CT1$K Z FN.I R DEEA HAMGRÈþAMOV PRTADD(R2),R4 ; GET PARTITION ADDRESS MOV R1,R2 ; GET ADDRESS OF ENTRY MOV R0,R1 ; COMPUTE PRIORITY ASL R1 ; WORD INDEX TST R4 ; ARE WE REQUESTING AN ALLOCATION? BNE QOVC15 ; NO JMP QOVA45 ; YES-ALLOCATE AND BUILD HEADER QOVC15: MOVB #IOIP,(R2) ; SET I/O IN PROGRESS IN PSTAT MOVB (SP),@#PSR ; RESET PRIORITY LOCK-OUT BDRESS MOV R1,R2 ; GET ADDRESS OF ENTRY MOV R0,R1 ; COMPUTE PRIORITY ASL R1 ; WORD INDEX TST R4 ; ARE WE REQUESTING AN ALLOCATION? BNE QOVC15 ; NO JMP QOVA45 ; YES-ALLOCATE AND BUILD HEADER QOVC15: MOVB #IOIP,(R2) ; SET I/O IN PROGRESS IN PSTAT MOVB (SP),@#PSR ; RESET PRIORITY LOCK-OUT .IFNZ $KT11C MOV R4,-(SMERS AND DECKS ; ; 0=DEC LINE FREQUENCY(KW11-2) ; ; 1=DDS CLOCKS ; ; LPSIZE = 132. ;NUMBER OF CHARACTERS IN L/P BUFFER LPMXTM = �A�Á � � B`ï÷ €÷%’ÂŽ·.Ž…Ö w|÷‹’û 7Š‚wr÷•ÿÿxwh·Š—.´u ÄEøÿÄ 74~wh÷‹^7 V‡‰‡B„*l¶Â ýö& æÈ‡ LINK-11 V00v*�¶7A PASS 1 PASS 2 k*RO POFS ESDRADE ATULLCCA; 1 ,RSTOLHI#- D AD ; EDCKHE C/O IONR ROERL TIUND EA RSTJUR DEEA HSKTA ; N OLYRET YET NOAN-CONTIMAORNF IERADHEN IOITRTPAE US ; ; CKTA SONS TUTA SORSSCERO PVESA; ) SP-(R,PS@# V MO . = V TOGO ; ; 8 OM CTSE.C E AG.P ; C ND.E ; C ND.E 10OVGE BR S STUEEQ ROF. NOT ENEMCRDE; 0)(RQPEQNR CBDE RYNT ERTPA QIDVO; 2)(R R CL 10OVGE L ÄþE .IFNZ $KT11C MOV R4,-(SP) ; GET PARITION'S JSR PC,PPASV5 ; SYSTEM VIRTUAL MOV (SP)+,R4 ; ADDRESS .ENDC JMP QOVB00 ; SET UP AND START ROLL-IN QOVC20: MOV R1,R2 ; QPART ENTRY ADDRESS BR QOVB15 ; EXIT ; ; DETERMINE IF THERE ARE ANY ABORT REQUESTED ENTRYS ; IN QPART-IF THERE IS, USE IT!! ; QOVC30 = . MOVB 4.(SP),@#PFP) ; GET PARITION'S JSR PC,PPASV5 ; SYSTEM VIRTUAL MOV (SP)+,R4 ; ADDRESS .ENDC JMP QOVB00 ; SET UP AND START ROLL-IN QOVC20: MOV R1,R2 ; QPART ENTRY ADDRESS BR QOVB15 ; EXIT ; ; DETERMINE IF THERE ARE ANY ABORT REQUESTED ENTRYS ; IN QPART-IF THERE IS, USE IT!! ; QOVC30 = . MOVB 4.(SP),@#PSR ; RESET LOCKOUT QOVC35: MOV (R*********************************************** ;* ** ;* ÀÎ@w Œk÷‹ÌÄÊüÂeÀ=÷�.r¤w Â@w fw¬üw’·Šºw¢À=w ¤š.˜ w  ÿÿÀrw 8*h·ÁÔ&æÎ‰‡÷‰Âj‰wlÿ÷жj‰€*Œ·w`ÿ÷�ªj‰wTÿ÷Žžj‰wÜï÷�’j‰*°·wÐï÷�†j‰wÄï$Ý$ÛЋ7”™ ×­• Ôr‰×*¢®wô·Š f‰ h‰fæ"ˆ·Š · w>ý•*Æ®w<ýW"(‡h‰÷‹è ÷W®A‡fæ"ˆBP ) R0B(TAPP TBTS TCKPCH Z FN.I C ND.E 10OVGE BR TCKPCH FZ.I . = 40OVGE ; UT-OLLROK AS TNGRIDUD TEESQURET ORAB ; ; 25OVGE BR E BLTAKPECCHT NO, NDPEUS SL.VO= T TAPST SE; 2)(RK,NCLS#V VBMO: 30OVGE ITEX; 20VBQO P JM R PETYR ROERR FO ; P TYRR,EPC R JS CKTA SONT SE; P)(S,-R4 V MO ERMBNUK AS TUT-OLLROT SE; ) R4K(TSRR,ER1 V MO LEÀþISR ; RESET LOCKOUT QOVC35: MOV (R2),R5 ; GET QPART ENTRY INC R5 BNE QOVC40 ; OK-NOT END OF QPART JMP QOVB40 ; SORRY-QPART "IS" FULL-ERROR TYPE 1 QOVC40: CMPB (R2),#ABRTRQ ; ABORT REQUESTED ON ENTRY? BEQ QOVC50 ; YES-USE THIS CELL ADD #6.,R2 ; NO-BUMP TO NEXT QPART CELL BR QOVC35 ; KEEP A LOOKIN' QOVC50 = . .LOCK CMPB (R2),#ABJ2),R5 ; GET QPART ENTRY INC R5 BNE QOVC40 ; OK-NOT END OF QPART JMP QOVB40 ; SORRY-QPART "IS" FULL-ERROR TYPE 1 QOVC40: CMPB (R2),#ABRTRQ ; ABORT REQUESTED ON ENTRY? BEQ QOVC50 ; YES-USE THIS CELL ADD #6.,R2 ; NO-BUMP TO NEXT QPART CELL BR QOVC35 ; KEEP A LOOKIN' QOVC50 = . .LOCK CMPB (R2),#ABRTRQ ; ABORT STILL REQUESTED? !D.V 1 O � W Ö†ø÷‹Ú ÷‹·ÄmÊ7ŠH O Ž"|ÈÁ y„¼ÊÔ(ªÒ8R4Þ."­Æj‰wï&æʸˆæʸ˜.Œ¸ˆ‡&æÔ¸ˆæÔ¸ˆðµ@ô$·ŠNP‰&æÀ¸*´¸ˆæÀ¸ˆ‡EEEE#*ž¯w ó÷‹ ‰÷‹ Àຉ÷‹E `÷Þ¯Ò |¯æ.¹ˆ÷ Ð ÷È IЯây$ԯ昹æ.¹ˆ7 ² $HE PRECEDING LEVELS (WITH LOWER NUMBERS), WHICH ACT AS SUCCESSIVE ; MULTIPLIERS IN COUNTING TO THE GIVEN RESOLUTION LEVEL. DUMOR ROERT OUL-OL ROFS ESDRADT GE; R4D,MOOE#R V MO: 25OVGE INGA AO. NSKTA; R1 R AS UTKOOC LTYRIIOPRT SERE; SR#P,@P)(S VBMO INGA ANTDESIREE OR CSSREDD AERADHET SE; ) R1R(DEEA,HR4 V MO EXND IRDWOR BEUM NSKTA; R1 L AS S RON IEDEUQU= S TUTA SSKTAT SE; ) R1T(TATSS,ROIN#Q VBMO LEABNTOIKPECCHT NON IOITRTPAT SE; 2)(RK,NCRT#P VBMO S UEUE QOS RTOIN ; ) R0T(AS,LR4 V MO ¼þMRTRQ ; ABORT STILL REQUESTED? BNE QOVC30 ; NO-START SEARCH ALL OVER MOV #ENTIUS,(R2) ; ENTRY IN USE, C=0, PSTAT=WAITING MOV (SP)+,OVTSK(R2) ; TASK NUMBER MOV (SP)+,TRARG(R2) ; SET TRANSMITTED ARGUMENT JMP QOVB15 ; WAIT IN TURN .ENDC ; ; ; BSIZE BLOCKS NOT AVAILABLE AT THIS TIME ; R0 = PRIORITY ; R2 = QPART ENTRY ADDRESS ; QOVD00 = . TSTB PPTANBNE QOVC30 ; NO-START SEARCH ALL OVER MOV #ENTIUS,(R2) ; ENTRY IN USE, C=0, PSTAT=WAITING MOV (SP)+,OVTSK(R2) ; TASK NUMBER MOV (SP)+,TRARG(R2) ; SET TRANSMITTED ARGUMENT JMP QOVB15 ; WAIT IN TURN .ENDC ; ; ; BSIZE BLOCKS NOT AVAILABLE AT THIS TIME ; R0 = PRIORITY ; R2 = QPART ENTRY ADDRESS ; QOVD00 = . TSTB PPTAB(R0) ; DYNAMIC PRIORITY? 1l*Ô¹0?¬¢0¿œø¹=*º,«0zÓ«… 2n‰·Š0 7ŠZ r‰wò÷�" � À0º·Š?*¦°R P‰¶Îå¦Îeº'‡–´D´$´´´ì´µ€¸1ʰ®¸R¶2¶Þ³�¸’²³8³D³z³63S3 = 5 ; 0.1 SEC RES4 = 2 ; 0.2 SEC RES5 = 5 ; 1.4 .ENDC .IFNZ $KT11C .PACK .-2 .ENDC .ENDR .NLIST ME .ENDM ; C ND.E CKBAK AS TADRETH; + P)(S,@R4 V MO VA S'SSTLAT GE; 5 SVPA,PPC R JS P)(S,-0)(RSTLA V MO R4+,P)(S V MO PA P'SSKTAT GE; PAUP,SPC R JS P)(S,-R4 V MO 1CT1$K Z FN.I C ND.E CKBAK AS TADRETH; 0)(RSTLA,@R4 V MO 1CT1$K FZ.I 0 =RDWOD EAHR TSKTAT SE; 4)(R R CL C ND.E UTKOOC LTYRIIOPRT SE; 7 L SP 5 14$1 ¸þQB(R0) ; DYNAMIC PRIORITY? BPL QOVB15 ; NO-WAIT FOR MEMORY SPACE ; ; SEARCH FOR CHECKPOINTABLE TASK ; PSTAT = 1, PARTITION CHECKPOINTABLE ; PSTAT = 2, VOL. SUSPEND & CHECKPOINTABLE ; CHECK LOWEST PRIORITY FIRST ; QOVD05: MOVB (SP),@#PSR ; RESET PRIORITY LOCKOUT MOV #NPRIOR,R4 ; GET FIRST SEARCH PRIORITY QOVD10: CMP R0,R4 ; IS REQUEST'S PRI. LOWER OR EQUAL? BGE QOVB15 ; YES-CAN'T RBPL QOVB15 ; NO-WAIT FOR MEMORY SPACE ; ; SEARCH FOR CHECKPOINTABLE TASK ; PSTAT = 1, PARTITION CHECKPOINTABLE ; PSTAT = 2, VOL. SUSPEND & CHECKPOINTABLE ; CHECK LOWEST PRIORITY FIRST ; QOVD05: MOVB (SP),@#PSR ; RESET PRIORITY LOCKOUT MOV #NPRIOR,R4 ; GET FIRST SEARCH PRIORITY QOVD10: CMP R0,R4 ; IS REQUEST'S PRI. LOWER OR EQUAL? BGE QOVB15 ; YES-CAN'T CHECKPOINT THEN TSTB PPTAB(R4Až‚ Á F`w`,w`*w`(w`(w`"w`(å*š±w`‰‡  ýé÷%Ð7 À7 ÆI*¾±÷¾÷‹+êæÞ¸ˆ÷‹# ÷B 2 ; 10 MIN RES12 = 3 ; 30 MIN RES13 = 2 ; 60 MIN ; SET INTERRUPT LOCKOUT .ENDM ; D.ô÷%À w *à ÅíÅ Å @w Â@¶.&€ ‡À%€ÿ À%÷ àw ¨· ØwÜýwÈý� Þ.L à Z FN.I C ND.E UTKOOC LTYRIIOPRT SE; SR#P,@CKLO#P VBMO 5 14$1 FZ.I EXND IRDWO ; R0 L AS - E BLOU DTYRIIOPR; R0 L AS S YE; 30OVGE E BN D?DEENSPSUY ILARNTLUVOK AS TIS; ) R2G(ARTR T TS: 23OVGE C ND.E R TEISEG RTEIAPRROPP ATOS ESDRADY TREN; 2 ,RR3 V MO ERADHEN IOITRTPAN IITT SE; ) R4T(PRIQ,HR5 VBMO T ARQP IEW N'SITE ATULLCCA; ´þUCHECKPOINT THEN TSTB PPTAB(R4) ; IS SEARCH PRIORITY DYNAMIC? BPL QOVD40 ; NO-BUMP TO NEXT LEVEL MOV R4,R5 ; CALCULATE SEARCH PRIORITY ASL R5 ; WORD INDEX MOV QPARTN(R5),R1 ; GET PRIORITY'S QPART ENTRY BEQ QOVD40 ; DOESN'T EXIST - BUMP TO NEXT LEVEL QOVD20: MOV (R1),R5 ; SEARCHED TO END OF TABLE? INC R5 ; -1 TAIL MARKER BEQ V) ; IS SEARCH PRIORITY DYNAMIC? BPL QOVD40 ; NO-BUMP TO NEXT LEVEL MOV R4,R5 ; CALCULATE SEARCH PRIORITY ASL R5 ; WORD INDEX MOV QPARTN(R5),R1 ; GET PRIORITY'S QPART ENTRY BEQ QOVD40 ; DOESN'T EXIST - BUMP TO NEXT LEVEL QOVD20: MOV (R1),R5 ; SEARCHED TO END OF TABLE? INC R5 ; -1 TAIL MARKER BEQ QOVD40 ; YES BUMP TO NEXT LEVQ0 ;MAX RESOLUTION: #0 AT 10 MILLISECONDS SECR = 5 ;"RES5" IS THE ONE-SECOND RESOLUTION R÷ Ö 3Šd‡ó‹eñ³Še÷ ¡  imRde$eÚ.�ì×-r÷æ÷ ‡Á�°÷EÅ =бŠf7Š÷S þÿá. ùw b7Dæùæù æùÎE·þÿ÷‹ü& "þÿÏ.0ŠÀ�òÀ‹† „à pV÷•T.¿ óZ§ø 5 ,RR2 B SU SSREDD ARYNT EVESA; 3 ,RR5 V MO #SKTA; R1+,P)(S V MO SSREDD AERADHEM RAOGPRT SERES-YE; R4+,P)(S V MO UEUE QOFD EA HATK AC BUT-OLLROT GET US-MNO; 22OVGE E BN ? NTWAE WNE OTOT GE; 5)(RSKUT,OP)(S2. P CM Y TREND EA HOFS ESDRADT GE; 5 ,R2)(RQPADHE V MO UTKOOC LTYRIIOPRT SERE; SR#P,@P)(S4. VBMO L AI TTOINT ISHPU; P HQUS,PPC R JS T ARQPF O°þY QOVD40 ; YES BUMP TO NEXT LEVEL MOVB (R1),R5 ; GET CSTAT AND PSTAT BLE QOVD30 ; ALREADY CHECKPOINTED - VOID - OR WAITING CMPB R5,#VOLSCK ; IS IT CHECKPOINTABLE? BLE QOVD50 ; YES - DETERMINE IF CORE SPACE ADEQUATE QOVD30: ADD #6.,R1 ; BUMP TO NEXT ENTRY BR QOVD20 ; AND EXAMINE IT. QOVD40: DEC R4 ; BUMP SEARCH LEVEL TO NEXT HIGHEST BR QOVDZEL MOVB (R1),R5 ; GET CSTAT AND PSTAT BLE QOVD30 ; ALREADY CHECKPOINTED - VOID - OR WAITING CMPB R5,#VOLSCK ; IS IT CHECKPOINTABLE? BLE QOVD50 ; YES - DETERMINE IF CORE SPACE ADEQUATE QOVD30: ADD #6.,R1 ; BUMP TO NEXT ENTRY BR QOVD20 ; AND EXAMINE IT. QOVD40: DEC R4 ; BUMP SEARCH LEVEL TO NEXT HIGHEST BR QOVD10 ; ; DETERMINE IF CHECKPOINTABL%¤r TASK NO. 4 4 Â'Âæd ˆˆ¬óbÈúw ¼w JÄB ÃC w ž@÷e>ø%Ä•t•B C ,.îD7‘2ô VªôVw „ÀBw .À�ÀeÎc ; PDP-11 DOS SYSTEM MACROS V003A ;COPYRIGHT 1972 DIGITAL EQUIPMENT CORPORATION ; ;  JUNE 1, 1972. dÎîr‰wO*䳯î‰fÎ �e P"Ð È û€‰‡üf&æ/*´¦f&~ ¶ €�‚ƒ„…‡æ˜À NŒ*,´ý†‘“UT ORYNT ELLPU; P LQUL,PPC R JS C ND.E UTKOOC LTYRIIOPRT SE; 7 L SP 5 14$1 Z FN.I C ND.E UTKOOC LTYRIIOPRT SE; SR#P,@CKLO#P VBMO 5 14$1 FZ.I . = 22OVGE S ESDRADR DEEA HONTITIAR PVESA; P)(S,-R4 V MO . NOK AS TVESA; P)(S,-R1 V MO R0 R AS LEAB TRTPA Q'STYRIIOPRS HI TOFS ESDRAD; 2 ,R0)(RTNARQP V MO X DEIND OR WTYRIIOPR; R0¬þ]10 ; ; DETERMINE IF CHECKPOINTABLE OVERLAY TASK AFFORDS ; ENOUGH MEMORY SPACE FOR HIGHER PRIORITY'S REQUEST ; R0 = REQUEST'S PRIORITY ; R1 = SEARCH ENTRY'S QPART ADDRESS ; R2 = REQUEST'S QPART ADDRESS ; R4 = SEARCH ENTRY'S PRIORITY ; QOVD50 = . MOV OVTSK(R2),R5 ; REQUEST'S ENTRY TASK NO. CLR R3 BISB BSIZE(R5),R3 ; NO. OF CORE BLOCKS NEEDED CLR R5 BISB^E OVERLAY TASK AFFORDS ; ENOUGH MEMORY SPACE FOR HIGHER PRIORITY'S REQUEST ; R0 = REQUEST'S PRIORITY ; R1 = SEARCH ENTRY'S QPART ADDRESS ; R2 = REQUEST'S QPART ADDRESS ; R4 = SEARCH ENTRY'S PRIORITY ; QOVD50 = . MOV OVTSK(R2),R5 ; REQUEST'S ENTRY TASK NO. CLR R3 BISB BSIZE(R5),R3 ; NO. OF CORE BLOCKS NEEDED CLR R5 BISB OVTSK(R1),R5 ; GET SEARCH ENTRY'S Tq†÷…÷�pÿ™÷�tÿ”7Špÿ7Štÿ÷‹tÿý€…w r÷‹µ pÿtÿpÿtÿtÿ3.¬tÿý€÷5pÿ÷‹pÿý€÷�gpÿ÷�btÿ…÷‹rCK EMT <^O6> .ENDM .MACRO .RLSE .LBLCK .MCALL .AMODE .AMODE .LBLCK EMT <^O7> .ENDM .MACRO .CLs@(ö �‘Ä‘ö €ÄB‰ *µŽ‡Ä¸Äm‡æÄÎå Ö-š‡6‰‡‰Àt*(µˆ7 ˆ‡‰Îe‡ð¥Àe ò#t 320 ;INTERRUPT VECTOR FOR T-O-D INTERRUPT TIMINT = TODINT+4 ;INTERRUPT VECTOR FOR INTERVAL T L AS S YE; 23OVGE I BM ? ELEV LTYRIIOPRC MINADY; ) R0B(TAPP TBTS T ARXP!FLCMS$T Z FN.I R HDT PRN II.PRK AS TUT-OLLROT SERE; 4)(RRIHP,PR0 VBMO G INITWAO T ; ; STUEEQ ROFT TAPST SERE; 4)(RWDRKHW,@77#1 C BI . = 20OVGE ; S ESDRADR DEEA HAMGRRO P =R4 ; S ESDRADY TRENT ARQPS K'AS T =R2 ; ERMBNUK AS T =R1 ; TYRIIOPR¨þa OVTSK(R1),R5 ; GET SEARCH ENTRY'S TASK NO. ASL R5 ; CALCULATE TASK # WORD INDEX .IFZ $KT11C MOV HEADER(R5),R5 ; GET TASK'S PROGRAM HEADER ADDRESS .ENDC .IFNZ $KT11C MOV HEADER(R5),-(SP); GET TASK'S PROGRAM HEADER PPA JSR PC,ADPPPA ; USE ASR 5&6 MOV (SP)+,R5 ; FOR PSVA .ENDC ; NOTE: HEADER MAY BE ZERO IF INT. CAME IN & CHECKPOINTED SEARCH ; bASK NO. ASL R5 ; CALCULATE TASK # WORD INDEX .IFZ $KT11C MOV HEADER(R5),R5 ; GET TASK'S PROGRAM HEADER ADDRESS .ENDC .IFNZ $KT11C MOV HEADER(R5),-(SP); GET TASK'S PROGRAM HEADER PPA JSR PC,ADPPPA ; USE ASR 5&6 MOV (SP)+,R5 ; FOR PSVA .ENDC ; NOTE: HEADER MAY BE ZERO IF INT. CAME IN & CHECKPOINTED SEARCH ; TASK. IF IT PASSES CORE SPACE TEST, IT WIL� .AMODE .LBLCK EMT <^O2> .ENDM .MACRO .OPENO .LBLCK,.FBLCK .MCALL .CODE,.OPEN .CODE .FBLCK,<^O2> .O‚n*¶Ä¬Äe 7!ª †­ #‚ô‡2-ðƒë*$¶7!š‚÷e ’׉À€Áe  ‚‰‡!…*H¶!!!!öƒE-OF-DAY INTERRUPT TIMBIT = 10 ;BIT TO ENABLE INTERVAL TIMER INTERRUPT STLBIT = 0 „. ­•{¯”(Ì2@çhëyHÁh$ß;}ˆJhö¯”�÷æK AS T =R0 ; T MPTEATT OUL-OL RAYRLVE ONGRIDUD REURCC OORRR ETERI WSCDI ; ; STUEEQ ROFN -ILLROT ARST; 00VBQO P JM SSREDD AERADHEN IOITRTPAE ATULLCCA; 4 ,ROBHN#P D AD EXND IRDWO; R1 L AS TYRIIOPRE ATULLCCA; 1 ,RR0 V MO ERADHE. RTPAM RO FTYRIIOPRS T'ESQURET GE; R0),R4I(PRPH VBMO S ESDRADY TRENT ARQPS T'ESQURET GE; 2 ,R4)(RWDRKHW V MO UTKOOC LTYRIIOPRT SERE; SR#P¤þeTASK. IF IT PASSES CORE SPACE TEST, IT WILL FAIL TEST AFTER ; LOCKOUT SET. THIS TECHNIQUE REDUCES LOCKOUT TIME CONSIDERABLY. MOV PHNOB(R5),R5 ; OVERLAY'S SB & NOB CMPB R3,R5 ; WILL REQUEST FIT? BGT QOVD30 ; NO, KEEP-A-SEARCHIN' SWAB R5 CMPB R5,ALPOOL(R0) ; START BLOCK COMPATABLE WITH ALPOOL DEF.? BLT QOVD30 ; NO, KEEP-A-SEARCHIN' .LOCK TSTB (R2) ; IS REQUESTfL FAIL TEST AFTER ; LOCKOUT SET. THIS TECHNIQUE REDUCES LOCKOUT TIME CONSIDERABLY. MOV PHNOB(R5),R5 ; OVERLAY'S SB & NOB CMPB R3,R5 ; WILL REQUEST FIT? BGT QOVD30 ; NO, KEEP-A-SEARCHIN' SWAB R5 CMPB R5,ALPOOL(R0) ; START BLOCK COMPATABLE WITH ALPOOL DEF.? BLT QOVD30 ; NO, KEEP-A-SEARCHIN' .LOCK TSTB (R2) ; IS REQUEST STILL WAITING? BEQ QOVD60 ‘Á(¿‰7 ÷ÎÀ0ºÁ¿%* ·‰À¿‰wXð÷Œj‰Ý€Áð¾‰À辉L*D·÷Àö& æð‡÷ˆæj‰É‰ ‰Äå÷L’$DTAPE = 1 ; DECTAPE OPTION ; NDISCS = 0 ; DISC OPTION AND NO. OF CONTROLLRERS ¦ TASK NO. 7 É öó&öæd ˆæ& æ æˆÖ æ˜ ˆñOó”•.N ZÿÀ Àe0w àþÀ,w Øþæ²÷¬À°w ®.t pþ· ÷ÊœÀÆ…ÀÀ÷ºŒÓÄýÿ C”Q.š Ã¥,@P)(S VBMO: 10OVGE D DEENSPSUUN ; ; L TIUNN -IEDLLROE B'TON WSO ; ; E BLTAKPCH& D ENSPSU. OL=VATST P1,T=TACS; 2)(RK,SCOL#V D AD S YE; 10OVGE Q BE N?IONSPEUS SRYTAUNOLNV IANT IIS; ) R2G(ARTR T TS CEVIER SOR FNGTIAI W =ATST PET-SNO; 2)(RP,OI#I B SU S YE; 20OVGE E BN ? URCC OORRR ESCDID DI; 4)(RWDRRHE T TS ; . UPD  þi STILL WAITING? BEQ QOVD60 ; YES QOVD55: JMP QOVB15 ; NO-FORGET ABOUT CHECKPOINTING QOVD60: MOVB (R1),R5 ; IS TASK STILL CHECKPOINTABLE? BLE QOVD05 ; NO-RESTART SEARCH CMPB R5,#VOLSCK BGT QOVD05 ; NO-RESTART SEARCH MOV OVTSK(R1),R5 ; ROLL-OUT TASK NO. TSTB IOSTAT(R5) ; TASK HAVE ANY I/O IN PROGRESS ? BNE QOVD55 ; YES-SORRY CHARLIE j ; YES QOVD55: JMP QOVB15 ; NO-FORGET ABOUT CHECKPOINTING QOVD60: MOVB (R1),R5 ; IS TASK STILL CHECKPOINTABLE? BLE QOVD05 ; NO-RESTART SEARCH CMPB R5,#VOLSCK BGT QOVD05 ; NO-RESTART SEARCH MOV OVTSK(R1),R5 ; ROLL-OUT TASK NO. TSTB IOSTAT(R5) ; TASK HAVE ANY I/O IN PROGRESS ? BNE QOVD55 ; YES-SORRY CHARLIE .IFZ CHKPTC ; ; DETERMINE IF T¡ ; FOR AUTHORIZATION CODES .ENDC ; .IFNZ NDISCS DRESDI = 1 ; DISC RESIDEN%¤r TASK NO. 8 0 Â' Âæ & æ æˆÖ æd ˆˆó£ODT-11R V003Aß B BE H –.H *;/\ $G _<^,OWEBP@>SRC-FI!XASPM�¤MACRO .WAITR .LBLCK,.ADDR .MCALL .AMODE .AMODE .ADDR .AMODE .LBLCK EMT <^O0> .ENDM .MACRO .BLOCK .LNEEACLT GEY LLCATIMATOAU ; L IL WIT- ET SISQ REDQ QIFT INPOS HI TAT: TENO ; ; S YE; 40OVGE Q BE ? EDSTUEEQ RENBET ORABS HA; RQRTAB,#2)(R PBCM C ND.E UTKOOC LTYRIIOPRT SE; 7 L SP 5 14$1 Z FN.I C ND.E UTKOOC LTYRIIOPRT SE; SR#P,@CKLO#P VBMO 5 14$1 FZ.I O.NF IRTPA QUT-OLLROF OSTRET GE; 0 R1QP,FPC R JS EXND IRDWO ; R1 L AS R œþm.IFZ CHKPTC ; ; DETERMINE IF TASK HAS EVER EXECUTED. IF NOT, NO NEED ; TO ROLL-OUT LOGIC WILL EXECUTE(QOVE10). OTHERWISE, WAIT ; FOR AVAILABLE CORE SPACE. ; ASL R5 ; COMPUTE WORD INDEX OF TASK NO. .IFZ $KT11C MOV HEADER(R5),R5 ; GET HEADER ADDRESS .ENDC .IFNZ $KT11C MOV HEADER(R5),-(SP) JSR PC,PPASV6 ; GET TASK HEADER MOV (SP)+,R5 ; SVA .EnASK HAS EVER EXECUTED. IF NOT, NO NEED ; TO ROLL-OUT LOGIC WILL EXECUTE(QOVE10). OTHERWISE, WAIT ; FOR AVAILABLE CORE SPACE. ; ASL R5 ; COMPUTE WORD INDEX OF TASK NO. .IFZ $KT11C MOV HEADER(R5),R5 ; GET HEADER ADDRESS .ENDC .IFNZ $KT11C MOV HEADER(R5),-(SP) JSR PC,PPASV6 ; GET TASK HEADER MOV (SP)+,R5 ; SVA .ENDC TST TSTACK(R5) ; TA%¤r TASK NO. 9 / Â'Âæ& æ & ˆÖ æd ˆˆàó²³ .AMODE .SARG .AMODE .LBLCK EMT <^O12> .ENDM .MACRO .STAT .LBLCK .MCALL .AMODE .AMODE .LBLCK EMT´l*Ô¹0?n–0¿æø¹=*º,«0zBEUM NSKTA; 1 ,R4)(RNOSKTA V MO =0R DEEA HLEAB TSKTAE USCABE ; 4 ,RR1 V MO C ND.E THWIK OR W ; R1+,P)(S V MO O TVAPST GE; T ARDP,APC R JS P)(S,-R1 V MO 1CT1$K Z FN.I R DEEA HAMGRRO POFS ESDRAD; 1 ,RSTOLHI#- D AD CKTA SONS TUTA SORSSCERO PVESA; ) SP-(R,PS@# V MO . = V TOGE ; ; 7 OM CTSE.C C PTHK!CLCMS$T Z FN.I E AG.P ; ˜þqNDC TST TSTACK(R5) ; TASK EVER EXECUTED? BEQ QOVE00 ; NO-EXECUTE ROLL-OUT LOGIC BR QOVD55 ; YES-WAIT FOR AVAILABLE CORE .ENDC ; .IFNZ $TMSLC!CHKPTC ; ; INITIATE ROLL-OUT OF AN OVERLAY TASK ; TASK TO BE ROLLED-OUT IS SUSPENDED EITHER VOL. OR INV. ; R0= PRIORITY OF TASK REQUESTING ROLL-OUT ; R1= QPART ENTRY ADDRESS OF ROLL-OUT TASK ; R2= QPART ENTRY ADDRESS rSK EVER EXECUTED? BEQ QOVE00 ; NO-EXECUTE ROLL-OUT LOGIC BR QOVD55 ; YES-WAIT FOR AVAILABLE CORE .ENDC ; .IFNZ $TMSLC!CHKPTC ; ; INITIATE ROLL-OUT OF AN OVERLAY TASK ; TASK TO BE ROLLED-OUT IS SUSPENDED EITHER VOL. OR INV. ; R0= PRIORITY OF TASK REQUESTING ROLL-OUT ; R1= QPART ENTRY ADDRESS OF ROLL-OUT TASK ; R2= QPART ENTRY ADDRESS OF REQUEST TASK ; R4= PRIO‡Ž‡²îôë€}³óÂ.ENDM .MACRO .RENAM .LBLCK,.OFB,.NFB .MCALL .AMODE .AMODE .NFB .AMODE .OFB .AMODE .LBLCK EMT <^O20> ÃT» LINK11.OVR ô ¼Ú<ༀÔ h½€Mî½ Ä .IFL NDPRT3-3 XXXXXXXX ; MUST BE AT LEAST THREE .ENDC MAXID3 = 500. T IDO; 25LARE BR -Q DERFT ANTCEESUI QUSATSTT SE; P)(S2. R CL . = 40LARE ; RNTURE; 10LARE BR T XI EAYRLVE ORMFOER-PITEX; T NXOV,QPC R JS . = 30LARE ; 15LARE BR WDK WRP POY-ELATRIOPPRAPS TUTA SSKTAT SE; ) R0T(TATS+,P)(S VBMO E AV SOT NESDOY ULQO D ; ; INGA AERUM NSKTAT GE; 0 ,RP)(S1CT1$K4*.+16 V MO T IUEUE-QDE; ”þuOF REQUEST TASK ; R4= PRIORITY OF ROLL-OUT TASK ; *INTERRUPTS MUST BE LOCKED-OUT AT THIS POINT* ; QOVE00 = . JSR PC,ROLSUP ; ROLL-OUT STATUS SET-UP MOVB (SP),@#PSR ; RESET PRIORITY LOCKOUT MOV R5,-(SP) ; SET IN STACK-R3 & R4 SET JSR PC,DQRPOM ; AND DE-QUEUE IT FROM ROS TST (SP)+ ; IGNORE ERROR INDICATOR ; ; SET TASK STATUS OF ROLL-OUT TASK VOLUNTARILY OR vRITY OF ROLL-OUT TASK ; *INTERRUPTS MUST BE LOCKED-OUT AT THIS POINT* ; QOVE00 = . JSR PC,ROLSUP ; ROLL-OUT STATUS SET-UP MOVB (SP),@#PSR ; RESET PRIORITY LOCKOUT MOV R5,-(SP) ; SET IN STACK-R3 & R4 SET JSR PC,DQRPOM ; AND DE-QUEUE IT FROM ROS TST (SP)+ ; IGNORE ERROR INDICATOR ; ; SET TASK STATUS OF ROLL-OUT TASK VOLUNTARILY OR INVOLUTARILY ; SUSPENDED. IF VOL. CÑLCK,.OP .MCALL .AMODE .AMODE .FBLCK .IIF NB,.OP,CLR -(SP) .AMODE .LBLCK EMT <^O14> .ENDM .MACRO .KEÒ ?LOAD MODULE EOM „ö¾ ÷ ¿ × ¿:ßÓORE RESIDENT FILE ID'S .ENDC .IFNZ DRESDI NCFILE = NDISCS+$SYSFL+40. ; NO. OF CORE RESIDENTÔˆˆh/R;Ì:v,ܟƈ÷ Â÷$-¶é÷€²éÁ€÷d&2éw0é9&÷$,éw*é÷zé÷Àvé÷XY VLQO,DPC R JS LYOVDQR FOS TUTA SSKTAT SE; ) R0T(TATSQ,REDQ#O VBMO: 25LARE LY6VDQR TEAFT TATSS HI TTOT SE; P)(S2.D,RTAB#T V MO S ESGRRO PINE ICRVSED-TEESQUREQ D-; 40LARE Q BE SSREOGPRN ICEVIER-SEDSTUEEQ RITEX; 30LARE T BG D?TEESQUREQ D-; Q REDQ,#R1 PBCM CKTA SONR BEUM NSKTAT PU; P)(S,-R0 V MO . = 20LARE ; ERLLCAO TRNTURE; PC S RT RNTURER FOC PUPT SE�þyINVOLUTARILY ; SUSPENDED. IF VOL. CANNOT BE QUEUED, ETC. MAY BE ABORTED ; OR UNSUSPENDED THOUGH. ; R0 = PRIORITY OF TASK REQUESTING ROLL-OUT ; R1 = QPART ENTRY ADDRESS OF ROLL-OUT TASK ; R2 = QPART ENTRY ADDRESS OF REQUEST TASK ; R3 = TASK HEADER ADDRESS OF ROLL-OUT TASK-PSVA ; R5 = TASK # OF ROLL-OUT TASK ; QOVE10: TST TSTACK(R3) ; HAS ROLL-OUT TASK EVER EXECUTED? BEQ QOVE30 ; NO-NO NEED TO ROLL-OUT THEN .LOCK zANNOT BE QUEUED, ETC. MAY BE ABORTED ; OR UNSUSPENDED THOUGH. ; R0 = PRIORITY OF TASK REQUESTING ROLL-OUT ; R1 = QPART ENTRY ADDRESS OF ROLL-OUT TASK ; R2 = QPART ENTRY ADDRESS OF REQUEST TASK ; R3 = TASK HEADER ADDRESS OF ROLL-OUT TASK-PSVA ; R5 = TASK # OF ROLL-OUT TASK ; QOVE10: TST TSTACK(R3) ; HAS ROLL-OUT TASK EVER EXECUTED? BEQ QOVE30 ; NO-NO NEED TO ROLL-OUT THEN .LOCK MOVB #VOLSUS,TSTAT(R5) áâ LOCATIONS IN CORE RESIDENT ; ; DIRECTORY .ENDC ERRPRT = 1 ãÀ57?, 89: ÷ à,Æ8Àâÿ¦Ä2Šørœ· ð·ê °ì¡ ä.""ø€¯”ö ; @«:<}@hf€p@I.�fSz@�fTz@[gÐ4@Tq€@9€a@Ï.€€(d; P)(S+,P)(S V MO RSTEISEG RRETOES R; R OP,PR5 R JS C ND.E &6 5SR A ; R5PA$K+,P)(S V MO E ORSTRE; R6PA$K+,P)(S V MO 1CT1$K Z FN.I . = 15LARE + P)(S T TS: 10LARE SSREOGPRN I/O ITHWI ; ; EDSTUEEQ RRTBO/A-Q/DITEX; 20LARE I BM S TUTA S'SSKTAT GE; R1),R0T(TATS VBMO K ACSTO NT ORDWOK OR WSHPU; ) SP-( T TS #SKTAŒþ} MOVB #VOLSUS,TSTAT(R5) ; SET VOL. SUSPEND TST TRARG(R1) ; IS IT? BNE QOVE20 ; YES INCB TSTAT(R5) ; NO-ADJUST QOVE20: MOVB (SP),@#PSR ; RESET PRIORITY LOCKOUT MOV R2,HWRKWD(R3) ; SET REQUEST'S QPART ENTRY ADDR IN WRKWD MOVB R0,PHPRI(R3) ; SAVE PRIORITY OF REQUESTING TASK ; ; NOTE: ROLL-OUT TASK'S PRIORITY ; ; IS STILL IN ~; SET VOL. SUSPEND TST TRARG(R1) ; IS IT? BNE QOVE20 ; YES INCB TSTAT(R5) ; NO-ADJUST QOVE20: MOVB (SP),@#PSR ; RESET PRIORITY LOCKOUT MOV R2,HWRKWD(R3) ; SET REQUEST'S QPART ENTRY ADDR IN WRKWD MOVB R0,PHPRI(R3) ; SAVE PRIORITY OF REQUESTING TASK ; ; NOTE: ROLL-OUT TASK'S PRIORITY ; ; IS STILL IN PROGRAM HEADER MOVB #3.,HIOFCNñOPTION $SGMNT = 1 ; SEGMENT LOAD OPTION $FTMAX = 10. ; LARGEST FILE TYPE IN SYSTEM òÁEñÿ@`$Wt·ˆÜ€€ € ÀEøV,n`v�€Ž‡¦÷ xÿ¶õ&f€&†,”À &Ö÷ ÿ€�ÁWtüÿÁEñÿ@`7ó.@(/6=ÿÿ·øÿŽw æêôæìôö((/ 6 = [gÐ4$êô(ìôÆ.f¦ÅâÿôV #^O100,-(SP) EMT <^O41> .ENDM .MACRO .MONR MOV #^O101,-(SP) EMT <^O41> .ENDM .MACRO .MONF MOT GE; 0 ,RP)(S1CT1$K4*.+14 V MO C ND.E 6 & 5 R AS P)(S,-R6PA$K V MO L NEER KVESA; P)(S,-R5PA$K V MO 1CT1$K Z FN.I RSTEISEG RVESA; HRUS,PR5 R JS . = SKLTRE ; 0 =ATSTION HE WESINUTROUB SCEVIER SEMSTSYY BEDLLCA ; ; ; ITEX; 25OVDQ BR TSESQUREF OERMBNUT ENEMCRDE; 0)(RQPEQNR CBDE RYNT ERTPA QIDVO; 2)(R R CL C ND.E T XI-Eˆþ�PROGRAM HEADER MOVB #3.,HIOFCN(R3) ; SET WRITE WITH WRITE DISC CHECK MOVB #3.,HIOEXT(R3) ; SET EXIT TYPE MOV #GETOV,HIOCMP(R3) ; SET I/O COMPLETE SUBROUTINE ADDRESS MOV R3,R4 ADD #HFLEID,R4 ; ADDRESS OF DATA BUFFER MOV R4,HDBADD(R3) .IFNZ $KT11C MOV R4,HDBAD1(R3) ADD #020000,HDBAD1(R3) ; ADJUST SO ASR6 IS BEING USED MOV $KPAR5,HDBAD2(R3) ; USE THIS IN ‚(R3) ; SET WRITE WITH WRITE DISC CHECK MOVB #3.,HIOEXT(R3) ; SET EXIT TYPE MOV #GETOV,HIOCMP(R3) ; SET I/O COMPLETE SUBROUTINE ADDRESS MOV R3,R4 ADD #HFLEID,R4 ; ADDRESS OF DATA BUFFER MOV R4,HDBADD(R3) .IFNZ $KT11C MOV R4,HDBAD1(R3) ADD #020000,HDBAD1(R3) ; ADJUST SO ASR6 IS BEING USED MOV $KPAR5,HDBAD2(R3) ; USE THIS IN ASR ; NOTE: ASSURRED OF (R4) USINGøÄ O,n÷xÛÚÿ&Ö÷ 4þ„7 ß50þÿ3ã£Õ,”Ö £´÷®ÿHÛ„Æ ßþÿæ¦f&Ú,ºæ*Ûe.Ørÿæ"ÿ÷ …7wÿ ÷ÿ¡7 ÿ¡7 ÿò �fSz .þŸ“þÿÄ@f&÷ C÷ JÌ ú÷• OV #^O105,-(SP) EMT <^O41> .ENDM .MACRO .SYSDV MOV #^O106,-(SP) EMT <^O41> .ENDM .MACRO .RADPK .�Ä÷ ìþÅ &ÅeÀ õI ÆË,2¶ÿ‡·°ÿW¥, !ôÀ÷ Æÿ1ˆÖ í‡Àý,.2ÁÂw(·€ÿW¥, !ÜNO; 25OVDQ L BP -TYRIIOPRC MINADY; ) R0B(TAPP TBTS T ARXP!FLCMS$T Z FN.I . = 50OVDQ SKTAM RO FITEXS-YE; X1XXQN P JM C ND.E A SV PDEEA H ; R4+,P)(S V MO SKTAT GE; A PPDP,APC R JS ) SP-(R4 V MO 1CT1$K Z FN.I T ENIDES RRECOT NO; 50OVDQ Q BE S ESDRADR DEEA HSKTAT GE; 4 ,R1)(RERADHE V MO X DEIND OR WSKTAE UTMPCO; „þ…ASR ; NOTE: ASSURRED OF (R4) USING $KPAR5 BECAUSE TASK HEADER ; ON 32 WORD BOUNDARY WHICH WILL MAKE SYSTEM VIRTUAL ADDRESS ; 140000, AND THE BUFFER ADDRESS IS BEHIND THE HEADER. .ENDC ADD #HIOLST,R3 ; CALCULATE ADDRESS OF DISC I/O LIST MOV R3,-(SP) ; TO STACK WITH IT JSR PC,CHKPIO ; ROLL IT OUT TST IOERRW(R3) ; DID REQUEST PROCESS ERROR OCCUR? BNE QOVE40 ; YES JMP † $KPAR5 BECAUSE TASK HEADER ; ON 32 WORD BOUNDARY WHICH WILL MAKE SYSTEM VIRTUAL ADDRESS ; 140000, AND THE BUFFER ADDRESS IS BEHIND THE HEADER. .ENDC ADD #HIOLST,R3 ; CALCULATE ADDRESS OF DISC I/O LIST MOV R3,-(SP) ; TO STACK WITH IT JSR PC,CHKPIO ; ROLL IT OUT TST IOERRW(R3) ; DID REQUEST PROCESS ERROR OCCUR? BNE QOVE40 ; YES JMP QOVB15 ; RETURN TO CALLER QO ND.E T ENEMATSTL NAIOITNDCOT RSFIR FOH TCMA; ND.E T ENEMATSTL NAIOITNDCOT RSFIR FOH TCMA; C ND.E ; OKK ACSTW NO; T1PRAD BR P)(S,-P)(S2. V MO SSREDD AALICYSPHD KEAC P ATHWIY TREN; . = PAPPAD ; RNTURE; PC S RT K 4NGDICERE PTOT SE; 5 ARKP,$00#2 ‰ QOVB15 ; RETURN TO CALLER QOVE30: CLRB (R1) ; RESET TO WAITING FOR SERVICE ADD #PHNOB,R3 ; PARTITION ADDRESS MOV R3,R4 ; TO R4 FOR QOVB00 MOV R0,R1 ; CALCULATE REQUEST'S ASL R1 ; PRIORITY WORD INDEX JMP QOVB00 ; ROLL-IN REQUESTING TASK ; ; ERROR OCCURRED DURING THE DISCIO REQUEST PROCESSING ; SOMETHING WRONG-CAN'T ROLL-OUT ; QOVE40ŠVE30: CLRB (R1) ; RESET TO WAITING FOR SERVICE ADD #PHNOB,R3 ; PARTITION ADDRESS MOV R3,R4 ; TO R4 FOR QOVB00 MOV R0,R1 ; CALCULATE REQUEST'S ASL R1 ; PRIORITY WORD INDEX JMP QOVB00 ; ROLL-IN REQUESTING TASK ; ; ERROR OCCURRED DURING THE DISCIO REQUEST PROCESSING ; SOMETHING WRONG-CAN'T ROLL-OUT ; QOVE40: MOV R5,R1 ; TASK NUMBER TO C ND.E ; OKK ACSTW NO; T1PRAD BR P)(S,-P)(S2. V MO SSREDD AALICYSPHD KEAC P ATHWIY TREN; . = PAPPAD ; RNTURE; PC S RT K 4NGDICERE PTOT SE; 5 ARKP,$00#2 B SU 5 ARKP,$R6PA$K V MO K ACSTN OCKBAT PU; P)(S2.+,P)(S V MO 6 SVO T ; 6 SVPA,PPC R JS: T1PRAD L CASIHY PEDCKPAT GE; PAVP,SPC R JS CELA PCKTA SCTREOR CTOA SVD OL; }þ B SU 5 ARKP,$R6PA$K V MO K ACSTN OCKBAT PU; P)(S2.+,P)(S V MO 6 SVO T ; 6 SVPA,PPC R JS: T1PRAD L CASIHY PEDCKPAT GE; PAVP,SPC R JS CELA PCKTA SCTREOR CTOA SVD OL; P)(S,-P)(S2. V MO . = RTPAAD ; A SV-PSSREDD AALTUIR VEMSTSYN IOITRTPAA ; S ATOD REEREF RISM ER TISTH. DEMAE BAY MESNCREFERE ; D ARKWAC BND ARDWAOR F4K, ERADHES K'AS THE TOFS ESDRAD ; ALTUIR VNE OTHWIT HA TCHSUD SE UISE |þ�: MOV R5,R1 ; TASK NUMBER TO R1 JSR PC,FQPRTN ; GET QPART INFO. OF ROLL-OUT TASK JMP GEOV20 ; DISCIO WRITE ERROR PROCESSING .ENDC ; .PAGE .CSECT OM2 ; ; ON SYSTEM STACK ; EXITING TASK HEADER HAS BEEN "CLEANED-UP" ; QOVNXT = . MOV 2.(SP),R1 ; GET EXITING TASK NUMBER MOV (SP)+,(SP) ; SET PC FOR PROPER RETURN MOVB @#PSR,-(SP) ; SAVE PROCEŽ R1 JSR PC,FQPRTN ; GET QPART INFO. OF ROLL-OUT TASK JMP GEOV20 ; DISCIO WRITE ERROR PROCESSING .ENDC ; .PAGE .CSECT OM2 ; ; ON SYSTEM STACK ; EXITING TASK HEADER HAS BEEN "CLEANED-UP" ; QOVNXT = . MOV 2.(SP),R1 ; GET EXITING TASK NUMBER MOV (SP)+,(SP) ; SET PC FOR PROPER RETURN MOVB @#PSR,-(SP) ; SAVE PROCESSOR STATUS JSR PC,FQPRTN P)(S,-P)(S2. V MO . = RTPAAD ; A SV-PSSREDD AALTUIR VEMSTSYN IOITRTPAA ; S ATOD REEREF RISM ER TISTH. DEMAE BAY MESNCREFERE ; D ARKWAC BND ARDWAOR F4K, ERADHES K'AS THE TOFS ESDRAD ; ALTUIR VNE OTHWIT HA TCHSUD SE UISE INUTROUB SISTH ; ; Y OREM MOF ; CKLO B4KG INEDECPRE THO TET SIS R5AS. 6SR A ; NGSI USSREDD AALTUIR VEMSTSYR DEEA HSKTAE THS IA6SVTH: TENO ; ; E OT NEE S; A6SVTH+,P)(S V MO yþINUTROUB SISTH ; ; Y OREM MOF ; CKLO B4KG INEDECPRE THO TET SIS R5AS. 6SR A ; NGSI USSREDD AALTUIR VEMSTSYR DEEA HSKTAE THS IA6SVTH: TENO ; ; E OT NEE S; A6SVTH+,P)(S V MO ; T ARDP,APC R JS ; DD AALTUIR VEMSTSYR DEEA HSKTA; ) SP-(A,SVTH V MO ; : CEENQUSEG INLLCA ; N.IOITRTPAA ; S ESDRADO TRSTEISEG RNTMEEG SUPT SEO TEDUSS IRTPAAD ; ; 1CT1xþ‘SSOR STATUS JSR PC,FQPRTN ; GET QPART ENTRY INFORMATION QNX000 = . .LOCK CLRB TSTAT(R1) ; SET TASK QUIESCENT QNXXXX: ASL R1 ; TASK WORD INDEX QNXXX1: CLR HEADER(R1) ; SET TASK NOT CORE RESIDENT IN TASK TBL .IFNZ $TMSLC!FXPART TSTB PPTAB(R0) ; DYNAMIC PRIORITY LEVEL? BPL QNXC00 ; NO- 'PULL' QPART TABLE .ENDC MOV PHNOB(R4),B3RR ; DE-ALLOCATE THE ’ ; GET QPART ENTRY INFORMATION QNX000 = . .LOCK CLRB TSTAT(R1) ; SET TASK QUIESCENT QNXXXX: ASL R1 ; TASK WORD INDEX QNXXX1: CLR HEADER(R1) ; SET TASK NOT CORE RESIDENT IN TASK TBL .IFNZ $TMSLC!FXPART TSTB PPTAB(R0) ; DYNAMIC PRIORITY LEVEL? BPL QNXC00 ; NO- 'PULL' QPART TABLE .ENDC MOV PHNOB(R4),B3RR ; DE-ALLOCATE THE TASK'S CORE SPACE BIS #DEALB ; T ARDP,APC R JS ; DD AALTUIR VEMSTSYR DEEA HSKTA; ) SP-(A,SVTH V MO ; : CEENQUSEG INLLCA ; N.IOITRTPAA ; S ESDRADO TRSTEISEG RNTMEEG SUPT SEO TEDUSS IRTPAAD ; ; 1CT1$K Z FN.I ; ; ; ET SC.C.H IT WRNTURE; PC S RT: 30S0QT NDOU FOR F 0 =OT NC.C.T SE; R2 T TS: 20S0QT E ATOGRRTEIND AN ; 10S0QT BR RYNT EXTNEO TMPBU; 2 ,R#6 uþ$K Z FN.I ; ; ; ET SC.C.H IT WRNTURE; PC S RT: 30S0QT NDOU FOR F 0 =OT NC.C.T SE; R2 T TS: 20S0QT E ATOGRRTEIND AN ; 10S0QT BR RYNT EXTNEO TMPBU; 2 ,R#6 D AD: 15S0QT OKS-YE; 20S0QT E BN E?IVCT ARYNT EIS; RQRTAB,#2)(R PBCM NO; 15S0QT E BN T? INDFI; 2)(RSKVT,OR1 P CM ) ET SDYEALR AC.C. (ORRR-EITT GO; 30S0QT Q BE ERRKMAL tþ•TASK'S CORE SPACE BIS #DEALB3,B3FR ; SET DE-ALLOCATION FUNCTION .IFZ $CORAL JSR PC,DALLOC .ENDC CLR (R2) ; VOID QPART ENTRY DECB NREQQP(R0) ; DECREMENT NO. REQUEST'S QUEUED QNXA00: MOV #2*USEC25,R2 ; 50 USEC DELAY D3: DEC R2 BNE D3 BIT #BSYB3,B3FR ; IS B3 STILL DE-ALLOCATING BNE QNXB40 ; YES, ERROR-HUNG UP QNXA05: MOVB (SP),@#PSR ; –3,B3FR ; SET DE-ALLOCATION FUNCTION .IFZ $CORAL JSR PC,DALLOC .ENDC CLR (R2) ; VOID QPART ENTRY DECB NREQQP(R0) ; DECREMENT NO. REQUEST'S QUEUED QNXA00: MOV #2*USEC25,R2 ; 50 USEC DELAY D3: DEC R2 BNE D3 BIT #BSYB3,B3FR ; IS B3 STILL DE-ALLOCATING BNE QNXB40 ; YES, ERROR-HUNG UP QNXA05: MOVB (SP),@#PSR ; RESTORE FROM LOCKOUT QNXA10: MOV #1., D AD: 15S0QT OKS-YE; 20S0QT E BN E?IVCT ARYNT EIS; RQRTAB,#2)(R PBCM NO; 15S0QT E BN T? INDFI; 2)(RSKVT,OR1 P CM ) ET SDYEALR AC.C. (ORRR-EITT GO; 30S0QT Q BE ERRKMAL AI TOR FSTTE; R5 C IN RYNT EANT GE; 5 ,R2)(R V MO: 10S0QT ) ET SDYEALR AC.C. (RNTURE- T ISEXT N'ESDO; 30S0QT Q BE S ESDRADT ARQPT GE; 2 ,R3)(RTNARQP V MO EXND IRDWOE ATqþAI TOR FSTTE; R5 C IN RYNT EANT GE; 5 ,R2)(R V MO: 10S0QT ) ET SDYEALR AC.C. (RNTURE- T ISEXT N'ESDO; 30S0QT Q BE S ESDRADT ARQPT GE; 2 ,R3)(RTNARQP V MO EXND IRDWOE ATULLCCA; R3 L AS TYRIIOPRT GE; 3 ,RR0 V MO . = CHSRQT ; R.TEISEG RRKWOA S IR5 ; Y.TREND IN F'TDNULCO, 0 =R2 ; F IT.XI EON2 RONT SEE BLLWIS DECON IOITNDCO ; EXND IRDWOY ITORRI P =R3 pþ™RESTORE FROM LOCKOUT QNXA10: MOV #1.,R0 ; SET UP SEARCH AT PRIORITY LEVEL 1 MOV #2.,R1 ; WORD INDEX FOR PRIORITY LEVEL 1 QNXA20: TSTB NREQQP(R0) ; ANYTHING IN THIS PRIORITY'S OVERLAY Q? BMI QNXA50 ; EMPTY-BUMP TO NEXT LEVEL MOV QPARTN(R1),R2 ; GET PRIORITY'S QPART TABLE ADDRESS TSTB PPTAB(R0) ; DYNAMIC PRIORITY LEVEL? BPL QNXA40 ; NO- TEST IF HEAD WAITING SERVICE QNXA30: MOV (RšR0 ; SET UP SEARCH AT PRIORITY LEVEL 1 MOV #2.,R1 ; WORD INDEX FOR PRIORITY LEVEL 1 QNXA20: TSTB NREQQP(R0) ; ANYTHING IN THIS PRIORITY'S OVERLAY Q? BMI QNXA50 ; EMPTY-BUMP TO NEXT LEVEL MOV QPARTN(R1),R2 ; GET PRIORITY'S QPART TABLE ADDRESS TSTB PPTAB(R0) ; DYNAMIC PRIORITY LEVEL? BPL QNXA40 ; NO- TEST IF HEAD WAITING SERVICE QNXA30: MOV (R2),R3 ; LOOK AT FIRST WORD OF CELLULLCCA; R3 L AS TYRIIOPRT GE; 3 ,RR0 V MO . = CHSRQT ; R.TEISEG RRKWOA S IR5 ; Y.TREND IN F'TDNULCO, 0 =R2 ; F IT.XI EON2 RONT SEE BLLWIS DECON IOITNDCO ; EXND IRDWOY ITORRI P =R3 ; RYNT ERTPA Q'SSKTAF OSSREDD A =R2 ; ERMBNUK AS T =R1 ; Y ITORRI P =R0 N:URET RONUP ; ERMBNUK AS T =R1 ; Y ITORRI P =R0 : RYNT EONUP mþ ; RYNT ERTPA Q'SSKTAF OSSREDD A =R2 ; ERMBNUK AS T =R1 ; Y ITORRI P =R0 N:URET RONUP ; ERMBNUK AS T =R1 ; Y ITORRI P =R0 : RYNT EONUP ; EDLLCAN HE WNTDESIREE OR CBET NOD EE NSKTA ; Y.TRENS K'AS TICIFECSPA R FO ; E BLTAT ARQPS Y'ITORRI PEDFICIPE S ACHARSEL IL WCHSRQT ; ; ; RNTURE; PC S RT TYRIIOPR; R0 R AS R BEUM NSKTA; lþ�2),R3 ; LOOK AT FIRST WORD OF CELL INC R3 BEQ QNXA50 ; END OF TABLE-BUMP TO NEXT LEVEL DEC R3 BEQ QNXA35 ; VOID ENTRY-BUMP TO NEXT BIC #177600,R3 ; ISOLATE PSTAT BEQ QNXB00 ; FOUND ENTRY WAITING SERVICE QNXA35: ADD #6.,R2 ; BUMP TO NEXT ENTRY IN QPART BR QNXA30 ; INTERROGATE IT QNXA40: MOV HEADQP(R2),R2 ; ADDRESS OF ENTRY AT HEAD TSž INC R3 BEQ QNXA50 ; END OF TABLE-BUMP TO NEXT LEVEL DEC R3 BEQ QNXA35 ; VOID ENTRY-BUMP TO NEXT BIC #177600,R3 ; ISOLATE PSTAT BEQ QNXB00 ; FOUND ENTRY WAITING SERVICE QNXA35: ADD #6.,R2 ; BUMP TO NEXT ENTRY IN QPART BR QNXA30 ; INTERROGATE IT QNXA40: MOV HEADQP(R2),R2 ; ADDRESS OF ENTRY AT HEAD TSTB (R2) ; LOOK AT CSTAT & PS; EDLLCAN HE WNTDESIREE OR CBET NOD EE NSKTA ; Y.TRENS K'AS TICIFECSPA R FO ; E BLTAT ARQPS Y'ITORRI PEDFICIPE S ACHARSEL IL WCHSRQT ; ; ; RNTURE; PC S RT TYRIIOPR; R0 R AS R BEUM NSKTA; R1 R AS ERSTGIRES ESDRADY TRENN ILTSURE; 2 ,R0)(RTNARQP D AD ERADHEN IOITRTPAM RO FRTPAIQT GE; 2 ,R4)(RRTQPHI SBBI R2 R CL X DEIND OR WTYRIIOPR; R0 L AS iþ R1 R AS ERSTGIRES ESDRADY TRENN ILTSURE; 2 ,R0)(RTNARQP D AD ERADHEN IOITRTPAM RO FRTPAIQT GE; 2 ,R4)(RRTQPHI SBBI R2 R CL X DEIND OR WTYRIIOPR; R0 L AS Y ITORRI P'SSKTA; 0 ,R4)(RORRIHP VBMO: 10PRFQ C ND.E R4+,P)(S V MO A SV PERADHE ; A PPDP,APC R JS SKTAT GE; P)(S,-1)(RERADHE V MO 1CT1$K Z FN.I C ND.E S ESDRADR DEEA HSKTA; 4 ,R1)(RERhþ¡TB (R2) ; LOOK AT CSTAT & PSTAT BEQ QNXB10 ; MUST BOTH BE ZERO TO NEED ALLOCATION QNXA50: INC R0 ; BUMP TO NEXT PRIORITY LEVEL TST (R1)+ ; BUMP PRIORITY WORD INDEX CMP R0,#NPRIOR ; SEARCHED ALL LEVELS? BLE QNXA20 ; NO QNXA60: JMP QOVB20 ; YES-Q'S EMPTY, EXIT FROM RPOM ; ; FOUND ENTRY WAITING ALLOCATION REQUEST ; R0 = PRIORITY ; R1 = P¢TAT BEQ QNXB10 ; MUST BOTH BE ZERO TO NEED ALLOCATION QNXA50: INC R0 ; BUMP TO NEXT PRIORITY LEVEL TST (R1)+ ; BUMP PRIORITY WORD INDEX CMP R0,#NPRIOR ; SEARCHED ALL LEVELS? BLE QNXA20 ; NO QNXA60: JMP QOVB20 ; YES-Q'S EMPTY, EXIT FROM RPOM ; ; FOUND ENTRY WAITING ALLOCATION REQUEST ; R0 = PRIORITY ; R1 = PRIORITY WORD INDEX ; R2 = Q Y ITORRI P'SSKTA; 0 ,R4)(RORRIHP VBMO: 10PRFQ C ND.E R4+,P)(S V MO A SV PERADHE ; A PPDP,APC R JS SKTAT GE; P)(S,-1)(RERADHE V MO 1CT1$K Z FN.I C ND.E S ESDRADR DEEA HSKTA; 4 ,R1)(RERADHE V MO 1CT1$K FZ.I X DEIND OR WO. NSKTAE UTMPCO; R1 L AS . = TNPRFQ ; D OAGL SOMFRD LEAL CSOAL ; A SV-PERADHEM RAOGPRF OSSREDD=AR4 ; Y TRENT ARQPS K'AS TOFeþADHE V MO 1CT1$K FZ.I X DEIND OR WO. NSKTAE UTMPCO; R1 L AS . = TNPRFQ ; D OAGL SOMFRD LEAL CSOAL ; A SV-PERADHEM RAOGPRF OSSREDD=AR4 ; Y TRENT ARQPS K'AS TOFS ESDRAD= R2 ; ERMBNUK AS=TR1 ; TYRIIOPRS K'AS=TR0 ; N:URET RONUP ; ERMBNUK AS=TR1 ; D LEAL CENWHT ENIDES RRECOK AS T ; ONTIMAORNF IRYNT ERTPA QTEIAPRROPP AHE TNDFIL IL WTNPRFQ ; ; ; dþ¥RIORITY WORD INDEX ; R2 = QPART ENTRY ADDRESS ; QNXB00 = . ; DYNAMIC PRIORITY ENTRY .LOCK MOV (R2),R3 ; ENTRY STILL WAITING SERVICE? BEQ QNXA05 ; VOID-START SEARCH AGAIN BIC #177600,R3 ; ISOLATE BEQ QNXB20 ; YES BR QNXA05 ; START SEARCH AGAIN QNXB10 = . ; FIXED OR TIME-SLICE ENTRY .LOCK MOVB (R2),R3 ¦PART ENTRY ADDRESS ; QNXB00 = . ; DYNAMIC PRIORITY ENTRY .LOCK MOV (R2),R3 ; ENTRY STILL WAITING SERVICE? BEQ QNXA05 ; VOID-START SEARCH AGAIN BIC #177600,R3 ; ISOLATE BEQ QNXB20 ; YES BR QNXA05 ; START SEARCH AGAIN QNXB10 = . ; FIXED OR TIME-SLICE ENTRY .LOCK MOVB (R2),R3 ; ENTRY STILL NOT CKPTED & WAITING S ESDRAD= R2 ; ERMBNUK AS=TR1 ; TYRIIOPRS K'AS=TR0 ; N:URET RONUP ; ERMBNUK AS=TR1 ; D LEAL CENWHT ENIDES RRECOK AS T ; ONTIMAORNF IRYNT ERTPA QTEIAPRROPP AHE TNDFIL IL WTNPRFQ ; ; ; RNTURE; PC S RT R BEUM NSKTAO TCKBA; R5 R AS T ENIDES RRECOT NOT SE; 5)(RERADHE R CL C ND.E R3+,P)(S V MO VAPST GE; A PPDP,APC R JS aþ RNTURE; PC S RT R BEUM NSKTAO TCKBA; R5 R AS T ENIDES RRECOT NOT SE; 5)(RERADHE R CL C ND.E R3+,P)(S V MO VAPST GE; A PPDP,APC R JS P)(S,-5)(RERADHE V MO 1CT1$K Z FN.I C ND.E R DEEA H'SSKTAT OUL-OL ROFS ESDRAD; 3 ,R5)(RERADHE V MO 1CT1$K FZ.I EXND IRDWOR BEUM NSKTA; R5 L AS K AS TUT-OLLRON ONGKIOR WOMRPT SE; `þ© ; ENTRY STILL NOT CKPTED & WAITING BNE QNXA05 ; NO-START SEARCH AGAIN QNXB20: MOV OVTSK(R2),R3 ; GET OVERLAY TASK NUMBER WAITING JSR PC,FB3ADD ; FIND B3 ADDRESS FOR SEARCH MOV R3,B3RR ; SET ALLOCATION REQUEST ADDRESS BIS #SRCHB3,B3FR ; START SEARCH .IFZ $CORAL JSR PC,SEARCH .ENDC MOV #2*USEC25,R3 D4: DEC R3 ; DELAY 50 USEC BNE D4 ª BNE QNXA05 ; NO-START SEARCH AGAIN QNXB20: MOV OVTSK(R2),R3 ; GET OVERLAY TASK NUMBER WAITING JSR PC,FB3ADD ; FIND B3 ADDRESS FOR SEARCH MOV R3,B3RR ; SET ALLOCATION REQUEST ADDRESS BIS #SRCHB3,B3FR ; START SEARCH .IFZ $CORAL JSR PC,SEARCH .ENDC MOV #2*USEC25,R3 D4: DEC R3 ; DELAY 50 USEC BNE D4 BIT #BSYB3,B3FR ; SHOULDN'T P)(S,-5)(RERADHE V MO 1CT1$K Z FN.I C ND.E R DEEA H'SSKTAT OUL-OL ROFS ESDRAD; 3 ,R5)(RERADHE V MO 1CT1$K FZ.I EXND IRDWOR BEUM NSKTA; R5 L AS K AS TUT-OLLRON ONGKIOR WOMRPT SE; ) R5T(TATST,ACVY#O VBMO SKTAT OUL-OL ROFR BEUM NSKTA; R5),R1K(TSOV V MO SKTAN -ILLROR FOS ESGRRO PINO I/T SE; 2)(RP,OI#I SBBI T ESQUREF OATST CVESA; ) R2,(77#1 CBBI K AS TUT-O]þ ) R5T(TATST,ACVY#O VBMO SKTAT OUL-OL ROFR BEUM NSKTA; R5),R1K(TSOV V MO SKTAN -ILLROR FOS ESGRRO PINO I/T SE; 2)(RP,OI#I SBBI T ESQUREF OATST CVESA; ) R2,(77#1 CBBI K AS TUT-OLLRO ; ; OR FIPIO= T TAPS& 1 = T TACST SE; 1)(RP,OI!I00#2 VBMO . = UPLSRO ; K AS TUT-OLLROF OERMBNUK AS T =R5 ; VAPSK-AS TUT-OLLROF OSSREDD AERADHEK AS T =R3 ; R2D AN1 RTHWI\þ­ BIT #BSYB3,B3FR ; SHOULDN'T BE BUSY BNE QNXB40 ; ERROR-HUNG UP BIT #SERRB3,B3FR ; BSIZE BLOCKS AVAILABLE? BEQ QNXB30 ; YES MOVB (SP),@#PSR ; NOT ENOUGH CORE SPACE, LOOK FOR TSTB PPTAB(R0) ; ANOTHER TASK BMI QNXA35 ; DYNAMIC BR QNXA50 ; TIME-SLICED OR FIXED QNXB30: JMP QOVA47 ; ; ; ERROR-B3 BOX HUNG-UP ; EVENTUALLY HAVE ®BE BUSY BNE QNXB40 ; ERROR-HUNG UP BIT #SERRB3,B3FR ; BSIZE BLOCKS AVAILABLE? BEQ QNXB30 ; YES MOVB (SP),@#PSR ; NOT ENOUGH CORE SPACE, LOOK FOR TSTB PPTAB(R0) ; ANOTHER TASK BMI QNXA35 ; DYNAMIC BR QNXA50 ; TIME-SLICED OR FIXED QNXB30: JMP QOVA47 ; ; ; ERROR-B3 BOX HUNG-UP ; EVENTUALLY HAVE SOFTWARE RECOVERY ; ; QNXB40: HALT LLRO ; ; OR FIPIO= T TAPS& 1 = T TACST SE; 1)(RP,OI!I00#2 VBMO . = UPLSRO ; K AS TUT-OLLROF OERMBNUK AS T =R5 ; VAPSK-AS TUT-OLLROF OSSREDD AERADHEK AS T =R3 ; R2D AN1 RTHWIG ONALN URET RONUP: TENO ; ) STUEEQ(RSKTAN -ILLROF OSSREDD ARYNT ERTPA Q =R2 ; K AS TUT-OLLROF OSSREDD ARYNT ERTPA Q =R1 ; H:IT WUTKOOC LERND UEDLLCAE BSTMUE INUTROUB SISTH ; IPIO= T TAPS YþG ONALN URET RONUP: TENO ; ) STUEEQ(RSKTAN -ILLROF OSSREDD ARYNT ERTPA Q =R2 ; K AS TUT-OLLROF OSSREDD ARYNT ERTPA Q =R1 ; H:IT WUTKOOC LERND UEDLLCAE BSTMUE INUTROUB SISTH ; IPIO= T TAPS : SKTAN -ILLRO ; 0 = S ESDRADR DEEA HLEAB TSKTA ; CTYAOV= T TATS ; IPIO= T TAPS& 1 = T TACS K:AS TUT-OLLRO ; S.SKTAN -ILLROD AN ; UT-OLLROE THF OS'TUTA SSKTA SHE TESAREPPRP Xþ±SOFTWARE RECOVERY ; ; QNXB40: HALT ; ANOTHER REAL-TIME ERROR HANDLER******* ; .IFNZ $TMSLC!FXPART ; ; PULL ENTRY OUT OF QPART ; QNXC00 = . MOV R0,R1 ; CALCULATE PRIORITY ASL R1 ; WORD INDEX QNXC10: MOV QPARTN(R1),R2 ; GET ADDRESS OF QPART QUEUE JSR PC,PULLQP ; PULL HEAD ENTRY OUT OF QUEUE BMI QNXC20 ; EMPTIED QPART MOV PRTADD(R2)² ; ANOTHER REAL-TIME ERROR HANDLER******* ; .IFNZ $TMSLC!FXPART ; ; PULL ENTRY OUT OF QPART ; QNXC00 = . MOV R0,R1 ; CALCULATE PRIORITY ASL R1 ; WORD INDEX QNXC10: MOV QPARTN(R1),R2 ; GET ADDRESS OF QPART QUEUE JSR PC,PULLQP ; PULL HEAD ENTRY OUT OF QUEUE BMI QNXC20 ; EMPTIED QPART MOV PRTADD(R2),R4 ; GET ADDRESS OF PARTITION : SKTAN -ILLRO ; 0 = S ESDRADR DEEA HLEAB TSKTA ; CTYAOV= T TATS ; IPIO= T TAPS& 1 = T TACS K:AS TUT-OLLRO ; S.SKTAN -ILLROD AN ; UT-OLLROE THF OS'TUTA SSKTA SHE TESAREPPRP UET SUT-OLLRO ; ; C ND.E ; ET SESOD CONTIDION CTHWIN URET RND A; PC S RT S STUEEQ ROF# T ENEMCRDE; 0)(RQPEQNR CBDE S ESDRADH US PXTNET SE; ) R2D(LAUL,PR1 V MO: 10LQPL E EUUþ UET SUT-OLLRO ; ; C ND.E ; ET SESOD CONTIDION CTHWIN URET RND A; PC S RT S STUEEQ ROF# T ENEMCRDE; 0)(RQPEQNR CBDE S ESDRADH US PXTNET SE; ) R2D(LAUL,PR1 V MO: 10LQPL E EUQUF OOP TTOT SERE- D DI; 1 ,R2)(RUEFQTO V MO 'TDNDI; 10LQPL T BL NDOUARP RA WOR FSTTE; ) R2E(QUOF,BR1 P CM D OR WRDHI TND A ; R5+,1)(R V MO D OR WNDCOSE ; R4+,1)(R V MO Tþµ,R4 ; GET ADDRESS OF PARTITION MOV HEADQP(R2),R2 ; QPART ENTRY ADDRESS CURRENTLY AT HEAD CMPB (R2),#ABRTRQ ; ABORT REQUESTED? BEQ QNXC10 ; YES- PULL OUT OF QUEUE BISB #IOIP,(R2) ; SET I/O IN PROGRESS IN PSTAT ; NOTE: PSTAT MUST BE WAITING FOR SERVICE AT THIS POINT ; IF $TMSLC!FXPART .IFNZ $KT11C MOV R4,-(SP) ; GET JSR PC,PPASV5 ; SVA OF MOV (SP)+,¶MOV HEADQP(R2),R2 ; QPART ENTRY ADDRESS CURRENTLY AT HEAD CMPB (R2),#ABRTRQ ; ABORT REQUESTED? BEQ QNXC10 ; YES- PULL OUT OF QUEUE BISB #IOIP,(R2) ; SET I/O IN PROGRESS IN PSTAT ; NOTE: PSTAT MUST BE WAITING FOR SERVICE AT THIS POINT ; IF $TMSLC!FXPART .IFNZ $KT11C MOV R4,-(SP) ; GET JSR PC,PPASV5 ; SVA OF MOV (SP)+,R4 ; PARTITION .ENDQUF OOP TTOT SERE- D DI; 1 ,R2)(RUEFQTO V MO 'TDNDI; 10LQPL T BL NDOUARP RA WOR FSTTE; ) R2E(QUOF,BR1 P CM D OR WRDHI TND A ; R5+,1)(R V MO D OR WNDCOSE ; R4+,1)(R V MO L EL CIDVOD AN ; + 1)(R R CL RDWOT RSFIT GE; 3 ,R1)(R V MO SSREDD ALLPUT GE; 1 ,R2)(RADLLPU V MO . = QPLLPU ; . UEUE QTYMP EANG INLLPUT NOS MESUAS ; T.XI EONUPQþ L EL CIDVOD AN ; + 1)(R R CL RDWOT RSFIT GE; 3 ,R1)(R V MO SSREDD ALLPUT GE; 1 ,R2)(RADLLPU V MO . = QPLLPU ; . UEUE QTYMP EANG INLLPUT NOS MESUAS ; T.XI EONUPP QQRE NONT SES DECON IOITNDCO ; D VESAT NO- R TEISEG RRKWOA S AR1S SE UNETIOUBRSU ; T ENUMRG AEDTTMINSRA T =R5 ; O KNAS T =R4 ; ATST&P C =R3 N:URET RONUP ; SSREDD ARTPA Q =R2 Pþ¹R4 ; PARTITION .ENDC MOVB (SP),@#PSR ; RESET PRIORITY LOCKOUT MOV R0,R1 ASL R1 ; PRIORITY WORD INDEX JMP QOVB00 ; ROLL-IN NEXT REQUEST QNXC20: CMP #1.,TIMMOD(R2) ; TIMER MODULE THREADED? BNE QNXC25 ; NO MOV R2,-(SP) ; YES-MUST BE ABORTING ADD #TIMMOD,(SP) ; ADDRESS OF TIMER MODULE THREAD WORD JSR PC,DQTIME ; DE-QUEUE IT ºC MOVB (SP),@#PSR ; RESET PRIORITY LOCKOUT JMP QOVB00 ; ROLL-IN NEXT REQUEST QNXC20: CMP #1.,TIMMOD(R2) ; TIMER MODULE THREADED? BNE QNXC25 ; NO MOV R2,-(SP) ; YES-MUST BE ABORTING ADD #TIMMOD,(SP) ; ADDRESS OF TIMER MODULE THREAD WORD JSR PC,DQTIME ; DE-QUEUE IT TST (SP)+ ; IGNORE ERROR QNXC25: TSTB ALLOSW(R2) ; WAS ALLOCATION SWITCH SET BEP QQRE NONT SES DECON IOITNDCO ; D VESAT NO- R TEISEG RRKWOA S AR1S SE UNETIOUBRSU ; T ENUMRG AEDTTMINSRA T =R5 ; O KNAS T =R4 ; ATST&P C =R3 N:URET RONUP ; SSREDD ARTPA Q =R2 ; C MINADYE BOT NSTMUY-ITORRI PRTPA Q =R0 ; T SEE BSTMUT OUK-OC LTYRIIOPR : RYNT EONUP ; L.EL CDSOI VND AUEUE QLEAB TRTPA Q'STYRIIOPRD XEFI ; R OEDICSLE-IM T AOFT OUY TRENN AL'UL'PL IL WQPLLPU Mþ; C MINADYE BOT NSTMUY-ITORRI PRTPA Q =R0 ; T SEE BSTMUT OUK-OC LTYRIIOPR : RYNT EONUP ; L.EL CDSOI VND AUEUE QLEAB TRTPA Q'STYRIIOPRD XEFI ; R OEDICSLE-IM T AOFT OUY TRENN AL'UL'PL IL WQPLLPU ; ; ; RNTURE; PC S RT S DECO. NDCOP UM BND ATSESQUREF OO. NMPBU; 0)(RQPEQNR CBIN DEMAT US JRYNT EOFS ESDRAD; R1+,P)(S V MO S ESDRADH US PXTNET SE; ) R2D(HAUS,PR1 V MO: 10HQPS E EUQUF OOP TTOLþ½ TST (SP)+ ; IGNORE ERROR QNXC25: TSTB ALLOSW(R2) ; WAS ALLOCATION SWITCH SET BEQ QNXA60 ; NO-EXIT FROM RPOM .IFZ $KT11C MOV @PRTADD(R2),B3RR ; DEALLOCATE PARTITION'S CORE SPACE .ENDC .IFNZ $KT11C MOV PRTADD(R2),-(SP) JSR PC,PPASV5 MOV @(SP)+,B3RR ; DE-ALLOCATE PART. MEMORY SPACE .ENDC BIS #DEALB3,B3FR ; START DE-ALLOCATION ¾Q QNXA60 ; NO-EXIT FROM RPOM .IFZ $KT11C MOV @PRTADD(R2),B3RR ; DEALLOCATE PARTITION'S CORE SPACE .ENDC .IFNZ $KT11C MOV PRTADD(R2),-(SP) JSR PC,PPASV5 MOV @(SP)+,B3RR ; DE-ALLOCATE PART. MEMORY SPACE .ENDC BIS #DEALB3,B3FR ; START DE-ALLOCATION .IFZ $CORAL JSR PC,DALLOC .ENDC CLRB ALLOSW(R2) ; RESET ALLOCATION SWITC; ; ; RNTURE; PC S RT S DECO. NDCOP UM BND ATSESQUREF OO. NMPBU; 0)(RQPEQNR CBIN DEMAT US JRYNT EOFS ESDRAD; R1+,P)(S V MO S ESDRADH US PXTNET SE; ) R2D(HAUS,PR1 V MO: 10HQPS E EUQUF OOP TTOT SERED-DI; 1 ,R2)(RUEFQTO V MO 'TDNDI; 10HQPS T BL NDOUARP RA WOR FSTTE; ) R2E(QUOF,BR1 P CM LLCEF ORDWOD IRTHD AN ; )+R1,(R5 V MO NDCOSE ; )+R1IþT SERED-DI; 1 ,R2)(RUEFQTO V MO 'TDNDI; 10HQPS T BL NDOUARP RA WOR FSTTE; ) R2E(QUOF,BR1 P CM LLCEF ORDWOD IRTHD AN ; )+R1,(R5 V MO NDCOSE ; )+R1,(R4 V MO T RSFIT SE; )+R1,(R3 V MO K ACSTN OVESA; P)(S,-R1 V MO SSREDD ASHPUT GE; 1 ,R2)(RADSHPU V MO . = QPSHPU ; . LLFUT NOE EUQUS MESUAS ; T XI EONUPP QQRE NONT SES DECON IOITNDCOHþÁ .IFZ $CORAL JSR PC,DALLOC .ENDC CLRB ALLOSW(R2) ; RESET ALLOCATION SWITCH CLR PRTADD(R2) ; AND PARTITION ADDRESS = 0 JMP QNXA00 ; CHECK FOR WAITING REQUESTS .ENDC ; .PAGE .IFNZ $TMSLC .CSECT OM3 ; ; TASK HAS BEEN INVOLUNTARILY SUSPENDED ; **** ????? ; TSOVLY = . MOVB @#PSR,-(SP) ; SAVE PROCESSOR STATUS ON STACK ÂH CLR PRTADD(R2) ; AND PARTITION ADDRESS = 0 JMP QNXA00 ; CHECK FOR WAITING REQUESTS .ENDC ; .PAGE .IFNZ $TMSLC .CSECT OM3 ; ; TASK HAS BEEN INVOLUNTARILY SUSPENDED ; **** ????? ; TSOVLY = . MOVB @#PSR,-(SP) ; SAVE PROCESSOR STATUS ON STACK MOV $CTASK,R1 ; GET TASK NO. TO TIME-SLICE JSR PC,FQPRTN ; FIND QPART ENTRY INFORMATION ,(R4 V MO T RSFIT SE; )+R1,(R3 V MO K ACSTN OVESA; P)(S,-R1 V MO SSREDD ASHPUT GE; 1 ,R2)(RADSHPU V MO . = QPSHPU ; . LLFUT NOE EUQUS MESUAS ; T XI EONUPP QQRE NONT SES DECON IOITNDCO ; DEMAT US JSSREDD ARYNT ERTPA Q =R1 ; D VEERESPRS ERSTGIREE OVAB N:URET RONUP ; T ENUMRG AEDTTMINSRA T =R5 ; O KNAS=TR4 ; T TAPSD ANC = R3 Eþ ; DEMAT US JSSREDD ARYNT ERTPA Q =R1 ; D VEERESPRS ERSTGIREE OVAB N:URET RONUP ; T ENUMRG AEDTTMINSRA T =R5 ; O KNAS=TR4 ; T TAPSD ANC = R3 ; SSREDD ARTPA=QR2 ; C MINADYE BOT NSTMUY-ITORRI PRTPA=QR0 ; ET SBET US MUT-OCKLOY ITORRI P : RYNT EONUP ; . UEUE QLEAB TRTPA Q'STYRIIOPRD XEFI ; R OEDICSLE-IM T ATOINY TRENN AH'US'PL IL WQPSHPU DþÅ MOV $CTASK,R1 ; GET TASK NO. TO TIME-SLICE JSR PC,FQPRTN ; FIND QPART ENTRY INFORMATION MOV MAXT(R4),CTIMER(R4) ; RESTORE TIME-SLICE VALUE ; ; NOTE******THIS WILL EVENTUALLLY BE ; * DONE BY TIMER********* TSTB NREQQP(R0) ; ONLY ENTRY ACTIVE IN IT'S QPART BEQ TSOA30 ; YES MOVB (R2),R3 ; GET PSTAT DEC R3 Æ MOV MAXT(R4),CTIMER(R4) ; RESTORE TIME-SLICE VALUE ; ; NOTE******THIS WILL EVENTUALLLY BE ; * DONE BY TIMER********* TSTB NREQQP(R0) ; ONLY ENTRY ACTIVE IN IT'S QPART BEQ TSOA30 ; YES MOVB (R2),R3 ; GET PSTAT DEC R3 ; PSTAT=PARTCK, I.E. CHECKPOINTABLE? BNE TSOA30 ; NO ASL R0 ; ; SSREDD ARTPA=QR2 ; C MINADYE BOT NSTMUY-ITORRI PRTPA=QR0 ; ET SBET US MUT-OCKLOY ITORRI P : RYNT EONUP ; . UEUE QLEAB TRTPA Q'STYRIIOPRD XEFI ; R OEDICSLE-IM T ATOINY TRENN AH'US'PL IL WQPSHPU ; ; T ARXP!FLCMS$T Z FN.I ; PC S RT E INMBCO; 3 ,RR5 D AD 1 E YT BINE ATOLIS; R3 RBCL R3 ABSW K OCBLT ARSTT GE; 3 ,R0)(ROLPOAL VBMO S CKAþ ; ; T ARXP!FLCMS$T Z FN.I ; PC S RT E INMBCO; 3 ,RR5 D AD 1 E YT BINE ATOLIS; R3 RBCL R3 ABSW K OCBLT ARSTT GE; 3 ,R0)(ROLPOAL VBMO S CKLO BOF. NOT GE; R5),R3E(IZBS SBBI R5 R CL . = DD3AFB ERSTGIREK OR W =R5 ; SB1=E YT,BOB N =E0YT BS.ESDRAD3 B =R3 ; N:URET RONUP ; . NOK AS T =R3 ; TYRIIOPR =R0 ; @þÉ ; PSTAT=PARTCK, I.E. CHECKPOINTABLE? BNE TSOA30 ; NO ASL R0 ; PRIORITY WORD INDEX MOV QPARTN(R0),R2 ; GET QPART TABLE ADDRESS ASR R0 .LOCK JSR PC,PULLQP ; 'PULL' ENTRY FROM HEAD JSR PC,PUSHQP ; AND 'PUSH' INTO TAIL MOV R1,-(SP) ; SAVE ADDRESS OF ENTRY TSOA10: MOV HEADQP(R2),R3 CMPB (R3),#ABRTRQ ; ABORT REQUESTED ON ENTRY? ÊPRIORITY WORD INDEX MOV QPARTN(R0),R2 ; GET QPART TABLE ADDRESS ASR R0 .LOCK JSR PC,PULLQP ; 'PULL' ENTRY FROM HEAD JSR PC,PUSHQP ; AND 'PUSH' INTO TAIL MOV R1,-(SP) ; SAVE ADDRESS OF ENTRY TSOA10: MOV HEADQP(R2),R3 CMPB (R3),#ABRTRQ ; ABORT REQUESTED ON ENTRY? BEQ TSOA20 ; YES MOV OVTSK(R3),R3 ; TASK NO. CMPB TSTAT(R3),#ODQREQ LO BOF. NOT GE; R5),R3E(IZBS SBBI R5 R CL . = DD3AFB ERSTGIREK OR W =R5 ; SB1=E YT,BOB N =E0YT BS.ESDRAD3 B =R3 ; N:URET RONUP ; . NOK AS T =R3 ; TYRIIOPR =R0 ; 3. BTO ; T ESQURER FOK AS T AOFS ESDRAD3 BNDFIL IL WDD3AFB ; ; **********************************************************************;* * ;* * =þ3. BTO ; T ESQURER FOK AS T AOFS ESDRAD3 BNDFIL IL WDD3AFB ; ; **********************************************************************;* * ;* * ESINUTROUB STYLITI UOMRP ;* * ;* **********************************************************************;* 10OM CTSE.C E AG.P ; C ND.E K <þÍ BEQ TSOA20 ; YES MOV OVTSK(R3),R3 ; TASK NO. CMPB TSTAT(R3),#ODQREQ ; WILL ABORT BE REQUESTED? BNE TSOA25 ; NO JSR PC,PULLQP JSR PC,PUSHQP ; PUT IT AT TAIL BR TSOA10 TSOA25: MOV (SP)+,R1 ; RESTOERE PUSHED ENTRY ADDRESS MOV R1,R3 ; NEW ADDRESS OF ROLL-OUT ENTRY SUB R2,R3 ; CALCULATE NEW IQPART MOV R4,R5 Î ; WILL ABORT BE REQUESTED? BNE TSOA25 ; NO JSR PC,PULLQP JSR PC,PUSHQP ; PUT IT AT TAIL BR TSOA10 TSOA25: MOV (SP)+,R1 ; RESTOERE PUSHED ENTRY ADDRESS MOV R1,R3 ; NEW ADDRESS OF ROLL-OUT ENTRY SUB R2,R3 ; CALCULATE NEW IQPART MOV R4,R5 ; HEADER ADDRESS-PSVA ADD #PHNOB,R5 ; PARTITION ADDRESS MOVB R3,IQPART(R5) ; SET NE ESINUTROUB STYLITI UOMRP ;* * ;* **********************************************************************;* 10OM CTSE.C E AG.P ; C ND.E K TSEL RIN ; ; TELEMPCOO I/R FOT AI WND AITEX; 20VBQO P JM USATSTD TEESQURET ORABT SE; ) R1T(TATSQ,REBT#A VBMO: 10A0TS E ACSPE OR CSHUINQLIRE; XXXXQN P JM 9þTSEL RIN ; ; TELEMPCOO I/R FOT AI WND AITEX; 20VBQO P JM USATSTD TEESQURET ORABT SE; ) R1T(TATSQ,REBT#A VBMO: 10A0TS E ACSPE OR CSHUINQLIRE; XXXXQN P JM D TEORABS=TUTA SSKTAT SE; ) R1T(TATSD,RTAB#T VBMO S YE; 10A0TS E BN S?ESGRRO PINO I/E AV HSKTA; 1)(RATSTIO TBTS K OC.L T OUNTRI PORRR E ; P TYRR,EPC R JS R FO ; 8þÑ ; HEADER ADDRESS-PSVA ADD #PHNOB,R5 ; PARTITION ADDRESS MOVB R3,IQPART(R5) ; SET NEW IQPART IN PART. HEADER MOV HEADQP(R2),R2 ; GET ENTRY ADDRESS OF REQUEST TASK CMP R2,R1 ; DID WE "ABORT PULL" ALL TASKS OUT OF ; ; QPARTN AND COME BACK TO ORIGINAL? BEQ TSOA29 ; YES MOV R0,R4 ; R0=R4 = PRIORITY OF BOTH TASKS JMP QOVE00 ; ROÒW IQPART IN PART. HEADER MOV HEADQP(R2),R2 ; GET ENTRY ADDRESS OF REQUEST TASK CMP R2,R1 ; DID WE "ABORT PULL" ALL TASKS OUT OF ; ; QPARTN AND COME BACK TO ORIGINAL? BEQ TSOA29 ; YES MOV R0,R4 ; R0=R4 = PRIORITY OF BOTH TASKS JMP QOVE00 ; ROLL-IT OUT & ROLL-IN NEXT TASK TSOA20: JSR PC,PULLQP ; TAKE ABORTED TASK OUT OF QUEUE BR TSOA10 D TEORABS=TUTA SSKTAT SE; ) R1T(TATSD,RTAB#T VBMO S YE; 10A0TS E BN S?ESGRRO PINO I/E AV HSKTA; 1)(RATSTIO TBTS K OC.L T OUNTRI PORRR E ; P TYRR,EPC R JS R FO ; P)(S,-R5 V MO R BEUM NSKTAT SE; ) R5K(TSRR,ER1 V MO E ULOD MORRR EOFS ESDRAD; R5D,MOSE#T V MO XXXXQNR FO. GSRER PERO PIN ; ; ONTIMAORNF IRTPA QNDFI ; 5þ P)(S,-R5 V MO R BEUM NSKTAT SE; ) R5K(TSRR,ER1 V MO E ULOD MORRR EOFS ESDRAD; R5D,MOSE#T V MO XXXXQNR FO. GSRER PERO PIN ; ; ONTIMAORNF IRTPA QNDFI ; N RTQP,FPC R JS N CAE WSOR BEUM NSKTAT GE; R1),R2K(TSOV V MO RYNT EUEUE QOFD EA HOFS ESDRAD; R2),R1E(QUHD V MO CKTA SONS TUTA SORSSCERO PVESA; ) SP-(R,PS@# V MO H TCWI SCERAR METIT SE; 1)(RCERATM C 4þÕLL-IT OUT & ROLL-IN NEXT TASK TSOA20: JSR PC,PULLQP ; TAKE ABORTED TASK OUT OF QUEUE BR TSOA10 ; AND CHECK NEXT REQUEST IN LINE ; ; RESET TIME-SLICE TO 1/2 ORIGINAL VALUE ; TSOA29 = . MOV $CTASK,R1 ; GET QPART INFO. AGAIN JSR PC,FQPRTN TSOA30 = . ASR CTIMER(R4) ; GIVE ONLY ONE HALF TIME THIS TIME MOVB #QINROS,TSTAT(R1) ; RESTORE Q'ED IN ROS STATUS JMP QOVBÖ ; AND CHECK NEXT REQUEST IN LINE ; ; RESET TIME-SLICE TO 1/2 ORIGINAL VALUE ; TSOA29 = . MOV $CTASK,R1 ; GET QPART INFO. AGAIN JSR PC,FQPRTN TSOA30 = . ASR CTIMER(R4) ; GIVE ONLY ONE HALF TIME THIS TIME MOVB #QINROS,TSTAT(R1) ; RESTORE Q'ED IN ROS STATUS JMP QOVB20 ; EXIT FROM RPOM ; .ENDC ; .PAGE .CSECT OM4 ; ; CKPT = . N RTQP,FPC R JS N CAE WSOR BEUM NSKTAT GE; R1),R2K(TSOV V MO RYNT EUEUE QOFD EA HOFS ESDRAD; R2),R1E(QUHD V MO CKTA SONS TUTA SORSSCERO PVESA; ) SP-(R,PS@# V MO H TCWI SCERAR METIT SE; 1)(RCERATM C IN . = RTABTS ; ; 9 OM CTSE.C LCMS$T Z FN.I E AG.P ; E ACSPE OR COMFRK AS TVEMORE; XXXXQN P JM K OC.L R BEUM NSKTA; R1),R2K(TSOV V MO SSREDD A1þIN . = RTABTS ; ; 9 OM CTSE.C LCMS$T Z FN.I E AG.P ; E ACSPE OR COMFRK AS TVEMORE; XXXXQN P JM K OC.L R BEUM NSKTA; R1),R2K(TSOV V MO SSREDD AERADHEM RAOGPR; 4 ,RR1 V MO TYRIIOPRE UTMPCO; R0 R AS: 60OVGO D LEABIS DSKTAT SE; ) R4T(TATSL,ABDS#T VBMO GESAES MORRR EUT OPETY; P TYRR,EPC R JS P)(S,-R5 V MO T ENUMRG AINR BEUM N0þÙ20 ; EXIT FROM RPOM ; .ENDC ; .PAGE .CSECT OM4 ; ; CKPT = . .IFNZ CHKPTC!$TMSLC TST ACTIVE ; MUST BE CALLED FROM BEQ CKPT40 ; ACTIVE TASK CMP $CTASK,#OVTMIN ; OVERLAY TASK? BLT CKPT40 ; NO-IGNORE MOV @#PSR,-(SP) ; PSR FOR QSAVE MOV #-1,-(SP) ; SUSPEND,NO-REQUEUE AND DON'T CALL RPOM .LOCK MOV Ú .IFNZ CHKPTC!$TMSLC TST ACTIVE ; MUST BE CALLED FROM BEQ CKPT40 ; ACTIVE TASK CMP $CTASK,#OVTMIN ; OVERLAY TASK? BLT CKPT40 ; NO-IGNORE MOV @#PSR,-(SP) ; PSR FOR QSAVE CLR -(SP) ; SUSPEND AND NO-REQUEUE .LOCK JSR PC,QSAVE ; DO IT AND GET ON SYSTEM STACK MOV $CTASK,R1 ; GET TASK NUMBER MOVB #OVYACT,TSTAT(R1ERADHEM RAOGPR; 4 ,RR1 V MO TYRIIOPRE UTMPCO; R0 R AS: 60OVGO D LEABIS DSKTAT SE; ) R4T(TATSL,ABDS#T VBMO GESAES MORRR EUT OPETY; P TYRR,EPC R JS P)(S,-R5 V MO T ENUMRG AINR BEUM NSKTAT SE; ) R5K(TSRR,ER4 V MO E ULOD MORRR EOFS ESDRAD; R5D,MOIE#R V MO . = 50OVGO ; ERMBNUK AS T =R4 ; SSREDD ARYNT ERTPA Q =R2 ; A SV-PSSREDD AERADHEK AS T =R1 -þSKTAT SE; ) R5K(TSRR,ER4 V MO E ULOD MORRR EOFS ESDRAD; R5D,MOIE#R V MO . = 50OVGO ; ERMBNUK AS T =R4 ; SSREDD ARYNT ERTPA Q =R2 ; A SV-PSSREDD AERADHEK AS T =R1 ; EXND IRDWOY ITORRI P =R0 ; N -ILLROY LAEROVG INUR DEDRRCUOCR ROERD EA RSCDI ; ; OMRPM RO FITEXD AN; 15OVGO BR ESEUQUS ROF OADHET ASKTAE EUQU; 0)(RSTIR,FR3 V MO: 30OVGO LYEROPPRP USTLAT SEY-PTEM; ,þÝ $CTASK,(PC)+ $TEMP: .WORD 0 JSR PC,QSAVE ; DO IT AND GET ON SYSTEM STACK MOV $TEMP,R1 ; GET TASK NUMBER MOVB #OVYACT,TSTAT(R1) ; SET OVERLAY BUSY IN TSTAT CLRB @#PSR ; RESET LOCKOUT WITH LEVEL 0 MOV #DSPTCH,-(SP) ; SET RTS PC FOR DISPATCHER CLR -(SP) ; SAVE PROCESSOR STATUS ON STACK CLR -(SP) ; SET CALLED BY CKPT ON STACK JSR PC,FQPRTN Þ) ; SET OVERLAY BUSY IN TSTAT CLRB @#PSR ; RESET LOCKOUT WITH LEVEL 0 MOV #DSPTCH,-(SP) ; SET RTS PC FOR DISPATCHER CLR -(SP) ; SAVE PROCESSOR STATUS ON STACK CLR -(SP) ; SET CALLED BY CKPT ON STACK JSR PC,FQPRTN ; FIND QPARTN INFORMATION .IFNZ CHKPTC TSTB PPTAB(R0) ; DYNAMIC PRIORITY BMI QSRCH ; YES-PERFORM Q SEARCH ; ; RETURNS FROM Q ; EXND IRDWOY ITORRI P =R0 ; N -ILLROY LAEROVG INUR DEDRRCUOCR ROERD EA RSCDI ; ; OMRPM RO FITEXD AN; 15OVGO BR ESEUQUS ROF OADHET ASKTAE EUQU; 0)(RSTIR,FR3 V MO: 30OVGO LYEROPPRP USTLAT SEY-PTEM; ) R0T(AS,LR3 V MO E EUQUY PTEMT NO; 30OVGO E BN D OR WADRETHS K'AS TUPT SE; 1)(R),R0T(RSFI V MO . = 20OVGO ; EDICSLE-IM TORD TEINPOCKHE CAS WIND-LEOL RSKTA ; ; OMRPM RO FITEX)þ) R0T(AS,LR3 V MO E EUQUY PTEMT NO; 30OVGO E BN D OR WADRETHS K'AS TUPT SE; 1)(R),R0T(RSFI V MO . = 20OVGO ; EDICSLE-IM TORD TEINPOCKHE CAS WIND-LEOL RSKTA ; ; OMRPM RO FITEXD AN; 20VBQO P JM 0 =ATST CND ALEABPTCKN IOITRTPAT SE; 2)(RK,TCAR#P VBMO USATSTS RON IEDEUQUT SE; ) R4T(TATSS,ROIN#Q VBMO: 15OVGO T ARQPN INDPEUS SL.VOT NOT SE; ) R2G(ARTR R CL R DEEA HSKTAN ITYRIIO(þá ; FIND QPARTN INFORMATION .IFNZ CHKPTC TSTB PPTAB(R0) ; DYNAMIC PRIORITY BMI QSRCH ; YES-PERFORM Q SEARCH ; ; RETURNS FROM QSRCH IF PENDING REQUEST NOT FOUND ; OR COMES HERE IF NOT DYNAMIC PRIORITY ; CKPT20 = . JSR PC,FQPRTN ; AND QPARTN IFNO. ALSO .ENDC .LOCK MOVB #PARTCK,(R2) ; SET PSTAT = CHECKPOINTABLE MOVB #QINROS,TSTAT(R1) ; SET TSTAT = QUâSRCH IF PENDING REQUEST NOT FOUND ; OR COMES HERE IF NOT DYNAMIC PRIORITY ; CKPT20: MOV $CTASK,R1 ; GET TASK NUMBER AGAIN JSR PC,FQPRTN ; AND QPARTN IFNO. ALSO .ENDC .LOCK MOVB #PARTCK,(R2) ; SET PSTAT = CHECKPOINTABLE MOVB #QINROS,TSTAT(R1) ; SET TSTAT = QUEUED IN ROS ASL R1 ; TASK NUMBER WORD INDEX ASL R0 ; PRIORITY WORD INDEX MOV FIRST(D AN; 20VBQO P JM 0 =ATST CND ALEABPTCKN IOITRTPAT SE; 2)(RK,TCAR#P VBMO USATSTS RON IEDEUQUT SE; ) R4T(TATSS,ROIN#Q VBMO: 15OVGO T ARQPN INDPEUS SL.VOT NOT SE; ) R2G(ARTR R CL R DEEA HSKTAN ITYRIIOPRT SE; ) R1R(IOPR,HR0 VBMO TYRIIOPRO TCKBA; R0 R AS R0 R AS ERADHEN INTMEGUART SE; 1)(RRGTA),R2G(ARTR V MO UEUE QOS ROF ; ) R0T(AS,LR3 V MO C ND.E %þPRT SE; ) R1R(IOPR,HR0 VBMO TYRIIOPRO TCKBA; R0 R AS R0 R AS ERADHEN INTMEGUART SE; 1)(RRGTA),R2G(ARTR V MO UEUE QOS ROF ; ) R0T(AS,LR3 V MO C ND.E L AI TATK AS TADRETH; + P)(S,@R3 V MO R5ASE US; 5 SVPA,PPC R JS P)(S,-0)(RSTLA V MO 1CT1$K Z FN.I C ND.E L AI TATK AS TADRETH; 0)(RSTLA,@R3 V MO 1CT1$K FZ.I 0 =RDWO$þåEUED IN ROS ASL R1 ; TASK NUMBER WORD INDEX ASL R0 ; PRIORITY WORD INDEX ASL R0 ; PRIORITY DOUBLE WORD INDEX MOV FIRST(R0),(R4) ; SET UP TASK(S THREAD WORD BNE CKPT30 ; NOT EMPTY QUEUE MOV HEADER(R1),LAST(R0) ; EMPTY-SET UP LAST PROPERLY CKPT30: MOV HEADER(R1),FIRST(R0) ; QUEUE TASK AT HEAD OF PRIORITY QUEUE TST (SP)+ ; POP CALLED BY SWITCH OæR0),(R4) ; SET UP TASK(S THREAD WORD BNE CKPT30 ; NOT EMPTY QUEUE MOV HEADER(R1),LAST(R0) ; EMPTY-SET UP LAST PROPERLY CKPT30: MOV HEADER(R1),FIRST(R0) ; QUEUE TASK AT HEAD OF PRIORITY QUEUE TST (SP)+ ; POP CALLED BY SWITCH OFF STACK MOVB (SP)+,PSR ; RESET CPU LOCKOUT .ENDC CKPT40: RTS PC ; RETURN TO TASK OR DISPATCHER ; ; .IFNZ CHKPTC ; ; QSRCH IS CALLED TO FIND L AI TATK AS TADRETH; + P)(S,@R3 V MO R5ASE US; 5 SVPA,PPC R JS P)(S,-0)(RSTLA V MO 1CT1$K Z FN.I C ND.E L AI TATK AS TADRETH; 0)(RSTLA,@R3 V MO 1CT1$K FZ.I 0 =RDWOD EAHR TSKTAT SE; 1)(R R CL C ND.E S YE; 20OVGO I BM ? EDICSLE-IM TORD TEINPOCKHE CSKTAS WA; 2)(R TBTS C PTHK!CLCMS$T Z FN.I R BEUM NSKTAE UTMPCO; !þD EAHR TSKTAT SE; 1)(R R CL C ND.E S YE; 20OVGO I BM ? EDICSLE-IM TORD TEINPOCKHE CSKTAS WA; 2)(R TBTS C PTHK!CLCMS$T Z FN.I R BEUM NSKTAE UTMPCO; R4 R AS S ESDRADR DEEA HALICYSPHM RAOGPRT SE; ) R4R(DEEA,HR3 V MO K OC.L EXND IRKWOR BEUM NSKTA; R4 L AS EXND IRDWOE-BLOU DTYRIIOPR; R0 L AS . = 10OVGO C ND.E þéFF STACK MOVB (SP)+,PSR ; RESET CPU LOCKOUT .ENDC CKPT40: RTS PC ; RETURN TO TASK OR DISPATCHER ; ; .IFNZ CHKPTC ; ; QSRCH IS CALLED TO FIND A WAITING REQUEST IN THE ; DYNAMIC QPART'S, THAT WILL FIT INTO THE ACTIVE ; TASK'S CORE SPACE. IF ONE IS FOUND, THE ACTIVE TASK ; WILL BE SUSPENDED AND ROLL-OUT/ROLL-IN LOGIC EXECUTED. ; IF CALLED BY 'CKPT', WILL ONLY SEARCH HIGHER ; PRIORITY QPARTS. IF CALLED BêA WAITING REQUEST IN THE ; DYNAMIC QPART'S, THAT WILL FIT INTO THE ACTIVE ; TASK'S CORE SPACE. IF ONE IS FOUND, THE ACTIVE TASK ; WILL BE SUSPENDED AND ROLL-OUT/ROLL-IN LOGIC EXECUTED. ; IF CALLED BY 'CKPT', WILL ONLY SEARCH HIGHER ; PRIORITY QPARTS. IF CALLED BY 'QSOVLY', ALL QUEUES ; WILL BE SEARCHED. A CALLED BY SWITCH WILL BE FOUND ; IN STACK. 0 = CKPT, 1 = QSOVLY. ; UPON ENTRY: R0 = PRIORITY OF ACTIVE TASK ; R2 = QPART R4 R AS S ESDRADR DEEA HALICYSPHM RAOGPRT SE; ) R4R(DEEA,HR3 V MO K OC.L EXND IRKWOR BEUM NSKTA; R4 L AS EXND IRDWOE-BLOU DTYRIIOPR; R0 L AS . = 10OVGO C ND.E VA SERADHE; R1+,P)(S V MO PA PERADHE; R3+,P)(S V MO 8 V0OO,GR5 B SO MPBU; + 1)(R T TS: 09OVGO R PAE LVSORE; 1)(RR0PA,TR3 D AD O ER ZIFE LVSORET N'DO; þ VA SERADHE; R1+,P)(S V MO PA PERADHE; R3+,P)(S V MO 8 V0OO,GR5 B SO MPBU; + 1)(R T TS: 09OVGO R PAE LVSORE; 1)(RR0PA,TR3 D AD O ER ZIFE LVSORET N'DO; 09OVGO Q BE ) R10(DRTP T TS . = 08OVGO S METI8 P OO LRUTH; R5.,#8 V MO 16Y BDEVIDIN HE T 4BYE IDIV DISA PP ; ; S R'PAO TDD ATOE LUVAE ATULLCCA; R34,#- H AS þíY 'QSOVLY', ALL QUEUES ; WILL BE SEARCHED. A CALLED BY SWITCH WILL BE FOUND ; IN STACK. 0 = CKPT, 1 = QSOVLY. ; UPON ENTRY: R0 = PRIORITY OF ACTIVE TASK ; R2 = QPART ADDRESS OF ACTIVE TASK'S ENTRY ; R4 = PROGRAM HEADER ADDRESS ; QSRCH = . MOV R4,R1 ; SAVE PROGRAM HEADER ADDRESS MOV R0,R4 ; SAVE PRIORITY OF ACTIVE TASK MOV R2,R5 ; SAVE ENTRY ADDREî ADDRESS OF ACTIVE TASK'S ENTRY ; R4 = PROGRAM HEADER ADDRESS ; QSRCH = . MOV R4,R1 ; SAVE PROGRAM HEADER ADDRESS MOV R0,R4 ; SAVE PRIORITY OF ACTIVE TASK MOV R2,R5 ; SAVE ENTRY ADDRESS OF ACTIVE TASK MOV PHNOB(R1),R3 ; GET SB/NOB OF ACTIVE TASK QSCH05: MOV #1.,R0 ; SET UP TO SEARCH LEVEL 1 FIRST QSCH10: TSTB PPTAB(R0) ; IS PRIORITY LEVEL DYNAMIC ? 09OVGO Q BE ) R10(DRTP T TS . = 08OVGO S METI8 P OO LRUTH; R5.,#8 V MO 16Y BDEVIDIN HE T 4BYE IDIV DISA PP ; ; S R'PAO TDD ATOE LUVAE ATULLCCA; R34,#- H AS 3 ,RP)(S V MO A PPR DEEA HSKTAT GE; PAVP,SPC R JS P)(S,-R1 V MO VESA; P)(S,-R1 V MO ; 4 6BYD DEVIDIR DEEA HOR F00'1+ E AG POFS ESDRAD ; E BLTACALORES INTAON CARþ 3 ,RP)(S V MO A PPR DEEA HSKTAT GE; PAVP,SPC R JS P)(S,-R1 V MO VESA; P)(S,-R1 V MO ; 4 6BYD DEVIDIR DEEA HOR F00'1+ E AG POFS ESDRAD ; E BLTACALORES INTAON CAR-PASRE AONMMCOR FOP UET SSTYET NO: TENO ; ; 1CT1$K Z FN.I C ND.E SSREDD AERADHEE ATICPLDU; 3 ,RR1 V MO ; ESSSREDD ALETBCALOREE LVSORE; ) R3,(PC R JS Y TRENR LEAITRO TMPBU; + 3)(R T þñSS OF ACTIVE TASK MOV PHNOB(R1),R3 ; GET SB/NOB OF ACTIVE TASK QSCH05: MOV #1.,R0 ; SET UP TO SEARCH LEVEL 1 FIRST QSCH10: TSTB PPTAB(R0) ; IS PRIORITY LEVEL DYNAMIC ? BPL QSCH40 ; NO- BUMP TO NEXT LEVEL CMP R0,R4 ; PRI. HIGHER THAN ACTIVE TASK'S BGE QSCH50 ; NO QSCH20: MOV R0,R1 ; CALCULATE SEARCH ASL R1 ; PRIORITY WORD INDEX MOV QPARTNò BPL QSCH40 ; NO- BUMP TO NEXT LEVEL CMP R0,R4 ; PRI. HIGHER THAN ACTIVE TASK'S BGE QSCH50 ; NO QSCH20: MOV R0,R1 ; CALCULATE SEARCH ASL R1 ; PRIORITY WORD INDEX MOV QPARTN(R1),R2 ; GET THIS PRIORITY'S QPART ADDRESS BEQ QSCH40 ; DOESN'T EXIST-BUMP TO NEXT LEVEL QSCH30: MOV (R2),R1 ; GET FIRST WORD OF A QPART CELL INC R1 -PASRE AONMMCOR FOP UET SSTYET NO: TENO ; ; 1CT1$K Z FN.I C ND.E SSREDD AERADHEE ATICPLDU; 3 ,RR1 V MO ; ESSSREDD ALETBCALOREE LVSORE; ) R3,(PC R JS Y TRENR LEAITRO TMPBU; + 3)(R T TS R LEAITRF OSSREDD AALTUAC; 3 ,RR1 D AD R LEAITRE THN INDOU FESSSREADE THE LVSOREO TIT ; LLCAD ANY VLSO ROR FTSENUMRG ANGLIAL CUPT SE ; ; . = 05OVGO C ND.E LYOVRST N'DOS-YEþTS R LEAITRF OSSREDD AALTUAC; 3 ,RR1 D AD R LEAITRE THN INDOU FESSSREADE THE LVSOREO TIT ; LLCAD ANY VLSO ROR FTSENUMRG ANGLIAL CUPT SE ; ; . = 05OVGO C ND.E LYOVRST N'DOS-YE; 10OVGO I BM ? EDICSLE-IM TORD TEINPOCKHE CSKTA; 2)(R TBTS TCKPCH FZ.I Y'VLSO'RS ASYP B -NO; 10OVGO Q BE R?LEAITRN IOATOCEL R AREHE TIS; 3 ,R1)(RDXLITR V MO 1CT1$K FZ.I þõ(R1),R2 ; GET THIS PRIORITY'S QPART ADDRESS BEQ QSCH40 ; DOESN'T EXIST-BUMP TO NEXT LEVEL QSCH30: MOV (R2),R1 ; GET FIRST WORD OF A QPART CELL INC R1 ; SEARCHED TO END OF TABLE? BEQ QSCH40 ; -1 TAIL MARKED - BUMP TO NEXT LEVEL BEQ QSCH35 ; ENTRY VOID-BUMP TO NEXT ENTRY BIC #177600,R1 ; ISOLATE PSTAT BEQ QSCH60 ; FOUND ENTRY WAITING SERVICE QSCH35: ADD ö ; SEARCHED TO END OF TABLE? BEQ QSCH40 ; -1 TAIL MARKED - BUMP TO NEXT LEVEL BEQ QSCH35 ; ENTRY VOID-BUMP TO NEXT ENTRY BIC #177600,R1 ; ISOLATE PSTAT BEQ QSCH60 ; FOUND ENTRY WAITING SERVICE QSCH35: ADD #6.,R2 ; BUMP TO NEXT ENTRY IN QPART TABLE BR QSCH30 ; KEEP-A-LOOKIN' QSCH40: INC R0 ; BUMP PRIORITY OF SEARCH BR QSCH10 ; ; DETERMINE ; 10OVGO I BM ? EDICSLE-IM TORD TEINPOCKHE CSKTA; 2)(R TBTS TCKPCH FZ.I Y'VLSO'RS ASYP B -NO; 10OVGO Q BE R?LEAITRN IOATOCEL R AREHE TIS; 3 ,R1)(RDXLITR V MO 1CT1$K FZ.I S YE; 50OVGO E BN R?CUOCR ROERD EA RSCDID DI; 1)(RWDRRHE T TS S YE; 60OVGO Q BE D?TEESQUREE BRTBO ALLWI; ) R4T(TATSQ,REDQ#O PBCM S YE; 60OVGO þ S YE; 50OVGO E BN R?CUOCR ROERD EA RSCDID DI; 1)(RWDRRHE T TS S YE; 60OVGO Q BE D?TEESQUREE BRTBO ALLWI; ) R4T(TATSQ,REDQ#O PBCM S YE; 60OVGO Q BE ? EDSTUEEQ RENBET ORABS HA; RQRTAB,#2)(R PBCM R BEUM NSKTAT GE; R4),R2K(TSOV V MO R4 R CL Y TRENT ARQPS K'AS TOFS ESDRAD; 2 ,R0)(RTNARQP D AD ERADHEN IOITRTPAM RO FRTPAIQT GE; 2 ,R1)(RRTQPHI þù #6.,R2 ; BUMP TO NEXT ENTRY IN QPART TABLE BR QSCH30 ; KEEP-A-LOOKIN' QSCH40: INC R0 ; BUMP PRIORITY OF SEARCH BR QSCH10 ; ; DETERMINE CALLER ; QSCH50 = . TST (SP) ; CALLED BY CKPT BNE QSCH55 ; NO MOV OVTSK(R5),R1 ; RESTORE TASK NUMBE- BR CKPT20 ; SET CHECKPOINTABLE AND EXIT QSCH55: CMP R0,#NPRIOR ; SEARCHED NPRIOR QPART'S úCALLER ; QSCH50 = . TST (SP) ; CALLED BY CKPT BNE QSCH55 ; NO BR CKPT20 ; SET CHECKPOINTABLE AND EXIT QSCH55: CMP R0,#NPRIOR ; SEARCHED NPRIOR QPART'S BLE QSCH20 ; NO - KEEP GOING MOVB #VOLSCK,(R5) ; SET REQUEST'S PSTAT = VOL. SUS & CKPTABLE MOV OVTSK(R5),R1 ; RESTORE TASK NUMBER JMP QSOV20 ; ; FOUND WAITING ENTRY - DETERMINE IF IT WILL F Q BE ? EDSTUEEQ RENBET ORABS HA; RQRTAB,#2)(R PBCM R BEUM NSKTAT GE; R4),R2K(TSOV V MO R4 R CL Y TRENT ARQPS K'AS TOFS ESDRAD; 2 ,R0)(RTNARQP D AD ERADHEN IOITRTPAM RO FRTPAIQT GE; 2 ,R1)(RRTQPHI SBBI R2 R CL EXND IRDWOY ITORRI PKEMA; R0 L AS ERADHEN IOITRTPAM RO FTYRIIOPRT GE; R0),R1I(PRPH VBMO C ND.E LEABSSREDD AERADHEK AS T &ERADHE ; R1+,P)(S þ SBBI R2 R CL EXND IRDWOY ITORRI PKEMA; R0 L AS ERADHEN IOITRTPAM RO FTYRIIOPRT GE; R0),R1I(PRPH VBMO C ND.E LEABSSREDD AERADHEK AS T &ERADHE ; R1+,P)(S V MO S N'IOITRTPAL ALO SVAPST GE; T ARDP,APC R JS P)(S,-R1 V MO 1CT1$K Z FN.I R DEEA HAMGRRO POFS ESDRADE ATULLCCA; 1 ,RSTOLHI#- D AD ; EDCKHE C/O IONR ROERL TIUND EA RSTJUR DEEA HSKTA ; N OLY þý BLE QSCH20 ; NO - KEEP GOING MOVB #VOLSCK,(R5) ; SET REQUEST'S PSTAT = VOL. SUS & CKPTABLE MOV OVTSK(R5),R1 ; RESTORE TASK NUMBER JMP QSOV20 ; ; FOUND WAITING ENTRY - DETERMINE IF IT WILL FIT IN ; CHECKPOINTABLE TASK'S CORE SPACE ; QSCH60 = . .LOCK MOV (R2),R1 ; IS SEARCHED TASK STILL WAITING? BEQ QSCH70 ; ENTRY VOID-START SEARCH AGAIN BIC #1þIT IN ; CHECKPOINTABLE TASK'S CORE SPACE ; QSCH60 = . .LOCK MOV (R2),R1 ; IS SEARCHED TASK STILL WAITING? BEQ QSCH70 ; ENTRY VOID-START SEARCH AGAIN BIC #177600,R1 ; ISOLATE PSTAT BNE QSCH70 ; NO - START SEARCH AGAIN MOV OVTSK(R2),R1 ; GET TASK NUMBER MOVB BSIZE(R1),R1 ; GET TASK'S BSIZE BIC #177400,R1 ; ISOLATE CMPB R1,R3 V MO S N'IOITRTPAL ALO SVAPST GE; T ARDP,APC R JS P)(S,-R1 V MO 1CT1$K Z FN.I R DEEA HAMGRRO POFS ESDRADE ATULLCCA; 1 ,RSTOLHI#- D AD ; EDCKHE C/O IONR ROERL TIUND EA RSTJUR DEEA HSKTA ; N OLYRET YET NOAN-CONTIMAORNF IERADHEN IOITRTPAE US ; ; CKTA SONS TUTA SORSSCERO PVESA; ) SP-(R,PS@# V MO . = V TOGO ; ; 8 OM CTSE.C E AG.P ; C ND.E ; C ND.E 10OVGE þRET YET NOAN-CONTIMAORNF IERADHEN IOITRTPAE US ; ; CKTA SONS TUTA SORSSCERO PVESA; ) SP-(R,PS@# V MO . = V TOGO ; ; 8 OM CTSE.C E AG.P ; C ND.E ; C ND.E 10OVGE BR S STUEEQ ROF. NOT ENEMCRDE; 0)(RQPEQNR CBDE RYNT ERTPA QIDVO; 2)(R R CL 10OVGE L BP ) R0B(TAPP TBTS TCKPCH Z FN.I C ND.E 10OVGE BR TCKPCH FZ.I þ77600,R1 ; ISOLATE PSTAT BNE QSCH70 ; NO - START SEARCH AGAIN MOV OVTSK(R2),R1 ; GET TASK NUMBER MOVB BSIZE(R1),R1 ; GET TASK'S BSIZE BIC #177400,R1 ; ISOLATE CMPB R1,R3 ; FIT IN NUMBER OF BLOCKS AVAILABLE? BGT QSCH80 ; NO SWAB R3 CMPB R3,ALPOOL(R0) ; START BLOCK COMPATABLE WITH ALPOOL? BLT QSCH80 ; NO TST (SP)+  ; FIT IN NUMBER OF BLOCKS AVAILABLE? BGT QSCH80 ; NO SWAB R3 CMPB R3,ALPOOL(R0) ; START BLOCK COMPATABLE WITH ALPOOL? BLT QSCH80 ; NO TST (SP)+ ; POP CALLED BY SWITCH OFF STACK MOV R5,R1 ; QPART ENTRY ADDRESS OF ROLL-OUT TASK JSR PC,ROLSUP ; ROLL-OUT STATUS SET-UP MOVB (SP),@#PSR ; RESET CPU LOCKOUT QSCH70 = . ; MOVB 2.(SP),@#P BR S STUEEQ ROF. NOT ENEMCRDE; 0)(RQPEQNR CBDE RYNT ERTPA QIDVO; 2)(R R CL 10OVGE L BP ) R0B(TAPP TBTS TCKPCH Z FN.I C ND.E 10OVGE BR TCKPCH FZ.I . = 40OVGE ; UT-OLLROK AS TNGRIDUD TEESQURET ORAB ; ; 25OVGE BR E BLTAKPECCHT NO, NDPEUS SL.VO= T TAPST SE; 2)(RK,NCLS#V VBMO: 30OVGE ITEX; 20VBQO P JM R PETYR ROERR FO ; þ. = 40OVGE ; UT-OLLROK AS TNGRIDUD TEESQURET ORAB ; ; 25OVGE BR E BLTAKPECCHT NO, NDPEUS SL.VO= T TAPST SE; 2)(RK,NCLS#V VBMO: 30OVGE ITEX; 20VBQO P JM R PETYR ROERR FO ; P TYRR,EPC R JS CKTA SONT SE; P)(S,-R4 V MO ERMBNUK AS TUT-OLLROT SE; ) R4K(TSRR,ER1 V MO LEDUMOR ROERT OUL-OL ROFS ESDRADT GE; R4D,MOOE#R V MO: 25OVGE INGA AO. NSKTA; R1 R AS UTKOOC Lþ; POP CALLED BY SWITCH OFF STACK MOV R5,R1 ; QPART ENTRY ADDRESS OF ROLL-OUT TASK JSR PC,ROLSUP ; ROLL-OUT STATUS SET-UP MOVB (SP),@#PSR ; RESET CPU LOCKOUT QSCH70 = . ; MOVB 2.(SP),@#PSR ; RESET PRIORITY LOCKOUT BR QSCH05 ; RESTART SEARCH QSCH80 = . MOVB 2.(SP),@#PSR ; RESET PRIORITY LOCKOUT BR QSCH35 ; .ENDC ; ; ; NOCKPT = SR ; RESET PRIORITY LOCKOUT BR QSCH05 ; RESTART SEARCH QSCH80 = . MOVB 2.(SP),@#PSR ; RESET PRIORITY LOCKOUT BR QSCH35 ; .ENDC ; ; ; NOCKPT = . .IFNZ CHKPTC!$TMSLC TST ACTIVE ; MUST BE CALLED FROM BEQ NOCK20 ; ACTIVE TASK JSR R5,PUSHR ; SAVE REGISTERS MOV $CTASK,R1 ; GET CALLER'S TASK NUMBER CMP R1 P TYRR,EPC R JS CKTA SONT SE; P)(S,-R4 V MO ERMBNUK AS TUT-OLLROT SE; ) R4K(TSRR,ER1 V MO LEDUMOR ROERT OUL-OL ROFS ESDRADT GE; R4D,MOOE#R V MO: 25OVGE INGA AO. NSKTA; R1 R AS UTKOOC LTYRIIOPRT SERE; SR#P,@P)(S VBMO INGA ANTDESIREE OR CSSREDD AERADHET SE; ) R1R(DEEA,HR4 V MO EXND IRDWOR BEUM NSKTA; R1 L AS S RON IEDEUQU= S TUTA SSKTAT SE; ) R1T(TATSS,ROIN#Q þTYRIIOPRT SERE; SR#P,@P)(S VBMO INGA ANTDESIREE OR CSSREDD AERADHET SE; ) R1R(DEEA,HR4 V MO EXND IRDWOR BEUM NSKTA; R1 L AS S RON IEDEUQU= S TUTA SSKTAT SE; ) R1T(TATSS,ROIN#Q VBMO LEABNTOIKPECCHT NON IOITRTPAT SE; 2)(RK,NCRT#P VBMO S UEUE QOS RTOIN ; ) R0T(AS,LR4 V MO C ND.E CKBAK AS TADRETH; + P)(S,@R4 V MO VA S'SSTLAT GE; 5 SVPA,PPC R JS P)(S,-0)þ . .IFNZ CHKPTC!$TMSLC TST ACTIVE ; MUST BE CALLED FROM BEQ NOCK20 ; ACTIVE TASK JSR R5,PUSHR ; SAVE REGISTERS MOV $CTASK,R1 ; GET CALLER'S TASK NUMBER CMP R1,#OVTMIN ; CALLER AN OVERLAY? BLT NOCK10 ; NO- IGNORE AND RETURN MOV @#PSR,-(SP) ; SAVE PRIORITY .LOCK JSR PC,FQPRTN ; FIND TASK'S QPART INFORMATION MOVB ,#OVTMIN ; CALLER AN OVERLAY? BLT NOCK10 ; NO- IGNORE AND RETURN MOV @#PSR,-(SP) ; SAVE PRIORITY .LOCK JSR PC,FQPRTN ; FIND TASK'S QPART INFORMATION MOVB #PRTNCK,(R2) ; SET TASK'S PSTAT = NOT CHECKPOINTABLE MOVB (SP)+,@#PSR ; RESET LOCKOUT NOCK10: JSR R5,POPR ; RESTORE REGISTERS .ENDC NOCK20: RTS PC ; RETURN ; ; .PAGE .CSECT OM5 ; VBMO LEABNTOIKPECCHT NON IOITRTPAT SE; 2)(RK,NCRT#P VBMO S UEUE QOS RTOIN ; ) R0T(AS,LR4 V MO C ND.E CKBAK AS TADRETH; + P)(S,@R4 V MO VA S'SSTLAT GE; 5 SVPA,PPC R JS P)(S,-0)(RSTLA V MO R4+,P)(S V MO PA P'SSKTAT GE; PAVP,SPC R JS P)(S,-R4 V MO 1CT1$K Z FN.I C ND.E CKBAK AS TADRETH; 0)(RSTLA,@R4 V MO 1CT1$K FZ.I ýý(RSTLA V MO R4+,P)(S V MO PA P'SSKTAT GE; PAVP,SPC R JS P)(S,-R4 V MO 1CT1$K Z FN.I C ND.E CKBAK AS TADRETH; 0)(RSTLA,@R4 V MO 1CT1$K FZ.I 0 =RDWOD EAHR TSKTAT SE; 4)(R R CL K OC.L EXND IRDWO ; R0 L AS - E BLOU DTYRIIOPR; R0 L AS S YE; 30OVGE E BN D?DEENSPSUY ILARNTLUVOK AS TIS; ) R2G(ARüý #PRTNCK,(R2) ; SET TASK'S PSTAT = NOT CHECKPOINTABLE MOVB (SP)+,@#PSR ; RESET LOCKOUT NOCK10: JSR R5,POPR ; RESTORE REGISTERS .ENDC NOCK20: RTS PC ; RETURN ; ; .PAGE .CSECT OM5 ; ; TASK HAS ALREADY BEEN VOLUNTARILY SUSPENDED BY QSAVE ; ON SYSTEM STACK ; QSOVLY = . MOV 2.(SP),R1 ; GET TASK NUMBER MOV (SP)+,(SP) ; SET PC FOR PROPER RETURN  ; TASK HAS ALREADY BEEN VOLUNTARILY SUSPENDED BY QSAVE ; ON SYSTEM STACK ; QSOVLY = . MOV 2.(SP),R1 ; GET TASK NUMBER MOV (SP)+,(SP) ; SET PC FOR PROPER RETURN MOV @#PSR,-(SP) ; SAVE PROCESSOR STATUS ON STACK MOV #1.,-(SP) ; SET CALLED BY QSOVLY ON STACK ; ; FOR QSRCH JSR PC,FQPRTN ; FIND QPART ENTRY INFORMATION INC TRARG(R2) ; 0 =RDWOD EAHR TSKTAT SE; 4)(R R CL K OC.L EXND IRDWO ; R0 L AS - E BLOU DTYRIIOPR; R0 L AS S YE; 30OVGE E BN D?DEENSPSUY ILARNTLUVOK AS TIS; ) R2G(ARTR T TS: 23OVGE C ND.E R TEISEG RTEIAPRROPP ATOS ESDRADY TREN; 2 ,RR3 V MO ERADHEN IOITRTPAN IITT SE; ) R4T(PRIQ,HR5 VBMO T ARQP IEW N'SITE ATULLCCA; 5 ,RR2 B SU SSREDD AùýTR T TS: 23OVGE C ND.E R TEISEG RTEIAPRROPP ATOS ESDRADY TREN; 2 ,RR3 V MO ERADHEN IOITRTPAN IITT SE; ) R4T(PRIQ,HR5 VBMO T ARQP IEW N'SITE ATULLCCA; 5 ,RR2 B SU SSREDD ARYNT EVESA; 3 ,RR5 V MO #SKTA; R1+,P)(S V MO SSREDD AERADHEM RAOGPRT SERES-YE; R4+,P)(S V MO UEUE QOFD EA HATK AC BUT-OLLROT GET US-MNO; 22OVGE E BN ? NTWAE WNE OTOT GE; 5)(RøýMOV @#PSR,-(SP) ; SAVE PROCESSOR STATUS ON STACK MOV #1.,-(SP) ; SET CALLED BY QSOVLY ON STACK ; ; FOR QSRCH JSR PC,FQPRTN ; FIND QPART ENTRY INFORMATION INC TRARG(R2) ; SET VOL. SUSPEND FLAG IN QPART ARG. WORD CMPB (R2),#PRTNCK ; IS PARTITION CHECKPOINTABLE? BGE QSOV30 ; NO MOVB #VOLSCK,(R2) ; SET PSTAT: VOL. SUSPEND & CHECKPOINTABLE .IFNZ $TMSLCSET VOL. SUSPEND FLAG IN QPART ARG. WORD CMPB (R2),#PRTNCK ; IS PARTITION CHECKPOINTABLE? BGE QSOV30 ; NO MOVB #VOLSCK,(R2) ; SET PSTAT: VOL. SUSPEND & CHECKPOINTABLE .IFNZ $TMSLC!FXPART TSTB PPTAB(R0) ; PRIORITY TYPE? .IFNZ FXPART BEQ QSOV20 ; FIXED .ENDC .IFNZ $TMSLC BPL QSOV10 ; TIME-SLICED .ENDC .ENDC .IFZ CHKPTCRYNT EVESA; 3 ,RR5 V MO #SKTA; R1+,P)(S V MO SSREDD AERADHEM RAOGPRT SERES-YE; R4+,P)(S V MO UEUE QOFD EA HATK AC BUT-OLLROT GET US-MNO; 22OVGE E BN ? NTWAE WNE OTOT GE; 5)(RSKVT,OP)(S2. P CM Y TREND EA HOFS ESDRADT GE; 5 ,R2)(RQPADHE V MO UTKOOC LTYRIIOPRT SERE; SR#P,@P)(S4. VBMO L AI TTOINT ISHPU; P HQUS,PPC R JS T ARQPF OUT ORYNT ELLPU; P LQULõýSKVT,OP)(S2. P CM Y TREND EA HOFS ESDRADT GE; 5 ,R2)(RQPADHE V MO UTKOOC LTYRIIOPRT SERE; SR#P,@P)(S4. VBMO L AI TTOINT ISHPU; P HQUS,PPC R JS T ARQPF OUT ORYNT ELLPU; P LQUL,PPC R JS K OC.L . = 22OVGE S ESDRADR DEEA HONTITIAR PVESA; P)(S,-R4 V MO . NOK AS TVESA; P)(S,-R1 V MO R0 R AS LEAB TRTPA Q'STYRIIOPRS HI TOFS ESDRAD; 2 ,R0)(RTNARQP V MO ôý!FXPART TSTB PPTAB(R0) ; PRIORITY TYPE? .IFNZ FXPART BEQ QSOV20 ; FIXED .ENDC .IFNZ $TMSLC BPL QSOV10 ; TIME-SLICED .ENDC .ENDC .IFZ CHKPTC BR QSOV20 ; DYNAMIC-NO CKPT,EXIT .ENDC .IFNZ CHKPTC JMP QSRCH ; SEARCH QUEUES FOR WAITING ENTRY .ENDC ; .IFNZ $TMSLC ; ; SET UP TIMER FOR VOL BR QSOV20 ; DYNAMIC-NO CKPT,EXIT .ENDC .IFNZ CHKPTC JMP QSRCH ; SEARCH QUEUES FOR WAITING ENTRY .ENDC ; .IFNZ $TMSLC ; ; SET UP TIMER FOR VOLUNTARY SUSPENSION OF TIME-SLICE TASK ; QSOV10 = . ASL R0 ; COMPUTE PRIORITY WORD INDEX MOV QPARTN(R0),R3 ; QPART TABLE BEGINNING ADDRESS ADD #TIMMOD,R3 ; ADDRESS OF TIMER MODULE CLR ,PPC R JS K OC.L . = 22OVGE S ESDRADR DEEA HONTITIAR PVESA; P)(S,-R4 V MO . NOK AS TVESA; P)(S,-R1 V MO R0 R AS LEAB TRTPA Q'STYRIIOPRS HI TOFS ESDRAD; 2 ,R0)(RTNARQP V MO X DEIND OR WTYRIIOPR; R0 L AS S YE; 23OVGE I BM ? ELEV LTYRIIOPRC MINADY; ) R0B(TAPP TBTS T ARXP!FLCMS$T Z FN.I R HDT PRN II.PRK AS TUT-OLLROT SERE; 4)(RRIHP,PR0ñýX DEIND OR WTYRIIOPR; R0 L AS S YE; 23OVGE I BM ? ELEV LTYRIIOPRC MINADY; ) R0B(TAPP TBTS T ARXP!FLCMS$T Z FN.I R HDT PRN II.PRK AS TUT-OLLROT SERE; 4)(RRIHP,PR0 VBMO G INITWAO T ; ; STUEEQ ROFT TAPST SERE; 4)(RWDRKHW,@77#1 C BI . = 20OVGE ; S ESDRADR DEEA HAMGRRO P =R4 ; S ESDRADY TRENT ARQPS K'AS T =R2 ; ERMBðýUNTARY SUSPENSION OF TIME-SLICE TASK ; QSOV10 = . ASL R0 ; COMPUTE PRIORITY WORD INDEX MOV QPARTN(R0),R3 ; QPART TABLE BEGINNING ADDRESS ADD #TIMMOD,R3 ; ADDRESS OF TIMER MODULE CLR TMRACE(R3) ; MAKE SURE RACE FLAG RESET MOV R3,-(SP) ; MODULE ADDRESS TO STACK MOV #376,-(SP) ; WATCH-DOG AT '376 SECONDS JSR PC,QTIME ; THREAD TIMER MODULE TST (STMRACE(R3) ; MAKE SURE RACE FLAG RESET MOV R3,-(SP) ; MODULE ADDRESS TO STACK MOV #376,-(SP) ; WATCH-DOG AT '376 SECONDS JSR PC,QTIME ; THREAD TIMER MODULE TST (SP)+ ; IGNORE ERROR .ENDC QSOV20 = . MOVB #VOLSUS,TSTAT(R1) ; ; SET TASK VOLUNTAR+LY SUSPENDED TST (SP)+ ; POP CALLED BY SWITCH OFF STACK QSOV25: JMP QOVB20 ; EXIT FROM RPOM ; QSOV30 VBMO G INITWAO T ; ; STUEEQ ROFT TAPST SERE; 4)(RWDRKHW,@77#1 C BI . = 20OVGE ; S ESDRADR DEEA HAMGRRO P =R4 ; S ESDRADY TRENT ARQPS K'AS T =R2 ; ERMBNUK AS T =R1 ; TYRIIOPRK AS T =R0 ; T MPTEATT OUL-OL RAYRLVE ONGRIDUD REURCC OORRR ETERI WSCDI ; ; STUEEQ ROFN -ILLROT ARST; 00VBQO P JM SSREDD AERADHEN IOITRTPAE ATULLCCA; 4 íýNUK AS T =R1 ; TYRIIOPRK AS T =R0 ; T MPTEATT OUL-OL RAYRLVE ONGRIDUD REURCC OORRR ETERI WSCDI ; ; STUEEQ ROFN -ILLROT ARST; 00VBQO P JM SSREDD AERADHEN IOITRTPAE ATULLCCA; 4 ,ROBHN#P D AD EXND IRDWO; R1 L AS TYRIIOPRE ATULLCCA; 1 ,RR0 V MO ERADHE. RTPAM RO FTYRIIOPRS T'ESQURET GE; R0),R4I(PRPH VBMO S ESDRADY TRENT ARQPS T'ESQURET GE; 2 ,R4)(RWDRKHW V MO ìýP)+ ; IGNORE ERROR .ENDC QSOV20 = . MOVB #VOLSUS,TSTAT(R1) ; ; SET TASK VOLUNTAR+LY SUSPENDED TST (SP)+ ; POP CALLED BY SWITCH OFF STACK QSOV25: JMP QOVB20 ; EXIT FROM RPOM ; QSOV30: MOVB #VLSNCK,(R2) ; SET PSTAT = VOL. SUSPEND & NOT CKPTABLE .IFNZ $TMSLC TSTB PPTAB(R0) ; TIME-SLICE PRIORITY? BGT QSOV10 ; YES-CONSTRUCT TIMER .ENDC BR QSOV: MOVB #VLSNCK,(R2) ; SET PSTAT = VOL. SUSPEND & NOT CKPTABLE .IFNZ $TMSLC TSTB PPTAB(R0) ; TIME-SLICE PRIORITY? BGT QSOV10 ; YES-CONSTRUCT TIMER .ENDC BR QSOV20 ; NO-SET STATUS, SUSPEND AND EXIT ; ; UNSUSPEND A VALID OVERLAY TASK THAT HAS BEEN VOLUNTARILY ; SUSPENDED. ; UNSOVY = . MOV 2.(SP),R1 ; GET TASK NUMBER CLR 2.(SP) ; CLEAR ERROR RETURN S,ROBHN#P D AD EXND IRDWO; R1 L AS TYRIIOPRE ATULLCCA; 1 ,RR0 V MO ERADHE. RTPAM RO FTYRIIOPRS T'ESQURET GE; R0),R4I(PRPH VBMO S ESDRADY TRENT ARQPS T'ESQURET GE; 2 ,R4)(RWDRKHW V MO UTKOOC LTYRIIOPRT SERE; SR#P,@P)(S VBMO: 10OVGE D DEENSPSUUN ; ; L TIUNN -IEDLLROE B'TON WSO ; ; E BLTAKPCH& D ENSPSU. OL=VATST P1,T=TACS; 2)(RK,SCOLéý UTKOOC LTYRIIOPRT SERE; SR#P,@P)(S VBMO: 10OVGE D DEENSPSUUN ; ; L TIUNN -IEDLLROE B'TON WSO ; ; E BLTAKPCH& D ENSPSU. OL=VATST P1,T=TACS; 2)(RK,SCOL#V D AD S YE; 10OVGE Q BE N?IONSPEUS SRYTAUNOLNV IANT IIS; ) R2G(ARTR T TS CEVIER SOR FNGTIAI W =ATST PET-SNO; 2)(RP,OI#I B SU S YE; 20OVGE E BN ? URCC OORRR ESCDID DI; èý!20 ; NO-SET STATUS, SUSPEND AND EXIT ; ; UNSUSPEND A VALID OVERLAY TASK THAT HAS BEEN VOLUNTARILY ; SUSPENDED. ; UNSOVY = . MOV 2.(SP),R1 ; GET TASK NUMBER CLR 2.(SP) ; CLEAR ERROR RETURN SWITCH MOV @#PSR,-(SP) ; SAVE PROCESSOR STATUS ON STACK MOVB TPRTY(R1),R0 ; GET TASK TABLE PRIORITY JSR PC,QTSRCH ; FIND TASK'S QPART ENTRY BNE USOV20 ; GOT IT "WITCH MOV @#PSR,-(SP) ; SAVE PROCESSOR STATUS ON STACK MOVB TPRTY(R1),R0 ; GET TASK TABLE PRIORITY JSR PC,QTSRCH ; FIND TASK'S QPART ENTRY BNE USOV20 ; GOT IT CLR R0 ; SEARCH OTHER PRIORITY TABLES USOV10: INC R0 ; BUMP SEARCH LEVEL JSR PC,QTSRCH ; LOOK FOR TASK'S ENTRY BEQ USOV10 ; MUST BE IN ONE OF THEM USOV20 = . .IFNZ $TMS#V D AD S YE; 10OVGE Q BE N?IONSPEUS SRYTAUNOLNV IANT IIS; ) R2G(ARTR T TS CEVIER SOR FNGTIAI W =ATST PET-SNO; 2)(RP,OI#I B SU S YE; 20OVGE E BN ? URCC OORRR ESCDID DI; 4)(RWDRRHE T TS ; . UPD NEEACLT GEY LLCATIMATOAU ; L IL WIT- ET SISQ REDQ QIFT INPOS HI TAT: TENO ; ; S YE; 40OVGE Q BE ? EDSTUEEQ RENBET ORABS HA; RQRTAB,#2)(R PBCM K OC.L åý4)(RWDRRHE T TS ; . UPD NEEACLT GEY LLCATIMATOAU ; L IL WIT- ET SISQ REDQ QIFT INPOS HI TAT: TENO ; ; S YE; 40OVGE Q BE ? EDSTUEEQ RENBET ORABS HA; RQRTAB,#2)(R PBCM K OC.L O.NF IRTPA QUT-OLLROF OSTRET GE; 0 R1QP,FPC R JS EXND IRDWO ; R1 L AS R BEUM NSKTA; 1 ,R4)(RNOSKTA V MO =0R DEEA HLEAB TSKTAE USCABE ; 4 ,RR1 V MO C ND.E THWIK äý% CLR R0 ; SEARCH OTHER PRIORITY TABLES USOV10: INC R0 ; BUMP SEARCH LEVEL JSR PC,QTSRCH ; LOOK FOR TASK'S ENTRY BEQ USOV10 ; MUST BE IN ONE OF THEM USOV20 = . .IFNZ $TMSLC TSTB PPTAB(R0) ; TIME-SLICE PRIORITY BLE USOV30 ; NO MOV QPARTN(R3),R4 ; GET QPART TABLE ADDRESS ADD #TIMMOD,R4 ; ADDRESS OF PRIORITY'S TIMER MODULE .LOCK &LC TSTB PPTAB(R0) ; TIME-SLICE PRIORITY BLE USOV30 ; NO MOV QPARTN(R3),R4 ; GET QPART TABLE ADDRESS ADD #TIMMOD,R4 ; ADDRESS OF PRIORITY'S TIMER MODULE .LOCK TST TMRACE(R4) ; TIMER RACE CONDITION OCCUR BEQ USOV25 ; NO INC 4.(SP) ; YES-SET ERROR SWITCH ON STACK BR QSOV25 ; AND RETURN USOV25: MOVB #-1.,RESTIM(R4) ; SET A FULL TIM O.NF IRTPA QUT-OLLROF OSTRET GE; 0 R1QP,FPC R JS EXND IRDWO ; R1 L AS R BEUM NSKTA; 1 ,R4)(RNOSKTA V MO =0R DEEA HLEAB TSKTAE USCABE ; 4 ,RR1 V MO C ND.E THWIK OR W ; R1+,P)(S V MO O TVAPST GE; T ARDP,APC R JS P)(S,-R1 V MO 1CT1$K Z FN.I R DEEA HAMGRRO POFS ESDRAD; 1 ,RSTOLHI#- D AD CKTA SONS TUTA SORSSCERO PVESA; ) áýOR W ; R1+,P)(S V MO O TVAPST GE; T ARDP,APC R JS P)(S,-R1 V MO 1CT1$K Z FN.I R DEEA HAMGRRO POFS ESDRAD; 1 ,RSTOLHI#- D AD CKTA SONS TUTA SORSSCERO PVESA; ) SP-(R,PS@# V MO . = V TOGE ; ; 7 OM CTSE.C C PTHK!CLCMS$T Z FN.I E AG.P ; T IDO; 25LARE BR -Q DERFT ANTCEESUI QUSATSTT SE; P)(S2. R CL . = 40LARE ; RNTUREàý) TST TMRACE(R4) ; TIMER RACE CONDITION OCCUR BEQ USOV25 ; NO INC 4.(SP) ; YES-SET ERROR SWITCH ON STACK BR QSOV25 ; AND RETURN USOV25: MOVB #-1.,RESTIM(R4) ; SET A FULL TIMER VALUE SO WE MOVB (SP),@#PSR ; CAN RESET LOCK-OUT WHILE MOV R4,-(SP) ; DE-QUEUEING TIMER JSR PC,DQTIME ; UNTHREAD MODULE TST (SP)+ ; IGNORE E*ER VALUE SO WE MOVB (SP),@#PSR ; CAN RESET LOCK-OUT WHILE MOV R4,-(SP) ; DE-QUEUEING TIMER JSR PC,DQTIME ; UNTHREAD MODULE TST (SP)+ ; IGNORE ERROR STATUS .ENDC USOV30: ASL R1 ; COMPUTE TASK # WORD INDEX .LOCK MOV HEADER(R1),R4 ; IS TASK STILL CORE RESIDENT? .IFNZ CHKPTC BEQ USOV40 ; NO - SET UP FOR DYNAMIC ROLL-IN SP-(R,PS@# V MO . = V TOGE ; ; 7 OM CTSE.C C PTHK!CLCMS$T Z FN.I E AG.P ; T IDO; 25LARE BR -Q DERFT ANTCEESUI QUSATSTT SE; P)(S2. R CL . = 40LARE ; RNTURE; 10LARE BR T XI EAYRLVE ORMFOER-PITEX; T NXOV,QPC R JS . = 30LARE ; 15LARE BR WDK WRP POY-ELATRIOPPRAPS TUTA SSKTAT SE; ) R0T(TATS+,P)(S VBMO E AV SOT NESDOY ULQOÝý; 10LARE BR T XI EAYRLVE ORMFOER-PITEX; T NXOV,QPC R JS . = 30LARE ; 15LARE BR WDK WRP POY-ELATRIOPPRAPS TUTA SSKTAT SE; ) R0T(TATS+,P)(S VBMO E AV SOT NESDOY ULQO D ; ; INGA AERUM NSKTAT GE; 0 ,RP)(S1CT1$K4*.+16 V MO T IUEUE-QDE; Y VLQO,DPC R JS LYOVDQR FOS TUTA SSKTAT SE; ) R0T(TATSQ,REDQ#O VBMO: 25LARE LYOVDQR TEAFT TATSS HI TTOT SE; ) SP2(Üý-RROR STATUS .ENDC USOV30: ASL R1 ; COMPUTE TASK # WORD INDEX .LOCK MOV HEADER(R1),R4 ; IS TASK STILL CORE RESIDENT? .IFNZ CHKPTC BEQ USOV40 ; NO - SET UP FOR DYNAMIC ROLL-IN .ENDC SUB #1.,(R2) ; SET CKPTABLE OR NOT CKPTABLE ; ; FROM PREVIOUS PSTAT STATE CLR TRARG(R2) ; RESET VOL. SUSPEND FLAG ASR R1 ; GET TASK. .ENDC SUB #1.,(R2) ; SET CKPTABLE OR NOT CKPTABLE ; ; FROM PREVIOUS PSTAT STATE CLR TRARG(R2) ; RESET VOL. SUSPEND FLAG ASR R1 ; GET TASK NUMBER MOVB #QINROS,TSTAT(R1) ; SET QUEUED IN ROS STATUS ASL R3 ; PRIORITY DOUBLE-WORD INDEX .IFZ $KT11C CLR (R4) ; SET TASK THREAD WORD =0 MOV R4,@LAST(R3) ; THREAD TAS D ; ; INGA AERUM NSKTAT GE; 0 ,RP)(S1CT1$K4*.+16 V MO T IUEUE-QDE; Y VLQO,DPC R JS LYOVDQR FOS TUTA SSKTAT SE; ) R0T(TATSQ,REDQ#O VBMO: 25LARE LYOVDQR TEAFT TATSS HI TTOT SE; ) SP2(D,RTAB#T V MO S ESGRRO PINE ICRVSED-TEESQUREQ D-; 40LARE Q BE SSREOGPRN ICEVIER-SEDSTUEEQ RITEX; 30LARE T BG D?TEESQUREQ D-; Q REDQ,#R1 PBCM CKTA SONR BEUM NSKTAT PU; ÙýD,RTAB#T V MO S ESGRRO PINE ICRVSED-TEESQUREQ D-; 40LARE Q BE SSREOGPRN ICEVIER-SEDSTUEEQ RITEX; 30LARE T BG D?TEESQUREQ D-; Q REDQ,#R1 PBCM CKTA SONR BEUM NSKTAT PU; P)(S,-R0 V MO . = 20LARE ; ERLLCAO TRNTURE; PC S RT RNTURER FOC PUPT SE; P)(S+,P)(S V MO RSTEISEG RRETOES R; R OP,PR5 R JS C ND.E &6 5SR A ; R5PA$K+,P)(S Øý1 NUMBER MOVB #QINROS,TSTAT(R1) ; SET QUEUED IN ROS STATUS ASL R3 ; PRIORITY DOUBLE-WORD INDEX .IFZ $KT11C CLR (R4) ; SET TASK THREAD WORD =0 MOV R4,@LAST(R3) ; THREAD TASK BACK INTO MOV R4,LAST(R3) ; ROS PRIORITY QUEUE .ENDC .IFNZ $KT11C MOV R4,-(SP) ; HEADER PPA JSR PC,PPASV5 ; TO SVA CLR @(SP)+ ; 2K BACK INTO MOV R4,LAST(R3) ; ROS PRIORITY QUEUE .ENDC .IFNZ $KT11C MOV R4,-(SP) ; HEADER PPA JSR PC,PPASV5 ; TO SVA CLR @(SP)+ ; THREAD WORD = 0 MOV LAST(R3),-(SP) ; LAST'S PPA JSR PC,PPASV5 MOV R4,@(SP)+ ; THREAD TASK BACK INTO MOV R4,LAST(R3) ; ROS PRIORITY QUEUE .ENDC BR QSOV25 ; RETURN P)(S,-R0 V MO . = 20LARE ; ERLLCAO TRNTURE; PC S RT RNTURER FOC PUPT SE; P)(S+,P)(S V MO RSTEISEG RRETOES R; R OP,PR5 R JS C ND.E &6 5SR A ; R5PA$K+,P)(S V MO E ORSTRE; R6PA$K+,P)(S V MO 1CT1$K Z FN.I . = 15LARE + P)(S T TS: 10LARE SSREOGPRN I/O ITHWI ; ; EDSTUEEQ RRTBO/A-Q/DITEX; 20LARE I BM Õý V MO E ORSTRE; R6PA$K+,P)(S V MO 1CT1$K Z FN.I . = 15LARE + P)(S T TS: 10LARE SSREOGPRN I/O ITHWI ; ; EDSTUEEQ RRTBO/A-Q/DITEX; 20LARE I BM S TUTA S'SSKTAT GE; R1),R0T(TATS VBMO K ACSTO NT ORDWOK OR WSHPU; ) SP-( T TS #SKTAT GE; 0 ,RP)(S1CT1$K4*.+14 V MO C ND.E 6 & 5 R AS ; P)(S,-R5PA$K V MO L NEER KVESA; P)(SÔý5THREAD WORD = 0 MOV LAST(R3),-(SP) ; LAST'S PPA JSR PC,PPASV5 MOV R4,@(SP)+ ; THREAD TASK BACK INTO MOV R4,LAST(R3) ; ROS PRIORITY QUEUE .ENDC BR QSOV25 ; RETURN .IFNZ CHKPTC ; ; TASK WAS ROLLED-OUT, REQUEST ROLL-IN BY LOOKING ; LIKE A 'QOVLY' REQUEST ; R2 = QPART ENTRY ADDRESS ; USOV40 = . CMPB (R2),#200!IOIP ; I/O STILL IN PROGRESS?6 .IFNZ CHKPTC ; ; TASK WAS ROLLED-OUT, REQUEST ROLL-IN BY LOOKING ; LIKE A 'QOVLY' REQUEST ; R2 = QPART ENTRY ADDRESS ; USOV40 = . CMPB (R2),#200!IOIP ; I/O STILL IN PROGRESS? BEQ USOV50 ; YES ASR R1 ; GET BACK TO TASK NUMBER MOV R1,R3 ; USE TASK NUMBER TO FIND JSR PC,FB3ADD ; APPROPRIATE B3 ADDRESS CLR -(SP) ; SET 0 AR S TUTA S'SSKTAT GE; R1),R0T(TATS VBMO K ACSTO NT ORDWOK OR WSHPU; ) SP-( T TS #SKTAT GE; 0 ,RP)(S1CT1$K4*.+14 V MO C ND.E 6 & 5 R AS ; P)(S,-R5PA$K V MO L NEER KVESA; P)(S,-R5PA$K V MO 1CT1$K Z FN.I RSTEISEG RVESA; HRUS,PR5 R JS . = SKLTRE ; 0 =ATSTION HE WESINUTROUB SCEVIER SEMSTSYY BEDLLCA ; ; ; ITEX; 25OVDQ BR TSESQUREÑý,-R5PA$K V MO 1CT1$K Z FN.I RSTEISEG RVESA; HRUS,PR5 R JS . = SKLTRE ; 0 =ATSTION HE WESINUTROUB SCEVIER SEMSTSYY BEDLLCA ; ; ; ITEX; 25OVDQ BR TSESQUREF OERMBNUT ENEMCRDE; 0)(RQPEQNR CBDE RYNT ERTPA QIDVO; 2)(R R CL C ND.E T XI-ENO; 25OVDQ L BP -TYRIIOPRC MINADY; ) R0B(TAPP TBTS T ARXP!FLCMS$T Z FN.I . = 50Ðý9 BEQ USOV50 ; YES ASR R1 ; GET BACK TO TASK NUMBER MOV R1,R3 ; USE TASK NUMBER TO FIND JSR PC,FB3ADD ; APPROPRIATE B3 ADDRESS CLR -(SP) ; SET 0 ARGUMENT ON STACK MOV R1,-(SP) ; AND TASK NUMBER MOV #ENTIUS!200,-(SP) ; ENTRY IN USE ; ; C=1, PSTAT= WAITING DECB NREQQP(R0) ; SO 'RE-QUEUE:GUMENT ON STACK MOV R1,-(SP) ; AND TASK NUMBER MOV #ENTIUS!200,-(SP) ; ENTRY IN USE ; ; C=1, PSTAT= WAITING DECB NREQQP(R0) ; SO 'RE-QUEUE' WON'T AFFECT JMP QOVA40 ; REQUEST TO BE ROLLED-IN USOV50: CLR TRARG(R2) ; SET NOT VOLUNTARILY SUSPENDED BR QSOV25 ; AND EXIT ; .ENDC .PAGE .CSECT OM6 ; ; NOTE: F OERMBNUT ENEMCRDE; 0)(RQPEQNR CBDE RYNT ERTPA QIDVO; 2)(R R CL C ND.E T XI-ENO; 25OVDQ L BP -TYRIIOPRC MINADY; ) R0B(TAPP TBTS T ARXP!FLCMS$T Z FN.I . = 50OVDQ SKTAM RO FITEXS-YE; X1XXQN P JM C ND.E A SV PERADHE ; R4+,P)(S V MO SKTAT GE; A PPDP,APC R JS ; P)(S,-R4 V MO 1CT1$K Z FN.I T ENIDESÍýOVDQ SKTAM RO FITEXS-YE; X1XXQN P JM C ND.E A SV PERADHE ; R4+,P)(S V MO SKTAT GE; A PPDP,APC R JS ; P)(S,-R4 V MO 1CT1$K Z FN.I T ENIDES RRECOT NO; 50OVDQ Q BE S ESDRADR DEEA HSKTAT GE; 4 ,R1)(RERADHE V MO X DEIND OR WSKTAE UTMPCO; R1 L AS: 40OVDQ C ND.E T TAPSN ISTUEEQ RRTBO AET-SNO; 2)(RQ,TRBR#A VBMO S YE; 40OVÌý=' WON'T AFFECT JMP QOVA40 ; REQUEST TO BE ROLLED-IN USOV50: CLR TRARG(R2) ; SET NOT VOLUNTARILY SUSPENDED BR QSOV25 ; AND EXIT ; .ENDC .PAGE .CSECT OM6 ; ; NOTE: CANNOT ABORT TASK WITH TSTAT = OVYACT = 1 ; MAY ABORT TASKS WITH TSTAT = 2,3,4,5,9,-1,-2 OR -3 ; DQOVLY = . MOV 2.(SP),R1 ; GET TASK NUMBER MOV (SP)+,(SP) ; SET PC FOR PROPER RETURN >CANNOT ABORT TASK WITH TSTAT = OVYACT = 1 ; MAY ABORT TASKS WITH TSTAT = 2,3,4,5,9,-1,-2 OR -3 ; DQOVLY = . MOV 2.(SP),R1 ; GET TASK NUMBER MOV (SP)+,(SP) ; SET PC FOR PROPER RETURN MOV @#PSR,-(SP) DQOV05: MOVB TPRTY(R1),R0 ; GET TASK TABLE PRIORITY JSR PC,QTSRCH ; FIND TASK'S QPART ENTRY BNE DQOV20 ; GOT IT CLR R0 ; SEARCH OTHER PRIORITY TABLES DQOV10: INC RRECOT NO; 50OVDQ Q BE S ESDRADR DEEA HSKTAT GE; 4 ,R1)(RERADHE V MO X DEIND OR WSKTAE UTMPCO; R1 L AS: 40OVDQ C ND.E T TAPSN ISTUEEQ RRTBO AET-SNO; 2)(RQ,TRBR#A VBMO S YE; 40OVDQ I BM ? ELEV LTYRIIOPRC MINADY; ) R0B(TAPP TBTS T ARXP!FLCMS$T Z FN.I . = 30OVDQ ITEXD AN; 20VBQO P JM: 25OVDQ D TEESQURET ORABT SES-YE; 2)(RQ,TRBR#A VBMO NO; ÉýDQ I BM ? ELEV LTYRIIOPRC MINADY; ) R0B(TAPP TBTS T ARXP!FLCMS$T Z FN.I . = 30OVDQ ITEXD AN; 20VBQO P JM: 25OVDQ D TEESQURET ORABT SES-YE; 2)(RQ,TRBR#A VBMO NO; 30OVDQ T BL ? SSREOGPRN IRTBO AORO I/; IPIO,#R4 P CM R40,6077#1 C BI: 23OVDQ LYOVTSY BEDLLPUH US PSECAIN; 05OVDQ BR T OUCKLOT SERE; SR#P,@P)(S VBMO OK; 23OVDQ E BN ÈýÄý MOV @#PSR,-(SP) DQOV05: MOVB TPRTY(R1),R0 ; GET TASK TABLE PRIORITY JSR PC,QTSRCH ; FIND TASK'S QPART ENTRY BNE DQOV20 ; GOT IT CLR R0 ; SEARCH OTHER PRIORITY TABLES DQOV10: INC R0 ; BUMP SEARCH LEVEL JSR PC,QTSRCH ; LOOK FOR TASK'S ENTRY BEQ DQOV10 ; MUST BE IN ONE OF THEM DQOV20 = . .LOCK MOV (R2),R4 ; GET PSTAT Åý R0 ; BUMP SEARCH LEVEL JSR PC,QTSRCH ; LOOK FOR TASK'S ENTRY BEQ DQOV10 ; MUST BE IN ONE OF THEM DQOV20 = . .LOCK MOV (R2),R4 ; GET PSTAT BNE DQOV23 ; OK MOVB (SP),@#PSR ; RESET LOCKOUT BR DQOV05 ; INCASE PUSH PULLED BY TSOVLY DQOV23: BIC #177600,R4 CMP R4,#IOIP ; I/O OR ABORT IN PROGRESS? BLT DQOV30