|
|
1.1 ! root 1: 1,4c1,6 ! 2: < TTL S P I T B O L - REVISION HISTORY ! 3: < EJC ! 4: < * R E V I S I O N H I S T O R Y ! 5: < * ------------------------------- ! 6: --- ! 7: > * CHANGES [SGD] ! 8: > * ------------- ! 9: > * 1. COMMENTED OUT DEFAULT .DEF, .UNDEF AS THESE MACHINE- ! 10: > * DEPENDENT. I SUGGEST AGAIN THAT THESE DO NOT BELONG ! 11: > * IN MINIMAL SOURCE, UNLESS SOMETHING OF THE FORM .*DEF ! 12: > * IS TO BE INCORPORTATED INTO MINIMAL LANGUAGE DEFN. ! 13: 5a8,11 ! 14: > * 2. NOTED THAT DESCRIPTION OF BEV, BOD MISSING FROM ! 15: > * SBL42.CMT MINIMAL DESCRIPTION, AND DISCUSSION OF ! 16: > * "ODD"/"EVEN" AND REQUIREMENTS PERTAINING THERETO ! 17: > * SEEMS INSUFFICIENT. ! 18: 7,8c13,21 ! 19: < * VERSION 3.5B (FEB 81... - SGD PATCHES) ! 20: < * ----------------------------------- ! 21: --- ! 22: > * 3. PERMIT CODE KEYWORD TO CONTAIN ANY INTEGER VALUE. ! 23: > * THIS CONSISTS OF REMOVING THE ENFORCED RESTRICTION ! 24: > * IN ASIGN (SEE ASG24), SINCE CODE CONTAINS NO RELOC. ! 25: > * USE OF KEYWORD VALUE (AS IT SHOULDNT). SBL DOC. ! 26: > * MUST BE UPDATED. ADDRESS OF CODE VALUE NOW PASSED TO ! 27: > * OSINT (KVCOD), INSTEAD OF VALUE ITSELF. HENCE OSINT ! 28: > * DOCUMENTATION MUST LIKEWISE BE REVISED. CHANGES ! 29: > * MADE IN KEYWORD DEFINITION TABLES, PROCEDURES ACESS ! 30: > * AND ASIGN SINCE CODE NOW SPECIAL KEYWORD. ! 31: 10,42c23,24 ! 32: < * SGD03 - ADDITION OF .CNCI AND SYSCI (INT->STRING ! 33: < * SYSTEM ROUTINE OPTION) ! 34: < * SGD04 - (06-MAY-1981) MODIFIED INILN TO 132 ! 35: < * SGD05 - (13-MAY-1981) INSERTED MISSING WTB AFTER SYSMM ! 36: < * CALLS ! 37: < * SGD06 - (25-MAY-1981) MERGED IN PROFILER PATCHES ! 38: < * (NOT MARKED) ! 39: < * SGD07 - (25-MAY-1981) MUCHO PATCHES TO PROFILER (MARKED, ! 40: < * BUT BEST JUST TO EXTRACT ENMASSE) ! 41: < * SGD08 - (25-MAY-1981) USE STRING LENGTH IN HASHS ! 42: < * SGD09 - (25-MAY-1981) FIXED SERIOUS PARSER PROBLEM ! 43: < * RELATING TO (X Y) ON LINE BEING VIEWED AS PATTERN ! 44: < * MATCH. FIXED BY ADDITION OF NEW CMTYP VALUE ! 45: < * C$CNP (CONCATENATION - NOT PATTERN MATCH) ! 46: < * SGD10 - (01-AUG-1981) FIXED EXIT(N) RESPECIFICATION CODE ! 47: < * TO PROPERLY OBSERVE HEADER SEMANTICS ON RETURN. ! 48: < * SGD11 - (07-AUG-1981) BYPASS PRTPG CALL AT INITIALIZATION ! 49: < * FOLLOWING COMPILATION IF NO OUTPUT GENERATED. ! 50: < * THIS PREVENTS OUTPUT FILES CONSISTING OF THE ! 51: < * HEADERS AND A FEW BLANK LINES WHEN THERE IS NO ! 52: < * SOURCE LISTING AND NO COMPILATION STATS. ! 53: < * ALSO FIX TIMSX INITIALIZATION IN SAME CODE. ! 54: < * SGD12 - (17-AUG-1981) B$EFC CODE DID NOT CHECK FOR ! 55: < * UNCONVERTED RESULT RETURNING NULL STRING. FIXED. ! 56: < * SGDBF - ( NOV-1981) ADDED BUFFER TYPE AND SYMBOL CNBF ! 57: < * SGD13 - (03-MAR-1982) LOAD PFVBL FIELD IN RETRN FOR ! 58: < * RETURN TRACING. THIS WAS CAUSING BUG ON RETURN ! 59: < * TRACES THAT TRIED TO ACCESS THE VARIABLE NAME ! 60: < * SGD14 - ADDED CHAR FUNCTION. CHAR(N) RETURNS NTH ! 61: < * CHARACTER OF HOST MACHINE CHARACTER SET. ! 62: < * NOT CONDITIONALIZED OR MARKED. ! 63: < * SGD15 - FIXED PROBLEM RELATING TO COMPILATION OF GOTO ! 64: < * FIELDS CONTAINING SMALL INTEGERS (IN CONST SEC). ! 65: --- ! 66: > * EROSI RETURNS NOW CONTAIN NEW CODE KEYWORD VALUE IN ! 67: > * IA. OSINT DOCUMENTATION MUST BE REVISED. ! 68: 44,48c26,29 ! 69: < * REG01 - (XX-AUG-82) ! 70: < * ADDED CFP$U TO EASE TRANSLATION ON SMALLER ! 71: < * SYSTEMS - CONDITIONAL .CUCF ! 72: < * ADDED LOWER CASE SUPPORT - CONDITIONAL .CULC ! 73: < * ADDED SET I/O FUNCTION - CONDITIONAL .CUST ! 74: --- ! 75: > * INTERESTINGLY, THIS SHOULD PERMIT THE SPITBOL PROGRAM ! 76: > * TO INTERROGATE THE CODE KEYWORD AT THE START OF ! 77: > * EXECUTION TO DETERMINE IF COMPILATION ERRORS ! 78: > * OCCURRED. ! 79: 50,51c31,46 ! 80: < * REG02 - (XX-SEP-82) ! 81: < * CHANGED INILN AND AND INILS TO 258 ! 82: --- ! 83: > * 4. ADD -COPY "FILETAG" CONTROL CARD. -COPY PERMITTED IN ! 84: > * CODE STRINGS. NESTING IS PERMITTED TO ANY LEVEL, ! 85: > * THOUGH OSINT IS FREE TO RESTRICT THE MAXIMUM LEVEL. ! 86: > * NOTE REQUIREMENT FOR FILETAG SPECIFIED AS ! 87: > * STRING CONSTANT SINCE FILETAGS MAY CONTAIN SEMICOLONS. ! 88: > * I HAVE TRIED TO MAKE THIS ENHANCEMENT WITH MINIMUM ! 89: > * (MINIMAL?) AMOUNT OF NEW CODE, SO THE FEATURE IS ! 90: > * NOT CONDITIONALIZED. THE SOLUTION ! 91: > * REQUIRED THE ADDITION OF A NEW BLOCK TYPE (COBLK) TO ! 92: > * BUILD THE INPUT CONTEXT SAVE STACK AS A CHAIN OF ! 93: > * COBLKS. A RECUSIVE SOLUTION ON CMPIL/READR/NEXTS ! 94: > * WOULD HAVE REQUIRED EXTENSIVE MODIFICATIONS AND ! 95: > * SUBSTANTIAL NEW CODE. NOTE THAT FORMS SUCH AS ! 96: > * CODE('-COPY "FILE.SBL"') ARE ACCEPTABLE, WHICH IS ! 97: > * VIEWED AS SIGNIFICANT ENHANCEMENT IN ADDITION TO ! 98: > * COMPILE-TIME INCLUDE. ! 99: 53,59c48,50 ! 100: < * REG03 - (XX-OCT-82) ! 101: < * CONDITIONALIZED THE PAGE EJECT AFTER CALL TO SYSBX ! 102: < * AND ADDED ANOTHER BEFORE CALL TO SYSBX, SO THAT, ! 103: < * IF DESIRED BY THE IMPLEMENTOR, STANDARD OUTPUT ! 104: < * WILL REFLECT ASSIGNMENTS MADE BY EXECUTING PROGRAM ! 105: < * ONLY. CONDITIONAL .CUEJ CONTROLS - IF DEFINED ! 106: < * EJECT IS BEFORE CALL TO SYSBX. ! 107: --- ! 108: > * TO SUPPORT THIS FEATURE, TWO NEW OSINT ROUTINES ARE ! 109: > * DEFINED, SYSSC (START COPY) AND SYSEC (END COPY) WITH ! 110: > * LOGICS DESCRIBED IN THE .CMT FILE. ! 111: 61,63c52,57 ! 112: < * REG04 - (XX-NOV-82) ! 113: < * FIXED DIFFICULTIES WITH LISTINGS DURING EXECUTION ! 114: < * WHEN NO LISTING GENERATED DURING COMPILATION. ! 115: --- ! 116: > * BECAUSE OF ANNOYANCE FACTOR, SOURCE LISTING OF ! 117: > * CODE() INFO VIA -LIST, INCLUDING -COPY INPUT, IS ! 118: > * NO LONGER POSSIBLE. IF THIS IS PERMITTED, THEN ! 119: > * ONE FINDS -COPY INPUT BEING PRINTED ON STD. ! 120: > * OUTPUT CHANNEL (DEPENDING ON STATE OF -LIST), ! 121: > * UNLESS EXPLICIT -NOLIST IS GIVEN. ! 122: 65,67c59,63 ! 123: < * -LIST TO CODE() CAUSED BOMB. FIX IS TO RESET ! 124: < * R$TTL AND R$STL TO NULLS NOT 0 AFTER COMPILATION. ! 125: < * (LISTR AND LISTT EXPECT NULLS) ! 126: --- ! 127: > * 5. THE DOCUMENTATION FOR SYSIO IS INCONSISTENT. IT ! 128: > * SHOWS 0,1,2,3 BEING POSSIBLE INPUTS DEPENDING ON ! 129: > * INPUT/OUTPUT, STD/NONSTD. HOWEVER, IT ALSO APPEARS ! 130: > * (AND IS STATED) THAT SYSIO IS NOT CALLED FOR STD ! 131: > * INPUT/OUTPUT. ! 132: 69,224c65,67 ! 133: < * WHEN LISTING AND STATISTICS ROUTED TO DIFFERENT ! 134: < * FILE THAN EXECUTION OUTPUT, ERROR MESSAGE IS SENT ! 135: < * TO EXECUTION OUTPUT (AND GETS SEPARATED FROM ! 136: < * ... IN STATEMENT ... MSG). LABO1 CALLS SYSAX AND ! 137: < * STOPR DOES NOT CALL SYSAX IF ENTERED FROM LABO1. ! 138: < * ! 139: < * REG05 - (XX-NOV-82) ! 140: < * PREVENT CLEAR() FROM CLOBBERING PROTECTED VARIABLES ! 141: < * AT LABEL SCLR5. ! 142: < * ! 143: < * REG06 - (XX-NOV-82) ! 144: < * FIXED GTEXP FROM ACCEPTING TRAILING SEMICOLON OR ! 145: < * COLON. NOT LEGAL WAY TO END AN EXPRESSION. ! 146: < * ! 147: < * VERSION 3.5A (OCT 79 - SGD PATCHES) ! 148: < * ----------------------------------- ! 149: < * ! 150: < * SGD01 - PATCH IN ASIGN TO FIX MULTIPLE TRAP BLOCK PROBLEM ! 151: < * (ASG10+2) ! 152: < * SGD02 - PATCH IN GTARR TO FIX NULL CONVERT (GTAR9+0) ! 153: < * ! 154: < TTL S P I T B O L -- BASIC INFORMATION ! 155: < EJC ! 156: < * ! 157: < * GENERAL STRUCTURE ! 158: < * ----------------- ! 159: < * ! 160: < * THIS PROGRAM IS A TRANSLATOR FOR A VERSION OF THE SNOBOL4 ! 161: < * PROGRAMMING LANGUAGE. LANGUAGE DETAILS ARE CONTAINED IN ! 162: < * THE MANUAL MACRO SPITBOL BY DEWAR AND MCCANN, TECHNICAL ! 163: < * REPORT 90, UNIVERSITY OF LEEDS 1976. THE LANGUAGE ! 164: < * IS IDENTICAL TO THAT IMPLEMENTED BY THE BTL TRANSLATOR ! 165: < * (R. E. GRISWOLD ET AL.) WITH THE FOLLOWING EXCEPTIONS. ! 166: < * ! 167: < * 1) REDEFINITION OF STANDARD SYSTEM FUNCTIONS AND ! 168: < * OPERATORS IS NOT PERMITTED. ! 169: < * ! 170: < * 2) THE VALUE FUNCTION IS NOT PROVIDED. ! 171: < * ! 172: < * 3) ACCESS TRACING IS PROVIDED IN ADDITION TO THE ! 173: < * OTHER STANDARD TRACE MODES. ! 174: < * ! 175: < * 4) THE KEYWORD STFCOUNT IS NOT PROVIDED. ! 176: < * ! 177: < * 5) THE KEYWORD FULLSCAN IS NOT PROVIDED AND ALL PATTERN ! 178: < * MATCHING TAKES PLACE IN FULLSCAN MODE (I.E. WITH NO ! 179: < * HEURISTICS APPLIED). ! 180: < * ! 181: < * 6) A SERIES OF EXPRESSIONS SEPARATED BY COMMAS MAY ! 182: < * BE GROUPED WITHIN PARENTHESES TO PROVIDE A SELECTION ! 183: < * CAPABILITY. THE SEMANTICS ARE THAT THE SELECTION ! 184: < * ASSUMES THE VALUE OF THE FIRST EXPRESSION WITHIN IT ! 185: < * WHICH SUCCEEDS AS THEY ARE EVALUATED FROM THE LEFT. ! 186: < * IF NO EXPRESSION SUCCEEDS THE ENTIRE STATEMENT FAILS ! 187: < * ! 188: < * 7) AN EXPLICIT PATTERN MATCHING OPERATOR IS PROVIDED. ! 189: < * THIS IS THE BINARY QUERY (SEE GIMPEL SIGPLAN OCT 74) ! 190: < * ! 191: < * 8) THE ASSIGNMENT OPERATOR IS INTRODUCED AS IN THE ! 192: < * GIMPEL REFERENCE. ! 193: < * ! 194: < * 9) THE EXIT FUNCTION IS PROVIDED FOR GENERATING LOAD ! 195: < * MODULES - CF. GIMPELS SITBOL. ! 196: < * ! 197: < * ! 198: < * THE METHOD USED IN THIS PROGRAM IS TO TRANSLATE THE ! 199: < * SOURCE CODE INTO AN INTERNAL PSEUDO-CODE (SEE FOLLOWING ! 200: < * SECTION). AN INTERPRETOR IS THEN USED TO EXECUTE THIS ! 201: < * GENERATED PSEUDO-CODE. THE NATURE OF THE SNOBOL4 LANGUAGE ! 202: < * IS SUCH THAT THE LATTER TASK IS MUCH MORE COMPLEX THAN ! 203: < * THE ACTUAL TRANSLATION PHASE. ACCORDINGLY, NEARLY ALL THE ! 204: < * CODE IN THE PROGRAM SECTION IS CONCERNED WITH THE ACTUAL ! 205: < * EXECUTION OF THE SNOBOL4 PROGRAM. ! 206: < EJC ! 207: < * ! 208: < * INTERPRETIVE CODE FORMAT ! 209: < * ------------------------ ! 210: < * ! 211: < * THE INTERPRETIVE PSEUDO-CODE CONSISTS OF A SERIES OF ! 212: < * ADDRESS POINTERS. THE EXACT FORMAT OF THE CODE IS ! 213: < * DESCRIBED IN CONNECTION WITH THE CDBLK FORMAT. THE ! 214: < * PURPOSE OF THIS SECTION IS TO GIVE GENERAL INSIGHT INTO ! 215: < * THE INTERPRETIVE APPROACH INVOLVED. ! 216: < * ! 217: < * THE BASIC FORM OF THE CODE IS RELATED TO REVERSE POLISH. ! 218: < * IN OTHER WORDS, THE OPERANDS PRECEDE THE OPERATORS WHICH ! 219: < * ARE ZERO ADDRESS OPERATORS. THERE ARE SOME EXCEPTIONS TO ! 220: < * THESE RULES, NOTABLY THE UNARY NOT OPERATOR AND THE ! 221: < * SELECTION CONSTRUCTION WHICH CLEARLY REQUIRE ADVANCE ! 222: < * KNOWLEDGE OF THE OPERATOR INVOLVED. ! 223: < * ! 224: < * THE OPERANDS ARE MOVED TO THE TOP OF THE MAIN STACK AND ! 225: < * THE OPERATORS ARE APPLIED TO THE TOP STACK ENTRIES. LIKE ! 226: < * OTHER VERSIONS OF SPITBOL, THIS PROCESSOR DEPENDS ON ! 227: < * KNOWING WHETHER OPERANDS ARE REQUIRED BY NAME OR BY VALUE ! 228: < * AND MOVES THE APPROPRIATE OBJECT TO THE STACK. THUS NO ! 229: < * NAME/VALUE CHECKS ARE INCLUDED IN THE OPERATOR CIRCUITS. ! 230: < * ! 231: < * THE ACTUAL POINTERS IN THE CODE POINT TO A BLOCK WHOSE ! 232: < * FIRST WORD IS THE ADDRESS OF THE INTERPRETOR ROUTINE ! 233: < * TO BE EXECUTED FOR THE CODE WORD. ! 234: < * ! 235: < * IN THE CASE OF OPERATORS, THE POINTER IS TO A WORD WHICH ! 236: < * CONTAINS THE ADDRESS OF THE OPERATOR TO BE EXECUTED. IN ! 237: < * THE CASE OF OPERANDS SUCH AS CONSTANTS, THE POINTER IS TO ! 238: < * THE OPERAND ITSELF. ACCORDINGLY, ALL OPERANDS CONTAIN ! 239: < * A FIELD WHICH POINTS TO THE ROUTINE TO LOAD THE VALUE OF ! 240: < * THE OPERAND ONTO THE STACK. IN THE CASE OF A VARIABLE, ! 241: < * THERE ARE THREE SUCH POINTERS. ONE TO LOAD THE VALUE, ! 242: < * ONE TO STORE THE VALUE AND A THIRD TO JUMP TO THE LABEL. ! 243: < * ! 244: < * THE HANDLING OF FAILURE RETURNS DESERVES SPECIAL COMMENT. ! 245: < * THE LOCATION FLPTR CONTAINS THE POINTER TO THE LOCATION ! 246: < * ON THE MAIN STACK WHICH CONTAINS THE FAILURE RETURN ! 247: < * WHICH IS IN THE FORM OF A BYTE OFFSET IN THE CURRENT ! 248: < * CODE BLOCK (CDBLK OR EXBLK). WHEN A FAILURE OCCURS, THE ! 249: < * STACK IS POPPED AS INDICATED BY THE SETTING OF FLPTR AND ! 250: < * CONTROL IS PASSED TO THE APPROPRIATE LOCATION IN THE ! 251: < * CURRENT CODE BLOCK WITH THE STACK POINTER POINTING TO THE ! 252: < * FAILURE OFFSET ON THE STACK AND FLPTR UNCHANGED. ! 253: < EJC ! 254: < * ! 255: < * INTERNAL DATA REPRESENTATIONS ! 256: < * ----------------------------- ! 257: < * ! 258: < * REPRESENTATION OF VALUES ! 259: < * ! 260: < * A VALUE IS REPRESENTED BY A POINTER TO A BLOCK WHICH ! 261: < * DESCRIBES THE TYPE AND PARTICULARS OF THE DATA VALUE. ! 262: < * IN GENERAL, A VARIABLE IS A LOCATION CONTAINING SUCH A ! 263: < * POINTER (ALTHOUGH IN THE CASE OF TRACE ASSOCIATIONS THIS ! 264: < * IS MODIFIED, SEE DESCRIPTION OF TRBLK). ! 265: < * ! 266: < * THE FOLLOWING IS A LIST OF POSSIBLE DATATYPES SHOWING THE ! 267: < * TYPE OF BLOCK USED TO HOLD THE VALUE. THE DETAILS OF ! 268: < * EACH BLOCK FORMAT ARE GIVEN LATER. ! 269: < * ! 270: < * DATATYPE BLOCK TYPE ! 271: < * -------- ---------- ! 272: < * ! 273: < * ! 274: < * ARRAY ARBLK OR VCBLK ! 275: < * ! 276: < * CODE CDBLK ! 277: < * ! 278: < * EXPRESSION EXBLK OR SEBLK ! 279: < * ! 280: < * INTEGER ICBLK ! 281: < * ! 282: < * NAME NMBLK ! 283: < * ! 284: < * PATTERN P0BLK OR P1BLK OR P2BLK ! 285: < * ! 286: < * REAL RCBLK ! 287: < * ! 288: < * STRING SCBLK ! 289: --- ! 290: > * 6. SINCE -PRINT,-NOPRINT REMOVED IN V4, I HAVE ! 291: > * REINSTATED THE CIRCUIT IN NEXTS TO AVOID LISTING ! 292: > * CONTROL CARDS (-COPY FORCES LIST IN CNCRD THOUGH). ! 293: 226c69,70 ! 294: < * TABLE TBBLK ! 295: --- ! 296: > * 7. WA NOW CONTAINS THE INITIAL VALUE OF &CODE ON ENTRY ! 297: > * TO SPITBOL. ! 298: 228,229c72,77 ! 299: < * PROGRAM DATATYPE PDBLK ! 300: < EJC ! 301: --- ! 302: > * 8. ADDED DDC (DEFINE DISPLAY CONSTANT). IS IDENTICAL ! 303: > * TO DTC EXCEPT THAT ON SYSTEMS SUPPORTING LOWER CASE, ! 304: > * THE DISPLAY TEXT CAN BE TRANSLATED WITH A ! 305: > * CASE MIX. FOR EXAMPLE, CAPITALIZE ONLY THE FIRST ! 306: > * LETTER, OR THE FIRST LETTER OF EVERY WORD, OR NO ! 307: > * UPPER CASE (FOR EUNICHS), ETC. ! 308: 231,232c79,81 ! 309: < * REPRESENTATION OF VARIABLES ! 310: < * --------------------------- ! 311: --- ! 312: > * 9. FIX MINOR OVERSIGHT IN FAILING TO CLEAR R$PMB AT ! 313: > * END OF PATTERN MATCH, THUS LEAVING PTR TO BCBLK ! 314: > * THAT CANNOT BE COLLECTED. ! 315: 234,238c83,92 ! 316: < * DURING THE COURSE OF EVALUATING EXPRESSIONS, IT IS ! 317: < * NECESSARY TO GENERATE NAMES OF VARIABLES (FOR EXAMPLE ! 318: < * ON THE LEFT SIDE OF A BINARY EQUALS OPERATOR). THESE ARE ! 319: < * NOT TO BE CONFUSED WITH OBJECTS OF DATATYPE NAME WHICH ! 320: < * ARE IN FACT VALUES. ! 321: --- ! 322: > * 10. AFTER CONSULTATION WITH DAVE SHIELDS, IT WAS AGREED ! 323: > * TO REINSTATE ARG,FIELD,ITEM AND LOCAL FUNCTIONS. ! 324: > * COMMENTS WERE RECEIVED THAT REMOVING THEM BREAKS ! 325: > * EXISTING CODE IN DIFFICULT-TO-FIX WAYS, INCLUDING ! 326: > * A NUMBER OF THE UTILITY ROUTINES IN GIMPELS BOOK. ! 327: > * IN ANY EVENT, THESE ARE SNOBOL4 COMPATIBILITY ! 328: > * FUNCTIONS THAT TAKE LITTLE CODE SPACE. AS A ! 329: > * RESULT OF THIS, AND -COPY, ERROR NUMBERS HAVE ! 330: > * BEEN PUSHED BACK OVER THE 255 THRESHOLD, WHICH ! 331: > * SEEMS UNAVOIDABLE UNLESS MAJOR SURGERY IS DONE. ! 332: 240,250c94,95 ! 333: < * FROM A LOGICAL POINT OF VIEW, SUCH NAMES COULD BE SIMPLY ! 334: < * REPRESENTED BY A POINTER TO THE APPROPRIATE VALUE CELL. ! 335: < * HOWEVER IN THE CASE OF ARRAYS AND PROGRAM DEFINED ! 336: < * DATATYPES, THIS WOULD VIOLATE THE RULE THAT THERE MUST BE ! 337: < * NO POINTERS INTO THE MIDDLE OF A BLOCK IN DYNAMIC STORE. ! 338: < * ACCORDINGLY, A NAME IS ALWAYS REPRESENTED BY A BASE AND ! 339: < * OFFSET. THE BASE POINTS TO THE START OF THE BLOCK ! 340: < * CONTAINING THE VARIABLE VALUE AND THE OFFSET IS THE ! 341: < * OFFSET WITHIN THIS BLOCK IN BYTES. THUS THE ADDRESS ! 342: < * OF THE ACTUAL VARIABLE IS DETERMINED BY ADDING THE BASE ! 343: < * AND OFFSET VALUES. ! 344: --- ! 345: > * 11. VERSION ID CHANGED TO V4.3 DUE TO SUBSTANTIAL ! 346: > * CHANGES. ! 347: 252,253c97,98 ! 348: < * THE FOLLOWING ARE THE INSTANCES OF VARIABLES REPRESENTED ! 349: < * IN THIS MANNER. ! 350: --- ! 351: > * 12. PERMIT DOLLAR SIGN IN VARIABLE NAMES. MINOR ! 352: > * CHANGE TO OPERATOR TABLE AND SCANE. ! 353: 255,256c100,103 ! 354: < * 1) NATURAL VARIABLE BASE IS PTR TO VRBLK ! 355: < * OFFSET IS *VRVAL ! 356: --- ! 357: > * 13. PERMIT BUFFER TYPE FOR LOAD SPECIFICATION. AS ! 358: > * A SIDE-EFFECT, THE CODE FOR BUFFER CONVERSION HAS ! 359: > * BEEN CENTRALIZED IN GTBUF. ALSO FIXED PADDING ! 360: > * BUG IN INSBF RELATED TO ZERO PADDING. ! 361: 258,259c105,108 ! 362: < * 2) TABLE ELEMENT BASE IS PTR TO TEBLK ! 363: < * OFFSET IS *TEVAL ! 364: --- ! 365: > * 14. DOCUMENT THAT SYSIL MUST NEVER REQUEST ZERO BYTES. ! 366: > * DOING SO CAUSES ACESS TO POTENTIALLY CREATE ! 367: > * INVALID MEMORY CAUSING LATER GARBAGE COLLECTOR ! 368: > * PROBLEMS OR MISADJUSTMENTS OF DNAMP, ETC. ! 369: 261,262c110,112 ! 370: < * 3) ARRAY ELEMENT BASE IS PTR TO ARBLK ! 371: < * OFFSET IS OFFSET TO ELEMENT ! 372: --- ! 373: > * 15. VDIFFER FUNCTION ADDED. VDIFFER(X,Y) RETURNS X ! 374: > * IF DIFFERENT FROM Y. IN MOST CASES IT IS EXPECTED ! 375: > * THAT Y WOULD BE NULL. ! 376: 264,281c114 ! 377: < * 4) VECTOR ELEMENT BASE IS PTR TO VCBLK ! 378: < * OFFSET IS OFFSET TO ELEMENT ! 379: < * ! 380: < * 5) PROG DEF DTP BASE IS PTR TO PDBLK ! 381: < * OFFSET IS OFFSET TO FIELD VALUE ! 382: < * ! 383: < * IN ADDITION THERE ARE TWO CASES OF OBJECTS WHICH ARE ! 384: < * LIKE VARIABLES BUT CANNOT BE HANDLED IN THIS MANNER. ! 385: < * THESE ARE CALLED PSEUDO-VARIABLES AND ARE REPRESENTED ! 386: < * WITH A SPECIAL BASE POINTER AS FOLLOWS= ! 387: < * ! 388: < * EXPRESSION VARIABLE PTR TO EVBLK (SEE EVBLK) ! 389: < * ! 390: < * KEYWORD VARIABLE PTR TO KVBLK (SEE KVBLK) ! 391: < * ! 392: < * PSEUDO-VARIABLES ARE HANDLED AS SPECIAL CASES BY THE ! 393: < * ACCESS PROCEDURE (ACESS) AND THE ASSIGNMENT PROCEDURE ! 394: < * (ASIGN). SEE THESE TWO PROCEDURES FOR DETAILS. ! 395: --- ! 396: > SEC FORMAL START OF PROCEDURES SECTION ! 397: 284,411d116 ! 398: < * ORGANIZATION OF DATA AREA ! 399: < * ------------------------- ! 400: < * ! 401: < * ! 402: < * THE DATA AREA IS DIVIDED INTO TWO REGIONS. ! 403: < * ! 404: < * STATIC AREA ! 405: < * ! 406: < * THE STATIC AREA BUILDS UP FROM THE BOTTOM AND CONTAINS ! 407: < * DATA AREAS WHICH ARE ALLOCATED DYNAMICALLY BUT ARE NEVER ! 408: < * DELETED OR MOVED AROUND. THE MACRO-PROGRAM ITSELF ! 409: < * USES THE STATIC AREA FOR THE FOLLOWING. ! 410: < * ! 411: < * 1) ALL VARIABLE BLOCKS (VRBLK). ! 412: < * ! 413: < * 2) THE HASH TABLE FOR VARIABLE BLOCKS. ! 414: < * ! 415: < * 3) MISCELLANEOUS BUFFERS AND WORK AREAS (SEE PROGRAM ! 416: < * INITIALIZATION SECTION). ! 417: < * ! 418: < * IN ADDITION, THE SYSTEM PROCEDURES MAY USE THIS AREA FOR ! 419: < * INPUT/OUTPUT BUFFERS, EXTERNAL FUNCTIONS ETC. SPACE IN ! 420: < * THE STATIC REGION IS ALLOCATED BY CALLING PROCEDURE ALOST ! 421: < * ! 422: < * THE FOLLOWING GLOBAL VARIABLES DEFINE THE CURRENT ! 423: < * LOCATION AND SIZE OF THE STATIC AREA. ! 424: < * ! 425: < * STATB ADDRESS OF START OF STATIC AREA ! 426: < * STATE ADDRESS+1 OF LAST WORD IN AREA. ! 427: < * ! 428: < * THE MINIMUM SIZE OF STATIC IS GIVEN APPROXIMATELY BY ! 429: < * 12 + *E$HNB + *E$STS + SPACE FOR ALPHABET STRING ! 430: < * AND STANDARD PRINT BUFFER. ! 431: < EJC ! 432: < * ! 433: < * DYNAMIC AREA ! 434: < * ! 435: < * THE DYNAMIC AREA IS BUILT UPWARDS IN MEMORY AFTER THE ! 436: < * STATIC REGION. DATA IN THIS AREA MUST ALL BE IN STANDARD ! 437: < * BLOCK FORMATS SO THAT IT CAN BE PROCESSED BY THE GARBAGE ! 438: < * COLLECTOR (PROCEDURE GBCOL). GBCOL COMPACTS BLOCKS DOWN ! 439: < * IN THIS REGION AS REQUIRED BY SPACE EXHAUSTION AND CAN ! 440: < * ALSO MOVE ALL BLOCKS UP TO ALLOW FOR EXPANSION OF THE ! 441: < * STATIC REGION. ! 442: < * WITH THE EXCEPTION OF TABLES AND ARRAYS, NO SPITBOL ! 443: < * OBJECT ONCE BUILT IN DYNAMIC MEMORY IS EVER SUBSEQUENTLY ! 444: < * MODIFIED. OBSERVING THIS RULE NECESSITATES A COPYING ! 445: < * ACTION DURING STRING AND PATTERN CONCATENATION. ! 446: < * ! 447: < * GARBAGE COLLECTION IS FUNDAMENTAL TO THE ALLOCATION OF ! 448: < * SPACE FOR VALUES. SPITBOL USES A VERY EFFICIENT GARBAGE ! 449: < * COLLECTOR WHICH INSISTS THAT POINTERS INTO DYNAMIC STORE ! 450: < * SHOULD BE IDENTIFIABLE WITHOUT USE OF BIT TABLES, ! 451: < * MARKER BITS ETC. TO SATISFY THIS REQUIREMENT, DYNAMIC ! 452: < * MEMORY MUST NOT START AT TOO LOW AN ADDRESS AND LENGTHS ! 453: < * OF ARRAYS, TABLES, STRINGS, CODE AND EXPRESSION BLOCKS ! 454: < * MAY NOT EXCEED THE NUMERICAL VALUE OF THE LOWEST DYNAMIC ! 455: < * ADDRESS. TO AVOID EITHER PENALIZING USERS WITH MODEST ! 456: < * REQUIREMENTS OR RESTRICTING THOSE WITH GREATER NEEDS ON ! 457: < * HOST SYSTEMS WHERE DYNAMIC MEMORY IS ALLOCATED IN LOW ! 458: < * ADDRESSES, THE MINIMUM DYNAMIC ADDRESS MAY BE SPECIFIED ! 459: < * SUFFICIENTLY HIGH TO PERMIT ARBITRARILY LARGE SPITBOL ! 460: < * OBJECTS TO BE CREATED ( WITH THE POSSIBILITY IN EXTREME ! 461: < * CASES OF WASTING LARGE AMOUNTS OF MEMORY BELOW THE ! 462: < * START ADDRESS). THIS MINIMUM VALUE IS MADE AVAILABLE ! 463: < * IN VARIABLE MXLEN BY A SYSTEM ROUTINE, SYSMX. ! 464: < * ALTERNATIVELY SYSMX MAY INDICATE THAT A ! 465: < * DEFAULT MAY BE USED IN WHICH DYNAMIC IS PLACED ! 466: < * AT THE LOWEST POSSIBLE ADDRESS FOLLOWING STATIC. ! 467: < * ! 468: < * THE FOLLOWING GLOBAL WORK CELLS DEFINE THE LOCATION AND ! 469: < * LENGTH OF THE DYNAMIC AREA. ! 470: < * ! 471: < * DNAMB START OF DYNAMIC AREA ! 472: < * DNAMP NEXT AVAILABLE LOCATION ! 473: < * DNAME LAST AVAILABLE LOCATION + 1 ! 474: < * ! 475: < * DNAMB IS ALWAYS HIGHER THAN STATE SINCE THE ALOST ! 476: < * PROCEDURE MAINTAINS SOME EXPANSION SPACE ABOVE STATE. ! 477: < * *** DNAMB MUST NEVER BE PERMITTED TO HAVE A VALUE LESS ! 478: < * THAN THAT IN MXLEN *** ! 479: < * ! 480: < * SPACE IN THE DYNAMIC REGION IS ALLOCATED BY THE ALLOC ! 481: < * PROCEDURE. THE DYNAMIC REGION MAY BE USED BY SYSTEM ! 482: < * PROCEDURES PROVIDED THAT ALL THE RULES ARE OBEYED. ! 483: < EJC ! 484: < * ! 485: < * REGISTER USAGE ! 486: < * -------------- ! 487: < * ! 488: < * (CP) CODE POINTER REGISTER. USED TO ! 489: < * HOLD A POINTER TO THE CURRENT ! 490: < * LOCATION IN THE INTERPRETIVE PSEUDO ! 491: < * CODE (I.E. PTR INTO A CDBLK). ! 492: < * ! 493: < * (XL,XR) GENERAL INDEX REGISTERS. USUALLY ! 494: < * USED TO HOLD POINTERS TO BLOCKS IN ! 495: < * DYNAMIC STORAGE. AN IMPORTANT ! 496: < * RESTRICTION IS THAT THE VALUE IN ! 497: < * XL MUST BE COLLECTABLE FOR ! 498: < * A GARBAGE COLLECT CALL. A VALUE ! 499: < * IS COLLECTABLE IF IT EITHER POINTS ! 500: < * OUTSIDE THE DYNAMIC AREA, OR IF IT ! 501: < * POINTS TO THE START OF A BLOCK IN ! 502: < * THE DYNAMIC AREA. ! 503: < * ! 504: < * (XS) STACK POINTER. USED TO POINT TO ! 505: < * THE STACK FRONT. THE STACK MAY ! 506: < * BUILD UP OR DOWN AND IS USED ! 507: < * TO STACK SUBROUTINE RETURN POINTS ! 508: < * AND OTHER RECURSIVELY SAVED DATA. ! 509: < * ! 510: < * (XT) AN ALTERNATIVE NAME FOR XL DURING ! 511: < * ITS USE IN ACCESSING STACKED ITEMS. ! 512: < * ! 513: < * (WA,WB,WC) GENERAL WORK REGISTERS. CANNOT BE ! 514: < * USED FOR INDEXING, BUT MAY HOLD ! 515: < * VARIOUS TYPES OF DATA. ! 516: < * ! 517: < * (IA) USED FOR ALL SIGNED INTEGER ! 518: < * ARITHMETIC, BOTH THAT USED BY THE ! 519: < * TRANSLATOR AND THAT ARISING FROM ! 520: < * USE OF SNOBOL4 ARITHMETIC OPERATORS ! 521: < * ! 522: < * (RA) REAL ACCUMULATOR. USED FOR ALL ! 523: < * FLOATING POINT ARITHMETIC. ! 524: < EJC ! 525: < * ! 526: 416,422c121,134 ! 527: < * ASSEMBLY SYMBOLS ARE REFERRED TO. TO INCORPORATE THE ! 528: < * FEATURES REFERRED TO, THE MINIMAL SOURCE SHOULD BE ! 529: < * PREFACED BY SUITABLE CONDITIONAL ASSEMBLY SYMBOL ! 530: < * DEFINITIONS. ! 531: < * IN ALL CASES IT IS PERMISSIBLE TO DEFAULT THE DEFINITIONS ! 532: < * IN WHICH CASE THE ADDITIONAL FEATURES WILL BE OMITTED ! 533: < * FROM THE TARGET CODE. ! 534: --- ! 535: > * ASSEMBLY SYMBOLS ARE REFERRED TO. ! 536: > * A PARTICULAR SET OF DEFAULT SETTINGS IS GIVEN IN THIS ! 537: > * SOURCE BY USE OF .DEF AND .UNDEF PSEUDO OPS. ! 538: > * A DIFFERENT SELECTION MAY BE MADE BY VARYING THE ! 539: > * DEFINITIONS. AS AN ALTERNATIVE, THIS SECTION MAY BE ! 540: > * COMMENTED OUT AND THE MINIMAL TRANSLATOR PRELOADED WITH ! 541: > * THE SELECTED DEFINITIONS, THUS ALLOWING A MORE DYNAMIC ! 542: > * CHOICE TO BE MADE. ! 543: > * SOME OF THE CONDITIONAL FEATURES CHOOSE AMONGST A VARIETY ! 544: > * OF OPTIONS. OTHERS ARE DEFINED PRINCIPALLY TO ALLOW ! 545: > * OMISSION OF A FEATURE WHICH IS NOT WANTED IN ORDER TO ! 546: > * SAVE MEMORY OR BECAUSE IT CANNOT BE SUPPORTED. ! 547: > * NOTE THAT IF .CPLC OPTION IS CHOSEN, TRANSLATION OF DTC, ! 548: > * ERR, ERB ARGUMENTS SHOULD BE TO LOWER CASE. ! 549: 424,505c136,158 ! 550: < * .CASL DEFINE TO INCLUDE 26 SHIFTED LETTRS ! 551: < * .CAHT DEFINE TO INCLUDE HORIZONTAL TAB ! 552: < * .CAVT DEFINE TO INCLUDE VERTICAL TAB ! 553: < * .CIOD IF DEFINED, DEFAULT DELIMITER IS ! 554: < * NOT USED IN PROCESSING 3RD ARG OF ! 555: < * INPUT() AND OUTPUT() ! 556: < * .CNBT DEFINE TO OMIT BATCH INITIALISATION ! 557: < * .CNCI DEFINE TO ENABLE SYSCI ROUTINE ! 558: < * .CNEX DEFINE TO OMIT EXIT() CODE. ! 559: < * .CNLD DEFINE TO OMIT LOAD() CODE. ! 560: < * .CNPF DEFINE TO OMIT PROFILE STUFF ! 561: < * .CNRA DEFINE TO OMIT ALL REAL ARITHMETIC ! 562: < * .CNSR DEFINE TO OMIT SORT, RSORT ! 563: < * .CSAX DEFINE IF SYSAX IS TO BE CALLED ! 564: < * .CSN6 DEFINE TO PAD STMT NOS TO 6 CHARS ! 565: < * .CSN8 DEFINE TO PAD STMT NOS TO 8 CHARS ! 566: < * .CUCF DEFINE TO INCLUDE CFP$U ! 567: < * .CULC DEFINE TO INCLUDE &CASE (LC NAMES) ! 568: < * .CUST DEFINE TO INCLUDE SET() CODE ! 569: < .DEF .CASL ! 570: < .DEF .CAHT ! 571: < .DEF .CIOD ! 572: < .DEF .CSAX ! 573: < .DEF .CSN8 ! 574: < .DEF .CUCF ! 575: < .DEF .CUEJ ! 576: < .DEF .CULC ! 577: < .DEF .CUST ! 578: < TTL S P I T B O L -- PROCEDURES SECTION ! 579: < * ! 580: < * THIS SECTION STARTS WITH DESCRIPTIONS OF THE OPERATING ! 581: < * SYSTEM DEPENDENT PROCEDURES WHICH ARE USED BY THE SPITBOL ! 582: < * TRANSLATOR. ALL SUCH PROCEDURES HAVE FIVE LETTER NAMES ! 583: < * BEGINNING WITH SYS. THEY ARE LISTED IN ALPHABETICAL ! 584: < * ORDER. ! 585: < * ALL PROCEDURES HAVE A SPECIFICATION CONSISTING OF A ! 586: < * MODEL CALL, PRECEDED BY A POSSIBLY EMPTY LIST OF REGISTER ! 587: < * CONTENTS GIVING PARAMETERS AVAILABLE TO THE PROCEDURE AND ! 588: < * FOLLOWED BY A POSSIBLY EMPTY LIST OF REGISTER CONTENTS ! 589: < * REQUIRED ON RETURN FROM THE CALL OR WHICH MAY HAVE HAD ! 590: < * THEIR CONTENTS DESTROYED. ONLY THOSE REGISTERS EXPLICITLY ! 591: < * MENTIONED IN THE LIST AFTER THE CALL MAY HAVE THEIR ! 592: < * VALUES CHANGED. ! 593: < * THE SEGMENT OF CODE PROVIDING THE EXTERNAL PROCEDURES IS ! 594: < * CONVENIENTLY REFERRED TO AS OSINT (OPERATING SYSTEM ! 595: < * INTERFACE). THE SYSXX PROCEDURES IT CONTAINS PROVIDE ! 596: < * FACILITIES NOT USUALLY AVAILABLE AS PRIMITIVES IN ! 597: < * ASSEMBLY LANGUAGES. FOR PARTICULAR TARGET MACHINES, ! 598: < * IMPLEMENTORS MAY CHOOSE FOR SOME MINIMAL OPCODES WHICH ! 599: < * DO NOT HAVE REASONABLY DIRECT TRANSLATIONS, TO USE CALLS ! 600: < * OF ADDITIONAL PROCEDURES WHICH THEY PROVIDE IN OSINT. ! 601: < * E.G. MWB OR TRC MIGHT BE TRANSLATED AS JSR SYSMB, ! 602: < * JSR SYSTC IN SOME IMPLEMENTATIONS. ! 603: < * ! 604: < * IN THE DESCRIPTIONS, REFERENCE IS MADE TO --BLK ! 605: < * FORMATS (-- = A PAIR OF LETTERS). SEE THE SPITBOL ! 606: < * DEFINITIONS SECTION FOR DETAILED DESCRIPTIONS OF ALL ! 607: < * SUCH BLOCK FORMATS EXCEPT FCBLK FOR WHICH SYSFC SHOULD ! 608: < * BE CONSULTED. ! 609: < * ! 610: < * SECTION 0 CONTAINS INP,INR SPECIFICATIONS OF INTERNAL ! 611: < * PROCEDURES,ROUTINES. THIS GIVES A SINGLE PASS TRANSLATOR ! 612: < * INFORMATION MAKING IT EASY TO GENERATE ALTERNATIVE CALLS ! 613: < * IN THE TRANSLATION OF JSR-S FOR PROCEDURES OF DIFFERENT ! 614: < * TYPES IF THIS PROVES NECESSARY. ! 615: < * ! 616: < SEC START OF PROCEDURES SECTION ! 617: < .IF .CSAX ! 618: < EJC ! 619: < * ! 620: < * SYSAX -- AFTER EXECUTION ! 621: < * ! 622: < SYSAX EXP DEFINE EXTERNAL ENTRY POINT ! 623: < * ! 624: < * IF THE CONDITIONAL ASSEMBLY SYMBOL .CSAX IS DEFINED, ! 625: < * THIS ROUTINE IS CALLED IMMEDIATELY AFTER EXECUTION AND ! 626: < * BEFORE PRINTING OF EXECUTION STATISTICS OR DUMP OUTPUT. ! 627: < * PURPOSE OF CALL IS FOR IMPLEMENTOR TO DETERMINE AND ! 628: < * IF THE CALL IS NOT REQUIRED IT WILL BE OMITTED IF .CSAX ! 629: < * IS UNDEFINED. IN THIS CASE SYSAX NEED NOT BE CODED. ! 630: < * ! 631: < * JSR SYSAX CALL AFTER EXECUTION ! 632: --- ! 633: > *.DEF .CAHT DEFINE TO INCLUDE HORIZONTAL TAB ! 634: > *.DEF .CASL DEFINE TO INCLUDE 26 SHIFTED LETTRS ! 635: > *.DEF .CAVT DEFINE TO INCLUDE VERTICAL TAB ! 636: > *.UNDEF .CEPP DEFINE FOR ODD PARITY ENTRY POINTS ! 637: > *.UNDEF .CNBF DEFINE TO OMIT BUFFER EXTENSION ! 638: > *.UNDEF .CNBT DEFINE TO OMIT BATCH INITIALISATION ! 639: > *.UNDEF .CNEX DEFINE TO OMIT EXIT() CODE ! 640: > *.UNDEF .CNFN DEFINE TO OMIT FENCE() CODE ! 641: > *.UNDEF .CNLD DEFINE TO OMIT LOAD() CODE ! 642: > *.UNDEF .CNPF DEFINE TO OMIT PROFILE CODE ! 643: > *.UNDEF .CNRA DEFINE TO OMIT ALL REAL ARITHMETIC ! 644: > *.UNDEF .CNSR DEFINE TO OMIT SORT, RSORT CODE ! 645: > *.DEF .CPLC DEFINE IF HOST PREFERS LOWER CASE ! 646: > *.UNDEF .CRPP DEFINE FOR ODD PARITY RETURN POINTS ! 647: > *.UNDEF .CS16 DEFINE TO INITIALIZE STLIM TO 32767 ! 648: > *.UNDEF .CSAX DEFINE IF SYSAX IS TO BE CALLED ! 649: > *.UNDEF .CSCI DEFINE TO ENABLE SYSCI ROUTINE ! 650: > *.UNDEF .CSCV DEFINE FOR CLU, CUL CASE CONVERSION ! 651: > *.DEF .CSIG DEFINE TO IGNORE CASE OF LETTERS ! 652: > *.UNDEF .CSN6 DEFINE TO PAD STMT NOS TO 6 CHARS ! 653: > *.DEF .CSN8 DEFINE TO PAD STMT NOS TO 8 CHARS ! 654: > *.UNDEF .CTMD DEFINE IF SYSTM UNIT IS DECISECOND ! 655: > .IF .CASL ! 656: 506a160,161 ! 657: > .UNDEF .CSIG .CSIG USELESS WITHOUT LC LETTERS ! 658: > .UNDEF .CPLC .CPLC ERRONEOUS WITHOUT LC LETTERS ! 659: 510c165 ! 660: < * SYSBX -- BEFORE EXECUTION ! 661: --- ! 662: > * ACTUAL PROCESSABLE EXP PROCEDURE DEFINITIONS ! 663: 512,547c167,169 ! 664: < SYSBX EXP DEFINE EXTERNAL ENTRY POINT ! 665: < * ! 666: < * CALLED AFTER INITIAL SPITBOL COMPILATION AND BEFORE ! 667: < * COMMENCING EXECUTION IN CASE OSINT NEEDS ! 668: < * TO ASSIGN FILES OR PERFORM OTHER NECESSARY SERVICES. ! 669: < * OSINT MAY ALSO CHOOSE TO SEND A MESSAGE TO ONLINE ! 670: < * TERMINAL (IF ANY) INDICATING THAT EXECUTION IS STARTING. ! 671: < * ! 672: < * JSR SYSBX CALL BEFORE EXECUTION STARTS ! 673: < EJC ! 674: < .IF .CNCI ! 675: < * ! 676: < * SYSCI -- CONVERT INTEGER ! 677: < * ! 678: < SYSCI EXP ! 679: < * ! 680: < * SYSCI IS AN OPTIONAL OSINT ROUTINE THAT CAUSES SPITBOL TO ! 681: < * CALL SYSCI TO CONVERT INTEGER VALUES TO STRINGS, RATHER ! 682: < * THAN USING SPITBOL'S OWN INTERNAL CONVERSION CODE. THIS ! 683: < * CODE MAY BE LESS EFFICIENT ON MACHINES WITH HARDWARE ! 684: < * CONVERSION INSTRUCTIONS AND IN SUCH CASES, IT MAY BE AN ! 685: < * ADVANTAGE TO INCLUDE SYSCI. THE SYMBOL .CNCI MUST BE ! 686: < * DEFINED IF THIS ROUTINE IS TO BE USED. ! 687: < * ! 688: < * THE RULES FOR CONVERTING INTEGERS TO STRINGS ARE THAT ! 689: < * POSITIVE VALUES ARE REPRESENTED WITHOUT ANY SIGN, AND ! 690: < * THERE ARE NEVER ANY LEADING BLANKS OR ZEROS, EXCEPT IN ! 691: < * THE CASE OF ZERO ITSELF WHICH IS REPRESENTED AS A SINGLE ! 692: < * ZERO DIGIT. NEGATIVE NUMBERS ARE REPRESENTED WITH A ! 693: < * PRECEEDING MINUS SIGN. THERE ARE NEVER ANY TRAILING ! 694: < * BLANKS, AND CONVERSION CANNOT FAIL. ! 695: < * ! 696: < * (IA) VALUE TO BE CONVERTED ! 697: < * JSR SYSCI CALL TO CONVERT INTEGER VALUE ! 698: < * (XL) POINTER TO PSEUDO-SCBLK WITH STRING ! 699: < EJC ! 700: --- ! 701: > .IF .CSAX ! 702: > SYSAX EXP E,0 ! 703: > .ELSE ! 704: 549,1250c171,203 ! 705: < * ! 706: < * SYSDC -- DATE CHECK ! 707: < * ! 708: < SYSDC EXP DEFINE EXTERNAL ENTRY POINT ! 709: < * ! 710: < * SYSDC IS CALLED TO CHECK THAT THE EXPIRY DATE FOR A TRIAL ! 711: < * VERSION OF SPITBOL IS UNEXPIRED. ! 712: < * ! 713: < * JSR SYSDC CALL TO CHECK DATE ! 714: < * RETURN ONLY IF DATE IS OK ! 715: < EJC ! 716: < * ! 717: < * SYSDM -- DUMP CORE ! 718: < * ! 719: < SYSDM EXP DEFINE EXTERNAL ENTRY POINT ! 720: < * ! 721: < * SYSDM IS CALLED BY A SPITBOL PROGRAM CALL OF DUMP(N) WITH ! 722: < * N GE 3. ITS PURPOSE IS TO PROVIDE A CORE DUMP. ! 723: < * N COULD HOLD AN ENCODING OF THE START ADRS FOR DUMP AND ! 724: < * AMOUNT TO BE DUMPED E.G. N = 256*A + S , S = START ADRS ! 725: < * IN KILOWORDS, A = KILOWORDS TO DUMP ! 726: < * ! 727: < * (XR) PARAMETER N OF CALL DUMP(N) ! 728: < * JSR SYSDM CALL TO ENTER ROUTINE ! 729: < EJC ! 730: < * ! 731: < * SYSDT -- GET CURRENT DATE ! 732: < * ! 733: < SYSDT EXP DEFINE EXTERNAL ENTRY POINT ! 734: < * ! 735: < * SYSDT IS USED TO OBTAIN THE CURRENT DATE. THE DATE IS ! 736: < * RETURNED AS A CHARACTER STRING IN ANY FORMAT APPROPRIATE ! 737: < * TO THE OPERATING SYSTEM IN USE. IT MAY ALSO CONTAIN THE ! 738: < * CURRENT TIME OF DAY. SYSDT IS USED TO IMPLEMENT THE ! 739: < * SNOBOL4 FUNCTION DATE. ! 740: < * ! 741: < * JSR SYSDT CALL TO GET DATE ! 742: < * (XL) POINTER TO BLOCK CONTAINING DATE ! 743: < * ! 744: < * THE FORMAT OF THE BLOCK IS LIKE AN SCBLK EXCEPT THAT ! 745: < * THE FIRST WORD NEED NOT BE SET. THE RESULT IS COPIED ! 746: < * INTO SPITBOL DYNAMIC MEMORY ON RETURN. ! 747: < EJC ! 748: < * ! 749: < * SYSEF -- EJECT FILE ! 750: < * ! 751: < SYSEF EXP DEFINE EXTERNAL ENTRY POINT ! 752: < * ! 753: < * SYSEF IS USED TO WRITE A PAGE EJECT TO A NAMED FILE. IT ! 754: < * MAY ONLY BE USED FOR FILES WHERE THIS CONCEPT MAKES ! 755: < * SENSE. NOTE THAT SYSEF IS NOT NORMALLY USED FOR THE ! 756: < * STANDARD OUTPUT FILE (SEE SYSEP). ! 757: < * ! 758: < * (WA) PTR TO FCBLK OR ZERO ! 759: < * (XR) EJECT ARGUMENT (SCBLK PTR) ! 760: < * JSR SYSEF CALL TO EJECT FILE ! 761: < * PPM LOC RETURN HERE IF FILE DOES NOT EXIST ! 762: < * PPM LOC RETURN HERE IF INAPPROPRIATE FILE ! 763: < * PPM LOC RETURN HERE IF I/O ERROR ! 764: < EJC ! 765: < * ! 766: < * SYSEJ -- END OF JOB ! 767: < * ! 768: < SYSEJ EXP DEFINE EXTERNAL ENTRY POINT ! 769: < * ! 770: < * SYSEJ IS CALLED ONCE AT THE END OF EXECUTION TO ! 771: < * TERMINATE THE RUN. THE SIGNIFICANCE OF THE ABEND AND ! 772: < * CODE VALUES IS SYSTEM DEPENDENT. IN GENERAL, THE CODE ! 773: < * VALUE SHOULD BE MADE AVAILABLE FOR TESTING, AND THE ! 774: < * ABEND VALUE SHOULD CAUSE SOME POST-MORTEM ACTION SUCH AS ! 775: < * A DUMP. NOTE THAT SYSEJ DOES NOT RETURN TO ITS CALLER. ! 776: < * SEE SYSXI FOR DETAILS OF FCBLK CHAIN ! 777: < * ! 778: < * (WA) VALUE OF ABEND KEYWORD ! 779: < * (WB) VALUE OF CODE KEYWORD ! 780: < * (XL) O OR PTR TO HEAD OF FCBLK CHAIN ! 781: < * JSR SYSEJ CALL TO END JOB ! 782: < * ! 783: < * THE FOLLOWING SPECIAL VALUES ARE USED AS CODES IN (WB) ! 784: < * 999 EXECUTION SUPPRESSED ! 785: < * 998 STANDARD OUTPUT FILE FULL OR UNAVAILABLE IN A SYSXI ! 786: < * LOAD MODULE. IN THESE CASES (WA) CONTAINS THE NUMBER ! 787: < * OF THE STATEMENT CAUSING PREMATURE TERMINATION. ! 788: < EJC ! 789: < * ! 790: < * SYSEM -- GET ERROR MESSAGE TEXT ! 791: < * ! 792: < SYSEM EXP DEFINE EXTERNAL ENTRY POINT ! 793: < * ! 794: < * SYSEM IS USED TO OBTAIN THE TEXT OF ERR, ERB CALLS IN THE ! 795: < * SOURCE PROGRAM GIVEN THE ERROR CODE NUMBER. IT IS ALLOWED ! 796: < * TO RETURN A NULL STRING IF THIS FACILITY IS UNAVAILABLE. ! 797: < * ! 798: < * (WA) ERROR CODE NUMBER ! 799: < * JSR SYSEM CALL TO GET TEXT ! 800: < * (XR) TEXT OF MESSAGE ! 801: < * ! 802: < * THE RETURNED VALUE IS A POINTER TO A BLOCK IN SCBLK ! 803: < * FORMAT EXCEPT THAT THE FIRST WORD NEED NOT BE SET. THE ! 804: < * STRING IS COPIED INTO DYNAMIC MEMORY ON RETURN. ! 805: < * IF THE NULL STRING IS RETURNED EITHER BECAUSE SYSEM DOES ! 806: < * NOT PROVIDE ERROR MESSAGE TEXTS OR BECAUSE WA IS OUT OF ! 807: < * RANGE, SPITBOL WILL PRINT THE STRING STORED IN ERRTEXT ! 808: < * KEYWORD. ! 809: < EJC ! 810: < * ! 811: < * SYSEN -- ENDFILE ! 812: < * ! 813: < SYSEN EXP DEFINE EXTERNAL ENTRY POINT ! 814: < * ! 815: < * SYSEN IS USED TO IMPLEMENT THE SNOBOL4 FUNCTION ENDFILE. ! 816: < * THE MEANING IS SYSTEM DEPENDENT. IN GENERAL, ENDFILE ! 817: < * IMPLIES THAT NO FURTHER I/O OPERATIONS WILL BE PERFORMED, ! 818: < * BUT DOES NOT GUARANTEE THIS TO BE THE CASE. THE FILE ! 819: < * SHOULD BE CLOSED AFTER THE CALL, A SUBSEQUENT READ ! 820: < * OR WRITE MAY REOPEN THE FILE AT THE START OR IT MAY BE ! 821: < * NECESSARY TO REOPEN THE FILE VIA SYSIO. ! 822: < * ! 823: < * (WA) PTR TO FCBLK OR ZERO ! 824: < * (XR) ENDFILE ARGUMENT (SCBLK PTR) ! 825: < * JSR SYSEN CALL TO ENDFILE ! 826: < * PPM LOC RETURN HERE IF FILE DOES NOT EXIST ! 827: < * PPM LOC RETURN HERE IF ENDFILE NOT ALLOWED ! 828: < * PPM LOC RETURN HERE IF I/O ERROR ! 829: < * (WA,WB) DESTROYED ! 830: < * ! 831: < * THE SECOND ERROR RETURN IS USED FOR FILES FOR WHICH ! 832: < * ENDFILE IS NOT PERMITTED. FOR EXAMPLE, IT MAY BE EXPECTED ! 833: < * THAT THE STANDARD INPUT AND OUTPUT FILES ARE IN THIS ! 834: < * CATEGORY. ! 835: < EJC ! 836: < * ! 837: < * SYSEP -- EJECT PRINTER PAGE ! 838: < * ! 839: < SYSEP EXP DEFINE EXTERNAL ENTRY POINT ! 840: < * ! 841: < * SYSEP IS CALLED TO PERFORM A PAGE EJECT ON THE STANDARD ! 842: < * PRINTER OUTPUT FILE (CORRESPONDING TO SYSPR OUTPUT). ! 843: < * ! 844: < * JSR SYSEP CALL TO EJECT PRINTER OUTPUT ! 845: < EJC ! 846: < * ! 847: < * SYSEX -- CALL EXTERNAL FUNCTION ! 848: < * ! 849: < SYSEX EXP DEFINE EXTERNAL ENTRY POINT ! 850: < * ! 851: < * SYSEX IS CALLED TO PASS CONTROL TO AN EXTERNAL FUNCTION ! 852: < * PREVIOUSLY LOADED WITH A CALL TO SYSLD. ! 853: < * ! 854: < * (XS) POINTER TO ARGUMENTS ON STACK ! 855: < * (XL) POINTER TO CONTROL BLOCK (EFBLK) ! 856: < * (WA) NUMBER OF ARGUMENTS ON STACK ! 857: < * JSR SYSEX CALL TO PASS CONTROL TO FUNCTION ! 858: < * PPM LOC RETURN HERE IF FUNCTION CALL FAILS ! 859: < * (XS) POPPED PAST ARGUMENTS ! 860: < * (XR) RESULT RETURNED ! 861: < * ! 862: < * THE ARGUMENTS ARE STORED ON THE STACK WITH ! 863: < * THE LAST ARGUMENT AT 0(XS). ON RETURN, XS ! 864: < * IS POPPED PAST THE ARGUMENTS. ! 865: < * ! 866: < * THE FORM OF THE ARGUMENTS AS PASSED IS THAT USED IN THE ! 867: < * SPITBOL TRANSLATOR (SEE DEFINITIONS AND DATA STRUCTURES ! 868: < * SECTION). THE CONTROL BLOCK FORMAT IS ALSO DESCRIBED ! 869: < * (UNDER EFBLK) IN THIS SECTION. ! 870: < * ! 871: < * THERE ARE TWO WAYS OF RETURNING A RESULT. ! 872: < * ! 873: < * 1) RETURN A POINTER TO A BLOCK IN DYNAMIC STORAGE. THIS ! 874: < * BLOCK MUST BE IN EXACTLY CORRECT FORMAT, INCLUDING ! 875: < * THE FIRST WORD. ONLY FUNCTIONS WRITTEN WITH INTIMATE ! 876: < * KNOWLEDGE OF THE SYSTEM WILL RETURN IN THIS WAY. ! 877: < * ! 878: < * 2) STRING, INTEGER AND REAL RESULTS MAY BE RETURNED BY ! 879: < * POINTING TO A PSEUDO-BLOCK OUTSIDE DYNAMIC MEMORY. ! 880: < * THIS BLOCK IS IN ICBLK, RCBLK OR SCBLK FORMAT EXCEPT ! 881: < * THAT THE FIRST WORD WILL BE OVERWRITTEN ! 882: < * BY A TYPE WORD ON RETURN AND SO NEED NOT ! 883: < * BE CORRECTLY SET. SUCH A RESULT IS ! 884: < * COPIED INTO MAIN STORAGE BEFORE PROCEEDING. ! 885: < * UNCONVERTED RESULTS MAY SIMILARLY BE RETURNED IN A ! 886: < * PSEUDO-BLOCK WHICH IS IN CORRECT FORMAT INCLUDING ! 887: < * TYPE WORD RECOGNISABLE BY GARBAGE COLLECTOR SINCE ! 888: < * BLOCK IS COPIED INTO DYNAMIC MEMORY. ! 889: < EJC ! 890: < * ! 891: < * SYSFC -- FILE CONTROL BLOCK ROUTINE ! 892: < * ! 893: < SYSFC EXP DEFINE EXTERNAL ENTRY POINT ! 894: < * ! 895: < * SEE ALSO SYSIO ! 896: < * INPUT AND OUTPUT HAVE 3 ARGUMENTS REFERRED TO AS SHOWN ! 897: < * INPUT(VARIABLE NAME,FILE ARG1,FILE ARG2) ! 898: < * OUTPUT(VARIABLE NAME,FILE ARG1,FILE ARG2) ! 899: < * FILE ARG1 MAY BE AN INTEGER OR STRING USED TO IDENTIFY ! 900: < * AN I/O CHANNEL. IT IS CONVERTED TO A STRING FOR CHECKING. ! 901: < * THE EXACT SIGNIFICANCE OF FILE ARG2 ! 902: < * IS NOT RIGOROUSLY PRESCRIBED BUT TO IMPROVE PORTABILITY, ! 903: < * THE SCHEME DESCRIBED IN THE SPITBOL USER MANUAL ! 904: < * SHOULD BE ADOPTED WHEN POSSIBLE. THE PREFERRED FORM IS ! 905: < * A STRING $F$,R$R$,C$C$,I$I$,...,Z$Z$ WHERE ! 906: < * $F$ IS AN OPTIONAL FILE NAME WHICH IS PLACED FIRST. ! 907: < * REMAINING ITEMS MAY BE OMITTED OR INCLUDED IN ANY ORDER. ! 908: < * $R$ IS MAXIMUM RECORD LENGTH ! 909: < * $C$ IS A CARRIAGE CONTROL CHARACTER OR CHARACTER STRING ! 910: < * $I$ IS SOME FORM OF CHANNEL IDENTIFICATION USED IN THE ! 911: < * ABSENCE OF $F$ TO ASSOCIATE THE VARIABLE ! 912: < * WITH A FILE ALLOCATED DYNAMICALLY BY JCL COMMANDS AT ! 913: < * SPITBOL LOAD TIME. ! 914: < * ,...,Z$Z$ ARE ADDITIONAL FIELDS. ! 915: < * IF , (COMMA) CANNOT BE USED AS A DELIMITER, .CIOD ! 916: < * SHOULD BE DEFINED TO INTRODUCE BY CONDITIONAL ASSEMBLY ! 917: < * ANOTHER DELIMITER (SEE ! 918: < * IODEL EQU * ! 919: < * EARLY IN DEFINITIONS SECTION). ! 920: < * SYSFC IS CALLED WHEN A VARIABLE IS INPUT OR OUTPUT ! 921: < * ASSOCIATED TO CHECK FILE ARG1 AND FILE ARG2 AND ! 922: < * TO REPORT WHETHER AN FCBLK (FILE CONTROL ! 923: < * BLOCK) IS NECESSARY AND IF SO WHAT SIZE IT SHOULD BE. ! 924: < * THIS MAKES IT POSSIBLE FOR SPITBOL RATHER THAN OSINT TO ! 925: < * ALLOCATE SUCH A BLOCK IN DYNAMIC MEMORY IF REQUIRED ! 926: < * OR ALTERNATIVELY IN STATIC MEMORY. ! 927: < * THE SIGNIFICANCE OF AN FCBLK , IF ONE IS REQUESTED, IS ! 928: < * ENTIRELY UP TO THE SYSTEM INTERFACE. THE ONLY RESTRICTION ! 929: < * IS THAT IF THE FCBLK SHOULD APPEAR TO LIE IN DYNAMIC ! 930: < * MEMORY , POINTERS TO IT SHOULD BE PROPER POINTERS TO ! 931: < * THE START OF A RECOGNISABLE AND GARBAGE COLLECTABLE ! 932: < * BLOCK (THIS CONDITION WILL BE MET IF SYSFC REQUESTS ! 933: < * SPITBOL TO PROVIDE AN FCBLK). ! 934: < * AN OPTION IS PROVIDED FOR OSINT TO RETURN A POINTER IN ! 935: < * XL TO AN FCBLK WHICH IT PRIVATELY ALLOCATED. THIS PTR ! 936: < * WILL BE MADE AVAILABLE WHEN I/O OCCURS LATER. ! 937: < * PRIVATE FCBLKS MAY HAVE ARBITRARY CONTENTS AND SPITBOL ! 938: < * STORES NOTHING IN THEM. ! 939: < EJC ! 940: < * THE REQUESTED SIZE FOR AN FCBLK IN DYNAMIC MEMORY ! 941: < * SHOULD ALLOW A 2 WORD OVERHEAD FOR BLOCK TYPE AND ! 942: < * LENGTH FIELDS. INFORMATION SUBSEQUENTLY STORED IN THE ! 943: < * REMAINING WORDS MAY BE ARBITRARY IF AN XNBLK (EXTERNAL ! 944: < * NON-RELOCATABLE BLOCK) IS REQUESTED. IF THE REQUEST IS ! 945: < * FOR AN XRBLK (EXTERNAL RELOCATABLE BLOCK) THE ! 946: < * CONTENTS OF WORDS SHOULD BE COLLECTABLE (I.E. ANY ! 947: < * APPARENT POINTERS INTO DYNAMIC SHOULD BE GENUINE BLOCK ! 948: < * POINTERS). THESE RESTRICTIONS DO NOT APPLY IF AN FCBLK ! 949: < * IS ALLOCATED OUTSIDE DYNAMIC OR IS NOT ALLOCATED AT ALL. ! 950: < * IF AN FCBLK IS REQUESTED, ITS FIELDS WILL BE INITIALISED ! 951: < * TO ZERO BEFORE ENTRY TO SYSIO WITH THE EXCEPTION OF ! 952: < * WORDS 0 AND 1 IN WHICH THE BLOCK TYPE AND LENGTH ! 953: < * FIELDS ARE PLACED FOR FCBLKS IN DYNAMIC MEMORY ONLY. ! 954: < * FOR THE POSSIBLE USE OF SYSEJ AND SYSXI, IF FCBLKS ! 955: < * ARE USED, A CHAIN IS BUILT SO THAT THEY MAY ALL BE ! 956: < * FOUND - SEE SYSXI FOR DETAILS. ! 957: < * IF BOTH FILE ARG1 AND FILE ARG2 ARE NULL, CALLS OF SYSFC ! 958: < * AND SYSIO ARE OMITTED. ! 959: < * IF FILE ARG1 IS NULL (STANDARD INPUT/OUTPUT FILE), SYSFC ! 960: < * IS CALLED TO CHECK NON-NULL FILE ARG2 BUT ANY REQUEST ! 961: < * FOR AN FCBLK WILL BE IGNORED, SINCE SPITBOL HANDLES THE ! 962: < * STANDARD FILES SPECIALLY AND CANNOT READILY KEEP FCBLK ! 963: < * POINTERS FOR THEM. ! 964: < * FILEARG1 IS TYPE CHECKED BY SPITBOL SO FURTHER CHECKING ! 965: < * MAY BE UNNECCESSARY IN MANY IMPLEMENTATIONS. ! 966: < * FILE ARG2 IS PASSED SO THAT SYSFC MAY ANALYSE AND ! 967: < * CHECK IT. HOWEVER TO ASSIST IN THIS, SPITBOL ALSO PASSES ! 968: < * ON THE STACK THE COMPONENTS OF THIS ARGUMENT WITH ! 969: < * FILE NAME, $F$ (OTHERWISE NULL) EXTRACTED AND STACKED ! 970: < * FIRST. ! 971: < * THE OTHER FIELDS, IF ANY, ARE EXTRACTED AS SUBSTRINGS, ! 972: < * POINTERS TO THEM ARE STACKED AND A COUNT OF ALL ITEMS ! 973: < * STACKED IS PLACED IN WC. IF AN FCBLK WAS EARLIER ! 974: < * ALLOCATED AND POINTED TO VIA FILE ARG1, SYSFC IS ALSO ! 975: < * PASSED A POINTER TO THIS FCBLK. ! 976: < * ! 977: < * (XL) FILE ARG1 SCBLK PTR (2ND ARG) ! 978: < * (XR) FILEARG2 (3RD ARG) OR NULL ! 979: < * -(XS)...-(XS) SCBLKS FOR $F$,$R$,$C$,... ! 980: < * (WC) NO. OF STACKED SCBLKS ABOVE ! 981: < * (WA) EXISTING FILE ARG1 FCBLK PTR OR 0 ! 982: < * (WB) 0/3 FOR INPUT/OUTPUT ASSOCN ! 983: < * JSR SYSFC CALL TO CHECK NEED FOR FCBLK ! 984: < * PPM LOC INVALID FILE ARGUMENT ! 985: < * (XS) POPPED (WC) TIMES ! 986: < * (WA NON ZERO) BYTE SIZE OF REQUESTED FCBLK ! 987: < * (WA=0,XL NON ZERO) PRIVATE FCBLK PTR IN XL ! 988: < * (WA=XL=0) NO FCBLK WANTED, NO PRIVATE FCBLK ! 989: < * (WC) 0/1/2 REQUEST ALLOC OF XRBLK/XNBLK ! 990: < * /STATIC BLOCK FOR USE AS FCBLK ! 991: < * (WB) DESTROYED ! 992: < EJC ! 993: < * ! 994: < * SYSHS -- GIVE ACCESS TO HOST COMPUTER FEATURES ! 995: < * ! 996: < SYSHS EXP DEFINE EXTERNAL ENTRY POINT ! 997: < * ! 998: < * PROVIDES MEANS FOR IMPLEMENTING SPECIAL FEATURES ! 999: < * ON DIFFERENT HOST COMPUTERS. THE ONLY DEFINED ENTRY IS ! 1000: < * THAT WHERE ALL ARGUMENTS ARE NULL IN WHICH CASE SYSHS ! 1001: < * RETURNS AN SCBLK CONTAINING NAME OF COMPUTER, ! 1002: < * NAME OF OPERATING SYSTEM AND NAME OF SITE SEPARATED BY ! 1003: < * COLONS. THE SCBLK NEED NOT HAVE A CORRECT FIRST FIELD ! 1004: < * AS THIS IS SUPPLIED ON COPYING STRING TO DYNAMIC MEMORY. ! 1005: < * SPITBOL DOES NO ARGUMENT CHECKING BUT DOES PROVIDE A ! 1006: < * SINGLE ERROR RETURN FOR ARGUMENTS CHECKED AS ERRONEOUS ! 1007: < * BY OSINT. IT ALSO PROVIDES A SINGLE EXECUTION ERROR ! 1008: < * RETURN. IF THESE ARE INADEQUATE, USE MAY BE MADE OF THE ! 1009: < * MINIMAL ERROR SECTION DIRECT AS DESCRIBED IN MINIMAL ! 1010: < * DOCUMENTATION, SECTION 10. ! 1011: < * SEVERAL NON-ERROR RETURNS ARE PROVIDED. THE FIRST ! 1012: < * CORRESPONDS TO THE DEFINED ENTRY OR, FOR IMPLEMENTATION ! 1013: < * DEFINED ENTRIES, ANY STRING MAY BE RETURNED. THE OTHERS ! 1014: < * PERMIT RESPECTIVELY, RETURN A NULL RESULT, RETURN WITH A ! 1015: < * RESULT TO BE STACKED WHICH IS POINTED AT BY XR, AND A ! 1016: < * RETURN CAUSING SPITBOL STATEMENT FAILURE. IF A RETURNED ! 1017: < * RESULT IS IN DYNAMIC MEMORY IT MUST OBEY GARBAGE ! 1018: < * COLLECTOR RULES. THE ONLY RESULTS COPIED ON RETURN ! 1019: < * ARE STRINGS RETURNED VIA PPM LOC3 RETURN. ! 1020: < * ! 1021: < * (WA) ARGUMENT 1 ! 1022: < * (XL) ARGUMENT 2 ! 1023: < * (XR) ARGUMENT 3 ! 1024: < * JSR SYSHS CALL TO GET HOST INFORMATION ! 1025: < * PPM LOC1 ERRONEOUS ARG ! 1026: < * PPM LOC2 EXECUTION ERROR ! 1027: < * PPM LOC3 SCBLK PTR IN XL OR 0 IF UNAVAILABLE ! 1028: < * PPM LOC4 RETURN A NULL RESULT ! 1029: < * PPM LOC5 RETURN RESULT IN XR ! 1030: < * PPM LOC6 CAUSE STATEMENT FAILURE ! 1031: < EJC ! 1032: < * ! 1033: < * SYSID -- RETURN SYSTEM IDENTIFICATION ! 1034: < * ! 1035: < SYSID EXP DEFINE EXTERNAL ENTRY POINT ! 1036: < * ! 1037: < * THIS ROUTINE SHOULD RETURN STRINGS TO HEAD THE STANDARD ! 1038: < * PRINTER OUTPUT. THE FIRST STRING WILL BE APPENDED TO ! 1039: < * A HEADING LINE OF THE FORM ! 1040: < * MACRO SPITBOL VERSION V.V ! 1041: < * SUPPLIED BY SPITBOL ITSELF. V.V ARE DIGITS GIVING THE ! 1042: < * MAJOR VERSION NUMBER AND GENERALLY AT LEAST A MINOR ! 1043: < * VERSION NUMBER RELATING TO OSINT SHOULD BE SUPPLIED TO ! 1044: < * GIVE SAY ! 1045: < * MACRO SPITBOL VERSION V.V(M.M) ! 1046: < * THE SECOND STRING SHOULD IDENTIFY AT LEAST THE MACHINE ! 1047: < * AND OPERATING SYSTEM. PREFERABLY IT SHOULD INCLUDE ! 1048: < * THE DATE AND TIME OF THE RUN. ! 1049: < * OPTIONALLY THE STRINGS MAY INCLUDE SITE NAME OF THE ! 1050: < * THE IMPLEMENTOR AND/OR MACHINE ON WHICH RUN TAKES PLACE, ! 1051: < * UNIQUE SITE OR COPY NUMBER AND OTHER INFORMATION AS ! 1052: < * APPROPRIATE WITHOUT MAKING IT SO LONG AS TO BE A ! 1053: < * NUISANCE TO USERS. ! 1054: < * THE FIRST WORDS OF THE SCBLKS POINTED AT NEED NOT BE ! 1055: < * CORRECTLY SET. ! 1056: < * ! 1057: < * JSR SYSID CALL FOR SYSTEM IDENTIFICATION ! 1058: < * (XR) SCBLK PTR FOR ADDITION TO HEADER ! 1059: < * (XL) PTR TO SECOND HEADER SCBLK ! 1060: < EJC ! 1061: < * ! 1062: < * SYSIL -- GET INPUT RECORD LENGTH ! 1063: < * ! 1064: < SYSIL EXP DEFINE EXTERNAL ENTRY POINT ! 1065: < * ! 1066: < * SYSIL IS USED TO GET THE LENGTH OF THE NEXT INPUT RECORD ! 1067: < * FROM A FILE PREVIOUSLY INPUT ASSOCIATED WITH A SYSIO ! 1068: < * CALL. THE LENGTH RETURNED IS USED TO ESTABLISH A BUFFER ! 1069: < * FOR A SUBSEQUENT SYSIN CALL. ! 1070: < * ! 1071: < * (WA) PTR TO FCBLK OR ZERO ! 1072: < * JSR SYSIL CALL TO GET RECORD LENGTH ! 1073: < * (WA) LENGTH OR ZERO IF FILE CLOSED ! 1074: < * ! 1075: < * NO HARM IS DONE IF THE VALUE RETURNED IS TOO LONG SINCE ! 1076: < * UNUSED SPACE WILL BE RECLAIMED AFTER THE SYSIN CALL. ! 1077: < * ! 1078: < * NOTE THAT IT IS THE SYSIL CALL (NOT THE SYSIO CALL) WHICH ! 1079: < * CAUSES THE FILE TO BE OPENED AS REQUIRED FOR THE FIRST ! 1080: < * RECORD INPUT FROM THE FILE. ! 1081: < EJC ! 1082: < * ! 1083: < * SYSIN -- READ INPUT RECORD ! 1084: < * ! 1085: < SYSIN EXP DEFINE EXTERNAL ENTRY POINT ! 1086: < * ! 1087: < * SYSIN IS USED TO READ A RECORD FROM THE FILE WHICH WAS ! 1088: < * REFERENCED IN A PRIOR CALL TO SYSIL (I.E. THESE CALLS ! 1089: < * ALWAYS OCCUR IN PAIRS). THE BUFFER PROVIDED IS AN ! 1090: < * SCBLK FOR A STRING OF LENGTH SET FROM THE SYSIL CALL. ! 1091: < * IF THE ACTUAL LENGTH READ IS LESS THAN THIS, THE LENGTH ! 1092: < * FIELD OF THE SCBLK MUST BE MODIFIED BEFORE RETURNING ! 1093: < * UNLESS BUFFER IS RIGHT PADDED WITH ZEROES. ! 1094: < * IT IS ALSO PERMISSIBLE TO TAKE ANY OF THE ALTERNATIVE ! 1095: < * RETURNS AFTER SCBLK LENGTH HAS BEEN MODIFIED. ! 1096: < * ! 1097: < * (WA) PTR TO FCBLK OR ZERO ! 1098: < * (XR) POINTER TO BUFFER (SCBLK PTR) ! 1099: < * JSR SYSIN CALL TO READ RECORD ! 1100: < * PPM LOC ENDFILE OR NO I/P FILE AFTER SYSXI ! 1101: < * PPM LOC RETURN HERE IF I/O ERROR ! 1102: < * PPM LOC RETURN HERE IF RECORD FORMAT ERROR ! 1103: < * (WA,WB,WC) DESTROYED ! 1104: < EJC ! 1105: < * ! 1106: < * SYSIO -- INPUT/OUTPUT FILE ASSOCIATION ! 1107: < * ! 1108: < SYSIO EXP DEFINE EXTERNAL ENTRY POINT ! 1109: < * ! 1110: < * SEE ALSO SYSFC. ! 1111: < * SYSIO IS CALLED IN RESPONSE TO A SNOBOL4 INPUT OR OUTPUT ! 1112: < * FUNCTION CALL EXCEPT WHEN FILE ARG1 AND FILE ARG2 ! 1113: < * ARE BOTH NULL. ! 1114: < * ITS CALL ALWAYS FOLLOWS IMMEDIATELY AFTER A CALL ! 1115: < * OF SYSFC. IF SYSFC REQUESTED ALLOCATION ! 1116: < * OF AN FCBLK, ITS ADDRESS WILL BE IN WA. ! 1117: < * FOR INPUT FILES, NON-ZERO VALUES OF $R$ SHOULD BE ! 1118: < * COPIED TO WC FOR USE IN ALLOCATING INPUT BUFFERS. IF $R$ ! 1119: < * IS DEFAULTED OR NOT IMPLEMENTED, WC SHOULD BE ZEROISED. ! 1120: < * ONCE A FILE HAS BEEN OPENED, SUBSEQUENT INPUT(),OUTPUT() ! 1121: < * CALLS IN WHICH THE SECOND ARGUMENT IS IDENTICAL WITH THAT ! 1122: < * IN A PREVIOUS CALL, MERELY ASSOCIATE THE ADDITIONAL ! 1123: < * VARIABLE NAME (FIRST ARGUMENT) TO THE FILE AND DO NOT ! 1124: < * RESULT IN RE-OPENING THE FILE. ! 1125: < * IN SUBSEQUENT ASSOCIATED ACCESSES TO THE FILE A POINTER ! 1126: < * TO ANY FCBLK ALLOCATED WILL BE MADE AVAILABLE. ! 1127: < * ! 1128: < * (XL) FILE ARG1 SCBLK PTR (2ND ARG) ! 1129: < * (XR) FILE ARG2 SCBLK PTR (3RD ARG) ! 1130: < * (WA) FCBLK PTR (0 IF NONE) ! 1131: < * (WB) 0 FOR INPUT, 3 FOR OUTPUT ! 1132: < * JSR SYSIO CALL TO ASSOCIATE FILE ! 1133: < * PPM LOC RETURN HERE IF FILE DOES NOT EXIST ! 1134: < * PPM LOC RETURN IF INPUT/OUTPUT NOT ALLOWED ! 1135: < * (XL) FCBLK POINTER (0 IF NONE) ! 1136: < * (WC) 0 (FOR DEFAULT) OR MAX RECORD LNGTH ! 1137: < * (WA,WB) DESTROYED ! 1138: < * ! 1139: < * THE SECOND ERROR RETURN IS USED IF THE FILE NAMED EXISTS ! 1140: < * BUT INPUT/OUTPUT FROM THE FILE IS NOT ALLOWED. FOR ! 1141: < * EXAMPLE, THE STANDARD OUTPUT FILE MAY BE IN THIS CATEGORY ! 1142: < * AS REGARDS INPUT ASSOCIATION. ! 1143: < EJC ! 1144: < * ! 1145: < * SYSLD -- LOAD EXTERNAL FUNCTION ! 1146: < * ! 1147: < SYSLD EXP DEFINE EXTERNAL ENTRY POINT ! 1148: < * ! 1149: < * SYSLD IS CALLED IN RESPONSE TO THE USE OF THE SNOBOL4 ! 1150: < * LOAD FUNCTION. THE NAMED FUNCTION IS LOADED (WHATEVER ! 1151: < * THIS MEANS), AND A POINTER IS RETURNED. THE POINTER WILL ! 1152: < * BE USED ON SUBSEQUENT CALLS TO THE FUNCTION (SEE SYSEX). ! 1153: < * ! 1154: < * (XR) POINTER TO FUNCTION NAME (SCBLK) ! 1155: < * (XL) POINTER TO LIBRARY NAME (SCBLK) ! 1156: < * JSR SYSLD CALL TO LOAD FUNCTION ! 1157: < * PPM LOC RETURN HERE IF FUNC DOES NOT EXIST ! 1158: < * PPM LOC RETURN HERE IF I/O ERROR ! 1159: < * (XR) POINTER TO LOADED CODE ! 1160: < * ! 1161: < * THE SIGNIFICANCE OF THE POINTER RETURNED IS UP TO THE ! 1162: < * SYSTEM INTERFACE ROUTINE. THE ONLY RESTRICTION IS THAT ! 1163: < * IF THE POINTER IS WITHIN DYNAMIC STORAGE, IT MUST BE ! 1164: < * A PROPER BLOCK POINTER. ! 1165: < EJC ! 1166: < * ! 1167: < * SYSMM -- GET MORE MEMORY ! 1168: < * ! 1169: < SYSMM EXP DEFINE EXTERNAL ENTRY POINT ! 1170: < * ! 1171: < * SYSMM IS CALLED IN AN ATTEMPT TO ALLOCATE MORE DYNAMIC ! 1172: < * MEMORY. THIS MEMORY MUST BE ALLOCATED CONTIGUOUSLY WITH ! 1173: < * THE CURRENT DYNAMIC DATA AREA. ! 1174: < * ! 1175: < * THE AMOUNT ALLOCATED IS UP TO THE SYSTEM TO DECIDE. ANY ! 1176: < * VALUE IS ACCEPTABLE INCLUDING ZERO IF ALLOCATION IS ! 1177: < * IMPOSSIBLE. ! 1178: < * ! 1179: < * JSR SYSMM CALL TO GET MORE MEMORY ! 1180: < * (XR) NUMBER OF ADDITIONAL WORDS OBTAINED ! 1181: < EJC ! 1182: < * ! 1183: < * SYSMX -- SUPPLY MXLEN ! 1184: < * ! 1185: < SYSMX EXP DEFINE EXTERNAL ENTRY POINT ! 1186: < * ! 1187: < * BECAUSE OF THE METHOD OF GARBAGE COLLECTION, NO SPITBOL ! 1188: < * OBJECT IS ALLOWED TO OCCUPY MORE BYTES OF MEMORY THAN ! 1189: < * THE INTEGER GIVING THE LOWEST ADDRESS OF DYNAMIC ! 1190: < * (GARBAGE COLLECTABLE) MEMORY. MXLEN IS THE NAME USED TO ! 1191: < * REFER TO THIS MAXIMUM LENGTH OF AN OBJECT AND FOR MOST ! 1192: < * USERS OF MOST IMPLEMENTATIONS, PROVIDED DYNAMIC MEMORY ! 1193: < * STARTS AT AN ADDRESS OF AT LEAST A FEW THOUSAND WORDS, ! 1194: < * THERE IS NO PROBLEM. ! 1195: < * IF THE DEFAULT STARTING ADDRESS IS LESS THAN SAY 10000 OR ! 1196: < * 20000, THEN A LOAD TIME OPTION SHOULD BE PROVIDED WHERE A ! 1197: < * USER CAN REQUEST THAT HE BE ABLE TO CREATE LARGER ! 1198: < * OBJECTS. THIS ROUTINE INFORMS SPITBOL OF THIS REQUEST IF ! 1199: < * ANY. THE VALUE RETURNED IS EITHER AN INTEGER ! 1200: < * REPRESENTING THE DESIRED VALUE OF MXLEN (AND HENCE THE ! 1201: < * MINIMUM DYNAMIC STORE ADDRESS WHICH MAY RESULT IN ! 1202: < * NON-USE OF SOME STORE) OR ZERO IF A DEFAULT IS ACCEPTABLE ! 1203: < * IN WHICH MXLEN IS SET TO THE LOWEST ADDRESS ALLOCATED ! 1204: < * TO DYNAMIC STORE BEFORE COMPILATION STARTS. ! 1205: < * IF A NON-ZERO VALUE IS RETURNED, THIS IS USED FOR KEYWORD ! 1206: < * MAXLNGTH. OTHERWISE THE INITIAL LOW ADDRESS OF DYNAMIC ! 1207: < * MEMORY IS USED FOR THIS KEYWORD. ! 1208: < * ! 1209: < * JSR SYSMX CALL TO GET MXLEN ! 1210: < * (WA) EITHER MXLEN OR 0 FOR DEFAULT ! 1211: < EJC ! 1212: < * ! 1213: < * SYSOU -- OUTPUT RECORD ! 1214: < * ! 1215: < SYSOU EXP DEFINE EXTERNAL ENTRY POINT ! 1216: < * ! 1217: < * SYSOU IS USED TO WRITE A RECORD TO A FILE PREVIOUSLY ! 1218: < * ASSOCIATED WITH A SYSIO CALL. ! 1219: < * ! 1220: < * (WA) PTR TO FCBLK OR ZERO ! 1221: < * (XR) RECORD TO BE WRITTEN (SCBLK) ! 1222: < * JSR SYSOU CALL TO OUTPUT RECORD ! 1223: < * PPM LOC FILE FULL OR NO FILE AFTER SYSXI ! 1224: < * PPM LOC RETURN HERE IF I/O ERROR ! 1225: < * (WA,WB,WC) DESTROYED ! 1226: < * ! 1227: < * NOTE THAT IT IS THE SYSOU CALL (NOT THE SYSIO CALL) WHICH ! 1228: < * CAUSES THE FILE TO BE OPENED AS REQUIRED FOR THE FIRST ! 1229: < * RECORD OUTPUT TO THE FILE. ! 1230: < EJC ! 1231: < * ! 1232: < * SYSPI -- PRINT ON INTERACTIVE CHANNEL ! 1233: < * ! 1234: < SYSPI EXP DEFINE EXTERNAL ENTRY POINT ! 1235: < * ! 1236: < * IF SPITBOL IS RUN FROM AN ONLINE TERMINAL, OSINT CAN ! 1237: < * REQUEST THAT MESSAGES SUCH AS COPIES OF COMPILATION ! 1238: < * ERRORS BE SENT TO THE TERMINAL (SEE SYSPP). IF RELEVANT ! 1239: < * REPLY WAS MADE BY SYSPP THEN SYSPI IS CALLED TO SEND SUCH ! 1240: < * MESSAGES TO THE INTERACTIVE CHANNEL. ! 1241: < * SYSPI IS ALSO USED FOR SENDING OUTPUT TO THE TERMINAL ! 1242: < * THROUGH THE SPECIAL VARIABLE NAME, TERMINAL. ! 1243: < * ! 1244: < * (XR) PTR TO LINE BUFFER (SCBLK) ! 1245: < * (WA) LINE LENGTH ! 1246: < * JSR SYSPI CALL TO PRINT LINE ! 1247: < * PPM LOC FAILURE RETURN ! 1248: < * (WA,WB) DESTROYED ! 1249: < EJC ! 1250: < * ! 1251: < * SYSPP -- OBTAIN PRINT PARAMETERS ! 1252: < * ! 1253: < SYSPP EXP DEFINE EXTERNAL ENTRY POINT ! 1254: < * ! 1255: < * SYSPP IS CALLED ONCE DURING COMPILATION TO OBTAIN ! 1256: < * PARAMETERS REQUIRED FOR CORRECT PRINTED OUTPUT FORMAT ! 1257: < * AND TO SELECT OTHER OPTIONS. IT MAY ALSO BE CALLED AGAIN ! 1258: < * AFTER SYSXI WHEN A LOAD MODULE IS RESUMED. IN THIS ! 1259: < * CASE THE VALUE RETURNED IN WA MAY BE LESS THAN OR EQUAL ! 1260: < * TO THAT RETURNED IN INITIAL CALL BUT MAY NOT BE ! 1261: < * GREATER. ! 1262: < * THE INFORMATION RETURNED IS - ! 1263: < * 1. LINE LENGTH IN CHARS FOR STANDARD PRINT FILE ! 1264: < * 2. NO OF LINES/PAGE. 0 IS PREFERABLE FOR A NON-PAGED ! 1265: < * DEVICE (E.G. ONLINE TERMINAL) IN WHICH CASE LISTING ! 1266: < * PAGE THROWS ARE SUPPRESSED AND PAGE HEADERS ! 1267: < * RESULTING FROM -TITLE,-STITL LINES ARE KEPT SHORT. ! 1268: < * 3. AN INITIAL -NOLIST OPTION TO SUPPRESS LISTING UNLESS ! 1269: < * THE PROGRAM CONTAINS AN EXPLICIT -LIST. ! 1270: < * 4. OPTIONS TO SUPPRESS LISTING OF COMPILATION AND/OR ! 1271: < * EXECUTION STATS (USEFUL FOR ESTABLISHED PROGRAMS) - ! 1272: < * COMBINED WITH 3. GIVES POSSIBILITY OF LISTING ! 1273: < * FILE NEVER BEING OPENED. ! 1274: < * 5. OPTION TO HAVE COPIES OF ERRORS SENT TO AN ! 1275: < * INTERACTIVE CHANNEL IN ADDITION TO STANDARD PRINTER. ! 1276: < * 6. OPTION TO KEEP PAGE HEADERS SHORT (E.G. IF LISTING ! 1277: < * TO AN ONLINE TERMINAL). ! 1278: < * 7. AN OPTION TO CHOOSE EXTENDED OR COMPACT LISTING ! 1279: < * FORMAT. IN THE FORMER A PAGE EJECT AND IN THE LATTER ! 1280: < * A FEW LINE FEEDS PRECEDE THE PRINTING OF EACH ! 1281: < * OF-- LISTING, COMPILATION STATISTICS, EXECUTION ! 1282: < * OUTPUT AND EXECUTION STATISTICS. ! 1283: < * 8. AN OPTION TO SUPPRESS EXECUTION AS THOUGH A ! 1284: < * -NOEXECUTE CARD WERE SUPPLIED. ! 1285: < * 9. AN OPTION TO REQUEST THAT NAME /TERMINAL/ BE PRE- ! 1286: < * ASSOCIATED TO AN ONLINE TERMINAL VIA SYSPI AND SYSRI ! 1287: < * 10. AN INTERMEDIATE (STANDARD) LISTING OPTION REQUIRING ! 1288: < * THAT PAGE EJECTS OCCUR IN SOURCE LISTINGS. REDUNDANT ! 1289: < * IF EXTENDED OPTION CHOSEN BUT PARTIALLY EXTENDS ! 1290: < * COMPACT OPTION. ! 1291: < * 11. OPTION TO SUPPRESS SYSID IDENTIFICATION. ! 1292: < * ! 1293: < * JSR SYSPP CALL TO GET PRINT PARAMETERS ! 1294: < * (WA) PRINT LINE LENGTH IN CHARS ! 1295: < * (WB) NUMBER OF LINES/PAGE ! 1296: < * (WC) BITS VALUE ...JIHGFEDCBA WHERE ! 1297: < * A = 1 TO SEND ERROR COPY TO INT.CH. ! 1298: < * B = 1 MEANS STD PRINTER IS INT. CH. ! 1299: < * C = 1 FOR -NOLIST OPTION ! 1300: < * D = 1 TO SUPPRESS COMPILN. STATS ! 1301: < * E = 1 TO SUPPRESS EXECN. STATS ! 1302: < * F = 1/0 FOR EXTNDED/COMPACT LISTING ! 1303: < * G = 1 FOR -NOEXECUTE ! 1304: < * H = 1 PRE-ASSOCIATE /TERMINAL/ ! 1305: < * I = 1 FOR STANDARD LISTING OPTION. ! 1306: < * J = 1 SUPPRESSES LISTING HEADER ! 1307: < EJC ! 1308: < * ! 1309: < * SYSPR -- PRINT LINE ON STANDARD OUTPUT FILE ! 1310: < * ! 1311: < SYSPR EXP DEFINE EXTERNAL ENTRY POINT ! 1312: < * ! 1313: < * SYSPR IS USED TO PRINT A SINGLE LINE ON THE STANDARD ! 1314: < * OUTPUT FILE. ! 1315: < * ! 1316: < * (XR) POINTER TO LINE BUFFER (SCBLK) ! 1317: < * (WA) LINE LENGTH ! 1318: < * JSR SYSPR CALL TO PRINT LINE ! 1319: < * PPM LOC TOO MUCH O/P OR NO FILE AFTER SYSXI ! 1320: < * (WA,WB) DESTROYED ! 1321: < * ! 1322: < * THE BUFFER POINTED TO IS THE LENGTH OBTAINED FROM THE ! 1323: < * SYSPP CALL AND IS FILLED OUT WITH TRAILING BLANKS. THE ! 1324: < * VALUE IN WA IS THE ACTUAL LINE LENGTH WHICH MAY BE LESS ! 1325: < * THAN THE MAXIMUM LINE LENGTH POSSIBLE. THERE IS NO SPACE ! 1326: < * CONTROL ASSOCIATED WITH THE LINE, ALL LINES ARE PRINTED ! 1327: < * SINGLE SPACED. NOTE THAT NULL LINES (WA=0) ARE POSSIBLE ! 1328: < * IN WHICH CASE A BLANK LINE IS TO BE PRINTED. ! 1329: < * ! 1330: < * THE ERROR EXIT IS USED FOR SYSTEMS WHICH LIMIT THE AMOUNT ! 1331: < * OF PRINTED OUTPUT. IF POSSIBLE, PRINTING SHOULD BE ! 1332: < * PERMITTED AFTER THIS CONDITION HAS BEEN SIGNALLED ONCE TO ! 1333: < * ALLOW FOR DUMP AND OTHER DIAGNOSTIC INFORMATION. ! 1334: < * ASSUMING THIS TO BE POSSIBLE, SPITBOL MAY MAKE MORE SYSPR ! 1335: < * CALLS. IF THE ERROR RETURN OCCURS ANOTHER TIME, EXECUTION ! 1336: < * IS TERMINATED BY A CALL OF SYSEJ WITH ENDING CODE 998. ! 1337: < EJC ! 1338: < * ! 1339: < * SYSRD -- READ RECORD FROM STANDARD INPUT FILE ! 1340: < * ! 1341: < SYSRD EXP DEFINE EXTERNAL ENTRY POINT ! 1342: < * ! 1343: < * SYSRD IS USED TO READ A RECORD FROM THE STANDARD INPUT ! 1344: < * FILE. THE BUFFER PROVIDED IS AN SCBLK FOR A STRING THE ! 1345: < * LENGTH OF WHICH IN CHARACTERS IS GIVEN IN WC, THIS ! 1346: < * CORRESPONDING TO THE MAXIMUM LENGTH OF STRING WHICH ! 1347: < * SPITBOL IS PREPARED TO RECEIVE. AT COMPILE TIME IT ! 1348: < * CORRESPONDS TO XXX IN THE MOST RECENT -INXXX CARD ! 1349: < * (DEFAULT 72) AND AT EXECUTION TIME TO THE MOST RECENT ! 1350: < * ,R$R$ (RECORD LENGTH) IN THE THIRD ARG OF AN INPUT() ! 1351: < * STATEMENT FOR THE STANDARD INPUT FILE (DEFAULT 80). ! 1352: < * IF FEWER THAN (WC) CHARACTERS ARE READ, THE LENGTH ! 1353: < * FIELD OF THE SCBLK MUST BE ADJUSTED BEFORE RETURNING ! 1354: < * UNLESS THE BUFFER IS RIGHT PADDED WITH ZEROES. ! 1355: < * IT IS ALSO PERMISSIBLE TO TAKE THE ALTERNATIVE RETURN ! 1356: < * AFTER SUCH AN ADJUSTMENT HAS BEEN MADE. ! 1357: < * SPITBOL MAY CONTINUE TO MAKE CALLS AFTER AN ENDFILE ! 1358: < * RETURN SO THIS ROUTINE SHOULD BE PREPARED TO MAKE ! 1359: < * REPEATED ENDFILE RETURNS. ! 1360: < * ! 1361: < * (XR) POINTER TO BUFFER (SCBLK PTR) ! 1362: < * (WC) LENGTH OF BUFFER IN CHARACTERS ! 1363: < * JSR SYSRD CALL TO READ LINE ! 1364: < * PPM LOC ENDFILE OR NO I/P FILE AFTER SYSXI ! 1365: < * (WA,WB,WC) DESTROYED ! 1366: < EJC ! 1367: < * ! 1368: < * SYSRI -- READ RECORD FROM INTERACTIVE CHANNEL ! 1369: < * ! 1370: < SYSRI EXP DEFINE EXTERNAL ENTRY POINT ! 1371: < * ! 1372: < * READS A RECORD FROM ONLINE TERMINAL FOR SPITBOL VARIABLE, ! 1373: < * TERMINAL. IF ONLINE TERMINAL IS UNAVAILABLE THEN CODE THE ! 1374: < * ENDFILE RETURN ONLY. ! 1375: < * THE BUFFER PROVIDED IS OF LENGTH 120 CHARACTERS. SYSRI ! 1376: < * SHOULD REPLACE THE COUNT IN THE SECOND WORD OF THE SCBLK ! 1377: < * BY THE ACTUAL CHARACTER COUNT UNLESS BUFFER IS RIGHT ! 1378: < * PADDED WITH ZEROES. ! 1379: < * IT IS ALSO PERMISSIBLE TO TAKE THE ALTERNATIVE ! 1380: < * RETURN AFTER ADJUSTING THE COUNT. ! 1381: < * THE END OF FILE RETURN MAY BE USED IF THIS MAKES ! 1382: < * SENSE ON THE TARGET MACHINE (E.G. IF THERE IS AN ! 1383: < * EOF CHARACTER.) ! 1384: < * ! 1385: < * (XR) PTR TO 120 CHAR BUFFER (SCBLK PTR) ! 1386: < * JSR SYSRI CALL TO READ LINE FROM TERMINAL ! 1387: < * PPM LOC END OF FILE RETURN ! 1388: < * (WA,WB,WC) MAY BE DESTROYED ! 1389: < EJC ! 1390: < * ! 1391: < * SYSRW -- REWIND FILE ! 1392: < * ! 1393: < SYSRW EXP DEFINE EXTERNAL ENTRY POINT ! 1394: < * ! 1395: < * SYSRW IS USED TO REWIND A FILE I.E. REPOSITION THE FILE ! 1396: < * AT THE START BEFORE THE FIRST RECORD. THE FILE SHOULD BE ! 1397: < * CLOSED AND THE NEXT READ OR WRITE CALL WILL OPEN THE ! 1398: < * FILE AT THE START. ! 1399: < * ! 1400: < * (WA) PTR TO FCBLK OR ZERO ! 1401: < * (XR) REWIND ARG (SCBLK PTR) ! 1402: < * JSR SYSRW CALL TO REWIND FILE ! 1403: < * PPM LOC RETURN HERE IF FILE DOES NOT EXIST ! 1404: < * PPM LOC RETURN HERE IF REWIND NOT ALLOWED ! 1405: < * PPM LOC RETURN HERE IF I/O ERROR ! 1406: < EJC ! 1407: --- ! 1408: > SYSBX EXP E,0 ! 1409: > .IF .CSCI ! 1410: > SYSCI EXP E,0 ! 1411: > .FI ! 1412: > SYSDT EXP E,0 ! 1413: > SYSEC EXP E,2 ! 1414: > SYSEF EXP E,2 ! 1415: > SYSEJ EXP E,0 ! 1416: > SYSEM EXP E,0 ! 1417: > SYSEN EXP E,2 ! 1418: > SYSEP EXP E,2 ! 1419: > .IF .CNLD ! 1420: > .ELSE ! 1421: > SYSEX EXP E,1 ! 1422: > .FI ! 1423: > SYSHS EXP E,2 ! 1424: > SYSID EXP E,0 ! 1425: > SYSIL EXP E,0 ! 1426: > SYSIN EXP E,2 ! 1427: > SYSIO EXP E,2 ! 1428: > .IF .CNLD ! 1429: > .ELSE ! 1430: > SYSLD EXP E,2 ! 1431: > .FI ! 1432: > SYSMM EXP E,0 ! 1433: > SYSMX EXP E,0 ! 1434: > SYSOU EXP E,2 ! 1435: > SYSPI EXP E,2 ! 1436: > SYSPP EXP E,0 ! 1437: > SYSPR EXP E,2 ! 1438: > SYSRD EXP E,2 ! 1439: > SYSRI EXP E,2 ! 1440: > SYSSC EXP E,2 ! 1441: 1252,1272c205 ! 1442: < * ! 1443: < * SYSST -- SET FILE POINTER ! 1444: < * ! 1445: < SYSST EXP DEFINE EXTERNAL ENTRY POINT ! 1446: < * ! 1447: < * SYSST IS CALLED TO CHANGE THE POSITION OF A FILE ! 1448: < * POINTER. THIS IS ACCOMPLISHED IN A SYSTEM DEPENDENT ! 1449: < * MANNER, AND THUS THE 2ND AND 3RD ARGUMENTS ARE PASSED ! 1450: < * UNCONVERTED. ! 1451: < * ! 1452: < * (WA) FCBLK POINTER ! 1453: < * (WB) 2ND ARGUMENT ! 1454: < * (WC) 3RD ARGUMENT ! 1455: < * JSR SYSST CALL TO SET FILE POINTER ! 1456: < * PPM LOC RETURN HERE IF INVALID 2ND ARG ! 1457: < * PPM LOC RETURN HERE IF INVALID 3RD ARG ! 1458: < * PPM LOC RETURN HERE IF FILE DOES NOT EXIST ! 1459: < * PPM LOC RETURN HERE IF SET NOT ALLOWED ! 1460: < * PPM LOC RETURN HERE IF I/O ERROR ! 1461: < * ! 1462: < EJC ! 1463: --- ! 1464: > SYSST EXP E,2 ! 1465: 1274,1316c207,212 ! 1466: < * ! 1467: < * SYSTM -- GET EXECUTION TIME SO FAR ! 1468: < * ! 1469: < SYSTM EXP DEFINE EXTERNAL ENTRY POINT ! 1470: < * ! 1471: < * SYSTM IS USED TO OBTAIN THE AMOUNT OF EXECUTION TIME ! 1472: < * USED SO FAR SINCE SPITBOL WAS GIVEN CONTROL. THE UNITS ! 1473: < * ARE DESCRIBED AS MILLISECONDS IN THE SPITBOL OUTPUT, BUT ! 1474: < * THE EXACT MEANING IS SYSTEM DEPENDENT. WHERE APPROPRIATE, ! 1475: < * THIS VALUE SHOULD RELATE TO PROCESSOR RATHER THAN CLOCK ! 1476: < * TIMING VALUES. ! 1477: < * ! 1478: < * JSR SYSTM CALL TO GET TIMER VALUE ! 1479: < * (IA) TIME SO FAR IN MILLISECONDS ! 1480: < EJC ! 1481: < * ! 1482: < * SYSTT -- TRACE TOGGLE ! 1483: < * ! 1484: < SYSTT EXP DEFINE EXTERNAL ENTRY POINT ! 1485: < * ! 1486: < * CALLED BY SPITBOL FUNCTION TRACE() WITH NO ARGS TO ! 1487: < * TOGGLE THE SYSTEM TRACE SWITCH. THIS PERMITS TRACING OF ! 1488: < * LABELS IN SPITBOL CODE TO BE TURNED ON OR OFF. ! 1489: < * ! 1490: < * JSR SYSTT CALL TO TOGGLE TRACE SWITCH ! 1491: < EJC ! 1492: < * ! 1493: < * SYSUL -- UNLOAD EXTERNAL FUNCTION ! 1494: < * ! 1495: < SYSUL EXP DEFINE EXTERNAL ENTRY POINT ! 1496: < * ! 1497: < * SYSUL IS USED TO UNLOAD A FUNCTION PREVIOUSLY ! 1498: < * LOADED WITH A CALL TO SYSLD. ! 1499: < * ! 1500: < * (XR) PTR TO CONTROL BLOCK (EFBLK) ! 1501: < * JSR SYSUL CALL TO UNLOAD FUNCTION ! 1502: < * ! 1503: < * THE FUNCTION CANNOT BE CALLED FOLLOWING A SYSUL CALL ! 1504: < * UNTIL ANOTHER SYSLD CALL IS MADE FOR THE SAME FUNCTION. ! 1505: < * ! 1506: < * THE EFBLK CONTAINS THE FUNCTION CODE POINTER AND ALSO A ! 1507: < * POINTER TO THE VRBLK CONTAINING THE FUNCTION NAME (SEE ! 1508: < * DEFINITIONS AND DATA STRUCTURES SECTION). ! 1509: --- ! 1510: > SYSTM EXP E,0 ! 1511: > SYSTT EXP E,0 ! 1512: > .IF .CNLD ! 1513: > .ELSE ! 1514: > SYSUL EXP E,0 ! 1515: > .FI ! 1516: 1319,1405c215 ! 1517: < EJC ! 1518: < * ! 1519: < * SYSXI -- EXIT TO PRODUCE LOAD MODULE ! 1520: < * ! 1521: < SYSXI EXP DEFINE EXTERNAL ENTRY POINT ! 1522: < * ! 1523: < * WHEN SYSXI IS CALLED, XL CONTAINS EITHER A STRING POINTER ! 1524: < * OR ZERO. IN THE FORMER CASE, THE STRING GIVES THE ! 1525: < * CHARACTER NAME OF A PROGRAM. THE INTENTION IS THAT ! 1526: < * SPITBOL EXECUTION SHOULD BE TERMINATED FORTHWITH AND ! 1527: < * THE NAMED PROGRAM LOADED AND EXECUTED. THIS TYPE OF CHAIN ! 1528: < * EXECUTION IS VERY SYSTEM DEPENDENT AND IMPLEMENTORS MAY ! 1529: < * CHOOSE TO OMIT IT OR FIND IT IMPOSSIBLE TO PROVIDE. ! 1530: < * IF (XL) IS ZERO,IA CONTAINS ONE OF THE FOLLOWING INTEGERS ! 1531: < * ! 1532: < * -1, -2, -3 ! 1533: < * CREATE IF POSSIBLE A LOAD MODULE CONTAINING ONLY THE ! 1534: < * IMPURE AREA OF MEMORY WHICH NEEDS TO BE LOADED WITH ! 1535: < * A COMPATIBLE PURE SEGMENT FOR SUBSEQUENT EXECUTIONS. ! 1536: < * VERSION NUMBERS TO CHECK COMPATIBILITY SHOULD BE ! 1537: < * KEPT IN BOTH SEGMENTS AND CHECKED ON LOADING. ! 1538: < * TO ASSIST WITH THIS CHECK, (XR) ON ENTRY IS A ! 1539: < * POINTER TO AN SCBLK CONTAINING THE SPITBOL MAJOR ! 1540: < * VERSION NUMBER V.V (SEE SYSID). ! 1541: < * ! 1542: < * 0 IF POSSIBLE, RETURN CONTROL TO JOB CONTROL ! 1543: < * COMMAND LEVEL. THE EFFECT IF AVAILABLE WILL BE ! 1544: < * SYSTEM DEPENDENT. ! 1545: < * ! 1546: < * +1, +2, +3 ! 1547: < * CREATE IF POSSIBLE A LOAD MODULE FROM ALL OF ! 1548: < * MEMORY. IT SHOULD BE POSSIBLE TO LOAD AND EXECUTE ! 1549: < * THIS MODULE DIRECTLY. ! 1550: < * ! 1551: < * IN THE CASE OF SAVED LOAD MODULES, THE STATUS OF OPEN ! 1552: < * FILES IS NOT PRESERVED AND IMPLEMENTORS MAY CHOOSE TO ! 1553: < * OFFER MEANS OF ATTACHING FILES BEFORE EXECUTION OF LOAD ! 1554: < * MODULES STARTS OR LEAVE IT TO THE USER TO INCLUDE ! 1555: < * SUITABLE INPUT(), OUTPUT() CALLS IN HIS PROGRAM. ! 1556: < * SYSXI SHOULD MAKE A NOTE THAT NO I/O CHANNELS, ! 1557: < * INCLUDING STANDARD FILES, HAVE FILES ATTACHED SO THAT ! 1558: < * CALLS OF SYSIN, SYSOU, SYSPR, SYSRD SHOULD FAIL UNLESS ! 1559: < * NEW ASSOCIATIONS ARE MADE FOR THE LOAD MODULE. ! 1560: < * AT LEAST IN THE CASE OF THE STANDARD OUTPUT FILE, IT IS ! 1561: < * RECOMMENDED THAT EITHER THE USER BE REQUIRED TO ATTACH ! 1562: < * A FILE OR THAT A DEFAULT FILE IS ATTACHED, SINCE THE ! 1563: < * PROBLEM OF ERROR MESSAGES GENERATED BY THE LOAD MODULE ! 1564: < * IS OTHERWISE SEVERE. AS A LAST RESORT, IF SPITBOL ! 1565: < * ATTEMPTS TO WRITE TO THE STANDARD OUTPUT FILE AND GETS A ! 1566: < * REPLY INDICATING THAT SUCH OUPUT IS UNACCEPTABLE IT STOPS ! 1567: < * BY USING AN ENTRY TO SYSEJ WITH ENDING CODE 998. ! 1568: < * AS DESCRIBED BELOW, PASSING OF SOME ARGUMENTS MAKES IT ! 1569: < * CLEAR THAT LOAD MODULE WILL USE A STANDARD OUTPUT FILE. ! 1570: < * ! 1571: < * IF USE IS MADE OF FCBLKS FOR I/O ASSOCIATION, SPITBOL ! 1572: < * BUILDS A CHAIN SO THAT THOSE IN USE MAY BE FOUND IN SYSXI ! 1573: < * AND SYSEJ. THE NODES ARE 4 WORDS LONG. THIRD WORD ! 1574: < * CONTAINS LINK TO NEXT NODE OR 0, FOURTH WORD CONTAINS ! 1575: < * FCBLK POINTER. ! 1576: < EJC ! 1577: < * ! 1578: < * SYSXI (CONTINUED) ! 1579: < * ! 1580: < * (XL) ZERO OR SCBLK PTR ! 1581: < * (XR) PTR TO V.V SCBLK ! 1582: < * (IA) SIGNED INTEGER ARGUMENT ! 1583: < * (WB) 0 OR PTR TO HEAD OF FCBLK CHAIN ! 1584: < * JSR SYSXI CALL TO EXIT ! 1585: < * PPM LOC REQUESTED ACTION NOT POSSIBLE ! 1586: < * PPM LOC ACTION CAUSED IRRECOVERABLE ERROR ! 1587: < * (REGISTERS) SHOULD BE PRESERVED OVER CALL ! 1588: < * ! 1589: < * LOADING AND RUNNING THE LOAD MODULE OR RETURNING FROM ! 1590: < * JCL COMMAND LEVEL CAUSES EXECUTION TO RESUME AT THE POINT ! 1591: < * AFTER THE ERROR RETURNS WHICH FOLLOW THE CALL OF SYSXI. ! 1592: < * THE VALUE PASSED AS EXIT ARGUMENT IS USED TO INDICATE ! 1593: < * OPTIONS REQUIRED ON RESUMPTION OF LOAD MODULE. ! 1594: < * +1 OR -1 REQUIRE THAT ON RESUMPTION, SYSID AND SYSPP BE ! 1595: < * CALLED AND A HEADING PRINTED ON THE STANDARD OUTPUT FILE. ! 1596: < * +2 OR -2 INDICATE THAT SYSPP WILL BE CALLED BUT NOT SYSID ! 1597: < * AND NO HEADING WILL BE PUT ON STANDARD OUTPUT FILE. ! 1598: < * ABOVE OPTIONS HAVE THE OBVIOUS IMPLICATION THAT A ! 1599: < * STANDARD O/P FILE MUST BE PROVIDED FOR THE LOAD MODULE. ! 1600: < * +3 OR -3 INDICATE CALLS OF NEITHER SYSID NOR SYSPP ! 1601: < * AND NO HEADING WILL BE PLACED ON STANDARD OUTPUT FILE. ! 1602: < * NO RETURN FROM SYSXI IS POSSIBLE IF ANOTHER PROGRAM ! 1603: < * IS LOADED AND ENTERED. ! 1604: --- ! 1605: > SYSXI EXP E,2 ! 1606: 1407a218 ! 1607: > * NAME GLOBAL LABELS, INTERNAL PROCEDURES AND ROUTINES. ! 1608: 1409,1410c220,228 ! 1609: < * INTRODUCE THE INTERNAL PROCEDURES. ! 1610: < * ! 1611: --- ! 1612: > CMPCE GLB ! 1613: > CMPEL GLB ! 1614: > CMPLE GLB ! 1615: > CMPSE GLB ! 1616: > EVLXF GLB ! 1617: > EVLXN GLB ! 1618: > EVLXV GLB ! 1619: > LCNXE GLB ! 1620: > TRXQR GLB ! 1621: 1420d237 ! 1622: < APNDB INP E,2 ! 1623: 1428a246 ! 1624: > CBLCK INP N,1 ! 1625: 1437c255 ! 1626: < COPYB INP N,1 ! 1627: --- ! 1628: > COPND INP E,0 ! 1629: 1439d256 ! 1630: < DTACH INP E,0 ! 1631: 1444c261 ! 1632: < EVALI INP R,4 ! 1633: --- ! 1634: > EVALI INP R,3 ! 1635: 1446c263 ! 1636: < EVALS INP R,3 ! 1637: --- ! 1638: > EVALS INP R,2 ! 1639: 1453,1455d269 ! 1640: < .IF .CULC ! 1641: < FLSTG INP R,0 ! 1642: < .FI ! 1643: 1458a273,276 ! 1644: > .IF .CNBF ! 1645: > .ELSE ! 1646: > GTBUF INP E,1 ! 1647: > .FI ! 1648: 1481,1483c299,300 ! 1649: < IOFCB INP N,2 ! 1650: < IOPPF INP N,0 ! 1651: < IOPUT INP N,6 ! 1652: --- ! 1653: > IOFTG INP N,1 ! 1654: > IOPUT INP N,4 ! 1655: 1500a318 ! 1656: > PRTCF INP E,0 ! 1657: 1502,1503c320,321 ! 1658: < PRTIC INP E,0 ! 1659: < PRTIS INP E,0 ! 1660: --- ! 1661: > PRTFB INP E,0 ! 1662: > PRTFH INP R,0 ! 1663: 1506,1507d323 ! 1664: < PRTMX INP E,0 ! 1665: < PRTNL INP R,0 ! 1666: 1511a328 ! 1667: > PRTSF INP E,0 ! 1668: 1515c332 ! 1669: < PRTTR INP E,0 ! 1670: --- ! 1671: > PRTVF INP E,0 ! 1672: 1517a335,336 ! 1673: > PTTFH INP E,0 ! 1674: > PTTST INP E,0 ! 1675: 1522a342,345 ! 1676: > .IF .CASL ! 1677: > SBSCC INP E,0 ! 1678: > SBSTG INP E,0 ! 1679: > .FI ! 1680: 1529c352 ! 1681: < SORTA INP N,0 ! 1682: --- ! 1683: > SORTA INP N,1 ! 1684: 1532c355 ! 1685: < SORTH INP E,0 ! 1686: --- ! 1687: > SORTH INP N,0 ! 1688: 1535c358 ! 1689: < TRACE INP N,2 ! 1690: --- ! 1691: > TRACE INP N,3 ! 1692: 1536a360 ! 1693: > TRCHN INP E,1 ! 1694: 1541,1543d364 ! 1695: < * ! 1696: < * INTRODUCE THE INTERNAL ROUTINES ! 1697: < * ! 1698: 1545a367,368 ! 1699: > EROSI INR ! 1700: > ERROR INR ! 1701: 1560a384 ! 1702: > INITL INR ! 1703: 1562a387 ! 1704: > STAKV INR ! 1705: 1567,1568d391 ! 1706: < SYSAB INR ! 1707: < SYSTU INR ! 1708: 1569a393,395 ! 1709: > * THIS SECTION CONTAINS ALL SYMBOL DEFINITIONS AND ALSO ! 1710: > * PICTURES OF ALL DATA STRUCTURES USED IN THE SYSTEM. ! 1711: > * ! 1712: 1577a404,407 ! 1713: > * NOTE THAT EVEN IF CONDITIONAL ASSEMBLY IS USED TO OMIT ! 1714: > * SOME FEATURE (E.G. REAL ARITHMETIC) A FULL SET OF CFP$- ! 1715: > * VALUES MUST BE SUPPLIED. USE DUMMY VALUES IF GENUINE ! 1716: > * ONES ARE NOT NEEDED. ! 1717: 1581c411 ! 1718: < CFP$B EQU * BYTES/WORD ADDRESSING FACTOR ! 1719: --- ! 1720: > CFP$B EQU * BAUS/WORD ADDRESSING FACTOR ! 1721: 1585c415 ! 1722: < CFP$F EQU * OFFSET IN BYTES TO CHARS IN ! 1723: --- ! 1724: > CFP$F EQU * OFFSET IN BAUS TO CHARS IN ! 1725: 1594,1601d423 ! 1726: < * THE FOLLOWING DEFINITIONS REQUIRE THE SUPPLY OF EITHER ! 1727: < * A SINGLE PARAMETER IF REAL ARITHMETIC IS OMITTED OR ! 1728: < * THREE PARAMETERS IF REAL ARITHMETIC IS INCLUDED. ! 1729: < * ! 1730: < .IF .CNRA ! 1731: < NSTMX EQU * NO. OF DECIMAL DIGITS IN CFP$M ! 1732: < .ELSE ! 1733: < * ! 1734: 1606,1613d427 ! 1735: < CFP$X EQU * MAX DIGITS IN REAL EXPONENT ! 1736: < * ! 1737: < MXDGS EQU CFP$S+CFP$X MAX DIGITS IN REAL NUMBER ! 1738: < * ! 1739: < NSTMX EQU MXDGS+5 MAX SPACE FOR REAL (FOR +0.E+) ! 1740: < .FI ! 1741: < .IF .CUCF ! 1742: < * ! 1743: 1620c434,439 ! 1744: < .FI ! 1745: --- ! 1746: > * ! 1747: > CFP$X EQU * MAX DIGITS IN REAL EXPONENT ! 1748: > * ! 1749: > MXDGS EQU CFP$S+CFP$X MAX DIGITS IN REAL NUMBER ! 1750: > * ! 1751: > NSTMX EQU MXDGS+5 MAX SPACE FOR REAL (FOR +0.E+) ! 1752: 1759a579 ! 1753: > * THEY ARE ALL UNDER CONDITIONAL ASSEMBLY. ! 1754: 1798a619,620 ! 1755: > .IF .CASL ! 1756: > DFA$A EQU CH$$A-CH$LA DIFF BETWEEN LC AND UC LETTERS ! 1757: 1800,1807d621 ! 1758: < * IF A DELIMITER OTHER THAN CH$CM MUST BE USED IN ! 1759: < * THE THIRD ARGUMENT OF INPUT(),OUTPUT() THEN .CIOD SHOULD ! 1760: < * BE DEFINED AND A PARAMETER SUPPLIED FOR IODEL. ! 1761: < * ! 1762: < .IF .CIOD ! 1763: < IODEL EQU * ! 1764: < .ELSE ! 1765: < IODEL EQU CH$CM ! 1766: 1927c741,742 ! 1767: < BL$CT EQU BL$CM+1 CTBLK ! 1768: --- ! 1769: > BL$CO EQU BL$CM+1 COBLK ! 1770: > BL$CT EQU BL$CO+1 CTBLK ! 1771: 2030,2033d844 ! 1772: < .IF .CNBF ! 1773: < .ELSE ! 1774: < * BCBLK BUFFER CONTROL BLOCK ! 1775: < .FI ! 1776: 2079c890 ! 1777: < ARLEN EQU IDVAL+1 LENGTH OF ARBLK IN BYTES ! 1778: --- ! 1779: > ARLEN EQU IDVAL+1 LENGTH OF ARBLK IN BAUS ! 1780: 2096c907 ! 1781: < * THE LENGTH OF AN ARBLK IN BYTES MAY NOT EXCEED MXLEN. ! 1782: --- ! 1783: > * THE LENGTH OF AN ARBLK IN BAUS MAY NOT EXCEED MXLEN. ! 1784: 2103c914 ! 1785: < * ! 1786: --- ! 1787: > EJC ! 1788: 2197,2198c1008,1009 ! 1789: < CCLEN EQU CCTYP+1 LENGTH OF CCBLK IN BYTES ! 1790: < CCUSE EQU CCLEN+1 OFFSET PAST LAST USED WORD (BYTES) ! 1791: --- ! 1792: > CCLEN EQU CCTYP+1 LENGTH OF CCBLK IN BAUS ! 1793: > CCUSE EQU CCLEN+1 OFFSET PAST LAST USED WORD (BAUS) ! 1794: 2227c1038 ! 1795: < CDLEN EQU OFFS2 LENGTH OF CDBLK IN BYTES ! 1796: --- ! 1797: > CDLEN EQU OFFS2 LENGTH OF CDBLK IN BAUS ! 1798: 2564c1375 ! 1799: < CMLEN EQU CMIDN+1 LENGTH OF CMBLK IN BYTES ! 1800: --- ! 1801: > CMLEN EQU CMIDN+1 LENGTH OF CMBLK IN BAUS ! 1802: 2626a1438,1477 ! 1803: > * COPY FILE BLOCK (COBLK) ! 1804: > * ! 1805: > * A CHAIN STACK OF COPY BLOCKS IS BUILT FOR EVERY NESTED ! 1806: > * -COPY CONTROL CARD. THE CONTROL BLOCK IS USED TO PRESERVE ! 1807: > * THE INPUT CONTEXT OF THE FILE CONTAINING THE -COPY. ! 1808: > * AS -COPYS ARE ENDED, THESE BLOCKS ARE POPPED OFF THE CHAIN ! 1809: > * AND THE STATE RESTORED. SEE ROUTINES CNCRD, COPND. ! 1810: > * ! 1811: > * +------------------------------------+ ! 1812: > * I COTYP I ! 1813: > * +------------------------------------+ ! 1814: > * I CONXT I ! 1815: > * +------------------------------------+ ! 1816: > * I COIOT I ! 1817: > * +------------------------------------+ ! 1818: > * I COTTI I ! 1819: > * +------------------------------------+ ! 1820: > * I COCIM I ! 1821: > * +------------------------------------+ ! 1822: > * I COSPT I ! 1823: > * +------------------------------------+ ! 1824: > * I COSLS I ! 1825: > * +------------------------------------+ ! 1826: > * I COSIN I ! 1827: > * +------------------------------------+ ! 1828: > * I COSTL I ! 1829: > * +------------------------------------+ ! 1830: > * ! 1831: > COTYP EQU 0 POINTER TO DUMMY ROUTINE B$COP ! 1832: > CONXT EQU COTYP+1 POINT TO NEXT (OUTER -COPY) COBLK ! 1833: > COIOT EQU CONXT+1 RECORD IOTAG FOR OSINT ! 1834: > COTTI EQU COIOT+1 RECORD TTINS FLAG ! 1835: > COCIM EQU COTTI+1 RECORD R$CIM COMPILER IMAGE ! 1836: > COSPT EQU COCIM+1 RECORD SCNPT SCAN POINTER ! 1837: > COSLS EQU COSPT+1 RECORD CSWLS LISTING FLAG ! 1838: > COSIN EQU COSLS+1 RECORD CSWIN -INXXX VALUE ! 1839: > COSTL EQU COSIN+1 RECORD R$STL -STITL STRING PTR ! 1840: > COSI$ EQU COSTL+1 SIZE OF COBLK ! 1841: > EJC ! 1842: > * ! 1843: 2688c1539 ! 1844: < DFLEN EQU FARGS+1 LENGTH OF DFBLK IN BYTES ! 1845: --- ! 1846: > DFLEN EQU FARGS+1 LENGTH OF DFBLK IN BAUS ! 1847: 2798a1650,1651 ! 1848: > .IF .CNLD ! 1849: > .ELSE ! 1850: 2826c1679 ! 1851: < EFLEN EQU FARGS+1 LENGTH OF EFBLK IN BYTES ! 1852: --- ! 1853: > EFLEN EQU FARGS+1 LENGTH OF EFBLK IN BAUS ! 1854: 2845a1699,1700 ! 1855: > * 4 TYPE IS BUFFER ! 1856: > .FI ! 1857: 2901c1756 ! 1858: < EXLEN EQU EXSTM+1 LENGTH OF EXBLK IN BYTES ! 1859: --- ! 1860: > EXLEN EQU EXSTM+1 LENGTH OF EXBLK IN BAUS ! 1861: 2941c1796 ! 1862: < FFOFS EQU FFNXT+1 OFFSET (BYTES) TO FIELD IN PDBLK ! 1863: --- ! 1864: > FFOFS EQU FFNXT+1 OFFSET (BAUS) TO FIELD IN PDBLK ! 1865: 3022c1877 ! 1866: < * IS FOUND NMOFS BYTES PAST THE ADDRESS IN NMBAS. ! 1867: --- ! 1868: > * IS FOUND NMOFS BAUS PAST THE ADDRESS IN NMBAS. ! 1869: 3135c1990 ! 1870: < * CONTAINS THE LENGTH OF THE PDBLK IN BYTES (FIELD DFPDL). ! 1871: --- ! 1872: > * CONTAINS THE LENGTH OF THE PDBLK IN BAUS (FIELD DFPDL). ! 1873: 3169c2024 ! 1874: < PFLEN EQU FARGS+1 LENGTH OF PFBLK IN BYTES ! 1875: --- ! 1876: > PFLEN EQU FARGS+1 LENGTH OF PFBLK IN BAUS ! 1877: 3176c2031 ! 1878: < PFAGB EQU PFARG-1 OFFSET BEHIND PFARG FOR ARG, LOCAL ! 1879: --- ! 1880: > PFAGB EQU PFARG-1 OFFSET BEHIND PFARG FOR ARG,LOCAL ! 1881: 3237c2092 ! 1882: < * IS GIVEN IN BYTES BY CFP$F AND THAT THIS VALUE IS ! 1883: --- ! 1884: > * IS GIVEN IN BAUS BY CFP$F AND THAT THIS VALUE IS ! 1885: 3278c2133 ! 1886: < * I SVCHS I ! 1887: --- ! 1888: > * / SVCHS / ! 1889: 3323c2178,2181 ! 1890: < SVFPK EQU SVFNP+SVKVC PREEVAL FCN + CONST KEYWD + VAL ! 1891: --- ! 1892: > .IF .CNFN ! 1893: > .ELSE ! 1894: > SVFPK EQU SVFNP+SVKVC PREEVAL FUNC + CONST KEYWD+VAL ! 1895: > .FI ! 1896: 3333c2191 ! 1897: < * THE ITEM AND APPLY FUNCTIONS FALL OUTSIDE THIS CATEGORY. ! 1898: --- ! 1899: > * THE APPLY FUNCTION FALLS OUTSIDE THIS CATEGORY. ! 1900: 3373c2231 ! 1901: < * PREDEFINED FUNCTIONS USING THIS ARE APPLY AND ITEM. ! 1902: --- ! 1903: > * PREDEFINED FUNCTION USING THIS IS APPLY. ! 1904: 3401,3409c2259,2260 ! 1905: < K$ABE EQU 0 ABEND ! 1906: < K$ANC EQU K$ABE+CFP$B ANCHOR ! 1907: < .IF .CULC ! 1908: < K$CAS EQU K$ANC+CFP$B CASE ! 1909: < K$COD EQU K$CAS+CFP$B CODE ! 1910: < .ELSE ! 1911: < K$COD EQU K$ANC+CFP$B CODE ! 1912: < .FI ! 1913: < K$DMP EQU K$COD+CFP$B DUMP ! 1914: --- ! 1915: > K$ANC EQU 0 ANCHOR ! 1916: > K$DMP EQU K$ANC+CFP$B DUMP ! 1917: 3447c2298,2299 ! 1918: < K$STC EQU K$RTN+1 STCOUNT ! 1919: --- ! 1920: > K$COD EQU K$RTN+1 CODE ! 1921: > K$STC EQU K$COD+1 STCOUNT ! 1922: 3454a2307 ! 1923: > K$$CD EQU K$COD-K$ALP CODE ! 1924: 3478d2330 ! 1925: < * +------------------------------------+ ! 1926: 3487c2339 ! 1927: < TBLEN EQU OFFS2 LENGTH OF TBBLK IN BYTES ! 1928: --- ! 1929: > TBLEN EQU OFFS2 LENGTH OF TBBLK IN BAUS ! 1930: 3546c2398 ! 1931: < * I TRTAG OR TRTER OR TRTRF I ! 1932: --- ! 1933: > * I TRTAG OR TRTER I ! 1934: 3548c2400 ! 1935: < * I TRFNC OR TRFPT I ! 1936: --- ! 1937: > * I TRFNC OR TRTRI I ! 1938: 3557c2409 ! 1939: < TRTAG EQU TRVAL+1 TRACE TAG ! 1940: --- ! 1941: > TRTAG EQU TRVAL+1 TRACE TAG OR IOTAG ! 1942: 3559d2410 ! 1943: < TRTRF EQU TRTAG PTR TO TRBLK HOLDING FCBLK PTR ! 1944: 3561c2412 ! 1945: < TRFPT EQU TRFNC FCBLK PTR FOR SYSIO ! 1946: --- ! 1947: > TRTRI EQU TRFNC PTR TO TRACE BLOCK HOLDING IOTAG ! 1948: 3567,3568c2418,2419 ! 1949: < TRTOU EQU TRTVL+1 TRACE TYPE FOR OUTPUT ASSOCIATION ! 1950: < TRTFC EQU TRTOU+1 TRACE TYPE FOR FCBLK IDENTIFICATION ! 1951: --- ! 1952: > TRTIO EQU TRTVL+1 TRACE TYPE FOR IOTAG TRACE BLOCK ! 1953: > TRTOU EQU TRTIO+1 TRACE TYPE FOR OUTPUT ASSOCIATION ! 1954: 3584,3586c2435 ! 1955: < * TRTRF POINTS TO THE TRAP BLOCK WHICH IN TURN POINTS ! 1956: < * TO AN FCBLK USED FOR I/O ASSOCIATION. ! 1957: < * TRFPT IS THE FCBLK PTR RETURNED BY SYSIO. ! 1958: --- ! 1959: > * TRTRI IS A PTR TO IOTAG TRBLK FROM SYSIO OR ZERO. ! 1960: 3625,3627c2474 ! 1961: < * TRTRF POINTS TO THE TRAP BLOCK WHICH IN TURN POINTS ! 1962: < * TO AN FCBLK USED FOR I/O ASSOCIATION. ! 1963: < * TRFPT IS THE FCBLK PTR RETURNED BY SYSIO. ! 1964: --- ! 1965: > * TRTRI IS A PTR TO IOTAG TRBLK FROM SYSIO OR ZERO. ! 1966: 3681c2528 ! 1967: < * INPUT/OUTPUT FILE ARG1 TRAP BLOCK ! 1968: --- ! 1969: > * INPUT/OUTPUT FILETAG TRAP BLOCK (TRTIO) ! 1970: 3683c2530 ! 1971: < * THE VALUE FIELD OF THE VARIABLE POINTS TO A TRBLK ! 1972: --- ! 1973: > * THE VALUE FIELD OF THE FILETAG VBL POINTS TO A TRBLK ! 1974: 3687,3689c2534 ! 1975: < * TO HOLD A POINTER TO THE FCBLK WHICH AN ! 1976: < * IMPLEMENTATION MAY REQUEST TO HOLD INFORMATION ! 1977: < * ABOUT A FILE. ! 1978: --- ! 1979: > * TO HOLD THE IOTAG RETURNED BY A SYSIO CALL ! 1980: 3691,3694c2536,2538 ! 1981: < * TRTYP IS SET TO TRTFC ! 1982: < * TRNEXT POINTS TO NEXT TRBLK OR TRVAL IS VARIABLE VAL ! 1983: < * TRFNM IS 0 ! 1984: < * TRFPT IS THE FCBLK POINTER. ! 1985: --- ! 1986: > * TRTYP IS SET TO TRTIO ! 1987: > * TRNXT POINTS TO NEXT TRBLK OR TRVAL IS VARIABLE VAL ! 1988: > * TRTAG HOLDS THE IOTAG. ! 1989: 3701a2546 ! 1990: > * FILETAG ASSOCIATION (IF PRESENT) ! 1991: 3729c2574 ! 1992: < VCLEN EQU OFFS2 LENGTH OF VCBLK IN BYTES ! 1993: --- ! 1994: > VCLEN EQU OFFS2 LENGTH OF VCBLK IN BAUS ! 1995: 3832c2677 ! 1996: < * VRCHS IS THE NAME (LJRZ) IF VRLEN IS NON-ZERO. ! 1997: --- ! 1998: > * VRCHS IS THE NAME IF VRLEN IS NON-ZERO. ! 1999: 3843,3844d2687 ! 2000: < * THIS TYPE OF BLOCK MAY BE USED AS A FILE CONTROL BLOCK. ! 2001: < * SEE SYSFC,SYSIN,SYSOU,S$INP,S$OUP FOR DETAILS. ! 2002: 3857c2700 ! 2003: < XNLEN EQU XNTYP+1 LENGTH OF XNBLK IN BYTES ! 2004: --- ! 2005: > XNLEN EQU XNTYP+1 LENGTH OF XNBLK IN BAUS ! 2006: 3873,3874d2715 ! 2007: < * THIS TYPE OF BLOCK MAY BE USED AS A FILE CONTROL BLOCK. ! 2008: < * SEE SYSFC,SYSIN,SYSOU,S$INP,S$OUP FOR DETAILS. ! 2009: 3887c2728 ! 2010: < XRLEN EQU XRTYP+1 LENGTH OF XRBLK IN BYTES ! 2011: --- ! 2012: > XRLEN EQU XRTYP+1 LENGTH OF XRBLK IN BAUS ! 2013: 3911,3912c2752 ! 2014: < INILN EQU 132 DEFAULT IMAGE LENGTH FOR COMPILER ! 2015: < INILS EQU 80 IMAGE LENGTH IF -SEQU IN EFFECT ! 2016: --- ! 2017: > INILN EQU 160 DEFAULT IMAGE LENGTH FOR COMPILER ! 2018: 3914,3916d2753 ! 2019: < IONMB EQU 2 NAME BASE USED FOR IOCHN IN SYSIO ! 2020: < IONMO EQU 4 NAME OFFSET USED FOR IOCHN IN SYSIO ! 2021: < * ! 2022: 3931d2767 ! 2023: < NINI8 EQU 998 ! 2024: 3934d2769 ! 2025: < EJC ! 2026: 3945c2780 ! 2027: < RILEN EQU 120 BUFFER LENGTH FOR SYSRI ! 2028: --- ! 2029: > RILEN EQU 160 BUFFER LENGTH FOR SYSRI ! 2030: 4051,4053c2886,2888 ! 2031: < .IF .CULC ! 2032: < CC$CA EQU 0 -CASE ! 2033: < CC$DO EQU CC$CA+1 -DOUBLE ! 2034: --- ! 2035: > .IF .CASL ! 2036: > CC$CI EQU 0 -CASEIG ! 2037: > CC$CO EQU CC$CI+1 -COPY ! 2038: 4055c2890 ! 2039: < CC$DO EQU 0 -DOUBLE ! 2040: --- ! 2041: > CC$CO EQU 0 -COPY ! 2042: 4057,4061c2892,2893 ! 2043: < CC$DU EQU CC$DO+1 -DUMP ! 2044: < CC$EJ EQU CC$DU+1 -EJECT ! 2045: < CC$ER EQU CC$EJ+1 -ERRORS ! 2046: < CC$EX EQU CC$ER+1 -EXECUTE ! 2047: < CC$FA EQU CC$EX+1 -FAIL ! 2048: --- ! 2049: > CC$EJ EQU CC$CO+1 -EJECT ! 2050: > CC$FA EQU CC$EJ+1 -FAIL ! 2051: 4063,4065c2895,2900 ! 2052: < CC$NR EQU CC$LI+1 -NOERRORS ! 2053: < CC$NX EQU CC$NR+1 -NOEXECUTE ! 2054: < CC$NF EQU CC$NX+1 -NOFAIL ! 2055: --- ! 2056: > .IF .CASL ! 2057: > CC$NC EQU CC$LI+1 -NOCASEIG ! 2058: > CC$NF EQU CC$NC+1 -NOFAIL ! 2059: > .ELSE ! 2060: > CC$NF EQU CC$LI+1 -NOFAIL ! 2061: > .FI ! 2062: 4067,4073c2902 ! 2063: < CC$NO EQU CC$NL+1 -NOOPT ! 2064: < CC$NP EQU CC$NO+1 -NOPRINT ! 2065: < CC$OP EQU CC$NP+1 -OPTIMISE ! 2066: < CC$PR EQU CC$OP+1 -PRINT ! 2067: < CC$SI EQU CC$PR+1 -SINGLE ! 2068: < CC$SP EQU CC$SI+1 -SPACE ! 2069: < CC$ST EQU CC$SP+1 -STITL ! 2070: --- ! 2071: > CC$ST EQU CC$NL+1 -STITL ! 2072: 4076c2905 ! 2073: < CC$NC EQU CC$TR+1 NUMBER OF CONTROL CARDS ! 2074: --- ! 2075: > CC$CT EQU CC$TR+1 NUMBER OF CONTROL CARDS ! 2076: 4079d2907 ! 2077: < EJC ! 2078: 4108d2935 ! 2079: < * ! 2080: 4157c2984 ! 2081: < .IF .CULC ! 2082: --- ! 2083: > .IF .CASL ! 2084: 4159c2986 ! 2085: < DTC /DOUB/ ! 2086: --- ! 2087: > DTC /COPY/ ! 2088: 4161c2988 ! 2089: < CCNMS DTC /DOUB/ ! 2090: --- ! 2091: > CCNMS DTC /COPY/ ! 2092: 4163d2989 ! 2093: < DTC /DUMP/ ! 2094: 4165,4166d2990 ! 2095: < DTC /ERRO/ ! 2096: < DTC /EXEC/ ! 2097: 4169,4170c2993,2995 ! 2098: < DTC /NOER/ ! 2099: < DTC /NOEX/ ! 2100: --- ! 2101: > .IF .CASL ! 2102: > DTC /NOCA/ ! 2103: > .FI ! 2104: 4173,4178d2997 ! 2105: < DTC /NOOP/ ! 2106: < DTC /NOPR/ ! 2107: < DTC /OPTI/ ! 2108: < DTC /PRIN/ ! 2109: < DTC /SING/ ! 2110: < DTC /SPAC/ ! 2111: 4185c3004 ! 2112: < DMHDK DAC B$SCL DUMP OF KEYWORD VALUES ! 2113: --- ! 2114: > DMHDK DAC B$SCL ! 2115: 4187c3006 ! 2116: < DTC /DUMP OF KEYWORD VALUES/ ! 2117: --- ! 2118: > DDC /DUMP OF KEYWORD VALUES/ ! 2119: 4189c3008 ! 2120: < DMHDV DAC B$SCL DUMP OF NATURAL VARIABLES ! 2121: --- ! 2122: > DMHDV DAC B$SCL ! 2123: 4191,4192c3010 ! 2124: < DTC /DUMP OF NATURAL VARIABLES/ ! 2125: < EJC ! 2126: --- ! 2127: > DDC /DUMP OF NATURAL VARIABLES/ ! 2128: 4198c3016 ! 2129: < DTC /STORE USED/ ! 2130: --- ! 2131: > DDC /STORE USED/ ! 2132: 4202c3020 ! 2133: < DTC /STORE LEFT/ ! 2134: --- ! 2135: > DDC /STORE LEFT/ ! 2136: 4206c3024 ! 2137: < DTC /COMP ERRORS/ ! 2138: --- ! 2139: > DDC /COMP ERRORS/ ! 2140: 4210c3028,3032 ! 2141: < DTC /COMP TIME-MSEC/ ! 2142: --- ! 2143: > .IF .CTMD ! 2144: > DDC /COMP TIME-DSEC/ ! 2145: > .ELSE ! 2146: > DDC /COMP TIME-MSEC/ ! 2147: > .FI ! 2148: 4212c3034 ! 2149: < ENCM5 DAC B$SCL EXECUTION SUPPRESSED ! 2150: --- ! 2151: > ENCM5 DAC B$SCL ! 2152: 4214c3036,3037 ! 2153: < DTC /EXECUTION SUPPRESSED/ ! 2154: --- ! 2155: > DDC /EXECUTION SUPPRESSED/ ! 2156: > EJC ! 2157: 4216c3039 ! 2158: < * STRING CONSTANT FOR ABNORMAL END ! 2159: --- ! 2160: > * FOR TERMINATION IN COMPILATION ! 2161: 4218,4221c3041,3043 ! 2162: < ENDAB DAC B$SCL ! 2163: < DAC 12 ! 2164: < DTC /ABNORMAL END/ ! 2165: < EJC ! 2166: --- ! 2167: > ENDIC DAC B$SCL ! 2168: > DAC 14 ! 2169: > DDC /IN COMPILATION/ ! 2170: 4227c3049 ! 2171: < DTC /MEMORY OVERFLOW/ ! 2172: --- ! 2173: > DDC /MEMORY OVERFLOW/ ! 2174: 4233c3055 ! 2175: < DTC /NORMAL END/ ! 2176: --- ! 2177: > DDC /NORMAL END/ ! 2178: 4237c3059 ! 2179: < ENDSO DAC B$SCL STACK OVERFLOW IN GARBAGE COLLECTOR ! 2180: --- ! 2181: > ENDSO DAC B$SCL ! 2182: 4239,4245c3061 ! 2183: < DTC /STACK OVERFLOW IN GARBAGE COLLECTION/ ! 2184: < * ! 2185: < * STRING CONSTANT FOR TIME UP ! 2186: < * ! 2187: < ENDTU DAC B$SCL ! 2188: < DAC 15 ! 2189: < DTC /ERROR - TIME UP/ ! 2190: --- ! 2191: > DDC /STACK OVERFLOW IN GARBAGE COLLECTION/ ! 2192: 4250c3066 ! 2193: < ERMMS DAC B$SCL ERROR ! 2194: --- ! 2195: > ERMMS DAC B$SCL ! 2196: 4252c3068 ! 2197: < DTC /ERROR/ ! 2198: --- ! 2199: > DDC /ERROR/ ! 2200: 4254c3070 ! 2201: < ERMNS DAC B$SCL STRING / -- / ! 2202: --- ! 2203: > ERMNS DAC B$SCL ! 2204: 4257a3074,3076 ! 2205: > * ! 2206: > ERRTF DAC 251 FATAL ERROR CODE - SEE LABEL ERRAF ! 2207: > * ! 2208: 4260c3079 ! 2209: < LSTMS DAC B$SCL PAGE ! 2210: --- ! 2211: > LSTMS DAC B$SCL ! 2212: 4262c3081 ! 2213: < DTC /PAGE / ! 2214: --- ! 2215: > DDC /PAGE / ! 2216: 4268c3087 ! 2217: < DTC /MACRO SPITBOL VERSION 3.5/ ! 2218: --- ! 2219: > DDC /MACRO SPITBOL VERSION 4.3/ ! 2220: 4272c3091 ! 2221: < DTC /3.5/ ! 2222: --- ! 2223: > DTC /4.3/ ! 2224: 4301a3121,3123 ! 2225: > NDEXC DAC P$EXC EXPRESSION ! 2226: > .IF .CNFN ! 2227: > .ELSE ! 2228: 4304c3126 ! 2229: < NDEXC DAC P$EXC EXPRESSION ! 2230: --- ! 2231: > .FI ! 2232: 4351,4353c3173,3175 ! 2233: < * OPDVS IS USED WHEN SCANNING BELOW THE TOP LEVEL TO ! 2234: < * INSURE THAT THE CONCATENATION WILL NOT BE LATER ! 2235: < * MISTAKEN FOR PATTERN MATCHING ! 2236: --- ! 2237: > * OPDVP IS USED WHEN SCANNING BELOW TOP LEVEL TO ENSURE ! 2238: > * THE CONCATENATION WILL NOT LATER BE MISTAKEN FOR ! 2239: > * PATTERN MATCHING ! 2240: 4355c3177 ! 2241: < OPDVP DAC O$CNC CONCATENATION - NOT PATTERN MATCH ! 2242: --- ! 2243: > OPDVP DAC O$CNC PROVEN CONCATENATION ! 2244: 4459,4467d3280 ! 2245: < DAC O$IMA IMMEDIATE ASSIGNMENT ! 2246: < DAC C$BVN ! 2247: < DAC LLDLD ! 2248: < DAC RRDLD ! 2249: < * ! 2250: < DAC O$INV INDIRECTION ! 2251: < DAC C$IND ! 2252: < DAC LLUNO ! 2253: < * ! 2254: 4497a3311,3319 ! 2255: > DAC O$IMA IMMEDIATE ASSIGNMENT ! 2256: > DAC C$BVN ! 2257: > DAC LLDLD ! 2258: > DAC RRDLD ! 2259: > * ! 2260: > DAC O$INV INDIRECTION ! 2261: > DAC C$IND ! 2262: > DAC LLUNO ! 2263: > * ! 2264: 4580c3402 ! 2265: < DTC /PROGRAM PROFILE/ ! 2266: --- ! 2267: > DDC /PROGRAM PROFILE/ ! 2268: 4583c3405 ! 2269: < DTC /STMT NUMBER OF -- EXECUTION TIME --/ ! 2270: --- ! 2271: > DDC /STMT NUMBER OF -- EXECUTION TIME --/ ! 2272: 4586c3408 ! 2273: < DTC /NUMBER EXECUTIONS TOTAL(MSEC) PER EXCN(MCSEC)/ ! 2274: --- ! 2275: > DDC /NUMBER EXECUTIONS TOTAL(MSEC) PER EXCN(MCSEC)/ ! 2276: 4588d3409 ! 2277: < * ! 2278: 4616a3438,3439 ! 2279: > .IF .CNBF ! 2280: > .ELSE ! 2281: 4618c3441 ! 2282: < SCBUF DAC B$SCL BUFFER ! 2283: --- ! 2284: > SCBUF DAC B$SCL ! 2285: 4620a3444 ! 2286: > .FI ! 2287: 4717a3542,3544 ! 2288: > .IF .CS16 ! 2289: > STLIM DIC +32767 DEFAULT STATEMENT LIMIT ! 2290: > .ELSE ! 2291: 4718a3546 ! 2292: > .FI ! 2293: 4749c3577 ! 2294: < STPM1 DAC B$SCL IN STATEMENT ! 2295: --- ! 2296: > STPM1 DAC B$SCL ! 2297: 4751c3579 ! 2298: < DTC /IN STATEMENT/ ! 2299: --- ! 2300: > DDC /IN STATEMENT/ ! 2301: 4755c3583 ! 2302: < DTC /STMTS EXECUTED/ ! 2303: --- ! 2304: > DDC /STMTS EXECUTED/ ! 2305: 4759c3587,3591 ! 2306: < DTC /RUN TIME-MSEC/ ! 2307: --- ! 2308: > .IF .CTMD ! 2309: > DDC /RUN TIME-DSEC/ ! 2310: > .ELSE ! 2311: > DDC /RUN TIME-MSEC/ ! 2312: > .FI ! 2313: 4763c3595 ! 2314: < DTC $MCSEC / STMT$ ! 2315: --- ! 2316: > DDC $MCSEC / STMT$ ! 2317: 4767c3599 ! 2318: < DTC /REGENERATIONS/ ! 2319: --- ! 2320: > DDC /REGENERATIONS/ ! 2321: 4769,4772d3600 ! 2322: < * CHARS FOR /TU/ ENDING CODE ! 2323: < * ! 2324: < STRTU DTC /TU/ ! 2325: < * ! 2326: 4800c3628 ! 2327: < TMASB DAC B$SCL ASTERISKS FOR TRACE STATEMENT NO ! 2328: --- ! 2329: > TMASB DAC B$SCL ! 2330: 4803d3630 ! 2331: < ! 2332: 4805c3632 ! 2333: < TMBEB DAC B$SCL BLANK-EQUAL-BLANK ! 2334: --- ! 2335: > TMBEB DAC B$SCL ! 2336: 4891a3719,3724 ! 2337: > V$CTI DBC SVFNP CTI ! 2338: > DAC 3 ! 2339: > DTC /CTI/ ! 2340: > DAC S$CTI ! 2341: > DAC 1 ! 2342: > * ! 2343: 4896a3730,3735 ! 2344: > V$ITC DBC SVFNN ITC ! 2345: > DAC 3 ! 2346: > DTC /ITC/ ! 2347: > DAC S$ITC ! 2348: > DAC 1 ! 2349: > * ! 2350: 4967d3805 ! 2351: < .IF .CULC ! 2352: 4969,4980d3806 ! 2353: < V$CAS DBC SVKNM CASE ! 2354: < DAC 4 ! 2355: < DTC /CASE/ ! 2356: < DAC K$CAS ! 2357: < .FI ! 2358: < * ! 2359: < V$CHR DBC SVFNP CHAR ! 2360: < DAC 4 ! 2361: < DTC /CHAR/ ! 2362: < DAC S$CHR ! 2363: < DAC 1 ! 2364: < * ! 2365: 5077a3904 ! 2366: > EJC ! 2367: 5078a3906,3908 ! 2368: > * STANDARD VARIABLE BLOCKS (CONTINUED) ! 2369: > * ! 2370: > * ! 2371: 5133,5137d3962 ! 2372: < V$ABE DBC SVKNM ABEND ! 2373: < DAC 5 ! 2374: < DTC /ABEND/ ! 2375: < DAC K$ABE ! 2376: < * ! 2377: 5183a4009,4011 ! 2378: > .IF .CNFN ! 2379: > V$FEN DBC SVKVC FENCE ! 2380: > .ELSE ! 2381: 5184a4013 ! 2382: > .FI ! 2383: 5187a4017,4018 ! 2384: > .IF .CNFN ! 2385: > .ELSE ! 2386: 5189a4021 ! 2387: > .FI ! 2388: 5217d4048 ! 2389: < * ! 2390: 5257a4089,4092 ! 2391: > EJC ! 2392: > * ! 2393: > * STANDARD VARIABLE BLOCKS (CONTINUED) ! 2394: > * ! 2395: 5260,5261c4095 ! 2396: < * ! 2397: < V$APN DBC SVFNN ! 2398: --- ! 2399: > V$APN DBC SVFNN APPEND ! 2400: 5273d4106 ! 2401: < * ! 2402: 5286c4119 ! 2403: < DAC S$DEF ! 2404: --- ! 2405: > DAC S$DFN ! 2406: 5294d4126 ! 2407: < EJC ! 2408: 5296,5297d4127 ! 2409: < * STANDARD VARIABLE BLOCKS (CONTINUED) ! 2410: < * ! 2411: 5308c4138 ! 2412: < * ! 2413: --- ! 2414: > EJC ! 2415: 5310a4141 ! 2416: > * ! 2417: 5316d4146 ! 2418: < * ! 2419: 5317a4148 ! 2420: > * ! 2421: 5341,5346d4171 ! 2422: < V$REW DBC SVFNN REWIND ! 2423: < DAC 6 ! 2424: < DTC /REWIND/ ! 2425: < DAC S$REW ! 2426: < DAC 1 ! 2427: < * ! 2428: 5377c4202 ! 2429: < DAC S$CNV ! 2430: --- ! 2431: > DAC S$CVT ! 2432: 5384c4209 ! 2433: < DAC 1 ! 2434: --- ! 2435: > DAC 2 ! 2436: 5414d4238 ! 2437: < * ! 2438: 5423a4248 ! 2439: > * ! 2440: 5462a4288,4293 ! 2441: > V$VDF DBC SVFPR VDIFFER ! 2442: > DAC 7 ! 2443: > DTC /VDIFFER/ ! 2444: > DAC S$VDF ! 2445: > DAC 2 ! 2446: > * ! 2447: 5466a4298 ! 2448: > EJC ! 2449: 5467a4300,4301 ! 2450: > * STANDARD VARIABLE BLOCKS (CONTINUED) ! 2451: > * ! 2452: 5472d4305 ! 2453: < EJC ! 2454: 5474,5475d4306 ! 2455: < * STANDARD VARIABLE BLOCKS (CONTINUED) ! 2456: < * ! 2457: 5516,5518d4346 ! 2458: < .IF .CULC ! 2459: < DAC V$CAS CCASE ! 2460: < .FI ! 2461: 5548,5553c4376,4377 ! 2462: < .IF .CULC ! 2463: < DAC V$CAS START OF 4 CHAR VARIABLES ! 2464: < .ELSE ! 2465: < DAC V$CHR START OF 4 CHAR VARIABLES ! 2466: < .FI ! 2467: < DAC V$ABE START OF 5 CHAR VARIABLES ! 2468: --- ! 2469: > DAC V$COD START OF 4 CHAR VARIABLES ! 2470: > DAC V$ABO START OF 5 CHAR VARIABLES ! 2471: 5598c4422 ! 2472: < * LABEL TO MARK START OF WORK AREA ! 2473: --- ! 2474: > * LABEL TO MARK START OF WORK AREA WHICH IS CLEARED ! 2475: 5663,5665c4487,4489 ! 2476: < CSWDB DAC 0 0/1 FOR -SINGLE/-DOUBLE ! 2477: < CSWER DAC 0 0/1 FOR -ERRORS/-NOERRORS ! 2478: < CSWEX DAC 0 0/1 FOR -EXECUTE/-NOEXECUTE ! 2479: --- ! 2480: > .IF .CASL ! 2481: > CSWCI DAC 0 0/1 FOR -NOCASEIG/CASEIG ! 2482: > .FI ! 2483: 5669,5670c4493 ! 2484: < CSWNO DAC 0 0/1 FOR -OPTIMISE/-NOOPT ! 2485: < CSWPR DAC 0 0/1 FOR -NOPRINT/-PRINT ! 2486: --- ! 2487: > EJC ! 2488: 5676d4498 ! 2489: < EJC ! 2490: 5711,5715d4532 ! 2491: < * WORK AREA FOR DTACH ! 2492: < * ! 2493: < DTCNB DAC 0 NAME BASE ! 2494: < DTCNM DAC 0 NAME PTR ! 2495: < * ! 2496: 5726,5727c4543 ! 2497: < ERICH DAC 0 COPY ERROR REPORTS TO INT.CHAN IF 1 ! 2498: < ERLST DAC 0 FOR LISTR WHEN ERRORS GO TO INT.CH. ! 2499: --- ! 2500: > EROSN DAC 0 FLAG FOR SPECIAL EROSI RETURN ! 2501: 5741a4558 ! 2502: > * ! 2503: 5798a4616 ! 2504: > GTNSV DIC +0 SAVE IA ! 2505: 5821a4640 ! 2506: > EJC ! 2507: 5827c4646 ! 2508: < * FLAG FOR HEADER PRINTING ! 2509: --- ! 2510: > * FLAGS FOR HEADER PRINTING ! 2511: 5828a4648 ! 2512: > HEADN DAC 0 NON-ZERO IF HDRS NOT TO BE PRINTED ! 2513: 5838a4659 ! 2514: > INICD DIC +0 CODE KWD VAL (NEEDED FOR BATCH) ! 2515: 5846c4667,4669 ! 2516: < INSAB DAC 0 ENTRY WA + ENTRY WB ! 2517: --- ! 2518: > INSAB DAC 0 ENTRY WA PLUS ENTRY WB ! 2519: > INSBB DAC 0 BFBLK POINTER ! 2520: > INSBC DAC 0 BCBLK POINTER ! 2521: 5849d4671 ! 2522: < INSSC DAC 0 SAVE ENTRY WC ! 2523: 5854c4676,4680 ! 2524: < IOPTT DAC 0 TYPE OF ASSOCIATION ! 2525: --- ! 2526: > IOPNF DAC 0 NAME OFFSET ! 2527: > IOPVR DAC 0 FILETAG VRBLK ! 2528: > IOPWA DAC 0 KEEP WA ! 2529: > IOPWB DAC 0 KEEP WB ! 2530: > IOPWC DAC 0 KEEP WC ! 2531: 5861d4686 ! 2532: < KVABE DAC 0 ABEND ! 2533: 5863,5866d4687 ! 2534: < .IF .CULC ! 2535: < KVCAS DAC 0 CASE ! 2536: < .FI ! 2537: < KVCOD DAC 0 CODE ! 2538: 5887a4709,4713 ! 2539: > KVCOD DIC 0 CODE ! 2540: > .IF .CS16 ! 2541: > KVSTL DIC +32767 STLIMIT ! 2542: > KVSTC DIC +32767 STCOUNT (COUNTS DOWN FROM STLIMIT) ! 2543: > .ELSE ! 2544: 5889a4716 ! 2545: > .FI ! 2546: 5897a4725 ! 2547: > EJC ! 2548: 5920c4748 ! 2549: < PFDMP DAC 0 SET NON-0 IF &PROFILE SET NON-0 ! 2550: --- ! 2551: > PFDMP DAC 0 SET NON-0 IF PROFILE SET NON-0 ! 2552: 5927c4755 ! 2553: < PFSTE DIC +0 GETS INT REP OF TABLE ENTRY SIZE ! 2554: --- ! 2555: > PFSTE DIC +0 TABLE ENTRY SIZE IN BAUS ! 2556: 5929d4756 ! 2557: < * ! 2558: 5938,5943d4764 ! 2559: < * FLAGS USED FOR STANDARD FILE LISTING OPTIONS ! 2560: < * ! 2561: < PRICH DAC 0 PRINTER ON INTERACTIVE CHANNEL ! 2562: < PRSTD DAC 0 TESTED BY PRTPG ! 2563: < PRSTO DAC 0 STANDARD LISTING OPTION FLAG ! 2564: < * ! 2565: 5957a4779,4780 ! 2566: > PRAVL DAC 0 SET IF PRINT FILE AVAILABLE ! 2567: > PRBLK DAC 0 ADDRESS OF BUFFER BLANKING STRING ! 2568: 5958a4782,4783 ! 2569: > PRCHS DAC 0 ADDRESS OF CHARS IN PRINT BUFFER ! 2570: > PRCMV DAC 0 NO. OF BAUS TO MOVE IN BFR CLEARING ! 2571: 5961d4785 ! 2572: < PRLNW DAC 0 LENGTH OF PRINT BUFFER IN WORDS ! 2573: 5962a4787,4789 ! 2574: > PRPUT DAC 0 SET IF CHARS TO BE PUT IN BFR ! 2575: > PRSTD DAC 0 TESTED BY PRTPG ! 2576: > PRSTO DAC 0 STANDARD LISTING OPTION FLAG ! 2577: 5965c4792 ! 2578: < * WORK AREAS FOR PRTST PROCEDURE ! 2579: --- ! 2580: > * WORK AREAS FOR PRTST, PTTST PROCEDURES ! 2581: 5969c4796,4797 ! 2582: < PRSVC DAC 0 SAVE CHAR COUNTER ! 2583: --- ! 2584: > PRTVA DAC 0 SAVE WA ! 2585: > PRTVB DAC 0 SAVE WB ! 2586: 5971,5975d4798 ! 2587: < * WORK AREA FOR PRTNL ! 2588: < * ! 2589: < PRTSA DAC 0 SAVE WA ! 2590: < PRTSB DAC 0 SAVE WB ! 2591: < * ! 2592: 5985a4809,4812 ! 2593: > * FLAG TO TELL ERROR THAT WE ARE READING SOURCE LINE ! 2594: > * ! 2595: > RDRER DAC 0 READ-SOURCE-LINE IN PROGRESS FLAG ! 2596: > * ! 2597: 6009a4837 ! 2598: > R$COP DAC 0 PTR TO -COPY CHAIN STACK ! 2599: 6014d4841 ! 2600: < R$FCB DAC 0 FCBLK CHAIN HEAD ! 2601: 6017,6022c4844,4847 ! 2602: < R$IO1 DAC 0 FILE ARG1 FOR IOPUT ! 2603: < R$IO2 DAC 0 FILE ARG2 FOR IOPUT ! 2604: < R$IOF DAC 0 FCBLK PTR OR 0 ! 2605: < R$ION DAC 0 NAME BASE PTR ! 2606: < R$IOP DAC 0 PREDECESSOR BLOCK PTR FOR IOPUT ! 2607: < R$IOT DAC 0 TRBLK PTR FOR IOPUT ! 2608: --- ! 2609: > R$IO1 DAC 0 FIRST ARGUMENT ! 2610: > R$IOL DAC 0 SECOND ARGUMENT (FILETAG) SCBLK PTR ! 2611: > R$IOR DAC 0 FILEPROPS SCBLK PTR ! 2612: > R$IOT DAC 0 TRTIO TRACE BLK PTR ! 2613: 6077a4903,4910 ! 2614: > * ! 2615: > * WORK AREA FOR DETACH PROCEDURE ! 2616: > * ! 2617: > SDETF DAC 0 TRACE BLOCK FLAG ! 2618: > * ! 2619: > * WORK AREA FOR ENDFILE PROCEDURE ! 2620: > * ! 2621: > SENFR DAC 0 SAVE XR ! 2622: 6102c4935 ! 2623: < * GLOBAL VALUE FOR INDICATING STAGE (SEE ERROR SECTION) ! 2624: --- ! 2625: > * VALUES FOR INDICATING COMPILATION/EXECUTION STAGE ! 2626: 6104a4938 ! 2627: > STAGX DAC 0 NON-ZERO IF EXECUTING ! 2628: 6119a4954 ! 2629: > STPXR DAC 0 SAVE XR ! 2630: 6133d4967 ! 2631: < TIMUP DAC 0 SET WHEN TIME UP OCCURS ! 2632: 6134a4969,4981 ! 2633: > * TERMINAL BUFFER ADDRESSES, FLAGS ETC ! 2634: > * ! 2635: > TTBLK DAC 0 BLANKING STRING ADRS ! 2636: > TTBUF DAC 0 BUFFER ADRS ! 2637: > TTCHS DAC 0 START OF BUFFER CHARACTERS ! 2638: > TTCMV DAC 0 COUNT OF BLANKING CHARS TO MOVE ! 2639: > TTERL DAC 0 ERROR FLAG ! 2640: > TTINS DAC 0 NON-ZERO IF STD INPUT FROM TERML ! 2641: > TTLEN DAC 0 LENGTH OF TERMINAL BUFFER ! 2642: > TTLST DAC 0 COPY STD O/P TO TERML IF SET ! 2643: > TTOFS DAC 0 OFFSET TO POSITION IN TERML BFR ! 2644: > TTOUS DAC 0 SET IF STD OUTPUT TO TERMINAL ! 2645: > * ! 2646: 6136a4984,4985 ! 2647: > XSCBL DAC 0 COUNT OF TRAILING BLANKS ! 2648: > XSCNB DAC 0 NON-ZERO IF NON-BLANKS SEEN ! 2649: 6155a5005 ! 2650: > * (WA) INITIAL &CODE VALUE ! 2651: 6158c5008,5010 ! 2652: < JSR SYSTM INITIALISE TIMER ! 2653: --- ! 2654: > * ! 2655: > INITL RTN INITIALISATION CODE ! 2656: > MOV WA,INICD SAVE INITIAL CODE KYWD VALUE ! 2657: 6160d5011 ! 2658: < STI TIMSX STORE TIME ! 2659: 6196c5047 ! 2660: < MOV WA,CSWIN -IN72 ! 2661: --- ! 2662: > MOV WA,CSWIN STORE FOR LATER USE ! 2663: 6206d5056 ! 2664: < STI TIMSX STORE TIME IN CORRECT PLACE ! 2665: 6211a5062,5068 ! 2666: > .IF .CSIG ! 2667: > MNZ CSWCI -CASEIG ! 2668: > .FI ! 2669: > JSR SYSTM INITIALISE TIMER ! 2670: > STI TIMSX STORE TIME ! 2671: > LDI INICD LOAD INITIAL CODE KWD VALUE ! 2672: > STI KVCOD STORE ! 2673: 6247a5105,5106 ! 2674: > ADD TTLEN,WA ADD TERMINAL BUFFER LENGTH ! 2675: > ADD WA,WA ALLOW FOR EQUALLY BIG BLANK STRINGS ! 2676: 6250c5109 ! 2677: < CTB WA,8 CONVERT TO BYTES, ALLOWING A MARGIN ! 2678: --- ! 2679: > CTB WA,8 CONVERT TO BAUS, ALLOWING A MARGIN ! 2680: 6258c5117 ! 2681: < BGT XR,WA,INI06 SKIP IF STATIC HI EXCEEDS MXLEN ! 2682: --- ! 2683: > BGT XR,WA,INI05 SKIP IF STATIC HI EXCEEDS MXLEN ! 2684: 6265c5124 ! 2685: < INI06 MOV XR,DNAMB DYNAMIC BASE ADRS ! 2686: --- ! 2687: > INI05 MOV XR,DNAMB DYNAMIC BASE ADRS ! 2688: 6267c5126 ! 2689: < BNZ WA,INI07 SKIP IF NON-ZERO MXLEN ! 2690: --- ! 2691: > BNZ WA,INI06 SKIP IF NON-ZERO MXLEN ! 2692: 6271d5129 ! 2693: < EJC ! 2694: 6276,6277c5134,5135 ! 2695: < INI07 MOV XL,DNAME STORE DYNAMIC END ADDRESS ! 2696: < BLT DNAMB,XL,INI09 SKIP IF HIGH ENOUGH ! 2697: --- ! 2698: > INI06 MOV XL,DNAME STORE DYNAMIC END ADDRESS ! 2699: > BLT DNAMB,XL,INI08 SKIP IF HIGH ENOUGH ! 2700: 6279c5137 ! 2701: < WTB XR GET AS BAUS (SGD05) ! 2702: --- ! 2703: > WTB XR CONVERT TO BAUS ! 2704: 6281c5139 ! 2705: < BNZ XR,INI07 TRY AGAIN ! 2706: --- ! 2707: > BNZ XR,INI06 TRY AGAIN ! 2708: 6283c5141 ! 2709: < MOV ENDML,WA MESSAGE LENGTH ! 2710: --- ! 2711: > MOV ENDML,WC MESSAGE LENGTH ! 2712: 6285c5143,5148 ! 2713: < PPM SHOULD NOT FAIL ! 2714: --- ! 2715: > PPM INI07 ! 2716: > PPM INI07 ! 2717: > * ! 2718: > * EMERGENCY SHUTDOWN ! 2719: > * ! 2720: > INI07 MOV =KVCOD,WA CODE KEYWORD ! 2721: 6286a5150 ! 2722: > EJC ! 2723: 6290c5154 ! 2724: < INI09 MOV PRLEN,WC NO. OF CHARS IN PRINT BFR ! 2725: --- ! 2726: > INI08 MOV PRLEN,WA NO. OF CHARS IN PRINT BFR ! 2727: 6294,6297c5158,5169 ! 2728: < MOV WC,(XR)+ AND STRING LENGTH ! 2729: < CTW WC,0 GET NUMBER OF WORDS IN BUFFER ! 2730: < MOV WC,PRLNW STORE FOR BUFFER CLEAR ! 2731: < LCT WC,WC WORDS TO CLEAR ! 2732: --- ! 2733: > MOV WA,(XR)+ AND STRING LENGTH ! 2734: > MOV XR,PRCHS KEEP ADRS OF BUFFER PROPER ! 2735: > MOV XR,XL COPY IT ! 2736: > CTB WA,0 WORDS NEEDED EXPRESSED IN BAUS ! 2737: > MOV WA,PRCMV KEEP FOR CLEARING BUFFER ! 2738: > MOV XR,PRBLK CONSTRUCT ADRS OF BLANKING STRING ! 2739: > ADD WA,PRBLK ADD OFFSET TO BLANKING STRING ! 2740: > ADD WA,WA CLEAR BOTH BFR AND BLANKING STRING ! 2741: > MOV NULLW,(XR)+ CLEAR FIRST WORD ! 2742: > BZE WA,INI09 SKIP IF NO PRINT BUFFER ! 2743: > DCA WA ADJUST FOR FIRST WORD ! 2744: > MVW PERFORM BLANKING ! 2745: 6299c5171 ! 2746: < * LOOP TO CLEAR BUFFER ! 2747: --- ! 2748: > * SET UP TERMINAL BUFFER ! 2749: 6301,6302c5173,5187 ! 2750: < INI10 MOV NULLW,(XR)+ STORE BLANK ! 2751: < BCT WC,INI10 LOOP ! 2752: --- ! 2753: > INI09 MOV TTLEN,WA LENGTH OF TERMINAL BUFFER ! 2754: > MOV XR,TTBUF ADRS OF TERMINAL STRING BUFFER ! 2755: > MOV =B$SCL,(XR)+ STRING TYPE CODE ! 2756: > MOV WA,(XR)+ STRING LENGTH ! 2757: > MOV XR,TTCHS KEEP ADRS OF BUFFER PROPER ! 2758: > MOV XR,XL COPY IT ! 2759: > CTB WA,0 WORDS NEEDED EXPRESSED IN BAUS ! 2760: > MOV WA,TTCMV KEEP FOR CLEARING BUFFER ! 2761: > MOV XR,TTBLK CONSTRUCT ADRS OF BLANKING STRING ! 2762: > ADD WA,TTBLK ADD OFFSET TO BLANKING STRING ! 2763: > ADD WA,WA CLEAR BOTH BFR AND BLANKING STRING ! 2764: > MOV NULLW,(XR)+ CLEAR FIRST WORD ! 2765: > BZE WA,INI10 SKIP IF NO PRINT BUFFER ! 2766: > DCA WA ADJUST FOR FIRST WORD ! 2767: > MVW PERFORM BLANKING ! 2768: 6306c5191 ! 2769: < MOV =E$HNB,WA GET NUMBER OF HASH HEADERS ! 2770: --- ! 2771: > INI10 MOV =E$HNB,WA GET NUMBER OF HASH HEADERS ! 2772: 6321c5206 ! 2773: < CTB WA,SCSI$ NO OF BYTES NEEDED ! 2774: --- ! 2775: > CTB WA,SCSI$ NO OF BAUS NEEDED ! 2776: 6333c5218 ! 2777: < CTB WB,SCSI$ NO. OF BYTES NEEDED ! 2778: --- ! 2779: > CTB WB,SCSI$ NO. OF BAUS NEEDED ! 2780: 6347c5232 ! 2781: < * INITIALIZE VARIABLE BLOCKS FOR INPUT AND OUTPUT ! 2782: --- ! 2783: > * INITIALIZE VARIABLE BLOCKS FOR INPUT OUTPUT TERMINAL ! 2784: 6355,6357c5240,5246 ! 2785: < MOV INITR,WC TERMINAL FLAG ! 2786: < BZE WC,INI13 SKIP IF NO TERMINAL ! 2787: < JSR PRPAR ASSOCIATE TERMINAL ! 2788: --- ! 2789: > BZE TTLEN,INI13 SKIP IF NO TERMINAL I/O ! 2790: > MOV =V$TER,XL POINT TO STRING /TERMINAL/ ! 2791: > MOV =TRTOU,WB TRTYP FOR OUTPUT ! 2792: > JSR INOUT PERFORM ASSOCIATION ! 2793: > MOV =V$TER,XL ! 2794: > MOV =TRTIN,WB TRTYP FOR INPUT ! 2795: > JSR INOUT PERFORM ASSOCIATION ! 2796: 6360d5248 ! 2797: < * CHECK FOR EXPIRY DATE ! 2798: 6362,6363c5250 ! 2799: < INI13 JSR SYSDC CALL DATE CHECK ! 2800: < MOV XS,FLPTR IN CASE STACK OVERFLOWS IN COMPILER ! 2801: --- ! 2802: > * PREPARE FOR COMPILATION ! 2803: 6364a5252,5253 ! 2804: > INI13 MOV XS,FLPTR IN CASE STACK OVERFLOWS IN COMPILER ! 2805: > * ! 2806: 6369,6370c5258,5259 ! 2807: < MOV =NULLS,R$TTL FORGET TITLE (REG04) ! 2808: < MOV =NULLS,R$STL FORGET SUB-TITLE (REG04) ! 2809: --- ! 2810: > MOV =NULLS,R$TTL FORGET TITLE ! 2811: > MOV =NULLS,R$STL FORGET SUB-TITLE ! 2812: 6375c5264 ! 2813: < BNZ CPSTS,INIX0 SKIP IF NO LISTING OF COMP STATS ! 2814: --- ! 2815: > BNZ CPSTS,INIX1 SKIP IF NO LISTING OF COMP STATS ! 2816: 6404,6407d5292 ! 2817: < .IF .CUEJ ! 2818: < BZE HEADP,INIX0 NO EJECT IF NOTHING PRINTED (SDG11) ! 2819: < JSR PRTPG EJECT PRINTER ! 2820: < .FI ! 2821: 6412d5296 ! 2822: < * SET DEFAULT INPUT RECORD LENGTH ! 2823: 6414,6415c5298 ! 2824: < INIX0 BGT CSWIN,=INILN,INIX1 SKIP IF NOT DEFAULT -IN72 USED ! 2825: < MOV =INILS,CSWIN ELSE USE DEFAULT RECORD LENGTH ! 2826: --- ! 2827: > * CHECK FOR NOEXECUTE ! 2828: 6417,6422c5300 ! 2829: < * RESET TIMER ! 2830: < * ! 2831: < INIX1 JSR SYSTM GET TIME AGAIN ! 2832: < STI TIMSX STORE FOR END RUN PROCESSING ! 2833: < ADD CSWEX,NOXEQ ADD -NOEXECUTE FLAG ! 2834: < BNZ NOXEQ,INIX2 JUMP IF EXECUTION SUPPRESSED ! 2835: --- ! 2836: > INIX1 BNZ NOXEQ,INIX3 JUMP IF EXECUTION SUPPRESSED ! 2837: 6424,6429c5302,5303 ! 2838: < JSR SYSBX CALL BEFORE STARTING EXECUTION ! 2839: < .IF .CUEJ ! 2840: < .ELSE ! 2841: < BZE HEADP,INIY0 NO EJECT IF NOTHING PRINTED (SGD11) ! 2842: < JSR PRTPG EJECT PRINTER ! 2843: < .FI ! 2844: --- ! 2845: > BZE HEADP,INIX2 SKIP IF NO PRTPG CALLS IN COMPILN ! 2846: > JSR PRTPG EJECT STANDARD PRINTER FILE ! 2847: 6431c5305 ! 2848: < * MERGE WHEN LISTING FILE SET FOR EXECUTION ! 2849: --- ! 2850: > * INFORM OSINT OF STAGE ! 2851: 6433c5307 ! 2852: < INIY0 MNZ HEADP MARK HEADERS OUT REGARDLESS ! 2853: --- ! 2854: > INIX2 JSR SYSBX CALL BEFORE STARTING EXECUTION ! 2855: 6437a5312,5313 ! 2856: > JSR SYSTM GET TIME ! 2857: > STI TIMSX STORE FOR END RUN PROCESSING ! 2858: 6440,6442c5316,5317 ! 2859: < MOV CMPSN,PFNTE COPY STMTS COMPILED COUNT IN CASE ! 2860: < JSR SYSTM TIME YET AGAIN ! 2861: < STI PFSTM ! 2862: --- ! 2863: > STI PFSTM STORE TIME FOR PROFILER ! 2864: > MOV CMPSN,PFNTE COPY STATEMENTS COMPILED COUNT ! 2865: 6448c5323 ! 2866: < INIX2 JSR PRTNL PRINT A BLANK LINE ! 2867: --- ! 2868: > INIX3 JSR PRTFH PRINT A BLANK LINE ! 2869: 6450,6453c5325,5327 ! 2870: < JSR PRTST PRINT STRING ! 2871: < JSR PRTNL OUTPUT LINE ! 2872: < ZER WA SET ABEND VALUE TO ZERO ! 2873: < MOV =NINI9,WB SET SPECIAL CODE VALUE ! 2874: --- ! 2875: > MOV TTERL,TTLST TO FORCE MSG TO TERMINAL ! 2876: > JSR PRTSF PRINT NOEXECUTE MESSAGE ! 2877: > MOV =KVCOD,WA ENDING CODE ! 2878: 6500c5374 ! 2879: < ERB 261,ADDITION CAUSED REAL OVERFLOW ! 2880: --- ! 2881: > ERB 004,ADDITION CAUSED REAL OVERFLOW ! 2882: 6509c5383 ! 2883: < ERR 004,AFFIRMATION OPERAND IS NOT NUMERIC ! 2884: --- ! 2885: > ERR 005,AFFIRMATION OPERAND IS NOT NUMERIC ! 2886: 6518c5392 ! 2887: < ERR 005,ALTERNATION RIGHT OPERAND IS NOT PATTERN ! 2888: --- ! 2889: > ERR 006,ALTERNATION RIGHT OPERAND IS NOT PATTERN ! 2890: 6527c5401 ! 2891: < ERR 006,ALTERNATION LEFT OPERAND IS NOT PATTERN ! 2892: --- ! 2893: > ERR 007,ALTERNATION LEFT OPERAND IS NOT PATTERN ! 2894: 6551d5424 ! 2895: < EJC ! 2896: 6559d5431 ! 2897: < EJC ! 2898: 6583c5455 ! 2899: < WTB WA CONVERT TO BYTES ! 2900: --- ! 2901: > WTB WA CONVERT TO BAUS ! 2902: 6622c5494 ! 2903: < WTB WA CONVERT TO BYTES ! 2904: --- ! 2905: > WTB WA CONVERT TO BAUS ! 2906: 6636c5508 ! 2907: < * ASSIGNMENT ! 2908: --- ! 2909: > * ASSIGNMENT (O$RPL MERGES) ! 2910: 6639,6642c5511 ! 2911: < * ! 2912: < * O$RPL (PATTERN REPLACEMENT) MERGES HERE ! 2913: < * ! 2914: < OASS0 MOV (XS)+,WB LOAD VALUE TO BE ASSIGNED ! 2915: --- ! 2916: > MOV (XS)+,WB LOAD VALUE TO BE ASSIGNED ! 2917: 6649d5517 ! 2918: < EJC ! 2919: 6654,6655c5522 ! 2920: < ERB 007,COMPILATION ERROR ENCOUNTERED DURING EXECUTION ! 2921: < EJC ! 2922: --- ! 2923: > ERB 008,COMPILATION ERROR ENCOUNTERED DURING EXECUTION ! 2924: 6729c5596 ! 2925: < ERR 008,CONCATENATION LEFT OPND IS NOT STRING OR PATTERN ! 2926: --- ! 2927: > ERR 009,CONCATENATION LEFT OPND IS NOT STRING OR PATTERN ! 2928: 6733c5600 ! 2929: < ERR 009,CONCATENATION RIGHT OPD IS NOT STRING OR PATTERN ! 2930: --- ! 2931: > ERR 010,CONCATENATION RIGHT OPD IS NOT STRING OR PATTERN ! 2932: 6754c5621 ! 2933: < ERR 010,COMPLEMENTATION OPERAND IS NOT NUMERIC ! 2934: --- ! 2935: > ERR 011,COMPLEMENTATION OPERAND IS NOT NUMERIC ! 2936: 6762c5629 ! 2937: < ERB 011,COMPLEMENTATION CAUSED INTEGER OVERFLOW ! 2938: --- ! 2939: > ERB 012,COMPLEMENTATION CAUSED INTEGER OVERFLOW ! 2940: 6778,6779c5645,5646 ! 2941: < ERR 012,DIVISION LEFT OPERAND IS NOT NUMERIC ! 2942: < ERR 013,DIVISION RIGHT OPERAND IS NOT NUMERIC ! 2943: --- ! 2944: > ERR 013,DIVISION LEFT OPERAND IS NOT NUMERIC ! 2945: > ERR 014,DIVISION RIGHT OPERAND IS NOT NUMERIC ! 2946: 6789c5656 ! 2947: < ERB 014,DIVISION CAUSED INTEGER OVERFLOW ! 2948: --- ! 2949: > ERB 015,DIVISION CAUSED INTEGER OVERFLOW ! 2950: 6797c5664 ! 2951: < ERB 262,DIVISION CAUSED REAL OVERFLOW ! 2952: --- ! 2953: > ERB 016,DIVISION CAUSED REAL OVERFLOW ! 2954: 6806c5673 ! 2955: < ERR 015,EXPONENTIATION RIGHT OPERAND IS NOT NUMERIC ! 2956: --- ! 2957: > ERR 017,EXPONENTIATION RIGHT OPERAND IS NOT NUMERIC ! 2958: 6814c5681 ! 2959: < ERR 016,EXPONENTIATION LEFT OPERAND IS NOT NUMERIC ! 2960: --- ! 2961: > ERR 018,EXPONENTIATION LEFT OPERAND IS NOT NUMERIC ! 2962: 6840c5707 ! 2963: < OEXP2 ERB 017,EXPONENTIATION CAUSED INTEGER OVERFLOW ! 2964: --- ! 2965: > OEXP2 ERB 019,EXPONENTIATION CAUSED INTEGER OVERFLOW ! 2966: 6858c5725 ! 2967: < OEXP4 ERB 018,EXPONENTIATION RESULT IS UNDEFINED ! 2968: --- ! 2969: > OEXP4 ERB 020,EXPONENTIATION RESULT IS UNDEFINED ! 2970: 6871c5738 ! 2971: < OEXP6 ERB 266,EXPONENTIATION CAUSED REAL OVERFLOW ! 2972: --- ! 2973: > OEXP6 ERB 021,EXPONENTIATION CAUSED REAL OVERFLOW ! 2974: 6875c5742 ! 2975: < OEXP7 ERB 267,EXPONENTIATION RIGHT OPERAND IS REAL NOT INTEGER ! 2976: --- ! 2977: > OEXP7 ERB 022,EXPONENTIATION RIGHT OPERAND IS REAL NOT INTEGER ! 2978: 6880c5747 ! 2979: < OEXP8 ERB 019,EXPONENTIATION RIGHT OPERAND IS NEGATIVE ! 2980: --- ! 2981: > OEXP8 ERB 023,EXPONENTIATION RIGHT OPERAND IS NEGATIVE ! 2982: 6890,6891c5757 ! 2983: < BRN EVLX6 JUMP TO FAILURE LOC IN EVALX ! 2984: < EJC ! 2985: --- ! 2986: > JMG EVLXF JUMP TO FAILURE LOC IN EVALX ! 2987: 6896,6897c5762 ! 2988: < ERB 020,GOTO EVALUATION FAILURE ! 2989: < EJC ! 2990: --- ! 2991: > ERB 024,GOTO EVALUATION FAILURE ! 2992: 6907d5771 ! 2993: < EJC ! 2994: 6914c5778,5779 ! 2995: < BZE 2(XS),EVLX3 OK IF EXPR. WAS WANTED BY VALUE ! 2996: --- ! 2997: > BNZ 2(XS),OFNE1 FAIL UNLESS EXPRN WANTED BY VALUE ! 2998: > JMG EVLXV JOIN EXPRESSION BY VALUE CODE ! 2999: 6918,6919c5783 ! 3000: < OFNE1 ERB 021,FUNCTION CALLED BY NAME RETURNED A VALUE ! 3001: < EJC ! 3002: --- ! 3003: > OFNE1 ERB 025,FUNCTION CALLED BY NAME RETURNED A VALUE ! 3004: 6933,6934c5797 ! 3005: < ERB 022,UNDEFINED FUNCTION CALLED ! 3006: < EJC ! 3007: --- ! 3008: > ERB 026,UNDEFINED FUNCTION CALLED ! 3009: 6946,6947c5809 ! 3010: < OGOC1 ERB 023,GOTO OPERAND IS NOT A NATURAL VARIABLE ! 3011: < EJC ! 3012: --- ! 3013: > OGOC1 ERB 027,GOTO OPERAND IS NOT A NATURAL VARIABLE ! 3014: 6954,6957c5816,5818 ! 3015: < BEQ WA,=B$CDS,BCDS0 JUMP IF CODE BLOCK TO CODE ROUTINE ! 3016: < BEQ WA,=B$CDC,BCDC0 JUMP IF CODE BLOCK TO CODE ROUTINE ! 3017: < ERB 024,GOTO OPERAND IN DIRECT GOTO IS NOT CODE ! 3018: < EJC ! 3019: --- ! 3020: > BEQ WA,=B$CDC,OGOD1 JUMP IF CODE BLOCK ! 3021: > BEQ WA,=B$CDS,OGOD2 JUMP IF CODE BLOCK ! 3022: > ERB 028,GOTO OPERAND IN DIRECT GOTO IS NOT CODE ! 3023: 6958a5820,5831 ! 3024: > * CASE OF COMPLEX FAILURE CODE ! 3025: > * ! 3026: > OGOD1 MOV FLPTR,XS POP GARBAGE OFF STACK ! 3027: > MOV CDFAL(XR),(XS) SET NEW FAILURE OFFSET ! 3028: > BRN STMGO JUMP TO EXECUTE CODE ! 3029: > * ! 3030: > * CASE OF SIMPLE FAILURE CODE ! 3031: > * ! 3032: > OGOD2 MOV FLPTR,XS POP GARBAGE OFF STACK ! 3033: > MOV *CDFAL,(XS) SET NEW FAILURE OFFSET ! 3034: > BRN STMGO JUMP TO EXECUTE CODE ! 3035: > * ! 3036: 6985c5858 ! 3037: < ERR 025,IMMEDIATE ASSIGNMENT LEFT OPERAND IS NOT PATTERN ! 3038: --- ! 3039: > ERR 029,IMMEDIATE ASSIGNMENT LEFT OPERAND IS NOT PATTERN ! 3040: 6992d5864 ! 3041: < EJC ! 3042: 6999d5870 ! 3043: < EJC ! 3044: 7006d5876 ! 3045: < EJC ! 3046: 7020d5889 ! 3047: < EJC ! 3048: 7030d5898 ! 3049: < EJC ! 3050: 7044d5911 ! 3051: < EJC ! 3052: 7060d5926 ! 3053: < EJC ! 3054: 7066,7067c5932,5933 ! 3055: < ERR 026,MULTIPLICATION LEFT OPERAND IS NOT NUMERIC ! 3056: < ERR 027,MULTIPLICATION RIGHT OPERAND IS NOT NUMERIC ! 3057: --- ! 3058: > ERR 030,MULTIPLICATION LEFT OPERAND IS NOT NUMERIC ! 3059: > ERR 031,MULTIPLICATION RIGHT OPERAND IS NOT NUMERIC ! 3060: 7077c5943 ! 3061: < ERB 028,MULTIPLICATION CAUSED INTEGER OVERFLOW ! 3062: --- ! 3063: > ERB 032,MULTIPLICATION CAUSED INTEGER OVERFLOW ! 3064: 7085c5951 ! 3065: < ERB 263,MULTIPLICATION CAUSED REAL OVERFLOW ! 3066: --- ! 3067: > ERB 033,MULTIPLICATION CAUSED REAL OVERFLOW ! 3068: 7087d5952 ! 3069: < EJC ! 3070: 7123d5987 ! 3071: < EJC ! 3072: 7128,7129c5992 ! 3073: < ERB 029,UNDEFINED OPERATOR REFERENCED ! 3074: < EJC ! 3075: --- ! 3076: > ERB 034,UNDEFINED OPERATOR REFERENCED ! 3077: 7145c6008 ! 3078: < ERR 030,PATTERN ASSIGNMENT LEFT OPERAND IS NOT PATTERN ! 3079: --- ! 3080: > ERR 035,PATTERN ASSIGNMENT LEFT OPERAND IS NOT PATTERN ! 3081: 7159d6021 ! 3082: < EJC ! 3083: 7170d6031 ! 3084: < EJC ! 3085: 7177d6037 ! 3086: < EJC ! 3087: 7184d6043 ! 3088: < EJC ! 3089: 7189,7190c6048,6050 ! 3090: < BRN LEND0 JUMP TO END CIRCUIT ! 3091: < EJC ! 3092: --- ! 3093: > MOV =ENDMS,XR ENDING MESSAGE ! 3094: > ZER WA NO ERROR CODE ! 3095: > BRN STOPR STOP THE RUN ! 3096: 7198c6058 ! 3097: < BRN EVLX4 RETURN TO EVALX PROCEDURE ! 3098: --- ! 3099: > JMG EVLXN RETURN TO EVALX PROCEDURE ! 3100: 7210c6070 ! 3101: < * SUBJECT POINTER ! 3102: --- ! 3103: > * SUBJECT STRING POINTER ! 3104: 7215c6075 ! 3105: < ERR 031,PATTERN REPLACEMENT RIGHT OPERAND IS NOT STRING ! 3106: --- ! 3107: > ERR 036,PATTERN REPLACEMENT RIGHT OPERAND IS NOT STRING ! 3108: 7222c6082 ! 3109: < BEQ (XL),=B$BCT,ORPL4 BRANCH IF BUFFER ASSIGNMENT ! 3110: --- ! 3111: > BEQ (XL),=B$BCT,ORPL5 BRANCH IF BUFFER ASSIGNMENT ! 3112: 7257c6117 ! 3113: < BZE WA,OASS0 JUMP TO ASSIGN IF PART 3 IS NULL ! 3114: --- ! 3115: > BZE WA,ORPL4 JUMP TO ASSIGN IF PART 3 IS NULL ! 3116: 7260c6120 ! 3117: < BRN OASS0 JUMP TO PERFORM ASSIGNMENT ! 3118: --- ! 3119: > BRN ORPL4 JUMP TO PERFORM ASSIGNMENT ! 3120: 7266c6126,6130 ! 3121: < BRN OASS0 JUMP TO ASSIGN NULL VALUE ! 3122: --- ! 3123: > * ! 3124: > * MERGE WITH ASSIGNMENT ROUTINE ! 3125: > * ! 3126: > ORPL4 MOV =O$ASS,XL CONTINUATION ROUTINE ! 3127: > BRI XL ENTER ROUTINE ! 3128: 7272c6136 ! 3129: < ORPL4 MOV XR,XL COPY SCBLK REPLACEMENT PTR ! 3130: --- ! 3131: > ORPL5 MOV XR,XL COPY SCBLK REPLACEMENT PTR ! 3132: 7292c6156 ! 3133: < BRN EVLX3 RETURN TO EVALX PROCEDURE ! 3134: --- ! 3135: > BRN EVLXV RETURN TO EVALX PROCEDURE ! 3136: 7337,7338c6201,6202 ! 3137: < ERR 032,SUBTRACTION LEFT OPERAND IS NOT NUMERIC ! 3138: < ERR 033,SUBTRACTION RIGHT OPERAND IS NOT NUMERIC ! 3139: --- ! 3140: > ERR 037,SUBTRACTION LEFT OPERAND IS NOT NUMERIC ! 3141: > ERR 038,SUBTRACTION RIGHT OPERAND IS NOT NUMERIC ! 3142: 7348c6212 ! 3143: < ERB 034,SUBTRACTION CAUSED INTEGER OVERFLOW ! 3144: --- ! 3145: > ERB 039,SUBTRACTION CAUSED INTEGER OVERFLOW ! 3146: 7356c6220 ! 3147: < ERB 264,SUBTRACTION CAUSED REAL OVERFLOW ! 3148: --- ! 3149: > ERB 040,SUBTRACTION CAUSED REAL OVERFLOW ! 3150: 7358d6221 ! 3151: < EJC ! 3152: 7363,7364c6226 ! 3153: < BRN TRXQ1 JUMP INTO TRXEQ PROCEDURE ! 3154: < EJC ! 3155: --- ! 3156: > JMG TRXQR JUMP INTO TRXEQ PROCEDURE ! 3157: 7375c6237 ! 3158: < ERB 035,UNEXPECTED FAILURE IN -NOFAIL MODE ! 3159: --- ! 3160: > ERB 041,UNEXPECTED FAILURE IN -NOFAIL MODE ! 3161: 7387d6248 ! 3162: < EJC ! 3163: 7391a6253,6255 ! 3164: > MOV KVERT,WA LOAD ERROR CODE ! 3165: > ZER XR INDICATE NO ENDING MESSAGE ! 3166: > BNZ WA,STOPR STOP RUN ! 3167: 7393d6256 ! 3168: < * MERGE HERE IF EXECUTION TERMINATES IN ERROR ! 3169: 7395,7404c6258 ! 3170: < LABO1 MOV KVERT,WA LOAD ERROR CODE ! 3171: < BZE WA,LABO2 JUMP IF NO ERROR HAS OCCURED ! 3172: < .IF .CSAX ! 3173: < JSR SYSAX CALL AFTER EXECUTION PROC (REG04) ! 3174: < .ELSE ! 3175: < .FI ! 3176: < JSR PRTPG ELSE EJECT PRINTER ! 3177: < JSR ERMSG PRINT ERROR MESSAGE ! 3178: < ZER XR INDICATE NO MESSAGE TO PRINT ! 3179: < BRN STOPR JUMP TO ROUTINE TO STOP RUN ! 3180: --- ! 3181: > * FAIL IF NO ERROR HAD OCCURED ! 3182: 7406c6260 ! 3183: < * HERE IF NO ERROR HAD OCCURED ! 3184: --- ! 3185: > ERB 042,GOTO ABORT WITH NO PRECEDING ERROR ! 3186: 7408,7410d6261 ! 3187: < LABO2 ERB 036,GOTO ABORT WITH NO PRECEDING ERROR ! 3188: < EJC ! 3189: < * ! 3190: 7417,7418c6268,6269 ! 3191: < LCNT1 MOV R$CNT,XR LOAD CONTINUATION CODE BLOCK PTR ! 3192: < BZE XR,LCNT2 JUMP IF NO PREVIOUS ERROR ! 3193: --- ! 3194: > LCNXE MOV R$CNT,XR LOAD CONTINUATION CODE BLOCK PTR ! 3195: > BZE XR,LCNT1 JUMP IF NO PREVIOUS ERROR ! 3196: 7428c6279 ! 3197: < LCNT2 ERB 037,GOTO CONTINUE WITH NO PRECEDING ERROR ! 3198: --- ! 3199: > LCNT1 ERB 043,GOTO CONTINUE WITH NO PRECEDING ERROR ! 3200: 7434,7437c6285,6286 ! 3201: < * ! 3202: < * MERGE HERE FROM END CODE CIRCUIT ! 3203: < * ! 3204: < LEND0 MOV =ENDMS,XR POINT TO MESSAGE /NORMAL TERM../ ! 3205: --- ! 3206: > MOV =ENDMS,XR POINT TO MESSAGE /NORMAL TERM../ ! 3207: > ZER WA NO ERROR CODE ! 3208: 7439d6287 ! 3209: < EJC ! 3210: 7446d6293 ! 3211: < EJC ! 3212: 7453d6299 ! 3213: < EJC ! 3214: 7460d6305 ! 3215: < EJC ! 3216: 7465c6310 ! 3217: < ERB 038,GOTO UNDEFINED LABEL ! 3218: --- ! 3219: > ERB 044,GOTO UNDEFINED LABEL ! 3220: 7523d6367 ! 3221: < EJC ! 3222: 7536d6379 ! 3223: < EJC ! 3224: 7547d6389 ! 3225: < EJC ! 3226: 7565d6406 ! 3227: < EJC ! 3228: 7582d6422 ! 3229: < EJC ! 3230: 7594c6434 ! 3231: < BCDC0 MOV FLPTR,XS POP GARBAGE OFF STACK ! 3232: --- ! 3233: > MOV FLPTR,XS POP GARBAGE OFF STACK ! 3234: 7597d6436 ! 3235: < EJC ! 3236: 7599,7600d6437 ! 3237: < * CDBLK (CONTINUED) ! 3238: < * ! 3239: 7606c6443 ! 3240: < BCDS0 MOV FLPTR,XS POP GARBAGE OFF STACK ! 3241: --- ! 3242: > MOV FLPTR,XS POP GARBAGE OFF STACK ! 3243: 7609d6445 ! 3244: < EJC ! 3245: 7616d6451 ! 3246: < EJC ! 3247: 7617a6453,6458 ! 3248: > * COBLK ! 3249: > * ! 3250: > * THE ROUTINE FOR A COBLK IS NEVER EXECUTED ! 3251: > * ! 3252: > B$COP ENT BL$CO ENTRY POINT (COBLK) ! 3253: > * ! 3254: 7646a6488,6489 ! 3255: > .IF .CNLD ! 3256: > .ELSE ! 3257: 7657,7658d6499 ! 3258: < .IF .CNLD ! 3259: < .ELSE ! 3260: 7671,7676c6512 ! 3261: < .IF .CNRA ! 3262: < BSW XR,3 SWITCH ON TYPE ! 3263: < .ELSE ! 3264: < BSW XR,4 SWITCH ON TYPE ! 3265: < .FI ! 3266: < IFF 0,BEFC7 NO CONVERSION NEEDED ! 3267: --- ! 3268: > BSW XR,5,BEFC7 SWITCH ON EFTAR TYPE ! 3269: 7682a6519,6522 ! 3270: > .IF .CNBF ! 3271: > .ELSE ! 3272: > IFF 4,BEFCA BUFFER ! 3273: > .FI ! 3274: 7689c6529 ! 3275: < ERR 039,EXTERNAL FUNCTION ARGUMENT IS NOT STRING ! 3276: --- ! 3277: > ERR 045,EXTERNAL FUNCTION ARGUMENT IS NOT STRING ! 3278: 7700c6540 ! 3279: < ERR 040,EXTERNAL FUNCTION ARGUMENT IS NOT INTEGER ! 3280: --- ! 3281: > ERR 046,EXTERNAL FUNCTION ARGUMENT IS NOT INTEGER ! 3282: 7710,7711c6550 ! 3283: < ERR 265,EXTERNAL FUNCTION ARGUMENT IS NOT REAL ! 3284: < .FI ! 3285: --- ! 3286: > ERR 047,EXTERNAL FUNCTION ARGUMENT IS NOT REAL ! 3287: 7714a6554,6570 ! 3288: > .FI ! 3289: > .IF .CNBF ! 3290: > .ELSE ! 3291: > BRN BEFC5 MERGE ! 3292: > * ! 3293: > * HERE TO CONVERT BUFFER ! 3294: > * ! 3295: > BEFCA MOV (XT),XR LOAD ARGUMENT ! 3296: > MOV WC,BEFOF SAVE OFFSET ! 3297: > MOV XL,-(XS) SAVE EFBLK PTR ! 3298: > JSR GTBUF GET A BUFFER ! 3299: > ERR 259,EXTERNAL FUNCTION ARGUMENT IS NOT BUFFER ! 3300: > MOV (XS)+,XL RESTORE EFBLK PTR ! 3301: > * ! 3302: > * INTEGER AND REAL CASE MERGES HERE ! 3303: > * ! 3304: > .FI ! 3305: 7739c6595 ! 3306: < MOV EFRSL(XL),WB GET RESULT TYPE ID ! 3307: --- ! 3308: > MOV EFRSL(XL),WB GET RESULT TYPE ! 3309: 7764a6621 ! 3310: > BEQ WB,=NUM03,BEF10 YES JUMP ! 3311: 7765a6623,6627 ! 3312: > .IF .CNBF ! 3313: > .ELSE ! 3314: > MOV =B$BCT,WA BUFFER ! 3315: > BEQ WB,=NUM04,BEF10 YES JUMP ! 3316: > .FI ! 3317: 7780d6641 ! 3318: < EJC ! 3319: 7811,7812c6672 ! 3320: < BFFC2 ERB 041,FIELD FUNCTION ARGUMENT IS WRONG DATATYPE ! 3321: < EJC ! 3322: --- ! 3323: > BFFC2 ERB 048,FIELD FUNCTION ARGUMENT IS WRONG DATATYPE ! 3324: 7814,7815d6673 ! 3325: < * FFBLK (CONTINUED) ! 3326: < * ! 3327: 7851d6708 ! 3328: < EJC ! 3329: 7858d6714 ! 3330: < EJC ! 3331: 7871d6726 ! 3332: < EJC ! 3333: 7924c6779 ! 3334: < WTB WA CONVERT NO. OF ARGS TO BYTES OFFSET ! 3335: --- ! 3336: > WTB WA CONVERT NO. OF ARGS TO BAUS OFFSET ! 3337: 7989c6844 ! 3338: < * HERE IF &PROFILE = 1 ! 3339: --- ! 3340: > * HERE IF PROFILE = 1 ! 3341: 7998c6853 ! 3342: < * HERE IF &PROFILE = 2 ! 3343: --- ! 3344: > * HERE IF PROFILE = 2 ! 3345: 8007a6863 ! 3346: > EJC ! 3347: 8008a6865,6866 ! 3348: > * PFBLK (CONTINUED) ! 3349: > * ! 3350: 8078c6936 ! 3351: < WTB WB CONVERT TO BYTE OFFSET ! 3352: --- ! 3353: > WTB WB CONVERT TO BAU OFFSET ! 3354: 8095,8096c6953 ! 3355: < JSR PRTCH PRINT TO TERMINATE OUTPUT ! 3356: < JSR PRTNL TERMINATE PRINT LINE ! 3357: --- ! 3358: > JSR PRTCF PRINT TO TERMINATE OUTPUT ! 3359: 8122d6978 ! 3360: < EJC ! 3361: 8133d6988 ! 3362: < EJC ! 3363: 8140d6994 ! 3364: < EJC ! 3365: 8147d7000 ! 3366: < EJC ! 3367: 8176d7028 ! 3368: < EJC ! 3369: 8178,8179d7029 ! 3370: < * VRBLK (CONTINUED) ! 3371: < * ! 3372: 8185,8186c7035 ! 3373: < ERB 042,ATTEMPT TO CHANGE VALUE OF PROTECTED VARIABLE ! 3374: < EJC ! 3375: --- ! 3376: > ERB 049,ATTEMPT TO CHANGE VALUE OF PROTECTED VARIABLE ! 3377: 8188,8189d7036 ! 3378: < * VRBLK (CONTINUED) ! 3379: < * ! 3380: 8199d7045 ! 3381: < EJC ! 3382: 8201,8202d7046 ! 3383: < * VRBLK (CONTINUED) ! 3384: < * ! 3385: 8223d7066 ! 3386: < EJC ! 3387: 8225,8226d7067 ! 3388: < * VRBLK (CONTINUED) ! 3389: < * ! 3390: 8252,8253c7093 ! 3391: < JSR PRTCH PRINT IT ! 3392: < JSR PRTNL TERMINATE LINE ! 3393: --- ! 3394: > JSR PRTCF PRINT IT ! 3395: 8286d7125 ! 3396: < EJC ! 3397: 8593a7433,7434 ! 3398: > .IF .CNFN ! 3399: > .ELSE ! 3400: 8596,8597d7436 ! 3401: < * COMPOUNT PATTERN STRUCTURES (CONTINUED) ! 3402: < * ! 3403: 8627c7466,7467 ! 3404: < * STACK BACK PAST THE INNTER STACK BASE CREATED BY P$FNA ! 3405: --- ! 3406: > * STACK BACK PAST THE INNER STACK BASE CREATED BY P$FNA ! 3407: > .FI ! 3408: 8734d7573 ! 3409: < EJC ! 3410: 8743d7581 ! 3411: < EJC ! 3412: 8767d7604 ! 3413: < EJC ! 3414: 8784d7620 ! 3415: < EJC ! 3416: 8809d7644 ! 3417: < EJC ! 3418: 8811a7647 ! 3419: > * EXPRESSION ARGUMENT CASE MERGES ! 3420: 8817,8820c7653 ! 3421: < * ! 3422: < * EXPRESSION ARGUMENT CASE MERGES HERE ! 3423: < * ! 3424: < PANY1 BEQ WB,PMSSL,FAILP FAIL IF NO CHARACTERS LEFT ! 3425: --- ! 3426: > BEQ WB,PMSSL,FAILP FAIL IF NO CHARACTERS LEFT ! 3427: 8825c7658 ! 3428: < WTB WA CHANGE TO BYTE OFFSET ! 3429: --- ! 3430: > WTB WA CHANGE TO BAU OFFSET ! 3431: 8832d7664 ! 3432: < EJC ! 3433: 8838a7671 ! 3434: > MOV =P$ANY,WA PCODE FOR NEW NODE ! 3435: 8840c7673 ! 3436: < ERR 043,ANY EVALUATED ARGUMENT IS NOT STRING ! 3437: --- ! 3438: > ERR 050,ANY EVALUATED ARGUMENT IS NOT STRING ! 3439: 8842c7675 ! 3440: < PPM PANY1 MERGE MULTI-CHAR CASE IF OK ! 3441: --- ! 3442: > BRI XL MERGE MULTI-CHAR CASE IF OK ! 3443: 8859d7691 ! 3444: < EJC ! 3445: 8922a7755 ! 3446: > MOV =P$BRK,WA PCODE FOR NEW NODE ! 3447: 8924c7757 ! 3448: < ERR 044,BREAK EVALUATED ARGUMENT IS NOT STRING ! 3449: --- ! 3450: > ERR 051,BREAK EVALUATED ARGUMENT IS NOT STRING ! 3451: 8926,8927c7759 ! 3452: < PPM PBRK1 MERGE WITH MULTI-CHAR CASE IF OK ! 3453: < EJC ! 3454: --- ! 3455: > BRI XL MERGE WITH MULTI-CHAR CASE IF OK ! 3456: 8950a7783 ! 3457: > * EXPRESSION ARGUMENT CASE MERGES ! 3458: 8956,8959c7789 ! 3459: < * ! 3460: < * EXPRESSION ARGUMENT MERGES HERE ! 3461: < * ! 3462: < PBRK1 MOV PMSSL,WC LOAD SUBJECT STRING LENGTH ! 3463: --- ! 3464: > MOV PMSSL,WC LOAD SUBJECT STRING LENGTH ! 3465: 8971c7801 ! 3466: < WTB WA CONVERT TO BYTE OFFSET ! 3467: --- ! 3468: > WTB WA CONVERT TO BAU OFFSET ! 3469: 8993d7822 ! 3470: < EJC ! 3471: 9004a7834 ! 3472: > MOV =P$BRK,WA PCODE FOR NEW NODE ! 3473: 9006c7836 ! 3474: < ERR 045,BREAKX EVALUATED ARGUMENT IS NOT STRING ! 3475: --- ! 3476: > ERR 052,BREAKX EVALUATED ARGUMENT IS NOT STRING ! 3477: 9008,9009c7838 ! 3478: < PPM PBRK1 MERGE WITH BREAK IF ALL OK ! 3479: < EJC ! 3480: --- ! 3481: > BRI XL MERGE WITH BREAK IF ALL OK ! 3482: 9060c7889 ! 3483: < ERR 046,EXPRESSION DOES NOT EVALUATE TO PATTERN ! 3484: --- ! 3485: > ERR 053,EXPRESSION DOES NOT EVALUATE TO PATTERN ! 3486: 9068c7897,7908 ! 3487: < BRN PSTR1 ELSE MERGE WITH STRING CIRCUIT ! 3488: --- ! 3489: > MOV XR,PSAVE SAVE NODE PTR ! 3490: > MOV R$PMS,XR LOAD SUBJECT STRING PTR ! 3491: > PLC XR,WB POINT TO CURRENT CHAR ! 3492: > ADD SCLEN(XL),WB COMPUTE NEW CURSOR POSITION ! 3493: > BGT WB,PMSSL,FAILP FAIL IF PAST END OF STRING ! 3494: > MOV WB,PSAVC SAVE UPDATED CURSOR ! 3495: > MOV SCLEN(XL),WA NUMBER OF CHARS TO COMPARE ! 3496: > PLC XL POINT TO TEST STRING CHARS ! 3497: > CMC FAILP,FAILP COMPARE, FAIL IF UNEQUAL ! 3498: > MOV PSAVE,XR IF ALL MATCHED, RESTORE NODE PTR ! 3499: > MOV PSAVC,WB RESTORE UPDATED CURSOR ! 3500: > BRN SUCCP AND SUCCEED ! 3501: 9093d7932 ! 3502: < EJC ! 3503: 9102d7940 ! 3504: < * ! 3505: 9114c7952,7953 ! 3506: < EJC ! 3507: --- ! 3508: > .IF .CNFN ! 3509: > .ELSE ! 3510: 9128d7966 ! 3511: < EJC ! 3512: 9137d7974 ! 3513: < EJC ! 3514: 9155d7991 ! 3515: < EJC ! 3516: 9163a8000 ! 3517: > .FI ! 3518: 9180d8016 ! 3519: < EJC ! 3520: 9232d8067 ! 3521: < EJC ! 3522: 9251,9254c8086 ! 3523: < * ! 3524: < * EXPRESSION ARGUMENT CASE MERGES HERE ! 3525: < * ! 3526: < PLEN1 ADD PARM1(XR),WB PUSH CURSOR INDICATED AMOUNT ! 3527: --- ! 3528: > ADD PARM1(XR),WB PUSH CURSOR INDICATED AMOUNT ! 3529: 9257d8088 ! 3530: < EJC ! 3531: 9265,9266c8096,8097 ! 3532: < ERR 047,LEN EVALUATED ARGUMENT IS NOT INTEGER ! 3533: < ERR 048,LEN EVALUATED ARGUMENT IS NEGATIVE OR TOO LARGE ! 3534: --- ! 3535: > ERR 054,LEN EVALUATED ARGUMENT IS NOT INTEGER ! 3536: > ERR 055,LEN EVALUATED ARGUMENT IS NEGATIVE OR TOO LARGE ! 3537: 9268c8099,8101 ! 3538: < PPM PLEN1 MERGE WITH NORMAL CIRCUIT IF OK ! 3539: --- ! 3540: > ADD PARM1(XR),WB PUSH CURSOR INDICATED AMOUNT ! 3541: > BLE WB,PMSSL,SUCCP SUCCEED IF NOT OFF END ! 3542: > BRN FAILP ELSE FAIL ! 3543: 9275a8109 ! 3544: > MOV =P$NAY,WA PCODE FOR NEW NODE ! 3545: 9277c8111 ! 3546: < ERR 049,NOTANY EVALUATED ARGUMENT IS NOT STRING ! 3547: --- ! 3548: > ERR 056,NOTANY EVALUATED ARGUMENT IS NOT STRING ! 3549: 9279c8113 ! 3550: < PPM PNAY1 MERGE WITH MULTI-CHAR CASE IF OK ! 3551: --- ! 3552: > BRI XL MERGE WITH MULTI-CHAR CASE IF OK ! 3553: 9296a8131 ! 3554: > * EXPRESSION ARGUMENT CASE MERGES ! 3555: 9302,9305c8137 ! 3556: < * ! 3557: < * EXPRESSION ARGUMENT CASE MERGES HERE ! 3558: < * ! 3559: < PNAY1 BEQ WB,PMSSL,FAILP FAIL IF NO CHARACTERS LEFT ! 3560: --- ! 3561: > BEQ WB,PMSSL,FAILP FAIL IF NO CHARACTERS LEFT ! 3562: 9309c8141 ! 3563: < WTB WA CONVERT TO BYTE OFFSET ! 3564: --- ! 3565: > WTB WA CONVERT TO BAU OFFSET ! 3566: 9405a8238 ! 3567: > ZER R$PMB CLEAR POSSIBLE BCBLK PTR FOR GBCOL ! 3568: 9418a8252 ! 3569: > MOV XL,-(XS) STACK SUBJECT STRING POINTER ! 3570: 9422c8256 ! 3571: < .FI ! 3572: --- ! 3573: > ZER R$PMB CLEAR BCBLK PTR FOR GBCOL ! 3574: 9426a8261 ! 3575: > .FI ! 3576: 9435,9438c8270 ! 3577: < * ! 3578: < * EXPRESSION ARGUMENT CASE MERGES HERE ! 3579: < * ! 3580: < PPOS1 BEQ WB,PARM1(XR),SUCCP SUCCEED IF AT RIGHT LOCATION ! 3581: --- ! 3582: > BEQ WB,PARM1(XR),SUCCP SUCCEED IF AT RIGHT LOCATION ! 3583: 9440d8271 ! 3584: < EJC ! 3585: 9448,9449c8279,8280 ! 3586: < ERR 050,POS EVALUATED ARGUMENT IS NOT INTEGER ! 3587: < ERR 051,POS EVALUATED ARGUMENT IS NEGATIVE OR TOO LARGE ! 3588: --- ! 3589: > ERR 057,POS EVALUATED ARGUMENT IS NOT INTEGER ! 3590: > ERR 058,POS EVALUATED ARGUMENT IS NEGATIVE OR TOO LARGE ! 3591: 9451c8282,8283 ! 3592: < PPM PPOS1 MERGE WITH NORMAL CASE IF OK ! 3593: --- ! 3594: > BEQ WB,PARM1(XR),SUCCP SUCCEED IF AT RIGHT LOCATION ! 3595: > BRN FAILP ELSE FAIL ! 3596: 9465d8296 ! 3597: < EJC ! 3598: 9476d8306 ! 3599: < EJC ! 3600: 9493d8322 ! 3601: < EJC ! 3602: 9513d8341 ! 3603: < EJC ! 3604: 9521,9522c8349,8350 ! 3605: < ERR 052,RPOS EVALUATED ARGUMENT IS NOT INTEGER ! 3606: < ERR 053,RPOS EVALUATED ARGUMENT IS NEGATIVE OR TOO LARGE ! 3607: --- ! 3608: > ERR 059,RPOS EVALUATED ARGUMENT IS NOT INTEGER ! 3609: > ERR 060,RPOS EVALUATED ARGUMENT IS NEGATIVE OR TOO LARGE ! 3610: 9524,9525c8352,8353 ! 3611: < PPM PRPS1 MERGE WITH NORMAL CASE IF OK ! 3612: < EJC ! 3613: --- ! 3614: > MOV =P$RPS,XL CONTINUATION ROUTINE ! 3615: > BRI XL ENTER ROUTINE ! 3616: 9527a8356 ! 3617: > * EXPRESSION ARGUMENT CASE MERGES ! 3618: 9532,9535c8361 ! 3619: < * ! 3620: < * EXPRESSION ARGUMENT CASE MERGES HERE ! 3621: < * ! 3622: < PRPS1 MOV PMSSL,WC GET LENGTH OF STRING ! 3623: --- ! 3624: > MOV PMSSL,WC GET LENGTH OF STRING ! 3625: 9541a8368 ! 3626: > * EXPRESSION ARGUMENT CASE MERGES ! 3627: 9546,9549c8373 ! 3628: < * ! 3629: < * EXPRESSION ARGUMENT CASE MERGES HERE ! 3630: < * ! 3631: < PRTB1 MOV WB,WC SAVE INITIAL CURSOR ! 3632: --- ! 3633: > MOV WB,WC SAVE INITIAL CURSOR ! 3634: 9555d8378 ! 3635: < EJC ! 3636: 9563,9564c8386,8387 ! 3637: < ERR 054,RTAB EVALUATED ARGUMENT IS NOT INTEGER ! 3638: < ERR 055,RTAB EVALUATED ARGUMENT IS NEGATIVE OR TOO LARGE ! 3639: --- ! 3640: > ERR 061,RTAB EVALUATED ARGUMENT IS NOT INTEGER ! 3641: > ERR 062,RTAB EVALUATED ARGUMENT IS NEGATIVE OR TOO LARGE ! 3642: 9566c8389,8390 ! 3643: < PPM PRTB1 MERGE WITH NORMAL CASE IF SUCCESS ! 3644: --- ! 3645: > MOV =P$RTB,XL CONTINUATION ROUTINE ! 3646: > BRI XL ENTER ROUTINE ! 3647: 9573a8398 ! 3648: > MOV =P$SPN,WA PCODE FOR NEW NODE ! 3649: 9575c8400 ! 3650: < ERR 056,SPAN EVALUATED ARGUMENT IS NOT STRING ! 3651: --- ! 3652: > ERR 063,SPAN EVALUATED ARGUMENT IS NOT STRING ! 3653: 9577,9578c8402 ! 3654: < PPM PSPN1 MERGE WITH MULTI-CHAR CASE IF OK ! 3655: < EJC ! 3656: --- ! 3657: > BRI XL MERGE WITH MULTI-CHAR CASE IF OK ! 3658: 9580a8405 ! 3659: > * EXPRESSION ARGUMENT CASE MERGES ! 3660: 9586,9589c8411 ! 3661: < * ! 3662: < * EXPRESSION ARGUMENT CASE MERGES HERE ! 3663: < * ! 3664: < PSPN1 MOV PMSSL,WC COPY SUBJECT STRING LENGTH ! 3665: --- ! 3666: > MOV PMSSL,WC COPY SUBJECT STRING LENGTH ! 3667: 9601c8423 ! 3668: < WTB WA CONVERT TO BYTE OFFSET ! 3669: --- ! 3670: > WTB WA CONVERT TO BAU OFFSET ! 3671: 9641d8462 ! 3672: < EJC ! 3673: 9643c8464 ! 3674: < * MULTI-CHARACTER STRING ! 3675: --- ! 3676: > * MULTI-CHARACTER STRING (MERGE FROM P$EXA) ! 3677: 9652,9655c8473 ! 3678: < * ! 3679: < * MERGE HERE AFTER EVALUATING EXPRESSION WITH STRING VALUE ! 3680: < * ! 3681: < PSTR1 MOV XR,PSAVE SAVE NODE POINTER ! 3682: --- ! 3683: > MOV XR,PSAVE SAVE NODE POINTER ! 3684: 9682a8501 ! 3685: > * EXPRESSION CASE MERGES ! 3686: 9687,9690c8506 ! 3687: < * ! 3688: < * EXPRESSION ARGUMENT CASE MERGES HERE ! 3689: < * ! 3690: < PTAB1 BGT WB,PARM1(XR),FAILP FAIL IF TOO FAR ALREADY ! 3691: --- ! 3692: > BGT WB,PARM1(XR),FAILP FAIL IF TOO FAR ALREADY ! 3693: 9694d8509 ! 3694: < EJC ! 3695: 9702,9703c8517,8518 ! 3696: < ERR 057,TAB EVALUATED ARGUMENT IS NOT INTEGER ! 3697: < ERR 058,TAB EVALUATED ARGUMENT IS NEGATIVE OR TOO LARGE ! 3698: --- ! 3699: > ERR 064,TAB EVALUATED ARGUMENT IS NOT INTEGER ! 3700: > ERR 065,TAB EVALUATED ARGUMENT IS NEGATIVE OR TOO LARGE ! 3701: 9705,9706c8520,8521 ! 3702: < PPM PTAB1 MERGE WITH NORMAL CASE IF OK ! 3703: < EJC ! 3704: --- ! 3705: > MOV =P$TAB,XL CONTINUATION ROUTINE ! 3706: > BRI XL ENTER ROUTINE ! 3707: 9721d8535 ! 3708: < EJC ! 3709: 9764c8578 ! 3710: < ERR 059,ANY ARGUMENT IS NOT STRING OR EXPRESSION ! 3711: --- ! 3712: > ERR 066,ANY ARGUMENT IS NOT STRING OR EXPRESSION ! 3713: 9766d8579 ! 3714: < EJC ! 3715: 9768a8582 ! 3716: > EJC ! 3717: 9776c8590 ! 3718: < ERB 275,APPEND FIRST ARGUMENT IS NOT BUFFER ! 3719: --- ! 3720: > ERB 067,APPEND FIRST ARGUMENT IS NOT BUFFER ! 3721: 9780,9781c8594,8597 ! 3722: < SAPN1 JSR APNDB DO THE APPEND ! 3723: < ERR 276,APPEND SECOND ARGUMENT IS NOT STRING ! 3724: --- ! 3725: > SAPN1 MOV BCLEN(XR),WA OFFSET TO BUFFER END ! 3726: > ZER WB NO CHARS TO BE REPLACED ! 3727: > JSR INSBF DO THE APPEND ! 3728: > ERR 068,APPEND SECOND ARGUMENT IS NOT STRING ! 3729: 9784d8599 ! 3730: < EJC ! 3731: 9785a8601 ! 3732: > EJC ! 3733: 9796c8612 ! 3734: < WTB WB CONVERT TO BYTES ! 3735: --- ! 3736: > WTB WB CONVERT TO BAUS ! 3737: 9819c8635 ! 3738: < SAPP3 ERB 060,APPLY FIRST ARG IS NOT NATURAL VARIABLE NAME ! 3739: --- ! 3740: > SAPP3 ERB 069,APPLY FIRST ARG IS NOT NATURAL VARIABLE NAME ! 3741: 9841c8657 ! 3742: < ERR 061,ARBNO ARGUMENT IS NOT PATTERN ! 3743: --- ! 3744: > ERR 070,ARBNO ARGUMENT IS NOT PATTERN ! 3745: 9857c8673 ! 3746: < ERR 062,ARG SECOND ARGUMENT IS NOT INTEGER ! 3747: --- ! 3748: > ERR 253,ARG SECOND ARGUMENT IS NOT INTEGER ! 3749: 9874c8690 ! 3750: < SARG1 ERB 063,ARG FIRST ARGUMENT IS NOT PROGRAM FUNCTION NAME ! 3751: --- ! 3752: > SARG1 ERB 252,ARG FIRST ARGUMENT IS NOT PROGRAM FUNCTION NAME ! 3753: 9892c8708 ! 3754: < WTB WA CONVERT LENGTH TO BYTES ! 3755: --- ! 3756: > WTB WA CONVERT LENGTH TO BAUS ! 3757: 9914c8730 ! 3758: < ERR 064,ARRAY FIRST ARGUMENT IS NOT INTEGER OR STRING ! 3759: --- ! 3760: > ERR 071,ARRAY FIRST ARGUMENT IS NOT INTEGER OR STRING ! 3761: 9938c8754 ! 3762: < ERR 065,ARRAY FIRST ARGUMENT LOWER BOUND IS NOT INTEGER ! 3763: --- ! 3764: > ERR 072,ARRAY FIRST ARGUMENT LOWER BOUND IS NOT INTEGER ! 3765: 9950,9951c8766,8772 ! 3766: < SAR04 JSR GTINT CONVERT HIGH BOUND TO INTEGER ! 3767: < ERR 066,ARRAY FIRST ARGUMENT UPPER BOUND IS NOT INTEGER ! 3768: --- ! 3769: > SAR04 BNZ WA,SAR4A SKIP IF DELIMITER 1 OR 2 ! 3770: > BNZ XSCNB,SAR10 JUMP IF ILLEGALLY PLACED BLANK ! 3771: > * ! 3772: > * CHECK FOR INTEGER BOUND ! 3773: > * ! 3774: > SAR4A JSR GTINT CONVERT HIGH BOUND TO INTEGER ! 3775: > ERR 073,ARRAY FIRST ARGUMENT UPPER BOUND IS NOT INTEGER ! 3776: 9989c8810 ! 3777: < WTB WB ELSE CONVERT TO LENGTH IN BYTES ! 3778: --- ! 3779: > WTB WB ELSE CONVERT TO LENGTH IN BAUS ! 3780: 10007c8828 ! 3781: < MOV WA,WC SAVE LENGTH IN BYTES ! 3782: --- ! 3783: > MOV WA,WC SAVE LENGTH IN BAUS ! 3784: 10024c8845 ! 3785: < MOV WC,ARLEN(XR) STORE LENGTH IN BYTES ! 3786: --- ! 3787: > MOV WC,ARLEN(XR) STORE LENGTH IN BAUS ! 3788: 10044c8865 ! 3789: < SAR10 ERB 067,ARRAY DIMENSION IS ZERO,NEGATIVE OR OUT OF RANGE ! 3790: --- ! 3791: > SAR10 ERB 074,BAD DIMENSION, ZERO, NEGATIVE OR OUT OF RANGE ! 3792: 10048c8869 ! 3793: < SAR11 ERB 068,ARRAY SIZE EXCEEDS MAXIMUM PERMITTED ! 3794: --- ! 3795: > SAR11 ERB 075,ARRAY SIZE EXCEEDS MAXIMUM PERMITTED ! 3796: 10050,10051d8870 ! 3797: < .IF .CNBF ! 3798: < .ELSE ! 3799: 10053,10078d8871 ! 3800: < * BUFFER ! 3801: < * ! 3802: < S$BUF ENT ENTRY POINT ! 3803: < MOV (XS)+,XL GET INITIAL VALUE ! 3804: < MOV (XS)+,XR GET REQUESTED ALLOCATION ! 3805: < JSR GTINT CONVERT TO INTEGER ! 3806: < ERR 269,BUFFER FIRST ARGUMENT IS NOT INTEGER ! 3807: < LDI ICVAL(XR) GET VALUE ! 3808: < ILE SBF01 BRANCH IF NEGATIVE OR ZERO ! 3809: < MFI WA,SBF02 MOVE WITH OVERFLOW CHECK ! 3810: < JSR ALOBF ALLOCATE THE BUFFER ! 3811: < JSR APNDB COPY IT IN ! 3812: < ERR 270,BUFFER SECOND ARGUMENT IS NOT STRING OR BUFFER ! 3813: < ERR 271,BUFFER INITIAL VALUE TOO BIG FOR ALLOCATION ! 3814: < BRN EXSID EXIT SETTING IDVAL ! 3815: < * ! 3816: < * HERE FOR INVALID ALLOCATION SIZE ! 3817: < * ! 3818: < SBF01 ERB 272,BUFFER FIRST ARGUMENT IS NOT POSITIVE ! 3819: < * ! 3820: < * HERE FOR ALLOCATION SIZE INTEGER OVERFLOW ! 3821: < * ! 3822: < SBF02 ERB 273,BUFFER SIZE IS TOO BIG ! 3823: < EJC ! 3824: < .FI ! 3825: < * ! 3826: 10086c8879 ! 3827: < ERR 069,BREAK ARGUMENT IS NOT STRING OR EXPRESSION ! 3828: --- ! 3829: > ERR 076,BREAK ARGUMENT IS NOT STRING OR EXPRESSION ! 3830: 10100c8893 ! 3831: < ERR 070,BREAKX ARGUMENT IS NOT STRING OR EXPRESSION ! 3832: --- ! 3833: > ERR 077,BREAKX ARGUMENT IS NOT STRING OR EXPRESSION ! 3834: 10113a8907,8908 ! 3835: > .IF .CNBF ! 3836: > .ELSE ! 3837: 10116c8911 ! 3838: < * CHAR ! 3839: --- ! 3840: > * BUFFER ! 3841: 10118,10130c8913,8923 ! 3842: < S$CHR ENT ENTRY POINT ! 3843: < JSR GTSMI CONVERT ARG TO INTEGER ! 3844: < ERR 281,CHAR ARGUMENT NOT INTEGER ! 3845: < PPM SCHR1 TOO BIG ERROR EXIT ! 3846: < BGE WC,=CFP$A,SCHR1 SEE IF OUT OF RANGE OF HOST SET ! 3847: < MOV =NUM01,WA IF NOT SET SCBLK ALLOCATION ! 3848: < MOV WC,WB SAVE CHAR CODE ! 3849: < JSR ALOCS ALLOCATE 1 BAU SCBLK ! 3850: < MOV XR,XL COPY SCBLK POINTER ! 3851: < PSC XL GET SET TO STUFF CHAR ! 3852: < SCH WB,(XL)+ STUFF IT ! 3853: < ZER XL CLEAR SLOP IN XL ! 3854: < BRN EXIXR EXIT WITH SCBLK POINTER ! 3855: --- ! 3856: > S$BUF ENT ENTRY POINT ! 3857: > MOV (XS)+,XL GET INITIAL STRING ! 3858: > JSR GTSMI CONVERT MEMORY REQUEST TO INTEGER ! 3859: > ERR 078,BUFFER FIRST ARGUMENT IS NOT INTEGER ! 3860: > PPM SBF01 FAIL IF OUT OF RANGE ! 3861: > MOV WC,WA MOVE LENGTH TO CORRECT REGISTER ! 3862: > JSR ALOBF ALLOCATE THE BUFFER ! 3863: > JSR INSBF COPY INITIAL ARG IN ! 3864: > ERR 079,BUFFER SECOND ARGUMENT IS NOT STRING OR BUFFER ! 3865: > ERR 080,BUFFER INITIAL VALUE TOO BIG FOR ALLOCATION ! 3866: > BRN EXSID EXIT SETTING IDVAL ! 3867: 10132c8925 ! 3868: < * HERE IF CHAR ARGUMENT IS OUT OF RANGE ! 3869: --- ! 3870: > * HERE FOR INVALID ALLOCATION SIZE ! 3871: 10134c8927,8928 ! 3872: < SCHR1 ERB 282,CHAR ARGUMENT NOT IN RANGE ! 3873: --- ! 3874: > SBF01 ERB 081,BUFFER FIRST ARGUMENT IS OUT OF RANGE ! 3875: > .FI ! 3876: 10141c8935 ! 3877: < ERR 071,CLEAR ARGUMENT IS NOT STRING ! 3878: --- ! 3879: > ERR 082,CLEAR ARGUMENT IS NOT STRING ! 3880: 10145c8939 ! 3881: < * THE LIST ARE FALGGED BY SETTING VRGET OF VRBLK TO ZERO. ! 3882: --- ! 3883: > * THE LIST ARE FLAGGED BY SETTING VRGET OF VRBLK TO ZERO. ! 3884: 10151c8945 ! 3885: < ERR 072,CLEAR ARGUMENT HAS NULL VARIABLE NAME ! 3886: --- ! 3887: > PPM SCLR7 ERRONEOUS NAME ! 3888: 10153a8948 ! 3889: > BNZ XSCNB,SCLR7 BADLY PLACED BLANK ! 3890: 10181c8976 ! 3891: < * PRROTECTED VARIABLES (ARB, ETC) ARE EXEMPT ! 3892: --- ! 3893: > * PROTECTED VARIABLES (ARB ETC) ARE EXEMPT ! 3894: 10183,10184c8978,8979 ! 3895: < SCLR5 BEQ VRSTO(XR),=B$VRE,SCLR4 CHECK FOR PROTECTED VARIABLE (REG05) ! 3896: < MOV XR,XL COPY VRBLK POINTER (REG05) ! 3897: --- ! 3898: > SCLR5 BEQ VRSTO(XR),=B$VRE,SCLR4 CHECK FOR PROTECTED VARIABLE ! 3899: > MOV XR,XL COPY VRBLK POINTER ! 3900: 10196a8992,8995 ! 3901: > * ! 3902: > * ERROR POINT ! 3903: > * ! 3904: > SCLR7 ERB 083,NULL VARIABLE NAME OR ILLEGAL BLANK IN CLEAR ARG ! 3905: 10213c9012 ! 3906: < ERR 073,COLLECT ARGUMENT IS NOT INTEGER ! 3907: --- ! 3908: > ERR 084,COLLECT ARGUMENT IS NOT INTEGER ! 3909: 10220c9019 ! 3910: < BTW WA CONVERT BYTES TO WORDS ! 3911: --- ! 3912: > BTW WA CONVERT BAUS TO WORDS ! 3913: 10231c9030 ! 3914: < S$CNV ENT ENTRY POINT ! 3915: --- ! 3916: > S$CVT ENT ENTRY POINT ! 3917: 10233,10235c9032,9036 ! 3918: < ERR 074,CONVERT SECOND ARGUMENT IS NOT STRING ! 3919: < .IF .CULC ! 3920: < JSR FLSTG FOLD LOWER CASE TO UPPER CASE ! 3921: --- ! 3922: > ERR 085,CONVERT SECOND ARGUMENT IS NOT STRING ! 3923: > .IF .CASL ! 3924: > MOV XR,XL COPY STRING PTR TO XL ! 3925: > ZER WB ZERO OFFSET ! 3926: > JSR SBSTG CONVERT CASE OF ARG IF NECESSARY ! 3927: 10253c9054 ! 3928: < MOV WA,WC SAVE LENGTH OF ARGUMENT STRING ! 3929: --- ! 3930: > MOV SCLEN(XR),WC SAVE LENGTH OF ARGUMENT STRING ! 3931: 10287c9088 ! 3932: < IFF CNVRT,SCV08 REAL ! 3933: --- ! 3934: > IFF 9,SCV08 REAL ! 3935: 10371c9172 ! 3936: < WTB WA CONVERT LENGTH TO BYTES ! 3937: --- ! 3938: > WTB WA CONVERT LENGTH TO BAUS ! 3939: 10441,10442c9242 ! 3940: < SCV28 MOV XR,-(XS) STACK STRING FOR PROCEDURE ! 3941: < JSR GTSTG CONVERT TO STRING ! 3942: --- ! 3943: > SCV28 JSR GTBUF CONVERT TO BUFFER ! 3944: 10444,10448d9243 ! 3945: < MOV XR,XL SAVE STRING POINTER ! 3946: < JSR ALOBF ALLOCATE BUFFER OF SAME SIZE ! 3947: < JSR APNDB COPY IN THE STRING ! 3948: < PPM ALREADY STRING - CANT FAIL TO CNV ! 3949: < PPM MUST BE ENOUGH ROOM ! 3950: 10450d9244 ! 3951: < EJC ! 3952: 10451a9246 ! 3953: > EJC ! 3954: 10456c9251 ! 3955: < JSR COPYB COPY THE BLOCK ! 3956: --- ! 3957: > JSR CBLCK COPY THE BLOCK ! 3958: 10458a9254,9270 ! 3959: > * ! 3960: > * CTI ! 3961: > * ! 3962: > S$CTI ENT ! 3963: > LDI INTV0 ZERO IN CASE NULL STRING ! 3964: > JSR GTSTG GET ARG AS A STRING ! 3965: > ERR 086,CTI ARGUMENT IS NOT A STRING ! 3966: > BZE WA,SCT01 SKIP IF NULL ! 3967: > PLC XR PREPARE TO READ THE CHARACTER ! 3968: > LCH WB,(XR) GET THE CHARACTER ! 3969: > MTI WB CONVERT TO INTEGER ! 3970: > ZER XR CLEAR GARBAGE ! 3971: > * ! 3972: > * MAKE ICBLK AND RETURN ! 3973: > * ! 3974: > SCT01 JSR ICBLD BUILD ICBLK ! 3975: > BRN EXIXR RETURN INTEGER RESULT ! 3976: 10465,10466c9277,9278 ! 3977: < ERR 075,DATA ARGUMENT IS NOT STRING ! 3978: < ERR 076,DATA ARGUMENT IS NULL ! 3979: --- ! 3980: > ERR 087,DATA ARGUMENT IS NOT STRING ! 3981: > ERR 088,DATA ARGUMENT IS NULL ! 3982: 10474c9286 ! 3983: < ERB 077,DATA ARGUMENT IS MISSING A LEFT PAREN ! 3984: --- ! 3985: > ERB 089,DATA ARGUMENT IS MISSING A LEFT PAREN ! 3986: 10478,10482d9289 ! 3987: < .IF .CULC ! 3988: < SDAT1 MOV SCLEN(XR),WA GET LENGTH ! 3989: < JSR FLSTG FOLD LOWER CASE TO UPPER CASE ! 3990: < MOV XR,XL SAVE NAME PTR ! 3991: < .ELSE ! 3992: 10484d9290 ! 3993: < .FI ! 3994: 10493c9299 ! 3995: < ERR 078,DATA ARGUMENT HAS NULL DATATYPE NAME ! 3996: --- ! 3997: > ERR 090,DATA ARGUMENT HAS NULL DATATYPE NAME ! 3998: 10504c9310 ! 3999: < ERB 079,DATA ARGUMENT IS MISSING A RIGHT PAREN ! 4000: --- ! 4001: > ERB 091,BAD BLANK OR MISSING RIGHT PAREN IN DATA ARG ! 4002: 10509c9315 ! 4003: < ERR 080,DATA ARGUMENT HAS NULL FIELD NAME ! 4004: --- ! 4005: > ERR 092,DATA ARGUMENT HAS NULL FIELD NAME ! 4006: 10521c9327 ! 4007: < WTB WA CONVERT LENGTH TO BYTES ! 4008: --- ! 4009: > WTB WA CONVERT LENGTH TO BAUS ! 4010: 10608c9414 ! 4011: < S$DEF ENT ENTRY POINT ! 4012: --- ! 4013: > S$DFN ENT ENTRY POINT ! 4014: 10619,10620c9425,9426 ! 4015: < ERR 081,DEFINE FIRST ARGUMENT IS NOT STRING ! 4016: < ERR 082,DEFINE FIRST ARGUMENT IS NULL ! 4017: --- ! 4018: > ERR 093,DEFINE FIRST ARGUMENT IS NOT STRING ! 4019: > ERR 094,DEFINE FIRST ARGUMENT IS NULL ! 4020: 10625c9431 ! 4021: < ERB 083,DEFINE FIRST ARGUMENT IS MISSING A LEFT PAREN ! 4022: --- ! 4023: > ERB 095,DEFINE FIRST ARGUMENT IS MISSING A LEFT PAREN ! 4024: 10630c9436 ! 4025: < ERR 084,DEFINE FIRST ARGUMENT HAS NULL FUNCTION NAME ! 4026: --- ! 4027: > ERR 096,DEFINE FIRST ARGUMENT HAS NULL FUNCTION NAME ! 4028: 10642,10643c9448,9454 ! 4029: < BNZ WA,SDF04 SKIP IF DELIMITER FOUND ! 4030: < ERB 085,NULL ARG NAME OR MISSING ) IN DEFINE FIRST ARG. ! 4031: --- ! 4032: > BZE WA,SDF14 FAIL IF RUNOUT ! 4033: > JSR GTNVR GET VRBLK POINTER ! 4034: > PPM SDF04 IGNORE NULL NAME ! 4035: > MOV XR,-(XS) STACK ARGUMENT VRBLK POINTER ! 4036: > ICV WB INCREMENT COUNTER ! 4037: > BEQ WA,=NUM02,SDF03 LOOP BACK IF STOPPED BY A COMMA ! 4038: > BRN SDF05 JUMP FOR RIGHT PAREN ! 4039: 10648c9459 ! 4040: < * HERE AFTER SCANNING AN ARGUMENT NAME ! 4041: --- ! 4042: > * NULL ARG FOUND. CONTINUE IF STOPPED BY COMMA ! 4043: 10650,10651c9461 ! 4044: < SDF04 BNE XR,=NULLS,SDF05 SKIP IF NON-NULL ! 4045: < BZE WB,SDF06 IGNORE NULL IF CASE OF NO ARGUMENTS ! 4046: --- ! 4047: > SDF04 BEQ WA,=NUM02,SDF03 LOOP IF COMMA ! 4048: 10653,10660d9462 ! 4049: < * HERE AFTER DEALING WITH THE CASE OF NO ARGUMENTS ! 4050: < * ! 4051: < SDF05 JSR GTNVR GET VRBLK POINTER ! 4052: < PPM SDF03 LOOP BACK TO IGNORE NULL NAME ! 4053: < MOV XR,-(XS) STACK ARGUMENT VRBLK POINTER ! 4054: < ICV WB INCREMENT COUNTER ! 4055: < BEQ WA,=NUM02,SDF03 LOOP BACK IF STOPPED BY A COMMA ! 4056: < * ! 4057: 10663c9465 ! 4058: < SDF06 MOV WB,DEFNA SAVE NUMBER OF ARGUMENTS ! 4059: --- ! 4060: > SDF05 MOV WB,DEFNA SAVE NUMBER OF ARGUMENTS ! 4061: 10668c9470 ! 4062: < SDF07 MOV =CH$CM,WC SET DELIMITER ONE = COMMA ! 4063: --- ! 4064: > SDF06 MOV =CH$CM,WC SET DELIMITER ONE = COMMA ! 4065: 10671,10672c9473,9474 ! 4066: < BNE XR,=NULLS,SDF08 SKIP IF NON-NULL ! 4067: < BZE WB,SDF09 IGNORE NULL IF CASE OF NO LOCALS ! 4068: --- ! 4069: > BNZ WA,SDF07 SKIP IF COMMA FOUND ! 4070: > BNZ XSCNB,SDF14 FAIL IF BAD BLANK, OK IF LAST LOC ! 4071: 10676,10677c9478,9479 ! 4072: < SDF08 JSR GTNVR GET VRBLK POINTER ! 4073: < PPM SDF07 LOOP BACK TO IGNORE NULL NAME ! 4074: --- ! 4075: > SDF07 JSR GTNVR GET VRBLK POINTER ! 4076: > PPM SDF08 IGNORE NULL NAME ! 4077: 10680c9482,9487 ! 4078: < BNZ WA,SDF07 LOOP BACK IF STOPPED BY A COMMA ! 4079: --- ! 4080: > BNZ WA,SDF06 LOOP BACK IF STOPPED BY A COMMA ! 4081: > BRN SDF09 JUMP FOR END OF STRING ! 4082: > * ! 4083: > * NULL LOCAL ! 4084: > * ! 4085: > SDF08 BNZ WA,SDF06 LOOP IF COMMA AFTER NULL LOCAL ! 4086: 10691c9498 ! 4087: < WTB WA CONVERT LENGTH TO BYTES ! 4088: --- ! 4089: > WTB WA CONVERT LENGTH TO BAUS ! 4090: 10734c9541,9545 ! 4091: < SDF13 ERB 086,DEFINE FUNCTION ENTRY POINT IS NOT DEFINED LABEL ! 4092: --- ! 4093: > SDF13 ERB 097,DEFINE FUNCTION ENTRY POINT IS NOT DEFINED LABEL ! 4094: > * ! 4095: > * ERRONEOUS ARG OR LOCAL ! 4096: > * ! 4097: > SDF14 ERB 098,BAD BLANK OR MISSING RIGHT PAREN IN DEFINE ARG ! 4098: 10742,10744c9553,9573 ! 4099: < ERR 087,DETACH ARGUMENT IS NOT APPROPRIATE NAME ! 4100: < JSR DTACH DETACH I/O ASSOCIATION FROM NAME ! 4101: < BRN EXNUL RETURN NULL RESULT ! 4102: --- ! 4103: > ERR 099,DETACH ARGUMENT IS NOT APPROPRIATE NAME ! 4104: > MOV WA,-(XS) KEEP OFFSET ! 4105: > ZER SDETF CLEAR FAIL FLAG ! 4106: > MOV =TRTIN,WB TRACE TYPE ! 4107: > ZER XR REMOVE TRBLK ! 4108: > JSR TRCHN REMOVE ANY INPUT ASSOCIATION ! 4109: > PPM SDET1 SKIP IF NO INPUT TRBLK ! 4110: > MNZ SDETF NOTE TRBLK REMOVED ! 4111: > * ! 4112: > * REPEAT FOR OUTPUT TRBLK ! 4113: > * ! 4114: > SDET1 MOV (XS)+,WA RECOVER OFFSET ! 4115: > MOV =TRTOU,WB TRTYP ! 4116: > JSR TRCHN REMOVE ANY OUTPUT ASSOCIATION ! 4117: > PPM SDET2 SKIP IF NO TRBLK ! 4118: > BRN EXNUL SUCCEED ! 4119: > * ! 4120: > * CHECK AT LEAST ONE TRBLK REMOVED ! 4121: > * ! 4122: > SDET2 BNZ SDETF,EXNUL SUCCEED IF SO ! 4123: > BRN EXFAL ELSE FAIL ! 4124: 10761,10762c9590,9591 ! 4125: < ERR 088,DUMP ARGUMENT IS NOT INTEGER ! 4126: < ERR 089,DUMP ARGUMENT IS NEGATIVE OR TOO LARGE ! 4127: --- ! 4128: > ERR 100,DUMP ARGUMENT IS NOT INTEGER ! 4129: > ERR 101,DUMP ARGUMENT IS NEGATIVE OR TOO LARGE ! 4130: 10771c9600 ! 4131: < ERR 090,DUPL SECOND ARGUMENT IS NOT INTEGER ! 4132: --- ! 4133: > ERR 102,DUPL SECOND ARGUMENT IS NOT INTEGER ! 4134: 10816c9645 ! 4135: < ERR 091,DUPL FIRST ARGUMENT IS NOT STRING OR PATTERN ! 4136: --- ! 4137: > ERR 103,DUPL FIRST ARGUMENT IS NOT STRING OR PATTERN ! 4138: 10848,10850c9677,9685 ! 4139: < JSR IOFCB CALL FCBLK ROUTINE ! 4140: < ERR 092,EJECT ARGUMENT IS NOT A SUITABLE NAME ! 4141: < PPM SEJC1 NULL ARGUMENT ! 4142: --- ! 4143: > MOV (XS)+,WB GET ARGUMENT ! 4144: > MOV WB,-(XS) RESTACK IT ! 4145: > JSR GTSTG CONVERT TO STRING ! 4146: > PPM SEJC2 FAIL IF CANT ! 4147: > BZE WA,SEJC1 SKIP IF NULL STRING ! 4148: > MOV WB,-(XS) RESTACK ORIGINAL ARG ! 4149: > JSR IOFTG CALL FILETAG ROUTINE ! 4150: > PPM SEJC2 FAIL ! 4151: > BZE WA,EXFAL FAIL IF NOT ASSOCIATED ! 4152: 10852,10854c9687,9688 ! 4153: < ERR 093,EJECT FILE DOES NOT EXIST ! 4154: < ERR 094,EJECT FILE DOES NOT PERMIT PAGE EJECT ! 4155: < ERR 095,EJECT CAUSED NON-RECOVERABLE OUTPUT ERROR ! 4156: --- ! 4157: > PPM EXFAL FAIL RETURN ! 4158: > PPM EROSI ERROR RETURN ! 4159: 10859a9694,9695 ! 4160: > PPM EXFAL FAIL RETURN ! 4161: > PPM EROSI ERROR RETURN ! 4162: 10860a9697,9700 ! 4163: > * ! 4164: > * ERROR POINT ! 4165: > * ! 4166: > SEJC2 ERB 104,EJECT ARGUMENT IS NOT A SUITABLE FILETAG ! 4167: 10866,10873c9706,9709 ! 4168: < JSR IOFCB CALL FCBLK ROUTINE ! 4169: < ERR 096,ENDFILE ARGUMENT IS NOT A SUITABLE NAME ! 4170: < ERR 097,ENDFILE ARGUMENT IS NULL ! 4171: < JSR SYSEN CALL ENDFILE ROUTINE ! 4172: < ERR 098,ENDFILE FILE DOES NOT EXIST ! 4173: < ERR 099,ENDFILE FILE DOES NOT PERMIT ENDFILE ! 4174: < ERR 100,ENDFILE CAUSED NON-RECOVERABLE OUTPUT ERROR ! 4175: < MOV XL,WB REMEMBER VRBLK PTR FROM IOFCB CALL ! 4176: --- ! 4177: > JSR GTSTG CONVERT SECOND ARG TO STRING ! 4178: > ERR 105,ENDFILE SECOND ARGUMENT IS NOT A STRING ! 4179: > BNZ WA,SENF1 SKIP IF NON NULL SECOND ARG ! 4180: > ZER XR 0 IF NULL ! 4181: 10875c9711 ! 4182: < * LOOP TO FIND TRTRF BLOCK ! 4183: --- ! 4184: > * NOW PROCESS FILETAG ! 4185: 10877,10909c9713,9728 ! 4186: < SENF1 MOV XL,XR COPY POINTER ! 4187: < MOV TRVAL(XR),XR CHAIN ALONG ! 4188: < BNE (XR),=B$TRT,EXNUL SKIP OUT IF CHAIN END ! 4189: < BNE TRTYP(XR),=TRTFC,SENF1 LOOP IF NOT FOUND ! 4190: < MOV TRVAL(XR),TRVAL(XL) REMOVE TRTRF ! 4191: < MOV TRTRF(XR),ENFCH POINT TO HEAD OF IOCHN ! 4192: < MOV TRFPT(XR),WC POINT TO FCBLK ! 4193: < MOV WB,XR FILEARG1 VRBLK FROM IOFCB ! 4194: < JSR SETVR RESET IT ! 4195: < MOV =R$FCB,XL PTR TO HEAD OF FCBLK CHAIN ! 4196: < SUB *NUM02,XL ADJUST READY TO ENTER LOOP ! 4197: < * ! 4198: < * FIND FCBLK ! 4199: < * ! 4200: < SENF2 MOV XL,XR COPY PTR ! 4201: < MOV 2(XL),XL GET NEXT LINK ! 4202: < BZE XL,SENF4 STOP IF CHAIN END ! 4203: < BEQ 3(XL),WC,SENF3 JUMP IF FCBLK FOUND ! 4204: < BRN SENF2 LOOP ! 4205: < * ! 4206: < * REMOVE FCBLK ! 4207: < * ! 4208: < SENF3 MOV 2(XL),2(XR) DELETE FCBLK FROM CHAIN ! 4209: < * ! 4210: < * LOOP WHICH DETACHES ALL VBLS ON IOCHN CHAIN ! 4211: < * ! 4212: < SENF4 MOV ENFCH,XL GET CHAIN HEAD ! 4213: < BZE XL,EXNUL FINISHED IF CHAIN END ! 4214: < MOV TRTRF(XL),ENFCH CHAIN ALONG ! 4215: < MOV IONMO(XL),WA NAME OFFSET ! 4216: < MOV IONMB(XL),XL NAME BASE ! 4217: < JSR DTACH DETACH NAME ! 4218: < BRN SENF4 LOOP TILL DONE ! 4219: --- ! 4220: > SENF1 MOV XR,SENFR KEEP SECOND ARG ! 4221: > JSR IOFTG CALL FILETAG PROC (WB = VRBLK PTR) ! 4222: > ERR 106,ENDFILE FIRST ARGUMENT IS NOT A SUITABLE FILETAG ! 4223: > BZE WA,EXFAL FAIL IF NO IOTAG ! 4224: > MOV SENFR,XR RECOVER SECOND ARG ! 4225: > JSR SYSEN CALL ENDFILE ROUTINE ! 4226: > PPM EXFAL FAIL RETURN ! 4227: > PPM EROSI ERROR RETURN ! 4228: > BNZ WA,EXNUL RETURN NULL IF NO FILE CLOSURE ! 4229: > MOV WB,XL POINT TO FILETAG VRBLK ! 4230: > MOV *VRVAL,WA OFFSET TO VALUE FIELD ! 4231: > ZER XR FOR TRBLK REMOVAL ! 4232: > MOV =TRTIO,WB TRTYP ! 4233: > JSR TRCHN REMOVE TRBLK ! 4234: > PPM EXFAL (CANT FAIL HERE) ! 4235: > BRN EXNUL RETURN NULL ! 4236: 10916,10917c9735,9736 ! 4237: < ERR 101,EQ FIRST ARGUMENT IS NOT NUMERIC ! 4238: < ERR 102,EQ SECOND ARGUMENT IS NOT NUMERIC ! 4239: --- ! 4240: > ERR 107,EQ FIRST ARGUMENT IS NOT NUMERIC ! 4241: > ERR 108,EQ SECOND ARGUMENT IS NOT NUMERIC ! 4242: 10928c9747 ! 4243: < ERR 103,EVAL ARGUMENT IS NOT EXPRESSION ! 4244: --- ! 4245: > ERR 109,EVAL ARGUMENT IS NOT EXPRESSION ! 4246: 10963c9782 ! 4247: < ERR 104,EXIT ARGUMENT IS NOT SUITABLE INTEGER OR STRING ! 4248: --- ! 4249: > ERR 110,EXIT ARGUMENT IS NOT SUITABLE INTEGER OR STRING ! 4250: 10969d9787 ! 4251: < MOV R$FCB,WB GET FCBLK CHAIN HEADER ! 4252: 10973a9792 ! 4253: > MOV =KVCOD,WA VALUE OF CODE KEYWORD ! 4254: 10975,10976c9794,9795 ! 4255: < ERR 105,EXIT ACTION NOT AVAILABLE IN THIS IMPLEMENTATION ! 4256: < ERR 106,EXIT ACTION CAUSED IRRECOVERABLE ERROR ! 4257: --- ! 4258: > PPM EXFAL FAIL RETURN ! 4259: > PPM EROSI ERROR RETURN ! 4260: 10978c9797 ! 4261: < ZER GBCNT RESUMING EXECUTION SO RESET ! 4262: --- ! 4263: > ZER GBCNT RESUMING EXECUTION SO. ! 4264: 10984c9803 ! 4265: < SEXT2 MFI WC GET VALUE IN WORK REG ! 4266: --- ! 4267: > SEXT2 MFI WC GET VALUE IN WORK REGISTER ! 4268: 10989c9808 ! 4269: < MOV (XS)+,WC RESTORE VALUE ! 4270: --- ! 4271: > MOV (XS)+,WA RESTORE VALUE ! 4272: 10991c9810 ! 4273: < * DEAL WITH HEADER OPTION (FIDDLED BY PRPAR) ! 4274: --- ! 4275: > * DEAL WITH HEADER OPTIONS (FIDDLED BY PRPAR) ! 4276: 10999c9818 ! 4277: < SEXT4 JSR SYSTM GET EXECUTION TIME START (SGD11) ! 4278: --- ! 4279: > SEXT4 JSR SYSTM GET RECOMMENCEMENT TIME ! 4280: 11004a9824,9825 ! 4281: > .IF .CNFN ! 4282: > .ELSE ! 4283: 11006a9828,9848 ! 4284: > * FENCE ! 4285: > * ! 4286: > S$FNC ENT ENTRY POINT ! 4287: > MOV =P$FNC,WB SET PCODE FOR P$FNC ! 4288: > ZER XR P0BLK ! 4289: > JSR PBILD BUILD P$FNC NODE ! 4290: > MOV XR,XL SAVE POINTER TO IT ! 4291: > MOV (XS)+,XR GET ARGUMENT ! 4292: > JSR GTPAT CONVERT TO PATTERN ! 4293: > ERR 180,FENCE ARGUMENT IS NOT PATTERN ! 4294: > JSR PCONC CONCATENATE TO P$FNC NODE ! 4295: > MOV XR,XL SAVE PTR TO CONCATENATED PATTERN ! 4296: > MOV =P$FNA,WB SET FOR P$FNA PCODE ! 4297: > ZER XR P0BLK ! 4298: > JSR PBILD CONSTRUCT P$FNA NODE ! 4299: > MOV XL,PTHEN(XR) SET PATTERN AS PTHEN ! 4300: > MOV XR,-(XS) SET AS RESULT ! 4301: > BRN EXITS DO NEXT CODE WORD ! 4302: > EJC ! 4303: > .FI ! 4304: > * ! 4305: 11011c9853 ! 4306: < ERR 107,FIELD SECOND ARGUMENT IS NOT INTEGER ! 4307: --- ! 4308: > ERR 255,FIELD SECOND ARGUMENT IS NOT INTEGER ! 4309: 11031c9873 ! 4310: < SFLD1 ERB 108,FIELD FIRST ARGUMENT IS NOT DATATYPE NAME ! 4311: --- ! 4312: > SFLD1 ERB 254,FIELD FIRST ARGUMENT IS NOT DATATYPE NAME ! 4313: 11034,11053d9875 ! 4314: < * FENCE ! 4315: < * ! 4316: < S$FNC ENT ENTRY POINT ! 4317: < MOV =P$FNC,WB SET PCODE FOR P$FNC ! 4318: < ZER XR P0BLK ! 4319: < JSR PBILD BUILD P$FNC NODE ! 4320: < MOV XR,XL SAVE POINTER TO IT ! 4321: < MOV (XS)+,XR GET ARGUMENT ! 4322: < JSR GTPAT CONVERT TO PATTERN ! 4323: < ERR 259,FENCE ARGUMENT IS NOT PATTERN ! 4324: < JSR PCONC CONCATENATE TO P$FNC NODE ! 4325: < MOV XR,XL SAVE PTR TO CONCATENATED PATTERN ! 4326: < MOV =P$FNA,WB SET FOR P$FNA PCODE ! 4327: < ZER XR P0BLK ! 4328: < JSR PBILD CONSTRUCT P$FNA NODE ! 4329: < MOV XL,PTHEN(XR) SET PATTERN AS PTHEN ! 4330: < MOV XR,-(XS) SET AS RESULT ! 4331: < BRN EXITS DO NEXT CODE WORD ! 4332: < EJC ! 4333: < * ! 4334: 11058,11059c9880,9881 ! 4335: < ERR 109,GE FIRST ARGUMENT IS NOT NUMERIC ! 4336: < ERR 110,GE SECOND ARGUMENT IS NOT NUMERIC ! 4337: --- ! 4338: > ERR 111,GE FIRST ARGUMENT IS NOT NUMERIC ! 4339: > ERR 112,GE SECOND ARGUMENT IS NOT NUMERIC ! 4340: 11063d9884 ! 4341: < EJC ! 4342: 11069,11070c9890,9891 ! 4343: < ERR 111,GT FIRST ARGUMENT IS NOT NUMERIC ! 4344: < ERR 112,GT SECOND ARGUMENT IS NOT NUMERIC ! 4345: --- ! 4346: > ERR 113,GT FIRST ARGUMENT IS NOT NUMERIC ! 4347: > ERR 114,GT SECOND ARGUMENT IS NOT NUMERIC ! 4348: 11079,11087c9900,9913 ! 4349: < MOV (XS)+,XR GET THIRD ARG ! 4350: < MOV (XS)+,XL GET SECOND ARG ! 4351: < MOV (XS)+,WA GET FIRST ARG ! 4352: < JSR SYSHS ENTER SYSHS ROUTINE ! 4353: < ERR 254,ERRONEOUS ARGUMENT FOR HOST ! 4354: < ERR 255,ERROR DURING EXECUTION OF HOST ! 4355: < PPM SHST1 STORE HOST STRING ! 4356: < PPM EXNUL RETURN NULL RESULT ! 4357: < PPM EXIXR RETURN XR ! 4358: --- ! 4359: > JSR GTSTG CONVERT ARG TO STRING ! 4360: > ERR 115,ERRONEOUS THIRD ARGUMENT FOR HOST ! 4361: > MOV WA,WB KEEP LENGTH ! 4362: > MOV XR,WC KEEP THIRD ARG ! 4363: > JSR GTSTG CONVERT ARG TO STRING ! 4364: > ERR 116,ERRONEOUS SECOND ARGUMENT FOR HOST ! 4365: > ORB WA,WB NON ZERO UNLESS TWO ARGS NULL ! 4366: > MOV XR,XL KEEP SECOND ARG ! 4367: > JSR GTSTG CONVERT ARG TO STRING ! 4368: > ERR 117,ERRONEOUS FIRST ARGUMENT FOR HOST ! 4369: > ORB WA,WB NON ZERO UNLESS ALL ARGS NULL ! 4370: > MOV XR,WA KEEP FIRST ARG ! 4371: > MOV WC,XR GET THIRD ARG ! 4372: > JSR SYSHS CALL SYSHS ROUTINE ! 4373: 11089,11093c9915,9916 ! 4374: < * ! 4375: < * RETURN HOST STRING ! 4376: < * ! 4377: < SHST1 BZE XL,EXNUL NULL STRING IF SYSHS UNCOOPERATIVE ! 4378: < MOV SCLEN(XL),WA LENGTH ! 4379: --- ! 4380: > PPM EROSI ERROR RETURN ! 4381: > MOV SCLEN(XL),WA LENGTH OF RETURNED STRING ! 4382: 11115,11120c9938,9941 ! 4383: < ERR 113,INPUT THIRD ARGUMENT IS NOT A STRING ! 4384: < ERR 114,INAPPROPRIATE SECOND ARGUMENT FOR INPUT ! 4385: < ERR 115,INAPPROPRIATE FIRST ARGUMENT FOR INPUT ! 4386: < ERR 116,INAPPROPRIATE FILE SPECIFICATION FOR INPUT ! 4387: < PPM EXFAL FAIL IF FILE DOES NOT EXIST ! 4388: < ERR 117,INPUT FILE CANNOT BE READ ! 4389: --- ! 4390: > ERR 118,INPUT THIRD ARGUMENT (FILEPROPS) IS NOT A STRING ! 4391: > ERR 119,INAPPROPRIATE SECOND ARGUMENT (FILETAG) FOR INPUT ! 4392: > ERR 120,INAPPROPRIATE FIRST ARGUMENT FOR INPUT ! 4393: > PPM EXFAL FAIL RETURN ! 4394: 11122d9942 ! 4395: < EJC ! 4396: 11124a9945 ! 4397: > EJC ! 4398: 11131c9952 ! 4399: < ERR 277,INSERT THIRD ARGUMENT NOT INTEGER ! 4400: --- ! 4401: > ERR 121,INSERT THIRD ARGUMENT NOT INTEGER ! 4402: 11135c9956 ! 4403: < ERR 278,INSERT SECOND ARGUMENT NOT INTEGER ! 4404: --- ! 4405: > ERR 122,INSERT SECOND ARGUMENT NOT INTEGER ! 4406: 11142c9963 ! 4407: < ERB 279,INSERT FIRST ARGUMENT NOT BUFFER ! 4408: --- ! 4409: > ERB 123,INSERT FIRST ARGUMENT NOT BUFFER ! 4410: 11147c9968 ! 4411: < ERR 280,INSERT FOURTH ARGUMENT NOT A STRING ! 4412: --- ! 4413: > ERR 124,INSERT FOURTH ARGUMENT NOT A STRING ! 4414: 11150d9970 ! 4415: < EJC ! 4416: 11151a9972 ! 4417: > EJC ! 4418: 11162a9984,10000 ! 4419: > * ITC ! 4420: > * ! 4421: > S$ITC ENT ! 4422: > JSR GTSMI OBTAIN ARG AS AN INTEGER ! 4423: > ERR 125,ITC ARGUMENT IS NOT A SMALL INTEGER ! 4424: > PPM EXFAL FAIL IF OUT OF RANGE ! 4425: > BGE WC,=CFP$A,EXFAL FURTHER RANGE CHECK ! 4426: > MOV WC,WB PRESERVE WC ! 4427: > MOV =NUM01,WA FOR SCBLK REQUEST ! 4428: > JSR ALOCS BUILD STRING BLOCK ! 4429: > MOV XR,XL COPY STRING PTR ! 4430: > PSC XL READY TO STORE CHAR ! 4431: > SCH WB,(XL) STORE IT ! 4432: > ZER XL CLEAR GARBAGE ! 4433: > BRN EXIXR RETURN STRING RESULT ! 4434: > EJC ! 4435: > * ! 4436: 11200,11201c10038,10039 ! 4437: < ERR 118,LE FIRST ARGUMENT IS NOT NUMERIC ! 4438: < ERR 119,LE SECOND ARGUMENT IS NOT NUMERIC ! 4439: --- ! 4440: > ERR 126,LE FIRST ARGUMENT IS NOT NUMERIC ! 4441: > ERR 127,LE SECOND ARGUMENT IS NOT NUMERIC ! 4442: 11213,11214c10051,10052 ! 4443: < ERR 120,LEN ARGUMENT IS NOT INTEGER OR EXPRESSION ! 4444: < ERR 121,LEN ARGUMENT IS NEGATIVE OR TOO LARGE ! 4445: --- ! 4446: > ERR 128,LEN ARGUMENT IS NOT INTEGER OR EXPRESSION ! 4447: > ERR 129,LEN ARGUMENT IS NEGATIVE OR TOO LARGE ! 4448: 11222,11223c10060,10061 ! 4449: < ERR 122,LEQ FIRST ARGUMENT IS NOT STRING ! 4450: < ERR 123,LEQ SECOND ARGUMENT IS NOT STRING ! 4451: --- ! 4452: > ERR 130,LEQ FIRST ARGUMENT IS NOT STRING ! 4453: > ERR 131,LEQ SECOND ARGUMENT IS NOT STRING ! 4454: 11233,11234c10071,10072 ! 4455: < ERR 124,LGE FIRST ARGUMENT IS NOT STRING ! 4456: < ERR 125,LGE SECOND ARGUMENT IS NOT STRING ! 4457: --- ! 4458: > ERR 132,LGE FIRST ARGUMENT IS NOT STRING ! 4459: > ERR 133,LGE SECOND ARGUMENT IS NOT STRING ! 4460: 11244,11245c10082,10083 ! 4461: < ERR 126,LGT FIRST ARGUMENT IS NOT STRING ! 4462: < ERR 127,LGT SECOND ARGUMENT IS NOT STRING ! 4463: --- ! 4464: > ERR 134,LGT FIRST ARGUMENT IS NOT STRING ! 4465: > ERR 135,LGT SECOND ARGUMENT IS NOT STRING ! 4466: 11255,11256c10093,10094 ! 4467: < ERR 128,LLE FIRST ARGUMENT IS NOT STRING ! 4468: < ERR 129,LLE SECOND ARGUMENT IS NOT STRING ! 4469: --- ! 4470: > ERR 136,LLE FIRST ARGUMENT IS NOT STRING ! 4471: > ERR 137,LLE SECOND ARGUMENT IS NOT STRING ! 4472: 11266,11267c10104,10105 ! 4473: < ERR 130,LLT FIRST ARGUMENT IS NOT STRING ! 4474: < ERR 131,LLT SECOND ARGUMENT IS NOT STRING ! 4475: --- ! 4476: > ERR 138,LLT FIRST ARGUMENT IS NOT STRING ! 4477: > ERR 139,LLT SECOND ARGUMENT IS NOT STRING ! 4478: 11277,11278c10115,10116 ! 4479: < ERR 132,LNE FIRST ARGUMENT IS NOT STRING ! 4480: < ERR 133,LNE SECOND ARGUMENT IS NOT STRING ! 4481: --- ! 4482: > ERR 140,LNE FIRST ARGUMENT IS NOT STRING ! 4483: > ERR 141,LNE SECOND ARGUMENT IS NOT STRING ! 4484: 11282,11309d10119 ! 4485: < EJC ! 4486: < * ! 4487: < * LOCAL ! 4488: < * ! 4489: < S$LOC ENT ENTRY POINT ! 4490: < JSR GTSMI GET SECOND ARGUMENT (LOCAL NUMBER) ! 4491: < ERR 134,LOCAL SECOND ARGUMENT IS NOT INTEGER ! 4492: < PPM EXFAL FAIL IF OUT OF RANGE ! 4493: < MOV XR,WB SAVE LOCAL NUMBER ! 4494: < MOV (XS)+,XR LOAD FIRST ARGUMENT ! 4495: < JSR GTNVR POINT TO VRBLK ! 4496: < PPM SLOC1 JUMP IF NOT VARIABLE NAME ! 4497: < MOV VRFNC(XR),XR ELSE LOAD FUNCTION POINTER ! 4498: < BNE (XR),=B$PFC,SLOC1 JUMP IF NOT PROGRAM DEFINED ! 4499: < * ! 4500: < * HERE IF WE HAVE A PROGRAM DEFINED FUNCTION NAME ! 4501: < * ! 4502: < BZE WB,EXFAL FAIL IF SECOND ARG IS ZERO ! 4503: < BGT WB,PFNLO(XR),EXFAL OR TOO LARGE ! 4504: < ADD FARGS(XR),WB ELSE ADJUST OFFSET TO INCLUDE ARGS ! 4505: < WTB WB CONVERT TO BYTES ! 4506: < ADD WB,XR POINT TO LOCAL POINTER ! 4507: < MOV PFAGB(XR),XR LOAD VRBLK POINTER ! 4508: < BRN EXVNM EXIT BUILDING NMBLK ! 4509: < * ! 4510: < * HERE IF FIRST ARGUMENT IS NO GOOD ! 4511: < * ! 4512: < SLOC1 ERB 135,LOCAL FIRST ARG IS NOT A PROGRAM FUNCTION NAME ! 4513: 11318c10128 ! 4514: < ERR 136,LOAD SECOND ARGUMENT IS NOT STRING ! 4515: --- ! 4516: > ERR 142,LOAD SECOND ARGUMENT IS NOT STRING ! 4517: 11321,11322c10131,10132 ! 4518: < ERR 137,LOAD FIRST ARGUMENT IS NOT STRING ! 4519: < ERR 138,LOAD FIRST ARGUMENT IS NULL ! 4520: --- ! 4521: > ERR 143,LOAD FIRST ARGUMENT IS NOT STRING ! 4522: > ERR 144,LOAD FIRST ARGUMENT IS NULL ! 4523: 11329c10139 ! 4524: < ERB 139,LOAD FIRST ARGUMENT IS MISSING A LEFT PAREN ! 4525: --- ! 4526: > ERB 145,LOAD FIRST ARGUMENT IS MISSING A LEFT PAREN ! 4527: 11334c10144 ! 4528: < ERR 140,LOAD FIRST ARGUMENT HAS NULL FUNCTION NAME ! 4529: --- ! 4530: > ERR 146,LOAD FIRST ARGUMENT HAS NULL FUNCTION NAME ! 4531: 11345c10155 ! 4532: < ERB 141,LOAD FIRST ARGUMENT IS MISSING A RIGHT PAREN ! 4533: --- ! 4534: > ERB 147,BAD BLANK OR MISSING RIGHT PAREN IN LOAD ARG ! 4535: 11355c10165 ! 4536: < MOV =NUM01,WB SET STRING CODE IN CASE ! 4537: --- ! 4538: > MOV =NUM01,WB SET STRING CODE IN CASE (1) ! 4539: 11363a10174 ! 4540: > ICV WB ELSE SET CODE FOR REAL (3) ! 4541: 11366,11367c10177 ! 4542: < MOV (XS),XR ELSE RELOAD STRING POINTER ! 4543: < ICV WB SET CODE FOR REAL (3) ! 4544: --- ! 4545: > MOV (XS),XR RELOAD STRING POINTER ! 4546: 11371a10182,10189 ! 4547: > ICV WB SET CODE FOR BUFFER (4) ! 4548: > .IF .CNBF ! 4549: > .ELSE ! 4550: > MOV (XS),XR RELOAD STRING POINTER ! 4551: > MOV =SCBUF,XL POINT TO /BUFFER/ ! 4552: > JSR IDENT CHECK FOR MATCH ! 4553: > PPM SLOD4 JUMP IF MATCH ! 4554: > .FI ! 4555: 11395c10213 ! 4556: < WTB WA CONVERT LENGTH TO BYTES ! 4557: --- ! 4558: > WTB WA CONVERT LENGTH TO BAUS ! 4559: 11420,11421c10238,10239 ! 4560: < ERR 142,LOAD FUNCTION DOES NOT EXIST ! 4561: < ERR 143,LOAD FUNCTION CAUSED INPUT ERROR DURING LOAD ! 4562: --- ! 4563: > PPM EXFAL FAIL RETURN ! 4564: > PPM EROSI ERROR RETURN ! 4565: 11429a10248,10275 ! 4566: > * LOCAL ! 4567: > * ! 4568: > S$LOC ENT ENTRY POINT ! 4569: > JSR GTSMI GET SECOND ARGUMENT (LOCAL NUMBER) ! 4570: > ERR 256,LOCAL SECOND ARGUMENT IS NOT INTEGER ! 4571: > PPM EXFAL FAIL IF OUT OF RANGE ! 4572: > MOV XR,WB SAVE LOCAL NUMBER ! 4573: > MOV (XS)+,XR LOAD FIRST ARGUMENT ! 4574: > JSR GTNVR POINT TO VRBLK ! 4575: > PPM SLOC1 JUMP IF NOT VARIABLE NAME ! 4576: > MOV VRFNC(XR),XR ELSE LOAD FUNCTION POINTER ! 4577: > BNE (XR),=B$PFC,SLOC1 JUMP IF NOT PROGRAM DEFINED ! 4578: > * ! 4579: > * HERE IF WE HAVE A PROGRAM DEFINED FUNCTION NAME ! 4580: > * ! 4581: > BZE WB,EXFAL FAIL IF SECOND ARG IS ZERO ! 4582: > BGT WB,PFNLO(XR),EXFAL OR TOO LARGE ! 4583: > ADD FARGS(XR),WB ELSE ADJUST OFFSET TO INCLUDE ARGS ! 4584: > WTB WB CONVERT TO BYTES ! 4585: > ADD WB,XR POINT TO LOCAL POINTER ! 4586: > MOV PFAGB(XR),XR LOAD VRBLK POINTER ! 4587: > BRN EXVNM EXIT BUILDING NMBLK ! 4588: > * ! 4589: > * HERE IF FIRST ARGUMENT IS NO GOOD ! 4590: > * ! 4591: > SLOC1 ERB 257,LOCAL FIRST ARG IS NOT A PROGRAM FUNCTION NAME ! 4592: > EJC ! 4593: > * ! 4594: 11434c10280 ! 4595: < ERR 144,LPAD THIRD ARGUMENT NOT A STRING ! 4596: --- ! 4597: > ERR 148,LPAD THIRD ARGUMENT NOT A STRING ! 4598: 11438c10284 ! 4599: < ERR 145,LPAD SECOND ARGUMENT IS NOT INTEGER ! 4600: --- ! 4601: > ERR 149,LPAD SECOND ARGUMENT IS NOT INTEGER ! 4602: 11444c10290 ! 4603: < ERR 146,LPAD FIRST ARGUMENT IS NOT STRING ! 4604: --- ! 4605: > ERR 150,LPAD FIRST ARGUMENT IS NOT STRING ! 4606: 11485,11486c10331,10332 ! 4607: < ERR 147,LT FIRST ARGUMENT IS NOT NUMERIC ! 4608: < ERR 148,LT SECOND ARGUMENT IS NOT NUMERIC ! 4609: --- ! 4610: > ERR 151,LT FIRST ARGUMENT IS NOT NUMERIC ! 4611: > ERR 152,LT SECOND ARGUMENT IS NOT NUMERIC ! 4612: 11496,11497c10342,10343 ! 4613: < ERR 149,NE FIRST ARGUMENT IS NOT NUMERIC ! 4614: < ERR 150,NE SECOND ARGUMENT IS NOT NUMERIC ! 4615: --- ! 4616: > ERR 153,NE FIRST ARGUMENT IS NOT NUMERIC ! 4617: > ERR 154,NE SECOND ARGUMENT IS NOT NUMERIC ! 4618: 11510c10356 ! 4619: < ERR 151,NOTANY ARGUMENT IS NOT STRING OR EXPRESSION ! 4620: --- ! 4621: > ERR 155,NOTANY ARGUMENT IS NOT STRING OR EXPRESSION ! 4622: 11518,11519c10364,10365 ! 4623: < ERR 152,OPSYN THIRD ARGUMENT IS NOT INTEGER ! 4624: < ERR 153,OPSYN THIRD ARGUMENT IS NEGATIVE OR TOO LARGE ! 4625: --- ! 4626: > ERR 156,OPSYN THIRD ARGUMENT IS NOT INTEGER ! 4627: > ERR 157,OPSYN THIRD ARGUMENT IS NEGATIVE OR TOO LARGE ! 4628: 11523c10369 ! 4629: < ERR 154,OPSYN SECOND ARG IS NOT NATURAL VARIABLE NAME ! 4630: --- ! 4631: > ERR 158,OPSYN SECOND ARG IS NOT NATURAL VARIABLE NAME ! 4632: 11531c10377 ! 4633: < ERR 155,OPSYN FIRST ARG IS NOT NATURAL VARIABLE NAME ! 4634: --- ! 4635: > ERR 159,OPSYN FIRST ARG IS NOT NATURAL VARIABLE NAME ! 4636: 11574c10420 ! 4637: < SOPS5 ERB 156,OPSYN FIRST ARG IS NOT CORRECT OPERATOR NAME ! 4638: --- ! 4639: > SOPS5 ERB 160,OPSYN FIRST ARG IS NOT CORRECT OPERATOR NAME ! 4640: 11586c10432 ! 4641: < MOV =NUM03,WB OUTPUT FLAG ! 4642: --- ! 4643: > MOV =NUM02,WB OUTPUT FLAG ! 4644: 11588,11593c10434,10437 ! 4645: < ERR 157,OUTPUT THIRD ARGUMENT IS NOT A STRING ! 4646: < ERR 158,INAPPROPRIATE SECOND ARGUMENT FOR OUTPUT ! 4647: < ERR 159,INAPPROPRIATE FIRST ARGUMENT FOR OUTPUT ! 4648: < ERR 160,INAPPROPRIATE FILE SPECIFICATION FOR OUTPUT ! 4649: < PPM EXFAL FAIL IF FILE DOES NOT EXIST ! 4650: < ERR 161,OUTPUT FILE CANNOT BE WRITTEN TO ! 4651: --- ! 4652: > ERR 161,OUTPUT THIRD ARGUMENT (FILEPROPS) IS NOT A STRING ! 4653: > ERR 162,INAPPROPRIATE SECOND ARGUMENT (FILETAG) FOR OUTPUT ! 4654: > ERR 163,INAPPROPRIATE FIRST ARGUMENT FOR OUTPUT ! 4655: > PPM EXFAL FAIL RETURN ! 4656: 11603,11604c10447,10448 ! 4657: < ERR 162,POS ARGUMENT IS NOT INTEGER OR EXPRESSION ! 4658: < ERR 163,POS ARGUMENT IS NEGATIVE OR TOO LARGE ! 4659: --- ! 4660: > ERR 164,POS ARGUMENT IS NOT INTEGER OR EXPRESSION ! 4661: > ERR 165,POS ARGUMENT IS NEGATIVE OR TOO LARGE ! 4662: 11617a10462,10463 ! 4663: > .IF .CNBF ! 4664: > .ELSE ! 4665: 11619c10465,10466 ! 4666: < ERB 164,PROTOTYPE ARGUMENT IS NOT VALID OBJECT ! 4667: --- ! 4668: > .FI ! 4669: > ERB 166,PROTOTYPE ARGUMENT IS NOT TABLE OR ARRAY ! 4670: 11657c10504 ! 4671: < ERR 165,REMDR SECOND ARGUMENT IS NOT INTEGER ! 4672: --- ! 4673: > ERR 167,REMDR SECOND ARGUMENT IS NOT INTEGER ! 4674: 11668c10515 ! 4675: < ERB 167,REMDR CAUSED INTEGER OVERFLOW ! 4676: --- ! 4677: > ERB 168,REMDR CAUSED INTEGER OVERFLOW ! 4678: 11672c10519 ! 4679: < SRM01 ERB 166,REMDR FIRST ARGUMENT IS NOT INTEGER ! 4680: --- ! 4681: > SRM01 ERB 169,REMDR FIRST ARGUMENT IS NOT INTEGER ! 4682: 11684c10531 ! 4683: < ERR 168,REPLACE THIRD ARGUMENT IS NOT STRING ! 4684: --- ! 4685: > ERR 170,REPLACE THIRD ARGUMENT IS NOT STRING ! 4686: 11687c10534 ! 4687: < ERR 169,REPLACE SECOND ARGUMENT IS NOT STRING ! 4688: --- ! 4689: > ERR 171,REPLACE SECOND ARGUMENT IS NOT STRING ! 4690: 11749c10596 ! 4691: < ERR 170,REPLACE FIRST ARGUMENT IS NOT STRING ! 4692: --- ! 4693: > ERR 172,REPLACE FIRST ARGUMENT IS NOT STRING ! 4694: 11768c10615 ! 4695: < SRPL5 ERB 171,NULL OR UNEQUALLY LONG 2ND, 3RD ARGS TO REPLACE ! 4696: --- ! 4697: > SRPL5 ERB 173,NULL OR UNEQUALLY LONG 2ND, 3RD ARGS TO REPLACE ! 4698: 11771,11783d10617 ! 4699: < * REWIND ! 4700: < * ! 4701: < S$REW ENT ENTRY POINT ! 4702: < JSR IOFCB CALL FCBLK ROUTINE ! 4703: < ERR 172,REWIND ARGUMENT IS NOT A SUITABLE NAME ! 4704: < ERR 173,REWIND ARGUMENT IS NULL ! 4705: < JSR SYSRW CALL SYSTEM REWIND FUNCTION ! 4706: < ERR 174,REWIND FILE DOES NOT EXIST ! 4707: < ERR 175,REWIND FILE DOES NOT PERMIT REWIND ! 4708: < ERR 176,REWIND CAUSED NON-RECOVERABLE ERROR ! 4709: < BRN EXNUL EXIT WITH NULL RESULT IF NO ERROR ! 4710: < EJC ! 4711: < * ! 4712: 11788c10622 ! 4713: < ERR 177,REVERSE ARGUMENT IS NOT STRING ! 4714: --- ! 4715: > ERR 174,REVERSE ARGUMENT IS NOT STRING ! 4716: 11810c10644 ! 4717: < ERR 178,RPAD THIRD ARGUMENT IS NOT STRING ! 4718: --- ! 4719: > ERR 175,RPAD THIRD ARGUMENT IS NOT STRING ! 4720: 11814c10648 ! 4721: < ERR 179,RPAD SECOND ARGUMENT IS NOT INTEGER ! 4722: --- ! 4723: > ERR 176,RPAD SECOND ARGUMENT IS NOT INTEGER ! 4724: 11820c10654 ! 4725: < ERR 180,RPAD FIRST ARGUMENT IS NOT STRING ! 4726: --- ! 4727: > ERR 177,RPAD FIRST ARGUMENT IS NOT STRING ! 4728: 11863,11864c10697,10698 ! 4729: < ERR 181,RTAB ARGUMENT IS NOT INTEGER OR EXPRESSION ! 4730: < ERR 182,RTAB ARGUMENT IS NEGATIVE OR TOO LARGE ! 4731: --- ! 4732: > ERR 178,RTAB ARGUMENT IS NOT INTEGER OR EXPRESSION ! 4733: > ERR 179,RTAB ARGUMENT IS NEGATIVE OR TOO LARGE ! 4734: 11872c10706 ! 4735: < MOV (XS)+,R$IO2 SAVE THIRD ARG ! 4736: --- ! 4737: > MOV (XS)+,R$IOL SAVE THIRD ARG ! 4738: 11874,11876c10708,10710 ! 4739: < JSR IOFCB CALL FCBLK ROUTINE ! 4740: < ERR 291,SET FIRST ARGUMENT IS NOT A SUITABLE NAME ! 4741: < ERR 292,SET FIRST ARGUMENT IS NULL ! 4742: --- ! 4743: > JSR IOFTG CALL IOTAG ROUTINE ! 4744: > ERR 180,SET FIRST ARGUMENT IS NOT A SUITABLE NAME ! 4745: > BZE WA,EXFAL FAIL IF NO IOTAG ! 4746: 11878c10712 ! 4747: < MOV R$IO2,WC LOAD THIRD ARG ! 4748: --- ! 4749: > MOV R$IOL,WC LOAD THIRD ARG ! 4750: 11880,11885c10714,10716 ! 4751: < ERR 293,INAPPROPRIATE SECOND ARGUMENT TO SET ! 4752: < ERR 294,INAPPROPRIATE THIRD ARGUMENT TO SET ! 4753: < ERR 295,SET FILE DOES NOT EXIST ! 4754: < ERR 296,SET FILE DOES NOT PERMIT SETTING FILE POINTER ! 4755: < ERR 297,SET CAUSED NON-RECOVERABLE I/O ERROR ! 4756: < BRN EXNUL OTHERWISEW RETURN NULL ! 4757: --- ! 4758: > PPM EXFAL FAILURE RETURN ! 4759: > PPM EROSI ERROR RETURN ! 4760: > BRN EXNUL OTHERWISE RETURN NULL ! 4761: 11889,11899d10719 ! 4762: < * TAB ! 4763: < * ! 4764: < S$TAB ENT ENTRY POINT ! 4765: < MOV =P$TAB,WB SET PCODE FOR INTEGER ARG CASE ! 4766: < MOV =P$TBD,WA SET PCODE FOR EXPRESSION ARG CASE ! 4767: < JSR PATIN CALL COMMON ROUTINE TO BUILD NODE ! 4768: < ERR 183,TAB ARGUMENT IS NOT INTEGER OR EXPRESSION ! 4769: < ERR 184,TAB ARGUMENT IS NEGATIVE OR TOO LARGE ! 4770: < BRN EXIXR RETURN PATTERN NODE ! 4771: < EJC ! 4772: < * ! 4773: 11906,11907c10726,10727 ! 4774: < ERR 185,RPOS ARGUMENT IS NOT INTEGER OR EXPRESSION ! 4775: < ERR 186,RPOS ARGUMENT IS NEGATIVE OR TOO LARGE ! 4776: --- ! 4777: > ERR 181,RPOS ARGUMENT IS NOT INTEGER OR EXPRESSION ! 4778: > ERR 182,RPOS ARGUMENT IS NEGATIVE OR TOO LARGE ! 4779: 11917a10738 ! 4780: > PPM EXFAL FAIL EMPTY TABLE ! 4781: 11946c10767 ! 4782: < SSTX2 ERB 187,SETEXIT ARGUMENT IS NOT LABEL NAME OR NULL ! 4783: --- ! 4784: > SSTX2 ERB 183,SETEXIT ARGUMENT IS NOT LABEL NAME OR NULL ! 4785: 11955a10777 ! 4786: > PPM EXFAL FAIL EMPTY TABLE ! 4787: 11967c10789 ! 4788: < ERR 188,SPAN ARGUMENT IS NOT STRING OR EXPRESSION ! 4789: --- ! 4790: > ERR 184,SPAN ARGUMENT IS NOT STRING OR EXPRESSION ! 4791: 11974a10797 ! 4792: > JSR GTSTG LOAD STRING ARGUMENT ! 4793: 11981d10803 ! 4794: < .FI ! 4795: 11986c10808,10809 ! 4796: < ERR 189,SIZE ARGUMENT IS NOT STRING ! 4797: --- ! 4798: > .FI ! 4799: > ERR 185,SIZE ARGUMENT IS NOT STRING ! 4800: 11996,11997c10819,10821 ! 4801: < ERR 190,STOPTR FIRST ARGUMENT IS NOT APPROPRIATE NAME ! 4802: < ERR 191,STOPTR SECOND ARGUMENT IS NOT TRACE TYPE ! 4803: --- ! 4804: > ERR 186,STOPTR FIRST ARGUMENT IS NOT APPROPRIATE NAME ! 4805: > ERR 187,STOPTR SECOND ARGUMENT IS NOT TRACE TYPE ! 4806: > PPM EXFAL FAIL RETURN ! 4807: 12005c10829 ! 4808: < ERR 192,SUBSTR THIRD ARGUMENT IS NOT INTEGER ! 4809: --- ! 4810: > ERR 188,SUBSTR THIRD ARGUMENT IS NOT INTEGER ! 4811: 12009c10833 ! 4812: < ERR 193,SUBSTR SECOND ARGUMENT IS NOT INTEGER ! 4813: --- ! 4814: > ERR 189,SUBSTR SECOND ARGUMENT IS NOT INTEGER ! 4815: 12014a10839 ! 4816: > JSR GTSTG LOAD FIRST ARGUMENT ! 4817: 12024d10848 ! 4818: < .FI ! 4819: 12026c10850,10855 ! 4820: < ERR 194,SUBSTR FIRST ARGUMENT IS NOT STRING ! 4821: --- ! 4822: > .FI ! 4823: > ERR 190,SUBSTR FIRST ARGUMENT IS NOT STRING ! 4824: > MOV XR,XL COPY POINTER TO FIRST ARG ! 4825: > .IF .CNBF ! 4826: > MOV SBSSV,WC RELOAD THIRD ARGUMENT ! 4827: > .ELSE ! 4828: 12028c10857 ! 4829: < * MERGE WITH BFBLK OR SCBLK PTR IN XR. WA HAS LENGTH ! 4830: --- ! 4831: > * MERGE WITH BFBLK OR SCBLK IN XR, LENGTH IN WA ! 4832: 12030a10860 ! 4833: > .FI ! 4834: 12032c10862 ! 4835: < MOV WA,WC ELSE GET STRING LENGTH ! 4836: --- ! 4837: > MOV SCLEN(XL),WC ELSE GET STRING LENGTH ! 4838: 12038,12039c10868 ! 4839: < SSUB1 MOV WA,XL SAVE STRING LENGTH ! 4840: < MOV WC,WA SET LENGTH OF SUBSTRING ! 4841: --- ! 4842: > SSUB1 MOV WC,WA SET LENGTH OF SUBSTRING ! 4843: 12041,12042c10870 ! 4844: < BGT WC,XL,EXFAL JUMP IF IMPROPER SUBSTRING ! 4845: < MOV XR,XL COPY POINTER TO FIRST ARG ! 4846: --- ! 4847: > BGT WC,SCLEN(XL),EXFAL JUMP IF IMPROPER SUBSTRING ! 4848: 12046a10875,10885 ! 4849: > * TAB ! 4850: > * ! 4851: > S$TAB ENT ENTRY POINT ! 4852: > MOV =P$TAB,WB SET PCODE FOR INTEGER ARG CASE ! 4853: > MOV =P$TBD,WA SET PCODE FOR EXPRESSION ARG CASE ! 4854: > JSR PATIN CALL COMMON ROUTINE TO BUILD NODE ! 4855: > ERR 191,TAB ARGUMENT IS NOT INTEGER OR EXPRESSION ! 4856: > ERR 192,TAB ARGUMENT IS NEGATIVE OR TOO LARGE ! 4857: > BRN EXIXR RETURN PATTERN NODE ! 4858: > EJC ! 4859: > * ! 4860: 12053,12054c10892,10893 ! 4861: < ERR 195,TABLE ARGUMENT IS NOT INTEGER ! 4862: < ERR 196,TABLE ARGUMENT IS OUT OF RANGE ! 4863: --- ! 4864: > ERR 193,TABLE ARGUMENT IS NOT INTEGER ! 4865: > ERR 194,TABLE ARGUMENT IS OUT OF RANGE ! 4866: 12062c10901 ! 4867: < WTB WA CONVERT LENGTH TO BYTES ! 4868: --- ! 4869: > WTB WA CONVERT LENGTH TO BAUS ! 4870: 12101c10940 ! 4871: < STR01 ERB 197,TRACE FOURTH ARG IS NOT FUNCTION NAME OR NULL ! 4872: --- ! 4873: > STR01 ERB 195,TRACE FOURTH ARG IS NOT FUNCTION NAME OR NULL ! 4874: 12110,12111c10949,10951 ! 4875: < ERR 198,TRACE FIRST ARGUMENT IS NOT APPROPRIATE NAME ! 4876: < ERR 199,TRACE SECOND ARGUMENT IS NOT TRACE TYPE ! 4877: --- ! 4878: > ERR 196,TRACE FIRST ARGUMENT IS NOT APPROPRIATE NAME ! 4879: > ERR 197,TRACE SECOND ARGUMENT IS NOT TRACE TYPE ! 4880: > PPM UNUSED RETURN ! 4881: 12125c10965 ! 4882: < ERR 200,TRIM ARGUMENT IS NOT STRING ! 4883: --- ! 4884: > ERR 198,TRIM ARGUMENT IS NOT STRING ! 4885: 12142c10982 ! 4886: < ERR 201,UNLOAD ARGUMENT IS NOT NATURAL VARIABLE NAME ! 4887: --- ! 4888: > ERR 199,UNLOAD ARGUMENT IS NOT NATURAL VARIABLE NAME ! 4889: 12145a10986,10995 ! 4890: > EJC ! 4891: > * ! 4892: > * VDIFFER ! 4893: > * ! 4894: > S$VDF ENT ENTRY POINT ! 4895: > MOV (XS)+,XR LOAD SECOND ARGUMENT ! 4896: > MOV (XS),XL LOAD FIRST ARGUMENT ! 4897: > JSR IDENT CALL IDENT COMPARISON ROUTINE ! 4898: > PPM EXFAL FAIL IF IDENT ! 4899: > BRN EXITS RETURN FIRST ARG IF DIFFER ! 4900: 12255c11105 ! 4901: < MOV TRFPT(XR),XL GET FILE CTRL BLK PTR OR ZERO ! 4902: --- ! 4903: > MOV TRTRI(XR),XL GET TRTIO BLOCK PTR OR 0 ! 4904: 12263c11113,11121 ! 4905: < JSR SYSRD READ NEXT STANDARD INPUT IMAGE ! 4906: --- ! 4907: > BZE TTINS,ACSA5 SKIP IF NOT TERML STD INPUT ! 4908: > JSR SYSRI READ FROM TERMINAL ! 4909: > PPM ACS03 END FILE ! 4910: > PPM EROSI ERROR ! 4911: > BRN ACS07 MERGE ! 4912: > * ! 4913: > * GENUINE STD INPUT FILE ! 4914: > * ! 4915: > ACSA5 JSR SYSRD READ NEXT STANDARD INPUT IMAGE ! 4916: 12264a11123 ! 4917: > PPM EROSI ERROR RETURN ! 4918: 12269c11128,11129 ! 4919: < ACS06 MOV XL,WA FCBLK PTR ! 4920: --- ! 4921: > ACS06 MOV TRTAG(XL),WA OBTAIN IOTAG ! 4922: > BZE WA,ACS03 FAIL IF ENDFILE DONE ! 4923: 12272c11132 ! 4924: < MOV XL,WA FCBLK PTR ! 4925: --- ! 4926: > MOV TRTAG(XL),WA GET IOTAG ! 4927: 12275,12276c11135 ! 4928: < PPM ACS22 ERROR ! 4929: < PPM ACS23 ERROR ! 4930: --- ! 4931: > PPM ACS22 ERROR RETURN ! 4932: 12328c11187 ! 4933: < MTI KVABE(XR) ELSE LOAD VALUE AS INTEGER ! 4934: --- ! 4935: > MTI KVANC(XR) ELSE LOAD VALUE AS INTEGER ! 4936: 12338a11198 ! 4937: > WTB XR CONVERT TO OFFSET IN BAUS ! 4938: 12347c11207 ! 4939: < BSW XR,5 SWITCH ON KEYWORD NUMBER ! 4940: --- ! 4941: > BSW XR,6 SWITCH ON KEYWORD NUMBER ! 4942: 12349a11210 ! 4943: > IFF K$$CD,ACS23 CODE ! 4944: 12385a11247 ! 4945: > PPM EROSI ERROR RETURN ! 4946: 12388c11250 ! 4947: < * ERROR RETURNS ! 4948: --- ! 4949: > * ERROR RETURN ! 4950: 12391c11253 ! 4951: < ERB 202,INPUT FROM FILE CAUSED NON-RECOVERABLE ERROR ! 4952: --- ! 4953: > BRN EROSI GENERATE ERROR MESSAGE ! 4954: 12393,12394c11255,11258 ! 4955: < ACS23 MOV XR,DNAMP POP UNUSED SCBLK ! 4956: < ERB 203,INPUT FILE RECORD HAS INCORRECT FORMAT ! 4957: --- ! 4958: > * ACCESS CODE KEYWORD ! 4959: > * ! 4960: > ACS23 LDI KVCOD GET CODE VALUE ! 4961: > BRN ACS13 EXIT ! 4962: 12480c11344 ! 4963: < * (WA) LENGTH REQUIRED IN BYTES ! 4964: --- ! 4965: > * (WA) LENGTH REQUIRED IN BAUS ! 4966: 12514c11378 ! 4967: < WTB XR CONVERT TO BAUS (SGD05) ! 4968: --- ! 4969: > WTB XR CONVERT TO BAUS ! 4970: 12520c11384 ! 4971: < ERB 204,MEMORY OVERFLOW ! 4972: --- ! 4973: > ERB 200,MEMORY OVERFLOW ! 4974: 12528c11392 ! 4975: < BTW WB CONVERT BYTES TO WORDS ! 4976: --- ! 4977: > BTW WB CONVERT BAUS TO WORDS ! 4978: 12539c11403 ! 4979: < WTB XR CONVERT TO BAUS (SGD05) ! 4980: --- ! 4981: > WTB XR CONVERT TO BAUS ! 4982: 12561a11426,11427 ! 4983: > * (WA) 0 (INITIAL OFFSET TO BFBLK CHARS) ! 4984: > * (WB) 0 (INITIAL BCLEN) ! 4985: 12563d11428 ! 4986: < * (WA,WB) DESTROYED ! 4987: 12580c11445,11446 ! 4988: < ZER BFCHR(XL) CLEAR FIRST WORD (NULL PAD) ! 4989: --- ! 4990: > ZER WB CLEAR FOR RETURN ! 4991: > MOV WB,BFCHR(XL) CLEAR FIRST WORD (NULL PAD) ! 4992: 12581a11448 ! 4993: > ZER WA CLEAR FOR RETURN ! 4994: 12586c11453 ! 4995: < ALB01 ERB 274,REQUESTED BUFFER ALLOCATION EXCEEDS MXLEN ! 4996: --- ! 4997: > ALB01 ERB 201,REQUESTED BUFFER ALLOCATION EXCEEDS MAXLNGTH ! 4998: 12611c11478 ! 4999: < CTB WA,SCSI$ COMPUTE LENGTH OF SCBLK IN BYTES ! 5000: --- ! 5001: > CTB WA,SCSI$ COMPUTE LENGTH OF SCBLK IN BAUS ! 5002: 12634c11501 ! 5003: < ALCS2 ERB 205,STRING LENGTH EXCEEDS VALUE OF MAXLNGTH KEYWORD ! 5004: --- ! 5005: > ALCS2 ERB 202,STRING LENGTH EXCEEDS VALUE OF MAXLNGTH KEYWORD ! 5006: 12640c11507 ! 5007: < * (WA) LENGTH REQUIRED IN BYTES ! 5008: --- ! 5009: > * (WA) LENGTH REQUIRED IN BAUS ! 5010: 12676,12677d11542 ! 5011: < .IF .CNBF ! 5012: < .ELSE ! 5013: 12679,12712d11543 ! 5014: < * APNDB -- APPEND STRING TO BUFFER ! 5015: < * ! 5016: < * THIS ROUTINE IS USED BY BUFFER HANDLING ROUTINES TO ! 5017: < * APPEND DATA TO AN EXISTING BFBLK. ! 5018: < * ! 5019: < * (XR) EXISTING BCBLK TO BE APPENDED ! 5020: < * (XL) CONVERTABLE TO STRING ! 5021: < * JSR APNDB CALL TO APPEND TO BUFFER ! 5022: < * PPM LOC THREAD IF (XL) CANT BE CONVERTED ! 5023: < * PPM LOC IF NOT ENOUGH ROOM ! 5024: < * (WA,WB) DESTROYED ! 5025: < * ! 5026: < * IF MORE CHARACTERS ARE SPECIFIED THAN CAN BE INSERTED, ! 5027: < * THEN NO ACTION IS TAKEN AND THE SECOND RETURN IS TAKEN. ! 5028: < * ! 5029: < APNDB PRC E,2 ENTRY POINT ! 5030: < MOV BCLEN(XR),WA LOAD OFFSET TO INSERT ! 5031: < ZER WB REPLACE SECTION IS NULL ! 5032: < JSR INSBF CALL TO INSERT AT END ! 5033: < PPM APN01 CONVERT ERROR ! 5034: < PPM APN02 NO ROOM ! 5035: < EXI RETURN TO CALLER ! 5036: < * ! 5037: < * HERE TO TAKE CONVERT FAILURE EXIT ! 5038: < * ! 5039: < APN01 EXI 1 RETURN TO CALLER ALTERNATE ! 5040: < * ! 5041: < * HERE FOR NO FIT EXIT ! 5042: < * ! 5043: < APN02 EXI 2 ALTERNATE EXIT TO CALLER ! 5044: < ENP END PROCEDURE APNDB ! 5045: < EJC ! 5046: < .FI ! 5047: < * ! 5048: 12882c11713 ! 5049: < * HERE FOR FAILURE DURING EXPRESSION EVALUATION ! 5050: --- ! 5051: > * HERE FOR FAILURE RETURNS ! 5052: 12885d11715 ! 5053: < EXI 1 TAKE FAILURE EXIT ! 5054: 12886a11717,11718 ! 5055: > ASG3A EXI 1 TAKE FAILURE EXIT ! 5056: > * ! 5057: 12933c11765 ! 5058: < MOV TRVAL(WC),-(XS) STACK VALUE TO OUTPUT (SGD01) ! 5059: --- ! 5060: > MOV TRVAL(XR),-(XS) STACK VALUE TO OUTPUT ! 5061: 12939c11771 ! 5062: < ASG11 MOV TRFPT(XL),WA FCBLK PTR ! 5063: --- ! 5064: > ASG11 MOV TRTRI(XL),WA TRTIO BLK PTR ! 5065: 12943a11776,11779 ! 5066: > MOV WA,XL COPY TRTIO BLOCK PTR TO XL ! 5067: > MOV TRTAG(XL),WA GET IOTAG ! 5068: > BZE WA,ASG3A FAIL IF ENDFILE DONE ! 5069: > MOV SCLEN(XR),WC STRING LENGTH ! 5070: 12945,12946c11781,11782 ! 5071: < ERR 206,OUTPUT CAUSED FILE OVERFLOW ! 5072: < ERR 207,OUTPUT CAUSED NON-RECOVERABLE ERROR ! 5073: --- ! 5074: > PPM ASG3A FAIL RETURN ! 5075: > PPM EROSI ERROR RETURN ! 5076: 12954c11790 ! 5077: < * HERE TO PRINT A STRING ON THE PRINTER ! 5078: --- ! 5079: > * HERE TO PRINT A STRING ! 5080: 12956,12958c11792,11793 ! 5081: < ASG13 JSR PRTST PRINT STRING VALUE ! 5082: < BEQ TRTER(XL),=V$TER,ASG20 JUMP IF TERMINAL OUTPUT ! 5083: < JSR PRTNL END OF LINE ! 5084: --- ! 5085: > ASG13 BEQ TRTER(XL),=V$TER,ASG20 JUMP IF TERMINAL OUTPUT ! 5086: > JSR PRTSF PRINT STRING AND FLUSH BUFFER ! 5087: 12970c11805 ! 5088: < ERR 208,KEYWORD VALUE ASSIGNED IS NOT INTEGER ! 5089: --- ! 5090: > ERR 203,KEYWORD VALUE ASSIGNED IS NOT INTEGER ! 5091: 12972a11808 ! 5092: > BEQ XL,=K$COD,ASG24 JUMP IF SPECIAL CASE OF CODE ! 5093: 12981c11817 ! 5094: < ERB 209,KEYWORD IN ASSIGNMENT IS PROTECTED ! 5095: --- ! 5096: > ERB 204,KEYWORD IN ASSIGNMENT IS PROTECTED ! 5097: 12985c11821 ! 5098: < ASG15 MOV WA,KVABE(XL) STORE NEW VALUE ! 5099: --- ! 5100: > ASG15 MOV WA,KVANC(XL) STORE NEW VALUE ! 5101: 12998a11835 ! 5102: > EJC ! 5103: 12999a11837,11838 ! 5104: > * ASIGN (CONTINUED) ! 5105: > * ! 5106: 13006c11845 ! 5107: < ASG18 ERB 210,KEYWORD VALUE ASSIGNED IS NEGATIVE OR TOO LARGE ! 5108: --- ! 5109: > ASG18 ERB 205,KEYWORD VALUE ASSIGNED IS NEGATIVE OR TOO LARGE ! 5110: 13012c11851 ! 5111: < ERR 211,VALUE ASSIGNED TO KEYWORD ERRTEXT NOT A STRING ! 5112: --- ! 5113: > ERR 206,VALUE ASSIGNED TO KEYWORD ERRTEXT NOT A STRING ! 5114: 13018c11857,11858 ! 5115: < ASG20 JSR PRTTR PRINT ! 5116: --- ! 5117: > ASG20 JSR PTTST PRINT STRING TO TERMINAL ! 5118: > JSR PTTFH FLUSH TERMINAL BUFFER ! 5119: 13020d11859 ! 5120: < * ! 5121: 13029c11868 ! 5122: < ERB 268,INCONSISTENT VALUE ASSIGNED TO KEYWORD PROFILE ! 5123: --- ! 5124: > ERB 207,INCONSISTENT VALUE ASSIGNED TO KEYWORD PROFILE ! 5125: 13031c11870 ! 5126: < ASG22 MOV WA,PFDMP NOTE VALUE ON FIRST ASSIGNMENT ! 5127: --- ! 5128: > ASG22 MOV WA,PFDMP NOTE VALUE ON FIRST ASSIGNMENT ! 5129: 13035a11875,11879 ! 5130: > * ! 5131: > * HERE FOR KEYWORD ASSIGNMENT TO CODE ! 5132: > * ! 5133: > ASG24 STI KVCOD STORE VALUE ! 5134: > EXI RETURN TO CALLER ! 5135: 13093c11937 ! 5136: < * (WA) LENGTH OF BLOCK IN BYTES ! 5137: --- ! 5138: > * (WA) LENGTH OF BLOCK IN BAUS ! 5139: 13107,13111d11950 ! 5140: < .IF .CNBF ! 5141: < .ELSE ! 5142: < IFF BL$BC,BLN04 BCBLK ! 5143: < IFF BL$BF,BLN11 BFBLK ! 5144: < .FI ! 5145: 13112a11952 ! 5146: > IFF BL$CO,BLN12 COBLK ! 5147: 13131a11972,11976 ! 5148: > .IF .CNBF ! 5149: > .ELSE ! 5150: > IFF BL$BC,BLN04 BCBLK ! 5151: > IFF BL$BF,BLN11 BFBLK ! 5152: > .FI ! 5153: 13162c12007 ! 5154: < * HERE FOR FOUR WORD BLOCKS (P2,TE,BC) ! 5155: --- ! 5156: > * HERE FOR FOUR WORD BLOCKS (P2,TE) ! 5157: 13202c12047 ! 5158: < CTB WA,SCSI$ CALCULATE LENGTH IN BYTES ! 5159: --- ! 5160: > CTB WA,SCSI$ CALCULATE LENGTH IN BAUS ! 5161: 13209,13210c12054,12055 ! 5162: < BLN11 MOV BFALC(XR),WA GET ALLOCATION IN BYTES ! 5163: < CTB WA,BFSI$ CALCULATE LENGTH IN BYTES ! 5164: --- ! 5165: > BLN11 MOV BFALC(XR),WA GET ALLOCATION IN BAUS ! 5166: > CTB WA,BFSI$ CALCULATE LENGTH IN BAUS ! 5167: 13212a12058,12062 ! 5168: > * ! 5169: > * HERE FOR COBLK ! 5170: > * ! 5171: > BLN12 MOV *COSI$,WA GET SIZE IN BAUS ! 5172: > EXI RETURN TO BLKLN CALLER ! 5173: 13216c12066 ! 5174: < * COPYB -- COPY A BLOCK ! 5175: --- ! 5176: > * CBLCK -- COPY A BLOCK ! 5177: 13219c12069 ! 5178: < * JSR COPYB CALL TO COPY BLOCK ! 5179: --- ! 5180: > * JSR CBLCK CALL TO COPY BLOCK ! 5181: 13226c12076 ! 5182: < COPYB PRC N,1 ENTRY POINT ! 5183: --- ! 5184: > CBLCK PRC N,1 ENTRY POINT ! 5185: 13228c12078 ! 5186: < BEQ XR,=NULLS,COP10 RETURN ARGUMENT IF IT IS NULL ! 5187: --- ! 5188: > BEQ XR,=NULLS,CBL10 RETURN ARGUMENT IF IT IS NULL ! 5189: 13237,13239c12087,12089 ! 5190: < BEQ WB,=B$TBT,COP05 JUMP IF TABLE ! 5191: < BEQ WB,=B$VCT,COP01 JUMP IF VECTOR ! 5192: < BEQ WB,=B$PDT,COP01 JUMP IF PROGRAM DEFINED ! 5193: --- ! 5194: > BEQ WB,=B$TBT,CBL05 JUMP IF TABLE ! 5195: > BEQ WB,=B$VCT,CBL01 JUMP IF VECTOR ! 5196: > BEQ WB,=B$PDT,CBL01 JUMP IF PROGRAM DEFINED ! 5197: 13242c12092 ! 5198: < BEQ WB,=B$BCT,COP11 JUMP IF BUFFER ! 5199: --- ! 5200: > BEQ WB,=B$BCT,CBL11 JUMP IF BUFFER ! 5201: 13244c12094 ! 5202: < BNE WB,=B$ART,COP10 RETURN COPY IF NOT ARRAY ! 5203: --- ! 5204: > BNE WB,=B$ART,CBL10 RETURN COPY IF NOT ARRAY ! 5205: 13249c12099 ! 5206: < BRN COP02 JUMP TO MERGE ! 5207: --- ! 5208: > BRN CBL02 JUMP TO MERGE ! 5209: 13253c12103 ! 5210: < COP01 ADD *PDFLD,XR POINT TO PDFLD = VCVLS ! 5211: --- ! 5212: > CBL01 ADD *PDFLD,XR POINT TO PDFLD = VCVLS ! 5213: 13258c12108 ! 5214: < COP02 MOV (XR),XL LOAD NEXT POINTER ! 5215: --- ! 5216: > CBL02 MOV (XR),XL LOAD NEXT POINTER ! 5217: 13262c12112 ! 5218: < COP03 BNE (XL),=B$TRT,COP04 JUMP IF NOT TRAPPED ! 5219: --- ! 5220: > CBL03 BNE (XL),=B$TRT,CBL04 JUMP IF NOT TRAPPED ! 5221: 13264c12114 ! 5222: < BRN COP03 AND LOOP BACK ! 5223: --- ! 5224: > BRN CBL03 AND LOOP BACK ! 5225: 13267c12117 ! 5226: < * COPYB (CONTINUED) ! 5227: --- ! 5228: > * CBLCK (CONTINUED) ! 5229: 13271,13273c12121,12123 ! 5230: < COP04 MOV XL,(XR)+ STORE REAL VALUE, BUMP POINTER ! 5231: < BNE XR,DNAMP,COP02 LOOP BACK IF MORE TO GO ! 5232: < BRN COP09 ELSE JUMP TO EXIT ! 5233: --- ! 5234: > CBL04 MOV XL,(XR)+ STORE REAL VALUE, BUMP POINTER ! 5235: > BNE XR,DNAMP,CBL02 LOOP BACK IF MORE TO GO ! 5236: > BRN CBL09 ELSE JUMP TO EXIT ! 5237: 13277c12127 ! 5238: < COP05 ZER IDVAL(XR) ZERO ID TO STOP DUMP BLOWING UP ! 5239: --- ! 5240: > CBL05 ZER IDVAL(XR) ZERO ID TO STOP DUMP BLOWING UP ! 5241: 13283,13284c12133,12134 ! 5242: < COP06 MOV (XS),XR LOAD TABLE POINTER ! 5243: < BEQ WC,TBLEN(XR),COP09 JUMP TO EXIT IF ALL DONE ! 5244: --- ! 5245: > CBL06 MOV (XS),XR LOAD TABLE POINTER ! 5246: > BEQ WC,TBLEN(XR),CBL09 JUMP TO EXIT IF ALL DONE ! 5247: 13291c12141 ! 5248: < COP07 MOV TENXT(XR),XL LOAD POINTER TO NEXT TEBLK ! 5249: --- ! 5250: > CBL07 MOV TENXT(XR),XL LOAD POINTER TO NEXT TEBLK ! 5251: 13293c12143 ! 5252: < BEQ (XL),=B$TBT,COP06 BACK FOR NEXT BUCKET IF CHAIN END ! 5253: --- ! 5254: > BEQ (XL),=B$TBT,CBL06 BACK FOR NEXT BUCKET IF CHAIN END ! 5255: 13306,13307c12156,12157 ! 5256: < COP08 MOV TEVAL(XL),XL LOAD VALUE ! 5257: < BEQ (XL),=B$TRT,COP08 LOOP BACK IF TRAPPED ! 5258: --- ! 5259: > CBL08 MOV TEVAL(XL),XL LOAD VALUE ! 5260: > BEQ (XL),=B$TRT,CBL08 LOOP BACK IF TRAPPED ! 5261: 13309c12159 ! 5262: < BRN COP07 BACK FOR NEXT TEBLK ! 5263: --- ! 5264: > BRN CBL07 BACK FOR NEXT TEBLK ! 5265: 13313c12163 ! 5266: < COP09 MOV (XS)+,XR LOAD POINTER TO BLOCK ! 5267: --- ! 5268: > CBL09 MOV (XS)+,XR LOAD POINTER TO BLOCK ! 5269: 13318,13319c12168 ! 5270: < COP10 EXI 1 RETURN ! 5271: < EJC ! 5272: --- ! 5273: > CBL10 EXI 1 RETURN ! 5274: 13321a12171 ! 5275: > EJC ! 5276: 13325c12175 ! 5277: < COP11 MOV BCBUF(XR),XL GET BFBLK PTR ! 5278: --- ! 5279: > CBL11 MOV BCBUF(XR),XL GET BFBLK PTR ! 5280: 13335c12185 ! 5281: < BRN COP09 BRANCH TO EXIT ! 5282: --- ! 5283: > BRN CBL09 BRANCH TO EXIT ! 5284: 13337c12187,12188 ! 5285: < ENP END PROCEDURE COPYB ! 5286: --- ! 5287: > ENP END PROCEDURE CBLCK ! 5288: > EJC ! 5289: 13455c12306 ! 5290: < CGN01 ERB 212,SYNTAX ERROR. VALUE USED WHERE NAME IS REQUIRED ! 5291: --- ! 5292: > CGN01 ERB 208,SYNTAX ERROR. VALUE USED WHERE NAME IS REQUIRED ! 5293: 13586,13592d12436 ! 5294: < BNZ VRLEN(XR),CGVL0 JUMP IF NOT SYSTEM VARIABLE ! 5295: < MOV XR,-(XS) STACK XR ! 5296: < MOV VRSVP(XR),XR POINT TO SVBLK ! 5297: < MOV SVBIT(XR),WA GET SVBLK PROPERTY BITS ! 5298: < MOV (XS)+,XR RECOVER XR ! 5299: < ANB BTCKW,WA CHECK IF CONSTANT KEYWORD ! 5300: < NZB WA,CGV00 JUMP IF CONSTANT KEYWORD ! 5301: 13616,13617c12460 ! 5302: < * PREPARE TO GENERATE CODE FOR CMBLK. WC IS SET TO THE ! 5303: < * VALUE OF CSWNO (ZERO IF -OPTIMISE, 1 IF -NOOPT) TO ! 5304: --- ! 5305: > * PREPARE TO GENERATE CODE FOR CMBLK. WC IS CLEARED TO ! 5306: 13624c12467 ! 5307: < MOV CSWNO,WC RESET CONSTANT FLAG ! 5308: --- ! 5309: > ZER WC CLEAR OPTIMISE FLAG ! 5310: 13644d12486 ! 5311: < IFF C$CNP,CGV24 CONCATENATION (NOT PATTERN MATCH) ! 5312: 13645a12488 ! 5313: > IFF C$CNP,CGV24 CONCAT. NOT PATTERN ! 5314: 13688,13689c12531,12532 ! 5315: < CGV07 SUB *CMVLS,WB GET NUMBER OF ARG PTRS (BYTES) ! 5316: < BTW WB CONVERT BYTES TO WORDS ! 5317: --- ! 5318: > CGV07 SUB *CMVLS,WB GET NUMBER OF ARG PTRS (BAUS) ! 5319: > BTW WB CONVERT BAUS TO WORDS ! 5320: 13968c12811 ! 5321: < WTB XR CONVERT WORD OFFSET TO BYTES ! 5322: --- ! 5323: > WTB XR CONVERT WORD OFFSET TO BAUS ! 5324: 14105c12948 ! 5325: < CDWD5 ERB 213,SYNTAX ERROR. STATEMENT IS TOO COMPLICATED. ! 5326: --- ! 5327: > CDWD5 ERB 209,SYNTAX ERROR. STATEMENT IS TOO COMPLICATED. ! 5328: 14258,14260c13101,13107 ! 5329: < BNE STAGE,=STGIC,CMP02 SKIP UNLESS INITIAL COMPILE ! 5330: < JSR READR READ NEXT INPUT IMAGE ! 5331: < BZE XR,CMP09 JUMP IF NO INPUT AVAILABLE ! 5332: --- ! 5333: > BEQ STAGE,=STGIC,CMPC1 READ IF INITIAL COMPILE ! 5334: > BZE R$COP,CMP02 ELSE SKIP IF NO -COPY IN FORCE ! 5335: > * ! 5336: > * HERE TO ATTEMPT READ (STGIC OR -COPY) ! 5337: > * ! 5338: > CMPC1 JSR READR READ NEXT INPUT IMAGE ! 5339: > BZE XR,CMPC2 JUMP IF NO INPUT AVAILABLE ! 5340: 14265a13113,13119 ! 5341: > * HERE IF READR HAD NOTHING TO RETURN. IF NOT DURING ! 5342: > * INITIAL COMPILE, THEN MUST BE AT OUTER LEVEL OF -COPY ! 5343: > * IN CODE(). R$CIM HAS BEEN RESTORED TO CODE STRING ! 5344: > * BY COPND SO WE CONTINUE FROM THE -COPY STMT. ! 5345: > * ! 5346: > CMPC2 BEQ STAGE,=STGIC,CMP09 JUMP IF INITIAL COMPILE ! 5347: > * ! 5348: 14296c13150 ! 5349: < BEQ WC,=CH$MN,CMP32 JUMP IF CONTROL CARD ! 5350: --- ! 5351: > BEQ WC,=CH$MN,CMP33 JUMP IF CONTROL CARD ! 5352: 14324c13178 ! 5353: < ERB 214,BAD LABEL OR MISPLACED CONTINUATION LINE ! 5354: --- ! 5355: > ERB 210,BAD LABEL OR MISPLACED CONTINUATION LINE ! 5356: 14363c13217 ! 5357: < BEQ XL,=T$SMC,CMP10 JUMP IF END OF IMAGE ! 5358: --- ! 5359: > BEQ XL,=T$SMC,CMPEE JUMP IF END OF IMAGE ! 5360: 14371c13225 ! 5361: < BEQ XL,=T$SMC,CMP10 JUMP IF OK (END OF IMAGE) ! 5362: --- ! 5363: > BEQ XL,=T$SMC,CMPEE JUMP IF OK (END OF IMAGE) ! 5364: 14375c13229 ! 5365: < CMP08 ERB 215,SYNTAX ERROR. UNDEFINED OR ERRONEOUS ENTRY LABEL ! 5366: --- ! 5367: > CMP08 ERB 211,SYNTAX ERROR. UNDEFINED OR ERRONEOUS ENTRY LABEL ! 5368: 14380,14381c13234,13235 ! 5369: < BEQ STAGE,=STGXE,CMP10 JUMP IF CODE CALL (OK) ! 5370: < ERB 216,SYNTAX ERROR. MISSING END LINE ! 5371: --- ! 5372: > BEQ STAGE,=STGXE,CMPEE JUMP IF CODE CALL (OK) ! 5373: > ERB 212,SYNTAX ERROR. MISSING END LINE ! 5374: 14385c13239 ! 5375: < CMP10 MOV =OSTP$,WA SET STOP CALL POINTER ! 5376: --- ! 5377: > CMPEE MOV =OSTP$,WA SET STOP CALL POINTER ! 5378: 14397c13251 ! 5379: < ERB 217,SYNTAX ERROR. DUPLICATE LABEL ! 5380: --- ! 5381: > ERB 213,SYNTAX ERROR. DUPLICATE LABEL ! 5382: 14414c13268 ! 5383: < BEQ XL,=T$SMC,CMP31 JUMP IF NO FIELDS LEFT ! 5384: --- ! 5385: > BEQ XL,=T$SMC,CMP32 JUMP IF NO FIELDS LEFT ! 5386: 14450c13304 ! 5387: < CMP17 ERB 218,SYNTAX ERROR. DUPLICATED GOTO FIELD ! 5388: --- ! 5389: > CMP17 ERB 214,SYNTAX ERROR. DUPLICATED GOTO FIELD ! 5390: 14599d13452 ! 5391: < EXI AND RETURN TO CMPIL CALLER ! 5392: 14600a13454,13459 ! 5393: > * LOOP TO UNNEST ANY OUTSTANDING -COPY LEVELS ! 5394: > * ! 5395: > CMP31 JSR COPND CALL TO UNNEST -COPY ! 5396: > BNZ R$COP,CMP31 LOOP IF NOT ALL -COPYS CLOSED ! 5397: > EXI RETURN TO CMPIL CALLER ! 5398: > * ! 5399: 14603c13462 ! 5400: < CMP31 MOV CMFGO(XS),WB GET FAIL GOTO ! 5401: --- ! 5402: > CMP32 MOV CMFGO(XS),WB GET FAIL GOTO ! 5403: 14606c13465 ! 5404: < ERB 219,SYNTAX ERROR. EMPTY GOTO FIELD ! 5405: --- ! 5406: > ERB 215,SYNTAX ERROR. EMPTY GOTO FIELD ! 5407: 14610c13469 ! 5408: < CMP32 ICV WB POINT PAST CH$MN ! 5409: --- ! 5410: > CMP33 ICV WB POINT PAST CH$MN ! 5411: 14634c13493 ! 5412: < CNC01 BGE SCNPT,SCNIL,CNC09 RETURN IF END OF IMAGE ! 5413: --- ! 5414: > CNC01 BGE SCNPT,SCNIL,CNC10 RETURN IF END OF IMAGE ! 5415: 14638,14640d13496 ! 5416: < .IF .CULC ! 5417: < FLC WA FOLD TO UPPER CASE ! 5418: < .FI ! 5419: 14641a13498,13500 ! 5420: > .IF .CASL ! 5421: > BEQ WA,=CH$$I,CNC07 DITTO (LC) ! 5422: > .FI ! 5423: 14649a13509,13511 ! 5424: > .IF .CASL ! 5425: > JSR SBSCC CONVERT CASE BEFORE COMPARISON ! 5426: > .ELSE ! 5427: 14651,14653d13512 ! 5428: < .IF .CULC ! 5429: < MOV SCLEN(XR),WA RELOAD LENGTH ! 5430: < JSR FLSTG FOLD TO UPPER CASE ! 5431: 14658c13517 ! 5432: < LCT WC,=CC$NC NUMBER OF STANDARD NAMES ! 5433: --- ! 5434: > LCT WC,=CC$CT NUMBER OF STANDARD NAMES ! 5435: 14682,14684c13541,13543 ! 5436: < BSW XL,CC$NC SWITCH ! 5437: < .IF .CULC ! 5438: < IFF CC$CA,CNC37 -CASE ! 5439: --- ! 5440: > BSW XL,CC$CT SWITCH ! 5441: > .IF .CASL ! 5442: > IFF CC$CI,CNC11 -CASEIG ! 5443: 14686,14687c13545 ! 5444: < IFF CC$DO,CNC10 -DOUBLE ! 5445: < IFF CC$DU,CNC11 -DUMP ! 5446: --- ! 5447: > IFF CC$CO,CNC23 -COPY ! 5448: 14689,14705c13547,13556 ! 5449: < IFF CC$ER,CNC13 -ERRORS ! 5450: < IFF CC$EX,CNC14 -EXECUTE ! 5451: < IFF CC$FA,CNC15 -FAIL ! 5452: < IFF CC$LI,CNC16 -LIST ! 5453: < IFF CC$NR,CNC17 -NOERRORS ! 5454: < IFF CC$NX,CNC18 -NOEXECUTE ! 5455: < IFF CC$NF,CNC19 -NOFAIL ! 5456: < IFF CC$NL,CNC20 -NOLIST ! 5457: < IFF CC$NO,CNC21 -NOOPT ! 5458: < IFF CC$NP,CNC22 -NOPRINT ! 5459: < IFF CC$OP,CNC24 -OPTIMISE ! 5460: < IFF CC$PR,CNC25 -PRINT ! 5461: < IFF CC$SI,CNC27 -SINGLE ! 5462: < IFF CC$SP,CNC28 -SPACE ! 5463: < IFF CC$ST,CNC31 -STITLE ! 5464: < IFF CC$TI,CNC32 -TITLE ! 5465: < IFF CC$TR,CNC36 -TRACE ! 5466: --- ! 5467: > IFF CC$FA,CNC13 -FAIL ! 5468: > IFF CC$LI,CNC14 -LIST ! 5469: > .IF .CASL ! 5470: > IFF CC$NC,CNC15 -NOCASEIG ! 5471: > .FI ! 5472: > IFF CC$NF,CNC16 -NOFAIL ! 5473: > IFF CC$NL,CNC17 -NOLIST ! 5474: > IFF CC$ST,CNC18 -STITLE ! 5475: > IFF CC$TI,CNC19 -TITLE ! 5476: > IFF CC$TR,CNC22 -TRACE ! 5477: 14717c13568 ! 5478: < CNC06 ERB 247,INVALID CONTROL CARD ! 5479: --- ! 5480: > CNC06 ERB 216,INVALID CONTROL CARD ! 5481: 14722,14723c13573,13574 ! 5482: < .IF .CULC ! 5483: < FLC WA FOLD TO UPPER CASE ! 5484: --- ! 5485: > .IF .CASL ! 5486: > BEQ WA,=CH$$N,CNC08 SKIP IF LC N ! 5487: 14725a13577,13579 ! 5488: > .IF .CASL ! 5489: > CNC08 ADD =NUM02,SCNPT BUMP OFFSET PAST -IN ! 5490: > .ELSE ! 5491: 14726a13581 ! 5492: > .FI ! 5493: 14739c13594 ! 5494: < CNC08 MOV SCNPT,WA PRESERVE IN CASE XEQ TIME COMPILE ! 5495: --- ! 5496: > CNC09 MOV SCNPT,WA PRESERVE IN CASE XEQ TIME COMPILE ! 5497: 14746c13601,13602 ! 5498: < CNC09 EXI RETURN ! 5499: --- ! 5500: > CNC10 EXI RETURN ! 5501: > .IF .CASL ! 5502: 14748c13604 ! 5503: < * -DOUBLE ! 5504: --- ! 5505: > * -CASEIG ! 5506: 14750,14751c13606,13608 ! 5507: < CNC10 MNZ CSWDB SET SWITCH ! 5508: < BRN CNC08 MERGE ! 5509: --- ! 5510: > CNC11 MNZ CSWCI SET SWITCH ! 5511: > BRN CNC09 MERGE ! 5512: > .FI ! 5513: 14753,14759d13609 ! 5514: < * -DUMP ! 5515: < * THIS IS USED FOR SYSTEM DEBUGGING . IT HAS THE EFFECT OF ! 5516: < * PRODUCING A CORE DUMP AT COMPILATION TIME ! 5517: < * ! 5518: < CNC11 JSR SYSDM CALL DUMPER ! 5519: < BRN CNC09 FINISHED ! 5520: < * ! 5521: 14762c13612 ! 5522: < CNC12 BZE CSWLS,CNC09 RETURN IF -NOLIST ! 5523: --- ! 5524: > CNC12 BZE CSWLS,CNC10 RETURN IF -NOLIST ! 5525: 14765c13615 ! 5526: < BRN CNC09 FINISHED ! 5527: --- ! 5528: > BRN CNC10 FINISHED ! 5529: 14767,14776d13616 ! 5530: < * -ERRORS ! 5531: < * ! 5532: < CNC13 ZER CSWER CLEAR SWITCH ! 5533: < BRN CNC08 MERGE ! 5534: < * ! 5535: < * -EXECUTE ! 5536: < * ! 5537: < CNC14 ZER CSWEX CLEAR SWITCH ! 5538: < BRN CNC08 MERGE ! 5539: < * ! 5540: 14779,14780c13619,13620 ! 5541: < CNC15 MNZ CSWFL SET SWITCH ! 5542: < BRN CNC08 MERGE ! 5543: --- ! 5544: > CNC13 MNZ CSWFL SET SWITCH ! 5545: > BRN CNC09 MERGE ! 5546: 14784,14785c13624,13626 ! 5547: < CNC16 MNZ CSWLS SET SWITCH ! 5548: < BEQ STAGE,=STGIC,CNC08 DONE IF COMPILE TIME ! 5549: --- ! 5550: > CNC14 MNZ CSWLS SET SWITCH ! 5551: > BRN CNC09 MERGE ! 5552: > .IF .CASL ! 5553: 14787c13628 ! 5554: < * LIST CODE LINE IF EXECUTE TIME COMPILE ! 5555: --- ! 5556: > * -NOCASEIG ! 5557: 14789,14792c13630,13632 ! 5558: < ZER LSTPF PERMIT LISTING ! 5559: < JSR LISTR LIST LINE ! 5560: < BRN CNC08 MERGE ! 5561: < EJC ! 5562: --- ! 5563: > CNC15 ZER CSWCI CLEAR SWITCH ! 5564: > BRN CNC09 MERGE ! 5565: > .FI ! 5566: 14794,14805d13633 ! 5567: < * CNCRD (CONTINUED) ! 5568: < * ! 5569: < * -NOERRORS ! 5570: < * ! 5571: < CNC17 MNZ CSWER SET SWITCH ! 5572: < BRN CNC08 MERGE ! 5573: < * ! 5574: < * -NOEXECUTE ! 5575: < * ! 5576: < CNC18 MNZ CSWEX SET SWITCH ! 5577: < BRN CNC08 MERGE ! 5578: < * ! 5579: 14808,14834c13636,13637 ! 5580: < CNC19 ZER CSWFL CLEAR SWITCH ! 5581: < BRN CNC08 MERGE ! 5582: < * ! 5583: < * -NOLIST ! 5584: < * ! 5585: < CNC20 ZER CSWLS CLEAR SWITCH ! 5586: < BRN CNC08 MERGE ! 5587: < * ! 5588: < * -NOOPTIMISE ! 5589: < * ! 5590: < CNC21 MNZ CSWNO SET SWITCH ! 5591: < BRN CNC08 MERGE ! 5592: < * ! 5593: < * -NOPRINT ! 5594: < * ! 5595: < CNC22 ZER CSWPR CLEAR SWITCH ! 5596: < BRN CNC08 MERGE ! 5597: < * ! 5598: < * -OPTIMISE ! 5599: < * ! 5600: < CNC24 ZER CSWNO CLEAR SWITCH ! 5601: < BRN CNC08 MERGE ! 5602: < * ! 5603: < * -PRINT ! 5604: < * ! 5605: < CNC25 MNZ CSWPR SET SWITCH ! 5606: < BRN CNC08 MERGE ! 5607: --- ! 5608: > CNC16 ZER CSWFL CLEAR SWITCH ! 5609: > BRN CNC09 MERGE ! 5610: 14839c13642 ! 5611: < * -SINGLE ! 5612: --- ! 5613: > * -NOLIST ! 5614: 14841,14863c13644 ! 5615: < CNC27 ZER CSWDB CLEAR SWITCH ! 5616: < BRN CNC08 MERGE ! 5617: < * ! 5618: < * -SPACE ! 5619: < * ! 5620: < CNC28 BZE CSWLS,CNC09 RETURN IF -NOLIST ! 5621: < JSR SCANE SCAN INTEGER AFTER -SPACE ! 5622: < MOV =NUM01,WC 1 SPACE IN CASE ! 5623: < BEQ XR,=T$SMC,CNC29 JUMP IF NO INTEGER ! 5624: < MOV XR,-(XS) STACK IT ! 5625: < JSR GTSMI CHECK INTEGER ! 5626: < PPM CNC06 FAIL IF NOT INTEGER ! 5627: < PPM CNC06 FAIL IF NEGATIVE OR LARGE ! 5628: < BNZ WC,CNC29 JUMP IF NON ZERO ! 5629: < MOV =NUM01,WC ELSE 1 SPACE ! 5630: < * ! 5631: < * MERGE WITH COUNT OF LINES TO SKIP ! 5632: < * ! 5633: < CNC29 ADD WC,LSTLC BUMP LINE COUNT ! 5634: < LCT WC,WC CONVERT TO LOOP COUNTER ! 5635: < BLT LSTLC,LSTNP,CNC30 JUMP IF FITS ON PAGE ! 5636: < JSR PRTPS EJECT ! 5637: < JSR LISTT LIST TITLE ! 5638: --- ! 5639: > CNC17 ZER CSWLS CLEAR SWITCH ! 5640: 14866,14874d13646 ! 5641: < * SKIP LINES ! 5642: < * ! 5643: < CNC30 JSR PRTNL PRINT A BLANK ! 5644: < BCT WC,CNC30 LOOP ! 5645: < BRN CNC09 MERGE ! 5646: < EJC ! 5647: < * ! 5648: < * CNCRD (CONTINUED) ! 5649: < * ! 5650: 14877,14878c13649,13650 ! 5651: < CNC31 MOV =R$STL,CNR$T PTR TO R$STL ! 5652: < BRN CNC33 MERGE ! 5653: --- ! 5654: > CNC18 MOV =R$STL,CNR$T PTR TO R$STL ! 5655: > BRN CNC20 MERGE ! 5656: 14882c13654 ! 5657: < CNC32 MOV =NULLS,R$STL CLEAR SUBTITLE ! 5658: --- ! 5659: > CNC19 MOV =NULLS,R$STL CLEAR SUBTITLE ! 5660: 14887c13659 ! 5661: < CNC33 MOV =NULLS,XR NULL IN CASE NEEDED ! 5662: --- ! 5663: > CNC20 MOV =NULLS,XR NULL IN CASE NEEDED ! 5664: 14891c13663 ! 5665: < BLO WA,WB,CNC34 JUMP IF NO CHARS LEFT ! 5666: --- ! 5667: > BLO WA,WB,CNC21 JUMP IF NO CHARS LEFT ! 5668: 14898c13670 ! 5669: < CNC34 MOV CNR$T,XL POINT TO STORAGE LOCATION ! 5670: --- ! 5671: > CNC21 MOV CNR$T,XL POINT TO STORAGE LOCATION ! 5672: 14900,14908c13672 ! 5673: < BEQ XL,=R$STL,CNC09 RETURN IF STITL ! 5674: < BNZ PRECL,CNC09 RETURN IF EXTENDED LISTING ! 5675: < BZE PRICH,CNC09 RETURN IF REGULAR PRINTER ! 5676: < MOV SCLEN(XR),XL GET LENGTH OF TITLE ! 5677: < MOV XL,WA COPY IT ! 5678: < BZE XL,CNC35 JUMP IF NULL ! 5679: < ADD =NUM10,XL INCREMENT ! 5680: < BHI XL,PRLEN,CNC09 USE DEFAULT LSTP0 VAL IF TOO LONG ! 5681: < ADD =NUM04,WA POINT JUST PAST TITLE ! 5682: --- ! 5683: > BRN CNC10 RETURN ! 5684: 14910,14914d13673 ! 5685: < * STORE OFFSET TO PAGE NN MESSAGE FOR SHORT TITLE ! 5686: < * ! 5687: < CNC35 MOV WA,LSTPO STORE OFFSET ! 5688: < BRN CNC09 RETURN ! 5689: < * ! 5690: 14915a13675 ! 5691: > * ! 5692: 14919,14921c13679,13680 ! 5693: < CNC36 JSR SYSTT TOGGLE SWITCH ! 5694: < BRN CNC08 MERGE ! 5695: < .IF .CULC ! 5696: --- ! 5697: > CNC22 JSR SYSTT TOGGLE SWITCH ! 5698: > BRN CNC09 MERGE ! 5699: 14923,14925c13682 ! 5700: < * -CASE ! 5701: < * SETS VALUE OF KVCAS SO THAT NAMES ARE FOLDED OR NOT ! 5702: < * DURING COMPILATION. ! 5703: --- ! 5704: > * -COPY ! 5705: 14927,14936c13684,13708 ! 5706: < CNC37 JSR SCANE SCAN INTEGER AFTER -CASE ! 5707: < ZER WC GET 0 IN CASE NONE THERE ! 5708: < BEQ XL,=T$SMC,CNC38 SKIP IF NO INTEGER ! 5709: < MOV XR,-(XS) STACK IT ! 5710: < JSR GTSMI CHECK INTEGER ! 5711: < PPM CNC06 FAIL IF NOT INTEGER ! 5712: < PPM CNC06 FAIL IF NEGATIVE OR TOO LARGE ! 5713: < CNC38 MOV WC,KVCAS STORE NEW CASE VALUE ! 5714: < BRN CNC09 MERGE ! 5715: < .FI ! 5716: --- ! 5717: > * GET FILETAG AND NOTIFY OSINT THAT WE ARE NESTING ! 5718: > * ! 5719: > CNC23 JSR SCANE GET FILETAG ! 5720: > BNE =T$CON,XL,CNC06 ERR IF NOT CONSTANT ! 5721: > BNE =B$SCL,(XR),CNC06 ERR IF NOT SCBLK ! 5722: > JSR SYSSC CALL TO START COPY ! 5723: > ERR 258,COPY FILE DOES NOT EXIST ! 5724: > PPM EROSI ERROR RETURN (ALWAYS) ! 5725: > MOV WA,WB SAVE IOTAG FROM OSINT ! 5726: > MOV *COSI$,WA GET SIZE OF COPY BLOCK ! 5727: > JSR ALLOC ALLOCATE ! 5728: > MOV =B$COP,COTYP(XR) SET TYPE ! 5729: > MOV R$COP,CONXT(XR) PLACE AT FRONT OF STACK CHN ! 5730: > MOV XR,R$COP SPLICE IT IN ! 5731: > MOV WB,COIOT(XR) SAVE OSINT IOTAG ! 5732: > MOV TTINS,COTTI(XR) SAVE TTINS ! 5733: > ZER TTINS INPUT NOT FROM TERMINAL NOW ! 5734: > MOV R$CIM,COCIM(XR) SAVE R$CIM IN CASE EXEC TIME ! 5735: > MOV SCNPT,COSPT(XR) SAVE SCNPT IN CASE EXEC TIME ! 5736: > MOV CSWLS,COSLS(XR) SAVE LIST FLAG ! 5737: > MOV CSWIN,COSIN(XR) SAVE -INXXX VALUE ! 5738: > MOV R$STL,COSTL(XR) SAVE SUBTITLE ! 5739: > BZE CSWLS,CNC10 NO LIST -COPY IF -NOLIST ! 5740: > JSR LISTR LIST -COPY CARD ! 5741: > BRN CNC10 EXIT ! 5742: 14939a13712,13750 ! 5743: > * COPND -- END -COPY NESTING ! 5744: > * ! 5745: > * COPND IS CALLED FROM CMPIL AND READR IN ORDER TO ! 5746: > * UNNEST ONE LEVEL OF -COPY AND RESTORE THE PREVIOUS ! 5747: > * INPUT COMPILE STRING. THE COPY BLOCK IS REMOVED ! 5748: > * FROM THE CHAIN AND THE STATE RESTORED FROM IT. ! 5749: > * ! 5750: > * JSR COPND CALL TO END -COPY AT CUR. LEVEL ! 5751: > * (XL,WA,WB,WC) DESTROYED ! 5752: > * ! 5753: > COPND PRC E,0 ENTRY POINT ! 5754: > MOV R$COP,XL GET POINTER TO CURRENT COBLK ! 5755: > BZE XL,COP02 EXIT IF NONE ! 5756: > MOV CONXT(XL),R$COP TAKE OFF CHAIN ! 5757: > MOV COIOT(XL),WA GET IOTAG FOR OSINT ! 5758: > JSR SYSEC CALL TO END COPY ! 5759: > PPM DO NOT USE ! 5760: > PPM EROSI ERROR EXIT ! 5761: > BZE CSWLS,COP01 SKIP LISTING IF -NOLIST ! 5762: > JSR LISTR LIST CURRENT IMAGE ! 5763: > * ! 5764: > * MERGE AFTER POSSIBLE LISTING OF CURRENT IMAGE ! 5765: > * ! 5766: > COP01 MOV COTTI(XL),TTINS RESTORE TERMINAL INPUT FLAG ! 5767: > MOV COSLS(XL),CSWLS RESTORE LISTING STATE ! 5768: > MOV COSPT(XL),SCNPT GET OLD SCAN POINTER ! 5769: > MOV COSIN(XL),CSWIN OLD INPUT IMAGE LENGTH ! 5770: > MOV COSTL(XL),R$STL RESTORE SUBTITLE STRING ! 5771: > MNZ LSTPF THIS IMAGE LISTED IN CNCRD ! 5772: > MOV COCIM(XL),XL GET OLD COMPILER IMAGE SCBLK ! 5773: > MOV XL,R$CIM RESTORE IT ! 5774: > MOV SCLEN(XL),SCNIL SET INPUT IMAGE LENGTH TOO ! 5775: > * ! 5776: > * MERGE TO EXIT ! 5777: > * ! 5778: > COP02 EXI RETURN TO CALLER ! 5779: > ENP END PROCEDURE COPND ! 5780: > EJC ! 5781: > * ! 5782: 14950a13762,13763 ! 5783: > .IF .CNLD ! 5784: > .ELSE ! 5785: 14957,14958d13769 ! 5786: < .IF .CNLD ! 5787: < .ELSE ! 5788: 14966d13776 ! 5789: < .FI ! 5790: 14970a13781 ! 5791: > .FI ! 5792: 14981c13792 ! 5793: < ERB 248,ATTEMPTED REDEFINITION OF SYSTEM FUNCTION ! 5794: --- ! 5795: > ERB 217,ATTEMPTED REDEFINITION OF SYSTEM FUNCTION ! 5796: 14991,15058d13801 ! 5797: < * DTACH -- DETACH I/O ASSOCIATED NAMES ! 5798: < * ! 5799: < * DETACHES TRBLKS FROM I/O ASSOCIATED VARIABLES, REMOVES ! 5800: < * ENTRY FROM IOCHN CHAIN ATTACHED TO FILEARG1 VRBLK AND MAY ! 5801: < * REMOVE VRBLK ACCESS AND STORE TRAPS. ! 5802: < * INPUT, OUTPUT, TERMINAL ARE HANDLED SPECIALLY. ! 5803: < * ! 5804: < * (XL) I/O ASSOC. VBL NAME BASE PTR ! 5805: < * (WA) OFFSET TO NAME ! 5806: < * JSR DTACH CALL FOR DETACH OPERATION ! 5807: < * (XL,XR,WA,WB,WC) DESTROYED ! 5808: < * ! 5809: < DTACH PRC E,0 ENTRY POINT ! 5810: < MOV XL,DTCNB STORE NAME BASE (GBCOL NOT CALLED) ! 5811: < ADD WA,XL POINT TO NAME LOCATION ! 5812: < MOV XL,DTCNM STORE IT ! 5813: < * ! 5814: < * LOOP TO SEARCH FOR I/O TRBLK ! 5815: < * ! 5816: < DTCH1 MOV XL,XR COPY NAME POINTER ! 5817: < * ! 5818: < * CONTINUE AFTER BLOCK DELETION ! 5819: < * ! 5820: < DTCH2 MOV (XL),XL POINT TO NEXT VALUE ! 5821: < BNE (XL),=B$TRT,DTCH6 JUMP AT CHAIN END ! 5822: < MOV TRTYP(XL),WA GET TRAP BLOCK TYPE ! 5823: < BEQ WA,=TRTIN,DTCH3 JUMP IF INPUT ! 5824: < BEQ WA,=TRTOU,DTCH3 JUMP IF OUTPUT ! 5825: < ADD *TRNXT,XL POINT TO NEXT LINK ! 5826: < BRN DTCH1 LOOP ! 5827: < * ! 5828: < * DELETE AN OLD ASSOCIATION ! 5829: < * ! 5830: < DTCH3 MOV TRVAL(XL),(XR) DELETE TRBLK ! 5831: < MOV XL,WA DUMP XL ... ! 5832: < MOV XR,WB ... AND XR ! 5833: < MOV TRTRF(XL),XL POINT TO TRTRF TRAP BLOCK ! 5834: < BZE XL,DTCH5 JUMP IF NO IOCHN ! 5835: < BNE (XL),=B$TRT,DTCH5 JUMP IF INPUT, OUTPUT, TERMINAL ! 5836: < * ! 5837: < * LOOP TO SEARCH IOCHN CHAIN FOR NAME PTR ! 5838: < * ! 5839: < DTCH4 MOV XL,XR REMEMBER LINK PTR ! 5840: < MOV TRTRF(XL),XL POINT TO NEXT LINK ! 5841: < BZE XL,DTCH5 JUMP IF END OF CHAIN ! 5842: < MOV IONMB(XL),WC GET NAME BASE ! 5843: < ADD IONMO(XL),WC ADD OFFSET ! 5844: < BNE WC,DTCNM,DTCH4 LOOP IF NO MATCH ! 5845: < MOV TRTRF(XL),TRTRF(XR) REMOVE NAME FROM CHAIN ! 5846: < EJC ! 5847: < * ! 5848: < * DTACH (CONTINUED) ! 5849: < * ! 5850: < * PREPARE TO RESUME I/O TRBLK SCAN ! 5851: < * ! 5852: < DTCH5 MOV WA,XL RECOVER XL ... ! 5853: < MOV WB,XR ... AND XR ! 5854: < ADD *TRVAL,XL POINT TO VALUE FIELD ! 5855: < BRN DTCH2 CONTINUE ! 5856: < * ! 5857: < * EXIT POINT ! 5858: < * ! 5859: < DTCH6 MOV DTCNB,XR POSSIBLE VRBLK PTR ! 5860: < JSR SETVR RESET VRBLK IF NECESSARY ! 5861: < EXI RETURN ! 5862: < ENP END PROCEDURE DTACH ! 5863: < EJC ! 5864: < * ! 5865: 15069c13812 ! 5866: < WTB XR CONVERT TO BYTE OFFSET ! 5867: --- ! 5868: > WTB XR CONVERT TO BAU OFFSET ! 5869: 15092,15093c13835 ! 5870: < * DMARG EQ 2 FULL DUMP (INCL ARRAYS ETC.) ! 5871: < * DMARG GE 3 CORE DUMP ! 5872: --- ! 5873: > * DMARG GE 2 FULL DUMP (INCL ARRAYS ETC.) ! 5874: 15101d13842 ! 5875: < BGT XR,=NUM02,DMP29 JUMP IF CORE DUMP REQUIRED ! 5876: 15108,15110c13849 ! 5877: < JSR PRTST PRINT IT ! 5878: < JSR PRTNL TERMINATE PRINT LINE ! 5879: < JSR PRTNL AND PRINT A BLANK LINE ! 5880: --- ! 5881: > JSR PRTFB PRINT IT ! 5882: 15227,15228c13966,13967 ! 5883: < DMP11 JSR PRTNL PRINT BLANK LINE ! 5884: < JSR PRTNL AND ANOTHER ! 5885: --- ! 5886: > DMP11 JSR PRTFH PRINT BLANK LINE ! 5887: > JSR PRTFH AND ANOTHER ! 5888: 15230,15232c13969 ! 5889: < JSR PRTST PRINT HEADING ! 5890: < JSR PRTNL END LINE ! 5891: < JSR PRTNL PRINT ONE BLANK LINE ! 5892: --- ! 5893: > JSR PRTFB PRINT HEADING ! 5894: 15256,15257c13993 ! 5895: < JSR PRTVL PRINT KEYWORD VALUE ! 5896: < JSR PRTNL TERMINATE PRINT LINE ! 5897: --- ! 5898: > JSR PRTVF PRINT KEYWORD VALUE ! 5899: 15276c14012 ! 5900: < BEQ WA,=B$BCT,DMP30 JUMP IF BUFFER ! 5901: --- ! 5902: > BEQ WA,=B$BCT,DMP29 JUMP IF BUFFER ! 5903: 15310c14046 ! 5904: < JSR PRTNL PRINT BLANK LINE ! 5905: --- ! 5906: > JSR PRTFH PRINT BLANK LINE ! 5907: 15312c14048 ! 5908: < JSR PRTVL PRINT BLOCK VALUE (FOR TITLE) ! 5909: --- ! 5910: > JSR PRTVF PRINT BLOCK VALUE (FOR TITLE) ! 5911: 15314d14049 ! 5912: < JSR PRTNL END PRINT LINE ! 5913: 15380,15384d14114 ! 5914: < * ! 5915: < * CALL SYSTEM CORE DUMP ROUTINE ! 5916: < * ! 5917: < DMP29 JSR SYSDM CALL IT ! 5918: < BRN DMP28 RETURN ! 5919: 15393,15395c14123,14124 ! 5920: < DMP30 JSR PRTNL PRINT BLANK LINE ! 5921: < JSR PRTVL PRINT VALUE ID FOR TITLE ! 5922: < JSR PRTNL FORCE NEW LINE ! 5923: --- ! 5924: > DMP29 JSR PRTFH PRINT BLANK LINE ! 5925: > JSR PRTVF PRINT VALUE ID FOR TITLE ! 5926: 15415,15416c14144 ! 5927: < JSR PRTCH PRINT IT ! 5928: < JSR PRTNL PRINT NEW LINE ! 5929: --- ! 5930: > JSR PRTCF PRINT IT ! 5931: 15430c14158 ! 5932: < JSR PRTIS PRINT ERROR PTR OR BLANK LINE ! 5933: --- ! 5934: > JSR PRTFH PRINT ERROR PTR OR BLANK LINE ! 5935: 15448,15450c14176 ! 5936: < JSR PRTST PRINT ERROR MESSAGE TEXT ! 5937: < JSR PRTIS PRINT LINE ! 5938: < JSR PRTIS PRINT BLANK LINE ! 5939: --- ! 5940: > JSR PRTFB PRINT ERROR MESSAGE TEXT ! 5941: 15465a14192 ! 5942: > BNZ EROSN,ERT03 SKIP IF SPECIAL EROSI RETURN ! 5943: 15483a14211,14216 ! 5944: > * ! 5945: > * SPECIAL CASE SET UP BY EROSI RETURN TO AVOID SYSEM CALL ! 5946: > * ! 5947: > ERT03 ZER EROSN CLEAR FLAG ! 5948: > MOV R$ETX,XR GET ERROR MESSAGE TEXT ! 5949: > BRN ERT01 RETURN WITHOUT MAKING SYSEM CALL ! 5950: 15498,15499d14230 ! 5951: < * PPM LOC TRANSFER LOC FOR SUCCESSFUL EVAL ! 5952: < * (THE NORMAL RETURN IS NEVER TAKEN) ! 5953: 15507c14238 ! 5954: < EVALI PRC R,4 ENTRY POINT (RECURSIVE) ! 5955: --- ! 5956: > EVALI PRC R,3 ENTRY POINT (RECURSIVE) ! 5957: 15518c14249 ! 5958: < EXI 4 TAKE SUCCESSFUL EXIT ! 5959: --- ! 5960: > EXI SUCCESSFUL RETURN ! 5961: 15621a14353 ! 5962: > * (WA) APPROPRIATE MULTI CHARACTER PCODE ! 5963: 15626,15627c14358 ! 5964: < * PPM LOC TRANSFER LOC FOR SUCCESSFUL EVAL ! 5965: < * (THE NORMAL RETURN IS NEVER TAKEN) ! 5966: --- ! 5967: > * (XL) PCODE OF NEW NODE (ENTRY WA) ! 5968: 15629c14360 ! 5969: < * (XL,WC,RA) DESTROYED ! 5970: --- ! 5971: > * (WA,WC,RA) DESTROYED ! 5972: 15634a14366,14367 ! 5973: > * THIS IS DONE BY THE USUAL INDIRECT BRANCH THROUGH THE ! 5974: > * PCODE PASSED IN WA. ! 5975: 15636c14369,14370 ! 5976: < EVALS PRC R,3 ENTRY POINT (RECURSIVE) ! 5977: --- ! 5978: > EVALS PRC R,2 ENTRY POINT (RECURSIVE) ! 5979: > MOV WA,-(XS) KEEP PCODE ! 5980: 15638a14373 ! 5981: > MOV (XS)+,WA RECOVER PCODE ! 5982: 15644c14379 ! 5983: < MOV =P$BRK,XL APPROPRIATE PCODE FOR OUR USE ! 5984: --- ! 5985: > MOV WA,XL APPROPRIATE PCODE FOR OUR USE ! 5986: 15649c14384,14385 ! 5987: < EXI 3 TAKE SUCCESS RETURN ! 5988: --- ! 5989: > MOV (XR),XL GET PCODE ! 5990: > EXI TAKE SUCCESS RETURN ! 5991: 15653c14389,14390 ! 5992: < EVLS1 EXI 2 TAKE FAILURE RETURN ! 5993: --- ! 5994: > EVLS1 MOV (XS)+,WA POP STACK ! 5995: > EXI 2 TAKE FAILURE RETURN ! 5996: 15733c14470 ! 5997: < EVLX3 MOV (XS)+,XR LOAD VALUE ! 5998: --- ! 5999: > EVLXV MOV (XS)+,XR LOAD VALUE ! 6000: 15735c14472 ! 6001: < ERB 249,EXPRESSION EVALUATED BY NAME RETURNED VALUE ! 6002: --- ! 6003: > ERB 218,EXPRESSION EVALUATED BY NAME RETURNED VALUE ! 6004: 15739c14476 ! 6005: < EVLX4 MOV (XS)+,WA LOAD NAME OFFSET ! 6006: --- ! 6007: > EVLXN MOV (XS)+,WA LOAD NAME OFFSET ! 6008: 15743c14480 ! 6009: < PPM EVLX6 JUMP IF FAILURE DURING ACCESS ! 6010: --- ! 6011: > PPM EVLXF JUMP IF FAILURE DURING ACCESS ! 6012: 15752c14489 ! 6013: < EVLX6 MNZ WB NOTE UNSUCCESSFUL ! 6014: --- ! 6015: > EVLXF MNZ WB NOTE UNSUCCESSFUL ! 6016: 15806c14543 ! 6017: < BTW WA CONVERT BYTE COUNT TO WORD COUNT ! 6018: --- ! 6019: > BTW WA CONVERT BAU COUNT TO WORD COUNT ! 6020: 15985c14722 ! 6021: < MOV =OPDVP,XR ELSE POINT TO UNMISTAKABLE CONCAT. ! 6022: --- ! 6023: > MOV =OPDVP,XR ELSE POINT TO UNMISTAKEABLE CONCAT ! 6024: 15987c14724 ! 6025: < * MERGE HERE WHEN XR SET UP WITH PROPER CONCATENATION DVBLK ! 6026: --- ! 6027: > * MERGE WITH CORRECT CONCATENATION DVBLK IN XR ! 6028: 15991c14728 ! 6029: < ERB 220,SYNTAX ERROR. MISSING OPERATOR ! 6030: --- ! 6031: > ERB 219,SYNTAX ERROR. MISSING OPERATOR ! 6032: 15998c14735 ! 6033: < ERB 221,SYNTAX ERROR. MISSING OPERAND ! 6034: --- ! 6035: > ERB 220,SYNTAX ERROR. MISSING OPERAND ! 6036: 16023c14760 ! 6037: < EXP08 ERB 222,SYNTAX ERROR. INVALID USE OF LEFT BRACKET ! 6038: --- ! 6039: > EXP08 ERB 221,SYNTAX ERROR. INVALID USE OF LEFT BRACKET ! 6040: 16049c14786 ! 6041: < ERB 223,SYNTAX ERROR. INVALID USE OF COMMA ! 6042: --- ! 6043: > ERB 222,SYNTAX ERROR. INVALID USE OF COMMA ! 6044: 16062c14799 ! 6045: < ERB 224,SYNTAX ERROR. UNBALANCED RIGHT PARENTHESIS ! 6046: --- ! 6047: > ERB 223,SYNTAX ERROR. UNBALANCED RIGHT PARENTHESIS ! 6048: 16080c14817 ! 6049: < WTB WA CONVERT LENGTH TO BYTES ! 6050: --- ! 6051: > WTB WA CONVERT LENGTH TO BAUS ! 6052: 16124c14861 ! 6053: < ERB 225,SYNTAX ERROR. UNBALANCED RIGHT BRACKET ! 6054: --- ! 6055: > ERB 224,SYNTAX ERROR. UNBALANCED RIGHT BRACKET ! 6056: 16153c14890 ! 6057: < EXP21 ERB 226,SYNTAX ERROR. MISSING RIGHT PAREN ! 6058: --- ! 6059: > EXP21 ERB 225,SYNTAX ERROR. MISSING RIGHT PAREN ! 6060: 16157c14894 ! 6061: < EXP22 ERB 227,SYNTAX ERROR. RIGHT PAREN MISSING FROM GOTO ! 6062: --- ! 6063: > EXP22 ERB 226,SYNTAX ERROR. RIGHT PAREN MISSING FROM GOTO ! 6064: 16161c14898 ! 6065: < EXP23 ERB 228,SYNTAX ERROR. RIGHT BRACKET MISSING FROM GOTO ! 6066: --- ! 6067: > EXP23 ERB 227,SYNTAX ERROR. RIGHT BRACKET MISSING FROM GOTO ! 6068: 16165c14902 ! 6069: < EXP24 ERB 229,SYNTAX ERROR. MISSING RIGHT ARRAY BRACKET ! 6070: --- ! 6071: > EXP24 ERB 228,SYNTAX ERROR. MISSING RIGHT ARRAY BRACKET ! 6072: 16269c15006 ! 6073: < EXDM1 BLE 1(XS),=NUM05,EXDM2 JUMP IF STACK BOTTOM (SAVED LEVEL ! 6074: --- ! 6075: > EXDM1 BLE 1(XS),=NUM05,EXDM2 JUMP IF STACK BOTTOM (SAVED LEVEL) ! 6076: 16324d15060 ! 6077: < .IF .CULC ! 6078: 16326,16369d15061 ! 6079: < * FLSTG -- FOLD STRING TO UPPER CASE ! 6080: < * ! 6081: < * FLSTG FOLDS A CHARACTER STRING CONTAINING LOWER CASE ! 6082: < * CHARACCTERS TO ONE CONTAINING UPPER CASE CHARACTERS. ! 6083: < * FOLDING IS ONLY DONE IF &CASE (KVCAS) IS NOT ZERO. ! 6084: < * ! 6085: < * (XR) STRING ARGUMENT ! 6086: < * (WA) LENGTH OF STRING ! 6087: < * JSR FLSTG CALL TO FOLD STRING ! 6088: < * (XR) RESULT STRING (POSSIBLY ORIGINAL) ! 6089: < * (WC) DESTROYED ! 6090: < * ! 6091: < FLSTG PRC R,0 ENTRY POINT ! 6092: < BZE KVCAS,FST99 SKIP IF &CASE IS 0 ! 6093: < MOV XL,-(XS) SAVE XL ACROSS CALL ! 6094: < MOV XR,-(XS) SAVE ORIGINAL SCBLK PTR ! 6095: < JSR ALOCS ALLOCATE NEW STRING BLOCK ! 6096: < MOV (XS),XL POINT TO ORIGINAL SCBLK ! 6097: < MOV XR,-(XS) SAVE POINTER TO NEW SCBLK ! 6098: < PLC XL POINT TO ORIGINAL CHARS ! 6099: < PLC XR POINT TO NEW CHARS ! 6100: < ZER -(XS) INIT DID FOLD FLAG ! 6101: < LCT WC,WC LOAD LOOP COUNTER ! 6102: < FST01 LCH WA,(XL)+ LOAD CHARACTER ! 6103: < BGT =CH$$A,WA,FST02 SKIP IF LESS THAN LC A ! 6104: < BGT WA,=CH$$$,FST02 SKIP IF GREATER THAN LC Z ! 6105: < FLC WA FOLD CHARACTER TO UPPER CASE ! 6106: < MNZ (XS) SET DID FOLD CHARACTER FLAG ! 6107: < FST02 SCH WA,(XR)+ STORE (POSSIBLY FOLDED) CHARACTER ! 6108: < BCT WC,FST01 LOOP THRU ENTIRE STRING ! 6109: < CSC XR COMPLETE STORE CHARACTERS ! 6110: < BNZ (XS)+,FST10 SKIP IF FOLDING DONE ! 6111: < MOV (XS)+,DNAMP DO NOT NEED NEW SCBLK ! 6112: < MOV (XS)+,XR RETURN ORIGINAL SCBLK ! 6113: < BRN FST20 MERGE BELOW ! 6114: < FST10 MOV (XS)+,XR RETURN NEW SCBLK ! 6115: < ICA XS THROW AWAY ORIGINAL SCBLK POINTER ! 6116: < FST20 MOV SCLEN(XR),WA RELOAD STRING LENGTH ! 6117: < MOV (XS)+,XL RESTORE XL ! 6118: < FST99 EXI RETURN ! 6119: < ENP ! 6120: < EJC ! 6121: < .FI ! 6122: < * ! 6123: 16414c15106 ! 6124: < * ENTRY VALUE OF WB IS THE NUMBER OF BYTES TO MOVE UP. ! 6125: --- ! 6126: > * ENTRY VALUE OF WB IS THE NUMBER OF BAUS TO MOVE UP. ! 6127: 16549,16550c15241,15242 ! 6128: < * BYTES. SET TO THE ADDRESS OF THE ! 6129: < * FIRST BYTE WHILE ACTUALLY SCANNING ! 6130: --- ! 6131: > * BAUS. SET TO THE ADDRESS OF THE ! 6132: > * FIRST BAU WHILE ACTUALLY SCANNING ! 6133: 16570a15263,15265 ! 6134: > .IF .CEPP ! 6135: > BOD WA,GBC07 JUMP IF ENTRY POINTER (UNUSED) ! 6136: > .ELSE ! 6137: 16572a15268 ! 6138: > .FI ! 6139: 16578a15275,15277 ! 6140: > .IF .CEPP ! 6141: > BEV WA,GBC06 LOOP BACK IF NOT END OF CHAIN ! 6142: > .ELSE ! 6143: 16580a15280 ! 6144: > .FI ! 6145: 16603a15304,15306 ! 6146: > .IF .CEPP ! 6147: > BEV WA,GBC09 JUMP IF IN USE ! 6148: > .ELSE ! 6149: 16605a15309 ! 6150: > .FI ! 6151: 16672c15376 ! 6152: < ERB 250,INSUFFICIENT MEMORY TO COMPLETE DUMP ! 6153: --- ! 6154: > ERB 229,INSUFFICIENT MEMORY TO COMPLETE DUMP ! 6155: 16702a15407,15410 ! 6156: > .IF .CRPP ! 6157: > BOD XL,GPF02 JUMP IF NOT PTR INTO DYNAMIC AREA ! 6158: > .ELSE ! 6159: > .FI ! 6160: 16714a15423,15425 ! 6161: > .IF .CEPP ! 6162: > BOD WA,GPF03 JUMP IF NOT ALREADY PROCESSED ! 6163: > .ELSE ! 6164: 16716a15428 ! 6165: > .FI ! 6166: 16752a15465 ! 6167: > IFF BL$CO,GPF19 COBLK ! 6168: 16889a15603,15608 ! 6169: > * ! 6170: > * COBLK ! 6171: > * ! 6172: > GPF19 MOV *COSI$,WA SET LENGTH ! 6173: > MOV *CONXT,WB AND OFFSET ! 6174: > BRN GPF05 ALL SET ! 6175: 16890a15610,15611 ! 6176: > .IF .CNBF ! 6177: > .ELSE ! 6178: 16892a15614,15648 ! 6179: > * GTBUF -- GET BUFFER ! 6180: > * ! 6181: > * GTBUF IS PASSED AN OBJECT AND RETURNS A BUFFER IF ! 6182: > * POSSIBLE. UNLESS THE OBJECT IS ALREADY A BUFFER, ! 6183: > * THIS INVOLVES A CONVERSION TO STRING AND THEN ! 6184: > * STRING TO BUFFER. ! 6185: > * ! 6186: > * (XR) OBJECT TO BE CONVERTED ! 6187: > * JSR GTBUF CALL TO GET BUFFER ! 6188: > * PPM LOC TRANSFER LOC FOR CONVERT IMPOSSIBLE ! 6189: > * (XR) RESULTING BUFFER ! 6190: > * (XL,WA,WB,WC) DESTROYED ! 6191: > * ! 6192: > GTBUF PRC E,1 ENTRY POINT ! 6193: > BEQ (XR),=B$BCT,GTB01 EXIT IF ALREADY BUFFER ! 6194: > MOV XR,-(XS) STACK TO CONVERT TO STRING ! 6195: > JSR GTSTG CONVERT TO STRING ! 6196: > PPM GTB02 CONVERSION ERROR ! 6197: > MOV XR,XL SAVE STRING POINTER ! 6198: > JSR ALOBF ALLOCATE BUFFER OF SAME SIZE ! 6199: > JSR INSBF COPY IN THE STRING ! 6200: > PPM ALREADY STRING - CANT FAIL TO CNV ! 6201: > PPM MUST BE ENOUGH ROOM ! 6202: > * ! 6203: > * MERGE TO EXIT WITH BUFFER CONTROL BLK IN (XR) ! 6204: > * ! 6205: > GTB01 EXI RETURN TO CALLER ! 6206: > * ! 6207: > * HERE ON CONVERSION FAILURE ! 6208: > * ! 6209: > GTB02 EXI 1 TAKE FAILURE EXIT ! 6210: > ENP ! 6211: > .FI ! 6212: > EJC ! 6213: > * ! 6214: 16895c15651 ! 6215: < * GTARR IS PASSED AN OBJECT AND RETURNS AN ARRAY IF POSSIBL ! 6216: --- ! 6217: > * GTARR IS PASSED AN OBJECT AND RETURNS AN ARRAY IF POSSIBLE ! 6218: 16907c15663,15664 ! 6219: < BNE WA,=B$TBT,GTA9A ELSE FAIL IF NOT A TABLE (SGD02) ! 6220: --- ! 6221: > MOV XR,-(XS) PLACE POSSIBLE TBBLK PTR ON STACK ! 6222: > BNE WA,=B$TBT,GTAR9 ELSE FAIL IF NOT A TABLE ! 6223: 16911d15667 ! 6224: < MOV XR,-(XS) REPLACE TBBLK POINTER ON STACK ! 6225: 16973c15729 ! 6226: < WTB WA CONVERT LENGTH TO BYTES ! 6227: --- ! 6228: > WTB WA CONVERT LENGTH TO BAUS ! 6229: 17027,17031c15783,15784 ! 6230: < GTAR9 MOV (XS)+,XR RESTORE STACK FOR CONV ERR (SGD02) ! 6231: < * ! 6232: < * MERGE TO TAKE CONVERT ERROR WHEN STACK ADJUSTED OK ! 6233: < * ! 6234: < GTA9A EXI 1 RETURN ! 6235: --- ! 6236: > GTAR9 MOV (XS)+,XR CLEAR UP STACK ! 6237: > EXI 1 RETURN ! 6238: 17095,17099c15848,15852 ! 6239: < * CHECK THE LAST CHARACTER OF THE STRING FOR COLON OR ! 6240: < * SEMICOLON. THESE CHARACTERS CAN LEGITIMATELY END AN ! 6241: < * EXPRESSION IN OPEN CODE, SO EXPAN WILL NOT DETECT THEM ! 6242: < * AS ERRORS, BUT THEY ARE INVALID AS TERMINATORS FOR A ! 6243: < * STRING THAT IS BEING CONVERTED TO EXPRESSION FORM. ! 6244: --- ! 6245: > * CHECK THE LAST CHAR OF STRING FOR COLON OR ! 6246: > * SEMICOLON. THEY CAN LEGITIMATELY END AN EXPRESSION ! 6247: > * IN OPEN CODE, SO EXPAN WILL NOT FAIL THEM BUT THEY ARE ! 6248: > * INVALID AS TERMINATORS FOR A STRING WHICH IS TO BE ! 6249: > * CONVERTED TO EXPRESSION FORM. ! 6250: 17101,17105c15854,15858 ! 6251: < MOV XR,XL COPY INPUT STRING POINTER (REG06) ! 6252: < PLC XL,WA POINT ONE PAST THE STRING END (REG06) ! 6253: < LCH XL,-(XL) FETCH THE LAST CHARACTER (REG06) ! 6254: < BEQ XL,=CH$CL,GTEX2 ERROR IF IT IS A SEMICOLON (REG06) ! 6255: < BEQ XL,=CH$SM,GTEX2 OR IF IT IS A COLON (REG06) ! 6256: --- ! 6257: > MOV XR,XL COPY ARGUMENT STRING ! 6258: > PLC XL,WA POINT PAST STRING END ! 6259: > LCH XL,-(XL) GET LAST CHAR ! 6260: > BEQ XL,=CH$CL,GTEX2 FAIL IF COLON ! 6261: > BEQ XL,=CH$SM,GTEX2 FAIL IF SEMICOLON ! 6262: 17196c15949 ! 6263: < BEQ WA,=B$ICL,GTN34 JUMP IF INTEGER (NO CONVERSION) ! 6264: --- ! 6265: > BEQ WA,=B$ICL,GTN3A JUMP IF INTEGER (NO CONVERSION) ! 6266: 17199c15952 ! 6267: < BEQ WA,=B$RCL,GTN34 JUMP IF REAL (NO CONVERSION) ! 6268: --- ! 6269: > BEQ WA,=B$RCL,GTN3A JUMP IF REAL (NO CONVERSION) ! 6270: 17204a15958 ! 6271: > STI GTNSV SAVE IA ! 6272: 17357,17359c16111,16113 ! 6273: < .IF .CULC ! 6274: < BEQ WB,=CH$$E,GTN15 JUMP IF E FOR EXPONENT ! 6275: < BEQ WB,=CH$$D,GTN15 JUMP IF D FOR EXPONENT ! 6276: --- ! 6277: > .IF .CASL ! 6278: > BEQ WB,=CH$$E,GTN15 JUMP FOR EXPT ! 6279: > BEQ WB,=CH$$D,GTN15 JUMP FOR EXPT ! 6280: 17462c16216 ! 6281: < WTB WA CONVERT REMAINING SCALE TO BYTE OFS ! 6282: --- ! 6283: > WTB WA CONVERT REMAINING SCALE TO BAU OFS ! 6284: 17490c16244 ! 6285: < WTB WA CONVERT REMAINING SCALE TO BYTE OFS ! 6286: --- ! 6287: > WTB WA CONVERT REMAINING SCALE TO BAU OFS ! 6288: 17524c16278,16279 ! 6289: < GTN34 EXI RETURN TO GTNUM CALLER ! 6290: --- ! 6291: > GTN34 LDI GTNSV RECOVER IA ! 6292: > GTN3A EXI RETURN TO GTNUM CALLER ! 6293: 17538a16294 ! 6294: > LDI GTNSV RECOVER IA ! 6295: 17552d16307 ! 6296: < * (WA,WB) DESTROYED (CONVERSION ERROR ONLY) ! 6297: 17558a16314 ! 6298: > BRN GNV01 FAIL ! 6299: 17559a16316,16320 ! 6300: > * RESTORE REGS AND FAIL ! 6301: > * ! 6302: > GNV00 MOV GNVSA,WA RESTORE REGS ! 6303: > MOV GNVSB,WB ! 6304: > * ! 6305: 17570,17574c16331,16332 ! 6306: < PPM GNV01 JUMP IF CONVERSION ERROR ! 6307: < BZE WA,GNV01 NULL STRING IS AN ERROR ! 6308: < .IF .CULC ! 6309: < JSR FLSTG FOLD LOWER CASE TO UPPER CASE ! 6310: < .FI ! 6311: --- ! 6312: > PPM GNV00 JUMP IF CONVERSION ERROR ! 6313: > BZE WA,GNV00 NULL STRING IS AN ERROR ! 6314: 17575a16334,16339 ! 6315: > .IF .CASL ! 6316: > MOV XR,XL COPY STRING POINTER ! 6317: > ZER WB ZERO OFFSET ! 6318: > JSR SBSTG CONVERT TO PREFERRED CASE ! 6319: > MOV SCLEN(XR),WA RECOVER STRING LENGTH ! 6320: > .FI ! 6321: 17586c16350 ! 6322: < WTB WC CONVERT OFFSET TO BYTES ! 6323: --- ! 6324: > WTB WC CONVERT OFFSET TO BAUS ! 6325: 17635c16399 ! 6326: < WTB XL CONVERT TO BYTE OFFSET ! 6327: --- ! 6328: > WTB XL CONVERT TO BAU OFFSET ! 6329: 17687c16451 ! 6330: < WTB WA CONVERT LENGTH TO BYTES ! 6331: --- ! 6332: > WTB WA CONVERT LENGTH TO BAUS ! 6333: 17703c16467 ! 6334: < WTB WA CONVERT TO LENGTH IN BYTES ! 6335: --- ! 6336: > WTB WA CONVERT TO LENGTH IN BAUS ! 6337: 17826c16590 ! 6338: < * MERGE HERE TO EXIT OF NO CONVERSION REQUIRED ! 6339: --- ! 6340: > * MERGE HERE TO EXIT IF NO CONVERSION REQUIRED ! 6341: 17901c16665 ! 6342: < BGT WC,MXLEN,GTSM3 OR IF TOO SMALL ! 6343: --- ! 6344: > BGT WC,MXLEN,GTSM3 OR IF TOO LARGE ! 6345: 17979c16743 ! 6346: < .IF .CNCI ! 6347: --- ! 6348: > .IF .CSCI ! 6349: 18008d16771 ! 6350: < .FI ! 6351: 18023a16787 ! 6352: > .FI ! 6353: 18181a16946,16948 ! 6354: > .IF .CPLC ! 6355: > MOV =CH$$E,WA GET CHAR LETTER E ! 6356: > .ELSE ! 6357: 18182a16950 ! 6358: > .FI ! 6359: 18265c17033 ! 6360: < MOV BCBUF(XL),XL POINT TO BFBLK ! 6361: --- ! 6362: > MOV BCBUF(XL),XL POINT TOBFBLK ! 6363: 18326c17094 ! 6364: < * HASHS IS USED TO CONVERT A STRING TO A UNIQUE INTEGER ! 6365: --- ! 6366: > * HASHS REPRODUCIBLY MAPS A STRING TO AN INTEGER ! 6367: 18337c17105 ! 6368: < * START WITH THE LENGTH OF THE STRING (SGD07) ! 6369: --- ! 6370: > * START WITH THE LENGTH OF THE STRING ! 6371: 18383,18384c17151,17154 ! 6372: < MFI XR,ICBL1 COPY SMALL INTEGERS ! 6373: < BLE XR,=NUM02,ICBL3 JUMP IF 0,1 OR 2 ! 6374: --- ! 6375: > ILT ICBL1 SKIP IF NEGATIVE ! 6376: > SBI INTV2 REDUCE BY TWO ! 6377: > ILE ICBL3 JUMP IF 0 , 1 OR 2 ! 6378: > ADI INTV2 RESTORE VALUE ! 6379: 18405c17175,17177 ! 6380: < ICBL3 WTB XR CONVERT INTEGER TO OFFSET ! 6381: --- ! 6382: > ICBL3 ADI INTV2 RESTORE VALUE ! 6383: > MFI XR CONVERT TO SHORT INTEGER ! 6384: > WTB XR CONVERT INTEGER TO OFFSET ! 6385: 18503c17275 ! 6386: < * INOUT - USED TO INITIALISE INPUT AND OUTPUT VARIABLES ! 6387: --- ! 6388: > * INOUT - USED TO INITIALISE .INPUT .OUTPUT .TERMINAL ! 6389: 18506c17278 ! 6390: < * (WB) TRBLK TYPE ! 6391: --- ! 6392: > * (WB) TRBLK TYPE (TRTYP FIELD) ! 6393: 18508,18509d17279 ! 6394: < * (XL) VRBLK PTR ! 6395: < * (XR) TRBLK PTR ! 6396: 18521c17291 ! 6397: < JSR GTNVR BUILD VRBLK ! 6398: --- ! 6399: > JSR GTNVR FIND OR BUILD VRBLK ! 6400: 18524,18525c17294,17296 ! 6401: < MOV (XS)+,WB GET TRTER FIELD ! 6402: < ZER XL ZERO TRFPT ! 6403: --- ! 6404: > MOV (XS)+,WB GET TRTYP FIELD ! 6405: > ZER XL ZERO TRTRI ! 6406: > MOV VRSVP(XR),XR GET SVBLK POINTER ! 6407: 18528,18531c17299,17301 ! 6408: < MOV VRSVP(XL),TRTER(XR) STORE SVBLK POINTER ! 6409: < MOV XR,VRVAL(XL) STORE TRBLK PTR IN VRBLK ! 6410: < MOV =B$VRA,VRGET(XL) SET TRAPPED ACCESS ! 6411: < MOV =B$VRV,VRSTO(XL) SET TRAPPED STORE ! 6412: --- ! 6413: > MOV *VRVAL,WA OFFSET TO VALUE FIELD ! 6414: > JSR TRCHN PUT TRBLK IN TRACE CHAIN ! 6415: > PPM CANT FAIL ! 6416: 18542,18543c17312,17313 ! 6417: < * SECTION TO BE REPLACED IS DIFFERENT THAN THE LENGTH OF ! 6418: < * THE GIVEN STRING, AND THE REPLACEMENT IS NOT AN APPEND, ! 6419: --- ! 6420: > * SECTION TO BE REPLACED DIFFERS FROM THAT OF THE ! 6421: > * GIVEN STRING, AND THE REPLACEMENT IS NOT AN APPEND, ! 6422: 18547,18548c17317,17318 ! 6423: < * (XR) POINTER TO BFBLK ! 6424: < * (XL) OBJECT WHICH IS STRING CONVERTABLE ! 6425: --- ! 6426: > * (XR) POINTER TO BCBLK ! 6427: > * (XL) OBJECT WHICH IS STRING CONVERTIBLE ! 6428: 18552,18553c17322,17324 ! 6429: < * PPM LOC THREAD IF (XR) NOT CONVERTABLE ! 6430: < * PPM LOC THREAD IF INSERT NOT POSSIBLE ! 6431: --- ! 6432: > * PPM LOC ERROR IF (XR) NOT CONVERTIBLE ! 6433: > * PPM LOC FAIL IF INSERT NOT POSSIBLE ! 6434: > * (XL,WA,WB,WC) DESTROYED ! 6435: 18562d17332 ! 6436: < MOV WC,INSSC SAVE ENTRY WC ! 6437: 18568d17337 ! 6438: < MOV XL,-(XS) SAVE ENTRY XL ! 6439: 18570c17339 ! 6440: < MOV XL,-(XS) STACK AGAIN FOR GTSTG ! 6441: --- ! 6442: > MOV XL,-(XS) STACK STRING POINTER FOR GTSTG ! 6443: 18572c17341 ! 6444: < PPM INS05 TAKE STRING CONVERT ERR EXIT ! 6445: --- ! 6446: > PPM INS06 TAKE STRING CONVERT ERR EXIT ! 6447: 18574c17343,17346 ! 6448: < MOV (XS),XR RESTORE BCBLK PTR ! 6449: --- ! 6450: > MOV (XS)+,XR RESTORE BCBLK PTR ! 6451: > MOV XR,INSBC BCBLK PTR - NO DANGER OF GARB COLLN ! 6452: > MOV BCBUF(XR),XR POINT TO BFBLK ! 6453: > MOV XR,INSBB BFBLK PTR - NO DANGER OF GARB COLLN ! 6454: 18577,18579c17349,17350 ! 6455: < MOV BCBUF(XR),XR POINT TO BFBLK ! 6456: < BGT WA,BFALC(XR),INS06 FAIL IF RESULT EXCEEDS ALLOCATION ! 6457: < MOV (XS),XR RESTORE BCBLK PTR ! 6458: --- ! 6459: > BGT WA,BFALC(XR),INS07 FAIL IF RESULT EXCEEDS ALLOCATION ! 6460: > MOV INSBC,XR RESTORE BCBLK PTR ! 6461: 18586,18588c17357 ! 6462: < BZE WA,INS04 SKIP SHIFT IF NOTHING TO DO ! 6463: < BEQ INSSB,SCLEN(XL),INS04 SKIP SHIFT IF LENGTHS MATCH ! 6464: < MOV BCBUF(XR),XR POINT TO BFBLK ! 6465: --- ! 6466: > MOV INSBB,XR POINT TO BFBLK ! 6467: 18590c17359,17361 ! 6468: < BLO INSSB,SCLEN(XL),INS01 BRN IF SHFT IS FOR MORE ROOM ! 6469: --- ! 6470: > BZE WA,INS02 SKIP SHIFT IF NOTHING TO DO ! 6471: > BEQ INSSB,SCLEN(XL),INS02 SKIP SHIFT IF LENGTHS MATCH ! 6472: > BLO INSSB,SCLEN(XL),INS01 BRN IF SHIFT IS FOR MORE ROOM ! 6473: 18597c17368 ! 6474: < * SEGMENT BEING REPLACED.) REGISTERS ARE SET AS: ! 6475: --- ! 6476: > * SEGMENT BEING REPLACED). REGISTERS ARE SET AS - ! 6477: 18622c17393 ! 6478: < * MERGE HERE AFTER MOVE TO ADJUST PADDING AT NEW BUFFER END ! 6479: --- ! 6480: > * MERGE HERE AFTER POSSIBLE MOVE TO ADJUST ZERO FILL AT END ! 6481: 18626a17398 ! 6482: > BTC WA CONVERT TO CHAR COUNT ! 6483: 18629,18630c17401 ! 6484: < MOV (XS),XR GET BCBLK PTR ! 6485: < MOV BCBUF(XR),XR GET BFBLK PTR ! 6486: --- ! 6487: > MOV INSBB,XR POINT TO BFBLK ! 6488: 18633a17405 ! 6489: > EJC ! 6490: 18634a17407,17408 ! 6491: > * INSBF (CONTINUED) ! 6492: > * ! 6493: 18639d17412 ! 6494: < EJC ! 6495: 18641,18642d17413 ! 6496: < * INSBF (CONTINUED) ! 6497: < * ! 6498: 18646,18647c17417 ! 6499: < INS04 MOV (XS),XR GET BCBLK PTR ! 6500: < MOV BCBUF(XR),XR GET BFBLK PTR ! 6501: --- ! 6502: > INS04 MOV INSBB,XR POINT TO BFBLK ! 6503: 18648a17419 ! 6504: > BZE WA,INS05 SKIP IF NO CHARS TO INSERT ! 6505: 18652,18656c17423,17427 ! 6506: < MOV (XS)+,XR RESTORE ENTRY XR ! 6507: < MOV (XS)+,XL RESTORE ENTRY XL ! 6508: < MOV INSSA,WA RESTORE ENTRY WA ! 6509: < MOV INSSB,WB RESTORE ENTRY WB ! 6510: < MOV INSSC,WC RESTORE ENTRY WC ! 6511: --- ! 6512: > * ! 6513: > * SUCCESSFUL RETURN ! 6514: > * ! 6515: > INS05 MOV INSBC,XR RESTORE ENTRY XR ! 6516: > ZER XL CLEAR GARBAGE CHAR POINTER ! 6517: 18661,18665c17432 ! 6518: < INS05 MOV (XS)+,XR RESTORE ENTRY XR ! 6519: < MOV (XS)+,XL RESTORE ENTRY XL ! 6520: < MOV INSSA,WA RESTORE ENTRY WA ! 6521: < MOV INSSB,WB RESTORE ENTRY WB ! 6522: < MOV INSSC,WC RESTORE ENTRY WC ! 6523: --- ! 6524: > INS06 ICA XS DISCARD UNWANTED STACK TOP ! 6525: 18670,18678c17437 ! 6526: < INS06 MOV (XS)+,XR RESTORE ENTRY XR ! 6527: < MOV (XS)+,XL RESTORE ENTRY XL ! 6528: < * ! 6529: < * MERGE FOR LENGTH FAILURE EXIT WITH STACK SET ! 6530: < * ! 6531: < INS07 MOV INSSA,WA RESTORE ENTRY WA ! 6532: < MOV INSSB,WB RESTORE ENTRY WB ! 6533: < MOV INSSC,WC RESTORE ENTRY WC ! 6534: < EXI 2 ALTERNATE EXIT ! 6535: --- ! 6536: > INS07 EXI 2 ALTERNATE EXIT ! 6537: 18681a17441 ! 6538: > * IOFTG -- GET IOTAG ! 6539: 18683c17443,17444 ! 6540: < * IOFCB -- GET INPUT/OUTPUT FCBLK POINTER ! 6541: --- ! 6542: > * USED TO FIND THE IOTAG (IF ANY) CORRESPONDING TO THE ! 6543: > * FILETAG ARGUMENT. ! 6544: 18685,18691c17446,17448 ! 6545: < * USED BY ENDFILE, EJECT AND REWIND TO FIND THE FCBLK ! 6546: < * (IF ANY) CORRESPONDING TO THEIR ARGUMENT. ! 6547: < * ! 6548: < * -(XS) ARGUMENT ! 6549: < * JSR IOFCB CALL TO FIND FCBLK ! 6550: < * PPM LOC ARG IS AN UNSUITABLE NAME ! 6551: < * PPM LOC ARG IS NULL STRING ! 6552: --- ! 6553: > * -(XS) FILETAG ARGUMENT ! 6554: > * JSR IOFTG CALL TO FIND IOTAG ! 6555: > * PPM LOC ARG IS AN UNSUITABLE FILETAG ! 6556: 18693,18696c17450,17454 ! 6557: < * (XL) PTR TO FILEARG1 VRBLK ! 6558: < * (XR) ARGUMENT ! 6559: < * (WA) FCBLK PTR OR 0 ! 6560: < * (WB) DESTROYED ! 6561: --- ! 6562: > * (XL) PTR TO FILETAG SCBLK ! 6563: > * (XR) PTR TO TRTIO TRACE BLK OR ZERO ! 6564: > * (WA) IOTAG OR ZERO ! 6565: > * (WB) PTR TO FILETAG VRBLK ! 6566: > * (WC) VALUE/0 FOR INTEGER/STRING FILETAG ! 6567: 18698c17456 ! 6568: < IOFCB PRC N,2 ENTRY POINT ! 6569: --- ! 6570: > IOFTG PRC N,1 ENTRY POINT ! 6571: 18700c17458 ! 6572: < PPM IOFC2 FAIL ! 6573: --- ! 6574: > PPM IOFT4 FAIL ! 6575: 18702,18705c17460,17474 ! 6576: < JSR GTNVR GET AS NATURAL VARIABLE ! 6577: < PPM IOFC3 FAIL IF NULL ! 6578: < MOV XL,WB COPY STRING POINTER AGAIN ! 6579: < MOV XR,XL COPY VRBLK PTR FOR RETURN ! 6580: --- ! 6581: > MOV XR,-(XS) STACK STRING ! 6582: > JSR GTSMI TRY CONVERSION TO INTEGER ! 6583: > PPM IOFT5 SKIP IF CANT ! 6584: > PPM IOFT5 SKIP IF CANT ! 6585: > * ! 6586: > * MERGE WITH WC SET UP ! 6587: > * ! 6588: > IOFT1 MOV WC,WB KEEP INTEGER OR ZERO ! 6589: > MOV XL,XR FILETAG STRING TO XR FOR GTNVR CALL ! 6590: > JSR GTNVR FIND VRBLK ! 6591: > PPM IOFT4 SKIP IF NULL STRING ! 6592: > MOV XL,-(XS) KEEP SCBLK PTR ! 6593: > ZER XL IN CASE NO TRTIO BLK FOUND ! 6594: > MOV WB,WC KEEP INTEGER OR ZERO ! 6595: > MOV XR,WB COPY VRBLK PTR FOR RETURN ! 6596: 18710,18715c17479,17483 ! 6597: < IOFC1 MOV VRVAL(XR),XR GET POSSIBLE TRBLK PTR ! 6598: < BNE (XR),=B$TRT,IOFC2 FAIL IF END OF CHAIN ! 6599: < BNE TRTYP(XR),=TRTFC,IOFC1 LOOP IF NOT FILE ARG TRBLK ! 6600: < MOV TRFPT(XR),WA GET FCBLK PTR ! 6601: < MOV WB,XR COPY ARG ! 6602: < EXI RETURN ! 6603: --- ! 6604: > IOFT2 MOV VRVAL(XR),XR GET POSSIBLE TRBLK PTR ! 6605: > BNE (XR),=B$TRT,IOFT3 SKIP IF END OF CHAIN ! 6606: > BNE TRTYP(XR),=TRTIO,IOFT2 LOOP IF NOT FILETAG TRBLK ! 6607: > MOV TRTAG(XR),WA GET IOTAG OR 0 ! 6608: > MOV XR,XL TRTIO BLK PTR ! 6609: 18717c17485 ! 6610: < * FAIL RETURN ! 6611: --- ! 6612: > * RETURN POINT ! 6613: 18719c17487,17489 ! 6614: < IOFC2 EXI 1 FAIL ! 6615: --- ! 6616: > IOFT3 MOV XL,XR TRTIO BLK PTR OR 0 ! 6617: > MOV (XS)+,XL RECOVER SCBLK PTR ! 6618: > EXI SUCCESSFUL RETURN ! 6619: 18721c17491 ! 6620: < * NULL ARG ! 6621: --- ! 6622: > * FAIL RETURN ! 6623: 18723,18724c17493 ! 6624: < IOFC3 EXI 2 NULL ARG RETURN ! 6625: < ENP END PROCEDURE IOFCB ! 6626: --- ! 6627: > IOFT4 EXI 1 FAIL ! 6628: 18727c17496 ! 6629: < * IOPPF -- PROCESS FILEARG2 FOR IOPUT ! 6630: --- ! 6631: > * NON NUMERIC FILETAG ! 6632: 18729,18755c17498,17500 ! 6633: < * (R$XSC) FILEARG2 PTR ! 6634: < * JSR IOPPF CALL TO PROCESS FILEARG2 ! 6635: < * (XL) FILEARG1 PTR ! 6636: < * (XR) FILE ARG2 PTR ! 6637: < * -(XS)..-(XS) FIELDS EXTRACTED FROM FILEARG2 ! 6638: < * (WC) NO. OF FIELDS EXTRACTED ! 6639: < * (WB) INPUT/OUTPUT FLAG ! 6640: < * (WA) FCBLK PTR OR 0 ! 6641: < * ! 6642: < IOPPF PRC N,0 ENTRY POINT ! 6643: < ZER WB TO COUNT FIELDS EXTRACTED ! 6644: < * ! 6645: < * LOOP TO EXTRACT FIELDS ! 6646: < * ! 6647: < IOPP1 MOV =IODEL,XL GET DELIMITER ! 6648: < MOV XL,WC COPY IT ! 6649: < JSR XSCAN GET NEXT FIELD ! 6650: < MOV XR,-(XS) STACK IT ! 6651: < ICV WB INCREMENT COUNT ! 6652: < BNZ WA,IOPP1 LOOP ! 6653: < MOV WB,WC COUNT OF FIELDS ! 6654: < MOV IOPTT,WB I/O MARKER ! 6655: < MOV R$IOF,WA FCBLK PTR OR 0 ! 6656: < MOV R$IO2,XR FILE ARG2 PTR ! 6657: < MOV R$IO1,XL FILEARG1 ! 6658: < EXI RETURN ! 6659: < ENP END PROCEDURE IOPPF ! 6660: --- ! 6661: > IOFT5 ZER WC NOTE NON NUMERIC ! 6662: > BRN IOFT1 MERGE ! 6663: > ENP END PROCEDURE IOFTG ! 6664: 18758c17503 ! 6665: < * IOPUT -- ROUTINE USED BY INPUT AND OUTPUT ! 6666: --- ! 6667: > * IOPUT -- PROCESS INPUT AND OUTPUT ARGUMENTS ! 6668: 18760,18763c17505,17507 ! 6669: < * IOPUT SETS UP INPUT/OUTPUT ASSOCIATIONS. IT BUILDS ! 6670: < * SUCH TRACE AND FILE CONTROL BLOCKS AS ARE NECESSARY AND ! 6671: < * CALLS SYSFC,SYSIO TO PERFORM CHECKS ON THE ! 6672: < * ARGUMENTS AND TO OPEN THE FILES. ! 6673: --- ! 6674: > * IOPUT CHECKS THE ARGUMENTS OF INPUT AND OUTPUT CALLS, ! 6675: > * SETS UP THE REQUIRED ASSOCIATIONS AND CALLS SYSIO TO ! 6676: > * OPEN THE REQUESTED FILES. ! 6677: 18765,18820d17508 ! 6678: < * +-----------+ +---------------+ +-----------+ ! 6679: < * +-.I I I I------.I =B$XRT I ! 6680: < * I +-----------+ +---------------+ +-----------+ ! 6681: < * I / / (R$FCB) I *4 I ! 6682: < * I / / +-----------+ ! 6683: < * I +-----------+ +---------------+ I I- ! 6684: < * I I NAME +--.I =B$TRT I +-----------+ ! 6685: < * I / / +---------------+ I I ! 6686: < * I (FIRST ARG) I =TRTIN/=TRTOU I +-----------+ ! 6687: < * I +---------------+ I ! 6688: < * I I VALUE I I ! 6689: < * I +---------------+ I ! 6690: < * I I(TRTRF) 0 OR I--+ I ! 6691: < * I +---------------+ I I ! 6692: < * I I(TRFPT) 0 OR I----+ I ! 6693: < * I +---------------+ I I I ! 6694: < * I (I/O TRBLK) I I I ! 6695: < * I +-----------+ I I I ! 6696: < * I I I I I I ! 6697: < * I +-----------+ I I I ! 6698: < * I I I I I I ! 6699: < * I +-----------+ +---------------+ I I I ! 6700: < * I I +--.I =B$TRT I.-+ I I ! 6701: < * I +-----------+ +---------------+ I I ! 6702: < * I / / I =TRTFC I I I ! 6703: < * I / / +---------------+ I I ! 6704: < * I (FILEARG1 I VALUE I I I ! 6705: < * I VRBLK) +---------------+ I I ! 6706: < * I I(TRTRF) 0 OR I--+ I . ! 6707: < * I +---------------+ I . +-----------+ ! 6708: < * I I(TRFPT) 0 OR I------./ FCBLK / ! 6709: < * I +---------------+ I +-----------+ ! 6710: < * I (TRTRF) I ! 6711: < * I I ! 6712: < * I I ! 6713: < * I +---------------+ I ! 6714: < * I I =B$XRT I.-+ ! 6715: < * I +---------------+ ! 6716: < * I I *5 I ! 6717: < * I +---------------+ ! 6718: < * +------------------I I ! 6719: < * +---------------+ +-----------+ ! 6720: < * I(TRTRF) O OR I------.I =B$XRT I ! 6721: < * +---------------+ +-----------+ ! 6722: < * I NAME OFFSET I I ETC I ! 6723: < * +---------------+ ! 6724: < * (IOCHN - CHAIN OF NAME POINTERS) ! 6725: < EJC ! 6726: < * ! 6727: < * IOPUT (CONTINUED) ! 6728: < * ! 6729: < * NO ADDITIONAL TRAP BLOCKS ARE USED FOR STANDARD INPUT/OUT ! 6730: < * FILES. OTHERWISE AN I/O TRAP BLOCK IS ATTACHED TO SECOND ! 6731: < * ARG (FILEARG1) VRBLK. SEE DIAGRAM ABOVE FOR DETAILS OF ! 6732: < * THE STRUCTURE BUILT. ! 6733: < * ! 6734: 18822,18824c17510,17512 ! 6735: < * -(XS) 2ND ARG (FILE ARG1) ! 6736: < * -(XS) 3RD ARG (FILE ARG2) ! 6737: < * (WB) 0 FOR INPUT, 3 FOR OUTPUT ASSOC. ! 6738: --- ! 6739: > * -(XS) 2ND ARG (FILETAG) ! 6740: > * -(XS) 3RD ARG (FILEPROPS) ! 6741: > * (WB) 0 FOR INPUT, 2 FOR OUTPUT ASSOC. ! 6742: 18827c17515 ! 6743: < * PPM LOC 2ND ARG NOT A SUITABLE NAME ! 6744: --- ! 6745: > * PPM LOC 2ND ARG NOT A SUITABLE FILETAG ! 6746: 18829,18831c17517 ! 6747: < * PPM LOC INAPPROPRIATE FILE SPEC FOR I/O ! 6748: < * PPM LOC I/O FILE DOES NOT EXIST ! 6749: < * PPM LOC I/O FILE CANNOT BE READ/WRITTEN ! 6750: --- ! 6751: > * PPM LOC FAIL RETURN ! 6752: 18835,18858d17520 ! 6753: < IOPUT PRC N,6 ENTRY POINT ! 6754: < ZER R$IOT IN CASE NO TRTRF BLOCK USED ! 6755: < ZER R$IOF IN CASE NO FCBLK ALOCATED ! 6756: < MOV WB,IOPTT STORE I/O TRACE TYPE ! 6757: < JSR XSCNI PREPARE TO SCAN FILEARG2 ! 6758: < PPM IOP13 FAIL ! 6759: < PPM IOPA0 NULL FILE ARG2 ! 6760: < * ! 6761: < IOPA0 MOV XR,R$IO2 KEEP FILE ARG2 ! 6762: < MOV WA,XL COPY LENGTH ! 6763: < JSR GTSTG CONVERT FILEARG1 TO STRING ! 6764: < PPM IOP14 FAIL ! 6765: < MOV XR,R$IO1 KEEP FILEARG1 PTR ! 6766: < JSR GTNVR CONVERT TO NATURAL VARIABLE ! 6767: < PPM IOP00 JUMP IF NULL ! 6768: < BRN IOP04 JUMP TO PROCESS NON-NULL ARGS ! 6769: < * ! 6770: < * NULL FILEARG1 ! 6771: < * ! 6772: < IOP00 BZE XL,IOP01 SKIP IF BOTH ARGS NULL ! 6773: < JSR IOPPF PROCESS FILEARG2 ! 6774: < JSR SYSFC CALL FOR FILEARG2 CHECK ! 6775: < PPM IOP16 FAIL ! 6776: < BRN IOP11 COMPLETE FILE ASSOCIATION ! 6777: 18859a17522,17538 ! 6778: > * FIRST ARG NAME ! 6779: > * I I ! 6780: > * +------+ ! 6781: > * I I-----+ ! 6782: > * +------+ V ! 6783: > * I I +----------------+ ! 6784: > * I =B$TRT I ! 6785: > * +----------------+ ! 6786: > * I =TRTIN/=TRTOU I ! 6787: > * +----------------+ ! 6788: > * I VALUE OR TRCHN + ! 6789: > * +----------------+ ! 6790: > * TRTER I I-----+ ! 6791: > * +----------------+ V ! 6792: > * TRTRI I 0 I +------+ ! 6793: > * +----------------+ I I SVBLK ! 6794: > * I/O TRACE BLOCK +------+ ! 6795: 18861c17540 ! 6796: < * IOPUT (CONTINUED) ! 6797: --- ! 6798: > * 1. ASSOCIATION TO STANDARD FILES. ! 6799: 18863c17542,17558 ! 6800: < * HERE WITH 0 OR FCBLK PTR IN (XL) ! 6801: --- ! 6802: > * FIRST ARG NAME FILETAG VRBLK ! 6803: > * I I I I ! 6804: > * +------+ LK1 +------+ LK2 ! 6805: > * I I---+ +---+ I I---+ ! 6806: > * +------+ V I V +------+ V ! 6807: > * I I +----------------+ I +----------------+ ! 6808: > * I =B$TRT I I I =B$TRT I ! 6809: > * +----------------+ I +----------------+ ! 6810: > * I =TRTIN/=TRTOU I I I =TRTIO I ! 6811: > * +----------------+ I +----------------+ ! 6812: > * I VALUE OR TRCHN I I I VALUE OR TRCHN I ! 6813: > * +----------------+ I +----------------+ ! 6814: > * TRTER I 0 I I I 0 OR IOTAG I TRTAG ! 6815: > * +----------------+ I +----------------+ ! 6816: > * TRTRI I I--+ I 0 I TRTRI ! 6817: > * +----------------+ +----------------+ ! 6818: > * I/O TRACE BLOCK TRTIO BLOCK ! 6819: 18865,18875c17560 ! 6820: < IOP01 MOV IOPTT,WB GET TRACE TYPE ! 6821: < MOV R$IOT,XR GET 0 OR TRTRF PTR ! 6822: < JSR TRBLD BUILD TRBLK ! 6823: < MOV XR,WC COPY TRBLK POINTER ! 6824: < MOV (XS)+,XR GET VARIABLE FROM STACK ! 6825: < JSR GTVAR POINT TO VARIABLE ! 6826: < PPM IOP15 FAIL ! 6827: < MOV XL,R$ION SAVE NAME POINTER ! 6828: < MOV XL,XR COPY NAME POINTER ! 6829: < ADD WA,XR POINT TO VARIABLE ! 6830: < SUB *VRVAL,XR SUBTRACT OFFSET,MERGE INTO LOOP ! 6831: --- ! 6832: > * 2. REGULAR CASE. ! 6833: 18877,18902c17562,17579 ! 6834: < * LOOP TO END OF TRBLK CHAIN IF ANY ! 6835: < * ! 6836: < IOP02 MOV XR,XL COPY BLK PTR ! 6837: < MOV VRVAL(XR),XR LOAD PTR TO NEXT TRBLK ! 6838: < BNE (XR),=B$TRT,IOP03 JUMP IF NOT TRAPPED ! 6839: < BNE TRTYP(XR),IOPTT,IOP02 LOOP IF NOT SAME ASSOCN ! 6840: < MOV TRNXT(XR),XR GET VALUE AND DELETE OLD TRBLK ! 6841: < * ! 6842: < * IOPUT (CONTINUED) ! 6843: < * ! 6844: < * STORE NEW ASSOCIATION ! 6845: < * ! 6846: < IOP03 MOV WC,VRVAL(XL) LINK TO THIS TRBLK ! 6847: < MOV WC,XL COPY POINTER ! 6848: < MOV XR,TRNXT(XL) STORE VALUE IN TRBLK ! 6849: < MOV R$ION,XR RESTORE POSSIBLE VRBLK POINTER ! 6850: < MOV WA,WB KEEP OFFSET TO NAME ! 6851: < JSR SETVR IF VRBLK, SET VRGET,VRSTO ! 6852: < MOV R$IOT,XR GET 0 OR TRTRF PTR ! 6853: < BNZ XR,IOP19 JUMP IF TRTRF BLOCK EXISTS ! 6854: < EXI RETURN TO CALLER ! 6855: < * ! 6856: < * NON STANDARD FILE ! 6857: < * SEE IF AN FCBLK HAS ALREADY BEEN ALLOCATED. ! 6858: < * ! 6859: < IOP04 ZER WA IN CASE NO FCBLK FOUND ! 6860: --- ! 6861: > * THE STRUCTURES BUILT FOR I/O ASSOCIATIONS ARE AS SHOWN ! 6862: > * ABOVE. A TRACE BLOCK CHAIN (TRCHN) MAY HOLD ANY OR ALL ! 6863: > * OF THE TYPES, =TRTIN, =TRTOU, =TRTIO, BUT NOT MORE THAN ! 6864: > * ONE BLOCK OF ANY GIVEN TYPE. CASES ARE - ! 6865: > * 1. NO FILETAG OR IOTAG IS USED FOR ASSOCIATING STANDARD ! 6866: > * FILES (SYSRD, SYSPR, TERMINAL). THE I/O TRACE BLOCK ! 6867: > * IS DISTINGUISHED BY A NON-NULL TRTER FIELD POINTING ! 6868: > * TO THE RELEVANT SVBLK (V$INP, V$OUP, V$TER) AND A ! 6869: > * ZERO TRTRI FIELD. FOR TERMINAL, TRBLKS OF BOTH ! 6870: > * INPUT AND OUTPUT TYPE ARE CHAINED FROM THE FIRST ARG ! 6871: > * VIA THE TRCHN FIELD. ! 6872: > * 2. THE I/O TRACE BLOCK FOR THE REGULAR CASE HAS A ZERO ! 6873: > * TRTER FIELD AND A POINTER TO A TRTIO BLOCK IS IN ! 6874: > * THE TRTRI FIELD. THE FILETAG MUST BE A NATURAL ! 6875: > * VARIABLE AND THE TRTIO TRACE BLOCK ATTACHED TO IT ! 6876: > * HOLDS THE IOTAG. ! 6877: > * THE EFFECT OF ENDFILE() IS TO CLEAR IOTAG AND BREAK LK2. ! 6878: > * THE EFFECT OF DETACH() IS TO BREAK LK1. ! 6879: 18903a17581,17586 ! 6880: > IOPUT PRC N,4 ENTRY POINT ! 6881: > MOV WB,IOPWB KEEP ASSOCIATION TYPE FLAG ! 6882: > JSR GTSTG CONVERT THIRD ARG TO STRING ! 6883: > PPM IOP12 FAIL THIRD ARG ! 6884: > BNZ WA,IOP01 SKIP IF NON NULL ! 6885: > ZER XR NOTE NULL ARG ! 6886: 18905c17588 ! 6887: < * IOPUT (CONTINUED) ! 6888: --- ! 6889: > * PROCESS SECOND ARG ! 6890: 18907,18950c17590,17610 ! 6891: < * SEARCH POSSIBLE TRBLK CHAIN TO PICK UP THE FCBLK ! 6892: < * ! 6893: < IOP05 MOV XR,WB REMEMBER BLK PTR ! 6894: < MOV VRVAL(XR),XR CHAIN ALONG ! 6895: < BNE (XR),=B$TRT,IOP06 JUMP IF END OF TRBLK CHAIN ! 6896: < BNE TRTYP(XR),=TRTFC,IOP05 LOOP IF MORE TO GO ! 6897: < MOV XR,R$IOT POINT TO FILE ARG1 TRBLK ! 6898: < MOV TRFPT(XR),WA GET FCBLK PTR FROM TRBLK ! 6899: < * ! 6900: < * WA = 0 OR FCBLK PTR ! 6901: < * WB = PTR TO PRECEDING BLK TO WHICH ANY TRTRF BLOCK ! 6902: < * FOR FILE ARG1 MUST BE CHAINED. ! 6903: < * ! 6904: < IOP06 MOV WA,R$IOF KEEP POSSIBLE FCBLK PTR ! 6905: < MOV WB,R$IOP KEEP PRECEDING BLK PTR ! 6906: < JSR IOPPF PROCESS FILEARG2 ! 6907: < JSR SYSFC SEE IF FCBLK REQUIRED ! 6908: < PPM IOP16 FAIL ! 6909: < BZE WA,IOP12 SKIP IF NO NEW FCBLK WANTED ! 6910: < BLT WC,=NUM02,IOP6A JUMP IF FCBLK IN DYNAMIC ! 6911: < JSR ALOST GET IT IN STATIC ! 6912: < BRN IOP6B SKIP ! 6913: < * ! 6914: < * OBTAIN FCBLK IN DYNAMIC ! 6915: < * ! 6916: < IOP6A JSR ALLOC GET SPACE FOR FCBLK ! 6917: < * ! 6918: < * MERGE ! 6919: < * ! 6920: < IOP6B MOV XR,XL POINT TO FCBLK ! 6921: < MOV WA,WB COPY ITS LENGTH ! 6922: < BTW WB GET COUNT AS WORDS (SGD APR80) ! 6923: < LCT WB,WB LOOP COUNTER ! 6924: < * ! 6925: < * CLEAR FCBLK ! 6926: < * ! 6927: < IOP07 ZER (XR)+ CLEAR A WORD ! 6928: < BCT WB,IOP07 LOOP ! 6929: < BEQ WC,=NUM02,IOP09 SKIP IF IN STATIC - DONT SET FIELDS ! 6930: < MOV =B$XNT,(XL) STORE XNBLK CODE IN CASE ! 6931: < MOV WA,1(XL) STORE LENGTH ! 6932: < BNZ WC,IOP09 JUMP IF XNBLK WANTED ! 6933: < MOV =B$XRT,(XL) XRBLK CODE REQUESTED ! 6934: < * ! 6935: --- ! 6936: > IOP01 MOV XR,R$IOR KEEP FILEPROPS STRING PTR ! 6937: > JSR IOFTG CHECK SECOND ARG ! 6938: > PPM IOP07 FAIL SECOND ARG ! 6939: > MOV XL,R$IOL KEEP SCBLK FOR FILETAG ! 6940: > MOV XR,R$IOT KEEP TRTIO BLK PTR ! 6941: > MOV WA,IOPWA KEEP IOTAG ! 6942: > MOV WB,IOPVR KEEP FILETAG VRBLK PTR ! 6943: > MOV WC,IOPWC KEEP FILETAG VALUE ! 6944: > MOV (XS)+,XR GET FIRST ARG OFF STACK ! 6945: > JSR GTVAR CONVERT TO NAME ! 6946: > PPM IOP13 FAIL FIRST ARG ! 6947: > MOV XL,R$IO1 SAVE FIRST ARG NAME BASE ADRS ! 6948: > MOV WA,IOPNF SAVE FIRST ARG NAME OFFSET ! 6949: > MOV WB,XR FILETAG VRBLK PTR ! 6950: > BNZ VRLEN(XR),IOP02 NOT SPECIAL CASE IF NOT SYS NAME ! 6951: > MOV VRSVP(XR),WC GET SVBLK PTR ! 6952: > MOV =TRTIN,WB IN CASE .INPUT ! 6953: > BEQ WC,=V$INP,IOP06 JUMP IF .INPUT ! 6954: > MOV =TRTOU,WB IN CASE .OUTPUT OR .TERMINAL ! 6955: > BEQ WC,=V$OUP,IOP08 JUMP IF .OUTPUT ! 6956: > BEQ WC,=V$TER,IOP09 JUMP IF .TERMINAL ! 6957: 18952d17611 ! 6958: < * IOPUT (CONTINUED) ! 6959: 18954c17613 ! 6960: < * COMPLETE FCBLK INITIALISATION ! 6961: --- ! 6962: > * NORMAL CASE ! 6963: 18956,18958c17615,17624 ! 6964: < IOP09 MOV R$IOT,XR GET POSSIBLE TRBLK PTR ! 6965: < MOV XL,R$IOF STORE FCBLK PTR ! 6966: < BNZ XR,IOP10 JUMP IF TRBLK ALREADY FOUND ! 6967: --- ! 6968: > IOP02 BNZ R$IOT,IOP03 SKIP IF TRTIO BLK EXISTS ALREADY ! 6969: > MOV =TRTIO,WB TRACE BLOCK TYPE WORD ! 6970: > ZER XR ZERO IOTAG WORD ! 6971: > ZER XL ZERO TRTRI FIELD ! 6972: > JSR TRBLD BUILD TRTIO TRBLK ! 6973: > MOV XR,R$IOT SAVE TRTIO BLK PTR ! 6974: > MOV IOPVR,XL GET FILETAG VRBLK ! 6975: > MOV *VRVAL,WA OFFSET TO VALUE FIELD ! 6976: > JSR TRCHN PLACE IN TRBLK CHAIN FOR FILETAG ! 6977: > PPM UNUSED RETURN ! 6978: 18960c17626 ! 6979: < * A NEW TRBLK IS NEEDED ! 6980: --- ! 6981: > * MERGE TO BUILD TRBLK FOR FIRST ARG ! 6982: 18962,18970c17628,17630 ! 6983: < MOV =TRTFC,WB TRTYP FOR FCBLK TRAP BLK ! 6984: < JSR TRBLD MAKE THE BLOCK ! 6985: < MOV XR,R$IOT COPY TRTRF PTR ! 6986: < MOV R$IOP,XL POINT TO PRECEDING BLK ! 6987: < MOV VRVAL(XL),VRVAL(XR) COPY VALUE FIELD TO TRBLK ! 6988: < MOV XR,VRVAL(XL) LINK NEW TRBLK INTO CHAIN ! 6989: < MOV XL,XR POINT TO PREDECESSOR BLK ! 6990: < JSR SETVR SET TRACE INTERCEPTS ! 6991: < MOV VRVAL(XR),XR RECOVER TRBLK PTR ! 6992: --- ! 6993: > IOP03 MOV =TRTIN,WB IN CASE INPUT ! 6994: > BZE IOPWB,IOP04 SKIP IF SO ! 6995: > MOV =TRTOU,WB IN CASE OUTPUT ! 6996: 18972c17632 ! 6997: < * XR IS PTR TO TRBLK, XL IS FCBLK PTR OR 0 ! 6998: --- ! 6999: > * BUILD TRACE BLOCK ! 7000: 18974c17634,17641 ! 7001: < IOP10 MOV R$IOF,TRFPT(XR) STORE FCBLK PTR ! 7002: --- ! 7003: > IOP04 ICV IOPWB NOTE NOT STANDARD I/O FILE ! 7004: > MOV R$IOT,XL TRTIO BLK PTR TO TRTRI FIELD ! 7005: > ZER XR ZERO TRTER FIELD ! 7006: > JSR TRBLD BUILD I/O TRACE BLOCK ! 7007: > MOV R$IO1,XL ASSOCIATED VBL NAME BASE ! 7008: > MOV IOPNF,WA NAME OFFSET ! 7009: > JSR TRCHN UPDATE TRACE CHAIN FOR FIRST ARG ! 7010: > PPM UNUSED RETURN ! 7011: 18976c17643 ! 7012: < * CALL SYSIO TO COMPLETE FILE ACCESSING ! 7013: --- ! 7014: > * PREPARE FOR AND MAKE SYSIO CALL ! 7015: 18978,19003c17645,17656 ! 7016: < IOP11 MOV R$IOF,WA COPY FCBLK PTR OR 0 ! 7017: < MOV IOPTT,WB GET INPUT/OUTPUT FLAG ! 7018: < MOV R$IO2,XR GET FILE ARG2 ! 7019: < MOV R$IO1,XL GET FILE ARG1 ! 7020: < JSR SYSIO ASSOCIATE TO THE FILE ! 7021: < PPM IOP17 FAIL ! 7022: < PPM IOP18 FAIL ! 7023: < BNZ R$IOT,IOP01 NOT STD INPUT IF NON-NULL TRTRF BLK ! 7024: < BNZ IOPTT,IOP01 JUMP IF OUTPUT ! 7025: < BZE WC,IOP01 NO CHANGE TO STANDARD READ LENGTH ! 7026: < MOV WC,CSWIN STORE NEW READ LENGTH FOR STD FILE ! 7027: < BRN IOP01 MERGE TO FINISH THE TASK ! 7028: < * ! 7029: < * SYSFC MAY HAVE RETURNED A POINTER TO A PRIVATE FCBLK ! 7030: < * ! 7031: < IOP12 BNZ XL,IOP09 JUMP IF PRIVATE FCBLK ! 7032: < BRN IOP11 FINISH THE ASSOCIATION ! 7033: < * ! 7034: < * FAILURE RETURNS ! 7035: < * ! 7036: < IOP13 EXI 1 3RD ARG NOT A STRING ! 7037: < IOP14 EXI 2 2ND ARG UNSUITABLE ! 7038: < IOP15 EXI 3 1ST ARG UNSUITABLE ! 7039: < IOP16 EXI 4 FILE SPEC WRONG ! 7040: < IOP17 EXI 5 I/O FILE DOES NOT EXIST ! 7041: < IOP18 EXI 6 I/O FILE CANNOT BE READ/WRITTEN ! 7042: --- ! 7043: > IOP05 MOV R$IOL,XL FILETAG SCBLK PTR ! 7044: > MOV R$IOR,XR FILEPROPS SCBLK PTR ! 7045: > MOV IOPWA,WA IOTAG OR ZERO ! 7046: > MOV IOPWB,WB ASSOCIATION TYPE NUMBER ! 7047: > MOV IOPWC,WC POSSIBLE FILETAG VALUE ! 7048: > JSR SYSIO CALL SYSTEM ROUTINE TO OPEN FILE ! 7049: > PPM IOP14 FAIL RETURN ! 7050: > PPM EROSI ERROR RETURN ! 7051: > MOV R$IOT,XL TRTIO POINTER ! 7052: > BZE XL,IOP11 DONE IF ZERO ! 7053: > MOV WA,TRTAG(XL) STORE RETURNED IOTAG ! 7054: > BRN IOP11 SUCCEED ! 7055: 19006c17659 ! 7056: < * IOPUT (CONTINUED) ! 7057: --- ! 7058: > * SPECIAL CASE OF .INPUT ! 7059: 19008,19009c17661 ! 7060: < * ADD TO IOCHN CHAIN OF ASSSOCIATED VARIABLES UNLESS ALREAD ! 7061: < * PRESENT. ! 7062: --- ! 7063: > IOP06 BZE IOPWB,IOP09 FAIL OUTPUT(.X,.INPUT) ! 7064: 19011c17663 ! 7065: < IOP19 MOV R$ION,WC WC = NAME BASE, WB = NAME OFFSET ! 7066: --- ! 7067: > * BAD FILETAG ! 7068: 19013c17665 ! 7069: < * SEARCH LOOP ! 7070: --- ! 7071: > IOP07 EXI 2 ERRONEOUS SECOND ARG ! 7072: 19015,19019c17667 ! 7073: < IOP20 MOV TRTRF(XR),XR NEXT LINK OF CHAIN ! 7074: < BZE XR,IOP21 NOT FOUND ! 7075: < BNE WC,IONMB(XR),IOP20 NO MATCH ! 7076: < BEQ WB,IONMO(XR),IOP22 EXIT IF MATCHED ! 7077: < BRN IOP20 LOOP ! 7078: --- ! 7079: > * SPECIAL CASE OF .OUTPUT ! 7080: 19021c17669 ! 7081: < * NOT FOUND ! 7082: --- ! 7083: > IOP08 BZE IOPWB,IOP07 FAIL INPUT(.X,.OUTPUT) ! 7084: 19023,19032c17671 ! 7085: < IOP21 MOV *NUM05,WA SPACE NEEDED ! 7086: < JSR ALLOC GET IT ! 7087: < MOV =B$XRT,(XR) STORE XRBLK CODE ! 7088: < MOV WA,1(XR) STORE LENGTH ! 7089: < MOV WC,IONMB(XR) STORE NAME BASE ! 7090: < MOV WB,IONMO(XR) STORE NAME OFFSET ! 7091: < MOV R$IOT,XL POINT TO TRTRF BLK ! 7092: < MOV TRTRF(XL),WA GET PTR FIELD CONTENTS ! 7093: < MOV XR,TRTRF(XL) STORE PTR TO NEW BLOCK ! 7094: < MOV WA,TRTRF(XR) COMPLETE THE LINKING ! 7095: --- ! 7096: > * SPECIAL CASE OF .TERMINAL AND MERGE FOR OTHERS ! 7097: 19034c17673,17685 ! 7098: < * INSERT FCBLK ON FCBLK CHAIN FOR SYSEJ, SYSXI ! 7099: --- ! 7100: > IOP09 ZER R$IOT NOTE NO TRTIO BLOCK ! 7101: > MOV WC,XR SVBLK PTR FOR TRTER FIELD ! 7102: > ZER XL ZERO TRTRI FIELD ! 7103: > JSR TRBLD BUILD TRBLK ! 7104: > MOV R$IO1,XL ASSOCIATED VBL NAME BASE ! 7105: > MOV IOPNF,WA NAME OFFSET ! 7106: > JSR TRCHN UPDATE TRACE CHAIN FOR ARG 1 ! 7107: > PPM UNUSED RETURN ! 7108: > BNE TRTER(XR),=V$TER,IOP10 DONE UNLESS TERMINAL ! 7109: > BNE TRTYP(XR),=TRTOU,IOP10 DONE IF TERM. 2ND TIME ROUND ! 7110: > MOV =V$TER,WC TRTER FIELD ! 7111: > MOV =TRTIN,WB TRTYP FIELD ! 7112: > BRN IOP09 REPEAT LOOP FOR TERMINAL ! 7113: 19036,19037c17687 ! 7114: < IOP22 BZE R$IOF,IOP25 SKIP IF NO FCBLK ! 7115: < MOV R$FCB,XL PTR TO HEAD OF EXISTING CHAIN ! 7116: --- ! 7117: > * CHECK SPECIAL CASES FOR NON-NULL THIRD ARGS ! 7118: 19039c17689,17690 ! 7119: < * SEE IF FCBLK ALREADY ON CHAIN ! 7120: --- ! 7121: > IOP10 ZER IOPWA NO IOTAG ! 7122: > BNZ R$IOR,IOP05 MERGE ONLY IF FILEPROPS NON-NULL ! 7123: 19041,19044c17692 ! 7124: < IOP23 BZE XL,IOP24 NOT ON IF END OF CHAIN ! 7125: < BEQ 3(XL),R$IOF,IOP25 DONT DUPLICATE IF FIND IT ! 7126: < MOV 2(XL),XL GET NEXT LINK ! 7127: < BRN IOP23 LOOP ! 7128: --- ! 7129: > * SUCCESS RETURN ! 7130: 19046c17694,17698 ! 7131: < * NOT FOUND SO ADD AN ENTRY FOR THIS FCBLK ! 7132: --- ! 7133: > IOP11 ZER R$IO1 CLEAR GARBAGE ! 7134: > ZER R$IOL ! 7135: > ZER R$IOR ! 7136: > ZER R$IOT ! 7137: > EXI RETURN TO CALLER ! 7138: 19048,19054c17700 ! 7139: < IOP24 MOV *NUM04,WA SPACE NEEDED ! 7140: < JSR ALLOC GET IT ! 7141: < MOV =B$XRT,(XR) STORE BLOCK CODE ! 7142: < MOV WA,1(XR) STORE LENGTH ! 7143: < MOV R$FCB,2(XR) STORE PREVIOUS LINK IN THIS NODE ! 7144: < MOV R$IOF,3(XR) STORE FCBLK PTR ! 7145: < MOV XR,R$FCB INSERT NODE INTO FCBLK CHAIN ! 7146: --- ! 7147: > * ERROR RETURNS ! 7148: 19056c17702 ! 7149: < * RETURN ! 7150: --- ! 7151: > IOP12 EXI 1 ERRONEOUS THIRD ARG ! 7152: 19058c17704,17706 ! 7153: < IOP25 EXI RETURN TO CALLER ! 7154: --- ! 7155: > IOP13 EXI 3 ERRONEOUS FIRST ARG ! 7156: > * ! 7157: > IOP14 EXI 4 FAIL RETURN FROM SYSIO ! 7158: 19098,19099c17746 ! 7159: < JSR PRTVL PRINT KEYWORD VALUE ! 7160: < JSR PRTNL TERMINATE PRINT LINE ! 7161: --- ! 7162: > JSR PRTVF PRINT KEYWORD VALUE ! 7163: 19144c17791 ! 7164: < KWNM1 ERB 251,KEYWORD OPERAND IS NOT NAME OF DEFINED KEYWORD ! 7165: --- ! 7166: > KWNM1 ERB 230,KEYWORD OPERAND IS NOT NAME OF DEFINED KEYWORD ! 7167: 19173c17820 ! 7168: < BLO WA,WB,LCMP1 JUMP IF ARG 1 LENGTH IS SMALLER ! 7169: --- ! 7170: > BLO WA,WB,LCMP0 JUMP IF ARG 1 LENGTH IS SMALLER ! 7171: 19178,19179c17825,17830 ! 7172: < LCMP1 CMC LCMP4,LCMP3 COMPARE STRINGS, JUMP IF UNEQUAL ! 7173: < BNE WB,WC,LCMP2 IF EQUAL, JUMP IF LENGTHS UNEQUAL ! 7174: --- ! 7175: > LCMP0 BZE WA,LCMP1 SKIP IF A NULL ARG ! 7176: > CMC LCMP4,LCMP3 COMPARE STRINGS, JUMP IF UNEQUAL ! 7177: > * ! 7178: > * EQUAL STRINGS OR AT LEAST ONE NULL ARG ! 7179: > * ! 7180: > LCMP1 BNE WB,WC,LCMP2 IF EQUAL, JUMP IF LENGTHS UNEQUAL ! 7181: 19239c17890,17897 ! 7182: < BNZ CNTTL,LIST5 JUMP IF -TITLE OR -STITL ! 7183: --- ! 7184: > MOV STAGE,WA GET COMPILER STAGE ! 7185: > BEQ WA,=STGIC,LIST0 LIST OK IF INITIAL COMPILE ! 7186: > BEQ WA,=STGCE,LIST0 LIST OK IF END LINE ! 7187: > BRN LIST4 ELSE NO LISTING OF SOURCE ! 7188: > * ! 7189: > * HERE WHEN STAGE IS OK TO LIST ! 7190: > * ! 7191: > LIST0 BNZ CNTTL,LIST5 JUMP IF -TITLE OR -STITL ! 7192: 19245c17903 ! 7193: < LIST0 MOV R$CIM,XR LOAD POINTER TO CURRENT IMAGE ! 7194: --- ! 7195: > LIST1 MOV R$CIM,XR LOAD POINTER TO CURRENT IMAGE ! 7196: 19251d17908 ! 7197: < BNE STAGE,=STGIC,LIST1 SKIP IF EXECUTE TIME ! 7198: 19254,19257c17911 ! 7199: < * ! 7200: < * PRINT STATEMENT NUMBER ! 7201: < * ! 7202: < LIST1 JSR PRTIN ELSE PRINT STATEMENT NUMBER ! 7203: --- ! 7204: > JSR PRTIN ELSE PRINT STATEMENT NUMBER ! 7205: 19267c17921 ! 7206: < JSR PRTST PRINT IT ! 7207: --- ! 7208: > JSR PRTSF PRINT IT ! 7209: 19269,19273c17923 ! 7210: < BNZ ERLST,LIST3 JUMP IF ERROR COPY TO INT.CH. ! 7211: < JSR PRTNL TERMINATE LINE ! 7212: < BZE CSWDB,LIST3 JUMP IF -SINGLE MODE ! 7213: < JSR PRTNL ELSE ADD A BLANK LINE ! 7214: < ICV LSTLC AND BUMP LINE COUNTER ! 7215: --- ! 7216: > MNZ LSTPF SET FLAG FOR LINE PRINTED ! 7217: 19275,19278d17924 ! 7218: < * HERE AFTER PRINTING SOURCE IMAGE ! 7219: < * ! 7220: < LIST3 MNZ LSTPF SET FLAG FOR LINE PRINTED ! 7221: < * ! 7222: 19290,19291c17936,17937 ! 7223: < BZE PRICH,LIST7 SKIP IF LISTING TO REGULAR PRINTER ! 7224: < BEQ R$TTL,=NULLS,LIST0 TERMINAL LISTING OMITS NULL TITLE ! 7225: --- ! 7226: > BNZ PRLEN,LIST7 SKIP IF LISTING TO REGULAR PRINTER ! 7227: > BEQ R$TTL,=NULLS,LIST1 TERMINAL LISTING OMITS NULL TITLE ! 7228: 19296c17942 ! 7229: < BRN LIST0 MERGE ! 7230: --- ! 7231: > BRN LIST1 MERGE ! 7232: 19316c17962 ! 7233: < JSR PRTNL TERMINATE TITLE LINE ! 7234: --- ! 7235: > JSR PRTFH TERMINATE TITLE LINE ! 7236: 19323,19324c17969 ! 7237: < JSR PRTST ELSE PRINT SUB-TITLE ! 7238: < JSR PRTNL TERMINATE LINE ! 7239: --- ! 7240: > JSR PRTSF ELSE PRINT SUB-TITLE ! 7241: 19329c17974 ! 7242: < LSTT1 JSR PRTNL PRINT A BLANK LINE ! 7243: --- ! 7244: > LSTT1 JSR PRTFH PRINT A BLANK LINE ! 7245: 19358c18003 ! 7246: < BZE CSWLS,NXTS2 JUMP IF -NOLIST ! 7247: --- ! 7248: > BZE CSWLS,NXTS1 JUMP IF -NOLIST ! 7249: 19360c18005 ! 7250: < BZE XR,NXTS2 JUMP IF NO IMAGE ! 7251: --- ! 7252: > BZE XR,NXTS1 JUMP IF NO IMAGE ! 7253: 19363,19364c18008,18009 ! 7254: < BNE WA,=CH$MN,NXTS1 JUMP IF NOT CTRL CARD ! 7255: < BZE CSWPR,NXTS2 JUMP IF -NOPRINT ! 7256: --- ! 7257: > BEQ WA,=CH$MN,NXTS1 SKIP LISTING IF CONTROL CARD ! 7258: > JSR LISTR LIST LINE ! 7259: 19366,19369d18010 ! 7260: < * HERE TO CALL LISTER ! 7261: < * ! 7262: < NXTS1 JSR LISTR LIST LINE ! 7263: < * ! 7264: 19372c18013 ! 7265: < NXTS2 MOV R$CNI,XR POINT TO NEXT IMAGE ! 7266: --- ! 7267: > NXTS1 MOV R$CNI,XR POINT TO NEXT IMAGE ! 7268: 19377c18018 ! 7269: < BLO WA,WB,NXTS3 SKIP IF NOT TOO LONG ! 7270: --- ! 7271: > BLO WA,WB,NXTS2 SKIP IF NOT TOO LONG ! 7272: 19382c18023 ! 7273: < NXTS3 MOV WA,SCNIL USE AS RECORD LENGTH ! 7274: --- ! 7275: > NXTS2 MOV WA,SCNIL USE AS RECORD LENGTH ! 7276: 19505c18146 ! 7277: < WTB WA CONVERT TO BYTE OFFSET ! 7278: --- ! 7279: > WTB WA CONVERT TO BAU OFFSET ! 7280: 19697d18337 ! 7281: < EJC ! 7282: 19699a18340 ! 7283: > EJC ! 7284: 19714,19716c18355 ! 7285: < JSR PRTST AND PRINT IT ! 7286: < JSR PRTNL FOLLOWED BY NEWLINE ! 7287: < JSR PRTNL AND ANOTHER ! 7288: --- ! 7289: > JSR PRTFB AND PRINT IT ! 7290: 19718,19719c18357 ! 7291: < JSR PRTST PRINT IT ! 7292: < JSR PRTNL NEW LINE ! 7293: --- ! 7294: > JSR PRTSF PRINT IT ! 7295: 19721,19723c18359 ! 7296: < JSR PRTST PRINT IT ! 7297: < JSR PRTNL NEW LINE ! 7298: < JSR PRTNL AND ANOTHER BLANK LINE ! 7299: --- ! 7300: > JSR PRTFB ! 7301: 19726c18362,18363 ! 7302: < ADD *NUM02,XR BIAS PAST XNBLK HEADER (SGD07) ! 7303: --- ! 7304: > ADD *NUM02,XR BIASS PAST XNBLK HEADER ! 7305: > EJC ! 7306: 19728c18365 ! 7307: < * LOOP HERE TO PRINT SUCCESSIVE ENTRIES ! 7308: --- ! 7309: > * PRFLR (CONTINUED) ! 7310: 19729a18367,18368 ! 7311: > * LOOP FOR PRINTING TABLE ENTRIES ! 7312: > * ! 7313: 19748c18387 ! 7314: < * MERGE AFTER PRINTING TIME ! 7315: --- ! 7316: > * PRINT A BLANK ! 7317: 19750c18389 ! 7318: < PRFL2 JSR PRTNL THATS ANOTHER LINE ! 7319: --- ! 7320: > PRFL2 JSR PRTFH THATS ANOTHER LINE ! 7321: 19752c18391 ! 7322: < * HERE TO GO TO NEXT ENTRY ! 7323: --- ! 7324: > * TEST TO SEE IF LOOP FINISHED ! 7325: 19754c18393 ! 7326: < PRFL3 ADD *PF$I2,XR BUMP INDEX PTR (SGD07) ! 7327: --- ! 7328: > PRFL3 ADD *PF$I2,XR BUMP INDEX POINTER ! 7329: 19759c18398 ! 7330: < * HERE TO EXIT ! 7331: --- ! 7332: > * RETURN POINT ! 7333: 19775c18414 ! 7334: < MOV WA,PFSVW SAVE WA (SGD07) ! 7335: --- ! 7336: > MOV WA,PFSVW SAVE WA ! 7337: 19786c18425 ! 7338: < SUB =NUM01,PFNTE ADJUST FOR EXTRA COUNT (SGD07) ! 7339: --- ! 7340: > SUB =NUM01,PFNTE ADJUST FOR EXTRA COUNT ! 7341: 19804c18443,18444 ! 7342: < BCT WA,PFLU1 AND ALLLLLLL THE REST ! 7343: --- ! 7344: > BCT WA,PFLU1 AND ALL THE REST ! 7345: > EJC ! 7346: 19805a18446,18447 ! 7347: > * PRFLU (CONTINUED) ! 7348: > * ! 7349: 19828c18470 ! 7350: < * MERGE HERE TO EXIT ! 7351: --- ! 7352: > * RETURN POINT ! 7353: 19831c18473 ! 7354: < MOV PFSVW,WA RESTORE SAVED REG ! 7355: --- ! 7356: > MOV PFSVW,WA RESTORE WA ! 7357: 19841d18482 ! 7358: < EJC ! 7359: 19842a18484 ! 7360: > EJC ! 7361: 19844c18486 ! 7362: < * PRPAR - PROCESS PRINT PARAMETERS ! 7363: --- ! 7364: > * PRPAR -- PROCESS PRINT PARAMETERS ! 7365: 19846d18487 ! 7366: < * (WC) IF NONZERO ASSOCIATE TERMINAL ONLY ! 7367: 19848c18489 ! 7368: < * (XL,XR,WA,WB,WC) DESTROYED ! 7369: --- ! 7370: > * (XR,WA,WB,WC) DESTROYED ! 7371: 19850,19853d18490 ! 7372: < * SINCE MEMORY ALLOCATION IS UNDECIDED ON INITIAL CALL, ! 7373: < * TERMINAL CANNOT BE ASSOCIATED. THE ENTRY WITH WC NON-ZERO ! 7374: < * IS PROVIDED SO A LATER CALL CAN BE MADE TO COMPLETE THIS. ! 7375: < * ! 7376: 19855c18492 ! 7377: < BNZ WC,PRPA7 JUMP TO ASSOCIATE TERMINAL ! 7378: --- ! 7379: > MOV XL,-(XS) SAVE XL ! 7380: 19866,19868c18503,18504 ! 7381: < MOV PRLEN,WB GET PRIOR LENGTH IF ANY ! 7382: < BZE WB,PRPA2 SKIP IF NO LENGTH ! 7383: < BGT WA,WB,PRPA3 SKIP STORING IF TOO BIG ! 7384: --- ! 7385: > BZE PRLEN,PRPA2 SKIP IF NOT SYSXI RESUMPTION ! 7386: > BHI WA,PRLEN,PRPA3 SKIP IF BIGGER THAN PRIOR BFRS ! 7387: 19874c18510 ! 7388: < * PROCESS BITS OPTIONS ! 7389: --- ! 7390: > * CHECK TERMINAL BUFFER SIZE ! 7391: 19876,19879c18512,18513 ! 7392: < PRPA3 MOV BITS3,WB BIT 3 MASK ! 7393: < ANB WC,WB GET -NOLIST BIT ! 7394: < ZRB WB,PRPA4 SKIP IF CLEAR ! 7395: < ZER CSWLS SET -NOLIST ! 7396: --- ! 7397: > PRPA3 BZE TTLEN,PRPA4 SKIP IF NOT SYSXI RESUMPTION ! 7398: > BHI XL,TTLEN,PRPA5 SKIP IF TOO BIG ! 7399: 19881c18515 ! 7400: < * CHECK IF FAIL REPORTS GOTO INTERACTIVE CHANNEL ! 7401: --- ! 7402: > * STORE TERMINAL BUFFER LENGTH ! 7403: 19883c18517,18521 ! 7404: < PRPA4 MOV BITS1,WB BIT 1 MASK ! 7405: --- ! 7406: > PRPA4 MOV XL,TTLEN BFR LENGTH ! 7407: > * ! 7408: > * PROCESS BITS OPTIONS ! 7409: > * ! 7410: > PRPA5 MOV BITS1,WB BIT 1 MASK ! 7411: 19885c18523 ! 7412: < MOV WB,ERICH STORE INT. CHAN. ERROR FLAG ! 7413: --- ! 7414: > MOV WB,TTINS INPUT FROM TERMINAL FLAG ! 7415: 19888,19894c18526,18533 ! 7416: < MOV WB,PRICH FLAG FOR STD PRINTER ON INT. CHAN. ! 7417: < MOV BITS4,WB BIT 4 MASK ! 7418: < ANB WC,WB GET BIT ! 7419: < MOV WB,CPSTS FLAG FOR COMPILE STATS SUPPRESSN. ! 7420: < MOV BITS5,WB BIT 5 MASK ! 7421: < ANB WC,WB GET BIT ! 7422: < MOV WB,EXSTS FLAG FOR EXEC STATS SUPPRESSION ! 7423: --- ! 7424: > MOV WB,TTOUS STD OUTPUT TO TERMINAL FLAG ! 7425: > MOV TTLEN,TTERL ERRORS TO TERML IF AVAILABLE ! 7426: > MOV PRLEN,PRAVL NOTE IF A PRINT FILE IS AVAILABLE ! 7427: > ZRB WB,PRPA6 IF FLAG SET, CLEAR TTERL SINCE ... ! 7428: > ZER TTERL ... TERML GETS ALL OUTPUT ALREADY ! 7429: > MOV TTLEN,TTOUS REGULAR O/P TO TERML IF AVAILABLE ! 7430: > MOV TTLEN,PRLEN REVISED PRINT BUFFER LENGTH ! 7431: > ZER TTLEN DONT NEED SEPARATE TERML BUFFER ! 7432: 19899,19904c18538 ! 7433: < MOV BITS6,WB BIT 6 MASK ! 7434: < ANB WC,WB GET BIT ! 7435: < MOV WB,PRECL EXTENDED/COMPACT LISTING FLAG ! 7436: < SUB =NUM08,WA POINT 8 CHARS FROM LINE END ! 7437: < ZRB WB,PRPA5 JUMP IF NOT EXTENDED ! 7438: < MOV WA,LSTPO STORE FOR LISTING PAGE HEADINGS ! 7439: --- ! 7440: > * GET OFFSET TO /PAGE NN/ PART OF HEADER ! 7441: 19906c18540,18543 ! 7442: < * CONTINUE OPTION PROCESSING ! 7443: --- ! 7444: > PRPA6 MOV PRLEN,WA STD BFR LENGTH ! 7445: > BNZ WA,PRPA7 USE IF NON-ZERO ! 7446: > MOV TTLEN,WA ELSE TRY TERMINAL ! 7447: > BZE WA,PRPA8 GIVE UP IF ZERO ALSO ! 7448: 19908,19920c18545 ! 7449: < PRPA5 MOV BITS7,WB BIT 7 MASK ! 7450: < ANB WC,WB GET BIT 7 ! 7451: < MOV WB,CSWEX SET -NOEXECUTE IF NON-ZERO ! 7452: < MOV BIT10,WB BIT 10 MASK ! 7453: < ANB WC,WB GET BIT 10 ! 7454: < MOV WB,HEADP PRETEND PRINTED TO OMIT HEADERS ! 7455: < MOV BITS9,WB BIT 9 MASK ! 7456: < ANB WC,WB GET BIT 9 ! 7457: < MOV WB,PRSTO KEEP IT AS STD LISTING OPTION ! 7458: < ZRB WB,PRPA6 SKIP IF CLEAR ! 7459: < MOV PRLEN,WA GET PRINT BUFFER LENGTH ! 7460: < SUB =NUM08,WA POINT 8 CHARS FROM LINE END ! 7461: < MOV WA,LSTPO STORE PAGE OFFSET ! 7462: --- ! 7463: > * GET OFFSET ! 7464: 19922c18547,18552 ! 7465: < * CHECK FOR TERMINAL ! 7466: --- ! 7467: > PRPA7 MOV WA,PRLEN STORE AS BUFFER LENGTH ! 7468: > SUB =NUM08,WA JUST BEFORE END OF LINE ! 7469: > MOV WA,LSTPO KEEP IT ! 7470: > MOV TTOUS,WB CONSTRUCT VALUE FOR ... ! 7471: > ORB PRAVL,WB ... USE IN DECIDING WHETHER TO ... ! 7472: > MOV WB,PRPUT ... PUT STRINGS IN OUTPUT BUFFER ! 7473: 19924,19932c18554 ! 7474: < PRPA6 ANB BITS8,WC SEE IF TERMINAL TO BE ACTIVATED ! 7475: < BNZ WC,PRPA7 JUMP IF TERMINAL REQUIRED ! 7476: < BZE INITR,PRPA8 JUMP IF NO TERMINAL TO DETACH ! 7477: < MOV =V$TER,XL PTR TO /TERMINAL/ ! 7478: < JSR GTNVR GET VRBLK POINTER ! 7479: < PPM CANT FAIL ! 7480: < MOV =NULLS,VRVAL(XR) CLEAR VALUE OF TERMINAL ! 7481: < JSR SETVR REMOVE ASSOCIATION ! 7482: < BRN PRPA8 RETURN ! 7483: --- ! 7484: > * MORE BITS ! 7485: 19934c18556,18559 ! 7486: < * ASSOCIATE TERMINAL ! 7487: --- ! 7488: > PRPA8 MOV BITS3,WB BIT 3 MASK ! 7489: > ANB WC,WB GET -NOLIST BIT ! 7490: > ZRB WB,PRPA9 SKIP IF CLEAR ! 7491: > ZER CSWLS SET -NOLIST ! 7492: 19936,19945c18561 ! 7493: < PRPA7 MNZ INITR NOTE TERMINAL ASSOCIATED ! 7494: < BZE DNAMB,PRPA8 CANT IF MEMORY NOT ORGANISED ! 7495: < MOV =V$TER,XL POINT TO TERMINAL STRING ! 7496: < MOV =TRTOU,WB OUTPUT TRACE TYPE ! 7497: < JSR INOUT ATTACH OUTPUT TRBLK TO VRBLK ! 7498: < MOV XR,-(XS) STACK TRBLK PTR ! 7499: < MOV =V$TER,XL POINT TO TERMINAL STRING ! 7500: < MOV =TRTIN,WB INPUT TRACE TYPE ! 7501: < JSR INOUT ATTACH INPUT TRACE BLK ! 7502: < MOV (XS)+,VRVAL(XR) ADD OUTPUT TRBLK TO CHAIN ! 7503: --- ! 7504: > * MORE BITS ! 7505: 19947c18563,18575 ! 7506: < * RETURN POINT ! 7507: --- ! 7508: > PRPA9 MOV BITS4,WB BIT 4 MASK ! 7509: > ANB WC,WB GET BIT ! 7510: > MOV WB,CPSTS FLAG FOR COMPILE STATS SUPPRESSN. ! 7511: > MOV BITS5,WB BIT 5 MASK ! 7512: > ANB WC,WB GET BIT ! 7513: > MOV WB,EXSTS FLAG FOR EXEC STATS SUPPRESSION ! 7514: > MOV BITS6,WB BIT 6 MASK ! 7515: > ANB WC,WB GET BIT ! 7516: > MOV WB,NOXEQ SET NOEXECUTE IF NON-ZERO ! 7517: > MOV BITS7,WB BIT 7 MASK ! 7518: > ANB WC,WB GET BIT ! 7519: > ZRB WB,PRP10 SKIP IF NOT SET ! 7520: > ZER TTERL CLEAR ERRORS TO TERML IF SET ! 7521: 19949c18577,18589 ! 7522: < PRPA8 EXI RETURN ! 7523: --- ! 7524: > * MORE BITS ! 7525: > * ! 7526: > PRP10 MOV BITS8,WB BIT 8 MASK ! 7527: > ANB WC,WB GET BIT ! 7528: > MOV WB,HEADN SYSID HEADERS INCLUDE/OMIT FLAG ! 7529: > MOV BITS9,WB BIT 9 MASK ! 7530: > ANB WC,WB GET BIT ! 7531: > MOV WB,PRSTO STANDARD LISTING FLAG ! 7532: > MOV BIT10,WB BIT 10 MASK ! 7533: > ANB WC,WB GET BIT ! 7534: > MOV WB,PRECL EXTENDED LISTING OPTION ! 7535: > MOV (XS)+,XL RESTORE XL ! 7536: > EXI RETURN ! 7537: 19953c18593 ! 7538: < * PRTCH -- PRINT A CHARACTER ! 7539: --- ! 7540: > * PRTCF -- PRINT CHAR TO STD PRINTER AND FLUSH BFR ! 7541: 19954a18595,18605 ! 7542: > * (WA) CHAR TO PRINT ! 7543: > * JSR PRTCF CALL TO PRINT AND FLUSH ! 7544: > * ! 7545: > PRTCF PRC E,0 ENTRY POINT ! 7546: > JSR PRTCH PRINT CHARACTER ! 7547: > JSR PRTFH FLUSH BUFFER ! 7548: > EXI RETURN TO CALLER ! 7549: > ENP END PROCEDURE PRTCF ! 7550: > * ! 7551: > * PRTCH -- PRINT A CHARACTER ON STANDARD PRINTER ! 7552: > * ! 7553: 19960a18612 ! 7554: > BZE PRLEN,PTCH2 SKIP IF NO PRINT FILE ! 7555: 19962,19963c18614,18615 ! 7556: < BNE PROFS,PRLEN,PRCH1 JUMP IF ROOM IN BUFFER ! 7557: < JSR PRTNL ELSE PRINT THIS LINE ! 7558: --- ! 7559: > BNE PROFS,PRLEN,PTCH1 JUMP IF ROOM IN BUFFER ! 7560: > JSR PRTFH ELSE PRINT THIS LINE ! 7561: 19967c18619 ! 7562: < PRCH1 MOV PRBUF,XR POINT TO PRINT BUFFER ! 7563: --- ! 7564: > PTCH1 MOV PRBUF,XR POINT TO PRINT BUFFER ! 7565: 19973c18625,18628 ! 7566: < EXI RETURN TO PRTCH CALLER ! 7567: --- ! 7568: > * ! 7569: > * RETURN POINT ! 7570: > * ! 7571: > PTCH2 EXI RETURN TO PRTCH CALLER ! 7572: 19974a18630,18640 ! 7573: > * ! 7574: > * PRTFB -- PRINT STRING, FLUSH BFR AND PRINT BLANK LINE ! 7575: > * ! 7576: > * (XR) STRING TO PRINT ! 7577: > * JSR PRTFB CALL FOR PRINT FLUSH AND BLANK ! 7578: > * ! 7579: > PRTFB PRC E,0 ENTRY POINT ! 7580: > JSR PRTSF PRINT AND FLUSH ! 7581: > JSR PRTFH PRINT BLANK ! 7582: > EXI RETURN TO CALLER ! 7583: > ENP END PROCEDURE PRTFB ! 7584: 19977c18643 ! 7585: < * PRTIC -- PRINT TO INTERACTIVE CHANNEL ! 7586: --- ! 7587: > * PRTFH -- FLUSH STANDARD PRINT BUFFER ! 7588: 19979,19982c18645,18649 ! 7589: < * PRTIC IS CALLED TO PRINT THE CONTENTS OF THE STANDARD ! 7590: < * PRINT BUFFER TO THE INTERACTIVE CHANNEL. IT IS ONLY ! 7591: < * CALLED AFTER PRTST HAS SET UP THE STRING FOR PRINTING. ! 7592: < * IT DOES NOT CLEAR THE BUFFER. ! 7593: --- ! 7594: > * PRTFH PRINTS THE CONTENTS OF THE PRINT BUFFER, RESETS ! 7595: > * THE BUFFER TO ALL BLANKS AND RESETS THE PRINT POINTER. ! 7596: > * ON ITS FIRST CALL IT MAY PRINT LISTING HEADERS. ! 7597: > * IF TTLST IS NON-ZERO, IT COPIES PRINT BUFFER TO ! 7598: > * TERMINAL AND FLUSHES THIS ALSO. ! 7599: 19984,19985c18651 ! 7600: < * JSR PRTIC CALL FOR PRINT ! 7601: < * (WA,WB) DESTROYED ! 7602: --- ! 7603: > * JSR PRTFH CALL TO FLUSH BUFFER ! 7604: 19987,19992c18653,18655 ! 7605: < PRTIC PRC E,0 ENTRY POINT ! 7606: < MOV XR,-(XS) SAVE XR ! 7607: < MOV PRBUF,XR POINT TO BUFFER ! 7608: < MOV PROFS,WA NO OF CHARS ! 7609: < JSR SYSPI PRINT ! 7610: < PPM PRTC2 FAIL RETURN ! 7611: --- ! 7612: > PRTFH PRC R,0 ENTRY POINT ! 7613: > BNZ HEADP,PTFH1 WERE HEADERS PRINTED ! 7614: > JSR PRTPS NO - PRINT THEM ! 7615: 19994c18657 ! 7616: < * RETURN ! 7617: --- ! 7618: > * HEADERS DONE ! 7619: 19996,19997c18659,18668 ! 7620: < PRTC1 MOV (XS)+,XR RESTORE XR ! 7621: < EXI RETURN ! 7622: --- ! 7623: > PTFH1 BZE PRLEN,PTFH4 SKIP IF NO OUTPUT POSSIBLE ! 7624: > MOV XL,-(XS) SAVE XL ! 7625: > MOV XR,-(XS) SAVE XR ! 7626: > MOV WA,-(XS) SAVE WA ! 7627: > MOV WC,-(XS) SAVE WC ! 7628: > MOV PRBUF,XR LOAD POINTER TO BUFFER ! 7629: > MOV PROFS,WC LOAD NUMBER OF CHARS IN BUFFER ! 7630: > BNZ PRAVL,PTFH5 SKIP IF PRINT FILE AVAILABLE ! 7631: > BNZ TTOUS,PTFH2 SKIP IF STD OUTPUT TO TERML ! 7632: > BZE TTLST,PTFH3 LAST POSSIBILITY IS ERROR TO TERML ! 7633: 19999c18670 ! 7634: < * ERROR OCCURED ! 7635: --- ! 7636: > * SEND TO TERMINAL ! 7637: 20001,20004c18672,18674 ! 7638: < PRTC2 ZER ERICH PREVENT LOOPING ! 7639: < ERB 252,ERROR ON PRINTING TO INTERACTIVE CHANNEL ! 7640: < BRN PRTC1 RETURN ! 7641: < ENP PROCEDURE PRTIC ! 7642: --- ! 7643: > PTFH2 JSR SYSPI PRINT TO TERMINAL ! 7644: > PPM PTFH6 FAIL ! 7645: > PPM EROSI ERROR ! 7646: 20005a18676 ! 7647: > * PRTFH (CONTINUED) ! 7648: 20007c18678 ! 7649: < * PRTIS -- PRINT TO INTERACTIVE AND STANDARD PRINTER ! 7650: --- ! 7651: > * BLANK BUFFER ! 7652: 20009,20013c18680,18688 ! 7653: < * PRTIS PUTS A LINE FROM THE PRINT BUFFER ONTO THE ! 7654: < * INTERACTIVE CHANNEL (IF ANY) AND THE STANDARD PRINTER. ! 7655: < * IT ALWAYS PRINTS TO THE STANDARD PRINTER BUT DOES ! 7656: < * NOT DUPLICATE LINES IF THE STANDARD PRINTER IS ! 7657: < * INTERACTIVE. IT CLEARS DOWN THE PRINT BUFFER. ! 7658: --- ! 7659: > PTFH3 MOV PRBLK,XL POINT TO BLANKING STRING ! 7660: > MOV PRCHS,XR POINT TO BUFFER ! 7661: > MOV PRCMV,WA COUNT OF BAUS TO MOVE ! 7662: > MVW MOVE BLANKS INTO BUFFER ! 7663: > ZER PROFS RESET OFFSET ! 7664: > MOV (XS)+,WC RESTORE WC ! 7665: > MOV (XS)+,WA RECOVER WA ! 7666: > MOV (XS)+,XR RESTORE XR ! 7667: > MOV (XS)+,XL RESTORE XL ! 7668: 20015,20016c18690 ! 7669: < * JSR PRTIS CALL FOR PRINTING ! 7670: < * (WA,WB) DESTROYED ! 7671: --- ! 7672: > * RETURN POINT ! 7673: 20018,20021c18692 ! 7674: < PRTIS PRC E,0 ENTRY POINT ! 7675: < BNZ PRICH,PRTS1 JUMP IF STANDARD PRINTER IS INT.CH. ! 7676: < BZE ERICH,PRTS1 SKIP IF NOT DOING INT. ERROR REPS. ! 7677: < JSR PRTIC PRINT TO INTERACTIVE CHANNEL ! 7678: --- ! 7679: > PTFH4 EXI RETURN TO CALLER ! 7680: 20023c18694 ! 7681: < * MERGE AND EXIT ! 7682: --- ! 7683: > * HERE FOR REGULAR PRINT FILE ! 7684: 20025,20027c18696,18710 ! 7685: < PRTS1 JSR PRTNL PRINT TO STANDARD PRINTER ! 7686: < EXI RETURN ! 7687: < ENP END PROCEDURE PRTIS ! 7688: --- ! 7689: > PTFH5 JSR SYSPR CALL SYSTEM PRINT ROUTINE ! 7690: > PPM PTFH6 JUMP IF FAILED ! 7691: > PPM EROSI STOP IF ERROR ! 7692: > BZE TTLST,PTFH3 SKIP IF NO COPY TO TERMINAL ! 7693: > MOV PROFS,SCLEN(XR) SET STRING LENGTH FOR PTTST ! 7694: > JSR PTTST COPY STD BUFFER TO TERML BFR ! 7695: > JSR PTTFH FLUSH IT ! 7696: > MOV PRLEN,SCLEN(XR) RESTORE BUFFER LENGTH ! 7697: > BRN PTFH3 MERGE ! 7698: > * ! 7699: > * A FAILURE SUCH AS FILE OVERFILLED OCCURRED ! 7700: > * ! 7701: > PTFH6 BZE STAGX,PTFH3 IGNORE IF COMPILE TIME ! 7702: > BRN EXFAL ELSE CAUSE STMT FAILURE ! 7703: > ENP END PROCEDURE PRTFH ! 7704: 20057d18739 ! 7705: < EJC ! 7706: 20071c18753 ! 7707: < JSR PRTNL PRINT LINE ! 7708: --- ! 7709: > JSR PRTFH PRINT LINE ! 7710: 20076,20140d18757 ! 7711: < * PRTMX -- AS PRTMI WITH EXTRA COPY TO INTERACTIVE CHAN. ! 7712: < * ! 7713: < * JSR PRTMX CALL FOR PRINTING ! 7714: < * (WA,WB) DESTROYED ! 7715: < * ! 7716: < PRTMX PRC E,0 ENTRY POINT ! 7717: < JSR PRTST PRINT STRING MESSAGE ! 7718: < MOV =PRTMF,PROFS SET PTR TO COLUMN 15 ! 7719: < JSR PRTIN PRINT INTEGER ! 7720: < JSR PRTIS PRINT LINE ! 7721: < EXI RETURN ! 7722: < ENP END PROCEDURE PRTMX ! 7723: < EJC ! 7724: < * ! 7725: < * PRTNL -- PRINT NEW LINE (END PRINT LINE) ! 7726: < * ! 7727: < * PRTNL PRINTS THE CONTENTS OF THE PRINT BUFFER, RESETS ! 7728: < * THE BUFFER TO ALL BLANKS AND RESETS THE PRINT POINTER. ! 7729: < * ! 7730: < * JSR PRTNL CALL TO PRINT LINE ! 7731: < * ! 7732: < PRTNL PRC R,0 ENTRY POINT ! 7733: < BNZ HEADP,PRNL0 WERE HEADERS PRINTED ! 7734: < JSR PRTPS NO - PRINT THEM ! 7735: < * ! 7736: < * CALL SYSPR ! 7737: < * ! 7738: < PRNL0 MOV XR,-(XS) SAVE ENTRY XR ! 7739: < MOV WA,PRTSA SAVE WA ! 7740: < MOV WB,PRTSB SAVE WB ! 7741: < MOV PRBUF,XR LOAD POINTER TO BUFFER ! 7742: < MOV PROFS,WA LOAD NUMBER OF CHARS IN BUFFER ! 7743: < JSR SYSPR CALL SYSTEM PRINT ROUTINE ! 7744: < PPM PRNL2 JUMP IF FAILED ! 7745: < LCT WA,PRLNW LOAD LENGTH OF BUFFER IN WORDS ! 7746: < ADD *SCHAR,XR POINT TO CHARS OF BUFFER ! 7747: < MOV NULLW,WB GET WORD OF BLANKS ! 7748: < * ! 7749: < * LOOP TO BLANK BUFFER ! 7750: < * ! 7751: < PRNL1 MOV WB,(XR)+ STORE WORD OF BLANKS, BUMP PTR ! 7752: < BCT WA,PRNL1 LOOP TILL ALL BLANKED ! 7753: < * ! 7754: < * EXIT POINT ! 7755: < * ! 7756: < MOV PRTSB,WB RESTORE WB ! 7757: < MOV PRTSA,WA RESTORE WA ! 7758: < MOV (XS)+,XR RESTORE ENTRY XR ! 7759: < ZER PROFS RESET PRINT BUFFER POINTER ! 7760: < EXI RETURN TO PRTNL CALLER ! 7761: < * ! 7762: < * FILE FULL OR NO OUTPUT FILE FOR LOAD MODULE ! 7763: < * ! 7764: < PRNL2 BNZ PRTEF,PRNL3 JUMP IF NOT FIRST TIME ! 7765: < MNZ PRTEF MARK FIRST OCCURRENCE ! 7766: < ERB 253,PRINT LIMIT EXCEEDED ON STANDARD OUTPUT CHANNEL ! 7767: < * ! 7768: < * STOP AT ONCE ! 7769: < * ! 7770: < PRNL3 MOV =NINI8,WB ENDING CODE ! 7771: < MOV KVSTN,WA STATEMENT NUMBER ! 7772: < JSR SYSEJ STOP ! 7773: < ENP END PROCEDURE PRTNL ! 7774: < EJC ! 7775: < * ! 7776: 20376,20377c18993 ! 7777: < JSR PRTVL PRINT VALUE ! 7778: < JSR PRTNL TERMINATE LINE ! 7779: --- ! 7780: > JSR PRTVF PRINT VALUE ! 7781: 20384c19000 ! 7782: < * PRTPG -- PRINT A PAGE THROW ! 7783: --- ! 7784: > * PRTPG -- PRINT A PAGE THROW ! 7785: 20387c19003 ! 7786: < * LISTING CHANNEL DEPENDING ON THE LISTING OPTIONS CHOSEN. ! 7787: --- ! 7788: > * LISTING FILE DEPENDING ON THE LISTING OPTIONS CHOSEN. ! 7789: 20392,20393c19008,19009 ! 7790: < BEQ STAGE,=STGXT,PRP01 JUMP IF EXECUTION TIME ! 7791: < BZE LSTLC,PRP06 RETURN IF TOP OF PAGE ALREADY ! 7792: --- ! 7793: > BNZ STAGX,PTPG1 SKIP IF EXECUTION TIME ! 7794: > BZE LSTLC,PTPG6 RETURN IF TOP OF PAGE ALREADY ! 7795: 20398,20401c19014,19017 ! 7796: < PRP01 MOV XR,-(XS) PRESERVE XR ! 7797: < BNZ PRSTD,PRP02 EJECT IF FLAG SET ! 7798: < BNZ PRICH,PRP03 JUMP IF INTERACTIVE LISTING CHANNEL ! 7799: < BZE PRECL,PRP03 JUMP IF COMPACT LISTING ! 7800: --- ! 7801: > PTPG1 MOV XR,-(XS) PRESERVE XR ! 7802: > BNZ PRECL,PTPG2 EJECT IF EXTENDED LISTING ! 7803: > BZE PRSTD,PTPG3 SKIP IF COMPACT LISTING ! 7804: > BNZ TTOUS,PTPG3 SKIP IF LISTING TO TERMINAL ! 7805: 20405,20406c19021,19024 ! 7806: < PRP02 JSR SYSEP EJECT ! 7807: < BRN PRP04 MERGE ! 7808: --- ! 7809: > PTPG2 JSR SYSEP EJECT ! 7810: > PPM PTPG4 IGNORE FAILURE ! 7811: > PPM EROSI ERROR ! 7812: > BRN PTPG4 MERGE ! 7813: 20408,20409c19026 ! 7814: < * COMPACT OR INTERACTIVE CHANNEL LISTING. CANT PRINT ! 7815: < * BLANKS UNTIL CHECK MADE FOR HEADERS PRINTED AND FLAG SET. ! 7816: --- ! 7817: > * COMPACT LISTING. ! 7818: 20411,20416c19028,19033 ! 7819: < * ! 7820: < PRP03 MOV HEADP,XR REMEMBER HEADP ! 7821: < MNZ HEADP SET TO AVOID REPEATED PRTPG CALLS ! 7822: < JSR PRTNL PRINT BLANK LINE ! 7823: < JSR PRTNL PRINT BLANK LINE ! 7824: < JSR PRTNL PRINT BLANK LINE ! 7825: --- ! 7826: > PTPG3 BNZ HEADN,PTPG4 SKIP IF HEADERS OMITTED ! 7827: > MOV HEADP,XR REMEMBER HEADP ! 7828: > MNZ HEADP SET TO AVOID RECURSIVE PRTPG CALLS ! 7829: > JSR PRTFH PRINT BLANK LINE ! 7830: > JSR PRTFH PRINT BLANK LINE ! 7831: > JSR PRTFH PRINT BLANK LINE ! 7832: 20425c19042 ! 7833: < PRP04 BNZ HEADP,PRP05 JUMP IF HEADER LISTED ! 7834: --- ! 7835: > PTPG4 BNZ HEADP,PTPG5 JUMP IF HEADER LISTED ! 7836: 20426a19044 ! 7837: > BNZ HEADN,PTPG5 SKIP IF HEADERS OMITTED ! 7838: 20431,20432c19049 ! 7839: < JSR PRTST APPEND EXTRA CHARS ! 7840: < JSR PRTNL PRINT IT ! 7841: --- ! 7842: > JSR PRTSF APPEND EXTRA CHARS AND PRINT ! 7843: 20434,20437c19051,19052 ! 7844: < JSR PRTST PLACE IT ! 7845: < JSR PRTNL PRINT IT ! 7846: < JSR PRTNL PRINT A BLANK ! 7847: < JSR PRTNL AND ANOTHER ! 7848: --- ! 7849: > JSR PRTFB PLACE IT AND A BLANK ! 7850: > JSR PRTFH AND ANOTHER ! 7851: 20443c19058 ! 7852: < PRP05 MOV (XS)+,XR RESTORE XR ! 7853: --- ! 7854: > PTPG5 MOV (XS)+,XR RESTORE XR ! 7855: 20447c19062 ! 7856: < PRP06 EXI RETURN ! 7857: --- ! 7858: > PTPG6 EXI RETURN ! 7859: 20451c19066 ! 7860: < * PRTPS - PRINT PAGE WITH TEST FOR STANDARD LISTING OPTION ! 7861: --- ! 7862: > * PRTPS -- PRINT PAGE WITH TEST FOR STANDARD LISTING OPTION ! 7863: 20463a19079,19089 ! 7864: > * ! 7865: > * PRTSF -- PRINT STRING TO STD PRINTER AND FLUSH BFR ! 7866: > * ! 7867: > * (XR) STRING TO PRINT ! 7868: > * JSR PRTSF CALL TO PRINT AND FLUSH ! 7869: > * ! 7870: > PRTSF PRC E,0 ENTRY POINT ! 7871: > JSR PRTST PRINT STRING ! 7872: > JSR PRTFH FLUSH BUFFER ! 7873: > EXI RETURN TO CALLER ! 7874: > ENP END PROCEDURE PRTSF ! 7875: 20512c19138 ! 7876: < * PRTST -- PRINT STRING ! 7877: --- ! 7878: > * PRTST -- PRINT STRING TO STANDARD FILE ! 7879: 20514c19140 ! 7880: < * PRTST PLACES A STRING OF CHARACTERS IN THE PRINT BUFFER ! 7881: --- ! 7882: > * PLACE A STRING OF CHARACTERS IN THE STANDARD PRINT BUFFER ! 7883: 20516,20517d19141 ! 7884: < * SEE PRTNL FOR GLOBAL LOCATIONS USED ! 7885: < * ! 7886: 20519a19144,19147 ! 7887: > * IF GLOBAL TTOUS IS NON-ZERO, STRING IS SENT TO TERMINAL ! 7888: > * INSTEAD OF STANDARD OUTPUT FILE. ! 7889: > * IF GLOBAL TTLST IS NON-ZERO, STRING IS SENT TO ! 7890: > * TERMINAL AS WELL AS STANDARD OUTPUT FILE ! 7891: 20526c19154 ! 7892: < BNZ HEADP,PRST0 WERE HEADERS PRINTED ! 7893: --- ! 7894: > BNZ HEADP,PTST1 WERE HEADERS PRINTED ! 7895: 20529c19157 ! 7896: < * CALL SYSPR ! 7897: --- ! 7898: > * HEADERS DEALT WITH ! 7899: 20531c19159,19165 ! 7900: < PRST0 MOV WA,PRSVA SAVE WA ! 7901: --- ! 7902: > PTST1 BZE PRLEN,PTST7 SKIP IF NO O/P POSSIBLE ! 7903: > BNZ PRPUT,PTST2 SKIP IF PUTTING IS OK ! 7904: > BZE TTLST,PTST7 SKIP OUT IF NOT ERROR TO TERML ! 7905: > * ! 7906: > * KEEP REGISTERS ! 7907: > * ! 7908: > PTST2 MOV WA,PRSVA SAVE WA ! 7909: 20537c19171 ! 7910: < PRST1 MOV SCLEN(XR),WA LOAD STRING LENGTH ! 7911: --- ! 7912: > PTST3 MOV SCLEN(XR),WA LOAD STRING LENGTH ! 7913: 20539c19173 ! 7914: < BZE WA,PRST4 JUMP TO EXIT IF NONE LEFT ! 7915: --- ! 7916: > BZE WA,PTST6 JUMP TO EXIT IF NONE LEFT ! 7917: 20545,20546c19179,19180 ! 7918: < BNZ XR,PRST2 SKIP IF ROOM LEFT ON THIS LINE ! 7919: < JSR PRTNL ELSE PRINT THIS LINE ! 7920: --- ! 7921: > BNZ XR,PTST4 SKIP IF ROOM LEFT ON THIS LINE ! 7922: > JSR PRTFH PRINT THIS LINE ! 7923: 20554c19188 ! 7924: < PRST2 BLO WA,XR,PRST3 JUMP IF ROOM FOR REST OF STRING ! 7925: --- ! 7926: > PTST4 BLO WA,XR,PTST5 JUMP IF ROOM FOR REST OF STRING ! 7927: 20559c19193 ! 7928: < PRST3 MOV PRBUF,XR POINT TO PRINT BUFFER ! 7929: --- ! 7930: > PTST5 MOV PRBUF,XR POINT TO PRINT BUFFER ! 7931: 20564d19197 ! 7932: < MOV WB,PRSVC PRESERVE CHAR COUNTER ! 7933: 20566d19198 ! 7934: < MOV PRSVC,WB RECOVER CHAR COUNTER ! 7935: 20569c19201 ! 7936: < BRN PRST1 LOOP BACK TO TEST FOR MORE ! 7937: --- ! 7938: > BRN PTST3 LOOP BACK TO TEST FOR MORE ! 7939: 20573c19205 ! 7940: < PRST4 MOV PRSVB,WB RESTORE ENTRY WB ! 7941: --- ! 7942: > PTST6 MOV PRSVB,WB RESTORE ENTRY WB ! 7943: 20575,20577d19206 ! 7944: < EXI RETURN TO PRTST CALLER ! 7945: < ENP END PROCEDURE PRTST ! 7946: < EJC ! 7947: 20579c19208 ! 7948: < * PRTTR -- PRINT TO TERMINAL ! 7949: --- ! 7950: > * RETURN POINT ! 7951: 20581,20582c19210,19211 ! 7952: < * CALLED TO PRINT CONTENTS OF STANDARD PRINT BUFFER TO ! 7953: < * ONLINE TERMINAL. CLEARS BUFFER DOWN AND RESETS PROFS. ! 7954: --- ! 7955: > PTST7 EXI RETURN TO PRTST CALLER ! 7956: > ENP END PROCEDURE PRTST ! 7957: 20584,20585c19213 ! 7958: < * JSR PRTTR CALL FOR PRINT ! 7959: < * (WA,WB) DESTROYED ! 7960: --- ! 7961: > * PRTVF -- PLACE A VALUE AND FLUSH STANDARD BUFFER ! 7962: 20587,20593c19215,19216 ! 7963: < PRTTR PRC E,0 ENTRY POINT ! 7964: < MOV XR,-(XS) SAVE XR ! 7965: < JSR PRTIC PRINT BUFFER CONTENTS ! 7966: < MOV PRBUF,XR POINT TO PRINT BFR TO CLEAR IT ! 7967: < LCT WA,PRLNW GET BUFFER LENGTH ! 7968: < ADD *SCHAR,XR POINT PAST SCBLK HEADER ! 7969: < MOV NULLW,WB GET BLANKS ! 7970: --- ! 7971: > * (XR) VALUE TO PRINT ! 7972: > * JSR PRTVF CALL TO PRINT AND FLUSH ! 7973: 20595,20602c19218,19222 ! 7974: < * LOOP TO CLEAR BUFFER ! 7975: < * ! 7976: < PRTT1 MOV WB,(XR)+ CLEAR A WORD ! 7977: < BCT WA,PRTT1 LOOP ! 7978: < ZER PROFS RESET PROFS ! 7979: < MOV (XS)+,XR RESTORE XR ! 7980: < EXI RETURN ! 7981: < ENP END PROCEDURE PRTTR ! 7982: --- ! 7983: > PRTVF PRC E,0 ENTRY POINT ! 7984: > JSR PRTVL PLACE VALUE ! 7985: > JSR PRTFH FLUSH BUFFER ! 7986: > EXI RETURN TO CALLER ! 7987: > ENP END PROCEDURE PRTVF ! 7988: 20676c19296 ! 7989: < * VCBLK, TBBLK, BCBLK MERGE HERE FOR ) BLANK NUMBER IDVAL ! 7990: --- ! 7991: > * VCBLK, TBBLK MERGE HERE FOR ) BLANK NUMBER IDVAL ! 7992: 20814a19435,19536 ! 7993: > EJC ! 7994: > * ! 7995: > * PTTFH -- FLUSH TERMINAL BUFFER ! 7996: > * ! 7997: > * PRINTS THE CONTENTS OF THE TTY BUFFER, RESETS ! 7998: > * THE BUFFER TO ALL BLANKS AND RESETS THE POINTER. ! 7999: > * ! 8000: > * JSR PTTFH CALL TO FLUSH BUFFER ! 8001: > * ! 8002: > PTTFH PRC E,0 ENTRY POINT ! 8003: > BZE TTLEN,PTTF2 SKIP IF NO TERMINAL ! 8004: > MOV XL,-(XS) SAVE XL ! 8005: > MOV XR,-(XS) SAVE XR ! 8006: > MOV WA,-(XS) SAVE WA ! 8007: > MOV WC,-(XS) SAVE WC ! 8008: > MOV TTBUF,XR LOAD POINTER TO BUFFER ! 8009: > MOV TTOFS,WC LOAD NUMBER OF CHARS IN BUFFER ! 8010: > JSR SYSPI CALL SYSTEM PRINT ROUTINE ! 8011: > PPM PTTF3 JUMP IF FAILED ! 8012: > PPM EROSI STOP IF ERROR ! 8013: > * ! 8014: > * BLANK BUFFER ! 8015: > * ! 8016: > PTTF1 MOV TTBLK,XL POINT TO BLANKING STRING ! 8017: > MOV TTCHS,XR POINT TO BUFFER ! 8018: > MOV TTCMV,WA COUNT OF BAUS TO MOVE ! 8019: > MVW MOVE BLANKS INTO BUFFER ! 8020: > ZER TTOFS RESET OFFSET ! 8021: > MOV (XS)+,WC RESTORE WC ! 8022: > MOV (XS)+,WA RECOVER WA ! 8023: > MOV (XS)+,XR RESTORE XR ! 8024: > MOV (XS)+,XL RESTORE XL ! 8025: > * ! 8026: > * RETURN POINT ! 8027: > * ! 8028: > PTTF2 EXI RETURN TO CALLER ! 8029: > * ! 8030: > * A FAILURE SUCH AS FILE OVERFILLED OCCURRED ! 8031: > * ! 8032: > PTTF3 BZE STAGX,PTTF1 IGNORE IF COMPILE TIME ! 8033: > BRN EXFAL ELSE CAUSE STMT FAILURE ! 8034: > ENP END PROCEDURE ! 8035: > EJC ! 8036: > * ! 8037: > * PTTST -- PRINT STRING TO TERMINAL ! 8038: > * ! 8039: > * PLACE A STRING OF CHARACTERS IN THE TERMINAL BUFFER ! 8040: > * ! 8041: > * NOTE THAT THE FIRST WORD OF THE BLOCK (NORMALLY B$SCL) ! 8042: > * IS NOT USED AND NEED NOT BE SET CORRECTLY (SEE PRTVN) ! 8043: > * ! 8044: > * (XR) STRING TO BE PRINTED ! 8045: > * JSR PTTST CALL TO PRINT STRING ! 8046: > * (TTOFS) UPDATED PAST CHARS PLACED ! 8047: > * ! 8048: > PTTST PRC E,0 ENTRY POINT ! 8049: > BZE TTLEN,PTTS5 SKIP IF NO TERMINAL ! 8050: > MOV WA,PRTVA SAVE WA ! 8051: > MOV WB,PRTVB SAVE WB ! 8052: > ZER WB SET CHARS PRINTED COUNT TO ZERO ! 8053: > * ! 8054: > * LOOP TO PRINT SUCCESSIVE LINES FOR LONG STRING ! 8055: > * ! 8056: > PTTS1 MOV SCLEN(XR),WA LOAD STRING LENGTH ! 8057: > SUB WB,WA SUBTRACT COUNT OF CHARS ALREADY OUT ! 8058: > BZE WA,PTTS4 JUMP TO EXIT IF NONE LEFT ! 8059: > MOV XL,-(XS) ELSE STACK ENTRY XL ! 8060: > MOV XR,-(XS) SAVE ARGUMENT ! 8061: > MOV XR,XL COPY FOR EVENTUAL MOVE ! 8062: > MOV TTLEN,XR LOAD BUFFER LENGTH ! 8063: > SUB TTOFS,XR GET CHARS LEFT IN BUFFER ! 8064: > BNZ XR,PTTS2 SKIP IF ROOM LEFT ON THIS LINE ! 8065: > JSR PTTFH ELSE PRINT THIS LINE ! 8066: > MOV TTLEN,XR AND SET FULL WIDTH AVAILABLE ! 8067: > * ! 8068: > * HERE WITH CHARS TO PRINT AND SOME ROOM IN BUFFER ! 8069: > * ! 8070: > PTTS2 BLO WA,XR,PTTS3 JUMP IF ROOM FOR REST OF STRING ! 8071: > MOV XR,WA ELSE SET TO FILL LINE ! 8072: > * ! 8073: > * MERGE HERE WITH CHARACTER COUNT IN WA ! 8074: > * ! 8075: > PTTS3 MOV TTBUF,XR POINT TO PRINT BUFFER ! 8076: > PLC XL,WB POINT TO LOCATION IN STRING ! 8077: > PSC XR,TTOFS POINT TO LOCATION IN BUFFER ! 8078: > ADD WA,WB BUMP STRING CHARS COUNT ! 8079: > ADD WA,TTOFS BUMP BUFFER POINTER ! 8080: > MVC MOVE CHARACTERS TO BUFFER ! 8081: > MOV (XS)+,XR RESTORE ARGUMENT POINTER ! 8082: > MOV (XS)+,XL RESTORE ENTRY XL ! 8083: > BRN PTTS1 LOOP BACK TO TEST FOR MORE ! 8084: > EJC ! 8085: > * ! 8086: > * HERE TO EXIT AFTER PRINTING STRING ! 8087: > * ! 8088: > PTTS4 MOV PRTVB,WB RESTORE ENTRY WB ! 8089: > MOV PRTVA,WA RESTORE ENTRY WA ! 8090: > * ! 8091: > * RETURN POINT ! 8092: > * ! 8093: > PTTS5 EXI RETURN TO PTTST CALLER ! 8094: > ENP END PROCEDURE PTTST ! 8095: 20851a19574,19578 ! 8096: > * THE GLOBAL FLAG RDRER IS SET JUST BEFORE THE READ, AND ! 8097: > * CLEARED AFTER IT. THIS IS SO THAT IN THE EVENT SYSRD ! 8098: > * OR SYSRI TAKE AN EROSI EXIT, THE ERROR APPENDAGE CAN ! 8099: > * RECOGNIZE THE SITUATION AND TAKE APPROPRIATE ACTION. ! 8100: > * ! 8101: 20859,20861c19586,19596 ! 8102: < BNZ XR,READ3 EXIT IF ALREADY READ ! 8103: < BNE STAGE,=STGIC,READ3 EXIT IF NOT INITIAL COMPILE ! 8104: < MOV CSWIN,WA MAX READ LENGTH ! 8105: --- ! 8106: > BNZ XR,READ5 EXIT IF ALREADY READ ! 8107: > * ! 8108: > * MERGE FROM -COPY EOF TO TRY READ ! 8109: > * ! 8110: > READ0 BEQ STAGE,=STGIC,READ1 READ IF INITIAL COMPILE ! 8111: > BZE R$COP,READ6 ELSE EXIT IF NO -COPY IN FORCE ! 8112: > * ! 8113: > * ATTEMPT READ ! 8114: > * ! 8115: > READ1 MOV CSWIN,WA MAX READ LENGTH ! 8116: > MNZ RDRER NOTE IN-READR IN CASE EROSI ! 8117: 20863,20864c19598,19612 ! 8118: < JSR SYSRD READ INPUT IMAGE ! 8119: < PPM READ4 JUMP IF END OF FILE ! 8120: --- ! 8121: > BZE TTINS,READ2 SKIP IF STANDARD INPUT FILE ! 8122: > JSR SYSRI READ FROM TERMINAL ! 8123: > PPM READ7 FAIL ! 8124: > PPM EROSI ERROR ! 8125: > BRN READ3 MERGE ! 8126: > * ! 8127: > * READ FROM STANDARD FILE ! 8128: > * ! 8129: > READ2 JSR SYSRD READ INPUT IMAGE ! 8130: > PPM READ7 JUMP IF END OF FILE ! 8131: > PPM EROSI ERROR RETURN ! 8132: > * ! 8133: > * MERGE ! 8134: > * ! 8135: > READ3 ZER RDRER NOTE NOT-IN-READR FOR ERROR RTN ! 8136: 20866c19614 ! 8137: < BLE SCLEN(XR),CSWIN,READ1 USE SMALLER OF STRING LNTH .. ! 8138: --- ! 8139: > BLE SCLEN(XR),CSWIN,READ4 USE SMALLER OF STRING LNTH.. ! 8140: 20871c19619 ! 8141: < READ1 JSR TRIMR TRIM TRAILING BLANKS ! 8142: --- ! 8143: > READ4 JSR TRIMR TRIM TRAILING BLANKS ! 8144: 20875c19623 ! 8145: < READ2 MOV XR,R$CNI STORE COPY OF POINTER ! 8146: --- ! 8147: > READ5 MOV XR,R$CNI STORE COPY OF POINTER ! 8148: 20879c19627 ! 8149: < READ3 EXI RETURN TO READR CALLER ! 8150: --- ! 8151: > READ6 EXI RETURN TO READR CALLER ! 8152: 20883c19631,19632 ! 8153: < READ4 MOV XR,DNAMP POP UNUSED SCBLK ! 8154: --- ! 8155: > READ7 ZER RDRER NOTE NOT-IN-READR FOR ERR ! 8156: > MOV XR,DNAMP POP UNUSED SCBLK ! 8157: 20885c19634,19636 ! 8158: < BRN READ2 MERGE ! 8159: --- ! 8160: > BZE R$COP,READ5 SKIP IF NO -COPY IN FORCE ! 8161: > JSR COPND CALL TO END THIS -COPY (EOF) ! 8162: > BRN READ0 TRY AGAIN ! 8163: 20886a19638 ! 8164: > .IF .CASL ! 8165: 20888a19641,19724 ! 8166: > * SBSCC -- BUILD SUBSTRING WITH CASE CONVERSION ! 8167: > * ! 8168: > * (XL) PTR TO SCBLK CONTAINING CHARS ! 8169: > * (WA) CHAR COUNT ! 8170: > * (WB) OFFSET TO FIRST CHAR IN SCBLK ! 8171: > * JSR SBSCC CALL TO BUILD SUBSTRING ! 8172: > * (XR) PTR TO NEW SCBLK WITH SUBSTRING ! 8173: > * (WA,WB,WC,XL,IA) DESTROYED ! 8174: > * ! 8175: > * IF OPTION .CPLC IS SELECTED (PREFER LOWER CASE), TARGET ! 8176: > * CASE IS LOWER CASE, OTHERWISE IT IS UPPER CASE. ! 8177: > * ! 8178: > SBSCC PRC E,0 ENTRY POINT ! 8179: > BZE WA,SBSC4 JUMP IF NULL SUBSTRING ! 8180: > JSR ALOCS ELSE ALLOCATE SCBLK ! 8181: > MOV WC,WA MOVE NUMBER OF CHARACTERS ! 8182: > MOV XR,WC SAVE PTR TO NEW SCBLK ! 8183: > PLC XL,WB PREPARE TO LOAD CHARS FROM OLD BLK ! 8184: > PSC XR PREPARE TO STORE CHARS IN NEW BLK ! 8185: > LCT WA,WA TO COUNT ROUND LOOP ! 8186: > * ! 8187: > * LOOP TO COPY AND TRANSLATE CHARS ! 8188: > * ! 8189: > SBSC1 LCH WB,(XL)+ GET CHAR ! 8190: > .IF .CPLC ! 8191: > BGT WB,=CH$L$,SBSC2 SKIP IF NOT UC LETTER ! 8192: > BLT WB,=CH$LA,SBSC2 SKIP IF NOT UC LETTER ! 8193: > .IF .CSCV ! 8194: > CUL WB CONVERT FROM UC TO LC ! 8195: > .ELSE ! 8196: > ADD =DFA$A,WB CONVERT FROM UC TO LC ! 8197: > .FI ! 8198: > .ELSE ! 8199: > BGT WB,=CH$$$,SBSC2 SKIP IF NOT A LC LETTER ! 8200: > BLT WB,=CH$$A,SBSC2 SKIP IF NOT A LC LETTER ! 8201: > .IF .CSCV ! 8202: > CLU WB CONVERT FROM LC TO UC ! 8203: > .ELSE ! 8204: > SUB =DFA$A,WB CONVERT FROM LC TO UC ! 8205: > .FI ! 8206: > .FI ! 8207: > * ! 8208: > * STORE CHAR IN NEW SUBSTRING ! 8209: > * ! 8210: > SBSC2 SCH WB,(XR)+ STORE CHAR ! 8211: > BCT WA,SBSC1 LOOP ! 8212: > MOV WC,XR RESTORE SCBLK POINTER ! 8213: > * ! 8214: > * RETURN POINT ! 8215: > * ! 8216: > SBSC3 ZER XL CLEAR GARBAGE POINTER IN XL ! 8217: > EXI RETURN TO SBSCC CALLER ! 8218: > * ! 8219: > * HERE FOR NULL SUBSTRING ! 8220: > * ! 8221: > SBSC4 MOV =NULLS,XR SET NULL STRING AS RESULT ! 8222: > BRN SBSC3 RETURN ! 8223: > ENP END PROCEDURE SBSCC ! 8224: > EJC ! 8225: > * ! 8226: > * SBSTG -- BUILD SUBSTRING POSSIBLY CONVERTING CASE ! 8227: > * ! 8228: > * (XL) PTR TO SCBLK CONTAINING CHARS ! 8229: > * (WA) CHAR COUNT ! 8230: > * (WB) OFFSET TO FIRST CHAR IN SCBLK ! 8231: > * JSR SBSTG CALL TO BUILD SUBSTRING ! 8232: > * (XR) PTR TO NEW SCBLK WITH SUBSTRING ! 8233: > * (WA,WB,WC,XL,IA) DESTROYED ! 8234: > * ! 8235: > * IF CASE IS TO BE IGNORED (-CASEIG OR .CSIG), SUBSTRING ! 8236: > * IS CONVERTED TO PREFERRED CASE (DEFAULT UPPER), ! 8237: > * OTHERWISE CASE IS LEFT ALONE. ! 8238: > * ! 8239: > SBSTG PRC E,0 ENTRY POINT ! 8240: > BZE CSWCI,SBSG1 SKIP IF CASE NOT IGNORED ! 8241: > JSR SBSCC CONVERT TO IGNORE CASE ! 8242: > EXI RETURN TO CALLER ! 8243: > * ! 8244: > SBSG1 JSR SBSTR READ SUBSTRING IN MIXED CASE ! 8245: > EXI RETURN TO CALLER ! 8246: > ENP END PROCEDURE SBSTG ! 8247: > .FI ! 8248: > EJC ! 8249: > * ! 8250: 20891c19727 ! 8251: < * (XL) PTR TO SCBLK/BFBLK WITH CHARS ! 8252: --- ! 8253: > * (XL) PTR TO SCBLK CONTAINING CHARS ! 8254: 20896d19731 ! 8255: < * (XL) ZERO ! 8256: 21086,21087c19921 ! 8257: < .IF .CUCF ! 8258: < BLO =CFP$U,XR,SCN07 QUICK CHECK FOR OTHER CHAR ! 8259: --- ! 8260: > BGE XR,=CFP$U,SCN07 QUICK CHECK FOR OTHER CHAR ! 8261: 21089,21091d19922 ! 8262: < .ELSE ! 8263: < BSW XR,CFP$A,SCN07 SWITCH ON SCANNED CHARACTER ! 8264: < .FI ! 8265: 21187,21190c20018,20021 ! 8266: < IFF CH$PL,SCN33 PLUS ! 8267: < IFF CH$MN,SCN34 MINUS ! 8268: < IFF CH$NT,SCN35 NOT ! 8269: < IFF CH$DL,SCN36 DOLLAR ! 8270: --- ! 8271: > IFF CH$PL,SCN34 PLUS ! 8272: > IFF CH$MN,SCN35 MINUS ! 8273: > IFF CH$NT,SCN36 NOT ! 8274: > IFF CH$DL,SCN33 DOLLAR ! 8275: 21206c20037 ! 8276: < ERB 230,SYNTAX ERROR. ILLEGAL CHARACTER ! 8277: --- ! 8278: > ERB 232,SYNTAX ERROR. ILLEGAL CHARACTER ! 8279: 21260c20091 ! 8280: < SCN14 ERB 231,SYNTAX ERROR. INVALID NUMERIC ITEM ! 8281: --- ! 8282: > SCN14 ERB 233,SYNTAX ERROR. INVALID NUMERIC ITEM ! 8283: 21263a20095,20097 ! 8284: > .IF .CASL ! 8285: > SCN15 JSR SBSTG BUILD STRING NAME OF VARIABLE ! 8286: > .ELSE ! 8287: 21264a20099 ! 8288: > .FI ! 8289: 21305c20140 ! 8290: < ERB 232,SYNTAX ERROR. UNMATCHED STRING QUOTE ! 8291: --- ! 8292: > ERB 234,SYNTAX ERROR. UNMATCHED STRING QUOTE ! 8293: 21381,21382c20216,20217 ! 8294: < * THE FIRST THREE ENTRIES ARE SPECIAL SINCE THEY CAN OCCUR ! 8295: < * AS PART OF A VARIABLE NAME (.) OR CONSTANT (.+-). ! 8296: --- ! 8297: > * THE FIRST FOUR ENTRIES ARE SPECIAL SINCE THEY CAN OCCUR ! 8298: > * AS PART OF A VARIABLE NAME (.$) OR CONSTANT (.+-). ! 8299: 21387c20222,20225 ! 8300: < SCN33 BZE WC,SCN09 PLUS CAN BE PART OF CONSTANT ! 8301: --- ! 8302: > SCN33 BZE WB,SCN09 DOLLAR CAN BE PART OF NAME ! 8303: > ADD WB,WC ELSE BUMP POINTER ! 8304: > * ! 8305: > SCN34 BZE WC,SCN09 PLUS CAN BE PART OF CONSTANT ! 8306: 21391c20229 ! 8307: < SCN34 BZE WC,SCN09 MINUS CAN BE PART OF CONSTANT ! 8308: --- ! 8309: > SCN35 BZE WC,SCN09 MINUS CAN BE PART OF CONSTANT ! 8310: 21393a20232,20234 ! 8311: > LCH XR,(XL) GET NEXT CHARACTER ! 8312: > BLT XR,=CH$D0,SCN36 SKIP IF NOT DIGIT ! 8313: > BLE XR,=CH$D9,SCN08 JUMP IF DIGIT ! 8314: 21395,21396c20236 ! 8315: < SCN35 ADD WB,WC NOT ! 8316: < SCN36 ADD WB,WC DOLLAR ! 8317: --- ! 8318: > SCN36 ADD WB,WC NOT ! 8319: 21405a20246 ! 8320: > EJC ! 8321: 21406a20248,20249 ! 8322: > * SCANE (CONTINUED) ! 8323: > * ! 8324: 21439c20282 ! 8325: < SCN48 ERB 233,SYNTAX ERROR. INVALID USE OF OPERATOR ! 8326: --- ! 8327: > SCN48 ERB 235,SYNTAX ERROR. INVALID USE OF OPERATOR ! 8328: 21494c20337 ! 8329: < ERB 234,SYNTAX ERROR. GOTO FIELD INCORRECT ! 8330: --- ! 8331: > ERB 236,SYNTAX ERROR. GOTO FIELD INCORRECT ! 8332: 21500,21501c20343,20344 ! 8333: < MOV =OPDVN,WA POINT TO OPDV FOR COMPLEX GOTO ! 8334: < BLE XR,STATB,SCNG3 JUMP IF NOT IN STATIC (SGD15) ! 8335: --- ! 8336: > MOV =OPDVN,WA ELSE POINT TO OPDV FOR COMPLEX GOTO ! 8337: > BLE XR,STATB,SCNG3 JUMP IF NOT IN STATIC ! 8338: 21503c20346 ! 8339: < BRN SCNG3 COMPLEX GOTO - MERGE ! 8340: --- ! 8341: > BRN SCNG3 AND MERGE ! 8342: 21571c20414 ! 8343: < * THE SORT USED IS HEAPSORT, FUNDAMENTALS OF DATA STRUCTURE ! 8344: --- ! 8345: > * THE SORT USED IS HEAPSORT, FUNDAMENTALS OF DATA STRUCTURES, ! 8346: 21576c20419 ! 8347: < * SORT ARRAY) CONTAINING AT ITS HIGH ADDRESS END, BYTE ! 8348: --- ! 8349: > * SORT ARRAY) CONTAINING AT ITS HIGH ADDRESS END, BAU ! 8350: 21588a20432,20433 ! 8351: > * GIVES ERROR MESSAGES FOR INCORRECT ARGS, RETURNS EXI 1 ! 8352: > * FOR EMPTY TABLE. ! 8353: 21593a20439 ! 8354: > * PPM LOC FAIL RETURN FOR EMPTY TABLE ! 8355: 21600c20446 ! 8356: < SORTA PRC N,0 ENTRY POINT ! 8357: --- ! 8358: > SORTA PRC N,1 ENTRY POINT ! 8359: 21606a20453,20455 ! 8360: > MOV (XR),WA GET ARG TYPE ! 8361: > BEQ WA,=B$ART,SRT00 SKIP IF ARRAY ! 8362: > BNE WA,=B$TBT,SRT16 ERROR IF NOT TABLE ! 8363: 21608,21611c20457,20463 ! 8364: < PPM SRT16 FAIL ! 8365: < MOV XR,-(XS) STACK PTR TO RESULTING KEY ARRAY ! 8366: < MOV XR,-(XS) ANOTHER COPY FOR COPYB ! 8367: < JSR COPYB GET COPY ARRAY FOR SORTING INTO ! 8368: --- ! 8369: > PPM SRT18 FAIL ! 8370: > * ! 8371: > * MAKE COPY OF ARRAY ! 8372: > * ! 8373: > SRT00 MOV XR,-(XS) STACK PTR TO RESULTING KEY ARRAY ! 8374: > MOV XR,-(XS) ANOTHER COPY FOR CBLCK ! 8375: > JSR CBLCK GET COPY ARRAY FOR SORTING INTO ! 8376: 21619c20471 ! 8377: < ERR 257,ERRONEOUS 2ND ARG IN SORT/RSORT OF VECTOR ! 8378: --- ! 8379: > ERR 237,ERRONEOUS 2ND ARG IN SORT/RSORT OF VECTOR ! 8380: 21627c20479 ! 8381: < SUB *VCSI$,WA GET NO. OF ENTRIES, N (IN BYTES) ! 8382: --- ! 8383: > SUB *VCSI$,WA GET NO. OF ENTRIES, N (IN BAUS) ! 8384: 21635c20487 ! 8385: < MOV *ARVLS,WB OFFSET TO FIRST VALUE IF ONE ! 8386: --- ! 8387: > MOV *ARVLS,WB OFFSET TO FIRST VALUE IF ONE DIM. ! 8388: 21637,21639c20489,20491 ! 8389: < BEQ ARNDM(XL),=NUM01,SRT04 JUMP IN FACT IF ONE DIM. ! 8390: < BNE ARNDM(XL),=NUM02,SRT16 FAIL UNLESS TWO DIMENS ! 8391: < LDI ARLB2(XL) GET LOWER BOUND 2 AS DEFAULT ! 8392: --- ! 8393: > BEQ ARNDM(XL),=NUM01,SRT04 JUMP IF IN FACT ONE DIMENSION ! 8394: > BNE ARNDM(XL),=NUM02,SRT16 FAIL UNLESS TWO DIMENSIONAL ! 8395: > LDI ARLB2(XL) GET LOWER BOUND 2 AS DEFAULT COLUMN ! 8396: 21662c20514 ! 8397: < WTB WA CONVERT TO BYTES ! 8398: --- ! 8399: > WTB WA CONVERT TO BAUS ! 8400: 21679c20531 ! 8401: < * WA = NUMBER OF ITEMS, N (CONVERTED TO BYTES). ! 8402: --- ! 8403: > * WA = NUMBER OF ITEMS, N (CONVERTED TO BAUS). ! 8404: 21714c20566 ! 8405: < BTW WC CONVERT FROM BYTES ! 8406: --- ! 8407: > BTW WC CONVERT FROM BAUS ! 8408: 21726c20578 ! 8409: < * (SRTSN) NUMBER OF ITEMS TO SORT, N (BYTES) ! 8410: --- ! 8411: > * (SRTSN) NUMBER OF ITEMS TO SORT, N (BAUS) ! 8412: 21732c20584 ! 8413: < WTB WC CONVERT BACK TO BYTES ! 8414: --- ! 8415: > WTB WC CONVERT BACK TO BAUS ! 8416: 21742c20594 ! 8417: < * ITEM, SINCE ALGORITHM INITIALISES IT AS, AND THEN MAINTAI ! 8418: --- ! 8419: > * ITEM, SINCE ALGORITHM INITIALISES IT AS, AND THEN MAINTAINS ! 8420: 21799,21800c20651,20656 ! 8421: < SRT16 ERB 256,SORT/RSORT 1ST ARG NOT SUITABLE ARRAY OR TABLE ! 8422: < SRT17 ERB 258,SORT/RSORT 2ND ARG OUT OF RANGE OR NON-INTEGER ! 8423: --- ! 8424: > SRT16 ERB 238,SORT/RSORT 1ST ARG NOT SUITABLE ARRAY OR TABLE ! 8425: > SRT17 ERB 239,SORT/RSORT 2ND ARG OUT OF RANGE OR NON-INTEGER ! 8426: > * ! 8427: > * SOFT FAIL RETURN ! 8428: > * ! 8429: > SRT18 EXI 1 RETURN ! 8430: 21964c20820 ! 8431: < WTB WC CONVERT TO BYTES ! 8432: --- ! 8433: > WTB WC CONVERT TO BAUS ! 8434: 21993c20849 ! 8435: < * (WA) MAX ARRAY INDEX, N (IN BYTES) ! 8436: --- ! 8437: > * (WA) MAX ARRAY INDEX, N (IN BAUS) ! 8438: 22045c20901 ! 8439: < WTB WC CONVERT BACK TO BYTES ! 8440: --- ! 8441: > WTB WC CONVERT BACK TO BAUS ! 8442: 22057c20913 ! 8443: < WTB WC CONVERT BACK TO BYTES ! 8444: --- ! 8445: > WTB WC CONVERT BACK TO BAUS ! 8446: 22123a20980,20982 ! 8447: > * POSSIBILITY OF OVERFLOW EXIST ON TWOS COMPLEMENT ! 8448: > * MACHINE IF HASH SOURCE IS MOST NEGATIVE INTEGER OR IS ! 8449: > * A REAL HAVING THE SAME BIT PATTERN. ! 8450: 22149c21008 ! 8451: < WTB WC CONVERT TO BYTE OFFSET ! 8452: --- ! 8453: > WTB WC CONVERT TO BAU OFFSET ! 8454: 22202a21062 ! 8455: > MOV XR,WB COPY DEFAULT VALUE ! 8456: 22211c21071 ! 8457: < MOV =NULLS,TEVAL(XR) SET NULL AS INITIAL VALUE ! 8458: --- ! 8459: > MOV WB,TEVAL(XR) SET DEFAULT AS INITIAL VALUE ! 8460: 22214c21074 ! 8461: < ICA XS POP PAST NAME/VALUE INDICATOR ! 8462: --- ! 8463: > MOV (XS)+,WB RESTORE NAME/VALUE INDICATOR ! 8464: 22235a21096 ! 8465: > * PPM LOC FAIL STOPTR IF NON-EXISTENT TRACE ! 8466: 22239c21100 ! 8467: < TRACE PRC N,2 ENTRY POINT ! 8468: --- ! 8469: > TRACE PRC N,3 ENTRY POINT ! 8470: 22244,22246c21105,21112 ! 8471: < .IF .CULC ! 8472: < FLC WA FOLD TO UPPER CASE ! 8473: < .FI ! 8474: --- ! 8475: > .IF .CASL ! 8476: > BLT WA,=CH$$A,TRC00 SKIP IF NOT LOWER CASE ! 8477: > SUB =DFA$A,WA CONVERT LOWER TO UPPER CASE ! 8478: > * ! 8479: > * HERE WITH UPPER CASE TRACE TYPE CODE ! 8480: > * ! 8481: > TRC00 MOV (XS),XR LOAD NAME ARGUMENT ! 8482: > .ELSE ! 8483: 22247a21114 ! 8484: > .FI ! 8485: 22253,22255d21119 ! 8486: < .IF .CULC ! 8487: < BZE WA,TRC10 JUMP IF BLANK (VALUE) ! 8488: < .ELSE ! 8489: 22257d21120 ! 8490: < .FI ! 8491: 22273a21137 ! 8492: > MOV XL,WB COPY TRBLK PTR OR 0 ! 8493: 22280a21145 ! 8494: > ORB PFCTR(XR),WB STOPTR FAIL CHECK ! 8495: 22282c21147 ! 8496: < BEQ WA,=CH$LC,EXNUL EXIT WITH NULL IF C (CALL) ! 8497: --- ! 8498: > BEQ WA,=CH$LC,TRC11 RETURN IF LETTER C ! 8499: 22286,22287c21151,21153 ! 8500: < TRC02 MOV XL,PFRTR(XR) SET/RESET RETURN TRACE ! 8501: < EXI RETURN ! 8502: --- ! 8503: > TRC02 ORB PFRTR(XR),WB STOPTR FAIL CHECK ! 8504: > MOV XL,PFRTR(XR) SET/RESET RETURN TRACE ! 8505: > BRN TRC11 RETURN ! 8506: 22292a21159 ! 8507: > MOV (XS)+,WB GET TRBLK OR ZERO ! 8508: 22295a21163 ! 8509: > BRN TRCA4 MERGE ! 8510: 22299,22300c21167,21171 ! 8511: < TRC04 BEQ XL,=STNDL,TRC16 ERROR IF UNDEFINED LABEL ! 8512: < MOV (XS)+,WB GET TRBLK PTR AGAIN ! 8513: --- ! 8514: > TRC04 BZE WB,TRC12 FAIL IF STOPTR OF UNTRACED LABEL ! 8515: > * ! 8516: > * TEST FOR UNDEFINED LABEL ! 8517: > * ! 8518: > TRCA4 BEQ XL,=STNDL,TRC17 ERROR IF UNDEFINED LABEL ! 8519: 22326c21197 ! 8520: < * MERGE HERE WITH TRBLK SET UP IN WB (OR ZERO) ! 8521: --- ! 8522: > * MERGE HERE WITH TRBLK SET UP IN XL (OR ZERO) ! 8523: 22328a21200 ! 8524: > MOV XL,WB COPY TRBLK PR OR 0 ! 8525: 22334a21207 ! 8526: > ORB R$FNC,WB STOPTR FAIL CHECK ! 8527: 22336c21209 ! 8528: < EXI RETURN ! 8529: --- ! 8530: > BRN TRC11 RETURN ! 8531: 22340,22341c21213,21215 ! 8532: < TRC08 MOV XL,R$ERT SET/RESET ERRTYPE TRACE ! 8533: < EXI RETURN ! 8534: --- ! 8535: > TRC08 ORB R$ERT,WB STOPTR FAIL CHECK ! 8536: > MOV XL,R$ERT SET/RESET ERRTYPE TRACE ! 8537: > BRN TRC11 RETURN ! 8538: 22345,22346c21219,21221 ! 8539: < TRC09 MOV XL,R$STC SET/RESET STCOUNT TRACE ! 8540: < EXI RETURN ! 8541: --- ! 8542: > TRC09 ORB R$STC,WB STOPTR FAIL CHECK ! 8543: > MOV XL,R$STC SET/RESET STCOUNT TRACE ! 8544: > BRN TRC11 RETURN ! 8545: 22355,22357c21230,21234 ! 8546: < MOV (XS)+,WB GET NEW TRBLK PTR AGAIN ! 8547: < ADD XL,WA POINT TO VARIABLE LOCATION ! 8548: < MOV WA,XR COPY VARIABLE POINTER ! 8549: --- ! 8550: > MOV (XS)+,XR GET NEW TRBLK PTR AGAIN ! 8551: > MOV WC,WB COPY TRACE TYPE ! 8552: > JSR TRCHN UPDATE TRACE CHAIN ! 8553: > PPM TRC12 FAIL ! 8554: > EXI RETURN ! 8555: 22359c21236 ! 8556: < * LOOP TO SEARCH TRBLK CHAIN ! 8557: --- ! 8558: > * RETURN AFTER CHECKING STOPTR FAIL CONDITION (WB = 0) ! 8559: 22361,22367c21238,21239 ! 8560: < TRC11 MOV (XR),XL POINT TO NEXT ENTRY ! 8561: < BNE (XL),=B$TRT,TRC13 JUMP IF NOT TRBLK ! 8562: < BLT WC,TRTYP(XL),TRC13 JUMP IF TOO FAR OUT ON CHAIN ! 8563: < BEQ WC,TRTYP(XL),TRC12 JUMP IF THIS MATCHES OUR TYPE ! 8564: < ADD *TRNXT,XL ELSE POINT TO LINK FIELD ! 8565: < MOV XL,XR COPY POINTER ! 8566: < BRN TRC11 AND LOOP BACK ! 8567: --- ! 8568: > TRC11 ZRB WB,TRC12 FAIL IF NECESSARY ! 8569: > EXI ELSE RETURN ! 8570: 22369c21241 ! 8571: < * HERE TO DELETE AN OLD TRBLK OF THE TYPE WE WERE GIVEN ! 8572: --- ! 8573: > * FAIL STOPTR ! 8574: 22371,22372c21243 ! 8575: < TRC12 MOV TRNXT(XL),XL GET PTR TO NEXT BLOCK OR VALUE ! 8576: < MOV XL,(XR) STORE TO DELETE THIS TRBLK ! 8577: --- ! 8578: > TRC12 EXI 3 FAIL RETURN ! 8579: 22374,22388d21244 ! 8580: < * HERE AFTER DELETING ANY OLD ASSOCIATION OF THIS TYPE ! 8581: < * ! 8582: < TRC13 BZE WB,TRC14 JUMP IF STOPTR CASE ! 8583: < MOV WB,(XR) ELSE LINK NEW TRBLK IN ! 8584: < MOV WB,XR COPY TRBLK POINTER ! 8585: < MOV XL,TRNXT(XR) STORE FORWARD POINTER ! 8586: < MOV WC,TRTYP(XR) STORE APPROPRIATE TRAP TYPE CODE ! 8587: < * ! 8588: < * HERE TO MAKE SURE VRGET,VRSTO ARE SET PROPERLY ! 8589: < * ! 8590: < TRC14 MOV WA,XR RECALL POSSIBLE VRBLK POINTER ! 8591: < SUB *VRVAL,XR POINT BACK TO VRBLK ! 8592: < JSR SETVR SET FIELDS IF VRBLK ! 8593: < EXI RETURN ! 8594: < * ! 8595: 22409c21265 ! 8596: < * (XL) TRFNC OR TRFPT ! 8597: --- ! 8598: > * (XL) TRFNC OR TRTRI ! 8599: 22420,22421c21276,21277 ! 8600: < MOV XL,TRFNC(XR) STORE TRFNC (OR TRFPT) ! 8601: < MOV (XS)+,TRTAG(XR) STORE TRTAG (OR TRFNM) ! 8602: --- ! 8603: > MOV XL,TRFNC(XR) STORE TRFNC (OR TRTRI) ! 8604: > MOV (XS)+,TRTAG(XR) STORE TRTAG (OR TRTER) ! 8605: 22427a21284,21340 ! 8606: > * TRCHN -- UPDATE TRACE BLOCK CHAIN ! 8607: > * ! 8608: > * CALLED WHEN A TRACE BLOCK CHAIN IS TO BE UPDATED BY ! 8609: > * ADDITION OR REMOVAL OF A TRBLK. ! 8610: > * IF A TRBLK OF THE SAME TYPE AS AN ADDITION IS ALREADY ! 8611: > * PRESENT IT IS DELETED. THE TRTAG FIELD OF ANY DELETED ! 8612: > * TRBLK IS CLEARED AS REQUIRED BY S$ENF. ! 8613: > * ! 8614: > * (XL,WA) POINTER, OFFSET TO TRACED VARIABLE ! 8615: > * (XR) PTR TO NEW TRBLK OR 0 FOR REMOVAL ! 8616: > * (WB) TRACE TYPE (TRTYP) ! 8617: > * JSR TRCHN CALL TO UPDATE TRACE CHAIN ! 8618: > * PPM LOC NO TRACE BLK OF REQD DELETION TYPE ! 8619: > * (WA,WC) DESTROYED ! 8620: > * ! 8621: > TRCHN PRC E,1 ENTRY POINT ! 8622: > ADD XL,WA KEEP POINTER TO TRACED LOCATION ! 8623: > MOV WA,XL COPY POINTER ! 8624: > SUB *TRNXT,XL ADJUST OFFSET BEFORE ENTERING LOOP ! 8625: > MOV XR,WC COPY TRBLK PTR ! 8626: > * ! 8627: > * LOOP TO FIND TRACE BLOCK ! 8628: > * ! 8629: > TRCH1 MOV XL,XR COPY SO XR POINTS TO PREDECESSOR ! 8630: > MOV TRNXT(XL),XL POINT TO POSSIBLE TRACE BLOCK ! 8631: > BNE (XL),=B$TRT,TRCH2 SKIP OUT AT CHAIN END ! 8632: > BLT WB,TRTYP(XL),TRCH2 SKIP IF TOO FAR OUT ON CHAIN ! 8633: > BNE WB,TRTYP(XL),TRCH1 LOOP UNLESS TYPE MATCHES ! 8634: > MOV TRNXT(XL),TRNXT(XR) REMOVE LINK TO OLD TRBLK ! 8635: > ZER TRTAG(XL) CLEAR IOTAG FIELD OF DELETED BLOCK ! 8636: > BZE WC,TRCH3 DONE IF NO NEW TRBLK ! 8637: > * ! 8638: > * OLD TRBLK REMOVED AND/OR END OF CHAIN REACHED ! 8639: > * ! 8640: > TRCH2 BZE WC,TRCH4 FAIL IF REQD BLOCK TYPE NOT FOUND ! 8641: > MOV WC,XL POINT TO NEW TRBLK ! 8642: > MOV TRNXT(XR),TRNXT(XL) ATTACH TAIL OF CHAIN TO IT ! 8643: > MOV WC,TRNXT(XR) LINK NEW BLOCK IN ! 8644: > MOV WB,TRTYP(XL) ENSURE TRTYP FIELD SET UP ! 8645: > * ! 8646: > * UPDATE ACCESS FIELDS OF NAME IF IT IS A VRBLK ! 8647: > * ! 8648: > TRCH3 MOV WA,XR POINT TO VBL ! 8649: > SUB *VRVAL,XR ADJUST TO POSSIBLE VRBLK NAME BASE ! 8650: > JSR SETVR UPDATE ACCESS FIELDS ! 8651: > MOV WA,XL RECOVER XL ! 8652: > MOV WC,XR RECOVER XR ! 8653: > EXI RETURN TO CALLER ! 8654: > * ! 8655: > * FAIL RETURN ! 8656: > * ! 8657: > TRCH4 MOV WA,XL RECOVER XL ! 8658: > MOV WC,XR RECOVER XR ! 8659: > EXI 1 FAIL ! 8660: > ENP END PROCEDURE TRCHN ! 8661: > EJC ! 8662: > * ! 8663: 22475,22476c21388,21389 ! 8664: < PSC XL,WA READY FOR STORING BLANKS ! 8665: < CTB WA,SCHAR GET LENGTH OF BLOCK IN BYTES ! 8666: --- ! 8667: > PSC XL,WA READY FOR STORING ZEROES ! 8668: > CTB WA,SCHAR GET LENGTH OF BLOCK IN BAUS ! 8669: 22480c21393 ! 8670: < ZER WC SET BLANK CHAR ! 8671: --- ! 8672: > ZER WC SET ZERO CHAR ! 8673: 22562c21475 ! 8674: < TRXQ1 MOV FLPTR,XS POINT BACK TO OUR STACK ENTRIES ! 8675: --- ! 8676: > TRXQR MOV FLPTR,XS POINT BACK TO OUR STACK ENTRIES ! 8677: 22595a21509 ! 8678: > * (XSCNB) ERROR INDICATOR - SEE 4) BELOW ! 8679: 22596a21511,21513 ! 8680: > * LEADING BLANKS AND TRAILING BLANKS POSITIONED BEFORE A ! 8681: > * DELIMITER OR AT THE END OF THE ARGUMENT STRING ARE ! 8682: > * IGNORED. OTHER BLANKS ARE ILLEGAL. ! 8683: 22598c21515 ! 8684: < * UNTIL ONE OF THE FOLLOWING THREE CONDITIONS OCCURS. ! 8685: --- ! 8686: > * UNTIL ONE OF THE FOLLOWING CONDITIONS OCCURS. ! 8687: 22604c21521 ! 8688: < * 3) END OF STRING ENCOUNTERED (WA SET TO 0) ! 8689: --- ! 8690: > * 3) END OF STRING ENCOUNTERED (WA AND XSCNB SET TO 0) ! 8691: 22605a21523,21524 ! 8692: > * 4) ILLEGAL BLANK (WA 0, XSCNB NON-ZERO) ! 8693: > * ! 8694: 22622a21542,21543 ! 8695: > ZER XSCBL CLEAR COUNT OF TRAILING BLANKS ! 8696: > ZER XSCNB CLEAR NON-BLANK SEEN FLAG ! 8697: 22632c21553 ! 8698: < XSCN1 LCH WB,(XR)+ LOAD NEXT CHARACTER ! 8699: --- ! 8700: > XSCN0 LCH WB,(XR)+ LOAD NEXT CHARACTER ! 8701: 22635,22636c21556,21561 ! 8702: < DCV WA DECREMENT COUNT OF CHARS LEFT ! 8703: < BNZ WA,XSCN1 LOOP BACK IF MORE CHARS TO GO ! 8704: --- ! 8705: > BEQ WB,=CH$BL,XSCN7 SKIP IF IT IS A BLANK ! 8706: > .IF .CAHT ! 8707: > BEQ WB,=CH$HT,XSCN7 SKIP IF IT IS A TAB ! 8708: > .FI ! 8709: > BNZ XSCBL,XSCN2 FAIL CHAR AFTER TRAILING BLANK ! 8710: > MNZ XSCNB NOTE A NON-BLANK SEEN ! 8711: 22637a21563,21568 ! 8712: > * COUNT CHARS DONE ! 8713: > * ! 8714: > XSCN1 DCV WA DECREMENT COUNT OF CHARS LEFT ! 8715: > BNZ WA,XSCN0 LOOP BACK IF MORE CHARS TO GO ! 8716: > ZER XSCNB CLEAR ERRONEOUS BLANKS FLAG ! 8717: > * ! 8718: 22643a21575 ! 8719: > SUB XSCBL,WA ADJUST FOR TRAILING BLANKS ! 8720: 22665a21598 ! 8721: > SUB XSCBL,WA ADJUST FOR TRAILING BLANKS ! 8722: 22673a21607,21609 ! 8723: > .IF .CASL ! 8724: > JSR SBSTG BUILD SUBSTRING ! 8725: > .ELSE ! 8726: 22674a21611 ! 8727: > .FI ! 8728: 22677a21615,21625 ! 8729: > * ! 8730: > * DEAL WITH BLANK ! 8731: > * ! 8732: > XSCN7 BZE XSCNB,XSCN8 SKIP IF LEADING BLANK ! 8733: > ICV XSCBL ELSE COUNT TRAILING BLANK ! 8734: > BRN XSCN1 LOOP ! 8735: > * ! 8736: > * LEADING BLANK ! 8737: > * ! 8738: > XSCN8 ICV XSOFS PUSH OFFSET PAST BLANK ! 8739: > BRN XSCN1 LOOP ! 8740: 22753c21701 ! 8741: < WTB XR CONVERT TO BYTE OFFSET ! 8742: --- ! 8743: > WTB XR CONVERT TO BAU OFFSET ! 8744: 22765c21713 ! 8745: < ERB 235,SUBSCRIPTED OPERAND IS NOT TABLE OR ARRAY ! 8746: --- ! 8747: > ERB 240,SUBSCRIPTED OPERAND IS NOT TABLE OR ARRAY ! 8748: 22841c21789 ! 8749: < WTB WA CONVERT OFFSET TO BYTES ! 8750: --- ! 8751: > WTB WA CONVERT OFFSET TO BAUS ! 8752: 22853c21801 ! 8753: < ARF09 ERB 236,ARRAY REFERENCED WITH WRONG NUMBER OF SUBSCRIPTS ! 8754: --- ! 8755: > ARF09 ERB 241,ARRAY REFERENCED WITH WRONG NUMBER OF SUBSCRIPTS ! 8756: 22866c21814 ! 8757: < ARF11 ERB 237,TABLE REFERENCED WITH MORE THAN ONE SUBSCRIPT ! 8758: --- ! 8759: > ARF11 ERB 242,TABLE REFERENCED WITH MORE THAN ONE SUBSCRIPT ! 8760: 22870c21818 ! 8761: < ARF12 ERB 238,ARRAY SUBSCRIPT IS NOT INTEGER ! 8762: --- ! 8763: > ARF12 ERB 243,ARRAY SUBSCRIPT IS NOT INTEGER ! 8764: 22901c21849 ! 8765: < WTB WB CONVERT TO BYTES ! 8766: --- ! 8767: > WTB WB CONVERT TO BAUS ! 8768: 22921a21870,21888 ! 8769: > * EROSI -- PROCESS ERROR RETURN FROM OSINT ! 8770: > * ! 8771: > * (WA) 0 OR ERROR CODE IN 256 TO 998 ! 8772: > * (XL) 0 OR PSEUDO SCBLK FOR ERROR MESSAGE ! 8773: > * (IA) NEW VALUE FOR CODE KEYWORD ! 8774: > * BRN EROSI JUMP TO PROCESS ERROR ! 8775: > * ! 8776: > EROSI RTN ! 8777: > STI KVCOD STORE NEW CODE KEYWORD VALUE ! 8778: > MOV WA,KVERT STORE ERROR CODE ! 8779: > BZE XL,ERROR FAIL AT ONCE IF NO ERROR MSG TEXT ! 8780: > MOV SCLEN(XL),WA STRING LENGTH ! 8781: > ZER WB ZERO OFFSET ! 8782: > JSR SBSTR COPY ERROR MESSAGE STRING ! 8783: > MOV XR,R$ETX AND STORE IT ! 8784: > MNZ EROSN NOTE NO CALL OF SYSEM ! 8785: > MOV KVERT,WA RECALL ERROR CODE ! 8786: > BRN ERROR ENTER ERROR SECTION ! 8787: > * ! 8788: 22935d21901 ! 8789: < EJC ! 8790: 22972d21937 ! 8791: < EJC ! 8792: 22999d21963 ! 8793: < EJC ! 8794: 23015d21978 ! 8795: < EJC ! 8796: 23058d22020 ! 8797: < EJC ! 8798: 23070d22031 ! 8799: < EJC ! 8800: 23100c22061 ! 8801: < ERR 239,INDIRECTION OPERAND IS NOT NAME ! 8802: --- ! 8803: > ERR 244,INDIRECTION OPERAND IS NOT NAME ! 8804: 23131c22092 ! 8805: < ERR 240,PATTERN MATCH RIGHT OPERAND IS NOT PATTERN ! 8806: --- ! 8807: > ERR 245,PATTERN MATCH RIGHT OPERAND IS NOT PATTERN ! 8808: 23161c22122,22125 ! 8809: < ERR 241,PATTERN MATCH LEFT OPERAND IS NOT STRING ! 8810: --- ! 8811: > ERR 246,PATTERN MATCH LEFT OPERAND IS NOT STRING ! 8812: > .IF .CNBF ! 8813: > MOV XR,R$PMS IF OK, STORE SUBJECT STRING POINTER ! 8814: > .ELSE ! 8815: 23163c22127 ! 8816: < * MERGE WITH BUFFER OR STRING ! 8817: --- ! 8818: > * MERGE WITH NULL STRING OR BUFFER ! 8819: 23165a22130 ! 8820: > .FI ! 8821: 23173a22139 ! 8822: > EJC ! 8823: 23174a22141,22142 ! 8824: > * MATCH (CONTINUED) ! 8825: > * ! 8826: 23201c22169 ! 8827: < ERB 242,FUNCTION RETURN FROM LEVEL ZERO ! 8828: --- ! 8829: > ERB 247,FUNCTION RETURN FROM LEVEL ZERO ! 8830: 23227c22195 ! 8831: < MOV PFVBL(XR),XL LOAD VRBLK PTR (SGD13) ! 8832: --- ! 8833: > MOV PFVBL(XR),XL LOAD VRBLK POINTER ! 8834: 23260c22228 ! 8835: < JSR PRTNL TERMINATE PRINT LINE ! 8836: --- ! 8837: > JSR PRTFH TERMINATE PRINT LINE ! 8838: 23295c22263 ! 8839: < * HERE IF &PROFILE = 1. START TIME MUST BE FRIGGED TO ! 8840: --- ! 8841: > * HERE IF PROFILE = 1. START TIME MUST BE FRIGGED TO ! 8842: 23303c22271 ! 8843: < * HERE IF &PROFILE = 2 ! 8844: --- ! 8845: > * HERE IF PROFILE = 2 ! 8846: 23331a22300 ! 8847: > EJC ! 8848: 23332a22302,22303 ! 8849: > * RETRN (CONTINUED) ! 8850: > * ! 8851: 23344d22314 ! 8852: < EJC ! 8853: 23346,23347d22315 ! 8854: < * RETRN (CONTINUED) ! 8855: < * ! 8856: 23352c22320 ! 8857: < ERR 243,FUNCTION RESULT IN NRETURN IS NOT NAME ! 8858: --- ! 8859: > ERR 248,FUNCTION RESULT IN NRETURN IS NOT NAME ! 8860: 23393c22361 ! 8861: < ERB 244,STATEMENT COUNT EXCEEDS VALUE OF STLIMIT KEYWORD ! 8862: --- ! 8863: > ERB 249,STATEMENT COUNT EXCEEDS VALUE OF STLIMIT KEYWORD ! 8864: 23409a22378,22380 ! 8865: > * ! 8866: > * MERGE PROFILE, NO-PROFILE CASES ! 8867: > * ! 8868: 23432c22403,22404 ! 8869: < * (XR) POINTS TO ENDING MESSAGE ! 8870: --- ! 8871: > * (WA) 0 OR ERROR MESSAGE CODE ! 8872: > * (XR) 0 OR ENDING MESSAGE POINTER ! 8873: 23436c22408,22410 ! 8874: < * TO ENDING MESSAGE OR IS ZERO IF MESSAGE PRINTED ALREADY. ! 8875: --- ! 8876: > * TO ENDING MESSAGE OR IS ZERO IF MESSAGE PRINTED ALREADY. ! 8877: > * (WA) AND (XR) ARE BOTH NON-ZERO ONLY IN THE CASE OF FATAL ! 8878: > * ERRORS DURING INITIAL COMPILE. ! 8879: 23440d22413 ! 8880: < BZE XR,STPRA SKIP IF SYSAX ALREADY CALLED (REG04) ! 8881: 23442d22414 ! 8882: < STPRA ADD RSMEM,DNAME USE THE RESERVE MEMORY ! 8883: 23444d22415 ! 8884: < ADD RSMEM,DNAME USE THE RESERVE MEMORY ! 8885: 23446,23448c22417,22424 ! 8886: < BNE XR,=ENDMS,STPR0 SKIP IF NOT NORMAL END MESSAGE ! 8887: < BNZ EXSTS,STPR3 SKIP IF EXEC STATS SUPPRESSED ! 8888: < ZER ERICH CLEAR ERRORS TO INT.CH. FLAG ! 8889: --- ! 8890: > ADD RSMEM,DNAME USE THE RESERVE MEMORY ! 8891: > BZE WA,STPR1 SKIP IF NO ERROR MESSAGE ! 8892: > MOV XR,STPXR KEEP 0 OR ENDING MESSAGE ! 8893: > MOV TTERL,TTLST SEND ERROR AND STATS TO TERML ! 8894: > JSR PRTPG PAGE THROW ! 8895: > JSR ERMSG PRINT ERROR MESSAGE ! 8896: > MOV STPXR,XR RECOVER 0 OR ENDING MESSAGE ! 8897: > ZER EXSTS TO FORCE ENDING STATS OUT FOR ERROR ! 8898: 23450c22426 ! 8899: < * LOOK TO SEE IF AN ENDING MESSAGE IS SUPPLIED ! 8900: --- ! 8901: > * PROCESS ENDING STATISTICS ! 8902: 23452,23454c22428,22433 ! 8903: < STPR0 JSR PRTPG EJECT PRINTER ! 8904: < BZE XR,STPR1 SKIP IF NO MESSAGE ! 8905: < JSR PRTST PRINT MESSAGE ! 8906: --- ! 8907: > STPR1 MTI KVSTN GET STATEMENT NUMBER ! 8908: > IEQ STPR6 SKIP IF COMPILE TIME ! 8909: > BNZ EXSTS,STPR4 SKIP IF NO STATS TO BE PRINTED ! 8910: > JSR PRTPG EJECT PRINTER ! 8911: > BZE XR,STPR2 SKIP IF NO MESSAGE ! 8912: > JSR PRTFB PRINT MESSAGE ! 8913: 23458,23459c22437 ! 8914: < STPR1 JSR PRTIS PRINT BLANK LINE ! 8915: < MTI KVSTN GET STATEMENT NUMBER ! 8916: --- ! 8917: > STPR2 JSR PRTFH PRINT BLANK LINE ! 8918: 23461c22439 ! 8919: < JSR PRTMX PRINT IT ! 8920: --- ! 8921: > JSR PRTMI PRINT IT ! 8922: 23466c22444 ! 8923: < JSR PRTMX PRINT IT ! 8924: --- ! 8925: > JSR PRTMI PRINT IT ! 8926: 23468c22446 ! 8927: < ILT STPR2 SKIP IF NEGATIVE ! 8928: --- ! 8929: > ILT STPR3 SKIP IF NEGATIVE ! 8930: 23472c22450,22452 ! 8931: < JSR PRTMX PRINT IT ! 8932: --- ! 8933: > JSR PRTMI PRINT IT ! 8934: > .IF .CTMD ! 8935: > .ELSE ! 8936: 23475c22455 ! 8937: < IOV STPR2 JUMP IF WE CANNOT COMPUTE ! 8938: --- ! 8939: > IOV STPR3 JUMP IF WE CANNOT COMPUTE ! 8940: 23477c22457 ! 8941: < IOV STPR2 JUMP IF OVERFLOW ! 8942: --- ! 8943: > IOV STPR3 JUMP IF OVERFLOW ! 8944: 23479c22459,22460 ! 8945: < JSR PRTMX PRINT IT ! 8946: --- ! 8947: > JSR PRTMI PRINT IT ! 8948: > .FI ! 8949: 23486c22467 ! 8950: < STPR2 MTI GBCNT LOAD COUNT OF COLLECTIONS ! 8951: --- ! 8952: > STPR3 MTI GBCNT LOAD COUNT OF COLLECTIONS ! 8953: 23488,23489c22469,22470 ! 8954: < JSR PRTMX PRINT IT ! 8955: < JSR PRTIS ONE MORE BLANK FOR LUCK ! 8956: --- ! 8957: > JSR PRTMI PRINT IT ! 8958: > JSR PRTFH ONE MORE BLANK FOR LUCK ! 8959: 23494c22475 ! 8960: < STPR3 MOV KVDMP,XR LOAD DUMP KEYWORD ! 8961: --- ! 8962: > STPR4 MOV KVDMP,XR LOAD DUMP KEYWORD ! 8963: 23496,23497c22477 ! 8964: < STPR3 JSR PRFLR PRINT PROFILE IF WANTED ! 8965: < * ! 8966: --- ! 8967: > STPR4 JSR PRFLR PRINT PROFILE IF WANTED ! 8968: 23501,23503c22481,22484 ! 8969: < MOV R$FCB,XL GET FCBLK CHAIN HEAD ! 8970: < MOV KVABE,WA LOAD ABEND VALUE ! 8971: < MOV KVCOD,WB LOAD CODE VALUE ! 8972: --- ! 8973: > * ! 8974: > * MERGE TO END RUN FOR SEVERE COMPILATION ERRORS ! 8975: > * ! 8976: > STPR5 MOV =KVCOD,WA LOAD CODE VALUE ! 8977: 23504a22486,22496 ! 8978: > * ! 8979: > * TERMINATION DURING COMPILE ! 8980: > * ! 8981: > STPR6 BZE XR,STPR7 SKIP IF NO MESSAGE ! 8982: > JSR PRTSF ELSE PRINT IT ! 8983: > * ! 8984: > * NOTIFICATION THAT IT IS COMPILE TIME ! 8985: > * ! 8986: > STPR7 MOV =ENDIC,XR NOTIFY USER ! 8987: > JSR PRTSF SEND IT ! 8988: > BRN STPR5 END ! 8989: 23522,23542d22513 ! 8990: < EJC ! 8991: < * ! 8992: < * SYSAB -- PRINT /ABNORMAL END/ AND TERMINATE ! 8993: < * ! 8994: < SYSAB RTN ! 8995: < MOV =ENDAB,XR POINT TO MESSAGE ! 8996: < MOV =NUM01,KVABE SET ABEND FLAG ! 8997: < JSR PRTNL SKIP TO NEW LINE ! 8998: < BRN STOPR JUMP TO PACK UP ! 8999: < EJC ! 9000: < * ! 9001: < * SYSTU -- PRINT /TIME UP/ AND TERMINATE ! 9002: < * ! 9003: < SYSTU RTN ! 9004: < MOV =ENDTU,XR POINT TO MESSAGE ! 9005: < MOV STRTU,WA GET CHARS /TU/ ! 9006: < MOV WA,KVCOD PUT IN KVCOD ! 9007: < MOV TIMUP,WA CHECK STATE OF TIMEUP SWITCH ! 9008: < MNZ TIMUP SET SWITCH ! 9009: < BNZ WA,STOPR STOP RUN IF ALREADY SET ! 9010: < ERB 245,TRANSLATION/EXECUTION TIME EXPIRED ! 9011: 23548a22520 ! 9012: > STAKV RTN ENTRY POINT FOR STACK OVERFLOW ! 9013: 23552c22524 ! 9014: < ERB 246,STACK OVERFLOW ! 9015: --- ! 9016: > ERB 250,STACK OVERFLOW ! 9017: 23557a22530,22531 ! 9018: > ZER WA NO ERROR MESSAGE ! 9019: > MOV TTERL,TTLST SEND MESSAGE TO TERML IF POSSIBLE ! 9020: 23591c22565,22567 ! 9021: < ERROR BEQ R$CIM,=CMLAB,CMPLE JUMP IF ERROR IN SCANNING LABEL ! 9022: --- ! 9023: > ERROR RTN ERROR CODE ENTRY POINT ! 9024: > BGE ERRFT,=NUM03,ERR16 SKIP IF TOO MANY FATALS ! 9025: > BEQ R$CIM,=CMLAB,ERRG1 JUMP IF ERROR IN LABEL SCAN ! 9026: 23598,23601c22574,22577 ! 9027: < IFF STGXC,ERR04 EXECUTE TIME COMPILE ! 9028: < IFF STGEV,ERR04 EVAL COMPILING EXPR. ! 9029: < IFF STGEE,ERR04 EVAL EVALUATING EXPR ! 9030: < IFF STGXT,ERR05 EXECUTE TIME ! 9031: --- ! 9032: > IFF STGXC,ERR08 EXECUTE TIME COMPILE ! 9033: > IFF STGEV,ERR08 EVAL COMPILING EXPR. ! 9034: > IFF STGEE,ERR08 EVAL EVALUATING EXPR ! 9035: > IFF STGXT,ERR12 EXECUTE TIME ! 9036: 23603c22579 ! 9037: < IFF STGXE,ERR04 XEQ COMPILE-PAST END ! 9038: --- ! 9039: > IFF STGXE,ERR08 XEQ COMPILE-PAST END ! 9040: 23605d22580 ! 9041: < EJC ! 9042: 23608d22582 ! 9043: < * ! 9044: 23613d22586 ! 9045: < * ! 9046: 23617d22589 ! 9047: < * ! 9048: 23619a22592 ! 9049: > EJC ! 9050: 23623,23624c22596,22600 ! 9051: < BNZ ERRSP,ERR03 JUMP IF ERROR SUPPRESS FLAG SET ! 9052: < MOV ERICH,ERLST SET FLAG FOR LISTR ! 9053: --- ! 9054: > BNZ ERRSP,ERR06 JUMP IF ERROR SUPPRESS FLAG SET ! 9055: > JSR PRTFH PRINT A BLANK ! 9056: > MOV TTERL,TTLST SET FLAG FOR LISTR ! 9057: > ADD =NUM03,LSTLC CAUSE EJECT IF BELOW 4 LINES LEFT ! 9058: > MOV LSTLC,-(XS) KEEP LINE COUNT ! 9059: 23626,23629c22602,22609 ! 9060: < JSR PRTIS TERMINATE LISTING ! 9061: < ZER ERLST CLEAR LISTR FLAG ! 9062: < MOV SCNSE,WA LOAD SCAN ELEMENT OFFSET ! 9063: < BZE WA,ERR02 SKIP IF NOT SET ! 9064: --- ! 9065: > JSR PRTFH TERMINATE LISTING ! 9066: > MOV (XS)+,WA RECOVER LINE COUNT ! 9067: > BGT LSTLC,WA,ERR02 SKIP IF NOT NEW PAGE ! 9068: > ADD =NUM04,LSTLC BUMP FOR LINES PRINTED ! 9069: > * ! 9070: > * PRINT FLAG UNDER BAD ELEMENT ! 9071: > * ! 9072: > ERR02 MOV SCNSE,WA LOAD SCAN ELEMENT OFFSET ! 9073: 23631c22611 ! 9074: < LCT WB,WA LOOP COUNTER ! 9075: --- ! 9076: > MOV WA,WB COPY OFFSET ! 9077: 23635a22616 ! 9078: > BZE WB,ERR05 SKIP IF NO BLANKS BEFORE ERROR FLAG ! 9079: 23637a22619 ! 9080: > LCT WB,WB LOOP COUNTER ! 9081: 23641,23642c22623,22624 ! 9082: < ERRA1 LCH WC,(XL)+ GET NEXT CHAR ! 9083: < BEQ WC,=CH$HT,ERRA2 SKIP IF TAB ! 9084: --- ! 9085: > ERR03 LCH WC,(XL)+ GET NEXT CHAR ! 9086: > BEQ WC,=CH$HT,ERR04 SKIP IF TAB ! 9087: 23648,23650c22630,22636 ! 9088: < ERRA2 SCH WC,(XR)+ STORE CHAR ! 9089: < BCT WB,ERRA1 LOOP ! 9090: < MOV =CH$EX,XL EXCLAMATION MARK ! 9091: --- ! 9092: > ERR04 SCH WC,(XR)+ STORE CHAR ! 9093: > BCT WB,ERR03 LOOP ! 9094: > EJC ! 9095: > * ! 9096: > * MERGE IN CASE OF NO PRECEDING BLANKS ! 9097: > * ! 9098: > ERR05 MOV =CH$EX,XL EXCLAMATION MARK ! 9099: 23658c22644 ! 9100: < MFI GTNSI STORE AS SIGNED INTEGER ! 9101: --- ! 9102: > STI GTNSI STORE AS SIGNED INTEGER ! 9103: 23662c22648 ! 9104: < STI PROFS USE AS CHARACTER OFFSET ! 9105: --- ! 9106: > MFI PROFS USE AS CHARACTER OFFSET ! 9107: 23669,23670c22655,22656 ! 9108: < ERR02 JSR ERMSG GENERATE FLAG AND ERROR MESSAGE ! 9109: < ADD =NUM03,LSTLC BUMP PAGE CTR FOR BLANK, ERROR, BLK ! 9110: --- ! 9111: > JSR ERMSG GENERATE FLAG AND ERROR MESSAGE ! 9112: > ZER TTLST REVERT TO REGULAR LISTING ! 9113: 23672c22658,22659 ! 9114: < BHI ERRFT,=NUM03,STOPR PACK UP IF SEVERAL FATALS ! 9115: --- ! 9116: > ICV CMERC BUMP ERROR COUNT ! 9117: > BNE STAGE,=STGIC,ERRG2 SPECIAL RETURN IF AFTER END LINE ! 9118: 23674c22661,22662 ! 9119: < * COUNT ERROR, INHIBIT EXECUTION IF REQUIRED ! 9120: --- ! 9121: > * IF ERROR IN READR THEN EITHER CLOSE OUT ! 9122: > * CURRENT -COPY LEVEL, OR IF AT TOP THEN ABORT ! 9123: 23676,23679c22664,22667 ! 9124: < ICV CMERC BUMP ERROR COUNT ! 9125: < ADD CSWER,NOXEQ INHIBIT XEQ IF -NOERRORS ! 9126: < BNE STAGE,=STGIC,CMP10 SPECIAL RETURN IF AFTER END LINE ! 9127: < EJC ! 9128: --- ! 9129: > BZE RDRER,ERR06 SKIP IF NOT ERROR WHILE READING ! 9130: > BZE R$COP,ERR16 ABORT IF AT TOP LEVEL INPUT FILE ! 9131: > ZER RDRER ELSE CLEAR READR ERROR FLAG ! 9132: > JSR COPND AND CLOSE OUT THIS COPY LEVEL ! 9133: 23683c22671,22672 ! 9134: < ERR03 MOV R$CIM,XR POINT TO START OF IMAGE ! 9135: --- ! 9136: > ERR06 MOV R$CIM,XR POINT TO START OF IMAGE ! 9137: > BZE XR,ERR07 SKIP IF NO INPUT IMAGE ! 9138: 23686c22675 ! 9139: < BEQ XR,=CH$MN,CMPCE JUMP IF ERROR IN CONTROL CARD ! 9140: --- ! 9141: > BEQ XR,=CH$MN,ERRG3 JUMP IF ERROR IN CONTROL CARD ! 9142: 23690c22679 ! 9143: < BNE XL,=T$SMC,ERR03 LOOP BACK IF NOT STATEMENT END ! 9144: --- ! 9145: > BNE XL,=T$SMC,ERR06 LOOP BACK IF NOT STATEMENT END ! 9146: 23691a22681 ! 9147: > EJC ! 9148: 23695c22685 ! 9149: < MOV *CDCOD,CWCOF RESET OFFSET IN CCBLK ! 9150: --- ! 9151: > ERR07 MOV *CDCOD,CWCOF RESET OFFSET IN CCBLK ! 9152: 23701c22691,22692 ! 9153: < BRN CMPSE MERGE TO GENERATE ERROR AS CDFAL ! 9154: --- ! 9155: > JMG CMPSE MERGE TO GENERATE ERROR AS CDFAL ! 9156: > EJC ! 9157: 23703c22694 ! 9158: < * ERROR DURING EXECUTE TIME COMPILE OR EXPRESSION EVALUATIO ! 9159: --- ! 9160: > * ERROR DURING EXECUTE TIME COMPILE OR EXPRESSION EVALUATION. ! 9161: 23711c22702,22704 ! 9162: < ERR04 ZER R$CCB FORGET GARBAGE CODE BLOCK ! 9163: --- ! 9164: > ERR08 JSR COPND CALL TO CLOSE OFF THIS LEVEL ! 9165: > BNZ R$COP,ERR08 LOOP IF NOT ALL -COPYS CLOSED ! 9166: > ZER R$CCB FORGET GARBAGE CODE BLOCK ! 9167: 23719,23721c22712,22714 ! 9168: < ERRA4 ICA XS POP STACK ! 9169: < BEQ XS,FLPRT,ERRC4 JUMP IF PROG DEFINED FN CALL FOUND ! 9170: < BNE XS,GTCEF,ERRA4 LOOP IF NOT EVAL OR CODE CALL YET ! 9171: --- ! 9172: > ERR09 ICA XS POP STACK ! 9173: > BEQ XS,FLPRT,ERR11 JUMP IF PROG DEFINED FN CALL FOUND ! 9174: > BNE XS,GTCEF,ERR09 LOOP IF NOT EVAL OR CODE CALL YET ! 9175: 23729c22722 ! 9176: < ERRB4 BNZ KVERL,ERR07 JUMP IF ERRLIMIT NON-ZERO ! 9177: --- ! 9178: > ERR10 BNZ KVERL,ERR14 JUMP IF ERRLIMIT NON-ZERO ! 9179: 23734,23736c22727,22728 ! 9180: < ERRC4 MOV FLPTR,XS RESTORE STACK FROM FLPTR ! 9181: < BRN ERRB4 MERGE ! 9182: < EJC ! 9183: --- ! 9184: > ERR11 MOV FLPTR,XS RESTORE STACK FROM FLPTR ! 9185: > BRN ERR10 MERGE ! 9186: 23742,23744c22734 ! 9187: < * IF ERRLIMIT KEYWORD IS ZERO, AN ABORT IS SIGNALLED, ! 9188: < * SEE CODING FOR SYSTEM LABEL ABORT AT L$ABO. ! 9189: < * ! 9190: --- ! 9191: > * IF ERRLIMIT KEYWORD IS ZERO, THE RUN IS ABORTED. ! 9192: 23749c22739 ! 9193: < * IF 3 OR MORE FATAL ERRORS OCCUR AN ABORT IS SIGNALLED ! 9194: --- ! 9195: > * IF 3 OR MORE FATAL ERRORS OCCUR AN ABORT OCCURS ! 9196: 23752a22743 ! 9197: > EJC ! 9198: 23754,23755c22745,22746 ! 9199: < ERR05 SSL INISS RESTORE MAIN PROG S-R STACK PTR ! 9200: < BNZ DMVCH,ERR08 JUMP IF IN MID-DUMP ! 9201: --- ! 9202: > ERR12 SSL INISS RESTORE MAIN PROG S-R STACK PTR ! 9203: > BNZ DMVCH,ERR15 JUMP IF IN MID-DUMP ! 9204: 23757c22748 ! 9205: < * MERGE HERE FROM ERR08 ! 9206: --- ! 9207: > * MERGE HERE AFTER DUMP TIDY UP ! 9208: 23759c22750,22751 ! 9209: < ERR06 BZE KVERL,LABO1 ABORT IF ERRLIMIT IS ZERO ! 9210: --- ! 9211: > ERR13 ZER XR CLEAR XR FLAG ! 9212: > BZE KVERL,STOPR ABORT IF ERRLIMIT IS ZERO ! 9213: 23762c22754 ! 9214: < * MERGE FROM ERR04 ! 9215: --- ! 9216: > * MERGE AFTER ERRLIMIT TEST ! 9217: 23764,23765c22756 ! 9218: < ERR07 BGE ERRFT,=NUM03,LABO1 ABORT IF TOO MANY FATAL ERRORS ! 9219: < DCV KVERL DECREMENT ERRLIMIT ! 9220: --- ! 9221: > ERR14 DCV KVERL DECREMENT ERRLIMIT ! 9222: 23772c22763 ! 9223: < BZE XR,LCNT1 CONTINUE IF NO SETEXIT TRAP ! 9224: --- ! 9225: > BZE XR,ERRG4 CONTINUE IF NO SETEXIT TRAP ! 9226: 23781,23782c22772,22773 ! 9227: < ERR08 MOV DMVCH,XR CHAIN HEAD FOR AFFECTED VRBLKS ! 9228: < BZE XR,ERR06 DONE IF ZERO ! 9229: --- ! 9230: > ERR15 MOV DMVCH,XR CHAIN HEAD FOR AFFECTED VRBLKS ! 9231: > BZE XR,ERR13 DONE IF ZERO ! 9232: 23785c22776,22795 ! 9233: < BRN ERR08 LOOP THROUGH CHAIN ! 9234: --- ! 9235: > BRN ERR15 LOOP THROUGH CHAIN ! 9236: > * ! 9237: > * TAKE DRACONIAN STEPS FOR REPEATED FATAL ERRORS ! 9238: > * ! 9239: > ERR16 MOV ERRTF,WA ERROR CODE ! 9240: > MOV WA,KVERT PLACE ERROR CODE FOR ERMSG ! 9241: > MNZ XR IN CASE COMPILE TIME ! 9242: > BEQ STAGE,=STGIC,STOPR JUMP IF SO ! 9243: > BEQ STAGE,=STGCE,STOPR ALSO COMPILE TIME ! 9244: > ZER XR INDICATE EXECUTION ! 9245: > BRN STOPR TERMINATE RUN ! 9246: > * ! 9247: > ERRAF ERB 251,TOO MANY FATAL ERRORS ! 9248: > * ! 9249: > * HERE FOR GLOBAL ERROR JUMPS ! 9250: > * ! 9251: > ERRG1 JMG CMPLE ! 9252: > ERRG2 JMG CMPEE ! 9253: > ERRG3 JMG CMPCE ! 9254: > ERRG4 JMG LCNXE ! 9255: 23791,23801d22800 ! 9256: < ! 9257: < ! 9258: < ! 9259: < ! 9260: < ! 9261: < ! 9262: < ! 9263: < ! 9264: < ! 9265: < ! 9266: <
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.