;*************************** AMUS Program Label ******************************
; Filename: PRIO.M68                                        Date: 07/01/89
; Category: UTIL         Hash Code: 642-165-367-422      Version: 1.0(100)
; Initials: PSS/AM       Name: DENNIS W. NEDER
; Company: PROFESSIONAL SOFTWARE SYSTEMS           Telephone #: 8189575930
; Related Files: LIB.UNV  (DON'T FORGET THIS FILE!)
; Min. Op. Sys.: 1.3                           Expertise Level: BEG
; Special: You must LNKLIT this program after assembly
; Description: This program will set all other job's priority level, (except
; the job running PRIO).  Useful on heavily-loaded systems.
; 
;*****************************************************************************
;
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; *	PRIO.M68							*
; *	Program to globally set job's priorities			*
; *	Copyright (c) 1988 by Dennis W. Neder				*
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; *
	SEARCH	SYS
	SEARCH	SYSSYM
	SEARCH	LIB
;
; Version:
;
	VMAJOR=1
	VMINOR=0
	VEDIT=100.

;
; Local equates:
;
	JOB=A0
	TBL=A4	
	IMP=A5
;
; Impure storage:
;
	.OFINI
	.OFDEF	PRIO,4
	.OFSIZ	IMPSIZ
;
; Define macros here:
;

DEFINE	DEPACK	ADDR
	IF	NB,ADDR,LEA A1,ADDR
	SUB	#4,SP
	MOV	SP,A2
	UNPACK
	CLRB	@A2
	TTYL	@SP
	ADD	#4,SP
	ENDM

HDR:	PHDR	-1,0,PH$REE!PH$REU!PH$OPR

;
; Begin program here:
;
BEGIN:	NAME	HDR
	CRLF
	CRT	#11.
	TYPECR	Copyright (c) 1988 by Dennis W. Neder
	CRT	#12.
	GETIMP	IMPSIZ,IMP		; Get our temporary storage
	JOBIDX	JOB			; Who are we?
	BYP
	LIN				; Any priority given?
	BNE	20$
10$:	CRLF
	TYPESP	<Enter desired priority:>
	KBD	EXIT$
20$:	NUM				; Insure numeric @A2
	BEQ	30$			; Yes - continue
	TTYL	NUMPRI
	CRLF
	BR	10$			; Try again
30$:	GTDEC				; Get the value
	CMP	D1,#1			; Let's begin to check the range...
	BLO	40$
	CMP	D1,#254.
	BHI	40$
	BR	SETPRI
40$:	TTYL	BADPRI
	CRLF
	BR	10$

SETPRI:	MOV	D1,PRIO(IMP)		; Save our priority
	CRLF
	TYPECR	<Setting priorities on:>
	CRLF
	MOV	JOBTBL,TBL		; Index job table
10$:	MOV	(TBL)+,D0		; Get next job
	BEQ	10$			; Branch if de-allocated
	BMI	EXIT$			; Branch if end of job table
	MOV	D0,A1			; A1 points to current job
	CMP	A1,JOB			; Is this me?
	BEQ	10$			; Yes - don't change my priority
	MOV	A1,A3			; Save for later
	TAB				; Output a tab character
	DEPACK	JOBNAM(A1)		; print job name
	DEPACK
	MOV	A3,A1			; Restore A1
	CRT	#11.
	TYPESP	<  Previous priority:>
	CRT	#12.
	MOV	JOBRNQ+20(A1),D1	; Get previous priority
	DCVT	0,OT$TRM
	CRLF
	MOV	A3,A1
	MOV	PRIO(IMP),JOBRNQ+20(A1)	; Load new job priority
	BR	10$			; continue

EXIT$:	EXIT

NUMPRI:	ASCIZ	/?Priority must be numeric/

BADPRI:	ASCIZ	/?Priority must be in the range 1 - 256/

	END