IMD 1.16: 31/08/2008 22:42:24 os4 system ds-490-b software development system 84-93027-03 a0 10/79    @0|)wwЀЀtQql)  " }gA ` MIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIOS4 ME480080413400900800804134009 8008041340092SDS VOLDS-490-B SOFTWARE DEVELOPMENT SYSTEM   IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII M@jjggg@ o G`k_C# b# }B u[ ]e JRiCCp@<;: F8P@ G;NPCHC C GTqE'ɞ * Cϟx @0DAJL )‘ЀЀΎQBx"  i+ fEB)3 `jmBBI,v  BI,m  @EEFF)D^EF% jH@pOğv g7g4]X] PhV+s=胾c_N GF֞ؾ “@ALS)"$ C k1/j-h p vRw ppwp ki 15 !^\d X %'+Ns愾Q)s ED|{ @$ o O m J K i g. V tsFn`"FED) E`Cnrgy w"N{Rq1H }L2`0tG- Bc (>= 8008041347437580080413474825800804134748deJ8008041347507580080413475600800804134756deY;8008041347587580080413480675800804134806dew-8008041348095080080413481625800804134816d e5h8008041348190080080413483200800804134832de8008041348347580080413484000800804134840de 8008041348430080080413484650800804134846d        . OS:: SYSEXEC:: SYSEDIT SYS OLE SYS MACRO SYS CNC SYS PATCH SYS DEBUG SYSLABEL SYSD2D SYSHELP SYSHELP HLPCOMMANDS HLPGEN MACRTX MACIOS MACIOSD MACSFM MACOS4 MAC  OVIC & EDoP6){ @ơI@0@žǡǠ)1*@(@ƒ™J☢@+kUŽf5mD4D2D1D1--D1D1POVIC & EDo2^qW   LDLDZ1" V Y [q xf ])>>> EXEC:: SYSLD'1Ğ mM)¢fE) ]]ⷤB1C:':Ѣ̃ !_pC PE` C   p0! pCPEs ] YLD<cIqC C @UkkjރGcB a!_ pCC @KP@E OF@ +y9 CI dƀv:l#  [GOC` EXEC:: NOT FOUND  BAD TYPE CODE PROGRAM TOO LARGE LOAD ERROR  NO EXECUTION ADDRESS  UAT WIPED OUT SYSTEM EXCEPTION XXXX OCCURRED AT LOCATION XXXX%I@2NK0M9K+U'# =/p(p(C @`pD+E` B@ C@/ph@ph?ph@kphE@/p p?p(+p(# OCSL):n` BB@1RNFL: 1GI H HC UB:P C`)# ` n STV+@pJp@`H@BC ADEFGHF EG@h @6@6@6@6I pB# ZPPOBƮ: 1B!  0$ 0,:: $ ::w 1: 1::n :ZP +р!̢̢̈́ǀ@QD@QBkz A@N JA+kU :o::w y X R Cq:  D ] d. c.FOCOCOC CRX>  < %+5 >ANBVC`DmEtF|GHIJKLMNOPQRSTUVWX!Y)Z6< BMD NOT READY WRITE PROTECT TIME OUT POWER FAILVOLUME NOT ON UNITVOLUME NOT FOUNDLOGICAL UNIT NOT RELEASED BAD CHECK SUM UNASSIGNED DEVICE LOGICAL UNIT NOT IN UAT END OF MEDIAHARDWARE ERRORILLEGAL OPERATION NON-EXISTANT MEMORY ADDRADDR IN SYSTEM MEMORY DIRECTORY FULLDISK NOT LABELED FILE ADDR OV ILLEGAL AU AU NOT FOUNDWRITE DIRECT EOFFILE NOT EXTENDABLE ILLEGAL FILE ADDR ALLOCATION TABLE ERRORSYSTEM USAGE ONLY BAD FCB CHAIN FILE OPEN FILE NOT OPEN ILLEGAL FILE POINTERUNIT NOT GIVENUNASSIGNED FCBBUFFER HAS WRITE PENDING DISK FULL RTX ERROR MOUNT NEXT TAPE VOL.UNDEFINED ERROR V0GG GBpaFbDcE/ph@ph?ph@kph# FaDbEc# #  b. ] c. d*</ph@ph/ph@ph  ?ph@kph?ph@kphĢ/ph@ph`pHK Q KRQH ?ph@kph`pC#  b. ] c. d!ŸǟžǜœǙšǖ˜Ǔ–ǐ”Ǎ p+LJc #  ###n0q#3456789;<=>T\"H "H`ThjHjHl>    "DF00AAM M"DF01AAM M!LP00 P' 2    DM00AA  &:DM01AA  &b:DM02AA  &bDM03AA  &v)D)D)?*d{DH00AA   !@8{DH01AA 7  &7#]@L+{DH02AA  =>zS+{DH03AA 7 =7@Lz* {Sv)D)D)?*d{p X1X2X3X4SI!ILOSFUF:OC!ICI!ISL!ISO!ISA!ILDOVXX:POZ1Z2Z3Z4Z5Z6ZPf:/p(p(` `+hQ TCVyV͠H N@P נBQ iWG CW90.r@ VݤB ]}00P By M  `+j'NQ #Vy  `+kIC @C U j@P  `+NQN mVWNyk%LrKM'jP ւM D%Y'DBBCP ̀C9 ?p(+p(# x vtIROV NOO1N1  # " T/p(p(` BDCEAǂI `+C U@r 0 :D A FE [ E :AQ\DQZBN!BB @BCN1@CA,D,E,@k%'jAKN€MA?p(+p(#     x8/p(p(` /p(p( MNQ@ ϦSS/p(p(Nq% '?p(+p(M?p(+p(# '?p(+p(L 0n   MN1EMM M1ÉB I@@Mǁ#    ΂1A: :/ph@ph?ph@kphF :  ¨ # @SAy CI] SLCI   SL   @ Y1DSB# :"SFUF]?UϤA FDZYBZ Z B  ą  Y H H H @ ɠAZg Zug^ _~u0{fѤA ʄZH ОǞȞɀWX AZȀ  TZT UVETj`ZЀ`ZʠAZZgZAvg _u0{%OΠY ABSA ZZY܀ABā A@Ѐ ĀBĉZĊ©ć¨ā@ gigZAZv ABZZCAM g^ _R{0'*ĠB1:! _ "*QX HTBC @ H*߆ @6:c @*3$B1NBɀ6` 1 gg{^rpPc Pljmg1*]BB1HWggRy QΞ N OQJ?QC @QBTP G `QRS GGG_\c BR IG!SGBĝBR IG SB # uxu^ Y 1C# MTgC @C @C @C @C @`p FYcB/p $p# ' I[QaGWXZ/p(p(Y@IC @C U?p(+p(# }uYIA@AĊ# PB1LZĀ6P1PA# ƒċ# )IGVWXWBG! R]^TVC SSURR9ƀ^S66 # TɞQ;/ph@ph@(РP+?ph@kph P+P6jP  fP{z  Ā ΤQ/ph@ph ?ph@kph ?ph@kph # ?ph@kphv..MT0GZB+E(z(# # ^][WXS SY\΀[ PWXG[ I\fe\+U*ZZ# }| zu%YYB1Jy YQ^\YQg!WXWXJS+XW7y B N OKƠQ ?F # }{y=v N O5ӠQMI+9\Y\+\JR9P#P#  \F6\AB [ IZF cL\FXN9C 9 =O''''''''''B[GZI # *A6AkDYLWXFXC ''''''']]0WXADAASO`NCZNZYNNYCYTڀ`LS  u'SXWFA Z [NWOX I ]G [NWOXWXPAOGAxA6QSÂYK=A:YQFXQfx'`WX%A$EA [SÂlYHAgYDfc#LWXā - A6ADYF ''''''''***tt')'9WXAPQBWXFA;A6XSÀYRSDAYA]Aw48nu:;;BnWNXOAhPQfBbWX``F^AY\;[A6_SÀYSYSAIQQYAbAWFXFBBAA@k?((WXY )C-NOAWXAFA;SDA B gÕE JEI\YSZZ Z;1w4WXPQY )oBBWXBB]rYE JEI\YROPeNDZu:`C`-9A6ALWXhF מ DSAGV WE [NOWXP [ I ')WXWXLāFҠA+ DSAGV NCWXM [ IA+WXNFҀOF [WXFB:WXAĂ/ .LNO[-`FFA ՠA6AA֠A`AAƀF̄F@BK@" @+ `  @6F@F@``/AB`@ CWVF̈́F` ʀ6AAA  u0|qqA6B6D6BπF ĠA AZAդ`AQQF̄FN@BK@" H @(GCCB@``EF D`@2`G CABŀÀ@@`@"C!`AF@F@ā ܉ZL  Z__-A_ABBued7 TBV񀧄UA__ggC_bv+O*P+N{TTOxU΀VG_FZ P@Ʉ`_99t`A`00 i_`_ A^  +@(U+@(@#QF*U+UVATVU # /ph@ph?ph@kphs~m\Y/p(p(E%G @  }*19 ' ?p(+p(Y# YDLPWX T]VBG S^YSBYDEQ` LPLπIY@SB INZZI QE# 2SN# PQWXʸNO F # [| TV]R]TSUR^S # L'0\ Yx^A]AZؠQÈJ^*+DYY^yEDDY]AZNWOXQEDZ\\1f*\ "E8Y@Y]RVU ƀWNXOcus+yDZZHnnD؀DeeZπDZ)@AІ̆VUU # 2NO@AGVA PÀYCY# 2V# AVUT# MB TUA/ąV # /A1 # L# ANO# WPXQY)>EYPY # NYR€YNN# A+# . qSÒZNZ# 0_@APOQ`H%} 'F+`HPu `@_P# ZB+F C8# AEYF@Y# vAWXĂ/ # NVWXW# YNY# A+# .oYS@@YCYZBZ @GVWX@ Y# Q# C @Q# C A @\"\S@"VSO 6ĈEN 6ОEN 6Q`*%VB`H`H5Q`*%VBt`H`H5Q`%VA`HA`HA'kK*Q`V`H 6*%`H`H'. 5D@5c # "S SRKRPQWSРBGVNOPSǀSP S # }ui RBG NOS GS G !GVNO# }S. Q# @ GؠBG! SȜRU# BG! ]^ # I C U# B+# !+# B SXR.*RS SB 9P{Q 0 @ 0 .A W⑂@ @AF ## #  0  7 ] e#HIHIFA6@B  FD6A+&DHˆI# FF# !* l !< 9Yp pSRXN` P 0Q Q О E@ @ E 1QY‚p# @M SA GC  ! ! !yLL@hLOLoLmɞK qXX3ĤXBXS%''X# lL@HV/Y6@FHV&=[GQFHVIT3QL@HVIGv(V VHVI9G6G} p``pZY )5Y@AB[YDE6BcZ p# !I!eTV00P!}! !!!}!e{"!It#"%V?*    !e!!e"t"%V?*!!"CR00P!(P"!"!t'8''?*"" "@PP00 "<">"< "@""" t"%V?*"@"Y"wPR00  _"u"w"@""Yt##*?*"w""w"t(|(|)4?* fd""""EDπF ĠB΋QG F ʀD*TR#&ZD݄DI3BJEK~C FwDOFB6E@6ArP + 1QCܗ 0y wBD+KFFQQFUPB ЄPGG]󟊟*****i*pr##`O YDFF6EEKdddcbF@0 CXJQB1v6ǀy C DD+KFFB J[y ׂ 1VD+KB,yÂGG'C *hPԞw@KQB@61R@ KCNĂ܄6À# @KQQJDI@lJHJICIIBΟQ;ʛNyJQKQ/6/ **%;%G%K***LP&*%E$zj IED'DDF  EKBF @6@J F ƠCÄDAEBC@KF@6y}@(  #ID `DF6BKFJQCkƀF6OKb$*%Dr*%KĀy}MKI IIMDNI**%0%;%G%J%3D*)DIIzDFXJQKIMF6A*%*'} CРB̘Q ICB1C D#g}F 9I@C K%'BK K IICK C%' B+K I1I@AICsIMMDOD F@6 @M 6@FKK DBKFFwByE} M DTI IEIFƀy IICđB@1B */*$z*#e# q*#*##%& BJF / . ʠKY D II ӠB1P1yD+KB I垰 ҠB K D IIF  FBPDSID@DĞDDFDI1kD+KGaCI IZBBܗI ICF  / @KQB@6X  r*#X###*#2B LB >KI D I+LP%mTYTKPP%TP&&*xDIBK̈́JSC DIFF IED؞ҞОсKy  D5 ΠCFK ICDEKnCCFF DBKCILUCCIDGKCȞ{w r**'"*'' ***q؞ӀDIBK̈́JFGFb0 DCIĐ IK ֠CKD@yNqāJIpGFCDEK?CC9`DI66݀FF DCBK Ā#"I! IG}wDI@lJ_6D/6Bhh*)KF@6+%'6* 6|EK+D@*l# '8zEDрF PDIBNCDIEKמ؞ٞ߀DIDBJ1B6GBK'B /6yF ̠BǀII F ^D DBP KDB āBKB6À }J/6wurr**i***"'h** c@ SjB T+'3 C )@aE+6֤ N 6LN 6>,> }2~ e0I000y.1/02010+-<@ A# @HBD`pCDEF!I JAFGHDIH6 @QDCEGEI A‰ `@# 0,V2B+sM# BJJ B` E ``b`# D# r`@@ABCDEF` &`JHIFˤHG_FD[ HFFEFĎEJ # /+//g//0BGDFwDHI`(j򀁄IJKLG@ @HA BF@`CED@ H6RC @I܆/#@# ``@ # CČ @䀞l,M202A2,'Lm8@F=\z2Q֑Ώ@Ny M G# H# 00-]X01`@n`ngTN NGONn Nā` gE g?G= g9G7Nʰ` g2@bmĀIā ❌@t@m jKkĀ iĀ+ux@Ā # --(L8@<m00255075SMc GNqʅ@# H# 00-/p(p(` /ph@phG`.."..u0@ABC` +1N)+ڞoÅBS-B1q o-zB--B@At@`+@Ui `?ph@kphJ`?p(+p(# 0?)../$)+/` 1T-DŽ/FuutA@@` `i//-76).\.1M..n.^@.7p.n.^...# // oSJRCQM܀ Ā # # # # e.+# '_)iHOr@bRCj(""@`'`@(qMqK `#Ā# jr) # /. p# !# @ A# . # !"Ă##,V//.A# A# I?FE # / fG?/-f.h./1M/1Q[J@VQF!  极+ # 1)# Fj @ā@"KЀĀ ]//JIF H @# # F  Ď # 筧1I iQB ` 1S㟣# qLBɂ A A@ 1&V0d+rs/? !CDC!CBp c # /#qP@#I""B1F@ y@(@m"qI!C?#Qp c # /P P!U%'y# 0I1 9 ܆@?p(Āp(`@qEB`@ Op(+p(@`@qDB{y`H@ĀOp(+p( # 0 @0I$ @0 PÞQA@pAA o0_0 mlpon0I1 C1M2H/!uA qphjBCDpEF0AgcbP@[@ !䃞V 0-O%1K%&ޤ/ # ܋ /&&1„% # ܋ ?%%& # 0 A)`pE # |000-C @IC @IC @IC @IC @I2J3I`pF!`@qC p@1 p~ !1Eā䃀*!oqC@1gIf186I I H!ID H@Iq~ /} ?| ?|?!1qB@1I `,M1qJO@ 1LJIq# # 1 1IȃȆzdžyuÂt J*+$hgDB$ @@Ģ$@ĪHI f)% JS `k z&‹DI 2F 2]/K+~,bj.0Z2F # 2H # 2J# 017C @ð+`pF @6@6@6R 6D6ƨE6 !F66DXʎ`@@ Ac # 2@211:2M2#18..+-, ...2O2P-2Q2R2S2T2U2V2W2X2Y2Z?%f-], e2[002#2M2O2P2Q2R2S2T2U2V2W2X2Y2Z2[2\18 `0_ pP㗠!@@BK@+kU:3:& jOC .1OS4 (D1) T j: m# ` o  o ABORT? OC q sOC q w OC  ATl>  ԆT:цQ: z: : ay X  >! q>B|{ôC F +E:  :%hC IC @Ý㘣f&!1Eǐc  1>/Ljc  mD6D6D6D6--D6D6IC @I2J3I`pF!`@qC p@1 p~ !1Eā䃀*!oqC@1gIf186I I H!ID H@Iq~ /} ?| ?|?!1qB@1I `,M1qJO@ 1LJIq# # 1OVIC & EDoASSIGN AUTOLOAD\COPY  COPYALL  XCREATE COPYPACK DATE  DELETE DISMOUNTDO DUMP pIDIR  JOB !MOUNT  PAUSE PRINT RENAME TIME LVIEW uFA FB FSUFFL NAMEONLYEXTENDEDSTANDARDALLFILE #OVERWRITE DIRECTORY FILE 0123456789ABCDEF dZ3. .. OS:: SYSLDZ1Z1*Z1Z2 Z1Z2Z3LOCIZ1CICIOCOCCIOC > CX>I M tkK!XQCv SB:a0) ؇ՃB( f /ǃ \  LJŢ ÿ&ae \ყ ˂ՃSNӃE ,(H% "CI{( .6/Z1 1:I ࣦ] + PRTMHQ: 0:I㍀@A7 75L   /1΃,L:C%# 'Hz)yek. ſm @QAy׃C`!y #VɎ҃Ŏ1HFJDŽ)  1":I0N+ B@AK!I``zҿwÐΚQ ÈΉQ ڇCISLCLnmjD  0:I _Ń , +#  LLM܃LK IF1GF  0j:I eN+ B㟀@AHW)T 1U:I %%IDA{ k  : Bw1ĿnH rj::i瀀y C b)):Y тׇ׃ׇ ԢЃ Ń ʇ߿u:A. ƒA ð@BKǶ1NF 럀BC ߍߍX:AO C:A# pnSLAFD;: z<ע:܃΃ٖAւևЃЖB͂χȇIǃGzLJCţ QDοQA Pp:Qη)L @ " @0¬$㗀@k+U# )|HyeVeUTIN00nDFDPUDMk{;.ۢZZY˃W0R1.܂܄PD և բDч̢DʇƢDÇ:k烼'$G ǜ :9:9 IĀ HZ<fghk/IR ~>:9 'c:9 ^VUQ# |)y4v;ek{  y M:$ هꠁŀB߇׃ UR ̃ӇGўПППП  +9 ȣ+ ã : + "E    V # %$LO& U p.F'b2W;  ~LM/ ччѣ ΀R+ɀ]ć -[ - T 7P %ߪ^.C:D&6;6ߐ6ABU# V   h dg^M^ W[Na# H{yUVzKiLje{k 0:) 8:) :)ݎGA ͣ+ :ҿw}:) K:)Ѓy D :::) ÙK:A:G ,p }n |VOL1F V eǎ_ 1Y:) T# k9 ƆÇÇ ¿ŸE«ǩ 97ك ׿E ™Ǘ##à       "4 e gЃjNgi^cy [_X ȃZSZŃŇŃWP: DEQu  0:)H: 5Ճ759641H d d:؇:҃)%Σ$I@+kUU: p,/  힁ohi E “Ǎ[XX   esǃJEy:$6ƃC cSB@A@Y-,Q +4& NK ,A#  FL64;  r)ol4iH f /Oσ'͂:a )nlkk{f2 1D »3 墠   p  H Z/"A+ʀ9 y 3y À,Ç+ ¿SVPOO:j 0:) ;>< d d:6΃K:ÍK  &m֞>u ,IR ,4/ ʇj: AŃc a]:q X4¸K K1ģ+ E:q:i y Y& Nd q:ym# H{yvsp;v  { ek/h`㨌DZíS ™JG :<::   V m n q t wV~ ifȇh:  ЀC 6IPƢLB ߤߩn҃?@:  # |yHvsZkZ3 ,4%[e6{\:ރ - - ::Qw# N|7˞@Ң;2 0ƀ; Ѓʣ I ÀDy Ńd+® :XYIQI  :9# ~{HxkH,>IR p<e{: i wf} 1㷣@AǯgecacQ((SM@6ˀGGxD: > 9:5E+k߂R# CI ~7 žmy MˢdýG ÇD  îJG!@ ªAk:Q ǃ×3G!ϜR# {ZnzVDUFqpuv k# j i㡣c 㐀ߎ:A#  # VW666A.44t /1A-A 0:) 8:) ( :)0y y AHG6 P?@pJ@NǮ߬ 3ߧ ¤Ǣ:Q' mF } |, s-0Up X@C @Hǻ@N2@% @'߰uc # C @)@ G@05c # C @GG%'Bc # @Xy}@} . Z .M I.MZI.f@d# D g /[ a /U [O+# S :G M# :@ F# + ʗ֣+q GyL NqGFI.GE#   󀁇Ǹ öG dz :QhE 6ߚt+ ߚߒ_W# >FpD~VnUz_` k{ +``ts ^Zn#ڣQ;Q+ I 5BB}KGoDCA ga: A# :A ߎߍ  # },&%$  ҃)Ƣ:# :| x::iy C Xr 1:I# C)1BH#  k{VnL nn‡ƒ‡j``惵B샲: _ðK  !:9  :9# =H{8)x5t34q/nep >=<ed: -R-<H-<::}# |k00'21S٢/ D˃I͂τD #  uP) r  & ÷   6 +@K + Ún# #IR  %UF6pV Т Ϳo  XW # * {# !# 1# FXQA# C  I8+4I/++ # }k/LACRχӃӇ: G C # f {  0:9 # } 1:9 # } :C # B  {nԣ G Ǔ ÝG !G VߊNJ:Q # } X=<@UQ oB k j:Q 怇 ? ^#  ]y wU؀׿#nH V@ą΄R΢k9IUE@+t@y# +9 ¹ v 0:A # } 1:A # } {+ ×K:AqpVkOLpSLALODHF :9ހD # ܞ} {هԃ؇ 0QCQA A·:):1 ‡ŃƇĞŃEăć:Y:)6E '::1 ߱`áQÞQ  : @Q+kK#  G>1<@,4  Y/.65"Оj 1 # I?ǣDŽ+U# H Ǣă #  |L :)B⃮ ކIIڣ5; 㜀@+kUƀy@NyC! # ) FkZ#, ă B #  { 9:97X@AKN1 # ܞ}KΞɞ+s # } ȣ| VKԀCC C :9ߣ߭m ^] |Ø G ǡǡ:):1  # |{<=>@/5-08 # }Õ֍yGÑXqG#  y|z{(pyGXqG# Ճ B90.r# ,1# {'QȀSSτ: ɣIBƄ:'# ? ˃ :: ÃB# åy MQ B % Т"" ̓ ʾc ǧ #   { k YSINTO' ~@gIc%C B'`(%C @'` KUof akA [Z ECƃAD> # % {73#  ~|{IC @`@@+kc #  ~ƊK 1ģ+ icqp  C @ @…Ā+c # EXEC (D1) J NAME .EXT LENGTH DATE TIME EXTENTS AU'S F# 2NDX NAMSJ NAME .EXT NAME .EXT NAME .EXT NAME .EXT :1PAGE VIEW (D1) UNIT= VOLUME= N 19YY/MM/DD HH:MM:SS CREATED 19YY/MM/DD HH:MM:SS  DIRECTORY=  TITLE=  LU DEVICE FNO  TOTAL AU'S =  TOTAL FILES=  AU'S FREE =  AU'S USED =  AU YY/MM/DD HH:MM:SS /JOB (FILE IS OVERWRITTEN) > FILE ALREADY EXISTS. OVERWRITES IT?(Y OR N) 4 NAME TYPE BLK SIZE RCD SIZE BLOCK'S BLOCK  TAPE MARK SYNTAX ERROR INVALID COMMAND  DIRECTORY NOT FOUND  INVALID UNIT NAME  INVALID MODE INVALID DECIMAL NUMBER UNIT NOT FOUND INVALID FILE NAME & FILE ALREADY EXISTS FILE NOT FOUND ON " NEITHER UNIT OR VOLUME SPECIFIED CLOSING  VOLUME NOT GIVEN( CORRECT VOLUME NAME IS  PARAMETERS IGNORED & FILE IS SYSTEM FILE BAD AU  UNITS NOT SAME TYPE INVALID DATE  INVALID TIME  SYSTEM LOGICAL UNIT  NOT LABELED  UNITS DO NOT MATCH  JCL STACK FULL  COPY VERIFY ERROR2 FILE DOES NOT EXIST, CREATE IT? .ZB6P8RCI8CIEFõXQ# Z$ 0:. P  :.9 1:.Z$ØXQÕ֕ǓVD SZ%OK`KK (|fBՂ :.ˇ P΂΢Ƅ+ K| :. &:.؃  P ":. ? O :. 1:.:݃ 0:Z$# 8?67132 fgeylk@+k zZ$Z$S$ BATCH FILE NOT FOUND* BATCH QUEUE EMPTY - PROCESSING SUSPENDED " BATCH QUEUE PROCESSING COMPLETED  OS4 INTERACTIVE MODE RESUMED  LUN EF NOT FOUND  I/O ERROR ON LUN ZB ZS mD4D2D1D1--D1D1E BLK SIZE RCD SIZE BLOCK'S BLOCK  TAPE MARK SYNTAX ERROR INVALID COMMAND  DIRECTORY NOT FOUND  INVALID UNIT NAME  INVALID MODE INVALID DECIMAL NUMBER UNIT NOT FOVIC & EDo ?KI00H# KȠ1FKI10H# `PDp Àj]Q    I?`%5`O+`I 5I+@'ÜAÛB`<)`" JF KI `B`QIIEDIC@`K EIPDI CFQĠK.y*1D KF)J@P΍`HB`@%'+J`H}# ztA EDT.. >`"@@} L DJ+%'+DJ^ICIDV@PY`HBIB`@HMC @*1`PLBc # # C @`PDK I@+3# "IC)QI00I K-c )# ))<`p%E'c )# <37c )# @? wc )# EN 6E "0lKC @i` `(%'`( @1 pt)`pDc # yj A V z8 SYQAu ,))*ǟ'1 )Sv@KU FS H@i1SL @o,_aKBJLINJ=1 1S 51 1B. TO BUFFER EMPTY  Z 5 > kgvYQA ,)ޟn1 )Qu@VS@pI_S17,.hC)C ΄Y bbMabJKFº) ST1­ ,)01 )Qu@KMML @I1tPNKO`R @74 QC @` uD @1{`pDc # C @)o1A@(/`xA`x6 >A1(HG@ 0@A1 @4`pDc # 'd C @`G\G_`^%'`pE``IGGV%'`pElc # .)}1 {# C @ )s1;c # C @HQS 4@667@ u@C]+H#G@GHk #`pBDc #  HC @@C@IJ1A ,@@1 $ B # E  IG&Ia@QV@ #JJ @@@ {@1Ȅ@I ,)@I`pBCDc #  C @KL`p)@ )Dc # C @2Ǫ*I+c # `fs EDIT - DEVICE ERROR!  EDIT - BUFFER FULL.  EDIT - END OF FILE.  EDIT - LINE # ERROR!  EDIT - SYNTAX ERROR!  EDIT - END OF DATA. C @ ,i1 i G1 ŀGi))i/`xD`x păc # C @DFG @1 FG+. A b`pC #`pDc #  @KC @J@z`pDc # C @L@*`pDFc # C @ML@*@À1ԠML@*Fv #I1)1# )`pDc # | { A6+I EDIT - INVALID IN EDIT MODE  EOF EDIT - INVALID IN CREATE MODE  EDIT - INPUT BUFFER FULL  BYTES AVAILABLE  EDIT - STRING NOT FOUND C @NOFPNP@ AOONLL1Q΅4P PLÀO"L1D*΅5c # 7C @\][%' p]]„]@ăc # C @F #M%'`pE+G@@6 @}T1AIJF1R;G +. MM #`pDc # C @GHHM%'`pBEGV%c # C @DF)@EQE )1uDB|`pDc # C @ DFG%QD@|+@C+'`pEDFDc # C @KQRc # mD4D2D1D1--D1D11tPNKO`R @74 QC @` uD @1{`pDc # C @)o1A@(/`xA`x6 >A1(HG@ 0@A1 @4`pDc # 'd C @`G\G_`^%'`pE``IGGV%'`pElc # .)}1 {# C @ )s1;c # C @HQS 4@667@ u@C]+H#G@GHk #`pBDc #  HC @@C@IJ1A ,@@1 $ B # E  IG&Ia@QV@ #JJ @@@ {@1Ȅ@I ,)@I`pBCDc #  COVIC & EDoDEL ADD REP END SI>0PDSO@0PDSAB0PDSA= >( u::% :- "*:%  + !:5:- ΃ / ɢFgm{ c˂CC B: ;=z # q# :-:5:-y F:%o p܀# ::% w 1::-:%<#)3DA$ (0#& . *ނބ5# aagׇׇ׃YLՏZITTZ؃ʇˏԃǏO:SDD::%M߻߻t # - { ~|{ ~@I%C B'`(%C @'` Kof akA [Z12 mnlo p, OLE (D0)  INVALID COMMAND  INNVALID LINE NUMBER SEQUENCE ERROR I/O ERROR mD4D2D1D1--D1D1qd80080413462900800804134630dOVIC & EDo-%@k SOQKM*T`"ۀh# נ# )# # MACRO (D1) C @`PF`pDc # C @`PkI)%C *V;U /GJ :PS .V MY 9D'A @ ``pDc # I00H # UȠ1FUI10H# G_E$F_ 1`Pu@p À|AKKoQ@  I?`%5`C+`I 5'° 1A­@¬A«B`)86)420.+ .%'# bUbV)օ5CU U# +( (D1) e"QmĤVS@6[RSX U+UHVLV0M3 II00 V # # )N  Ă0)|C A# |A) boEQIQ_cv_aK1aba@ J n# y D n nJ # nz # H# \ M?RAC @`@K'@``pBC`HARJk%`(C @`(C @U ``p'BDBc # # C @`p ĄBߠ1]QDĂ D@ďBDc # @ DĂ@ ď nv GڀXXOPQRKLMNT ToL,L L+L)L(L=`IS ))ςО) b!̄O K QMoL())oL+^ GPORQLKNMT T/oJQWS€JπGA)π6T RJaž D L’) SSAZ2BUpSTZXÀHFڀo )/ b΀sÀqFϟXTQQAT KMX„Ko |A)/ bpQoQu)5 bX+JQaހXK# @ B# @ KBM# @ # @ o # @ M)/ boo +LANOE|A)/ bspQrwo*ߤB1X)/ bloXufX1B(JR+6 b]-3AO# @ XB# @ OBQ# @ # @ QoL,JL HL+FL)<|A)/ b6p# Si) b) b߂O K QM GZoQjL=L(L+L,SJ: ))ʢdZQYD OžJ„^ ^žYSπJ )) O¥oL()# ))ς bŠkZ1Z2SUSOZ3SISABJ YZo bnnghS fdJBIY# b bV WI00I# `"  # eP`pjP`ۢۄ* 5 'HӠĀAHHF)$IPX)߂"IPT#PIPLIH)YIPD)NI@I<Ţp @)/ b|poQA  |CCCI )# e"pLOZ5FEW_Z4OCCISL_`+@(Z ZI)DD]o +nUG 0 ĢKKFoBDEFINITIONS 0ERRORSONLY EXPANDMACROS0FALSECONDS @FIRSTONLY PFORMATSOURCE`IFSANDENDCS pLISTING /"LISTOBJECT LISTONPASS1 LISTSPACES MACRODEFS MACHINE  OBJECT PAGESIZE gSAVE xXADDRESSING 410 410A0430 @430AP490 `490Ap404 404A MAC ASM`" JF KI EIDIC@`K EIPDI CFQ+DFF)J%'+J`H}# MAC..`"@@} L DJ+%'+DJcIC ` DĄIDVHTC @XNX`PU,K KꕀO6AKJ] -3A# gip#)YIWQѢt o6E "0I U]Ξc )# mSo SDD)πG)E6FE؄[ل\ b̂τ b  SR P DE+DQEUU`p%Ec )# SʢDŠE[؀\SEE+*E? πDDc )# @? wc )# "XXZ4QQCZ΢ 6E "0`U`D%'+D` ʟRI0MIğC @i` `(%'`( @1 pt)`pDc # # Ue@GU)@ Xׄڄ؄Iƀc6I6I)@Qɞz)@dJQ)I)@ddL)@)1")@ wVV)@ĀXXPIII#  #=)A[.D, d )@1# _^# c/6C )@ r)))@քلca b+ 1KVXāXLfsg e# 7hk@) 6FB(Ѐ(,4C @IX `+` 1YЁ@֨  @@mЁC@``pEB dc `+ `+ 1# yj# $ Hc6ҀXXIQE¾Ik@VYj# c6X6XIIk@WZj# @I @ )@@˜I )@#  ##u##i##)  **** GRAND-TOTALS **** ERRORS ( WARNINGS (~)@dcX@6,@6A,@6AX `Gs)@Y  # B Qܞ QXYX    )1B˞ )1Bƞ )1Lb # `  W²   |cO6րXXX )1 )1+6XYXJ #  #4 G$&t l>J) C @C AL  L $)@ VQNQ@I p @V1c # AA[L c ` BLANK V0SEGMENTENDM %v4jMACENT $4rMACLAB %n4zMACRO $4MACRO $4XMACRO $4XMACRO $4ABS  > BYTE  7 CHAN C58COMMENT l4 COMMON }4 DOUBLE ; DPOOL ?END 6ENDC 4EQU : EXTR 4 FLOATING; HEAD E5 IFF : IFT :  INITY <  LOAD #4 " LPOOL N6 *MACHINE [> 2 M4D12 ? : NAM 6 B0NOTE ? J OBJECT  6 R OBJNOTE  6 ZOPTIONS  ]> b0ORG  > jREL  > r REPT %6 z RES 7  ROMMABLE4 0SAVE 4 SET :  SEXT !4  SHARABLE4  SNAM 6 0SPACE / SYMATT ^: SYMVAL `:  SYSTEM <  TASK 4  TASKEX 6  TEMPLATE5 0TITL 4  WORD M 7ENT   HLT   NOP  POP c  RSK  #  "UIS   *FIX R  2FLOAT R  :FMT  BXNX   JSAL pf RPUSH C  ZSIN  bAIB E jAIN  rAOB e zAOT % SST  COMP  CSN  NEG  IN  OUT  SELP  STRAP  UTRAP  ROTATE  SHIFT  CBIT  RBIT  SBIT  TBIT  JT  JF  JEQ  JGE  JGT  &JLE  .JLT  6JNE  >IJEQ  FIJNE  NJEQD  VJNED  ^DMS Gg  fDMSE Gg  nIMSE GG  vJSTE G'  ~JMPE G  JSKE G ADDF G\ SUBF G\ MULF G\ DIVF G\ CSKF G\ IMS  JST   JMP  JSK  CSM  CSME E  CSK   CSKB  CSKE D' ADDC  SUBC C' ANDE C ORE C' #XORE C +DIV  3MUL  ;ADDE C  CSUBE C  KCEA  C S AND  [ OR  e XOR  o ADD   y SUB     ANDB   ORB   XORB   ADDB   SUBB    CLSN  `EXCH  EXCHB  EXCHE A   COPY   COPYB  COPYE @  AY   AX   AQ    P  $ L  - K  6 S  ? Y  H Q  Q X  Z A  l V Hb66YQA6s@lsXXV# "&J ; YQ) }1i` kBIĆkB)1[Ćf* ef™gW8n“1’ # $$G8_"i Gi PIʞIWIVj 'H)T*5Q|Nƀk ,[ yVĀjB V# + ' # ' # +# mH , % GYG8jQq Wj# WWVXX eQjWGs# C"j@L )1K6 l jy# kl G"A$lY ]k%5'jk `#  G}j  y 1Cj ,p y#  GY$' j HAlk jWnšn  , y GsXXj^# G8+!r GY9  ny 1de  ,yk@hj힄Ak C W8n.q'“ XX#  GY$_G8x!r^ VS)@` Ԟ kWXLX BA@A tuvi6X6Xd _^c6ÀXXcX6@Xh6A¡)@BpJBe””k)@#  "G G;{&#J!_i `(BIcO6A )@A B@ B @c6A) GsA#  G;3 n BHG6 qYlWkn# kglǀpeq IfY Œy# G"J"Fgh.  j@B BHpAklA jJB@A XXlWknGsǀc6O6BB# G"8 G/  y )1\6 , yjp) 6“jkn XX#  GY$G$_GN `^W #  G"[QHIjcQAaWYQJk lp q nɢQC@ 4nQAGsDX=XWnn {j)@QBQ€@ $nGnjQAaQɄc6I6I# +=-k# k# k k#  "F , %GJ GY)M Hʀq ƞo  G6U@6Sp1ŀkn`3B e1ǀkg jGo6Po@<@6@ kng B@ NG nW” GsXX6# GA_D ,     I@IWj V  )1A)1A6ꀁj݀WVlj@ LL   Ld Þd   Ld WJdLlj   D6AVjJASGWWXXV  ,_ V# G#  G$$lAb,X|X6`L E Wc@/6U@ ,tLELW @L z `#   , %e##u G#'gDlAkC ,X@Xše˜CLDA‘CCkW# k# G!r ,8d k@),4j `dk@ @@j#  G/*pAGsk*cc6AInXY8XXkUQSIk@bj B3K)@ ➇UFk@bj## G"8f^E)) Gn`  H1nIp@A@A@Lq @ @ @܀o/6@6@6@6@G6@|A@\I1B@l@k l sp q nGG" `)@߄nd 6A#  GP  y )1F6 ,l y#  GY$AkC W)@SB螈@6E@ @螁# G8P!  y )1O6yf 6A {#  GY$_H*Y)A)@`@") @h%'@h-B+*`H@`Hc@/6CI)@# `#   , GM Hj =VAVDoo , y GsXXf#  , %G GYtb (@6H jCbIUWj # G/]jz&8TVX[hj"&kC @C @pVW # b@6o@6I   q˞€ǀU־UqJQ mU@MUq b@6DWWWWc c # / \Hv(L +# i+R+# oA# VkkllooppqqmmV# GYGM@6ʞ@6ǞV #Þ@ X.y G   0rbW@6G@6E@6Cb@6B# # RMR͂VDoA VBGG# *+k WW# pp\YHvG'6C@6H@6BWWk1GW# GH@6F@6B# Gv:kVq @ b@6V@6Dq@CSמWV.'WRΞ˞VkN1GWb@6B# #  G\Hv/#qV6CU֗UVR# WkN1GW# # G\vpH]oֆQA# GYHj 6DoA# GYvz:@6LQC@QB4WWf HJQBeCkkn @w ?WWX@'] ?6Y /6/6k@@k-6EpQc@6A /6EqLLL pqpmc # _r~AC @QDJ+z)`pDc #  +\-+-*/// % **D&D++G;G--E<=>===<===<=>===>=<>=oC @@@鞄C6B p܆c # km Gj# KQ[km)5jDCȞ *3+ bjVŒLL6B# L)mrQPCQViKkm)5fd VG1EG0/Ȟp6T `+mЀlk$ G K ďjj# _lk# lk# QPQPQP @IQPLL# hi# cd# $^_# YZ# ڠlQ# lkP# k# L)mǀQPȞ@B 1Q 1I @ , kl1A&# P3B !I I5# N#  N # QP@IIIԂQAIkIl#  d[joc7:[G6# @I T wy6Dn6Cu# jr# rwAăQPAQP ߄# Z6Đe# 6sĉ# C @C @ pU6ŀ4ą    ܉jD9Qc c # C @C @ p,QPNąQP@ą܃f'c c #  C# p(܀ #  , %Y6C AIC @X6)@@@&)@ `+ `+VC pIăI)@c # # 1PAGE  f*#i#]o/8_GGGG G\G,GܞGlG̞GGG[`pBc # ((  GC @`1ǤZ\]Yii )#  \ q gBI` * )}QGIY`֞I`) @Q8IQ3I @`Q.@(Z - )` `]i6TI '@IQ I`Is]ii `)QBIQQBI@ II | pĂc #  ,! %## C @I Tc o6]]] K păc #  , % -C @`1ä]\\@*\c@o6̪]Rq ]UB4]y]-T)S]c # k%'jk#  !! .IV̞KL :%C 'pVA# !1 ,$$ %!X!1' !ii6C @šðuQrrąu`")%@ 0 9 *N9Qc # 00!XC @L p%C ']k%-S 'jk]T4c # !rC @g)@BFgf@c # !C @)@␠@k|`pE ‰ ‡c # !i!J!I!L!O!o!K@!M@!N@"w!T p+DBI13CD6L@A+*ִʴQIgc @``pE)`@1A+Cl, .r y p+@AC @`pLc # $O!"&C @YLgk lep q nc # Y‡ †y# "Fgh"FcC @ })1)ܤY1i     nC6Bqnрq @6EXD p܆c # klpnA@ā֤G# k̀lɀ6p#  ḠG# $$YJ" # { GA"rC @)GIsXGXC @^1ڀegU~1ЀXX kpm qKUq Gszd րT((O  6^ ^Rkq6pm GsA^d  #``pH`1I ^ ^c GsXc # #*$ #*C @BqC `{Cc # $t#= _1G_19|^# $t#*#J_1[^1U/6By7((XĆ4 i^1# #*#i C @+ zc # #u#uC @@r yE)1yc # @[# G.9 6$# #XܐX# XݐX# #C @)@NK0M9K15c # #u#C BC C)@ G 6BY05VBI c #  d'#u#C @ pIPQă Є I QP QP܃oc #  ,$[ %#(HP)IQ Q F A QPN.N.N.N.@hQ,PK #  ,$ %$  Z A z a 9 0/`x@`x# $ k@B1CBA*C Aj)# j# $4C @@ h1Hk@`B DDMM`pDc # $F,C @`k@AC¥)`H`H 5BK `@@qOI``pE1I`@ )`H`H5o`pEk@) 5c # L$4$tk@BBj# $z k@BBC{Bj# $C @ b+D`@A1111B11C11`pDc # $C @1 p1F `pDBc # $$4$$C @ b+D1DX@Q`pDc # $"C @)1XHLXKĈIā@``pEk@IR)JRj)`pBDc # $$t$ `@ĂAăBĄCą`# $hbli6PIkjl߄li6ńkID6ςWXYXȞ Y)}QC Y Ed k@@j)1I } Eli܄i]J]V] | CjFFj DE1Ać E1gjĆ&oJ&&C>   ,! G %$4$&;oE1Ili݄iYAa `\X؄Xc6Vi6B # )@ Gs`Zi@ilcXGUP bZ )b1MXXV# Ue I)1E6€UZ HCF ] m FFsCU (&#&$6`  AkWWJQH `RFXX # 1G0E30 G # # eD) bXMQ)eE DnHJH1JJ@ W# y DW # # H# C @`p ĄBؠ1VMDĂ  BDc # @ DĂď uj  AXM(# eD) bYQ)ieE Dp^̤@1B(JR+ b-3AA# @ @B# @ AXL,SL+QL)DeD) bY# C @`@@'@``pBC`HARJk%`(C @`(C @U ``p'BDBc # NO[7CONCORDANCE BATCH OPCODES @REGISTERS 0LISTING )' P*A `P# X` ASM MAC TXT)' bS )')')7# aZ1SIiw`eDuSL=De# N`"  # @P`pjP`jA`#I5e)7VIPg)͂IPc)tI_)‚I[) Ă p C) beYXQA eEEEI )# CNC (D1)  SLLOCIOC +A)7X +w ,u)tD)`" JF KI @`K EIPDI CFQĠK.y*1D KF)J%'+J`H}# y*`"@@} L DJ+%'+DJIgICID_H]C @`PF I@+3# D )͞IB)tQI00I F<c )# )7 `p%E'c )# c )# @? wc )# C @i` `(%'`( @31 pt)`pDc # :# (vjurIǘssǗrsq 6k 6ߎ 6f 6f 6az5JFY Ç¢KHC T +C쇷+߲| h|I#@kU)q@1Ժm)1̄@ gkdn)1 _z @Z X -OKP {) oA!i ll-,P ANO!'<<A Q X Y L K P S AQAXAYCYOVSSLORORAR L G.9 6$# yS * #" A пs le" {g 1w11 QAr () j h  c \ @ @ 6¾@A@ ⵀ@A^HC TëQǨ 4Pޭ솭 ◣%r'+ޟޟv  @@y  O!P e"E `I]FN  H× QA ?=%'ߎ 6t ]^_<K }C8 7y v sz HC T N }J : ' (V )\ ,S * Am Zi2 0f :z A` Ft\r$ 'Uz4 0 ; A Z%# 'ީާj% ;| %y & * + - /l i (| W* QAx1rΞ hc fc FȞttWóLPLk@]YJQTbL`SOLZMIĂRFΎL܄ǀӄ ЂΖzO1  HC C T  `B +\X Ä6A zoMEMORY FULL:  󶍒F *ĀjZܞbXXS NLKK޶z E B F ˀȀŀ6p+ ` )y y X j %'+qx+ sG_!v1NdFϞ ‚㞗.ކt?PA֞.6yfe1y˿@sA 9l63 edcb_R^ZV{SSj* { 0ÛQA ٢־n Ab  = 3 .q+/㭌@+=@ߨvd  yjigf y.q :  [ 0%rbA삂 `[\*  ||{r.wwusquq Ӣdw u  ھ3R ޟ| *((1ʣ1F( ( ž{ N ފ|x u%'qy   t [ 'dkvs_ 'w NbxjzO]^3YHO @ {\ )1A x Ά|*+v{uޜjh q@BAyAqox{EFh zQ߇pއނ݂ƂſՂ Ԃ ӂ͢ /B+k :>IL@I1AF I1 ?FI ⷢ+>y g @+kK0q[ q @KT SOURCE LINES BCyz{|~K0 P Ie# JURMXN1PAGE I/O ERROR w IMS IMSE DMSE DMS JST JSTE EXCH EXCHE EXCHB JT JF JLE JEQ JNE JLT JGT  TBIT CSK CSKE CSKB CSM CSN CLSN OUT IN SELP WORD BYTE STRAP UTRAP IJEQ IJNE  JEQD JNED ROTATESHIFT CEA FMT EXTR SEXT LOAD NAM SNAM END TEXT TITL FLOAT SAL  ENTHLTUISRSKPOPFIXNOP mD4D2D1D1--D1D1dFϞ ‚㞗.ކt?PA֞.6yfe1y˿@sA 9l63 edcb_R^ZV{SSj* { 0ÛQA ٢־n AOVIC & EDo/AORG RORG ADATA RDATA RES END %AEND  REND  SITfCIb # CMɃ=ƧăŇ:*t 0:L ':L :L !:L  :L  #:L ':L :PIJ*,  L.O7fgTVUW h:Z)^nU& k # K ! u F)ߛ=Cy@yX%'# d]WnfQGYX o#   :LI @%'KM(w 1:L 1:Lm&***** PATCHED YYMMDDHHMMSSQQ ***** 2%'߇# OCIJP< @yXl@j# fǰ,+,-,*,/ # XˢTC@N GHӒ SA Gnj[ # EÈQA Æ# K:?= 6:L/#  ~@I%C B'`(%C @'` Kof akA [Z ~+: vuOCli ":L ;@X=VTWUO%/ PATCH (D1)  INVALID HEX VALUE INVALID FILE NAME FILE NOT FOUND  INVALID COMMANDmD4D2D1D1--D1D1f80080413465600800804134657dOVIC & EDo g }؞E 4{yFzrk\Aw ^kE_` T ( :Ԃ9 - :Ԃ" )  g ʦpP0 @0B ` h }cD «⫂pP0Oo X D B U G 4 D 0 ԟi 7} ԂzԾ P AC Q@ X= Y:ս K3 L0 S- D* C'՟K =ԟ{ } ԟ|" Ž *ڽӆ Y Q A T Gӽن R Ʀ M D V Wƚ›LBLCLFLLLSLJLILGLRLZ Ȟ8 +}ӆ{ӆu Ƃt P LƂj T P BƁ P Ԃ\ W H Tƅ Ş|QEI , , ` 6 _ڞ"U?? #} ` J B YK QJfׂ ^ޡ @ޟޝ `@E ;RA@EN@Aޏǎ Qފ ,^$AY o){ w_ D `nX*Qc Ѐ^Ѐ āY@AĄ܃S B `ȁ D*K_U2 `Ţ0*.( &r o{5 M쇅 `Xd z} T  C I U N S A ›PQI哢`@"ӟƠ -LlQłބMb 5} x C “KQGa@" qQłއށj Iސސސސ޳޳ ,Ӟ  }I迋t.WHj W¨KQGb@"ӑƒ qQł‹Ljޖj Uȝ '} AAw r} { yxwt “KQGEMNc@"JK qQłEBDAށj \ NI “KQG)56d@"23 qQł-*,)ށj @ S- “KQG e@" qQłށj $ A "Bƽ҃ܽ׽́CŁ / Xƃ ҽܞi ]ҁ@ۃׁܽ$ BǢ ,ž[ + - * X /KJƎ^[{ xނZ ,Ɵ| ׽L ΁ P ҁ۽ܽ޺{ ӽҞq kɆȂGާ}ަyޠ}y E   .ԃ E   .ޣރfN ,ƽ׆s@FC kqLL (w{u ^|JQBZy L S TҞNM  Isžˆ_]]| IƎ> ,ƽƇ ,ƂpIưk , ,Htr Hm -Ɔׁ -Ɔ('\\ÂF -t҂ۃ՞x ’@"Fz@ Ό F ƍ l d#.bƝޙޖJQ!’ފދJQŽ %Ԃ՞u U B * ԂGo h fe "cIaM K Y&V&RR `QKL$kK N =ԂDD GԂA   :Ԟ ԟL ǟ{ y9u    :w ® 0C C 96C C "0 `j •C "C tC I6DÎA6PO6P6P 2 g F I Dҽlk Ԟx @9@@? R6A W CËˋJR>JKSB|ҝsB{ ӆvtrLDLELILRLWƖd ,ka%#!ņyĆxÆwpQAlýkL=\L>L:|öbL<L=L^]\Q HǞ wqqno = < > :bady C 1 =Ԃ C 2 =Ԃ C 3 =Ԃ M =ԃTܽҞH&ƽ׆ =FFEFCCE=:7&Ɠ5-Ɠ,&Ɠ$Q߇ƽ? mD4D2D1D% 1--D1D1 s`z fZYya[ľ럄 Cԝ IOH0zr(E ` <;C TK@՝Ž Mԃ/՝ 6I6;6D6666""d "96=96"q "I6=I6"qp 0|| y0 OVIC & EDo<hSCRATCH Z1QZ1Q PZ1QZ1QPZ18Z13CIFICIF #  5 .  OS4 D6 D1     VOL1OS4:MT    VOL   3 B ; #M77&@8@Lz) pۿ p B ЇЇ҇ѿѿ F LU  Ğp66 i6/bO6BZW 6: Q ?M   )އڃ؃ٿ+   tOVCko:ԚIǟ_@ÝQ6CJQþ  þ L qR ֞WZ1MTdrDFpDHI 0By@ 4 8̓y A7 3ƞ4 6A{  s Ie J 6D  Iƿ  O  oqދB ?`x@ @`x#  ZI6X 0y@ 1DMy 5@ 1  5  4  8  3 ǦǫǪǩǨGǥpN CpPECp=Pf Sg^]_[\ IAIKI@ŽG G G<ʼANǹ G7G! AKdzSDz KN)G! AKǪBâ G%G! KǢ<7633dDPDF@agbcdeYZ  ,`   P+Q+R+S+T+_+` `]gE6A Y`0&C @ EIC  6 a6 a`x D`x c #   | R\  Vq:tzyxOCsC @`pF+F*RJ+Uc # U p.+ y@JN龧<%'UmlI܀Gk9 ?AآӀ@+kU+ТjOS4:SCRATCHVOL   . / B+ީj   ^ QH GAK *R MH  CCSk  ,p oq¿i!*fek  ~|u%@ % '⡢Q[) bAjÖQ@INFLVLMY@)5SR !uOL Z A# # zGD # 9 0# # a :&: @HQa~ ➙A%J' A y~ GσژEy ѿ0C/I/y7%@'kI .%C AC U'ðSƂB⺞ⷿHǧⵢI %C @`(KC @`(JU'Ϳ  I9S VOc L1 VI66C ɞ+ɃA:n IÓöÓ:6bC @C A6A  ţ6 c # `pF Fc # ,S+H(& A6 lQR DH 4I+9    +8JRBK u & W +9k9 u Q@C*ƞ*   S  j曃}{zyxJut.rCNn. lji `β@ uc%'I%C @'J%C @'ʟΟS"ΜʜTҙQ$җK1 G+K%C @'3>%'ΆʄR΂ʂW+: @֡Q@XQ+k6tAֿ 2۞t  @c   `Ş| noAkA e žg YA 4w':&::.AAl:.hC:6|y ^vuIIyy E utrq :  Σ  C܅qߊߋk) R L 4  /SV  $: oѶчσж·΂·C ȇȇȞ [::1OCJ۞ôǭǭòG@@AǫfGGrVߖ4GsDϞS# ߖQ&GhC"@ DQ Im  \ Bl^[_C @ Oc # C @`pF+F)I@M JKK0%'95 Ŀ 1 c #  IAǰѣnF8nn:[ RS 2   llfdbdfbhj  9 6+߆߆y:&TU C   / a Ƕ fF: \ǩIGnVߠ: RRShg:G:A:8 VQSdRXb ] D+* nQ"!JI Ď Z G)ą TG#ć GĈRSTYBЇ ͓̓ 57: ܓ“*-:Ѓ%1كB h fbdëN @AǩQF~}ߣz: pSDPDFfeTU  di h Wcl!óN Bp éWG Ǥ# S. P*5# ƪ| :  rq ~+: }vuRQS\ cCCI ~+: }vuSL ~Ǡ|{y:>@y 15N%' ^+ % K4'^3BCD%> ,) G\G!GV# . *@@5# G!Ơ rߺBYĀ #   o #  ~})Ñ@*+xr g TUf _ c Ì pG!GV߂# QR ~Gݣy GG@AX lkPkj:GcUIv _^]}{ ~ y ut݄Ć e  (& %"#A܆܄@B B kkƅ+ @B B++n+n+n CJ G Ć :ST / 2@1N9 B N N Ā# @1N9 B N N Ā#  ^!Zz Gvu ~ hEGVߓǑ:::M:nm]\VbRQ # ~}|{zUF@+kUsr LABEL (D6) FORMAT (D1)  ENTER UNIT N' AME> ENTER VOLUME NAME>$ OLD IDENTIFIERS ON THIS UNIT ARE-  VOLUME NAME: TITLE:6 TO CONTINUE LABELING, TYPE IN THE OLD VOLUME NAME -  UNUSABLE DISC  LABEL MORE? (Y OR N)>  VERIFY DISC? (Y OR N)>  DISC VERIFY IN PROGRESS  NEW BOOT ONLY (Y OR N)?  VOLUME NAME DOES NOT MATCH THE TOTAL NUMBER OF BAD AUS = RENAME VOLUME ONLY (Y OR N)?  ENTER THE DISC SIZE IN MB>& ADDITIONAL MEMORY REQUIREMENTS ARE: < FORMAT ONLY, FORMAT AND LABEL OR LABEL ONLY (F, FL, [L])?  RETRY OR EXIT (R,X)>. UNRECOVERABLE I/O ERROR. CONTROLLER STATUS=  DISC FORMAT IN PROGRESS 2 FORMAT ON FLOPPYS ARE NOT ALLOWED AT THIS TIME.  CONTINUE LABEL (Y OR N)?2 W A R N I N G --- TRYING TO LABEL SECURE TAPE.6 MAGNETIC TAPE...LABEL IN PROGRESS...STAND BY PLEASE.: ENTER AN ACCESS SECURITY CODE (A..Z , 0..9 , OR BLANK)> F UN-LABELED OR NON-STANDARD LABELED TAPE. LABEL THIS TAPE (Y OR N)? $ ONE MOMET PLEASE FOR TAPE ACCESS.  SYNTAX ERROR UNIT NOT FOUND I/O ERROR  TOO MANY BAD AUS4 INSUFFICIENT STACK SPACE AVAILABLE FOR VCB BUFFER. -K- REGISTER = -L- REGISTER =2 INSUFFICIENT MEMORY AVAILABLE TO FORMAT 1 TRACK. DEVICE NOT READY! RATE ERROR ON SELECTED DEVICE." FAULT ERROR ON SELECTED DEVICE. $ UNIT SELECTED IS WRITE PROTECTED. F I/O FAILS RE-TRY COUNT. DATA TRANSFER FROM/TO DEVICE IS UNREADABLE. FORMAT ON MAGTAPE NOT ALLOWED.& TO CONTINUE LABEL ENTER ACCESS CODE>C @ ˢ X H N 6 ā BGąc # ?`Ps@pz@cjp`n G G!ROC@ G Ƅ  ]p# 8 ^@I܀ A+B G@A>E+C+Dʢ357464A0,yBA' $C܂DG+^@ GǕ# y BGǃE?0@þvN!C C })mC C }gtC C }2`1A# XÞ Gn B Ny@ABGf BJGbBC@R@ B 6` 6J 6W 6H 6J /6K ?6Lmlh {x/u ] m 12 C @  X Rwc # c  VC' @hhgge@n G geafힹa XRW R^e IQiBp@<;: H8P@ G;NPCHC C GTqE'ž * Cȟx @0DAJL )1"   i+ fHD)3 `jm@kC# b# }J,r @EEFF)DcEF, jH@pTŸv g>g;]X] PhV+s=胾c_N Gؾ “@ALS)"$ C m31j/h p vR w ppwp ki 15 !^\d X %'+Ns愾Q)s ED|{ @$ o O m J K i g. V tsFn`"FED) E`Cnrgy w"N{Rq1H }L2`0tG- Bc (>==%ixwc Bc A@6<# Ic B# hIjHc rc ޘT# @0X)P U1RpI P@6=< G:P@ G=NPCHC C GTqI/I iݞU۞ * C՟x @0DAJL )1!"   i+ fFB)3 `j`NQRSTTIITSSJISRIN# B# A@6<@6Y # B|  vH@pɾv g/g,iXi Phb+s=胾c_Z SRמؾ ¡@AvLS)"$ C j<:j8h p y0Rw kkos rp  15 !YW\ f %'+\s愾I)s SR|{ @$ o O m J K i g< V tsFn`"FED) E`Cnrgy w"N!{Rq1H|L2`0tG- Bc (>=Q0MH00)iQ1MH01)Q2MH02)Q3MH03) PROCESSING VOLUME (m)   *D2D(D1) PERMISSABLE UNITS ARE:  DISKETTE - F0,F1,F2,F3 MEDIUM CAPACITY DISK(PME/PLU) - D0,D1,(TEN MEGABYTE - D2,D3) HIGH CAPACITY DISK - Z0,Z1,Z2,Z3,Z4(CFM-UNIT 0)  SOURCE UNIT-    TARGET UNIT-   COPY? (Y)-    ANOTHER PAIR? (Y OR N)-   CONTINUE? (Y OR N)-  UNIT COPIED COPYING ( )  MEDIUM CAPACITY DISK(530/531) - Q0,Q1,Q2,Q3  FILE  3 ALREADY EXISTS ON THE TARGET DISK...  ENTER NEW CFM FILE NAME OR TO SKIP THIS SOURCE FILE >  + HIGH CAPACITY DISK - H0(SFM-UNIT 0), H1(SFM-UNIT 1)  COPY BINARY? (Y OR N)-   CONVERSION CO) MPLETE  D2D(A1) NO VTOC ON SOURCE UNIT OUTPUT UNIT OVERFLOW READ ERROR ON SOURCE UNIT OPEN ERROR ON SOURCE UNIT  TARGET FILE CONNECT ERROR WRITE ERROR ON TARGET UNIT  CLOSE ERROR ON SOURCE UNIT  CLOSE ERROR ON TARGET UNIT z d{o 袷 {{ âNyJQ쇜NyJQYK Qtwn:[)&9Yt}p5C*ٞǞŞĞykRMôNyJQCK QawHDGC{Y8665ßNyJQCK QIwp<# n$ c+D :_ y :Q׀y I)K{:ԎCDр π΀̀+5/p(܀p(# 1,z1T*+ø@*δQ66O/p(܀p(/p(܀p(# :eÏ@6.[Ë@6(W)m:)n*nq V om֤@ jf@ăAĄBą^\ĉ @ǓAǒBǑQ/p(܀p(# I{U3+}̣<ƂƇƀţŀ:zV:n:/p(܀p(/p(܀p(/p(܀p(# ãǫâǪáǩ  msÛǍÚnjÙNjJYUgqrs tp|:w)%' V Z A1J : 9 05V p܀# 6ø@6FδQ 6BI I ǫ:^6JßN B2J*S:/p(܀p(/p(܀p(# ? D v o**dn45an^eos@6B  mǗ:/p(܀p(/p(܀p(# ? 7 w:f/p(܀p(# # m:/p(܀p(# # NJ:/p(܀p(# p@NǗNǕ+ ::!. %'# %&'QJ+x/p(܀p(#  NLJ+:# n0 l  oEDAC B KXNqGFX0KQBCIqJXGBXNBCED  D BG!AKII G N CĝC x{H\xC݀ICNDCĄDǞ'CI}@JQ to6PO54-44)5-n5#56-v-*555 )i)3MH00PA  )i)MH01PA  ))MH02PA  ))MH03PA  )v oo?5d).fDF00AAM MG*.fDF01AAM MG*6.fDF02AAM MG*^.fDF03AAM MG.DM00AA   O*.DM01AA   O*.DM02PAA  &*.DM03PAA  &.DH00AA 7  &* 7 @L+N.DH01AA 7  &7 @L.DZ00AA  n7 +.DZ01AA  n7 +.DZ02AA  n7 +.DZ03AA  n7 ,.DZ04AA  n7 5=眠A䊠䇠䇀F@9X 669+6KQRJQB99=]686666ޠA6/ A @?6ŠB@6" }64_] A;+⌀@މ,x*2QMMDDYY R9= jϤA FDZYBZ Z Bą  Y H H H @ ɠAZg Zu3*kz&+'J&&(A't&'|(M?v'Gu|ѤA ʄZH ОǞȞɀWX AZȀ  TZT UVETj`ZЀ`ZʠAZZgZAv3kz&+&'&(A&(&'|(X''?v'G`ΠY ABSA ZZY܀ABā A@Ѐ ĀBĉZĊ©ć¨ā@ gigZAZv ABZZCAM3&*kz&+'ƀ'G?vQf*ĠB1:! _ "*QX HTBC @ H*߆ @6:c @*3$B1NBɀ6` 1 g3k)XG*()grpPc Pljmg1q*]BB1HWggRy&&''Ξ N OQJ?QC @QBTP G `QRS GGG_\c BR IG!SGBĝBR IG SB # (X(A&'|&xu* Y 1C# MT3C @C @C @C @C @`p FYcB/p $p# Mw I[QaGWXZ/p(p(Y@IC @C U?p(+p(# }'&(A&&(YIA@AĊ# PB1LZĀ6P1PA# ƒċ# &IGVWXWBG! R]^TVC SSURR9ƀ^S66 # )c(XɞQ;/ph@ph@(РP+?ph@kph P+P6jP  fP{z  Ā ΤQ/ph@ph ?ph@kph ?ph@kph # ?ph@kphv=]==MT?vZB+E(z(# # ^][WXS SY\΀[ PWXG[ I\fe\+U*ZZ# }| z(A(X,'&&YB1Jy YQ^\YQg!WXWXJS+XW7y B N OKƠQ ?F # }{y=v N O5ӠQMI+9\Y\+\JR9P#P#  \F6\AB [ IZF cL\FXN9C  " "#"B[GZI # %y%Z5A6AkDYLWXFXC  z z z ) z z z )%WXADAASO`NCZNZYNNYCYTڀ`LS$& %d(A(X$%%&XWFA Z [NWOX I ]G [NWOXWXPAOGA%%DA6QSÂYK=A:YQFXQfx%$\`WX%A$EA [SÂlYHAgYDfc#LWXā A6ADYF  !!@!@ !̟WXAPQBWXFA;A6XSÀYRSDAYA]Aw&%"&%d#$&(:(A&(P%%""nWNXOAhPQfBbWX``F^AY\;[A6_SÀYSYSAIQQYAbAWFXFBBAA@k%%$\((WXY )C-N, OAWXAFA;SDA B gÕE JEI\YSZZ Z%%R(P%"%w4WXPQY )oBBWXBB]rYE JEI\YROPeNDZ%$&%d(A&`C`A6ALWXhF מ DSAGV WE [NOWXP [ I"WXWXLā"$ҠA+ DSAGV NCWXM [ IA+WXNFҀOF [WXFB:WXAĂ/ =]%&'#$LNO[FFA ՠA6AA֠A`AAƀF̄F@BK@" @+ `  @6F@F@``/AB`@ CWVF̈́F` ʀ6AAA &&&(A#&'|((#$?vqqA6B6D6BπF ĠA AZAդ`AQQF̄FN@BK@" H @(GCCB@``EF D`@2`G CABŀÀ@@`@"C!`AF@F@ā ܉ZL  Z__%&''#٠A_ABB&(A(X$1$0'| TBV񀧄UA__ggC_bv+O*P+N{TTOxU΀VG_FZ&&&@Ʉ`_99t`A`00 i_`_ A^   +@(U+@(@#QF*U+UVATVU # /ph@ph?ph@kphs'J('t'\Y/p(p(E%G @  }*19 ' ?p(+p(Y# YDLPWX T]VBG S^YSBYDEQ` LPLπIY@SB INZZI QE# 2SN# PQWXʸNO F # [| TV]R]TSUR^S # &-%% Yx^A]AZؠQÈJ^*+DYY^yEDDY]AZNWOXQEDZ\\1f*\ "E8Y@Y]RVU ƀWNXOc&(A%?(P'%(XyDZZHnnD؀DeeZπDZ)@AІ̆VUU # '&(NO@AGVA PÀYCY# 2V# AVUT# MB TUA/ąV # $'&A1 # L# ANO# WPXQY)>EYPY # NYR€YNN# A+# ==qSÒZNZ# $_@APOQ`H%} 'F+`HPu `@_P# ZB+F C8# AEYF@Y# $BAWXĂ/ # NVWXW# YNY# A+# =]YS@@YCYZBZ @GVWX@ Y# Q# C @Q# C A @\"\S@"VSO 6ĈEN 6ОEN 6Q`*%VB`H`H5Q`*%VBt`H`H5Q`%VA`HA`HA'kK*Q`V`H 6*%`H`H'. 5D@5c # &uŀS SRKRPQWSРBGVNOPSǀSP S # }(A(X RBG NOS GS G !GVNO# }S. Q# @ GؠBG! SȜRU# BG! ]^ # I C U# B+# !+# B SXR.*RS SB 9P{Q)X(Q QQQ Q PQ6PP# )#([(+1NA6QQp # ()g()X((# =])dz*1]*BONQ6J,!A Q+]^ QNOBA! # )X)g)h Gx Q|{((Ā /6-6C @Q# ))FP'FQDBLEDB G E LQDBLEPFFIćĈăąЄ# # # )f-)e=])d==)c,fEC @C @C @C @C @C @`p҄GI@DEFLA1ƞMHF@6EQM@IGk F@6IMIāM/p $p# Jho6Mekk@6M_@XJQ AA@65T5.'-..$=]==.'@Р1MIABC # ABx# !@BJ+ B CJS8@9  @XyJK QEJN BJR # BCF09FXB + N1C 6C&F09C +HF@6Eo# # BKQ]6ǀF#  IDL 1 N6H 1 N Bȉ@AH# MCMC+CM # -l# C+C # /ph@phC+C?ph@kph# ==.'===]>5C6# 6B # # 섁@ +b @1# .-( Hܕ܄+6Ϡj@F@ `+11X- -=]-;<.==-->--@---.A W⑂@ @AF ## # -----..'# .(.DTV00 P.\.^ .a.c.\.D)..(t0".1~?5    .D.f.D.*t3`3`4?5 fd.f..f.+&v4(4(4¼?5d....+vv4(4(4¼?5d....pEDπF ĠB΋QG F ʀD5TR/2D݄DI3BJEK~C FwDOFB6E@6ArP + 1QCܗ 0y wBD+KFFQQFUPB ЄPGG]󟊟5o5e-n555M5T-4//O YDFF6EEKdddcbF@0 CXJQB1v6ǀy C DD+KFFBJ[y ׂ 1VD+KB,yÂGG'C 5d-v-*Ԟw@KQB@61R@ KCNĂ܄6À# @KQQJDI@lJHJICIIBΟQ;ʛNyJQKQ/6/5e-n51c1o1s55-5LP2R1m0 IED'DDF  EKBF @6@J F ƠCÄDAEBC@KF@6y}@(  #ID `DF6BKFJQCkƀF6OKb051l-45o1,KĀy}MKI IIMDNI5d-n51X1c1o1r1[D5DIIzDFXJQKIMF6A*%*'} CРB̘Q ICB1C D/F 9I@C K%'BK K IICK C%' B+K I1I@AICsIMMDOD F@6 @M 6@FKK DBKFFwByE} M DTI IEIFƀy IICđB@1B 5d/*0-. n5// q5/5-//221BJF / . ʠKY D II ӠB1P1yD+KB I垰 ҠB K D IIF  FBPDSID@DĞDDFDI1kD+KGaCI IZBBܗI ICF  / @KQB@6X -4-n5////5-/B LB >KI D I5LP1TYTKPP1TP2G2RDIBK̈́JSC DIFF IED؞ҞОсKy  D5 ΠCFK ICDEKnCCFF DBKCILUCCIDGKCȞ{w-45d-n53J53.325-5o5e؞ӀDIBK̈́JFGFb0 DCIĐ IK ֠CKD@yNqāJIpGFCDEK?CC9`DI66݀FF DCBK Ā#"I! IG}wDI@lJ_6D/6Bh-v-*5)KF@6+%'6* 6|EK+D@*l# 3`ȠEDAAӠBCAĠCI  ID  EK@BĕXCĜ FN9XKQA rC6G@G@XQII/6РBܕCܝ ]}3454-445#56-v-*5@KQ26٠C =6?6ˠCCKJJBC  %BC>E@KQ:C6N13C6FB # # }/*F AE D55 5543d4(EDBT-*BF ?@@ā6F @ā6C #   =19C @_9&C @o? P Px!@p@ *P z 9*r A|>??>>;M> }@ğ~ e????5<=?2?@?95@ A# @HBD`pCDEF!I JAFGHDIH6 @QDCEGEI A‰ `@# ?v;@:/# BJJ B` E ``b`# D# r`@@ABCDEF` &`JHIFˤHG_FD[ HFFEFĎEJ # >:\=>#>>_?VGDFwDHI`(j򀁄IJKLG@ @HA BF@`CED@ H6RC @I܆/#@# ``@ # CČ @䀞l; @?v@2:˾!I; @"HDDBI#CCHÀEIH`(B` I1G@ I @ H hB`(̠1J@ H @ `:\?f>_ ~ޭ@6NN @ SA# =@# ;/  ;Ⓜ@ @A BCDEF 䃧# j;F;6;Y;M;F;6@;Yk;F;6I. 01AP?10,qgI,B0&C1&D `@/ph@ph?ph@kphr%`H@@h@`@@r`H@A ;j;<=]==?f?;xiSC* bĀ+u*M] # Sm vjsCk JS검@mkb `@nbG*`@ G*g'ā T)+/` 1T-DŽ/FuutA@@` `i//-76).\==?=]=*=@<p=*=.==O=@# >>[ oSJRCQM܀ Ā #Ā# # # e=`# '_)iHOr@bRCj(""@`'`@(qMqK `#Ā# jr) # >= p# !# @ A# =# !"Ă##;>>_=*A# A# I?FE # =fG?=<f=]h=F>T?=Q[J@VQF!  极+ # 1)# Fj @ā@"KЀĀ ]>M>OIF H @# # F  Ď # 筧1I iQB ` 1S㟣# qLBɂ A A@ 1&V0d:\rs>Tq !CDC!CBp c # /#qP@#I""B1F@ y@(@m"qI!C?#Qp c # /P P!U%'y# ? 9 ܆@?p(Āp(`@qEB`@ Op(+p(@`@qDB{y`H@ĀOp(+p( # >@?Q @0 PÞQA@pAA o0_>mlpon?@;.?@>_uA qphjBCDpEF0AgcbP@[@ !䃞V ?V-O%1K%&ޤ/ # ܋ /&&1„% # ܋ ?%%& # ?aC @IC @IC @IC @IC @I@I`pF!`@qC p@1 p~ !1Eā䃀*!oqC@1gIf?8I I H!ID H@Iq~ /} ?| ?|?!1qB@1I `; @"JO@ 1LJIq# # @5 @5VȃȆzdžyuÂt J*+$hgDB$ @@Ģ$@ĪHI f)% JS `k z&‹DI @zA>:H~;j=F?@ # @ # @# ?@=C @ð+`pF @6@6@6R 6D6ƨE6 !F66DXʎ`@@ Ac # @@??@@$?===]9:==,f=AATq !CDC!CBp c # /#qP@#I""B1F@ y@(@m"qI!C?#Qp c # /P P!U%'y# ?0 OVIC & EDoOCWYZ1Z PbZ1Z0Z1Z1OC\PbOC^SL` l + - S HELP HLPf }:O C 1͂ST$,Hǐ:уed:ObLP Z1Xj :/F.Aӣ⍃+ d Z[\]^_`a4 q*1to*ml+geN G Nqʟ@Ǟ:?ꇏ:':?߄tCD5-,$ 00xUV:G:4 $KLY:7 ƒ? LHKG:?A@:? = C54:? 1ws:Oy1:OqM:OiB:Oa= .6STH HELP -  PAGE XX  HELP(D0)  +-S> *** END OF DOCUMENTATION *** PARAMETER ERROR DOCUMENTATION NOT FOUND HELP FILE OVER 50 PAGES I/O ERROR HELP FILE CLOSE ERRORmD4D2D1D1--D1D1780080413473300800804134734d HELP.HLP - HELP HELP FILE - 93460-90 B0 * FORMAT: /HELP FNAME FNAME = NAME OF COMMAND OR UTILITY * HELP PROVIDES DOCUMENTATION FOR ANY COMMAND, UTILITY, OR PROGRAM FOR WHICH A HELP FILE EXISTS. HELP EXPECTS THE DOCUMENTATION TO EXIST ON A FILE XXXXXXXXXXX.HLP WHERE XXXXXXXXXXXX IS THE NAME OF THE ROUTINE BEING DOCUMENTED. * IF THE HELP FILE IS FOUND THE FIRST PAGE (22 LINES) IS DISPLAYED ON THE 'OC' DEVICE FOLLOWED BY A PROMPT OF THE FORM '+-S>'. THE USER TYPES A CHARACTER WHICH SPECIFIES THE NEXT OPTION. OPTIONS ARE: + - DISPLAY THE NEXT PAGE (IGNORED IF AT END OF HELP FILE) - - DISPLAY THE PREVIOUS PAGE (IGNORED IF AT START OF FILE) S - STOP, TERMINATE THE HELP UTILITY ALL OTHERS - SAME AS + * WHEN THE END OF THE HELP FILE HAS BEEN REACHED THE MESSAGE '*** END OF DOCUMENTATION ***' IS DISPLAYED AFTER THE LAST LINE OF DOCUMENTATION. * HELP WILL LOOK FOR THE HELP FILE OF THE PROGRAM REQUESTED BY TRYING TO CONNECT TO FILE FNAME.HLP. IF NO UNIT IS SPECIFIED BY THE USER THE SYSTEM FILE UNIT ('SF') WILL BE ASSUMED. IF NO HELP FILE IS FOUND AND ERROR MESSAGE IS ISSUED AND THE PROGRAM TERMINATES. IF NO FNAME IS SPECIFIED ON THE CALL, HELP IS ASSUMED. FOR A LIST OF OS4 COMMANDS AND UTILITYS TYPE /HELP,COMMANDS 80080413473800800804134739d COMMANDS.HLP - COMMANDS HELP FILE (93460-91-D1) NOTE: ALL OCCURANCES OF A SINGLE SLASH ARE OPTIONAL. ------- ------------ ----------- COMMAND ABBREVIATION DESCRIPTION ------- ------------ 1  ----------- /ASSIGN /AS ASSIGNS A LOGICAL UNIT TO A PHYSICAL UNIT, A FILE, OR ANOTHER LOGICAL UNIT, OR LISTS CURRENT LOGICAL UNIT ASSIGNMENTS. //ASSIGN //AS PERMANENTLY ASSIGNS A LOGICAL UNIT TO A PHYSICAL UNIT, A FILE, OR ANOTHER  LOGICAL UNIT, OR LISTS PERMANENT LOGICAL UNIT ASSIGNMENTS. /AUTOLOAD /AU AUTOLOADS A STAND-ALONE FILE INTO MEMORY. /CNC LOADS THE CONCORDANCE UTILITY FOR GENERATING A CONCORDANCE OF A MACRO SOURCE FILE. /COBOL LOADS THE COBOL COMPILER INTO MEMORY FOR COMPILING COBOL SOURCE PROGRAMS. / PRODUCES A COMMENT IN A JOB FILE. (AT LEAST ONE LEADING SPACE IS REQUIRED). /COPY /CO  COPIES DATA FROM ONE FILE TO ANOTHER WITH NO OVERWRITE ON DUPLICATE FILES. //COPY //CO COPIES DATA FROM ONE FILE TO ANOTHER WITH AUTOMATIC OVERWRITE ON DUPLICATE FILES.  /COPYALL /COPYA COPIES ALL FILES FROM ONE PHYSICAL UNIT TO ANOTHER WITH NO OVERWRITE ON DUPLICATE FILES. //COPYALL //COPYA COPIES ALL FILES FROM ONE PHYSICAL UNIT  TO ANOTHER WITH EITHER AUTOMATIC OVERWRITE OR OVERWRITE ON REQUEST ON DUPLICATE FILES. /COPYPACK /COPYP COPIES ALL ALLOCATED AUS FROM ONE PHYSICAL UNIT TO ANOTHER. /DATE /DA SETS OR REQUESTS THE CURRENT DATE. /DELETE /DE DELETES ANY USER FILE OR FILES FROM A DIRECTORY. //DELETE //DE DELETES ANY FILE OR FILES FROM A DIRECTORY. /DISMOUNT /DI NOTIFIES THE SYSTEM THAT A DISK IS ABOUT TO  BE DISMOUNTED. /DO EXECUTES A JOB FILE. /DUMP /DU  LISTS THE CONTENTS OF A DISK AU OR RANGE OF AUS. /EDIT LOADS THE SOURCE EDITOR INTO MEMORY FOR SYMBOLIC TEXT CREATION/MODIFICATION. /  LOADS AND EXECUTES A USER PROGRAM. /FORTRAN LOADS THE FORTRAN COMPILER INTO MEMORY FOR  COMPILING FORTRAN SOURCE PROGRAMS. /HELP INITIATES AN INTERACTIVE UTILITY PROGRAM  FOR LISTING SYSTEM DOCUMENTATION TO THE OC UNIT. /IDIR /ID INITIALIZES A DIRECTORY, DELETING ALL FILES EXCEPT SYSTEM FILES. //IDIR //ID INITIALIZES A DIRECTORY, DELETING ALL FILES INCLUDING SYSTEM FILES. /JOB  /JO RESETS ALL LOGICAL UNITS EXCEPT CI, SL, TO PO, & ZB TO THEIR PERMANENT ASSIGNMEN2 TS. CLOSES ANY OPEN FILES. PRINTS DATE & TIME. /LABEL INITIATES AN INTERACTIVE UTILITY PROGRAM FOR LABELING A DISK IN SFM FORMAT. /LINK LOADS THE LINKER INTO MEMORY FOR LINKING OBJECT TEXT PROGRAMS. /MACRO LOADS THE MACRO ASSEMBLER INTO MEMORY FOR ASSEMBLING MACRO SOURCE PROGRAMS. /MOUNT /MO  NOTIFIES THE SYSTEM THAT A NEW DISK HAS BEEN MOUNTED. /OLE LOADS THE OS4 LINE EDITOR FOR SYMBOLIC TEXT CREATION/MODIFICATION. /PASCAL LOADS THE PASCAL COMPILER INTO MEMORY FOR COMPILING PASCAL SOURCE PROGRAMS. /PATCH  LOADS THE PATCH UTILITY INTO MEMORY FOR MAKING PATCHES TO BINARY PROGRAMS. /PAUSE /PA CAUSES OS4 TO REQUEST THE OPERATOR (VIA THE OC UNIT) TO SPECIFY WHETHER THE CURRENT JOB FILE SHOULD BE CONTINUED OR ABORTED. /PRINT /PRI CAUSES A LISTING FILE TO BE PRINTED AS A SEPARATE SYSTEM ACTIVITY. /RENAME /RE CHANGES THE NAME OF ANY USER DISK FILE. //RENAME //RE CHANGES THE NAME OF ANY DISK FILE. /RUNCOBOL  LOADS AND EXECUTES THE COBOL INTERPRETER FOR RUNNING COBOL PROGRAMS. /RUNPASCAL  LOADS AND EXECUTES THE PASCAL INTERPRETER FOR RUNNING PASCAL PROGRAMS. /TIME /TI SETS OR REQUESTS THE CURRENT TIME. /VIEW /VI GENERATES A VIEW LISTING OF A FILE, A GROUP  OF FILES WITH THE SAME NAME BUT DIFFERENT EXTENSIONS, OR A DIRECTORY. NOTIFIES THE SYSTEM THAT A NEW DISK HAS BEEN MOUNTED. /OLE LOADS THE OS4 LINE EDITOR FOR SYMBOLIC TEXT CREATION/MODIFICATION. /PASCAL LOADS THE PASCAL COMPILER INTO MEMORY FOR COMPILING PASCAL SOURCE PROGRAMS. /PATCH  LOADS THE PATCH UTILITY INTO MEMORY FOR MAKING PATCHES TO BINARY PROGRAMS. /PA TITL GEN.MAC - GENERAL EQUATES & MACROS (93420-10-D0) TITL .... C O N T E N T S *************** * * * GEN.MAC * * * *************** * * ASCII EQUATES * CONTEXT BLOCK (STACK) EQUATES * SYMATT BIT VALUE EQUATES * DIO INTERRUPT VECTOR EQUATES * CONSOLE DEVICE ADDRESS & FUNCTION CODES * STATUS REGISTER EQUATES * FIXED MEMORY ADDRESS ASSIGNMENTS * BIT:??? MACROS * COPY:M MACRO * EXCH:M MACRO * RET: MACRO * DUP: MACRO * DOOR SERVICE CALL MACRO TITL .... M I S C E L L A N E O U S E Q U A T E S * ASCII EQUATES * PARTY: EQU :00 SET PARITY BIT OFF NU: SET :00++PARTY: ASCII NULL LF: SET :0A++PARTY: ASCII LINE FEED FF: S3 ET :0C++PARTY: ASCII FORM FEED CR: SET :0D++PARTY: ASCII CARRIAGE RETURN RO: SET :7F++PARTY: ASCII RUBOUT * * CONTEXT BLOCK (STACK) EQUATES * LAST:L EQU 0 CALLER'S L REGISTER LAST:S EQU 1 CALLER'S S REGISTER LAST:A EQU 2 CALLER'S A REGISTER LAST:Q EQU 3 CALLER'S Q REGISTER LAST:X EQU 4 CALLER'S X REGISTER LAST:Y EQU 5 CALLER'S Y REGISTER LAST:P EQU 6 CALLER'S P REGISTER (RETURN ADDRESS) CBL: EQU LAST:P+1 LENGTH OF CONTEXT BLOCK * * SYMATT BIT VALUE EQUATES * ABSBT: EQU :8000 ABSOLUTE RELBT: EQU :4000 RELATIVE REGBT: EQU :2000 REGISTER EXT: EQU :1000 EXTERNAL INDBT: EQU :800 INDIRECT LITBT: EQU :400 LITERAL NXBT: EQU :200 POST INDEXED PNXBT: EQU :100 PRE INDEXED UNDBT: SET :80 UNDEFINED NULL: EQU :40 NULL SYMER: EQU :20 EVALUATION ERROR BYTRL: EQU :10 BYTE RELOCATABLE TITL * DIO INTERUPT VECTOR EQUATES * IV:AIO EQU 0 AUTO I/O IV:CNT EQU 1 BYTE COUNT IV:BUF EQU 2 BUFFER ADDRESS IV:JSK EQU 4 JSK $+1 IV:EOB EQU 5 EOB ADDRESS * * CONSOLE DEVICE ADDRESS & FUNCTION CODES * CONDA: EQU 0//3 CONSOLE DEVICE ADDRESS CSSFC: EQU 0 CONSOLE SENSE SWITCH FUNCTION CODE CIRFC: EQU 1 CONSOLE INTERRUPT RESET FUNCTION CODE CDR: EQU 4 CONSOLE DATA REGISTER FUNCTION CODE TITL .... S T A T U S R E G I S T E R E Q U A T E S * STATUS REGISTER BIT POSITION EQUATES * CY: EQU 0 CARRY OV: EQU 1 OVERFLOW BY: EQU 2 BYTE MODE CI: EQU 4 CONSOLE INTERRUPT ENABLED RI: EQU 5 REAL TIME CLOCK INTERRUPT ENABLED XA: EQU 6 EXTENTED ADDRESSING MODE INT: EQU 8 INTERRUPTS ENABLED IM12: EQU 12 LEVEL 0 WORD INTERRUPT MASK IM13: EQU 13 LEVEL 0 EVENT INTERRUPT MASK UX: EQU 13 EXCEPTION RETURN FOR UNRECOVERABLE ERROR RX: EQU 14 EXCEPTION RETURN FOR RECOVERABLE ERROR * * STATUS REGISTER BIT VALUE EQUATES * CY:V EQU :1 CARRY OV:V EQU :2 OVERFLOW BY:V EQU :4 BYTE MODE B3:V EQU :8 RESERVED STATUS BIT 3 CI:V EQU :10 CONSOLE INTERRUPT ENABLED RI:V EQU :20 REAL TIME CLOCK INTERRUPT ENABLED XA:V EQU :40 EXTENDED ADDRESSING MODE B7:V EQU :80 RESERVED STATUS BIT 7 INT:V EQU :100 INTERRUPTS ENABLED IM12:V EQU :1000 LEVEL 0 WORD INTERRUPT MASK IM13:V EQU :2000 LEVEL 0 EVENT INTERRUPT MASK TITL .... F I X E D  M E M O R Y E Q U A T E S * FIXED MEMORY ADDRESS ASSIGNMENTS * PUPA: EQU :80 POWER UP ADDRESS UITA: EQU :84 UNIMPLEMENTED INSTRUCTION TRAP ADDRESS UMTA: EQU :88 UNINSTALLED MEMORY TRAP ADDRESS PFTA: EQU :8C POWER FAILURE TRAP ADDRESS EACA: EQU :90 EFFECTIVE ADDRESS CALCULATION ADDRESS RTCNC: EQU :91 REAL TIME CLOCK INCREMENT ADDRESS RTCIA: EQU :92 READ TIME CLOCK INTERRUPT ADDRESS CONIA: EQU :94 CONSOLE INTERRUPT ADDRESS CNTA: EQU :98 CHARACTER/NUMERIC EXCEPTION TRAP ADDRESS SOTA: EQU :9C STACK OVERFLOW TRAP ADDRESS SETA: EQU :9C STACK EXCEPTION TRAP ADDRESS USTA: EQU :A0 USER TRAP ADDRESS SYTA: EQU :A4 SYSTEM TRAP ADDRESS AETA: EQU :A8 ARITHMETIC EXCEPTION TRAP ADDRESS TITL .... B I T : ? ? ? M A C R O S ** MACRO: BIT:EQU, BIT:SET, & BIT:WORD * BUILD A 16-BIT ARRAY OF BITS AND ASSIGN IT APPROPRIATELY * * CALLING SEQUENCE: (LABEL) BIT:??? (BIT1),(BIT2),...,(BIT8) * BIT1-BIT8 = BIT POSITIONS TO BE TURNED ON ** SPACE 2 BIT:EQU MACRO 4  EQU MACLAB BIT:SET MACENT SET MACLAB BIT:WORD MACENT WORD MACLAB A: SET 0 * BIT:LOOP MACENT NULL IFT #(1,?) A: SET 1//#(1)++A: BIT:LOOP #(2),#(3),#(4),#(5),#(6),#(7),#(8) ENDC * IFF #(0,'NULL') #(-1) #(0) A: ENDC ENDM TITL .... C O P Y M E M O R Y - M E M O R Y M A C R O ** MACRO: COPY:M * COPY THE CONTENTS OF ONE MEMORY CELL TO ANOTHER * * CALLING SEQUENCE: (LABEL) COPY:M MEM1,REG,MEM2 * MEM1 = ADDRESS OF SOURCE MEMORY CELL * REG = REGISTER TO BE USED FOR TRANSFER * MEM2 = ADDRESS OF DESTINATION MEMORY CELL ** SPACE 2 COPY:M MACRO COPY #(1),#(2) COPY #(2),#(3) ENDM TITL .... E X C H M E M O R Y - M E M O R Y M A C R O ** MACRO: EXCH:M * EXCHANGE THE CONTENTS OF TWO MEMORY CELLS * * CALLING SEQUENCE: (LABEL) EXCH:M MEM1,MEM2 * MEM1,MEM2 = MEMORY ADDRESSES OF CELLS TO BE EXCHANGED ** SPACE 2 EXCH:M MACRO EXCH #(1),A EXCH A,#(2) EXCH A,#(1) ENDM TITL .... R E T U R N M A C R O ** MACRO: RET: * RETURN WITH A VALUE IN THE A REGISTER * * CALLING SEQUENCE: (LABEL) RET:A VALUE * VALUE = VALUE TO RETURNED IN THE A REGISTER ** SPACE 2 RET: MACRO COPY =#(1),A RSK ENDM TITL .... D U P ( L I C A T E ) M A C R O ** MACRO: DUP * DUPLICATE THE GIVEN BYTE THE NUMBER OF TIMES SPECIFIED. * * CALLING SEQUENCE: (LABEL) DUP 'TEXT',NUM *  'TEXT' = BYTE STRING (DUPLICATION STARTS IN COLUMN 1) * NUM = NUMBER OF TIMES TO DUPLICATE ** SPACE 2 DUP MACRO A:: SET #(1,?)-1 IFT #(2)>0 #(1,2,A::) Q:: SET #(2)-1 DUP #(1),Q:: ENDC ENDM TITL .... S Y S T E M S E R V I C E C A L L M A C R O ** MACRO: * GENERATE A CALL TO A SYSTEM SERVICE THROUGH THE DOOR * * CALLING SEQUENCE: (LABEL) * SERVICE NAME = NAME OF SYSTEM SERVICE * PBA = PARAMETER BLOCK ADDRESS (CALL DEPENDENT) * THE PBA MAY BE ANY VALID M4D12 ADDRESS OR * ANY DIRECT OR INDIRECT UNINDEXED ADDRESS ** SPACE 2 F:CFNO MACRO F:CFNO/26 F:CONN MACENT F:CONN/24 F:CREA MACENT F:CREA/22 F:DELE MACENT F:DELE/23 F:DMNT MACENT F:DMNT/29 F:MONT MACENT F:MONT/25 * I:IO MACENT I:IO/7 I:LOAD MACENT I:LOAD/30 I:LD410S MACENT I:LD410S/31 * R:ABUF MACENT R:ABUF/13 R:AWAL MACENT R:AWAL/17 R:BGIN MACENT R:BGIN/3 R:CINT MACENT R:CINT/8+:8000 R:CTIC MACENT R:CTIC/19 R:CWAL MACENT R:CWAL/21 R:DBUG MACENT R:DBUG/0+:8000 R:END MACENT R:END/4+:8000 R:GATD MACENT R:GATD/27 R:GPRI MACENT R:GPRI/6+:8000 R:GTOD MACENT R:GTOD/16+:8000 R:ITIC MACENT R:ITIC/11 R:IWAL MACENT R:IWAL/18 R:MTIC MACENT R:MTIC/20 R:PAUS MACENT R:PAUS/12 R:RECV MACENT R:RECV/10 R:RBUF MACENT R:RBUF/14 R:SATD MACENT R:SATD/28 R:SEND MACENT R:SEND/9 R:SIG MACENT R:SIG/1 R:SPRI  MACENT R:SPRI/5 R:STOD MACENT R:STOD/15+:8000 R:WAIT MACENT R:WAIT/2 R:AFB MACENT R:AFB/32+:8000 R:RFB MACENT R:RFB/33 R:EX MACENT R:EX/34 * * * X: SET #(0,'/')-1 LOAD #(0,1,X:) X: SET X:+2 Y: SET #(0,X:,30) IFT #(1,?) S: SYMATT #(1) X: SET NXBT:++PNXBT:**S:=0 X: SET INDBT:**S:<>0+X:*X://13 ENDC IFF #(1,?) X: SET Y:**:8000//-14--3//13 ENDC * WORD Y:**:00FF++:1A00++X: STRAP INSTRUCTION IFT X: IFT #(1,?) WORD #(1,) DIRECT OR INDIRECT UNINDEXED PARAMETER ENDC IFF #(1,?)5  WORD 0 NO PARAMETER ENDC ENDC IFF X: M4D12 #(1) M4D12 PARAMETER ENDC * IFF \Y://-15**:00000001=#(?) NOTE  E,'INCORRECT NUMBER OF PARAMETERS' ENDC ENDM SPACE 3 SAVE END ANY DIRECT OR INDIRECT UNINDEXED ADDRESS ** TITL RTX.MAC - RTX USER EQUATES & MACROS (93420-11-D1) TITL .... C O N T E N T S *************** * * * RTX.MAC * * * *************** * * MISCELLANEOUS EQUATES * EDB EXCEPTION VECTOR EQUATES * BGIN:(A) MACRO * ECB:(A) MACRO * EDXVT:(A) MACRO * INIT:(A) MACRO * MAIL:(A) MACRO * MDB:(A) MACRO * SINGL: MACRO * SDB:(A) MACRO * TDB:(A) MACRO * TICK:(A) MACRO * WALL:(A) MACRO TITL .... M I S C E L L A N E O U S E Q U A T E S * SYSTEM FREE POOL BLOCK SIZE * BLKSZ: EQU 12 (DUPPED IN RTXD.MAC) * *  INTERNAL BLOCK CHECK VALUE EQUATES * IN:CHK EQU :F00E INIT CHECK VALUE (IN IN:AID) TD:CHK EQU :F01E TDB CHECK VALUE (IN TD:CKW) AC:CHK EQU :F02E ACB CHECK VALUE (IN AC:CKW) SD:CHK EQU :F03E SDB CHECK VALUE (IN SD:CKW) CC:CHK EQU :F04E CCB CHECK VALUE (IN CC:CKW) EC:CHK EQU :F06E ECB CHECK VALUE (IN EC:CKW) MD:CHK EQU :F07E MDB CHECK VALUE (IN MD:CKW) UA:CHK EQU :F09E UAT CHECK VALUE (WORD 0) (DUPPED IN IOS.MAC) TITL .... E D B E X C E P T V E C T O R E Q U A T E S * EDB EXCEPTION VECTOR EQUATES * * THE FOLLOWING XV:????? EQUATES SPECIFY LOCATIONS IN THE * EXCEPTION VECTOR OF THE ENVIRONMENT DESCRIPTOR BLOCK * XV:UINTP EQU :0 UNIMPLEMENTED INSTRUCTION TRAP XV:MEMTP EQU :1 MEMORY EXCEPTION TRAP XV:CNMTP EQU :2 CHARACTER/NUMERIC EXCEPTION TRAP XV:USRTP EQU :3 USER TRAP XV:AERTP EQU :4 ARITHMETIC EXCEPTION TRAP XV:STKTP EQU :5 STACK EXCEPTION TRAP XV:STKSV EQU :6 STACK EXCEPTION REGISTER SAVE AREA XV:USTEX EQU :8 UNIMPLEMENTED STRAP EXCEPTION XV:ST0EX EQU :9 STRAP 0 EXCEPTION XV:DOREX EQU :A DOOR SERVICE EXCEPTION XV:RTXEX EQU :B RTX SYSTEM ERROR * * STACK EXCEPTION REGISTER SAVE AREA EQUATES * STKSV:A EQU 0 A REGISTER SAVE AREA STKSV:Q EQU 1 Q REGISTER SAVE AREA STKSV:X EQU 2 X REGISTER SAVE AREA STKSV:Y EQU 3 Y REGISTER SAVE AREA TITL .... B G I N : ( A ) M A C R O ** MACRO: BGIN: & BGIN:A * GENERATE A PARAMETER BLOCK FOR AN R:BGIN CALL * * CALLING SEQUENCE: LABEL BGIN:(A) TASK,PRI * BGIN:(A) LABEL,TASK,PRI (ARCHAIC) * LABEL = ADDRESS OF PARAMETER BLOCK * TASK = ADDRESS OF TDB * PRI = TASK PRIORITY ** SPACE 2 BGIN: MACRO BGIN:A MACENT P: SET 2 L: SET #(?) IFF #(-1,?) L: SET L:-1 #(1) BGIN:: #(2),#(3) ENDC * BGIN:: MACENT IFT #(-1,?) WORD #(1) TCB ADDRESS WORD #(2) PRIORITY IFF L:=P:  NOTE E,'INCORRECT NUMBER OF PARAMETERS' ENDC ENDC ENDM TITL .... E C B : ( A ) M A C R O ** MACRO: ECB: & ECB:A * GENERATE AN ENVIRONMENT CONTROL BLOCK * * CALLING SEQUENCE: LABEL ECB:(A) UAT,(PEADD),(MPADD,MPLEN) *  ECB:(A) LABEL,UAT,(PEADD),(MPADD,MPLEN) (ARCHAIC) * LABEL = ADDRESS OF PARAMETER BLOCK * UAT = ADDRESS OF UNIT ASSIGNMENT TABLE * PEADD = ADDRESS OF END OF PROGRAM * MPADD = USER SPECIFIED MEMORY POOL ADDRESS * MP6 LEN = USER SPECIFIED MEMORY POOL LENGTH ** SPACE 2 ECB: MACRO MACLAB ECB:A MACENT MACLAB P: SET 1 L: SET #(?) IFF #(-1,?) L: SET L:-1 #(1) ECB:: #(2),#(3),#(4),#(5) ENDC * ECB:: MACENT MACLAB IFT #(-1,?) LPOOL O: SET $ SHARABLE TABLE: TABLE: REL #(-1) NAM #(-1) CHAN R:ECBL ED:PER - PEER LINK WORD 0 EC:FLG - FLAG WORD WORD #(-1) EC:EDB - ENVIRONMENT DESCRIPTOR BLOCK WORD 1 EC:LUS - LUN SEMAPHORE (ALIAS EC:PRV) RES 2,0 WORDS 4-5 RESERVED WORD 0 EC:CNT - NUMBER OF ACTIVITIES WORD 0 EC:ALH - ACB LIST HEAD WORD 0 EC:SUB - SUBORDINATE LIST HEAD WORD 0 EC:MST - MASTER ENVIRONMENT WORD 0 EC:NEC - NECESSARY ENVIRONMENT WORD EC:CHK EC:CKW - CHECK WORD WORD 16 ED:EVO - EXCEPTION VECTOR OFFSET WORD 48 ED:MRO - MAP REGISTER OFFSET RES 2,0 WORDS 14-15 RESERVED RES 16,0 ED:EVT - EXCEPTION VECTOR TABLE  WORD #(1) ED:UAT - UNIT ASSIGNMENT TABLE WORD 0 ED:LMA - LOW MEMORY ADDRESS IFT #(2,?) P: SET P:+1 ENDC IFT #(2,?) WORD #(2) ED:MPA - USER SPECIFIED MEMORY POOL ADDRESS ENDC IFF #(2,?) WORD 0 ED:MPA - DEFAULT MEMORY POOL ADDRESS ENDC WORD 0 ED:HMA - HIGH MEMORY ADDRESS WORD 0 ED:EUS - ENVIROMENT USAGE SEMAPHORE WORD :7FFF ED:PRI - MAXIMUM PRIORITY HEAD R:TDBL ED:TLH - TASK LIST HEAD HEAD R:SL ED:SLH - SEMAPHORE LIST HEAD HEAD R:MBXL ED:MLH - MAILBOX LIST HEAD WORD #(3)+0 ED:UMPA - USER MEMORY POOL ADDRESS WORD #(4)+0 ED:MPL - USER MEMORY POOL LENGTH IFT #(3,?)+#(4,?) P: SET P:+2 IFF #(3,?) NOTE E,'MUST SPECIFY MEMORY POOL ADDRESS' ENDC IFF #(4,?) NOTE E,'MUST SPECIFY MEMORY POOL LENGTH' ENDC ENDC RES 1,0 WORD 43 IS RESERVED RES 1,0 NUMBER OF TASK ACTIVITY RES 1,0 TDB OF INITIAL TASK RES 1,0 PRIORITY OF INITIAL ACTIVITY RES 1,0 ID OF INITIAL ACTIVITY RES 1,0 MAP OF REGISTER TABLE IFF L:>=P: NOTE E,'INCORRECT NUMBER OF PARAMETERS' ENDC ORG O: ENDC ENDM TITL .... E D X V T : ( A ) M A C R O ** MACRO: EDXVT: & EDXVT:A * GENERATES ENTRIES IN THE EXCEPTION VECTOR TABLE OF THE EDB * THE EXCEPTION ADDRESS SPECIFIED WILL BE JUMPED TO IF THE * SPECIFIED EXCEPTION OCCURS * * CALLING SEQUENCE: EDXVT:(A) ECB,EXCEPT,EXPADD * * ECB = ADDRESS OF ENVIRONMENT CONTROL BLOCK * EXCEPT = EXCEPTION VECTOR OFFSET * EXPADD = ADDRESS OF EXCEPTION PROCESSOR * * NOTE: CALLS TO THIS MACRO MUST ALL FOLLOW THE CALL TO THE ECB:(A) * MACRO ** SPACE 2 ED:EVT EQU 16 EXCEPTION VECTOR TABLE (DUPPED IN RTXD.MAC) * EDXVT: MACRO EDXVT:A MACENT P: SET 3 * LPOOL O: SET $ SAVE LOCATION COUNTER ORG #(1)+ED:EVT+#(2) ORG INTO EDB WORD #(3) INSERT EXCEPTION PROCESSOR ADDRESS ORG O: ORG BACK TO WHERE WE WERE IFF #(?)=P: NOTE E,'INCORRECT NUMBER OF PARAMETERS' ENDC ENDM TITL .... I N I T : ( A ) M A C R O ** MACRO: INIT: & INIT:A * GENERATE AN ENVIRONMENT INITIALIZATION BLOCK * * CALLING SEQUENCE: * INIT:(A) AR,QR,XR,YR,ECB,TDB,PRI,(FPAMT,(FPADD)), * (EMADD) * * AR = INITIAL CONTENTS OF A REGISTER * QR = " " " Q " * XR = " "  " X " * YR = " " " Y " * ECB = ADDRESS OF ENVIRONMENT CONTROL BLOCK * TDB = ADDRESS 7 OF TASK DESCRIPTOR BLOCK * PRI = PRIORITY OF TASK ACTIVATION * FPAMT = AMOUNT OF FREE POOL SPACE (WORDS) * FPADD = ADDRESS OF FREE POOL * EMADD = ADDRESS OF TOP OF MEMORY ** SPACE 2 INIT: MACRO INIT:A MACENT LPOOL O: SET $ SHARABLE TABLE: TABLE: REL P: SET 7 LOAD RTX: R:INIT NAM R:INIT WORD #(1) IN:A - INITIAL A REGISTER WORD #(2) IN:Q - INITIAL Q REGISTER WORD #(3) IN:X - INITIAL X REGISTER WORD #(4) IN:Y - INITIAL Y REGISTER WORD #(5) IN:ECB - ECB ADDRESS WORD #(6) IN:TDB - TDB ADDRESS WORD #(7)**:7FFF IN:PRI - INITIAL ACTIVITY PRIORITY WORD IN:CHK IN:AID - CHECK WORD * IFT #(8,?) WORD #(8) IN:FPL - USER SPECIFIED FREEPOOL LENGTH P: SET P:+1 ENDC IFF #(8,?) WORD BLKSZ:*4 IN:FPL - DEFAULT FREEPOOL LENGTH ENDC * A: SET #(9,?) DEFAULT FPADD IF NOT SPECIFIED... IFT A:=1 OR IF '0' SPECIFIED A: SET '##(9)'<>'0' ENDC IFT A: WORD #(9) IN:FPA - USER FREE POOL ADDRESS Y: SET 0 P: SET P:+1 IFF #(8,?)  NOTE E,'MUST SPECIFY AMOUNT OF FREE POOL = #(8)' ENDC ENDC IFF A: Y: SET BLKSZ:*4 S: SYMATT #(8) IFF S:**:0040  IF FPAMT NOT NULL... IFT S:=:8000 IF FPAMT IS ABSOLUTE... Y: SET #(8) ENDC IFF S:=:8000 IF FPAMT IS SOMETHING ELSE... NOTE E,'FPAMT MUST BE ABSOLUTE IF FPADD IS DEFAULTED' Y: SET 0 ENDC ENDC WORD $+2 IN:FPA - DEFAULT FREE POOL ADDRESS (AFTER INIT BLOCK) ENDC * IFT #(10,?) P: SET P:+1 WORD #(10) IN:EOM - USER SPECIFIED END OF MEMORY ADDRESS ENDC IFF #(10,?) WORD 0 IN:EOM - DEFAULT END OF MEMORY ADDRESS ENDC * IFT Y: RES Y:,:8080 RESERVE DEFAULT FREE POOL ENDC * IFF #(?)>=P: NOTE E,'INCORRECT NUMBER OF PARAMETERS' ENDC ORG O: ENDM TITL .... M A I L : ( A ) M A C R O ** MACRO: MAIL: & MAIL:A * GENERATE A PARAMETER BLOCK FOR MAILBOX SERVICES * * CALLING SEQUENCE: LABEL MAIL:(A) BOXID,(ENVID) * MAIL:(A) LABEL,BOXID,(ENVID) (ARCHAIC) * LABEL = ADDRESS OF PARAMETER BLOCK * BOXID = MAILBOX IDENTIFIER * ENVID = ENVIRONMENT IDENTIFIER ** SPACE 2 MAIL: MACRO MAIL:A MACENT P: SET 1 L:  SET #(?) IFF #(-1,?) L: SET L:-1 #(1) MAIL:: #(2),#(3) ENDC * MAIL:: MACENT IFT #(-1,?) IFT #(2,?) P: SET P:+1 ENDC WORD #(2)+0 ENVIRONMENT IDENTIFIER WORD #(1) MAILBOX IDENTIFIER IFF L:>=P: NOTE E,'INCORRECT NUMBER OF PARAMETERS' ENDC ENDC ENDM TITL .... M D B : ( A ) M A C R O ** MACRO: MDB: & MDB:A * GENERATE A MAILBOX DESCRIPTOR BLOCK * * CALLING SEQUENCE: (LABEL) MDB:(A) BOXID,(ENVID) * * BOXID = MAILBOX IDENTIFIER * ENVID = ENVIRONMENT IDENTIFIER ** SPACE 2 MDB: MACRO MACLAB MDB:A MACENT MACLAB LPOOL O: SET $ SHARABLE TABLE: TABLE: REL P: SET  1 IFT #(-1,?) NAM #(-1) ENDC #(-1) CHAN R:MBXL MD:PER - PEER LINK WORD 0 MD:FLG - FLAG WORD WORD 1 MD:MBX - MAILBOX USAGE SEMAPHORE WORD 0 MD:MSG - MESSAGE SIGNALLING SEMAPHORE DOUBLE 0 MD:A,MD:Q - 32-BIT MESSAGE RES 3,0 WORDS 6-8 RESERVED IFT #(2,?) P: SET P:+1 ENDC WORD #(2)+0 MD:ECB - ENVIRONMENT IDENTIFIER WORD #(1) MD:ID - MAILBOX IDENTIFIER WORD MD:CHK MD:CHW - MDB CHECKWORD IFF #(?)>=P: NOTE E,'INCORRECT NUMBER OF PARAMETERS' ENDC ORG O: 8 ENDM TITL .... S I N G L : M A C R O ** MACRO: SINGL: * GENERATE A CANNED INIT BLOCK AND TASK DESCRIPTOR BLOCK, *  (USER'S ECB MUST BE CALLED R:ECB1) * * CALLING SEQUENCE: (LABEL) SINGL: EXADD,STAMT,STREG * EXADD = EXECUTION ADDRESS OF INITIAL TASK * STAMT = AMOUNT OF STAMT TO ALLOCATE * STREG = INITIAL STATUS REGISTER ** SPACE 2 SINGL: MACRO EXTR R:ECB1 P: SET 3 INIT: 0,0,0,0,R:ECB1,R:TSK1,100,4*BLKSZ: R:TSK1 TDB:A #(1),0,R:STK1,#(2),#(3) R:STK1 RES #(2),0 LOAD UAT:S IFF #(?)=P: NOTE E,'INCORRECT NUMBER OF PARAMETERS' ENDC ENDM TITL .... S D B : ( A ) M A C R O ** MACRO: SDB: & SDB:A * GENERATE A SEMAPHORE DESCRIPTOR BLOCK * * CALLING SEQUENCE: LABEL SDB:(A) (VALUE),(FLAGS) * SDB:(A) LABEL,(VALUE),(FLAGS) (ARCHAIC) * LABEL = ADDRESS OF SEMAPHORE DESCRIPTOR BLOCK * VALUE = INITIAL VALUE OF SEMAPHORE (0 <= VALUE <= 255) * FLAGS = INITIAL VALUE OF FLAGS (NONE CURRENTLY DEFINED) ** SPACE 2 SDB: MACRO MACLAB SDB:A MACENT MACLAB P: SET 0 L: SET #(?) IFF #(-1,?) L: SET L:-1 #(1) SDB:: #(2),#(3) ENDC * SDB:: MACENT MACLAB IFT #(-1,?) LPOOL O: SET $ SHARABLE TABLE: TABLE: REL CHAN R:SL SD:PER - PEER LINK IFT #(1,?) P: SET P:+1 ENDC IFT #(2,?) P: SET P:+1 ENDC WORD #(1)+0++#(2)+0 SD:FLG - FLAGS & INITIAL VALUE NAM #(-1) #(-1) WORD #(1)+0 SD:SEM - VALUE FOR WAITING TASK WORD SD:CHK SD:CKW - SDB CHECKWORD IFF L:>=P: NOTE E,'INCORRECT NUMBER OF PARAMETERS' ENDC ORG O: ENDC ENDM TITL .... T D B : ( A ) M A C R O ** MACRO: TDB: & TDB:A * GENERATE A TASK DESCRIPTOR BLOCK * * CALLING SEQUENCE: * LABEL TDB:(A) EXADD,YSCRA,STACK,STAMT,(FLAGS),(COACT),(SEMA4) * TDB:(A) LABEL,EXADD,YSCRA,STACK,STAMT,(FLAGS),(COACT), * (SEMA4) (ARCHAIC) * * LABEL = ADDRESS OF TASK DESCRIPTOR BLOCK * EXADD = EXECUTION ADDRESS * YSCRA = AMOUNT OF Y-SCRATCH TO ALLOCATE * "*" INDICATES MULTI-TASKING TEMPLATE EXPANSION * STACK = ADDRESS OF STACK * STAMT = AMOUNT OF STACK TO ALLOCATE * FLAGS = NONE DEFINED * COACT = NUMBER OF CONCURRENT EXECUTIONS * SEMA4 = CONCURRENCY SEMAPHORE ADDRESS (MUST BE SET AT RUNTIME) ** SPACE 2 TDB: MACRO MACLAB TDB:A MACENT MACLAB P: SET 4 L: SET #(?) IFF #(-1,?) L: SET L:-1 #(1) TDB:: #(2),#(3),#(4),#(5),#(6),#(7),#(8) ENDC * TDB:: MACENT MACLAB IFT #(-1,?) LPOOL O: SET $ SHARABLE TABLE: TABLE: REL #(-1) NAM #(-1) IFT #(5,?) P: SET P:+1 ENDC CHAN R:TDBL TD:PER - PEER LINK IFF #(2,?)=1&#(2,'*') IF NO MULTI-TASKING WORD 0 TD:FLG - FLAG WORD ENDC IFT #(2,?)=1&#(2,'*') IF MULTI-TASKING WORD :8000 TD:FLG - MULTI-TASKING BIT SET ENDC A: SET 1 DEFAULT CONCURRENT EXECUTIONS IFT #(6,?) A: SET #(6) USER SPECIFIED CONCURRENT EXECUTIONS P: SET P:+1 ENDC IFT #(7,?) WORD #(7) TD:USA - USER SPECIFIED CONCURRENCY SEMAPHORE ADDRESS P: SET P:+1 ENDC IFF #(7,?) WORD $+6 TD:USA - DEFAULT CONCURRENCY SEMAPHORE ADDRESS ENDC WORD A: TD:NOX - CONCURRENT EXECUTIONS IFF #(2,?)=1&#(2,'*') IF NO MULTI-TASKING WORD #(2) TD:Y - Y SCRATCHPAD ALLOCATION ENDC IFT #(2,?)=1&#(2,'*') IF MULTI-TASKIN9 G TASK #(-1) DECLARE TASK TEMPLATE #(-1) TD:Y - POINTER TO TEMPLATE LOAD R:TMPL TEMPLATE PROCESSOR ENDC WORD #(3) TD:AD - STACK ADDRESS WORD #(4) TD:AMT - STACK ALLOCATION WORD #(1) TD:P - EXECUTION ADDRESS WORD A: TD:CSA - DEFAULT CONCURRENCY SEMAPHORE RES 2,0 WORDS 9-10 RESERVED WORD TD:CHK TD:CKW - TDB CHECKWORD IFF L:>=P: NOTE E,'INCORRECT NUMBER OF PARAMETERS' ENDC ORG O: ENDC ENDM TITL .... T I C K : ( A ) M A C R O ** MACRO: TICK: & TICK:A * GENERATE A PARAMETER BLOCK FOR TICK CLOCK SERVICES * * CALLING SEQUENCE2 * LABEL TICK2(A) TIMAD,SEMA4,TICKS,(ENVID) *  TICK:(A) LABEL,TIMID,SEMA4,TICKS,(ENVID) (ARCHAIC) * * LABEL = ADDRESS OF PARAMETER BDOCK * TIMID = TIMER IDENTIFIER * SEMA4 = ADDRESS OF SEMAPHORE * TICKS = TICK COUNT * ENVID = ENVIRONMENT IDENTIFIER ** SPACE 2 TICK:  MACRO TICK:A MACENT P: SET 3 L: SET #(?) IFF #(-1,?) L: SET L:-1 #(1) TICK:: #(2),#(3),#(4),#(5) ENDC * TICK:: MACENT IFT #(-1,?) IFT #(4,?) P: SET P:+1 ENDC WORD #(4)+0 ENVIRONMENT IDENTIFIER WORD #(1) TIMER IDENTIFIER WORD #(2) SEMAPHORE WORD #(3) TICK COUNT IFF L:>=P: NOTE E,'INCORRECT NUMBER OF PARAMETERS' ENDC ENDC ENDM TITL .... W A L L : ( A ) M A C R O ** MACRO: WALL: & WALL:A * GENERATE A PARAMETER BLOCK FOR WALL CLOCK SERVICES * * CALLING SEQUENCE: * LABEL WALL:(A) TIMID,SEMA4,HITOD,LOTOD,(ENVID) * WALL:(A) LABEL,TIMID,SEMA4,HITOD,LOTOD,(ENVID) (ARCHAIC) * * LABEL = ADDRESS OF PARAMETER BLOCK * TIMID = TIMER IDENTIFIER * SEMA4 = ADDRESS OF SEMAPHORE * HITOD = HI-ORDER TIME OF DAY * LOTOD = LO-ORDER TIME OF DAY * ENVID = ENVIRONMENT IDENTIFIER ** SPACE 2 WALL: MACRO WALL:A MACENT P: SET 4 L: SET #(?) IFF #(-1,?) L: SET L:-1 #(1) WALL:: #(2),#(3),#(4),#(5),#(6) ENDC * WALL:: MACENT IFT #(-1,?) IFT #(5,?) P: SET P:+1 ENDC WORD #(5)+0 ENVIRONMENT IDENTIFIER WORD #(1) TIMER IDENTIFIER WORD #(2) SEMAPHORE ADDRESS WORD #(3) HI-ORDER TIME OF DAY WORD #(4) LO-ORDER TIME OF DAY IFF L:>=P: NOTE E,'INCORRECT NUMBER OF PARAMETERS' ENDC ENDC ENDM SPACE 3 SAVE END S OF PARAMETER BDOCK * TIMID = TIMER ID TITL I O S . M A C - IOS GENERAL EQUATES & MACROS (93420-13-D0) UA:CHK EQU :F09E * UAT:AA LABEL START UNIT ASSIGNMENT TABLE * * UAT:EE LUN,ADDRESS UAT ENTRY * * UAT:ZZ END OF UAT * *  LABEL LABEL TO ASSOCIATED WITH UAT * LUN LOGICAL UNIT NAME * ADDRESS ADDRESS OF DIB OR FCB * * UAT:AA MACRO MACLAB LPOOL O: SET $ SHARABLE TABLE: TABLE: REL LOAD I:IO WORD UA:CHK #1 WORD UAT:ND-$-4%-1 RES 3,0 UAT:NV SET 0 ENDM * UAT:EE MACRO WORD #1 S: SYMATT #2 IFT S:&UNDBT: EXTR #2 ENDC WORD #2 UAT:NV SET UAT:NV+1 ENDM * UAT:ZZ MACRO S: SYMATT #1 IFF S:&NULL:  IFT #(1,'FORTRAN')>0 SNAM UAT:ND ENDC ENDC UAT:ND EQU $ IFF S:&NULL: IFT #(1,'FORTRAN')>0 RES UAT:NV*2,0 ENDC ENDC ORG O: ENDM ***************************************: ********************* * BUFFER POOL GENERATION MACROS + * ! !  * * CALLING SEQUENCE * * BUF:R #1,#2  * * * * #1 - NUMBER OF BUFFERS  * * #2 - L=NGTH OF THE BUFFER * ************************************************************ * BUF:LN EQU 512 * * BUF:R - GENERATE BUFFER POOL * BUF:R MACRO LPOOL O: SET $ SFM: REL SHARABLE SFM: LOAD FM:SFM NAM BUF:N NAM BUF:MAX L: SET BUF:LN IFT #(2)+0>BUF:LN L: SET #(2) ENDC BUF:MAX WORD L: BUF:N EQU #1 P: SET BUF:N BUF:LOOP MACENT IFT P: CHAN BUF: CHAIN LINK CHAN BUF:: STATIC LINK RES 4,0 WORD BUF:LN LENGTH RES 2,0 SECTOR WORD L: RES 6,0 RES L:/2+8,0 BUFFER LENGTH P: SET P:-1 BUF:LOOP ENDC IFF P: ORG O: P: SET 1 ENDC ENDM * IOB:A IOB,LUN,OPC,OPM,BCT,BUF,CGI,OPO * * * IOB LABEL TO BE ASSIGNED TO START OF IOB * LUN LOGICAL UNIT NAME OR NUMBER * OPC OPERATION CODE * RE: EQU 0 READ * AR: EQU  1 WRITE * PO: EQU 2 POSITION * FU: EQU 3 FUNCTION * OPM OPERATION MODIFIER *  UF: EQU 0 UNFORMATTED * FA: EQU 1 FORMATTED ALPHANUMERIC * FB: EQU 2 FORMATTED BINARY *  DA: EQU 3 DIRECT FORMATTED ALPHA * DB: EQU 4 DIRECT FORMATTED BINARY * WP: EQU 5 WRITE PROMPT * * BCT REQUESTED BYTE COUNT * BUF I/O BUFFER ADDRESS * CGI ADDRESS OF CURRENT GRANULE INDEX OR ZERO * OPO OPTIONAL MODE OF OPERATION * SB: EQU 11 START IN SECOND BYTE OF BUFFER * * MACRO IOB:A  IFT #?<7 NOTE 5,'NOT ENOUGH PARAMETERS' ENDC #1 WORD #2 LOGICAL UNIT NAME /NUMBER WORD 0  DEVICE DEDICATION NUMBER WORD #7 OPTIONAL ADDRESS OF CGI S: SYMVAL #8 IFF S:=0 IFT #8>15 S: SET  #8 VALUE, NOT BIT EQUATE ENDC IFF #8>15 S: SET 1%#8 ENDC ENDC WORD #3%4+#4+S: WORD #5 BYTE COUNT WORD #6 I/O BUFFER ADDRESS WORD 0 ACTUAL COUNT PROCESSED WORD 0  SOFTWARE STATUS ENDM TITL * INPUT/OUTPUT BLOCK (IOB) * IO:LUN EQU 0 LOGICAL UNIT NAME/NUMBER IO:DDN EQU 1 DEVICE DEDICATION NUMBER IO:CRI EQU 2 ADDRESS OF CURRENT RECORD INDEX IO:CFI EQU IO:CRI CURRENT FILE INDEX POINTER IO:FC EQU 3 FUNCTION CODE IO:BCT EQU 4 BYTE COUNT REQUESTED IO:BUF EQU 5 I/O BUFFER ADDRESS IO:ACT EQU 6 ACTUAL COUNT PROCESSED IO:ST EQU 7 SOFTWARE STATUS * * FUNCTION CODE BITS * * BITS 15-6 MODE OF OPERATION ER: EQU 12 DON'T CALL DOIO ERROR ROUTINE,GO TO USER SB: EQU 11 START ON SECOND BYTE OF BUFFER HA: EQU 10  USED BY HALT I/O FUNCTION. UD: EQU 9 UN-DEDICATE DEVICE AFTER PERFORMING I/O * ER:V EQU 1%ER: SB:V EQU 1%SB: * * RE: EQU 0 READ WR: EQU 1 WRITE PO: EQU 2 POSITION FU: EQU 3 FUNCTION * UNKNOWN OPEN: EQU 4 ;  OPEN CLOSE: EQU 5 CLOSE * ASYNCH MUX ONLY SBU: EQU 4 SEND BUFFER SNL: EQU 6 SEND END-OF-LINE SEQUENCE ('SEND NEW LINE') SBK: EQU 5 SEND 'BREAK' SCC: EQU 7 SEND CONTROL CHARACTER WMR: EQU :C WRITE MODEM REGISTER WOT: EQU :D WRITE OPTION TABLE WSC: EQU :E WRITE SPECIAL CHAR TABLE * * * BITS 3-0 OPERATION MODIFIER * READ & WRITE UF: EQU 0  UNFORMATTED FA: EQU :B FORMATTED ALPHANUMERIC FB: EQU :A FORMATTED BINARY FS: EQU :8 FORMATTED STREAM WP: EQU 1 WRITE PROMPT DA: EQU :F DIRECT ALPHANUMERIC DB: EQU 6 DIRECT BINARY DS: EQU :C DIRECT STREAM BS: EQU FS: SEQUENTIAL STREAM BINARY SA: EQU :9 SEQUENTIAL STREAM ALPHA RB: EQU FB: SEQUENTIAL RECORD BINARY RA: EQU FA: SEQUENTIAL RECORD ALPHA DSB: EQU DS: DIRECT STREAM BINARY DSA: EQU :D DIRECT STREAM ALPHA DRB: EQU :E DIRECT RECORD BINARY DRA: EQU DA: DIRECT RECORD ALPHA * * FOR POSITION * * FOR POSITION (PO:) * FAB: EQU 0 FILE POINTER ABSOLUTE BYTES FRB: EQU  1 FILE POINTER RELATIVE BYTES WAB: EQU 2 WRITE POINTER ABSOLUTE BYTES WRB: EQU 3  WRITE POINTER RELATIVE BYTES AR: EQU 4 ABSOLUTE RECORDS RR: EQU 5 RELATIVE RECORDS RFP: EQU 6 READ FILE POINTER RWP: EQU 7 READ WRITE POINTER * MAGTAPE ONLY SBF: EQU 8  SKIP BLOCKS FORWARD SBR: EQU 9 SKIP BLOCKS REVERSE SKF: EQU 10 SKIP FILES FORWARD * * FOR FUNCTION * OP: EQU 0  OPEN CL: EQU 1 CLOSE PL: EQU 2 PUNCH LEADER WF: EQU 3 WRITE FILE MARK DF:  EQU 4 DEVICE DEPENDENT FUNCTION SS: EQU 5 SELECT HARDWARE STATUS TF: EQU 6 TOP OF FORM SC: EQU 7 SOFTWARE CONTROL * MAGTAPE ONLY RWD: EQU 8 REWIND OFL: EQU 9 OFF-LINE EBL: EQU 10 ERASE BLOCK EFM: EQU 11 ERASE FILE MARK EOV: EQU 12 DO END OF VOLUME UBF: EQU 13 USER SUPPLIED BUFFER FUNCTION MOD. * * FOR OPEN BL: EQU 1 BLOCK I/O * * FOR ASYNCH MUX * ROT: EQU 1 READ OPTION TABLE CM: EQU 1 SPECIAL CHARACTER MATCH OPTION (ADD TO RBF:) RMR: EQU 2 READ MODEM REGISTER RM: EQU 2 RANGE MATCH OPTION (ADD TO RBF:) RBF: EQU 4 READ BUFFER AE: EQU 8 FIRMWARE AUTO ECHO OPTION (ADD TO RBF:) * TO: EQU 7 BIT NUMBER IN IO:FC TO INHIBIT HARDWARE WRITE ON WOT, WSC ID: EQU 7 BIT NUMBER IN IO:FC TO INHIBIT DATA TRANSFER ON RBF * * * SOFTWARE STATUS * IOERR: EQU 15 ERROR CAUSED I/O TERMINATION * BITS 13-12 DESCRIBE CONCURRENT CONDITIONS TFORM: EQU 1%12 TOP OF FORM BFORM: EQU 2%12 BOTTOM OF FORM * RETRY: EQU 11 A RETRY WAS REQUIRED TO PERFORM THE OPERAT EOM: EQU 10 END OF MEDIUM ENCOUNTERED DURING OPERATION DELDA: EQU 9 DELETED DATA READ FROM FLOPPY DISK * ASYNCH MUX ONLY RANGM: EQU 8 RANGE MATCH OCCURRED ON RECEIVE LBK: EQU 7 TRANSMIT STATUS ONLY, LINE BREAK SEEN BY RECV HALF CHARM: EQU 7 CHARACTER MATCH OCCURRED ON RECEIVE * * IOS4 ERROR CODES * BITS 0-5 OF STATUS WORD CONTAIN LOWER BYTE OF ORROR CODE * BIT 6 SET FOR UNRECOVERABLE * ERROR CLASSES ER:IOR EQU 0  I/O RECOVERABLE ER:IOU EQU 1 I/O UNRECOVERABLE SPACE 3 * NORMAL RETURN CODES NORML: EQU 0 <  NORMAL I/O COMPLETION EOF: EQU 1 END OF FILE (GOING FORWARD) BOF: SET 3 TITL *  MACROS FOR IOS4 ERROR CODES * IOR: FOR RECOVERABLE * IOU: FOR UNRECOVERABLE * MACRO IOU: #1 EQU 1%6+#2 ENDM MACRO IOR: #1 EQU #2 ENDM * * ERROR CODES * IOR: HALTD:,1 I/O HALTED IOR: NORDY:,2 NOT READY IOR: WRTPR:,3 WRITE PROTECT IOR: TIMOT:,4 TIME OUT IOR: PWRFL:,5 POWER FAIL & UNABLE TO RECOVER IOR: DDTNA:,6 DDT NOT AVAILABLE,CFM ONLY IOR: VOLNU:,7 VOLUME NOT ON UNIT IOR: VOLNF:,8 VOLUME NOT FOUND IOR: NOREL:,9 LOGICAL UNIT NOT RELEASED IOR: AGAIN:,10 TRY AGAIN IOR: MNTAPE:,11 MOUNT NEXT VOLUME (MAG TAPE ONLY) * IOU: CKSUM:,1 BAD CHECK SUM IOU: UNDEV:,2 UNASSIGNED DEVICE IOU: NIUAT:,3 LUN NOT IN UAT IOU: REOM:,4 REACHED END OF MEDIA IOU: HARDW:,5 HARDWARE ERROR IOU: ILLOP:,6 ILLEGAL OPERATION FOR THIS DEVICE IOU: NEMEM:,7 NON-EXISTANT MEMORY ADDR IOU: INRTX:,8 MEMORY ADDR IN SYSTEM ARTEA IOU: DIRFL:,9 DIRECTORY FULL IOU: NOLAB:,10 DISK NOT LABELED IOU: FAOV:,11 FILE ADDR OVERFLOW IOU: ILLAU:,12 ILLEGAL AU IOU: AUNF:,13 AU NOT FOUND IOU: WDEOF:,14 WRITE DIRECT HIT EOF IOU: NOTXT:,15 NOT EXTENDABLE IOU: ILLFA:,16 ILLEGAL FILE ADDR IOU: ALOFU:,17 ALLOCATION TABLE FOULED UP IOU: SYSUG:,18 SYSTEM USAGE ONLY IOU: FCBCH:,19 FCB CHAIN BAD IOU: FILEO:,20 FILE OPEN IOU: NOPEN:,21 FILE NOT OPEN IOU: FNOP:,21 FILE NOT OPEN IOU:  OONWR:,22 OLD OR NEW WRONG, CFM ONLY IOU: ILLFP:,22 ILLEGAL FILE POINTER IOU: NOUNT:,23 UNIT NOT GIVEN IOU: UNFCB:,24 UNASSIGNED FCB IOU: BUFWP:,25 BUFFER HAS WRITE PENDING IOU: NOAU:,26 NO MORE FREE AU'S IOU: BADTC:,27 BAD TYPE CODE IOU: ABORT:,28 ABORT IOU: LDSR:,29 DSR NOT UP (ASYNCH MUX ONLY) IOU: BRKDT:,30 'BREAK' DETECTED ON RECEIVE (ASYNCH MUX ONLY) IOU: PE:,31 PARITY ERROR ON RECEIVE (ASYNCH MUX ONLY) IOU: OE:,32 OVERRUN ERROR ON RECEIVE (ASYNCH MUX ONLY) IOU: RTXER:,63 RTX ERROR * * I/O ERROR BLOCK EQUATES * IOE:AC EQU 0 ACB ADDR OF ERROR ACTIVITY IOE:EC EQU 1 ERROR CODE IOE:K EQU 2 K-REG OF ACTIVITY WITH ERROR IOE:DI EQU 3 DIB ADDR IOE:TI EQU 4 TIB ADDR TITL I:LOAD & I:LD410S PARAMETER BLOCK EQUATES & MACROS * PARAMETER BLOCK EQUATES * LD:LUN EQU 0 LOAD FILE LUN LD:BUF EQU 1 FILE INPUT BUFFER ADDRESS LD:OFF EQU 2 RELOCATION OFFSET LD:HLL EQU 3 HIGH LOAD LIMIT LD:LLL EQU 4 LOW LOAD LIMIT LD:XAD EQU 5 EXECUTION ADDRESS LD:HAD EQU 6 HIGHEST ADDRESS LOADED LD:FLG EQU 7 FLAG WORD LD:SDA EQU 8 SLAVE DEVICE ADDRESS (410S ONLY) LD:SIZE EQU 9 SIZE OF LOAD SERVICE PARAMETER BLOCK * * LD:FLG (FLAG WORD) EQUATES * LDF:ERR EQU 15 ERROR OCCURRED DURING LOAD LDF:IOE EQU 14 I/O ERROR LDF:BTC EQU 13 BAD TYPE CODE ERROR LDF:ADE EQU 12 ADDRESSING ERROR LDF:NOS EQU 11 NO 410S AT SPECIFIED DEVICE ADDRESS (410S ONLY) LDF:MAE EQU 10 MEMORY ADDRESS ERROR (16-32K) (410S ONLY) * LDF:PM EQU  2 PUBLIC MEMORY IN UPPER 32K (410S ONLY) LDF:EXA EQU 1 EXECUTION ADDRESS SPECIFIED (410S ONLY) LDF:EX EQU 0 INITIATE 410S EXECUTION (410S ONLY) TITL * PARAMETER BLOCK GENERATION MACRO * * LABEL LOAD: LUN,OFF,(BUF),(HLL),(LLL),(XAD= ),(FLG),(SLV) * LOAD: MACRO WORD #(1) LD:LUN .. LUN WORD #(3)+0 LD:BUF .. INPUT BUFFER ADDRESS WORD #(2) LD:OFF .. RELOCATION OFFSET WORD #(4)+0 LD:HLL .. HIGH LOAD LIMIT WORD #(5)+0 LD:LLL .. LOW LOAD LIMIT WORD #(6)+0 LD:XAD .. EXECUTION ADDRESS (410S ONLY) WORD 0 LD:HAD .. HIGH LOAD ADDRESS/NEXT FREE ADDRESS WORD #(7)+0 LD:FLG .. FLAG WORD (410S ONLY) IFT #(8,?) WORD #(8) LD:SLV .. USER SLAVE DEVICE ADDRESS (410S ONLY) ENDC IFF #(8,?) WORD :F0 LD:SLV .. DEFAULT SLAVE DEVICE ADDRESS (410S ONLY) ENDC * S: SET #(?)<2 S: SET #(?)>8++S: IFT S: NOTE E,'INCORRECT NUMBER OF PARAMETERS' ENDC ENDM SPACE 2 SAVE END ET LD:HLL EQU 3 HIGH LOAD LIMIT LD:LLL EQU 4 LOW LOAD LIMIT LD:XAD EQU 5  TITL I O S D . M A C - IOS DEVELOPMENT EQUATES & MACROS (93420-14-D1) * I/O ERROR BLOCK EQUATES * IOE:AC EQU 0  ACB ADDR OF ERROR ACTIVITY IOE:EC EQU 1 ERROR CODE IOE:K EQU 2 K-REG OF ACTIVITY WITH ERROR IOE:DI EQU 3 DIB ADDR IOE:TI EQU 4 TIB ADDR TITL DIB EQUATES * DEVICE INFORMATION BLOCK (DIB) * DI:PER EQU 0 PEER POINTER DI:FLG EQU 1 DIB FLAGWORD DI:CIB EQU 2 MASTER CIB ADDRESS DI:FCB EQU 3 FILE CONTROL BLOCK LIST HEAD DI:NAM EQU 4 DEVICE NAME (4 CHARACTERS) DI:DN EQU 6 DEDICATION NUMBER DI:DS EQU 7 DEDICATION SEMAPHORE DI:SPB EQU 8 WATCHDOG TIMER -- NUMBER OF SHIFTS PER BYT DI:WBT EQU 9 WATCHDOG TIMER -- BASE TIME DI:DSW EQU 10 DEVICE SPECIFICATION WORDS (10-13) *  14-15 RESERVED * * DIB FLAGWORD * EQU 15 ALWAYS ZERO FOR DIB DIF:ND EQU 14 NO DEDICATION ON THIS DEVICE DIF:DP EQU 13 DI:DDN IS A POINTER TO A DEDICATION NUMBER DIF:NT EQU 12 NO TIMER FOR READ DIF:RT EQU 11 RETRY ON POWER FAIL DIF:FC EQU 10 FORM CONTROL DIF:OP EQU 9 DEVICE IS OPEN. DIF:UI EQU 1 DEVICE SUPPORTS UNSOLICITED INPUT DIF:BF EQU 0  BUFFER FLAG FOR CARD READER DIF:MT EQU 0 DISK IS MOUNTED DIF:NM EQU 1 NO AUTOMATIC MOUNT ON DISK TITL * DEVICE INFORMATION BLOCK FOR CHARACTER DEVICES * DI:CPL EQU 16 CHARACTERS PER LINE DI:LPP EQU 17 BOTTOM OF FORM COUNT/LINES PER PAGE DI:BMI EQU 18 BRANCH/MODE WORD FOR INPUT DI:BMO EQU 19 BRANCH/MODE WORD FOR OUTPUT DI:EOL EQU 20 POINTER TO END OF LINE SEQUENCE DI:TOF EQU 21 POINTER TO TOP OF FORM SEQUENCE DI:ERM EQU 22 ERROR MASK FOR STATUS DI:LC EQU 23 LINE COUNTER DI:EDT EQU 24 EDIT CHARACTER DI:ELI EQU 25 END OF LINE SEQUENCE FOR INPUT DI:BUF EQU 26 POINTER TO 2 WORD INTERNAL BUFFER DI:PU EQU 27 POINTER TO POWER UP SEQUENCE * * DEVICE INFORMATION BLOCK FOR CARD READER * *I:CPL EQU 16 CHARACTERS PER CARD *I:LPP EQU 17 =0, NOPAGES ON CARD READER *I:BMI EQU 18 BRANCH/MODE WORD FOR INPUT DI:CBA EQU 19 CURRENT BUFFER ADDR DI:ABA EQU 20 ALTERN> ATE BUFFER ADDR, =0 FOR NO DOBLE BUF DI:TRT EQU 21 TRANSLATION TABLE ADDR *I:ERM EQU 22 ERROR MASK FOR STATSUS TITL * DEVICE INFORMATION BLOCK FOR DISKS * DI:BPS EQU 16 BYTES PER SECTOR DI:SPT EQU  17 SECTORS PER TRACK DI:TPC EQU 18 TRACKS PER CYLINDER DI:CPD EQU 19 CYLINDERS PER DISK DI:SPA EQU 20 SECTORS PER ALLOCATION UNIT DI:CYL EQU 21 CUURRENT CYLINDER FOR FLOPPY DI:TRY EQU 22 HARD/RATE ERROR RETYR COUNT DI:VTS EQU 23 VTOC SEMAPHORE DI:ATS EQU 24 ALLOCATION TABLE SEMAPHORE DI:HOS EQU 25 HEAD OFFSET DI:HSA EQU 26 HEAD SEMAPHORE ADDR DI:SCS EQU 27 SEEK COMPLETE SEMAPHORE ADDR DI:FLP EQU 28 FLIST POINTER IN AU DI:FLN EQU 29  FLIST LENGTH IN SECTORS DI:ALO EQU 30 ALLOCATION TABLE SECTOR ADDR DI:APD EQU 31 AU PER DISK DI:BPA EQU 32 BYTES PER AU DI:SBF EQU 33 SECTORS PER BUFFER DI:SAU EQU 34 DI:BIT EQU 35  BIT # DI:CUR EQU 36 CURRENT COUNT DI:REQ EQU 37 REQUESTED NUMBER OF AUS DI:FND EQU 38 NUMBER FOUND DI:FAU EQU 39 FOUND AU START * * DEVICE INFORMATION BLOCK FOR MINI-FLOPPY * DI:BMW EQU 21 DI:INT EQU 40 DI:SCT EQU 41 DI:SEC EQU 42 * * DEVICE INFORMATION BLOCK FOR MAGTAPE * DI:BLKCT EQU  16 BLOCK COUNT DI:SERV EQU 17 ADDRESS OF MAGTAPE SERVICE ROUTINES DI:BMR EQU 20 BRANCH/MODE WORD REWIND DI:OMW EQU 21  ORIGINAL MODE WORD DI:MASK EQU 24 ERROR MASK DI:FLAG EQU 25 ERROR FLAGS DI:THWS EQU 26 TEMPORARY H/W STATUS TITL *  DEVICE INFORMATION BLOCK FOR ASYNCH MUX * DI:FIO EQU 16 ADDRESS OF FORMATTED I/O ROUTINE DI:CNFG EQU 17 ADDRESS OF CONFIGURATION ROUTINE * * FLAGWORD BITS FOR ASYNCH MUX DIB * DIF:DC EQU 3 SET FOR DYNAMIC CONFIGURATION DIF:FA EQU 4 SET IF FA: HANDLER LOADED TITL CIB EQUATES * CONTROLLER INFORMATION BLOCK (CIB) * CI:PER EQU 0 PEER POINTER CI:FLG EQU 1 CIB FLAGWORD CI:MST EQU 2 MASTER LINK CI:DIB EQU 3 SUBORDINATE LINK (DIB LIST HEAD) CI:PRI EQU 4 REQUEST PRIORITY CI:DA EQU 5 DEVICE ADDRESS CI:IV EQU 6 DEVICE INTERRUPT VECTOR LOCATION CI:RD EQU 8 ENTRY POINT TO READ CI:WRT EQU 9 ENTRY POINT TO WRITE CI:POS EQU 10 ENTRY POINT TO POSITION CI:FUN EQU 11 ENTRY POINT TO FUNCTION CI:EOB EQU 12 12-15 EOB SEQUENCE * JST R:SA12 USE SYSTEM STACK * COPY TIB,Y TIB ADDR OBVIOUSLY * JMP  *$+1 * DATA I:EOB EOB ADDR CI:T1 EQU 16 TEMP CI:T2 EQU 17 TEMP CI:APR EQU 18 SAVEED PRIORITY OF ACTIVITY USING CIB CI:TIB EQU 19 TIB ADDR CI:USM EQU 20 CONTROLLER USAGE SEMAPHORE CI:TIM EQU 21 WATCH DOG TIMER CALCULATED INTERVAL CI:CSM EQU 22 COMPLETION SEMAPHORE CI:CFL EQU 23 COMPLETION FLAG * * CIB FLAGWORD * CIF:PU EQU 14 POWER UP ? OCCURED CIF:TO EQU 13 TIME OUT CAUSED COMPLETION CIF:OO EQU 12 OVERLAPPED OPERATIONS TITL *  CONTROLLER INFORMATION BLOCK FOR DISK * CI:RAT EQU 24 RATE ERROR RETRY COUNT CI:HRD EQU 25 HARD ERROR RETRY COUNTER CI:OPC EQU 27 OP CODE CI:DCB EQU CI:OPC START OF DISK CONTROL BLOCK CI:UNT EQU 28 UNIT CI:CYL EQU 29 CYLINDER CI:SEK EQU 30 RELATIVE SEEK COUNT CI:SEC EQU  31 SECTOR CI:CNT EQU 32 WORD COUNT CI:BUF EQU 33 BUFFER ADDR CI:IEA EQU 34  INTERUPT ENABLE & ADDR * * CONTROLLER INFORMATION BLOCK FOR HIGH CAPACITY DISK * CI:IOB EQU 35  NEXT IOB ADDR CI:WP EQU 36 WORDS PROCESSED CI:CST EQU 37 CONTROLLER SATTUS CI:DST EQU 38  DRIVE STATUS CI:DIV EQU 39 INTERUPT VECTOR, JSK CI:EOB CI:SSA EQU 40 SEEK COMPLETE SEMAPHORE ADDR TITL * CONTROLLER INFORMATION BLOCK FOR FLOPPY * CI:FWP EQU 35 WORDS PROCESSED CI:FST EQU  36 STATUS CI:FIV EQU 37 INTERUPT VECTOR CI:FT1 EQU 38 TEMP CI:EIV EQU 39  ERROR INTERUPT VECTOR * * CONTROLLER INFORMATION BLOCK FOR MINI-FLOPPY * CI:CLK EQU 27 * * CONTROLLER INFORMATION BLOCK FOR MAGTAPE * CI:RTY EQU 24 RATE ERROR RETRY COUNT CI:WCNT EQU 26 WAIT RETRY COUNT CI:TIC EQU 27 WAIT TIMER VALUE CI:MODE EQU 28 LAST PICO MODE WORD * * CONTROLLER INFORMATION BLOCK FOR ASYNCH MUX * CI:OPT EQU 24 ADDRESS OF CHANNEL OPTION TABLE OP:SCT EQU 2 OFFSET OF SPEC CHAR TABLE IN CIB EXTENSION TITL TIB EQUATES * TEMPORARY INPUT BLOCK (TIB) - USER'S STACK * TI:IOB EQU 0 IOB ADDRESS TI:FCB EQU 1 FCB ADDR TI:DIB EQU 2  DIB ADDRESS TI:CIB EQU 3 CIB ADDRESS TI:BCT EQU 4 REQUESTED BYTE COUNT TI:BUF EQU  5 BUFFER ADDRESS TI:FC EQU 6 FUNCTION CODE TI:SOF EQU 7 SOFTWARE STATUS TI:PRI EQU 13 TEMPOARY SAVE FOR ACTIVITIES PRIORITY. * * TIB ON ENTRY TO HANDLERS * TI:CRI EQU 12 ADDR OF CURRENT RECORD INDEX * * TIB FOR DIO * TI:TIM EQU 8 WATCHDOG TIMER VAQLUE TI:ACT EQU 9 ACTUAL BYTE COUNT TI:BMW EQU 10 BRANCH/MODE WORD TI:IBF EQU 11 INTERMEDIATE BUFFER ADDR * *  TIB FOR DISKS * *TI:TIM EQU 8 WATCHDOG TIMER VAQLUE TI:SEC EQU 9 SECTOR NUMBER TI:TRK EQU 10 TRACK NUMBER (HEAD NUMBER) TI:CYL EQU 11 CYLINDER NUMBER * * TIB FOR MAGTAPES * TI:FCSS EQU 21 FILE MANAGER FUNCTION CODE SAVE TI:BCSS EQU 22 BLOCK COUNT SAVE * * TIB FOR ASYNCH MUX * TI:UTL EQU TI:CRI UTILITY PARAMETER TI:OPT EQU 18 ADDR OF OPTION TABLE GOES HERE TI:SCT EQU 19 ADDR OF SPECIAL CHAR TABLE GOES HERE TI:GCB EQU 20 FLAG SET IF CIB OCCUPIED TI:KSAVE EQU 21 SAVE K REG HERE ON ENTRY TI:SYSTM EQU 22 NON-ZERO TO ALLOW TIMOUT * * TIB ON RETURN FROM HANDLERS * *TI:ACT EQU 9 ACTUAL BYTE COUNT TI:HWS EQU 10 HARDWARE STATUS (TWO WORDS) TI:H@ W2 EQU 11 HARDWARE STATUS WORD 2 * * TIB EQUATES * TI:T1 EQU 14 TEMP CELL TI:T2 EQU 15  TEMP CELL TI:T3 EQU 16 TEMP CELL TI:T4 EQU 17 TEMP CELL TI:QUO EQU 18 RELATIVE AU TI:REM EQU 19 REMIANDER OF SECTOR OR AU CALCULATION TI:RAU EQU 20 EXTENT RELATIVE AU BASE TI:PAU EQU 21 EXTENT PHYSICAL AU BASE TI:NAU EQU 22 NUMBER OF AUS IN EXTENT TI:FP1 EQU 23 WORKING FILE POINTER TI:FP2 EQU 24 WORKING FILE POINTER TI:WRQ EQU 25 WORKING REQUEST COUNT TI:PL EQU TI:WRQ PARAMETER LIST ADDR TI:WAC EQU 26 WORKING ACTUAL COUNT TI:FNO EQU TI:WAC FNO TI:WSF EQU 27 WOKING SOFTWARE STATUS TI:UBX EQU 28 USERS BUFFER INDEX TI:CAU EQU 29 CURRENT AU TI:CNX EQU 30 CURRENT INDEX TI:T5 EQU 31 TEMP CELL TI:T6 EQU 32 TEMP CELL TI:FCS EQU 33 FUNCTION CODE SAVE TI:BCS EQU 34 BYTE COUNT SAVE TI:BUS EQU 35 BUFFER ADDR SAVE TIBLN: EQU 36 TIB LENGTH TITL DIO DEVICE EQUATES * DISTRIBUTED I/O * IODAD: SET :F IOD ADDRESS (MAY ONLY BE :C,:D,:E OR :F) IODIB: SET :C0 IOD INTERRUPT ADDRESS BASE * CRCN: SET 0 CARD READER CHANNEL NUMBER CRDA: SET  IODAD:%3+CRCN:%1 . DEVICE ADDRESS CRIA: SET CRCN:%3+IODIB: . INTERRUPT ADDRESS * MTCN: SET 1 MAGNETIC TAPE CONTROLLER CHANNEL NUMBER MTDA: SET IODAD:%3+MTCN:%1 . DEVICE ADDRESS MTIA: SET MTCN:%3+IODIB: . INTERRUPT ADDRESS * TVCN: SET 2 CRT  CHANNEL NUMBER TVDA: SET IODAD:%3+TVCN:%1 . DEVICE ADDRESS TVIA: SET TVCN:%3+IODIB: .  INTERRUPT ADDRESS * IECN: SET 3 IEEE INTELLIGENT CABLE CHANNEL NUMBER IEDA: SET IODAD:%3+IECN:%1 . DEVICE ADDRESS IEIA: SET IECN:%3+IODIB: . INTERRUPT ADDRESS * TYCN: SET  4 TELETYPEWRITER CHANNEL NUMBER TYDA: SET IODAD:%3+TYCN:%1 . DEVICE ADDRESS TYIA: SET TYCN:%3+IODIB: . INTERRUPT ADDRESS * PRCN: SET 5 HIGH SPEED PAPER TAPE READER CHANNEL NUMBER PRDA: SET IODAD:%3+PRCN:%1 . DEVICE ADDRESS PRIA: SET PRCN:%3+IODIB: .  INTERRUPT ADDRESS * PPCN: SET 6 HIGH SPEED PAPER TAPE PUNCH CHANNEL NUMBER PPDA: SET IODAD:%3+PPCN:%1 .  DEVICE ADDRESS PPIA: SET PPCN:%3+IODIB: . INTERRUPT ADDRESS * LPCN: SET 7 LINE PRINTER CHANNEL NUMBER LPDA: SET IODAD:%3+LPCN:%1 . DEVICE ADDRESS LPIA: SET LPCN:%3+IODIB: . INTERRUPT ADDRESS TITL NON-DIO DEVICE EQUATES * NON-DIO * DFCN: SET :11 DISK, FLOPPY DFDA: SET DFCN:%3 . DEVICE ADDRESS * DMCN: SET :14 DISK, MEDIUM CAPACITY DMDA: SET DMCN:%3 . DEVICE ADDRESS * DHCN: SET :15 DISK, HIGH CAPACITY DHDA: SET A DHCN:%3 . DEVICE ADDRESS TITL DIB & CIB GENERATION SUPPORT EQUATES & MACROS * MISCELLANEOUS EQUATES * CI:EOB EQU :C R:SA12 EQU :3F LF: EQU :A FF: EQU :C CR: EQU :D * * BUILD A WORD OF BITS MACRO * BIT:WORD MACRO WORD MACLAB BIT:EQU MACENT EQU MACLAB BIT:SET MACENT SET MACLAB BIT:SET SET 0 * BIT:LOOP MACENT NULL IFT #(1,?) BIT:SET SET 1//#(1)++BIT:SET BIT:LOOP #(2),#(3),#(4),#(5),#(6),#(7),#(8) ENDC IFF '##(0,1,1)'='N' #(-1) #(0) BIT:SET ENDC ENDM TITL * MACRO FOR INTERUPT SEQUENCE * INT:SEQ MACRO EXTR I:EOB JST  R:SA12 COPY =$-CI:EOB-1,X CIN ADDR JMP *$+1 WORD I:EOB ENDM * * PATCH MACRO * PATCH: MACRO LPOOL O: SET $ IOS: REL #(1) SHARABLE IOS: WORD #(2) ORG O: ENDM * *  STANDARD DIB MACRO * DIB:ST MACRO LOAD D:#(1) ENDM TITL SINGLE/QUAD FLOPPY DISC DIB MACRO * * DIB:DF MACRO 1 DIB:DFQ MACENT 2 LPOOL O: SET $ IOS: REL SHARABLE IOS: NAM D:#(1) D:#(1) CHAN DF: DI:PER WORD 0 DI:FLG EXTR C:#(1,1,3) WORD C:#(1,1,3) DI:CIB HEAD Z:#(1) DI:FCB BYTE '##(1)' DI:NAM RES 1,0 DI:DN WORD 0 DI:DS WORD -7 DI:SPB WORD 2*8 DI:WBT BIT:WORD FA:,FB:,DA:,DB:,UF: BIT:WORD DA:,DB:,UF: BIT:WORD BIT:WORD OP:,CL: RES 2,0 WORD 128*#(0) DI:BPS WORD 26 DI:SPT WORD 1 DI:TPC WORD 77*#(0) DI:CPD WORD 4/#(0) DI:SPA WORD -1 DI:CYL BYTE 3,10 DI:TRY WORD 1 DI:VTS WORD 1 DI:ATS WORD 0 DI:HOS WORD 0 DI:HSA WORD 0 DI:SCS WORD 26*77*#(0)/4/#(0)/2 DI:FLP WORD 77*#(0) DI:FLN WORD 26*77*#(0)/4/#(0)/2 DI:ALO WORD 26*77*#(0)/4/#(0) DI:APD WORD 512 DI:BPA WORD 4/#(0) DI:SBF RES 6,0 ORG O: ENDM TITL MEDIUM/HIGH CAPACITY DISK DIB MACRO *  MEDIUM/HIGH CAPACITY DISK DIB MACRO * DIB:DM MACRO DM DIB:DH MACENT DH LPOOL O: SET $ IOS: REL SHARABLE IOS: MB:  SYMVAL #(2) MEGABYTES IFT #(0,'DM') SPT: SET 12 SECTORS PER TRACK TPC: SET 2  TRACKS PER CYLINDER SPA: SET 1 SECTORS PER AU CPD: SET 203 CYLINDERS PER DISK, 5MB  IFT MB:=10 CPD: SET 406 ENDC ENDC IFT #(0,'DH') TPC: SET 5 SPT: SET 32 CPD: SET 823 SPA: SET 8 IFT MB:=40 CPD: SET 411 SPA: SET 4 ENDC IFT MB:=150 TPC: SET 19 CPD: SET 411 ENDC IFT MB:=300 SPA: SET 16 TPC: SET 19  ENDC ENDC APD: SET SPT:*TPC:*CPD:/SPA: AU'S PEWR DISK NAM D:#(1) D:#(1) CHAN #(0):  DI:PER WORD 0 DI:FLG WORD C:#(1,1,3) DI:CIB HEAD Z:#(1) DI:FCB BYTE '##(1)' DI:NAM RES 1,0 DI:DN WORD 0 DI:DS WORD -9 DI:SPB  WORD 1*8 DI:WBT BIT:WORD FA:,FB:,DA:,DB:,UF: BIT:WORD DA:,DB:,UF: BIT:WORD BIT:WORD OP:,CL:  RES 2,0 WORD 512 DI:BPS WORD SPT: DI:SPT WORD TPC: DI:TPC WORD CPD: DI:CPD WORD SPA: DI:SPA WORD -1 DI:CYL BYTE 3,10  DI:TRY WORD 1 DI:VTS WORD 1 DI:ATS IFT #(0,'DM') BYTE 1,'##(1,4,4)'-'B 0'&1*2 DI:HOS ENDC IFT #(0,'DH') WORD 0 DI:HOS ENDC WORD 0,0 WORD APD:/2 DI:FLP WORD  CPD: DI:FLN WORD APD:/2+CPD: WORD APD: DI:APD WORD 512*SPA: DI:BPA  WORD 1 DI:SBF RES 6,0 ORG O: ENDM TITL MEDIUM/HIGH CAPACITY DISK CIB MACRO *  MEDIUM/HIGH CAPACITY DISK CIB MACRO * CIB:DM MACRO DM CIB:DH MACENT DH LPOOL O: SET $ IOS: REL SHARABLE IOS: DEVAD: SYMVAL #(2) IFT #(2,?)=0 DEVAD: SET #(0)DA: STANDARD DEVICE ADDR ENDC IFT DEVAD:<:20 DEVAD: SET DEVAD:%3 ENDC NAM C:#(1,1,3) EXTR DK:RD,DK:WRT,DK:FUN C:#(1,1,3) CHAN CIB:  CI:PER RES 2,0 HEAD #(0): CI:DIB WORD :7600 CI:PRI WORD DEVAD: WORD 0,0 WORD DK:RD,DK:WRT,0,DK:FUN INT:SEQ CI:EOB RES 4,0 WORD 1  CI:USM WORD 0,0,0 RES 15,0 JSK C:#(1,1,3)+CI:EOB ORG O: ENDM TITL MINI-FLOPPY DIB MACRO * DIB MACRO * * DIB:DP #(1) -- DPXX, XX = UNIT # * DIB:DP MACRO LPOOL O: SET $ IOS: REL SHARABLE IOS: D:#(1) NAM D:#(1) CHAN DP: DI:PER WORD 0 DI:FLG WORD C:DP0 DI:CIB HEAD Z:#(1) DI:FCB BYTE '##(1)' DI:NAM WORD 0 DI:DN WORD 0 DI:DS WORD -5 DI:SPB WORD 2*8 DI:WBT BIT:WORD FA:,FB:,DA:,DB:,UF: DI:DSW(1) - READ BIT:WORD DA:,DB:,UF: DI:DSW(2) - WRITE BIT:WORD DI:DSW(3) - POSITION BIT:WORD OP:,CL: DI:DSW(4) - FUNCTION RES 2,0 RESERVED WORD 128 DI:BPS WORD 16 DI:SPT WORD 1 DI:TPC WORD 35 DI:CPD WORD 4 DI:SPA  WORD :200 DI:BMW WORD :30A DI:TRY WORD 1 DI:VTS WORD 1 DI:ATS WORD 0 DI:HOS WORD 0 DI:HSA WORD 0 DI:SCS WORD 16*35/4/2 DI:FLP WORD 35 DI:FLN WORD 16*35/4/2+35 DI:ALO WORD 16*35/4 DI:APD WORD BUF:LN DI:BPA WORD 4 DI:SBF WORD 0 DI:SAU WORD 0 DI:BIT WORD 0 DI:CUR WORD 0 DI:REQ WORD 0 DI:FND WORD 0 DI:FAU WORD -1 DI:INT WORD 0 DI:SCT WORD 0 DI:SEC ORG O: ENDM TITL MINI-FLOPPY CIB MACRO * CIB MACRO * * CIB:DP #(1) -- DEVICE ADDRESS * #(2) -- INTERRUPT VECTOR ADDRESS * DVICADD: SET :F0 DP DEFAULT DEVICE ADDRESS CHANNEL: SET :0C DP DEFAULT CHANNEL NUMBER INTVECT: SET :F0 DP DEFAULT INTERRUPT VECTOR * CIB:DP MACRO LPOOL O: SET $ IOS: REL SHARABLE IOS: EXTR DP:RD,DP:WRT,DP:FUN C:DP0 NAM C:DP0 CHAN CIB: CI:PER WORD 0 CI:FLG HEAD CIB: CI:MST HEAD DP: CI:DIB WORD :7400 CI:PRI IFF #(1,?) WORD DVICADD:++CHANNEL: CI:DA - DEFAULT ENDC IFT #(1,?) WORD #(1) CI:DA - USER DEFINED ENDC IFF #(2,?) WORD INTVECT: CI:IV - DEFAULT ENDC IFT #(2,?) WORD #(2) CI:IV - USER DEFINED ENDC RES 1,0 RESERVED WORD DP:RD CI:RD WORD DP:WRT CI:WRT WORD 0 CI:POS WORD DP:FUN CI:FUN INT:SEQ CI:EOB DOUBLE 0 CI:T1,CI:T2 WORD 0 CI:APR WORD 0 CI:TIB WORD 1 CI:USM RES 6,0 RESERVED WORD -:20 CI:CLK ORG O: ENDM TITL LINE PRINTER DIB MACRO * LINE PRINTER DIB MACRO * DIB:LP MACRO LP LPOOC L O: SET $ IOS: REL SHARABLE IOS: CPL: SET 80 CHARACTERS PER LINE LPP: SET 57 LINES PER PAGE BOF: SET 3 BOTTOM OF FORM COUNT IFF #(2,?)=0 CPL: SET #(2) ENDC IFF #(3,?)=0 LPP: SET #(3) ENDC NAM D:#(1) D:#(1) CHAN #(1,1,3): BIT:WORD DIF:FC DI:FLG - FLAG WORD EXTR C:#(1,1,3) WORD C:#(1,1,3) WORD 0 BYTE '##(1)' RES 1,0 WORD 0  WORD -3 WORD 4*8 BIT:WORD BIT:WORD FA:,UF: BIT:WORD BIT:WORD OP:,CL:,WF:,SC:,TF: RES 2,0  WORD CPL: BYTE BOF:,LPP: WORD 0 WORD :1210 WORD !LP:CR WORD !LP:TF WORD :3202 WORD -LPP: WORD 0 WORD 0 WORD !LP:BF WORD !LP:PU !LP:PU WORD 3 BYTE :FF,CR:,LF:,0 !LP:CR WORD 2 IFT #(4,?)=0 BYTE ' ',CR: ENDC IFF #(4,?)=0 BYTE CR:,#(4) ENDC !LP:TF WORD 2 BYTE FF:,CR: !LP:BF RES 2,0 ORG O: ENDM TITL ASYNC MUX OPTIONS MACRO * MACRO TO CONDITIONALLY GENERATE A SYMBOLIC REFERENCE OR ZERO WORD * COND MACRO 0 COND1 MACENT 1 IFT #(2) IF CONDITION TRUE WORD #(1) GENERATE SYMBOLIC REFERENCE ENDC IFF #(0) IF ALTERNATE ENTRY, DON'T ASM IFF #(2) IF CONDITION FALSE WORD 0 GENERATE ZERO WORD ENDC ENDC ENDM * * USEFUL VALUES * DIF:DC EQU 3 BIT NUMBER FOR DYNAMIC CONFIGURATION DIF:FA EQU 4 BIT NUMBER TO SELECT FA: HANDLER DIF:AB EQU 7 BIT NUMBER TO REQUEST AUTO-BAUDING OPT:DC EQU 1%DIF:DC SET THE BIT OPT:FA EQU 1%DIF:FA SET THE BIT OPT:FC EQU 1%DIF:FC SET THE BIT FOR FORM CONTROL OPT:AB EQU 1%DIF:AB SET THE BIT * * BAUD RATE VALUES * BD:50 EQU 0 BD:75 EQU 1 BD:110 EQU 2 BD:135 EQU 3 BD:150 EQU 4 BD:300 EQU 5 BD:600 EQU 6 BD:1200 EQU 7 BD:1800 EQU 8 BD:2000 EQU 9 BD:2400 EQU :A BD:3600 EQU :B BD:4800 EQU :C BD:7200 EQU :D BD:9600 EQU :E BD:19200 EQU :F TITL ASYNCH MUX DIB MACRO * * THIS MACRO GENERATES A DIB FOR AN ASYNC MUX CHANNEL * * THE CALLING SEQUENCE IS * * D:AC CCDD[,OPTS] * * WHERE 'CCDD' IS THE 4 CHAR IDENTIFIER TO FORM DIB ENTRY * POINT NAME 'D:CCDD'. * A REFERENCE TO CIB NAME 'C:CCDD' WILL BE GENERATED. * THE OPTIONAL 'OPTS' FIELD MAY CONTAIN THE OPTION SPECIFIERS: * * OPT:DC MEANING, DYNAMICALLY CONFIGURE AT FIRST OPEN * OPT:FA MEANING, LOAD FA: HANDLER * OPT:AB MEANING, REQUEST AUTO-BAUDING DURING CONFIG * OPT:FC  MEANING, 1ST CHAR IS FORM CONTROL * * IF MORE THAN ONE OPTION IS TO BE SPECIFIED, THE OPTIONS ARE SEPARATED * BY PLUS (+) SIGNS. * AUTO-BAUDING IS EFFECTIVE AT THE FIRST OPEN ONLY IF DYNAMIC CON- * FIGURATION IS ALSO SPECIFIED. * D:AC MACRO LPOOL O: SET $ IOS: REL SHARABLE IOS: NAM D:#(1) ASYNC CHANNEL DIB ENTRY POINT NAME EXTR AC:CNFG DYNAMIC CONFIGURATION ROUTINE ENTRY POINT EXTR AC:FIO FORMATTED I/O ROUTINE ENTRY POINT D:#(1) WORD 0 DI:PER PEER POINTER (NO PEERS) D:: SET #(2)+0 EVALUATE OPTIONS WORD D:: ASSEMBLE FLAGWORD WORD C:#(1) DI:CIB CIB ADDRESS WORD 0 DI:FCB FCB ADDR (NOT USED) BYTE '##(1)' DI:NAM DEVICE NAME RES 1,0 RESERVED RES 1,0 RESERVED WORD 0 DI:SPB WATCHDOG SHIFTS/BYTE WORD -1 DI:WBT WATCHDOG BASE TIME (NO WATCHDOG)D  * EQU $ DI:DSW DEVICE SPEC WORDS WORD -1 SELECTION IS BY DRIVER WORD -1 ETC. WORD 0 NO FUNCTION ALLOWED WORD -1 SELECTION IS BY DRIVER RES 2,0 LAST TWO WORDS OF STANDARD DIB * IFT D::&OPT:DC ASSEMBLE IF DYNAMIC CONFIG CALLED FOR COND AC:FIO,D::&OPT:FA REFERENCE FIO OR SPACER WORD AC:CNFG REFERENCE CONFIGURATOR ENDC IFF D::&OPT:DC ASSEMBLE IF NO CONFIGURATION COND1 AC:FIO,D::&OPT:FA REFERENCE FIO OR ASSEMBLE NOTHING ENDC ORG O: ENDM TITL ASYNCH MUX CIB MACRO * * THIS MACRO GENERATES A CIB FOR AN ASYNC MUX CHANNEL * * THE CALLING SEQUENCE IS: * * C:AC CCDD,DA,CN,IV * * WHERE 'CCDD' IS THE 4 CHAR IDENTIFIER TO FORM CIB ENTRY * POINT NAME 'C:CCDD'. * A REFERENCE TO CIB EXTENSION NAME 'CX:ACDD' WILL * BE GENERATED. * 'DA' IS THE 'DIO' STYLE DEVICE ADDRESS (4 BITS), * 'CN' IS THE CHANNEL NUMBER (0-7), AND 'IV' IS THE INTERRUPT * ADDRESS SET BY THE INTERRUPT VECTOR ADDRESS SWITCH ON THE BOARD * C:AC MACRO LPOOL O: SET $ IOS: REL SHARABLE IOS: NAM C:#(1) ASYNC CHANNEL CIB EXTR AC:WRT TRANSMIT DRIVER EXTR AC:RD RECEIVER DRIVER EXTR AC:FUN FUNCTION DRIVER C:#(1) CHAN CIB: CI:PER PEER LINK WORD 0 CI:FLG FLAGWORD HEAD CIB: CI:MST MASTER LINK WORD D:#(1) LINK TO DIBS (CI:DIB) WORD :7400 CI:PRI REQUEST PRIORITY WORD #(2)%3+#(3)%1 DEVICE ADDR WORD #(4)%-7%4+#(3)%3 CI:IV INTERRUPT VECTOR ADDR RES 1,0 CI:UNI RESERVED * * SIMPLY REFER TO ALL DRIVER MAIN ENTRIES SINCE THEY ARE ALL * IN THE SAME CONTROL SECTION AND WILL ALL BE LOADED * WORD AC:RD READ ENTRY WORD AC:WRT WRITE ENTRY WORD 0 NO POSITION ENTRY WORD AC:FUN FUNCTION ENTRY INT:SEQ INTERRUPT SEQUENCE RES 1,0 CI:T1 TEMP RES 1,0 CI:T2 TEMP RES 1,0 CI:APR REQUESTORS SAVED PRIORITY RES 1,0 CI:TIB ADDR OF TIB WORD 1 CI:USM CONTROLLER USAGE SEMA4 WORD 0 CI:TIM WATCHDOG COUNTS WORD 0 CI:CSM COMPLETION SEMA4 WORD 0 CI:CFL COMPLETION FLAG WORD CX:AC#(1,3,4) CI:OPT ADDR OF OPT+SPEC CHAR TBL ORG O: ENDM TITL ASYNCH MUX CHAN OPTION TABLE MACRO * * OPTION TABLE CIB EXTENSION FOR ASYNC MUX CHANNEL * * CALLING SEQUENCE IS: * *  CX:AC DD,BAUD * * WHERE 'DD' IS A TWO DIGIT STRING USED TO FORM THE CIB EXTENSION * ENTRY POINT NAME 'CX:ACDD' * 'BAUD' IS THE TERMINAL BAUD RATE * CX:AC MACRO NAM CX:AC#(1) TABLE ADDR CX:AC#(1) WORD :21CD WORD BD:#(2)%8+:3037 WORD :7F5F SPECIAL CHAR TABLE, ,_ ENDM TITL MAGTAPE DIB MACRO * DIB MACRO * * DIB:MT #(1) --- #(1) = MTXX, XX = UNIT # * DIB:MT  MACRO LPOOL O: SET $ IOS: REL SHARABLE IOS: D:#(1) NAM D:#(1) CHAN MT: DI:PER WORD 0 DI:FLG WORD C:MT0 DI:CIB HEAD Z:#(1) DI:FCB BYTE '##(1)' DI:NAM WORD 0 DI:DN WORD 0 DI:DS WORD -4 DI:SPB WORD 3*8 DI:WBT BIT:WORD FA:,FB:,FS:,DB:,UF: DI:DSW - READ BIT:WORD FA:,FB:,FS:,DB:,UF: DI:DSW - WRITE BIT:WORD SBF:,SBR:,SKF: DI:DSW - POSITION BIT:WORD RWD:,OFL:,EBL:,EFM:,OP:,CL:,SS:,WF: DI:DSW - FUNCTION RES 2,0 RESERVED WORD 0 DI:BLKCT WORD 0  DI:SERV WORD :0230 DI:BMI WORD :0250 DI:BMO WORD :0240 DI:BMR WORD 0 DI:OWM WORD :0005 DI:TRY WORD 1 DI:VTS WORD 0 DI:MASK WORD 0 DI:FLAG WORD 0 DI:THWS ORG O: ENDM TITL MAGTAPE CIB MACRO * CIB MACRO * *  CIB:MT #(1) -- DEVICE ADDRESS / CHANNEL * #(2) -- INTERRUPT VECTOR * DVICADD: SET :F0 MT DEFE AULT DEVICE ADDRESS CHANNEL: SET :02 MT DEFAULT CHANNEL NUMBER INTVECT: SET :C8 MT DEFAULT INTERRUPT VECTOR * CIB:MT MACRO LPOOL O: SET $ IOS: REL SHARABLE IOS: EXTR MT:RD,MT:WRT,MT:POS,MT:FUN C:MT0 NAM C:MT0 CHAN CIB: CI:PER WORD 0 CI:FLG HEAD CIB: CI:MST HEAD MT: CI:DIB WORD :7600 CI:PRI IFF #(1,?) WORD DVICADD:++CHANNEL: CI:DA - DEFAULT ENDC IFT #(1,?) WORD #(1) CI:DA - USER DEFINED ENDC IFF #(2,?) WORD INTVECT: CI:IV - DEFAULT ENDC IFT #(2,?) WORD #(2) CI:IV - USER DEFINED ENDC WORD 0 CI:UNI WORD MT:RD CI:RD WORD MT:WRT CI:WRT WORD MT:POS  CI:POS WORD MT:FUN CI:FUN INT:SEQ CI:EOB DOUBLE 0 CI:T1,CI:T2 WORD 0 CI:APR WORD 0 CI:TIB WORD 1 CI:USM  WORD 0 CI:TIM WORD 0 CI:CSM WORD 0 CI:CFL WORD 0 CI:RAT/CI:RTY WORD 0 CI:HRD WORD -144 CI:CNT WORD -2 CI:TIC WORD 0 CI:MODE ORG O: ENDM SAVE END :,FB:,FS:,DB:,UF: DI:DSW - WRITE BIT:WORD SBF:,SBR:,SKF: DI:DSW - POSITION BIT:WORD RWD:,OFL:,EBL:,EFM:,OP:,CL:,SS:,WF: DI:DSW - FUNCTION RES 2,0 RESERVED WORD 0 DI:BLKCT WORD 0  DI:SERV WORD :0230 DI:BMI WORD :0250 DI:BMO WORD :0240 DI:BMR WORD 0 DI:OWM WORD :0005 DI:TRY WORD 1 DI TITL S F M . M A C - SFM GENERAL EQUATES & MACROS (93420-15-D0) * FILE MANAGER SERVICE PL EQUATES * NAMPT: EQU 0  NAME POINTER VOLPT: EQU 1 VOLUME NAME POINTER PUN: EQU 2 UNIT FNO: EQU 3  DIRECTORY FNO LUN: EQU 4 LOGICAL UNIT INXT: EQU 4 INITIAL EXTENT SEXT: EQU  5 SECONDARY EXTENT RLN: EQU 6 RECORD LENGTH TITL ************************************************************ * CONN:A MACRO - F:CONN PARAMETER LIST * *  * * CONN:A #1,#2,#3,#4,#5 * *  * * #1 - LABEL * * #2 - ADDR OF FILE NAME * * #3 - ADDR OF VOLUME NAME * * #4 - DIB NAME * *  #5 - LOGICAL UNIT * ************************************************************ MACRO CONN:A #1 EQU $ PARAM: #2 PARAM: #3 D: SET 0 PARAM: D:#4 WORD 0 FNO WORD #5 ENDM TITL ************************************************************ * DELE:A MACRO - F:DELE PARAMETER LIST * * * * DELE:A #1,#2,#3,#4  * * * * #1 - LABEL  * * #2 - ADDR OF FILE NAME * * #3 - ADDR OF VOLUME NAME  * * #4 - DIB NAME * * ONLY 1 OF #3 & #4 MUST BE SUPPLIED  * ************************************************************ MACRO DELE:A #1 EQU $ WORD #2 PF ARAM: #3 D: SET 0 PARAM: D:#4 WORD 0 FNO ENDM TITL ************************************************************ * CREA:A MACRO - F:CREA PARAMETER LIST * *  * * CREA:A #1,#2,#3,#4,#5,#6,#7 * *  * * #1 - LABEL * * #2 - ADDR OF FILE NAME  * * #3 - ADDR OF VOLUME NAME * * #4 - DIB NAME  * * #5 - INITIAL EXTENT, DEFAULT=10 * * #6 - SECONDARY EXTENT, DEFAULT=10 * *  #7 - RECORD LENGTH, DEFAULT=0 * ************************************************************  MACRO CREA:A #1 EQU $ WORD #2 PARAM: #3 D: SET 0 PARAM: D:#4 WORD 0 FNO  PARAM: #5,10 PARAM: #6,10 PARAM: #7 ENDM TITL ************************************************************ * MONT:A MACRO - F:MONT PARAMETER LIST * *  * * #-1 MONT:A #1,#2 * * MONT:A #1,#2,#3  * * * * #-1,#1 - LABEL * *  #1,#2 - VOLUME NAME POINTER (OPT) * * #2,#3 - DIB NAME * ************************************************************ MONT:A MACRO * IFF #(-1,?) #(1) EQU $ PARAM: #(2) D: SET 0 WORD D:#(3) ENDC * IFT #(-1,?) PARAM: #(1) D: SET 0 WORD D:#(2) ENDC * ENDM TITL * PARAMETER MACRO * *  PARAM: #1,#2 * * #1 PARAMETER TO PUT IN WORD STATEMENT * #2 VALUE IF #1 IS NULL, DEFAULT IS ZERO *  MACRO PARAM: SV: SYMATT #1 IFF SV:&NULL: WORD #1 PARAMETER EXISTS ENDC IFT SV:&NULL: S: SYMATT #2 IFT S:&NULL: WORD 0 DEFUALT VALUE FOR NULL PARAMETER ENDC IFF S:&NULL: WORD #2 USE DEFAULT VALUE SUPPLIED ENDC ENDC ENDM TITL * FCB EQUATES * FC:CHK EQU :F0AF FCB CHECK VALUE FC:PER EQU 0 PEER POINTER FC:FLG EQU 1 FLAG WORD FC:FDB EQU 2 FDB ADDR FC:AMA EQU 7 ACCESS MANAGER ADDRESS FC:FCB EQU 8 SUBORDINATE FCB LIST FC:DIB EQU  9 DIB ADDR FC:FNO EQU 10 F ENTRY NUMBER * * FCB FLAG WORD EQUATES * FCF:OP EQU 9 OPEN FCF:BL EQU 0 BLOCK I/O * * FDB EQUATES * FD:FLG EQU 0 FLAG WORD FD:WPT EQU 1 WRITE POINTER, 2 WORDS FD:WPS EQU 3 WRITE POINTER SEMAPHORE FD:RAU EQU 4 RELATIVE AU FD:PAU EQU 5 PHYSICAL AU FD:NAU EQU 6 NUMBER OF AUS IN EXTENT FD:RLN EQU 7 RECORD LENGTH FD:ERR EQU 8 ERROR CODE FROM I/O FD:NLK EQU 9 NUMBER OF LINKS TO FDB FDF:WA EQU 0 WRITE POINTER ALTERED FLLAG FDF:LA EQU G  1 FILE LENGTH ALTERED FALG TITL * MFM FCB EQUATES * FC:PTR EQU 3 FCB BUFFER INDEX POINTER FC:RECZ EQU 4 RECORD SIZE FC:MBKZ EQU 5 MAX. BLOCK SIZE FC:BLKZ EQU 6 BLOCK SIZE FC:BCT EQU 10 FCB BLOCK COUNT * * MFM FCB FLAG WORD EQUATES * FCF:UBUF EQU 5 USER SUPPLYING THE BUFFER FLAG FCF:EOV EQU 6 DO AN EOV FUNCTION IF WRITE CREATING A NEW VOL FCF:NTRN EQU 7 FILE IS NOT TO BE TRANSLATED FCF:EBCD EQU 8 FILE IS AN EBCDIC FILE FCF:FWRT EQU 10 FILE WRITE WRITE FLAG FCF:ULB EQU 11 MAG. FILE POSITION AT USER LABELS IF ANY FCF:RDBK EQU 12 BLOCK HAS BEEN READ NEEDS BACKSPACE FCF:EOF EQU 13 FILE HAS ENCOUNTERED AN EOF FCF:WRT EQU 14 BUFFER FILE WRITE FLAG FCF:FCB EQU 1//15 YES MARTHA, I'M AN FCB * * MFM FDB EQUATES * FD:NAM EQU 1 NAME OF DATA SET FD:BUF EQU 9 USER SUPPLIED BUFFER ADDRESS TITL ************************************************************ * FCB:SA MACRO * *  * * FOR CREATING A PERMANENT SFM FCB * *  * * CALLING SEQUENCE * *  * * FCB:SA LABEL,FNO,PUN * *  * ************************************************************ MACRO FCB:SA LPOOL O: SET $ IOS:  REL SHARABLE IOS: EXTR FM:SFM WORD FC:CHK #1 EQU $ CHAN Z:#3 WORD :8000 RES  5,0 WORD FM:SFM RES 1,0 WORD D:#3 WORD #2 WORD FC:CHK ORG O: ENDM SPACE 3 SAVE END M  TITL O S 4 . M A C - OS4 GENERAL EQUATES & MACROS (93420-18-D0) * EXEC REQUEST MACRO, FOR ROGER PARAMETERS: * A ROGER PARAMETER IS AN INDEXED OR UNINDEXED, NON-INDIRECT, * WORD ADDRESS. * THIS MACRO GENERATES INLINE CODE WHICH LOADS THE ROGER * PARAMETER INTO THE X REGISTER. * EXR: MACRO S: SYMATT #(1) * IFT S:**:0040 IF NO PARAMETER...  COPY =0,X USE DEFAULT ENDC * IFF S:**:0040 OTHERWISE... P: SET #(1,'(') COMPUTE POSITION OF INDEX SPECIFICATION...  IFF P: P: SET 100 ENDC P: SET P:-1 IFT S:**:0200 IF POST-INDEXED... ADD =#(1,1,P:),X ENDC IFF S:**:0200 IF NOT POST-INDEXED... COPY =#(1,1,P:),X ENDC IFT S:**:0100 IF PRE-INDEXED... ADD Y,X ENDC IFT S:**:0830 FLAG INDIRECT, BYTEREL, OR ERROR NOTE E,'PARAMETER ERROR' ENDC ENDC ENDM TITL * MONITOR EXIT * E:MON MACRO EXTR E:MON JMP E:MON ENDM * * MONITOR ERROR EXIT * E:MONE MACRO EXTR E:MONE JMP E:MONE ENDM * * MONITOR CONTINUE EXIT * E:MONC MACRO EXTR E:MONC JMP E:MONC ENDM * * SEARCH FOR LOGICAL UNIT * E:SLU MACRO EXTR E:SLU COPY #(1),A JSK E:SLU ENDM * * GET SYSTEM FILE * E:SF MACRO EXTR E:SF JSK E:SF ENDM TITL *  GET USER FILE * E:UF MACRO EXTR E:UF JSK E:UF ENDM * * INIT JCL MACRO * E:IJCL MACRO EXTR E:IJCL JSK E:IJCL ENDM * * GET JCL STACK ADDR * E:JCL MACRO EXTR E:JCL COPY E:JCL,X ENDM * * INPUT SYMBOL * E:ISM H MACRO EXTR E:ISM EXR: #(1) JSK E:ISM ENDM * * INPUT CHARACTER MACRO * E:ICH MACRO EXTR E:ICH EXR: #(1) JSK E:ICH ENDM TITL * GET FILE NAME * E:GFN MACRO EXTR E:GFN EXR: #(1) JSK E:GFN ENDM * * MESSAGE SERVICE * E:MSG MACRO EXTR E:MSG EXR: #(1) JSK E:MSG ENDM * * READ CI * E:RCI MACRO EXTR E:RCI EXR: #(1) JSK E:RCI ENDM * * LOAD PROGRAM SERVICE * E:LOAD MACRO EXTR E:LOAD EXR: #(1) JSK E:LOAD ENDM TITL * PRINT FILE SERVICE * E:PRINT MACRO EXTR E:PRINT EXR: #(1) JSK E:PRINT ENDM * * LOAD OVERLAY SERVICE * E:LDR MACRO EXTR E:LDR EXR: #(1) JSK E:LDR ENDM TITL * E:ISM PL MACRO * ISM:PL MACRO S: SYMATT #(1) IFF S:&NULL: #(1) EQU $ ENDC RES ISMLN:,0 ENDM * * E:GFN PL MACRO * GFN:PL MACRO CREA:A #(1),0,,,0,0,0 RES 7,0 RES 2,0 ISM:PL #(2) ENDM TITL * E:ISM PL EQUATES * ISMTC: EQU 0 TEST CHAR ISMNC: EQU 1 NUMBER OF CHARS ISMDV: EQU 2 DECIMAL VALUE ISMHV: EQU 3 HEX VALUE ISMDF: EQU 4 DECIMAL FLAG ISMHF: EQU 5 HEX FLAG ISMSB: EQU 6 SYMBOL BUFFER, 7 WORDS ISMBP: EQU 13 BUFFER POINTER ISMUB: EQU 14 USER BUFFER ADDR ISMLN: EQU 15 LENGTH OF PARAMETER LIST * * E:GFN PL EQUATES * NAME: EQU 6+1 NAME OFFSET (RLN:+1) FEXTL: EQU NAME:+7 FILE EXTENSION FLAG GFNLN: EQU FEXTL:+2+ISMLN: GFN BLOCK LENGTH SPACE 3 SAVE END JCL COPY E:JCL,X ENDM * * INPUT SYMBOL * E:ISM IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJ IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIK IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIL IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII