	.NLIST
	.ENABL	LC			; Allow lower case chars
;
;
;
; RUNOFF PREFIX FILE
;
;	Extensive additions by J. CLEMENT
;			Bonner Lab, Rice Univ.
;			Box 1892, Houston, Tx.
;				77251
;
;	Conditional definitions
;
;		Note: RT11 symbol is defined by RT build command files
;	so you do not need to change it.  It is documented here for your
;	convenience.
;
;RT11	=0		; remove (;) if running on RT-11 or TSX
dblbuf	=0		; add	 (;) for no double buffering on RT-11
$FLORD	=1		; add    (;) to remove escape seq for FLORIDA DATA
;$LA50	=1		; remove (;) to define LA-50/LA-100/LA-200
;$HPLJ	=1		; remove (;) to define Hewlett Packard Laser Jet
;$DIAB	=1		; remove (;) to define escape seq for Diablo etc.
;$12pt	=1		; remove (;) to define varsp for 12 pitch Diablo
;$DEBUG	=1		; remove (;) to get debugging aids
;		Debugging aids are only needed if you make major changes to 
;		RNO and need to look at the output in detail.
H$$PHN	=0		; add    (;) if autohyphenation not desired
$DIGR	=0		; add	 (;) for no heuristic hyphenation
$EIS	=0		; add    (;) for CPU without EIS
;$SOB	=0		; remove (;) for macro definition of SOB
;RSTS	=0		; remove (;) if running on RSTS/E
;				NOTE: RSTS compatability not guaranteed !!
$PASS	=0		; add	 (;) to remove 2 pass mode
;
;	Parameters
;
;	These parameters may be made installation dependent
;	You may change these to set up your installation defaults.
;
LINSP=2.			; Partial spacing per line (do not change)
;		Linsp defines how may partial lines/sub or superscript
;		normally this is 2.
;
IFDPTH=32.			; Maximum nesting of .IF commands
VARSIZ=20.			; Maximum chars/variable spacing
SUPSIZ=10.			; Subscript/superscript size
COMSIZ=40.			; Maximum chars/command label
SUBMAX=20.			; Maximum chars/substitution
IFMAX=10.			; Maximum chars/if label
LISSIZ=5.			; Maximum nesting of lists
ILSTTP=2.			; Initial list element page test count
ILSTVS=1.			; Initial list element vertical spacing
IPARIN=5.			; Initial paragraph indentation
IPARTP=2.			; INITIAL PARAGRAPH PAGE TEST
IPARVS=1.			; INITIAL PARAGRAPH VERTICAL SPACING
IRMRG=60.			; INITIAL RIGHT MARGIN
ILMRG=0.			; INITIAL LEFT MARGIN
ITMRG=0.			; INITIAL TOP MARGIN
IHSPAC=3.			; Initial header spacing
HWPLN=66.			; Hardware lines per page
INLPG=58.			; INITIAL LENGTH OF PAGE
LOLMAR=9.			; INITIAL LEFT MARGIN INDENT ON LISTS
LSLMAR=4.			; LEFT MARGIN INDENT ON EMBEDDED LISTS
NHSPAC=2.			; INITIAL VERTICAL SPACING BEFORE NOTES
NASPAC=1.			; Vertical spacing after note title
NFSPAC=2.			; FINAL VERTICAL SPACING AFTER NOTES
NPMARG=20.			; PRIMARY MARGIN CHANGE ON NOTES
NSMARG=5.			; SECONDARY MARGIN CHANGE ON NOTES
ISPNG=1.			; STANDARD LINE SPACING
CBNSP=3.			; CHAR OFFSET FOR CHANGE BARS
;				  Min page length is set by changing 16.
MINPG=16.*LINSP			; Min page length in partial lines
MINLN=16.			; Min line length
MAXPS=5.			; Max paragraph spacing allowed
FNTSIZ=1.			; Number of fonts handled
LEVSIZ=6.			; Max number of header levels
;
;	The following control the .DISPLAY commands
;
CH.HD1=10.		; Number of characters in pre-header
;			  Half the characters for variable spacing
CH.HD2=10.		; Number of characters in post-header
HD.MAX=16.		; This must be larger than CH.HD1,CH.HD2, or 12.
;
;	Size of buffers
;
IBFSZ=512.			; Input buffer size
;	This  needs to be larger than the maximum input line.
;	You may increase or decrease this as needed.  In general it should 
;	never be smaller than 132.
;
OBFSZ=256.			; Output buffer size
;	This needs to be larger than the maximum output line if /-CR is used.
;	If this is too big you may not be able to edit the resulting file.
;	This is not used in RT-11 version where the output line can be any 
;	size and is not limited.
;
ULNSZ=150.			; Underline buffer size
;	This needs to be larger than the maximum number of characters/line
;	for your printer if either /UL:S or /UL:L are used.
;
;	
;	This determines storage for traceback lines.  Buffer
;	must be big enough for full filename.  Number must be even
;
	.ifdf	RT11
TRCLN=18.			; Line size for RT-11
	.iff
TRCLN=40.			; Line size for RSX-11M (VMS)
	.endc
;
;		|	|	|	|	|	|
;		|	|	|	|	|	|
;		V	V	V	V	V	V
;
;	====>	The rest of this file should not be changed	<====
;	====>	If you make any changes after this notice	<====
;	====>	You do so at YOUR OWN RISK.			<====
;
;		^	^	^	^	^	^
;		|	|	|	|	|	|
;		|	|	|	|	|	|
;
;
$WORDL=2			; Number of bytes/normal word
;
;	FLAG BITS IN F.1 (Do not mess with these)
;
;	NOTE: THE LOW ORDER BYTE CORRESPONDS TO A LEGAL COMMAND MASK
;		THAT IS TESTED AGAINST THE TRAILING BYTE OF THE
;		APPROPRIATE COMMAND NAME.
;
NOTF=	1			; NOTE PROCESSING ACTIVE
FOTF=	2			; FOOTNOTE PROCESSING ACTIVE
LCKF=	4			; Parameters locked off
TEXF=	10			; Text on
RELF=	40			; RELATIVE NUMBER CONVERSION (1=YES)
BRKF=	100			; CORRESPONDS TO BREAK FLAG IN TRAILING BYTE
;	200			; Marks last byte in table
;
JUSTF=	400			; JUSTIFY ENABLED
PJUSTF=	1000			; PREVIOUS JUSTIFY FLAG
FILLF=	2000			; FILL ENABLED
LITFG=	4000			; LITERAL PROCESSING FLAG
TXDEF=	10000			; Text deferred flag
IFFLG=	20000			; If flag
PARF=	40000			; Paragraph flag
;
; SWITCH WORD FLAG BIT DEFINITIONS FOR S1 (Do not mess with these)
;
FFDSW=1				; SIMULATE FORM FEEDS (0=YES)
HYPSW=2				; HYPHENATE OUTPUT TEXT (1=YES)
PAUSW=4				; PAUSE BETWEEN PAGES (1=YES)
SPLSW=10			; SPOOL TEXT FILE (1=YES)
UPCSW=20			; FORCE ALL TEXT TO UPPER CASE (1=YES)
CRSW=40				; No CR,LF switch
EVESW=100			; Even output ?
ODDSW=200			; Odd output ?
DEBSW=400			; Debug switch
TTSW=1000			; Terminal output switch
PASSW=2000			; Pass switch (causes 2 passes)
WARSW=4000			; Warning suppress switch
EROSW=10000
;
; SWITCH FLAGS (BYTE) (Do not mess with these)
;	Definitions
;
SW.TDS=1			; Temporary disable
SW.TD2=2			; Temporary disable 2
SW.HDR=4			; Temporary disable during headers
SW.EDS=20			; Disable during equation
SW.IDS=40			; Disable during input
SW.DIS=200			; Permanent disable
FL.ALL=1000			; Disable all
FL.LIT=2000			; Literal disable
FL.DIS=100000			; Permanent disable
;
;
;
;	Bits for LAYOUT (Do not mess with these)
;
LAY.CT=1			; Center title/subtitle
LAY.RT=2			; Title to right
LAY.OT=4			; Alternate right left title
LAY.CP=10			; Center page
LAY.LP=20			; Page to left
LAY.OP=40			; Alternate right left page
LAY.NB=100			; Page number at bottom of page
LAY.TB=200			; Title at bottom of page
;
;	INDEX Table format: (Do not mess with these)
;
;		byte 1+2	Foreward link to next entry
;		byte 3		Status byte
X.ENT=200		; Index entry follows page/chapter.. bytes
X.SPG=100		; Subpage byte present
X.PAG=40		; Page word present
X.CH=20			; Chapter byte present
X.AP=10			; Appendix byte present
X.SEN=7			; these bits number subentries.
;		byte 4-n	Subpage/page word/chapter/appendix bytes
;		byte n+1-m	Index entry if X.ENT
;
;	List elements stack (Do not mess with these)
;
LS.CNT=0		; Current number
LS.PRE=2		; Pre char
LS.PST=4		; Post char
LS.CHR=5		; Current char
LS.VSP=6		; Vertical spacing
LS.FMT=10		; Element format
LS.MRG=12		; saved margin
LS.SIZ=14		; Size of entry
;
;	Numeral definitions
;
NM.MSK=	^o007777	; Number mask
NM.DEC=	^o040000	; Deciml number	
NM.ALP=	^o100000	; Alpha
NM.ROM=	^o040000	; Roman numeral
NM.UC=	^o020000	; Upper case
NM.MC=	^o010000	; Mixed case
;
;	Definitions for text header (Do not mess with these)
;
BFHED=13.			; # BYTE I/O HEADER
;
;	1=	Skip before line count
;	2=	Status byte
;	3=	Skip after line count
;	4=	First spacing count
;	5=	Second spacing count
;	6=	Real spaces/expandable spaces
;	7=	Spaces before break in extra spaces
;	8=	-1=Extra to left	0=Extra to right
;	9=	Micro spaces to add per space
;
;
;	Line header status bits (Do not mess with these)
;
HD.BAR=1			; Output change bar
HD.VAR=2			; Enable variable spacing
HD.LIN=4			; Line to output
HD.TXD=40			; Text deferred stat.
;
HD.FIG=100			; Skip optional (not figure)
HD.SKP=200			; Skip count only
;
;	Escape sequence options (Do not mess with these)
;
ES.LCK=1			; Sequence is lock/unlock sequence
ES.VSP=2			; Vertical spacing param present
ES.HSP=4			; Horiz spacing param present
ES.PSP=10			; Spacing is permanent change
ES.WRD=40			; Lock till next word
ES.CHR=100			; Lock till next char
ES.NUL=200			; Dummy status
;
;	Tab options (Do not mess with)
;
TB.R=200			; Right justify
TB.L=100			; Left justify
TB.C=40				; Center justify
TB.CNT=37			; Ellipses count
;
;	Parameters
;
REQSIZ=5			; Maximum nesting of .REQ
;
;	Character definitions (should not be messed with)
;
BS=	10			; BACKSPACE CHARACTER
TAB=	11			; TAB
LF=	12			; LIN FEED
FF=	14			; FORM FEED
CR=	15			; Carriage return character
PAGCHR=	23			; Page character
TOCX=	24			; Toc entry follows
SXCHR=	25			; Subindex entry follows
INDX=	26			; Index entry follows
REPO=	27			; Repeat on output
TABO=	30			; Internal output tab character
ELIP=	31			; Internal ellipses output character
EOF=	32			; END OF FILE
ESC=	33			; ESCAPE CHARACTER
ULCHS=	34			; UNDERLINE CHARACTER IN INTERNAL STORAGE
CPER=	35			; Marks period char.
SPC=	40			; SPACE
PD=	'.			; PERIOD. FOR SPECIAL SPACING AFTER PERIOD
CMA=	',			; COMMA
LPUS=	'_			; LINE-PRINTER UNDERSCORE IN OUTPUT FILE
SEMI=	';			; SEMICOLON
colon=	':
BAR=	'|			; BAR FOR CHANGE BAR
dolar=	'$
excl=	'!
undsc=	'_
zero=	'0
A=	'A
plus=	'+
minus=	'-
bra=	'<
ket=	'>
equal=	'=
starr=	'*
ampers=	'&
pound=	'#
perct=	'%
sbra=	'[
sket=	']
lparen=	'(
rparen=	')
lbrace=	'{
rbrace=	'}
percnt=	'%
apostr=	''
quotes=	'"
circum=	'^
slash=	'/
bcksl=	'\
NXS=	177			; NON-EXPANDABLE	SPACE (INTERNAL)
;
; MACRO DEFINITIONS
;
; BIT TEST EQUAL AND BRANCH
;
	.MACRO	BITEQ ARG1,ARG2,BDST
	BIT	ARG1,ARG2
	BEQ	BDST
	.ENDM
;
; BIT TEST NOT EQUAL AND BRANCH
;
	.MACRO	BITNE ARG1,ARG2,BDST
	BIT	ARG1,ARG2
	BNE	BDST
	.ENDM
;
; BIT TEST EQUAL BYTE AND BRANCH
;
	.MACRO	BITEQB ARG1,ARG2,BDST
	BITB	ARG1,ARG2
	BEQ	BDST
	.ENDM
;
; BIT TEST NOT EQUAL BYTE AND BRANCH
;
	.MACRO	BITNEB ARG1,ARG2,BDST
	BITB	ARG1,ARG2
	BNE	BDST
	.ENDM
;
; COMPARE EQUAL AND BRANCH
;
	.MACRO	CMPEQ ARG1,ARG2,BDST
	CMP	ARG1,ARG2
	BEQ	BDST
	.ENDM
;
; COMPARE NOT EQUAL AND BRANCH
;
	.MACRO	CMPNE ARG1,ARG2,BDST
	CMP	ARG1,ARG2
	BNE	BDST
	.ENDM
;
; COMPARE EQUAL BYTE AND BRANCH
;
	.MACRO	CMPEQB ARG1,ARG2,BDST
	CMPB	ARG1,ARG2
	BEQ	BDST
	.ENDM
;
; COMPARE NOT EQUAL BYTE AND BRANCH
;
	.MACRO	CMPNEB ARG1,ARG2,BDST
	CMPB	ARG1,ARG2
	BNE	BDST
	.ENDM
;
; TEST EQUAL AND BRANCH
;
	.MACRO	TSTEQ ARG1,BDST
	TST	ARG1
	BEQ	BDST
	.ENDM
;
; TEST NOT EQUAL AND BRANCH
;
	.MACRO	TSTNE ARG1,BDST
	TST	ARG1
	BNE	BDST
	.ENDM
;
; TEST EQUAL BYTE AND BRANCH
;
	.MACRO	TSTEQB ARG1,BDST
	TSTB	ARG1
	BEQ	BDST
	.ENDM
;
; TEST NOT EQUAL BYTE AND BRANCH
;
	.MACRO	TSTNEB ARG1,BDST
	TSTB	ARG1
	BNE	BDST
	.ENDM
;
;	General storage
;
	.macro	.WORDA	ARG1
	.word	ARG1
	.endm
	.macro	.BLKA	ARG1
	.blkw	ARG1
	.endm
	.macro	INDXA	ARG1	; Convert number to address
	ASL	ARG1
	.endm
;
;	SOB macro
;
	.ifdf	$SOB
	.macro	SOB ARG1,ARG2
	DEC	ARG1
	BGT	ARG2
	.endc
;
;	ASH macro definition
;
	.ifndf	$EIS
	.macro	ASH	ARG1,ARG2
	MOV	R0,-(SP)
	MOV	ARG1,R0		; Get count
10$:	BEQ	30$		; Done ?
	BLT	20$
	ASL	ARG2
	DEC	R0
	BR	10$
20$:	ASR	ARG2
	INC	R0
	BR	10$
30$:	MOV	(SP)+,R0
	TST	ARG2
	.endm
	.endc
;
;	Define multipy
;
	.macro	MUL$	ARG1,ARG2
	MOV	ARG1,-(SP)
	MOV	ARG2,R0
	MUL	(SP)+,R0	; Result in R0+R1
	.endm
;
; Define unsigned divide macro
;	R0 = ARG2/ARG1	R1 = remainder
;
	.MACRO	DIV$,ARG1,ARG2
	MOV	ARG1,-(SP)	; Save first arg
	.ifdf	$EIS
	MOV	ARG2,R1		; Dividend
	CLR	R0
	DIV	(SP)+,R0
	.iff
	MOV	ARG2,R0
	MOV	(SP)+,R1
	CALL	$DIV
	.endc
	.endm
;
;	VMS macro def
;
	.macro	.entry	ARG1,ARG2
ARG1==.
	.endm
;
;	Define psects
;
	.macro	.code
	.psect	$code,RO,LCL,con,I
	.endm
	.macro	.vars
	.psect	$vars,RW,LCL,con,D
	.endm
	.macro	.const
	.psect	$const,RO,LCL,con,D
	.endm
	.macro	.strng
	.psect	string,ro,gbl,ovr,d
	.endm
	.macro	.dspch
	.psect	dsptch,ro,gbl,ovr,d
	.endm
	.macro	.text
	.psect	text,ro,LCL,con,d
	.endm
	.LIST
