; PDP-11 DOS SYSTEM MACROS V003A ;COPYRIGHT 1972 DIGITAL EQUIPMENT CORPORATION ; ;  JUNE 1, 1972. .MACRO .PARAM R0=%^O0 R1=%^O1 R2=%^O2 R3=%^O3 R4=%^O4 R5=%^O5 R6=%^O6 R7=%^O7 SP=%^O6 PC=%^O7 PSW=^O177776 SWR=^O177570 .ENDM .MACRO .INIT .LBLCK .MCALL .AMODE .AMODE .LBLCK EMT <^O6> .ENDM .MACRO .RLSE .LBLCK .MCALL .AMODE .AMODE .LBLCK EMT <^O7> .ENDM .MACRO .CLOSE ..kQr@,@,@H.kQ@x@kЎHHIH.rH(HxKH@MHkeH].3fH KHK` H K HKH.K%HKKHK[MHKQHKQH@.KRHK RHKwHKyHKzH@.K[H K-HC`OHC`OHC`OH.C`OHC`OHC`OHC`OHC`OHb.C`OHC`OH C`OH C`OH C`OH .C`OH C`. g; 9@; P<@= @.k @k@|@@@H.,H,HkQHxH`@Y.q!`@t!@t!@t!@Q@t!p@.!@""`@"W@t'@t'@{.-`@8Z@09@49%@59@j@.69@79@79@@79}@<9@l.<9@@<9}@>9@>9@@>9@.D9@D9%@J9@9@ ;@. ;@uL.%( &}hj&h|.yshX:(X:;d(X:vL(f(.;d(2vL(R(*lzw(r (rh(rBx(( CREF V004A #f % X: X:vL;dd % X:;d X:vLvL= % X:vL X:vLr   LBLCK .MCALL .AMODE .AMODE .LBLCK EMT <^O17> .ENDM .MACRO .READ .LBLCK,.LBUFF .MCALL .AMODE .AMODE .LBUFF .AMODE .LBLCK EMT <^O4> .ENDM .MACRO .WRITE .LBLCK,.LBUFF .MCALL .AMODE .AMODE .LBUFF .AMODE .LBLCK EMT <^O2> .ENDM .MACRO .OPENO .LBLCK,.FBLCK .MCALL .CODE,.OPEN .CODE .FBLCK,<^O2> .OPEN .LBLCK,.FBLCK .ENDM .MACRO .OPENI .LBLCK,.FBLCK .MCALL .CODE,.OPEN .CODE .FBLCK,<^O4> .OPEN .LBLCK,.FBLCK .E OH g @ gh@z@.̖H(qQW((; 9h; Pq!`h@t!hJ t!h".t!@Qhn"t!phn"!h""`h"Whj.&ht'ht'h-`h 8Zh.09h49%h59@jh69h 79hY.79@h79}h<9h<9@h<9}h .>9h>9@h>9hD9hD9%h.J9h9h ;h&# ;h$#uL `;@{L}@kQp@kQr@.QL@ R`;@W+@Xp@iYy@.Zd@d^@C`O@C`O@C`O@8.C`O@C`O@C`O@C`O@C`O@.C`O@C`O@C`O@C`O@C`O@0.C`O@C`O@/d@@fZ@p<@".pp@Uq@Xq}@$w~@|~K@.*@( gw(H g h ghhHzh@ gwq.% rh rBx r  rh rBx r  rh rBx r  rh rBx r  rh NDM .MACRO .OPENU .LBLCK,.FBLCK .MCALL .CODE,.OPEN .CODE .FBLCK,<^O1> .OPEN .LBLCK,.FBLCK .ENDM .MACRO .OPENC .LBLCK,.FBLCK .MCALL .CODE,.OPEN .CODE .FBLCK,<^O13> .OPEN .LBLCK,.FBLCK .ENDM .MACRO .OPENE .LBLCK,.FBLCK .MCALL .CODE,.OPEN .CODE .FBLCK,<^O3> .OPEN .LBLCK,.FBLCK .ENDM .MACRO .OPEN .LBLCK,.FBLCK .MCALL .AMODE .AMODE .FBLCK .AMODE .LBLCK EMT <^O16> .ENDM `;h.{L}hkQphv"kQrhv"QLhX' R`;h%,.W+h6%XphB%iYyhZdh`%d^hr./d@h2fZhp .ENDM .MACRO .WAITR .LBLCK,.ADDR .MCALL .AMODE .AMODE .ADDR .AMODE .LBLCK EMT <^O0> .ENDM .MACRO .BLOCK .LBLCK,.BBLCK .MCALL .AMODE .AMODE .BBLCK .AMODE .LBLCK EMT <^O11> .ENDM .MACRO .TRAN .LBLCK,.TBLCK .MCALL .AMODE .AMODE .TBLCK .AMODE .LBLCK EMT <^O10> .ENDM .MACRO .SPEC .LBLCK,.SARG .MCALL .AMODE .AMODE .SARG .AMODX: X:vL";dF %"t X:;d X:vL"vL %"t X:vL X:vL"Ԁ| ABEILMNOPQRTUZr  rh rBx r  rh rBx r  rh  0 eoov& C`OC`OC`O#C`OY.t .C`O C`OC`OC`O%C`Ow. P;.C`OC`OC`OC`O'C`Ou.0  . C`OC`OC`O!C`O)C`Ou.V%& C`OC`OC`O#C`OrBx r  rh rBx  r  rh rBx r  rh rBx r   lzwrh  lzwE .LBLCK EMT <^O12> .ENDM .MACRO .STAT .LBLCK .MCALL .AMODE .AMODE .LBLCK EMT <^O13> .ENDM .MACRO .ALLOC .LBLCK,.FBLCK,.N .MCALL .AMODE .AMODE .N .AMODE .FBLCK .AMODE .LBLCK EMT <^O15> .ENDM .MACRO .DELET .LBLCK,.FBLCK .MCALL .AMODE .AMODE .FBLCK .AMODE .LBLCK EMT <^O21> .ENDM .MACRO .RENAM .LBLCK,.OFB,.NFB .MCALL .AMODE .AMODE .NFB .AMODE .OFB .AMODE .LBLCK EMT <^O20> .ENDM rBx r  rh rBx r  rh rBx  r   rh   rBx   r   rh   rBx c.|  % %.C`O C`OC`OC`O%C`O5.@ % @  ~@r.C`OC`OC`OC`O'C`Ov.~@~%@\!42}s:. C`OC`OC`O!C`O)C`O. s: :@@AKF& C`OC`OC`O#C`O^.@K &@K8@K09@KK@K.C`O C`OrBx (  y(  R f R X:,0R     . X:R X: X:f "R.T  "*R  R" $r (rh*z1  9 7 7 . rBxRR f"X: ,&|! E .MACRO .APPEND .LBLCK,.1FB,.2FB .MCALL .AMODE .AMODE .2FB .AMODE .1FB .AMODE .LBLCK EMT <^O2> .ENDM .MACRO .LOOK .LBLCK,.FBLCK,.OP .MCALL .AMODE .AMODE .FBLCK .IIF NB,.OP,CLR -(SP) .AMODE .LBLCK EMT <^O14> .ENDM .MACRO .KEEP .LBLCK,.FBLCK .MCALL .AMODE .AMODE .FBLCK .AMODE .LBLCK EMT <^O24> .ENDM .MACRO .EXIT EMT <^O60> .ENDM .MACRO .TRAP .STUS  r   wrhx @ w@rBxe r   lzwrh  lzwrBx r   wrhi   w rBxv r  Z HqZrh C`OC`O%C`O.:K@K@K@K@Kf@.C`OC`OC`OC`O'C`O.`KK zQD @R@@R@8K. C`OC`OC`O!C`O)C`OM.@ S@S%@S@S @pTl& C`OC`OC`O#C`O.pT@8 T@pT@T%@OX.C`O C`OC`OC`O%C`O0. OX OXOX%Yb*X:| R R Rq.S! Sf"". ҕ& X: R" R" X:;.?   & & X: X: X:&X:. `57 -"X: X:&X:.,&  w rB!e  iX:  (X: .R7   eeE"X: ,.ADDR .MCALL .AMODE .AMODE .ADDR .AMODE .STUS MOV #^O1,-(SP) EMT <^O41> .ENDM .MACRO .STFPU .STUS,.ADDR .MCALL .AMODE .AMODE .ADDR .AMODE .STUS MOV #^O3,-(SP) EMT <^O41> .ENDM .MACRO .RECRD .LBLCK,.RBLCK .MCALL .AMODE .AMODE .RBLCK .AMODE .LBLCK EMT <^O25> .ENDM .MACRO .DUMP .LOW,.HIGH,.CDE .MCALL .AMODE .AMODE .LOW .AMODE .HIGH .AMODE .CDE EMT <^O64> .ENDM .MACRO .RSTRT .ADDR .MCALL .AMODEzd HqzrBx r   g rhM  ghrBxZ r  z` Hqzrh V HqrBx qQWM( w " Y.f R Ԁ| R"Rs, 1  F!y..C`OC`OC`OC`O'C`O}.[q`"r@ r @r r a. C`OC`OC`O!C`O)C`Os.sssw w & C`OC`OC`O#C`Oa.D;wwww w[.C`O C`OC`OC`O%C`O.j%w@8wK ww.C`OC`OC`OC`O'C`O.y~Ly "R&R .x lB   "  X: X: $X:8&W w ff=&  X: X: lzw SA]  3 S.    H&X:R W./5w &&&   ^.p    (J "J! .AMODE .ADDR MOV #^O2,-(SP) EMT <^O41> .ENDM .MACRO .CORE MOV #^O100,-(SP) EMT <^O41> .ENDM .MACRO .MONR MOV #^O101,-(SP) EMT <^O41> .ENDM .MACRO .MONF MOV #^O102,-(SP) EMT <^O41> .ENDM .MACRO .DATE MOV #^O103,-(SP) EMT <^O41> .ENDM .MACRO .TIME MOV #^O104,-(SP) EMT <^O41> .ENDM .MACRO .GTUIC MOV #^O105,-(SP) EMT <^O41> .ENDM .MA" r rh rBxRf_D2!0"RR2 Ԁ| MACRO V004A R  qQWT.Tw J S! Sf""& Ԁ|J X:  R" "R"q.z0ŝ   .ҕ? w j w& X:  Hq X:  &X: E.t t @!   . X:  X:tX:  Hq#yyy@. C`OC`OC`O!C`O)C`O.yh@y@y &@y&@y`' & C`OC`OC`O#C`O.@y@y@y@yfyA.C`O C`OC`OC`O%C`O.y} z@ z@ z%@'.C`OC`OC`OC`O'C`O,.(Yz z d |. C`OC`OC`O!C`O)C`Om$.. RR   & &R .T &&  %  T TX:T&X:T.z L 1e-``&7 F  R X:Y.^ҕ 7 pR ^. X:^X:;dX:;d &X:^(X:;d`* 7   w . X:vLX: X:X: R B  .%CRO .SYSDV MOV #^O106,-(SP) EMT <^O41> .ENDM .MACRO .RADPK .ADDR .MCALL .AMODE .AMODE .ADDR CLR -(SP) EMT <^O42> .ENDM .MACRO .RADUP .ADDR,.WRD .MCALL .AMODE .AMODE .WRD .AMODE .ADDR MOV #^O1,-(SP) EMT <^O42> .ENDM .MACRO .D2BIN .ADDR .MCALL .AMODE .AMODE .ADDR MOV #^O2,-(SP) EMT <^O42> .ENDM .MACRO .BIN2D .ADDR,.WRD .MCALL .AMODE .AMODE .WRD .AMODE .ADDR MOV #^O3,-(SP) EMT <^O42> .ENDM & (Hq.  `5 w  jX:X:(X:j\,  % eX^ d8. R R X:X X:^&X:d8.h7 }d&  w .X:hX:  X: X: Hq.6B!e |7~ . X:X:|X:"X:~$X:.\ N eeE h HqR &'.N @ %@}j@x;1& C`OC`OC`O#C`O^.t;B;\E\XHi$; 9; P<= k &kb.}֯֯$|@` q!`(t!.֯x֯֯ׯ}گr t!t!@Qt!p"!.ޯp!P$^l!$""` "Wt't'$-`. n( 7   >  w.;d X:RR$X:;d." F %%%%  X:.4%%" T > 8X:&X:;d(X:&Z  7   -.X:X:;dX:;dX:;d X:;d.xf  D e&X: X:;d X:(X:;dm. C  C %-ʇ -Ň) .MACRO .O2BIN .ADDR .MCALL .AMODE .AMODE .ADDR MOV #^O4,-(SP) EMT <^O42> .ENDM .MACRO .BIN2O .ADDR,.WRD .MCALL .AMODE .AMODE .WRD .AMODE .ADDR MOV #^O5,-(SP) EMT <^O42> .ENDM .MACRO .CSI1 .CMDBF .MCALL .AMODE .AMODE .CMDBF EMT <^O56> .ENDM .MACRO .CSI2 .CSBLK .MCALL .AMODE .AMODE .CSBLK EMT <^O57> .ENDM .MACRO .DTCVT .ADDR .MCALL .CVTDT *Ԁ|3. " F3 v  0 . X: X:" Ԁ|3r  R.B ` w ^w R  wRB ,& Ԁ|B X: X:  "Hq 1Hq}X,. X: X: X:X R, RԀ|. ERRORS DETECTED: FREE CORE: . DWORDS # qQWp. H&/5+nn!n%n`$8Z0949%59@j&69F.2+n,n.nKnK$7979@79} <9(<9@.Xn Nn&XnHXn[n} <9}>9>9@">9.~n}nq%zdzxd$D9 D9%J99$ ;.鰼Ry   $ ;uL`;{L}kQp&kQr., |1q34 .ENDM .MACRO .GTPLA CLR -(SP) MOV #^O5,-(SP) EMT <^O41> .ENDM .MACRO .STPLA .ADDR .MCALL .AMODE .AMODE .ADDR MOV #^O5,-(SP) EMT <^O41> .ENDM .MACRO .GTCIL .w & &|.&   e@ F  !.(  (T RR JT X:.N& & pe5``&7w(X:.t L(ҕ 7 @RL X:X:;d X:;d $  ,7 7  7 . X: X:;dX:vLX:vLX:,  ]w f.X:X: X:$QL R`;W+ Xp(iYy.DŞ\,:ѱX Zdd^/d@"fZQ.ѱձ@Qձ g,)~$p< ppUqXq}$$w~< q|~K*0X:X:X:  R.p \, && e X: RX: .5 &     HN ѕ.# ѕ@  e7  ÃSX: "X: .  f  wm%^^.X: X:;d X:$X: (X:^. fefP  r  r 3..*m "ҕ- m  1 MOV #^O107,-(SP) EMT <^O41> .ENDM .MACRO .GTSTK CLR -(SP) MOV #^O4,-(SP) EMT <^O41> .ENDM .MACRO .STSTK .ADDR .MCALL .AMODE .AMODE .ADDR MOV #^O4,-(SP) EMT <^O41> .ENDM .MACRO .RUN .RNBLK .MCALL .AMODE .AMODE .RNBLK EMT <^O65> .ENDM .MACRO .FLUSH .CDE .MCALL .AMODE .AMODE .CDE EMT <^O67> .ENDM ; THE MACRO .AMODE ACCEPTS ONE ARGUMENT AND ; AS A FUNCTION OF THE ADDRESSING MODE OF ; THE ARGUMENT GENERATES THE2X:X:vL.fw  7   . X:;d X:vL$X:NP.R X:N X:X:PX:. |r    2 w.& Hq X:|X:r$X:;d <Hq q qQW> .>t   ff7  . X:t X:  X:"X: &Hq3; MAGTAP.317 ; MAGTAP.316 9-MAY-73 ; MAGTAP.315 4-MAY-73 ; MAGTAP.314 2-MAY-73 ; MAGTAP.313 1-MAY-73 ; MAGTAP.312 27-APR-73 ; MAGTAP.311 26-APR-73 ; MAGTAP.310 24-APR-73 ; MAGTAP.309 21-APR-73 .TITLE MAGTAP ;********************************************************************** ;* M A G T A P ** ;* ** ;* PROGRAM IDENTIFICATION. 4X:X:%T f {  X:Z(.ZjP j c' fjj (X:w.  %h-  & 5. X: X:hX:  X:(X: r,770m7 7  &f J*X: 0X:X:X:r. ҕ ҕ ҕ ҕ ]X:X: 5 APPROPRIATE ; MOV TO -(SP). ; ADDRESS MODES THAT ARE TROUBLESOME (E.G. ; X(SP)) OR UNLIKELY (E.G. SP) WILL RESULT ; IN A .ERROR TO CMO INCLUDING THE ; VALUE OF THE ADDRESS MODE (E.G. X(SP) ; IS REPRESENTED AS 000066), THE ARGUMENT ITSELF ; AND THE TEXT "ADDRESSING MODE ILLEGAL AS SYSTEM ; MACRO ARGUMENT". ; .MACRO .AMODE .ARG SP=%^O6 .NTYPE .SYM,.ARG ;.SYM=ADDRESS MODE. .IF LE,.SYM-^O5 MOV .ARG,-(SP) ;R0 TO R5 .MEXIT .ENDC .IF EQ,.SYM&^O70-^O10 .IF LE,.SYM&^O7-6&dv -  w  ).X: X: X:X:;dX:x7 x* Hq X:xX:X:x`(z| ! ! f.X:z X:| X:X:;d X:= X:Hq@kQ4dlzw PA`  / qQWqQW, 7 7`7 MAGTAP - MAGNETIC TAPE INTERFACE ** ;* SUBROUTINE USING THE KT-11C AND THE GULF CONTROLLER ** ;* ** ;* PURPOSE. ALL COMMUNICATIONS WITH THE MAGNETIC TAPES WILL ** ;* BE THROUGH THIS SUBROUTINE. THIS ROUTINE PERFORMS THE ** ;* FOLLOWING MAGNETIC TAPE FUNCTIONS: ** ;* 1 OPEN (RETURN STATUS) ** ;* 2 CLOSEG. 9w CROSS REFERENCE TX:ABLE S- 0.0SMPCE    f X: X: "X: (Vf ^ w   & X:X:"X:r r vm v~7 7 h*~X:X:X:X:D. .! ! f  ^. X:E^O6 MOV .ARG,-(SP) ;@R0 TO @R6 .MEXIT .ENDC .ENDC .IF EQ,.SYM&^O60-^O20 MOV .ARG,-(SP) ;[@](R0)+ TO [@](R7)+ .MEXIT   ; #N,@#ADDR .ENDC .IF EQ,.SYM&^O40-^O40 .IF LE,.SYM&^O7-^O5 MOV .ARG,-(SP) ;[@]-(R0) TO [@]-(R5) .MEXIT   ;[@]X(R0) TO [@]X(R5) .ENDC .ENDC .IF EQ,.SYM&^O67-^O67 MOV .ARG,-(SP) ;ADDR AND @ADDR .MEXIT .ENDC .ERROR .SYM  ;.ARG ADDRESSING MODE ILLEGAL .PRINT   ;AS SYSTEM MACRO ARGUMENT. .ENDM ; THE MAF7 7 . X: X:;dX:;d X:;d$X:;d 7  7 .X:;dX:;d X:X:;d X:f P ev.X:vL X:P X:vL X:;dX:* 5'U @ ]. X: X:X:;d X:X:vLg.0 U /D D` W! ;X:;dX:;dX:vL.VW! W!  RE@ 5@5@H (NO OPERATION) ** ;* 3 READ ** ;* 4 WRITE ** ;* 5 WRITE FILE MARK ** ;* 6 REWIND ** ;* 7 SPACE (+-N) RECORDS ** ;* 10 SKIP (+-N) FILES ** ;* """" """"""""""""""""""""""""""""""""""""ADDB 7B CpEpAp +p_oQ8}=\ /B@T}\ vI iT}\ vc r@λz\ mJ$D333;33333333333333333333333#"""""""""a ͋,L  B8w&B ` % & }&*C$$Βe E%>k  aʋaՀ$ & * P$ ΋Ί   ΋   d Ί  ( 1'u  Q$f $5@ U C΋ Cb M΋U@ U &  B" .&0 M &0 & M 0 &CRO .CODE SETS UP THE FILEBLOCK ; WITH THE HOW OPEN CODE. ; THE ADDRESS OF THE FILEBLOCK MUST ; BE IN A REGISTER (R0 TO R5) .MACRO .CODE .FBLK,.N .NTYPE .SYM,.FBLK .IF LE,.SYM-^O5 MOVB #.N,-^O2(.FBLK) ;R0 TO R5 .MEXIT .ENDC .ERROR .SYM  ;.FBLK ADDRESSING MODE ILLEGAL .PRINT   ;FOR .OPEN FILE BLOCK .ENDM JX:;d Hq(.|de JU  XX:dX:vL$X:;d $5d7.X: X:$X:dX: X:.   ! ! f&X:;dX:;dX:;d X:.,,Q$  D & R, R,X:X:;d.+f  -   X:X:X:RK X:  X:. X:  (X:^(. +]  |. X:. X: X:+X:X:;d",0. ( ^ t.X:, X:. X:^X:;dR &  # EE*   7O. X: RX: X: "X:+.#   ҕ ҕ # X: X:x.65 L11 MULTIPLE REWIND ** ;* ALL THREE STANDARD R0S I/O EXITS ARE SUPPORTED BY MAGTAP. ** ;* ** ;* USAGE. THE ASSEMBLER LINKAGE TO MAGTAP IS: ** ;* ** ;* MOV #LIST,-(SP) ;PUSH LIST ADDRESS ON STACK ** ;* EMT MAGTAP ** ;* M; MT4T.03 ; MT4T.02 8-MAY-73 .TITLE MAGT4 .LIST MEB .MACRO LMAC EX,DN,DA,FU,NW,CT,?A,?B,?C,?D MOV #C-REL,R0 MOV R0,-(SP) EMT 71 ; MAGTAP .IFEQ EX-1 MOV (R0),R1 CMP R1,#1 .WORD 1374 ; BRANCH IF NOT EQUAL .ENDC .IFEQ EX-3 INC A BR A+2 A: .WORD 0 TST A BNE A+2 .ENDN.,⋁wU5A PX:X:vL &X:P.RU R wf h7  X:vLR &Hq&xU& $ H %5_.X:vLX:$X:X:X:vL&A Z>55X 5(.X:vL X:ZX:XX:;dX:vL 6$X 5XE{.X:X X: X:vL rBx X:X&=X!O 4. X: X: X: X: $R!fw B&X: X:X:\I.\ f e0R& $X:.@ ( @ !  X:. e ee e  . X: "X:  $X: &X: (X:.V N ! ! -- @ &P ** ;* THE FORTRAN EQUIVALENT CALL IS: ** ;* ** ;* CALL MAGTAP(IADDR(LIST)) ** ;* ** ;* THE FORMAT OF THE LIST IS AS FOLLOWS: ** ;* ** QC TST ERROR(R0) BEQ D JMP MTESE .IFEQ EX-3 B: CLR A RTS PC .ENDC .BOUND C: .WORD 1 ; THREAD .BYTE 4,EX ; MAGTAP, EXIT TYPE .IFEQ EX-3 .WORD B-REL ; RETURN ADDRESS FOR EXIT 3 .IFF .WORD 0 .ENDC .WORD DN,0,0 ; DEVICE NUMBER ERROR WORD SYSTEM .WORD DA-REL,16,20 ; DATAR݊ 5X.X:vLX:X X:vLX:X:X. ҕ    c. Ԁ| X: X: $X:&X:vL &P ݊  M?  %. X:PX:vL  X:X:vL X:.25X[  z  1. X: X:X X:vL X: $X:vL .X d5`ʕ'5@ʕG  ? X: $X: (X:;d .~H H5XS X:VX:;dX:;d X:O. ` &   j $X:. & e ^@4 $ # .@A @& .f @    &   .`@   2w A @ &. 5-  w "X:vLX:;dX:vL .A  T;* LIST THREAD ** ;* +2 EXIT TYPE (1-3) DEVICE TYPE ** ;* +4 EXIT ADDRESS (EXIT TYPE 3 ONLY) ** ;* +6 DEVICE NUMBER FOR FUNCTIONS 1-10, SET BITS FOR 11 ** ;* +10 RETURN ERROR PARAMETER (0 TO 14) ** ;* +12 SYSTEM (CALLING TASK #) ** ;* +14 DATA BUFFER ADDRESS U BUFFER ADDRESS SYS SYS .WORD FU,NW,CT ; FUNCTION CODE BUFFER SIZE COUNT .WORD 0,0,0,0 ; STATUS RES1 RES2 RES3 D: NOP ; ************************************************************* .ENDM ERROR = 8. R0 = %0 R1 = %1 R2 = %2 R3 = %3 R4 = %4 R5 = %5 SP = %6 PC = %7 .PAGE ; TASK HEADER .WORD 1 ; THREV Dҕ Q&X:XX:;d"X:;d (X:[.  Z ?  . X:X:vL X: X:vL $R.P5$X  -. X:XX: X:&X:(X:Z.w  H H5X  &vL X: X:;d  X:X.ʕ ҕ 5X "& X: X: X:vL"X:X.< ҕ W2X:vLX:;dX:vL.  .$  .J 3$p   ş *X:;dX:;dX:;dX:;d. ş C @ @   #HX:;dX:;d[. 1- ` EQ$' r. ``B  #`B  RX ** ;* +16 KPAR6 VALUE FOR VIRTUAL DATA BUFFER ADDRESS (ASR 6) ** ;* +20 SYSTEM VIRTUAL EQUIVALENT OF DATA BUFFER ADDRESS ** ;* +22 FUNCTION (CODES LISTED ABOVE) ** ;* +24 NWORD ** ;* +26 COUNT ** ;* +30 STATUS ** ;* +32 -BACKSPACE FLAG REPEAT COUNT YAD .WORD 4 ; TASK NUMBER .BYTE 20 ; SYSTEM TASK .BYTE 1 ; PRIORITY .WORD MGTS-REL ; ENTRY .WORD 100,0 ; MAX TIME / TIMER .WORD 200 ; STACK SIZE .WORD 0 ; CPU STATUS .WORD 0 ; STACK POINTER .WORD 0 ; ARG .BYTE 6 .BYTE TSKEND-TSTACK/100 .WORD 0,0 ; TPDR 1-2 Z 5X  f5` X:vLX:X.bҕ'5@Gҕ   *"R.E "ы7 R@ .f&X:vLX:" Ԁ|X:vLw(  77   &X:X:Rw rX  qQWX qQWb.] = W!:VW!=R , mX:;d X:;d .w  w` W![. s  #1-` w/ (R.$  7s $s h7  ^& R  R"R$J  ` x.R R rBx rh r .f B w :R &r  R r "rh.   u57 f rh rBxR. ABC \ ** ;* +34 RESERVED ** ;* +36 RESERVED ** ;* ** ;* THE RETURN ERROR CODES ARE AS FOLLOWS: ** ;* ** ;* 0 I/O SUCCESSFUL ** ;* 1 LIST ALREADY IN A QUEUE ] .WORD 0,0,0 ; TPDR3 - 5 .WORD 0,77406 ; TPDR 6 - 7 .WORD 0,0,0 ; TPAR 0 - 2 .WORD 0,0,0 ; TPAR 3 - 5 .WORD 0,7600 ; TPAR 6 - 7 . = . + 12. .CSECT MTTES REL = . TSTACK: .BLKW 200 MGTS: MOV #1000,MTRCC ; WRITE 16 FILES 37 RECORDS PER FILE MTES1: DEC MTRCC BEQ MTESTE MOV #4,R4 ; WRITE COMMAND ^$ .W!: l5U 5 < X:X:;dlX:vLG.@  5U * Hq z X:&X:vL.f W!= W!: R  $X:.;--  f ( 5 EM& X: Hq X:&X:%&U 7P5-. X:X:X:X: X:.U_f6l.R r rh rBx X:.  RRRRRRR    .    R⋇5 Rx.$  e-w r7 >&X: Rr "X:.J & e 7 1>.X:X:R"r (r .p e@7 * L V r r M, , ee` ** ;* 2 INVALID DEVICE TYPE ** ;* 3 ILLEGAL EXIT TYPE ** ;* 5 ILLEGAL DEVICE NUMBER ** ;* 6 ILLEGAL COUNT FOR SPACE OR SKIP ** ;* 10 ILLEGAL I/O FUNCTION CODE ** ;* 11 FATAL HARDWARE ERROR, STATUS REG IS IN WORD 13 ** ;* 12 MAGNETIC TAPE TIME OUT aMOV MTRCC,R1 BIC #177740,R1 ; WRITE E O F AFTER 31 RECORDS BNE MTES2 INC R4 ; WRITE FILE MARK MTES2: MOV R4,.+56 ; STORE FUNCTION CODE MOV R4,.+136 ; STORE FUNCTION CODE LMAC 2,0,MWOUT,4,150,0 ; WRITE UNIT 0 LMAC 2,1,MWOUT,4,150,0 ; WRITE UNIT 1 BR MTES1 MTESTE: LMAC 2,0,MWRIN,6,0,0 ; REWIND LMAC 1,1,MWRIN,6,0,0 ; REbU B U.X: X: X:X:vLX: . w ff  &X:vL X:;dX:vL X:L. 5 - Uff E& X:X:vLX:Hq/.B U  ыwwU@ h LX:X: X:vL.h  55 U5 , X: X:, X:vL$,.    H 7Z. r rhX:;d r rhL 7 4@7!&X:;dX:;d R;d *  w w w .X:;d  X:;d X:;drh rh$1 &r  r rBxvL G  _d ** ;* 13 END OF TAPE DETECTED ;* 14 WRITE COMMAND FOR REAL WITHOUT WRITE RING ** ;* ** ;* COUNT =NUMBER OF WORDS READ BY THE READ COMMAND ** ;* =NUMBER OF RECORDS (+-N) TO SPACE ** ;* =NUMBER OF FILES (+-N) TO SKIP ** ;* =UNUSED FOR ALL OTHER FUNCTIONS *eWIND LMAC 2,0,MWRIN,3,200,0 ; READ LMAC 1,0,MWRIN,3,200,0 ; READ MT100: LMAC 2,0,MWRIN,7,0,3 ; SPACE LMAC 1,0,MWRIN,3,200,0 ; READ LMAC 1,0,MWRIN,7,0,-2 ; SPACE LMAC 2,0,MWRIN,3,200,0 ; READ MT150: LMAC 2,1,MWRIN,3,200,0 ; READ LMAC 2,1,MWRIN,10,0,3 ; SKIP FILES LMAC 1,1,MWRIN,3,200,0 ; READ LMAC 1,1,MWRIN,7,0,51 ; SPACf nwEwi&X:vLX:vLX:vL(X:vL. & f AfE  Z  Hq Hq(Z . w Ί  1P  @EsX:vLr  r . %P%E% 5E%p*.& E%E%% A A nL 5U@{X:vLHq.H:@vg; MT5T.03 ; MT5T.02 8-MAY-73 .TITLE MAGT5 .LIST MEB .MACRO LMAC EX,DN,DA,FU,NW,CT,?A,?B,?C,?D MOV #C-REL,R0 MOV R0,-(SP) EMT 71 ; MAGTAP .IFEQ EX-1 MOV (R0),R1 CMP R1,#1 .WORD 1374 ; BRANCH IF NOT EQUAL .ENDC .IFEQ EX-3 INC A BR A+2 A: .WORD 0 TST A BNE A+2 .ENDh* ;* ** ;* PROGRAMMER: 67 ** ;* DATE 10.04.72 ** ;* ** ;* GULF ELECTRONIC SYSTEMS ** ;* ** ;*************************************************************iE MT175: LMAC 2,1,MWRIN,3,200,0 ; READ LMAC 2,1,MWRIN,10,0,-2 ; SKIP FILES LMAC 1,1,MWRIN,3,200,0 ; READ LMAC 3,1,MWRIN,3,200,0 ; READ MT200: LMAC 3,0,MWRIN,7,0,2 ; SPACE RECORD LMAC 3,0,MWRIN,3,200,0 ; READ LMAC 2,3,MWRIN,11,0,0 BR MTEND MTESE: NOP ; USE FOR ERROR BREAK POINT MTEND: EMT 4 ; EXIT ; .WORD 0 MWOUT: .AjqQWZ .Z N5UE * X:vL"X:$X:.   e5UX:X:vL(X:.   ׭    X:vLX:X:. F 6 v K X:X:G.   0U@7 "X:vLi.  & W!@ 5UU kC TST ERROR(R0) BEQ D JMP MTESE .IFEQ EX-3 B: CLR A RTS PC .ENDC .BOUND C: .WORD 1 ; THREAD .BYTE 4,EX ; MAGTAP, EXIT TYPE .IFEQ EX-3 .WORD B-REL ; RETURN ADDRESS FOR EXIT 3 .IFF .WORD 0 .ENDC .WORD DN,0,0 ; DEVICE NUMBER ERROR WORD SYSTEM .WORD DA-REL,16,20 ; DATAl********* ; .DEF MAGTAP,MTINT .REF PUSHR,POPR,ACTIVE,$CTASK,IOSTAT,DSPTCH,RESTOR,RELTSK .REF UNSPND,QSAVEI,PPASV5,PPASV6,SVPPA,SAVE .REF TSK.PC,QTIME,DQTIME,IOCOMX ; ; M A G T A P E Q U A T E P A R A M E T E R S ; DATUM = 1 MULRE = 1 ; 0 FOR DELETE, 1 TO INCLUDE DEVICE = 2. ;LOGICAL DEVICE TYPE TYPE = 3. ;EXIT TYPE $EXIT = 4. ;I/O COMPLETE ADSCII /THIS BUFFER OF DATA WILL BE USED TO TEST THE MAGNETIC TAPE 62C/ .EVEN MTRCC: .WORD 1234 ; REPEAT COUNT .ASCII /SECOND LINE OF THE WRITE, REWIND, AND READ TEST 62 CHARACTERS./ MWRIN: .ASCII /INPUT BUFFER/ .EVEN .BLKW 30 .WORD 0 .BLKW 200 . = . + 200 TSKEND: .END nW!X:vL X:vL.> # %  b @U^W!- }X:vLy.d  bW!( U SW!( W!X:;dX:;dW. + >UF5U@ 5  0. W!(53 5d5@X:d&X:. 5dUU7 |5U X:d(X:vL. Effff PU0 & *" U  ,W!)Uo BUFFER ADDRESS SYS SYS .WORD FU,NW,CT ; FUNCTION CODE BUFFER SIZE COUNT .WORD 0,0,0,0 ; STATUS RES1 RES2 RES3 D: NOP ; ************************************************************* .ENDM ERROR = 8. R0 = %0 R1 = %1 R2 = %2 R3 = %3 R4 = %4 R5 = %5 SP = %6 PC = %7 .PAGE ; TASK HEADER .WORD 1 ; THREpDRESS DEVNUM = 6. ;DEVICE NUMBER LEVEL = 7. ;I/O PRIORITY ERROR = 8. ;ERROR PARAMETER SYSTEM = 10. ;RESERVED (SAVE TASK NUMBER) DATA = 12. ;ADDRESS OF DATA BUFFER DTPAR = 14. ;KPAR6 VALUE FOR VIRTUAL DATA BUFFER ADDRESS DTVIRT = 16. ;SYSTEM VIRTUAL EQUIVALENT OF DATA BUFFER ADDRES FUNCT = 18. ;FUNCTION CODE NWORD = 20. q; UPDATE 9/29/72 ROS3.SYS ; UPDATE 09.20.72 ;ROS3.SYS ; UPDATE 8/23/72 ROS3.SYS ; UPDATE 8/17/72 ROS3.SYS ; UPDATE 8/15/72 ROS3.SYS ; UPDATE 8/1/72 ROS3.SYS ; UPDATE 7/31/72 ROS3.SYS ; UPDATE 7/28/72 ROS3.SYS ; UPDATE 07.21.72 ROS3.SYS ;* ;* G E N E R A L S Y S T E M E Q U A T E S ;* $1145 = 1 ;1 = 11/45 0 = NOT 11/45 r X:vLwG IX 9 qQWX qQWD .D 7 jO ˵@1Q˵ 0ы, Ԁ|OX:;d$X:.j 7 DU˵@!QыʋыE& Ԁ|UX:3. e m77  m 7 .r X:X:rBx $X:.  ыX:w| keX  qQWX qQW k. 5dɋ sAD .WORD 5 ; TASK NUMBER .BYTE 20 ; SYSTEM TASK .BYTE 1 ; PRIORITY .WORD MGTS-REL ; ENTRY .WORD 100,0 ; MAX TIME / TIMER .WORD 200 ; STACK SIZE .WORD 0 ; CPU STATUS .WORD 0 ; STACK POINTER .WORD 0 ; ARG .BYTE 6 .BYTE TSKEND-TSTACK/100 .WORD 0,0 ; TPDR 1-2 t ;BUFFER SIZE IN WORDS COUNT = 22. ;SEE DEFINITION ABOVE STATUS = 24. ;HARDWARE STATUS REGISTER RES1 = 26. ;RESERVED 1 RES2 = 28. ;RESERVED 2 RES3 = 30. ;RESERVED 3 ; MTDVLM = 1 ;HIGHEST LOGICAL DEVICE NUMBER (0 & 1) MTMREW = 177774 ;COM OF DEFINED LOGICAL UNITS MTREP = 18. ;MAG TAPE REPEAT COUNT (4N+2) ; .IFZ DATUu$1125 = 0 ;1 = 11/25 0 = NOT 11/25 $1120 = 0 ;1 = 11020 OR LESS (11/05, ETC.) $KT11C = 1 ;1 = KT11C SEGMENTATION ;0 = NO SEGMENTATION $FPP = 0 ;1 = FLOATING POINT PROCESSOR IS IN SYSTEM .IFZ $1125!$1145 .IFNZ $KT11C!$FPP XXXXXXXX .ENDC .ENDC $RASM = 1 ;1 = ASSEMBLER IS IN SYSTEM .IFG $KT1vW UW UU~.X:dX: Ԁ|U Ԁ|U(X:vL~. J ԋ  U X:vL&X:vL ՀԀ|OO iqQW ,.   4 5U@ X:$X:#.: U  N  X:vL"X:;d` P&w; X: X:&f   w .WORD 0,0,0 ; TPDR3 - 5 .WORD 0,77406 ; TPDR 6 - 7 .WORD 0,0,0 ; TPAR 0 - 2 .WORD 0,0,0 ; TPAR 3 - 5 .WORD 0,7600 ; TPAR 6 - 7 . = . + 12. .CSECT MTTE5 REL = . TSTACK: .BLKW 200 MGTS: MOV #1000,MTRCC ; WRITE 16 FILES 37 RECORDS PER FILE MTES1: DEC MTRCC BEQ MTESTE MOV #4,R4 ; WRITE COMMAND xM MTWORD = 167540 ;WORD COUNT REGISTER MTSTAT = 167542 ;STATUS REGISTER MTCOMM = 167544 ;COMMAND REGISTER MTMEMO = 167546 ;MEMORY ADDRESS REGISTER .IFF MTSTAT = 772520 ; STATUS REGISTER MTCOMM = 772522 ; COMMAND REGISTER MTBCNT = 772524 ; 2'S COMPLEMENT BYTE COUNT REG MTMEMO = 772526 ; MEMORY ADDRESS REGISTER .ENDC ; ; COMMAND CODES FOR MAGNETIC TAPE CONTROLLER .IFZ y1C-1 XXXXXXXX .ENDC $DELAY = 2 ;INDICATES TYPE OF MEMORY AND IS USED ;IN SOME DELAY LOOPS ;1 = 1.2 US CORE ;2 = 850 NS CORE ;3 = 11/45 SOLID STATE MEMORY ; STANDARD REGISTER DEFINITIONS R0 = %0 R1 = %1 R2 = %2 R3 = %3 R4 = %4 R5 = %5 SP = %6 z,X:,qQWn ].n p  ^  V K& Hq  X:HqX:. .U    $ :w".X:.X:X: X: "X:$   5d7 |.Hq  X:HqX:X:d` 7  X:X:w -   r qQW qQW .     , 6 {MOV MTRCC,R1 BIC #177740,R1 ; WRITE E O F AFTER 31 RECORDS BNE MTES2 INC R4 ; WRITE FILE MARK MTES2: MOV R4,.+56 ; STORE FUNCTION CODE MOV R4,.+136 ; STORE FUNCTION CODE LMAC 2,0,MWOUT,4,150,0 ; WRITE UNIT 0 LMAC 2,1,MWOUT,4,150,0 ; WRITE UNIT 1 BR MTES1 MTESTE: LMAC 2,0,MWRIN,6,0,0 ; REWIND LMAC 1,1,MWRIN,6,0,0 ; RE| DATUM READ = 1 WRIT = 2 ;WRITE BUFFER WRFM = 4 ;WRITE FILE MARK WEXG = 10 ;WRITE WITH EXTENDED GAP SPCF = 20 ;SPACE FILE FORWARD BCKF = 40 ;BACK SPACE FILE SPCR = 100 ;SPACE RECORD FORWARD BCKR = 200 ;BACK SPACE RECORD REWD = 400 ;REWIND ENAB = 1000 ;ENABLE INTERRUPT OFFL = 20}PC = %7 .IFNZ $FPP AC0 = %0 ; AC1 = %1 ;FLOATING AC2 = %2 ; POINT AC3 = %3 ; ACCUMULATOR AC4 = %4 ; DEFINITIONS AC5 = %5 ; .ENDC ; .IFNZ $KT11C $ROSM = 100000 ;ROS MASK FOR SYSTEM TASKS TO USE .ENDC ;TO 'OR' WITH ROS ADDRESSES TO POINT .IFZ $KT11C ~ X: X:G.   bU700 X:vL&X:0..2 Jҋ  %.X:X:2 X: X: $X:+.Tɕ w & R( p ee& X: X:;d&X: $X:;de%.z5 X[  8 B a& X:X Ԁ|["X:;d&X:;d .-   z X:;dX:WIND LMAC 2,0,MWRIN,3,200,0 ; READ LMAC 1,0,MWRIN,3,200,0 ; READ MT100: LMAC 2,0,MWRIN,7,0,3 ; SPACE LMAC 1,0,MWRIN,3,200,0 ; READ LMAC 1,0,MWRIN,7,0,-2 ; SPACE LMAC 2,0,MWRIN,3,200,0 ; READ MT150: LMAC 2,1,MWRIN,3,200,0 ; READ LMAC 2,1,MWRIN,10,0,3 ; SKIP FILES LMAC 1,1,MWRIN,3,200,0 ; READ LMAC 1,1,MWRIN,7,0,51 ; SPAC00 ;OFF LINE CLEA = 40000 ;CLEAR CONTROLLER MTDVS = 14 ; SHIFT COUNT MTINB = 1000 ; INTERRUPT ENABLE MTCLR = 30000 ; CLEAR CONTROLLER MTRWD = 100 ; TEST IF REWINDING MTUIC = 10000 ; UNIT NUMBER INCREMENT .IFF OFFL = 0 ; SET OFFLINE READ = 2 ; READ RECORD WRIT = 4 ; WRITE RECORD WRFM = 6 ; WRITE FILE MARK SPCR = 10 ; SPACE RECORD BCKR ; TO USER ASR 4 $ROSM = 0 ; .ENDC PS = 177776 ; $DEBUG = 1 ; ROS DEBUG SWITCH $CORAL = 0 ; CORE ALLOCATION ; =0 SOFTWARE ; =1 HARDWARE ; ; ; TASK CONTROL SYSGEN EQUATE CARDS ; NPRIOR = 10. ; NO. OF SOFTWARE PRIORITY LEVELS PRIBKG = NPRIOR ; PRIORITY OF BACKGROUND $BATCH = $   e0J Ԁ|[[TABLE OF CONTENTSqQW]. 7 8  < & R X:8X: X:<5. rUU    CX:vLX:vL..U   " C!w| X:vL.T  P ` EU@.z  (   U7 &X:;dE MT175: LMAC 2,1,MWRIN,3,200,0 ; READ LMAC 2,1,MWRIN,10,0,-2 ; SKIP FILES LMAC 1,1,MWRIN,3,200,0 ; READ LMAC 3,1,MWRIN,3,200,0 ; READ MT200: LMAC 3,0,MWRIN,7,0,2 ; SPACE RECORD LMAC 3,0,MWRIN,3,200,0 ; READ LMAC 2,3,MWRIN,11,0,0 BR MTEND MTESE: NOP ; USE FOR ERROR BREAK POINT MTEND: EMT 4 ; EXIT ; .WORD 0 MWOUT: .A = 12 ; BACKSPACE RECORD WEXG = 14 ;WRITE WITH EXTENDED GAP SPCF = 10 ; SPACE FILE FORWARD BCKF = 12 ; BACK SPACE FILE REWD = 16 ; REWIND MTDVS = 10 ; SHIFT COUNT MTINB = 20101 ; INTERRUPT ENABLE CLEA = 10000 ; CLEAR CONTROLLER ENAB = 100 ; INTERRUPT ENABLE MTCLR = 1400 ; CLEAR CONTROLLER MTRWD = 2 ; TEST IF REWINDING MTUIC = 400 ; UNIT NUMBE 1 ; BATCH OPTION .IFLE NPRIOR ; XXXXXXXX ;NPRIOR MUST BE GREATER THAN ZERO .ENDC MXTASK = 20 ; MAX # OF CORE TASKS IN SYSTEM NLTASK = 1 ; LARGEST TASK # OF TASKS LOADED WITH SYSTEM ;NOTE: IF OVERLAYS ARE USED, THEN THE ;FIRST OVERLAY TASK NUMBER IS MXTASK+1 OVTMIN = MXTASK+1 ;FIRST OVERLAY TASK NUMBER OVRLAY  X:;d X:vL&X:;d ;d  X:;dqQW3.   V`  &rBx .7 7  n : BGW!<!UX: X:Q. @@B!   E 0}X:;d.  ( ) & v  Hq.<   (U& je  X:vLqSCII /THIS BUFFER OF DATA WILL BE USED TO TEST THE MAGNETIC TAPE 62C/ .EVEN MTRCC: .WORD 1234 ; REPEAT COUNT .ASCII /SECOND LINE OF THE WRITE, REWIND, AND READ TEST 62 CHARACTERS./ MWRIN: .ASCII /INPUT BUFFER/ .EVEN .BLKW 30 .WORD 0 .BLKW 200 . = . + 200 TSKEND: .END R INCREMENT MDATST = 134600 ; BITS TO TEST IN THE DATUM STATUS REGISTER ENDTAP = 2000 ; END OF TAPE BIT .ENDC ; ; FIRST AND LAST WORDS FOR LIST THREAD MTFRST: .WORD 0 .IFZ $KT11C MTLAST: .WORD MTFRST .IFF MTLAST: .PACK MTFRST CDTLST: .WORD 0 ; USED TO SAVE CURRENT LIST S.V.A. MTPAR5: .WORD 0 ; USED TO SAVE CURRENT LIST PAR5 .ENDC NMTREQ: .WORD -1 ; NUMBER OF (REQUESTS - 1) IN QU= 0 ; SYSTEM OVERLAY OPTION OVRLAY = 1 ;SYSTEM OVERLAY OPTION (1 = OVERLAY) ;0 = NO OVERLAY, 1 = OVERLAY .IFNZ OVRLAY ; MAXOVR = 140 ; MAX # OF OVERLAY TASKS IN SYSTEM .ENDC ;(NOT USED IF OVRLAY = 0) .IFZ OVRLAY ; MAXOVR = 0 ;SET TO ZERO ONLY IF NO OVERLAYS .ENDC TASMAX = MXTASK+MAXOVR ;MAXIMUM NUMBE.bW    U X:vLm,T UHL n & HqTX:vL X:HHqV) V qQW qQWw (X B qQWX qQW{&   HP! W a.X:vL X:vLX:;d X:H X:P`.@AF%+%-@ & X:@ X:FX:@ (Hq.5 DEUE ; ; MAGNETIC TAPE FUNCTION JUMP TABLE MTFCT =.-2 .WORD MOPEN ;OPEN .WORD MCLOS ;CLOSE .WORD MREAD ;READ .WORD MWRIT ;WRITE .WORD MWEOF ;WRITE FILE MARK .WORD MREWI ;REWIND .WORD MSPRC ;SPACE +-N RECORDS .WORD MSKFI ;SKIP +-N FILES .IFNZ MULRE .WORD MUREW ;REWIND MULTIPLE UNITS .ENDC R OF TASKS (INCL OVERLAYS .IFLE MXTASK ; XXXXXXXX ;MXTASK MUST BE GREATER THAN ZERO .ENDC .IFL NLTASK ; QTAB XXXXXXXX ;NTASK CANNOT BE NEGATIVE .ENDC .IFG NLTASK-MXTASK ; QTAB XXXXXXXX ;NTASK MUST BE <= MXTASK .ENDC .IFNZ OVRLAY ; ; STATE SIZE OF DYNAMIC CO  j 0bab b b mMX:D`.BD %.w Bށ%E  &X:BX:DX:B$X:;d.< U ` 7`D@@T@T@Th &X:;dX:vLX:;dX:D.b D1"3 F eF D>&X:DX:F$X:F(X:Dk. F   5 X:Fd.  F D F hX:FX:D" ; MAGNETIC TAPE RETURN AFTER INTERRUPT JUMP TABLE MTRET =.-2 .WORD MOPEN ;OPEN .WORD MCLOS ;CLOSE .WORD MRREA ;READ .WORD MRWRI ;WRITE .WORD MRWEO ;WRITE FILE MARK .WORD MRREW ;REWIND .IFZ DATUM .WORD MSPRC ;SPACE +-N RECORDS .IFF .WORD MRPRC .ENDC .WORD MSKFI ;SKIP +-N FILES .IRE STORAGE IN ROS ; $DYNSZ = 54000 ; RESERVE DYNAMIC CORE POOL .ENDC ; ; THE FOLLOWING IS A LIST OF PRIORITY PROPERTIES ; +1 = TIME SLICE PRIORITY (CORE OR OVERLAY) ; 0 = FIXED OVERLAY TASK (MAY BE CORE) ; -1 = FREE TASKS (CORE OR DYNAMIC OVERLAY) ; PRIP01 = -1 ; PRIORITY PROPERTY LEVEL 1 PRIP02 = -1 ; PRIORITY PROPERTY LEVEL 2 PRIP03 = 1 ; PRIORITY PX:F.eFGU b(J  X:FX:GX:vLL. 5d  UHr H & X:dX:vL X:H &X:Hf,   Um@7 7 7%.X:vLX:@X:X:vL X:.D " 0 F B $ X:;dX:F.j 4 $ la  v.    b b b wH %.FNZ MULRE .WORD MUREWI .ENDC MTIMV =.-3 ; TIME OUT VALUE IN SECONDS .BYTE 5 ; READ .BYTE 5 ; WRITE .BYTE 5 ; WRITE FILE MARK .BYTE 180. ; REWIND .BYTE 5 ; SPACE .BYTE 60. ; SKIP .IFNZ MULRE .BYTE 1 ; MULTIPLE REWIND .ENDC .BOUND MTTLI: ;MAGNETIC TAPE TIMER LIST .WORD 1 .WORD 0,0,0 ROPERTY LEVEL 3 PRIP04 = 1 ; PRIORITY PROPERTY LEVEL 4 PRIP05 = -1 ; PRIORITY PROPERTY LEVEL 5 PRIP06 = -1 ; PRIORITY PROPERTY LEVEL 6 PRIP07 = -1 ; PRIORITY PROPERTY LEVEL 7 PRIP08 = -1 ; PRIORITY PROPERTY LEVEL 8 PRIP09 = -1 ; PRIORITY PROPERTY LEVEL 9 PRIP10 = -1 ; PRIORITY PROPERTY LEVEL 10 PRIP11 = 0 ; PRIORITY PROPERTY LEVEL , $   5Xw 7 w &X:;dX:XX:vL "X:vL.) \ RW"  ! ! X: X: X:;d*C   7 .X:;dX:;dX:;dX:;d X:;d.$  UU   6 X:;dX:vLX:vL,J|    IU & X:X:;d"X:vLw!nHXon[o.xK ; RSVRD 1 TO 3 .BYTE SECR ; TIMER RESOLUTION .BYTE 20 ; TIMER OPTIONS (J) .WORD 0 ; RESERVED .WORD MTTIM ; OPTIONAL (J=1) ; ; MACRO DEFINITIONS ; .MACRO SAV.56 .IFNZ $KT11C MOV @#$KPAR5,-(SP) MOV @#$KPAR6,-(SP) .ENDC .ENDM ; .MACRO RST.56 .IFNZ $KT11C MOV (SP)+,@#$KPAR6 MOV (SP)+,@#$KPAR511 PRIP12 = 1 ; PRIORITY PROPERTY LEVEL 12 PRIP13 = -1 ; PRIORITY PROPERTY LEVEL 13 PRIP14 = -1 ; PRIORITY PROPERTY LEVEL 14 PRIP15 = -1 ; PRIORITY PROPERTY LEVEL 15 PRIP16 = 0 ; PRIORITY PROPERTY LEVEL 16 .IFNZ OVRLAY ; .IFL 16.-NPRIOR XXXXXXXX TABLES AND PARAMETERS CURRENTLY CODED XXXXXXXX FOR MAXIMUM OF 16 PRIORITY Lv. qQWn qQWo qQWn qQWo qQWxy+x N,K. qQWy qQWx qQW qQW qQW*&X qQW qQWqQWn-.n < C 2  *   . n 4 5@  C BW!&W!pX:.!B  C C  (P&X:vLI.    B  P\X:vL"X:(X:\ .ENDC .ENDM .PAGE ; S T A R T O F M A G T A P MAGTAP: JSR R5,PUSHR ;SAVE R0-R5 ON STACK MOV 14.(SP),R0 ;R0 = F.W.A. OF LIST SAV.56 MOV #1,R4 ;SET ERROR CODE IN R4 DEC (R0) ;IS THREAD = 1 BNE MTERR ;IF NOT, RETURN ; IS DEVICE TYPE = 4 INC R4 ; SET R4 = 2 CMPB DEVICE(R0),#4 BNE MTERR EVEL .ENDC ; ; THE FOLLOWING SYSGEN PARAMETERS SPECIFY THE NUMBER OF ; ENTRY'S IN A PRIORITY'S QPART TABLE. IF ZERO, THAT ; PRIORITY WILL NOT BE ALLOWED OVERLAY TASKS. A MAXIMUM ; OF 127 ENTRYS PER QPART WILL BE ALLOWED. ; ****NOTE: BE SURE PRIORITIES GREATER THAN NPRIOR HAVE ; TABLE SIZES OF 0 ; NEQP01 = 10. ; NO. OF ENTRYS QPART LEVEL 1 NEQP02 = 10. ; NO. OF ENTRYS QPART LEVEL 2 NEQP03 = .0\ @X0`Z  PXU)&X:\X:XX:Z$X:X1,%X:vLlzw LIX  NLl qQW J   qQWqQW2t2 UX:;d X:vLHqZH(Zw[M y%` QQR RK-[zsfw ^iX:^;dj^X !\ ;RETURN IF NOT 4 ; IS EXIT TYPE 1 OR 2 INC R4 ;SET R4 = 3 MOVB TYPE(R0),R1 ;R1 = EXIT TYPE BLE MTERR ;BRANCH IF .LE. 0 CMP R1,R4 BGT MTERR ; BR IF .GT. 3 ; IS THE FUNCTION CODE DEFINED MOV #10,R4 ;SET R4 = 8 MOV FUNCT(R0),R1 ;PLACE FUNCTION CODE IN R1 MOV R1,RES2(R0) BLE MTERR ;BRANCH IF NEGATIVE CMP 10. ; NO. OF ENTRYS QPART LEVEL 3 NEQP04 = 10. ; NO. OF ENTRYS QPART LEVEL 4 NEQP05 = 10. ; NO. OF ENTRYS QPART LEVEL 5 NEQP06 = 10. ; NO. OF ENTRYS QPART LEVEL 6 NEQP07 = 10. ; NO. OF ENTRYS QPART LEVEL 7 NEQP08 = 10. ; NO. OF ENTRYS QPART LEVEL 8 NEQP09 = 10. ; NO. OF ENTRYS QPART LEVEL 9 NEQP10 = 10. ; NO. OF ENTRYS QPART LEVEL 10 & X:^ X:XqQW!qQW>.>C  ! z  B  Pf"X:(X:f.d0f@d Pd U.X:fX:dX:dX:&X:vLfqhX:h;dThdX:hX:dlzw   ENR  @DS qQW@ >CR qQW> R1,R4 .IFZ MULRE BGT MTERR ;BR IF R1 IS MORE THAN 8 .IFF BGT MT01 ;BR IF MORE THAN 8 .ENDC MOV #5,R4 ; SET LOGICAL DEVICE ERROR CODE MOVB DEVNUM(R0),R1 BLT MTERR ; BR IF NEGATIVE DEVICE NUMBER CMP R1,#MTDVLM ; IS DEVICE NUMBER DEFINED BGT MTERR ; BR IF NOT INC R4 ; SET SKIP OR SPACE COUNT ERROR CONEQP11 = 0. ; NO. OF ENTRYS QPART LEVEL 11 NEQP12 = 0. ; NO. OF ENTRYS QPART LEVEL 12 NEQP13 = 0. ; NO. OF ENTRYS QPART LEVEL 13 NEQP14 = 0. ; NO. OF ENTRYS QPART LEVEL 14 NEQP15 = 0. ; NO. OF ENTRYS QPART LEVEL 15 NEQP16 = 0. ; NO. OF ENTRYS QPART LEVEL 16 ; ; ; THE FOLLOWING ASSIGNS THE START BLOCK IN THE CORE POOL ; FOR A SPECIFIC PRIORITY. ; $SB0 > qQWqQW_.  0  P A$j-X tU3.X:j X:X:tX:vLHqzzv@Qd@qQWm. rE r lwl v.X:vL X:rX:rX:l"X:lU(R-n  b n7 p-p.X:n X:;dX:nX:p"X:pl.  H pmj ѭ DE CMP R1,#7 BLT MT02 TST COUNT(R0) BEQ MTERR ;BR IF COUNT IS ZERO CLR NWORD(R0) MT01: .IFNZ MULRE CMP R1,#11 BGT MTERR ; BR IF MORE THAN 9 .ENDC MT02: CLR SYSTEM(R0) ; PLACE LIST IN THREAD MOV @#PS,-(SP) ;INHIBIT INTERRUPTS, SAVE PROGRAM STATUS REG. SPL 7 ;SET PRIORITY TO 7 .IFZ $KT11C 01 = 0. $SB002 = 4. $SB003 = 4. $SB004 = 4. $SB005 = 4. $SB006 = 4. $SB007 = 12. $SB008 = 12. $SB009 = 12. $SB010 = 12. $SB011 = 0. $SB012 = 0. $SB013 = 0. $SB014 = 0. $SB015 = 0. $SB016 = 0. ; $NBLKS = $DYNSZ/2-1/256.+1 ; NO. OF BLOCKS IN DYNAMIC CORE ; ; THE FOLLOWING ASSIGNS STORAGE BLOCK SIZES FOR EACH PRIORITY. ; A) IF DYNAMIC-CONT.X:;d X:p Ԁ|mX:j"RM.8^ &  ҋUURG Ԁ|^X:vL.^r7% |Rҕ |.X:rX:vL X: X:| &X:|$" vw x7 r. X:v R R X:xX:rԀ|m maHq J& X:  R X:R  zMOV R0,@MTLAST ;QUEUE IT MOV R0,MTLAST .IFF MOV R0,-(SP) ; STORE SYSTEM VIRTUAL LIST ADDRESS ON STACK JSR PC,SVPPA ; GET LIST'S PPA (PACKED PHYSICAL ADDRESS ) MOV MTLAST,-(SP) ; CONVERT THE ADDRESS OF THE LAST ENTRY IN QUEUE JSR PC,PPASV6 ; GET LAST'S SVA (SYSTEM VIRTUAL ADDRESS ) MOV 2(SP),@(SP)+ ; QUEUE THE CURRENT REQUEST MOV (SP)+,MTLAST MOV 16(R0),@#$AINS THE LARGEST ALLOWABLE BSIZE ; VALUE ; ; B) IF FIXED OR TIME SLICED-CONTAINS ASSIGNED BSIZE ; VALUE FOR THAT PRIORITY ; .IFL PRIP01 $PS001 = $NBLKS-$SB001 .ENDC .IFGE PRIP01 $PS001 = 4. ; ASSIGN 4 BLOCKS - 1024 WORDS .IFL $NBLKS-$SB001-$PS001 XXXXXXXX ; PRI 1 TOO LARGE .ENDC .ENDC .IFL PRIP02 $PS002 = $NBLKS-$SB00qQW.X:X:vL X:vLX:X:vL. fAʕ R.X:X:vL X:vLX:X:vL.fA  eʕ Jҋ REENqQW!. w 5 XZ^5{ X:X:vL X:Xf.<d KPAR6 .ENDC CMP 16+4*$KT11C(SP),#TSK.PC ; IS CALLER A TASK BNE MT04 ; BRANCH IF NOT MOV $CTASK,R2 INCB IOSTAT(R2) MOV R2,SYSTEM(R0) MT04: MOV (SP)+,@#PS MOV #MTREP,RES1(R0) ; SET REPEAT COUNT AND CLEAR BACK SPACE INC NMTREQ ; BUMP NUMBER OF REQUESTS BNE MTEX2 ;BR IF NOT FIRST IN QUEUE .IFNZ $KT11C MOV R0,CDTLST ; 2 .ENDC .IFGE PRIP02 $PS002 = 4. ; ASSIGN 4 BLOCKS - 1024 WORDS .IFL $NBLKS-$SB002-$PS002 XXXXXXXX ; PRI 2 TOO LARGE .ENDC .ENDC .IFL PRIP03 $PS003 = $NBLKS-$SB003 .ENDC .IFGE PRIP03 $PS003 = 4. ; ASSIGN 4 BLOCKS - 1024 WORDS .IFL $NBLKS-$SB003-$PS003 XXXXXXXX ; PRI 3 TOO LARGE .ENDC .ENDC   B0 .X:d HqX: "X:0&X:.b&  D 'EEU RR X:.Qa7  n  5@R X:&X:*ŭEUE*U*.X:X:X:X:*"X:*.& 4 L 7  & X:&X:X: Rz7  . w rSAVE LIST S.V.A. FOR INTERRUPT ROUTINE MOV $KPAR5,MTPAR5 ; SAVE KPAR5 FOR INTERRUPT POUTINE .ENDC MOV FUNCT(R0),R1 ;RETURN JUMP TO ASL R1 JSR PC,@MTFCT(R1) ; ROUTINE CMP RES2(R0),#2 BLE MTXB2 TST R4 BEQ MTEX1 ;BR IF NO ERRORS MTXB2: JSR PC,MTDEQ ; DEQUEUE REQUEST BR MTEXIT MTERR: INC (R0) MOV R4,ERROR(R0) .IFL PRIP04 $PS004 = $NBLKS-$SB004 .ENDC .IFGE PRIP04 $PS004 = 4. ; ASSIGN 4 BLOCKS - 1024 WORDS .IFL $NBLKS-$SB004-$PS004 XXXXXXXX ; PRI 4 TOO LARGE .ENDC .ENDC .IFL PRIP05 $PS005 = $NBLKS-$SB005 .ENDC .IFGE PRIP05 $PS005 = 4. ; ASSIGN 4 BLOCKS - 1024 WORDS .IFL $NBLKS-$SB005-$PS005 XXXXXXXX X: Ԁ|rԀ|rr END OF PASS 1'qQW ,.  z w r V& & X:zX:r Ԁ| "X:;d&<,0  *5d,7.X:X:X:d X:$X:,&T T5@XP7 7 ".X: X:X:XX:;dR.r : $ r 5 0 X: Hq X:\. ;STORE ERROR CODE IN LIST MTEXIT: MOV @#MTSTAT,STATUS(R0) RST.56 JSR R5,POPR ;RESTORE REGISTERS MOV (SP)+,(SP) ;MOVE RETURN ADDRESS RTS PC ;RETURN TO CALLE- MTEX1: MOV #MTTLI,-(SP) ;ADDRESS OF MAG TAPE TIMER LIST MOV FUNCT(R0),R1 MOVB MTIMV(R1),-(SP) ; TIMER DELAY JSR PC,QTIME TST (SP)+ MTEX2: CMPB #2,TYPE(R0) ;TYPE 2 ? ; PRI 5 TOO LARGE .ENDC .ENDC .IFL PRIP06 $PS006 = $NBLKS-$SB006 .ENDC .IFGE PRIP06 $PS006 = 4. ; ASSIGN 4 BLOCKS - 1024 WORDS .IFL $NBLKS-$SB006-$PS006 XXXXXXXX ; PRI 6 TOO LARGE .ENDC .ENDC .IFL PRIP07 $PS007 = $NBLKS-$SB007 .ENDC .IFGE PRIP07 $PS007 = 4. ; ASSIGN 4 BLOCKS - 1024 WORDS .IFL l dɥa &ҕ @ Ԁ| X: (X:.ڇ 27  (  ҕ R (X:H. ҕ     X: X: &X::  4 X:Hq =% R G @|Ԁ|******SYMBOL TABLEqQW.   ĝ n  X:X:$ BNE MTEXIT ;BR IF NOT TST SYSTEM(R0) ;SEE IF THIS IS A TASK CALLING BEQ MTEXIT ;BR IF THE CALLER IS NOT A TASK .IIF NE $KT11C ADD #4,SP ; THE CALLER IS A TASK, THE PAR'S CAN GO MOV @#PS,14.(SP) ;PLACE PS ON STACK JSR R5,POPR ;RESTORE REGESTERS CLR -(SP) ;SET INVOLUNTARY SUSPEND FLAG JSR PC,QSAVEI ;AND LET QSAVI SUSPEND THE TASK JMP DSPTCH $NBLKS-$SB007-$PS007 XXXXXXXX ; PRI 7 TOO LARGE .ENDC .ENDC .IFL PRIP08 $PS008 = $NBLKS-$SB008 .ENDC .IFGE PRIP08 $PS008 = 4. ; ASSIGN 4 BLOCKS - 1024 WORDS .IFL $NBLKS-$SB008-$PS008 XXXXXXXX ; PRI 8 TOO LARGE .ENDC .ENDC .IFL PRIP09 $PS009 = $NBLKS-$SB009 .ENDC .IFGE PRIP09 $PS009 = 4. X:vL.B\ j 7 `5 d\E&X:vLX:X:d &Hq&h# z .X:X: X:;d# X:zX:# -$  5.X:X: X:;d#X:X:;d$.~  x@a ` 9& X:~X:X: X:,W f5d ҝ]. X: X: X:fX:d X:j.PAGE ; MAGNETIC TAPE INTERRUPT ROUTINE MTINT: JSR R5,SAVE SPL 5 TST NMTREQ BMI MTEYIT .IFZ $KT11C MOV MTFRST,R0 ;PLACE LIST ADDRESS IN R0 .IFF MOV CDTLST,R0 ; PLACE CURRENT LIST S V A IN R0 MOV MTPAR5,$KPAR5 ; GET CURRENT LIST PAR5 .ENDC MOV #MTTLI,-(SP) JSR PC,DQTIME TST (SP)+ CLR R4 ; BRANCH ON FUNCTION C ; ASSIGN 4 BLOCKS - 1024 WORDS .IFL $NBLKS-$SB009-$PS009 XXXXXXXX ; PRI 9 TOO LARGE .ENDC .ENDC .IFL PRIP10 $PS010 = $NBLKS-$SB010 .ENDC .IFGE PRIP10 $PS010 = 4. ; ASSIGN 4 BLOCKS - 1024 WORDS .IFL $NBLKS-$SB010-$PS010 XXXXXXXX ; PRI 10 TOO LARGE .ENDC .ENDC .IFL PRIP11 $PS011 = $NBLKS-$SB011 (@f  }.X: X:fX:X: X:"ѝ ѝ w wa.X:X:X: X:X:-$ .X:X:;d$X:X:Hqa&H;d$ $w#X:;d#wM 3f6 qQW6qQW4,4#b-f `ODE ON RETURNING FROM AN INTERRUPT MOV FUNCT(R0),R5 ;LOAD FUNCTION CODE (1 TO 8) ASL R5 JSR PC,@MTRET(R5) MOV @#MTSTAT,STATUS(R0) BIT @#MTSTAT,#ENDTAP ; TEST FOR END OF TAPE MARK BEQ MTINT2 MOV #13,ERROR(R0) ; SET END OF TAPE INDICATOR IN LIST MTINT2: TST R5 BNE MTEYIT MTINRE: JSR PC,MTDQXN MTEYIT: JMP RESTOR .PAGE MTDQXN: .ENDC .IFGE PRIP11 $PS011 = 4. ; ASSIGN 4 BLOCKS - 1024 WORDS .IFL $NBLKS-$SB011-$PS011 XXXXXXXX ; PRI 11 TOO LARGE .ENDC .ENDC .IFL PRIP12 $PS012 = $NBLKS-$SB012 .ENDC .IFGE PRIP12 $PS012 = 4. ; ASSIGN 4 BLOCKS - 1024 WORDS .IFL $NBLKS-$SB012-$PS012 XXXXXXXX ; PRI 12 TOO LARGE .ENDC .ENDC .I. X:;d# X:bX: X:f $X:`Z XXw Xb-Z5. X:X X:X X:bX: X:Zh"pdXX.X:d X:XX:X: X:X<RXw XTf. X:R X:X X:X X:T X:f(Z &&f% ".X: X:Z X:X:X:;d^.  @  ҕ+ .X: JSR PC,MTDEQ ; DEQUEUE REQUEST CMPB TYPE(R0),#2 ;TYPE 2 EXIT BNE MTIN00 MOV SYSTEM(R0),-(SP) ;PLACE TASK NUMBER ON STACK CLR -(SP) ;PUSH 0 ON STACK JSR PC,UNSPND TST (SP)+ ;POP OFF ERROR CODE MTIN00: CMPB TYPE(R0),#3 BNE MTIN02 MOV R0,-(SP) ; LIST ADDRESS MOV SYSTEM(R0),-(SP) ; TASK NUMBER JSR PC,IOCFL PRIP13 $PS013 = $NBLKS-$SB013 .ENDC .IFGE PRIP13 $PS013 = 4. ; ASSIGN 4 BLOCKS - 1024 WORDS .IFL $NBLKS-$SB013-$PS013 XXXXXXXX ; PRI 13 TOO LARGE .ENDC .ENDC .IFL PRIP14 $PS014 = $NBLKS-$SB014 .ENDC .IFGE PRIP14 $PS014 = 4. ; ASSIGN 4 BLOCKS - 1024 WORDS .IFL $NBLKS-$SB014-$PS014 XXXXXXXX ; PRI 14X: Ԁ|X:;dX:;d* Hw &w A8.X: X:;d& Ԁ|AX:;dԀ| PAGE qQW-.fA f5@., w   w 1.X: X: X: "X: (X:N.R Rŀɕ?ҥ  "Hq.xҕ ҕ # w & X: R &ROMX ; EXECUTE I/O COMPLETE SUBROUTINE MTIN02: TST NMTREQ BMI MTDQD ; BR IF -1 MOV MTFRST,R0 ;GET NEXT LIST ADDRESS .IFNZ $KT11C MOV R0,-(SP) ; CONVERT LIST ADDRESS JSR PC,PPASV5 ; FROM PACKED PHYSICAL TO MOV (SP)+,R0 ; SYSTEM VIRTUAL MOV R0,CDTLST ; SAVE FOR NEXT MOV $KPAR5,MTPAR5 ; INTERRUPT MOV DTPAR(R0),@#$KPAR6 TOO LARGE .ENDC .ENDC .IFL PRIP15 $PS015 = $NBLKS-$SB015 .ENDC .IFGE PRIP15 $PS015 = 4. ; ASSIGN 4 BLOCKS - 1024 WORDS .IFL $NBLKS-$SB015-$PS015 XXXXXXXX ; PRI 15 TOO LARGE .ENDC .ENDC .IFL PRIP16 $PS016 = $NBLKS-$SB016 .ENDC .IFGE PRIP16 $PS016 = 4. ; ASSIGN 4 BLOCKS - 1024 WORDS .IFL $NBLKS-$ (X:M  & X: X:X:f h&X: X:qQWqQWL, * Zҕ  >. Ԁ|X:;d X: Ԁ|$X:Ԁ|i.MAIN.qQW]. ~f e0R&{ &X:.@ ( @ ! <z X:(" ;INITIALIZE KPAR FOR DATA BUFFER ADDR .ENDC MOV FUNCT(R0),R1 ;RETURN JUMP TO ASL R1 ; FUNCTIONAL JSR PC,@MTFCT(R1) ; ROUTINE CMP RES2(R0),#2 BLE MTINRE TST R4 BNE MTINRE MTIN05: MOV #MTTLI,-(SP) MOV FUNCT(R0),R1 MOVB MTIMV(R1),-(SP) JSR PC,QTIME TST (SP)+ MTDQD: RTS PC .PAGE ; MAGNETIC TASB016-$PS016 XXXXXXXX ; PRI 16 TOO LARGE .ENDC .ENDC ; ; .ENDC ; MATCH FOR .IFNZ OVRLAY ; ; ROS SYSTEM TASK NUMBERS ; ; $INPNO = 1 ; INPUT $CPTNO = MXTASK+2. ; COMPRS $INITD = 3. ; DISC INITIALIZER $FLTNO = MXTASK+4. ; FILE LIST $RLDNO = MXTASK+5. ; ROS LOADER $RASNO = MXTASK+6. ; ROS ASSEMBLER TASK NUMBER $UTLNO =  e ee e Hq | /. X:  X: X:| X:  X:N X. X:N X:  X:X X:qQWB|.B  & Rw E G" X: X:(X: .h UUU X:vLX:vL "X: .& 4 .U%X zX:vL .$ e + -PE TIME OUT ROUTINE MTTIM: JSR R5,PUSHR TST NMTREQ ; IS QUEUE EMPTY BMI MTTIM2 .IFZ $KT11C MOV MTFRST,R0 .IFF MOV CDTLST,R0 ; GET LIST S.V.A. MOV MTPAR5,$KPAR5 ; AND ASSOCIATED PAR5 .ENDC CMP FUNCT(R0),#11 BNE MTTIM1 JSR PC,MUREWI TST R2 BEQ MTTIM4 MOV #MTTLI,-(SP) ; TIMER LIST MOV MXTASK+7. ; ROS UTILITY TASK $TKCNO = MXTASK+8. ; TASK C??? $TMRNO = 2. ; TIMER QUEUE PROCESSOR ; .PAGE $ABMES = 3 ; NO. OF ABORT MESSAGE BUFFERS .IFL $ABMES ; $ABMES MUST BE => 0. XXXXXX ; ABRT .ENDC ; PSTP ; THE SYSGEN PARAMETER '$PST CONTROb*x/T&X! 7 b$$X: .b((5`5`5@5@2 .U E SSSTwJ BR X: .&&  N H@   .LN  & @  .r  &   `@ .  5@ 5`7  X:"X:(X:.7 U7  E7 5&X:  X: #1,-(SP) ; TIMER DELAY JSR PC,QTIME TST (SP)+ BR MTTIM2 ; DEQUEUE THE REQUEST MTTIM1: MOV #12,R4 MTTIM4: JSR PC,MTDQXN MTTIM2: JSR R5,POPR ;RESTORE REGISTERS RTS PC ;RETURN TO CALLER .PAGE ; MAGNETIC TAPE OPEN ; MOPEN: JSR PC,MTINIT BR MCL10 ;GO TO COMMON EXIT FOR OPEN/CLOSE ; ; ; MAGNETIC TAPE CLOSE ; MCLOS:LS THE EXECUTION PATH*PSTP ; DURING A TASK ERROR. PSTP ; = -1 ROS + USER ROUTINES PSTP ; = 0 ROS PSTP ; = +1 USER PSTP ; PSTP $PST = 0 ; PSTP ; vLX:&X: ^.  w 7 -. X: X:vL R&X:(Hq.  5U@55@GU X:vL(X:vL.0E@A  8U 5  @ X: X:C.V  U ( 'UW!X:vLX:;d&X:vLt.|. W!$U  , SX:vLu.W!. xU *  CLR R4 MCL10: RTS PC .PAGE ; M A G N E T I C T A P E R E A D MREAD: JSR PC,MTINIT BPL MREA1 JSR PC,MTBAD ; FORM READ COMMAND IN R3 BIS #READ,R3 ;INCLUSIVE OR UNIT NUMBER AND COMMAND MOV R3,@#MTCOMM ;GIVE READ COMMAND MREA1: RTS PC ; ; THIS ROUTINE IS ENTERED AFTER A READ ATTEMPT OR A BACK SPACE RECORD ; BYTE RES1 IS THE REREAD REPEAT COUNT ; PSTP .PAGE $CLOCK = 0 ; INTERRUPTS SOURCE OFR MAINTAINING ; ; TIMERS AND DECKS ; ; 0=DEC LINE FREQUENCY(KW11-2) ; ; 1=DDS CLOCKSX ;FOLLOWING ARE SYSGEN PARAMETERS FOR THE TIMER AND CALENDAR ROUTINES ; NORMALLY THE BASE PERIOD FOR THE TIMERS IS THE INTERRUPT PERIOD, AND ; IF THAT PERIOD IS DESIRED FOR USE BY ANY w 0|X:vL&a. +-&"&':%F w @ (@j.:  CDOB*F L w\eee.` p X 8 NSX:;d X:;dX:;d.! ! -- @  `jX:;dX:;d X: . BIT 15 OF RES1 IS THE BACK SPACE RECORD FLAG MRREA: CLR R5 ;SET I/O COMPLETE TST RES1(R0) ; TEST BACKSPACE FLAG BPL MRRE1 ;CONTINUE IF NOT SET JSR PC,MREAD BR MRRE3 MRRE1: .IFZ DATUM MOV @#MTSTAT,R2 BMI MRRE6 ; BR IF EOF DETECTED ASH #4,R2 ;MOVE ERROR BIT INTO SIGN BIT BMI MRRE2 ;BRANCH IF ERROR STIMER MODULE, "RESO" MUST BE ; SET TO 1, AND THAT RESOLUTION (ZERO) SPECIFIED BY THOSE MODULES. ; IF IT IS DESIRED TO MAKE THE BASE PERIOD COARSER THAN THE INTERRUPT ; PERIOD, "$TMBAS" MUST BE SET TO THE DESIRED RATIO OF BASE PERIOD TO ; INTERRUPT PERIOD. $TMBAS = 0 ;DE-SELECT ALTERNATE BASE PERIOD OPTION ; THE FOLLOWING PARAMETERS SPECIFY THE MULTIPLIERS THAT WILL BE LOADED ; INTO THE RESOLUTION COUNTER TABLES FOR DETERMINING THE PERIOD OF EACH ; RESOULTION. THE PE &    & KX:.e @4 $ A  Hq.@   C0b X:;d"X:;d#.   & N`  U7.D` ew   7 UX:$Hq.j @  5 U$.X:vL HqX:vL X:vL (X:vLY.- F> ,UET MRRE6: SUB @#MTWORD,COUNT(R0) ; SUB WORD COUNT .IFF MRRE6: BIT @#MTSTAT,#MDATST BNE MRRE2 ; BRANCK IF ANY ERRORS MOV @#MTBCNT,R1 ASR R1 ADD R1,COUNT(R0) .ENDC BR MRRE4 MRRE2: MOV #11,R4 DEC RES1(R0) ; DEC REPEAT COUNT BEQ MRRE4 JSR PC,MTINIT BPL MRRE4 MOVB #200,RES1+1(R0) ;SET BACK SPACE FLAG RIOD OF A GIVEN RESOLUTION LEVEL DEPENDS ON ALL ; THE PRECEDING LEVELS (WITH LOWER NUMBERS), WHICH ACT AS SUCCESSIVE ; MULTIPLIERS IN COUNTING TO THE GIVEN RESOLUTION LEVEL. ; THUS, FOR "RES4", ITS PERIOD WOULD BE: ; RES4*RES3*RES2*RES1*RES0 --- IN UNITS OF THE BASE PERIOD RES0 = 1 ; 0.01 SEC RES1 = 1 ; 0.01 SEC RES2 = 2 ; 0.02 SEC RES3 = 5 ; 0.1 SEC RES4 = 2 ;   &X:;dX:vL Hq X:vL27 ES.X:vLX:vL  X:;dX:vLHq. .  . @@@@@@@@@@@@@@@@@o<@@@@@@@@@iqQWf(   ş`.X:;dX:;dX:;d Hq X:;d; X:;dw .IFNZ DATUM MOV #-1,@#MTBCNT .ENDC BIS #BCKR,R3 ;R3 =BACK SPACE COMMAND MOV R3,@#MTCOMM ;GIVE BACK SPACE COMMAND MRRE3: INC R5 ;SET I/O NOT COMPLETE MRRE4: RTS PC .PAGE ; M A G N E T I C T A P E W R I T E ; R0 = ADDRESS OF LIST ; BYTE RES1 IS REWRITE REPEAT COUNT ; BIT 15 OF RES1 IS BACK SPACE RECORD FLAG ; MWRIT: 0.2 SEC RES5 = 5 ; 1.0 SEC RES6 = 5 ; 5.0 SEC RES7 = 2 ; 10.0 SEC RES8 = 3 ; 30.0 SEC RES9 = 2 ; 60.0 SEC RES10 = 5 ; 5 MIN RES11 = 2 ; 10 MIN RES12 = 3 ; 30 MIN RES13 = 2 ; 60 MIN RES14 = 2 ; 2 HRS RES15 = 6 ; 12 n xKX  qQWX qQW..A@NE@` j.  ` V h7 h j&X:;dh X:;dh$X:;dj (X:(6 j"U $&X:;dj X:X:vLw' MV  qQWV qQWV &V 5d  hlEl7 . X:dX:;dhX:X:;dlX:;dlv.t n C @ @   #1-JSR PC,MTINIT BPL MWRI1 JSR PC,MTBAD MOV #14,R4 ;SET ERROR CODE MOV @#MTSTAT,R2 .IFZ DATUM ASR R2 ;PLACE BIT 0 IN CARRY BIT BCS MWRI1 ;BR IF NO WRITE RING .IFF ASH #13.,R2 ; PLACE WRITE RING BIT IN SIGN BIT BMI MWRI1 ; BR IF NO WRITE RING .ENDC CLR R4 ;CLEAR ERROR FLAG ; IS THIS THE FO HRS ; IN SYSTEMS WHERE THE BASE PERIOD IS GREATER THAN ONE MILLISECOND, ; "MSECR" WILL NECESSARILY HAVE A PERIOD GREATER THAN ONE MILLISECOND. MSECR = 0 ;MAX RESOLUTION: #0 AT 10 MILLISECONDS SECR = 5 ;"RES5" IS THE ONE-SECOND RESOLUTION TRES = SECR ; FOR TIME-SLICE WATCH-DOG IN RPOM $NRES = 16. ;USE MAX # OF RESOLUTIONS .IFLE $NRES XXXXXXXX ;$NRES MUST BE FROM 1 TO 16 X:;dn<.  ` EQ$) `j&R. `B ! #`B  s! (!.  #1-`7. w("X:.(R. ! 7s!$s" h7  ^h& R!"R"R$2! ` }.R R rBx rh r .N!B w xR URTH TRY MOV RES1(R0),R2 ;LOAD REPEAT COUNT IN R2 BIC #177774,R2 BEQ MWRI2 ;BRANCH TO ISSUE WRITE WITH EXTENDED GAP ; ISSUE NORMAL WRITE BIS #WRIT,R3 ;OR IN WRITE COMMAND BR MWRI3 MWRI2: BIS #WEXG,R3 ;OR IN WRITE WITH EXTENDED GAP MWRI3: MOV R3,@#MTCOMM ;STORE IN COMMAND REGISTER MWRI1: RTS PC .PAGE ; THIS ROUTINE IS ENTERED BY THE INTERRUPT PROCESSOR AF .ENDC .IFG $NRES-16. XXXXXXXX ;COME ON! MUST BE LESS THAN 17 .ENDC ; THE BASE PERIOD FOR THE TIME-OF-DAY CLOCK, ABORT, AND TIME-SLICE IS ; NORMALLY THE INTERRUPT PERIOD, AS SPECIFIED BY "TICRES". ; IF A MULTIPLIER FOR THIS INTERRUPT IS DESIRED TO PRODUCE A COARSER ; BASE PERIOD, USE THE PARAMETER "$ABMPL" TO SPECIFY THE RATIO DESIRED. TICRES = 10. ;T-O-D CLOCK TICKS-PER-SECOND $ABMPL = 0 ;NO T-O-D CLOC&r  R r "rh.t!   u57 <f rh rBxR .!ABC f& ;.R r rh rBx X:.!f6 & X: X: X: X:.! RRRRRRR       /. "R⋇ &  & & 8.2" H f P    TER WRITE COMMANDS ; MRWRI: CLR R5 ;SET I/O COMPLETE TST RES1(R0) BPL MRWR1 ;BRANCH IF THE BACK SPACE IS NOT SET JSR PC,MWRIT BR MRRE3 MRWR1: .IFZ DATUM MOV @#MTSTAT,R2 ASH #4,R2 ;PALCE ERROR BIT IN SIGN BIT BMI MRRE2 ;BR IF ERROR ; PLACE WORD COUNT AND STATUS IN LIST SUB @#MTWORD,COUNT(R0) .IFF BIT @#MTK BASE MULTIPLIER TODINT = 320 ;INTERRUPT VECTOR FOR T-O-D INTERRUPT TIMINT = TODINT+4 ;INTERRUPT VECTOR FOR INTERVAL TIMER STLINT = TIMINT+4 ;VECTOR FOR STALL ALARM INTERRUPT STLREG = 167000 ;ADDRESS FOR STALL ALARM RESET .IFNZ $CLOCK CLKENB = 167002 ;ADDRESS FOR ENABLE OF CLOCKS TODBIT = 4 ;BIT TO ENABLE TIME-OF-DAY INTERRUPT TIMBIT = 10 ;BIT TO ENABLE INTERVAL TI &X:.X"$e7 wU  X:X:;d X:vL.~"  \ ,  * &X:X: X: X:." U@  7 & X:vLX:X:vL&X:."-U   &X:X:X:vL&X:."& $77&  <X:X:&X:STAT,#MDATST BNE MRRE2 ; BRANCH IF ANY ERRORS MOV @#MTBCNT,R1 ASR R1 ADD R1,COUNT(R0) .ENDC RTS PC .PAGE ; M A G N E T I C T A P E W R I T E F I L E M A R K ; MWEOF: JSR PC,MTINIT BPL MWEOF1 MOV #14,R4 ;SET ERROR CODE MOV @#MTSTAT,R2 .IFZ DATUM ASR R2 ;PLACE BIT 0 IN CARRY BIT BCS MER INTERRUPT STLBIT = 0 ;BIT TO ENABLE STALL ALARM INTERRUPT .ENDC .IFZ $CLOCK CLKENB = 777546 ;ADDRESS OF DEC LINE CLOCK TODBIT = 0 ; TIMBIT = 100 ;CLOCK ENABLE BIT STLBIT = 0 ; .ENDC $TMSLC = 1 ;SYSTEM OPTION FOR INCLUDING TIME-SLICING $SWATZ = 20. ;NUMBER OF ENTRIES IN SCHEDULER "WAIT" TABLE $TWATZ = 20. ;WORDS IN TIMER'S "WAI.#  @ @ X:vLg.<# l * v & @DX:X:vLr.b#wU 7 7  -X:vLX:vL X:.#%?S 8  |  X:.# 7  & #-&   %&X:vLX:X:vL$X:.#\0   :   ~ ;X:(X: MWEOF1 ;BR IF NO WRITE RING .IFF ASH #15,R2 BMI MWEOF1 .ENDC CLR R4 ;CLEAR ERROR FLAG BIS #WRFM,R3 ; COMMAND MOV R3,@#MTCOMM ;GIVE COMMAND MWEOF1: RTS PC ; ; THIS ROUTINE IS ENTERED BY THE INTERRUPT PROCESSOR AFTER WRITE E O F OPERATION ; MRWEO: CLR R5 ;SET I/O COMPLETE MOV RES1(R0),R1 BPL MRWEO1 ;BT" TABLE .PAGE ; $DTAPE = 1 ; DECTAPE OPTION ; NDISCS = 1 ;NO. OF DISC CONTROLLERS (0 = NO DISCS) ; $DDSDC = 1 ; USE DDS DICS ; ACTSIZ = 20. ; MAXIMUM NO. OF ENTRIES IN AUTH. CODE .IFL 20.-ACTSIZ XXXXXXXX ; ERROR-ALLOCATE MORE LOCATIONS XXXXXXXX ; FOR AUTHORIZATION CODES .ENDC ; .IFNZ NDISCS DRESDI = 1 .#   E zE 5XX:vL(X:X. $ 7 U nfX:vLX:vL X:vLi.F$ 8 > nne?fX:;dX:;dnX:;dn.l$ $   f.$ e0w "U@ 5 }X:vL&kQf.$ %n"  5 (n" X:X:;dx (X:kRANCH IF BACK SPACE FLAG IS NOT SET JSR PC,MWEOF BR MRRE3 MRWEO1: .IFZ DATUM MOV @#MTSTAT,R2 ASH #4,R2 ;PLACE ERROR BIT IN SIGN BIT BPL MWEOF1 .IFF BIT @#MTSTAT,#MDATST BNE MRRE2 ; BRANCH IF ANY ERRORS .ENDC RTS PC .PAGE ; M A G N E T I C T A P E R E W I N D ; MREWI: JSR PC,MTINIT BPL MREW1  ; DISC RESIDENT DIRECTORY OPTION .IFL 3-NDISCS XXXXXXXX ; PRESENTLY CODED FOR MAX. OF 3 DISCS .ENDC ; NDPRT1 = 5 ; NO. OF PRIORITY LEVELS IN DISC 1 QUEUES .IFL NDPRT1-3 XXXXXXXX ; MUST BE AT LEAST THREE .ENDC MAXID1 = 500. ; MAXIMUM ID ON DISC 1 ; .IFG NDISCS-1 NDPRT2 = 7 ; NO. OF PRIORITY LEVELS IN DISC 2 QUEUES .$      X:;dR$X:`.%   ~ W!' n <X:.*%   *! $  NX:X:'.P%    ff  X:.v% 7 wU&X:X:"X:vL(X:% U.X:;d  X:vLw00 .IFZ DATUM BIT @#MTSTAT,#2 ;TEST LOAD POINT BIT .IFF BIT @#MTSTAT,#40 .ENDC BNE MREW2 BIS #REWD,R3 MOV R3,@#MTCOMM MREW1: RTS PC MREW2: CLR RES2(R0) BR MREW1 ; ; THIS ROUTINE IS ENTERED BY THE INTERRUPT PROCESSOR AFTER A REWIND ; MRREW: CLR R5 ;SET I/O COMPLETE RTS PC .PAGE ; MAGNETIC TAPE SPACE RECO.IFL NDPRT2-3 XXXXXXXX ; MUST BE AT LEAST THREE .ENDC MAXID2 = 500. ; MAXIMUM ID ON DISC 2 .ENDC ; .IFG NDISCS-2 NDPRT3 = 3 ; NO. OF PRIORITY LEVELS IN DISC 3 QUEUES .IFL NDPRT3-3 XXXXXXXX ; MUST BE AT LEAST THREE .ENDC MAXID3 = 500. ; MAXIMUM ID ON DISC 3 .ENDC $SYSFL = NDISCS+5 ; NO. OF SYSTEM FILE ID'S IN ROS ;  %W%8%n%. qQW% qQW% qQW% qQW%qQW%6.%  L "U 6  cX:vL"X:;d .% @B     C w).% z<  <>C!W!^n X:;d.&8  C D C!D!H Hq.@& UUprP:X:vLX:;dp "X:;dr.f& x7pp x H 7 HRD (+-N) ; MSPRC: .IFZ DATUM CLR R5 ;SET I/O COMPLETE TST @#MTSTAT ;CHECK FOR FILE MARK BMI MSPRC5 JSR PC,MTINIT ;INITIALIZE BPL MSPRC2 TST COUNT(R0) BEQ MSPRC2 BMI MSPRC3 ;BR IF NEGATIVE ; DECREMENT (N) AND SPACE FORWARD DEC COUNT(R0) INC NWORD(R0) BIS #SPCR,R3 ; BR MSPRC4 ; INCRE  ; COMPID,FTDIR,CDIMGE,CDIHDR,TTFILE .IFZ DRESDI NCFILE = $SYSFL+40. ; NO. OF CORE RESIDENT FILE ID'S .ENDC .IFNZ DRESDI NCFILE = NDISCS+$SYSFL+40. ; NO. OF CORE RESIDENT ID'S ; ; INCLUDING DOD'S AND SYSTEM FILES NCRWDS = NCFILE*5 ; NO. OF CORE RESIDENT WORDS NEEDED ; ; FOR CORE DIRECTORY NCRLOC = NCRWDS+NCRWDS X:;dpX:;dp$X:;d.&7p f' 7 5X:;dp X: X:V.& > R e-pX: R(r g.&w ۏ7   & X:.& fR %&X: X: X: $X:Y.$'R    @  X: X:2.J'  MENT (N) AND SPACE BACK MSPRC3: INC COUNT(R0) DEC NWORD(R0) BIS #BCKR,R3 MSPRC4: MOV R3,@#MTCOMM ;GIVE COMMAND INC R5 ;SET I/O NOT COMPLETE MSPRC2: RTS PC MSPRC5: TST NWORD(R0) BGT MSPRC6 INC NWORD(R0) DEC COUNT(R0) BR MSPRC2 MSPRC6: DEC NWORD(R0) INC COUNT(R0) BR MSPRC2 .IFF ; NO. OF LOCATIONS IN CORE RESIDENT ; ; DIRECTORY .ENDC ERRPRT = 1 ; PRINT-OUT DISC ERROR MESSAGES OPTION CHKPTC = 1 ;1 = CHECKPOINTING ALLOWED .IFZ $KT11C .IFNZ CHKPTC XXXXXXXX .ENDC .ENDC FXPART = 1 ; FIXED PARTITION OPTION $SGMNT = 1 ; SEGMENT LOAD OPTION $FTMAX = 10. ; LARGEST FILE TYPE IN SYSTEM D >7 >,&X:X: R> $R,.p'8, F 5 %, R8 R,vLkQ $X:.'n" %  l  n"(X:;dk.', ,  >>U`. R,X:;d R,R>$R>T.' 7 7  b   . x&X:vL X:;dX:;d$X:;dl(X:;d JSR PC,MTINIT ; INITIALIZE BPL MSPRC3 ; BRANCH IF ERROR MOV COUNT(R0),R1 BMI MSPRC3 NEG R1 BIS #SPCR,R3 ; OR IN SPACE COMMAND MSPRC1: MOV R1,@#MTBCNT ; PLACE COUNT IN CONTROLLER REGISTER MOV R3,@#MTCOMM ; GIVE COMMAND MSPRC2: RTS PC MSPRC3: BIS #BCKR,R3 ; OR IN BACKSPACE COMMAND BR MSPRC1 MRPRC: MOV COUNT(R0),R1 BPL MSPRC4  $IDMAX = 500. ; LARGEST FILE ID IN SYSTEM-- ; ; MUST BE >= MAXID1,2,3,..,N $FTDRL = $FTMAX*3/64.+1 ; NO. OF SECTORS IN FILE TYPE DIRECTORY $ROSFW = NDISCS+$SYSFL*5 ; NO. OF WORDS IN ROS FILES $CDISZ = NCRWDS-$ROSFW/64.+1 ; NO. OF SECTORS IN CORES ; ; DIRECTORY IMAGE $TKFL1 = TASMAX*5 ; # BYTES IN REG TASK TABLES $TKFL2 = TASMAX-MXTASK*3 R* *xz'zkQx  qQW'vL A  _COM R1 MSPRC4: ADD @#MTBCNT,R1 MOV R1,NWORD(R0) CLR R5 RTS PC .ENDC .PAGE ; MAGNETIC TAPE SKIP FILES (+-N) ; MSKFI: CLR R5 ;SET I/O COMPLETE MOV @#MTSTAT,R1 .IFZ DATUM ASL R1 .IFF ASH #5,R1 .ENDC BMI MSKFI5 JSR PC,MTINIT ;INITIALIZE BPL MSKFI2 .IFNZ DATUM MOV  ; # BYTES IN EXT OF TASK TABLES $TKFLN = $TKFL1+$TKFL2+2+3/4*2 ; # WORDS IN ALL TASK TABLES ; + 'TASKS' + EVEN NUMBER OF ; WORDS FOR DISCIO $TKFNS = $TKFLN/64.+1 ; NO. OF SECTORS IN TASK TABLE FILE ; ; THE FOLLOWING IS FOR DISC RESIDENT DIRECTORIES ; DIRAD1 = 320. ; DISC RESIDENT DIRECTORY ADDRESS DISC 1 ; ; LEAVES ROOM FOR 20K ROS B#-77776,@#MTBCNT .ENDC TST COUNT(R0) BEQ MSKFI2 BMI MSKFI3 ;BR IF NEGATIVE DEC COUNT(R0) INC NWORD(R0) BIS #SPCF,R3 ;FORM SKIP FILE COMMAND BR MSKFI4 MSKFI3: INC COUNT(R0) ;INCREMENT COUNT DEC NWORD(R0) BIS #BCKF,R3 ;FORM BACK SPACE FILE COMMAND MSKFI4: MOV R3,@#MTCOMM ;GIVE COMMAND INC R5 OOT .IFZ DRESDI DIRLN1 = 0 ; ZERO LENGTH .ENDC .IFNZ DRESDI DIRLN1 = MAXID1-1/12.+1 ; DISC DIRECTORY 1 LENGTH .IFG NDISCS-1 DIRAD2 = 0 ; DISC RESIDENT DIRECTORY ADDRESS DISC 2 DIRLN2 = MAXID2-1/12.+1 ; DISC DIRECTORY 2 LENGTH .ENDC .IFG NDISCS-2 DIRAD3 = 0 ; DISC RESIDNET DIRECTORY ADDRESS DISC 3 DIRLN3 = MAXID3-1/12.+1 ; DISC DIRECTORY 3 LENGTH ;SET I/O NOT COMPLETE MSKFI2: RTS PC MSKFI5: TST NWORD(R0) BGT MSKFI6 INC NWORD(R0) DEC COUNT(R0) BR MSKFI2 MSKFI6: DEC NWORD(R0) INC COUNT(R0) BR MSKFI2 .PAGE .IFNZ MULRE ; MAGNETIC TAPE MULTIPLE DRIVE REWIND MUREW: CLR R2 ;USE AS DEVICE NUMBER COUNTER MOVB DEVNUM(R0),R1 MOV R1,-(SP) .ENDC .ENDC ; ; THE FOLLOWING CONTAINS THE FILE TYPE STATUS DESCRIPTORS ; FOR EACH FILE TYPE. ; $FD000 = 41 ; FILE TYPE 0, LOG UNIT 1, NO COMPRESSION $FD001 = 1 ; FILE TYPE 1, LOG UNIT 1 $FD002 = 1 ; FILE TYPE 2, LOG UNIT 1 $FD003 = 1 ; FILE TYPE 3, LOG UNIT 1 $FD004 = 1 ; FILE TYPE 4, LOG UNIT 1 $FD005 = 101 ; FILE TYPE 5, LOG UNIT  ;SAVE ON STACK BIC #MTMREW,R1 ;CLEAR ALL BUT DEFINED UNITS MURE1: ASR R1 BCC MURE2 ;BR IF BIT 0 WAS CLEAR MOVB R2,DEVNUM(R0) ;SET DEVICE NUMBER IN LIST JSR PC,MTINIT BPL MURE2 BIC #ENAB,R3 ; CLEAR INTERRUPT ENABLE BIS #REWD,R3 ;SET REWIND COMMAND MOV R3,@#MTCOMM ;GIVE COMMAND MURE2: INC R2 ;INC DEVICE NUMBER TST R1 ! 1, CKSAVE REQUIRED $FD006 = 1 ; FILE TYPE 6, LOG UNIT 1 $FD007 = 1 ; FILE TYPE 7, LOG UNIT 1 $FD008 = 1 ; FILE TYPE 8, LOG UNIT 1 $FD009 = 1 ; FILE TYPE 9, LOG UNIT 1 .IFL 10.-$FTMAX XXXXXXXX ; ONLY SET UP FOR 10. FILE TYPES .ENDC $OVTYP = 5. ; FILE TYPE FOR OVERLAY TASKS ; ; FILE TYPE SIZE TABLE - IN SECTORS ; .IFNZ DRESDI $ ;HAVE ALL REWINDS BEEN ISSUED BNE MURE1 ;BR IF NOT MOV (SP)+,DEVNUM(R0) ;RESTOR RTS PC ;RETURN ; MUREWI: MOV DEVNUM(R0),R1 CLR R2 ;DONE FLAG CLR R3 ;DEVICE NUMBER BIC #MTMREW,R1 ;CLEAR ALL BUT DEFINED UNITS MURE3: ASR R1 BCC MURE4 ;BR IF BIT 0 WAS CLEAR BIC #MTCLR,@#MTCOMM ; CLEAR TAPE UNIT NUMBER % $FS000 = DIRAD1+DIRLN1+$FTDRL+$CDISZ+$TKFNS .ENDC .IFZ DRESDI $FS000 = $FTDRL+$CDISZ+$TKFNS .ENDC $FS001 = 300. $FS002 = 300. $FS003 = 300. $FS004 = 300. $FS005 = 2500. $FS006 = 300. $FS007 = 2500. $FS008 = 300. $FS009 = 300. ; $ALOD1 = $FS000+$FS001+$FS002+$FS003+$FS004 $ALOD2 = $FS005+$FS006+$FS007+$FS008+$FS009 .IFL 8192.-$ALOD1-$ALOD2 XXXXXXX(BIS R3,@#MTCOMM ; SET UNIT NUMBER BIT #MTRWD,@#MTSTAT ; TEST REWIND BIT BEQ MURE4 ;BR IF DONE INC R2 ;INC IF NOT DONE MURE4: ADD #MTUIC,R3 ; INC UNIT NUMBER TST R1 ;HAVE ALL UNITS BEEN CHECKED BNE MURE3 ;BR IF NOT MURE5: RTS PC .ENDC .PAGE ; THIS IS A MAGNETIC TAPE CONTROLLER INITIALIZATION ROUTINE ; CALL IS JSR PC,MTINIT ; RE)X ; ONLY 8192 SECTORS AVAIL.- 1/2 MEGAWORDS .ENDC ; .IFNZ $BATCH $BCHID = NDISCS+$SYSFL+1 ; FILE ID FOR BATCH FILE $BCHTP = 7. ; BATCH FILE TYPE $RASIZ = 200. ; NO. OF ENTRIES IN USERS SYMBOL TABLE ; ; IN RASM ; ; NOTE: 4 WORDS/ENTRY $LSDSZ = 1000. ; NO. OF WORDS RESERVED FOR LOADERS ; ; SYMBOL ,TURNS WITH ; R3 = DEVICE NUMBER SHIFTED FOR A COMMAND INSTRUCTION ; R4 = 0 AND (N) BIT SET IF NO ERROR ; R4 = 1 AND (N) BIT CLEAR IF TIME OUT ERROR MTINIT: MOV #CLEA,@#MTCOMM ;ISSUE CLEAR TO MAG TAPE CONTROLLER MOVB DEVNUM(R0),R3 ;OBTAIN DEVICE NUMBER ASH #MTDVS,R3 ; LEFT SHIFT MOV R3,@#MTCOMM ;STORE UNIT NUMBER IN COMMAND REGISTER BIS #MTINB,R3 ; SET INTERRUPT ENABLE ; CLEAR BACK SPACE FLAG AND SE-DIRECTORY (LSD) ; ; NOTE: $LSDSZ MUST BE >/= TO ; $MXOBJ*7/2 (5 WO-DS PE- SY4B6L#D $MXOBJ = 20. ; MAX NO. OF OBJECT MODULES TO BE ; ; LINKED INTO ANY GIVEN LOAD ; ; MODULE. .ENDC .ENDC ; MATCHES .IFNZ NDISCS .PAGE ; ; TTYIO SYSGEN PARAMETERS ; NTTYS = 1 ;NO. 0T DELAY COUNTER TO ZERO CLRB RES1+1(R0) ;CLEAR BACK SPACE FLAG CLR R4 CMP FUNCT(R0),#1 ;OPEN COMMAND BEQ MTIN3 MOVB @#MTSTAT,R1 ;LOAD WITH BYTE SIGN EXTENDED .IFNZ DATUM ASH #11,R1 .ENDC BPL MTIN2 ; BRANCH IF READY BIT WAS 0 MTIN3: RTS PC ;RETURN MTIN2: MOV #11,R4 BR MTIN3 ; .PAGE ; PLACE 1OF TELETYPES ;IN SYSTEM SYSTTY = 0 ;LOGICAL UNIT NO. OF SYSTEM ;TTY DEVICE MSGBUF = 0 ;MESSAGE BUFFERING OPTION: IF 1, ;DISC MESSAGE BUFFERING VERSION IS ;ASSEMBLED. IF 0, CORE VERSION IS ;ASSEMBLED. DISCUN = 1 ;LOGICAL UNIT NO. OF DISC TO BE USED 4BUFFER ADDRESS AND WORD COUNT IN CONTROLLER REGISTERS MTBAD: .IFZ $KT11C MOV DATA(R0),@MTMEMO .IFF MOV DTPAR(R0),@#772354 MOV DTVIRT(R0),-(SP) JSR PC,SVPPA ; TO PPA MOV (SP)+,R5 ; LOAD PPA CLR R4 ; PLACE BITS ASHC #2,R4 ; 16 & 17 IN R4 .IFZ DATUM ASH #2,R4 ; SET ADDRESS MOV R4,@#MTSTAT ; BITS 16 & 17 5 ;FOR MESSAGE BUFFERING DBUFSZ = 1 ;NO. OF 64 WORD DISC SECTORS ALLOCATED ;FOR BUFFERING OF ONE MESSAGE ON DISC FILESZ = 20*DBUFSZ ;NO. OF SECTORS PER FILE NTRYS = 3 ;NO. OF TRYS TO OUTPUT A CHARACTER ;TO TTY TTOTIM = 15. ;MILLISECOND COUNT FOR TTY ;OUTPUT TIMERS TTITIM = 15. ;SECOND COUNT FOR TTY INP8 .IFF ASH #4,R4 ; SET ADDRESS BIS R4,R3 ; BITS 16 & 17 .ENDC ; DATUM MOV DATA(R0),R4 ; GET BITS 0 & 1 BIC #177774,R4 BIS R4,R5 MOV R5,@#MTMEMO ; SET BITS 0 THRU 15 .ENDC ; KT11C MOV NWORD(R0),R5 ;GET WORD COUNT MOV R5,COUNT(R0) .IFZ DATUM MOV R5,@#MTWORD .IFF 9UT/OPERATOR ;RESPONSE TIMERS TTWTIM = 240. ;SECOND COUNT FOR WAIT TIMER NWUCH = 5 ;NO. OF CHARS TO BE OUTPUT FOR ;WARMUP OF A TTY UNIT EOMCH = 33 ;ALTERNATE EOM CHAR (ALT KEY) EOMOPT = 0 ;EOM CHAR OPTION WHERE ; 1 = EOM IS FOLLOWED BY CR AND LF ; 0 = NOT FOLLOWED BY CR AND LF EOMPRT <MOV NWORD(R0),R5 ; GET WORD COUNT ASL R5 ; BYTE COUNT NEG R5 MOV R5,@#MTBCNT .ENDC RTS PC .PAGE ; DEQUEUE THE REQUEST MTDEQ: MOV R4,ERROR(R0) DEC NMTREQ MOV @#MTSTAT,STATUS(R0) MOV @#PS,-(SP) ;SAVE CURRENT CPU STATUS REGISTER SPL 7 ;INHIBIT INTERRUPTS MOV (R0),MTFRST ;PUT NEXT GUY IN THRAED AT TOP OF QUEUE = = 0 ;EOM PRINT OPTION WHERE ; 1 = EOM IS PRINTED ; 0 = EOM IS NOT PRINTED EOLCH = 12 ;CHAR BEING USED FOR END OF LINE ON ;TTY INPUT ECHOCH = 40 ;ECHO CHAR -- CHAR OUTPUT FOR NO ECHO MRCH = 25 ;MESSAGE RESTART CHAR (CONTROL U) LINELN = 72. ;LINE LENGTH: NO. OF CHARS TO BE @ BNE MTDEQ2 MOV #MTFRST,MTLAST .IFNZ $KT11C CLC ROR MTLAST CLC ROR MTLAST .ENDC MTDEQ2: MOV #1,(R0) ;SET LIST READY MOV (SP)+,@#PS ;UN-INHIBIT THE INTERRUPTS MOV SYSTEM(R0),R2 ;GET TASK NUMBER OF REQUESTOR BEQ MTDEQ1 ;BRANCH IF NOT A TASK DECB IOSTAT(R2) ;OTHERWISE, DECREMENT THE I/O IN PROGRES BNE MTDEQ1 A ;TYPED IN A LINE .PAGE ;*********************************************************************** ;* ** ;* SEGMENT REGISTER ADDRESSES REQUIRED BY THE PROGRAMS WHEN ** ;* IMPLEMENTED ON AN 11/45 OR 11/25, EITHER WITH SEGMENTATION. ** ;* ** .IFNZ $KT11C ;* ;* K E R N E L S E G M E N T R E G I S T E R S ;* $KP MOV R2,-(SP) ;GO TO OVERLAY MONITOR SO THE TASKS CORE JSR PC,RELTSK ; CAN BE RELEASED MTDEQ1: RTS PC .END EAR0 = 772340 ; $KPAR1 = 772342 ; $KPAR2 = 772344 ;KERNEL $KPAR3 = 772346 ; PAGE $KPAR4 = 772350 ; ADDRESS $KPAR5 = 772352 ; REGISTERS $KPAR6 = 772354 ; $KPAR7 = 772356 ; ; $KPDR0 = 772300 ; $KPDR1 = 772302 ; $KPDR2 = 772304 ;KERNEL $KPDR3 = 772306 ; PAGEI $KPDR4 = 772310 ; DESCRIPTOR $KPDR5 = 772312 ; REGISTERS $KPDR6 = 772314 ; $KPDR7 = 772316 ; ;* ;* U S E R S E G M E N T R E G I S T E R S ;* $UPAR0 = 777640 ; $UPAR1 = 777642 ; $UPAR2 = 777644 ;USER $UPAR3 = 777646 ; PAGE $UPAR4 = 777650 ; ADDRESS $UPAR5 = 777652 ; REGISTERS $UPAR6 = 77765M4 ; $UPAR7 = 777656 ; ; $UPDR0 = 777600 ; $UPDR1 = 777602 ; $UPDR2 = 777604 ;USER $UPDR3 = 777606 ; PAGE $UPDR4 = 777610 ; DESCRIPTOR $UPDR5 = 777612 ; REGISTERS $UPDR6 = 777614 ; $UPDR7 = 777616 ; .ENDC .PAGE ;****************************************************************Q****** ;* ** ;* IN THE FOLLOWING EQUATES, A ZERO MEANS DO NOT INCLUDE ** ;* THE OPTION. ** ;* ** ;* C A R D R E A D E R E Q U A T E S ** ;* ** ;********************************************************U************** NCR = 1 ;NUMBER OF CARD READERS IN SYSTEM BIN = 0 ; DON'T INCLUDE BINARY MODE BCD = 1 ;1 = INCLUDE ALPHANUMERIC MODE, 0 = DONT TTYSW = 1 ;1 = SWITCH INPUT TO TTY ON COMMAND INEBC = 0 ; 1=PROVIDE OFR INTERNAL EBCDIC CODE EXEBC = 0 ; 1=PROVIDE FOR EXTERNAL EBCDIC CODE ; (029 CARD CODE) $RES = 1 Y ; TIMER RES. FOR CREAD (=10.0 MSEC.) $100MS = 10. ;MULTIPLE USING $RES FOR 100 MS $500MS = 50. ;MULTIPLE USING $RES FOR 1/2 SECOND $1SEC = 100. ;MULTIPLE USING $RES FOR 1 SECOND MXTIME = 180. ;MAX SECONDS TO WAIT FOR OPR RESPONSE ; ; NOTE: THE ABOVE TIMES DO NOT NEED TO BE EXACT. SELECT THE ; PROPER VALUES TO GET AS CLOSE AS POSSIBLE TO THE ; TIMES STATES. ; ; ; C] / R V E C T O R I N F O R M A T I O N ; ; CR1 = 2 ;LOGICAL UNIT NO. FOR CR # 1 CR2 = 2 ;LOGICAL UNIT NO. FOR CR # 2 CR3 = 0 ;LOGICAL UNIT NO. FOR C/R # 3 CR4 = 0 ;LOGICAL UNIT NO. FOR C/R # 4 ; ; C / R D E V I C E I / O A D D R E S S E S ; CRS.1 = 777160 ;CARD READER STATUS - C/R # 1 CRB1.1 = 777162 ;CARD READER BINARY DATA BUFFER CRB2.1 a = 777164 ;CARD READER COMPRESSED DATA ADDRESS ; CRS.2 = 777160 ;CARD READER STATUS - C/O # 2 CRB1.2 = 777162 ;CARD READER BINARY DATA CRB2.2 = 777164 ;CARD READER COMPRESSED DATA ; CRS.3 = 0 ;CAR READER STATUS - C/R # 3 CRB1.3 = 0 ;CARD READER BINARY DATA BUFFER CRB2.3 = 0 ;CARD READER COMPRESSED DATA BUFFER ; CRS.4 = 0 ;CARD READER STATUS -e C/R # 4 CRB1.4 = 0 ;CARD READER BINARY DATA BUFFER CRB2.4 = 0 ;CARD READER COMPRESSED DATA BUFFER ; CRVC.1 = 230 ; C/R # 1 INTERRUPT VECTOR CRVC.2 = 230 ;C/R # 2 INTERRUPT VECTOR CRVC.3 = 0 ;C/R # 3 INTERRUPT VECTOR CRVC.4 = 0 ;C/R # 4 INTERRUPT VECTOR .PAGE ;********************************************************************** ;* i ** ;* L I N E P R I N T E R E Q U A T E C A R D S ** ;* ** ;********************************************************************** NLP = 1 ;NUMBER OF LINE PRINTERS IN SYSTEM NLPRTY = 3 ;NUMBER OF L/P PRIORITY LEVELS LPBACK = 1 ;1 = BACKUP L/P WITH TTY BY OPER COMMAND LPVC.1 = 200 ;L/P m# 1 INTERRUPT VECTOR ADDRESS LPVC.2 = 200 ;L/P # 2 INTERRUPT VECTOR ADDRESS LPVC.3 = 000 ;L/P # 3 INTERRUPT VECTOR ADDRESS LPVC.4 = 000 ;L/P # 4 INTERRUPT VECTOR ADDRESS LPDT.1 = 765010 ;L/P # 1 DATA BUFFER I/O ADDRESS LPDT.2 = 765010 ;L/P # 2 DATA BUFFER I/O ADDRESS LPDT.3 = 0 ;L/P # 3 DATA BUFFER I/O ADDRESS LPDT.4 = 0 ;L/P # 4 DATA BUFFER I/O ADDRESS LFRG.1 = q 765012 ;L/P # 1 LINE FEED REGISTER LFRG.2 = 765012 ;L/P # 2 LINE FEED REGISTER LFRG.3 = 0 ;L/P # 3 LINE FEED REGISTER LFRG.4 = 0 ;L/P # 4 LINE FEED REGISTER CNT.1 = 765014 ;L/P # 1 WORD COUNT REGISTER CNT.2 = 765014 ;L/P # 2 WORD COUNT REGISTER CNT.3 = 0 ;L/P # 3 WORD COUNT REGISTER CNT.4 = 0 ;L/P # 4 WORD COUNT REGISTER CMD.1 = 765016 u ;L/P # 1 COMMAND REGISTER CMD.2 = 765016 ;L/P # 2 COMMAND REGISTER CMD.3 = 0 ;L/P # 3 COMMAND REGISTER CMD.4 = 0 ;L/P # 4 COMMAND REGISTER STAT.1 = 765016 ;L/P # 1 STATUS REGISTER STAT.2 = 765016 ;L/P # 2 STATUS REGISTER STAT.3 = 0 ;L/P # 3 STATUS REGISTER STAT.4 = 0 ;L/P # 4 STATUS REGISTER ; y ; LPSIZE = 132. ;NUMBER OF CHARACTERS IN L/P BUFFER LPMXTM = 180. ;MAX NO SECONDS LPRNTR WAITS FOR OPER ACTION LPINH = 4 ;INTERRUPT LEVEL OF L/P $NLINE = 56. ; MAX LINES/PAGE (=CONTROL TAPE. $LPERR = 10. .PAGE ;*********************************************************************** ;* ** ;* MACROS TO SATISFY THE DIRECTIVES PR}ESENT IN PALRES ** ;* (OUR VERSION OF PAL11R) BUT NOT PRESENT IN MACRO-11R. ** ;* ** .MACRO .REF A,B,C,D,E,F,G,H,I,J .IRP X, .GLOBL X .ENDM .ENDM .REF .MACRO .DEF A,B,C,D,E,F,G,H,I,J .REF A,B,C,D,E,F,G,H,I,J .ENDM .DEF ; ; ; ; MACRO DEF. FOR QUEUES ; .MACRO .QUE A,B,C .BOUND .LIST ME A = .-4 B = .-2 .REPT C .WORD 0 .IFZ $KT11C .WORD .-2 ; NOTE: PPA WHEN RESOLVED BY IPL .ENDC .IFNZ $KT11C .PACK .-2 .ENDC .ENDR .NLIST ME .ENDM ; ; MACRO TO SET PRIORITY LEVEL 7 ; .MACRO .LOCK PSR = 177776 .IFZ $1145 MOVB #340,@#PSR .ENDC .IFNZ $1145 SPL 7 .ENDC ; ; SET INTERRUPT LOCKOUT .ENDM ;