COMPILATION LISTING OF SEGMENT modevl_ Compiled by: Multics PL/I Compiler, Release 31a, of October 12, 1988 Compiled at: Honeywell Bull, Phoenix AZ, SysM Compiled on: 10/17/88 1006.9 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* * Copyright (c) 1972 by Massachusetts Institute of * 8* * Technology and Honeywell Information Systems, Inc. * 9* * * 10* *********************************************************** */ 11 12 13 modevl_: 14 procedure ( dummy /* normally BRK */ ) returns ( fixed bin(17) ); 15 /* 16* Last modified on 07/06/72 at 22:26:10 by R F Mabee. 17* by RFM on 6 July 1972 to add itp modifier. 18* by RHG on 17 Sept 1970 to fix bug in octal modifiers 19* by RHG on 28 August 1970 at 0916 to allow octal modifiers 20* by Nate Adleman on June 28, 1970 at 2037 for the new CODTAB 21**/ 22 /* MODEVL: evaluate address modifier, if any. */ 23 24 /* Possible modifier types are: (r), *(r), (r)*, and (it). 25* all modifiers are tested, but note that the index 26* pseudo - operation is not yet coded. However, all 645 27* modifiers are included. */ 28 29 /* INCLUDE FILES USED BY MODEVL */ 30 31 1 1 1 2 1 3 1 4 /* include file for CODTAB */ 1 5 1 6 declare 1 eb_data_$codtab ext aligned, 1 7 2 ( inul, isoh, istx, ietx, ieot, ienq, iack, ibel, 1 8 ibs, iht, inl, ivt, iff, icr, irrs, ibrs, 1 9 idle, irht, ihlf, irvt, ihlr, inak, isyn, ietb, 1 10 ican, iem, iss, iesc, ifs, igs, irs, ius, 1 11 isp, ixclm, iquot, ilb, idolr, ipcnt, iampr, iapos, 1 12 ilpar, irpar, istar, iplus, icomma, iminus, ipoint, islash, 1 13 inum, inum_pad(9), icol, isc, ilpb, iequal, irpb, iques, iat, 1 14 ilet, ilet_pad(25), ilsb, irslsh, irsb, icflx, iulin, igrv, illet,illet_pad(25), 1 15 ilbrc, ivlin, irbrc, itldf, idel ) fixed bin (17) ; 1 16 /* NA on June 26, 1970 at 1344 for padded arrays */ 32 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 */ 33 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 34 4 1 /* Begin include file varcom.incl.pl1. */ 4 2 /* RHG added new variables 9/7/70. */ 4 3 /* RFM added new cells for new object segment format and first-reference trap, 27 March 1972. */ 4 4 /* RFM added include file stuff, then cross referencer stuff, 23 July 1972. */ 4 5 /* Last modified on 07/23/72 at 04:19:25 by R F Mabee. */ 4 6 4 7 declare 1 eb_data_$varcom external aligned, 4 8 2 (brk(2), nbrk(2), sym(8), dsym(8),old_locsym, pc, spc, tpc, 4 9 pclst, p2pcl, old_ndpcls, tvorg, tvcnt, tvlth, litorg, 4 10 litc, deforg, defc, defcnt, stkc, lnkc, lnkno, 4 11 litlst, old_ndltls, lnklst, old_ndlkls, explst, blklst, namlst, 4 12 trplst, xdflst, tvlst, begin_line, tpass1, tpass2, tpostp, 4 13 tinhib, tmmode, txonly, tmm2, txo2, tprot, tcall, 4 14 tmvdef, tpulnk, tfatal, calrho, lreter, passwd, binlin, 4 15 nboxes, box(0:210), myfil, mynam, myblk, mylnk, tpost1 ) fixed bin (26) , 4 16 2 source_printed bit(1) aligned, 4 17 2 (ndpcls, ndltls, ndlkls, ndtvls) ptr, 4 18 2 (basno, value, admod, b29, iaddr, symlnk ) fixed bin (26), 4 19 2 (itxtmod, ilnkmod, entrieslc, include_file_list, include_index, 4 20 first_ref_trap_proc_linkno, first_ref_trap_arg_linkno, 4 21 text_section_length) fixed binary (26), 4 22 2 (include_info_stack, include_name_list_base, include_name_list_top) pointer, 4 23 2 symbol_tree_rel fixed binary (26); 4 24 4 25 /* End of the include file varcom.incl.pl1. */ 35 36 37 38 /* EXTERNAL ENTRIES USED BY MODEVL */ 39 40 declare getid_$getid_ ext entry, 41 inputs_$next ext entry ; 42 43 /* EXTERNAL FUNCTIONS USED BY MODEVL */ 44 45 declare table_$table_ ext entry (fixed bin (26), fixed bin (26), fixed bin, fixed bin (26), fixed bin) returns (fixed bin (26)), 46 utils_$and ext entry (fixed bin, fixed bin) returns (fixed bin) ; 47 48 49 /* EXTERNAL DATA USED BY MODEVL */ 50 51 declare ( eb_data_$itlist_ (0:20), eb_data_$rlist(0:15) ) external fixed bin(17); 52 53 /* AUTOMATIC DATA USED BY MODEVL */ 54 55 declare ( i, ixr, junk, modevl_answer, dummy ) fixed bin (17) ; 56 57 /* */ 58 /* - - - - - - - - - PROGRAM STARTS HERE - - - - - - - - - - - - - */ 59 60 /* get first identifier and break and check for star. */ 61 label_100: 62 call getid_$getid_; 63 modevl_answer = 0; 64 if (brk(1) = istar) then go to label_200; 65 if (sym(1) = 0) then go to label_300; 66 go to label_400; 67 68 69 /* star encountered, check for *(r) or (r)* modifier. */ 70 label_200: 71 if (sym(1) = 0) then go to label_210; 72 modevl_answer = 16; 73 call inputs_$next; 74 go to label_230; 75 label_210: 76 77 call getid_$getid_; 78 if (brk(1) ^= inum) then go to label_215; 79 modevl_answer = brk(2) + 8; /* actually brk(2)-"0"+56 */ 80 if modevl_answer >= 64 then goto non_octal; /* make sure digit was octal */ 81 go to get_next; 82 label_215: 83 if (sym(1) ^= 0) then go to label_220; 84 modevl_answer = 16; 85 go to modevl_return; 86 label_220: 87 88 modevl_answer = 48; 89 90 91 /* register involved, search rlist for it. */ 92 label_230: 93 94 label_240: 95 do i = 0 to 15; 96 if (sym(1) ^= eb_data_$rlist(i)) then go to label_250; 97 modevl_answer = modevl_answer + i; 98 go to modevl_return; 99 label_250: 100 end label_240; 101 102 103 104 /* not in rlist, search table for index assignment. */ 105 label_260: 106 if (table_$table_(iserch,sym(1),ixr,clint,junk) = 0) then go to label_280; 107 modevl_answer = modevl_answer + ixr + 8; 108 go to modevl_return; 109 110 /* we get here when we were expecting an octal digit but got 8 or 9 */ 111 112 non_octal: prnt7 = 1; 113 114 /* undefined modifier, set flag and exit with null register. */ 115 label_280: 116 prntt = 1; /* TRUE */ 117 go to label_310; 118 119 120 /* no *, no sym, check for digit. */ 121 label_300: 122 if (brk(1) ^= inum) then go to label_310; 123 modevl_answer = brk(2) - 40; /* actually brk(2)-"0"+8 */ 124 if modevl_answer >= 16 then goto non_octal; /* check digit was actually octal */ 125 call inputs_$next; 126 if brk(1) = inum then /*check for another digit*/ 127 do; 128 if brk(2) >= 56 then goto non_octal; /*check digit was actually octal*/ 129 modevl_answer = 8*modevl_answer+brk(2)-112; 130 goto get_next; 131 end; 132 if (brk(1) ^= istar) then go to modevl_return; 133 modevl_answer = modevl_answer + 16; 134 go to get_next; 135 136 137 /* null modifier, zero and exit. */ 138 label_310: 139 modevl_answer = 0; 140 go to modevl_return; 141 142 143 /* no star, check in it list first. */ 144 label_400: 145 146 do i = 1 to eb_data_$itlist_ (0) by 2; /* Length in first word; name, value in word pairs after. */ 147 if (sym(1) ^= eb_data_$itlist_ (i)) then go to label_410; 148 modevl_answer = eb_data_$itlist_ (i + 1); 149 go to modevl_return; 150 label_410: 151 end label_400; 152 153 /* not in itlist, go check rlist. */ 154 modevl_answer = 0; 155 go to label_240; 156 157 get_next: call inputs_$next; 158 159 modevl_return: 160 161 return( modevl_answer ); 162 163 164 165 end modevl_ ; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 10/17/88 0938.8 modevl_.pl1 >spec>install>1170>modevl_.pl1 32 1 05/06/74 1741.0 codtab.incl.pl1 >ldd>include>codtab.incl.pl1 33 2 10/21/74 1243.0 concom.incl.pl1 >ldd>include>concom.incl.pl1 34 3 07/17/81 1911.5 erflgs.incl.pl1 >ldd>include>erflgs.incl.pl1 35 4 10/21/74 1242.9 varcom.incl.pl1 >ldd>include>varcom.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 000016 external static fixed bin(26,0) array level 2 dcl 4-7 ref 64 78 79 121 123 126 128 129 132 clint 11 000012 external static fixed bin(26,0) level 2 dcl 2-6 set ref 105* dummy parameter fixed bin(17,0) dcl 55 ref 13 eb_data_$codtab 000010 external static structure level 1 dcl 1-6 eb_data_$concom 000012 external static structure level 1 dcl 2-6 eb_data_$erflgs_overlay 000014 external static structure level 1 dcl 3-9 eb_data_$itlist_ 000026 external static fixed bin(17,0) array dcl 51 ref 144 147 148 eb_data_$rlist 000030 external static fixed bin(17,0) array dcl 51 ref 96 eb_data_$varcom 000016 external static structure level 1 dcl 4-7 getid_$getid_ 000020 constant entry external dcl 40 ref 61 75 i 000100 automatic fixed bin(17,0) dcl 55 set ref 92* 96 97* 144* 147 148* inputs_$next 000022 constant entry external dcl 40 ref 73 125 157 inum 60 000010 external static fixed bin(17,0) level 2 dcl 1-6 ref 78 121 126 iserch 76 000012 external static fixed bin(26,0) level 2 dcl 2-6 set ref 105* istar 52 000010 external static fixed bin(17,0) level 2 dcl 1-6 ref 64 132 ixr 000101 automatic fixed bin(17,0) dcl 55 set ref 105* 107 junk 000102 automatic fixed bin(17,0) dcl 55 set ref 105* modevl_answer 000103 automatic fixed bin(17,0) dcl 55 set ref 63* 72* 79* 80 84* 86* 97* 97 107* 107 123* 124 129* 129 133* 133 138* 148* 154* 159 prnt7 21 000014 external static fixed bin(17,0) level 2 dcl 3-9 set ref 112* prntt 10 000014 external static fixed bin(17,0) level 2 dcl 3-9 set ref 115* sym 4 000016 external static fixed bin(26,0) array level 2 dcl 4-7 set ref 65 70 82 96 105* 147 table_$table_ 000024 constant entry external dcl 45 ref 105 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. eb_data_$erflgs external static structure level 1 dcl 3-5 utils_$and 000000 constant entry external dcl 45 NAMES DECLARED BY EXPLICIT CONTEXT. get_next 000246 constant label dcl 157 ref 81 130 134 label_100 000013 constant label dcl 61 label_200 000031 constant label dcl 70 ref 64 label_210 000043 constant label dcl 75 ref 70 label_215 000063 constant label dcl 82 ref 78 label_220 000071 constant label dcl 86 ref 82 label_230 000073 constant label dcl 92 ref 74 label_240 000073 constant label dcl 92 ref 155 label_250 000110 constant label dcl 99 ref 96 label_260 000112 constant label dcl 105 label_280 000150 constant label dcl 115 ref 105 label_300 000155 constant label dcl 121 ref 65 label_310 000215 constant label dcl 138 ref 117 121 label_400 000217 constant label dcl 144 ref 66 label_410 000241 constant label dcl 150 ref 147 modevl_ 000006 constant entry external dcl 13 modevl_return 000252 constant label dcl 159 ref 85 98 108 132 140 149 non_octal 000144 constant label dcl 112 ref 80 124 128 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 366 420 256 376 Length 654 256 32 220 107 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME modevl_ 84 external procedure is an external procedure. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME modevl_ 000100 i modevl_ 000101 ixr modevl_ 000102 junk modevl_ 000103 modevl_answer modevl_ 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. getid_$getid_ inputs_$next table_$table_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. eb_data_$codtab eb_data_$concom eb_data_$erflgs_overlay eb_data_$itlist_ eb_data_$rlist eb_data_$varcom LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 13 000002 61 000013 63 000017 64 000020 65 000025 66 000030 70 000031 72 000034 73 000036 74 000042 75 000043 78 000047 79 000054 80 000060 81 000062 82 000063 84 000066 85 000070 86 000071 92 000073 96 000077 97 000105 98 000107 99 000110 105 000112 107 000137 108 000143 112 000144 115 000150 117 000154 121 000155 123 000160 124 000163 125 000165 126 000171 128 000176 129 000202 130 000207 132 000210 133 000212 134 000214 138 000215 140 000216 144 000217 147 000227 148 000235 149 000240 150 000241 154 000244 155 000245 157 000246 159 000252 ----------------------------------------------------------- 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