|
|
1.1 root 1: movl initr,r8 # terminal flag
2: #---> tstl r8 # skip if no terminal
3: beqlu ini13 # skip if no terminal
4:
5: addl2 cswex,noxeq # add -noexecute flag
6: #---> tstl noxeq # jump if execution suppressed
7: bnequ inix2 # jump if execution suppressed
8:
9: movl 4*icval(r10),r5 # load exponent
10: #---> tstl r5 # error if negative exponent
11: bgeq 0f # error if negative exponent
12:
13: subl2 4*1(sp),r6 # minus final cursor = total length
14: #---> tstl r6 # jump if result is null
15: bnequ 0f # jump if result is null
16:
17: movl 4*sclen(r10),r6 # load length
18: #---> tstl r6 # jump if null replacement
19: beqlu orpl2 # jump if null replacement
20:
21: subl2 r8,r6 # minus final cursor = part 3 length
22: #---> tstl r6 # jump to assign if part 3 is null
23: bnequ 0f # jump to assign if part 3 is null
24:
25: labo1: movl kvert,r6 # load error code
26: #---> tstl r6 # jump if no error has occured
27: beqlu labo2 # jump if no error has occured
28:
29: lcnt1: movl r$cnt,r9 # load continuation code block ptr
30: #---> tstl r9 # jump if no previous error
31: beqlu lcnt2 # jump if no previous error
32:
33: movl 4*efrsl(r10),r7 # get result type id
34: #---> tstl r7 # branch if not unconverted
35: bnequ befa8 # branch if not unconverted
36:
37: movl 4*ffnxt(r9),r9 # else link to next ffblk on chain
38: #---> tstl r9 # loop back if another entry to check
39: bnequ bffc1 # loop back if another entry to check
40:
41: movl 4*pfnlo(r10),r6 # load number of locals
42: #---> tstl r6 # jump if no locals
43: beqlu bpf07 # jump if no locals
44:
45: addl2 kvftr,r6 # add ftrace value
46: #---> tstl r6 # jump if tracing possible
47: bnequ bpf09 # jump if tracing possible
48:
49: bicl2 r11,r6
50: #---> tstl r6 # fail if no match
51: bnequ 0f # fail if no match
52:
53: decl r8 # else decrement level counter
54: #---> tstl r8 # loop back if not at outer level
55: bnequ pbal2 # loop back if not at outer level
56:
57: subl2 r7,r8 # get number of characters left
58: #---> tstl r8 # fail if no characters left
59: bnequ 0f # fail if no characters left
60:
61: subl2 r7,r8 # get number of characters left
62: #---> tstl r8 # fail if no characters left
63: bnequ 0f # fail if no characters left
64:
65: bicl2 r11,r6
66: #---> tstl r6 # succeed if break character found
67: beqlu 0f # succeed if break character found
68:
69: bicl2 r11,r6
70: #---> tstl r6 # fail if character is matched
71: beqlu 0f # fail if character is matched
72:
73: subl2 r7,r8 # calculate number of characters left
74: #---> tstl r8 # fail if no characters left
75: bnequ 0f # fail if no characters left
76:
77: bicl2 r11,r6
78: #---> tstl r6 # jump if no match
79: beqlu pspn3 # jump if no match
80:
81: subl2 r7,r8 # calculate number of characters left
82: #---> tstl r8 # fail if no characters left
83: bnequ 0f # fail if no characters left
84:
85: movl 4*icval(r9),r5 # load integer value
86: #---> tstl r5 # jump if zero or neg (bad dimension)
87: bgtr 0f # jump if zero or neg (bad dimension)
88:
89: movl arptr,r10 # load offset (also pass indicator)
90: #---> tstl r10 # jump if first pass
91: beqlu sar05 # jump if first pass
92:
93: movl 4*icval(r9),r5 # get value
94: #---> tstl r5 # branch if negative or zero
95: bleq sbf01 # branch if negative or zero
96:
97: sclr4: movl 4*vrnxt(r9),r9 # point to next vrblk on chain
98: #---> tstl r9 # jump for next bucket if chain end
99: beqlu sclr3 # jump for next bucket if chain end
100:
101: scv02: movl (r10)+,r9 # load next table entry, bump pointer
102: #---> tstl r9 # fail if zero marking end of list
103: bnequ 0f # fail if zero marking end of list
104:
105: subl2 intv2,r5 # subtract 2 to compare
106: #---> tstl r5 # fail if dim2 not 2
107: beql 0f # fail if dim2 not 2
108:
109: movl 4*1(r10),r6 # load length for sbstr
110: #---> tstl r6 # return null if length is zero
111: bnequ 0f # return null if length is zero
112:
113: decl (sp) # count down
114: #---> tstl (sp) # loop
115: bnequ sdup5 # loop
116:
117: movl 4*2(r10),r10 # get next link
118: #---> tstl r10 # stop if chain end
119: beqlu senf4 # stop if chain end
120:
121: senf4: movl enfch,r10 # get chain head
122: #---> tstl r10 # finished if chain end
123: bnequ 0f # finished if chain end
124:
125: movl r$rpt,r9 # point to current table (if any)
126: #---> tstl r9 # jump if we already have a table
127: bnequ srpl2 # jump if we already have a table
128:
129: movl r9,r7 # save second argument
130: #---> tstl r7 # jump if second argument zero
131: bnequ 0f # jump if second argument zero
132:
133: ssubb: movl sbssv,r8 # reload third argument
134: #---> tstl r8 # skip if third arg given
135: bnequ ssub1 # skip if third arg given
136:
137: acs05: movl 4*trtyp(r9),r7 # load trap type code
138: #---> tstl r7 # jump if not input association
139: beqlu 0f # jump if not input association
140:
141: movl 4*trfpt(r9),r10 # get file ctrl blk ptr or zero
142: #---> tstl r10 # jump if not standard input file
143: bnequ acs06 # jump if not standard input file
144:
145: acmp3: movl 4*icval(r10),r5 # load second argument
146: #---> tstl r5 # gt if negative
147: blss acmp1 # gt if negative
148:
149: subl2 aldyn,r5 # subtract from scaled up free store
150: #---> tstl r5 # jump if sufficient free store
151: bgtr aloc5 # jump if sufficient free store
152:
153: asg11: movl 4*trfpt(r10),r6 # fcblk ptr
154: #---> tstl r6 # jump if standard output file
155: beqlu asg13 # jump if standard output file
156:
157: bicl2 r11,r6
158: #---> tstl r6 # jump if constant keyword
159: bnequ cgv00 # jump if constant keyword
160:
161: bicl2 r11,r6
162: #---> tstl r6 # jump if not
163: beqlu cgv12 # jump if not
164:
165: bicl2 r11,r6
166: #---> tstl r6 # jump if preevaluation permitted
167: bnequ cgv08 # jump if preevaluation permitted
168:
169: bicl2 r11,r6
170: #---> tstl r6 # ordinary binop if not
171: bnequ 0f # ordinary binop if not
172:
173: bicl2 r11,r6
174: #---> tstl r6 # go gen if not constant
175: bnequ 0f # go gen if not constant
176:
177: cdwd1: movl r$ccb,r9 # load ptr to ccblk being built
178: #---> tstl r9 # jump if block allocated
179: bnequ cdwd2 # jump if block allocated
180:
181: subl2 r7,r6 # get length of label
182: #---> tstl r6 # skip if label length zero
183: bnequ 0f # skip if label length zero
184:
185: bisl2 4*cmcgo(sp),r8 # check if conditional goto
186: #---> tstl r8 # jump if -nofail and no cond. goto
187: beqlu cmpse # jump if -nofail and no cond. goto
188:
189: movl 4*cmlbl(sp),r10 # get possible label pointer
190: #---> tstl r10 # skip if no label
191: beqlu cmp26 # skip if no label
192:
193: cmp27: movl 4*cmsop(sp),r6 # load success offset
194: #---> tstl r6 # jump if no fill in required
195: beqlu cmp28 # jump if no fill in required
196:
197: bisl2 4*cmsgo(sp),r7 # or in success goto
198: #---> tstl r7 # ok if non-null field
199: beqlu 0f # ok if non-null field
200:
201: bicl2 r11,r7
202: #---> tstl r7 # redef ok if not
203: beqlu dffn3 # redef ok if not
204:
205: movl 4*trtrf(r10),r10# point to trtrf trap block
206: #---> tstl r10 # jump if no iochn
207: beqlu dtch5 # jump if no iochn
208:
209: movl 4*trtrf(r10),r10# point to next link
210: #---> tstl r10 # jump if end of chain
211: beqlu dtch5 # jump if end of chain
212:
213: dmp01: movl 4*vrnxt(r9),r9 # point to next vrblk on chain
214: #---> tstl r9 # jump if end of this hash chain
215: bnequ 0f # jump if end of this hash chain
216:
217: movl (r10),r9 # load pointer to next entry
218: #---> tstl r9 # jump if end of chain to insert
219: bnequ 0f # jump if end of chain to insert
220:
221: dmp10: movl dmvch,r9 # load pointer to next entry on chain
222: #---> tstl r9 # jump if end of chain
223: beqlu dmp11 # jump if end of chain
224:
225: dmp12: movl (r10)+,r9 # load next svblk ptr from table
226: #---> tstl r9 # jump if end of list
227: beqlu dmp13 # jump if end of list
228:
229: movl 4*bclen(r9),r8 # load defined length
230: #---> tstl r8 # skip characters if none
231: beqlu dmp32 # skip characters if none
232:
233: movl 4*sclen(r9),r6 # get length of string
234: #---> tstl r6 # jump if null
235: beqlu ert02 # jump if null
236:
237: gbc02: movl (r10),r9 # load ptr to next vrblk
238: #---> tstl r9 # jump if end of chain
239: beqlu gbc03 # jump if end of chain
240:
241: gbc11: movl gbcnm,r10 # point to next move block
242: #---> tstl r10 # jump if end of chain
243: beqlu gbc12 # jump if end of chain
244:
245: movl gbsvb,r7 # reload move offset
246: #---> tstl r7 # jump if no move required
247: beqlu gbc13 # jump if no move required
248:
249: movl (sp)+,r8 # restore block pointer
250: #---> tstl r8 # continue loop unless outer levl
251: bnequ gpf02 # continue loop unless outer levl
252:
253: movl 4*vrnxt(r10),r10# point to next vrblk on chain
254: #---> tstl r10 # jump if end of chain
255: beqlu gnv08 # jump if end of chain
256:
257: bicl2 r11,r7
258: #---> tstl r7 # jump if not present
259: beqlu gnv13 # jump if not present
260:
261: bicl2 r11,r8
262: #---> tstl r8 # jump if no keyword number
263: beqlu gnv17 # jump if no keyword number
264:
265: bicl2 r11,r8
266: #---> tstl r8 # skip if no system function
267: beqlu gnv18 # skip if no system function
268:
269: bicl2 r11,r8
270: #---> tstl r8 # jump if bit is off (no system labl)
271: beqlu gnv19 # jump if bit is off (no system labl)
272:
273: bicl2 r11,r8
274: #---> tstl r8 # all done if no value
275: bnequ 0f # all done if no value
276:
277: movl 4*sclen(r10),r6 # load length
278: #---> tstl r6 # jump if not system variable
279: bnequ gts04 # jump if not system variable
280:
281: decl r10 # decrement counter
282: #---> tstl r10 # loop back if more to go
283: bnequ gts25 # loop back if more to go
284:
285: movl 4*bclen(r10),r6 # get size to allocate
286: #---> tstl r6 # if null then return null
287: beqlu gts33 # if null then return null
288:
289: subl2 r8,r6 # subtract to get remainder
290: #---> tstl r6 # no pad if already even boundary
291: bnequ 0f # no pad if already even boundary
292:
293: movl r$iot,r9 # get 0 or trtrf ptr
294: #---> tstl r9 # jump if trtrf block exists
295: beqlu 0f # jump if trtrf block exists
296:
297: iop20: movl 4*trtrf(r9),r9 # next link of chain
298: #---> tstl r9 # not found
299: beqlu iop21 # not found
300:
301: bicl2 r11,r6
302: #---> tstl r6 # error if no keyword association
303: beqlu kwnm1 # error if no keyword association
304:
305: movl lstsn,r9 # load statement number
306: #---> tstl r9 # jump if no statement number
307: beqlu list2 # jump if no statement number
308:
309: movl r$stl,r9 # load pointer to sub-title
310: #---> tstl r9 # jump if no sub-title
311: beqlu lstt1 # jump if no sub-title
312:
313: movl r$cim,r9 # point to image
314: #---> tstl r9 # jump if no image
315: beqlu nxts2 # jump if no image
316:
317: movl 4*sclen(r10),r7 # load string length
318: #---> tstl r7 # jump if null string case
319: beqlu pats6 # jump if null string case
320:
321: movl (r9),r5 # load nr of executions
322: #---> tstl r5 # no printing if zero
323: beql prfl3 # no printing if zero
324:
325: movl prlen,r7 # get prior length if any
326: #---> tstl r7 # skip if no length
327: beqlu prpa2 # skip if no length
328:
329: bicl2 r11,r7
330: #---> tstl r7 # skip if clear
331: beqlu prpa4 # skip if clear
332:
333: bicl2 r11,r8
334: #---> tstl r8 # jump if terminal required
335: beqlu 0f # jump if terminal required
336:
337: prn07: movl r9,r8 # copy vrblk pointer
338: #---> tstl r8 # jump if chain end (or prnmv zero)
339: beqlu prn09 # jump if chain end (or prnmv zero)
340:
341: subl2 r7,r6 # subtract count of chars already out
342: #---> tstl r6 # jump to exit if none left
343: bnequ 0f # jump to exit if none left
344:
345: subl2 profs,r9 # get chars left in print buffer
346: #---> tstl r9 # skip if room left on this line
347: bnequ prst2 # skip if room left on this line
348:
349: movl r$cni,r9 # get ptr to next image
350: #---> tstl r9 # exit if already read
351: bnequ read3 # exit if already read
352:
353: subl2 4*ardm2(r10),r5 # check against dimension
354: #---> tstl r5 # fail if too large
355: blss 0f # fail if too large
356:
357: subl2 $4,r8 # i = i - 1
358: #---> tstl r8 # loop if i gt 0
359: bnequ srt10 # loop if i gt 0
360:
361: srt11: subl2 $4,r8 # i = i - 1 (n - 1 initially)
362: #---> tstl r8 # jump if done
363: beqlu srt12 # jump if done
364:
365: decl srtnr # decrement row count
366: #---> tstl srtnr # repeat till all rows done
367: bnequ srt13 # repeat till all rows done
368:
369: movl srtfd,r9 # get possible former dfblk ptr
370: #---> tstl r9 # jump if not
371: beqlu srtf4 # jump if not
372:
373: tfn02: movl 4*1(r9),r5 # load value as hash source
374: #---> tstl r5 # ok if positive or zero
375: bgeq tfn06 # ok if positive or zero
376:
377: movl 4*2(sp),r7 # restore name/value indicator
378: #---> tstl r7 # jump if called by name
379: bnequ tfn09 # jump if called by name
380:
381: movl 4*2(sp),r7 # load name/value indicator
382: #---> tstl r7 # exit with default if value call
383: beqlu tfn09 # exit with default if value call
384:
385: movl (sp)+,r7 # get trblk ptr again
386: #---> tstl r7 # jump if stoptr case
387: beqlu trc05 # jump if stoptr case
388:
389: movl 4*sclen(r9),r6 # load string length
390: #---> tstl r6 # jump if null input
391: beqlu trim2 # jump if null input
392:
393: trim1: decl r6 # else decrement character count
394: #---> tstl r6 # loop back if more to check
395: bnequ trim0 # loop back if more to check
396:
397: subl2 r7,r6 # get number of remaining characters
398: #---> tstl r6 # jump if no characters left
399: beqlu xscn2 # jump if no characters left
400:
401: decl r6 # decrement count of chars left
402: #---> tstl r6 # loop back if more chars to go
403: bnequ xscn1 # loop back if more chars to go
404:
405: subl2 4*ardim(r9),r5 # subtract dimension
406: #---> tstl r5 # out of range fail if too large
407: blss 0f # out of range fail if too large
408:
409: addl2 kvftr,r7 # add ftrace
410: #---> tstl r7 # jump if no tracing possible
411: bnequ 0f # jump if no tracing possible
412:
413: movl 4*pfrtr(r9),r9 # else load return trace trblk ptr
414: #---> tstl r9 # jump if not return traced
415: beqlu rtn02 # jump if not return traced
416:
417: movl (sp)+,r10 # pop saved pointer
418: #---> tstl r10 # no action if none
419: beqlu rtn7c # no action if none
420:
421: addl2 4*pfnlo(r9),r7 # add number of locals
422: #---> tstl r7 # jump if no args/locals
423: beqlu rtn10 # jump if no args/locals
424:
425: movl kvstc,r5 # get stmt count
426: #---> tstl r5 # omit counting if negative
427: bgeq 0f # omit counting if negative
428:
429: movl kvstl,r5 # get statement limit
430: #---> tstl r5 # skip if negative
431: blss stpr2 # skip if negative
432:
433: movl scnse,r6 # load scan element offset
434: #---> tstl r6 # skip if not set
435: beqlu err02 # skip if not set
436:
437: movl r$sxc,r9 # load setexit cdblk pointer
438: #---> tstl r9 # continue if no setexit trap
439: bnequ 0f # continue if no setexit trap
440:
441: err08: movl dmvch,r9 # chain head for affected vrblks
442: #---> tstl r9 # done if zero
443: beqlu err06 # done if zero
444:
445: 111 redundant TSTL instructions removed
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.