PROCEDURE ,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