;
; EXTRACTS FROM THE RT11 SYSTEM MACRO LIBRARY
; COPIED FROM THE LISTING IN APPENDIX B
;	OF THE RT11 ADVANCED PROGRAMMER'S GUIDE
;
;
.MACRO ..V1..
.MCALL ...CM0,...CM1,...CM2,...CM3,...CM4,...CM5,...CM6
...V1=1.
.ENDM
.MACRO ..V2..
.MCALL ...CM0,...CM1,...CM2,...CM3,...CM4,...CM5,...CM6
...V1=2.
.ENDM
.MACRO .MACS
.MCALL ...CM0,...CM1,...CM2,...CM3,...CM4,...CM5,...CM6
...V1=3.
.ENDM
.MACRO ...CM0 STARG
.IF B <STARG>
	CLR	-(6.)
.IFF
.IF IDN <STARG>,#0
	CLR	-(6.)
.IFF
	MOV	STARG,-(6.)
.ENDC
.ENDC
.ENDM
.MACRO ...CM1	AREA,IC,CHAN,FLAG
...CM5 <AREA>
...V2=0
.IF B <FLAG>
.IIF B <AREA>, ...V2=1
.IFF
.IIF DIF <FLAG>,SET, ...V2=1
.ENDC
.IF NE ...V2
.IF IDN <CHAN>,<#0>
	CLRB	(0)
.IFF
.IF NB <CHAN>
	MOVB	CHAN,(0)
.ENDC
.ENDC
.IFF
.IF B <CHAN>
	MOVB	#IC,1(0)
.IFF
.NTYPE ...V2,CHAN
.IF EQ ...V2-^O27
	MOV	CHAN+<IC*^O400>,(0)
.IFF
	MOV	#IC*^O400,(0)
	MOVB	CHAN,(0)
.ENDC
.ENDC
.ENDC
.ENDM
.MACRO ...CM2	ARG,OFFSE,INS,CSET,BB
.IF B <ARG>
.IF NB <CSET>
.IF NE ...V1-3.
	CLR'BB	OFFSE(0)
.ENDC
.ENDC
.IFF
.IF IDN <ARG>,#0
	CLR'BB	OFFSE(0)
.IFF
	MOV'BB	ARG,OFFSE(0)
.ENDC
.ENDC
.IF NB <INS>
	EMT	^O375
.ENDC
.ENDM
.MACRO ...CM3	CHAN,IC
.IF B <CHAN>
	MOV	#IC*^O400,%0
.IFF
.NTYPE ...V2,CHAN
.IF EQ ...V2-^O27
	MOV	CHAN+<IC*^O400>,%0
.IFF
	MOV	#IC*^O400,%0
	BISB	CHAN,%0
.ENDC
.ENDC
	EMT	^O374
.ENDM
.MACRO ...CM4 AREA,CHAN,BUF,WCNT,BLK,CRTN,IC,CODE
...CM1 <AREA>,<IC>,<CHAN>,<CODE>
...CM2 <BLK>,2.
...CM2 <BUF>,4.
...CM2 <WCNT>,6.
...CM2 <CRTN>,8.,X
.ENDM
.MACRO ...CM5	SRC,BB
.IF NB <SRC>
.IF DIF <SRC>,R0
	MOV'BB	SRC,%0
.ENDC
.ENDC
.ENDM
.MACRO ...CM6  AREA,IC,CHAN,FLAG
...CM5 <AREA>
.IF B <FLAG>
.IF NB <AREA>
	MOV	#IC*^O400+CHAN,(0)
.ENDC
.IFF
.IF IDN <FLAG>,SET
	MOV	#IC*^O400+CHAN,(0)
.ENDC
.ENDC
.ENDM
.MACRO .CDFN	AREA,ADDR,NUM,CODE
.IF NDF ...V1
.MCALL .MACS
.MACS
.ENDC
...CM6 <AREA>,13.,0,<CODE>
...CM2 <ADDR>,2.
...CM2 <NUM>,4.,X
.ENDM
.MACRO .CHAIN
	MOV	#8.*^O400,%0
	EMT	^O374
.ENDM
.MACRO .CHCOP	AREA,CHAN,OCHAN,CODE
.IF NDF ...V1
.MCALL .MACS
.MACS
.ENDC
...CM1 <AREA>,11.,<CHAN>,<CODE>
...CM2 <OCHAN>,2.,X
.ENDM
.MACRO .CLOSE	CHAN
.IF NDF ...V1
.MCALL .MACS
.MACS
.ENDC
.IF EQ ...V1-1
	EMT	^O<160+CHAN>
.IFF
...CM3 <CHAN>,6.
.ENDC
.ENDM
.MACRO .CNTXS	AREA,ADDR,CODE
.IF NDF ...V1
.MCALL .MACS
.MACS
.ENDC
...CM6 <AREA>,27.,0,<CODE>
...CM2 <ARRD>,2.,X
.ENDM
.MACRO .CMKT	AREA,ID,TIME,CODE
.IF NDF ...V1
.MCALL .MACS
.MACS
.ENDC
...CM6 <AREA>,19.,0.,<CODE>
...CM2 <ID>,2.
...CM2 <TIME>,4.,X,X
.ENDM
.MACRO .CRAW	AREA,ADDR,CODE
.IF NDF ...V1
.MCALL .MACS
.MACS
.ENDC
...CM6 <AREA>,30.,2.,<CODE>
...CM2 <ADDR>,2.,X
.ENDM
.MACRO .CRRG	AREA,ADDR,CODE
.IF NDF ...V1
.MCALL .MACS
.MACS
.ENDC
...CM6 <AREA>,30.,0,<CODE>
...CM2 <ADDR>,2.,X
.ENDM
.MACRO .CSIGE	DEVSPC,DEFEXT,CSTRNG,LINBUF
.IF NDF ...V1
.MCALL .MACS
.MACS
.ENDC
.IF NB <LINBUF>
...CM0 <LINBUF>
.NTYPE ...V2,DEVSPC
.IF EQ ...V2-^O27
...CM0 <DEVSPC'+1>
.IFF
...CM0 <DEVSPC>
	INC	(6.)
.ENDC
.IFF
...CM0 <DEVSPC>
.ENDC
...CM0 <DEFEXT>
...CM0 <CSTRNG>
	EMT	^O344
.ENDM
	.MACRO	.TTYOUT	CHAR
	.IF NB	<CHAR>
	.IF DIF	<CHAR>,R0
		MOV	%0,-(%6)
		MOVB	CHAR,%0
	.ENDC
	.ENDC
		EMT	^O341
		BCS	.-2.
	.IF	NB	<CHAR>
	.IF	DIF	<CHAR>,R0
		MOV	(%6)+,%0
	.ENDC
	.ENDC
	.ENDM
	.MACRO	.TTYIN	CHAR
	.IF	NB	<CHAR>
	.IF	DIF	<CHAR>,R0
		MOV	%0,-(%6)
	.ENDC
	.ENDC
		EMT	^O340
		BCS	.-2.
	.IF NB	<CHAR>
	.IF DIF <CHAR>,R0
		 MOVB	%0,CHAR
		MOV	(%6)+,%0
	.ENDC
	.ENDC
	.ENDM
	.MACRO	.PRINT	ADDR
	.IF NB	<ADDR>
	.IF DIF <ADDR>,R0
		MOV	%0,-(%6)
		MOV	ADDR,%0
	.ENDC
	.ENDC
		EMT	^O351
	.IF	NB	<ADDR>
	.IF	DIF	<ADDR>,R0
		MOV	(%6)+,%0
	.ENDC
	.ENDC
	.ENDM
	.MACRO	.EXIT
		 EMT	^O350
	.ENDM
.MACRO .REGDEF
.ENDM
.MACRO .QSET X,Y,Z,A,B,C
.ENDM
.MACRO .CSISP	OUTSP,DEFEXT,CSTRNG,LINBUF
.IF NDF ...V1
.MCALL .MACS
.MACS
.ENDC
.IF NB <LINBUF>
...CM0	<LINBUF>
.NTYPE	...V2,OUTSP
.IF EQ	...V2-^O27
...CM0	<OUTSP'+1>
.IFF
...CM0	<OUTSP>
	INC	(6.)
.ENDC
.IFF
...CM0	<OUTSP>
.ENDC
...CM0	<DEFEXT>
...CM0	<CSTRNG>
	EMT	^O345
.ENDM
.MACRO	.CSTAT	AREA,CHAN,ADDR,CODE
.IF NDF	...V1
.MCALL .MACS
.MACS
.ENDC
...CM1	<AREA>,23.,<CHAN>,<CODE>
...CM2	<ADDR>,2.,X
.ENDM
.MACRO	.CTIMI	TBK
	JSR	%5,@$TIMIT
	.WORD	TBK-.
	.WORD	1
.ENDM
.MACRO	.DATE
	MOV	#10.*^O400,%0
	EMT	^O374
.ENDM
.MACRO	.DELET	AREA,CHAN,DBLK,SEQNUM,CODE
.IF NDF	...V1
.MCALL .MACS
.MACS
.ENDC
.IF EQ	...V1-1
...CM5	<CHAN>
	EMT	^O<AREA>
.IFF
...CM5	<AREA>
.IF IDN	<CHAN>,#0
	CLR	(0)
.IFF
...V2=0
.IF B	<CODE>
.IIF B	<AREA>,	...V2=1
.IFF
.IIF DIF <CODE>, SET,	...V2=1
.ENDC
.IF NE	...V2
.IF NB	<CHAN>
	MOVB	CHAN,(0)
.ENDC
.IFF
.IF B	<CHAN>
	CLRB	1(0)
.IFF
.NTYPE	...V2,CHAN
.IF EQ	...V2-^O27
	MOV	CHAN,(0)
.IFF
	CLR	(0)
	MOVB	CHAN,(0)
.ENDC
.ENDC
.ENDC
.ENDC
...CM2	<DBLK>,2.
...CM2	<SEQNUM>,4.,X,X
.ENDC
.ENDM
.MACRO	.DEVIC	AREA,ADDR,LINK,CODE
.IF NDF	...V1
.MCALL .MACS
.MACS
.ENDC
.IF B	LINK
...CM6	<AREA>,12.,0,<CODE>
.IFF.
...CM6	<AREA>,12.,1,<CODE>
.ENDC
...CM2	<ADDR>,2.,X
.ENDM
.MACRO	.GTLIN	LINBUF,PROMPT
.IF NDF	...V1
.MCALL .MACS
.MACS
.ENDC
...CM0		<LINBUF>
...CM0	#1
...CM0	<PROMPT>
	CLR	-(6.)
	EMT	^O345
.ENDM
.MACRO .READ	AREA,CHAN,BUF,WCNT,BLK,CRTN=#1,CODE
.IF NDF	...V1
.MCALL .MACS
.MACS
.ENDC
.IF EQ	...V1-1
...CM5	<WCNT>
...CM0	#1
...CM0	<BUF>
...CM0	<CHAN>
	EMT	^O<200+AREA>
.IFF
...CM4	<AREA>,<CHAN>,<BUF>,<WCNT>,<BLK>,<CRTN>,8.,<CODE>
.ENDC
.ENDM
.MACRO	.READC	AREA,CHAN,BUF,WCNT,CRTN,BLK,CODE
.IF NDF	...V1
.MCALL .MACS
.MACS
.ENDC
.IF EQ	...V1-1
...CM5	<CRTN>
...CM0	<WCNT>
...CM0	<BUF>
...CM0	<CHAN>
	EMT	^O<200+AREA>
.IFF
...CM4	<AREA>,<CHAN>,<BUF>,<WCNT>,<BLK>,<CRTN>,8.,<CODE>
.ENDC
.ENDM
.MACRO	.READW	AREA,CHAN,BUF,WCNT,BLK,CRTN=#0,CODE
.IF NDF	...V1
.MCALL .MACS
.MACS
.ENDC
.IF EQ	...V1-1
...CM5	<WCNT>
...CM0
...CM0	<BUF>
...CM0	<CHAN>
	EMT	^O<200+AREA>
.IFF
...CM4	<AREA>,<CHAN>,<BUF>,<WCNT>,<BLK>,<CRTN>,8.,<CODE>
.ENDC
.ENDM
.MACRO 	.RELEA	DNAM
.IF NDF	...V1
.MCALL .MACS
.MACS
.ENDC
...CM5	<DNAM>
...CM0
	EMT	^O343
.ENDM
.MACRO	.RENAM	AREA,CHAN,DBLK,CODE
.IF NDF	...V1
.MCALL .MACS
.MACS
.ENDC
.IF EQ ...V1-1
...CM5	<CHAN>
	EMT	^O<100+AREA>
.IFF
...CM1	<AREA>,4.,<CHAN>,<CODE>
...CM2	<DBLK>,2.,X
.ENDC
.ENDM
.MACRO	.REOPE	AREA,CHAN,DBLK,CODE
.IF NDF	...V1
.MCALL .MACS
.MACS
.ENDC
.IF EQ	...V1-1
...CM5	<CHAN>
	EMT	^O<140+AREA>
.IFF
...CM1	<AREA>,6.,<CHAN>,<CODE>
...CM2	<DBLK>,2.,X
.ENDC
.ENDM
.MACRO	.SAVES	AREA,CHAN,DBLK,CODE
.IF NDF	...V1
.MCALL	.MACS
.MACS
.ENDC
.IF EQ	...V1-1
...CM5	<CHAN>
	EMT	^O<120+AREA>
.IFF
...CM1	<AREA>,5.,<CHAN>,<CODE>
...CM2	<DBLK>,2.,X
.ENDC
.ENDM
.MACRO	.WRITE	AREA,CHAN,BUF,WCNT,BLK,CRTN=#1,CODE
.IF NDF	...V1
.MCALL .MACS
.MACS
.ENDC
.IF EQ	...V1-1
...CM5	<WCNT>
...CM0	#1
...CM0	<BUF>
...CM0	<CHAN>
	EMT	^O<220+AREA>
.IFF
...CM4	<AREA>,<CHAN>,<BUF>,<WCNT>,<BLK>,<CRTN>,9.,<CODE>
.ENDC
.ENDM
.MACRO	.WRITC	AREA,CHAN,BUF,WCNT,CRTN,BLK,CODE
.IF NDF	...V1
.MCALL	.MACS
.MACS
.ENDC
.IF EQ	...V1-1
...CM5	<CRTN>
...CM0	<WCNT>
...CM0	<BUF>
...CM0	<CHAN>
	EMT	^O<220+AREA>
.IFF
...CM4	<AREA>,<CHAN>,<BUF>,<WCNT>,<BLK>,<CRTN>,9.,<CODE>
.ENDC
.ENDM
.MACRO	.WRITW	AREA,CHAN,BUF,WCNT,BLK,CRTN=#0,CODE
.IF NDF	...V1
.MCALL .MACS
.MACS
.ENDC
.IF EQ	...V1-1
...CM5	<WCNT>
...CM0
...CM0	<BUF>
...CM0	<CHAN>
	EMT	^O<220+AREA>
.IFF
...CM4	<AREA>,<CHAN>,<BUF>,<WCNT>,<BLK>,<CRTN>,9.,<CODE>
.ENDC
.ENDM
.MACRO	.WAIT	CHAN
.IF NDF	...V1
.MCALL .MACS
.MACS
.ENDC
.IF EQ	...V1-1
	EMT	^O<240+CHAN>
.IFF
.IF B	<CHAN>
	CLR	%0
.IFF
.NTYPE	...V2,CHAN
.IF EQ	...V2-^O27
.IF IDN	<CHAN>,#0
	CLR	%0
.IFF
	MOV	CHAN,%0
.ENDC
.IFF
	CLR	%0
	BISB	CHAN,%0
.ENDC
.ENDC
	EMT	^O374
.ENDC
.ENDM
.MACRO	.TTINR
	EMT	^O340
.ENDM
.MACRO	.TTOUTR
	EMT	^O341
.ENDM
.MACRO	.TRPSE	AREA,ADDR,CODE
.IF NDF	...V1
.MCALL .MACS
.MACS
.ENDC
...CM6	<AREA>,3.,0,<CODE>
...CM2	<ADDR>,2.,X
.ENDM
.MACRO	.TWAIT	AREA,TIME,CODE
.IF NDF	...V1
.MCALL .MACS
.MACS
.ENDC
...CM6	<AREA>,20.,0,<CODE>
...CM2	<TIME>,2.,X
.ENDM
.MACRO	.UNLOC
	EMT	^O347
.ENDM
.MACRO	.UNPRO	AREA,ADDR,CODE
.IF NDF	...V1
.MCALL .MACS
.MACS
.ENDC
...CM6	<AREA>,25.,1,<CODE>
...CM2	<ADDR>,2.,X
.ENDM
.MACRO	.PROTE	AREA,ADDR,CODE
.IF NDF	...V1
.MCALL .MACS
.MACS
.ENDC
...CM6	<AREA>,25.,0,<CODE>
...CM2	<ADDR>,2.,X
.ENDM
.MACRO	.PURGE	CHAN
.IF NDF	...V1
.MCALL .MACS
.MACS
.ENDC
...CM3	<CHAN>,3.
.ENDM
.MACRO	.RCTRL
	EMT	^O355
.ENDM
.MACRO	.SFPA	AREA,ADDR,CODE
.IF NDF	...V1
.MCALL .MACS
.MACS
.ENDC
...CM6	<AREA>,24.,0,<CODE>
...CM2	<ADDR>,2.,X
.ENDM
.MACRO	.SPFUN	AREA,CHAN,FUNC,BUF,WCNT,BLK,CRTN,CODE
.IF NDF	...V1
.MCALL .MACS
.MACS
.ENDC
...CM1	<AREA>,26.,<CHAN>,<CODE>
...CM2	<BLK>,2.
...CM2	<BUF>,4.
...CM2	<WCNT>,6.
.IF NB	FUNC
.NTYPE	...V2,FUNC
.IF NE	...V2-^O27
.IIF DIF	<CODE>,NOSET,...CM2	#^O377,8.,,,B
...CM2	<FUNC>,9.,,,B
.IFF
...CMS	<FUNC'*^O400+^O377>,8.
.ENDC
.ENDC
...CM2	<CRTN>,10.,X,X
.ENDM
.MACRO	.SRESE
	EMT	^O352
.ENDM
.MACRO	.SPND
	MOV	#1*^O400,%0
	EMT	^O374
.ENDM
.MACRO	.SERR
	MOV	#4.*^O400,%0
	EMT	^O374
.ENDM
.MACRO	.SETTO	ADDR
.IF NDF	...V1
.MCALL .MACS
.MACS
.ENDC
...CM5	<ADDR>
	EMT	^O354
.ENDM
.MACRO	.SCCA	AREA,ADDR,CODE
.IF NDF	...V1
.MCALL .MACS
.MACS
.ENDC
...CM6	<AREA>,29.,0,<CODE>
...CM2	<ADDR>,2.,X
.ENDM
.MACRO	.RSUM
	MOV	#2*^O400,%0
	EMT	^O374
.ENDM
.MACRO	.GVAL	AREA,OFFSE,CODE
.IF NDF	...V1
.MCALL .MACS
.MACS
.ENDC
...CM6	<AREA>,28.,0,<CODE>
...CM2	<OFFSE>,2.,X
.ENDM
.MACRO	.HERR
	MOV	#5.*^O400,%0
	EMT	^O374
.ENDM
.MACRO	.HRESE
	EMT	^O357
	.ENDM
.MACRO	.LOOKU	AREA,CHAN,DBLK,SEQNUM,CODE
.IF NDF	...V1
.MCALL .MACS
.MACS
.ENDC
.IF EQ	...V1-1
...CM5	<CHAN>
	EMT	^O<20+AREA>
.IFF
...CM1	<AREA>,1,<CHAN>,<CODE>
...CM2	<DBLK>,2.
...CM2	<SEQNUM>,4.,X,X
.ENDC
.ENDM
.MACRO	.MAP	AREA,ADDR,CODE
.IF NDF	...V1
.MCALL	.MACS
.MACS
.ENDC
...CM6	<AREA>,30.,4.,<CODE>
...CM2	<ADDR>,2.,X
.ENDM
.MACRO	.MFPS	ADDR
	MOV	@#^O54,-(6.)
	ADD	#^O362,(6.)
	JSR	7.,@(6.)+
.IIF NB	<ADDR>	MOVB	(6.)+,ADDR
.ENDM
.MACRO	.MTPS	ADDR
.IIF NB	<ADDR>	CLR	-(6.)
.IIF NB	<ADDR>	MOVB	ADDR,(6.)
	MOV	@#^O54,-(6.)
	ADD	#^O360,(6.)
	JSR	7.,@(6.)+
.ENDM
.MACRO	.ENTER	AREA,CHAN,DBLK,LEN,SEQNUM,CODE
.IF NDF	...V1
.MCALL .MACS
.MACS
.ENDC
.IF EQ	...V1-1
...CM5	<CHAN>
...CM0	<DBLK>
	EMT	^O<40+AREA>
.IFF
...CM1	<AREA>,2.,<CHAN>,<CODE>
...CM2	<DBLK>,2.
...CM2	<LEN>,4.,,X
...CM2	<SEQNUM>,6.,X,X
.ENDC
.ENDM
.MACRO	.FETCH	ADDR,DNAM
.IF NDF	...V1
.MCALL	.MACS
.MACS
.ENDC
...CM5	<DNAM>
...CM0	<ADDR>
	EMT	^O343
.ENDM
.MACRO	.GTIM	AREA,ADDR,CODE
.IF NDF	...V1
.MCALL .MACS
.MACS
.ENDC
...CM6	<AREA>,17.,0,<CODE>
...CM2	<ADDR>,2.,X
.ENDM
.MACRO	.GTJB	AREA,ADDR,CODE
.IF NDF	...V1
.MCALL .MACS
.MACS
.ENDC
...CM6	<AREA>,16.,0,<CODE>
...CM2	<ADDR>,2.,X
.ENDM
.MACRO	.DSTAT	RETSPC,DNAM
.IF NDF  ...V1
.MCALL	.MACS
.MACS
.ENDC
...CM5	<DNAM>
...CM0	<RETSPC>
	EMT	^O342
.ENDM
