A large commit.
[pdp8.git] / sw / os8 / v3d / sources / extensions / dectapes / dectape2 / batch.pa
1 /3 CONCISE OS8 BATCH PROCESSOR 1-AUG-1975
2 /
3 /
4 /
5 /
6 /
7 /
8 /
9 /
10 /
11 /COPYRIGHT (C) 1975,1977 BY DIGITAL EQUIPMENT CORPORATION
12 /
13 /
14 /
15 /
16 /
17 /
18 /
19 /
20 /
21 /
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.
26 /
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.
31 /
32 /DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY FOR THE USE
33 /OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY
34 /DIGITAL.
35 /
36 /
37 /
38 /
39 /
40 /
41 /
42 /
43 /
44 /
45 \f/EF,RL,SR
46
47 /ABSTRACT---
48 /BATCH IS THE INITIALIZING PROGRAM FOR THE OS/8 BATCH
49 /PROCESSING MONITOR. TO SET UP A BATCH RUN, TYPE
50 / .R BATCH
51 /BATCH WILL CALL THE COMMAND DECODER TO OBTAIN ITS
52 /PARAMETERS AND INPUT FILE LOCATION.
53
54 VERSON= 7
55
56
57
58 / BATCH SWITCHES:
59
60 /C BATCH FROM CARDS
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
66 /U UNATTENDED
67 /6 USE 026 CARD CODES (ONLY IF /C)
68
69
70 /MAINTENANCE RELEASE CHANGES BY S.R. ON 1-AUG-75:
71
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.
81
82 /CHANGES BY S.R. ON 3-FEB-77:
83
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
89
90 AMFLAG=17 /ALTMODE FLAG FOR KBM
91 CDREC=51 /COMMAND DECODER
92 KMREC=7 /KEYBOARD MONITOR
93 BUFFER=3000
94 JSW=7746 /JOB STATUS WORD
95 DCB=7760 /DEVICE CONTROL BLOCK
96 MTWO=CLA CLL CMA RAL
97 MTHREE=CLA CLL CMA RTL
98 SYSTEM=7607
99 MPARAM=7643
100 /********************************************
101 KEYMON=403
102 BEGLN=1000
103 PRINT=200
104 XGLINE=1200
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 /*******************************************
109 CDOVER=326
110 CDBEGLN=1200 /CD BUFFER AREA
111 ANALYZ=202 /CD ANALYSIS
112 TYPE=1367 /ERROR OUTPUT ROUTINE
113 CGLINE=1002
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.
119 NAMECT=31
120 DEV1=33
121 RESTRT=676
122 /********************************************
123 ORIGIN=5400
124 PSKF=6661 /LE8 IOT'S
125 PCLS=6666
126 RCRA=6632 /CARD READER IOT'S
127 RCSE=6672
128 RCSD=6671
129 RCSF=6631
130 RCRD=6674
131 /*****************************
132 \f/BATCH USES CERTAIN SYSTEM WORDS AS FLAGS AND STATUS
133 /INDICATORS. THEY ARE:
134
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
140
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.
144
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
152
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.
157
158 SPLNUM= 7776 /SPOOL SEQUENCE NUMBER
159 SYCNT= 7775 /CHARACTER COUNT IN BUFFER
160 SYBLKN= 7774 /SYSTEM DEVICE BLOCK NUMBER
161
162 /IF SPOOLING IS USED, LOC. N7776 IS USED TO HOLD THE
163 /XX IN 'BTCHXX.TM'.
164
165 /BATCH INITIALIZER PAGE 0
166 *16
167 XR1, 0
168 XR2, 0
169 TEMP, 0
170 TEMP2, 0
171 COUNT, 0
172 BOSCTL, 1101 /CONTROL WORD TO READ/WRITE BOS
173 CDFTOP, 0
174 TOPCDF, HLT /CDF TO TOP FIELD
175 JMP I CDFTOP
176 T1, 0
177 T2, 0
178 PAGE
179 \fSTART, SKP
180 JMP BCHAIN /IF CHAINED TO
181 JMS I (GETCOR /DETERMINE CORE SIZE; PUT IN 7777
182 BATASK, CIF 10
183 JMS I [200
184 5
185 0211 /.BI ASSUMED EXT
186 SKP
187 BCHAIN, JMS I (GETCOR
188 DCA I [BOSSW
189 CDF 10
190 TAD I [MPARAM+1
191 AND (4 /GET /V SWITCH
192 SNA CLA /IS IT ON?
193 JMP .+3 /NO
194 JMS I [MESSG
195 VERMSG /PRINT BATCH VERSION NUMBER
196 CDF 10
197 TAD I (7620
198 DCA T1 /GET STARTING BLOCK
199 TAD I (7617
200 SNA
201 JMP NOTSYS /NO FILE - BATCH FROM PTR OR CDR
202 AND [17
203 TAD (MPARAM+3 /POINT INTO HANDLER TABLE
204 DCA T2
205 TAD I T2
206 CLL
207 TAD [200 /IS THE DEVICE SYS OR CORESIDENT WITH SYS?
208 SNL CLA
209 JMP INDERR /NO
210 TAD I T2 /GET DEVICE HANDLER ENTRY POINT
211 CDF 0
212 DCA I (SYSINH /STORE AS BATCH INPUT HANDLER
213 JMS CDFTOP
214 TAD T1
215 DCA I (SYBLKN
216 TAD (-601
217 DCA I (SYCNT /SET UP PARAMETERS FOR INPUT FILE
218 CDF 0
219 TAD (SYSIN-1
220 JMP STODEV /INPUT DEV = SYS
221
222 NOTSYS, TAD I (MPARAM
223 RTL /GET C FLAG IN SIGN BIT
224 SMA CLA
225 JMP NOTCDR
226 JMS I (CHANGE /SET 026/029 CARD CODE
227 TAD (CDR-1
228 JMP STODEV /INPUT DEV = CDR
229 \fNOTCDR, TAD I [MPARAM+1
230 AND (400
231 CDF 0
232 SNA CLA
233 JMP BATASK /NO INPUT SPECIFIED
234 STL RAR
235 DCA I [BOSSW /PTR INPUT FLAG
236 TAD (PTR-1
237 STODEV, JMS I (MVINSB /MOVE THE PROPER ROUTINE INTO THE BATCH MONITOR
238 CDF 10
239 TAD I [MPARAM+1
240 CDF 0
241 AND (210 /GET /Q AND /U SWITCHES
242 CLL RTL
243 RTL
244 RAL / /Q INTO LINK
245 SZA CLA
246 ISZ I [BOSSW /SET UNATTENDED BIT IF /U SPECIFIED
247 SNL
248 JMP .+3 /NO /Q
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?
252 JMP NOLPT /NO
253 CDF 10
254 TAD I [MPARAM+1
255 CDF 0
256 AND (20 /CHECK /T SWITCH
257 CLL CIA
258 SZL CLA /SKIP IF /T SPECIFIED
259 TAD (BOSLPT-TTYOUT
260 NOLPT, TAD (TTYOUT
261 DCA I (OUTPUT /SET OUTPUT DEVICE TO TTY OR LPT OR NULOUT
262 RTL
263 TAD I [BOSSW
264 DCA I [BOSSW /AND SET FLAG
265 CDF 10
266 TAD I [7600
267 CDF 0
268 SNA
269 JMP I (CONT /NO SPOOLING
270 AND [17
271 DCA T1
272 TAD T1
273 TAD (DCB-1
274 DCA T2
275 CDF 10
276 TAD I T2
277 CDF 0
278 JMP I (SPCONT
279 \fINDERR, JMS I [MESSG
280 NODEV
281 JMP BATASK
282 PAGE
283 \fSPCONT, SMA CLA
284 JMP BADSPL
285 TAD T1
286 DCA I (SPLDEV
287 STL RTR
288 TAD I [BOSSW
289 DCA I [BOSSW
290 CONT, JMS I (EOPTN /CHECK FOR /E SWITCH
291 TAD (BATPTR /SET POINTER TO BATCH.SV
292 DCA FILPTR
293 CLA IAC /DO LOOKUP ON SYS
294 CIF 10
295 JMS I [200
296 K2, 2
297 FILPTR, BATPTR
298 0 /WHO CARES ABOUT THE LENGTH?
299 JMP NOBACH /BATCH FILE NOT FOUND
300 TAD I K7777 /PUT IN FIELD OF BOS
301 AND (70
302 TAD (CDF 0
303 DCA CDFBOS
304 TAD (201
305 JMS I [SYS /READ AND ALTER KEYBOARD MON.
306 BUFFER
307 KMREC
308 /GET RECORD # OF BOS
309 JMS I [VERTST /GET VERSION OF MONITOR
310 TAD (EOINIT
311 AND (7400
312 CLL RTL
313 RTL
314 RAL
315 TAD K2
316 TAD FILPTR
317 DCA BOSREC /WE WILL RE-WRITE BOS LATER
318 TAD BOSREC /ALTER KEYBOARD MONITOR
319 DCA I (BUFFER+BATCH+3 /RECORD #
320 TAD CDFBOS
321 AND (70 /ALTER CONTROL WORD
322 TAD BOSCTL
323 DCA I (BUFFER+BATCH+1
324 TAD BOSREC-1
325 DCA I (BUFFER+BATCH+2
326 CLA CLL CML RTL
327 TAD CDFBOS
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.
332 JMS I [SYS
333 BUFFER
334 KMREC
335 TAD (201 /READ IN COMMAND DECODER
336 JMS I [SYS
337 BUFFER /AND INSERT BOS RECORD
338 CDREC
339 TAD CDFBOS /NOW FILL IN THE COMMAND DECODER
340 DCA I (TT+BUFFER
341 TAD (CDBOS
342 DCA I (DVICE+BUFFER /ALLOW CD TO CHECK BATCH VALIDITY
343 TAD I (CDBOS
344 CIA /STORE COMPLEMENT ALSO
345 DCA I (OUTSW+BUFFER
346 CLL CML RTL /CREATE CIF CDF BATCH
347 TAD CDFBOS
348 DCA I (NAMECT+BUFFER
349 TAD (CDBOS
350 DCA I (DEV1+BUFFER
351 TAD (4200
352 JMS I [SYS /RE WRITE CD.
353 BUFFER
354 CDREC
355 JMS I (SETH /SET HUSH IF /H SPECIFIED
356 CLA CLL CML RAR
357 TAD BOSCTL
358 JMS I [SYS /INPUT POINTERS SET UP.
359 ORIGIN&7400
360 BOSREC, HLT
361 CLA CLL CML RTR /BATCH IN PROGRESS
362 JMS I [INCOR
363 K7777, 7777
364 CLA STL RAR /4000
365 DCA I (DOLFLG /SET FOR INITIAL $JOB
366 JMS I (MOVE /PUT IMAGE OF BOS INTO HIGH CORE
367 ORIGIN-7600
368 ORIGIN
369 CDFBOS, HLT
370 ORIGIN
371 TAD (0160 /SET SPOOL FILENAME TO BTCHA0
372 JMS CDFTOP
373 DCA I (SPLNUM
374 BATRET, CIF CDF 0
375 JMP I [7605
376 \f
377 NOBACH, JMS I [MESSG /BATCH.SV NOT THERE
378 NBATCH
379 JMP BATRET
380 BADSPL, JMS I [MESSG
381 SPLERR
382 JMP I (BATASK
383 PAGE
384 \fMESSG, 0 /MESSAGE PRINTING ROUTINE
385 CLA
386 CDF 0
387 JMS I [CRLF /GENERATE CARRIAGE RET., LINE FEED
388 TAD I MESSG /ADDRESS OF ERROR MESSAGE
389 ISZ MESSG /POINT TO RETURN
390 DCA TEMP
391 MCONT, TAD I TEMP /GET TEXT CHARACTERS IN AC
392 CLL RTR
393 RTR
394 RTR
395 JMS PCHAR /PUNCH IT
396 TAD I TEMP
397 JMS PCHAR /SECOND OF TWO.
398 ISZ TEMP /NEXT TEXT WORD
399 JMP MCONT /CONTINUE
400
401 PCHAR, 0 /ROUTINE TO UNPACK AND PRINT TEXT
402 AND [77
403 SNA /0 TERMINATES THE LIST
404 JMP MSGXIT /UNCLEAN RETURN, BUT WHO CARES?
405 TAD (-37 /SEPARATE DIGITS FROM ALPHAS
406 SNA
407 JMP PCRLF /_ IS SPECIAL CHAR
408 SPA
409 TAD (100 /MAKE IT ALPHABETIC
410 TAD (237
411 JMS I (TTYOUT
412 JMP I PCHAR
413 MSGXIT, TSF
414 JMP MSGXIT
415 JMP I MESSG
416
417 PCRLF, JMS I [CRLF
418 JMP I PCHAR
419 \fLZERO=0
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
429 SZA
430 JMP STOCOR
431 TAD [7607
432 DCA LZERO
433 CHUG, CDF 10
434 TAD K
435 DCA I (LZERO
436 K10, 10
437 TAD LZERO
438 CIA
439 TAD [7607
440 SZA CLA
441 JMP DUN
442 TAD I (LZERO
443 NOP
444 CIA
445 TAD K
446 SZA CLA
447 JMP DUN
448 TAD [10
449 TAD CHUG
450 DCA CHUG
451 ISZ K
452 JMP CHUG-2
453 CLA CMA
454 DUN, CIF CDF 0
455 TAD K
456 TAD K10
457 CLL RTL /STORE HIGHEST FIELD # INTO 7777
458 RAL
459 STOCOR, DCA INCOR
460 TAD INCOR
461 TAD (-10 /TEST FOR AT LEAST 12 K
462 SPA SNA
463 JMP NOCORE
464 TAD (-60 /LIMIT TO FIELD 6, SO AS NOT
465 SNA CLA /TO DISTURB ROM IN F. 7
466 TAD (-10
467 TAD INCOR
468 DCA INCOR
469 TAD INCOR
470 TAD (CDF
471 DCA TOPCDF
472 TAD I (7777
473 AND (7707 /V3D
474 TAD INCOR
475 DCA I (7777
476 TAD INCOR
477 TAD (201
478 DCA I (SYCNTL
479 TAD TOPCDF
480 DCA I (BOSCDF
481 JMP I GETCOR
482 NOCORE, CLA
483 JMS I [MESSG
484 COR8
485 JMP I [7600
486 K, -10
487
488 INCOR, 0 /INCLUSIVE OR ROUTINE. USE THE
489 DCA TEMP /FOLLOWING:
490 TAD I INCOR /A .OR. B= .NOT. A .AND. B +A
491 DCA TEMP2
492 TAD TEMP
493 CMA
494 AND I TEMP2
495 TAD TEMP
496 DCA I TEMP2
497 ISZ INCOR
498 JMP I INCOR
499 PAGE
500 \fPTR, 0 /HI SPEED READER HANDLER
501 RDF /** MOVED TO 5400 IN BATCH FIELD **
502 TAD PCDIF0
503 DCA PTRRET
504 JMS I PTRDOL /CHECK FOR $ INSERTION
505 JMP PTRISZ /YES
506 DCA PTIMER
507 JMS I TCTRLC
508 RFC
509 PTM2, RSF
510 JMP PTMER
511 TAD PTR200 /FORCE PARITY ON
512 RRB
513 PTRISZ, ISZ PTR
514 PTRRET, HLT
515 JMP I PTR
516 PCDIF0, CDF CIF 0
517 TCTRLC, CTRLC
518
519 PTMER, AND I 0
520 AND I 0
521 ISZ PTIMER
522 JMP PTM2 /TIMES OUT IN 16 MS.
523 JMP PTRRET
524 PTIMER, 0
525 PTR200, 200
526 PTRDOL, GETDOL
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.
531
532 SYS, 0
533 DCA SYCTL /AC HAD CONTROL WORD
534 TAD I SYS
535 DCA SYBUFF /BUFFER FOR TRANSFER
536 ISZ SYS
537 TAD I SYS
538 DCA SYREC /RECORD OF TRANSFER
539 ISZ SYS
540 CIF 0
541 JMS I (SYSTEM
542 SYCTL, HLT
543 SYBUFF, HLT
544 SYREC, HLT
545 SKP CLA
546 JMP I SYS
547 JMS I (PRMESG
548 SERMSG
549 JMP I (BATRET
550
551 BATPTR, FILENAME BATCH.SV
552 \fCHANGE, 0 /ROUTINE TO ALTER CARD TABLE
553 CDF 10
554 TAD I (MPARAM+2
555 CDF 0
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
561 TAD (CLST-1
562 DCA XR2 /THE LOCS. THAT GET ALTERED
563 TAD [-15
564 DCA COUNT /13 ENTRIES.
565 TAD I XR2
566 DCA CHPTR
567 TAD I XR1
568 DCA I CHPTR /ALTER TABLE IN MONITOR.
569 ISZ COUNT
570 JMP .-5
571 JMP I CHANGE
572 CHPTR, 0
573
574 CLST, CDT+5 /ADDRESSES OF CARD CONVERSION LOCS.
575 CDT+6
576 CDT+7
577 CDT+15
578 CDT+16
579 CDT+17
580 CDT+25
581 CDT+26
582 CDT+27
583 CDT+30
584 CDT+35
585 CDT+36
586 CDT+37
587
588 \fC026=.-1
589 7735 /CODES FOR 026 CARDS
590 4076
591 0774;3314;1002;0305;3204;1273;3606;1341;3716;1175
592 3401
593
594 C029=.-1
595 3203;4007;3502;7514;0577;3637;0104;1211;3374;0641;7316;3410
596 1376
597
598 SETH, 0 /SET HUSH
599 CDF 10
600 TAD I (MPARAM /LOOK AT A-L SWITCHES
601 AND (20 /IN PARTICULAR, LOOK AT /H BIT
602 CDF 0
603 DCA I (HUSH /SAVE THIS BIT
604 JMP I SETH
605
606 PAGE
607 \fBILEN= 0 /INITIALIZE MAX INPUT ROUTINE LENGTH
608
609 SYSIN, 0 /INPUT FROM SYSTEM DEVICE
610 RDF /** MOVED INTO 5400 IN BATCH FIELD **
611 TAD SYCDIF
612 DCA SYSRET
613 SYSIN4, JMS I SYSDOL /CHECK FOR $ INSERTION
614 JMP SYSISZ /YES
615 TAD BLOK /RE-READ BUFFER?
616 SZA CLA
617 JMP SYGETC /NO. STILL THERE
618 TAD I PSYBLKN
619 DCA BLOK
620 TAD I PSYCNT
621 IOSYS, DCA SYCHCN /RESTORE CHARACTER COUNT
622 CIF 0
623 JMS I SYSINH /READ THE BLOCK
624 SYCNTL, 0
625 BTBUF, ORIGIN-400
626 BLOK, 0
627 JMP I PSYIERR
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
633 SPA
634 JMP GEWD
635 ISZ WPTR /SKIP 2 WORDS
636 ISZ WPTR
637 JMP GWDLP
638 GEWD, TAD SYS3 /FORM A JMP CHARX, X=1,2,3
639 TAD JMPDOT
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
645 TAD SYM601
646 JMP IOSYS /READ IT.
647 JMPCH, JMP JMPCH /3 WAY SWITCH
648 JMP ICHAR1 /FIRST OF 3
649 JMP ICHAR2 /SECOND
650 TAD JMPDOT
651 DCA JMPCH /RESET 3 WAY SWITCH
652 JMS I PCTRLC
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.
658 ISZ WPTR
659 TAD I WPTR
660 AND SY7400
661 CLL RTL
662 RTL
663 RAL
664 TAD SYTEMP
665 ISZ WPTR /BUMP TO NEXT GROUP
666 JMP CHCOM
667 ICHAR2, CLA IAC
668 ICHAR1, TAD WPTR
669 DCA SYTEMP /THIRD CHAR NEEDS WPTR!
670 TAD I SYTEMP
671 CHCOM, AND SYS177
672 DCA SYTEMP
673 TAD SYCHCN
674 DCA I PSYCNT
675 TAD BLOK
676 DCA I PSYBLKN
677 TAD SYTEMP /CHECK FOR ^Z
678 / SNA /V3C
679 / JMP SYSISZ /RETURN NULL AS NULL
680 TAD SYSM32
681 SZA
682 JMP CHOUT /NOPE. OK
683 TAD SYEXT /^Z. DISABLE INPUT
684 DCA SYSIN4
685 SYEXT, JMP SYSRET
686 CHOUT, TAD SYS232
687 SYSISZ, ISZ SYSIN
688 SYSRET, HLT /CDF CIF RETURN FIELD
689 JMP I SYSIN
690
691 SYCHCN, 0
692 WPTR, 0
693 SYSCHR,
694 SYTEMP, 0
695 PSYBLK, SYBLKN
696 PSYCNT, SYCNT
697 SYSINH, 0 /GETS ADDRESS OF INPUT HANDLER (7607 OR CO-RES)
698 PSYIER, SYIERR
699 SYS601, 601
700 SYM601, -601
701 SYSM3, -3
702 SYS3, 3
703 PCTRLC, CTRLC
704 SY7400, 7400
705 SYS177, 177
706 SYSM32, -32
707 SYS232, 232
708 SYCDIF, CDF CIF 0
709 SYSDOL, GETDOL
710
711 IFZERO .-SYSIN-BILEN&4000 <BILEN=.+1-SYSIN>
712 PAGE
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
715
716 CDR, 0
717 RDF
718 TAD CCDIF0
719 DCA CDRRET
720 JMS I CDRDOL /CHECK FOR $ INSERTION
721 JMP CDRISZ /YES
722 ISZ CHCNT /STILL CHARACTERS IN BUFFER?
723 JMP GETCH /YES.
724 NEWCRD, TAD PLNBUF
725 DCA CDRPTR /NO. READ A NEW CARD
726 CSLCT, JMS I CCTRLC
727 RCSE /SELECT A CARD
728 JMP CSLCT
729 RDNEXC, DCA CTIMER
730 RDCOLM, RCSF /WAIT FOR DATA
731 JMP EOC /AND CHECK FOR END OF CARD
732 RCRA
733 CLL RAR /TRANSLATE INTERNAL INTO ASCII
734 TAD PCDT
735 DCA CTEMP
736 TAD I CTEMP
737 SZL /LEFT OR RIGHT?
738 JMP .+4
739 RTR;RTR;RTR
740 AND CDR77
741 TAD CDR240
742 ISZ CDRPTR
743 DCA I CDRPTR
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
748 CMA
749 DCA CHCNT
750 CHKSPC, TAD I CDRPTR
751 TAD CDM240
752 SNA CLA
753 JMP SPCIG
754 ISZ CDRPTR
755 CDCR, TAD CDR215 /INSERT END OF LINE MARKER
756 DCA I CDRPTR
757 TAD PLNBUF
758 DCA CDRPTR
759 GETCH, ISZ CDRPTR
760 TAD I CDRPTR
761 CDRISZ, ISZ CDR
762 CDXIT, RCRD /CLEAR CARD DONE FLAG
763 CDRRET, HLT
764 JMP I CDR
765
766 SPCIG, CLA CMA /BACK UP ONE CHAR
767 TAD CDRPTR
768 DCA CDRPTR
769 ISZ CHCNT /IF SKIP, IT'S A BLANK LINE
770 JMP CHKSPC
771 JMP CDCR
772
773 TIME, AND I 0 /CHECK TIME OUT - FIRST DELAY A WHILE
774 TAD CDM240 /V3C
775 DCA TIME /TIME OUT A LOT
776 ISZ TIME
777 JMP .-1
778 ISZ CTIMER
779 JMP RDCOLM
780 DCA CHCNT
781 JMP NEWCRD /CARD HUNG - WAIT FOR READER READY
782 CCDIF0, CDF CIF 0
783 CHCNT, -1
784 PLNBUF, LINBUF-1
785 CCTRLC, CTRLC
786 PCDT, CDT
787 CDR77, 77
788 CDR240, 240
789 CDM240, -240
790 CDR215, 215
791 CDRPTR, 0
792 CTEMP, 0
793 CTIMER, 0
794 CDRDOL, GETDOL
795
796 IFZERO .-CDR-BILEN&4000 <BILEN=.+1-CDR>
797 \f/*** THIS CAUSES BUGS TO RTS/8 BECAUSE IT OUTPUTS TO LPT!
798
799 LPTTST, 0 /SKIP IF BATCH-TYPE LINE PRINTER AVAILABLE
800 TAD (240
801 PCLS /PRINT AN INNOCUOUS BLANK
802 CLA
803 AND I 0
804 AND I 0 /FLAG COMES UP IN UNDER 10 MICROSECONDS
805 AND I 0
806 PSKF /WELL?
807 JMP I LPTTST /NO WAY!
808 CLA IAC /DON'T BE FOOLED - COULD STILL BE AN ANALEX
809 6654 /LOAD ANALEX BUFFER
810 SNA CLA
811 JMP ANALEX /IF IOT CLEARED AC, ITS AN ANALEX
812 TAD (215
813 PCLS /CLEAR LINE BUFFER BY PRINTING CR
814 PSKF
815 JMP .-1
816 CLA
817 ISZ LPTTST
818 JMP I LPTTST /TAKE SKIP RETURN
819
820 ANALEX, 6652 /CLEAR FLAGS
821 6662 /CLEAR BUFFER
822 JMP I LPTTST /TAKE NO LPT RETURN
823 PAGE
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 /
830 *.-1
831 VERSON+2660 /"VN"
832 TEXT /A_/
833 \fVERTST, 0
834 TAD I (BUFFER+BATCH /SHOULD BE 4562 IN V3
835 TAD (-CBATCH
836 SNA CLA
837 JMP I VERTST
838 JMS I [MESSG
839 BADMON
840 JMP I [7600
841
842 MVINSB, 0
843 DCA XR1 /ADDR OF INPUT ROUTINE
844 TAD (BATIN-1 /ADDR OF PLACE IN BATCH MONITOR
845 DCA XR2
846 TAD (-BILEN
847 DCA BMVCNT
848 TAD I XR1
849 DCA I XR2
850 ISZ BMVCNT
851 JMP .-3 /MOVE ROUTINE UP
852 JMP I MVINSB
853 BMVCNT, 0
854
855 EOPTN, 0 /CHECK FOR /E OPTION
856 CDF 10
857 TAD I (MPARAM
858 CDF 0
859 AND (200 /ISOLATE E SWITCH
860 SNA CLA
861 JMP I EOPTN /NOT ON
862 TAD (1000
863 JMS I (INCOR /OR 1000 INTO BOSSW
864 BOSSW
865 JMP I EOPTN
866
867 EOINIT=.
868 PAGE
869 \f FIELD 0 /DUMP PAGE 0 LITERALS HERE
870 \f *ORIGIN /THIS CODE ACTUALLY EXECUTES IN TOP FIELD!
871
872 BATIN, ZBLOCK BILEN /BATCH INPUT ROUTINE GOES HERE
873
874 END, TAD I (HUSH
875 SZA CLA
876 JMP BKILL /SUPPRESS #END WHEN HUSHED
877 JMS I (PRMESG
878 EOBMSG
879 BKILL, CDF 10
880 STA
881 TAD I (7700 /V3D
882 DCA I (7700 /ALLOWS CORE IMAGE TO BE PRESERVED ACROSS BATCH
883 JMP I (MORKIL
884
885 SETJSW, 0 /ROUTINE TO SET JOB
886 TAD (7377 /STATUS WORD TO INDICATE THAT
887 CDF 0 /BATCH IS STILL IN CORE
888 AND I (JSW
889 TAD (400
890 DCA I (JSW
891 JMS I (CDFRST /RESTORE TRUE DATA FIELD
892 JMP I SETJSW
893
894 PAGE
895 \f/THIS IS THE ACTUAL BATCH MONITOR. THIS ENTRY IS FOR THE
896 /INTERFACE WITH THE KEYBOARD MONITOR.
897
898 BATVFY, 2214 /** THIS LOCATION IS VERIFIED BY BAT: **
899
900 BOS, CDF 0 /SEE IF CD FOUND AN ERROR
901 TAD I (7777 /IF BIT 11 SET, IT DID.
902 CLL RAR
903 CLA
904 TAD I (7777 /RESTORE IT.
905 AND M2 /ERASE IT
906 DCA I (7777
907 JMS I (CDFRST /RESTORE DATA FIELD
908 SZL CLA
909 JMP CDERR
910 JMS I (KMLINK /LINK I/O OF BOS AND K.M.
911 BOSSB, TAD OUTPUT
912 DCA BOUTDV /SET MESSAGES
913 JMS I (GLINE /READ LINE OF INPUT
914 TAD HUSH
915 SZA CLA
916 JMP BOSRE /DON'T ECHO LINES WHEN HUSHED
917 TAD I (LINBUF
918 TAD (-"$
919 SNA CLA
920 TAD I (LINBUF+1
921 TAD (-"J /DON'T ECHO $JOB CARD HERE
922 SNA CLA
923 TAD I (LINBUF+2
924 TAD (-"O
925 SZA CLA
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 $?
930 SMA CLA
931 JMP I (NXPRG /NO. LOOK FOR . OR /
932 TAD I (BNAM /SEE IF WE HAVE IT
933 TAD (-"$
934 SZA CLA
935 JMP BOSSB /NOT YET.
936 JMP I (KMDOLR /SEE IF IT'S $JOB
937
938 CDERR, JMS I (PRMESG
939 CDEMSG
940 JMP BOS
941 \f/HERE TO ECHO $JOB CARD
942
943 DOLECH, TAD HUSH
944 SZA CLA
945 JMP HUSH2 /DON'T ECHO $JOB WHEN HUSHED
946 TAD (214
947 JMS OUTCHR
948 TAD I (BOSSW
949 CLL RTR /ECHO A PAGE OF $JOBS TO LPT ONLY
950 SNL CLA /IS LPT OUTPUT?
951 JMP DOLEC2
952 TAD (-36 /YES
953 DCA DOLFLG
954 TAD (212
955 JMS OUTCHR /SPACE DOWN TO MIDDLE OF PAGE
956 ISZ DOLFLG
957 JMP .-3 /REPLACE NEXT THREE LOCS IF CENTRONIX PRINTER:
958 JMS I (ECHO /216
959 JMS I (ECHO /TAD .-1
960 JMS I (ECHO /JMS OUTCHR /PRINT LARGE CHARS
961 JMS I (ECHO
962 DOLEC2, TAD (214
963 JMS OUTCHR
964 JMS I (ECHOT /PUT $JOB TO TTY IF NEEDED
965 JMS I (CRLF
966 HUSH2, DCA DOLFLG
967 JMP BOSSB
968
969 GETDOL, 0 /ROUTINE TO PUT BACK ANY $ READ BY BAT:
970 CDF 0
971 TAD I (7777 /GET BATCH CONTROL WORD
972 CLL RTR
973 SZL CLA /TEST BIT 10
974 JMP GOTDOL /ITS ON - MUST PUT IN A $
975 JMS I (CDFRST /NO - SET DF TO THIS FIELD
976 ISZ GETDOL
977 JMP I GETDOL /TAKE SKIP RETURJ
978 GOTDOL, CLL STA RTL /7775
979 AND I (7777
980 DCA I (7777 /REMOVE THE BIT
981 TAD ("$
982 JMP I GETDOL /TAKE NON-SKIP RETURN WITH $ IN AC
983 \fGETCOM, JMS I (MOVE
984 -112 /PUT BUFFER INTO KEYBOARD MON.
985 LINBUF+1
986 CDF 0
987 BEGLN
988 TAD I (AMODE /V3C GET BATCH ALTMODE FLAG
989 SZA CLA
990 STL RAL /SET KBM ALTMODE FLAG IF NECESSARY
991 CIF CDF 0
992 DCA I (AMFLAG /IT'S IN FIELD 0
993 JMP I .+1 /AND GO PROCESS IT
994 KEYMON+1
995 M2, -2
996
997 OUTCHR, 0
998 JMS I BOUTDV
999 JMP I OUTCHR
1000
1001 BOUTDV, TTYOUT
1002 OUTPUT, 0
1003 DOLFLG, 0 /$ SLEW FLAG - NEGATIVE IF SLEW
1004 HUSH, 0 /NON-0 MEANS HUSHED (/H)
1005 PAGE
1006 \fBOSSW, 0 /BATCH STATUS FLAG.
1007 MSG, 0
1008 TAD I (DOLFLG /IF $JOB SLEW SET, DON'T PAUSE
1009 SPA CLA
1010 JMP I MSG
1011 TAD BOSSW /NO ECHO IF TTY IS OUTPUT
1012 CLL RTR
1013 SZL CLA
1014 JMS I (ECHOT
1015 TAD BOSSW /IS OPERATOR AVAILABLE?
1016 CLL RAR
1017 SZL CLA
1018 JMP I MSG /NO. CONTINUE
1019 TAD (207
1020 JMS I (TTYOUT
1021 KCC /WAIT A WHILE
1022 JMS I (TTY
1023 JMP I MSG
1024
1025 TESTB, 0 /TEST ROUTINE. TEST LIST AGAINST BNAM
1026 TAD I TESTB
1027 DCA PRMESG /# ELEMENTS IN LIST
1028 TSTB2, ISZ TESTB /POINT TO ELEMENT
1029 TAD I TESTB
1030 ISZ TESTB
1031 TAD I (BNAM /TEST IT
1032 SNA CLA
1033 JMP TSBOVR /A MATCH
1034 ISZ PRMESG
1035 JMP TSTB2
1036 ISZ TESTB
1037 JMP I TESTB /NO MATCH
1038 TSBOVR, TAD I TESTB
1039 DCA TESTB
1040 JMP I TESTB
1041
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
1047 DCA PRTEMP
1048 JMS I (CRLF
1049 TAD ("# /BATCH ERROR SIGNAL
1050 JMS I (OUTCHR
1051 PRMSG2, TAD I PRTEMP
1052 CLL RTR;RTR;RTR
1053 JMS PNCH
1054 TAD I PRTEMP
1055 JMS PNCH
1056 ISZ PRTEMP
1057 JMP PRMSG2 /CYCLE UNTIL A 0
1058 PNCH, 0
1059 AND (77
1060 SNA
1061 JMP PRTTY /COULD BE OPTIMIZED
1062 TAD (240
1063 AND (77
1064 TAD (240
1065 JMS I (OUTCHR
1066 JMP I PNCH
1067
1068
1069 PRTTY, JMS I (CRLF
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
1073 SNA
1074 JMP PRMOUT /ALREADY ON TTY
1075 AND TESTB /CALL WITH AC=1 MEANS NO TTY OUTPUT
1076 SZA CLA
1077 JMP PRMOUT
1078 TAD (TTYOUT
1079 DCA I (BOUTDV /SET TTY
1080 CLA CMA /SET TESTB TO SKIP
1081 JMP PRMESG+1
1082 PRMOUT, TAD I (OUTPUT /RESTORE OUTPUT
1083 DCA I (BOUTDV
1084 ISZ PRMESG /SKIP ARGUMENT
1085 JMP I PRMESG
1086 \fKMLINK, 0 /LINK BATCH AND KEYBOARD I/O.
1087 RIF
1088 TAD BCDIF0 /SETUP A JUMP IN KEYBOARD.
1089 DCA KMLST
1090 TAD KMLST /AND ANOTHER FOR PRINT ROUTINE
1091 DCA KMLST2
1092 JMS I (MOVE /PUT NEW CODE INTO KEYBOARD
1093 -3
1094 KMLST
1095 CDF 0
1096 PRINT+1 /THIS IS OUTPUT LINK
1097 JMS I (MOVE /NOW INPUT LINK.
1098 -3
1099 KMLST2
1100 CDF 0
1101 XGLINE+1
1102 JMP I KMLINK
1103
1104 /** NEXT 3 WORDS LOAD INTO "PRINT+1" IN KEYBOARD MONITOR **
1105
1106 KMLST, CIF CDF 0 /ALTERED AT RUN-TIME
1107 PRINT+3&177+5600 /ALLOWS TALKING THRU BATCH
1108 BOSPRT
1109
1110 /** NEXT 3 WORDS LOAD INTO "XGLINE+1" IN KEYBOARD MONITOR **
1111
1112 KMLST2, CIF CDF 0
1113 XGLINE+3&177+5600 /"JMP I .+1"
1114 BOS
1115
1116 BCDIF0, CIF CDF 0
1117 PRTEMP, 0
1118 \fNXPRG, JMS TESTB /SEE IF WE HAVE . OR /
1119 -4
1120 -".;GETCOM
1121 -"/;BOSSB
1122 -"$;KMDOLR
1123 -"*;BOSSB /ERRONEOUS CD CARD.
1124 JMP I (KJOB
1125 PAGE
1126 \fGLINE, 0 /LINE COLLECTION ROUTINE
1127 TAD (LINBUF-1
1128 DCA GLPTR
1129 GET, JMS I (BATIN /GO TO SPECIFIED INPUT DEVICE
1130 JMP EOF /TIME-OUT OR FATAL
1131 DCA BNAM
1132 JMS I (TESTB /TEST FOR SPECIAL CHARS.
1133 -5
1134 -215;CARROT
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
1139 TAD BNAM
1140 SKP
1141 BKAROW, TAD ("<
1142 ISZ GLPTR
1143 DCA I GLPTR
1144 TAD GLPTR
1145 TAD (-LINBUF-110 /OVERFLOW BUFFER?
1146 SPA CLA
1147 JMP GET /NOT YET.
1148 CARROT, TAD I GLPTR /GET LAST CHAR INPUT
1149 TAD (-244 /$?
1150 SZA CLA
1151 JMP NALTMD /NO
1152 TAD I GLPTR /GET $
1153 SKP
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
1157 TAD I (LINBUF
1158 SNA CLA /WAS LINE NULL?
1159 JMP GLINE+1 /YES - IGNORE
1160 JMP I GLINE
1161
1162 EOF, KCC /HANG ON INPUT ACTION
1163 JMS I (PRMESG /INDICATE FAILURE
1164 INPMSG
1165 JMS I (TTY /WAIT FOR INPUT
1166 JMP GET /AND RETURN
1167
1168 AMODE, 0
1169 GLPTR, 0
1170 \f/DOLRD INTERPRETS $ CARDS
1171
1172 DOLRD, 0
1173 TAD (LINBUF /GET THE NAME OF THE $ COMMAND
1174 DCA BLPTR
1175 DCA BNAM
1176 GWRD2, ISZ BLPTR
1177 TAD I BLPTR
1178 SNA
1179 JMP NOCMD /FUNNY..NOTHING THERE!
1180 TAD (-240 /IGNORE LEADING SPACES
1181 SNA
1182 JMP GWRD2
1183 TAD (-240 /NOT A SPACE. TAKE WHATEVER IT IS.
1184 AND (77
1185 CLL RTL;RTL;RTL
1186 DCA BNAM /KEYBOARD MON. WILL EXAMINE IT.
1187 ISZ BLPTR
1188 TAD I BLPTR
1189 AND (77
1190 TAD BNAM
1191 DCA BNAM
1192 NOCMD, TAD BNAM
1193 SNA CLA
1194 JMP I (KJOB
1195 JMS I (TESTB /TEST IT
1196 -3
1197 -0516;END /$END CARD
1198 -1523;MSGST /$MSG CARD IMAGE
1199 -1217;JOB /$JOB CARD
1200 DLCRUD, ISZ DOLRD /$CRUD
1201 JOB, TAD I DOLRD
1202 DCA DOLRD
1203 JMP I DOLRD
1204
1205 MSGST, JMS I (MSG /PRINT MESSAGE
1206 JMP DLCRUD /TREAT LIKE CRUD
1207
1208 CDOLLR, JMS DOLRD
1209 CDKBD /$JOB
1210 CDGET /$OTHER
1211
1212 KMDOLR, JMS DOLRD
1213 DOLECH /$JOB
1214 BOSSB /$OTHER
1215
1216 BLPTR, 0
1217 BNAM, 0
1218 \f/HERE FROM CD WHEN DONE TO ANALYZE CD AREA
1219
1220 CDRENT, CDF 0
1221 TAD I (LKUPSW /GET THE DEFAULT EXTENSION
1222 JMS I (CDFRST /SET CURRENT DF
1223 JMS I (CDSCN /SCAN CD LINE
1224 KCC
1225 TCF /CLEAR FLAGS JUST LIKE CD WOULD
1226 CDF CIF 0
1227 JMP I (CDOVER+3 /RESUME CD AT TERMINATION CODE
1228 PAGE
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
1233
1234 TTYOUT, 0 /TESTS AC FOR FORM FEED
1235 TAD (-214
1236 SNA
1237 JMP TFORM /GENERATE LINE FEEDS
1238 TAD (214
1239 JMS TTYPE
1240 JMP I TTYOUT
1241 TFORM, TAD (-4
1242 DCA TCOUNT
1243 TAD (212
1244 JMS TTYPE
1245 ISZ TCOUNT
1246 JMP .-3
1247 JMP I TTYOUT
1248 TCOUNT, 0
1249
1250 NULOUT, 0
1251 CLA /DEEP-SIX THE CHARACTER
1252 JMS I (CTRLC
1253 JMP I NULOUT
1254 \fTTYPE, 0 /TELETYPE OUTPUT STUFF
1255 TLS
1256 TSF
1257 JMP .-1
1258 CLA
1259 JMS I (CTRLC
1260 JMP I TTYPE
1261
1262 BOSPRT, JMS ERHDR /PRINT MESSAGE
1263 CIF CDF 0
1264 JMP I (PRINT+10
1265
1266 CDFRST, 0
1267 BOSCDF, HLT
1268 JMP I CDFRST
1269
1270 ERHDR, 0 /ERROR HEADER ROUTINE
1271 DCA CDFRST /SAVE CHARACTER
1272 TAD I (DOLFLG /FIRST ENTRY?
1273 SZA CLA
1274 JMP .+3 /NO.
1275 TAD ("# /ERROR PROMPT
1276 JMS I (OUTCHR
1277 TAD I (BOSSW /GET BATCH FLAGS WORD
1278 CMA
1279 AND (1000 /SET $ SLEW FLAG NEGATIVE IF NO /E,
1280 STL RTL /NON-ZERO IN ANY CASE
1281 DCA I (DOLFLG
1282 TAD CDFRST
1283 JMS I (OUTCHR
1284 JMP I ERHDR
1285
1286 CRLF, 0
1287 TAD (215
1288 JMS I (OUTCHR
1289 TAD (212
1290 JMS I (OUTCHR
1291 JMP I CRLF
1292
1293 BOSLPT, 0 /BATCH LINE PRINTER ROUTINE
1294 PCLS
1295 CLA
1296 JMS I (CTRLC
1297 PSKF
1298 JMP .-2
1299 JMP I BOSLPT
1300
1301 MORKIL, JMS I (CDFRST
1302 TAD I (OLDCOR
1303 CIF CDF 0
1304 DCA I (7777 /RESTORE WORD
1305 JMP I (7605
1306 PAGE
1307 \f/ERROR MESSAGES
1308
1309 CDEMSG, TEXT /MONITOR OVERLAYED/
1310 INPMSG, TEXT /INPUT FAILURE/
1311 BADMSG, TEXT /BAD LINE. JOB ABORTED/
1312 SERMSG, TEXT /SYS ERROR/
1313
1314 LINBUF, ZBLOCK 113
1315
1316 PAGE
1317 \fBATABT, JMS I (CDFRST /THIS CODE IS HERE FOR CCL!
1318 TAD I (BOSSW /GET BATCH SWITCHES
1319 CMA
1320 AND (1000 /IF /E FLAG IS UP CCL ERRORS ARE NON-FATAL,
1321 CLL RTL
1322 JMP CDKILX /OTHERWISE WE SHOULD ABORT BATCH ON THEM
1323
1324 CDGET, JMS I (GLINE /READ INPUT
1325 TAD I (HUSH
1326 SNA CLA /DON'T ECHO CD LINES IF HUSHED
1327 JMS I (ECHO
1328 TAD (LINBUF-1
1329 DCA CDGPTR
1330 TAD I (DOLFLG /$JOB FLAG UP?
1331 SPA CLA
1332 JMP CDKBD /SLEW UNTIL $JOB
1333 ISZ CDGPTR
1334 TAD I CDGPTR
1335 DCA I (BNAM
1336 JMS I (TESTB /TEST PROMPT CHAR.
1337 -4
1338 -"*;CDLINE /* IS OK
1339 -"/;CDGET /REMARK
1340 -"$;CDOLLR
1341 -".;CDKBD /RECALL KEYBOARD MON.
1342 KJOB, JMS I (PRMESG
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
1347 CIF CDF 0
1348 JMP I .+1
1349 7605 /RESTART.
1350
1351 CDKBD, CIF 0
1352 JMS I (SYSTEM
1353 1000
1354 0
1355 KMREC
1356 SYIERR, SKP CLA
1357 JMP .+4
1358 JMS I (PRMESG
1359 SERMSG
1360 HLT
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
1364 CIF CDF 0
1365 DCA I (BCHGO+2
1366 JMP I (BEGLN+1
1367
1368 CDGPTR, 0
1369 \fCDLINE, JMS I (MOVE /PUT LINE INTO CD
1370 -112
1371 LINBUF+1
1372 CDF 0
1373 CDBEGLN
1374 TAD I (AMODE
1375 CDF 10
1376 SZA CLA /CHECK WHETHER ALTMODE TERMINATED LINE
1377 STL RAR /IT DID - SET CD ALTMODE FLAG
1378 DCA I (MPARAM-1
1379 CIF CDF 0
1380 JMP I .+1
1381 ANALYZ
1382
1383 DEVKIL, JMS I (PRMESG
1384 PTRMSG
1385 JMP CDKILL
1386
1387 HLPMSG, TEXT /MANUAL HELP NEEDED/
1388 PTRMSG, TEXT /ILLEGAL INPUT DEVICE/
1389 EOBMSG, TEXT /END BATCH/
1390 SPLMSG, TEXT /SPOOL TO FILE /
1391 *.-1
1392 BCHFIL, TEXT /BTCHA0/
1393 PAGE
1394 \f/SUBROUTINE TO ANALYZE CD AREA - ENTER FROM ANY FIELD
1395 /WITH DEFAULT EXTENSION IN AC
1396
1397 CDSCN, 0
1398 DCA EXT /SAVE EXTENSION
1399 RDF
1400 TAD (CDF CIF 0
1401 DCA CDSCRT /SAVE RETURN FIELD
1402 TAD (7600
1403 DCA CDTEMP /LOOK AT CD AREA
1404 MTHREE
1405 DCA CDCNT
1406 CDSCAN, JMS I (CDFRST
1407 TAD I (BOSSW
1408 CLL RTL
1409 CDF 10
1410 SZL CLA /IS SPOOLING ENABLED
1411 TAD I CDTEMP /AND IS THERE AN OUTPUT?
1412 AND (17
1413 SNA
1414 JMP NCKSPL /NO - DON'T LOOK
1415 TAD (DCB-1 /CHECK FILE OR NON-FILE STATUS
1416 DCA CDTMP2
1417 TAD I CDTMP2 /SPOOL NON-FILE DEVICES
1418 SPA CLA
1419 JMP NCKSPL /FILE STRUCTURED OUTPUT
1420 TAD I CDTEMP
1421 AND (7760
1422 TAD SPLDEV /RESET CD AREA
1423 DCA I CDTEMP
1424 ISZ CDTEMP /POINT TO FILENAME AREA
1425 JMS I (CDFRST
1426 TAD I (SPLNUM
1427 AND (11
1428 CIA
1429 TAD (11
1430 SNA CLA
1431 TAD (66
1432 IAC
1433 TAD I (SPLNUM
1434 DCA I (BCHFIL+2
1435 JMS I (MOVE
1436 -4
1437 BCHFIL
1438 CDF 10
1439 CDTEMP, 0 /76XX
1440 JMS I (PRMESG /PRINT FILENAME
1441 SPLMSG
1442 TAD I (BCHFIL+2 /SET NEW FILENAME
1443 DCA I (SPLNUM
1444 CLA CMA
1445 NCKSPL, TAD CDTEMP
1446 TAD (5
1447 DCA CDTEMP
1448 TAD EXT
1449 SNA CLA
1450 JMP CDSCRT /YES - LOOK NO MORE
1451 ISZ CDCNT
1452 JMP CDSCAN /KEEP LOOKING
1453 \fCDX1, TAD (-11 /SCAN INPUT AREA
1454 DCA CDCNT
1455 TAD (7617
1456 DCA CDPTR /PICK UP MANUAL INPUTS.
1457 INPSCN, CDF 10
1458 TAD I CDPTR
1459 SNA /ANY INPUTS?
1460 JMP CDSCRT /3 GUESSES!
1461 AND (17
1462 TAD (DCB-1 /GET DEVICE IDENTIFIER
1463 DCA CDTMP2
1464 TAD I CDTMP2
1465 AND (770
1466 JMS I (CDFRST
1467 SNA
1468 JMP RBELL /TELETYPE INPUT - CHECK OPERATOR
1469 TAD (-10
1470 SZA CLA
1471 JMP CDX3 /OK INPUT DEVICE
1472 TAD I (BOSSW
1473 SPA CLA /PTR: INPUT - IS BATCH FROM PTR?
1474 JMP I (DEVKIL /YES - ILLEGAL
1475 RBELL, TAD I (BOSSW /OPERATOR AVAILABLE?
1476 CLL RAR
1477 SZL CLA
1478 JMP I (DEVKIL /NO. ABORT THE JOB
1479 TAD (207
1480 JMS I (TTYOUT
1481 JMS I (PRMESG
1482 HLPMSG /MANUAL INTERVENTION REQUIRED.
1483 JMS I (CRLF
1484 JMP CDSCRT
1485 CDX3, CLA CLL CML RTL
1486 TAD CDPTR
1487 DCA CDPTR
1488 ISZ CDCNT
1489 JMP INPSCN
1490 CDSCRT, HLT
1491 JMP I CDSCN /RETURN TO CALLER
1492
1493 SPLDEV, 0 /GETS SPOOL DEVICE #
1494 EXT, 0
1495 CDPTR, 0
1496 CDCNT, 0
1497 CDTMP2, 0
1498 PAGE
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
1502
1503 BATOUT, 0 /CALLABLE FROM ANY FIELD
1504 DCA CTRLC /WITH CHARACTER IN AC
1505 RDF
1506 TAD CDCF0 /GET CDF CIF TO CALLING FIELD
1507 DCA BATORT
1508 JMS I (CDFRST /CDF TO CURRENT FIELD
1509 TAD CTRLC
1510 JMS I (OUTCHR /OUTPUT THE CHARACTER
1511 BATORT, HLT
1512 JMP I BATOUT
1513 \f/ENTER HERE FROM COMMAND DECODER WHEN CD CALLED
1514
1515 CDBOS, RIF /FILL IN CIF CDF N
1516 TAD CDCF0 /TO LINK CD AND BOS
1517 DCA CDLST1
1518 TAD CDLST1
1519 DCA CDLST2
1520 TAD CDLST2
1521 DCA CDLST3
1522 JMS MOVE
1523 CM3, -3
1524 CDLST1
1525 CDF 0
1526 TYPE+1 /LINK ERROR PRINTOUT TO BOS
1527
1528 JMS MOVE
1529 -3
1530 CDLST2
1531 MCDF0, CDF 0
1532 CGLINE /LINK INPUT TO BOS
1533
1534 JMS MOVE
1535 -3
1536 CDLST3
1537 CDF 0
1538 CDOVER /EXIT FROM LINE ANALYSIS
1539 CDCF0, CIF CDF 0
1540 JMP I .+1
1541 RESTRT+1 /START UP CD
1542
1543 /** THESE 3 WORDS LOAD INTO "TYPE+1" IN THE COMMAND DECODER **
1544 CDLST1, CIF CDF 0
1545 TYPE+3&177+5600 /"JMP I .+1"
1546 CDPRT
1547
1548 /** THESE 3 WORDS LOAD INTO "CGLINE" IN THE COMMAND DECODER **
1549 CDLST2, CIF CDF 0
1550 CGLINE+2&177+5600 /"JMP I .+1"
1551 CDGET /RETURN TO CDGET AFTER ZEROING CD AREA
1552
1553 /** THESE 3 WORDS LOAD INTO "CDOVER" IN THE COMMAND DECODER **
1554 CDLST3, CIF CDF 0
1555 CDOVER+2&177+5600 /"JMP I .+1"
1556 CDRENT
1557 \fCTRLC, 0 /CHECK FOR ^C
1558 KRS
1559 AND (177
1560 TAD CM3
1561 SNA CLA
1562 KSF
1563 JMP I CTRLC
1564 JMP I .+1
1565 BKILL
1566
1567 ECHOT, 0 /ECHOES LINE ON TTY
1568 TAD (TTYOUT /SET TTY AS OUTPUT
1569 DCA I (BOUTDV
1570 JMS ECHO /ECHO IT
1571 JMS I (CRLF
1572 TAD I (OUTPUT
1573 DCA I (BOUTDV /RESET OUTPUT
1574 JMP I ECHOT
1575
1576 TTY, 0
1577 KSF
1578 JMP .-1
1579 JMS CTRLC
1580 KCC
1581 JMP I TTY
1582
1583 ECHO, 0 /ECHO INPUT LINE
1584 TAD (LINBUF-1
1585 DCA EPTR
1586 ECHO2, ISZ EPTR
1587 TAD I EPTR
1588 SNA
1589 JMP ECO3
1590 JMS I (OUTCHR
1591 JMP ECHO2
1592 ECO3, TAD I (AMODE /NEED $ PRINTED?
1593 SZA
1594 JMS I (OUTCHR /YES
1595 JMS I (CRLF
1596 JMP I ECHO
1597 \fMOVE, 0
1598 RDF
1599 TAD MCDF0
1600 DCA MVIPUT
1601 TAD I MOVE
1602 DCA MVTMP /COUNT
1603 ISZ MOVE
1604 CLA CMA
1605 TAD I MOVE
1606 DCA MVPT1 /INPUT STUFF
1607 ISZ MOVE
1608 TAD I MOVE
1609 DCA MVOPUT /OUTPUT FIELD
1610 ISZ MOVE
1611 CLA CMA
1612 TAD I MOVE
1613 DCA MVPT2
1614 ISZ MOVE
1615 MVIPUT, HLT
1616 ISZ MVPT1
1617 TAD I MVPT1
1618 MVOPUT, HLT
1619 ISZ MVPT2
1620 DCA I MVPT2
1621 ISZ MVTMP
1622 JMP MVIPUT
1623 JMS I (CDFRST
1624 JMP I MOVE
1625
1626 MVTMP= CTRLC
1627
1628 MVPT1, 0
1629 MVPT2, 0
1630 EPTR, 0
1631
1632 CDPRT, JMS I (ERHDR
1633 CIF CDF 0 /LINK BACK TO CD
1634 JMP I .+1
1635 TYPE+10
1636 PAGE
1637
1638 FIELD 0
1639 *200
1640 $$$$$$$$$$
1641 \f