.TITLE DATA .IDENT /S1.4/ ;Derived from DECUS version M02 ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* * ;* General permission to copy (but not for profit) is hereby * ;* granted, provided that reference is made to the fact that * ;* reproduction privileges were granted by DECUS. * ;* * ;* The information in this document is subject to change with- * ;* out notice and should not be construed as a commitment by * ;* the contributor(s), DECUS or Digital Equipment Corporation. * ;* * ;* These parties make no warranty as to the suitability of this * ;* material for use by the recipient, nor as to the accuracy or * ;* functioning of the software or related material, and no * ;* responsibility is assumed in connection therewith. * ;* * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; RUNOFF GLOBAL SYMBOLS AND DATA BUFFERS (FORMERLY CONTAINED IN RUNOFF.MAC) ; ; AUTHOR: C. H. Spalding ; ; MODIFIED BY ; ; C. H. Spalding, Adept Technology, Apr. '83 ; ; MODIFICATIONS ; ; chs03 Reduce blank lines from CHAPTER, APPENDIX, & INDEX ; chs04 Add ALTERNATING HEADER ; chs05 Make page size settings available to task build ; chs07 Double space after ; chs14 Add ALTERNATING TITLE ; chs16 Use local symbols for constants ; chs19 Add AUTOSUBTITLE ; chs20 Add optional-text commands ; chs27 Misc. changes to LIST commands ; chs35 Misc. changes to tab processing ; chs37 Fix FIGURE to work as claimed; added queue ; chs38 Don't output blank page at end of output ; chs39 Add PAGE FORMAT and related switches ; chs40 Expand HEADER ; chs43 Add QUOTE CHARACTER ; chs44 Add "!" comment command and flag ; chs45 Add optional-text command-line switches ; chs46 Change ALTERNATING HEADER to ALTERNATE ; chs49 Allow multiple input files & appending to output ; chs50 Have task extend itself when index/footnote buffer full ; chs51 Add ENTRY & subindexing ; chs52 Correct spacing of underlined index entries ; chs54a Footnote processing reworked ; chs54b Add FOOTNOTE LINE ; chs55 Fix duplicate output of blank lines in autoparagraph mode ; chs56 Add PAGE NAME ; chs57 Changes to NOTE ; chs58 Add tests for unreasonable command parameters ; chs59 Add limit on chapters output ; chs61 Changes to LITERAL processing ; chs63 Control blank lines after END LIST & END NOTE ; chs64 Define underbar character as symbol ; chs68 Store appendix letter in byte ; chs70 Add TEST LINES ; chs72 Make sure empty output file not left around ; chs73 Provide for unnumbered lists ; chs74 Allow relative/default header level argument ; chs77 Fix FIRST TITLE ; chs78 Added BLOCK ; footnote processing revamped ; chs81 Add /ID command line switch ; chs82 Add Table of Contents ; chs83 Add AUTOCONTENTS ; chs84 Add exit status ; chs88 Add ENABLE and DISABLE ; chs89 Cleaned up file I/O to save space ; chs91 Add LEVEL STYLE ; chs92 Limit hyphenation of consecutive lines ; chs96 Prevent cummulative output of blank lines ; chs98 Add argument to HYPHENATION ; chs99 Add REQUIRE ; MACRO LIBRARY CALLS .IIF NZ MULTIN, .MCALL CSI$ ;chs49 ; SIMULATED ACCUMULATOR DEFINITIONS F.1:: .WORD 0 ;FLAG WORD S1:: .WORD 0 ;PSEUDO REGISTER ; FLAG BITS IN F.1 ; ; 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 RELF==4 ;RELATIVE NUMBER CONVERSION (1=YES) TXTF==10 ;COMMAND TAKES TEXT ARGUMENT (USED BY "OPTION") ;chs20 FPGF==20 ;FLUSH PENDING PAGE (1=YES) ENDF==40 ;CORRESPONDS TO END FLAG IN TRAILING BYTE BRKF==100 ;CORRESPONDS TO BREAK FLAG IN TRAILING BYTE JUSTF==400 ;JUSTIFY TEXT PJUSTF==1000 FILLF==2000 ;FILL TEXT LITFG==4000 ;LITERAL PROCESSING FLAG SPECF==20000 ;SPECIAL COMMAND PROCESSING .IIF NZ BLKCMD, BLKF==40000 ;BLOCK BEING PROCESSED ;chs78a ; SWITCH WORD FLAG BIT DEFINITIONS 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) .IIF NZ ALTHDR, ALHSW==40 ;ALTERNATING PAGE HEADERS (1=YES) ;chs04 .IIF NZ APNDSW, APNSW==100 ;APPEND TO OUTPUT FILE (1 = YES) ;chs49a .IF NZ PFSW ;chs39a+ DWNSW==200 ;TOP MARGIN SWITCH (1 = PRESENT) LNGSW==400 ;PAGE LENGTH SWITCH (1 = PRESENT) LFTSW==1000 ;BASE LEFT MARGIN SWITCH (1 = PRESENT) WIDSW==2000 ;PERM. RIGHT MARGIN SW. (1 = PRESENT) .ENDC ; NZ PFSW ;chs39a- .IIF NZ XHDRSW, HLNSW==4000 ;HEADER LENGTH SWITCH (1 = PRESENT) ;chs40a .IIF NZ OPTXSW, OPTSW==10000 ;OPTIONAL-TEXT SWITCHES (1=PRESENT) ;chs45 .IIF NZ SAVPS, PSZSW==20000 ;PAGE-SIZE SWITCH (1 = PRESENT) ;chs49b .IIF NZ IDSWCH, IDSW ==40000 ;VERSION IDENTIY REQUEST (1 = PRESENT) ;chs81 ; SWITCH FLAGS (BYTE) .IIF NZ FIRTIT, $HDSSW::.BYTE 0 ;DISABLE PAGE HEADER (0=NO) ;chs77 $GCISW::.BLKB 1 ;INPUT FROM REREAD BUFFER (0=NO) $SDISW::.BLKB 1 ;INPUT FROM SECONDARY INPUT BUFFER (0=NO) .IIF NZ TBLCON, $CBISW::.BLKB 1 ;INPUT FROM COMMAND BUFFER (0 = NO) ;chs82 $ULMSW::.BLKB 1 ;UNDERLINE MODE (0=NO BACKSPACE) $ULNSW::.BLKB 1 ;UNDERLINE SUPPRESS (0=NO) $ULSSW::.BLKB 1 ;UNDERLINE SIMULATE (0=NO) .IIF NZ SUBIDX, QTFLG:: .BLKB 1 ;QUOTED CHARACTER ;chs51b .IIF NZ DELOF, DELFLG::.BYTE 0 ;FLAG FOR FILE DELETION ;chs72 .IIF NZ ENADIS, $BLKSW::.BLKB 1 ;BLOCK OUTPUT ENABLED (0 = NO) ;chs88 .IIF NZ ENAOUT, $OUTSW::.BLKB 1 ;OUTPUT ENABLED (0 = NO) ;chs88b .IIF NZ ENAIDX, $IDXSW::.BLKB 1 ;INDEXING ENABLED (0 = NO) ;chs88c .IIF NZ ENATOC, $TOCSW::.BLKB 1 ;CONTENTS ENABLED (0 = NO) ;chs88d .IIF NZ ENASPE, $SPESW::.BLKB 1 ;SPEC. CHARS ENABLED (0 = NO) ;chs88e .IIF NZ ENARUN, $RUNSW::.BLKB 1 ;RUNNING PAGE NOS. ENABLED (1 = NO) ;chs88f .IIF NZ HYPARG, HYPALG::.BLKB 1 ;USE HYPHENATION ALGORTHM (0 = NO) ;chs98 .EVEN ; SWITCH FLAGS (WORD) $AUTSW::.BLKW 1 ;AUTOPARAGRAPH ACTIVE (0=NO) $CFLSW::.BLKW 1 ;FLAG CAPITALIZE ENABLE (0=NO) $HDRSW::.BLKW 1 ;PRINT PAGE HEADERS (0=NO) $HFLSW::.BLKW 1 ;FLAG HYPHENATE ENABLE (0=NO) $HPHSW::.BLKW 1 ;HYPHENATION ACTIVE (0=NO) $NUMSW::.BLKW 1 ;NUMBER PAGES (0=NO) $PGPSW::.BLKW 1 ;PAGE PENDING (0=NO) $PERSW::.BLKW 1 ;PUNCTUATION DOUBLE SPACING (0=NO) $SBPSW::.BLKW 1 ;SUBPAGE MODE ACTIVE (0=NO) $ULLSW::.BLKW 1 ;UNDERLINE LOCK ON (0=NO) .IIF NZ ALTHDR, $ALHSW::.BLKW 1 ;ALTERNATING HEADER ENABLED (0=NO) ;chs04 .IIF NZ ALTTIT, $ALTSW::.BLKW 1 ;ALTERNATING TITLE ENABLED (0=NO) ;chs14 .IIF Z LSTPG, $EOJSW::.BLKW 1 ;FLAG FOR END OF JOB ;chs38 .IIF NZ SUBIDX, $SFLSW::.BLKW 1 ;SUBINDEX FLAG ENABLED (0=NO) ;chs51b ; IMPURE STORAGE .IIF NZ PRMCHK+LITMRG, MAXMRG==132. ;MAX. RT. MARGIN ACCEPTABLE ;chs58 RMARG:: .WORD 0 ;TEXT RIGHT MARGIN (REL. TO "BASMRG") LMARG:: .WORD 0 ;TEXT LEFT MARGIN (REL. TO "BASMRG") ; (ABOVE 2 LINES MUST BE IN GIVEN ORDER!) PRMRG:: .BLKW 1 ;PERMANENT RIGHT MARGIN .IF NZ PFCMD ;chs39+ BASMRG::.BLKW 1 ;BASE LEFT MARGIN .IIF NZ ALTSHF, PBMRG::.BLKW 1 ;PERMANENT BASE LEFT MARGIN ;chs46 TOPMRG::.BLKW 1 ;BLANK LINES AT TOP OF PAGE .ENDC ; NZ PFCMD ;chs39- .IF NZ EXTHDR ;chs40+ HDRLEN::.BLKW 1 ;# LINES IN PAGE HEADER HLMARG::.BLKW 1 ;HEADER LEFT MARGIN (REL. TO "BASMRG") HRMARG::.BLKW 1 ;HEADER RIGHT MARGIN (REL. TO "BASMRG") .ENDC ; NZ EXTHDR ;chs40- .IF NZ OPTXSW ;chs45+ INCL1:: .BLKW 1 ;BUFFERS FOR COMMAND-LINE INCL2:: .BLKW 1 ; "INCLUDE" SELECTIONS INCL3:: .BLKW 1 INCL4:: .BLKW 1 INCL5:: .BLKW 1 .WORD 0 ;END MARK EXCL1:: .BLKW 1 ;BUFFERS FOR COMMAND-LINE EXCL2:: .BLKW 1 ; "EXCLUDE" SELECTIONS EXCL3:: .BLKW 1 EXCL4:: .BLKW 1 EXCL5:: .BLKW 1 .WORD 0 ;END MARK NOPVAL ==<.-INCL1>/2 ;NUMBER OF WORDS HERE .ENDC ; NZ OPTXSW ;chs45- ULSWT:: .BLKB 2 ;BUFFER FOR UNDERLINE SWITCH .IIF NZ ALTSHF, ASHIFT::.BLKW 1 ;OFFSET FOR ALTERNATE PAGES ;chs46 CAS:: .WORD 0 WCAS:: .BLKW 1 ;WORD CAPITALIZE CONVERSION VALUE CMADR:: .BLKW 1 ;SPECIAL PROCESSING COMMAND ADDRESS ACTCMD::.BLKW 1 ;ADDRESS OF CURRENT COMMAND CODE ;chs PAGENO::.WORD 0 ;PAGE NUMBER .IF Z BLFIX ;chs96 .IIF NZ AUTFIX, AUTFLG::.BLKW 1 ;BLANK-LINE FLAG FOR AUTOPARAGRAPH ;chs55a .ENDC ; Z BLFIX ;chs96 PARPT:: .BLKW 1 ;PARAGRAPH PAGE TEST COUNT PARSP:: .BLKW 1 ;PARAGRAPH SPACING COUNT PARIND::.WORD 0 ;PARAGRAPH INDENTATION NSPNG:: .WORD 0 ;LINE SPACING LINEC:: .WORD 0 ;LINE COUNT AS PAGE COMPOSED SUBPGE::.WORD 0 ;SUBPAGE NUMBER .IIF NZ BLFIX, SKPCNT::.BLKW 1 ;BUFFER FOR BLANK LINES DONE ;chs96 LITCM:: .BLKW 1 ;SAVED EXPECTED COMMAND ADDRESS (LITERAL) LITSV:: .BLKW 1 ;SAVED FLAGS MASK ON LITERAL PROCESSING .IIF NZ LITSPC, LITSP:: .BLKW 1 ;SAVED LINE SPACING ON LIT. PROC. ;chs61a .IIF NZ LITMRG, LITRM:: .BLKW 1 ;SAVED RIGHT MARGIN ON LIT. PROC. ;chs61b LSTPT:: .BLKW 1 ;LIST ELEMENT PAGE TEST COUNT LSTVS:: .BLKW 1 ;LIST ELEMENT VERTICAL SPACING LSTKP:: .BLKW 1 ;CURRENT LIST STACK POINTER MAXLST==5 ;MAX. NUMBER OF NESTED LISTS ;chs16 .IF NZ LISTCH ;chs73+ LSTKN ==5 ;NO. WORDS IN STACK PER NESTED LIST LSTCH:: .BLKW 1 ;SPECIAL CHARACTER FOR UNNUMBERED LIST .IFF LSTKN ==4 ;NO. WORDS IN STACK PER NESTED LIST ;chs27a .ENDC ; -NZ LISTCH ;chs73- LSTK:: .BLKW MAXLST*LSTKN ;LIST STACK ;chs27a LSTCT:: .BLKW 1 ;CURRENT LIST ELEMENT COUNT NOTCM:: .BLKW 1 ;SAVED EXPECTED COMMAND ADDRESS (NOTE) NOTLM:: .BLKW 1 ;NOTE SAVED LEFT MARGIN NOTRM:: .BLKW 1 ;NOTE SAVED RIGHT MARGIN NOTSV:: .BLKW 1 ;SAVED FLAG WORD ON NOTE PROCESSING ; Stack for saving file pointers for REQUIRE ;chs99+ .IF NZ REQCMD REQSP:: .BLKW 1 ;STACK POINTER REQSTK::.BLKW 8.*REQCMD ;STACK FOR FILE CONTEXT DATA ; (8 WORDS PER LEVEL OF NESTING) REQEND==.-2 ;POINTER TO LAST WORD IN STACK .ENDC ; NZ REQCMD ;chs99- ; Data for chapters and header levels MAXHL==5 ;MAX # HEADER LEVELS ;chs16 .IIF NZ ATOHDR+HLSTYL, HDRLVL::.BLKW 1 ;TEMP. BUFFER FOR LEVEL ;chs91 ;(ABOVE MUST BE WORD) ;chs83 .IF NZ HLSTYL ; *** START CRITICAL ORDER ;chs91+ HLDEF2==3 ;DEFAULT LEVEL TO START HEADER STYLE 2 HLTYP2::.BLKW 1 ;BUFFER FOR LEVEL TO CHANGE STYLE HLDFS1==3 ;DEFAULT LINES TO SKIP BEFORE HEADER HLSKP1::.BLKB MAXHL ;BUFFERS FOR NO. BLANK LINES HLDFTP==5 ;DEFAULT TEST PAGE BEFORE HEADER HLTEST::.BLKB MAXHL ;BUFFERS FOR TEST PAGE VALUES .IF NZ HLSTY2 ;chs91a+ HLDFS2==1 ;DEFAULT LINES TO SKIP AFTER HEADER HLSKP2::.BLKB MAXHL ;BUFFERS FOR NO. BLANK LINES .ENDC ; NZ HLSTY2 ;chs91a- .ENDC ; NZ HLSTYL ; *** END CRITICAL ORDER ;chs91- .IF NZ TBLCON ;chs82+ TOCBLK==3 ;NUMBER BLANK LINES AFTER HEADING TOCIND::.BLKB MAXHL+1 ;BUFFERS FOR TOC LEVEL INDENTS TFLAG:: .BLKB 1 ;TEMP. FLAG FOR BLANK LINE CONTROL .ENDC ; NZ TBLCON ;chs82- .IF NZ ATOSUB ;chs19+ DEFAST==1 ;DEF. MAX HDR LVL FOR AUTOSUBTITLE INIAST==0 ;INITIAL AUTOSUBTITLE SETTING (DISABLE) ASTLVL::.BLKB 1 ;MAXIMUM HEADER LEVEL FOR A.S. .ENDC ; NZ ATOSUB ;chs19- .IF NZ ATOTOC ;chs83+ DEFATC==MAXHL ;DEF. MAX HDR LEVEL FOR AUTOCONTENTS INIATC==MAXHL ;INITIAL AUTOCONTENTS SETTING (ALL) ATCLVL::.BLKB 1 ;MAXIMUM HEADER LEVEL FOR A.T. .ENDC ; NZ ATOTOC ;chs83- ; *** START OF CRITICAL ORDER ;chs68 APNDN:: .BLKB 1 ;CURRENT APPENDIX LETTER ;chs68 CHPTN:: .BLKB 1 ;CURRENT CHAPTER NUMBER .BLKB MAXHL ;CURRENT HEADING LEVEL NUMBERS ;chs16 .IIF NZ RELHDL, LASTHL:: .BYTE 1 ;LAST HEADER LEVEL ARGUMENT ;chs74 ; *** END OF CRITICAL ORDER ;chs68 .IF NZ OPTTXT ;chs20+ OPTBL:: ;TABLE OF OPTION SWITCHES OPTACT::.BLKB 1 ;BUFFER FOR CURRENT ACTIVE OPTION .BLKB OPTTXT ;TABLE OF OPTION FLAGS .ENDC ; NZ OPTTXT ;chs20- .IIF NZ FIGFIX, FIGTAB::.BLKB FIGFIX ;BUFFER FOR REQUEST QUEUE ;chs37 .IIF NZ QTCHAR, QTCHR:: .BLKB 1 ;ACTIVE QUOTE CHARACTER ;chs43 .IIF NZ TXLTST, TXTLEN:: .BLKB 1 ;NUMBER OF TEXT LINES ON A PAGE ;chs78e ; TABLE OF TAB-STOP DATA (BE CAREFUL OF ORDER! SEE USAGE AT "SAVSTA" ;chs87a ; & "GETSTA" IN RUNOFF.MAC) ;chs87a .EVEN ;MUST START ON EVEN WORD! ;chs87a TABTL==32. ;MAX. NUMBER TAB STOPS (EVEN NUMBER!) ;chs87a .BYTE -1 ;DUMMY TAB STOP FOR ERROR CHECK ;chs35b TABTAB::.BLKB TABTL ;TABLE OF TAB STOP POSITIONS NTABS:: .BLKB 1 ;NUMBER OF TABS SET ;chs35 .EVEN ;chs NLPG:: .WORD 0 ;NUMBER OF LINES PER PAGE (TEMP) PNLPG:: .WORD 0 ;NUMBER OF LINES PER PAGE .IIF Z NEWFTN, FOOTC:: .WORD 0 ;TEMP. COUNT OF FOOTNOTE LINES ;chs54a FOOTP1::.WORD 0 ;POINTER TO START OF FOOTNOTE TEXT FOOTP2::.WORD 0 ;POINTER TO END OF FOOTNOTE TEXT XBOT:: .BLKW 1 ;BEGINNING OF ALLOCATED INDEX AREA FOOTP3::.WORD 0 ;PERM. PTR TO START OF FOOTNOTE BUFFER XTOP:: .BLKW 1 ;HIGHEST VIRTUAL ADDRESS IN PROGRAM XFIRST::.WORD 0 .IF NZ TBLCON ;chs82+ ; *** FOLLOWING MUST FOLLOW "XFIRST" *** TOC1ST:: ;POINTERS TO STARTS OF TOC LISTS .REPT TBLCON .WORD 0 ;(RESET TO 0 WHEN TABLE OUTPUT) .ENDR TOCPAG::.BLKW 1 ;BUFFER FOR MAX. LENGTH OF PAGE REF. .ENDC ; NZ TBLCON ;chs82- .IF NZ TXTQUE ;chs78+ QSTART==FOOTP3 ;POINTER TO START OF QUEUE BUFFER QEND:: .BLKW 1 ;POINTER TO NEXT AVAILABLE RECORD QTEMP:: .BLKW 1 ;TEMP POINTER DURING QUEUE PROCESSING QSAVE:: .BLKW 1 ;SAVE SP DURING QUEUE PROCESSING .IF NZ BLKCMD ;chs78a+ BLKWHT::.BLKW 1 ;NUMBER OF LINES TO SKIP AROUND BLOCK .IF NZ BLKSTK ;chs78f+ BLKINI==2 ;INITIAL NO. LINES TO SET OFF BLOCK BLKDFT::.WORD BLKINI ;DEFAULT NO. LINES TO SET OFF BLOCK FIGINI==0 ;INITIAL NO. LINES TO SET OFF FIGURE ;chs78b FIGDFT::.WORD FIGINI ;DEFAULT NO. LINES TO SET OFF FIGURE ;chs78b .IFF ;chs78f- BLKDFT==2 ;DEFAULT NO. LINES TO SET OFF BLOCK FIGDFT==0 ;DEFAULT NO. LINES TO SET OFF FIGURE ;chs78b .ENDC ; -NZ BLKSTK ;chs78f ; *** START OF AREA CLEARED AT INITIALIZATION BLKCNT::.BLKB 1 ;NUMBER OF QUEUED BLOCKS .IIF NZ BLKALT, BLKALW::.BLKB 1 ;ALTERNATE WHITE SPACE ;chs78g BLKACT::.BLKB 1 ;FLAG TO SIGNAL BLOCK PROCESSING BLKNEW::.BLKB 1 ;FLAG TO SIGNAL PROCESSING NEW BLOCK BLKALL::.BLKB 1 ;FLAG TO SIGNAL DUMPING BLOCKS FIGCMD::.BYTE 0 ;FLAG TO SIGNAL FIGURE COMMAND .IFTF ;chs78a- FTNCNT::.BLKB 1 ;NUMBER OF QUEUED FOOTNOTES .IFT ;chs78a+ BLKBTS==.-BLKCNT ;NUMBER OF BYTES NEED TO CLEAR AT INIT .ENDC ; NZ BLKCMD ;chs78a- .ENDC ; NZ TXTQUE ;chs78- ; *** END OF AREA CLEARED AT INITIALIZATION .IF NZ AUTOFN ;chs54b+ IFNLEN==15. ;DEFAULT LINE LENGTH IFNCHR=='_ ;DEFAULT CHARACTER FOR LINE FTNLEN::.BLKB 1 ;LENGTH OF FOOTNOTE LINE FTNCHR::.BLKB 1 ;CHARACTER FOR FOOTNOTE LINE .ENDC ; NZ AUTOFN ;chs54b- .IF NZ EXITST ;chs84+ EXSTAT::.BYTE 0 ;INTERNAL EXIT STATUS VALUE ; 0 = SUCCESS ; 1 = WARNING ; 2 = ERROR ; 4 = SEVERE ERROR .ENDC ; NZ EXITST ;chs84- .IF NZ HYLINS ;chs92+ HYCNT:: .BLKB 1 ;NO. CONSECUTIVE LINES HYPHENATED .ENDC ; NZ HYLINS ;chs92- .IF NZ MULTIN ;chs49+ LOOP:: .BLKB 1 ;FLAG FOR MULTIPLE INPUT FILES INPUTN::.BLKB 1 ;INPUT FILE COUNTER CSI$ ;DEFINE CSI CONTROL BLOCK OFFSETS .EVEN CSIBLK::.BLKB C.SIZE ;DATA BLOCK FOR COMMAND PARSER LIMIT:: .LIMIT .ENDC ; NZ MULTIN ;chs49- ; USER-SET TEMPS INDCT:: .WORD 0 ; Following buffer lengths also defined in RNORSX.MAC! ;chs89+ TTLIN ==80. ;MAX. LENGTH OF TTY OUTPUT LINE TTILIN ==82. ;LENGTH OF COMMAND LINE + 2 INBUFL ==162. ;MAX. LENGTH OF INPUT RECORD + 2 OUBUFL ==256. ;MAX. LENGTH OF OUTPUT RECORD TTBUF:: .BLKB TTLIN ;TERMINAL OUTPUT BUFFER TTIBUF::.BLKB TTILIN ;COMMAND LINE BUFFER .EVEN HFIN:: .WORD ,0,0 ;POINTERS FOR INPUT BUFFER INBUF:: .BLKB INBUFL ;INPUT RECORD BUFFER .EVEN HFOUT:: .WORD OUBUFL,0,0 ;POINTERS FOR OUTPUT BUFFER OUBUF:: .BLKB OUBUFL ;OUTPUT RECORD BUFFER ;chs89- .EVEN ; GENERAL T1:: .WORD 0 ;TEMPORARY STRING POINTERS T2:: .WORD 0 LCH:: .WORD 0 ;LAST (PREVIOUS) CHARACTER .IIF NZ PDPAR, NLCH:: .WORD 0 ;NEXT TO LAST CHARACTER ;chs07 NCNT:: .WORD 0 LOWPAG::.WORD 0 ;LOWEST PAGE TO PRINT HGHPAG::.WORD 0 ;HIGHEST PAGE TO PRINT .IF NZ CHSW ;chs59+ LOCHAP::.WORD 0 ;LOWEST CHAPTER TO OUTPUT HICHAP::.WORD 0 ;HIGHEST CHAPTER TO OUTPUT .ENDC ; NZ CHSW ;chs59- ; *** FOLLOWING MUST BE WORD ALIGNED PAGHD:: .BLKB 6 ;PAGE NUMBER TEXT PROTOTYPE .EVEN LPPG:: .BLKW 1 ;HARDWARE LINES PER PAGE .IIF NZ BLSW, CHPSKP::.WORD ICHBL$ ;INITIAL VALUE FOR EXTRA BLANK ;chs03 ; LINES FOR CHAPTER HEADERS ;chs03 ; LINE TEMPS LINBK:: .WORD 0 SPCNT:: .WORD 0 LSTSP:: .WORD 0 LINNSC::.WORD 0 LNIN1:: .WORD LINBF-1 LNIN2:: .WORD LINBF-1 .WORD LINBF+160. LOUT1:: .WORD 0 LOUT2:: .WORD 0 LINBF:: .WORD 0 .BLKB 162. .EVEN GCINP:: .WORD 0 GCIN2:: .WORD 0 GCSCH:: .BLKB 1 ;SAVED CHARACTER FOR REPROCESSING ULMCH:: .BLKB 1 ;SAVED CHARACTER FOR UNDERLINING .EVEN SDINP:: .WORD SDBUF-1 ;SECONDARY INPUT LINE DESCRIPTOR .WORD SDBUF-1 ; .WORD SDBUF+132. ;SECONDARY INPUT BUFFER GUARD WORD SDBUF:: .BLKB 134. ;SECONDARY INPUT BUFFER .EVEN CMSTP:: .WORD CMBF-1 ;COMMAND BUFFER POINTERS CMST2:: .WORD CMBF-1 .WORD CMBF+132. ;COMMAND BUFFER GUARD WORD CMBF:: .BLKB 134. ;COMMAND BUFFER .EVEN FOOTS1::.WORD FOOTWB-1 ;BUFFER TO HOLD LINE OVERFLOW FOOTS2::.WORD FOOTWB-1 ; WHILE FOOTNOTE PROCESSED .WORD FOOTWB+80. ;chs FOOTWB::.BLKB 82. ;chs .EVEN TTLLEN =80. ;MAXIMUM TITLE LENGTH ;chs56 TTLP1:: .WORD TTLBUF-1 ;POINTER TO START OF TITLE TTLP2:: .WORD TTLBUF-1 ;POINTER TO END OF TITLE .WORD TTLBUF+TTLLEN ;chs56 TTLBUF::.BLKB TTLLEN+2 ;BUFFER FOR TITLE ;chs56 .EVEN STTLLN =80. ;MAXIMUM SUBTITLE LENGTH ;chs56 STTLP1::.WORD STTLBF-1 ;POINTER TO START OF SUBTITLE STTLP2::.WORD STTLBF-1 ;POINTER TO END OF SUBTITLE .WORD STTLBF+STTLLN ;chs56 STTLBF::.BLKB STTLLN+2 ;BUFFER FOR SUBTITLE ;chs56 .EVEN .IF NZ PAGNAM ;chs56+ PGNMLN =40. ;MAXIMUM PAGE NAME LENGTH PGNMP1::.WORD PGNMBF-1 ;POINTER TO START OF PAGE NAME PGNMP2::.WORD PGNMBF-1 ;POINTER TO END OF PAGE NAME .WORD PGNMBF+PGNMLN ;GUARD WORD FOR PAGE NAME BUFFER PGNMBF::.BLKB PGNMLN+2 ;BUFFER FOR PAGE NAME .EVEN .ENDC ; NZ PAGNAM ;chs56- EXSP1:: .WORD 0 EXSP2:: .WORD 0 EXSP3:: .WORD 0 NSPCH:: .WORD 0 ;COUNT OF NON-SPACING CHARS. ON LINE XNSPCH::.BLKW 1 ;COUNT OF 'S IN INDEX ENTRY ;chs52 LSTNSP::.WORD 0 ULPOS:: .WORD 0 CPOS:: .WORD 0 ;COUNT OF CHARS. CURRENTLY ON LINE ULPBF:: .BLKB 132. .EVEN ; PARAMETERS .IIF NZ EXTEND, INCR ==16. ;# 32.-WORD BLOCKS TO EXTEND TASK ;chs50 ILSTTP==1 ;INITIAL LIST ELEMENT PAGE-TEST COUNT ;chs27d ILSTVS==1 ;INITIAL LIST ELEMENT VERTICAL SPACING IPARIN==5 ;INITIAL PARAGRAPH INDENT IPARTP==2 ;INITIAL PARAGRAPH PAGE TEST IPARVS==1 ;INITIAL PARAGRAPH VERTICAL SPACING ILMRG==0 ;INITIAL LEFT MARGIN LOLMAR==9. ;INITIAL LEFT MARGIN INDENT ON LISTS LSLMAR==4 ;LEFT MARGIN INDENT ON EMBEDDED LISTS LFSPAC==1 ;DEF FINAL VERT SPACING AFTER LIST ;chs63 NASPAC==1 ;VERTICAL SPACING AFTER "NOTE" HEADING NFSPAC==2 ;DEF FINAL VERT SPACING AFTER NOTES ;chs63 NHSPAC==2 ;INITIAL VERTICAL SPACING BEFORE NOTES .IF NZ NOTETP ;chs57b+ NTESTP==6. ;PAGE TEST COUNT FOR "NOTE" .IFF ;chs57b- NTESTP==8. ;PAGE TEST COUNT FOR "NOTE" ;chs16 .ENDC ; -NZ NOTETP ;chs57b .IF NZ NOTEMR ;chs57a+ NPMARG==5. ;MARGIN CHANGE ON NOTES .IFF ;chs57a- NPMARG==15. ;PRIMARY MARGIN CHANGE ON NOTES NSMARG==5 ;SECONDARY MARGIN CHANGE ON NOTES .ENDC ; -NZ NOTEMR ;chs57a SPCNG==1 ;STANDARD LINE SPACING CHBL2==1 ;# BLANK LINES AFTER "CHAPTER N" ;chs16+ CHBL3==3 ;# BLANK LINES AFTER CHAPTER TITLE HLBL1==3 ;# BLANK LINES PRECEEDING HEADER LEVEL HLBL2==1 ;# BLANK LINES AFTER HEADER LEVEL MXSPC==5 ;MAXIMUM "SPACING" VALUE ALLOWED INDXBL==3 ;# BLANK LINES AFTER "INDEX" ;chs16- .IIF NZ XSPNG, XGRPSP==2 ;DEFAULT GROUP SPACING IN INDEX ;chs41 .IIF NZ SUBIDX, XINDNT==2 ;DEFAULT INDENT FOR SUBINDEXING ;chs51b ; Following parameters have their values set during task build ;chs+ ;HWLPP$==66. ;INITIAL HARDWARE LINES PER PAGE ;INI$SW==HYPSW ;INITIAL VALUE FOR $SWTCH ;IUL=='N ;INITIAL UNDERLINE MODE ;INLPG$==56. ;INITIAL LENGTH OF PAGE ;chs05 ;IRMRG$==60. ;INITIAL RIGHT MARGIN ;chs05 ; .IF NZ PFCMD ;chs39+ ;ITMRG$==0 ;INITIAL BLANK LINES AT TOP OF PAGE ;IBMRG$==0 ;INITIAL BASE LEFT MARGIN ; .ENDC ; NZ PFCMD ;chs39- ;HDLEN==5 ;INITIAL # LINES IN PAGE HEADER ;chs- ;ICHBL$==7 ;DEFAULT # BLANK LINES BEFORE CHAP HDR ;chs16+ ; .IF NZ HYLINS ;chs92+ ;HYMAXL==2 ;MAX. CONSECUTIVE LINES TO HYPHENATE ; .ENDC ; NZ HYLINS ;chs92- ; .IF NZ HY2CHR ;chs92b+ ;HYMINC==2 ;MINIMUM FRAGMENT LENGTH ; .ENDC ; NZ HY2CHR ;chs92b- ; Characters ; Control characters SHUP=='^ ;UPPER CASE INDICATOR SHDN=='\ ;LOWER CASE INDICATOR CWARN=='_ ;QUOTE NEXT CHARACTER ULCHI=='& ;UNDERLINE COMMAND IN INPUT DATA QTSP=='# ;QUOTED (NONEXPANDABLE) SPACE IN INPUT FILE WCAP=='< ;WORD CAPITALIZE CHARACTER .IIF NZ SUBIDX, SBIDX=='> ;FLAG FOR SUBINDEXING ;chs51b ; Miscellaneous ASCII characters referenced by name BS==10 ;BACKSPACE CHARACTER TAB==11 ;HORIZONTAL TAB LF==12 ;LINE FEED FF==14 ;FORMFEED CR==15 ;CARRIAGE RETURN SPC==40 ;SPACE EXCL=='! ;EXCLAMATION POINT ;chs CMA==', ;COMMA PD=='. ;PERIOD. FOR SPECIAL SPACING AFTER PERIOD SEMI=='; ;SEMICOLON UBAR=='_ ;UNDERBAR IN INPUT ;chs64 ; Special internal character codes EOF=='Z-100 ;END OF FILE ULCHS==34 ;UNDERLINE CHARACTER IN INTERNAL ;chs78c ; STORAGE (MUST BE .LT. QTS) QTS==37 ;QUOTED SPACE. MUST BE SPC-1 FOR COMPARES LPUS=='_ ;LINE-PRINTER UNDERSCORE IN OUTPUT FILE NXS==177 ;NON-EXPANDABLE SPACE (INTERNAL) .END