	ALWAYS	23MAR4	INIT	<INITIALIZE VIRTUAL MEMORY AND PARMS>		;23MAR4
	.MCALL	CALLR								;**-1

;************************************************************************
;*									*
;*	MODULE:	INIT - INITIALIZE LOGIC, PARAMETERS, VIRTUAL MEMORY	*
;*									*
;*	AUTHOR: KEVIN ANGLEY						*
;*									*
;*	DATE:	30-AUG-82						*
;*									*
;*	INPUT PARAMETERS:						*
;*									*
;*	R0 POINTS TO COMMAND LINE IN PROCESS				*
;*									*
;*	ALTERNATIVELY, ENTRY POINT INITAL CAN BE CALLED FROM PROGRAM	*
;*	TO ACCOMPLISH INITIALIZATION					*
;*									*
;*	OUTPUT PARAMETERS:						*
;*									*
;*	FOR COMMAND INITIATED, R0 POINTS JUST BEYOND COMMAND		*
;*									*
;*	DESTROYS:	R1,R5						*
;*									*
;*	REVISED BY: CHRIS DORAN, SIRA LTD				*
;*									*
;*	DATE: 03-JAN-84							*
;*									*
;*	MODIFICATIONS:							*
;*		Set program name to spaces.				*
;*		Add optional fill specification.			*
;*									*
;*	23MAR4	Scott Smith, Telex Computer Products, Raleigh, NC	*	;23MAR4
;*		Included 'USE FOR READ' modifications.			*	;23MAR4
;*									*	;23MAR4
;************************************************************************
	.PAGE
	.SBTTL	EDIT HISTORY
	.ENABL	LSB

INIT::
	CLR	CSIFLG		; INDICATE COMMAND INITIATED INIT
	GETKEY	WITH		; See if fill byte given
	BNE	5$		; No, go use default FF
	CALL	GETHAS		; Else fetch given one
	BCS	255$
	MOVB	%1,%5		; Put it into value
	SWAB	%5		; Both bytes
	CLRB	%5
	BISB	%1,%5		; For fast whole word set
	BR	10$		;  JOIN COMMON CODE
INITAL::
	SETNZ	CSIFLG		; INDICATE PROGRAM GENERATED INITIALIZATION
5$:	MOV	#177777,%5	; Always to FF
10$:
	PUSH	R0
	CLRL	TRNSFR		; CLEAR TRANSFER ADDRESS (LONG WORD)
	CLRL	OFFST		; CLEAR OFFSET (LONG WORD)
	CLR	COUNT		; CLEAR COUNT OF DATA READ
	CLRL	HIADDR		; MOVE LOW VALUES TO HIGHEST ADDRESS
				;	READ SO FAR
	MOV	#177777,LOADDR	; MOVE HIGH VALUES TO LOWEST ADDRESS
	MOV	#177777,LOADDR+2 ;	READ SO FAR
	MOV	#MEMORY,R0	; MEMORY START ADDRESS IN R0
	MOV	#MEMSIZE,R1	; MEMSIZE (WORDS) INTO R1
	CLR	RDDOM		; Clear the domain for read			;23MAR4
	MOV	#400,RDRAN	; Clear the low byte of the range, set the	;23MAR4
				;  high byte to 1				;23MAR4
20$:
	MOV	%5,(R0)+	; FILL VIRTUAL MEMORY
	SOB	R1,20$		; FOR AS LONG AS IT TAKES

	MOV	#PRGNAM,%0	; Address program name
	MOV	#8.,%1		; of 8 bytes
30$:	MOVB	#SPACE,(%0)+	; Space-fill it
	SOB	%1,30$

	POP	R0
	TST	CSIFLG		; COMMAND OR PROGRAM INITIATED?
	BNE	255$		;  NE: PROGRAM INITIATED; SKIP EXTRA
	CALLR	EXTRA		; PURGE EXTRANEOUS INFO
255$:
	RETURN
	.DSABL	LSB

	.PSECT	DATA	D,RW

CSIFLG:	.BLKW			; 0 on INIT entry, <>0 on INITAL

	.END
