| 1 | /10 OS/8 TECO VERSION 5 |
| 2 | / |
| 3 | / |
| 4 | / |
| 5 | / |
| 6 | / |
| 7 | / |
| 8 | / |
| 9 | / |
| 10 | / |
| 11 | /COPYRIGHT (C) 1974,1975,1976,1977 BY DIGITAL EQUIPMENT CORPORATION |
| 12 | / |
| 13 | / |
| 14 | / |
| 15 | / |
| 16 | / |
| 17 | / |
| 18 | / |
| 19 | / |
| 20 | / |
| 21 | / |
| 22 | /THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT NOTICE |
| 23 | /AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT |
| 24 | /CORPORATION. DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY |
| 25 | /FOR ANY ERRORS THAT MAY APPEAR IN THIS DOCUMENT. |
| 26 | / |
| 27 | /THE SOFTWARE DESCRIBED IN THIS DOCUMENT IS FURNISHED TO THE PURCHASER |
| 28 | /UNDER A LICENSE FOR USE ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED |
| 29 | /(WITH INCLUSION OF DIGITAL'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH |
| 30 | /SYSTEM, EXCEPT AS MAY OTHERWISE BE PROVIDED IN WRITING BY DIGITAL. |
| 31 | / |
| 32 | /DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY FOR THE USE |
| 33 | /OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY |
| 34 | /DIGITAL. |
| 35 | / |
| 36 | / |
| 37 | / |
| 38 | / |
| 39 | / |
| 40 | / |
| 41 | / |
| 42 | / |
| 43 | / |
| 44 | / |
| 45 | \f/BROUGHT TO YOU BY: RUSS HAMM, O.M.S.I., AND RICHARD LARY (IN THAT ORDER) |
| 46 | /WITH ASSISTANCE FROM MARIO DENOBILI OF THE P?S |
| 47 | /PATCHES INCORPORATED BY S.R. ON 5-AUGUST-75 FOR OS/8 V3C: |
| 48 | |
| 49 | /1. UPDATED VERSION # TO V4 |
| 50 | /2. INCORPORATED PATCHES #S 1 & 2 (V302 AND V303) |
| 51 | / PREVENTS \ FROM GOING OUTSIDE OF BUFFER |
| 52 | / RESETS CFLAG TO PREVENT ARGUMENT ERROR EVERY 4096 TIMES IN LOOP |
| 53 | |
| 54 | / CHANGES FOR V5: -S.R.- |
| 55 | |
| 56 | /3. ADDED OVERLAYS |
| 57 | /4. EXPANDED ERROR MESSAGES |
| 58 | /5. DOCUMENTED CORE LAYOUT |
| 59 | /6. ADDED "T, "S, "F, "U, AND "R |
| 60 | /7. FIXED EG BUG |
| 61 | /8. MADE DEFAULT ITERATION COUNT TRULY INFINITE |
| 62 | /9. ADDED N^T |
| 63 | /10. ADDED := |
| 64 | /11. ADDED SOME SAFETY ERROR MESSAGES |
| 65 | / (I) ERROR IF Y HAS A NUMERIC ARGUMENT |
| 66 | / (II) ERROR IF TWO ARGUMENTS ARE SPECIFIED TO D |
| 67 | /12. REMOVE ^R (OBSOLETE COMMAND) |
| 68 | /13. REMOVE "A AND "B (AFTER AND BEFORE) |
| 69 | /14. ADDED 13-BIT ARITHMETIC |
| 70 | /15. MADE = AND \ GIVE SIGNED RESULTS (DECIMAL ONLY) |
| 71 | /16. ALLOW 13-BIT NUMERIC Q-REGISTERS. |
| 72 | / THIS IS ACCOMPLISHED BY RESERVING THE HIGH ORDER BIT |
| 73 | / OF THE LENGTH WORD. STRING PORTION OF Q-REGISTER |
| 74 | / NOW RESTRICTED TO 2047 CHARACTERS. IT GETS CHECKED BY |
| 75 | / ^U AND X. BELL RINGS WITHIN 12 CHARACTERS OF FILLING |
| 76 | / UP COMMAND STRING Q-REGISTER. |
| 77 | /17. STORED LINK AS LOW ORDER BIT IN NLINK IN CASE WE EVER |
| 78 | / WANT TO GO TO 24-BIT ARITHMETIC. |
| 79 | /18. ERROR ON A,B,C |
| 80 | /19. P DOESN'T CREATE FORM FEEDS |
| 81 | /20. ALLOW @ MODIFIER WITH ER, EW, EB. |
| 82 | /21. EK |
| 83 | /22. ^S FREEZE |
| 84 | /23. EGTEXT$ |
| 85 | /24. GOT RID OF F_ |
| 86 | /25. F IS ILLEGAL IF NOT FOLLOWED BY S OR N |
| 87 | /26. W IS NOW AN ILLEGAL COMMAND (EXCEPT ON -12) |
| 88 | /27. ADDED :G |
| 89 | /28. Y AND _ GIVE ERRORS IF DATA IS GOING TO BE LOST |
| 90 | / (IF OUTPUT FILE IS OPEN AND BUFFER IS NOT EMPTY) |
| 91 | /29. CASE FLAGGING IMPLEMENTED |
| 92 | /30. "< AND "> ARE SYNONYMOUS WITH "L AND "G |
| 93 | /31. ^G<SPACE> AND ^G* |
| 94 | /32. SCOPE RUBOUTS |
| 95 | /33. == NOW PRINTS NUMBER IN OCTAL |
| 96 | /34. EUFLAG AND ETFLAG IMPLEMENTED |
| 97 | /35. CASE FLAGGING WORKS |
| 98 | /36. IMAGE MODE (ET BIT 11) APPLIES TO T, ^A, AND N^T |
| 99 | / IT DOES NOT APPLY TO :G |
| 100 | /37. ERROR IF TRY TO DO AN EB TO A .BK FILE (IT DOES AN ER) |
| 101 | /38. VT AND FF ARE NOW LINE TERMINATORS |
| 102 | /39. BELL ECHOES AS ^G AS WELL AS RINGING BELL |
| 103 | /40. ^K IS AN ERROR |
| 104 | /41. REMOVED ^Z COMMAND |
| 105 | /42. CHANGED ^V TO EO |
| 106 | /43. CHANGED ^W TO W |
| 107 | /44. MEMORY RESIDENT OVERLAYS IF MORE THAN 12K |
| 108 | /45. LONG FORM ERROR MESSAGES ON 1EH |
| 109 | /46. ET FLAG 8'S BIT AFFECTS ECHOING OF ^T |
| 110 | /47. NEGATIVE OR 0 ITERATION SKIPS |
| 111 | /48. CTRL/N |
| 112 | /49. CTRL/C TRAP |
| 113 | |
| 114 | /KNOWN BUGS |
| 115 | /1. LARGE T OR X AND ONLY 1 BLOCK LEFT IN OUT DEV |
| 116 | /2. ^S DOESN'T KEEP SCREEN ON |
| 117 | /3. FIX BATCH INTERRACTION |
| 118 | /4. MAKE VT AND FF SIMULATION INDEPENDENT OF TAB |
| 119 | |
| 120 | DECIMAL |
| 121 | VERSN= 5 / VERSION NUMBER - CHANGE WITH EVERY EDIT |
| 122 | OCTAL / LAST EDIT 12-FEB-76 |
| 123 | \fIN= 6200 /INPUT BUFFER AT 06200 |
| 124 | OUT= 5200 /OUTPUT BUFFER AT 05200 |
| 125 | ZMAX= 7640 /MAX 4000[10] CHARACTERS IN TEXT BUFFER |
| 126 | QMAX= 3720 /MAX 2000[10] Q-REGISTER CHARS IN 8K |
| 127 | Q12MAX= 5600 /MAX 2944[10] Q-REGISTER CHARS IN 12K |
| 128 | CHNSTR= 46 /38 CHARACTER STRING PASSED ON CHAIN |
| 129 | |
| 130 | TWO= CLA CLL CML RTL |
| 131 | MTWO= CLA CLL CMA RAL |
| 132 | MTHREE= CLA CLL CMA RTL |
| 133 | AC3777= CLL STA RAR |
| 134 | SCPBIT= 7726 |
| 135 | \f/THINGS WE WOULD LIKE TO ADD: |
| 136 | |
| 137 | /:ER |
| 138 | /:EB |
| 139 | /NV |
| 140 | /@^A |
| 141 | /FR |
| 142 | /-S |
| 143 | /::S |
| 144 | /^EQ |
| 145 | /M,NS |
| 146 | /[Q |
| 147 | /]Q |
| 148 | /NON-EXACT SEARCH MODE |
| 149 | /*N |
| 150 | /ERFILESPEC/S FOR SUPERTECO |
| 151 | /^N |
| 152 | /CHECK FOR $ ON NI$ |
| 153 | /CHECK INTO SEARCHES IN ITERATIONS |
| 154 | /ERR MSG ON EA, EP |
| 155 | /NV=(1-N)TNT |
| 156 | /^C TRAP |
| 157 | /:X |
| 158 | |
| 159 | /THINGS FOR -11: |
| 160 | /^R |
| 161 | /3EH |
| 162 | /M,ND |
| 163 | /ET BIT 15 SHOULD BE LOWER |
| 164 | /ECHO OF NULL |
| 165 | \f/***************************************** |
| 166 | / TECO ERROR MESSAGES: |
| 167 | /***************************************** |
| 168 | |
| 169 | / TECO ERROR MESSAGES CONSIST OF A QUESTION MARK AND THREE LETTERS |
| 170 | / TYPING "?" IMMEDIATELY AFTER AN ERROR MESSAGE PRINTOUT PRINTS |
| 171 | / THE CURRENT COMMAND LINE UP TO THE ERROR CHARACTER. |
| 172 | |
| 173 | /1 ?ILL ILLEGAL COMMAND |
| 174 | /2 ?UTC INCOMPLETE COMMAND (PDL NOT EMPTY AT END OF COMMAND STRING) |
| 175 | /3 ?IQN NON-ALPHANUMERIC Q-REGISTER NAME |
| 176 | /4 ?PDO PUSHDOWN OVERFLOW (MACROS & ITERATIONS NESTED TOO DEEPLY) |
| 177 | /5 ?MEM TEXT BUFFER OVERFLOW |
| 178 | /6 ?STL SEARCH STRING TOO LARGE ( >31 CHARS) |
| 179 | /7 ?ARG NUMBER MISSING BEFORE COMMA |
| 180 | / OR TWO ARGUMENTS SPECIFIED TO D |
| 181 | / OR 3 NUMERIC ARGUMENTS |
| 182 | /8 ?IFN ILLEGAL FILE NAME IN "ER","EW" OR "EB" COMMAND |
| 183 | /9 ?SNI SEMICOLON ON COMMAND LEVEL |
| 184 | /10 ?BNI ITERATION CLOSE (>) WITHOUT MATCHING OPEN (<) |
| 185 | /11 ?POP ATTEMPT TO MOVE POINTER OUTSIDE OF TEXT BUFFER |
| 186 | /12 ?QMO Q-REGISTER STORAGE OVERFLOW |
| 187 | /13 ?UTM INCOMPLETE COMMAND (PDL NOT EMPTY AT END OF MACRO) |
| 188 | /14 ?OUT OUTPUT FILE TOO BIG OR OUTPUT PARITY ERROR |
| 189 | /15 ?INP PARITY ERROR ON INPUT FILE |
| 190 | /16 ?FER FILE ERROR: CAN MEAN EITHER |
| 191 | / A) INPUT FILE NOT FOUND ON "ER" COMMAND |
| 192 | / B) CANNOT ENTER OUTPUT FILE ON "EW" OR "EB" COMMAND |
| 193 | / C) DEVICE SPECIFIED FOR FILE DOES NOT EXIST |
| 194 | / D) "EB" COMMAND GIVEN ON NON-FILE-STRUCTURED DEVICE |
| 195 | /17 ?FUL OUTPUT COMMAND WOULD HAVE OVERFLOWED OUTPUT FILE |
| 196 | / [PANIC MODE] |
| 197 | /18 ?NAY NUMERIC ARGUMENT SPECIFIED WITH Y COMMAND |
| 198 | /19 ?IEC E FOLLOWED BY AN ILLEGAL CHARACTER |
| 199 | /20 ?IQC " FOLLOWED BY AN ILLEGAL CHARACTER |
| 200 | /21 ?NAE NO NUMERIC ARGUMENT TO THE LEFT OF AN = |
| 201 | /22 ?NAU NO NUMERIC ARGUMENT TO THE LEFT OF A U |
| 202 | /23 ?NAQ NO NUMERIC ARGUMENT TO THE LEFT OF A " |
| 203 | /24 ?SRH FAILING SEARCH AT COMMAND LEVEL |
| 204 | /25 ?NAP NEGATIVE OR ZERO ARGUMENT TO P |
| 205 | /26 ?NAC NEGATIVE ARGUMENT TO COMMA |
| 206 | /27 ?NYI CASE SUPPORT NOT IMPL (USE W FOR WATCH) |
| 207 | /28 ? |
| 208 | /29 ?NAS NEGATIVE OR ZERO ARGUMENT WITH A SEARCH |
| 209 | /30 ?WLO WRITE LOCKED SYSTEM DEVICE |
| 210 | /31 ?IFC F FOLLOWED BY AN ILLEGAL CHARACTER |
| 211 | /32 ?YCA Y (OR _) COMMAND ABORTED BECAUSE DATA WOULD BE LOST |
| 212 | /33 ?CCL CCL NOT FOUND OR EG ARGUMENT TOO LONG |
| 213 | /34 ?XAB EXECUTION ABORTED BY ^C |
| 214 | /35 ?NYI CASE SUPPORT NOT IMPL (USE EO FOR VERSION) |
| 215 | /36 ?NFO ATTEMPT TO OUTPUT WITHOUT OPENING AN OUTPUT FILE |
| 216 | \f/ CORE LAYOUT AND OVERLAY STRUCTURE |
| 217 | |
| 218 | / BUFFER STRUCTURE: |
| 219 | |
| 220 | /BUFFER 8K VERSION 12K VERSION |
| 221 | |
| 222 | /INPUT BUFFER 06200-07200 25600-27600 |
| 223 | /OUTPUT BUFFER 05200-06200 05200-07200 |
| 224 | /Q-REG STORAGE OVER TEXT BFR 20000-25600 |
| 225 | |
| 226 | / HANDLER LOCATIONS: |
| 227 | |
| 228 | /HANDLER PDP-8 VERSION PDP-12 VERSION |
| 229 | |
| 230 | /INPUT HANDLER 7200-7600 7200-7400 |
| 231 | /OUTPUT HANDLER 4000-4400 7400-7600 |
| 232 | /SIZE OF HNDLR 2-PAGES 1-PAGE |
| 233 | /DISPLAY CODE NONE 4000-4400 |
| 234 | |
| 235 | / OVERLAY STRUCTURE |
| 236 | |
| 237 | /ALL OVERLAYS ARE TWO PAGES LONG AND RESIDE IN CORE |
| 238 | /AT LOCATIONS 3200-3600 WHEN RUNNING. THE I-OVERLAY |
| 239 | /INITIALLY RESIDES IN THESE LOCATIONS. |
| 240 | |
| 241 | /OVERLAY BLOCK INITIAL LOCATION CONTENTS |
| 242 | |
| 243 | / I-OVERLAY 40 3200-3600 ER,EW,EB |
| 244 | / Q-OVERLAY 41 5600-6200 ", O, SKPSET |
| 245 | / E-OVERLAY 42 6200-6600 ERROR MESSAGE PROCESSOR |
| 246 | / X-OVERLAY 43 6600-7200 EX,EC,EG,EK,EF (EA,EI,EN,EP) |
| 247 | / F-OVERLAY 44 7200-7600 ED,EH,EO,ES,ET,EU (EV) |
| 248 | |
| 249 | IOVRLC=40 |
| 250 | QOVRLC=41 |
| 251 | EOVRLC=42 |
| 252 | XOVRLC=43 |
| 253 | FOVRLC=44 |
| 254 | |
| 255 | IOVRLY=3200 |
| 256 | QOVRLY=3201 |
| 257 | EOVRLY=3202 |
| 258 | XOVRLY=3203 |
| 259 | FOVRLY=3204 |
| 260 | |
| 261 | /EACH OVERLAY IS ASSIGNED A LOCATION AT THE BEGINNING OF PAGE 3200. |
| 262 | /IF THIS LOCATION IS 0 (AS IT ALWAYS IS), THEN THAT OVERLAY IS NOT |
| 263 | /IN CORE. IF IT IS NOT 0, THEN THIS LOCATION CONTAINS THE |
| 264 | /BLOCK NUMBER TO READ IN THAT OVERLAY. |
| 265 | /THUS EACH OVERLAY HAS POINTERS TO ALL THE OTHER OVERLAYS. |
| 266 | \f MEMLOC=2000 |
| 267 | |
| 268 | /IN 16K MACHINES, FIELD 3 IS USED TO HOLD OVERLAYS |
| 269 | |
| 270 | /NAME BLOCK MEMORY |
| 271 | |
| 272 | /I 40 2000 |
| 273 | /Q 41 2400 |
| 274 | /E 42 3000 |
| 275 | /X 43 3400 |
| 276 | /F 44 4000 |
| 277 | |
| 278 | |
| 279 | /INITIAL MEMORY LAYOUT |
| 280 | |
| 281 | /0000-3177 TECO |
| 282 | /3200-3577 OVERLAY AREA (INITIALLY I-OVERLAY) |
| 283 | /3600-3777 TECO |
| 284 | /4000-4377 PDP-12 DISPLAY ROUTINE |
| 285 | /4400-5177 TECO |
| 286 | /5200-5577 INITIALIZATION CODE |
| 287 | /5600-6177 Q-OVERLAY CODE |
| 288 | /6200-6577 E-OVERLAY CODE |
| 289 | /6600-7177 X-OVERLAY CODE |
| 290 | /7200-7577 F-OVERLAY CODE |
| 291 | |
| 292 | /FIELD 1: |
| 293 | |
| 294 | /4400-7377 EXTENDED ERROR MESSAGES |
| 295 | / MOVES TO FIELD 3 |
| 296 | \f/** TECO KLUDGES ** /7/27/73 |
| 297 | /ONE OF THE REASONS WHY TECO GETS SO MANY OPERATIONS |
| 298 | /INTO SUCH A SMALL AMOUNT OF CORE IS THAT IT |
| 299 | /IS FULL OF *K*L*U*D*G*E*S*. THESE SHOULD BE KEPT IN MIND WHEN |
| 300 | /MODIFYING THE PROGRAM. SOME OF THEM ARE: |
| 301 | |
| 302 | / THE "SORT" ROUTINE COMPARE LIST MUST END WITH A NEGATIVE NUMBER. |
| 303 | / USUALLY A FORTITUOUS JMS OR OPR INSTRUCTION IS USED |
| 304 | |
| 305 | / THE "SORT" JUMP LIST ENTRIES ARE TREATED AS JUMP ADDRESSES |
| 306 | / IF THEY ARE POSITIVE AND SUBSTITUTE VALUES IF THEY ARE |
| 307 | / NEGATIVE - THEREFORE ALL LOCS JUMPED TO MUST BE BELOW 4000 |
| 308 | / ANOTHER CONSEQUENCE IS THAT "QUOTST" CANNOT BE CALLED FROM |
| 309 | / ABOVE 4000 |
| 310 | |
| 311 | / THERE ARE OTHER LOCALIZED KLUDGES - THEY CAN GENERALLY |
| 312 | / BE IDENTIFIED BY THE APPEARANCE OF A DOUBLE-ASTERISK IN THE |
| 313 | / COMMENTS FIELD ALONG WITH A TERSE DESCRIPTIVE COMMENT |
| 314 | |
| 315 | |
| 316 | |
| 317 | / OS/8 EQUIVALENCES: |
| 318 | |
| 319 | JSBITS= 7746 /JOB STATUS BITS - IN FIELD 0 |
| 320 | OSHNDT= 7647 /OS/8 DEVICE HANDLER TABLE - IN FIELD 1 |
| 321 | OSDCBT= 7760 /OS/8 DEVICE CONTROL TABLE - IN FIELD 1 |
| 322 | CCLADR= 400 /CCL OVERLAY LOAD ADDRESS |
| 323 | CCLOVL= 67 /BLOCK OF CCL OVERLAY |
| 324 | CCLOST= 602 /CCL OVERLAY SECONDARY START ADDRESS |
| 325 | \f *0 |
| 326 | NAME, ZBLOCK 4 /NAME BUILD BUFFER - MUST BE AT LOCATION 0 |
| 327 | /LOCS 4,5&6 ARE RESERVED SO WE CAN USE OS/8 ODT |
| 328 | |
| 329 | *10 /CONSTANTS & NON-INDIRECT TEMPS STORED IN AUTO-XRS! |
| 330 | QUOTE, 33 /QUOTE CHAR - SINGLE WORD SORT LIST |
| 331 | ERR01, |
| 332 | SERR, ERR /END OF LIST |
| 333 | INRSIZ, 2 /4 IF 12K MACHINE |
| 334 | NUMLNS, 3 /NUMBER OF LINES (+ AND -) TO DISPLAY ON VR12 SCOPE |
| 335 | DX, 7577 /DISPLAY XR |
| 336 | SXR, QPUT12-1/XR USED BY SEARCH PROCESSOR |
| 337 | INXR, ASR33-1 /XR USED TO UNPACK INPUT BUFFER |
| 338 | XR, ASR35-1 /WORK XR |
| 339 | |
| 340 | NMT, 0 /USED AS NUMBER TEMP AND SEARCH FAIL FLAG |
| 341 | CFLG, 0 /COMMA FLAG |
| 342 | CLNF, 0 /COLON FLAG |
| 343 | TFLG, 0 /TRACE FLAG |
| 344 | NFLG, 0 /NUMBER FLAG |
| 345 | QFLG, 0 /QUOTED STRING FLAG |
| 346 | M, 0 /NUMBER ARGS |
| 347 | N, 0 |
| 348 | NLINK, 0 /LINK AFTER ARITH OPERATIONS - TESTED BY "A AND "B |
| 349 | CHAR, 0 /CHARACTER BUFFER |
| 350 | ITRST, 0 /ITERATION FLAG |
| 351 | ITRCNT, 0 /ITERATION COUNT |
| 352 | MPDL, 0 /MACRO FLAG |
| 353 | SCHAR, 0 /LAST CHAR SORTED |
| 354 | FFFLAG, 0 /FORM FEED FLAG - 7777 IF FORM FEED SEEN ON THIS READ |
| 355 | REND, 0 /INPUT END-OF-FILE FLAG |
| 356 | SCANP, 0 /COMMAND LINE EXECUTION POINTER |
| 357 | OSCANP, 0 /BACKUP FOR SCANP |
| 358 | PDLP, PDLBEG /PUSH-DOWN-LIST POINTER |
| 359 | QCMND, 0 /COMM LINE OR MACRO POINTER |
| 360 | P, 0 /CURRENT PNTR TO TEXT BUFFER |
| 361 | ZZ, 0 /END OF TEXT BUFFER POINTER |
| 362 | Q, 0 /EXTRA BUFFER POINTERS |
| 363 | IFNZRO .-47 <_ERROR_> |
| 364 | R, 0 |
| 365 | QP, 0 /Q REGISTER POINTER |
| 366 | QZ, CHNSTR /END OF Q-REG POINTER |
| 367 | Z7, |
| 368 | CTLBEL, 7 |
| 369 | CACR, 15 /CR |
| 370 | CAHT, 11 /HT |
| 371 | CAAM, 33 /ALT MODE |
| 372 | CAFF, 14 /FF: END OF PAGE |
| 373 | 13 /VT |
| 374 | CALF, 12 /LF |
| 375 | ERR07, |
| 376 | NERR, ERR /END OF LIST |
| 377 | RADIX, DRAD /RADIX TABLE POINTER - DRAD OR ORAD |
| 378 | \fMQ, 0 |
| 379 | DVT1, 0 |
| 380 | ODEV, 0 /OUTPUT DEVICE NUMBER |
| 381 | OUTHND, 0 |
| 382 | INHND, 0 |
| 383 | EBFLG, 0 /EDIT BACKUP FLAG |
| 384 | QNMBR, 0 /LAST Q-REG REFERENCED |
| 385 | QBASE, 0 /BASE OF CURRENT COMMAND LINE |
| 386 | QLENGT, 0 /LENGTH OF CURRENT COMMAND LINE |
| 387 | QPTR, 0 /POINTER TO Q-REGISTER CONTROL BLOCK |
| 388 | ICRCNT, 0 /INPUT DOUBLEWORD COUNTER |
| 389 | OCRCNT, 0 /OUTPUT " |
| 390 | OPTR2, 0 /OUTPUT BUFFER POINTER |
| 391 | INRCNT, 0 /NUMBER OF INPUT RECORDS LEFT |
| 392 | OCMDLN, 0 /LENGTH OF OLD COMMAND LINE |
| 393 | CDT, 0 |
| 394 | KTYPE, TYPE /*ET SET TO PUTT IF NO CONVERSION |
| 395 | TEMPT, 0 /TEMP. GET RID OF WHEN FIND ROOM ON PAGE |
| 396 | MEMSIZ, 0 /HIGHEST MEMORY FIELD IN BITS 9-11 |
| 397 | LASTC, 0 /LAST CHARACTER GOTTEN OUT OF COMMAND LINE |
| 398 | |
| 399 | /NFLG: 0'ED BY COMMANDS WHICH EAT ARGUMENTS OR DON'T RETURN |
| 400 | / VALUES; SUCH AS C,R,J,L,^A,X,$,',>,'U,G,O AND |
| 401 | / NON-COLON MODIFIED SEARCHES |
| 402 | / SET TO -1 TO INDICATE THATWWE'VE SEEN A NUMBER |
| 403 | \f /TECO PSEUDO-OPERATIONS |
| 404 | |
| 405 | PUSH= JMS I .; PUSHXX |
| 406 | POP= JMS I .; POPXX /** MUST BE ONE MORE THAN "PUSH" |
| 407 | PUSHJ= JMS I .; PUSHJY |
| 408 | POPJ= JMP I .; POPJXX |
| 409 | PUSHL= JMS I .; PUSHLX |
| 410 | POPL= PUSHL /** POPL CALLED WITH POSITIVE AC |
| 411 | |
| 412 | ERR= JMS I .;ERROR,ERRXX |
| 413 | SORT= JMS I .; SORTB |
| 414 | RESORT= JMP I .; SORTA2 |
| 415 | SCAN= JMS I .; SGET |
| 416 | LISTEN= JMS I .; TYI |
| 417 | TYPE= JMS I .; TYPCTV |
| 418 | OUTPUT= JMS I .;OUTR, ERRXX /** MUST BE ONE MORE THAN "TYPE" |
| 419 | /PROBABLY NOT ANY MORE (19-JUN-77) |
| 420 | CRLF= JMS I .; TYCRLF |
| 421 | GETQ= JMS I .; GETQX |
| 422 | SKPSET= JMS I .; SETSKP |
| 423 | NCHK= ISZ NFLG /USED TO BE A SUBROUTINE CALL |
| 424 | CTCCHK= JMS I .; CHKCTC |
| 425 | BZCHK= JMS I .; CHKBZ |
| 426 | QCHK= JMS I .; CHKQF |
| 427 | QSKP= JMS I .; QOVER |
| 428 | QREF= JMS I .; QREFER |
| 429 | \fQSUM= JMS I .; QSUMR |
| 430 | QPUT= JMS I .; QPUTS |
| 431 | QUOTST= JMS I .; QTST |
| 432 | SETCMD= JMS I .; CMDSET |
| 433 | GETN= JMS I .; NGET |
| 434 | ADJQ= JMS I .; QADJ |
| 435 | MQLDVI= JMS I .; DVIMQL |
| 436 | UPPERC= JMS I .; CUPPER |
| 437 | SCANUP= JMS I .; SCUPPR |
| 438 | TSTSEP= JMS I .; SCHSRT |
| 439 | DISPLY= JMS I .; DSPLAY |
| 440 | NOTRCE= JMS I .; SAVTRA |
| 441 | ENTRCE= JMS I .; RESTRA |
| 442 | OVRLAY= JMS I .; OVERLY |
| 443 | GETNUM= JMS I .; NUMGET /GET 13 BIT NUMBER INTO L,AC |
| 444 | PUTT= JMS I .; TPUT |
| 445 | PAGE |
| 446 | \f/ENTER HERE TO USE AN ASR33 AS THE TELETYPE |
| 447 | |
| 448 | TECO, ISZ I SPUT /IF CALLED BY "R" OR "RUN" - CHANGED TO TLS |
| 449 | TECO1, JMP I COMPAR /IF CALLED VIA "CHAIN" - CHANGED TO "JMP T0A" |
| 450 | TBEL, JMS COMPAR /HERE ON ^G - 2 ^G'S KILL ENTIRE COMMAND |
| 451 | |
| 452 | T0, CRLF |
| 453 | T0A, TAD (PDLBEG |
| 454 | DCA PDLP /INITIALIZE PUSHDOWN LIST |
| 455 | T1, TAD PDLP |
| 456 | TAD (-PDLBEG |
| 457 | SZA CLA |
| 458 | ERR02, ERR /ERROR - PUSHDOWN LIST DID NOT BALANCE |
| 459 | TAD (45 |
| 460 | QREF /SET UP POINTERS TO COMMAND LINE |
| 461 | TAD I [QPNTR |
| 462 | DCA OCMDLN /SAVE OLD COMMAND LINE LENGTH |
| 463 | /** SAVE ONLY IF < 20? |
| 464 | ADJQ /REDUCE COMMAND LINE LENGTH TO 0 |
| 465 | CLL |
| 466 | PUSHJ |
| 467 | NRET /CLEAR NUMBER AND LAST OPERATOR |
| 468 | DCA CFLG |
| 469 | DCA MPDL /DELETE MACRO FLAG |
| 470 | DCA ITRST /ALSO ITERATION FLAG, |
| 471 | DCA CLNF /AND COLON FLAG |
| 472 | PUSHJ /KILL QUOTE FLAG |
| 473 | ZROSPN /KILL QUOTE AND NUMBER FLAGS AND SCAN POINTER |
| 474 | KCC /KILL ^O IF IN KEYBOARD BUFFER |
| 475 | DCA I (CHOOPS /KILL FATAL ERROR RETURN |
| 476 | TAD [52 |
| 477 | SKP |
| 478 | ROCMND, JMS I (BACKUP /BACK UP AND GET LAST CHAR |
| 479 | TYPE |
| 480 | T2M1, DCA CHAR /KILL CHAR TO PREVENT SPURIOUS DOUBLE CHARACTERS |
| 481 | T2, LISTEN /BUILD COMMAND LINE |
| 482 | SORT |
| 483 | COMLST |
| 484 | COMTAB-COMLST |
| 485 | T2A, DCA CHAR |
| 486 | JMS SPUT /PUT INTO C.L. BUFFER |
| 487 | JMP T2 /GO GET ANOTHER |
| 488 | \fTCTLU, TAD SCHAR |
| 489 | TYPE /PRINT "^U" |
| 490 | TCTLUP, JMS I (BACKUP |
| 491 | TAD [-12 /CHECK FOR LF |
| 492 | SZA CLA |
| 493 | JMP TCTLUP /LOOP UNTIL LF |
| 494 | IAC |
| 495 | JMP I (TSP9 |
| 496 | |
| 497 | TCRLF, TAD CACR /CR IN COMM LINE |
| 498 | DCA CHAR |
| 499 | JMS SPUT /PUT INTO COMM LINE |
| 500 | TAD CALF /THEN PUT IN A LF |
| 501 | JMP T2A /AND GET SOME MORE |
| 502 | \f /COMMAND EXECUTION LOOP |
| 503 | |
| 504 | TALTM, JMS COMPAR /2ND ALTM STARTS EXECUTION |
| 505 | CRLF /START COMM EXECUTION |
| 506 | CHTECO, TAD (45 /NUMBER OF INPUT COMMAND Q-REGISTER |
| 507 | SETCMD /SET UP THE INPUT LINE AS THE CURRENT COMMAND LINE |
| 508 | T6, SCANUP |
| 509 | T6A, DCA CHAR /SAVE COMMAND CHAR |
| 510 | TAD CHAR |
| 511 | TAD (CDSP /ADD BASE OF DISPATCH TABLE |
| 512 | DCA T7 /LOOK UP ENTRY IN |
| 513 | TAD I T7 /COMMAND DISPATCH TABLE |
| 514 | DCA T7 /CALL RECURSIVELY |
| 515 | CLL |
| 516 | PUSHJ |
| 517 | T7, 0 /CALL TO ROUTINE |
| 518 | CTCCHK /CHECK FOR ^C - ** AC MAY NOT BE 0 HERE ** |
| 519 | CLA /CTCCHK LEAVES AC NON-ZERO |
| 520 | TAD NFLG |
| 521 | SPA CLA |
| 522 | JMP T6 |
| 523 | DCA N /IF WE ARE NOT ENTERING A NUMBER |
| 524 | DCA NLINK /SET 13-BIT N TO 0 |
| 525 | JMP T6 /KEEP INTERPRETING |
| 526 | TQMK, TAD I ERROR |
| 527 | SNA CLA /ERROR ROUTINE ENTRY POINT NON-ZERO? |
| 528 | RESORT /NO |
| 529 | STA /AN ERROR PRINTOUT |
| 530 | DCA QLENGT /SET QLENGT BIG SO WE CAN ACCESS ENTIRE LINE |
| 531 | NOTRCE /TURN TRACE OFF |
| 532 | SCAN |
| 533 | TYPE /PRINT OUT THE LINE WHICH CAUSED THE ERROR |
| 534 | ISZ I ERROR /UP TO THE ERROR CHAR ITSELF |
| 535 | JMP .-3 |
| 536 | JMP T0 /RE-INITIALIZE |
| 537 | |
| 538 | CHUA, POP /^ COMMAND - POP OFF RETURN ADDRESS |
| 539 | SCANUP /GET THE NEXT CHARACTER IN UPPER CASE |
| 540 | AND [77 /MAKE IT A CONTROL CHARACTER |
| 541 | JMP T6A /USE IT INSTEAD OF THE ^ |
| 542 | \fCOMPAR, TCINIT /LOOK FOR DOUBLED COMM LINE CHARS |
| 543 | TAD SCHAR /MOST RECENT |
| 544 | CIA |
| 545 | TAD CHAR /PREVIOUS |
| 546 | SZA CLA |
| 547 | RESORT /NOT THE SAME |
| 548 | JMS SPUT /PUT THE CHAR INTO THE COMMAND LINE AND ECHO IT |
| 549 | JMP I COMPAR /SAME-SPECIAL HANDLING |
| 550 | |
| 551 | SPUT, JTECO /PUT CHAR INTO COMM LINE |
| 552 | TAD QZ |
| 553 | DCA QP |
| 554 | TAD CHAR |
| 555 | QPUT /STORE CHARACTER AWAY |
| 556 | TAD I [QPNTR |
| 557 | IAC |
| 558 | ADJQ /ADJUST COMMAND LINE REGISTER LENGTH |
| 559 | DCA I ERROR /CLEAR "ERROR JUST OCCURRED" FLAG |
| 560 | TAD CHAR |
| 561 | TYPE /TYPE THE INSERTED CHARACTER |
| 562 | TAD I [QPNTR |
| 563 | TAD CALF /12 |
| 564 | SPA CLA |
| 565 | JMP EMERG /TYPE BELL IF WITHIN 12 CHARACTERS OF 2048 |
| 566 | CLL |
| 567 | TAD QZ |
| 568 | TAD QLIMIT |
| 569 | SNL CLA /TYPE A BELL IF THE LINE IS |
| 570 | JMP I SPUT / WITHIN 12 CHARS OF OVERFLOW |
| 571 | EMERG, TAD Z7 |
| 572 | TYPE |
| 573 | JMP I SPUT |
| 574 | QLIMIT, 12-QMAX |
| 575 | PAGE |
| 576 | \f /Q REGISTER PACK AND UNPACK |
| 577 | /THE Q-REGISTERS ARE STORED IN THE UPPER 4 BITS OF THE WORDS |
| 578 | /WHICH HAVE THE TEXT BUFFER CHARACTERS IN THEIR LOWER 8 BITS. |
| 579 | /THEREFORE EACH Q-REGISTER CHARACTER TAKES 2 WORDS. |
| 580 | |
| 581 | QPUTS, 0 /STORE THROUGH POINTER "QP" AND BUMP POINTER |
| 582 | CLL RTL |
| 583 | RTL |
| 584 | DCA GETQX /SAVE CHARACTER |
| 585 | TAD QP |
| 586 | CLL RAL |
| 587 | DCA CHKCTC /COMPUTE CORE POINTER = 2*QP |
| 588 | CDF 10 |
| 589 | TAD GETQX |
| 590 | JMS ST4BTS /STORE HIGH ORDER 4 BITS |
| 591 | ISZ CHKCTC |
| 592 | TAD GETQX |
| 593 | CLL RTL |
| 594 | RTL |
| 595 | JMS ST4BTS /STORE LOW ORDER 4 BITS |
| 596 | CDF 0 |
| 597 | ISZ QP /BUMP POINTER |
| 598 | JMP I QPUTS |
| 599 | |
| 600 | GETQX, 0 |
| 601 | CLL RAL |
| 602 | DCA CHKCTC /COMPUTE CORE POINTER = 2*AC |
| 603 | CDF 10 |
| 604 | TAD I CHKCTC |
| 605 | AND [7400 /FETCH HIGH ORDER |
| 606 | ISZ CHKCTC |
| 607 | DCA QPUTS |
| 608 | TAD I CHKCTC |
| 609 | AND [7400 /FETCH LOW ORDER |
| 610 | CLL RTR |
| 611 | RTR |
| 612 | TAD QPUTS /COMBINE TO FORM CHARACTER |
| 613 | RTR |
| 614 | RTR |
| 615 | CDF 0 |
| 616 | JMP I GETQX |
| 617 | |
| 618 | ST4BTS, 0 |
| 619 | AND [7400 |
| 620 | DCA POPXX |
| 621 | TAD I CHKCTC |
| 622 | AND [377 |
| 623 | TAD POPXX |
| 624 | DCA I CHKCTC /STORE HIGH ORDER |
| 625 | JMP I ST4BTS |
| 626 | \fCHKCTC, 0 /SUBROUTINE TO CHECK FOR ^C IN KEYBOARD |
| 627 | CLA OSR /** AC MAY NOT BE 0 ON ENTRY |
| 628 | DCA QPUTS /GET LOCATION FROM SWITCH REGISTER |
| 629 | TAD I QPUTS |
| 630 | 7421 /DISPLAY INDICATED LOCATION IN MQ |
| 631 | C7600, 7600 /JUST IN CASE THERE IS NO MQ |
| 632 | KSF |
| 633 | JMP I CHKCTC /NO CHAR IN KEYBOARD BUFFER - EXIT |
| 634 | KRS |
| 635 | AND [177 /KILL PARITY BIT |
| 636 | TAD [-20 /^P OUGHT TO GO AWAY |
| 637 | SZA |
| 638 | TAD CACR |
| 639 | SZA /^C? |
| 640 | JMP I CHKCTC /NO - RESUME WITH NON-ZERO AC |
| 641 | ERR34, ERR /^C, EXECUTION ABORTED |
| 642 | |
| 643 | CTLC, TSF |
| 644 | JMP CTLC /WAIT FOR TELETYPE TO DIE DOWN |
| 645 | JMP I C7600 /RETURN TO OS/8 |
| 646 | |
| 647 | |
| 648 | POPJXX, DCA GETQX /POPJ ROUTINE |
| 649 | POP |
| 650 | POPJXY, DCA POPXX |
| 651 | TAD GETQX |
| 652 | JMP I POPXX |
| 653 | \f /PUSH DOWN LIST ROUTINES |
| 654 | |
| 655 | POPXX, 0 /POP ROUTINE |
| 656 | CLA CMA |
| 657 | TAD PDLP |
| 658 | DCA PDLP |
| 659 | TAD I PDLP |
| 660 | JMP I POPXX |
| 661 | |
| 662 | PUSHXX, 0 /PUSH ROUTINE (DOESN'T AFFECT LINK) |
| 663 | DCA I PDLP |
| 664 | ISZ PDLP /BUMP PUSHDOWN POINTER |
| 665 | TAD PDLP /CHECK FOR EXACTLY FULL - THIS ALLOWS THE |
| 666 | TAD (-PDLEND |
| 667 | SNA CLA /** ERROR ROUTINE TO DO A PUSHJ |
| 668 | ERR04, ERR /FULL - REPORT IT |
| 669 | JMP I PUSHXX |
| 670 | |
| 671 | PUSHJY, 0 /PUSHJ ROUTINE (DOESN'T AFFECT LINK) |
| 672 | DCA GETQX |
| 673 | IAC /** LINK SHOULD BE PRESERVED ON EXIT |
| 674 | TAD PUSHJY |
| 675 | PUSH |
| 676 | TAD I PUSHJY |
| 677 | JMP POPJXY |
| 678 | |
| 679 | PUSHLX, 0 /PUSH AND CLEAR A LIST |
| 680 | CLL |
| 681 | SMA /PUSH LIST IF AC<0, POP IT IF >=0 |
| 682 | CMA STL |
| 683 | DCA PUSHJY /SET COUNTER |
| 684 | RAL /** DEPENDS ON FACT THAT POP=PUSH+1 ** |
| 685 | TAD PUSHYY |
| 686 | DCA PUSHYX /STORE EITHER A "PUSH" OR A "POP" |
| 687 | POP /SAVE RETURN POINTER |
| 688 | DCA CHKCTC |
| 689 | PUSHLP, TAD I PUSHLX |
| 690 | DCA GETQX |
| 691 | TAD I GETQX |
| 692 | PUSHYX, PUSH /PUSH OR POP |
| 693 | DCA I GETQX /IF PUSHYX=PUSH, THIS ZEROES THE PUSHED LOCATION |
| 694 | ISZ PUSHLX |
| 695 | ISZ PUSHJY |
| 696 | JMP PUSHLP |
| 697 | TAD CHKCTC /RESTORE RETURN POINTER |
| 698 | PUSHYY, PUSH |
| 699 | JMP I PUSHLX |
| 700 | \fTPUT, 0 /TELETYPE OUTPUT |
| 701 | DCA TEMPT |
| 702 | TPUTX, CTCCHK /CHECK FOR ^C OR ^P |
| 703 | TAD (3-17 /INHIBIT PRINTING AS LONG AS THERE |
| 704 | SNA /IS A ^O IN THE KEYBOARD BUFFER. |
| 705 | JMP I TPUT |
| 706 | TAD (17-23 /CHECK FOR ^S |
| 707 | SNA CLA |
| 708 | JMP TPUTX |
| 709 | TSF /WAIT FOR TELETYPE FLAG |
| 710 | TSFWT, JMP .-1 /WHILE WAITING, DISPLAY TEXT ON SCOPE |
| 711 | TAD TEMPT |
| 712 | TLS |
| 713 | CLA |
| 714 | JMP I TPUT |
| 715 | PAGE |
| 716 | \f/POINTER MOVING COMMANDS - C,R,J,L |
| 717 | |
| 718 | CHRJ, DCA NFLG /COMMAND J |
| 719 | GETNUM /CAUSE NEG ARGUMENT TO GIVE A POP |
| 720 | JMP CLOQ |
| 721 | |
| 722 | CHRR, GETN /GET LAST NUMBER, DEFAULT=(+ OR -)1 |
| 723 | CHR1, CML CIA /NEGATE 13-BIT NUMBER |
| 724 | SKP |
| 725 | CHRC, GETN /GET LAST NUMBER, DEFAULT=(+ OR -)1 |
| 726 | TAD P /OFFSET RELATIVE TO . |
| 727 | / |
| 728 | / *** LINK NOT ALWAYS SET RIGHT |
| 729 | / |
| 730 | CLOQ, BZCHK /SEE IF IN RANGE B,Z |
| 731 | DCA P /IN RANGE |
| 732 | DNN3, CDF 0 |
| 733 | POPJ |
| 734 | |
| 735 | CHRL, GETN /GET LAST NUMBER, DEFAULT=(+ OR -)1 |
| 736 | CHRL1, CDF 10 |
| 737 | SZL SNA |
| 738 | JMP LNEG |
| 739 | CIA |
| 740 | DCA CDT |
| 741 | CHRLP, TAD P |
| 742 | CIA |
| 743 | TAD ZZ |
| 744 | SNA CLA /IF WE ARE AT THE END OF THE BUFFER, |
| 745 | JMP DNN3 /RETURN |
| 746 | JMS I (CHLCMP /COMPARE CHARACTER AGAINST LINE FEED |
| 747 | ISZ P |
| 748 | JMP CHRLP /KEEP GOING UNTIL WE GET THERE OR OVERFLOW BUFFER |
| 749 | LNEG, TAD (-1 |
| 750 | DCA CDT |
| 751 | CHRLM, CLA CMA CLL |
| 752 | TAD P |
| 753 | DCA P /MOVE POINTER BACKWARD 1 |
| 754 | SNL |
| 755 | JMP I (CHRLI /OOPS - PAST THE BEGINNING OF THE BUFFER - RETURN |
| 756 | JMS I (CHLCMP /COMPARE CHARACTER AGAINST LINE FEED |
| 757 | JMP CHRLM /NOT SATISFIED YET - KEEP LOOPING |
| 758 | |
| 759 | NUMGET, 0 /PUT 13-BIT NUMBER IN L,AC |
| 760 | TAD NLINK |
| 761 | CLL RAR |
| 762 | TAD N |
| 763 | JMP I NUMGET |
| 764 | \f/D COMMAND AND PART OF ADJUST ROUTINE |
| 765 | |
| 766 | CHRD, ISZ CFLG /WAS THERE A COMMA? |
| 767 | SKP /NO |
| 768 | JMP NERR /YES, 2 ARGS TO D |
| 769 | GETN /GET LAST NUMBER, DEFAULT=(+ OR -)1 |
| 770 | SNL /SIGN BIT OF 13-BIT NUMBER IS IN LINK |
| 771 | JMP PLUSND /+ND |
| 772 | CLL CIA |
| 773 | DCA CDT /-ND |
| 774 | TAD CDT |
| 775 | PUSHJ /DO (-)NC(+)ND |
| 776 | CHR1 |
| 777 | TAD CDT |
| 778 | JMP PLUSND |
| 779 | |
| 780 | ADJ, SNA /ADJUST BUFFER + OR - N CHARS |
| 781 | /TEST FOR NOTHING |
| 782 | POPJ /GO AWAY |
| 783 | STL /MOVE UP N CHARACTERS |
| 784 | TAD ZZ /ADD TO MAX CHARACTER |
| 785 | DCA R /NEW HIGHEST |
| 786 | TAD R /SEE IF TOO HIGH |
| 787 | TAD (-ZMAX |
| 788 | SNL SZA CLA /TWO PLACES FOR OVERFLOW THERE |
| 789 | ERR05, ERR |
| 790 | TAD ZZ |
| 791 | DCA Q |
| 792 | TAD R |
| 793 | DCA ZZ |
| 794 | CDF 10 |
| 795 | UPNL, TAD Q |
| 796 | CIA |
| 797 | TAD P |
| 798 | SNA CLA /FINISHED? |
| 799 | JMP DNN3 /YES |
| 800 | CMA |
| 801 | TAD Q |
| 802 | DCA Q |
| 803 | CMA |
| 804 | TAD R |
| 805 | DCA R |
| 806 | TAD I Q /GET A CHAR |
| 807 | L12K1, AND [377 /JMP .+5 IF 12K |
| 808 | DCA CHLTMP |
| 809 | TAD I R /BE CAREFUL NOT TO |
| 810 | AND [7400 /DESTROY THE HIGH- |
| 811 | TAD CHLTMP /ORDER 4 BITS |
| 812 | J12K1= JMP . |
| 813 | DCA I R /AND PUT IT IN THE LOW PART OF THE TARGET WORD |
| 814 | JMP UPNL |
| 815 | \f/K COMMAND AND MORE OF ADJUST ROUTINE |
| 816 | |
| 817 | CHRK, JMS I (NLINES /CONVERT LINES TO CHARS |
| 818 | DCA CDT |
| 819 | TAD M /SET POINTER |
| 820 | DCA P /LOWER ARG |
| 821 | TAD CDT |
| 822 | PLUSND, SNA |
| 823 | POPJ /IGNORE 0D |
| 824 | ADJ2, CLL |
| 825 | TAD P /MOVE DOWN N CHARACTERS |
| 826 | SZL |
| 827 | CLA CMA /DETECT GROSS OVERFLOWS |
| 828 | /** CHECK |
| 829 | BZCHK |
| 830 | DCA Q /N IN AC |
| 831 | TAD P |
| 832 | DCA R |
| 833 | CDF 10 |
| 834 | DNN1, TAD ZZ |
| 835 | CIA |
| 836 | TAD Q |
| 837 | SNA CLA /FINISHED? |
| 838 | JMP DNN2 |
| 839 | TAD I Q /GET A CHAR |
| 840 | L12K2, AND [377 /JMP .+5 IF 12K |
| 841 | DCA CHLTMP |
| 842 | TAD I R /BE CAREFUL NOT TO |
| 843 | AND [7400 /DESTROY THE HIGH- |
| 844 | TAD CHLTMP /ORDER 4 BITS |
| 845 | J12K2= JMP . |
| 846 | DCA I R /AND PUT IT IN THE LOW PART OF THE TARGET WORD |
| 847 | ISZ Q |
| 848 | ISZ R |
| 849 | JMP DNN1 |
| 850 | DNN2, TAD R |
| 851 | DCA ZZ |
| 852 | JMP DNN3 |
| 853 | |
| 854 | CHLTMP, 0 |
| 855 | |
| 856 | /GO TO ADJ TO MOVE UP TEXT |
| 857 | /GOTO ADJ2 TO MOVE DOWN TEXT |
| 858 | /IN EITHER CASE, AC CONTAINS NUMBER OF CHARS TO MOVE (0-4095) |
| 859 | |
| 860 | ERR27, ERR /^W |
| 861 | ERR35, ERR /^V |
| 862 | PAGE |
| 863 | \f/SEARCH SUBROUTINE - CALLED BY N, S, AND _ COMMANDS |
| 864 | |
| 865 | SEARCH, 0 |
| 866 | DCA REPFLG /AC MAY BE NON-0 TO ALLOW A REPLACE |
| 867 | GETN |
| 868 | SZL SNA |
| 869 | ERR29, ERR /NEG OR 0 ARG TO SEARCH |
| 870 | CIA |
| 871 | DCA CSN /GET NUMBER OF OCCURRANCES TO SEARCH FOR |
| 872 | QCHK /GET REPLACEMENT FOR ALTMODE, IF ANY |
| 873 | TAD (STABLE-1 |
| 874 | DCA SXR /INITIALIZE XR |
| 875 | TAD [-40 |
| 876 | DCA CSP |
| 877 | SGTLP, QUOTST /GET A CHARACTER FROM THE SEARCH STRING |
| 878 | JMP SCHQUO /OOPS- NO MORE |
| 879 | SORT /SEE IF ITS SPECIAL |
| 880 | SCHLST |
| 881 | SCHTAB-SCHLST |
| 882 | SSTCHR, DCA I SXR /STORE THE CHAR IN THE SEARCH BUFFER |
| 883 | ISZ CSP |
| 884 | JMP SGTLP /LOOP |
| 885 | ERR06, ERR /OOPS - SEARCH BUFFER FULL! |
| 886 | |
| 887 | SCHQUO, TAD CSP |
| 888 | TAD [40 /A NULL SEARCH STRING MEANS USE THE |
| 889 | SZA CLA /PREV CONTENTS OF THE SEARCH BUFFER, ELSE |
| 890 | DCA I SXR /STORE TERMINATING 0 AND BEGIN THE SEARCH |
| 891 | CSST, TAD P |
| 892 | DCA CSP |
| 893 | JMP CSF1 |
| 894 | SCHINV, TAD CSNCL /^N, INVERT SKIP SENSE |
| 895 | DCA CSWT |
| 896 | |
| 897 | CSL, TAD I SXR /GET A CHAR FROM THE SEARCH BUFFER |
| 898 | SPA SNA |
| 899 | JMP SCCOMD /NEGATIVE CHARS AND 0 ARE SPECIAL |
| 900 | CIA |
| 901 | CDF 10 |
| 902 | TAD I P |
| 903 | AND [377 |
| 904 | CSWT1, CDF 0 |
| 905 | CSWT, SZA CLA |
| 906 | JMP CSF /FAIL TO MATCH ON THIS CHARACTER |
| 907 | ISZ P |
| 908 | CSG, TAD CSZCL |
| 909 | DCA CSWT /RESTORE SEARCH TEST |
| 910 | TAD ZZ |
| 911 | CMA |
| 912 | TAD P |
| 913 | CSZCL, SZA CLA /CHECK FOR END OF BUFFER |
| 914 | JMP CSL /NO |
| 915 | DCA P |
| 916 | CSZ, DCA NMT |
| 917 | JMP I SEARCH |
| 918 | \f/SEARCH SUBROUTINE - CONTINUED |
| 919 | |
| 920 | SCCOMD, DCA .+1 /SPECIAL CHARACTERS ARE JUMPS OR 0 |
| 921 | HLT /0 FALLS THROUGH INTO TERMINATION CODE |
| 922 | ISZ CSN /GET NTH OCCURRENCE |
| 923 | JMP CSF /MORE TO GO |
| 924 | CMA |
| 925 | JMP CSZ /GOT IT |
| 926 | CSF, ISZ CSP /INDEX P |
| 927 | CSF1, TAD (STABLE-1 |
| 928 | DCA SXR /INITIALIZE AUTO - INDEX |
| 929 | TAD CSP |
| 930 | DCA P |
| 931 | JMP CSG |
| 932 | |
| 933 | /SEARCH STRING MODIFIERS ^N,^Q,^S, AND ^X |
| 934 | |
| 935 | SCHTAB, JMP SCHINV /^N: ANYTHING BUT |
| 936 | SCHCTQ /^Q: LITERALLY |
| 937 | JMP SCHSEP /^S: ANY SEPARATOR |
| 938 | JMP CSWT1 /^X: ANYTHING |
| 939 | |
| 940 | SCHCTQ, SCAN /GET THE NEXT CHARACTER |
| 941 | JMP SSTCHR /AND STORE IT IN PLACE OF THE ^Q |
| 942 | |
| 943 | SCHSEP, CDF 10 /^S, LOOK FOR SEPARATOR |
| 944 | TAD I P |
| 945 | AND [377 |
| 946 | TSTSEP /SHARED SORTING ROUTINE |
| 947 | SKP |
| 948 | CMA /SET AC = -1 IF NON-SEPARATOR |
| 949 | JMP CSWT1 /GO CHECK RESULTS |
| 950 | |
| 951 | FN, DCA CNXT |
| 952 | STA |
| 953 | JMP CHRN1 |
| 954 | \f/S,N AND _ COMMANDS (ALSO FS AND FN) |
| 955 | |
| 956 | FS, STA /CHANGE S TO FS |
| 957 | CHRS, JMS SEARCH /S COMMAND - DO A SEARCH |
| 958 | CHKREP, ISZ REPFLG /WAS THERE A REPLACE SPECIFIED? |
| 959 | JMP CHKCLN /NO - CHECK FOR COLON |
| 960 | QSKP /COUNT UP STRING 2 |
| 961 | TAD NMT |
| 962 | SMA CLA |
| 963 | JMP CHKCLN /FAILED, SET VALUE & EXIT |
| 964 | TAD CSP /FIGURE OUT OFFSET TO FAKE OUT "I" ROUTINE |
| 965 | CIA /SO THAT WE HAVE THE RIGHT INSERTION COUNT |
| 966 | TAD P /BUT THE SIZE OF THE HOLE WE NEED |
| 967 | DCA DVT1 /IS DECREASED BY THE LENGTH OF THE SEARCH STRING. |
| 968 | TAD CSP /RESET |
| 969 | DCA P /TEXT POINTER |
| 970 | PUSHJ /INSERT |
| 971 | CIL2 /STRING 2 |
| 972 | CHKCLN, DCA REPFLG /CLEAR REPLACE FLAG |
| 973 | TAD NMT |
| 974 | PUSHJ /FORM NUMBER FROM "NMT" |
| 975 | NNEW13 /(APPLYING OPERATOR, IF NECESSARY) |
| 976 | ISZ CLNF /WAS THERE A COLON ON THIS SEARCH? |
| 977 | SKP /NO |
| 978 | JMP I [IREST /YES - GO AWAY REGARDLESS OF RESULTS |
| 979 | DCA CLNF /RESET COLON FLAG TO 0 |
| 980 | ISZ N /DID WE SUCCEED? |
| 981 | JMP I (CFSI /NO - SIMULATE A SEMICOLON |
| 982 | DCA NFLG /YES - HOWEVER, NO COLON MEANS NO RESULT |
| 983 | JMP I [IREST |
| 984 | |
| 985 | CHBA, CLA IAC /_ COMMAND |
| 986 | CHRN, DCA CNXT /N COMMAND - SET OUTPUT FLAG |
| 987 | CHRN1, JMS SEARCH /DO A SEARCH |
| 988 | TAD REND |
| 989 | CIA |
| 990 | TAD ZZ |
| 991 | CSNCL, SNA CLA /HAVE WE REACHED END-OF-FILE? |
| 992 | JMP CHKREP /YES - STOP AND ASSIGN VALUE |
| 993 | TAD NMT |
| 994 | SZA CLA /HAVE WE SUCCEEDED? |
| 995 | JMP CHKREP /YES - STOP AND ASSIGN VALUE |
| 996 | TAD CNXT |
| 997 | JMS I [NXTBUF /GET NEXT BUFFER |
| 998 | JMP CSST /KEEP SEARCHING - RETURN TO CHRN+2 |
| 999 | CNXT, 0 /OUTPUT FLAG |
| 1000 | CSP, 0 /TEMP P |
| 1001 | CSN, 0 |
| 1002 | REPFLG, 0 /REPLACE FLAG (-1 MEANS REPLACE) |
| 1003 | PAGE |
| 1004 | \f/NUMBER PROCESSORS: |
| 1005 | /COMMANDS B,H,Z,. AND DIGITS |
| 1006 | |
| 1007 | |
| 1008 | NMBR, TAD CHAR /NUMBER FOUND IN COMMAND STRING |
| 1009 | TAD [-60 |
| 1010 | NMBR2, DCA NMT |
| 1011 | CLL |
| 1012 | NCHK /CHECK NUMBER FLAG |
| 1013 | JMP NNEW /NOT UP, NEW OPERAND |
| 1014 | TAD DOPR |
| 1015 | DCA NOPR /USE SAME OPERATOR AS FOR THE PREVIOUS DIGITS |
| 1016 | TAD NP /MULTIPLY PREV DIGITS BY 10 |
| 1017 | CLL RTL |
| 1018 | NMRBAS, TAD NP /REPLACED BY "NOP" FOR OCTAL |
| 1019 | CLL RAL /** COULD CHECK FOR OVERFLOW IN THIS AREA |
| 1020 | NNEW, TAD NMT |
| 1021 | NCOM, DCA NP /CURRENT NUMBER |
| 1022 | / RAL |
| 1023 | / DCA NEWLNK |
| 1024 | / TAD NEWLNK /GET NEW LINK |
| 1025 | / CLL RAR /INTO LINK |
| 1026 | NCOM2, TAD NP |
| 1027 | |
| 1028 | NOPR, SKP /DISPATCH JUMP FOR OPERATOR |
| 1029 | CML CIA |
| 1030 | TAD NACC /CURRENT EXPRESSION VALUE |
| 1031 | DCA N |
| 1032 | RAL |
| 1033 | TAD NACCLK /ADD IN OLD LINK |
| 1034 | RAR |
| 1035 | SKP CLA |
| 1036 | NRET, DCA N |
| 1037 | RAL |
| 1038 | DCA NLINK /SAVE LINK FOR POSSIBLE COMPARISON TEST |
| 1039 | TAD NOPR |
| 1040 | DCA DOPR |
| 1041 | TAD NULLOP |
| 1042 | DCA NOPR /SET OPERATOR TO NULL OP |
| 1043 | STA |
| 1044 | JMP DCPOPJ /SET NUMBER FLAG AND EXIT |
| 1045 | \fCCPR, STL CLA RTL /2 |
| 1046 | POPL |
| 1047 | NOPR |
| 1048 | NACC |
| 1049 | NACCLK |
| 1050 | GETNUM |
| 1051 | JMP NCOM /COMBINE OLD NUMBER AND PARENTHESIZED RESULT |
| 1052 | |
| 1053 | COPR, MTHREE |
| 1054 | PUSHL |
| 1055 | NACCLK |
| 1056 | NACC |
| 1057 | NOPR |
| 1058 | DCA N |
| 1059 | DCA NLINK |
| 1060 | JMP CPLS /CLEAN OUT INSIDE PARENS |
| 1061 | |
| 1062 | CDOT, TAD P /COMMAND . |
| 1063 | /** COULD CAUSE ERROR IF NFLG SET |
| 1064 | JMP NCOMCL |
| 1065 | /NEWLNK, 0 |
| 1066 | \f /COMMANDS &,#,/,*,-,+,(,) |
| 1067 | |
| 1068 | CAMP, MTWO /*K* LOGICAL AND ** |
| 1069 | CNBS, TAD (NIOR-NDIV /LOGICAL OR |
| 1070 | CVIR, TAD (NDIV-NMPY /DIVISION |
| 1071 | CAST, TAD (NMPY&177+5200-7400 /MULTIPLICATION |
| 1072 | CMIN, TAD [7400-SKP /SUBTRACTION |
| 1073 | CPLS, TAD (SKP /ADDITION |
| 1074 | DCA NOPR /COMMON TO ALL NUMERIC OPERATORS |
| 1075 | TAD N |
| 1076 | DCA NACC |
| 1077 | TAD NLINK |
| 1078 | DCA NACCLK |
| 1079 | DCA NP |
| 1080 | DCPOPJ, DCA NFLG /CLEAR NUMBER FLAG |
| 1081 | POPJ |
| 1082 | |
| 1083 | NAND, AND NACC /BITWISE AND OF BINARY NUMBERS |
| 1084 | JMP NRET /** KEEP THESE TWO OPNS TOGETHER |
| 1085 | NIOR, CMA /BITWISE OR OF BINARY VALUES |
| 1086 | AND NACC |
| 1087 | TAD NP |
| 1088 | NULLOP, JMP NRET |
| 1089 | |
| 1090 | NACCLK, 0 /LINK OF EXPRESSION WITHOUT NP |
| 1091 | NMPY, CIA /*** REALLY OUGHT TO IMPLEMENT 13-BIT MULTIPLY |
| 1092 | DCA ND |
| 1093 | TAD NACCLK |
| 1094 | RAR /SET UP OLD LINK |
| 1095 | TAD NACC |
| 1096 | ISZ ND |
| 1097 | JMP .-2 |
| 1098 | JMP NRET |
| 1099 | NACC, 0 /VALUE OF EXPRESSION WITHOUT NP |
| 1100 | NDIV, DCA ND |
| 1101 | TAD NACC |
| 1102 | MQLDVI |
| 1103 | ND, 0 |
| 1104 | JMP NRET |
| 1105 | \f/COMMANDS ^F,^^,^Z,^V, Q AND %, ^D, ^O |
| 1106 | |
| 1107 | CTLF, CLA OSR SKP /^F COMMAND - VALUE OF CONSOLE SWITCHES |
| 1108 | CTUA, SCAN /^^ COMMAND - VALUE OF NEXT CHAR IN COMMAND LINE |
| 1109 | NCOMCL, CLL |
| 1110 | JMP NCOM /GO INTO NUMBER PROCESSOR |
| 1111 | |
| 1112 | /CTLZ, TAD QZ /COMMAND ^Z |
| 1113 | / JMP NCOM /RETURN NUMBER OF CHARACTERS IN ALL Q-REGS. |
| 1114 | /CTLV, TAD (VERSN /^V COMMAND - RETURNS THE CURRENT VERSION NUMBER |
| 1115 | /NCOM14, CLL |
| 1116 | / JMP NCOM |
| 1117 | |
| 1118 | CTLD, TAD [4 /SET RADIX DECIMAL |
| 1119 | CTLO, TAD (ORAD /SET RADIX OCTAL |
| 1120 | DCA RADIX |
| 1121 | TAD I RADIX |
| 1122 | DCA NMRBAS /EITHER "NOP"(8) OR "TAD NP"(10) |
| 1123 | POPJ |
| 1124 | |
| 1125 | DOPR, 0 /PREVIOUS OPERATOR |
| 1126 | NP, 0 /VALUE OF CURRENT NUMBER |
| 1127 | |
| 1128 | SCPTAB, BBELL |
| 1129 | BCR |
| 1130 | BCR /TAB |
| 1131 | EASYRO /ALT |
| 1132 | BFF |
| 1133 | BVT |
| 1134 | BLF |
| 1135 | |
| 1136 | CTLN, TAD REND |
| 1137 | CMA |
| 1138 | JMP I (NNEW13 |
| 1139 | |
| 1140 | CQSM, TAD TFLG |
| 1141 | CMA /TRACE FLAG ALTERNATES BETWEEN 0 AND 7777 |
| 1142 | DCA TFLG |
| 1143 | POPJ |
| 1144 | \fFTAB, FN |
| 1145 | FS |
| 1146 | FLST, 116 /FN |
| 1147 | 123 /FS |
| 1148 | |
| 1149 | CHRF, SCANUP /COMMAND F |
| 1150 | SORT |
| 1151 | FLST |
| 1152 | FTAB-FLST |
| 1153 | ERR31, ERR /BAD F COMMAND |
| 1154 | |
| 1155 | CCLN, STA /: COMMAND - SET VALUE FLAG |
| 1156 | DCA CLNF |
| 1157 | POPJ /SO NEXT SEARCH WILL HAVE A NUMERIC VALUE |
| 1158 | PAGE |
| 1159 | \f/CURSOR RIGHT IS $C |
| 1160 | /CURSOR UP IS $A |
| 1161 | /ERASE LINE IS $K |
| 1162 | |
| 1163 | BUGFLG, 0 /-1 MEANS MUST RETYPE LINE ON NEXT RUBOUT |
| 1164 | |
| 1165 | BSP, 0 |
| 1166 | TAD TTY10 |
| 1167 | PUTT /TYPE BS, SPACE, BS |
| 1168 | TAD TTY40 |
| 1169 | PUTT |
| 1170 | TAD TTY10 |
| 1171 | PUTT |
| 1172 | STA |
| 1173 | TAD I (COLCT /FIX UP COLUMN COUNTER |
| 1174 | DCA I (COLCT |
| 1175 | JMP I BSP |
| 1176 | \fSCOPY, JMS I (BACKUP /BACK UP ONE CHAR IN CMD LINE |
| 1177 | TAD [-40 /LOOK AT CHAR WE BACKED OVER |
| 1178 | SMA |
| 1179 | JMP EASYRO /IT'S EASY TO RUB THIS ONE OUT |
| 1180 | TAD [40 /RESTORE CHARACTER |
| 1181 | SORT |
| 1182 | CTLBEL |
| 1183 | SCPTAB-CTLBEL |
| 1184 | BBELL, CLA |
| 1185 | JMS BSP /^X NEEDS TWO RUB OUTS |
| 1186 | EASYRO, CLA |
| 1187 | ISZ BUGFLG /MAYBE WE REALLY SHOULD REPRINT LINE |
| 1188 | TTY10, SKP /NOT NECESSARY |
| 1189 | JMP BCR /NECESSARY (PREVIOUS VERTICAL MOTION MAY |
| 1190 | /HAVE SCROLLED OFF TOP OF SCREEN) |
| 1191 | JMS BSP /RUB IT OUT |
| 1192 | SCOPGO, DCA BUGFLG |
| 1193 | JMP I (T2M1 |
| 1194 | |
| 1195 | BCR, JMS BELLSP /REPRINT LINE |
| 1196 | JMS I SCAPE |
| 1197 | 113 /ERASE LINE |
| 1198 | JMP SCOPGO |
| 1199 | |
| 1200 | BLF, TAD CTLBEL /CURSOR UP 1 |
| 1201 | BFF, TAD (-4 /CURSOR UP 8 |
| 1202 | BVT, TAD (-4 /CURSOR UP 4 |
| 1203 | DCA BSP |
| 1204 | JMS I (ESCAPE |
| 1205 | 101 /CURSOR UP |
| 1206 | ISZ BSP |
| 1207 | JMP .-3 |
| 1208 | TTY40, STA |
| 1209 | JMP SCOPGO |
| 1210 | \fTSTAR, DCA BCHAR |
| 1211 | TSPACE, TAD CHAR /LOOK AT PREVIOUS CHARACTER |
| 1212 | TAD (-7 |
| 1213 | SZA CLA /WAS IT ^G ? |
| 1214 | RESORT /NO |
| 1215 | STA /YES |
| 1216 | TSP9, TAD I [QPNTR /REDUCE CMD LINE BY 1 CHAR |
| 1217 | ADJQ /I.E. GET RID OF ^G |
| 1218 | JMS BELLSP |
| 1219 | JMP I (T2M1 |
| 1220 | |
| 1221 | BELLSP, 0 |
| 1222 | BLSP1, CRLF /TAD CACR |
| 1223 | BLSP2, NOP /TYPE |
| 1224 | TAD MQ |
| 1225 | DCA SAVMQ |
| 1226 | DCA MQ |
| 1227 | TAD QZ /START FROM END OF COMMAND LINE |
| 1228 | LFBLP, DCA QP /AND SEARCH FOR LF |
| 1229 | STA |
| 1230 | TAD MQ /COUNT HOW MANY |
| 1231 | DCA MQ |
| 1232 | STA |
| 1233 | TAD QP |
| 1234 | SPA |
| 1235 | JMP LFSTAR /AT BEGIN OF CMD LINE |
| 1236 | GETQ |
| 1237 | TAD BCHAR /LOOK FOR LF |
| 1238 | SNA CLA /IS IT LF? |
| 1239 | JMP LFB /YES |
| 1240 | STA /NO |
| 1241 | TAD QP /BUMP BACK ONE MORE CHAR |
| 1242 | JMP LFBLP |
| 1243 | |
| 1244 | LFSTAR, CLA |
| 1245 | TAD [52 /PRINT ANOTHER * |
| 1246 | TYPE |
| 1247 | LFB, PUSHJ |
| 1248 | COLG4 /REPRINT LINE TO END OF CMD LINE |
| 1249 | TAD SAVMQ /RESTORE MQ |
| 1250 | DCA MQ |
| 1251 | BLSP3, NOP /JMS I SCAPE |
| 1252 | BLSP4, NOP /113 |
| 1253 | TAD [-12 |
| 1254 | DCA BCHAR /SET UP FOR NEXT TIME |
| 1255 | KCC /CLEAR OUT ^O OR ^S |
| 1256 | JMP I BELLSP |
| 1257 | |
| 1258 | SAVMQ, 0 |
| 1259 | BCHAR, -12 /CHAR WE'RE SEARCHING BACKWARDS FOR |
| 1260 | SCAPE, ESCAPE |
| 1261 | \fSORTB, 0 /SORT AND BRANCH ROUTINE |
| 1262 | DCA SCHAR /SAVE SORT CHAR |
| 1263 | STA |
| 1264 | TAD I SORTB /GET POINTER TO LIST |
| 1265 | ISZ SORTB |
| 1266 | DCA XR |
| 1267 | SORTA1, TAD I XR /GET ITEM IN TEST LIST |
| 1268 | SPA /END MARKED BY NEG VALUE |
| 1269 | JMP SORTA2 /FELL OUT BOTTOM |
| 1270 | CIA STL |
| 1271 | TAD SCHAR |
| 1272 | SZA CLA /COMPARE SORT CHAR |
| 1273 | JMP SORTA1 /NOT IT. |
| 1274 | TAD XR /GOT IT. NOW MAKE INDEX |
| 1275 | TAD I SORTB /TO JUMP TABLE |
| 1276 | DCA COUNT /THIS IS TABLE POINTER |
| 1277 | TAD I COUNT /GET JUMP ADDRESS FROM TABLE |
| 1278 | SPA /IF IT IS NEGATIVE, |
| 1279 | JMP SORTA3 /ITS NOT A JUMP ADDRESS - ITS A VALUE |
| 1280 | DCA COUNT |
| 1281 | CLA CLL |
| 1282 | JMP I COUNT |
| 1283 | SORTA2, CLA CLL /FELL OUT BOTTOM |
| 1284 | TAD SCHAR /CARRY CHARACTER BACK TO |
| 1285 | SORTA3, ISZ SORTB |
| 1286 | JMP I SORTB /DO SOMETHING ELSE |
| 1287 | |
| 1288 | CSMC, SCANUP /GET NEXT CHARACTER IN UPPER CASE |
| 1289 | AND [77 /MAKE IT A CONTROL CHARACTER |
| 1290 | DCA SCHAR |
| 1291 | JMP SORTA1 /SUBSTITUTE IT FOR THE UPARROW |
| 1292 | |
| 1293 | COUNT, 0 |
| 1294 | PAGE |
| 1295 | \f /COMMANDS P AND T |
| 1296 | |
| 1297 | CHRP, JMS POKE /LOOK AHEAD ONE CHARACTER |
| 1298 | UPPERC /BUT IN UPPERCASE |
| 1299 | TAD (-127 /SEE IF IT'S "W" |
| 1300 | DCA TEMPT /SAVE KNOWLEDGE AS FLAG |
| 1301 | TAD TEMPT |
| 1302 | SNA CLA |
| 1303 | SCAN /PASS UP W |
| 1304 | CLA /CLEAR W FROM AC |
| 1305 | TAD CFLG |
| 1306 | SPA CLA /IS THIS COMMAND M,NP? |
| 1307 | JMP CHRW /YES - TREAT LIKE M,NPW |
| 1308 | GETN /COMMAND P - GET # OF PAGES |
| 1309 | SZL SNA |
| 1310 | ERR25, ERR /NEG OR 0 ARG TO P |
| 1311 | CIA |
| 1312 | DCA CPCT |
| 1313 | CPOA, PUSHJ |
| 1314 | CPOC /DO N<HPY> |
| 1315 | TAD TEMPT /IS NEXT CHARACTER W? |
| 1316 | SNA CLA |
| 1317 | JMP NOYANK /YES |
| 1318 | / TAD REND /IF WANT P TO CREATE FF'S |
| 1319 | / SZA CLA /WHEN NO MORE INPUT FILE |
| 1320 | ISZ FFFLAG /NO, SAW FF? |
| 1321 | JMP NOFF /NO |
| 1322 | TAD CAFF /YES |
| 1323 | OUTPUT /OUTPUT FF |
| 1324 | NOFF, DCA ZZ /FORCE Y COMMAND TO WORK |
| 1325 | PUSHJ |
| 1326 | CHRY /WHOEVER THOUGHT OF THE PW COMMAND SHOULD BE SHOT |
| 1327 | YANKY, ISZ CPCT |
| 1328 | JMP CPOA |
| 1329 | POPJ |
| 1330 | CPCT, 0 |
| 1331 | |
| 1332 | POKE, 0 /RETURN NEXT CHARACTER (BY LOOKING AHEAD) |
| 1333 | TAD QLENGT |
| 1334 | CIA CLL |
| 1335 | TAD SCANP |
| 1336 | SZL CLA /MAKE SURE WE HAVEN'T RUN OFF END OF COMMAND LINE |
| 1337 | JMP I POKE /RETURN 0 IF NO CHAR |
| 1338 | TAD SCANP |
| 1339 | TAD QBASE |
| 1340 | GETQ |
| 1341 | JMP I POKE /LEAVE CHAR IN AC |
| 1342 | |
| 1343 | NOYANK, TAD CAFF /NPW OUTPUTS FFS |
| 1344 | OUTPUT |
| 1345 | JMP YANKY |
| 1346 | \fCPOC, PUSHJ |
| 1347 | CHRH |
| 1348 | CHRW, TAD (OUTPUT |
| 1349 | CHRT2, DCA CWOUT /W AND T COMMANDS - SAME THING, DIFFERENT DEVICES |
| 1350 | JMS NLINES /CONVERT LINES TO CHARS |
| 1351 | CWOA, CMA |
| 1352 | DCA NLINES /SET CHARACTER COUNT |
| 1353 | TAD NLINES |
| 1354 | CIA |
| 1355 | MQLDVI /COMPUTE HOW MANY WORDS THIS OUTPUT WILL USE |
| 1356 | 6 /(BY TAKING 2/3 OF THE NUMBER OF CHARACTERS, |
| 1357 | CLL CML RTL / BU THAT'S SLOW SO WE TAKE 4/6 AND ROUND) |
| 1358 | JMS I (FITS /DETERMINE WHETHER THE OUTPUT WILL FIT |
| 1359 | ERR17, ERR /NO - TELL THE USER |
| 1360 | CLA /CLEAR CRAP FROM AC |
| 1361 | JMP CWOC |
| 1362 | CWOB, CDF 10 |
| 1363 | TAD I M |
| 1364 | AND [177 |
| 1365 | CDF 0 |
| 1366 | CWOUT, 0 /TYPE, OUTPUT, OR QPUT |
| 1367 | ISZ M |
| 1368 | CWOC, ISZ NLINES /DONE? |
| 1369 | JMP CWOB /NO |
| 1370 | POPJ |
| 1371 | |
| 1372 | CHRT, TAD KTYPE |
| 1373 | JMP CHRT2 |
| 1374 | \f/X COMMAND AND LINES-TO-CHARACTER CONVERTOR |
| 1375 | |
| 1376 | CHRX, QREF /COMMAND X |
| 1377 | JMS NLINES /CONVERT LINES TO CHARS |
| 1378 | ADJQ /ADJUST Q-REGISTERS AND SET UP NEW LENGTH. |
| 1379 | TAD (QPUT |
| 1380 | DCA CWOUT /SET OUTPUT ROUTINE TO STORE INTO Q REG |
| 1381 | TAD MQ /LOAD THE CHARACTER COUNT |
| 1382 | JMP CWOA /GO TO TEXT OUTPUTTER |
| 1383 | |
| 1384 | NLINES, 0 /CONVERT + OR - N LINES AROUND . TO CHARS M,N |
| 1385 | ISZ CFLG /WAS THERE A COMMA? |
| 1386 | SKP /NO |
| 1387 | JMP MFROMN /YES - DON'T CONVERT LINES TO CHARS |
| 1388 | TAD P |
| 1389 | DCA M |
| 1390 | DCA CFLG /V3C |
| 1391 | PUSHJ /CHRL DOES A "GETN" |
| 1392 | CHRL /TO GET THE DEFAULT VALUES OF N |
| 1393 | TAD P |
| 1394 | DCA N |
| 1395 | TAD M |
| 1396 | DCA P |
| 1397 | MFROMN, DCA NFLG /CLEAR NFLG IN CASE COMMA FLAG WAS ON |
| 1398 | CLL /M AND N ARE KNOWN TO BE 12-BITS LONG |
| 1399 | /AND POSITIVE |
| 1400 | TAD N |
| 1401 | BZCHK /IS N OK? |
| 1402 | CMA CLL /YES - COMPUTE N-M |
| 1403 | TAD M /BY COMPUTING M-N-1 |
| 1404 | CMA /AND COMPLEMENTING IT |
| 1405 | SNL /IS M>N? |
| 1406 | JMP I NLINES /NO - RETURN N-M |
| 1407 | TAD M /N-M+M=N NOW IN AC. |
| 1408 | DCA CPCT /INTERCHANGE M AND N |
| 1409 | TAD M |
| 1410 | DCA N |
| 1411 | TAD CPCT |
| 1412 | DCA M |
| 1413 | JMP MFROMN |
| 1414 | \f/COMMANDS ; < AND > |
| 1415 | |
| 1416 | CFSI, TAD ITRST |
| 1417 | SNA CLA |
| 1418 | ERR24, ERR /FAILING SEARCH NOT IN ITERATION |
| 1419 | CSEM, OVRLAY |
| 1420 | QOVRLY |
| 1421 | CSEMO |
| 1422 | \f/ ^A ROUTINE |
| 1423 | |
| 1424 | CTLA, TAD KTYPE |
| 1425 | CEXP, DCA WHERTO |
| 1426 | TAD CHAR |
| 1427 | DCA QUOTE /TERMINATING CHAR SAME AS COMMAND CHAR |
| 1428 | DCA NFLG /KILL NUMBER IF PRESENT |
| 1429 | CTLALP, QUOTST |
| 1430 | JMP I [IREST |
| 1431 | WHERTO, 0 /TYPE OR IGNORE THE CHARACTER |
| 1432 | CLA |
| 1433 | JMP CTLALP |
| 1434 | PAGE |
| 1435 | \f/COMMANDS A AND Y |
| 1436 | |
| 1437 | CHRA, NCHK /COMMAND A |
| 1438 | JMP CHAA |
| 1439 | GETNUM |
| 1440 | TAD P |
| 1441 | DCA R |
| 1442 | SZL |
| 1443 | JMP I (ERR11 /ERROR IF POINTER OFF PAGE |
| 1444 | CDF 10 |
| 1445 | TAD R |
| 1446 | CMA CLL |
| 1447 | TAD ZZ /RETURN 'POP' IF POINTER OUTSIDE RANGE [0,Z-1] |
| 1448 | SNL CLA /OTHERWISE VALUE OF CHARACTER AT POINTER POSITION |
| 1449 | JMP I (ERR11 /POP |
| 1450 | TAD I R |
| 1451 | AND [377 |
| 1452 | CDF 0 |
| 1453 | NCOM14, CLL |
| 1454 | JMP I (NCOM |
| 1455 | \fCHRY, TAD NFLG |
| 1456 | SZA CLA |
| 1457 | ERR18, ERR /NUMERIC ARGUMENT TO Y |
| 1458 | TAD OUTR |
| 1459 | CIA |
| 1460 | TAD ERROR |
| 1461 | SZA CLA |
| 1462 | TAD ZZ |
| 1463 | YSKP, SZA CLA /CHANGE TO SKP CLA TO NEVER ABORT Y COMMAND |
| 1464 | ERR32, ERR /Y COMMAND ABORTED |
| 1465 | DCA ZZ |
| 1466 | DCA P /WIPE OUT THE BUFFER |
| 1467 | CHAA, TAD (ZMAX-1 |
| 1468 | AND REND |
| 1469 | CIA CLL |
| 1470 | TAD ZZ /IF WE HAVE ALREADY SEEN THE INPUT EOF, |
| 1471 | SZL CLA /OR IF WE'RE ALREADY FULL (OR NEARLY SO) |
| 1472 | JMP APLF /GET OUT |
| 1473 | DECGET, ISZ ICRCNT |
| 1474 | JMP I2 /NO NEED TO READ |
| 1475 | CLL |
| 1476 | TAD INRSIZ |
| 1477 | TAD INRCNT |
| 1478 | STECO1, SNL /"SKP!CLA" FOR SUPERTECO |
| 1479 | DCA INRCNT /UPDATE RECORD COUNT |
| 1480 | LFTAB, CLL CML CMA RTR /IF WE OVERFLOWED THE END OF THE FILE, ! |
| 1481 | RTR /5 ENTRY TABLE: MUST BE - - - + + ! |
| 1482 | RTR /SHORTEN THE READ BY THE CORRECT AMOUNT ! |
| 1483 | TAD INCTLW / ! |
| 1484 | DCA INCTRL /SO THAT WE WILL NOT READ TOO FAR ! |
| 1485 | JMS I INHND |
| 1486 | I3, |
| 1487 | INCTRL, 0400 |
| 1488 | BUFIN, IN /6200 IF 8K, 5600 IF 12K |
| 1489 | IBLK, 0 |
| 1490 | SMA CLA |
| 1491 | SKP |
| 1492 | JMP INER /IGNORE END-OF-FILE ERRORS, WE'LL SEE THE ^Z. |
| 1493 | TAD IBLK |
| 1494 | TAD INRSIZ /BUMP RECORD NUMBER BY THE MAXIMUM NUMBER |
| 1495 | DCA IBLK /(IF WE READ SHORT ITS THE LAST ONE ANYWAY) |
| 1496 | CLA CMA |
| 1497 | TAD BUFIN |
| 1498 | DCA INXR /SET UP INPUT XR |
| 1499 | TAD INPCNT |
| 1500 | DCA ICRCNT |
| 1501 | MTHREE |
| 1502 | DCA I3 |
| 1503 | I2, NOP /CDF 20 IF 12K |
| 1504 | ISZ I3 |
| 1505 | JMP I1 /NORMAL CHARACTER |
| 1506 | MTHREE /WEIRD CHARACTER-RESET SWITCH |
| 1507 | DCA I3 |
| 1508 | MTWO |
| 1509 | TAD INXR |
| 1510 | DCA INXR /MOVE INPUT XR BACK TO BEGINNING OF DBLWORD |
| 1511 | TAD I INXR |
| 1512 | AND [7400 |
| 1513 | DCA FFFLAG /TEMP |
| 1514 | TAD I INXR |
| 1515 | AND [7400 |
| 1516 | CLL RTR |
| 1517 | RTR |
| 1518 | TAD FFFLAG |
| 1519 | CLL RTR |
| 1520 | RTR |
| 1521 | SKP |
| 1522 | I1, TAD I INXR |
| 1523 | IC, NOP /CDF 0 IF 12K |
| 1524 | AND [177 /MASK OFF GARBAGE |
| 1525 | /INPUT CHARACTER IN AC |
| 1526 | SZA |
| 1527 | TAD (-177 |
| 1528 | SNA /IGNORE BLANK TAPE AND RUBOUTS |
| 1529 | JMP DECGET |
| 1530 | TAD (177-32 |
| 1531 | STECO2, SNA /"SKP" FOR SUPERTECO |
| 1532 | JMP APFS /IT'S A ^Z |
| 1533 | TAD (16 |
| 1534 | SNA |
| 1535 | JMP APFF /ITS A FORM FEED |
| 1536 | TAD CAFF /RESTORE CHAR |
| 1537 | CDF 10 |
| 1538 | DCA MQ /SAVE CHAR |
| 1539 | TAD I ZZ /PROTECT HIGH- |
| 1540 | AND [7400 /ORDER BITS |
| 1541 | TAD MQ /OF TARGET |
| 1542 | DCA I ZZ /STORE CHAR IN BUFFER |
| 1543 | TAD MQ |
| 1544 | CDF 0 |
| 1545 | ISZ ZZ |
| 1546 | TAD [-12 |
| 1547 | SNA CLA /IF THE CHAR IS A LINE FEED, |
| 1548 | TAD (-310 /CHECK THAT THE BUFFER IS NOT NEARLY FULL |
| 1549 | JMP CHAA |
| 1550 | APFS, DCA REND /SIGNAL END OF FILE |
| 1551 | SKP |
| 1552 | APFF, STA |
| 1553 | APLF, DCA FFFLAG /SET FORM FEED FLAG |
| 1554 | POPJ |
| 1555 | \fINER, DCA REND /INHIBIT FUTURE INPUTS |
| 1556 | ERR15, ERR |
| 1557 | |
| 1558 | INCTLW, 401 /1021 IF 12K MACHINE |
| 1559 | INPCNT, 6400 /5000 IF 12K MACHINE |
| 1560 | PAGE |
| 1561 | \f/TELETYPE ROUTINES |
| 1562 | |
| 1563 | TYPCTV, 0 /TELETYPE STUFFER |
| 1564 | SORT |
| 1565 | CTLBEL |
| 1566 | CTLTAB-CTLBEL |
| 1567 | DCA SCHAR /STORE (POSSIBLY TRANSLATED) CHAR |
| 1568 | OUTCC, TAD SCHAR |
| 1569 | ISZ COLCT /BUMP COLUMN COUNTER |
| 1570 | AND [7740 |
| 1571 | SZA CLA /IS THE CHAR A CONTROL CHARACTER? |
| 1572 | JMP NOCON /NO |
| 1573 | TAD (136 |
| 1574 | PUTT /OUTPUT "^" |
| 1575 | ISZ COLCT |
| 1576 | TAD [100 |
| 1577 | OUTLF, TAD SCHAR |
| 1578 | OUTLF1, PUTT |
| 1579 | JMP I TYPCTV |
| 1580 | \fCOLCT, 0 |
| 1581 | |
| 1582 | OUTCR, DCA COLCT /RESET CHAR COUNT |
| 1583 | JMP OUTLF |
| 1584 | OUTVT, TAD [4 |
| 1585 | OUTFF, TAD [7770 /FORM FEED IS 8 LINE FEEDS, VERT TAB IS 4 |
| 1586 | DCA COLCT /*** BUG |
| 1587 | ASR33, TAD CALF /SIMULATE FORMFEEDS AND VERT TABS WITH LINEFEEDS |
| 1588 | JMP OUTCOM /*K* 8 LOCS AT ASR33 OVERLAYED BY ASR35 CODE |
| 1589 | |
| 1590 | OUTHT, TAD COLCT /COLUMN COUNTER, MOD 8 |
| 1591 | AND [7 |
| 1592 | TAD [7770 /SIMULATE TABS WITH SPACES |
| 1593 | DCA COLCT |
| 1594 | 40 /TAKE UP SPACE SO ASR-35 ROUTINE WILL JUST FIT |
| 1595 | TAD .-1 /USE SPACES FOR TABS |
| 1596 | OUTCOM, PUTT /PUT ONE OUT THE |
| 1597 | ISZ COLCT /WINDOW |
| 1598 | JMP I (TPUTX /STILL MORE INSIDE |
| 1599 | JMP I TYPCTV |
| 1600 | |
| 1601 | NOCON, TAD SCHAR |
| 1602 | AND [100 |
| 1603 | EU1, SNA CLA /*EU SET TO CLA IF EUFLAG < 0 (NO CASE FLAGGING) |
| 1604 | JMP OUTLF /NOT ALPHANUMERIC |
| 1605 | EU2, NOP /*EU SET TO TAD [40 IF EUFLAG>0 (FLAG UPPER CASE) |
| 1606 | TAD SCHAR |
| 1607 | AND [40 |
| 1608 | SNA CLA |
| 1609 | JMP OUTLF |
| 1610 | TAD SQUO |
| 1611 | PUTT |
| 1612 | ISZ COLCT |
| 1613 | TAD SCHAR |
| 1614 | AND [137 |
| 1615 | JMP OUTLF1 /OUTPUT UPPER CASE VERSION |
| 1616 | |
| 1617 | OUTBEL, TAD SCHAR |
| 1618 | PUTT |
| 1619 | JMP OUTCC |
| 1620 | \f /ROUTINE TO MANIPULATE Q-REGISTER STORAGE |
| 1621 | |
| 1622 | /*** ALLOW : TO MEAN APPEND TO Q-REGISTER |
| 1623 | /APPLIES TO X AND ^U COMMANDS |
| 1624 | /MAKE SURE CMD LINE AND ^S ZERO CLNF |
| 1625 | |
| 1626 | QADJ, 0 |
| 1627 | SPA |
| 1628 | JMP ERR12 /STRING TOO LONG FOR Q-REGISTER |
| 1629 | DCA MQ /SAVE NEW LENGTH OF Q-REGISTER |
| 1630 | QSUM /COMPUTE POINTER TO CURRENT Q-REGISTER |
| 1631 | AC3777 |
| 1632 | AND I QPTR |
| 1633 | TAD QP |
| 1634 | DCA R |
| 1635 | AC3777 |
| 1636 | AND I QPTR /GET ITS CURRENT LENGTH |
| 1637 | CIA CLL |
| 1638 | TAD MQ /COMPUTE DIFFERENCE |
| 1639 | SNL /ADJUST Q-REGS |
| 1640 | JMP QDNN /TO HOLD NEW STRING |
| 1641 | SNA /CHECK FOR ZERO |
| 1642 | JMP QADJDN /NOTHING TO DO |
| 1643 | TAD QZ /MOVE Q-REGISTERS UP TO INSERT CHARS |
| 1644 | DCA QP /(LINK IS 1 FROM PREVIOUS SNL) |
| 1645 | TAD QP |
| 1646 | TAD MQMAX /SEE IF OUT OF BOUNDS |
| 1647 | SNL CLA /TWO PLACES TO TOGGLE LINK THERE |
| 1648 | ERR12, ERR /GETTING TOO FULL |
| 1649 | TAD QZ |
| 1650 | DCA Q |
| 1651 | TAD QP |
| 1652 | DCA QZ |
| 1653 | ISZ QP |
| 1654 | QUPL, TAD Q |
| 1655 | CIA |
| 1656 | SQUO, TAD R /DOUBLES AS ASCII FOR ' |
| 1657 | SNA CLA |
| 1658 | JMP QADJDN |
| 1659 | CMA |
| 1660 | TAD Q |
| 1661 | DCA Q |
| 1662 | MTWO |
| 1663 | TAD QP |
| 1664 | DCA QP |
| 1665 | TAD Q |
| 1666 | GETQ |
| 1667 | QPUT |
| 1668 | JMP QUPL |
| 1669 | \fQDNN, TAD R /MOVE Q-REGS DOWN TO ABSORB CHARACTERS |
| 1670 | DCA QP |
| 1671 | QDNN1, TAD QZ |
| 1672 | CIA |
| 1673 | TAD R /-NUMBER OF CHARS TO MOVE |
| 1674 | SNA CLA /DONE? |
| 1675 | JMP QDNNF /YES |
| 1676 | TAD R |
| 1677 | GETQ |
| 1678 | QPUT |
| 1679 | ISZ R |
| 1680 | JMP QDNN1 /LOOP AGAIN |
| 1681 | QDNNF, TAD QP /SET NEW VALUE |
| 1682 | DCA QZ /OF HIGHEST CHAR |
| 1683 | QADJDN, STL CLA RAR /4000 |
| 1684 | AND I QPTR /SAVE HIGH ORDER PART |
| 1685 | TAD MQ |
| 1686 | DCA I QPTR /SAVE NEW LENGTH OF Q-REGISTER IN Q-REG TABLE |
| 1687 | TAD QCMND /SET UP COMMAND LINE AGAIN |
| 1688 | SETCMD /AS IT MAY HAVE BEEN SHUFFLED. |
| 1689 | QSUM /RECOMPUTE POINTER TO BEGINNING OF NEW Q-REG |
| 1690 | JMP I QADJ |
| 1691 | |
| 1692 | MQMAX, -QMAX |
| 1693 | |
| 1694 | QOVER, 0 /SUBROUTINE TO SKIP TO END OF STRING |
| 1695 | QCHK /GET THE QUOTE CHARACTER (IF ANY) |
| 1696 | TAD SCANP |
| 1697 | DCA OSCANP /SAVE BACKUP SCAN POINTER |
| 1698 | QOVERL, QUOTST |
| 1699 | JMP I QOVER /FOUND AN ALTM OR EQUIVALENT - RETURN |
| 1700 | JMP QOVERL /NOT END - SKIP ANOTHER CHAR |
| 1701 | PAGE |
| 1702 | \f /Q-REGISTER SUBROUTINES |
| 1703 | |
| 1704 | QSUMR, 0 /COMPUTE POINTER TO Q-REG |
| 1705 | SNA |
| 1706 | TAD QNMBR /NORMALLY USES QNMBR, BUT CAN BE OVERRIDDEN BY AC |
| 1707 | CIA |
| 1708 | DCA QKNT |
| 1709 | DCA QP |
| 1710 | TAD (QARRAY /BASE ADDR OF Q-REG POINTERS |
| 1711 | DCA QPTR |
| 1712 | JMP QSUMB |
| 1713 | QSUML, AC3777 |
| 1714 | AND I QPTR /ADD # OF CHARS IN LOWER REG |
| 1715 | TAD QP |
| 1716 | DCA QP |
| 1717 | ISZ QPTR /SKIP VALUE WORD |
| 1718 | ISZ QPTR /POINT TO NEXT Q-REG |
| 1719 | QSUMB, ISZ QKNT /REACHED OUR Q-REGISTER YET? |
| 1720 | JMP QSUML /NO - ADD IN ANOTHER |
| 1721 | JMP I QSUMR |
| 1722 | QKNT, 0 |
| 1723 | \fSGET, 0 /SCAN COMMAND LINE OR MACRO |
| 1724 | SGET1, CLA /** CALLED WITH AC NON-ZERO ** |
| 1725 | TAD QLENGT |
| 1726 | CIA CLL |
| 1727 | TAD SCANP |
| 1728 | SZL CLA /CHECK THAT WE ARE STILL INSIDE THE COMMAND LINE |
| 1729 | JMP SGOVFL /NO - COMMAND DONE |
| 1730 | TAD SCANP /GET CHARACTER POSITION IN LINE |
| 1731 | TAD QBASE /ADD IT TO THE ADDRESS OF THE LINE |
| 1732 | GETQ /AND GET THAT CHARACTER. |
| 1733 | DCA LASTC |
| 1734 | TAD TFLG |
| 1735 | AND LASTC /IF THE TRACE FLAG IS ON, |
| 1736 | SZA |
| 1737 | TYPE /PRINT THE CHAR |
| 1738 | TAD LASTC |
| 1739 | ISZ SCANP /INCREMENT CHARACTER POINTER AFTER FETCH |
| 1740 | JMP I SGET /RETURN |
| 1741 | SGOVFL, TAD MPDL /"MPDL" IS THE PUSHDOWN POINTER ON ENTRY TO THIS |
| 1742 | SNA /MACRO. IF IT IS 0, WE ARE NOT IN A MACRO |
| 1743 | JMP I (T1 /SO RETURN TO THE USER |
| 1744 | TAD PDLP /CHECK THAT THE ENDING POINTER IS THE SAME |
| 1745 | IAC |
| 1746 | SZA CLA /AS THE ENTRY ONE - OTHERWISE WE HAVE |
| 1747 | ERR13, ERR /SCREWED UP SOMEHOW (EG WE ARE |
| 1748 | POP / IN THE MIDDLE OF A COMMAND) |
| 1749 | DCA SCANP |
| 1750 | POP |
| 1751 | DCA ITRST |
| 1752 | POP /RESTORE THE PREVIOUS VALUES OF |
| 1753 | DCA MPDL /MPDL, THE SCAN POINTER AND THE COMMAND LINE |
| 1754 | POP /POINTER FROM THE PUSHDOWN LIST |
| 1755 | SETCMD |
| 1756 | JMP SGET1 /AND FETCH A CHARACTER FROM THE UPPER LEVEL. |
| 1757 | \fCMDSET, 0 /SUBROUTINE TO SET UP COMMAND LINE POINTERS |
| 1758 | DCA QCMND /STORE IN COMMAND LINE NUMBER |
| 1759 | TAD QCMND |
| 1760 | QSUM |
| 1761 | TAD QP /GET FIRST LOCATION IN COMMAND LINE |
| 1762 | DCA QBASE /AND STORE IN "QBASE" |
| 1763 | AC3777 |
| 1764 | AND I QPTR |
| 1765 | DCA QLENGT /STORE THE LINE LENGTH IN "QLENGT" |
| 1766 | JMP I CMDSET /RETURN |
| 1767 | |
| 1768 | QREFER, 0 /SET UP POINTERS FOR Q-REG REFERENCE |
| 1769 | SZA |
| 1770 | JMP QREFEX /AHA - WE ALREADY HAVE THE Q-REGISTER |
| 1771 | SCANUP /GET Q-REGISTER IDENTIFIER |
| 1772 | DCA QNMBR |
| 1773 | TAD QNMBR |
| 1774 | TSTSEP /TEST FOR ALPHANUMERIC (LOWER CASE LEGAL) |
| 1775 | ERR03, ERR /OOPS - BAD Q-REGISTER REFERENCE |
| 1776 | TAD QNMBR |
| 1777 | TAD [7700 |
| 1778 | SPA /NUMERIC? |
| 1779 | TAD Z7 /YES - FORCE NUMBERS UP TO ABUT LETTERS |
| 1780 | TAD CALF /FORCE IDENTIFIER INTO THE RANGE 1-44 (OCTAL) |
| 1781 | QREFEX, DCA QNMBR /STORE AWAY NUMBER FOR FURTHER REFERENCE |
| 1782 | QSUM /COMPUTE QP AND QPTR |
| 1783 | JMP I QREFER /RETURN |
| 1784 | |
| 1785 | CDBQ, OVRLAY |
| 1786 | QOVRLY /READ IN Q-OVERLAY |
| 1787 | CDBQO |
| 1788 | |
| 1789 | CHRO, OVRLAY /READ IN Q-OVERLAY |
| 1790 | QOVRLY |
| 1791 | CHROO |
| 1792 | \fOVERLY, 0 |
| 1793 | TAD I OVERLY /GET LOCATION TO CHECK |
| 1794 | ISZ OVERLY |
| 1795 | DCA TMP |
| 1796 | TAD I OVERLY |
| 1797 | DCA OVERLY /SET RETURN ADDRESS |
| 1798 | TAD I TMP /IS OUR OVERLAY IN CORE? |
| 1799 | SNA |
| 1800 | JMP I OVERLY /YES, BRANCH INTO IT |
| 1801 | DCA TMP /NO, SET BLOCK TO READ IN |
| 1802 | /** THE NEXT 5 WORDS ARE MODIFIED IF WE HAVE MORE THAN 12K |
| 1803 | OVREAD, JMS I (7607 /CALL SYSTEM HANDLER |
| 1804 | 0200 /READ 2 PAGES |
| 1805 | 3200 /INTO 3200 |
| 1806 | TMP, 0 /FROM THIS BLOCK |
| 1807 | HLT /ERROR READING OVERLAY |
| 1808 | JMP I OVERLY /GO TO NEXT SPOT |
| 1809 | |
| 1810 | CTLTAB, OUTBEL /BELL |
| 1811 | OUTCR |
| 1812 | POUTHT, OUTHT |
| 1813 | 4044 /$ WITH SIGN BIT ON |
| 1814 | OUTFF |
| 1815 | OUTVT |
| 1816 | OUTLF |
| 1817 | |
| 1818 | ALTTAB, 4033 |
| 1819 | 4033 /ALTMODE WITH SIGN BIT ON |
| 1820 | |
| 1821 | CATS, STA /@ COMMAND - FAKE OUT "IREST" |
| 1822 | IREST, DCA QFLG /RESET QUOTED STRING FLAG |
| 1823 | TAD CAAM |
| 1824 | DCA QUOTE /RESET QUOTE CHAR TO ALTMODE |
| 1825 | POPK, POPJ /RETURN |
| 1826 | |
| 1827 | QTST, 0 /SUBROUTINE TO GET A CHAR AND TEST FOR ALTMODE |
| 1828 | SCAN |
| 1829 | SORT |
| 1830 | QUOTE |
| 1831 | QTST-QUOTE /RETURN IF QUOTE FOUND |
| 1832 | ISZ QTST |
| 1833 | JMP I QTST /SKIP-RETURN WITH AC INTACT IF NOT FOUND |
| 1834 | \f /COMMANDS ^U AND E - ALSO ERROR ROUTINE |
| 1835 | |
| 1836 | CTLU, OVRLAY |
| 1837 | FOVRLY |
| 1838 | CTLUO |
| 1839 | PAGE |
| 1840 | \fERRXX, ERR30+1 /ENTRY POINT ALSO SERVES AS A FLAG FOR "TQMK" |
| 1841 | KCC /CLEARS AC |
| 1842 | CDF 0 /JUST IN CASE |
| 1843 | TAD I ERRXX /GRAB SIGNAL '0' NOW |
| 1844 | DCA ERRTMP /BEFORE OVERLAY MIGHT DESTROY IT |
| 1845 | OVRLAY /GO TO ERROR OVERLAY |
| 1846 | EOVRLY |
| 1847 | ERRYY |
| 1848 | |
| 1849 | ERRRET, TAD ERRTMP /GET THE LOCATION AFTER THE CALL |
| 1850 | SNA CLA /IF IT'S ZERO AND WE WERE CHAINED TO, |
| 1851 | CHOOPS, NOP /ITS A FATAL ERROR - JMP CTLC |
| 1852 | FATALJ= JMP I (CTLC |
| 1853 | CTRLP, TAD SCANP |
| 1854 | CIA |
| 1855 | DCA ERRXX /SET ERRXX TO CHAR POSITION OF ERROR CHAR. |
| 1856 | KCC /ZAP KEYBOARD FLAG |
| 1857 | JMP I (T0 /CONTINUE AS NORMAL UNLESS USER TYPES "?" |
| 1858 | |
| 1859 | CHRE, SCANUP /COMMAND E |
| 1860 | DCA TYI |
| 1861 | TAD TYI |
| 1862 | SORT |
| 1863 | EFLST |
| 1864 | EFTAB-EFLST |
| 1865 | CLA |
| 1866 | OVRLAY |
| 1867 | FOVRLY |
| 1868 | CHRED |
| 1869 | ERRTMP, 0 /MUST BE INITIALLY 0 |
| 1870 | \f /COMMANDS I AND <TAB> |
| 1871 | |
| 1872 | CHRI, NCHK /I COMMAND |
| 1873 | JMP CIL1 |
| 1874 | TAD N /INSERT CHAR WHOSE VALUE IS N |
| 1875 | JMS UPOC |
| 1876 | /*** CHECK FOR $ |
| 1877 | POPJ |
| 1878 | CTLI, DCA QFLG /CANNOT BE QUOTED |
| 1879 | / CLA CMA /FOR TAB INSERT |
| 1880 | / TAD SCANP |
| 1881 | / DCA SCANP /BACK UP SCAN POINTER BY ONE |
| 1882 | / /*** THIS IS A BUG |
| 1883 | TAD CAHT /TAB |
| 1884 | JMS UPOC |
| 1885 | CIL1, QSKP /COUNT LENGTH OF INSERTION |
| 1886 | DCA DVT1 /ZERO FUDGE USED BY FS COMMAND |
| 1887 | CIL2, TAD OSCANP |
| 1888 | TAD QBASE |
| 1889 | DCA QP /SET UP POINTER TO INSERTION STRING |
| 1890 | TAD SCANP |
| 1891 | CIA CLL |
| 1892 | TAD OSCANP |
| 1893 | DCA MQ /STORE CHAR COUNT TO INSERT (-1) |
| 1894 | TAD MQ |
| 1895 | TAD DVT1 /ADD FS FUDGE |
| 1896 | CMA |
| 1897 | SNL /DID WE INSERT MORE THAN WE DELETED? |
| 1898 | JMP EXPAND /YES - IGNORE SIGN BIT OF COUNT |
| 1899 | CIA |
| 1900 | PUSHJ |
| 1901 | ADJ2 /COMPRESS OUT EXCESS DELETED STUFF |
| 1902 | JMP CIL4 |
| 1903 | CIL3, TAD QP |
| 1904 | GETQ /GET A CHAR |
| 1905 | DCA TYI |
| 1906 | JMS STOREC /STORE A CHARACTER |
| 1907 | ISZ QP |
| 1908 | CIL4, ISZ MQ |
| 1909 | JMP CIL3 /OF INSERTION |
| 1910 | JMP I [IREST |
| 1911 | |
| 1912 | STOREC, 0 /STORE CHAR IN "TYI" INTO TEXT BUFFER AT P |
| 1913 | CDF 10 |
| 1914 | TAD I P |
| 1915 | AND [7400 |
| 1916 | TAD TYI |
| 1917 | DCA I P |
| 1918 | CDF 0 |
| 1919 | ISZ P |
| 1920 | JMP I STOREC |
| 1921 | \f/G COMMAND |
| 1922 | |
| 1923 | CHRG, QREF /G COMMAND - GET Q-REGISTER NUMBER |
| 1924 | DCA NFLG |
| 1925 | AC3777 |
| 1926 | AND I QPTR /GET COUNT OF CHARS IN REGISTER |
| 1927 | CMA |
| 1928 | DCA MQ /SAVE AS TRANSFER COUNT |
| 1929 | ISZ CLNF |
| 1930 | SKP |
| 1931 | JMP COLG4 |
| 1932 | DCA CLNF |
| 1933 | AC3777 |
| 1934 | AND I QPTR |
| 1935 | EXPAND, PUSHJ /COME HERE FROM INSERT LOGIC |
| 1936 | ADJ /INCREASE TEXT BUFFER SIZE ( Q-REG LENGTH MAY |
| 1937 | JMP CIL4 /BE NEGATIVE) AND GO TRANSFER THE CHARS |
| 1938 | |
| 1939 | TYI, 0 /TELETYPE INPUT |
| 1940 | TYI1, KSF /WAIT FOR THE KEYBOARD FLAG |
| 1941 | KSFWT, JMP .-1 /WHILE WAITING, DISPLAY TEXT ON SCOPE |
| 1942 | CTCCHK /CHECK FOR ^C |
| 1943 | KRB /WATCH OUT - AC MAY NOT BE 0! |
| 1944 | AND [177 |
| 1945 | SNA |
| 1946 | JMP TYI1 /IGNORE NULL CHARS AND LEADER |
| 1947 | SORT |
| 1948 | ALTLST |
| 1949 | ALTTAB-ALTLST /LOOK FOR NON-STANDARD ALTMODES |
| 1950 | AND [177 /IN CASE WE RETURNED A NEGATIVE VALUE |
| 1951 | JMP I TYI |
| 1952 | |
| 1953 | UPOC, 0 /MOVE TEXT BUFFER UP ONE CHAR |
| 1954 | AND [177 |
| 1955 | DCA TYI |
| 1956 | CLA IAC |
| 1957 | PUSHJ |
| 1958 | ADJ |
| 1959 | JMS STOREC /STORE CHAR IN THE HOLE WE MADE |
| 1960 | JMP I UPOC |
| 1961 | |
| 1962 | CUPPER, 0 /FORCE CHARACTER TO UPPER CASE |
| 1963 | TAD [-100 |
| 1964 | SMA /IF ITS >100 |
| 1965 | AND (37 /REDUCE IT TO BE <140 |
| 1966 | TAD [100 |
| 1967 | JMP I CUPPER /RETURN |
| 1968 | \fCOLG3, TAD QP |
| 1969 | GETQ /GET A CHAR |
| 1970 | TYPE |
| 1971 | ISZ QP |
| 1972 | COLG4, ISZ MQ |
| 1973 | JMP COLG3 |
| 1974 | POPJ |
| 1975 | \fESCAPE, 0 |
| 1976 | TAD CAAM /TYPE ESCAPE |
| 1977 | PUTT |
| 1978 | TAD I ESCAPE |
| 1979 | PUTT /TYPE ARGUMENT |
| 1980 | JMP I ESCAPE /OK TO RETURN TO ARGUMENT |
| 1981 | PAGE |
| 1982 | \fTSAVE, TAD I [QPNTR |
| 1983 | SZA CLA /IF WE ARE NOT AT THE BEGINNING OF THE C.L. |
| 1984 | RESORT /TREAT THIS LIKE ANY OTHER ^S |
| 1985 | MTWO /DROP OFF THE TWO BELLS OR ALTMODES |
| 1986 | TAD OCMDLN |
| 1987 | ADJQ /SET COMMAND STRING LENGTH TO OLD VALUE |
| 1988 | TAD L44 |
| 1989 | QREF /SET UP POINTERS TO Q-REG Z |
| 1990 | ADJQ /KILL CONTENTS OF Q-REG Z |
| 1991 | TAD I [QPNTR |
| 1992 | DCA I (QPNTR-2 |
| 1993 | DCA I [QPNTR /DO A QUICK SHUFFLE OF Q-REG LENGTHS |
| 1994 | JMP I (TCTLU |
| 1995 | \fCHRQ, QREF /COMMAND Q |
| 1996 | CLL |
| 1997 | JMP CQOA |
| 1998 | |
| 1999 | CPCS, QREF /COMMAND % |
| 2000 | GETN |
| 2001 | CQOA, ISZ QPTR /POINT TO VALUE WORD |
| 2002 | TAD I QPTR /INCREMENT VALUE BY ARGUMENT |
| 2003 | DCA I QPTR |
| 2004 | /ADD LINKS |
| 2005 | STA |
| 2006 | TAD QPTR /GO BACK ONE |
| 2007 | DCA QPTR2 /ALSO COMPL LINK |
| 2008 | CML RAR |
| 2009 | TAD I QPTR2 |
| 2010 | DCA I QPTR2 |
| 2011 | TAD I QPTR2 |
| 2012 | RAL |
| 2013 | CLA |
| 2014 | TAD I QPTR |
| 2015 | JMP I (NCOM /MAKE A NUMBER |
| 2016 | |
| 2017 | TYCRLF, 0 /TYPE A CR AND LF |
| 2018 | TAD CACR /CR |
| 2019 | XTYPE, TYPE |
| 2020 | TAD CALF /LF |
| 2021 | TYPE |
| 2022 | JMP I TYCRLF /RETURN |
| 2023 | |
| 2024 | QPTR2, 0 |
| 2025 | |
| 2026 | CHGT, OVRLAY |
| 2027 | QOVRLY |
| 2028 | CHGTO |
| 2029 | CHLT, OVRLAY |
| 2030 | QOVRLY |
| 2031 | CHLTO |
| 2032 | \fCCMA, NCHK /COMMAND , |
| 2033 | JMP NERR /NUMBER FLAG NOT SET |
| 2034 | TAD NLINK |
| 2035 | SZA CLA |
| 2036 | ERR26, ERR /NEG ARGUMENT TO , |
| 2037 | ISZ CFLG |
| 2038 | SKP |
| 2039 | JMP NERR /3 NUMERIC ARGUMENTS |
| 2040 | TAD N /MOVE N TO M |
| 2041 | CCMA3, DCA M /ENTERED HERE BY "H" COMMAND |
| 2042 | DCA N /AND CLEAR N |
| 2043 | STA |
| 2044 | DCA CFLG /SET COMMA FLAG |
| 2045 | POPJ |
| 2046 | \f/RETURNS 13-BIT RESULT IN AC,LINK |
| 2047 | |
| 2048 | NGET, 0 /SUBROUTINE TO GET LAST NUMBER, WITH |
| 2049 | NGET1, NCHK /DEFAULT VALUES OF +1 (NO NUMBER), |
| 2050 | JMP NGET2 /OR -1 (JUST A MINUS SIGN) |
| 2051 | GETNUM |
| 2052 | JMP I NGET /DIGITS SEEN - RETURN THEM |
| 2053 | NGET2, CLA CLL IAC /NO DIGITS SEEN |
| 2054 | PUSHJ /MAKE BELIEVE WE SAW THE DIGIT "1" |
| 2055 | NCOM /AND CREATE A NUMBER FROM IT (TAKING ANY |
| 2056 | JMP NGET1 /OPERATORS INTO ACCOUNT) AND USE IT |
| 2057 | |
| 2058 | BACKUP, 0 |
| 2059 | TAD I [QPNTR /SEE IF ANYTHING TO ERASE |
| 2060 | SNA CLA |
| 2061 | JMP I (T0 /NO, START ALL OVER |
| 2062 | STA |
| 2063 | TAD I [QPNTR /THEN THE CHARACTER COUNT |
| 2064 | ADJQ /REDUCE THE LENGTH OF THE COMMAND REGISTER BY 1 |
| 2065 | TAD QZ |
| 2066 | GETQ /GET THE CHARACTER WE RUBBED OUT |
| 2067 | JMP I BACKUP |
| 2068 | |
| 2069 | CHLCMP, 0 /COMPARISON SUBROUTINE |
| 2070 | TAD I P /DATA FIELD IS 10 |
| 2071 | AND [377 |
| 2072 | CDF 0 |
| 2073 | SORT |
| 2074 | CAFF |
| 2075 | LFTAB-CAFF |
| 2076 | SPA CLA /LINE TERMINATORS ARE CHANGED TO NEGATIVE NOS. |
| 2077 | ISZ CDT /IS COUNT EXHAUSTED? |
| 2078 | JMP CHLRET /NO |
| 2079 | CHRLI, ISZ P |
| 2080 | L44, 44 |
| 2081 | CDF 0 |
| 2082 | POPJ |
| 2083 | |
| 2084 | CHRH, PUSHJ /COMMAND H |
| 2085 | CCMA3 /SET M=0 AND COMMA FLAG ON AND FALL INTO "Z" |
| 2086 | /** COULD CAUSE ERROR ON B AND H IF NFLG SET |
| 2087 | CHRZ, TAD ZZ /COMMAND Z |
| 2088 | CTLH, /^H COMMAND - TIME OF DAY - NOT IMPLEMENTED |
| 2089 | CHRB, JMP I (NCOM14 /COMMAND B |
| 2090 | |
| 2091 | CHLRET, CDF 10 |
| 2092 | JMP I CHLCMP |
| 2093 | \fEFTAB, IOV |
| 2094 | XOV |
| 2095 | XOV |
| 2096 | XOV |
| 2097 | XOV |
| 2098 | IOV |
| 2099 | IOV |
| 2100 | XOV |
| 2101 | \fXOV, OVRLAY |
| 2102 | XOVRLY |
| 2103 | CHREX |
| 2104 | |
| 2105 | IOV, OVRLAY |
| 2106 | IOVRLY |
| 2107 | CHRER |
| 2108 | \f/COMMANDS = AND \ DISPATCHER TO OVERLAY |
| 2109 | |
| 2110 | CEQL, OVRLAY |
| 2111 | FOVRLY |
| 2112 | CEQLO |
| 2113 | CBSL, OVRLAY |
| 2114 | FOVRLY |
| 2115 | CBSLO |
| 2116 | |
| 2117 | ZROSPN, DCA SCANP /RESET TO BEGINNING OF ITERATION |
| 2118 | ZRON, DCA NFLG /KILL NUMBER FLAG |
| 2119 | JMP I [IREST |
| 2120 | PAGE |
| 2121 | \f/ I/O-OVERLAY |
| 2122 | |
| 2123 | / IOVRLY XOVRLY FOVRLY |
| 2124 | / ER EF EU |
| 2125 | / EB EC ES |
| 2126 | / EW EX ET |
| 2127 | / EG EV |
| 2128 | / EH |
| 2129 | / EO |
| 2130 | |
| 2131 | *3200 |
| 2132 | |
| 2133 | IOVRLY, 0 |
| 2134 | QOVRLC |
| 2135 | EOVRLC |
| 2136 | XOVRLC |
| 2137 | FOVRLC |
| 2138 | |
| 2139 | /SUBROUTINE TO DO LOOKUPS AND ENTERS (LINK CRITICAL ON ENTRY) |
| 2140 | |
| 2141 | OPEN, 0 /CALLED WITH MONITOR CODE - 2 IN AC |
| 2142 | DCA RSTSW /ENTER OR LOOKUP |
| 2143 | SZL CLA /IF THIS IS THE OUTPUT SIDE OF AN "EB" COMMAND, |
| 2144 | JMP DEVLOD /SKIP THE STATEMENT SCAN |
| 2145 | QCHK |
| 2146 | TAD DSKNAM /PACKED SIXBIT FOR 'DSK:' |
| 2147 | DCA DEVC |
| 2148 | TAD (72 /RESTORE : |
| 2149 | NGOM1, DCA DEVLST+1 |
| 2150 | NGO, DCA NAME /CLEAR NAME |
| 2151 | DCA NAME+1 |
| 2152 | DCA NAME+2 |
| 2153 | MTWO |
| 2154 | DCA PERDSW |
| 2155 | NAMCM1, DCA NAMCNT |
| 2156 | \fNAMEC, QUOTST /GET CHAR AND TEST FOR ALTM |
| 2157 | JMP DEVQOT /ALTM - END OF NAME |
| 2158 | SORT /NO - CHECK SPECIAL CHARS |
| 2159 | DEVLST /([,:,., AND SPACE |
| 2160 | DEVTAB-DEVLST |
| 2161 | TSTSEP /NO, SEE IF ALPHANUMERIC |
| 2162 | ERR08, ERR /ILLEGAL CHAR |
| 2163 | TAD NAMCNT |
| 2164 | TAD [-10 |
| 2165 | SMA CLA /MORE THAN 6 CHARS? |
| 2166 | JMP NAMEC /YES, IGNORE |
| 2167 | TAD NAMCNT /NO, PACK IT |
| 2168 | CLL RAR |
| 2169 | DCA TEMP1 /*K* NOTE ASSUMPTION NAME STARTS AT LOC 0! |
| 2170 | TAD SCHAR |
| 2171 | UPPERC /** "UPPERC" ALWAYS COMPLEMENTS LINK |
| 2172 | AND [77 |
| 2173 | SNL |
| 2174 | JMP .+4 |
| 2175 | CLL RTL |
| 2176 | RTL |
| 2177 | RTL |
| 2178 | TAD I TEMP1 |
| 2179 | DCA I TEMP1 |
| 2180 | ISZ NAMCNT |
| 2181 | JMP NAMEC |
| 2182 | |
| 2183 | PERD, ISZ PERDSW /FOUND A PERIOD |
| 2184 | TAD NAME |
| 2185 | SNA CLA /ERROR IF WE HAVE |
| 2186 | JMP ERR08 /DOUBLE PERIODS OR NO FILE NAME |
| 2187 | DCA DEVLST+1 /DEVICE NO LONGER LEGAL |
| 2188 | DCA NAME+3 /ZERO EXTENSION OUT |
| 2189 | TAD [6 /AND SET POINTER TO 6TH CHARACTER |
| 2190 | JMP NAMCM1 |
| 2191 | |
| 2192 | COLON, TAD NAME+1 |
| 2193 | SNA /WE MUST PACK THE NAME INTO ONE WORD OURSELVES |
| 2194 | JMP .+5 /BECAUSE IF "OPEN" IS CALLED FROM THE OUTPUT |
| 2195 | TAD NAME /SIDE OF AN "EB" COMMAND, WE SKIP |
| 2196 | SMA CLA /THE NAME COLLECTOR.(WITH GOOD REASON - |
| 2197 | CLL CML RAR /THE USR OVERLAYS THE COMMAND LINE). |
| 2198 | TAD NAME+1 /SINCE THE OS/8 "ASSIGN" CALL TO THE USR |
| 2199 | TAD NAME /REPLACES THE 2ND NAME WORD WITH THE DEVICE |
| 2200 | DCA DEVC /NUMBER, ALL NAME INFO MUST BE HELD IN WORD 1. |
| 2201 | JMP NGOM1 /DEVICE NAME STORED - RESET FOR FILE NAME |
| 2202 | |
| 2203 | DEVLST, 56 /. |
| 2204 | 72 /: |
| 2205 | DSKNAM, 5723 /=0423+1300+4000 - SERVES AS LIST TERMINATOR |
| 2206 | \fDEVQOT, ISZ PERDSW /IF WE NEVER SAW A PERIOD, |
| 2207 | DCA NAME+3 /WIPE OUT THE EXTENSION |
| 2208 | JMS I (GETUSR /BRING USR INTO CORE |
| 2209 | |
| 2210 | DEVLOD, TAD I OPEN /MOVE HANDLER ADDRESS |
| 2211 | DCA DEVHND |
| 2212 | ISZ OPEN /AND BUMP POINTER |
| 2213 | TWO |
| 2214 | TAD RSTSW |
| 2215 | DCA CODE /ENTER OR LOOKUP |
| 2216 | CIF 10 /AND RESET TABLES |
| 2217 | JMS I [200 |
| 2218 | 13 |
| 2219 | RSTSW, 0 /DON'T ZAP OPEN FILES ON INPUT |
| 2220 | DCA DEVNO /ZERO SECOND NAME WORD |
| 2221 | CIF 10 |
| 2222 | JMS I [200 |
| 2223 | 1 /ASSIGN HANDLER |
| 2224 | DEVC, 0 |
| 2225 | DEVNO, 0 |
| 2226 | DEVHND, 0 |
| 2227 | JMP OPNERR /ERROR - KICK USR OUT FIRST |
| 2228 | DCA STBLK |
| 2229 | TAD RSTSW /GET LOOKUP-ENTER SWITCH |
| 2230 | TAD NAME /IF NAME IS NULL AND THIS IS A LOOKUP, |
| 2231 | SNA CLA |
| 2232 | JMP OPSUCC /IT JUST SUCCEEDED |
| 2233 | TAD DEVNO /DEVICE # |
| 2234 | CIF 10 |
| 2235 | JMS I [200 |
| 2236 | CODE, 0 /ENTER OR LOOKUP |
| 2237 | STBLK, 0 /FILLED WITH STARTING BLOCK |
| 2238 | TEMP1, |
| 2239 | FLN, 0 /FILLED WITH -LENGTH |
| 2240 | /**** CHECK IF AC MUST = 0 |
| 2241 | JMP OPNERR /ERROR |
| 2242 | OPSUCC, TAD DEVHND /HANDLER ADDRESS IN AC |
| 2243 | JMP I OPEN |
| 2244 | PERDSW, 7777 /FLIP FLOP FOR EXTENSION |
| 2245 | NAMCNT, 0 /CHARACTER COUNT |
| 2246 | \f/*** CHECK FOR : (SEE P.26) RETURN VALUE IF FNF, ALSO IF FOUND |
| 2247 | OPNERR, TAD RSTSW /WE SHOULD ONLY KILL THE OUTPUT FILE |
| 2248 | SNA CLA |
| 2249 | JMP .+3 /IF THIS IS AN OUTPUT ERROR |
| 2250 | EBERR, TAD ERROR |
| 2251 | DCA OUTR |
| 2252 | PUSHJ |
| 2253 | PECDSM, ECDISM /DISMISS THE USR |
| 2254 | ERR16, ERR |
| 2255 | 0 /*K* TELLS ERR RTN TO EXIT IF WE WERE CHAINED TO |
| 2256 | |
| 2257 | PAGE |
| 2258 | \fCHRER, TAD I (TYI |
| 2259 | SORT |
| 2260 | ERLST |
| 2261 | ERTAB-ERLST |
| 2262 | ERR /CAN'T HAPPEN |
| 2263 | |
| 2264 | ERTAB, EBAK /EB |
| 2265 | ROPEN /ER |
| 2266 | WOPEN /EW |
| 2267 | |
| 2268 | ERLST, 102 /EB |
| 2269 | 122 /ER |
| 2270 | 127 /EW |
| 2271 | |
| 2272 | /FILE OPEN COMMMANDS: |
| 2273 | |
| 2274 | EBAK, CLA CMA CLL /"EDIT BACKUP" COMMAND WITH LINK CLEAR |
| 2275 | PUSHJ /USE 'ROPEN' TO SET POINTERS |
| 2276 | ROPEN /WITHOUT KICKING OUT THE USR (AC=-1 ON ENTRY) |
| 2277 | TAD I (DEVNO /DEVICE # |
| 2278 | TAD (OSDCBT-1 |
| 2279 | DCA R |
| 2280 | CDF 10 |
| 2281 | TAD I R /GET DEVICE CODE FROM DCB TABLE |
| 2282 | CDF |
| 2283 | SMA CLA /NEGATIVE IF FILE-STRUCTURED |
| 2284 | JMP I (EBERR /YOU CAN'T DO THAT! |
| 2285 | TAD NAME+3 /EXTENSION |
| 2286 | TAD (-213 |
| 2287 | SNA |
| 2288 | JMP I (EBERR /CAN'T EB A .BK FILE |
| 2289 | TAD DOTBK /RESTORE EXTENSION |
| 2290 | DCA R /SAVE IT |
| 2291 | TAD DOTBK /.BK EXTENSION |
| 2292 | DCA NAME+3 |
| 2293 | CIF 10 |
| 2294 | TAD I (DEVNO /DEVICE # |
| 2295 | JMS I [200 /DELETE THE OLD BACKUP |
| 2296 | 4 |
| 2297 | NAME |
| 2298 | 0 |
| 2299 | DOTBK, 213 /WHO CARES IF IT'S NOT THERE? |
| 2300 | TAD R /OLD EXTENSION |
| 2301 | DCA NAME+3 |
| 2302 | CLA CLL CML IAC /SET EDIT BACKUP FLAG AND DO AN "ENTER" |
| 2303 | /LINK MUST BE SET HERE FOR OPEN |
| 2304 | WOPEN, DCA EBFLG /LINK NORMALLY 0 WHEN GOTTEN HERE |
| 2305 | CLA IAC /OPEN OUTPUT FILE |
| 2306 | JMS I (OPEN /ENTER CODE IN AC |
| 2307 | OUHNDL, 4001 /HANDLER ADDRESS |
| 2308 | DCA OUTHND /HANDLER ENTRY |
| 2309 | TAD I (DEVNO |
| 2310 | DCA ODEV /SAVE DEV # |
| 2311 | DCA I (OCNT /CLEAR BLOCK COUNT |
| 2312 | TAD I (FLN |
| 2313 | DCA I (OMAXLN /MAXIMUM FILE LENGTH |
| 2314 | TAD NAME |
| 2315 | DCA I (OUNAM |
| 2316 | TAD NAME+1 |
| 2317 | DCA I (OUNAM+1 |
| 2318 | TAD NAME+2 |
| 2319 | DCA I (OUNAM+2 |
| 2320 | TAD NAME+3 |
| 2321 | DCA I (OUNAM+3 |
| 2322 | TAD (DECPUT |
| 2323 | DCA OUTR /ENABLE CHARACTER OUTPUT ROUTINE |
| 2324 | TAD (ECDISM |
| 2325 | DCA I (DECPUT /FAKE RETURN FROM CHAR I/O ROUTINE |
| 2326 | TAD I (STBLK |
| 2327 | JMP I (OSETP /SET UP BLOCK NUMBER AND POINTERS |
| 2328 | \f/FILE OPEN ROUTINE |
| 2329 | |
| 2330 | ROPEN, DCA QPTR /ENTERED WITH AC=-1 IF MONITOR IS TO BE KEPT |
| 2331 | /ENTERED WITH LINK=0 |
| 2332 | JMS I (OPEN /LOOKUP CODE IN AC |
| 2333 | INHNDL, 7201 /HANDLER ADDRESS |
| 2334 | DCA INHND /SAVE HANDLER ENTRY |
| 2335 | STA |
| 2336 | DCA ICRCNT /POINTER |
| 2337 | STA |
| 2338 | DCA REND /CLEAR END-OF-FILE FLAG |
| 2339 | TAD I (STBLK |
| 2340 | DCA I (IBLK /FIRST BLOCK |
| 2341 | TAD I (FLN |
| 2342 | DCA INRCNT /SET UP INPUT FILE LENGTH |
| 2343 | ISZ QPTR /SHOULD WE DISMISS THE MONITOR? |
| 2344 | JMP I (ECDISM /YES - KICK THE USR OUT AND POPJ |
| 2345 | JMP I [IREST /EXIT |
| 2346 | |
| 2347 | DEVTAB, PERD /. |
| 2348 | COLON /: |
| 2349 | PAGE |
| 2350 | \fNORMAL, TAD ODEV /CLOSE FILE |
| 2351 | CIF 10 |
| 2352 | JMS I [200 |
| 2353 | 4 |
| 2354 | OUNAM |
| 2355 | OCNT, 0 /NUMBER OF BLOCKS |
| 2356 | HLT |
| 2357 | TAD ERROR /RESET OUTPUT SUBROUTINE POINTER |
| 2358 | DCA OUTR /TO ERROR |
| 2359 | ECDISM, CIF 10 /DISMISS OS/8 USR ROUTINE |
| 2360 | JMS I [200 |
| 2361 | 11 /KICK USR OUT |
| 2362 | JMP I [IREST |
| 2363 | |
| 2364 | /*** REALLY SHOULD BREAK UP INTO 2 ROUTINES |
| 2365 | |
| 2366 | SCHSRT, 0 /SORT LETTERS AND NUMBERS |
| 2367 | UPPERC /CONVERT TO UPPER CASE TO REDUCE CASES |
| 2368 | CLL /THE LINK WILL ALTERNATE EACH TIME |
| 2369 | TAD [-60 /WE ADD ONE OF OUR NEGATIVE CONSTANTS. |
| 2370 | SMA /THE LINK AT THE END WILL TELL WHETHER |
| 2371 | TAD [-12 /THE CHARACTER WAS ALPHANUMERIC |
| 2372 | SMA /(I.E. BETWEEN 60-71,101-132 OR 140-172) |
| 2373 | TAD M7 /OR A SEPARATOR CHARACTER. |
| 2374 | SMA |
| 2375 | TAD (-32 |
| 2376 | SZL CLA /WAS IT ALPHANUMERIC? |
| 2377 | ISZ SCHSRT /YES |
| 2378 | JMP I SCHSRT /SKIP RETURN IF ALPHANUMERIC |
| 2379 | |
| 2380 | RT, 0 /ROUTINE TO PACK THIRD CHAR INTO OUTPUT BUFFER |
| 2381 | CLL RTL |
| 2382 | RTL |
| 2383 | DCA DM /CALLED TWICE - FIRST TIME WITH CHAR IN AC, |
| 2384 | TAD DM /SECOND TIME WITH "DM" IN AC |
| 2385 | AND [7400 |
| 2386 | TAD I OPTR2 |
| 2387 | DCA I OPTR2 |
| 2388 | ISZ OPTR2 |
| 2389 | JMP I RT |
| 2390 | \fDVIMQL, 0 /FAKE MQL DVI |
| 2391 | DCA DVT1 /STORE DIVIDEND |
| 2392 | DCA MQ /INITIALIZE QUOTIENT |
| 2393 | DV1, TAD I DVIMQL /GET DIVISOR |
| 2394 | CIA |
| 2395 | CLL /SET UP TO TAKE IMMEDIATE EXIT ON ZERODIVIDE |
| 2396 | TAD DVT1 /SUBTRACT DIVISOR FROM DIVIDEND |
| 2397 | SNL /OVERFLOWED YET? |
| 2398 | JMP DV7200 /YES |
| 2399 | DCA DVT1 /NO - STORE IT BACK |
| 2400 | ISZ MQ /BUMP QUOTIENT |
| 2401 | JMP DV1 /AND LOOP |
| 2402 | DV7200, CLA |
| 2403 | TAD MQ |
| 2404 | ISZ DVIMQL /SKIP PAST DIVISOR |
| 2405 | JMP I DVIMQL /RETURN WITH QUOTIENT IN AC |
| 2406 | |
| 2407 | /SEARCH STRING MODIFIERS: |
| 2408 | |
| 2409 | SCHLST, 16 /^N - ANYTHING BUT |
| 2410 | 21 /^Q - LITERALLY |
| 2411 | 23 /^S - ANY SEPARATOR |
| 2412 | 30 /^X - ANYTHING |
| 2413 | M7, -7 |
| 2414 | \fDECPUT, 0 /DEVICE INDEPENDENT I/O |
| 2415 | TAD [200 /ADD ON PARITY BIT |
| 2416 | ISZ O3 /3RD CHAR OF 3? |
| 2417 | JMP O2 /NO |
| 2418 | JMS RT /YES, SPECIAL HANDLING |
| 2419 | TAD DM /TEMP STORAGE |
| 2420 | JMS RT |
| 2421 | SETO3, MTHREE /RESET SWITCH |
| 2422 | DCA O3 |
| 2423 | ISZ OCRCNT /END OF BUFFER? |
| 2424 | JMP I DECPUT /NO |
| 2425 | JMS FITS /CHECK FOR OUTPUT OVERFLOW |
| 2426 | JMP OERR /YUP |
| 2427 | DCA OCNT /NO - UPDATE OUTPUT COUNT |
| 2428 | JMS I OUTHND /OUTPUT THE BUFFER |
| 2429 | OUCTRL, 4400 |
| 2430 | BUFOUT, OUT |
| 2431 | OBLK, 0 |
| 2432 | JMP OERR |
| 2433 | TAD OBLK |
| 2434 | TAD INRSIZ /BUMP THE OUTPUT RECORD NUMBER BY THE MAXIMUM |
| 2435 | OSETP, DCA OBLK /SINCE ALL WRITES EXCEPT THE LAST ARE MAXIMAL |
| 2436 | TAD BUFOUT /BUFFER POINTERS |
| 2437 | DCA OPTR1 |
| 2438 | TAD BUFOUT |
| 2439 | DCA OPTR2 |
| 2440 | TAD OUTSIZ |
| 2441 | DCA OCRCNT /DOUBLEWORD COUNT (7377 IF 8K, 6777 IF 12K) |
| 2442 | JMP SETO3 /SET BYTE COUNTER AND RETURN |
| 2443 | OERR, CLA |
| 2444 | TAD ERROR |
| 2445 | DCA OUTR /INHIBIT FUTURE OUTPUT |
| 2446 | ERR14, ERR |
| 2447 | O2, DCA I OPTR1 /NORMAL HANDLING |
| 2448 | ISZ OPTR1 /BUMP POINTER |
| 2449 | JMP I DECPUT |
| 2450 | OPTR1, 0 |
| 2451 | OMAXLN, 0 /SIZE OF HOLE FOR OUTPUT |
| 2452 | OUTSIZ, 7377 /6777 |
| 2453 | O3, 0 |
| 2454 | \fFITS, 0 /SUBROUTINE TO CHECK FOR OUTPUT OVERFLOW |
| 2455 | TAD OPTR1 /** AC MAY CONTAIN FUDGE ON INPUT ** |
| 2456 | CIA |
| 2457 | TAD BUFOUT /COMPUTE NUMBER OF WORDS IN BUFFER |
| 2458 | AND [7400 /ROUND "UP" TO NEXT BUFFERLOAD |
| 2459 | CIA /MAKE POSITIVE |
| 2460 | CLL CML RAR |
| 2461 | DCA OUCTRL /AND SAVE IT AS A BUFFER CONTROL WORD |
| 2462 | TAD OUCTRL |
| 2463 | CLL RAL |
| 2464 | CLL RTL /ISOLATE THE BLOCK COUNT OF THE CONTROL WORD |
| 2465 | RTL /IN THE LOW ORDER PART OF THE AC |
| 2466 | RAL |
| 2467 | TAD OCNT /ADD IT TO THE CURRENT OUTPUT COUNT |
| 2468 | CLL CML |
| 2469 | TAD OMAXLN /SEE THAT WE DIDN'T OVERFLOW |
| 2470 | SNL SZA /THE ASSIGNED OUTPUT AREA |
| 2471 | JMP I FITS /OOPS - WE DID - ERROR RETURN |
| 2472 | CIA |
| 2473 | TAD OMAXLN /SUBTRACT OFF THE LIMIT |
| 2474 | CIA /TO ARRIVE AT THE UPDATED BLOCK COUNT |
| 2475 | ISZ FITS |
| 2476 | JMP I FITS /AND SKIP RETURN |
| 2477 | OUNAM, ZBLOCK 4 /NAME OF OPEN OUTPUT FILE GOES HERE |
| 2478 | PAGE |
| 2479 | \f/DISPLAY ROUTINE FOR PDP-12 SCOPE |
| 2480 | |
| 2481 | WASTE, 0 /** MUST BE AT MULTIPLE OF 2000 |
| 2482 | XPOS, 0 /PDP-12 BETA REGISTER 1 |
| 2483 | BETA2, 0 /PDP-12 BETA REGISTER 2 |
| 2484 | |
| 2485 | DSPLAY, 0 /TEXT DISPLAY ROUTINE FOR TECO |
| 2486 | MTHREE /THIS ROUTINE DEPENDS ON THE FACT THAT THE |
| 2487 | TAD DSPLAY /HIGH ORDER BITS OF THE X-COORD ARE IGNORED |
| 2488 | DCA DX /BY THE VR12 HARDWARE |
| 2489 | TAD I DX /GET THE SKIP |
| 2490 | DCA DLPTST /PUT IT IN THE LOOP |
| 2491 | TAD P |
| 2492 | DCA DX |
| 2493 | TAD NUMLNS |
| 2494 | STL CIA /LOOK BACKWARD |
| 2495 | PUSHJ /FOR BEGINNING OF DISPLAY AREA |
| 2496 | CHRL1 |
| 2497 | D360, STA STL /=7360 |
| 2498 | TAD P |
| 2499 | DCA DM |
| 2500 | TAD DX |
| 2501 | DCA P /RESTORE POSITION |
| 2502 | TAD NUMLNS /NOW SCAN FORWARD |
| 2503 | CLL IAC |
| 2504 | PUSHJ /FOR THE END OF THE DISPLAY AREA |
| 2505 | CHRL1 |
| 2506 | TAD P |
| 2507 | CIA |
| 2508 | TAD DM |
| 2509 | DCA R /*K* THIS NUMBER MUST GO IN R - |
| 2510 | TAD DX /THE ^W COMMAND NEEDS IT THERE |
| 2511 | DCA P /RESTORE ORIGINAL P |
| 2512 | DSETUP, TAD P |
| 2513 | CIA |
| 2514 | TAD DM |
| 2515 | DCA DQ /SAVE COUNT OF CHARS TO CURSOR POSITION |
| 2516 | TAD DM |
| 2517 | DCA DX |
| 2518 | TAD R |
| 2519 | DCA DR |
| 2520 | TAD D360 |
| 2521 | DCA YPOS |
| 2522 | DISCR, TAD DISLF |
| 2523 | SETXPS, DCA XPOS /SET X POSITION/COLUMN COUNTER |
| 2524 | JMP DLPTST |
| 2525 | \f /DISPLAY LOOP |
| 2526 | |
| 2527 | DGETCH, CDF 10 |
| 2528 | TAD I DX |
| 2529 | CDF 0 /GET THE CHARACTER FROM FIELD 1 |
| 2530 | AND [177 /AND OFF THE HIGH ORDER BITS |
| 2531 | TAD (-33 |
| 2532 | SNA /CHANGE ALTMODES |
| 2533 | TAD CAHT /TO DOLLAR SIGNS |
| 2534 | TAD (-5 |
| 2535 | SMA SZA /IF NOT A CONTXRACTER |
| 2536 | JMP DLOOP /DISPLAY IT AND KEEP GOING |
| 2537 | SNA |
| 2538 | JMP DBLANK /DO BLANKS FAST |
| 2539 | TAD (40-15 |
| 2540 | SNA /CR? |
| 2541 | JMP DISCR /YES - RESET X COORD |
| 2542 | STL |
| 2543 | TAD [4 |
| 2544 | SNA /TAB? |
| 2545 | JMP DTABB |
| 2546 | SNL |
| 2547 | JMP DISLF /LINE FEED, VERTICAL TAB, OR FORM FEED |
| 2548 | TAD (51 /ORDINARY CONTROL CHAR - RESTORE IT + 40 |
| 2549 | DCA WASTE /SAVE CHAR |
| 2550 | JMS DISCHR /DISPLAY ^ |
| 2551 | TAD WASTE /NOW DISPLAY ALTERED CHAR |
| 2552 | DLOOP, JMS DISCHR |
| 2553 | |
| 2554 | DLPTST, HLT /EITHER KSF OR TSF OR "ISZ R" |
| 2555 | SKP |
| 2556 | JMP I DSPLAY /EXIT IMMEDIATELY IF TEST SKIPS |
| 2557 | ISZ DQ /ARE WE AT THE CURRENT POINTER POSITION? |
| 2558 | JMP TSTEDS /NO |
| 2559 | TAD (-5 |
| 2560 | TAD XPOS |
| 2561 | DCA XPOS /BACK UP X POSITION A HALF-CHARACTER |
| 2562 | TAD DM20 |
| 2563 | TAD YPOS |
| 2564 | 6141 /ENTER LINC MODE |
| 2565 | DM20, 1760 /DSC I |
| 2566 | 2000 |
| 2567 | 1760 /DISPLAY A ^ |
| 2568 | 2076 |
| 2569 | 0002 /PDP |
| 2570 | MTHREE /AND MOVE X POSITION BACK TO WHERE IT WAS |
| 2571 | JMP DBLANK+1 |
| 2572 | TSTEDS, ISZ DR /ARE WE THROUGH? |
| 2573 | JMP DGETCH /NO |
| 2574 | JMP DSETUP /YES - START OVER |
| 2575 | \fDTABB, TAD XPOS /DISPLAY TAB |
| 2576 | CMA |
| 2577 | AND Z7 |
| 2578 | DCA WASTE /GET NUMBER OF COLUMNS TO GO (-1) |
| 2579 | TAD WASTE |
| 2580 | CLL RTL |
| 2581 | RAL |
| 2582 | TAD WASTE /MULTIPLY BY 9 |
| 2583 | DBLANK, TAD CAHT /BUMP ONE MORE COLUMN |
| 2584 | TAD XPOS |
| 2585 | SZA /OVERFLOW? |
| 2586 | JMP SETXPS /NO - SET XPOS AND CONTINUE |
| 2587 | JMP LINOFL /YES - GO TO THE NEXT LINE |
| 2588 | |
| 2589 | /SUBROUTINE TO DISPLAY A CHARACTER |
| 2590 | |
| 2591 | DISCHR, DLPTST /*K* DISCHR MUST CONTAIN "DLPTST" WHEN WE |
| 2592 | CLL RAL /ARE EXAMINING CHARACTERS ** |
| 2593 | TAD (DTABLE-1 |
| 2594 | DCA BETA2 /STORE ADDRESS OF TABLE ENTRY FOR CHAR -1 |
| 2595 | TAD YPOS |
| 2596 | |
| 2597 | 6141 /ENTER LINC MODE |
| 2598 | 1762 /DSC I 2 |
| 2599 | 1762 /DSC I 2 |
| 2600 | 0002 /RE-ENTER PDP-8 MODE |
| 2601 | |
| 2602 | CLA |
| 2603 | ISZ XPOS /BUMP THE X COORDINATE/COLUMN COUNTER |
| 2604 | JMP I DISCHR /RETURN |
| 2605 | LINOFL, TAD (7054 /INDENT ALL CONTINUATION LINES |
| 2606 | DCA XPOS |
| 2607 | DISLF, RAR /*K* RAR=7010 AC MAY HAVE A SMALL NUMBER |
| 2608 | TAD YPOS /IN IT HERE - THATS OK AS LONG AS ITS SMALL, |
| 2609 | TAD [-40 /SINCE ONLY THE HIGH 8 BITS OF YPOS COUNT. |
| 2610 | DCA YPOS |
| 2611 | JMP I DISCHR /*K* THIS ALWAYS RETURNS TO DLPTST ** |
| 2612 | |
| 2613 | YPOS= NAME /USE SOME FREE PAGE ZERO LOCATIONS |
| 2614 | DR= NAME+1 /FOR OUR TEMPORARIES |
| 2615 | DQ= NAME+2 |
| 2616 | DM= NAME+3 |
| 2617 | PAGE |
| 2618 | \fDTABLE, 2000;2076; 7500;0000; 7000;0070; 7714;1477 |
| 2619 | 5721;4671; 6661;4333; 5166;0526; 0000;0070 |
| 2620 | 3600;0041; 4100;0036; 2050;0050; 0404;0437 |
| 2621 | 0500;0006; 0404;0404; 0001;0000; 0601;4030 |
| 2622 | 4536;3651; 2101;0177; 4523;2151; 4122;2651 |
| 2623 | 2414;0477; 5172;0651; 1506;4225; 4443;6050 |
| 2624 | 5126;2651; 5122;3651; 2200;0000; 4601;0000 |
| 2625 | 1000;4224; 1212;1212; 2442;0010; 4020;2055 |
| 2626 | 4077;5751; 4477;7744; 5177;2651; 4136;2241 |
| 2627 | 4177;3641; 4577;4145; 4477;4044; 4136;2645 |
| 2628 | 1077;7710; 7741;0041; 4142;4076; 1077;4324 |
| 2629 | 0177;0301; 3077;7730; 3077;7706; 4177;7741 |
| 2630 | 4477;3044; 4276;0376; 4477;3146; 5121;4651 |
| 2631 | 4040;4077; 0177;7701; 0176;7402; 0677;7701 |
| 2632 | 1463;6314; 0770;7007; 4543;6151; 4177;0000 |
| 2633 | 3040;0106; 0000;7741; 2000;2076; 1604;0404 |
| 2634 | \fSTABLE, ZBLOCK 40 /SEARCH BUFFER |
| 2635 | |
| 2636 | CTLW, NCHK /^W COMMAND - IF THERE WAS A NUMBER BEFORE |
| 2637 | JMP CTLW2 /THE ^W, SET THE NUMBER OF LINES TO DISPLAY |
| 2638 | TAD N /EQUAL TO THAT NUMBER. |
| 2639 | DCA NUMLNS |
| 2640 | /DON'T WORRY ABOUT NEGATIVE N |
| 2641 | CTLW2, ISZ R /FAKE OUT! (MUST BE BEFORE CALL TO DISPLY) |
| 2642 | DISPLY /IN ANY CASE, GO THROUGH ONE DISPLAY CYCLE |
| 2643 | POPJ /THEN RETURN |
| 2644 | |
| 2645 | SAVTRA, 0 /SAVE TRACE MODE |
| 2646 | TAD TFLG |
| 2647 | DCA TFGTMP |
| 2648 | DCA TFLG |
| 2649 | JMP I SAVTRA /EXIT WITH TRACE OFF |
| 2650 | |
| 2651 | RESTRA, 0 /RESTORE TRACE MODE |
| 2652 | TAD TFGTMP |
| 2653 | DCA TFLG |
| 2654 | JMP I RESTRA |
| 2655 | TFGTMP, 0 |
| 2656 | |
| 2657 | CHKQF, 0 /CHECK FOR EXPLICIT QUOTES |
| 2658 | ISZ QFLG /QUOTE FLAG SET? |
| 2659 | JMP .+3 /NO |
| 2660 | SCAN /GET QUOTING CHAR |
| 2661 | DCA QUOTE /PUT INTO SEARCH TABLE |
| 2662 | DCA QFLG /ZAP QUOTE FLAG |
| 2663 | JMP I CHKQF /RETURN |
| 2664 | \fNXTBUF, 0 |
| 2665 | SZA CLA |
| 2666 | JMP NOWRIT /READ-ONLY IF AC NOT 0 ON ENTRY |
| 2667 | PUSHJ |
| 2668 | CPOC /HP |
| 2669 | DCA ZZ /FORCE Y TO WORK |
| 2670 | ISZ FFFLAG /IF WE DIDN'T SEE A FORM FEED ON INPUT |
| 2671 | JMP NOWRIT /DON'T OUTPUT ONE |
| 2672 | TAD CAFF |
| 2673 | OUTPUT |
| 2674 | NOWRIT, PUSHJ |
| 2675 | CHRY /READ NEW BUFFER |
| 2676 | CTCCHK /CHECK FOR ^C AND ^P |
| 2677 | CLA /*K* CTCCHK LEAVES AC NON-ZERO! |
| 2678 | JMP I NXTBUF |
| 2679 | |
| 2680 | GETUSR, 0 /ROUTINE TO LOCK THE USR INTO CORE |
| 2681 | CDF 0 |
| 2682 | TAD ZZ /IF THE TEXT BUFFER IS EMPTY AND |
| 2683 | SNA CLA /WE HAVE 12K, SO Q-REGS ARE IN FIELD 2, |
| 2684 | NWRUSR, NOP /(CHANGED BY INIT CODE TO "TAD [4" IF 12K) |
| 2685 | STL RTR /THEN WE SHOULD NOT SAVE CORE ON A USR CALL. |
| 2686 | DCA I (JSBITS /THIS STORES A 2000 OR A 2001 |
| 2687 | CIF 10 |
| 2688 | JMS I [7700 /OK - NOW LOAD THE USR IN |
| 2689 | 10 |
| 2690 | JMP I GETUSR |
| 2691 | \f/E COMMAND MODIFIERS |
| 2692 | |
| 2693 | EFLST, 102 /EB I |
| 2694 | 103 /EC X |
| 2695 | 106 /EF X |
| 2696 | 107 /EG X |
| 2697 | 113 /EK X |
| 2698 | 122 /ER I |
| 2699 | 127 /EW I |
| 2700 | 130 /EX I |
| 2701 | |
| 2702 | CHRU, QREF /COMMAND U |
| 2703 | NCHK |
| 2704 | ERR22, ERR /U MUST BE PRECEDED BY A NUMBER |
| 2705 | TAD NLINK |
| 2706 | CLL RTR |
| 2707 | DCA NLINK |
| 2708 | AC3777 |
| 2709 | AND I QPTR |
| 2710 | TAD NLINK |
| 2711 | DCA I QPTR |
| 2712 | ISZ QPTR |
| 2713 | TAD N |
| 2714 | DCA I QPTR |
| 2715 | POPJ |
| 2716 | |
| 2717 | /RADIX TABLES: |
| 2718 | |
| 2719 | ORAD, NOP |
| 2720 | 1000 |
| 2721 | 100 |
| 2722 | 10 |
| 2723 | DRAD, NP&177+1200 /"TAD NP" |
| 2724 | 1750 |
| 2725 | 144 |
| 2726 | 12 |
| 2727 | \f/DISPATCH TABLE FOR COMMAND INPUT |
| 2728 | |
| 2729 | COMTAB, TBEL /^G |
| 2730 | TCRLF /CR |
| 2731 | RUBY, ROCMND /RUBOUT |
| 2732 | TCTLU /^U |
| 2733 | TALTM /ALTMODE |
| 2734 | TQMK /? |
| 2735 | TSAVE /^S |
| 2736 | TSTAR /* |
| 2737 | TSPACE /SPACE |
| 2738 | |
| 2739 | EDFLAG, 0 /MUST BE KEPT TOGETHER |
| 2740 | EHFLAG, 0 |
| 2741 | EOFLAG, VERSN |
| 2742 | ESFLAG, 0 |
| 2743 | ETFLAG, 0 |
| 2744 | EUFLAG, 0 |
| 2745 | /CXFLAG, 0 |
| 2746 | PAGE |
| 2747 | \f/COMMAND M |
| 2748 | /AND Q-REGISTER STORAGE |
| 2749 | COMLST, 7 /^G, COMMAND LINE EDIT LIST |
| 2750 | 15 /CR, INSERT CR & LF |
| 2751 | 177 /RUBOUT |
| 2752 | 25 /^U - RUB OUT LINE |
| 2753 | 33 /^[, ALT MODE |
| 2754 | 77 /? |
| 2755 | 23 /^S - SAVE OLD COMMAND LINE IN Q-REG Z |
| 2756 | 52 /* |
| 2757 | 40 /SPACE |
| 2758 | |
| 2759 | CHRM, QREF /COMMAND M |
| 2760 | TAD M4 /4 ITEMS PUSHED TO |
| 2761 | PUSHL /SAVE CURRENT MACRO STATE |
| 2762 | QCMND |
| 2763 | MPDL |
| 2764 | ITRST /SO THE "O" COMMAND WILL WORK IN MACROS |
| 2765 | SCANP /ZEROED BY "PUSHL" |
| 2766 | TAD PDLP /MUST CHECK PDL AT END OF MACRO |
| 2767 | CIA |
| 2768 | DCA MPDL |
| 2769 | TAD QNMBR /Q-REGISTER TO EXECUTE |
| 2770 | SETCMD /SET COMMAND LINE TO THIS Q-REG |
| 2771 | POPJ /LEAVE NUMBER FLAG ALONE AND EXIT |
| 2772 | |
| 2773 | CHKBZ, 0 /SEE THAT B .LE. C(AC) .LE. ZZ |
| 2774 | SZL |
| 2775 | JMP ERR11 /POP |
| 2776 | CIA /ENTERED WITH LINK SET CORRECTLY |
| 2777 | TAD ZZ |
| 2778 | SNL /13-BIT ARITHMETIC |
| 2779 | ERR11, ERR /C(AC)>ZZ |
| 2780 | CIA |
| 2781 | TAD ZZ /RESTORE ORIGINAL AC |
| 2782 | JMP I CHKBZ |
| 2783 | |
| 2784 | ALTLST, 175 /ALT MODE |
| 2785 | 176 /ANOTHER ALTMODE |
| 2786 | M4, -4 |
| 2787 | \fSCUPPR, 0 /SCAN AND CONVERT TO UPPER CASE |
| 2788 | SCAN |
| 2789 | UPPERC |
| 2790 | JMP I SCUPPR /THAT'S ALL? |
| 2791 | |
| 2792 | /Q-REGISTER STORAGE - EACH Q-REGISTER TAKES 2 WORDS. |
| 2793 | /WD 1 CONTAINS THE LENGTH OF THE CHARACTER PART OF THE REGISTER (IF ANY) |
| 2794 | /WD 2 CONTAINS THE VALUE OF THE NUMERIC PART OF THE REGISTER (IF ANY) |
| 2795 | |
| 2796 | QARRAY, ZBLOCK 110 /36 Q-REGISTERS * 2 WORDS/REGISTER = 72 WORDS |
| 2797 | QPNTR, CHNSTR /FAKE Q-REGISTER FOR INPUT LINE - LENGTH ONLY. |
| 2798 | \fCTLT, NCHK |
| 2799 | JMP CTLT2 /NO ARG |
| 2800 | TAD N |
| 2801 | ET1, TYPE /TYPE CHAR REPRESENTED BY ARGUMENT |
| 2802 | POPJ |
| 2803 | CTLT2, LISTEN /^T COMMAND - VALUE OF NEXT CHAR FROM TTY |
| 2804 | ET8, TYPE /*ET ECHO THE CHARACTER |
| 2805 | TAD SCHAR /GET THE CHARACTER |
| 2806 | JMP I (NCOM14 /JUMP INTO NUMBER PROCESSOR |
| 2807 | |
| 2808 | CTLE, TAD FFFLAG /^E COMMAND - RETURNS FORM FEED FLAG |
| 2809 | NNEW13, CLL |
| 2810 | SPA |
| 2811 | STL /EXTEND SIGN BIT TO LINK |
| 2812 | JMP I (NCOM /RETURN -1 IF F.F., 0 OTHERWISE |
| 2813 | PAGE |
| 2814 | \f *5000 |
| 2815 | |
| 2816 | /COMMAND DISPATCH TABLE ** ALLOW EVEN/ODD FOR NOVICE SUBSET? |
| 2817 | |
| 2818 | CDSP, POPK;CTLA;SERR;CTLC;CTLD;CTLE;CTLF;CTLC /0-7 |
| 2819 | CTLH;CTLI;POPK;SERR;POPK;POPK;CTLN;CTLO /10-17 |
| 2820 | T0;SERR;SERR;SERR;CTLT;CTLU;ERR35;ERR27 /20-27 |
| 2821 | SERR;SERR;SERR;ZRON;SERR;SERR;CTUA;SERR /30-37 |
| 2822 | POPK;CEXP;CDBQ;CNBS;SERR;CPCS;CAMP;ZRON /40-47 |
| 2823 | COPR;CCPR;CAST;CPLS;CCMA;CMIN;CDOT;CVIR /50-57 |
| 2824 | NMBR;NMBR;NMBR;NMBR;NMBR;NMBR;NMBR;NMBR /60-67 |
| 2825 | NMBR;NMBR;CCLN;CSEM;CHLT;CEQL;CHGT;CQSM /70-77 |
| 2826 | CATS;CHRA;CHRB;CHRC;CHRD;CHRE;CHRF;CHRG /100-107 |
| 2827 | CHRH;CHRI;CHRJ;CHRK;CHRL;CHRM;CHRN;CHRO /110-117 |
| 2828 | CHRP;CHRQ;CHRR;CHRS;CHRT;CHRU;SERR;SERR /120-127 |
| 2829 | CHRX;CHRY;CHRZ;SERR;CBSL;SERR;CHUA;CHBA /130-137 |
| 2830 | /END OF DISPATCH TABLE |
| 2831 | |
| 2832 | PDLBEG, ZBLOCK 11 /BEGINNING OF PUSHDOWN LIST |
| 2833 | QPUT12, ZBLOCK 16 /ROUTINES INSERTED LATER - USED IN |
| 2834 | ASR35, ZBLOCK 10 /INITIALIZATION, OVERLAYED BY PUSHDOWN LIST |
| 2835 | PDLEND, 0 /END OF PUSHDOWN LIST |
| 2836 | PAGE |
| 2837 | \f *5200 |
| 2838 | |
| 2839 | / INITIALIZATION SECTION |
| 2840 | / ENTER HERE AT 5200 TO MODIFY TECO TO USE A MODEL 35 TELETYPE |
| 2841 | / SORRY - NO CURRENT PAGE LITERALS |
| 2842 | |
| 2843 | TECO35, ISZ JTECO /IF CALLED VIA "R" OR "RUN" |
| 2844 | TAD I XR /MOVE ASR-35 PATCH (WHICH OUTPUTS TABS AND |
| 2845 | DCA I INXR / FORM FEEDS) OVER PRINT ROUTINE |
| 2846 | ISZ ASRCNT |
| 2847 | JMP .-3 |
| 2848 | TAD YOUTHTX |
| 2849 | DCA I YPOUTHT |
| 2850 | TAD [TECO |
| 2851 | DCA I Y7745 /CHANGE STARTING ADDRESS IN CASE WE'RE RESTARTED |
| 2852 | /AND FALL INTO INITIALIZATION ROUTINE |
| 2853 | |
| 2854 | TCINIT, TLS /INITIALIZATION ROUTINE - INITIALIZE THE TTY |
| 2855 | TAD .-1 |
| 2856 | DCA I [TECO |
| 2857 | TAD YT0A /"JMP T0A" |
| 2858 | DCA I PTECO1 /CHANGE THE ENTRY AT 200 SO WE'RE NOT CALLED AGAIN |
| 2859 | CLA STL |
| 2860 | 6141 /ENTER LINC MODE (MAYBE) |
| 2861 | 4 /ESF - SET SMALL CHARACTERS FOR SCOPE |
| 2862 | 0261 /ROL I 1 - ROTATE LINK INTO AC11 |
| 2863 | 0002 /BACK TO PDP-8 MODE |
| 2864 | SNA CLA /AC NON-ZERO IF WE ARE A PDP-12 |
| 2865 | JMP NOTA12 /NO, JUST AN ORDINARY 8 |
| 2866 | TAD YPDP12 |
| 2867 | JMS CHANGE /TRADE OFF TWO PAGE HANDLERS FOR A SCOPE |
| 2868 | NOTA12, TAD I Y7777 |
| 2869 | AND COR70 |
| 2870 | SZA |
| 2871 | JMP SOFCOR |
| 2872 | COR0, CDF 0 /NEEDED FOR PDP-8L |
| 2873 | TAD CORSIZ /GET FIELD TO TEST |
| 2874 | RTL |
| 2875 | RAL |
| 2876 | AND COR70 /MASK USEFUL BITS |
| 2877 | TAD COREX |
| 2878 | DCA .+1 /SET UP CDF TO FIELD |
| 2879 | COR1, CDF /N /N IS FIELD TO TEST |
| 2880 | TAD I CORLOC /SAVE CURRENT CONTENTS |
| 2881 | COR2, NOP /HACK FOR PDP-8! |
| 2882 | DCA COR1 |
| 2883 | TAD COR2 /7000 IS A "GOOD" PATTERN |
| 2884 | DCA I CORLOC |
| 2885 | COR70, 70 /HACK FOR PDP-8, NOP |
| 2886 | TAD I CORLOC /TRY TO READ BACK 7000 |
| 2887 | CORX, 7400 /HACK FOR PDP-8, NOP |
| 2888 | TAD CORX /GUARD AGAINST WRAP-AROUND |
| 2889 | TAD CORV /TAD (1400 |
| 2890 | SZA CLA |
| 2891 | JMP COREX /NON-EXISTENT FIELD EXIT |
| 2892 | TAD COR1 /RESTORE CONTENTS DESTROYED |
| 2893 | DCA I CORLOC |
| 2894 | ISZ CORSIZ /TRY NEXT HIGHER FIELD |
| 2895 | JMP COR0 |
| 2896 | |
| 2897 | COREX, CDF 0 /LEAVE WITH DATA FIELD 0 |
| 2898 | STA |
| 2899 | TAD CORSIZ /HIGHEST EXISTING FIELD |
| 2900 | COR999, DCA MEMSIZ |
| 2901 | TAD MEMSIZ |
| 2902 | SNA CLA |
| 2903 | JMP JTECOM /8K |
| 2904 | TAD YM7 /MORE THAN 8K |
| 2905 | JMS I YMOVE |
| 2906 | CDF 0 |
| 2907 | QPUT12-1 |
| 2908 | CDF 0 |
| 2909 | QPUTS-1 |
| 2910 | TAD YM7 |
| 2911 | JMS I YMOVE |
| 2912 | CDF 0 |
| 2913 | QPUT12+7-1 |
| 2914 | CDF 0 |
| 2915 | GETQX-1 |
| 2916 | TAD YTWLVEK |
| 2917 | JMS CHANGE /AND CHANGE A WHOLE MESS OF LOCATIONS |
| 2918 | JTECOM, JMS I YOVINIT /WRITE OUT OVERLAYS |
| 2919 | CDF 10 |
| 2920 | TAD I YSCPBIT |
| 2921 | CDF 0 |
| 2922 | AND [200 |
| 2923 | SNA CLA |
| 2924 | JMP JTECO |
| 2925 | TAD YSCOPE |
| 2926 | JMS CHANGE |
| 2927 | JTECO, JMP I .+1 /INCREMENTED IF WE WERE'NT CHAINED TO |
| 2928 | CHINIL |
| 2929 | PTECO1, TECO1 |
| 2930 | |
| 2931 | CORLOC, CORX /ADDRESS TO TEST IN EACH FIELD |
| 2932 | CORV, 1400 /7000+7400+1400=0 |
| 2933 | CORSIZ, 1 /CURRENT FIELD TO TEST |
| 2934 | |
| 2935 | SOFCOR, CLL RAR |
| 2936 | RTR |
| 2937 | JMP COR999 |
| 2938 | \f/CHAINED INIT CODE - MOVE 17600 INTO Q-REGISTER SPACE |
| 2939 | |
| 2940 | CHINIL, CDF 10 |
| 2941 | TAD I DX /GET A COMMAND LINE CHAR |
| 2942 | CDF 0 |
| 2943 | QPUT |
| 2944 | ISZ INICT |
| 2945 | JMP CHINIL |
| 2946 | TAD YFATALJ /SET UP THE FATAL ERROR EXIT |
| 2947 | DCA I YCHOOPS /IN THE ERROR ROUTINE |
| 2948 | JMP I YCHTECO |
| 2949 | INICT, -CHNSTR |
| 2950 | |
| 2951 | ASRCNT, |
| 2952 | CHANGE, -10 /ROUTINE TO CHANGE SPECIFIC LOCATIONS |
| 2953 | DCA XR /STORE TABLE POINTER |
| 2954 | CHANGL, TAD I XR /GET LOCATION |
| 2955 | SNA |
| 2956 | JMP I CHANGE /END OF LIST - RETURN |
| 2957 | DCA TEMPT |
| 2958 | TAD I XR /GET CONTENTS |
| 2959 | DCA I TEMPT /ZAP! |
| 2960 | JMP CHANGL |
| 2961 | |
| 2962 | /CHECK FOR OS/8 SCOPE BIT, IF ON, PATCH TECO |
| 2963 | /ALSO SEND ESC SEQ TO TERMINAL TO SEE IF VT05 OR VT5X. |
| 2964 | |
| 2965 | |
| 2966 | YOUTHTX, OUTHTX |
| 2967 | YPOUTHT,POUTHT |
| 2968 | Y7745, 7745 |
| 2969 | Y7777, 7777 |
| 2970 | YM7, -7 |
| 2971 | YMOVE, MOVE |
| 2972 | YOVINIT,OVINIT |
| 2973 | YSCPBIT,SCPBIT |
| 2974 | YFATALJ,FATALJ |
| 2975 | YCHOOPS,CHOOPS |
| 2976 | YCHTECO,CHTECO |
| 2977 | YPDP12, PDP12-1 |
| 2978 | YTWLVEK,TWLVEK-1 |
| 2979 | YSCOPE, SCOPE-1 |
| 2980 | YT0A, T0A&177+5200 |
| 2981 | /FLOW INTO NEXT PAGE |
| 2982 | \fSCOPE, RUBY; SCOPY /MAKE SCOPE RUBOUTS WORK |
| 2983 | BLSP1; TAD CACR /MAKE BELL SPACE WORK |
| 2984 | BLSP2; TYPE /AND MORE RUBOUTS |
| 2985 | BLSP3; SCAPE&177+4600 /JMS I (ESCAPE |
| 2986 | BLSP4; 113 /MORE BELL SPACE |
| 2987 | EUFLAG; -1 /SET EU TO -1 |
| 2988 | EU1; CLA |
| 2989 | EU2; TAD [40 |
| 2990 | 0 |
| 2991 | \f/LOCATIONS TO CHANGE MUST BE CHANGED IN OVERLAY IMAGE |
| 2992 | /BEFORE OVERLAY IS WRITTEN OUT |
| 2993 | |
| 2994 | /LOCATIONS TO CHANGE IF WE HAVE 12K OF CORE |
| 2995 | |
| 2996 | TWLVEK, INRSIZ; 4 /INPUT BUFFER GROWS TO 4 BLOCKS LONG |
| 2997 | INCTLW; 1021 /AND LIVES IN FIELD 2 |
| 2998 | INPCNT; 5000 |
| 2999 | I2; CDF 20 |
| 3000 | IC; CDF 0 /THIS WAS A NOP TO SPEED UP RTS-8 OPERATION |
| 3001 | L12K1; J12K1 /SPEED UP TEXT MOVE ROUTINES, |
| 3002 | L12K2; J12K2 /SINCE Q-REGISTERS DON'T SIT ON TOP OF TEXT. |
| 3003 | OUTSIZ; 6777 /OUTPUT BUFFER TAKES OVER OLD INPUT BUFFER SPACE |
| 3004 | BUFIN; 5600 |
| 3005 | NWRUSR; TAD [4 /LET USR BE CALLED WITHOUT SAVING CORE |
| 3006 | MQMAX; -Q12MAX /ALLOW MORE Q-REGISTER STORAGE |
| 3007 | QLIMIT; 12-Q12MAX |
| 3008 | 0 |
| 3009 | |
| 3010 | |
| 3011 | /LOCATIONS TO CHANGE IF WE'RE RUNNING ON A PDP-12 |
| 3012 | |
| 3013 | PDP12, KSFWT; DISPLY /FIX KEYBOARD AND PRINTER WAITS |
| 3014 | TSFWT; DISPLY /SO THEY DISPLAY WHILE WAITING |
| 3015 | CDSP+127;CTLW /ENABLE W COMMAND |
| 3016 | INHNDL; 7200 /ONE PAGE INPUT HANDLER ONLY |
| 3017 | OUHNDL; 7400 /DITTO OUTPUT HANDLER |
| 3018 | /VALUE MUST BE 0 INITIALLY TO END LIST |
| 3019 | OVINIT, 0 /WRITE OUT OVERLAYS |
| 3020 | /IF MORE THAN 12K, MOVE OVERLAYS TO FIELD 3 |
| 3021 | MTHREE |
| 3022 | TAD MEMSIZ |
| 3023 | SPA CLA |
| 3024 | JMP L16K /LESS THAN 16K |
| 3025 | TAD [-400 |
| 3026 | JMS MOVE |
| 3027 | CDF 0 |
| 3028 | 3200-1 |
| 3029 | CDF 30 |
| 3030 | MEMLOC-1 |
| 3031 | TAD M2000 |
| 3032 | JMS MOVE |
| 3033 | CDF 0 |
| 3034 | 5600-1 |
| 3035 | CDF 30 |
| 3036 | MEMLOC+400-1 |
| 3037 | TAD M5 |
| 3038 | JMS MOVE |
| 3039 | CDF 10 |
| 3040 | NEWERR-1 |
| 3041 | CDF 0 |
| 3042 | OVREAD-1 |
| 3043 | / TAD (COREAD-COREND-1 |
| 3044 | TAD M3000 |
| 3045 | JMS MOVE |
| 3046 | CDF 10 |
| 3047 | 4400-1 / COREAD-1 |
| 3048 | CDF 30 |
| 3049 | 4400-1 |
| 3050 | JMP G16K |
| 3051 | L16K, JMS I (7607 |
| 3052 | 4200 |
| 3053 | 3200 /WRITE OUT I/O-OVERLAY |
| 3054 | IOVRLC |
| 3055 | JMP OVERR /ERROR WRITING OVERLAY |
| 3056 | M3000, JMS I (7607 |
| 3057 | 5400 /4 OVERLAYS |
| 3058 | 5600 /WRITE OUT Q-OVERLAY AND E-OVERLAY |
| 3059 | QOVRLC |
| 3060 | JMP OVERR /ERROR WRITING OUT OVERLAY |
| 3061 | G16K, DCA I (ERRXX |
| 3062 | JMP I OVINIT /RETURN |
| 3063 | |
| 3064 | OVERR, TAD [-400 /SWAP IN ERROR OVERLAY FROM CORE AND MAKE SURE |
| 3065 | JMS MOVE /WE RETURN TO MONITOR |
| 3066 | CDF 0 |
| 3067 | 6200-1 |
| 3068 | CDF 0 |
| 3069 | 3200-1 |
| 3070 | / DCA I (ERRTMP /SET FATAL SWITCH |
| 3071 | TAD (FATALJ |
| 3072 | DCA I (CHOOPS |
| 3073 | ERR30, JMP I (ERRYY /CALL ERROR MESSAGE PROCESSOR |
| 3074 | |
| 3075 | M2000, -2000 |
| 3076 | M5, -5 |
| 3077 | \fMOVE, 0 |
| 3078 | DCA MQ |
| 3079 | TAD I MOVE |
| 3080 | DCA MOVEL |
| 3081 | ISZ MOVE |
| 3082 | TAD I MOVE |
| 3083 | DCA INXR |
| 3084 | ISZ MOVE |
| 3085 | TAD I MOVE |
| 3086 | DCA MOVEC |
| 3087 | ISZ MOVE |
| 3088 | TAD I MOVE |
| 3089 | DCA XR |
| 3090 | ISZ MOVE |
| 3091 | MOVEL, HLT |
| 3092 | TAD I INXR |
| 3093 | MOVEC, HLT |
| 3094 | DCA I XR |
| 3095 | CDF 0 |
| 3096 | ISZ MQ |
| 3097 | JMP MOVEL |
| 3098 | JMP I MOVE |
| 3099 | \f /ROUTINES TO BE (POSSIBLY) SWAPPED INTO TECO |
| 3100 | |
| 3101 | *QPUT12 |
| 3102 | RELOC QPUTS |
| 3103 | QPUTS, 0 /12K Q-REGISTER PUT ROUTINE |
| 3104 | AND [377 |
| 3105 | CDF 20 |
| 3106 | DCA I QP |
| 3107 | CDF 0 |
| 3108 | ISZ QP |
| 3109 | JMP I QPUTS |
| 3110 | |
| 3111 | RELOC GETQX |
| 3112 | GETQX, 0 /12K Q-REGISTER GET ROUTINE |
| 3113 | DCA CHKCTC |
| 3114 | CDF 20 |
| 3115 | TAD I CHKCTC |
| 3116 | CDF 0 |
| 3117 | AND [377 |
| 3118 | JMP I GETQX |
| 3119 | |
| 3120 | RELOC ASR33 |
| 3121 | JMP OUTCMX / FORM FEED/VERT. TAB - USE 8/4 FILLERS |
| 3122 | OUTHTX, TAD COLCT /GET COLUMN COUNTER |
| 3123 | RTR |
| 3124 | RAR |
| 3125 | CLA CMA RAL /OUTPUT 2 FILLERS IF MORE THAN 4 CHARS TO TAB |
| 3126 | DCA COLCT /OTHERWISE 1 (COLCT IS A MODULO 8 COUNTER) |
| 3127 | OUTCMX, TAD SCHAR /GET CONTROL CHAR TO TYPE |
| 3128 | PUTT /AND TYPE IT - WE WILL NOW FILL WITH NULLS |
| 3129 | RELOC |
| 3130 | PAGE |
| 3131 | \f/ Q-OVERLAY |
| 3132 | |
| 3133 | *5600 |
| 3134 | |
| 3135 | RELOC 3200 |
| 3136 | |
| 3137 | IOVRLC |
| 3138 | QOVRLY, 0 |
| 3139 | EOVRLC |
| 3140 | XOVRLC |
| 3141 | FOVRLC |
| 3142 | |
| 3143 | /O COMMAND |
| 3144 | |
| 3145 | CHROO, TAD SCANP /O COMMAND |
| 3146 | DCA COOQ /SAVE CURRENT SCAN POINTER |
| 3147 | DCA NFLG |
| 3148 | /??? DCA QFLG /QUOTED "O" COMMAND NOT ALLOWED |
| 3149 | QSKP /CHECK THAT THERE IS REALLY A STRING HERE |
| 3150 | /BECAUSE WE WILL NOT USE "SCAN" TO GET CHARACTERS |
| 3151 | /FROM THIS STRING IN THE SEARCH LOOP. |
| 3152 | TAD ITRST /"O" ONLY SCANS FROM THE BEGINNING OF THE |
| 3153 | DCA SCANP /CURRENT ITERATION LOOP. |
| 3154 | /(JUMPS BACKWARD OUT OF ITERATIONS ARE VERBOTEN) |
| 3155 | SKPSET |
| 3156 | CS41, 41 /SEARCH FOR ! |
| 3157 | TAD CS41 |
| 3158 | DCA QUOTE /SET QUOTE CHAR TO ! |
| 3159 | TAD COOQ |
| 3160 | TAD QBASE |
| 3161 | DCA QP /SET UP PTR TO ACCESS GOTO STRING |
| 3162 | COOC, TAD QP |
| 3163 | GETQ /GET CHAR FROM GOTO STRING |
| 3164 | CIA |
| 3165 | DCA MQ /SAVE IT |
| 3166 | QUOTST /GET CHAR FROM LABEL |
| 3167 | JMP COOB /LABEL EXHAUSTED |
| 3168 | TAD MQ |
| 3169 | SZA CLA /MATCH? |
| 3170 | JMP CSMQ /NO - REJOIN SEARCH ROUTINE FOR ANOTHER ! |
| 3171 | ISZ QP |
| 3172 | JMP COOC |
| 3173 | COOB, TAD MQ |
| 3174 | TAD CAAM /IS GOTO STRING EXHAUSTED TOO? |
| 3175 | SZA CLA |
| 3176 | JMP CSMQ+1 /NO - REJOIN ! SEARCH ROUTINE |
| 3177 | ENTRCE /RE-ENABLE TRACE |
| 3178 | JMP I [IREST |
| 3179 | COOQ, 0 |
| 3180 | \f/ROUTINE TO SKIP COMMANDS UP TO A CHARACTER |
| 3181 | |
| 3182 | SETSKP, 0 /SET UP TO SKIP COMMANDS |
| 3183 | TAD I SETSKP |
| 3184 | DCA SKPLST /CHAR TO TRAP ON |
| 3185 | NOTRCE /DISABLE TRACE MODE |
| 3186 | CSML1, DCA BRACKS /INITIALIZE BRACKET LEVEL |
| 3187 | CSML, SCANUP /GET A COMMAND CHAR |
| 3188 | SORT |
| 3189 | SKPLST |
| 3190 | SKPTAB-SKPLST |
| 3191 | JMP CSML /NOTHING SPECIAL - KEEP GOING |
| 3192 | CSMD, SCAN /CLEAR OUT MODIFIER |
| 3193 | JMP CSML |
| 3194 | |
| 3195 | CSMU, SCAN /SKIP ^U COMMAND |
| 3196 | SKP CLA /GET RID OF Q-REG NUMBER |
| 3197 | CSMFS, QSKP /FS COMMAND - SKIP FIRST STRING |
| 3198 | CSMQ, QSKP /SKIP OVER A QUOTED STRING |
| 3199 | CSMQ1, PUSHJ |
| 3200 | IREST /FIX UP QUOTE CHAR |
| 3201 | JMP CSML /KEEP GOING |
| 3202 | |
| 3203 | CSMY, TAD SCHAR /SKIP ROUTINE FOR ^A AND ! |
| 3204 | DCA QUOTE /WE MUST SCAN UNTIL WE FIND |
| 3205 | JMP CSMQ /A COPY OF THE COMMAND CHARACTER. |
| 3206 | \f /SORT LIST FOR " COMMAND |
| 3207 | |
| 3208 | CNDLST, 103 /C |
| 3209 | 107 /G |
| 3210 | 116 /N |
| 3211 | 114 /L |
| 3212 | 105 /E |
| 3213 | 124 /T |
| 3214 | 123 /S |
| 3215 | 106 /F |
| 3216 | 125 /U |
| 3217 | 122 /R |
| 3218 | 74 /< |
| 3219 | 76 /> |
| 3220 | |
| 3221 | CSME, SCANUP /FOUND E COMMAND |
| 3222 | SORT |
| 3223 | ESKLST /LOOK FOR ER & EW & EG |
| 3224 | ESKTAB-ESKLST /USE CSMQ TO SKIP |
| 3225 | JMP CSML /NO STRING |
| 3226 | |
| 3227 | CSMF, SCAN /F COMMAND - BETTER BE FOLLOWED BY S,N, OR _ |
| 3228 | CLA |
| 3229 | JMP CSMFS /SCAN OFF TWO STRINGS |
| 3230 | |
| 3231 | CSMI, ISZ BRACKS /INCREMENT BRACKET LEVEL |
| 3232 | JMP CSML |
| 3233 | |
| 3234 | CSMO, STA |
| 3235 | TAD BRACKS /DECREMENT BRACKET LEVEL |
| 3236 | SPA |
| 3237 | JMS I (POPITR /IF WE EXIT <> POP OFF ITERATION VALUES |
| 3238 | JMP CSML1 |
| 3239 | |
| 3240 | SKPRTN, TAD BRACKS /WE HAVE FOUND THE DESIRED CHARACTER |
| 3241 | SZA CLA /BUT IF THE BRACKET LEVEL IS NON-ZERO, |
| 3242 | JMP I XSORTA1 /WE CANNOT ACCEPT IT - KEEP SORTING |
| 3243 | JMP I SETSKP /EVERYTHING IS OK - RETURN |
| 3244 | |
| 3245 | BRACKS, 0 |
| 3246 | \f/SORT LIST FOR SKIPPING OVER COMMANDS |
| 3247 | |
| 3248 | SKPLST, 0 /TRAP CHAR |
| 3249 | 41 /! |
| 3250 | 76 /> |
| 3251 | 74 /< |
| 3252 | 42 /" |
| 3253 | 136 /^ |
| 3254 | 100 /@ |
| 3255 | 1 /^A |
| 3256 | 11 /TAB |
| 3257 | 25 /^U |
| 3258 | 36 /^^ |
| 3259 | 105 /E |
| 3260 | 106 /F |
| 3261 | 111 /I |
| 3262 | 116 /N |
| 3263 | 117 /O |
| 3264 | 123 /S |
| 3265 | 137 /_ |
| 3266 | 121 /Q |
| 3267 | 125 /U |
| 3268 | 130 /X |
| 3269 | 107 /G |
| 3270 | 115 /M |
| 3271 | 45 /% |
| 3272 | \f/ SKIP LIST FOR E'S |
| 3273 | ESKLST, 122 /R |
| 3274 | 127 /W |
| 3275 | 102 /B |
| 3276 | 107 /G |
| 3277 | |
| 3278 | CSMA, STA /LIST TERMINATOR |
| 3279 | JMP CSMQ1 /FOUND @ - SET QUOTE FLAG AND CONTINUE |
| 3280 | |
| 3281 | |
| 3282 | XSORTA1,SORTA1 |
| 3283 | PAGE |
| 3284 | \f/DISPATCH TABLE FOR SKIPPING OVER COMMANDS: |
| 3285 | |
| 3286 | SKPTAB, SKPRTN /DESIRED CHARACTER - RETURN |
| 3287 | CSMY /! |
| 3288 | CSMO /> |
| 3289 | CSMI /< |
| 3290 | CNDI /" |
| 3291 | CSMC /^ |
| 3292 | CSMA /@ |
| 3293 | CSMY /^A |
| 3294 | CSMQ /TAB |
| 3295 | CSMU /^U |
| 3296 | CSMD /^^ |
| 3297 | CSME /E |
| 3298 | CSMF /F |
| 3299 | ESKTAB, CSMQ /I OR ER |
| 3300 | CSMQ /N OR EW |
| 3301 | CSMQ /O OR EB |
| 3302 | CSMQ /S OR EG |
| 3303 | CSMQ /_ |
| 3304 | CSMD /Q |
| 3305 | CSMD /U |
| 3306 | CSMD /X |
| 3307 | CSMD /G |
| 3308 | CSMD /M |
| 3309 | CSMD /% |
| 3310 | \fSEMO, SKPSET /PLOD THRU |
| 3311 | 76 /LOOKING FOR > |
| 3312 | ENTRCE /IT'S THE RIGHT ONE, TURN TRACE BACK ON |
| 3313 | JMP I ZCGSG |
| 3314 | ZCGSG, CGSG |
| 3315 | |
| 3316 | CNDTAB, TSTSEP /LEGAL CONSTITUENT OF SYMBOL FOR ASSEMBLER |
| 3317 | SZL SNA CLA /GT 0 |
| 3318 | SNA CLA /NE 0 |
| 3319 | SNL CLA /LT 0 |
| 3320 | SZA CLA /EQ 0 |
| 3321 | SNL CLA /TRUE |
| 3322 | SNL CLA /SUCCESSFUL |
| 3323 | SZA CLA /FALSE |
| 3324 | SZA CLA /UNSUCCESSFUL |
| 3325 | TSTSEP /ALPHANUMERIC |
| 3326 | SNL CLA /< |
| 3327 | SZL SNA CLA /> |
| 3328 | |
| 3329 | /THIS TABLE PRESUPPOSES 1000000000000 IS ILLEGAL |
| 3330 | \f /COMMANDS " AND ' |
| 3331 | |
| 3332 | CDBQO, NCHK /COMMAND " |
| 3333 | ERR23, ERR /NO NUMBER TO TEST |
| 3334 | SCANUP |
| 3335 | SORT |
| 3336 | CNDLST |
| 3337 | CNDTAB-CNDLST |
| 3338 | SMA /CHECK THAT CHAR WAS TRANSLATED |
| 3339 | ERR20, ERR /NO - NO SUCH TEST |
| 3340 | DCA SKIP /STORE TEST INSTRUCTION |
| 3341 | GETNUM /PERFORM THE TEST |
| 3342 | SKIP, HLT /TEST SKIPS IF TRUE |
| 3343 | SKP CLA |
| 3344 | POPJ /CONDITION SATISFIED |
| 3345 | STA /NOT SATISFIED |
| 3346 | DCA SKIP /BEGINNING SKIPPING COMMANDS |
| 3347 | SKPSET /CALL SKIPPING ROUTINE |
| 3348 | 47 /FIND A ' |
| 3349 | ISZ SKIP /FOUND A ' |
| 3350 | RESORT /NEED ANOTHER: BACK TO CSML |
| 3351 | ENTRCE /RE-ENABLE TRACE |
| 3352 | JMP I [IREST /COMMAND ' NO ACTION TO TAKE |
| 3353 | |
| 3354 | CNDI, SCAN /HIT ANOTHER " |
| 3355 | STA /SO SKIP MATCHING ' |
| 3356 | TAD SKIP |
| 3357 | DCA SKIP |
| 3358 | RESORT /GO BACK TO CSML |
| 3359 | \f/COMMANDS ; AND > |
| 3360 | |
| 3361 | CSEMO, TAD ITRST /COMMAND ; - ALSO HERE ON FAILING NON-COLON SEARCH |
| 3362 | SNA CLA |
| 3363 | ERR09, ERR /IF NOT IN ITERATION |
| 3364 | CSEM2, TAD NLINK |
| 3365 | SNA CLA |
| 3366 | NCHK |
| 3367 | JMP I (ZRON /NO NUMBER - IGNORE IT, WE DID IT ALREADY |
| 3368 | JMP SEMO /SEARCH FOR > |
| 3369 | |
| 3370 | CHGTO, TAD ITRCNT |
| 3371 | SNA CLA |
| 3372 | JMP CGTC /0 MEANS INFINITY |
| 3373 | ISZ ITRCNT /LOOK FOR COUNT EXHAUSTED |
| 3374 | JMP CGTC /NO, CONTINUE |
| 3375 | CGSG, JMS POPITR /POP UP OLD ITERATION PARAMETERS |
| 3376 | JMP I [IREST |
| 3377 | CGTC, TAD ITRST |
| 3378 | SNA |
| 3379 | ERR10, ERR /IF NOT IN ITERATION |
| 3380 | JMP I (ZROSPN /BACK TO ROOT |
| 3381 | |
| 3382 | POPITR, 0 |
| 3383 | CLA IAC /** AC NOT NECESSARILY 0 ON ENTRY |
| 3384 | POPL |
| 3385 | ITRCNT |
| 3386 | ITRST |
| 3387 | JMP I POPITR |
| 3388 | \fCHLTO, MTWO /COMMAND < |
| 3389 | PUSHL |
| 3390 | ITRST |
| 3391 | ITRCNT |
| 3392 | TAD NFLG |
| 3393 | SNA CLA /WAS A NUMBER SPECIFIED? |
| 3394 | JMP INF /NO, ASSUME INFINITY |
| 3395 | TAD NLINK |
| 3396 | SNA CLA |
| 3397 | TAD N |
| 3398 | SNA |
| 3399 | JMP SEMO /0 OR NEGATIVE MEANS SKIP ITERATION |
| 3400 | CIA /MAKE NEGATIVE |
| 3401 | INF, DCA ITRCNT /SET UP TERMINATION |
| 3402 | TAD SCANP /SAVE CURRENT SCAN PNTR |
| 3403 | DCA ITRST /ALWAYS .GE. 1 IN ITERATION |
| 3404 | DCA NFLG /CLEAR NUMBER FLAG |
| 3405 | POPJ |
| 3406 | |
| 3407 | /SHOULD WE TREAT 0<> SPECIAL? |
| 3408 | PAGE |
| 3409 | RELOC |
| 3410 | \f/ ERROR-OVERLAY |
| 3411 | |
| 3412 | *6200 |
| 3413 | |
| 3414 | RELOC 3200 |
| 3415 | |
| 3416 | IOVRLC |
| 3417 | QOVRLC |
| 3418 | EOVRLY, 0 |
| 3419 | XOVRLC |
| 3420 | FOVRLC |
| 3421 | |
| 3422 | ERRYY, DCA N |
| 3423 | TAD (ERLIST-1 |
| 3424 | DCA XR |
| 3425 | ERLOOP, ISZ N /BUMP ERROR NUMBER |
| 3426 | TAD I XR |
| 3427 | SZA /END OF LIST? |
| 3428 | TAD I (ERRXX /NO - CHECK FOR MATCH |
| 3429 | Z40, SZA CLA /FOUND WHAT WE WANTED? |
| 3430 | JMP ERLOOP /NO - KEEP LOOKING |
| 3431 | TAD N |
| 3432 | CLL RAL /MULTIPLY BY 2 |
| 3433 | TAD (ERBASE-2 |
| 3434 | DCA PTR |
| 3435 | TAD I PTR /GET FIRST WORD OF ERR MSG |
| 3436 | SPA CLA |
| 3437 | JMP CTCT /^C TRAP |
| 3438 | ERL2, TAD [77 |
| 3439 | TYPE |
| 3440 | TAD I PTR |
| 3441 | RTR |
| 3442 | RTR |
| 3443 | RTR |
| 3444 | JMS I (SIXTYP /TYPE LEFT CHARACTER |
| 3445 | TAD I PTR |
| 3446 | JMS I (SIXTYP /TYPE RIGHT CHARACTER |
| 3447 | ISZ PTR |
| 3448 | TAD I PTR |
| 3449 | RTR |
| 3450 | RTR |
| 3451 | RTR |
| 3452 | JMS I (SIXTYP /TYPE 3RD CHARACTER |
| 3453 | CLA IAC |
| 3454 | AND I (EHFLAG |
| 3455 | SZA CLA |
| 3456 | JMP I (ERRRET |
| 3457 | MTHREE |
| 3458 | TAD MEMSIZ |
| 3459 | SPA CLA |
| 3460 | JMP I (ERRRET /NO LONG ERROR MESSAGE UNLESS 16K OOR MORE |
| 3461 | TAD Z40 /TYPE EXTENDED ERROR MESSAGE |
| 3462 | TYPE |
| 3463 | TAD Z40 |
| 3464 | TYPE |
| 3465 | / TAD Z40 |
| 3466 | / TYPE |
| 3467 | TAD N |
| 3468 | TAD (XERBAS-1 |
| 3469 | DCA PTR /GET PTR TO PTR TO ERROR MSG |
| 3470 | CDF 30 |
| 3471 | TAD I PTR /GET PTR TO ERROR MESSAGE |
| 3472 | DCA PTR |
| 3473 | XLUP, TAD I PTR |
| 3474 | CDF 0 |
| 3475 | SNA |
| 3476 | JMP I (ERRRET |
| 3477 | SPA |
| 3478 | JMS NEGCHR /NEGATIVE CHAR IS FLAG FOR ERRONEOUS CHARACTER |
| 3479 | PUTT |
| 3480 | ISZ PTR |
| 3481 | CDF 30 |
| 3482 | JMP XLUP |
| 3483 | |
| 3484 | CTCT, KRS /CTRL/C ERROR MESSAGE |
| 3485 | AND [177 /ISOLATE ^C OR ^P INTO 7-BIT |
| 3486 | TYPE /READ CTRL/C FROM BUFFER |
| 3487 | CRLF /ECHO IT AND CR LF |
| 3488 | TAD I [QPNTR |
| 3489 | SZA CLA |
| 3490 | JMP ERL2 /PRINT XAB ERROR MESSAGE |
| 3491 | / MTHREE |
| 3492 | / TAD CHAR /LOOK AT PREVIOUS CHARACTER |
| 3493 | / SZA CLA |
| 3494 | / JMP I (ERRRET /ONE ^C DO NOTHING |
| 3495 | JMP I (CTLC /TWO ^C'S, ABORT |
| 3496 | \fNEGCHR, 0 |
| 3497 | CLA |
| 3498 | TAD LASTC |
| 3499 | SORT |
| 3500 | CACR |
| 3501 | ERPTAB-CACR |
| 3502 | SPA |
| 3503 | DCA LASTC /SAVE $ FOR ALTMODE |
| 3504 | CLA |
| 3505 | TAD ("" |
| 3506 | PUTT |
| 3507 | TAD LASTC |
| 3508 | AND [7740 |
| 3509 | SNA CLA |
| 3510 | JMS WOW /USE CARRET FORM FOR CONTROL CHARS |
| 3511 | TAD LASTC /AC MAY BE NON-0 |
| 3512 | PUTT |
| 3513 | TAD ("" |
| 3514 | JMP I NEGCHR |
| 3515 | |
| 3516 | WOW, 0 |
| 3517 | TAD ("^ |
| 3518 | PUTT |
| 3519 | TAD [100 |
| 3520 | JMP I WOW |
| 3521 | |
| 3522 | SPY, TAD LASTC |
| 3523 | TAD (-11+CNVTAB |
| 3524 | DCA WOW |
| 3525 | TAD ("< |
| 3526 | PUTT |
| 3527 | TAD I WOW |
| 3528 | RTR |
| 3529 | RTR |
| 3530 | RTR |
| 3531 | JMS I (SIXTYP |
| 3532 | TAD I WOW |
| 3533 | JMS I (SIXTYP |
| 3534 | TAD ("> |
| 3535 | JMP I NEGCHR |
| 3536 | \fPTR, 0 |
| 3537 | |
| 3538 | PAGE |
| 3539 | \fSIXTYP, 0 |
| 3540 | AND [137 /IGNORE SIGN BIT OF BYTE |
| 3541 | TAD [40 |
| 3542 | AND [77 |
| 3543 | TAD [40 |
| 3544 | PUTT |
| 3545 | JMP I SIXTYP |
| 3546 | \fERLIST, -ERR01-1 /LIST OF POINTERS TO ALL POSSIBLE |
| 3547 | -ERR02-1 /CALLS TO THE ERROR ROUTINE. |
| 3548 | -ERR03-1 |
| 3549 | -ERR04-1 |
| 3550 | -ERR05-1 |
| 3551 | -ERR06-1 |
| 3552 | -ERR07-1 |
| 3553 | -ERR08-1 |
| 3554 | -ERR09-1 |
| 3555 | -ERR10-1 |
| 3556 | -ERR11-1 |
| 3557 | -ERR12-1 |
| 3558 | -ERR13-1 |
| 3559 | -ERR14-1 |
| 3560 | -ERR15-1 |
| 3561 | -ERR16-1 |
| 3562 | -ERR17-1 |
| 3563 | -ERR18-1 |
| 3564 | -ERR19-1 |
| 3565 | -ERR20-1 |
| 3566 | -ERR21-1 |
| 3567 | -ERR22-1 |
| 3568 | -ERR23-1 |
| 3569 | -ERR24-1 |
| 3570 | -ERR25-1 |
| 3571 | -ERR26-1 |
| 3572 | -ERR27-1 |
| 3573 | ERR28, -ERR28-1 |
| 3574 | -ERR29-1 |
| 3575 | -ERR30-1 |
| 3576 | -ERR31-1 |
| 3577 | -ERR32-1 |
| 3578 | -ERR33-1 |
| 3579 | -ERR34-1 |
| 3580 | -ERR35-1 |
| 3581 | 0 /ERROR 36 - UNLABELED ERROR - NAMELY "JMS I OUTR" |
| 3582 | /** MUST BE LAST ERROR MESSAGE |
| 3583 | \fERBASE, TEXT /ILL/ /1 ILLEGAL COMMAND |
| 3584 | TEXT /UTC/ /2 UNTERMINATED COMMAND |
| 3585 | TEXT /IQN/ /3 ILLEGAL Q-REGISTER NAME |
| 3586 | TEXT /PDO/ /4 INTERNAL PUSH DOWN OVERFLOW (RECURSION) |
| 3587 | TEXT /MEM/ /5 MEMORY OVERFLOW |
| 3588 | TEXT /STL/ /6 SEARCH STRING TOO LONG |
| 3589 | TEXT /ARG/ /7 ARGUMENT ERROR |
| 3590 | TEXT /IFN/ /8 ILLEGAL FILE NAME |
| 3591 | TEXT /SNI/ /9 SEMICOLON NOT IN ITERATION |
| 3592 | TEXT /BNI/ /10 CLOSE BRACKET NOT IN ITERATION |
| 3593 | TEXT /POP/ /11 POINTER OFF PAGE |
| 3594 | TEXT /QMO/ /12 Q-REGISTER MEMORY OVERFLOW |
| 3595 | TEXT /UTM/ /13 UNTERMINATED MACRO |
| 3596 | TEXT /OUT/ /14 OUTPUT ERROR |
| 3597 | TEXT /INP/ /15 INPUT ERROR |
| 3598 | TEXT /FER/ /16 FILE ERROR |
| 3599 | TEXT /FUL/ /17 OUTPUT COMMAND WOULD HAVE OVERFLOWED |
| 3600 | TEXT /NAY/ /18 NEGATIVE ARGUMENT TO Y |
| 3601 | TEXT /IEC/ /19 ILLEGAL E CHARACTER |
| 3602 | TEXT /IQC/ /20 ILLEGAL " CHARACTER |
| 3603 | TEXT /NAE/ /21 NO ARGUMENT BEFORE = |
| 3604 | TEXT /NAU/ /22 NO ARGUMENT BEFORE U |
| 3605 | TEXT /NAQ/ /23 NO ARGUMENT BEFORE " |
| 3606 | TEXT /SRH/ /24 FAILING SEARCH |
| 3607 | TEXT /NAP/ /25. NEGATIVE OR 0 ARGUMENT TO P |
| 3608 | TEXT /NAC/ /26. NEGATIVE ARGUMENT TO , |
| 3609 | TEXT /NYI/ /27. ^W NOT IMPLEMENTED |
| 3610 | TEXT /DMY/ /28. NOT USED |
| 3611 | TEXT /NAS/ /29. NEGATIVE OR 0 COUNT TO SEARCH |
| 3612 | TEXT /WLO/ /30. CAN'T WRITE OUT ERROR MESSAGE OVERLAY |
| 3613 | TEXT /IFC/ /31. ILLEGAL F CHARACTER |
| 3614 | TEXT /YCA/ /32. Y COMMAND ABORTED |
| 3615 | TEXT /CCL/ /33. CCL NOT FOUND OR EG TOO BIG |
| 3616 | / TEXT /XAB/ /34. EXECUTION ABORTED BY ^C |
| 3617 | 7001;0200 |
| 3618 | TEXT /NYI/ /35. ^V NOT IMPLEMENTED |
| 3619 | TEXT /NFO/ /36. NO FILE FOR OUTPUT |
| 3620 | \fCNVTAB, TEXT /HTLFVTFFCR/ |
| 3621 | *.-1 |
| 3622 | ERPTAB, SPY /CR |
| 3623 | SPY /HT |
| 3624 | 4044 /$ |
| 3625 | SPY /FF |
| 3626 | SPY /VT |
| 3627 | SPY /LF |
| 3628 | PAGE |
| 3629 | RELOC |
| 3630 | \f/ X-OVERLAY |
| 3631 | |
| 3632 | *6600 |
| 3633 | |
| 3634 | RELOC 3200 |
| 3635 | |
| 3636 | IOVRLC |
| 3637 | QOVRLC |
| 3638 | EOVRLC |
| 3639 | XOVRLY, 0 |
| 3640 | FOVRLC |
| 3641 | |
| 3642 | CHREX, TAD I (TYI |
| 3643 | SORT |
| 3644 | XLIS |
| 3645 | XTAB-XLIS |
| 3646 | ERR /CAN'T HAPPEN |
| 3647 | |
| 3648 | XLIS, 103 /EC |
| 3649 | 106 /EF |
| 3650 | 107 /EG |
| 3651 | 113 /EK |
| 3652 | 130 /EX |
| 3653 | |
| 3654 | /"EX" AND "EC" COMMANDS |
| 3655 | EXIT, PUSHJ /"EX" COMMAND |
| 3656 | EXITC /CLOSE OUT THE FILES |
| 3657 | JMP I (CTLC /AND GO AWAY |
| 3658 | |
| 3659 | EXITC, TAD OUTR /"EC" COMMAND |
| 3660 | CIA /CHECK FOR OPEN OUTPUT FILE |
| 3661 | TAD ERROR |
| 3662 | SNA CLA |
| 3663 | POPJ /NOPE, EXIT ALREADY |
| 3664 | EXLOOP, JMS I [NXTBUF /GET NEXT BUFFER |
| 3665 | TAD REND |
| 3666 | CIA |
| 3667 | TAD ZZ /CHECK FOR END-OF-FILE AND |
| 3668 | SZA CLA /TEXT BUFFER EMPTY |
| 3669 | JMP EXLOOP /NOT YET |
| 3670 | /ENDFILE PROCESSOR |
| 3671 | ENDFIL, TAD OCRCNT |
| 3672 | CMA /REDUCE THE OUTPUT DOUBLEWORD COUNT |
| 3673 | AND [177 /TO REFLECT ONLY THOSE WORDS REMAINING |
| 3674 | CMA /UNTIL THE NEXT BLOCK BOUNDARY |
| 3675 | DCA OCRCNT |
| 3676 | TAD (7200 /USED TO BE 'DV7200' |
| 3677 | DCA MQ /SET COUNTER FOR ONE BLOCK WORTH OF STUFF |
| 3678 | TAD (32 /^Z END-OF-FILE |
| 3679 | OUTPUT |
| 3680 | ISZ MQ |
| 3681 | JMP .-2 /FILL AT LEAST THE CURRENT BUFFER AND OUTPUT IT |
| 3682 | TAD ODEV /MAKE SURE THE USR KNOWS THE HANDLER |
| 3683 | TAD (OSHNDT-1 /*K* - POINTER INTO |
| 3684 | DCA TY / OS/8 DEVICE RESIDENCY TABLE |
| 3685 | CDF 10 |
| 3686 | TAD OUTHND |
| 3687 | DCA I TY /MARK THE HANDLER AS IN CORE |
| 3688 | JMS I (GETUSR /LOCK THE USR INTO CORE |
| 3689 | TAD EBFLG /IS THIS AN EDIT BACKUP? |
| 3690 | SNA CLA |
| 3691 | JMP I (NORMAL /NO, JUST CLOSE FILE |
| 3692 | TAD I (OCNT-1 /YES, LOOKUP OLD FILE TO CHANGE NAME |
| 3693 | DCA TY-1 |
| 3694 | CIF 10 |
| 3695 | TAD ODEV /INPUT AND OUTPUT ARE ON SAME DEVICE |
| 3696 | JMS I [200 |
| 3697 | 2 |
| 3698 | OUNAM |
| 3699 | TY, 0 /USELESS LENGTH--USE IT FOR TEMPORARY |
| 3700 | JMP I (NORMAL /ERROR-JUST CLOSE FILE AND DON'T TELL ANYBODY |
| 3701 | CDF 10 /ALL THAT WAS JUST TO GET THE DIRECTORY IN CORE |
| 3702 | STA /SO WE COULD FIDDLE WITH IT |
| 3703 | TAD I (17 /FORM POINTER TO DIRECTORY ENTRY |
| 3704 | TAD I (1404 |
| 3705 | DCA TY |
| 3706 | TAD (213 /CHANGE EXTENSION TO .BK |
| 3707 | DCA I TY |
| 3708 | TAD I Z7 /DIRECTORY BLOCK IT CAME FROM |
| 3709 | AND Z7 |
| 3710 | DCA ACI |
| 3711 | CDF 0 |
| 3712 | JMS I OUTHND |
| 3713 | 4210 /WRITE IT BACK OUT |
| 3714 | 1400 |
| 3715 | ACI, 0 |
| 3716 | JMP .-4 /ERROR! KEEP TRYING-THIS CAN BLOW A DIRECTORY |
| 3717 | JMP I (NORMAL |
| 3718 | \fXTAB, EXITC /EC |
| 3719 | ENDFIL /EF |
| 3720 | EXITGO /EG |
| 3721 | EKILL /EK |
| 3722 | EXIT /EX |
| 3723 | \fEKILL, TAD ERROR |
| 3724 | DCA OUTR |
| 3725 | POPJ |
| 3726 | PAGE |
| 3727 | \fEXITGO, PUSHJ /DO AN EC TO CLOSE OUT FILE |
| 3728 | EXITC |
| 3729 | QCHK /ALLOW @ |
| 3730 | DCA STOCD /MAKE REUSABLE IN CASE .START |
| 3731 | TAD (7600 |
| 3732 | DCA CDPTR |
| 3733 | TAD (-47 /47 ENTRIES IN CD TABLE |
| 3734 | DCA EGCNT |
| 3735 | EG1, QUOTST |
| 3736 | JMP EG2 |
| 3737 | TAD [200 /TURN ON PARITY BIT FOR OS/8 |
| 3738 | JMS STOCD |
| 3739 | JMP EG1 |
| 3740 | |
| 3741 | STOCD, 0 |
| 3742 | ISZ EGCNT |
| 3743 | SKP |
| 3744 | ERR33, ERR /EG ARG TOO BIG |
| 3745 | CDF 10 |
| 3746 | DCA I CDPTR |
| 3747 | CDF 0 |
| 3748 | ISZ CDPTR |
| 3749 | JMP I STOCD |
| 3750 | |
| 3751 | CDPTR, 7600 |
| 3752 | EGCNT, -41 |
| 3753 | |
| 3754 | EG2, TAD STOCD |
| 3755 | SNA CLA /ANYTHING IS ARG |
| 3756 | JMP REGEG /NO |
| 3757 | JMS STOCD /STORE 0 AT END |
| 3758 | JMS I (GETUSR |
| 3759 | TAD (CCLNAM |
| 3760 | DCA ARG1 /JUST IN CASE PREVIOUS EG FAILED |
| 3761 | CLA IAC /SYS |
| 3762 | CIF 10 |
| 3763 | JMS I [200 |
| 3764 | 2 /LOOKUP |
| 3765 | ARG1, CCLNAM |
| 3766 | 0 |
| 3767 | JMP CCLERR |
| 3768 | TAD (2001 |
| 3769 | DCA I (JSBITS /KEEP USR IN CORE |
| 3770 | TAD ARG1 |
| 3771 | DCA CHNBLK |
| 3772 | CIF 10 |
| 3773 | JMS I [200 |
| 3774 | 6 /CHAIN |
| 3775 | CHNBLK, 0 |
| 3776 | \fCCLERR, PUSHJ |
| 3777 | ECDISM |
| 3778 | JMP ERR33 |
| 3779 | |
| 3780 | CCLNAM, FILENAME CCL.SV |
| 3781 | \fREGEG, /EDIT AND GO - A CCL SPECIAL |
| 3782 | JMS I (7607 /CALL THE OS/8 SYSTEM HANDLER |
| 3783 | 0200 /TO READ IN THE CCL OVERLAY |
| 3784 | CCLADR |
| 3785 | CCLOVL |
| 3786 | JMP ERR33 /ERROR ON SYSTEM DEVICE! |
| 3787 | JMP I .+1 /GO TO THE OVERLAY |
| 3788 | CCLOST /AT OUR "SPECIAL" LOCATION |
| 3789 | RELOC |
| 3790 | \f/ F-OVERLAY |
| 3791 | |
| 3792 | *7200 |
| 3793 | |
| 3794 | RELOC 3200 |
| 3795 | |
| 3796 | IOVRLC |
| 3797 | QOVRLC |
| 3798 | EOVRLC |
| 3799 | XOVRLC |
| 3800 | FOVRLY, 0 |
| 3801 | |
| 3802 | CHRED, TAD I (TYI |
| 3803 | SORT |
| 3804 | DLIS |
| 3805 | DTAB2-DLIS /CHECK FOR LEGALITY |
| 3806 | ERR19, ERR /BAD CHAR AFTER E |
| 3807 | DTOK, TAD I (TYI |
| 3808 | SORT |
| 3809 | DLIS |
| 3810 | DTAB-DLIS |
| 3811 | DCA XXFLAG |
| 3812 | NCHK /ANY ARGUMENT? |
| 3813 | JMP XXNO /NO, RETURN VALUE |
| 3814 | TAD N /YES |
| 3815 | DCA I XXFLAG /SET NEW VALUE |
| 3816 | TAD XXFLAG |
| 3817 | TAD (-EDFLAG+XXSUBS |
| 3818 | DCA XXSUB |
| 3819 | TAD I XXSUB |
| 3820 | DCA XXSUB |
| 3821 | JMS I XXSUB /CALL IT |
| 3822 | POPJ /RETURN |
| 3823 | XXNO, TAD I XXFLAG /GET VALUE |
| 3824 | JMP I (NNEW13 /MAKE NEW 13-BIT VALUE |
| 3825 | |
| 3826 | DLIS, 104 /ED |
| 3827 | 110 /EH |
| 3828 | 117 /EO |
| 3829 | 123 /ES |
| 3830 | 124 /ET |
| 3831 | 125 /EU |
| 3832 | DTAB, EDFLAG /MUST BE NEGATIVE |
| 3833 | EHFLAG /TO CAUSE SUBSTITUTION |
| 3834 | EOFLAG |
| 3835 | ESFLAG |
| 3836 | ETFLAG |
| 3837 | EUFLAG |
| 3838 | \fXXFLAG, 0 /POINTS TO FLAG IN MEMORY ABOVE 4000 |
| 3839 | |
| 3840 | DTAB2, DTOK |
| 3841 | DTOK |
| 3842 | DTOK |
| 3843 | DTOK |
| 3844 | DTOK |
| 3845 | DTOK |
| 3846 | |
| 3847 | XXSUB, 0 |
| 3848 | \f/ MASK;SKIP;LOC;VALUE IF SKIPS;VALUE IF NO SKIP |
| 3849 | |
| 3850 | EUSUB, 0 |
| 3851 | JMS FIXUP |
| 3852 | 7777; SMA CLA; EU1; CLA; SNA CLA |
| 3853 | 7777; SPA SNA CLA; EU2; TAD [40;NOP |
| 3854 | 0 |
| 3855 | JMP I EUSUB |
| 3856 | |
| 3857 | ETSUB, 0 |
| 3858 | JMS FIXUP |
| 3859 | 1; SNA CLA; KTYPE; PUTT; TYPE |
| 3860 | 1; SNA CLA; ET1; PUTT; TYPE |
| 3861 | 10; SNA CLA; ET8; CLA; TYPE |
| 3862 | 0 |
| 3863 | JMP I ETSUB |
| 3864 | |
| 3865 | \fLOC, 0 |
| 3866 | MASK, 0 |
| 3867 | |
| 3868 | FIXUP, 0 |
| 3869 | FIXLUP, TAD I FIXUP |
| 3870 | SNA |
| 3871 | JMP I FIXUP /DONE, RETURN TO 0 |
| 3872 | DCA MASK /SAVE MASK |
| 3873 | ISZ FIXUP |
| 3874 | TAD I FIXUP |
| 3875 | DCA SKIPY /SAVE SKIP CONDITION |
| 3876 | ISZ FIXUP |
| 3877 | TAD I FIXUP |
| 3878 | DCA LOC /SAVE LOC TO CHANGE |
| 3879 | ISZ FIXUP |
| 3880 | TAD I XXFLAG /LOOK AT FLAG |
| 3881 | AND MASK /'AND' WITH MASK |
| 3882 | SKIPY, HLT |
| 3883 | JMP SKPF |
| 3884 | TAD I FIXUP |
| 3885 | DCA I LOC |
| 3886 | ISZ FIXUP |
| 3887 | SKPT, ISZ FIXUP |
| 3888 | JMP FIXLUP |
| 3889 | SKPF, ISZ FIXUP |
| 3890 | TAD I FIXUP |
| 3891 | DCA I LOC |
| 3892 | JMP SKPT |
| 3893 | \fCTLUO, QREF /COMMAND ^U |
| 3894 | QSKP /COUNT UP STRING |
| 3895 | TAD OSCANP |
| 3896 | CMA |
| 3897 | TAD SCANP /LENGTH OF STRING |
| 3898 | / |
| 3899 | / *** PROHIBIT STRING > 2047 CHARS |
| 3900 | / |
| 3901 | ADJQ /ADJUST Q-REGISTERS AND SET NEW LENGTH |
| 3902 | TAD OSCANP /RESET SCAN POINTER |
| 3903 | DCA SCANP |
| 3904 | DCA NFLG |
| 3905 | NOTRCE |
| 3906 | CCUB, QUOTST |
| 3907 | JMP CTLUND |
| 3908 | QPUT |
| 3909 | JMP CCUB |
| 3910 | CTLUND, ENTRCE |
| 3911 | JMP I [IREST |
| 3912 | PAGE |
| 3913 | \f/NUMERICAL OUTPUT ROUTINE |
| 3914 | |
| 3915 | ZEROD, 0 |
| 3916 | DCA ZERFLG /INITIALIZE "LEADING ZEROS" FLAG |
| 3917 | TAD I ZEROD |
| 3918 | ISZ ZEROD |
| 3919 | DCA OUTDEV /SAVE OUTPUT ROUTINE ADDRESS |
| 3920 | TAD NLINK /POS OR NEGATIVE? |
| 3921 | SNA CLA |
| 3922 | JMP ZER2 /POSITIVE |
| 3923 | TAD RADIX |
| 3924 | TAD (-ORAD |
| 3925 | SNA CLA |
| 3926 | JMP PUTSGN /OCTAL |
| 3927 | TAD N /DECIMAL |
| 3928 | CIA |
| 3929 | DCA N /NEGATE |
| 3930 | SKP |
| 3931 | PUTSGN, TAD ["1-"- |
| 3932 | TAD ("- |
| 3933 | JMS I OUTDEV /OUTPUT MINUS SIGN |
| 3934 | ZER2, MTHREE |
| 3935 | DCA ZCOUNT /ITERATION COUNT |
| 3936 | TAD RADIX |
| 3937 | DCA RXR |
| 3938 | ZDIGIT, ISZ RXR |
| 3939 | TAD I RXR |
| 3940 | DCA DIV1 /GET DIVISOR |
| 3941 | TAD N |
| 3942 | MQLDVI /DIVIDE BY A POWER OF THE BASE |
| 3943 | DIV1, 0 |
| 3944 | TAD ZERFLG |
| 3945 | SNA |
| 3946 | JMP LZ /IGNORE LEADING ZEROS |
| 3947 | TAD (60 |
| 3948 | JMS I OUTDEV |
| 3949 | STL RAR |
| 3950 | DCA ZERFLG /SET LEADING ZEROS FLAG |
| 3951 | LZ, TAD DVT1 /GET REMAINDER |
| 3952 | DCA N |
| 3953 | ISZ ZCOUNT /GO AROUND AGAIN? |
| 3954 | JMP ZDIGIT /WHY NOT? |
| 3955 | TAD N |
| 3956 | TAD (60 |
| 3957 | JMS I OUTDEV /OUTPUT LAST DIGIT NO MATTER WHAT |
| 3958 | JMP I ZEROD |
| 3959 | |
| 3960 | OUTDEV, 0 /WHERE WE'RE SENDING THE DIGITS |
| 3961 | ZERFLG, 0 |
| 3962 | ZCOUNT, 0 |
| 3963 | RXR, 0 |
| 3964 | \f/COMMANDS = AND \ |
| 3965 | |
| 3966 | /COMMANDS = AND \ - NUMERICAL OUTPUT |
| 3967 | |
| 3968 | CEQLO, NCHK /COMMAND = |
| 3969 | ERR21, ERR /NO NUMBER |
| 3970 | TAD RADIX |
| 3971 | DCA RADTMP |
| 3972 | JMS I (POKE /LOOK AHEAD ONE CHARACTER |
| 3973 | TAD (-75 /CHECK FOR = SIGN |
| 3974 | SZA CLA |
| 3975 | JMP SETRAD /SINGLE = |
| 3976 | SCAN /DOUBLE = (PASS UP SECOND ONE) |
| 3977 | SKP CLA /CLEAR AC |
| 3978 | SETRAD, TAD [4 |
| 3979 | TAD (ORAD |
| 3980 | DCA RADIX /SET OCTAL RADIX TEMPORARILY |
| 3981 | JMS ZEROD |
| 3982 | TPUT |
| 3983 | TAD RADTMP |
| 3984 | DCA RADIX /RESTORE ORIGINAL RADIX |
| 3985 | ISZ CLNF /: SEEN? |
| 3986 | CRLF /NO, END WITH CRLF |
| 3987 | DCA CLNF |
| 3988 | POPJ |
| 3989 | |
| 3990 | CBSLO, NCHK /COMMAND \ |
| 3991 | JMP CBSN |
| 3992 | JMS ZEROD |
| 3993 | UPOC |
| 3994 | POPJ |
| 3995 | |
| 3996 | RADTMP, 0 |
| 3997 | \fCBSN, PUSHJ |
| 3998 | NMBR2 /INITIALIZE RESULT TO 0 |
| 3999 | JMS PTCH |
| 4000 | TAD I P |
| 4001 | AND [377 /GET CURRENT CHARACTER |
| 4002 | CDF 0 |
| 4003 | TAD (-55 /CHECK FOR MINUS SIGN |
| 4004 | SZA |
| 4005 | JMP .+3 /NOT MINUS |
| 4006 | PUSHJ |
| 4007 | CMIN /RECORD MINUS SIGN |
| 4008 | CIA |
| 4009 | CLL RTR |
| 4010 | SNA CLA /CHECK FOR PLUS SIGN |
| 4011 | CBSNP, ISZ P /BUMP POINTER PAST SIGN |
| 4012 | JMS PTCH |
| 4013 | TAD I P /GET A CHAR |
| 4014 | AND [377 |
| 4015 | CDF 0 |
| 4016 | TAD (-72 |
| 4017 | CLL |
| 4018 | TAD CALF |
| 4019 | SNL /IS IT A DIGIT? |
| 4020 | POPJ /NO |
| 4021 | PUSHJ |
| 4022 | NMBR2 /YES - ACCUMULATE IT |
| 4023 | JMP CBSNP /AND LOOP |
| 4024 | \fPTCH, 0 |
| 4025 | TAD P /V3C |
| 4026 | STL CIA /CHECK FOR END OF BUFFER |
| 4027 | TAD ZZ |
| 4028 | SZL SNA CLA |
| 4029 | POPJ |
| 4030 | CDF 10 |
| 4031 | JMP I PTCH |
| 4032 | |
| 4033 | XXSUBS, EDSUB |
| 4034 | EHSUB |
| 4035 | EOSUB |
| 4036 | ESSUB |
| 4037 | ETSUB |
| 4038 | EUSUB |
| 4039 | / CXSUB |
| 4040 | |
| 4041 | /CXSUB, |
| 4042 | EDSUB, |
| 4043 | EHSUB, |
| 4044 | ESSUB, |
| 4045 | EOSUB, 0 |
| 4046 | JMP I EOSUB |
| 4047 | PAGE |
| 4048 | RELOC |
| 4049 | \f FIELD 1 |
| 4050 | |
| 4051 | *4400 |
| 4052 | |
| 4053 | XERBAS, XER1 |
| 4054 | XER2 |
| 4055 | XER3 |
| 4056 | XER4 |
| 4057 | XER5 |
| 4058 | XER6 |
| 4059 | XER7 |
| 4060 | XER8 |
| 4061 | XER9 |
| 4062 | XER10 |
| 4063 | XER11 |
| 4064 | XER12 |
| 4065 | XER13 |
| 4066 | XER14 |
| 4067 | XER15 |
| 4068 | XER16 |
| 4069 | XER17 |
| 4070 | XER18 |
| 4071 | XER19 |
| 4072 | XER20 |
| 4073 | XER21 |
| 4074 | XER22 |
| 4075 | XER23 |
| 4076 | XER24 |
| 4077 | XER25 |
| 4078 | XER26 |
| 4079 | XER27 |
| 4080 | XER28 |
| 4081 | XER29 |
| 4082 | XER30 |
| 4083 | XER31 |
| 4084 | XER32 |
| 4085 | XER33 |
| 4086 | XER34 |
| 4087 | XER35 |
| 4088 | XER36 |
| 4089 | \fXER1, |
| 4090 | "I;"l;"l;"e;"g;"a;"l;" ;"C;"o;"m;"m;"a;"n;"d;" ;4000;0 |
| 4091 | XER2, |
| 4092 | "U;"n;"t;"e;"r;"m;"i;"n;"a;"t;"e;"d;" ;"C;"o;"m;"m;"a;"n;"d;0 |
| 4093 | XER3, |
| 4094 | "I;"l;"l;"e;"g;"a;"l;" ;"Q;"-;"r;"e;"g;"i;"s;"t;"e;"r;" ;"N;"a;"m;"e;" ;4000;0 |
| 4095 | XER4, |
| 4096 | "I;"n;"t;"e;"r;"n;"a;"l;" ;"P;"u;"s;"h;" ;"D;"o;"w;"n;" ;"O;"v;"e;"r |
| 4097 | "f;"l;"o;"w;0 |
| 4098 | XER5, |
| 4099 | "S;"t;"o;"r;"a;"g;"e;" ;"C;"a;"p;"a;"c;"i;"t;"y;" ;"E;"x;"c;"e;"e;"d;"e;"d;0 |
| 4100 | XER6, |
| 4101 | "S;"e;"a;"r;"c;"h;" ;"S;"t;"r;"i;"n;"g;" ;"t;"o;"o;" ;"L;"o;"n;"g;0 |
| 4102 | XER7, |
| 4103 | "I;"m;"p;"r;"o;"p;"e;"r;" ;"A;"r;"g;"u;"m;"e;"n;"t;"s;0 |
| 4104 | XER8, |
| 4105 | "I;"l;"l;"e;"g;"a;"l;" ;"C;"h;"a;"r;"a;"c;"t;"e;"r;" ;4000 |
| 4106 | " ;"i;"n;" ;"F;"i;"l;"e;"n;"a;"m;"e;0 |
| 4107 | XER9, |
| 4108 | ";;" ;"n;"o;"t;" ;"i;"n;" ;"a;"n;" ;"I;"t;"e;"r;"a;"t;"i;"o;"n;0 |
| 4109 | XER10, |
| 4110 | ">;" ;"n;"o;"t;" ;"i;"n;" ;"a;"n;" ;"I;"t;"e;"r;"a;"t;"i;"o;"n;0 |
| 4111 | XER11, |
| 4112 | "A;"t;"t;"e;"m;"p;"t;" ;"t;"o;" ;"M;"o;"v;"e;" ;"P;"o;"i;"n;"t;"e;"r |
| 4113 | " ;"O;"f;"f;" ;"P;"a;"g;"e;0 |
| 4114 | XER12, |
| 4115 | "Q;"-;"r;"e;"g;"i;"s;"t;"e;"r;" ;"M;"e;"m;"o;"r;"y;" ;"O;"v;"e;"r;"f;"l;"o;"w;0 |
| 4116 | XER13, |
| 4117 | "U;"n;"t;"e;"r;"m;"i;"n;"a;"t;"e;"d;" ;"M;"a;"c;"r;"o;0 |
| 4118 | XER14, |
| 4119 | "O;"u;"t;"p;"u;"t;" ;"E;"r;"r;"o;"r;0 |
| 4120 | XER15, |
| 4121 | "I;"n;"p;"u;"t;" ;"E;"r;"r;"o;"r;0 |
| 4122 | XER16, |
| 4123 | "F;"i;"l;"e;" ;"E;"r;"r;"o;"r;0 |
| 4124 | XER17, |
| 4125 | "O;"u;"t;"p;"u;"t;" ;"C;"o;"m;"m;"a;"n;"d;" ;"w;"o;"u;"l;"d;" ;"h;"a;"v;"e |
| 4126 | " ;"O;"v;"e;"r;"f;"l;"o;"w;"e;"d;0 |
| 4127 | XER18, |
| 4128 | "N;"u;"m;"e;"r;"i;"c;" ;"A;"r;"g;"u;"m;"e;"n;"t;" ;"t;"o;" ;"Y;0 |
| 4129 | XER19, |
| 4130 | "I;"l;"l;"e;"g;"a;"l;" ;"C;"h;"a;"r;"a;"c;"t;"e;"r;" ;4000 |
| 4131 | " ;"a;"f;"t;"e;"r;" ;"E;0 |
| 4132 | XER20, |
| 4133 | "I;"l;"l;"e;"g;"a;"l;" ;"C;"h;"a;"r;"a;"c;"t;"e;"r;" ;4000 |
| 4134 | " ;"a;"f;"t;"e;"r;" ;"";0 |
| 4135 | XER21, |
| 4136 | "N;"o;" ;"A;"r;"g;"u;"m;"e;"n;"t;" ;"b;"e;"f;"o;"r;"e;" ;"=;0 |
| 4137 | XER22, |
| 4138 | "N;"o;" ;"A;"r;"g;"u;"m;"e;"n;"t;" ;"b;"e;"f;"o;"r;"e;" ;"U;0 |
| 4139 | XER23, |
| 4140 | "N;"o;" ;"A;"r;"g;"u;"m;"e;"n;"t;" ;"b;"e;"f;"o;"r;"e;" ;"q;"u;"o;"t;"e;0 |
| 4141 | XER24, |
| 4142 | "S;"e;"a;"r;"c;"h;" ;"f;"a;"i;"l;"e;"d;0 |
| 4143 | XER25, |
| 4144 | "N;"e;"g;"a;"t;"i;"v;"e;" ;"o;"r;" ;"Z;"e;"r;"o |
| 4145 | " ;"A;"r;"g;"u;"m;"e;"n;"t;" ;"t;"o;" ;"P;0 |
| 4146 | XER26, |
| 4147 | "N;"e;"g;"a;"t;"i;"v;"e;" ;"a;"r;"g;"u;"m;"e;"n;"t;" ;"t;"o;" ;",;0 |
| 4148 | XER27, |
| 4149 | "C;"a;"s;"e;" ;"S;"u;"p;"p;"o;"r;"t;" ;"n;"o;"t |
| 4150 | " ;"I;"m;"p;"l;"e;"m;"e;"n;"t;"e;"d;215;212;211;177;177 |
| 4151 | "[;"u;"s;"e;" ;"W;" ;"f;"o;"r;" ;"W;"a;"t;"c;"h;" ;"C;"o;"m;"m;"a;"n;"d;"];0 |
| 4152 | /XER28, |
| 4153 | /"N;"e;"g;"a;"t;"i;"v;"e;" ;"o;"r;" ;"Z;"e;"r;"o;" |
| 4154 | /"I;"t;"e;"r;"a;"t;"i;"o;"n;" ;"C;"o;"u;"n;"t;0 |
| 4155 | XER28, |
| 4156 | 0 |
| 4157 | XER29, |
| 4158 | "N;"e;"g;"a;"t;"i;"v;"e;" ;"o;"r;" ;"Z;"e;"r;"o;" |
| 4159 | "A;"r;"g;"u;"m;"e;"n;"t;" ;"t;"o;" ;"S;0 |
| 4160 | XER30, |
| 4161 | "C;"a;"n;"n;"o;"t;" ;"W;"r;"i;"t;"e;" ;"O;"u;"t;" ;"E;"r;"r;"o;"r |
| 4162 | " ;"M;"e;"s;"s;"a;"g;"e;" ;"O;"v;"e;"r;"l;"a;"y;0 |
| 4163 | XER31, |
| 4164 | "I;"l;"l;"e;"g;"a;"l;" ;"C;"h;"a;"r;"a;"c;"t;"e;"r;" ;4000 |
| 4165 | " ;"a;"f;"t;"e;"r;" ;"F;0 |
| 4166 | XER32, |
| 4167 | "Y;" ;"C;"o;"m;"m;"a;"n;"d;" ;"A;"b;"o;"r;"t;"e;"d;0 |
| 4168 | XER33, |
| 4169 | "C;"C;"L;".;"S;"V;" ;"n;"o;"t;" ;"f;"o;"u;"n;"d;" ;"o;"r;" |
| 4170 | "E;"G;" ;"a;"r;"g;"u;"m;"e;"n;"t;" ;"t;"o;"o;" ;"b;"i;"g;0 |
| 4171 | XER34, |
| 4172 | "E;"x;"e;"c;"u;"t;"i;"o;"n;" ;"a;"b;"o;"r;"t;"e;"d;0 |
| 4173 | XER35, |
| 4174 | "C;"a;"s;"e;" ;"S;"u;"p;"p;"o;"r;"t;" ;"n;"o;"t;" |
| 4175 | "I;"m;"p;"l;"e;"m;"e;"n;"t;"e;"d;215;212;211;177;177 |
| 4176 | "[;"u;"s;"e;" ;"E;"O;" ;"f;"o;"r |
| 4177 | " ;"V;"e;"r;"s;"i;"o;"n;" ;"n;"u;"m;"b;"e;"r;"];0 |
| 4178 | XER36, |
| 4179 | "N;"o;" ;"F;"i;"l;"e;" ;"f;"o;"r;" ;"O;"u;"t;"p;"u;"t;0 |
| 4180 | PAGE |
| 4181 | \fCOREAD, 0 |
| 4182 | ISZ COREAD |
| 4183 | TAD I COREAD /GET BLOCK # |
| 4184 | AND CO7 |
| 4185 | CLL RTR |
| 4186 | RTR |
| 4187 | RAR /MULTIPLY BY 400 |
| 4188 | TAD KMEM |
| 4189 | DCA FLO |
| 4190 | TAD M400 |
| 4191 | DCA FLCNT |
| 4192 | TAD K3200 |
| 4193 | DCA FTO |
| 4194 | FLOO, CDF 30 |
| 4195 | TAD I FLO |
| 4196 | CDF 0 |
| 4197 | DCA I FTO |
| 4198 | ISZ FLO |
| 4199 | ISZ FTO |
| 4200 | ISZ FLCNT |
| 4201 | JMP FLOO |
| 4202 | ISZ COREAD |
| 4203 | CIF CDF 0 |
| 4204 | JMP I COREAD |
| 4205 | |
| 4206 | FLCNT, 0 |
| 4207 | CO7, 7 |
| 4208 | M400, -400 |
| 4209 | K3200, 3200 |
| 4210 | KMEM, MEMLOC |
| 4211 | FLO, 0 |
| 4212 | FTO, 0 |
| 4213 | COREND=. |
| 4214 | \fNEWERR, RELOC OVREAD |
| 4215 | CIF 30 /NEW CODE TO READ OVERLAY |
| 4216 | JMS I .+1 /MUST BE 5 LOCS LONG |
| 4217 | COREAD |
| 4218 | TMP, 0 /BLOCK # |
| 4219 | NOP |
| 4220 | RELOC |
| 4221 | PAGE |
| 4222 | \f |