1 2 /TECO - VERSION J 3 /SHEET 0 4 / 4 JUL 69 RBH 5 6 /VERSION F: D.J. EDWARDS AND T.P. SKINNER 5/4/67 7 /MODIFIED FOR SECOND NAME (A). 8/30/67 8 /VERSION G: R.B. HAM 3/5/68 9 /VERSION H: R.B. HAM 4/15/68 10 /VERSION I: R.B. HAM 12/4/68 11 /VERSION J: R.B. HAM 7/4/69 12 MQA=7501 13 MQL=7421 14 MUY=7405 15 DVI=7407 16 SHL=7413 17 LSR=7417 18 19 20 /ASSEMBLY PARAMETERS FOR EAE VERSION: 21 22 MQLMUY= MQL MUY /EAE INSTRUCTIONS ARE REAL 23 MQLDVI= MQL DVI 24 CLAMQA= CLA MQA 25 FIXTAB 26 27 IN= 0000 /INPUT BUFFER IS AT 10000 28 OUT= 0600 /OUTPUT BUFFER IS AT 10600 29 TXT= 1400 /TEXT BUFFER IS AT 11400 30 QRG= 5010 /Q-REG BUFFER IS AT 15010 31 ZMAX= 5670 /3000 [10] CHARS IN TEXT BUFFER 32 APMAX= 5360 /2800 [10] CHARS =ZMAX-200 [10] 33 QMAX= 4610 /2440 [10] CHARS IN Q-REGS 34 DMAX= 1200 /640 [10] CHARS IN DECTAPE BUFFER 35 36 37 38 /TECO - VERSION J 39 /SHEET 1 40 /21 APR 69 RBH 41 42 PAGE 0 43 44 /OS/8 FILE SYSTEM PROVIDES INTERRUPT LINKAGE: 45 / 0 /INTERRUPT ADDRESS 46 / NOP /INTERRUPT ADDR FOR PDP-5 47 / JMP I .+1 48 / INTR /FILE SYSTEM INTERRUPT HANDLER 49 /TECO PROVIDES FOLLOWING LINKAGE: 50 SCATP=4;SCAT=JMP I 4 /FILE SYSTEM INTERRUPT RETURN 51 *5 52 00005 1751 INTP, SYS /PAPER TAPE & TTY ISR'S 53 /FILE SYSTEM USES LOCATION 6 54 /LOCATION 7 IS FREE 55 /FILE SYSTEM USES LOCATIONS 10-11 56 /TECO USES LOCATIONS 12-17 57 *20 /TECO PSEUDO-OPERATIONS: 58 00020 0613 PUSH= JMS I .; PUSHXX 59 00021 0600 POP= JMS I .; POPXX 60 00022 0633 PUSHJ= JMS I .; PUSHJY 61 00023 0625 POPJ= JMS I .; POPJXX 62 00024 0646 PUSHL= JMS I .; PUSHLX 63 00025 0665 POPL= JMS I .; POPLX 64 00026 2732 ERR= JMS I .; ERRXX 65 00027 1720 SORT= JMS I .; SORTB 66 00030 1744 RESORT= JMP I .; SORTA2 67 00031 4425 SCAN= JMS I .; SGET 68 00032 1113 RESCAN= JMS I .; SREGET 69 00033 4021 LISTEN= JMS I .; TYI 70 00034 3061 TYPE= JMS I .; TYO 71 00035 2704 CTLTYP= JMS I .; TYPCTL 72 00036 3623 CTVTYP= JMS I .; TYPCTV 73 00037 1164 CRLF= JMS I .; TYCRLF 74 00040 0407 GET= JMS I .; GETX 75 00041 0400 PUT= JMS I .; PUTX 76 00042 0703 TXTCPY= JMS I .; CPYTXT 77 00043 4700 SKPSET= JMS I .; SETSKP 78 00044 3631 NCHK= JMS I .; CHKNF 79 00045 3460 CCHK= JMS I .; CHKCF 80 00046 3442 BZCHK= JMS I .; CHKBZ 81 00047 3125 QCHK= JMS I .; CHKQF 82 00050 5553 QSKP= JMS I .; QOVER 83 00051 3271 CLNCHK= JMP I .; CHKCLN 84 00052 4450 QREF= JMS I .; QREFER 85 00053 4400 QSUM= JMS I .; QSUMR 86 00054 3054 QPUT= JMS I .; QPUTS 87 88 /TECO - VERSION J 89 /SHEET 2 90 /16 JAN 69 RBH 91 92 00055 0000 SFAIL, 0 /SEARCH FAIL FLAG 93 00056 0000 CFLG, 0 /COMMA FLAG 94 00057 0000 CLNF, 0 /COLON FLAG 95 00060 0000 NFLG, 0 /NUMBER FLAG 96 00061 0000 OFLG, 0 /OPERATOR FLAG 97 00062 0000 QFLG, 0 /QUOTED STRING FLAG 98 00063 0000 M, 0 /NUMBER ARGS 99 00064 0000 N, 0 100 00065 0000 CHAR, 0 /CURRENT COMMAND CHARACTER 101 00066 0000 ITRST, 0 /ITERATION FLAG 102 00067 0000 TFLG, 0 /TRACE MODE 103 00070 0000 MPDL, 0 /MACRO FLAG 104 00071 0000 SCHAR, 0 /LAST CHAR SORTED 105 106 107 INPUT= JMS I . 108 00072 2732 INR, ERRXX /INPUT ROUTINE 109 00073 0000 ICHAR, 0 /INPUT ROUTINE TEMPORARY 110 00074 0000 RCHAR, 0; IN /INPUT CHARACTER PNTR 00075 0000 111 00076 4000 RUNIT, 4000 /INPUT DEVICE NUMBER 112 00077 0000 REND, 0 /INPUT END-OF-FILE FLAG 113 114 OUTPUT= JMS I . 115 00100 2732 OUTR, ERRXX /OUTPUT ROUTINE 116 00101 0000 OCHAR, 0 /OUTPUT ROUTINE TEMPORARY 117 00102 0000 WCHAR, 0; OUT /OUTPUT CHARACTER PNTR 00103 0600 118 00104 4000 WUNIT, 4000 /OUTPUT DEVICE NUMBER 119 00105 0000 WEND, 0 /OUTPUT END-OF-FILE FLAG 120 121 00106 0000 SCANP, 0 /COMMAND LINE EXECUTION POINTER 122 00107 0000 PDLP, 0 /PUSH-DOWN-LIST POINTER 123 00110 0000 QNMBR, 0 /LAST Q-REG REFERENCED 124 00111 0000 QCMND, 0 /COMM LINE OR MACRO POINTER 125 00112 0000 B, 0 /BEGINNING OF TEXT BUFFER PNTR 126 00113 0000 P, 0; TXT /CURRENT PNTR TO TEXT BUFFER 00114 1400 127 00115 0000 ZZ, 0 /END OF TEXT BUFFER PNTR 128 00116 0000 Q, 0; TXT /EXTRA BUFFER PNTRS 00117 1400 129 00120 0000 R, 0; TXT 00121 1400 130 00122 0000 QP, 0; QRG /Q-REGISTER POINTER 00123 5010 131 00124 0000 QR, 0; QRG /CUX Q-REG POINTER 00125 5010 132 00126 0000 QZ, 0 /END OF Q-REG POINTER 133 134 00127 7777 KFLG, 7777 /ECHO MODE SWITCH: ON 135 00130 0000 XFLG, 0 /OUTPUT MODE SWITCH: EXPANDED 136 00131 7777 YFLG, 7777 /INPUT MODE SWITCH: BRIEF 137 138 139 /TECO - VERSION I 140 /SHEET 3 141 / 4 DEC 68 RBH 142 143 00132 3331 QREGS, QPNTR /Q-REGISTER POINTER ARRAY 144 00133 4426 SERR, ERR /ILLEGAL COMMAND ENCOUNTERED 145 00134 0000 ISCAT, 0 /SCAT ADDRESS LOADED AT RUN TIME 146 00135 0177 MASK, 177 /ASCII CHARACTER MASK 147 00136 4037 KBISR, KANSR /POINTER TO TTY INPUT I.S.R. 148 149 00137 0000 APPLST, 0 /NULL: IGNORE 150 00140 0177 CARO, 177 /RUBOUT: MAKE SYNC 151 00141 0035 35 /GS: END OF SEGMENT 152 00142 0034 34 /FS: END OF FILE 153 00143 0040 CASP, 40 /SPACE 154 00144 0026 26 /SYNC: TIME WASTER 155 00145 0014 OUTLST, 14 /FF: END OF PAGE 156 00146 0012 CALF, 12 /LF 157 00147 0015 CACR, 15 /CR 158 00150 0011 CAHT, 11 /HT 159 00151 0033 CAAM, 33 /ALT MODE 160 00152 7766 APM12, -12 /END OF LIST 161 162 163 164 PAGE 165 166 167 /TECO - VERSION I 168 /SHEET 4 169 / 5 NOV 68 RBH 170 171 PAGE 1 172 173 00200 4777 TECO, JMS I (IOSTRT /INITIALIZE I/O 174 00201 3113 DCA P /RESET POINTERS 175 00202 3115 DCA ZZ 176 00203 3112 DCA B 177 00204 3361 DCA TCASE /SET TO UPPER CASE 178 00205 1145 TAD OUTLST /FORM FEED TO NEW SHEET 179 00206 4434 TYPE 180 00207 4776 T1, JMS I (DISP /INITIALIZE DISPLAY 181 00210 1375 TAD (PDLBEG) /RESET THE PUSHDOWN LIST 182 00211 3107 DCA PDLP 183 00212 3111 DCA QCMND /POINT TO COMMAND LINE 184 00213 3110 DCA QNMBR /ANOTHER Q-REG POINTER 185 00214 1532 TAD I QREGS /# OF CHARS IN PREV COMM LINE 186 00215 7041 CIA /SUBTRACT FROM 187 00216 1126 TAD QZ /Q-REG CONTENTS 188 00217 3126 DCA QZ /NEW MAXIMUM 189 00220 3532 DCA I QREGS /ZERO CHARS IN COMM LINE 190 00221 1374 TAD (SFAIL-INR) /CLEAR SEVERAL PAGE 0 191 00222 3314 DCA TSIG /REGISTERS 192 00223 1373 TAD (SFAIL-1) 193 00224 3010 DCA 10 /USING AUTO-INDEX 194 00225 3410 DCA I 10 /OF COURSE 195 00226 2314 ISZ TSIG 196 00227 5225 JMP .-2 197 00230 4422 PUSHJ /RESTORE ALTM & $ AS 198 00231 3277 IREST /STRING TERMINATORS 199 00232 4422 PUSHJ /UNDO A FIX 200 00233 5426 CNDO+2 201 00234 4422 PUSHJ /OR TWO 202 00235 4334 QUPNF+2 203 00236 4314 JMS TSIG 204 00237 4433 T2, LISTEN /BUILD COMMAND LINE 205 00240 4427 SORT 206 00241 5511 COMLST 207 00242 5432 COMTAB-COMLST 208 00243 1372 TAD (-100) /TEST FOR LETTERS 209 00244 7500 SMA 210 00245 1361 TAD TCASE /ADD CASE BIT 211 00246 1371 TAD (100) /RESTORE 212 00247 3065 DCA CHAR 213 00250 4435 CTLTYP /ECHO COMMAND CHARACTER 214 00251 4770 JMS I (SPUT /PUT INTO C.L. BUFFER 215 00252 5237 JMP T2 /GO GET ANOTHER 216 217 218 /TECO - VERSION I 219 /SHEET 5 220 /22 NOV 68 RBH 221 222 00253 1151 TALTM, TAD CAAM /ALTM IN COMM LINE 223 00254 3071 DCA SCHAR /MAKE EVERY ALTM INTO 33 224 00255 4767 JMS I (COMPAR /2ND ALTM STARTS EXECUTION 225 00256 4770 JMS I (SPUT /PUT IN EXTRA ALTM AT END 226 00257 4437 CRLF /START COMM EXECUTION 227 00260 3106 DCA SCANP /RESET TO BEGINNING 228 00261 4431 T6, SCAN 229 00262 3065 DCA CHAR /SAVE COMMAND CHAR 230 00263 1067 TAD TFLG /SEE IF TRACE ON 231 00264 7640 M140, SZA CLA /-140, LOC USED AS CONSTANT 232 00265 4435 CTLTYP /YES, TYPE OUT COMM CHAR 233 00266 1065 TAD CHAR 234 00267 1264 T6A, TAD M140 /SEE IF LOWER CASE 235 00270 7500 SMA 236 00271 1366 TAD (-40) /MAKE LC INTO UPPER CASE 237 00272 1365 TAD (140+CDSP) /ADD BASE OF DISPATCH TABLE 238 00273 3277 DCA T7 /LOOK UP ENTRY IN 239 00274 1677 TAD I T7 /COMMAND DISPATCH TABLE 240 00275 3277 DCA T7 /CALL RECURSIVELY 241 00276 4422 PUSHJ 242 00277 0000 T7, 0 /CALL TO ROUTINE 243 00300 7200 CLA /FINALLY FINISHED THAT ONE 244 00301 1066 TAD ITRST /INSIDE ITERATION? 245 00302 7640 SZA CLA /LEGAL FOR SEARCHES TO FAIL? 246 00303 5261 JMP T6 /YES, CONTINUE 247 00304 2055 ISZ SFAIL /NO, SEE IF IT DID 248 00305 5261 JMP T6 /NO, CONTINUE 249 00306 5764 JMP I (RECOUP /YES, STOP EXECUTION 250 251 00307 4767 TQMK, JMS I (COMPAR /? IN COMM LINE 252 00310 4333 JMS CLDO /2ND ? ERASES 1ST ? 253 00311 4422 PUSHJ /AND RETYPES 254 00312 0346 TQMF /COMMAND LINE SO FAR 255 00313 5237 JMP T2 /TAKE IN MORE COMMANDS 256 257 00314 0000 TSIG, 0 /RESET SCAN POINTER AND SIGNAL 258 00315 3106 DCA SCANP /BEGINNING OF COMM LINE 259 00316 4437 CRLF 260 00317 1363 TAD (52) /* 261 00320 4434 TYPE 262 00321 5714 JMP I TSIG /RETURN 263 264 265 /TECO - VERSION I 266 /SHEET 6 267 / 5 NOV 68 RBH 268 269 00322 1106 ROCMND, TAD SCANP /SEE IF ANYTHING TO ERASE 270 00323 7650 SNA CLA 271 00324 5207 JMP T1 /NO, START ALL OVER 272 00325 4432 RESCAN /YES 273 00326 4436 CTVTYP /ECHO SCRUBBED CHAR 274 00327 4333 JMS CLDO /REMOVE IT 275 00330 4432 RESCAN /GET CHAR BEFORE 276 00331 3065 DCA CHAR /MAKE IT PREV CHAR 277 00332 5237 JMP T2 /PROCEED 278 279 00333 0000 CLDO, 0 /COMM LINE DOWN ONE CHAR 280 00334 7240 STA 281 00335 1126 TAD QZ /FIRST BACK UP THE 282 00336 3126 DCA QZ /Q-REGISTER COUNT 283 00337 7240 STA 284 00340 1106 TAD SCANP /NOW BACK UP SCAN POINTER 285 00341 3106 DCA SCANP 286 00342 7240 STA 287 00343 1532 TAD I QREGS /AND CHARACTER COUNT 288 00344 3532 DCA I QREGS 289 00345 5733 JMP I CLDO 290 291 00346 1106 TQMF, TAD SCANP /TYPE COMM LINE UP TO SCANP 292 00347 7040 CMA /SAVE FOR COUNTING 293 00350 3333 DCA CLDO /MORE TIGHT CODING 294 00351 4314 JMS TSIG /FLAG BEGINNING OF COMM LINE 295 00352 2333 TBA1, ISZ CLDO /DONE? 296 00353 7410 SKP /NO 297 00354 4423 POPJ /YES, RETURN 298 00355 4431 SCAN /GET A CHAR 299 00356 3065 DCA CHAR 300 00357 4435 CTLTYP /CTRL CHARS GET ^ 301 00360 5352 JMP TBA1 /TYPE ANOTHER 302 303 00361 0000 TCASE, 0 /LOWER CASE BIT: 0 OR 40 304 305 306 00363 0052 PAGE 00364 2747 00365 2632 00366 7740 00367 3427 00370 3663 00371 0100 00372 7700 00373 0054 00374 7763 00375 3730 00376 3552 00377 5200 307 308 309 /TECO - VERSION J 310 /SHEET 7 311 /23 MAR 69 RBH 312 313 PAGE 2 314 315 /GET AND PUT ROUTINES, EAE VERSION 316 /DAN EDWARDS' BRAINCHILD 317 /5 SEVEN BIT CHARACTERS PACKED IN 3 WORDS 318 319 00400 0000 PUTX, 0 320 00401 0135 AND MASK /TRIM TO 7 BITS 321 00402 3274 DCA GTMC 322 00403 1200 TAD PUTX 323 00404 3207 DCA GETX 324 00405 1377 TAD (JMP PTR) 325 00406 5211 JMP GTPT /SHARED ROUTINE 326 327 00407 0000 GETX, 0 328 00410 1376 TAD (JMP GTR+1) 329 00411 3231 GTPT, DCA GTR /GET AND PUT SHARE THIS PART 330 00412 1607 TAD I GETX 331 00413 3273 DCA GTT 332 00414 1673 TAD I GTT 333 00415 7427 MQL DVI 334 00416 0005 5 /FIND CHARACTER IN WORD TRIO 335 00417 1231 TAD GTR 336 00420 3231 DCA GTR 337 00421 7405 MUY 338 00422 0003 GTC3, 3 339 00423 7701 MQA CLA /PUT IN AC 340 00424 2273 ISZ GTT /MOVE TO BUFFER BASE LOC 341 00425 1673 TAD I GTT /ADD BUFFER BASE 342 00426 3273 DCA GTT /PNTR TO PROPER WORD TRIO 343 00427 7621 CLA MQL 344 00430 6211 CDF 10 345 00431 5231 GTR, JMP . /DISPATCH JUMP 346 00432 5270 JMP GTR0 347 00433 5266 JMP GTR1 348 00434 5262 JMP GTR2 349 00435 5246 JMP GTR3 350 00436 2273 ISZ GTT /REMAINDER IS 4 351 00437 2273 ISZ GTT 352 00440 1673 TAD I GTT /33334444444X 353 00441 7010 GTW, RAR 354 00442 0135 GTX, AND MASK 355 00443 2207 GTZ, ISZ GETX /SKIP OVER ARGUMENT 356 00444 6201 CDF 0 357 00445 5607 JMP I GETX 358 359 360 /TECO - VERSION J 361 /SHEET 8 362 /23 MAR 69 RBH 363 364 00446 2273 GTR3, ISZ GTT /REMAINDER IS 3 365 00447 1222 TAD GTC3 366 00450 3260 GTR1A, DCA GTSC /SHARED WITH REM 1 367 00451 1273 TAD GTT /THESE CHARACTERS ARE SPLIT 368 00452 7001 IAC /BETWEEN TWO WORDS 369 00453 3274 DCA GTMC /REM 1:000000011111 112222222333 370 00454 1674 TAD I GTMC /REM 3:112222222333 33334444444X 371 00455 7421 MQL 372 00456 1673 TAD I GTT 373 00457 7413 SHL 374 00460 0003 GTSC, 3 /FILLED IN 375 00461 5242 JMP GTX 376 377 00462 2273 GTR2, ISZ GTT /REMAINDER IS 2 378 00463 1673 TAD I GTT /112222222333 379 00464 7012 GTV, RTR 380 00465 5241 JMP GTW 381 382 00466 7001 GTR1, IAC /REMAINDER IS 1 383 00467 5250 JMP GTR1A /SHARED ROUTINE 384 385 00470 1673 GTR0, TAD I GTT /REM 0:000000011111 386 00471 7012 RTR 387 00472 5264 JMP GTV 388 389 00473 0000 GTT, 0 /TEMP 390 00474 0000 GTMC, 0 391 392 393 00475 5352 PTR, JMP PTR0 394 00476 5337 JMP PTR1 395 00477 5327 JMP PTR2 396 00500 5311 JMP PTR3 397 00501 2273 ISZ GTT /REMAINDER IS 4 398 00502 2273 ISZ GTT 399 00503 1673 TAD I GTT /33334444444X 400 00504 0375 AND (7400) /3333XXXXXXXX 401 00505 1274 TAD GTMC /ADD TWICE IS SAME AS ROTATE LEFT 402 00506 1274 PTV, TAD GTMC 403 00507 3673 PTX, DCA I GTT 404 00510 5243 JMP GTZ 405 406 407 /TECO - VERSION J 408 /SHEET 9 409 /23 MAR 69 RBH 410 411 00511 2273 PTR3, ISZ GTT /REMAINDER IS 3 412 00512 1274 TAD GTMC 413 00513 7417 LSR /MOVE CHARACTER 4 BITS RIGHT 414 00514 0003 3 415 00515 3274 DCA GTMC 416 00516 1673 TAD I GTT /112222222333 417 00517 0374 AND (7770) /112222222XXX 418 00520 1274 TAD GTMC /XXXXXXXXX333 419 00521 3673 DCA I GTT /112222222333 420 00522 2273 ISZ GTT /MOVE TO SECOND PART 421 00523 1373 TAD (376) /MASK:XXX4444444X 422 00524 0673 PTW, AND I GTT /THIS SECTION SHARED 423 00525 7501 MQA /OR MQ IN TO AC 424 00526 5307 JMP PTX 425 426 00527 1274 PTR2, TAD GTMC /REMAINDER IS 2 427 00530 7106 CLL RTL /MOVE CHAR LEFT 3 BITS 428 00531 7004 RAL /XX2222222XXX 429 00532 3274 DCA GTMC 430 00533 2273 ISZ GTT 431 00534 1372 TAD (6007) /MASK:11XXXXXXX333 432 00535 0673 PTY, AND I GTT /SHARED CODING 433 00536 5306 JMP PTV 434 435 00537 1274 PTR1, TAD GTMC /REMAINDER IS 1 436 00540 7417 LSR /SHIFT CHAR 2 BITS RIGHT 437 00541 0001 1 438 00542 3274 DCA GTMC 439 00543 1673 TAD I GTT /000000011111 440 00544 0371 AND (7740) /0000000XXXXX 441 00545 1274 TAD GTMC /XXXXXXX11111 442 00546 3673 DCA I GTT /000000011111 443 00547 2273 ISZ GTT /MOVE TO SECOND PART 444 00550 1370 TAD (1777) /MASK:XX2222222333 445 00551 5324 JMP PTW 446 447 00552 1274 PTR0, TAD GTMC /REMAINDER IS 0 448 00553 7413 SHL /MOVE CHAR LEFT 5 BITS 449 00554 0004 4 450 00555 3274 DCA GTMC /0000000XXXXX 451 00556 1367 TAD (37) /MASK:XXXXXXX11111 452 00557 5335 JMP PTY 453 454 455 00567 0037 PAGE 00570 1777 00571 7740 00572 6007 00573 0376 00574 7770 00575 7400 00576 5232 00577 5275 456 457 458 /TECO - VERSION I 459 /SHEET 10 460 /30 OCT 68 RBH 461 462 PAGE 3 463 464 /PUSH DOWN AND CHARACTER MOVE ROUTINES 465 466 00600 0000 POPXX, 0 /POP ROUTINE 467 00601 7200 CLA 468 00602 1107 TAD PDLP 469 00603 1377 TAD (-PDLBEG) /CHECK FOR UNDERFILL 470 00604 7750 SPA SNA CLA 471 00605 4426 ERR /SPRUNG OUT THE TOP 472 00606 7240 STA /LET POINTER 473 00607 1107 TAD PDLP /BACK OUT OF 474 00610 3107 DCA PDLP /THE BOX 475 00611 1507 TAD I PDLP 476 00612 5600 JMP I POPXX 477 478 00613 0000 PUSHXX, 0 /PUSH ROUTINE 479 00614 3243 DCA ACXX 480 00615 1107 TAD PDLP 481 00616 1376 TAD (-PDLEND) /CHECK FOR OVERFILL 482 00617 7740 SMA SZA CLA 483 00620 4426 ERR /POKED OUT THE BOTTOM 484 00621 1243 TAD ACXX 485 00622 3507 DCA I PDLP 486 00623 2107 ISZ PDLP /SQUISH POINTER 487 00624 5613 JMP I PUSHXX 488 489 00625 0000 POPJXX, 0 /POPJ ROUTINE 490 00626 3244 DCA ACXY 491 00627 4421 POP 492 00630 3225 DCA POPJXX 493 00631 1244 POPJXY, TAD ACXY 494 00632 5625 JMP I POPJXX 495 496 00633 0000 PUSHJY, 0 /PUSHJ ROUTINE 497 00634 3244 DCA ACXY 498 00635 1633 TAD I PUSHJY 499 00636 3225 DCA POPJXX 500 00637 7001 IAC 501 00640 1233 TAD PUSHJY 502 00641 4420 PUSH 503 00642 5231 JMP POPJXY 504 505 00643 0000 ACXX, 0 /STORAGE FOR 506 00644 0000 ACXY, 0 /PUSH-DOWN 507 00645 0000 ACXZ, 0 /ROUTINES 508 509 510 /TECO - VERSION J 511 /SHEET 11 512 /23 MAR 69 RBH 513 514 00646 0000 PUSHLX, 0 /PUSH AND CLEAR A LIST 515 00647 3303 DCA CPYTXT /SET COUNTER 516 00650 4421 POP /SAVE RETURN POINTER 517 00651 3245 DCA ACXZ 518 00652 1646 TAD I PUSHLX 519 00653 3244 DCA ACXY 520 00654 1644 TAD I ACXY 521 00655 4420 PUSH 522 00656 3644 DCA I ACXY 523 00657 2246 ISZ PUSHLX 524 00660 2303 ISZ CPYTXT 525 00661 5252 JMP PUSHLX+4 526 00662 1245 TAD ACXZ /RESTORE RETURN POINTER 527 00663 4420 PUSH 528 00664 5646 JMP I PUSHLX 529 530 00665 0000 POPLX, 0 /POP A LIST 531 00666 3303 DCA CPYTXT /SET COUNTER 532 00667 4421 POP /SAVE RETURN POINTER 533 00670 3245 DCA ACXZ 534 00671 1665 TAD I POPLX 535 00672 3244 DCA ACXY 536 00673 4421 POP 537 00674 3644 DCA I ACXY 538 00675 2265 ISZ POPLX 539 00676 2303 ISZ CPYTXT 540 00677 5271 JMP POPLX+4 541 00700 1245 TAD ACXZ /RESTORE RETURN POINTER 542 00701 4420 PUSH 543 00702 5665 JMP I POPLX 544 545 00703 0000 CPYTXT, 0 /COPY TEXT WITHIN BUFFERS 546 00704 4440 GET 547 00705 0116 Q 548 00706 4441 PUT 549 00707 0120 R 550 00710 2116 ISZ Q 551 00711 2120 ISZ R 552 00712 5703 JMP I CPYTXT 553 554 555 /TECO - VERSION I 556 /SHEET 12 557 / 5 NOV 68 RBH 558 559 00713 7510 ADJ, SPA /ADJUST BUFFER + OR - N CHARS 560 00714 5352 JMP DNNC-1 /-N CHARACTERS 561 00715 7450 UPPN, SNA /TEST FOR NOTHING 562 00716 4423 POPJ /GO AWAY 563 00717 7100 CLL /MOVE UP N CHARACTERS 564 00720 1115 TAD ZZ /ADD TO MAX CHARACTER 565 00721 3120 DCA R /NEW HIGHEST 566 00722 1120 TAD R /SEE IF TOO HIGH 567 00723 1375 TAD (-ZMAX) 568 00724 7630 SZL CLA /TWO PLACES FOR OVERFLOW THERE 569 00725 4426 ERR 570 00726 1115 TAD ZZ 571 00727 3116 DCA Q 572 00730 1120 TAD R 573 00731 3115 DCA ZZ 574 00732 1120 UPNL, TAD R 575 00733 7041 CIA 576 00734 1113 TAD P 577 00735 7650 SNA CLA /FINISHED? 578 00736 4423 POPJ /YES 579 00737 7040 CMA 580 00740 1116 TAD Q 581 00741 3116 DCA Q 582 00742 7040 CMA 583 00743 1120 TAD R 584 00744 3120 DCA R 585 00745 4440 GET 586 00746 0116 Q 587 00747 4441 PUT 588 00750 0120 R 589 00751 5332 JMP UPNL 590 591 00752 7041 CIA /REACHED FROM ADJ 592 00753 1113 DNNC, TAD P /MOVE DOWN N CHARACTERS 593 00754 3116 DCA Q /N IN AC 594 00755 1113 TAD P 595 00756 3120 DCA R 596 00757 1115 DNN1, TAD ZZ 597 00760 7041 CIA 598 00761 1116 TAD Q 599 00762 7650 SNA CLA /FINISHED? 600 00763 5366 JMP .+3 /YES 601 00764 4442 TXTCPY 602 00765 5357 JMP DNN1 603 00766 1120 TAD R 604 00767 3115 DCA ZZ 605 00770 4423 POPJ 606 607 608 00775 2110 PAGE 00776 4011 00777 4050 609 610 611 /TECO - VERSION I 612 /SHEET 13 613 / 2 NOV 68 RBH 614 615 PAGE 4 616 617 /COMMANDS C,D,J,K,L 618 619 01000 1064 CHRJ, TAD N /COMMAND J 620 01001 4444 NCHK 621 01002 1112 TAD B /ASSUME BJ 622 01003 5210 JMP CLOQ 623 624 01004 1064 CHRC, TAD N /COMMAND C 625 01005 4444 NCHK 626 01006 7240 STA /ASSUME -1C 627 01007 1113 TAD P /OFFSET RELATIVE TO . 628 01010 4446 CLOQ, BZCHK /SEE IF IN RANGE B,Z 629 01011 3113 DCA P /IN RANGE 630 01012 4423 POPJ 631 632 01013 4445 CHRD, CCHK /COMMAND D 633 01014 5226 JMP CDN /ONE ARG 634 01015 3060 DCA NFLG /CLEAR NUMBER FLAG 635 01016 4422 PUSHJ 636 01017 3075 MFROMN /COMPUTE N-M 637 01020 7450 SNA /ANYTHING TO DELETE? 638 01021 4423 POPJ /NO 639 01022 3312 DCA CDT 640 01023 1063 TAD M /SET POINTER 641 01024 3113 DCA P /LOWER ARG 642 01025 5243 JMP CDMN 643 01026 1064 CDN, TAD N 644 01027 4444 NCHK /SEE IF NUMBER FLAG UP 645 01030 7240 STA /SET TO -1D IF NOT 646 01031 7450 SNA /CHECK FOR 0D 647 01032 4423 POPJ /0D IS IGNORED 648 01033 7500 SMA 649 01034 5777 JMP I (DNNC /+ND 650 01035 7041 CIA 651 01036 3312 DCA CDT /-ND 652 01037 1312 TAD CDT 653 01040 7041 CIA 654 01041 4422 PUSHJ /DO (-)NC(+)ND 655 01042 1007 CHRC+3 656 01043 1312 CDMN, TAD CDT 657 01044 5777 JMP I (DNNC 658 659 01045 1112 CKALL, TAD B /KILL WHOLE BUFFER 660 01046 3115 DCA ZZ 661 01047 5202 JMP CHRJ+2 /RESET POINTER 662 663 664 /TECO - VERSION I 665 /SHEET 14 666 /25 NOV 68 RBH 667 668 01050 1064 CHRL, TAD N /COMMAND L 669 01051 4444 NCHK 670 01052 7200 CLA /L MEANS 0L 671 01053 7141 CIA CLL /MAKE NEGATIVE 672 01054 7500 SMA /DID IT? 673 01055 7160 CLCMA, CMA STL /NO, MAKE MORE NEGATIVE 674 01056 3313 DCA SREGET /SAVE IN SUBR ENTRY 675 01057 1255 TAD CLCMA /COMPUTE SWITCH 676 01060 7420 SNL /WHICH DIRECTION? 677 01061 1376 TAD (IAC-CMA) /FORWARD 678 01062 3263 DCA CLCH /CMA FOR -NL 679 01063 5263 CLCH, JMP . /OR IAC FOR +NL 680 01064 1113 TAD P /GET . 681 01065 3113 DCA P /NEW . = OLD + OR - 1 682 01066 7321 CLA STL IAC /LOOK OUT FOR .=-1 683 01067 1113 TAD P /CLAMP AT ENDS OF BUFFER 684 01070 7061 CIA CML 685 01071 1112 TAD B /SEE IF AT HEAD 686 01072 7670 SNA SZL CLA 687 01073 5202 JMP CHRJ+2 /YES, EXIT 688 01074 1115 TAD ZZ 689 01075 7141 CIA CLL 690 01076 1113 TAD P /SEE IF AT END 691 01077 7670 SNA SZL CLA 692 01100 5207 JMP CHRC+3 /YES, EXIT 693 01101 4440 CLP, GET 694 01102 0113 P 695 01103 1152 TAD APM12 /CHECK FOR LINE FEED 696 01104 7650 SNA CLA 697 01105 2313 ISZ SREGET /FOUND ONE. ENOUGH? 698 01106 5263 JMP CLCH /NO 699 01107 2113 ISZ P /MOVE PAST LF 700 01110 4423 POPJ 701 702 01111 0000 CKT, 0 /TEMPORARY 703 01112 0000 CDT, 0 /TEMPORARY 704 705 01113 0000 SREGET, 0 /RESCAN LAST CHAR 706 01114 7240 STA 707 01115 1106 TAD SCANP 708 01116 7510 SPA /ZEROTH CHARACTER? 709 01117 5713 JMP I SREGET /YES, CALL IT NULL 710 01120 3106 DCA SCANP 711 01121 4431 SCAN 712 01122 5713 JMP I SREGET /RETURN 713 714 715 /TECO - VERSION I 716 /SHEET 15 717 / 1 NOV 68 RBH 718 719 01123 4445 CHRK, CCHK /K COMMAND 720 01124 5330 JMP CKN /1 ARG 721 01125 4422 PUSHJ /CONVERT LINE 722 01126 1134 LINES /#'S TO CHARS 723 01127 5215 JMP CHRD+2 /DO M,ND 724 01130 4444 CKN, NCHK /WHAT ARGS? 725 01131 5245 JMP CKALL /K MEANS EVERYTHING 726 01132 4775 JMS I (NLINES /CONVERT N LINES TO M,N 727 01133 5215 JMP CHRD+2 /DO .,(NL).D 728 729 730 01134 1113 LINES, TAD P /SAVE . 731 01135 4420 PUSH 732 01136 4422 PUSHJ /COMPUTE 733 01137 3075 MFROMN /N-M 734 01140 4420 PUSH /SAVE IT 735 01141 1063 TAD M 736 01142 4420 PUSH /SAVE IT 737 01143 4422 PUSHJ 738 01144 1424 CHRB 739 01145 4422 PUSHJ /DOING BJML 740 01146 1000 CHRJ 741 01147 4421 POP /RETRIEVE M 742 01150 4422 PUSHJ 743 01151 1053 CHRL+3 /FIND LINE M 744 01152 1113 TAD P 745 01153 3063 DCA M 746 01154 4421 POP /RETRIEVE N-M 747 01155 4422 PUSHJ 748 01156 1053 CHRL+3 749 01157 1113 TAD P 750 01160 3064 DCA N 751 01161 4421 POP /RETRIEVE ORIGINAL . 752 01162 3113 DCA P 753 01163 4423 POPJ 754 755 01164 0000 TYCRLF, 0 /TYPE A CR AND LF 756 01165 1147 TAD CACR /CR 757 01166 4434 TYPE 758 01167 1146 TAD CALF /LF 759 01170 4434 TYPE 760 01171 5764 JMP I TYCRLF /RETURN 761 762 763 764 01175 2000 PAGE 01176 7741 01177 0753 765 766 767 /TECO - VERSION I 768 /SHEET 16 769 /10 OCT 68 RBH 770 771 PAGE 5 772 773 /COMMANDS ^D,^K,,,N,R,S, AND _ 774 775 01200 4447 CSCH, QCHK /SEARCH ROUTINE 776 01201 1106 TAD SCANP 777 01202 3310 DCA CST 778 01203 1113 TAD P 779 01204 3311 DCA CSP 780 01205 5222 JMP CSG 781 782 01206 4431 CSL, SCAN 783 01207 4427 SORT 784 01210 3223 SCHLST 785 01211 6666 SCHTAB-SCHLST 786 01212 7041 CSQ, CIA 787 01213 3300 DCA CSNB 788 01214 4440 GET 789 01215 0113 P 790 01216 1300 TAD CSNB 791 01217 7640 CSWT, SZA CLA 792 01220 5242 JMP CSF /FAIL TO MATCH ON THIS CHARACTER 793 01221 2113 ISZ P 794 01222 1227 CSG, TAD CSZCL 795 01223 3217 DCA CSWT /RESTORE SEARCH TEST 796 01224 1115 TAD ZZ 797 01225 7040 CMA 798 01226 1113 TAD P 799 01227 7640 CSZCL, SZA CLA /CHECK FOR END OF BUFFER 800 01230 5206 JMP CSL /NO 801 01231 4450 QSKP /SKIP OVER SEARCH STRING 802 01232 1112 TAD B 803 01233 3113 DCA P 804 01234 7040 CMA /SET SEARCH FAIL FLAG 805 01235 3055 CSZ, DCA SFAIL 806 01236 4423 POPJ 807 808 01237 2307 CSK, ISZ CSN /GET NTH OCCURRENCE 809 01240 5242 JMP CSF /MORE TO GO 810 01241 5235 JMP CSZ /GOT IT 811 812 01242 1310 CSF, TAD CST /RESET SCANP 813 01243 3106 DCA SCANP 814 01244 2311 ISZ CSP /INDEX P 815 01245 1311 TAD CSP 816 01246 3113 DCA P 817 01247 5222 JMP CSG 818 819 820 /TECO - VERSION J 821 /SHEET 17 822 /23 MAR 69 RBH 823 824 01250 4300 CHRS, JMS CSNB /COMMAND S 825 01251 4422 PUSHJ 826 01252 1200 CSCH 827 01253 5451 CLNCHK /ASSIGN VALUE, IF ANY 828 829 01254 1312 CHBA, TAD CHIRPY /COMMAND _ 830 01255 1313 CHRN, TAD CHIRP /COMMAND N 831 01256 3276 DCA CNXT 832 01257 4300 JMS CSNB 833 01260 4447 QCHK /SNAG QUOTING CHAR 834 01261 1106 CNJ, TAD SCANP 835 01262 3360 DCA RADIX /SAVE SCAN POINTER 836 01263 4422 PUSHJ 837 01264 1201 CSCH+1 /DO A SEARCH 838 01265 1055 TAD SFAIL 839 01266 7700 SMA CLA /SUCCESS? 840 01267 5451 CLNCHK /YES, ASSIGN VALUE 841 01270 1077 TAD REND /SEE IF FILE END 842 01271 7650 SNA CLA 843 01272 5451 CLNCHK /FAILED, ASSIGN VALUE 844 01273 1360 TAD RADIX /OTHERWISE RESET SCANP 845 01274 3106 DCA SCANP 846 01275 4422 PUSHJ 847 01276 0000 CNXT, 0 /CHRP OR CHRY 848 01277 5261 JMP CNJ 849 850 01300 0000 CSNB, 0 /SET # OF TIMES TO FIND 851 01301 1064 TAD N 852 01302 4444 NCHK 853 01303 7001 IAC /ASSUME 1 854 01304 7041 CIA 855 01305 3307 DCA CSN 856 01306 5700 JMP I CSNB 857 858 01307 0000 CSN, 0 /COUNTER 859 01310 0000 CST, 0 /TEMP SCANP 860 01311 0000 CSP, 0 /TEMP P 861 862 01312 0174 CHIRPY, CHRY-CHRP /POINTER TO Y COMMAND 863 01313 2014 CHIRP, CHRP /POINTER TO P COMMAND 864 865 866 /TECO - VERSION I 867 /SHEET 18 868 / 1 NOV 68 RBH 869 870 01314 4300 CHRR, JMS CSNB /COMMAND R 871 01315 4422 PUSHJ 872 01316 1200 CSCH /DO SEARCH PART 873 01317 1106 TAD SCANP /SAVE SCAN POINTER 874 01320 3300 DCA CSNB 875 01321 4450 QSKP /COUNT UP STRING 2 876 01322 1055 TAD SFAIL 877 01323 7710 SPA CLA 878 01324 5451 CLNCHK /FAILED, SET VALUE & EXIT 879 01325 1300 TAD CSNB /GET START OF STRING 2 880 01326 1113 TAD P /AND END OF STRING 1 881 01327 7040 CMA 882 01330 1106 TAD SCANP /FROM END OF STRING 2 883 01331 1311 TAD CSP /AND START OF STRING 1 884 01332 3307 DCA CSN /NET CHANGE IN BUFFER SIZE 885 01333 1311 TAD CSP /RESET 886 01334 3113 DCA P /TEXT POINTER 887 01335 1300 TAD CSNB /AND 888 01336 3106 DCA SCANP /COMMAND POINTER 889 01337 1307 TAD CSN 890 01340 4422 PUSHJ 891 01341 0713 ADJ /ADJUST BUFFER SIZE 892 01342 4422 PUSHJ /INSERT 893 01343 2354 CIL2 /STRING 2 894 01344 5451 CLNCHK /SET VALUE AND EXIT 895 896 897 898 /TECO - VERSION I 899 /SHEET 19 900 /10 OCT 68 RBH 901 902 01345 1377 CTLK, TAD (ORAD-DRAD) /COMMAND ^K 903 01346 1376 CTLD, TAD (DRAD) /COMMAND ^D 904 01347 3360 DCA RADIX 905 01350 1760 TAD I RADIX /FETCH 1000 OR 1750 906 01351 3775 DCA I (PRAD /TO "=" COMMAND 907 01352 2360 ISZ RADIX 908 01353 1760 TAD I RADIX /FETCH 10 OR 12 909 01354 3774 DCA I (PRAD+1 /TO "=" COMMAND 910 01355 1760 TAD I RADIX /FETCH 10 OR 12 911 01356 3773 DCA I (NMRBAS /TO NUMBER PROCESSOR 912 01357 4423 POPJ 913 914 01360 0000 RADIX, 0 /SHARED WITH SEARCH ROUTINES 915 916 01361 4444 CCMA, NCHK /COMMAND , 917 01362 4426 ERR /NUMBER FLAG NOT SET 918 01363 1064 TAD N /MOVE N TO M 919 01364 3063 DCA M 920 01365 3064 DCA N /AND CLEAR N 921 01366 7240 STA 922 01367 3056 DCA CFLG /SET COMMA FLAG 923 01370 4423 POPJ 924 925 926 01373 1407 PAGE 01374 1621 01375 1620 01376 3704 01377 5676 927 928 929 /TECO - VERSION J 930 /SHEET 20 931 /16 JAN 69 RBH 932 933 PAGE 6 934 935 /NUMBER PROCESSORS: 936 /COMMANDS B,F,H,Z,+,-,.,#,&,*,/,(,AND ) 937 938 01400 1065 NMBR, TAD CHAR /NUMBER FOUND IN COMMAND STRING 939 01401 1377 TAD (-60) 940 01402 3243 DCA NMT 941 01403 4444 NCHK /CHECK NUMBER FLAG 942 01404 5234 JMP NNEW /NOT UP, NEW OPERAND 943 01405 1244 TAD NP /MULTIPLY PREV DIGITS BY 10 944 01406 7425 MQLMUY 945 01407 0012 NMRBAS, 12 /CHANGE TO 10 FOR OCTAL RADIX 946 01410 7701 CLAMQA 947 01411 1243 NMR, TAD NMT 948 01412 3244 DCA NP /CURRENT NUMBER 949 01413 1244 TAD NP 950 01414 7410 NOPR, SKP /DISPATCH JUMP FOR OPERATOR 951 01415 7041 CIA 952 01416 1245 TAD NACC /CURRENT EXPRESSION VALUE 953 01417 3064 NRET, DCA N 954 01420 7240 CLA CMA /SET NUMBER FLAG 955 01421 3060 DCA NFLG 956 01422 3061 DCA OFLG /CLEAR OPERATOR FLAG 957 01423 4423 POPJ 958 959 01424 1112 CHRB, TAD B /COMMAND B 960 01425 5233 JMP NCOM 961 962 01426 4422 CHRH, PUSHJ /COMMAND H 963 01427 1424 CHRB 964 01430 4422 PUSHJ 965 01431 1361 CCMA /DO B AND , THEN Z 966 01432 1115 CHRZ, TAD ZZ /COMMAND Z 967 01433 3243 NCOM, DCA NMT /COMMON TO ALL NUMBER ROUTINES 968 01434 1061 NNEW, TAD OFLG /CHECK OPERATOR FLAG 969 01435 7640 SZA CLA /MIDDLE OF EXPRESSION? 970 01436 5211 JMP NMR /YES 971 01437 3245 DCA NACC /NO, CLEAR ACCUMULATOR 972 01440 1325 TAD NSKP /ASSUME + 973 01441 3214 DCA NOPR 974 01442 5211 JMP NMR 975 976 01443 0000 NMT, 0 /TEMP 977 01444 0000 NP, 0 /VALUE OF CURRENT NUMBER 978 01445 0000 NACC, 0 /VALUE OF EXPRESSION WITHOUT NP 979 980 981 /TECO - VERSION J 982 /SHEET 21 983 /23 MAR 69 RBH 984 985 01446 1113 CDOT, TAD P /COMMAND . 986 01447 5233 JMP NCOM 987 988 01450 4444 CPLS, NCHK /COMMAND + 989 01451 3064 DCA N 990 01452 1325 TAD NSKP 991 01453 3214 CMIP, DCA NOPR /COMMON TO ALL NUMERIC OPERATORS 992 01454 1064 TAD N 993 01455 3245 DCA NACC 994 01456 3244 DCA NP 995 01457 7240 STA /SET OPERATOR FLAG 996 01460 3061 DCA OFLG 997 01461 3060 DCA NFLG /CLEAR NUMBER FLAG 998 01462 4423 POPJ 999 1000 01463 4444 CMIN, NCHK /COMMAND - 1001 01464 3064 DCA N /UNARY MINUS 1002 01465 1376 TAD (NOP) 1003 01466 5253 JMP CMIP 1004 1005 01467 4444 CAST, NCHK /COMMAND * 1006 01470 5326 JMP CLINE /WANTS CURRENT LINE NUMBER 1007 01471 1177 TAD [-2] /MAKE MQLMUY 1008 01472 5275 JMP .+3 1009 01473 4444 CVIR, NCHK /COMMAND / 1010 01474 5324 JMP LLINE /WANTS LAST LINE NUMBER 1011 01475 1375 TAD (MQLDVI) 1012 01476 3314 DCA NMC 1013 01477 1374 TAD (JMP NMLDV) 1014 01500 5253 JMP CMIP 1015 1016 01501 1177 CAMP, TAD [-2] /COMMAND & 1017 01502 1373 CNBS, TAD (JMP NIOR) /COMMAND # 1018 01503 5253 JMP CMIP 1019 1020 01504 0245 NAND, AND NACC /BITWISE .AND. OF BINARY NUMBERS 1021 01505 5217 JMP NRET /KEEP THESE TWO OPNS TOGETHER 1022 01506 7040 NIOR, CMA /BITWISE .IOR. OF BINARY VALUES 1023 01507 0245 AND NACC /USE VENN DIAGRAM TO PROVE IT 1024 01510 1244 TAD NP 1025 01511 5217 JMP NRET 1026 1027 01512 3315 NMLDV, DCA NMC+1 /MUL & DIV OPNS 1028 01513 1245 TAD NACC /DIVIDE IS ONLY 12-BIT UNSIGNED 1029 01514 7425 NMC, MQLMUY /OR MQLDVI 1030 01515 0000 0 /MULTIPLIER OR DIVISOR 1031 01516 7701 CLAMQA /TRUNCATE 1032 01517 5217 JMP NRET 1033 1034 /TECO - VERSION J 1035 /SHEET 22 1036 /23 MAR 69 RBH 1037 1038 01520 4422 CHRF, PUSHJ /COMMAND F 1039 01521 1433 NCOM /MAKE A 0 1040 01522 4422 PUSHJ 1041 01523 1361 CCMA /DO 0 AND , THEN / 1042 01524 1115 LLINE, TAD ZZ /FIND LAST LINE # 1043 01525 7410 NSKP, SKP 1044 01526 1113 CLINE, TAD P /FIND CURRENT LINE # 1045 01527 7140 CMA CLL 1046 01530 1112 TAD B 1047 01531 3244 DCA NP 1048 01532 3243 DCA NMT 1049 01533 1112 TAD B 1050 01534 3120 DCA R /USE AUX BUFFER POINTERS 1051 01535 5344 JMP LINA2 1052 01536 4440 LINA1, GET 1053 01537 0120 R 1054 01540 1152 TAD APM12 /-LF 1055 01541 7650 SNA CLA /END OF LINE? 1056 01542 2243 ISZ NMT /YES, COUNT IT 1057 01543 2120 ISZ R 1058 01544 2244 LINA2, ISZ NP /FINISHED? 1059 01545 5336 JMP LINA1 /NO 1060 01546 5234 JMP NNEW /MAKE A NUMBER 1061 1062 01547 1061 COPR, TAD OFLG /COMMAND ( 1063 01550 7640 SZA CLA /SEE IF OPENING OF EXPRESSION 1064 01551 5354 JMP .+3 /NO 1065 01552 4422 PUSHJ /YES, SO CLEAN UP FIRST 1066 01553 1433 NCOM /RECURSION IS NICE! 1067 01554 1176 TAD [-3] /PUSH 3 QUANTITIES 1068 01555 4424 PUSHL 1069 01556 0064 N 1070 01557 1414 NOPR 1071 01560 1514 NMC 1072 01561 3243 DCA NMT 1073 01562 5252 JMP CMIP-1 /CLEAN OUT INSIDE PARENS 1074 1075 01563 1064 CCPR, TAD N /COMMAND ) 1076 01564 3243 DCA NMT 1077 01565 1176 TAD [-3] /POP 3 QUANTITIES FROM BEFORE 1078 01566 4425 POPL 1079 01567 1514 NMC 1080 01570 1414 NOPR 1081 01571 1445 NACC /OLD N 1082 01572 5211 JMP NMR /TREAT (...) AS A NUMBER 1083 1084 1085 01573 5306 PAGE 01574 5312 01575 7427 01576 7000 01577 7720 1086 1087 1088 /TECO - VERSION I 1089 /SHEET 23 1090 / 4 JUL 69 RBH 1091 1092 PAGE 7 1093 1094 /COMMANDS =,?, AND \ 1095 /NUMERICAL OUTPUTS & DISPATCH SORT 1096 1097 01600 0000 OPRNT, 0 /OCTAL PRINT 1098 01601 4242 JMS ZEROD 1099 01602 1000 ORAD, 1000 1100 01603 0010 10 1101 01604 4000 DECTYO, TPUT /TYPE OUT 1102 01605 5600 JMP I OPRNT 1103 1104 01606 4444 CEQL, NCHK /COMMAND = 1105 01607 4426 ERR /NO NUMBER 1106 01610 1204 TAD DECTYO /TYPE OUT 1107 01611 5215 JMP DPRNT 1108 1109 01612 4444 CBSL, NCHK /COMMAND \ 1110 01613 5777 JMP I (CBSN 1111 01614 1376 TAD (UPOC) 1112 01615 3222 DPRNT, DCA DECDEV 1113 01616 1064 TAD N 1114 01617 4242 JMS ZEROD 1115 01620 1750 PRAD, 1750 /OR 1000 AND 10 1116 01621 0012 12 /FOR OCTAL RADIX 1117 01622 0000 DECDEV, 0 1118 01623 4423 POPJ 1119 1120 01624 1067 CQSM, TAD TFLG /COMMAND ? 1121 01625 7040 CMA /CHANGE TRACE FLAG 1122 01626 3067 DCA TFLG 1123 01627 4423 POPJ 1124 1125 01630 0000 UPOC, 0 /MOVE TEXT BUFFER UP ONE CHAR 1126 01631 3200 DCA OPRNT 1127 01632 7201 CLA IAC 1128 01633 4422 PUSHJ 1129 01634 0715 UPPN 1130 01635 1200 TAD OPRNT 1131 01636 4441 PUT 1132 01637 0113 P 1133 01640 2113 ISZ P 1134 01641 5630 JMP I UPOC 1135 1136 1137 /TECO - VERSION J 1138 /SHEET 24 1139 /23 MAR 69 RBH 1140 1141 01642 0000 ZEROD, 0 /BINARY TO OCTAL OR DECIMAL 1142 01643 3312 DCA PTSAVE /CONVERSION WITH LEADING 1143 01644 7240 STA /ZEROS DELETED 1144 01645 3313 DCA LEADZ 1145 01646 1176 TAD [-3] /-MAX # OF DIGITS DELETED 1146 01647 3314 DCA ZCOUNT 1147 01650 1375 TAD (JMP I ZPNT) 1148 01651 3271 DCA ZSWT /SET LEADING-ZERO SWITCH 1149 01652 1642 TAD I ZEROD /GET 8^3 OR 10^3 1150 01653 3265 DCA DIV1 1151 01654 2242 ISZ ZEROD 1152 01655 1642 TAD I ZEROD /GET 8 OR 10 1153 01656 3301 DCA DIV2 1154 01657 2242 ISZ ZEROD 1155 01660 1642 TAD I ZEROD /GET POINTER TO ROUTINE WHICH 1156 01661 3315 DCA DEVOUT /GETS DIGITS WE MAKE HERE. 1157 01662 2242 ISZ ZEROD /BUMP RETURN POINTER 1158 01663 1312 ZAGAIN, TAD PTSAVE /GET NUMBER TO BE CONVERTED 1159 01664 7427 MQLDVI 1160 01665 0000 DIV1, 0 /SUCCESSIVELY REDUCED BY 8 OR 10 1161 01666 3312 DCA PTSAVE /RESIDUE 1162 01667 7701 CLAMQA 1163 01670 7450 SNA /IS DIGIT A ZERO? 1164 01671 5716 ZSWT, JMP I ZPNT /YES, SO JUMP THRU DISPATCH 1165 01672 2313 ISZ LEADZ /NO, IS IT FIRST NON-ZERO? 1166 01673 7410 SKP /NO 1167 01674 2271 ISZ ZSWT /YES, ALTER DISPATCH 1168 01675 1374 NLZ, TAD (60) /ADD CONSTANT TO MAKE ASCII 1169 01676 4715 JMS I DEVOUT /PUT OUT DIGIT 1170 01677 1265 LZ, TAD DIV1 /REDUCE DIVISOR 1171 01700 7427 MQLDVI 1172 01701 0000 DIV2, 0 1173 01702 7701 CLAMQA 1174 01703 3265 DCA DIV1 1175 01704 2314 ISZ ZCOUNT /ENOUGH DIGITS? 1176 01705 5263 JMP ZAGAIN /NO 1177 01706 1312 TAD PTSAVE /YES, PUT OUT UNITS DIGIT 1178 01707 1374 TAD (60) /ZERO ALWAYS PRINTS HERE 1179 01710 4715 JMS I DEVOUT /PUT IT OUT 1180 01711 5642 JMP I ZEROD /RETURN 1181 1182 01712 0000 PTSAVE, 0 1183 01713 7777 LEADZ, 7777 1184 01714 0000 ZCOUNT, 0 1185 01715 0000 DEVOUT, 0 1186 01716 1677 ZPNT, LZ 1187 01717 1675 NLZ 1188 1189 1190 /TECO - VERSION J 1191 /SHEET 25 1192 /21 APR 69 RBH 1193 1194 01720 0000 SORTB, 0 /R. MERRILL'S DISPATCH SORT 1195 01721 3071 DCA SCHAR /SAVE SORT CHAR 1196 01722 7240 STA 1197 01723 1720 TAD I SORTB /GET POINTER TO LIST 1198 01724 2320 ISZ SORTB 1199 01725 3016 DCA Z 16 1200 01726 1416 SORTA1, TAD I Z 16 /GET ITEM IN TEST LIST 1201 01727 7510 SPA /END MARKED BY NEG VALUE 1202 01730 5344 JMP SORTA2 /FELL OUT BOTTOM 1203 01731 7161 CIA STL 1204 01732 1071 TAD SCHAR 1205 01733 7640 SZA CLA /COMPARE SORT CHAR 1206 01734 5326 JMP SORTA1 /NOT IT. 1207 01735 1016 TAD Z 16 /GOT IT. NOW MAKE INDEX 1208 01736 1720 TAD I SORTB /TO JUMP TABLE 1209 01737 3350 DCA SORTC /THIS IS TABLE POINTER 1210 01740 1750 TAD I SORTC /GET JUMP ADDRESS FROM TABLE 1211 01741 3350 DCA SORTC /AND GO THERE 1212 01742 7300 CLA CLL 1213 01743 5750 JMP I SORTC 1214 01744 7300 SORTA2, CLA CLL /FELL OUT BOTTOM 1215 01745 2320 ISZ SORTB /SO CHARACTER NOT IN LIST 1216 01746 1071 TAD SCHAR /CARRY IT BACK TO 1217 01747 5720 JMP I SORTB /DO SOMETHING ELSE 1218 1219 01750 0000 SORTC, 0 1220 1221 01751 6011 SYS, RSF /SYSTEM INTERRUPT SKIP CHAIN 1222 01752 7410 SKP 1223 01753 5773 JMP I (RANSR /HIGH-SPEED PAPER TAPE 1224 01754 6021 PSF 1225 01755 7410 SKP 1226 01756 5772 JMP I (PANSR /HIGH-SPEED PUNCH 1227 01757 6041 TSF 1228 01760 7410 SKP 1229 01761 5771 JMP I (TANSR /TELEPRINTER 1230 01762 6031 KSF 1231 01763 7410 SKP 1232 01764 5536 JMP I KBISR /KEYBOARD 1233 01765 7000 NOP /PLACE TO CLEAR 1234 01766 7000 NOP /ANNOYING FLAGS 1235 01767 6114 6114 /LIKE ADC 1236 01770 5404 SCAT /UNIDENTIFED 1237 /FLOATING 1238 /INTERRUPT 1239 /YOU GOT TROUBLE 1240 1241 1242 01771 4015 PAGE 01772 5636 01773 5661 01774 0060 01775 5716 01776 1630 01777 5535 1243 1244 1245 /TECO - VERSION J 1246 /SHEET 26 1247 /24 MAR 69 RBH 1248 1249 PAGE 10 1250 1251 /COMMANDS ^V,P,T,V, AND W 1252 1253 02000 0000 NLINES, 0 /CONVERT 1254 02001 1113 TAD P /- OR + N LINES AROUND . 1255 02002 3063 DCA M /TO CHARS M,N 1256 02003 7240 STA 1257 02004 3060 DCA NFLG /SET NUMBER FLAG 1258 02005 4422 PUSHJ 1259 02006 1050 CHRL 1260 02007 1113 TAD P 1261 02010 3064 DCA N 1262 02011 1063 TAD M 1263 02012 3113 DCA P 1264 02013 5600 JMP I NLINES /RETURN 1265 1266 02014 1064 CHRP, TAD N /COMMAND P 1267 02015 4444 NCHK /HOW MANY PAGES? 1268 02016 7001 IAC /P MEANS 1P 1269 02017 7041 CIA 1270 02020 3200 DCA NLINES 1271 02021 4422 CPOA, PUSHJ 1272 02022 2037 CHRW /DO N 1273 02023 4422 PUSHJ 1274 02024 2210 CHRY 1275 02025 2200 ISZ NLINES 1276 02026 5221 JMP CPOA 1277 02027 4423 POPJ 1278 1279 02030 4422 CPOC, PUSHJ 1280 02031 1426 CHRH 1281 02032 4422 PUSHJ 1282 02033 2075 CTLV+2 /CLEAR COMMA & NUMBER FLAGS 1283 02034 1145 TAD OUTLST /PUT OUT A FORM FEED 1284 02035 5262 JMP CWOUT /AND POP FROM W ROUTINE 1285 1286 1287 /TECO - VERSION J 1288 /SHEET 27 1289 /24 MAR 69 RBH 1290 1291 02036 1377 CHRT, TAD (TYPE-OUTPUT) /COMMAND T 1292 02037 1376 CHRW, TAD (OUTPUT) /COMMAND W 1293 02040 3262 DCA CWOUT 1294 02041 4444 NCHK /ANY ARGS? 1295 02042 5230 JMP CPOC /NO, DO WHOLE BUFFER 1296 02043 4445 CCHK 1297 02044 5250 JMP .+4 /+N OR -N LINES AROUND . 1298 02045 4422 PUSHJ 1299 02046 1134 LINES /CONVERT LINES TO CHARS 1300 02047 7410 SKP 1301 02050 4200 JMS NLINES 1302 02051 3060 CWOA, DCA NFLG /CLEAR NUMBER FLAG 1303 02052 4422 PUSHJ 1304 02053 3075 MFROMN /COMPUTE N-M 1305 02054 7650 CSNCL, SNA CLA /LOCATION USED AS CONSTANT 1306 02055 4423 POPJ /NOTHING TO PUT OUT 1307 02056 1063 TAD M /STARTING CHAR 1308 02057 3116 DCA Q 1309 02060 4440 CWOB, GET 1310 02061 0116 Q 1311 02062 0000 CWOUT, 0 /TYPE, OUTPUT, CTVTYP, OR QPUT 1312 02063 2116 ISZ Q 1313 02064 1116 TAD Q 1314 02065 7140 CMA CLL 1315 02066 1064 TAD N 1316 02067 7630 SZL CLA /DONE? 1317 02070 5260 JMP CWOB /NO 1318 02071 4423 POPJ 1319 1320 02072 1375 CHRV, TAD (TYPE-CTVTYP) /COMMAND V 1321 02073 1374 CTLV, TAD (CTVTYP) /COMMAND ^V 1322 02074 3262 DCA CWOUT 1323 02075 4445 CCHK 1324 02076 7410 SKP 1325 02077 5251 JMP CWOA /TYPE CHARS M+1 THRU N 1326 02100 1064 TAD N 1327 02101 4444 NCHK 1328 02102 7240 STA /V MEANS -1V 1329 02103 1113 TAD P 1330 02104 4446 BZCHK /SEE IF B<#,?,@ 1379 02151 7540 SMA SZA 1380 02152 5355 JMP SCHS /ARE 1381 02153 1366 TAD (12) /1,2,3,4,5,6,7,8,9,0 AREN'T 1382 02154 7041 CIA 1383 02155 7710 SCHS, SPA CLA /EVERYTHING ELSE IS SEPARATOR 1384 02156 7240 SCHF, STA /LETTERS AND NUMBERS COME HERE 1385 02157 5733 JMP I SCHSRT /TEST AC FOR 0 OR NOT-0 1386 1387 1388 02166 0012 PAGE 02167 0007 02170 0032 02171 7605 02172 1206 02173 1212 02174 4436 02175 7776 02176 4500 02177 7734 1389 1390 1391 /TECO - VERSION I 1392 /SHEET 29 1393 /12 NOV 68 RBH 1394 1395 PAGE 11 1396 1397 /COMMANDS A,I, AND Y 1398 1399 02200 4444 CHRA, NCHK /COMMAND A 1400 02201 7410 SKP /APPEND TO BUFFER 1401 02202 5777 JMP I (CHNA /(N)A:ASCII VALUE OF CHAR AT (N) 1402 02203 1113 TAD P 1403 02204 3237 DCA CAPP /SAVE CURRENT P 1404 02205 1115 TAD ZZ /APPEND AT END OF BUFFER 1405 02206 3113 DCA P 1406 02207 5226 JMP CALP-3 1407 1408 02210 1064 CHRY, TAD N /COMMAND Y 1409 02211 4444 NCHK 1410 02212 7001 IAC /ASSUME 1 1411 02213 7041 CIA 1412 02214 3364 DCA CISP 1413 02215 4422 COYA, PUSHJ 1414 02216 1045 CKALL /KILL BUFFER 1415 02217 1112 TAD B 1416 02220 3237 DCA CAPP /SAVE B AS P 1417 02221 4422 PUSHJ 1418 02222 2226 CALP-3 1419 02223 2364 ISZ CISP /DONE? 1420 02224 5215 JMP COYA /NO 1421 02225 4423 POPJ 1422 02226 1115 TAD ZZ 1423 02227 7041 CIA 1424 02230 3240 DCA CYMZ /SAVE -CURRENT END 1425 02231 4472 CALP, INPUT /CALL INPUT ROUTINE 1426 02232 4427 SORT 1427 02233 0137 APPLST 1428 02234 4766 APPTAB-APPLST 1429 02235 4776 CANP, JMS I (UPOC /PUT IT AWAY 1430 02236 5231 JMP CALP 1431 1432 02237 0000 CAPP, 0 /TEMP P 1433 02240 0000 CYMZ, 0 /-CURRENT END OF TEXT BUFF 1434 1435 /TECO - VERSION J 1436 /SHEET 30 1437 /16 JAN 69 RBH 1438 1439 02241 1131 APSP, TAD YFLG /APPENDING A SPACE 1440 02242 7650 SNA CLA /EXPAND MODE? 1441 02243 5303 JMP APHT /YES, TAKE IT 1442 02244 3274 DCA SPCNT /ZERO SPACE COUNTER 1443 02245 2274 ISZ SPCNT 1444 02246 4472 INPUT 1445 02247 1375 TAD (-40) 1446 02250 7450 SNA /ANOTHER SPACE? 1447 02251 5245 JMP .-4 /YES 1448 02252 7240 STA /NO, COMPUTE TABS 1449 02253 1274 TAD SPCNT 1450 02254 7450 SNA /MORE THAN 1 SPACE? 1451 02255 5271 JMP APSP2 /NO, TAKE IN SPACE 1452 02256 7427 MQLDVI 1453 02257 0010 INHTC, 10 /TAB INCREMENT 1454 02260 7701 CLAMQA 1455 02261 7040 CMA /-(#TABS+1) 1456 02262 3274 DCA SPCNT 1457 02263 1150 TAD CAHT /TAB 1458 02264 4776 JMS I (UPOC 1459 02265 2274 ISZ SPCNT 1460 02266 5263 JMP .-3 1461 02267 1073 APSP1, TAD ICHAR 1462 02270 5232 JMP CALP+1 1463 1464 1465 02271 1143 APSP2, TAD CASP 1466 02272 4776 JMS I (UPOC /APPEND THE SPACE 1467 02273 5267 JMP APSP1 /AND CHAR FOLLOWING 1468 1469 02274 0000 SPCNT, 0 1470 1471 1472 /TECO - VERSION J 1473 /SHEET 31 1474 /24 MAR 69 RBH 1475 1476 02275 1073 APCR, TAD ICHAR /INPUT CHAR 1477 02276 4776 JMS I (UPOC 1478 02277 1146 TAD CALF /INSERT LF 1479 02300 5235 JMP CANP 1480 02301 1144 APRO, TAD OUTLST-1 /IDLE 1481 02302 5235 JMP CANP 1482 02303 1073 APHT, TAD ICHAR /INPUT CHAR 1483 02304 5235 JMP CANP 1484 1485 02305 1374 APLF, TAD (-APMAX) /SEE IF BUFFER NEARLY FULL 1486 02306 1115 TAD ZZ 1487 02307 7630 SZL CLA /SORT LEAVES LINK=0 1488 02310 5315 JMP CAFF /NEARLY FULL, TERMINATE 1489 02311 4472 INPUT /LOOK AT NEXT CHAR 1490 02312 1152 TAD APM12 /IS IT ANOTHER LF? 1491 02313 7640 SZA CLA /EXPN MODE PUTS OUT LF'S FOR FF 1492 02314 5267 JMP APSP1 /NO, GO PROCESS 1493 02315 1240 CAFF, TAD CYMZ /COMPARE PREVIOUS END 1494 02316 1115 TAD ZZ /WITH PRESENT 1495 02317 7650 SNA CLA /DIFFERENT? 1496 02320 5231 JMP CALP /NO, SO NOTHING CAME IN 1497 02321 1237 TAD CAPP /YES, RESTORE POINTER 1498 02322 3113 DCA P 1499 02323 1076 TAD RUNIT /LOOK OUT FOR TTY 1500 02324 7001 IAC 1501 02325 7001 IAC 1502 02326 7640 SZA CLA /TTY CODE IS -2 1503 02327 4423 POPJ /NOT TTY 1504 02330 5773 JMP I (KBHANG /TTY. DON'T CLEAR FLAG NOW 1505 1506 1507 1508 1509 /TECO - VERSION I 1510 /SHEET 32 1511 / 8 OCT 68 RBH 1512 1513 02331 4444 CHRI, NCHK /I COMMAND 1514 02332 5337 JMP CIL1 1515 02333 1064 TAD N /INSERT CHAR WHOSE VALUE IS N 1516 02334 0135 AND MASK 1517 02335 4776 JMS I (UPOC 1518 02336 4423 POPJ 1519 02337 4447 CIL1, QCHK /SEE IF QUOTED STRING 1520 02340 1106 TAD SCANP 1521 02341 3364 DCA CISP /SAVE SCAN POINTER 1522 02342 4450 QSKP /COUNT LENGTH OF INSERTION 1523 02343 1364 TAD CISP 1524 02344 7040 CMA 1525 02345 1106 TAD SCANP 1526 02346 7450 SNA /ANYTHING TO INSERT? 1527 02347 5765 JMP I QUOTAB /NO, RESTORE ALTM AS TERMINATOR 1528 02350 4422 PUSHJ /YES, OPEN A HOLE 1529 02351 0715 UPPN 1530 02352 1364 TAD CISP /RESET TO BEGINNING OF INSERTION 1531 02353 3106 DCA SCANP 1532 02354 4431 CIL2, SCAN /STICK CHARS INTO BUFFER 1533 02355 4427 SORT 1534 02356 3227 QUOTE 1535 02357 7136 QUOTAB-QUOTE 1536 02360 4441 PUT 1537 02361 0113 P 1538 02362 2113 ISZ P /POINTER WINDS UP AT END 1539 02363 5354 JMP CIL2 /OF INSERTION 1540 1541 02364 0000 CISP, 0 1542 02365 3277 QUOTAB, IREST 1543 02366 3277 IREST 1544 1545 1546 02373 3234 PAGE 02374 2420 02375 7740 02376 1630 02377 2757 1547 1548 1549 /TECO - VERSION J 1550 /SHEET 33 1551 /24 MAR 69 RBH 1552 1553 PAGE 12 1554 1555 /COMMANDS <,>,; AND PART OF COMMAND DISPATCH TABLE 1556 1557 02400 1176 CHLT, TAD [-3] /COMMAND < 1558 02401 4424 PUSHL 1559 02402 0066 ITRST 1560 02403 2470 ITRFIN 1561 02404 2471 ITRCNT 1562 02405 1064 TAD N 1563 02406 4444 NCHK /CHECK FOR ARG 1564 02407 7200 CLA 1565 02410 7041 CIA /MAKE NEGATIVE 1566 02411 3271 DCA ITRCNT /SET UP TERMINATION 1567 02412 1106 TAD SCANP /SAVE CURRENT SCAN PNTR 1568 02413 3066 DCA ITRST /ALWAYS .GE. 1 IN ITERATION 1569 02414 4423 POPJ 1570 1571 02415 1106 CHGT, TAD SCANP /COMMAND > 1572 02416 3270 DCA ITRFIN /SET UP QUICK EXIT 1573 02417 2271 ISZ ITRCNT /LOOK FOR COUNT EXHAUSTED 1574 02420 5231 JMP CGTC /NO, CONTINUE 1575 02421 7440 CGSG, SZA /SCAN POINTER? 1576 02422 3106 DCA SCANP /YES, CATCH UP 1577 02423 1176 TAD [-3] 1578 02424 4425 POPL 1579 02425 2471 ITRCNT 1580 02426 2470 ITRFIN 1581 02427 0066 ITRST 1582 02430 4423 POPJ 1583 02431 1066 CGTC, TAD ITRST 1584 02432 7450 SNA 1585 02433 4426 ERR /IF NOT IN ITERATION 1586 02434 3106 DCA SCANP /RESET TO BEGINNING OF ITERATION 1587 02435 4423 POPJ 1588 1589 1590 /TECO - VERSION I 1591 /SHEET 34 1592 / 4 NOV 68 RBH 1593 1594 02436 1066 CSEM, TAD ITRST /COMMAND ; 1595 02437 7650 SNA CLA 1596 02440 4426 ERR /IF NOT IN ITERATION 1597 02441 1064 TAD N 1598 02442 4444 NCHK 1599 02443 5247 JMP CSMF 1600 02444 7710 SPA CLA 1601 02445 4423 POPJ 1602 02446 5251 JMP .+3 1603 02447 2055 CSMF, ISZ SFAIL /CHECK FOR TERMINATION 1604 02450 4423 POPJ /NO 1605 02451 1270 TAD ITRFIN /LOOK FOR QUICK EXIT 1606 02452 7440 SZA 1607 02453 5221 JMP CGSG /YES, DUCK OUT 1608 02454 4443 SKPSET /NO, PLOD THROUGH 1609 02455 0076 76 /LOOKING FOR > 1610 02456 2421 CGSG /GO THERE WHEN FOUND 1611 02457 4426 ERR /OOPS! RAN OFF END 1612 1613 02460 4431 SCAN /SKIP ^U COMMAND 1614 02461 7610 SKP CLA /GET RID OF Q-REG # 1615 02462 4450 QSKP /SKIP AN R COMMAND 1616 02463 4450 CSMQ, QSKP /SKIP OVER QUOTED STRING 1617 02464 4422 PUSHJ 1618 02465 3277 IREST /FIX UP QUOTE CHAR 1619 02466 5667 JMP I .+1 /OK, PLOD FORWARD SOME MORE 1620 02467 4716 CSMK /STRING SKIP ROUTINE 1621 1622 02470 0000 ITRFIN, 0 /QUICK EXIT LOCATION 1623 02471 0000 ITRCNT, 0 /ITERATION COUNTER 1624 1625 1626 /TECO - VERSION I 1627 /SHEET 35 1628 /27 OCT 68 RBH 1629 1630 /COMMAND DISPATCH TABLE - OVERLAPS ONTO PAGE 13 1631 1632 02472 4340 CDSP, POPK; CTLA; CTLB; CTLC; CTLD; SERR; CTLF; CTLG /0-7 02473 3000 02474 3001 02475 3660 02476 1346 02477 0133 02500 3200 02501 3643 1633 02502 4340 POPK; ECHO; ECHO; CTLK; ECHO; ECHO; SERR; SERR /10-17 02503 3012 02504 3012 02505 1345 02506 3012 02507 3012 02510 0133 02511 0133 1634 02512 0133 SERR; SERR; SERR; SERR; CTLT; CTLU; CTLV; SERR /20-27 02513 0133 02514 0133 02515 0133 02516 3121 02517 2632 02520 2073 02521 0133 1635 02522 0133 SERR; SERR; SERR; CALT; SERR; CTBR; CTUA; SERR /30-37 02523 0133 02524 0133 02525 4225 02526 0133 02527 3600 02530 3202 02531 0133 1636 02532 3012 ECHO; CEXP; CDBQ; CNBS; CALT; CPCS; CAMP; CSGQ /40-47 02533 3116 02534 5410 02535 1502 02536 4225 02537 4514 02540 1501 02541 5430 1637 02542 1547 COPR; CCPR; CAST; CPLS; CCMA; CMIN; CDOT; CVIR /50-57 02543 1563 02544 1467 02545 1450 02546 1361 02547 1463 02550 1446 02551 1473 1638 02552 1400 NMBR; NMBR; NMBR; NMBR; NMBR; NMBR; NMBR; NMBR /60-67 02553 1400 02554 1400 02555 1400 02556 1400 02557 1400 02560 1400 02561 1400 1639 02562 1400 NMBR; NMBR; CCLN; CSEM; CHLT; CEQL; CHGT; CQSM /70-77 02563 1400 02564 3231 02565 2436 02566 2400 02567 1606 02570 2415 02571 1624 1640 02572 3220 CATS; CHRA; CHRB; CHRC; CHRD; CHRE; CHRF; CHRG /100-107 02573 2200 02574 1424 02575 1004 02576 1013 02577 3036 02600 1520 02601 4245 1641 02602 1426 CHRH; CHRI; CHRJ; CHRK; CHRL; CHRM; CHRN; CHRO /110-117 02603 2331 02604 1000 02605 1123 02606 1050 02607 4200 02610 1255 02611 4600 1642 02612 2014 CHRP; CHRQ; CHRR; CHRS; CHRT; CHRU; CHRV; CHRW /120-127 02613 4466 02614 1314 02615 1250 02616 2036 02617 4476 02620 2072 02621 2037 1643 02622 4522 CHRX; CHRY; CHRZ; SERR; CBSL; SERR; CHUA; CHBA /130-137 02623 2210 02624 1432 02625 0133 02626 1612 02627 0133 02630 3023 02631 1254 1644 /END OF DISPATCH TABLE 1645 1646 1647 /TECO - VERSION I 1648 /SHEET 36 1649 /22 NOV 68 RBH 1650 1651 /COMMAND ^U 1652 1653 02632 4452 CTLU, QREF /COMMAND ^U 1654 02633 3302 DCA CCUQ /SAVE Q-REG POINTER 1655 02634 4447 QCHK /SEE IF QUOTED 1656 02635 1106 TAD SCANP 1657 02636 3303 DCA CCUS /SAVE SCAN POINTER 1658 02637 4450 QSKP /COUNT UP STRING 1659 02640 1303 TAD CCUS 1660 02641 7040 CMA 1661 02642 1106 TAD SCANP /LENGTH OF STRING 1662 02643 7450 SNA 1663 02644 5273 JMP CCUC /NO STRING 1664 02645 3301 DCA CCUN 1665 02646 1702 TAD I CCUQ /# OF CHAR ALREADY THERE 1666 02647 7041 CIA 1667 02650 1301 TAD CCUN /DIFFERENCE 1668 02651 7450 SNA 1669 02652 5255 JMP CCUA /NO DIFFERENCE 1670 02653 4422 PUSHJ /ADJUST TO HOLD 1671 02654 4306 QADJ /NEW STRING 1672 02655 1301 CCUA, TAD CCUN /LENGTH OF NEW STRING 1673 02656 3702 DCA I CCUQ 1674 02657 4453 QSUM 1675 02660 3124 DCA QR 1676 02661 1303 TAD CCUS /RESET SCAN POINTER 1677 02662 3106 DCA SCANP 1678 02663 4431 CCUB, SCAN 1679 02664 4427 SORT 1680 02665 3227 QUOTE 1681 02666 7136 QUOTAB-QUOTE 1682 02667 4441 PUT 1683 02670 0124 QR 1684 02671 2124 ISZ QR 1685 02672 5263 JMP CCUB 1686 1687 02673 1702 CCUC, TAD I CCUQ /DELETE C(Q-REG) 1688 02674 7041 CIA 1689 02675 4422 PUSHJ 1690 02676 4306 QADJ 1691 02677 3702 DCA I CCUQ /SET LENGTH TO 0 1692 02700 5777 JMP I (IREST /RESTORE STRING TERM & POP 1693 1694 02701 0000 CCUN, 0 /LENGTH OF STRING 1695 02702 0000 CCUQ, 0 /POINTER TO Q-REG 1696 02703 0000 CCUS, 0 /TEMP SCANP 1697 1698 1699 /TECO - VERSION I 1700 /SHEET 37 1701 /10 OCT 68 RBH 1702 1703 02704 0000 TYPCTL, 0 /ADD ^ TO CTRL CHARS 1704 02705 1065 TAD CHAR 1705 02706 4427 SORT 1706 02707 0147 CACR 1707 02710 2702 CTLTAB-CACR 1708 02711 1376 TAD (-40) /SEPARATE CTRL CHARS 1709 02712 7510 SPA /IS IT CTRL CHAR? 1710 02713 5317 JMP .+4 /YES 1711 02714 1143 TYCTL1, TAD CASP 1712 02715 4434 TYPE 1713 02716 5704 JMP I TYPCTL 1714 02717 1375 TAD (100) /CONVERT TO UC LETTER 1715 02720 3301 DCA CCUN /SAVE IT 1716 02721 1374 TAD (136) /TYPE THE ^ 1717 02722 4434 TYPE 1718 02723 1301 TAD CCUN 1719 02724 5314 JMP TYCTL1 /NOW ADD BACK IN 40 1720 1721 02725 4437 CTLCR, CRLF 1722 02726 5704 JMP I TYPCTL 1723 1724 02727 1151 CTLALT, TAD CAAM /44=33+11 1725 02730 1150 CTLHT, TAD CAHT /11 1726 02731 5315 JMP TYCTL1+1 1727 1728 02732 0000 ERRXX, 0 1729 02733 3303 DCA CCUS /SAVE C(AC) 1730 02734 4437 CRLF 1731 02735 4435 CTLTYP 1732 02736 1373 TAD (72) /: SEPARATOR 1733 02737 4434 TYPE 1734 02740 7240 STA 1735 02741 1332 TAD ERRXX /GET TRAP ADDRESS 1736 02742 4772 JMS I (OPRNT /TYPE IN OCTAL 1737 02743 1371 TAD (57) //SEPARATOR 1738 02744 4434 TYPE 1739 02745 1303 TAD CCUS /GET C(AC) 1740 02746 4772 JMS I (OPRNT /TYPE IN OCTAL 1741 02747 1370 RECOUP, TAD (77) /? ERROR FLAG 1742 02750 4434 TYPE 1743 02751 4433 LISTEN /SEE WHAT HE WANTS TO DO 1744 02752 4427 SORT 1745 02753 5516 RECLST 1746 02754 5704 RECTAB-RECLST 1747 02755 7200 CLA /DEFAULT: NOTHING 1748 02756 5767 JMP I (T1 /RESTART COMMAND LINE 1749 1750 1751 /TECO - VERSION J 1752 /SHEET 38 1753 /21 APR 69 RBH 1754 1755 02757 1064 CHNA, TAD N /ASCII VALUE OF CHAR AT N 1756 02760 4446 BZCHK /MAKE SURE IN BUFFER 1757 02761 3120 DCA R 1758 02762 4440 GET 1759 02763 0120 R 1760 02764 5766 JMP I (NCOM /MAKE IT A NUMBER 1761 1762 1763 1764 02766 1433 PAGE 02767 0207 02770 0077 02771 0057 02772 1600 02773 0072 02774 0136 02775 0100 02776 7740 02777 3277 1765 1766 1767 /TECO - VERSION I 1768 /SHEET 39 1769 / 4 NOV 68 RBH 1770 1771 PAGE 14 1772 1773 /COMMANDS ^A,^B,HT,LF,FF,CR,^T,SPACE,!,E, AND ^ 1774 1775 03000 1377 CTLA, TAD (TYPE-OUTPUT) /COMMAND ^A 1776 03001 1376 CTLB, TAD (OUTPUT) /COMMAND ^B 1777 03002 3210 DCA CTLB2 1778 03003 4447 QCHK /SEE IF QUOTED 1779 03004 4431 CTLB1, SCAN /GET A CHARACTER 1780 03005 4427 SORT 1781 03006 3227 QUOTE /SEE IF END 1782 03007 7136 QUOTAB-QUOTE 1783 03010 5210 CTLB2, JMP . /TYPE OR OUTPUT 1784 03011 5204 JMP CTLB1 /GET ANOTHER 1785 1786 03012 1127 ECHO, TAD KFLG /COMMANDS CR,LF,HT,FF & SPACE 1787 03013 7650 SNA CLA /TURNED ON? 1788 03014 4423 POPJ /NO 1789 03015 1067 TAD TFLG /TRACE MODE ON? 1790 03016 7640 SZA CLA 1791 03017 4423 POPJ /YES, DON'T REPEAT 1792 03020 1065 TAD CHAR /GET THE COMMAND 1793 03021 4434 TYPE /NOTE: THIS ISN'T CTLTYP 1794 03022 4423 POPJ 1795 1796 03023 4421 CHUA, POP /COMMAND ^ 1797 03024 7200 CLA /MAKE NEXT LETTER A CTRL CHAR 1798 03025 4422 PUSHJ 1799 03026 3030 CHUA1 /CONVERSION ROUTINE 1800 03027 5775 JMP I (T6A /GO BACK TO COMM EXEC 1801 1802 03030 4431 CHUA1, SCAN 1803 03031 1374 TAD (-100) /LOWER CASE BARELY ACCEPTABLE 1804 03032 7510 SPA 1805 03033 4426 ERR /WASN'T LETTER AT ALL 1806 03034 0373 AND (37) /MASK IT 1807 03035 4423 POPJ 1808 1809 03036 4431 CHRE, SCAN /COMMAND E 1810 03037 0372 AND (137) /MASK OUT LC BIT 1811 03040 4427 SORT 1812 03041 3204 ENBLST 1813 03042 0272 ENBTAB-ENBLST 1814 03043 4426 ERR /NO SUCH COMMAND 1815 1816 1817 /TECO - VERSION J 1818 /SHEET 40 1819 /16 JAN 69 RBH 1820 1821 03044 4104 OUTTAB, OUTFF /DISPATCH TABLE FOR XFIX 1822 03045 4077 OUTLF 1823 03046 4074 OUTCR 1824 03047 4121 OUTHT 1825 03050 1744 SORTA2 /ALTM--NO CHANGE 1826 1827 03051 2725 CTLTAB, CTLCR /DISPATCH TABLE FOR CTLTYP 1828 03052 2730 CTLHT 1829 03053 2727 CTLALT 1830 1831 03054 0000 QPUTS, 0 /Q-REGISTER STUFFER 1832 03055 4441 PUT 1833 03056 0122 QP 1834 03057 2122 ISZ QP 1835 03060 5654 JMP I QPUTS 1836 1837 03061 0000 TYO, 0 /TELETYPE STUFFER 1838 03062 4771 JMS I (XFIX /TWIDDLE SOME CTRL CHARS 1839 03063 4000 TPUT /ACTUAL OUTPUT ROUTINE 1840 03064 0000 0 /CHAR COUNT ON LINE 1841 03065 7712 -66 /LINE COUNT, 54[10] IN 9 INCHES 1842 03066 5661 JMP I TYO 1843 1844 03067 0000 PCO, 0 /PUNCH STUFFER 1845 03070 4771 JMS I (XFIX /TWIDDLE THE CTRL CHARS 1846 03071 5600 PPUT /PUNCH OUTPUT ROUTINE 1847 03072 0000 0 /CHAR COUNT 1848 03073 7712 -66 /LINE COUNT 1849 03074 5667 JMP I PCO 1850 1851 03075 1064 MFROMN, TAD N /COMPUTE N-M 1852 03076 4446 BZCHK /SEE IF N OK 1853 03077 7300 CLA CLL /OK 1854 03100 1063 TAD M 1855 03101 4446 BZCHK /SEE IF M OK 1856 03102 7141 CIA CLL 1857 03103 1064 TAD N 1858 03104 7430 SZL /IS M>N? 1859 03105 4423 POPJ /NO, SO CARRY BACK DIFF 1860 03106 7200 CLA /YES, INTERCHANGE 1861 03107 1064 TAD N /AND RECOMPUTE 1862 03110 3254 DCA QPUTS 1863 03111 1063 TAD M 1864 03112 3064 DCA N 1865 03113 1254 TAD QPUTS 1866 03114 3063 DCA M 1867 03115 5300 JMP MFROMN+3 /DO IT OVER 1868 1869 1870 /TECO - VERSION J 1871 /SHEET 41 1872 /16 JAN 69 RBH 1873 1874 03116 4447 CEXP, QCHK /COMMAND ! 1875 03117 4450 QSKP /PASS OVER HERE 1876 03120 4423 POPJ /RESUME EXECUTION 1877 1878 03121 4336 CTLT, JMS TTYIN /COMMAND ^T 1879 03122 4436 CTVTYP /ECHO CHAR TYPED IN 1880 03123 1073 TAD ICHAR /GET IT BACK 1881 03124 5770 JMP I (NCOM /MAKE IT A NUMBER 1882 1883 03125 0000 CHKQF, 0 /CHECK FOR EXPLICIT QUOTES 1884 03126 1062 TAD QFLG 1885 03127 7650 SNA CLA 1886 03130 5725 JMP I CHKQF /FLAG NOT SET 1887 03131 4431 SCAN /GET QUOTING CHAR 1888 03132 3767 DCA I (QUOTE /PUT INTO SEARCH TABLE 1889 03133 1767 TAD I (QUOTE 1890 03134 3766 DCA I (QUOTE+1 /ALSO FIX OUT DOLLAR SIGN 1891 03135 5725 JMP I CHKQF 1892 1893 03136 0000 TTYIN, 0 /TO APPEND FROM TTY READER 1894 03137 4433 LISTEN 1895 03140 3073 DCA ICHAR /DEPOSIT AS INPUT CHAR 1896 03141 1073 TAD ICHAR 1897 03142 5736 JMP I TTYIN 1898 1899 03143 3440 COMTAB, TBEL /DISPATCH TABLE FOR COMMAND EDIT 1900 03144 5432 TCRLF 1901 03145 0322 ROCMND 1902 03146 3512 TLOWER 1903 03147 3515 TUPPER 1904 03150 3436 TCTLC 1905 03151 0253 TALTM 1906 03152 0253 TALTM 1907 03153 0253 TALTM 1908 03154 0307 TQMK 1909 1910 1911 1912 03166 3230 PAGE 03167 3227 03170 1433 03171 4052 03172 0137 03173 0037 03174 7700 03175 0267 03176 4500 03177 7734 1913 1914 1915 /TECO - VERSION J 1916 /SHEET 42 1917 /24 MAR 69 RBH 1918 1919 PAGE 15 1920 1921 /COMMANDS ^F,^^,: AND @ 1922 1923 03200 7604 CTLF, CLA OSR /COMMAND ^F 1924 03201 5676 JMP I IREST-1 /VALUE OF SWITCH REG. 1925 1926 03202 4431 CTUA, SCAN /COMMAND ^^ 1927 03203 5676 JMP I IREST-1 /VALUE OF FOLL. CHAR 1928 1929 /E COMMAND MODIFIERS: 1930 03204 0111 ENBLST, 111 /I: SET INPUT MODE 1931 03205 0117 117 /O: SET OUTPUT MODE 1932 03206 0124 124 /T: WRITE GROUP MARK 1933 03207 0106 106 /F: WRITE FILE MARK 1934 03210 0115 115 /M: SET ECHO MODE 1935 03211 0113 113 /K: KILL ECHO MODE 1936 03212 0122 ESKLST, 122 /R: OPEN INPUT FILE 1937 03213 0127 127 /W: OPEN OUTPUT FILE 1938 03214 7777 7777 /FOR EXPANSION 1939 03215 7777 7777 /FOR EXPANSION 1940 03216 7777 7777 1941 03217 7777 7777 1942 1943 03220 7240 CATS, STA /COMMAND @ 1944 03221 3062 DCA QFLG /NEXT STRING WILL BE 1945 03222 4423 POPJ /QUOTED 1946 1947 /SEARCH STRING MODIFIERS: 1948 03223 0016 SCHLST, 16 /^N: ANYTHING BUT 1949 03224 0021 21 /^Q: LITERALLY 1950 03225 0023 23 /^S: ANY SEPARATOR 1951 03226 0030 30 /^X: ANYTHING 1952 03227 0033 QUOTE, 33 /ALTM OR QUOTE CHAR 1953 03230 0044 44 /$ OR QUOTE CHAR 1954 1955 03231 7240 CCLN, STA /COMMAND : 1956 03232 3057 DCA CLNF /NEXT SEARCH WILL HAVE 1957 03233 4423 POPJ /NUMERIC VALUE 1958 1959 1960 /TECO - VERSION I 1961 /SHEET 43 1962 / 4 DEC 68 RBH 1963 1964 03234 1377 KBHANG, TAD (.+3) /USING TTY AS INPUT DEVICE 1965 03235 3136 DCA KBISR /CAN'T CLEAR FLAG BECAUSE 1966 03236 5236 JMP . /READER KEEPS GOING 1967 / 1968 /THE FOLLOWING ROUTINE IS EXECUTED WITH 1969 /INTERRUPT OFF. IT IS CALLED WHEN A FORM FEED OR OTHER 1970 /EQUIVALENT DELIMITER HAS BEEN APPENDED FROM THE 1971 /TELETYPE READER. THE CHARACTER IMMEDIATELY FOLLOWING 1972 /THE DELIMITER IS LOST, BUT IT IS USUALLY NOT 1973 /SIGNIFICANT ANYWAY. 1974 / 1975 03237 6034 KRS /READ TTI BUFFER 1976 03240 1376 TAD (-220) /UNTIL ^P SHOWS UP 1977 03241 7640 SZA CLA /FLAG STAYS SET 1978 03242 5404 SCAT /BUT OTHER DEVICES CAN GO 1979 03243 1375 TAD (KANSR) /BECAUSE TTY IS END OF SKIP CHAIN 1980 03244 3136 DCA KBISR /GOT ^P SO RESTORE ISR 1981 03245 6032 KCC /WHEW! 1982 03246 6001 ION /BREAK AWAY FROM JMP . ABOVE 1983 03247 4423 POPJ /DON'T RESPOND TO ^P 1984 1985 03250 0102 102 /B: BRIEF 1986 03251 0130 130 /X: EXPANDED 1987 03252 7201 EIN, CLA IAC /TERMINATES LIST 1988 03253 1374 EOUT, TAD (DCA XFLG) /COMPUTE INSTRUCTION 1989 03254 3267 DCA EIO 1990 03255 4422 PUSHJ 1991 03256 3030 CHUA1 /CLEAR CASE AND ALPHA BITS 1992 03257 1373 TAD (100) /RESTORE ALPHA 1993 03260 4427 SORT 1994 03261 3250 EIN-2 /B OR X 1995 03262 0014 .+2-EIN+2 /ABOUT 12[8] 1996 03263 4426 ERR /INCOMPLETE COMMAND 1997 03264 3266 .+2 1998 03265 3267 .+2 1999 03266 7240 STA 2000 03267 5267 EIO, JMP . /DCA XFLG OR DCA YFLG 2001 03270 4423 POPJ 2002 2003 2004 /TECO - VERSION J 2005 /SHEET 44 2006 /21 APR 69 RBH 2007 2008 03271 2057 CHKCLN, ISZ CLNF /SEARCH MODIFIED BY :? 2009 03272 5277 JMP IREST /NO, JUST RESTORE ALTM & $ 2010 03273 2055 ISZ SFAIL /YES, CLEAR FAIL FLAG 2011 03274 7240 STA /AND ASSIGN VALUE 2012 03275 4422 PUSHJ /CALL NUMBER PROCESSOR 2013 03276 1433 NCOM 2014 03277 1151 IREST, TAD CAAM /ALT MODE 2015 03300 3227 DCA QUOTE 2016 03301 1332 TAD CDOL /$ 2017 03302 3230 DCA QUOTE+1 2018 03303 3062 DCA QFLG /CLEAR FLAG 2019 03304 4423 POPJ 2020 2021 /Q-REGISTER POINTERS: 2022 03305 0000 0; 0 /Q-REG 0 03306 0000 2023 03307 0000 0; 0 /Q-REG 1 03310 0000 2024 03311 0000 0; 0 03312 0000 2025 03313 0000 0; 0 03314 0000 2026 03315 0000 0; 0 03316 0000 2027 03317 0000 0; 0 03320 0000 2028 03321 0000 0; 0 03322 0000 2029 03323 0000 0; 0 03324 0000 2030 03325 0000 0; 0 /Q-REG 8 03326 0000 2031 03327 0000 0; 0 /Q-REG 9 03330 0000 2032 03331 0000 QPNTR, 0 /# OF CHARS IN COMM LINE 2033 03332 0044 CDOL, 44 /OTHERWISE UNUSED 2034 2035 2036 /TECO - VERSION I 2037 /SHEET 45 2038 / 2 DEC 68 RBH 2039 2040 /DISPATCH TABLE FOR SKIPPING OVER COMMANDS: 2041 2042 03333 0000 SKPTAB, 0 /TRAP ROUTINE 2043 03334 2463 CSMQ /! 2044 03335 4641 CSMO /> 2045 03336 4634 CSMI /< 2046 03337 4720 CSMD /" 2047 03340 4722 CSMC /^ 2048 03341 4767 CSMA /@ 2049 03342 2463 CSMQ /^A 2050 03343 2463 CSMQ /^B 2051 03344 2460 CSMQ-3 /^U 2052 03345 4720 CSMD /^^ 2053 03346 4726 CSME /E 2054 03347 2463 ESKTAB, CSMQ /I 2055 03350 2463 CSMQ /N 2056 03351 2463 CSMQ /O 2057 03352 2462 CSMQ-1 /R 2058 03353 2463 CSMQ /S 2059 03354 2463 CSMQ /_ 2060 03355 4734 CSMZ /ALTM 2061 03356 4734 CSMZ /$ 2062 2063 2064 2065 03373 0100 PAGE 03374 3130 03375 4037 03376 7560 03377 3237 2066 2067 2068 /TECO - VERSION J 2069 /SHEET 46 2070 /21 APR 69 RBH 2071 2072 PAGE 16 2073 2074 /UTILITIES 2075 2076 03400 1107 RECSTK, TAD PDLP /PRINT OUT STACK REMNANTS 2077 03401 7041 CIA 2078 03402 7001 IAC 2079 03403 3227 DCA COMPAR 2080 03404 1377 TAD (PDLBEG-1) 2081 03405 3017 DCA Z 17 2082 03406 4437 RECST1, CRLF 2083 03407 1017 TAD Z 17 2084 03410 1227 TAD COMPAR 2085 03411 7650 SNA CLA 2086 03412 5220 JMP RECCML+2 2087 03413 1417 TAD I Z 17 2088 03414 4776 JMS I (OPRNT 2089 03415 5206 JMP RECST1 2090 2091 03416 4422 RECCML, PUSHJ /PRINT OUT COMMAND LINE 2092 03417 0346 TQMF 2093 03420 4437 CRLF 2094 03421 5775 JMP I (RECOUP 2095 2096 03422 3660 RECTAB, CTLC /DISPATCH TABLE FOR RECOUP 2097 03423 3400 RECSTK 2098 03424 3400 RECSTK 2099 03425 3400 RECSTK 2100 03426 3416 RECCML 2101 2102 03427 0000 COMPAR, 0 /LOOK FOR DOUBLED COMM LINE CHARS 2103 03430 1071 TAD SCHAR /MOST RECENT 2104 03431 7041 CIA 2105 03432 1065 TAD CHAR /PREVIOUS 2106 03433 7640 SZA CLA 2107 03434 5430 RESORT /NOT THE SAME 2108 03435 5627 JMP I COMPAR /SAME-SPECIAL HANDLING 2109 2110 03436 4227 TCTLC, JMS COMPAR /^C IN COMMAND LINE 2111 03437 5774 JMP I (CTLC /2ND ^C CALLS MONITOR 2112 2113 03440 4227 TBEL, JMS COMPAR /^G IN COMMAND LINE 2114 03441 5773 JMP I (T1 /2ND ^G KILLS COMM LINE 2115 2116 2117 /TECO - VERSION I 2118 /SHEET 47 2119 / 2 DEC 68 RBH 2120 2121 03442 0000 CHKBZ, 0 /SEE THAT B.LE.C(AC).LE.ZZ 2122 03443 3260 DCA CHKCF /SAVE 2123 03444 1260 TAD CHKCF /PICK UP C(AC) 2124 03445 7141 CIA CLL 2125 03446 1115 TAD ZZ 2126 03447 7620 SNL CLA /13-BIT ARITHMETIC 2127 03450 4426 ERR /C(AC)>ZZ 2128 03451 1112 TAD B 2129 03452 7141 CIA CLL 2130 03453 1260 TAD CHKCF /PICK UP C(AC) 2131 03454 7620 SNL CLA /13-BIT ARITHMETIC 2132 03455 4426 ERR /C(AC) 2865 04644 2421 CGSG /POP OUT OF ITERATION 2866 04645 1336 TAD CSPS /RESTORE RETURN 2867 04646 4420 PUSH /POINTER 2868 04647 5306 JMP CSML /CONTINUE 2869 2870 2871 2872 /TECO - VERSION I 2873 /SHEET 63 2874 / 2 DEC 68 RBH 2875 2876 04650 4652 COOB, .+2 /END OF TAG STRING FOUND 2877 04651 4652 .+1 2878 04652 4440 GET 2879 04653 0124 QR /CHECK FOR END OF GOTO STRING 2880 04654 4427 SORT 2881 04655 4741 COOZ 2882 04656 5424 QUOTAB-COOZ /GO TO IREST IF IT IS 2883 04657 5217 JMP COOA /NOT END SO NO MATCH 2884 2885 04660 4431 COOC, SCAN /FOUND TAG DEFINITION 2886 04661 4427 SORT 2887 04662 3227 QUOTE /WATCH OUT FOR END 2888 04663 1421 COOB-QUOTE /COOB IF END OF TAG 2889 04664 7041 CIA 2890 04665 3233 DCA COOT /NOT END, SAVE 2891 04666 4440 GET 2892 04667 0124 QR /COMPARE WITH GOTO STRING 2893 04670 2124 ISZ QR 2894 04671 4427 SORT 2895 04672 4741 COOZ /WATCH FOR END HERE, TOO 2896 04673 7776 COOY-COOZ /START AGAIN IF END FOUND 2897 04674 1233 TAD COOT /NOT END, COMPARE 2898 04675 7640 SZA CLA 2899 04676 5220 JMP COOA+1 /DIFFERENT, START OVER 2900 04677 5260 JMP COOC /MATCH SO FAR 2901 2902 2903 04700 0000 SETSKP, 0 /SET UP TO SKIP COMMANDS 2904 04701 1700 TAD I SETSKP 2905 04702 3343 DCA SKPLST /CHAR TO TRAP ON 2906 04703 2300 ISZ SETSKP 2907 04704 1700 TAD I SETSKP /LOCATION TO SERVICE 2908 04705 3775 DCA I (SKPTAB /TRAP CHAR 2909 04706 4431 CSML, SCAN 2910 04707 1374 TAD (-100) /LOOK FOR LOWER CASE 2911 04710 7500 SMA 2912 04711 0364 AND CS137 /MASK TO UPPER CASE 2913 04712 1351 TAD CS100 /RESTORE 100 2914 04713 4427 SORT 2915 04714 4743 SKPLST 2916 04715 6370 SKPTAB-SKPLST 2917 04716 7200 CSMK, CLA /NON-STRING COMMAND 2918 04717 5306 JMP CSML /KEEP SKIPPING 2919 2920 2921 04720 4431 CSMD, SCAN /CLEAR OUT MODIFIER 2922 04721 5316 JMP CSMK 2923 2924 /TECO - VERSION I 2925 /SHEET 64 2926 / 2 DEC 68 RBH 2927 2928 04722 4422 CSMC, PUSHJ /FOUND ^ 2929 04723 3030 CHUA1 /MAKE CTRL CHAR 2930 04724 3071 DCA SCHAR /RETURN TO SORT ROUTINE 2931 04725 5773 JMP I (SORTA1 /AS IF NOTHING HAPPENED 2932 2933 04726 4431 CSME, SCAN /FOUND E COMMAND 2934 04727 0364 AND CS137 /MASK OUT LC BIT 2935 04730 4427 SORT 2936 04731 3212 ESKLST /LOOK FOR ER & EW 2937 04732 0135 ESKTAB-ESKLST /USE CSMQ TO SKIP 2938 04733 5316 JMP CSMK /NO STRING 2939 2940 04734 2300 CSMZ, ISZ SETSKP /FOUND $ OR ALTM 2941 04735 5700 JMP I SETSKP /HOP BACK TO SEE IF ERROR 2942 2943 04736 0000 CSPS, 0 /SAVE RETURN POINTER 2944 2945 04737 4620 COOY, COOA+1 2946 04740 4620 COOA+1 2947 04741 0000 COOZ, 0 2948 04742 0000 0 2949 2950 04743 0000 SKPLST, 0 /TRAP CHAR 2951 04744 0041 41 /! 2952 04745 0076 76 /> 2953 04746 0074 74 /< 2954 04747 0042 42 /" 2955 04750 0136 136 /^ 2956 04751 0100 CS100, 100 /@ 2957 04752 0001 1 /^A 2958 04753 0002 2 /^B 2959 04754 0025 25 /^U 2960 04755 0036 36 /^^ 2961 04756 0105 105 /E 2962 04757 0111 111 /I 2963 04760 0116 116 /N 2964 04761 0117 117 /O 2965 04762 0122 122 /R 2966 04763 0123 123 /S 2967 04764 0137 CS137, 137 /_ 2968 04765 0033 33 /ALTM 2969 04766 0044 44 /$ 2970 04767 4422 CSMA, PUSHJ /LIST TERMINATOR 2971 04770 3220 CATS /FOUND @ 2972 04771 5306 JMP CSML /CONTINUE SKIPPING 2973 2974 2975 2976 04773 1726 PAGE 04774 7700 04775 3333 04776 3230 04777 3227 2977 2978 2979 /TECO - VERSION J 2980 /SHEET 65 2981 /21 APR 69 RBH 2982 2983 PAGE 24 2984 2985 /I/O UTILITIES 2986 2987 05000 1176 ENDGRP, TAD [-3] /WRITE GROUP MARK 2988 05001 1377 ENDFIL, TAD (ENDPNT+4) /WRITE FILE MARK 2989 05002 3221 DCA ENDPNT /PARAMETER POINTER 2990 05003 1621 TAD I ENDPNT 2991 05004 4500 OUTPUT /GS OR FS 2992 05005 2221 ISZ ENDPNT 2993 05006 1104 TAD WUNIT 2994 05007 7700 SMA CLA /DISC OR DECTAPE? 2995 05010 5321 JMP WDUMP /YES, DUMP BUFFER 2996 05011 1376 TAD (-776) /PUT OUT 510 LINES 2997 05012 3246 DCA DECPUT /OF BLANK TAPE 2998 05013 1375 TAD (200) /CLOBBER 200'S BIT 2999 05014 4500 OUTPUT 3000 05015 2246 ISZ DECPUT /ALL DONE? 3001 05016 5213 JMP .-3 /NO 3002 05017 2221 ISZ ENDPNT /YES, MOVE POINTER 3003 05020 5621 JMP I ENDPNT /JUMP THRU LIST 3004 3005 05021 0000 ENDPNT, 0 3006 05022 0035 35 /GROUP SEPARATOR 3007 05023 0000 0 /FLAG FOR FILE SYSTEM 3008 05024 4423 POPJ 3009 05025 0034 34 /FILE SEPARATOR 3010 05026 0001 0+1 /FLAG FOR FILE SYSTEM 3011 05027 3105 DCA WEND /FLAG END-OF-FILE 3012 05030 1026 TAD ERR-4400 /GET ERRXX POINTER 3013 05031 3100 DCA OUTR /FURTHER OUTPUT IS ERROR 3014 05032 4423 POPJ 3015 3016 05033 0000 FLAP, 0 /CLEAR TAPE FROM HS READER 3017 05034 1076 TAD RUNIT 3018 05035 7500 SMA /DISC OR TAPE? 3019 05036 5340 JMP RFILL /YES, REFILL BUFFER 3020 05037 7001 IAC 3021 05040 7440 SZA /HS READER? 3022 05041 5633 JMP I FLAP /NO, MUST BE TTY 3023 05042 7240 STA /YES, SET FLAP FLAG 3024 05043 3263 DCA DECGET 3025 05044 4472 INPUT /CLEAN CHARS OUT OF BUFFER 3026 05045 5242 JMP .-3 /UNTIL NO MORE TAPE IN RDR 3027 3028 3029 /TECO - VERSION J 3030 /SHEET 66 3031 /24 MAR 69 RBH 3032 3033 05046 0000 DECPUT, 0 /DECTAPE & DISC OUTPUT 3034 05047 2102 ISZ WCHAR /SKIP IF FIRST CHAR 3035 05050 5254 JMP .+4 /NOT, SO PROCEED 3036 05051 3101 DCA OCHAR /SAVE CHAR WHILE WAITING 3037 05052 4774 JMS I (OSWAIT /MAKE SURE PREV WRITTEN 3038 05053 1101 TAD OCHAR /NOW GO ON 3039 05054 4441 PUT 3040 05055 0102 WCHAR /STD 5/7 ASCII 3041 05056 1373 TAD (-DMAX+1) /SEE IF BUFFER FULL 3042 05057 1102 TAD WCHAR /# OF CHARS THERE 3043 05060 7650 SNA CLA 3044 05061 4772 JMS I (GW /BUFFER FULL, WRITE IT 3045 05062 5646 JMP I DECPUT 3046 3047 05063 0000 DECGET, 0 /DECTAPE & DISC INPUT 3048 05064 2074 ISZ RCHAR /FIRST CHAR? 3049 05065 7610 SKP CLA /NO, PROCEED 3050 05066 4774 JMS I (OSWAIT /MAKE SURE READY 3051 05067 4440 GET 3052 05070 0074 RCHAR 3053 05071 3073 DCA ICHAR /INPUT CHAR REG 3054 05072 1373 TAD (-DMAX+1) /SEE IF LAST CHAR 3055 05073 1074 TAD RCHAR /# OF CHARS USED 3056 05074 7650 SNA CLA 3057 05075 4771 JMS I (GR /BUFFER EMPTY, REFILL 3058 05076 1073 TAD ICHAR /PICK UP INPUT CHAR 3059 05077 5663 JMP I DECGET 3060 3061 05100 0207 T1 /BREAK: QUIT WHOLE LINE 3062 05101 3660 CTLC /^C: GO TO MONITOR 3063 05102 2321 CAFF+4 /FF: TERMINATE 3064 05103 3465 APFS /FS: END THE FILE 3065 05104 0000 RDHANG, 0 /^P: RETURN & START READER 3066 05105 2263 ISZ DECGET /FLAPPING TAPE? 3067 05106 7610 SKP CLA /NO 3068 05107 5633 JMP I FLAP /YES, FINISHED 3069 05110 1370 TAD (136) /^ TO ASK FOR RESPONSE 3070 05111 4434 RDHG10, TYPE /HIT HIM 3071 05112 4433 LISTEN /WAIT FOR RESPONSE 3072 05113 4427 SORT 3073 05114 3613 RDHLST 3074 05115 1266 RDHANG-3-RDHLST 3075 05116 7200 CLA /WANT BREAK,^C,^L,^[, OR ^P 3076 05117 1367 TAD (77) /? 3077 05120 5311 JMP RDHG10 /LET HIM KNOW IT'S ALIVE 3078 3079 3080 /TECO - VERSION J 3081 /SHEET 67 3082 /21 APR 69 RBH 3083 3084 05121 1621 WDUMP, TAD I ENDPNT /DUMP DISC/TAPE BUFFER 3085 05122 3766 DCA I (WLAST 3086 05123 4772 JMS I (GW /WRITE OUT BUFFER 3087 05124 5217 JMP ENDPNT-2 /GO OUT THRU TABLE 3088 3089 05125 2231 APPTAB, CALP /BLANK--IGNORE 3090 05126 2301 APRO /RUBOUT--MAKE IDLE 3091 05127 3474 APGS /GROUP SEP--FLAP AND PROCEED 3092 05130 3465 APFS /FILE SEP--END OF INPUT 3093 05131 2241 APSP /SPACE--MIGHT CONVERT TO TAB 3094 05132 2231 CALP /IDLE--IGNORE 3095 05133 2315 CAFF /FORM FEED--END OF PAGE 3096 05134 2305 APLF /LINE FEED--SEE IF TOO FULL 3097 05135 2275 APCR /CARR RET--INSERT CR+LF 3098 05136 2303 APHT /TAB--NO CHANGE 3099 05137 2303 APHT /ALTM--NO CHANGE 3100 3101 05140 7200 RFILL, CLA /REFILL INPUT BUFFER 3102 05141 4771 JMS I (GR /FROM DISC OR DECTAPE 3103 05142 5633 JMP I FLAP 3104 3105 3106 3107 05166 3551 PAGE 05167 0077 05170 0136 05171 3720 05172 3710 05173 6601 05174 3636 05175 0200 05176 7002 05177 5025 3108 3109 3110 /TECO - VERSION I 3111 /SHEET 68 3112 / 2 DEC 68 RBH 3113 3114 PAGE 25 3115 3116 /FILE HANDLING UTILITIES 3117 3118 05200 0000 IOSTRT, 0 /INITIAL I/O SELECTION 3119 05201 1026 TAD ERR-4400 /MUST SET UP I/O 3120 05202 3100 DCA OUTR 3121 05203 1026 TAD ERR-4400 /WITHIN PROGRAM 3122 05204 3072 DCA INR /POINT TO READER ROUTINE 3123 05205 6012 RRB /CLEAR DEVICE FLAGS 3124 05206 6022 PCF 3125 05207 6042 TCF 3126 05210 6032 KCC 3127 05211 3777 DCA I (TBUSY /CLEAR TTY OUT FLAG 3128 05212 1004 TAD Z SCATP /SAVE SCAT POINTER 3129 05213 3134 DCA ISCAT /FOR STARTING I/O 3130 05214 6001 ION 3131 05215 5600 JMP I IOSTRT 3132 3133 3134 3135 /INPUT ROUTINE POINTERS: 3136 05216 3136 TTYIN /TELETYPE 3137 05217 5702 RGET /HS READER 3138 05220 5063 INPTAB, DECGET /DISC & DECTAPE 3139 3140 3141 /OUTPUT ROUTINE POINTERS: 3142 05221 3061 TYO /TELETYPE 3143 05222 3067 PCO /HS PUNCH 3144 05223 5046 OUPTAB, DECPUT /DISC & DECTAPE 3145 3146 05224 1376 WOPEN, TAD (10) /OPEN OUTPUT FILE 3147 05225 1375 ROPEN, TAD (7400) /OPEN INPUT FILE 3148 05226 3252 DCA POINTR /SET SKP OR NOP 3149 05227 4447 QCHK /LOOK FOR QUOTES 3150 05230 4431 SCAN 3151 05231 1374 TAD (-100) /TEST FOR LETTERS 3152 05232 7510 SPA 3153 05233 5242 JMP DTATST /NOT, SHOULD BE DECTAPE 3154 05234 0373 AND (37) /MASK OFF CASE BIT 3155 05235 1372 TAD (100) /RESTORE TO LETTER 3156 05236 4427 SORT 3157 05237 6025 DEVLST /TEST TABLE OF DEVICES 3158 05240 0010 DEVTAB-DEVLST 3159 05241 4426 ERR /NOT IN TABLE 3160 3161 3162 /TECO - VERSION I 3163 /SHEET 69 3164 / 4 DEC 68 RBH 3165 3166 05242 1376 DTATST, TAD (100-70) 3167 05243 7540 SMA SZA /LOOK FOR DIGIT 1-8 3168 05244 5241 JMP DTATST-1 /CALL ERROR 3169 05245 1376 TAD (70-60) 3170 05246 7550 SPA SNA 3171 05247 5241 JMP DTATST-1 /MORE ERROR 3172 05250 3333 DSC, DCA UNIT /POINT OF CONVERGENCE 3173 05251 4450 QSKP /SKIP REST OF STRING 3174 05252 5252 POINTR, JMP . /SWITCH FOR READ OR WRITE 3175 05253 5276 JMP READIN 3176 05254 1333 TAD UNIT 3177 05255 3104 DCA WUNIT /SET UNIT FLAG 3178 05256 1333 TAD UNIT 3179 05257 7500 SMA /DISC OR DECTAPE? 3180 05260 7200 CLA /YES 3181 05261 1371 TAD (OUPTAB) 3182 05262 3252 DCA POINTR /COMPUTE POINTER 3183 05263 1652 TAD I POINTR 3184 05264 3100 DCA OUTR /OUTPUT ROUTINE POINTER 3185 05265 7240 STA 3186 05266 3105 DCA WEND /NOT END OF FILE 3187 05267 1370 TAD (OUPSET-OUPTAB) 3188 05270 1252 OPNA1, TAD POINTR 3189 05271 3252 DCA POINTR /DO UNIQUE FIXES 3190 05272 1652 TAD I POINTR /AN EXTRA LEVEL OF 3191 05273 3252 DCA POINTR /INDIRECT ADDRESSING 3192 05274 4652 JMS I POINTR 3193 05275 4423 POPJ /EXIT 3194 3195 05276 1333 READIN, TAD UNIT 3196 05277 3076 DCA RUNIT /SET UNIT FLAG 3197 05300 1333 TAD UNIT 3198 05301 7500 SMA /DISC OR DECTAPE 3199 05302 7200 CLA /YES 3200 05303 1367 TAD (INPTAB) 3201 05304 3252 DCA POINTR /COMPUTE POINTER 3202 05305 1652 TAD I POINTR 3203 05306 3072 DCA INR /INPUT ROUTINE POINTER 3204 05307 7240 STA 3205 05310 3077 DCA REND /NOT END OF FILE 3206 05311 1370 TAD (INPSET-INPTAB) 3207 05312 5270 JMP OPNA1 /CONVERGE 3208 3209 3210 /TECO - VERSION J 3211 /SHEET 70 3212 /21 APR 69 RBH 3213 3214 05313 0000 RSETUP, 0 /SETUP FOR DISC & TAPE 3215 05314 1333 TAD UNIT 3216 05315 3330 DCA IMPORT+6 3217 05316 1326 TAD IMPORT+4 /INITIAL BLOCK 3218 05317 3331 DCA IMPORT+7 /IS NEXT BLOCK 3219 05320 4766 JMS I (GR /FILL INPUT BUFFER 3220 05321 5713 JMP I RSETUP 3221 3222 05322 0000 IMPORT, 0 /INPUT FILE, SCRATCH TAPE 3223 05323 0000 0 3224 05324 0000 0 3225 05325 0000 0 3226 05326 0001 1 /INITIAL BLOCK 3227 05327 0000 0 3228 05330 0000 0 3229 05331 0000 0 3230 05332 0000 0 3231 3232 05333 0000 UNIT, 0 3233 3234 /I/O SETUP POINTERS: 3235 3236 05334 6042 DUMMY /FOR TELETYPE 3237 05335 3520 RCLEAR /HS READER 3238 05336 5313 INPSET, RSETUP /DISC & DECTAPE 3239 3240 05337 6042 DUMMY /TELETYPE 3241 05340 3530 WCLEAR /HS PUNCH 3242 05341 6000 OUPSET, WSETUP /DISC & DECTAPE 3243 3244 3245 3246 05366 3720 PAGE 05367 5220 05370 0116 05371 5223 05372 0100 05373 0037 05374 7700 05375 7400 05376 0010 05377 4020 3247 3248 3249 /TECO - VERSION I 3250 /SHEET 71 3251 / 3 NOV 68 RBH 3252 3253 PAGE 26 3254 3255 /COMMANDS " AND ' 3256 3257 05400 0103 CNDLST, 103 /C 3258 05401 0143 143 /C 3259 05402 0076 76 />, OLD G 3260 05403 0053 53 /+, NO EQV: 0 OR + 3261 05404 0043 43 /#, OLD N 3262 05405 0055 55 /-, NO EQV: 0 OR - 3263 05406 0074 74 /<, OLD L 3264 05407 0075 75 /=, OLD E 3265 3266 05410 4444 CDBQ, NCHK /COMMAND " 3267 05411 4426 ERR /NO NUMBER TO TEST 3268 05412 4431 SCAN 3269 05413 4427 SORT 3270 05414 5400 CNDLST 3271 05415 0042 CNDTAB-CNDLST 3272 05416 4426 ERR /NO SUCH TEST 3273 3274 05417 4431 CNDI, SCAN /HIT ANOTHER " 3275 05420 7240 STA /SO SKIP MATCHING ' 3276 05421 1231 TAD CNDN 3277 05422 3231 DCA CNDN 3278 05423 5430 RESORT /GO BACK TO CSML 3279 3280 05424 2231 CNDO, ISZ CNDN /FOUND A ' 3281 05425 5430 RESORT /NEED ANOTHER: BACK TO CSML 3282 05426 1377 TAD (CSMD) /FIX UP SKIP TABLE 3283 05427 3776 DCA I (SKPTAB+4 /USED ELSEWHERE 3284 05430 4423 CSGQ, POPJ /COMMAND ' NO ACTION TO TAKE 3285 3286 05431 0000 CNDN, 0 /COUNTER FOR " NESTING 3287 3288 05432 1147 TCRLF, TAD CACR /CR IN COMM LINE 3289 05433 3065 DCA CHAR 3290 05434 4435 CTLTYP /TYPE IT OUT 3291 05435 4775 JMS I (SPUT /PUT INTO COMM LINE 3292 05436 1146 TAD CALF /THEN PUT IN A LF 3293 05437 3065 DCA CHAR 3294 05440 4775 JMS I (SPUT 3295 05441 5774 JMP I (T2 /AND GET SOME MORE 3296 3297 3298 /TECO - VERSION I 3299 /SHEET 72 3300 / 3 NOV 68 RBH 3301 3302 05442 5474 CNDTAB, CNDC /LEGAL CONSTITUENT OF 3303 05443 5474 CNDC /SYMBOL FOR ASSEMBLER 3304 05444 5452 .+6 /POSITIVE, NON-ZERO 3305 05445 5453 .+6 /POSITIVE OR ZERO 3306 05446 5454 .+6 /NON-ZERO 3307 05447 5455 .+6 /NEGATIVE OR ZERO 3308 05450 5456 .+6 /NEGATIVE 3309 05451 5457 .+6 /ZERO 3310 3311 05452 1373 TAD (40) /SMA SZA-SMA 3312 05453 1373 TAD (40) /SMA-SZA 3313 05454 1310 TAD CNM110 /SZA-SPA SNA 3314 05455 1373 TAD (40) /SPA SNA-SPA 3315 05456 1373 TAD (40) /SPA-SNA 3316 05457 1372 TAD (SNA CLA) 3317 05460 3262 DCA .+2 /COMPUTED INSTRUCTION 3318 05461 1064 TAD N /PERFORM TEST 3319 05462 5262 JMP . /INVERSE OF TEST SENSE 3320 05463 4423 POPJ /CONDITION SATISFIED 3321 3322 05464 7240 CNDF, STA /NOT SATISFIED 3323 05465 3231 DCA CNDN /BEGINNING SKIPPING COMMANDS 3324 05466 1371 TAD (CNDI) /TRAP OUT NESTED " 3325 05467 3776 DCA I (SKPTAB+4 3326 05470 4443 SKPSET /CALL SKIPPING ROUTINE 3327 05471 0047 47 /FIND A ' 3328 05472 5424 CNDO /PROCESS IT THERE 3329 05473 4426 ERR /NO MATCHING ' 3330 3331 05474 1064 CNDC, TAD N /TEST FOR SYMBOL 3332 05475 4770 JMS I (SCHSRT /FIND LETTERS & NUMBERS 3333 05476 7640 SZA CLA /AC=0 IF NOT 3334 05477 4423 CNDP, POPJ /N IS A SYMBOL 3335 05500 1064 TAD N 3336 05501 4427 SORT /LOOK FOR $,%, AND . 3337 05502 5505 SYMLST 3338 05503 6051 SYMTAB-SYMLST 3339 05504 5264 JMP CNDF /N IS NOT A SYMBOL 3340 3341 05505 0044 SYMLST, 44 /$ 3342 05506 0045 45 /% 3343 05507 0056 56 /. 3344 05510 7670 CNM110, -110 /SZA-SPA SNA, END OF LIST 3345 3346 3347 /TECO - VERSION I 3348 /SHEET 73 3349 /30 OCT 68 RBH 3350 3351 05511 0007 COMLST, 7 /^G, COMMAND LINE EDIT LIST 3352 05512 0015 15 /CR, INSERT CR & LF 3353 05513 0177 177 /RUBOUT 3354 05514 0014 14 /^L, SET LOWER CASE 3355 05515 0025 25 /^U, SET UPPER CASE 3356 05516 0003 RECLST, 3 /^C, ERROR RECOVERY AID LIST 3357 05517 0033 33 /^[, ALT MODE 3358 05520 0175 175 /ANOTHER ALT MODE 3359 05521 0176 176 /YET ANOTHER ALT MODE 3360 05522 0077 77 /? 3361 3362 05523 1367 CBSN0, TAD (55-72) /SEE IF DIGIT 3363 05524 7500 SMA 3364 05525 5347 JMP CBSN2 /NO, STOP HERE 3365 05526 1366 TAD (72-60) 3366 05527 7510 SPA 3367 05530 5347 JMP CBSN2 /NOT DIGIT EITHER 3368 05531 4422 PUSHJ 3369 05532 1402 NMBR+2 /CALL DIGIT PROCESSOR 3370 05533 2113 ISZ P /POINT TO NEXT CHAR 3371 05534 1365 TAD (NOP-SZA) /DON'T TAKE A - 3372 05535 1364 CBSN, TAD (SZA) /TAKE INITIAL - 3373 05536 3342 DCA CBSN1 3374 05537 4440 GET 3375 05540 0113 P /TEST 1 CHAR 3376 05541 1363 TAD (-55) /IS IT -? 3377 05542 5342 CBSN1, JMP . /SZA OR NOP 3378 05543 5323 JMP CBSN0 /SEE IF DIGIT 3379 05544 4422 PUSHJ 3380 05545 1463 CMIN /CALL - PROCESSOR 3381 05546 5333 JMP CBSN-2 /TEST NEXT CHAR 3382 05547 7200 CBSN2, CLA 3383 05550 4423 POPJ /FINISHED 3384 3385 05551 5753 JMP I QOVER /TRICKY CODING HERE 3386 05552 5551 .-1 /TARGET OF A SORT LIST 3387 05553 0000 QOVER, 0 /ENTRY POINT AND TARGET OF SORT 3388 05554 4431 SCAN 3389 05555 4427 SORT 3390 05556 3227 QUOTE /SKIPPING OVER A STRING COMMAND 3391 05557 2323 QOVER-1-QUOTE 3392 05560 7200 CLA /NOT END 3393 05561 5354 JMP QOVER+1 /SKIP ANOTHER CHAR 3394 3395 3396 3397 05563 7723 PAGE 05564 7440 05565 7340 05566 0012 05567 7763 05570 2133 05571 5417 05572 7650 05573 0040 05574 0237 05575 3663 05576 3337 05577 4720 3398 3399 3400 /TECO - VERSION J 3401 /SHEET 74 3402 /16 JAN 69 RBH 3403 3404 PAGE 27 3405 3406 /HIGH-SPEED PAPER TAPE ROUTINES 3407 3408 05600 0000 PPUT, 0 /PUNCH 1 CHARACTER 3409 05601 3101 DCA OCHAR /SAVE IT 3410 05602 1102 TAD WCHAR 3411 05603 1233 TAD PFULL 3412 05604 7700 SMA CLA 3413 05605 5202 JMP .-3 /BUFFER FULL: MP WAIT LOOP 3414 05606 6002 IOF /DO DELICATE THINGS 3415 05607 1101 TAD OCHAR 3416 05610 6211 CDF 10 3417 05611 3414 DCA I 14 3418 05612 6201 CDF 00 3419 05613 1014 TAD 14 3420 05614 1234 TAD PMAX 3421 05615 7710 SPA CLA 3422 05616 5221 JMP .+3 3423 05617 1235 TAD PMIN 3424 05620 3014 DCA 14 3425 05621 2102 ISZ WCHAR 3426 05622 5230 JMP PRETN /PUNCH ALREADY GOING 3427 05623 1232 TAD PSCAT /START UP PUNCH 3428 05624 3004 DCA SCATP /SCAT COMMAND LINK 3429 05625 5244 JMP PNEXT /GO FAKE INTERRUPT 3430 3431 05626 1134 TAD ISCAT /COME HERE ON FAKE SCAT 3432 05627 3004 DCA SCATP /RESTORE REAL THING 3433 05630 6001 PRETN, ION /FINISHED WITH DELICATE WORK 3434 05631 5600 JMP I PPUT /RETURN TO GET ANOTHER CHAR 3435 3436 05632 5626 PSCAT, PRETN-2 /ADDRESS FOR FAKE SCAT 3437 05633 7201 PFULL, -OUT+1 3438 05634 6401 PMAX, -TXT+1 3439 05635 0577 PMIN, OUT-1 3440 3441 3442 /TECO - VERSION I 3443 /SHEET 75 3444 / 8 OCT 68 RBH 3445 3446 05636 6022 PANSR, PCF /PUNCH INT SERVICE ROUTINE 3447 05637 7340 STA CLL 3448 05640 1102 TAD WCHAR 3449 05641 3102 DCA WCHAR 3450 05642 7420 SNL 3451 05643 5404 SCAT /BUFFER EMPTY 3452 05644 6211 PNEXT, CDF 10 3453 05645 1415 TAD I 15 3454 05646 6201 CDF 00 3455 05647 1377 TAD (200) /ADD EIGHTH BIT 3456 05650 6026 PLS 3457 05651 7200 CLA 3458 05652 1015 TAD 15 3459 05653 1234 TAD PMAX 3460 05654 7710 SPA CLA 3461 05655 5404 SCAT /POINTER OK 3462 05656 1235 TAD PMIN /RESET TO BEGINNING 3463 05657 3015 DCA 15 3464 05660 5404 SCAT 3465 3466 05661 6012 RANSR, RRB /READER INT SERVICE ROUTINE 3467 05662 7200 CLA 3468 05663 2074 ISZ RCHAR 3469 05664 7410 SKP 3470 05665 5404 SCAT /BUFFER FULL 3471 05666 6016 RNEXT, RRB RFC /READ 1 CHAR, GET ANOTHER 3472 05667 0135 AND MASK 3473 05670 6211 CDF 10 3474 05671 3412 DCA I 12 3475 05672 6201 CDF 00 3476 05673 1012 TAD 12 3477 05674 1233 TAD PFULL 3478 05675 7710 SPA CLA 3479 05676 5404 SCAT /POINTER OK 3480 05677 7240 STA /RESET TO 0 3481 05700 3012 DCA 12 3482 05701 5404 SCAT 3483 3484 3485 /TECO - VERSION I 3486 /SHEET 76 3487 /15 OCT 68 RBH 3488 3489 05702 0000 RGET, 0 3490 05703 3351 DCA RTIME /RESET TIMER 3491 05704 1074 TAD RCHAR /0 FULL, -577 EMPTY 3492 05705 1235 TAD PMIN /+577 3493 05706 7750 SPA SNA CLA /PROCEED IF ANYTHING IN BUFFER 3494 05707 5341 JMP RWAIT /NOTHING IN BUFFER 3495 05710 6002 IOF 3496 05711 6211 CDF 10 3497 05712 1413 TAD I 13 3498 05713 6201 CDF 00 3499 05714 3073 DCA ICHAR 3500 05715 1013 TAD 13 3501 05716 1233 TAD PFULL 3502 05717 7710 SPA CLA 3503 05720 5323 JMP .+3 3504 05721 7240 STA 3505 05722 3013 DCA 13 3506 05723 7340 STA CLL 3507 05724 1074 TAD RCHAR 3508 05725 3074 DCA RCHAR 3509 05726 7430 SZL /WAS BUFFER FULL? 3510 05727 5335 JMP RRETN /NO, SO READER ALREADY RUNNING 3511 05730 1340 TAD RSCAT /FAKE AN INTERRUPT 3512 05731 3004 DCA SCATP /TO START READER 3513 05732 5266 JMP RNEXT 3514 3515 05733 1134 TAD ISCAT /COME HERE ON FAKE SCAT 3516 05734 3004 DCA SCATP /RESTORE REAL THING 3517 05735 1073 RRETN, TAD ICHAR /PICK UP CHARACTER 3518 05736 6001 ION /UNPLUG OUR EARS 3519 05737 5702 JMP I RGET 3520 3521 05740 5733 RSCAT, RRETN-2 3522 3523 05741 1351 RWAIT, TAD RTIME /19.5 MICROSEC PER ROUND 3524 05742 7101 CLL IAC /OR 80 MILLISEC TO HANG 3525 05743 7420 SNL /MINIMUM READER SPEED MUST 3526 05744 5303 JMP RGET+1 /EXCEED 12.5 CHARS PER SECOND 3527 05745 4776 JMS I (RDHANG /READER WAS OUT OF TAPE AT LAST RFC 3528 05746 6014 RFC 3529 05747 7200 CLA 3530 05750 5702 JMP I RGET /RETURN WITH NOTHING 3531 3532 05751 0000 RTIME, 0 3533 3534 3535 05776 5104 PAGE 05777 0200 3536 3537 3538 /TECO - VERSION J 3539 /SHEET 77 3540 /21 APR 69 RBH 3541 3542 PAGE 30 3543 3544 /MORE FILE HANDLING 3545 3546 06000 0000 WSETUP, 0 /SETUP DISC & DECTAPE 3547 06001 1777 TAD I (UNIT 3548 06002 3221 DCA EXPORT+6 3549 06003 3217 DCA EXPORT+4 /INITIAL BLOCK SET BY FILE SYSTEM 3550 06004 3220 DCA EXPORT+5 /BLOCK COUNT 3551 06005 3222 DCA EXPORT+7 /NEXT BLOCK POINTER 3552 06006 3224 DCA EXPORT+11 /FREE BLOCK LIST POINTER 3553 06007 3776 DCA I (WLAST /CLEAR END-OF-FILE FLAG FLAG 3554 06010 7240 STA 3555 06011 3102 DCA WCHAR /RESET CHAR POINTER 3556 06012 5600 JMP I WSETUP 3557 3558 06013 0000 EXPORT, 0 /OUTPUT FILE 3559 06014 0000 0 3560 06015 0000 0 3561 06016 4000 4000 /WRITE MODE FLAG 3562 06017 0000 0 3563 06020 0000 0 3564 06021 0000 0 3565 06022 0000 0 3566 06023 6400 6400 /FREE BLOCK LIST 3567 06024 0000 0 3568 3569 06025 0104 DEVLST, 104 /DEVICE ASSIGNMENTS 3570 06026 0113 113 /K: TTYIN 3571 06027 0120 120 /P: HSP OUT 3572 06030 0122 122 /R: HSRIN 3573 06031 0124 124 /T: TTYOUT 3574 3575 06032 7001 IAC /END OF LIST 3576 06033 7040 CMA /HSR & HSP COME HERE 3577 06034 5635 JMP I DEVTAB /REJOIN OTHER ROUTINE 3578 3579 06035 5250 DEVTAB, DSC /0 FOR DISC 3580 06036 6032 DEVTAB-3 /-2 FOR TTY 3581 06037 6033 DEVTAB-2 /-1 FOR HSP 3582 06040 6033 DEVTAB-2 /-1 FOR HSR 3583 06041 6032 DEVTAB-3 /-2 FOR TTY 3584 3585 06042 0000 DUMMY, 0 /FAKE INITIALIZATION 3586 06043 5642 JMP I DUMMY /FOR TTY 3587 3588 3589 3590 /TAILINGS: 3591 3592 TWRITE= 6600 3593 TREAD= 7000 3594 TJOIN= 7100 3595 3596 3597 3598 06176 3551 PAGE 06177 5333 3599 3600 3601 00176 7775 $ 00177 7776 ACXX 0643 ACXY 0644 ACXZ 0645 ADJ 0713 APCR 2275 APFS 3465 APGS 3474 APHT 2303 APLF 2305 APM12 0152 APMAX 5360 APPLST 0137 APPTAB 5125 APRO 2301 APSP 2241 APSP1 2267 APSP2 2271 B 0112 BZCHK 4446 CAAM 0151 CACR 0147 CAFF 2315 CAHT 0150 CALF 0146 CALP 2231 CALT 4225 CAMP 1501 CANP 2235 CAPP 2237 CARO 0140 unreferenced CASP 0143 CAST 1467 CATS 3220 CBSL 1612 CBSN 5535 CBSN0 5523 CBSN1 5542 CBSN2 5547 CCHK 4445 CCLN 3231 CCMA 1361 CCPR 1563 CCUA 2655 CCUB 2663 CCUC 2673 CCUN 2701 CCUQ 2702 CCUS 2703 CDBQ 5410 CDMN 1043 CDN 1026 CDOL 3332 CDOT 1446 CDSP 2472 CDT 1112 CEQL 1606 CEXP 3116 CFLG 0056 CGOA 4253 CGOB 4277 CGOP 4304 CGOQ 4305 CGSG 2421 CGTC 2431 CHAR 0065 CHBA 1254 CHGT 2415 CHIRP 1313 CHIRPY 1312 CHKBZ 3442 CHKCF 3460 CHKCLN 3271 CHKNF 3631 CHKQF 3125 CHLT 2400 CHNA 2757 CHRA 2200 CHRB 1424 CHRC 1004 CHRD 1013 CHRE 3036 CHRF 1520 CHRG 4245 CHRH 1426 CHRI 2331 CHRJ 1000 CHRK 1123 CHRL 1050 CHRM 4200 CHRN 1255 CHRO 4600 CHRP 2014 CHRQ 4466 CHRR 1314 CHRS 1250 CHRT 2036 CHRU 4476 CHRV 2072 CHRW 2037 CHRX 4522 CHRY 2210 CHRZ 1432 CHUA 3023 CHUA1 3030 CIL1 2337 CIL2 2354 CISP 2364 CKALL 1045 CKN 1130 CKT 1111 unreferenced CLAMQA 7701 CLCH 1063 CLCMA 1055 CLDO 0333 CLINE 1526 CLNCHK 5451 CLNF 0057 CLOQ 1010 CLP 1101 unreferenced CMIN 1463 CMIP 1453 CMON 4224 CMOR 4222 CNBS 1502 CNDC 5474 CNDF 5464 CNDI 5417 CNDLST 5400 CNDN 5431 CNDO 5424 CNDP 5477 CNDTAB 5442 CNJ 1261 CNM110 5510 CNXT 1276 COMLST 5511 COMPAR 3427 COMTAB 3143 COOA 4617 COOB 4650 COOC 4660 COOL 4631 COOQ 4632 COOT 4633 COOY 4737 COOZ 4741 COPR 1547 COYA 2215 CPCS 4514 CPLS 1450 CPOA 2021 CPOC 2030 CPYTXT 0703 CQOA 4520 CQOQ 4424 CQSM 1624 CRLF 4437 CS100 4751 CS137 4764 CSCH 1200 CSEM 2436 CSF 1242 CSG 1222 CSGQ 5430 CSK 1237 CSL 1206 CSMA 4767 CSMC 4722 CSMD 4720 CSME 4726 CSMF 2447 CSMI 4634 CSMK 4716 CSML 4706 CSMO 4641 CSMQ 2463 CSMZ 4734 CSN 1307 CSNB 1300 CSNCL 2054 CSP 1311 CSPS 4736 CSQ 1212 CST 1310 CSWT 1217 CSZ 1235 CSZCL 1227 CTBR 3600 CTLA 3000 CTLALT 2727 CTLB 3001 CTLB1 3004 CTLB2 3010 CTLC 3660 CTLCR 2725 CTLD 1346 CTLF 3200 CTLG 3643 CTLHT 2730 CTLK 1345 CTLT 3121 CTLTAB 3051 CTLTYP 4435 CTLU 2632 CTLV 2073 CTUA 3202 CTVTYP 4436 CVIR 1473 CWOA 2051 CWOB 2060 CWOUT 2062 CXOA 4534 CXOB 4562 CXON 4565 CYMZ 2240 DECDEV 1622 DECGET 5063 DECPUT 5046 DECTYO 1604 DEVLST 6025 DEVOUT 1715 DEVTAB 6035 DISP 3552 DISPLA 3554 DIV1 1665 DIV2 1701 DMAX 1200 DNN1 0757 DNNC 0753 DPRNT 1615 DRAD 3704 DSC 5250 DTATST 5242 DUMMY 6042 DVI 7407 ECHO 3012 EIN 3252 EIO 3267 EKOFF 3621 EKON 3620 ENBLST 3204 ENBTAB 3476 ENDFIL 5001 ENDGRP 5000 ENDPNT 5021 EOUT 3253 ERR 4426 ERRXX 2732 ESKLST 3212 ESKTAB 3347 EXPORT 6013 FLAP 5033 FORM1 4144 FORM2 4160 unreferenced FORM3 4164 GET 4440 GETX 0407 GR 3720 GTC3 0422 GTMC 0474 GTPT 0411 GTR 0431 GTR0 0470 GTR1 0466 GTR1A 0450 GTR2 0462 GTR3 0446 GTSC 0460 GTT 0473 GTV 0464 GTW 0441 GTX 0442 GTZ 0443 GW 3710 ICHAR 0073 IMPORT 5322 IN 0000 INHTC 2257 INPSET 5336 INPTAB 5220 INPUT 4472 INR 0072 INTP 0005 unreferenced IOSTRT 5200 IREST 3277 ISCAT 0134 ITRCNT 2471 ITRFIN 2470 ITRST 0066 KANSR 4037 KBHANG 3234 KBISR 0136 KCALL 4035 KCHAR 4036 KFLG 0127 LEADZ 1713 LFCT 4071 LINA1 1536 LINA2 1544 LINES 1134 LISTEN 4433 LLINE 1524 LSR 7417 LZ 1677 M 0063 M140 0264 MASK 0135 MFROMN 3075 MPDL 0070 MQA 7501 MQL 7421 MQLDVI 7427 MQLMUY 7425 MUY 7405 N 0064 NACC 1445 NAND 1504 unreferenced NCHK 4444 NCOM 1433 NFLG 0060 NIOR 1506 NLINES 2000 NLZ 1675 NMBR 1400 NMC 1514 NMLDV 1512 NMR 1411 NMRBAS 1407 NMT 1443 NNEW 1434 NOPR 1414 NP 1444 NRET 1417 NSKP 1525 NULLS 4072 OCHAR 0101 OFLG 0061 OPNA1 5270 OPRNT 1600 ORAD 1602 OSWAIT 3636 OUPSET 5341 OUPTAB 5223 OUT 0600 OUTCR 4074 OUTFF 4104 OUTHT 4121 OUTHTC 4124 OUTHTD 4133 OUTLF 4077 OUTLF1 4117 OUTLST 0145 OUTP 4070 OUTPUT 4500 OUTR 0100 OUTTAB 3044 P 0113 PANSR 5636 PCO 3067 PDLBEG 3730 PDLEND 3767 PDLP 0107 PFULL 5633 PMAX 5634 PMIN 5635 PNEXT 5644 POINTR 5252 POP 4421 POPJ 4423 POPJXX 0625 POPJXY 0631 POPK 4340 POPL 4425 POPLX 0665 POPXX 0600 PPUT 5600 PRAD 1620 PRETN 5630 PSCAT 5632 PTR 0475 PTR0 0552 PTR1 0537 PTR2 0527 PTR3 0511 PTSAVE 1712 PTV 0506 PTW 0524 PTX 0507 PTY 0535 PUSH 4420 PUSHJ 4422 PUSHJY 0633 PUSHL 4424 PUSHLX 0646 PUSHXX 0613 PUT 4441 PUTX 0400 Q 0116 QADJ 4306 QCHK 4447 QCMND 0111 QDNN 4342 QDNN1 4351 QDNNF 4360 QDNNS 4363 QFLG 0062 QMAX 4610 QNMBR 0110 QOVER 5553 QP 0122 QPNTR 3331 QPUT 4454 QPUTS 3054 QR 0124 QREF 4452 QREFER 4450 QREGS 0132 QRG 5010 QSKP 4450 QSUM 4453 QSUMB 4417 QSUMC 4422 QSUML 4410 QSUMP 4423 QSUMR 4400 QUOTAB 2365 QUOTE 3227 QUPN 4312 unreferenced QUPNF 4332 QZ 0126 R 0120 RADIX 1360 RANSR 5661 RCHAR 0074 RCLEAR 3520 RDHANG 5104 RDHG10 5111 RDHLST 3613 READIN 5276 RECCML 3416 RECLST 5516 RECOUP 2747 RECST1 3406 RECSTK 3400 RECTAB 3422 REND 0077 RESCAN 4432 RESORT 5430 RFILL 5140 RFN 3540 RGET 5702 RLAST 3544 unreferenced RNEXT 5666 ROCMND 0322 ROPEN 5225 RRETN 5735 RSCAT 5740 RSETUP 5313 RTIME 5751 RUNIT 0076 RWAIT 5741 SCAN 4431 SCANP 0106 SCAT 5404 SCATP 0004 SCHAR 0071 SCHERR 3706 SCHF 2156 SCHINV 2124 SCHLIT 2117 SCHLST 3223 SCHS 2155 SCHSEP 2127 SCHSRT 2133 SCHSWT 2114 SCHTAB 2111 SERR 0133 SETSKP 4700 SFAIL 0055 SGET 4425 SHL 7413 SKPLST 4743 SKPSET 4443 SKPTAB 3333 SORT 4427 SORTA1 1726 SORTA2 1744 SORTB 1720 SORTC 1750 SPCNT 2274 SPUT 3663 SREGET 1113 SYMLST 5505 SYMTAB 3556 SYS 1751 T1 0207 T2 0237 T6 0261 T6A 0267 T7 0277 TABU1 4147 TALTM 0253 TANSR 4015 TBA1 0352 TBEL 3440 TBUSY 4020 TCASE 0361 TCRLF 5432 TCTLC 3436 TECO 0200 unreferenced TFLG 0067 TJOIN 7100 TLOWER 3512 TPUT 4000 TQMF 0346 TQMK 0307 TREAD 7000 TSIG 0314 TTYIN 3136 TUPPER 3515 TWRITE 6600 TXT 1400 TXTCPY 4442 TYCRLF 1164 TYCTL1 2714 TYI 4021 TYO 3061 TYP 4073 TYPCTL 2704 TYPCTV 3623 TYPE 4434 UNIT 5333 UPNL 0732 UPOC 1630 UPPN 0715 WCHAR 0102 WCLEAR 3530 WDUMP 5121 WEND 0105 WFN 3545 WLAST 3551 WOPEN 5224 WSETUP 6000 WUNIT 0104 XFIX 4052 XFIX1 4064 XFLG 0130 YFLG 0131 ZAGAIN 1663 ZCOUNT 1714 ZEROD 1642 ZMAX 5670 ZPNT 1716 ZSWT 1671 ZZ 0115