1 /MARK SENSE BATCH AND PIP
14 /COPYRIGHT (C) 1974, 1975, 1977
15 /DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.
19 /THIS SOFTWARE IS FURNISHED UNDER A LICENSE FOR USE ONLY ON A
20 /SINGLE COMPUTER SYSTEM AND MAY BE COPIED ONLY WITH THE INCLU-
21 /SION OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE, OR ANT OTHER
22 /COPIES THEREOF, MAY NOT BR PROVIDED OR OTHERWISE MADE AVAILABLE
23 /TO ANY OTHER PERSON EXCEPT FOR USE ON SUCH SYSTEM AND TO ONE WHO
24 /AGREES TO THESE LICENSE TERMS. TITLE TO AND OWNERSHIP OF THE
25 /SOFTWARE SHALL AT ALL TIMES REMAIN IN DEC.
28 /THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT
29 /NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL
30 /EQUIPMRNT COROPATION.
32 /DEC ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
33 /SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.
40 \f/MARK SENSE BATCH AND PIP JANUARY 9, 1974
46 / DIGITAL EQUIPMENT CORPORATION
48 / VERSION 3A M.H. 28-APR-77
72 CONTCH=3 /CONTINUATION CHARACTER
74 JOBBIT=0200 /BIT POSITION OF $JOB IN COLUMN 1
75 EOFCHR=6004 /END OF FILE CARD CHARACTER IS _
76 TABCHR=6010 /TAB CHARACTER
77 FFCHR=3010 /FORM FEED CHARACTER
78 NOCHR=6400 /# CHARACTER
79 RCSE=6672 /CARD READER SELECT AND SKIP IF READY
80 RCSD=6671 /CARD READER SKIP IF CARD DONE
81 RCRD=6674 /CARD READER CLEAR CARD DONE FLAG
82 RCSF=6631 /CARD READER SKIP IF DATA READY
83 RCRB=6634 /CARD READER READ BINARY
84 KCF=6030 /CLEAR KEYBOARD FLAG
85 SYSNO=CLA CLL IAC /OS8 DEVICE NUMBER FOR SYS:
86 DSKNO=CLA CLL CML RTL /OS8 DEVICE NUMBER FOR DSK:
97 JSBITS=7746 /JOB STATUS WORD
110 CONVRT=JMS I .; XCONVR
111 OUT=JMS I .;OUTAD, XOUT
112 SAVFLD=JMS I .;XSAVDF
120 OPTCNT, 0 /OUTPUT BUFFER COUNT
121 OPTSW, 0 /OUTPUT BUFFER THREE WAY SWITCH
129 OFILE, ZBLOCK 5 /OUTPUT FILE DEVICE, LENGTH, AND NAME
130 CDRFLG, -1 /CDRIN TO PASSES LAST CARD IF 0
133 DEVENT, 0 /ENTRY ADDRESS OF OUTPUT DEVICE HANDLER
134 IOERR, 0 /ERROR NUMBER
148 START, ISZ USRFLG;SKP /IS THE USR IN CORE?
150 CIF 10;JMS I (7700;USRIN /LOCK USR IN CORE
151 CD, L7777 /SET FLAG FOR USR IN CORE
153 CIF 10;USR;DECODE;0 /DELETE TENTATIVE FILES
154 TAD (7577 /COPY OUTPUT FILE #1 (NAME AND DEVICE)
157 TAD I (7644 /TEST /V SWITCH
160 JMP VERNO9 /YES - PRINT VERSION NUMBER
162 SNA /IF NOT SPECIFIED,
163 DSKNO /USE DEVICE DSK:
166 SNA /WAS A NAME GIVEN?
176 DCA BLOKNO /SET FILE NAME ADDRESS
177 TAD I (7605 /GET SECOND OUTPUT DEVICE SPECIFICATION
178 DCA I (7600 /MOVE TO FIRST FOR SPOOLING IN BATCH
180 TAD BLOKNO /GET ADDRESS OF FILE NAME
181 DCA I (CLOSNM /AND SAVE FOR CALL TO CLOSE
182 TAD (OPTDEV&7600+1 /SET DEVICE HANDLER SPACE
185 CIF 10;USR;FETCH /FETCH DEVICE HANDLER
186 DEVHDL, OPTDEV&7600+1 /2 PAGES
187 JMP OPTER2 /ERROR - CANNOT FETCH HANDLER
188 TAD DEVHDL /MOVE ENTRY ADDRESS
189 DCA DEVENT /TO PAGE ZERO
190 TAD OFILE /ENTER THE FILE NAME AS TENTATIVE
192 BLOKNO, OFILE+1 /FILE NAME, STARTING BLOCK RETURNED HERE
193 FILLEN, 0 /RETURNS FILE LENGTH HERE
194 JMP OPTER3 /CANNOT ENTER FILE
195 CIF 10;USR;USROUT /DISMISS THE USR
196 DCA USRFLG /CLEAR USR IN CORE FLAG
198 TAD BLOKNO /SAVE STARTING BLOCK NO. FOR BATCH
200 TAD OFILE /SAVE DEVICE NO. FOR BATCH
203 TAD I (7643 /GET OPTIONS
207 DCA I (EOFJMP /IF NEITHER, THEN WE CHAIN TO BATCH
208 CLL RTL /GET /B OUT OF AC
209 SZA CLA /IF AC=0 START WITH BASIC KEYWORDS
217 \fINIT5, TAD (BPRI2 /TAILOR IT FOR BATCH PROCESSING
218 DCA I (BPRKEY /"PRINT #4,"
220 DCA I (BINKEY /"INPUT #3,"
222 DCA I (BSTKEY /"CLOSE# 4\STOP"
224 DCA I (BENKEY /"CLOSE #4\END"
226 DCA I (CBAS5 /NO JUMP
227 DCA I (DATL48 /NO JUMP
228 TAD (CL2M1A /".R LOADER_*GENIOX"
230 TAD I (7643 /TEST /I OPTION (INTERACTIVE)
234 TAD BASJMP /SET UP FOR FILES 0 & 1
235 DCA I (CBAS5 /SET UP THE JMP
236 TAD BASJM1 /SET UP JUMP
238 TAD (CL2M1 /".R LOADER_*"
250 TAD I (7644 /TEST /T OPTION
257 TAD I (7645 /TEST /2 OPTION
267 INIT3, TAD (CF4 /FORTRAN 4
271 TAD (DATX4 /INITIALIZE $DATA
279 DCA BCLSW /NO BCL CARDS YET
281 DCA CDREOF /RESET EOF SWITCH
282 TAD I (BLOKNO /SET STARTING BLOCK NUMBER
290 DCA ERRCNT /CLEAR COUNT OF CARDS IN ERROR
293 BASJMP, JMP CBAS7&177+INIT5
294 BASJM1, JMP DATL49&177+INIT5
298 \fREADY, JMS I (CDRIN /READ A CARD
299 JMP I (EOF /END OF FILE SENSED
300 TAD I XRCDR /GET COLUMN 1
301 DCA KEYWD /SAVE AS KEYWORD BITS
306 /TRANSLATE LINE NUMBER
309 DCA LNCNT /CLEAR COUNT
310 DCA KEYWD+3 /CLEAR COLUMN 2-6 KEYWORD BITS
311 LNLP, TAD I XRCDR /GET LINE NO. COLUMN
314 AND TEMP2 /GET KEYWORD BITS
323 JMP LNLPEN /IGNORE BLANKS
325 JMP LNLPEN /IGNORE RUBOUTS
328 JMP LNERR /NOT A NUMBER
331 JMP LNERR /NOT A NUMBER
333 LNLP1, DCA I XR2 /INSERT CHARACTER IN OUTPUT BUFFER
334 ISZ LNCNT /COUNT THIS CHARACTER
335 LNLPEN, ISZ TEMP1 /GOT ALL LINE NUMBER COLUMNS?
337 JMP I (KEYTRA /GO TRANSLATE KEYWORD
344 MAKNA2, 0 /FIELD 1 OUTPUT ROUTINE FOR MAKNAM
359 /FOR RETURN TO CALLING FIELD
360 /PRESERVES AC AND LINK WHILE PUTTING
361 /CIF CDF TO DATA FIELD AT ADDRESS
362 /SPECIFIED AS FIRST WORD AFTER CALL
383 TAD ("? /OUTPUT A "?"
384 ISZ ERRFLG /FLAG ERROR ON THIS CARD
389 CDRIN, 0 /READ A CARD INTO THE BUFFER
390 SAVFLD;CDRCIF /SAVE DATA FIELD FOR RETURN
391 DCA ERRFLG /CLEAR ERROR FLAG FOR THIS CARD
392 ISZ CDREOF /HAVE WE SEEN EOF?
393 JMP CDRCIF /YES - STILL EOF
394 ISZ CDRFLG /SHOULD WE PASS LAST CARD?
396 CDRIN6, JMS CDRIN5 /RESET TIME OUT COUNTERS
397 TAD (-50 /YES - READ IT INTO THE CDR BUFFER
398 DCA TEMP1 /40 COLUMNS (DECIMAL)
401 CDRIN3, RCSE /CARD READY?
402 JMP CDRIN4 /TEST TIME OUT
403 JMS CDRIN5 /RESET TIME OUT COUNT
404 CDRIN1, JMS KBRD /TEST KEYBOARD (AFTER TIME OUT LOOP)
407 JMP CDRIN7 /YES - TOO FEW COLUMNS
408 RCSF /CHARACTER READY?
409 JMP CDRIN1 /NO - TRY CARD DONE
410 JMS CDRIN5 /RESET TIME OUT COUNT
411 RCRB /YES - READ BINARY
412 CDRIN2, DCA I XRCDR /AND STORE IT
413 ISZ TEMP1 /DON'T READ MORE THAN BUFFER CAN HOLD
414 JMP CDRIN1 /TRY CARD DONE AGAIN
415 RCSD /WAIT FOR END OF CARD - OR ELSE!
417 RCRD /IF THIS ISN'T CLEARED,
418 /FORTRAN IV BECOMES VERY UNHAPPY!
420 CDRIN7, RCRD /FORTRAN IV AGAIN
421 ISZ TEMP1 /ALLOW ONE COLUMN TOO FEW (EDU30 - 39 COL)
424 CDRIN8, TAD (CDRBUF-1 /INIT BUFFER POINTERS AGAIN
428 TAD (-EOFCHR /TEST FOR FIRST COLUMN=EOFCHR AND REST =0
429 EOFLP, TAD I XRCDR /GET NEXT COLUMN
431 JMP REINIT /NON-ZERO - NOT EOF
434 JMP CDRCIF /END OF FILE CARD
435 REINIT, TAD (CDRBUF-1
437 ISZ CDRIN /SKIP RETURN IF NOT EOF
438 L7777 /RESET EOF SWITCH
441 L7777 /SET TO READ A NEW CARD NEXT TIME
445 CDRIN4, JMS KBRD /TEST TIME OUT
446 JMP CDRIN3 /TRY SELECTING CARD AGAIN
448 CDRIN5, 0 /RESET TIME OUT
456 JMP KBRDTM /NO - TIME
461 JMP I K7600 /YES - RETURN TO OS-8
462 KBRDTM, ISZ TIMOUT /TIMED OUT YET?
466 KCF /IGNORE ANYTHING TYPED BEFORE THIS
467 TAD (207 /NOTHING - WAKE HIM UP
469 TAD (MSGJAM /IT COULD BE JAMMED
472 KBRD1, KSF /WAIT FOR A CHARACTER OR READER
474 KBRD2, KRS /GET THE CHAR
475 AND (177 /WITHOUT PARITY
478 JMP I K7600 /YES - TO MONITOR
479 KCF /IF ^C - LEAVE FLAG SO OS-8 WILL SEE IT. ELSE CLEAR IT
482 JMP CDRCIF /YES - EOF
483 JMP CDRIN6 /GO BACK AND TIME OUT AGAIN
484 KBRD3, RCSE /SELECT A CARD?
485 JMP KBRD1 /NO - TRY KEYBOARD
486 TAD (-50 /RESET COUNT
488 TAD (CDRBUF-1 /AND POINTER
490 JMP CDRIN3+2 /YES - RE-ENTER ROUTINE WITH SUCCESSFUL SELECT
500 \fKEYTRA, TAD I XRCDR /GET KEYWORD COLUMN
504 /CONVERT KEYWORD BITS TO NUMBER
505 TAD (KEYWD-1 /POINT INDEX REGISTER TO KEYWORD BUFFER
507 TAD (-4 /SET COUNT OF WORDS
509 DCA KEYVAL /ZERO KEYWORD VALUE
510 WRDLP, TAD (-14 /SET BIT COUNT
513 BITLP, ISZ KEYVAL /BUMP BIT VALUE
514 CLL RAL /SHIFT INTO LINK
516 JMP KEYFND /YES - KEYWORD FOUND
517 ISZ TEMP2 /COUNT BITS
519 ISZ TEMP1 /COUNT WORDS
521 JMS I (LNOUT /SEND THE LINE NO.
522 JMP I (TEXTRA /ALL BITS OFF - NO KEYWORD
530 TAD I XR1 /GET NEXT WORD
531 KEYFND, SZA CLA /TEST THIS WORD
532 JMP KEYBAD /ERROR - MORE THAN ONE KEYWORD MARKED
533 ISZ TEMP1 /COUNT WORDS
534 JMP KEYFND-1 /AND LOOP
537 TAD KEYVAL /IS IT A BATCH CONTROL LANGUAGE COMMAND?
541 L7777 /FOUND A BCL CARD
542 DCA BCLSW /GENERATE "$END" BEFORE CLOSING FILE
544 JMP I (BCLTRA /YES - HANDLE THAT SPECIALLY
547 KEYOUT, JMS I (LNOUT /SEND LINE NUMBER
551 TAD I TEMP1 /GET ADDRESS OF KEYWORD
553 JMP KEYBAD /IF ZERO - UNUSED KEYWORD
554 DCA TEMP1 /ELSE SAVE IT
555 TAD TEMP1 /IS THIS "INPUT" OR "PRINT
556 TAD (-BPRI2 /BEING FUDGED UNDER BASIC?
558 JMP NOSGN /PRINT - CHECK FOR NUMBER SIGN
561 JMP KEYOU5 /NONE - ALL'S WELL
562 NOSGN, TAD (-40 /SET COUNT
564 NOSGN1, TAD I XRCDR /IS NEXT CHAR BLANK?
566 JMP NOSGN2 /NO - IS IT #
569 JMP NOSGN3 /REST IS BLANK
570 NOSGN2, TAD (-NOCHR /IS IT "#"?
573 TAD TEMP1 /YES - USE "INPUT" OR "PRINT"
579 NOSGN3, TAD (CDRBUF+7
581 KEYOU5, JMS I (UNPACK /AND OUTPUT KEYWORD
582 KEYBLK, TAD (" /INSERT BLANK AFTER KEYWORD
588 \fUNPACK, 0 /OUTPUT PACKED 6-BIT ASCII TEXT
589 TAD I TEMP1 /IS FIRST CHAR = 00?
592 JMP KEYOU1 /NO - NORMAL 6-BIT TRANSLATE
593 TAD (211 /YES - THIS IS TAB RATHER THAN END
595 JMP KEYOU3 /AND GET SECOND CHARACTER
596 KEYOU1, TAD I TEMP1 /GET FIRST CHARACTER
600 JMS KEYOU2 /AND OUTPUT IT
601 KEYOU3, TAD I TEMP1 /GET SECOND CHARACTER
602 JMS KEYOU2 /AND OUTPUT IT
603 ISZ TEMP1 /POINT TO NEXT TWO CHARACTERS
607 AND (77 /MASK FOR THE LOW ORDER BITS
609 JMP I UNPACK /CHARACTER IS 00 - END OF KEYWORD
612 TAD (215-337 /THIS WILL BE 215 WHEN WE'RE DONE
616 OUT /OUTPUT THE CHARACTER
619 TTYOUT, 0 /USE UNPACK ROUTINE TO PRINT MESSAGE ON TTY
620 TAD (TOUT /SWITCH OUTPUT ROUTINES
623 TAD (XOUT /RESET OUTPUT ROUTINES
628 LNOUT, 0 /OUTPUT THE LINE NUMBER
630 TAD LNCNT /GET NUMBER OF CHARS
633 TAD (CDRBUF /START WITH COLUMN 2
635 LNOUT1, ISZ TEMP1;SKP /MORE DIGITS?
639 LNOUT2, TAD LNCNT /ANY DIGITS?
642 TAD (" ;OUT /YES - SUFFIX A BLANK
649 TEXTRA, DCA CONFLG /CLEAR CONTINUATION FLAG
650 DCA TEMP1 /CLEAR COUNT OF BLANK CHARACTERS
651 TAD (-40 /32 COLUMNS OF TEXT (DECIMAL)
655 JMP TEXBLK /YES - COUNT A BLANK
656 TAD (-CONTCH /CONTINUATION CHARACTER?
658 JMP TEXCON /YES - ENOUGH OF THIS CARD
660 CONVRT /TRANSLATE THE CHARACTER
661 JMP TEXLP2 /RUBOUT? - GET THE NEXT CHARACTER
662 DCA TEMP2 /SAVE THE CHARACTER
663 JMS TEXBOU /OUTPUT THE COUNTED BLANKS
665 OUT /OUTPUT THE CHARACTER
666 TEXLP2, ISZ TEMP3 /COUNT COLUMNS
668 TAD (215 /OUTPUT A <CR>
675 DCA CONFLG /SET THE CONTINUATION FLAG
679 TEXBLK, ISZ TEMP1 /COUNT THE BLANKS
680 JMP TEXLP2 /GET THE NEXT CHARACTER
683 TEXBOU, 0 /OUTPUT BLANKS
687 TEXBO1, ISZ TEMP1 /MORE BLANKS
689 JMP I TEXBOU /NO - RETURN
690 TAD (" /YES - OUTPUT A BLANK
695 TEXFIN, TAD ERRFLG /DID THIS CARD HAVE AN ERROR?
697 ISZ ERRCNT /YES - COUNT IT
698 JMP I (READY /PROCESS NEXT CARD
701 \f/CARD CODE TO ASCII CONVERSION ROUTINE
702 XCONVR, 0 /INPUT 12 BIT CARD CODE - OUTPUT 8 BIT ASCII
703 SAVFLD;XCOCIF /SAVE DATA FIELD FOR RETURN
704 DCA CONVR1 /SAVE 12 BIT CARD CODE
708 SNA CLA /WAS CHARACTER RUBBED OUT?
709 JMP XCOCIF /YES - RETURN 0 IN AC
710 ISZ XCONVR /NOT RUBBED OUT - SKIP RETURN
714 AND (7 /GET ZONE BITS
716 DCA CONVR2 /2*ZONE BITS
719 TAD CONVR2 /10*ZONE BITS
724 AND (7770 /1-9 "PUNCHES"
726 JMP CONVR3 /IF ALL OFF DON'T INCREMENT COUNT
727 CLL RAL /SHIFT NEXT BIT INTO LINK
728 ISZ CONVR2 /COUNT THE BIT
732 JMP CONILL /IF REST OF AC IS NOT ZERO - ILLEGAL CHARACTER
733 CONVR3, TAD CONVR2 /GET DISPLACEMENT OF CHAR IN TABLE
734 CLL RAR /GET WORD DISPLACEMENT IN AC
735 TAD (TRTAB /ADDRESS OF WORD
737 TAD I CONVR2 /GET WORD
739 JMP .+4 /IF DISPLACEMENT WAS ODD, USE LOW ORDER HALF OF WORD
743 AND (77 /MASK FOR LOW PART OF WORD
745 JMP CONVR4 /ZERO IN TABLE IS ILLEGAL CODE (MAYBE)
747 JMP XCOCIF /RETURN WITH 8 BIT ASCII IN AC
748 CONVR4, TAD CONVR1 /GET 12-BIT CARD CODE
749 TAD (-TABCHR /IS IT A TAB CHAR?
752 TAD (TABCHR-FFCHR /HOW ABOUT A FORM FEED?
754 JMP CONILL /NOPE - IT'S REALLY BAD
755 TAD (214-211 /IT'S FORM FEED
756 CONVR5, TAD (211 /IT'S TAB
758 CONILL, ERROR /SET ERROR FLAG; RETURN "?" IN AC
767 \f/OUTPUT A CHARACTER. RETURNS .+1 IF CHARACTER IS
768 /JUST STORED IN BUFFER. RETURNS .+2 IF NO MORE SPACE IN
769 /EMPTY. RETURNS .+3 IF BLOCK WAS WRITTEN AND THERE ARE
770 /MORE BLOCKS IN THE EMPTY.
771 XOUTP, 0 /OUTPUT ROUTINE
772 ISZ OPTSW /THREE WAY SWITCH
774 DCA XOUT2 /SAVE CHAR IN TEMP
776 TAD XROPT /BACK UP 2 WORDS
778 TAD XOUT2 /GET FIRST HALF OF CHARACTER
782 TAD I XOUT3 /ADD IN FIRST CHARACTER
785 TAD XOUT2 /GET SECOND HALF OF CHARACTER
790 TAD I XOUT3 /ADD IN SECOND CHARACTER
792 ISZ OPTCNT /IS BUFFER FULL?
793 JMP XOUT6 /NO - RETURN NORMALLY
794 JMS I DEVENT /CALL DEVICE HANDLER
795 4200 /TWO PAGES OF OUTPUT FROM FIELD 0
796 OPTBUF /BUFFER ADDRESS
797 OPTBLK, 0 /BLOCK NUMBER
798 JMP OPTER4 /ERROR DOING OUTPUT
799 ISZ OPTBLK /INCREMENT BLOCK NUMBER
800 TAD (OPTBUF-1 /RESET BUFFER POINTER
802 TAD (-200 /AND BUFFER LENGTH /2
804 ISZ XOUTP /SKIP RETURN IF BLOCK WRITTEN
805 ISZ I (FILLEN /MORE BLOCKS IN EMPTY?
806 ISZ XOUTP /YES - SKIP AGAIN
807 XOUT6, L7775 /RESET 3-WAY SWITCH
811 XOUT1, DCA I XROPT /SAVE CHARACTER IN BUFFER
819 DCA CLOSLN /SAVE CHAR IN A CONVENIENT TEMP
821 JMS XOUTP /OUTPUT THE CHARACTER
823 JMP OPTER5 /FILLED UP AVAILABLE SPACE BEFORE ^Z
824 TAD CLOSLN /WAS IT <CR>?
832 EOF, DCA KEYVAL /FINISH UP ANY BCL CARD IN PROGRESS
833 DCA CONFLG /ZERO THESE TO GET US AROUND
834 DCA LNCNT /THE TESTS IN BCLHUH
837 EOF2, ISZ BCLSW /WERE THERE ANY BCL CARDS?
839 TAD (MEND /YES - SEND "$END"
843 JMS XOUTP /OUTPUT CHAR
844 JMP .-1 /BLOCK NOT YET FULL
845 K7400, 7400 /BLOCK WRITTEN
846 TAD I (BLOKNO /BLOCK WRITTEN
848 TAD OPTBLK /GET LENGTH OF FILE WRITTEN
849 DCA CLOSLN /SET LENGTH FOR CLOSE
850 ISZ USRFLG;SKP /IS USR IN CORE?
852 CIF 10;JMS I (7700;USRIN /BRING IN THE USR
853 EOF3, L7777 /SET USR IN CORE FLAG
855 TAD OFILE /GET DEVICE NUMBER
857 CLOSNM, 0 /POINTER TO NAME
858 CLOSLN, 0 /LENGTH OF FILE
864 AND (7760 /GET MINUS LENGTH IN BITS 0-7
867 DCA I (7617 /SET LENGTH AND DEVICE NO. FOR BATCH
869 JMP I (ERRDEC /CONVERT NUMBER OF ERRORS TO DECIMAL
873 \f/CONVERT NUMBER OF CARDS IN ERROR TO DECIMAL AND TYPE MESSAGE
874 ERRDEC, TAD (DECN-1 /START POWERS OF 10 AT 1000
877 DCA TEMP1 /FOUR POWERS OF 10
878 DCA TEMP5 /CLEAR LEADING ZEROES FLAG
879 TAD ERRCNT /SET VALUE
881 TAD (TOUT /FUDGE OUTPUT CALL
883 JMS CONDEC /CONVERT TO DECIMAL
884 TAD (XOUT /RESTORE OUTPUT CALL
886 TAD (NOMES /SET UP TO PRINT "NO"
888 TAD TEMP5 /DID WE PRINT A NUMBER?
890 JMS I (TTYOUT /NO - PRINT "NO"
891 TAD (CDMES /PRINT "CARDS IN ERROR"
894 EOFJMP, JMP I (CD /DONE WITH THIS ONE - CALL COMMAND DECODER
895 SYSNO /LOAD SYS: NUMBER FOR LOOKUP
903 DCA I (JSBITS /KEEP USR ACROSS CHAIN
904 CIF 10;USR;CHAIN /NOW CHAIN TO BATCH
908 CONDEC, 0 /CONVERT A NUMBER TO DECIMAL
909 SAVFLD;CONCIF /SAVE DATA FIELD FOR RETURN
910 DIGLP, TAD I XR1 /GET THIS POWER OF 10
911 DCA TEMP2 /AND SAVE IT
912 DCA TEMP3 /CLEAR THIS DIGIT
913 DIGLP1, TAD TEMP4 /GET NUMBER TO BE CONVERTED
914 TAD TEMP2 /DIVIDE BY SUBTRACTING
916 JMP DIGLP2 /WENT NEGATIVE - DONE
917 ISZ TEMP3 /BUMP COUNT
918 DCA TEMP4 /SAVE REDUCED VALUE
921 TAD TEMP3 /GET VALUE OF THIS DIGIT
923 JMP DIGOUT /NOT A ZERO - PRINT IT
924 TAD TEMP5 /IF ZERO - IS IT LEADING?
926 JMP DIGLPE /YES - DON'T PRINT IT
927 DIGOUT, ISZ TEMP5 /IF PRINTING, THEN ZEROES ARE NOT LEADING
928 TAD (260 /CONVERT TO ASCII
930 DIGLPE, ISZ TEMP1 /LAST DIGIT?
936 TOUT, 0 /SEND A CHARACTER TO THE TTY
940 TAD (-215 /WAS THE CHARACTER <CR>?
942 JMP I TOUT /NO - RETURN
943 TAD (212 /YES - TYPE A LINE FEED
948 CLA /TYPE ERROR MESSAGE
949 TAD IOERR /GET NUMBER
953 TAD I XR1 /GET ADDRESS OF MESSAGE
955 DCA IOERR /CLEAR ERROR NUMBER
956 JMS I (TTYOUT /PRINT IT
957 TAD I XR1 /GO TO RESTART ADDRESS
963 \fOPTDEV, ZBLOCK 400 /TWO PAGES FOR DEVICE HANDLER
964 OPTBUF, ZBLOCK 400 /TWO PAGES FOR OUTPUT BUFFER
965 CDRBUF, DECIMAL;ZBLOCK 40;OCTAL
966 BATNAM, TEXT "BATCH@SV";*.-1
969 CDMES, TEXT " CARDS IN ERROR_"
970 MSGJAM, TEXT "LOAD MORE CARDS OR TYPE ^Z_"
971 IOEM1, TEXT "NO OUTPUT FILE SPECIFIED_"
972 IOEM2, TEXT "CAN'T FETCH DEVICE HANDLER_"
973 IOEM3, TEXT "CAN'T ENTER FILE_"
974 IOEM4, TEXT "OUTPUT ERROR_"
975 IOEM5, TEXT "FILE TOO BIG_"
976 IOEM6, TEXT "CAN'T CLOSE FILE_"
977 IOEM7, TEXT "CARD IN READER BACKWARDS. TYPE SPACE TO CONTINUE._"
978 IOEM8, TEXT /"BATCH.SV" NOT ON SYS: - CAN'T CHAIN_/
979 VERM9, TEXT "MSBAT - VERSION 3A_@@@@@@"
998 /CHARACTER CODE TRANSLATION TABLE
1056 BDIM, TEXT "DIMENSION"
1059 BEND2, TEXT "CLOSE #4\END"
1064 BINP2, TEXT "INPUT #3:"
1069 BPRI2, TEXT "PRINT #4:"
1071 BRES, TEXT "RESTORE"
1082 BREP, TEXT "REPLACE"
1088 BSTO2, TEXT "CLOSE #4\STOP"
1091 FCMN, TEXT "@COMMON"
1092 FASN, TEXT "@ASSIGN"
1093 FCPX, TEXT "@COMPLEX"
1094 FBKS, TEXT "@BACKSPACE"
1095 FCNT, TEXT "@CONTINUE"
1096 FBKD, TEXT "@BLOCK DATA"
1099 FDEF, TEXT "@DEFINE FILE"
1102 FEQU, TEXT "@EQUIVALENCE"
1103 FFOR, TEXT "@FORMAT"
1105 FINT, TEXT "@INTEGER"
1108 FREW, TEXT "@REWIND"
1109 FSBR, TEXT "@SUBROUTINE"
1110 FCMT, TEXT "C" /COMMENT
1111 FDIM, TEXT "@DIMENSION"
1112 FDBP, TEXT "@DOUBLE PRECISION"
1113 FEF, TEXT "@END FILE"
1114 FEXT, TEXT "@EXTERNAL"
1115 FFUN, TEXT "@FUNCTION"
1117 FLOG, TEXT "@LOGICAL"
1119 FRET, TEXT "@RETURN"
1149 /COLUMNS 2-6 COLUMN ROW
1189 /COLUMN 2-6 COLUMN ROW
1216 DATFTN, 0 /ADDRESS OF FORTRAN $RUN
1217 GETCHR=JMS I .;XGETCH
1218 PUTCHR=JMS I .;XPUTCH
1219 BCLIN=JMS I .;XBCLIN
1220 OPTION=JMS I .;XOPTIO
1222 COLNAM=JMS I .;XCOLNA
1223 OUTNAM=JMS I .;XOUTNA
1226 TSTCR=JMS I .;XTSTCR
1227 CDRTRA=JMS I .;BCLTRA+1
1228 ISNUM=JMS I .;XISNUM
1233 /PUT A CHARACTER INTO A 6-BIT BUFFER
1237 TAD (-215 /IF <CR>, IT BECOMES 37
1241 AND (77 /AND OFF 6 BITS
1242 DCA PUTCH1 /SAVE IT IN A TEMP
1243 TAD PUTPNT /GET POINTER TO CHARACTER IN 6-BIT BUFFER
1244 ISZ PUTPNT /AND BUMP POINTER
1245 CLL RAR /GET WORD DISPLACEMENT
1246 TAD I XPUTCH /ADD IN BASE ADDRESS
1247 ISZ XPUTCH /BUMP RETURN ADDRESS
1248 DCA PUTCH4 /SAVE ADDRESS OF WORD CONTAINING CHAR
1249 SZL /LINK HAS FIRST OR LAST HALF INDICATOR
1251 TAD PUTCH1 /FIRST HALF - ROTATE CHAR INTO HIGH BITS
1254 TAD I PUTCH4 /GET ANY CHARACTER ALREADY THERE
1257 PUTCH2, TAD I PUTCH4
1258 AND (7700 /GET CHARACTER ALREADY THERE
1259 PUTCH3, TAD PUTCH1 /ADD IN NEW CHARACTER
1260 DCA I PUTCH4 /STORE THEM BOTH
1261 JMP I XPUTCH /AND RETURN
1264 /GET A CHARACTER FROM A 6-BIT BUFFER
1266 TAD XGETCH /MOVE RETURN ADDRESS TO CON628
1268 TAD GETPNT /GET POINTER TO CHARACTER
1269 ISZ GETPNT /BUMP IT FOR NEXT TIME
1270 JMP CON628+1 /ENTER CONVERSION ROUTINE
1273 /CONVERT 6-BIT ASCII TO 8-BIT
1274 /AC HAS POINTER TO CHARACTER
1275 /ARGUMENT IS BASE ADDRESS OF BUFFER
1278 CLL RAR /GET WORD DISPLACEMENT IN AC
1279 TAD I CON628 /ADD BASE ADDRESS OF BUFFER
1280 ISZ CON628 /BUMP RETURN ADDRESS
1281 DCA CO628X /SAVE ADDRESS
1282 TAD I CO628X /GET WORD CONTAINING CHARACTER
1283 SZL /LINK HAS INDICATOR FOR FIRST OR LAST CHAR
1285 RTR;RTR;RTR /FIRST CHAR - PUT IN LOW BITS
1287 JMS XSEND3 /GET PROPER 8-BIT REPRESENTATION
1289 TAD CHAR /RETURN WITH IT IN AC
1290 JMP I CON628 /RETURN
1305 JMS I (GETCD1 /GET A CHAR FROM THE CDR BUFFER
1334 \f/SUBROUTINE OPTION WILL SCAN THE BATCH CONTROL LANGUAGE
1335 /BUFFER FOR OPTIONS SPECIFIED IN IT'S CALL. AN OPTION IS
1336 /RECOGNIZED AS ANY ITEM WHICH FOLLOWS A "/". IT'S NAME
1337 /IS COMPOSED OF ANY CHARACTERS OTHER THAN "/" , "," ,
1338 /"=",OR <CR>. THE NAME IS TERMINATED BY ANY ONE OF THE
1339 /PREVIOUS DELIMITERS. IF IT IS TERMINATED BY A "=" AND
1340 /THE SUBROUTINE CALL INDICATES THAT IT EXPECTS A FILE NAME,
1341 /THEN THE FILE NAME FOLLOWS THE "=" AND IS TERMINATED BY A
1342 /"/" , "," , OR <CR>. THE SUBROUTINE CALL IS FOLLOWED BY A
1343 /POINTER TO A LIST OF ADDRESSES. THIS LIST IS TERMINATED BY
1344 /A ZERO ENTRY. EACH ENTRY POINTS TO AN OPTION CONTROL
1345 /BLOCK IN THE FOLLOWING FORM:
1346 / OPTION CONTROL WORD
1347 / (FILE NAME SPACE IF NEEDED - 6 WORDS)
1348 / TEXT "OPTION NAME"
1350 /THE FORMAT OF THE OPTION CONTROL WORD IS AS FOLLOWS:
1351 / BIT 0: ON RETURN THIS BIT WILL BE SET IF
1352 / THE OPTION WAS FOUND, AND CLEARED
1354 / BIT1: ON RETURN THIS BIT IS SET IF A NAME
1355 / WAS GIVEN WITH THE OPTION
1356 / BIT 2: SET IF OPTION HAS ALLOCATED 6 WORDS
1357 / FOR A POSSIBLE FILE NAME. CLEARED
1359 / BITS 6-8: NUMBER OF CHARACTERS -1 OF SHORT
1361 / BITS 9-11: DIFFERENCE BETWEEN SIZES OF
1362 / SHORT AND LONG FORMS
1363 / THE SUM OF BITS 6-8 AND BITS 9-11
1364 / SHOULD TOTAL THE LENGTH OF THE
1367 /THE FILE NAME SPACE MAY BE INITIALIZED TO SOME DEFAULT
1368 /DEVICE, NAME, AND EXTENSION.
1372 /TURN OFF ALL OPTIONS
1373 TAD I XOPTIO /GET ADDRESS OF LIST OF OPTION ADDRESSES
1375 OPTIO1, TAD I OPTLIS /GET OPTION ADDRESS
1376 ISZ OPTLIS /POINT TO NEXT ONE
1378 JMP OPTIO2 /DONE TURNING OFF ALL OPTIONS
1380 TAD I OPTCTL /GET OPTION CONTROL WORD
1381 AND (1777 /CLEAR FIRST BIT
1385 /SEARCH BCL BUFFER FOR "/"
1386 OPTIO2, DCA GETPNT /START AT BEGINNING OF BATCH CONTROL LINE
1387 OPTIO3, GETCHR;BCLBUF /GET A CHARACTER FROM THE BUFFER
1388 ISIT /IS IT "/" OR <CR>?
1390 JMP OPTIO3 /NO - KEEP LOOKING
1391 OPTI3A, TAD GETPNT /YES - SAVE IT'S POSITION
1393 TAD I XOPTIO /GET ADDRESS OF LIST AGAIN
1394 DCA OPTLIS /AND SAVE IT
1396 /FOUND A "/" - TRY ALL OPTIONS
1397 OPTIO4, TAD OPTBEG /START COMPARISON OF OPTION WITH CHARACTER AFTER "/"
1399 TAD I OPTLIS /GET ADDRESS OF OPTION CONTROL WORD
1400 ISZ OPTLIS /AND BUMP POINTER FOR NEXT TIME
1401 SNA /IS THE LIST ENDED?
1402 JMP I (OPTIER /YES - OPTION WAS INVALID
1403 DCA OPTCTL /NO - SAVE ADDRESS OF CONTROL WORD
1404 TAD I OPTCTL /GET CONTROL WORD
1406 SPA CLA /DOES IT HAVE SPACE FOR A FILE NAME
1407 TAD (6 /YES - ADD SIZE OF THE SPACE
1408 TAD OPTCTL /ADD ADDRESS OF OPTION
1409 IAC /BUMP ONE FOR CONTROL WORD
1410 DCA OPTTEX /SAVE ADDRESS OF OPTION TEXT
1411 TAD I OPTCTL /GET LENGTH FOR UNIQUE OPTION FROM CONTROL WORD
1414 CMA /NEGATE IT (INCREMENTED BY ONE)
1415 DCA OPTCT1 /SAVE IN COUNTER
1416 DCA OPTCT2 /ZERO CHARACTER POSITION
1417 \f/COMPARE OPTION WITH CONTENTS OF BCL BUFFER
1419 SZA CLA /ARE THEY THE SAME?
1420 JMP OPTIO4 /NO - TRY NEXT OPTION
1421 ISZ OPTCT1 /HAVE WE SUCCEEDED FAR ENOUGH FOR IT TO BE UNIQUE?
1422 JMP OPTIO5 /NO - KEEP COMPARING
1424 TAD GETPNT /SAVE CURRENT BUFFER POSITION
1426 TAD I OPTCTL /GET REMAINING LENGTH FROM CONTROL WORD
1430 OPTIO6, ISZ OPTCT1 /DONE WITH REMAINING CHARACTERS?
1432 JMP OPTIO7 /YES - SUCCESS
1434 SNA CLA /ARE THEY THE SAME?
1435 JMP OPTIO6 /YES - KEEP GOING
1436 TAD OPTTM2 /NO - MOVE POINTER BACK TO SHORT FORM
1452 OPTRET, ISZ XOPTIO /INCREMENT RETURN ADDRESS
1453 DCA GETPNT /SET POINTER TO BEGINNING OF BUFFER
1466 \f/TEST DELIMITER AFTER OPTION
1467 OPTIO7, GETCHR;BCLBUF /GET NEXT BUFFER CHARACTER
1468 ISIT /IS IT "=", "," ,"/", OR <CR>?
1470 JMP I (OPTIER /NONE OF THESE
1471 OPTIO8, TAD I OPTCTL /YES - GET CONTROL WORD
1473 SMA CLA /DOES IT TAKE A FILE NAME?
1474 JMP I (OPTIER /NO - ERROR
1475 TAD OPTCTL /GET ADDRESS OF FILE NAME SPACE
1478 COLNAM /AND COLLECT A NAME INTO IT
1480 JMP I (OPTIER /ERROR RETURN
1481 TAD I OPTCTL /TURN ON NAME BIT
1485 OPTIO9, TAD I OPTCTL /GET CONTROL WORD
1487 TAD (4000 /TURN ON OPTION FOUND BIT
1493 \f/ON ERROR, REPORT IT
1494 OPTIER, TAD I (OPTBEG /OPTION BEGINS AT THIS POSITION
1495 JMS OUTERR /OUTPUT THE ERROR
1498 /SQUISH THE CURRENT OPTION OUT OF BCL BUFFER
1499 OPTI10, L7777 /BACK UP OVER "/"
1500 TAD I (OPTBEG /POINT TO BEGINNING OF OPTION
1501 JMS BCLSQU /SQUISH OUT THIS OPTION
1504 JMP I (OPTIO2 /GO LOOK FOR MORE OPTIONS
1507 \f/SQUISH OUT A PORTION OF THE BCL BUFFER
1508 / TAD X /POSITION OF FIRST CHAR OF SQUISH
1510 /GETPNT POINTS TO FIRST CHAR SURE TO BE KEPT AFTER
1511 /SQUISH CHARS. ONE CHAR PRECEDING IT IS TESTED,
1512 /AND IS KEPT IF IT IS A "/" OR <CR>
1514 DCA PUTPNT /AC POINTS TO BEGINNING OF AREA TO BE SQUISHED
1515 TAD PUTPNT /SAVE THE POINTER
1519 DCA GETPNT /TEST LAST CHAR OF STUFF TO BE SQUISHED
1521 ISIT /IS IT "/", OR <CR>?
1523 BCLSQ1, GETCHR;BCLBUF /GET A CHAR
1524 TAD (-215 /IS IT <CR>?
1526 JMP BCLSQ3 /YES - DONE
1527 BCLSQ2, TAD CHAR /RESTORE CHAR
1528 PUTCHR;BCLBUF /PUT THE CHAR IN THE BUFFER
1529 JMP BCLSQ1 /GET ANOTHER CHAR
1530 BCLSQ3, TAD (215 /PUT A <CR>
1532 TAD OUTERR /RESTORE POINTER
1534 JMP I BCLSQU /RETURN
1537 /SEND AN ERROR MESSAGE INCLUDING PART OF THE BCL BUFFER
1538 /TO THE OUTPUT BUFFER
1539 / TAD X /POSITION OF FIRST CHAR IN BUFFER TO BE SENT
1541 / A /ADDRESS OF ERROR MESSAGE TO PRECEDE IT
1544 DCA GETPNT /SET BEGINNING OF BCL LINE TO OUTPUT
1545 TAD I OUTERR /GET ERROR MESSAGE ADDRESS
1548 OUTER1, GETCHR;BCLBUF /GET A CHARACTER
1549 ISIT /IS IT "," ,"/", OR <CR>?
1551 TAD CHAR /NO - SEND CHAR
1556 JMP I OUTERR /RETURN
1559 /TEST A CHAR AND JUMP IF IN LIST
1561 / A1 /ADDRESS OF LIST OF NEGATIVE OF CHARS
1562 / /TERMINATED BY A POSITIVE OR ZERO
1563 / A2-1 /ADDRESS -1 OF LIST OF
1564 / /TRANSFER ADDRESSES
1566 DCA ISIT1 /SAVE CHAR
1567 TAD I XISIT /GET LIST OF CHARS
1570 TAD I XISIT /GET LIST OF ADDRS - 1
1573 ISIT4, TAD I ISIT2 /GET THE NEXT CHAR
1577 JMP ISIT5 /END OF LIST SIGNALLED BY ENTRY>=0
1578 TAD ISIT1 /IS IT THE CHAR?
1580 JMP ISIT4 /NO - TRY THE NEXT
1581 TAD I ISIT3 /GET SEND ADDRESS
1592 \f/COLLECT A NAME FROM THE BUFFER
1594 / X /ADDRESS OF SPACE TO RECEIVE NAME
1595 / JMP ERR /INVALID NAME
1600 TAD I XCOLNA /ARGUMENT IS ADDRESS TO PUT NAME
1602 DCA COLPU1+2 /SAVE IT FOR USE AS PUTCHR ARG
1603 L7776 /SET NAME - EXTENSION SWITCH FOR NAME
1605 TAD (COLIS1 /SET TO COLLECT ANYTHING
1606 DCA COLIS3 /I.E. DEVICE, FILE, OR EXTENSION
1609 TAD GETPNT /SAVE POINTER TO BEGINNING OF NAME
1611 COLGE1, TAD GETPNT /SAVE POINTER TO BEGINNING OF SECTION
1613 COLGE2, GETCHR;BCLBUF /GET A CHAR
1614 ISIT /IS IT ":",".","/", "," , OR <CR>?
1618 COLDEV, JMS COLMOV;0;-4-1 /MOVE 4 CHARS TO POSITION 0
1619 ISZ COLIS3 /REMOVE ":" FROM LIST
1621 JMP COLGE1 /COLLECT NEXT PART OF NAME
1623 COLFIL, JMS COLMOV;4;-6-1 /MOVE 6 CHARS TO POSITION 4
1624 ISZ COLSW /NEXT TIME COLLECT EXTENSION
1625 TAD (COLIS1+2 /REMOVE "." FROM LIST
1629 JMP COLGE1 /COLLECT NEXT PART OF NAME
1631 COLEXT, ISZ COLSW /ARE WE COLLECTING NAME OR EXTENSION?
1633 JMS COLMOV;12;-2-1 /MOVE 2 CHARS TO POSITION 12
1635 COLEX1, JMS COLMOV;4;-6-1 /MOVE 6 CHARS TO POSITION 4
1636 COLEX2, ISZ XCOLNA /NO ERRORS
1640 TAD COLNP1 /POINT TO BEGINNING OF NAME
1641 JMS I (OUTERR /SEND IT AS ERROR MESSAGE
1643 COLEX3, TAD COLNP1 /POINT TO BEGINNING OF NAME
1644 JMS I (BCLSQU /SQUISH IT OUT
1645 JMP I XCOLNA /RETURN
1648 TAD I COLMOV /FIRST ARG IS POSITION
1651 TAD I COLMOV /SECOND ARG IS COUNT
1654 TAD CHAR /GET DELIMITER
1656 DCA COLCH1 /SAVE FOR TEST
1659 DCA COLCH2 /ANOTHER TEST
1660 TAD COLNP2 /POINT TO BEGINNING OF THIS PART
1662 COLMV1, GETCHR;BCLBUF /GET NEXT CHAR
1663 TAD COLCH1 /SUBTRACT THE DELIMITER
1665 JMP I COLMOV /DELIMITER - WE'RE DONE
1666 TAD COLCH2 /CHAR-"Z"
1668 JMP COLERR /NOT ALPHA-NUMERIC
1671 JMP COLPUT /ALPHABETIC
1674 JMP COLERR /NOT NUMERIC
1677 JMP COLERR /NOT NUMERIC
1679 ISZ COLCT1 /HAVE WE USED UP OUR COUNT?
1680 JMP COLPU1 /NO - PUT THE CHAR
1681 L7777 /YES - SET COUNTER TO SKIP
1683 JMP COLMV1 /GET NEXT CHAR
1685 PUTCHR;0 /PUT THE CHAR IN THE USER SPACE
1686 JMP COLMV1 /GET THE NEXT CHAR
1689 COLSW, 0 /FILE NAME OR EXTENSION SWITCH
1690 COLNP1, 0 /POINTER TO BEGINNING OF NAME
1691 COLNP2, 0 /POINTER TO BEGINNING OF NAME PART
1692 COLCH1, 0 /TEMP LOC FOR COLMOV
1698 TAD I XMOV6 /GET "FROM" ADDRESS
1701 TAD I XMOV6 /GET "TO" ADDRESS
1719 DCA PUTPNT /START AT BEGINNING OF BCL BUFFER
1720 JMS I (SENDKY /SEND THE KEYWORD
1721 DCA MOV61 /CLEAR THE BLANK COUNTER
1722 BCLIN5, JMS BCLIN3 /GET NEXT CARD AND PUT IT INTO BCL BUFFER
1723 JMP BCLIN7+2 /CARD NOT CONTINUED - DONE
1725 JMS I (CDRIN /READ ANOTHER CARD
1729 BCLIN6, JMS I (GETCDR /GET FIRST 8 CHARS
1730 SZA CLA /TEST FOR ZERO
1731 JMP BCLIN7 /NON-ZERO - ERROR
1734 JMP BCLIN5 /OK - PUT IT IN BUFFER
1737 DCA I (CDRFLG /SET CDRIN TO RETURN THIS CARD AGAIN
1739 TAD (215 /PUT A <CR>
1742 DCA GETPNT /SET POINTER TO BEGINNING
1743 JMP I XBCLIN /RETURN
1749 BCLIN9, JMS I (GETCDR /GET NEXT CDR CHAR
1754 JMP BCLI10 /CONTINUATION
1759 DCA XMOV6 /SAVE THE CHAR
1760 JMS BCLI14 /SEND THE BLANKS
1764 PUTCHR;BCLBUF /PUT IT
1766 TAD (-BCLSIZ^2+2 /BCL BUFFER FULL?
1768 JMP BCLI11 /FULL - ERROR
1769 BCLIN8, ISZ BCLIN4 /COUNT COLUMNS
1772 BCLI10, ISZ BCLIN3 /SKIP RETURN FOR CONTINUATION
1773 DCA MOV61 /CLEAR THE BLANK COUNTER
1775 TAD (211;OUT1 /<TAB>
1776 JMP I BCLIN3 /RETURN
1778 BCLI11, SEND;BCL11E /SEND ERROR
1780 JMS I (CDRIN /GET THE NEXT CARD
1782 JMS I (GETCDR /GET THE NEXT COLUMN
1783 DCA BCLIN4 /SAVE THIS COLUMN
1784 TAD (JOBBIT /IS THIS A $JOB CARD?
1787 JMP BCLI12 /NO - FLUSH TO $JOB
1792 JMP BCLIN7 /YES - DONE
1794 BCLI13, ISZ MOV61 /ANOTHER BLANK
1801 BCLI15, ISZ MOV61;SKP
1810 \fBCLTRA, JMP I .+1 /GO FINISH UP LAST BCL COMMAND
1811 BCLHUH /HUH? - I.E. WHICH COMMAND WAS IT?
1813 JMP I (TEXFIN /TO COPY A DECK UNTIL THE NEXT BCL
1814 /COMMAND - JMS BCLTRA+1
1816 BCLHU1, 0 /JMS HERE WITH ARG = TRANSFER ADDRESS
1817 TAD I BCLHU1 /GET TRANSFER ADDRESS
1819 TAD (BCLHUH /ON NEXT BCL CARD - NOTHING TO FINISH
1821 CIF CDF F0 /FIELD 0!
1822 JMP I BCLHU1 /GO GO GO
1826 TAD I (KEYVAL /GET KEYWORD VALUE
1828 TAD (BCLGO /USE IT TO GET TRANSFER ADDRESS
1833 TAD I (CONFLG /WAS LAST CARD CONTINUED?
1836 JMS BCLHU2 /YES - ERROR
1838 TAD I (LNCNT /DID THIS CARD HAVE A LINE NUMBER?
1841 JMP I OTEMP1 /YES - GO TO IT!
1843 JMS I (LNOUT /OUTPUT THE LINE NUMBER
1844 JMS BCLHU2 /WHAT'S IT DOING WITH A NUMBER ANYWAY?
1845 JMP I OTEMP1 /NOW WE GO.
1855 BCLEOF, JMS BCLHU1;EOF2
1858 CERR, JMS BCLHU1;KEYBAD
1862 TAD I XOUTNA /GET ADDRESS OF NAME
1865 TAD GETPNT /SAVE BUFFER INPUT POINTER
1867 DCA OUTNA3 /SET FLAG FOR NO NAME
1868 JMS OUTNA4;0;-4 /SEND 4 CHARS FROM POSITION 0
1871 JMP .+3 /NO DEVICE - NO ":"
1874 JMS OUTNA4;4;-6 /SEND 6 CHARS FROM POSITION 4
1875 TAD (12 /SET UP TO GET EXTENSION
1877 JMS OUTNA1 /GET FIRST CHAR
1878 JMP OUTNA5 /NO EXTENSION
1882 JMS OUTNA4;12;-2 /SEND 2 CHARS FROM POSITION 12
1883 OUTNA5, TAD OUTNA6 /RESTORE BUFFER INPUT POINTER
1890 TAD (-300 /IS IT NULL?
1892 JMP I OUTNA1 /YES - DONE
1893 ISZ OUTNA1 /SKIP RETURN
1896 OUTNA3, 0 /NAME PRESENT SWITCH
1899 TAD I OUTNA4 /GET CHAR POSITION
1902 TAD I OUTNA4 /GET NO OF CHARS
1905 OUTN42, JMS OUTNA1 /GET A CHAR
1906 JMP I OUTNA4 /NULL - DONE
1908 ISZ OUTNA3 /SET NAME PRESENT
1911 JMP I OUTNA4 /DONE - RETURN
1918 SZA /IF AC =0, ADDRESS IS ARG OF CALL
1920 TAD I XSEND /GET MESSAGE ADDRESS
1923 XSEND1, TAD I OTEMP1
1934 JMP I XSEND /NULL ENDS MESSAGE
1935 JMS I (XSEND3 /GET 8-BIT REPRESENTATION
1941 TAD (DECN /START CONVERSION AT 100
1944 L7775 /CONVERT 3 DIGITS
1946 ISZ NAMCNT /BUMP NAME COUNTER
1950 DCA I (TEMP5 /SAVE LEADING ZEROES
1954 TAD I MAKNAM /MOVE DEFAULT NAME TO OUTPUT AREA
1960 TAD (7 /PUT NUMBER AT POSITION 7-9
1963 JMS I (CONDEC /OUTPUT NUMBER
1964 TAD (XOUT /RESTORE OUTPUT ROUTINE
1968 JMP I MAKNAM /RETURN
1990 DCA SAV1+2 /PUT NAME IN LIST
1992 TAD (-SAVTOP /ARE WE AT TOP OF LIST?
1994 JMP I SAVNAM /YES - DON'T SAVE NAME
1996 DCA SAVPNT /ADVANCE POINTER FOR NEXT TIME
1997 TAD I SAVNAM /GET NAME TO SAVE
2003 SAVPNT, SAVARA /POINT TO SAVE AREA
2009 DCA UNSNA1+2 /POINT TO SPACE TO RECEIVE NAME
2013 JMP UNSNA2 /EMPTY - RETURN
2017 DCA UNSNA1+1 /SET ADDRESS FROM WHICH NAME WILL COME
2019 ISZ UNSNAM /SKIP RETURN UNLESS EMPTY
2030 CDECK, BCLIN /GET THE LINE
2031 OPTION;CDEOPT /ANALYZE THE OPTIONS
2033 JMP CDECK1 /NO - GET A NAME
2034 CDECK3, MOV6;CDEDEF;NAME1 /YES - MOVE DEFAULT NAME
2036 CDECK1, COLNAM;NAME1 /COLLECT A NAME
2037 JMP CDECK3 /FAIL - BAD NAME
2038 CDECK2, SEND;CDEM1 /".R PIP_*"
2039 OUTNAM;NAME1 /SEND THE NAME
2040 SEND;CDEM2 /"<BAT:_"
2041 TAD I (OPFOR /WAS "/FOR" SPECIFIED?
2043 TAD (BASKEY-FORKEY /NO - USE BASIC
2048 CDRTRA /TRANSLATE THE CARDS
2050 TAD I (OPNOL /WAS "/NOLIST" SPECIFIED?
2052 JMP I (BCLHUH /YES - DONE
2054 JMS I (PIPOUT;BATOUT /SEND NAME OF LISTING DEVICE
2056 OUTNAM;NAME1 /SEND NAME OF FILE
2066 CBAS, BCLIN /GET BCL LINE
2067 OPTION;CBAOPT /ANALYZE OPTIONS
2069 JMP CBAS2 /NO - GET NAME
2070 CBAS1, MOV6;CBATK;NAME1 /MOVE IN BAT:
2071 SEND;CBAM1 /.R PIP *PROG.BA<
2072 OUTNAM;NAME1 /SEND NAME
2074 CBAS2, COLNAM;NAME1 /COLLECT THE NAME
2075 JMP CBAS1 /FAIL - USE DEFAULT
2076 CBAS3, SEND;CBAM1 /".R PIP_*PROG.BA<"
2079 CBAS5, JMP CBAS7 /SET OR CLOBBERED IN INIT
2081 SEND;CBAM3 /'FILE #0,"DATA.DA"\FILEV #1,"'
2082 OUTNAM;BATOUT /"TTY:" OR "LPT:"
2084 CBAS7, TAD (BASKEY-15
2086 DCA I (KEYADR /SET KEYWORD LIST
2088 CDRTRA /TRANSLATE CARDS
2094 TAD I (OPNOL /WAS "/NOLIST SPECIFIED?"
2097 SEND /SEND AN EOD (MH)
2099 SEND /SEND AN .R PIP * (MH)
2101 JMS I (PIPOUT;BATOUT
2102 SEND;CBAM2 /"<PROG.BA_"
2104 DCA I (DATADR /SET "$DATA" ROUTINE
2110 / $RUN (AFTER $BASIC)
2114 OPTION;ZER6 /NO OPTIONS
2115 SEND;DATBM1 /".R PIP_*DATA.DA<BAT:_"
2116 CDRTRA /TRANSLATE THE CARDS
2117 SEND;DATBM2 /"$EOD_.R BCOMP_*PROG.BA_"
2118 TAD DATFTN /$RUN IS FORTRAN NOW
2126 / $FORTRAN (FORTRAN IV)
2129 CF4, BCLIN /GET BCL LINE
2130 OPTION;CF4OPT /ANALYZE OPTIONS
2133 CF41, JMS I (MAKNAM;NAME1 /YES - MAKE A NAME
2135 CF42, COLNAM;NAME1 /NO - COLLECT A NAME
2136 JMP CF41 /BAD NAME - MAKE ONE
2137 CF43, SEND;CF4M1 /".R PIP_*"
2138 OUTNAM;NAME1 /SEND THE NAME
2140 TAD I (OPSRC;RAL /WAS A SOURCE FILE GIVEN
2143 OUTNAM;OPSRC+1 /YES - SEND IT
2146 CF44, SEND;CF4M2 /"BAT:_"
2147 CF45, TAD (FORKEY-15 /FORTRAN CARDS
2151 CDRTRA /TRANSLATE THE CARDS
2152 SEND;CF4M3 /"$EOD_.R F4_*"
2154 TAD I (OPNOL /WAS "/NOLIST" SPECIFIED?
2156 JMP CF46 /YES - DON'T GENERATE LIST FILES
2160 SPA CLA /WAS A NAME GIVEN?
2161 JMP CF47 /YES - GET IT
2162 MOV6;BATOUT;OPLIS+1 /NO - GIVE LIST DEV
2163 CF47, OUTNAM;OPLIS+1 /SEND NAME OF LISTING FILE
2166 TAD I (OPRALF /PRODUCE RALF LISTING?
2172 DCA I (DATADR /SET "$DATA" ADDRESS
2173 JMS I (SAVNAM;NAME1 /SAVE NAME FOR "$LOAD"
2183 JMS I (CL2S /DO $LOAD STUFF
2186 OPTION;ZER6 /NO OPTIONS IF ALREADY LOADED
2189 JMS I (DATNAM /GET A NAME
2190 TAD I (NAMELD /WAS A DEVICE SPECIFIED?
2193 TAD (0423 /NO - USE "DSK"
2197 DATL21, SEND;DTF2M1 /".RUN "
2200 CDRTRA /WITH GENIOX, INPUT IS FROM BATCH STREAM
2202 TAD DATFTN /$DATA IS NOW FORTRAN
2211 / $LOAD (FORTRAN IV)
2214 /THIS SUBROUTINE IS USED WITH EITHER A $LOAD OR $RUN
2216 OPTION;CL4OPT /ANALYZE OPTIONS
2217 SEND;CL4SM1 /".R LOAD_*"
2218 TAD I (OPIMAG /WAS "/IMAGE" FILE SPECIFIED
2222 MOV6;OPIMAG+1;NAMELD /YES - MOVE NAME
2224 CL4S1, MOV6;CL4DEF;NAMELD /USE DEFAULT NAME
2225 CL4S2, OUTNAM;NAMELD /SEND THE NAME OF THE IMAGE FILE
2226 TAD I (OPLIS /WAS "/LIST" FILE GIVEN?
2235 CL4S4, TAD I (OPSSYM /LIST SYSTEM SYMBOLS?
2239 CL4S11, SEND;CL4SM2 /"<_*"
2240 TAD I (OPLIB;RAL /WAS "/LIBRARY" FILE SPECIFIED?
2243 OUTNAM;OPLIB+1 /SEND NAME OF LIBRARY
2245 CL4S5, TAD I (OPNOA /WAS "/NOAUTO" SPECIFIED?
2247 JMP CL4S7 /YES - DON'T BOTHER WITH SAVED NAMES
2248 CL4S6, JMS I (UNSNAM;NAME1 /GET A SAVED NAME
2249 JMP CL4S7 /OUT OF NAMES
2250 OUTNAM;NAME1 /SEND IT
2253 CL4S7, TSTCR;SKP /END OF LINE?
2255 GETCHR;BCLBUF /GET NEXT CHARACTER
2262 ISIT;CLIS1;CLIS2-1 /IS IT "L" OR "O"
2264 TAD GETPNT /BACK UP 2
2268 OUTNAM;NAME1 /SEND THE NAME
2271 CL4SL, SEND;CL4SM5 /"/O"
2272 CL4SO, SEND;CL4SM6 /"_*"
2277 CL4S10, SEND;CL4SM7 /"$_"
2283 CL4, BCLIN /GET THE LINE
2284 JMS CL4S /ANALYZE IT
2285 TAD (DATL4 /SET "$DATA" ADDRESS
2287 JMS I (BCLHU1;TEXFIN
2294 / $RUN (FORTRAN IV) - FORMERLY CALLED $DATA
2297 /THIS SUBROUTINE IS CALLED FROM DATF4 - THE REAL $RUN PROCESSOR
2299 TAD (-12^7 /ZERO OUT CONTROL WORD
2300 DCA DEVASC /FOR EACH DEVICE NUMBER
2306 BCLIN /GET THE INPUT LINE
2307 DAT41, GETCHR;BCLBUF /GET A CHAR
2308 DAT411, ISIT;OPTIS3;DATIS1-1 /IS IT "/" OR <CR>?
2311 TAD GETPNT /SAVE POINTER TO "/"
2315 JMP DAT411 /IT'S NOT A NUMBER
2323 TAD DEVASC /NUMBER*7
2326 DAT47, GETCHR;BCLBUF /GET ANOTHER CHAR
2327 ISIT;DATIS2;DATIS3-1 /IS IT "N","C", OR "="?
2329 DAT44, TAD I DEVASC /"N" SETS BIT 1
2334 DAT45, TAD I DEVASC /"C" SETS BIT 2
2339 DAT46, TAD GETPNT /SAVE POINTER TO POSSIBLE NAME
2341 GETCHR;BCLBUF /GET THE NEXT CHAR
2343 JMP DAT48 /NOT A NUMBER
2344 TAD CHAR /SAVE THE NUMBER
2347 ISIT;DATIS4;DATIS5-1 /IS IT "," "/" OR <CR>?
2348 DAT48, TAD DEVASP /RESET NAME POINTER
2350 TAD I DEVASC /ZERO OUT NUMBER
2353 TAD DEVASC;IAC /GET POINTER TO DEVICE BLOCK
2355 COLNAM;0 /COLLECT NAME
2357 DAT412, TAD I DEVASC /NAME OR NUM OK - SET BIT 0
2361 DAT49, TAD DEVAST /SQUISH
2364 DAT410, TAD I DEVASC /ADD NUMBER TO CONTROL WORD
2378 /SEND A NAME AND SEND /T OPTION IF DEVICE IS TTY:
2380 TAD I PIPOUT /GET ADDRESS OF NAME
2385 TAD I PIPPNT /GET CHAR OF DEVICE
2386 TAD (-2424 /IS IT "TT"?
2391 TAD (-3100 /IS IT "Y@"?
2399 \f/$RUN (FORTRAN IV)
2400 DATF4, JMS I (DAT4 /PROCESS DEVICE NUMBER STUFF
2401 JMS I (CL4S /DO LOAD STUFF
2404 OPTION;ZER6 /NO OPTIONS
2406 DATX4, JMS I (DAT4 /DO DEVICE NUMBER STUFF
2407 JMS DATNAM /COLLECT A NAME
2408 DATL46, SEND;DTF4M1 /".R PIP_*DATA.DA<BAT:_"
2409 CDRTRA /TRANSLATE CARDS
2410 SEND;DTF4M2 /"$EOD_.R FRTS_*"
2411 OUTNAM;NAMELD /SEND LOADER NAME
2412 DATL48, JMP DATL49 /ZEROED OR CREATED IN INIT
2413 SEND;DTF4M6 /"_*DATA.DA/4_*"
2417 DATL49, SEND;DTF4M8 /"_*/5=4"
2418 DTL410, SEND;DTF4M3 /"_*"
2419 TAD (-12 /TRANSLATE THE DEVICE NUMBERS
2427 SMA CLA /WAS THIS ONE SPECIFIED?
2430 AND (377 /WAS IT A NUMBER?
2433 DCA CHAR /YES - SAVE IT
2437 DATL42, TAD DATF4P;IAC /POINT TO NAME
2440 DATL43, TAD I DATF4P /"N"?
2445 DATL44, TAD I DATF4P /"C"?
2450 DATL45, TAD ("/;OUT1
2457 TAD DATFTN /"$DATA" IS NOW FORTRAN
2466 OPTION;ZER6 /NO OPTIONS
2467 TSTCR;SKP /IS THERE A NAME?
2469 COLNAM;NAMELD /YES - COLLECT IT
2470 JMP DATNO /INVALID NAME
2471 JMP I DATNAM /RETURN
2472 DATNO, SEND;DATNO1 /"?NO PROGRAM TO RUN_"
2473 JMS I (BCLHU1;TEXFIN
2479 / $FORTRAN (FORTRAN II)
2483 OPTION;CF2OPT /ANALYZE OPTIONS
2486 CF21, JMS I (MAKNAM;NAME1 /CREATE A NAME
2488 CF22, COLNAM;NAME1 /COLLECT A NAME
2489 JMP CF21 /FAIL - CREATE A NAME
2490 CF23, SEND;CF2M1 /".R PIP_*"
2493 TAD I (OPSRC;RAL /WAS A SOURCE FILE GIVEN?
2499 CF24, SEND;CF2M2 /"BAT:_"
2500 CF25, TAD (FORKEY-15 /FORTRAN CARDS
2504 CDRTRA /TRANSLATE THE CARDS
2506 TAD I (OPNOL /WAS "/NOLIST" SPECIFIED?
2510 TAD I (OPLIS;RAL /WAS A LISTING FILE GIVEN?
2513 MOV6;BATOUT;OPLIS+1 /NO - USE LISTING DEVICE
2514 CF26, JMS I (PIPOUT;OPLIS+1
2517 CF27, SEND;CF2M5 /"_.R FORT_*"
2519 TAD I (OPNOL /NOLIST?
2522 TAD I (OPSABR /WAS "/SABR" SPECIFIED?
2531 DCA I (DATADR /ENABLE $DATA
2532 JMS I (SAVNAM;NAME1 /SAVE THE NAME FOR $LOAD
2544 JMS SENDKY /OUTPUT THE BCL KEYWORD
2545 JMS I (BCLHU1;TEXTRA
2552 CJOB, TAD (SAVARA /RESET SAVED NAMES
2554 DCA I (NAMCNT /ZERO MAKNAM COUNTER
2555 TAD DATFTN /$RUN IS NOW FORTRAN
2557 BCLIN /SEND THE LINE TO THE BATCH STREAM
2558 SEND;MJOB1 /".R FOTP_*FIL???.*/D_"
2559 JMS I (BCLHU1;TEXFIN
2576 / $LOAD (FORTRAN II)
2579 /THIS SUBROUTINE IS CALLED BY CL2 OR DATF2
2581 OPTION;CL2OPT /ANALYZE OPTIONS
2582 SEND /".R LOADER_*" OR ".R LOADER_*GENIOX"
2583 CL2SX, CL2M1 /OR CL2M1A
2584 TAD I (OPINP /WAS "/INPUT" SPECIFIED?
2588 CL2S1, TAD I (OPOPT /WAS "/OUTPUT" SPECIFIED?
2592 CL2S2, TAD I (OPTWO /WAS "/TWO" SPECIFIED?
2596 CL2S3, SEND;CL2M6 /"_*"
2597 TAD I (OPLIB;RAL /WAS A LIBRARY SPECIFIED?
2602 CL2S4, TAD I (OPLIS /WAS "/LIST" SPECIFIED?
2605 TAD I (OPLIS;RAL /WAS A NAME GIVEN?
2609 CL2S5, OUTNAM;OPLIS+1
2611 CL2S6, TAD I (OPNOA /WAS "/NOAUTO" SPECIFIED?
2614 CL2S7, JMS I (UNSNAM;NAME1 /GET A SAVED NAME
2619 CL2S8, TSTCR;SKP /END OF LINE?
2625 CL2S9, SEND;CL2M9 /"$_.SAVE "
2626 TAD I (OPIMAG;RAL /WAS AN IMAGE FILE NAME GIVEN?
2628 JMP CL2S10 /NO - USE DEFAULT
2629 TAD I (OPIMAG+1 /WAS A DEVICE GIVEN?
2636 CL2S11, MOV6;OPIMAG+1;NAMELD
2637 CL2S12, OUTNAM;NAMELD
2641 CL2S10, MOV6;CL2SN2;NAMELD
2649 TAD (DATL2 /$DATA DOES NOT DO LOAD
2651 JMS I (BCLHU1;TEXFIN
2655 \fBCLBUF, ZBLOCK 400 /SPACE FOR A WHOLE BUNCH OF CONTINUATION CARDS
2657 SAVARA, ZBLOCK 6^62 /SPACE FOR SAVED NAMES
2660 CDEOPT, OPBAS;OPFOR;OPNOL;0 /$DECK
2661 CBAOPT, OPNOL;0 /$BASIC
2662 CF4OPT, OPSRC;OPNOL;OPLIS;OPRALF;0 /$FORTRAN (F4)
2663 CL4OPT, OPIMAG;OPLIS;OPLIB;OPNOA;OPSSYM;0 /$LOAD (F4)
2664 CF2OPT, OPSRC;OPNOL;OPLIS;OPSABR;0 /$FORTRAN (F2)
2665 CL2OPT, OPINP;OPOPT;OPTWO;OPIMAG;OPLIS;OPLIB;OPNOA;0 /$LOAD (F2)
2666 /OPTIONS WITHOUT ASSOCIATED FILE NAME
2667 OPBAS, 0004;TEXT "BASIC" /B
2668 OPFOR, 0006;TEXT "FORTRAN" /F
2669 OPNOL, 0023;TEXT "NOLIST";*.-1 /NOL
2670 OPRALF, 0003;TEXT "RALF";*.-1 /R
2671 OPNOA, 0023;TEXT "NOAUTO";*.-1 /NOA
2672 OPSSYM, 0013;TEXT "SSYMB" /SS
2673 OPSABR, 0012;TEXT "SABR";*.-1 /SA
2674 OPINP, 0013;TEXT "INPUT" /IN
2675 OPOPT, 0023;TEXT "OUTPUT";*.-1 /OUT
2676 OPTWO, 0020;TEXT "TWO" /TWO
2677 /OPTIONS WITH ASSOCIATED FILE NAME
2678 OPSRC, 1002;ZBLOCK 6;TEXT "SRC" /S
2679 OPLIS, 1003;ZBLOCK 6;TEXT "LIST";*.-1 /L
2680 OPIMAG, 1013;ZBLOCK 6;TEXT "IMAGE" /IM
2681 OPLIB, 1024;ZBLOCK 6;TEXT "LIBRARY" /LIB
2687 BATTTY, TEXT "TTY@@@@@@@@@";*.-1
2688 BATLPT, TEXT "LPT@@@@@@@@@";*.-1
2689 CDEDEF, TEXT "@@@@DECK@@@@";*.-1
2690 CBATK, TEXT "BAT@@@@@@@@@";*.-1
2691 CL4DEF, TEXT "@@@@PROG@@LD";*.-1
2692 FILNAM, TEXT "@@@@FIL@@@@@";*.-1
2693 CL2SN2, TEXT "DSK@PROG@@@@";*.-1
2694 /SPACE FOR DEVICE ASSIGNMENTS UNDER FORTRAN 4
2701 DATIS2, -"N;-"C;-"=;0
2702 DATIS3, DAT44;DAT45;DAT46
2703 DATIS5, DAT410;DAT410;DAT410
2717 /LIST MUST BE TERMINATED BY A POSITIVE WORD
2727 COLIS1, -":;-".;-"/;-",;-215
2728 /TERMINATE LIST WITH POSITIVE WORD
2738 /LIST OF BCL ROUTINE ADDRESSES
2739 BCLGO, BCLEOF /FOR FINISHING UP BEFORE CLOSING FILE
2742 DATADR, DATX4 /$DATA
2752 /LIST OF BCL KEYWORDS
2762 OPTERM, TEXT "?INVALID OPTION: /"
2763 COLERM, TEXT "?INVALID FILE SPECIFICATION - "
2764 BCL11E, TEXT "?_BCL LINE TOO LONG_"
2770 CDEM1, TEXT ".R PIP_*"
2771 CDEM2, TEXT "<BAT:_"
2773 CBAM1, TEXT ".R PIP"
2775 CBAM7, TEXT "_*PROG.BA<"
2776 CBAM2, TEXT "<PROG.BA"
2779 CBAM3, TEXT 'FILE #3:"DATA.DA"\FILEV #4:"'
2781 CBAM5, TEXT "PROG.BA,"
2785 DATBM1, TEXT ".R PIP_*DATA.DA<BAT:_"
2786 DATBM2, TEXT "$EOD_.R BCOMP_*PROG.BA_"
2789 CF4M3, TEXT "$EOD_.R F4_*"
2791 CL4SM1, TEXT ".R LOAD_*"
2804 DTF4M2, TEXT "$EOD_.R FRTS_*"
2806 DTF4M6, TEXT "_*DATA.DA/4_*"
2808 DTF4M8, TEXT "_*/5=4"
2809 DATNO1, TEXT "?NO PROGRAM TO RUN_"
2811 CF2M5, TEXT "_.R FORT_*"
2812 CL2M1, TEXT ".R LOADER_*"
2813 CL2M1A, TEXT ".R LOADER_*GENIOX"
2818 CL2M9, TEXT "$_.SAVE "
2819 DTF2M1, TEXT ".RUN "
2821 MFOR, TEXT "$FORTRAN"
2822 MJOB1, TEXT ".R FOTP_*FIL???.*/D_"