COMPILATION LISTING OF SEGMENT om_free_opening Compiled by: Multics PL/I Compiler, Release 28d, of October 4, 1983 Compiled at: Honeywell Multics Op. - System M Compiled on: 01/03/85 1644.7 mst Thu Options: optimize list 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1983 * 4* * * 5* *********************************************************** */ 6 7 /* DESCRIPTION: 8* 9* Removes an opening info structure from the opening table. An error 10* is returned if the table does not exist or if the supplied openin id does 11* not correspond to an existing opening. 12**/ 13 14 /* HISTORY: 15* 16*Written by Matthew Pierret, 07/27/82. 17*Modified: 18*08/11/82 by Matthew Pierret: Changed ot.number_of_entries to ot.upper_bound. 19*04/12/83 by Matthew Pierret: Changed to use OPENING_TABLE_VERSION_2. This 20* version is 0-originned because hash_index_ can return a value of 21* 0. The "free" statement was changed to include the area from 22* which to free. Changed to use get_dm_free_area_. 23*09/01/83 by Lindsey L. Spratt: Changed to use the om_get_opening$hash_index 24* entry instead of calling hash_index_. 25*11/08/84 by Stanford S. Cox: CV: Updated sub_err_ call. 26*12/05/84 by Stanford S. Cox: MAIN: Chg to signal sub_err_ if open table 27* appears damaged. 28**/ 29 30 /* format: style2,ind3 */ 31 om_free_opening: 32 proc (p_table_ptr, p_id, p_code); 33 34 /* START OF DECLARATIONS */ 35 /* Parameter */ 36 37 dcl p_table_ptr ptr parameter; 38 dcl p_id bit (72) aligned parameter; 39 dcl p_code fixed bin (35) parameter; 40 41 /* Automatic */ 42 43 dcl bound_idx fixed bin (17); 44 dcl hash_index fixed bin (35); 45 dcl opening_id bit (72) aligned; 46 dcl previous_hash_bead_ptr ptr; 47 48 /* Based */ 49 50 dcl dm_area area (sys_info$max_seg_size) based (static_dm_area_ptr); 51 52 /* Builtin */ 53 54 dcl (null) builtin; 55 56 /* Constant */ 57 58 dcl myname char (32) varying init ("om_free_opening") int static options (constant); 59 60 /* Entry */ 61 62 dcl om_get_opening$hash_index 63 entry (bit (72) aligned, fixed bin (35)) returns (fixed bin); 64 dcl get_dm_free_area_ entry () returns (ptr); 65 dcl sub_err_ entry () options (variable); 66 67 /* External */ 68 69 dcl dm_error_$no_opening ext fixed bin (35); 70 dcl dm_error_$open_table_damaged 71 ext fixed bin (35); 72 dcl error_table_$unimplemented_version 73 ext fixed bin (35); 74 dcl sys_info$max_seg_size ext fixed bin (35); 75 76 /* Static */ 77 78 dcl static_dm_area_ptr ptr internal static init (null); 79 80 /* END OF DECLARATIONS */ 81 82 p_code = 0; 83 opening_table_ptr = p_table_ptr; 84 opening_id = p_id; 85 86 call CHECK_VERSION ("opening_table", opening_table.version, OPENING_TABLE_VERSION_2); 87 88 hash_index = om_get_opening$hash_index (opening_id, opening_table.upper_bound); 89 90 hash_bead_ptr = opening_table.hash_entry_ptr (hash_index); 91 if hash_bead_ptr = null 92 then p_code = dm_error_$no_opening; 93 else 94 do; 95 previous_hash_bead_ptr = null; 96 97 do bound_idx = 1 to HASH_UPPER_BOUND while (hash_bead.next_ptr ^= null & hash_bead.key ^= opening_id); 98 previous_hash_bead_ptr = hash_bead_ptr; 99 hash_bead_ptr = hash_bead.next_ptr; 100 end; 101 102 if bound_idx > HASH_UPPER_BOUND 103 then call sub_err_ (dm_error_$open_table_damaged, myname, ACTION_CANT_RESTART, null (), 0, 104 "^/Searching for opening id ^.3b.", opening_id); 105 else if hash_bead.key ^= opening_id 106 then p_code = dm_error_$no_opening; 107 else 108 do; 109 if previous_hash_bead_ptr = null 110 then opening_table.hash_entry_ptr (hash_index) = hash_bead.next_ptr; 111 else previous_hash_bead_ptr -> hash_bead.next_ptr = hash_bead.next_ptr; 112 113 if static_dm_area_ptr = null 114 then static_dm_area_ptr = get_dm_free_area_ (); 115 116 free hash_bead in (dm_area); 117 end; 118 end; 119 120 return; 121 122 CHECK_VERSION: 123 proc (cv_p_structure_name, cv_p_given_version, cv_p_correct_version); 124 125 dcl cv_p_structure_name char (*); 126 dcl cv_p_given_version char (8) aligned; 127 dcl cv_p_correct_version char (8) aligned; 128 129 if cv_p_given_version ^= cv_p_correct_version 130 then call sub_err_ (error_table_$unimplemented_version, myname, ACTION_CANT_RESTART, null, 0, 131 "^/Expected version ""^8a"" of ^a structure; received ""^8a"".", cv_p_correct_version, 132 cv_p_structure_name, cv_p_given_version); 133 134 return; 135 136 end CHECK_VERSION; 137 1 1 /* BEGIN INCLUDE FILE dm_om_table.incl.pl1 */ 1 2 1 3 1 4 /* 1 5*Modified: 1 6*08/11/82 by Matthew Pierret: Changed hash_entry_ptr array to be 0-originned. 1 7*04/12/83 by Matthew Pierret: Changed to version 2, which should have been done 1 8* on 08/11/82. 1 9*10/29/84 by Stanford S. Cox: Changed to not init version. 1 10*12/04/84 by Stanford S. Cox: Added HASH_UPPER_BOUND. 1 11**/ 1 12 /* format: style2,ind3 */ 1 13 1 14 dcl 1 opening_table aligned based (opening_table_ptr), 1 15 2 version char (8), 1 16 2 upper_bound fixed bin (35), 1 17 2 hash_entry_ptr (0:ot_upper_bound refer (opening_table.upper_bound)) ptr; 1 18 1 19 dcl opening_table_ptr ptr; 1 20 dcl OPENING_TABLE_VERSION_2 1 21 init ("opentbl2") char (8) aligned int static options (constant); 1 22 dcl ot_upper_bound fixed bin (35); 1 23 dcl HASH_UPPER_BOUND fixed bin (17) int static options (constant) init (10000); 1 24 1 25 /* END INCLUDE FILE dm_om_table.incl.pl1 */ 138 139 2 1 /* BEGIN INCLUDE FILE dm_om_hash_bead.incl.pl1 */ 2 2 2 3 2 4 /* format: style2,ind3 */ 2 5 dcl 1 hash_bead aligned based (hash_bead_ptr), 2 6 2 key bit (72) aligned, 2 7 2 info_ptr ptr, 2 8 2 next_ptr ptr; 2 9 2 10 dcl hash_bead_ptr ptr; 2 11 2 12 2 13 /* END INCLUDE FILE dm_om_hash_bead.incl.pl1 */ 140 141 3 1 /* BEGIN INCLUDE FILE sub_err_flags.incl.pl1 BIM 11/81 */ 3 2 /* format: style3 */ 3 3 3 4 /* These constants are to be used for the flags argument of sub_err_ */ 3 5 /* They are just "string (condition_info_header.action_flags)" */ 3 6 3 7 declare ( 3 8 ACTION_CAN_RESTART init (""b), 3 9 ACTION_CANT_RESTART init ("1"b), 3 10 ACTION_DEFAULT_RESTART 3 11 init ("01"b), 3 12 ACTION_QUIET_RESTART 3 13 init ("001"b), 3 14 ACTION_SUPPORT_SIGNAL 3 15 init ("0001"b) 3 16 ) bit (36) aligned internal static options (constant); 3 17 3 18 /* End include file */ 142 143 144 end om_free_opening; 145 SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 01/03/85 1150.0 om_free_opening.pl1 >spec>temp>famis1>om_free_opening.pl1 138 1 01/03/85 1005.4 dm_om_table.incl.pl1 >spec>temp>famis1>dm_om_table.incl.pl1 140 2 01/03/85 1004.1 dm_om_hash_bead.incl.pl1 >spec>temp>famis1>dm_om_hash_bead.incl.pl1 142 3 04/16/82 0958.1 sub_err_flags.incl.pl1 >ldd>include>sub_err_flags.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. ACTION_CANT_RESTART 000000 constant bit(36) initial dcl 3-7 set ref 102* 129* HASH_UPPER_BOUND constant fixed bin(17,0) initial dcl 1-23 ref 97 102 OPENING_TABLE_VERSION_2 000002 constant char(8) initial dcl 1-20 set ref 86* bound_idx 000100 automatic fixed bin(17,0) dcl 43 set ref 97* 102 cv_p_correct_version parameter char(8) dcl 127 set ref 122 129 129* cv_p_given_version parameter char(8) dcl 126 set ref 122 129 129* cv_p_structure_name parameter char unaligned dcl 125 set ref 122 129* dm_area based area dcl 50 ref 116 dm_error_$no_opening 000020 external static fixed bin(35,0) dcl 69 ref 91 105 dm_error_$open_table_damaged 000022 external static fixed bin(35,0) dcl 70 set ref 102* error_table_$unimplemented_version 000024 external static fixed bin(35,0) dcl 72 set ref 129* get_dm_free_area_ 000014 constant entry external dcl 64 ref 113 hash_bead based structure level 1 dcl 2-5 set ref 116 hash_bead_ptr 000110 automatic pointer dcl 2-10 set ref 90* 91 97 97 98 99* 99 105 109 111 116 hash_entry_ptr 4 based pointer array level 2 dcl 1-14 set ref 90 109* hash_index 000101 automatic fixed bin(35,0) dcl 44 set ref 88* 90 109 key based bit(72) level 2 dcl 2-5 ref 97 105 myname 000004 constant varying char(32) initial dcl 58 set ref 102* 129* next_ptr 4 based pointer level 2 dcl 2-5 set ref 97 99 109 111* 111 null builtin function dcl 54 ref 91 95 97 102 102 109 113 129 129 om_get_opening$hash_index 000012 constant entry external dcl 62 ref 88 opening_id 000102 automatic bit(72) dcl 45 set ref 84* 88* 97 102* 105 opening_table based structure level 1 dcl 1-14 opening_table_ptr 000106 automatic pointer dcl 1-19 set ref 83* 86 88 90 109 p_code parameter fixed bin(35,0) dcl 39 set ref 31 82* 91* 105* p_id parameter bit(72) dcl 38 ref 31 84 p_table_ptr parameter pointer dcl 37 ref 31 83 previous_hash_bead_ptr 000104 automatic pointer dcl 46 set ref 95* 98* 109 111 static_dm_area_ptr 000010 internal static pointer initial dcl 78 set ref 113 113* 116 sub_err_ 000016 constant entry external dcl 65 ref 102 129 upper_bound 2 based fixed bin(35,0) level 2 dcl 1-14 set ref 88* version based char(8) level 2 dcl 1-14 set ref 86* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ACTION_CAN_RESTART internal static bit(36) initial dcl 3-7 ACTION_DEFAULT_RESTART internal static bit(36) initial dcl 3-7 ACTION_QUIET_RESTART internal static bit(36) initial dcl 3-7 ACTION_SUPPORT_SIGNAL internal static bit(36) initial dcl 3-7 ot_upper_bound automatic fixed bin(35,0) dcl 1-22 sys_info$max_seg_size external static fixed bin(35,0) dcl 74 NAMES DECLARED BY EXPLICIT CONTEXT. CHECK_VERSION 000337 constant entry internal dcl 122 ref 86 om_free_opening 000073 constant entry external dcl 31 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 554 602 441 564 Length 1034 441 26 215 113 2 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME om_free_opening 194 external procedure is an external procedure. CHECK_VERSION internal procedure shares stack frame of external procedure om_free_opening. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 static_dm_area_ptr om_free_opening STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME om_free_opening 000100 bound_idx om_free_opening 000101 hash_index om_free_opening 000102 opening_id om_free_opening 000104 previous_hash_bead_ptr om_free_opening 000106 opening_table_ptr om_free_opening 000110 hash_bead_ptr om_free_opening THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out return ext_entry free_based THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. get_dm_free_area_ om_get_opening$hash_index sub_err_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. dm_error_$no_opening dm_error_$open_table_damaged error_table_$unimplemented_version CONSTANTS 000000 aa 400000000000 000002 aa 157 160 145 156 open 000003 aa 164 142 154 062 tbl2 000004 aa 000000000017 000005 aa 157 155 137 146 om_f 000006 aa 162 145 145 137 ree_ 000007 aa 157 160 145 156 open 000010 aa 151 156 147 040 ing 000011 aa 040 040 040 040 000012 aa 040 040 040 040 000013 aa 040 040 040 040 000014 aa 040 040 040 040 000015 aa 524000000071 000016 aa 526077777777 000017 aa 524000000040 000020 aa 404000000005 000021 aa 514000000044 000022 aa 530000000040 000023 aa 524000000010 000024 aa 524000000015 000025 aa 404000000021 000026 aa 404000000043 000027 aa 514000000110 000030 aa 464000000000 000032 aa 077777000043 000033 aa 000001000000 000034 aa 157 160 145 156 open 000035 aa 151 156 147 137 ing_ 000036 aa 164 141 142 154 tabl 000037 aa 145 000 000 000 e 000040 aa 136 057 123 145 ^/Se 000041 aa 141 162 143 150 arch 000042 aa 151 156 147 040 ing 000043 aa 146 157 162 040 for 000044 aa 157 160 145 156 open 000045 aa 151 156 147 040 ing 000046 aa 151 144 040 136 id ^ 000047 aa 056 063 142 056 .3b. 000050 aa 136 057 105 170 ^/Ex 000051 aa 160 145 143 164 pect 000052 aa 145 144 040 166 ed v 000053 aa 145 162 163 151 ersi 000054 aa 157 156 040 042 on " 000055 aa 136 070 141 042 ^8a" 000056 aa 040 157 146 040 of 000057 aa 136 141 040 163 ^a s 000060 aa 164 162 165 143 truc 000061 aa 164 165 162 145 ture 000062 aa 073 040 162 145 ; re 000063 aa 143 145 151 166 ceiv 000064 aa 145 144 040 042 ed " 000065 aa 136 070 141 042 ^8a" 000066 aa 056 000 000 000 . BEGIN PROCEDURE om_free_opening ENTRY TO om_free_opening STATEMENT 1 ON LINE 31 om_free_opening: proc (p_table_ptr, p_id, p_code); 000067 at 000003000030 000070 tt 000027000026 000071 ta 000067000000 000072 da 000107300000 000073 aa 000320 6270 00 eax7 208 000074 aa 7 00034 3521 20 epp2 pr7|28,* 000075 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 000076 aa 000006000000 000077 aa 000000000000 STATEMENT 1 ON LINE 82 p_code = 0; 000100 aa 6 00032 3735 20 epp7 pr6|26,* 000101 aa 7 00006 4501 20 stz pr7|6,* p_code STATEMENT 1 ON LINE 83 opening_table_ptr = p_table_ptr; 000102 aa 7 00002 3715 20 epp5 pr7|2,* p_table_ptr 000103 aa 5 00000 3715 20 epp5 pr5|0,* p_table_ptr 000104 aa 6 00106 6515 00 spri5 pr6|70 opening_table_ptr STATEMENT 1 ON LINE 84 opening_id = p_id; 000105 aa 7 00004 3535 20 epp3 pr7|4,* 000106 aa 3 00000 2351 00 lda pr3|0 p_id 000107 aa 3 00001 2361 00 ldq pr3|1 p_id 000110 aa 6 00102 7571 00 staq pr6|66 opening_id STATEMENT 1 ON LINE 86 call CHECK_VERSION ("opening_table", opening_table.version, OPENING_TABLE_VERSION_2); 000111 aa 777723 2370 04 ldaq -45,ic 000034 = 157160145156 151156147137 000112 aa 6 00122 7571 00 staq pr6|82 000113 aa 777723 2370 04 ldaq -45,ic 000036 = 164141142154 145000000000 000114 aa 6 00124 7571 00 staq pr6|84 000115 aa 6 00122 3521 00 epp2 pr6|82 000116 aa 6 00130 2521 00 spri2 pr6|88 000117 aa 5 00000 3521 00 epp2 pr5|0 opening_table.version 000120 aa 6 00132 2521 00 spri2 pr6|90 000121 aa 777661 3520 04 epp2 -79,ic 000002 = 157160145156 000122 aa 6 00134 2521 00 spri2 pr6|92 000123 aa 777701 3520 04 epp2 -63,ic 000024 = 524000000015 000124 aa 6 00136 2521 00 spri2 pr6|94 000125 aa 777676 3520 04 epp2 -66,ic 000023 = 524000000010 000126 aa 6 00140 2521 00 spri2 pr6|96 000127 aa 6 00142 2521 00 spri2 pr6|98 000130 aa 6 00126 3521 00 epp2 pr6|86 000131 aa 014000 4310 07 fld 6144,dl 000132 aa 2 00000 7571 00 staq pr2|0 000133 aa 000204 6700 04 tsp4 132,ic 000337 STATEMENT 1 ON LINE 88 hash_index = om_get_opening$hash_index (opening_id, opening_table.upper_bound); 000134 aa 6 00102 3521 00 epp2 pr6|66 opening_id 000135 aa 6 00130 2521 00 spri2 pr6|88 000136 aa 6 00106 3735 20 epp7 pr6|70,* opening_table_ptr 000137 aa 7 00002 3521 00 epp2 pr7|2 opening_table.upper_bound 000140 aa 6 00132 2521 00 spri2 pr6|90 000141 aa 6 00146 3521 00 epp2 pr6|102 000142 aa 6 00134 2521 00 spri2 pr6|92 000143 aa 6 00126 6211 00 eax1 pr6|86 000144 aa 014000 4310 07 fld 6144,dl 000145 aa 6 00044 3701 20 epp4 pr6|36,* 000146 la 4 00012 3521 20 epp2 pr4|10,* om_get_opening$hash_index 000147 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out 000150 aa 6 00146 2361 00 ldq pr6|102 000151 aa 6 00101 7561 00 stq pr6|65 hash_index STATEMENT 1 ON LINE 90 hash_bead_ptr = opening_table.hash_entry_ptr (hash_index); 000152 aa 000001 7360 00 qls 1 000153 aa 6 00106 3735 20 epp7 pr6|70,* opening_table_ptr 000154 aa 7 00004 3735 26 epp7 pr7|4,ql* opening_table.hash_entry_ptr 000155 aa 6 00110 6535 00 spri7 pr6|72 hash_bead_ptr STATEMENT 1 ON LINE 91 if hash_bead_ptr = null then p_code = dm_error_$no_opening; 000156 aa 6 00110 2371 00 ldaq pr6|72 hash_bead_ptr 000157 aa 777653 6770 04 eraq -85,ic 000032 = 077777000043 000001000000 000160 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 000161 aa 000006 6010 04 tnz 6,ic 000167 000162 aa 6 00044 3701 20 epp4 pr6|36,* 000163 la 4 00020 2361 20 ldq pr4|16,* dm_error_$no_opening 000164 aa 6 00032 3715 20 epp5 pr6|26,* 000165 aa 5 00006 7561 20 stq pr5|6,* p_code 000166 aa 000150 7100 04 tra 104,ic 000336 STATEMENT 1 ON LINE 93 else do; STATEMENT 1 ON LINE 95 previous_hash_bead_ptr = null; 000167 aa 777643 2370 04 ldaq -93,ic 000032 = 077777000043 000001000000 000170 aa 6 00104 7571 00 staq pr6|68 previous_hash_bead_ptr STATEMENT 1 ON LINE 97 do bound_idx = 1 to HASH_UPPER_BOUND while (hash_bead.next_ptr ^= null & hash_bead.key ^= opening_id); 000171 aa 023420 2360 07 ldq 10000,dl 000172 aa 6 00112 7561 00 stq pr6|74 000173 aa 000001 2360 07 ldq 1,dl 000174 aa 6 00100 7561 00 stq pr6|64 bound_idx 000175 aa 000000 0110 03 nop 0,du 000176 aa 6 00100 2361 00 ldq pr6|64 bound_idx 000177 aa 6 00112 1161 00 cmpq pr6|74 000200 aa 000017 6054 04 tpnz 15,ic 000217 000201 aa 6 00110 3735 20 epp7 pr6|72,* hash_bead_ptr 000202 aa 7 00004 2371 00 ldaq pr7|4 hash_bead.next_ptr 000203 aa 777627 6770 04 eraq -105,ic 000032 = 077777000043 000001000000 000204 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 000205 aa 000012 6000 04 tze 10,ic 000217 000206 aa 7 00000 2351 00 lda pr7|0 hash_bead.key 000207 aa 7 00001 2361 00 ldq pr7|1 hash_bead.key 000210 aa 6 00102 1171 00 cmpaq pr6|66 opening_id 000211 aa 000006 6000 04 tze 6,ic 000217 STATEMENT 1 ON LINE 98 previous_hash_bead_ptr = hash_bead_ptr; 000212 aa 6 00104 6535 00 spri7 pr6|68 previous_hash_bead_ptr STATEMENT 1 ON LINE 99 hash_bead_ptr = hash_bead.next_ptr; 000213 aa 7 00004 3715 20 epp5 pr7|4,* hash_bead.next_ptr 000214 aa 6 00110 6515 00 spri5 pr6|72 hash_bead_ptr STATEMENT 1 ON LINE 100 end; 000215 aa 6 00100 0541 00 aos pr6|64 bound_idx 000216 aa 777760 7100 04 tra -16,ic 000176 STATEMENT 1 ON LINE 102 if bound_idx > HASH_UPPER_BOUND then call sub_err_ (dm_error_$open_table_damaged, myname, ACTION_CANT_RESTART, null (), 0, "^/Searching for opening id ^.3b.", opening_id); 000217 aa 6 00100 2361 00 ldq pr6|64 bound_idx 000220 aa 023420 1160 07 cmpq 10000,dl 000221 aa 000051 6044 04 tmoz 41,ic 000272 000222 aa 777610 3734 24 epp7 -120,ic* 000223 aa 6 00150 6535 00 spri7 pr6|104 000224 aa 6 00147 4501 00 stz pr6|103 000225 aa 000 100 100 404 mlr (ic),(pr),fill(000) 000226 aa 777613 00 0040 desc9a -117,32 000040 = 136057123145 000227 aa 6 00126 00 0040 desc9a pr6|86,32 000230 aa 6 00044 3701 20 epp4 pr6|36,* 000231 la 4 00022 3521 20 epp2 pr4|18,* dm_error_$open_table_damaged 000232 aa 6 00154 2521 00 spri2 pr6|108 000233 aa 777552 3520 04 epp2 -150,ic 000005 = 157155137146 000234 aa 6 00156 2521 00 spri2 pr6|110 000235 aa 777543 3520 04 epp2 -157,ic 000000 = 400000000000 000236 aa 6 00160 2521 00 spri2 pr6|112 000237 aa 6 00150 3521 00 epp2 pr6|104 000240 aa 6 00162 2521 00 spri2 pr6|114 000241 aa 6 00147 3521 00 epp2 pr6|103 000242 aa 6 00164 2521 00 spri2 pr6|116 000243 aa 6 00126 3521 00 epp2 pr6|86 000244 aa 6 00166 2521 00 spri2 pr6|118 000245 aa 6 00102 3521 00 epp2 pr6|66 opening_id 000246 aa 6 00170 2521 00 spri2 pr6|120 000247 aa 777557 3520 04 epp2 -145,ic 000026 = 404000000043 000250 aa 6 00172 2521 00 spri2 pr6|122 000251 aa 777551 3520 04 epp2 -151,ic 000022 = 530000000040 000252 aa 6 00174 2521 00 spri2 pr6|124 000253 aa 777546 3520 04 epp2 -154,ic 000021 = 514000000044 000254 aa 6 00176 2521 00 spri2 pr6|126 000255 aa 777553 3520 04 epp2 -149,ic 000030 = 464000000000 000256 aa 6 00200 2521 00 spri2 pr6|128 000257 aa 777541 3520 04 epp2 -159,ic 000020 = 404000000005 000260 aa 6 00202 2521 00 spri2 pr6|130 000261 aa 777536 3520 04 epp2 -162,ic 000017 = 524000000040 000262 aa 6 00204 2521 00 spri2 pr6|132 000263 aa 777544 3520 04 epp2 -156,ic 000027 = 514000000110 000264 aa 6 00206 2521 00 spri2 pr6|134 000265 aa 6 00152 6211 00 eax1 pr6|106 000266 aa 034000 4310 07 fld 14336,dl 000267 la 4 00016 3521 20 epp2 pr4|14,* sub_err_ 000270 aa 0 00622 7001 00 tsx0 pr0|402 call_ext_out_desc 000271 aa 000045 7100 04 tra 37,ic 000336 STATEMENT 1 ON LINE 105 else if hash_bead.key ^= opening_id then p_code = dm_error_$no_opening; 000272 aa 6 00110 3735 20 epp7 pr6|72,* hash_bead_ptr 000273 aa 7 00000 2351 00 lda pr7|0 hash_bead.key 000274 aa 7 00001 2361 00 ldq pr7|1 hash_bead.key 000275 aa 6 00102 1171 00 cmpaq pr6|66 opening_id 000276 aa 000006 6000 04 tze 6,ic 000304 000277 aa 6 00044 3701 20 epp4 pr6|36,* 000300 la 4 00020 2361 20 ldq pr4|16,* dm_error_$no_opening 000301 aa 6 00032 3715 20 epp5 pr6|26,* 000302 aa 5 00006 7561 20 stq pr5|6,* p_code 000303 aa 000033 7100 04 tra 27,ic 000336 STATEMENT 1 ON LINE 107 else do; STATEMENT 1 ON LINE 109 if previous_hash_bead_ptr = null then opening_table.hash_entry_ptr (hash_index) = hash_bead.next_ptr; 000304 aa 6 00104 2371 00 ldaq pr6|68 previous_hash_bead_ptr 000305 aa 777525 6770 04 eraq -171,ic 000032 = 077777000043 000001000000 000306 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 000307 aa 000007 6010 04 tnz 7,ic 000316 000310 aa 6 00101 2361 00 ldq pr6|65 hash_index 000311 aa 000001 7360 00 qls 1 000312 aa 7 00004 3715 20 epp5 pr7|4,* hash_bead.next_ptr 000313 aa 6 00106 3535 20 epp3 pr6|70,* opening_table_ptr 000314 aa 3 00004 6515 06 spri5 pr3|4,ql opening_table.hash_entry_ptr 000315 aa 000004 7100 04 tra 4,ic 000321 STATEMENT 1 ON LINE 111 else previous_hash_bead_ptr -> hash_bead.next_ptr = hash_bead.next_ptr; 000316 aa 7 00004 3715 20 epp5 pr7|4,* hash_bead.next_ptr 000317 aa 6 00104 3535 20 epp3 pr6|68,* previous_hash_bead_ptr 000320 aa 3 00004 6515 00 spri5 pr3|4 hash_bead.next_ptr STATEMENT 1 ON LINE 113 if static_dm_area_ptr = null then static_dm_area_ptr = get_dm_free_area_ (); 000321 aa 6 00044 3701 20 epp4 pr6|36,* 000322 ia 4 00010 2371 00 ldaq pr4|8 static_dm_area_ptr 000323 aa 777507 6770 04 eraq -185,ic 000032 = 077777000043 000001000000 000324 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 000325 aa 000007 6010 04 tnz 7,ic 000334 000326 ia 4 00010 3521 00 epp2 pr4|8 static_dm_area_ptr 000327 aa 6 00124 2521 00 spri2 pr6|84 000330 aa 6 00122 6211 00 eax1 pr6|82 000331 aa 004000 4310 07 fld 2048,dl 000332 la 4 00014 3521 20 epp2 pr4|12,* get_dm_free_area_ 000333 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 116 free hash_bead in (dm_area); 000334 aa 6 00110 3715 00 epp5 pr6|72 hash_bead_ptr 000335 aa 0 01404 7001 00 tsx0 pr0|772 free_based STATEMENT 1 ON LINE 117 end; STATEMENT 1 ON LINE 118 end; STATEMENT 1 ON LINE 120 return; 000336 aa 0 00631 7101 00 tra pr0|409 return STATEMENT 1 ON LINE 144 end om_free_opening; BEGIN PROCEDURE CHECK_VERSION ENTRY TO CHECK_VERSION STATEMENT 1 ON LINE 122 CHECK_VERSION: proc (cv_p_structure_name, cv_p_given_version, cv_p_correct_version); 000337 aa 6 00114 6501 00 spri4 pr6|76 000340 aa 6 00116 2521 00 spri2 pr6|78 000341 aa 2 00002 3521 01 epp2 pr2|2,au 000342 aa 6 00120 2521 00 spri2 pr6|80 000343 aa 2 00000 2361 20 ldq pr2|0,* 000344 aa 000002 6040 04 tmi 2,ic 000346 000345 aa 777777 3760 07 anq 262143,dl 000346 aa 0 00250 3761 00 anq pr0|168 = 000077777777 000347 aa 6 00210 7561 00 stq pr6|136 STATEMENT 1 ON LINE 129 if cv_p_given_version ^= cv_p_correct_version then call sub_err_ (error_table_$unimplemented_version, myname, ACTION_CANT_RESTART, null, 0, "^/Expected version ""^8a"" of ^a structure; received ""^8a"".", cv_p_correct_version, cv_p_structure_name, cv_p_given_version); 000350 aa 6 00116 3735 20 epp7 pr6|78,* 000351 aa 7 00004 3715 20 epp5 pr7|4,* 000352 aa 5 00000 2351 00 lda pr5|0 cv_p_given_version 000353 aa 5 00001 2361 00 ldq pr5|1 cv_p_given_version 000354 aa 7 00006 3535 20 epp3 pr7|6,* 000355 aa 3 00000 1151 00 cmpa pr3|0 cv_p_correct_version 000356 aa 000002 6010 04 tnz 2,ic 000360 000357 aa 3 00001 1161 00 cmpq pr3|1 cv_p_correct_version 000360 aa 000060 6000 04 tze 48,ic 000440 000361 aa 777451 3514 24 epp1 -215,ic* 000362 aa 6 00212 2515 00 spri1 pr6|138 000363 aa 6 00211 4501 00 stz pr6|137 000364 aa 000 100 100 404 mlr (ic),(pr),fill(000) 000365 aa 777464 00 0074 desc9a -204,60 000050 = 136057105170 000366 aa 6 00214 00 0074 desc9a pr6|140,60 000367 aa 6 00044 3701 20 epp4 pr6|36,* 000370 la 4 00024 3521 20 epp2 pr4|20,* error_table_$unimplemented_version 000371 aa 6 00236 2521 00 spri2 pr6|158 000372 aa 777413 3520 04 epp2 -245,ic 000005 = 157155137146 000373 aa 6 00240 2521 00 spri2 pr6|160 000374 aa 777404 3520 04 epp2 -252,ic 000000 = 400000000000 000375 aa 6 00242 2521 00 spri2 pr6|162 000376 aa 6 00212 3521 00 epp2 pr6|138 000377 aa 6 00244 2521 00 spri2 pr6|164 000400 aa 6 00211 3521 00 epp2 pr6|137 000401 aa 6 00246 2521 00 spri2 pr6|166 000402 aa 6 00214 3521 00 epp2 pr6|140 000403 aa 6 00250 2521 00 spri2 pr6|168 000404 aa 7 00006 3521 20 epp2 pr7|6,* cv_p_correct_version 000405 aa 6 00252 2521 00 spri2 pr6|170 000406 aa 7 00002 3521 20 epp2 pr7|2,* cv_p_structure_name 000407 aa 6 00254 2521 00 spri2 pr6|172 000410 aa 7 00004 3521 20 epp2 pr7|4,* cv_p_given_version 000411 aa 6 00256 2521 00 spri2 pr6|174 000412 aa 777414 3520 04 epp2 -244,ic 000026 = 404000000043 000413 aa 6 00260 2521 00 spri2 pr6|176 000414 aa 777406 3520 04 epp2 -250,ic 000022 = 530000000040 000415 aa 6 00262 2521 00 spri2 pr6|178 000416 aa 777403 3520 04 epp2 -253,ic 000021 = 514000000044 000417 aa 6 00264 2521 00 spri2 pr6|180 000420 aa 777410 3520 04 epp2 -248,ic 000030 = 464000000000 000421 aa 6 00266 2521 00 spri2 pr6|182 000422 aa 777376 3520 04 epp2 -258,ic 000020 = 404000000005 000423 aa 6 00270 2521 00 spri2 pr6|184 000424 aa 777371 3520 04 epp2 -263,ic 000015 = 524000000071 000425 aa 6 00272 2521 00 spri2 pr6|186 000426 aa 777375 3520 04 epp2 -259,ic 000023 = 524000000010 000427 aa 6 00274 2521 00 spri2 pr6|188 000430 aa 6 00300 2521 00 spri2 pr6|192 000431 aa 6 00120 3715 20 epp5 pr6|80,* 000432 aa 5 00000 3521 20 epp2 pr5|0,* 000433 aa 6 00276 2521 00 spri2 pr6|190 000434 aa 6 00234 6211 00 eax1 pr6|156 000435 aa 044000 4310 07 fld 18432,dl 000436 la 4 00016 3521 20 epp2 pr4|14,* sub_err_ 000437 aa 0 00622 7001 00 tsx0 pr0|402 call_ext_out_desc STATEMENT 1 ON LINE 134 return; 000440 aa 6 00114 6101 00 rtcd pr6|76 STATEMENT 1 ON LINE 136 end CHECK_VERSION; END PROCEDURE CHECK_VERSION END PROCEDURE om_free_opening ----------------------------------------------------------- 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