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