	.TITLE RPOI
	.IDENT /130984/

;
; PROCEDURE RPOI(Task:Rad56; CmdPtr:Address; CmdLen: Integer;
;  		VAR Info: RPOI_Info_rec);EXTERNAL;
;
; { This procedure requests a task, and passes all offspring information
;  to that task. Used primarily with CLIs, or when spawnning 'through'
;  MCR...
;
;  Directive status is available in DSW upon return. 
;
;  Jim Bostwick 13-Sep-84 }
;
; Version: 1.0 (P3UTIL version)
; File: PA3:[22,310]RPOI.MAC
; Author: Jim Bostwick 13-Sep-84 (clone from P2UTIL )
; History:
;
; Last Edit: 23-MAY-1989 16:35:48 
;
; Assemble with PASMAC.MAC as prefix file.
;
; NOTE: This procedure uses a local data PSECT (CLIDAT), and thus
; 	may NOT be included in a shared resident library!!!
;
; j.m.b. 130984
;

	.MCALL RPOI$, DIR$

;LOCAL DATA
		.PSECT CLIDAT, D, RW

RDPB:	RPOI$ ,,,,,,,,,,,,		; TEMPLATE RPOI DPB

		.PSECT

; Define RPOI_Info in macro terms...

	RECORD INFOREC			; RPOI_INFO
	FIELD DEVICE,	INTEGER		; CH2
	FIELD UNIT,	INTEGER		; UNIT NUMBER
	FIELD GROUP, 	INTEGER		; UIC GROUP NUMBER
	FIELD MEMBER,	INTEGER		; UIC MEMBER NUMBER
	FIELD RNAM,	4		; RAD50 RUN NAME
	FIELD FLAGS,	INTEGER		; CONTROL FLAGS
	FIELD PARENT	4		; RAD50 PARENT NAME
	FIELD POCB,	ADDRESS		; PARENT OCB ADDRESS
	ENDREC
	
	PROC RPOI
	PARAM TASK, 2*INTEGER		; RAD50 TASK TO 'SPAWN'
  	PARAM CMDPTR, ADDRESS		; POINTER TO COMMAND BUFFER
	PARAM CMDLEN, INTEGER		; LENGTH OF COMMAND BUFFER
	PARAM INFO, ADDRESS		; POINTER TO INFO BLOCK


	SAVE <R0, R1>
	BEGIN
	; COPY PARAMETERS TO TEMPLATE DPB....
	MOV	#RDPB, R0		; R0-> RPOI DPB
	MOV	TASK(SP), R.POTK(R0)	; COPY TASK NAME
	MOV	TASK+2(SP), R.POTK+2(R0) ; COPY REST OF TASK NAME
	MOV	CMDPTR(SP), R1		; GET BUFFER ADDRESS
	MOV	CMDLEN(SP), R.POBL(R0)	; COPY COMMAND LENGTH
	BNE	1$			; IF ZERO, IGNORE BUFFER ADDRESS
	CLR	R1
1$:	MOV	R1, R.POBF(R0)		; COPY BUFFER ADDRESS
	MOV	INFO(SP), R1		; R1-> INFO RECORD
	MOV	DEVICE(R1), R.PODV(R0)	; COPY DEVICE NAME
	MOVB	UNIT(R1), R.POUN(R0)	; COPY DEVICE UNIT AS BYTE
	MOVB	GROUP(R1), R.POUG(R0)	; COPY GROUP NUMBER AS BYTE
	MOVB	MEMBER(R1), R.POUM(R0)	; COPY MEMBER NUMBER AS BYTE
	MOV	RNAM(R1), R.POTN(R0)	; COPY RUN NAME
	MOV	RNAM+2(R1), R.POTN+2(R0)  ; AND REST OF RUN NAME
	MOVB	FLAGS(R1), R.POSC(R0)	; COPY FLAGS AS BYTE
	MOV	PARENT(R1), R.POPT(R0)	; COPY PARENT TASK NAME
	MOV	PARENT+2(R1), R.POPT+2(R0) ; AND REST OF PARENT NAME
	MOV	POCB(R1), R.POOA(R0)	; COPY PARENT OCB ADDRESS
	; EXECUTE THE MUTHA...
	DIR$	#RDPB			; EXECUTE RPOI
	ENDPR
	.END

