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