Google
 

Trailing-Edge - PDP-10 Archives - tops10_tools_bb-fp64a-sb - 10,7/who/whomac.mac
There are 4 other files named whomac.mac in the archive. Click here to see a list.
	UNIVERSAL WHOMAC -- Parameter file for WHO

	.DIRECT	.NOBIN			;NO REL FILE NEEDED
;               TABLE OF CONTENTS FOR WHOMAC
;
;
;                        SECTION                                   PAGE
;    1. MACROS - $SETUP - Setup globals and libraries..............   3
;    2. OPDEFS....................................................   4
;    3. Parameters................................................   4
;    4. Extra AC definitions......................................   4
;    5. I/O channels..............................................   4
;    6. FLAGS
;         6.1   Global in LH of F.................................   4
;         6.2   Local in RH of F..................................   4
;    7. Assembly switches.........................................   5
;    8. Monitor Parameters (mostly from S.MAC)....................   6
;    9. SCAN interface tables
;         9.1   Monitor commands..................................   7
;         9.2   Summary keywords and actions......................   8
;         9.3   State keywords and actions........................   9
;   10. Format descriptors........................................  10
	SUBTTL	Macros -- $SETUP - Setup globals and libraries

DEFINE	$SETUP(NAME),<

	SALL			;;FOR CLEAN LISTINGS
	.DIREC	 FLBLST		;;FOR CLEANER LISTINGS

	SEARCH	JOBDAT		;;JOB DATA AREA SYMBOLS
	SEARCH	MACTEN		;;TOPS-10 MACROS
	SEARCH	SCNMAC		;;TOPS-10 COMMAND SCANNER
	SEARCH	UUOSYM		;;TOPS-10 UUO SYMBOLS

	%%JOBD==%%JOBD		;;SHOW JOBDAT VERSION
	%%MACT==%%MACT		;;SHOW MACTEN VERSION
	%%UUOS==%%UUOS		;;SHOW UUOSYM VERSION

IFN FTIPC,<SEARCH TSGSYM>	;;INFORMATION PROCESSING CENETER DEFINITIONS
IFN FTMDC,<SEARCH MDCSYM>	;;MANUFACTURING DATA CENTER DEFINITIONS
IFN FTTUFTS,<SEARCH TCSSYM>	;;TUFTS UNIVERSITY DEFINITIONS

	TWOSEG	.JBHGH		;;DEFINE HIGH SEGMENT ORIGIN
	..H%%==.JBHGH		;;SET INITIAL HIGH SEG RELOCATION COUNTER
	..L%%=0			;;SET INITIAL LOW SEG RELOCATION COUNTER

	DEFINE	$HIGH,<
		IFL .-.JBHGH,<
			VAR
			..L%%==.
			RELOC	..H%%
		>;END IFL
	>;END DEFINE $HIGH

	DEFINE	$LOW,<
		IFGE .-.JBHGH,<
			XLIST
			LIT
			LIST
			..H%%==.
			RELOC	..L%%
		>;END IFGE
	>;END DEFINE $LOW


>;END DEFINE $SETUP

	$SETUP	(WHOMAC)
	SUBTTL	Macros -- $TYPE - Type text


; Type a string via .TCHAR

DEFINE	$TYPE(STRING),<
	PUSHJ	P,.TSTRM##
	XLIST
	ASCIZ\STRING\
	LIST
>;END DEFINE $TYPE
	SUBTTL	Macros -- $TYPEL - Type text and a CRLF


; Type a string followed by a CRLF via .TCHAR

DEFINE	$TYPEL(STRING),<
	PUSHJ	P,.TSTRM##
	XLIST
	ASCIZ\STRING
\
	LIST
>;END DEFINE $TYPEL
	SUBTTL	Macros -- CHKSWT - See if switch given

DEFINE CHKSWT(SWT,NAME,%OK),<
	XLIST
	MOVE	T2,.FZ'SWT##(I)		;;Get switch value
	CAME	T1,T2			;;See if same value
	 CAMN	T2,[-1]			;;Or switch not given
	  JRST	%OK			;;Yes--Thats OK
IFB <NAME>,	MOVX	T1,<SIXBIT/SWT/>	;;No--Load switch
IFNB <NAME>,	MOVX	T1,<SIXBIT/NAME/>	;;No--Load switch
	JRST	E$$DSI##		;;And issue error
%OK:	MOVEM	T1,.FZ'SWT##(I)		;;Store new switch value
	LIST
>;END DEFINE CHKSWT
	SUBTTL	Macros -- FT - Feature test definition

; Macro to globally define and print a feature test switch
;
; FT(SYM,VAL,TXT)
;
; SYM=feature test symbol (macro adds FT in front of it)
; VAL=value (0=off, non-zero=on)
; TXT=Text to form PRINTX message (blank if none desired)

DEFINE FT(SYM,VAL,TXT),<
	ND(FT'SYM,VAL)
	INTERNAL FT'SYM
	IF1,IFNB <TXT>,IFE FT'SYM,PRINTX [Assembling with TXT off]
	IF1,IFNB <TXT>,IFN FT'SYM,PRINTX [Assembling with TXT on]
>;END DEFINE FT
	SUBTTL	Macros -- LOAD and STORE - Byte manipulation


DEFINE	LOAD(A,B,C),<.LDST.(A,B,C,HRRZ,HLRZ,LDB,MOVE)>

DEFINE	STORE(A,B,C),<.LDST.(A,B,C,HRRM,HRLM,DPB,MOVEM)>


DEFINE	.LDST.(A,B,C,D,E,F,G),<
	IFNB	<C>,<..T==0
		IFE	C-777777,<..T==1
			D	A,B>
		IFE	C-777777000000,<..T==1
			E	A,B>
		IFE	C-777777777777,<..T==1
			G	A,B>
		IFE	..T,<F	A,[POINTR(B,C)]>>
	IFB	<C>,<G	A,B>
>  ;END OF DEFINE .LDST.
JWW.FL==2

;ERROR TYPES
	.ERHLT==0		;HALT AFTER ERROR
	.ERINF==1		;INFORMATIONAL MESSAGE (STARTS WITH [)
	.EROPR==2		;OPERATOR MESSAGE (STARTS WITH $)
	.ERWRN==3		;WARNING MESSAGE (STARTS WITH %)
	.ERFAT==4		;FATAL MESSAGE (STARTS WITH ?)
	.ERSTP==5		;STOP MESSAGE (FATAL) (STARTS WITH ?)
;ERROR BITS
	ER.HLT==1B0		;HALT
	ER.INF==1B1		;INFORMATIONAL
	ER.OPR==1B2		;OPERATOR
	ER.WRN==1B3		;WARNING
	ER.FAT==1B4		;FATAL
	ER.STP==1B5		;STOP

	ER.ALL=ER.HLT!ER.INF!ER.OPR!ER.WRN!ER.FAT!ER.STP	;ALL

	$MXTYP==:6		;NUMBER OF DIFFERENT ERROR TYPES
	$MXERR==:3		;MAX LENGTH OF ERROR BLOCK (SEE BELOW)

;DEFINE ERROR BLOCK OFFSETS
	.ERPFX==0		;TYPE,,PREFIX
	.ERTXT==1		;CONT,,[ASCIZ/TEXT/]
	.ERTYP==2		;TYPEOUT ADDR,,DISPATCH ADDR
	.ERSER==3		;SEVERITY,,SEVERITY TEST ADDR

;FORMAT:
;	THE BASIC ERROR MSG CONSISTS OF
;1)	LEAD CHAR (MAY BE ?,%,$,OR [)
;2)	3 CHAR MODULE NAME (XXX)
;3)	3 CHAR ERROR CODE (YYY)
;4)	ASCIZ ERROR TEXT 
;5)	CONTINUATION ADDR FOR ERROR TYPEOUT
;
;THE MACROS GENERATE A CALL OF THE FORMAT:
;	PUSHJ	P,.ERROR##
;	  CAIA	TYPE,'YYY'
;	-N,,ADDR
;
;WHERE N IS THE LENGHT OF THE ERROR ARGUMENT BLOCK
;
;ERROR ARGUMENT BLOCK DESCRIPTION (MAY BE EXPANDED)
;
;BLOCK+0	CONT. ADDR,,[ASCIZ/TEXT STRING/]
;BLOCK+1	TYPEOUT ADDR,,FINAL DISPATCH ADDR
;BLOCK+2	SEVERITY,,ADDR TO PROCESS SEVERITY LEVEL
;
;THE BLOCK MAY BE EXPANDED AS NEEDED

	DEFINE	$STOP(A1,A2,A3,A4,A5,A6,A7),<%%ERR(.ERSTP,A1,<A2>,A3,A4,A5,A6,A7)>

	DEFINE	$FATAL(A1,A2,A3,A4,A5,A6,A7),<%%ERR(.ERFAT,A1,<A2>,A3,A4,A5,A6,A7)>

	DEFINE	$WARN(A1,A2,A3,A4,A5,A6,A7),<%%ERR(.ERWRN,A1,<A2>,A3,A4,A5,A6,A7)>

	DEFINE	$OPR(A1,A2,A3,A4,A5,A6,A7),<%%ERR(.EROPR,A1,<A2>,A3,A4,A5,A6,A7)>

	DEFINE	$INFO(A1,A2,A3,A4,A5,A6,A7),<%%ERR(.ERINF,A1,<A2>,A3,A4,A5,A6,A7)>

	DEFINE	$HALT(A1,A2,A3,A4,A5,A6,A7),<%%ERR(.ERHLT,A1,<A2>,A3,A4,A5,A6,A7)>

	DEFINE	%%ERR($TYPE,$PFX,$TEXT,A$CONT,A$DISP,A$TYPE,N$SEVER,A$SEVER),<
E$$'$PFX:PUSHJ P,.ERROR##
	XLIST
ER'$PFX'$==E$$'$PFX
	  CAIA	$TYPE,''$PFX''
	.N.==1
	IFNB A$TYPE,<.N.==2>
	IFNB A$DISP,<.N.==2>
	IFNB N$SEVER,<.N.==3>
	IFNB A$SEVER,<.N.==3>
	XWD	-.N.,[E%%'$PFX:  A$CONT,,[ASCIZ\$TEXT\]
IFG .N.-1,<XWD A$TYPE,A$DISP>
IFG .N.-2,<XWD N$SEVER,A$SEVER>
	]
IFE $TYPE-.ERHLT,<
	SKIPA
	HALT	E$$'$PFX
>
	LIST>
	SUBTTL	OPDEFS

;The following are OPDEFed so as not to be confused with the monitor
;DDB symbols DEVNAM and DEVCHR (see WHOUUO).

	OPDEF	DVCHR.	[CALLI 4]	;DEVCHR
	OPDEF	DVNAM.	[CALLI 64]	;DEVNAM

	SUBTTL	Parameters

	ND	LN$PDL,100		;LENGTH OF PUSH DOWN LIST
	ND	LN$OBJ,15		;LENGTH OF ANF10 OBJECT TABLE
	ND	LN$INI,^D52		;LENGTH OF INITIALIZATION TEXT
	ND	LN$SCB,^D200		;LENGTH OF SERVER COMMAND BUFFER
	ND	LN$SBT,^D3		;LENGTH OF SERVER BUFFER TABLES
	ND	LN$SMB,^D30		;LENGTH OF SERVER MESSAGE BUFFER
	ND	LN$LEN,.RBSPL+1		;LENGTH OF LIST FILE L/E/R BLOCKS
	ND	LN$SND,^D132/^D5+1	;LENGTH OF SEND STRING
	ND	LN$SET,^D30		;MAX ARG BLOCK FOR ALL SETUUO FNCS
	ND	LN$UNI,^D100		;LENGTH OF UNIT TABLES
	ND	MX$FMT,^D40		;MAX NUMBER OF FORMAT SWITCH ARGUMENTS
	SUBTTL	AC Definitions


	F=:0		;FLAG AC

	T1=:1		;TEMPORARY AC'S (NOT PRESERVED)
	T2=:2
	T3=:3
	T4=:4

	P1=:5		;PERMANENT AC'S (PRESERVED)
	P2=:6
	P3=:7
	P4=:10

	I=:11		;CURRENT SCAN BLOCK
	O=:12		;CURRENT OBJECT
	JP=:13		;ADDRESS OF CURRENT OBJECT DATA STORAGE
	L=:14		;FORMATTER COUNTER
	D=:15		;DDB ADDRESS
	M=:16		;MODE INDEX

	P=:17		;PUSH-DOWN LIST POINTER

; Extra ACs
	N==P3		;SCAN'S "NUMBER"
	C==P4		;SCAN'S "CHARACTER"
	SUBTTL	I/O channels

	LST==1
	SWP==2
	INI==3
	TSK==4
	SUBTTL	FLAGS -- Global in LH of F


	FL.SPY==	1B0	;WE ARE SPYING
	FL.LOGIN==	1B1	;WE ARE LOGGED IN
	FL.GOD==	1B2	;WE ARE OPR
	FL.PEEK==	1B3	;WE HAVE PEEK PRIVS
	FL.POKE==	1B4	;WE HAVE POKE PRIVS
	FL.JACCT==	1B5	;WE HAVE JACCT
	FL.BATCH==	1B6	;WE ARE A BATCH JOB
	FL.WATCH==	1B7	;WE HAVE SOME WATCH BITS SET
	FL.WHOSRV==	1B8	;WE ARE THE WHOSRVER
	FL.CRASH==	1B9	;READING CRASH FILES
	FL.CHARGE==	1B10	;CHARGE NUMBER SUPPORT
	FL.ANF10==	1B11	;ANF-10 NETWORK SUPPORT IN MONITOR
	FL.DECNET==	1B12	;DECNET-10 NETWORK SUPPORT IN MONITOR
	FL.SMP==	1B13	;SMP SUPPORT IN MONITOR
	FL.LGNQ==	1B14	;LOGIN QUEUE SUPPORT IN MONITOR

	FL.SRVFLG==FL.SPY!FL.LOGIN!FL.GOD!FL.PEEK!FL.POKE!FL.JACCT
	FL.NETWORKS==FL.ANF10!FL.DECNET
	FL.FEATURES==FL.CHARGE!FL.ANF10!FL.DECNET!FL.SMP!FL.LGNQ
	SUBTTL	FLAGS-- Local in RH of F


	FR.OPEN==	1B18	;FILE HAS BEEN OPENED
	FR.TASK==	1B19	;OUTPUT TO AN OPENED TASK
	FR.HEAD==	1B20	;HEADER PRINTED
	FR.ABORT==	1B21	;FORMAT PRINT ABORT NOW
	FR.MYTTY==	1B22	;OUTPUT DEVICE IS MY TERMINAL
	FR.DPY==	1B23	;DPY HAS BEEN INITED
	FR.TYPE==	1B24	;A CHARACTER HAS BEEN OUTPUT
	FR.APPEND==	1B25	;USE APPEND WHEN OPENING OUTPUT FILE
	FR.COMMA==	1B26	;COMMA NEEDED IN OUTPUT OF LISTS
	FR.TRMOP==	1B27	;TRMOP. UUO FAILURE FOR SEND
	FR.FRCUUO==	1B28	;FRCUUO FAILED FOR FORCE
	FR.SETUUO==	1B29	;SETUUO FAILED
	FR.DSKDDB==	1B30	;LISTING A DSK DDB
	FR.MTADDB==	1B31	;LISTING A MTA DDB
	FR.NETDDB==	1B32	;LISTING A NETWORK DDB
	FR.TTYDDB==	1B33	;LISTING A TTY DDB
	SUBTTL	Version control


DEFINE	$MONVER(VER),<
	%VER=='VER
	IF1,<PRINTX [Assembling WHO for VER monitors]>
> ;END DEFINE $MONVER

	$MONVER	(703)
	SUBTTL	Assembly switches

; Special UUOSYM symbols that determine feature test settings

FTLGNQ==:0+<IFDEF %LQCNT!%LQPTL!%LQQUE,<1>> ;GETTABS FOR LOGIN QUEUE


; Define the feature test switches

	FT	IPC,0,<IPC/TSG features>
	FT	MDC,0,<MDC features>
	FT	TUFTS,0,<TUFTS features>
	FT	LGNQ,0,<LOGIN queue support>
	FT	SERV,1,<Server support>
	FT	UUO,1,<UUO simulation>
	FT	DDB,1,<DDB scanning>
	FT	POWER,0,<POWERed on terminal detection>

IFN FTTUFTS,<
	ND	CL$SYS,0	;SYSTEM=0
	ND	CL$ADM,1	;ADMINISTRATION=1
	ND	CL$ACAD,2	;ACADEMIC=2
>
	SUBTTL	Monitor Parameters (mostly from S.MAC)


;Bits in JBTSCD (.GTJTC)

	JS.PQ2==1B0		;ON IF JOB IN PQ2
	JS.CLS==37B17
	JS.TYP==777B35

;Bits in JBTSTS (.GTSTS)

	JS.RUN==1B0
	JS.CMW==1B1
	JS.JNA==1B3
	JS.ERR==1B4
	JS.NSW==1B5
	JS.SWP==1B7
	JS.COD==37B14
	JS.LOG==1B15
	JS.JAC==1B17
	JS.CLK==1B18
	JS.JDC==1B20
	JS.OPR==1B22
	JS.XOY==1B25
	JS.RUU==1B26
	JS.DFP==1B33

;Bits in JBTST2

	J2.IGS==1B10
	J2.HIB==1B15
	J2.EWC==37B24
	J2.EWS==1B25

;Bits in JBTDDB
	JD.LCR==777777B17	;CORE LIMIT (FORMERLY IN JBTLIM)
	JD.DDB==777777B35	;I/O ACTIVE DDB ADDRESS

;ESLEEP codes

;Bits in JBTSWP (.GTSWP)

	JS.SPY==1B0		;SPYING (MUST BE SIGN BIT)
	JS.SHR==1B1		;HIGH SEG SHAREBLE
	JS.SMP==77B8		;# SECTION MAP PAGES (NOT INCLUDING SEC 0 MAP)

;Bits in JBTVRT (.GTVRT)

	JS.LOW==777B35		;LOW SEG SIZE
	JS.HGH==777B26		;HIGH SEG SIZE
	JS.PGR==777777B17	;PAGE RATE UNITS

;BITS IN JBTRTD (.GTRTD)

	JS.HPQ==17B9		;HPQ VALUE

;Bits in JBTSGN (.GTSGN)

	SG.SPY==1B0
	SG.SHR==1B1

;Bits in JBTPC

	JS.DDB==-1,,0		;I/O WAIT DDB

;Bits in JBTPDB

	JS.FUN==37B17		;PAGES OF FUNNY SPACE

;Values from GTXTN.

	GX.NOD==-1,,0		;NODE
	GX.LIN==0,,-1		;LINE

;Values in .TOBCT

	LS.CMD==-1,,0		;Count of commands processed
	LS.BRK==0,,-1		;Count of break characters typed

	LS.CAR==1B0		;TRMOP. .TODSS carrier bit

;IN CASE NOT IN UUOSYM YET

	ND	.PFHOR,7	;PFH ORIGINAL RUNTIME
	ND	.PFHLR,10	;PFH LAST RUNTIME
	ND	.PFHCR,11	;PFH CUMULATIVE RUNTIME
	SUBTTL	SCAN interface -- Opdefs


	OPDEF	SKPON	[SKIPG]
	OPDEF	SKPYES	[SKIPG]
	OPDEF	SKPOFF	[SKIPE]
	OPDEF	SKPNO	[SKIPE]
	OPDEF	SKPSWT	[SKIPGE]

	.NODDT	SKPON,	SKPYES
	.NODDT	SKPOFF,	SKPNO
	.NODDT	SKPSWT

	YES==<ON==1>
	NO==<OFF==0>

	SUBTTL	SCAN interface -- Special definitions

; WHO uses the MACLIB subroutine library.  Part of that package
; includes a copy of SCAN with additions and features not found in
; the field image version.  To avoid conflicts with field image
; SCNMAC, the following definitions have been extracted from the
; extended version of SCNMAC.


FX.SCN==1B12	;/SCAN
FS.STK==1B14	;DON'T APPLY STICKY STUFF IN ALPSTK
FS.IFL==1B13	;INDIRECT FILE ILLEGAL IN COMMAND IF NOT LOGGED IN


; The OKEYS macro is similar to the KEYS macro except value is a bit
; position for "or bit value" use.
;
	DEFINE	OKEYS(NAME,LST),<
NAME'.L==0
NAME'.T:	IRP	(LST)<EXP SIXBIT/LST/
	NAME'.L==NAME'.L+1
	..TEMP==0
	IRPC	(LST)<IFIDN <LST><*>,<..TEMP==1>
		STOPI>
	IFE ..TEMP,<NAME'LST==1_<NAME'.L-1>>
	>
	PURGE	..TEMP
>
;DEFINE THE ABOVE BUT WITH GLOBAL NAMES
;AND FINALLY, THE KEY-WORD VALUES

	DEFINE	GKEYS(NAME,LST),<
NAME'.L==:0
NAME'.T:: IRP	(LST)<EXP  SIXBIT /LST/
			NAME'.L==:NAME'.L+1
			..TEMP==0
			IRPC (LST)<IFIDN <LST><*>,<..TEMP==1>
					STOPI>
			IFE ..TEMP,<NAME'LST==:NAME'.L>
		>
	PURGE	..TEMP
	>


; A version of OKEYS that generates global symbols.
;
	DEFINE	GOKEYS(NAME,LST),<
NAME'.L==:0
NAME'.T:: IRP	(LST)<EXP SIXBIT/LST/
	NAME'.L==:NAME'.L+1
	..TEMP==0
	IRPC	(LST)<IFIDN <LST><*>,<..TEMP==1>
		STOPI>
	IFE ..TEMP,<NAME'LST==:1_<NAME'.L-1>>
	>
	PURGE	..TEMP
>
	SUBTTL	SCAN interface -- DOFSWT macro


	DEFINE	DOFSWT,<

	XLIST

DEFINE	FS(NAME,OFFSET,DEFAULT,INITIAL),<
S.'NAME:
	IRP	OFFSET,<
		.FZ'OFFSET==:.FZLEN
		.FZLEN==:.FZLEN+1
		BLOCK	1		;Storage for /'NAME
	>;END IRP
>;END DEFINE FS

	.FZLEN==:.FXLEN

	$LOW
FSWT.S::FSWTCH				;BUILD SWITCH STORAGE
FSWT.L==:.-FSWT.S

DEFINE	FS(NAME,OFFSET,DEFAULT,INITIAL),<
	IRP	OFFSET,<
		IFB <INITIAL>,<EXP -1		;Initial value for /'NAME(.FZ'OFFSET)>
		IFNB <INITIAL>,<EXP INITIAL		;Initial value for /'NAME(.FZ'OFFSET)>
	>;END IRP
>;END DEFINE FS

	$HIGH
FSWT.I::FSWTCH				;BUILD INITIAL VALUES

DEFINE	FS(NAME,OFFSET,DEFAULT,INITIAL),<
	IRP	OFFSET,<
		IFB <DEFAULT>,<EXP -1		;Default value for /'NAME('.FZ'OFFSET)>
		IFNB <DEFAULT>,<EXP DEFAULT		;Default value for /'NAME('.FZ'OFFSET)>
	>;END IRP
>;END DEFINE FS

FSWT.D::FSWTCH				;BUILD DEFAULT VALUES

	$LOW
FSWT.P::BLOCK	FSWT.L			;BUILD STICKY SWITCH STORAGE
	$HIGH

	LIST

>;END DEFINE DOFSWT
	SUBTTL	SCAN interface -- DOGSWT macro


	DEFINE	DOGSWT,<

	XLIST

DEFINE	GS(NAME,LEN,DEFAULT,INITIAL),<
	..TEMP==1
	IFNB <LEN>,<..TEMP==LEN>
	S.'NAME:: BLOCK ..TEMP
>;END DEFINE GS

	$LOW
GSWT.S::GSWTCH				;GLOBAL SWITCH STORAGE
GSWT.L==:.-GSWT.S

DEFINE	GS(NAME,LEN,DEFAULT,INITIAL),<
	..TEMP==1
	IFNB <LEN>,<..TEMP==LEN>
	REPEAT	..TEMP,<
		IFB <INITIAL>,<EXP -1		;Initial value for /'NAME('.FZ'OFFSET)>
		IFNB <INITIAL>,<EXP INITIAL		;Initial value for /'NAME('.FZ'OFFSET)>
	>;END REPEAT
>;END DEFINE GS

	$HIGH
GSWT.I::GSWTCH				;GLOBAL SWITCH INITIAL VALUES

DEFINE	GS(NAME,LEN,DEFAULT,INITIAL),<
	..TEMP==1
	IFNB <LEN>,<..TEMP==LEN>
	IFB <DEFAULT>,<REPEAT ..TEMP,<EXP -1>>
	IFNB <DEFAULT>,<
		..TEMR==0
		IRP DEFAULT,<
			EXP DEFAULT
			..TEMR==..TEMR+1
		>;END IRP DEFAULT
		IFN ..TEMR-1,<REPEAT ..TEMP-..TEMR,<EXP -1>>
		IFE ..TEMR-1,<REPEAT ..TEMP-..TEMR,<EXP DEFAULT>>
	>;END IFNB <DEFAULT>
>;END DEFINE GS

GSWT.D::GSWTCH				;GLOBAL SWITCH DEFAULT VALUES

	$HIGH
	LIST

>;END DEFINE DOGSWT
	SUBTTL	SCAN interface -- Monitor commands

DEFINE	MODES,<
XX	JOB		,JOB	,LINE	,job		,<Job not assigned>
XX	LINE		,LIN	,JOB	,line		,<Line not connected>
XX	NODE		,NOD	,LINE	,node		,<Node not online>
XX	STRUCTURE	,STR	,UNIT	,structure	,<Structure not found>
XX	UNIT		,UNI	,STRUCT	,unit		,<Disk unit not found>
>
	SUBTTL	SCAN interface -- Summary keywords and actions

DEFINE SUMMARY,<
	XLIST

START JOB
X  ACCOUNT	,Account		,JB$AC1	,.TASCW	,8
IFN FTIPC,<
X  BADGE	,Badge			,JB$BDG ,.TDECJ ,6
>;END IFN FTIPC
X  BATCH	,Batch			,JB$BJB	,YESNO	,6
X  BATCORE	,Batch core		,JB$BCL	,.TDECJ	,11
IFN FTIPC,<
X  CATEGORY	,Category		,JB$CAT	,.TOCTJ	,9
>;END IFN FTIPC
X  CHARGE	,Charge			,JB$CNO	,CHGTYO	,6
IFN FTIPC,<
X  CID		,Charge ID		,JB$CID ,.TSIXN ,9
>;END IFN FTIPC
X  CLASS	,Class			,JB$CLS	,.TDECJ	,7
X  CORE		,Core			,CCORE	,.TDECJ	,6,10
X  CPL		,Current physical limit	,JB$CPL	,.TDECJ ,22 ,5
X  CTLJOB	,CTLJOB			,JB$CJN	,.TDECJ	,7
X  CTLPRG	,CTLPRG			,JB$CPN	,.TSIXN	,6
X  CVL		,Current virtual limit	,JB$CVL	,.TDECJ ,21 ,5
X  DEFATTACH	,Attach jobs		,JB$DAD	,ATTYES	,13
X  DEFBIGBUF	,Default BIGBUF		,JB$DBB ,.TDECJ ,14
X  DEFBUFFER	,Default buffers	,JB$DNB	,.TDECJ	,17
X  DEFPROTECT	,Default protection	,JB$DPV	,.TPROT,21
X  APC		,Asynchronous port characteristic	,JB$APC	,TAPC	,32
X  DSKPRIORITY	,Disk priority		,JB$DPR	,.TDECJ	,14
X  FUNNY	,Funny			,JB$PFS	,.TDECJ	,6
X  GLXOPR	,Galaxy operator	,JB$GOP	,TGOP	,15
X  HPQ		,HPQ			,JB$HPQ	,.TDECJ	,5
X  IPCFORECEIVE	,IPCF receives outstanding,JB$IOR,.TDECJ	,26
X  IPCFOSEND	,IPCF sends outstanding	,JB$IOS	,.TDECJ	,23
X  IPCFQRECEIVE	,IPCF receive quota	,JB$IQR	,.TDECJ	,19
X  IPCFQSEND	,IPCF send quota	,JB$IQS	,.TDECJ	,16
X  IPCFRECEIVE	,IPCF receives		,JB$IMR	,.TDECJ	,14,100
X  IPCFSEND	,IPCF sends		,JB$IMS	,.TDECJ	,11,100
X  JLT		,JLT			,JB$IJL	,.TUFTM	,8,<400000/^D24+1>
X  KCS		,KCS			,JB$KCM	,.TDECJ	,6,10000
X  LIMIT	,Limit			,JB$BTL	,.TTIME	,8,60000
X  LINE		,Line			,JB$NLN	,.TOCTJ	,6
X  LOCATION	,Location		,JB$LOC	,.TOCTJ	,9
IFN FTIPC,<
X  LPPN		,LPPN			,JB$LPN	,.TPPNW	,15
X  LPRGNUM	,Lprogrammer		,JB$LPG	,.TOCTJ	,11
X  LPRJNUM	,Lproject		,JB$LPJ	,.TOCTJ	,9
>;END IFN FTIPC
X  MPL		,Maximum physical limit	,JB$MPL	,.TDECJ ,22 ,5
X  MVL		,Maximum virtual limit	,JB$MVL	,.TDECJ ,21 ,5
X  NAME		,Name			,JB$NM1	,.TSIXN	,6
X  NODE		,Node			,JB$NNM	,.TSIXN	,6
X  NODENAME	,Node			,JB$NNM	,.TSIXN	,6
X  NODENUMBER	,Node number		,JB$NNU	,.TOCTJ	,12
X  PAGERATE	,Paging rate		,JB$PGR	,TPGR	,12,50
X  PC		,PC			,JB$PC	,.TOCTZ	,6,512
X  PHYHIGH	,Physical high segment size,JB$PPH,.TDECJ,26 ,5
X  PHYLOW	,Physical low segment size,JB$PPL,.TDECJ,25 ,5
X  PPN		,PPN			,JB$PPN	,.TPPNW	,15
X  PRGNUMBER	,Programmer		,JB$PPG	,.TOCTJ	,11
X  PRGRUN	,Program to run		,JB$PTR	,.TSIXN	,14
X  PRJNUMBER	,Project		,JB$PPJ	,.TOCTJ	,9
X  PROJECT	,Project		,JB$PPJ	,.TOCTJ ,9
X  PROGRAM	,Program		,JB$PRG	,.TSIXN	,7
X  PROSET	,Default protection set	,JB$DPS	,ONOFF	,25
X  READS	,Reads			,JB$DBR	,.TDECJ	,8,1000
X  REMOTE	,Remote			,JB$RMT	,YESNO	,7
X  RESET	,Reset			,JB$ITR	,.TUFTM	,8,<400000/^D24+1>
X  RUNTIME	,Runtime		,JB$TIM	,.TTIME	,8,30000
X  SEGMENT	,Segment		,JB$HSN	,.TSIXN	,7
IFN FTIPC,<
X  SLOT		,Slot			,JB$SLT	,.TOCTJ	,6
>;END IFN FTIPC
X  TTY		,TTY			,JB$TLN	,.TOCTJ	,6
X  UUOS		,UUOs			,JB$UUC	,.TDECJ	,8,10000
X  VCORE	,VCore			,VCORE	,.TDECJ	,6,10
X  VIRHIGH	,Virtual high segment size,JB$PVH,.TDECJ,25 ,5
X  VKCS		,VKCS			,JB$VKM	,.TDECJ	,6,10000
X  VIRLOW	,Virtual low segment size,JB$PVL,.TDECJ	,24 ,5
X  WRITES	,Writes			,JB$DBW	,.TDECJ	,8,1000
X  WSCODE	,Wait state code	,JB$WSC	,.TSIXN	,15
X  WTO		,WTO privileges		,JB$WTO	,TWTO	,15
LEN JOB

START LIN
X  ASSIGN	,Assigned		,LB$TAC	,YESNO	,9
X  BREAK	,Break chars		,LB$BCC	,.TDECJ	,12,100
X  CARRIER	,Carrier		,LB$DSC	,YESNO	,8
X  COMMANDS	,Commands		,LB$CMD	,.TDECJ	,9,100
X  APC		,Asynchronous port characteristic	,LB$APC	,TAPC	,32
X  INITED	,Inited			,LB$TAP	,YESNO	,7
X  INPUT	,Input chars		,LB$ICT	,.TDECJ	,12,1000
X  JOB		,Job			,LB$JOB	,.TDECJ	,4
X  LINE		,Line			,LB$NLN	,.TOCTJ	,5
IFN FTLGNQ,<
X  LOGINQ	,Login queue		,LB$LQP	,TLGNQ	,12
>;END IFN FTLGNQ
X  MIC		,Mic			,LB$MCL	,YESNO	,3
X  NODE		,Node			,LB$NNM	,.TSIXN	,6
X  NODENAME	,Node			,LB$NNM	,.TSIXN	,6
X  NODENUMBER	,Node number		,LB$NNU	,.TOCTJ	,11
X  OUTPUT	,Output chars		,LB$OCT	,.TDECJ	,13,1000
X  RCVSPEED	,RCVspeed		,LB$RBD	,.TDECJ	,9
X  REMOTE	,Remote			,LB$RMT	,YESNO	,7
X  SLAVE	,Slave			,LB$SLV	,YESNO	,6
X  TYPE		,Type			,LB$TYP	,.TSIXN	,6
X  USERS	,Users			,LB$TCJ	,YESNO	,6
X  XMTSPEED	,XMTspeed		,LB$TBD	,.TDECJ	,9
LEN LIN

START NOD
X  CDP		,Card punches		,NB$CDP ,.TDECJ ,12
X  CDR		,Card readers		,NB$CDR ,.TDECJ ,12
X  CONFIGURATION,Configuration		,NB$CNF ,.TASCW ,13
X  DATE		,Date			,NB$DAT ,.TASCW ,4
X  DDP		,DDCMP devices		,NB$DDP ,.TDECJ ,13
X  DTA		,DECtapes		,NB$DTA ,.TDECJ ,8
X  LPT		,Line printers		,NB$LPT ,.TDECJ ,13
X  MCR		,MCRs			,NB$MCR ,.TDECJ ,4
X  MTA		,Magtapes		,NB$MTA ,.TDECJ ,8
X  NAME		,Name			,NB$NNM	,.TSIXN ,4
X  NODE		,Node			,NB$NNM	,.TSIXN	,6
X  NODENAME	,Node			,NB$NNM	,.TSIXN	,6
X  NODENUMBER	,Node number		,NB$NNU	,.TOCTJ	,11
X  NUMBER	,Node number		,NB$NNU ,.TOCTW ,6
X  PLT		,Plotters		,NB$PLT	,.TDECJ ,8
X  PTP		,Paper tape punches	,NB$PTP ,.TDECJ ,18
X  PTR		,Paper tape readers	,NB$PTR ,.TDECJ ,18
X  RDA		,Remote data entry	,NB$RDA ,.TDECJ ,17
X  TSK		,Tasks			,NB$TSK ,.TDECJ ,5
X  TTY		,Terminals		,NB$TTY ,.TDECJ ,9
X  TYPE		,Type			,NB$TYP ,.TSIXN ,6

LEN NOD

START STR
X  FSNUMBER	,FS number		,SB$MTC ,.TDECW ,9
X  MOUNT	,Mount count		,SB$MTC ,.TDECW ,11
X  NAME		,Name			,SB$STN ,.TSIXN ,6
X  OWNER	,Owner			,SB$OWN ,TOWNER ,13
LEN STR

START UNI
X  1CONI	,CONI before retry	,UB$SOF ,.TOCTW ,17
X  2CONI	,CONI after retry	,UB$ERR ,.TOCTW ,16
X  1DATAI	,DATAI before retry	,UB$SDI ,.TOCTW ,18
X  2DATAI	,DATAI after retry	,UB$HDI ,.TOCTW ,17
X  ALTERNATE	,Alternate port		,UB$ALT ,.TSIXN ,14
X  BREADS	,Buffered reads		,UB$BRC ,.TDECW ,14
X  BWRITES	,Buffered writes	,UB$BWC ,.TDECW ,15
X  CBLOCKS	,Cached blocks		,UB$CBK ,.TDECW ,13
X  CHKERRORS	,Checksum errors	,UB$CER ,.TDECW ,15
X  CRCALLS	,Cache read calls	,UB$CRC ,.TDECW ,16
X  CRHITS	,Cache read hits	,UB$CRH ,.TDECW ,15
X  CWCALLS	,Cache write calls	,UB$CWC ,.TDECW ,17
X  CWHITS	,Cache write hits	,UB$CWH ,.TDECW ,16
X  DETACHED	,Detached port		,UB$DET ,.TSIXN ,13
X  DREADS	,Dump reads		,UB$DRC ,.TDECW ,10
X  DWRITES	,Dump writes		,UB$DWC ,.TDECW ,11
X  FREEBLOCKS	,Free blocks		,UB$FRB ,.TDECW ,11
X  FREESWAPPING	,Free swapping blocks	,UB$FRB ,.TDECW ,20
X  HARDDATA	,Hard data errors	,UB$HDT ,.TDECW ,16
X  HARDDEVICE	,Hard device errors	,UB$HDV ,.TDECW ,18
X  LBN		,Logical block number	,UB$HBN ,.TOCTW ,20
X  LOGICAL	,Logical unit name	,UB$LOG ,.TSIXN ,17
X  MREADS	,Monitor reads		,UB$MRC ,.TDECW ,13
X  MSEEKS	,Monitor seeks		,UB$MSC ,.TDECW ,13
X  MWRITES	,Monitor writes		,UB$MWC ,.TDECW ,14
X  NAME		,Name			,UB$UNN ,.TSIXN ,6
X  NEXTUNIT	,Next unit in structure	,UB$NUS ,.TSIXN ,22
X  PREADS	,Paging reads		,UB$PRC ,.TDECW ,12
X  PWRITES	,Paging writes		,UB$PWC ,.TDECW ,13
X  RIBERRORS	,RIB errors		,UB$RER ,.TDECW ,10
X  SATERRORS	,SAT errors		,UB$RER ,.TDECW ,10
X  SEEKS	,Seeks			,UB$TSC ,.TDECW ,5
X  SOFTDATA	,Soft data errors	,UB$SDT ,.TDECW ,16
X  SOFTDEVICE	,Soft device errors	,UB$SDV ,.TDECW ,18
X  STRUCTURE	,Structure		,UB$STR ,.TSIXN ,9
X  SREADS	,Swapping reads		,UB$SRC ,.TDECW ,14
X  SWRITES	,Swapping writes	,UB$SWC ,.TDECW ,15
X  UNITID	,Unit-Id		,UB$UID ,.TSIXN ,7
X  USEEKS	,User seeks		,UB$USC ,.TDECW ,10
X  XREADS	,Extended RIB reads	,UB$XRC ,.TDECW ,18
X  XWRITES	,Extended RIB writes	,UB$XWC ,.TDECW ,19
LEN UNI

	LIST
>;END DEFINE SUMMARY
	SUBTTL	SCAN interface -- State keywords and actions

DEFINE	STATES,<
	XLIST
	X	ACTIVE
	X	SWAP	
	X	LOCK
	X	STOP
	X	RUN
	X	EVENTWAIT
	X	IOWAIT
	X	SLEEP
	X	CODES
	X	RWAITS
	X	QUEUES
	LIST
>
	SUBTTL	SCAN interface -- OBJECT definitions

DEFINE OBJECTS,<
	XX	MCR
	XX	TTY
	XX	CDR
	XX	LPT
	XX	PTR
	XX	PTP
	XX	PLT
	XX	MTA
	XX	DTA
	XX	TSK
	XX	RDA
	XX	CDP
	XX	DDP
>
	SUBTTL	Format descriptors

	PHASE	0

.FMFMT: BLOCK	1	;FORMAT FIELDWIDTH DESCRIPTORS
  FM.USR==1B0		;USER SPECIFIED
  FM.FMT==3B2		;FORMAT TYPE
   .FMFIX==1		;FIXED
   .FMFLT==2		;FLOATING
   .FMBLK==3		;FIXED WITH BLANK FIELD SUPPRESS
  FM.JUS==3B4		;JUSTIFY FIELD
   .FMLEF==0		;LEFT
   .FMCEN==1		;CENTER
   .FMRIG==2		;RIGHT
  FM.SPC==17B8		;SPACE COUNT IF FORFLOAT TO TRAIL
  FM.STR==1B9		;FORMAT IS A STRING (LEAVE BLANKS)
  FM.WID==377B17	;FIELDWIDTH
  FM.PRT==777777B35	;ADDR TO PUSHJ TO PRINT FIELD
.FMLOD:	BLOCK	1	;INSTR TO XCT TO LOAD FIELD
.FMLEN:			;LENGTH OF BLOC

	DEPHASE
	SUBTTL	Check block description

	PHASE	0

.CKSWT:! BLOCK	1		;ADDRESS OF SWITCH VALUE
.CKMSK:! BLOCK	1		;ADDRESS OF SWITCH VALUE MASK
.CKINI:! BLOCK	1		;DEFAULT INITIAL SWITCH VALUE
.CKLOD:! BLOCK	1		;ADDRESS OF ROUTINE TO LOAD VALUE
.CKCHK:! BLOCK	1		;ADDRESS OF ROUTINE TO CHECK VALUE
.CKLEN:!

	DEPHASE
	SUBTTL	PSI definitions


; Macro to count up and assign interrupt vector block offsets
DEFINE	$PSI	(NAM),<
	.IV'NAM==VECNUM*4	;;ASSIGN INTERRUPT VECTOR OFFSET
	VECNUM==VECNUM+1	;;COUNT VECTORS
> ;END $PSI MACRO

	VECNUM==0		;INITIALIZE COUNTER

	$PSI	(DET)		;ATTACH/DETACH
	$PSI	(STP)		;CONTROL-C TRAP
IFN FTSERV,<$PSI (IPC)>		;IPCF
IFN FTSERV,<$PSI (ANF)>		;ANF10
IFN FTSERV,<$PSI (DCN)>		;DECNET
	SUBTTL	Task I/O and server definitions


; Task dispatch vector offsets
	.TSNAM==0		;NAME
	.TSTYP==1		;TYPE
	.TSNET==2		;NETWORK TYPE
	.TSTIM==3		;DEFAULT TIMEOUT
	.TSFET==4		;FEATURE FLAG
	.TSOPN==5		;OPEN TASK
	.TSCLS==6		;CLOSE TASK
	.TSINP==7		;INPUT A BUFFER
	.TSOUT==10		;OUTPUT A BUFFER
	.TSIBR==11		;ADDR OF INPUT BUFFER RING HEADER
	.TSOBR==12		;ADDR OF OUTPUT BUFFER RING HEADER
	.TSPRV==13		;SET/CLEAR PRIV AND JOB FLAGS


; Macro to build a dispatch vector
DEFINE	TASK	(NAM,PFX,TYP,NET,TIM,FET),<
PFX'TSK::
	XLIST
	EXP	[ASCIZ	|NAM|]		;;NAME
	EXP	TYP			;;TASK TYPE
	EXP	NET			;;NETWORK TYPE
	EXP	^D<TIM>			;;TIMEOUT
	EXP	FET			;;FEATURE
	EXP	PFX'OPN			;;OPEN TASK
	EXP	PFX'CLS			;;CLOSE TASK
	EXP	PFX'INP			;;INPUT A BUFFER
	EXP	PFX'OUT			;;OUTPUT A BUFFER
	EXP	PFX'IBR			;;ADDRESS OF INPUT BUFFER RING HEADER
	EXP	PFX'OBR			;;ADDRESS OF OUTPUT BUFFER RING HEADER
	EXP	PFX'PRV			;;SET/CLEAR PRIV AND JOB FLAGS
	LIST
> ;END TASK MACRO


; Task open definitions
	TS.ACT==1B0		;ACTIVE
	TS.TYP==177B8		;TYPE OF CONNECT
	   .TSIPC==0		   ;IPCF
	   .TSANF==1		   ;ANF10
	   .TSDCN==2		   ;DECNET
	   .TSNUM==3		   ;NUMBER OF DEFINED TASK TYPES
	TS.TIM==777B17		;TIMEOUT IN SECONDS
	   .TSTMN==0		   ;MINIMUM TIMEOUT VALUE
	   .TSTMX==<TS.TIM_-<ALIGN.(TS.TIM)>> ;MAXIMUM TIMEOUT VALUE
; The /SERVER switch has the format:
;
;		/SERVE:node-string:connect-type:timeout
;
; Where	"node-string"	One node name or a quoted string of node names.
;			This argument occupies .SVMAX-.SVNOD words.
;	connect-type	Defines the connect type (IPCF, ANF10, DECNET).
;			This field occupies one word.
;	timeout		The maximum number of seconds to wait.
;			This field occupies one word.
;
; Offsets into /SERVER storage block
	.SVFLG==0		;NON-NEGATIVE IF ARGUMENTS TYPED
	.SVTYP==1		;CONNECT TYPE
	.SVTIM==2		;TIMEOUT VALUE IN SECONDS
	.SVNOD==3		;START OF NODE TEXT (MUST BE AT END)
	.SVMAX==^D28		;LENGTH OF BLOCK

	.SVWDS==.SVMAX-.SVNOD	;LENGTH OF NODE STRING TEXT IN WORDS
	.SVCHR==<.SVWDS*5>-1	;LENGTH OF NODE STRING TEXT IN CHARACTERS
	SUBTTL	Mount count flags and fields


	MC.SYS==1B0			;STR IN SSL
	MC.SDL==1B1			;STR IN SDL
	MC.ASL==1B2			;STR HAS UNITS IN ASL
	MC.TMC==777777B35		;TOTAL MOUNT COUNT

	MC.PAS==777777B17		;PASSIVE S/L COUNT
	MC.ACT==777777B35		;ACTIVE S/L COUNT
	SUBTTL	Network data


; Network type codes
	.NTNON==0			;NO NETWORK SUPPORT
	.NTANF==1			;ANF10
	.NTDCN==2			;DECNET


; Network flags
	NT.ONL==1B0			;ON-LINE
	NT.KNO==1B1			;KNOWN


; NRTSER information block offsets
	.NRTFL==0			;LINE FLAG (0=NOT NRT, -1=NRT)
	.NRTNM==1			;NODE NAME
	.NRTNN==2			;NODE NUMBER
	.NRTCH==3			;NRTSER CHANNEL NUMBER
	.NRTLN==.NRTCH+1		;LENGTH OF NRTSER BLOCK
	SUBTTL	END

	END