.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 ; FASTX =0 ; add (;) to remove index optimization ; ; 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 $WORD2=2 ; Number of byes/ G/PWRD ; ; 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 SW.NEG=100000 ; Define negative switch ; ; ; ; 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.EQN=10 ; Equation to invert 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 plus= '+ minus= '- bra= '< ket= '> equal= '= starr= '* ampers= '& pound= '# perct= '% sbra= '[ sket= '] lparen= '( rparen= ') lbrace= '{ rbrace= '} percnt= '% apostr= '' quotes= '" circum= '^ slash= '/ bcksl= '\ a= ^o101 b= ^o102 c= ^o103 d= ^o104 e= ^o105 f= ^o106 g= ^o107 h= ^o110 i= ^o111 j= ^o112 k= ^o113 l= ^o114 m= ^o115 n= ^o116 o= ^o117 p= ^o120 q= ^o121 r= ^o122 s= ^o123 t= ^o124 u= ^o125 v= ^o126 w= ^o127 x= ^o130 y= ^o131 z= ^o132 NXS= ^o177 ; 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 .macro RAD arg1,arg2,arg3 .word <*^o50*^o50>+<*^o50>+ .endm .LIST