.TITLE START .IDENT /M02.2/ ;**-1 ; ; COPYRIGHT (C) 1976 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. ; ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE FOR USE ONLY ON A ; SINGLE COMPUTER SYSTEM AND MAY BE COPIED ONLY WITH THE INCLU- ; SION OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE, OR ANY ; OTHER COPIES THEREOF, MAY NOT BE PROVIDED OR OTHERWISE MADE ; AVAILABLE TO ANY OTHER PERSON EXCEPT FOR USE ON SUCH SYSTEM ; AND TO ONE WHO AGREES TO THESE LICENSE TERMS. TITLE TO AND ; OWNERSHIP OF THE SOFTWARE SHALL AT ALL TIMES REMAIN IN DEC. ; ; THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL ; EQUIPMENT CORPORATION. ; ; DEC ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC. ; ; VERSION M02 ; ; AUTHOR: L. WADE 1-JUN-72 ; ; MODIFIED BY: ; ; E. POLLACK U. OF W. 19-DEC-73 ; ; D. N. CUTLER 27-JUL-75 ; ; RAY VAN TASSLE 13 Nov 1980 ;**NEW** ; DEFAULT OUTPUT IS SAME FILENAME AS INPUT (EXCEPT EXTENT) ;**NEW** ; IF NO OUTPUT SPECIFIED (NO = IN THE COMMAND LINE), OUTPUT ;**NEW** ; DEVICE IS TI: ;**NEW** ; SIG MODIFICATIONS ; SIG01 CLEAN UP WAIT FUNCTION ; SIG02 RSTS CHANGES ; ; B.F.BRUCE / CAMB. COMPUTER ASSTS. AUG 81 /BT SWITCH MOD ; ; RUNOFF START UP INITIALIZATION ; ; MACRO LIBRARY CALLS ; .MCALL CLOSE$,CSI$,CSI$1,CSI$2,EXIT$S,GCMLD$ .MCALL GCML$,GPRT$S,GTSK$S,OPEN$R,OPEN$W,PRINT$ .MCALL GLUN$S,QIOW$S ;**NEW** STATSAV: .WORD 0 ;**NEW** CSI$ ;DEFINE CSI CONTROL BLOCK OFFSETS GCMLD$ ; ; LOCAL MACROS ; ; ERROR MESSAGE OUTPUT ; .MACRO MSGPUT NAM CALL $ERMSG .WORD MG'NAM .ENDM ; ; LOCAL DATA ; ; CSI CONTROL BLOCK ; CSIBLK: .BLKB C.SIZE ; ; ; TASK MEMORY LIMITS ; LIMIT: .LIMIT ;SIG02 ;+ ; **-$START-START UP INITIALIZATION ;- $START::MOV SP,SPSAV ;SAVE INITIAL STACK POINTER OPEN$W #TTBLK ;OPEN COMMAND OUTPUT FILE RUNOFF::MOV SPSAV,SP ;RESET STACK POINTER QIOW$S #IO.DET,#5,#5 ; DETACH IT (IF IT IS) ;**NEW** CALL $INITL ;INITIALIZE VARIABLES 10$: CLOSE$ #TTLDMY ;CLOSE INPUT FILE CLOSE$ #LSTBLK ;CLOSE LISTING FILE GCML$ #TTIBLK ;GET A COMMAND BCC 30$ CMPNEB #GE.EOF,G.ERR(R0),20$ ;NOT TOP LEVEL EOF CLOSE$ #TTBLK CLOSE$ #TTIBLK EXIT$S 20$: MSGPUT CMDE ;COMMAND ERROR BR 10$ 30$: MOV G.CMLD(R0),R1 ;GET BYTE COUNT BEQ 10$ CSI$1 #CSIBLK,TTIBLK+G.CMLD+2,R1;CHECK SYNTAX BCS 20$ MOVB CSIBLK+C.STAT,STATSAV ; SOMEONE IS WIPING OUT CS.EQU ;**NEW** MOVB #CS.INP,C.TYPR(R0) ;**NEW** BITB #CS.EQU,STATSAV ;**NEW** BNE 35$ ;**NEW** MOVb #CS.OUT,C.TYPR(R0) ; NO OUTPUT SPECIFED ;**NEW** 35$: CSI$2 #CSIBLK,,#SWTBL ;**NEW** BCC 50$ ;**-1 40$: MSGPUT IFER ;INPUT FILE SPEC ERROR BR 10$ 50$: BITNEB #CS.MOR!CS.WLD,C.STAT(R0),40$ ;MORE INPUT FILES? OPEN$R #TTLDMY,,#CSIBLK+C.DSDS bcs 55$ ;**NEW** ; DEFAULT OUT FILENAME = INFILENAME ;**NEW** MOV TTLDMY+F.FNB+N.FNAM+0,LSTFIL+N.FNAM+0 ;**NEW** MOV TTLDMY+F.FNB+N.FNAM+2,LSTFIL+N.FNAM+2 ;**NEW** MOV TTLDMY+F.FNB+N.FNAM+4,LSTFIL+N.FNAM+4 ;**NEW** ; IF NO OUTPUT FILE, THE OUTPUT GOES TO TI ;**NEW** MOV #"SY,LSTFIL+N.DVNM ;**NEW** BITB #CS.EQU,STATSAV ;**NEW** BNE 60$ ; JMP IF BOTH ARE GIVEN ;**NEW** MOV #"TI,LSTFIL+N.DVNM ; USE TI ;**NEW** CLR CSIBLK+C.DSDS ;**NEW** BR 85$ ;**NEW** 55$: ;**NEW** MSGPUT IPER ;**-1 BR 10$ 60$: CSI$2 #CSIBLK,OUTPUT,#SWTBL BCC 80$ 70$: MSGPUT OFER ;INPUT FILE SPEC ERROR BR 10$ 80$: BITNEB #CS.MOR!CS.WLD,C.STAT(R0),70$ ;MORE OUTPUT FILES? 85$: ;**NEW** OPEN$W #LSTBLK,,#CSIBLK+C.DSDS BCC 100$ MSGPUT OPER ;INPUT FILE OPEN ERROR JMP 10$ ;**NEW** 100$: MOV PRMRG, RMARG ;SET RIGHT MARGIN ;**-1 TST PNLPG ;SEE IF /PS::N GIVEN BNE 105$ MOV #INLPG, PNLPG ;REINITIALIZE 105$: MOV PNLPG, NLPG ;AND PAGE LENGTH MOV #ILMRG,STDLM ; "STANDARD LM" FROM TKB DEFINTION ;**NEW** TST DLMVAL ;**NEW** BMI 103$ ;**NEW** ;**NEW** MOV DLMVAL,STDLM ; SET "STANDARD LM" AS SPECIFIED ON SWITCH ;**NEW** 103$: MOV STDLM,LMARG ; SET CURRENT LM TO STANDARD LM ;**NEW** CMPNEB #'B,ULSWT,110$ ;NOT BACKSPACE MODE? COMB $ULMSW ;SET BACKSPACE MODE BR 130$ 110$: CMPNEB #'S,ULSWT,120$ ;NOT SIMULATE MODE? COMB $ULSSW ;SET SIMULATE SWITCH BR 130$ 120$: CMPEQB #'L,ULSWT,130$ ;LINE MODE? COMB $ULNSW ;SET NO UNDERLINE SWITCH ; BOOK TITLING REVERSES TITLE AND PAGE NO. ON ALTERNATE PAGES ; NORMALLY ODD PAGES HAVE PAGE NO. ON THE RIGHT. /BT:R REVERSES THIS. ; /BT OR /BT:N (OR /BT:ANYTHING) IS NORMAL. 130$: BITEQ #BKTISW,$SWTC2,133$ ; BOOK TITLING NOT REQUESTED? CMPNEB #'R,BKTITP,133$ ; REVERSE SPECIFIED? BIC #BKTNSW,$SWTC2 ; YES, CLEAR NORNAL SWITCH 133$: GTSK$S #CSIBLK ;GET TASK PARAMETERS MOV CSIBLK+G.TSTS,R4 ;GET SIZE OF PARTITION IN BYTES GPRT$S ,#CSIBLK ;GET STARTING VIRTUAL ADDRESS ADD $DSW,R4 ;CALCULATE ENDING VIRTUAL ADDRESS MOV R4,XTOP ;INITIAL INDEX POINTERS ;SIG01-2 MOV R4,XBOT ; .. ;SIG01-2 MOV LIMIT+2,R2 ;GET START OF FOOTNOTE AREA ;SIG01-2 DEC R2 ; ;SIG01-2 MOV R2,FOOTP1 ;STORE ;SIG01-2 MOV R2,FOOTP2 ;SIG01-2 MOV R2,FOOTP3 ;IN BOTH POINTERS ;SIG01-2 CALL LINSET ;SET UP FOR LINE ;SIG01-2 CALL FFEED ;START AT TOP OF NEW FORM ;SIG01-2 CALL OPRWAT ;WAIT FOR OPERATOR IF REQUESTED TO ;SIG01-2 CLR TTBLK+F.NRBD ;CLEAR OUTPUT BUFFER ;SIG01-2 ;**NEW** ; ATTACH THE OUTPUT DEVICE IF IT IS RECORD-ORIENTED ;**NEW** GLUN$S #5,#OUTPRM ;**NEW** BIT #DV.REC,OUTPRM+4 ;**NEW** BEQ 135$ ;**NEW** QIOW$S #IO.ATT,#5,#5 ; ATTACH IT ;**NEW** 135$: ;**NEW** JMP LGO ;AND INTO MAIN LOOP, LINE INPUT ;SIG01-2 ENDFIL::CALL OUTPUT ;FLUSH LAST LINE ;SIG01-2 TSTEQ NSLA120,5$ MOVB #'1,LPIMSG+2 ; RESET THE LA120 MOVB #'1,CPIMSG+2 CALL SET120 call output ; make sure to put it out 5$: CLR NSLA120 QIOW$S #IO.DET,#5,#5 ; DETACH IT (IF IT IS) 6$: ;**-1 .IF NDF RSTS ;SIG01-2 ;SIG01-2 BITEQ #SPLSW,$SWTCH,10$ ;DON'T SPOOL TEXT FILE? ;SIG01-2 PRINT$ #LSTBLK ;SUBMIT FILE TO PRINT SYMBIONT ;SIG01-2 .ENDC 10$: JMP RUNOFF .END