File: TECO.LS of Disk: V50/Source/Source-Listing-MAC-2
(Source file text)
PAGE LINE SUBTITLE 20 762 . Command Execution Loop 22 834 . Q-register pack and unpack 23 901 Cmd ^C 23 914 Cmd ^ 24 922 . Push down list routines 26 992 Cmd J 26 998 Cmd R 26 1004 Cmd C 27 1017 Cmd L 28 1050 Cmd D 29 1103 Cmd K 31 1152 . Scope subroutines 33 1206 Imm ^G<space> 33 1207 Imm ^G* 34 1263 . Sort and branch 36 1305 Cmd P 37 1357 Cmd T 38 1389 Cmd X 39 1432 Cmd ; 40 1440 Cmd ^A 41 1455 Cmd A 42 1479 Cmd Y 44 1591 . Teletype routines 46 1652 . Q-register manipulation 48 1742 . Q-register subroutines 51 1833 Cmd ^T 52 1849 . Overlay handler 54 1897 Cmd E 55 1934 Cmd I 55 1943 Cmd <TAB> 55 1945 Cmd ^I 56 1988 Cmd G 57 2046 Imm * 59 2063 Cmd Q 60 2096 Cmd , 61 2114 . Number routines 62 2153 Cmd H 62 2158 Cmd Z 62 2163 Cmd ^H 62 2167 Cmd B 63 2175 Cmd M 66 2218 72 2379 72 2384 Cmd W 74 2442 Cmd U /50 OS/8 TECO VERSION 7 V50 MACREL-V2C FRI 07-DEC-90 PAGE 1 FILE # 1 1 /50 OS/8 TECO VERSION 7 V50 2 / 3 / 4 / 5 / 6 / 7 / 8 / 9 / 10 / 11 / 12 / 13 / 14 / 15 / 16 / 17 / 18 / 19 / 20 / 21 /THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT NOTICE 22 /AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT 23 /CORPORATION. DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY 24 /FOR ANY ERRORS THAT MAY APPEAR IN THIS DOCUMENT. 25 / 26 / 27 / 28 / 29 / 30 / 31 / 32 / 33 / 34 / 35 / /50 OS/8 TECO VERSION 7 V50 MACREL-V2C FRI 07-DEC-90 PAGE 2 FILE # 1 36 37 38 /BROUGHT TO YOU BY: RUSS HAMM, O.M.S.I., AND RICHARD LARY (IN THAT ORDER) 39 /WITH ASSISTANCE FROM MARIO DENOBILI OF THE P?S 40 /PATCHES INCORPORATED BY S.R. ON 5-AUGUST-75 FOR OS/8 V3C: 41 42 /1. UPDATED VERSION # TO V4 43 /2. INCORPORATED PATCHES #S 1 & 2 (V302 AND V303) 44 / PREVENTS \ FROM GOING OUTSIDE OF BUFFER 45 / RESETS CFLAG TO PREVENT ARGUMENT ERROR EVERY 4096 TIMES IN LOOP 46 47 / CHANGES FOR V5: -STANLEY RABINOWITZ- 48 49 /3. ADDED OVERLAYS 50 /4. EXPANDED ERROR MESSAGES 51 /5. DOCUMENTED CORE LAYOUT 52 /6. ADDED "T, "S, "F, "U, AND "R 53 /7. FIXED EG BUG 54 /8. MADE DEFAULT ITERATION COUNT TRULY INFINITE 55 /9. ADDED N^T 56 /10. ADDED := 57 /11. ADDED SOME SAFETY ERROR MESSAGES 58 / (I) ERROR IF Y HAS A NUMERIC ARGUMENT 59 / (II) ERROR IF TWO ARGUMENTS ARE SPECIFIED TO D 60 /12. REMOVE ^R (OBSOLETE COMMAND) 61 /13. REMOVE "A AND "B (AFTER AND BEFORE) 62 /14. ADDED 13-BIT ARITHMETIC 63 /15. MADE = AND \ GIVE SIGNED RESULTS (DECIMAL ONLY) 64 /16. ALLOW 13-BIT NUMERIC Q-REGISTERS. 65 / THIS IS ACCOMPLISHED BY RESERVING THE HIGH ORDER BIT 66 / OF THE LENGTH WORD. STRING PORTION OF Q-REGISTER 67 / NOW RESTRICTED TO 2047 CHARACTERS. IT GETS CHECKED BY 68 / ^U AND X. BELL RINGS WITHIN 12 CHARACTERS OF FILLING 69 / UP COMMAND STRING Q-REGISTER. 70 /17. STORED LINK AS LOW ORDER BIT IN NLINK IN CASE WE EVER 71 / WANT TO GO TO 24-BIT ARITHMETIC. 72 /18. ERROR ON A,B,C 73 /19. P DOESN'T CREATE FORM FEEDS 74 /20. ALLOW @ MODIFIER WITH ER, EW, EB. 75 /21. EK 76 /22. ^S FREEZE 77 /23. EGTEXT$ 78 /24. GOT RID OF F_ 79 /25. F IS ILLEGAL IF NOT FOLLOWED BY S OR N 80 /26. W IS NOW AN ILLEGAL COMMAND (EXCEPT ON -12) 81 /27. ADDED :G 82 /28. Y AND _ GIVE ERRORS IF DATA IS GOING TO BE LOST 83 / (IF OUTPUT FILE IS OPEN AND BUFFER IS NOT EMPTY) 84 /29. CASE FLAGGING IMPLEMENTED 85 /30. "< AND "> ARE SYNONYMOUS WITH "L AND "G 86 /31. ^G<SPACE> AND ^G* 87 /32. SCOPE RUBOUTS 88 /33. == NOW PRINTS NUMBER IN OCTAL 89 /34. EUFLAG AND ETFLAG IMPLEMENTED 90 /35. CASE FLAGGING WORKS /50 OS/8 TECO VERSION 7 V50 MACREL-V2C FRI 07-DEC-90 PAGE 2-1 FILE # 1 91 /36. IMAGE MODE (ET BIT 11) APPLIES TO T, ^A, AND N^T 92 / IT DOES NOT APPLY TO :G 93 /37. ERROR IF TRY TO DO AN EB TO A .BK FILE (IT DOES AN ER) 94 /38. VT AND FF ARE NOW LINE TERMINATORS 95 /39. BELL ECHOES AS ^G AS WELL AS RINGING BELL 96 /40. ^K IS AN ERROR 97 /41. REMOVED ^Z COMMAND 98 /42. CHANGED ^V TO EO 99 /43. CHANGED ^W TO W 100 /44. MEMORY RESIDENT OVERLAYS IF MORE THAN 12K 101 /45. LONG FORM ERROR MESSAGES ON 1EH 102 /46. ET FLAG 8'S BIT AFFECTS ECHOING OF ^T 103 /47. NEGATIVE OR 0 ITERATION SKIPS 104 /48. CTRL/N 105 /49. CTRL/C TRAP 106 107 /KNOWN BUGS 108 /1. LARGE T OR X AND ONLY 1 BLOCK LEFT IN OUT DEV 109 /2. ^S DOESN'T KEEP SCREEN ON (ON PDP-12) 110 /3. FIX BATCH INTERRACTION 111 /4. MAKE VT AND FF SIMULATION INDEPENDENT OF TAB 112 /5. ^T COMMAND (WITH ECHO ON) READS DOLLAR SIGN FOR TYPED ALTMODE 113 114 0062 VERSN= 50. / VERSION NUMBER - CHANGE WITH EVERY EDIT /50 OS/8 TECO VERSION 7 V50 MACREL-V2C FRI 07-DEC-90 PAGE 3 FILE # 1 115 116 117 /CHANGES FOR V6: (STAN RABINOWITZ) 118 119 /50. ADDED SYMBIONT SUPPORT 120 /51. CONVERTED TO MACREL 121 /52. ADDED VT52 SUPPORT (JIM ROTH) 122 /53. AY PATCH (501) 123 /54. CONDITIONAL PATCH (502) 124 /55. BELL ON 12 CHARACTERS (503) 125 /56. ^U, *, ^G<SPACE>, ETC. (504) 126 /57. N*0 PATCH (505) 127 /58. 8K PATCH (506) 128 /59. SKIPPING W (507) 129 /60. NO ERROR ON ^S AFTER ^S 130 /61. REDUCED EXTRA BLOCK WRITE OF OVERLAYS 131 /62. REMOVED ^P CMD AND EXECUTION TIME ^P COMMAND 132 /63. IMPLEMENTED IMMEDIATE MODE CMDS LF AND BS 133 /64. :ER AND :EB 134 /65. ERFILE/S$ FOR SUPERTECO 135 /66. PUT F_ BACK IN 136 /67. ^L COMMAND 137 /68. ALLOW @^A 138 /69. 2'S BIT IN ED FLAG 139 /70. ALLOW CHAIN ARG TO BE LARGE 140 /71. EXTRA 7 CHARS IN SEARCH BUFFER IF NOT ON PDP-12 OR VT52 141 /72. REMOVED MQ DISPLAY 142 /73. ABORT ON ERROR BIT 143 /74. PATCH FOR UNSPECIFIED ITERATION AFTER INSERT (508) 144 /75. VT05 SUPPORT 145 /76. ^R (LITERALLY) IN SEARCH STRINGS 146 /77. FORTIFIED ?POP ERROR MESSAGE 147 /78. "= SYNONOMOUS WITH "E 148 /79. FIXED NUMBER FLAG AFTER A 0<> 149 /80. FIXED H$T BUG 150 /81. ADDED ^C TRAP BIT (IF VT52 SUPPORT IN) 151 /82. ADDED TECO.INI CODE 152 /83. <TAB> PRINTS RATHER THAN <HT> 153 /84. SET SCOPE BIT IF SCOPE 154 /85. ADDED ED BIT 1, ALLOW ^ IN SEARCH STRINGS 155 /86. SOME ERROR MESSAGE CODES CHANGED 156 157 /VERSION 602 CHANGES: 158 159 /87. 3EH CODE 160 /88. 4EH BIT IN 161 /89. EX WITH TEXT AND NO OUT FILE GIVES ?NFO 162 /90. FIXED BUG IN 1ED 163 164 /VERSION 604 CHANGES: 165 166 /91. TECO.TEC 167 /92. * CLEARS ? 168 /93. AID * IDENTICAL TO AID ^S 169 /94. ^_ /50 OS/8 TECO VERSION 7 V50 MACREL-V2C FRI 07-DEC-90 PAGE 3-1 FILE # 1 170 /95. V 171 /96. "D AND "A 172 /97. EY 173 /98. ?NAS BECAME ?ISA 174 /99. 1024 BIT IN ET SET ON PDP-12 175 /100. PRINT SEARCH STRING ON ?SRH 176 /101. ?UEC ETC. 177 /102. / 178 /103. READ WITH NO WAIT 179 /104. LF AND BS 180 /105. ^B 181 /106. ?NPA --> ?IPA 182 183 /VERSION 605 CHANGES: 184 185 /107. FIXED 16K BUG 186 /108. <NOT>,<ANY>,<SEP> 187 /109. N<A> RETURNS -1 IF POINTER REFERENCE IS OFF PAGE 188 /110. F_ BACK IN 189 /111. -1EJ 190 /112. M,N<FLAG> 191 192 /VERSION 606 CHANGES: 193 194 /113. ADDED IF-THEN-ELSE 195 196 /VERSION 7 CHANGES: 197 198 /114. PUT AID ^S BACK IN (SAME AS *) 199 200 /VERSION 50 CHANGES:*WM* 201 202 /115. ^S OUT AGAIN (VT100) 203 /116. ALTER ALTS OUT (TELETYPES ARE OUT?) 204 /117. NEW COMMAND ^]: 'IS THERE KEYBOARD INPUT?' 205 /118. M,ND IS SAME AS M,NK 206 /119. TIME OF DAY (MULTI8) ^H COMMAND IMPLEMENTED 207 /120. ^S,^Q ARE IGNORED IN COMMAND MODE /50 OS/8 TECO VERSION 7 V50 MACREL-V2C FRI 07-DEC-90 PAGE 4 FILE # 1 208 209 210 .ENABLE 7BIT 211 212 .GLOBAL CHR.W,C.W,SCHLST,CIL2,CFSI 213 .GLOBAL CHKCTC,TPUTX,STABLE 214 .GLOBAL TSFWT,OUTDNE,CHKCTC,TYI 215 .GLOBAL CTLWR,TSTA,SCHSRT 216 .GLOBAL VT05B,VBAR 217 .GLOBAL CAHT,CHRL1,NAME,NUMLNS,R 218 .GLOBAL ASR33,BLSP1,BLSP2,BLSP3,BLSP4,BUFIN,CACR,CHTECO 219 .GLOBAL COLCT,EUFLAG,EU1,EU2,GETQX,IC,INCTLW,INHNDL 220 .GLOBAL INPCNT,INRSIZ,INXR,I2,J12K1,J12K2,L12K1,L12K2,KSFWT,L16K 221 .GLOBAL MQMAX,NWRUSR,OUTSIZ,POUTHT,QLIMIT 222 .GLOBAL QPUTS,Q12MAX,RUBY,SCAPE,SCOPY 223 .GLOBAL SCPBIT,TECOS,TECO1,TEMPT,TYI1,T0A 224 .GLOBAL CHKCTR,TYIRET 225 .GLOBAL VT52B 226 .GLOBAL ETFLAG,MEMSIZ 227 .GLOBAL IOVRLC,QOVRLC,XOVRLC,FOVRLC 228 .GLOBAL QPNTR,ERRXX,EHFLAG,ETFLAG 229 .GLOBAL MEMLOC,CTL.C,LASTC,OVREAD,ERRRET 230 .GLOBAL ERROR,T0,QLENGTH 231 .GLOBAL ECDISM,ERR,GETUSR,NNEW13,OCMDLN 232 .GLOBAL TCTLS,IREST 233 .GLOBAL ZROSPN,EDFLAG,ET8,POKE,TPUT,CHR.T 234 .GLOBAL NCOM14,NORMAL,OCNT 235 .GLOBAL SORTA1 236 .GLOBAL EH4,KTYPE,TQMK 237 .GLOBAL OCRCNT,OUNAM,OUTR,OMAXLN,OSETP,IBLK,DECPUT 238 .GLOBAL STECO1,STECO2 239 .GLOBAL QBASE,ZRON,CHREY 240 .GLOBAL ET1,SCHU,UPOC,ERR01,ERR07,SCHCTE 241 .GLOBAL YSKP,EOVRLC 242 .GLOBAL CHR.A,CHR.B,CHR.C,CHR.D,CHR.E,CHR.G,CHR.H,CHR.I,CHR.J,CHR.K 243 .GLOBAL CHR.L,CHR.M,CHR.P,CHR.Q,CHR.R,CHR.T,CHR.U,CHR.X,CHR.Y,CHR.Z 244 .GLOBAL SERR,POPK,CPCS,CCMA 245 .GLOBAL CATS,CEXP,INRCNT 246 .GLOBAL ICRCNT,QPTR,UPPERC,GETN,CHR.UA 247 .GLOBAL CTL.A,CTL.H,CTL.I,CTL.T 248 249 .EXTERNAL TSAV,NRET,ESCAPE,NCOM,CMIN,TSTD 250 .EXTERNAL DSPLAY,TCINIT,ERR30 251 .EXTERNAL JTECO,ERRYY,XH,QMK 252 .EXTERNAL DRAD,SETSKP,VBARE 253 .EXTERNAL CDSP,PDLBEG,PDLEND,CSEM,ELIST 254 255 6200 IN= 6200 /INPUT BUFFER AT 06200 256 5200 OUT= 5200 /OUTPUT BUFFER AT 05200 257 7640 ZMAX= 7640 /MAX 4000[10] CHARACTERS IN TEXT BUFFER 258 3720 QMAX= 3720 /MAX 2000[10] Q-REGISTER CHARS IN 8K 259 5600 Q12MAX= 5600 /MAX 2944[10] Q-REGISTER CHARS IN 12K 260 261 7344 MTWO= CLA CLL CMA RAL 262 7346 MTHREE= CLA CLL CMA RTL /50 OS/8 TECO VERSION 7 V50 MACREL-V2C FRI 07-DEC-90 PAGE 4-1 FILE # 1 263 7350 AC3777= CLL STA RAR 264 7726 SCPBIT= 7726 /50 OS/8 TECO VERSION 7 V50 MACREL-V2C FRI 07-DEC-90 PAGE 5 FILE # 1 265 266 267 .MACRO .ERROR ERNUM 268 .GLOBAL ERR'ERNUM 269 ERR'ERNUM: ERR 270 .ENDM 271 272 .MACRO .SORT ARG1,ARG2 273 SORT; ARG1; ARG2-ARG1 274 .ENDM 275 276 .MACRO .OVRLAY LAY,ADDR 277 OVRLAY; LAY'OVRLY; ADDR 278 .ENDM /50 OS/8 TECO VERSION 7 V50 MACREL-V2C FRI 07-DEC-90 PAGE 6 FILE # 1 279 280 281 /THINGS WE WOULD LIKE TO ADD: 282 283 /FR 284 /-S 285 /::S 286 /^EQ 287 /M,NS 288 /[Q 289 /]Q 290 /NON-EXACT SEARCH MODE 291 /*N 292 /CHECK FOR $ ON NI$ 293 /NV=(1-N)TNT 294 /:X 295 /"V 296 /"W 297 /:^U 298 /^X 299 /ES 300 /EV 301 /M,ND *WM OK 302 /E?HELP$ COMMAND 303 /:C,:J, ETC. 304 /^Q REMOVED FROM INPUT RING BUFFER (OR IMMED ACTION ^Q CMD) *WM OK 305 /^V AND ^W MATCH CONTROL 306 /BS SHOULD NOT STICK AT TOP 307 /MEMSIZ SHOULD BE ADJUSTED 308 /SEARCH STRING TOO LONG NEEDS A 0 309 /TEST FOR ILLEG CHAR IN FILE SELECT 310 /?MEE, ETC. ERROR MESSAGES 311 /| SHOULD GO INTO ROOT /50 OS/8 TECO VERSION 7 V50 MACREL-V2C FRI 07-DEC-90 PAGE 7 FILE # 1 312 313 314 /***************************************** 315 / TECO ERROR MESSAGES: 316 /***************************************** 317 318 / TECO ERROR MESSAGES CONSIST OF A QUESTION MARK AND THREE LETTERS 319 / TYPING "?" IMMEDIATELY AFTER AN ERROR MESSAGE PRINTOUT PRINTS 320 / THE CURRENT COMMAND LINE UP TO THE ERROR CHARACTER. 321 322 /1 ?ILL ILLEGAL COMMAND 323 /2 ?UTC INCOMPLETE COMMAND (PDL NOT EMPTY AT END OF COMMAND STRING) 324 /3 ?IQN NON-ALPHANUMERIC Q-REGISTER NAME 325 /4 ?PDO PUSHDOWN OVERFLOW (MACROS & ITERATIONS NESTED TOO DEEPLY) 326 /5 ?MEM TEXT BUFFER OVERFLOW 327 /6 ?STL SEARCH STRING TOO LARGE ( >31 CHARS) 328 /7 ?ARG NUMBER MISSING BEFORE COMMA 329 / OR TWO ARGUMENTS SPECIFIED TO D 330 / OR 3 NUMERIC ARGUMENTS 331 /8 ?IFN ILLEGAL FILE NAME IN "ER","EW" OR "EB" COMMAND 332 /9 ?SNI SEMICOLON ON COMMAND LEVEL 333 /10 ?BNI ITERATION CLOSE (>) WITHOUT MATCHING OPEN (<) 334 /11 ?POP ATTEMPT TO MOVE POINTER OUTSIDE OF TEXT BUFFER 335 /12 ?QMO Q-REGISTER STORAGE OVERFLOW 336 /13 ?UTM INCOMPLETE COMMAND (PDL NOT EMPTY AT END OF MACRO) 337 /14 ?OUT OUTPUT FILE TOO BIG OR OUTPUT PARITY ERROR 338 /15 ?INP PARITY ERROR ON INPUT FILE 339 /16 ?FER FILE ERROR: CAN MEAN EITHER 340 / A) INPUT FILE NOT FOUND ON "ER" COMMAND 341 / B) CANNOT ENTER OUTPUT FILE ON "EW" OR "EB" COMMAND 342 / C) DEVICE SPECIFIED FOR FILE DOES NOT EXIST 343 / D) "EB" COMMAND GIVEN ON NON-FILE-STRUCTURED DEVICE 344 /17 ?FUL OUTPUT COMMAND WOULD HAVE OVERFLOWED OUTPUT FILE 345 / [PANIC MODE] 346 /18 ?NYA NUMERIC ARGUMENT SPECIFIED WITH Y COMMAND 347 /19 ?IEC E FOLLOWED BY AN ILLEGAL CHARACTER 348 /20 ?IQC " FOLLOWED BY AN ILLEGAL CHARACTER 349 /21 ?NAE NO NUMERIC ARGUMENT TO THE LEFT OF AN = 350 /22 ?NAU NO NUMERIC ARGUMENT TO THE LEFT OF A U 351 /23 ?NAQ NO NUMERIC ARGUMENT TO THE LEFT OF A " 352 /24 ?SRH FAILING SEARCH AT COMMAND LEVEL 353 /25 ?NPA NEGATIVE OR ZERO ARGUMENT TO P 354 /26 ?NCA NEGATIVE ARGUMENT TO COMMA 355 /27 ?NYI CASE SUPPORT NOT IMPL (USE W FOR WATCH) 356 /28 ?UIS UNDEFINED I/O SWITCH 357 /29 ?ISA NEGATIVE OR ZERO ARGUMENT WITH A SEARCH 358 /30 ?WLO WRITE LOCKED SYSTEM DEVICE 359 /31 ?IFC F FOLLOWED BY AN ILLEGAL CHARACTER 360 /32 ?YCA Y (OR _) COMMAND ABORTED BECAUSE DATA WOULD BE LOST 361 /33 ?CCL CCL NOT FOUND OR EG ARGUMENT TOO LONG 362 /34 ?XAB EXECUTION ABORTED BY ^C 363 /35 ?NYI CASE SUPPORT NOT IMPL (USE EO FOR VERSION) 364 /36 ?UEC UNIMPLEMENTED E COMMAND 365 /37 ?DTB DELETE TOO BIG 366 /38 ?POP REFERENCE TO POINTER OFF PAGE /50 OS/8 TECO VERSION 7 V50 MACREL-V2C FRI 07-DEC-90 PAGE 7-1 FILE # 1 367 /39 ?ICE ILLEGAL CONTROL-E 368 /40 ?NAB NO ARGUMENT BEFORE ^_ 369 /41 ?NYI PUSH AND POP NOT YET IMPLEMENTED 370 /42 ?NFO ATTEMPT TO OUTPUT WITHOUT OPENING AN OUTPUT FILE /50 OS/8 TECO VERSION 7 V50 MACREL-V2C FRI 07-DEC-90 PAGE 8 FILE # 1 371 372 373 / CORE LAYOUT AND OVERLAY STRUCTURE 374 375 / BUFFER STRUCTURE: 376 377 /BUFFER 8K VERSION 12K VERSION 378 379 /INPUT BUFFER 06200-07200 25600-27600 380 /OUTPUT BUFFER 05200-06200 05200-07200 381 /Q-REG STORAGE OVER TEXT BFR 20000-25600 382 383 / HANDLER LOCATIONS: 384 385 /HANDLER PDP-8 VERSION PDP-12 VERSION 386 387 /INPUT HANDLER 7200-7600 7200-7400 388 /OUTPUT HANDLER 4000-4400 7400-7600 389 /SIZE OF HNDLR 2-PAGES 1-PAGE 390 /DISPLAY CODE NONE 4000-4400 391 392 / OVERLAY STRUCTURE 393 394 /ALL OVERLAYS ARE TWO PAGES LONG AND RESIDE IN CORE 395 /AT LOCATIONS 3200-3600 WHEN RUNNING. THE I-OVERLAY 396 /INITIALLY RESIDES IN THESE LOCATIONS. 397 398 /OVERLAY BLOCK INITIAL LOCATION CONTENTS 399 400 / I-OVERLAY 40 3200-3600 ER,EW,EB 401 / Q-OVERLAY 41 5600-6200 ", O, SKPSET 402 / E-OVERLAY 42 6200-6600 ERROR MESSAGE PROCESSOR 403 / X-OVERLAY 43 6600-7200 EX,EC,EG,EK,EF (EA,EI,EN,EP) 404 / F-OVERLAY 44 7200-7600 ED,EH,EO,ES,ET,EU (EV) 405 406 0040 IOVRLC=40 407 0041 QOVRLC=41 408 0042 EOVRLC=42 409 0043 XOVRLC=43 410 0044 FOVRLC=44 411 412 3200 IOVRLY=3200 413 3201 QOVRLY=3201 414 3202 EOVRLY=3202 415 3203 XOVRLY=3203 416 3204 FOVRLY=3204 417 418 /EACH OVERLAY IS ASSIGNED A LOCATION AT THE BEGINNING OF PAGE 3200. 419 /IF THIS LOCATION IS 0 (AS IT ALWAYS IS), THEN THAT OVERLAY IS 420 /IN CORE. IF IT IS NOT 0, THEN THIS LOCATION CONTAINS THE 421 /BLOCK NUMBER TO READ IN THAT OVERLAY. 422 /THUS EACH OVERLAY HAS POINTERS TO ALL THE OTHER OVERLAYS. /50 OS/8 TECO VERSION 7 V50 MACREL-V2C FRI 07-DEC-90 PAGE 9 FILE # 1 423 424 425 2000 MEMLOC=2000 426 427 /IN 16K MACHINES, FIELD 3 IS USED TO HOLD OVERLAYS 428 /IN 20K MACHINES, FIELD 4 SERVES THIS PURPOSE INSTEAD 429 430 /NAME BLOCK MEMORY 431 432 /I 40 2000 433 /Q 41 2400 434 /E 42 3000 435 /X 43 3400 436 /F 44 4000 437 438 439 /INITIAL MEMORY LAYOUT 440 441 /0000-3177 TECO 442 /3200-3577 OVERLAY AREA (INITIALLY I-OVERLAY) 443 /3600-3777 TECO 444 /4000-4377 PDP-12 DISPLAY ROUTINE 445 /4400-5177 TECO 446 /5200-5577 INITIALIZATION CODE 447 /5600-6177 Q-OVERLAY CODE 448 /6200-6577 E-OVERLAY CODE 449 /6600-7177 X-OVERLAY CODE 450 /7200-7577 F-OVERLAY CODE 451 452 /FIELD 1: 453 454 /0000-3177 VT52 SUPPORT CODE INITIALLY RESIDES HERE 455 /3200-3377 INITIAL COPY OF EXTENDED MATCH CONTROL CODE 456 /3400-3777 MORE INITIALIZATION CODE 457 /4000-4377 RESERVED FOR TECO.INI STUFF 458 /4400-7377 EXTENDED ERROR MESSAGES 459 / MOVES TO FIELD 3 OR 4 460 /7400-7577 FREE. AVAILABLE TO USER FOR EXTENDED CHAIN ARGUMENT /50 OS/8 TECO VERSION 7 V50 MACREL-V2C FRI 07-DEC-90 PAGE 10 FILE # 1 461 462 463 / EXECUTION-TIME MEMORY LAYOUT 464 465 / FIELD 0 NOTES 466 467 /0000-3177 TECO 468 /3200-3577 OVERLAY AREA 469 /3600-3777 TECO 470 /4000-4377 OUTPUT HANDLER (VR12 CODE ON PDP-12) 471 /4400-5137 TECO 472 /5140-5177 PUSHDOWN STACK 473 /5200-6177 OUTPUT BUFFER 474 /6200-7177 INPUT BUFFER (ADDITIONAL OUTPUT BUFFER IF .GT. 8K) 475 /7200-7377 INPUT HANDLER (EXTENDED MATCH CONTROL MAY BE HERE) 476 /7400-7577 MORE INPUT HANDLER (OUTPUT HANDLER ON PDP-12) 477 478 / FIELD 1 479 480 /0000-7637 TEXT BUFFER (IN 8K, Q-REGISTERS MULTIPLEX THIS AREA) 481 482 / FIELD 2 483 484 /0000-5577 Q-REGISTER STORAGE 485 /5600-7577 INPUT BUFFER 486 487 / FIELD 3 488 489 /0000-7577 VT SUPPORT 490 491 / FIELD 4 (FIELD 3 IF NO VT SUPPORT) 492 493 /0000-1777 HELP BUFFER 494 /2000-2377 RESIDENT I-OVERLAY 495 /2400-2777 RESIDENT Q-OVERLAY 496 /3000-3377 RESIDENT E-OVERLAY 497 /3400-3777 RESIDENT X-OVERLAY 498 /4000-4377 RESIDENT F-OVERLAY 499 /4400-7377 EXTENDED ERROR MESSAGE CODE 500 /50 OS/8 TECO VERSION 7 V50 MACREL-V2C FRI 07-DEC-90 PAGE 11 FILE # 1 501 502 503 /** TECO KLUDGES ** /7/27/73 504 /ONE OF THE REASONS WHY TECO GETS SO MANY OPERATIONS 505 /INTO SUCH A SMALL AMOUNT OF CORE IS THAT IT 506 /IS FULL OF *K*L*U*D*G*E*S*. THESE SHOULD BE KEPT IN MIND WHEN 507 /MODIFYING THE PROGRAM. SOME OF THEM ARE: 508 509 / THE "SORT" ROUTINE COMPARE LIST MUST END WITH A NEGATIVE NUMBER. 510 / USUALLY A FORTITUOUS JMS OR OPR INSTRUCTION IS USED 511 512 / THE "SORT" JUMP LIST ENTRIES ARE TREATED AS JUMP ADDRESSES 513 / IF THEY ARE POSITIVE AND SUBSTITUTE VALUES IF THEY ARE 514 / NEGATIVE - THEREFORE ALL LOCS JUMPED TO MUST BE BELOW 4000 515 / ANOTHER CONSEQUENCE IS THAT "QUOTST" CANNOT BE CALLED FROM 516 / ABOVE 4000 517 518 / THE MASTER DISPATCH TABLE HAS ENTRIES THAT ARE POSITIVE 519 / TO MEAN BRANCH TO THIS CODE, AND NEGATIVE TO MEAN THAT THE COMMAND 520 / IS HANDLED IN AN OVERLAY. THUS, ALL CODE FOR COMMANDS MUST START 521 / AT A POSITIVE ADDRESS. 522 523 / THERE ARE OTHER LOCALIZED KLUDGES - THEY CAN GENERALLY 524 / BE IDENTIFIED BY THE APPEARANCE OF A DOUBLE-ASTERISK IN THE 525 / COMMENTS FIELD ALONG WITH A TERSE DESCRIPTIVE COMMENT /50 OS/8 TECO VERSION 7 V50 MACREL-V2C FRI 07-DEC-90 PAGE 12 FILE # 1 526 527 528 0000 .JSW 0 529 0062 .VERSION VERSN 530 531 0200 .ASECT TECO.0 532 533 0000 *0 534 00000 0000 0 /RESERVED FOR USE BY 535 00001 6232 CIF 30 / OS/78 SYMBIONT SUPPORT 536 00002 5001 JMP .-1 537 00003 0000 NAME, ZBLOCK 4 /NAME BUILD BUFFER - MUST BE AT LOCATION 3 (USED TO BE 0) 538 /SEE 'NAMEC' ROUTINE 539 /LOCS 4,5&6 ARE NO LONGER RESERVED SO WE CAN USE OS/8 ODT 540 0006 DM=NAME+3 /50 OS/8 TECO VERSION 7 V50 MACREL-V2C FRI 07-DEC-90 PAGE 13 FILE # 1 541 542 543 0010 *10 /CONSTANTS & NON-INDIRECT TEMPS STORED IN AUTO-XRS! 544 00010 0033 QUOTE, 33 /QUOTE CHAR - SINGLE WORD SORT LIST 545 SERR, .ERROR 01 /END OF LIST 546 00012 0002 INRSIZ, 2 /4 IF 12K MACHINE 547 00013 0003 NUMLNS, 3 /NUMBER OF LINES (+ AND -) TO DISPLAY ON VR12 SCOPE 548 549 0200 .ASECT TEC.16 550 551 0016 *16 552 553 00016 0000 INXR, 0 /XR USED TO UNPACK INPUT BUFFER 554 00017 0000 XR, 0 /WORK XR 555 556 00020 0000 NMT, 0 /USED AS NUMBER TEMP AND SEARCH FAIL FLAG 557 00021 0000 CFLG, 0 /COMMA FLAG 558 00022 0000 CLNF, 0 /COLON FLAG 559 00023 0000 TFLG, 0 /TRACE FLAG 560 00024 0000 NFLG, 0 /NUMBER FLAG 561 00025 0000 QFLG, 0 /QUOTED STRING FLAG 562 00026 0000 M, 0 /NUMBER ARGS 563 00027 0000 N, 0 564 00030 0000 NLINK, 0 /LINK AFTER ARITH OPERATIONS 565 00031 0000 CHAR, 0 /CHARACTER BUFFER 566 00032 0000 ITRST, 0 /ITERATION FLAG 567 00033 0000 ITRCNT, 0 /ITERATION COUNT 568 00034 0000 MPDL, 0 /MACRO FLAG 569 00035 0000 SCHAR, 0 /LAST CHAR SORTED 570 00036 0000 FFFLAG, 0 /FORM FEED FLAG - 7777 IF FORM FEED SEEN ON THIS READ 571 00037 0000 REND, 0 /INPUT END-OF-FILE FLAG 572 00040 0000 SCANP, 0 /COMMAND LINE EXECUTION POINTER 573 00041 0000 OSCANP, 0 /BACKUP FOR SCANP 574 00042 0000 * PDLP, PDLBEG /PUSH-DOWN-LIST POINTER 575 00043 0000 QCMND, 0 /COMM LINE OR MACRO POINTER 576 00044 0000 P, 0 /CURRENT PNTR TO TEXT BUFFER 577 00045 0000 ZZ, 0 /END OF TEXT BUFFER POINTER 578 00046 0000 Q, 0 /EXTRA BUFFER POINTERS 579 IFNZRO .-47 <_ERROR_> 580 00047 0000 R, 0 581 00050 0000 QP, 0 /Q REGISTER POINTER 582 00051 0000 QZ, 0 /END OF Q-REG POINTER (MUST BE INITIALLY 0) 583 Z7, 584 00052 0007 CTLBEL, 7 585 00053 0015 CACR, 15 /CR 586 Z11, 587 00054 0011 CAHT, 11 /HT 588 Z33, 589 00055 0033 CAAM, 33 /ALT MODE 590 Z14, 591 00056 0014 CAFF, 14 /FF: END OF PAGE 592 00057 0013 13 /VT 593 Z12, 594 00060 0012 CALF, 12 /LF 595 NERR, .ERROR 07 /END OF LIST /50 OS/8 TECO VERSION 7 V50 MACREL-V2C FRI 07-DEC-90 PAGE 13-1 FILE # 1 596 00062 0000 * RADIX, DRAD /RADIX TABLE POINTER - DRAD OR ORAD /50 OS/8 TECO VERSION 7 V50 MACREL-V2C FRI 07-DEC-90 PAGE 14 FILE # 1 597 598 599 00063 0000 MQ, 0 600 00064 0000 DVT1, 0 601 00065 0000 ODEV, 0 /OUTPUT DEVICE NUMBER 602 00066 0000 OUTHND, 0 603 00067 0000 INHND, 0 604 00070 0000 EBFLG, 0 /EDIT BACKUP FLAG 605 00071 0000 QNMBR, 0 /LAST Q-REG REFERENCED 606 00072 0000 QBASE, 0 /BASE OF CURRENT COMMAND LINE 607 00073 0000 QLENGT, 0 /LENGTH OF CURRENT COMMAND LINE 608 00074 0000 QPTR, 0 /POINTER TO Q-REGISTER CONTROL BLOCK 609 00075 0000 ICRCNT, 0 /INPUT DOUBLEWORD COUNTER 610 00076 0000 OCRCNT, 0 /OUTPUT " 611 00077 0000 OPTR2, 0 /OUTPUT BUFFER POINTER 612 00100 0000 INRCNT, 0 /NUMBER OF INPUT RECORDS LEFT 613 00101 0000 OCMDLN, 0 /LENGTH OF OLD COMMAND LINE 614 00102 0000 CDT, 0 615 00103 4521 KTYPE, TYPE /*ET SET TO PUTT IF NO CONVERSION 616 00104 0000 TEMPT, 0 /TEMP. GET RID OF WHEN FIND ROOM ON PAGE 617 00105 0000 MEMSIZ, 0 /HIGHEST MEMORY FIELD IN BITS 9-11 618 00106 0000 LASTC, 0 /LAST CHARACTER GOTTEN OUT OF COMMAND LINE 619 /ZCHAR, 0 620 621 /NFLG: 0'ED BY COMMANDS WHICH EAT ARGUMENTS OR DON'T RETURN 622 / VALUES; SUCH AS C,R,J,L,^A,X,$,',>,^U,G,O AND 623 / NON-COLON MODIFIED SEARCHES 624 / SET TO -1 TO INDICATE THAT WE'VE SEEN A NUMBER /50 OS/8 TECO VERSION 7 V50 MACREL-V2C FRI 07-DEC-90 PAGE 15 FILE # 1 625 626 627 /TECO PSEUDO-OPERATIONS 628 629 4507 PUSH= JMS I .; PUSHXX 00107 0507 630 4510 POP= JMS I .; POPXX /** MUST BE ONE MORE THAN "PUSH" 00110 0501 631 4511 PUSHJ== JMS I .; PUSHJY 00111 0520 632 5512 POPJ== JMP I .; POPJXX 00112 0470 633 4513 PUSHL== JMS I .; PUSHLX 00113 0527 634 4513 POPL== PUSHL /** POPL CALLED WITH POSITIVE AC 635 636 4514 ERR= JMS I .;ERROR,ERRXX 00114 2600 637 4515 SORT== JMS I .; SORTB 00115 1530 638 5516 RESORT== JMP I .; SORTA2 00116 1556 639 4517 SCAN== JMS I .; SGET 00117 2423 640 4520 LISTEN= JMS I .; TYI 00120 2727 641 4521 TYPE== JMS I .; TYPCTV 00121 2200 642 4522 OUTPUT== JMS I .;OUTR, ERRXX /** MUST BE ONE MORE THAN "TYPE" 00122 2600 643 /PROBABLY NOT ANY MORE (19-JUN-77) 644 4523 CRLF== JMS I .; TYCRLF 00123 3033 645 4524 GETQ== JMS I .; GETQX 00124 0422 646 4525 SKPSET== JMS I .; SETSKP 00125 0000 * 647 2024 NCHK== ISZ NFLG /USED TO BE A SUBROUTINE CALL 648 4526 CTCCHK= JMS I .; CHKCTC 00126 0453 649 4527 BZCHK= JMS I .; CHKBZ 00127 4611 650 4530 QCHK== JMS I .; CHKQF 00130 3657 651 4531 QSKP== JMS I .; QOVER 00131 2367 652 4532 QREF== JMS I .; QREFER 00132 2477 /50 OS/8 TECO VERSION 7 V50 MACREL-V2C FRI 07-DEC-90 PAGE 16 FILE # 1 653 654 655 4533 QSUM= JMS I .; QSUMR 00133 2400 656 4534 QPUT== JMS I .; QPUTS 00134 0400 657 4535 QUOTST== JMS I .; QTST 00135 2563 658 4536 SETCMD= JMS I .; CMDSET 00136 2465 659 4537 GETN= JMS I .; NGET 00137 3057 660 4540 ADJQ== JMS I .; QADJ 00140 2265 661 4541 MQLDVI== JMS I .; DVIMQL 00141 3637 662 4542 UPPERC= JMS I .; CUPPER 00142 2750 663 4543 SCANUP== JMS I .; SCUPPR 00143 4624 664 4544 TSTSEP== JMS I .; SCHSRT 00144 3615 665 4545 DISPLY== JMS I .; DSPLAY 00145 0000 * 666 4546 NOTRCE== JMS I .; SAVTRA 00146 3666 667 4547 ENTRCE== JMS I .; RESTRA 00147 3673 668 4550 OVRLAY= JMS I .; OVERLY 00150 2534 669 4551 GETNUM== JMS I .; NUMGET /GET 13 BIT NUMBER INTO L,AC 00151 0643 670 4552 PUTT== JMS I .; TPUT 00152 0554 671 4553 TESTA== JMS I .; TSTA 00153 4535 672 4554 TESTD== JMS I .; TSTD 00154 0000 * /50 OS/8 TECO VERSION 7 V50 MACREL-V2C FRI 07-DEC-90 PAGE 17 FILE # 1 673 674 675 / PAGE 0 LITERALS (THAT LINKER COULDN'T SHARE) 676 677 00155 7400 Z7400, 7400 678 00156 0004 Z4, 4 679 00157 0040 Z40, 40 680 00160 0200 Z200, 200 681 00161 7766 ZM12, -12 682 00162 7720 ZM60, -60 683 Z7740, 684 00163 7740 ZM40, -40 685 Z7700, 686 00164 7700 ZM100, -100 687 ZM10, 688 00165 7770 Z7770, -10 689 00166 0377 Z377, 377 690 00167 0177 Z177, 177 691 00170 0077 Z77, 77 692 00171 2555 ZIREST, IREST 693 00172 4456 ZNXTBUF,NXTBUF 694 00173 4740 ZQPNTR, QPNTR 695 00174 0052 Z52, "* 696 00175 0100 Z100, 100 697 00176 0137 Z137, 137 698 00177 0006 Z6, 6 /50 OS/8 TECO VERSION 7 V50 MACREL-V2C FRI 07-DEC-90 PAGE 18 FILE # 1 699 700 701 0200 .ASECT TECO 702 703 /ENTER HERE TO USE AN ASR33 AS THE TELETYPE 704 705 00200 2741 TECOS, ISZ I SPUT /IF CALLED BY "R" OR "RUN" - CHANGED TO TLS 706 00201 5731 TECO1, JMP I COMPAR /IF CALLED VIA "CHAIN" - CHANGED TO "JMP T0A" 707 00202 4331 TBEL, JMS COMPAR /HERE ON ^G - 2 ^G'S KILL ENTIRE COMMAND 708 709 00203 4523 T0, CRLF 710 00204 1260 T0A, TAD PDL..B 711 00205 3042 DCA PDLP /INITIALIZE PUSHDOWN LIST 712 00206 1042 T1, TAD PDLP 713 00207 7041 CIA 714 00210 1260 TAD PDL..B 715 00211 7640 SZA CLA 716 .ERROR 02 /ERROR - PUSHDOWN LIST DID NOT BALANCE 717 00213 1377 TAD (45 718 00214 4532 QREF /SET UP POINTERS TO COMMAND LINE 719 00215 1573 TAD I ZQPNTR 720 00216 3101 DCA OCMDLN /SAVE OLD COMMAND LINE LENGTH 721 /** SAVE ONLY IF < 20? 722 00217 4540 ADJQ /REDUCE COMMAND LINE LENGTH TO 0 723 00220 7100 CLL 724 00221 4511 PUSHJ 725 00222 0000 * NRET /CLEAR NUMBER AND LAST OPERATOR 726 00223 3034 DCA MPDL /DELETE MACRO FLAG 727 00224 3032 DCA ITRST /ALSO ITERATION FLAG, 728 00225 3022 DCA CLNF /AND COLON FLAG 729 00226 4511 PUSHJ /KILL QUOTE FLAG 730 00227 2765 ZROSPN /KILL QUOTE AND NUMBER FLAGS AND SCAN POINTER 731 00230 6032 KCC /KILL ^O IF IN KEYBOARD BUFFER 732 00231 1776 TAD I (ETFLAG 733 00232 0375 AND (3537 /KILL FATAL ERROR RETURN AND ^C TRAP AND READ W NO WAIT 734 00233 3776 DCA I (ETFLAG 735 00234 3023 DCA TFLG /PROMPT SHOULD CLEAR TRACE FLAG 736 00235 1374 TAD (AIDLST 737 00236 3246 DCA SRT+1 /FIRST CHARACTER AFTER PROMPT IS SPECIAL 738 00237 1174 TAD Z52 739 00240 7410 SKP 740 00241 4773 ROCMND, JMS I (BACKUP /BACK UP AND GET LAST CHAR 741 00242 4521 TYPE 742 00243 3031 T2M1, DCA CHAR /KILL CHAR TO PREVENT SPURIOUS DOUBLE CHARACTERS 743 00244 4520 T2, LISTEN /BUILD COMMAND LINE 744 SRT, .SORT AIDLST,AIDTAB /CHECK FOR SPECIAL FIRST CHARACTERS 745 .SORT COMLST,COMTAB /CHECK FOR IMMEDIATE MODE COMMANDS 746 00253 3031 T2A, DCA CHAR 747 00254 1054 TAD Z11 /GUARANTEED NEGATIVE NUMBER INDICATES NULL LIST (11 CONTAINS SERR) 748 00255 3246 DCA SRT+1 /NOT AT FIRST CHARACTER ANY MORE 749 00256 4341 JMS SPUT /PUT INTO C.L. BUFFER 750 00257 5244 JMP T2 /GO GET ANOTHER 751 752 00260 0000 * PDL..B, PDLBEG /50 OS/8 TECO VERSION 7 V50 MACREL-V2C FRI 07-DEC-90 PAGE 19 FILE # 1 753 754 755 00261 1053 TCRLF, TAD CACR /CR IN COMM LINE 756 00262 3031 DCA CHAR 757 00263 4341 JMS SPUT /PUT INTO COMM LINE 758 00264 1060 TAD CALF /THEN PUT IN A LF 759 00265 5253 JMP T2A /AND GET SOME MORE /50 OS/8 TECO VERSION 7 V50 MACREL-V2C FRI 07-DEC-90 PAGE 20 FILE # 1 760 761 762 .SBTTL . Command Execution Loop 763 764 00266 4331 TALTM, JMS COMPAR /2ND ALTM STARTS EXECUTION 765 00267 4523 CRLF /START COMM EXECUTION 766 00270 3514 DCA I ERROR /CLEAR ERROR JUST OCCURRED FLAG 767 00271 1377 CHTECO, TAD (45 /NUMBER OF INPUT COMMAND Q-REGISTER 768 00272 4536 SETCMD /SET UP THE INPUT LINE AS THE CURRENT COMMAND LINE 769 00273 4543 6$: SCANUP 770 00274 3031 T6A: DCA CHAR /SAVE COMMAND CHAR 771 00275 1031 TAD CHAR 772 00276 1372 TAD (CDSP /ADD BASE OF DISPATCH TABLE 773 00277 3317 DCA 8$ /LOOK UP ENTRY IN 774 00300 1371 TAD (OVBRAN /PREPARE TO DISPATCH TO OVERLAY 775 00301 3307 DCA 7$ 776 00302 1717 TAD I 8$ /COMMAND DISPATCH TABLE 777 00303 7500 SMA /IS AN OVERLAY NECESSARY? 778 00304 3307 DCA 7$ /NO, CALL RECURSIVELY 779 00305 7100 CLL /YES 780 00306 4511 PUSHJ 781 00307 0000 7$: 0 /CALL TO ROUTINE 782 00310 7200 CLA /** AC MAY NOT BE ZERO HERE ** 783 00311 1024 TAD NFLG 784 00312 7710 SPA CLA 785 00313 5273 JMP 6$ 786 00314 3027 DCA N /IF WE ARE NOT ENTERING A NUMBER 787 00315 3030 DCA NLINK /SET 13-BIT N TO 0 788 00316 5273 JMP 6$ /KEEP INTERPRETING 789 790 00317 0000 8$: 0 791 792 TQMK, .OVRLAY E,QMK 793 794 TSLASH, .OVRLAY E,XH 795 796 VBAR, .OVRLAY Q,VBARE /50 OS/8 TECO VERSION 7 V50 MACREL-V2C FRI 07-DEC-90 PAGE 21 . Command Execution Loop FILE # 1 797 798 799 00331 0000 * COMPAR, TCINIT /LOOK FOR DOUBLED COMM LINE CHARS 800 00332 1035 TAD SCHAR /MOST RECENT 801 00333 7041 CIA 802 00334 1031 TAD CHAR /PREVIOUS 803 00335 7640 SZA CLA 804 00336 5516 RESORT /NOT THE SAME 805 00337 4341 JMS SPUT /PUT THE CHAR INTO THE COMMAND LINE AND ECHO IT 806 00340 5731 JMP I COMPAR /SAME-SPECIAL HANDLING 807 808 00341 0000 * SPUT, JTECO /PUT CHAR INTO COMM LINE 809 00342 1051 TAD QZ 810 00343 3050 DCA QP 811 00344 1031 TAD CHAR 812 00345 4534 QPUT /STORE CHARACTER AWAY 813 00346 1573 TAD I ZQPNTR 814 00347 7001 IAC 815 00350 4540 ADJQ /ADJUST COMMAND LINE REGISTER LENGTH 816 00351 1031 TAD CHAR 817 00352 4521 TYPE /TYPE THE INSERTED CHARACTER 818 00353 1573 TAD I ZQPNTR 819 00354 1060 TAD Z12 820 00355 7710 SPA CLA 821 00356 5364 JMP 1$ /TYPE BELL IF WITHIN 12 CHARACTERS OF 2048 822 00357 7100 CLL 823 00360 1051 TAD QZ 824 00361 1367 TAD QLIMIT 825 00362 7620 SNL CLA /TYPE A BELL IF THE LINE IS 826 00363 5741 JMP I SPUT / WITHIN 12 CHARS OF OVERFLOW 827 00364 1052 1$: TAD Z7 /EMERGENCY! 828 00365 4552 PUTT 829 00366 5741 JMP I SPUT 830 00367 4072 QLIMIT, 12-QMAX ------ 00371 2616 00372 0000 * 00373 3070 00374 4510 00375 3537 00376 4552 00377 0045 831 0400 PAGE /50 OS/8 TECO VERSION 7 V50 MACREL-V2C FRI 07-DEC-90 PAGE 22 . Command Execution Loop FILE # 1 832 833 834 .SBTTL . Q-register pack and unpack 835 836 /THE Q-REGISTERS ARE STORED IN THE UPPER 4 BITS OF THE WORDS 837 /WHICH HAVE THE TEXT BUFFER CHARACTERS IN THEIR LOWER 8 BITS. 838 /THEREFORE EACH Q-REGISTER CHARACTER TAKES 2 WORDS. 839 840 00400 0000 QPUTS, 0 /STORE THROUGH POINTER "QP" AND BUMP POINTER 841 00401 7106 CLL RTL 842 00402 7006 RTL 843 00403 3222 DCA GETQX /SAVE CHARACTER 844 00404 1050 TAD QP 845 00405 7104 CLL RAL 846 00406 3253 DCA CHKCTC /COMPUTE CORE POINTER = 2*QP 847 00407 6211 CDF 10 848 00410 1222 TAD GETQX 849 00411 4243 JMS ST4BTS /STORE HIGH ORDER 4 BITS 850 00412 2253 ISZ CHKCTC 851 00413 1222 TAD GETQX 852 00414 7106 CLL RTL 853 00415 7006 RTL 854 00416 4243 JMS ST4BTS /STORE LOW ORDER 4 BITS 855 00417 6201 CDF 0 856 00420 2050 ISZ QP /BUMP POINTER 857 00421 5600 JMP I QPUTS 858 859 00422 0000 GETQX, 0 860 00423 7104 CLL RAL 861 00424 3253 DCA CHKCTC /COMPUTE CORE POINTER = 2*AC 862 00425 6211 CDF 10 863 00426 1653 TAD I CHKCTC 864 00427 0155 AND Z7400 /FETCH HIGH ORDER 865 00430 2253 ISZ CHKCTC 866 00431 3200 DCA QPUTS 867 00432 1653 TAD I CHKCTC 868 00433 0155 AND Z7400 /FETCH LOW ORDER 869 00434 7112 CLL RTR 870 00435 7012 RTR 871 00436 1200 TAD QPUTS /COMBINE TO FORM CHARACTER 872 00437 7012 RTR 873 00440 7012 RTR 874 00441 6201 CDF 0 875 00442 5622 JMP I GETQX 876 877 00443 0000 ST4BTS, 0 878 00444 0155 AND Z7400 879 00445 3301 DCA POPXX 880 00446 1653 TAD I CHKCTC 881 00447 0166 AND Z377 882 00450 1301 TAD POPXX 883 00451 3653 DCA I CHKCTC /STORE HIGH ORDER 884 00452 5643 JMP I ST4BTS 885 886 /MANY LOCATIONS ABOVE ARE FREE IN 12K /50 OS/8 TECO VERSION 7 V50 MACREL-V2C FRI 07-DEC-90 PAGE 23 . Q-register pack and unpack FILE # 1 887 888 889 00453 0000 CHKCTC, 0 /SUBROUTINE TO CHECK FOR ^C IN KEYBOARD 890 /** AC MAY NOT BE 0 ON ENTRY 891 00454 7600 C7600, 7600 /JUST IN CASE THERE IS NO MQ 892 00455 6031 VT52B, KSF /*VT52 893 00456 5653 JMP I CHKCTC /*VT52 NO CHAR IN KEYBOARD BUFFER - EXIT 894 00457 6034 KRS /*VT52 895 00460 0167 AND Z177 /KILL PARITY BIT 896 00461 1377 TAD (-3 897 00462 7440 SZA /^C? 898 00463 5653 CHKCTR, JMP I CHKCTC /NO - RESUME WITH NON-ZERO AC 899 .ERROR 34 /^C, EXECUTION ABORTED 900 901 .SBTTL Cmd ^C 902 903 00465 6041 CTL.C, TSF 904 00466 5265 JMP CTL.C /WAIT FOR TELETYPE TO DIE DOWN 905 00467 5654 JMP I C7600 /RETURN TO OS/8 906 907 908 00470 3222 POPJXX, DCA GETQX /POPJ ROUTINE 909 00471 4510 POP 910 00472 3301 POPJXY, DCA POPXX 911 00473 1222 TAD GETQX 912 00474 5701 JMP I POPXX 913 914 .SBTTL Cmd ^ 915 916 00475 4510 CHR.UA, POP /^ COMMAND - POP OFF RETURN ADDRESS 917 00476 4543 SCANUP /GET THE NEXT CHARACTER IN UPPER CASE 918 00477 0170 AND Z77 /MAKE IT A CONTROL CHARACTER 919 00500 5776 JMP I (T6A /USE IT INSTEAD OF THE ^ /50 OS/8 TECO VERSION 7 V50 MACREL-V2C FRI 07-DEC-90 PAGE 24 Cmd ^ FILE # 1 920 921 922 .SBTTL . Push down list routines 923 924 00501 0000 POPXX, 0 /POP ROUTINE 925 00502 7240 STA 926 00503 1042 TAD PDLP 927 00504 3042 DCA PDLP 928 00505 1442 TAD I PDLP 929 00506 5701 JMP I POPXX 930 931 00507 0000 PUSHXX, 0 /PUSH ROUTINE (DOESN'T AFFECT LINK) 932 00510 3442 DCA I PDLP 933 00511 2042 ISZ PDLP /BUMP PUSHDOWN POINTER 934 00512 1042 TAD PDLP /CHECK FOR EXACTLY FULL - THIS ALLOWS THE 935 00513 1317 TAD PDL..E 936 00514 7650 SNA CLA /** ERROR ROUTINE TO DO A PUSHJ 937 .ERROR 04 /FULL - REPORT IT 938 00516 5707 JMP I PUSHXX 939 940 00517 **** * PDL..E, -PDLEND 941 942 00520 0000 PUSHJY, 0 /PUSHJ ROUTINE (DOESN'T AFFECT LINK) 943 00521 3222 DCA GETQX 944 00522 7001 IAC /** LINK SHOULD BE PRESERVED ON EXIT 945 00523 1320 TAD PUSHJY 946 00524 4507 PUSH 947 00525 1720 TAD I PUSHJY 948 00526 5272 JMP POPJXY 949 950 00527 0000 PUSHLX, 0 /PUSH AND CLEAR A LIST 951 00530 7100 CLL 952 00531 7500 SMA /PUSH LIST IF AC<0, POP IT IF >=0 953 00532 7160 CMA STL 954 00533 3320 DCA PUSHJY /SET COUNTER 955 00534 7004 RAL /** DEPENDS ON FACT THAT POP=PUSH+1 ** 956 00535 1352 TAD 3$ 957 00536 3344 DCA 2$ /STORE EITHER A "PUSH" OR A "POP" 958 00537 4510 POP /SAVE RETURN POINTER 959 00540 3253 DCA CHKCTC 960 00541 1727 1$: TAD I PUSHLX 961 00542 3222 DCA GETQX 962 00543 1622 TAD I GETQX 963 00544 4507 2$: PUSH /PUSH OR POP 964 00545 3622 DCA I GETQX /IF PUSHYX=PUSH, THIS ZEROES THE PUSHED LOCATION 965 00546 2327 ISZ PUSHLX 966 00547 2320 ISZ PUSHJY 967 00550 5341 JMP 1$ 968 00551 1253 TAD CHKCTC /RESTORE RETURN POINTER 969 00552 4507 3$: PUSH 970 00553 5727 JMP I PUSHLX /50 OS/8 TECO VERSION 7 V50 MACREL-V2C FRI 07-DEC-90 PAGE 25 . Push down list routines FILE # 1 971 972 973 00554 0000 TPUT, 0 /TELETYPE OUTPUT 974 00555 3104 DCA TEMPT 975 00556 4526 TPUTX, CTCCHK /CHECK FOR ^C 976 00557 1375 TAD (3-17 /INHIBIT PRINTING AS LONG AS THERE 977 00560 7450 SNA /IS A ^O IN THE KEYBOARD BUFFER. 978 00561 5754 JMP I TPUT 979 00562 1374 TAD (17-23 /CHECK FOR ^S 980 00563 7650 SNA CLA 981 00564 5356 JMP TPUTX 982 00565 6041 TSF /WAIT FOR TELETYPE FLAG 983 00566 5365 TSFWT, JMP .-1 /WHILE WAITING, DISPLAY TEXT ON SCOPE 984 00567 1104 TAD TEMPT 985 00570 6046 TLS 986 00571 3373 DCA OUTDNE 987 00572 5754 JMP I TPUT 988 00573 0000 OUTDNE, 0 ------ 00574 7774 00575 7764 00576 0274 00577 7775 989 0600 PAGE /50 OS/8 TECO VERSION 7 V50 MACREL-V2C FRI 07-DEC-90 PAGE 26 . Push down list routines FILE # 1 990 991 992 .SBTTL Cmd J 993 994 00600 3024 CHR.J, DCA NFLG /COMMAND J 995 00601 4551 GETNUM /CAUSE NEG ARGUMENT TO GIVE A POP 996 00602 5210 JMP CLOQ 997 998 .SBTTL Cmd R 999 1000 00603 4537 CHR.R, GETN /GET LAST NUMBER, DEFAULT=(+ OR -)1 1001 00604 7061 CHR1, CML CIA /NEGATE 13-BIT NUMBER 1002 00605 7410 SKP 1003 1004 .SBTTL Cmd C 1005 1006 00606 4537 CHR.C, GETN /GET LAST NUMBER, DEFAULT=(+ OR -)1 1007 00607 1044 TAD P /OFFSET RELATIVE TO . 1008 / 1009 / *** LINK NOT ALWAYS SET RIGHT 1010 / 1011 00610 4527 CLOQ, BZCHK /SEE IF IN RANGE B,Z 1012 .ERROR 11 /?POP 1013 00612 3044 DCA P /IN RANGE 1014 00613 5512 POPJ /50 OS/8 TECO VERSION 7 V50 MACREL-V2C FRI 07-DEC-90 PAGE 27 Cmd C FILE # 1 1015 1016 1017 .SBTTL Cmd L 1018 1019 00614 4537 CHR.L, GETN /GET LAST NUMBER, DEFAULT=(+ OR -)1 1020 00615 6211 CHRL1, CDF 10 1021 00616 7470 SZL SNA 1022 00617 5232 JMP 2$ 1023 00620 7041 CIA 1024 00621 3102 DCA CDT 1025 00622 1044 L$: TAD P 1026 00623 7041 CIA 1027 00624 1045 TAD ZZ 1028 00625 7650 SNA CLA /IF WE ARE AT THE END OF THE BUFFER, 1029 00626 5366 JMP DNN3 /RETURN 1030 00627 4777 JMS I (CHLCMP /COMPARE CHARACTER AGAINST LINE FEED 1031 00630 2044 ISZ P 1032 00631 5222 JMP L$ /KEEP GOING UNTIL WE GET THERE OR OVERFLOW BUFFER 1033 00632 1376 2$: TAD (-1 1034 00633 3102 DCA CDT 1035 00634 7340 1$: CLA CMA CLL 1036 00635 1044 TAD P 1037 00636 3044 DCA P /MOVE POINTER BACKWARD 1 1038 00637 7420 SNL 1039 00640 5775 JMP I (CHRLI /OOPS - PAST THE BEGINNING OF THE BUFFER - RETURN 1040 00641 4777 JMS I (CHLCMP /COMPARE CHARACTER AGAINST LINE FEED 1041 00642 5234 JMP 1$ /NOT SATISFIED YET - KEEP LOOPING 1042 1043 00643 0000 NUMGET, 0 /PUT 13-BIT NUMBER IN L,AC 1044 00644 1030 TAD NLINK 1045 00645 7110 CLL RAR 1046 00646 1027 TAD N 1047 00647 5643 JMP I NUMGET /50 OS/8 TECO VERSION 7 V50 MACREL-V2C FRI 07-DEC-90 PAGE 28 Cmd L FILE # 1 1048 1049 1050 .SBTTL Cmd D 1051 1052 00650 1021 CHR.D, TAD CFLG /WAS THERE A COMMA? *WM 1053 00651 7640 SZA CLA /IF COMMA, TREAT LIKE N,MK 1054 00652 5326 JMP CHR.K /YES, 2 ARGS TO D 1055 00653 4537 GETN /GET LAST NUMBER, DEFAULT=(+ OR -)1 1056 00654 7420 SNL /SIGN BIT OF 13-BIT NUMBER IS IN LINK 1057 00655 5333 JMP PLUSND /+ND 1058 00656 7141 CLL CIA 1059 00657 3102 DCA CDT /-ND 1060 00660 1102 TAD CDT 1061 00661 4511 PUSHJ /DO (-)NC(+)ND 1062 00662 0604 CHR1 1063 00663 1102 TAD CDT 1064 00664 5333 JMP PLUSND 1065 1066 00665 7450 ADJ, SNA /ADJUST BUFFER + OR - N CHARS 1067 /TEST FOR NOTHING 1068 00666 5512 POPJ /GO AWAY 1069 00667 7120 STL /MOVE UP N CHARACTERS 1070 00670 1045 TAD ZZ /ADD TO MAX CHARACTER 1071 00671 3047 DCA R /NEW HIGHEST 1072 00672 1047 TAD R /SEE IF TOO HIGH 1073 00673 1374 TAD (-ZMAX 1074 00674 7660 SNL SZA CLA /TWO PLACES FOR OVERFLOW THERE 1075 .ERROR 05 1076 00676 1045 TAD ZZ 1077 00677 3046 DCA Q 1078 00700 1047 TAD R 1079 00701 3045 DCA ZZ 1080 00702 6211 CDF 10 1081 00703 1046 UPNL, TAD Q 1082 00704 7041 CIA 1083 00705 1044 TAD P 1084 00706 7650 SNA CLA /FINISHED? 1085 00707 5366 JMP DNN3 /YES 1086 00710 7040 CMA 1087 00711 1046 TAD Q 1088 00712 3046 DCA Q 1089 00713 7040 CMA 1090 00714 1047 TAD R 1091 00715 3047 DCA R 1092 00716 1446 TAD I Q /GET A CHAR 1093 00717 0166 L12K1, AND Z377 /JMP .+5 IF 12K 1094 00720 3370 DCA CHLTMP 1095 00721 1447 TAD I R /BE CAREFUL NOT TO 1096 00722 0155 AND Z7400 /DESTROY THE HIGH- 1097 00723 1370 TAD CHLTMP /ORDER 4 BITS 1098 5324 J12K1= JMP . 1099 00724 3447 DCA I R /AND PUT IT IN THE LOW PART OF THE TARGET WORD 1100 00725 5303 JMP UPNL /50 OS/8 TECO VERSION 7 V50 MACREL-V2C FRI 07-DEC-90 PAGE 29 Cmd D FILE # 1 1101 1102 1103 .SBTTL Cmd K 1104 1105 00726 4773 CHR.K, JMS I (NLINES /CONVERT LINES TO CHARS 1106 00727 3102 DCA CDT 1107 00730 1026 TAD M /SET POINTER 1108 00731 3044 DCA P /LOWER ARG 1109 00732 1102 TAD CDT 1110 00733 7450 PLUSND, SNA 1111 00734 5512 POPJ /IGNORE 0D 1112 00735 7100 ADJ2, CLL 1113 00736 1044 TAD P /MOVE DOWN N CHARACTERS 1114 00737 4527 BZCHK 1115 .ERROR 37 /DELETE TOO BIG 1116 00741 3046 DCA Q /N IN AC 1117 00742 1044 TAD P 1118 00743 3047 DCA R 1119 00744 6211 CDF 10 1120 00745 1045 DNN1, TAD ZZ 1121 00746 7041 CIA 1122 00747 1046 TAD Q 1123 00750 7650 SNA CLA /FINISHED? 1124 00751 5364 JMP DNN2 1125 00752 1446 TAD I Q /GET A CHAR 1126 00753 0166 L12K2, AND Z377 /JMP .+5 IF 12K 1127 00754 3370 DCA CHLTMP 1128 00755 1447 TAD I R /BE CAREFUL NOT TO 1129 00756 0155 AND Z7400 /DESTROY THE HIGH- 1130 00757 1370 TAD CHLTMP /ORDER 4 BITS 1131 5360 J12K2= JMP . 1132 00760 3447 DCA I R /AND PUT IT IN THE LOW PART OF THE TARGET WORD 1133 00761 2046 ISZ Q 1134 00762 2047 ISZ R 1135 00763 5345 JMP DNN1 1136 00764 1047 DNN2, TAD R 1137 00765 3045 DCA ZZ 1138 00766 6201 DNN3, CDF 0 1139 00767 5512 POPJ 1140 1141 00770 0000 CHLTMP, 0 1142 1143 /GO TO ADJ TO MOVE UP TEXT 1144 /GOTO ADJ2 TO MOVE DOWN TEXT 1145 /IN EITHER CASE, AC CONTAINS NUMBER OF CHARS TO MOVE (0-4095) /50 OS/8 TECO VERSION 7 V50 MACREL-V2C FRI 07-DEC-90 PAGE 30 Cmd K FILE # 1 1146 1147 1148 00771 5772 C.W, JMP I (CHR.W /THIS MUST BE BELOW 4000 ------ 00772 4440 00773 1716 00774 0140 00775 3114 00776 7777 00777 3102 1149 1000 PAGE /50 OS/8 TECO VERSION 7 V50 MACREL-V2C FRI 07-DEC-90 PAGE 31 Cmd K FILE # 1 1150 1151 1152 .SBTTL . Scope subroutines 1153 1154 0200 .ASECT TEC0B 1155 1156 1400 *1400 1157 1158 /CURSOR RIGHT IS $C 1159 /CURSOR UP IS $A 1160 /ERASE LINE IS $K 1161 1162 01400 0000 BUGFLG, 0 /-1 MEANS MUST RETYPE LINE ON NEXT RUBOUT 1163 1164 01401 0000 BSP, 0 1165 01402 1230 TAD TTY10 1166 01403 4552 PUTT /TYPE BS, SPACE, BS 1167 01404 1245 TAD TTY40 1168 01405 4552 PUTT 1169 01406 1230 TAD TTY10 1170 01407 4552 PUTT 1171 01410 7240 STA 1172 01411 1777 TAD I (COLCT /FIX UP COLUMN COUNTER 1173 01412 3777 DCA I (COLCT 1174 01413 5601 JMP I BSP /50 OS/8 TECO VERSION 7 V50 MACREL-V2C FRI 07-DEC-90 PAGE 32 . Scope subroutines FILE # 1 1175 1176 1177 01414 4776 SCOPY, JMS I (BACKUP /BACK UP ONE CHAR IN CMD LINE 1178 01415 1163 TAD ZM40 /LOOK AT CHAR WE BACKED OVER 1179 01416 7500 SMA 1180 01417 5226 JMP SCP.RO /IT'S EASY TO RUB THIS ONE OUT 1181 01420 1157 TAD Z40 /RESTORE CHARACTER 1182 .SORT CTLBEL,SCPTAB 1183 01424 7200 SCP.BEL,CLA 1184 01425 4201 JMS BSP /^X NEEDS TWO RUB OUTS 1185 01426 7200 SCP.RO, CLA 1186 01427 2200 ISZ BUGFLG /MAYBE WE REALLY SHOULD REPRINT LINE 1187 01430 7410 TTY10, SKP /NOT NECESSARY 1188 01431 5261 JMP SCP.CR /NECESSARY (PREVIOUS VERTICAL MOTION MAY 1189 /HAVE SCROLLED OFF TOP OF SCREEN) 1190 01432 4201 JMS BSP /RUB IT OUT 1191 01433 3200 SCOPGO, DCA BUGFLG 1192 01434 5775 JMP I (T2M1 1193 1194 01435 1052 SCP.LF, TAD CTLBEL /CURSOR UP 1 1195 01436 1374 SCP.FF, TAD (-4 /CURSOR UP 8 1196 01437 1374 SCP.VT, TAD (-4 /CURSOR UP 4 1197 01440 3201 DCA BSP 1198 01441 4773 JMS I (ESCAPE 1199 01442 0101 VT05B, 101 /CURSOR UP 1200 01443 2201 ISZ BSP 1201 01444 5241 JMP .-3 1202 01445 7240 TTY40, STA 1203 01446 5233 JMP SCOPGO /50 OS/8 TECO VERSION 7 V50 MACREL-V2C FRI 07-DEC-90 PAGE 33 . Scope subroutines FILE # 1 1204 1205 1206 .SBTTL Imm ^G<space> 1207 .SBTTL Imm ^G* 1208 1209 01447 1161 TSPACE, TAD ZM12 1210 01450 3326 TSTAR, DCA BCHAR 1211 01451 1031 TAD CHAR /LOOK AT PREVIOUS CHARACTER 1212 01452 1372 TAD (-7 1213 01453 7640 SZA CLA /WAS IT ^G ? 1214 01454 5516 RESORT /NO 1215 01455 7240 STA /YES 1216 01456 1573 TAD I ZQPNTR /REDUCE CMD LINE BY 1 CHAR 1217 01457 4540 ADJQ /I.E. GET RID OF ^G 1218 01460 5263 JMP BLSP1 1219 1220 01461 1161 SCP.CR, TAD ZM12 1221 01462 3326 DCA BCHAR 1222 01463 4523 BLSP1, CRLF /TAD CACR 1223 01464 7000 BLSP2, NOP /TYPE 1224 01465 1063 TAD MQ 1225 01466 3325 DCA SAVMQ 1226 01467 3063 DCA MQ 1227 01470 1051 TAD QZ /START FROM END OF COMMAND LINE 1228 01471 3050 L$: DCA QP /AND SEARCH FOR LF 1229 01472 7240 STA 1230 01473 1063 TAD MQ /COUNT HOW MANY 1231 01474 3063 DCA MQ 1232 01475 1072 TAD QBASE 1233 01476 7040 CMA 1234 01477 1050 TAD QP 1235 01500 7510 SPA 1236 01501 5312 JMP 2$ 1237 01502 1072 TAD QBASE 1238 01503 4524 GETQ 1239 01504 1326 TAD BCHAR /LOOK FOR LF 1240 01505 7650 SNA CLA /IS IT LF? 1241 01506 5315 JMP 3$ /YES 1242 01507 7240 STA /NO 1243 01510 1050 TAD QP /BUMP BACK ONE MORE CHAR 1244 01511 5271 JMP L$ 1245 1246 01512 7200 2$: CLA 1247 01513 1174 TAD Z52 /PRINT ANOTHER * 1248 01514 4521 TYPE 1249 01515 4511 3$: PUSHJ 1250 01516 2762 COLG4 /REPRINT LINE TO END OF CMD LINE 1251 01517 1325 TAD SAVMQ /RESTORE MQ 1252 01520 3063 DCA MQ 1253 01521 7000 BLSP3, NOP /JMS I SCAPE 1254 01522 7000 BLSP4, NOP /113 1255 01523 6032 KCC 1256 01524 5775 JMP I (T2M1 1257 1258 01525 0000 SAVMQ, 0 /50 OS/8 TECO VERSION 7 V50 MACREL-V2C FRI 07-DEC-90 PAGE 33-1 Imm ^G* FILE # 1 1259 01526 7766 BCHAR, -12 /CHAR WE'RE SEARCHING BACKWARDS FOR 1260 01527 0000 * SCAPE, ESCAPE /50 OS/8 TECO VERSION 7 V50 MACREL-V2C FRI 07-DEC-90 PAGE 34 Imm ^G* FILE # 1 1261 1262 1263 .SBTTL . Sort and branch 1264 1265 01530 0000 SORTB, 0 /SORT AND BRANCH ROUTINE 1266 01531 3035 DCA SCHAR /SAVE SORT CHAR 1267 01532 7240 STA 1268 01533 1730 TAD I SORTB /GET POINTER TO LIST 1269 01534 2330 ISZ SORTB 1270 01535 3017 DCA XR 1271 01536 1417 SORTA1, TAD I XR /GET ITEM IN TEST LIST 1272 01537 7510 SPA /END MARKED BY NEG VALUE 1273 01540 5356 JMP SORTA2 /FELL OUT BOTTOM 1274 01541 7161 CIA STL 1275 01542 1035 TAD SCHAR 1276 01543 7640 SZA CLA /COMPARE SORT CHAR 1277 01544 5336 JMP SORTA1 /NOT IT. 1278 01545 1017 TAD XR /GOT IT. NOW MAKE INDEX 1279 01546 1730 TAD I SORTB /TO JUMP TABLE 1280 01547 3362 DCA COUNT$ /THIS IS TABLE POINTER 1281 01550 1762 TAD I COUNT$ /GET JUMP ADDRESS FROM TABLE 1282 01551 7510 SPA /IF IT IS NEGATIVE, 1283 01552 5360 JMP 3$ /IT'S NOT A JUMP ADDRESS - IT'S A VALUE 1284 01553 3362 DCA COUNT$ 1285 01554 7300 CLA CLL 1286 01555 5762 JMP I COUNT$ 1287 01556 7300 SORTA2: CLA CLL /FELL OUT BOTTOM 1288 01557 1035 TAD SCHAR /CARRY CHARACTER BACK TO 1289 01560 2330 3$: ISZ SORTB 1290 01561 5730 JMP I SORTB /DO SOMETHING ELSE 1291 1292 01562 0000 COUNT$: 0 /50 OS/8 TECO VERSION 7 V50 MACREL-V2C FRI 07-DEC-90 PAGE 35 . Sort and branch FILE # 1 1293 1294 1295 01563 1424 SCPTAB, SCP.BEL /BELL 1296 01564 1461 SCP.CR /CR 1297 01565 1461 SCP.CR /TAB 1298 01566 1426 SCP.RO /ALT 1299 01567 1436 SCP.FF /FF 1300 01570 1437 SCP.VT /VT 1301 01571 1435 SCP.LF /LF ------ 01572 7771 01573 0000 * 01574 7774 01575 0243 01576 3070 01577 2221 1302 1600 PAGE /50 OS/8 TECO VERSION 7 V50 MACREL-V2C FRI 07-DEC-90 PAGE 36 . Sort and branch FILE # 1 1303 1304 1305 .SBTTL Cmd P 1306 1307 01600 4237 CHR.P, JMS POKE /LOOK AHEAD ONE CHARACTER 1308 01601 4542 UPPERC /BUT IN UPPERCASE 1309 01602 1377 TAD (-"W /SEE IF IT'S "W" 1310 01603 3104 DCA TEMPT /SAVE KNOWLEDGE AS FLAG 1311 01604 1104 TAD TEMPT 1312 01605 7650 SNA CLA 1313 01606 4517 SCAN /PASS UP W 1314 01607 7200 CLA /CLEAR W FROM AC 1315 01610 1021 TAD CFLG 1316 01611 7710 SPA CLA /IS THIS COMMAND M,NP? 1317 01612 5260 JMP CHRW /YES - TREAT LIKE M,NPW 1318 01613 4537 GETN /COMMAND P - GET # OF PAGES 1319 01614 7470 SZL SNA 1320 .ERROR 25 /NEG OR 0 ARG TO P 1321 01616 7041 CIA 1322 01617 3236 DCA CPCT 1323 01620 4511 CPOA, PUSHJ 1324 01621 1656 CPOC /DO N<HPY> 1325 01622 1104 TAD TEMPT /IS NEXT CHARACTER W? 1326 01623 7650 SNA CLA 1327 01624 5251 JMP NOYANK /YES 1328 / TAD REND /IF WANT P TO CREATE FF'S 1329 / SZA CLA /WHEN NO MORE INPUT FILE 1330 01625 2036 ISZ FFFLAG /NO, SAW FF? 1331 01626 5231 JMP 2$ /NO 1332 01627 1056 TAD CAFF /YES 1333 01630 4522 OUTPUT /OUTPUT FF 1334 01631 4511 2$: PUSHJ 1335 01632 2035 CHREY /WHOEVER THOUGHT OF THE PW COMMAND SHOULD BE SHOT 1336 01633 2236 YANKY, ISZ CPCT 1337 01634 5220 JMP CPOA 1338 01635 5512 POPJ 1339 01636 0000 CPCT, 0 1340 1341 01637 0000 POKE, 0 /RETURN NEXT CHARACTER (BY LOOKING AHEAD) 1342 01640 1073 TAD QLENGT 1343 01641 7141 CIA CLL 1344 01642 1040 TAD SCANP 1345 01643 7630 SZL CLA /MAKE SURE WE HAVEN'T RUN OFF END OF COMMAND LINE 1346 01644 5637 JMP I POKE /RETURN 0 IF NO CHAR 1347 01645 1040 TAD SCANP 1348 01646 1072 TAD QBASE 1349 01647 4524 GETQ 1350 01650 5637 JMP I POKE /LEAVE CHAR IN AC 1351 1352 01651 1056 NOYANK, TAD CAFF /NPW OUTPUTS FFS 1353 01652 4522 OUTPUT 1354 01653 5233 JMP YANKY /50 OS/8 TECO VERSION 7 V50 MACREL-V2C FRI 07-DEC-90 PAGE 37 Cmd P FILE # 1 1355 1356 1357 .SBTTL Cmd T 1358 1359 01654 1103 CHR.T, TAD KTYPE 1360 01655 5261 JMP CHRT2 1361 1362 01656 4511 CPOC, PUSHJ 1363 01657 3120 CHR.H 1364 01660 1376 CHRW, TAD (OUTPUT 1365 01661 3302 CHRT2, DCA CWOUT /P AND T COMMANDS - SAME THING, DIFFERENT DEVICES 1366 01662 4316 JMS NLINES /CONVERT LINES TO CHARS 1367 01663 7040 CWOA, CMA 1368 01664 3316 DCA NLINES /SET CHARACTER COUNT 1369 01665 1316 TAD NLINES 1370 01666 7041 CIA 1371 01667 4541 MQLDVI /COMPUTE HOW MANY WORDS THIS OUTPUT WILL USE 1372 01670 0006 6 /(BY TAKING 2/3 OF THE NUMBER OF CHARACTERS, 1373 01671 7126 CLL CML RTL / BUT THAT'S SLOW SO WE TAKE 4/6 AND ROUND) 1374 01672 4775 JMS I (FITS /DETERMINE WHETHER THE OUTPUT WILL FIT 1375 .ERROR 17 /NO - TELL THE USER 1376 01674 7200 CLA /CLEAR CRAP FROM AC 1377 01675 5304 JMP CWOC 1378 01676 6211 CWOB, CDF 10 1379 01677 1426 TAD I M 1380 01700 0167 AND Z177 1381 01701 6201 CDF 0 1382 01702 0000 CWOUT, 0 /TYPE, OUTPUT, OR QPUT 1383 01703 2026 ISZ M 1384 01704 2316 CWOC, ISZ NLINES /DONE? 1385 01705 5276 JMP CWOB /NO 1386 01706 5512 POPJ /50 OS/8 TECO VERSION 7 V50 MACREL-V2C FRI 07-DEC-90 PAGE 38 Cmd T FILE # 1 1387 1388 1389 .SBTTL Cmd X 1390 1391 01707 4532 CHR.X, QREF /COMMAND X 1392 01710 4316 JMS NLINES /CONVERT LINES TO CHARS 1393 01711 4540 ADJQ /ADJUST Q-REGISTERS AND SET UP NEW LENGTH. 1394 01712 1374 TAD (QPUT 1395 01713 3302 DCA CWOUT /SET OUTPUT ROUTINE TO STORE INTO Q REG 1396 01714 1063 TAD MQ /LOAD THE CHARACTER COUNT 1397 01715 5263 JMP CWOA /GO TO TEXT OUTPUTTER 1398 1399 01716 0000 NLINES, 0 /CONVERT + OR - N LINES AROUND . TO CHARS M,N 1400 01717 2021 ISZ CFLG /WAS THERE A COMMA? 1401 01720 7410 SKP /NO 1402 01721 5333 JMP 1$ /YES - DON'T CONVERT LINES TO CHARS 1403 01722 1044 TAD P 1404 01723 3026 DCA M 1405 01724 3021 DCA CFLG /V3C 1406 01725 4511 PUSHJ /CHR.L DOES A "GETN" 1407 01726 0614 CHR.L /TO GET THE DEFAULT VALUES OF N 1408 01727 1044 TAD P 1409 01730 3027 DCA N 1410 01731 1026 TAD M 1411 01732 3044 DCA P 1412 01733 3024 1$: DCA NFLG /CLEAR NFLG IN CASE COMMA FLAG WAS ON 1413 01734 7100 CLL /M AND N ARE KNOWN TO BE 12-BITS LONG 1414 /AND POSITIVE 1415 01735 1027 TAD N 1416 01736 4527 BZCHK /IS N OK? 1417 .ERROR 38 /?POP REFERENCE OFF PAGE 1418 01740 7140 CMA CLL /YES - COMPUTE N-M 1419 01741 1026 TAD M /BY COMPUTING M-N-1 1420 01742 7040 CMA /AND COMPLEMENTING IT 1421 01743 7420 SNL /IS M>N? 1422 01744 5716 JMP I NLINES /NO - RETURN N-M 1423 01745 1026 TAD M /N-M+M=N NOW IN AC. 1424 01746 3236 DCA CPCT /INTERCHANGE M AND N 1425 01747 1026 TAD M 1426 01750 3027 DCA N 1427 01751 1236 TAD CPCT 1428 01752 3026 DCA M 1429 01753 5333 JMP 1$ /50 OS/8 TECO VERSION 7 V50 MACREL-V2C FRI 07-DEC-90 PAGE 39 Cmd X FILE # 1 1430 1431 1432 .SBTTL Cmd ; 1433 1434 01754 1032 CFSI, TAD ITRST 1435 01755 7650 SNA CLA 1436 .ERROR 24 /FAILING SEARCH NOT IN ITERATION 1437 .OVRLAY Q,CSEM /50 OS/8 TECO VERSION 7 V50 MACREL-V2C FRI 07-DEC-90 PAGE 40 Cmd ; FILE # 1 1438 1439 1440 .SBTTL Cmd ^A 1441 1442 01762 1103 CTL.A, TAD KTYPE 1443 01763 3372 CEXP, DCA TO$ 1444 01764 1031 TAD CHAR 1445 01765 3010 DCA QUOTE /TERMINATING CHAR SAME AS COMMAND CHAR 1446 01766 4530 QCHK /ALLOW @ ON ^A OR ! 1447 01767 3024 DCA NFLG /KILL NUMBER IF PRESENT 1448 01770 4535 L$: QUOTST 1449 01771 5571 JMP I ZIREST 1450 01772 0000 TO$: 0 /TYPE OR IGNORE THE CHARACTER 1451 01773 5370 JMP L$ /* TECHNICALLY WE CAN CALL QUOTST WITH NON-ZERO AC ------ 01774 4534 01775 3750 01776 4522 01777 7651 1452 2000 PAGE /50 OS/8 TECO VERSION 7 V50 MACREL-V2C FRI 07-DEC-90 PAGE 41 Cmd ^A FILE # 1 1453 1454 1455 .SBTTL Cmd A 1456 1457 02000 2024 CHR.A, NCHK /COMMAND A 1458 02001 5237 JMP CHAA 1459 02002 4551 GETNUM 1460 02003 1044 TAD P 1461 02004 3047 DCA R 1462 02005 1047 TAD R 1463 02006 7420 SNL /MAKE SURE CATCH -1 1464 02007 7001 IAC 1465 02010 4527 BZCHK 1466 02011 5221 JMP APOP 1467 02012 7200 CLA 1468 02013 6211 CDF 10 1469 02014 1447 TAD I R 1470 02015 6201 CDF 0 1471 02016 0166 AND Z377 1472 02017 7100 NCOM14, CLL 1473 02020 5777 JMP I (NCOM 1474 1475 02021 7360 APOP, STL STA 1476 02022 5777 JMP I (NCOM /RETURN -1 IF POINTER REFERENCE OFF PAGE /50 OS/8 TECO VERSION 7 V50 MACREL-V2C FRI 07-DEC-90 PAGE 42 Cmd A FILE # 1 1477 1478 1479 .SBTTL Cmd Y 1480 1481 02023 2024 CHR.Y, NCHK 1482 02024 7610 SKP CLA 1483 .ERROR 18 /NUMERIC ARGUMENT TO Y 1484 02026 1122 TAD OUTR 1485 02027 7041 CIA 1486 02030 1114 TAD ERROR 1487 02031 7640 SZA CLA 1488 02032 1045 TAD ZZ 1489 02033 7640 YSKP, SZA CLA /*ED CHANGED TO SKP CLA TO NEVER ABORT Y COMMAND 1490 .ERROR 32 /Y COMMAND ABORTED 1491 02035 3045 CHREY, DCA ZZ 1492 02036 3044 DCA P /WIPE OUT THE BUFFER 1493 02037 1376 CHAA, TAD (ZMAX-1 1494 02040 0037 AND REND 1495 02041 7141 CIA CLL 1496 02042 1045 TAD ZZ /IF WE HAVE ALREADY SEEN THE INPUT EOF, 1497 02043 7630 SZL CLA /OR IF WE'RE ALREADY FULL (OR NEARLY SO) 1498 02044 5363 JMP APLF /GET OUT 1499 02045 2075 DECGET, ISZ ICRCNT 1500 02046 5302 JMP I2 /NO NEED TO READ 1501 02047 7100 CLL 1502 02050 1012 TAD INRSIZ 1503 02051 1100 TAD INRCNT 1504 02052 7420 STECO1, SNL /"SKP!CLA" FOR SUPERTECO 1505 02053 3100 DCA INRCNT /UPDATE RECORD COUNT 1506 02054 7172 LFTAB, CLL CML CMA RTR /IF WE OVERFLOWED THE END OF THE FILE, ! 1507 02055 7012 RTR /5 ENTRY TABLE: MUST BE - - - + + ! 1508 02056 7012 RTR /SHORTEN THE READ BY THE CORRECT AMOUNT ! 1509 02057 1367 TAD INCTLW / ! 1510 02060 3262 DCA INCTRL /SO THAT WE WILL NOT READ TOO FAR ! 1511 02061 4467 JMS I INHND 1512 I3, 1513 02062 0400 INCTRL, 0400 1514 02063 6200 BUFIN, IN /6200 IF 8K, 5600 IF 12K 1515 02064 0000 IBLK, 0 1516 02065 7700 SMA CLA 1517 02066 7410 SKP 1518 02067 5365 JMP INER /IGNORE END-OF-FILE ERRORS, WE'LL SEE THE ^Z. 1519 02070 1264 TAD IBLK 1520 02071 1012 TAD INRSIZ /BUMP RECORD NUMBER BY THE MAXIMUM NUMBER 1521 02072 3264 DCA IBLK /(IF WE READ SHORT ITS THE LAST ONE ANYWAY) 1522 02073 7240 CLA CMA 1523 02074 1263 TAD BUFIN 1524 02075 3016 DCA INXR /SET UP INPUT XR 1525 02076 1370 TAD INPCNT 1526 02077 3075 DCA ICRCNT 1527 02100 7346 MTHREE 1528 02101 3262 DCA I3 1529 02102 7000 I2, NOP /CDF 20 IF 12K 1530 02103 2262 ISZ I3 1531 02104 5325 JMP 1$ /NORMAL CHARACTER /50 OS/8 TECO VERSION 7 V50 MACREL-V2C FRI 07-DEC-90 PAGE 42-1 Cmd Y FILE # 1 1532 02105 7346 MTHREE /WEIRD CHARACTER-RESET SWITCH 1533 02106 3262 DCA I3 1534 02107 7344 MTWO 1535 02110 1016 TAD INXR 1536 02111 3016 DCA INXR /MOVE INPUT XR BACK TO BEGINNING OF DBLWORD 1537 02112 1416 TAD I INXR 1538 02113 0155 AND Z7400 1539 02114 3036 DCA FFFLAG /TEMP 1540 02115 1416 TAD I INXR 1541 02116 0155 AND Z7400 1542 02117 7112 CLL RTR 1543 02120 7012 RTR 1544 02121 1036 TAD FFFLAG 1545 02122 7112 CLL RTR 1546 02123 7012 RTR 1547 02124 7410 SKP 1548 02125 1416 1$: TAD I INXR 1549 02126 7000 IC, NOP /CDF 0 IF 12K 1550 02127 0167 AND Z177 /MASK OFF GARBAGE 1551 /INPUT CHARACTER IN AC 1552 02130 7440 SZA 1553 02131 1375 TAD (-177 1554 02132 7450 SNA /IGNORE BLANK TAPE AND RUBOUTS 1555 02133 5245 JMP DECGET 1556 02134 1374 TAD (177-32 1557 02135 7450 STECO2, SNA /"SKP" FOR SUPERTECO 1558 02136 5360 JMP 5$ /IT'S A ^Z 1559 02137 1373 TAD (16 1560 02140 7450 SNA 1561 02141 5362 JMP 6$ /ITS A FORM FEED 1562 02142 1056 TAD CAFF /RESTORE CHAR 1563 02143 6211 CDF 10 1564 02144 3063 DCA MQ /SAVE CHAR 1565 02145 1445 TAD I ZZ /PROTECT HIGH- 1566 02146 0155 AND Z7400 /ORDER BITS 1567 02147 1063 TAD MQ /OF TARGET 1568 02150 3445 DCA I ZZ /STORE CHAR IN BUFFER 1569 02151 1063 TAD MQ 1570 02152 6201 CDF 0 1571 02153 2045 ISZ ZZ 1572 02154 1161 TAD ZM12 1573 02155 7650 SNA CLA /IF THE CHAR IS A LINE FEED, 1574 02156 1372 TAD (-310 /CHECK THAT THE BUFFER IS NOT NEARLY FULL 1575 02157 5237 JMP CHAA 1576 02160 3037 5$: DCA REND /SIGNAL END OF FILE 1577 02161 7410 SKP 1578 02162 7240 6$: STA 1579 02163 3036 APLF, DCA FFFLAG /SET FORM FEED FLAG 1580 02164 5512 POPJ /50 OS/8 TECO VERSION 7 V50 MACREL-V2C FRI 07-DEC-90 PAGE 43 Cmd Y FILE # 1 1581 1582 1583 02165 3037 INER, DCA REND /INHIBIT FUTURE INPUTS 1584 .ERROR 15 1585 1586 02167 0401 INCTLW, 401 /1021 IF 12K MACHINE 1587 02170 6400 INPCNT, 6400 /5000 IF 12K MACHINE ------ 02172 7470 02173 0016 02174 0145 02175 7601 02176 7637 02177 0000 * 1588 2200 PAGE /50 OS/8 TECO VERSION 7 V50 MACREL-V2C FRI 07-DEC-90 PAGE 44 Cmd Y FILE # 1 1589 1590 1591 .SBTTL . Teletype routines 1592 1593 02200 0000 TYPCTV, 0 /TELETYPE STUFFER 1594 .SORT CTLBEL,CTLTAB 1595 02204 3035 DCA SCHAR /STORE (POSSIBLY TRANSLATED) CHAR 1596 02205 1035 OUTCC, TAD SCHAR 1597 02206 2221 ISZ COLCT /BUMP COLUMN COUNTER 1598 02207 0163 AND Z7740 1599 02210 7640 SZA CLA /IS THE CHAR A CONTROL CHARACTER? 1600 02211 5243 JMP NOCON /NO 1601 02212 1377 TAD (136 1602 02213 4552 PUTT /OUTPUT "^" 1603 02214 2221 OUTLF2, ISZ COLCT 1604 02215 1175 TAD Z100 1605 02216 1035 OUT.LF, TAD SCHAR 1606 02217 4552 OUTLF1, PUTT 1607 02220 5600 JMP I TYPCTV /50 OS/8 TECO VERSION 7 V50 MACREL-V2C FRI 07-DEC-90 PAGE 45 . Teletype routines FILE # 1 1608 1609 1610 02221 0000 COLCT, 0 1611 1612 02222 3221 OUT.CR, DCA COLCT /RESET CHAR COUNT 1613 02223 5216 JMP OUT.LF 1614 02224 1156 OUT.VT, TAD Z4 1615 02225 1165 OUT.FF, TAD Z7770 /FORM FEED IS 8 LINE FEEDS, VERT TAB IS 4 1616 02226 3221 DCA COLCT /*** BUG 1617 02227 1060 ASR33, TAD CALF /SIMULATE FORMFEEDS AND VERT TABS WITH LINEFEEDS 1618 02230 5237 JMP OUTCOM /*K* 8 LOCS AT ASR33 OVERLAYED BY ASR35 CODE 1619 1620 02231 1221 OUT.HT, TAD COLCT /COLUMN COUNTER, MOD 8 1621 02232 0235 AND L7 1622 02233 1165 TAD Z7770 /SIMULATE TABS WITH SPACES 1623 02234 3221 DCA COLCT 1624 02235 0007 L7, 7 /TAKE UP SPACE SO ASR-35 ROUTINE WILL JUST FIT 1625 02236 1157 TAD Z40 /USE SPACES FOR TABS 1626 02237 4552 OUTCOM, PUTT /PUT ONE OUT THE 1627 02240 2221 ISZ COLCT /WINDOW 1628 02241 5776 JMP I (TPUTX /STILL MORE INSIDE 1629 02242 5600 JMP I TYPCTV 1630 1631 02243 1035 NOCON, TAD SCHAR 1632 02244 0175 AND Z100 1633 02245 7650 EU1, SNA CLA /*EU SET TO CLA IF EUFLAG < 0 (NO CASE FLAGGING) 1634 02246 5216 JMP OUT.LF /NOT ALPHANUMERIC 1635 02247 7000 EU2, NOP /*EU SET TO TAD Z40 IF EUFLAG>0 (FLAG UPPER CASE) 1636 02250 1035 TAD SCHAR 1637 02251 0157 AND Z40 1638 02252 7650 SNA CLA 1639 02253 5216 JMP OUT.LF 1640 02254 1275 TAD SQUO 1641 02255 4552 PUTT 1642 02256 2221 ISZ COLCT 1643 02257 1035 TAD SCHAR 1644 02260 0176 AND Z137 1645 02261 5217 JMP OUTLF1 /OUTPUT UPPER CASE VERSION 1646 1647 02262 1035 OUT.BEL,TAD SCHAR 1648 02263 4552 PUTT 1649 02264 5205 JMP OUTCC /50 OS/8 TECO VERSION 7 V50 MACREL-V2C FRI 07-DEC-90 PAGE 46 . Teletype routines FILE # 1 1650 1651 1652 .SBTTL . Q-register manipulation 1653 1654 /ROUTINE TO MANIPULATE Q-REGISTER STORAGE 1655 1656 /*** ALLOW : TO MEAN APPEND TO Q-REGISTER 1657 /APPLIES TO X AND ^U COMMANDS 1658 /MAKE SURE CMD LINE AND ^S ZERO CLNF 1659 1660 02265 0000 QADJ, 0 1661 02266 7510 SPA 1662 02267 5313 JMP ERR12 /STRING TOO LONG FOR Q-REGISTER 1663 02270 3063 DCA MQ /SAVE NEW LENGTH OF Q-REGISTER 1664 02271 4533 QSUM /COMPUTE POINTER TO CURRENT Q-REGISTER 1665 02272 7350 AC3777 1666 02273 0474 AND I QPTR 1667 02274 1050 TAD QP 1668 02275 3047 SQUO, DCA R 1669 02276 7350 AC3777 1670 02277 0474 AND I QPTR /GET ITS CURRENT LENGTH 1671 02300 7141 CIA CLL 1672 02301 1063 TAD MQ /COMPUTE DIFFERENCE 1673 02302 7420 SNL /ADJUST Q-REGS 1674 02303 5340 JMP QDNN /TO HOLD NEW STRING 1675 02304 7450 SNA /CHECK FOR ZERO 1676 02305 5356 JMP QADJDN /NOTHING TO DO 1677 02306 1051 TAD QZ /MOVE Q-REGISTERS UP TO INSERT CHARS 1678 02307 3050 DCA QP /(LINK IS 1 FROM PREVIOUS SNL) 1679 02310 1050 TAD QP 1680 02311 1366 TAD MQMAX /SEE IF OUT OF BOUNDS 1681 02312 7620 SNL CLA /TWO PLACES TO TOGGLE LINK THERE 1682 .ERROR 12 /GETTING TOO FULL 1683 02314 1051 TAD QZ 1684 02315 3046 DCA Q 1685 02316 1050 TAD QP 1686 02317 3051 DCA QZ 1687 02320 2050 ISZ QP 1688 02321 1046 L$: TAD Q 1689 02322 7041 CIA 1690 02323 1047 TAD R /DOUBLES AS ASCII FOR ' 1691 02324 7650 SNA CLA 1692 02325 5356 JMP QADJDN 1693 02326 7040 CMA 1694 02327 1046 TAD Q 1695 02330 3046 DCA Q 1696 02331 7344 MTWO 1697 02332 1050 TAD QP 1698 02333 3050 DCA QP 1699 02334 1046 TAD Q 1700 02335 4524 GETQ 1701 02336 4534 QPUT 1702 02337 5321 JMP L$ /50 OS/8 TECO VERSION 7 V50 MACREL-V2C FRI 07-DEC-90 PAGE 47 . Q-register manipulation FILE # 1 1703 1704 1705 02340 1047 QDNN, TAD R /MOVE Q-REGS DOWN TO ABSORB CHARACTERS 1706 02341 3050 DCA QP 1707 02342 1051 1$: TAD QZ 1708 02343 7041 CIA 1709 02344 1047 TAD R /-NUMBER OF CHARS TO MOVE 1710 02345 7650 SNA CLA /DONE? 1711 02346 5354 JMP 2$ /YES 1712 02347 1047 TAD R 1713 02350 4524 GETQ 1714 02351 4534 QPUT 1715 02352 2047 ISZ R 1716 02353 5342 JMP 1$ /LOOP AGAIN 1717 02354 1050 2$: TAD QP /SET NEW VALUE 1718 02355 3051 DCA QZ /OF HIGHEST CHAR 1719 02356 7330 QADJDN, STL CLA RAR /4000 1720 02357 0474 AND I QPTR /SAVE HIGH ORDER PART 1721 02360 1063 TAD MQ 1722 02361 3474 DCA I QPTR /SAVE NEW LENGTH OF Q-REGISTER IN Q-REG TABLE 1723 02362 1043 TAD QCMND /SET UP COMMAND LINE AGAIN 1724 02363 4536 SETCMD /AS IT MAY HAVE BEEN SHUFFLED. 1725 02364 4533 QSUM /RECOMPUTE POINTER TO BEGINNING OF NEW Q-REG 1726 02365 5665 JMP I QADJ 1727 1728 02366 4060 MQMAX, -QMAX 1729 1730 02367 0000 QOVER, 0 /SUBROUTINE TO SKIP TO END OF STRING 1731 02370 4530 QCHK /GET THE QUOTE CHARACTER (IF ANY) 1732 02371 1040 TAD SCANP 1733 02372 3041 DCA OSCANP /SAVE BACKUP SCAN POINTER 1734 02373 4535 L$: QUOTST 1735 02374 5767 JMP I QOVER /FOUND AN ALTM OR EQUIVALENT - RETURN 1736 02375 5373 JMP L$ /NOT END - SKIP ANOTHER CHAR 1737 1738 /COULD MOVE ABOVE TO Q-OVERLAY ------ 02376 0556 02377 0136 1739 2400 PAGE /50 OS/8 TECO VERSION 7 V50 MACREL-V2C FRI 07-DEC-90 PAGE 48 . Q-register manipulation FILE # 1 1740 1741 1742 .SBTTL . Q-register subroutines 1743 1744 1745 02400 0000 QSUMR, 0 /COMPUTE POINTER TO Q-REG 1746 02401 7450 SNA 1747 02402 1071 TAD QNMBR /NORMALLY USES QNMBR, BUT CAN BE OVERRIDDEN BY AC 1748 02403 7041 CIA 1749 02404 3222 DCA KNT$ 1750 02405 3050 DCA QP 1751 02406 1377 TAD (QARRAY /BASE ADDR OF Q-REG POINTERS 1752 02407 3074 DCA QPTR 1753 02410 5217 JMP 2$ 1754 02411 7350 L$: AC3777 1755 02412 0474 AND I QPTR /ADD # OF CHARS IN LOWER REG 1756 02413 1050 TAD QP 1757 02414 3050 DCA QP 1758 02415 2074 ISZ QPTR /SKIP VALUE WORD 1759 02416 2074 ISZ QPTR /POINT TO NEXT Q-REG 1760 02417 2222 2$: ISZ KNT$ /REACHED OUR Q-REGISTER YET? 1761 02420 5211 JMP L$ /NO - ADD IN ANOTHER 1762 02421 5600 JMP I QSUMR 1763 02422 0000 KNT$: 0 /50 OS/8 TECO VERSION 7 V50 MACREL-V2C FRI 07-DEC-90 PAGE 49 . Q-register subroutines FILE # 1 1764 1765 1766 02423 0000 SGET, 0 /SCAN COMMAND LINE OR MACRO 1767 02424 7200 1$: CLA /** CALLED WITH AC NON-ZERO ** 1768 02425 1073 TAD QLENGT 1769 02426 7141 CIA CLL 1770 02427 1040 TAD SCANP 1771 02430 7630 SZL CLA /CHECK THAT WE ARE STILL INSIDE THE COMMAND LINE 1772 02431 5245 JMP 2$ /NO - COMMAND DONE 1773 02432 1040 TAD SCANP /GET CHARACTER POSITION IN LINE 1774 02433 1072 TAD QBASE /ADD IT TO THE ADDRESS OF THE LINE 1775 02434 4524 GETQ /AND GET THAT CHARACTER. 1776 02435 3106 DCA LASTC 1777 02436 1023 TAD TFLG 1778 02437 0106 AND LASTC /IF THE TRACE FLAG IS ON, 1779 02440 7440 SZA 1780 02441 4521 TYPE /PRINT THE CHAR 1781 02442 1106 TAD LASTC 1782 02443 2040 ISZ SCANP /INCREMENT CHARACTER POINTER AFTER FETCH 1783 02444 5623 JMP I SGET /RETURN 1784 02445 1034 2$: TAD MPDL /"MPDL" IS THE PUSHDOWN POINTER ON ENTRY TO THIS 1785 02446 7450 SNA /MACRO. IF IT IS 0, WE ARE NOT IN A MACRO 1786 02447 5776 JMP I (T1 /SO RETURN TO THE USER 1787 02450 1042 TAD PDLP /CHECK THAT THE ENDING POINTER IS THE SAME 1788 02451 7001 IAC 1789 02452 7640 SZA CLA /AS THE ENTRY ONE - OTHERWISE WE HAVE 1790 .ERROR 13 /SCREWED UP SOMEHOW (EG WE ARE 1791 02454 4510 POP / IN THE MIDDLE OF A COMMAND) 1792 02455 3040 DCA SCANP 1793 02456 4510 POP 1794 02457 3032 DCA ITRST 1795 02460 4510 POP /RESTORE THE PREVIOUS VALUES OF 1796 02461 3034 DCA MPDL /MPDL, THE SCAN POINTER AND THE COMMAND LINE 1797 02462 4510 POP /POINTER FROM THE PUSHDOWN LIST 1798 02463 4536 SETCMD 1799 02464 5224 JMP 1$ /AND FETCH A CHARACTER FROM THE UPPER LEVEL. /50 OS/8 TECO VERSION 7 V50 MACREL-V2C FRI 07-DEC-90 PAGE 50 . Q-register subroutines FILE # 1 1800 1801 1802 02465 0000 CMDSET, 0 /SUBROUTINE TO SET UP COMMAND LINE POINTERS 1803 02466 3043 DCA QCMND /STORE IN COMMAND LINE NUMBER 1804 02467 1043 TAD QCMND 1805 02470 4533 QSUM 1806 02471 1050 TAD QP /GET FIRST LOCATION IN COMMAND LINE 1807 02472 3072 DCA QBASE /AND STORE IN "QBASE" 1808 02473 7350 AC3777 1809 02474 0474 AND I QPTR 1810 02475 3073 DCA QLENGT /STORE THE LINE LENGTH IN "QLENGT" 1811 02476 5665 JMP I CMDSET /RETURN 1812 1813 02477 0000 QREFER, 0 /SET UP POINTERS FOR Q-REG REFERENCE 1814 02500 7440 SZA 1815 02501 5314 JMP 2$ /AHA - WE ALREADY HAVE THE Q-REGISTER 1816 02502 4543 SCANUP /GET Q-REGISTER IDENTIFIER 1817 02503 3071 DCA QNMBR 1818 02504 1071 TAD QNMBR 1819 02505 4544 TSTSEP /TEST FOR ALPHANUMERIC (LOWER CASE LEGAL) 1820 .ERROR 03 /OOPS - BAD Q-REGISTER REFERENCE 1821 02507 1071 TAD QNMBR 1822 02510 1164 TAD Z7700 1823 02511 7510 SPA /NUMERIC? 1824 02512 1052 TAD Z7 /YES - FORCE NUMBERS UP TO ABUT LETTERS 1825 02513 1060 TAD Z12 /FORCE IDENTIFIER INTO THE RANGE 1-44 (OCTAL) 1826 02514 3071 2$: DCA QNMBR /STORE AWAY NUMBER FOR FURTHER REFERENCE 1827 02515 4533 QSUM /COMPUTE QP AND QPTR 1828 02516 5677 JMP I QREFER /RETURN 1829 1830 02517 5775 CHR.U, JMP I (CHRUU /50 OS/8 TECO VERSION 7 V50 MACREL-V2C FRI 07-DEC-90 PAGE 51 . Q-register subroutines FILE # 1 1831 1832 1833 .SBTTL Cmd ^T 1834 1835 02520 2024 CTL.T, NCHK 1836 02521 5325 JMP CTLT2 /NO ARG 1837 02522 1027 TAD N 1838 02523 4521 ET1, TYPE /TYPE CHAR REPRESENTED BY ARGUMENT 1839 02524 5512 POPJ 1840 02525 4520 CTLT2, LISTEN /^T COMMAND - VALUE OF NEXT CHAR FROM TTY 1841 02526 4521 ET8, TYPE /*ET ECHO THE CHARACTER 1842 02527 1035 TAD SCHAR /GET THE CHARACTER 1843 02530 7100 NNEW13, CLL 1844 02531 7510 SPA 1845 02532 7120 STL /EXTEND SIGN BIT TO LINK 1846 02533 5774 JMP I (NCOM /RETURN -1 IF F.F., 0 OTHERWISE /50 OS/8 TECO VERSION 7 V50 MACREL-V2C FRI 07-DEC-90 PAGE 52 Cmd ^T FILE # 1 1847 1848 1849 .SBTTL . Overlay handler 1850 1851 02534 0000 OVERLY, 0 1852 02535 1734 TAD I OVERLY /GET LOCATION TO CHECK 1853 02536 2334 ISZ OVERLY 1854 02537 3351 DCA TMP 1855 02540 1734 TAD I OVERLY 1856 02541 3334 DCA OVERLY /SET RETURN ADDRESS 1857 02542 1751 TAD I TMP /IS OUR OVERLAY IN CORE? 1858 02543 7450 SNA 1859 02544 5734 JMP I OVERLY /YES, BRANCH INTO IT 1860 02545 3351 DCA TMP /NO, SET BLOCK TO READ IN 1861 /** THE NEXT 5 WORDS ARE MODIFIED IF WE HAVE MORE THAN 12K 1862 02546 4773 OVREAD, JMS I (7607 /CALL SYSTEM HANDLER 1863 02547 0200 0200 /READ 2 PAGES 1864 02550 3200 3200 /INTO 3200 1865 02551 0000 TMP, 0 /FROM THIS BLOCK 1866 02552 7402 HLT /ERROR READING OVERLAY 1867 02553 5734 JMP I OVERLY /GO TO NEXT SPOT 1868 1869 02554 7240 CATS, STA /@ COMMAND - FAKE OUT "IREST" 1870 02555 3025 IREST, DCA QFLG /RESET QUOTED STRING FLAG 1871 02556 4526 CTCCHK /CHECK FOR CTRLC (NOT TOO OFTEN) *WM 1872 02557 7200 CLA /EXIT LEAVES AC NON-ZERO 1873 02560 1055 TAD CAAM 1874 02561 3010 DCA QUOTE /RESET QUOTE CHAR TO ALTMODE 1875 02562 5512 POPK, POPJ /RETURN 1876 1877 02563 0000 QTST, 0 /SUBROUTINE TO GET A CHAR AND TEST FOR ALTMODE 1878 02564 4517 SCAN 1879 .SORT QUOTE,QTST /RETURN IF QUOTE FOUND 1880 02570 2363 ISZ QTST 1881 02571 5763 JMP I QTST /SKIP-RETURN WITH AC INTACT IF NOT FOUND 1882 1883 SCHCTE, .ERROR 39 /ILLEGAL CTRL/E ------ 02573 7607 02574 0000 * 02575 4517 02576 0206 02577 4630 1884 2600 PAGE /50 OS/8 TECO VERSION 7 V50 MACREL-V2C FRI 07-DEC-90 PAGE 53 . Overlay handler FILE # 1 1885 1886 1887 02600 0001 * ERRXX, ERR30+1 /ENTRY POINT ALSO SERVES AS A FLAG FOR "TQMK" 1888 02601 6032 KCC /CLEARS AC 1889 02602 6201 CDF 0 /JUST IN CASE 1890 .OVRLAY E,ERRYY 1891 1892 02606 5607 ERRRET, JMP I EH4 /CONTINUE AS NORMAL UNLESS USER TYPES "?" 1893 02607 0203 EH4, T0 /*EH 1894 /50 OS/8 TECO VERSION 7 V50 MACREL-V2C FRI 07-DEC-90 PAGE 54 . Overlay handler FILE # 1 1895 1896 1897 .SBTTL Cmd E 1898 1899 02610 4543 CHR.E, SCANUP /GET CHARACTER AFTER E 1900 02611 4553 TESTA /CHECK FOR ALPHABETIC 1901 .ERROR 19 /BAD CHARACTER AFTER E 1902 02613 1377 TAD (ELIST-"A 1903 02614 3327 DCA TYI 1904 02615 1727 TAD I TYI /GET ENTRY FROM DISPATCH TABLE 1905 02616 3233 OVBRAN, DCA 2$ /BRANCH TO OVERLAY 1906 02617 1233 TAD 2$ 1907 02620 0166 AND Z377 1908 02621 1376 TAD (3200 /BASE OF OVERLAY AREA 1909 02622 3234 DCA 1$ /ADDRESS 1910 02623 1233 TAD 2$ 1911 02624 7004 RAL 1912 02625 7006 RTL 1913 02626 7006 RTL 1914 02627 0052 AND Z7 1915 02630 1376 TAD (3200 1916 02631 3233 DCA 2$ /KEY 1917 02632 4550 OVRLAY 1918 02633 0000 2$: 0 1919 02634 0000 1$: 0 1920 1921 /FORMAT OF CALL TO OVBRAN: 1922 1923 / TAD (OVERLAY CODE 1924 / JMP OVBRAN 1925 1926 /OVERLAY CODE HAS THE FOLLOWING FORMAT: 1927 1928 /BIT MEANING 1929 /0 WILL BE IGNORED (USUALLY NEGATIVE) 1930 /1-3 OVERLAY NUMBER 1931 /4-11 RELATIVE ADDRESS WITHIN OVERLAY /50 OS/8 TECO VERSION 7 V50 MACREL-V2C FRI 07-DEC-90 PAGE 55 Cmd E FILE # 1 1932 1933 1934 .SBTTL Cmd I 1935 1936 02635 2024 CHR.I, NCHK /I COMMAND 1937 02636 5245 JMP CIL1 1938 02637 1027 TAD N /INSERT CHAR WHOSE VALUE IS N 1939 02640 4340 JMS UPOC 1940 /*** CHECK FOR $ 1941 02641 5512 POPJ 1942 1943 .SBTTL Cmd <TAB> 1944 1945 .SBTTL Cmd ^I 1946 1947 02642 3025 CTL.I, DCA QFLG /CANNOT BE QUOTED 1948 02643 1054 TAD CAHT /TAB 1949 02644 4340 JMS UPOC 1950 02645 4531 CIL1, QSKP /COUNT LENGTH OF INSERTION 1951 02646 3064 DCA DVT1 /ZERO FUDGE USED BY FS COMMAND 1952 02647 1041 CIL2, TAD OSCANP 1953 02650 1072 TAD QBASE 1954 02651 3050 DCA QP /SET UP POINTER TO INSERTION STRING 1955 02652 1040 TAD SCANP 1956 02653 7141 CIA CLL 1957 02654 1041 TAD OSCANP 1958 02655 3063 DCA MQ /STORE CHAR COUNT TO INSERT (-1) 1959 02656 1063 TAD MQ 1960 02657 1064 TAD DVT1 /ADD FS FUDGE 1961 02660 7040 CMA 1962 02661 7420 SNL /DID WE INSERT MORE THAN WE DELETED? 1963 02662 5324 JMP EXPAND /YES - IGNORE SIGN BIT OF COUNT 1964 02663 7041 CIA 1965 02664 4511 PUSHJ 1966 02665 0735 ADJ2 /COMPRESS OUT EXCESS DELETED STUFF 1967 02666 5274 JMP CIL4 1968 02667 1050 CIL3, TAD QP 1969 02670 4524 GETQ /GET A CHAR 1970 02671 3327 DCA TYI 1971 02672 4277 JMS STOREC /STORE A CHARACTER 1972 02673 2050 ISZ QP 1973 02674 2063 CIL4, ISZ MQ 1974 02675 5267 JMP CIL3 /OF INSERTION 1975 02676 5366 JMP ZRON 1976 1977 02677 0000 STOREC, 0 /STORE CHAR IN "TYI" INTO TEXT BUFFER AT P 1978 02700 6211 CDF 10 1979 02701 1444 TAD I P 1980 02702 0155 AND Z7400 1981 02703 1327 TAD TYI 1982 02704 3444 DCA I P 1983 02705 6201 CDF 0 1984 02706 2044 ISZ P 1985 02707 5677 JMP I STOREC /50 OS/8 TECO VERSION 7 V50 MACREL-V2C FRI 07-DEC-90 PAGE 56 Cmd ^I FILE # 1 1986 1987 1988 .SBTTL Cmd G 1989 1990 02710 4532 CHR.G, QREF /G COMMAND - GET Q-REGISTER NUMBER 1991 02711 3024 DCA NFLG 1992 02712 7350 AC3777 1993 02713 0474 AND I QPTR /GET COUNT OF CHARS IN REGISTER 1994 02714 7040 CMA 1995 02715 3063 DCA MQ /SAVE AS TRANSFER COUNT 1996 02716 2022 ISZ CLNF 1997 02717 7410 SKP 1998 02720 5362 JMP COLG4 1999 02721 3022 DCA CLNF 2000 02722 7350 AC3777 2001 02723 0474 AND I QPTR 2002 02724 4511 EXPAND, PUSHJ /COME HERE FROM INSERT LOGIC 2003 02725 0665 ADJ /INCREASE TEXT BUFFER SIZE ( Q-REG LENGTH MAY 2004 02726 5274 JMP CIL4 /BE NEGATIVE) AND GO TRANSFER THE CHARS 2005 2006 02727 0000 TYI, 0 /TELETYPE INPUT 2007 02730 6031 TYI1, KSF /*VT52 WAIT FOR THE KEYBOARD FLAG 2008 02731 5330 KSFWT, JMP .-1 /*VT52 WHILE WAITING, DISPLAY TEXT ON SCOPE 2009 02732 4526 CTCCHK /*VT52 CHECK FOR ^C 2010 02733 6036 KRB /*VT52 WATCH OUT - AC MAY NOT BE 0! 2011 02734 7510 TYIRET, SPA 2012 02735 5727 JMP I TYI /ALLOW READ WITH NO WAIT TO RETURN -1 2013 02736 0167 AND Z177 /MUST GET RID OF HIGH-ORDER BIT 2014 02737 5727 JMP I TYI 2015 2016 02740 0000 UPOC, 0 /MOVE TEXT BUFFER UP ONE CHAR 2017 02741 0167 AND Z177 2018 02742 3327 DCA TYI 2019 02743 7201 CLA IAC 2020 02744 4511 PUSHJ 2021 02745 0665 ADJ 2022 02746 4277 JMS STOREC /STORE CHAR IN THE HOLE WE MADE 2023 02747 5740 JMP I UPOC 2024 2025 02750 0000 CUPPER, 0 /FORCE CHARACTER TO UPPER CASE 2026 02751 1164 TAD ZM100 2027 02752 7500 SMA /IF ITS >100 2028 02753 0176 AND Z137 /REDUCE IT TO BE <140 2029 02754 1175 TAD Z100 /ABOVE LITERAL COULD HAVE BEEN (37 2030 02755 5750 JMP I CUPPER /RETURN /50 OS/8 TECO VERSION 7 V50 MACREL-V2C FRI 07-DEC-90 PAGE 57 Cmd G FILE # 1 2031 2032 2033 02756 1050 COLG3, TAD QP 2034 02757 4524 GETQ /GET A CHAR 2035 02760 4521 TYPE 2036 02761 2050 ISZ QP 2037 02762 2063 COLG4, ISZ MQ 2038 02763 5356 JMP COLG3 2039 02764 5512 POPJ 2040 2041 02765 3040 ZROSPN, DCA SCANP /RESET TO BEGINNING OF ITERATION 2042 02766 3024 ZRON, DCA NFLG /KILL NUMBER FLAG 2043 02767 3021 DCA CFLG /KILL COMMA FLAG 2044 02770 5571 JMP I ZIREST 2045 2046 .SBTTL Imm * 2047 2048 TSAVE, .OVRLAY X,TSAV 2049 ------ 02776 3200 02777 7677 * 2050 3000 PAGE /50 OS/8 TECO VERSION 7 V50 MACREL-V2C FRI 07-DEC-90 PAGE 58 Imm * FILE # 1 2051 2052 2053 03000 4511 TBS, PUSHJ 2054 03001 0000 * CMIN 2055 03002 4511 TLF, PUSHJ 2056 03003 0614 CHR.L 2057 03004 4523 CRLF 2058 03005 4511 PUSHJ 2059 03006 1654 CHR.T 2060 03007 5777 JMP I (T0A /50 OS/8 TECO VERSION 7 V50 MACREL-V2C FRI 07-DEC-90 PAGE 59 Imm * FILE # 1 2061 2062 2063 .SBTTL Cmd Q 2064 2065 03010 4532 CHR.Q, QREF /COMMAND Q 2066 03011 7100 CLL 2067 03012 5215 JMP CQOA 2068 2069 03013 4532 CPCS, QREF /COMMAND % 2070 03014 4537 GETN 2071 03015 2074 CQOA, ISZ QPTR /POINT TO VALUE WORD 2072 03016 1474 TAD I QPTR /INCREMENT VALUE BY ARGUMENT 2073 03017 3474 DCA I QPTR 2074 /ADD LINKS 2075 03020 7240 STA 2076 03021 1074 TAD QPTR /GO BACK ONE 2077 03022 3233 DCA QPTR2 /ALSO COMPL LINK 2078 03023 7030 CML RAR 2079 03024 1633 TAD I QPTR2 2080 03025 3633 DCA I QPTR2 2081 03026 1633 TAD I QPTR2 2082 03027 7004 RAL 2083 03030 7200 CLA 2084 03031 1474 TAD I QPTR 2085 03032 5776 JMP I (NCOM /MAKE A NUMBER 2086 2087 QPTR2, 2088 03033 0000 TYCRLF, 0 /TYPE A CR AND LF 2089 03034 1053 TAD CACR /CR 2090 03035 4521 TYPE 2091 03036 1060 TAD CALF /LF 2092 03037 4521 TYPE 2093 03040 5633 JMP I TYCRLF /RETURN /50 OS/8 TECO VERSION 7 V50 MACREL-V2C FRI 07-DEC-90 PAGE 60 Cmd Q FILE # 1 2094 2095 2096 .SBTTL Cmd , 2097 2098 03041 2024 CCMA, NCHK /COMMAND , 2099 03042 5061 JMP NERR /NUMBER FLAG NOT SET (COULD GIVE ?NAC HERE) 2100 03043 1030 TAD NLINK 2101 03044 7640 SZA CLA 2102 .ERROR 26 /NEG ARGUMENT TO , 2103 03046 2021 ISZ CFLG 2104 03047 7410 SKP 2105 03050 5061 JMP NERR /3 NUMERIC ARGUMENTS 2106 03051 1027 TAD N /MOVE N TO M 2107 03052 3026 CCMA3, DCA M /ENTERED HERE BY "H" COMMAND 2108 03053 3027 DCA N /AND CLEAR N 2109 03054 7240 STA 2110 03055 3021 DCA CFLG /SET COMMA FLAG 2111 03056 5512 POPJ /50 OS/8 TECO VERSION 7 V50 MACREL-V2C FRI 07-DEC-90 PAGE 61 Cmd , FILE # 1 2112 2113 2114 .SBTTL . Number routines 2115 2116 /RETURNS 13-BIT RESULT IN AC,LINK 2117 2118 03057 0000 NGET, 0 /SUBROUTINE TO GET LAST NUMBER, WITH 2119 03060 2024 NGET1, NCHK /DEFAULT VALUES OF +1 (NO NUMBER), 2120 03061 5264 JMP NGET2 /OR -1 (JUST A MINUS SIGN) 2121 03062 4551 GETNUM 2122 03063 5657 JMP I NGET /DIGITS SEEN - RETURN THEM 2123 03064 7301 NGET2, CLA CLL IAC /NO DIGITS SEEN 2124 03065 4511 PUSHJ /MAKE BELIEVE WE SAW THE DIGIT "1" 2125 03066 0000 * NCOM /AND CREATE A NUMBER FROM IT (TAKING ANY 2126 03067 5260 JMP NGET1 /OPERATORS INTO ACCOUNT) AND USE IT 2127 2128 03070 0000 BACKUP, 0 2129 03071 1573 TAD I ZQPNTR /SEE IF ANYTHING TO ERASE 2130 03072 7650 SNA CLA 2131 03073 5775 JMP I (T0 /NO, START ALL OVER 2132 03074 7240 STA 2133 03075 1573 TAD I ZQPNTR /THEN THE CHARACTER COUNT 2134 03076 4540 ADJQ /REDUCE THE LENGTH OF THE COMMAND REGISTER BY 1 2135 03077 1051 TAD QZ 2136 03100 4524 GETQ /GET THE CHARACTER WE RUBBED OUT 2137 03101 5670 JMP I BACKUP 2138 2139 03102 0000 CHLCMP, 0 /COMPARISON SUBROUTINE 2140 03103 1444 TAD I P /DATA FIELD IS 10 2141 03104 0166 AND Z377 2142 03105 6201 CDF 0 2143 .SORT CAFF,LFTAB 2144 03111 7710 SPA CLA /LINE TERMINATORS ARE CHANGED TO NEGATIVE NOS. 2145 03112 2102 ISZ CDT /IS COUNT EXHAUSTED? 2146 03113 5326 JMP CHLRET /NO 2147 03114 2044 CHRLI, ISZ P 2148 03115 7000 NOP 2149 03116 6201 CDF 0 2150 03117 5512 POPJ /50 OS/8 TECO VERSION 7 V50 MACREL-V2C FRI 07-DEC-90 PAGE 62 . Number routines FILE # 1 2151 2152 2153 .SBTTL Cmd H 2154 2155 03120 4511 CHR.H, PUSHJ /COMMAND H 2156 03121 3052 CCMA3 /SET M=0 AND COMMA FLAG ON AND FALL INTO "Z" 2157 /** COULD CAUSE ERROR ON B AND H IF NFLG SET 2158 .SBTTL Cmd Z 2159 2160 03122 1045 CHR.Z, TAD ZZ /COMMAND Z 2161 03123 7410 SKP /SKIP OVER CTL.H *WM 2162 2163 .SBTTL Cmd ^H 2164 2165 03124 6770 CTL.H, 6770 /^H COMMAND - TIME OF DAY - MULTI-8 *WM 2166 2167 .SBTTL Cmd B 2168 2169 03125 5774 CHR.B, JMP I (NCOM14 /COMMAND B 2170 2171 03126 6211 CHLRET, CDF 10 2172 03127 5702 JMP I CHLCMP /50 OS/8 TECO VERSION 7 V50 MACREL-V2C FRI 07-DEC-90 PAGE 63 Cmd B FILE # 1 2173 2174 2175 .SBTTL Cmd M 2176 2177 03130 4532 CHR.M, QREF /COMMAND M 2178 03131 1373 TAD (-4 /4 ITEMS PUSHED TO 2179 03132 4513 PUSHL /SAVE CURRENT MACRO STATE 2180 03133 0043 QCMND 2181 03134 0034 MPDL 2182 03135 0032 ITRST /SO THE "O" COMMAND WILL WORK IN MACROS 2183 03136 0040 SCANP /ZEROED BY "PUSHL" 2184 03137 1042 TAD PDLP /MUST CHECK PDL AT END OF MACRO 2185 03140 7041 CIA 2186 03141 3034 DCA MPDL 2187 03142 1071 TAD QNMBR /Q-REGISTER TO EXECUTE 2188 03143 4536 SETCMD /SET COMMAND LINE TO THIS Q-REG 2189 03144 5512 POPJ /LEAVE NUMBER FLAG ALONE AND EXIT /50 OS/8 TECO VERSION 7 V50 MACREL-V2C FRI 07-DEC-90 PAGE 64 Cmd M FILE # 1 2190 2191 2192 03145 1035 TCTLU, TAD SCHAR 2193 03146 4521 TYPE /PRINT "^U" 2194 03147 4772 TCTLS, JMS I (BACKUP 2195 03150 1161 TAD ZM12 /CHECK FOR LF 2196 03151 7640 SZA CLA 2197 03152 5347 JMP TCTLS /LOOP UNTIL LF 2198 03153 7001 IAC 2199 03154 1573 TAD I ZQPNTR 2200 03155 4540 ADJQ 2201 03156 5771 JMP I (SCP.CR /50 OS/8 TECO VERSION 7 V50 MACREL-V2C FRI 07-DEC-90 PAGE 65 Cmd M FILE # 1 2202 2203 2204 /COULD REPLACE 4044 BY OUTESC 2205 /OUTESC,TAD (44-33-100 2206 / JMP OUTLF2 /TO FIX ^T INPUT OF <ESC> BUG 2207 2208 03157 2262 CTLTAB, OUT.BEL /BELL 2209 03160 2222 OUT.CR 2210 03161 2231 POUTHT, OUT.HT 2211 03162 4044 4044 /$ WITH SIGN BIT ON 2212 03163 2225 OUT.FF 2213 03164 2224 OUT.VT 2214 03165 2216 OUT.LF ------ 03171 1461 03172 3070 03173 7774 03174 2017 03175 0203 03176 0000 * 03177 0204 2215 3200 PAGE /50 OS/8 TECO VERSION 7 V50 MACREL-V2C FRI 07-DEC-90 PAGE 66 Cmd M FILE # 1 2216 2217 2218 .SBTTL 2219 2220 0200 .ASECT TEC0C 2221 2222 3600 *3600 2223 2224 03600 1065 NORMAL, TAD ODEV /CLOSE FILE 2225 03601 6212 CIF 10 2226 03602 4560 JMS I Z200 2227 03603 0004 4 2228 03604 4741 OUNAM 2229 03605 0000 OCNT, 0 /NUMBER OF BLOCKS 2230 03606 7402 HLT 2231 03607 1114 TAD ERROR /RESET OUTPUT SUBROUTINE POINTER 2232 03610 3122 DCA OUTR /TO ERROR 2233 03611 6212 ECDISM, CIF 10 /DISMISS OS/8 USR ROUTINE 2234 03612 4560 JMS I Z200 2235 03613 0011 11 /KICK USR OUT 2236 03614 5571 JMP I ZIREST /50 OS/8 TECO VERSION 7 V50 MACREL-V2C FRI 07-DEC-90 PAGE 67 FILE # 1 2237 2238 2239 / SKIP IF LETTER OR DIGIT 2240 2241 03615 0000 SCHSRT, 0 2242 03616 4553 TESTA /TEST FOR LETTER 2243 03617 7410 SKP /NOT ALPHABETIC 2244 03620 2215 ISZ SCHSRT /YES IT'S ALPHABETIC 2245 03621 4554 TESTD /TEST FOR DIGIT 2246 03622 5615 JMP I SCHSRT /NOT A DIGIT 2247 03623 2215 ISZ SCHSRT /YES, IT'S A DIGIT 2248 03624 5615 JMP I SCHSRT /RETURN 2249 2250 03625 0000 RT, 0 /ROUTINE TO PACK THIRD CHAR INTO OUTPUT BUFFER 2251 03626 7106 CLL RTL 2252 03627 7006 RTL 2253 03630 3006 DCA DM /CALLED TWICE - FIRST TIME WITH CHAR IN AC, 2254 03631 1006 TAD DM /SECOND TIME WITH "DM" IN AC 2255 03632 0155 AND Z7400 2256 03633 1477 TAD I OPTR2 2257 03634 3477 DCA I OPTR2 2258 03635 2077 ISZ OPTR2 2259 03636 5625 JMP I RT /50 OS/8 TECO VERSION 7 V50 MACREL-V2C FRI 07-DEC-90 PAGE 68 FILE # 1 2260 2261 2262 03637 0000 DVIMQL, 0 /FAKE MQL DVI 2263 03640 3064 DCA DVT1 /STORE DIVIDEND 2264 03641 3063 DCA MQ /INITIALIZE QUOTIENT 2265 03642 1637 1$: TAD I DVIMQL /GET DIVISOR 2266 03643 7041 CIA 2267 03644 7100 CLL /SET UP TO TAKE IMMEDIATE EXIT ON ZERODIVIDE 2268 03645 1064 TAD DVT1 /SUBTRACT DIVISOR FROM DIVIDEND 2269 03646 7420 SNL /OVERFLOWED YET? 2270 03647 5253 JMP 2$ /YES 2271 03650 3064 DCA DVT1 /NO - STORE IT BACK 2272 03651 2063 ISZ MQ /BUMP QUOTIENT 2273 03652 5242 JMP 1$ /AND LOOP 2274 03653 7200 2$: CLA 2275 03654 1063 TAD MQ 2276 03655 2237 ISZ DVIMQL /SKIP PAST DIVISOR 2277 03656 5637 JMP I DVIMQL /RETURN WITH QUOTIENT IN AC 2278 2279 03657 0000 CHKQF, 0 /CHECK FOR EXPLICIT QUOTES 2280 03660 2025 ISZ QFLG /QUOTE FLAG SET? 2281 03661 5264 JMP .+3 /NO 2282 03662 4517 SCAN /GET QUOTING CHAR 2283 03663 3010 DCA QUOTE /PUT INTO SEARCH TABLE 2284 03664 3025 DCA QFLG /ZAP QUOTE FLAG 2285 03665 5657 JMP I CHKQF /RETURN /50 OS/8 TECO VERSION 7 V50 MACREL-V2C FRI 07-DEC-90 PAGE 69 FILE # 1 2286 2287 2288 /****************** 2289 / 2290 / THE FOLLOWING COULD MOVE TO OVERLAY 2291 / 2292 /****************** 2293 2294 03666 0000 SAVTRA, 0 /SAVE TRACE MODE 2295 03667 1023 TAD TFLG 2296 03670 3277 DCA TFGTMP 2297 03671 3023 DCA TFLG 2298 03672 5666 JMP I SAVTRA /EXIT WITH TRACE OFF 2299 2300 03673 0000 RESTRA, 0 /RESTORE TRACE MODE 2301 03674 1277 TAD TFGTMP 2302 03675 3023 DCA TFLG 2303 03676 5673 JMP I RESTRA 2304 03677 0000 TFGTMP, 0 /50 OS/8 TECO VERSION 7 V50 MACREL-V2C FRI 07-DEC-90 PAGE 70 FILE # 1 2305 2306 2307 03700 0000 DECPUT, 0 /DEVICE INDEPENDENT I/O 2308 03701 1160 TAD Z200 /ADD ON PARITY BIT 2309 03702 2347 ISZ O3 /3RD CHAR OF 3? 2310 03703 5341 JMP O2 /NO 2311 03704 4225 JMS RT /YES, SPECIAL HANDLING 2312 03705 1006 TAD DM /TEMP STORAGE 2313 03706 4225 JMS RT 2314 03707 7346 SETO3, MTHREE /RESET SWITCH 2315 03710 3347 DCA O3 2316 03711 2076 ISZ OCRCNT /END OF BUFFER? 2317 03712 5700 JMP I DECPUT /NO 2318 03713 4350 JMS FITS /CHECK FOR OUTPUT OVERFLOW 2319 03714 5335 JMP OERR /YUP 2320 03715 3205 DCA OCNT /NO - UPDATE OUTPUT COUNT 2321 03716 4466 JMS I OUTHND /OUTPUT THE BUFFER 2322 03717 4400 OUCTRL, 4400 2323 03720 5200 BUFOUT, OUT 2324 03721 0000 OBLK, 0 2325 03722 5335 JMP OERR 2326 03723 1321 TAD OBLK 2327 03724 1012 TAD INRSIZ /BUMP THE OUTPUT RECORD NUMBER BY THE MAXIMUM 2328 03725 3321 OSETP, DCA OBLK /SINCE ALL WRITES EXCEPT THE LAST ARE MAXIMAL 2329 03726 1320 TAD BUFOUT /BUFFER POINTERS 2330 03727 3344 DCA OPTR1 2331 03730 1320 TAD BUFOUT 2332 03731 3077 DCA OPTR2 2333 03732 1346 TAD OUTSIZ 2334 03733 3076 DCA OCRCNT /DOUBLEWORD COUNT (7377 IF 8K, 6777 IF 12K) 2335 03734 5307 JMP SETO3 /SET BYTE COUNTER AND RETURN 2336 03735 7200 OERR, CLA 2337 03736 1114 TAD ERROR 2338 03737 3122 DCA OUTR /INHIBIT FUTURE OUTPUT 2339 .ERROR 14 2340 03741 3744 O2, DCA I OPTR1 /NORMAL HANDLING 2341 03742 2344 ISZ OPTR1 /BUMP POINTER 2342 03743 5700 JMP I DECPUT 2343 03744 0000 OPTR1, 0 2344 03745 0000 OMAXLN, 0 /SIZE OF HOLE FOR OUTPUT 2345 03746 7377 OUTSIZ, 7377 /6777 2346 03747 0000 O3, 0 /50 OS/8 TECO VERSION 7 V50 MACREL-V2C FRI 07-DEC-90 PAGE 71 FILE # 1 2347 2348 2349 03750 0000 FITS, 0 /SUBROUTINE TO CHECK FOR OUTPUT OVERFLOW 2350 03751 1344 TAD OPTR1 /** AC MAY CONTAIN FUDGE ON INPUT ** 2351 03752 7041 CIA 2352 03753 1320 TAD BUFOUT /COMPUTE NUMBER OF WORDS IN BUFFER 2353 03754 0155 AND Z7400 /ROUND "UP" TO NEXT BUFFERLOAD 2354 03755 7041 CIA /MAKE POSITIVE 2355 03756 7130 CLL CML RAR 2356 03757 3317 DCA OUCTRL /AND SAVE IT AS A BUFFER CONTROL WORD 2357 03760 1317 TAD OUCTRL 2358 03761 7104 CLL RAL 2359 03762 7106 CLL RTL /ISOLATE THE BLOCK COUNT OF THE CONTROL WORD 2360 03763 7006 RTL /IN THE LOW ORDER PART OF THE AC 2361 03764 7004 RAL 2362 03765 1205 TAD OCNT /ADD IT TO THE CURRENT OUTPUT COUNT 2363 03766 7120 CLL CML 2364 03767 1345 TAD OMAXLN /SEE THAT WE DIDN'T OVERFLOW 2365 03770 7460 SNL SZA /THE ASSIGNED OUTPUT AREA 2366 03771 5750 JMP I FITS /OOPS - WE DID - ERROR RETURN 2367 03772 7041 CIA 2368 03773 1345 TAD OMAXLN /SUBTRACT OFF THE LIMIT 2369 03774 7041 CIA /TO ARRIVE AT THE UPDATED BLOCK COUNT 2370 03775 2350 ISZ FITS 2371 03776 5750 JMP I FITS /AND SKIP RETURN 2372 4000 PAGE /50 OS/8 TECO VERSION 7 V50 MACREL-V2C FRI 07-DEC-90 PAGE 72 FILE # 1 2373 2374 2375 0200 .ASECT TECO2 2376 2377 4400 *4400 2378 2379 .SBTTL 2380 2381 04400 0000 STABLE, ZBLOCK 40 /SEARCH BUFFER 2382 2383 /MUST KEEP THIS CODE IMMEDIATELY AFTER STABLE 2384 .SBTTL Cmd W 2385 2386 04440 2024 CHR.W, NCHK /*VT52 W COMMAND - IF THERE WAS A NUMBER BEFORE 2387 04441 5244 JMP 2$ /*VT52 THE W, SET THE NUMBER OF LINES TO DISPLAY 2388 04442 1027 TAD N /*VT52 EQUAL TO THAT NUMBER. 2389 04443 3013 DCA NUMLNS /*VT52 2390 /DON'T WORRY ABOUT NEGATIVE N 2391 04444 2047 2$: ISZ R /FAKE OUT! (MUST BE BEFORE CALL TO DISPLY) 2392 04445 4545 DISPLY /IN ANY CASE, GO THROUGH ONE DISPLAY CYCLE 2393 04446 5512 CTLWR, POPJ /THEN RETURN 2394 2395 04447 0241 AIDTAB, ROCMND /RUBOUT 2396 04450 3145 TCTLU /^U (COULD BE T2M1) 2397 04451 0320 TQMK /? 2398 04452 2771 TSAVE /* 2399 04453 3002 TLF /LF 2400 04454 3000 TBS /BS 2401 04455 0323 TSLASH /SLASH /50 OS/8 TECO VERSION 7 V50 MACREL-V2C FRI 07-DEC-90 PAGE 73 Cmd W FILE # 1 2402 2403 2404 04456 0000 NXTBUF, 0 2405 04457 7640 SZA CLA 2406 04460 5270 JMP 1$ /READ-ONLY IF AC NOT 0 ON ENTRY 2407 04461 4511 PUSHJ 2408 04462 1656 CPOC /HP 2409 04463 3045 DCA ZZ /FORCE Y TO WORK 2410 04464 2036 ISZ FFFLAG /IF WE DIDN'T SEE A FORM FEED ON INPUT 2411 04465 5270 JMP 1$ /DON'T OUTPUT ONE 2412 04466 1056 TAD CAFF 2413 04467 4522 OUTPUT 2414 04470 4511 1$: PUSHJ 2415 04471 2023 CHR.Y /READ NEW BUFFER 2416 04472 4526 CTCCHK /CHECK FOR ^C 2417 04473 7200 CLA /*K* CTCCHK LEAVES AC NON-ZERO! 2418 04474 5656 JMP I NXTBUF 2419 2420 04475 0000 GETUSR, 0 /ROUTINE TO LOCK THE USR INTO CORE 2421 04476 6201 CDF 0 2422 04477 1045 TAD ZZ /IF THE TEXT BUFFER IS EMPTY AND 2423 04500 7650 SNA CLA /WE HAVE 12K, SO Q-REGS ARE IN FIELD 2, 2424 04501 7000 NWRUSR, NOP /(CHANGED BY INIT CODE TO "TAD Z4" IF 12K) 2425 04502 7132 STL RTR /THEN WE SHOULD NOT SAVE CORE ON A USR CALL. 2426 / DCA I (JSBITS /THIS STORES A 2000 OR A 2001 2427 04503 3775 DCA I M32 /" 2428 04504 6212 CIF 10 2429 04505 4564 JMS I Z7700 /OK - NOW LOAD THE USR IN 2430 04506 0010 10 2431 04507 5675 JMP I GETUSR /50 OS/8 TECO VERSION 7 V50 MACREL-V2C FRI 07-DEC-90 PAGE 74 Cmd W FILE # 1 2432 2433 2434 04510 0177 AIDLST, 177 /RUBOUT 2435 04511 0025 ^"U /^U 2436 04512 0077 "? /? 2437 04513 0052 "* /* 2438 04514 0012 12 /LF 2439 04515 0010 10 /BS 2440 04516 0057 L16K, "/ /SLASH (MUST BE LAST) -1 IF NO EXTENDED ERRS 2441 2442 .SBTTL Cmd U 2443 2444 04517 4532 CHRUU, QREF /COMMAND U 2445 04520 2024 NCHK 2446 .ERROR 22 /U MUST BE PRECEDED BY A NUMBER 2447 04522 1030 TAD NLINK 2448 04523 7112 CLL RTR 2449 04524 3030 DCA NLINK 2450 04525 7350 AC3777 2451 04526 0474 AND I QPTR 2452 04527 1030 TAD NLINK 2453 04530 3474 DCA I QPTR 2454 04531 2074 ISZ QPTR 2455 04532 1027 TAD N 2456 04533 3474 DCA I QPTR 2457 04534 5512 POPJ /50 OS/8 TECO VERSION 7 V50 MACREL-V2C FRI 07-DEC-90 PAGE 75 Cmd U FILE # 1 2458 2459 2460 /SKIP IF LETTER (LEAVES U.C. OF CHAR IN AC) 2461 2462 04535 0000 TSTA, 0 2463 04536 4542 UPPERC /MAKE LIFE EASIER FOR US 2464 04537 1365 TAD M101 2465 04540 7100 CLL 2466 04541 1375 TAD M32 2467 04542 7420 SNL 2468 04543 2335 ISZ TSTA 2469 04544 1377 TAD (101+26. 2470 04545 5735 JMP I TSTA 2471 2472 04546 0001 EDFLAG, 1 /MUST BE KEPT TOGETHER 2473 04547 0002 EHFLAG, 2 2474 04550 0062 EOFLAG, VERSN 2475 04551 0000 ESFLAG, 0 2476 04552 0204 ETFLAG, 200+4 /INITIALLY ABORT ON ERROR AND READ LOWER CASE 2477 04553 0000 EUFLAG, 0 2478 /EVFLAG, 0 2479 /CXFLAG, 0 2480 2481 04554 0007 COMLST, 7 /^G, COMMAND LINE EDIT LIST 2482 04555 0015 15 /CR, INSERT CR & LF 2483 04556 0177 177 /RUBOUT 2484 04557 0021 ^"Q /XON, IGNORE *WM 2485 04560 0023 ^"S /XOF, IGNORE *WM 2486 04561 0025 ^"U /^U - RUB OUT LINE 2487 04562 0033 33 /ALT MODE 2488 04563 0052 "* /* 2489 04564 0040 40 /SPACE 2490 04565 7677 M101, -101 /50 OS/8 TECO VERSION 7 V50 MACREL-V2C FRI 07-DEC-90 PAGE 76 Cmd U FILE # 1 2491 2492 2493 /SEARCH STRING MODIFIERS: 2494 2495 04566 0016 SCHLST, ^"N /^N - ANYTHING BUT 2496 04567 0021 ^"Q /^Q - LITERALLY 2497 04570 0023 ^"S /^S - ANY SEPARATOR 2498 04571 0030 ^"X /^X - ANYTHING 2499 04572 0022 ^"R /^R - LITERALLY 2500 04573 0005 ^"E /^E - RESERVED FOR EXTENSIONS 2501 04574 7777 SCHU, -1 /^ - USE NEXT CHAR AS CONTROL CHARACTER *ED "^ 2502 /SCHU MUST BE LAST AND MUST BE FOLLOWED BY A NEGATIVE NUMBER 2503 04575 7746 M32, -32 ------ 04577 0133 2504 4600 PAGE /50 OS/8 TECO VERSION 7 V50 MACREL-V2C FRI 07-DEC-90 PAGE 77 Cmd U FILE # 1 2505 2506 2507 /DISPATCH TABLE FOR COMMAND INPUT 2508 2509 04600 0202 COMTAB, TBEL /^G 2510 04601 0261 TCRLF /CR 2511 04602 0241 RUBY, ROCMND /RUBOUT 2512 04603 0243 T2M1 /^Q *WM 2513 04604 0243 T2M1 /^S *WM 2514 04605 3145 TCTLU /^U 2515 04606 0266 TALTM /ALTMODE 2516 04607 1450 TSTAR /* 2517 04610 1447 TSPACE /SPACE 2518 2519 04611 0000 CHKBZ, 0 /SEE THAT B .LE. C(AC) .LE. ZZ 2520 04612 7430 SZL 2521 04613 5611 JMP I CHKBZ /POP 2522 04614 7041 CIA /ENTERED WITH LINK SET CORRECTLY 2523 04615 1045 TAD ZZ 2524 04616 7420 SNL /13-BIT ARITHMETIC 2525 04617 5611 JMP I CHKBZ /C(AC)>ZZ 2526 04620 7041 CIA 2527 04621 1045 TAD ZZ /RESTORE ORIGINAL AC 2528 04622 2211 ISZ CHKBZ 2529 04623 5611 JMP I CHKBZ 2530 /50 OS/8 TECO VERSION 7 V50 MACREL-V2C FRI 07-DEC-90 PAGE 78 Cmd U FILE # 1 2531 2532 2533 04624 0000 SCUPPR, 0 /SCAN AND CONVERT TO UPPER CASE 2534 04625 4517 SCAN 2535 04626 4542 UPPERC 2536 04627 5624 JMP I SCUPPR /THAT'S ALL? 2537 2538 /Q-REGISTER STORAGE - EACH Q-REGISTER TAKES 2 WORDS. 2539 /WD 1 CONTAINS THE LENGTH OF THE CHARACTER PART OF THE REGISTER (IF ANY) 2540 /WD 2 CONTAINS THE VALUE OF THE NUMERIC PART OF THE REGISTER (IF ANY) 2541 2542 04630 0000 QARRAY, ZBLOCK 110 /36 Q-REGISTERS * 2 WORDS/REGISTER = 72 WORDS 2543 04740 0000 QPNTR, 0 /FAKE Q-REGISTER FOR INPUT LINE - LENGTH ONLY. 2544 2545 04741 0000 OUNAM, ZBLOCK 4 /NAME OF OPEN OUTPUT FILE GOES HERE /50 OS/8 TECO VERSION 7 V50 MACREL-V2C FRI 07-DEC-90 PAGE 79 Cmd U FILE # 1 2546 2547 /50 OS/8 TECO VERSION 7 V50 MACREL-V2C FRI 07-DEC-90 PAGE 80 SYMBOL TABLE AC3777 7350 CHR.H G 3120 C.W G 0771 ETFLAG G 4552 ADJ 0665 CHR.I G 2635 C7600 0454 ET1 G 2523 ADJQ G 4540 CHR.J G 0600 DECGET 2045 ET8 G 2526 ADJ2 0735 CHR.K G 0726 DECPUT G 3700 EUFLAG G 4553 AIDLST 4510 CHR.L G 0614 DISPLY G 4545 EU1 G 2245 AIDTAB 4447 CHR.M G 3130 DM 0006 EU2 G 2247 APLF 2163 CHR.P G 1600 DNN1 0745 EXPAND 2724 APOP 2021 CHR.Q G 3010 DNN2 0764 FFFLAG 0036 ASR33 G 2227 CHR.R G 0603 DNN3 0766 FITS 3750 BACKUP 3070 CHR.T G 1654 DRAD X **** FLD: 0 0200 ASECT BCHAR 1526 CHR.U G 2517 DSPLAY X **** FOVRLC G 0044 BLSP1 G 1463 CHR.UA G 0475 DVIMQL 3637 FOVRLY 3204 BLSP2 G 1464 CHR.W G 4440 DVT1 0064 GETN G 4537 BLSP3 G 1521 CHR.X G 1707 EBFLG 0070 GETNUM G 4551 BLSP4 G 1522 CHR.Y G 2023 ECDISM G 3611 GETQ G 4524 BSP 1401 CHR.Z G 3122 EDFLAG G 4546 GETQX G 0422 BUFIN G 2063 CHR1 0604 EHFLAG G 4547 GETUSR G 4475 BUFOUT 3720 CHTECO G 0271 EH4 G 2607 IBLK G 2064 BUGFLG 1400 CIL1 2645 ELIST X **** IC G 2126 BZCHK 4527 CIL2 G 2647 ENTRCE G 4547 ICRCNT G 0075 CAAM 0055 CIL3 2667 EOFLAG 4550 IN 6200 CACR G 0053 CIL4 2674 EOVRLC G 0042 INCTLW G 2167 CAFF 0056 CLNF 0022 EOVRLY 3202 INCTRL 2062 CAHT G 0054 CLOQ 0610 ERR G 4514 INER 2165 CALF 0060 CMDSET 2465 ERROR G 0114 INHND 0067 CATS G 2554 CMIN X **** ERRRET G 2606 INHNDL G ****? <---- CCMA G 3041 COLCT G 2221 ERRXX G 2600 INPCNT G 2170 CCMA3 3052 COLG3 2756 ERRYY X **** INRCNT G 0100 CDSP X **** COLG4 2762 ERR01 G 0011 INRSIZ G 0012 CDT 0102 COMLST 4554 ERR02 G 0212 INXR G 0016 CEXP G 1763 COMPAR 0331 ERR03 G 2506 IOVRLC G 0040 CFLG 0021 COMTAB 4600 ERR04 G 0515 IOVRLY 3200 CFSI G 1754 CPCS G 3013 ERR05 G 0675 IREST G 2555 CHAA 2037 CPCT 1636 ERR07 G 0061 ITRCNT 0033 CHAR 0031 CPOA 1620 ERR11 G 0611 ITRST 0032 CHKBZ 4611 CPOC 1656 ERR12 G 2313 I2 G 2102 CHKCTC G 0453 CQOA 3015 ERR13 G 2453 I3 2062 CHKCTR G 0463 CRLF G 4523 ERR14 G 3740 JTECO X **** CHKQF 3657 CSEM X **** ERR15 G 2166 J12K1 G 5324 CHLCMP 3102 CTCCHK 4526 ERR17 G 1673 J12K2 G 5360 CHLRET 3126 CTLBEL 0052 ERR18 G 2025 KSFWT G 2731 CHLTMP 0770 CTLTAB 3157 ERR19 G 2612 KTYPE G 0103 CHREY G 2035 CTLT2 2525 ERR22 G 4521 LASTC G 0106 CHRLI 3114 CTLWR G 4446 ERR24 G 1756 LFTAB 2054 CHRL1 G 0615 CTL.A G 1762 ERR25 G 1615 LISTEN 4520 CHRT2 1661 CTL.C G 0465 ERR26 G 3045 L12K1 G 0717 CHRUU 4517 CTL.H G 3124 ERR30 X **** L12K2 G 0753 CHRW 1660 CTL.I G 2642 ERR32 G 2034 L16K G 4516 CHR.A G 2000 CTL.T G 2520 ERR34 G 0464 L7 2235 CHR.B G 3125 CUPPER 2750 ERR37 G 0740 M 0026 CHR.C G 0606 CWOA 1663 ERR38 G 1737 MEMLOC G 2000 CHR.D G 0650 CWOB 1676 ERR39 G 2572 MEMSIZ G 0105 CHR.E G 2610 CWOC 1704 ESCAPE X **** MPDL 0034 CHR.G G 2710 CWOUT 1702 ESFLAG 4551 MQ 0063 /50 OS/8 TECO VERSION 7 V50 MACREL-V2C FRI 07-DEC-90 PAGE 80-1 SYMBOL TABLE MQLDVI G 4541 OUT.FF 2225 QPUT G 4534 SRT 0245 MQMAX G 2366 OUT.HT 2231 QPUTS G 0400 STABLE G 4400 MTHREE 7346 OUT.LF 2216 QREF G 4532 STECO1 G 2052 MTWO 7344 OUT.VT 2224 QREFER 2477 STECO2 G 2135 M101 4565 OVBRAN 2616 QSKP G 4531 STOREC 2677 M32 4575 OVERLY 2534 QSUM 4533 ST4BTS 0443 N 0027 OVREAD G 2546 QSUMR 2400 TALTM 0266 NAME G 0003 OVRLAY 4550 QTST 2563 TBEL 0202 NCHK G 2024 O2 3741 QUOTE 0010 TBS 3000 NCOM X **** O3 3747 QUOTST G 4535 TCINIT X **** NCOM14 G 2017 P 0044 QZ 0051 TCRLF 0261 NERR 0061 PDLBEG X **** Q12MAX G 5600 TCTLS G 3147 NFLG 0024 PDLEND X **** R G 0047 TCTLU 3145 NGET 3057 PDLP 0042 RADIX 0062 TECO 1000 ASECT NGET1 3060 PDL..B 0260 REND 0037 TECOS G 0200 NGET2 3064 PDL..E 0517 RESORT G 5516 TECO.0 0014 ASECT NLINES 1716 PLUSND 0733 RESTRA 3673 TECO1 G 0201 NLINK 0030 POKE G 1637 ROCMND 0241 TECO2 4745 ASECT NMT 0020 POP 4510 RT 3625 TEC.16 0200 ASECT NNEW13 G 2530 POPJ G 5512 RUBY G 4602 TEC0B 3200 ASECT NOCON 2243 POPJXX 0470 SAVMQ 1525 TEC0C 4000 ASECT NORMAL G 3600 POPJXY 0472 SAVTRA 3666 TEMPT G 0104 NOTRCE G 4546 POPK G 2562 SCAN G 4517 TESTA G 4553 NOYANK 1651 POPL G 4513 SCANP 0040 TESTD G 4554 NRET X **** POPXX 0501 SCANUP G 4543 TFGTMP 3677 NUMGET 0643 POUTHT G 3161 SCAPE G 1527 TFLG 0023 NUMLNS G 0013 PUSH 4507 SCHAR 0035 TLF 3002 NWRUSR G 4501 PUSHJ G 4511 SCHCTE G 2572 TMP 2551 NXTBUF 4456 PUSHJY 0520 SCHLST G 4566 TPUT G 0554 OBLK 3721 PUSHL G 4513 SCHSRT G 3615 TPUTX G 0556 OCMDLN G 0101 PUSHLX 0527 SCHU G 4574 TQMK G 0320 OCNT G 3605 PUSHXX 0507 SCOPGO 1433 TSAV X **** OCRCNT G 0076 PUTT G 4552 SCOPY G 1414 TSAVE 2771 ODEV 0065 Q 0046 SCPBIT G 7726 TSFWT G 0566 OERR 3735 QADJ 2265 SCPTAB 1563 TSLASH 0323 OMAXLN G 3745 QADJDN 2356 SCP.BE 1424 TSPACE 1447 OPTR1 3744 QARRAY 4630 SCP.CR 1461 TSTA G 4535 OPTR2 0077 QBASE G 0072 SCP.FF 1436 TSTAR 1450 OSCANP 0041 QCHK G 4530 SCP.LF 1435 TSTD X **** OSETP G 3725 QCMND 0043 SCP.RO 1426 TSTSEP G 4544 OUCTRL 3717 QDNN 2340 SCP.VT 1437 TTY10 1430 OUNAM G 4741 QFLG 0025 SCUPPR 4624 TTY40 1445 OUT 5200 QLENGT G 0073 SERR G 0011 TYCRLF 3033 OUTCC 2205 QLIMIT G 0367 SETCMD 4536 TYI G 2727 OUTCOM 2237 QMAX 3720 SETO3 3707 TYIRET G 2734 OUTDNE G 0573 QMK X **** SETSKP X **** TYI1 G 2730 OUTHND 0066 QNMBR 0071 SGET 2423 TYPCTV 2200 OUTLF1 2217 QOVER 2367 SKPSET G 4525 TYPE G 4521 OUTLF2 2214 QOVRLC G 0041 SORT G 4515 T0 G 0203 OUTPUT G 4522 QOVRLY 3201 SORTA1 G 1536 T0A G 0204 OUTR G 0122 QP 0050 SORTA2 1556 T1 0206 OUTSIZ G 3746 QPNTR G 4740 SORTB 1530 T2 0244 OUT.BE 2262 QPTR G 0074 SPUT 0341 T2A 0253 OUT.CR 2222 QPTR2 3033 SQUO 2275 T2M1 0243 /50 OS/8 TECO VERSION 7 V50 MACREL-V2C FRI 07-DEC-90 PAGE 80-2 SYMBOL TABLE T6A 0274 UPNL 0703 UPOC G 2740 UPPERC G 4542 VBAR G 0326 VBARE X **** VERSN 0062 VT05B G 1442 VT52B G 0455 XH X **** XOVRLC G 0043 XOVRLY 3203 XR 0017 YANKY 1633 YSKP G 2033 ZIREST 0171 ZMAX 7640 ZM10 0165 ZM100 0164 ZM12 0161 ZM40 0163 ZM60 0162 ZNXTBU 0172 ZQPNTR 0173 ZRON G 2766 ZROSPN G 2765 ZZ 0045 Z100 0175 Z11 0054 Z12 0060 Z137 0176 Z14 0056 Z177 0167 Z200 0160 Z33 0055 Z377 0166 Z4 0156 Z40 0157 Z52 0174 Z6 0177 Z7 0052 Z7400 0155 Z77 0170 Z7700 0164 Z7740 0163 Z7770 0165 .ERROR M 0000 .OVRLA M 0000 .SORT M 0000