.TITLE START .IDENT /M01/ ; ; 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 M01 ; ; AUTHOR: L. WADE 1-JUN-72 ; ; MODIFIED BY: ; ; E. POLLACK U. OF W. 19-DEC-73 ; ; D. N. CUTLER 27-JUL-75 ; ; 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$ 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 ; .IF NDF RSTS LIMIT: .LIMIT ; .IFF .PSECT FOTBF1,GBL LIMIT: .BLKB 2048. ; .PSECT FOTBF2,GBL ELIMT: ; .PSECT .ENDC ;+ ; **-$START-START UP INITIALIZATION ;- $START::MOV SP,SPSAV ;SAVE INITIAL STACK POINTER OPEN$W #TTBLK ;OPEN COMMAND OUTPUT FILE BICB #GE.CLO,TTIBLK+G.MODE ;SET TO LEAVE COMMAND INPUT FILE OPEN RUNOFF::MOV SPSAV,SP ;RESET STACK POINTER 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$ CSI$2 #CSIBLK,INPUT,#SWTBL BCC 50$ 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 BCC 60$ MSGPUT IPER 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? OPEN$W #LSTBLK,,#CSIBLK+C.DSDS BCC 100$ MSGPUT OPER ;INPUT FILE OPEN ERROR BR 10$ 100$: 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 .IF NDF RSTS 130$: 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 .IFF 130$: MOV #ELIMT,R4 ;GET ENDING ADDRESS OF DYNAMIC AREA .IFTF MOV R4,XTOP ;INITIAL INDEX POINTERS MOV R4,XBOT ; .. .IFT MOV LIMIT+2,R2 ;GET START OF FOOTNOTE AREA .IFF MOV #LIMIT,R2 ;GET STARTING ADDRESS OF DYNAMIC AREA .ENDC DEC R2 ; MOV R2,FOOTP1 ;STORE MOV R2,FOOTP2 MOV R2,FOOTP3 ;IN BOTH POINTERS BITEQ #FFDSW,$SWTCH,160$ ;LINE FEEDS? MOV #FF,R1 ;OUTPUT A FORMFEED CALL FOUT ; 150$: CALL LINSET ;SET UP FOR LINE CLR TTBLK+F.NRBD ;CLEAR OUTPUT BUFFER JMP LGO ;AND INTO MAIN LOOP, LINE INPUT 160$: MSGPUT POST ;OUTPUT POSITIONING MESSAGE CALL TTC4N ;WAIT FOR A CHARACTER BR 150$ ;AND GO. ENDFIL::CALL OUTPUT ;FLUSH LAST LINE .IF NDF RSTS BITEQ #SPLSW,$SWTCH,10$ ;DON'T SPOOL TEXT FILE? PRINT$ #LSTBLK ;SUBMIT FILE TO PRINT SYMBIONT .ENDC 10$: JMP RUNOFF .END