.TITLE ERMSG .IDENT /M3.0X/ ; INITIALIZATION AND ERROR MESSAGE ROUTINE ; ; AUTHOR: L. WADE 1-JUN-72 ; ; MODIFIED BY: ; ; E. POLLACK U. OF W. 19-DEC-73 ; ; D. N. CUTLER 27-JUL-75 ; ; C. H. Spalding, Unimation, Dec. '82 ; ; MODIFICATIONS ; ; SIG01 WAIT MESSAGE AND CORRECT DEFAULT ; SIG02 RSTS CHANGES ; chs05 Make page size settings available to task build ; chs10 Change default header type to "MIXED" ; chs16 Use local symbols in place of constants ; chs19 Add AUTOSUBTITLE ; chs20 Add optional-text commands ; chs22 Output multi-part error message on one line ; chs23 Add RIGHT JUSTIFY ; chs24 Fix skip at bottom of page in index ; chs35 Misc. changes to tab processing ; chs36 Expand scope of STANDARD ; chs37 Fix FIGURE to work as claimed; added queue ; chs38 Don't output blank page at end of output ; chs39 Add LAYOUT and related switches ; chs40 Expand HEADER ; chs42 Distinguish between "ILLEGAL COMMAND" and "BAD PARAMETER" ; chs43 Add QUOTE CHARACTER ; chs45 Add optional-text command-line switches ; chs46 Change ALTERNATING HEADER to ALTERNATE ; chs47 Allow consecutive subpages ; chs49 Allow multiple input files & appending to output ; chs51 Add subindexing ; chs54a Footnote processing reworked ; chs54b Add FOOTNOTE LINE ; chs56 Add PAGE NAME ; chs59 Add limit on chapters output ; chs61 Changes to LITERAL processing ; chs62 Internal cleanup of error messages ; chs66 Check validity of /UL value ; chs68 Store appendix letter in byte ; chs74 Allow relative/default header level argument ; chs77 Eliminate FIRST TITLE ; chs78 Add text queue & BLOCK ; revamp footnote processing ; ASSEMBLER DIRECTIVES .ENABL LC ;chs62 ; LOCAL DATA ; ; Error Messages .PSECT ERMSG,GBL,D ERRMSG: .ASCIZ /RNO -- / ;chs62 BFOVF:: .ASCIZ /Internal buffer overflow/ .IF NZ BADPRM ;chs42+ ILCMM:: .ASCIZ /Bad parm. in command "/ ILCMD:: .IFF ;chs42- ILCMM:: .ENDC ; -NZ BADPRM ;chs42 .ASCIZ /Illegal command "/ ILCMM0::.ASCIZ /"/ ;FOLLOWS ILLEGAL COMMAND ;chs22 ILCMM1::.ASCIZ / / ;EXTRA SPACES FOR JUSTIFY ERROR ;chs22 ILCMM2::.ASCIZ / on output page / ;chs22 JUSRM1::.ASCIZ /Can't justify line: / HALTM:: .ASCIZ /FATAL ERROR--Aborting/ OUTERR::.ASCIZ /Error on output file/ INPERR::.ASCIZ /Error on input file/ CORERR::.ASCIZ /Not enough memory/ LSTERR::.ASCIZ /Can't indent list element/ NOTERR::.ASCIZ /Can't reduce margins for note/ .IIF NZ OPTTXT, OPTERR::.ASCIZ /Option active at EOF/ ;chs20 .IF NZ OPTXSW ;chs45+ OPSWER::.ASCIZ /Option setting ignored/ MGOPTV::.ASCIZ /Option switch error/ .ENDC ; NZ OPTXSW ;chs45- .IF NZ NEWFTN ;chs54a+ FNSTRT::.ASCIZ /Footnote / FNSHRT::.ASCIZ /short/ FNLONG::.ASCIZ /long/ .ENDC ; NZ NEWFTN ;chs54a- .IF NZ LAYSW+XHDRSW ;chs39a LOKWRN::.ASCIZ /Attempt to override switch value/ ;chs39a .ENDC ; NZ LAYSW+XHDRSW ;chs39a CTRERR::.ASCIZ /Can't center line/ ;chs23 .IIF NZ RTJUST, RJUERR::.ASCIZ /Can't right justify line/ ;chs23 .IIF NZ LITMSG, LITERR::.ASCIZ /Long line in literal/ ;chs61c MGCMDE::.ASCIZ /Command syntax error/ ;;MGOFER::.ASCIZ /Output file specification error/ ;chs MGOFER::.ASCIZ /Output switch specification error/ ;chs MGOPER::.ASCIZ /Output file open failure/ ;;MGIFER::.ASCIZ /Input file specification error/ ;chs MGIFER::.ASCIZ /Input switch specification error/ ;chs MGIPER::.ASCIZ /Input file open failure/ .IIF NZ CKULSW, MGULSW::.ASCIZ /Invalid UL switch value/ ;chs66 MGWIGL::.ASCIZ <7>/ /<15>/ /<15>/ /<7> ;SIG01 .EVEN .PSECT ; DUMMY ENTRY POINT TO LOAD ERROR MESSAGES $ERMSG::MOV #ERRMSG,R0 ;COMPOSE START OF MESSAGE ;chs62 CALL $ERMS4 ;chs62 MOV @(SP),R0 ;GET ADDRESS OF INPUT STRING ;chs22 ADD #2,(SP) ;SKIP OVER STRING ADDRESS ;chs22 CALL $ERMS4 ;COMPOSE REST OF MESSAGE ;chs62 JMP TTC33 ;SEND OUT THE MESSAGE ;chs62 ;; JMP TTC3 ;TRANSFER TO REAL OUTPUT ROUTINE $ERMS2::MOV #ERRMSG,R0 ;COMPOSE START OF MESSAGE ;chs62 CALL $ERMS4 ;chs62 $ERMS3::MOV @(SP),R0 ;GET ADDRESS OF INPUT STRING ;chs22+ ADD #2,(SP) ;SKIP OVER STRING ADDRESS $ERMS4: MOVB (R0)+,R1 ;GET NEXT CHARACTER BEQ 20$ ;DONE IF NUL CALL TTC1 ;OUTPUT CHARACTER BR $ERMS4 ;GO BACK FOR NEXT CHARACTER 20$: RETURN ;chs22- ; INITIALIZE RUNOFF VARIABLES $INITL::MOV #JUSTF+PJUSTF+FILLF,F.1 ;INITIAL FLAGS CLRB $GCISW ;CLEAR REREAD FLAG CLRB $SDISW ;CLEAR SECONDARY INPUT FLAG CLR $AUTSW ;CLEAR AUTOPARAGRAPH FLAG CLR $CFLSW ;CLEAR WORD CAPITALIZE FLAG CLR $HFLSW ;CLEAR HYPHENATION FLAG MOV SP,$HPHSW ;SET HYPHENATION ACTIVE MOV SP,$NUMSW ;SET NUMBER PAGE FLAG MOV SP,$PERSW ;SET PUNCTUATION DOUBLE SPACE FLAG MOV SP,$PGPSW ;SET PAGE PENDING FLAG .IIF NZ FIRTIT, INCB $HDSSW ;DISABLE TITLES IN FIRST PAGE HEADER ;chs77 CLR $SBPSW ;CLEAR SUBPAGE FLAG CLR $ULLSW ;CLEAR UNDERLINE LOCK FLAG .IF Z MULTIN ;chs49 CLRB $ULMSW ;CLEAR UNDERLINE MODE FLAG CLRB $ULNSW ;CLEAR UNDERLINE ENABLE FLAG CLRB $ULSSW ;CLEAR UNDERLINE SIMULATE FLAG .ENDC ; Z MULTIN ;chs49 .IIF NZ SKPFIX, CLR $IDXAC ;SIGNAL INDEX NOT BEING OUTPUT ;chs24 .IIF Z LSTPG, CLR $EOJSW ;SIGNAL NOT AT END OF JOB ;chs38 .IIF NZ ALTSHF, CALL NAHEAD ;CLEAR ALTERNATE CONTROL ;chs46 .IIF NZ SUBIDX, MOV SP,$SFLSW ;SET SUBINDEX FLAG ;chs51b CLRB GCSCH ;NO SAVED CHARACTER CLRB ULMCH ;NO SAVED UNDERLINE CHARACTER MOV IUL,ULSWT ;INITIALIZE UNDERLINE MODE MOV HWLPP,LPPG ;SET DEFAULT HARDWARE PAGE SIZE MOV INLPG,PNLPG ;INITIAL LENGTH OF PAGE ;chs05 MOV IRMRG,PRMRG ;INITIAL PERMANENT MARGIN ;chs05 .IIF Z BIGSTD, MOV #ILMRG,LMARG ;INITIAL LEFT MARGIN ;chs36 .IIF NZ EXTHDR, MOV IRMRG,HRMARG ;SET INITIAL HEADER RIGHT MARGIN ;chs40 CLR CAS ;INITIAL CASE SETTING IS UPPER CLR WCAS ;CLEAR WORD CASE CONVERSION .IIF NZ QTCHAR, MOVB #CWARN,QTCHR ;QUOTE CHARACTER ;chs43 MOV #APNDN,R0 ;CLEAR APPENDIX, CHAPTER AND HEADING LEVELS MOV #,R1 ;NUMBER OF BYTES TO CLEAR ;chs68 5$: CLRB (R0)+ ;CLEAR THE BYTES ;chs16 SOB R1,5$ ; UNTIL ALL DONE ;chs16 .IIF NZ RELHDL, MOVB #1,(R0) ;SET INITIAL HEADER LEVEL ;chs74 MOV #LSTK,LSTKP ;INITIALIZE LIST STACK POINTER CLR LSTCT ;CLEAR CURRENT ELEMENT NUMBER MOV #1,PAGENO ;SET INITIAL PAGE NUMBER .IIF NZ SBPFIX, MOV #SPC,SUBPGE ;INITIALIZE SUBPAGE NUMBER ;chs47 MOV #PAGHD,R0 ;INITIALIZE PAGE HEADING PROTOTYPE MOV (PC)+,(R0)+ .IF NZ MXDHDR ;chs10+ .ASCII /Pa/ MOV (PC)+,(R0)+ .ASCII /ge/ .IFF ;chs10- .ASCII /PA/ MOV (PC)+,(R0)+ .ASCII /GE/ .ENDC ; NZ MXDHDR ;chs10 MOV (PC)+,(R0) .ASCIZ / / .IF Z BIGSTD ;chs36 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 .IFTF ;chs36 MOV TTLP1,TTLP2 ;INITIALIZE TITLE DESCRIPTOR MOV STTLP1,STTLP2 ;INITIALIZE SUBTITLE DESCRIPTOR .IIF NZ ATOSUB, MOV #CHPTN+INIAST,ASTLVL ;SET AUTOSUBTITLE PTR ;chs19 .IIF NZ PAGNAM, MOV PGNMP1,PGNMP2 ;INIT. PAGE NAME DESCRIPTOR ;chs56 CLR LINEC ;START AT TOP OF PAGE CLR INDCT ;AND LEFT OF PAPER .IFT ;chs36 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 MOVB R0,NTABS ;SET NUMBER OF TAB STOPS ;chs35a .ENDC ; Z BIGSTD ;chs36 .IIF Z NEWFTN, CLR FOOTC ;NO FOOTNOTE LINES HELD YET ;chs54a .IF NZ AUTOFN ;chs54b+ MOVB #IFNCHR,FTNCHR ;SET CHARACTER FOR FOOTNOTE LINE MOVB #IFNLEN,FTNLEN ;SET DEFAULT FOOTNOTE LINE LENGTH .ENDC ; NZ AUTOFN ;chs54b- .IF NZ TXTQUE ;chs78+ .IF NZ BLKCMD ;chs78a+ MOVB #BLKCNT,R0 ;POINT TO AREA TO CLEAR MOV #BLKBTS,R1 ;SET NUMBER OF BYTES 15$: CLRB (R0)+ ;CLEAR ALL BLOCK & FOOTNOTE SOB R1,15$ ; BOOKKEEPING BYTES .IFF ;chs78a- CLRB FTNCNT ;NO FOOTNOTES YET .ENDC ; -NZ BLKCMD ;chs78a MOV QSTART,QEND ;TEXT QUEUE EMPTY .ENDC ; NZ TXTQUE ;chs78- CLR XFIRST ;NOTHING IN THE INDEX MOV INI$SW, $SWTCH ;INITIAL SWITCH SETTINGS MOV LNIN1,LNIN2 ;INITIALIZE LINE INPUT DESCRIPTOR CLR HFIN+4 ;SET CHARACTER COUNTS MOV HFOUT,HFOUT+4 ;SET CHARACTER COUNTS MOV #OUBUF,HFOUT+2 ;INITIALIZE POINTERS CLR LOWPAG ;SET PAGE NUMBER RANGE TO PRINT MOV #-1,HGHPAG .IF NZ CHSW ;chs59+ CLR LOCHAP ;SET CHAPTER RANGE TO OUTPUT MOV #-1,HICHAP .ENDC ; NZ CHSW ;chs59- .IF NZ OPTTXT ;chs20+ MOV #OPTBL+1,R0 ;POINT TO TABLE OF OPTION SWITCHES MOV #OPTTXT,R1 ;NUMBER OF OPTION FLAGS 20$: MOVB #-1,(R0)+ ;SET FLAG TO "NOT SET" SOB R1,20$ ; FILL WHOLE TABLE .ENDC ; NZ OPTTXT ;chs20- .IF NZ FIGFIX ;chs37+ MOV #FIGTAB,R0 ;CLEAR FIGURE-REQUEST QUEUE MOV #FIGFIX,R1 30$: CLRB (R0)+ SOB R1,30$ .ENDC ; NZ FIGFIX ;chs37- .IF Z BIGSTD ;FALL THROUGH TO "INITP" IF... ;chs36 RETURN .ENDC ; Z BIGSTD ; ...USING EXPANDED "STANDARD" ;chs36 ; INITIALIZE PARAMETERS (CALLED BY "STANDARD") ;chs36+ .IF NZ BIGSTD INITP:: MOV #SPCNG,NSPNG ;SET INITIAL SPACING .IF NZ LAYOUT ;chs39+ MOV ITMRG,TOPMRG ;INITIAL TOP MARGIN MOV IBMRG,BASMRG ;SET INITIAL PERMANENT LEFT MARGIN .IIF NZ ALTSHF, MOV IBMRG,PBMRG ;SET INITIAL PERM. BASE MARGIN ;chs46 .ENDC ; NZ LAYOUT ;chs39- MOV #ILMRG,LMARG ;SET INITIAL LEFT MARGIN .IF NZ EXTHDR ;chs40+ MOV IHLEN,HDRLEN ;SET INITIAL HEADER LENGTH TSTEQ $HDRSW,10$ ;IF HEADERS ARE ENABLED MOV HDRLEN,$HDRSW ;RESET LENGTH 10$: MOV #ILMRG,HLMARG ;SET INITIAL HEADER LEFT MARGIN .ENDC ; -NZ EXTHDR ;chs40- MOV #IPARIN,PARIND ;SET INITIAL PARAGRAPH INDENTING MOV #IPARVS,PARSP ;SET INITIAL PARAGRAPH SPACING COUNT MOV #IPARTP,PARPT ;SET INITIAL PARAGRAPH PAGE TEST COUNT MOV #ILSTVS,LSTVS ;SET INITIAL LIST SPACING MOV #ILSTTP,LSTPT ;SET INITIAL LIST PAGE TEST COUNT MOV #TABTL,R0 ;SET LOOP COUNTER MOVB R0,NTABS ;SET NUMBER OF TAB STOPS MOV #,R1 ;FINAL TAB STOP VALUE 20$: MOVB R1,TABTAB-1(R0) ;SET STANDARD TAB STOP SUB #8.,R1 ;BACK UP TO NEXT TAB STOP SOB R0,20$ ;LOOP IF MORE TABS TO SET RETURN .ENDC ; NZ BIGSTD ;chs36- .END