1 /3 CONCISE OS8 BATCH PROCESSOR 1-AUG-1975
11 /COPYRIGHT (C) 1975,1977 BY DIGITAL EQUIPMENT CORPORATION
22 /THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT NOTICE
23 /AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
24 /CORPORATION. DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY
25 /FOR ANY ERRORS THAT MAY APPEAR IN THIS DOCUMENT.
27 /THE SOFTWARE DESCRIBED IN THIS DOCUMENT IS FURNISHED TO THE PURCHASER
28 /UNDER A LICENSE FOR USE ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED
29 /(WITH INCLUSION OF DIGITAL'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH
30 /SYSTEM, EXCEPT AS MAY OTHERWISE BE PROVIDED IN WRITING BY DIGITAL.
32 /DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY FOR THE USE
33 /OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY
48 /BATCH IS THE INITIALIZING PROGRAM FOR THE OS/8 BATCH
49 /PROCESSING MONITOR. TO SET UP A BATCH RUN, TYPE
51 /BATCH WILL CALL THE COMMAND DECODER TO OBTAIN ITS
52 /PARAMETERS AND INPUT FILE LOCATION.
61 /E IGNORE KMON, CD, AND CCL ERRORS
62 /H HUSH (SUPPRESSES $JOB, #END, AND ECHOING)
63 /P BATCH FROM PAPER TAPE
64 /Q QUIET - NO BATCH LOG
65 /T FORCE BATCH LOG TO TELETYPE
67 /6 USE 026 CARD CODES (ONLY IF /C)
70 /MAINTENANCE RELEASE CHANGES BY S.R. ON 1-AUG-75:
72 /1. CHANGED VERSION NUMBER TO 6
73 /2. INCORPORATED V5A PATCH SEQ # 1 APR-75 DSN
74 / ALLOWS BATCH TO PASS ALTMODE TO KBM
75 /3. INCORPORATED V5B PATCH SEQ #2 17-JULY-75 WSN
76 / SLOWS BATCH DOWN WHEN READING FROM CARDS
77 /4. ALLOW BATCH TO IGNORE NULLS FROM BATCH STREAM
78 / (PATCH TO BE PUBLISHED IN DSN.)
79 /5. SET BATCH SO THAT IT RESTORES OLD SOFTWARE CORESIZE
80 / UPON NORMAL TERMINATION.
82 /CHANGES BY S.R. ON 3-FEB-77:
84 /1. ADDED HUSH SWITCH (/H)
85 /2. SAVED REST OF 7777 AROUND BATCH
86 /3. FIXED BUG CONCERNING MANUAL HELP NEEDED
87 /4. ALLOWED CORE IMAGE TO BE PRESERVED AFTER BATCH TERMINATION
88 \f/SYSTEM DEPENDENT PARAMETERS
90 AMFLAG=17 /ALTMODE FLAG FOR KBM
91 CDREC=51 /COMMAND DECODER
92 KMREC=7 /KEYBOARD MONITOR
94 JSW=7746 /JOB STATUS WORD
95 DCB=7760 /DEVICE CONTROL BLOCK
97 MTHREE=CLA CLL CMA RTL
100 /********************************************
105 BATCH=35 /REFERS TO KEYBOARD MONITOR!!!!!!!
106 BCHGO=46 /THEY MUST!!!!! BE CORRECT!!!!!!
107 CBATCH=4562 /CONTENTS OF LOC "BATCH" IN KEYBOARD MONITOR
108 /*******************************************
110 CDBEGLN=1200 /CD BUFFER AREA
111 ANALYZ=202 /CD ANALYSIS
112 TYPE=1367 /ERROR OUTPUT ROUTINE
114 TT=21 /THESE REFER TO CD ASSEMBLY***VOLATILE***
115 DVICE=43 /IF CD OR MAIN OS/8 ASSEMBLY CHANGES,
116 DEFALT=42 /V3D NOT NEEDED
117 LKUPSW=245 /V3D IF CONTENTS=0, IN SPECIAL MODE
118 OUTSW=41 /THESE VALUES MUST BE ALTERED ALSO.
122 /********************************************
126 RCRA=6632 /CARD READER IOT'S
131 /*****************************
132 \f/BATCH USES CERTAIN SYSTEM WORDS AS FLAGS AND STATUS
133 /INDICATORS. THEY ARE:
135 /LOC. 07777. THIS IS USED AS THE BATCH IN PROGRESS FLAG.
136 /BIT 1 IS BATCH IN PROGRESS. (BIP) =1 MEANS BATCH IS ON
137 /BITS 6-8 HOLD THE FIELD WHERE BATCH IS SITTING
138 /BIT 10 IS USED BY BAT: TO SIGNAL IT HAS READ A DOLLAR SIGN
139 /BIT 11 IS USED BY THE COMMAND DECODER TO SIGNAL BATCH NOT THERE
141 /THE JOB STATUS WORD USES BIT 3 AS AN INDICATOR AS TO
142 /WHETHER THE BATCH MONITOR IS CURRENTLY IN CORE. =1 MEANS
143 /THAT THE BATCH SYSTEM NEED NOT BE RE-READ.
145 /BOSSW IS A FLAG WORD INTERNAL TO THE BATCH MONITOR.
146 /IT IS SET UP DURING BATCH INITIALIZATION.
147 /BIT 0: 1 IF USE OF PTR IS PROHOBITED DURING RUN
148 /BIT 1: 1 IF LPT OR TTY LISTINGS ARE TO BE SPOOLED
149 /BIT 2: 1 IF KMON AND CD ERRORS ARE NON-FATAL
150 /BIT 10: 1 IF LP08 IS OUTPUT DEVICE
151 /BIT 11: 1 IF OPERATOR IS NOT PRESENT
153 /IF SYS IS INPUT, LOCATIONS 7774 AND 7775 IN THE TOP FIELD
154 /ARE USED AS POINTERS TO THE CORRECT DATA BLOCK ON THE
155 /SYSTEM DEVICE. THE BUFFER IS RE-READ WHENEVER THE
156 /BATCH MONITOR MUST BE RE-READ.
158 SPLNUM= 7776 /SPOOL SEQUENCE NUMBER
159 SYCNT= 7775 /CHARACTER COUNT IN BUFFER
160 SYBLKN= 7774 /SYSTEM DEVICE BLOCK NUMBER
162 /IF SPOOLING IS USED, LOC. N7776 IS USED TO HOLD THE
165 /BATCH INITIALIZER PAGE 0
172 BOSCTL, 1101 /CONTROL WORD TO READ/WRITE BOS
174 TOPCDF, HLT /CDF TO TOP FIELD
180 JMP BCHAIN /IF CHAINED TO
181 JMS I (GETCOR /DETERMINE CORE SIZE; PUT IN 7777
185 0211 /.BI ASSUMED EXT
187 BCHAIN, JMS I (GETCOR
191 AND (4 /GET /V SWITCH
195 VERMSG /PRINT BATCH VERSION NUMBER
198 DCA T1 /GET STARTING BLOCK
201 JMP NOTSYS /NO FILE - BATCH FROM PTR OR CDR
203 TAD (MPARAM+3 /POINT INTO HANDLER TABLE
207 TAD [200 /IS THE DEVICE SYS OR CORESIDENT WITH SYS?
210 TAD I T2 /GET DEVICE HANDLER ENTRY POINT
212 DCA I (SYSINH /STORE AS BATCH INPUT HANDLER
217 DCA I (SYCNT /SET UP PARAMETERS FOR INPUT FILE
220 JMP STODEV /INPUT DEV = SYS
222 NOTSYS, TAD I (MPARAM
223 RTL /GET C FLAG IN SIGN BIT
226 JMS I (CHANGE /SET 026/029 CARD CODE
228 JMP STODEV /INPUT DEV = CDR
229 \fNOTCDR, TAD I [MPARAM+1
233 JMP BATASK /NO INPUT SPECIFIED
235 DCA I [BOSSW /PTR INPUT FLAG
237 STODEV, JMS I (MVINSB /MOVE THE PROPER ROUTINE INTO THE BATCH MONITOR
241 AND (210 /GET /Q AND /U SWITCHES
246 ISZ I [BOSSW /SET UNATTENDED BIT IF /U SPECIFIED
249 TAD (NULOUT-TTYOUT /EIGHTY-SIX THE BATCH LOG
250 JMP NOLPT/SET LPT MODE SO $MSG WILL ECHO
251 JMS I (LPTTST /DO WE HAVE AN LP, LS, OR LV LINE PRINTER?
256 AND (20 /CHECK /T SWITCH
258 SZL CLA /SKIP IF /T SPECIFIED
261 DCA I (OUTPUT /SET OUTPUT DEVICE TO TTY OR LPT OR NULOUT
264 DCA I [BOSSW /AND SET FLAG
269 JMP I (CONT /NO SPOOLING
279 \fINDERR, JMS I [MESSG
290 CONT, JMS I (EOPTN /CHECK FOR /E SWITCH
291 TAD (BATPTR /SET POINTER TO BATCH.SV
293 CLA IAC /DO LOOKUP ON SYS
298 0 /WHO CARES ABOUT THE LENGTH?
299 JMP NOBACH /BATCH FILE NOT FOUND
300 TAD I K7777 /PUT IN FIELD OF BOS
305 JMS I [SYS /READ AND ALTER KEYBOARD MON.
309 JMS I [VERTST /GET VERSION OF MONITOR
317 DCA BOSREC /WE WILL RE-WRITE BOS LATER
318 TAD BOSREC /ALTER KEYBOARD MONITOR
319 DCA I (BUFFER+BATCH+3 /RECORD #
321 AND (70 /ALTER CONTROL WORD
323 DCA I (BUFFER+BATCH+1
325 DCA I (BUFFER+BATCH+2
328 DCA I (BCHGO+BUFFER /JMP TO CORRECT FIELD
329 TAD (BOS /START ADD. OF MONITOR
330 DCA I (BCHGO+BUFFER+2 /ENTRY POINT
331 TAD (4200 /RE-WRITE KEYBD. MON.
335 TAD (201 /READ IN COMMAND DECODER
337 BUFFER /AND INSERT BOS RECORD
339 TAD CDFBOS /NOW FILL IN THE COMMAND DECODER
342 DCA I (DVICE+BUFFER /ALLOW CD TO CHECK BATCH VALIDITY
344 CIA /STORE COMPLEMENT ALSO
346 CLL CML RTL /CREATE CIF CDF BATCH
352 JMS I [SYS /RE WRITE CD.
355 JMS I (SETH /SET HUSH IF /H SPECIFIED
358 JMS I [SYS /INPUT POINTERS SET UP.
361 CLA CLL CML RTR /BATCH IN PROGRESS
365 DCA I (DOLFLG /SET FOR INITIAL $JOB
366 JMS I (MOVE /PUT IMAGE OF BOS INTO HIGH CORE
371 TAD (0160 /SET SPOOL FILENAME TO BTCHA0
377 NOBACH, JMS I [MESSG /BATCH.SV NOT THERE
384 \fMESSG, 0 /MESSAGE PRINTING ROUTINE
387 JMS I [CRLF /GENERATE CARRIAGE RET., LINE FEED
388 TAD I MESSG /ADDRESS OF ERROR MESSAGE
389 ISZ MESSG /POINT TO RETURN
391 MCONT, TAD I TEMP /GET TEXT CHARACTERS IN AC
397 JMS PCHAR /SECOND OF TWO.
398 ISZ TEMP /NEXT TEXT WORD
401 PCHAR, 0 /ROUTINE TO UNPACK AND PRINT TEXT
403 SNA /0 TERMINATES THE LIST
404 JMP MSGXIT /UNCLEAN RETURN, BUT WHO CARES?
405 TAD (-37 /SEPARATE DIGITS FROM ALPHAS
407 JMP PCRLF /_ IS SPECIAL CHAR
409 TAD (100 /MAKE IT ALPHABETIC
420 GETCOR, 0 /ONCE ONLY ROUTINE TO DETERMINE CORE SIZE
421 TAD I (7777 /GET CORE-SIZE WORD
422 RTL /PUT BATCH IN-PROGRESS BIT IN LINK
423 SZL CLA /ARE WE RUNNING BATCH FROM A BATCH JOB?
424 JMP .+3 /YES, DON'T TOUCH ORIGINAL CORE SIZE
425 TAD I (7777 /NO, GET OLD SOFTWARE CORE SIZE
426 DCA I (OLDCOR /SAVE CURRENT SOFTWARE CORE SIZE
427 TAD I (7777 /GET BATCH CTL WD
428 AND (70 /IT MIGHT ALREADY CONTAIN THE ANSWER
457 CLL RTL /STORE HIGHEST FIELD # INTO 7777
461 TAD (-10 /TEST FOR AT LEAST 12 K
464 TAD (-60 /LIMIT TO FIELD 6, SO AS NOT
465 SNA CLA /TO DISTURB ROM IN F. 7
488 INCOR, 0 /INCLUSIVE OR ROUTINE. USE THE
490 TAD I INCOR /A .OR. B= .NOT. A .AND. B +A
500 \fPTR, 0 /HI SPEED READER HANDLER
501 RDF /** MOVED TO 5400 IN BATCH FIELD **
504 JMS I PTRDOL /CHECK FOR $ INSERTION
511 TAD PTR200 /FORCE PARITY ON
522 JMP PTM2 /TIMES OUT IN 16 MS.
527 \f/SYS PERFORMS I/O TO SYSTEM DEVICE. THE CALLING SEQUENCE
528 /CONFORMS TO THAT OF THE STANDARD OS/8 CALL SEQUENCE, EXCEPT
529 /THAT WE HAVE ONE ERROR RETURN FROM THE ROUTINE, NOT A LOT
530 /OF SEPARATE ERROR RETURNS.
533 DCA SYCTL /AC HAD CONTROL WORD
535 DCA SYBUFF /BUFFER FOR TRANSFER
538 DCA SYREC /RECORD OF TRANSFER
551 BATPTR, FILENAME BATCH.SV
552 \fCHANGE, 0 /ROUTINE TO ALTER CARD TABLE
556 AND (10 /GET /6 SWITCH
557 SZA CLA /IF IT IS SPECIFIED,
558 TAD (C026-C029 /USE DEC 026 CARD CODES,
559 TAD (C029 /OTHERWISE USE DEC 029 CODES
560 DCA XR1 /ADDDRESS OF CORRECT LIST
562 DCA XR2 /THE LOCS. THAT GET ALTERED
564 DCA COUNT /13 ENTRIES.
568 DCA I CHPTR /ALTER TABLE IN MONITOR.
574 CLST, CDT+5 /ADDRESSES OF CARD CONVERSION LOCS.
589 7735 /CODES FOR 026 CARDS
591 0774;3314;1002;0305;3204;1273;3606;1341;3716;1175
595 3203;4007;3502;7514;0577;3637;0104;1211;3374;0641;7316;3410
600 TAD I (MPARAM /LOOK AT A-L SWITCHES
601 AND (20 /IN PARTICULAR, LOOK AT /H BIT
603 DCA I (HUSH /SAVE THIS BIT
607 \fBILEN= 0 /INITIALIZE MAX INPUT ROUTINE LENGTH
609 SYSIN, 0 /INPUT FROM SYSTEM DEVICE
610 RDF /** MOVED INTO 5400 IN BATCH FIELD **
613 SYSIN4, JMS I SYSDOL /CHECK FOR $ INSERTION
615 TAD BLOK /RE-READ BUFFER?
617 JMP SYGETC /NO. STILL THERE
621 IOSYS, DCA SYCHCN /RESTORE CHARACTER COUNT
623 JMS I SYSINH /READ THE BLOCK
628 TAD BTBUF /SET BUFFER POINTER.
629 DCA WPTR /NOW DETERMINE FROM COUNT WHICH WORD
630 TAD SYS601 /WAS INTERRUPTED. WHEN AC GOES NEG.,
631 TAD SYCHCN /WE ARE AT PROPER 2 WORD GROUP.
632 GWDLP, TAD SYSM3 /THEN WE FORM A JMP TO CORRECT WORD
635 ISZ WPTR /SKIP 2 WORDS
638 GEWD, TAD SYS3 /FORM A JMP CHARX, X=1,2,3
640 DCA JMPCH /SET UNPACK SWITCH
641 SYGETC, ISZ JMPCH /NORMAL CHAR. FETCH
642 ISZ SYCHCN /NEED NEW BLOCK?
643 JMPDOT, JMP JMPCH /NO
644 ISZ BLOK /YES. NEXT BLOCK
647 JMPCH, JMP JMPCH /3 WAY SWITCH
648 JMP ICHAR1 /FIRST OF 3
651 DCA JMPCH /RESET 3 WAY SWITCH
653 TAD I WPTR /NOTE THAT WE CAN'T DESTROY WPTR BY
654 AND SY7400 /BY DOING ISZ'S UNTIL THE 3RD CHAR.
655 CLL RTR /THAT IS BECAUSE IF WE ARE BROKEN
656 RTR /UP, WE CAN ONLY POINT TO THE 2 WORD
657 DCA SYTEMP /GROUP AS A WHOLE.
665 ISZ WPTR /BUMP TO NEXT GROUP
669 DCA SYTEMP /THIRD CHAR NEEDS WPTR!
677 TAD SYTEMP /CHECK FOR ^Z
679 / JMP SYSISZ /RETURN NULL AS NULL
683 TAD SYEXT /^Z. DISABLE INPUT
688 SYSRET, HLT /CDF CIF RETURN FIELD
697 SYSINH, 0 /GETS ADDRESS OF INPUT HANDLER (7607 OR CO-RES)
711 IFZERO .-SYSIN-BILEN&4000 <BILEN=.+1-SYSIN>
713 \f/CARD READER HANDLER. BUFFERS AN ENTIRE CARD IN THE LINE BUFFER.
714 /ON END OF CARD, WE CAST OUT EXTRANEOUS SPACES IN THE BUFFER
720 JMS I CDRDOL /CHECK FOR $ INSERTION
722 ISZ CHCNT /STILL CHARACTERS IN BUFFER?
725 DCA CDRPTR /NO. READ A NEW CARD
730 RDCOLM, RCSF /WAIT FOR DATA
731 JMP EOC /AND CHECK FOR END OF CARD
733 CLL RAR /TRANSLATE INTERNAL INTO ASCII
744 ISZ CHCNT /CAN'T SKIP
745 EOC, RCSD /CARD DONE?
746 JMP TIME /NO - CHECK TIMEOUT
747 TAD CHCNT /GET REAL NUMBER OF CHARACTERS
755 CDCR, TAD CDR215 /INSERT END OF LINE MARKER
762 CDXIT, RCRD /CLEAR CARD DONE FLAG
766 SPCIG, CLA CMA /BACK UP ONE CHAR
769 ISZ CHCNT /IF SKIP, IT'S A BLANK LINE
773 TIME, AND I 0 /CHECK TIME OUT - FIRST DELAY A WHILE
775 DCA TIME /TIME OUT A LOT
781 JMP NEWCRD /CARD HUNG - WAIT FOR READER READY
796 IFZERO .-CDR-BILEN&4000 <BILEN=.+1-CDR>
797 \f/*** THIS CAUSES BUGS TO RTS/8 BECAUSE IT OUTPUTS TO LPT!
799 LPTTST, 0 /SKIP IF BATCH-TYPE LINE PRINTER AVAILABLE
801 PCLS /PRINT AN INNOCUOUS BLANK
804 AND I 0 /FLAG COMES UP IN UNDER 10 MICROSECONDS
807 JMP I LPTTST /NO WAY!
808 CLA IAC /DON'T BE FOOLED - COULD STILL BE AN ANALEX
809 6654 /LOAD ANALEX BUFFER
811 JMP ANALEX /IF IOT CLEARED AC, ITS AN ANALEX
813 PCLS /CLEAR LINE BUFFER BY PRINTING CR
818 JMP I LPTTST /TAKE SKIP RETURN
820 ANALEX, 6652 /CLEAR FLAGS
822 JMP I LPTTST /TAKE NO LPT RETURN
824 \fNBATCH, TEXT /BATCH.SV NOT FOUND ON SYS:/
825 COR8, TEXT /INSUFFICIENT CORE FOR BATCH RUN/
826 BADMON, TEXT /WRONG OS8 MONITOR/
827 NODEV, TEXT /DEV NOT IMPLEMENTED_/
828 SPLERR, TEXT /ILLEGAL SPOOL DEVICE_/
829 VERMSG, TEXT /BATCH /
834 TAD I (BUFFER+BATCH /SHOULD BE 4562 IN V3
843 DCA XR1 /ADDR OF INPUT ROUTINE
844 TAD (BATIN-1 /ADDR OF PLACE IN BATCH MONITOR
851 JMP .-3 /MOVE ROUTINE UP
855 EOPTN, 0 /CHECK FOR /E OPTION
859 AND (200 /ISOLATE E SWITCH
863 JMS I (INCOR /OR 1000 INTO BOSSW
869 \f FIELD 0 /DUMP PAGE 0 LITERALS HERE
870 \f *ORIGIN /THIS CODE ACTUALLY EXECUTES IN TOP FIELD!
872 BATIN, ZBLOCK BILEN /BATCH INPUT ROUTINE GOES HERE
876 JMP BKILL /SUPPRESS #END WHEN HUSHED
882 DCA I (7700 /ALLOWS CORE IMAGE TO BE PRESERVED ACROSS BATCH
885 SETJSW, 0 /ROUTINE TO SET JOB
886 TAD (7377 /STATUS WORD TO INDICATE THAT
887 CDF 0 /BATCH IS STILL IN CORE
891 JMS I (CDFRST /RESTORE TRUE DATA FIELD
895 \f/THIS IS THE ACTUAL BATCH MONITOR. THIS ENTRY IS FOR THE
896 /INTERFACE WITH THE KEYBOARD MONITOR.
898 BATVFY, 2214 /** THIS LOCATION IS VERIFIED BY BAT: **
900 BOS, CDF 0 /SEE IF CD FOUND AN ERROR
901 TAD I (7777 /IF BIT 11 SET, IT DID.
904 TAD I (7777 /RESTORE IT.
907 JMS I (CDFRST /RESTORE DATA FIELD
910 JMS I (KMLINK /LINK I/O OF BOS AND K.M.
912 DCA BOUTDV /SET MESSAGES
913 JMS I (GLINE /READ LINE OF INPUT
916 JMP BOSRE /DON'T ECHO LINES WHEN HUSHED
921 TAD (-"J /DON'T ECHO $JOB CARD HERE
926 JMS I (ECHO /BUT ECHO ANY OTHER LINE
927 BOSRE, TAD I (LINBUF /ENTER HERE FROM CD IF KM COMMAND SEEN
928 DCA I (BNAM /GET THE FIRST CHAR ON THE LINE
929 TAD DOLFLG /DO WE NEED $?
931 JMP I (NXPRG /NO. LOOK FOR . OR /
932 TAD I (BNAM /SEE IF WE HAVE IT
936 JMP I (KMDOLR /SEE IF IT'S $JOB
941 \f/HERE TO ECHO $JOB CARD
945 JMP HUSH2 /DON'T ECHO $JOB WHEN HUSHED
949 CLL RTR /ECHO A PAGE OF $JOBS TO LPT ONLY
950 SNL CLA /IS LPT OUTPUT?
955 JMS OUTCHR /SPACE DOWN TO MIDDLE OF PAGE
957 JMP .-3 /REPLACE NEXT THREE LOCS IF CENTRONIX PRINTER:
960 JMS I (ECHO /JMS OUTCHR /PRINT LARGE CHARS
964 JMS I (ECHOT /PUT $JOB TO TTY IF NEEDED
969 GETDOL, 0 /ROUTINE TO PUT BACK ANY $ READ BY BAT:
971 TAD I (7777 /GET BATCH CONTROL WORD
974 JMP GOTDOL /ITS ON - MUST PUT IN A $
975 JMS I (CDFRST /NO - SET DF TO THIS FIELD
977 JMP I GETDOL /TAKE SKIP RETURJ
978 GOTDOL, CLL STA RTL /7775
980 DCA I (7777 /REMOVE THE BIT
982 JMP I GETDOL /TAKE NON-SKIP RETURN WITH $ IN AC
983 \fGETCOM, JMS I (MOVE
984 -112 /PUT BUFFER INTO KEYBOARD MON.
988 TAD I (AMODE /V3C GET BATCH ALTMODE FLAG
990 STL RAL /SET KBM ALTMODE FLAG IF NECESSARY
992 DCA I (AMFLAG /IT'S IN FIELD 0
993 JMP I .+1 /AND GO PROCESS IT
1003 DOLFLG, 0 /$ SLEW FLAG - NEGATIVE IF SLEW
1004 HUSH, 0 /NON-0 MEANS HUSHED (/H)
1006 \fBOSSW, 0 /BATCH STATUS FLAG.
1008 TAD I (DOLFLG /IF $JOB SLEW SET, DON'T PAUSE
1011 TAD BOSSW /NO ECHO IF TTY IS OUTPUT
1015 TAD BOSSW /IS OPERATOR AVAILABLE?
1018 JMP I MSG /NO. CONTINUE
1025 TESTB, 0 /TEST ROUTINE. TEST LIST AGAINST BNAM
1027 DCA PRMESG /# ELEMENTS IN LIST
1028 TSTB2, ISZ TESTB /POINT TO ELEMENT
1031 TAD I (BNAM /TEST IT
1037 JMP I TESTB /NO MATCH
1042 OLDCOR, 0 /V3C HOLDS OLD SOFTWARE CORE SIZE WORD
1043 /MUST HAVE ADDRESS .GT. 6000
1044 \fPRMESG, 0 /MESSAGE PRINTER
1045 DCA TESTB /SET FOR NO SKIP ON ISZ
1046 TAD I PRMESG /INDEX INTO MESSAGE LIST
1049 TAD ("# /BATCH ERROR SIGNAL
1051 PRMSG2, TAD I PRTEMP
1057 JMP PRMSG2 /CYCLE UNTIL A 0
1061 JMP PRTTY /COULD BE OPTIMIZED
1070 ISZ TESTB /PUT IT ON TTY, TOO
1071 CLA CLL CML RTL /+2 SKIPPED IF SECOND TIME THROUGH
1072 AND BOSSW /SEE IF LP08 IS OUTPUT
1074 JMP PRMOUT /ALREADY ON TTY
1075 AND TESTB /CALL WITH AC=1 MEANS NO TTY OUTPUT
1079 DCA I (BOUTDV /SET TTY
1080 CLA CMA /SET TESTB TO SKIP
1082 PRMOUT, TAD I (OUTPUT /RESTORE OUTPUT
1084 ISZ PRMESG /SKIP ARGUMENT
1086 \fKMLINK, 0 /LINK BATCH AND KEYBOARD I/O.
1088 TAD BCDIF0 /SETUP A JUMP IN KEYBOARD.
1090 TAD KMLST /AND ANOTHER FOR PRINT ROUTINE
1092 JMS I (MOVE /PUT NEW CODE INTO KEYBOARD
1096 PRINT+1 /THIS IS OUTPUT LINK
1097 JMS I (MOVE /NOW INPUT LINK.
1104 /** NEXT 3 WORDS LOAD INTO "PRINT+1" IN KEYBOARD MONITOR **
1106 KMLST, CIF CDF 0 /ALTERED AT RUN-TIME
1107 PRINT+3&177+5600 /ALLOWS TALKING THRU BATCH
1110 /** NEXT 3 WORDS LOAD INTO "XGLINE+1" IN KEYBOARD MONITOR **
1113 XGLINE+3&177+5600 /"JMP I .+1"
1118 \fNXPRG, JMS TESTB /SEE IF WE HAVE . OR /
1123 -"*;BOSSB /ERRONEOUS CD CARD.
1126 \fGLINE, 0 /LINE COLLECTION ROUTINE
1129 GET, JMS I (BATIN /GO TO SPECIFIED INPUT DEVICE
1130 JMP EOF /TIME-OUT OR FATAL
1132 JMS I (TESTB /TEST FOR SPECIAL CHARS.
1135 -212;GET /IGNORE LINE FEEDS.
1136 -214;GET /IGNORE FORM FEEDS
1137 -337;BKAROW /CD DOESN'T LIKE _, ONLY <
1138 -200;GET /IGNORE BLANKS (NULLS) V3C
1145 TAD (-LINBUF-110 /OVERFLOW BUFFER?
1148 CARROT, TAD I GLPTR /GET LAST CHAR INPUT
1154 NALTMD, ISZ GLPTR /BUMP TO NEXT CHAR IF NO ALTMODE
1155 DCA AMODE /STORE ALTMODE FLAG
1156 DCA I GLPTR /CLEAR END CHAR IN BUFFER
1158 SNA CLA /WAS LINE NULL?
1159 JMP GLINE+1 /YES - IGNORE
1162 EOF, KCC /HANG ON INPUT ACTION
1163 JMS I (PRMESG /INDICATE FAILURE
1165 JMS I (TTY /WAIT FOR INPUT
1170 \f/DOLRD INTERPRETS $ CARDS
1173 TAD (LINBUF /GET THE NAME OF THE $ COMMAND
1179 JMP NOCMD /FUNNY..NOTHING THERE!
1180 TAD (-240 /IGNORE LEADING SPACES
1183 TAD (-240 /NOT A SPACE. TAKE WHATEVER IT IS.
1186 DCA BNAM /KEYBOARD MON. WILL EXAMINE IT.
1195 JMS I (TESTB /TEST IT
1197 -0516;END /$END CARD
1198 -1523;MSGST /$MSG CARD IMAGE
1199 -1217;JOB /$JOB CARD
1200 DLCRUD, ISZ DOLRD /$CRUD
1205 MSGST, JMS I (MSG /PRINT MESSAGE
1206 JMP DLCRUD /TREAT LIKE CRUD
1218 \f/HERE FROM CD WHEN DONE TO ANALYZE CD AREA
1221 TAD I (LKUPSW /GET THE DEFAULT EXTENSION
1222 JMS I (CDFRST /SET CURRENT DF
1223 JMS I (CDSCN /SCAN CD LINE
1225 TCF /CLEAR FLAGS JUST LIKE CD WOULD
1227 JMP I (CDOVER+3 /RESUME CD AT TERMINATION CODE
1229 \fCDT, 0021;2223;2425;2627;3031;3203;4007;3502
1230 2017;6364;6566;6770;7172;7514;0577;3637
1231 1552;5354;5556;5760;6162;0104;1211;3374
1232 0641;4243;4445;4647;5051;7316;3410;1376
1234 TTYOUT, 0 /TESTS AC FOR FORM FEED
1237 JMP TFORM /GENERATE LINE FEEDS
1251 CLA /DEEP-SIX THE CHARACTER
1254 \fTTYPE, 0 /TELETYPE OUTPUT STUFF
1262 BOSPRT, JMS ERHDR /PRINT MESSAGE
1270 ERHDR, 0 /ERROR HEADER ROUTINE
1271 DCA CDFRST /SAVE CHARACTER
1272 TAD I (DOLFLG /FIRST ENTRY?
1275 TAD ("# /ERROR PROMPT
1277 TAD I (BOSSW /GET BATCH FLAGS WORD
1279 AND (1000 /SET $ SLEW FLAG NEGATIVE IF NO /E,
1280 STL RTL /NON-ZERO IN ANY CASE
1293 BOSLPT, 0 /BATCH LINE PRINTER ROUTINE
1301 MORKIL, JMS I (CDFRST
1304 DCA I (7777 /RESTORE WORD
1309 CDEMSG, TEXT /MONITOR OVERLAYED/
1310 INPMSG, TEXT /INPUT FAILURE/
1311 BADMSG, TEXT /BAD LINE. JOB ABORTED/
1312 SERMSG, TEXT /SYS ERROR/
1317 \fBATABT, JMS I (CDFRST /THIS CODE IS HERE FOR CCL!
1318 TAD I (BOSSW /GET BATCH SWITCHES
1320 AND (1000 /IF /E FLAG IS UP CCL ERRORS ARE NON-FATAL,
1322 JMP CDKILX /OTHERWISE WE SHOULD ABORT BATCH ON THEM
1324 CDGET, JMS I (GLINE /READ INPUT
1326 SNA CLA /DON'T ECHO CD LINES IF HUSHED
1330 TAD I (DOLFLG /$JOB FLAG UP?
1332 JMP CDKBD /SLEW UNTIL $JOB
1336 JMS I (TESTB /TEST PROMPT CHAR.
1341 -".;CDKBD /RECALL KEYBOARD MON.
1343 BADMSG /ILLEGAL CHARACTER
1344 CDKILL, STL CLA RAR /4000
1345 CDKILX, DCA I (DOLFLG /ABORT TO NEXT $JOB
1346 JMS I (SETJSW /MARK BATCH IN CORE
1361 JMS I (SETJSW /MARK BATCH IN CORE
1362 JMS I (KMLINK /LINK TO NEW KEYBOARD
1363 TAD (BOSRE /WE WANT TO RETAIN OLD LINE
1369 \fCDLINE, JMS I (MOVE /PUT LINE INTO CD
1376 SZA CLA /CHECK WHETHER ALTMODE TERMINATED LINE
1377 STL RAR /IT DID - SET CD ALTMODE FLAG
1383 DEVKIL, JMS I (PRMESG
1387 HLPMSG, TEXT /MANUAL HELP NEEDED/
1388 PTRMSG, TEXT /ILLEGAL INPUT DEVICE/
1389 EOBMSG, TEXT /END BATCH/
1390 SPLMSG, TEXT /SPOOL TO FILE /
1392 BCHFIL, TEXT /BTCHA0/
1394 \f/SUBROUTINE TO ANALYZE CD AREA - ENTER FROM ANY FIELD
1395 /WITH DEFAULT EXTENSION IN AC
1398 DCA EXT /SAVE EXTENSION
1401 DCA CDSCRT /SAVE RETURN FIELD
1403 DCA CDTEMP /LOOK AT CD AREA
1406 CDSCAN, JMS I (CDFRST
1410 SZL CLA /IS SPOOLING ENABLED
1411 TAD I CDTEMP /AND IS THERE AN OUTPUT?
1414 JMP NCKSPL /NO - DON'T LOOK
1415 TAD (DCB-1 /CHECK FILE OR NON-FILE STATUS
1417 TAD I CDTMP2 /SPOOL NON-FILE DEVICES
1419 JMP NCKSPL /FILE STRUCTURED OUTPUT
1422 TAD SPLDEV /RESET CD AREA
1424 ISZ CDTEMP /POINT TO FILENAME AREA
1440 JMS I (PRMESG /PRINT FILENAME
1442 TAD I (BCHFIL+2 /SET NEW FILENAME
1450 JMP CDSCRT /YES - LOOK NO MORE
1452 JMP CDSCAN /KEEP LOOKING
1453 \fCDX1, TAD (-11 /SCAN INPUT AREA
1456 DCA CDPTR /PICK UP MANUAL INPUTS.
1460 JMP CDSCRT /3 GUESSES!
1462 TAD (DCB-1 /GET DEVICE IDENTIFIER
1468 JMP RBELL /TELETYPE INPUT - CHECK OPERATOR
1471 JMP CDX3 /OK INPUT DEVICE
1473 SPA CLA /PTR: INPUT - IS BATCH FROM PTR?
1474 JMP I (DEVKIL /YES - ILLEGAL
1475 RBELL, TAD I (BOSSW /OPERATOR AVAILABLE?
1478 JMP I (DEVKIL /NO. ABORT THE JOB
1482 HLPMSG /MANUAL INTERVENTION REQUIRED.
1485 CDX3, CLA CLL CML RTL
1491 JMP I CDSCN /RETURN TO CALLER
1493 SPLDEV, 0 /GETS SPOOL DEVICE #
1499 \f/THIS ROUTINE IS NOT REFERENCED FROM BATCH-
1500 /IT PROVIDES A WAY FOR A USER TO OUTPUT MESSAGES
1501 /TO THE BATCH LOG DEVICE
1503 BATOUT, 0 /CALLABLE FROM ANY FIELD
1504 DCA CTRLC /WITH CHARACTER IN AC
1506 TAD CDCF0 /GET CDF CIF TO CALLING FIELD
1508 JMS I (CDFRST /CDF TO CURRENT FIELD
1510 JMS I (OUTCHR /OUTPUT THE CHARACTER
1513 \f/ENTER HERE FROM COMMAND DECODER WHEN CD CALLED
1515 CDBOS, RIF /FILL IN CIF CDF N
1516 TAD CDCF0 /TO LINK CD AND BOS
1526 TYPE+1 /LINK ERROR PRINTOUT TO BOS
1532 CGLINE /LINK INPUT TO BOS
1538 CDOVER /EXIT FROM LINE ANALYSIS
1541 RESTRT+1 /START UP CD
1543 /** THESE 3 WORDS LOAD INTO "TYPE+1" IN THE COMMAND DECODER **
1545 TYPE+3&177+5600 /"JMP I .+1"
1548 /** THESE 3 WORDS LOAD INTO "CGLINE" IN THE COMMAND DECODER **
1550 CGLINE+2&177+5600 /"JMP I .+1"
1551 CDGET /RETURN TO CDGET AFTER ZEROING CD AREA
1553 /** THESE 3 WORDS LOAD INTO "CDOVER" IN THE COMMAND DECODER **
1555 CDOVER+2&177+5600 /"JMP I .+1"
1557 \fCTRLC, 0 /CHECK FOR ^C
1567 ECHOT, 0 /ECHOES LINE ON TTY
1568 TAD (TTYOUT /SET TTY AS OUTPUT
1573 DCA I (BOUTDV /RESET OUTPUT
1583 ECHO, 0 /ECHO INPUT LINE
1592 ECO3, TAD I (AMODE /NEED $ PRINTED?
1606 DCA MVPT1 /INPUT STUFF
1609 DCA MVOPUT /OUTPUT FIELD
1633 CIF CDF 0 /LINK BACK TO CD