Commit | Line | Data |
---|---|---|
81e70d48 PH |
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 |