File: TECSRH.LS of Disk: V50/Source/Source-Listing-MAC-2
(Source file text)
PAGE LINE SUBTITLE 6 181 Cmd FN 6 183 Cmd F_ 7 190 Cmd FS 7 194 Cmd S 8 226 Cmd _ 8 230 Cmd N /5 TECO V50 SEARCH ROUTINES MACREL-V2C FRI 07-DEC-90 PAGE 1 FILE # 1 1 /5 TECO V50 SEARCH ROUTINES 2 3 / 08-APR-79 FIXED END OF BUFFER TEST 4 / 10-APR-79 CONDITIONALIZED IN EXTENDED MATCH CONTROL 5 / AND BACKWARD SEARCHES 6 7 .ENABLE 7BIT 8 9 .GLOBAL CHR.FB,CHR.FN,CHR.FS,CHR.S,CHR.N,CHR.BA 10 .GLOBAL CSWT1,SCHCTQ,SCHINV,SCHSEP,SCHUPA,SEARCH,SRHLEN 11 12 .EXTERNAL GETN,QCHK,STABLE,QUOTST,SCHLST,SCANUP,ERR,SORT,SCHTAB 13 .ZTERNAL Z77,P,Z377,ZZ,NMT,N,CAFF,Z40 14 .EXTERNAL SCAN,TSTSEP,QSKP,PUSHJ,CIL2,NNEW13,CFSI 15 .EXTERNAL QUOTE,TSTA,SCHSRT,TSTD,UPPERC 16 .ZTERNAL DVT1,CLNF,ZIREST,NFLG,REND,ZNXTBUF 17 18 .MACRO .ERROR ERNUM 19 .GLOBAL ERR'ERNUM 20 ERR'ERNUM: ERR 21 .ENDM 22 23 .MACRO .SORT ARG1,ARG2 24 SORT; ARG1; ARG2-ARG1 25 .ENDM 26 27 0000 .XSECT SRHX 28 ?0000 0000 SXR, 0 /5 TECO V50 SEARCH ROUTINES MACREL-V2C FRI 07-DEC-90 PAGE 2 FILE # 1 29 30 0000 BACKW=0 /NO BACKWARD SEARCHES 31 0000 ANCHOR=0 /NO ANCHORED SEARCHES 32 0000 OVFLPR=0 /NO OVERFLOW PROTECTION 33 0000 PPMODE=0 /NO POINTER PRESERVATION MODE 34 0000 XTNDED=0 /NO EXTENDED MATCH CONTROL 35 36 0200 .ASECT TECSRH 37 38 1000 *1000 39 40 /SEARCH SUBROUTINE - CALLED BY N, S, AND _ COMMANDS 41 42 01000 0000 SEARCH, 0 43 01001 3375 DCA REPFLG /AC MAY BE NON-0 TO ALLOW A REPLACE 44 .IF EQ BACKW < 45 01002 0000 * GETN 46 01003 7470 SZL SNA 47 .ERROR 29 /NEG OR 0 ARG TO SEARCH 48 01005 7041 CIA 49 01006 3374 DCA CSN /GET NUMBER OF OCCURRANCES TO SEARCH FOR 50 > 51 .IF NE BACKW < 52 GETNUM 53 SNA 54 .ERROR 29 /0 ARGUMENT TO SEARCH 55 SZL 56 CIA 57 DCA CSN 58 CML RTL 59 TAD (-1 60 DCA PINCR 61 > 62 01007 0000 * QCHK /GET REPLACEMENT FOR ALTMODE, IF ANY 63 01010 1377 TAD (STABLE-1 64 01011 3000 * DCA SXR /INITIALIZE XR 65 01012 1230 TAD SRHLEN 66 01013 3373 DCA CSP 67 01014 0000 * GET, QUOTST /GET A CHARACTER FROM THE SEARCH STRING 68 01015 5231 JMP SCHQUO /OOPS- NO MORE 69 SORTIT, .SORT SCHLST,SCHTAB /SEE IF IT'S SPECIAL 70 01021 3400 * STORE, DCA I SXR /STORE THE CHAR IN THE SEARCH BUFFER 71 01022 2373 ISZ CSP 72 01023 5214 JMP GET /LOOP 73 .IF NE OVFLPR < 74 STA 75 TAD SXR 76 DCA SXR 77 DCA I SXR /PUT 0 AT END (NEEDED WHEN REPORT ?STL ERROR) 78 > 79 .ERROR 06 /OOPS - SEARCH BUFFER FULL! 80 81 01025 0000 * SCHUPA, SCANUP /GET THE NEXT CHARACTER (IN UPPER CASE) 82 01026 0000 * AND Z77 /CONVERT IT TO A CONTROL CHARACTER 83 01027 5216 JMP SORTIT /AND STORE IT IN PLACE OF ^ /5 TECO V50 SEARCH ROUTINES MACREL-V2C FRI 07-DEC-90 PAGE 3 FILE # 1 84 85 / PERFORM THE SEARCH 86 87 01030 7731 SRHLEN, -47 /* CHANGED TO -40 ON PDP-12 OR ON VT52 SUPPORT 88 89 01031 1373 SCHQUO, TAD CSP 90 01032 7041 CIA /A NULL SEARCH STRING MEANS USE THE 91 01033 1230 TAD SRHLEN 92 01034 7640 SZA CLA /PREV CONTENTS OF THE SEARCH BUFFER, ELSE 93 01035 3400 * DCA I SXR /STORE TERMINATING 0 AND BEGIN THE SEARCH 94 .IF NE PPMODE < 95 NOP /*ED BECOMES TAD P IF 16ED 96 DCA PSAVE 97 > 98 01036 1000 * CSST, TAD P 99 01037 3373 DCA CSP 100 01040 5305 JMP CSF1 101 01041 1362 SCHINV, TAD CSNCL /^N, INVERT SKIP SENSE 102 01042 3253 DCA CSWT 103 104 01043 1400 * CSL, TAD I SXR /GET A CHAR FROM THE SEARCH BUFFER 105 01044 7550 SPA SNA 106 01045 5270 JMP SCCOMD /NEGATIVE CHARS AND 0 ARE SPECIAL 107 01046 7041 CIA 108 01047 6211 CDF 10 109 01050 1400 * TAD I P 110 01051 0000 * AND Z377 111 01052 6201 CSWT1, CDF 0 112 01053 7640 CSWT, SZA CLA 113 01054 5304 JMP CSF /FAIL TO MATCH ON THIS CHARACTER 114 /ABOVE LINE BECOMES JMP CSZ IF :: 115 01055 2000 * CSWT2, ISZ P 116 01056 1263 CSG, TAD CSZCL 117 01057 3253 DCA CSWT /RESTORE SEARCH TEST 118 .IF NE BACKW < 119 TAD PINCR 120 SMA CLA 121 > 122 01060 1000 * TAD ZZ 123 01061 7040 CMA 124 01062 1000 * TAD P 125 01063 7640 CSZCL, SZA CLA /CHECK FOR END OF BUFFER 126 01064 5243 JMP CSL /NO 127 EOB, 128 .IF NE PPMODE < 129 TAD PSAVE 130 > 131 01065 3000 * DCA P 132 01066 3000 * CSZ, DCA NMT 133 01067 5600 JMP I SEARCH /5 TECO V50 SEARCH ROUTINES MACREL-V2C FRI 07-DEC-90 PAGE 4 FILE # 1 134 135 .IF NE PPMODE < 136 PSAVE, 0 /SAVE LOCATION OF POINTER BEFORE SEARCH 137 > /5 TECO V50 SEARCH ROUTINES MACREL-V2C FRI 07-DEC-90 PAGE 5 FILE # 1 138 139 /SEARCH SUBROUTINE - CONTINUED 140 141 01070 3271 SCCOMD, DCA 1$ /SPECIAL CHARACTERS ARE JUMPS OR 0 142 .IF NE XTNDED < 143 TAD 1$ 144 RAL 145 SPA CLA 146 JMP I 1$ /BRANCH TO ADDRESS IF .GT. 6000 147 > 148 01071 7402 1$: HLT /0 FALLS THROUGH INTO TERMINATION CODE 149 150 01072 2374 ISZ CSN /GET NTH OCCURRENCE 151 01073 5304 JMP CSF /MORE TO GO 152 01074 7040 CMA 153 01075 5266 JMP CSZ /GOT IT 154 01076 6211 SCHSEP, CDF 10 /^S, LOOK FOR SEPARATOR 155 01077 1400 * TAD I P 156 01100 6201 CDF 0 157 01101 0000 * AND Z377 158 01102 0000 * TSTSEP /SHARED SORTING ROUTINE 159 01103 5255 JMP CSWT2 /CHECK RESULTS OR FALL INTO CSF 160 .IF EQ BACKW < 161 01104 2373 CSF, ISZ CSP /INDEX P 162 > 163 .IF NE BACKW < 164 CSF, TAD PINCR 165 TAD CSP 166 DCA CSP 167 > 168 01105 1377 CSF1, TAD (STABLE-1 169 01106 3000 * DCA SXR /INITIALIZE AUTO - INDEX 170 01107 1373 TAD CSP 171 01110 3000 * DCA P 172 01111 5256 JMP CSG 173 174 01112 0000 * SCHCTQ, SCAN /GET THE NEXT CHARACTER 175 01113 5221 JMP STORE 176 177 .IF NE BACKW < 178 PINCR, 1 /-1 IF SEARCH GOES BACKWARDS 179 > /5 TECO V50 SEARCH ROUTINES MACREL-V2C FRI 07-DEC-90 PAGE 6 FILE # 1 180 181 .SBTTL Cmd FN 182 183 .SBTTL Cmd F_ 184 185 01114 7201 CHR.FB, CLA IAC 186 01115 3372 CHR.FN, DCA CNXT 187 01116 7240 STA 188 01117 5356 JMP CHRN1 /5 TECO V50 SEARCH ROUTINES MACREL-V2C FRI 07-DEC-90 PAGE 7 Cmd F_ FILE # 1 189 190 .SBTTL Cmd FS 191 192 01120 7240 CHR.FS, STA /CHANGE S TO FS 193 194 .SBTTL Cmd S 195 196 01121 4200 CHR.S, JMS SEARCH /S COMMAND - DO A SEARCH 197 01122 2375 CHKREP, ISZ REPFLG /WAS THERE A REPLACE SPECIFIED? 198 01123 5340 JMP 2$ /NO - CHECK FOR COLON 199 01124 0000 * QSKP /COUNT UP STRING 2 200 01125 1000 * TAD NMT 201 01126 7700 SMA CLA 202 01127 5340 JMP 2$ /FAILED, SET VALUE & EXIT 203 01130 1373 TAD CSP /FIGURE OUT OFFSET TO FAKE OUT "I" ROUTINE 204 01131 7041 CIA /SO THAT WE HAVE THE RIGHT INSERTION COUNT 205 01132 1000 * TAD P /BUT THE SIZE OF THE HOLE WE NEED 206 01133 3000 * DCA DVT1 /IS DECREASED BY THE LENGTH OF THE SEARCH STRING. 207 01134 1373 TAD CSP /RESET 208 01135 3000 * DCA P /TEXT POINTER 209 01136 0000 * PUSHJ /INSERT 210 01137 0000 * CIL2 /STRING 2 211 01140 3375 2$: DCA REPFLG /CLEAR REPLACE FLAG 212 01141 1000 * TAD NMT 213 01142 0000 * PUSHJ /FORM NUMBER FROM "NMT" 214 01143 0000 * NNEW13 /(APPLYING OPERATOR, IF NECESSARY) 215 01144 2000 * ISZ CLNF /WAS THERE A COLON ON THIS SEARCH? 216 01145 7410 SKP /NO 217 01146 5400 * JMP I ZIREST /YES - GO AWAY REGARDLESS OF RESULTS 218 01147 3000 * DCA CLNF /RESET COLON FLAG TO 0 219 01150 2000 * ISZ N /DID WE SUCCEED? 220 01151 5776 JMP I (CFSI /NO - SIMULATE A SEMICOLON 221 01152 3000 * DCA NFLG /YES - HOWEVER, NO COLON MEANS NO RESULT 222 01153 5400 * JMP I ZIREST 223 224 /CFSI SHOULD REALLY BE IN THIS MODULE /5 TECO V50 SEARCH ROUTINES MACREL-V2C FRI 07-DEC-90 PAGE 8 Cmd S FILE # 1 225 226 .SBTTL Cmd _ 227 228 01154 7201 CHR.BA, CLA IAC /_ COMMAND 229 230 .SBTTL Cmd N 231 232 01155 3372 CHR.N, DCA CNXT /N COMMAND - SET OUTPUT FLAG 233 01156 4200 CHRN1, JMS SEARCH /DO A SEARCH 234 01157 1000 * TAD REND 235 01160 7041 CIA 236 01161 1000 * TAD ZZ 237 01162 7650 CSNCL, SNA CLA /HAVE WE REACHED END-OF-FILE? 238 01163 5322 JMP CHKREP /YES - STOP AND ASSIGN VALUE 239 01164 1000 * TAD NMT 240 01165 7640 SZA CLA /HAVE WE SUCCEEDED? 241 01166 5322 JMP CHKREP /YES - STOP AND ASSIGN VALUE 242 01167 1372 TAD CNXT 243 01170 4400 * JMS I ZNXTBUF /GET NEXT BUFFER 244 01171 5236 JMP CSST /KEEP SEARCHING - RETURN TO CHR.N+2 245 01172 0000 CNXT, 0 /OUTPUT FLAG 246 01173 0000 CSP, 0 /TEMP P 247 01174 0000 CSN, 0 248 01175 0000 REPFLG, 0 /REPLACE FLAG (-1 MEANS REPLACE) ------ 01176 0000 * 01177 7777 * 249 1200 PAGE /5 TECO V50 SEARCH ROUTINES MACREL-V2C FRI 07-DEC-90 PAGE 9 Cmd N FILE # 1 250 251 0200 .ASECT TECMAT 252 253 0001 FIELD 1 254 255 3200 *3200 256 257 3200 RELOC 7200 258 259 .IF EQ 1 < 260 261 COVAL, 0 262 TAD NMT 263 PUSHJ 264 NNEW13 265 ISZ CLNF /DID COMMAND HAVE : ? 266 SKP /NO 267 JMP I COVAL /YES 268 DCA CLNF 269 DCA NFLG /NO : MEANS NO VALUE 270 ISZ N 271 ISZ COVAL /TAKE RETURN 2 IF N .NE. -1 272 JMP I COVAL 273 274 > 275 276 /FAILS TO ALLOW ; TO WORK 277 278 /AT END OF CHKREP, AFTER 2$: 279 / JMS COVAL 280 / JMP I ZIREST 281 / JMP I (CFSI /5 TECO V50 SEARCH ROUTINES MACREL-V2C FRI 07-DEC-90 PAGE 10 Cmd N FILE # 1 282 283 .IF NE XTNDED < 284 285 /STRING BUILD CHARACTERS 286 287 .SBTTL Str ^Q 288 .SBTTL Str ^R 289 290 SCHCTR, JMS GETQC 291 JMP I (STORE /STORE NEXT CHARACTER LITERALLY 292 293 .SBTTL Str ^ 294 295 UPARR, JMS GETQC 296 UPPERC /CONVERT TO UPPER CASE 297 AND Z77 /CONVERT TO CONTROL CHAR 298 JMP I (SORTIT /AND PRETEND WE SAW THIS CONTROL CHARACTER 299 300 .SBTTL Str ^V 301 302 SCHCTV, JMS GETQC 303 UPPERC 304 TAD Z40 305 JMP I (STORE /STORE LOWER CASE VERSION OF NEXT CHARACTER 306 307 .SBTTL Str ^W 308 309 SCHCTW, JMS GETQC 310 UPPERC 311 JMP I (STORE /STORE UPPER CASE VERSION OF NEXT CHARACTER 312 313 /CAN REMOVE ^R FROM REGULAR TABLE /5 TECO V50 SEARCH ROUTINES MACREL-V2C FRI 07-DEC-90 PAGE 11 Cmd N FILE # 1 314 315 / MATCH CONTROL CONSTRUCTS 316 317 .SBTTL Str ^N 318 319 CTRLEN, TAD (SNA CLA 320 DCA I (CSWT 321 JMP I (CSL 322 /OR JMP I (SCHINV 323 324 .SBTTL Str ^E 325 326 SCHCTE, JMS GETQC 327 UPPERC 328 .SORT CTELST,CTETAB 329 SMA 330 .ERROR 99 /39 ILLEGAL ^E ARGUMENT 331 JMP I (STORE 332 333 CTELST, "A 334 "B 335 "C 336 "D 337 "L 338 / "M 339 "N 340 "R 341 / "S 342 "V 343 "W 344 "X 345 346 LFTAB, /3 NEGATIVE NUMBERS MUST FOLLOW 347 CTETAB, CTRLEA 348 CTRLEB /^S 349 CTRLEC 350 CTRLED 351 CTRLEL 352 / CTRLEM 353 CTRLEN /^N 354 CTRLER 355 / CTRLES 356 CTRLEV 357 CTRLEW 358 CTRLEX /^X 359 360 GETQC, 0 361 SCAN /GET NEXT CHARACTER FROM SEARCH STRING 362 .SORT QUOTE,(-26.)/SIMULATE QUOTST WHICH CAN'T BE CALLED FROM ABOVE 4000 363 SPA 364 ATEND, .ERROR 84 /CAN'T QUOTE THE DELIMITER 365 JMP I GETQC /5 TECO V50 SEARCH ROUTINES MACREL-V2C FRI 07-DEC-90 PAGE 12 Cmd N FILE # 1 366 367 .SBTTL Str ^X 368 .SBTTL Str ^EX 369 370 CTRLEX, JMP I (CSWT1 371 372 .SBTTL Str ^EA 373 374 CTRLEA, JMS CTRLE 375 TSTA 376 377 .SBTTL Str ^EB 378 379 CTRLEB, JMS CTRLE 380 TSTDEL 381 382 .SBTTL Str ^EC 383 .SBTTL Str ^ER 384 385 CTRLER, 386 CTRLEC, JMS CTRLE 387 SCHSRT 388 389 .SBTTL Str ^ED 390 391 CTRLED, JMS CTRLE 392 TSTD 393 394 .SBTTL Str ^EL 395 396 CTRLEL, JMS CTRLE 397 TSTLIN 398 399 / .SBTTL Str ^ES 400 / .SBTTL Str ^EM 401 402 /CTRLES, 403 /CTRLEM, JMP ERR99 /SHOULD BE JMP ERR39 404 405 .SBTTL Str ^EV 406 407 CTRLEV, JMS CTRLE 408 TSTLC 409 410 .SBTTL Str ^EW 411 412 CTRLEW, JMS CTRLE 413 TSTUC /5 TECO V50 SEARCH ROUTINES MACREL-V2C FRI 07-DEC-90 PAGE 13 Cmd N FILE # 1 414 415 TSTSUB, 416 CTRLE, 0 417 TAD I CTRLE 418 DCA TSTSUB 419 DCA MATC 420 CDF 10 421 TAD I P 422 CDF 0 423 AND Z377 424 JMS I TSTSUB /IS CHAR A MATCH? 425 ISZ MATC /NO 426 CLA /YES 427 TAD MATC 428 JMP I (CSWT 429 430 MATC, 0 /5 TECO V50 SEARCH ROUTINES MACREL-V2C FRI 07-DEC-90 PAGE 14 Cmd N FILE # 1 431 432 TSTLIN, 0 433 .SORT CAFF,LFTAB 434 SPA CLA 435 ISZ TSTLIN 436 JMP I TSTLIN 437 438 TSTUC, 0 439 TAD TSTUC 440 DCA TSTLC 441 TAD Z40 442 SKP 443 TSTLC, 0 444 TAD (-141 445 CLL 446 TAD (-26. 447 SNL CLA 448 ISZ TSTLC 449 JMP I TSTLC 450 451 TSTDEL, 0 452 TSTSEP 453 ISZ TSTDEL 454 JMP I TSTDEL 455 PAGE 456 > 457 3200 RELOC /5 TECO V50 SEARCH ROUTINES MACREL-V2C FRI 07-DEC-90 PAGE 15 SYMBOL TABLE ANCHOR 0000 SCHINV G 1041 BACKW 0000 SCHLST X **** CAFF Z 0*** SCHQUO 1031 CFSI X **** SCHSEP G 1076 CHKREP 1122 SCHSRT X **** CHRN1 1156 SCHTAB X **** CHR.BA G 1154 SCHUPA G 1025 CHR.FB G 1114 SEARCH G 1000 CHR.FN G 1115 SORT X **** CHR.FS G 1120 SORTIT 1016 CHR.N G 1155 SRHLEN G 1030 CHR.S G 1121 SRHX 0001 XSECT CIL2 X **** STABLE X **** CLNF Z 0*** STORE 1021 CNXT 1172 SXR 0000+ SRHX CSF 1104 TECMAT 3200 ASECT CSF1 1105 TECSRH 1200 ASECT CSG 1056 TSTA X **** CSL 1043 TSTD X **** CSN 1174 TSTSEP X **** CSNCL 1162 UPPERC X **** CSP 1173 XTNDED 0000 CSST 1036 ZIREST Z 0*** CSWT 1053 ZNXTBU Z 0*** CSWT1 G 1052 ZZ Z 0*** CSWT2 1055 Z377 Z 0*** CSZ 1066 Z40 Z 0*** CSZCL 1063 Z77 Z 0*** DVT1 Z 0*** .ERROR M 0000 EOB 1065 .SORT M 0000 ERR X **** ERR06 G 1024 ERR29 G 1004 FLD: 0 0200 ASECT GET 1014 GETN X **** N Z 0*** NFLG Z 0*** NMT Z 0*** NNEW13 X **** OVFLPR 0000 P Z 0*** PPMODE 0000 PUSHJ X **** QCHK X **** QSKP X **** QUOTE X **** QUOTST X **** REND Z 0*** REPFLG 1175 SCAN X **** SCANUP X **** SCCOMD 1070 SCHCTQ G 1112