;
; This task serves as a substitute for the $LOAD server so that actual
; calls may be made to PROLOD and use the temporary driver loader built
; into the driver image.
;
	.mcall	rqst$s

instal:	.word	5		;install request
	.word	stat		;ptr to status
	.word	reqst		;ptr to rqst
	.word	tnm		;ptr to taskname of driver
fnmpt:	.word	0		;ptr to file spec in request packet
	.word	fnmsz		;ptr to word containing size in bytes of fnm
stat:	.blkw	8.		;status block
tnm:	.blkw	2		;taskname of task installed (0 if ins fails)
	.even			;
fnmsz:	.word	0		;word containing size of fnm
reqst:	.word	1!100		;request install/noremove of a task
reqbf:	.blkw	100.		;incoming prolod reqst buffer
reqbfs=.-reqbf
start:	mov	#reqbf,r0	;pt to rqst buf
	mov	#reqbfs/2,r1	;specify max size in words
	call	$recrq		;receive request or exit
	cmp	(r0)+,#1	;is this a load request?
	bne	10$		;if ne reject
	mov	(r0)+,fnmsz	;get fnm size in bytes
	mov	r0,fnmpt	;save ptr to fnm
	mov	#instal,r5	;specify arg blk for protsk call
	call	protsk		;install driver /noremove
	mov	#tnm,r3		;pt to task name (may be invalid..no harm done)
	rqst$s	r3		;attempt to request it
	mov	#stat+2,r0	;point to protsk stat blk
	mov	stat,r1		;get number of valid params
	br	20$		;return status
10$:	mov	#-5,stat	;indicate that we don't unload or do discrete
				;reconfiguration commands in the temp loader
	mov	#-1,stat+2	;feature not implemented yet
	mov	#stat,r0	;pt to args
	mov	#2,r1		;return two args
20$:	call	$sndst		;return status
	br	start		;propagate request
	.end	start	
	
