Commit | Line | Data |
---|---|---|
7af5ad59 PH |
1 | /OS8 FORTRAN II RELOCATING LOADER V4 |
2 | / | |
3 | / | |
4 | / | |
5 | / | |
6 | / | |
7 | / | |
8 | / | |
9 | // | |
10 | / | |
11 | / | |
12 | / | |
13 | / | |
14 | /COPYRIGHT (C) 1973, 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/LOADER.07 DECEMBER 5, 1973 | |
41 | / | |
42 | / | |
43 | /CHANGES MADE FOR V4 J.K. 1975 | |
44 | / | |
45 | / .VERSION NUMBER PRINTED ON MAP | |
46 | / .BIT ZERO OF 17645 IS USED INSTEAD OF THE WHOLE | |
47 | / WORD TO INDICATE THAT THE LOADER WAS CHAINED | |
48 | / TO FROM SABR | |
49 | / .CORE ROUTINE STANDARIZED | |
50 | / .CHECK FOR BATCH CORRECTED | |
51 | / | |
52 | / | |
53 | /FIELD 0, PAGE 0 | |
54 | ||
55 | VERSION=6400 /PRINTS ON MAP | |
56 | PATCH=01 | |
57 | JSTFLD= 7744 | |
58 | JSTADR= 7745 | |
59 | JSBITS= 7746 | |
60 | MOFILE= 7600 | |
61 | MIFILE= 7617 | |
62 | MPARAM= 7643 | |
63 | DCB= 7760 | |
64 | MSTCDF= 7772 | |
65 | MSTADR= 7775 | |
66 | SHNDLR= 7607 | |
67 | MGET= 7667 | |
68 | MTEMP= 27 | |
69 | OLDT9= 7 /LOCATION OF HANDLER ENTRY OF DEVICE | |
70 | /WITH DIRECTORY IN CORE | |
71 | ||
72 | *0 | |
73 | ZERO, JMS I XSHNDLR | |
74 | ONE, 2010 | |
75 | 3600 | |
76 | MTEMP+11 | |
77 | HLT | |
78 | FIVE, JMP I .+1 | |
79 | 7600 | |
80 | XSHNDLR,SHNDLR | |
81 | X1, 0 | |
82 | X2, 0 | |
83 | X3, 0 | |
84 | X4, 0 | |
85 | ||
86 | *16 | |
87 | NOPUNC | |
88 | *100 | |
89 | ENPUNC | |
90 | ||
91 | DFRSTR, CIF 10 | |
92 | JMS I DF200 | |
93 | 11 /KICK OUT MONITOR | |
94 | DFSAVE, 0 /RESTORE CALLING FIELD | |
95 | JMP I CDZSKP /AND EXIT | |
96 | ||
97 | SAVEDF, 0 /COMMON SAVE-FIELD PROCESSOR FOR FORTRAN I/O | |
98 | DCA CDZSKP /CALLING ADDRESS | |
99 | RDF | |
100 | TAD .+2 | |
101 | DCA DFSAVE /CALLING FIELD | |
102 | CDF CIF 0 | |
103 | JMP I SAVEDF | |
104 | DF200, 200 | |
105 | \f/RUN-TIME SYSTEM PAGE 0 - PROPAGATED TROUGH ALL FIELDS | |
106 | ||
107 | *33 | |
108 | BNK=00 | |
109 | / | |
110 | / COMMON SUBROUTINE CALL LINKAGE ROUTINE | |
111 | / | |
112 | LINK, 0 | |
113 | K6201, CDF BNK /SET DATA FIELD TO THIS BANK | |
114 | K6202, CIF 00 /SET INSTRUCTION FIELD TO ZERO | |
115 | JMP I MLINKP /EXIT TO MASTER LINKAGE ROUTINE | |
116 | MLINKP, MLINK | |
117 | / | |
118 | / COMMON SUBROUTINE RETURN LINKAGE ROUTINE | |
119 | / | |
120 | RTN, 0 | |
121 | CDF BNK /SET DATA FIELD TO THIS BANK | |
122 | CIF 00 /SET INSTRUCTION FIELD TO ZERO | |
123 | JMP I MRTNP /EXIT TO MASTER RETURN ROUTINE | |
124 | MRTNP, MRTN | |
125 | / | |
126 | / CHANGE DATA FIELD TO CURRENT AND SKIP | |
127 | / | |
128 | CDFSKP, 0 | |
129 | ISZ CDFSKP /INDEX ADDRESS FOR SKIPPING | |
130 | CDF BNK /CHANGE DATA FIELD TO CURRENT BANK | |
131 | JMP I CDFSKP /EXIT | |
132 | / | |
133 | / CHANGE DATA FIELD TO ZERO AND SKIP | |
134 | / | |
135 | CDZSKP, 0 | |
136 | ISZ CDZSKP /INDEX RETURN ADDRESS FOR SKIPPING | |
137 | CDF 10 /CHANGE DATA FIELD TO ZERO | |
138 | JMP I CDZSKP /EXIT | |
139 | / | |
140 | / OFF BANK INDIRECT SUBROUTINE | |
141 | / | |
142 | OBISUB, 0 | |
143 | CDF BNK /SET DATA FIELD TO THIS BANK | |
144 | CIF 00 /SET INSTRUCTION FIELD TO ZERO | |
145 | JMP I MOBIP /EXIT TO MASTER OFF BANK INDIRECT SUBROUTINE | |
146 | MOBIP, MOBI | |
147 | / | |
148 | / OFF PAGE INDIRECT SUBROUTINE | |
149 | / | |
150 | OPISUB, 0 | |
151 | CDF BNK /SET DATA FIELD TO THIS BANK | |
152 | CIF 00 /SET INSTRUCTION FIELD TO BANK 0 | |
153 | JMP I MOPIP /EXIT TO MASTER OFF PAGE INDIRECT SUBROUTINE | |
154 | MOPIP, MOPI | |
155 | \f/ | |
156 | / ROUTINE TO HANDLE DUMMY ARGUMENTS | |
157 | / | |
158 | DUMSUB, 0 | |
159 | CDF BNK /SET DATA FIELD TO THIS BANK | |
160 | CIF 00 /SET INSTRUCTION FIELD TO BANK 0 | |
161 | JMP I MDUMP /EXIT TO MASTER DUMMY ARGUMENT ROUTINE | |
162 | MDUMP, MDUM | |
163 | ||
164 | / PAGE 0 CELLS FOR FORTRAN EXECUTION TIME I/O | |
165 | / CELLS SET UP BY LINKING LOADER - CANNOT GO PAST 77 | |
166 | ||
167 | INHNDL, 0 /PAGE FOR INPUT HANDLER IF /I SWITCH WAS ON | |
168 | OUHNDL, 0 /PAGE FOR OUTPUT HANDLER IF /O SWITCH WAS ON | |
169 | ELENGT, 0 /"DESIRED LENGTH" FOR FORTRAN OUTPUT FILES - USUALLY 0 | |
170 | ||
171 | *DF200+1 | |
172 | /OTHER PAGE 0 LOCATIONS | |
173 | ||
174 | FOPOLD, 0 | |
175 | FINPTR, 0 | |
176 | FICHCT, 0 /MUST BE INIT. TO -1 AT LOOKUP | |
177 | FINTMP, 0 /MUST BE INIT. TO 10 AT LOOKUP | |
178 | OHNDLR, 0 /SET BY FENTER - CLEARED BY FCLOSE | |
179 | IHNDLR, 0 /SET BY FLUKUP - NEVER CLEARED | |
180 | FOUPTR, 0 | |
181 | FOCHCT, 0 | |
182 | \f *200 | |
183 | LSTART, JMP I (LDRZZ1 | |
184 | SSTART, CDF 10 | |
185 | TAD I (MPARAM+2 | |
186 | SMA CLA | |
187 | JMP NOTSBR | |
188 | TAD I (MPARAM+2 | |
189 | AND (3777 | |
190 | DCA I (MPARAM+2 | |
191 | TAD I (MOFILE | |
192 | SNA CLA | |
193 | JMP LDRYYY | |
194 | TAD (MOFILE+11 | |
195 | DCA X1 | |
196 | TAD (MOFILE | |
197 | DCA SEVEN | |
198 | TAD (-5 | |
199 | DCA SIX | |
200 | TAD (TEMP-1 | |
201 | DCA X2 | |
202 | MOVLP1, TAD I SEVEN | |
203 | CDF 0 | |
204 | DCA I X2 | |
205 | CDF 10 | |
206 | TAD I X1 | |
207 | DCA I SEVEN | |
208 | ISZ SEVEN | |
209 | ISZ SIX | |
210 | JMP MOVLP1 | |
211 | TAD TEMP+1 /GET BLOCK NUMBER WHICH SABR PLACED HERE | |
212 | DCA I (MIFILE+1 | |
213 | DCA I (MIFILE+2 | |
214 | CLA CLL CMA RAL | |
215 | AND I (MPARAM | |
216 | DCA I (MPARAM /REMOVE /L SWITCH FROM SABR INPUT | |
217 | CDF 0 | |
218 | CIF 10 | |
219 | CLA IAC | |
220 | JMS I (200 | |
221 | 4 /DELETE | |
222 | FORTRL /THE FILE "FORTRL.TM" IF IT EXISTS | |
223 | 0 | |
224 | NOP /IT DIDN'T EXIST - BIG DEAL | |
225 | TAD TEMP | |
226 | LDRYYY, CDF 10 | |
227 | DCA I (MIFILE | |
228 | NOTSBR, CIF 10 | |
229 | CDF 0 | |
230 | JMS I (200 | |
231 | 12 /GET DEVICE NUMBER WITHOUT HANDLER | |
232 | 2424 /TT | |
233 | TTYNUM, 3100 /Y | |
234 | 1000 /RANDOM NUMBER | |
235 | JMP LWOWIE /WHAT - NO TELETYPE??? | |
236 | CIF 10 | |
237 | CLA IAC /DEVICE "SYS" | |
238 | JMS I (200 | |
239 | 2 | |
240 | PTSLIB, SYSLIB | |
241 | 0 /USELESS LENGTH WORD | |
242 | CLA SKP | |
243 | TAD PTSLIB | |
244 | CDF 10 | |
245 | DCA I (PSYSLB | |
246 | TAD TTYNUM | |
247 | DCA I (TTYNO /STORE AWAY TTY DEVICE NUMBER | |
248 | JMS I (BATCK | |
249 | CORO, TAD CORSIZ /GET FLD OF TEST | |
250 | RTL | |
251 | RAL | |
252 | AND COR70 | |
253 | TAD COREX /MASK USEFUL BITS | |
254 | DCA .+1 | |
255 | COR1, CDF | |
256 | TAD I CORLOC /SAVE CURRENT CONTENTS | |
257 | COR2, NOP | |
258 | DCA COR1 | |
259 | TAD COR2 | |
260 | DCA I CORLOC | |
261 | COR70, 70 | |
262 | TAD I CORLOC /TRY TO READ BACK | |
263 | CORX, 7400 | |
264 | TAD CORX | |
265 | TAD CORV /TAD (1400) | |
266 | SZA CLA | |
267 | JMP COREX /NON-EXISTENT FLD EXIT | |
268 | TAD COR1 | |
269 | DCA I CORLOC /RESTORE LOC | |
270 | ISZ CORSIZ | |
271 | JMP CORO | |
272 | COREX, CDF 0 | |
273 | TAD CORSIZ | |
274 | CIA | |
275 | FOUNDX, CDF CIF 10 | |
276 | DCA I (WROVLY /POSTPONE SPREADING FIELD ZERO RESIDENT | |
277 | TAD (TTYOUT / THRU FIELDS UNTIL /I,/O AND /H ARE TESTED | |
278 | DCA I (TYPE | |
279 | JMP I .+1 | |
280 | LDRXXX | |
281 | \fSIX, 0 | |
282 | SEVEN, 0 | |
283 | ||
284 | LWOWIE, CDF CIF 10 | |
285 | JMP I (SIOERR | |
286 | CORLOC, CORX | |
287 | CORV, 1400 | |
288 | CORSIZ, 1 | |
289 | TEMP, 0;0;0;0 | |
290 | PAGE | |
291 | \f/FULL LINKAGE ROUTINES FOR RUN-TIME SYSTEM | |
292 | ||
293 | *400 | |
294 | K77A, 0077 /MUST BE FIRST LOC ON PAGE | |
295 | / | |
296 | / MASTER OFF PAGE INDIRECT ROUTINE | |
297 | / | |
298 | MOPI, DCA AC /SAVE AC | |
299 | TAD I OPIP /PICK UP ADDRESS OF PARAMETER | |
300 | DCA DUMSUB | |
301 | TAD I DUMSUB /ACTUAL PARAMETER | |
302 | DCA 7 /TO A TEMP | |
303 | TAD I 7 /PICK UP FINAL DATA | |
304 | DCA I K7 /TO LOCATION 7 IN FROM BANK | |
305 | RDF /FROM BANK | |
306 | ATVX, TAD K6202 /MAKE A CIF FROM INSTRUCTION | |
307 | DCA ATV /SAVE IN THIS SEQUENCE | |
308 | JMP ATV-1 | |
309 | / | |
310 | / MASTER OFF BANK INDIRECT ROUTINE | |
311 | / | |
312 | MOBI, DCA AC /SAVE AC | |
313 | TAD I OBIP /ADDRESS OF PARAMETER | |
314 | DCA DUMSUB | |
315 | TAD I DUMSUB /ACTUAL COMMON ADDRESS | |
316 | DCA 7 /SAVE IT | |
317 | RDF /FROM BANK | |
318 | TAD K6201 /MAKE A CDF FROM INSTRUCTION | |
319 | DCA .+3 /PLACE IN THIS SEQUANCE | |
320 | CDF 10 /CHANGE DATA FIELD TO COMMON | |
321 | TAD I 7 /ACTUAL DATA | |
322 | NOP /BECOMES CDF AND CIF FROM INSTRUCTION | |
323 | DCA I K7 /TO LOCATION 7 IN FROM BANK | |
324 | RDF | |
325 | CDF 10 | |
326 | JMP ATVX | |
327 | \f/ MASTER INDIRECT DUMMY ARGUMENT SUBROUTINE | |
328 | ||
329 | MDUM, DCA AC /SAVE AC | |
330 | TAD I DUMP /PICK UP ADDRESS OF PAR | |
331 | DCA DUMSUB | |
332 | TAD I DUMSUB /PICK UP POINTER TO 2 WORD VECTOR | |
333 | DCA DUMTEM /TO A TEMPORARY | |
334 | TAD I DUMTEM /FIELD DATA IS IN AS A CDF | |
335 | DCA ABCRT /TO THIS SEQUANCE | |
336 | RDF /FROM FIELD | |
337 | TAD K6202 /MAKE A CIF INSTRUCTION | |
338 | DCA ATV /TO THIS SEQUANCE FOR EXIT | |
339 | ISZ DUMTEM /POINT TO LOCATION IN FIELD | |
340 | TAD I DUMTEM /ACTUAL LOCATION IN UNKNOWN FIELD | |
341 | DCA I K7 /TO FROM FIELD LOCATION 7 | |
342 | ABCRT, NOP /BECOMES CDF UNKNOWN | |
343 | ISZ DUMSUB /BUMP RETURN ADDRESS | |
344 | ATV, NOP /BECOMES CIF FROM | |
345 | TAD AC /RESTORE AC | |
346 | JMP I DUMSUB /EXIT | |
347 | AC= CDZSKP | |
348 | DUMTEM= OBISUB | |
349 | OPIP, OPISUB | |
350 | OBIP, OBISUB | |
351 | DUMP, DUMSUB | |
352 | / | |
353 | / MASTER LINKAGE ROUTINE | |
354 | / | |
355 | MLINK, DCA AC /SAVE AC | |
356 | RDF | |
357 | TAD K6201 /MAKE A CDF | |
358 | DCA DUMTEM | |
359 | TAD I LINKP /ADDRESS OF CODE WORD | |
360 | JMS RTS1 | |
361 | TAD DUMTEM /CDF FROM INSTRUCTION | |
362 | DCA I DUMSUB /TO FIRST WORD OF 2 WORD VECTOR | |
363 | ISZ DUMSUB /POINT TO DISPLACEMENT | |
364 | TAD LINK /ADDRESS OF CODE WORD | |
365 | IAC /INCR. TO FIRST ARG | |
366 | DCA I DUMSUB /TO SECOND WORD OF 2 WORD VECTOR | |
367 | JMP ATVX-1 | |
368 | / | |
369 | / MASTER RETURN ROUTINE | |
370 | / | |
371 | MRTN, DCA AC /SAVE AC | |
372 | TAD I RTNP /ADDRESS OF CODE WORD | |
373 | JMS RTS1 | |
374 | TAD I DUMSUB /FIELD TO RETURN TO AS A CDF INSTRUCTION | |
375 | TAD K2 | |
376 | DCA ATV | |
377 | ISZ DUMSUB | |
378 | TAD I DUMSUB | |
379 | DCA DUMSUB | |
380 | JMP ATV | |
381 | \f/DATA | |
382 | ||
383 | K100A, 100 | |
384 | K7700A, 7700 | |
385 | LINKP, LINK | |
386 | RTNP, RTN | |
387 | / | |
388 | /SUBROUTINE 1 | |
389 | / | |
390 | RTS1, 0 | |
391 | DCA LINK | |
392 | TAD I LINK /CODE WORD | |
393 | K200A, AND K77A /MASK OUT NUMBER OF ARGUMENTS | |
394 | TAD K200A /+DISPLACEMENT | |
395 | DCA ABCRT /GIVES ADDRESS OF BCRT ENTRY | |
396 | TAD ABCRT | |
397 | TAD K100A /+DISPLACEMENT | |
398 | DCA ATV /GIVES ADDRESS OF TV DISPLACEMENT | |
399 | CDF CIF 0 /(TABLES IN FIELD 0!) | |
400 | TAD I ABCRT /TO CDF INSTRUCTION | |
401 | DCA RTSCDF /TO FIRST WORD OF 2 WORD VECTOR | |
402 | TAD I ATV /TO BANK DISPLACEMENT | |
403 | SNA /WAS IT LOADED? | |
404 | JMP NOTIN /NO | |
405 | ||
406 | DCA DUMSUB /TO SECOND WORD OF 2 WORD VECTOR | |
407 | RTSCDF, 0 | |
408 | JMP I RTS1 | |
409 | ||
410 | NOTIN, CIF 10 | |
411 | JMS I K7700A | |
412 | K7, 7 | |
413 | 1 /USER ERROR 1 - PROGRAM NOT LOADED | |
414 | \fFASIGN, 0 /CALLED FROM SABR - DOES ASSIGN AND | |
415 | DCA CDFSKP /EITHER LOOKUP,ENTER OR CLOSE | |
416 | TAD FASIGN | |
417 | JMS SAVEDF | |
418 | CIF 10 | |
419 | JMS I K7700A | |
420 | 10 /CALL USR IN | |
421 | CIF 10 | |
422 | JMS I K200A | |
423 | 1 /ASSIGN HANDLER | |
424 | ASDEV, 0;0 /SET UP BY SABR | |
425 | ASPAGE, 0 /DITTO | |
426 | JMP ASERR /ASSIGN FAILURE | |
427 | ZRONAM, DCA FLUNAM /ZERO FILENAME FOR LOOKUP | |
428 | TAD ASDEV+1 /PUT DEVICE NUMBER IN AC | |
429 | JMP I CDFSKP /JUMP TO APPROPRIATE ROUTINE | |
430 | ||
431 | *567 /MUST CROSS PAGE BOUNDARY JUST SO | |
432 | FLUKUP, CIF 10 | |
433 | JMS I K200A | |
434 | K2, 2 /LOOKUP FILE | |
435 | FLUNAM, 0 /REPLACED BY BLOCK NUMBER | |
436 | FLUCNT, 0 /REPLACED BY LENGTH (UNUSED) | |
437 | ASERR, ISZ CDZSKP /SKIP RETURN IF ERROR | |
438 | TAD ASPAGE | |
439 | DCA IHNDLR /SET UP INPUT HANDLER ENTRY AND FLAG | |
440 | TAD FLUNAM | |
441 | FINRXX, DCA FINREC /***** THIS SHOULD BE AT LOC 600! ***** | |
442 | CLA CMA | |
443 | DCA FICHCT | |
444 | TAD FIN10 | |
445 | DCA FINTMP | |
446 | JMP FRESET /RESET I/O AND RETURN FROM FASIGN | |
447 | IFNZRO FINRXX-600 <FINERR,_ERROR> | |
448 | \f /GET A CHARACTER ROUTINE. | |
449 | /RETURNS TO .+1 IF ERROR, .+2 IF NORMAL | |
450 | /CHAR IN AC ON OUTPUT | |
451 | /DOES NOT HANDLE END-OF-FILE VERY WELL | |
452 | ||
453 | FICHAR, 0 | |
454 | TAD FICHAR | |
455 | JMS SAVEDF /SAVE RETURN FIELD AND ADDRESS | |
456 | FNXTCH, ISZ FICHCT /BUMP CHAR COUNT | |
457 | JMP FIGET | |
458 | JMS I IHNDLR /IT OVERFLOWED - READ IN A NEW BUFFER | |
459 | FI200, 200 | |
460 | FINBUF, 1200 | |
461 | FINREC, 0 | |
462 | FI7700, SMA CLA | |
463 | SKP /END - OF - FILE ERROR - IGNORE | |
464 | JMP DFSAVE /ERROR RETURN | |
465 | ISZ FINREC | |
466 | CLA CMA | |
467 | TAD FINBUF | |
468 | DCA FINPTR | |
469 | TAD FI7200 | |
470 | DCA FICHCT /INITIALIZE FOR NEW RECORD | |
471 | FIGET, TAD FINTMP /GET HIGH-ORDER-BIT BUFFER | |
472 | SPA /IS IT FULL? | |
473 | JMP FITHRD /YES - OUTPUT COMBINED HIGH-ORDER BITS | |
474 | FI7200, CLA | |
475 | ISZ FINPTR | |
476 | TAD I FINPTR /GET A LOC FROM THE BUFFER | |
477 | AND FI7400 | |
478 | RAL CLL | |
479 | TAD FINTMP /PUT THE HIGH ORDER BITS ONTO THE HOB BUFFER | |
480 | FINXX, RTL | |
481 | RTL | |
482 | DCA FINTMP | |
483 | TAD I FINPTR | |
484 | JMP DFEXIT /RETURN WITH SKIP | |
485 | FITHRD, DCA I FINPTR /FUDGE THIRD CHAR INTO BUFFER | |
486 | CLL CML | |
487 | JMP FINXX /RESET FINTMP TO 10 | |
488 | \f /PUT A CHARACTER | |
489 | /RETURNS TO .+1 IF ERR, .+2 IF NORMAL | |
490 | /CALLED WITH CHAR IN AC | |
491 | ||
492 | FOCHAR, 0 | |
493 | DCA FOUTMP /SAVE CHAR | |
494 | TAD FOCHAR | |
495 | JMS SAVEDF /SAVE CALLING FIELD AND LOC | |
496 | FOLOOP, ISZ FOUJMP | |
497 | ISZ FOCHCT /BUMP CHAR COUNT | |
498 | FOJMP, JMP FOUJMP /TAKE A BRANCH OF THE THREE-WAY JUMP | |
499 | JMS I OHNDLR | |
500 | 4200 | |
501 | FOUBUF, 1200 | |
502 | FOUREC, 0 | |
503 | JMP DFSAVE /OUTPUT ERROR | |
504 | ISZ FOUREC | |
505 | JMS FOSETP | |
506 | ISZ FOCCNT /BUMP FILE LENGTH | |
507 | ISZ FOOCNT /ALSO ENTER COUNT | |
508 | JMP FOLOOP /NOW GO PUT THE CHAR INTO THE NEW BUFFER | |
509 | JMP DFSAVE /ENTER COUNT OVERFLOWED - ERROR RETURN | |
510 | ||
511 | FOUJMP, JMP . /THREE-WAY SWITCH | |
512 | JMP FOUCH1 | |
513 | JMP FOUCH2 | |
514 | FOUCH3, TAD FOUTMP | |
515 | RTL | |
516 | RTL | |
517 | DCA FOUTMP | |
518 | TAD FOUTMP | |
519 | AND FI7400 | |
520 | TAD I FOPOLD /PUT HIGH ORDER BITS OF CHAR3 | |
521 | DCA I FOPOLD /INTO HIGH ORDER BITS OF CHAR 1 | |
522 | TAD FOUTMP | |
523 | RTL | |
524 | RTL | |
525 | AND FI7400 | |
526 | TAD I FOUPTR /PUT LOW ORDER BITS OF CHAR 3 | |
527 | DCA I FOUPTR /INTO HIGH ORDER BITS OF CHAR 2 | |
528 | TAD FOJMP | |
529 | DCA FOUJMP | |
530 | ISZ FOUPTR | |
531 | JMP DFEXIT /RETURN NORMALLY | |
532 | FOUCH2, TAD FOUPTR | |
533 | DCA FOPOLD /SAVE POINTER TO CHAR 1 | |
534 | ISZ FOUPTR | |
535 | FOUCH1, TAD FOUTMP | |
536 | DCA I FOUPTR /STORE CHAR 1 OR 2 | |
537 | DFEXIT, ISZ CDZSKP /INCREMENT RETURN ADDR | |
538 | JMP DFSAVE /AND GO THERE | |
539 | \fFOSETP, 0 | |
540 | TAD FO7177 | |
541 | DCA FOCHCT | |
542 | TAD FOUBUF | |
543 | DCA FOUPTR | |
544 | TAD FOJMP | |
545 | DCA FOUJMP | |
546 | JMP I FOSETP | |
547 | ||
548 | FO7177, 7177 | |
549 | FIN10, 10 | |
550 | ||
551 | FENTER, TAD ELENGT /ELENGT=0 UNLESS SOME KLUDGE SETS IT UP | |
552 | CIF 10 /FENTER JUMPED TO BY FASIGN | |
553 | JMS I FI200 | |
554 | 3 | |
555 | FOONAM, 0 /FILE NAME IN LOCS 0-3 | |
556 | FOOCNT, 0 | |
557 | ISZ CDZSKP /FOR ENTER, ERROR RETURN IS SKIP RETURN | |
558 | TAD FOONAM | |
559 | DCA FOUREC /INITIALIZE OUTPUT RECORD # | |
560 | JMS FOSETP /SET UP CHARACTER POINTERS | |
561 | DCA FOONAM /SET FOONAM FOR NEXT ENTER | |
562 | TAD I PASPAG | |
563 | JMP STOHND /GO TO COMMON CODE WITH "FCLOSE" | |
564 | PASPAG, ASPAGE | |
565 | ||
566 | FCLOSE, CIF 10 /JUMPED TO BY FASIGN | |
567 | JMS I FI200 /CALL I/O MONITOR | |
568 | 4 | |
569 | FOCNAM, 0 /FILE NAME IN 0-3 | |
570 | FOCCNT, 0 /CLOSING LENGTH | |
571 | ISZ CDZSKP /ERROR - BUMP RETURN | |
572 | STOHND, DCA OHNDLR | |
573 | DCA FOCCNT /INITIALIZE CLOSING COUNT FOR NEXT FILE | |
574 | FRESET, CIF 10 | |
575 | JMS I FI200 | |
576 | 13 /RESET ALL DEVICE HANDLER ENTRIES | |
577 | 0 /BUT RETAIN ANY OPEN OUTPUT FILES | |
578 | JMP DFRSTR /RETURN FROM FASIGN AFTER KICKING MONITOR OUT | |
579 | FOUTMP= FICHAR | |
580 | FI7400, 7400 | |
581 | PAGE | |
582 | \f *1000 | |
583 | PROPGT, 0 /CALLED FROM FIELD 1 LOADER WHEN 1ST | |
584 | CDF 10 /CHECKING FOR I/O SWITCHES. | |
585 | DCA I LTOPCOR /-# OF CORE FIELDS IN AC | |
586 | TAD I LTOPCOR | |
587 | DCA I LFCTR | |
588 | TAD I LTOPCOR | |
589 | CDF 0 | |
590 | CMA /GET # OF HI CORE FIELD | |
591 | PROPLP, DCA FC | |
592 | CLA CMA | |
593 | TAD FC | |
594 | SNA CLA | |
595 | JMP FIELD1 | |
596 | TAD FC | |
597 | JMS CHGBNK | |
598 | JMS STOBNK | |
599 | CLA CMA | |
600 | TAD FC | |
601 | JMP PROPLP | |
602 | FIELD1, CLA IAC | |
603 | JMS CHGBNK | |
604 | JMS I LSHNDLR | |
605 | 4100 | |
606 | 0 | |
607 | MTEMP | |
608 | JMP I LLWOWIE | |
609 | JMS I LSHNDLR | |
610 | 4201 | |
611 | 400 | |
612 | MTEMP+21 /WRITE OUT RUN-TIME ROUTINES | |
613 | JMP I LLWOWIE | |
614 | JMS CHGBNK | |
615 | TAD L6001 | |
616 | DCA I LJSBITS | |
617 | TAD L6213 | |
618 | DCA I LJSTFLD | |
619 | TAD LLRSTRT | |
620 | DCA I LJSTADR | |
621 | CDF CIF 10 /PROPGT IS CALLED FROM FIELD 1 ONLY | |
622 | JMP I PROPGT | |
623 | FC, 0 | |
624 | \fCHGBNK, 0 | |
625 | CLL RTL | |
626 | RAL | |
627 | TAD LCDF | |
628 | DCA X1 | |
629 | TAD X1 | |
630 | DCA LINK+1 | |
631 | TAD X1 | |
632 | DCA RTN+1 | |
633 | TAD X1 | |
634 | DCA CDFSKP+2 | |
635 | TAD X1 | |
636 | DCA OBISUB+1 | |
637 | TAD X1 | |
638 | DCA OPISUB+1 | |
639 | TAD X1 | |
640 | DCA DUMSUB+1 | |
641 | JMP I CHGBNK | |
642 | ||
643 | STOBNK, 0 | |
644 | TAD LLINK1 | |
645 | DCA X2 | |
646 | TAD X2 | |
647 | DCA X3 | |
648 | TAD LLINK2 | |
649 | DCA X4 | |
650 | TAD X1 | |
651 | DCA STOCDF | |
652 | STOLUP, CDF 0 | |
653 | TAD I X2 | |
654 | STOCDF, HLT | |
655 | DCA I X3 | |
656 | ISZ X4 | |
657 | JMP STOLUP | |
658 | CDF 0 | |
659 | JMP I STOBNK | |
660 | SYSLIB, TEXT /LIB8/ | |
661 | 2214 /.RL | |
662 | ||
663 | LTOPCOR,TOPCOR | |
664 | LSHNDLR,SHNDLR | |
665 | LFCTR, FCTR | |
666 | LLWOWIE,LWOWIE | |
667 | L6001, 6001 | |
668 | LJSBITS,JSBITS | |
669 | LJSTADR,JSTADR | |
670 | LJSTFLD,JSTFLD | |
671 | L6213, 6213 | |
672 | LCDF, CDF | |
673 | LLINK1, LINK-1 | |
674 | LLINK2, LINK-MDUMP-2 | |
675 | \fLDRZZ1, CDF 10 /COME HERE IF NOT CHAINED TO | |
676 | DCA I LMOFIL | |
677 | ISZ LMOFIL | |
678 | ISZ LMOCNT | |
679 | JMP .-3 | |
680 | CLA CLL CMA RAL /-2 | |
681 | DCA I LDOPRP | |
682 | CDF 00 | |
683 | JMP I .+1 | |
684 | LDRYYY | |
685 | LMOFIL, 7600 | |
686 | LMOCNT, -47 | |
687 | LLRSTRT,LRSTRT | |
688 | LDOPRP, DOPROP | |
689 | FORTRL, FILENAME FORTRL.TM | |
690 | PAGE | |
691 | \f *1200 /LINKING LOADER SUBROUTINES FOR /I AND /O OPTIONS | |
692 | INPENB, 0 | |
693 | ISZ INPFLG | |
694 | JMP INRTRN /ALREADY HAVE A /I | |
695 | JMS TWOPAG /HAS USER SPECIFIED 2-PG. HNDLRS? | |
696 | TAD OUPFLG | |
697 | SPA CLA | |
698 | JMP INVRGN | |
699 | TAD K2200 | |
700 | DCA INHNDL | |
701 | TAD (FINBUF | |
702 | DCA I (ST1600 /MARK THE INPUT BUFFER IN PAGE 1600 | |
703 | TAD K2377 | |
704 | JMS SETHLA | |
705 | INRTRN, CDF CIF 10 | |
706 | JMP I INPENB | |
707 | ||
708 | INVRGN, TAD K1000 | |
709 | DCA INHNDL | |
710 | TAD K1577 | |
711 | JMP INRTRN-1 | |
712 | ||
713 | OUPENB, 0 | |
714 | ISZ OUPFLG | |
715 | JMP OURTRN | |
716 | JMS TWOPAG /HAS USER SPECIFIED 2 PG. HNDLRS? | |
717 | TAD INPFLG | |
718 | SPA CLA | |
719 | JMP OUVRGN | |
720 | TAD K2200 | |
721 | DCA OUHNDL | |
722 | TAD (FOUBUF | |
723 | DCA I (ST1600 /MARK OUTPUT BUFFER IN 1600 | |
724 | TAD K2377 | |
725 | JMS SETHLA | |
726 | OURTRN, CDF CIF 10 | |
727 | JMP I OUPENB | |
728 | ||
729 | OUVRGN, TAD K1000 | |
730 | DCA OUHNDL | |
731 | TAD K1577 | |
732 | JMP OURTRN-1 | |
733 | ||
734 | INPFLG, -1 | |
735 | OUPFLG, -1 | |
736 | K1000, 1000 /SET TO 1001 FOR 2 PAGE HANDLERS | |
737 | K2200, 2200 /SET TO 2401 FOR 2 PAGE HANDLERS. | |
738 | K2377, 2377 /SET TO 2577 FOR 2 PAGE HANDLERS. | |
739 | K1577, 1577 /SET TO 1777 FOR 2 PAGE HANDLERS. | |
740 | \f/SUBROUTINE TO CHECK FOR /H SWITCH MEANING USER | |
741 | /WANTS RUN TIME DEVICE INDEPENDENT I/O TO | |
742 | /BE ABLE TO USE 2 PAGE DEVICE HANDLERS | |
743 | / | |
744 | TWOPAG, 0 | |
745 | CDF 10 | |
746 | TAD I (MPARAM | |
747 | AND (20 /IS /H SWITCH SET? | |
748 | SNA CLA | |
749 | JMP I TWOPAG /NO-RETURN (DATA FLD=1) | |
750 | TAD (1001 /YES-RESET HANDLR FETCH TO ACCEPT | |
751 | DCA K1000 /TWO PAGE HANDLERS | |
752 | TAD (2401 /RESET FETCH FOR SECOND HANDLER | |
753 | DCA K2200 | |
754 | TAD (2777 | |
755 | DCA K2377 /RESET HLA CONSTANT FOR 2 PG HANDLRS | |
756 | TAD (1777 | |
757 | DCA K1577 /RESET 2ND HLA CONSTANT FOR 2 PG | |
758 | TAD (2000 | |
759 | DCA I (K1600 /RESET BUFR. ADDRESS-SEE *LDRXIT* | |
760 | CDF 00 | |
761 | TAD (1400 | |
762 | DCA I (FINBUF /RESET IN AND OUT BUFFER ADDRESSES | |
763 | TAD (1400 /TO MAKE ROOM FOR 2 PG HANDLR | |
764 | DCA I (FOUBUF | |
765 | CDF 10 | |
766 | JMP I TWOPAG /RETN. DATA FLD=1 | |
767 | ||
768 | SETHLA, 0 | |
769 | DCA I (HLAZ | |
770 | TAD I (HLAZ | |
771 | CIA | |
772 | DCA I (HLAIO | |
773 | CDF 0 | |
774 | JMP I SETHLA | |
775 | BATCK, 0 | |
776 | CDF 0 | |
777 | TAD I (7777 | |
778 | AND (70 | |
779 | SNA | |
780 | JMP I BATCK | |
781 | CLL RTR | |
782 | RAR | |
783 | CMA | |
784 | DCA TMPC | |
785 | TAD I (7777 | |
786 | RAL | |
787 | SPA CLA | |
788 | IAC | |
789 | TAD TMPC | |
790 | JMP I (FOUNDX | |
791 | TMPC, 0 | |
792 | PAGE | |
793 | \f FIELD 1 | |
794 | /FIELD 1 PAGE 0 EQUIVALENCES - FIT INTO USR CRACKS | |
795 | ||
796 | DEVHND=20 | |
797 | BANK=21 | |
798 | TM1=22 | |
799 | TM2=23 | |
800 | RECNO=24 | |
801 | OVLYFG=25 | |
802 | CUR=26 | |
803 | WORD=27 | |
804 | HLAPTR=30 | |
805 | HLA=31 | |
806 | RCON=32 | |
807 | COML=33 /HI COMMON LOC, 0 IF NONE | |
808 | TYPE=34 | |
809 | CSUM=35 | |
810 | NSUB=36 | |
811 | ||
812 | *3600 | |
813 | LRSTRT, DCA I (MIFILE | |
814 | LDRZZZ, JMS I (IONULL | |
815 | LDRXXX, TAD (MIFILE | |
816 | DCA FILPTR | |
817 | DCA OVLYFG | |
818 | DCA I (WRBFSW | |
819 | JMS I (START | |
820 | JMP IOCHEK /GO TEST FOR /I, /O ALD /0-7 | |
821 | LDRLP, DCA BANK | |
822 | TAD I FILPTR | |
823 | SNA | |
824 | JMP GETCD | |
825 | JMS GETHND | |
826 | TAD I FILPTR | |
827 | ISZ FILPTR | |
828 | DCA RECNO | |
829 | TAD I (MPARAM | |
830 | RAR | |
831 | SZL CLA | |
832 | JMP I (LBRY | |
833 | JMS I (LOAD | |
834 | JMP LDRLP | |
835 | GETCD, TAD I (MPARAM+3 | |
836 | SNA | |
837 | JMP LKATMP | |
838 | DCA I (LSTADR | |
839 | TAD I (MPARAM-1 | |
840 | CLL RAL | |
841 | AND (17 | |
842 | CLL RTL | |
843 | TAD (CDF CIF 0 | |
844 | DCA I (LSTFLD /FALL INTO NEXT PAGE | |
845 | \fLKATMP, JMS I (WRPGBF | |
846 | TAD I (MPARAM | |
847 | AND (40 | |
848 | SZA CLA | |
849 | JMP BUILD | |
850 | TAD I (MPARAM-1 | |
851 | SPA CLA | |
852 | JMP BUILD | |
853 | JMS MAP | |
854 | CDCALL, JMS I (200 | |
855 | 5 | |
856 | 2214 | |
857 | TAD I (MPARAM+1 | |
858 | AND (100 | |
859 | SZA CLA | |
860 | JMP LDRZZZ | |
861 | IOCHEK, JMS I (IOTEST | |
862 | DCA TM1 | |
863 | TAD (MIFILE | |
864 | DCA FILPTR | |
865 | TAD I (MPARAM+2 | |
866 | AND (1774 | |
867 | SNA | |
868 | JMP LDRLP | |
869 | RAL | |
870 | ISZ TM1 | |
871 | SNL | |
872 | JMP .-3 | |
873 | CLA CMA CLL RTL | |
874 | TAD TM1 | |
875 | JMP LDRLP | |
876 | FILPTR, 0 | |
877 | MAP, 0 | |
878 | TAD I (MPARAM+1 | |
879 | AND (4410 /"M","P" AND "U" OPTIONS | |
880 | SNA | |
881 | MAPRTN, JMP I MAP | |
882 | CLL RTR | |
883 | RTR | |
884 | AND (200 | |
885 | SZA CLA | |
886 | CLL CML IAC | |
887 | CML RAL /FORM 0 IF /U, 1 IF /P AND 2 IF /M | |
888 | DCA TM1 | |
889 | JMP I (MAPIO | |
890 | \fBUILD, TAD (SHNDLR | |
891 | DCA DEVHND | |
892 | TAD PSYSLB | |
893 | SZA | |
894 | JMS I (LBSRCH | |
895 | JMS MAP | |
896 | JMP I (BUILDX | |
897 | PSYSLB, 0 | |
898 | ||
899 | GETHND, 0 | |
900 | AND (17 | |
901 | DCA I (EASGN | |
902 | TAD (401 | |
903 | DCA LASGN | |
904 | TAD I (EASGN | |
905 | ISZ FILPTR | |
906 | JMS I (200 | |
907 | 1 /ASSIGN | |
908 | LASGN, 401 | |
909 | JMP I (HNDERR /BAD HANDLER | |
910 | TAD LASGN | |
911 | DCA DEVHND | |
912 | JMP I GETHND | |
913 | PAGE | |
914 | \fBUILDX, TAD LSTADR | |
915 | SZA CLA | |
916 | JMP ALREDY | |
917 | TAD (MAIN-1 | |
918 | DCA X1 | |
919 | JMS I (SETS1 | |
920 | JMS I (SEARCH | |
921 | JMP I (ERSTAD | |
922 | TAD (TVEC-1 | |
923 | TAD I (SYMNUM | |
924 | DCA TM1 | |
925 | CDF 0 | |
926 | TAD I TM1 | |
927 | SNA | |
928 | JMP I (ERSTAD | |
929 | DCA LSTADR | |
930 | TAD TM1 | |
931 | TAD (7700 | |
932 | DCA TM1 | |
933 | CLA CLL CML RTL /CHANGE CDF TO CDF CIF | |
934 | TAD I TM1 | |
935 | DCA LSTFLD | |
936 | ALREDY, CDF 10 | |
937 | JMS I (WROVLY | |
938 | TAD (1400 | |
939 | JMS STOINF | |
940 | DCA OLDT9 | |
941 | TAD (HLA7 | |
942 | DCA TM1 | |
943 | TAD (-10 | |
944 | DCA X3 | |
945 | DCA I X1 | |
946 | DCA X4 | |
947 | BLDLP, CLA CLL CML RTL | |
948 | TAD X3 | |
949 | SNA CLA | |
950 | JMP BFLD1 /TREAT FIELD 1 (COMMON AREA) DIFFERENTLY | |
951 | BLDLPX, TAD I TM1 | |
952 | AND (7600 | |
953 | SNA | |
954 | JMP BLDSKP | |
955 | BLDLPY, TAD (170 | |
956 | CLL CML CMA RTR | |
957 | RTR | |
958 | TAD X3 | |
959 | CLL CMA RTL | |
960 | RAL | |
961 | DCA I X1 | |
962 | DCA I X1 | |
963 | ISZ X4 | |
964 | BLDSKP, CLA CMA | |
965 | TAD TM1 | |
966 | DCA TM1 | |
967 | ISZ X3 | |
968 | JMP BLDLP | |
969 | TAD X4 | |
970 | CIA | |
971 | DCA I (1400 | |
972 | CIF 0 | |
973 | JMS I (SHNDLR | |
974 | 4210 | |
975 | 1200 | |
976 | MTEMP+10 | |
977 | HLT | |
978 | CDF 0 | |
979 | TAD (JSTFLD-1 | |
980 | JMS STOINF | |
981 | TAD LSTADR | |
982 | DCA I (MSTADR | |
983 | TAD LSTFLD | |
984 | DCA I (MSTCDF | |
985 | JMP I (LDRXIT | |
986 | ||
987 | BFLD1, TAD COML | |
988 | SNA /IS THERE ANY COMMON? | |
989 | JMP BLDLPX /NO | |
990 | CLL CMA | |
991 | TAD I TM1 | |
992 | SNL CLA /IS THERE ANY CODE IN FIELD 1? | |
993 | JMP BLDSKP /NO | |
994 | TAD (110 /SAVE FIELD 1 IN TWO SEGMENTS - PAGE 0 AND | |
995 | DCA I X1 /THE CODE FOLLOWING THE END OF THE COMMON AREA | |
996 | ISZ X4 /(THIS IS TO ENABLE "CHAIN" TO WORK PROPERLY) | |
997 | TAD COML | |
998 | IAC | |
999 | DCA I X1 | |
1000 | TAD COML | |
1001 | CMA | |
1002 | TAD I TM1 | |
1003 | AND (7600 | |
1004 | JMP BLDLPY | |
1005 | \fCVTREC, 0 | |
1006 | TAD CUR | |
1007 | CLL RTL | |
1008 | RTL | |
1009 | RAL | |
1010 | AND (7 | |
1011 | JMP I CVTREC | |
1012 | ||
1013 | STOINF, 0 | |
1014 | DCA X1 | |
1015 | TAD LSTFLD | |
1016 | DCA I X1 | |
1017 | TAD LSTADR | |
1018 | DCA I X1 | |
1019 | DCA I X1 | |
1020 | JMP I STOINF | |
1021 | LSTADR, 0 | |
1022 | LSTFLD, 0 | |
1023 | PAGE | |
1024 | ||
1025 | \fMAPIO, TAD I ML7600 | |
1026 | SNA | |
1027 | TAD TTYNO /TELETYPE IS DEFAULT LISTING DEVICE | |
1028 | JMS I (GETHND | |
1029 | TAD I ML7604 /PICK UP EXTENSION WORD. | |
1030 | SNA /NON-ZERO? | |
1031 | TAD (1520 /NO-SUPPLY '.MP' EXTENSION. | |
1032 | DCA I ML7604 /YES-LEAVE ALONE | |
1033 | TAD ML7601 | |
1034 | DCA MNAME | |
1035 | TAD I (EASGN | |
1036 | TAD (100 /4 SHIFTED LEFT INTO THE "DESIRED LENGTH" POSITION | |
1037 | JMS I (200 | |
1038 | 3 | |
1039 | MNAME, 0 | |
1040 | MECNT, 0 | |
1041 | JMP I (OUERR | |
1042 | TAD MNAME | |
1043 | DCA ORECNO | |
1044 | JMS OUSETP | |
1045 | DCA MCCNT | |
1046 | TAD (OCHAR | |
1047 | DCA TYPE | |
1048 | TAD TM1 | |
1049 | CLL CML RAR | |
1050 | JMP I (MAPX | |
1051 | OCHAR, 0 | |
1052 | DCA OUTEMP | |
1053 | ISZ OJMP | |
1054 | ISZ OCHCNT | |
1055 | OJMPE, JMP OJMP | |
1056 | CIF 0 | |
1057 | JMS I DEVHND | |
1058 | 4210 | |
1059 | OUBUF, 4600 | |
1060 | ORECNO, 0 | |
1061 | JMP I (OUERR | |
1062 | ISZ ORECNO | |
1063 | ISZ MCCNT | |
1064 | JMS OUSETP | |
1065 | ISZ MECNT | |
1066 | JMP OCHAR+2 | |
1067 | JMP I (OUERR | |
1068 | \fOUSETP, 0 | |
1069 | TAD (-601 | |
1070 | DCA OCHCNT | |
1071 | TAD OUBUF | |
1072 | DCA OUPTR | |
1073 | TAD OJMPE | |
1074 | DCA OJMP | |
1075 | JMP I OUSETP | |
1076 | ||
1077 | OJMP, HLT /THREE-WAY JUMP FOR CHAR OUTPUT | |
1078 | JMP OCHAR1 | |
1079 | JMP OCHAR2 | |
1080 | OCHAR3, TAD OJMPE | |
1081 | DCA OJMP | |
1082 | TAD OUTEMP | |
1083 | RTL | |
1084 | RTL | |
1085 | DCA OUTEMP | |
1086 | TAD OUTEMP | |
1087 | AND OU7400 | |
1088 | TAD I OUPOLD | |
1089 | DCA I OUPOLD | |
1090 | TAD OUTEMP | |
1091 | RTL | |
1092 | RTL | |
1093 | AND OU7400 | |
1094 | TAD I OUPTR | |
1095 | DCA I OUPTR | |
1096 | ISZ OUPTR | |
1097 | JMP OUCOM | |
1098 | OCHAR2, TAD OUPTR | |
1099 | DCA OUPOLD | |
1100 | ISZ OUPTR | |
1101 | OCHAR1, TAD OUTEMP | |
1102 | AND OU377 | |
1103 | DCA I OUPTR | |
1104 | OUCOM, JMP I OCHAR | |
1105 | OCHCNT, 0 | |
1106 | OUPOLD=OUSETP | |
1107 | OUTEMP, 0 | |
1108 | OU7400, 7400 | |
1109 | OUPTR, 0 | |
1110 | OU377, 377 | |
1111 | \f/CLOSE OUTPUT FILE | |
1112 | ||
1113 | OCLOS, TAD (232 | |
1114 | JMS OCHAR | |
1115 | TAD OCHCNT | |
1116 | CMA | |
1117 | SZA CLA | |
1118 | JMP .-4 | |
1119 | JMS OCHAR | |
1120 | TAD I (EASGN | |
1121 | JMS I (200 | |
1122 | 4 | |
1123 | ML7601, 7601 | |
1124 | MCCNT, 0 | |
1125 | JMP I (OUERR | |
1126 | TAD (TTYOUT | |
1127 | DCA TYPE | |
1128 | JMP I (MAPRTN | |
1129 | ||
1130 | TTYOUT, 0 | |
1131 | 6046 | |
1132 | 6041 | |
1133 | JMP .-1 | |
1134 | ML7600, 7600 | |
1135 | JMP I TTYOUT | |
1136 | TTYNO, 0 /SET TO TTY DEVICE NUMBER BY INITIALIZATION | |
1137 | IONULL, 0 | |
1138 | TAD ML7600 | |
1139 | DCA I (HLASZA | |
1140 | ML7604, 7604 /POINTER TO FILE EXT. WORD | |
1141 | JMP I IONULL | |
1142 | PAGE | |
1143 | \fLOAD, 0 | |
1144 | DCA LREQUR | |
1145 | TAD BANK | |
1146 | TAD (HLAZ | |
1147 | DCA HLAPTR | |
1148 | JMS I (SETRCN /SET UP HLA AND RCON | |
1149 | TAD RCON | |
1150 | CLL CML | |
1151 | TAD LREQUR | |
1152 | TAD (400 | |
1153 | SNL SZA CLA | |
1154 | JMP LFAILD | |
1155 | TAD RECNO | |
1156 | DCA LRECNO | |
1157 | CLA CMA | |
1158 | DCA INCHCT | |
1159 | JMS ICHAR | |
1160 | SNA CLA | |
1161 | JMP .-2 | |
1162 | JMP I (MORE | |
1163 | ||
1164 | ICHAR, 0 | |
1165 | TAD XX7600 /PARITY TTY HACK | |
1166 | KRS | |
1167 | TAD (-7603 | |
1168 | SNA CLA | |
1169 | KSF | |
1170 | SKP | |
1171 | JMP I (MGET /17667=07605 | |
1172 | ISZ IJMP | |
1173 | ISZ INCHCT | |
1174 | IJMPE, JMP IJMP | |
1175 | CIF 0 | |
1176 | JMS I DEVHND | |
1177 | INCTLW, 0410 | |
1178 | INBUF, 4600 | |
1179 | LRECNO, 0 | |
1180 | JMP INCKEF | |
1181 | INISZ, ISZ LRECNO | |
1182 | ISZ LRECNO | |
1183 | TAD IN6377 | |
1184 | DCA INCHCT | |
1185 | TAD INBUF | |
1186 | DCA INPTR | |
1187 | TAD IJMPE | |
1188 | DCA IJMP | |
1189 | JMP ICHAR+1 | |
1190 | \fIJMP, HLT /THREE-WAY JUMP FOR CHAR INPUT | |
1191 | JMP ICHAR1 | |
1192 | JMP ICHAR2 | |
1193 | ICHAR3, TAD IJMPE | |
1194 | DCA IJMP | |
1195 | TAD I INPTR | |
1196 | ISZ INPTR | |
1197 | AND IN7400 | |
1198 | CLL RTR | |
1199 | RTR | |
1200 | TAD INTEMP | |
1201 | RTR | |
1202 | RTR | |
1203 | JMP INCOM | |
1204 | ICHAR2, TAD I INPTR | |
1205 | ISZ INPTR | |
1206 | AND IN7400 | |
1207 | DCA INTEMP | |
1208 | ICHAR1, TAD I INPTR | |
1209 | INCOM, AND IN377 | |
1210 | JMP I ICHAR | |
1211 | INCKEF, SMA CLA | |
1212 | JMP LRECNO+2 | |
1213 | JMP I (INERR | |
1214 | INPTR, 0 | |
1215 | INCHCT, 0 | |
1216 | INTEMP, 0 | |
1217 | IN7400, 7400 | |
1218 | IN377, 377 | |
1219 | IN6377, 6377 | |
1220 | \fXX7600, | |
1221 | XER2, 7600 | |
1222 | TAD EASGN | |
1223 | TAD (DCB-1 | |
1224 | DCA TM2 | |
1225 | TAD I TM2 | |
1226 | SPA CLA | |
1227 | JMP DIRDEV | |
1228 | TAD (2205 | |
1229 | JMS I (TTWO | |
1230 | TAD (1417 | |
1231 | JMS I (TTWO | |
1232 | TAD (0104 | |
1233 | JMS I (TTWO | |
1234 | JMS I (CRLF | |
1235 | DIRDEV, TAD I HLAPTR | |
1236 | ISZ BANK | |
1237 | CMA | |
1238 | AND XX7600 | |
1239 | JMP LOAD+1 | |
1240 | LFAILD, ISZ BANK | |
1241 | JMP LOAD+2 | |
1242 | EASGN, 0 | |
1243 | LREQUR, 0 | |
1244 | LOADOK, JMS I (WRPGBF | |
1245 | JMP I LOAD | |
1246 | ||
1247 | SETS1, 0 | |
1248 | TAD (S1-1 | |
1249 | DCA X2 | |
1250 | TAD I X1 | |
1251 | DCA I X2 | |
1252 | TAD I X1 | |
1253 | DCA I X2 | |
1254 | TAD I X1 | |
1255 | DCA I X2 | |
1256 | JMP I SETS1 | |
1257 | PAGE | |
1258 | \f/ 4600-5177 USED FOR LOADER MAP OUTPUT BUFFER | |
1259 | / 5200-5577 USED FOR LIBRARY DIRECTORY BUFFER | |
1260 | ||
1261 | *5600 | |
1262 | ||
1263 | /** CAN ONLY USE FIRST HALF OF THIS PAGE - 2ND HALF IS PART OF MST | |
1264 | /** NO LITERALS IN THIS PAGE! | |
1265 | ||
1266 | LBRY, TAD RECNO | |
1267 | JMS LBSRCH | |
1268 | JMP I .+1 | |
1269 | GETCD | |
1270 | ||
1271 | LBSRCH, 0 /LIBRARY SEARCH ROUTINE | |
1272 | DCA LBREC /SAVE START BLK OF LIBRARY | |
1273 | CIF 0 | |
1274 | JMS I DEVHND /READ LIBRARY DIRECTORY | |
1275 | LBCTLW, 0210 | |
1276 | L5200, 5200 | |
1277 | LBREC, 0 | |
1278 | JMP I LIOERR | |
1279 | TAD LBCTLW | |
1280 | DCA I LINCTL | |
1281 | TAD L7177 | |
1282 | DCA I LIN6377 | |
1283 | DCA I LINISZ | |
1284 | TAD L5177 | |
1285 | DCA X1 /INITIALIZE FOR SEARCH | |
1286 | LBRYLP, JMS I LSETS1 /GET NEXT DIRECTORY ENTRY | |
1287 | TAD I X1 | |
1288 | SNA | |
1289 | JMP I LBSRCH /END OF DIRECTORY | |
1290 | TAD L5200 | |
1291 | DCA LBFPTR | |
1292 | JMS I LSEARCH /IS IT IN SYMTAB? | |
1293 | JMP LBRYLP /NO | |
1294 | TAD I LSYMNUM | |
1295 | TAD LTVEC1 | |
1296 | DCA TM1 | |
1297 | CDF 0 | |
1298 | TAD I TM1 | |
1299 | CDF 10 | |
1300 | SZA CLA /IS SYMBOL ALREADY DEFINED? | |
1301 | JMP LBRYLP /YES | |
1302 | LBLDLP, TAD I LBFPTR /GET MODULE TO LOAD | |
1303 | SNA | |
1304 | JMP LBRYLP-2 /NO MORE MODULES TO LOAD | |
1305 | AND L177 | |
1306 | IAC | |
1307 | TAD LBREC | |
1308 | DCA RECNO | |
1309 | DCA BANK | |
1310 | TAD I LBFPTR | |
1311 | AND L7600 | |
1312 | JMS I LLOAD /LOAD LIBRARY MODULE | |
1313 | ISZ LBFPTR | |
1314 | JMP LBLDLP /GET NEXT MODULE | |
1315 | ||
1316 | LBFPTR, 0 | |
1317 | LIOERR, INERR | |
1318 | LINCTL, INCTLW | |
1319 | L7177, 7177 | |
1320 | LIN6377, IN6377 | |
1321 | L5177, 5177 | |
1322 | LSETS1, SETS1 | |
1323 | LSEARCH, SEARCH | |
1324 | L177, 177 | |
1325 | L7600, 7600 | |
1326 | LLOAD, LOAD | |
1327 | LSYMNUM, SYMNUM | |
1328 | LINISZ, INISZ | |
1329 | LTVEC1, TVEC-1 | |
1330 | IFZERO .-5700&4000 <LBRERR, _ERROR> | |
1331 | \f/MAIN LOADING CODE | |
1332 | /MODIFIED VERSION OF | |
1333 | /PAPER-TAPE LINKING LOADER | |
1334 | ||
1335 | /DEFINITIONS | |
1336 | ||
1337 | BCRT= 200 | |
1338 | TVEC= 300 | |
1339 | ORGT= 100 /LOCAL SYMBOL TABLE NOW IN FIELD 0 | |
1340 | MST= 6177 /MAIN SYMBOL TABLE | |
1341 | ||
1342 | *6200 | |
1343 | ||
1344 | /START OF PROGRAM - INITIALIZATION | |
1345 | ||
1346 | START, 0 | |
1347 | TAD K7600 /SET COUNTER FOR 200 | |
1348 | DCA NSUB | |
1349 | TAD BCRTA /POINTER TO BANK TABLE | |
1350 | DCA X3 | |
1351 | CDF 00 | |
1352 | DCA I X3 /CLEAR BANK TABLE & TV TABLE | |
1353 | ISZ NSUB | |
1354 | JMP .-2 /NOT DONE | |
1355 | CDF 10 | |
1356 | TAD M10 | |
1357 | DCA NSUB | |
1358 | TAD HLAZA | |
1359 | DCA X3 | |
1360 | TAD K777 | |
1361 | DCA I X3 /BANK0 HIGHEST LOADED ADDR. =777 | |
1362 | ISZ NSUB /NSUB INCREMENTS TO ZERO | |
1363 | JMP .-2 | |
1364 | DCA COML /INIT. OLD COMMON AT 0000 | |
1365 | JMP I START | |
1366 | \f/REENTRY FOR NEXT ROUTINE TO BE LOADED | |
1367 | ||
1368 | MORE, DCA LMTC /CLR LOCAL SYMBOL COUNT | |
1369 | DCA CSUM /CLR CHECKSUM | |
1370 | TAD MORE1A /SET FOR RETURN TO MORE1 IF LEADER | |
1371 | DCA EOF | |
1372 | MORE1, JMS RWORD | |
1373 | TAD RC10A /RESET EOF TO WATCH FOR TRAILER | |
1374 | DCA EOF | |
1375 | TAD CODE /CK FOR HIGH COMMON | |
1376 | TAD M12 | |
1377 | SZA CLA | |
1378 | JMP I ER5P /NOT THERE | |
1379 | TAD COML | |
1380 | CIA | |
1381 | CLL CML /IF NO COMMON EXISTS, OR | |
1382 | TAD WORD /IF NEW COMMON .LE. OLD IT'S | |
1383 | SNL SZA CLA /OK, ELSE ERROR | |
1384 | JMP I ER3P | |
1385 | TAD COML | |
1386 | SNA CLA | |
1387 | TAD WORD /IF NO PREVIOUS COMMON AND IF | |
1388 | AND K7600 /THIS PROGRAM HAS COMMON ABOVE 177 | |
1389 | SNA /THEN SET COMMON LIMIT TO LIMIT OF THIS PROG | |
1390 | JMP GETSW | |
1391 | AND K7400 | |
1392 | TAD K377 /HIGH COMMON MUST BE AT A MULTIPLE OF 400 | |
1393 | DCA COML | |
1394 | TAD I HLA1P /IF WE HAVE LOADED | |
1395 | SZA CLA /ANY CODE INTO FIELD 1 | |
1396 | JMP I ER3P /IT'S AN ERROR | |
1397 | TAD COML /SET BANK1 HIGHEST LOADED ADDRESS | |
1398 | DCA I HLA1P | |
1399 | JMS I (SETRCN /SET UP HLA AND RCON AGAIN JUST IN CASE | |
1400 | GETSW, TAD BANK /BANK NUMBER | |
1401 | TAD TOPCOR /OK FOR NON-EX. MEM. | |
1402 | SMA CLA | |
1403 | JMP I ER2I /TOO BIG | |
1404 | / | |
1405 | /MAIN LOADING LOOP | |
1406 | / | |
1407 | LOOP, JMS RWORD | |
1408 | TAD BASE /LOCATE CORRECT FUNCTION | |
1409 | TAD CODE /IN TRANSFER TABLE | |
1410 | DCA CODE | |
1411 | CODE, 0 /TRANSFER TO APPROPRIATE ADDRESS | |
1412 | \f/READ 12-BIT COMPUTER WORD & 4-BIT RELOCATION CODE | |
1413 | /FROM 2 INPUT CHARACTERS | |
1414 | ||
1415 | RWORD, 0 | |
1416 | JMS I HSRPA /FIRST FRAME | |
1417 | DCA WORD | |
1418 | TAD WORD /EXTRACT RELOC. CODE | |
1419 | RTR | |
1420 | RTR | |
1421 | AND K17 | |
1422 | DCA CODE | |
1423 | TAD CODE /CK FOR LEADER | |
1424 | TAD M10 | |
1425 | SNA CLA | |
1426 | JMP I EOF /YES | |
1427 | TAD WORD /ADD TO CHECKSUM | |
1428 | TAD CSUM | |
1429 | DCA CSUM | |
1430 | JMS FORMWD | |
1431 | JMS I RCHARP | |
1432 | TAD WORD | |
1433 | DCA WORD | |
1434 | JMP I RWORD | |
1435 | ||
1436 | FORMWD, 0 | |
1437 | TAD WORD | |
1438 | RTR | |
1439 | RTR | |
1440 | RAR | |
1441 | AND K7400 /ISOLATE HI 4 BITS | |
1442 | DCA WORD /FROM 1ST CHAR | |
1443 | JMP I FORMWD | |
1444 | ||
1445 | /DATA | |
1446 | ||
1447 | EOF, 0 | |
1448 | LMTC, 0 | |
1449 | K17, 17 | |
1450 | K377, 377 | |
1451 | K777, 777 | |
1452 | K7400, 7400 | |
1453 | K7600, 7600 | |
1454 | M10, -10 | |
1455 | M12, -12 | |
1456 | BASE, JMP I TRTAB | |
1457 | BCRTA, BCRT-1 | |
1458 | HLAZA, HLAZ-1 | |
1459 | HSRPA, ICHAR | |
1460 | MORE1A, MORE1 | |
1461 | RCHARP, RCHAR | |
1462 | TOPCOR, 0 | |
1463 | HLA1P, HLA1 | |
1464 | ER2I, ER2 | |
1465 | \f/RELOCATION CODE TRANSFER TABLE | |
1466 | ||
1467 | TRTAB, RC0 /LOAD AS IS | |
1468 | RC1 /ADD RELOCATION CONSTANT | |
1469 | ER5 | |
1470 | RC3 /DEFINE SYMBOL | |
1471 | RC4 /ORIGIN | |
1472 | RC5 /CDF TO CURRENT BANK | |
1473 | RC6 /REPLACE LOCAL # WITH GLOBAL # | |
1474 | ER5 | |
1475 | RC10A, RC10 /LEADER-TRAILER | |
1476 | ER5 | |
1477 | ER3P, ER3 /HIGH COMMON | |
1478 | ER5P, ER5 | |
1479 | ER5 | |
1480 | ER5 | |
1481 | ER5 | |
1482 | RC17 /EXTERNAL SYMBOL SPECIFICATION | |
1483 | PAGE | |
1484 | \f/NEW ORIGIN | |
1485 | ||
1486 | RC4, TAD WORD /NEW ORIGIN | |
1487 | CLL | |
1488 | TAD RCON /+ RELOCATION CONSTANT | |
1489 | DCA CUR /= NEW LOADING ADDRESS | |
1490 | SZL | |
1491 | JMP I OVERFP /FIELD OVERFLOW | |
1492 | JMP I LOOPP1 | |
1493 | / | |
1494 | /CHANGE CDF TO CURRENT BANK | |
1495 | / | |
1496 | RC5, TAD BANK /MOVE BANK TO BITS 6-8 | |
1497 | CLL RTL | |
1498 | RAL | |
1499 | TAD WORD /PICK UP CDF | |
1500 | JMP RC1+2 | |
1501 | / | |
1502 | /REPLACE LOCAL EXTERNAL SYMBOL NUMBER WITH GLOBAL EXT. SYM. NO. | |
1503 | / | |
1504 | RC6, TAD WORD | |
1505 | AND K77 /EXTRACT LOCAL NUMBER | |
1506 | DCA B1 | |
1507 | TAD B1 /CK IF LOCAL # .LE. LOCAL SYM. COUNT | |
1508 | CIA | |
1509 | TAD I LMTCP1 | |
1510 | SPA CLA | |
1511 | JMP I ER5I /NO | |
1512 | TAD B1 /ADD LOCAL # TO BASE OF TABLE | |
1513 | TAD ORGTA | |
1514 | DCA B1 | |
1515 | TAD WORD /LOAD ARG COUNT | |
1516 | AND K7700 | |
1517 | KCDF, CDF 0 | |
1518 | TAD I B1 /+ GLOBAL # | |
1519 | CDF 10 | |
1520 | JMP RC1+2 /AT CURRENT LOADING ADDRESS | |
1521 | \f/ADD RELOCATION CONSTANT TO WORD | |
1522 | ||
1523 | RC1, TAD WORD | |
1524 | TAD RCON | |
1525 | DCA WORD | |
1526 | / | |
1527 | /LOAD WORD DIRECTLY AS IT IS | |
1528 | / | |
1529 | RC0, TAD HLA /CK FOR CURRENT ADDRESS TO LOAD | |
1530 | CIA CLL /.GE. HIGHEST ALREADY LOADED | |
1531 | TAD CUR | |
1532 | SNL CLA | |
1533 | JMP .+3 /NO | |
1534 | TAD CUR /YES, RESET HIGHEST | |
1535 | DCA HLA | |
1536 | CLL | |
1537 | TAD CUR /CK FOR ATTEMPT TO LOAD TOP PAGE | |
1538 | TAD K200 | |
1539 | SZL CLA | |
1540 | JMP I OVERFP /YES, ROUTINE IS TOO BIG | |
1541 | CLA CMA | |
1542 | TAD BANK | |
1543 | SZA CLA | |
1544 | JMP JUSTLD | |
1545 | CLL CML CLA RTR | |
1546 | TAD CUR | |
1547 | SZL SPA CLA | |
1548 | JMP GT2000 | |
1549 | TAD OVLYFG | |
1550 | K7700, SMA CLA | |
1551 | JMP OFFSET | |
1552 | JMS I (CVTREC | |
1553 | TAD (-11 | |
1554 | JMP PAGEX2 | |
1555 | GT2000, TAD CUR | |
1556 | CLL | |
1557 | TAD (-3600 | |
1558 | SZL CLA | |
1559 | JMP PAGEX1 | |
1560 | JMS I (WROVLY | |
1561 | CLA CMA | |
1562 | DCA OVLYFG | |
1563 | JMP JUSTLD | |
1564 | PAGEX1, TAD K200 | |
1565 | JMS I (CVTREC | |
1566 | PAGEX2, TAD (MTEMP+11 | |
1567 | JMS I (WRPGBF | |
1568 | CLA CLL CML RTR | |
1569 | TAD CUR | |
1570 | SZL SPA CLA | |
1571 | TAD K200 | |
1572 | TAD CUR | |
1573 | AND (377 | |
1574 | TAD (1400 | |
1575 | JMP JUSTLD+1 | |
1576 | OFFSET, CLA IAC | |
1577 | DCA OVLYFG | |
1578 | TAD (1600 | |
1579 | JUSTLD, TAD CUR | |
1580 | DCA CURX | |
1581 | TAD BANK | |
1582 | CLL RTL | |
1583 | RAL | |
1584 | TAD KCDF | |
1585 | DCA .+2 | |
1586 | TAD WORD | |
1587 | HLT | |
1588 | DCA I CURX | |
1589 | CDF 10 | |
1590 | ISZ CUR | |
1591 | JMP I LOOPP1 | |
1592 | CURX, 0 | |
1593 | / | |
1594 | /DATA | |
1595 | / | |
1596 | K77, 77 | |
1597 | K200, 200 | |
1598 | ER5I, ER5 | |
1599 | LMTCP1, LMTC | |
1600 | LOOPP1, LOOP | |
1601 | ORGTA, ORGT | |
1602 | OVERFP, OVERFL | |
1603 | HLAZ, 0 /HLA GROUP MUST REMAIN IN GIVEN ORDER | |
1604 | HLA1, 0 | |
1605 | HLA2, 0 | |
1606 | HLA3, 0 | |
1607 | HLA4, 0 | |
1608 | HLA5, 0 | |
1609 | HLA6, 0 | |
1610 | HLA7, 0 | |
1611 | B1, | |
1612 | ||
1613 | HLATST, 0 | |
1614 | TAD HLAZ | |
1615 | TAD HLAIO | |
1616 | HLASZA, SZA CLA /SET TO CLA BY /R AND RESTART | |
1617 | JMP I (UIOERR | |
1618 | JMP I HLATST | |
1619 | HLAIO, -777 | |
1620 | PAGE | |
1621 | \f/SYMBOL DEFINITION | |
1622 | ||
1623 | RC3, JMS I GTSYMP | |
1624 | TAD TVM1 /ADJUSTED BASE OF TRANSFER VECTOR TABLE | |
1625 | TAD SYMNUM /+ NUM. OF SYMBOL IN MST | |
1626 | DCA C1 | |
1627 | TAD RCON /LOADING ADDRESS OF THE SYMBOL | |
1628 | TAD WORD | |
1629 | CDF 00 | |
1630 | DCA I C1 /TO THE TRANS. VEC. TABLE | |
1631 | TAD C1 /GET POINTER INTO TRANSFER VECTOR TABLE | |
1632 | TAD M100A /FORM CORRESPONDING POINTER INTO BANK TABLE | |
1633 | DCA C1 /=PTR. TO BANK TABLE STORAGE | |
1634 | TAD BANK /GET BANK IN BITS 6-8 | |
1635 | CLL RTL | |
1636 | RAL | |
1637 | DCA I C1 /STORE IN BANK TABLE | |
1638 | CDF 10 | |
1639 | RC3A, TAD NSUB /CHECK FOR TOO MANY SYMBOLS | |
1640 | TAD M100A | |
1641 | SPA SNA CLA | |
1642 | JMP I LOOPP2 /NO | |
1643 | JMP ER1 | |
1644 | / | |
1645 | /TRANSFER VECTOR | |
1646 | / | |
1647 | RC17, TAD WORD /COUNTER OF SYMBOLS TO COME | |
1648 | CIA | |
1649 | DCA C2 | |
1650 | RC17A, JMS I GTSYMP | |
1651 | ISZ I LMTCP2 /INC. LOCAL SYM. CTR. | |
1652 | TAD ORGTA2 /GET PTR TO STORAGE IN ORIG. TABLE | |
1653 | TAD I LMTCP2 | |
1654 | DCA C1 | |
1655 | CMA /SYM. # -1 TO ORIG. TABLE | |
1656 | TAD SYMNUM | |
1657 | CDF 0 | |
1658 | DCA I C1 | |
1659 | CDF 10 | |
1660 | ISZ C2 /CK CTR. | |
1661 | JMP RC17A /NOT DONE | |
1662 | JMP RC3A | |
1663 | \f/ERRORS | |
1664 | ||
1665 | SIOERR, | |
1666 | H7600, 7600 | |
1667 | DCA ERBACK | |
1668 | IAC | |
1669 | HNDERR, IAC | |
1670 | ERSTAD, IAC | |
1671 | INERR, IAC | |
1672 | OUERR, IAC | |
1673 | ER5, IAC /ILLEGAL INPUT FORMAT | |
1674 | ER4, IAC /CHECKSUM ERROR | |
1675 | ER3, IAC /HIGHEST COMMON NOT FIRST | |
1676 | ER2, IAC /PROGRAM TOO LARGE | |
1677 | ER1, IAC /SYMBOL TABLE OVERFLOW | |
1678 | UIOERR, DCA C3 | |
1679 | JMS CRLF | |
1680 | TAD K0522 /"ER" | |
1681 | JMS TTWO | |
1682 | TAD K2217 /"RO" | |
1683 | JMS TTWO | |
1684 | TAD K2240 /"R " | |
1685 | JMS TTWO | |
1686 | TAD C3 /# | |
1687 | JMS TOCT | |
1688 | JMS I (WRPGBF | |
1689 | ERBACK, JMP I (CDCALL | |
1690 | CDF CIF 0 | |
1691 | JMP I H7600 /RETURN TO MONITOR | |
1692 | / | |
1693 | /TYPE A CARRIAGE RETURN & LINE FEED | |
1694 | / | |
1695 | CRLF, 0 | |
1696 | TAD K215 | |
1697 | JMS I TYPE | |
1698 | TAD K212 | |
1699 | JMS I TYPE | |
1700 | JMP I CRLF | |
1701 | / | |
1702 | /UNPACK & TYPE 2 6-BIT CHARACTERS | |
1703 | / | |
1704 | TTWO, 0 | |
1705 | DCA C1 | |
1706 | CMA /SET FLAG FOR 1ST CHARACTER | |
1707 | DCA C2 | |
1708 | TAD C1 /MOVE LEFT HALF DOWN | |
1709 | RTR | |
1710 | RTR | |
1711 | RTR | |
1712 | SKP | |
1713 | TTWO1, TAD C1 /GET RIGHT HALF | |
1714 | AND C77 | |
1715 | TAD M40 /200 OR 300 GROUP? | |
1716 | SPA | |
1717 | TAD K100 /300 + 6BIT | |
1718 | TAD K2240 /200 + 6BIT | |
1719 | JMS I TYPE | |
1720 | ISZ C2 /2ND CHARACTER DONE? | |
1721 | JMP I TTWO | |
1722 | JMP TTWO1 /NO | |
1723 | / | |
1724 | /TYPE OCTAL CONTENTS OF AC | |
1725 | / | |
1726 | TOCT, 0 | |
1727 | DCA C1 | |
1728 | TAD M4B | |
1729 | DCA C2 | |
1730 | TOCT1, TAD C1 /MOVE NEXT DIGIT INTO BITS 9-11 | |
1731 | RTL | |
1732 | RAL | |
1733 | DCA C1 | |
1734 | TAD C1 /GET DIGIT | |
1735 | RAL | |
1736 | AND KK7 | |
1737 | TAD C260 /CONVERT TO ASCII | |
1738 | JMS I TYPE | |
1739 | ISZ C2 | |
1740 | JMP TOCT1 /MORE TO GO | |
1741 | JMP I TOCT | |
1742 | / | |
1743 | /DATA | |
1744 | / | |
1745 | C1, 0 | |
1746 | C2, 0 | |
1747 | C3, | |
1748 | SYMNUM, 0 | |
1749 | KK7, 7 | |
1750 | C77, 77 | |
1751 | K100, 100 | |
1752 | K212, 212 | |
1753 | K215, 215 | |
1754 | C260, 260 | |
1755 | K0522, 0522 | |
1756 | K2217, 2217 | |
1757 | K2240, 2240 | |
1758 | M4B, -4 | |
1759 | M40, -40 | |
1760 | M100A, -100 | |
1761 | GTSYMP, GETSYM | |
1762 | LMTCP2, LMTC | |
1763 | LOOPP2, LOOP | |
1764 | ORGTA2, ORGT | |
1765 | TVM1, TVEC-1 | |
1766 | PAGE | |
1767 | \f/STORE OR LOOK UP SYMBOL IN SYMBOL TABLE | |
1768 | ||
1769 | DEFN, 0 | |
1770 | ||
1771 | /READ A SYMBOL FROM INPUT ASCII - 6 FRAMES | |
1772 | ||
1773 | CLA CLL CMA RTL | |
1774 | DCA D1 | |
1775 | TAD S1A /POINTER TO 3 WORD BUFFER | |
1776 | DCA X3 | |
1777 | RSYM1, JMS RCHAR | |
1778 | AND K0077 /EXTRACT 6-BIT | |
1779 | CLL RTL | |
1780 | RTL | |
1781 | RTL | |
1782 | DCA D3 /SAVE LEFT HALF | |
1783 | JMS RCHAR | |
1784 | AND K0077 /GET RIGHT HALF | |
1785 | TAD D3 | |
1786 | DCA I X3 | |
1787 | ISZ D1 | |
1788 | JMP RSYM1 /NOT DONE | |
1789 | JMP I DEFN | |
1790 | / | |
1791 | /SEARCH SYMBOL TABLE FOR CURRENT SYMBOL (IN S1-S3) | |
1792 | / | |
1793 | SEARCH, 0 | |
1794 | DCA I SYMNMP /CLR SYMBOL COUNTER | |
1795 | TAD MSTA /SET SYMBOL TABLE PTR | |
1796 | DCA D4 | |
1797 | TAD NSUB /SET CTR FOR NUMBER OF SYMBOLS | |
1798 | CMA /+1 (IN CASE NSUB=0) | |
1799 | DCA D5 | |
1800 | JMP SRCH2 | |
1801 | SRCH1, ISZ I SYMNMP /KEEP COUNT | |
1802 | TAD D4 /TEST TABLE ENTRY | |
1803 | DCA X4 /SYM. TAB. PTR | |
1804 | CLA CLL CMA RTL | |
1805 | DCA D2 /COUNTER | |
1806 | TAD S1A | |
1807 | DCA X3 /PTR TO S1/S3 | |
1808 | COMP1, TAD I X4 /COMPARE WORDS | |
1809 | CIA | |
1810 | TAD I X3 | |
1811 | SZA CLA | |
1812 | JMP NOMACH /NOT ALIKE | |
1813 | ISZ D2 | |
1814 | JMP COMP1 /TRY NEXT WORD OF TRIPLET | |
1815 | ISZ SEARCH | |
1816 | JMP I SEARCH | |
1817 | NOMACH, CLA CLL CMA RTL | |
1818 | TAD D4 | |
1819 | DCA D4 | |
1820 | SRCH2, ISZ D5 | |
1821 | JMP SRCH1 /NOT DONE | |
1822 | JMP I SEARCH | |
1823 | / | |
1824 | /ENTER A SYMBOL IN THE SYMBOL TABLE | |
1825 | / | |
1826 | INSERT, 0 | |
1827 | TAD NSUB /(NUMBER OF SYMBOLS)*3 | |
1828 | CLL RAL | |
1829 | TAD NSUB | |
1830 | CIA /SUBTRACT FROM BASE OF TABLE | |
1831 | TAD MSTA | |
1832 | DCA X3 /FOR POINTER | |
1833 | TAD S1 /1ST WORD | |
1834 | DCA I X3 | |
1835 | TAD S2 /2ND | |
1836 | DCA I X3 | |
1837 | TAD S3 /3RD | |
1838 | DCA I X3 | |
1839 | ISZ NSUB /COMPUTE SYM. TAB. NUMBER | |
1840 | TAD NSUB | |
1841 | DCA I SYMNMP | |
1842 | JMP I INSERT | |
1843 | / | |
1844 | /CORE OVERFLOW | |
1845 | / | |
1846 | OVERFL, TAD BCRTA3 | |
1847 | DCA D1 | |
1848 | TAD TVECA3 | |
1849 | DCA D2 | |
1850 | TAD M100 | |
1851 | DCA D3 | |
1852 | CDF 00 | |
1853 | OVERF2, TAD I D1 /CK FOR CDF IN BCRT | |
1854 | SPA CLA | |
1855 | JMP .+3 /YES | |
1856 | DCA I D1 /NO, CLEAR IT | |
1857 | DCA I D2 /CLEAR TV WORD | |
1858 | ISZ D1 | |
1859 | ISZ D2 | |
1860 | ISZ D3 | |
1861 | JMP OVERF2 /MORE TO GO | |
1862 | CDF 10 | |
1863 | JMP I ER2P | |
1864 | ||
1865 | GETSYM, 0 /GET SYMBOL AND SEARCH TABLE | |
1866 | JMS DEFN | |
1867 | JMS SEARCH | |
1868 | JMS INSERT | |
1869 | JMP I GETSYM | |
1870 | \f/READ 1 FRAME & ADD TO CHECKSUM | |
1871 | ||
1872 | RCHAR, 0 | |
1873 | JMS I HSRPB | |
1874 | DCA D4 | |
1875 | TAD D4 | |
1876 | TAD CSUM | |
1877 | DCA CSUM | |
1878 | TAD D4 | |
1879 | JMP I RCHAR | |
1880 | ||
1881 | SETRCN, 0 /SUBR TO SET HIGHEST-LOADED ADDRESS (HLA) | |
1882 | TAD I HLAPTR /AND RELOCATION CONSTANT (RCON) | |
1883 | DCA HLA | |
1884 | TAD HLA | |
1885 | AND (7600 | |
1886 | DCA RCON | |
1887 | JMP I SETRCN | |
1888 | ||
1889 | MAIN, 1501;1116;4040 /"MAIN" | |
1890 | ||
1891 | / | |
1892 | /DATA | |
1893 | / | |
1894 | D1, 0 | |
1895 | D2, 0 | |
1896 | D3, 0 | |
1897 | D4, 0 | |
1898 | D5, 0 | |
1899 | S1, 0 | |
1900 | S2, 0 | |
1901 | S3, 0 | |
1902 | K0077, 77 | |
1903 | M100, -100 | |
1904 | BCRTA3, BCRT | |
1905 | ER2P, XER2 | |
1906 | HSRPB, ICHAR | |
1907 | MSTA, MST-3 | |
1908 | S1A, S1-1 | |
1909 | SYMNMP, SYMNUM | |
1910 | TVECA3, TVEC | |
1911 | PAGE | |
1912 | \f/TRAILER CODE EXIT | |
1913 | ||
1914 | RC10, JMS I (FORMWD | |
1915 | JMS I HSRP /GET LOW ORDER PART | |
1916 | TAD WORD | |
1917 | CIA | |
1918 | TAD CSUM /COMPARE WITH ACCUMULATED SUM | |
1919 | SZA CLA | |
1920 | JMP I ER4P /NOT EQUAL | |
1921 | TAD BCRTA4 | |
1922 | DCA T1 | |
1923 | TAD TVECA | |
1924 | DCA X2 | |
1925 | TAD M100D | |
1926 | DCA T3 | |
1927 | K6201A, CDF 00 | |
1928 | RC10Z, TAD I X2 /GET TV ENTRY | |
1929 | SNA CLA | |
1930 | JMP .+5 /NOT DEFINED; IGNORE IT | |
1931 | TAD I T1 /GET BCRT WORD | |
1932 | AND K70 /EXTRACT BANK | |
1933 | TAD K6201A /COMBINE CDF | |
1934 | DCA I T1 | |
1935 | ISZ T1 | |
1936 | ISZ T3 | |
1937 | JMP RC10Z /NOT DONE YET | |
1938 | CDF 10 | |
1939 | TAD HLA /STORE HIGHEST LOADED ADDRESS | |
1940 | DCA I HLAPTR /IN PROPER LOC. (HLA0-7) | |
1941 | JMP I (LOADOK | |
1942 | \f/LOADER MAP PRINT ROUTINE CONTINUED | |
1943 | ||
1944 | MAPX, SNL CLA /IF LINK=1 ONLY PRINT PAGE COUNTS, | |
1945 | TAD NSUB /OTHERWISE PRINT SYMBOLS | |
1946 | CMA | |
1947 | DCA T1 /CTR OF ROUTINES | |
1948 | TAD MSTA4 /SYMB. TAB. PTR. | |
1949 | DCA X1 | |
1950 | TAD TVECA /TV PTR | |
1951 | DCA X2 | |
1952 | TAD BCRTA4 /BCRT PTR | |
1953 | DCA T4 | |
1954 | TAD (2640 /PRINT V# | |
1955 | JMS I TTWOP | |
1956 | TAD (VERSION+PATCH | |
1957 | JMS I TTWOP | |
1958 | JMS I CRLFP | |
1959 | JMP PRINT1 | |
1960 | PRINT, TAD TM1 | |
1961 | RTR CLL | |
1962 | CDF 0 | |
1963 | TAD I X2 | |
1964 | CDF 10 | |
1965 | DCA TM2 | |
1966 | TAD TM2 | |
1967 | SNL SZA CLA | |
1968 | JMP PIGNOR | |
1969 | TAD I X1 | |
1970 | JMS I TTWOP | |
1971 | TAD I X1 | |
1972 | JMS I TTWOP | |
1973 | TAD I X1 | |
1974 | JMS I TTWOP | |
1975 | TAD K4040 /2 SPACES | |
1976 | JMS I TTWOP | |
1977 | CDF 00 | |
1978 | TAD I T4 /PRINT BANK NUMBER | |
1979 | CDF 10 | |
1980 | RTR | |
1981 | RAR | |
1982 | AND K7B | |
1983 | TAD K260 | |
1984 | JMS I TYPE | |
1985 | TAD TM2 /PRINT SYMBOL VALUE | |
1986 | JMS I TOCTP | |
1987 | TAD TM2 /IF ADDRESS=0,IT IS UNDEFINED | |
1988 | SZA CLA | |
1989 | JMP .+3 /ITS OK | |
1990 | TAD K4025 /TYPE SPACE,U | |
1991 | JMS I TTWOP | |
1992 | JMS I CRLFP | |
1993 | TAD M03 | |
1994 | PIGNOR, TAD M03 | |
1995 | TAD X1 | |
1996 | DCA X1 | |
1997 | ISZ T4 | |
1998 | PRINT1, ISZ T1 | |
1999 | JMP PRINT /JUMP IF MORE SYMBOLS, ELSE FALL INTO NEXT PG | |
2000 | \fPAGES, TAD FCTR /SET CTR FOR CORRECT # OF BANKS | |
2001 | DCA T1 | |
2002 | TAD (HLAZ-1 /INIT. PTR. TO HLA LIST | |
2003 | DCA X1 | |
2004 | TAD I X1 /GET HLA OF NEXT BANK | |
2005 | CMA RTL /DIVIDE BY 200 AND COMPLEMENT | |
2006 | RTL | |
2007 | RTL | |
2008 | AND K37 /=NUMBER OF PAGES LEFT + 1 | |
2009 | SZA | |
2010 | TAD (-1 /REDUCE IF NON-ZERO | |
2011 | JMS I TOCTP | |
2012 | JMS I CRLFP | |
2013 | ISZ T1 | |
2014 | JMP PAGES+4 /NOT DONE WITH ALL BANKS | |
2015 | JMP I (OCLOS | |
2016 | ||
2017 | / | |
2018 | /DATA | |
2019 | / | |
2020 | FCTR, 0 /# OF HIGHEST MEM. FIELD | |
2021 | K37, 37 | |
2022 | T1, 0 | |
2023 | T3, 0 | |
2024 | T4, 0 | |
2025 | K7B, 7 | |
2026 | K70, 70 | |
2027 | K260, 260 | |
2028 | K4025, 4025 | |
2029 | K4040, 4040 | |
2030 | M03, -3 | |
2031 | BCRTA4, BCRT | |
2032 | CRLFP, CRLF | |
2033 | ER4P, ER4 | |
2034 | HSRP, ICHAR | |
2035 | MSTA4, MST-3 | |
2036 | TOCTP, TOCT | |
2037 | TTWOP, TTWO | |
2038 | TVECA, TVEC-1 | |
2039 | M100D, 7700 | |
2040 | PAGE | |
2041 | \f/WROVLY IS USED TO STORE THE FIELD COUNT FOR THE PROPGT | |
2042 | /ROUTINE- PROPGT IS CALLED THE FIRST TIME THAT IOTEST IS | |
2043 | /CALLED-SEE LOC.325 IN FIELD ZERO(APPROX.) | |
2044 | ||
2045 | BC1000, 1000 | |
2046 | WROVLY, 0 | |
2047 | TAD OVLYFG | |
2048 | SPA SNA CLA | |
2049 | JMP I WROVLY | |
2050 | CIF 0 | |
2051 | JMS I (SHNDLR | |
2052 | 0110 | |
2053 | 1600 | |
2054 | MTEMP | |
2055 | JMP I (SIOERR | |
2056 | CIF 0 | |
2057 | JMS I (SHNDLR | |
2058 | 5010 | |
2059 | 1600 | |
2060 | MTEMP | |
2061 | JMP I (SIOERR | |
2062 | DCA OVLYFG | |
2063 | JMP I WROVLY | |
2064 | ||
2065 | WRPGBF, 0 | |
2066 | DCA PRECNO | |
2067 | TAD WRBFSW | |
2068 | SNA | |
2069 | JMP PREAD | |
2070 | CIA | |
2071 | TAD PRECNO | |
2072 | SNA CLA | |
2073 | JMP I WRPGBF | |
2074 | CIF 0 | |
2075 | JMS I (SHNDLR | |
2076 | 4210 | |
2077 | 1400 | |
2078 | WRBFSW, 0 | |
2079 | JMP I (SIOERR | |
2080 | PREAD, DCA OLDT9 | |
2081 | TAD PRECNO | |
2082 | SNA CLA | |
2083 | JMP SETBF | |
2084 | CIF 0 | |
2085 | JMS I (SHNDLR | |
2086 | 0210 | |
2087 | 1400 | |
2088 | PRECNO, 0 | |
2089 | JMP I (SIOERR | |
2090 | SETBF, TAD PRECNO | |
2091 | DCA WRBFSW | |
2092 | JMP I WRPGBF | |
2093 | \f/LOADER CLEANUP CODE - PREPARES TO RETURN TO OS/8 | |
2094 | ||
2095 | LDRXIT, CDF 10 | |
2096 | TAD I (HLA1 | |
2097 | TAD BC200 | |
2098 | L7700, SMA CLA /DID WE LOAD OVER THE LOADER? | |
2099 | TAD (FIVE /NO | |
2100 | DCA WROVLY /WROVLY=0 OR 5 | |
2101 | CIF 0 | |
2102 | JMS I (SHNDLR | |
2103 | 0201 | |
2104 | 400 | |
2105 | MTEMP+21 /READ BACK THE RUN-TIME ROUTINES | |
2106 | JMP I (SIOERR /BADDIE | |
2107 | TAD K1600 | |
2108 | CDF 0 | |
2109 | DCA I ST1600 | |
2110 | TAD I P4 | |
2111 | DCA I P5 | |
2112 | ISZ P4 | |
2113 | ISZ P5 | |
2114 | ISZ P6 | |
2115 | JMP .-5 /ALSO MOVE 16-32 INTO LOC 100 | |
2116 | CDF 10 | |
2117 | JMS I BC200 | |
2118 | 13 /RESET EVERYTHING | |
2119 | TAD I (MPARAM | |
2120 | AND (40 /GET "/G" SWITCH | |
2121 | SNA CLA | |
2122 | JMP CALMON /GO SWITCH NOT ON | |
2123 | JMS I BC200 | |
2124 | 11 /KICK MONITOR OUT | |
2125 | CDF CIF 0 | |
2126 | TAD (MSTCDF | |
2127 | DCA I (FIVE+1 /GO TO PROGRAM START ADR INSTEAD OF 7600 | |
2128 | ISZ I (ONE /OPTOMIZE READ A LITTLE ON DECTAPE | |
2129 | JMP I WROVLY | |
2130 | ||
2131 | CALMON, CLA CMA | |
2132 | DCA I L7700 /INDICATE I/O MONITOR IS IN CORE | |
2133 | CDF CIF 0 | |
2134 | JMP I WROVLY /GET OUT | |
2135 | ||
2136 | ST1600, 177 /THIS IS SET TO "FINBUF" OR "FOUBUF" BY /I AND /O | |
2137 | P4, 16 | |
2138 | P5, 100 | |
2139 | P6, -15 | |
2140 | \f/ROUTINE TO TEST FOR /I AND /O SWITCHES | |
2141 | ||
2142 | IOTEST, 0 | |
2143 | TAD I (MPARAM | |
2144 | AND (10 | |
2145 | SNA CLA //I? | |
2146 | JMP .+4 | |
2147 | JMS I (HLATST | |
2148 | CDF CIF 0 | |
2149 | JMS I (INPENB | |
2150 | TAD I (MPARAM+1 | |
2151 | BC200, AND BC1000 | |
2152 | SNA CLA //O? | |
2153 | JMP .+4 | |
2154 | JMS I (HLATST | |
2155 | CDF CIF 0 | |
2156 | JMS I (OUPENB | |
2157 | ISZ DOPROP /SHOULD WE PROPAGATE RESIDENT(AND WRITE OUT | |
2158 | JMP .+4 /THE RUN-TIME ROUTINES?)--NO | |
2159 | TAD WROVLY /YES-FIELD COUNT IS IN WROVLY | |
2160 | CDF CIF 0 | |
2161 | JMS I (PROPGT /DO IT | |
2162 | JMP I IOTEST | |
2163 | K1600, 1600 /RESET TO 2000 IF TWO PG.DEV.HNDLRS AT RUN TIME | |
2164 | DOPROP, 7777 /ONCE-ONLY FLAG FOR PROPAGATING FIELD ZERO | |
2165 | /RESIDENT AND WRITING OUT RUNTIME ROUTINES | |
2166 | /NOT RESET AFTER /R!!!! | |
2167 | /SET TO -2 IF CALLED BY ".R LOADER" | |
2168 | /BECAUSE OF USELESS INIT CALL TO IOTEST | |
2169 | PAGE | |
2170 | $ | |
2171 | \f |