
.TITLE	Q
PROGRAM TO WATCH QUEUES, SIMILAR TO QUEDPY ON PDP-10

.LIBRARY	@DPYDEF@
.LIBRARY	@SYS$LIBRARY:LIB@

$JPIDEF
$SJHDEF
$SMQDEF
$SMRDEF
$SQHDEF
$SQRDEF
$SECDEF
$FAODEF

.sbttl fao macros

.MACRO	MAKFAO	PRMLST
	XX=0
.IRP	FOO,<'PRMLST'>
	DOFAO	%EXTRACT(0,1,FOO),%LOCATE(<=>,FOO),FOO

.ENDR
.ENDM

.MACRO	DOFAO		TYPE,POSIT,PARM
.IF	NE,<^A/'TYPE'/-^A/P/>
	MOVL		PARM,FAOPRM+<4*XX>
	.MEXIT
.ENDC
XXX=POSIT-1
XXXX=XXX
CHKFAO	%EXTRACT(XXX,1,PARM)
XX=%EXTRACT(1,XXX,PARM)
ZZZ=%LENGTH(PARM)
ZZ=XXXX+2
.IF	EQ,<XXX-XXXX>
	MOVAL		%EXTRACT(ZZ,ZZZ,PARM),-
			FAOPRM+<4*<XX-1>>
.IF_FALSE
	MOVL		%EXTRACT(ZZ,ZZZ,PARM),-
			FAOPRM+<4*<XX-1>>
.ENDC
.ENDM


.MACRO	CHKFAO		ARG

.IF	EQ,<^A/'ARG'/-^A/V/>
	XXX=XXX-1
.ENDC
.ENDM

.SBTTL	INITIALIZATION

.ENTRY	Q,^M<R2,R3,R4,R5,R6,R7,R8,R9,R10,R11>

DPY$SETUP			;SETUP FOR CALLS TO DPY
$ASSIGN_S	CHAN=TTCHN,DEVNAM=TTDEV	;INIT FOR INPUT
INI$		#-1
$QIOW_S		CHAN=DPYCHN,FUNC=#IO$_SETMODE!IO$M_CTRLCAST,-
		P1=CCAST
CLRQ		JBCCOR			;SET TO MAP P0 SECTION
$MGBLSC_S	INADR=JBCCOR,GSDNAM=JBCSYSQUE,-
		FLAGS=#SEC$M_SYSGBL!SEC$M_EXPREG,-
		RETADR=JBCCOR
$QIO_S		CHAN=TTCHN,-
		FUNC=#IO$_READVBLK!IO$M_CVTLOW!IO$M_NOECHO,-
		ASTADR=DOCMD,IOSB=IOSB,-
		P1=TTIBUF,P2=#1

.SBTTL		TOP OF LOOP


LOOP:
BBC		#FL$V_SUM,QFLG,5$
BRW		DOSUM
$:	BBCC		#FL$V_FIRST,QFLG,7$
MNEGW		#1,MAXCOL
CLRW		MINCOL
CLRW		MINLIN
MNEGW		#1,MAXLIN
SIZ$		MINLIN=MINLIN,MAXLIN=MAXLIN,-
		MINCOL=MINCOL,MAXCOL=MAXCOL
$:	$GETTIM_S	TIMADR=NOW
STR$		QN
MOVZBL		CURQ,QNAMD
MOVC3		QNAMD,CURQ+1,QNAM
STR$		QNAMD
MOVL		JBCCOR,R6
MOVZBL		SQH$B_NUMQUE(R6),R7		;NUMBER OF QUEUES
MOVAQ		NONQ,R8				;ASSUME NON-EXISTANT
ADDL2		#SQH$K_SIZE,R6			;POINT TO SMQ AREA
P1:	SOBGEQ		R7,10$				;IF FOUND
BRW		NOQ				;NONE0$:	MOVZBL		SMQ$T_NAME(R6),R0		;GET QUE COUNT
CMPC5		R0,SMQ$T_NAME+1(R6),#0,QNAMD,@QNAMD+4
BEQL		HAVQ
ADDL2		#SMQ$K_SIZE,R6
BBC		#SMQ$V_INUSE,SMQ$B_FLAGS-SMQ$K_SIZE(R6),10$
BRB		LP1
AVQ:							;HERE WITH R6=SMQ
MOVAQ		NONA,R8				;IF FIND ONLY DEAD Q
BBC		#SMQ$V_INUSE,SMQ$B_FLAGS(R6),LP1

.SBTTL		DISPLAY QUEUE HEADER

BBC		#SMQ$V_STOPPED,SMQ$B_FLAGS(R6),20$
STR$		ST
0$:	BBC		#SMQ$V_PAUSED,SMQ$B_FLAGS(R6),30$
STR$		PA
0$:	BBC		#SMQ$V_DETJOB,SMQ$B_FLAGS(R6),40$	;BATCH QUEUE
BRW		92$
0$:	BBC		#SMQ$V_GENDEV,SMQ$B_FLAGS(R6),50$
STR$		GENDV
0$:	BBS		#SMQ$V_NOGENERIC,SMQ$B_FLAGS(R6),60$
STR$		GENPR
0$:	BBC		#SMQ$V_TRMDEV,SMQ$B_CHAR(R6),70$
STR$		TRM
0$:	BBC		#SMQ$V_LOWER,SMQ$B_FLAGS(R6),75$
STR$		LW
5$:	BBC		#SMQ$V_DEFFLAG,SMQ$B_FLAGS(R6),80$
STR$		FL
0$:	BBC		#SMQ$V_DEFBRST,SMQ$B_FLAGS(R6),90$
STR$		BR
0$:	MOVAQ		FRMCTR,FAOLST+FAO$_CTRSTR
MAKFAO		<P1V=SMQ$B_FORMS(R6),P2=SMQ$T_SMBNAME(R6)>
$FAOL_G		FAOLST
STR$		TTOBDSC
BBC		#SMQ$V_REDIRECT,SMQ$B_FLAGS(R6),91$
STR$		RDR
1$:	BRW		QDSP

2$:	STR$		BAT
EXTZV		#SMQ$V_INIPRI,#SMQ$S_INIPRI,SMQ$B_CHAR(R6),R0
MOVAQ		PRICTR,FAOLST+FAO$_CTRSTR
MAKFAO		<P1V=R0,P2V=SMQ$B_JOBCNT(R6),P3V=SMQ$B_JOBLIM(R6)>
$FAOL_G		FAOLST
STR$		TTOBDSC
BBC		#SMQ$V_NOSWAP,SMQ$B_FLAGS(R6),94$
STR$		NSW
4$:
STR$		CPUHDR
MOVAQ		CPLMCTR,FAOLST+FAO$_CTRSTR
CLRQ		-(SP)
MOVAQ		STAR,R0
BBC		#SMQ$V_DCPULM,SMQ$W_QUOFLG(R6),95$
EMUL		#10*10*1000,SMQ$L_DCPULM(R6),#0,(SP)
MAKFAO		P1=(SP)
$FAOL_G		FAOLST
MOVAQ		TTOBDSC,R0
5$:	STR$		(R0)
CHR$		#^A"/"
MOVAQ		STAR,R0
BBC		#SMQ$V_MCPULM,SMQ$W_QUOFLG(R6),100$
EMUL		#10*10*1000,SMQ$L_MCPULM(R6),#0,(SP)
MAKFAO		P1=(SP)
$FAOL_G		FAOLST
MOVAQ		TTOBDSC,R000$:	STR$		(R0)
CLRQ		(SP)+
STR$		WSHDR
MOVAQ		WSLMCTR,FAOLST+FAO$_CTRSTR
MOVAQ		STAR,R0
BBC		#SMQ$V_WSDFLT,SMQ$W_QUOFLG(R6),110$
MAKFAO		P1V=SMQ$W_WSDFLT(R6)
$FAOL_G		FAOLST
MOVAQ		TTOBDSC,R010$:	STR$		(R0)
CHR$		#^A"/"
MOVAQ		STAR,R0
BBC		#SMQ$V_WSQUTA,SMQ$W_QUOFLG(R6),120$
MAKFAO		P1V=SMQ$W_WSQUTA(R6)
$FAOL_G		FAOLST
MOVAQ		TTOBDSC,R020$:	STR$		(R0)

.SBTTL		DISPLAY QUEUE ENTRIES

DSP:	MOVAQ		HEADER,FAOLST+FAO$_CTRSTR
CLRL		FAOPRM
$FAOL_G		FAOLST
STR$		TTOBDSC
MOVL		SMQ$L_CURRENT(R6),R7			;POINT TO CURRENT00$:	BEQL		PNDDEV					;NONE
ADDL2		JBCCOR,R7
BSBW		DOCUR
MOVL		SJH$L_NEXTJOB(R7),R7
BRW		100$
NDDEV:
ADDL3		#<SQH$Q_QUEUE+<32*8>>,JBCCOR,R9		;POINT
CLRL		R1015$:	ACBL		#31,#1,R10,120$
BRW		TIMDEV20$:	MOVL		-(R9),R7
MOVL		-(R9),R7				;BEGINNING
BEQL		115$25$:	ADDL2		JBCCOR,R7
MOVZWL		SJH$W_QINDEX(R7),R0
ADDL2		JBCCOR,R0
CMPL		R0,R6
BNEQ		130$
MOVL		JBCCOR,R1				;SEE IF ANYWHERE ELSE
MOVL		SQH$L_TIMQUE(R1),R126$:	BEQL		127$
ADDL2		JBCCOR,R1
CMPL		R1,R7
BEQL		130$
MOVL		SJH$L_NEXTJOB(R1),R1
BRB		126$27$:	MOVL		SMQ$L_HOLDLST(R6),R128$:	BEQL		129$
ADDL2		JBCCOR,R1
CMPL		R1,R7
BEQL		130$
MOVL		SJH$L_NEXTJOB(R1),R1
BRB		128$29$:	BSBW		DOPND30$:	MOVL		SJH$L_NEXTJOB(R7),R7
BEQL		115$
BRB		125$
IMDEV:
MOVL		JBCCOR,R7
MOVL		SQH$L_TIMQUE(R7),R7
BEQL		HLDDEV35$:	ADDL2		JBCCOR,R7
MOVZWL		SJH$W_QINDEX(R7),R0
ADDL2		JBCCOR,R0
CMPL		R0,R6
BNEQ		140$
BSBW		DOTIM40$:	MOVL		SJH$L_NEXTJOB(R7),R7
BNEQ		135$
LDDEV:
MOVL		SMQ$L_HOLDLST(R6),R7			;POINT TO HELD
BEQL		DONDEV45$:	ADDL2		JBCCOR,R7
MOVAB		DOHLD1,R0
BBC		#SJH$V_HOLD,SJH$B_FLAGS(R7),150$
MOVAB		DOHLD2,R050$:	JSB		(R0)
MOVL		SJH$L_NEXTJOB(R7),R7
BNEQ		145$
ONDEV:
BRW		DONQ					;WHEN ARE DONE

.SBTTL		MISCELLANEOUS SUBROUTINES

OUTPUT COMMON INFO ABOUT THE CURRENT JOB.  SJH ENTRY POINTED TO BY R7
R6 SHOULD POINT TO THE SMQ ENTRY
TRASHES R0-R5
DOJOB EXPECTS R5 TO POINT TO ASCIC STATUS STRING FOR THE JOB

OJOB:
MOVAQ		LPCTR,FAOLST+FAO$_CTRSTR
MAKFAO		<P1V=SJH$W_JOBSEQ(R7),P2V=#8,-
		P3=SJH$Q_JOBNAME(R7),P4V=#8,-
		P5=SJH$Q_ACNTNAM(R7),P6V=R5,-
		P7V=SJH$B_PRTPRI(R7),P8V=SJH$L_UIC+2(R7),-
		P9V=SJH$L_UIC(R7),P10V=#12,P11=SJH$T_USERNAM(R7),-
		P12=SJH$Q_TIME(R7)>
$FAOL_G		FAOLST
STR$		TTOBDSC
BBC		#SMQ$V_DETJOB,SMQ$B_FLAGS(R6),5$
BSBW		DOPAR				;DO BATCH PARAMETERS
$:	BSBW		DOSQR				;DO JOB ENTRIES
RSB

OPND:
MOVAB		PND,R5
BRW		DOJOB

OTIM:
MOVAB		TIMP,R5
BBC		#SJH$V_HOLD,SJH$B_FLAGS(R7),10$
MOVAB		TIMH,R50$:	BRW		DOJOB

OHLD1:	MOVAB		HLD1,R5
BRW		DOJOB

OHLD2:	MOVAB		HLD2,R5
BRW		DOJOB

OCUR:
MOVAB		CUR,R5
BSBW		DOJOB
BBS		#SMQ$V_DETJOB,SMQ$B_FLAGS(R6),13$
BRW		20$3$:	PUSHL		SJH$L_PROCID(R7)
MOVAL		(SP),R0
$GETJPI_S	ITMLST=ITMLST,PIDADR=(R0)
BLBC		R0,15$
$WAITFR_S	EFN=#05$:	CLRL		(SP)+
MOVAQ		JOBCTR,FAOLST+FAO$_CTRSTR
MAKFAO		<P1V=SJH$L_PROCID(R7),P2V=PRCLEN,P3=PRCNAM,-
		P4V=#12,P5=USRNAM,P6V=IMGLEN,P7=IMGNAM,P8V=PRIC,-
		P9V=PRIB>
$FAOL_G		FAOLST
STR$		TTOBDSC
0$:	RSB

DO BATCH PARAMETERS
USUAL STUFF FOR THESE ROUTINES EXPECTED (R6 AND R7)
TRASHES R2,R3

OPAR:	CLRQ		-(SP)		;ALLOCATE SPACE
MOVZBL		#1,R3		;COUNTER
MOVAB		@SJH$L_PARMBLK(R7),R2
BEQL		DONPAR
ADDL2		JBCCOR,R2
MOVAQ		PARCTR,FAOLST+FAO$_CTRSTR
ARLP:	MOVZBL		(R2),(SP)	;COUNT
BEQL		DONPAR		;NO MORE
MAKFAO		<P1V=R3,P2=(R2)>
$FAOL_G		FAOLST
STR$		TTOBDSC
ADDL2		(SP),R2
INCL		R2
ACBL		#8,#1,R3,PARLP
ONPAR:	CMPL		#1,R3
BGEQ		30$
STR$		CRLF
0$:	STR$		CPUHDR1
MOVAQ		CPLMCTR1,FAOLST+FAO$_CTRSTR
MOVAQ		STAR,R0
BBC		#SJH$V_CPULIM,SJH$W_QUOFLG(R7),100$
EMUL		#10*10*1000,SJH$L_CPULIM(R7),#0,(SP)
MAKFAO		P1=(SP)
$FAOL_G		FAOLST
MOVAQ		TTOBDSC,R000$:	STR$		(R0)
CLRQ		(SP)+
STR$		WSHDR
MOVAQ		WSLMCTR,FAOLST+FAO$_CTRSTR
MOVAQ		STAR,R0
BBC		#SJH$V_WSDFLT,SJH$W_QUOFLG(R7),110$
MAKFAO		P1V=SJH$W_WSDFLT(R7)
$FAOL_G		FAOLST
MOVAQ		TTOBDSC,R010$:	STR$		(R0)
CHR$		#^A"/"
MOVAQ		STAR,R0
BBC		#SJH$V_WSQUTA,SJH$W_QUOFLG(R7),120$
MAKFAO		P1V=SJH$W_WSQUTA(R7)
$FAOL_G		FAOLST
MOVAQ		TTOBDSC,R020$:	STR$		(R0)
STR$		CRLF
RSB

OUTPUT STUFF IN VARIOUS OF THE QUEUE RECORS
POINTED TO BY THE SJH ENTRY POINTED TO BY R7
R0-R4 TRASHED

OSQR:	MOVL		SJH$L_RECLINK(R7),R4
0$:	BNEQ		45$
BRW		DONSQR
5$:	ADDL2		JBCCOR,R4			;POINT TO ENTRY
MOVAQ		SQR1,FAOLST+FAO$_CTRSTR
MAKFAO		<P1=SQR$T_VOLNAM(R4),P2=SQR$T_FILNAM(R4),-
		P3V=SQR$W_FILNUM(R4),P4V=SQR$W_FILNUM+2(R4),-
		P5V=SQR$W_FILNUM+4(R4)>
$FAOL_G		FAOLST
STR$		TTOBDSC
TSTW		SQR$W_DIRSEQ(R4)		;ONLY IF PRESET
BEQL		50$
MAKFAO		<P1V=SQR$W_DIRNUM(R4),P2V=SQR$W_DIRNUM+2(R4),-
		P3V=SQR$W_DIRNUM+4(R4)>
MOVAQ		SQR2,FAOLST+FAO$_CTRSTR
$FAOL_G		FAOLST
STR$		TTOBDSC
0$:	BBC		#SQR$V_DELETE,SQR$B_FLAGS(R4),53$
STR$		DEL
3$:	STR$		CRLF
BBC		#SMQ$V_DETJOB,SMQ$B_FLAGS(R6),505$
BRW		60$
05$:	BBC		#SQR$V_FLAGPAG,SQR$B_FLAGS(R4),51$
STR$		FL
1$:	BBC		#SQR$V_BRSTPAG,SQR$B_FLAGS(R4),52$
STR$		BR
2$:	BBC		#SQR$V_DOUBLE,SQR$B_FLAGS(R4),54$
STR$		DBL
4$:	BBC		#SQR$V_NOFEED,SQR$B_FLAGS(R4),55$
STR$		NFD
5$:	BBC		#SQR$V_PAGHDR,SQR$B_FLAGS(R4),56$
STR$		HDR
6$:	MOVAQ		CPYCTR,FAOLST+FAO$_CTRSTR
MAKFAO		P1V=SQR$B_COPYCNT(R4)
$FAOL_G		FAOLST
STR$		TTOBDSC
0$:	MOVL		SQR$L_RECLINK(R4),R4
BRW		40$
ONSQR:	RSB

.ENTRY		OCTDPY,^M<R2,R3>

MOVL		4(AP),R0		;GET NUMBER
PUSHAB		OCTRET			;RET
P:	CLRL		R1			;CLEAR HIGH ORDER
EDIV		#8,R0,R0,R1
BEQL		99$			;YES
MOVZBL		R1,-(SP)
PUSHAB		100$
BRB		LP			;CONTINUE
9$:	MOVZBL		R1,-(SP)00$:	ADDL3		#^A/0/,(SP)+,R0		;GET CHARACTER
CHR$		R0
RSB
CTRET:	RET

.SBTTL		SUMMARY ROUTINE

ROUTINE TO DO SUMMARY OF ALL QUEUES ON THE SCREEN.
THIS IS THE DEFAULT DISPLAY

OSUM:
MOVAL		@JBCCOR,R6			;POINT TO CORE AREA
MOVW		#1,MINLIN
MOVW		#1,MINCOL
MOVW		#20,MAXCOL
MOVW		#5,MAXLIN
CLRL		R10
ADDL3		#SQH$K_SIZE,JBCCOR,R8		;POINT TO SMQ AREA
SL:	ACBB		SQH$B_NUMQUE(R6),#1,R10,50$
SIZ$		MINCOL=MINCOL,MAXCOL=#-1,MINLIN=MINLIN,MAXLIN=MAXLIN
STR$		CRLF				;CLEAR REST OF SCREEN
INCL		MAXLIN
SIZ$		MINLIN=MAXLIN,MAXLIN=#-1,MINCOL=#0,MAXCOL=#-1
STR$		CRLF				;CLEAR REST OF SCREEN
BRW		DONQ
0$:	BBS		#SMQ$V_INUSE,SMQ$B_FLAGS(R8),100$
DECL		R10
5$:	ADDL2		#SMQ$K_SIZE,R8
BRB		OSL00$:	SIZ$		MAXLIN=MAXLIN,MINLIN=MINLIN,-
		MAXCOL=MAXCOL,MINCOL=MINCOL	;SET WINDOW SIZE
MOVAQ		SUMHDR,FAOLST+FAO$_CTRSTR
MAKFAO		P1=SMQ$T_NAME(R8)
$FAOL_G		FAOLST
STR$		TTOBDSC				;NAME OF QUEUE
BBC		#SMQ$V_DETJOB,SMQ$B_FLAGS(R8),110$
CHR$		#^A/B/				;BATCH QUEUE
BRB		115$10$:	BBC		#SMQ$V_TRMDEV,SMQ$B_CHAR(R8),115$
CHR$		#^A/T/15$:	BBC		#SMQ$V_STOPPED,SMQ$B_FLAGS(R8),120$
CHR$		#^A/S/20$:	BBC		#SMQ$V_PAUSED,SMQ$B_FLAGS(R8),125$
CHR$		#^A/P/25$:	STR$		CRLF		
MOVL		SMQ$L_CURRENT(R8),R9		;POINT TO SJH ENTRY
BEQL		200$50$:	ADDL2		JBCCOR,R9			;ADD IN BASE
MOVAQ		SUM1,FAOLST+FAO$_CTRSTR
MAKFAO		<P1V=SJH$W_JOBSEQ(R9),P2V=#8,P3=SJH$Q_JOBNAME(R9),-
		P4V=#12,P5=SJH$T_USERNAM(R9)>
$FAOL_G		FAOLST
STR$		TTOBDSC
MOVL		SJH$L_NEXTJOB(R9),R9
BNEQ		150$
00$:	ADDL3		JBCCOR,#<SQH$Q_QUEUE+<32*8>>,R9	;POINT TO PENDING
CLRL		R5
10$:	MOVL		-(R9),R7
MOVL		-(R9),R7
BNEQ		225$
BRW		650$
25$:	ADDL2		JBCCOR,R7
MOVZWL		SJH$W_QINDEX(R7),R0
ADDL2		JBCCOR,R0
CMPL		R0,R8
BNEQ		600$
MOVL		SQH$L_TIMQUE(R6),R11
BEQL		300$
50$:	ADDL2		JBCCOR,R11
CMPL		R11,R7
BEQL		600$
MOVL		SJH$L_NEXTJOB(R11),R11
BNEQ		250$
00$:	MOVL		SMQ$L_HOLDLST(R8),R11
BEQL		500$
50$:	ADDL2		JBCCOR,R11
CMPL		R11,R7
BEQL		600$
MOVL		SJH$L_NEXTJOB(R11),R11
BNEQ		350$
00$:	MOVAQ		SUM1,FAOLST+FAO$_CTRSTR
MAKFAO		<P1V=SJH$W_JOBSEQ(R7),P2V=#8,P3=SJH$Q_JOBNAME(R7),-
		P4V=#12,P5=SJH$T_USERNAM(R7)>
$FAOL_G		FAOLST
STR$		TTOBDSC
00$:	MOVL		SJH$L_NEXTJOB(R7),R7
BEQL		650$
BRW		225$
50$:
ACBL		#31,#1,R5,675$
BRB		680$
75$:	BRW		210$
80$:	MOVL		SQH$L_TIMQUE(R6),R9
BEQL		690$				;NO TIMER ENTRIES
85$:	ADDL2		JBCCOR,R9
MOVZWL		SJH$W_QINDEX(R9),R0
ADDL2		JBCCOR,R0
CMPL		R0,R8				;THIS QUEUE?
BNEQ		688$
MOVAL		SJH$Q_JOBNAME(R9),R0
MOVAB		SJH$T_USERNAM(R9),R1
$FAO_S		CTRSTR=SUM1,OUTBUF=BUFDSC,OUTLEN=TTOBDSC,-
		P1=SJH$W_JOBSEQ(R9),P2=#8,P3=R0,-
		P4=#12,P5=R1
STR$		TTOBDSC
88$:	MOVL		SJH$L_NEXTJOB(R9),R9
BNEQ		685$
90$:	MOVL		SMQ$L_HOLDLST(R8),R9
BEQL		NXTQS
00$:	ADDL2		JBCCOR,R9
MOVAQ		SJH$Q_JOBNAME(R9),R0
MOVAB		SJH$T_USERNAM(R9),R1
$FAO_S		CTRSTR=SUM1,OUTBUF=BUFDSC,OUTLEN=TTOBDSC,-
		P1=SJH$W_JOBSEQ(R9),P2=#8,P3=R0,-
		P4=#12,P5=R1
STR$		TTOBDSC
MOVL		SJH$L_NEXTJOB(R9),R9
BNEQ		700$
XTQS:	ADDW2		#20,MAXCOL
ADDW2		#20,MINCOL
CMPW		#80,MAXCOL
BLSS		NXTQS2
ADDL2		#SMQ$K_SIZE,R8
BRW		OSL
XTQS2:	ADDW2		#5,MINLIN
SIZ$		MINLIN=MINLIN,MAXLIN=MINLIN,MINCOL=#0,MAXCOL=#-1
STR$		CRLF
INCL		MINLIN
ADDW3		#4,MINLIN,MAXLIN
MOVW		#1,MINCOL
MOVW		#20,MAXCOL
ADDL2		#SMQ$K_SIZE,R8
BRW		OSL

.SBTTL		CONTROL-C AST

.ENTRY		CCAST,0

TTY$		FUN=#TRM$C_TTY_BOTOM
$EXIT_S

ONQ:	BBCC		#FL$V_REF,QFLG,5$
REF$
BRB		7$
$:	DPY$
$:	$SCHDWK_S	DAYTIM=SEC5
$HIBER_S0$:	BRW		QLOOP


OQ:	STR$		(R8)
BRB		DONQ

.SBTTL		COMMAND PARSER

.ENTRY		DOCMD,^M<R2,R3,R4,R5>

LOCC		TTIBUF,#MAXCMD,CMDTAB
BEQL		ILLCMD
SUBL2		#CMDTAB,R1
AVCMD:	MOVL		CMDADR[R1],R0
JSB		(R0)				;PARSE COMMAND
LLCMD:	$QIO_S		CHAN=TTCHN,IOSB=IOSB,-
		FUNC=#IO$_READVBLK!IO$M_NOECHO!IO$M_CVTLOW,-
		ASTADR=DOCMD,-
		P1=TTIBUF,P2=#1
RET

CMD:	BICL2		#FL$M_SUM,QFLG
BISL2		#FL$M_FIRST,QFLG		;FIRST TIME
$QIOW_S		CHAN=TTCHN,-
		FUNC=#IO$_READVBLK!IO$M_NOECHO!IO$M_CVTLOW,-
		IOSB=IOSB,-
		P1=TTIBUF,P2=#80
MOVW		IOSB+2,CURQ
MOVC3		CURQ,TTIBUF,CURQ+1
RSB

CMD:	BISL2		#FL$M_REF,QFLG
RSB

CMD:	BISL2		#FL$M_SUM,QFLG
RSB

.SBTTL	SHARABLE DATA

.PSECT	QDATA,RD,NOWRT,NOEXE

BCSYSQUE:
.ASCID/JBCSYSQUE/

EC5:	.LONG	-5*10*1000*1000,-1

TMLST:	.WORD	1,JPI$_PRI
.LONG	PRIC,0
.WORD	15,JPI$_PRCNAM
.LONG	PRCNAM,PRCLEN
.WORD	1,JPI$_PRIB
.LONG	PRIB,0
.WORD	64,JPI$_IMAGNAME
.LONG	IMGNAM,IMGLEN
.WORD	12,JPI$_USERNAME
.LONG	USRNAM,12
.LONG	0

MDTAB:	.ASCII/QRS/
MAXCMD=.-CMDTAB

MDADR:	.LONG	QCMD
.LONG	RCMD
.LONG	SCMD

.SBTTL	FORM CONTROL STUFF

.PSECT	QFORMS,RD,WRT,NOEXE

N:	.ASCID/Queue /
NAMD:	.BLKL	1
.LONG	QNAM
NAM:	.BLKB	20

T:	.ASCID/ Stopped/
A:	.ASCID/ Paused/

ONQ:	.ASCID/ does not exist/
ONA:	.ASCID/ is not active/

AT:	.ASCID/ (B)/
SW:	.ASCID/ Noswap/
RICTR:	.ASCID\ Inipri=!ZB Job C/L=!ZB/!ZB \

L:	.ASCID/ Flag/
ENPR:	.ASCID/ GenPr/
ENDV:	.ASCID/ GenDv/
W:	.ASCID/ Lower/
RMCTR:	.ASCID\ Forms=!ZB Symbiont = !AC\
R:	.ASCID/ Burst/
RM:	.ASCID/ (T)/
DR:	.ASCID/ Redirected/

RLF:	.ASCID	<^O15><^O12>
EADER:	.ASCID	\ !%T\<^O15><^O12>\Job ID Job name Account  Sts  Pr      UIC	Username     Release Time\<^O15><^O12>


PCTR:
.ASCID\!ZW	!AD !AD !4AC !2UB  [!3OW,!3OW] !AD !%D!/\


TOBDSC:
.BLKL	1
.LONG	TTOBUF

UFDSC:	.LONG		200
.LONG		TTOBUF

TOBUF:	.BLKB	200

ND:	.ASCIC/P/
UR:	.ASCIC/C/
IMP:	.ASCIC\T/P\
IMH:	.ASCIC\T/H2\
LD1:	.ASCIC/H1/
LD2:	.ASCIC/H2/

OBCTR:	.ASCID\  !XL  !AD   !AD  !AD  !ZB/!ZB!/\
ARCTR:	.ASCID/ P!1XL=!AC/

QR1:	.ASCID\ File !AC:!AC FID: !UW,!UW,!UW\
QR2:	.ASCID\ (DID: !UW,!UW,!UW)\

FD:	.ASCID/ Nofeed/
PYCTR:	.ASCID\ Copies=!ZB!/\
BL:	.ASCID/ Double space/
EL:	.ASCID/ Delete/
DR:	.ASCID/ Paghdr/

UMHDR:	.ASCID\Queue !AC \
UM1:	.ASCID\!4UW !8AD !4AD!/\

PUHDR1:
.ASCID\CPU limit: \
PUHDR:	.ASCID\CPU D/Q: \
SHDR:	.ASCID\ WS D/Q: \
SLMCTR:
.ASCID\!UW\
PLMCTR1:
.ASCID\%D\
PLMCTR:
.ASCID\!5%T\
TAR:	.ASCID\*\

.SBTTL	IMPURE STORAGE

.PSECT	QDATA2,RD,WRT,NOEXE

OSB:	.BLKQ	1
TDEV:	.ASCID/TT/
TCHN:	.BLKW	1

TIBUF:	.BLKB	80

BCCOR:	.BLKQ	1

RMQ:	.ASCII/Terminal type: /
TRMQL=.-TRMQ

URQ:	.ASCIC/LPA0/
.BLKB	20

OW:	.BLKQ	1

RCLEN:	.BLKL	1
RCNAM:	.BLKB	15
RIB:	.BLKB	1
RIC:	.BLKB	1

FLG:	.LONG	FL$M_SUM
FL$V_REF=0
FL$M_REF=1
FL$V_SUM=1
FL$M_SUM=2
FL$V_FIRST=2
FL$M_FIRST=4

AXCOL:	.BLKW	1
INCOL:	.BLKW	1
AXLIN:	.BLKW	1
INLIN:	.BLKW	1

MGNAM:	.BLKB	64
MGLEN:	.BLKL	1
SRNAM:	.BLKB	12

AOLST:	$FAOL	PRMLST=FAOPRM,OUTLEN=TTOBDSC,OUTBUF=BUFDSC

AOPRM:	.BLKL	20

.END	Q