>7$J_>: `Q$ȋ @ B C  ` YSjLKd#Y`K =kЎ4d^r8}K8}Kw ,ąe KB{L}Ki xeKQ7}K9njLpKs%vLGKn; 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 ; E0f8f<M `Txw , e BfE͓͋7  @ D$ e6 B  @ǁP%Haw eN1" $#  ̋ NC ̋&͕ E  E?  &    w 6"&f&! /8G /V e@8f 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%(  EUHQ̳ (&  Β ,^ 6S$%5beNa  搎NŀW W  װΌeΌ%H p MECP  "ϰU ` ( U (0 w w &* $$$E e)U@    J U@w  "Ő ea*Y p ŐŊ& " E T (P $bc H  U  "b UE T0 0 ŋU  pU2"װw  <@E%A! װ5KE֊EeEU%p!Ed Qbep "װ,ŀ Q 5lH!Oc Jp  ŌW  IװAa Q  `E(f a c   KаOe$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 LB   w  \< w ew | 56 e? 0 @#E?UU6 3 w(  6  < wL epe4K#@$2  1  3 0 '@fDe"@  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 SUBROUWf& p0e04 wJw W ͕,RA!ʕ . ee4/  %  Q$U$U%  AB I#   f& f a( ֵ W&&  %  ,^ b)̌ $$ &$b$"  h"  ⁁Wx &e !+ffe5@'&&f}  CE Df ͝U@e U W Ɂ w  W Mw l W W ! f cU 8We U N U e U U  F!- F e F!- f  B EpS $`1 $ ^C . DATE:- TIME:- EEaC$&pcF %$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/ . fe& E NaeEM MJ f& NJ  f ,^ _e   A̋$)&E eAaW$  p  EW" gE( ևJ!  W=J(@U%EE ,^ $)6; "&f( f0 R,E KSa KcW" ge B Q$p  ֝,U%g"MBbF $D`);D` &*   y54- &&( $&& .^  (  t  e!&#Ee   U E3!( &W E$ &  .^ 8  e C@! &.^  U%g"G$B$bF %? EL05AaAa5EEd 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 hfkNfmCMoErv-xqF $$D` R&*  D`̋E B ȋ9 ($) & & .^   U%g"G$5"ۆ 5`  :  E  U (  e: ("$ `%͋͊GhhE6 w7 l Õ7 p  7 Hwr wb7 *CW Հ |7 7  B߳tՀߕ@t97 D672G7 FՀ  %& n (   7 Nߓp2|߳t&^  #ʔ `Z 7 & 7 2 ~   j ꀣw e@@ tA @ w pe 2̓@ p @ d e6B @%w"CY7Xe  ߓp4 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 ; PA7e~Tv.xf 77UAh h j UAh$^ h px  h |H.M w e w 7  7E@L LNf<ߋL- S ʋ_ \Y   Qt nIN d f^ ߋL wLJU@L$_  Lx & ߕ N   &^ %eeA mIf@ OWҕ^J@A Օ E  Iҕ\͋͊W  @ @Q Rʋ %6RbIɕ;fIAeV! פ ̕ .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 EECDe0 f `$Ugzw>     e  f  E  `#' W'͋ WUWe ee e TZ  W#e1$ 'd d0 4@c  W3 e % E0 @c ` V%  $g"H @ U$eF e v&*  JEl&&  E`"D    (  U7   (Hh`B$$-,^ eB UJ &^ %7ewe|w~xU% e) & E Ee@wH> 4.f  E !w ~ԋp!w lԋj!w ` Ձ!w R AaBa %.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  Ae ! ! ! ! ! `0 . t1 D Ѥ 1ӥ, ˥,˥<˥  ˥.˥[ f˥*8D`%  % %2"6U%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%OI ZZa 達 g" )em`& ($^ ` H((&(  ee 6## DASA ECODBERE KITIENMOPR 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 7FILE ERROR !  & L   8&& 3e0 7`$ "U%0 Yb.$)&&&cA!D 5@ 77 DEV. FULL ߕ ߋtvȊ& N&"W0W ѕ &^ % P  I W W,CAנ> ` ` g E A(eE eE ΊE`e EN W= EC@@@PN !&^ %  a  WR  WK c%@eJ!!! ̋ee&^ ߓpD&^ %2 ɊA!@ , 0"3  BEB WS Ɍ  3U%## A >ߋt'@fA! wV%eJ   e4   $)3U%0e @ ( &^ 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 m7R A!B0Z0W W   B   •/  :  A ߋp͗rŀ^UWI•\ ͋Ba͊QB  BN DIA% &^ % & !amB: ( #W[6e \c p s! bRK l c  A! ,  J W. ScA!W]W0W9@WAͥZfW,W VA!N  m&^ %ew H R   fa e W%!  D b aB !  p & . 'Ȋ% W, 6 e !  e 5 0   f%ev&^ %  @e e Me  ʕ ʊ $͋#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( &^ & ݁ "uz +SN&*)-fQK'a ͋,L w~B ` 5 5 6   w w* w4  DUUEU S & fNUVUe #<f& * 1U U@DEU!>Uf& * 5 U UCB E e v * "U%Gef.  EeEv &&&^ &ep 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   #ccD  fNUVU00%%% p b $^ &&e E]e( &^ & ݁ "u 9:-  -5@! E 6 &M  $^ "U%Gwf&  p ,M 'p pT e TTTTTL&M 0   E Caee D!K& E ae f.M &0 & N.L &0 L &M  WE&  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  aCU%W# e  p p 0 P e"bU%M%& N.^ 0 E e E `eD#E &. 0 &$^ &&e E]e( &^ & ݁ "uVq &$&%-('#/ xC""""""" """""""""""""""""""""""""""""""""""""""233333333333333333333333DDDDDDD@DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDLADDB Cs@Q{|s@Q{}$Dgfffffffffffffffffffffffffffffffffffffffffffffa ͋,L w:B8 ` 5 &  E >w   f5eU@  [*   & * G &( 8L'4e Q$ BBB"   U@ U e  "U%Gef. 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 PVeĜ`XZߓQ$```BEUA$^ B 5  &^ U 7 rf`> `5pDDp5@p ve& Ap&p b;ftȋW`WpWpWgW``!? ef mRae7 x;7tpȋ&5$^ JB( ! @  x p 8 qH 7pD7 77356:'"90SUVYݬ_?Z-KMNPѠ!$\ҦABDGH.<(+ɠ356':90SUVY_(\"Z-KMNPѠ$ݻ+ABDGH.<|:M @5@57 2  x 7(  e$wew  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 ttt*tһC! *q,(  0,<;<;􃴻 :<;P*P{,*RE. x2@:<}@_MQ@.Ye@;}G@@ ` @(.D  v~v~@v~8}.v~  75 *~7vI/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. L2 Nh9 Nha6yh$.22* 8} . . .Jv~J~ZV*v fi"fl"fp*"L CfEv *7i*.TTH;ll7 ~YK*R~ ~l7 &7 ,7 *v2@t (@&1 EJ =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@. ` #! \8HTZ V *&7B  ɕ0  , 0 5ѕ 5 5$~7 ~w }H*T }w N;P{$*xw  } }e %D!   ILL PAR!  .NON-QUIESCENT  &@E:@f:@=sL"@v@@~.y@y@y @yH@yp@%.y@yp@y@'@}@K"@LC @R:@h.d@(D[qjhv@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 DESCR13" 2fSzLC "yx.L  f&{ 20ƻ,MMܻ"@ N3| |wfҾT*Xwv DECTAPE COPY V01B e*|ORIGINAL ON UNIT CO4z7 l a. |D S#  f. l    5he:h g:himRhTqh! :f. 6.r&&&&&  R:-.M) F 7)ܼ DISK DIRECTORY c* UIC T FILNAM.EXT DATE *, MODE 8PY T/*O UNIT ????  *** I/O *ľERROR, UNIT  *** UNRECOVERADBLE COPYDR0 = 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{*;}G2" ` ( ` +.Dzy:6yLm y"yu.f^ Cr@.y yHyp y ypE wB* ` g' ` yx LC $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*wwyy*wMMR t.W, ! 1 .w(W, ! .S. w f ы[g4 LC  .T.'d w f d[g4 LC &.UAA wL^Y T% ) / tVEK*xE*8x*\x0$E7Pd]$Dԝԝ  l X& Dĥ  D0 C .L ``a - 6 vw  &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.mK@{~T{00000* S{t Z7 -)*>zx:x f wL>*bz-r yi ,xx w urv&f# & l 2.WtE@`$Wt Ev*  . OxJN*0|{NENE*y*T|{LM*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@hfp@fSz@fTz@[g4@.9mQ@imR@m@[qj@v@@.@z(d@(d@@L{_,|7 @7 8,{B|B|{8|k* }8|0{.  *.}ww*>{7Hxwxw z*b{:xw,xw ֵj,{5@z& & Wt 2.VE@`7$Et7`E .ShߐW  Q h. r = f  @4f@.LC @(E:hf:hX)h#.)bh9p:h9ah4(r)XhV||0|/N*R}Na w| -  *v} -    w,xw7,x*{w &=  n8Z0׭=]*{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|40|/,~"w wL||L|e*.~  >{L|L|AwwG*`|,xw \vwwwm*| dtr 0 &C:J   [3B &[o.[[\\]] E hhjj.[. FR7 @l.B<fv F  &0DXl*0DXl  @*R~% w &f"F{U*v~V|V| ,~\wR.|f"VvwwZww*| ww.vxxX*| 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*`}vwwA& *}Ν1 0vww8,}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.1h7 j7 b7 d7 b0 bwf5XwXDsD5XbXX_XL~& Ν 0tww*}w  twww,}z .0& Νi 2025 0 = NOT 11/25 $1120 = 0 ;1 = 11020 OR LESS (11/05, ETC.) $KT11C = 1 ;1 =Szh.:h&f57 |2h 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 cKHHcX000YYDD0Y*ja  aUN^hU^hENNiENiREhsaDEiPRgPgAL~FRjKZe*~-TN4\ b0*N *~F@ą E50515253545556575859N"7071727374 .ENDC $RASM = 1 ;1 = ASSEMBLER IS IN SYSTEM .IFG $KT11C-1 XXXXXXXX .E7 X.Xc8HXw  a 8HX[g4"YXX0YYll0YROS 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 8W"4FfTz.Y0YY0Yr7 j a*a6a a4Bw `B *б4jj``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 4IS 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*jjFjjTw 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; 0BNE 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` -#ztnE*#dw c J  (*pmЕCxpEz7 t-r*mh bnnS$-T N8n(dkh7_w ^0Y*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̋#ˋ ׭   !*wf w 47 5@x *-fb7 . xrЕ<*rnE b0 Е>Е[׭ *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 .ob L fp vЕ wPJ "{&E*~ LIBR-11 V002A  # *E  = cf ĕ= cM:.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 NOC7 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 - -*<mNw *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) * ;* MOg]D 1e[*1n ^g e$[.\c@hwl& & 5pt4 VEL 3 NEQP04 = 10. ; NO. OF ENTRYS QPART LEVEL 4 NEQP05 = 10. ; NO. OF ENTRYS QPw& \& פ *~ HԔע ԕ (*%w"& & &   "r- ^-*-Pa*: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. .zF77 :-^X V *``* :ß" *ƹ  s w 7ow aPs|a ZJVF*sRB6w na@a *Bs 5 *` 8" 5 * d0 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 |7jtw RTaJaw 7[4$tw pa|aJaw .D`Jar,>ֲ RIJ ,:&(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 PRIORITR .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 T4Q STRING: DQR*QDQNENE*yHrěě*@^'  &f"eѕ .d  ѕ ѕ 嬞w*  ""* "7*wTƱT$ T$0Kaf0w 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; 10LQPLY 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 BO 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 # "ı  %*%  % .*@ı ~%I7l<8B&*Ze, "7lee*~ "7w j-pw $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 bS  +* % % :.: Da%DL *V7K7H7777777v*z7s7p7h777X7R7O7X*7U7O\ BSIZE ; VALUE ; ; B) IF FIXED OR TIME SLICED-CONTAINS ASSIGNED BSIZE ; VALUE Q*S7 LQRQ/VwR*TH w2QRQ **:T HPQOUBRSU ; 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 @ɥ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*޸@\ bz*2nr޸ed]f`*VrwNB *>wT* v* C-`z7Z7"p*D!7,j-C $NBLKS-$SB007-$PS007 XXXXXXXX ; PRI 7 TOO LARGE .ENDC .ENDC .IFL PRD  *  4? * , w:5xP*j5^ Xe ;* **********************************************************************;* 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 Qaee *(EeEE!"e *B|ee=jee 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 FOT 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<7m7 7   &f \,RdCCrjt"8*ɥ ɥ vb#$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! ! fx o&<x9]  | \&0s޸޸w0^ 7X e% @޸@F* ޸ t޸j$l7P *tr"w Z7*$ʸw *wBg7 (@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 $l7X 7 i*R ( R7*$&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 hf"  w>*ƮwThNDC .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 vLIBaF*Ц 6IP14 $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 BA015-$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 RE, e-"w r7v >Zص$vڶ,6T^x#_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 LTY1 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 n7B!,e*d&*޸@\ bz*2nr޸ed]f`*VrwNRIIOPRT 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 PRIOR7@޸ Q*%7 7 8$*  e @޸E.(B/&  *. T7  *Rw%X7q7 n%ftaNO = 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*,Ε rw** >^ X f e  w2,NfwdwTB*tLB3FR ; 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 ADww 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 HAMGRAMOV 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| 7wrxwh.u E 74~wh^7 VB*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 ke=.rw @w fwww=w . w  rw 8*h&jwlj*w`jwTjwj*wjw$$Ћ7 ׭ r*w f hf"  w>*Ʈw%ĕtB C ,.D72 VVw Bw .ec ; PDP-11 DOS SYSTEM MACROS V003A ;COPYRIGHT 1972 DIGITAL EQUIPMENT CORPORATION ; ;  JUNE 1, 1972. drwO*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 Tqpt7p7ttw r ptptt3.t5ppgpbtrCK EMT <^O6> .ENDM .MACRO .RLSE .LBLCK .MCALL .AMODE .AMODE .LBLCK EMT <^O7> .ENDM .MACRO .CLs@(  B *m -6t*(7 ee #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 ; TYRIIOPRa 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> .On*e 7!  #2-*$7!e e  !*H!!!!E-OF-DAY INTERRUPT TIMBIT = 10 ;BIT TO ENABLE INTERVAL TIMER INTERRUPT STLBIT = 0 . {(2@hyHh$;}JhK 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#PeTASK. 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%* wXjL*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 CQ. å,@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!XASPMMACRO .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 EMTl*Թ0?n0=*,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  < hM  .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. CLCK,.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 RESIDENTh/R;:v, $-d&2w09&$,w*zvXY 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 SEyINVOLUTARILY ; 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: ,82r   ."" ; @:<}@hfp@I.fSz@fTz@[g4@Tq@9a@.(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.,HIOFCNOPTION $SGMNT = 1 ; SEGMENT LOAD OPTION $FTMAX = 10. ; LARGEST FILE TYPE IN SYSTEM E@`$Wt܀ EV,n`v x&f&, & WtE@`7.@(/6=w ((/ 6 = [g4$(.fV #^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-EPROGRAM 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,nx& 47 503, 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 ,2W, ! 1 ,.2w(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 ; QOVE40VE30: 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 yINUTROUB 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 ; ; 1CT1xSSOR 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 tTASK'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 ATqAI 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 pRESTORE 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 (RR0 ; 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; l2),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)(RERhTB (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 = PTAT 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 TOFeADHE 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 ; ; ; dRIORITY 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 YG 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 XSOFTWARE 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 PR4 ; 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 ; )+R1IT 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 9TSEL 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 ; ROW 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 4LL-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 A1IN . = 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 N020 ; 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 = QUSRCH 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 OR0),(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 BA 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-YETS 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 #1IT 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 ATR 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)(RMOV @#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 LQULSKVT,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,PR0X 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 ; ERMBUNTARY 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)(S5THREAD 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 . = 509 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 ENIDESOVDQ 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