Google
 

Trailing-Edge - PDP-10 Archives - decuslib10-07 - 43,50450/rsxmac.req
There are no other files named rsxmac.req in the archive.
00050	% RSXMAC.REQ VERSION 3.0 % SWITCHES NOLIST;
00100	REQUIRE 'B11MAC.REQ' SOURCE;
00150	%
00200		    RSX-11M EXECUTIVE SERVICES MACRO LIBRARY FOR BLISS-11
00250	
00300	AUTHOR:
00350		K. E. GORLEN
00400		RM. 2017, BG. 12A
00450		DIVISION OF COMPUTER RESEARCH AND TECHNOLOGY
00500		NATIONAL INSTITUTES OF HEALTH
00550		BETHESDA, MD. 20014
00600		PHONE: (301) 496-5361
00650		MARCH 17,1975
00700	
00750	SEE RSXMAC.DOC FOR DOCUMENTATION.
00800	
00850	%
00900	!
00950	! ?.SUBLIST6 -- PAD SIX PARAMETER SUBLIST
01000	!
01050	    MACRO ?.SUBLIST6(P1,P2,P3,P4,P5,P6)=
01100		P1+0,P2+0,P3+0,P4+0,P5+0,P6+0 $;
01150	!
01200	! ?.DPB MACRO -- GENERATE DIRECTIVE PARAMETER BLOCK (DPB)
01250	!
01300	    MACRO ?.DPB(DIC)[]=
01350	        $LENGTH^8+(DIC) ?.COMMA($REMAINING) ?.DPBA($REMAINING) $,
01400		?.DPBA[P]=P+0 $;
01450	!
01500	! ?DIR$ MACRO -- GENERATE CALL TO RSX-11M EXECUTIVE
01550	!
01600	    LINKAGE ?.RSX11=EMT(CLEARSTACK);
01650	
01700	    MACRO ?RSXERRDF$=$;
01750	
01800	    MACRO ?DIR$(DPB,ERR)=BEGIN
01850		SWITCHES UNAMES;
01900		OPCODE ?.BCC=BCC;
01950		OPLABEL ?.NOERR;
02000		?.RSX11(#377,?.REVERSE(?.SUBLIST(DPB)));
02050		?.SELECT(ERR,
02100		    <?.BCC(?.NOERR); DO (ERR) WHILE 0; ?.NOERR:>,
02150		    <?.SELECT(?RSXERRDF$,
02200			<?.BCC(?.NOERR); DO (?RSXERRDF$) WHILE 0; ?.NOERR:>,)>) END$;
02250	!
02300	! $C MACRO -- GENERATE $C FORM DIRECTIVE CALL
02350	!
02400	    MACRO $C(DPB,ERR)=
02450		?DIR$(<UPLIT(?.SUBLIST(DPB))>,ERR) $;
02500	!
02550	! ?ABRT$ -- ABORT TASK
02600	!
02650	    BIND ?ABRT.DL=3;
02700	
02750	    MACRO ?ABRT$(TSK)=?ABRT.DL^8+83,RAD50 ?.DEFAULT(TSK,'      ') $;
02800	
02850	    MACRO ?ABRT$S(TSK,ERR)=BEGIN
02900		BIND ?A.BTTN[2]=TSK;
02950		?DIR$(<?.DPB(83,.?A.BTTN[0],.?A.BTTN[1])>,ERR) END$;
03000	
03050	    MACRO ?ABRT$C(DPB)=
03100		BIND
03150		    ?A.BTTN[2]=(DPB)+2 $;	! TASK NAME
03200	!
03250	! ?ALTP$ -- ALTER PRIORITY
03300	!
03350	    BIND ?ALTP.DL=4;
03400	
03450	    MACRO ?ALTP$(TSK,PRI)=
03500		?ALTP.DL^8+9,RAD50 ?.DEFAULT(TSK,'      '),PRI+0 $;
03550	
03600	    MACRO ?ALTP$S(TSK,PRI,ERR)=BEGIN
03650		?.SELECT(TSK,<BIND ?A.LTTN[2]=TSK;>)
03700		?DIR$(<?.DPB(9,
03750		    ?.SELECT(TSK,<.?A.LTTN[0],.?A.LTTN[1]>,<0,0>),
03800		    PRI+0)>,ERR) END$;
03850	
03900	    MACRO ?ALTP$C(DPB)=
03950		BIND
04000		    ?A.LTTN[2]=(DPB)+2,		! TASK NAME
04050		    ?A.LTPR=(DPB)+6 $;		! PRIORITY
04100	!
04150	! ?ALUN$ -- ASSIGN LUN
04200	!
04250	    BIND ?ALUN.DL=4;
04300	
04350	    MACRO ?ALUN$(LUN,DEV,UNT)=
04400		?.DPB(7,LUN,DEV,UNT+0) $;
04450	
04500	    MACRO ?ALUN$S(LUN,DEV,UNT,ERR)=
04550		?DIR$(<?ALUN$(LUN,DEV,UNT)>,ERR) $;
04600	
04650	    MACRO ?ALUN$C(DPB)=
04700		BIND
04750		    ?A.LULU=(DPB)+2,		! LOGICAL UNIT NUMBER
04800		    ?A.LUNA=(DPB)+4,		! PHYSICAL DEVICE NAME
04850		    ?A.LUNU=(DPB)+6 $;		! PHYSICAL DEVICE UNIT #
04900	!
04950	! ?ASTX$S -- AST SERVICE EXIT
05000	!
05050	    MACRO ?ASTX$S(ERR)=
05100	    	?DIR$(<?.DPB(115)>,ERR) $;
05150	!
05200	! ?ATRG$ -- ATTACH REGION
05250	!
05300	    BIND ?ATRG.DL=2;
05350	
05400	    MACRO ?ATRG$(RDB)=?.DPB(57,RDB+0) $;
05450	
05500	    MACRO ?ATRG$S(RDB,ERR)=
05550		?DIR$(<?ATRG$(RDB)>,ERR) $;
05600	
05650	    MACRO ?ATRG$C(DPB)=
05700		BIND
05750		    ?A.TRBA=(DPB)+2 $;		! REGION DEFINITION BLOCK ADDRESS
05800	! 
05850	! ?CLEF$ -- CLEAR EVENT FLAG
05900	!
05950	    BIND ?CLEF.DL=2;
06000	
06050	    MACRO ?CLEF$(EFN)=?.DPB(31,EFN+0) $;
06100	
06150	    MACRO ?CLEF$S(EFN,ERR)=
06200		?DIR$(<?CLEF$(EFN)>,ERR) $;
06250	
06300	    MACRO ?CLEF$C(DPB)=
06350		BIND
06400		    ?C.LEEF=(DPB)+2 $;		! EVENT FLAG NUMBER
06450	!
06500	! ?CMKT$S -- CANCEL MARK TIME REQUESTS
06550	!
06600	    MACRO ?CMKT$S(EFN,AST,ERR)=
06650		?DIR$(<?.DPB(27)>,ERR) $;
06700	!
06750	! ?CRAW$ -- CREATE ADDRESS WINDOW
06800	!
06850	    BIND ?CRAW.DL=2;
06900	
06950	    MACRO ?CRAW$(WDB)=?.DPB(117,WDB+0) $;
07000	
07050	    MACRO ?CRAW$S(WDB,ERR)=
07100		?DIR$(<?CRAW$(WDB)>,ERR) $;
07150	
07200	    MACRO ?CRAW$C(DPB)=
07250		BIND
07300		    ?C.RABA=(DPB)+2 $;		! WINDOW DEFINITION BLOCK ADDRESS
07350	!
07400	! ?CRRG$ -- CREATE REGION
07450	!
07500	    BIND ?CRRG.DL=2;
07550	
07600	    MACRO ?CRRG$(RDB)=?.DPB(55,RDB+0) $;
07650	
07700	    MACRO ?CRRG$S(RDB,ERR)=
07750		?DIR$(<?CRRG$(RDB)>,ERR) $;
07800	
07850	    MACRO  ?CRRG$C(DPB)=
07900		BIND
07950		    ?C.RRBA=(DPB)+2 $;		! REGION DEFINITION BLOCK ADDRESS
08000	!
08050	! ?CSRQ$ -- CANCEL TIME BASED INITIATION REQUESTS
08100	!
08150	    BIND ?CSRQ.DL=3;
08200	
08250	    MACRO ?CSRQ$(TSK)=?CSRQ.DL^8+25,RAD50 ?.DEFAULT(TSK,'      ') $;
08300	
08350	    MACRO ?CSRQ$S(TSK,RTK,ERR)=BEGIN
08400		BIND ?C.SRTN[2]=TSK;
08450		?DIR$(<?.DPB(25,.?C.SRTN[0],.?C.SRTN[1])>,ERR) END$;
08500	
08550	    MACRO ?CSRQ$C(DPB)=
08600		BIND
08650		    ?C.SRTN[2]=(DPB)+2,		! TARGET TASK NAME
08700		    ?C.SRRN[2]=(DPB)+6 $;	! REQUESTING TASK NAME (UNUSED)
08750	!
08800	! ?DECL$S -- DECLARE SIGNIFICANT EVENT
08850	!
08900	    MACRO ?DECL$S(IGNORED1,ERR)=
08950		?DIR$(<?.DPB(35)>,ERR) $;
09000	!
09050	! ?DSAR$S -- DISABLE AST RECOGNITION
09100	!
09150	    MACRO ?DSAR$S(ERR)=
09200		?DIR$(<?.DPB(99)>,ERR) $;
09250	!
09300	! ?DSCP$S -- DISABLE CHECKPOINTING
09350	!
09400	    MACRO ?DSCP$S(ERR)=
09450		?DIR$(<?.DPB(95)>,ERR) $;
09500	!
09550	! ?DTRG$ -- DETACH REGION
09600	!
09650	    BIND ?DTRG.DL=2;
09700	
09750	    MACRO ?DTRG$(RDB)=?.DPB(59,RDB+0) $;
09800	
09850	    MACRO ?DTRG$S(RDB,ERR)=
09900		?DIR$(<?DTRG$(RDB)>,ERR) $;
09950	
10000	    MACRO ?DTRG$C(DPB)=
10050		BIND
10100		    ?D.TRBA=(DPB)+2 $;		! REGION DEFINITION BLOCK ADDRESS
10150	!
10200	! ?ELAW$ -- ELIMINATE ADDRESS WINDOW
10250	!
10300	    BIND ?ELAW.DL=2;
10350	
10400	    MACRO ?ELAW$(WDB)=?.DPB(119,WDB+0) $;
10450	
10500	    MACRO ?ELAW$S(WDB,ERR)=
10550		?DIR$(<?ELAW$(WDB)>,ERR) $;
10600	
10650	    MACRO ?ELAW$C(DPB)=
10700		BIND
10750		    ?E.LABA=(DPB)+2 $;		! WINDOW DEFINITION BLOCK ADDRESS
10800	!
10850	! ?ENAR$S -- ENABLE AST RECOGNITION
10900	!
10950	    MACRO ?ENAR$S(ERR)=
11000		?DIR$(<?.DPB(101)>,ERR) $;
11050	!
11100	! ?ENCP$S -- ENABLE CHECKPOINTING
11150	!
11200	    MACRO ?ENCP$S(ERR)=
11250		?DIR$(<?.DPB(97)>,ERR) $;
11300	!
11350	! ?EXIF$ -- EXITIF
11400	!
11450	    BIND ?EXIF.DL=2;
11500	
11550	    MACRO ?EXIF$(EFN)=?.DPB(53,EFN+0) $;
11600	
11650	    MACRO ?EXIF$S(EFN,ERR)=
11700		?DIR$(<?EXIF$(EFN)>,ERR) $;
11750	
11800	    MACRO ?EXIF$C(DPB)=
11850		BIND
11900		    ?E.XFEF=(DPB)+2 $;		! EVENT FLAG NUMBER
11950	!
12000	! ?EXIT$S -- TASK EXIT
12050	!
12100	    MACRO ?EXIT$S(ERR)=BEGIN
12150		?.RSX11(#377,?.DPB(51));
12200		?.SELECT(ERR,<ERR>,) END$;
12250	!
12300	! ?EXTK$ -- EXTEND TASK
12350	!
12400	    BIND ?EXTK.DL=3;
12450	
12500	    MACRO ?EXTK$(INC)=?.DPB(89,INC,0) $;
12550	
12600	    MACRO ?EXTK$S(INC,ERR)=
12650		?DIR$(<?EXTK$(INC)>,ERR) $;
12700	
12750	    MACRO ?EXTK$C(DPB)=
12800		BIND
12850		    ?E.XTIN=(DPB)+2 $;		! EXTEND INCREMENT
12900	!
12950	! ?GLUN$ -- GET LUN INFORMATION
13000	!
13050	    BIND ?GLUN.DL=3;
13100	    BIND ?GLUN.BL=6;
13150	
13200	    MACRO ?GLUN$(LUN,BUF)=?.DPB(5,LUN,BUF+0) $;
13250	
13300	    MACRO ?GLUN$S(LUN,BUF,ERR)=
13350		?DIR$(<?GLUN$(LUN,BUF)>,ERR) $;
13400	
13450	    MACRO ?GLUN$C(DPB)=
13500		BIND
13550		    ?G.LULU=(DPB)+2,		! LOGICAL UNIT NUMBER
13600		    ?G.LUBA=(DPB)+4,		! BUFFER ADDRESS
13650		    ?G.LUBL=(DPB)+6 $;		! BUFFER LENGTH
13700	
13750	    MACRO ?GLUN$B(BUF)=
13800		BIND
13850		    ?G.LUNA=(BUF);		! DEVICE NAME
13900	!	BYTE BIND
13950	!	    ?G.LUNU=(BUF)+2,		! DEVICE UNIT NUMBER
14000	!	    ?G.LUFB=(BUF)+3;		! FLAGS BYTE
14050		MACRO				! UNTIL BYTE BIND FIXED
14100		    $QUOTE $QUOTE ?G.LUNU=((BUF)+2)<0,8> $QUOTE $,
14150		    $QUOTE $QUOTE ?G.LUFB=((BUF)+3)<0,8> $QUOTE $;
14200		BIND
14250		    ?G.LUCW[4]=(BUF)+4 $;	! DEVICE CHARACTERISTICS WORDS
14300	!
14350	! ?GMCR$ -- GET MCR COMMAND LINE
14400	!
14450	    BIND ?GMCR.DL=41;
14500	
14550	    MACRO ?GMCR$=?GMCR.DL^8+127,40:0 $;
14600	
14650	    MACRO ?GMCR$C(DPB)=
14700		BYTE BIND
14750		    ?G.MCRB[80]=(DPB)+2 $;
14800	!
14850	! ?GMCX$ -- GET MAPPING CONTEXT
14900	!
14950	    BIND ?GMCX.DL=2;
15000	
15050	    MACRO ?GMCX$(WVEC)=?.DPB(113,WVEC+0) $;
15100	
15150	    MACRO ?GMCX$S(WVEC,ERR)=
15200		?DIR$(<?GMCX$(WVEC)>,ERR) $;
15250	
15300	    MACRO ?GMCX$C(DPB)=
15350		BIND
15400		    ?G.MCVA=(DPB)+2 $;		! WINDOW DEFINITION BLOCK VECTOR ADDRESS
15450	!
15500	! ?GPRT$ -- GET PARTITION PARAMETERS
15550	!
15600	    BIND ?GPRT.DL=4;
15650	    BIND ?GPRT.BL=3;
15700	
15750	    MACRO ?GPRT$(PRT,BUF)=?GPRT.DL^8+65,RAD50 ?.DEFAULT(PRT,'      '),BUF+0 $;
15800	
15850	    MACRO ?GPRT$S(PRT,BUF,ERR)=BEGIN
15900		?.SELECT(PRT,<BIND ?G.PRPN[2]=PRT;>)
15950		?DIR$(<?.DPB(65,
16000		    ?.SELECT(PRT,<.?G.PRPN[0],.?G.PRPN[1]>,<0,0>),
16050		    BUF+0)>,ERR) END$;
16100	
16150	    MACRO ?GPRT$C(DPB)=
16200		BIND
16250		    ?G.PRPN[2]=(DPB)+2,		! PARTITION NAME
16300		    ?G.PRBA=(DPB)+6 $;		! BUFFER ADDRESS
16350	
16400	    MACRO ?GPRT$B(BUF)=
16450		BIND
16500		    ?G.PRPB=(BUF),		! PARTITION BASE ADDRESS/32
16550		    ?G.PRPS=(BUF)+2,		! PARTITION SIZE/32
16600		    ?G.PRFW=(BUF)+4 $;		! PARTITION FLAGS WORD
16650	!
16700	! ?GREG$ -- GET REGION PARAMETERS
16750	!
16800	    BIND ?GREG.DL=4;
16850	    BIND ?GREG.BL=3;
16900	
16950	    MACRO ?GREG$(RID,BUF)=?.DPB(65,0,RID,BUF+0) $;
17000	
17050	    MACRO ?GREG$S(RID,BUF,ERR)=
17100		?DIR$(<?GREG$(RID,BUF)>,ERR) $;
17150	
17200	    MACRO ?GREG$C(DPB)=
17250		BIND
17300		    ?G.RGID=(DPB)+4,		! REGION ID
17350		    ?G.RGBA=(DPB)+6 $;		! BUFFER ADDRESS
17400	
17450	    MACRO ?GREG$B(BUF)=
17500		BIND
17550		    ?G.RGRB=(BUF),		! REGION BASE ADDRESS/32
17600		    ?G.RGRS=(BUF)+2,		! REGION SIZE/32
17650		    ?G.RGFW=(BUF)+4 $;		! REGION FLAGS WORD
17700	!
17750	! ?GSSW$S -- GET SENSE SWITCHES
17800	!
17850	    MACRO ?GSSW$S(ERR)=
17900		?DIR$(<?.DPB(125)>,ERR) $;
17950	!
18000	! ?GTIM$ -- GET TIME PARAMETERS
18050	!
18100	    BIND ?GTIM.DL=2;
18150	    BIND ?GTIM.BL=8;
18200	
18250	    MACRO ?GTIM$(BUF)=?.DPB(61,BUF+0) $;
18300	
18350	    MACRO ?GTIM$S(BUF,ERR)=
18400		?DIR$(<?GTIM$(BUF)>,ERR) $;
18450	
18500	    MACRO ?GTIM$C(DPB)=
18550		BIND
18600		    ?G.TIBA=(DPB)+2 $;		! BUFFER ADDRESS
18650	
18700	    MACRO ?GTIM$B(BUF)=
18750		BIND
18800		    ?G.TIYR=(BUF),		! YEAR
18850		    ?G.TIMO=(BUF)+2,		! MONTH
18900		    ?G.TIDA=(BUF)+4,		! DAY
18950		    ?G.TIHR=(BUF)+6,		! HOUR
19000		    ?G.TIMI=(BUF)+8,		! MINUTE
19050		    ?G.TISC=(BUF)+10,		! SECOND
19100		    ?G.TICT=(BUF)+12,		! CLOCK TICK OF SECOND
19150		    ?G.TICP=(BUF)+14 $;		! CLOCK TICKS PER SECOND
19200	!
19250	! ?GTSK$ -- GET TASK PARAMETERS
19300	!
19350	    BIND ?GTSK.DL=2;
19400	    BIND ?GTSK.BL=16;
19450	
19500	    MACRO ?GTSK$(BUF)=?.DPB(63,BUF+0) $;
19550	
19600	    MACRO ?GTSK$S(BUF,ERR)=
19650		?DIR$(<?GTSK$(BUF)>,ERR) $;
19700	
19750	    MACRO ?GTSK$C(DPB)=
19800		BIND
19850		    ?G.TSBA=(DPB)+2 $;		! BUFFER ADDRESS
19900	
19950	    MACRO ?GTSK$B(BUF)=
20000		BIND
20050		    ?G.TSTN[2]=(BUF),		! TASK NAME
20100		    ?G.TSPN[2]=(BUF)+4,		! PARTITION NAME
20150		    ?G.TSRN[2]=(BUF)+8,		! REQUESTING TASK NAME (UNUSED)
20200		    ?G.TSPR=(BUF)+12;		! PRIORITY
20250	!	BYTE BIND
20300	!	    ?G.TSPC=(BUF)+14,		! UIC PROGRAMMER CODE
20350	!	    ?G.TSGC=(BUF)+15;		! UIC GROUP CODE
20400		MACRO				! UNTIL BYTE BIND FIXED
20450		    $QUOTE $QUOTE ?G.TSPC=((BUF)+14)<0,8> $QUOTE $,
20500		    $QUOTE $QUOTE ?G.TSGC=((BUF)+15)<0,8> $QUOTE $;
20550		BIND
20600		    ?G.TSNL=(BUF)+16,		! NUMBER OF LOGICAL UNITS
20650		    ?G.TSMT=(BUF)+18,		! MACHINE TYPE (UNUSED)
20700		    ?G.TSFW=(BUF)+20,		! STD FLAGS WORD (UNUSED)
20750		    ?G.TSVA=(BUF)+22,		! TASK'S SST VECTOR ADDRESS
20800		    ?G.TSVL=(BUF)+24,		! TASK'S SST VECTOR LENGTH (WORDS)
20850		    ?G.TSTS=(BUF)+26 $;
20900	!
20950	! ?MAP$ -- MAP ADDRESS WINDOW
21000	!
21050	    BIND ?MAP.DL=2;
21100	
21150	    MACRO ?MAP$(WDB)=?.DPB(121,WDB+0) $;
21200	
21250	    MACRO ?MAP$S(WDB,ERR)=
21300		?DIR$(<?MAP$(WDB)>,ERR) $;
21350	
21400	    MACRO ?MAP$C(DPB)=
21450		BIND
21500		    ?M.APBA=(DPB)+2 $;		! WINDOW DEFINITION BLOCK ADDRESS
21550	!
21600	! ?MRKT$ -- MARK TIME
21650	!
21700	    BIND ?MRKT.DL=5;
21750	
21800	    MACRO ?MRKT$(EFN,TMG,TNT,AST)=
21850		?.DPB(23,EFN,TMG,TNT,AST+0) $;
21900	
21950	    MACRO ?MRKT$S(EFN,TMG,TNT,AST,ERR)=
22000		?DIR$(<?MRKT$(EFN,TMG,TNT,AST)>,ERR) $;
22050	
22100	    MACRO ?MRKT$C(DPB)=
22150		BIND
22200		    ?M.KTEF=(DPB)+2,		! EVENT FLAG
22250		    ?M.KTMG=(DPB)+4,		! TIME MAGNITUDE
22300		    ?M.KTUN=(DPB)+6,		! TIME UNIT
22350		    ?M.KTAE=(DPB)+8 $;		! AST ENTRY POINT ADDRESS
22400	!
22450	! ?QIO$ -- QUEUE I/O
22500	!
22550	    BIND ?QIO.DL=12;
22600	
22650	    MACRO ?QIO$(FNC,LUN,EFN,PRI,ISB,AST,PRL)=
22700		?.DPB(1,FNC,LUN,(PRI+0)^8+(EFN+0),ISB,AST,
22750		?.SUBLIST6(?.SUBLIST(PRL))) $;
22800	
22850	    MACRO ?QIO$S(FNC,LUN,EFN,PRI,ISB,AST,PRL,ERR)=
22900		?DIR$(<?QIO$(FNC,LUN,EFN,PRI,ISB,AST,PRL)>,ERR) $;
22950	
23000	    MACRO ?QIO$C(DPB)=
23050		BIND
23100		    ?Q.IOFN=(DPB)+2,		! QIO FUNCTION
23150		    ?Q.IOLU=(DPB)+4;		! LOGICAL UNIT NUMBER
23200	!	BYTE BIND
23250	!	    ?Q.IOEF=(DPB)+6,		! EVENT FLAG NUMBER
23300	!	    ?Q.IOPR=(DPB)+7;		! PRIORITY
23350		MACRO				! UNTIL BYTE BIND FIXED
23400		    $QUOTE $QUOTE ?Q.IOEF=((DPB)+6)<0,8> $QUOTE $,
23450		    $QUOTE $QUOTE ?Q.IOPR=((DPB)+7)<0,8> $QUOTE $;
23500		BIND
23550		    ?Q.IOSB=(DPB)+8,		! ADDRESS OF I/O STATUS BLOCK
23600		    ?Q.IOAE=(DPB)+10,		! ADDR. OF I/O DONE AST ENTRY
23650		    ?Q.IOPL[6]=(DPB)+12 $;	! PARAMETER LIST
23700	!
23750	! ?QIOW$ -- QUEUE I/O REQUEST AND WAIT
23800	!
23850	    BIND ?QIOW.DL=?QIO.DL;		! ?QIOW$ DPB LENGTH WORDS
23900	
23950	    MACRO ?QIOW$(FNC,LUN,EFN,PRI,ISB,AST,PRL)=
24000		?.DPB(3,FNC,LUN,(PRI+0)^8+(EFN+0),ISB,AST,
24050		?.SUBLIST6(?.SUBLIST(PRL))) $;
24100	
24150	    MACRO ?QIOW$S(FNC,LUN,EFN,PRI,ISB,AST,PRL,ERR)=
24200		?DIR$(<?QIOW$(FNC,LUN,EFN,PRI,ISB,AST,PRL)>,ERR) $;
24250	
24300	    MACRO ?QIOW$C(DPB)=?QIO$C(DPB) $;
24350	!
24400	! ?RCVD$ -- RECEIVE DATA
24450	!
24500	    BIND ?RCVD.DL=4;
24550	
24600	    MACRO ?RCVD$(TSK,BUF)=?.DPB(75,0,0,BUF+0) $;
24650	
24700	    MACRO ?RCVD$S(TSK,BUF,ERR)=
24750		?DIR$(<?RCVD$(,BUF)>,ERR) $;
24800	
24850	    MACRO ?RCVD$C(DPB)=
24900		BIND
24950		    ?R.VDTN[2]=(DPB)+2,		! TASK NAME (IGNORED)
25000		    ?R.VDBA=(DPB)+6 $;		! BUFFER ADDRESS
25050	!
25100	! ?RCVX$ -- RECEIVE DATA OR EXIT
25150	!
25200	    BIND ?RCVX.DL=4;
25250	
25300	    MACRO ?RCVX$(TSK,BUF)=?.DPB(77,0,0,BUF+0) $;
25350	
25400	    MACRO ?RCVX$S(TSK,BUF)=
25450		?DIR$(<?RCVX$(,BUF)>,ERR) $;
25500	
25550	    MACRO ?RCVX$C(DPB)=
25600		BIND
25650		    ?R.VXTN[2]=(DPB)+2,		! TASK NAME (IGNORED)
25700		    ?R.VXBA=(DPB)+6 $;		! BUFFER ADDRESS
25750	!
25800	! ?RDAF$ -- READ ALL EVENT FLAGS
25850	!
25900	    BIND ?RDAF.DL=2;
25950	
26000	    MACRO ?RDAF$(BUF)=?.DPB(39,BUF+0) $;
26050	
26100	    MACRO ?RDAF$S(BUF,ERR)=
26150		?DIR$(<?RDAF$(BUF)>,ERR) $;
26200	
26250	    MACRO ?RDAF$C(DPB)=
26300		BIND
26350		    ?R.DABA=(DPB)+2 $;		! BUFFER ADDRESS
26400	!
26450	! ?RQST$ -- REQUEST
26500	!
26550	    BIND ?RQST.DL=7;
26600	
26650	    MACRO ?RQST$(TSK,PRT,PRI,UGC,UOC)=
26700		?RQST.DL^8+11,RAD50 ?.DEFAULT(TSK,'      '),0,0,0,(UGC+0)^8+(UOC+0) $;
26750	
26800	    MACRO ?RQST$S(TSK,PRT,PRI,UGC,UOC,ERR)=BEGIN
26850		BIND ?R.QSTN[2]=TSK;		! TASK NAME
26900		BIND ?R.QSPN[2]=PRT;		! PARTITION NAME (IGNORED)
26950		?DIR$(<?.DPB(11,.?R.QSTN[0],.?R.QSTN[1],0,0,0,
27000		    (UGC+0)^8+(UOC+0))>,ERR) END$;
27050	
27100	    MACRO ?RQST$C(DPB)=
27150		BIND
27200		    ?R.QSTN[2]=(DPB)+2,		! TASK NAME
27250		    ?R.QSPN[2]=(DPB)+6,		! PARTION NAME (IGNORED)
27300		    ?R.QSPR=(DPB)+10;		! PRIORITY (IGNORED)
27350	!	BYTE BIND
27400	!	    ?R.QSPC=(DPB)+12,		! UIC OWNER
27450	!	    ?R.QSGC=(DPB)+13 $;		! UIC GROUP
27500		MACRO				! UNTIL BYTE BIND FIXED
27550		    $QUOTE $QUOTE ?R.QSPC=((DPB)+12)<0,8> $QUOTE $,
27600		    $QUOTE $QUOTE ?R.QSGC=((DPB)+13)<0,8> $QUOTE $ $;
27650	!
27700	! ?RREF$ -- RECEIVE BY REFERENCE
27750	!
27800	    BIND ?RREF.DL=2;
27850	
27900	    MACRO ?RREF$(WDB)=?.DPB(81,WDB+0) $;
27950	
28000	    MACRO ?RREF$S(WDB,ERR)=
28050		?DIR$(<?RREF$(WDB)>,ERR) $;
28100	
28150	    MACRO ?RREF$C(DPB)=
28200		BIND
28250		    ?R.REBA=(DPB)+2 $;		! WINDOW DEFINITION BLOCK ADDRESS
28300	!
28350	! ?RSUM$ -- RESUME
28400	!
28450	    BIND ?RSUM.DL=3;
28500	
28550	    MACRO ?RSUM$(TSK)=?RSUM.DL^8+47,RAD50 ?.DEFAULT(TSK,'      ') $;
28600	
28650	    MACRO ?RSUM$S(TSK,ERR)=BEGIN
28700		BIND ?R.SUTN[2]=TSK;
28750		?DIR$(<?.DPB(47,.?R.SUTN[0],.?R.SUTN[1])>,ERR) END$;
28800	
28850	    MACRO ?RSUM$C(DPB)=
28900		BIND
28950		    ?R.SUTN[2]=(DPB)+2 $;	! TASK NAME
29000	!
29050	! ?RUN$ -- RUN
29100	!
29150	    BIND ?RUN.DL=11;
29200	
29250	    MACRO ?RUN$(TSK,PRT,PRI,UGC,UOC,SMG,SNT,RMG,RNT)=
29300		?RUN.DL^8+17,RAD50 ?.DEFAULT(TSK,'      '),0,0,0,
29350		(UGC+0)^8+(UOC+0),SMG+0,SNT+0,RMG+0,RNT+0 $;
29400	
29450	    MACRO ?RUN$S(TSK,PRT,PRI,UGC,UOC,SMG,SNT,RMG,RNT,ERR)=BEGIN
29500		BIND ?R.UNTN[2]=TSK;		! TASK NAME
29550		BIND ?R.UNPN[2]=PRT;		! PARTITION NAME (IGNORED)
29600		?DIR$(<?.DPB(17,.?R.UNTN[0],.?R.UNTN[1],0,0,0,(UGC+0)^8+(UOC+0),
29650		    SMG,SNT,RMG,RNT+0)>,ERR) END$;
29700	
29750	    MACRO ?RUN$C(DPB)=
29800		BIND
29850		    ?R.UNTN[2]=(DPB)+2,		! TASK NAME
29900		    ?R.UNPN[2]=(DPB)+6,		! PARTITION NAME (IGNORED)
29950		    ?R.UNPR=(DPB)+10;		! PRIORITY (IGNORED)
30000	!	BYTE BIND
30050	!	    ?R.UNPC=(DPB)+12,		! UIC OWNER
30100	!	    ?R.UNGC=(DPB)+13;		! UIC GROUP
30150		MACRO				! UNTIL BYTE BIND FIXED
30200		    $QUOTE $QUOTE ?R.UNPC=((DPB)+12)<0,8> $QUOTE $,
30250		    $QUOTE $QUOTE ?R.UNGC=((DPB)+13)<0,8> $QUOTE $;
30300		BIND
30350		    ?R.UNSM=(DPB)+14,		! SCHEDULE MAGNITUDE
30400		    ?R.UNSU=(DPB)+16,		! SCHEDULE UNIT
30450		    ?R.UNRM=(DPB)+18,		! RESCHEDULE MAGNITUDE
30500		    ?R.UNRU=(DPB)+20 $;		! RESCHEDULE UNIT
30550	!
30600	! ?SDAT$ -- SEND DATA
30650	!
30700	    BIND ?SDAT.DL=5;
30750	
30800	    MACRO ?SDAT$(TSK,BUF,EFN)=
30850		?SDAT.DL^8+71,RAD50 ?.DEFAULT(TSK,'      '),BUF+0,EFN+0 $;
30900	
30950	    MACRO ?SDAT$S(TSK,BUF,EFN,ERR)=BEGIN
31000		BIND ?S.DATN[2]=TSK;		! TASK NAME
31050		?DIR$(<?.DPB(71,.?S.DATN[0],.?S.DATN[1],BUF,EFN+0)>,ERR) END$;
31100	
31150	    MACRO ?SDAT$C(DPB)=
31200		BIND
31250		    ?S.DATN[2]=(DPB)+2,		! TASK NAME
31300		    ?S.DABA=(DPB)+6,		! BUFFER ADDRESS
31350		    ?S.DAEF=(DPB)+8 $;		! EVENT FLAG NUMBER
31400	!
31450	! ?SETF$ -- SET EVENT FLAG
31500	!
31550	    BIND ?SETF.DL=2;
31600	
31650	    MACRO ?SETF$(EFN)=?.DPB(33,EFN+0) $;
31700	
31750	    MACRO ?SETF$S(EFN,ERR)=
31800		?DIR$(<?SETF$(EFN)>,ERR) $;
31850	
31900	    MACRO ?SETF$C(DPB)=
31950		BIND
32000		    ?S.ETEF=(DPB)+2 $;		! EVENT FLAG NUMBER
32050	!
32100	! ?SFPA$ -- SPECIFY FLOATING POINT EXCEPTION AST
32150	!
32200	    BIND ?SFPA.DL=2;
32250	
32300	    MACRO ?SFPA$(AST)=?.DPB(111,AST+0) $;
32350	
32400	    MACRO ?SFPA$S(AST,ERR)=
32450		?DIR$(<?SFPA$(AST)>,ERR) $;
32500	
32550	    MACRO ?SFPA$C(DPB)=
32600		BIND
32650		    ?S.FPAE=(DPB)+2 $;		! ADDR. OF FLOATING POINT AST
32700	!
32750	! ?SPND$S -- SUSPEND
32800	!
32850	    MACRO ?SPND$S(ERR)=
32900		?DIR$(<?.DPB(45)>,ERR) $;
32950	!
33000	! ?SPRA$ -- SPECIFY POWER RECOVERY AST
33050	!
33100	    BIND ?SPRA.DL=2;
33150	
33200	    MACRO ?SPRA$(AST)=?.DPB(109,AST+0) $;
33250	
33300	    MACRO ?SPRA$S(AST,ERR)=
33350		?DIR$(<?SPRA$(AST)>,ERR) $;
33400	
33450	    MACRO ?SPRA$C(DPB)=
33500		BIND
33550		    ?S.PRAE=(DPB)+2 $;		! AST ENTRY ADDRESS
33600	!
33650	! ?SRDA$ -- SPECIFY RECEIVE AST
33700	!
33750	    BIND ?SRDA.DL=2;
33800	
33850	    MACRO ?SRDA$(AST)=?.DPB(107,AST+0) $;
33900	
33950	    MACRO ?SRDA$S(AST,ERR)=
34000		?DIR$(<?SRDA$(AST)>,ERR) $;
34050	
34100	    MACRO ?SRDA$C(DPB)=
34150		BIND
34200		    ?S.RDAE=(DPB)+2 $;		! ADDRESS OF RECEIVE AST
34250	!
34300	! ?SREF$ -- SEND BY REFERENCE
34350	!
34400	    BIND ?SREF.DL=5;
34450	
34500	    MACRO ?SREF$(TSK,WDB,EFN)=
34550		?SREF.DL^8+69,RAD50 ?.DEFAULT(TSK,'      '),EFN+0,WDB+0 $;
34600	
34650	    MACRO ?SREF$S(TSK,WDB,EFN,ERR)=BEGIN
34700		BIND ?S.RETN[2]=TSK;		! TASK NAME
34750		?DIR$(<?.DPB(69,.?S.RETN[0],.?S.RETN[1],EFN,WDB+0)>,ERR) END$;
34800	
34850	    MACRO ?SREF$C(DPB)=
34900		BIND
34950		    ?S.RETN[2]=(DPB)+2,		! RECEIVER TASK NAME
35000		    ?S.REEF=(DPB)+6,		! EVENT FLAG NUMBER
35050		    ?S.REBA=(DPB)+8 $;		! WINDOW DEFINITION BLOCK ADDRESS
35100	!
35150	! ?SRRA$ -- SPECIFY RECEIVE-BY-REFERENCE AST
35200	!
35250	    BIND ?SRRA.DL=2;
35300	
35350	    MACRO ?SRRA$(AST)=?.DPB(21,AST+0) $;
35400	
35450	    MACRO ?SRRA$S(AST,ERR)=
35500		?DIR$(<?SRRA$(AST)>,ERR) $;
35550	
35600	    MACRO ?SRRA$C(DPB)=
35650		BIND
35700		    ?S.RRAE=(DPB)+2 $;		! AST ENTRY ADDRESS
35750	!
35800	! ?SVDB$ -- SPECIFY SST VECTOR TABLE FOR DEBUGGING AID
35850	!
35900	    BIND ?SVDB.DL=3;
35950	
36000	    MACRO ?SVDB$(ADR,LEN)=?.DPB(103,ADR,LEN+0) $;
36050	
36100	    MACRO ?SVDB$S(ADR,LEN,ERR)=
36150		?DIR$(<?SVDB$(ADR,LEN)>,ERR) $;
36200	
36250	    MACRO ?SVDB$C(DPB)=
36300		BIND
36350		    ?S.VDTA=(DPB)+2,		! TABLE ADDRESS
36400		    ?S.VDTL=(DPB)+4 $;		! TABLE LENGTH (WORDS)
36450	!
36500	! ?SVTK$ -- SPECIFY SST VECTOR TABLE FOR TASK
36550	!
36600	    BIND ?SVTK.DL=3;
36650	
36700	    MACRO ?SVTK$(ADR,LEN)=?.DPB(105,ADR,LEN+0) $;
36750	
36800	    MACRO ?SVTK$S(ADR,LEN,ERR)=
36850		?DIR$(<?SVTK$(ADR,LEN)>,ERR) $;
36900	
36950	    MACRO ?SVTK$C(DPB)=
37000		BIND
37050		    ?S.VTTA=(DPB)+2,		! TABLE ADDRESS
37100		    ?S.VTTL=(DPB)+4 $;		! TABLE LENGTH
37150	!
37200	! ?UMAP$ -- UNMAP ADDRESS WINDOW
37250	!
37300	    BIND ?UMAP.DL=2;
37350	
37400	    MACRO ?UMAP$(WDB)=?.DPB(123,WDB+0) $;
37450	
37500	    MACRO ?UMAP$S(WDB,ERR)=
37550		?DIR$(<?UMAP$(WDB)>,ERR) $;
37600	
37650	    MACRO ?UMAP$C(DPB)=
37700		BIND
37750		    ?U.MABA=(DPB)+2 $;		! WINDOW DEFINITION BLOCK ADDRESS
37800	!
37850	! ?WSIG$S -- WAIT FOR SIGNIFICANT EVENT
37900	!
37950	    MACRO ?WSIG$S(ERR)=
38000		?DIR$(<?.DPB(49)>,ERR) $;
38050	!
38100	! ?WTLO$ -- WAIT FOR LOGICAL 'OR' OF EVENT FLAGS
38150	!
38200	    BIND ?WTLO.DL=3;
38250	
38300	    MACRO ?WTLO$(GRP,MSK)=?.DPB(43,GRP,MSK+0) $;
38350	
38400	    MACRO ?WTLO$S(GRP,MSK,ERR)=
38450		?DIR$(<?WTLO$(GRP,MSK)>,ERR) $;
38500	!
38550	! ?WTSE$ -- WAIT FOR SINGLE EVENT FLAG
38600	!
38650	    BIND ?WTSE.DL=2;
38700	
38750	    MACRO ?WTSE$(EFN)=?.DPB(41,EFN+0) $;
38800	
38850	    MACRO ?WTSE$S(EFN,ERR)=
38900		?DIR$(<?WTSE$(EFN)>,ERR) $;
38950	
39000	    MACRO ?WTSE$C(DPB)=
39050		BIND
39100		    ?W.TSEF=(DPB)+2 $;		! EVENT FLAG NUMBER
39150	!
39200	! ?RDBDF$ -- DEFINE REGION DEFINITION BLOCK SYMBOLS
39250	!
39300	    MACRO ?RDBDF$=MACRO
39350		?R.GID(RDB)=((RDB)[0]) $QUOTE $,
39400		?R.GSIZ(RDB)=((RDB)[1]) $QUOTE $,
39450		?R.GNAM(RDB)=((RDB)[2]) $QUOTE $,
39500		?R.GPAR(RDB)=((RDB)[4]) $QUOTE $,
39550		?R.GSTS(RDB)=((RDB)[6]) $QUOTE $,
39600		    ?RS.RED=0,1 $QUOTE $,
39650		    ?RS.WRT=1,1 $QUOTE $,
39700		    ?RS.EXT=2,1 $QUOTE $,
39750		    ?RS.DEL=3,1 $QUOTE $,
39800		    ?RS.NEX=4,1 $QUOTE $,
39850		    ?RS.ATT=5,1 $QUOTE $,
39900		    ?RS.NDL=6,1 $QUOTE $,
39950		    ?RS.MDL=7,1 $QUOTE $,
40000		    ?RS.UNM=14,1 $QUOTE $,
40050		    ?RS.CRR=15,1 $QUOTE $,
40100		?R.GPRO(RDB)=((RDB)[7]) $QUOTE $,
40150		?R.GLGH=16 $QUOTE $;
40200		UNDECLARE $QUOTE $QUOTE ?RDBDF$;
40250		MACRO ?RDBDF$=UNDECLARE ?.......... $QUOTE $ $;
40300	!
40350	! ?RDBBK$ -- DEFINE REGION DEFINITION BLOCK
40400	!
40450	    MACRO ?RDBBK$(SIZ,NAM,PAR,STS,PRO)=
40500		0,SIZ+0,
40550		RAD50 ?.DEFAULT(NAM,'      '),
40600		RAD50 ?.DEFAULT(PAR,'      '),
40650		?.MASK(?.SUBLIST(STS)),
40700		PRO+0 $;
40750	!
40800	! ?WDBDF$ -- DEFINE WINDOW DEFINITION BLOCK SYMBOLS
40850	!
40900	    MACRO ?WDBDF$=MACRO
40950		?W.NID(WDB)=((WDB)[0])<0,8> $QUOTE $,
41000		?W.NAPR(WDB)=((WDB)[0])<8,8> $QUOTE $,
41050		?W.NBAS(WDB)=((WDB)[1]) $QUOTE $,
41100		?W.NSIZ(WDB)=((WDB)[2]) $QUOTE $,
41150		?W.NRID(WDB)=((WDB)[3]) $QUOTE $,
41200		?W.NOFF(WDB)=((WDB)[4]) $QUOTE $,
41250		?W.NLEN(WDB)=((WDB)[5]) $QUOTE $,
41300		?W.NSTS(WDB)=((WDB)[6]) $QUOTE $,
41350		    ?WS.RED=0,1 $QUOTE $,
41400		    ?WS.WRT=1,1 $QUOTE $,
41450		    ?WS.EXT=2,1 $QUOTE $,
41500		    ?WS.DEL=3,1 $QUOTE $,
41550		    ?WS.RCX=6,1 $QUOTE $,
41600		    ?WS.MAP=7,1 $QUOTE $,
41650		    ?WS.64B=8,1 $QUOTE $,
41700		    ?WS.RRF=12,1 $QUOTE $,
41750		    ?WS.ELW=13,1 $QUOTE $,
41800		    ?WS.UNM=14,1 $QUOTE $,
41850		    ?WS.CRW=15,1 $QUOTE $,
41900		?W.NSRB(WDB)=((WDB)[7]) $QUOTE $,
41950		?W.NLGH=16 $QUOTE $;
42000		UNDECLARE $QUOTE $QUOTE ?WDBDF$;
42050		MACRO ?WDBDF$=UNDECLARE ?.......... $QUOTE $ $;
42100	!
42150	! ?WDBBK$ -- DEFINE WINDOW DEFINITION BLOCK
42200	!
42250	    MACRO ?WDBBK$(APR,SIZ,RID,OFF,LEN,STS,SRB)=
42300		APR+0,0,SIZ+0,RID+0,OFF+0,LEN+0,
42350		?.MASK(?.SUBLIST(STS)),SRB+0 $;
42400	!
42450	! ?SNPBK$ -- DEFINE SNAPSHOT DUMP CONTROL BLOCK
42500	!
42550	    MACRO ?SNPBK$(DEV,UNIT,CTL,EFN,ID,L1,H1,L2,H2,L3,H3,L4,H4)=
42600		?SNPDF$;
42650		GLOBAL ?..SNBK[15]=(?.MASK(?.SUBLIST(CTL)),DEV,UNIT+0,EFN+0,ID+0,
42700		    L1+0,H1+0,L2+0,H2+0,L3+0,H3+0,L4+0,H4+0,RAD50 'PMD...')$;
42750	!
42800	! ?SNAP$ -- TAKE SNAPSHOT DUMP
42850	!
42900	    MACRO ?SNAP$(CTL,EFN,ID,L1,H1,L2,H2,L3,H3,L4,H4,ERR)=BEGIN
42950		EXTERNAL ?..SNBK[15],$DSW;
43000		?DRERR$;
43050		?SNPDF$;
43100		MACRO ?.SNAPERR=
43150		    (?.SELECT(ERR,<ERR>,<?RSXERRDF$>);LEAVE ?.SNAPBLK) $QUOTE $;
43200		MACRO ?.MOVE(DST)[SRC]=?.ASGNC((DST)[$COUNT],SRC) $QUOTE $;
43250		LABEL ?.SNAPBLK;
43300	?.SNAPBLK:BEGIN
43350		    ?.ASGNC(?SB.CTL,?.MASK(?.SUBLIST(CTL)));
43400		    ?.ASGNC(?SB.EFN,EFN);
43450		    ?.ASGNC(?SB.ID,ID);
43500		    ?.MOVE(?SB.LM1,L1,H1,L2,H2,L3,H3,L4,H4);
43550		    ?CLEF$S(.?SB.EFN,?.SNAPERR);
43600		    ?SDAT$S(?SB.PMD,?..SNBK,,?.SNAPERR);
43650		    ?RQST$S(?SB.PMD,,,,,(IF .$DSW NEQ ?IE.ACT THEN ?.SNAPERR));
43700		    ?WTSE$S(.?SB.EFN,?.SNAPERR);
43750		    END;
43800		END$;
43850	!
43900	! ?SNPDF$ -- DEFINE SNAPSHOT DUMP CONTROL BLOCK SYMBOLS
43950	!
44000	    MACRO ?SNPDF$=MACRO
44050		?SB.CTL=?..SNBK[0] $QUOTE $,
44100		    ?SC.HDR=0,1 $QUOTE $,
44150		    ?SC.LUN=1,1 $QUOTE $,
44200		    ?SC.OVL=2,1 $QUOTE $,
44250		    ?SC.STK=3,1 $QUOTE $,
44300		    ?SC.WRD=4,1 $QUOTE $,
44350		    ?SC.BYT=5,1 $QUOTE $,
44400		?SB.DEV=?..SNBK[1] $QUOTE $,
44450		?SB.UNT=?..SNBK[2] $QUOTE $,
44500		?SB.EFN=?..SNBK[3] $QUOTE $,
44550		?SB.ID =?..SNBK[4] $QUOTE $,
44600		?SB.LM1=?..SNBK[5] $QUOTE $,
44650		?SB.PMD=?..SNBK[13] $QUOTE $;
44700		UNDECLARE $QUOTE $QUOTE ?SNPDF$;
44750		MACRO ?SNPDF$=UNDECLARE ?.......... $QUOTE $ $;
44800	!
44850	! ?QIOSY$ -- DEFINE QIO SYMBOLS
44900	!
44950	    MACRO ?QIOSY$=
45000		?IOERR$;
45050		?DRERR$;
45100		?FILIO$;
45150		?SPCIO$;
45200		UNDECLARE $QUOTE $QUOTE ?QIOSY$;
45250		MACRO ?QIOSY$=UNDECLARE ?.......... $QUOTE $ $;
45300	!
45350	! ?DRERR$ -- STANDARD ERROR CODES RETURNED BY DIRECTIVES IN
45400	!	    THE DIRECTIVE STATUS WORD (DSW)
45450	!
45500	    MACRO ?DRERR$=
45550		UNDECLARE ?IS.SUC,?IE.AST;
45600		BIND			! SUCCESSFUL COMPLETION CODES
45650		    ?IS.CLR=0,		! EVENT FLAG WAS CLEAR
45700		    ?IS.SUC=1,		! SUCCESSFUL COMPLETION
45750		    ?IS.SET=2,		! EVENT FLAG WAS SET
45800		    ?IS.SPD=2;		! TASK WAS SUSPENDED
45850		BIND
45900		    ?IE.UPN=-1,		! INSUFFICIENT DYNAMIC STORAGE
45950		    ?IE.INS=-2,		! SPECIFIED TASK NOT INSTALLED
46000		    ?IE.PTS=-3,		! PARTITION TOO SMALL FOR TASK
46050		    ?IE.UNS=-4,		! INSUFFICIENT DYNAMIC STORAGE FOR SEND
46100		    ?IE.ULN=-5,		! UN-ASSIGNED LUN
46150		    ?IE.HWR=-6,		! DEVICE HANDLER NOT RESIDENT
46200		    ?IE.ACT=-7,		! TASK NOT ACTIVE
46250		    ?IE.ITS=-8,		! DIRECTIVE INCONSISTENT WITH TASK STATE
46300		    ?IE.FIX=-9,		! TASK ALREADY FIXED/UNFIXED
46350		    ?IE.CKP=-10,	! ISSUING TASK NOT CHECKPOINTABLE
46400		    ?IE.TCH=-11,	! TASK IS CHECKPOINTABLE
46450		    ?IE.RBS=-12,	! RECEIVE BUFFER IS TOO SMALL
46500		    ?IE.AST=-80,	! DIRECTIVE ISSUED/NOT ISSUED FROM AST
46550		    ?IE.ALG=-84,	! ALIGNMENT ERROR
46600		    ?IE.WOV=-85,	! ADDRESS WINDOW ALLOCATION OVERFLOW
46650		    ?IE.NVR=-86,	! INVALID REGION ID
46700		    ?IE.NVW=-87,	! INVALID ADDRESS WINDOW ID
46750		    ?IE.ITP=-88,	! INVALID TI PARAMETER
46800		    ?IE.IBS=-89,	! INVALID SEND BUFFER SIZE
46850		    ?IE.LNL=-90,	! LUN LOCKED IN USE
46900		    ?IE.IUI=-91,	! INVALID UIC
46950		    ?IE.IDU=-92,	! INVALID DEVICE OR UNIT
47000		    ?IE.ITI=-93,	! INVALID TIME PARAMETERS
47050		    ?IE.PNS=-94,	! PARTITION/REGION NOT IN SYSTEM
47100		    ?IE.IPR=-95,	! INVALID PRIORITY (GTR 250.)
47150		    ?IE.ILU=-96,	! INVALID LUN
47200		    ?IE.IEF=-97,	! INVALID EVENT (GTR 64)
47250		    ?IE.ADP=-98,	! PART OF DPB OUT OF USER'S SPACE
47300		    ?IE.SDP=-99;	! DIC OR DPB SIZE INVALID
47350		UNDECLARE $QUOTE $QUOTE ?DRERR$;
47400		MACRO ?DRERR$=UNDECLARE ?.......... $QUOTE $ $;
47450	!
47500	! ?IOERR$ -- I/O STATUS CODES
47550	!
47600	    UNDECLARE $QUOTE ?IOERR$;
47650	    MACRO ?IOERR$=
47700		UNDECLARE ?IS.SUC,?IE.AST;
47750		BIND
47800		    ?IE.BAD=-01 AND #377,
47850		    ?IE.IFC=-02 AND #377,
47900		    ?IE.DNR=-03 AND #377,
47950		    ?IE.VER=-04 AND #377,
48000		    ?IE.ONP=-05 AND #377,
48050		    ?IE.SPC=-06 AND #377,
48100		    ?IE.DNA=-07 AND #377,
48150		    ?IE.DAA=-08 AND #377,
48200		    ?IE.DUN=-09 AND #377,
48250		    ?IE.EOF=-10 AND #377,
48300		    ?IE.EOV=-11 AND #377,
48350		    ?IE.WLK=-12 AND #377,
48400		    ?IE.DAO=-13 AND #377,
48450		    ?IE.SRE=-14 AND #377,
48500		    ?IE.ABO=-15 AND #377,
48550		    ?IE.PRI=-16 AND #377,
48600		    ?IE.RSU=-17 AND #377,
48650		    ?IE.OVR=-18 AND #377,
48700		    ?IE.BYT=-19 AND #377,
48750		    ?IE.BLK=-20 AND #377,
48800		    ?IE.MOD=-21 AND #377,
48850		    ?IE.CON=-22 AND #377,
48900		    ?IE.BBE=-56 AND #377,
48950		    ?IE.STK=-58 AND #377,
49000		    ?IE.FHE=-59 AND #377,
49050		    ?IE.EOT=-62 AND #377,
49100		    ?IE.OFL=-65 AND #377,
49150		    ?IE.BCC=-66 AND #377,
49200		    ?IE.NOD=-23 AND #377,
49250		    ?IE.DFU=-24 AND #377,
49300		    ?IE.IFU=-25 AND #377,
49350		    ?IE.NSF=-26 AND #377,
49400		    ?IE.LCK=-27 AND #377,
49450		    ?IE.HFU=-28 AND #377,
49500		    ?IE.WAC=-29 AND #377,
49550		    ?IE.CKS=-30 AND #377,
49600		    ?IE.WAT=-31 AND #377,
49650		    ?IE.RER=-32 AND #377,
49700		    ?IE.WER=-33 AND #377,
49750		    ?IE.ALN=-34 AND #377,
49800		    ?IE.SNC=-35 AND #377,
49850		    ?IE.SQC=-36 AND #377,
49900		    ?IE.NLN=-37 AND #377,
49950		    ?IE.CLO=-38 AND #377,
50000		    ?IE.DUP=-57 AND #377,
50050		    ?IE.BVR=-63 AND #377,
50100		    ?IE.BHD=-64 AND #377,
50150		    ?IE.EXP=-75 AND #377,
50200		    ?IE.BTF=-76 AND #377,
50250		    ?IE.ALC=-84 AND #377,
50300		    ?IE.ULK=-85 AND #377,
50350		    ?IE.NBF=-39 AND #377,
50400		    ?IE.RBG=-40 AND #377,
50450		    ?IE.NBK=-41 AND #377,
50500		    ?IE.ILL=-42 AND #377,
50550		    ?IE.BTP=-43 AND #377,
50600		    ?IE.RAC=-44 AND #377,
50650		    ?IE.RAT=-45 AND #377,
50700		    ?IE.RCN=-46 AND #377,
50750		    ?IE.2DV=-48 AND #377,
50800		    ?IE.FEX=-49 AND #377,
50850		    ?IE.BDR=-50 AND #377,
50900		    ?IE.RNM=-51 AND #377,
50950		    ?IE.BDI=-52 AND #377,
51000		    ?IE.FOP=-53 AND #377,
51050		    ?IE.BNM=-54 AND #377,
51100		    ?IE.BDV=-55 AND #377,
51150		    ?IE.NFI=-60 AND #377,
51200		    ?IE.ISQ=-61 AND #377,
51250		    ?IE.NNC=-77 AND #377,
51300		    ?IE.AST=-80 AND #377,
51350		    ?IE.NNN=-68 AND #377,
51400		    ?IE.NFW=-69 AND #377,
51450		    ?IE.BLB=-70 AND #377,
51500		    ?IE.TMM=-71 AND #377,
51550		    ?IE.NDR=-72 AND #377,
51600		    ?IE.CNR=-73 AND #377,
51650		    ?IE.TMO=-74 AND #377,
51700		    ?IE.NNL=-78 AND #377,
51750		    ?IE.NLK=-79 AND #377,
51800		    ?IE.NST=-80 AND #377,
51850		    ?IE.FLN=-81 AND #377,
51900		    ?IE.IES=-82 AND #377,
51950		    ?IE.PES=-83 AND #377,
52000		    ?IS.PND=+00,
52050		    ?IS.SUC=+01,
52100		    ?IS.RDD=+02,
52150		    ?IS.BV=+05,
52200		    ?IS.CR='?M'%CR%^8+1,
52250		    ?IS.ESC='?['%ESC%^8+1,
52300		    ?IS.CC='?C'%ETX%^8+1,
52350		    ?IS.ESQ=(#200+'?['%ESC%)^8+1,
52400		    ?IS.PES=#200^8+1,
52450		    ?IS.EOT='?D'%EOT%^8+1,
52500		    ?IS.TAB='?I'%TAB%^8+1,
52550		    ?IS.TMO=+2;
52600		UNDECLARE $QUOTE $QUOTE ?IOERR$;
52650		MACRO ?IOERR$=UNDECLARE ?.......... $QUOTE $ $;
52700	!
52750	! ?FILIO$ -- STANDARD I/O FUNCTION CODES
52800	!
52850	    MACRO ?FILIO$=
52900		UNDECLARE ?IQ.UMD;
52950		BIND
53000		    ?IQ.X=#001+#000^8,
53050		    ?IQ.Q=#002+#000^8,
53100		    ?IQ.S=#004+#000^8,
53150		    ?IQ.UMD=#004+#000^8,
53200		    ?IO.KIL=#012+#000^8,
53250		    ?IO.RDN=#022+#000^8,
53300		    ?IO.UNL=#042+#000^8,
53350		    ?IO.LTK=#050+#000^8,
53400		    ?IO.RTK=#060+#000^8,
53450		    ?IO.SET=#030+#000^8,
53500		    ?IO.WLB=#000+#001^8,
53550		    ?IO.RLB=#000+#002^8,
53600		    ?IO.LOV=#010+#002^8,
53650		    ?IO.ATT=#000+#003^8,
53700		    ?IO.DET=#000+#004^8,
53750		    ?IO.FNA=#000+#011^8,
53800		    ?IO.RNA=#000+#013^8,
53850		    ?IO.ENA=#000+#014^8,
53900		    ?IO.CLN=#000+#007^8,
53950		    ?IO.ACR=#000+#015^8,
54000		    ?IO.ACW=#000+#016^8,
54050		    ?IO.ACE=#000+#017^8,
54100		    ?IO.DAC=#000+#020^8,
54150		    ?IO.RVB=#000+#021^8,
54200		    ?IO.WVB=#000+#022^8,
54250		    ?IO.EXT=#000+#023^8,
54300		    ?IO.CRE=#000+#024^8,
54350		    ?IO.DEL=#000+#025^8,
54400		    ?IO.RAT=#000+#026^8,
54450		    ?IO.WAT=#000+#027^8,
54500		    ?IO.APV=#010+#030^8,
54550		    ?IO.APC=#000+#030^8;
54600		UNDECLARE $QUOTE $QUOTE ?FILIO$;
54650		MACRO ?FILIO$=UNDECLARE ?.......... $QUOTE $ $;
54700	!
54750	! ?SPCIO$ -- SPECIAL I/O FUNCTION CODES
54800	!
54850	    MACRO ?SPCIO$=
54900		BIND
54950		    ?IO.WLV=#100+#001^8,
55000		    ?IO.WLS=#010+#001^8,
55050		    ?IO.WNS=#020+#001^8,
55100		    ?IO.WAL=#010+#001^8,
55150		    ?IO.WMS=#020+#001^8,
55200		    ?IO.CCO=#040+#001^8,
55250		    ?IO.WBT=#100+#001^8,
55300		    ?IO.WLT=#010+#001^8,
55350		    ?IO.WLC=#020+#001^8,
55400		    ?IO.WPB=#040+#001^8,
55450		    ?IO.WDD=#044+#001^8,
55500		    ?IO.RLV=#100+#002^8,
55550		    ?IO.RST=#001+#002^8,
55600		    ?IO.RAL=#010+#002^8,
55650		    ?IO.RNE=#020+#002^8,
55700		    ?IO.RNC=#040+#002^8,
55750		    ?IO.RTM=#200+#002^8,
55800		    ?IO.RDB=#200+#002^8,
55850		    ?IO.RHD=#010+#002^8,
55900		    ?IO.RNS=#020+#002^8,
55950		    ?IO.CRC=#040+#002^8,
56000		    ?IO.RPB=#040+#002^8,
56050		    ?IO.ATA=#010+#003^8,
56100		    ?IO.GTS=#000+#005^8,
56150		    ?IO.R1C=#000+#005^8,
56200		    ?IO.INL=#000+#005^8,
56250		    ?IO.TRM=#010+#005^8,
56300		    ?IO.RWD=#000+#005^8,
56350		    ?IO.SPB=#020+#005^8,
56400		    ?IO.SPF=#040+#005^8,
56450		    ?IO.STC=#100+#005^8,
56500		    ?IO.SEC=#120+#005^8,
56550		    ?IO.RWU=#140+#005^8,
56600		    ?IO.SMO=#160+#005^8,
56650		    ?IO.HNG=#000+#006^8,
56700		    ?IO.RBC=#000+#006^8,
56750		    ?IO.MOD=#000+#006^8,
56800		    ?IO.HDX=#010+#006^8,
56850		    ?IO.FDX=#020+#006^8,
56900		    ?IO.SYN=#040+#006^8,
56950		    ?IO.EOF=#000+#006^8,
57000		    ?IO.RTC=#000+#007^8,
57050		    ?IO.SAO=#000+#010^8,
57100		    ?IO.SSO=#000+#011^8,
57150		    ?IO.RPR=#000+#011^8,
57200		    ?IO.MSO=#000+#012^8,
57250		    ?IO.SLO=#000+#013^8,
57300		    ?IO.MLO=#000+#014^8,
57350		    ?IO.LED=#000+#024^8,
57400		    ?IO.SDO=#000+#025^8,
57450		    ?IO.SDI=#000+#026^8,
57500		    ?IO.SCS=#000+#026^8,
57550		    ?IO.REL=#000+#027^8,
57600		    ?IO.MCS=#000+#027^8,
57650		    ?IO.ADS=#000+#030^8,
57700		    ?IO.CCI=#000+#030^8,
57750		    ?IO.MDI=#000+#031^8,
57800		    ?IO.DCI=#000+#031^8,
57850		    ?IO.XMT=#000+#031^8,
57900		    ?IO.XNA=#010+#031^8,
57950		    ?IO.HIS=#000+#032^8,
58000		    ?IO.RCI=#000+#032^8,
58050		    ?IO.RCV=#000+#032^8,
58100		    ?IO.MDO=#000+#033^8,
58150		    ?IO.CTI=#000+#033^8,
58200		    ?IO.CON=#000+#033^8,
58250		    ?IO.CPR=#010+#033^8,
58300		    ?IO.CAS=#020+#033^8,
58350		    ?IO.CRJ=#040+#033^8,
58400		    ?IO.CBO=#110+#033^8,
58450		    ?IO.CTR=#210+#033^8,
58500		    ?IO.GNI=#010+#035^8,
58550		    ?IO.GLI=#020+#035^8,
58600		    ?IO.GLC=#030+#035^8,
58650		    ?IO.GRI=#040+#035^8,
58700		    ?IO.GRC=#050+#035^8,
58750		    ?IO.GRN=#060+#035^8,
58800		    ?IO.CSM=#070+#035^8,
58850		    ?IO.CIN=#100+#035^8,
58900		    ?IO.SPW=#110+#035^8,
58950		    ?IO.CPW=#120+#035^8,
59000		    ?IO.NLB=#130+#035^8,
59050		    ?IO.DLB=#140+#035^8,
59100		    ?IO.DTI=#000+#034^8,
59150		    ?IO.DIS=#000+#034^8,
59200		    ?IO.MDA=#000+#034^8,
59250		    ?IO.RTI=#000+#035^8,
59300		    ?IO.CTL=#000+#035^8,
59350		    ?IO.STP=#000+#035^8,
59400		    ?IO.CNT=#000+#036^8,
59450		    ?IO.ITI=#000+#036^8,
59500		    ?IO.CTY=#000+#007^8,
59550		    ?IO.DTY=#000+#015^8,
59600		    ?IO.LDI=#000+#016^8,
59650		    ?IO.UDI=#010+#023^8,
59700		    ?IO.LTI=#000+#017^8,
59750		    ?IO.UTI=#020+#023^8,
59800		    ?IO.LTY=#000+#020^8,
59850		    ?IO.UTY=#030+#023^8,
59900		    ?IO.LKE=#000+#024^8,
59950		    ?IO.UER=#040+#023^8,
60000		    ?IO.NLK=#000+#023^8,
60050		    ?IO.ONL=#000+#037^8,
60100		    ?IO.FLN=#000+#025^8,
60150		    ?IO.RAD=#000+#021^8;
60200		UNDECLARE $QUOTE $QUOTE ?SPCIO$;
60250		MACRO ?SPCIO$=UNDECLARE ?.......... $QUOTE $ $;
60300	!
60350	! ?UMDIO$ -- USER-MODE DIAGNOSTIC I/O FUNCTION CODES
60400	!
60450	    MACRO ?UMDIO$=
60500		UNDECLARE ?IQ.UMD;
60550		BIND
60600		    ?IQ.UMD=#004+#000^8,
60650		    ?IO.HMS=#000+#010^8,
60700		    ?IO.BLS=#010+#010^8,
60750		    ?IO.OFF=#020+#010^8,
60800		    ?IO.RDH=#030+#010^8,
60850		    ?IO.WDH=#040+#010^8,
60900		    ?IO.WCK=#050+#010^8,
60950		    ?IO.RNF=#060+#010^8,
61000		    ?IO.RNR=#070+#010^8,
61050		    ?IO.LPC=#100+#010^8,
61100		    ?IO.ERS=#110+#010^8;
61150		UNDECLARE $QUOTE $QUOTE ?UMDIO$;
61200		MACRO ?UMDIO$=UNDECLARE ?.......... $QUOTE $ $;
61250	!
61300	! ?TTSYM$ -- TERMINAL DRIVER SYMBOL DEFINITIONS
61350	!
61400	    MACRO ?TTSYM$=
61450		BIND
61500		    ?TC.WID=1,
61550		    ?TC.LPP=2,
61600		    ?TC.RSP=3,
61650		    ?TC.XSP=4,
61700		    ?TC.STB=5,
61750		    ?TC.ISL=6,
61800		    ?TC.RAT=7,
61850		    ?TC.TTP=8,
61900		    ?TC.SCR=9,
61950		    ?TC.SCP=10,
62000		    ?TC.HFL=11,
62050		    ?TC.VFL=12,
62100		    ?TC.NL =13,
62150		    ?TC.SFF=14,
62200		    ?TC.HFF=15,
62250		    ?TC.LVF=16,
62300		    ?TC.HHT=17,
62350		    ?TC.NST=18,
62400		    ?TC.BSP=19,
62450		    ?TC.ACR=20,
62500		    ?TC.SMR=21,
62550		    ?TC.SMP=22,
62600		    ?TC.SMO=23,
62650		    ?TC.CCF=24,
62700		    ?TC.ALT=25,
62750		    ?TC.IMG=26,
62800		    ?TC.NKB=27,
62850		    ?TC.NPR=28,
62900		    ?TC.ESQ=29,
62950		    ?TC.LCP=30,
63000		    ?TC.PAR=31,
63050		    ?TC.EPA=32,
63100		    ?TC.DLU=33,
63150		    ?TC.BLK=34,
63200		    ?TC.FRM=35,
63250		    ?TC.HLD=36,
63300		    ?TC.TAP=37,
63350		    ?TC.CEQ=38,
63400		    ?TC.NEC=39,
63450		    ?TC.SLV=40,
63500		    ?TC.PRI=41,
63550		    ?TC.UC0=42,
63600		    ?TC.UC1=43,
63650		    ?TC.UC2=44,
63700		    ?TC.UC3=45,
63750		    ?TC.UC4=46,
63800		    ?TC.UC5=47,
63850		    ?TC.UC6=48,
63900		    ?TC.UC7=49,
63950		    ?TC.UC8=50,
64000		    ?TC.UC9=51,
64050		    ?TC.MAX=52,
64100		    ?SE.ICN=1,
64150		    ?SE.FIX=2,
64200		    ?SE.BIN=3,
64250		    ?SE.VAL=4,
64300		    ?SE.TER=5,
64350		    ?SE.SPD=6,
64400		    ?SE.SPL=7,
64450		    ?SE.PAR=8,
64500		    ?SE.LPR=9,
64550		    ?SE.NSC=10,
64600		    ?SE.UPN=11,
64650		    ?SE.NIH=12,
64700		    ?SF.SSC= #2400 OR #020,
64750		    ?SF.SMC= #2400 OR #040,
64800		    ?SF.RDF= #2400 OR #060,
64850		    ?SF.STT= #2400 OR #100,
64900		    ?SF.STS= #2400 OR #120,
64950		    ?SF.GSC= #2400 OR #140,
65000		    ?SF.GMC= #2400 OR #160,
65050		    ?SF.GAC= #2400 OR #200,
65100		    ?SF.SAC= #2400 OR #220,
65150		    ?SF.DEF= #010,
65200		    ?S.0   =1,
65250		    ?S.50  =2,
65300		    ?S.75  =3,
65350		    ?S.100 =4,
65400		    ?S.110 =5,
65450		    ?S.134 =6,
65500		    ?S.150 =7,
65550		    ?S.200 =8,
65600		    ?S.300 =9,
65650		    ?S.600 =10,
65700		    ?S.1200=11,
65750		    ?S.1800=12,
65800		    ?S.2000=13,
65850		    ?S.2400=14,
65900		    ?S.3600=15,
65950		    ?S.4800=16,
66000		    ?S.7200=17,
66050		    ?S.9600=18,
66100		    ?S.EXTA=19,
66150		    ?S.EXTB=20,
66200		    ?T.UNK0=0,
66250		    ?T.AS33=1,
66300		    ?T.KS33=2,
66350		    ?T.AS35=3,
66400		    ?T.L30S=4,
66450		    ?T.L30P=5,
66500		    ?T.LA36=6,
66550		    ?T.VT05=7,
66600		    ?T.VT50=8,
66650		    ?T.VT52=9,
66700		    ?T.VT55=10,
66750		    ?T.VT61=11,
66800		    ?T.L180=12,
66850		    ?T.SCR0=13,
66900		    ?T.USR0=14,
66950		    ?T.USR1=?T.USR0+1,
67000		    ?T.USR2=?T.USR1+1,
67050		    ?T.USR3=?T.USR2+1,
67100		    ?T.USR4=?T.USR3+1;
67150		MACRO
67200		    ?F1.ACR=0,1 $QUOTE $,
67250		    ?F1.BTW=1,1 $QUOTE $,
67300		    ?F1.BUF=2,1 $QUOTE $,
67350		    ?F1.UIA=3,1 $QUOTE $,
67400		    ?F1.CCO=4,1 $QUOTE $,
67450		    ?F1.ESQ=5,1 $QUOTE $,
67500		    ?F1.HLD=6,1 $QUOTE $,
67550		    ?F1.LWC=7,1 $QUOTE $,
67600		    ?F1.RNE=8,1 $QUOTE $,
67650		    ?F1.RPR=9,1 $QUOTE $,
67700		    ?F1.RST=10,1 $QUOTE $,
67750		    ?F1.RUB=11,1 $QUOTE $,
67800		    ?F1.SYN=12,1 $QUOTE $,
67850		    ?F1.TRW=13,1 $QUOTE $,
67900		    ?F1.UTB=14,1 $QUOTE $,
67950		    ?F1.VBF=15,1 $QUOTE $,
68000		    ?F2.SCH=0,1 $QUOTE $,
68050		    ?F2.GCH=1,1 $QUOTE $,
68100		    ?F2.DCH=2,1 $QUOTE $,
68150		    ?F2.DKL=3,1 $QUOTE $,
68200		    ?F2.ALT=4,1 $QUOTE $,
68250		    ?F2.SFF=5,1 $QUOTE $,
68300		    ?TF.RST=0,1 $QUOTE $,
68350		    ?TF.BIN=1,1 $QUOTE $,
68400		    ?TF.RAL=3,1 $QUOTE $,
68450		    ?TF.RNE=4,1 $QUOTE $,
68500		    ?TF.RNC=5,1 $QUOTE $,
68550		    ?TF.XOF=6,1 $QUOTE $,
68600		    ?TF.TMO=7,1 $QUOTE $,
68650		    ?TF.WAL=3,1 $QUOTE $,
68700		    ?TF.WMS=4,1 $QUOTE $,
68750		    ?TF.CCO=5,1 $QUOTE $,
68800		    ?TF.WBT=6,1 $QUOTE $,
68850		    ?TF.SYN=7,1 $QUOTE $,
68900		    ?TF.AST=3,1 $QUOTE $,
68950		    ?TF.ESQ=4,1 $QUOTE $;
69000		UNDECLARE $QUOTE $QUOTE ?TTSYM$;
69050		MACRO ?TTSYM$=UNDECLARE ?.......... $QUOTE $ $;
69100	SWITCHES LIST;