.TITLE ERMSG .IDENT /M03X/ ; 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, APR. '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 ; CHS20 - ADD OPTIONAL-TEXT COMMANDS ; CHS22 - OUTPUT MULTI-PART ERROR MESSAGE ON ONE LINE ; CHS23 - ADD "RIGHT JUSTIFY" COMMAND ; 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" COMMAND ; CHS40 - EXPAND "HEADER" COMMAND ; CHS42 - DISTINGUISH BETWEEN "ILLEGAL COMMAND" AND "BAD PARAMETER" ; CHS43 - ADD "QUOTE CHARACTER" COMMAND ; CHS45 - ADD OPTIONAL-TEXT COMMAND-LINE SWITCHES ; CHS46 - CHANGE "ALTERNATING HEADER" TO "ALTERNATE" COMMAND ; CHS47 - ALLOW CONSECUTIVE SUBPAGES ; CHS49 - ALLOW MULTIPLE INPUT FILES & APPENDING TO OUTPUT ; CHS51 - ADD SUBINDEXING ; CHS54A- FOOTNOTE PROCESSING REWORKED ; CHS54B- ADD "FOOTNOTE LINE" COMMAND ; CHS56 - ADD "PAGE NAME" COMMAND ; CHS59 - ADD LIMIT ON CHAPTERS OUTPUT ; CHS61 - CHANGES TO "LITERAL" PROCESSING ; CHS62 - INTERNAL CLEANUP OF ERROR MESSAGES ; ; LOCAL DATA ; ; ERROR MESSAGES .ENABL LC ;CHS62 .PSECT ERMSG,GBL,D ERRMSG: .ASCIZ /RNO -- / ;CHS62 BFOVF:: .ASCIZ /Internal buffer overflow/ .IF NZ BADPRM ;CHS42 ILCMM:: .ASCIZ /Bad parm. in command "/ ;CHS42 ILCMD:: ;CHS42 .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/ ;CHS45 MGOPTV::.ASCIZ /Option switch error/ ;CHS45 .ENDC ; NZ OPTXSW ;CHS45 .IF NZ NEWFTN ;CHS54A FNSTRT::.ASCIZ /Footnote / ;CHS54A FNSHRT::.ASCIZ /short/ ;CHS54A FNLONG::.ASCIZ /long/ ;CHS54A .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/ MGOPER::.ASCIZ /Output file open failure/ MGIFER::.ASCIZ /Input file specification error/ MGIPER::.ASCIZ /Input file open failure/ MGWIGL::.ASCIZ <7>/ /<15>/ /<15>/ /<7> ;SIG01 .EVEN .PSECT ;+ ; **-$ERMSG-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 ;CHS22 $ERMS4: MOVB (R0)+,R1 ;GET NEXT CHARACTER ;CHS22 BEQ 20$ ;DONE IF NUL ;CHS22 CALL TTC1 ;OUTPUT CHARACTER ;CHS22 BR $ERMS4 ;GO BACK FOR NEXT CHARACTER ;CHS22 20$: RETURN ;CHS22 ;+ ; **-$INITL-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 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 .IF NZ TKBPS ;USE ADJUSTABLE VALUES TO... ;CHS05 MOV INLPG,PNLPG ;INITIAL LENGTH OF PAGE ;CHS05 MOV IRMRG,PRMRG ;INITIAL PERMANENT MARGIN ;CHS05 .IFF ;...OR USE CODED VALUES TO... ;CHS05 MOV #INLPG,PNLPG ;SET INITIAL LENGTH OF PAGE MOV #IRMRG,PRMRG ;INITIAL PERMANENT MARGIN .ENDC ; -NZ TKBPS ;CHS05 .IIF Z BIGSTD, MOV #ILMRG,LMARG ;INITIAL LEFT MARGIN ;CHS36 .IF NZ EXTHDR ;CHS40 .IF NZ TKBPS ;USE ADJUSTABLE VALUES TO... ;CHS40 MOV IRMRG,HRMARG ;SET INITIAL HEADER RIGHT MARGIN ;CHS40 .IFF ;...OR USE CODED VALUES TO... ;CHS40 MOV #IRMRG,HRMARG ;SET INITIAL HEADER RIGHT MARGIN ;CHS40 .ENDC ; -NZ TKBPS ;CHS40 .ENDC ; -NZ EXTHDR ;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 ;CHS16 5$: CLRB (R0)+ ;CLEAR THE BYTES ;CHS16 SOB R1,5$ ; UNTIL ALL DONE ;CHS16 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 .IF NZ MXDHDR ;CHS10 MOV (PC)+,(R0)+ ;CHS10 .BYTE 'P,'A+40 ;CHS10 MOV (PC)+,(R0)+ ;CHS10 .BYTE 'G+40,'E+40 ;CHS10 .IFF ;CHS10 MOV (PC)+,(R0)+ .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 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 ;CHS54B MOVB #IFNLEN,FTNLEN ;SET DEFAULT FOOTNOTE LINE LENGTH ;CHS54B .ENDC ; NZ AUTOFN ;CHS54B 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 ;CHS59 MOV #-1,HICHAP ;CHS59 .ENDC ; NZ CHSW ;CHS59 .IF NZ OPTTXT ;CHS20 MOV #OPTBL+1,R0 ;POINT TO TABLE OF OPTION SWITCHES ;CHS20 MOV #OPTTXT,R1 ;NUMBER OF OPTION FLAGS ;CHS20 20$: MOVB #-1,(R0)+ ;SET FLAG TO "NOT SET" ;CHS20 SOB R1,20$ ; FILL WHOLE TABLE ;CHS20 .ENDC ; NZ OPTTXT ;CHS20 .IF NZ FIGFIX ;CHS37 MOV #FIGTAB,R0 ;CLEAR FIGURE-REQUEST QUEUE ;CHS37 MOV #FIGFIX,R1 ;CHS37 30$: CLRB (R0)+ ;CHS37 SOB R1,30$ ;CHS37 .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 ;CHS36 .IF NZ BIGSTD ;CHS36 INITP:: MOV #SPCNG,NSPNG ;SET INITIAL SPACING ;CHS36 .IF NZ LAYOUT ;CHS39 MOV ITMRG,TOPMRG ;INITIAL TOP MARGIN ;CHS39 MOV IBMRG,BASMRG ;SET INITIAL PERMANENT LEFT MARGIN ;CHS39 .IIF NZ ALTSHF, MOV IBMRG,PBMRG ;SET INITIAL PERM. BASE MARGIN ;CHS46 .ENDC ; NZ LAYOUT ;CHS39 MOV #ILMRG,LMARG ;SET INITIAL LEFT MARGIN ;CHS36 .IF NZ EXTHDR ;CHS40 MOV IHLEN,HDRLEN ;SET INITIAL HEADER LENGTH ;CHS40 TSTEQ $HDRSW,10$ ;IF HEADERS ARE ENABLED ;CHS40 MOV HDRLEN,$HDRSW ; RESET LENGTH ;CHS40 10$: MOV #ILMRG,HLMARG ;SET INITIAL HEADER LEFT MARGIN ;CHS40 .ENDC ; -NZ EXTHDR ;CHS40 MOV #IPARIN,PARIND ;SET INITIAL PARAGRAPH INDENTING ;CHS36 MOV #IPARVS,PARSP ;SET INITIAL PARAGRAPH SPACING COUNT ;CHS36 MOV #IPARTP,PARPT ;SET INITIAL PARAGRAPH PAGE TEST COUNT ;CHS36 MOV #ILSTVS,LSTVS ;SET INITIAL LIST SPACING ;CHS36 MOV #ILSTTP,LSTPT ;SET INITIAL LIST PAGE TEST COUNT ;CHS36 MOV #TABTL,R0 ;SET LOOP COUNTER ;CHS36 MOVB R0,NTABS ;SET NUMBER OF TAB STOPS ;CHS36 MOV #,R1 ;FINAL TAB STOP VALUE ;CHS36 20$: MOVB R1,TABTAB-1(R0) ;SET STANDARD TAB STOP ;CHS36 SUB #8.,R1 ;BACK UP TO NEXT TAB STOP ;CHS36 SOB R0,20$ ;LOOP IF MORE TABS TO SET ;CHS36 RETURN ;CHS36 .ENDC ; NZ BIGSTD ;CHS36 .END