COMPILATION LISTING OF SEGMENT vfdevl_ Compiled by: Multics PL/I Compiler, Release 31a, of October 12, 1988 Compiled at: Honeywell Bull, Phoenix AZ, SysM Compiled on: 10/17/88 0943.1 mst Mon Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1988 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 6* * * 7* *********************************************************** */ 8 9 /* ****************************************************** 10* * * 11* * * 12* * Copyright (c) 1972 by Massachusetts Institute of * 13* * Technology and Honeywell Information Systems, Inc. * 14* * * 15* * * 16* ****************************************************** */ 17 18 vfdevl_: vfdcnt: 19 20 procedure (rslts, flags, k); /* note that k is really the return value of vfdevl */ 21 22 /* vfdevl evaluate variable field expr and return results and break. */ 23 /* vfdevl returns at most 10 words in rslts, no modifiers are allowed */ 24 /* note that type #a# fields are allowed and yield right justified */ 25 /* ascii characters preceded by nulls. fields may be any number */ 26 /* of bits long, but only the rightmost 36 bits of any field are */ 27 /* evaluated, the leading (n-36) bits will be zeroes (nulls) . */ 28 /* flags argument is for possible future relocation bits. */ 29 30 31 /* Modified for "vfd" pseudo-op on 12/15/75 by Eugene E Wiatrowski. 32* Modified on 112372 at 03:01:33 by R F Mabee. 33* by R F Mabee and RHG to straighten out prntr on expevl_ error error. 34* by R F Mabee on 2 November 1972 to fix bug that terminated scan on 4 char field. 35* by RHG on 1 April 1971 to fix bad expevl_ to set prntr, not prnte 36* by NA on July 16, 1970 at 0918 to fix n > 36 fields */ 37 38 1 1 /* Begin include file varcom.incl.pl1. */ 1 2 /* RHG added new variables 9/7/70. */ 1 3 /* RFM added new cells for new object segment format and first-reference trap, 27 March 1972. */ 1 4 /* RFM added include file stuff, then cross referencer stuff, 23 July 1972. */ 1 5 /* Last modified on 07/23/72 at 04:19:25 by R F Mabee. */ 1 6 1 7 declare 1 eb_data_$varcom external aligned, 1 8 2 (brk(2), nbrk(2), sym(8), dsym(8),old_locsym, pc, spc, tpc, 1 9 pclst, p2pcl, old_ndpcls, tvorg, tvcnt, tvlth, litorg, 1 10 litc, deforg, defc, defcnt, stkc, lnkc, lnkno, 1 11 litlst, old_ndltls, lnklst, old_ndlkls, explst, blklst, namlst, 1 12 trplst, xdflst, tvlst, begin_line, tpass1, tpass2, tpostp, 1 13 tinhib, tmmode, txonly, tmm2, txo2, tprot, tcall, 1 14 tmvdef, tpulnk, tfatal, calrho, lreter, passwd, binlin, 1 15 nboxes, box(0:210), myfil, mynam, myblk, mylnk, tpost1 ) fixed bin (26) , 1 16 2 source_printed bit(1) aligned, 1 17 2 (ndpcls, ndltls, ndlkls, ndtvls) ptr, 1 18 2 (basno, value, admod, b29, iaddr, symlnk ) fixed bin (26), 1 19 2 (itxtmod, ilnkmod, entrieslc, include_file_list, include_index, 1 20 first_ref_trap_proc_linkno, first_ref_trap_arg_linkno, 1 21 text_section_length) fixed binary (26), 1 22 2 (include_info_stack, include_name_list_base, include_name_list_top) pointer, 1 23 2 symbol_tree_rel fixed binary (26); 1 24 1 25 /* End of the include file varcom.incl.pl1. */ 39 2 1 2 2 2 3 2 4 /* include file for CONCOM */ 2 5 2 6 declare 1 eb_data_$concom ext aligned, 2 7 2 (ap, ab, bp, bb, lp, lb, sp, sb, 2 8 clunk, clint, clext, clbas, clstk, clndx, clmlc, fdef, 2 9 fmul, fphs, fset, frel, fabs, fbol, fcom, find, 2 10 flocrf, fequrf, fbolrf, fsetrf, fbasrf, fsegrf, fstkrf, fndxrf, 2 11 fmlcrf, onesev, twosev, thrsev, forsev, fivsev, sixsev, allsev, 2 12 symbas(8),mir, mri, mdu, mdl, mx0, mx1, mpc, 2 13 mpci, mfi, mits, mitb, ixtern, intern, iassgn, iserch, 2 14 ixvrvl, ixvrvp, invrvl, invrvp, ibvrvl, ibvrvp, iaccvl, iacivl, 2 15 mcmpq, mcmpx0, mldaq, mldq, mldx0, mnopdu, mstcd, mtra, 2 16 mtnc, mtnz, meabsp, meapap, meapbp, meaplp, meapsp, mstpap, 2 17 mstpbp, mstplp, mstpsp, i1542, i642, i3333, i66, ibb, 2 18 ibsp, nullf, smxer(2), sentry(2),sretrn(2), dzero(2) ) fixed bin (26) aligned ; 2 19 2 20 /* end of the include file for CONCOM */ 40 3 1 3 2 /* Last modified by EBush on 2/5/81 to add prnta */ 3 3 3 4 3 5 declare 1 eb_data_$erflgs ext aligned, 3 6 2 flgvec (36) fixed bin (17) aligned ; 3 7 3 8 3 9 declare 1 eb_data_$erflgs_overlay ext aligned, /* overlays the FLGVEC */ 3 10 2 (prnte, prntf, prntm, prntn, prnto, prntp, 3 11 prntr, prnts, prntt, prntu, prntx, prntb, 3 12 prntc, prntd, prnta, prnt5, prnt6, prnt7, 3 13 tstsw(18) ) fixed bin (17) aligned ; 3 14 3 15 41 4 1 4 2 4 3 4 4 /* include file for CODTAB */ 4 5 4 6 declare 1 eb_data_$codtab ext aligned, 4 7 2 ( inul, isoh, istx, ietx, ieot, ienq, iack, ibel, 4 8 ibs, iht, inl, ivt, iff, icr, irrs, ibrs, 4 9 idle, irht, ihlf, irvt, ihlr, inak, isyn, ietb, 4 10 ican, iem, iss, iesc, ifs, igs, irs, ius, 4 11 isp, ixclm, iquot, ilb, idolr, ipcnt, iampr, iapos, 4 12 ilpar, irpar, istar, iplus, icomma, iminus, ipoint, islash, 4 13 inum, inum_pad(9), icol, isc, ilpb, iequal, irpb, iques, iat, 4 14 ilet, ilet_pad(25), ilsb, irslsh, irsb, icflx, iulin, igrv, illet,illet_pad(25), 4 15 ilbrc, ivlin, irbrc, itldf, idel ) fixed bin (17) ; 4 16 /* NA on June 26, 1970 at 1344 for padded arrays */ 42 43 44 /* EXTERNAL ENTRIES */ 45 46 declare inputs_$next ext entry, 47 inputs_$nxtnb ext entry, 48 getid_$getid_ ext entry; 49 50 /* EXTERNAL FUNCTIONS */ 51 52 declare utils_$ls ext entry (fixed bin (26), fixed bin (26)) returns (fixed bin (26)) , 53 utils_$rs ext entry (fixed bin (26), fixed bin (26)) returns (fixed bin (26)) , 54 glpl_$setblk ext entry (fixed bin (26), fixed bin (26)) returns (fixed bin (26)) , 55 expevl_$expevl_ ext entry (fixed bin (26), fixed bin (26), fixed bin (26)) returns (fixed bin (26)) , 56 utils_$or ext entry (fixed bin (26), fixed bin (26)) returns (fixed bin (35)), 57 utils_$and ext entry (fixed bin (26), fixed bin (26)) returns (fixed bin (35)); 58 59 /* EXTERNAL DATA */ 60 61 declare (eb_data_$jbo, eb_data_$jba, eb_data_$twop18) ext fixed bin (35); 62 63 /* INTERNAL DATA */ 64 65 declare rslts (128) fixed bin(35); 66 declare ( flags, val, word, lcvec (128) , trel, i, j, k, ibl, nn, iaddr, l, n, let) fixed bin (26); 67 declare vfd_buffer_size init(128) fixed bin int static; 68 69 70 71 72 i = 1; 73 rslts (1) = 0; 74 j = 0; 75 n = 0; 76 let = 0; 77 label_107: 78 79 lcvec(*) = 0; 80 81 trel = 0; /* FALSE */ 82 flags = 0; 83 call inputs_$nxtnb; 84 goto label_120; 85 86 /* Count gathering loop. */ 87 label_110: 88 call inputs_$next; 89 label_120: 90 if (brk (1) = inum) then goto label_200; 91 if (brk (1) = ilet) then goto label_210; 92 if (brk (1) = islash) then goto label_300; 93 goto label_530; 94 95 /* process characters in count field. */ 96 label_200: 97 n = 10*n+utils_$and (brk (2) , 15); 98 goto label_110; 99 100 label_210: 101 let = brk (2); 102 goto label_110; 103 104 /* slash found, branch to evaluate field. */ 105 label_300: 106 if (let = 0) then goto label_310; 107 if (let = eb_data_$jbo) then goto label_320; 108 if (let = eb_data_$jba) then goto label_335; 109 goto label_530; 110 111 label_310: 112 ibl = 0; 113 goto label_325; 114 115 label_320: 116 ibl = 1; 117 label_325: 118 call getid_$getid_; 119 nn = expevl_$expevl_ (ibl, val, iaddr); 120 if (iaddr = 0) then goto label_400; 121 if (n >= 18 & val < eb_data_$twop18) then goto label_326; 122 prntr = 1; /*TRUE*/ 123 goto label_400; 124 125 label_326: 126 k = j+n; 127 l = 0; 128 label_327: 129 if (k <= 36) then goto label_328; 130 k = k-36; 131 l = l+1; 132 goto label_327; 133 134 label_328: 135 if (k ^= 18) then goto label_329; 136 l = l+i; 137 lcvec (l) = utils_$ls (iaddr, 18); 138 trel = 1; /*TRUE*/ 139 goto label_400; 140 141 label_329: 142 if (k ^= 36) then goto label_330; 143 l = l+i; 144 lcvec (l) = utils_$or (lcvec (l) , iaddr); 145 trel = 1; /*TRUE*/ 146 goto label_400; 147 148 label_330: 149 prntr = 1; /*TRUE*/ 150 goto label_400; 151 152 label_335: 153 val = 0; 154 155 label_337: 156 call inputs_$next; 157 if (brk (1) = icomma | brk (1) = inl) then goto label_400; 158 val = utils_$or (512*val, brk (2) ); 159 goto label_337; 160 161 162 /* field evaluated, insert in output buffer. */ 163 label_400: 164 if n <= 35 then val = utils_$and (val, utils_$rs (-1, 36 - n) ); 165 label_420: 166 if ( (j+n) < 36) then goto label_440; 167 n = n- (36-j); 168 rslts (i) = utils_$or (utils_$ls (word, 36-j) , utils_$rs (val, n) ); 169 j = 0; 170 i = i+1; 171 if (i > vfd_buffer_size) then goto label_530; 172 label_430: 173 if (n < 36) then goto label_440; 174 n = n-36; 175 rslts (i) = utils_$rs (val, n); 176 i = i+1; 177 if (i > vfd_buffer_size) then goto label_530; 178 goto label_430; 179 180 label_440: 181 if n > 35 then word = val; 182 else word = utils_$or (utils_$ls (word, n) , utils_$and (val, utils_$rs (-1, 36-n) ) ); 183 j = j+n; 184 n = 0; 185 let = 0; 186 if (brk (1) = icomma) then goto label_110; 187 188 /* all done, position last word, and return to caller. */ 189 label_500: 190 if (j = 0) then goto label_510; 191 rslts (i) = utils_$ls (word, 36-j); 192 k = i; 193 goto label_520; 194 195 196 197 /* overflow return, set flags and return partial buffer. */ 198 199 label_530: 200 201 prnte = 1; 202 goto label_500; 203 204 205 label_510: 206 207 k = i-1; 208 if (i = 1) then k = 1; 209 label_520: 210 211 if (trel ^= 0) then flags = glpl_$setblk (lcvec (1) , k); 212 213 end vfdevl_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 10/17/88 0938.3 vfdevl_.pl1 >spec>install>1170>vfdevl_.pl1 39 1 10/21/74 1242.9 varcom.incl.pl1 >ldd>include>varcom.incl.pl1 40 2 10/21/74 1243.0 concom.incl.pl1 >ldd>include>concom.incl.pl1 41 3 07/17/81 1911.5 erflgs.incl.pl1 >ldd>include>erflgs.incl.pl1 42 4 05/06/74 1741.0 codtab.incl.pl1 >ldd>include>codtab.incl.pl1 NAMES DECLARED IN THIS COMPILATION. IDENTIFIER OFFSET LOC STORAGE CLASS DATA TYPE ATTRIBUTES AND REFERENCES (* indicates a set context) NAMES DECLARED BY DECLARE STATEMENT. brk 000010 external static fixed bin(26,0) array level 2 dcl 1-7 set ref 89 91 92 96* 100 157 157 158* 186 eb_data_$codtab 000014 external static structure level 1 dcl 4-6 eb_data_$erflgs_overlay 000012 external static structure level 1 dcl 3-9 eb_data_$jba 000042 external static fixed bin(35,0) dcl 61 ref 108 eb_data_$jbo 000040 external static fixed bin(35,0) dcl 61 ref 107 eb_data_$twop18 000044 external static fixed bin(35,0) dcl 61 ref 121 eb_data_$varcom 000010 external static structure level 1 dcl 1-7 expevl_$expevl_ 000032 constant entry external dcl 52 ref 119 flags parameter fixed bin(26,0) dcl 66 set ref 18 18 82* 209* getid_$getid_ 000022 constant entry external dcl 46 ref 117 glpl_$setblk 000030 constant entry external dcl 52 ref 209 i 000303 automatic fixed bin(26,0) dcl 66 set ref 72* 136 143 168 170* 170 171 175 176* 176 177 191 192 205 208 iaddr 000307 automatic fixed bin(26,0) dcl 66 set ref 119* 120 137* 144* ibl 000305 automatic fixed bin(26,0) dcl 66 set ref 111* 115* 119* icomma 54 000014 external static fixed bin(17,0) level 2 dcl 4-6 ref 157 186 ilet 101 000014 external static fixed bin(17,0) level 2 dcl 4-6 ref 91 inl 12 000014 external static fixed bin(17,0) level 2 dcl 4-6 ref 157 inputs_$next 000016 constant entry external dcl 46 ref 87 155 inputs_$nxtnb 000020 constant entry external dcl 46 ref 83 inum 60 000014 external static fixed bin(17,0) level 2 dcl 4-6 ref 89 islash 57 000014 external static fixed bin(17,0) level 2 dcl 4-6 ref 92 j 000304 automatic fixed bin(26,0) dcl 66 set ref 74* 125 165 167 168 168 169* 183* 183 189 191 k parameter fixed bin(26,0) dcl 66 set ref 18 18 125* 128 130* 130 134 141 192* 205* 208* 209* l 000310 automatic fixed bin(26,0) dcl 66 set ref 127* 131* 131 136* 136 137 143* 143 144 144 lcvec 000102 automatic fixed bin(26,0) array dcl 66 set ref 77* 137* 144* 144* 209* let 000312 automatic fixed bin(26,0) dcl 66 set ref 76* 100* 105 107 108 185* n 000311 automatic fixed bin(26,0) dcl 66 set ref 75* 96* 96 121 125 163 163 163 165 167* 167 168* 168* 172 174* 174 175* 180 182* 182* 182 182 182 182 183 184* nn 000306 automatic fixed bin(26,0) dcl 66 set ref 119* prnte 000012 external static fixed bin(17,0) level 2 dcl 3-9 set ref 199* prntr 6 000012 external static fixed bin(17,0) level 2 dcl 3-9 set ref 122* 148* rslts parameter fixed bin(35,0) array dcl 65 set ref 18 18 73* 168* 175* 191* trel 000302 automatic fixed bin(26,0) dcl 66 set ref 81* 138* 145* 209 utils_$and 000036 constant entry external dcl 52 ref 96 163 182 182 utils_$ls 000024 constant entry external dcl 52 ref 137 168 168 182 182 191 utils_$or 000034 constant entry external dcl 52 ref 144 158 168 182 utils_$rs 000026 constant entry external dcl 52 ref 163 163 168 168 175 182 182 182 182 val 000100 automatic fixed bin(26,0) dcl 66 set ref 119* 121 152* 158* 158 163* 163* 168* 168* 175* 180 182* 182* vfd_buffer_size constant fixed bin(17,0) initial dcl 67 ref 171 177 word 000101 automatic fixed bin(26,0) dcl 66 set ref 168* 168* 180* 182* 182* 182* 191* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. eb_data_$concom external static structure level 1 dcl 2-6 eb_data_$erflgs external static structure level 1 dcl 3-5 NAMES DECLARED BY EXPLICIT CONTEXT. label_107 000036 constant label dcl 77 label_110 000057 constant label dcl 87 set ref 98 102 186 label_120 000064 constant label dcl 89 ref 84 label_200 000076 constant label dcl 96 ref 89 label_210 000122 constant label dcl 100 ref 91 label_300 000126 constant label dcl 105 ref 92 label_310 000135 constant label dcl 111 ref 105 label_320 000137 constant label dcl 115 ref 107 label_325 000141 constant label dcl 117 ref 113 label_326 000200 constant label dcl 125 ref 121 label_327 000205 constant label dcl 128 ref 132 label_328 000215 constant label dcl 134 ref 128 label_329 000242 constant label dcl 141 ref 134 label_330 000270 constant label dcl 148 ref 141 label_335 000275 constant label dcl 152 ref 108 label_337 000276 constant label dcl 155 ref 159 label_400 000333 constant label dcl 163 ref 120 123 139 146 150 157 label_420 000373 constant label dcl 165 label_430 000460 constant label dcl 172 ref 178 label_440 000512 constant label dcl 180 ref 165 172 label_500 000616 constant label dcl 189 ref 202 label_510 000652 constant label dcl 205 ref 189 label_520 000663 constant label dcl 209 ref 193 label_530 000646 constant label dcl 199 ref 93 109 171 177 vfdcnt 000012 constant entry external dcl 18 vfdevl_ 000022 constant entry external dcl 18 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1052 1120 701 1062 Length 1374 701 46 237 150 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME vfdcnt 226 external procedure is an external procedure. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME vfdcnt 000100 val vfdcnt 000101 word vfdcnt 000102 lcvec vfdcnt 000302 trel vfdcnt 000303 i vfdcnt 000304 j vfdcnt 000305 ibl vfdcnt 000306 nn vfdcnt 000307 iaddr vfdcnt 000310 l vfdcnt 000311 n vfdcnt 000312 let vfdcnt THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out return_mac ext_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. expevl_$expevl_ getid_$getid_ glpl_$setblk inputs_$next inputs_$nxtnb utils_$and utils_$ls utils_$or utils_$rs THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. eb_data_$codtab eb_data_$erflgs_overlay eb_data_$jba eb_data_$jbo eb_data_$twop18 eb_data_$varcom LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 18 000006 72 000027 73 000031 74 000033 75 000034 76 000035 77 000036 81 000046 82 000047 83 000051 84 000056 87 000057 89 000064 91 000071 92 000073 93 000075 96 000076 98 000121 100 000122 102 000125 105 000126 107 000130 108 000132 109 000134 111 000135 113 000136 115 000137 117 000141 119 000145 120 000162 121 000164 122 000173 123 000177 125 000200 127 000204 128 000205 130 000211 131 000213 132 000214 134 000215 136 000217 137 000221 138 000237 139 000241 141 000242 143 000244 144 000246 145 000265 146 000267 148 000270 150 000274 152 000275 155 000276 157 000303 158 000312 159 000332 163 000333 165 000373 167 000377 168 000404 169 000453 170 000454 171 000455 172 000460 174 000463 175 000465 176 000505 177 000506 178 000511 180 000512 182 000520 183 000605 184 000607 185 000610 186 000611 189 000616 191 000620 192 000643 193 000645 199 000646 202 000651 205 000652 208 000656 209 000663 213 000700 ----------------------------------------------------------- Historical Background This edition of the Multics software materials and documentation is provided and donated to Massachusetts Institute of Technology by Group BULL including BULL HN Information Systems Inc. as a contribution to computer science knowledge. This donation is made also to give evidence of the common contributions of Massachusetts Institute of Technology, Bell Laboratories, General Electric, Honeywell Information Systems Inc., Honeywell BULL Inc., Groupe BULL and BULL HN Information Systems Inc. to the development of this operating system. Multics development was initiated by Massachusetts Institute of Technology Project MAC (1963-1970), renamed the MIT Laboratory for Computer Science and Artificial Intelligence in the mid 1970s, under the leadership of Professor Fernando Jose Corbato. Users consider that Multics provided the best software architecture for managing computer hardware properly and for executing programs. Many subsequent operating systems incorporated Multics principles. Multics was distributed in 1975 to 2000 by Group Bull in Europe , and in the U.S. by Bull HN Information Systems Inc., as successor in interest by change in name only to Honeywell Bull Inc. and Honeywell Information Systems Inc. . ----------------------------------------------------------- Permission to use, copy, modify, and distribute these programs and their documentation for any purpose and without fee is hereby granted,provided that the below copyright notice and historical background appear in all copies and that both the copyright notice and historical background and this permission notice appear in supporting documentation, and that the names of MIT, HIS, BULL or BULL HN not be used in advertising or publicity pertaining to distribution of the programs without specific prior written permission. Copyright 1972 by Massachusetts Institute of Technology and Honeywell Information Systems Inc. Copyright 2006 by BULL HN Information Systems Inc. Copyright 2006 by Bull SAS All Rights Reserved