PROCEDURE	<INITL - RUNOFF INITIALIZATION>,010005
;+
;
; Abstract:	This module contains the RUNOFF initialization code
;
; Written: 18-Jan-80,-1.0.0-, Henry R. Tumblin
;
; Modified:
;
; Verified: 18-Jan-80, -1.0.0-, Henry R. Tumblin
;
; Modified: 02-Sep-80, -1.0.1-, John D. Leonard
;	For 1/8 line spacing
;	Changed some defaults and modified Number lower so is dynamic
;	with page size and specification of $NUMLW switch.
;
; Modified: 09-Oct-80, -1.0.2-, John D. Leonard
;	Added initialization for equation mode
;
; Modification: 13-Oct-80, -1.0.3-, John D. Leonard
;	Blanked out PAGE in heading
;
; Modified: 15-Oct-80 , -1.0.4-, John D. Leonard
;	Added Overbar initialization code
;
; Modified: 04-Dec-80, -2.0.5-, John D. Leonard
;	Added 10/12 pitch margin initialization
;	
;-

	.SBTTL	MCALLS AND RUNOFF DEFINITIONS

;	RUNOFF definitions

	.GLOBL	APNDN			; Current Appendix Number
	.GLOBL	CAS			; Current case setting
	.GLOBL	DIASW			; DIABLO switch
	.GLOBL	EBSIZ			; Change bar offset
	.GLOBL	FFDSW			; Initial switch settings
	.GLOBL	FILLF			; Fill flag
	.GLOBL	FINFLG			; File input flag
	.GLOBL	FOOTC			; Footnote line count
	.GLOBL	F.1			; Flags word
	.GLOBL	GCSCH			; Saved character buffer
	.GLOBL	HFIN			; Input line descriptor
	.GLOBL	HFOUT			; Output line descriptor
	.GLOBL	HGHCHP			; High chapter range
	.GLOBL	HGHPAG			; High page range
	.GLOBL	HWLPP			; Hardware lines per page
	.GLOBL	ILMRG			; Initial left margin
	.GLOBL	ILSTTP			; Initial list page test count
	.GLOBL	ILSTVS			; Initial list spacing
	.GLOBL	INDCT			; Current column on page
	.GLOBL	INIFRE			; Initialize free space
	.GLOBL	INLPG			; Initial length of page
	.GLOBL	INTLPG			; TOC initial length of page
	.GLOBL	IPARIN			; Initial paragraph indenting
	.GLOBL	IPARTP			; Initial paragraph page test
	.GLOBL	IPARVS			; Initial paragraph spacing count
	.GLOBL	IRMRG			; Initial right margin
	.GLOBL	IUL			; Initial underline mode
	.GLOBL	JUSTF			; Justify flag
	.GLOBL	LINEC			; Current line number on page
	.GLOBL	LMARG			; Current left margin
	.GLOBL	LOWCHP			; Low chapter range
	.GLOBL	LOWPAG			; Low page range
	.GLOBL	LPPG			; Lines per page
	.GLOBL	LSTCT			; Current list element number
	.GLOBL	LSTFIL			; Listing file default FNB
	.GLOBL	LSTK			; Initial list stack pointer
	.GLOBL	LSTKP			; List stack pointer
	.GLOBL	LSTPT			; List page test count
	.GLOBL	LSTVS			; Current list spacing
	.GLOBL	NSPNG			; Current spacing
	.GLOBL	NTABS			; Current number of tab stops
	.GLOBL	PAGCNT			; Total page count
	.GLOBL	PAGENO			; Current page number
	.GLOBL	PAGHD			; Page header prototype
	.GLOBL	PARIND			; Current paragraph indenting
	.GLOBL	PARPT			; Current paragraph page test count
	.GLOBL	PARSP			; Current paragraph spacing count
	.GLOBL	PJUSTF			; Justify flag
	.GLOBL	PNLPG			; Permanent left margin
	.GLOBL	PRMRG			; Permanent right margin
	.GLOBL	RIGSHI			; Right shift value from /RI:n

	.SBTTL	Runoff definitions (continued)

	.GLOBL	FILHD			; Include file listhead
	.GLOBL	SPCNG			; Initial spacing count
	.GLOBL	STTLBF			; Subtitle buffer descriptor
	.GLOBL	TABTAB			; Tabstop table
	.GLOBL	TPNLPG			; TOC permanent # lines/page
	.GLOBL	TTLBUF			; Title buffer descriptor
	.GLOBL	ULMCH			; Saved underline character
	.GLOBL	ULSWT			; Current underline mode
	.GLOBL	WCAS			; Current word case conversion
	.GLOBL	XFIRST			; First index entry
	.GLOBL	$AUTSW			; Autoparagraph flag
	.GLOBL	$CBON			; Change bar flag
	.GLOBL	$CFLSW			; Word capitalize flag
	.GLOBL	$CHRFL			; Roman Numeral Chapter # flag
	.GLOBL	$GCISW			; Reread flag
	.GLOBL	$HDRSW			; Print header flag
	.GLOBL	$HFLSW			; Hyphenation flag
	.GLOBL	$HPHSW			; Hyphenation active flag
	.GLOBL	$INSW			; Input file switches
	.GLOBL	$NUMSW			; Number page flag
	.GLOBL	$OUSW			; Output file switches
	.GLOBL	$PERSW			; Punctuation double space flag
	.GLOBL	$PGPSW			; Page pending flag
	.GLOBL	$SBPSW			; Subpage flag
	.GLOBL	$SDISW			; Secondary input flag
	.GLOBL	$TOCSW			; TOC switches
	.GLOBL	$ULLSW			; Underline lock flag
	.GLOBL	$ULMSW			; Underline mode flag
	.GLOBL	$ULNSW			; Underline enable flag
	.GLOBL	$ULSSW			; Underline simulate flag

;	Globals defined in this module

	.GLOBL	$INITL			; Entry point to this module

	.SBTTL	$INITL - INITIALIZE RUNOFF
;+
; **-$INITL-INITIALIZE RUNOFF VARIABLES
;-
	CODE	INITL

$INITL:	CALL	INIFRE		; init free space
	CALL	INISYM		; init symbol table
	CLR	FOOTLH		; Reset list head
	MOV	#JUSTF+PJUSTF+FILLF,F.1 ; INITIAL FLAGS
	.IF	NDF	R$$OCK
	MOV	#'_,METQUO	;  Initialize quote character
	.IFF
	MOV	#'>,METQUO	; Initialize quote character
	.ENDC	; R$$OCK
	MOV	#'&,METUNL	; Underline indicator
	MOV	#'#,METQSP	; Quoted space indicator
	MOV	#'^,METSHU	; Initialise upper case indicator
	MOV	#'\,METSHD	; Initialise lower case indicator
	MOV	#'=,METNHY	; Inhibit hyphenation character
	MOV	#'<,METCAP	; Word capitalise character
	.IF	NDF	R$$OCK
	MOV	#'{,METSPC	; Superscript character
	MOV	#'},METSBC	; Subscript character
	.IFF
	MOV	#'@,METSPC
	MOV	#'~,METSBC
	.ENDC	; R$$OCK
	MOV	#'!,METILR	; In-line comment character
	MOV	#"SY,LSTFIL+N.DVNM	; Set default output device
	CLR	FILHD		; Show no include files active.
	CLR	PAGCNT		; total page count
	CLRB	$GCISW		; clear reread flag
	CLRB	$SDISW		; clear secondary input flag
	CLRB	$CHRFL		; Clear Roman Numeral Chapters flag
	CLR	RIGSHI		; Clear right shift offset
	CLR	EBSIZ		; clear change bar offset
	CLR	$CBON		; and change bar flag
	CLRB	$ULMSW		; clear underline mode flag
	CLRB	$ULNSW		; clear underline enable flag
	CLRB	$ULSSW		; clear underline simulate flag
	CLRB	$SWPFL		; Reset swap file switch
	CLRB	$LINE1		; Clear Line 1
	CLRB	$LINE2		; Clear line 2
	CLRB	$OPFLG		; Clear OPRWAIT flag
	MOVB	#FIN.CR!FIN.LF,FINFLG ; Init file input flags
	CLR	$AUTSW		; clear autoparagraph flag
	CLR	$CFLSW		; clear word capitalize flag
	CLR	$HFLSW		; clear hyphenation flag
	CLR	$HPHSW		; Turn off hyphenation
	.IF	NDF	A$$RAP
	CLR	$NUMLW		; Clear number low flag
	.IFF
	MOV	#NLFTR,$NUMLW	; Set to number pages lower
				; <# of lines in footer>
	MOV	#12.,PITCH	; Set pitch to 12
	CLR	NFFCH		; Form feed count
	.ENDC
	CLR	$DATE		; Clear date flag
	CLR	$DATET		; Clear TOC date flag
	.IF	NDF	A$$RAP
	MOV	#NLHDR,$HDRSW		; set print header flag
	.IFF
	CLR	$HDRSW		; Default to no headers
	CLR	$MFAC		; Clear line spacing factor flag
	MOV	#IEQSKP,EQSKP	; Eq mode skip count
	MOV	#IEQSPC,EQSPC	; Eq mode spacing
	MOV	#IEQTPC,EQTPC	; Eq mode test page count
	.ENDC
	MOV	SP,$NUMSW	; set number page flag <# lines in footer>
	MOV	SP,$PERSW	; set punctuation double space flag
	MOV	SP,$PGPSW	; set page pending flag
	CLR	$SBPSW		; clear subpage flag
	CLR	$ULLSW		; clear underline lock flag
	.IF	DF	A$$RAP
	CLR	$OBLSW		; clear overbar lock flag
	.ENDC
	CLRB	GCSCH		; no saved character
	.IF	NDF	A$$RAP
	CLRB	ULMCH		; no saved underline character
	MOV	#ULMCH,ULMCHP	; initialize saved character buffer pointer
	CLRB	@ULMCHP		; no saved underline characters
	.ENDC
	MOV	IUL,ULSWT	; initialize underline mode
	MOV	#INLPG,R2	; get initial length of page
	MOV	R2,PNLPG	;
	.IF	DF	A$$RAP
	SUB	$NUMLW,R2	; Adjust for number pages lower
	.ENDC
	MOV	R2,NLPG		;
	MOV	#INTLPG,TPNLPG	; Set initial TOC page size
	.IF	DF	A$$RAP
	MOV	#ITMRG,TMARG	; Set initial top spacing
	.IFF
	MOV	#IRMRG,PRMRG	; initial permanent margin
	MOV	#IRMRG,PRMARG	; initial permanent margin
	MOV	#ILMRG,LMARG	; initial left margin
	MOV	#ILMRG,PLMARG	; initial left margin
	.ENDC
	CLR	CAS		; initial case setting is upper
	CLR	WCAS		; clear word case conversion
	MOV	#APNDN,R0	; clear appendix, chapter and heading levels
	CLR	(R0)+		;
	CLR	(R0)+		;
	CLR	(R0)+		;
	CLR	(R0)		;

	.sbttl	Initialization(continued)

	MOV	#LSTK,LSTKP	; initialize list stack pointer
	CLR	LSTCT		; clear current element number
	MOV	#1,PAGENO	; set initial page number
	MOV	#PAGHD,R0	; initialize page heading prototype
	.IF	NDF	A$$RAP
	MOV	#"Pa,(R0)+	;
	MOV	#"ge,(R0)+	;
	.IFF
	MOV	#"  ,(R0)+	;
	MOV	#"  ,(R0)+	;
	.ENDC
	MOV	(PC)+,(R0)	;
	.ASCIZ	/ /		;
	MOV	#ILSTTP,LSTPT	; set initial list page test count
	MOV	#ILSTVS,LSTVS	; set initial list spacing
	MOV	#SPCNG,NSPNG	; set initial spacing
	MOV	#IPARTP,PARPT	; set initial paragraph page test count
	MOV	#IPARVS,PARSP	; set initial paragraph spacing count
	MOV	#IPARIN,PARIND	; initial paragraph indenting
	MOV	TTLBUF+BF.ADR,TTLBUF+BF.PTR ; initialize title descriptor
	CLR	TTLBUF+BF.LEN	;  ...
	MOV	STTLBF+BF.ADR,STTLBF+BF.PTR ; initialize subtitle descriptor
	CLR	STTLBF+BF.LEN	;  ...
	CLR	LINEC		; start at top of page
	CLR	INDCT		; and left of paper
	CLR	R0		; clear loop counter
	MOV	#8.,R1		; set initial tab stop value
10$:	MOVB	R1,TABTAB(R0)	; set standard tab stops
	ADD	#8.,R1		; advance to next tab stop
	INC	R0		; increment loop counter
	CMPNE	R0,#17.,10$	; loop if end of loop not reached
	MOV	R0,NTABS	; set number of tab stops
	CLR	FOOTC		; no footnote lines held yet
	CLR	XFIRST		; nothing in the index

	MOV	INI$SW,$INSW	; set initial input switches
	MOV	INO$SW,$OUSW	; Set initial output switches
	MOV	INT$SW,$TOCSW	; Set initial TOC switches

	MOV	LIBUF+BF.ADR,LIBUF+BF.PTR ; Init input line descriptor
	CLR	LIBUF+BF.LEN	;  ...
	MOV	HFIN+BF.ADR,HFIN+BF.PTR   ; Initialize descriptors
	CLR	HFIN+BF.LEN	;  ...
	MOV	HFOUT+BF.ADR,HFOUT+BF.PTR ; ...
	CLR	HFOUT+BF.LEN	;  ...
	MOV	THFOUT+BF.ADR,THFOUT+BF.PTR ; ...
	CLR	THFOUT+BF.LEN

	CLR	TLNCNT
	MOV	#1,TPAGNO

	CLR	LOWCHP		;  Set chapter number range
	MOV	#-1,HGHCHP	;  to print

	CLR	LOWPAG		; SET PAGE NUMBER RANGE TO PRINT
	MOV	#-1,HGHPAG

	CLR	INDXOF		; Zero index offset

	RETURN			;

	.END
