|
|
1.1 ! root 1: ! 2: ! 3: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 1 ! 4: ! 5: ! 6: 1,4c1,6 ! 7: < TTL S P I T B O L - REVISION HISTORY ! 8: < EJC ! 9: < * R E V I S I O N H I S T O R Y ! 10: < * ------------------------------- ! 11: --- ! 12: > * CHANGES [SGD] ! 13: > * ------------- ! 14: > * 1. COMMENTED OUT DEFAULT .DEF, .UNDEF AS THESE MACHINE- ! 15: > * DEPENDENT. I SUGGEST AGAIN THAT THESE DO NOT BELONG ! 16: > * IN MINIMAL SOURCE, UNLESS SOMETHING OF THE FORM .*DEF ! 17: > * IS TO BE INCORPORTATED INTO MINIMAL LANGUAGE DEFN. ! 18: 5a8,11 ! 19: > * 2. NOTED THAT DESCRIPTION OF BEV, BOD MISSING FROM ! 20: > * SBL42.CMT MINIMAL DESCRIPTION, AND DISCUSSION OF ! 21: > * "ODD"/"EVEN" AND REQUIREMENTS PERTAINING THERETO ! 22: > * SEEMS INSUFFICIENT. ! 23: 7,8c13,21 ! 24: < * VERSION 3.5B (FEB 81... - SGD PATCHES) ! 25: < * ----------------------------------- ! 26: --- ! 27: > * 3. PERMIT CODE KEYWORD TO CONTAIN ANY INTEGER VALUE. ! 28: > * THIS CONSISTS OF REMOVING THE ENFORCED RESTRICTION ! 29: > * IN ASIGN (SEE ASG24), SINCE CODE CONTAINS NO RELOC. ! 30: > * USE OF KEYWORD VALUE (AS IT SHOULDNT). SBL DOC. ! 31: > * MUST BE UPDATED. ADDRESS OF CODE VALUE NOW PASSED TO ! 32: > * OSINT (KVCOD), INSTEAD OF VALUE ITSELF. HENCE OSINT ! 33: > * DOCUMENTATION MUST LIKEWISE BE REVISED. CHANGES ! 34: > * MADE IN KEYWORD DEFINITION TABLES, PROCEDURES ACESS ! 35: > * AND ASIGN SINCE CODE NOW SPECIAL KEYWORD. ! 36: 10,42c23,24 ! 37: < * SGD03 - ADDITION OF .CNCI AND SYSCI (INT->STRING ! 38: < * SYSTEM ROUTINE OPTION) ! 39: < * SGD04 - (06-MAY-1981) MODIFIED INILN TO 132 ! 40: < * SGD05 - (13-MAY-1981) INSERTED MISSING WTB AFTER SYSMM ! 41: < * CALLS ! 42: < * SGD06 - (25-MAY-1981) MERGED IN PROFILER PATCHES ! 43: < * (NOT MARKED) ! 44: < * SGD07 - (25-MAY-1981) MUCHO PATCHES TO PROFILER (MARKED, ! 45: < * BUT BEST JUST TO EXTRACT ENMASSE) ! 46: < * SGD08 - (25-MAY-1981) USE STRING LENGTH IN HASHS ! 47: < * SGD09 - (25-MAY-1981) FIXED SERIOUS PARSER PROBLEM ! 48: < * RELATING TO (X Y) ON LINE BEING VIEWED AS PATTERN ! 49: < * MATCH. FIXED BY ADDITION OF NEW CMTYP VALUE ! 50: < * C$CNP (CONCATENATION - NOT PATTERN MATCH) ! 51: < * SGD10 - (01-AUG-1981) FIXED EXIT(N) RESPECIFICATION CODE ! 52: < * TO PROPERLY OBSERVE HEADER SEMANTICS ON RETURN. ! 53: < * SGD11 - (07-AUG-1981) BYPASS PRTPG CALL AT INITIALIZATION ! 54: < * FOLLOWING COMPILATION IF NO OUTPUT GENERATED. ! 55: < * THIS PREVENTS OUTPUT FILES CONSISTING OF THE ! 56: < * HEADERS AND A FEW BLANK LINES WHEN THERE IS NO ! 57: < * SOURCE LISTING AND NO COMPILATION STATS. ! 58: < * ALSO FIX TIMSX INITIALIZATION IN SAME CODE. ! 59: < * SGD12 - (17-AUG-1981) B$EFC CODE DID NOT CHECK FOR ! 60: < * UNCONVERTED RESULT RETURNING NULL STRING. FIXED. ! 61: < * SGDBF - ( NOV-1981) ADDED BUFFER TYPE AND SYMBOL CNBF ! 62: ! 63: ! 64: ! 65: ! 66: ! 67: ! 68: ! 69: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 2 ! 70: ! 71: ! 72: < * SGD13 - (03-MAR-1982) LOAD PFVBL FIELD IN RETRN FOR ! 73: < * RETURN TRACING. THIS WAS CAUSING BUG ON RETURN ! 74: < * TRACES THAT TRIED TO ACCESS THE VARIABLE NAME ! 75: < * SGD14 - ADDED CHAR FUNCTION. CHAR(N) RETURNS NTH ! 76: < * CHARACTER OF HOST MACHINE CHARACTER SET. ! 77: < * NOT CONDITIONALIZED OR MARKED. ! 78: < * SGD15 - FIXED PROBLEM RELATING TO COMPILATION OF GOTO ! 79: < * FIELDS CONTAINING SMALL INTEGERS (IN CONST SEC). ! 80: --- ! 81: > * EROSI RETURNS NOW CONTAIN NEW CODE KEYWORD VALUE IN ! 82: > * IA. OSINT DOCUMENTATION MUST BE REVISED. ! 83: 44,48c26,29 ! 84: < * REG01 - (XX-AUG-82) ! 85: < * ADDED CFP$U TO EASE TRANSLATION ON SMALLER ! 86: < * SYSTEMS - CONDITIONAL .CUCF ! 87: < * ADDED LOWER CASE SUPPORT - CONDITIONAL .CULC ! 88: < * ADDED SET I/O FUNCTION - CONDITIONAL .CUST ! 89: --- ! 90: > * INTERESTINGLY, THIS SHOULD PERMIT THE SPITBOL PROGRAM ! 91: > * TO INTERROGATE THE CODE KEYWORD AT THE START OF ! 92: > * EXECUTION TO DETERMINE IF COMPILATION ERRORS ! 93: > * OCCURRED. ! 94: 50,51c31,46 ! 95: < * REG02 - (XX-SEP-82) ! 96: < * CHANGED INILN AND AND INILS TO 258 ! 97: --- ! 98: > * 4. ADD -COPY "FILETAG" CONTROL CARD. -COPY PERMITTED IN ! 99: > * CODE STRINGS. NESTING IS PERMITTED TO ANY LEVEL, ! 100: > * THOUGH OSINT IS FREE TO RESTRICT THE MAXIMUM LEVEL. ! 101: > * NOTE REQUIREMENT FOR FILETAG SPECIFIED AS ! 102: > * STRING CONSTANT SINCE FILETAGS MAY CONTAIN SEMICOLONS. ! 103: > * I HAVE TRIED TO MAKE THIS ENHANCEMENT WITH MINIMUM ! 104: > * (MINIMAL?) AMOUNT OF NEW CODE, SO THE FEATURE IS ! 105: > * NOT CONDITIONALIZED. THE SOLUTION ! 106: > * REQUIRED THE ADDITION OF A NEW BLOCK TYPE (COBLK) TO ! 107: > * BUILD THE INPUT CONTEXT SAVE STACK AS A CHAIN OF ! 108: > * COBLKS. A RECUSIVE SOLUTION ON CMPIL/READR/NEXTS ! 109: > * WOULD HAVE REQUIRED EXTENSIVE MODIFICATIONS AND ! 110: > * SUBSTANTIAL NEW CODE. NOTE THAT FORMS SUCH AS ! 111: > * CODE('-COPY "FILE.SBL"') ARE ACCEPTABLE, WHICH IS ! 112: > * VIEWED AS SIGNIFICANT ENHANCEMENT IN ADDITION TO ! 113: > * COMPILE-TIME INCLUDE. ! 114: 53,59c48,50 ! 115: < * REG03 - (XX-OCT-82) ! 116: < * CONDITIONALIZED THE PAGE EJECT AFTER CALL TO SYSBX ! 117: < * AND ADDED ANOTHER BEFORE CALL TO SYSBX, SO THAT, ! 118: < * IF DESIRED BY THE IMPLEMENTOR, STANDARD OUTPUT ! 119: < * WILL REFLECT ASSIGNMENTS MADE BY EXECUTING PROGRAM ! 120: < * ONLY. CONDITIONAL .CUEJ CONTROLS - IF DEFINED ! 121: < * EJECT IS BEFORE CALL TO SYSBX. ! 122: --- ! 123: > * TO SUPPORT THIS FEATURE, TWO NEW OSINT ROUTINES ARE ! 124: > * DEFINED, SYSSC (START COPY) AND SYSEC (END COPY) WITH ! 125: > * LOGICS DESCRIBED IN THE .CMT FILE. ! 126: 61,63c52,57 ! 127: < * REG04 - (XX-NOV-82) ! 128: ! 129: ! 130: ! 131: ! 132: ! 133: ! 134: ! 135: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 3 ! 136: ! 137: ! 138: < * FIXED DIFFICULTIES WITH LISTINGS DURING EXECUTION ! 139: < * WHEN NO LISTING GENERATED DURING COMPILATION. ! 140: --- ! 141: > * BECAUSE OF ANNOYANCE FACTOR, SOURCE LISTING OF ! 142: > * CODE() INFO VIA -LIST, INCLUDING -COPY INPUT, IS ! 143: > * NO LONGER POSSIBLE. IF THIS IS PERMITTED, THEN ! 144: > * ONE FINDS -COPY INPUT BEING PRINTED ON STD. ! 145: > * OUTPUT CHANNEL (DEPENDING ON STATE OF -LIST), ! 146: > * UNLESS EXPLICIT -NOLIST IS GIVEN. ! 147: 65,67c59,63 ! 148: < * -LIST TO CODE() CAUSED BOMB. FIX IS TO RESET ! 149: < * R$TTL AND R$STL TO NULLS NOT 0 AFTER COMPILATION. ! 150: < * (LISTR AND LISTT EXPECT NULLS) ! 151: --- ! 152: > * 5. THE DOCUMENTATION FOR SYSIO IS INCONSISTENT. IT ! 153: > * SHOWS 0,1,2,3 BEING POSSIBLE INPUTS DEPENDING ON ! 154: > * INPUT/OUTPUT, STD/NONSTD. HOWEVER, IT ALSO APPEARS ! 155: > * (AND IS STATED) THAT SYSIO IS NOT CALLED FOR STD ! 156: > * INPUT/OUTPUT. ! 157: 69,224c65,67 ! 158: < * WHEN LISTING AND STATISTICS ROUTED TO DIFFERENT ! 159: < * FILE THAN EXECUTION OUTPUT, ERROR MESSAGE IS SENT ! 160: < * TO EXECUTION OUTPUT (AND GETS SEPARATED FROM ! 161: < * ... IN STATEMENT ... MSG). LABO1 CALLS SYSAX AND ! 162: < * STOPR DOES NOT CALL SYSAX IF ENTERED FROM LABO1. ! 163: < * ! 164: < * REG05 - (XX-NOV-82) ! 165: < * PREVENT CLEAR() FROM CLOBBERING PROTECTED VARIABLES ! 166: < * AT LABEL SCLR5. ! 167: < * ! 168: < * REG06 - (XX-NOV-82) ! 169: < * FIXED GTEXP FROM ACCEPTING TRAILING SEMICOLON OR ! 170: < * COLON. NOT LEGAL WAY TO END AN EXPRESSION. ! 171: < * ! 172: < * VERSION 3.5A (OCT 79 - SGD PATCHES) ! 173: < * ----------------------------------- ! 174: < * ! 175: < * SGD01 - PATCH IN ASIGN TO FIX MULTIPLE TRAP BLOCK PROBLEM ! 176: < * (ASG10+2) ! 177: < * SGD02 - PATCH IN GTARR TO FIX NULL CONVERT (GTAR9+0) ! 178: < * ! 179: < TTL S P I T B O L -- BASIC INFORMATION ! 180: < EJC ! 181: < * ! 182: < * GENERAL STRUCTURE ! 183: < * ----------------- ! 184: < * ! 185: < * THIS PROGRAM IS A TRANSLATOR FOR A VERSION OF THE SNOBOL4 ! 186: < * PROGRAMMING LANGUAGE. LANGUAGE DETAILS ARE CONTAINED IN ! 187: < * THE MANUAL MACRO SPITBOL BY DEWAR AND MCCANN, TECHNICAL ! 188: < * REPORT 90, UNIVERSITY OF LEEDS 1976. THE LANGUAGE ! 189: < * IS IDENTICAL TO THAT IMPLEMENTED BY THE BTL TRANSLATOR ! 190: < * (R. E. GRISWOLD ET AL.) WITH THE FOLLOWING EXCEPTIONS. ! 191: < * ! 192: < * 1) REDEFINITION OF STANDARD SYSTEM FUNCTIONS AND ! 193: < * OPERATORS IS NOT PERMITTED. ! 194: ! 195: ! 196: ! 197: ! 198: ! 199: ! 200: ! 201: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 4 ! 202: ! 203: ! 204: < * ! 205: < * 2) THE VALUE FUNCTION IS NOT PROVIDED. ! 206: < * ! 207: < * 3) ACCESS TRACING IS PROVIDED IN ADDITION TO THE ! 208: < * OTHER STANDARD TRACE MODES. ! 209: < * ! 210: < * 4) THE KEYWORD STFCOUNT IS NOT PROVIDED. ! 211: < * ! 212: < * 5) THE KEYWORD FULLSCAN IS NOT PROVIDED AND ALL PATTERN ! 213: < * MATCHING TAKES PLACE IN FULLSCAN MODE (I.E. WITH NO ! 214: < * HEURISTICS APPLIED). ! 215: < * ! 216: < * 6) A SERIES OF EXPRESSIONS SEPARATED BY COMMAS MAY ! 217: < * BE GROUPED WITHIN PARENTHESES TO PROVIDE A SELECTION ! 218: < * CAPABILITY. THE SEMANTICS ARE THAT THE SELECTION ! 219: < * ASSUMES THE VALUE OF THE FIRST EXPRESSION WITHIN IT ! 220: < * WHICH SUCCEEDS AS THEY ARE EVALUATED FROM THE LEFT. ! 221: < * IF NO EXPRESSION SUCCEEDS THE ENTIRE STATEMENT FAILS ! 222: < * ! 223: < * 7) AN EXPLICIT PATTERN MATCHING OPERATOR IS PROVIDED. ! 224: < * THIS IS THE BINARY QUERY (SEE GIMPEL SIGPLAN OCT 74) ! 225: < * ! 226: < * 8) THE ASSIGNMENT OPERATOR IS INTRODUCED AS IN THE ! 227: < * GIMPEL REFERENCE. ! 228: < * ! 229: < * 9) THE EXIT FUNCTION IS PROVIDED FOR GENERATING LOAD ! 230: < * MODULES - CF. GIMPELS SITBOL. ! 231: < * ! 232: < * ! 233: < * THE METHOD USED IN THIS PROGRAM IS TO TRANSLATE THE ! 234: < * SOURCE CODE INTO AN INTERNAL PSEUDO-CODE (SEE FOLLOWING ! 235: < * SECTION). AN INTERPRETOR IS THEN USED TO EXECUTE THIS ! 236: < * GENERATED PSEUDO-CODE. THE NATURE OF THE SNOBOL4 LANGUAGE ! 237: < * IS SUCH THAT THE LATTER TASK IS MUCH MORE COMPLEX THAN ! 238: < * THE ACTUAL TRANSLATION PHASE. ACCORDINGLY, NEARLY ALL THE ! 239: < * CODE IN THE PROGRAM SECTION IS CONCERNED WITH THE ACTUAL ! 240: < * EXECUTION OF THE SNOBOL4 PROGRAM. ! 241: < EJC ! 242: < * ! 243: < * INTERPRETIVE CODE FORMAT ! 244: < * ------------------------ ! 245: < * ! 246: < * THE INTERPRETIVE PSEUDO-CODE CONSISTS OF A SERIES OF ! 247: < * ADDRESS POINTERS. THE EXACT FORMAT OF THE CODE IS ! 248: < * DESCRIBED IN CONNECTION WITH THE CDBLK FORMAT. THE ! 249: < * PURPOSE OF THIS SECTION IS TO GIVE GENERAL INSIGHT INTO ! 250: < * THE INTERPRETIVE APPROACH INVOLVED. ! 251: < * ! 252: < * THE BASIC FORM OF THE CODE IS RELATED TO REVERSE POLISH. ! 253: < * IN OTHER WORDS, THE OPERANDS PRECEDE THE OPERATORS WHICH ! 254: < * ARE ZERO ADDRESS OPERATORS. THERE ARE SOME EXCEPTIONS TO ! 255: < * THESE RULES, NOTABLY THE UNARY NOT OPERATOR AND THE ! 256: < * SELECTION CONSTRUCTION WHICH CLEARLY REQUIRE ADVANCE ! 257: < * KNOWLEDGE OF THE OPERATOR INVOLVED. ! 258: < * ! 259: < * THE OPERANDS ARE MOVED TO THE TOP OF THE MAIN STACK AND ! 260: ! 261: ! 262: ! 263: ! 264: ! 265: ! 266: ! 267: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 5 ! 268: ! 269: ! 270: < * THE OPERATORS ARE APPLIED TO THE TOP STACK ENTRIES. LIKE ! 271: < * OTHER VERSIONS OF SPITBOL, THIS PROCESSOR DEPENDS ON ! 272: < * KNOWING WHETHER OPERANDS ARE REQUIRED BY NAME OR BY VALUE ! 273: < * AND MOVES THE APPROPRIATE OBJECT TO THE STACK. THUS NO ! 274: < * NAME/VALUE CHECKS ARE INCLUDED IN THE OPERATOR CIRCUITS. ! 275: < * ! 276: < * THE ACTUAL POINTERS IN THE CODE POINT TO A BLOCK WHOSE ! 277: < * FIRST WORD IS THE ADDRESS OF THE INTERPRETOR ROUTINE ! 278: < * TO BE EXECUTED FOR THE CODE WORD. ! 279: < * ! 280: < * IN THE CASE OF OPERATORS, THE POINTER IS TO A WORD WHICH ! 281: < * CONTAINS THE ADDRESS OF THE OPERATOR TO BE EXECUTED. IN ! 282: < * THE CASE OF OPERANDS SUCH AS CONSTANTS, THE POINTER IS TO ! 283: < * THE OPERAND ITSELF. ACCORDINGLY, ALL OPERANDS CONTAIN ! 284: < * A FIELD WHICH POINTS TO THE ROUTINE TO LOAD THE VALUE OF ! 285: < * THE OPERAND ONTO THE STACK. IN THE CASE OF A VARIABLE, ! 286: < * THERE ARE THREE SUCH POINTERS. ONE TO LOAD THE VALUE, ! 287: < * ONE TO STORE THE VALUE AND A THIRD TO JUMP TO THE LABEL. ! 288: < * ! 289: < * THE HANDLING OF FAILURE RETURNS DESERVES SPECIAL COMMENT. ! 290: < * THE LOCATION FLPTR CONTAINS THE POINTER TO THE LOCATION ! 291: < * ON THE MAIN STACK WHICH CONTAINS THE FAILURE RETURN ! 292: < * WHICH IS IN THE FORM OF A BYTE OFFSET IN THE CURRENT ! 293: < * CODE BLOCK (CDBLK OR EXBLK). WHEN A FAILURE OCCURS, THE ! 294: < * STACK IS POPPED AS INDICATED BY THE SETTING OF FLPTR AND ! 295: < * CONTROL IS PASSED TO THE APPROPRIATE LOCATION IN THE ! 296: < * CURRENT CODE BLOCK WITH THE STACK POINTER POINTING TO THE ! 297: < * FAILURE OFFSET ON THE STACK AND FLPTR UNCHANGED. ! 298: < EJC ! 299: < * ! 300: < * INTERNAL DATA REPRESENTATIONS ! 301: < * ----------------------------- ! 302: < * ! 303: < * REPRESENTATION OF VALUES ! 304: < * ! 305: < * A VALUE IS REPRESENTED BY A POINTER TO A BLOCK WHICH ! 306: < * DESCRIBES THE TYPE AND PARTICULARS OF THE DATA VALUE. ! 307: < * IN GENERAL, A VARIABLE IS A LOCATION CONTAINING SUCH A ! 308: < * POINTER (ALTHOUGH IN THE CASE OF TRACE ASSOCIATIONS THIS ! 309: < * IS MODIFIED, SEE DESCRIPTION OF TRBLK). ! 310: < * ! 311: < * THE FOLLOWING IS A LIST OF POSSIBLE DATATYPES SHOWING THE ! 312: < * TYPE OF BLOCK USED TO HOLD THE VALUE. THE DETAILS OF ! 313: < * EACH BLOCK FORMAT ARE GIVEN LATER. ! 314: < * ! 315: < * DATATYPE BLOCK TYPE ! 316: < * -------- ---------- ! 317: < * ! 318: < * ! 319: < * ARRAY ARBLK OR VCBLK ! 320: < * ! 321: < * CODE CDBLK ! 322: < * ! 323: < * EXPRESSION EXBLK OR SEBLK ! 324: < * ! 325: < * INTEGER ICBLK ! 326: ! 327: ! 328: ! 329: ! 330: ! 331: ! 332: ! 333: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 6 ! 334: ! 335: ! 336: < * ! 337: < * NAME NMBLK ! 338: < * ! 339: < * PATTERN P0BLK OR P1BLK OR P2BLK ! 340: < * ! 341: < * REAL RCBLK ! 342: < * ! 343: < * STRING SCBLK ! 344: --- ! 345: > * 6. SINCE -PRINT,-NOPRINT REMOVED IN V4, I HAVE ! 346: > * REINSTATED THE CIRCUIT IN NEXTS TO AVOID LISTING ! 347: > * CONTROL CARDS (-COPY FORCES LIST IN CNCRD THOUGH). ! 348: 226c69,70 ! 349: < * TABLE TBBLK ! 350: --- ! 351: > * 7. WA NOW CONTAINS THE INITIAL VALUE OF &CODE ON ENTRY ! 352: > * TO SPITBOL. ! 353: 228,229c72,77 ! 354: < * PROGRAM DATATYPE PDBLK ! 355: < EJC ! 356: --- ! 357: > * 8. ADDED DDC (DEFINE DISPLAY CONSTANT). IS IDENTICAL ! 358: > * TO DTC EXCEPT THAT ON SYSTEMS SUPPORTING LOWER CASE, ! 359: > * THE DISPLAY TEXT CAN BE TRANSLATED WITH A ! 360: > * CASE MIX. FOR EXAMPLE, CAPITALIZE ONLY THE FIRST ! 361: > * LETTER, OR THE FIRST LETTER OF EVERY WORD, OR NO ! 362: > * UPPER CASE (FOR EUNICHS), ETC. ! 363: 231,232c79,81 ! 364: < * REPRESENTATION OF VARIABLES ! 365: < * --------------------------- ! 366: --- ! 367: > * 9. FIX MINOR OVERSIGHT IN FAILING TO CLEAR R$PMB AT ! 368: > * END OF PATTERN MATCH, THUS LEAVING PTR TO BCBLK ! 369: > * THAT CANNOT BE COLLECTED. ! 370: 234,238c83,92 ! 371: < * DURING THE COURSE OF EVALUATING EXPRESSIONS, IT IS ! 372: < * NECESSARY TO GENERATE NAMES OF VARIABLES (FOR EXAMPLE ! 373: < * ON THE LEFT SIDE OF A BINARY EQUALS OPERATOR). THESE ARE ! 374: < * NOT TO BE CONFUSED WITH OBJECTS OF DATATYPE NAME WHICH ! 375: < * ARE IN FACT VALUES. ! 376: --- ! 377: > * 10. AFTER CONSULTATION WITH DAVE SHIELDS, IT WAS AGREED ! 378: > * TO REINSTATE ARG,FIELD,ITEM AND LOCAL FUNCTIONS. ! 379: > * COMMENTS WERE RECEIVED THAT REMOVING THEM BREAKS ! 380: > * EXISTING CODE IN DIFFICULT-TO-FIX WAYS, INCLUDING ! 381: > * A NUMBER OF THE UTILITY ROUTINES IN GIMPELS BOOK. ! 382: > * IN ANY EVENT, THESE ARE SNOBOL4 COMPATIBILITY ! 383: > * FUNCTIONS THAT TAKE LITTLE CODE SPACE. AS A ! 384: > * RESULT OF THIS, AND -COPY, ERROR NUMBERS HAVE ! 385: > * BEEN PUSHED BACK OVER THE 255 THRESHOLD, WHICH ! 386: > * SEEMS UNAVOIDABLE UNLESS MAJOR SURGERY IS DONE. ! 387: 240,250c94,95 ! 388: < * FROM A LOGICAL POINT OF VIEW, SUCH NAMES COULD BE SIMPLY ! 389: < * REPRESENTED BY A POINTER TO THE APPROPRIATE VALUE CELL. ! 390: < * HOWEVER IN THE CASE OF ARRAYS AND PROGRAM DEFINED ! 391: < * DATATYPES, THIS WOULD VIOLATE THE RULE THAT THERE MUST BE ! 392: ! 393: ! 394: ! 395: ! 396: ! 397: ! 398: ! 399: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 7 ! 400: ! 401: ! 402: < * NO POINTERS INTO THE MIDDLE OF A BLOCK IN DYNAMIC STORE. ! 403: < * ACCORDINGLY, A NAME IS ALWAYS REPRESENTED BY A BASE AND ! 404: < * OFFSET. THE BASE POINTS TO THE START OF THE BLOCK ! 405: < * CONTAINING THE VARIABLE VALUE AND THE OFFSET IS THE ! 406: < * OFFSET WITHIN THIS BLOCK IN BYTES. THUS THE ADDRESS ! 407: < * OF THE ACTUAL VARIABLE IS DETERMINED BY ADDING THE BASE ! 408: < * AND OFFSET VALUES. ! 409: --- ! 410: > * 11. VERSION ID CHANGED TO V4.3 DUE TO SUBSTANTIAL ! 411: > * CHANGES. ! 412: 252,253c97,98 ! 413: < * THE FOLLOWING ARE THE INSTANCES OF VARIABLES REPRESENTED ! 414: < * IN THIS MANNER. ! 415: --- ! 416: > * 12. PERMIT DOLLAR SIGN IN VARIABLE NAMES. MINOR ! 417: > * CHANGE TO OPERATOR TABLE AND SCANE. ! 418: 255,256c100,103 ! 419: < * 1) NATURAL VARIABLE BASE IS PTR TO VRBLK ! 420: < * OFFSET IS *VRVAL ! 421: --- ! 422: > * 13. PERMIT BUFFER TYPE FOR LOAD SPECIFICATION. AS ! 423: > * A SIDE-EFFECT, THE CODE FOR BUFFER CONVERSION HAS ! 424: > * BEEN CENTRALIZED IN GTBUF. ALSO FIXED PADDING ! 425: > * BUG IN INSBF RELATED TO ZERO PADDING. ! 426: 258,259c105,108 ! 427: < * 2) TABLE ELEMENT BASE IS PTR TO TEBLK ! 428: < * OFFSET IS *TEVAL ! 429: --- ! 430: > * 14. DOCUMENT THAT SYSIL MUST NEVER REQUEST ZERO BYTES. ! 431: > * DOING SO CAUSES ACESS TO POTENTIALLY CREATE ! 432: > * INVALID MEMORY CAUSING LATER GARBAGE COLLECTOR ! 433: > * PROBLEMS OR MISADJUSTMENTS OF DNAMP, ETC. ! 434: 261,262c110,112 ! 435: < * 3) ARRAY ELEMENT BASE IS PTR TO ARBLK ! 436: < * OFFSET IS OFFSET TO ELEMENT ! 437: --- ! 438: > * 15. VDIFFER FUNCTION ADDED. VDIFFER(X,Y) RETURNS X ! 439: > * IF DIFFERENT FROM Y. IN MOST CASES IT IS EXPECTED ! 440: > * THAT Y WOULD BE NULL. ! 441: 264,281c114 ! 442: < * 4) VECTOR ELEMENT BASE IS PTR TO VCBLK ! 443: < * OFFSET IS OFFSET TO ELEMENT ! 444: < * ! 445: < * 5) PROG DEF DTP BASE IS PTR TO PDBLK ! 446: < * OFFSET IS OFFSET TO FIELD VALUE ! 447: < * ! 448: < * IN ADDITION THERE ARE TWO CASES OF OBJECTS WHICH ARE ! 449: < * LIKE VARIABLES BUT CANNOT BE HANDLED IN THIS MANNER. ! 450: < * THESE ARE CALLED PSEUDO-VARIABLES AND ARE REPRESENTED ! 451: < * WITH A SPECIAL BASE POINTER AS FOLLOWS= ! 452: < * ! 453: < * EXPRESSION VARIABLE PTR TO EVBLK (SEE EVBLK) ! 454: < * ! 455: < * KEYWORD VARIABLE PTR TO KVBLK (SEE KVBLK) ! 456: < * ! 457: < * PSEUDO-VARIABLES ARE HANDLED AS SPECIAL CASES BY THE ! 458: ! 459: ! 460: ! 461: ! 462: ! 463: ! 464: ! 465: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 8 ! 466: ! 467: ! 468: < * ACCESS PROCEDURE (ACESS) AND THE ASSIGNMENT PROCEDURE ! 469: < * (ASIGN). SEE THESE TWO PROCEDURES FOR DETAILS. ! 470: --- ! 471: > SEC FORMAL START OF PROCEDURES SECTION ! 472: 284,411d116 ! 473: < * ORGANIZATION OF DATA AREA ! 474: < * ------------------------- ! 475: < * ! 476: < * ! 477: < * THE DATA AREA IS DIVIDED INTO TWO REGIONS. ! 478: < * ! 479: < * STATIC AREA ! 480: < * ! 481: < * THE STATIC AREA BUILDS UP FROM THE BOTTOM AND CONTAINS ! 482: < * DATA AREAS WHICH ARE ALLOCATED DYNAMICALLY BUT ARE NEVER ! 483: < * DELETED OR MOVED AROUND. THE MACRO-PROGRAM ITSELF ! 484: < * USES THE STATIC AREA FOR THE FOLLOWING. ! 485: < * ! 486: < * 1) ALL VARIABLE BLOCKS (VRBLK). ! 487: < * ! 488: < * 2) THE HASH TABLE FOR VARIABLE BLOCKS. ! 489: < * ! 490: < * 3) MISCELLANEOUS BUFFERS AND WORK AREAS (SEE PROGRAM ! 491: < * INITIALIZATION SECTION). ! 492: < * ! 493: < * IN ADDITION, THE SYSTEM PROCEDURES MAY USE THIS AREA FOR ! 494: < * INPUT/OUTPUT BUFFERS, EXTERNAL FUNCTIONS ETC. SPACE IN ! 495: < * THE STATIC REGION IS ALLOCATED BY CALLING PROCEDURE ALOST ! 496: < * ! 497: < * THE FOLLOWING GLOBAL VARIABLES DEFINE THE CURRENT ! 498: < * LOCATION AND SIZE OF THE STATIC AREA. ! 499: < * ! 500: < * STATB ADDRESS OF START OF STATIC AREA ! 501: < * STATE ADDRESS+1 OF LAST WORD IN AREA. ! 502: < * ! 503: < * THE MINIMUM SIZE OF STATIC IS GIVEN APPROXIMATELY BY ! 504: < * 12 + *E$HNB + *E$STS + SPACE FOR ALPHABET STRING ! 505: < * AND STANDARD PRINT BUFFER. ! 506: < EJC ! 507: < * ! 508: < * DYNAMIC AREA ! 509: < * ! 510: < * THE DYNAMIC AREA IS BUILT UPWARDS IN MEMORY AFTER THE ! 511: < * STATIC REGION. DATA IN THIS AREA MUST ALL BE IN STANDARD ! 512: < * BLOCK FORMATS SO THAT IT CAN BE PROCESSED BY THE GARBAGE ! 513: < * COLLECTOR (PROCEDURE GBCOL). GBCOL COMPACTS BLOCKS DOWN ! 514: < * IN THIS REGION AS REQUIRED BY SPACE EXHAUSTION AND CAN ! 515: < * ALSO MOVE ALL BLOCKS UP TO ALLOW FOR EXPANSION OF THE ! 516: < * STATIC REGION. ! 517: < * WITH THE EXCEPTION OF TABLES AND ARRAYS, NO SPITBOL ! 518: < * OBJECT ONCE BUILT IN DYNAMIC MEMORY IS EVER SUBSEQUENTLY ! 519: < * MODIFIED. OBSERVING THIS RULE NECESSITATES A COPYING ! 520: < * ACTION DURING STRING AND PATTERN CONCATENATION. ! 521: < * ! 522: < * GARBAGE COLLECTION IS FUNDAMENTAL TO THE ALLOCATION OF ! 523: < * SPACE FOR VALUES. SPITBOL USES A VERY EFFICIENT GARBAGE ! 524: ! 525: ! 526: ! 527: ! 528: ! 529: ! 530: ! 531: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 9 ! 532: ! 533: ! 534: < * COLLECTOR WHICH INSISTS THAT POINTERS INTO DYNAMIC STORE ! 535: < * SHOULD BE IDENTIFIABLE WITHOUT USE OF BIT TABLES, ! 536: < * MARKER BITS ETC. TO SATISFY THIS REQUIREMENT, DYNAMIC ! 537: < * MEMORY MUST NOT START AT TOO LOW AN ADDRESS AND LENGTHS ! 538: < * OF ARRAYS, TABLES, STRINGS, CODE AND EXPRESSION BLOCKS ! 539: < * MAY NOT EXCEED THE NUMERICAL VALUE OF THE LOWEST DYNAMIC ! 540: < * ADDRESS. TO AVOID EITHER PENALIZING USERS WITH MODEST ! 541: < * REQUIREMENTS OR RESTRICTING THOSE WITH GREATER NEEDS ON ! 542: < * HOST SYSTEMS WHERE DYNAMIC MEMORY IS ALLOCATED IN LOW ! 543: < * ADDRESSES, THE MINIMUM DYNAMIC ADDRESS MAY BE SPECIFIED ! 544: < * SUFFICIENTLY HIGH TO PERMIT ARBITRARILY LARGE SPITBOL ! 545: < * OBJECTS TO BE CREATED ( WITH THE POSSIBILITY IN EXTREME ! 546: < * CASES OF WASTING LARGE AMOUNTS OF MEMORY BELOW THE ! 547: < * START ADDRESS). THIS MINIMUM VALUE IS MADE AVAILABLE ! 548: < * IN VARIABLE MXLEN BY A SYSTEM ROUTINE, SYSMX. ! 549: < * ALTERNATIVELY SYSMX MAY INDICATE THAT A ! 550: < * DEFAULT MAY BE USED IN WHICH DYNAMIC IS PLACED ! 551: < * AT THE LOWEST POSSIBLE ADDRESS FOLLOWING STATIC. ! 552: < * ! 553: < * THE FOLLOWING GLOBAL WORK CELLS DEFINE THE LOCATION AND ! 554: < * LENGTH OF THE DYNAMIC AREA. ! 555: < * ! 556: < * DNAMB START OF DYNAMIC AREA ! 557: < * DNAMP NEXT AVAILABLE LOCATION ! 558: < * DNAME LAST AVAILABLE LOCATION + 1 ! 559: < * ! 560: < * DNAMB IS ALWAYS HIGHER THAN STATE SINCE THE ALOST ! 561: < * PROCEDURE MAINTAINS SOME EXPANSION SPACE ABOVE STATE. ! 562: < * *** DNAMB MUST NEVER BE PERMITTED TO HAVE A VALUE LESS ! 563: < * THAN THAT IN MXLEN *** ! 564: < * ! 565: < * SPACE IN THE DYNAMIC REGION IS ALLOCATED BY THE ALLOC ! 566: < * PROCEDURE. THE DYNAMIC REGION MAY BE USED BY SYSTEM ! 567: < * PROCEDURES PROVIDED THAT ALL THE RULES ARE OBEYED. ! 568: < EJC ! 569: < * ! 570: < * REGISTER USAGE ! 571: < * -------------- ! 572: < * ! 573: < * (CP) CODE POINTER REGISTER. USED TO ! 574: < * HOLD A POINTER TO THE CURRENT ! 575: < * LOCATION IN THE INTERPRETIVE PSEUDO ! 576: < * CODE (I.E. PTR INTO A CDBLK). ! 577: < * ! 578: < * (XL,XR) GENERAL INDEX REGISTERS. USUALLY ! 579: < * USED TO HOLD POINTERS TO BLOCKS IN ! 580: < * DYNAMIC STORAGE. AN IMPORTANT ! 581: < * RESTRICTION IS THAT THE VALUE IN ! 582: < * XL MUST BE COLLECTABLE FOR ! 583: < * A GARBAGE COLLECT CALL. A VALUE ! 584: < * IS COLLECTABLE IF IT EITHER POINTS ! 585: < * OUTSIDE THE DYNAMIC AREA, OR IF IT ! 586: < * POINTS TO THE START OF A BLOCK IN ! 587: < * THE DYNAMIC AREA. ! 588: < * ! 589: < * (XS) STACK POINTER. USED TO POINT TO ! 590: ! 591: ! 592: ! 593: ! 594: ! 595: ! 596: ! 597: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 10 ! 598: ! 599: ! 600: < * THE STACK FRONT. THE STACK MAY ! 601: < * BUILD UP OR DOWN AND IS USED ! 602: < * TO STACK SUBROUTINE RETURN POINTS ! 603: < * AND OTHER RECURSIVELY SAVED DATA. ! 604: < * ! 605: < * (XT) AN ALTERNATIVE NAME FOR XL DURING ! 606: < * ITS USE IN ACCESSING STACKED ITEMS. ! 607: < * ! 608: < * (WA,WB,WC) GENERAL WORK REGISTERS. CANNOT BE ! 609: < * USED FOR INDEXING, BUT MAY HOLD ! 610: < * VARIOUS TYPES OF DATA. ! 611: < * ! 612: < * (IA) USED FOR ALL SIGNED INTEGER ! 613: < * ARITHMETIC, BOTH THAT USED BY THE ! 614: < * TRANSLATOR AND THAT ARISING FROM ! 615: < * USE OF SNOBOL4 ARITHMETIC OPERATORS ! 616: < * ! 617: < * (RA) REAL ACCUMULATOR. USED FOR ALL ! 618: < * FLOATING POINT ARITHMETIC. ! 619: < EJC ! 620: < * ! 621: 416,422c121,134 ! 622: < * ASSEMBLY SYMBOLS ARE REFERRED TO. TO INCORPORATE THE ! 623: < * FEATURES REFERRED TO, THE MINIMAL SOURCE SHOULD BE ! 624: < * PREFACED BY SUITABLE CONDITIONAL ASSEMBLY SYMBOL ! 625: < * DEFINITIONS. ! 626: < * IN ALL CASES IT IS PERMISSIBLE TO DEFAULT THE DEFINITIONS ! 627: < * IN WHICH CASE THE ADDITIONAL FEATURES WILL BE OMITTED ! 628: < * FROM THE TARGET CODE. ! 629: --- ! 630: > * ASSEMBLY SYMBOLS ARE REFERRED TO. ! 631: > * A PARTICULAR SET OF DEFAULT SETTINGS IS GIVEN IN THIS ! 632: > * SOURCE BY USE OF .DEF AND .UNDEF PSEUDO OPS. ! 633: > * A DIFFERENT SELECTION MAY BE MADE BY VARYING THE ! 634: > * DEFINITIONS. AS AN ALTERNATIVE, THIS SECTION MAY BE ! 635: > * COMMENTED OUT AND THE MINIMAL TRANSLATOR PRELOADED WITH ! 636: > * THE SELECTED DEFINITIONS, THUS ALLOWING A MORE DYNAMIC ! 637: > * CHOICE TO BE MADE. ! 638: > * SOME OF THE CONDITIONAL FEATURES CHOOSE AMONGST A VARIETY ! 639: > * OF OPTIONS. OTHERS ARE DEFINED PRINCIPALLY TO ALLOW ! 640: > * OMISSION OF A FEATURE WHICH IS NOT WANTED IN ORDER TO ! 641: > * SAVE MEMORY OR BECAUSE IT CANNOT BE SUPPORTED. ! 642: > * NOTE THAT IF .CPLC OPTION IS CHOSEN, TRANSLATION OF DTC, ! 643: > * ERR, ERB ARGUMENTS SHOULD BE TO LOWER CASE. ! 644: 424,505c136,158 ! 645: < * .CASL DEFINE TO INCLUDE 26 SHIFTED LETTRS ! 646: < * .CAHT DEFINE TO INCLUDE HORIZONTAL TAB ! 647: < * .CAVT DEFINE TO INCLUDE VERTICAL TAB ! 648: < * .CIOD IF DEFINED, DEFAULT DELIMITER IS ! 649: < * NOT USED IN PROCESSING 3RD ARG OF ! 650: < * INPUT() AND OUTPUT() ! 651: < * .CNBT DEFINE TO OMIT BATCH INITIALISATION ! 652: < * .CNCI DEFINE TO ENABLE SYSCI ROUTINE ! 653: < * .CNEX DEFINE TO OMIT EXIT() CODE. ! 654: < * .CNLD DEFINE TO OMIT LOAD() CODE. ! 655: < * .CNPF DEFINE TO OMIT PROFILE STUFF ! 656: ! 657: ! 658: ! 659: ! 660: ! 661: ! 662: ! 663: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 11 ! 664: ! 665: ! 666: < * .CNRA DEFINE TO OMIT ALL REAL ARITHMETIC ! 667: < * .CNSR DEFINE TO OMIT SORT, RSORT ! 668: < * .CSAX DEFINE IF SYSAX IS TO BE CALLED ! 669: < * .CSN6 DEFINE TO PAD STMT NOS TO 6 CHARS ! 670: < * .CSN8 DEFINE TO PAD STMT NOS TO 8 CHARS ! 671: < * .CUCF DEFINE TO INCLUDE CFP$U ! 672: < * .CULC DEFINE TO INCLUDE &CASE (LC NAMES) ! 673: < * .CUST DEFINE TO INCLUDE SET() CODE ! 674: < .DEF .CASL ! 675: < .DEF .CAHT ! 676: < .DEF .CIOD ! 677: < .DEF .CSAX ! 678: < .DEF .CSN8 ! 679: < .DEF .CUCF ! 680: < .DEF .CUEJ ! 681: < .DEF .CULC ! 682: < .DEF .CUST ! 683: < TTL S P I T B O L -- PROCEDURES SECTION ! 684: < * ! 685: < * THIS SECTION STARTS WITH DESCRIPTIONS OF THE OPERATING ! 686: < * SYSTEM DEPENDENT PROCEDURES WHICH ARE USED BY THE SPITBOL ! 687: < * TRANSLATOR. ALL SUCH PROCEDURES HAVE FIVE LETTER NAMES ! 688: < * BEGINNING WITH SYS. THEY ARE LISTED IN ALPHABETICAL ! 689: < * ORDER. ! 690: < * ALL PROCEDURES HAVE A SPECIFICATION CONSISTING OF A ! 691: < * MODEL CALL, PRECEDED BY A POSSIBLY EMPTY LIST OF REGISTER ! 692: < * CONTENTS GIVING PARAMETERS AVAILABLE TO THE PROCEDURE AND ! 693: < * FOLLOWED BY A POSSIBLY EMPTY LIST OF REGISTER CONTENTS ! 694: < * REQUIRED ON RETURN FROM THE CALL OR WHICH MAY HAVE HAD ! 695: < * THEIR CONTENTS DESTROYED. ONLY THOSE REGISTERS EXPLICITLY ! 696: < * MENTIONED IN THE LIST AFTER THE CALL MAY HAVE THEIR ! 697: < * VALUES CHANGED. ! 698: < * THE SEGMENT OF CODE PROVIDING THE EXTERNAL PROCEDURES IS ! 699: < * CONVENIENTLY REFERRED TO AS OSINT (OPERATING SYSTEM ! 700: < * INTERFACE). THE SYSXX PROCEDURES IT CONTAINS PROVIDE ! 701: < * FACILITIES NOT USUALLY AVAILABLE AS PRIMITIVES IN ! 702: < * ASSEMBLY LANGUAGES. FOR PARTICULAR TARGET MACHINES, ! 703: < * IMPLEMENTORS MAY CHOOSE FOR SOME MINIMAL OPCODES WHICH ! 704: < * DO NOT HAVE REASONABLY DIRECT TRANSLATIONS, TO USE CALLS ! 705: < * OF ADDITIONAL PROCEDURES WHICH THEY PROVIDE IN OSINT. ! 706: < * E.G. MWB OR TRC MIGHT BE TRANSLATED AS JSR SYSMB, ! 707: < * JSR SYSTC IN SOME IMPLEMENTATIONS. ! 708: < * ! 709: < * IN THE DESCRIPTIONS, REFERENCE IS MADE TO --BLK ! 710: < * FORMATS (-- = A PAIR OF LETTERS). SEE THE SPITBOL ! 711: < * DEFINITIONS SECTION FOR DETAILED DESCRIPTIONS OF ALL ! 712: < * SUCH BLOCK FORMATS EXCEPT FCBLK FOR WHICH SYSFC SHOULD ! 713: < * BE CONSULTED. ! 714: < * ! 715: < * SECTION 0 CONTAINS INP,INR SPECIFICATIONS OF INTERNAL ! 716: < * PROCEDURES,ROUTINES. THIS GIVES A SINGLE PASS TRANSLATOR ! 717: < * INFORMATION MAKING IT EASY TO GENERATE ALTERNATIVE CALLS ! 718: < * IN THE TRANSLATION OF JSR-S FOR PROCEDURES OF DIFFERENT ! 719: < * TYPES IF THIS PROVES NECESSARY. ! 720: < * ! 721: < SEC START OF PROCEDURES SECTION ! 722: ! 723: ! 724: ! 725: ! 726: ! 727: ! 728: ! 729: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 12 ! 730: ! 731: ! 732: < .IF .CSAX ! 733: < EJC ! 734: < * ! 735: < * SYSAX -- AFTER EXECUTION ! 736: < * ! 737: < SYSAX EXP DEFINE EXTERNAL ENTRY POINT ! 738: < * ! 739: < * IF THE CONDITIONAL ASSEMBLY SYMBOL .CSAX IS DEFINED, ! 740: < * THIS ROUTINE IS CALLED IMMEDIATELY AFTER EXECUTION AND ! 741: < * BEFORE PRINTING OF EXECUTION STATISTICS OR DUMP OUTPUT. ! 742: < * PURPOSE OF CALL IS FOR IMPLEMENTOR TO DETERMINE AND ! 743: < * IF THE CALL IS NOT REQUIRED IT WILL BE OMITTED IF .CSAX ! 744: < * IS UNDEFINED. IN THIS CASE SYSAX NEED NOT BE CODED. ! 745: < * ! 746: < * JSR SYSAX CALL AFTER EXECUTION ! 747: --- ! 748: > *.DEF .CAHT DEFINE TO INCLUDE HORIZONTAL TAB ! 749: > *.DEF .CASL DEFINE TO INCLUDE 26 SHIFTED LETTRS ! 750: > *.DEF .CAVT DEFINE TO INCLUDE VERTICAL TAB ! 751: > *.UNDEF .CEPP DEFINE FOR ODD PARITY ENTRY POINTS ! 752: > *.UNDEF .CNBF DEFINE TO OMIT BUFFER EXTENSION ! 753: > *.UNDEF .CNBT DEFINE TO OMIT BATCH INITIALISATION ! 754: > *.UNDEF .CNEX DEFINE TO OMIT EXIT() CODE ! 755: > *.UNDEF .CNFN DEFINE TO OMIT FENCE() CODE ! 756: > *.UNDEF .CNLD DEFINE TO OMIT LOAD() CODE ! 757: > *.UNDEF .CNPF DEFINE TO OMIT PROFILE CODE ! 758: > *.UNDEF .CNRA DEFINE TO OMIT ALL REAL ARITHMETIC ! 759: > *.UNDEF .CNSR DEFINE TO OMIT SORT, RSORT CODE ! 760: > *.DEF .CPLC DEFINE IF HOST PREFERS LOWER CASE ! 761: > *.UNDEF .CRPP DEFINE FOR ODD PARITY RETURN POINTS ! 762: > *.UNDEF .CS16 DEFINE TO INITIALIZE STLIM TO 32767 ! 763: > *.UNDEF .CSAX DEFINE IF SYSAX IS TO BE CALLED ! 764: > *.UNDEF .CSCI DEFINE TO ENABLE SYSCI ROUTINE ! 765: > *.UNDEF .CSCV DEFINE FOR CLU, CUL CASE CONVERSION ! 766: > *.DEF .CSIG DEFINE TO IGNORE CASE OF LETTERS ! 767: > *.UNDEF .CSN6 DEFINE TO PAD STMT NOS TO 6 CHARS ! 768: > *.DEF .CSN8 DEFINE TO PAD STMT NOS TO 8 CHARS ! 769: > *.UNDEF .CTMD DEFINE IF SYSTM UNIT IS DECISECOND ! 770: > .IF .CASL ! 771: 506a160,161 ! 772: > .UNDEF .CSIG .CSIG USELESS WITHOUT LC LETTERS ! 773: > .UNDEF .CPLC .CPLC ERRONEOUS WITHOUT LC LETTERS ! 774: 510c165 ! 775: < * SYSBX -- BEFORE EXECUTION ! 776: --- ! 777: > * ACTUAL PROCESSABLE EXP PROCEDURE DEFINITIONS ! 778: 512,547c167,169 ! 779: < SYSBX EXP DEFINE EXTERNAL ENTRY POINT ! 780: < * ! 781: < * CALLED AFTER INITIAL SPITBOL COMPILATION AND BEFORE ! 782: < * COMMENCING EXECUTION IN CASE OSINT NEEDS ! 783: < * TO ASSIGN FILES OR PERFORM OTHER NECESSARY SERVICES. ! 784: < * OSINT MAY ALSO CHOOSE TO SEND A MESSAGE TO ONLINE ! 785: < * TERMINAL (IF ANY) INDICATING THAT EXECUTION IS STARTING. ! 786: < * ! 787: < * JSR SYSBX CALL BEFORE EXECUTION STARTS ! 788: ! 789: ! 790: ! 791: ! 792: ! 793: ! 794: ! 795: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 13 ! 796: ! 797: ! 798: < EJC ! 799: < .IF .CNCI ! 800: < * ! 801: < * SYSCI -- CONVERT INTEGER ! 802: < * ! 803: < SYSCI EXP ! 804: < * ! 805: < * SYSCI IS AN OPTIONAL OSINT ROUTINE THAT CAUSES SPITBOL TO ! 806: < * CALL SYSCI TO CONVERT INTEGER VALUES TO STRINGS, RATHER ! 807: < * THAN USING SPITBOL'S OWN INTERNAL CONVERSION CODE. THIS ! 808: < * CODE MAY BE LESS EFFICIENT ON MACHINES WITH HARDWARE ! 809: < * CONVERSION INSTRUCTIONS AND IN SUCH CASES, IT MAY BE AN ! 810: < * ADVANTAGE TO INCLUDE SYSCI. THE SYMBOL .CNCI MUST BE ! 811: < * DEFINED IF THIS ROUTINE IS TO BE USED. ! 812: < * ! 813: < * THE RULES FOR CONVERTING INTEGERS TO STRINGS ARE THAT ! 814: < * POSITIVE VALUES ARE REPRESENTED WITHOUT ANY SIGN, AND ! 815: < * THERE ARE NEVER ANY LEADING BLANKS OR ZEROS, EXCEPT IN ! 816: < * THE CASE OF ZERO ITSELF WHICH IS REPRESENTED AS A SINGLE ! 817: < * ZERO DIGIT. NEGATIVE NUMBERS ARE REPRESENTED WITH A ! 818: < * PRECEEDING MINUS SIGN. THERE ARE NEVER ANY TRAILING ! 819: < * BLANKS, AND CONVERSION CANNOT FAIL. ! 820: < * ! 821: < * (IA) VALUE TO BE CONVERTED ! 822: < * JSR SYSCI CALL TO CONVERT INTEGER VALUE ! 823: < * (XL) POINTER TO PSEUDO-SCBLK WITH STRING ! 824: < EJC ! 825: --- ! 826: > .IF .CSAX ! 827: > SYSAX EXP E,0 ! 828: > .ELSE ! 829: 549,1250c171,203 ! 830: < * ! 831: < * SYSDC -- DATE CHECK ! 832: < * ! 833: < SYSDC EXP DEFINE EXTERNAL ENTRY POINT ! 834: < * ! 835: < * SYSDC IS CALLED TO CHECK THAT THE EXPIRY DATE FOR A TRIAL ! 836: < * VERSION OF SPITBOL IS UNEXPIRED. ! 837: < * ! 838: < * JSR SYSDC CALL TO CHECK DATE ! 839: < * RETURN ONLY IF DATE IS OK ! 840: < EJC ! 841: < * ! 842: < * SYSDM -- DUMP CORE ! 843: < * ! 844: < SYSDM EXP DEFINE EXTERNAL ENTRY POINT ! 845: < * ! 846: < * SYSDM IS CALLED BY A SPITBOL PROGRAM CALL OF DUMP(N) WITH ! 847: < * N GE 3. ITS PURPOSE IS TO PROVIDE A CORE DUMP. ! 848: < * N COULD HOLD AN ENCODING OF THE START ADRS FOR DUMP AND ! 849: < * AMOUNT TO BE DUMPED E.G. N = 256*A + S , S = START ADRS ! 850: < * IN KILOWORDS, A = KILOWORDS TO DUMP ! 851: < * ! 852: < * (XR) PARAMETER N OF CALL DUMP(N) ! 853: < * JSR SYSDM CALL TO ENTER ROUTINE ! 854: ! 855: ! 856: ! 857: ! 858: ! 859: ! 860: ! 861: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 14 ! 862: ! 863: ! 864: < EJC ! 865: < * ! 866: < * SYSDT -- GET CURRENT DATE ! 867: < * ! 868: < SYSDT EXP DEFINE EXTERNAL ENTRY POINT ! 869: < * ! 870: < * SYSDT IS USED TO OBTAIN THE CURRENT DATE. THE DATE IS ! 871: < * RETURNED AS A CHARACTER STRING IN ANY FORMAT APPROPRIATE ! 872: < * TO THE OPERATING SYSTEM IN USE. IT MAY ALSO CONTAIN THE ! 873: < * CURRENT TIME OF DAY. SYSDT IS USED TO IMPLEMENT THE ! 874: < * SNOBOL4 FUNCTION DATE. ! 875: < * ! 876: < * JSR SYSDT CALL TO GET DATE ! 877: < * (XL) POINTER TO BLOCK CONTAINING DATE ! 878: < * ! 879: < * THE FORMAT OF THE BLOCK IS LIKE AN SCBLK EXCEPT THAT ! 880: < * THE FIRST WORD NEED NOT BE SET. THE RESULT IS COPIED ! 881: < * INTO SPITBOL DYNAMIC MEMORY ON RETURN. ! 882: < EJC ! 883: < * ! 884: < * SYSEF -- EJECT FILE ! 885: < * ! 886: < SYSEF EXP DEFINE EXTERNAL ENTRY POINT ! 887: < * ! 888: < * SYSEF IS USED TO WRITE A PAGE EJECT TO A NAMED FILE. IT ! 889: < * MAY ONLY BE USED FOR FILES WHERE THIS CONCEPT MAKES ! 890: < * SENSE. NOTE THAT SYSEF IS NOT NORMALLY USED FOR THE ! 891: < * STANDARD OUTPUT FILE (SEE SYSEP). ! 892: < * ! 893: < * (WA) PTR TO FCBLK OR ZERO ! 894: < * (XR) EJECT ARGUMENT (SCBLK PTR) ! 895: < * JSR SYSEF CALL TO EJECT FILE ! 896: < * PPM LOC RETURN HERE IF FILE DOES NOT EXIST ! 897: < * PPM LOC RETURN HERE IF INAPPROPRIATE FILE ! 898: < * PPM LOC RETURN HERE IF I/O ERROR ! 899: < EJC ! 900: < * ! 901: < * SYSEJ -- END OF JOB ! 902: < * ! 903: < SYSEJ EXP DEFINE EXTERNAL ENTRY POINT ! 904: < * ! 905: < * SYSEJ IS CALLED ONCE AT THE END OF EXECUTION TO ! 906: < * TERMINATE THE RUN. THE SIGNIFICANCE OF THE ABEND AND ! 907: < * CODE VALUES IS SYSTEM DEPENDENT. IN GENERAL, THE CODE ! 908: < * VALUE SHOULD BE MADE AVAILABLE FOR TESTING, AND THE ! 909: < * ABEND VALUE SHOULD CAUSE SOME POST-MORTEM ACTION SUCH AS ! 910: < * A DUMP. NOTE THAT SYSEJ DOES NOT RETURN TO ITS CALLER. ! 911: < * SEE SYSXI FOR DETAILS OF FCBLK CHAIN ! 912: < * ! 913: < * (WA) VALUE OF ABEND KEYWORD ! 914: < * (WB) VALUE OF CODE KEYWORD ! 915: < * (XL) O OR PTR TO HEAD OF FCBLK CHAIN ! 916: < * JSR SYSEJ CALL TO END JOB ! 917: < * ! 918: < * THE FOLLOWING SPECIAL VALUES ARE USED AS CODES IN (WB) ! 919: < * 999 EXECUTION SUPPRESSED ! 920: ! 921: ! 922: ! 923: ! 924: ! 925: ! 926: ! 927: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 15 ! 928: ! 929: ! 930: < * 998 STANDARD OUTPUT FILE FULL OR UNAVAILABLE IN A SYSXI ! 931: < * LOAD MODULE. IN THESE CASES (WA) CONTAINS THE NUMBER ! 932: < * OF THE STATEMENT CAUSING PREMATURE TERMINATION. ! 933: < EJC ! 934: < * ! 935: < * SYSEM -- GET ERROR MESSAGE TEXT ! 936: < * ! 937: < SYSEM EXP DEFINE EXTERNAL ENTRY POINT ! 938: < * ! 939: < * SYSEM IS USED TO OBTAIN THE TEXT OF ERR, ERB CALLS IN THE ! 940: < * SOURCE PROGRAM GIVEN THE ERROR CODE NUMBER. IT IS ALLOWED ! 941: < * TO RETURN A NULL STRING IF THIS FACILITY IS UNAVAILABLE. ! 942: < * ! 943: < * (WA) ERROR CODE NUMBER ! 944: < * JSR SYSEM CALL TO GET TEXT ! 945: < * (XR) TEXT OF MESSAGE ! 946: < * ! 947: < * THE RETURNED VALUE IS A POINTER TO A BLOCK IN SCBLK ! 948: < * FORMAT EXCEPT THAT THE FIRST WORD NEED NOT BE SET. THE ! 949: < * STRING IS COPIED INTO DYNAMIC MEMORY ON RETURN. ! 950: < * IF THE NULL STRING IS RETURNED EITHER BECAUSE SYSEM DOES ! 951: < * NOT PROVIDE ERROR MESSAGE TEXTS OR BECAUSE WA IS OUT OF ! 952: < * RANGE, SPITBOL WILL PRINT THE STRING STORED IN ERRTEXT ! 953: < * KEYWORD. ! 954: < EJC ! 955: < * ! 956: < * SYSEN -- ENDFILE ! 957: < * ! 958: < SYSEN EXP DEFINE EXTERNAL ENTRY POINT ! 959: < * ! 960: < * SYSEN IS USED TO IMPLEMENT THE SNOBOL4 FUNCTION ENDFILE. ! 961: < * THE MEANING IS SYSTEM DEPENDENT. IN GENERAL, ENDFILE ! 962: < * IMPLIES THAT NO FURTHER I/O OPERATIONS WILL BE PERFORMED, ! 963: < * BUT DOES NOT GUARANTEE THIS TO BE THE CASE. THE FILE ! 964: < * SHOULD BE CLOSED AFTER THE CALL, A SUBSEQUENT READ ! 965: < * OR WRITE MAY REOPEN THE FILE AT THE START OR IT MAY BE ! 966: < * NECESSARY TO REOPEN THE FILE VIA SYSIO. ! 967: < * ! 968: < * (WA) PTR TO FCBLK OR ZERO ! 969: < * (XR) ENDFILE ARGUMENT (SCBLK PTR) ! 970: < * JSR SYSEN CALL TO ENDFILE ! 971: < * PPM LOC RETURN HERE IF FILE DOES NOT EXIST ! 972: < * PPM LOC RETURN HERE IF ENDFILE NOT ALLOWED ! 973: < * PPM LOC RETURN HERE IF I/O ERROR ! 974: < * (WA,WB) DESTROYED ! 975: < * ! 976: < * THE SECOND ERROR RETURN IS USED FOR FILES FOR WHICH ! 977: < * ENDFILE IS NOT PERMITTED. FOR EXAMPLE, IT MAY BE EXPECTED ! 978: < * THAT THE STANDARD INPUT AND OUTPUT FILES ARE IN THIS ! 979: < * CATEGORY. ! 980: < EJC ! 981: < * ! 982: < * SYSEP -- EJECT PRINTER PAGE ! 983: < * ! 984: < SYSEP EXP DEFINE EXTERNAL ENTRY POINT ! 985: < * ! 986: ! 987: ! 988: ! 989: ! 990: ! 991: ! 992: ! 993: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 16 ! 994: ! 995: ! 996: < * SYSEP IS CALLED TO PERFORM A PAGE EJECT ON THE STANDARD ! 997: < * PRINTER OUTPUT FILE (CORRESPONDING TO SYSPR OUTPUT). ! 998: < * ! 999: < * JSR SYSEP CALL TO EJECT PRINTER OUTPUT ! 1000: < EJC ! 1001: < * ! 1002: < * SYSEX -- CALL EXTERNAL FUNCTION ! 1003: < * ! 1004: < SYSEX EXP DEFINE EXTERNAL ENTRY POINT ! 1005: < * ! 1006: < * SYSEX IS CALLED TO PASS CONTROL TO AN EXTERNAL FUNCTION ! 1007: < * PREVIOUSLY LOADED WITH A CALL TO SYSLD. ! 1008: < * ! 1009: < * (XS) POINTER TO ARGUMENTS ON STACK ! 1010: < * (XL) POINTER TO CONTROL BLOCK (EFBLK) ! 1011: < * (WA) NUMBER OF ARGUMENTS ON STACK ! 1012: < * JSR SYSEX CALL TO PASS CONTROL TO FUNCTION ! 1013: < * PPM LOC RETURN HERE IF FUNCTION CALL FAILS ! 1014: < * (XS) POPPED PAST ARGUMENTS ! 1015: < * (XR) RESULT RETURNED ! 1016: < * ! 1017: < * THE ARGUMENTS ARE STORED ON THE STACK WITH ! 1018: < * THE LAST ARGUMENT AT 0(XS). ON RETURN, XS ! 1019: < * IS POPPED PAST THE ARGUMENTS. ! 1020: < * ! 1021: < * THE FORM OF THE ARGUMENTS AS PASSED IS THAT USED IN THE ! 1022: < * SPITBOL TRANSLATOR (SEE DEFINITIONS AND DATA STRUCTURES ! 1023: < * SECTION). THE CONTROL BLOCK FORMAT IS ALSO DESCRIBED ! 1024: < * (UNDER EFBLK) IN THIS SECTION. ! 1025: < * ! 1026: < * THERE ARE TWO WAYS OF RETURNING A RESULT. ! 1027: < * ! 1028: < * 1) RETURN A POINTER TO A BLOCK IN DYNAMIC STORAGE. THIS ! 1029: < * BLOCK MUST BE IN EXACTLY CORRECT FORMAT, INCLUDING ! 1030: < * THE FIRST WORD. ONLY FUNCTIONS WRITTEN WITH INTIMATE ! 1031: < * KNOWLEDGE OF THE SYSTEM WILL RETURN IN THIS WAY. ! 1032: < * ! 1033: < * 2) STRING, INTEGER AND REAL RESULTS MAY BE RETURNED BY ! 1034: < * POINTING TO A PSEUDO-BLOCK OUTSIDE DYNAMIC MEMORY. ! 1035: < * THIS BLOCK IS IN ICBLK, RCBLK OR SCBLK FORMAT EXCEPT ! 1036: < * THAT THE FIRST WORD WILL BE OVERWRITTEN ! 1037: < * BY A TYPE WORD ON RETURN AND SO NEED NOT ! 1038: < * BE CORRECTLY SET. SUCH A RESULT IS ! 1039: < * COPIED INTO MAIN STORAGE BEFORE PROCEEDING. ! 1040: < * UNCONVERTED RESULTS MAY SIMILARLY BE RETURNED IN A ! 1041: < * PSEUDO-BLOCK WHICH IS IN CORRECT FORMAT INCLUDING ! 1042: < * TYPE WORD RECOGNISABLE BY GARBAGE COLLECTOR SINCE ! 1043: < * BLOCK IS COPIED INTO DYNAMIC MEMORY. ! 1044: < EJC ! 1045: < * ! 1046: < * SYSFC -- FILE CONTROL BLOCK ROUTINE ! 1047: < * ! 1048: < SYSFC EXP DEFINE EXTERNAL ENTRY POINT ! 1049: < * ! 1050: < * SEE ALSO SYSIO ! 1051: < * INPUT AND OUTPUT HAVE 3 ARGUMENTS REFERRED TO AS SHOWN ! 1052: ! 1053: ! 1054: ! 1055: ! 1056: ! 1057: ! 1058: ! 1059: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 17 ! 1060: ! 1061: ! 1062: < * INPUT(VARIABLE NAME,FILE ARG1,FILE ARG2) ! 1063: < * OUTPUT(VARIABLE NAME,FILE ARG1,FILE ARG2) ! 1064: < * FILE ARG1 MAY BE AN INTEGER OR STRING USED TO IDENTIFY ! 1065: < * AN I/O CHANNEL. IT IS CONVERTED TO A STRING FOR CHECKING. ! 1066: < * THE EXACT SIGNIFICANCE OF FILE ARG2 ! 1067: < * IS NOT RIGOROUSLY PRESCRIBED BUT TO IMPROVE PORTABILITY, ! 1068: < * THE SCHEME DESCRIBED IN THE SPITBOL USER MANUAL ! 1069: < * SHOULD BE ADOPTED WHEN POSSIBLE. THE PREFERRED FORM IS ! 1070: < * A STRING $F$,R$R$,C$C$,I$I$,...,Z$Z$ WHERE ! 1071: < * $F$ IS AN OPTIONAL FILE NAME WHICH IS PLACED FIRST. ! 1072: < * REMAINING ITEMS MAY BE OMITTED OR INCLUDED IN ANY ORDER. ! 1073: < * $R$ IS MAXIMUM RECORD LENGTH ! 1074: < * $C$ IS A CARRIAGE CONTROL CHARACTER OR CHARACTER STRING ! 1075: < * $I$ IS SOME FORM OF CHANNEL IDENTIFICATION USED IN THE ! 1076: < * ABSENCE OF $F$ TO ASSOCIATE THE VARIABLE ! 1077: < * WITH A FILE ALLOCATED DYNAMICALLY BY JCL COMMANDS AT ! 1078: < * SPITBOL LOAD TIME. ! 1079: < * ,...,Z$Z$ ARE ADDITIONAL FIELDS. ! 1080: < * IF , (COMMA) CANNOT BE USED AS A DELIMITER, .CIOD ! 1081: < * SHOULD BE DEFINED TO INTRODUCE BY CONDITIONAL ASSEMBLY ! 1082: < * ANOTHER DELIMITER (SEE ! 1083: < * IODEL EQU * ! 1084: < * EARLY IN DEFINITIONS SECTION). ! 1085: < * SYSFC IS CALLED WHEN A VARIABLE IS INPUT OR OUTPUT ! 1086: < * ASSOCIATED TO CHECK FILE ARG1 AND FILE ARG2 AND ! 1087: < * TO REPORT WHETHER AN FCBLK (FILE CONTROL ! 1088: < * BLOCK) IS NECESSARY AND IF SO WHAT SIZE IT SHOULD BE. ! 1089: < * THIS MAKES IT POSSIBLE FOR SPITBOL RATHER THAN OSINT TO ! 1090: < * ALLOCATE SUCH A BLOCK IN DYNAMIC MEMORY IF REQUIRED ! 1091: < * OR ALTERNATIVELY IN STATIC MEMORY. ! 1092: < * THE SIGNIFICANCE OF AN FCBLK , IF ONE IS REQUESTED, IS ! 1093: < * ENTIRELY UP TO THE SYSTEM INTERFACE. THE ONLY RESTRICTION ! 1094: < * IS THAT IF THE FCBLK SHOULD APPEAR TO LIE IN DYNAMIC ! 1095: < * MEMORY , POINTERS TO IT SHOULD BE PROPER POINTERS TO ! 1096: < * THE START OF A RECOGNISABLE AND GARBAGE COLLECTABLE ! 1097: < * BLOCK (THIS CONDITION WILL BE MET IF SYSFC REQUESTS ! 1098: < * SPITBOL TO PROVIDE AN FCBLK). ! 1099: < * AN OPTION IS PROVIDED FOR OSINT TO RETURN A POINTER IN ! 1100: < * XL TO AN FCBLK WHICH IT PRIVATELY ALLOCATED. THIS PTR ! 1101: < * WILL BE MADE AVAILABLE WHEN I/O OCCURS LATER. ! 1102: < * PRIVATE FCBLKS MAY HAVE ARBITRARY CONTENTS AND SPITBOL ! 1103: < * STORES NOTHING IN THEM. ! 1104: < EJC ! 1105: < * THE REQUESTED SIZE FOR AN FCBLK IN DYNAMIC MEMORY ! 1106: < * SHOULD ALLOW A 2 WORD OVERHEAD FOR BLOCK TYPE AND ! 1107: < * LENGTH FIELDS. INFORMATION SUBSEQUENTLY STORED IN THE ! 1108: < * REMAINING WORDS MAY BE ARBITRARY IF AN XNBLK (EXTERNAL ! 1109: < * NON-RELOCATABLE BLOCK) IS REQUESTED. IF THE REQUEST IS ! 1110: < * FOR AN XRBLK (EXTERNAL RELOCATABLE BLOCK) THE ! 1111: < * CONTENTS OF WORDS SHOULD BE COLLECTABLE (I.E. ANY ! 1112: < * APPARENT POINTERS INTO DYNAMIC SHOULD BE GENUINE BLOCK ! 1113: < * POINTERS). THESE RESTRICTIONS DO NOT APPLY IF AN FCBLK ! 1114: < * IS ALLOCATED OUTSIDE DYNAMIC OR IS NOT ALLOCATED AT ALL. ! 1115: < * IF AN FCBLK IS REQUESTED, ITS FIELDS WILL BE INITIALISED ! 1116: < * TO ZERO BEFORE ENTRY TO SYSIO WITH THE EXCEPTION OF ! 1117: < * WORDS 0 AND 1 IN WHICH THE BLOCK TYPE AND LENGTH ! 1118: ! 1119: ! 1120: ! 1121: ! 1122: ! 1123: ! 1124: ! 1125: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 18 ! 1126: ! 1127: ! 1128: < * FIELDS ARE PLACED FOR FCBLKS IN DYNAMIC MEMORY ONLY. ! 1129: < * FOR THE POSSIBLE USE OF SYSEJ AND SYSXI, IF FCBLKS ! 1130: < * ARE USED, A CHAIN IS BUILT SO THAT THEY MAY ALL BE ! 1131: < * FOUND - SEE SYSXI FOR DETAILS. ! 1132: < * IF BOTH FILE ARG1 AND FILE ARG2 ARE NULL, CALLS OF SYSFC ! 1133: < * AND SYSIO ARE OMITTED. ! 1134: < * IF FILE ARG1 IS NULL (STANDARD INPUT/OUTPUT FILE), SYSFC ! 1135: < * IS CALLED TO CHECK NON-NULL FILE ARG2 BUT ANY REQUEST ! 1136: < * FOR AN FCBLK WILL BE IGNORED, SINCE SPITBOL HANDLES THE ! 1137: < * STANDARD FILES SPECIALLY AND CANNOT READILY KEEP FCBLK ! 1138: < * POINTERS FOR THEM. ! 1139: < * FILEARG1 IS TYPE CHECKED BY SPITBOL SO FURTHER CHECKING ! 1140: < * MAY BE UNNECCESSARY IN MANY IMPLEMENTATIONS. ! 1141: < * FILE ARG2 IS PASSED SO THAT SYSFC MAY ANALYSE AND ! 1142: < * CHECK IT. HOWEVER TO ASSIST IN THIS, SPITBOL ALSO PASSES ! 1143: < * ON THE STACK THE COMPONENTS OF THIS ARGUMENT WITH ! 1144: < * FILE NAME, $F$ (OTHERWISE NULL) EXTRACTED AND STACKED ! 1145: < * FIRST. ! 1146: < * THE OTHER FIELDS, IF ANY, ARE EXTRACTED AS SUBSTRINGS, ! 1147: < * POINTERS TO THEM ARE STACKED AND A COUNT OF ALL ITEMS ! 1148: < * STACKED IS PLACED IN WC. IF AN FCBLK WAS EARLIER ! 1149: < * ALLOCATED AND POINTED TO VIA FILE ARG1, SYSFC IS ALSO ! 1150: < * PASSED A POINTER TO THIS FCBLK. ! 1151: < * ! 1152: < * (XL) FILE ARG1 SCBLK PTR (2ND ARG) ! 1153: < * (XR) FILEARG2 (3RD ARG) OR NULL ! 1154: < * -(XS)...-(XS) SCBLKS FOR $F$,$R$,$C$,... ! 1155: < * (WC) NO. OF STACKED SCBLKS ABOVE ! 1156: < * (WA) EXISTING FILE ARG1 FCBLK PTR OR 0 ! 1157: < * (WB) 0/3 FOR INPUT/OUTPUT ASSOCN ! 1158: < * JSR SYSFC CALL TO CHECK NEED FOR FCBLK ! 1159: < * PPM LOC INVALID FILE ARGUMENT ! 1160: < * (XS) POPPED (WC) TIMES ! 1161: < * (WA NON ZERO) BYTE SIZE OF REQUESTED FCBLK ! 1162: < * (WA=0,XL NON ZERO) PRIVATE FCBLK PTR IN XL ! 1163: < * (WA=XL=0) NO FCBLK WANTED, NO PRIVATE FCBLK ! 1164: < * (WC) 0/1/2 REQUEST ALLOC OF XRBLK/XNBLK ! 1165: < * /STATIC BLOCK FOR USE AS FCBLK ! 1166: < * (WB) DESTROYED ! 1167: < EJC ! 1168: < * ! 1169: < * SYSHS -- GIVE ACCESS TO HOST COMPUTER FEATURES ! 1170: < * ! 1171: < SYSHS EXP DEFINE EXTERNAL ENTRY POINT ! 1172: < * ! 1173: < * PROVIDES MEANS FOR IMPLEMENTING SPECIAL FEATURES ! 1174: < * ON DIFFERENT HOST COMPUTERS. THE ONLY DEFINED ENTRY IS ! 1175: < * THAT WHERE ALL ARGUMENTS ARE NULL IN WHICH CASE SYSHS ! 1176: < * RETURNS AN SCBLK CONTAINING NAME OF COMPUTER, ! 1177: < * NAME OF OPERATING SYSTEM AND NAME OF SITE SEPARATED BY ! 1178: < * COLONS. THE SCBLK NEED NOT HAVE A CORRECT FIRST FIELD ! 1179: < * AS THIS IS SUPPLIED ON COPYING STRING TO DYNAMIC MEMORY. ! 1180: < * SPITBOL DOES NO ARGUMENT CHECKING BUT DOES PROVIDE A ! 1181: < * SINGLE ERROR RETURN FOR ARGUMENTS CHECKED AS ERRONEOUS ! 1182: < * BY OSINT. IT ALSO PROVIDES A SINGLE EXECUTION ERROR ! 1183: < * RETURN. IF THESE ARE INADEQUATE, USE MAY BE MADE OF THE ! 1184: ! 1185: ! 1186: ! 1187: ! 1188: ! 1189: ! 1190: ! 1191: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 19 ! 1192: ! 1193: ! 1194: < * MINIMAL ERROR SECTION DIRECT AS DESCRIBED IN MINIMAL ! 1195: < * DOCUMENTATION, SECTION 10. ! 1196: < * SEVERAL NON-ERROR RETURNS ARE PROVIDED. THE FIRST ! 1197: < * CORRESPONDS TO THE DEFINED ENTRY OR, FOR IMPLEMENTATION ! 1198: < * DEFINED ENTRIES, ANY STRING MAY BE RETURNED. THE OTHERS ! 1199: < * PERMIT RESPECTIVELY, RETURN A NULL RESULT, RETURN WITH A ! 1200: < * RESULT TO BE STACKED WHICH IS POINTED AT BY XR, AND A ! 1201: < * RETURN CAUSING SPITBOL STATEMENT FAILURE. IF A RETURNED ! 1202: < * RESULT IS IN DYNAMIC MEMORY IT MUST OBEY GARBAGE ! 1203: < * COLLECTOR RULES. THE ONLY RESULTS COPIED ON RETURN ! 1204: < * ARE STRINGS RETURNED VIA PPM LOC3 RETURN. ! 1205: < * ! 1206: < * (WA) ARGUMENT 1 ! 1207: < * (XL) ARGUMENT 2 ! 1208: < * (XR) ARGUMENT 3 ! 1209: < * JSR SYSHS CALL TO GET HOST INFORMATION ! 1210: < * PPM LOC1 ERRONEOUS ARG ! 1211: < * PPM LOC2 EXECUTION ERROR ! 1212: < * PPM LOC3 SCBLK PTR IN XL OR 0 IF UNAVAILABLE ! 1213: < * PPM LOC4 RETURN A NULL RESULT ! 1214: < * PPM LOC5 RETURN RESULT IN XR ! 1215: < * PPM LOC6 CAUSE STATEMENT FAILURE ! 1216: < EJC ! 1217: < * ! 1218: < * SYSID -- RETURN SYSTEM IDENTIFICATION ! 1219: < * ! 1220: < SYSID EXP DEFINE EXTERNAL ENTRY POINT ! 1221: < * ! 1222: < * THIS ROUTINE SHOULD RETURN STRINGS TO HEAD THE STANDARD ! 1223: < * PRINTER OUTPUT. THE FIRST STRING WILL BE APPENDED TO ! 1224: < * A HEADING LINE OF THE FORM ! 1225: < * MACRO SPITBOL VERSION V.V ! 1226: < * SUPPLIED BY SPITBOL ITSELF. V.V ARE DIGITS GIVING THE ! 1227: < * MAJOR VERSION NUMBER AND GENERALLY AT LEAST A MINOR ! 1228: < * VERSION NUMBER RELATING TO OSINT SHOULD BE SUPPLIED TO ! 1229: < * GIVE SAY ! 1230: < * MACRO SPITBOL VERSION V.V(M.M) ! 1231: < * THE SECOND STRING SHOULD IDENTIFY AT LEAST THE MACHINE ! 1232: < * AND OPERATING SYSTEM. PREFERABLY IT SHOULD INCLUDE ! 1233: < * THE DATE AND TIME OF THE RUN. ! 1234: < * OPTIONALLY THE STRINGS MAY INCLUDE SITE NAME OF THE ! 1235: < * THE IMPLEMENTOR AND/OR MACHINE ON WHICH RUN TAKES PLACE, ! 1236: < * UNIQUE SITE OR COPY NUMBER AND OTHER INFORMATION AS ! 1237: < * APPROPRIATE WITHOUT MAKING IT SO LONG AS TO BE A ! 1238: < * NUISANCE TO USERS. ! 1239: < * THE FIRST WORDS OF THE SCBLKS POINTED AT NEED NOT BE ! 1240: < * CORRECTLY SET. ! 1241: < * ! 1242: < * JSR SYSID CALL FOR SYSTEM IDENTIFICATION ! 1243: < * (XR) SCBLK PTR FOR ADDITION TO HEADER ! 1244: < * (XL) PTR TO SECOND HEADER SCBLK ! 1245: < EJC ! 1246: < * ! 1247: < * SYSIL -- GET INPUT RECORD LENGTH ! 1248: < * ! 1249: < SYSIL EXP DEFINE EXTERNAL ENTRY POINT ! 1250: ! 1251: ! 1252: ! 1253: ! 1254: ! 1255: ! 1256: ! 1257: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 20 ! 1258: ! 1259: ! 1260: < * ! 1261: < * SYSIL IS USED TO GET THE LENGTH OF THE NEXT INPUT RECORD ! 1262: < * FROM A FILE PREVIOUSLY INPUT ASSOCIATED WITH A SYSIO ! 1263: < * CALL. THE LENGTH RETURNED IS USED TO ESTABLISH A BUFFER ! 1264: < * FOR A SUBSEQUENT SYSIN CALL. ! 1265: < * ! 1266: < * (WA) PTR TO FCBLK OR ZERO ! 1267: < * JSR SYSIL CALL TO GET RECORD LENGTH ! 1268: < * (WA) LENGTH OR ZERO IF FILE CLOSED ! 1269: < * ! 1270: < * NO HARM IS DONE IF THE VALUE RETURNED IS TOO LONG SINCE ! 1271: < * UNUSED SPACE WILL BE RECLAIMED AFTER THE SYSIN CALL. ! 1272: < * ! 1273: < * NOTE THAT IT IS THE SYSIL CALL (NOT THE SYSIO CALL) WHICH ! 1274: < * CAUSES THE FILE TO BE OPENED AS REQUIRED FOR THE FIRST ! 1275: < * RECORD INPUT FROM THE FILE. ! 1276: < EJC ! 1277: < * ! 1278: < * SYSIN -- READ INPUT RECORD ! 1279: < * ! 1280: < SYSIN EXP DEFINE EXTERNAL ENTRY POINT ! 1281: < * ! 1282: < * SYSIN IS USED TO READ A RECORD FROM THE FILE WHICH WAS ! 1283: < * REFERENCED IN A PRIOR CALL TO SYSIL (I.E. THESE CALLS ! 1284: < * ALWAYS OCCUR IN PAIRS). THE BUFFER PROVIDED IS AN ! 1285: < * SCBLK FOR A STRING OF LENGTH SET FROM THE SYSIL CALL. ! 1286: < * IF THE ACTUAL LENGTH READ IS LESS THAN THIS, THE LENGTH ! 1287: < * FIELD OF THE SCBLK MUST BE MODIFIED BEFORE RETURNING ! 1288: < * UNLESS BUFFER IS RIGHT PADDED WITH ZEROES. ! 1289: < * IT IS ALSO PERMISSIBLE TO TAKE ANY OF THE ALTERNATIVE ! 1290: < * RETURNS AFTER SCBLK LENGTH HAS BEEN MODIFIED. ! 1291: < * ! 1292: < * (WA) PTR TO FCBLK OR ZERO ! 1293: < * (XR) POINTER TO BUFFER (SCBLK PTR) ! 1294: < * JSR SYSIN CALL TO READ RECORD ! 1295: < * PPM LOC ENDFILE OR NO I/P FILE AFTER SYSXI ! 1296: < * PPM LOC RETURN HERE IF I/O ERROR ! 1297: < * PPM LOC RETURN HERE IF RECORD FORMAT ERROR ! 1298: < * (WA,WB,WC) DESTROYED ! 1299: < EJC ! 1300: < * ! 1301: < * SYSIO -- INPUT/OUTPUT FILE ASSOCIATION ! 1302: < * ! 1303: < SYSIO EXP DEFINE EXTERNAL ENTRY POINT ! 1304: < * ! 1305: < * SEE ALSO SYSFC. ! 1306: < * SYSIO IS CALLED IN RESPONSE TO A SNOBOL4 INPUT OR OUTPUT ! 1307: < * FUNCTION CALL EXCEPT WHEN FILE ARG1 AND FILE ARG2 ! 1308: < * ARE BOTH NULL. ! 1309: < * ITS CALL ALWAYS FOLLOWS IMMEDIATELY AFTER A CALL ! 1310: < * OF SYSFC. IF SYSFC REQUESTED ALLOCATION ! 1311: < * OF AN FCBLK, ITS ADDRESS WILL BE IN WA. ! 1312: < * FOR INPUT FILES, NON-ZERO VALUES OF $R$ SHOULD BE ! 1313: < * COPIED TO WC FOR USE IN ALLOCATING INPUT BUFFERS. IF $R$ ! 1314: < * IS DEFAULTED OR NOT IMPLEMENTED, WC SHOULD BE ZEROISED. ! 1315: < * ONCE A FILE HAS BEEN OPENED, SUBSEQUENT INPUT(),OUTPUT() ! 1316: ! 1317: ! 1318: ! 1319: ! 1320: ! 1321: ! 1322: ! 1323: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 21 ! 1324: ! 1325: ! 1326: < * CALLS IN WHICH THE SECOND ARGUMENT IS IDENTICAL WITH THAT ! 1327: < * IN A PREVIOUS CALL, MERELY ASSOCIATE THE ADDITIONAL ! 1328: < * VARIABLE NAME (FIRST ARGUMENT) TO THE FILE AND DO NOT ! 1329: < * RESULT IN RE-OPENING THE FILE. ! 1330: < * IN SUBSEQUENT ASSOCIATED ACCESSES TO THE FILE A POINTER ! 1331: < * TO ANY FCBLK ALLOCATED WILL BE MADE AVAILABLE. ! 1332: < * ! 1333: < * (XL) FILE ARG1 SCBLK PTR (2ND ARG) ! 1334: < * (XR) FILE ARG2 SCBLK PTR (3RD ARG) ! 1335: < * (WA) FCBLK PTR (0 IF NONE) ! 1336: < * (WB) 0 FOR INPUT, 3 FOR OUTPUT ! 1337: < * JSR SYSIO CALL TO ASSOCIATE FILE ! 1338: < * PPM LOC RETURN HERE IF FILE DOES NOT EXIST ! 1339: < * PPM LOC RETURN IF INPUT/OUTPUT NOT ALLOWED ! 1340: < * (XL) FCBLK POINTER (0 IF NONE) ! 1341: < * (WC) 0 (FOR DEFAULT) OR MAX RECORD LNGTH ! 1342: < * (WA,WB) DESTROYED ! 1343: < * ! 1344: < * THE SECOND ERROR RETURN IS USED IF THE FILE NAMED EXISTS ! 1345: < * BUT INPUT/OUTPUT FROM THE FILE IS NOT ALLOWED. FOR ! 1346: < * EXAMPLE, THE STANDARD OUTPUT FILE MAY BE IN THIS CATEGORY ! 1347: < * AS REGARDS INPUT ASSOCIATION. ! 1348: < EJC ! 1349: < * ! 1350: < * SYSLD -- LOAD EXTERNAL FUNCTION ! 1351: < * ! 1352: < SYSLD EXP DEFINE EXTERNAL ENTRY POINT ! 1353: < * ! 1354: < * SYSLD IS CALLED IN RESPONSE TO THE USE OF THE SNOBOL4 ! 1355: < * LOAD FUNCTION. THE NAMED FUNCTION IS LOADED (WHATEVER ! 1356: < * THIS MEANS), AND A POINTER IS RETURNED. THE POINTER WILL ! 1357: < * BE USED ON SUBSEQUENT CALLS TO THE FUNCTION (SEE SYSEX). ! 1358: < * ! 1359: < * (XR) POINTER TO FUNCTION NAME (SCBLK) ! 1360: < * (XL) POINTER TO LIBRARY NAME (SCBLK) ! 1361: < * JSR SYSLD CALL TO LOAD FUNCTION ! 1362: < * PPM LOC RETURN HERE IF FUNC DOES NOT EXIST ! 1363: < * PPM LOC RETURN HERE IF I/O ERROR ! 1364: < * (XR) POINTER TO LOADED CODE ! 1365: < * ! 1366: < * THE SIGNIFICANCE OF THE POINTER RETURNED IS UP TO THE ! 1367: < * SYSTEM INTERFACE ROUTINE. THE ONLY RESTRICTION IS THAT ! 1368: < * IF THE POINTER IS WITHIN DYNAMIC STORAGE, IT MUST BE ! 1369: < * A PROPER BLOCK POINTER. ! 1370: < EJC ! 1371: < * ! 1372: < * SYSMM -- GET MORE MEMORY ! 1373: < * ! 1374: < SYSMM EXP DEFINE EXTERNAL ENTRY POINT ! 1375: < * ! 1376: < * SYSMM IS CALLED IN AN ATTEMPT TO ALLOCATE MORE DYNAMIC ! 1377: < * MEMORY. THIS MEMORY MUST BE ALLOCATED CONTIGUOUSLY WITH ! 1378: < * THE CURRENT DYNAMIC DATA AREA. ! 1379: < * ! 1380: < * THE AMOUNT ALLOCATED IS UP TO THE SYSTEM TO DECIDE. ANY ! 1381: < * VALUE IS ACCEPTABLE INCLUDING ZERO IF ALLOCATION IS ! 1382: ! 1383: ! 1384: ! 1385: ! 1386: ! 1387: ! 1388: ! 1389: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 22 ! 1390: ! 1391: ! 1392: < * IMPOSSIBLE. ! 1393: < * ! 1394: < * JSR SYSMM CALL TO GET MORE MEMORY ! 1395: < * (XR) NUMBER OF ADDITIONAL WORDS OBTAINED ! 1396: < EJC ! 1397: < * ! 1398: < * SYSMX -- SUPPLY MXLEN ! 1399: < * ! 1400: < SYSMX EXP DEFINE EXTERNAL ENTRY POINT ! 1401: < * ! 1402: < * BECAUSE OF THE METHOD OF GARBAGE COLLECTION, NO SPITBOL ! 1403: < * OBJECT IS ALLOWED TO OCCUPY MORE BYTES OF MEMORY THAN ! 1404: < * THE INTEGER GIVING THE LOWEST ADDRESS OF DYNAMIC ! 1405: < * (GARBAGE COLLECTABLE) MEMORY. MXLEN IS THE NAME USED TO ! 1406: < * REFER TO THIS MAXIMUM LENGTH OF AN OBJECT AND FOR MOST ! 1407: < * USERS OF MOST IMPLEMENTATIONS, PROVIDED DYNAMIC MEMORY ! 1408: < * STARTS AT AN ADDRESS OF AT LEAST A FEW THOUSAND WORDS, ! 1409: < * THERE IS NO PROBLEM. ! 1410: < * IF THE DEFAULT STARTING ADDRESS IS LESS THAN SAY 10000 OR ! 1411: < * 20000, THEN A LOAD TIME OPTION SHOULD BE PROVIDED WHERE A ! 1412: < * USER CAN REQUEST THAT HE BE ABLE TO CREATE LARGER ! 1413: < * OBJECTS. THIS ROUTINE INFORMS SPITBOL OF THIS REQUEST IF ! 1414: < * ANY. THE VALUE RETURNED IS EITHER AN INTEGER ! 1415: < * REPRESENTING THE DESIRED VALUE OF MXLEN (AND HENCE THE ! 1416: < * MINIMUM DYNAMIC STORE ADDRESS WHICH MAY RESULT IN ! 1417: < * NON-USE OF SOME STORE) OR ZERO IF A DEFAULT IS ACCEPTABLE ! 1418: < * IN WHICH MXLEN IS SET TO THE LOWEST ADDRESS ALLOCATED ! 1419: < * TO DYNAMIC STORE BEFORE COMPILATION STARTS. ! 1420: < * IF A NON-ZERO VALUE IS RETURNED, THIS IS USED FOR KEYWORD ! 1421: < * MAXLNGTH. OTHERWISE THE INITIAL LOW ADDRESS OF DYNAMIC ! 1422: < * MEMORY IS USED FOR THIS KEYWORD. ! 1423: < * ! 1424: < * JSR SYSMX CALL TO GET MXLEN ! 1425: < * (WA) EITHER MXLEN OR 0 FOR DEFAULT ! 1426: < EJC ! 1427: < * ! 1428: < * SYSOU -- OUTPUT RECORD ! 1429: < * ! 1430: < SYSOU EXP DEFINE EXTERNAL ENTRY POINT ! 1431: < * ! 1432: < * SYSOU IS USED TO WRITE A RECORD TO A FILE PREVIOUSLY ! 1433: < * ASSOCIATED WITH A SYSIO CALL. ! 1434: < * ! 1435: < * (WA) PTR TO FCBLK OR ZERO ! 1436: < * (XR) RECORD TO BE WRITTEN (SCBLK) ! 1437: < * JSR SYSOU CALL TO OUTPUT RECORD ! 1438: < * PPM LOC FILE FULL OR NO FILE AFTER SYSXI ! 1439: < * PPM LOC RETURN HERE IF I/O ERROR ! 1440: < * (WA,WB,WC) DESTROYED ! 1441: < * ! 1442: < * NOTE THAT IT IS THE SYSOU CALL (NOT THE SYSIO CALL) WHICH ! 1443: < * CAUSES THE FILE TO BE OPENED AS REQUIRED FOR THE FIRST ! 1444: < * RECORD OUTPUT TO THE FILE. ! 1445: < EJC ! 1446: < * ! 1447: < * SYSPI -- PRINT ON INTERACTIVE CHANNEL ! 1448: ! 1449: ! 1450: ! 1451: ! 1452: ! 1453: ! 1454: ! 1455: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 23 ! 1456: ! 1457: ! 1458: < * ! 1459: < SYSPI EXP DEFINE EXTERNAL ENTRY POINT ! 1460: < * ! 1461: < * IF SPITBOL IS RUN FROM AN ONLINE TERMINAL, OSINT CAN ! 1462: < * REQUEST THAT MESSAGES SUCH AS COPIES OF COMPILATION ! 1463: < * ERRORS BE SENT TO THE TERMINAL (SEE SYSPP). IF RELEVANT ! 1464: < * REPLY WAS MADE BY SYSPP THEN SYSPI IS CALLED TO SEND SUCH ! 1465: < * MESSAGES TO THE INTERACTIVE CHANNEL. ! 1466: < * SYSPI IS ALSO USED FOR SENDING OUTPUT TO THE TERMINAL ! 1467: < * THROUGH THE SPECIAL VARIABLE NAME, TERMINAL. ! 1468: < * ! 1469: < * (XR) PTR TO LINE BUFFER (SCBLK) ! 1470: < * (WA) LINE LENGTH ! 1471: < * JSR SYSPI CALL TO PRINT LINE ! 1472: < * PPM LOC FAILURE RETURN ! 1473: < * (WA,WB) DESTROYED ! 1474: < EJC ! 1475: < * ! 1476: < * SYSPP -- OBTAIN PRINT PARAMETERS ! 1477: < * ! 1478: < SYSPP EXP DEFINE EXTERNAL ENTRY POINT ! 1479: < * ! 1480: < * SYSPP IS CALLED ONCE DURING COMPILATION TO OBTAIN ! 1481: < * PARAMETERS REQUIRED FOR CORRECT PRINTED OUTPUT FORMAT ! 1482: < * AND TO SELECT OTHER OPTIONS. IT MAY ALSO BE CALLED AGAIN ! 1483: < * AFTER SYSXI WHEN A LOAD MODULE IS RESUMED. IN THIS ! 1484: < * CASE THE VALUE RETURNED IN WA MAY BE LESS THAN OR EQUAL ! 1485: < * TO THAT RETURNED IN INITIAL CALL BUT MAY NOT BE ! 1486: < * GREATER. ! 1487: < * THE INFORMATION RETURNED IS - ! 1488: < * 1. LINE LENGTH IN CHARS FOR STANDARD PRINT FILE ! 1489: < * 2. NO OF LINES/PAGE. 0 IS PREFERABLE FOR A NON-PAGED ! 1490: < * DEVICE (E.G. ONLINE TERMINAL) IN WHICH CASE LISTING ! 1491: < * PAGE THROWS ARE SUPPRESSED AND PAGE HEADERS ! 1492: < * RESULTING FROM -TITLE,-STITL LINES ARE KEPT SHORT. ! 1493: < * 3. AN INITIAL -NOLIST OPTION TO SUPPRESS LISTING UNLESS ! 1494: < * THE PROGRAM CONTAINS AN EXPLICIT -LIST. ! 1495: < * 4. OPTIONS TO SUPPRESS LISTING OF COMPILATION AND/OR ! 1496: < * EXECUTION STATS (USEFUL FOR ESTABLISHED PROGRAMS) - ! 1497: < * COMBINED WITH 3. GIVES POSSIBILITY OF LISTING ! 1498: < * FILE NEVER BEING OPENED. ! 1499: < * 5. OPTION TO HAVE COPIES OF ERRORS SENT TO AN ! 1500: < * INTERACTIVE CHANNEL IN ADDITION TO STANDARD PRINTER. ! 1501: < * 6. OPTION TO KEEP PAGE HEADERS SHORT (E.G. IF LISTING ! 1502: < * TO AN ONLINE TERMINAL). ! 1503: < * 7. AN OPTION TO CHOOSE EXTENDED OR COMPACT LISTING ! 1504: < * FORMAT. IN THE FORMER A PAGE EJECT AND IN THE LATTER ! 1505: < * A FEW LINE FEEDS PRECEDE THE PRINTING OF EACH ! 1506: < * OF-- LISTING, COMPILATION STATISTICS, EXECUTION ! 1507: < * OUTPUT AND EXECUTION STATISTICS. ! 1508: < * 8. AN OPTION TO SUPPRESS EXECUTION AS THOUGH A ! 1509: < * -NOEXECUTE CARD WERE SUPPLIED. ! 1510: < * 9. AN OPTION TO REQUEST THAT NAME /TERMINAL/ BE PRE- ! 1511: < * ASSOCIATED TO AN ONLINE TERMINAL VIA SYSPI AND SYSRI ! 1512: < * 10. AN INTERMEDIATE (STANDARD) LISTING OPTION REQUIRING ! 1513: < * THAT PAGE EJECTS OCCUR IN SOURCE LISTINGS. REDUNDANT ! 1514: ! 1515: ! 1516: ! 1517: ! 1518: ! 1519: ! 1520: ! 1521: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 24 ! 1522: ! 1523: ! 1524: < * IF EXTENDED OPTION CHOSEN BUT PARTIALLY EXTENDS ! 1525: < * COMPACT OPTION. ! 1526: < * 11. OPTION TO SUPPRESS SYSID IDENTIFICATION. ! 1527: < * ! 1528: < * JSR SYSPP CALL TO GET PRINT PARAMETERS ! 1529: < * (WA) PRINT LINE LENGTH IN CHARS ! 1530: < * (WB) NUMBER OF LINES/PAGE ! 1531: < * (WC) BITS VALUE ...JIHGFEDCBA WHERE ! 1532: < * A = 1 TO SEND ERROR COPY TO INT.CH. ! 1533: < * B = 1 MEANS STD PRINTER IS INT. CH. ! 1534: < * C = 1 FOR -NOLIST OPTION ! 1535: < * D = 1 TO SUPPRESS COMPILN. STATS ! 1536: < * E = 1 TO SUPPRESS EXECN. STATS ! 1537: < * F = 1/0 FOR EXTNDED/COMPACT LISTING ! 1538: < * G = 1 FOR -NOEXECUTE ! 1539: < * H = 1 PRE-ASSOCIATE /TERMINAL/ ! 1540: < * I = 1 FOR STANDARD LISTING OPTION. ! 1541: < * J = 1 SUPPRESSES LISTING HEADER ! 1542: < EJC ! 1543: < * ! 1544: < * SYSPR -- PRINT LINE ON STANDARD OUTPUT FILE ! 1545: < * ! 1546: < SYSPR EXP DEFINE EXTERNAL ENTRY POINT ! 1547: < * ! 1548: < * SYSPR IS USED TO PRINT A SINGLE LINE ON THE STANDARD ! 1549: < * OUTPUT FILE. ! 1550: < * ! 1551: < * (XR) POINTER TO LINE BUFFER (SCBLK) ! 1552: < * (WA) LINE LENGTH ! 1553: < * JSR SYSPR CALL TO PRINT LINE ! 1554: < * PPM LOC TOO MUCH O/P OR NO FILE AFTER SYSXI ! 1555: < * (WA,WB) DESTROYED ! 1556: < * ! 1557: < * THE BUFFER POINTED TO IS THE LENGTH OBTAINED FROM THE ! 1558: < * SYSPP CALL AND IS FILLED OUT WITH TRAILING BLANKS. THE ! 1559: < * VALUE IN WA IS THE ACTUAL LINE LENGTH WHICH MAY BE LESS ! 1560: < * THAN THE MAXIMUM LINE LENGTH POSSIBLE. THERE IS NO SPACE ! 1561: < * CONTROL ASSOCIATED WITH THE LINE, ALL LINES ARE PRINTED ! 1562: < * SINGLE SPACED. NOTE THAT NULL LINES (WA=0) ARE POSSIBLE ! 1563: < * IN WHICH CASE A BLANK LINE IS TO BE PRINTED. ! 1564: < * ! 1565: < * THE ERROR EXIT IS USED FOR SYSTEMS WHICH LIMIT THE AMOUNT ! 1566: < * OF PRINTED OUTPUT. IF POSSIBLE, PRINTING SHOULD BE ! 1567: < * PERMITTED AFTER THIS CONDITION HAS BEEN SIGNALLED ONCE TO ! 1568: < * ALLOW FOR DUMP AND OTHER DIAGNOSTIC INFORMATION. ! 1569: < * ASSUMING THIS TO BE POSSIBLE, SPITBOL MAY MAKE MORE SYSPR ! 1570: < * CALLS. IF THE ERROR RETURN OCCURS ANOTHER TIME, EXECUTION ! 1571: < * IS TERMINATED BY A CALL OF SYSEJ WITH ENDING CODE 998. ! 1572: < EJC ! 1573: < * ! 1574: < * SYSRD -- READ RECORD FROM STANDARD INPUT FILE ! 1575: < * ! 1576: < SYSRD EXP DEFINE EXTERNAL ENTRY POINT ! 1577: < * ! 1578: < * SYSRD IS USED TO READ A RECORD FROM THE STANDARD INPUT ! 1579: < * FILE. THE BUFFER PROVIDED IS AN SCBLK FOR A STRING THE ! 1580: ! 1581: ! 1582: ! 1583: ! 1584: ! 1585: ! 1586: ! 1587: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 25 ! 1588: ! 1589: ! 1590: < * LENGTH OF WHICH IN CHARACTERS IS GIVEN IN WC, THIS ! 1591: < * CORRESPONDING TO THE MAXIMUM LENGTH OF STRING WHICH ! 1592: < * SPITBOL IS PREPARED TO RECEIVE. AT COMPILE TIME IT ! 1593: < * CORRESPONDS TO XXX IN THE MOST RECENT -INXXX CARD ! 1594: < * (DEFAULT 72) AND AT EXECUTION TIME TO THE MOST RECENT ! 1595: < * ,R$R$ (RECORD LENGTH) IN THE THIRD ARG OF AN INPUT() ! 1596: < * STATEMENT FOR THE STANDARD INPUT FILE (DEFAULT 80). ! 1597: < * IF FEWER THAN (WC) CHARACTERS ARE READ, THE LENGTH ! 1598: < * FIELD OF THE SCBLK MUST BE ADJUSTED BEFORE RETURNING ! 1599: < * UNLESS THE BUFFER IS RIGHT PADDED WITH ZEROES. ! 1600: < * IT IS ALSO PERMISSIBLE TO TAKE THE ALTERNATIVE RETURN ! 1601: < * AFTER SUCH AN ADJUSTMENT HAS BEEN MADE. ! 1602: < * SPITBOL MAY CONTINUE TO MAKE CALLS AFTER AN ENDFILE ! 1603: < * RETURN SO THIS ROUTINE SHOULD BE PREPARED TO MAKE ! 1604: < * REPEATED ENDFILE RETURNS. ! 1605: < * ! 1606: < * (XR) POINTER TO BUFFER (SCBLK PTR) ! 1607: < * (WC) LENGTH OF BUFFER IN CHARACTERS ! 1608: < * JSR SYSRD CALL TO READ LINE ! 1609: < * PPM LOC ENDFILE OR NO I/P FILE AFTER SYSXI ! 1610: < * (WA,WB,WC) DESTROYED ! 1611: < EJC ! 1612: < * ! 1613: < * SYSRI -- READ RECORD FROM INTERACTIVE CHANNEL ! 1614: < * ! 1615: < SYSRI EXP DEFINE EXTERNAL ENTRY POINT ! 1616: < * ! 1617: < * READS A RECORD FROM ONLINE TERMINAL FOR SPITBOL VARIABLE, ! 1618: < * TERMINAL. IF ONLINE TERMINAL IS UNAVAILABLE THEN CODE THE ! 1619: < * ENDFILE RETURN ONLY. ! 1620: < * THE BUFFER PROVIDED IS OF LENGTH 120 CHARACTERS. SYSRI ! 1621: < * SHOULD REPLACE THE COUNT IN THE SECOND WORD OF THE SCBLK ! 1622: < * BY THE ACTUAL CHARACTER COUNT UNLESS BUFFER IS RIGHT ! 1623: < * PADDED WITH ZEROES. ! 1624: < * IT IS ALSO PERMISSIBLE TO TAKE THE ALTERNATIVE ! 1625: < * RETURN AFTER ADJUSTING THE COUNT. ! 1626: < * THE END OF FILE RETURN MAY BE USED IF THIS MAKES ! 1627: < * SENSE ON THE TARGET MACHINE (E.G. IF THERE IS AN ! 1628: < * EOF CHARACTER.) ! 1629: < * ! 1630: < * (XR) PTR TO 120 CHAR BUFFER (SCBLK PTR) ! 1631: < * JSR SYSRI CALL TO READ LINE FROM TERMINAL ! 1632: < * PPM LOC END OF FILE RETURN ! 1633: < * (WA,WB,WC) MAY BE DESTROYED ! 1634: < EJC ! 1635: < * ! 1636: < * SYSRW -- REWIND FILE ! 1637: < * ! 1638: < SYSRW EXP DEFINE EXTERNAL ENTRY POINT ! 1639: < * ! 1640: < * SYSRW IS USED TO REWIND A FILE I.E. REPOSITION THE FILE ! 1641: < * AT THE START BEFORE THE FIRST RECORD. THE FILE SHOULD BE ! 1642: < * CLOSED AND THE NEXT READ OR WRITE CALL WILL OPEN THE ! 1643: < * FILE AT THE START. ! 1644: < * ! 1645: < * (WA) PTR TO FCBLK OR ZERO ! 1646: ! 1647: ! 1648: ! 1649: ! 1650: ! 1651: ! 1652: ! 1653: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 26 ! 1654: ! 1655: ! 1656: < * (XR) REWIND ARG (SCBLK PTR) ! 1657: < * JSR SYSRW CALL TO REWIND FILE ! 1658: < * PPM LOC RETURN HERE IF FILE DOES NOT EXIST ! 1659: < * PPM LOC RETURN HERE IF REWIND NOT ALLOWED ! 1660: < * PPM LOC RETURN HERE IF I/O ERROR ! 1661: < EJC ! 1662: --- ! 1663: > SYSBX EXP E,0 ! 1664: > .IF .CSCI ! 1665: > SYSCI EXP E,0 ! 1666: > .FI ! 1667: > SYSDT EXP E,0 ! 1668: > SYSEC EXP E,2 ! 1669: > SYSEF EXP E,2 ! 1670: > SYSEJ EXP E,0 ! 1671: > SYSEM EXP E,0 ! 1672: > SYSEN EXP E,2 ! 1673: > SYSEP EXP E,2 ! 1674: > .IF .CNLD ! 1675: > .ELSE ! 1676: > SYSEX EXP E,1 ! 1677: > .FI ! 1678: > SYSHS EXP E,2 ! 1679: > SYSID EXP E,0 ! 1680: > SYSIL EXP E,0 ! 1681: > SYSIN EXP E,2 ! 1682: > SYSIO EXP E,2 ! 1683: > .IF .CNLD ! 1684: > .ELSE ! 1685: > SYSLD EXP E,2 ! 1686: > .FI ! 1687: > SYSMM EXP E,0 ! 1688: > SYSMX EXP E,0 ! 1689: > SYSOU EXP E,2 ! 1690: > SYSPI EXP E,2 ! 1691: > SYSPP EXP E,0 ! 1692: > SYSPR EXP E,2 ! 1693: > SYSRD EXP E,2 ! 1694: > SYSRI EXP E,2 ! 1695: > SYSSC EXP E,2 ! 1696: 1252,1272c205 ! 1697: < * ! 1698: < * SYSST -- SET FILE POINTER ! 1699: < * ! 1700: < SYSST EXP DEFINE EXTERNAL ENTRY POINT ! 1701: < * ! 1702: < * SYSST IS CALLED TO CHANGE THE POSITION OF A FILE ! 1703: < * POINTER. THIS IS ACCOMPLISHED IN A SYSTEM DEPENDENT ! 1704: < * MANNER, AND THUS THE 2ND AND 3RD ARGUMENTS ARE PASSED ! 1705: < * UNCONVERTED. ! 1706: < * ! 1707: < * (WA) FCBLK POINTER ! 1708: < * (WB) 2ND ARGUMENT ! 1709: < * (WC) 3RD ARGUMENT ! 1710: < * JSR SYSST CALL TO SET FILE POINTER ! 1711: < * PPM LOC RETURN HERE IF INVALID 2ND ARG ! 1712: ! 1713: ! 1714: ! 1715: ! 1716: ! 1717: ! 1718: ! 1719: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 27 ! 1720: ! 1721: ! 1722: < * PPM LOC RETURN HERE IF INVALID 3RD ARG ! 1723: < * PPM LOC RETURN HERE IF FILE DOES NOT EXIST ! 1724: < * PPM LOC RETURN HERE IF SET NOT ALLOWED ! 1725: < * PPM LOC RETURN HERE IF I/O ERROR ! 1726: < * ! 1727: < EJC ! 1728: --- ! 1729: > SYSST EXP E,2 ! 1730: 1274,1316c207,212 ! 1731: < * ! 1732: < * SYSTM -- GET EXECUTION TIME SO FAR ! 1733: < * ! 1734: < SYSTM EXP DEFINE EXTERNAL ENTRY POINT ! 1735: < * ! 1736: < * SYSTM IS USED TO OBTAIN THE AMOUNT OF EXECUTION TIME ! 1737: < * USED SO FAR SINCE SPITBOL WAS GIVEN CONTROL. THE UNITS ! 1738: < * ARE DESCRIBED AS MILLISECONDS IN THE SPITBOL OUTPUT, BUT ! 1739: < * THE EXACT MEANING IS SYSTEM DEPENDENT. WHERE APPROPRIATE, ! 1740: < * THIS VALUE SHOULD RELATE TO PROCESSOR RATHER THAN CLOCK ! 1741: < * TIMING VALUES. ! 1742: < * ! 1743: < * JSR SYSTM CALL TO GET TIMER VALUE ! 1744: < * (IA) TIME SO FAR IN MILLISECONDS ! 1745: < EJC ! 1746: < * ! 1747: < * SYSTT -- TRACE TOGGLE ! 1748: < * ! 1749: < SYSTT EXP DEFINE EXTERNAL ENTRY POINT ! 1750: < * ! 1751: < * CALLED BY SPITBOL FUNCTION TRACE() WITH NO ARGS TO ! 1752: < * TOGGLE THE SYSTEM TRACE SWITCH. THIS PERMITS TRACING OF ! 1753: < * LABELS IN SPITBOL CODE TO BE TURNED ON OR OFF. ! 1754: < * ! 1755: < * JSR SYSTT CALL TO TOGGLE TRACE SWITCH ! 1756: < EJC ! 1757: < * ! 1758: < * SYSUL -- UNLOAD EXTERNAL FUNCTION ! 1759: < * ! 1760: < SYSUL EXP DEFINE EXTERNAL ENTRY POINT ! 1761: < * ! 1762: < * SYSUL IS USED TO UNLOAD A FUNCTION PREVIOUSLY ! 1763: < * LOADED WITH A CALL TO SYSLD. ! 1764: < * ! 1765: < * (XR) PTR TO CONTROL BLOCK (EFBLK) ! 1766: < * JSR SYSUL CALL TO UNLOAD FUNCTION ! 1767: < * ! 1768: < * THE FUNCTION CANNOT BE CALLED FOLLOWING A SYSUL CALL ! 1769: < * UNTIL ANOTHER SYSLD CALL IS MADE FOR THE SAME FUNCTION. ! 1770: < * ! 1771: < * THE EFBLK CONTAINS THE FUNCTION CODE POINTER AND ALSO A ! 1772: < * POINTER TO THE VRBLK CONTAINING THE FUNCTION NAME (SEE ! 1773: < * DEFINITIONS AND DATA STRUCTURES SECTION). ! 1774: --- ! 1775: > SYSTM EXP E,0 ! 1776: > SYSTT EXP E,0 ! 1777: > .IF .CNLD ! 1778: ! 1779: ! 1780: ! 1781: ! 1782: ! 1783: ! 1784: ! 1785: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 28 ! 1786: ! 1787: ! 1788: > .ELSE ! 1789: > SYSUL EXP E,0 ! 1790: > .FI ! 1791: 1319,1405c215 ! 1792: < EJC ! 1793: < * ! 1794: < * SYSXI -- EXIT TO PRODUCE LOAD MODULE ! 1795: < * ! 1796: < SYSXI EXP DEFINE EXTERNAL ENTRY POINT ! 1797: < * ! 1798: < * WHEN SYSXI IS CALLED, XL CONTAINS EITHER A STRING POINTER ! 1799: < * OR ZERO. IN THE FORMER CASE, THE STRING GIVES THE ! 1800: < * CHARACTER NAME OF A PROGRAM. THE INTENTION IS THAT ! 1801: < * SPITBOL EXECUTION SHOULD BE TERMINATED FORTHWITH AND ! 1802: < * THE NAMED PROGRAM LOADED AND EXECUTED. THIS TYPE OF CHAIN ! 1803: < * EXECUTION IS VERY SYSTEM DEPENDENT AND IMPLEMENTORS MAY ! 1804: < * CHOOSE TO OMIT IT OR FIND IT IMPOSSIBLE TO PROVIDE. ! 1805: < * IF (XL) IS ZERO,IA CONTAINS ONE OF THE FOLLOWING INTEGERS ! 1806: < * ! 1807: < * -1, -2, -3 ! 1808: < * CREATE IF POSSIBLE A LOAD MODULE CONTAINING ONLY THE ! 1809: < * IMPURE AREA OF MEMORY WHICH NEEDS TO BE LOADED WITH ! 1810: < * A COMPATIBLE PURE SEGMENT FOR SUBSEQUENT EXECUTIONS. ! 1811: < * VERSION NUMBERS TO CHECK COMPATIBILITY SHOULD BE ! 1812: < * KEPT IN BOTH SEGMENTS AND CHECKED ON LOADING. ! 1813: < * TO ASSIST WITH THIS CHECK, (XR) ON ENTRY IS A ! 1814: < * POINTER TO AN SCBLK CONTAINING THE SPITBOL MAJOR ! 1815: < * VERSION NUMBER V.V (SEE SYSID). ! 1816: < * ! 1817: < * 0 IF POSSIBLE, RETURN CONTROL TO JOB CONTROL ! 1818: < * COMMAND LEVEL. THE EFFECT IF AVAILABLE WILL BE ! 1819: < * SYSTEM DEPENDENT. ! 1820: < * ! 1821: < * +1, +2, +3 ! 1822: < * CREATE IF POSSIBLE A LOAD MODULE FROM ALL OF ! 1823: < * MEMORY. IT SHOULD BE POSSIBLE TO LOAD AND EXECUTE ! 1824: < * THIS MODULE DIRECTLY. ! 1825: < * ! 1826: < * IN THE CASE OF SAVED LOAD MODULES, THE STATUS OF OPEN ! 1827: < * FILES IS NOT PRESERVED AND IMPLEMENTORS MAY CHOOSE TO ! 1828: < * OFFER MEANS OF ATTACHING FILES BEFORE EXECUTION OF LOAD ! 1829: < * MODULES STARTS OR LEAVE IT TO THE USER TO INCLUDE ! 1830: < * SUITABLE INPUT(), OUTPUT() CALLS IN HIS PROGRAM. ! 1831: < * SYSXI SHOULD MAKE A NOTE THAT NO I/O CHANNELS, ! 1832: < * INCLUDING STANDARD FILES, HAVE FILES ATTACHED SO THAT ! 1833: < * CALLS OF SYSIN, SYSOU, SYSPR, SYSRD SHOULD FAIL UNLESS ! 1834: < * NEW ASSOCIATIONS ARE MADE FOR THE LOAD MODULE. ! 1835: < * AT LEAST IN THE CASE OF THE STANDARD OUTPUT FILE, IT IS ! 1836: < * RECOMMENDED THAT EITHER THE USER BE REQUIRED TO ATTACH ! 1837: < * A FILE OR THAT A DEFAULT FILE IS ATTACHED, SINCE THE ! 1838: < * PROBLEM OF ERROR MESSAGES GENERATED BY THE LOAD MODULE ! 1839: < * IS OTHERWISE SEVERE. AS A LAST RESORT, IF SPITBOL ! 1840: < * ATTEMPTS TO WRITE TO THE STANDARD OUTPUT FILE AND GETS A ! 1841: < * REPLY INDICATING THAT SUCH OUPUT IS UNACCEPTABLE IT STOPS ! 1842: < * BY USING AN ENTRY TO SYSEJ WITH ENDING CODE 998. ! 1843: < * AS DESCRIBED BELOW, PASSING OF SOME ARGUMENTS MAKES IT ! 1844: ! 1845: ! 1846: ! 1847: ! 1848: ! 1849: ! 1850: ! 1851: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 29 ! 1852: ! 1853: ! 1854: < * CLEAR THAT LOAD MODULE WILL USE A STANDARD OUTPUT FILE. ! 1855: < * ! 1856: < * IF USE IS MADE OF FCBLKS FOR I/O ASSOCIATION, SPITBOL ! 1857: < * BUILDS A CHAIN SO THAT THOSE IN USE MAY BE FOUND IN SYSXI ! 1858: < * AND SYSEJ. THE NODES ARE 4 WORDS LONG. THIRD WORD ! 1859: < * CONTAINS LINK TO NEXT NODE OR 0, FOURTH WORD CONTAINS ! 1860: < * FCBLK POINTER. ! 1861: < EJC ! 1862: < * ! 1863: < * SYSXI (CONTINUED) ! 1864: < * ! 1865: < * (XL) ZERO OR SCBLK PTR ! 1866: < * (XR) PTR TO V.V SCBLK ! 1867: < * (IA) SIGNED INTEGER ARGUMENT ! 1868: < * (WB) 0 OR PTR TO HEAD OF FCBLK CHAIN ! 1869: < * JSR SYSXI CALL TO EXIT ! 1870: < * PPM LOC REQUESTED ACTION NOT POSSIBLE ! 1871: < * PPM LOC ACTION CAUSED IRRECOVERABLE ERROR ! 1872: < * (REGISTERS) SHOULD BE PRESERVED OVER CALL ! 1873: < * ! 1874: < * LOADING AND RUNNING THE LOAD MODULE OR RETURNING FROM ! 1875: < * JCL COMMAND LEVEL CAUSES EXECUTION TO RESUME AT THE POINT ! 1876: < * AFTER THE ERROR RETURNS WHICH FOLLOW THE CALL OF SYSXI. ! 1877: < * THE VALUE PASSED AS EXIT ARGUMENT IS USED TO INDICATE ! 1878: < * OPTIONS REQUIRED ON RESUMPTION OF LOAD MODULE. ! 1879: < * +1 OR -1 REQUIRE THAT ON RESUMPTION, SYSID AND SYSPP BE ! 1880: < * CALLED AND A HEADING PRINTED ON THE STANDARD OUTPUT FILE. ! 1881: < * +2 OR -2 INDICATE THAT SYSPP WILL BE CALLED BUT NOT SYSID ! 1882: < * AND NO HEADING WILL BE PUT ON STANDARD OUTPUT FILE. ! 1883: < * ABOVE OPTIONS HAVE THE OBVIOUS IMPLICATION THAT A ! 1884: < * STANDARD O/P FILE MUST BE PROVIDED FOR THE LOAD MODULE. ! 1885: < * +3 OR -3 INDICATE CALLS OF NEITHER SYSID NOR SYSPP ! 1886: < * AND NO HEADING WILL BE PLACED ON STANDARD OUTPUT FILE. ! 1887: < * NO RETURN FROM SYSXI IS POSSIBLE IF ANOTHER PROGRAM ! 1888: < * IS LOADED AND ENTERED. ! 1889: --- ! 1890: > SYSXI EXP E,2 ! 1891: 1407a218 ! 1892: > * NAME GLOBAL LABELS, INTERNAL PROCEDURES AND ROUTINES. ! 1893: 1409,1410c220,228 ! 1894: < * INTRODUCE THE INTERNAL PROCEDURES. ! 1895: < * ! 1896: --- ! 1897: > CMPCE GLB ! 1898: > CMPEL GLB ! 1899: > CMPLE GLB ! 1900: > CMPSE GLB ! 1901: > EVLXF GLB ! 1902: > EVLXN GLB ! 1903: > EVLXV GLB ! 1904: > LCNXE GLB ! 1905: > TRXQR GLB ! 1906: 1420d237 ! 1907: < APNDB INP E,2 ! 1908: 1428a246 ! 1909: > CBLCK INP N,1 ! 1910: ! 1911: ! 1912: ! 1913: ! 1914: ! 1915: ! 1916: ! 1917: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 30 ! 1918: ! 1919: ! 1920: 1437c255 ! 1921: < COPYB INP N,1 ! 1922: --- ! 1923: > COPND INP E,0 ! 1924: 1439d256 ! 1925: < DTACH INP E,0 ! 1926: 1444c261 ! 1927: < EVALI INP R,4 ! 1928: --- ! 1929: > EVALI INP R,3 ! 1930: 1446c263 ! 1931: < EVALS INP R,3 ! 1932: --- ! 1933: > EVALS INP R,2 ! 1934: 1453,1455d269 ! 1935: < .IF .CULC ! 1936: < FLSTG INP R,0 ! 1937: < .FI ! 1938: 1458a273,276 ! 1939: > .IF .CNBF ! 1940: > .ELSE ! 1941: > GTBUF INP E,1 ! 1942: > .FI ! 1943: 1481,1483c299,300 ! 1944: < IOFCB INP N,2 ! 1945: < IOPPF INP N,0 ! 1946: < IOPUT INP N,6 ! 1947: --- ! 1948: > IOFTG INP N,1 ! 1949: > IOPUT INP N,4 ! 1950: 1500a318 ! 1951: > PRTCF INP E,0 ! 1952: 1502,1503c320,321 ! 1953: < PRTIC INP E,0 ! 1954: < PRTIS INP E,0 ! 1955: --- ! 1956: > PRTFB INP E,0 ! 1957: > PRTFH INP R,0 ! 1958: 1506,1507d323 ! 1959: < PRTMX INP E,0 ! 1960: < PRTNL INP R,0 ! 1961: 1511a328 ! 1962: > PRTSF INP E,0 ! 1963: 1515c332 ! 1964: < PRTTR INP E,0 ! 1965: --- ! 1966: > PRTVF INP E,0 ! 1967: 1517a335,336 ! 1968: > PTTFH INP E,0 ! 1969: > PTTST INP E,0 ! 1970: 1522a342,345 ! 1971: > .IF .CASL ! 1972: > SBSCC INP E,0 ! 1973: > SBSTG INP E,0 ! 1974: > .FI ! 1975: 1529c352 ! 1976: ! 1977: ! 1978: ! 1979: ! 1980: ! 1981: ! 1982: ! 1983: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 31 ! 1984: ! 1985: ! 1986: < SORTA INP N,0 ! 1987: --- ! 1988: > SORTA INP N,1 ! 1989: 1532c355 ! 1990: < SORTH INP E,0 ! 1991: --- ! 1992: > SORTH INP N,0 ! 1993: 1535c358 ! 1994: < TRACE INP N,2 ! 1995: --- ! 1996: > TRACE INP N,3 ! 1997: 1536a360 ! 1998: > TRCHN INP E,1 ! 1999: 1541,1543d364 ! 2000: < * ! 2001: < * INTRODUCE THE INTERNAL ROUTINES ! 2002: < * ! 2003: 1545a367,368 ! 2004: > EROSI INR ! 2005: > ERROR INR ! 2006: 1560a384 ! 2007: > INITL INR ! 2008: 1562a387 ! 2009: > STAKV INR ! 2010: 1567,1568d391 ! 2011: < SYSAB INR ! 2012: < SYSTU INR ! 2013: 1569a393,395 ! 2014: > * THIS SECTION CONTAINS ALL SYMBOL DEFINITIONS AND ALSO ! 2015: > * PICTURES OF ALL DATA STRUCTURES USED IN THE SYSTEM. ! 2016: > * ! 2017: 1577a404,407 ! 2018: > * NOTE THAT EVEN IF CONDITIONAL ASSEMBLY IS USED TO OMIT ! 2019: > * SOME FEATURE (E.G. REAL ARITHMETIC) A FULL SET OF CFP$- ! 2020: > * VALUES MUST BE SUPPLIED. USE DUMMY VALUES IF GENUINE ! 2021: > * ONES ARE NOT NEEDED. ! 2022: 1581c411 ! 2023: < CFP$B EQU * BYTES/WORD ADDRESSING FACTOR ! 2024: --- ! 2025: > CFP$B EQU * BAUS/WORD ADDRESSING FACTOR ! 2026: 1585c415 ! 2027: < CFP$F EQU * OFFSET IN BYTES TO CHARS IN ! 2028: --- ! 2029: > CFP$F EQU * OFFSET IN BAUS TO CHARS IN ! 2030: 1594,1601d423 ! 2031: < * THE FOLLOWING DEFINITIONS REQUIRE THE SUPPLY OF EITHER ! 2032: < * A SINGLE PARAMETER IF REAL ARITHMETIC IS OMITTED OR ! 2033: < * THREE PARAMETERS IF REAL ARITHMETIC IS INCLUDED. ! 2034: < * ! 2035: < .IF .CNRA ! 2036: < NSTMX EQU * NO. OF DECIMAL DIGITS IN CFP$M ! 2037: < .ELSE ! 2038: < * ! 2039: 1606,1613d427 ! 2040: < CFP$X EQU * MAX DIGITS IN REAL EXPONENT ! 2041: < * ! 2042: ! 2043: ! 2044: ! 2045: ! 2046: ! 2047: ! 2048: ! 2049: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 32 ! 2050: ! 2051: ! 2052: < MXDGS EQU CFP$S+CFP$X MAX DIGITS IN REAL NUMBER ! 2053: < * ! 2054: < NSTMX EQU MXDGS+5 MAX SPACE FOR REAL (FOR +0.E+) ! 2055: < .FI ! 2056: < .IF .CUCF ! 2057: < * ! 2058: 1620c434,439 ! 2059: < .FI ! 2060: --- ! 2061: > * ! 2062: > CFP$X EQU * MAX DIGITS IN REAL EXPONENT ! 2063: > * ! 2064: > MXDGS EQU CFP$S+CFP$X MAX DIGITS IN REAL NUMBER ! 2065: > * ! 2066: > NSTMX EQU MXDGS+5 MAX SPACE FOR REAL (FOR +0.E+) ! 2067: 1759a579 ! 2068: > * THEY ARE ALL UNDER CONDITIONAL ASSEMBLY. ! 2069: 1798a619,620 ! 2070: > .IF .CASL ! 2071: > DFA$A EQU CH$$A-CH$LA DIFF BETWEEN LC AND UC LETTERS ! 2072: 1800,1807d621 ! 2073: < * IF A DELIMITER OTHER THAN CH$CM MUST BE USED IN ! 2074: < * THE THIRD ARGUMENT OF INPUT(),OUTPUT() THEN .CIOD SHOULD ! 2075: < * BE DEFINED AND A PARAMETER SUPPLIED FOR IODEL. ! 2076: < * ! 2077: < .IF .CIOD ! 2078: < IODEL EQU * ! 2079: < .ELSE ! 2080: < IODEL EQU CH$CM ! 2081: 1927c741,742 ! 2082: < BL$CT EQU BL$CM+1 CTBLK ! 2083: --- ! 2084: > BL$CO EQU BL$CM+1 COBLK ! 2085: > BL$CT EQU BL$CO+1 CTBLK ! 2086: 2030,2033d844 ! 2087: < .IF .CNBF ! 2088: < .ELSE ! 2089: < * BCBLK BUFFER CONTROL BLOCK ! 2090: < .FI ! 2091: 2079c890 ! 2092: < ARLEN EQU IDVAL+1 LENGTH OF ARBLK IN BYTES ! 2093: --- ! 2094: > ARLEN EQU IDVAL+1 LENGTH OF ARBLK IN BAUS ! 2095: 2096c907 ! 2096: < * THE LENGTH OF AN ARBLK IN BYTES MAY NOT EXCEED MXLEN. ! 2097: --- ! 2098: > * THE LENGTH OF AN ARBLK IN BAUS MAY NOT EXCEED MXLEN. ! 2099: 2103c914 ! 2100: < * ! 2101: --- ! 2102: > EJC ! 2103: 2197,2198c1008,1009 ! 2104: < CCLEN EQU CCTYP+1 LENGTH OF CCBLK IN BYTES ! 2105: < CCUSE EQU CCLEN+1 OFFSET PAST LAST USED WORD (BYTES) ! 2106: --- ! 2107: > CCLEN EQU CCTYP+1 LENGTH OF CCBLK IN BAUS ! 2108: ! 2109: ! 2110: ! 2111: ! 2112: ! 2113: ! 2114: ! 2115: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 33 ! 2116: ! 2117: ! 2118: > CCUSE EQU CCLEN+1 OFFSET PAST LAST USED WORD (BAUS) ! 2119: 2227c1038 ! 2120: < CDLEN EQU OFFS2 LENGTH OF CDBLK IN BYTES ! 2121: --- ! 2122: > CDLEN EQU OFFS2 LENGTH OF CDBLK IN BAUS ! 2123: 2564c1375 ! 2124: < CMLEN EQU CMIDN+1 LENGTH OF CMBLK IN BYTES ! 2125: --- ! 2126: > CMLEN EQU CMIDN+1 LENGTH OF CMBLK IN BAUS ! 2127: 2626a1438,1477 ! 2128: > * COPY FILE BLOCK (COBLK) ! 2129: > * ! 2130: > * A CHAIN STACK OF COPY BLOCKS IS BUILT FOR EVERY NESTED ! 2131: > * -COPY CONTROL CARD. THE CONTROL BLOCK IS USED TO PRESERVE ! 2132: > * THE INPUT CONTEXT OF THE FILE CONTAINING THE -COPY. ! 2133: > * AS -COPYS ARE ENDED, THESE BLOCKS ARE POPPED OFF THE CHAIN ! 2134: > * AND THE STATE RESTORED. SEE ROUTINES CNCRD, COPND. ! 2135: > * ! 2136: > * +------------------------------------+ ! 2137: > * I COTYP I ! 2138: > * +------------------------------------+ ! 2139: > * I CONXT I ! 2140: > * +------------------------------------+ ! 2141: > * I COIOT I ! 2142: > * +------------------------------------+ ! 2143: > * I COTTI I ! 2144: > * +------------------------------------+ ! 2145: > * I COCIM I ! 2146: > * +------------------------------------+ ! 2147: > * I COSPT I ! 2148: > * +------------------------------------+ ! 2149: > * I COSLS I ! 2150: > * +------------------------------------+ ! 2151: > * I COSIN I ! 2152: > * +------------------------------------+ ! 2153: > * I COSTL I ! 2154: > * +------------------------------------+ ! 2155: > * ! 2156: > COTYP EQU 0 POINTER TO DUMMY ROUTINE B$COP ! 2157: > CONXT EQU COTYP+1 POINT TO NEXT (OUTER -COPY) COBLK ! 2158: > COIOT EQU CONXT+1 RECORD IOTAG FOR OSINT ! 2159: > COTTI EQU COIOT+1 RECORD TTINS FLAG ! 2160: > COCIM EQU COTTI+1 RECORD R$CIM COMPILER IMAGE ! 2161: > COSPT EQU COCIM+1 RECORD SCNPT SCAN POINTER ! 2162: > COSLS EQU COSPT+1 RECORD CSWLS LISTING FLAG ! 2163: > COSIN EQU COSLS+1 RECORD CSWIN -INXXX VALUE ! 2164: > COSTL EQU COSIN+1 RECORD R$STL -STITL STRING PTR ! 2165: > COSI$ EQU COSTL+1 SIZE OF COBLK ! 2166: > EJC ! 2167: > * ! 2168: 2688c1539 ! 2169: < DFLEN EQU FARGS+1 LENGTH OF DFBLK IN BYTES ! 2170: --- ! 2171: > DFLEN EQU FARGS+1 LENGTH OF DFBLK IN BAUS ! 2172: 2798a1650,1651 ! 2173: > .IF .CNLD ! 2174: ! 2175: ! 2176: ! 2177: ! 2178: ! 2179: ! 2180: ! 2181: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 34 ! 2182: ! 2183: ! 2184: > .ELSE ! 2185: 2826c1679 ! 2186: < EFLEN EQU FARGS+1 LENGTH OF EFBLK IN BYTES ! 2187: --- ! 2188: > EFLEN EQU FARGS+1 LENGTH OF EFBLK IN BAUS ! 2189: 2845a1699,1700 ! 2190: > * 4 TYPE IS BUFFER ! 2191: > .FI ! 2192: 2901c1756 ! 2193: < EXLEN EQU EXSTM+1 LENGTH OF EXBLK IN BYTES ! 2194: --- ! 2195: > EXLEN EQU EXSTM+1 LENGTH OF EXBLK IN BAUS ! 2196: 2941c1796 ! 2197: < FFOFS EQU FFNXT+1 OFFSET (BYTES) TO FIELD IN PDBLK ! 2198: --- ! 2199: > FFOFS EQU FFNXT+1 OFFSET (BAUS) TO FIELD IN PDBLK ! 2200: 3022c1877 ! 2201: < * IS FOUND NMOFS BYTES PAST THE ADDRESS IN NMBAS. ! 2202: --- ! 2203: > * IS FOUND NMOFS BAUS PAST THE ADDRESS IN NMBAS. ! 2204: 3135c1990 ! 2205: < * CONTAINS THE LENGTH OF THE PDBLK IN BYTES (FIELD DFPDL). ! 2206: --- ! 2207: > * CONTAINS THE LENGTH OF THE PDBLK IN BAUS (FIELD DFPDL). ! 2208: 3169c2024 ! 2209: < PFLEN EQU FARGS+1 LENGTH OF PFBLK IN BYTES ! 2210: --- ! 2211: > PFLEN EQU FARGS+1 LENGTH OF PFBLK IN BAUS ! 2212: 3176c2031 ! 2213: < PFAGB EQU PFARG-1 OFFSET BEHIND PFARG FOR ARG, LOCAL ! 2214: --- ! 2215: > PFAGB EQU PFARG-1 OFFSET BEHIND PFARG FOR ARG,LOCAL ! 2216: 3237c2092 ! 2217: < * IS GIVEN IN BYTES BY CFP$F AND THAT THIS VALUE IS ! 2218: --- ! 2219: > * IS GIVEN IN BAUS BY CFP$F AND THAT THIS VALUE IS ! 2220: 3278c2133 ! 2221: < * I SVCHS I ! 2222: --- ! 2223: > * / SVCHS / ! 2224: 3323c2178,2181 ! 2225: < SVFPK EQU SVFNP+SVKVC PREEVAL FCN + CONST KEYWD + VAL ! 2226: --- ! 2227: > .IF .CNFN ! 2228: > .ELSE ! 2229: > SVFPK EQU SVFNP+SVKVC PREEVAL FUNC + CONST KEYWD+VAL ! 2230: > .FI ! 2231: 3333c2191 ! 2232: < * THE ITEM AND APPLY FUNCTIONS FALL OUTSIDE THIS CATEGORY. ! 2233: --- ! 2234: > * THE APPLY FUNCTION FALLS OUTSIDE THIS CATEGORY. ! 2235: 3373c2231 ! 2236: < * PREDEFINED FUNCTIONS USING THIS ARE APPLY AND ITEM. ! 2237: --- ! 2238: > * PREDEFINED FUNCTION USING THIS IS APPLY. ! 2239: 3401,3409c2259,2260 ! 2240: ! 2241: ! 2242: ! 2243: ! 2244: ! 2245: ! 2246: ! 2247: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 35 ! 2248: ! 2249: ! 2250: < K$ABE EQU 0 ABEND ! 2251: < K$ANC EQU K$ABE+CFP$B ANCHOR ! 2252: < .IF .CULC ! 2253: < K$CAS EQU K$ANC+CFP$B CASE ! 2254: < K$COD EQU K$CAS+CFP$B CODE ! 2255: < .ELSE ! 2256: < K$COD EQU K$ANC+CFP$B CODE ! 2257: < .FI ! 2258: < K$DMP EQU K$COD+CFP$B DUMP ! 2259: --- ! 2260: > K$ANC EQU 0 ANCHOR ! 2261: > K$DMP EQU K$ANC+CFP$B DUMP ! 2262: 3447c2298,2299 ! 2263: < K$STC EQU K$RTN+1 STCOUNT ! 2264: --- ! 2265: > K$COD EQU K$RTN+1 CODE ! 2266: > K$STC EQU K$COD+1 STCOUNT ! 2267: 3454a2307 ! 2268: > K$$CD EQU K$COD-K$ALP CODE ! 2269: 3478d2330 ! 2270: < * +------------------------------------+ ! 2271: 3487c2339 ! 2272: < TBLEN EQU OFFS2 LENGTH OF TBBLK IN BYTES ! 2273: --- ! 2274: > TBLEN EQU OFFS2 LENGTH OF TBBLK IN BAUS ! 2275: 3546c2398 ! 2276: < * I TRTAG OR TRTER OR TRTRF I ! 2277: --- ! 2278: > * I TRTAG OR TRTER I ! 2279: 3548c2400 ! 2280: < * I TRFNC OR TRFPT I ! 2281: --- ! 2282: > * I TRFNC OR TRTRI I ! 2283: 3557c2409 ! 2284: < TRTAG EQU TRVAL+1 TRACE TAG ! 2285: --- ! 2286: > TRTAG EQU TRVAL+1 TRACE TAG OR IOTAG ! 2287: 3559d2410 ! 2288: < TRTRF EQU TRTAG PTR TO TRBLK HOLDING FCBLK PTR ! 2289: 3561c2412 ! 2290: < TRFPT EQU TRFNC FCBLK PTR FOR SYSIO ! 2291: --- ! 2292: > TRTRI EQU TRFNC PTR TO TRACE BLOCK HOLDING IOTAG ! 2293: 3567,3568c2418,2419 ! 2294: < TRTOU EQU TRTVL+1 TRACE TYPE FOR OUTPUT ASSOCIATION ! 2295: < TRTFC EQU TRTOU+1 TRACE TYPE FOR FCBLK IDENTIFICATION ! 2296: --- ! 2297: > TRTIO EQU TRTVL+1 TRACE TYPE FOR IOTAG TRACE BLOCK ! 2298: > TRTOU EQU TRTIO+1 TRACE TYPE FOR OUTPUT ASSOCIATION ! 2299: 3584,3586c2435 ! 2300: < * TRTRF POINTS TO THE TRAP BLOCK WHICH IN TURN POINTS ! 2301: < * TO AN FCBLK USED FOR I/O ASSOCIATION. ! 2302: < * TRFPT IS THE FCBLK PTR RETURNED BY SYSIO. ! 2303: --- ! 2304: > * TRTRI IS A PTR TO IOTAG TRBLK FROM SYSIO OR ZERO. ! 2305: 3625,3627c2474 ! 2306: ! 2307: ! 2308: ! 2309: ! 2310: ! 2311: ! 2312: ! 2313: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 36 ! 2314: ! 2315: ! 2316: < * TRTRF POINTS TO THE TRAP BLOCK WHICH IN TURN POINTS ! 2317: < * TO AN FCBLK USED FOR I/O ASSOCIATION. ! 2318: < * TRFPT IS THE FCBLK PTR RETURNED BY SYSIO. ! 2319: --- ! 2320: > * TRTRI IS A PTR TO IOTAG TRBLK FROM SYSIO OR ZERO. ! 2321: 3681c2528 ! 2322: < * INPUT/OUTPUT FILE ARG1 TRAP BLOCK ! 2323: --- ! 2324: > * INPUT/OUTPUT FILETAG TRAP BLOCK (TRTIO) ! 2325: 3683c2530 ! 2326: < * THE VALUE FIELD OF THE VARIABLE POINTS TO A TRBLK ! 2327: --- ! 2328: > * THE VALUE FIELD OF THE FILETAG VBL POINTS TO A TRBLK ! 2329: 3687,3689c2534 ! 2330: < * TO HOLD A POINTER TO THE FCBLK WHICH AN ! 2331: < * IMPLEMENTATION MAY REQUEST TO HOLD INFORMATION ! 2332: < * ABOUT A FILE. ! 2333: --- ! 2334: > * TO HOLD THE IOTAG RETURNED BY A SYSIO CALL ! 2335: 3691,3694c2536,2538 ! 2336: < * TRTYP IS SET TO TRTFC ! 2337: < * TRNEXT POINTS TO NEXT TRBLK OR TRVAL IS VARIABLE VAL ! 2338: < * TRFNM IS 0 ! 2339: < * TRFPT IS THE FCBLK POINTER. ! 2340: --- ! 2341: > * TRTYP IS SET TO TRTIO ! 2342: > * TRNXT POINTS TO NEXT TRBLK OR TRVAL IS VARIABLE VAL ! 2343: > * TRTAG HOLDS THE IOTAG. ! 2344: 3701a2546 ! 2345: > * FILETAG ASSOCIATION (IF PRESENT) ! 2346: 3729c2574 ! 2347: < VCLEN EQU OFFS2 LENGTH OF VCBLK IN BYTES ! 2348: --- ! 2349: > VCLEN EQU OFFS2 LENGTH OF VCBLK IN BAUS ! 2350: 3832c2677 ! 2351: < * VRCHS IS THE NAME (LJRZ) IF VRLEN IS NON-ZERO. ! 2352: --- ! 2353: > * VRCHS IS THE NAME IF VRLEN IS NON-ZERO. ! 2354: 3843,3844d2687 ! 2355: < * THIS TYPE OF BLOCK MAY BE USED AS A FILE CONTROL BLOCK. ! 2356: < * SEE SYSFC,SYSIN,SYSOU,S$INP,S$OUP FOR DETAILS. ! 2357: 3857c2700 ! 2358: < XNLEN EQU XNTYP+1 LENGTH OF XNBLK IN BYTES ! 2359: --- ! 2360: > XNLEN EQU XNTYP+1 LENGTH OF XNBLK IN BAUS ! 2361: 3873,3874d2715 ! 2362: < * THIS TYPE OF BLOCK MAY BE USED AS A FILE CONTROL BLOCK. ! 2363: < * SEE SYSFC,SYSIN,SYSOU,S$INP,S$OUP FOR DETAILS. ! 2364: 3887c2728 ! 2365: < XRLEN EQU XRTYP+1 LENGTH OF XRBLK IN BYTES ! 2366: --- ! 2367: > XRLEN EQU XRTYP+1 LENGTH OF XRBLK IN BAUS ! 2368: 3911,3912c2752 ! 2369: < INILN EQU 132 DEFAULT IMAGE LENGTH FOR COMPILER ! 2370: < INILS EQU 80 IMAGE LENGTH IF -SEQU IN EFFECT ! 2371: --- ! 2372: ! 2373: ! 2374: ! 2375: ! 2376: ! 2377: ! 2378: ! 2379: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 37 ! 2380: ! 2381: ! 2382: > INILN EQU 160 DEFAULT IMAGE LENGTH FOR COMPILER ! 2383: 3914,3916d2753 ! 2384: < IONMB EQU 2 NAME BASE USED FOR IOCHN IN SYSIO ! 2385: < IONMO EQU 4 NAME OFFSET USED FOR IOCHN IN SYSIO ! 2386: < * ! 2387: 3931d2767 ! 2388: < NINI8 EQU 998 ! 2389: 3934d2769 ! 2390: < EJC ! 2391: 3945c2780 ! 2392: < RILEN EQU 120 BUFFER LENGTH FOR SYSRI ! 2393: --- ! 2394: > RILEN EQU 160 BUFFER LENGTH FOR SYSRI ! 2395: 4051,4053c2886,2888 ! 2396: < .IF .CULC ! 2397: < CC$CA EQU 0 -CASE ! 2398: < CC$DO EQU CC$CA+1 -DOUBLE ! 2399: --- ! 2400: > .IF .CASL ! 2401: > CC$CI EQU 0 -CASEIG ! 2402: > CC$CO EQU CC$CI+1 -COPY ! 2403: 4055c2890 ! 2404: < CC$DO EQU 0 -DOUBLE ! 2405: --- ! 2406: > CC$CO EQU 0 -COPY ! 2407: 4057,4061c2892,2893 ! 2408: < CC$DU EQU CC$DO+1 -DUMP ! 2409: < CC$EJ EQU CC$DU+1 -EJECT ! 2410: < CC$ER EQU CC$EJ+1 -ERRORS ! 2411: < CC$EX EQU CC$ER+1 -EXECUTE ! 2412: < CC$FA EQU CC$EX+1 -FAIL ! 2413: --- ! 2414: > CC$EJ EQU CC$CO+1 -EJECT ! 2415: > CC$FA EQU CC$EJ+1 -FAIL ! 2416: 4063,4065c2895,2900 ! 2417: < CC$NR EQU CC$LI+1 -NOERRORS ! 2418: < CC$NX EQU CC$NR+1 -NOEXECUTE ! 2419: < CC$NF EQU CC$NX+1 -NOFAIL ! 2420: --- ! 2421: > .IF .CASL ! 2422: > CC$NC EQU CC$LI+1 -NOCASEIG ! 2423: > CC$NF EQU CC$NC+1 -NOFAIL ! 2424: > .ELSE ! 2425: > CC$NF EQU CC$LI+1 -NOFAIL ! 2426: > .FI ! 2427: 4067,4073c2902 ! 2428: < CC$NO EQU CC$NL+1 -NOOPT ! 2429: < CC$NP EQU CC$NO+1 -NOPRINT ! 2430: < CC$OP EQU CC$NP+1 -OPTIMISE ! 2431: < CC$PR EQU CC$OP+1 -PRINT ! 2432: < CC$SI EQU CC$PR+1 -SINGLE ! 2433: < CC$SP EQU CC$SI+1 -SPACE ! 2434: < CC$ST EQU CC$SP+1 -STITL ! 2435: --- ! 2436: > CC$ST EQU CC$NL+1 -STITL ! 2437: 4076c2905 ! 2438: ! 2439: ! 2440: ! 2441: ! 2442: ! 2443: ! 2444: ! 2445: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 38 ! 2446: ! 2447: ! 2448: < CC$NC EQU CC$TR+1 NUMBER OF CONTROL CARDS ! 2449: --- ! 2450: > CC$CT EQU CC$TR+1 NUMBER OF CONTROL CARDS ! 2451: 4079d2907 ! 2452: < EJC ! 2453: 4108d2935 ! 2454: < * ! 2455: 4157c2984 ! 2456: < .IF .CULC ! 2457: --- ! 2458: > .IF .CASL ! 2459: 4159c2986 ! 2460: < DTC /DOUB/ ! 2461: --- ! 2462: > DTC /COPY/ ! 2463: 4161c2988 ! 2464: < CCNMS DTC /DOUB/ ! 2465: --- ! 2466: > CCNMS DTC /COPY/ ! 2467: 4163d2989 ! 2468: < DTC /DUMP/ ! 2469: 4165,4166d2990 ! 2470: < DTC /ERRO/ ! 2471: < DTC /EXEC/ ! 2472: 4169,4170c2993,2995 ! 2473: < DTC /NOER/ ! 2474: < DTC /NOEX/ ! 2475: --- ! 2476: > .IF .CASL ! 2477: > DTC /NOCA/ ! 2478: > .FI ! 2479: 4173,4178d2997 ! 2480: < DTC /NOOP/ ! 2481: < DTC /NOPR/ ! 2482: < DTC /OPTI/ ! 2483: < DTC /PRIN/ ! 2484: < DTC /SING/ ! 2485: < DTC /SPAC/ ! 2486: 4185c3004 ! 2487: < DMHDK DAC B$SCL DUMP OF KEYWORD VALUES ! 2488: --- ! 2489: > DMHDK DAC B$SCL ! 2490: 4187c3006 ! 2491: < DTC /DUMP OF KEYWORD VALUES/ ! 2492: --- ! 2493: > DDC /DUMP OF KEYWORD VALUES/ ! 2494: 4189c3008 ! 2495: < DMHDV DAC B$SCL DUMP OF NATURAL VARIABLES ! 2496: --- ! 2497: > DMHDV DAC B$SCL ! 2498: 4191,4192c3010 ! 2499: < DTC /DUMP OF NATURAL VARIABLES/ ! 2500: < EJC ! 2501: --- ! 2502: > DDC /DUMP OF NATURAL VARIABLES/ ! 2503: 4198c3016 ! 2504: ! 2505: ! 2506: ! 2507: ! 2508: ! 2509: ! 2510: ! 2511: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 39 ! 2512: ! 2513: ! 2514: < DTC /STORE USED/ ! 2515: --- ! 2516: > DDC /STORE USED/ ! 2517: 4202c3020 ! 2518: < DTC /STORE LEFT/ ! 2519: --- ! 2520: > DDC /STORE LEFT/ ! 2521: 4206c3024 ! 2522: < DTC /COMP ERRORS/ ! 2523: --- ! 2524: > DDC /COMP ERRORS/ ! 2525: 4210c3028,3032 ! 2526: < DTC /COMP TIME-MSEC/ ! 2527: --- ! 2528: > .IF .CTMD ! 2529: > DDC /COMP TIME-DSEC/ ! 2530: > .ELSE ! 2531: > DDC /COMP TIME-MSEC/ ! 2532: > .FI ! 2533: 4212c3034 ! 2534: < ENCM5 DAC B$SCL EXECUTION SUPPRESSED ! 2535: --- ! 2536: > ENCM5 DAC B$SCL ! 2537: 4214c3036,3037 ! 2538: < DTC /EXECUTION SUPPRESSED/ ! 2539: --- ! 2540: > DDC /EXECUTION SUPPRESSED/ ! 2541: > EJC ! 2542: 4216c3039 ! 2543: < * STRING CONSTANT FOR ABNORMAL END ! 2544: --- ! 2545: > * FOR TERMINATION IN COMPILATION ! 2546: 4218,4221c3041,3043 ! 2547: < ENDAB DAC B$SCL ! 2548: < DAC 12 ! 2549: < DTC /ABNORMAL END/ ! 2550: < EJC ! 2551: --- ! 2552: > ENDIC DAC B$SCL ! 2553: > DAC 14 ! 2554: > DDC /IN COMPILATION/ ! 2555: 4227c3049 ! 2556: < DTC /MEMORY OVERFLOW/ ! 2557: --- ! 2558: > DDC /MEMORY OVERFLOW/ ! 2559: 4233c3055 ! 2560: < DTC /NORMAL END/ ! 2561: --- ! 2562: > DDC /NORMAL END/ ! 2563: 4237c3059 ! 2564: < ENDSO DAC B$SCL STACK OVERFLOW IN GARBAGE COLLECTOR ! 2565: --- ! 2566: > ENDSO DAC B$SCL ! 2567: 4239,4245c3061 ! 2568: < DTC /STACK OVERFLOW IN GARBAGE COLLECTION/ ! 2569: < * ! 2570: ! 2571: ! 2572: ! 2573: ! 2574: ! 2575: ! 2576: ! 2577: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 40 ! 2578: ! 2579: ! 2580: < * STRING CONSTANT FOR TIME UP ! 2581: < * ! 2582: < ENDTU DAC B$SCL ! 2583: < DAC 15 ! 2584: < DTC /ERROR - TIME UP/ ! 2585: --- ! 2586: > DDC /STACK OVERFLOW IN GARBAGE COLLECTION/ ! 2587: 4250c3066 ! 2588: < ERMMS DAC B$SCL ERROR ! 2589: --- ! 2590: > ERMMS DAC B$SCL ! 2591: 4252c3068 ! 2592: < DTC /ERROR/ ! 2593: --- ! 2594: > DDC /ERROR/ ! 2595: 4254c3070 ! 2596: < ERMNS DAC B$SCL STRING / -- / ! 2597: --- ! 2598: > ERMNS DAC B$SCL ! 2599: 4257a3074,3076 ! 2600: > * ! 2601: > ERRTF DAC 251 FATAL ERROR CODE - SEE LABEL ERRAF ! 2602: > * ! 2603: 4260c3079 ! 2604: < LSTMS DAC B$SCL PAGE ! 2605: --- ! 2606: > LSTMS DAC B$SCL ! 2607: 4262c3081 ! 2608: < DTC /PAGE / ! 2609: --- ! 2610: > DDC /PAGE / ! 2611: 4268c3087 ! 2612: < DTC /MACRO SPITBOL VERSION 3.5/ ! 2613: --- ! 2614: > DDC /MACRO SPITBOL VERSION 4.3/ ! 2615: 4272c3091 ! 2616: < DTC /3.5/ ! 2617: --- ! 2618: > DTC /4.3/ ! 2619: 4301a3121,3123 ! 2620: > NDEXC DAC P$EXC EXPRESSION ! 2621: > .IF .CNFN ! 2622: > .ELSE ! 2623: 4304c3126 ! 2624: < NDEXC DAC P$EXC EXPRESSION ! 2625: --- ! 2626: > .FI ! 2627: 4351,4353c3173,3175 ! 2628: < * OPDVS IS USED WHEN SCANNING BELOW THE TOP LEVEL TO ! 2629: < * INSURE THAT THE CONCATENATION WILL NOT BE LATER ! 2630: < * MISTAKEN FOR PATTERN MATCHING ! 2631: --- ! 2632: > * OPDVP IS USED WHEN SCANNING BELOW TOP LEVEL TO ENSURE ! 2633: > * THE CONCATENATION WILL NOT LATER BE MISTAKEN FOR ! 2634: > * PATTERN MATCHING ! 2635: 4355c3177 ! 2636: ! 2637: ! 2638: ! 2639: ! 2640: ! 2641: ! 2642: ! 2643: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 41 ! 2644: ! 2645: ! 2646: < OPDVP DAC O$CNC CONCATENATION - NOT PATTERN MATCH ! 2647: --- ! 2648: > OPDVP DAC O$CNC PROVEN CONCATENATION ! 2649: 4459,4467d3280 ! 2650: < DAC O$IMA IMMEDIATE ASSIGNMENT ! 2651: < DAC C$BVN ! 2652: < DAC LLDLD ! 2653: < DAC RRDLD ! 2654: < * ! 2655: < DAC O$INV INDIRECTION ! 2656: < DAC C$IND ! 2657: < DAC LLUNO ! 2658: < * ! 2659: 4497a3311,3319 ! 2660: > DAC O$IMA IMMEDIATE ASSIGNMENT ! 2661: > DAC C$BVN ! 2662: > DAC LLDLD ! 2663: > DAC RRDLD ! 2664: > * ! 2665: > DAC O$INV INDIRECTION ! 2666: > DAC C$IND ! 2667: > DAC LLUNO ! 2668: > * ! 2669: 4580c3402 ! 2670: < DTC /PROGRAM PROFILE/ ! 2671: --- ! 2672: > DDC /PROGRAM PROFILE/ ! 2673: 4583c3405 ! 2674: < DTC /STMT NUMBER OF -- EXECUTION TIME --/ ! 2675: --- ! 2676: > DDC /STMT NUMBER OF -- EXECUTION TIME --/ ! 2677: 4586c3408 ! 2678: < DTC /NUMBER EXECUTIONS TOTAL(MSEC) PER EXCN(MCSEC)/ ! 2679: --- ! 2680: > DDC /NUMBER EXECUTIONS TOTAL(MSEC) PER EXCN(MCSEC)/ ! 2681: 4588d3409 ! 2682: < * ! 2683: 4616a3438,3439 ! 2684: > .IF .CNBF ! 2685: > .ELSE ! 2686: 4618c3441 ! 2687: < SCBUF DAC B$SCL BUFFER ! 2688: --- ! 2689: > SCBUF DAC B$SCL ! 2690: 4620a3444 ! 2691: > .FI ! 2692: 4717a3542,3544 ! 2693: > .IF .CS16 ! 2694: > STLIM DIC +32767 DEFAULT STATEMENT LIMIT ! 2695: > .ELSE ! 2696: 4718a3546 ! 2697: > .FI ! 2698: 4749c3577 ! 2699: < STPM1 DAC B$SCL IN STATEMENT ! 2700: --- ! 2701: > STPM1 DAC B$SCL ! 2702: ! 2703: ! 2704: ! 2705: ! 2706: ! 2707: ! 2708: ! 2709: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 42 ! 2710: ! 2711: ! 2712: 4751c3579 ! 2713: < DTC /IN STATEMENT/ ! 2714: --- ! 2715: > DDC /IN STATEMENT/ ! 2716: 4755c3583 ! 2717: < DTC /STMTS EXECUTED/ ! 2718: --- ! 2719: > DDC /STMTS EXECUTED/ ! 2720: 4759c3587,3591 ! 2721: < DTC /RUN TIME-MSEC/ ! 2722: --- ! 2723: > .IF .CTMD ! 2724: > DDC /RUN TIME-DSEC/ ! 2725: > .ELSE ! 2726: > DDC /RUN TIME-MSEC/ ! 2727: > .FI ! 2728: 4763c3595 ! 2729: < DTC $MCSEC / STMT$ ! 2730: --- ! 2731: > DDC $MCSEC / STMT$ ! 2732: 4767c3599 ! 2733: < DTC /REGENERATIONS/ ! 2734: --- ! 2735: > DDC /REGENERATIONS/ ! 2736: 4769,4772d3600 ! 2737: < * CHARS FOR /TU/ ENDING CODE ! 2738: < * ! 2739: < STRTU DTC /TU/ ! 2740: < * ! 2741: 4800c3628 ! 2742: < TMASB DAC B$SCL ASTERISKS FOR TRACE STATEMENT NO ! 2743: --- ! 2744: > TMASB DAC B$SCL ! 2745: 4803d3630 ! 2746: < ! 2747: 4805c3632 ! 2748: < TMBEB DAC B$SCL BLANK-EQUAL-BLANK ! 2749: --- ! 2750: > TMBEB DAC B$SCL ! 2751: 4891a3719,3724 ! 2752: > V$CTI DBC SVFNP CTI ! 2753: > DAC 3 ! 2754: > DTC /CTI/ ! 2755: > DAC S$CTI ! 2756: > DAC 1 ! 2757: > * ! 2758: 4896a3730,3735 ! 2759: > V$ITC DBC SVFNN ITC ! 2760: > DAC 3 ! 2761: > DTC /ITC/ ! 2762: > DAC S$ITC ! 2763: > DAC 1 ! 2764: > * ! 2765: 4967d3805 ! 2766: < .IF .CULC ! 2767: 4969,4980d3806 ! 2768: ! 2769: ! 2770: ! 2771: ! 2772: ! 2773: ! 2774: ! 2775: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 43 ! 2776: ! 2777: ! 2778: < V$CAS DBC SVKNM CASE ! 2779: < DAC 4 ! 2780: < DTC /CASE/ ! 2781: < DAC K$CAS ! 2782: < .FI ! 2783: < * ! 2784: < V$CHR DBC SVFNP CHAR ! 2785: < DAC 4 ! 2786: < DTC /CHAR/ ! 2787: < DAC S$CHR ! 2788: < DAC 1 ! 2789: < * ! 2790: 5077a3904 ! 2791: > EJC ! 2792: 5078a3906,3908 ! 2793: > * STANDARD VARIABLE BLOCKS (CONTINUED) ! 2794: > * ! 2795: > * ! 2796: 5133,5137d3962 ! 2797: < V$ABE DBC SVKNM ABEND ! 2798: < DAC 5 ! 2799: < DTC /ABEND/ ! 2800: < DAC K$ABE ! 2801: < * ! 2802: 5183a4009,4011 ! 2803: > .IF .CNFN ! 2804: > V$FEN DBC SVKVC FENCE ! 2805: > .ELSE ! 2806: 5184a4013 ! 2807: > .FI ! 2808: 5187a4017,4018 ! 2809: > .IF .CNFN ! 2810: > .ELSE ! 2811: 5189a4021 ! 2812: > .FI ! 2813: 5217d4048 ! 2814: < * ! 2815: 5257a4089,4092 ! 2816: > EJC ! 2817: > * ! 2818: > * STANDARD VARIABLE BLOCKS (CONTINUED) ! 2819: > * ! 2820: 5260,5261c4095 ! 2821: < * ! 2822: < V$APN DBC SVFNN ! 2823: --- ! 2824: > V$APN DBC SVFNN APPEND ! 2825: 5273d4106 ! 2826: < * ! 2827: 5286c4119 ! 2828: < DAC S$DEF ! 2829: --- ! 2830: > DAC S$DFN ! 2831: 5294d4126 ! 2832: < EJC ! 2833: 5296,5297d4127 ! 2834: ! 2835: ! 2836: ! 2837: ! 2838: ! 2839: ! 2840: ! 2841: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 44 ! 2842: ! 2843: ! 2844: < * STANDARD VARIABLE BLOCKS (CONTINUED) ! 2845: < * ! 2846: 5308c4138 ! 2847: < * ! 2848: --- ! 2849: > EJC ! 2850: 5310a4141 ! 2851: > * ! 2852: 5316d4146 ! 2853: < * ! 2854: 5317a4148 ! 2855: > * ! 2856: 5341,5346d4171 ! 2857: < V$REW DBC SVFNN REWIND ! 2858: < DAC 6 ! 2859: < DTC /REWIND/ ! 2860: < DAC S$REW ! 2861: < DAC 1 ! 2862: < * ! 2863: 5377c4202 ! 2864: < DAC S$CNV ! 2865: --- ! 2866: > DAC S$CVT ! 2867: 5384c4209 ! 2868: < DAC 1 ! 2869: --- ! 2870: > DAC 2 ! 2871: 5414d4238 ! 2872: < * ! 2873: 5423a4248 ! 2874: > * ! 2875: 5462a4288,4293 ! 2876: > V$VDF DBC SVFPR VDIFFER ! 2877: > DAC 7 ! 2878: > DTC /VDIFFER/ ! 2879: > DAC S$VDF ! 2880: > DAC 2 ! 2881: > * ! 2882: 5466a4298 ! 2883: > EJC ! 2884: 5467a4300,4301 ! 2885: > * STANDARD VARIABLE BLOCKS (CONTINUED) ! 2886: > * ! 2887: 5472d4305 ! 2888: < EJC ! 2889: 5474,5475d4306 ! 2890: < * STANDARD VARIABLE BLOCKS (CONTINUED) ! 2891: < * ! 2892: 5516,5518d4346 ! 2893: < .IF .CULC ! 2894: < DAC V$CAS CCASE ! 2895: < .FI ! 2896: 5548,5553c4376,4377 ! 2897: < .IF .CULC ! 2898: < DAC V$CAS START OF 4 CHAR VARIABLES ! 2899: < .ELSE ! 2900: ! 2901: ! 2902: ! 2903: ! 2904: ! 2905: ! 2906: ! 2907: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 45 ! 2908: ! 2909: ! 2910: < DAC V$CHR START OF 4 CHAR VARIABLES ! 2911: < .FI ! 2912: < DAC V$ABE START OF 5 CHAR VARIABLES ! 2913: --- ! 2914: > DAC V$COD START OF 4 CHAR VARIABLES ! 2915: > DAC V$ABO START OF 5 CHAR VARIABLES ! 2916: 5598c4422 ! 2917: < * LABEL TO MARK START OF WORK AREA ! 2918: --- ! 2919: > * LABEL TO MARK START OF WORK AREA WHICH IS CLEARED ! 2920: 5663,5665c4487,4489 ! 2921: < CSWDB DAC 0 0/1 FOR -SINGLE/-DOUBLE ! 2922: < CSWER DAC 0 0/1 FOR -ERRORS/-NOERRORS ! 2923: < CSWEX DAC 0 0/1 FOR -EXECUTE/-NOEXECUTE ! 2924: --- ! 2925: > .IF .CASL ! 2926: > CSWCI DAC 0 0/1 FOR -NOCASEIG/CASEIG ! 2927: > .FI ! 2928: 5669,5670c4493 ! 2929: < CSWNO DAC 0 0/1 FOR -OPTIMISE/-NOOPT ! 2930: < CSWPR DAC 0 0/1 FOR -NOPRINT/-PRINT ! 2931: --- ! 2932: > EJC ! 2933: 5676d4498 ! 2934: < EJC ! 2935: 5711,5715d4532 ! 2936: < * WORK AREA FOR DTACH ! 2937: < * ! 2938: < DTCNB DAC 0 NAME BASE ! 2939: < DTCNM DAC 0 NAME PTR ! 2940: < * ! 2941: 5726,5727c4543 ! 2942: < ERICH DAC 0 COPY ERROR REPORTS TO INT.CHAN IF 1 ! 2943: < ERLST DAC 0 FOR LISTR WHEN ERRORS GO TO INT.CH. ! 2944: --- ! 2945: > EROSN DAC 0 FLAG FOR SPECIAL EROSI RETURN ! 2946: 5741a4558 ! 2947: > * ! 2948: 5798a4616 ! 2949: > GTNSV DIC +0 SAVE IA ! 2950: 5821a4640 ! 2951: > EJC ! 2952: 5827c4646 ! 2953: < * FLAG FOR HEADER PRINTING ! 2954: --- ! 2955: > * FLAGS FOR HEADER PRINTING ! 2956: 5828a4648 ! 2957: > HEADN DAC 0 NON-ZERO IF HDRS NOT TO BE PRINTED ! 2958: 5838a4659 ! 2959: > INICD DIC +0 CODE KWD VAL (NEEDED FOR BATCH) ! 2960: 5846c4667,4669 ! 2961: < INSAB DAC 0 ENTRY WA + ENTRY WB ! 2962: --- ! 2963: > INSAB DAC 0 ENTRY WA PLUS ENTRY WB ! 2964: > INSBB DAC 0 BFBLK POINTER ! 2965: > INSBC DAC 0 BCBLK POINTER ! 2966: ! 2967: ! 2968: ! 2969: ! 2970: ! 2971: ! 2972: ! 2973: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 46 ! 2974: ! 2975: ! 2976: 5849d4671 ! 2977: < INSSC DAC 0 SAVE ENTRY WC ! 2978: 5854c4676,4680 ! 2979: < IOPTT DAC 0 TYPE OF ASSOCIATION ! 2980: --- ! 2981: > IOPNF DAC 0 NAME OFFSET ! 2982: > IOPVR DAC 0 FILETAG VRBLK ! 2983: > IOPWA DAC 0 KEEP WA ! 2984: > IOPWB DAC 0 KEEP WB ! 2985: > IOPWC DAC 0 KEEP WC ! 2986: 5861d4686 ! 2987: < KVABE DAC 0 ABEND ! 2988: 5863,5866d4687 ! 2989: < .IF .CULC ! 2990: < KVCAS DAC 0 CASE ! 2991: < .FI ! 2992: < KVCOD DAC 0 CODE ! 2993: 5887a4709,4713 ! 2994: > KVCOD DIC 0 CODE ! 2995: > .IF .CS16 ! 2996: > KVSTL DIC +32767 STLIMIT ! 2997: > KVSTC DIC +32767 STCOUNT (COUNTS DOWN FROM STLIMIT) ! 2998: > .ELSE ! 2999: 5889a4716 ! 3000: > .FI ! 3001: 5897a4725 ! 3002: > EJC ! 3003: 5920c4748 ! 3004: < PFDMP DAC 0 SET NON-0 IF &PROFILE SET NON-0 ! 3005: --- ! 3006: > PFDMP DAC 0 SET NON-0 IF PROFILE SET NON-0 ! 3007: 5927c4755 ! 3008: < PFSTE DIC +0 GETS INT REP OF TABLE ENTRY SIZE ! 3009: --- ! 3010: > PFSTE DIC +0 TABLE ENTRY SIZE IN BAUS ! 3011: 5929d4756 ! 3012: < * ! 3013: 5938,5943d4764 ! 3014: < * FLAGS USED FOR STANDARD FILE LISTING OPTIONS ! 3015: < * ! 3016: < PRICH DAC 0 PRINTER ON INTERACTIVE CHANNEL ! 3017: < PRSTD DAC 0 TESTED BY PRTPG ! 3018: < PRSTO DAC 0 STANDARD LISTING OPTION FLAG ! 3019: < * ! 3020: 5957a4779,4780 ! 3021: > PRAVL DAC 0 SET IF PRINT FILE AVAILABLE ! 3022: > PRBLK DAC 0 ADDRESS OF BUFFER BLANKING STRING ! 3023: 5958a4782,4783 ! 3024: > PRCHS DAC 0 ADDRESS OF CHARS IN PRINT BUFFER ! 3025: > PRCMV DAC 0 NO. OF BAUS TO MOVE IN BFR CLEARING ! 3026: 5961d4785 ! 3027: < PRLNW DAC 0 LENGTH OF PRINT BUFFER IN WORDS ! 3028: 5962a4787,4789 ! 3029: > PRPUT DAC 0 SET IF CHARS TO BE PUT IN BFR ! 3030: > PRSTD DAC 0 TESTED BY PRTPG ! 3031: > PRSTO DAC 0 STANDARD LISTING OPTION FLAG ! 3032: ! 3033: ! 3034: ! 3035: ! 3036: ! 3037: ! 3038: ! 3039: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 47 ! 3040: ! 3041: ! 3042: 5965c4792 ! 3043: < * WORK AREAS FOR PRTST PROCEDURE ! 3044: --- ! 3045: > * WORK AREAS FOR PRTST, PTTST PROCEDURES ! 3046: 5969c4796,4797 ! 3047: < PRSVC DAC 0 SAVE CHAR COUNTER ! 3048: --- ! 3049: > PRTVA DAC 0 SAVE WA ! 3050: > PRTVB DAC 0 SAVE WB ! 3051: 5971,5975d4798 ! 3052: < * WORK AREA FOR PRTNL ! 3053: < * ! 3054: < PRTSA DAC 0 SAVE WA ! 3055: < PRTSB DAC 0 SAVE WB ! 3056: < * ! 3057: 5985a4809,4812 ! 3058: > * FLAG TO TELL ERROR THAT WE ARE READING SOURCE LINE ! 3059: > * ! 3060: > RDRER DAC 0 READ-SOURCE-LINE IN PROGRESS FLAG ! 3061: > * ! 3062: 6009a4837 ! 3063: > R$COP DAC 0 PTR TO -COPY CHAIN STACK ! 3064: 6014d4841 ! 3065: < R$FCB DAC 0 FCBLK CHAIN HEAD ! 3066: 6017,6022c4844,4847 ! 3067: < R$IO1 DAC 0 FILE ARG1 FOR IOPUT ! 3068: < R$IO2 DAC 0 FILE ARG2 FOR IOPUT ! 3069: < R$IOF DAC 0 FCBLK PTR OR 0 ! 3070: < R$ION DAC 0 NAME BASE PTR ! 3071: < R$IOP DAC 0 PREDECESSOR BLOCK PTR FOR IOPUT ! 3072: < R$IOT DAC 0 TRBLK PTR FOR IOPUT ! 3073: --- ! 3074: > R$IO1 DAC 0 FIRST ARGUMENT ! 3075: > R$IOL DAC 0 SECOND ARGUMENT (FILETAG) SCBLK PTR ! 3076: > R$IOR DAC 0 FILEPROPS SCBLK PTR ! 3077: > R$IOT DAC 0 TRTIO TRACE BLK PTR ! 3078: 6077a4903,4910 ! 3079: > * ! 3080: > * WORK AREA FOR DETACH PROCEDURE ! 3081: > * ! 3082: > SDETF DAC 0 TRACE BLOCK FLAG ! 3083: > * ! 3084: > * WORK AREA FOR ENDFILE PROCEDURE ! 3085: > * ! 3086: > SENFR DAC 0 SAVE XR ! 3087: 6102c4935 ! 3088: < * GLOBAL VALUE FOR INDICATING STAGE (SEE ERROR SECTION) ! 3089: --- ! 3090: > * VALUES FOR INDICATING COMPILATION/EXECUTION STAGE ! 3091: 6104a4938 ! 3092: > STAGX DAC 0 NON-ZERO IF EXECUTING ! 3093: 6119a4954 ! 3094: > STPXR DAC 0 SAVE XR ! 3095: 6133d4967 ! 3096: < TIMUP DAC 0 SET WHEN TIME UP OCCURS ! 3097: 6134a4969,4981 ! 3098: ! 3099: ! 3100: ! 3101: ! 3102: ! 3103: ! 3104: ! 3105: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 48 ! 3106: ! 3107: ! 3108: > * TERMINAL BUFFER ADDRESSES, FLAGS ETC ! 3109: > * ! 3110: > TTBLK DAC 0 BLANKING STRING ADRS ! 3111: > TTBUF DAC 0 BUFFER ADRS ! 3112: > TTCHS DAC 0 START OF BUFFER CHARACTERS ! 3113: > TTCMV DAC 0 COUNT OF BLANKING CHARS TO MOVE ! 3114: > TTERL DAC 0 ERROR FLAG ! 3115: > TTINS DAC 0 NON-ZERO IF STD INPUT FROM TERML ! 3116: > TTLEN DAC 0 LENGTH OF TERMINAL BUFFER ! 3117: > TTLST DAC 0 COPY STD O/P TO TERML IF SET ! 3118: > TTOFS DAC 0 OFFSET TO POSITION IN TERML BFR ! 3119: > TTOUS DAC 0 SET IF STD OUTPUT TO TERMINAL ! 3120: > * ! 3121: 6136a4984,4985 ! 3122: > XSCBL DAC 0 COUNT OF TRAILING BLANKS ! 3123: > XSCNB DAC 0 NON-ZERO IF NON-BLANKS SEEN ! 3124: 6155a5005 ! 3125: > * (WA) INITIAL &CODE VALUE ! 3126: 6158c5008,5010 ! 3127: < JSR SYSTM INITIALISE TIMER ! 3128: --- ! 3129: > * ! 3130: > INITL RTN INITIALISATION CODE ! 3131: > MOV WA,INICD SAVE INITIAL CODE KYWD VALUE ! 3132: 6160d5011 ! 3133: < STI TIMSX STORE TIME ! 3134: 6196c5047 ! 3135: < MOV WA,CSWIN -IN72 ! 3136: --- ! 3137: > MOV WA,CSWIN STORE FOR LATER USE ! 3138: 6206d5056 ! 3139: < STI TIMSX STORE TIME IN CORRECT PLACE ! 3140: 6211a5062,5068 ! 3141: > .IF .CSIG ! 3142: > MNZ CSWCI -CASEIG ! 3143: > .FI ! 3144: > JSR SYSTM INITIALISE TIMER ! 3145: > STI TIMSX STORE TIME ! 3146: > LDI INICD LOAD INITIAL CODE KWD VALUE ! 3147: > STI KVCOD STORE ! 3148: 6247a5105,5106 ! 3149: > ADD TTLEN,WA ADD TERMINAL BUFFER LENGTH ! 3150: > ADD WA,WA ALLOW FOR EQUALLY BIG BLANK STRINGS ! 3151: 6250c5109 ! 3152: < CTB WA,8 CONVERT TO BYTES, ALLOWING A MARGIN ! 3153: --- ! 3154: > CTB WA,8 CONVERT TO BAUS, ALLOWING A MARGIN ! 3155: 6258c5117 ! 3156: < BGT XR,WA,INI06 SKIP IF STATIC HI EXCEEDS MXLEN ! 3157: --- ! 3158: > BGT XR,WA,INI05 SKIP IF STATIC HI EXCEEDS MXLEN ! 3159: 6265c5124 ! 3160: < INI06 MOV XR,DNAMB DYNAMIC BASE ADRS ! 3161: --- ! 3162: > INI05 MOV XR,DNAMB DYNAMIC BASE ADRS ! 3163: 6267c5126 ! 3164: ! 3165: ! 3166: ! 3167: ! 3168: ! 3169: ! 3170: ! 3171: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 49 ! 3172: ! 3173: ! 3174: < BNZ WA,INI07 SKIP IF NON-ZERO MXLEN ! 3175: --- ! 3176: > BNZ WA,INI06 SKIP IF NON-ZERO MXLEN ! 3177: 6271d5129 ! 3178: < EJC ! 3179: 6276,6277c5134,5135 ! 3180: < INI07 MOV XL,DNAME STORE DYNAMIC END ADDRESS ! 3181: < BLT DNAMB,XL,INI09 SKIP IF HIGH ENOUGH ! 3182: --- ! 3183: > INI06 MOV XL,DNAME STORE DYNAMIC END ADDRESS ! 3184: > BLT DNAMB,XL,INI08 SKIP IF HIGH ENOUGH ! 3185: 6279c5137 ! 3186: < WTB XR GET AS BAUS (SGD05) ! 3187: --- ! 3188: > WTB XR CONVERT TO BAUS ! 3189: 6281c5139 ! 3190: < BNZ XR,INI07 TRY AGAIN ! 3191: --- ! 3192: > BNZ XR,INI06 TRY AGAIN ! 3193: 6283c5141 ! 3194: < MOV ENDML,WA MESSAGE LENGTH ! 3195: --- ! 3196: > MOV ENDML,WC MESSAGE LENGTH ! 3197: 6285c5143,5148 ! 3198: < PPM SHOULD NOT FAIL ! 3199: --- ! 3200: > PPM INI07 ! 3201: > PPM INI07 ! 3202: > * ! 3203: > * EMERGENCY SHUTDOWN ! 3204: > * ! 3205: > INI07 MOV =KVCOD,WA CODE KEYWORD ! 3206: 6286a5150 ! 3207: > EJC ! 3208: 6290c5154 ! 3209: < INI09 MOV PRLEN,WC NO. OF CHARS IN PRINT BFR ! 3210: --- ! 3211: > INI08 MOV PRLEN,WA NO. OF CHARS IN PRINT BFR ! 3212: 6294,6297c5158,5169 ! 3213: < MOV WC,(XR)+ AND STRING LENGTH ! 3214: < CTW WC,0 GET NUMBER OF WORDS IN BUFFER ! 3215: < MOV WC,PRLNW STORE FOR BUFFER CLEAR ! 3216: < LCT WC,WC WORDS TO CLEAR ! 3217: --- ! 3218: > MOV WA,(XR)+ AND STRING LENGTH ! 3219: > MOV XR,PRCHS KEEP ADRS OF BUFFER PROPER ! 3220: > MOV XR,XL COPY IT ! 3221: > CTB WA,0 WORDS NEEDED EXPRESSED IN BAUS ! 3222: > MOV WA,PRCMV KEEP FOR CLEARING BUFFER ! 3223: > MOV XR,PRBLK CONSTRUCT ADRS OF BLANKING STRING ! 3224: > ADD WA,PRBLK ADD OFFSET TO BLANKING STRING ! 3225: > ADD WA,WA CLEAR BOTH BFR AND BLANKING STRING ! 3226: > MOV NULLW,(XR)+ CLEAR FIRST WORD ! 3227: > BZE WA,INI09 SKIP IF NO PRINT BUFFER ! 3228: > DCA WA ADJUST FOR FIRST WORD ! 3229: > MVW PERFORM BLANKING ! 3230: ! 3231: ! 3232: ! 3233: ! 3234: ! 3235: ! 3236: ! 3237: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 50 ! 3238: ! 3239: ! 3240: 6299c5171 ! 3241: < * LOOP TO CLEAR BUFFER ! 3242: --- ! 3243: > * SET UP TERMINAL BUFFER ! 3244: 6301,6302c5173,5187 ! 3245: < INI10 MOV NULLW,(XR)+ STORE BLANK ! 3246: < BCT WC,INI10 LOOP ! 3247: --- ! 3248: > INI09 MOV TTLEN,WA LENGTH OF TERMINAL BUFFER ! 3249: > MOV XR,TTBUF ADRS OF TERMINAL STRING BUFFER ! 3250: > MOV =B$SCL,(XR)+ STRING TYPE CODE ! 3251: > MOV WA,(XR)+ STRING LENGTH ! 3252: > MOV XR,TTCHS KEEP ADRS OF BUFFER PROPER ! 3253: > MOV XR,XL COPY IT ! 3254: > CTB WA,0 WORDS NEEDED EXPRESSED IN BAUS ! 3255: > MOV WA,TTCMV KEEP FOR CLEARING BUFFER ! 3256: > MOV XR,TTBLK CONSTRUCT ADRS OF BLANKING STRING ! 3257: > ADD WA,TTBLK ADD OFFSET TO BLANKING STRING ! 3258: > ADD WA,WA CLEAR BOTH BFR AND BLANKING STRING ! 3259: > MOV NULLW,(XR)+ CLEAR FIRST WORD ! 3260: > BZE WA,INI10 SKIP IF NO PRINT BUFFER ! 3261: > DCA WA ADJUST FOR FIRST WORD ! 3262: > MVW PERFORM BLANKING ! 3263: 6306c5191 ! 3264: < MOV =E$HNB,WA GET NUMBER OF HASH HEADERS ! 3265: --- ! 3266: > INI10 MOV =E$HNB,WA GET NUMBER OF HASH HEADERS ! 3267: 6321c5206 ! 3268: < CTB WA,SCSI$ NO OF BYTES NEEDED ! 3269: --- ! 3270: > CTB WA,SCSI$ NO OF BAUS NEEDED ! 3271: 6333c5218 ! 3272: < CTB WB,SCSI$ NO. OF BYTES NEEDED ! 3273: --- ! 3274: > CTB WB,SCSI$ NO. OF BAUS NEEDED ! 3275: 6347c5232 ! 3276: < * INITIALIZE VARIABLE BLOCKS FOR INPUT AND OUTPUT ! 3277: --- ! 3278: > * INITIALIZE VARIABLE BLOCKS FOR INPUT OUTPUT TERMINAL ! 3279: 6355,6357c5240,5246 ! 3280: < MOV INITR,WC TERMINAL FLAG ! 3281: < BZE WC,INI13 SKIP IF NO TERMINAL ! 3282: < JSR PRPAR ASSOCIATE TERMINAL ! 3283: --- ! 3284: > BZE TTLEN,INI13 SKIP IF NO TERMINAL I/O ! 3285: > MOV =V$TER,XL POINT TO STRING /TERMINAL/ ! 3286: > MOV =TRTOU,WB TRTYP FOR OUTPUT ! 3287: > JSR INOUT PERFORM ASSOCIATION ! 3288: > MOV =V$TER,XL ! 3289: > MOV =TRTIN,WB TRTYP FOR INPUT ! 3290: > JSR INOUT PERFORM ASSOCIATION ! 3291: 6360d5248 ! 3292: < * CHECK FOR EXPIRY DATE ! 3293: 6362,6363c5250 ! 3294: < INI13 JSR SYSDC CALL DATE CHECK ! 3295: < MOV XS,FLPTR IN CASE STACK OVERFLOWS IN COMPILER ! 3296: ! 3297: ! 3298: ! 3299: ! 3300: ! 3301: ! 3302: ! 3303: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 51 ! 3304: ! 3305: ! 3306: --- ! 3307: > * PREPARE FOR COMPILATION ! 3308: 6364a5252,5253 ! 3309: > INI13 MOV XS,FLPTR IN CASE STACK OVERFLOWS IN COMPILER ! 3310: > * ! 3311: 6369,6370c5258,5259 ! 3312: < MOV =NULLS,R$TTL FORGET TITLE (REG04) ! 3313: < MOV =NULLS,R$STL FORGET SUB-TITLE (REG04) ! 3314: --- ! 3315: > MOV =NULLS,R$TTL FORGET TITLE ! 3316: > MOV =NULLS,R$STL FORGET SUB-TITLE ! 3317: 6375c5264 ! 3318: < BNZ CPSTS,INIX0 SKIP IF NO LISTING OF COMP STATS ! 3319: --- ! 3320: > BNZ CPSTS,INIX1 SKIP IF NO LISTING OF COMP STATS ! 3321: 6404,6407d5292 ! 3322: < .IF .CUEJ ! 3323: < BZE HEADP,INIX0 NO EJECT IF NOTHING PRINTED (SDG11) ! 3324: < JSR PRTPG EJECT PRINTER ! 3325: < .FI ! 3326: 6412d5296 ! 3327: < * SET DEFAULT INPUT RECORD LENGTH ! 3328: 6414,6415c5298 ! 3329: < INIX0 BGT CSWIN,=INILN,INIX1 SKIP IF NOT DEFAULT -IN72 USED ! 3330: < MOV =INILS,CSWIN ELSE USE DEFAULT RECORD LENGTH ! 3331: --- ! 3332: > * CHECK FOR NOEXECUTE ! 3333: 6417,6422c5300 ! 3334: < * RESET TIMER ! 3335: < * ! 3336: < INIX1 JSR SYSTM GET TIME AGAIN ! 3337: < STI TIMSX STORE FOR END RUN PROCESSING ! 3338: < ADD CSWEX,NOXEQ ADD -NOEXECUTE FLAG ! 3339: < BNZ NOXEQ,INIX2 JUMP IF EXECUTION SUPPRESSED ! 3340: --- ! 3341: > INIX1 BNZ NOXEQ,INIX3 JUMP IF EXECUTION SUPPRESSED ! 3342: 6424,6429c5302,5303 ! 3343: < JSR SYSBX CALL BEFORE STARTING EXECUTION ! 3344: < .IF .CUEJ ! 3345: < .ELSE ! 3346: < BZE HEADP,INIY0 NO EJECT IF NOTHING PRINTED (SGD11) ! 3347: < JSR PRTPG EJECT PRINTER ! 3348: < .FI ! 3349: --- ! 3350: > BZE HEADP,INIX2 SKIP IF NO PRTPG CALLS IN COMPILN ! 3351: > JSR PRTPG EJECT STANDARD PRINTER FILE ! 3352: 6431c5305 ! 3353: < * MERGE WHEN LISTING FILE SET FOR EXECUTION ! 3354: --- ! 3355: > * INFORM OSINT OF STAGE ! 3356: 6433c5307 ! 3357: < INIY0 MNZ HEADP MARK HEADERS OUT REGARDLESS ! 3358: --- ! 3359: > INIX2 JSR SYSBX CALL BEFORE STARTING EXECUTION ! 3360: 6437a5312,5313 ! 3361: > JSR SYSTM GET TIME ! 3362: ! 3363: ! 3364: ! 3365: ! 3366: ! 3367: ! 3368: ! 3369: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 52 ! 3370: ! 3371: ! 3372: > STI TIMSX STORE FOR END RUN PROCESSING ! 3373: 6440,6442c5316,5317 ! 3374: < MOV CMPSN,PFNTE COPY STMTS COMPILED COUNT IN CASE ! 3375: < JSR SYSTM TIME YET AGAIN ! 3376: < STI PFSTM ! 3377: --- ! 3378: > STI PFSTM STORE TIME FOR PROFILER ! 3379: > MOV CMPSN,PFNTE COPY STATEMENTS COMPILED COUNT ! 3380: 6448c5323 ! 3381: < INIX2 JSR PRTNL PRINT A BLANK LINE ! 3382: --- ! 3383: > INIX3 JSR PRTFH PRINT A BLANK LINE ! 3384: 6450,6453c5325,5327 ! 3385: < JSR PRTST PRINT STRING ! 3386: < JSR PRTNL OUTPUT LINE ! 3387: < ZER WA SET ABEND VALUE TO ZERO ! 3388: < MOV =NINI9,WB SET SPECIAL CODE VALUE ! 3389: --- ! 3390: > MOV TTERL,TTLST TO FORCE MSG TO TERMINAL ! 3391: > JSR PRTSF PRINT NOEXECUTE MESSAGE ! 3392: > MOV =KVCOD,WA ENDING CODE ! 3393: 6500c5374 ! 3394: < ERB 261,ADDITION CAUSED REAL OVERFLOW ! 3395: --- ! 3396: > ERB 004,ADDITION CAUSED REAL OVERFLOW ! 3397: 6509c5383 ! 3398: < ERR 004,AFFIRMATION OPERAND IS NOT NUMERIC ! 3399: --- ! 3400: > ERR 005,AFFIRMATION OPERAND IS NOT NUMERIC ! 3401: 6518c5392 ! 3402: < ERR 005,ALTERNATION RIGHT OPERAND IS NOT PATTERN ! 3403: --- ! 3404: > ERR 006,ALTERNATION RIGHT OPERAND IS NOT PATTERN ! 3405: 6527c5401 ! 3406: < ERR 006,ALTERNATION LEFT OPERAND IS NOT PATTERN ! 3407: --- ! 3408: > ERR 007,ALTERNATION LEFT OPERAND IS NOT PATTERN ! 3409: 6551d5424 ! 3410: < EJC ! 3411: 6559d5431 ! 3412: < EJC ! 3413: 6583c5455 ! 3414: < WTB WA CONVERT TO BYTES ! 3415: --- ! 3416: > WTB WA CONVERT TO BAUS ! 3417: 6622c5494 ! 3418: < WTB WA CONVERT TO BYTES ! 3419: --- ! 3420: > WTB WA CONVERT TO BAUS ! 3421: 6636c5508 ! 3422: < * ASSIGNMENT ! 3423: --- ! 3424: > * ASSIGNMENT (O$RPL MERGES) ! 3425: 6639,6642c5511 ! 3426: < * ! 3427: < * O$RPL (PATTERN REPLACEMENT) MERGES HERE ! 3428: ! 3429: ! 3430: ! 3431: ! 3432: ! 3433: ! 3434: ! 3435: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 53 ! 3436: ! 3437: ! 3438: < * ! 3439: < OASS0 MOV (XS)+,WB LOAD VALUE TO BE ASSIGNED ! 3440: --- ! 3441: > MOV (XS)+,WB LOAD VALUE TO BE ASSIGNED ! 3442: 6649d5517 ! 3443: < EJC ! 3444: 6654,6655c5522 ! 3445: < ERB 007,COMPILATION ERROR ENCOUNTERED DURING EXECUTION ! 3446: < EJC ! 3447: --- ! 3448: > ERB 008,COMPILATION ERROR ENCOUNTERED DURING EXECUTION ! 3449: 6729c5596 ! 3450: < ERR 008,CONCATENATION LEFT OPND IS NOT STRING OR PATTERN ! 3451: --- ! 3452: > ERR 009,CONCATENATION LEFT OPND IS NOT STRING OR PATTERN ! 3453: 6733c5600 ! 3454: < ERR 009,CONCATENATION RIGHT OPD IS NOT STRING OR PATTERN ! 3455: --- ! 3456: > ERR 010,CONCATENATION RIGHT OPD IS NOT STRING OR PATTERN ! 3457: 6754c5621 ! 3458: < ERR 010,COMPLEMENTATION OPERAND IS NOT NUMERIC ! 3459: --- ! 3460: > ERR 011,COMPLEMENTATION OPERAND IS NOT NUMERIC ! 3461: 6762c5629 ! 3462: < ERB 011,COMPLEMENTATION CAUSED INTEGER OVERFLOW ! 3463: --- ! 3464: > ERB 012,COMPLEMENTATION CAUSED INTEGER OVERFLOW ! 3465: 6778,6779c5645,5646 ! 3466: < ERR 012,DIVISION LEFT OPERAND IS NOT NUMERIC ! 3467: < ERR 013,DIVISION RIGHT OPERAND IS NOT NUMERIC ! 3468: --- ! 3469: > ERR 013,DIVISION LEFT OPERAND IS NOT NUMERIC ! 3470: > ERR 014,DIVISION RIGHT OPERAND IS NOT NUMERIC ! 3471: 6789c5656 ! 3472: < ERB 014,DIVISION CAUSED INTEGER OVERFLOW ! 3473: --- ! 3474: > ERB 015,DIVISION CAUSED INTEGER OVERFLOW ! 3475: 6797c5664 ! 3476: < ERB 262,DIVISION CAUSED REAL OVERFLOW ! 3477: --- ! 3478: > ERB 016,DIVISION CAUSED REAL OVERFLOW ! 3479: 6806c5673 ! 3480: < ERR 015,EXPONENTIATION RIGHT OPERAND IS NOT NUMERIC ! 3481: --- ! 3482: > ERR 017,EXPONENTIATION RIGHT OPERAND IS NOT NUMERIC ! 3483: 6814c5681 ! 3484: < ERR 016,EXPONENTIATION LEFT OPERAND IS NOT NUMERIC ! 3485: --- ! 3486: > ERR 018,EXPONENTIATION LEFT OPERAND IS NOT NUMERIC ! 3487: 6840c5707 ! 3488: < OEXP2 ERB 017,EXPONENTIATION CAUSED INTEGER OVERFLOW ! 3489: --- ! 3490: > OEXP2 ERB 019,EXPONENTIATION CAUSED INTEGER OVERFLOW ! 3491: 6858c5725 ! 3492: < OEXP4 ERB 018,EXPONENTIATION RESULT IS UNDEFINED ! 3493: --- ! 3494: ! 3495: ! 3496: ! 3497: ! 3498: ! 3499: ! 3500: ! 3501: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 54 ! 3502: ! 3503: ! 3504: > OEXP4 ERB 020,EXPONENTIATION RESULT IS UNDEFINED ! 3505: 6871c5738 ! 3506: < OEXP6 ERB 266,EXPONENTIATION CAUSED REAL OVERFLOW ! 3507: --- ! 3508: > OEXP6 ERB 021,EXPONENTIATION CAUSED REAL OVERFLOW ! 3509: 6875c5742 ! 3510: < OEXP7 ERB 267,EXPONENTIATION RIGHT OPERAND IS REAL NOT INTEGER ! 3511: --- ! 3512: > OEXP7 ERB 022,EXPONENTIATION RIGHT OPERAND IS REAL NOT INTEGER ! 3513: 6880c5747 ! 3514: < OEXP8 ERB 019,EXPONENTIATION RIGHT OPERAND IS NEGATIVE ! 3515: --- ! 3516: > OEXP8 ERB 023,EXPONENTIATION RIGHT OPERAND IS NEGATIVE ! 3517: 6890,6891c5757 ! 3518: < BRN EVLX6 JUMP TO FAILURE LOC IN EVALX ! 3519: < EJC ! 3520: --- ! 3521: > JMG EVLXF JUMP TO FAILURE LOC IN EVALX ! 3522: 6896,6897c5762 ! 3523: < ERB 020,GOTO EVALUATION FAILURE ! 3524: < EJC ! 3525: --- ! 3526: > ERB 024,GOTO EVALUATION FAILURE ! 3527: 6907d5771 ! 3528: < EJC ! 3529: 6914c5778,5779 ! 3530: < BZE 2(XS),EVLX3 OK IF EXPR. WAS WANTED BY VALUE ! 3531: --- ! 3532: > BNZ 2(XS),OFNE1 FAIL UNLESS EXPRN WANTED BY VALUE ! 3533: > JMG EVLXV JOIN EXPRESSION BY VALUE CODE ! 3534: 6918,6919c5783 ! 3535: < OFNE1 ERB 021,FUNCTION CALLED BY NAME RETURNED A VALUE ! 3536: < EJC ! 3537: --- ! 3538: > OFNE1 ERB 025,FUNCTION CALLED BY NAME RETURNED A VALUE ! 3539: 6933,6934c5797 ! 3540: < ERB 022,UNDEFINED FUNCTION CALLED ! 3541: < EJC ! 3542: --- ! 3543: > ERB 026,UNDEFINED FUNCTION CALLED ! 3544: 6946,6947c5809 ! 3545: < OGOC1 ERB 023,GOTO OPERAND IS NOT A NATURAL VARIABLE ! 3546: < EJC ! 3547: --- ! 3548: > OGOC1 ERB 027,GOTO OPERAND IS NOT A NATURAL VARIABLE ! 3549: 6954,6957c5816,5818 ! 3550: < BEQ WA,=B$CDS,BCDS0 JUMP IF CODE BLOCK TO CODE ROUTINE ! 3551: < BEQ WA,=B$CDC,BCDC0 JUMP IF CODE BLOCK TO CODE ROUTINE ! 3552: < ERB 024,GOTO OPERAND IN DIRECT GOTO IS NOT CODE ! 3553: < EJC ! 3554: --- ! 3555: > BEQ WA,=B$CDC,OGOD1 JUMP IF CODE BLOCK ! 3556: > BEQ WA,=B$CDS,OGOD2 JUMP IF CODE BLOCK ! 3557: > ERB 028,GOTO OPERAND IN DIRECT GOTO IS NOT CODE ! 3558: 6958a5820,5831 ! 3559: > * CASE OF COMPLEX FAILURE CODE ! 3560: ! 3561: ! 3562: ! 3563: ! 3564: ! 3565: ! 3566: ! 3567: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 55 ! 3568: ! 3569: ! 3570: > * ! 3571: > OGOD1 MOV FLPTR,XS POP GARBAGE OFF STACK ! 3572: > MOV CDFAL(XR),(XS) SET NEW FAILURE OFFSET ! 3573: > BRN STMGO JUMP TO EXECUTE CODE ! 3574: > * ! 3575: > * CASE OF SIMPLE FAILURE CODE ! 3576: > * ! 3577: > OGOD2 MOV FLPTR,XS POP GARBAGE OFF STACK ! 3578: > MOV *CDFAL,(XS) SET NEW FAILURE OFFSET ! 3579: > BRN STMGO JUMP TO EXECUTE CODE ! 3580: > * ! 3581: 6985c5858 ! 3582: < ERR 025,IMMEDIATE ASSIGNMENT LEFT OPERAND IS NOT PATTERN ! 3583: --- ! 3584: > ERR 029,IMMEDIATE ASSIGNMENT LEFT OPERAND IS NOT PATTERN ! 3585: 6992d5864 ! 3586: < EJC ! 3587: 6999d5870 ! 3588: < EJC ! 3589: 7006d5876 ! 3590: < EJC ! 3591: 7020d5889 ! 3592: < EJC ! 3593: 7030d5898 ! 3594: < EJC ! 3595: 7044d5911 ! 3596: < EJC ! 3597: 7060d5926 ! 3598: < EJC ! 3599: 7066,7067c5932,5933 ! 3600: < ERR 026,MULTIPLICATION LEFT OPERAND IS NOT NUMERIC ! 3601: < ERR 027,MULTIPLICATION RIGHT OPERAND IS NOT NUMERIC ! 3602: --- ! 3603: > ERR 030,MULTIPLICATION LEFT OPERAND IS NOT NUMERIC ! 3604: > ERR 031,MULTIPLICATION RIGHT OPERAND IS NOT NUMERIC ! 3605: 7077c5943 ! 3606: < ERB 028,MULTIPLICATION CAUSED INTEGER OVERFLOW ! 3607: --- ! 3608: > ERB 032,MULTIPLICATION CAUSED INTEGER OVERFLOW ! 3609: 7085c5951 ! 3610: < ERB 263,MULTIPLICATION CAUSED REAL OVERFLOW ! 3611: --- ! 3612: > ERB 033,MULTIPLICATION CAUSED REAL OVERFLOW ! 3613: 7087d5952 ! 3614: < EJC ! 3615: 7123d5987 ! 3616: < EJC ! 3617: 7128,7129c5992 ! 3618: < ERB 029,UNDEFINED OPERATOR REFERENCED ! 3619: < EJC ! 3620: --- ! 3621: > ERB 034,UNDEFINED OPERATOR REFERENCED ! 3622: 7145c6008 ! 3623: < ERR 030,PATTERN ASSIGNMENT LEFT OPERAND IS NOT PATTERN ! 3624: --- ! 3625: > ERR 035,PATTERN ASSIGNMENT LEFT OPERAND IS NOT PATTERN ! 3626: ! 3627: ! 3628: ! 3629: ! 3630: ! 3631: ! 3632: ! 3633: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 56 ! 3634: ! 3635: ! 3636: 7159d6021 ! 3637: < EJC ! 3638: 7170d6031 ! 3639: < EJC ! 3640: 7177d6037 ! 3641: < EJC ! 3642: 7184d6043 ! 3643: < EJC ! 3644: 7189,7190c6048,6050 ! 3645: < BRN LEND0 JUMP TO END CIRCUIT ! 3646: < EJC ! 3647: --- ! 3648: > MOV =ENDMS,XR ENDING MESSAGE ! 3649: > ZER WA NO ERROR CODE ! 3650: > BRN STOPR STOP THE RUN ! 3651: 7198c6058 ! 3652: < BRN EVLX4 RETURN TO EVALX PROCEDURE ! 3653: --- ! 3654: > JMG EVLXN RETURN TO EVALX PROCEDURE ! 3655: 7210c6070 ! 3656: < * SUBJECT POINTER ! 3657: --- ! 3658: > * SUBJECT STRING POINTER ! 3659: 7215c6075 ! 3660: < ERR 031,PATTERN REPLACEMENT RIGHT OPERAND IS NOT STRING ! 3661: --- ! 3662: > ERR 036,PATTERN REPLACEMENT RIGHT OPERAND IS NOT STRING ! 3663: 7222c6082 ! 3664: < BEQ (XL),=B$BCT,ORPL4 BRANCH IF BUFFER ASSIGNMENT ! 3665: --- ! 3666: > BEQ (XL),=B$BCT,ORPL5 BRANCH IF BUFFER ASSIGNMENT ! 3667: 7257c6117 ! 3668: < BZE WA,OASS0 JUMP TO ASSIGN IF PART 3 IS NULL ! 3669: --- ! 3670: > BZE WA,ORPL4 JUMP TO ASSIGN IF PART 3 IS NULL ! 3671: 7260c6120 ! 3672: < BRN OASS0 JUMP TO PERFORM ASSIGNMENT ! 3673: --- ! 3674: > BRN ORPL4 JUMP TO PERFORM ASSIGNMENT ! 3675: 7266c6126,6130 ! 3676: < BRN OASS0 JUMP TO ASSIGN NULL VALUE ! 3677: --- ! 3678: > * ! 3679: > * MERGE WITH ASSIGNMENT ROUTINE ! 3680: > * ! 3681: > ORPL4 MOV =O$ASS,XL CONTINUATION ROUTINE ! 3682: > BRI XL ENTER ROUTINE ! 3683: 7272c6136 ! 3684: < ORPL4 MOV XR,XL COPY SCBLK REPLACEMENT PTR ! 3685: --- ! 3686: > ORPL5 MOV XR,XL COPY SCBLK REPLACEMENT PTR ! 3687: 7292c6156 ! 3688: < BRN EVLX3 RETURN TO EVALX PROCEDURE ! 3689: --- ! 3690: > BRN EVLXV RETURN TO EVALX PROCEDURE ! 3691: 7337,7338c6201,6202 ! 3692: ! 3693: ! 3694: ! 3695: ! 3696: ! 3697: ! 3698: ! 3699: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 57 ! 3700: ! 3701: ! 3702: < ERR 032,SUBTRACTION LEFT OPERAND IS NOT NUMERIC ! 3703: < ERR 033,SUBTRACTION RIGHT OPERAND IS NOT NUMERIC ! 3704: --- ! 3705: > ERR 037,SUBTRACTION LEFT OPERAND IS NOT NUMERIC ! 3706: > ERR 038,SUBTRACTION RIGHT OPERAND IS NOT NUMERIC ! 3707: 7348c6212 ! 3708: < ERB 034,SUBTRACTION CAUSED INTEGER OVERFLOW ! 3709: --- ! 3710: > ERB 039,SUBTRACTION CAUSED INTEGER OVERFLOW ! 3711: 7356c6220 ! 3712: < ERB 264,SUBTRACTION CAUSED REAL OVERFLOW ! 3713: --- ! 3714: > ERB 040,SUBTRACTION CAUSED REAL OVERFLOW ! 3715: 7358d6221 ! 3716: < EJC ! 3717: 7363,7364c6226 ! 3718: < BRN TRXQ1 JUMP INTO TRXEQ PROCEDURE ! 3719: < EJC ! 3720: --- ! 3721: > JMG TRXQR JUMP INTO TRXEQ PROCEDURE ! 3722: 7375c6237 ! 3723: < ERB 035,UNEXPECTED FAILURE IN -NOFAIL MODE ! 3724: --- ! 3725: > ERB 041,UNEXPECTED FAILURE IN -NOFAIL MODE ! 3726: 7387d6248 ! 3727: < EJC ! 3728: 7391a6253,6255 ! 3729: > MOV KVERT,WA LOAD ERROR CODE ! 3730: > ZER XR INDICATE NO ENDING MESSAGE ! 3731: > BNZ WA,STOPR STOP RUN ! 3732: 7393d6256 ! 3733: < * MERGE HERE IF EXECUTION TERMINATES IN ERROR ! 3734: 7395,7404c6258 ! 3735: < LABO1 MOV KVERT,WA LOAD ERROR CODE ! 3736: < BZE WA,LABO2 JUMP IF NO ERROR HAS OCCURED ! 3737: < .IF .CSAX ! 3738: < JSR SYSAX CALL AFTER EXECUTION PROC (REG04) ! 3739: < .ELSE ! 3740: < .FI ! 3741: < JSR PRTPG ELSE EJECT PRINTER ! 3742: < JSR ERMSG PRINT ERROR MESSAGE ! 3743: < ZER XR INDICATE NO MESSAGE TO PRINT ! 3744: < BRN STOPR JUMP TO ROUTINE TO STOP RUN ! 3745: --- ! 3746: > * FAIL IF NO ERROR HAD OCCURED ! 3747: 7406c6260 ! 3748: < * HERE IF NO ERROR HAD OCCURED ! 3749: --- ! 3750: > ERB 042,GOTO ABORT WITH NO PRECEDING ERROR ! 3751: 7408,7410d6261 ! 3752: < LABO2 ERB 036,GOTO ABORT WITH NO PRECEDING ERROR ! 3753: < EJC ! 3754: < * ! 3755: 7417,7418c6268,6269 ! 3756: < LCNT1 MOV R$CNT,XR LOAD CONTINUATION CODE BLOCK PTR ! 3757: < BZE XR,LCNT2 JUMP IF NO PREVIOUS ERROR ! 3758: ! 3759: ! 3760: ! 3761: ! 3762: ! 3763: ! 3764: ! 3765: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 58 ! 3766: ! 3767: ! 3768: --- ! 3769: > LCNXE MOV R$CNT,XR LOAD CONTINUATION CODE BLOCK PTR ! 3770: > BZE XR,LCNT1 JUMP IF NO PREVIOUS ERROR ! 3771: 7428c6279 ! 3772: < LCNT2 ERB 037,GOTO CONTINUE WITH NO PRECEDING ERROR ! 3773: --- ! 3774: > LCNT1 ERB 043,GOTO CONTINUE WITH NO PRECEDING ERROR ! 3775: 7434,7437c6285,6286 ! 3776: < * ! 3777: < * MERGE HERE FROM END CODE CIRCUIT ! 3778: < * ! 3779: < LEND0 MOV =ENDMS,XR POINT TO MESSAGE /NORMAL TERM../ ! 3780: --- ! 3781: > MOV =ENDMS,XR POINT TO MESSAGE /NORMAL TERM../ ! 3782: > ZER WA NO ERROR CODE ! 3783: 7439d6287 ! 3784: < EJC ! 3785: 7446d6293 ! 3786: < EJC ! 3787: 7453d6299 ! 3788: < EJC ! 3789: 7460d6305 ! 3790: < EJC ! 3791: 7465c6310 ! 3792: < ERB 038,GOTO UNDEFINED LABEL ! 3793: --- ! 3794: > ERB 044,GOTO UNDEFINED LABEL ! 3795: 7523d6367 ! 3796: < EJC ! 3797: 7536d6379 ! 3798: < EJC ! 3799: 7547d6389 ! 3800: < EJC ! 3801: 7565d6406 ! 3802: < EJC ! 3803: 7582d6422 ! 3804: < EJC ! 3805: 7594c6434 ! 3806: < BCDC0 MOV FLPTR,XS POP GARBAGE OFF STACK ! 3807: --- ! 3808: > MOV FLPTR,XS POP GARBAGE OFF STACK ! 3809: 7597d6436 ! 3810: < EJC ! 3811: 7599,7600d6437 ! 3812: < * CDBLK (CONTINUED) ! 3813: < * ! 3814: 7606c6443 ! 3815: < BCDS0 MOV FLPTR,XS POP GARBAGE OFF STACK ! 3816: --- ! 3817: > MOV FLPTR,XS POP GARBAGE OFF STACK ! 3818: 7609d6445 ! 3819: < EJC ! 3820: 7616d6451 ! 3821: < EJC ! 3822: 7617a6453,6458 ! 3823: > * COBLK ! 3824: ! 3825: ! 3826: ! 3827: ! 3828: ! 3829: ! 3830: ! 3831: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 59 ! 3832: ! 3833: ! 3834: > * ! 3835: > * THE ROUTINE FOR A COBLK IS NEVER EXECUTED ! 3836: > * ! 3837: > B$COP ENT BL$CO ENTRY POINT (COBLK) ! 3838: > * ! 3839: 7646a6488,6489 ! 3840: > .IF .CNLD ! 3841: > .ELSE ! 3842: 7657,7658d6499 ! 3843: < .IF .CNLD ! 3844: < .ELSE ! 3845: 7671,7676c6512 ! 3846: < .IF .CNRA ! 3847: < BSW XR,3 SWITCH ON TYPE ! 3848: < .ELSE ! 3849: < BSW XR,4 SWITCH ON TYPE ! 3850: < .FI ! 3851: < IFF 0,BEFC7 NO CONVERSION NEEDED ! 3852: --- ! 3853: > BSW XR,5,BEFC7 SWITCH ON EFTAR TYPE ! 3854: 7682a6519,6522 ! 3855: > .IF .CNBF ! 3856: > .ELSE ! 3857: > IFF 4,BEFCA BUFFER ! 3858: > .FI ! 3859: 7689c6529 ! 3860: < ERR 039,EXTERNAL FUNCTION ARGUMENT IS NOT STRING ! 3861: --- ! 3862: > ERR 045,EXTERNAL FUNCTION ARGUMENT IS NOT STRING ! 3863: 7700c6540 ! 3864: < ERR 040,EXTERNAL FUNCTION ARGUMENT IS NOT INTEGER ! 3865: --- ! 3866: > ERR 046,EXTERNAL FUNCTION ARGUMENT IS NOT INTEGER ! 3867: 7710,7711c6550 ! 3868: < ERR 265,EXTERNAL FUNCTION ARGUMENT IS NOT REAL ! 3869: < .FI ! 3870: --- ! 3871: > ERR 047,EXTERNAL FUNCTION ARGUMENT IS NOT REAL ! 3872: 7714a6554,6570 ! 3873: > .FI ! 3874: > .IF .CNBF ! 3875: > .ELSE ! 3876: > BRN BEFC5 MERGE ! 3877: > * ! 3878: > * HERE TO CONVERT BUFFER ! 3879: > * ! 3880: > BEFCA MOV (XT),XR LOAD ARGUMENT ! 3881: > MOV WC,BEFOF SAVE OFFSET ! 3882: > MOV XL,-(XS) SAVE EFBLK PTR ! 3883: > JSR GTBUF GET A BUFFER ! 3884: > ERR 259,EXTERNAL FUNCTION ARGUMENT IS NOT BUFFER ! 3885: > MOV (XS)+,XL RESTORE EFBLK PTR ! 3886: > * ! 3887: > * INTEGER AND REAL CASE MERGES HERE ! 3888: > * ! 3889: > .FI ! 3890: ! 3891: ! 3892: ! 3893: ! 3894: ! 3895: ! 3896: ! 3897: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 60 ! 3898: ! 3899: ! 3900: 7739c6595 ! 3901: < MOV EFRSL(XL),WB GET RESULT TYPE ID ! 3902: --- ! 3903: > MOV EFRSL(XL),WB GET RESULT TYPE ! 3904: 7764a6621 ! 3905: > BEQ WB,=NUM03,BEF10 YES JUMP ! 3906: 7765a6623,6627 ! 3907: > .IF .CNBF ! 3908: > .ELSE ! 3909: > MOV =B$BCT,WA BUFFER ! 3910: > BEQ WB,=NUM04,BEF10 YES JUMP ! 3911: > .FI ! 3912: 7780d6641 ! 3913: < EJC ! 3914: 7811,7812c6672 ! 3915: < BFFC2 ERB 041,FIELD FUNCTION ARGUMENT IS WRONG DATATYPE ! 3916: < EJC ! 3917: --- ! 3918: > BFFC2 ERB 048,FIELD FUNCTION ARGUMENT IS WRONG DATATYPE ! 3919: 7814,7815d6673 ! 3920: < * FFBLK (CONTINUED) ! 3921: < * ! 3922: 7851d6708 ! 3923: < EJC ! 3924: 7858d6714 ! 3925: < EJC ! 3926: 7871d6726 ! 3927: < EJC ! 3928: 7924c6779 ! 3929: < WTB WA CONVERT NO. OF ARGS TO BYTES OFFSET ! 3930: --- ! 3931: > WTB WA CONVERT NO. OF ARGS TO BAUS OFFSET ! 3932: 7989c6844 ! 3933: < * HERE IF &PROFILE = 1 ! 3934: --- ! 3935: > * HERE IF PROFILE = 1 ! 3936: 7998c6853 ! 3937: < * HERE IF &PROFILE = 2 ! 3938: --- ! 3939: > * HERE IF PROFILE = 2 ! 3940: 8007a6863 ! 3941: > EJC ! 3942: 8008a6865,6866 ! 3943: > * PFBLK (CONTINUED) ! 3944: > * ! 3945: 8078c6936 ! 3946: < WTB WB CONVERT TO BYTE OFFSET ! 3947: --- ! 3948: > WTB WB CONVERT TO BAU OFFSET ! 3949: 8095,8096c6953 ! 3950: < JSR PRTCH PRINT TO TERMINATE OUTPUT ! 3951: < JSR PRTNL TERMINATE PRINT LINE ! 3952: --- ! 3953: > JSR PRTCF PRINT TO TERMINATE OUTPUT ! 3954: 8122d6978 ! 3955: < EJC ! 3956: ! 3957: ! 3958: ! 3959: ! 3960: ! 3961: ! 3962: ! 3963: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 61 ! 3964: ! 3965: ! 3966: 8133d6988 ! 3967: < EJC ! 3968: 8140d6994 ! 3969: < EJC ! 3970: 8147d7000 ! 3971: < EJC ! 3972: 8176d7028 ! 3973: < EJC ! 3974: 8178,8179d7029 ! 3975: < * VRBLK (CONTINUED) ! 3976: < * ! 3977: 8185,8186c7035 ! 3978: < ERB 042,ATTEMPT TO CHANGE VALUE OF PROTECTED VARIABLE ! 3979: < EJC ! 3980: --- ! 3981: > ERB 049,ATTEMPT TO CHANGE VALUE OF PROTECTED VARIABLE ! 3982: 8188,8189d7036 ! 3983: < * VRBLK (CONTINUED) ! 3984: < * ! 3985: 8199d7045 ! 3986: < EJC ! 3987: 8201,8202d7046 ! 3988: < * VRBLK (CONTINUED) ! 3989: < * ! 3990: 8223d7066 ! 3991: < EJC ! 3992: 8225,8226d7067 ! 3993: < * VRBLK (CONTINUED) ! 3994: < * ! 3995: 8252,8253c7093 ! 3996: < JSR PRTCH PRINT IT ! 3997: < JSR PRTNL TERMINATE LINE ! 3998: --- ! 3999: > JSR PRTCF PRINT IT ! 4000: 8286d7125 ! 4001: < EJC ! 4002: 8593a7433,7434 ! 4003: > .IF .CNFN ! 4004: > .ELSE ! 4005: 8596,8597d7436 ! 4006: < * COMPOUNT PATTERN STRUCTURES (CONTINUED) ! 4007: < * ! 4008: 8627c7466,7467 ! 4009: < * STACK BACK PAST THE INNTER STACK BASE CREATED BY P$FNA ! 4010: --- ! 4011: > * STACK BACK PAST THE INNER STACK BASE CREATED BY P$FNA ! 4012: > .FI ! 4013: 8734d7573 ! 4014: < EJC ! 4015: 8743d7581 ! 4016: < EJC ! 4017: 8767d7604 ! 4018: < EJC ! 4019: 8784d7620 ! 4020: < EJC ! 4021: 8809d7644 ! 4022: ! 4023: ! 4024: ! 4025: ! 4026: ! 4027: ! 4028: ! 4029: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 62 ! 4030: ! 4031: ! 4032: < EJC ! 4033: 8811a7647 ! 4034: > * EXPRESSION ARGUMENT CASE MERGES ! 4035: 8817,8820c7653 ! 4036: < * ! 4037: < * EXPRESSION ARGUMENT CASE MERGES HERE ! 4038: < * ! 4039: < PANY1 BEQ WB,PMSSL,FAILP FAIL IF NO CHARACTERS LEFT ! 4040: --- ! 4041: > BEQ WB,PMSSL,FAILP FAIL IF NO CHARACTERS LEFT ! 4042: 8825c7658 ! 4043: < WTB WA CHANGE TO BYTE OFFSET ! 4044: --- ! 4045: > WTB WA CHANGE TO BAU OFFSET ! 4046: 8832d7664 ! 4047: < EJC ! 4048: 8838a7671 ! 4049: > MOV =P$ANY,WA PCODE FOR NEW NODE ! 4050: 8840c7673 ! 4051: < ERR 043,ANY EVALUATED ARGUMENT IS NOT STRING ! 4052: --- ! 4053: > ERR 050,ANY EVALUATED ARGUMENT IS NOT STRING ! 4054: 8842c7675 ! 4055: < PPM PANY1 MERGE MULTI-CHAR CASE IF OK ! 4056: --- ! 4057: > BRI XL MERGE MULTI-CHAR CASE IF OK ! 4058: 8859d7691 ! 4059: < EJC ! 4060: 8922a7755 ! 4061: > MOV =P$BRK,WA PCODE FOR NEW NODE ! 4062: 8924c7757 ! 4063: < ERR 044,BREAK EVALUATED ARGUMENT IS NOT STRING ! 4064: --- ! 4065: > ERR 051,BREAK EVALUATED ARGUMENT IS NOT STRING ! 4066: 8926,8927c7759 ! 4067: < PPM PBRK1 MERGE WITH MULTI-CHAR CASE IF OK ! 4068: < EJC ! 4069: --- ! 4070: > BRI XL MERGE WITH MULTI-CHAR CASE IF OK ! 4071: 8950a7783 ! 4072: > * EXPRESSION ARGUMENT CASE MERGES ! 4073: 8956,8959c7789 ! 4074: < * ! 4075: < * EXPRESSION ARGUMENT MERGES HERE ! 4076: < * ! 4077: < PBRK1 MOV PMSSL,WC LOAD SUBJECT STRING LENGTH ! 4078: --- ! 4079: > MOV PMSSL,WC LOAD SUBJECT STRING LENGTH ! 4080: 8971c7801 ! 4081: < WTB WA CONVERT TO BYTE OFFSET ! 4082: --- ! 4083: > WTB WA CONVERT TO BAU OFFSET ! 4084: 8993d7822 ! 4085: < EJC ! 4086: 9004a7834 ! 4087: > MOV =P$BRK,WA PCODE FOR NEW NODE ! 4088: ! 4089: ! 4090: ! 4091: ! 4092: ! 4093: ! 4094: ! 4095: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 63 ! 4096: ! 4097: ! 4098: 9006c7836 ! 4099: < ERR 045,BREAKX EVALUATED ARGUMENT IS NOT STRING ! 4100: --- ! 4101: > ERR 052,BREAKX EVALUATED ARGUMENT IS NOT STRING ! 4102: 9008,9009c7838 ! 4103: < PPM PBRK1 MERGE WITH BREAK IF ALL OK ! 4104: < EJC ! 4105: --- ! 4106: > BRI XL MERGE WITH BREAK IF ALL OK ! 4107: 9060c7889 ! 4108: < ERR 046,EXPRESSION DOES NOT EVALUATE TO PATTERN ! 4109: --- ! 4110: > ERR 053,EXPRESSION DOES NOT EVALUATE TO PATTERN ! 4111: 9068c7897,7908 ! 4112: < BRN PSTR1 ELSE MERGE WITH STRING CIRCUIT ! 4113: --- ! 4114: > MOV XR,PSAVE SAVE NODE PTR ! 4115: > MOV R$PMS,XR LOAD SUBJECT STRING PTR ! 4116: > PLC XR,WB POINT TO CURRENT CHAR ! 4117: > ADD SCLEN(XL),WB COMPUTE NEW CURSOR POSITION ! 4118: > BGT WB,PMSSL,FAILP FAIL IF PAST END OF STRING ! 4119: > MOV WB,PSAVC SAVE UPDATED CURSOR ! 4120: > MOV SCLEN(XL),WA NUMBER OF CHARS TO COMPARE ! 4121: > PLC XL POINT TO TEST STRING CHARS ! 4122: > CMC FAILP,FAILP COMPARE, FAIL IF UNEQUAL ! 4123: > MOV PSAVE,XR IF ALL MATCHED, RESTORE NODE PTR ! 4124: > MOV PSAVC,WB RESTORE UPDATED CURSOR ! 4125: > BRN SUCCP AND SUCCEED ! 4126: 9093d7932 ! 4127: < EJC ! 4128: 9102d7940 ! 4129: < * ! 4130: 9114c7952,7953 ! 4131: < EJC ! 4132: --- ! 4133: > .IF .CNFN ! 4134: > .ELSE ! 4135: 9128d7966 ! 4136: < EJC ! 4137: 9137d7974 ! 4138: < EJC ! 4139: 9155d7991 ! 4140: < EJC ! 4141: 9163a8000 ! 4142: > .FI ! 4143: 9180d8016 ! 4144: < EJC ! 4145: 9232d8067 ! 4146: < EJC ! 4147: 9251,9254c8086 ! 4148: < * ! 4149: < * EXPRESSION ARGUMENT CASE MERGES HERE ! 4150: < * ! 4151: < PLEN1 ADD PARM1(XR),WB PUSH CURSOR INDICATED AMOUNT ! 4152: --- ! 4153: > ADD PARM1(XR),WB PUSH CURSOR INDICATED AMOUNT ! 4154: ! 4155: ! 4156: ! 4157: ! 4158: ! 4159: ! 4160: ! 4161: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 64 ! 4162: ! 4163: ! 4164: 9257d8088 ! 4165: < EJC ! 4166: 9265,9266c8096,8097 ! 4167: < ERR 047,LEN EVALUATED ARGUMENT IS NOT INTEGER ! 4168: < ERR 048,LEN EVALUATED ARGUMENT IS NEGATIVE OR TOO LARGE ! 4169: --- ! 4170: > ERR 054,LEN EVALUATED ARGUMENT IS NOT INTEGER ! 4171: > ERR 055,LEN EVALUATED ARGUMENT IS NEGATIVE OR TOO LARGE ! 4172: 9268c8099,8101 ! 4173: < PPM PLEN1 MERGE WITH NORMAL CIRCUIT IF OK ! 4174: --- ! 4175: > ADD PARM1(XR),WB PUSH CURSOR INDICATED AMOUNT ! 4176: > BLE WB,PMSSL,SUCCP SUCCEED IF NOT OFF END ! 4177: > BRN FAILP ELSE FAIL ! 4178: 9275a8109 ! 4179: > MOV =P$NAY,WA PCODE FOR NEW NODE ! 4180: 9277c8111 ! 4181: < ERR 049,NOTANY EVALUATED ARGUMENT IS NOT STRING ! 4182: --- ! 4183: > ERR 056,NOTANY EVALUATED ARGUMENT IS NOT STRING ! 4184: 9279c8113 ! 4185: < PPM PNAY1 MERGE WITH MULTI-CHAR CASE IF OK ! 4186: --- ! 4187: > BRI XL MERGE WITH MULTI-CHAR CASE IF OK ! 4188: 9296a8131 ! 4189: > * EXPRESSION ARGUMENT CASE MERGES ! 4190: 9302,9305c8137 ! 4191: < * ! 4192: < * EXPRESSION ARGUMENT CASE MERGES HERE ! 4193: < * ! 4194: < PNAY1 BEQ WB,PMSSL,FAILP FAIL IF NO CHARACTERS LEFT ! 4195: --- ! 4196: > BEQ WB,PMSSL,FAILP FAIL IF NO CHARACTERS LEFT ! 4197: 9309c8141 ! 4198: < WTB WA CONVERT TO BYTE OFFSET ! 4199: --- ! 4200: > WTB WA CONVERT TO BAU OFFSET ! 4201: 9405a8238 ! 4202: > ZER R$PMB CLEAR POSSIBLE BCBLK PTR FOR GBCOL ! 4203: 9418a8252 ! 4204: > MOV XL,-(XS) STACK SUBJECT STRING POINTER ! 4205: 9422c8256 ! 4206: < .FI ! 4207: --- ! 4208: > ZER R$PMB CLEAR BCBLK PTR FOR GBCOL ! 4209: 9426a8261 ! 4210: > .FI ! 4211: 9435,9438c8270 ! 4212: < * ! 4213: < * EXPRESSION ARGUMENT CASE MERGES HERE ! 4214: < * ! 4215: < PPOS1 BEQ WB,PARM1(XR),SUCCP SUCCEED IF AT RIGHT LOCATION ! 4216: --- ! 4217: > BEQ WB,PARM1(XR),SUCCP SUCCEED IF AT RIGHT LOCATION ! 4218: 9440d8271 ! 4219: < EJC ! 4220: ! 4221: ! 4222: ! 4223: ! 4224: ! 4225: ! 4226: ! 4227: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 65 ! 4228: ! 4229: ! 4230: 9448,9449c8279,8280 ! 4231: < ERR 050,POS EVALUATED ARGUMENT IS NOT INTEGER ! 4232: < ERR 051,POS EVALUATED ARGUMENT IS NEGATIVE OR TOO LARGE ! 4233: --- ! 4234: > ERR 057,POS EVALUATED ARGUMENT IS NOT INTEGER ! 4235: > ERR 058,POS EVALUATED ARGUMENT IS NEGATIVE OR TOO LARGE ! 4236: 9451c8282,8283 ! 4237: < PPM PPOS1 MERGE WITH NORMAL CASE IF OK ! 4238: --- ! 4239: > BEQ WB,PARM1(XR),SUCCP SUCCEED IF AT RIGHT LOCATION ! 4240: > BRN FAILP ELSE FAIL ! 4241: 9465d8296 ! 4242: < EJC ! 4243: 9476d8306 ! 4244: < EJC ! 4245: 9493d8322 ! 4246: < EJC ! 4247: 9513d8341 ! 4248: < EJC ! 4249: 9521,9522c8349,8350 ! 4250: < ERR 052,RPOS EVALUATED ARGUMENT IS NOT INTEGER ! 4251: < ERR 053,RPOS EVALUATED ARGUMENT IS NEGATIVE OR TOO LARGE ! 4252: --- ! 4253: > ERR 059,RPOS EVALUATED ARGUMENT IS NOT INTEGER ! 4254: > ERR 060,RPOS EVALUATED ARGUMENT IS NEGATIVE OR TOO LARGE ! 4255: 9524,9525c8352,8353 ! 4256: < PPM PRPS1 MERGE WITH NORMAL CASE IF OK ! 4257: < EJC ! 4258: --- ! 4259: > MOV =P$RPS,XL CONTINUATION ROUTINE ! 4260: > BRI XL ENTER ROUTINE ! 4261: 9527a8356 ! 4262: > * EXPRESSION ARGUMENT CASE MERGES ! 4263: 9532,9535c8361 ! 4264: < * ! 4265: < * EXPRESSION ARGUMENT CASE MERGES HERE ! 4266: < * ! 4267: < PRPS1 MOV PMSSL,WC GET LENGTH OF STRING ! 4268: --- ! 4269: > MOV PMSSL,WC GET LENGTH OF STRING ! 4270: 9541a8368 ! 4271: > * EXPRESSION ARGUMENT CASE MERGES ! 4272: 9546,9549c8373 ! 4273: < * ! 4274: < * EXPRESSION ARGUMENT CASE MERGES HERE ! 4275: < * ! 4276: < PRTB1 MOV WB,WC SAVE INITIAL CURSOR ! 4277: --- ! 4278: > MOV WB,WC SAVE INITIAL CURSOR ! 4279: 9555d8378 ! 4280: < EJC ! 4281: 9563,9564c8386,8387 ! 4282: < ERR 054,RTAB EVALUATED ARGUMENT IS NOT INTEGER ! 4283: < ERR 055,RTAB EVALUATED ARGUMENT IS NEGATIVE OR TOO LARGE ! 4284: --- ! 4285: > ERR 061,RTAB EVALUATED ARGUMENT IS NOT INTEGER ! 4286: ! 4287: ! 4288: ! 4289: ! 4290: ! 4291: ! 4292: ! 4293: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 66 ! 4294: ! 4295: ! 4296: > ERR 062,RTAB EVALUATED ARGUMENT IS NEGATIVE OR TOO LARGE ! 4297: 9566c8389,8390 ! 4298: < PPM PRTB1 MERGE WITH NORMAL CASE IF SUCCESS ! 4299: --- ! 4300: > MOV =P$RTB,XL CONTINUATION ROUTINE ! 4301: > BRI XL ENTER ROUTINE ! 4302: 9573a8398 ! 4303: > MOV =P$SPN,WA PCODE FOR NEW NODE ! 4304: 9575c8400 ! 4305: < ERR 056,SPAN EVALUATED ARGUMENT IS NOT STRING ! 4306: --- ! 4307: > ERR 063,SPAN EVALUATED ARGUMENT IS NOT STRING ! 4308: 9577,9578c8402 ! 4309: < PPM PSPN1 MERGE WITH MULTI-CHAR CASE IF OK ! 4310: < EJC ! 4311: --- ! 4312: > BRI XL MERGE WITH MULTI-CHAR CASE IF OK ! 4313: 9580a8405 ! 4314: > * EXPRESSION ARGUMENT CASE MERGES ! 4315: 9586,9589c8411 ! 4316: < * ! 4317: < * EXPRESSION ARGUMENT CASE MERGES HERE ! 4318: < * ! 4319: < PSPN1 MOV PMSSL,WC COPY SUBJECT STRING LENGTH ! 4320: --- ! 4321: > MOV PMSSL,WC COPY SUBJECT STRING LENGTH ! 4322: 9601c8423 ! 4323: < WTB WA CONVERT TO BYTE OFFSET ! 4324: --- ! 4325: > WTB WA CONVERT TO BAU OFFSET ! 4326: 9641d8462 ! 4327: < EJC ! 4328: 9643c8464 ! 4329: < * MULTI-CHARACTER STRING ! 4330: --- ! 4331: > * MULTI-CHARACTER STRING (MERGE FROM P$EXA) ! 4332: 9652,9655c8473 ! 4333: < * ! 4334: < * MERGE HERE AFTER EVALUATING EXPRESSION WITH STRING VALUE ! 4335: < * ! 4336: < PSTR1 MOV XR,PSAVE SAVE NODE POINTER ! 4337: --- ! 4338: > MOV XR,PSAVE SAVE NODE POINTER ! 4339: 9682a8501 ! 4340: > * EXPRESSION CASE MERGES ! 4341: 9687,9690c8506 ! 4342: < * ! 4343: < * EXPRESSION ARGUMENT CASE MERGES HERE ! 4344: < * ! 4345: < PTAB1 BGT WB,PARM1(XR),FAILP FAIL IF TOO FAR ALREADY ! 4346: --- ! 4347: > BGT WB,PARM1(XR),FAILP FAIL IF TOO FAR ALREADY ! 4348: 9694d8509 ! 4349: < EJC ! 4350: 9702,9703c8517,8518 ! 4351: < ERR 057,TAB EVALUATED ARGUMENT IS NOT INTEGER ! 4352: ! 4353: ! 4354: ! 4355: ! 4356: ! 4357: ! 4358: ! 4359: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 67 ! 4360: ! 4361: ! 4362: < ERR 058,TAB EVALUATED ARGUMENT IS NEGATIVE OR TOO LARGE ! 4363: --- ! 4364: > ERR 064,TAB EVALUATED ARGUMENT IS NOT INTEGER ! 4365: > ERR 065,TAB EVALUATED ARGUMENT IS NEGATIVE OR TOO LARGE ! 4366: 9705,9706c8520,8521 ! 4367: < PPM PTAB1 MERGE WITH NORMAL CASE IF OK ! 4368: < EJC ! 4369: --- ! 4370: > MOV =P$TAB,XL CONTINUATION ROUTINE ! 4371: > BRI XL ENTER ROUTINE ! 4372: 9721d8535 ! 4373: < EJC ! 4374: 9764c8578 ! 4375: < ERR 059,ANY ARGUMENT IS NOT STRING OR EXPRESSION ! 4376: --- ! 4377: > ERR 066,ANY ARGUMENT IS NOT STRING OR EXPRESSION ! 4378: 9766d8579 ! 4379: < EJC ! 4380: 9768a8582 ! 4381: > EJC ! 4382: 9776c8590 ! 4383: < ERB 275,APPEND FIRST ARGUMENT IS NOT BUFFER ! 4384: --- ! 4385: > ERB 067,APPEND FIRST ARGUMENT IS NOT BUFFER ! 4386: 9780,9781c8594,8597 ! 4387: < SAPN1 JSR APNDB DO THE APPEND ! 4388: < ERR 276,APPEND SECOND ARGUMENT IS NOT STRING ! 4389: --- ! 4390: > SAPN1 MOV BCLEN(XR),WA OFFSET TO BUFFER END ! 4391: > ZER WB NO CHARS TO BE REPLACED ! 4392: > JSR INSBF DO THE APPEND ! 4393: > ERR 068,APPEND SECOND ARGUMENT IS NOT STRING ! 4394: 9784d8599 ! 4395: < EJC ! 4396: 9785a8601 ! 4397: > EJC ! 4398: 9796c8612 ! 4399: < WTB WB CONVERT TO BYTES ! 4400: --- ! 4401: > WTB WB CONVERT TO BAUS ! 4402: 9819c8635 ! 4403: < SAPP3 ERB 060,APPLY FIRST ARG IS NOT NATURAL VARIABLE NAME ! 4404: --- ! 4405: > SAPP3 ERB 069,APPLY FIRST ARG IS NOT NATURAL VARIABLE NAME ! 4406: 9841c8657 ! 4407: < ERR 061,ARBNO ARGUMENT IS NOT PATTERN ! 4408: --- ! 4409: > ERR 070,ARBNO ARGUMENT IS NOT PATTERN ! 4410: 9857c8673 ! 4411: < ERR 062,ARG SECOND ARGUMENT IS NOT INTEGER ! 4412: --- ! 4413: > ERR 253,ARG SECOND ARGUMENT IS NOT INTEGER ! 4414: 9874c8690 ! 4415: < SARG1 ERB 063,ARG FIRST ARGUMENT IS NOT PROGRAM FUNCTION NAME ! 4416: --- ! 4417: > SARG1 ERB 252,ARG FIRST ARGUMENT IS NOT PROGRAM FUNCTION NAME ! 4418: ! 4419: ! 4420: ! 4421: ! 4422: ! 4423: ! 4424: ! 4425: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 68 ! 4426: ! 4427: ! 4428: 9892c8708 ! 4429: < WTB WA CONVERT LENGTH TO BYTES ! 4430: --- ! 4431: > WTB WA CONVERT LENGTH TO BAUS ! 4432: 9914c8730 ! 4433: < ERR 064,ARRAY FIRST ARGUMENT IS NOT INTEGER OR STRING ! 4434: --- ! 4435: > ERR 071,ARRAY FIRST ARGUMENT IS NOT INTEGER OR STRING ! 4436: 9938c8754 ! 4437: < ERR 065,ARRAY FIRST ARGUMENT LOWER BOUND IS NOT INTEGER ! 4438: --- ! 4439: > ERR 072,ARRAY FIRST ARGUMENT LOWER BOUND IS NOT INTEGER ! 4440: 9950,9951c8766,8772 ! 4441: < SAR04 JSR GTINT CONVERT HIGH BOUND TO INTEGER ! 4442: < ERR 066,ARRAY FIRST ARGUMENT UPPER BOUND IS NOT INTEGER ! 4443: --- ! 4444: > SAR04 BNZ WA,SAR4A SKIP IF DELIMITER 1 OR 2 ! 4445: > BNZ XSCNB,SAR10 JUMP IF ILLEGALLY PLACED BLANK ! 4446: > * ! 4447: > * CHECK FOR INTEGER BOUND ! 4448: > * ! 4449: > SAR4A JSR GTINT CONVERT HIGH BOUND TO INTEGER ! 4450: > ERR 073,ARRAY FIRST ARGUMENT UPPER BOUND IS NOT INTEGER ! 4451: 9989c8810 ! 4452: < WTB WB ELSE CONVERT TO LENGTH IN BYTES ! 4453: --- ! 4454: > WTB WB ELSE CONVERT TO LENGTH IN BAUS ! 4455: 10007c8828 ! 4456: < MOV WA,WC SAVE LENGTH IN BYTES ! 4457: --- ! 4458: > MOV WA,WC SAVE LENGTH IN BAUS ! 4459: 10024c8845 ! 4460: < MOV WC,ARLEN(XR) STORE LENGTH IN BYTES ! 4461: --- ! 4462: > MOV WC,ARLEN(XR) STORE LENGTH IN BAUS ! 4463: 10044c8865 ! 4464: < SAR10 ERB 067,ARRAY DIMENSION IS ZERO,NEGATIVE OR OUT OF RANGE ! 4465: --- ! 4466: > SAR10 ERB 074,BAD DIMENSION, ZERO, NEGATIVE OR OUT OF RANGE ! 4467: 10048c8869 ! 4468: < SAR11 ERB 068,ARRAY SIZE EXCEEDS MAXIMUM PERMITTED ! 4469: --- ! 4470: > SAR11 ERB 075,ARRAY SIZE EXCEEDS MAXIMUM PERMITTED ! 4471: 10050,10051d8870 ! 4472: < .IF .CNBF ! 4473: < .ELSE ! 4474: 10053,10078d8871 ! 4475: < * BUFFER ! 4476: < * ! 4477: < S$BUF ENT ENTRY POINT ! 4478: < MOV (XS)+,XL GET INITIAL VALUE ! 4479: < MOV (XS)+,XR GET REQUESTED ALLOCATION ! 4480: < JSR GTINT CONVERT TO INTEGER ! 4481: < ERR 269,BUFFER FIRST ARGUMENT IS NOT INTEGER ! 4482: < LDI ICVAL(XR) GET VALUE ! 4483: < ILE SBF01 BRANCH IF NEGATIVE OR ZERO ! 4484: ! 4485: ! 4486: ! 4487: ! 4488: ! 4489: ! 4490: ! 4491: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 69 ! 4492: ! 4493: ! 4494: < MFI WA,SBF02 MOVE WITH OVERFLOW CHECK ! 4495: < JSR ALOBF ALLOCATE THE BUFFER ! 4496: < JSR APNDB COPY IT IN ! 4497: < ERR 270,BUFFER SECOND ARGUMENT IS NOT STRING OR BUFFER ! 4498: < ERR 271,BUFFER INITIAL VALUE TOO BIG FOR ALLOCATION ! 4499: < BRN EXSID EXIT SETTING IDVAL ! 4500: < * ! 4501: < * HERE FOR INVALID ALLOCATION SIZE ! 4502: < * ! 4503: < SBF01 ERB 272,BUFFER FIRST ARGUMENT IS NOT POSITIVE ! 4504: < * ! 4505: < * HERE FOR ALLOCATION SIZE INTEGER OVERFLOW ! 4506: < * ! 4507: < SBF02 ERB 273,BUFFER SIZE IS TOO BIG ! 4508: < EJC ! 4509: < .FI ! 4510: < * ! 4511: 10086c8879 ! 4512: < ERR 069,BREAK ARGUMENT IS NOT STRING OR EXPRESSION ! 4513: --- ! 4514: > ERR 076,BREAK ARGUMENT IS NOT STRING OR EXPRESSION ! 4515: 10100c8893 ! 4516: < ERR 070,BREAKX ARGUMENT IS NOT STRING OR EXPRESSION ! 4517: --- ! 4518: > ERR 077,BREAKX ARGUMENT IS NOT STRING OR EXPRESSION ! 4519: 10113a8907,8908 ! 4520: > .IF .CNBF ! 4521: > .ELSE ! 4522: 10116c8911 ! 4523: < * CHAR ! 4524: --- ! 4525: > * BUFFER ! 4526: 10118,10130c8913,8923 ! 4527: < S$CHR ENT ENTRY POINT ! 4528: < JSR GTSMI CONVERT ARG TO INTEGER ! 4529: < ERR 281,CHAR ARGUMENT NOT INTEGER ! 4530: < PPM SCHR1 TOO BIG ERROR EXIT ! 4531: < BGE WC,=CFP$A,SCHR1 SEE IF OUT OF RANGE OF HOST SET ! 4532: < MOV =NUM01,WA IF NOT SET SCBLK ALLOCATION ! 4533: < MOV WC,WB SAVE CHAR CODE ! 4534: < JSR ALOCS ALLOCATE 1 BAU SCBLK ! 4535: < MOV XR,XL COPY SCBLK POINTER ! 4536: < PSC XL GET SET TO STUFF CHAR ! 4537: < SCH WB,(XL)+ STUFF IT ! 4538: < ZER XL CLEAR SLOP IN XL ! 4539: < BRN EXIXR EXIT WITH SCBLK POINTER ! 4540: --- ! 4541: > S$BUF ENT ENTRY POINT ! 4542: > MOV (XS)+,XL GET INITIAL STRING ! 4543: > JSR GTSMI CONVERT MEMORY REQUEST TO INTEGER ! 4544: > ERR 078,BUFFER FIRST ARGUMENT IS NOT INTEGER ! 4545: > PPM SBF01 FAIL IF OUT OF RANGE ! 4546: > MOV WC,WA MOVE LENGTH TO CORRECT REGISTER ! 4547: > JSR ALOBF ALLOCATE THE BUFFER ! 4548: > JSR INSBF COPY INITIAL ARG IN ! 4549: > ERR 079,BUFFER SECOND ARGUMENT IS NOT STRING OR BUFFER ! 4550: ! 4551: ! 4552: ! 4553: ! 4554: ! 4555: ! 4556: ! 4557: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 70 ! 4558: ! 4559: ! 4560: > ERR 080,BUFFER INITIAL VALUE TOO BIG FOR ALLOCATION ! 4561: > BRN EXSID EXIT SETTING IDVAL ! 4562: 10132c8925 ! 4563: < * HERE IF CHAR ARGUMENT IS OUT OF RANGE ! 4564: --- ! 4565: > * HERE FOR INVALID ALLOCATION SIZE ! 4566: 10134c8927,8928 ! 4567: < SCHR1 ERB 282,CHAR ARGUMENT NOT IN RANGE ! 4568: --- ! 4569: > SBF01 ERB 081,BUFFER FIRST ARGUMENT IS OUT OF RANGE ! 4570: > .FI ! 4571: 10141c8935 ! 4572: < ERR 071,CLEAR ARGUMENT IS NOT STRING ! 4573: --- ! 4574: > ERR 082,CLEAR ARGUMENT IS NOT STRING ! 4575: 10145c8939 ! 4576: < * THE LIST ARE FALGGED BY SETTING VRGET OF VRBLK TO ZERO. ! 4577: --- ! 4578: > * THE LIST ARE FLAGGED BY SETTING VRGET OF VRBLK TO ZERO. ! 4579: 10151c8945 ! 4580: < ERR 072,CLEAR ARGUMENT HAS NULL VARIABLE NAME ! 4581: --- ! 4582: > PPM SCLR7 ERRONEOUS NAME ! 4583: 10153a8948 ! 4584: > BNZ XSCNB,SCLR7 BADLY PLACED BLANK ! 4585: 10181c8976 ! 4586: < * PRROTECTED VARIABLES (ARB, ETC) ARE EXEMPT ! 4587: --- ! 4588: > * PROTECTED VARIABLES (ARB ETC) ARE EXEMPT ! 4589: 10183,10184c8978,8979 ! 4590: < SCLR5 BEQ VRSTO(XR),=B$VRE,SCLR4 CHECK FOR PROTECTED VARIABLE (REG05) ! 4591: < MOV XR,XL COPY VRBLK POINTER (REG05) ! 4592: --- ! 4593: > SCLR5 BEQ VRSTO(XR),=B$VRE,SCLR4 CHECK FOR PROTECTED VARIABLE ! 4594: > MOV XR,XL COPY VRBLK POINTER ! 4595: 10196a8992,8995 ! 4596: > * ! 4597: > * ERROR POINT ! 4598: > * ! 4599: > SCLR7 ERB 083,NULL VARIABLE NAME OR ILLEGAL BLANK IN CLEAR ARG ! 4600: 10213c9012 ! 4601: < ERR 073,COLLECT ARGUMENT IS NOT INTEGER ! 4602: --- ! 4603: > ERR 084,COLLECT ARGUMENT IS NOT INTEGER ! 4604: 10220c9019 ! 4605: < BTW WA CONVERT BYTES TO WORDS ! 4606: --- ! 4607: > BTW WA CONVERT BAUS TO WORDS ! 4608: 10231c9030 ! 4609: < S$CNV ENT ENTRY POINT ! 4610: --- ! 4611: > S$CVT ENT ENTRY POINT ! 4612: 10233,10235c9032,9036 ! 4613: < ERR 074,CONVERT SECOND ARGUMENT IS NOT STRING ! 4614: < .IF .CULC ! 4615: < JSR FLSTG FOLD LOWER CASE TO UPPER CASE ! 4616: ! 4617: ! 4618: ! 4619: ! 4620: ! 4621: ! 4622: ! 4623: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 71 ! 4624: ! 4625: ! 4626: --- ! 4627: > ERR 085,CONVERT SECOND ARGUMENT IS NOT STRING ! 4628: > .IF .CASL ! 4629: > MOV XR,XL COPY STRING PTR TO XL ! 4630: > ZER WB ZERO OFFSET ! 4631: > JSR SBSTG CONVERT CASE OF ARG IF NECESSARY ! 4632: 10253c9054 ! 4633: < MOV WA,WC SAVE LENGTH OF ARGUMENT STRING ! 4634: --- ! 4635: > MOV SCLEN(XR),WC SAVE LENGTH OF ARGUMENT STRING ! 4636: 10287c9088 ! 4637: < IFF CNVRT,SCV08 REAL ! 4638: --- ! 4639: > IFF 9,SCV08 REAL ! 4640: 10371c9172 ! 4641: < WTB WA CONVERT LENGTH TO BYTES ! 4642: --- ! 4643: > WTB WA CONVERT LENGTH TO BAUS ! 4644: 10441,10442c9242 ! 4645: < SCV28 MOV XR,-(XS) STACK STRING FOR PROCEDURE ! 4646: < JSR GTSTG CONVERT TO STRING ! 4647: --- ! 4648: > SCV28 JSR GTBUF CONVERT TO BUFFER ! 4649: 10444,10448d9243 ! 4650: < MOV XR,XL SAVE STRING POINTER ! 4651: < JSR ALOBF ALLOCATE BUFFER OF SAME SIZE ! 4652: < JSR APNDB COPY IN THE STRING ! 4653: < PPM ALREADY STRING - CANT FAIL TO CNV ! 4654: < PPM MUST BE ENOUGH ROOM ! 4655: 10450d9244 ! 4656: < EJC ! 4657: 10451a9246 ! 4658: > EJC ! 4659: 10456c9251 ! 4660: < JSR COPYB COPY THE BLOCK ! 4661: --- ! 4662: > JSR CBLCK COPY THE BLOCK ! 4663: 10458a9254,9270 ! 4664: > * ! 4665: > * CTI ! 4666: > * ! 4667: > S$CTI ENT ! 4668: > LDI INTV0 ZERO IN CASE NULL STRING ! 4669: > JSR GTSTG GET ARG AS A STRING ! 4670: > ERR 086,CTI ARGUMENT IS NOT A STRING ! 4671: > BZE WA,SCT01 SKIP IF NULL ! 4672: > PLC XR PREPARE TO READ THE CHARACTER ! 4673: > LCH WB,(XR) GET THE CHARACTER ! 4674: > MTI WB CONVERT TO INTEGER ! 4675: > ZER XR CLEAR GARBAGE ! 4676: > * ! 4677: > * MAKE ICBLK AND RETURN ! 4678: > * ! 4679: > SCT01 JSR ICBLD BUILD ICBLK ! 4680: > BRN EXIXR RETURN INTEGER RESULT ! 4681: 10465,10466c9277,9278 ! 4682: ! 4683: ! 4684: ! 4685: ! 4686: ! 4687: ! 4688: ! 4689: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 72 ! 4690: ! 4691: ! 4692: < ERR 075,DATA ARGUMENT IS NOT STRING ! 4693: < ERR 076,DATA ARGUMENT IS NULL ! 4694: --- ! 4695: > ERR 087,DATA ARGUMENT IS NOT STRING ! 4696: > ERR 088,DATA ARGUMENT IS NULL ! 4697: 10474c9286 ! 4698: < ERB 077,DATA ARGUMENT IS MISSING A LEFT PAREN ! 4699: --- ! 4700: > ERB 089,DATA ARGUMENT IS MISSING A LEFT PAREN ! 4701: 10478,10482d9289 ! 4702: < .IF .CULC ! 4703: < SDAT1 MOV SCLEN(XR),WA GET LENGTH ! 4704: < JSR FLSTG FOLD LOWER CASE TO UPPER CASE ! 4705: < MOV XR,XL SAVE NAME PTR ! 4706: < .ELSE ! 4707: 10484d9290 ! 4708: < .FI ! 4709: 10493c9299 ! 4710: < ERR 078,DATA ARGUMENT HAS NULL DATATYPE NAME ! 4711: --- ! 4712: > ERR 090,DATA ARGUMENT HAS NULL DATATYPE NAME ! 4713: 10504c9310 ! 4714: < ERB 079,DATA ARGUMENT IS MISSING A RIGHT PAREN ! 4715: --- ! 4716: > ERB 091,BAD BLANK OR MISSING RIGHT PAREN IN DATA ARG ! 4717: 10509c9315 ! 4718: < ERR 080,DATA ARGUMENT HAS NULL FIELD NAME ! 4719: --- ! 4720: > ERR 092,DATA ARGUMENT HAS NULL FIELD NAME ! 4721: 10521c9327 ! 4722: < WTB WA CONVERT LENGTH TO BYTES ! 4723: --- ! 4724: > WTB WA CONVERT LENGTH TO BAUS ! 4725: 10608c9414 ! 4726: < S$DEF ENT ENTRY POINT ! 4727: --- ! 4728: > S$DFN ENT ENTRY POINT ! 4729: 10619,10620c9425,9426 ! 4730: < ERR 081,DEFINE FIRST ARGUMENT IS NOT STRING ! 4731: < ERR 082,DEFINE FIRST ARGUMENT IS NULL ! 4732: --- ! 4733: > ERR 093,DEFINE FIRST ARGUMENT IS NOT STRING ! 4734: > ERR 094,DEFINE FIRST ARGUMENT IS NULL ! 4735: 10625c9431 ! 4736: < ERB 083,DEFINE FIRST ARGUMENT IS MISSING A LEFT PAREN ! 4737: --- ! 4738: > ERB 095,DEFINE FIRST ARGUMENT IS MISSING A LEFT PAREN ! 4739: 10630c9436 ! 4740: < ERR 084,DEFINE FIRST ARGUMENT HAS NULL FUNCTION NAME ! 4741: --- ! 4742: > ERR 096,DEFINE FIRST ARGUMENT HAS NULL FUNCTION NAME ! 4743: 10642,10643c9448,9454 ! 4744: < BNZ WA,SDF04 SKIP IF DELIMITER FOUND ! 4745: < ERB 085,NULL ARG NAME OR MISSING ) IN DEFINE FIRST ARG. ! 4746: --- ! 4747: > BZE WA,SDF14 FAIL IF RUNOUT ! 4748: ! 4749: ! 4750: ! 4751: ! 4752: ! 4753: ! 4754: ! 4755: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 73 ! 4756: ! 4757: ! 4758: > JSR GTNVR GET VRBLK POINTER ! 4759: > PPM SDF04 IGNORE NULL NAME ! 4760: > MOV XR,-(XS) STACK ARGUMENT VRBLK POINTER ! 4761: > ICV WB INCREMENT COUNTER ! 4762: > BEQ WA,=NUM02,SDF03 LOOP BACK IF STOPPED BY A COMMA ! 4763: > BRN SDF05 JUMP FOR RIGHT PAREN ! 4764: 10648c9459 ! 4765: < * HERE AFTER SCANNING AN ARGUMENT NAME ! 4766: --- ! 4767: > * NULL ARG FOUND. CONTINUE IF STOPPED BY COMMA ! 4768: 10650,10651c9461 ! 4769: < SDF04 BNE XR,=NULLS,SDF05 SKIP IF NON-NULL ! 4770: < BZE WB,SDF06 IGNORE NULL IF CASE OF NO ARGUMENTS ! 4771: --- ! 4772: > SDF04 BEQ WA,=NUM02,SDF03 LOOP IF COMMA ! 4773: 10653,10660d9462 ! 4774: < * HERE AFTER DEALING WITH THE CASE OF NO ARGUMENTS ! 4775: < * ! 4776: < SDF05 JSR GTNVR GET VRBLK POINTER ! 4777: < PPM SDF03 LOOP BACK TO IGNORE NULL NAME ! 4778: < MOV XR,-(XS) STACK ARGUMENT VRBLK POINTER ! 4779: < ICV WB INCREMENT COUNTER ! 4780: < BEQ WA,=NUM02,SDF03 LOOP BACK IF STOPPED BY A COMMA ! 4781: < * ! 4782: 10663c9465 ! 4783: < SDF06 MOV WB,DEFNA SAVE NUMBER OF ARGUMENTS ! 4784: --- ! 4785: > SDF05 MOV WB,DEFNA SAVE NUMBER OF ARGUMENTS ! 4786: 10668c9470 ! 4787: < SDF07 MOV =CH$CM,WC SET DELIMITER ONE = COMMA ! 4788: --- ! 4789: > SDF06 MOV =CH$CM,WC SET DELIMITER ONE = COMMA ! 4790: 10671,10672c9473,9474 ! 4791: < BNE XR,=NULLS,SDF08 SKIP IF NON-NULL ! 4792: < BZE WB,SDF09 IGNORE NULL IF CASE OF NO LOCALS ! 4793: --- ! 4794: > BNZ WA,SDF07 SKIP IF COMMA FOUND ! 4795: > BNZ XSCNB,SDF14 FAIL IF BAD BLANK, OK IF LAST LOC ! 4796: 10676,10677c9478,9479 ! 4797: < SDF08 JSR GTNVR GET VRBLK POINTER ! 4798: < PPM SDF07 LOOP BACK TO IGNORE NULL NAME ! 4799: --- ! 4800: > SDF07 JSR GTNVR GET VRBLK POINTER ! 4801: > PPM SDF08 IGNORE NULL NAME ! 4802: 10680c9482,9487 ! 4803: < BNZ WA,SDF07 LOOP BACK IF STOPPED BY A COMMA ! 4804: --- ! 4805: > BNZ WA,SDF06 LOOP BACK IF STOPPED BY A COMMA ! 4806: > BRN SDF09 JUMP FOR END OF STRING ! 4807: > * ! 4808: > * NULL LOCAL ! 4809: > * ! 4810: > SDF08 BNZ WA,SDF06 LOOP IF COMMA AFTER NULL LOCAL ! 4811: 10691c9498 ! 4812: < WTB WA CONVERT LENGTH TO BYTES ! 4813: --- ! 4814: ! 4815: ! 4816: ! 4817: ! 4818: ! 4819: ! 4820: ! 4821: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 74 ! 4822: ! 4823: ! 4824: > WTB WA CONVERT LENGTH TO BAUS ! 4825: 10734c9541,9545 ! 4826: < SDF13 ERB 086,DEFINE FUNCTION ENTRY POINT IS NOT DEFINED LABEL ! 4827: --- ! 4828: > SDF13 ERB 097,DEFINE FUNCTION ENTRY POINT IS NOT DEFINED LABEL ! 4829: > * ! 4830: > * ERRONEOUS ARG OR LOCAL ! 4831: > * ! 4832: > SDF14 ERB 098,BAD BLANK OR MISSING RIGHT PAREN IN DEFINE ARG ! 4833: 10742,10744c9553,9573 ! 4834: < ERR 087,DETACH ARGUMENT IS NOT APPROPRIATE NAME ! 4835: < JSR DTACH DETACH I/O ASSOCIATION FROM NAME ! 4836: < BRN EXNUL RETURN NULL RESULT ! 4837: --- ! 4838: > ERR 099,DETACH ARGUMENT IS NOT APPROPRIATE NAME ! 4839: > MOV WA,-(XS) KEEP OFFSET ! 4840: > ZER SDETF CLEAR FAIL FLAG ! 4841: > MOV =TRTIN,WB TRACE TYPE ! 4842: > ZER XR REMOVE TRBLK ! 4843: > JSR TRCHN REMOVE ANY INPUT ASSOCIATION ! 4844: > PPM SDET1 SKIP IF NO INPUT TRBLK ! 4845: > MNZ SDETF NOTE TRBLK REMOVED ! 4846: > * ! 4847: > * REPEAT FOR OUTPUT TRBLK ! 4848: > * ! 4849: > SDET1 MOV (XS)+,WA RECOVER OFFSET ! 4850: > MOV =TRTOU,WB TRTYP ! 4851: > JSR TRCHN REMOVE ANY OUTPUT ASSOCIATION ! 4852: > PPM SDET2 SKIP IF NO TRBLK ! 4853: > BRN EXNUL SUCCEED ! 4854: > * ! 4855: > * CHECK AT LEAST ONE TRBLK REMOVED ! 4856: > * ! 4857: > SDET2 BNZ SDETF,EXNUL SUCCEED IF SO ! 4858: > BRN EXFAL ELSE FAIL ! 4859: 10761,10762c9590,9591 ! 4860: < ERR 088,DUMP ARGUMENT IS NOT INTEGER ! 4861: < ERR 089,DUMP ARGUMENT IS NEGATIVE OR TOO LARGE ! 4862: --- ! 4863: > ERR 100,DUMP ARGUMENT IS NOT INTEGER ! 4864: > ERR 101,DUMP ARGUMENT IS NEGATIVE OR TOO LARGE ! 4865: 10771c9600 ! 4866: < ERR 090,DUPL SECOND ARGUMENT IS NOT INTEGER ! 4867: --- ! 4868: > ERR 102,DUPL SECOND ARGUMENT IS NOT INTEGER ! 4869: 10816c9645 ! 4870: < ERR 091,DUPL FIRST ARGUMENT IS NOT STRING OR PATTERN ! 4871: --- ! 4872: > ERR 103,DUPL FIRST ARGUMENT IS NOT STRING OR PATTERN ! 4873: 10848,10850c9677,9685 ! 4874: < JSR IOFCB CALL FCBLK ROUTINE ! 4875: < ERR 092,EJECT ARGUMENT IS NOT A SUITABLE NAME ! 4876: < PPM SEJC1 NULL ARGUMENT ! 4877: --- ! 4878: > MOV (XS)+,WB GET ARGUMENT ! 4879: > MOV WB,-(XS) RESTACK IT ! 4880: ! 4881: ! 4882: ! 4883: ! 4884: ! 4885: ! 4886: ! 4887: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 75 ! 4888: ! 4889: ! 4890: > JSR GTSTG CONVERT TO STRING ! 4891: > PPM SEJC2 FAIL IF CANT ! 4892: > BZE WA,SEJC1 SKIP IF NULL STRING ! 4893: > MOV WB,-(XS) RESTACK ORIGINAL ARG ! 4894: > JSR IOFTG CALL FILETAG ROUTINE ! 4895: > PPM SEJC2 FAIL ! 4896: > BZE WA,EXFAL FAIL IF NOT ASSOCIATED ! 4897: 10852,10854c9687,9688 ! 4898: < ERR 093,EJECT FILE DOES NOT EXIST ! 4899: < ERR 094,EJECT FILE DOES NOT PERMIT PAGE EJECT ! 4900: < ERR 095,EJECT CAUSED NON-RECOVERABLE OUTPUT ERROR ! 4901: --- ! 4902: > PPM EXFAL FAIL RETURN ! 4903: > PPM EROSI ERROR RETURN ! 4904: 10859a9694,9695 ! 4905: > PPM EXFAL FAIL RETURN ! 4906: > PPM EROSI ERROR RETURN ! 4907: 10860a9697,9700 ! 4908: > * ! 4909: > * ERROR POINT ! 4910: > * ! 4911: > SEJC2 ERB 104,EJECT ARGUMENT IS NOT A SUITABLE FILETAG ! 4912: 10866,10873c9706,9709 ! 4913: < JSR IOFCB CALL FCBLK ROUTINE ! 4914: < ERR 096,ENDFILE ARGUMENT IS NOT A SUITABLE NAME ! 4915: < ERR 097,ENDFILE ARGUMENT IS NULL ! 4916: < JSR SYSEN CALL ENDFILE ROUTINE ! 4917: < ERR 098,ENDFILE FILE DOES NOT EXIST ! 4918: < ERR 099,ENDFILE FILE DOES NOT PERMIT ENDFILE ! 4919: < ERR 100,ENDFILE CAUSED NON-RECOVERABLE OUTPUT ERROR ! 4920: < MOV XL,WB REMEMBER VRBLK PTR FROM IOFCB CALL ! 4921: --- ! 4922: > JSR GTSTG CONVERT SECOND ARG TO STRING ! 4923: > ERR 105,ENDFILE SECOND ARGUMENT IS NOT A STRING ! 4924: > BNZ WA,SENF1 SKIP IF NON NULL SECOND ARG ! 4925: > ZER XR 0 IF NULL ! 4926: 10875c9711 ! 4927: < * LOOP TO FIND TRTRF BLOCK ! 4928: --- ! 4929: > * NOW PROCESS FILETAG ! 4930: 10877,10909c9713,9728 ! 4931: < SENF1 MOV XL,XR COPY POINTER ! 4932: < MOV TRVAL(XR),XR CHAIN ALONG ! 4933: < BNE (XR),=B$TRT,EXNUL SKIP OUT IF CHAIN END ! 4934: < BNE TRTYP(XR),=TRTFC,SENF1 LOOP IF NOT FOUND ! 4935: < MOV TRVAL(XR),TRVAL(XL) REMOVE TRTRF ! 4936: < MOV TRTRF(XR),ENFCH POINT TO HEAD OF IOCHN ! 4937: < MOV TRFPT(XR),WC POINT TO FCBLK ! 4938: < MOV WB,XR FILEARG1 VRBLK FROM IOFCB ! 4939: < JSR SETVR RESET IT ! 4940: < MOV =R$FCB,XL PTR TO HEAD OF FCBLK CHAIN ! 4941: < SUB *NUM02,XL ADJUST READY TO ENTER LOOP ! 4942: < * ! 4943: < * FIND FCBLK ! 4944: < * ! 4945: < SENF2 MOV XL,XR COPY PTR ! 4946: ! 4947: ! 4948: ! 4949: ! 4950: ! 4951: ! 4952: ! 4953: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 76 ! 4954: ! 4955: ! 4956: < MOV 2(XL),XL GET NEXT LINK ! 4957: < BZE XL,SENF4 STOP IF CHAIN END ! 4958: < BEQ 3(XL),WC,SENF3 JUMP IF FCBLK FOUND ! 4959: < BRN SENF2 LOOP ! 4960: < * ! 4961: < * REMOVE FCBLK ! 4962: < * ! 4963: < SENF3 MOV 2(XL),2(XR) DELETE FCBLK FROM CHAIN ! 4964: < * ! 4965: < * LOOP WHICH DETACHES ALL VBLS ON IOCHN CHAIN ! 4966: < * ! 4967: < SENF4 MOV ENFCH,XL GET CHAIN HEAD ! 4968: < BZE XL,EXNUL FINISHED IF CHAIN END ! 4969: < MOV TRTRF(XL),ENFCH CHAIN ALONG ! 4970: < MOV IONMO(XL),WA NAME OFFSET ! 4971: < MOV IONMB(XL),XL NAME BASE ! 4972: < JSR DTACH DETACH NAME ! 4973: < BRN SENF4 LOOP TILL DONE ! 4974: --- ! 4975: > SENF1 MOV XR,SENFR KEEP SECOND ARG ! 4976: > JSR IOFTG CALL FILETAG PROC (WB = VRBLK PTR) ! 4977: > ERR 106,ENDFILE FIRST ARGUMENT IS NOT A SUITABLE FILETAG ! 4978: > BZE WA,EXFAL FAIL IF NO IOTAG ! 4979: > MOV SENFR,XR RECOVER SECOND ARG ! 4980: > JSR SYSEN CALL ENDFILE ROUTINE ! 4981: > PPM EXFAL FAIL RETURN ! 4982: > PPM EROSI ERROR RETURN ! 4983: > BNZ WA,EXNUL RETURN NULL IF NO FILE CLOSURE ! 4984: > MOV WB,XL POINT TO FILETAG VRBLK ! 4985: > MOV *VRVAL,WA OFFSET TO VALUE FIELD ! 4986: > ZER XR FOR TRBLK REMOVAL ! 4987: > MOV =TRTIO,WB TRTYP ! 4988: > JSR TRCHN REMOVE TRBLK ! 4989: > PPM EXFAL (CANT FAIL HERE) ! 4990: > BRN EXNUL RETURN NULL ! 4991: 10916,10917c9735,9736 ! 4992: < ERR 101,EQ FIRST ARGUMENT IS NOT NUMERIC ! 4993: < ERR 102,EQ SECOND ARGUMENT IS NOT NUMERIC ! 4994: --- ! 4995: > ERR 107,EQ FIRST ARGUMENT IS NOT NUMERIC ! 4996: > ERR 108,EQ SECOND ARGUMENT IS NOT NUMERIC ! 4997: 10928c9747 ! 4998: < ERR 103,EVAL ARGUMENT IS NOT EXPRESSION ! 4999: --- ! 5000: > ERR 109,EVAL ARGUMENT IS NOT EXPRESSION ! 5001: 10963c9782 ! 5002: < ERR 104,EXIT ARGUMENT IS NOT SUITABLE INTEGER OR STRING ! 5003: --- ! 5004: > ERR 110,EXIT ARGUMENT IS NOT SUITABLE INTEGER OR STRING ! 5005: 10969d9787 ! 5006: < MOV R$FCB,WB GET FCBLK CHAIN HEADER ! 5007: 10973a9792 ! 5008: > MOV =KVCOD,WA VALUE OF CODE KEYWORD ! 5009: 10975,10976c9794,9795 ! 5010: < ERR 105,EXIT ACTION NOT AVAILABLE IN THIS IMPLEMENTATION ! 5011: < ERR 106,EXIT ACTION CAUSED IRRECOVERABLE ERROR ! 5012: ! 5013: ! 5014: ! 5015: ! 5016: ! 5017: ! 5018: ! 5019: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 77 ! 5020: ! 5021: ! 5022: --- ! 5023: > PPM EXFAL FAIL RETURN ! 5024: > PPM EROSI ERROR RETURN ! 5025: 10978c9797 ! 5026: < ZER GBCNT RESUMING EXECUTION SO RESET ! 5027: --- ! 5028: > ZER GBCNT RESUMING EXECUTION SO. ! 5029: 10984c9803 ! 5030: < SEXT2 MFI WC GET VALUE IN WORK REG ! 5031: --- ! 5032: > SEXT2 MFI WC GET VALUE IN WORK REGISTER ! 5033: 10989c9808 ! 5034: < MOV (XS)+,WC RESTORE VALUE ! 5035: --- ! 5036: > MOV (XS)+,WA RESTORE VALUE ! 5037: 10991c9810 ! 5038: < * DEAL WITH HEADER OPTION (FIDDLED BY PRPAR) ! 5039: --- ! 5040: > * DEAL WITH HEADER OPTIONS (FIDDLED BY PRPAR) ! 5041: 10999c9818 ! 5042: < SEXT4 JSR SYSTM GET EXECUTION TIME START (SGD11) ! 5043: --- ! 5044: > SEXT4 JSR SYSTM GET RECOMMENCEMENT TIME ! 5045: 11004a9824,9825 ! 5046: > .IF .CNFN ! 5047: > .ELSE ! 5048: 11006a9828,9848 ! 5049: > * FENCE ! 5050: > * ! 5051: > S$FNC ENT ENTRY POINT ! 5052: > MOV =P$FNC,WB SET PCODE FOR P$FNC ! 5053: > ZER XR P0BLK ! 5054: > JSR PBILD BUILD P$FNC NODE ! 5055: > MOV XR,XL SAVE POINTER TO IT ! 5056: > MOV (XS)+,XR GET ARGUMENT ! 5057: > JSR GTPAT CONVERT TO PATTERN ! 5058: > ERR 180,FENCE ARGUMENT IS NOT PATTERN ! 5059: > JSR PCONC CONCATENATE TO P$FNC NODE ! 5060: > MOV XR,XL SAVE PTR TO CONCATENATED PATTERN ! 5061: > MOV =P$FNA,WB SET FOR P$FNA PCODE ! 5062: > ZER XR P0BLK ! 5063: > JSR PBILD CONSTRUCT P$FNA NODE ! 5064: > MOV XL,PTHEN(XR) SET PATTERN AS PTHEN ! 5065: > MOV XR,-(XS) SET AS RESULT ! 5066: > BRN EXITS DO NEXT CODE WORD ! 5067: > EJC ! 5068: > .FI ! 5069: > * ! 5070: 11011c9853 ! 5071: < ERR 107,FIELD SECOND ARGUMENT IS NOT INTEGER ! 5072: --- ! 5073: > ERR 255,FIELD SECOND ARGUMENT IS NOT INTEGER ! 5074: 11031c9873 ! 5075: < SFLD1 ERB 108,FIELD FIRST ARGUMENT IS NOT DATATYPE NAME ! 5076: --- ! 5077: > SFLD1 ERB 254,FIELD FIRST ARGUMENT IS NOT DATATYPE NAME ! 5078: ! 5079: ! 5080: ! 5081: ! 5082: ! 5083: ! 5084: ! 5085: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 78 ! 5086: ! 5087: ! 5088: 11034,11053d9875 ! 5089: < * FENCE ! 5090: < * ! 5091: < S$FNC ENT ENTRY POINT ! 5092: < MOV =P$FNC,WB SET PCODE FOR P$FNC ! 5093: < ZER XR P0BLK ! 5094: < JSR PBILD BUILD P$FNC NODE ! 5095: < MOV XR,XL SAVE POINTER TO IT ! 5096: < MOV (XS)+,XR GET ARGUMENT ! 5097: < JSR GTPAT CONVERT TO PATTERN ! 5098: < ERR 259,FENCE ARGUMENT IS NOT PATTERN ! 5099: < JSR PCONC CONCATENATE TO P$FNC NODE ! 5100: < MOV XR,XL SAVE PTR TO CONCATENATED PATTERN ! 5101: < MOV =P$FNA,WB SET FOR P$FNA PCODE ! 5102: < ZER XR P0BLK ! 5103: < JSR PBILD CONSTRUCT P$FNA NODE ! 5104: < MOV XL,PTHEN(XR) SET PATTERN AS PTHEN ! 5105: < MOV XR,-(XS) SET AS RESULT ! 5106: < BRN EXITS DO NEXT CODE WORD ! 5107: < EJC ! 5108: < * ! 5109: 11058,11059c9880,9881 ! 5110: < ERR 109,GE FIRST ARGUMENT IS NOT NUMERIC ! 5111: < ERR 110,GE SECOND ARGUMENT IS NOT NUMERIC ! 5112: --- ! 5113: > ERR 111,GE FIRST ARGUMENT IS NOT NUMERIC ! 5114: > ERR 112,GE SECOND ARGUMENT IS NOT NUMERIC ! 5115: 11063d9884 ! 5116: < EJC ! 5117: 11069,11070c9890,9891 ! 5118: < ERR 111,GT FIRST ARGUMENT IS NOT NUMERIC ! 5119: < ERR 112,GT SECOND ARGUMENT IS NOT NUMERIC ! 5120: --- ! 5121: > ERR 113,GT FIRST ARGUMENT IS NOT NUMERIC ! 5122: > ERR 114,GT SECOND ARGUMENT IS NOT NUMERIC ! 5123: 11079,11087c9900,9913 ! 5124: < MOV (XS)+,XR GET THIRD ARG ! 5125: < MOV (XS)+,XL GET SECOND ARG ! 5126: < MOV (XS)+,WA GET FIRST ARG ! 5127: < JSR SYSHS ENTER SYSHS ROUTINE ! 5128: < ERR 254,ERRONEOUS ARGUMENT FOR HOST ! 5129: < ERR 255,ERROR DURING EXECUTION OF HOST ! 5130: < PPM SHST1 STORE HOST STRING ! 5131: < PPM EXNUL RETURN NULL RESULT ! 5132: < PPM EXIXR RETURN XR ! 5133: --- ! 5134: > JSR GTSTG CONVERT ARG TO STRING ! 5135: > ERR 115,ERRONEOUS THIRD ARGUMENT FOR HOST ! 5136: > MOV WA,WB KEEP LENGTH ! 5137: > MOV XR,WC KEEP THIRD ARG ! 5138: > JSR GTSTG CONVERT ARG TO STRING ! 5139: > ERR 116,ERRONEOUS SECOND ARGUMENT FOR HOST ! 5140: > ORB WA,WB NON ZERO UNLESS TWO ARGS NULL ! 5141: > MOV XR,XL KEEP SECOND ARG ! 5142: > JSR GTSTG CONVERT ARG TO STRING ! 5143: > ERR 117,ERRONEOUS FIRST ARGUMENT FOR HOST ! 5144: ! 5145: ! 5146: ! 5147: ! 5148: ! 5149: ! 5150: ! 5151: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 79 ! 5152: ! 5153: ! 5154: > ORB WA,WB NON ZERO UNLESS ALL ARGS NULL ! 5155: > MOV XR,WA KEEP FIRST ARG ! 5156: > MOV WC,XR GET THIRD ARG ! 5157: > JSR SYSHS CALL SYSHS ROUTINE ! 5158: 11089,11093c9915,9916 ! 5159: < * ! 5160: < * RETURN HOST STRING ! 5161: < * ! 5162: < SHST1 BZE XL,EXNUL NULL STRING IF SYSHS UNCOOPERATIVE ! 5163: < MOV SCLEN(XL),WA LENGTH ! 5164: --- ! 5165: > PPM EROSI ERROR RETURN ! 5166: > MOV SCLEN(XL),WA LENGTH OF RETURNED STRING ! 5167: 11115,11120c9938,9941 ! 5168: < ERR 113,INPUT THIRD ARGUMENT IS NOT A STRING ! 5169: < ERR 114,INAPPROPRIATE SECOND ARGUMENT FOR INPUT ! 5170: < ERR 115,INAPPROPRIATE FIRST ARGUMENT FOR INPUT ! 5171: < ERR 116,INAPPROPRIATE FILE SPECIFICATION FOR INPUT ! 5172: < PPM EXFAL FAIL IF FILE DOES NOT EXIST ! 5173: < ERR 117,INPUT FILE CANNOT BE READ ! 5174: --- ! 5175: > ERR 118,INPUT THIRD ARGUMENT (FILEPROPS) IS NOT A STRING ! 5176: > ERR 119,INAPPROPRIATE SECOND ARGUMENT (FILETAG) FOR INPUT ! 5177: > ERR 120,INAPPROPRIATE FIRST ARGUMENT FOR INPUT ! 5178: > PPM EXFAL FAIL RETURN ! 5179: 11122d9942 ! 5180: < EJC ! 5181: 11124a9945 ! 5182: > EJC ! 5183: 11131c9952 ! 5184: < ERR 277,INSERT THIRD ARGUMENT NOT INTEGER ! 5185: --- ! 5186: > ERR 121,INSERT THIRD ARGUMENT NOT INTEGER ! 5187: 11135c9956 ! 5188: < ERR 278,INSERT SECOND ARGUMENT NOT INTEGER ! 5189: --- ! 5190: > ERR 122,INSERT SECOND ARGUMENT NOT INTEGER ! 5191: 11142c9963 ! 5192: < ERB 279,INSERT FIRST ARGUMENT NOT BUFFER ! 5193: --- ! 5194: > ERB 123,INSERT FIRST ARGUMENT NOT BUFFER ! 5195: 11147c9968 ! 5196: < ERR 280,INSERT FOURTH ARGUMENT NOT A STRING ! 5197: --- ! 5198: > ERR 124,INSERT FOURTH ARGUMENT NOT A STRING ! 5199: 11150d9970 ! 5200: < EJC ! 5201: 11151a9972 ! 5202: > EJC ! 5203: 11162a9984,10000 ! 5204: > * ITC ! 5205: > * ! 5206: > S$ITC ENT ! 5207: > JSR GTSMI OBTAIN ARG AS AN INTEGER ! 5208: > ERR 125,ITC ARGUMENT IS NOT A SMALL INTEGER ! 5209: > PPM EXFAL FAIL IF OUT OF RANGE ! 5210: ! 5211: ! 5212: ! 5213: ! 5214: ! 5215: ! 5216: ! 5217: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 80 ! 5218: ! 5219: ! 5220: > BGE WC,=CFP$A,EXFAL FURTHER RANGE CHECK ! 5221: > MOV WC,WB PRESERVE WC ! 5222: > MOV =NUM01,WA FOR SCBLK REQUEST ! 5223: > JSR ALOCS BUILD STRING BLOCK ! 5224: > MOV XR,XL COPY STRING PTR ! 5225: > PSC XL READY TO STORE CHAR ! 5226: > SCH WB,(XL) STORE IT ! 5227: > ZER XL CLEAR GARBAGE ! 5228: > BRN EXIXR RETURN STRING RESULT ! 5229: > EJC ! 5230: > * ! 5231: 11200,11201c10038,10039 ! 5232: < ERR 118,LE FIRST ARGUMENT IS NOT NUMERIC ! 5233: < ERR 119,LE SECOND ARGUMENT IS NOT NUMERIC ! 5234: --- ! 5235: > ERR 126,LE FIRST ARGUMENT IS NOT NUMERIC ! 5236: > ERR 127,LE SECOND ARGUMENT IS NOT NUMERIC ! 5237: 11213,11214c10051,10052 ! 5238: < ERR 120,LEN ARGUMENT IS NOT INTEGER OR EXPRESSION ! 5239: < ERR 121,LEN ARGUMENT IS NEGATIVE OR TOO LARGE ! 5240: --- ! 5241: > ERR 128,LEN ARGUMENT IS NOT INTEGER OR EXPRESSION ! 5242: > ERR 129,LEN ARGUMENT IS NEGATIVE OR TOO LARGE ! 5243: 11222,11223c10060,10061 ! 5244: < ERR 122,LEQ FIRST ARGUMENT IS NOT STRING ! 5245: < ERR 123,LEQ SECOND ARGUMENT IS NOT STRING ! 5246: --- ! 5247: > ERR 130,LEQ FIRST ARGUMENT IS NOT STRING ! 5248: > ERR 131,LEQ SECOND ARGUMENT IS NOT STRING ! 5249: 11233,11234c10071,10072 ! 5250: < ERR 124,LGE FIRST ARGUMENT IS NOT STRING ! 5251: < ERR 125,LGE SECOND ARGUMENT IS NOT STRING ! 5252: --- ! 5253: > ERR 132,LGE FIRST ARGUMENT IS NOT STRING ! 5254: > ERR 133,LGE SECOND ARGUMENT IS NOT STRING ! 5255: 11244,11245c10082,10083 ! 5256: < ERR 126,LGT FIRST ARGUMENT IS NOT STRING ! 5257: < ERR 127,LGT SECOND ARGUMENT IS NOT STRING ! 5258: --- ! 5259: > ERR 134,LGT FIRST ARGUMENT IS NOT STRING ! 5260: > ERR 135,LGT SECOND ARGUMENT IS NOT STRING ! 5261: 11255,11256c10093,10094 ! 5262: < ERR 128,LLE FIRST ARGUMENT IS NOT STRING ! 5263: < ERR 129,LLE SECOND ARGUMENT IS NOT STRING ! 5264: --- ! 5265: > ERR 136,LLE FIRST ARGUMENT IS NOT STRING ! 5266: > ERR 137,LLE SECOND ARGUMENT IS NOT STRING ! 5267: 11266,11267c10104,10105 ! 5268: < ERR 130,LLT FIRST ARGUMENT IS NOT STRING ! 5269: < ERR 131,LLT SECOND ARGUMENT IS NOT STRING ! 5270: --- ! 5271: > ERR 138,LLT FIRST ARGUMENT IS NOT STRING ! 5272: > ERR 139,LLT SECOND ARGUMENT IS NOT STRING ! 5273: 11277,11278c10115,10116 ! 5274: < ERR 132,LNE FIRST ARGUMENT IS NOT STRING ! 5275: < ERR 133,LNE SECOND ARGUMENT IS NOT STRING ! 5276: ! 5277: ! 5278: ! 5279: ! 5280: ! 5281: ! 5282: ! 5283: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 81 ! 5284: ! 5285: ! 5286: --- ! 5287: > ERR 140,LNE FIRST ARGUMENT IS NOT STRING ! 5288: > ERR 141,LNE SECOND ARGUMENT IS NOT STRING ! 5289: 11282,11309d10119 ! 5290: < EJC ! 5291: < * ! 5292: < * LOCAL ! 5293: < * ! 5294: < S$LOC ENT ENTRY POINT ! 5295: < JSR GTSMI GET SECOND ARGUMENT (LOCAL NUMBER) ! 5296: < ERR 134,LOCAL SECOND ARGUMENT IS NOT INTEGER ! 5297: < PPM EXFAL FAIL IF OUT OF RANGE ! 5298: < MOV XR,WB SAVE LOCAL NUMBER ! 5299: < MOV (XS)+,XR LOAD FIRST ARGUMENT ! 5300: < JSR GTNVR POINT TO VRBLK ! 5301: < PPM SLOC1 JUMP IF NOT VARIABLE NAME ! 5302: < MOV VRFNC(XR),XR ELSE LOAD FUNCTION POINTER ! 5303: < BNE (XR),=B$PFC,SLOC1 JUMP IF NOT PROGRAM DEFINED ! 5304: < * ! 5305: < * HERE IF WE HAVE A PROGRAM DEFINED FUNCTION NAME ! 5306: < * ! 5307: < BZE WB,EXFAL FAIL IF SECOND ARG IS ZERO ! 5308: < BGT WB,PFNLO(XR),EXFAL OR TOO LARGE ! 5309: < ADD FARGS(XR),WB ELSE ADJUST OFFSET TO INCLUDE ARGS ! 5310: < WTB WB CONVERT TO BYTES ! 5311: < ADD WB,XR POINT TO LOCAL POINTER ! 5312: < MOV PFAGB(XR),XR LOAD VRBLK POINTER ! 5313: < BRN EXVNM EXIT BUILDING NMBLK ! 5314: < * ! 5315: < * HERE IF FIRST ARGUMENT IS NO GOOD ! 5316: < * ! 5317: < SLOC1 ERB 135,LOCAL FIRST ARG IS NOT A PROGRAM FUNCTION NAME ! 5318: 11318c10128 ! 5319: < ERR 136,LOAD SECOND ARGUMENT IS NOT STRING ! 5320: --- ! 5321: > ERR 142,LOAD SECOND ARGUMENT IS NOT STRING ! 5322: 11321,11322c10131,10132 ! 5323: < ERR 137,LOAD FIRST ARGUMENT IS NOT STRING ! 5324: < ERR 138,LOAD FIRST ARGUMENT IS NULL ! 5325: --- ! 5326: > ERR 143,LOAD FIRST ARGUMENT IS NOT STRING ! 5327: > ERR 144,LOAD FIRST ARGUMENT IS NULL ! 5328: 11329c10139 ! 5329: < ERB 139,LOAD FIRST ARGUMENT IS MISSING A LEFT PAREN ! 5330: --- ! 5331: > ERB 145,LOAD FIRST ARGUMENT IS MISSING A LEFT PAREN ! 5332: 11334c10144 ! 5333: < ERR 140,LOAD FIRST ARGUMENT HAS NULL FUNCTION NAME ! 5334: --- ! 5335: > ERR 146,LOAD FIRST ARGUMENT HAS NULL FUNCTION NAME ! 5336: 11345c10155 ! 5337: < ERB 141,LOAD FIRST ARGUMENT IS MISSING A RIGHT PAREN ! 5338: --- ! 5339: > ERB 147,BAD BLANK OR MISSING RIGHT PAREN IN LOAD ARG ! 5340: 11355c10165 ! 5341: < MOV =NUM01,WB SET STRING CODE IN CASE ! 5342: ! 5343: ! 5344: ! 5345: ! 5346: ! 5347: ! 5348: ! 5349: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 82 ! 5350: ! 5351: ! 5352: --- ! 5353: > MOV =NUM01,WB SET STRING CODE IN CASE (1) ! 5354: 11363a10174 ! 5355: > ICV WB ELSE SET CODE FOR REAL (3) ! 5356: 11366,11367c10177 ! 5357: < MOV (XS),XR ELSE RELOAD STRING POINTER ! 5358: < ICV WB SET CODE FOR REAL (3) ! 5359: --- ! 5360: > MOV (XS),XR RELOAD STRING POINTER ! 5361: 11371a10182,10189 ! 5362: > ICV WB SET CODE FOR BUFFER (4) ! 5363: > .IF .CNBF ! 5364: > .ELSE ! 5365: > MOV (XS),XR RELOAD STRING POINTER ! 5366: > MOV =SCBUF,XL POINT TO /BUFFER/ ! 5367: > JSR IDENT CHECK FOR MATCH ! 5368: > PPM SLOD4 JUMP IF MATCH ! 5369: > .FI ! 5370: 11395c10213 ! 5371: < WTB WA CONVERT LENGTH TO BYTES ! 5372: --- ! 5373: > WTB WA CONVERT LENGTH TO BAUS ! 5374: 11420,11421c10238,10239 ! 5375: < ERR 142,LOAD FUNCTION DOES NOT EXIST ! 5376: < ERR 143,LOAD FUNCTION CAUSED INPUT ERROR DURING LOAD ! 5377: --- ! 5378: > PPM EXFAL FAIL RETURN ! 5379: > PPM EROSI ERROR RETURN ! 5380: 11429a10248,10275 ! 5381: > * LOCAL ! 5382: > * ! 5383: > S$LOC ENT ENTRY POINT ! 5384: > JSR GTSMI GET SECOND ARGUMENT (LOCAL NUMBER) ! 5385: > ERR 256,LOCAL SECOND ARGUMENT IS NOT INTEGER ! 5386: > PPM EXFAL FAIL IF OUT OF RANGE ! 5387: > MOV XR,WB SAVE LOCAL NUMBER ! 5388: > MOV (XS)+,XR LOAD FIRST ARGUMENT ! 5389: > JSR GTNVR POINT TO VRBLK ! 5390: > PPM SLOC1 JUMP IF NOT VARIABLE NAME ! 5391: > MOV VRFNC(XR),XR ELSE LOAD FUNCTION POINTER ! 5392: > BNE (XR),=B$PFC,SLOC1 JUMP IF NOT PROGRAM DEFINED ! 5393: > * ! 5394: > * HERE IF WE HAVE A PROGRAM DEFINED FUNCTION NAME ! 5395: > * ! 5396: > BZE WB,EXFAL FAIL IF SECOND ARG IS ZERO ! 5397: > BGT WB,PFNLO(XR),EXFAL OR TOO LARGE ! 5398: > ADD FARGS(XR),WB ELSE ADJUST OFFSET TO INCLUDE ARGS ! 5399: > WTB WB CONVERT TO BYTES ! 5400: > ADD WB,XR POINT TO LOCAL POINTER ! 5401: > MOV PFAGB(XR),XR LOAD VRBLK POINTER ! 5402: > BRN EXVNM EXIT BUILDING NMBLK ! 5403: > * ! 5404: > * HERE IF FIRST ARGUMENT IS NO GOOD ! 5405: > * ! 5406: > SLOC1 ERB 257,LOCAL FIRST ARG IS NOT A PROGRAM FUNCTION NAME ! 5407: > EJC ! 5408: ! 5409: ! 5410: ! 5411: ! 5412: ! 5413: ! 5414: ! 5415: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 83 ! 5416: ! 5417: ! 5418: > * ! 5419: 11434c10280 ! 5420: < ERR 144,LPAD THIRD ARGUMENT NOT A STRING ! 5421: --- ! 5422: > ERR 148,LPAD THIRD ARGUMENT NOT A STRING ! 5423: 11438c10284 ! 5424: < ERR 145,LPAD SECOND ARGUMENT IS NOT INTEGER ! 5425: --- ! 5426: > ERR 149,LPAD SECOND ARGUMENT IS NOT INTEGER ! 5427: 11444c10290 ! 5428: < ERR 146,LPAD FIRST ARGUMENT IS NOT STRING ! 5429: --- ! 5430: > ERR 150,LPAD FIRST ARGUMENT IS NOT STRING ! 5431: 11485,11486c10331,10332 ! 5432: < ERR 147,LT FIRST ARGUMENT IS NOT NUMERIC ! 5433: < ERR 148,LT SECOND ARGUMENT IS NOT NUMERIC ! 5434: --- ! 5435: > ERR 151,LT FIRST ARGUMENT IS NOT NUMERIC ! 5436: > ERR 152,LT SECOND ARGUMENT IS NOT NUMERIC ! 5437: 11496,11497c10342,10343 ! 5438: < ERR 149,NE FIRST ARGUMENT IS NOT NUMERIC ! 5439: < ERR 150,NE SECOND ARGUMENT IS NOT NUMERIC ! 5440: --- ! 5441: > ERR 153,NE FIRST ARGUMENT IS NOT NUMERIC ! 5442: > ERR 154,NE SECOND ARGUMENT IS NOT NUMERIC ! 5443: 11510c10356 ! 5444: < ERR 151,NOTANY ARGUMENT IS NOT STRING OR EXPRESSION ! 5445: --- ! 5446: > ERR 155,NOTANY ARGUMENT IS NOT STRING OR EXPRESSION ! 5447: 11518,11519c10364,10365 ! 5448: < ERR 152,OPSYN THIRD ARGUMENT IS NOT INTEGER ! 5449: < ERR 153,OPSYN THIRD ARGUMENT IS NEGATIVE OR TOO LARGE ! 5450: --- ! 5451: > ERR 156,OPSYN THIRD ARGUMENT IS NOT INTEGER ! 5452: > ERR 157,OPSYN THIRD ARGUMENT IS NEGATIVE OR TOO LARGE ! 5453: 11523c10369 ! 5454: < ERR 154,OPSYN SECOND ARG IS NOT NATURAL VARIABLE NAME ! 5455: --- ! 5456: > ERR 158,OPSYN SECOND ARG IS NOT NATURAL VARIABLE NAME ! 5457: 11531c10377 ! 5458: < ERR 155,OPSYN FIRST ARG IS NOT NATURAL VARIABLE NAME ! 5459: --- ! 5460: > ERR 159,OPSYN FIRST ARG IS NOT NATURAL VARIABLE NAME ! 5461: 11574c10420 ! 5462: < SOPS5 ERB 156,OPSYN FIRST ARG IS NOT CORRECT OPERATOR NAME ! 5463: --- ! 5464: > SOPS5 ERB 160,OPSYN FIRST ARG IS NOT CORRECT OPERATOR NAME ! 5465: 11586c10432 ! 5466: < MOV =NUM03,WB OUTPUT FLAG ! 5467: --- ! 5468: > MOV =NUM02,WB OUTPUT FLAG ! 5469: 11588,11593c10434,10437 ! 5470: < ERR 157,OUTPUT THIRD ARGUMENT IS NOT A STRING ! 5471: < ERR 158,INAPPROPRIATE SECOND ARGUMENT FOR OUTPUT ! 5472: < ERR 159,INAPPROPRIATE FIRST ARGUMENT FOR OUTPUT ! 5473: < ERR 160,INAPPROPRIATE FILE SPECIFICATION FOR OUTPUT ! 5474: ! 5475: ! 5476: ! 5477: ! 5478: ! 5479: ! 5480: ! 5481: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 84 ! 5482: ! 5483: ! 5484: < PPM EXFAL FAIL IF FILE DOES NOT EXIST ! 5485: < ERR 161,OUTPUT FILE CANNOT BE WRITTEN TO ! 5486: --- ! 5487: > ERR 161,OUTPUT THIRD ARGUMENT (FILEPROPS) IS NOT A STRING ! 5488: > ERR 162,INAPPROPRIATE SECOND ARGUMENT (FILETAG) FOR OUTPUT ! 5489: > ERR 163,INAPPROPRIATE FIRST ARGUMENT FOR OUTPUT ! 5490: > PPM EXFAL FAIL RETURN ! 5491: 11603,11604c10447,10448 ! 5492: < ERR 162,POS ARGUMENT IS NOT INTEGER OR EXPRESSION ! 5493: < ERR 163,POS ARGUMENT IS NEGATIVE OR TOO LARGE ! 5494: --- ! 5495: > ERR 164,POS ARGUMENT IS NOT INTEGER OR EXPRESSION ! 5496: > ERR 165,POS ARGUMENT IS NEGATIVE OR TOO LARGE ! 5497: 11617a10462,10463 ! 5498: > .IF .CNBF ! 5499: > .ELSE ! 5500: 11619c10465,10466 ! 5501: < ERB 164,PROTOTYPE ARGUMENT IS NOT VALID OBJECT ! 5502: --- ! 5503: > .FI ! 5504: > ERB 166,PROTOTYPE ARGUMENT IS NOT TABLE OR ARRAY ! 5505: 11657c10504 ! 5506: < ERR 165,REMDR SECOND ARGUMENT IS NOT INTEGER ! 5507: --- ! 5508: > ERR 167,REMDR SECOND ARGUMENT IS NOT INTEGER ! 5509: 11668c10515 ! 5510: < ERB 167,REMDR CAUSED INTEGER OVERFLOW ! 5511: --- ! 5512: > ERB 168,REMDR CAUSED INTEGER OVERFLOW ! 5513: 11672c10519 ! 5514: < SRM01 ERB 166,REMDR FIRST ARGUMENT IS NOT INTEGER ! 5515: --- ! 5516: > SRM01 ERB 169,REMDR FIRST ARGUMENT IS NOT INTEGER ! 5517: 11684c10531 ! 5518: < ERR 168,REPLACE THIRD ARGUMENT IS NOT STRING ! 5519: --- ! 5520: > ERR 170,REPLACE THIRD ARGUMENT IS NOT STRING ! 5521: 11687c10534 ! 5522: < ERR 169,REPLACE SECOND ARGUMENT IS NOT STRING ! 5523: --- ! 5524: > ERR 171,REPLACE SECOND ARGUMENT IS NOT STRING ! 5525: 11749c10596 ! 5526: < ERR 170,REPLACE FIRST ARGUMENT IS NOT STRING ! 5527: --- ! 5528: > ERR 172,REPLACE FIRST ARGUMENT IS NOT STRING ! 5529: 11768c10615 ! 5530: < SRPL5 ERB 171,NULL OR UNEQUALLY LONG 2ND, 3RD ARGS TO REPLACE ! 5531: --- ! 5532: > SRPL5 ERB 173,NULL OR UNEQUALLY LONG 2ND, 3RD ARGS TO REPLACE ! 5533: 11771,11783d10617 ! 5534: < * REWIND ! 5535: < * ! 5536: < S$REW ENT ENTRY POINT ! 5537: < JSR IOFCB CALL FCBLK ROUTINE ! 5538: < ERR 172,REWIND ARGUMENT IS NOT A SUITABLE NAME ! 5539: < ERR 173,REWIND ARGUMENT IS NULL ! 5540: ! 5541: ! 5542: ! 5543: ! 5544: ! 5545: ! 5546: ! 5547: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 85 ! 5548: ! 5549: ! 5550: < JSR SYSRW CALL SYSTEM REWIND FUNCTION ! 5551: < ERR 174,REWIND FILE DOES NOT EXIST ! 5552: < ERR 175,REWIND FILE DOES NOT PERMIT REWIND ! 5553: < ERR 176,REWIND CAUSED NON-RECOVERABLE ERROR ! 5554: < BRN EXNUL EXIT WITH NULL RESULT IF NO ERROR ! 5555: < EJC ! 5556: < * ! 5557: 11788c10622 ! 5558: < ERR 177,REVERSE ARGUMENT IS NOT STRING ! 5559: --- ! 5560: > ERR 174,REVERSE ARGUMENT IS NOT STRING ! 5561: 11810c10644 ! 5562: < ERR 178,RPAD THIRD ARGUMENT IS NOT STRING ! 5563: --- ! 5564: > ERR 175,RPAD THIRD ARGUMENT IS NOT STRING ! 5565: 11814c10648 ! 5566: < ERR 179,RPAD SECOND ARGUMENT IS NOT INTEGER ! 5567: --- ! 5568: > ERR 176,RPAD SECOND ARGUMENT IS NOT INTEGER ! 5569: 11820c10654 ! 5570: < ERR 180,RPAD FIRST ARGUMENT IS NOT STRING ! 5571: --- ! 5572: > ERR 177,RPAD FIRST ARGUMENT IS NOT STRING ! 5573: 11863,11864c10697,10698 ! 5574: < ERR 181,RTAB ARGUMENT IS NOT INTEGER OR EXPRESSION ! 5575: < ERR 182,RTAB ARGUMENT IS NEGATIVE OR TOO LARGE ! 5576: --- ! 5577: > ERR 178,RTAB ARGUMENT IS NOT INTEGER OR EXPRESSION ! 5578: > ERR 179,RTAB ARGUMENT IS NEGATIVE OR TOO LARGE ! 5579: 11872c10706 ! 5580: < MOV (XS)+,R$IO2 SAVE THIRD ARG ! 5581: --- ! 5582: > MOV (XS)+,R$IOL SAVE THIRD ARG ! 5583: 11874,11876c10708,10710 ! 5584: < JSR IOFCB CALL FCBLK ROUTINE ! 5585: < ERR 291,SET FIRST ARGUMENT IS NOT A SUITABLE NAME ! 5586: < ERR 292,SET FIRST ARGUMENT IS NULL ! 5587: --- ! 5588: > JSR IOFTG CALL IOTAG ROUTINE ! 5589: > ERR 180,SET FIRST ARGUMENT IS NOT A SUITABLE NAME ! 5590: > BZE WA,EXFAL FAIL IF NO IOTAG ! 5591: 11878c10712 ! 5592: < MOV R$IO2,WC LOAD THIRD ARG ! 5593: --- ! 5594: > MOV R$IOL,WC LOAD THIRD ARG ! 5595: 11880,11885c10714,10716 ! 5596: < ERR 293,INAPPROPRIATE SECOND ARGUMENT TO SET ! 5597: < ERR 294,INAPPROPRIATE THIRD ARGUMENT TO SET ! 5598: < ERR 295,SET FILE DOES NOT EXIST ! 5599: < ERR 296,SET FILE DOES NOT PERMIT SETTING FILE POINTER ! 5600: < ERR 297,SET CAUSED NON-RECOVERABLE I/O ERROR ! 5601: < BRN EXNUL OTHERWISEW RETURN NULL ! 5602: --- ! 5603: > PPM EXFAL FAILURE RETURN ! 5604: > PPM EROSI ERROR RETURN ! 5605: > BRN EXNUL OTHERWISE RETURN NULL ! 5606: ! 5607: ! 5608: ! 5609: ! 5610: ! 5611: ! 5612: ! 5613: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 86 ! 5614: ! 5615: ! 5616: 11889,11899d10719 ! 5617: < * TAB ! 5618: < * ! 5619: < S$TAB ENT ENTRY POINT ! 5620: < MOV =P$TAB,WB SET PCODE FOR INTEGER ARG CASE ! 5621: < MOV =P$TBD,WA SET PCODE FOR EXPRESSION ARG CASE ! 5622: < JSR PATIN CALL COMMON ROUTINE TO BUILD NODE ! 5623: < ERR 183,TAB ARGUMENT IS NOT INTEGER OR EXPRESSION ! 5624: < ERR 184,TAB ARGUMENT IS NEGATIVE OR TOO LARGE ! 5625: < BRN EXIXR RETURN PATTERN NODE ! 5626: < EJC ! 5627: < * ! 5628: 11906,11907c10726,10727 ! 5629: < ERR 185,RPOS ARGUMENT IS NOT INTEGER OR EXPRESSION ! 5630: < ERR 186,RPOS ARGUMENT IS NEGATIVE OR TOO LARGE ! 5631: --- ! 5632: > ERR 181,RPOS ARGUMENT IS NOT INTEGER OR EXPRESSION ! 5633: > ERR 182,RPOS ARGUMENT IS NEGATIVE OR TOO LARGE ! 5634: 11917a10738 ! 5635: > PPM EXFAL FAIL EMPTY TABLE ! 5636: 11946c10767 ! 5637: < SSTX2 ERB 187,SETEXIT ARGUMENT IS NOT LABEL NAME OR NULL ! 5638: --- ! 5639: > SSTX2 ERB 183,SETEXIT ARGUMENT IS NOT LABEL NAME OR NULL ! 5640: 11955a10777 ! 5641: > PPM EXFAL FAIL EMPTY TABLE ! 5642: 11967c10789 ! 5643: < ERR 188,SPAN ARGUMENT IS NOT STRING OR EXPRESSION ! 5644: --- ! 5645: > ERR 184,SPAN ARGUMENT IS NOT STRING OR EXPRESSION ! 5646: 11974a10797 ! 5647: > JSR GTSTG LOAD STRING ARGUMENT ! 5648: 11981d10803 ! 5649: < .FI ! 5650: 11986c10808,10809 ! 5651: < ERR 189,SIZE ARGUMENT IS NOT STRING ! 5652: --- ! 5653: > .FI ! 5654: > ERR 185,SIZE ARGUMENT IS NOT STRING ! 5655: 11996,11997c10819,10821 ! 5656: < ERR 190,STOPTR FIRST ARGUMENT IS NOT APPROPRIATE NAME ! 5657: < ERR 191,STOPTR SECOND ARGUMENT IS NOT TRACE TYPE ! 5658: --- ! 5659: > ERR 186,STOPTR FIRST ARGUMENT IS NOT APPROPRIATE NAME ! 5660: > ERR 187,STOPTR SECOND ARGUMENT IS NOT TRACE TYPE ! 5661: > PPM EXFAL FAIL RETURN ! 5662: 12005c10829 ! 5663: < ERR 192,SUBSTR THIRD ARGUMENT IS NOT INTEGER ! 5664: --- ! 5665: > ERR 188,SUBSTR THIRD ARGUMENT IS NOT INTEGER ! 5666: 12009c10833 ! 5667: < ERR 193,SUBSTR SECOND ARGUMENT IS NOT INTEGER ! 5668: --- ! 5669: > ERR 189,SUBSTR SECOND ARGUMENT IS NOT INTEGER ! 5670: 12014a10839 ! 5671: > JSR GTSTG LOAD FIRST ARGUMENT ! 5672: ! 5673: ! 5674: ! 5675: ! 5676: ! 5677: ! 5678: ! 5679: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 87 ! 5680: ! 5681: ! 5682: 12024d10848 ! 5683: < .FI ! 5684: 12026c10850,10855 ! 5685: < ERR 194,SUBSTR FIRST ARGUMENT IS NOT STRING ! 5686: --- ! 5687: > .FI ! 5688: > ERR 190,SUBSTR FIRST ARGUMENT IS NOT STRING ! 5689: > MOV XR,XL COPY POINTER TO FIRST ARG ! 5690: > .IF .CNBF ! 5691: > MOV SBSSV,WC RELOAD THIRD ARGUMENT ! 5692: > .ELSE ! 5693: 12028c10857 ! 5694: < * MERGE WITH BFBLK OR SCBLK PTR IN XR. WA HAS LENGTH ! 5695: --- ! 5696: > * MERGE WITH BFBLK OR SCBLK IN XR, LENGTH IN WA ! 5697: 12030a10860 ! 5698: > .FI ! 5699: 12032c10862 ! 5700: < MOV WA,WC ELSE GET STRING LENGTH ! 5701: --- ! 5702: > MOV SCLEN(XL),WC ELSE GET STRING LENGTH ! 5703: 12038,12039c10868 ! 5704: < SSUB1 MOV WA,XL SAVE STRING LENGTH ! 5705: < MOV WC,WA SET LENGTH OF SUBSTRING ! 5706: --- ! 5707: > SSUB1 MOV WC,WA SET LENGTH OF SUBSTRING ! 5708: 12041,12042c10870 ! 5709: < BGT WC,XL,EXFAL JUMP IF IMPROPER SUBSTRING ! 5710: < MOV XR,XL COPY POINTER TO FIRST ARG ! 5711: --- ! 5712: > BGT WC,SCLEN(XL),EXFAL JUMP IF IMPROPER SUBSTRING ! 5713: 12046a10875,10885 ! 5714: > * TAB ! 5715: > * ! 5716: > S$TAB ENT ENTRY POINT ! 5717: > MOV =P$TAB,WB SET PCODE FOR INTEGER ARG CASE ! 5718: > MOV =P$TBD,WA SET PCODE FOR EXPRESSION ARG CASE ! 5719: > JSR PATIN CALL COMMON ROUTINE TO BUILD NODE ! 5720: > ERR 191,TAB ARGUMENT IS NOT INTEGER OR EXPRESSION ! 5721: > ERR 192,TAB ARGUMENT IS NEGATIVE OR TOO LARGE ! 5722: > BRN EXIXR RETURN PATTERN NODE ! 5723: > EJC ! 5724: > * ! 5725: 12053,12054c10892,10893 ! 5726: < ERR 195,TABLE ARGUMENT IS NOT INTEGER ! 5727: < ERR 196,TABLE ARGUMENT IS OUT OF RANGE ! 5728: --- ! 5729: > ERR 193,TABLE ARGUMENT IS NOT INTEGER ! 5730: > ERR 194,TABLE ARGUMENT IS OUT OF RANGE ! 5731: 12062c10901 ! 5732: < WTB WA CONVERT LENGTH TO BYTES ! 5733: --- ! 5734: > WTB WA CONVERT LENGTH TO BAUS ! 5735: 12101c10940 ! 5736: < STR01 ERB 197,TRACE FOURTH ARG IS NOT FUNCTION NAME OR NULL ! 5737: --- ! 5738: ! 5739: ! 5740: ! 5741: ! 5742: ! 5743: ! 5744: ! 5745: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 88 ! 5746: ! 5747: ! 5748: > STR01 ERB 195,TRACE FOURTH ARG IS NOT FUNCTION NAME OR NULL ! 5749: 12110,12111c10949,10951 ! 5750: < ERR 198,TRACE FIRST ARGUMENT IS NOT APPROPRIATE NAME ! 5751: < ERR 199,TRACE SECOND ARGUMENT IS NOT TRACE TYPE ! 5752: --- ! 5753: > ERR 196,TRACE FIRST ARGUMENT IS NOT APPROPRIATE NAME ! 5754: > ERR 197,TRACE SECOND ARGUMENT IS NOT TRACE TYPE ! 5755: > PPM UNUSED RETURN ! 5756: 12125c10965 ! 5757: < ERR 200,TRIM ARGUMENT IS NOT STRING ! 5758: --- ! 5759: > ERR 198,TRIM ARGUMENT IS NOT STRING ! 5760: 12142c10982 ! 5761: < ERR 201,UNLOAD ARGUMENT IS NOT NATURAL VARIABLE NAME ! 5762: --- ! 5763: > ERR 199,UNLOAD ARGUMENT IS NOT NATURAL VARIABLE NAME ! 5764: 12145a10986,10995 ! 5765: > EJC ! 5766: > * ! 5767: > * VDIFFER ! 5768: > * ! 5769: > S$VDF ENT ENTRY POINT ! 5770: > MOV (XS)+,XR LOAD SECOND ARGUMENT ! 5771: > MOV (XS),XL LOAD FIRST ARGUMENT ! 5772: > JSR IDENT CALL IDENT COMPARISON ROUTINE ! 5773: > PPM EXFAL FAIL IF IDENT ! 5774: > BRN EXITS RETURN FIRST ARG IF DIFFER ! 5775: 12255c11105 ! 5776: < MOV TRFPT(XR),XL GET FILE CTRL BLK PTR OR ZERO ! 5777: --- ! 5778: > MOV TRTRI(XR),XL GET TRTIO BLOCK PTR OR 0 ! 5779: 12263c11113,11121 ! 5780: < JSR SYSRD READ NEXT STANDARD INPUT IMAGE ! 5781: --- ! 5782: > BZE TTINS,ACSA5 SKIP IF NOT TERML STD INPUT ! 5783: > JSR SYSRI READ FROM TERMINAL ! 5784: > PPM ACS03 END FILE ! 5785: > PPM EROSI ERROR ! 5786: > BRN ACS07 MERGE ! 5787: > * ! 5788: > * GENUINE STD INPUT FILE ! 5789: > * ! 5790: > ACSA5 JSR SYSRD READ NEXT STANDARD INPUT IMAGE ! 5791: 12264a11123 ! 5792: > PPM EROSI ERROR RETURN ! 5793: 12269c11128,11129 ! 5794: < ACS06 MOV XL,WA FCBLK PTR ! 5795: --- ! 5796: > ACS06 MOV TRTAG(XL),WA OBTAIN IOTAG ! 5797: > BZE WA,ACS03 FAIL IF ENDFILE DONE ! 5798: 12272c11132 ! 5799: < MOV XL,WA FCBLK PTR ! 5800: --- ! 5801: > MOV TRTAG(XL),WA GET IOTAG ! 5802: 12275,12276c11135 ! 5803: < PPM ACS22 ERROR ! 5804: ! 5805: ! 5806: ! 5807: ! 5808: ! 5809: ! 5810: ! 5811: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 89 ! 5812: ! 5813: ! 5814: < PPM ACS23 ERROR ! 5815: --- ! 5816: > PPM ACS22 ERROR RETURN ! 5817: 12328c11187 ! 5818: < MTI KVABE(XR) ELSE LOAD VALUE AS INTEGER ! 5819: --- ! 5820: > MTI KVANC(XR) ELSE LOAD VALUE AS INTEGER ! 5821: 12338a11198 ! 5822: > WTB XR CONVERT TO OFFSET IN BAUS ! 5823: 12347c11207 ! 5824: < BSW XR,5 SWITCH ON KEYWORD NUMBER ! 5825: --- ! 5826: > BSW XR,6 SWITCH ON KEYWORD NUMBER ! 5827: 12349a11210 ! 5828: > IFF K$$CD,ACS23 CODE ! 5829: 12385a11247 ! 5830: > PPM EROSI ERROR RETURN ! 5831: 12388c11250 ! 5832: < * ERROR RETURNS ! 5833: --- ! 5834: > * ERROR RETURN ! 5835: 12391c11253 ! 5836: < ERB 202,INPUT FROM FILE CAUSED NON-RECOVERABLE ERROR ! 5837: --- ! 5838: > BRN EROSI GENERATE ERROR MESSAGE ! 5839: 12393,12394c11255,11258 ! 5840: < ACS23 MOV XR,DNAMP POP UNUSED SCBLK ! 5841: < ERB 203,INPUT FILE RECORD HAS INCORRECT FORMAT ! 5842: --- ! 5843: > * ACCESS CODE KEYWORD ! 5844: > * ! 5845: > ACS23 LDI KVCOD GET CODE VALUE ! 5846: > BRN ACS13 EXIT ! 5847: 12480c11344 ! 5848: < * (WA) LENGTH REQUIRED IN BYTES ! 5849: --- ! 5850: > * (WA) LENGTH REQUIRED IN BAUS ! 5851: 12514c11378 ! 5852: < WTB XR CONVERT TO BAUS (SGD05) ! 5853: --- ! 5854: > WTB XR CONVERT TO BAUS ! 5855: 12520c11384 ! 5856: < ERB 204,MEMORY OVERFLOW ! 5857: --- ! 5858: > ERB 200,MEMORY OVERFLOW ! 5859: 12528c11392 ! 5860: < BTW WB CONVERT BYTES TO WORDS ! 5861: --- ! 5862: > BTW WB CONVERT BAUS TO WORDS ! 5863: 12539c11403 ! 5864: < WTB XR CONVERT TO BAUS (SGD05) ! 5865: --- ! 5866: > WTB XR CONVERT TO BAUS ! 5867: 12561a11426,11427 ! 5868: > * (WA) 0 (INITIAL OFFSET TO BFBLK CHARS) ! 5869: > * (WB) 0 (INITIAL BCLEN) ! 5870: ! 5871: ! 5872: ! 5873: ! 5874: ! 5875: ! 5876: ! 5877: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 90 ! 5878: ! 5879: ! 5880: 12563d11428 ! 5881: < * (WA,WB) DESTROYED ! 5882: 12580c11445,11446 ! 5883: < ZER BFCHR(XL) CLEAR FIRST WORD (NULL PAD) ! 5884: --- ! 5885: > ZER WB CLEAR FOR RETURN ! 5886: > MOV WB,BFCHR(XL) CLEAR FIRST WORD (NULL PAD) ! 5887: 12581a11448 ! 5888: > ZER WA CLEAR FOR RETURN ! 5889: 12586c11453 ! 5890: < ALB01 ERB 274,REQUESTED BUFFER ALLOCATION EXCEEDS MXLEN ! 5891: --- ! 5892: > ALB01 ERB 201,REQUESTED BUFFER ALLOCATION EXCEEDS MAXLNGTH ! 5893: 12611c11478 ! 5894: < CTB WA,SCSI$ COMPUTE LENGTH OF SCBLK IN BYTES ! 5895: --- ! 5896: > CTB WA,SCSI$ COMPUTE LENGTH OF SCBLK IN BAUS ! 5897: 12634c11501 ! 5898: < ALCS2 ERB 205,STRING LENGTH EXCEEDS VALUE OF MAXLNGTH KEYWORD ! 5899: --- ! 5900: > ALCS2 ERB 202,STRING LENGTH EXCEEDS VALUE OF MAXLNGTH KEYWORD ! 5901: 12640c11507 ! 5902: < * (WA) LENGTH REQUIRED IN BYTES ! 5903: --- ! 5904: > * (WA) LENGTH REQUIRED IN BAUS ! 5905: 12676,12677d11542 ! 5906: < .IF .CNBF ! 5907: < .ELSE ! 5908: 12679,12712d11543 ! 5909: < * APNDB -- APPEND STRING TO BUFFER ! 5910: < * ! 5911: < * THIS ROUTINE IS USED BY BUFFER HANDLING ROUTINES TO ! 5912: < * APPEND DATA TO AN EXISTING BFBLK. ! 5913: < * ! 5914: < * (XR) EXISTING BCBLK TO BE APPENDED ! 5915: < * (XL) CONVERTABLE TO STRING ! 5916: < * JSR APNDB CALL TO APPEND TO BUFFER ! 5917: < * PPM LOC THREAD IF (XL) CANT BE CONVERTED ! 5918: < * PPM LOC IF NOT ENOUGH ROOM ! 5919: < * (WA,WB) DESTROYED ! 5920: < * ! 5921: < * IF MORE CHARACTERS ARE SPECIFIED THAN CAN BE INSERTED, ! 5922: < * THEN NO ACTION IS TAKEN AND THE SECOND RETURN IS TAKEN. ! 5923: < * ! 5924: < APNDB PRC E,2 ENTRY POINT ! 5925: < MOV BCLEN(XR),WA LOAD OFFSET TO INSERT ! 5926: < ZER WB REPLACE SECTION IS NULL ! 5927: < JSR INSBF CALL TO INSERT AT END ! 5928: < PPM APN01 CONVERT ERROR ! 5929: < PPM APN02 NO ROOM ! 5930: < EXI RETURN TO CALLER ! 5931: < * ! 5932: < * HERE TO TAKE CONVERT FAILURE EXIT ! 5933: < * ! 5934: < APN01 EXI 1 RETURN TO CALLER ALTERNATE ! 5935: < * ! 5936: ! 5937: ! 5938: ! 5939: ! 5940: ! 5941: ! 5942: ! 5943: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 91 ! 5944: ! 5945: ! 5946: < * HERE FOR NO FIT EXIT ! 5947: < * ! 5948: < APN02 EXI 2 ALTERNATE EXIT TO CALLER ! 5949: < ENP END PROCEDURE APNDB ! 5950: < EJC ! 5951: < .FI ! 5952: < * ! 5953: 12882c11713 ! 5954: < * HERE FOR FAILURE DURING EXPRESSION EVALUATION ! 5955: --- ! 5956: > * HERE FOR FAILURE RETURNS ! 5957: 12885d11715 ! 5958: < EXI 1 TAKE FAILURE EXIT ! 5959: 12886a11717,11718 ! 5960: > ASG3A EXI 1 TAKE FAILURE EXIT ! 5961: > * ! 5962: 12933c11765 ! 5963: < MOV TRVAL(WC),-(XS) STACK VALUE TO OUTPUT (SGD01) ! 5964: --- ! 5965: > MOV TRVAL(XR),-(XS) STACK VALUE TO OUTPUT ! 5966: 12939c11771 ! 5967: < ASG11 MOV TRFPT(XL),WA FCBLK PTR ! 5968: --- ! 5969: > ASG11 MOV TRTRI(XL),WA TRTIO BLK PTR ! 5970: 12943a11776,11779 ! 5971: > MOV WA,XL COPY TRTIO BLOCK PTR TO XL ! 5972: > MOV TRTAG(XL),WA GET IOTAG ! 5973: > BZE WA,ASG3A FAIL IF ENDFILE DONE ! 5974: > MOV SCLEN(XR),WC STRING LENGTH ! 5975: 12945,12946c11781,11782 ! 5976: < ERR 206,OUTPUT CAUSED FILE OVERFLOW ! 5977: < ERR 207,OUTPUT CAUSED NON-RECOVERABLE ERROR ! 5978: --- ! 5979: > PPM ASG3A FAIL RETURN ! 5980: > PPM EROSI ERROR RETURN ! 5981: 12954c11790 ! 5982: < * HERE TO PRINT A STRING ON THE PRINTER ! 5983: --- ! 5984: > * HERE TO PRINT A STRING ! 5985: 12956,12958c11792,11793 ! 5986: < ASG13 JSR PRTST PRINT STRING VALUE ! 5987: < BEQ TRTER(XL),=V$TER,ASG20 JUMP IF TERMINAL OUTPUT ! 5988: < JSR PRTNL END OF LINE ! 5989: --- ! 5990: > ASG13 BEQ TRTER(XL),=V$TER,ASG20 JUMP IF TERMINAL OUTPUT ! 5991: > JSR PRTSF PRINT STRING AND FLUSH BUFFER ! 5992: 12970c11805 ! 5993: < ERR 208,KEYWORD VALUE ASSIGNED IS NOT INTEGER ! 5994: --- ! 5995: > ERR 203,KEYWORD VALUE ASSIGNED IS NOT INTEGER ! 5996: 12972a11808 ! 5997: > BEQ XL,=K$COD,ASG24 JUMP IF SPECIAL CASE OF CODE ! 5998: 12981c11817 ! 5999: < ERB 209,KEYWORD IN ASSIGNMENT IS PROTECTED ! 6000: --- ! 6001: > ERB 204,KEYWORD IN ASSIGNMENT IS PROTECTED ! 6002: ! 6003: ! 6004: ! 6005: ! 6006: ! 6007: ! 6008: ! 6009: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 92 ! 6010: ! 6011: ! 6012: 12985c11821 ! 6013: < ASG15 MOV WA,KVABE(XL) STORE NEW VALUE ! 6014: --- ! 6015: > ASG15 MOV WA,KVANC(XL) STORE NEW VALUE ! 6016: 12998a11835 ! 6017: > EJC ! 6018: 12999a11837,11838 ! 6019: > * ASIGN (CONTINUED) ! 6020: > * ! 6021: 13006c11845 ! 6022: < ASG18 ERB 210,KEYWORD VALUE ASSIGNED IS NEGATIVE OR TOO LARGE ! 6023: --- ! 6024: > ASG18 ERB 205,KEYWORD VALUE ASSIGNED IS NEGATIVE OR TOO LARGE ! 6025: 13012c11851 ! 6026: < ERR 211,VALUE ASSIGNED TO KEYWORD ERRTEXT NOT A STRING ! 6027: --- ! 6028: > ERR 206,VALUE ASSIGNED TO KEYWORD ERRTEXT NOT A STRING ! 6029: 13018c11857,11858 ! 6030: < ASG20 JSR PRTTR PRINT ! 6031: --- ! 6032: > ASG20 JSR PTTST PRINT STRING TO TERMINAL ! 6033: > JSR PTTFH FLUSH TERMINAL BUFFER ! 6034: 13020d11859 ! 6035: < * ! 6036: 13029c11868 ! 6037: < ERB 268,INCONSISTENT VALUE ASSIGNED TO KEYWORD PROFILE ! 6038: --- ! 6039: > ERB 207,INCONSISTENT VALUE ASSIGNED TO KEYWORD PROFILE ! 6040: 13031c11870 ! 6041: < ASG22 MOV WA,PFDMP NOTE VALUE ON FIRST ASSIGNMENT ! 6042: --- ! 6043: > ASG22 MOV WA,PFDMP NOTE VALUE ON FIRST ASSIGNMENT ! 6044: 13035a11875,11879 ! 6045: > * ! 6046: > * HERE FOR KEYWORD ASSIGNMENT TO CODE ! 6047: > * ! 6048: > ASG24 STI KVCOD STORE VALUE ! 6049: > EXI RETURN TO CALLER ! 6050: 13093c11937 ! 6051: < * (WA) LENGTH OF BLOCK IN BYTES ! 6052: --- ! 6053: > * (WA) LENGTH OF BLOCK IN BAUS ! 6054: 13107,13111d11950 ! 6055: < .IF .CNBF ! 6056: < .ELSE ! 6057: < IFF BL$BC,BLN04 BCBLK ! 6058: < IFF BL$BF,BLN11 BFBLK ! 6059: < .FI ! 6060: 13112a11952 ! 6061: > IFF BL$CO,BLN12 COBLK ! 6062: 13131a11972,11976 ! 6063: > .IF .CNBF ! 6064: > .ELSE ! 6065: > IFF BL$BC,BLN04 BCBLK ! 6066: > IFF BL$BF,BLN11 BFBLK ! 6067: > .FI ! 6068: ! 6069: ! 6070: ! 6071: ! 6072: ! 6073: ! 6074: ! 6075: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 93 ! 6076: ! 6077: ! 6078: 13162c12007 ! 6079: < * HERE FOR FOUR WORD BLOCKS (P2,TE,BC) ! 6080: --- ! 6081: > * HERE FOR FOUR WORD BLOCKS (P2,TE) ! 6082: 13202c12047 ! 6083: < CTB WA,SCSI$ CALCULATE LENGTH IN BYTES ! 6084: --- ! 6085: > CTB WA,SCSI$ CALCULATE LENGTH IN BAUS ! 6086: 13209,13210c12054,12055 ! 6087: < BLN11 MOV BFALC(XR),WA GET ALLOCATION IN BYTES ! 6088: < CTB WA,BFSI$ CALCULATE LENGTH IN BYTES ! 6089: --- ! 6090: > BLN11 MOV BFALC(XR),WA GET ALLOCATION IN BAUS ! 6091: > CTB WA,BFSI$ CALCULATE LENGTH IN BAUS ! 6092: 13212a12058,12062 ! 6093: > * ! 6094: > * HERE FOR COBLK ! 6095: > * ! 6096: > BLN12 MOV *COSI$,WA GET SIZE IN BAUS ! 6097: > EXI RETURN TO BLKLN CALLER ! 6098: 13216c12066 ! 6099: < * COPYB -- COPY A BLOCK ! 6100: --- ! 6101: > * CBLCK -- COPY A BLOCK ! 6102: 13219c12069 ! 6103: < * JSR COPYB CALL TO COPY BLOCK ! 6104: --- ! 6105: > * JSR CBLCK CALL TO COPY BLOCK ! 6106: 13226c12076 ! 6107: < COPYB PRC N,1 ENTRY POINT ! 6108: --- ! 6109: > CBLCK PRC N,1 ENTRY POINT ! 6110: 13228c12078 ! 6111: < BEQ XR,=NULLS,COP10 RETURN ARGUMENT IF IT IS NULL ! 6112: --- ! 6113: > BEQ XR,=NULLS,CBL10 RETURN ARGUMENT IF IT IS NULL ! 6114: 13237,13239c12087,12089 ! 6115: < BEQ WB,=B$TBT,COP05 JUMP IF TABLE ! 6116: < BEQ WB,=B$VCT,COP01 JUMP IF VECTOR ! 6117: < BEQ WB,=B$PDT,COP01 JUMP IF PROGRAM DEFINED ! 6118: --- ! 6119: > BEQ WB,=B$TBT,CBL05 JUMP IF TABLE ! 6120: > BEQ WB,=B$VCT,CBL01 JUMP IF VECTOR ! 6121: > BEQ WB,=B$PDT,CBL01 JUMP IF PROGRAM DEFINED ! 6122: 13242c12092 ! 6123: < BEQ WB,=B$BCT,COP11 JUMP IF BUFFER ! 6124: --- ! 6125: > BEQ WB,=B$BCT,CBL11 JUMP IF BUFFER ! 6126: 13244c12094 ! 6127: < BNE WB,=B$ART,COP10 RETURN COPY IF NOT ARRAY ! 6128: --- ! 6129: > BNE WB,=B$ART,CBL10 RETURN COPY IF NOT ARRAY ! 6130: 13249c12099 ! 6131: < BRN COP02 JUMP TO MERGE ! 6132: --- ! 6133: > BRN CBL02 JUMP TO MERGE ! 6134: ! 6135: ! 6136: ! 6137: ! 6138: ! 6139: ! 6140: ! 6141: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 94 ! 6142: ! 6143: ! 6144: 13253c12103 ! 6145: < COP01 ADD *PDFLD,XR POINT TO PDFLD = VCVLS ! 6146: --- ! 6147: > CBL01 ADD *PDFLD,XR POINT TO PDFLD = VCVLS ! 6148: 13258c12108 ! 6149: < COP02 MOV (XR),XL LOAD NEXT POINTER ! 6150: --- ! 6151: > CBL02 MOV (XR),XL LOAD NEXT POINTER ! 6152: 13262c12112 ! 6153: < COP03 BNE (XL),=B$TRT,COP04 JUMP IF NOT TRAPPED ! 6154: --- ! 6155: > CBL03 BNE (XL),=B$TRT,CBL04 JUMP IF NOT TRAPPED ! 6156: 13264c12114 ! 6157: < BRN COP03 AND LOOP BACK ! 6158: --- ! 6159: > BRN CBL03 AND LOOP BACK ! 6160: 13267c12117 ! 6161: < * COPYB (CONTINUED) ! 6162: --- ! 6163: > * CBLCK (CONTINUED) ! 6164: 13271,13273c12121,12123 ! 6165: < COP04 MOV XL,(XR)+ STORE REAL VALUE, BUMP POINTER ! 6166: < BNE XR,DNAMP,COP02 LOOP BACK IF MORE TO GO ! 6167: < BRN COP09 ELSE JUMP TO EXIT ! 6168: --- ! 6169: > CBL04 MOV XL,(XR)+ STORE REAL VALUE, BUMP POINTER ! 6170: > BNE XR,DNAMP,CBL02 LOOP BACK IF MORE TO GO ! 6171: > BRN CBL09 ELSE JUMP TO EXIT ! 6172: 13277c12127 ! 6173: < COP05 ZER IDVAL(XR) ZERO ID TO STOP DUMP BLOWING UP ! 6174: --- ! 6175: > CBL05 ZER IDVAL(XR) ZERO ID TO STOP DUMP BLOWING UP ! 6176: 13283,13284c12133,12134 ! 6177: < COP06 MOV (XS),XR LOAD TABLE POINTER ! 6178: < BEQ WC,TBLEN(XR),COP09 JUMP TO EXIT IF ALL DONE ! 6179: --- ! 6180: > CBL06 MOV (XS),XR LOAD TABLE POINTER ! 6181: > BEQ WC,TBLEN(XR),CBL09 JUMP TO EXIT IF ALL DONE ! 6182: 13291c12141 ! 6183: < COP07 MOV TENXT(XR),XL LOAD POINTER TO NEXT TEBLK ! 6184: --- ! 6185: > CBL07 MOV TENXT(XR),XL LOAD POINTER TO NEXT TEBLK ! 6186: 13293c12143 ! 6187: < BEQ (XL),=B$TBT,COP06 BACK FOR NEXT BUCKET IF CHAIN END ! 6188: --- ! 6189: > BEQ (XL),=B$TBT,CBL06 BACK FOR NEXT BUCKET IF CHAIN END ! 6190: 13306,13307c12156,12157 ! 6191: < COP08 MOV TEVAL(XL),XL LOAD VALUE ! 6192: < BEQ (XL),=B$TRT,COP08 LOOP BACK IF TRAPPED ! 6193: --- ! 6194: > CBL08 MOV TEVAL(XL),XL LOAD VALUE ! 6195: > BEQ (XL),=B$TRT,CBL08 LOOP BACK IF TRAPPED ! 6196: 13309c12159 ! 6197: < BRN COP07 BACK FOR NEXT TEBLK ! 6198: --- ! 6199: > BRN CBL07 BACK FOR NEXT TEBLK ! 6200: ! 6201: ! 6202: ! 6203: ! 6204: ! 6205: ! 6206: ! 6207: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 95 ! 6208: ! 6209: ! 6210: 13313c12163 ! 6211: < COP09 MOV (XS)+,XR LOAD POINTER TO BLOCK ! 6212: --- ! 6213: > CBL09 MOV (XS)+,XR LOAD POINTER TO BLOCK ! 6214: 13318,13319c12168 ! 6215: < COP10 EXI 1 RETURN ! 6216: < EJC ! 6217: --- ! 6218: > CBL10 EXI 1 RETURN ! 6219: 13321a12171 ! 6220: > EJC ! 6221: 13325c12175 ! 6222: < COP11 MOV BCBUF(XR),XL GET BFBLK PTR ! 6223: --- ! 6224: > CBL11 MOV BCBUF(XR),XL GET BFBLK PTR ! 6225: 13335c12185 ! 6226: < BRN COP09 BRANCH TO EXIT ! 6227: --- ! 6228: > BRN CBL09 BRANCH TO EXIT ! 6229: 13337c12187,12188 ! 6230: < ENP END PROCEDURE COPYB ! 6231: --- ! 6232: > ENP END PROCEDURE CBLCK ! 6233: > EJC ! 6234: 13455c12306 ! 6235: < CGN01 ERB 212,SYNTAX ERROR. VALUE USED WHERE NAME IS REQUIRED ! 6236: --- ! 6237: > CGN01 ERB 208,SYNTAX ERROR. VALUE USED WHERE NAME IS REQUIRED ! 6238: 13586,13592d12436 ! 6239: < BNZ VRLEN(XR),CGVL0 JUMP IF NOT SYSTEM VARIABLE ! 6240: < MOV XR,-(XS) STACK XR ! 6241: < MOV VRSVP(XR),XR POINT TO SVBLK ! 6242: < MOV SVBIT(XR),WA GET SVBLK PROPERTY BITS ! 6243: < MOV (XS)+,XR RECOVER XR ! 6244: < ANB BTCKW,WA CHECK IF CONSTANT KEYWORD ! 6245: < NZB WA,CGV00 JUMP IF CONSTANT KEYWORD ! 6246: 13616,13617c12460 ! 6247: < * PREPARE TO GENERATE CODE FOR CMBLK. WC IS SET TO THE ! 6248: < * VALUE OF CSWNO (ZERO IF -OPTIMISE, 1 IF -NOOPT) TO ! 6249: --- ! 6250: > * PREPARE TO GENERATE CODE FOR CMBLK. WC IS CLEARED TO ! 6251: 13624c12467 ! 6252: < MOV CSWNO,WC RESET CONSTANT FLAG ! 6253: --- ! 6254: > ZER WC CLEAR OPTIMISE FLAG ! 6255: 13644d12486 ! 6256: < IFF C$CNP,CGV24 CONCATENATION (NOT PATTERN MATCH) ! 6257: 13645a12488 ! 6258: > IFF C$CNP,CGV24 CONCAT. NOT PATTERN ! 6259: 13688,13689c12531,12532 ! 6260: < CGV07 SUB *CMVLS,WB GET NUMBER OF ARG PTRS (BYTES) ! 6261: < BTW WB CONVERT BYTES TO WORDS ! 6262: --- ! 6263: > CGV07 SUB *CMVLS,WB GET NUMBER OF ARG PTRS (BAUS) ! 6264: > BTW WB CONVERT BAUS TO WORDS ! 6265: 13968c12811 ! 6266: ! 6267: ! 6268: ! 6269: ! 6270: ! 6271: ! 6272: ! 6273: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 96 ! 6274: ! 6275: ! 6276: < WTB XR CONVERT WORD OFFSET TO BYTES ! 6277: --- ! 6278: > WTB XR CONVERT WORD OFFSET TO BAUS ! 6279: 14105c12948 ! 6280: < CDWD5 ERB 213,SYNTAX ERROR. STATEMENT IS TOO COMPLICATED. ! 6281: --- ! 6282: > CDWD5 ERB 209,SYNTAX ERROR. STATEMENT IS TOO COMPLICATED. ! 6283: 14258,14260c13101,13107 ! 6284: < BNE STAGE,=STGIC,CMP02 SKIP UNLESS INITIAL COMPILE ! 6285: < JSR READR READ NEXT INPUT IMAGE ! 6286: < BZE XR,CMP09 JUMP IF NO INPUT AVAILABLE ! 6287: --- ! 6288: > BEQ STAGE,=STGIC,CMPC1 READ IF INITIAL COMPILE ! 6289: > BZE R$COP,CMP02 ELSE SKIP IF NO -COPY IN FORCE ! 6290: > * ! 6291: > * HERE TO ATTEMPT READ (STGIC OR -COPY) ! 6292: > * ! 6293: > CMPC1 JSR READR READ NEXT INPUT IMAGE ! 6294: > BZE XR,CMPC2 JUMP IF NO INPUT AVAILABLE ! 6295: 14265a13113,13119 ! 6296: > * HERE IF READR HAD NOTHING TO RETURN. IF NOT DURING ! 6297: > * INITIAL COMPILE, THEN MUST BE AT OUTER LEVEL OF -COPY ! 6298: > * IN CODE(). R$CIM HAS BEEN RESTORED TO CODE STRING ! 6299: > * BY COPND SO WE CONTINUE FROM THE -COPY STMT. ! 6300: > * ! 6301: > CMPC2 BEQ STAGE,=STGIC,CMP09 JUMP IF INITIAL COMPILE ! 6302: > * ! 6303: 14296c13150 ! 6304: < BEQ WC,=CH$MN,CMP32 JUMP IF CONTROL CARD ! 6305: --- ! 6306: > BEQ WC,=CH$MN,CMP33 JUMP IF CONTROL CARD ! 6307: 14324c13178 ! 6308: < ERB 214,BAD LABEL OR MISPLACED CONTINUATION LINE ! 6309: --- ! 6310: > ERB 210,BAD LABEL OR MISPLACED CONTINUATION LINE ! 6311: 14363c13217 ! 6312: < BEQ XL,=T$SMC,CMP10 JUMP IF END OF IMAGE ! 6313: --- ! 6314: > BEQ XL,=T$SMC,CMPEE JUMP IF END OF IMAGE ! 6315: 14371c13225 ! 6316: < BEQ XL,=T$SMC,CMP10 JUMP IF OK (END OF IMAGE) ! 6317: --- ! 6318: > BEQ XL,=T$SMC,CMPEE JUMP IF OK (END OF IMAGE) ! 6319: 14375c13229 ! 6320: < CMP08 ERB 215,SYNTAX ERROR. UNDEFINED OR ERRONEOUS ENTRY LABEL ! 6321: --- ! 6322: > CMP08 ERB 211,SYNTAX ERROR. UNDEFINED OR ERRONEOUS ENTRY LABEL ! 6323: 14380,14381c13234,13235 ! 6324: < BEQ STAGE,=STGXE,CMP10 JUMP IF CODE CALL (OK) ! 6325: < ERB 216,SYNTAX ERROR. MISSING END LINE ! 6326: --- ! 6327: > BEQ STAGE,=STGXE,CMPEE JUMP IF CODE CALL (OK) ! 6328: > ERB 212,SYNTAX ERROR. MISSING END LINE ! 6329: 14385c13239 ! 6330: < CMP10 MOV =OSTP$,WA SET STOP CALL POINTER ! 6331: --- ! 6332: ! 6333: ! 6334: ! 6335: ! 6336: ! 6337: ! 6338: ! 6339: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 97 ! 6340: ! 6341: ! 6342: > CMPEE MOV =OSTP$,WA SET STOP CALL POINTER ! 6343: 14397c13251 ! 6344: < ERB 217,SYNTAX ERROR. DUPLICATE LABEL ! 6345: --- ! 6346: > ERB 213,SYNTAX ERROR. DUPLICATE LABEL ! 6347: 14414c13268 ! 6348: < BEQ XL,=T$SMC,CMP31 JUMP IF NO FIELDS LEFT ! 6349: --- ! 6350: > BEQ XL,=T$SMC,CMP32 JUMP IF NO FIELDS LEFT ! 6351: 14450c13304 ! 6352: < CMP17 ERB 218,SYNTAX ERROR. DUPLICATED GOTO FIELD ! 6353: --- ! 6354: > CMP17 ERB 214,SYNTAX ERROR. DUPLICATED GOTO FIELD ! 6355: 14599d13452 ! 6356: < EXI AND RETURN TO CMPIL CALLER ! 6357: 14600a13454,13459 ! 6358: > * LOOP TO UNNEST ANY OUTSTANDING -COPY LEVELS ! 6359: > * ! 6360: > CMP31 JSR COPND CALL TO UNNEST -COPY ! 6361: > BNZ R$COP,CMP31 LOOP IF NOT ALL -COPYS CLOSED ! 6362: > EXI RETURN TO CMPIL CALLER ! 6363: > * ! 6364: 14603c13462 ! 6365: < CMP31 MOV CMFGO(XS),WB GET FAIL GOTO ! 6366: --- ! 6367: > CMP32 MOV CMFGO(XS),WB GET FAIL GOTO ! 6368: 14606c13465 ! 6369: < ERB 219,SYNTAX ERROR. EMPTY GOTO FIELD ! 6370: --- ! 6371: > ERB 215,SYNTAX ERROR. EMPTY GOTO FIELD ! 6372: 14610c13469 ! 6373: < CMP32 ICV WB POINT PAST CH$MN ! 6374: --- ! 6375: > CMP33 ICV WB POINT PAST CH$MN ! 6376: 14634c13493 ! 6377: < CNC01 BGE SCNPT,SCNIL,CNC09 RETURN IF END OF IMAGE ! 6378: --- ! 6379: > CNC01 BGE SCNPT,SCNIL,CNC10 RETURN IF END OF IMAGE ! 6380: 14638,14640d13496 ! 6381: < .IF .CULC ! 6382: < FLC WA FOLD TO UPPER CASE ! 6383: < .FI ! 6384: 14641a13498,13500 ! 6385: > .IF .CASL ! 6386: > BEQ WA,=CH$$I,CNC07 DITTO (LC) ! 6387: > .FI ! 6388: 14649a13509,13511 ! 6389: > .IF .CASL ! 6390: > JSR SBSCC CONVERT CASE BEFORE COMPARISON ! 6391: > .ELSE ! 6392: 14651,14653d13512 ! 6393: < .IF .CULC ! 6394: < MOV SCLEN(XR),WA RELOAD LENGTH ! 6395: < JSR FLSTG FOLD TO UPPER CASE ! 6396: 14658c13517 ! 6397: < LCT WC,=CC$NC NUMBER OF STANDARD NAMES ! 6398: ! 6399: ! 6400: ! 6401: ! 6402: ! 6403: ! 6404: ! 6405: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 98 ! 6406: ! 6407: ! 6408: --- ! 6409: > LCT WC,=CC$CT NUMBER OF STANDARD NAMES ! 6410: 14682,14684c13541,13543 ! 6411: < BSW XL,CC$NC SWITCH ! 6412: < .IF .CULC ! 6413: < IFF CC$CA,CNC37 -CASE ! 6414: --- ! 6415: > BSW XL,CC$CT SWITCH ! 6416: > .IF .CASL ! 6417: > IFF CC$CI,CNC11 -CASEIG ! 6418: 14686,14687c13545 ! 6419: < IFF CC$DO,CNC10 -DOUBLE ! 6420: < IFF CC$DU,CNC11 -DUMP ! 6421: --- ! 6422: > IFF CC$CO,CNC23 -COPY ! 6423: 14689,14705c13547,13556 ! 6424: < IFF CC$ER,CNC13 -ERRORS ! 6425: < IFF CC$EX,CNC14 -EXECUTE ! 6426: < IFF CC$FA,CNC15 -FAIL ! 6427: < IFF CC$LI,CNC16 -LIST ! 6428: < IFF CC$NR,CNC17 -NOERRORS ! 6429: < IFF CC$NX,CNC18 -NOEXECUTE ! 6430: < IFF CC$NF,CNC19 -NOFAIL ! 6431: < IFF CC$NL,CNC20 -NOLIST ! 6432: < IFF CC$NO,CNC21 -NOOPT ! 6433: < IFF CC$NP,CNC22 -NOPRINT ! 6434: < IFF CC$OP,CNC24 -OPTIMISE ! 6435: < IFF CC$PR,CNC25 -PRINT ! 6436: < IFF CC$SI,CNC27 -SINGLE ! 6437: < IFF CC$SP,CNC28 -SPACE ! 6438: < IFF CC$ST,CNC31 -STITLE ! 6439: < IFF CC$TI,CNC32 -TITLE ! 6440: < IFF CC$TR,CNC36 -TRACE ! 6441: --- ! 6442: > IFF CC$FA,CNC13 -FAIL ! 6443: > IFF CC$LI,CNC14 -LIST ! 6444: > .IF .CASL ! 6445: > IFF CC$NC,CNC15 -NOCASEIG ! 6446: > .FI ! 6447: > IFF CC$NF,CNC16 -NOFAIL ! 6448: > IFF CC$NL,CNC17 -NOLIST ! 6449: > IFF CC$ST,CNC18 -STITLE ! 6450: > IFF CC$TI,CNC19 -TITLE ! 6451: > IFF CC$TR,CNC22 -TRACE ! 6452: 14717c13568 ! 6453: < CNC06 ERB 247,INVALID CONTROL CARD ! 6454: --- ! 6455: > CNC06 ERB 216,INVALID CONTROL CARD ! 6456: 14722,14723c13573,13574 ! 6457: < .IF .CULC ! 6458: < FLC WA FOLD TO UPPER CASE ! 6459: --- ! 6460: > .IF .CASL ! 6461: > BEQ WA,=CH$$N,CNC08 SKIP IF LC N ! 6462: 14725a13577,13579 ! 6463: > .IF .CASL ! 6464: ! 6465: ! 6466: ! 6467: ! 6468: ! 6469: ! 6470: ! 6471: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 99 ! 6472: ! 6473: ! 6474: > CNC08 ADD =NUM02,SCNPT BUMP OFFSET PAST -IN ! 6475: > .ELSE ! 6476: 14726a13581 ! 6477: > .FI ! 6478: 14739c13594 ! 6479: < CNC08 MOV SCNPT,WA PRESERVE IN CASE XEQ TIME COMPILE ! 6480: --- ! 6481: > CNC09 MOV SCNPT,WA PRESERVE IN CASE XEQ TIME COMPILE ! 6482: 14746c13601,13602 ! 6483: < CNC09 EXI RETURN ! 6484: --- ! 6485: > CNC10 EXI RETURN ! 6486: > .IF .CASL ! 6487: 14748c13604 ! 6488: < * -DOUBLE ! 6489: --- ! 6490: > * -CASEIG ! 6491: 14750,14751c13606,13608 ! 6492: < CNC10 MNZ CSWDB SET SWITCH ! 6493: < BRN CNC08 MERGE ! 6494: --- ! 6495: > CNC11 MNZ CSWCI SET SWITCH ! 6496: > BRN CNC09 MERGE ! 6497: > .FI ! 6498: 14753,14759d13609 ! 6499: < * -DUMP ! 6500: < * THIS IS USED FOR SYSTEM DEBUGGING . IT HAS THE EFFECT OF ! 6501: < * PRODUCING A CORE DUMP AT COMPILATION TIME ! 6502: < * ! 6503: < CNC11 JSR SYSDM CALL DUMPER ! 6504: < BRN CNC09 FINISHED ! 6505: < * ! 6506: 14762c13612 ! 6507: < CNC12 BZE CSWLS,CNC09 RETURN IF -NOLIST ! 6508: --- ! 6509: > CNC12 BZE CSWLS,CNC10 RETURN IF -NOLIST ! 6510: 14765c13615 ! 6511: < BRN CNC09 FINISHED ! 6512: --- ! 6513: > BRN CNC10 FINISHED ! 6514: 14767,14776d13616 ! 6515: < * -ERRORS ! 6516: < * ! 6517: < CNC13 ZER CSWER CLEAR SWITCH ! 6518: < BRN CNC08 MERGE ! 6519: < * ! 6520: < * -EXECUTE ! 6521: < * ! 6522: < CNC14 ZER CSWEX CLEAR SWITCH ! 6523: < BRN CNC08 MERGE ! 6524: < * ! 6525: 14779,14780c13619,13620 ! 6526: < CNC15 MNZ CSWFL SET SWITCH ! 6527: < BRN CNC08 MERGE ! 6528: --- ! 6529: > CNC13 MNZ CSWFL SET SWITCH ! 6530: ! 6531: ! 6532: ! 6533: ! 6534: ! 6535: ! 6536: ! 6537: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 100 ! 6538: ! 6539: ! 6540: > BRN CNC09 MERGE ! 6541: 14784,14785c13624,13626 ! 6542: < CNC16 MNZ CSWLS SET SWITCH ! 6543: < BEQ STAGE,=STGIC,CNC08 DONE IF COMPILE TIME ! 6544: --- ! 6545: > CNC14 MNZ CSWLS SET SWITCH ! 6546: > BRN CNC09 MERGE ! 6547: > .IF .CASL ! 6548: 14787c13628 ! 6549: < * LIST CODE LINE IF EXECUTE TIME COMPILE ! 6550: --- ! 6551: > * -NOCASEIG ! 6552: 14789,14792c13630,13632 ! 6553: < ZER LSTPF PERMIT LISTING ! 6554: < JSR LISTR LIST LINE ! 6555: < BRN CNC08 MERGE ! 6556: < EJC ! 6557: --- ! 6558: > CNC15 ZER CSWCI CLEAR SWITCH ! 6559: > BRN CNC09 MERGE ! 6560: > .FI ! 6561: 14794,14805d13633 ! 6562: < * CNCRD (CONTINUED) ! 6563: < * ! 6564: < * -NOERRORS ! 6565: < * ! 6566: < CNC17 MNZ CSWER SET SWITCH ! 6567: < BRN CNC08 MERGE ! 6568: < * ! 6569: < * -NOEXECUTE ! 6570: < * ! 6571: < CNC18 MNZ CSWEX SET SWITCH ! 6572: < BRN CNC08 MERGE ! 6573: < * ! 6574: 14808,14834c13636,13637 ! 6575: < CNC19 ZER CSWFL CLEAR SWITCH ! 6576: < BRN CNC08 MERGE ! 6577: < * ! 6578: < * -NOLIST ! 6579: < * ! 6580: < CNC20 ZER CSWLS CLEAR SWITCH ! 6581: < BRN CNC08 MERGE ! 6582: < * ! 6583: < * -NOOPTIMISE ! 6584: < * ! 6585: < CNC21 MNZ CSWNO SET SWITCH ! 6586: < BRN CNC08 MERGE ! 6587: < * ! 6588: < * -NOPRINT ! 6589: < * ! 6590: < CNC22 ZER CSWPR CLEAR SWITCH ! 6591: < BRN CNC08 MERGE ! 6592: < * ! 6593: < * -OPTIMISE ! 6594: < * ! 6595: < CNC24 ZER CSWNO CLEAR SWITCH ! 6596: ! 6597: ! 6598: ! 6599: ! 6600: ! 6601: ! 6602: ! 6603: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 101 ! 6604: ! 6605: ! 6606: < BRN CNC08 MERGE ! 6607: < * ! 6608: < * -PRINT ! 6609: < * ! 6610: < CNC25 MNZ CSWPR SET SWITCH ! 6611: < BRN CNC08 MERGE ! 6612: --- ! 6613: > CNC16 ZER CSWFL CLEAR SWITCH ! 6614: > BRN CNC09 MERGE ! 6615: 14839c13642 ! 6616: < * -SINGLE ! 6617: --- ! 6618: > * -NOLIST ! 6619: 14841,14863c13644 ! 6620: < CNC27 ZER CSWDB CLEAR SWITCH ! 6621: < BRN CNC08 MERGE ! 6622: < * ! 6623: < * -SPACE ! 6624: < * ! 6625: < CNC28 BZE CSWLS,CNC09 RETURN IF -NOLIST ! 6626: < JSR SCANE SCAN INTEGER AFTER -SPACE ! 6627: < MOV =NUM01,WC 1 SPACE IN CASE ! 6628: < BEQ XR,=T$SMC,CNC29 JUMP IF NO INTEGER ! 6629: < MOV XR,-(XS) STACK IT ! 6630: < JSR GTSMI CHECK INTEGER ! 6631: < PPM CNC06 FAIL IF NOT INTEGER ! 6632: < PPM CNC06 FAIL IF NEGATIVE OR LARGE ! 6633: < BNZ WC,CNC29 JUMP IF NON ZERO ! 6634: < MOV =NUM01,WC ELSE 1 SPACE ! 6635: < * ! 6636: < * MERGE WITH COUNT OF LINES TO SKIP ! 6637: < * ! 6638: < CNC29 ADD WC,LSTLC BUMP LINE COUNT ! 6639: < LCT WC,WC CONVERT TO LOOP COUNTER ! 6640: < BLT LSTLC,LSTNP,CNC30 JUMP IF FITS ON PAGE ! 6641: < JSR PRTPS EJECT ! 6642: < JSR LISTT LIST TITLE ! 6643: --- ! 6644: > CNC17 ZER CSWLS CLEAR SWITCH ! 6645: 14866,14874d13646 ! 6646: < * SKIP LINES ! 6647: < * ! 6648: < CNC30 JSR PRTNL PRINT A BLANK ! 6649: < BCT WC,CNC30 LOOP ! 6650: < BRN CNC09 MERGE ! 6651: < EJC ! 6652: < * ! 6653: < * CNCRD (CONTINUED) ! 6654: < * ! 6655: 14877,14878c13649,13650 ! 6656: < CNC31 MOV =R$STL,CNR$T PTR TO R$STL ! 6657: < BRN CNC33 MERGE ! 6658: --- ! 6659: > CNC18 MOV =R$STL,CNR$T PTR TO R$STL ! 6660: > BRN CNC20 MERGE ! 6661: 14882c13654 ! 6662: ! 6663: ! 6664: ! 6665: ! 6666: ! 6667: ! 6668: ! 6669: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 102 ! 6670: ! 6671: ! 6672: < CNC32 MOV =NULLS,R$STL CLEAR SUBTITLE ! 6673: --- ! 6674: > CNC19 MOV =NULLS,R$STL CLEAR SUBTITLE ! 6675: 14887c13659 ! 6676: < CNC33 MOV =NULLS,XR NULL IN CASE NEEDED ! 6677: --- ! 6678: > CNC20 MOV =NULLS,XR NULL IN CASE NEEDED ! 6679: 14891c13663 ! 6680: < BLO WA,WB,CNC34 JUMP IF NO CHARS LEFT ! 6681: --- ! 6682: > BLO WA,WB,CNC21 JUMP IF NO CHARS LEFT ! 6683: 14898c13670 ! 6684: < CNC34 MOV CNR$T,XL POINT TO STORAGE LOCATION ! 6685: --- ! 6686: > CNC21 MOV CNR$T,XL POINT TO STORAGE LOCATION ! 6687: 14900,14908c13672 ! 6688: < BEQ XL,=R$STL,CNC09 RETURN IF STITL ! 6689: < BNZ PRECL,CNC09 RETURN IF EXTENDED LISTING ! 6690: < BZE PRICH,CNC09 RETURN IF REGULAR PRINTER ! 6691: < MOV SCLEN(XR),XL GET LENGTH OF TITLE ! 6692: < MOV XL,WA COPY IT ! 6693: < BZE XL,CNC35 JUMP IF NULL ! 6694: < ADD =NUM10,XL INCREMENT ! 6695: < BHI XL,PRLEN,CNC09 USE DEFAULT LSTP0 VAL IF TOO LONG ! 6696: < ADD =NUM04,WA POINT JUST PAST TITLE ! 6697: --- ! 6698: > BRN CNC10 RETURN ! 6699: 14910,14914d13673 ! 6700: < * STORE OFFSET TO PAGE NN MESSAGE FOR SHORT TITLE ! 6701: < * ! 6702: < CNC35 MOV WA,LSTPO STORE OFFSET ! 6703: < BRN CNC09 RETURN ! 6704: < * ! 6705: 14915a13675 ! 6706: > * ! 6707: 14919,14921c13679,13680 ! 6708: < CNC36 JSR SYSTT TOGGLE SWITCH ! 6709: < BRN CNC08 MERGE ! 6710: < .IF .CULC ! 6711: --- ! 6712: > CNC22 JSR SYSTT TOGGLE SWITCH ! 6713: > BRN CNC09 MERGE ! 6714: 14923,14925c13682 ! 6715: < * -CASE ! 6716: < * SETS VALUE OF KVCAS SO THAT NAMES ARE FOLDED OR NOT ! 6717: < * DURING COMPILATION. ! 6718: --- ! 6719: > * -COPY ! 6720: 14927,14936c13684,13708 ! 6721: < CNC37 JSR SCANE SCAN INTEGER AFTER -CASE ! 6722: < ZER WC GET 0 IN CASE NONE THERE ! 6723: < BEQ XL,=T$SMC,CNC38 SKIP IF NO INTEGER ! 6724: < MOV XR,-(XS) STACK IT ! 6725: < JSR GTSMI CHECK INTEGER ! 6726: < PPM CNC06 FAIL IF NOT INTEGER ! 6727: < PPM CNC06 FAIL IF NEGATIVE OR TOO LARGE ! 6728: ! 6729: ! 6730: ! 6731: ! 6732: ! 6733: ! 6734: ! 6735: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 103 ! 6736: ! 6737: ! 6738: < CNC38 MOV WC,KVCAS STORE NEW CASE VALUE ! 6739: < BRN CNC09 MERGE ! 6740: < .FI ! 6741: --- ! 6742: > * GET FILETAG AND NOTIFY OSINT THAT WE ARE NESTING ! 6743: > * ! 6744: > CNC23 JSR SCANE GET FILETAG ! 6745: > BNE =T$CON,XL,CNC06 ERR IF NOT CONSTANT ! 6746: > BNE =B$SCL,(XR),CNC06 ERR IF NOT SCBLK ! 6747: > JSR SYSSC CALL TO START COPY ! 6748: > ERR 258,COPY FILE DOES NOT EXIST ! 6749: > PPM EROSI ERROR RETURN (ALWAYS) ! 6750: > MOV WA,WB SAVE IOTAG FROM OSINT ! 6751: > MOV *COSI$,WA GET SIZE OF COPY BLOCK ! 6752: > JSR ALLOC ALLOCATE ! 6753: > MOV =B$COP,COTYP(XR) SET TYPE ! 6754: > MOV R$COP,CONXT(XR) PLACE AT FRONT OF STACK CHN ! 6755: > MOV XR,R$COP SPLICE IT IN ! 6756: > MOV WB,COIOT(XR) SAVE OSINT IOTAG ! 6757: > MOV TTINS,COTTI(XR) SAVE TTINS ! 6758: > ZER TTINS INPUT NOT FROM TERMINAL NOW ! 6759: > MOV R$CIM,COCIM(XR) SAVE R$CIM IN CASE EXEC TIME ! 6760: > MOV SCNPT,COSPT(XR) SAVE SCNPT IN CASE EXEC TIME ! 6761: > MOV CSWLS,COSLS(XR) SAVE LIST FLAG ! 6762: > MOV CSWIN,COSIN(XR) SAVE -INXXX VALUE ! 6763: > MOV R$STL,COSTL(XR) SAVE SUBTITLE ! 6764: > BZE CSWLS,CNC10 NO LIST -COPY IF -NOLIST ! 6765: > JSR LISTR LIST -COPY CARD ! 6766: > BRN CNC10 EXIT ! 6767: 14939a13712,13750 ! 6768: > * COPND -- END -COPY NESTING ! 6769: > * ! 6770: > * COPND IS CALLED FROM CMPIL AND READR IN ORDER TO ! 6771: > * UNNEST ONE LEVEL OF -COPY AND RESTORE THE PREVIOUS ! 6772: > * INPUT COMPILE STRING. THE COPY BLOCK IS REMOVED ! 6773: > * FROM THE CHAIN AND THE STATE RESTORED FROM IT. ! 6774: > * ! 6775: > * JSR COPND CALL TO END -COPY AT CUR. LEVEL ! 6776: > * (XL,WA,WB,WC) DESTROYED ! 6777: > * ! 6778: > COPND PRC E,0 ENTRY POINT ! 6779: > MOV R$COP,XL GET POINTER TO CURRENT COBLK ! 6780: > BZE XL,COP02 EXIT IF NONE ! 6781: > MOV CONXT(XL),R$COP TAKE OFF CHAIN ! 6782: > MOV COIOT(XL),WA GET IOTAG FOR OSINT ! 6783: > JSR SYSEC CALL TO END COPY ! 6784: > PPM DO NOT USE ! 6785: > PPM EROSI ERROR EXIT ! 6786: > BZE CSWLS,COP01 SKIP LISTING IF -NOLIST ! 6787: > JSR LISTR LIST CURRENT IMAGE ! 6788: > * ! 6789: > * MERGE AFTER POSSIBLE LISTING OF CURRENT IMAGE ! 6790: > * ! 6791: > COP01 MOV COTTI(XL),TTINS RESTORE TERMINAL INPUT FLAG ! 6792: > MOV COSLS(XL),CSWLS RESTORE LISTING STATE ! 6793: > MOV COSPT(XL),SCNPT GET OLD SCAN POINTER ! 6794: ! 6795: ! 6796: ! 6797: ! 6798: ! 6799: ! 6800: ! 6801: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 104 ! 6802: ! 6803: ! 6804: > MOV COSIN(XL),CSWIN OLD INPUT IMAGE LENGTH ! 6805: > MOV COSTL(XL),R$STL RESTORE SUBTITLE STRING ! 6806: > MNZ LSTPF THIS IMAGE LISTED IN CNCRD ! 6807: > MOV COCIM(XL),XL GET OLD COMPILER IMAGE SCBLK ! 6808: > MOV XL,R$CIM RESTORE IT ! 6809: > MOV SCLEN(XL),SCNIL SET INPUT IMAGE LENGTH TOO ! 6810: > * ! 6811: > * MERGE TO EXIT ! 6812: > * ! 6813: > COP02 EXI RETURN TO CALLER ! 6814: > ENP END PROCEDURE COPND ! 6815: > EJC ! 6816: > * ! 6817: 14950a13762,13763 ! 6818: > .IF .CNLD ! 6819: > .ELSE ! 6820: 14957,14958d13769 ! 6821: < .IF .CNLD ! 6822: < .ELSE ! 6823: 14966d13776 ! 6824: < .FI ! 6825: 14970a13781 ! 6826: > .FI ! 6827: 14981c13792 ! 6828: < ERB 248,ATTEMPTED REDEFINITION OF SYSTEM FUNCTION ! 6829: --- ! 6830: > ERB 217,ATTEMPTED REDEFINITION OF SYSTEM FUNCTION ! 6831: 14991,15058d13801 ! 6832: < * DTACH -- DETACH I/O ASSOCIATED NAMES ! 6833: < * ! 6834: < * DETACHES TRBLKS FROM I/O ASSOCIATED VARIABLES, REMOVES ! 6835: < * ENTRY FROM IOCHN CHAIN ATTACHED TO FILEARG1 VRBLK AND MAY ! 6836: < * REMOVE VRBLK ACCESS AND STORE TRAPS. ! 6837: < * INPUT, OUTPUT, TERMINAL ARE HANDLED SPECIALLY. ! 6838: < * ! 6839: < * (XL) I/O ASSOC. VBL NAME BASE PTR ! 6840: < * (WA) OFFSET TO NAME ! 6841: < * JSR DTACH CALL FOR DETACH OPERATION ! 6842: < * (XL,XR,WA,WB,WC) DESTROYED ! 6843: < * ! 6844: < DTACH PRC E,0 ENTRY POINT ! 6845: < MOV XL,DTCNB STORE NAME BASE (GBCOL NOT CALLED) ! 6846: < ADD WA,XL POINT TO NAME LOCATION ! 6847: < MOV XL,DTCNM STORE IT ! 6848: < * ! 6849: < * LOOP TO SEARCH FOR I/O TRBLK ! 6850: < * ! 6851: < DTCH1 MOV XL,XR COPY NAME POINTER ! 6852: < * ! 6853: < * CONTINUE AFTER BLOCK DELETION ! 6854: < * ! 6855: < DTCH2 MOV (XL),XL POINT TO NEXT VALUE ! 6856: < BNE (XL),=B$TRT,DTCH6 JUMP AT CHAIN END ! 6857: < MOV TRTYP(XL),WA GET TRAP BLOCK TYPE ! 6858: < BEQ WA,=TRTIN,DTCH3 JUMP IF INPUT ! 6859: < BEQ WA,=TRTOU,DTCH3 JUMP IF OUTPUT ! 6860: ! 6861: ! 6862: ! 6863: ! 6864: ! 6865: ! 6866: ! 6867: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 105 ! 6868: ! 6869: ! 6870: < ADD *TRNXT,XL POINT TO NEXT LINK ! 6871: < BRN DTCH1 LOOP ! 6872: < * ! 6873: < * DELETE AN OLD ASSOCIATION ! 6874: < * ! 6875: < DTCH3 MOV TRVAL(XL),(XR) DELETE TRBLK ! 6876: < MOV XL,WA DUMP XL ... ! 6877: < MOV XR,WB ... AND XR ! 6878: < MOV TRTRF(XL),XL POINT TO TRTRF TRAP BLOCK ! 6879: < BZE XL,DTCH5 JUMP IF NO IOCHN ! 6880: < BNE (XL),=B$TRT,DTCH5 JUMP IF INPUT, OUTPUT, TERMINAL ! 6881: < * ! 6882: < * LOOP TO SEARCH IOCHN CHAIN FOR NAME PTR ! 6883: < * ! 6884: < DTCH4 MOV XL,XR REMEMBER LINK PTR ! 6885: < MOV TRTRF(XL),XL POINT TO NEXT LINK ! 6886: < BZE XL,DTCH5 JUMP IF END OF CHAIN ! 6887: < MOV IONMB(XL),WC GET NAME BASE ! 6888: < ADD IONMO(XL),WC ADD OFFSET ! 6889: < BNE WC,DTCNM,DTCH4 LOOP IF NO MATCH ! 6890: < MOV TRTRF(XL),TRTRF(XR) REMOVE NAME FROM CHAIN ! 6891: < EJC ! 6892: < * ! 6893: < * DTACH (CONTINUED) ! 6894: < * ! 6895: < * PREPARE TO RESUME I/O TRBLK SCAN ! 6896: < * ! 6897: < DTCH5 MOV WA,XL RECOVER XL ... ! 6898: < MOV WB,XR ... AND XR ! 6899: < ADD *TRVAL,XL POINT TO VALUE FIELD ! 6900: < BRN DTCH2 CONTINUE ! 6901: < * ! 6902: < * EXIT POINT ! 6903: < * ! 6904: < DTCH6 MOV DTCNB,XR POSSIBLE VRBLK PTR ! 6905: < JSR SETVR RESET VRBLK IF NECESSARY ! 6906: < EXI RETURN ! 6907: < ENP END PROCEDURE DTACH ! 6908: < EJC ! 6909: < * ! 6910: 15069c13812 ! 6911: < WTB XR CONVERT TO BYTE OFFSET ! 6912: --- ! 6913: > WTB XR CONVERT TO BAU OFFSET ! 6914: 15092,15093c13835 ! 6915: < * DMARG EQ 2 FULL DUMP (INCL ARRAYS ETC.) ! 6916: < * DMARG GE 3 CORE DUMP ! 6917: --- ! 6918: > * DMARG GE 2 FULL DUMP (INCL ARRAYS ETC.) ! 6919: 15101d13842 ! 6920: < BGT XR,=NUM02,DMP29 JUMP IF CORE DUMP REQUIRED ! 6921: 15108,15110c13849 ! 6922: < JSR PRTST PRINT IT ! 6923: < JSR PRTNL TERMINATE PRINT LINE ! 6924: < JSR PRTNL AND PRINT A BLANK LINE ! 6925: --- ! 6926: ! 6927: ! 6928: ! 6929: ! 6930: ! 6931: ! 6932: ! 6933: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 106 ! 6934: ! 6935: ! 6936: > JSR PRTFB PRINT IT ! 6937: 15227,15228c13966,13967 ! 6938: < DMP11 JSR PRTNL PRINT BLANK LINE ! 6939: < JSR PRTNL AND ANOTHER ! 6940: --- ! 6941: > DMP11 JSR PRTFH PRINT BLANK LINE ! 6942: > JSR PRTFH AND ANOTHER ! 6943: 15230,15232c13969 ! 6944: < JSR PRTST PRINT HEADING ! 6945: < JSR PRTNL END LINE ! 6946: < JSR PRTNL PRINT ONE BLANK LINE ! 6947: --- ! 6948: > JSR PRTFB PRINT HEADING ! 6949: 15256,15257c13993 ! 6950: < JSR PRTVL PRINT KEYWORD VALUE ! 6951: < JSR PRTNL TERMINATE PRINT LINE ! 6952: --- ! 6953: > JSR PRTVF PRINT KEYWORD VALUE ! 6954: 15276c14012 ! 6955: < BEQ WA,=B$BCT,DMP30 JUMP IF BUFFER ! 6956: --- ! 6957: > BEQ WA,=B$BCT,DMP29 JUMP IF BUFFER ! 6958: 15310c14046 ! 6959: < JSR PRTNL PRINT BLANK LINE ! 6960: --- ! 6961: > JSR PRTFH PRINT BLANK LINE ! 6962: 15312c14048 ! 6963: < JSR PRTVL PRINT BLOCK VALUE (FOR TITLE) ! 6964: --- ! 6965: > JSR PRTVF PRINT BLOCK VALUE (FOR TITLE) ! 6966: 15314d14049 ! 6967: < JSR PRTNL END PRINT LINE ! 6968: 15380,15384d14114 ! 6969: < * ! 6970: < * CALL SYSTEM CORE DUMP ROUTINE ! 6971: < * ! 6972: < DMP29 JSR SYSDM CALL IT ! 6973: < BRN DMP28 RETURN ! 6974: 15393,15395c14123,14124 ! 6975: < DMP30 JSR PRTNL PRINT BLANK LINE ! 6976: < JSR PRTVL PRINT VALUE ID FOR TITLE ! 6977: < JSR PRTNL FORCE NEW LINE ! 6978: --- ! 6979: > DMP29 JSR PRTFH PRINT BLANK LINE ! 6980: > JSR PRTVF PRINT VALUE ID FOR TITLE ! 6981: 15415,15416c14144 ! 6982: < JSR PRTCH PRINT IT ! 6983: < JSR PRTNL PRINT NEW LINE ! 6984: --- ! 6985: > JSR PRTCF PRINT IT ! 6986: 15430c14158 ! 6987: < JSR PRTIS PRINT ERROR PTR OR BLANK LINE ! 6988: --- ! 6989: > JSR PRTFH PRINT ERROR PTR OR BLANK LINE ! 6990: 15448,15450c14176 ! 6991: < JSR PRTST PRINT ERROR MESSAGE TEXT ! 6992: ! 6993: ! 6994: ! 6995: ! 6996: ! 6997: ! 6998: ! 6999: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 107 ! 7000: ! 7001: ! 7002: < JSR PRTIS PRINT LINE ! 7003: < JSR PRTIS PRINT BLANK LINE ! 7004: --- ! 7005: > JSR PRTFB PRINT ERROR MESSAGE TEXT ! 7006: 15465a14192 ! 7007: > BNZ EROSN,ERT03 SKIP IF SPECIAL EROSI RETURN ! 7008: 15483a14211,14216 ! 7009: > * ! 7010: > * SPECIAL CASE SET UP BY EROSI RETURN TO AVOID SYSEM CALL ! 7011: > * ! 7012: > ERT03 ZER EROSN CLEAR FLAG ! 7013: > MOV R$ETX,XR GET ERROR MESSAGE TEXT ! 7014: > BRN ERT01 RETURN WITHOUT MAKING SYSEM CALL ! 7015: 15498,15499d14230 ! 7016: < * PPM LOC TRANSFER LOC FOR SUCCESSFUL EVAL ! 7017: < * (THE NORMAL RETURN IS NEVER TAKEN) ! 7018: 15507c14238 ! 7019: < EVALI PRC R,4 ENTRY POINT (RECURSIVE) ! 7020: --- ! 7021: > EVALI PRC R,3 ENTRY POINT (RECURSIVE) ! 7022: 15518c14249 ! 7023: < EXI 4 TAKE SUCCESSFUL EXIT ! 7024: --- ! 7025: > EXI SUCCESSFUL RETURN ! 7026: 15621a14353 ! 7027: > * (WA) APPROPRIATE MULTI CHARACTER PCODE ! 7028: 15626,15627c14358 ! 7029: < * PPM LOC TRANSFER LOC FOR SUCCESSFUL EVAL ! 7030: < * (THE NORMAL RETURN IS NEVER TAKEN) ! 7031: --- ! 7032: > * (XL) PCODE OF NEW NODE (ENTRY WA) ! 7033: 15629c14360 ! 7034: < * (XL,WC,RA) DESTROYED ! 7035: --- ! 7036: > * (WA,WC,RA) DESTROYED ! 7037: 15634a14366,14367 ! 7038: > * THIS IS DONE BY THE USUAL INDIRECT BRANCH THROUGH THE ! 7039: > * PCODE PASSED IN WA. ! 7040: 15636c14369,14370 ! 7041: < EVALS PRC R,3 ENTRY POINT (RECURSIVE) ! 7042: --- ! 7043: > EVALS PRC R,2 ENTRY POINT (RECURSIVE) ! 7044: > MOV WA,-(XS) KEEP PCODE ! 7045: 15638a14373 ! 7046: > MOV (XS)+,WA RECOVER PCODE ! 7047: 15644c14379 ! 7048: < MOV =P$BRK,XL APPROPRIATE PCODE FOR OUR USE ! 7049: --- ! 7050: > MOV WA,XL APPROPRIATE PCODE FOR OUR USE ! 7051: 15649c14384,14385 ! 7052: < EXI 3 TAKE SUCCESS RETURN ! 7053: --- ! 7054: > MOV (XR),XL GET PCODE ! 7055: > EXI TAKE SUCCESS RETURN ! 7056: 15653c14389,14390 ! 7057: < EVLS1 EXI 2 TAKE FAILURE RETURN ! 7058: ! 7059: ! 7060: ! 7061: ! 7062: ! 7063: ! 7064: ! 7065: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 108 ! 7066: ! 7067: ! 7068: --- ! 7069: > EVLS1 MOV (XS)+,WA POP STACK ! 7070: > EXI 2 TAKE FAILURE RETURN ! 7071: 15733c14470 ! 7072: < EVLX3 MOV (XS)+,XR LOAD VALUE ! 7073: --- ! 7074: > EVLXV MOV (XS)+,XR LOAD VALUE ! 7075: 15735c14472 ! 7076: < ERB 249,EXPRESSION EVALUATED BY NAME RETURNED VALUE ! 7077: --- ! 7078: > ERB 218,EXPRESSION EVALUATED BY NAME RETURNED VALUE ! 7079: 15739c14476 ! 7080: < EVLX4 MOV (XS)+,WA LOAD NAME OFFSET ! 7081: --- ! 7082: > EVLXN MOV (XS)+,WA LOAD NAME OFFSET ! 7083: 15743c14480 ! 7084: < PPM EVLX6 JUMP IF FAILURE DURING ACCESS ! 7085: --- ! 7086: > PPM EVLXF JUMP IF FAILURE DURING ACCESS ! 7087: 15752c14489 ! 7088: < EVLX6 MNZ WB NOTE UNSUCCESSFUL ! 7089: --- ! 7090: > EVLXF MNZ WB NOTE UNSUCCESSFUL ! 7091: 15806c14543 ! 7092: < BTW WA CONVERT BYTE COUNT TO WORD COUNT ! 7093: --- ! 7094: > BTW WA CONVERT BAU COUNT TO WORD COUNT ! 7095: 15985c14722 ! 7096: < MOV =OPDVP,XR ELSE POINT TO UNMISTAKABLE CONCAT. ! 7097: --- ! 7098: > MOV =OPDVP,XR ELSE POINT TO UNMISTAKEABLE CONCAT ! 7099: 15987c14724 ! 7100: < * MERGE HERE WHEN XR SET UP WITH PROPER CONCATENATION DVBLK ! 7101: --- ! 7102: > * MERGE WITH CORRECT CONCATENATION DVBLK IN XR ! 7103: 15991c14728 ! 7104: < ERB 220,SYNTAX ERROR. MISSING OPERATOR ! 7105: --- ! 7106: > ERB 219,SYNTAX ERROR. MISSING OPERATOR ! 7107: 15998c14735 ! 7108: < ERB 221,SYNTAX ERROR. MISSING OPERAND ! 7109: --- ! 7110: > ERB 220,SYNTAX ERROR. MISSING OPERAND ! 7111: 16023c14760 ! 7112: < EXP08 ERB 222,SYNTAX ERROR. INVALID USE OF LEFT BRACKET ! 7113: --- ! 7114: > EXP08 ERB 221,SYNTAX ERROR. INVALID USE OF LEFT BRACKET ! 7115: 16049c14786 ! 7116: < ERB 223,SYNTAX ERROR. INVALID USE OF COMMA ! 7117: --- ! 7118: > ERB 222,SYNTAX ERROR. INVALID USE OF COMMA ! 7119: 16062c14799 ! 7120: < ERB 224,SYNTAX ERROR. UNBALANCED RIGHT PARENTHESIS ! 7121: --- ! 7122: > ERB 223,SYNTAX ERROR. UNBALANCED RIGHT PARENTHESIS ! 7123: 16080c14817 ! 7124: ! 7125: ! 7126: ! 7127: ! 7128: ! 7129: ! 7130: ! 7131: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 109 ! 7132: ! 7133: ! 7134: < WTB WA CONVERT LENGTH TO BYTES ! 7135: --- ! 7136: > WTB WA CONVERT LENGTH TO BAUS ! 7137: 16124c14861 ! 7138: < ERB 225,SYNTAX ERROR. UNBALANCED RIGHT BRACKET ! 7139: --- ! 7140: > ERB 224,SYNTAX ERROR. UNBALANCED RIGHT BRACKET ! 7141: 16153c14890 ! 7142: < EXP21 ERB 226,SYNTAX ERROR. MISSING RIGHT PAREN ! 7143: --- ! 7144: > EXP21 ERB 225,SYNTAX ERROR. MISSING RIGHT PAREN ! 7145: 16157c14894 ! 7146: < EXP22 ERB 227,SYNTAX ERROR. RIGHT PAREN MISSING FROM GOTO ! 7147: --- ! 7148: > EXP22 ERB 226,SYNTAX ERROR. RIGHT PAREN MISSING FROM GOTO ! 7149: 16161c14898 ! 7150: < EXP23 ERB 228,SYNTAX ERROR. RIGHT BRACKET MISSING FROM GOTO ! 7151: --- ! 7152: > EXP23 ERB 227,SYNTAX ERROR. RIGHT BRACKET MISSING FROM GOTO ! 7153: 16165c14902 ! 7154: < EXP24 ERB 229,SYNTAX ERROR. MISSING RIGHT ARRAY BRACKET ! 7155: --- ! 7156: > EXP24 ERB 228,SYNTAX ERROR. MISSING RIGHT ARRAY BRACKET ! 7157: 16269c15006 ! 7158: < EXDM1 BLE 1(XS),=NUM05,EXDM2 JUMP IF STACK BOTTOM (SAVED LEVEL ! 7159: --- ! 7160: > EXDM1 BLE 1(XS),=NUM05,EXDM2 JUMP IF STACK BOTTOM (SAVED LEVEL) ! 7161: 16324d15060 ! 7162: < .IF .CULC ! 7163: 16326,16369d15061 ! 7164: < * FLSTG -- FOLD STRING TO UPPER CASE ! 7165: < * ! 7166: < * FLSTG FOLDS A CHARACTER STRING CONTAINING LOWER CASE ! 7167: < * CHARACCTERS TO ONE CONTAINING UPPER CASE CHARACTERS. ! 7168: < * FOLDING IS ONLY DONE IF &CASE (KVCAS) IS NOT ZERO. ! 7169: < * ! 7170: < * (XR) STRING ARGUMENT ! 7171: < * (WA) LENGTH OF STRING ! 7172: < * JSR FLSTG CALL TO FOLD STRING ! 7173: < * (XR) RESULT STRING (POSSIBLY ORIGINAL) ! 7174: < * (WC) DESTROYED ! 7175: < * ! 7176: < FLSTG PRC R,0 ENTRY POINT ! 7177: < BZE KVCAS,FST99 SKIP IF &CASE IS 0 ! 7178: < MOV XL,-(XS) SAVE XL ACROSS CALL ! 7179: < MOV XR,-(XS) SAVE ORIGINAL SCBLK PTR ! 7180: < JSR ALOCS ALLOCATE NEW STRING BLOCK ! 7181: < MOV (XS),XL POINT TO ORIGINAL SCBLK ! 7182: < MOV XR,-(XS) SAVE POINTER TO NEW SCBLK ! 7183: < PLC XL POINT TO ORIGINAL CHARS ! 7184: < PLC XR POINT TO NEW CHARS ! 7185: < ZER -(XS) INIT DID FOLD FLAG ! 7186: < LCT WC,WC LOAD LOOP COUNTER ! 7187: < FST01 LCH WA,(XL)+ LOAD CHARACTER ! 7188: < BGT =CH$$A,WA,FST02 SKIP IF LESS THAN LC A ! 7189: < BGT WA,=CH$$$,FST02 SKIP IF GREATER THAN LC Z ! 7190: ! 7191: ! 7192: ! 7193: ! 7194: ! 7195: ! 7196: ! 7197: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 110 ! 7198: ! 7199: ! 7200: < FLC WA FOLD CHARACTER TO UPPER CASE ! 7201: < MNZ (XS) SET DID FOLD CHARACTER FLAG ! 7202: < FST02 SCH WA,(XR)+ STORE (POSSIBLY FOLDED) CHARACTER ! 7203: < BCT WC,FST01 LOOP THRU ENTIRE STRING ! 7204: < CSC XR COMPLETE STORE CHARACTERS ! 7205: < BNZ (XS)+,FST10 SKIP IF FOLDING DONE ! 7206: < MOV (XS)+,DNAMP DO NOT NEED NEW SCBLK ! 7207: < MOV (XS)+,XR RETURN ORIGINAL SCBLK ! 7208: < BRN FST20 MERGE BELOW ! 7209: < FST10 MOV (XS)+,XR RETURN NEW SCBLK ! 7210: < ICA XS THROW AWAY ORIGINAL SCBLK POINTER ! 7211: < FST20 MOV SCLEN(XR),WA RELOAD STRING LENGTH ! 7212: < MOV (XS)+,XL RESTORE XL ! 7213: < FST99 EXI RETURN ! 7214: < ENP ! 7215: < EJC ! 7216: < .FI ! 7217: < * ! 7218: 16414c15106 ! 7219: < * ENTRY VALUE OF WB IS THE NUMBER OF BYTES TO MOVE UP. ! 7220: --- ! 7221: > * ENTRY VALUE OF WB IS THE NUMBER OF BAUS TO MOVE UP. ! 7222: 16549,16550c15241,15242 ! 7223: < * BYTES. SET TO THE ADDRESS OF THE ! 7224: < * FIRST BYTE WHILE ACTUALLY SCANNING ! 7225: --- ! 7226: > * BAUS. SET TO THE ADDRESS OF THE ! 7227: > * FIRST BAU WHILE ACTUALLY SCANNING ! 7228: 16570a15263,15265 ! 7229: > .IF .CEPP ! 7230: > BOD WA,GBC07 JUMP IF ENTRY POINTER (UNUSED) ! 7231: > .ELSE ! 7232: 16572a15268 ! 7233: > .FI ! 7234: 16578a15275,15277 ! 7235: > .IF .CEPP ! 7236: > BEV WA,GBC06 LOOP BACK IF NOT END OF CHAIN ! 7237: > .ELSE ! 7238: 16580a15280 ! 7239: > .FI ! 7240: 16603a15304,15306 ! 7241: > .IF .CEPP ! 7242: > BEV WA,GBC09 JUMP IF IN USE ! 7243: > .ELSE ! 7244: 16605a15309 ! 7245: > .FI ! 7246: 16672c15376 ! 7247: < ERB 250,INSUFFICIENT MEMORY TO COMPLETE DUMP ! 7248: --- ! 7249: > ERB 229,INSUFFICIENT MEMORY TO COMPLETE DUMP ! 7250: 16702a15407,15410 ! 7251: > .IF .CRPP ! 7252: > BOD XL,GPF02 JUMP IF NOT PTR INTO DYNAMIC AREA ! 7253: > .ELSE ! 7254: > .FI ! 7255: 16714a15423,15425 ! 7256: ! 7257: ! 7258: ! 7259: ! 7260: ! 7261: ! 7262: ! 7263: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 111 ! 7264: ! 7265: ! 7266: > .IF .CEPP ! 7267: > BOD WA,GPF03 JUMP IF NOT ALREADY PROCESSED ! 7268: > .ELSE ! 7269: 16716a15428 ! 7270: > .FI ! 7271: 16752a15465 ! 7272: > IFF BL$CO,GPF19 COBLK ! 7273: 16889a15603,15608 ! 7274: > * ! 7275: > * COBLK ! 7276: > * ! 7277: > GPF19 MOV *COSI$,WA SET LENGTH ! 7278: > MOV *CONXT,WB AND OFFSET ! 7279: > BRN GPF05 ALL SET ! 7280: 16890a15610,15611 ! 7281: > .IF .CNBF ! 7282: > .ELSE ! 7283: 16892a15614,15648 ! 7284: > * GTBUF -- GET BUFFER ! 7285: > * ! 7286: > * GTBUF IS PASSED AN OBJECT AND RETURNS A BUFFER IF ! 7287: > * POSSIBLE. UNLESS THE OBJECT IS ALREADY A BUFFER, ! 7288: > * THIS INVOLVES A CONVERSION TO STRING AND THEN ! 7289: > * STRING TO BUFFER. ! 7290: > * ! 7291: > * (XR) OBJECT TO BE CONVERTED ! 7292: > * JSR GTBUF CALL TO GET BUFFER ! 7293: > * PPM LOC TRANSFER LOC FOR CONVERT IMPOSSIBLE ! 7294: > * (XR) RESULTING BUFFER ! 7295: > * (XL,WA,WB,WC) DESTROYED ! 7296: > * ! 7297: > GTBUF PRC E,1 ENTRY POINT ! 7298: > BEQ (XR),=B$BCT,GTB01 EXIT IF ALREADY BUFFER ! 7299: > MOV XR,-(XS) STACK TO CONVERT TO STRING ! 7300: > JSR GTSTG CONVERT TO STRING ! 7301: > PPM GTB02 CONVERSION ERROR ! 7302: > MOV XR,XL SAVE STRING POINTER ! 7303: > JSR ALOBF ALLOCATE BUFFER OF SAME SIZE ! 7304: > JSR INSBF COPY IN THE STRING ! 7305: > PPM ALREADY STRING - CANT FAIL TO CNV ! 7306: > PPM MUST BE ENOUGH ROOM ! 7307: > * ! 7308: > * MERGE TO EXIT WITH BUFFER CONTROL BLK IN (XR) ! 7309: > * ! 7310: > GTB01 EXI RETURN TO CALLER ! 7311: > * ! 7312: > * HERE ON CONVERSION FAILURE ! 7313: > * ! 7314: > GTB02 EXI 1 TAKE FAILURE EXIT ! 7315: > ENP ! 7316: > .FI ! 7317: > EJC ! 7318: > * ! 7319: 16895c15651 ! 7320: < * GTARR IS PASSED AN OBJECT AND RETURNS AN ARRAY IF POSSIBL ! 7321: --- ! 7322: ! 7323: ! 7324: ! 7325: ! 7326: ! 7327: ! 7328: ! 7329: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 112 ! 7330: ! 7331: ! 7332: > * GTARR IS PASSED AN OBJECT AND RETURNS AN ARRAY IF POSSIBLE ! 7333: 16907c15663,15664 ! 7334: < BNE WA,=B$TBT,GTA9A ELSE FAIL IF NOT A TABLE (SGD02) ! 7335: --- ! 7336: > MOV XR,-(XS) PLACE POSSIBLE TBBLK PTR ON STACK ! 7337: > BNE WA,=B$TBT,GTAR9 ELSE FAIL IF NOT A TABLE ! 7338: 16911d15667 ! 7339: < MOV XR,-(XS) REPLACE TBBLK POINTER ON STACK ! 7340: 16973c15729 ! 7341: < WTB WA CONVERT LENGTH TO BYTES ! 7342: --- ! 7343: > WTB WA CONVERT LENGTH TO BAUS ! 7344: 17027,17031c15783,15784 ! 7345: < GTAR9 MOV (XS)+,XR RESTORE STACK FOR CONV ERR (SGD02) ! 7346: < * ! 7347: < * MERGE TO TAKE CONVERT ERROR WHEN STACK ADJUSTED OK ! 7348: < * ! 7349: < GTA9A EXI 1 RETURN ! 7350: --- ! 7351: > GTAR9 MOV (XS)+,XR CLEAR UP STACK ! 7352: > EXI 1 RETURN ! 7353: 17095,17099c15848,15852 ! 7354: < * CHECK THE LAST CHARACTER OF THE STRING FOR COLON OR ! 7355: < * SEMICOLON. THESE CHARACTERS CAN LEGITIMATELY END AN ! 7356: < * EXPRESSION IN OPEN CODE, SO EXPAN WILL NOT DETECT THEM ! 7357: < * AS ERRORS, BUT THEY ARE INVALID AS TERMINATORS FOR A ! 7358: < * STRING THAT IS BEING CONVERTED TO EXPRESSION FORM. ! 7359: --- ! 7360: > * CHECK THE LAST CHAR OF STRING FOR COLON OR ! 7361: > * SEMICOLON. THEY CAN LEGITIMATELY END AN EXPRESSION ! 7362: > * IN OPEN CODE, SO EXPAN WILL NOT FAIL THEM BUT THEY ARE ! 7363: > * INVALID AS TERMINATORS FOR A STRING WHICH IS TO BE ! 7364: > * CONVERTED TO EXPRESSION FORM. ! 7365: 17101,17105c15854,15858 ! 7366: < MOV XR,XL COPY INPUT STRING POINTER (REG06) ! 7367: < PLC XL,WA POINT ONE PAST THE STRING END (REG06) ! 7368: < LCH XL,-(XL) FETCH THE LAST CHARACTER (REG06) ! 7369: < BEQ XL,=CH$CL,GTEX2 ERROR IF IT IS A SEMICOLON (REG06) ! 7370: < BEQ XL,=CH$SM,GTEX2 OR IF IT IS A COLON (REG06) ! 7371: --- ! 7372: > MOV XR,XL COPY ARGUMENT STRING ! 7373: > PLC XL,WA POINT PAST STRING END ! 7374: > LCH XL,-(XL) GET LAST CHAR ! 7375: > BEQ XL,=CH$CL,GTEX2 FAIL IF COLON ! 7376: > BEQ XL,=CH$SM,GTEX2 FAIL IF SEMICOLON ! 7377: 17196c15949 ! 7378: < BEQ WA,=B$ICL,GTN34 JUMP IF INTEGER (NO CONVERSION) ! 7379: --- ! 7380: > BEQ WA,=B$ICL,GTN3A JUMP IF INTEGER (NO CONVERSION) ! 7381: 17199c15952 ! 7382: < BEQ WA,=B$RCL,GTN34 JUMP IF REAL (NO CONVERSION) ! 7383: --- ! 7384: > BEQ WA,=B$RCL,GTN3A JUMP IF REAL (NO CONVERSION) ! 7385: 17204a15958 ! 7386: > STI GTNSV SAVE IA ! 7387: 17357,17359c16111,16113 ! 7388: ! 7389: ! 7390: ! 7391: ! 7392: ! 7393: ! 7394: ! 7395: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 113 ! 7396: ! 7397: ! 7398: < .IF .CULC ! 7399: < BEQ WB,=CH$$E,GTN15 JUMP IF E FOR EXPONENT ! 7400: < BEQ WB,=CH$$D,GTN15 JUMP IF D FOR EXPONENT ! 7401: --- ! 7402: > .IF .CASL ! 7403: > BEQ WB,=CH$$E,GTN15 JUMP FOR EXPT ! 7404: > BEQ WB,=CH$$D,GTN15 JUMP FOR EXPT ! 7405: 17462c16216 ! 7406: < WTB WA CONVERT REMAINING SCALE TO BYTE OFS ! 7407: --- ! 7408: > WTB WA CONVERT REMAINING SCALE TO BAU OFS ! 7409: 17490c16244 ! 7410: < WTB WA CONVERT REMAINING SCALE TO BYTE OFS ! 7411: --- ! 7412: > WTB WA CONVERT REMAINING SCALE TO BAU OFS ! 7413: 17524c16278,16279 ! 7414: < GTN34 EXI RETURN TO GTNUM CALLER ! 7415: --- ! 7416: > GTN34 LDI GTNSV RECOVER IA ! 7417: > GTN3A EXI RETURN TO GTNUM CALLER ! 7418: 17538a16294 ! 7419: > LDI GTNSV RECOVER IA ! 7420: 17552d16307 ! 7421: < * (WA,WB) DESTROYED (CONVERSION ERROR ONLY) ! 7422: 17558a16314 ! 7423: > BRN GNV01 FAIL ! 7424: 17559a16316,16320 ! 7425: > * RESTORE REGS AND FAIL ! 7426: > * ! 7427: > GNV00 MOV GNVSA,WA RESTORE REGS ! 7428: > MOV GNVSB,WB ! 7429: > * ! 7430: 17570,17574c16331,16332 ! 7431: < PPM GNV01 JUMP IF CONVERSION ERROR ! 7432: < BZE WA,GNV01 NULL STRING IS AN ERROR ! 7433: < .IF .CULC ! 7434: < JSR FLSTG FOLD LOWER CASE TO UPPER CASE ! 7435: < .FI ! 7436: --- ! 7437: > PPM GNV00 JUMP IF CONVERSION ERROR ! 7438: > BZE WA,GNV00 NULL STRING IS AN ERROR ! 7439: 17575a16334,16339 ! 7440: > .IF .CASL ! 7441: > MOV XR,XL COPY STRING POINTER ! 7442: > ZER WB ZERO OFFSET ! 7443: > JSR SBSTG CONVERT TO PREFERRED CASE ! 7444: > MOV SCLEN(XR),WA RECOVER STRING LENGTH ! 7445: > .FI ! 7446: 17586c16350 ! 7447: < WTB WC CONVERT OFFSET TO BYTES ! 7448: --- ! 7449: > WTB WC CONVERT OFFSET TO BAUS ! 7450: 17635c16399 ! 7451: < WTB XL CONVERT TO BYTE OFFSET ! 7452: --- ! 7453: > WTB XL CONVERT TO BAU OFFSET ! 7454: ! 7455: ! 7456: ! 7457: ! 7458: ! 7459: ! 7460: ! 7461: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 114 ! 7462: ! 7463: ! 7464: 17687c16451 ! 7465: < WTB WA CONVERT LENGTH TO BYTES ! 7466: --- ! 7467: > WTB WA CONVERT LENGTH TO BAUS ! 7468: 17703c16467 ! 7469: < WTB WA CONVERT TO LENGTH IN BYTES ! 7470: --- ! 7471: > WTB WA CONVERT TO LENGTH IN BAUS ! 7472: 17826c16590 ! 7473: < * MERGE HERE TO EXIT OF NO CONVERSION REQUIRED ! 7474: --- ! 7475: > * MERGE HERE TO EXIT IF NO CONVERSION REQUIRED ! 7476: 17901c16665 ! 7477: < BGT WC,MXLEN,GTSM3 OR IF TOO SMALL ! 7478: --- ! 7479: > BGT WC,MXLEN,GTSM3 OR IF TOO LARGE ! 7480: 17979c16743 ! 7481: < .IF .CNCI ! 7482: --- ! 7483: > .IF .CSCI ! 7484: 18008d16771 ! 7485: < .FI ! 7486: 18023a16787 ! 7487: > .FI ! 7488: 18181a16946,16948 ! 7489: > .IF .CPLC ! 7490: > MOV =CH$$E,WA GET CHAR LETTER E ! 7491: > .ELSE ! 7492: 18182a16950 ! 7493: > .FI ! 7494: 18265c17033 ! 7495: < MOV BCBUF(XL),XL POINT TO BFBLK ! 7496: --- ! 7497: > MOV BCBUF(XL),XL POINT TOBFBLK ! 7498: 18326c17094 ! 7499: < * HASHS IS USED TO CONVERT A STRING TO A UNIQUE INTEGER ! 7500: --- ! 7501: > * HASHS REPRODUCIBLY MAPS A STRING TO AN INTEGER ! 7502: 18337c17105 ! 7503: < * START WITH THE LENGTH OF THE STRING (SGD07) ! 7504: --- ! 7505: > * START WITH THE LENGTH OF THE STRING ! 7506: 18383,18384c17151,17154 ! 7507: < MFI XR,ICBL1 COPY SMALL INTEGERS ! 7508: < BLE XR,=NUM02,ICBL3 JUMP IF 0,1 OR 2 ! 7509: --- ! 7510: > ILT ICBL1 SKIP IF NEGATIVE ! 7511: > SBI INTV2 REDUCE BY TWO ! 7512: > ILE ICBL3 JUMP IF 0 , 1 OR 2 ! 7513: > ADI INTV2 RESTORE VALUE ! 7514: 18405c17175,17177 ! 7515: < ICBL3 WTB XR CONVERT INTEGER TO OFFSET ! 7516: --- ! 7517: > ICBL3 ADI INTV2 RESTORE VALUE ! 7518: > MFI XR CONVERT TO SHORT INTEGER ! 7519: > WTB XR CONVERT INTEGER TO OFFSET ! 7520: ! 7521: ! 7522: ! 7523: ! 7524: ! 7525: ! 7526: ! 7527: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 115 ! 7528: ! 7529: ! 7530: 18503c17275 ! 7531: < * INOUT - USED TO INITIALISE INPUT AND OUTPUT VARIABLES ! 7532: --- ! 7533: > * INOUT - USED TO INITIALISE .INPUT .OUTPUT .TERMINAL ! 7534: 18506c17278 ! 7535: < * (WB) TRBLK TYPE ! 7536: --- ! 7537: > * (WB) TRBLK TYPE (TRTYP FIELD) ! 7538: 18508,18509d17279 ! 7539: < * (XL) VRBLK PTR ! 7540: < * (XR) TRBLK PTR ! 7541: 18521c17291 ! 7542: < JSR GTNVR BUILD VRBLK ! 7543: --- ! 7544: > JSR GTNVR FIND OR BUILD VRBLK ! 7545: 18524,18525c17294,17296 ! 7546: < MOV (XS)+,WB GET TRTER FIELD ! 7547: < ZER XL ZERO TRFPT ! 7548: --- ! 7549: > MOV (XS)+,WB GET TRTYP FIELD ! 7550: > ZER XL ZERO TRTRI ! 7551: > MOV VRSVP(XR),XR GET SVBLK POINTER ! 7552: 18528,18531c17299,17301 ! 7553: < MOV VRSVP(XL),TRTER(XR) STORE SVBLK POINTER ! 7554: < MOV XR,VRVAL(XL) STORE TRBLK PTR IN VRBLK ! 7555: < MOV =B$VRA,VRGET(XL) SET TRAPPED ACCESS ! 7556: < MOV =B$VRV,VRSTO(XL) SET TRAPPED STORE ! 7557: --- ! 7558: > MOV *VRVAL,WA OFFSET TO VALUE FIELD ! 7559: > JSR TRCHN PUT TRBLK IN TRACE CHAIN ! 7560: > PPM CANT FAIL ! 7561: 18542,18543c17312,17313 ! 7562: < * SECTION TO BE REPLACED IS DIFFERENT THAN THE LENGTH OF ! 7563: < * THE GIVEN STRING, AND THE REPLACEMENT IS NOT AN APPEND, ! 7564: --- ! 7565: > * SECTION TO BE REPLACED DIFFERS FROM THAT OF THE ! 7566: > * GIVEN STRING, AND THE REPLACEMENT IS NOT AN APPEND, ! 7567: 18547,18548c17317,17318 ! 7568: < * (XR) POINTER TO BFBLK ! 7569: < * (XL) OBJECT WHICH IS STRING CONVERTABLE ! 7570: --- ! 7571: > * (XR) POINTER TO BCBLK ! 7572: > * (XL) OBJECT WHICH IS STRING CONVERTIBLE ! 7573: 18552,18553c17322,17324 ! 7574: < * PPM LOC THREAD IF (XR) NOT CONVERTABLE ! 7575: < * PPM LOC THREAD IF INSERT NOT POSSIBLE ! 7576: --- ! 7577: > * PPM LOC ERROR IF (XR) NOT CONVERTIBLE ! 7578: > * PPM LOC FAIL IF INSERT NOT POSSIBLE ! 7579: > * (XL,WA,WB,WC) DESTROYED ! 7580: 18562d17332 ! 7581: < MOV WC,INSSC SAVE ENTRY WC ! 7582: 18568d17337 ! 7583: < MOV XL,-(XS) SAVE ENTRY XL ! 7584: 18570c17339 ! 7585: < MOV XL,-(XS) STACK AGAIN FOR GTSTG ! 7586: ! 7587: ! 7588: ! 7589: ! 7590: ! 7591: ! 7592: ! 7593: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 116 ! 7594: ! 7595: ! 7596: --- ! 7597: > MOV XL,-(XS) STACK STRING POINTER FOR GTSTG ! 7598: 18572c17341 ! 7599: < PPM INS05 TAKE STRING CONVERT ERR EXIT ! 7600: --- ! 7601: > PPM INS06 TAKE STRING CONVERT ERR EXIT ! 7602: 18574c17343,17346 ! 7603: < MOV (XS),XR RESTORE BCBLK PTR ! 7604: --- ! 7605: > MOV (XS)+,XR RESTORE BCBLK PTR ! 7606: > MOV XR,INSBC BCBLK PTR - NO DANGER OF GARB COLLN ! 7607: > MOV BCBUF(XR),XR POINT TO BFBLK ! 7608: > MOV XR,INSBB BFBLK PTR - NO DANGER OF GARB COLLN ! 7609: 18577,18579c17349,17350 ! 7610: < MOV BCBUF(XR),XR POINT TO BFBLK ! 7611: < BGT WA,BFALC(XR),INS06 FAIL IF RESULT EXCEEDS ALLOCATION ! 7612: < MOV (XS),XR RESTORE BCBLK PTR ! 7613: --- ! 7614: > BGT WA,BFALC(XR),INS07 FAIL IF RESULT EXCEEDS ALLOCATION ! 7615: > MOV INSBC,XR RESTORE BCBLK PTR ! 7616: 18586,18588c17357 ! 7617: < BZE WA,INS04 SKIP SHIFT IF NOTHING TO DO ! 7618: < BEQ INSSB,SCLEN(XL),INS04 SKIP SHIFT IF LENGTHS MATCH ! 7619: < MOV BCBUF(XR),XR POINT TO BFBLK ! 7620: --- ! 7621: > MOV INSBB,XR POINT TO BFBLK ! 7622: 18590c17359,17361 ! 7623: < BLO INSSB,SCLEN(XL),INS01 BRN IF SHFT IS FOR MORE ROOM ! 7624: --- ! 7625: > BZE WA,INS02 SKIP SHIFT IF NOTHING TO DO ! 7626: > BEQ INSSB,SCLEN(XL),INS02 SKIP SHIFT IF LENGTHS MATCH ! 7627: > BLO INSSB,SCLEN(XL),INS01 BRN IF SHIFT IS FOR MORE ROOM ! 7628: 18597c17368 ! 7629: < * SEGMENT BEING REPLACED.) REGISTERS ARE SET AS: ! 7630: --- ! 7631: > * SEGMENT BEING REPLACED). REGISTERS ARE SET AS - ! 7632: 18622c17393 ! 7633: < * MERGE HERE AFTER MOVE TO ADJUST PADDING AT NEW BUFFER END ! 7634: --- ! 7635: > * MERGE HERE AFTER POSSIBLE MOVE TO ADJUST ZERO FILL AT END ! 7636: 18626a17398 ! 7637: > BTC WA CONVERT TO CHAR COUNT ! 7638: 18629,18630c17401 ! 7639: < MOV (XS),XR GET BCBLK PTR ! 7640: < MOV BCBUF(XR),XR GET BFBLK PTR ! 7641: --- ! 7642: > MOV INSBB,XR POINT TO BFBLK ! 7643: 18633a17405 ! 7644: > EJC ! 7645: 18634a17407,17408 ! 7646: > * INSBF (CONTINUED) ! 7647: > * ! 7648: 18639d17412 ! 7649: < EJC ! 7650: 18641,18642d17413 ! 7651: < * INSBF (CONTINUED) ! 7652: ! 7653: ! 7654: ! 7655: ! 7656: ! 7657: ! 7658: ! 7659: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 117 ! 7660: ! 7661: ! 7662: < * ! 7663: 18646,18647c17417 ! 7664: < INS04 MOV (XS),XR GET BCBLK PTR ! 7665: < MOV BCBUF(XR),XR GET BFBLK PTR ! 7666: --- ! 7667: > INS04 MOV INSBB,XR POINT TO BFBLK ! 7668: 18648a17419 ! 7669: > BZE WA,INS05 SKIP IF NO CHARS TO INSERT ! 7670: 18652,18656c17423,17427 ! 7671: < MOV (XS)+,XR RESTORE ENTRY XR ! 7672: < MOV (XS)+,XL RESTORE ENTRY XL ! 7673: < MOV INSSA,WA RESTORE ENTRY WA ! 7674: < MOV INSSB,WB RESTORE ENTRY WB ! 7675: < MOV INSSC,WC RESTORE ENTRY WC ! 7676: --- ! 7677: > * ! 7678: > * SUCCESSFUL RETURN ! 7679: > * ! 7680: > INS05 MOV INSBC,XR RESTORE ENTRY XR ! 7681: > ZER XL CLEAR GARBAGE CHAR POINTER ! 7682: 18661,18665c17432 ! 7683: < INS05 MOV (XS)+,XR RESTORE ENTRY XR ! 7684: < MOV (XS)+,XL RESTORE ENTRY XL ! 7685: < MOV INSSA,WA RESTORE ENTRY WA ! 7686: < MOV INSSB,WB RESTORE ENTRY WB ! 7687: < MOV INSSC,WC RESTORE ENTRY WC ! 7688: --- ! 7689: > INS06 ICA XS DISCARD UNWANTED STACK TOP ! 7690: 18670,18678c17437 ! 7691: < INS06 MOV (XS)+,XR RESTORE ENTRY XR ! 7692: < MOV (XS)+,XL RESTORE ENTRY XL ! 7693: < * ! 7694: < * MERGE FOR LENGTH FAILURE EXIT WITH STACK SET ! 7695: < * ! 7696: < INS07 MOV INSSA,WA RESTORE ENTRY WA ! 7697: < MOV INSSB,WB RESTORE ENTRY WB ! 7698: < MOV INSSC,WC RESTORE ENTRY WC ! 7699: < EXI 2 ALTERNATE EXIT ! 7700: --- ! 7701: > INS07 EXI 2 ALTERNATE EXIT ! 7702: 18681a17441 ! 7703: > * IOFTG -- GET IOTAG ! 7704: 18683c17443,17444 ! 7705: < * IOFCB -- GET INPUT/OUTPUT FCBLK POINTER ! 7706: --- ! 7707: > * USED TO FIND THE IOTAG (IF ANY) CORRESPONDING TO THE ! 7708: > * FILETAG ARGUMENT. ! 7709: 18685,18691c17446,17448 ! 7710: < * USED BY ENDFILE, EJECT AND REWIND TO FIND THE FCBLK ! 7711: < * (IF ANY) CORRESPONDING TO THEIR ARGUMENT. ! 7712: < * ! 7713: < * -(XS) ARGUMENT ! 7714: < * JSR IOFCB CALL TO FIND FCBLK ! 7715: < * PPM LOC ARG IS AN UNSUITABLE NAME ! 7716: < * PPM LOC ARG IS NULL STRING ! 7717: --- ! 7718: ! 7719: ! 7720: ! 7721: ! 7722: ! 7723: ! 7724: ! 7725: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 118 ! 7726: ! 7727: ! 7728: > * -(XS) FILETAG ARGUMENT ! 7729: > * JSR IOFTG CALL TO FIND IOTAG ! 7730: > * PPM LOC ARG IS AN UNSUITABLE FILETAG ! 7731: 18693,18696c17450,17454 ! 7732: < * (XL) PTR TO FILEARG1 VRBLK ! 7733: < * (XR) ARGUMENT ! 7734: < * (WA) FCBLK PTR OR 0 ! 7735: < * (WB) DESTROYED ! 7736: --- ! 7737: > * (XL) PTR TO FILETAG SCBLK ! 7738: > * (XR) PTR TO TRTIO TRACE BLK OR ZERO ! 7739: > * (WA) IOTAG OR ZERO ! 7740: > * (WB) PTR TO FILETAG VRBLK ! 7741: > * (WC) VALUE/0 FOR INTEGER/STRING FILETAG ! 7742: 18698c17456 ! 7743: < IOFCB PRC N,2 ENTRY POINT ! 7744: --- ! 7745: > IOFTG PRC N,1 ENTRY POINT ! 7746: 18700c17458 ! 7747: < PPM IOFC2 FAIL ! 7748: --- ! 7749: > PPM IOFT4 FAIL ! 7750: 18702,18705c17460,17474 ! 7751: < JSR GTNVR GET AS NATURAL VARIABLE ! 7752: < PPM IOFC3 FAIL IF NULL ! 7753: < MOV XL,WB COPY STRING POINTER AGAIN ! 7754: < MOV XR,XL COPY VRBLK PTR FOR RETURN ! 7755: --- ! 7756: > MOV XR,-(XS) STACK STRING ! 7757: > JSR GTSMI TRY CONVERSION TO INTEGER ! 7758: > PPM IOFT5 SKIP IF CANT ! 7759: > PPM IOFT5 SKIP IF CANT ! 7760: > * ! 7761: > * MERGE WITH WC SET UP ! 7762: > * ! 7763: > IOFT1 MOV WC,WB KEEP INTEGER OR ZERO ! 7764: > MOV XL,XR FILETAG STRING TO XR FOR GTNVR CALL ! 7765: > JSR GTNVR FIND VRBLK ! 7766: > PPM IOFT4 SKIP IF NULL STRING ! 7767: > MOV XL,-(XS) KEEP SCBLK PTR ! 7768: > ZER XL IN CASE NO TRTIO BLK FOUND ! 7769: > MOV WB,WC KEEP INTEGER OR ZERO ! 7770: > MOV XR,WB COPY VRBLK PTR FOR RETURN ! 7771: 18710,18715c17479,17483 ! 7772: < IOFC1 MOV VRVAL(XR),XR GET POSSIBLE TRBLK PTR ! 7773: < BNE (XR),=B$TRT,IOFC2 FAIL IF END OF CHAIN ! 7774: < BNE TRTYP(XR),=TRTFC,IOFC1 LOOP IF NOT FILE ARG TRBLK ! 7775: < MOV TRFPT(XR),WA GET FCBLK PTR ! 7776: < MOV WB,XR COPY ARG ! 7777: < EXI RETURN ! 7778: --- ! 7779: > IOFT2 MOV VRVAL(XR),XR GET POSSIBLE TRBLK PTR ! 7780: > BNE (XR),=B$TRT,IOFT3 SKIP IF END OF CHAIN ! 7781: > BNE TRTYP(XR),=TRTIO,IOFT2 LOOP IF NOT FILETAG TRBLK ! 7782: > MOV TRTAG(XR),WA GET IOTAG OR 0 ! 7783: > MOV XR,XL TRTIO BLK PTR ! 7784: ! 7785: ! 7786: ! 7787: ! 7788: ! 7789: ! 7790: ! 7791: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 119 ! 7792: ! 7793: ! 7794: 18717c17485 ! 7795: < * FAIL RETURN ! 7796: --- ! 7797: > * RETURN POINT ! 7798: 18719c17487,17489 ! 7799: < IOFC2 EXI 1 FAIL ! 7800: --- ! 7801: > IOFT3 MOV XL,XR TRTIO BLK PTR OR 0 ! 7802: > MOV (XS)+,XL RECOVER SCBLK PTR ! 7803: > EXI SUCCESSFUL RETURN ! 7804: 18721c17491 ! 7805: < * NULL ARG ! 7806: --- ! 7807: > * FAIL RETURN ! 7808: 18723,18724c17493 ! 7809: < IOFC3 EXI 2 NULL ARG RETURN ! 7810: < ENP END PROCEDURE IOFCB ! 7811: --- ! 7812: > IOFT4 EXI 1 FAIL ! 7813: 18727c17496 ! 7814: < * IOPPF -- PROCESS FILEARG2 FOR IOPUT ! 7815: --- ! 7816: > * NON NUMERIC FILETAG ! 7817: 18729,18755c17498,17500 ! 7818: < * (R$XSC) FILEARG2 PTR ! 7819: < * JSR IOPPF CALL TO PROCESS FILEARG2 ! 7820: < * (XL) FILEARG1 PTR ! 7821: < * (XR) FILE ARG2 PTR ! 7822: < * -(XS)..-(XS) FIELDS EXTRACTED FROM FILEARG2 ! 7823: < * (WC) NO. OF FIELDS EXTRACTED ! 7824: < * (WB) INPUT/OUTPUT FLAG ! 7825: < * (WA) FCBLK PTR OR 0 ! 7826: < * ! 7827: < IOPPF PRC N,0 ENTRY POINT ! 7828: < ZER WB TO COUNT FIELDS EXTRACTED ! 7829: < * ! 7830: < * LOOP TO EXTRACT FIELDS ! 7831: < * ! 7832: < IOPP1 MOV =IODEL,XL GET DELIMITER ! 7833: < MOV XL,WC COPY IT ! 7834: < JSR XSCAN GET NEXT FIELD ! 7835: < MOV XR,-(XS) STACK IT ! 7836: < ICV WB INCREMENT COUNT ! 7837: < BNZ WA,IOPP1 LOOP ! 7838: < MOV WB,WC COUNT OF FIELDS ! 7839: < MOV IOPTT,WB I/O MARKER ! 7840: < MOV R$IOF,WA FCBLK PTR OR 0 ! 7841: < MOV R$IO2,XR FILE ARG2 PTR ! 7842: < MOV R$IO1,XL FILEARG1 ! 7843: < EXI RETURN ! 7844: < ENP END PROCEDURE IOPPF ! 7845: --- ! 7846: > IOFT5 ZER WC NOTE NON NUMERIC ! 7847: > BRN IOFT1 MERGE ! 7848: > ENP END PROCEDURE IOFTG ! 7849: 18758c17503 ! 7850: ! 7851: ! 7852: ! 7853: ! 7854: ! 7855: ! 7856: ! 7857: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 120 ! 7858: ! 7859: ! 7860: < * IOPUT -- ROUTINE USED BY INPUT AND OUTPUT ! 7861: --- ! 7862: > * IOPUT -- PROCESS INPUT AND OUTPUT ARGUMENTS ! 7863: 18760,18763c17505,17507 ! 7864: < * IOPUT SETS UP INPUT/OUTPUT ASSOCIATIONS. IT BUILDS ! 7865: < * SUCH TRACE AND FILE CONTROL BLOCKS AS ARE NECESSARY AND ! 7866: < * CALLS SYSFC,SYSIO TO PERFORM CHECKS ON THE ! 7867: < * ARGUMENTS AND TO OPEN THE FILES. ! 7868: --- ! 7869: > * IOPUT CHECKS THE ARGUMENTS OF INPUT AND OUTPUT CALLS, ! 7870: > * SETS UP THE REQUIRED ASSOCIATIONS AND CALLS SYSIO TO ! 7871: > * OPEN THE REQUESTED FILES. ! 7872: 18765,18820d17508 ! 7873: < * +-----------+ +---------------+ +-----------+ ! 7874: < * +-.I I I I------.I =B$XRT I ! 7875: < * I +-----------+ +---------------+ +-----------+ ! 7876: < * I / / (R$FCB) I *4 I ! 7877: < * I / / +-----------+ ! 7878: < * I +-----------+ +---------------+ I I- ! 7879: < * I I NAME +--.I =B$TRT I +-----------+ ! 7880: < * I / / +---------------+ I I ! 7881: < * I (FIRST ARG) I =TRTIN/=TRTOU I +-----------+ ! 7882: < * I +---------------+ I ! 7883: < * I I VALUE I I ! 7884: < * I +---------------+ I ! 7885: < * I I(TRTRF) 0 OR I--+ I ! 7886: < * I +---------------+ I I ! 7887: < * I I(TRFPT) 0 OR I----+ I ! 7888: < * I +---------------+ I I I ! 7889: < * I (I/O TRBLK) I I I ! 7890: < * I +-----------+ I I I ! 7891: < * I I I I I I ! 7892: < * I +-----------+ I I I ! 7893: < * I I I I I I ! 7894: < * I +-----------+ +---------------+ I I I ! 7895: < * I I +--.I =B$TRT I.-+ I I ! 7896: < * I +-----------+ +---------------+ I I ! 7897: < * I / / I =TRTFC I I I ! 7898: < * I / / +---------------+ I I ! 7899: < * I (FILEARG1 I VALUE I I I ! 7900: < * I VRBLK) +---------------+ I I ! 7901: < * I I(TRTRF) 0 OR I--+ I . ! 7902: < * I +---------------+ I . +-----------+ ! 7903: < * I I(TRFPT) 0 OR I------./ FCBLK / ! 7904: < * I +---------------+ I +-----------+ ! 7905: < * I (TRTRF) I ! 7906: < * I I ! 7907: < * I I ! 7908: < * I +---------------+ I ! 7909: < * I I =B$XRT I.-+ ! 7910: < * I +---------------+ ! 7911: < * I I *5 I ! 7912: < * I +---------------+ ! 7913: < * +------------------I I ! 7914: < * +---------------+ +-----------+ ! 7915: < * I(TRTRF) O OR I------.I =B$XRT I ! 7916: ! 7917: ! 7918: ! 7919: ! 7920: ! 7921: ! 7922: ! 7923: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 121 ! 7924: ! 7925: ! 7926: < * +---------------+ +-----------+ ! 7927: < * I NAME OFFSET I I ETC I ! 7928: < * +---------------+ ! 7929: < * (IOCHN - CHAIN OF NAME POINTERS) ! 7930: < EJC ! 7931: < * ! 7932: < * IOPUT (CONTINUED) ! 7933: < * ! 7934: < * NO ADDITIONAL TRAP BLOCKS ARE USED FOR STANDARD INPUT/OUT ! 7935: < * FILES. OTHERWISE AN I/O TRAP BLOCK IS ATTACHED TO SECOND ! 7936: < * ARG (FILEARG1) VRBLK. SEE DIAGRAM ABOVE FOR DETAILS OF ! 7937: < * THE STRUCTURE BUILT. ! 7938: < * ! 7939: 18822,18824c17510,17512 ! 7940: < * -(XS) 2ND ARG (FILE ARG1) ! 7941: < * -(XS) 3RD ARG (FILE ARG2) ! 7942: < * (WB) 0 FOR INPUT, 3 FOR OUTPUT ASSOC. ! 7943: --- ! 7944: > * -(XS) 2ND ARG (FILETAG) ! 7945: > * -(XS) 3RD ARG (FILEPROPS) ! 7946: > * (WB) 0 FOR INPUT, 2 FOR OUTPUT ASSOC. ! 7947: 18827c17515 ! 7948: < * PPM LOC 2ND ARG NOT A SUITABLE NAME ! 7949: --- ! 7950: > * PPM LOC 2ND ARG NOT A SUITABLE FILETAG ! 7951: 18829,18831c17517 ! 7952: < * PPM LOC INAPPROPRIATE FILE SPEC FOR I/O ! 7953: < * PPM LOC I/O FILE DOES NOT EXIST ! 7954: < * PPM LOC I/O FILE CANNOT BE READ/WRITTEN ! 7955: --- ! 7956: > * PPM LOC FAIL RETURN ! 7957: 18835,18858d17520 ! 7958: < IOPUT PRC N,6 ENTRY POINT ! 7959: < ZER R$IOT IN CASE NO TRTRF BLOCK USED ! 7960: < ZER R$IOF IN CASE NO FCBLK ALOCATED ! 7961: < MOV WB,IOPTT STORE I/O TRACE TYPE ! 7962: < JSR XSCNI PREPARE TO SCAN FILEARG2 ! 7963: < PPM IOP13 FAIL ! 7964: < PPM IOPA0 NULL FILE ARG2 ! 7965: < * ! 7966: < IOPA0 MOV XR,R$IO2 KEEP FILE ARG2 ! 7967: < MOV WA,XL COPY LENGTH ! 7968: < JSR GTSTG CONVERT FILEARG1 TO STRING ! 7969: < PPM IOP14 FAIL ! 7970: < MOV XR,R$IO1 KEEP FILEARG1 PTR ! 7971: < JSR GTNVR CONVERT TO NATURAL VARIABLE ! 7972: < PPM IOP00 JUMP IF NULL ! 7973: < BRN IOP04 JUMP TO PROCESS NON-NULL ARGS ! 7974: < * ! 7975: < * NULL FILEARG1 ! 7976: < * ! 7977: < IOP00 BZE XL,IOP01 SKIP IF BOTH ARGS NULL ! 7978: < JSR IOPPF PROCESS FILEARG2 ! 7979: < JSR SYSFC CALL FOR FILEARG2 CHECK ! 7980: < PPM IOP16 FAIL ! 7981: < BRN IOP11 COMPLETE FILE ASSOCIATION ! 7982: ! 7983: ! 7984: ! 7985: ! 7986: ! 7987: ! 7988: ! 7989: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 122 ! 7990: ! 7991: ! 7992: 18859a17522,17538 ! 7993: > * FIRST ARG NAME ! 7994: > * I I ! 7995: > * +------+ ! 7996: > * I I-----+ ! 7997: > * +------+ V ! 7998: > * I I +----------------+ ! 7999: > * I =B$TRT I ! 8000: > * +----------------+ ! 8001: > * I =TRTIN/=TRTOU I ! 8002: > * +----------------+ ! 8003: > * I VALUE OR TRCHN + ! 8004: > * +----------------+ ! 8005: > * TRTER I I-----+ ! 8006: > * +----------------+ V ! 8007: > * TRTRI I 0 I +------+ ! 8008: > * +----------------+ I I SVBLK ! 8009: > * I/O TRACE BLOCK +------+ ! 8010: 18861c17540 ! 8011: < * IOPUT (CONTINUED) ! 8012: --- ! 8013: > * 1. ASSOCIATION TO STANDARD FILES. ! 8014: 18863c17542,17558 ! 8015: < * HERE WITH 0 OR FCBLK PTR IN (XL) ! 8016: --- ! 8017: > * FIRST ARG NAME FILETAG VRBLK ! 8018: > * I I I I ! 8019: > * +------+ LK1 +------+ LK2 ! 8020: > * I I---+ +---+ I I---+ ! 8021: > * +------+ V I V +------+ V ! 8022: > * I I +----------------+ I +----------------+ ! 8023: > * I =B$TRT I I I =B$TRT I ! 8024: > * +----------------+ I +----------------+ ! 8025: > * I =TRTIN/=TRTOU I I I =TRTIO I ! 8026: > * +----------------+ I +----------------+ ! 8027: > * I VALUE OR TRCHN I I I VALUE OR TRCHN I ! 8028: > * +----------------+ I +----------------+ ! 8029: > * TRTER I 0 I I I 0 OR IOTAG I TRTAG ! 8030: > * +----------------+ I +----------------+ ! 8031: > * TRTRI I I--+ I 0 I TRTRI ! 8032: > * +----------------+ +----------------+ ! 8033: > * I/O TRACE BLOCK TRTIO BLOCK ! 8034: 18865,18875c17560 ! 8035: < IOP01 MOV IOPTT,WB GET TRACE TYPE ! 8036: < MOV R$IOT,XR GET 0 OR TRTRF PTR ! 8037: < JSR TRBLD BUILD TRBLK ! 8038: < MOV XR,WC COPY TRBLK POINTER ! 8039: < MOV (XS)+,XR GET VARIABLE FROM STACK ! 8040: < JSR GTVAR POINT TO VARIABLE ! 8041: < PPM IOP15 FAIL ! 8042: < MOV XL,R$ION SAVE NAME POINTER ! 8043: < MOV XL,XR COPY NAME POINTER ! 8044: < ADD WA,XR POINT TO VARIABLE ! 8045: < SUB *VRVAL,XR SUBTRACT OFFSET,MERGE INTO LOOP ! 8046: --- ! 8047: > * 2. REGULAR CASE. ! 8048: ! 8049: ! 8050: ! 8051: ! 8052: ! 8053: ! 8054: ! 8055: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 123 ! 8056: ! 8057: ! 8058: 18877,18902c17562,17579 ! 8059: < * LOOP TO END OF TRBLK CHAIN IF ANY ! 8060: < * ! 8061: < IOP02 MOV XR,XL COPY BLK PTR ! 8062: < MOV VRVAL(XR),XR LOAD PTR TO NEXT TRBLK ! 8063: < BNE (XR),=B$TRT,IOP03 JUMP IF NOT TRAPPED ! 8064: < BNE TRTYP(XR),IOPTT,IOP02 LOOP IF NOT SAME ASSOCN ! 8065: < MOV TRNXT(XR),XR GET VALUE AND DELETE OLD TRBLK ! 8066: < * ! 8067: < * IOPUT (CONTINUED) ! 8068: < * ! 8069: < * STORE NEW ASSOCIATION ! 8070: < * ! 8071: < IOP03 MOV WC,VRVAL(XL) LINK TO THIS TRBLK ! 8072: < MOV WC,XL COPY POINTER ! 8073: < MOV XR,TRNXT(XL) STORE VALUE IN TRBLK ! 8074: < MOV R$ION,XR RESTORE POSSIBLE VRBLK POINTER ! 8075: < MOV WA,WB KEEP OFFSET TO NAME ! 8076: < JSR SETVR IF VRBLK, SET VRGET,VRSTO ! 8077: < MOV R$IOT,XR GET 0 OR TRTRF PTR ! 8078: < BNZ XR,IOP19 JUMP IF TRTRF BLOCK EXISTS ! 8079: < EXI RETURN TO CALLER ! 8080: < * ! 8081: < * NON STANDARD FILE ! 8082: < * SEE IF AN FCBLK HAS ALREADY BEEN ALLOCATED. ! 8083: < * ! 8084: < IOP04 ZER WA IN CASE NO FCBLK FOUND ! 8085: --- ! 8086: > * THE STRUCTURES BUILT FOR I/O ASSOCIATIONS ARE AS SHOWN ! 8087: > * ABOVE. A TRACE BLOCK CHAIN (TRCHN) MAY HOLD ANY OR ALL ! 8088: > * OF THE TYPES, =TRTIN, =TRTOU, =TRTIO, BUT NOT MORE THAN ! 8089: > * ONE BLOCK OF ANY GIVEN TYPE. CASES ARE - ! 8090: > * 1. NO FILETAG OR IOTAG IS USED FOR ASSOCIATING STANDARD ! 8091: > * FILES (SYSRD, SYSPR, TERMINAL). THE I/O TRACE BLOCK ! 8092: > * IS DISTINGUISHED BY A NON-NULL TRTER FIELD POINTING ! 8093: > * TO THE RELEVANT SVBLK (V$INP, V$OUP, V$TER) AND A ! 8094: > * ZERO TRTRI FIELD. FOR TERMINAL, TRBLKS OF BOTH ! 8095: > * INPUT AND OUTPUT TYPE ARE CHAINED FROM THE FIRST ARG ! 8096: > * VIA THE TRCHN FIELD. ! 8097: > * 2. THE I/O TRACE BLOCK FOR THE REGULAR CASE HAS A ZERO ! 8098: > * TRTER FIELD AND A POINTER TO A TRTIO BLOCK IS IN ! 8099: > * THE TRTRI FIELD. THE FILETAG MUST BE A NATURAL ! 8100: > * VARIABLE AND THE TRTIO TRACE BLOCK ATTACHED TO IT ! 8101: > * HOLDS THE IOTAG. ! 8102: > * THE EFFECT OF ENDFILE() IS TO CLEAR IOTAG AND BREAK LK2. ! 8103: > * THE EFFECT OF DETACH() IS TO BREAK LK1. ! 8104: 18903a17581,17586 ! 8105: > IOPUT PRC N,4 ENTRY POINT ! 8106: > MOV WB,IOPWB KEEP ASSOCIATION TYPE FLAG ! 8107: > JSR GTSTG CONVERT THIRD ARG TO STRING ! 8108: > PPM IOP12 FAIL THIRD ARG ! 8109: > BNZ WA,IOP01 SKIP IF NON NULL ! 8110: > ZER XR NOTE NULL ARG ! 8111: 18905c17588 ! 8112: < * IOPUT (CONTINUED) ! 8113: --- ! 8114: ! 8115: ! 8116: ! 8117: ! 8118: ! 8119: ! 8120: ! 8121: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 124 ! 8122: ! 8123: ! 8124: > * PROCESS SECOND ARG ! 8125: 18907,18950c17590,17610 ! 8126: < * SEARCH POSSIBLE TRBLK CHAIN TO PICK UP THE FCBLK ! 8127: < * ! 8128: < IOP05 MOV XR,WB REMEMBER BLK PTR ! 8129: < MOV VRVAL(XR),XR CHAIN ALONG ! 8130: < BNE (XR),=B$TRT,IOP06 JUMP IF END OF TRBLK CHAIN ! 8131: < BNE TRTYP(XR),=TRTFC,IOP05 LOOP IF MORE TO GO ! 8132: < MOV XR,R$IOT POINT TO FILE ARG1 TRBLK ! 8133: < MOV TRFPT(XR),WA GET FCBLK PTR FROM TRBLK ! 8134: < * ! 8135: < * WA = 0 OR FCBLK PTR ! 8136: < * WB = PTR TO PRECEDING BLK TO WHICH ANY TRTRF BLOCK ! 8137: < * FOR FILE ARG1 MUST BE CHAINED. ! 8138: < * ! 8139: < IOP06 MOV WA,R$IOF KEEP POSSIBLE FCBLK PTR ! 8140: < MOV WB,R$IOP KEEP PRECEDING BLK PTR ! 8141: < JSR IOPPF PROCESS FILEARG2 ! 8142: < JSR SYSFC SEE IF FCBLK REQUIRED ! 8143: < PPM IOP16 FAIL ! 8144: < BZE WA,IOP12 SKIP IF NO NEW FCBLK WANTED ! 8145: < BLT WC,=NUM02,IOP6A JUMP IF FCBLK IN DYNAMIC ! 8146: < JSR ALOST GET IT IN STATIC ! 8147: < BRN IOP6B SKIP ! 8148: < * ! 8149: < * OBTAIN FCBLK IN DYNAMIC ! 8150: < * ! 8151: < IOP6A JSR ALLOC GET SPACE FOR FCBLK ! 8152: < * ! 8153: < * MERGE ! 8154: < * ! 8155: < IOP6B MOV XR,XL POINT TO FCBLK ! 8156: < MOV WA,WB COPY ITS LENGTH ! 8157: < BTW WB GET COUNT AS WORDS (SGD APR80) ! 8158: < LCT WB,WB LOOP COUNTER ! 8159: < * ! 8160: < * CLEAR FCBLK ! 8161: < * ! 8162: < IOP07 ZER (XR)+ CLEAR A WORD ! 8163: < BCT WB,IOP07 LOOP ! 8164: < BEQ WC,=NUM02,IOP09 SKIP IF IN STATIC - DONT SET FIELDS ! 8165: < MOV =B$XNT,(XL) STORE XNBLK CODE IN CASE ! 8166: < MOV WA,1(XL) STORE LENGTH ! 8167: < BNZ WC,IOP09 JUMP IF XNBLK WANTED ! 8168: < MOV =B$XRT,(XL) XRBLK CODE REQUESTED ! 8169: < * ! 8170: --- ! 8171: > IOP01 MOV XR,R$IOR KEEP FILEPROPS STRING PTR ! 8172: > JSR IOFTG CHECK SECOND ARG ! 8173: > PPM IOP07 FAIL SECOND ARG ! 8174: > MOV XL,R$IOL KEEP SCBLK FOR FILETAG ! 8175: > MOV XR,R$IOT KEEP TRTIO BLK PTR ! 8176: > MOV WA,IOPWA KEEP IOTAG ! 8177: > MOV WB,IOPVR KEEP FILETAG VRBLK PTR ! 8178: > MOV WC,IOPWC KEEP FILETAG VALUE ! 8179: > MOV (XS)+,XR GET FIRST ARG OFF STACK ! 8180: ! 8181: ! 8182: ! 8183: ! 8184: ! 8185: ! 8186: ! 8187: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 125 ! 8188: ! 8189: ! 8190: > JSR GTVAR CONVERT TO NAME ! 8191: > PPM IOP13 FAIL FIRST ARG ! 8192: > MOV XL,R$IO1 SAVE FIRST ARG NAME BASE ADRS ! 8193: > MOV WA,IOPNF SAVE FIRST ARG NAME OFFSET ! 8194: > MOV WB,XR FILETAG VRBLK PTR ! 8195: > BNZ VRLEN(XR),IOP02 NOT SPECIAL CASE IF NOT SYS NAME ! 8196: > MOV VRSVP(XR),WC GET SVBLK PTR ! 8197: > MOV =TRTIN,WB IN CASE .INPUT ! 8198: > BEQ WC,=V$INP,IOP06 JUMP IF .INPUT ! 8199: > MOV =TRTOU,WB IN CASE .OUTPUT OR .TERMINAL ! 8200: > BEQ WC,=V$OUP,IOP08 JUMP IF .OUTPUT ! 8201: > BEQ WC,=V$TER,IOP09 JUMP IF .TERMINAL ! 8202: 18952d17611 ! 8203: < * IOPUT (CONTINUED) ! 8204: 18954c17613 ! 8205: < * COMPLETE FCBLK INITIALISATION ! 8206: --- ! 8207: > * NORMAL CASE ! 8208: 18956,18958c17615,17624 ! 8209: < IOP09 MOV R$IOT,XR GET POSSIBLE TRBLK PTR ! 8210: < MOV XL,R$IOF STORE FCBLK PTR ! 8211: < BNZ XR,IOP10 JUMP IF TRBLK ALREADY FOUND ! 8212: --- ! 8213: > IOP02 BNZ R$IOT,IOP03 SKIP IF TRTIO BLK EXISTS ALREADY ! 8214: > MOV =TRTIO,WB TRACE BLOCK TYPE WORD ! 8215: > ZER XR ZERO IOTAG WORD ! 8216: > ZER XL ZERO TRTRI FIELD ! 8217: > JSR TRBLD BUILD TRTIO TRBLK ! 8218: > MOV XR,R$IOT SAVE TRTIO BLK PTR ! 8219: > MOV IOPVR,XL GET FILETAG VRBLK ! 8220: > MOV *VRVAL,WA OFFSET TO VALUE FIELD ! 8221: > JSR TRCHN PLACE IN TRBLK CHAIN FOR FILETAG ! 8222: > PPM UNUSED RETURN ! 8223: 18960c17626 ! 8224: < * A NEW TRBLK IS NEEDED ! 8225: --- ! 8226: > * MERGE TO BUILD TRBLK FOR FIRST ARG ! 8227: 18962,18970c17628,17630 ! 8228: < MOV =TRTFC,WB TRTYP FOR FCBLK TRAP BLK ! 8229: < JSR TRBLD MAKE THE BLOCK ! 8230: < MOV XR,R$IOT COPY TRTRF PTR ! 8231: < MOV R$IOP,XL POINT TO PRECEDING BLK ! 8232: < MOV VRVAL(XL),VRVAL(XR) COPY VALUE FIELD TO TRBLK ! 8233: < MOV XR,VRVAL(XL) LINK NEW TRBLK INTO CHAIN ! 8234: < MOV XL,XR POINT TO PREDECESSOR BLK ! 8235: < JSR SETVR SET TRACE INTERCEPTS ! 8236: < MOV VRVAL(XR),XR RECOVER TRBLK PTR ! 8237: --- ! 8238: > IOP03 MOV =TRTIN,WB IN CASE INPUT ! 8239: > BZE IOPWB,IOP04 SKIP IF SO ! 8240: > MOV =TRTOU,WB IN CASE OUTPUT ! 8241: 18972c17632 ! 8242: < * XR IS PTR TO TRBLK, XL IS FCBLK PTR OR 0 ! 8243: --- ! 8244: > * BUILD TRACE BLOCK ! 8245: 18974c17634,17641 ! 8246: ! 8247: ! 8248: ! 8249: ! 8250: ! 8251: ! 8252: ! 8253: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 126 ! 8254: ! 8255: ! 8256: < IOP10 MOV R$IOF,TRFPT(XR) STORE FCBLK PTR ! 8257: --- ! 8258: > IOP04 ICV IOPWB NOTE NOT STANDARD I/O FILE ! 8259: > MOV R$IOT,XL TRTIO BLK PTR TO TRTRI FIELD ! 8260: > ZER XR ZERO TRTER FIELD ! 8261: > JSR TRBLD BUILD I/O TRACE BLOCK ! 8262: > MOV R$IO1,XL ASSOCIATED VBL NAME BASE ! 8263: > MOV IOPNF,WA NAME OFFSET ! 8264: > JSR TRCHN UPDATE TRACE CHAIN FOR FIRST ARG ! 8265: > PPM UNUSED RETURN ! 8266: 18976c17643 ! 8267: < * CALL SYSIO TO COMPLETE FILE ACCESSING ! 8268: --- ! 8269: > * PREPARE FOR AND MAKE SYSIO CALL ! 8270: 18978,19003c17645,17656 ! 8271: < IOP11 MOV R$IOF,WA COPY FCBLK PTR OR 0 ! 8272: < MOV IOPTT,WB GET INPUT/OUTPUT FLAG ! 8273: < MOV R$IO2,XR GET FILE ARG2 ! 8274: < MOV R$IO1,XL GET FILE ARG1 ! 8275: < JSR SYSIO ASSOCIATE TO THE FILE ! 8276: < PPM IOP17 FAIL ! 8277: < PPM IOP18 FAIL ! 8278: < BNZ R$IOT,IOP01 NOT STD INPUT IF NON-NULL TRTRF BLK ! 8279: < BNZ IOPTT,IOP01 JUMP IF OUTPUT ! 8280: < BZE WC,IOP01 NO CHANGE TO STANDARD READ LENGTH ! 8281: < MOV WC,CSWIN STORE NEW READ LENGTH FOR STD FILE ! 8282: < BRN IOP01 MERGE TO FINISH THE TASK ! 8283: < * ! 8284: < * SYSFC MAY HAVE RETURNED A POINTER TO A PRIVATE FCBLK ! 8285: < * ! 8286: < IOP12 BNZ XL,IOP09 JUMP IF PRIVATE FCBLK ! 8287: < BRN IOP11 FINISH THE ASSOCIATION ! 8288: < * ! 8289: < * FAILURE RETURNS ! 8290: < * ! 8291: < IOP13 EXI 1 3RD ARG NOT A STRING ! 8292: < IOP14 EXI 2 2ND ARG UNSUITABLE ! 8293: < IOP15 EXI 3 1ST ARG UNSUITABLE ! 8294: < IOP16 EXI 4 FILE SPEC WRONG ! 8295: < IOP17 EXI 5 I/O FILE DOES NOT EXIST ! 8296: < IOP18 EXI 6 I/O FILE CANNOT BE READ/WRITTEN ! 8297: --- ! 8298: > IOP05 MOV R$IOL,XL FILETAG SCBLK PTR ! 8299: > MOV R$IOR,XR FILEPROPS SCBLK PTR ! 8300: > MOV IOPWA,WA IOTAG OR ZERO ! 8301: > MOV IOPWB,WB ASSOCIATION TYPE NUMBER ! 8302: > MOV IOPWC,WC POSSIBLE FILETAG VALUE ! 8303: > JSR SYSIO CALL SYSTEM ROUTINE TO OPEN FILE ! 8304: > PPM IOP14 FAIL RETURN ! 8305: > PPM EROSI ERROR RETURN ! 8306: > MOV R$IOT,XL TRTIO POINTER ! 8307: > BZE XL,IOP11 DONE IF ZERO ! 8308: > MOV WA,TRTAG(XL) STORE RETURNED IOTAG ! 8309: > BRN IOP11 SUCCEED ! 8310: 19006c17659 ! 8311: < * IOPUT (CONTINUED) ! 8312: ! 8313: ! 8314: ! 8315: ! 8316: ! 8317: ! 8318: ! 8319: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 127 ! 8320: ! 8321: ! 8322: --- ! 8323: > * SPECIAL CASE OF .INPUT ! 8324: 19008,19009c17661 ! 8325: < * ADD TO IOCHN CHAIN OF ASSSOCIATED VARIABLES UNLESS ALREAD ! 8326: < * PRESENT. ! 8327: --- ! 8328: > IOP06 BZE IOPWB,IOP09 FAIL OUTPUT(.X,.INPUT) ! 8329: 19011c17663 ! 8330: < IOP19 MOV R$ION,WC WC = NAME BASE, WB = NAME OFFSET ! 8331: --- ! 8332: > * BAD FILETAG ! 8333: 19013c17665 ! 8334: < * SEARCH LOOP ! 8335: --- ! 8336: > IOP07 EXI 2 ERRONEOUS SECOND ARG ! 8337: 19015,19019c17667 ! 8338: < IOP20 MOV TRTRF(XR),XR NEXT LINK OF CHAIN ! 8339: < BZE XR,IOP21 NOT FOUND ! 8340: < BNE WC,IONMB(XR),IOP20 NO MATCH ! 8341: < BEQ WB,IONMO(XR),IOP22 EXIT IF MATCHED ! 8342: < BRN IOP20 LOOP ! 8343: --- ! 8344: > * SPECIAL CASE OF .OUTPUT ! 8345: 19021c17669 ! 8346: < * NOT FOUND ! 8347: --- ! 8348: > IOP08 BZE IOPWB,IOP07 FAIL INPUT(.X,.OUTPUT) ! 8349: 19023,19032c17671 ! 8350: < IOP21 MOV *NUM05,WA SPACE NEEDED ! 8351: < JSR ALLOC GET IT ! 8352: < MOV =B$XRT,(XR) STORE XRBLK CODE ! 8353: < MOV WA,1(XR) STORE LENGTH ! 8354: < MOV WC,IONMB(XR) STORE NAME BASE ! 8355: < MOV WB,IONMO(XR) STORE NAME OFFSET ! 8356: < MOV R$IOT,XL POINT TO TRTRF BLK ! 8357: < MOV TRTRF(XL),WA GET PTR FIELD CONTENTS ! 8358: < MOV XR,TRTRF(XL) STORE PTR TO NEW BLOCK ! 8359: < MOV WA,TRTRF(XR) COMPLETE THE LINKING ! 8360: --- ! 8361: > * SPECIAL CASE OF .TERMINAL AND MERGE FOR OTHERS ! 8362: 19034c17673,17685 ! 8363: < * INSERT FCBLK ON FCBLK CHAIN FOR SYSEJ, SYSXI ! 8364: --- ! 8365: > IOP09 ZER R$IOT NOTE NO TRTIO BLOCK ! 8366: > MOV WC,XR SVBLK PTR FOR TRTER FIELD ! 8367: > ZER XL ZERO TRTRI FIELD ! 8368: > JSR TRBLD BUILD TRBLK ! 8369: > MOV R$IO1,XL ASSOCIATED VBL NAME BASE ! 8370: > MOV IOPNF,WA NAME OFFSET ! 8371: > JSR TRCHN UPDATE TRACE CHAIN FOR ARG 1 ! 8372: > PPM UNUSED RETURN ! 8373: > BNE TRTER(XR),=V$TER,IOP10 DONE UNLESS TERMINAL ! 8374: > BNE TRTYP(XR),=TRTOU,IOP10 DONE IF TERM. 2ND TIME ROUND ! 8375: > MOV =V$TER,WC TRTER FIELD ! 8376: > MOV =TRTIN,WB TRTYP FIELD ! 8377: > BRN IOP09 REPEAT LOOP FOR TERMINAL ! 8378: ! 8379: ! 8380: ! 8381: ! 8382: ! 8383: ! 8384: ! 8385: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 128 ! 8386: ! 8387: ! 8388: 19036,19037c17687 ! 8389: < IOP22 BZE R$IOF,IOP25 SKIP IF NO FCBLK ! 8390: < MOV R$FCB,XL PTR TO HEAD OF EXISTING CHAIN ! 8391: --- ! 8392: > * CHECK SPECIAL CASES FOR NON-NULL THIRD ARGS ! 8393: 19039c17689,17690 ! 8394: < * SEE IF FCBLK ALREADY ON CHAIN ! 8395: --- ! 8396: > IOP10 ZER IOPWA NO IOTAG ! 8397: > BNZ R$IOR,IOP05 MERGE ONLY IF FILEPROPS NON-NULL ! 8398: 19041,19044c17692 ! 8399: < IOP23 BZE XL,IOP24 NOT ON IF END OF CHAIN ! 8400: < BEQ 3(XL),R$IOF,IOP25 DONT DUPLICATE IF FIND IT ! 8401: < MOV 2(XL),XL GET NEXT LINK ! 8402: < BRN IOP23 LOOP ! 8403: --- ! 8404: > * SUCCESS RETURN ! 8405: 19046c17694,17698 ! 8406: < * NOT FOUND SO ADD AN ENTRY FOR THIS FCBLK ! 8407: --- ! 8408: > IOP11 ZER R$IO1 CLEAR GARBAGE ! 8409: > ZER R$IOL ! 8410: > ZER R$IOR ! 8411: > ZER R$IOT ! 8412: > EXI RETURN TO CALLER ! 8413: 19048,19054c17700 ! 8414: < IOP24 MOV *NUM04,WA SPACE NEEDED ! 8415: < JSR ALLOC GET IT ! 8416: < MOV =B$XRT,(XR) STORE BLOCK CODE ! 8417: < MOV WA,1(XR) STORE LENGTH ! 8418: < MOV R$FCB,2(XR) STORE PREVIOUS LINK IN THIS NODE ! 8419: < MOV R$IOF,3(XR) STORE FCBLK PTR ! 8420: < MOV XR,R$FCB INSERT NODE INTO FCBLK CHAIN ! 8421: --- ! 8422: > * ERROR RETURNS ! 8423: 19056c17702 ! 8424: < * RETURN ! 8425: --- ! 8426: > IOP12 EXI 1 ERRONEOUS THIRD ARG ! 8427: 19058c17704,17706 ! 8428: < IOP25 EXI RETURN TO CALLER ! 8429: --- ! 8430: > IOP13 EXI 3 ERRONEOUS FIRST ARG ! 8431: > * ! 8432: > IOP14 EXI 4 FAIL RETURN FROM SYSIO ! 8433: 19098,19099c17746 ! 8434: < JSR PRTVL PRINT KEYWORD VALUE ! 8435: < JSR PRTNL TERMINATE PRINT LINE ! 8436: --- ! 8437: > JSR PRTVF PRINT KEYWORD VALUE ! 8438: 19144c17791 ! 8439: < KWNM1 ERB 251,KEYWORD OPERAND IS NOT NAME OF DEFINED KEYWORD ! 8440: --- ! 8441: > KWNM1 ERB 230,KEYWORD OPERAND IS NOT NAME OF DEFINED KEYWORD ! 8442: 19173c17820 ! 8443: < BLO WA,WB,LCMP1 JUMP IF ARG 1 LENGTH IS SMALLER ! 8444: ! 8445: ! 8446: ! 8447: ! 8448: ! 8449: ! 8450: ! 8451: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 129 ! 8452: ! 8453: ! 8454: --- ! 8455: > BLO WA,WB,LCMP0 JUMP IF ARG 1 LENGTH IS SMALLER ! 8456: 19178,19179c17825,17830 ! 8457: < LCMP1 CMC LCMP4,LCMP3 COMPARE STRINGS, JUMP IF UNEQUAL ! 8458: < BNE WB,WC,LCMP2 IF EQUAL, JUMP IF LENGTHS UNEQUAL ! 8459: --- ! 8460: > LCMP0 BZE WA,LCMP1 SKIP IF A NULL ARG ! 8461: > CMC LCMP4,LCMP3 COMPARE STRINGS, JUMP IF UNEQUAL ! 8462: > * ! 8463: > * EQUAL STRINGS OR AT LEAST ONE NULL ARG ! 8464: > * ! 8465: > LCMP1 BNE WB,WC,LCMP2 IF EQUAL, JUMP IF LENGTHS UNEQUAL ! 8466: 19239c17890,17897 ! 8467: < BNZ CNTTL,LIST5 JUMP IF -TITLE OR -STITL ! 8468: --- ! 8469: > MOV STAGE,WA GET COMPILER STAGE ! 8470: > BEQ WA,=STGIC,LIST0 LIST OK IF INITIAL COMPILE ! 8471: > BEQ WA,=STGCE,LIST0 LIST OK IF END LINE ! 8472: > BRN LIST4 ELSE NO LISTING OF SOURCE ! 8473: > * ! 8474: > * HERE WHEN STAGE IS OK TO LIST ! 8475: > * ! 8476: > LIST0 BNZ CNTTL,LIST5 JUMP IF -TITLE OR -STITL ! 8477: 19245c17903 ! 8478: < LIST0 MOV R$CIM,XR LOAD POINTER TO CURRENT IMAGE ! 8479: --- ! 8480: > LIST1 MOV R$CIM,XR LOAD POINTER TO CURRENT IMAGE ! 8481: 19251d17908 ! 8482: < BNE STAGE,=STGIC,LIST1 SKIP IF EXECUTE TIME ! 8483: 19254,19257c17911 ! 8484: < * ! 8485: < * PRINT STATEMENT NUMBER ! 8486: < * ! 8487: < LIST1 JSR PRTIN ELSE PRINT STATEMENT NUMBER ! 8488: --- ! 8489: > JSR PRTIN ELSE PRINT STATEMENT NUMBER ! 8490: 19267c17921 ! 8491: < JSR PRTST PRINT IT ! 8492: --- ! 8493: > JSR PRTSF PRINT IT ! 8494: 19269,19273c17923 ! 8495: < BNZ ERLST,LIST3 JUMP IF ERROR COPY TO INT.CH. ! 8496: < JSR PRTNL TERMINATE LINE ! 8497: < BZE CSWDB,LIST3 JUMP IF -SINGLE MODE ! 8498: < JSR PRTNL ELSE ADD A BLANK LINE ! 8499: < ICV LSTLC AND BUMP LINE COUNTER ! 8500: --- ! 8501: > MNZ LSTPF SET FLAG FOR LINE PRINTED ! 8502: 19275,19278d17924 ! 8503: < * HERE AFTER PRINTING SOURCE IMAGE ! 8504: < * ! 8505: < LIST3 MNZ LSTPF SET FLAG FOR LINE PRINTED ! 8506: < * ! 8507: 19290,19291c17936,17937 ! 8508: < BZE PRICH,LIST7 SKIP IF LISTING TO REGULAR PRINTER ! 8509: < BEQ R$TTL,=NULLS,LIST0 TERMINAL LISTING OMITS NULL TITLE ! 8510: ! 8511: ! 8512: ! 8513: ! 8514: ! 8515: ! 8516: ! 8517: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 130 ! 8518: ! 8519: ! 8520: --- ! 8521: > BNZ PRLEN,LIST7 SKIP IF LISTING TO REGULAR PRINTER ! 8522: > BEQ R$TTL,=NULLS,LIST1 TERMINAL LISTING OMITS NULL TITLE ! 8523: 19296c17942 ! 8524: < BRN LIST0 MERGE ! 8525: --- ! 8526: > BRN LIST1 MERGE ! 8527: 19316c17962 ! 8528: < JSR PRTNL TERMINATE TITLE LINE ! 8529: --- ! 8530: > JSR PRTFH TERMINATE TITLE LINE ! 8531: 19323,19324c17969 ! 8532: < JSR PRTST ELSE PRINT SUB-TITLE ! 8533: < JSR PRTNL TERMINATE LINE ! 8534: --- ! 8535: > JSR PRTSF ELSE PRINT SUB-TITLE ! 8536: 19329c17974 ! 8537: < LSTT1 JSR PRTNL PRINT A BLANK LINE ! 8538: --- ! 8539: > LSTT1 JSR PRTFH PRINT A BLANK LINE ! 8540: 19358c18003 ! 8541: < BZE CSWLS,NXTS2 JUMP IF -NOLIST ! 8542: --- ! 8543: > BZE CSWLS,NXTS1 JUMP IF -NOLIST ! 8544: 19360c18005 ! 8545: < BZE XR,NXTS2 JUMP IF NO IMAGE ! 8546: --- ! 8547: > BZE XR,NXTS1 JUMP IF NO IMAGE ! 8548: 19363,19364c18008,18009 ! 8549: < BNE WA,=CH$MN,NXTS1 JUMP IF NOT CTRL CARD ! 8550: < BZE CSWPR,NXTS2 JUMP IF -NOPRINT ! 8551: --- ! 8552: > BEQ WA,=CH$MN,NXTS1 SKIP LISTING IF CONTROL CARD ! 8553: > JSR LISTR LIST LINE ! 8554: 19366,19369d18010 ! 8555: < * HERE TO CALL LISTER ! 8556: < * ! 8557: < NXTS1 JSR LISTR LIST LINE ! 8558: < * ! 8559: 19372c18013 ! 8560: < NXTS2 MOV R$CNI,XR POINT TO NEXT IMAGE ! 8561: --- ! 8562: > NXTS1 MOV R$CNI,XR POINT TO NEXT IMAGE ! 8563: 19377c18018 ! 8564: < BLO WA,WB,NXTS3 SKIP IF NOT TOO LONG ! 8565: --- ! 8566: > BLO WA,WB,NXTS2 SKIP IF NOT TOO LONG ! 8567: 19382c18023 ! 8568: < NXTS3 MOV WA,SCNIL USE AS RECORD LENGTH ! 8569: --- ! 8570: > NXTS2 MOV WA,SCNIL USE AS RECORD LENGTH ! 8571: 19505c18146 ! 8572: < WTB WA CONVERT TO BYTE OFFSET ! 8573: --- ! 8574: > WTB WA CONVERT TO BAU OFFSET ! 8575: 19697d18337 ! 8576: ! 8577: ! 8578: ! 8579: ! 8580: ! 8581: ! 8582: ! 8583: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 131 ! 8584: ! 8585: ! 8586: < EJC ! 8587: 19699a18340 ! 8588: > EJC ! 8589: 19714,19716c18355 ! 8590: < JSR PRTST AND PRINT IT ! 8591: < JSR PRTNL FOLLOWED BY NEWLINE ! 8592: < JSR PRTNL AND ANOTHER ! 8593: --- ! 8594: > JSR PRTFB AND PRINT IT ! 8595: 19718,19719c18357 ! 8596: < JSR PRTST PRINT IT ! 8597: < JSR PRTNL NEW LINE ! 8598: --- ! 8599: > JSR PRTSF PRINT IT ! 8600: 19721,19723c18359 ! 8601: < JSR PRTST PRINT IT ! 8602: < JSR PRTNL NEW LINE ! 8603: < JSR PRTNL AND ANOTHER BLANK LINE ! 8604: --- ! 8605: > JSR PRTFB ! 8606: 19726c18362,18363 ! 8607: < ADD *NUM02,XR BIAS PAST XNBLK HEADER (SGD07) ! 8608: --- ! 8609: > ADD *NUM02,XR BIASS PAST XNBLK HEADER ! 8610: > EJC ! 8611: 19728c18365 ! 8612: < * LOOP HERE TO PRINT SUCCESSIVE ENTRIES ! 8613: --- ! 8614: > * PRFLR (CONTINUED) ! 8615: 19729a18367,18368 ! 8616: > * LOOP FOR PRINTING TABLE ENTRIES ! 8617: > * ! 8618: 19748c18387 ! 8619: < * MERGE AFTER PRINTING TIME ! 8620: --- ! 8621: > * PRINT A BLANK ! 8622: 19750c18389 ! 8623: < PRFL2 JSR PRTNL THATS ANOTHER LINE ! 8624: --- ! 8625: > PRFL2 JSR PRTFH THATS ANOTHER LINE ! 8626: 19752c18391 ! 8627: < * HERE TO GO TO NEXT ENTRY ! 8628: --- ! 8629: > * TEST TO SEE IF LOOP FINISHED ! 8630: 19754c18393 ! 8631: < PRFL3 ADD *PF$I2,XR BUMP INDEX PTR (SGD07) ! 8632: --- ! 8633: > PRFL3 ADD *PF$I2,XR BUMP INDEX POINTER ! 8634: 19759c18398 ! 8635: < * HERE TO EXIT ! 8636: --- ! 8637: > * RETURN POINT ! 8638: 19775c18414 ! 8639: < MOV WA,PFSVW SAVE WA (SGD07) ! 8640: --- ! 8641: > MOV WA,PFSVW SAVE WA ! 8642: ! 8643: ! 8644: ! 8645: ! 8646: ! 8647: ! 8648: ! 8649: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 132 ! 8650: ! 8651: ! 8652: 19786c18425 ! 8653: < SUB =NUM01,PFNTE ADJUST FOR EXTRA COUNT (SGD07) ! 8654: --- ! 8655: > SUB =NUM01,PFNTE ADJUST FOR EXTRA COUNT ! 8656: 19804c18443,18444 ! 8657: < BCT WA,PFLU1 AND ALLLLLLL THE REST ! 8658: --- ! 8659: > BCT WA,PFLU1 AND ALL THE REST ! 8660: > EJC ! 8661: 19805a18446,18447 ! 8662: > * PRFLU (CONTINUED) ! 8663: > * ! 8664: 19828c18470 ! 8665: < * MERGE HERE TO EXIT ! 8666: --- ! 8667: > * RETURN POINT ! 8668: 19831c18473 ! 8669: < MOV PFSVW,WA RESTORE SAVED REG ! 8670: --- ! 8671: > MOV PFSVW,WA RESTORE WA ! 8672: 19841d18482 ! 8673: < EJC ! 8674: 19842a18484 ! 8675: > EJC ! 8676: 19844c18486 ! 8677: < * PRPAR - PROCESS PRINT PARAMETERS ! 8678: --- ! 8679: > * PRPAR -- PROCESS PRINT PARAMETERS ! 8680: 19846d18487 ! 8681: < * (WC) IF NONZERO ASSOCIATE TERMINAL ONLY ! 8682: 19848c18489 ! 8683: < * (XL,XR,WA,WB,WC) DESTROYED ! 8684: --- ! 8685: > * (XR,WA,WB,WC) DESTROYED ! 8686: 19850,19853d18490 ! 8687: < * SINCE MEMORY ALLOCATION IS UNDECIDED ON INITIAL CALL, ! 8688: < * TERMINAL CANNOT BE ASSOCIATED. THE ENTRY WITH WC NON-ZERO ! 8689: < * IS PROVIDED SO A LATER CALL CAN BE MADE TO COMPLETE THIS. ! 8690: < * ! 8691: 19855c18492 ! 8692: < BNZ WC,PRPA7 JUMP TO ASSOCIATE TERMINAL ! 8693: --- ! 8694: > MOV XL,-(XS) SAVE XL ! 8695: 19866,19868c18503,18504 ! 8696: < MOV PRLEN,WB GET PRIOR LENGTH IF ANY ! 8697: < BZE WB,PRPA2 SKIP IF NO LENGTH ! 8698: < BGT WA,WB,PRPA3 SKIP STORING IF TOO BIG ! 8699: --- ! 8700: > BZE PRLEN,PRPA2 SKIP IF NOT SYSXI RESUMPTION ! 8701: > BHI WA,PRLEN,PRPA3 SKIP IF BIGGER THAN PRIOR BFRS ! 8702: 19874c18510 ! 8703: < * PROCESS BITS OPTIONS ! 8704: --- ! 8705: > * CHECK TERMINAL BUFFER SIZE ! 8706: 19876,19879c18512,18513 ! 8707: < PRPA3 MOV BITS3,WB BIT 3 MASK ! 8708: ! 8709: ! 8710: ! 8711: ! 8712: ! 8713: ! 8714: ! 8715: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 133 ! 8716: ! 8717: ! 8718: < ANB WC,WB GET -NOLIST BIT ! 8719: < ZRB WB,PRPA4 SKIP IF CLEAR ! 8720: < ZER CSWLS SET -NOLIST ! 8721: --- ! 8722: > PRPA3 BZE TTLEN,PRPA4 SKIP IF NOT SYSXI RESUMPTION ! 8723: > BHI XL,TTLEN,PRPA5 SKIP IF TOO BIG ! 8724: 19881c18515 ! 8725: < * CHECK IF FAIL REPORTS GOTO INTERACTIVE CHANNEL ! 8726: --- ! 8727: > * STORE TERMINAL BUFFER LENGTH ! 8728: 19883c18517,18521 ! 8729: < PRPA4 MOV BITS1,WB BIT 1 MASK ! 8730: --- ! 8731: > PRPA4 MOV XL,TTLEN BFR LENGTH ! 8732: > * ! 8733: > * PROCESS BITS OPTIONS ! 8734: > * ! 8735: > PRPA5 MOV BITS1,WB BIT 1 MASK ! 8736: 19885c18523 ! 8737: < MOV WB,ERICH STORE INT. CHAN. ERROR FLAG ! 8738: --- ! 8739: > MOV WB,TTINS INPUT FROM TERMINAL FLAG ! 8740: 19888,19894c18526,18533 ! 8741: < MOV WB,PRICH FLAG FOR STD PRINTER ON INT. CHAN. ! 8742: < MOV BITS4,WB BIT 4 MASK ! 8743: < ANB WC,WB GET BIT ! 8744: < MOV WB,CPSTS FLAG FOR COMPILE STATS SUPPRESSN. ! 8745: < MOV BITS5,WB BIT 5 MASK ! 8746: < ANB WC,WB GET BIT ! 8747: < MOV WB,EXSTS FLAG FOR EXEC STATS SUPPRESSION ! 8748: --- ! 8749: > MOV WB,TTOUS STD OUTPUT TO TERMINAL FLAG ! 8750: > MOV TTLEN,TTERL ERRORS TO TERML IF AVAILABLE ! 8751: > MOV PRLEN,PRAVL NOTE IF A PRINT FILE IS AVAILABLE ! 8752: > ZRB WB,PRPA6 IF FLAG SET, CLEAR TTERL SINCE ... ! 8753: > ZER TTERL ... TERML GETS ALL OUTPUT ALREADY ! 8754: > MOV TTLEN,TTOUS REGULAR O/P TO TERML IF AVAILABLE ! 8755: > MOV TTLEN,PRLEN REVISED PRINT BUFFER LENGTH ! 8756: > ZER TTLEN DONT NEED SEPARATE TERML BUFFER ! 8757: 19899,19904c18538 ! 8758: < MOV BITS6,WB BIT 6 MASK ! 8759: < ANB WC,WB GET BIT ! 8760: < MOV WB,PRECL EXTENDED/COMPACT LISTING FLAG ! 8761: < SUB =NUM08,WA POINT 8 CHARS FROM LINE END ! 8762: < ZRB WB,PRPA5 JUMP IF NOT EXTENDED ! 8763: < MOV WA,LSTPO STORE FOR LISTING PAGE HEADINGS ! 8764: --- ! 8765: > * GET OFFSET TO /PAGE NN/ PART OF HEADER ! 8766: 19906c18540,18543 ! 8767: < * CONTINUE OPTION PROCESSING ! 8768: --- ! 8769: > PRPA6 MOV PRLEN,WA STD BFR LENGTH ! 8770: > BNZ WA,PRPA7 USE IF NON-ZERO ! 8771: > MOV TTLEN,WA ELSE TRY TERMINAL ! 8772: > BZE WA,PRPA8 GIVE UP IF ZERO ALSO ! 8773: 19908,19920c18545 ! 8774: ! 8775: ! 8776: ! 8777: ! 8778: ! 8779: ! 8780: ! 8781: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 134 ! 8782: ! 8783: ! 8784: < PRPA5 MOV BITS7,WB BIT 7 MASK ! 8785: < ANB WC,WB GET BIT 7 ! 8786: < MOV WB,CSWEX SET -NOEXECUTE IF NON-ZERO ! 8787: < MOV BIT10,WB BIT 10 MASK ! 8788: < ANB WC,WB GET BIT 10 ! 8789: < MOV WB,HEADP PRETEND PRINTED TO OMIT HEADERS ! 8790: < MOV BITS9,WB BIT 9 MASK ! 8791: < ANB WC,WB GET BIT 9 ! 8792: < MOV WB,PRSTO KEEP IT AS STD LISTING OPTION ! 8793: < ZRB WB,PRPA6 SKIP IF CLEAR ! 8794: < MOV PRLEN,WA GET PRINT BUFFER LENGTH ! 8795: < SUB =NUM08,WA POINT 8 CHARS FROM LINE END ! 8796: < MOV WA,LSTPO STORE PAGE OFFSET ! 8797: --- ! 8798: > * GET OFFSET ! 8799: 19922c18547,18552 ! 8800: < * CHECK FOR TERMINAL ! 8801: --- ! 8802: > PRPA7 MOV WA,PRLEN STORE AS BUFFER LENGTH ! 8803: > SUB =NUM08,WA JUST BEFORE END OF LINE ! 8804: > MOV WA,LSTPO KEEP IT ! 8805: > MOV TTOUS,WB CONSTRUCT VALUE FOR ... ! 8806: > ORB PRAVL,WB ... USE IN DECIDING WHETHER TO ... ! 8807: > MOV WB,PRPUT ... PUT STRINGS IN OUTPUT BUFFER ! 8808: 19924,19932c18554 ! 8809: < PRPA6 ANB BITS8,WC SEE IF TERMINAL TO BE ACTIVATED ! 8810: < BNZ WC,PRPA7 JUMP IF TERMINAL REQUIRED ! 8811: < BZE INITR,PRPA8 JUMP IF NO TERMINAL TO DETACH ! 8812: < MOV =V$TER,XL PTR TO /TERMINAL/ ! 8813: < JSR GTNVR GET VRBLK POINTER ! 8814: < PPM CANT FAIL ! 8815: < MOV =NULLS,VRVAL(XR) CLEAR VALUE OF TERMINAL ! 8816: < JSR SETVR REMOVE ASSOCIATION ! 8817: < BRN PRPA8 RETURN ! 8818: --- ! 8819: > * MORE BITS ! 8820: 19934c18556,18559 ! 8821: < * ASSOCIATE TERMINAL ! 8822: --- ! 8823: > PRPA8 MOV BITS3,WB BIT 3 MASK ! 8824: > ANB WC,WB GET -NOLIST BIT ! 8825: > ZRB WB,PRPA9 SKIP IF CLEAR ! 8826: > ZER CSWLS SET -NOLIST ! 8827: 19936,19945c18561 ! 8828: < PRPA7 MNZ INITR NOTE TERMINAL ASSOCIATED ! 8829: < BZE DNAMB,PRPA8 CANT IF MEMORY NOT ORGANISED ! 8830: < MOV =V$TER,XL POINT TO TERMINAL STRING ! 8831: < MOV =TRTOU,WB OUTPUT TRACE TYPE ! 8832: < JSR INOUT ATTACH OUTPUT TRBLK TO VRBLK ! 8833: < MOV XR,-(XS) STACK TRBLK PTR ! 8834: < MOV =V$TER,XL POINT TO TERMINAL STRING ! 8835: < MOV =TRTIN,WB INPUT TRACE TYPE ! 8836: < JSR INOUT ATTACH INPUT TRACE BLK ! 8837: < MOV (XS)+,VRVAL(XR) ADD OUTPUT TRBLK TO CHAIN ! 8838: --- ! 8839: > * MORE BITS ! 8840: ! 8841: ! 8842: ! 8843: ! 8844: ! 8845: ! 8846: ! 8847: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 135 ! 8848: ! 8849: ! 8850: 19947c18563,18575 ! 8851: < * RETURN POINT ! 8852: --- ! 8853: > PRPA9 MOV BITS4,WB BIT 4 MASK ! 8854: > ANB WC,WB GET BIT ! 8855: > MOV WB,CPSTS FLAG FOR COMPILE STATS SUPPRESSN. ! 8856: > MOV BITS5,WB BIT 5 MASK ! 8857: > ANB WC,WB GET BIT ! 8858: > MOV WB,EXSTS FLAG FOR EXEC STATS SUPPRESSION ! 8859: > MOV BITS6,WB BIT 6 MASK ! 8860: > ANB WC,WB GET BIT ! 8861: > MOV WB,NOXEQ SET NOEXECUTE IF NON-ZERO ! 8862: > MOV BITS7,WB BIT 7 MASK ! 8863: > ANB WC,WB GET BIT ! 8864: > ZRB WB,PRP10 SKIP IF NOT SET ! 8865: > ZER TTERL CLEAR ERRORS TO TERML IF SET ! 8866: 19949c18577,18589 ! 8867: < PRPA8 EXI RETURN ! 8868: --- ! 8869: > * MORE BITS ! 8870: > * ! 8871: > PRP10 MOV BITS8,WB BIT 8 MASK ! 8872: > ANB WC,WB GET BIT ! 8873: > MOV WB,HEADN SYSID HEADERS INCLUDE/OMIT FLAG ! 8874: > MOV BITS9,WB BIT 9 MASK ! 8875: > ANB WC,WB GET BIT ! 8876: > MOV WB,PRSTO STANDARD LISTING FLAG ! 8877: > MOV BIT10,WB BIT 10 MASK ! 8878: > ANB WC,WB GET BIT ! 8879: > MOV WB,PRECL EXTENDED LISTING OPTION ! 8880: > MOV (XS)+,XL RESTORE XL ! 8881: > EXI RETURN ! 8882: 19953c18593 ! 8883: < * PRTCH -- PRINT A CHARACTER ! 8884: --- ! 8885: > * PRTCF -- PRINT CHAR TO STD PRINTER AND FLUSH BFR ! 8886: 19954a18595,18605 ! 8887: > * (WA) CHAR TO PRINT ! 8888: > * JSR PRTCF CALL TO PRINT AND FLUSH ! 8889: > * ! 8890: > PRTCF PRC E,0 ENTRY POINT ! 8891: > JSR PRTCH PRINT CHARACTER ! 8892: > JSR PRTFH FLUSH BUFFER ! 8893: > EXI RETURN TO CALLER ! 8894: > ENP END PROCEDURE PRTCF ! 8895: > * ! 8896: > * PRTCH -- PRINT A CHARACTER ON STANDARD PRINTER ! 8897: > * ! 8898: 19960a18612 ! 8899: > BZE PRLEN,PTCH2 SKIP IF NO PRINT FILE ! 8900: 19962,19963c18614,18615 ! 8901: < BNE PROFS,PRLEN,PRCH1 JUMP IF ROOM IN BUFFER ! 8902: < JSR PRTNL ELSE PRINT THIS LINE ! 8903: --- ! 8904: > BNE PROFS,PRLEN,PTCH1 JUMP IF ROOM IN BUFFER ! 8905: > JSR PRTFH ELSE PRINT THIS LINE ! 8906: ! 8907: ! 8908: ! 8909: ! 8910: ! 8911: ! 8912: ! 8913: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 136 ! 8914: ! 8915: ! 8916: 19967c18619 ! 8917: < PRCH1 MOV PRBUF,XR POINT TO PRINT BUFFER ! 8918: --- ! 8919: > PTCH1 MOV PRBUF,XR POINT TO PRINT BUFFER ! 8920: 19973c18625,18628 ! 8921: < EXI RETURN TO PRTCH CALLER ! 8922: --- ! 8923: > * ! 8924: > * RETURN POINT ! 8925: > * ! 8926: > PTCH2 EXI RETURN TO PRTCH CALLER ! 8927: 19974a18630,18640 ! 8928: > * ! 8929: > * PRTFB -- PRINT STRING, FLUSH BFR AND PRINT BLANK LINE ! 8930: > * ! 8931: > * (XR) STRING TO PRINT ! 8932: > * JSR PRTFB CALL FOR PRINT FLUSH AND BLANK ! 8933: > * ! 8934: > PRTFB PRC E,0 ENTRY POINT ! 8935: > JSR PRTSF PRINT AND FLUSH ! 8936: > JSR PRTFH PRINT BLANK ! 8937: > EXI RETURN TO CALLER ! 8938: > ENP END PROCEDURE PRTFB ! 8939: 19977c18643 ! 8940: < * PRTIC -- PRINT TO INTERACTIVE CHANNEL ! 8941: --- ! 8942: > * PRTFH -- FLUSH STANDARD PRINT BUFFER ! 8943: 19979,19982c18645,18649 ! 8944: < * PRTIC IS CALLED TO PRINT THE CONTENTS OF THE STANDARD ! 8945: < * PRINT BUFFER TO THE INTERACTIVE CHANNEL. IT IS ONLY ! 8946: < * CALLED AFTER PRTST HAS SET UP THE STRING FOR PRINTING. ! 8947: < * IT DOES NOT CLEAR THE BUFFER. ! 8948: --- ! 8949: > * PRTFH PRINTS THE CONTENTS OF THE PRINT BUFFER, RESETS ! 8950: > * THE BUFFER TO ALL BLANKS AND RESETS THE PRINT POINTER. ! 8951: > * ON ITS FIRST CALL IT MAY PRINT LISTING HEADERS. ! 8952: > * IF TTLST IS NON-ZERO, IT COPIES PRINT BUFFER TO ! 8953: > * TERMINAL AND FLUSHES THIS ALSO. ! 8954: 19984,19985c18651 ! 8955: < * JSR PRTIC CALL FOR PRINT ! 8956: < * (WA,WB) DESTROYED ! 8957: --- ! 8958: > * JSR PRTFH CALL TO FLUSH BUFFER ! 8959: 19987,19992c18653,18655 ! 8960: < PRTIC PRC E,0 ENTRY POINT ! 8961: < MOV XR,-(XS) SAVE XR ! 8962: < MOV PRBUF,XR POINT TO BUFFER ! 8963: < MOV PROFS,WA NO OF CHARS ! 8964: < JSR SYSPI PRINT ! 8965: < PPM PRTC2 FAIL RETURN ! 8966: --- ! 8967: > PRTFH PRC R,0 ENTRY POINT ! 8968: > BNZ HEADP,PTFH1 WERE HEADERS PRINTED ! 8969: > JSR PRTPS NO - PRINT THEM ! 8970: 19994c18657 ! 8971: < * RETURN ! 8972: ! 8973: ! 8974: ! 8975: ! 8976: ! 8977: ! 8978: ! 8979: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 137 ! 8980: ! 8981: ! 8982: --- ! 8983: > * HEADERS DONE ! 8984: 19996,19997c18659,18668 ! 8985: < PRTC1 MOV (XS)+,XR RESTORE XR ! 8986: < EXI RETURN ! 8987: --- ! 8988: > PTFH1 BZE PRLEN,PTFH4 SKIP IF NO OUTPUT POSSIBLE ! 8989: > MOV XL,-(XS) SAVE XL ! 8990: > MOV XR,-(XS) SAVE XR ! 8991: > MOV WA,-(XS) SAVE WA ! 8992: > MOV WC,-(XS) SAVE WC ! 8993: > MOV PRBUF,XR LOAD POINTER TO BUFFER ! 8994: > MOV PROFS,WC LOAD NUMBER OF CHARS IN BUFFER ! 8995: > BNZ PRAVL,PTFH5 SKIP IF PRINT FILE AVAILABLE ! 8996: > BNZ TTOUS,PTFH2 SKIP IF STD OUTPUT TO TERML ! 8997: > BZE TTLST,PTFH3 LAST POSSIBILITY IS ERROR TO TERML ! 8998: 19999c18670 ! 8999: < * ERROR OCCURED ! 9000: --- ! 9001: > * SEND TO TERMINAL ! 9002: 20001,20004c18672,18674 ! 9003: < PRTC2 ZER ERICH PREVENT LOOPING ! 9004: < ERB 252,ERROR ON PRINTING TO INTERACTIVE CHANNEL ! 9005: < BRN PRTC1 RETURN ! 9006: < ENP PROCEDURE PRTIC ! 9007: --- ! 9008: > PTFH2 JSR SYSPI PRINT TO TERMINAL ! 9009: > PPM PTFH6 FAIL ! 9010: > PPM EROSI ERROR ! 9011: 20005a18676 ! 9012: > * PRTFH (CONTINUED) ! 9013: 20007c18678 ! 9014: < * PRTIS -- PRINT TO INTERACTIVE AND STANDARD PRINTER ! 9015: --- ! 9016: > * BLANK BUFFER ! 9017: 20009,20013c18680,18688 ! 9018: < * PRTIS PUTS A LINE FROM THE PRINT BUFFER ONTO THE ! 9019: < * INTERACTIVE CHANNEL (IF ANY) AND THE STANDARD PRINTER. ! 9020: < * IT ALWAYS PRINTS TO THE STANDARD PRINTER BUT DOES ! 9021: < * NOT DUPLICATE LINES IF THE STANDARD PRINTER IS ! 9022: < * INTERACTIVE. IT CLEARS DOWN THE PRINT BUFFER. ! 9023: --- ! 9024: > PTFH3 MOV PRBLK,XL POINT TO BLANKING STRING ! 9025: > MOV PRCHS,XR POINT TO BUFFER ! 9026: > MOV PRCMV,WA COUNT OF BAUS TO MOVE ! 9027: > MVW MOVE BLANKS INTO BUFFER ! 9028: > ZER PROFS RESET OFFSET ! 9029: > MOV (XS)+,WC RESTORE WC ! 9030: > MOV (XS)+,WA RECOVER WA ! 9031: > MOV (XS)+,XR RESTORE XR ! 9032: > MOV (XS)+,XL RESTORE XL ! 9033: 20015,20016c18690 ! 9034: < * JSR PRTIS CALL FOR PRINTING ! 9035: < * (WA,WB) DESTROYED ! 9036: --- ! 9037: > * RETURN POINT ! 9038: ! 9039: ! 9040: ! 9041: ! 9042: ! 9043: ! 9044: ! 9045: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 138 ! 9046: ! 9047: ! 9048: 20018,20021c18692 ! 9049: < PRTIS PRC E,0 ENTRY POINT ! 9050: < BNZ PRICH,PRTS1 JUMP IF STANDARD PRINTER IS INT.CH. ! 9051: < BZE ERICH,PRTS1 SKIP IF NOT DOING INT. ERROR REPS. ! 9052: < JSR PRTIC PRINT TO INTERACTIVE CHANNEL ! 9053: --- ! 9054: > PTFH4 EXI RETURN TO CALLER ! 9055: 20023c18694 ! 9056: < * MERGE AND EXIT ! 9057: --- ! 9058: > * HERE FOR REGULAR PRINT FILE ! 9059: 20025,20027c18696,18710 ! 9060: < PRTS1 JSR PRTNL PRINT TO STANDARD PRINTER ! 9061: < EXI RETURN ! 9062: < ENP END PROCEDURE PRTIS ! 9063: --- ! 9064: > PTFH5 JSR SYSPR CALL SYSTEM PRINT ROUTINE ! 9065: > PPM PTFH6 JUMP IF FAILED ! 9066: > PPM EROSI STOP IF ERROR ! 9067: > BZE TTLST,PTFH3 SKIP IF NO COPY TO TERMINAL ! 9068: > MOV PROFS,SCLEN(XR) SET STRING LENGTH FOR PTTST ! 9069: > JSR PTTST COPY STD BUFFER TO TERML BFR ! 9070: > JSR PTTFH FLUSH IT ! 9071: > MOV PRLEN,SCLEN(XR) RESTORE BUFFER LENGTH ! 9072: > BRN PTFH3 MERGE ! 9073: > * ! 9074: > * A FAILURE SUCH AS FILE OVERFILLED OCCURRED ! 9075: > * ! 9076: > PTFH6 BZE STAGX,PTFH3 IGNORE IF COMPILE TIME ! 9077: > BRN EXFAL ELSE CAUSE STMT FAILURE ! 9078: > ENP END PROCEDURE PRTFH ! 9079: 20057d18739 ! 9080: < EJC ! 9081: 20071c18753 ! 9082: < JSR PRTNL PRINT LINE ! 9083: --- ! 9084: > JSR PRTFH PRINT LINE ! 9085: 20076,20140d18757 ! 9086: < * PRTMX -- AS PRTMI WITH EXTRA COPY TO INTERACTIVE CHAN. ! 9087: < * ! 9088: < * JSR PRTMX CALL FOR PRINTING ! 9089: < * (WA,WB) DESTROYED ! 9090: < * ! 9091: < PRTMX PRC E,0 ENTRY POINT ! 9092: < JSR PRTST PRINT STRING MESSAGE ! 9093: < MOV =PRTMF,PROFS SET PTR TO COLUMN 15 ! 9094: < JSR PRTIN PRINT INTEGER ! 9095: < JSR PRTIS PRINT LINE ! 9096: < EXI RETURN ! 9097: < ENP END PROCEDURE PRTMX ! 9098: < EJC ! 9099: < * ! 9100: < * PRTNL -- PRINT NEW LINE (END PRINT LINE) ! 9101: < * ! 9102: < * PRTNL PRINTS THE CONTENTS OF THE PRINT BUFFER, RESETS ! 9103: < * THE BUFFER TO ALL BLANKS AND RESETS THE PRINT POINTER. ! 9104: ! 9105: ! 9106: ! 9107: ! 9108: ! 9109: ! 9110: ! 9111: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 139 ! 9112: ! 9113: ! 9114: < * ! 9115: < * JSR PRTNL CALL TO PRINT LINE ! 9116: < * ! 9117: < PRTNL PRC R,0 ENTRY POINT ! 9118: < BNZ HEADP,PRNL0 WERE HEADERS PRINTED ! 9119: < JSR PRTPS NO - PRINT THEM ! 9120: < * ! 9121: < * CALL SYSPR ! 9122: < * ! 9123: < PRNL0 MOV XR,-(XS) SAVE ENTRY XR ! 9124: < MOV WA,PRTSA SAVE WA ! 9125: < MOV WB,PRTSB SAVE WB ! 9126: < MOV PRBUF,XR LOAD POINTER TO BUFFER ! 9127: < MOV PROFS,WA LOAD NUMBER OF CHARS IN BUFFER ! 9128: < JSR SYSPR CALL SYSTEM PRINT ROUTINE ! 9129: < PPM PRNL2 JUMP IF FAILED ! 9130: < LCT WA,PRLNW LOAD LENGTH OF BUFFER IN WORDS ! 9131: < ADD *SCHAR,XR POINT TO CHARS OF BUFFER ! 9132: < MOV NULLW,WB GET WORD OF BLANKS ! 9133: < * ! 9134: < * LOOP TO BLANK BUFFER ! 9135: < * ! 9136: < PRNL1 MOV WB,(XR)+ STORE WORD OF BLANKS, BUMP PTR ! 9137: < BCT WA,PRNL1 LOOP TILL ALL BLANKED ! 9138: < * ! 9139: < * EXIT POINT ! 9140: < * ! 9141: < MOV PRTSB,WB RESTORE WB ! 9142: < MOV PRTSA,WA RESTORE WA ! 9143: < MOV (XS)+,XR RESTORE ENTRY XR ! 9144: < ZER PROFS RESET PRINT BUFFER POINTER ! 9145: < EXI RETURN TO PRTNL CALLER ! 9146: < * ! 9147: < * FILE FULL OR NO OUTPUT FILE FOR LOAD MODULE ! 9148: < * ! 9149: < PRNL2 BNZ PRTEF,PRNL3 JUMP IF NOT FIRST TIME ! 9150: < MNZ PRTEF MARK FIRST OCCURRENCE ! 9151: < ERB 253,PRINT LIMIT EXCEEDED ON STANDARD OUTPUT CHANNEL ! 9152: < * ! 9153: < * STOP AT ONCE ! 9154: < * ! 9155: < PRNL3 MOV =NINI8,WB ENDING CODE ! 9156: < MOV KVSTN,WA STATEMENT NUMBER ! 9157: < JSR SYSEJ STOP ! 9158: < ENP END PROCEDURE PRTNL ! 9159: < EJC ! 9160: < * ! 9161: 20376,20377c18993 ! 9162: < JSR PRTVL PRINT VALUE ! 9163: < JSR PRTNL TERMINATE LINE ! 9164: --- ! 9165: > JSR PRTVF PRINT VALUE ! 9166: 20384c19000 ! 9167: < * PRTPG -- PRINT A PAGE THROW ! 9168: --- ! 9169: > * PRTPG -- PRINT A PAGE THROW ! 9170: ! 9171: ! 9172: ! 9173: ! 9174: ! 9175: ! 9176: ! 9177: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 140 ! 9178: ! 9179: ! 9180: 20387c19003 ! 9181: < * LISTING CHANNEL DEPENDING ON THE LISTING OPTIONS CHOSEN. ! 9182: --- ! 9183: > * LISTING FILE DEPENDING ON THE LISTING OPTIONS CHOSEN. ! 9184: 20392,20393c19008,19009 ! 9185: < BEQ STAGE,=STGXT,PRP01 JUMP IF EXECUTION TIME ! 9186: < BZE LSTLC,PRP06 RETURN IF TOP OF PAGE ALREADY ! 9187: --- ! 9188: > BNZ STAGX,PTPG1 SKIP IF EXECUTION TIME ! 9189: > BZE LSTLC,PTPG6 RETURN IF TOP OF PAGE ALREADY ! 9190: 20398,20401c19014,19017 ! 9191: < PRP01 MOV XR,-(XS) PRESERVE XR ! 9192: < BNZ PRSTD,PRP02 EJECT IF FLAG SET ! 9193: < BNZ PRICH,PRP03 JUMP IF INTERACTIVE LISTING CHANNEL ! 9194: < BZE PRECL,PRP03 JUMP IF COMPACT LISTING ! 9195: --- ! 9196: > PTPG1 MOV XR,-(XS) PRESERVE XR ! 9197: > BNZ PRECL,PTPG2 EJECT IF EXTENDED LISTING ! 9198: > BZE PRSTD,PTPG3 SKIP IF COMPACT LISTING ! 9199: > BNZ TTOUS,PTPG3 SKIP IF LISTING TO TERMINAL ! 9200: 20405,20406c19021,19024 ! 9201: < PRP02 JSR SYSEP EJECT ! 9202: < BRN PRP04 MERGE ! 9203: --- ! 9204: > PTPG2 JSR SYSEP EJECT ! 9205: > PPM PTPG4 IGNORE FAILURE ! 9206: > PPM EROSI ERROR ! 9207: > BRN PTPG4 MERGE ! 9208: 20408,20409c19026 ! 9209: < * COMPACT OR INTERACTIVE CHANNEL LISTING. CANT PRINT ! 9210: < * BLANKS UNTIL CHECK MADE FOR HEADERS PRINTED AND FLAG SET. ! 9211: --- ! 9212: > * COMPACT LISTING. ! 9213: 20411,20416c19028,19033 ! 9214: < * ! 9215: < PRP03 MOV HEADP,XR REMEMBER HEADP ! 9216: < MNZ HEADP SET TO AVOID REPEATED PRTPG CALLS ! 9217: < JSR PRTNL PRINT BLANK LINE ! 9218: < JSR PRTNL PRINT BLANK LINE ! 9219: < JSR PRTNL PRINT BLANK LINE ! 9220: --- ! 9221: > PTPG3 BNZ HEADN,PTPG4 SKIP IF HEADERS OMITTED ! 9222: > MOV HEADP,XR REMEMBER HEADP ! 9223: > MNZ HEADP SET TO AVOID RECURSIVE PRTPG CALLS ! 9224: > JSR PRTFH PRINT BLANK LINE ! 9225: > JSR PRTFH PRINT BLANK LINE ! 9226: > JSR PRTFH PRINT BLANK LINE ! 9227: 20425c19042 ! 9228: < PRP04 BNZ HEADP,PRP05 JUMP IF HEADER LISTED ! 9229: --- ! 9230: > PTPG4 BNZ HEADP,PTPG5 JUMP IF HEADER LISTED ! 9231: 20426a19044 ! 9232: > BNZ HEADN,PTPG5 SKIP IF HEADERS OMITTED ! 9233: 20431,20432c19049 ! 9234: < JSR PRTST APPEND EXTRA CHARS ! 9235: < JSR PRTNL PRINT IT ! 9236: ! 9237: ! 9238: ! 9239: ! 9240: ! 9241: ! 9242: ! 9243: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 141 ! 9244: ! 9245: ! 9246: --- ! 9247: > JSR PRTSF APPEND EXTRA CHARS AND PRINT ! 9248: 20434,20437c19051,19052 ! 9249: < JSR PRTST PLACE IT ! 9250: < JSR PRTNL PRINT IT ! 9251: < JSR PRTNL PRINT A BLANK ! 9252: < JSR PRTNL AND ANOTHER ! 9253: --- ! 9254: > JSR PRTFB PLACE IT AND A BLANK ! 9255: > JSR PRTFH AND ANOTHER ! 9256: 20443c19058 ! 9257: < PRP05 MOV (XS)+,XR RESTORE XR ! 9258: --- ! 9259: > PTPG5 MOV (XS)+,XR RESTORE XR ! 9260: 20447c19062 ! 9261: < PRP06 EXI RETURN ! 9262: --- ! 9263: > PTPG6 EXI RETURN ! 9264: 20451c19066 ! 9265: < * PRTPS - PRINT PAGE WITH TEST FOR STANDARD LISTING OPTION ! 9266: --- ! 9267: > * PRTPS -- PRINT PAGE WITH TEST FOR STANDARD LISTING OPTION ! 9268: 20463a19079,19089 ! 9269: > * ! 9270: > * PRTSF -- PRINT STRING TO STD PRINTER AND FLUSH BFR ! 9271: > * ! 9272: > * (XR) STRING TO PRINT ! 9273: > * JSR PRTSF CALL TO PRINT AND FLUSH ! 9274: > * ! 9275: > PRTSF PRC E,0 ENTRY POINT ! 9276: > JSR PRTST PRINT STRING ! 9277: > JSR PRTFH FLUSH BUFFER ! 9278: > EXI RETURN TO CALLER ! 9279: > ENP END PROCEDURE PRTSF ! 9280: 20512c19138 ! 9281: < * PRTST -- PRINT STRING ! 9282: --- ! 9283: > * PRTST -- PRINT STRING TO STANDARD FILE ! 9284: 20514c19140 ! 9285: < * PRTST PLACES A STRING OF CHARACTERS IN THE PRINT BUFFER ! 9286: --- ! 9287: > * PLACE A STRING OF CHARACTERS IN THE STANDARD PRINT BUFFER ! 9288: 20516,20517d19141 ! 9289: < * SEE PRTNL FOR GLOBAL LOCATIONS USED ! 9290: < * ! 9291: 20519a19144,19147 ! 9292: > * IF GLOBAL TTOUS IS NON-ZERO, STRING IS SENT TO TERMINAL ! 9293: > * INSTEAD OF STANDARD OUTPUT FILE. ! 9294: > * IF GLOBAL TTLST IS NON-ZERO, STRING IS SENT TO ! 9295: > * TERMINAL AS WELL AS STANDARD OUTPUT FILE ! 9296: 20526c19154 ! 9297: < BNZ HEADP,PRST0 WERE HEADERS PRINTED ! 9298: --- ! 9299: > BNZ HEADP,PTST1 WERE HEADERS PRINTED ! 9300: 20529c19157 ! 9301: < * CALL SYSPR ! 9302: ! 9303: ! 9304: ! 9305: ! 9306: ! 9307: ! 9308: ! 9309: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 142 ! 9310: ! 9311: ! 9312: --- ! 9313: > * HEADERS DEALT WITH ! 9314: 20531c19159,19165 ! 9315: < PRST0 MOV WA,PRSVA SAVE WA ! 9316: --- ! 9317: > PTST1 BZE PRLEN,PTST7 SKIP IF NO O/P POSSIBLE ! 9318: > BNZ PRPUT,PTST2 SKIP IF PUTTING IS OK ! 9319: > BZE TTLST,PTST7 SKIP OUT IF NOT ERROR TO TERML ! 9320: > * ! 9321: > * KEEP REGISTERS ! 9322: > * ! 9323: > PTST2 MOV WA,PRSVA SAVE WA ! 9324: 20537c19171 ! 9325: < PRST1 MOV SCLEN(XR),WA LOAD STRING LENGTH ! 9326: --- ! 9327: > PTST3 MOV SCLEN(XR),WA LOAD STRING LENGTH ! 9328: 20539c19173 ! 9329: < BZE WA,PRST4 JUMP TO EXIT IF NONE LEFT ! 9330: --- ! 9331: > BZE WA,PTST6 JUMP TO EXIT IF NONE LEFT ! 9332: 20545,20546c19179,19180 ! 9333: < BNZ XR,PRST2 SKIP IF ROOM LEFT ON THIS LINE ! 9334: < JSR PRTNL ELSE PRINT THIS LINE ! 9335: --- ! 9336: > BNZ XR,PTST4 SKIP IF ROOM LEFT ON THIS LINE ! 9337: > JSR PRTFH PRINT THIS LINE ! 9338: 20554c19188 ! 9339: < PRST2 BLO WA,XR,PRST3 JUMP IF ROOM FOR REST OF STRING ! 9340: --- ! 9341: > PTST4 BLO WA,XR,PTST5 JUMP IF ROOM FOR REST OF STRING ! 9342: 20559c19193 ! 9343: < PRST3 MOV PRBUF,XR POINT TO PRINT BUFFER ! 9344: --- ! 9345: > PTST5 MOV PRBUF,XR POINT TO PRINT BUFFER ! 9346: 20564d19197 ! 9347: < MOV WB,PRSVC PRESERVE CHAR COUNTER ! 9348: 20566d19198 ! 9349: < MOV PRSVC,WB RECOVER CHAR COUNTER ! 9350: 20569c19201 ! 9351: < BRN PRST1 LOOP BACK TO TEST FOR MORE ! 9352: --- ! 9353: > BRN PTST3 LOOP BACK TO TEST FOR MORE ! 9354: 20573c19205 ! 9355: < PRST4 MOV PRSVB,WB RESTORE ENTRY WB ! 9356: --- ! 9357: > PTST6 MOV PRSVB,WB RESTORE ENTRY WB ! 9358: 20575,20577d19206 ! 9359: < EXI RETURN TO PRTST CALLER ! 9360: < ENP END PROCEDURE PRTST ! 9361: < EJC ! 9362: 20579c19208 ! 9363: < * PRTTR -- PRINT TO TERMINAL ! 9364: --- ! 9365: > * RETURN POINT ! 9366: 20581,20582c19210,19211 ! 9367: < * CALLED TO PRINT CONTENTS OF STANDARD PRINT BUFFER TO ! 9368: ! 9369: ! 9370: ! 9371: ! 9372: ! 9373: ! 9374: ! 9375: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 143 ! 9376: ! 9377: ! 9378: < * ONLINE TERMINAL. CLEARS BUFFER DOWN AND RESETS PROFS. ! 9379: --- ! 9380: > PTST7 EXI RETURN TO PRTST CALLER ! 9381: > ENP END PROCEDURE PRTST ! 9382: 20584,20585c19213 ! 9383: < * JSR PRTTR CALL FOR PRINT ! 9384: < * (WA,WB) DESTROYED ! 9385: --- ! 9386: > * PRTVF -- PLACE A VALUE AND FLUSH STANDARD BUFFER ! 9387: 20587,20593c19215,19216 ! 9388: < PRTTR PRC E,0 ENTRY POINT ! 9389: < MOV XR,-(XS) SAVE XR ! 9390: < JSR PRTIC PRINT BUFFER CONTENTS ! 9391: < MOV PRBUF,XR POINT TO PRINT BFR TO CLEAR IT ! 9392: < LCT WA,PRLNW GET BUFFER LENGTH ! 9393: < ADD *SCHAR,XR POINT PAST SCBLK HEADER ! 9394: < MOV NULLW,WB GET BLANKS ! 9395: --- ! 9396: > * (XR) VALUE TO PRINT ! 9397: > * JSR PRTVF CALL TO PRINT AND FLUSH ! 9398: 20595,20602c19218,19222 ! 9399: < * LOOP TO CLEAR BUFFER ! 9400: < * ! 9401: < PRTT1 MOV WB,(XR)+ CLEAR A WORD ! 9402: < BCT WA,PRTT1 LOOP ! 9403: < ZER PROFS RESET PROFS ! 9404: < MOV (XS)+,XR RESTORE XR ! 9405: < EXI RETURN ! 9406: < ENP END PROCEDURE PRTTR ! 9407: --- ! 9408: > PRTVF PRC E,0 ENTRY POINT ! 9409: > JSR PRTVL PLACE VALUE ! 9410: > JSR PRTFH FLUSH BUFFER ! 9411: > EXI RETURN TO CALLER ! 9412: > ENP END PROCEDURE PRTVF ! 9413: 20676c19296 ! 9414: < * VCBLK, TBBLK, BCBLK MERGE HERE FOR ) BLANK NUMBER IDVAL ! 9415: --- ! 9416: > * VCBLK, TBBLK MERGE HERE FOR ) BLANK NUMBER IDVAL ! 9417: 20814a19435,19536 ! 9418: > EJC ! 9419: > * ! 9420: > * PTTFH -- FLUSH TERMINAL BUFFER ! 9421: > * ! 9422: > * PRINTS THE CONTENTS OF THE TTY BUFFER, RESETS ! 9423: > * THE BUFFER TO ALL BLANKS AND RESETS THE POINTER. ! 9424: > * ! 9425: > * JSR PTTFH CALL TO FLUSH BUFFER ! 9426: > * ! 9427: > PTTFH PRC E,0 ENTRY POINT ! 9428: > BZE TTLEN,PTTF2 SKIP IF NO TERMINAL ! 9429: > MOV XL,-(XS) SAVE XL ! 9430: > MOV XR,-(XS) SAVE XR ! 9431: > MOV WA,-(XS) SAVE WA ! 9432: > MOV WC,-(XS) SAVE WC ! 9433: > MOV TTBUF,XR LOAD POINTER TO BUFFER ! 9434: ! 9435: ! 9436: ! 9437: ! 9438: ! 9439: ! 9440: ! 9441: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 144 ! 9442: ! 9443: ! 9444: > MOV TTOFS,WC LOAD NUMBER OF CHARS IN BUFFER ! 9445: > JSR SYSPI CALL SYSTEM PRINT ROUTINE ! 9446: > PPM PTTF3 JUMP IF FAILED ! 9447: > PPM EROSI STOP IF ERROR ! 9448: > * ! 9449: > * BLANK BUFFER ! 9450: > * ! 9451: > PTTF1 MOV TTBLK,XL POINT TO BLANKING STRING ! 9452: > MOV TTCHS,XR POINT TO BUFFER ! 9453: > MOV TTCMV,WA COUNT OF BAUS TO MOVE ! 9454: > MVW MOVE BLANKS INTO BUFFER ! 9455: > ZER TTOFS RESET OFFSET ! 9456: > MOV (XS)+,WC RESTORE WC ! 9457: > MOV (XS)+,WA RECOVER WA ! 9458: > MOV (XS)+,XR RESTORE XR ! 9459: > MOV (XS)+,XL RESTORE XL ! 9460: > * ! 9461: > * RETURN POINT ! 9462: > * ! 9463: > PTTF2 EXI RETURN TO CALLER ! 9464: > * ! 9465: > * A FAILURE SUCH AS FILE OVERFILLED OCCURRED ! 9466: > * ! 9467: > PTTF3 BZE STAGX,PTTF1 IGNORE IF COMPILE TIME ! 9468: > BRN EXFAL ELSE CAUSE STMT FAILURE ! 9469: > ENP END PROCEDURE ! 9470: > EJC ! 9471: > * ! 9472: > * PTTST -- PRINT STRING TO TERMINAL ! 9473: > * ! 9474: > * PLACE A STRING OF CHARACTERS IN THE TERMINAL BUFFER ! 9475: > * ! 9476: > * NOTE THAT THE FIRST WORD OF THE BLOCK (NORMALLY B$SCL) ! 9477: > * IS NOT USED AND NEED NOT BE SET CORRECTLY (SEE PRTVN) ! 9478: > * ! 9479: > * (XR) STRING TO BE PRINTED ! 9480: > * JSR PTTST CALL TO PRINT STRING ! 9481: > * (TTOFS) UPDATED PAST CHARS PLACED ! 9482: > * ! 9483: > PTTST PRC E,0 ENTRY POINT ! 9484: > BZE TTLEN,PTTS5 SKIP IF NO TERMINAL ! 9485: > MOV WA,PRTVA SAVE WA ! 9486: > MOV WB,PRTVB SAVE WB ! 9487: > ZER WB SET CHARS PRINTED COUNT TO ZERO ! 9488: > * ! 9489: > * LOOP TO PRINT SUCCESSIVE LINES FOR LONG STRING ! 9490: > * ! 9491: > PTTS1 MOV SCLEN(XR),WA LOAD STRING LENGTH ! 9492: > SUB WB,WA SUBTRACT COUNT OF CHARS ALREADY OUT ! 9493: > BZE WA,PTTS4 JUMP TO EXIT IF NONE LEFT ! 9494: > MOV XL,-(XS) ELSE STACK ENTRY XL ! 9495: > MOV XR,-(XS) SAVE ARGUMENT ! 9496: > MOV XR,XL COPY FOR EVENTUAL MOVE ! 9497: > MOV TTLEN,XR LOAD BUFFER LENGTH ! 9498: > SUB TTOFS,XR GET CHARS LEFT IN BUFFER ! 9499: > BNZ XR,PTTS2 SKIP IF ROOM LEFT ON THIS LINE ! 9500: ! 9501: ! 9502: ! 9503: ! 9504: ! 9505: ! 9506: ! 9507: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 145 ! 9508: ! 9509: ! 9510: > JSR PTTFH ELSE PRINT THIS LINE ! 9511: > MOV TTLEN,XR AND SET FULL WIDTH AVAILABLE ! 9512: > * ! 9513: > * HERE WITH CHARS TO PRINT AND SOME ROOM IN BUFFER ! 9514: > * ! 9515: > PTTS2 BLO WA,XR,PTTS3 JUMP IF ROOM FOR REST OF STRING ! 9516: > MOV XR,WA ELSE SET TO FILL LINE ! 9517: > * ! 9518: > * MERGE HERE WITH CHARACTER COUNT IN WA ! 9519: > * ! 9520: > PTTS3 MOV TTBUF,XR POINT TO PRINT BUFFER ! 9521: > PLC XL,WB POINT TO LOCATION IN STRING ! 9522: > PSC XR,TTOFS POINT TO LOCATION IN BUFFER ! 9523: > ADD WA,WB BUMP STRING CHARS COUNT ! 9524: > ADD WA,TTOFS BUMP BUFFER POINTER ! 9525: > MVC MOVE CHARACTERS TO BUFFER ! 9526: > MOV (XS)+,XR RESTORE ARGUMENT POINTER ! 9527: > MOV (XS)+,XL RESTORE ENTRY XL ! 9528: > BRN PTTS1 LOOP BACK TO TEST FOR MORE ! 9529: > EJC ! 9530: > * ! 9531: > * HERE TO EXIT AFTER PRINTING STRING ! 9532: > * ! 9533: > PTTS4 MOV PRTVB,WB RESTORE ENTRY WB ! 9534: > MOV PRTVA,WA RESTORE ENTRY WA ! 9535: > * ! 9536: > * RETURN POINT ! 9537: > * ! 9538: > PTTS5 EXI RETURN TO PTTST CALLER ! 9539: > ENP END PROCEDURE PTTST ! 9540: 20851a19574,19578 ! 9541: > * THE GLOBAL FLAG RDRER IS SET JUST BEFORE THE READ, AND ! 9542: > * CLEARED AFTER IT. THIS IS SO THAT IN THE EVENT SYSRD ! 9543: > * OR SYSRI TAKE AN EROSI EXIT, THE ERROR APPENDAGE CAN ! 9544: > * RECOGNIZE THE SITUATION AND TAKE APPROPRIATE ACTION. ! 9545: > * ! 9546: 20859,20861c19586,19596 ! 9547: < BNZ XR,READ3 EXIT IF ALREADY READ ! 9548: < BNE STAGE,=STGIC,READ3 EXIT IF NOT INITIAL COMPILE ! 9549: < MOV CSWIN,WA MAX READ LENGTH ! 9550: --- ! 9551: > BNZ XR,READ5 EXIT IF ALREADY READ ! 9552: > * ! 9553: > * MERGE FROM -COPY EOF TO TRY READ ! 9554: > * ! 9555: > READ0 BEQ STAGE,=STGIC,READ1 READ IF INITIAL COMPILE ! 9556: > BZE R$COP,READ6 ELSE EXIT IF NO -COPY IN FORCE ! 9557: > * ! 9558: > * ATTEMPT READ ! 9559: > * ! 9560: > READ1 MOV CSWIN,WA MAX READ LENGTH ! 9561: > MNZ RDRER NOTE IN-READR IN CASE EROSI ! 9562: 20863,20864c19598,19612 ! 9563: < JSR SYSRD READ INPUT IMAGE ! 9564: < PPM READ4 JUMP IF END OF FILE ! 9565: --- ! 9566: ! 9567: ! 9568: ! 9569: ! 9570: ! 9571: ! 9572: ! 9573: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 146 ! 9574: ! 9575: ! 9576: > BZE TTINS,READ2 SKIP IF STANDARD INPUT FILE ! 9577: > JSR SYSRI READ FROM TERMINAL ! 9578: > PPM READ7 FAIL ! 9579: > PPM EROSI ERROR ! 9580: > BRN READ3 MERGE ! 9581: > * ! 9582: > * READ FROM STANDARD FILE ! 9583: > * ! 9584: > READ2 JSR SYSRD READ INPUT IMAGE ! 9585: > PPM READ7 JUMP IF END OF FILE ! 9586: > PPM EROSI ERROR RETURN ! 9587: > * ! 9588: > * MERGE ! 9589: > * ! 9590: > READ3 ZER RDRER NOTE NOT-IN-READR FOR ERROR RTN ! 9591: 20866c19614 ! 9592: < BLE SCLEN(XR),CSWIN,READ1 USE SMALLER OF STRING LNTH .. ! 9593: --- ! 9594: > BLE SCLEN(XR),CSWIN,READ4 USE SMALLER OF STRING LNTH.. ! 9595: 20871c19619 ! 9596: < READ1 JSR TRIMR TRIM TRAILING BLANKS ! 9597: --- ! 9598: > READ4 JSR TRIMR TRIM TRAILING BLANKS ! 9599: 20875c19623 ! 9600: < READ2 MOV XR,R$CNI STORE COPY OF POINTER ! 9601: --- ! 9602: > READ5 MOV XR,R$CNI STORE COPY OF POINTER ! 9603: 20879c19627 ! 9604: < READ3 EXI RETURN TO READR CALLER ! 9605: --- ! 9606: > READ6 EXI RETURN TO READR CALLER ! 9607: 20883c19631,19632 ! 9608: < READ4 MOV XR,DNAMP POP UNUSED SCBLK ! 9609: --- ! 9610: > READ7 ZER RDRER NOTE NOT-IN-READR FOR ERR ! 9611: > MOV XR,DNAMP POP UNUSED SCBLK ! 9612: 20885c19634,19636 ! 9613: < BRN READ2 MERGE ! 9614: --- ! 9615: > BZE R$COP,READ5 SKIP IF NO -COPY IN FORCE ! 9616: > JSR COPND CALL TO END THIS -COPY (EOF) ! 9617: > BRN READ0 TRY AGAIN ! 9618: 20886a19638 ! 9619: > .IF .CASL ! 9620: 20888a19641,19724 ! 9621: > * SBSCC -- BUILD SUBSTRING WITH CASE CONVERSION ! 9622: > * ! 9623: > * (XL) PTR TO SCBLK CONTAINING CHARS ! 9624: > * (WA) CHAR COUNT ! 9625: > * (WB) OFFSET TO FIRST CHAR IN SCBLK ! 9626: > * JSR SBSCC CALL TO BUILD SUBSTRING ! 9627: > * (XR) PTR TO NEW SCBLK WITH SUBSTRING ! 9628: > * (WA,WB,WC,XL,IA) DESTROYED ! 9629: > * ! 9630: > * IF OPTION .CPLC IS SELECTED (PREFER LOWER CASE), TARGET ! 9631: > * CASE IS LOWER CASE, OTHERWISE IT IS UPPER CASE. ! 9632: ! 9633: ! 9634: ! 9635: ! 9636: ! 9637: ! 9638: ! 9639: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 147 ! 9640: ! 9641: ! 9642: > * ! 9643: > SBSCC PRC E,0 ENTRY POINT ! 9644: > BZE WA,SBSC4 JUMP IF NULL SUBSTRING ! 9645: > JSR ALOCS ELSE ALLOCATE SCBLK ! 9646: > MOV WC,WA MOVE NUMBER OF CHARACTERS ! 9647: > MOV XR,WC SAVE PTR TO NEW SCBLK ! 9648: > PLC XL,WB PREPARE TO LOAD CHARS FROM OLD BLK ! 9649: > PSC XR PREPARE TO STORE CHARS IN NEW BLK ! 9650: > LCT WA,WA TO COUNT ROUND LOOP ! 9651: > * ! 9652: > * LOOP TO COPY AND TRANSLATE CHARS ! 9653: > * ! 9654: > SBSC1 LCH WB,(XL)+ GET CHAR ! 9655: > .IF .CPLC ! 9656: > BGT WB,=CH$L$,SBSC2 SKIP IF NOT UC LETTER ! 9657: > BLT WB,=CH$LA,SBSC2 SKIP IF NOT UC LETTER ! 9658: > .IF .CSCV ! 9659: > CUL WB CONVERT FROM UC TO LC ! 9660: > .ELSE ! 9661: > ADD =DFA$A,WB CONVERT FROM UC TO LC ! 9662: > .FI ! 9663: > .ELSE ! 9664: > BGT WB,=CH$$$,SBSC2 SKIP IF NOT A LC LETTER ! 9665: > BLT WB,=CH$$A,SBSC2 SKIP IF NOT A LC LETTER ! 9666: > .IF .CSCV ! 9667: > CLU WB CONVERT FROM LC TO UC ! 9668: > .ELSE ! 9669: > SUB =DFA$A,WB CONVERT FROM LC TO UC ! 9670: > .FI ! 9671: > .FI ! 9672: > * ! 9673: > * STORE CHAR IN NEW SUBSTRING ! 9674: > * ! 9675: > SBSC2 SCH WB,(XR)+ STORE CHAR ! 9676: > BCT WA,SBSC1 LOOP ! 9677: > MOV WC,XR RESTORE SCBLK POINTER ! 9678: > * ! 9679: > * RETURN POINT ! 9680: > * ! 9681: > SBSC3 ZER XL CLEAR GARBAGE POINTER IN XL ! 9682: > EXI RETURN TO SBSCC CALLER ! 9683: > * ! 9684: > * HERE FOR NULL SUBSTRING ! 9685: > * ! 9686: > SBSC4 MOV =NULLS,XR SET NULL STRING AS RESULT ! 9687: > BRN SBSC3 RETURN ! 9688: > ENP END PROCEDURE SBSCC ! 9689: > EJC ! 9690: > * ! 9691: > * SBSTG -- BUILD SUBSTRING POSSIBLY CONVERTING CASE ! 9692: > * ! 9693: > * (XL) PTR TO SCBLK CONTAINING CHARS ! 9694: > * (WA) CHAR COUNT ! 9695: > * (WB) OFFSET TO FIRST CHAR IN SCBLK ! 9696: > * JSR SBSTG CALL TO BUILD SUBSTRING ! 9697: > * (XR) PTR TO NEW SCBLK WITH SUBSTRING ! 9698: ! 9699: ! 9700: ! 9701: ! 9702: ! 9703: ! 9704: ! 9705: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 148 ! 9706: ! 9707: ! 9708: > * (WA,WB,WC,XL,IA) DESTROYED ! 9709: > * ! 9710: > * IF CASE IS TO BE IGNORED (-CASEIG OR .CSIG), SUBSTRING ! 9711: > * IS CONVERTED TO PREFERRED CASE (DEFAULT UPPER), ! 9712: > * OTHERWISE CASE IS LEFT ALONE. ! 9713: > * ! 9714: > SBSTG PRC E,0 ENTRY POINT ! 9715: > BZE CSWCI,SBSG1 SKIP IF CASE NOT IGNORED ! 9716: > JSR SBSCC CONVERT TO IGNORE CASE ! 9717: > EXI RETURN TO CALLER ! 9718: > * ! 9719: > SBSG1 JSR SBSTR READ SUBSTRING IN MIXED CASE ! 9720: > EXI RETURN TO CALLER ! 9721: > ENP END PROCEDURE SBSTG ! 9722: > .FI ! 9723: > EJC ! 9724: > * ! 9725: 20891c19727 ! 9726: < * (XL) PTR TO SCBLK/BFBLK WITH CHARS ! 9727: --- ! 9728: > * (XL) PTR TO SCBLK CONTAINING CHARS ! 9729: 20896d19731 ! 9730: < * (XL) ZERO ! 9731: 21086,21087c19921 ! 9732: < .IF .CUCF ! 9733: < BLO =CFP$U,XR,SCN07 QUICK CHECK FOR OTHER CHAR ! 9734: --- ! 9735: > BGE XR,=CFP$U,SCN07 QUICK CHECK FOR OTHER CHAR ! 9736: 21089,21091d19922 ! 9737: < .ELSE ! 9738: < BSW XR,CFP$A,SCN07 SWITCH ON SCANNED CHARACTER ! 9739: < .FI ! 9740: 21187,21190c20018,20021 ! 9741: < IFF CH$PL,SCN33 PLUS ! 9742: < IFF CH$MN,SCN34 MINUS ! 9743: < IFF CH$NT,SCN35 NOT ! 9744: < IFF CH$DL,SCN36 DOLLAR ! 9745: --- ! 9746: > IFF CH$PL,SCN34 PLUS ! 9747: > IFF CH$MN,SCN35 MINUS ! 9748: > IFF CH$NT,SCN36 NOT ! 9749: > IFF CH$DL,SCN33 DOLLAR ! 9750: 21206c20037 ! 9751: < ERB 230,SYNTAX ERROR. ILLEGAL CHARACTER ! 9752: --- ! 9753: > ERB 232,SYNTAX ERROR. ILLEGAL CHARACTER ! 9754: 21260c20091 ! 9755: < SCN14 ERB 231,SYNTAX ERROR. INVALID NUMERIC ITEM ! 9756: --- ! 9757: > SCN14 ERB 233,SYNTAX ERROR. INVALID NUMERIC ITEM ! 9758: 21263a20095,20097 ! 9759: > .IF .CASL ! 9760: > SCN15 JSR SBSTG BUILD STRING NAME OF VARIABLE ! 9761: > .ELSE ! 9762: 21264a20099 ! 9763: > .FI ! 9764: ! 9765: ! 9766: ! 9767: ! 9768: ! 9769: ! 9770: ! 9771: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 149 ! 9772: ! 9773: ! 9774: 21305c20140 ! 9775: < ERB 232,SYNTAX ERROR. UNMATCHED STRING QUOTE ! 9776: --- ! 9777: > ERB 234,SYNTAX ERROR. UNMATCHED STRING QUOTE ! 9778: 21381,21382c20216,20217 ! 9779: < * THE FIRST THREE ENTRIES ARE SPECIAL SINCE THEY CAN OCCUR ! 9780: < * AS PART OF A VARIABLE NAME (.) OR CONSTANT (.+-). ! 9781: --- ! 9782: > * THE FIRST FOUR ENTRIES ARE SPECIAL SINCE THEY CAN OCCUR ! 9783: > * AS PART OF A VARIABLE NAME (.$) OR CONSTANT (.+-). ! 9784: 21387c20222,20225 ! 9785: < SCN33 BZE WC,SCN09 PLUS CAN BE PART OF CONSTANT ! 9786: --- ! 9787: > SCN33 BZE WB,SCN09 DOLLAR CAN BE PART OF NAME ! 9788: > ADD WB,WC ELSE BUMP POINTER ! 9789: > * ! 9790: > SCN34 BZE WC,SCN09 PLUS CAN BE PART OF CONSTANT ! 9791: 21391c20229 ! 9792: < SCN34 BZE WC,SCN09 MINUS CAN BE PART OF CONSTANT ! 9793: --- ! 9794: > SCN35 BZE WC,SCN09 MINUS CAN BE PART OF CONSTANT ! 9795: 21393a20232,20234 ! 9796: > LCH XR,(XL) GET NEXT CHARACTER ! 9797: > BLT XR,=CH$D0,SCN36 SKIP IF NOT DIGIT ! 9798: > BLE XR,=CH$D9,SCN08 JUMP IF DIGIT ! 9799: 21395,21396c20236 ! 9800: < SCN35 ADD WB,WC NOT ! 9801: < SCN36 ADD WB,WC DOLLAR ! 9802: --- ! 9803: > SCN36 ADD WB,WC NOT ! 9804: 21405a20246 ! 9805: > EJC ! 9806: 21406a20248,20249 ! 9807: > * SCANE (CONTINUED) ! 9808: > * ! 9809: 21439c20282 ! 9810: < SCN48 ERB 233,SYNTAX ERROR. INVALID USE OF OPERATOR ! 9811: --- ! 9812: > SCN48 ERB 235,SYNTAX ERROR. INVALID USE OF OPERATOR ! 9813: 21494c20337 ! 9814: < ERB 234,SYNTAX ERROR. GOTO FIELD INCORRECT ! 9815: --- ! 9816: > ERB 236,SYNTAX ERROR. GOTO FIELD INCORRECT ! 9817: 21500,21501c20343,20344 ! 9818: < MOV =OPDVN,WA POINT TO OPDV FOR COMPLEX GOTO ! 9819: < BLE XR,STATB,SCNG3 JUMP IF NOT IN STATIC (SGD15) ! 9820: --- ! 9821: > MOV =OPDVN,WA ELSE POINT TO OPDV FOR COMPLEX GOTO ! 9822: > BLE XR,STATB,SCNG3 JUMP IF NOT IN STATIC ! 9823: 21503c20346 ! 9824: < BRN SCNG3 COMPLEX GOTO - MERGE ! 9825: --- ! 9826: > BRN SCNG3 AND MERGE ! 9827: 21571c20414 ! 9828: < * THE SORT USED IS HEAPSORT, FUNDAMENTALS OF DATA STRUCTURE ! 9829: --- ! 9830: ! 9831: ! 9832: ! 9833: ! 9834: ! 9835: ! 9836: ! 9837: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 150 ! 9838: ! 9839: ! 9840: > * THE SORT USED IS HEAPSORT, FUNDAMENTALS OF DATA STRUCTURES, ! 9841: 21576c20419 ! 9842: < * SORT ARRAY) CONTAINING AT ITS HIGH ADDRESS END, BYTE ! 9843: --- ! 9844: > * SORT ARRAY) CONTAINING AT ITS HIGH ADDRESS END, BAU ! 9845: 21588a20432,20433 ! 9846: > * GIVES ERROR MESSAGES FOR INCORRECT ARGS, RETURNS EXI 1 ! 9847: > * FOR EMPTY TABLE. ! 9848: 21593a20439 ! 9849: > * PPM LOC FAIL RETURN FOR EMPTY TABLE ! 9850: 21600c20446 ! 9851: < SORTA PRC N,0 ENTRY POINT ! 9852: --- ! 9853: > SORTA PRC N,1 ENTRY POINT ! 9854: 21606a20453,20455 ! 9855: > MOV (XR),WA GET ARG TYPE ! 9856: > BEQ WA,=B$ART,SRT00 SKIP IF ARRAY ! 9857: > BNE WA,=B$TBT,SRT16 ERROR IF NOT TABLE ! 9858: 21608,21611c20457,20463 ! 9859: < PPM SRT16 FAIL ! 9860: < MOV XR,-(XS) STACK PTR TO RESULTING KEY ARRAY ! 9861: < MOV XR,-(XS) ANOTHER COPY FOR COPYB ! 9862: < JSR COPYB GET COPY ARRAY FOR SORTING INTO ! 9863: --- ! 9864: > PPM SRT18 FAIL ! 9865: > * ! 9866: > * MAKE COPY OF ARRAY ! 9867: > * ! 9868: > SRT00 MOV XR,-(XS) STACK PTR TO RESULTING KEY ARRAY ! 9869: > MOV XR,-(XS) ANOTHER COPY FOR CBLCK ! 9870: > JSR CBLCK GET COPY ARRAY FOR SORTING INTO ! 9871: 21619c20471 ! 9872: < ERR 257,ERRONEOUS 2ND ARG IN SORT/RSORT OF VECTOR ! 9873: --- ! 9874: > ERR 237,ERRONEOUS 2ND ARG IN SORT/RSORT OF VECTOR ! 9875: 21627c20479 ! 9876: < SUB *VCSI$,WA GET NO. OF ENTRIES, N (IN BYTES) ! 9877: --- ! 9878: > SUB *VCSI$,WA GET NO. OF ENTRIES, N (IN BAUS) ! 9879: 21635c20487 ! 9880: < MOV *ARVLS,WB OFFSET TO FIRST VALUE IF ONE ! 9881: --- ! 9882: > MOV *ARVLS,WB OFFSET TO FIRST VALUE IF ONE DIM. ! 9883: 21637,21639c20489,20491 ! 9884: < BEQ ARNDM(XL),=NUM01,SRT04 JUMP IN FACT IF ONE DIM. ! 9885: < BNE ARNDM(XL),=NUM02,SRT16 FAIL UNLESS TWO DIMENS ! 9886: < LDI ARLB2(XL) GET LOWER BOUND 2 AS DEFAULT ! 9887: --- ! 9888: > BEQ ARNDM(XL),=NUM01,SRT04 JUMP IF IN FACT ONE DIMENSION ! 9889: > BNE ARNDM(XL),=NUM02,SRT16 FAIL UNLESS TWO DIMENSIONAL ! 9890: > LDI ARLB2(XL) GET LOWER BOUND 2 AS DEFAULT COLUMN ! 9891: 21662c20514 ! 9892: < WTB WA CONVERT TO BYTES ! 9893: --- ! 9894: > WTB WA CONVERT TO BAUS ! 9895: 21679c20531 ! 9896: ! 9897: ! 9898: ! 9899: ! 9900: ! 9901: ! 9902: ! 9903: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 151 ! 9904: ! 9905: ! 9906: < * WA = NUMBER OF ITEMS, N (CONVERTED TO BYTES). ! 9907: --- ! 9908: > * WA = NUMBER OF ITEMS, N (CONVERTED TO BAUS). ! 9909: 21714c20566 ! 9910: < BTW WC CONVERT FROM BYTES ! 9911: --- ! 9912: > BTW WC CONVERT FROM BAUS ! 9913: 21726c20578 ! 9914: < * (SRTSN) NUMBER OF ITEMS TO SORT, N (BYTES) ! 9915: --- ! 9916: > * (SRTSN) NUMBER OF ITEMS TO SORT, N (BAUS) ! 9917: 21732c20584 ! 9918: < WTB WC CONVERT BACK TO BYTES ! 9919: --- ! 9920: > WTB WC CONVERT BACK TO BAUS ! 9921: 21742c20594 ! 9922: < * ITEM, SINCE ALGORITHM INITIALISES IT AS, AND THEN MAINTAI ! 9923: --- ! 9924: > * ITEM, SINCE ALGORITHM INITIALISES IT AS, AND THEN MAINTAINS ! 9925: 21799,21800c20651,20656 ! 9926: < SRT16 ERB 256,SORT/RSORT 1ST ARG NOT SUITABLE ARRAY OR TABLE ! 9927: < SRT17 ERB 258,SORT/RSORT 2ND ARG OUT OF RANGE OR NON-INTEGER ! 9928: --- ! 9929: > SRT16 ERB 238,SORT/RSORT 1ST ARG NOT SUITABLE ARRAY OR TABLE ! 9930: > SRT17 ERB 239,SORT/RSORT 2ND ARG OUT OF RANGE OR NON-INTEGER ! 9931: > * ! 9932: > * SOFT FAIL RETURN ! 9933: > * ! 9934: > SRT18 EXI 1 RETURN ! 9935: 21964c20820 ! 9936: < WTB WC CONVERT TO BYTES ! 9937: --- ! 9938: > WTB WC CONVERT TO BAUS ! 9939: 21993c20849 ! 9940: < * (WA) MAX ARRAY INDEX, N (IN BYTES) ! 9941: --- ! 9942: > * (WA) MAX ARRAY INDEX, N (IN BAUS) ! 9943: 22045c20901 ! 9944: < WTB WC CONVERT BACK TO BYTES ! 9945: --- ! 9946: > WTB WC CONVERT BACK TO BAUS ! 9947: 22057c20913 ! 9948: < WTB WC CONVERT BACK TO BYTES ! 9949: --- ! 9950: > WTB WC CONVERT BACK TO BAUS ! 9951: 22123a20980,20982 ! 9952: > * POSSIBILITY OF OVERFLOW EXIST ON TWOS COMPLEMENT ! 9953: > * MACHINE IF HASH SOURCE IS MOST NEGATIVE INTEGER OR IS ! 9954: > * A REAL HAVING THE SAME BIT PATTERN. ! 9955: 22149c21008 ! 9956: < WTB WC CONVERT TO BYTE OFFSET ! 9957: --- ! 9958: > WTB WC CONVERT TO BAU OFFSET ! 9959: 22202a21062 ! 9960: > MOV XR,WB COPY DEFAULT VALUE ! 9961: 22211c21071 ! 9962: ! 9963: ! 9964: ! 9965: ! 9966: ! 9967: ! 9968: ! 9969: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 152 ! 9970: ! 9971: ! 9972: < MOV =NULLS,TEVAL(XR) SET NULL AS INITIAL VALUE ! 9973: --- ! 9974: > MOV WB,TEVAL(XR) SET DEFAULT AS INITIAL VALUE ! 9975: 22214c21074 ! 9976: < ICA XS POP PAST NAME/VALUE INDICATOR ! 9977: --- ! 9978: > MOV (XS)+,WB RESTORE NAME/VALUE INDICATOR ! 9979: 22235a21096 ! 9980: > * PPM LOC FAIL STOPTR IF NON-EXISTENT TRACE ! 9981: 22239c21100 ! 9982: < TRACE PRC N,2 ENTRY POINT ! 9983: --- ! 9984: > TRACE PRC N,3 ENTRY POINT ! 9985: 22244,22246c21105,21112 ! 9986: < .IF .CULC ! 9987: < FLC WA FOLD TO UPPER CASE ! 9988: < .FI ! 9989: --- ! 9990: > .IF .CASL ! 9991: > BLT WA,=CH$$A,TRC00 SKIP IF NOT LOWER CASE ! 9992: > SUB =DFA$A,WA CONVERT LOWER TO UPPER CASE ! 9993: > * ! 9994: > * HERE WITH UPPER CASE TRACE TYPE CODE ! 9995: > * ! 9996: > TRC00 MOV (XS),XR LOAD NAME ARGUMENT ! 9997: > .ELSE ! 9998: 22247a21114 ! 9999: > .FI ! 10000: 22253,22255d21119 ! 10001: < .IF .CULC ! 10002: < BZE WA,TRC10 JUMP IF BLANK (VALUE) ! 10003: < .ELSE ! 10004: 22257d21120 ! 10005: < .FI ! 10006: 22273a21137 ! 10007: > MOV XL,WB COPY TRBLK PTR OR 0 ! 10008: 22280a21145 ! 10009: > ORB PFCTR(XR),WB STOPTR FAIL CHECK ! 10010: 22282c21147 ! 10011: < BEQ WA,=CH$LC,EXNUL EXIT WITH NULL IF C (CALL) ! 10012: --- ! 10013: > BEQ WA,=CH$LC,TRC11 RETURN IF LETTER C ! 10014: 22286,22287c21151,21153 ! 10015: < TRC02 MOV XL,PFRTR(XR) SET/RESET RETURN TRACE ! 10016: < EXI RETURN ! 10017: --- ! 10018: > TRC02 ORB PFRTR(XR),WB STOPTR FAIL CHECK ! 10019: > MOV XL,PFRTR(XR) SET/RESET RETURN TRACE ! 10020: > BRN TRC11 RETURN ! 10021: 22292a21159 ! 10022: > MOV (XS)+,WB GET TRBLK OR ZERO ! 10023: 22295a21163 ! 10024: > BRN TRCA4 MERGE ! 10025: 22299,22300c21167,21171 ! 10026: < TRC04 BEQ XL,=STNDL,TRC16 ERROR IF UNDEFINED LABEL ! 10027: < MOV (XS)+,WB GET TRBLK PTR AGAIN ! 10028: ! 10029: ! 10030: ! 10031: ! 10032: ! 10033: ! 10034: ! 10035: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 153 ! 10036: ! 10037: ! 10038: --- ! 10039: > TRC04 BZE WB,TRC12 FAIL IF STOPTR OF UNTRACED LABEL ! 10040: > * ! 10041: > * TEST FOR UNDEFINED LABEL ! 10042: > * ! 10043: > TRCA4 BEQ XL,=STNDL,TRC17 ERROR IF UNDEFINED LABEL ! 10044: 22326c21197 ! 10045: < * MERGE HERE WITH TRBLK SET UP IN WB (OR ZERO) ! 10046: --- ! 10047: > * MERGE HERE WITH TRBLK SET UP IN XL (OR ZERO) ! 10048: 22328a21200 ! 10049: > MOV XL,WB COPY TRBLK PR OR 0 ! 10050: 22334a21207 ! 10051: > ORB R$FNC,WB STOPTR FAIL CHECK ! 10052: 22336c21209 ! 10053: < EXI RETURN ! 10054: --- ! 10055: > BRN TRC11 RETURN ! 10056: 22340,22341c21213,21215 ! 10057: < TRC08 MOV XL,R$ERT SET/RESET ERRTYPE TRACE ! 10058: < EXI RETURN ! 10059: --- ! 10060: > TRC08 ORB R$ERT,WB STOPTR FAIL CHECK ! 10061: > MOV XL,R$ERT SET/RESET ERRTYPE TRACE ! 10062: > BRN TRC11 RETURN ! 10063: 22345,22346c21219,21221 ! 10064: < TRC09 MOV XL,R$STC SET/RESET STCOUNT TRACE ! 10065: < EXI RETURN ! 10066: --- ! 10067: > TRC09 ORB R$STC,WB STOPTR FAIL CHECK ! 10068: > MOV XL,R$STC SET/RESET STCOUNT TRACE ! 10069: > BRN TRC11 RETURN ! 10070: 22355,22357c21230,21234 ! 10071: < MOV (XS)+,WB GET NEW TRBLK PTR AGAIN ! 10072: < ADD XL,WA POINT TO VARIABLE LOCATION ! 10073: < MOV WA,XR COPY VARIABLE POINTER ! 10074: --- ! 10075: > MOV (XS)+,XR GET NEW TRBLK PTR AGAIN ! 10076: > MOV WC,WB COPY TRACE TYPE ! 10077: > JSR TRCHN UPDATE TRACE CHAIN ! 10078: > PPM TRC12 FAIL ! 10079: > EXI RETURN ! 10080: 22359c21236 ! 10081: < * LOOP TO SEARCH TRBLK CHAIN ! 10082: --- ! 10083: > * RETURN AFTER CHECKING STOPTR FAIL CONDITION (WB = 0) ! 10084: 22361,22367c21238,21239 ! 10085: < TRC11 MOV (XR),XL POINT TO NEXT ENTRY ! 10086: < BNE (XL),=B$TRT,TRC13 JUMP IF NOT TRBLK ! 10087: < BLT WC,TRTYP(XL),TRC13 JUMP IF TOO FAR OUT ON CHAIN ! 10088: < BEQ WC,TRTYP(XL),TRC12 JUMP IF THIS MATCHES OUR TYPE ! 10089: < ADD *TRNXT,XL ELSE POINT TO LINK FIELD ! 10090: < MOV XL,XR COPY POINTER ! 10091: < BRN TRC11 AND LOOP BACK ! 10092: --- ! 10093: > TRC11 ZRB WB,TRC12 FAIL IF NECESSARY ! 10094: ! 10095: ! 10096: ! 10097: ! 10098: ! 10099: ! 10100: ! 10101: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 154 ! 10102: ! 10103: ! 10104: > EXI ELSE RETURN ! 10105: 22369c21241 ! 10106: < * HERE TO DELETE AN OLD TRBLK OF THE TYPE WE WERE GIVEN ! 10107: --- ! 10108: > * FAIL STOPTR ! 10109: 22371,22372c21243 ! 10110: < TRC12 MOV TRNXT(XL),XL GET PTR TO NEXT BLOCK OR VALUE ! 10111: < MOV XL,(XR) STORE TO DELETE THIS TRBLK ! 10112: --- ! 10113: > TRC12 EXI 3 FAIL RETURN ! 10114: 22374,22388d21244 ! 10115: < * HERE AFTER DELETING ANY OLD ASSOCIATION OF THIS TYPE ! 10116: < * ! 10117: < TRC13 BZE WB,TRC14 JUMP IF STOPTR CASE ! 10118: < MOV WB,(XR) ELSE LINK NEW TRBLK IN ! 10119: < MOV WB,XR COPY TRBLK POINTER ! 10120: < MOV XL,TRNXT(XR) STORE FORWARD POINTER ! 10121: < MOV WC,TRTYP(XR) STORE APPROPRIATE TRAP TYPE CODE ! 10122: < * ! 10123: < * HERE TO MAKE SURE VRGET,VRSTO ARE SET PROPERLY ! 10124: < * ! 10125: < TRC14 MOV WA,XR RECALL POSSIBLE VRBLK POINTER ! 10126: < SUB *VRVAL,XR POINT BACK TO VRBLK ! 10127: < JSR SETVR SET FIELDS IF VRBLK ! 10128: < EXI RETURN ! 10129: < * ! 10130: 22409c21265 ! 10131: < * (XL) TRFNC OR TRFPT ! 10132: --- ! 10133: > * (XL) TRFNC OR TRTRI ! 10134: 22420,22421c21276,21277 ! 10135: < MOV XL,TRFNC(XR) STORE TRFNC (OR TRFPT) ! 10136: < MOV (XS)+,TRTAG(XR) STORE TRTAG (OR TRFNM) ! 10137: --- ! 10138: > MOV XL,TRFNC(XR) STORE TRFNC (OR TRTRI) ! 10139: > MOV (XS)+,TRTAG(XR) STORE TRTAG (OR TRTER) ! 10140: 22427a21284,21340 ! 10141: > * TRCHN -- UPDATE TRACE BLOCK CHAIN ! 10142: > * ! 10143: > * CALLED WHEN A TRACE BLOCK CHAIN IS TO BE UPDATED BY ! 10144: > * ADDITION OR REMOVAL OF A TRBLK. ! 10145: > * IF A TRBLK OF THE SAME TYPE AS AN ADDITION IS ALREADY ! 10146: > * PRESENT IT IS DELETED. THE TRTAG FIELD OF ANY DELETED ! 10147: > * TRBLK IS CLEARED AS REQUIRED BY S$ENF. ! 10148: > * ! 10149: > * (XL,WA) POINTER, OFFSET TO TRACED VARIABLE ! 10150: > * (XR) PTR TO NEW TRBLK OR 0 FOR REMOVAL ! 10151: > * (WB) TRACE TYPE (TRTYP) ! 10152: > * JSR TRCHN CALL TO UPDATE TRACE CHAIN ! 10153: > * PPM LOC NO TRACE BLK OF REQD DELETION TYPE ! 10154: > * (WA,WC) DESTROYED ! 10155: > * ! 10156: > TRCHN PRC E,1 ENTRY POINT ! 10157: > ADD XL,WA KEEP POINTER TO TRACED LOCATION ! 10158: > MOV WA,XL COPY POINTER ! 10159: > SUB *TRNXT,XL ADJUST OFFSET BEFORE ENTERING LOOP ! 10160: ! 10161: ! 10162: ! 10163: ! 10164: ! 10165: ! 10166: ! 10167: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 155 ! 10168: ! 10169: ! 10170: > MOV XR,WC COPY TRBLK PTR ! 10171: > * ! 10172: > * LOOP TO FIND TRACE BLOCK ! 10173: > * ! 10174: > TRCH1 MOV XL,XR COPY SO XR POINTS TO PREDECESSOR ! 10175: > MOV TRNXT(XL),XL POINT TO POSSIBLE TRACE BLOCK ! 10176: > BNE (XL),=B$TRT,TRCH2 SKIP OUT AT CHAIN END ! 10177: > BLT WB,TRTYP(XL),TRCH2 SKIP IF TOO FAR OUT ON CHAIN ! 10178: > BNE WB,TRTYP(XL),TRCH1 LOOP UNLESS TYPE MATCHES ! 10179: > MOV TRNXT(XL),TRNXT(XR) REMOVE LINK TO OLD TRBLK ! 10180: > ZER TRTAG(XL) CLEAR IOTAG FIELD OF DELETED BLOCK ! 10181: > BZE WC,TRCH3 DONE IF NO NEW TRBLK ! 10182: > * ! 10183: > * OLD TRBLK REMOVED AND/OR END OF CHAIN REACHED ! 10184: > * ! 10185: > TRCH2 BZE WC,TRCH4 FAIL IF REQD BLOCK TYPE NOT FOUND ! 10186: > MOV WC,XL POINT TO NEW TRBLK ! 10187: > MOV TRNXT(XR),TRNXT(XL) ATTACH TAIL OF CHAIN TO IT ! 10188: > MOV WC,TRNXT(XR) LINK NEW BLOCK IN ! 10189: > MOV WB,TRTYP(XL) ENSURE TRTYP FIELD SET UP ! 10190: > * ! 10191: > * UPDATE ACCESS FIELDS OF NAME IF IT IS A VRBLK ! 10192: > * ! 10193: > TRCH3 MOV WA,XR POINT TO VBL ! 10194: > SUB *VRVAL,XR ADJUST TO POSSIBLE VRBLK NAME BASE ! 10195: > JSR SETVR UPDATE ACCESS FIELDS ! 10196: > MOV WA,XL RECOVER XL ! 10197: > MOV WC,XR RECOVER XR ! 10198: > EXI RETURN TO CALLER ! 10199: > * ! 10200: > * FAIL RETURN ! 10201: > * ! 10202: > TRCH4 MOV WA,XL RECOVER XL ! 10203: > MOV WC,XR RECOVER XR ! 10204: > EXI 1 FAIL ! 10205: > ENP END PROCEDURE TRCHN ! 10206: > EJC ! 10207: > * ! 10208: 22475,22476c21388,21389 ! 10209: < PSC XL,WA READY FOR STORING BLANKS ! 10210: < CTB WA,SCHAR GET LENGTH OF BLOCK IN BYTES ! 10211: --- ! 10212: > PSC XL,WA READY FOR STORING ZEROES ! 10213: > CTB WA,SCHAR GET LENGTH OF BLOCK IN BAUS ! 10214: 22480c21393 ! 10215: < ZER WC SET BLANK CHAR ! 10216: --- ! 10217: > ZER WC SET ZERO CHAR ! 10218: 22562c21475 ! 10219: < TRXQ1 MOV FLPTR,XS POINT BACK TO OUR STACK ENTRIES ! 10220: --- ! 10221: > TRXQR MOV FLPTR,XS POINT BACK TO OUR STACK ENTRIES ! 10222: 22595a21509 ! 10223: > * (XSCNB) ERROR INDICATOR - SEE 4) BELOW ! 10224: 22596a21511,21513 ! 10225: > * LEADING BLANKS AND TRAILING BLANKS POSITIONED BEFORE A ! 10226: ! 10227: ! 10228: ! 10229: ! 10230: ! 10231: ! 10232: ! 10233: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 156 ! 10234: ! 10235: ! 10236: > * DELIMITER OR AT THE END OF THE ARGUMENT STRING ARE ! 10237: > * IGNORED. OTHER BLANKS ARE ILLEGAL. ! 10238: 22598c21515 ! 10239: < * UNTIL ONE OF THE FOLLOWING THREE CONDITIONS OCCURS. ! 10240: --- ! 10241: > * UNTIL ONE OF THE FOLLOWING CONDITIONS OCCURS. ! 10242: 22604c21521 ! 10243: < * 3) END OF STRING ENCOUNTERED (WA SET TO 0) ! 10244: --- ! 10245: > * 3) END OF STRING ENCOUNTERED (WA AND XSCNB SET TO 0) ! 10246: 22605a21523,21524 ! 10247: > * 4) ILLEGAL BLANK (WA 0, XSCNB NON-ZERO) ! 10248: > * ! 10249: 22622a21542,21543 ! 10250: > ZER XSCBL CLEAR COUNT OF TRAILING BLANKS ! 10251: > ZER XSCNB CLEAR NON-BLANK SEEN FLAG ! 10252: 22632c21553 ! 10253: < XSCN1 LCH WB,(XR)+ LOAD NEXT CHARACTER ! 10254: --- ! 10255: > XSCN0 LCH WB,(XR)+ LOAD NEXT CHARACTER ! 10256: 22635,22636c21556,21561 ! 10257: < DCV WA DECREMENT COUNT OF CHARS LEFT ! 10258: < BNZ WA,XSCN1 LOOP BACK IF MORE CHARS TO GO ! 10259: --- ! 10260: > BEQ WB,=CH$BL,XSCN7 SKIP IF IT IS A BLANK ! 10261: > .IF .CAHT ! 10262: > BEQ WB,=CH$HT,XSCN7 SKIP IF IT IS A TAB ! 10263: > .FI ! 10264: > BNZ XSCBL,XSCN2 FAIL CHAR AFTER TRAILING BLANK ! 10265: > MNZ XSCNB NOTE A NON-BLANK SEEN ! 10266: 22637a21563,21568 ! 10267: > * COUNT CHARS DONE ! 10268: > * ! 10269: > XSCN1 DCV WA DECREMENT COUNT OF CHARS LEFT ! 10270: > BNZ WA,XSCN0 LOOP BACK IF MORE CHARS TO GO ! 10271: > ZER XSCNB CLEAR ERRONEOUS BLANKS FLAG ! 10272: > * ! 10273: 22643a21575 ! 10274: > SUB XSCBL,WA ADJUST FOR TRAILING BLANKS ! 10275: 22665a21598 ! 10276: > SUB XSCBL,WA ADJUST FOR TRAILING BLANKS ! 10277: 22673a21607,21609 ! 10278: > .IF .CASL ! 10279: > JSR SBSTG BUILD SUBSTRING ! 10280: > .ELSE ! 10281: 22674a21611 ! 10282: > .FI ! 10283: 22677a21615,21625 ! 10284: > * ! 10285: > * DEAL WITH BLANK ! 10286: > * ! 10287: > XSCN7 BZE XSCNB,XSCN8 SKIP IF LEADING BLANK ! 10288: > ICV XSCBL ELSE COUNT TRAILING BLANK ! 10289: > BRN XSCN1 LOOP ! 10290: > * ! 10291: > * LEADING BLANK ! 10292: ! 10293: ! 10294: ! 10295: ! 10296: ! 10297: ! 10298: ! 10299: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 157 ! 10300: ! 10301: ! 10302: > * ! 10303: > XSCN8 ICV XSOFS PUSH OFFSET PAST BLANK ! 10304: > BRN XSCN1 LOOP ! 10305: 22753c21701 ! 10306: < WTB XR CONVERT TO BYTE OFFSET ! 10307: --- ! 10308: > WTB XR CONVERT TO BAU OFFSET ! 10309: 22765c21713 ! 10310: < ERB 235,SUBSCRIPTED OPERAND IS NOT TABLE OR ARRAY ! 10311: --- ! 10312: > ERB 240,SUBSCRIPTED OPERAND IS NOT TABLE OR ARRAY ! 10313: 22841c21789 ! 10314: < WTB WA CONVERT OFFSET TO BYTES ! 10315: --- ! 10316: > WTB WA CONVERT OFFSET TO BAUS ! 10317: 22853c21801 ! 10318: < ARF09 ERB 236,ARRAY REFERENCED WITH WRONG NUMBER OF SUBSCRIPTS ! 10319: --- ! 10320: > ARF09 ERB 241,ARRAY REFERENCED WITH WRONG NUMBER OF SUBSCRIPTS ! 10321: 22866c21814 ! 10322: < ARF11 ERB 237,TABLE REFERENCED WITH MORE THAN ONE SUBSCRIPT ! 10323: --- ! 10324: > ARF11 ERB 242,TABLE REFERENCED WITH MORE THAN ONE SUBSCRIPT ! 10325: 22870c21818 ! 10326: < ARF12 ERB 238,ARRAY SUBSCRIPT IS NOT INTEGER ! 10327: --- ! 10328: > ARF12 ERB 243,ARRAY SUBSCRIPT IS NOT INTEGER ! 10329: 22901c21849 ! 10330: < WTB WB CONVERT TO BYTES ! 10331: --- ! 10332: > WTB WB CONVERT TO BAUS ! 10333: 22921a21870,21888 ! 10334: > * EROSI -- PROCESS ERROR RETURN FROM OSINT ! 10335: > * ! 10336: > * (WA) 0 OR ERROR CODE IN 256 TO 998 ! 10337: > * (XL) 0 OR PSEUDO SCBLK FOR ERROR MESSAGE ! 10338: > * (IA) NEW VALUE FOR CODE KEYWORD ! 10339: > * BRN EROSI JUMP TO PROCESS ERROR ! 10340: > * ! 10341: > EROSI RTN ! 10342: > STI KVCOD STORE NEW CODE KEYWORD VALUE ! 10343: > MOV WA,KVERT STORE ERROR CODE ! 10344: > BZE XL,ERROR FAIL AT ONCE IF NO ERROR MSG TEXT ! 10345: > MOV SCLEN(XL),WA STRING LENGTH ! 10346: > ZER WB ZERO OFFSET ! 10347: > JSR SBSTR COPY ERROR MESSAGE STRING ! 10348: > MOV XR,R$ETX AND STORE IT ! 10349: > MNZ EROSN NOTE NO CALL OF SYSEM ! 10350: > MOV KVERT,WA RECALL ERROR CODE ! 10351: > BRN ERROR ENTER ERROR SECTION ! 10352: > * ! 10353: 22935d21901 ! 10354: < EJC ! 10355: 22972d21937 ! 10356: < EJC ! 10357: 22999d21963 ! 10358: ! 10359: ! 10360: ! 10361: ! 10362: ! 10363: ! 10364: ! 10365: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 158 ! 10366: ! 10367: ! 10368: < EJC ! 10369: 23015d21978 ! 10370: < EJC ! 10371: 23058d22020 ! 10372: < EJC ! 10373: 23070d22031 ! 10374: < EJC ! 10375: 23100c22061 ! 10376: < ERR 239,INDIRECTION OPERAND IS NOT NAME ! 10377: --- ! 10378: > ERR 244,INDIRECTION OPERAND IS NOT NAME ! 10379: 23131c22092 ! 10380: < ERR 240,PATTERN MATCH RIGHT OPERAND IS NOT PATTERN ! 10381: --- ! 10382: > ERR 245,PATTERN MATCH RIGHT OPERAND IS NOT PATTERN ! 10383: 23161c22122,22125 ! 10384: < ERR 241,PATTERN MATCH LEFT OPERAND IS NOT STRING ! 10385: --- ! 10386: > ERR 246,PATTERN MATCH LEFT OPERAND IS NOT STRING ! 10387: > .IF .CNBF ! 10388: > MOV XR,R$PMS IF OK, STORE SUBJECT STRING POINTER ! 10389: > .ELSE ! 10390: 23163c22127 ! 10391: < * MERGE WITH BUFFER OR STRING ! 10392: --- ! 10393: > * MERGE WITH NULL STRING OR BUFFER ! 10394: 23165a22130 ! 10395: > .FI ! 10396: 23173a22139 ! 10397: > EJC ! 10398: 23174a22141,22142 ! 10399: > * MATCH (CONTINUED) ! 10400: > * ! 10401: 23201c22169 ! 10402: < ERB 242,FUNCTION RETURN FROM LEVEL ZERO ! 10403: --- ! 10404: > ERB 247,FUNCTION RETURN FROM LEVEL ZERO ! 10405: 23227c22195 ! 10406: < MOV PFVBL(XR),XL LOAD VRBLK PTR (SGD13) ! 10407: --- ! 10408: > MOV PFVBL(XR),XL LOAD VRBLK POINTER ! 10409: 23260c22228 ! 10410: < JSR PRTNL TERMINATE PRINT LINE ! 10411: --- ! 10412: > JSR PRTFH TERMINATE PRINT LINE ! 10413: 23295c22263 ! 10414: < * HERE IF &PROFILE = 1. START TIME MUST BE FRIGGED TO ! 10415: --- ! 10416: > * HERE IF PROFILE = 1. START TIME MUST BE FRIGGED TO ! 10417: 23303c22271 ! 10418: < * HERE IF &PROFILE = 2 ! 10419: --- ! 10420: > * HERE IF PROFILE = 2 ! 10421: 23331a22300 ! 10422: > EJC ! 10423: 23332a22302,22303 ! 10424: ! 10425: ! 10426: ! 10427: ! 10428: ! 10429: ! 10430: ! 10431: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 159 ! 10432: ! 10433: ! 10434: > * RETRN (CONTINUED) ! 10435: > * ! 10436: 23344d22314 ! 10437: < EJC ! 10438: 23346,23347d22315 ! 10439: < * RETRN (CONTINUED) ! 10440: < * ! 10441: 23352c22320 ! 10442: < ERR 243,FUNCTION RESULT IN NRETURN IS NOT NAME ! 10443: --- ! 10444: > ERR 248,FUNCTION RESULT IN NRETURN IS NOT NAME ! 10445: 23393c22361 ! 10446: < ERB 244,STATEMENT COUNT EXCEEDS VALUE OF STLIMIT KEYWORD ! 10447: --- ! 10448: > ERB 249,STATEMENT COUNT EXCEEDS VALUE OF STLIMIT KEYWORD ! 10449: 23409a22378,22380 ! 10450: > * ! 10451: > * MERGE PROFILE, NO-PROFILE CASES ! 10452: > * ! 10453: 23432c22403,22404 ! 10454: < * (XR) POINTS TO ENDING MESSAGE ! 10455: --- ! 10456: > * (WA) 0 OR ERROR MESSAGE CODE ! 10457: > * (XR) 0 OR ENDING MESSAGE POINTER ! 10458: 23436c22408,22410 ! 10459: < * TO ENDING MESSAGE OR IS ZERO IF MESSAGE PRINTED ALREADY. ! 10460: --- ! 10461: > * TO ENDING MESSAGE OR IS ZERO IF MESSAGE PRINTED ALREADY. ! 10462: > * (WA) AND (XR) ARE BOTH NON-ZERO ONLY IN THE CASE OF FATAL ! 10463: > * ERRORS DURING INITIAL COMPILE. ! 10464: 23440d22413 ! 10465: < BZE XR,STPRA SKIP IF SYSAX ALREADY CALLED (REG04) ! 10466: 23442d22414 ! 10467: < STPRA ADD RSMEM,DNAME USE THE RESERVE MEMORY ! 10468: 23444d22415 ! 10469: < ADD RSMEM,DNAME USE THE RESERVE MEMORY ! 10470: 23446,23448c22417,22424 ! 10471: < BNE XR,=ENDMS,STPR0 SKIP IF NOT NORMAL END MESSAGE ! 10472: < BNZ EXSTS,STPR3 SKIP IF EXEC STATS SUPPRESSED ! 10473: < ZER ERICH CLEAR ERRORS TO INT.CH. FLAG ! 10474: --- ! 10475: > ADD RSMEM,DNAME USE THE RESERVE MEMORY ! 10476: > BZE WA,STPR1 SKIP IF NO ERROR MESSAGE ! 10477: > MOV XR,STPXR KEEP 0 OR ENDING MESSAGE ! 10478: > MOV TTERL,TTLST SEND ERROR AND STATS TO TERML ! 10479: > JSR PRTPG PAGE THROW ! 10480: > JSR ERMSG PRINT ERROR MESSAGE ! 10481: > MOV STPXR,XR RECOVER 0 OR ENDING MESSAGE ! 10482: > ZER EXSTS TO FORCE ENDING STATS OUT FOR ERROR ! 10483: 23450c22426 ! 10484: < * LOOK TO SEE IF AN ENDING MESSAGE IS SUPPLIED ! 10485: --- ! 10486: > * PROCESS ENDING STATISTICS ! 10487: 23452,23454c22428,22433 ! 10488: < STPR0 JSR PRTPG EJECT PRINTER ! 10489: < BZE XR,STPR1 SKIP IF NO MESSAGE ! 10490: ! 10491: ! 10492: ! 10493: ! 10494: ! 10495: ! 10496: ! 10497: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 160 ! 10498: ! 10499: ! 10500: < JSR PRTST PRINT MESSAGE ! 10501: --- ! 10502: > STPR1 MTI KVSTN GET STATEMENT NUMBER ! 10503: > IEQ STPR6 SKIP IF COMPILE TIME ! 10504: > BNZ EXSTS,STPR4 SKIP IF NO STATS TO BE PRINTED ! 10505: > JSR PRTPG EJECT PRINTER ! 10506: > BZE XR,STPR2 SKIP IF NO MESSAGE ! 10507: > JSR PRTFB PRINT MESSAGE ! 10508: 23458,23459c22437 ! 10509: < STPR1 JSR PRTIS PRINT BLANK LINE ! 10510: < MTI KVSTN GET STATEMENT NUMBER ! 10511: --- ! 10512: > STPR2 JSR PRTFH PRINT BLANK LINE ! 10513: 23461c22439 ! 10514: < JSR PRTMX PRINT IT ! 10515: --- ! 10516: > JSR PRTMI PRINT IT ! 10517: 23466c22444 ! 10518: < JSR PRTMX PRINT IT ! 10519: --- ! 10520: > JSR PRTMI PRINT IT ! 10521: 23468c22446 ! 10522: < ILT STPR2 SKIP IF NEGATIVE ! 10523: --- ! 10524: > ILT STPR3 SKIP IF NEGATIVE ! 10525: 23472c22450,22452 ! 10526: < JSR PRTMX PRINT IT ! 10527: --- ! 10528: > JSR PRTMI PRINT IT ! 10529: > .IF .CTMD ! 10530: > .ELSE ! 10531: 23475c22455 ! 10532: < IOV STPR2 JUMP IF WE CANNOT COMPUTE ! 10533: --- ! 10534: > IOV STPR3 JUMP IF WE CANNOT COMPUTE ! 10535: 23477c22457 ! 10536: < IOV STPR2 JUMP IF OVERFLOW ! 10537: --- ! 10538: > IOV STPR3 JUMP IF OVERFLOW ! 10539: 23479c22459,22460 ! 10540: < JSR PRTMX PRINT IT ! 10541: --- ! 10542: > JSR PRTMI PRINT IT ! 10543: > .FI ! 10544: 23486c22467 ! 10545: < STPR2 MTI GBCNT LOAD COUNT OF COLLECTIONS ! 10546: --- ! 10547: > STPR3 MTI GBCNT LOAD COUNT OF COLLECTIONS ! 10548: 23488,23489c22469,22470 ! 10549: < JSR PRTMX PRINT IT ! 10550: < JSR PRTIS ONE MORE BLANK FOR LUCK ! 10551: --- ! 10552: > JSR PRTMI PRINT IT ! 10553: > JSR PRTFH ONE MORE BLANK FOR LUCK ! 10554: 23494c22475 ! 10555: < STPR3 MOV KVDMP,XR LOAD DUMP KEYWORD ! 10556: ! 10557: ! 10558: ! 10559: ! 10560: ! 10561: ! 10562: ! 10563: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 161 ! 10564: ! 10565: ! 10566: --- ! 10567: > STPR4 MOV KVDMP,XR LOAD DUMP KEYWORD ! 10568: 23496,23497c22477 ! 10569: < STPR3 JSR PRFLR PRINT PROFILE IF WANTED ! 10570: < * ! 10571: --- ! 10572: > STPR4 JSR PRFLR PRINT PROFILE IF WANTED ! 10573: 23501,23503c22481,22484 ! 10574: < MOV R$FCB,XL GET FCBLK CHAIN HEAD ! 10575: < MOV KVABE,WA LOAD ABEND VALUE ! 10576: < MOV KVCOD,WB LOAD CODE VALUE ! 10577: --- ! 10578: > * ! 10579: > * MERGE TO END RUN FOR SEVERE COMPILATION ERRORS ! 10580: > * ! 10581: > STPR5 MOV =KVCOD,WA LOAD CODE VALUE ! 10582: 23504a22486,22496 ! 10583: > * ! 10584: > * TERMINATION DURING COMPILE ! 10585: > * ! 10586: > STPR6 BZE XR,STPR7 SKIP IF NO MESSAGE ! 10587: > JSR PRTSF ELSE PRINT IT ! 10588: > * ! 10589: > * NOTIFICATION THAT IT IS COMPILE TIME ! 10590: > * ! 10591: > STPR7 MOV =ENDIC,XR NOTIFY USER ! 10592: > JSR PRTSF SEND IT ! 10593: > BRN STPR5 END ! 10594: 23522,23542d22513 ! 10595: < EJC ! 10596: < * ! 10597: < * SYSAB -- PRINT /ABNORMAL END/ AND TERMINATE ! 10598: < * ! 10599: < SYSAB RTN ! 10600: < MOV =ENDAB,XR POINT TO MESSAGE ! 10601: < MOV =NUM01,KVABE SET ABEND FLAG ! 10602: < JSR PRTNL SKIP TO NEW LINE ! 10603: < BRN STOPR JUMP TO PACK UP ! 10604: < EJC ! 10605: < * ! 10606: < * SYSTU -- PRINT /TIME UP/ AND TERMINATE ! 10607: < * ! 10608: < SYSTU RTN ! 10609: < MOV =ENDTU,XR POINT TO MESSAGE ! 10610: < MOV STRTU,WA GET CHARS /TU/ ! 10611: < MOV WA,KVCOD PUT IN KVCOD ! 10612: < MOV TIMUP,WA CHECK STATE OF TIMEUP SWITCH ! 10613: < MNZ TIMUP SET SWITCH ! 10614: < BNZ WA,STOPR STOP RUN IF ALREADY SET ! 10615: < ERB 245,TRANSLATION/EXECUTION TIME EXPIRED ! 10616: 23548a22520 ! 10617: > STAKV RTN ENTRY POINT FOR STACK OVERFLOW ! 10618: 23552c22524 ! 10619: < ERB 246,STACK OVERFLOW ! 10620: --- ! 10621: > ERB 250,STACK OVERFLOW ! 10622: ! 10623: ! 10624: ! 10625: ! 10626: ! 10627: ! 10628: ! 10629: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 162 ! 10630: ! 10631: ! 10632: 23557a22530,22531 ! 10633: > ZER WA NO ERROR MESSAGE ! 10634: > MOV TTERL,TTLST SEND MESSAGE TO TERML IF POSSIBLE ! 10635: 23591c22565,22567 ! 10636: < ERROR BEQ R$CIM,=CMLAB,CMPLE JUMP IF ERROR IN SCANNING LABEL ! 10637: --- ! 10638: > ERROR RTN ERROR CODE ENTRY POINT ! 10639: > BGE ERRFT,=NUM03,ERR16 SKIP IF TOO MANY FATALS ! 10640: > BEQ R$CIM,=CMLAB,ERRG1 JUMP IF ERROR IN LABEL SCAN ! 10641: 23598,23601c22574,22577 ! 10642: < IFF STGXC,ERR04 EXECUTE TIME COMPILE ! 10643: < IFF STGEV,ERR04 EVAL COMPILING EXPR. ! 10644: < IFF STGEE,ERR04 EVAL EVALUATING EXPR ! 10645: < IFF STGXT,ERR05 EXECUTE TIME ! 10646: --- ! 10647: > IFF STGXC,ERR08 EXECUTE TIME COMPILE ! 10648: > IFF STGEV,ERR08 EVAL COMPILING EXPR. ! 10649: > IFF STGEE,ERR08 EVAL EVALUATING EXPR ! 10650: > IFF STGXT,ERR12 EXECUTE TIME ! 10651: 23603c22579 ! 10652: < IFF STGXE,ERR04 XEQ COMPILE-PAST END ! 10653: --- ! 10654: > IFF STGXE,ERR08 XEQ COMPILE-PAST END ! 10655: 23605d22580 ! 10656: < EJC ! 10657: 23608d22582 ! 10658: < * ! 10659: 23613d22586 ! 10660: < * ! 10661: 23617d22589 ! 10662: < * ! 10663: 23619a22592 ! 10664: > EJC ! 10665: 23623,23624c22596,22600 ! 10666: < BNZ ERRSP,ERR03 JUMP IF ERROR SUPPRESS FLAG SET ! 10667: < MOV ERICH,ERLST SET FLAG FOR LISTR ! 10668: --- ! 10669: > BNZ ERRSP,ERR06 JUMP IF ERROR SUPPRESS FLAG SET ! 10670: > JSR PRTFH PRINT A BLANK ! 10671: > MOV TTERL,TTLST SET FLAG FOR LISTR ! 10672: > ADD =NUM03,LSTLC CAUSE EJECT IF BELOW 4 LINES LEFT ! 10673: > MOV LSTLC,-(XS) KEEP LINE COUNT ! 10674: 23626,23629c22602,22609 ! 10675: < JSR PRTIS TERMINATE LISTING ! 10676: < ZER ERLST CLEAR LISTR FLAG ! 10677: < MOV SCNSE,WA LOAD SCAN ELEMENT OFFSET ! 10678: < BZE WA,ERR02 SKIP IF NOT SET ! 10679: --- ! 10680: > JSR PRTFH TERMINATE LISTING ! 10681: > MOV (XS)+,WA RECOVER LINE COUNT ! 10682: > BGT LSTLC,WA,ERR02 SKIP IF NOT NEW PAGE ! 10683: > ADD =NUM04,LSTLC BUMP FOR LINES PRINTED ! 10684: > * ! 10685: > * PRINT FLAG UNDER BAD ELEMENT ! 10686: > * ! 10687: > ERR02 MOV SCNSE,WA LOAD SCAN ELEMENT OFFSET ! 10688: ! 10689: ! 10690: ! 10691: ! 10692: ! 10693: ! 10694: ! 10695: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 163 ! 10696: ! 10697: ! 10698: 23631c22611 ! 10699: < LCT WB,WA LOOP COUNTER ! 10700: --- ! 10701: > MOV WA,WB COPY OFFSET ! 10702: 23635a22616 ! 10703: > BZE WB,ERR05 SKIP IF NO BLANKS BEFORE ERROR FLAG ! 10704: 23637a22619 ! 10705: > LCT WB,WB LOOP COUNTER ! 10706: 23641,23642c22623,22624 ! 10707: < ERRA1 LCH WC,(XL)+ GET NEXT CHAR ! 10708: < BEQ WC,=CH$HT,ERRA2 SKIP IF TAB ! 10709: --- ! 10710: > ERR03 LCH WC,(XL)+ GET NEXT CHAR ! 10711: > BEQ WC,=CH$HT,ERR04 SKIP IF TAB ! 10712: 23648,23650c22630,22636 ! 10713: < ERRA2 SCH WC,(XR)+ STORE CHAR ! 10714: < BCT WB,ERRA1 LOOP ! 10715: < MOV =CH$EX,XL EXCLAMATION MARK ! 10716: --- ! 10717: > ERR04 SCH WC,(XR)+ STORE CHAR ! 10718: > BCT WB,ERR03 LOOP ! 10719: > EJC ! 10720: > * ! 10721: > * MERGE IN CASE OF NO PRECEDING BLANKS ! 10722: > * ! 10723: > ERR05 MOV =CH$EX,XL EXCLAMATION MARK ! 10724: 23658c22644 ! 10725: < MFI GTNSI STORE AS SIGNED INTEGER ! 10726: --- ! 10727: > STI GTNSI STORE AS SIGNED INTEGER ! 10728: 23662c22648 ! 10729: < STI PROFS USE AS CHARACTER OFFSET ! 10730: --- ! 10731: > MFI PROFS USE AS CHARACTER OFFSET ! 10732: 23669,23670c22655,22656 ! 10733: < ERR02 JSR ERMSG GENERATE FLAG AND ERROR MESSAGE ! 10734: < ADD =NUM03,LSTLC BUMP PAGE CTR FOR BLANK, ERROR, BLK ! 10735: --- ! 10736: > JSR ERMSG GENERATE FLAG AND ERROR MESSAGE ! 10737: > ZER TTLST REVERT TO REGULAR LISTING ! 10738: 23672c22658,22659 ! 10739: < BHI ERRFT,=NUM03,STOPR PACK UP IF SEVERAL FATALS ! 10740: --- ! 10741: > ICV CMERC BUMP ERROR COUNT ! 10742: > BNE STAGE,=STGIC,ERRG2 SPECIAL RETURN IF AFTER END LINE ! 10743: 23674c22661,22662 ! 10744: < * COUNT ERROR, INHIBIT EXECUTION IF REQUIRED ! 10745: --- ! 10746: > * IF ERROR IN READR THEN EITHER CLOSE OUT ! 10747: > * CURRENT -COPY LEVEL, OR IF AT TOP THEN ABORT ! 10748: 23676,23679c22664,22667 ! 10749: < ICV CMERC BUMP ERROR COUNT ! 10750: < ADD CSWER,NOXEQ INHIBIT XEQ IF -NOERRORS ! 10751: < BNE STAGE,=STGIC,CMP10 SPECIAL RETURN IF AFTER END LINE ! 10752: < EJC ! 10753: --- ! 10754: ! 10755: ! 10756: ! 10757: ! 10758: ! 10759: ! 10760: ! 10761: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 164 ! 10762: ! 10763: ! 10764: > BZE RDRER,ERR06 SKIP IF NOT ERROR WHILE READING ! 10765: > BZE R$COP,ERR16 ABORT IF AT TOP LEVEL INPUT FILE ! 10766: > ZER RDRER ELSE CLEAR READR ERROR FLAG ! 10767: > JSR COPND AND CLOSE OUT THIS COPY LEVEL ! 10768: 23683c22671,22672 ! 10769: < ERR03 MOV R$CIM,XR POINT TO START OF IMAGE ! 10770: --- ! 10771: > ERR06 MOV R$CIM,XR POINT TO START OF IMAGE ! 10772: > BZE XR,ERR07 SKIP IF NO INPUT IMAGE ! 10773: 23686c22675 ! 10774: < BEQ XR,=CH$MN,CMPCE JUMP IF ERROR IN CONTROL CARD ! 10775: --- ! 10776: > BEQ XR,=CH$MN,ERRG3 JUMP IF ERROR IN CONTROL CARD ! 10777: 23690c22679 ! 10778: < BNE XL,=T$SMC,ERR03 LOOP BACK IF NOT STATEMENT END ! 10779: --- ! 10780: > BNE XL,=T$SMC,ERR06 LOOP BACK IF NOT STATEMENT END ! 10781: 23691a22681 ! 10782: > EJC ! 10783: 23695c22685 ! 10784: < MOV *CDCOD,CWCOF RESET OFFSET IN CCBLK ! 10785: --- ! 10786: > ERR07 MOV *CDCOD,CWCOF RESET OFFSET IN CCBLK ! 10787: 23701c22691,22692 ! 10788: < BRN CMPSE MERGE TO GENERATE ERROR AS CDFAL ! 10789: --- ! 10790: > JMG CMPSE MERGE TO GENERATE ERROR AS CDFAL ! 10791: > EJC ! 10792: 23703c22694 ! 10793: < * ERROR DURING EXECUTE TIME COMPILE OR EXPRESSION EVALUATIO ! 10794: --- ! 10795: > * ERROR DURING EXECUTE TIME COMPILE OR EXPRESSION EVALUATION. ! 10796: 23711c22702,22704 ! 10797: < ERR04 ZER R$CCB FORGET GARBAGE CODE BLOCK ! 10798: --- ! 10799: > ERR08 JSR COPND CALL TO CLOSE OFF THIS LEVEL ! 10800: > BNZ R$COP,ERR08 LOOP IF NOT ALL -COPYS CLOSED ! 10801: > ZER R$CCB FORGET GARBAGE CODE BLOCK ! 10802: 23719,23721c22712,22714 ! 10803: < ERRA4 ICA XS POP STACK ! 10804: < BEQ XS,FLPRT,ERRC4 JUMP IF PROG DEFINED FN CALL FOUND ! 10805: < BNE XS,GTCEF,ERRA4 LOOP IF NOT EVAL OR CODE CALL YET ! 10806: --- ! 10807: > ERR09 ICA XS POP STACK ! 10808: > BEQ XS,FLPRT,ERR11 JUMP IF PROG DEFINED FN CALL FOUND ! 10809: > BNE XS,GTCEF,ERR09 LOOP IF NOT EVAL OR CODE CALL YET ! 10810: 23729c22722 ! 10811: < ERRB4 BNZ KVERL,ERR07 JUMP IF ERRLIMIT NON-ZERO ! 10812: --- ! 10813: > ERR10 BNZ KVERL,ERR14 JUMP IF ERRLIMIT NON-ZERO ! 10814: 23734,23736c22727,22728 ! 10815: < ERRC4 MOV FLPTR,XS RESTORE STACK FROM FLPTR ! 10816: < BRN ERRB4 MERGE ! 10817: < EJC ! 10818: --- ! 10819: > ERR11 MOV FLPTR,XS RESTORE STACK FROM FLPTR ! 10820: ! 10821: ! 10822: ! 10823: ! 10824: ! 10825: ! 10826: ! 10827: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 165 ! 10828: ! 10829: ! 10830: > BRN ERR10 MERGE ! 10831: 23742,23744c22734 ! 10832: < * IF ERRLIMIT KEYWORD IS ZERO, AN ABORT IS SIGNALLED, ! 10833: < * SEE CODING FOR SYSTEM LABEL ABORT AT L$ABO. ! 10834: < * ! 10835: --- ! 10836: > * IF ERRLIMIT KEYWORD IS ZERO, THE RUN IS ABORTED. ! 10837: 23749c22739 ! 10838: < * IF 3 OR MORE FATAL ERRORS OCCUR AN ABORT IS SIGNALLED ! 10839: --- ! 10840: > * IF 3 OR MORE FATAL ERRORS OCCUR AN ABORT OCCURS ! 10841: 23752a22743 ! 10842: > EJC ! 10843: 23754,23755c22745,22746 ! 10844: < ERR05 SSL INISS RESTORE MAIN PROG S-R STACK PTR ! 10845: < BNZ DMVCH,ERR08 JUMP IF IN MID-DUMP ! 10846: --- ! 10847: > ERR12 SSL INISS RESTORE MAIN PROG S-R STACK PTR ! 10848: > BNZ DMVCH,ERR15 JUMP IF IN MID-DUMP ! 10849: 23757c22748 ! 10850: < * MERGE HERE FROM ERR08 ! 10851: --- ! 10852: > * MERGE HERE AFTER DUMP TIDY UP ! 10853: 23759c22750,22751 ! 10854: < ERR06 BZE KVERL,LABO1 ABORT IF ERRLIMIT IS ZERO ! 10855: --- ! 10856: > ERR13 ZER XR CLEAR XR FLAG ! 10857: > BZE KVERL,STOPR ABORT IF ERRLIMIT IS ZERO ! 10858: 23762c22754 ! 10859: < * MERGE FROM ERR04 ! 10860: --- ! 10861: > * MERGE AFTER ERRLIMIT TEST ! 10862: 23764,23765c22756 ! 10863: < ERR07 BGE ERRFT,=NUM03,LABO1 ABORT IF TOO MANY FATAL ERRORS ! 10864: < DCV KVERL DECREMENT ERRLIMIT ! 10865: --- ! 10866: > ERR14 DCV KVERL DECREMENT ERRLIMIT ! 10867: 23772c22763 ! 10868: < BZE XR,LCNT1 CONTINUE IF NO SETEXIT TRAP ! 10869: --- ! 10870: > BZE XR,ERRG4 CONTINUE IF NO SETEXIT TRAP ! 10871: 23781,23782c22772,22773 ! 10872: < ERR08 MOV DMVCH,XR CHAIN HEAD FOR AFFECTED VRBLKS ! 10873: < BZE XR,ERR06 DONE IF ZERO ! 10874: --- ! 10875: > ERR15 MOV DMVCH,XR CHAIN HEAD FOR AFFECTED VRBLKS ! 10876: > BZE XR,ERR13 DONE IF ZERO ! 10877: 23785c22776,22795 ! 10878: < BRN ERR08 LOOP THROUGH CHAIN ! 10879: --- ! 10880: > BRN ERR15 LOOP THROUGH CHAIN ! 10881: > * ! 10882: > * TAKE DRACONIAN STEPS FOR REPEATED FATAL ERRORS ! 10883: > * ! 10884: > ERR16 MOV ERRTF,WA ERROR CODE ! 10885: > MOV WA,KVERT PLACE ERROR CODE FOR ERMSG ! 10886: ! 10887: ! 10888: ! 10889: ! 10890: ! 10891: ! 10892: ! 10893: Jan 17 17:08 1985 Differences between 3.5 and 4.3 Page 166 ! 10894: ! 10895: ! 10896: > MNZ XR IN CASE COMPILE TIME ! 10897: > BEQ STAGE,=STGIC,STOPR JUMP IF SO ! 10898: > BEQ STAGE,=STGCE,STOPR ALSO COMPILE TIME ! 10899: > ZER XR INDICATE EXECUTION ! 10900: > BRN STOPR TERMINATE RUN ! 10901: > * ! 10902: > ERRAF ERB 251,TOO MANY FATAL ERRORS ! 10903: > * ! 10904: > * HERE FOR GLOBAL ERROR JUMPS ! 10905: > * ! 10906: > ERRG1 JMG CMPLE ! 10907: > ERRG2 JMG CMPEE ! 10908: > ERRG3 JMG CMPCE ! 10909: > ERRG4 JMG LCNXE ! 10910: 23791,23801d22800 ! 10911: < ! 10912: < ! 10913: < ! 10914: < ! 10915: < ! 10916: < ! 10917: < ! 10918: < ! 10919: < ! 10920: < ! 10921: < ! 10922: ! 10923: ! 10924: ! 10925: ! 10926: ! 10927: ! 10928: ! 10929: ! 10930: ! 10931: ! 10932: ! 10933: ! 10934: ! 10935: ! 10936: ! 10937: ! 10938: ! 10939: ! 10940: ! 10941: ! 10942: ! 10943: ! 10944: ! 10945: ! 10946: ! 10947: ! 10948: ! 10949: ! 10950: ! 10951: ! 10952: ! 10953: ! 10954: ! 10955: ! 10956:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.