Commit | Line | Data |
---|---|---|
81e70d48 PH |
1 | /SAVECB.PA DEMONSTRATION PROGRAM TO INCREASE THE NUMBER OF SAVE ARGUMENTS |
2 | / | |
3 | / | |
4 | / | |
5 | / | |
6 | / | |
7 | / | |
8 | / | |
9 | / | |
10 | / | |
11 | /COPYRIGHT (C) 1977 BY DIGITAL EQUIPMENT CORPORATION | |
12 | / | |
13 | / | |
14 | / | |
15 | / | |
16 | / | |
17 | / | |
18 | / | |
19 | / | |
20 | / | |
21 | / | |
22 | /THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT NOTICE | |
23 | /AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT | |
24 | /CORPORATION. DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY | |
25 | /FOR ANY ERRORS THAT MAY APPEAR IN THIS DOCUMENT. | |
26 | / | |
27 | /THE SOFTWARE DESCRIBED IN THIS DOCUMENT IS FURNISHED TO THE PURCHASER | |
28 | /UNDER A LICENSE FOR USE ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED | |
29 | /(WITH INCLUSION OF DIGITAL'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH | |
30 | /SYSTEM, EXCEPT AS MAY OTHERWISE BE PROVIDED IN WRITING BY DIGITAL. | |
31 | / | |
32 | /DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY FOR THE USE | |
33 | /OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY | |
34 | /DIGITAL. | |
35 | / | |
36 | / | |
37 | / | |
38 | / | |
39 | / | |
40 | / | |
41 | / | |
42 | / | |
43 | / | |
44 | / | |
45 | \f /SAVCB.PA INCREASES THE NUMBER OF SAVE ARGUMENTS JULY 1978 | |
46 | / MEMORY LOCATIONS UTILIZED | |
47 | / 0000-1177 /PROGRAM CODE | |
48 | / 1200-1377 /TTY INPUT BUFFER | |
49 | / 1400-1577 /ORIGINAL CCB BUFFER | |
50 | / 1600-1710 /ADJUSTED CCB BUFFER | |
51 | / 1710-1777 /PROGRAM CODE | |
52 | ||
53 | ||
54 | /PAGE ZERO | |
55 | *0 | |
56 | REDERR, JMS I [CRLF /ILLEGAL INPUT ERROR | |
57 | JMS I [PRMSG | |
58 | TEXT /INPUT?/ | |
59 | JMP I ERR | |
60 | *10 | |
61 | LXR, 1177 /AUTO INDEX FOR INPUT STORAGE | |
62 | CXR, 0 /AUTO INDEX | |
63 | XR, 1377 | |
64 | NXR, 1577 | |
65 | TX, 0 | |
66 | *20 | |
67 | SHNDLR, 7607 | |
68 | ERR, 7605 | |
69 | TEMP, 0 /INPUT NUMBER STORAGE | |
70 | TMP1, 0 /INPUT NUMBER STORAGE | |
71 | DIGFLG, 0 /NUMBER PRESENT FLAG | |
72 | TEMP1, 0 /INPUT FIELD STORAGE | |
73 | TEMP2, 0 /INPUT ADDRESS STORAGE | |
74 | CMND, 0 | |
75 | CHARID, 0 / | |
76 | DLID, 0 /DELIMITER STORAGE | |
77 | FIRST1, 0 /STORAGE FOR SEGMENT FIELD INPUT | |
78 | FIRST2, 0 /STORAGE FOR SEGMENT ADDRESS INPUT | |
79 | CNT, 0 /SEGMENT COUNTER | |
80 | FLD, 0 /USED IN CCB FIELD PRINTING | |
81 | TMP, 0 /TEMPORARY STORAGE-TEXT PRINTING | |
82 | TCB, 0 /PRMSG CALL I.D. | |
83 | ORG, 0 /ORIGIN STORAGE | |
84 | COUNT, -110 | |
85 | BUMP, -2 /USED AS TEST IN LOAD LOOP | |
86 | RBFLG, 0 | |
87 | SEGCNT, -4 | |
88 | \f | |
89 | *200 | |
90 | START, CDF 0 | |
91 | CIF 10 /CALL COMMAND DECODER | |
92 | JMS I [200 | |
93 | 5 | |
94 | 2326 /SV. EXTENSION---ASSUMED INPUT | |
95 | CIF 0 | |
96 | CDF 10 | |
97 | TAD I [7620 /STARTING BLOCK OF FILE | |
98 | CDF 0 | |
99 | DCA STFLE /SET UP LOADING OF CCB BLOCK | |
100 | LOAD, JMS I [7607 /LOAD CCB | |
101 | 0101 | |
102 | LOC, 1400 /INTO 1400 | |
103 | STFLE, 0 /STARTING BLOCK OF FILE | |
104 | JMP REDERR / | |
105 | TAD I XR /MOVE CCB UP TO 1600 | |
106 | DCA I NXR | |
107 | ISZ COUNT /ALL DONE? | |
108 | JMP .-3 | |
109 | JMS I (VERMSG /PRINT CCB WRITING INFO | |
110 | CONT, JMS CRLF /INITIALIZE LINE | |
111 | JMS IDCHAR /PRINT INPUT SIGNAL CHARACTER | |
112 | REATTY, KSF /WAITING FOR FLAG TO DISAPPEAR | |
113 | JMP .-1 | |
114 | JMS I [CTCTST /...CTRL/C? | |
115 | TAD [203 /NO-RE-INSTATE CHARACTER | |
116 | JMS I [RBLFT /TEST FOR LINE FEED,RUBOUT | |
117 | TAD [225 | |
118 | DCA TEMP /STORE CHARACTER | |
119 | KCC /CLEAR KEYBOARD,AC | |
120 | TAD TEMP | |
121 | JMS I [TYPIT | |
122 | TAD TEMP | |
123 | TAD [-215 /IS IT THE END OF THE LINE? | |
124 | SNA | |
125 | JMP I [SAVE1 | |
126 | TAD [-63 /IS IT THE END OF INPUT(@)? | |
127 | SNA | |
128 | JMP I [SAVE | |
129 | CLL CLA | |
130 | TAD TEMP | |
131 | DCA I LXR /STORE AWAY CHARACTER | |
132 | TAD LXR | |
133 | TAD [-1110 | |
134 | SNA CLA /TEST FOR LINE OVERFLOW | |
135 | JMP I [BARG | |
136 | JMP REATTY | |
137 | ||
138 | ||
139 | CRLF, 0 /CARRAIGE RETURN--LINE FEED ROUTINE | |
140 | CLL CLA | |
141 | TAD [215 | |
142 | JMS I [TYPIT | |
143 | TAD [212 | |
144 | JMS I [TYPIT | |
145 | JMP I CRLF | |
146 | IDCHAR, 0 /PRINT A #, IT SIGNALS INPUT TIME | |
147 | CLA | |
148 | DCA RBFLG /INITIALIZE RUBOUT FLAG | |
149 | DCA TEMP1 /INITIALIZE INPUT STORAGE WORD | |
150 | TAD [243 | |
151 | JMS I [TYPIT | |
152 | JMP I IDCHAR | |
153 | TYCCB, JMS CRLF | |
154 | TAD [211 | |
155 | JMS I [TYPIT | |
156 | TAD [1377 /ROUTINE TO TYPE OUT CCB INFO | |
157 | DCA CXR | |
158 | TAD I CXR /ADJUST SEGMENT INFO | |
159 | CLL RAL | |
160 | STL RAR | |
161 | DCA CNT /NUMBER OF SEGS | |
162 | JMS I [PRMSG | |
163 | TEXT /START=/ | |
164 | RTRN1, TAD I CXR /GET CIF CDF OF STARTING FIELD | |
165 | AND [174 | |
166 | DCA FLD /STORE IT | |
167 | TAD FLD | |
168 | AND [104 /ISOLATE BANK BITS | |
169 | CLL RTR /SWITCH THEM AROUND | |
170 | RAR | |
171 | SZL | |
172 | TAD [4 | |
173 | CLL RTR | |
174 | TAD [260 | |
175 | JMS I [TYPIT | |
176 | TAD FLD /TIME TO TYPE FIELDS | |
177 | AND [70 | |
178 | CLL RTR | |
179 | RAR | |
180 | TAD [260 | |
181 | JMS I [TYPIT | |
182 | TYORG, TAD I CXR | |
183 | JMS I [PWORD /PROCESS ORIGIN WORD | |
184 | TAD [211 /PRINT ATAB TO SEPARATE HEADINGS | |
185 | JMS I [TYPIT | |
186 | TYJSW, /SET TYCCB CALL FLAG | |
187 | JMS I [PRMSG /PRINT JSW HEADING | |
188 | TEXT /JSW=/ | |
189 | RTRN2, TAD I CXR | |
190 | JMS I [PWORD /PRINT JSW | |
191 | JMS CRLF | |
192 | JMS CRLF | |
193 | TYSEGS, | |
194 | JMS I [PRMSG | |
195 | TEXT /CORE SEGMENTS:/ | |
196 | JMS CRLF | |
197 | JMS CRLF | |
198 | JMP I [SEGSM2 /PROCESS SEGMENTS | |
199 | \f *400 | |
200 | PRINT, JMS PRWD | |
201 | ISZ PRMSG /GET MORE TEXT | |
202 | SKP | |
203 | PRMSG, 0 /ROUTINE TO PRINT TEXT | |
204 | CLA | |
205 | TAD I PRMSG | |
206 | SZA | |
207 | JMP PRINT | |
208 | TSF | |
209 | JMP .-1 | |
210 | ISZ PRMSG /TYCCB RETURN | |
211 | JMP I PRMSG | |
212 | PRWD, 0 /ROUTINE TO ISOLATE AND PRINT TEXT CHARS | |
213 | DCA TMP /SAVE PACKED SIX BIT CHARS | |
214 | TAD TMP | |
215 | BSW /POSITION FIRST CHAR FOR PRINTING | |
216 | JMS PCHAR /PRINT IT | |
217 | TAD TMP /ISOLATE SECOND CHARACTER | |
218 | JMS PCHAR /PRINT IT | |
219 | JMP I PRWD | |
220 | PCHAR, 0 /ROUTINE FOR CONVERTING TEXT CHARS TO ASCII | |
221 | AND [77 /ISOLATE SIX BITS | |
222 | SNA | |
223 | JMP I PCHAR | |
224 | TAD [240 /CONVERSION TO ASCII | |
225 | AND [77 | |
226 | TAD [240 | |
227 | JMS TYPIT /PRINT CHARACTER | |
228 | JMP I PCHAR | |
229 | TYPIT, 0 /ROUTINE TO PRINT CHARACTERS | |
230 | TLS | |
231 | TSF | |
232 | JMP .-1 | |
233 | CLA | |
234 | JMS CTCTST /TEST FOR CONTROL/C | |
235 | CLL CLA | |
236 | JMP I TYPIT | |
237 | CTCTST, 0 /SEE IF USER WANTS OUT, CTRL/C... | |
238 | TAD [200 | |
239 | KSF | |
240 | STA | |
241 | KRS | |
242 | TAD [-203 /IS IT A CTRL/C? | |
243 | SNA | |
244 | CTLC, JMP I ERR / CTRL/C MEANS GETOUT... | |
245 | JMP I CTCTST /RETURN | |
246 | RBLFT, 0 | |
247 | TAD [-377 /IS IT A DELETE? | |
248 | ||
249 | SNA | |
250 | JMP I [DELETE | |
251 | TAD [377-212 /IS IT A LINE FEED? | |
252 | SNA | |
253 | ||
254 | JMP I [LFEED | |
255 | TAD [212-225 | |
256 | SZA /IS IT A CTRL/U? | |
257 | JMP I RBLFT | |
258 | TAD [225 | |
259 | JMS I [TYPIT | |
260 | JMP I [NEXTLN | |
261 | ||
262 | SSTADR, TAD TEMP1 /ADJUST FIELD | |
263 | CLL RTR /TRANSFORM FOR CDF--"37" TO "174" | |
264 | RTR | |
265 | BSW | |
266 | SZL | |
267 | TAD [4 | |
268 | TAD [6203 | |
269 | DCA I [1401 /STORE STARTING FIELD CDF CIF | |
270 | TAD TEMP2 | |
271 | DCA I [1402 /STORE AWAY STARTING ADDRESS | |
272 | JMP ENDTST | |
273 | SSBITS, TAD TEMP2 | |
274 | DCA I [1403 /STORE AWAY JSW | |
275 | ENDTST, TAD LXR /TEST FOR END OF INPUT LINE | |
276 | CIA | |
277 | TAD CXR | |
278 | SMA CLA | |
279 | JMP TESTE /TEST FOR CR/LF OR @ | |
280 | JMP I [SDFLG | |
281 | DASH, TAD TEMP1 /ROUTINE TO PROCESS TRIPLET | |
282 | CIA CLL CML | |
283 | TAD FIRST1 | |
284 | SZA CLA /ARE THE FIELDS THE SAME? | |
285 | JMP I [BARG /NO ERROR | |
286 | TAD TEMP2 | |
287 | AND [7600 | |
288 | TAD [200 | |
289 | DCA TEMP2 | |
290 | TAD TEMP2 | |
291 | CIA | |
292 | TAD FIRST2 | |
293 | SZL CLA /ISI UPPER LIMIT > LOWER LIMIT? | |
294 | JMP I [BARG /NO ERROR | |
295 | TAD [1403 /SET INDEX REGISTER | |
296 | DCA XR | |
297 | STA | |
298 | TAD I [1400 /INITIALIZE SEGMENT COUNTER | |
299 | DCA COUNT | |
300 | JMP I [FLDTST /PROCESS SEGMENT | |
301 | TESTE, TAD TEMP /TEST FOR WHETHER END OF LINE OR INPUT | |
302 | ENTST, TAD [-215 /WAS IT ACARRAIGE RETURN? | |
303 | SNA | |
304 | JMP I [NEXTLN /YES PREPARE FOR NEXT LINE | |
305 | TAD [215-"@ /WAS IT EXIT TIME? | |
306 | SNA | |
307 | JMP I [WRCCB /EXIT ROUTINE | |
308 | JMP REDERR /ILLEGAL INPUT | |
309 | PWORD, 0 /ROUTINE TO PROCESS ORIGIN OR JSW WORDS | |
310 | DCA ORG | |
311 | TAD ORG | |
312 | BSW /PROCESS HIGHER BIT FIRST | |
313 | JMS SECT2 | |
314 | TAD ORG /NOW PROCESS LOWER BITS | |
315 | JMS SECT2 | |
316 | JMP I PWORD | |
317 | SECT2, 0 /ROUTINE TO PRINT DOUBLE DIGIT | |
318 | DCA TEMP1 | |
319 | TAD TEMP1 | |
320 | AND [70 /ISOLATE HIGHER DIGIT | |
321 | CLL RTR | |
322 | RAR | |
323 | TAD [260 | |
324 | JMS I [TYPIT | |
325 | TAD TEMP1 | |
326 | AND [7 /ISOLATE LOWER DIGIT | |
327 | TAD [260 | |
328 | JMS I [TYPIT | |
329 | JMP I SECT2 | |
330 | ||
331 | \f | |
332 | *600 | |
333 | GTNM, DCA DIGFLG /RESET DIGIT FLAG | |
334 | DCA TEMP1 /CLEAR FIELD STORAGE | |
335 | DCA TEMP2 /CLEAR ADDRESS STORAGE | |
336 | GETNUM, TAD I CXR /ROUTINE TO ORGANIZE LINE INPUT | |
337 | TAD [-270 /TEST FOR NUMBER | |
338 | CLL | |
339 | TAD [10 | |
340 | SNL | |
341 | JMS NOTNUM /NO NUMBER | |
342 | DCA TMP1 /STORE NUMBER | |
343 | ISZ DIGFLG /SET NUMBER FLAG | |
344 | JMS ROT /ORGANIZE ARGUMENT INTO TWO WORDS | |
345 | JMS ROT /TEMP1 FOR THE FIELD | |
346 | JMS ROT /TEMP2 FOR ADDRESS | |
347 | TAD TEMP2 | |
348 | TAD TMP1 /TAD IN NEW DIGIT | |
349 | DCA TEMP2 | |
350 | JMP GETNUM | |
351 | SDFLG, TAD CHARID /ADD DELIMITER | |
352 | DCA DLID /STORE IT | |
353 | TAD TEMP2 /STORE PRESENT ADDRESS AWAY | |
354 | AND [7600 | |
355 | DCA FIRST2 | |
356 | TAD TEMP1 /STORE FIELD ALSO | |
357 | AND [37 | |
358 | DCA FIRST1 | |
359 | JMP GTNM | |
360 | \f | |
361 | ROT, 0 /ROUTINE TO ROTATE FIELD AND ADDRESS | |
362 | TAD TEMP2 /ADDRESS REGISTER | |
363 | CLL RAL /MOVE POTENTIAL FIELD BIT INTO LINK | |
364 | DCA TEMP2 /NOW READY FOR NEW INPUT - TMP1 | |
365 | TAD TEMP1 | |
366 | RAL /STORE FIELD BITS | |
367 | DCA TEMP1 | |
368 | JMP I ROT | |
369 | NOTNUM, 0 | |
370 | CLL | |
371 | TAD [260 /CONVERT TO ASCII | |
372 | DCA CHARID | |
373 | TAD DIGFLG | |
374 | SNA CLA | |
375 | JMS ACORS /IF NO DIGIT,MUST BE A COMMAND | |
376 | TAD DLID /PROCESS INPUT NUMBER | |
377 | SNA /ZERO INDICATES FIRST NUMBER | |
378 | JMP SDFLG /PREPARE FOR NEXT NUMBER | |
379 | TAD [-"- /IS IT A DASH? | |
380 | SNA | |
381 | JMP I [DASH /PROCESS TRIPLET | |
382 | TAD ["--", /IS IT A COMMA? | |
383 | SNA | |
384 | JMP SDFLG /GET SECOND NUMBER | |
385 | TAD [",-"; /IS IT A SEMI-COLON? | |
386 | SNA | |
387 | JMP I [SSTADR /PROCESS START ADDRESS | |
388 | TAD [";-"= /IS IT AN EQUALS | |
389 | SNA CLA | |
390 | JMP I [SSBITS /PROCESS JSW | |
391 | JMP SDFLG | |
392 | ACORS, 0 /TEST FOR ADD,SUB,OR CHANGE | |
393 | TAD CHARID | |
394 | TAD [-"T /IS IT A TYPE INST? | |
395 | SNA | |
396 | JMP I [TYCCB /IF SO PROCESS IT | |
397 | TAD ["T-"A /IS IT AN ADDITION? | |
398 | SNA | |
399 | JMP CEND | |
400 | TAD ["A-"S /IS IT A DELETION? | |
401 | SZA CLA | |
402 | JMP SDFLG /TEST FOR @ OR CR/LF | |
403 | IAC | |
404 | CEND, DCA CMND /STORE COMMAND FLAG | |
405 | ||
406 | JMP GTNM | |
407 | SAVE1, JMS I [CRLF /PROCESS END OF LINE | |
408 | SAVE, TAD [1177 | |
409 | DCA CXR /POINT TOWARD START OF LINE | |
410 | TAD LXR /WAS THEIR ANY INPUT? | |
411 | CIA | |
412 | TAD CXR | |
413 | SNA CLA /IF LXR EQUALS CXR, THERE WAS NONE | |
414 | JMP I [TESTE /TEST FOR CR/LF OR @ | |
415 | DCA I LXR /SET DELIMITER | |
416 | JMP I [GETNUM /GET INPUT | |
417 | \f | |
418 | ATEST, CLA | |
419 | TAD CMND /WHAT IS THE COMMAND? | |
420 | SZA CLA /IF NOT THE ADD COMMAND... | |
421 | JMP I [BARG /THEN ERROR RETURN | |
422 | TAD COUNT /IS IT TO BE ADDED ON THE END? | |
423 | SZA CLA /IF COUNT IS ZERO, YES... | |
424 | TAD [-2 /PUSH BACK INDEX TO SAVE LAST SEGMENT | |
425 | TAD XR | |
426 | DCA XR | |
427 | TAD XR /ADDITION CODE | |
428 | AND [77 /ISOLATE WHERE WE ARE IN THE CCB | |
429 | TAD [1600 /REFERENCE SAME LOCATION IN ADD BUFFER | |
430 | DCA NXR /STORE FOR MOVE | |
431 | TAD FIRST2 /STORE INPUT'S ORIGIN | |
432 | DCA I NXR | |
433 | JMS I [SEGADJ /ADJUST SECOND WORD FOR CCB | |
434 | DCA I NXR | |
435 | STA | |
436 | DCA BUMP /SET ADD INDICATOR | |
437 | JMP I [MOVE /MOVE CCB | |
438 | STEST, STA /DELETION PROCESSOR | |
439 | ||
440 | TAD CMND | |
441 | SZA CLA /IS A DELETION? | |
442 | JMP I [BARG /IF NOT ERROR | |
443 | TAD XR /SET BACK POINTER FOR DELETION | |
444 | TAD [176 /ADD 200 TO REFERENCE 1600 BUFFER | |
445 | DCA NXR | |
446 | IAC /SET DELETION PARAMETER | |
447 | DCA BUMP | |
448 | JMP I [MOVE /MOVE CCB | |
449 | PAGE | |
450 | \f | |
451 | ||
452 | *1000 | |
453 | /ROUTINE TO PROCESS CCB SEGMENTS FOR TYPING | |
454 | SEGSM2, TAD [-4 | |
455 | DCA SEGCNT | |
456 | SEGS, TAD I CXR /GET FIRST SEGMENT | |
457 | DCA TMP1 | |
458 | TAD I CXR /GET SECOND WORD OF SEGMENT | |
459 | DCA FLD | |
460 | JMS TFIELD | |
461 | JMS I [SECT2 | |
462 | TAD TMP1 /TYPE ORIGIN OF SEGMENT | |
463 | JMS I [PWORD /TYPE IT | |
464 | TAD [255 /TYPE HYPHEN | |
465 | JMS I [TYPIT | |
466 | JMS TFIELD /TYPE FIELD | |
467 | JMS I [SECT2 | |
468 | TAD FLD /CALCULATE HIGHER LIMIT | |
469 | AND [3700 /ISOLATE NUMBER OF PAGES | |
470 | TAD [-100 /MINUS A PAGE TO BE REPLACED BY | |
471 | CLL RAL | |
472 | TAD [177 /A PAGE FULL OF LOCATIONS | |
473 | TAD TMP1 | |
474 | JMS I [PWORD | |
475 | ISZ CNT /IS THAT ALL THE SEGS? | |
476 | JMP .+5 /NO ... CONTINUE | |
477 | JMS I [CRLF | |
478 | TAD [1177 | |
479 | DCA LXR /RESET INPUT POINTER | |
480 | JMP I [CONT / | |
481 | ISZ SEGCNT /IS THAT THE FOURTH SEGMENT? | |
482 | JMP .+4 /NO...CONTINUE | |
483 | JMS I [CRLF | |
484 | JMS I [CRLF | |
485 | JMP I [SEGSM2 | |
486 | TAD [", | |
487 | JMS I [TYPIT | |
488 | TAD [240 | |
489 | JMS I [TYPIT | |
490 | JMP SEGS | |
491 | FLDTST, ISZ COUNT /IS THAT ALL THE SEGS? | |
492 | SKP CLA | |
493 | JMP I [ATEST /IF SO PROCESS COMMAND | |
494 | TAD I XR /SEARCH FOR FIELD ETC. PAGE | |
495 | DCA TMP /STORE SEGMENT ORIGIN | |
496 | TAD I XR | |
497 | DCA FLD /STORE SEGMENT'S SECOND WORD | |
498 | JMS TFIELD /ADJUST FIELD... | |
499 | CIA /RETURNS WITH FIELD IN AC | |
500 | TAD TEMP1 /IS IT THE SAME FIELD AS INPUT? | |
501 | SPA /OR IS IT LESS THAN FIELD OF INPUT? | |
502 | JMP FLDTST /NEITHER... | |
503 | SZA CLA /IF IT IS LESS THAN INPUT'S FIELD | |
504 | JMP I [ATEST /IT SHOULD BE AN ADD | |
505 | TAD FIRST2 /TEST INPUT'S ORIGIN | |
506 | CIA /IS IT LESS THAN OR EQUAL TO SEGMENT'S ORIGIN? | |
507 | TAD TMP | |
508 | SNA | |
509 | JMP I [STEST /IF EQUAL TEST FOR DELETION | |
510 | SMA CLA | |
511 | JMP I [ATEST /IF LESS TEST FOR ADDITION | |
512 | JMP FLDTST /OTHERWISE CHECK NEXT SEGMENT | |
513 | TFIELD, 0 /ROUTINE TO TRANSFORM FIELDS FOR TYPING | |
514 | TAD FLD | |
515 | AND [76 | |
516 | CLL RTR | |
517 | SZL /ISOLATE BANK BIT "A" | |
518 | TAD [40 | |
519 | CLL RAR | |
520 | SZL /ISOLATE BANK BIT "B" | |
521 | TAD [10 | |
522 | JMP I TFIELD | |
523 | SEGADJ, 0 /ROUTINE TO ORGANIZE CCB SEGMENT SECOND WORD | |
524 | TAD FIRST2 /CALCULATE NUMBER OF PAGES | |
525 | CIA | |
526 | TAD TEMP2 /BY DIFFERENCING THE INPUT ADDRESSES | |
527 | AND [7600 | |
528 | CLL RAR /AND HALVING INTO PAGES | |
529 | DCA FIRST2 /STORE FOR CCB LOAD | |
530 | ||
531 | TAD TEMP1 /ADD IN FIELD | |
532 | JMS CCBFLD /RE-ORGANIZE IT FOR CCB | |
533 | TAD FIRST2 /COMBINE FIELD AND PAGES FOR CCB SEGMENT | |
534 | JMP I SEGADJ | |
535 | CCBFLD, 0 /ROUTINE TO CHANGE FIELD INTO CCB FORM | |
536 | CLL RTR /STARTS WITH A '37' IN AC | |
537 | RTR | |
538 | SZL /TEST FOR B BANK BIT | |
539 | TAD [400 | |
540 | CLL RAR | |
541 | SZL /TEST FOR A BANK BIT | |
542 | TAD [100 | |
543 | CLL RTR | |
544 | RTR | |
545 | RAR /RETURN WITH A '76' IN AC | |
546 | JMP I CCBFLD | |
547 | MOVE, JMS MOVA /MOVE TIME | |
548 | TAD BUMP /IF YES, RESET SEGMENT NUMBER | |
549 | TAD I [1400 | |
550 | DCA I [1400 | |
551 | REMOVE, TAD [1403 /REPLACE ORIGINAL SEGS | |
552 | DCA NXR | |
553 | TAD [1603 /WITH UPDATED ONES | |
554 | DCA XR | |
555 | TAD I [1400 | |
556 | DCA COUNT /SET COUNT TO THE NUMBER OF SEGS | |
557 | JMS MOVA | |
558 | JMP I [ENDTST | |
559 | MOVA, 0 | |
560 | TAD COUNT /WAS THE SEGMENT ADDED ON THE END? | |
561 | SNA CLA | |
562 | JMP I MOVA /IF SO, RETURN | |
563 | TAD I XR /MAKE THE MOVE | |
564 | DCA I NXR | |
565 | TAD I XR /BE SURE TO GET BOTH WORDS | |
566 | DCA I NXR | |
567 | ISZ COUNT /IS THAT ALL THE SEGMENTS? | |
568 | JMP .-5 /IF NO, CONTINUE | |
569 | JMP I MOVA | |
570 | NEXTLN, CLL CLA /ROUTINE TO ACCEPT NEW INPUT LINE | |
571 | DCA DIGFLG /ZERO DIGIT FLAG | |
572 | DCA DLID /CLEAR DELIMITER STORAGE | |
573 | TAD [1177 /RESET INPUT POINTER | |
574 | DCA LXR | |
575 | JMP I [CONT /CONTINUE INPUT CODE | |
576 | PAGE | |
577 | \f *1710 | |
578 | /LOCATIONS 1600-1710 ARE USED AS THE CORE CONTROL BLOCK BUFFER | |
579 | DELETE, /TTY DELETION COMMAND | |
580 | CLL CLA | |
581 | TAD LXR | |
582 | TAD [-1177 /WAS THERE INPUT? | |
583 | SNA CLA | |
584 | JMP RBSPCL /NO INPUT--PREPARE FOR SOME... | |
585 | TAD ["\ /PRINT ERASE DELIMITER | |
586 | ISZ RBFLG /TEST TO SEE IF THIS IS THE FIRST RUBOUT | |
587 | JMS I [TYPIT /IT IS | |
588 | CLA CMA /SET RUBOUT FLAG | |
589 | DCA RBFLG | |
590 | CMA | |
591 | TAD LXR | |
592 | DCA TX /PRINT ERASED CHARACTER | |
593 | TAD I TX | |
594 | JMS I [TYPIT | |
595 | BACKUP, CLA CMA | |
596 | TAD LXR | |
597 | DCA LXR | |
598 | KCC | |
599 | JMP I [REATTY | |
600 | RBSPCL, ISZ RBFLG /HAVE ANY CHARACTERS BEEN ERASED? | |
601 | JMP I [CONT /NO...PREPARE FOR INPUT | |
602 | TAD ["\ | |
603 | JMS I [TYPIT | |
604 | DCA DIGFLG /RESET DIGFLG | |
605 | JMP I [CONT | |
606 | LFEED, JMS I [CRLF | |
607 | TAD [243 /TYPE I.D.(#) CHARACTER | |
608 | JMS I [TYPIT | |
609 | TAD [1177 | |
610 | DCA NXR | |
611 | JMP .+3 | |
612 | FEEDER, TAD I NXR | |
613 | JMS I [TYPIT | |
614 | TAD LXR | |
615 | CIA | |
616 | TAD NXR | |
617 | SZA CLA | |
618 | JMP FEEDER | |
619 | KCC | |
620 | JMP I [REATTY | |
621 | BARG, JMS I [PRMSG | |
622 | TEXT /BAD ARGS/ | |
623 | JMP I [NEXTLN | |
624 | SEGNO, 0 | |
625 | TAD I [1400 /ACCES NUMBER OF SEGMENTS | |
626 | CLL RAL /ADJUST EXTENDED MEM BIT | |
627 | STL RAR | |
628 | TAD [32 | |
629 | SPA CLA /ARE THERE MORE THAN 32? | |
630 | JMP REDERR | |
631 | JMP I SEGNO | |
632 | PAGE | |
633 | ||
634 | \f | |
635 | *2000 | |
636 | ||
637 | VERMSG, 0 | |
638 | JMS I [PRMSG | |
639 | TEXT / ATTENTION! THE NEW CCB WILL BE WRITTEN DIRECTLY ONTO / | |
640 | JMS I [CRLF | |
641 | JMS I [PRMSG | |
642 | TEXT /THE SPECIFIED INPUT FILE.(SEE SOURCE CODE)/ | |
643 | JMP I VERMSG | |
644 | ||
645 | WRCCB, JMS I [SEGNO /DID WE EXCEED SEGMENT LIMIT? | |
646 | JMS I [7607 /WRITE CCB | |
647 | 4201 | |
648 | 1200 /FROM 1200 | |
649 | 37 /TO BLOCK '37' | |
650 | JMP REDERR | |
651 | TAD I (STFLE | |
652 | DCA WRFLE | |
653 | JMS I [7607 | |
654 | 4101 | |
655 | 1400 | |
656 | WRFLE, 0 | |
657 | JMP REDERR | |
658 | JMP I ERR |