Commit | Line | Data |
---|---|---|
7af5ad59 PH |
1 | /LIBRA: F4 LIBRARIAN, V24A |
2 | / | |
3 | / | |
4 | / | |
5 | / | |
6 | / | |
7 | / | |
8 | / | |
9 | // | |
10 | / | |
11 | / | |
12 | / | |
13 | / | |
14 | /COPYRIGHT (C) 1974, 1975 | |
15 | /DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. | |
16 | / | |
17 | / | |
18 | / | |
19 | /THIS SOFTWARE IS FURNISHED UNDER A LICENSE FOR USE ONLY ON A | |
20 | /SINGLE COMPUTER SYSTEM AND MAY BE COPIED ONLY WITH THE INCLU- | |
21 | /SION OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE, OR ANT OTHER | |
22 | /COPIES THEREOF, MAY NOT BR PROVIDED OR OTHERWISE MADE AVAILABLE | |
23 | /TO ANY OTHER PERSON EXCEPT FOR USE ON SUCH SYSTEM AND TO ONE WHO | |
24 | /AGREES TO THESE LICENSE TERMS. TITLE TO AND OWNERSHIP OF THE | |
25 | /SOFTWARE SHALL AT ALL TIMES REMAIN IN DEC. | |
26 | / | |
27 | / | |
28 | /THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT | |
29 | /NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL | |
30 | /EQUIPMRNT COROPATION. | |
31 | / | |
32 | /DEC ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS | |
33 | /SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC. | |
34 | / | |
35 | / | |
36 | / | |
37 | / | |
38 | / | |
39 | / | |
40 | \f/LIBRA: FORTRAN IV LIBRARIAN | |
41 | / | |
42 | / | |
43 | / BORN OF JUD LEONARD, UNDER THE | |
44 | / SIGN FOR WHICH IT IS NAMED. | |
45 | / | |
46 | / | |
47 | / CHANGES FOR V23 | |
48 | / .PRINT VERSION NUMBER | |
49 | / .ACCEPT INPUT FROM CONSOLES WITHOUT PARITY | |
50 | / | |
51 | / | |
52 | / CHANGES FOR OS/8 V3D BY PAULA TIRAK | |
53 | / .CHANGED VERSION NUMBER TO 24A | |
54 | / .PUT IN NEW DATE ALGORITHM | |
55 | / .NO LONGER MISNAMES THE SECOND OUTPUT FILE | |
56 | / | |
57 | / | |
58 | / OS/8 CONSTANTS: | |
59 | VERS=24 | |
60 | PATCH="A | |
61 | / | |
62 | FETCH=1 | |
63 | LOOKUP=2 | |
64 | ENTER=3 | |
65 | CLOSE=4 | |
66 | DECODE=5 | |
67 | CHAIN=6 | |
68 | ERROR=7 | |
69 | USRIN=10 | |
70 | USROUT=11 | |
71 | / | |
72 | OUTF1=7600 /LIBRARY | |
73 | OUTF2=7605 /CATALOG LISTING | |
74 | OUTF3=7612 /UNUSED | |
75 | INF=7617 | |
76 | / | |
77 | EQHI=7642 | |
78 | SWATOL=7643 | |
79 | SWMTOX=7644 | |
80 | SWYTO9=7645 | |
81 | EQLO=7646 | |
82 | DHRES=7647 /HANDLER RESIDENCY TABLE | |
83 | SYSDAT=7666 /SYSTEM DATE | |
84 | DCTLW=7760 /DEVICE CONTROL WORD TABLE | |
85 | / DEVICE CONTROL WORDS HAVE THE FORM: | |
86 | / BIT 0 FILE STRUCTURED | |
87 | / BIT 1 READ ONLY | |
88 | / BIT 2 WRITE ONLY | |
89 | / BITS 3-8 DEVICE TYPE | |
90 | / BITS 9-11 DIR BLOCK OF CURRENT TENTATIVE FILE | |
91 | / | |
92 | / INTERNAL DEFINITIONS: | |
93 | F0=00 | |
94 | F1=10 | |
95 | CATBUF=2000 /IN FIELD 1 | |
96 | CBUFS=1 /NUMBER OF BUFFERS FOR CATALOG | |
97 | MODBUF=2400 /LIKEWISE | |
98 | MBUFS=12 /BUFFERS FOR MODULE | |
99 | ODEVH=7200 /OUTPUT DEVICE HANDLER (ROOM FOR 2-PAGE) | |
100 | IDEVH=6600 /INPUT DEVICE HANDLER | |
101 | \f/ | |
102 | / PAGE 0 FOR LIBRA | |
103 | / | |
104 | *1 | |
105 | TMP1, 0 | |
106 | TMP2, 0 /SOME TEMPS | |
107 | TMP3, 0 | |
108 | TMP4, 0 | |
109 | TMP5, 0 | |
110 | TMP6, 0 | |
111 | TMP7, 0 | |
112 | X0, 0 /AUTO-INDEX | |
113 | X1, 0 | |
114 | X2, 0 | |
115 | X3, 0 | |
116 | X4, 0 | |
117 | X5, 0 | |
118 | X6, 0 | |
119 | X7, 0 | |
120 | USR, 200 /CURRENT USR CALL ADDRESS | |
121 | /LIBRA ASSUMES USR ALWAYS PRESENT | |
122 | LIBDVH, ODEVH /ADDRESS OF LIBRARY DEVICE HANDLER | |
123 | LIBU, 1 /UNIT CONTAINING LIBRARY; INITIALLY SYS: | |
124 | CATLEN, 0 /LENGTH OF CATALOG | |
125 | CATBLK, 0 /CURRENT CATALOG BLOCK IN CORE | |
126 | LAVAIL, 0 /NEXT AVAILABLE LIBRARY BLOCK | |
127 | LIBNAM, TEXT "FORLIBRL" | |
128 | *.-1 | |
129 | INFP, INF /CURRENT PLACE IN INPUT FILE LIST | |
130 | MODU, 0 /UNIT CONTAINING CURRENT MODULE | |
131 | MODDVH, IDEVH /INPUT DEVICE HANDLER ADDRESS | |
132 | MODLEN, 0 /LENGTH OF THIS MODULE | |
133 | MODBLK, 0 /FIRST BLOCK OF MODULE | |
134 | INLSW, 0 /NON-ZERO IF IN LIBRARY INPUT | |
135 | INFST, 0 /FIRST BLOCK OF INPUT FILE | |
136 | INBLK, 0 /NEXT INPUT BLOCK NUMBER | |
137 | THSBLK, 0 /READIN CONTROL | |
138 | FULFLG, 0 /-1 IF CAT FULL | |
139 | \fENAM1, 0 | |
140 | ENAM2, 0 /HOLDER FOR ESD NAMES | |
141 | ENAM3, 0 | |
142 | 0 /TEXT STOPPER FOR ENAME | |
143 | ESDCTR, 0 | |
144 | PCAT, CATBUF /POINTER TO CURRENT CATALOG BLOCK | |
145 | INCLUD, -1 /SW FOR NAME INCLUDED IN CATALOG | |
146 | CHANGD, 1 /0 IF CAT BLOCK MODIFIED | |
147 | PMOD, MODBUF /POINTER TO CURRENT MODULE BLOCK | |
148 | / | |
149 | TTFLAG, 0 /NON-ZERO WHEN TTY HAS INITIALIZED | |
150 | PCHR, TTO /OUTPUT ROUTINE | |
151 | TTPOS, 0 /TTY POSITION COUNTER | |
152 | CATCNT, 0 | |
153 | IOERR, 0 | |
154 | 7421 /ERROR CODE TO MQ | |
155 | JMP I .+1 | |
156 | IOMES /LOG THE ERROR | |
157 | \f/ LIBRA MAIN CONTROL | |
158 | / | |
159 | *177 /MAKES IT EASY TO CALL START | |
160 | START, CDF F0 | |
161 | JMS TTWAIT /ALLOW TTY TO COMPLETE | |
162 | CIF F1 | |
163 | JMS I USR | |
164 | DECODE | |
165 | TXTRL, 2214 /RL DEFAULT EXT | |
166 | TAD (INF /RESET INPUT FILE POINTER | |
167 | DCA INFP | |
168 | TAD (TTO /AND IO DEVICE | |
169 | DCA PCHR | |
170 | DCA FULFLG | |
171 | CDF F1 | |
172 | TAD I (OUTF1 | |
173 | SNA /NEW LIBRARY SPECIFIED? | |
174 | JMP LASTLB /NO, USE LAST ONE | |
175 | DCA LIBU /GET LIBRARY UNIT | |
176 | TAD (OUTF1 | |
177 | DCA X0 | |
178 | TAD I X0 | |
179 | DCA LIBNAM /MOVE | |
180 | TAD I X0 /IN | |
181 | DCA LIBNAM+1 /NEW | |
182 | TAD I X0 /NAME | |
183 | DCA LIBNAM+2 | |
184 | TAD I X0 | |
185 | SNA | |
186 | TAD TXTRL /IF NO EXT, FORCE .RL | |
187 | DCA LIBNAM+3 | |
188 | LASTLB, TAD LIBU /REGET UNIT | |
189 | AND (17 | |
190 | TAD (DCTLW-1 /ADDRESS DEV CTL TABLE | |
191 | DCA TMP1 | |
192 | TAD I TMP1 | |
193 | CDF F0 | |
194 | SMA CLA /IS DEVICE FILE-STRUCTURED? | |
195 | JMP NOTFS /NO, BOMB | |
196 | TAD (ODEVH!1 | |
197 | DCA OHADDR /ALLOW 2-PAGE HANDLER | |
198 | TAD LIBU | |
199 | AND (17 | |
200 | CIF F1 | |
201 | JMS I USR /GET THE HANDLER | |
202 | FETCH | |
203 | OHADDR, ODEVH!1 | |
204 | JMS IOERR /YOU'RE KIDDING | |
205 | TAD OHADDR /NOW THE REAL ADDRESS | |
206 | DCA LIBDVH | |
207 | JMP ZTEST | |
208 | \fNOTFS, JMS TTOTXT | |
209 | FLSTR-1 | |
210 | JMS CRLF | |
211 | JMP START | |
212 | / | |
213 | IOMES, CLA | |
214 | TAD (TTO | |
215 | DCA PCHR /ENSURE IT COMES OUT ON TTY | |
216 | JMS TTOTXT | |
217 | IOMSG-1 | |
218 | JMS CRLF | |
219 | JMP START | |
220 | PAGE | |
221 | \fZTEST, CDF F1 /FIND OR CREATE LIB. | |
222 | TAD I (SWYTO9 /GET SWITCH WORD | |
223 | AND (2000 /TEST FOR /Z | |
224 | CDF F0 | |
225 | SZA CLA | |
226 | JMP NEWLIB /YES, ENTER NEW ONE | |
227 | OLDLIB, JMS FNDLIB /LOOKUP THE LIBRARY | |
228 | LOOKUP | |
229 | JMP NEWLIB /COULDN'T FIND IT | |
230 | / | |
231 | TAD LIBBLK /FIRST BLOCK OF LIBRARY | |
232 | DCA ZCATB | |
233 | TAD (CBUFS+MBUFS^200!F1 | |
234 | DCA ZCATC /READ ALL YOU CAN | |
235 | JMS ZCAT /DO THE READ | |
236 | CDF F1 | |
237 | TAD I (CATBUF /LOOK AT CONTROL WORD | |
238 | CLL RAR | |
239 | SZA CLA /IS IT A LIBRARY? | |
240 | JMP NOTLIB /NO, ERROR | |
241 | TAD I (CATBUF+3 | |
242 | CDF F0 | |
243 | DCA CATLEN /LENGTH IN BLOCKS | |
244 | TAD LIBBLK | |
245 | DCA LAVAIL /WILL BE UPDATED DURING SCAN | |
246 | TAD LAVAIL | |
247 | DCA CATBLK /CURRENT BLOCK IN BUFFER | |
248 | TAD CATLEN | |
249 | CIA | |
250 | DCA TMP2 /COUNTER | |
251 | CSLOOP, TAD (CBUFS+MBUFS | |
252 | TAD TMP2 | |
253 | SMA /WILL THE REST FIT IN BUFFER? | |
254 | JMP CSLAST /YES | |
255 | DCA TMP2 | |
256 | TAD (-CBUFS-MBUFS^100 | |
257 | DCA TMP1 /ENTRIES NOW IN CORE | |
258 | JMS SCAT /SCAN CATALOG | |
259 | TAD ZCATB /NEXT BLOCK WE'LL READ | |
260 | DCA CATBLK | |
261 | JMS ZCAT /READ SOME | |
262 | JMP CSLOOP | |
263 | \fCSLAST, CIA /NO OF BLOCKS WE DON'T NEED | |
264 | TAD (CBUFS+MBUFS | |
265 | JMS R6L /NO OF ENTRIES WE CAN LOOK AT | |
266 | CIA | |
267 | DCA TMP1 | |
268 | JMS SCAT /LOOK FOR END | |
269 | FULCAT, JMS TTOTXT /RAN OFF THE END | |
270 | CATFUL-1 | |
271 | JMS CRLF /** | |
272 | JMP LCLOSE | |
273 | / | |
274 | SCAT, 0 | |
275 | TAD (CATBUF-1 | |
276 | DCA X0 | |
277 | SCLOOP, CDF F1 | |
278 | TAD I X0 | |
279 | CMA /TEST FOR END | |
280 | SNA CLA | |
281 | JMP GETINF /THAT'S IT | |
282 | ISZ X0 | |
283 | ISZ X0 /IGNORE REST OF NAME | |
284 | TAD I X0 /GET LENGTH | |
285 | TAD LAVAIL /ADD TO ST BLOCK OF FREE AREA | |
286 | DCA LAVAIL | |
287 | ISZ TMP1 | |
288 | JMP SCLOOP | |
289 | CDF F0 | |
290 | JMP I SCAT /GO FOR NEXT BUFFER LOAD | |
291 | / | |
292 | NOTLIB, JMS PRLBNM /PRINT LIBRARY NAME | |
293 | JMS TTOTXT | |
294 | UNLIB-1 | |
295 | JMS CRLF | |
296 | JMP START | |
297 | PAGE | |
298 | \fNEWLIB, JMS FNDLIB | |
299 | ENTER | |
300 | JMS IOERR | |
301 | TAD LIBU | |
302 | AND (7760 | |
303 | CLL RTR | |
304 | RTR | |
305 | SNA /DID HE GIVE A LENGTH? | |
306 | STL RTL /NO, USE 2 | |
307 | DCA CATLEN | |
308 | CDF F1 | |
309 | TAD I (EQLO /HOW MANY EXTRA BLOCKS WANTED | |
310 | CDF F0 | |
311 | TAD CATLEN /PLUS CATALOG REQUIREMENT | |
312 | CLL | |
313 | TAD LIBLEN /MINUS AVAILABLE LENGTH | |
314 | SZL CLA /CHECK FOR ENUF ROOM | |
315 | JMP LSZERR /NO ROOM, GIVE MESSAGE | |
316 | / | |
317 | / WRITE EMPTY CATALOG | |
318 | / | |
319 | TAD (CATBUF-1 | |
320 | DCA X0 | |
321 | TAD (-MBUFS-CBUFS^400 | |
322 | DCA TMP1 | |
323 | CDF F1 | |
324 | DCA I X0 | |
325 | ISZ TMP1 | |
326 | JMP .-2 | |
327 | TAD (CATBUF-1 /RESET FOR LATER USE | |
328 | DCA X0 | |
329 | CLA CMA | |
330 | TAD CATLEN | |
331 | SPA SNA /MORE THAN ONE? | |
332 | JMP CATB0 /JUST ONE | |
333 | CIA | |
334 | ISZ ZCATB /START WITH SECOND CAT BLOCK | |
335 | ZCLOOP, CLL | |
336 | TAD (MBUFS+CBUFS | |
337 | DCA TMP1 | |
338 | SZL /FULL WRITE? | |
339 | TAD TMP1 /NO | |
340 | CIA | |
341 | TAD (MBUFS+CBUFS | |
342 | JMS R6R | |
343 | TAD (4000!F1 | |
344 | DCA ZCATC /SET CONTROL | |
345 | JMS ZCAT | |
346 | TAD TMP1 | |
347 | SPA | |
348 | JMP ZCLOOP /MORE TO GO | |
349 | CATB0, CDF F1 | |
350 | CLA IAC /1 IS LIBRARY CODE | |
351 | DCA I X0 | |
352 | TAD (VERS | |
353 | DCA I X0 /MARK LIBRA VERSION # | |
354 | TAD LIBLEN /JUST A GUESS | |
355 | CIA | |
356 | DCA I X0 | |
357 | TAD CATLEN | |
358 | DCA I X0 | |
359 | CLA CMA /END OF CAT INDICATOR | |
360 | DCA I X0 /MARKS FIRST AVAIL SLOT | |
361 | CDF F0 | |
362 | DCA CHANGD /FORCE A WRITE ON THIS ONE | |
363 | TAD ZCATB | |
364 | DCA LAVAIL | |
365 | TAD LIBBLK /LIBRARY START BLOCK | |
366 | DCA CATBLK /IS CURRENTLY IN BUFFER | |
367 | JMP GETINF /BEGIN | |
368 | / | |
369 | ZCAT, 0 | |
370 | CDF F0 | |
371 | JMS CCHK /LOOKOUT FOR CONTROL C | |
372 | JMS I LIBDVH | |
373 | ZCATC, F1 | |
374 | CATBUF | |
375 | ZCATB, 0 | |
376 | JMS IOERR | |
377 | TAD ZCATC | |
378 | JMS R6L | |
379 | AND (17 | |
380 | TAD ZCATB | |
381 | DCA ZCATB | |
382 | ISZ CHANGD /SET UNMODIFIED SW | |
383 | JMP I ZCAT | |
384 | JMP .-2 | |
385 | / | |
386 | FNDLIB, 0 | |
387 | TAD I FNDLIB | |
388 | DCA USRCOD | |
389 | ISZ FNDLIB | |
390 | TAD (LIBNAM | |
391 | DCA LIBBLK | |
392 | TAD LIBU | |
393 | AND (17 | |
394 | CIF F1 | |
395 | JMS I USR | |
396 | USRCOD, 0 | |
397 | LIBBLK, LIBNAM | |
398 | LIBLEN, 0 /NEG, REMEMBER | |
399 | JMP I FNDLIB /COULD'T DO IT | |
400 | TAD LIBBLK /FIRST BLOCK | |
401 | DCA ZCATB /OF CATALOG | |
402 | ISZ FNDLIB | |
403 | JMP I FNDLIB | |
404 | LSZERR, JMS TTOTXT | |
405 | SMALL-1 | |
406 | JMS CRLF | |
407 | JMP START /GO FOR MORE | |
408 | PAGE | |
409 | \f/ | |
410 | / SETUP POINTERS AND THINGS FOR NEXT INPUT MODULE | |
411 | / | |
412 | GETINF, CLA CMA | |
413 | DCA INCLUD /SET NO-NAME-INCLUDED SW | |
414 | TAD INLSW /ARE WE GETTING INPUT FROM A LIBR? | |
415 | SZA CLA | |
416 | JMP INLIB /YES-GET NEXT MODULE THEREIN | |
417 | NXTINF, CDF F1 | |
418 | TAD I INFP /UNIT AND LEN OF NEXT IN FILE | |
419 | SZA /IS THERE ONE? | |
420 | JMP FTCHIN /YES | |
421 | TAD I (SWATOL | |
422 | AND (1000 /TEST FOR /C | |
423 | CDF F0 | |
424 | SNA CLA | |
425 | JMP LCLOSE /NO MORE | |
426 | JMS SAVRES /PRESERVE DEV HANDLER RESIDENCY | |
427 | JMS TTWAIT /FINISH ANY TYPING | |
428 | CIF F1 | |
429 | JMS I USR /NEW LINE CONTINUES OLD | |
430 | DECODE | |
431 | 2214 /RL DEFAULT EXT | |
432 | 0 /DO NOT DELETE TENTATIVE FILES | |
433 | JMS RSTRES /RESTORE RESIDENCY TABLE | |
434 | TAD (INF | |
435 | DCA INFP /RESET INPUT FILE POINTER | |
436 | JMP NXTINF /TRY AGAIN | |
437 | \fFTCHIN, DCA MODU /UNIT CONTAINING INPUT MOD | |
438 | ISZ INFP | |
439 | TAD I INFP | |
440 | DCA INFST /START OF INPUT FILE | |
441 | ISZ INFP | |
442 | TAD INFST | |
443 | DCA MODBLK /IN THIS CASE, FILE=MODULE | |
444 | TAD MODU | |
445 | AND (7760 | |
446 | CIA | |
447 | CLL RTR | |
448 | RTR | |
449 | DCA MODLEN | |
450 | TAD (IDEVH!1 | |
451 | DCA INDVH /TENTATIVE HANDLER ADDR | |
452 | CDF F0 | |
453 | TAD MODU | |
454 | AND (17 | |
455 | CIF F1 | |
456 | JMS I USR | |
457 | FETCH | |
458 | INDVH, IDEVH!1 /TENTATIVE INPUT HANDLER ADDR | |
459 | JMS IOERR /DON'T GIVE ME THAT | |
460 | TAD INDVH | |
461 | DCA MODDVH /DEVICE HANDLER ADDRESS | |
462 | DCA THSBLK /FORCE READIN TO READ | |
463 | LUKMOD, TAD MODBLK /FIRST BLOCK OF MODULE | |
464 | DCA INBLK /INITIALIZE READIN | |
465 | JMS READIN /GET FIRST BLOCK | |
466 | CDF F1 | |
467 | CLA CMA /-1 | |
468 | TAD I PMOD /LOOK AT IDENTIFIER | |
469 | CDF F0 | |
470 | SNA | |
471 | JMP GOTLIB /ITS A LIBRARY | |
472 | CLL RTR | |
473 | SZA CLA /IS IT A MODULE | |
474 | JMP BADINF /BAD INPUT | |
475 | TAD LIBBLK /MAKE SURE | |
476 | CIA | |
477 | TAD LIBLEN /THAT MODULE | |
478 | TAD LAVAIL /FITS IN LIBRARY | |
479 | CLL | |
480 | SNA /CHECK FOR TOO LONG HERE TOO** | |
481 | JMP OVFLO /IT IS TOO LONG | |
482 | TAD MODLEN | |
483 | SNL CLA | |
484 | JMP NXTEBK /GO GETTUM | |
485 | OVFLO, JMS TTOTXT | |
486 | TOOBIG-1 | |
487 | JMS CRLF | |
488 | JMP GETINF | |
489 | \fBADINF, JMS TTOTXT | |
490 | NOTMOD-1 | |
491 | JMS CRLF | |
492 | JMP GETINF | |
493 | / | |
494 | GOTLIB, TAD MODLEN | |
495 | SNA CLA | |
496 | JMP LB2BIG /CAN'T DO A LOOKUP IF G. T. 255 | |
497 | ISZ INLSW /SET IN-LIBRARY SWITCH | |
498 | JMP INLIB | |
499 | LB2BIG, JMS TTOTXT | |
500 | L2BMSG-1 | |
501 | JMS CRLF | |
502 | JMP START | |
503 | PAGE | |
504 | \f/ GET NEXT MODULE FROM LIBRARY | |
505 | / | |
506 | INLIB, TAD INFST /START OF INPUT FILE | |
507 | DCA INBLK /IS WHAT WE WANT | |
508 | JMS READIN /BRING CATALOG INTO MODULE BUFFER | |
509 | TAD (3 | |
510 | TAD PMOD | |
511 | DCA TMP1 | |
512 | CDF F1 | |
513 | TAD I TMP1 /GET CATALOG LEN | |
514 | CIA | |
515 | DCA TMP1 /HOLD COUNTER IN CASE OF FULL CATALOG | |
516 | TAD INFST | |
517 | DCA INBLK /WE WANT THE SAME ONE AGAIN | |
518 | TAD INFST | |
519 | DCA TMP3 /INIT ACCUMULATED MODULE START BLOCK | |
520 | DCA MODLEN /INITAIL MOD LEN IS ZERO | |
521 | INLSC1, JMS READIN /GET CATALOG BLOCK | |
522 | TAD (-100 | |
523 | DCA TMP2 /COUNT ENTRIES IN CAT BLOCK | |
524 | INLSC2, CDF F1 | |
525 | TAD I PMOD /LOOK FOR END-OF-CATALOG WORD | |
526 | CMA | |
527 | SNA CLA | |
528 | JMP NDLSC /END OF SCAN | |
529 | TAD (3 | |
530 | TAD PMOD /POINT TO LENGTH | |
531 | DCA TMP5 | |
532 | TAD I TMP5 | |
533 | SNA CLA /FIRST ENTRY FOR A MODULE? | |
534 | JMP NOLEN /NO, DO NOT UPDATE | |
535 | TAD MODLEN | |
536 | TAD TMP3 /UPDATE MODULE STARTING BLOCK | |
537 | DCA TMP3 | |
538 | TAD I TMP5 /GET THIS LENGTH | |
539 | DCA MODLEN /FOR THIS MODULE | |
540 | NOLEN, TAD MODBLK /COMPARE LAST MODULE STARTING BLOCK | |
541 | CMA CLL | |
542 | TAD TMP3 /TO ACCUMULATED START BLOCK | |
543 | SNL CLA /INTERESTING? | |
544 | JMP NOTYET /NO | |
545 | TAD I PMOD /YES; WAS NAME DELETED? | |
546 | SZA CLA | |
547 | JMP GLMOD /NO, WE'VE GOT A GOOD MODULE | |
548 | NOTYET, TAD (4 | |
549 | TAD PMOD /POINT TO NEXT NAME | |
550 | DCA PMOD | |
551 | ISZ TMP2 /END OF CAT BLOCK? | |
552 | JMP INLSC2 /NO | |
553 | ISZ TMP1 /YES; END OF CATALOG? | |
554 | JMP INLSC1 /NO, GET NEW BLOCK | |
555 | NDLSC, DCA INLSW /YES, NO LONGER IN A LIBRARY | |
556 | JMP NXTINF /GET ANOTHER FILE | |
557 | \fGLMOD, TAD TMP3 /GET STARTING BLOCK | |
558 | DCA MODBLK /OF MODULE | |
559 | JMP LUKMOD /AND GO GET THE MODULE | |
560 | L2BMSG, TEXT "INPUT LIBRARY TOO BIG";0 | |
561 | PAGE | |
562 | \f/ PROCESS LOOP FOR ONE MODULE | |
563 | / | |
564 | NXTEBK, TAD (3 | |
565 | TAD PMOD /ADDR OF FIRST ESD-1 | |
566 | DCA X0 /RESET POINTER TO NAMES | |
567 | TAD (-52 /PER BLOCK COUNT | |
568 | DCA ESDCTR | |
569 | ESDLUP, CDF F1 | |
570 | TAD I X0 | |
571 | DCA ENAM1 | |
572 | TAD I X0 | |
573 | DCA ENAM2 | |
574 | TAD I X0 | |
575 | DCA ENAM3 | |
576 | TAD I X0 /TYPE CODE | |
577 | CDF F0 | |
578 | TAD (ESDTAB /DISPATCH FROM TBL | |
579 | DCA TMP1 | |
580 | JMP I TMP1 | |
581 | ESDTAB, JMP ESDEND /0=END OF ESD TABLE | |
582 | JMP DUPLUK /1=ENTRY=LOOK FOR | |
583 | /DUPLICATE NAME | |
584 | JMP ESDLND /2=EXTERN=IGNORE NAME | |
585 | JMP ESDLND /3=FORT COMMON=IGNORE | |
586 | JMP DUPLUK /4=PROG SECTION | |
587 | HLT /5=MUL ENTRY=DOESN'T | |
588 | /EXIST | |
589 | HLT /6=MUL SECTION=DITTO | |
590 | JMP DUPLUK /7=SECT8 | |
591 | JMP ESDLND /10=COMMZ | |
592 | JMP DUPLUK /11=FIELD1 | |
593 | \f/ | |
594 | / LOOK FOR DUPLICATION OF THIS ESD SYMBOL | |
595 | / | |
596 | DUPLUK, TAD CATLEN | |
597 | CIA | |
598 | DCA TMP1 /COUNT LENGTH OF CAT | |
599 | TAD CATBLK | |
600 | CIA | |
601 | TAD LIBBLK /ARE WE AT FIRST BLOCK? | |
602 | SZA CLA | |
603 | JMS CHGCHK /CHECK FOR BLOCK MODIFIED | |
604 | TAD LIBBLK | |
605 | DCA NXTCAT /SETUP FOR FIRST BLOCK OF CAT | |
606 | TAD CATLEN | |
607 | CIA | |
608 | DCA CATCNT | |
609 | GETCB, JMS GCATB /GET IT | |
610 | TAD (CATBUF-1 | |
611 | DCA X1 | |
612 | TAD (-100 /COUNT ENTRIES/BLOCK | |
613 | DCA TMP2 | |
614 | CDF F1 | |
615 | CBSRCH, TAD I X1 /LOOK AT NAME | |
616 | CMA | |
617 | SNA | |
618 | JMP CHKI /END OF CATALOG-LOOK FOR /I | |
619 | IAC /COMPLETE THE CIA | |
620 | TAD ENAM1 /COMPARE | |
621 | SZA CLA | |
622 | JMP NOMTCH | |
623 | TAD I X1 | |
624 | CIA | |
625 | TAD ENAM2 | |
626 | SZA CLA | |
627 | JMP NOMTCH | |
628 | TAD I X1 /LAST CHANCE | |
629 | CIA | |
630 | TAD ENAM3 | |
631 | SNA CLA | |
632 | JMP GOTMAT /EQUAL! | |
633 | NOMTCH, TAD X1 | |
634 | AND (-4 | |
635 | TAD (3 /BUMP TO NEXT | |
636 | DCA X1 | |
637 | ISZ TMP2 | |
638 | JMP CBSRCH | |
639 | JMS CHGCHK /CHECK FOR MODIFIED BLOCK | |
640 | ISZ TMP1 /END OF CATALOG? | |
641 | JMP GETCB /NO, GET NEXT | |
642 | JMS TTOTXT | |
643 | CATFUL-1 | |
644 | JMS CRLF | |
645 | CLA CMA | |
646 | DCA FULFLG | |
647 | JMP ESDEND /PUT THAT, IF POSSIBLE | |
648 | \fGOTMAT, CDF F0 | |
649 | JMS TTOTXT | |
650 | ENAM1-1 /PRINT THE NAME | |
651 | JMS TTOTXT | |
652 | NDUP-1 /WHICH TO KEEP? | |
653 | CDF F1 | |
654 | TAD I (SWATOL | |
655 | CDF F0 | |
656 | AND (10 /TEST /I | |
657 | SNA CLA | |
658 | JMP CHKR /NO, LOOK FOR /R | |
659 | GMASK, JMS TTOTXT | |
660 | KEEP-1 | |
661 | JMS WAITOP | |
662 | JMP ESDLND /DEFAULT TO THE OLD ONE | |
663 | TAD (-"O | |
664 | SNA | |
665 | JMP ESDLND /KEEP OLD | |
666 | IAC /IS IT "N"? | |
667 | SZA CLA | |
668 | JMP GMASK /TRY AGAIN | |
669 | JMP DELTO /DELETE THE OLD | |
670 | PAGE | |
671 | \fCHKR, JMS CRLF | |
672 | CDF F1 | |
673 | TAD I (SWMTOX | |
674 | AND (100 /TEST /R | |
675 | SNA CLA | |
676 | JMP ESDLND /DEFAULT:KEEP THE OLD ONE | |
677 | DELTO, CDF F1 | |
678 | TAD X1 | |
679 | AND (-4 | |
680 | CIA | |
681 | CMA /BACK UP POINTER | |
682 | DCA X1 | |
683 | DCA I X1 /CLEAR | |
684 | DCA I X1 /OLD | |
685 | DCA I X1 /NAME | |
686 | ISZ X1 /SKIP OVER LENGTH | |
687 | DCA CHANGD /BLOCK HAS BEEN MODIFIED | |
688 | JMP NXTE /ENTER AT END OF LOOP | |
689 | NDSCN, CDF F1 | |
690 | TAD I X1 /LOOK AT NEXT | |
691 | CMA | |
692 | SNA CLA | |
693 | JMP ENDCAT /NOW WE'RE THERE | |
694 | TAD X1 | |
695 | TAD (3 /BUMP TO NEXT NAME | |
696 | DCA X1 | |
697 | NXTE, ISZ TMP2 | |
698 | JMP NDSCN | |
699 | JMS CHGCHK /LOOK OUT FOR CHANGES | |
700 | ISZ CATCNT /END OF CAT ? | |
701 | SKP | |
702 | JMP FULCAT /NO MORE PUSSY | |
703 | JMS GCATB | |
704 | TAD (CATBUF-1 | |
705 | DCA X1 | |
706 | TAD (-100 | |
707 | DCA TMP2 | |
708 | JMP NDSCN | |
709 | \fCHKI, TAD I (SWATOL /LOOK AT /I SW | |
710 | AND (10 | |
711 | SNA CLA | |
712 | JMP ENDCAT /NOT SET | |
713 | JMS TTOTXT | |
714 | ENAM1-1 /TYPE ESD NAME | |
715 | JMS TTOTXT | |
716 | NCLUD-1 /INCLUDE IT? | |
717 | IANS, JMS WAITOP | |
718 | JMP ENDCAT /DEFAULT TO INCLUDE | |
719 | TAD (-"Y | |
720 | SNA | |
721 | JMP ENDCAT /YES, INCLUDE | |
722 | TAD ("Y-"N | |
723 | SZA CLA /IS IT "N"? | |
724 | JMP IANS /NO, TRY AGAIN | |
725 | JMP ESDLND | |
726 | ENDCAT, TAD X1 /POINT TO EMPTY SLOT | |
727 | AND (-4 | |
728 | CIA | |
729 | CMA | |
730 | DCA X1 | |
731 | JMP INSERT | |
732 | PAGE | |
733 | \f/ THIS ESD GOES IN THE CATALOG | |
734 | / | |
735 | INSERT, CDF F1 | |
736 | TAD ENAM1 /MOVE | |
737 | DCA I X1 /NAME | |
738 | TAD ENAM2 /TO | |
739 | DCA I X1 /LIBRARY | |
740 | TAD ENAM3 /CATALOG | |
741 | DCA I X1 | |
742 | ISZ INCLUD /IS THIS THE FIRST? | |
743 | SKP | |
744 | TAD MODLEN /YES, GET THE LENGTH | |
745 | DCA I X1 /AND STORE 4TH WORD | |
746 | DCA CHANGD /SET CAT MODIFIED SW | |
747 | CLA IAC | |
748 | TAD X1 /CHECK FOR END OF BLOCK | |
749 | AND (377 | |
750 | SZA CLA | |
751 | JMP MARKND /NO, MARK END OF CAT | |
752 | JMS CHGCHK /WRITE THIS BLOCK | |
753 | CDF F1 | |
754 | TAD (-400 | |
755 | DCA TMP1 /SET COUNT FOR BLOCK LEN | |
756 | TAD (CATBUF-1 | |
757 | DCA X1 /SET POINTER | |
758 | CLA CMA | |
759 | DCA I X1 | |
760 | ISZ TMP1 | |
761 | JMP .-2 /CLEAR THE BLOCK | |
762 | DCA CHANGD | |
763 | ISZ CATBLK | |
764 | JMP ESDLND | |
765 | MARKND, CLA CMA | |
766 | DCA I X1 /MARK NEW END OF CAT | |
767 | ESDLND, CDF F0 | |
768 | CLA STL RTL /TWO TO SKIP VALUE | |
769 | TAD X0 | |
770 | DCA X0 | |
771 | ISZ ESDCTR /DONE WITH BLOCK? | |
772 | JMP ESDLUP /NO, GET NEXT | |
773 | JMS READIN /GET NEXT BLOK | |
774 | JMP NXTEBK /RESET POINTERS AND CONTINUE | |
775 | ESDEND, ISZ INCLUD /CHECK FOR ANY NAMES OUT | |
776 | JMP CPYMOD /YES, COPY MODULE INTO LIBRARY | |
777 | JMS TTOTXT /SORRY, DIDN'T MAKE IT | |
778 | NONEIN-1 | |
779 | JMS CRLF | |
780 | ISZ FULFLG | |
781 | JMP GETINF /TRY NEXT | |
782 | JMP LCLOSE | |
783 | \fCPYMOD, TAD MODBLK /GET IN FILE STRT BLOCK | |
784 | DCA INBLK | |
785 | TAD MODLEN | |
786 | CIA | |
787 | DCA TMP1 | |
788 | TAD LAVAIL /FIRST AVAILABLE BLOCK | |
789 | DCA NXTOBK | |
790 | CPYLUP, JMS READIN /READ BLOCK OF INPUT | |
791 | TAD PMOD | |
792 | DCA PNXTOB | |
793 | JMS I LIBDVH /CALL OUTPUT HANDLER | |
794 | 4200!F1 | |
795 | PNXTOB, MODBUF | |
796 | NXTOBK, 0 /NEXT OUTPUT BLOCK NUMBER | |
797 | JMS IOERR | |
798 | ISZ NXTOBK /BUMP BLOCK NUMBER | |
799 | ISZ TMP1 /CHECK LENGH | |
800 | JMP CPYLUP | |
801 | TAD NXTOBK | |
802 | DCA LAVAIL /UPDATE AVAILABLE POINTER | |
803 | JMP GETINF /GO FOR NEXT | |
804 | PAGE | |
805 | \fCHGCHK, 0 | |
806 | CDF F0 /PRECAUTION | |
807 | TAD CHANGD /HAS BLOCK BEEN MODIFIED? | |
808 | SZA CLA | |
809 | JMP I CHGCHK /NO, NOTHING TO DO | |
810 | TAD CATBLK | |
811 | DCA ZCATB /WRITE THE BLOCK | |
812 | TAD (4200!F1 | |
813 | DCA ZCATC | |
814 | JMS ZCAT | |
815 | JMP I CHGCHK /OK | |
816 | / | |
817 | / | |
818 | GCATB, 0 | |
819 | CDF F0 | |
820 | TAD NXTCAT | |
821 | CIA | |
822 | TAD CATBLK /IS IT IN CORE? | |
823 | SNA CLA | |
824 | JMP SOEZ /YES, ITS EZ | |
825 | TAD NXTCAT | |
826 | CIA | |
827 | TAD LIBBLK | |
828 | TAD CATLEN | |
829 | SPA SNA CLA /CHECK FOR INTERNAL ERROR | |
830 | JMP FULCAT /** | |
831 | TAD NXTCAT | |
832 | DCA ZCATB | |
833 | TAD (200!F1 /SET FOR READ | |
834 | DCA ZCATC | |
835 | JMS ZCAT | |
836 | TAD NXTCAT /NEXT BLOCK | |
837 | DCA CATBLK /IS IN CORE | |
838 | SOEZ, ISZ NXTCAT | |
839 | JMP I GCATB | |
840 | NXTCAT, 0 | |
841 | PAGE | |
842 | \fLCLOSE, JMS CHGCHK | |
843 | TAD USRCOD | |
844 | TAD (-ENTER /DID WE ENTER A NEW FILE? | |
845 | SZA CLA | |
846 | JMP CATLST /NO, GO LIST CATALOG | |
847 | TAD LIBBLK /GET LEN | |
848 | CIA | |
849 | CDF F1 | |
850 | TAD I (EQLO /GET USER EXTENSION REQUEST | |
851 | CDF F0 | |
852 | TAD LAVAIL /PLUS CURRENT END | |
853 | DCA TMP1 | |
854 | TAD TMP1 | |
855 | CLL | |
856 | TAD LIBLEN /CHECK FOR POSSIBLE | |
857 | SNL CLA | |
858 | JMP .+4 | |
859 | TAD LIBLEN /CAN'T GIVE ALL HE WANTS | |
860 | CIA | |
861 | SKP | |
862 | TAD TMP1 | |
863 | DCA LCLEN /SET CLOSE LENGTH | |
864 | TAD CATLEN | |
865 | CMA | |
866 | TAD LCLEN /COMPARE CAT LEN TO LIB LEN | |
867 | SPA SNA CLA | |
868 | JMP NOLIB /THERE'S NO POINT | |
869 | TAD LIBBLK /GET FIRST BLOCK | |
870 | DCA NXTCAT | |
871 | JMS GCATB | |
872 | CDF F1 | |
873 | TAD LCLEN /ACTUAL LIBRARY LENGTH | |
874 | DCA I (CATBUF+2 | |
875 | CDF F0 | |
876 | DCA CHANGD | |
877 | JMS CHGCHK /WRITE IT | |
878 | TAD LIBU | |
879 | AND (17 | |
880 | CIF F1 | |
881 | JMS I USR | |
882 | CLOSE | |
883 | LIBNAM | |
884 | LCLEN, 0 | |
885 | JMS IOERR | |
886 | JMP CATLST /GO LIST THE CATALOG | |
887 | / | |
888 | NOLIB, JMS TTOTXT | |
889 | WHYCLS-1 | |
890 | JMS CRLF | |
891 | JMP START | |
892 | PAGE | |
893 | \f/ LIST THE CATALOG | |
894 | / | |
895 | CATLST, JMS OOPEN /OPEN LISTING FILE | |
896 | JMP START /NONE DESIRED | |
897 | TAD (OCHAR /SETUP FOR DEVICE-INDEPENDENT | |
898 | DCA PCHR /OUTPUT | |
899 | TAD (214 /AT TOP OF PAGE | |
900 | JMS I PCHR | |
901 | JMS CRLF | |
902 | JMS TTOTXT | |
903 | LBV-1 | |
904 | JMS TTOTXT | |
905 | CATOF-1 | |
906 | JMS PRLBNM /PRINT THE NAME | |
907 | CDF F1 | |
908 | TAD I (SYSDAT | |
909 | CDF F0 | |
910 | SNA | |
911 | JMP NODATE /DON'T KNOW THE DATE | |
912 | DCA TMP1 | |
913 | JMS TTOTXT | |
914 | ON-1 | |
915 | CLA /THE FOLLOWING CODE GETS THE DAY | |
916 | DCA TMP2 | |
917 | TAD TMP1 /GET THE DATE | |
918 | RTR /ROTATE THREE RIGHT AND MASK | |
919 | RAR /TO GET THE DAY IN OCTAL | |
920 | AND (37 | |
921 | JMS MAK8BT /MAKE IT 8-BIT AND PRINT | |
922 | DCA TMP2 | |
923 | TAD TMP1 /GET THE DATE BACK | |
924 | AND (7400 /MASK TO GET THE MONTH BITS | |
925 | JMS R6R /MONTH*4 (IN OCTAL) | |
926 | DCA TMP2 /PUT IN TEMP. VARIABLE TO SAVE IT | |
927 | TAD TMP2 /GET IT BACK | |
928 | \f RTR /MONTH | |
929 | TAD TMP2 | |
930 | TAD (MONTHS-6 | |
931 | DCA .+2 /ADDRESS OF MONTH FROM TABLE | |
932 | JMS TTOTXT /PUT IT IN THE TEXT LINE | |
933 | 0 | |
934 | TAD TMP1 /GET THE DATE---TO FIND THE YEAR | |
935 | AND (7 /MASK TO GET THE YEAR OFFSET BITS | |
936 | DCA TMP4 /SAVE THEM | |
937 | DCA TMP2 | |
938 | TAD I (7777 /GET THE DATE EXTENSION BITS | |
939 | AND (600 | |
940 | CLL RTR /ROTATE TO GET THEM INTO BIT | |
941 | RTR /POSITIONS 7 AND 8 | |
942 | TAD (106 /ADD 70(ORIGINAL BASE YEAR) | |
943 | TAD TMP4 /ADD IN THE YEAR OFFSET BITS | |
944 | JMS MAK8BT /MAKE 8-BIT AND PRINT | |
945 | NODATE, JMS CRLF | |
946 | JMP PRCAT /TITLE IS DONE, PRINT CAT | |
947 | MAK8BT, 0 /ROUTINE TO CONVERT TO 8-BIT AND PRINT | |
948 | CLL /FIRST CONVERT TO DECIMAL | |
949 | CONVYR, TAD (-12 /KEEP SUBTRACTING 12 | |
950 | SPA /HAVE THE YEAR | |
951 | JMP GETDG1 | |
952 | ISZ TMP2 /HOLDS THE FIRST DIGIT OF YEAR | |
953 | JMP CONVYR | |
954 | GETDG1, TAD (12 /GET THE SECOND DIGIT | |
955 | DCA TMP3 /SAVE IT | |
956 | TAD TMP2 /GET THE FIRST DIGIT | |
957 | SNA /FIRST DIGIT IS A ZERO | |
958 | JMP PRDIG2 /PRINT THE SECOND DIGIT | |
959 | TAD (260 /MAKE FIRST DIGIT OF YEAR 8-BIT | |
960 | JMS I PCHR /PRINT IT | |
961 | PRDIG2, TAD TMP3 /GET THE SECOND DIGIT | |
962 | TAD (260 /MAKE SECOND DIGIT OF YEAR 8-BIT | |
963 | JMS I PCHR /PRINT IT | |
964 | JMP I MAK8BT /RETURN | |
965 | PAGE | |
966 | \f/ LIST ALL ENTRIES IN THE CATALOG | |
967 | / | |
968 | PRCAT, TAD CATLEN | |
969 | CIA | |
970 | DCA TMP1 | |
971 | TAD LIBBLK | |
972 | DCA NXTCAT | |
973 | CLA CMA | |
974 | DCA TMP3 /SET LINE COUNTER | |
975 | CATLUP, JMS GCATB | |
976 | TAD (CATBUF-1 | |
977 | DCA X0 | |
978 | TAD (-100 | |
979 | DCA TMP2 | |
980 | CATLP2, CDF F1 | |
981 | TAD I X0 /GET FIRST WORD OF NAME | |
982 | SNA | |
983 | JMP EMPTY /NOT AN ESD NAME | |
984 | CMA | |
985 | SNA | |
986 | JMP NDCATL /END OF CATALOG | |
987 | CMA /RESTORE FIRST WORD | |
988 | JMS TTO2 /PRINT | |
989 | JMP NDNAM /A SHORT NAME | |
990 | CDF F1 | |
991 | TAD I X0 | |
992 | JMS TTO2 | |
993 | JMP NDNAM | |
994 | CDF F1 | |
995 | TAD I X0 | |
996 | JMS TTO2 | |
997 | NOP | |
998 | NDNAM, ISZ TMP3 /MORE ROOM ON THIS LINE? | |
999 | JMP SAMLIN /SURE | |
1000 | JMS CRLF | |
1001 | TAD (-10 /SETUP FOR 8 PER LINE | |
1002 | DCA TMP3 | |
1003 | JMP EMPTY | |
1004 | SAMLIN, JMS TAB /SPACE OVER TO NEXT NAME | |
1005 | EMPTY, TAD X0 | |
1006 | AND (-4 | |
1007 | TAD (3 | |
1008 | DCA X0 /POINT TO NEXT | |
1009 | ISZ TMP2 | |
1010 | JMP CATLP2 /GO FOR NEXT | |
1011 | ISZ TMP1 /MORE BLOCKS? | |
1012 | JMP CATLUP /YES | |
1013 | JMS CRLF | |
1014 | JMS TTOTXT | |
1015 | CATFUL-1 | |
1016 | NDCATL, JMS CRLF | |
1017 | TAD (214 /EJECT PAGE | |
1018 | JMS I PCHR | |
1019 | JMS OCLOSE /CLOSE THE FILE | |
1020 | JMP START | |
1021 | PAGE | |
1022 | \f/ USEFUL OUTPUT THINGS | |
1023 | / | |
1024 | TTO, 0 | |
1025 | DCA TTOCHR | |
1026 | JMS TTWAIT | |
1027 | TAD (200 | |
1028 | KRS | |
1029 | TAD (-217 /CRTL/O CHECK | |
1030 | SNA CLA | |
1031 | KSF | |
1032 | SKP | |
1033 | JMP I TTO | |
1034 | TAD TTOCHR | |
1035 | TLS | |
1036 | DCA TTFLAG | |
1037 | JMP I TTO | |
1038 | TTOCHR, 0 | |
1039 | TTWAIT, 0 | |
1040 | TAD TTFLAG | |
1041 | SNA CLA | |
1042 | JMP I TTWAIT | |
1043 | JMS CCHK /BEWARE OF CTRL/C | |
1044 | TSF | |
1045 | JMP .-2 /WAIT TILL DONE | |
1046 | DCA TTFLAG /CLEAR BUSY FLAG | |
1047 | JMP I TTWAIT | |
1048 | CCHK, 0 | |
1049 | KSF | |
1050 | JMP I CCHK /NOTHING TO WORRY ABOUT | |
1051 | TAD (200 | |
1052 | KRS | |
1053 | TAD (-203 | |
1054 | SNA CLA /WAS IT CONTROL C? | |
1055 | JMP I (7600 /YES | |
1056 | JMP I CCHK | |
1057 | TTO2, 0 | |
1058 | DCA TMP7 | |
1059 | TAD TMP7 | |
1060 | JMS R6R | |
1061 | JMS TTO2A | |
1062 | TAD TMP7 | |
1063 | JMS TTO2A | |
1064 | ISZ TTO2 | |
1065 | JMP I TTO2 | |
1066 | TTO2A, 0 | |
1067 | AND (77 | |
1068 | SNA | |
1069 | JMP I TTO2 | |
1070 | TAD (-40 | |
1071 | SPA | |
1072 | TAD (100 | |
1073 | TAD (240 | |
1074 | JMS I PCHR | |
1075 | ISZ TTPOS /BUMP POSITION COUNT | |
1076 | JMP I TTO2A | |
1077 | \fR6R, 0 | |
1078 | CLL RTR | |
1079 | RTR | |
1080 | RTR | |
1081 | JMP I R6R | |
1082 | R6L, 0 | |
1083 | CLL RTL | |
1084 | RTL | |
1085 | RTL | |
1086 | JMP I R6L | |
1087 | TTOTXT, 0 | |
1088 | CDF F0 | |
1089 | TAD I TTOTXT | |
1090 | DCA X7 | |
1091 | ISZ TTOTXT /BUMP PAST POINTER | |
1092 | TAD I X7 | |
1093 | JMS TTO2 | |
1094 | JMP I TTOTXT | |
1095 | JMP .-3 | |
1096 | CRLF, 0 | |
1097 | DCA TTPOS /RESET POSITION | |
1098 | TAD (215 | |
1099 | JMS I PCHR | |
1100 | TAD (212 | |
1101 | JMS I PCHR | |
1102 | JMP I CRLF | |
1103 | TAB, 0 /PSEUDO-TAB GENERATOR | |
1104 | TAD (240 | |
1105 | JMS I PCHR | |
1106 | ISZ TTPOS | |
1107 | TAD TTPOS | |
1108 | AND (7 | |
1109 | SNA CLA /IS POSITION A MULTIPLE OF 8 | |
1110 | JMP I TAB | |
1111 | JMP TAB+1 /NO, TRY MORE | |
1112 | PAGE | |
1113 | \fWAITOP, 0 | |
1114 | TAD (277 /QUESTION | |
1115 | JMS TTO | |
1116 | DCA RETCHR | |
1117 | WREP, JMS TTI /WAIT FOR REPLY | |
1118 | TAD (-215 | |
1119 | SNA | |
1120 | JMP DFALT | |
1121 | TAD (215-240 /PRINTING? | |
1122 | SPA | |
1123 | JMP WREP /NO, TRY AGIAN | |
1124 | TAD (240 | |
1125 | DCA RETCHR | |
1126 | TAD RETCHR | |
1127 | ECHO, JMS TTO | |
1128 | JMS TTI | |
1129 | TAD (-215 | |
1130 | SNA | |
1131 | JMP GOTREP | |
1132 | TAD (215-377 /LOOKOUT FOR RUBOUT! | |
1133 | SNA | |
1134 | JMP RUBOUT | |
1135 | TAD (377 | |
1136 | JMP ECHO | |
1137 | RUBOUT, JMS CRLF | |
1138 | JMP WAITOP+1 | |
1139 | GOTREP, ISZ WAITOP /GOT A REAL ANSWER | |
1140 | DFALT, JMS CRLF | |
1141 | TAD RETCHR | |
1142 | JMP I WAITOP | |
1143 | RETCHR, 0 | |
1144 | / | |
1145 | TTI, 0 | |
1146 | KSF /WAIT FOR A KEY | |
1147 | JMP .-1 | |
1148 | KRB | |
1149 | AND (177 /TAKE CARE OF PARITY | |
1150 | TAD (-3 /CTRL C? | |
1151 | SNA | |
1152 | JMP I (7600 /YES | |
1153 | TAD (203 /GET ORGINIAL CHAR BACK | |
1154 | JMP I TTI | |
1155 | PAGE | |
1156 | \f/ | |
1157 | / INPUT BUFFERRER AND STUFF | |
1158 | / | |
1159 | READIN, 0 | |
1160 | CDF F0 | |
1161 | TAD INBLK | |
1162 | TAD THSBLK /-FIRST BLOCK FOLLOWING BUFFER CONTENTS | |
1163 | CLL | |
1164 | TAD (MBUFS | |
1165 | SNL /IS IT IN CORE? | |
1166 | JMP MUSTRD /NO, WE HAVE TO DO A READ | |
1167 | CLL RTR | |
1168 | RTR | |
1169 | RAR /TIMES 400 | |
1170 | SETP, TAD (MODBUF /PLUSS BUFFER ADDR | |
1171 | DCA PMOD /POINTS TO BLOCK | |
1172 | ISZ INBLK /READY FOR NEXT | |
1173 | JMP I READIN | |
1174 | MUSTRD, CLA /THIS ONE'S HARDER | |
1175 | TAD INBLK | |
1176 | DCA RDBLK | |
1177 | TAD INBLK | |
1178 | TAD (MBUFS | |
1179 | CIA | |
1180 | DCA THSBLK | |
1181 | JMS I MODDVH | |
1182 | MBUFS^200!F1 | |
1183 | MODBUF | |
1184 | RDBLK, 0 | |
1185 | JMS IOERR | |
1186 | JMP SETP /OK | |
1187 | \f/ ROUTINES TO SAVE AND RESTORE | |
1188 | / DEVICE HANDLER RESIDENCY TABLE | |
1189 | / | |
1190 | SAVRES, 0 | |
1191 | TAD (DHRES-1 | |
1192 | DCA X0 | |
1193 | TAD (SVRES-1 | |
1194 | DCA X1 | |
1195 | JMS MOVRES | |
1196 | JMP I SAVRES | |
1197 | RSTRES, 0 | |
1198 | TAD (SVRES-1 | |
1199 | DCA X0 | |
1200 | TAD (DHRES-1 | |
1201 | DCA X1 | |
1202 | JMS MOVRES | |
1203 | JMP I RSTRES | |
1204 | MOVRES, 0 | |
1205 | TAD (-17 | |
1206 | DCA TMP1 | |
1207 | CDF F1 | |
1208 | TAD I X0 | |
1209 | DCA I X1 | |
1210 | ISZ TMP1 | |
1211 | JMP .-3 | |
1212 | CDF F0 | |
1213 | JMP I MOVRES | |
1214 | SVRES=7400 | |
1215 | \f/ PRINT THE LIBRARY NAME | |
1216 | / | |
1217 | PRLBNM, 0 | |
1218 | TAD LIBNAM | |
1219 | JMS TTO2 /FIRST 2 CHARS | |
1220 | JMP PREXT | |
1221 | TAD LIBNAM+1 | |
1222 | JMS TTO2 | |
1223 | JMP PREXT | |
1224 | TAD LIBNAM+2 | |
1225 | JMS TTO2 | |
1226 | NOP | |
1227 | PREXT, TAD (". | |
1228 | JMS I PCHR | |
1229 | TAD LIBNAM+3 | |
1230 | JMS TTO2 | |
1231 | JMP I PRLBNM | |
1232 | JMP I PRLBNM | |
1233 | PAGE | |
1234 | \f/ OUTPUT HANDLERS STOLEN FROM PIP | |
1235 | OUFLD=F1 | |
1236 | OUCTL=MBUFS^200!4000!F1 | |
1237 | OUBUF=MODBUF | |
1238 | / | |
1239 | / INITIALIZE FOR OUTPUT | |
1240 | / | |
1241 | OUSETP, 0 | |
1242 | TAD (OUCTL&3700 /BUFFER SIZE IN DBL WORDS | |
1243 | CIA /NEGATE IT (PAL10 BLOWS) | |
1244 | DCA OUDWCT | |
1245 | TAD (OUBUF | |
1246 | DCA OUPTR /INITIALIZE WORD POINTER | |
1247 | TAD OUJMPE | |
1248 | DCA OUJMP /INITIALIZE 3-WAY CHARACTER SWITCH | |
1249 | JMP I OUSETP | |
1250 | / | |
1251 | / STORE CHARACTERS IN OUTPUT BUFFER | |
1252 | / IN PS8 FORMAT (YOU KNOW, 3 CHARS | |
1253 | / IN 2 WORDS THE WRONG WAY) | |
1254 | / | |
1255 | OCHAR, 0 | |
1256 | AND (377 | |
1257 | DCA OUTEMP | |
1258 | CDF OUFLD /SET DATA FIELD TO BUFFER'S FIELD | |
1259 | ISZ OUJMP /BUMP THE CHARACTER SWITCH | |
1260 | OUJMP, HLT /THREE WAY CHARACTER SWITCH | |
1261 | JMP OCHAR1 | |
1262 | JMP OCHAR2 | |
1263 | TAD OUTEMP | |
1264 | CLL RTL | |
1265 | RTL | |
1266 | AND (7400 | |
1267 | TAD I OUPOLD | |
1268 | DCA I OUPOLD /UPDATE FIRST WORD OF TWO WITH HIGH | |
1269 | /ORDER 4 BITS OF THIRD CHAR | |
1270 | TAD OUTEMP | |
1271 | CLL RTR | |
1272 | RTR | |
1273 | RAR | |
1274 | AND (7400 | |
1275 | TAD I OUPTR | |
1276 | DCA I OUPTR /UPDATE 2ND WORD FROM LO 4 BITS | |
1277 | TAD OUJMPE | |
1278 | DCA OUJMP /RESET SWITCH | |
1279 | ISZ OUPTR | |
1280 | ISZ OUDWCT /BUMP COUNTER EVERY 3 CHARS | |
1281 | JMP OUCOMN | |
1282 | TAD (OUCTL /LOAD CONTROL WORD FOR A FULL WRITE | |
1283 | JMS I (OUTDMP /DUMP THE BUFFER | |
1284 | JMS OUSETP /RE-INITIALIZE THE POINTERS | |
1285 | JMP OUCOMN | |
1286 | OCHAR2, TAD OUPTR | |
1287 | DCA OUPOLD /SAVE POINTER TO FIRST WORD OF TWO | |
1288 | ISZ OUPTR /BUMP WORD POINTER TO SECOND WORD | |
1289 | OCHAR1, TAD OUTEMP | |
1290 | DCA I OUPTR | |
1291 | OUCOMN, CDF F0 | |
1292 | JMP I OCHAR | |
1293 | OUTEMP, 0 | |
1294 | OUPOLD, 0 | |
1295 | OUPTR, 0 | |
1296 | OUJMPE, JMP OUJMP | |
1297 | OUDWCT, 0 | |
1298 | / | |
1299 | / MOVE OUTPUT FILE NAME TO FIELD 0 | |
1300 | / | |
1301 | OFNAME, 0 | |
1302 | TAD (OUTF2 | |
1303 | DCA X0 /NAME OF CAT LIST FILE | |
1304 | CDF F1 | |
1305 | TAD I X0 | |
1306 | DCA OUFNAM /FIRST 2 CHARS | |
1307 | TAD I X0 | |
1308 | DCA OUFNAM+1 | |
1309 | TAD I X0 | |
1310 | DCA OUFNAM+2 | |
1311 | TAD I X0 | |
1312 | SNA | |
1313 | TAD TXTCA /DEFAULT CAT EXT | |
1314 | DCA OUFNAM+3 | |
1315 | CDF F0 /RESTORE FIELD | |
1316 | JMP I OFNAME | |
1317 | OUFNAM, ZBLOCK 4 | |
1318 | TXTCA, 301 | |
1319 | PAGE | |
1320 | \fOOPEN, 0 | |
1321 | CDF F1 | |
1322 | TAD I (OUTF2 /GET DEVICE CODE, LEN | |
1323 | DCA OUELEN /HOLD IT A MO | |
1324 | JMS I (OFNAME /GET FILE NAME INTO FIELD 0 | |
1325 | TAD OUELEN /CHECK FOR NULL FILE | |
1326 | SNA CLA | |
1327 | JMP I OOPEN /NOTHING TO OPEN | |
1328 | TAD OUNAME /RESET ENTER CALL | |
1329 | DCA OUBLK | |
1330 | TAD (IDEVH!1 | |
1331 | DCA OUHNDL | |
1332 | TAD OUELEN /THE UNIT | |
1333 | CIF F1 | |
1334 | JMS I USR | |
1335 | FETCH /ASSIGN, FETCH HANDLER | |
1336 | OUHNDL, 0 /OUTPUT DEVICE HANDLER ENTRY | |
1337 | JMS IOERR /HUH? | |
1338 | TAD OUELEN /UNIT AGAIN | |
1339 | CIF F1 | |
1340 | JMS I USR | |
1341 | ENTER /ENTER OUTPUT FILE | |
1342 | OUBLK, OUFNAM /REPLACED WITH STARTING BLOCK | |
1343 | OUELEN, 0 /REPLACED WITH LENGTH OF HOLE | |
1344 | JMS IOERR /YOU BLEW IT!!! | |
1345 | DCA OUCCNT | |
1346 | JMS I (OUSETP | |
1347 | ISZ OOPEN | |
1348 | JMP I OOPEN | |
1349 | \fOUTDMP, 0 | |
1350 | DCA OUCTLW /STORE THE CONTROL WORD | |
1351 | TAD OUCCNT | |
1352 | SNA | |
1353 | ISZ OUCTLW | |
1354 | TAD OUBLK | |
1355 | DCA OUREC /COMPUTE STARTING BLOCK | |
1356 | TAD OUCTLW | |
1357 | JMS R6L | |
1358 | AND (17 /COMPUTE THE NUMBER OF RECORDS | |
1359 | TAD OUCCNT /UPDATE SIZE OF FILE | |
1360 | DCA OUCCNT | |
1361 | TAD OUCCNT | |
1362 | CLL CML | |
1363 | TAD OUELEN | |
1364 | SNL SZA CLA /EXCEED GIVEN LENGTH ? | |
1365 | JMS IOERR /YES - ERROR | |
1366 | CDF F0 | |
1367 | JMS I OUHNDL | |
1368 | OUCTLW, 0 | |
1369 | OUBUF | |
1370 | OUREC, 0 | |
1371 | JMS IOERR | |
1372 | JMP I OUTDMP | |
1373 | \fOCLOSE, 0 | |
1374 | TAD (232 /OUTPUT A CTRL/Z | |
1375 | JMS I PCHR | |
1376 | FILLLP, JMS I PCHR | |
1377 | TAD (77 | |
1378 | AND I (OUDWCT | |
1379 | SZA CLA /UP TO THE BOUNDARY YET? | |
1380 | JMP FILLLP /NO - FILL WITH ZEROS | |
1381 | TAD I (OUDWCT /GET DOUBLEWORD COUNT LEFT | |
1382 | TAD (OUCTL&3700 | |
1383 | SNA /A FULL WRITE LEFT? | |
1384 | JMP NODUMP /YES DON'T DO IT | |
1385 | TAD (4000!OUFLD /PUT IN FIELD AND WRITE BITS | |
1386 | JMS OUTDMP | |
1387 | NODUMP, CIF CDF F1 | |
1388 | TAD I (OUTF2 | |
1389 | CDF F0 | |
1390 | JMS I USR | |
1391 | CLOSE /CLOSE THE OUTPUT FILE | |
1392 | OUNAME, OUFNAM /POINTER TO OUTPUT FILE NAME | |
1393 | OUCCNT, 0 | |
1394 | JMS IOERR /ERROR WHILE CLOSING - BAD!! | |
1395 | JMP I OCLOSE /ALL DONE | |
1396 | PAGE | |
1397 | \f/ MESSAGES | |
1398 | / | |
1399 | LBV, TEXT "LIBRA V " | |
1400 | *.-1 | |
1401 | VMESG, VERS&70^7+VERS+6060 | |
1402 | PATCH&77^100+40 | |
1403 | 4000 | |
1404 | NONEIN, TEXT "MODULE NOT INCLUDED";0 | |
1405 | FLSTR, TEXT "LIBRARY MUST BE ON A FILE-STRUCTURED DEVICE";0 | |
1406 | SMALL, TEXT "INSUFFICIENT SPACE FOR LIBRARY";0 | |
1407 | NOTMOD, TEXT "INPUT NOT A MODULE";0 | |
1408 | TOOBIG, TEXT "INPUT TOO BIG FOR LIBRARY";0 | |
1409 | UNLIB, TEXT " IS NOT A LIBRARY";0 | |
1410 | NDUP, TEXT " IS DUPLICATE NAME";0 | |
1411 | KEEP, TEXT "; KEEP OLD OR NEW";0 | |
1412 | CATFUL, TEXT "CATALOG IS FULL";0 | |
1413 | NCLUD, TEXT ": INCLUDE";0 | |
1414 | WHYCLS, TEXT "LIBRARY TOO SMALL FOR USE; START OVER";0 | |
1415 | IOMSG, TEXT "I/O ERROR";0 | |
1416 | CATOF, TEXT "CATALOG OF ";0 | |
1417 | ON, TEXT " ON ";0 | |
1418 | CS197, TEXT ", 197";0 | |
1419 | MONTHS, TEXT "-JAN-@@@@@-FEB-@@@@@-MAR-@@@@" | |
1420 | TEXT "-APR-@@@@@-MAY-@@@@@-JUN-@@@@" | |
1421 | TEXT "-JUL-@@@@@-AUG-@@@@@-SEP-@@@@" | |
1422 | TEXT "-OCT-@@@@@-NOV-@@@@@-DEC-@@@@" | |
1423 | $ | |
1424 | \f |