COMPILATION LISTING OF SEGMENT cm_setup_buffered_ci Compiled by: Multics PL/I Compiler, Release 28d, of October 4, 1983 Compiled at: Honeywell Multics Op. - System M Compiled on: 01/03/85 1640.4 mst Thu Options: optimize list 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* *********************************************************** */ 6 7 8 /* DESCRIPTION: 9* 10* This module implements collection_manager_$setup_ci_buffer. 11* 12* Gets the entire collection_manager_-addressable portion of the 13* specified control interval. The caller supplies a buffer for the 14* control interval, and may use this control interval buffer in subsequent 15* calls to collection_manager_$get_element_buffered. 16**/ 17 18 /* HISTORY: 19* 20*Written by Matthew Pierret, 08/17/82. 21*Modified: 22*01/10/83 by Matthew Pierret: Changed to refuse to setup ci if a continuation 23* datum is present in the ci. Continuation datums are the source of 24* some as-yet unsolved lost-update problems. 25*01/27/83 by Matthew Pierret: Changed to use dm_error_$unimplemented_ci_version 26*04/13/84 by Matthew Pierret: Changed p_control_interval_ptr and 27* p_control_interval_length_in_bits to p_ci_buffer_ptr and 28* p_ci_buffer_length_in_bits to conform to documentation. 29*10/08/84 by Matthew Pierret: Changed to use ERROR_RETURN and to use local 30* copies of parameters. Change to use file_manager_$simple_get, 31* eliminating the need for ci_parts. 32**/ 33 34 /* format: style2,ind3 */ 35 36 cm_setup_buffered_ci: 37 proc (p_file_opening_id, p_collection_id, p_control_interval_number, p_ci_buffer_ptr, p_ci_buffer_length_in_bits, 38 p_code); 39 40 /* START OF DECLARATIONS */ 41 /* Parameter */ 42 43 dcl p_file_opening_id bit (36) aligned parameter; 44 dcl p_collection_id bit (36) aligned parameter; 45 dcl p_control_interval_number 46 fixed bin (24) unsigned parameter; 47 dcl p_ci_buffer_ptr ptr parameter; 48 dcl p_ci_buffer_length_in_bits 49 fixed bin (35) parameter; 50 dcl p_code fixed bin (35) parameter; 51 52 /* Automatic */ 53 54 dcl code fixed bin (35); 55 dcl ci_buffer_length_in_bits 56 fixed bin (35); 57 dcl ci_number fixed bin (27); 58 dcl ci_ptr ptr; 59 60 /* Based */ 61 62 dcl based_bit_string bit (ci_buffer_length_in_bits) based; 63 64 /* Builtin */ 65 66 dcl null builtin; 67 68 /* Constant */ 69 70 dcl myname init ("cm_setup_buffered_ci") char (32) varying internal static options (constant); 71 dcl START_OF_CI_OFFSET init (0) fixed bin (21) internal static options (constant); 72 73 /* Entry */ 74 75 dcl file_manager_$simple_get 76 entry (bit (36) aligned, fixed bin (27), fixed bin (21), ptr, fixed bin (21), 77 fixed bin (35)); 78 dcl sub_err_ entry () options (variable); 79 80 /* External */ 81 82 dcl ( 83 dm_error_$cant_buffer_ci_continuations, 84 dm_error_$ci_not_in_collection, 85 dm_error_$ci_buffer_too_small, 86 dm_error_$unimplemented_ci_version 87 ) fixed bin (35) ext; 88 89 /* END OF DECLARATIONS */ 90 91 p_code, code = 0; 92 ci_ptr = null; 93 ci_number = p_control_interval_number; 94 ci_buffer_length_in_bits = p_ci_buffer_length_in_bits; 95 if ci_buffer_length_in_bits < CONTROL_INTERVAL_ADDRESSABLE_LENGTH_IN_BYTES * 9 96 then call ERROR_RETURN (dm_error_$ci_buffer_too_small); 97 98 ci_ptr = p_ci_buffer_ptr; 99 call file_manager_$simple_get (p_file_opening_id, ci_number, START_OF_CI_OFFSET, ci_ptr, 100 (CONTROL_INTERVAL_ADDRESSABLE_LENGTH_IN_BYTES), code); 101 if code ^= 0 102 then call ERROR_RETURN (code); 103 104 105 call CHECK_CI_VERSION (ci_ptr -> bci_header.layout_type); 106 if ci_ptr -> bci_header.collection_id ^= p_collection_id 107 then call ERROR_RETURN (dm_error_$ci_not_in_collection); 108 else if ci_ptr -> bci_header.flags.continuation_datum_is_present 109 then call ERROR_RETURN (dm_error_$cant_buffer_ci_continuations); 110 111 112 MAIN_RETURN: 113 return; 114 115 ERROR_RETURN: 116 proc (er_p_code); 117 118 dcl er_p_code fixed bin (35); 119 120 p_code = er_p_code; 121 if ci_ptr ^= null 122 then ci_ptr -> based_bit_string = ""b; 123 go to MAIN_RETURN; 124 125 end ERROR_RETURN; 126 127 CHECK_CI_VERSION: 128 proc (ccv_p_given_version); 129 130 dcl ccv_p_given_version char (4) aligned; 131 132 if ccv_p_given_version ^= BASIC_CI_LAYOUT_1 133 then call sub_err_ (dm_error_$unimplemented_ci_version, myname, ACTION_CANT_RESTART, null, 0, 134 "^/Expected version ^4a control interval; received ^4a.", BASIC_CI_LAYOUT_1, ccv_p_given_version); 135 else return; 136 137 end CHECK_CI_VERSION; 138 1 1 /* BEGIN INCLUDE FILE dm_cm_basic_ci.incl.pl1 */ 1 2 1 3 /* DESCRIPTION: 1 4* 1 5* The collection_manager_ manages the structure of the addressable 1 6* portion of a control interval. The addressable portion is that portion of 1 7* a control interval which the file_manager_ will allow the 1 8* collection_manager_ to address. In this description control interval will 1 9* be used to mean the addressable portion of a control interval. 1 10* 1 11* A control interval is divided into four parts: the header, the datum 1 12* position table (also known as the slot table or slots), un-used space and 1 13* used space. The beginning of the header is at offset 0, and the end of the 1 14* used space is at the end of the control interval (curently offset 4072). 1 15* Pictoriarly, a control interval is structured as follows: 1 16* 1 17* ---------------------------------------------------------------------- 1 18* | || | | | | | || || | / / | |/| | | 1 19* | Header || | slot | || un-used space || |/ / /| |/| | | 1 20* | || | table | || || | / / | |/| | | 1 21* | || | | | | | || || |/ / /| |/| | | 1 22* ---------------------------------------------------------------------- 1 23* ^ ^ ^ ^ ^ ^ ^ 1 24* | | | | | | | 1 25* | |...........|.......|...| 1 26* start of used space| | | | 1 27* | | each| 1 28* scattered free space| is a used 1 29* datum 1 30* 1 31* The basic_control_interval structure describes the header 1 32* (basic_control_interval.header, bci_header) and the slots 1 33* (basic_control_interval.datum_position_table, datum_slot for one only). 1 34* Each datum_slot contains the offset (in bytes) and the length (in bits) of 1 35* a datum in the used space. If the offset is equal to FREE_SLOT (declared 1 36* in dm_cm_basic_ci_const.incl.pl1), the slot is un-used. The slot also 1 37* contains flags describing the type of datum (see dm_cm_datum.incl.pl1). 1 38**/ 1 39 1 40 /* HISTORY: 1 41*Written by Matthew Pierret, 02/07/82. 1 42*Modified: 1 43*03/25/82 by Matthew Pierret: Fixed alignment differences basic_control_interval 1 44* and its sub-structures. 1 45*06/14/82 by Matthew Pierret: Removed common header and buffers. Changed 1 46* basic_ci_header to bci_header. Added previous_control_interval. 1 47*07/12/82 by Matthew Pierret: Changed collection_id to be bit (36) aligned. 1 48*10/29/82 by Matthew Pierret: Added flags to datum slots. 1 49*11/10/82 by Matthew Pierret: Removed continued_datum_is_present flag, as it 1 50* is not used. 1 51*03/28/84 by Matthew Pierret: Added the constants BCI_HEADER_LENGTH_IN_BYTES 1 52* and DATUM_POSITION_TABLE_OFFSET_IN_BYTES. 1 53**/ 1 54 1 55 /* format: style2 */ 1 56 dcl 1 basic_control_interval 1 57 aligned based (basic_control_interval_ptr), 1 58 2 header like bci_header, 1 59 2 datum_position_table 1 60 (0 refer (basic_control_interval.number_of_datums)) like datum_slot; 1 61 1 62 1 63 dcl 1 bci_header aligned based (bci_header_ptr), 1 64 2 layout_type char (4) aligned, 1 65 2 collection_id bit (36) aligned, 1 66 2 next_control_interval 1 67 fixed bin (24) uns unal, 1 68 2 previous_control_interval 1 69 fixed bin (24) uns unal, 1 70 2 flags unal, 1 71 3 continuation_datum_is_present 1 72 bit (1) unal, 1 73 3 free_slot_is_present 1 74 bit (1) unal, 1 75 3 must_be_zero bit (4) unal, /* reserved */ 1 76 2 scattered_free_space 1 77 fixed bin (17) unal, 1 78 2 start_of_used_space 1 79 fixed bin (17) unal, 1 80 2 number_of_datums fixed bin (17) unal; 1 81 1 82 dcl 1 datum_slot aligned based (datum_slot_ptr), 1 83 2 flags unal, 1 84 3 special_format_datum 1 85 bit (1) unal, /* reserved */ 1 86 3 is_continued bit (1) unal, 1 87 3 is_continuation bit (1) unal, 1 88 3 mbz bit (1) unal, /* reserved */ 1 89 2 offset_in_bytes fixed bin (15) uns unal, 1 90 2 length_in_bits fixed bin (17) uns unal; 1 91 1 92 dcl basic_control_interval_ptr 1 93 ptr; 1 94 dcl bci_header_ptr ptr; 1 95 dcl datum_slot_ptr ptr; 1 96 1 97 dcl BASIC_CI_LAYOUT_1 char (4) aligned init ("bci1") internal static options (constant); 1 98 1 99 /* END INCLUDE FILE dm_cm_basic_ci.incl.pl1 */ 139 140 2 1 /* BEGIN INCLUDE FILE dm_cm_basic_ci_const.incl.pl1 */ 2 2 2 3 /* DESCRIPTION: 2 4* 2 5* Contains constants useful in describing parts of a basic control interval. 2 6**/ 2 7 2 8 /* HISTORY: 2 9*Written by Matthew Pierret, 09/20/84. 2 10*Modified: 2 11**/ 2 12 2 13 dcl FREE_SLOT init (0) fixed bin (15) uns internal static options (constant); 2 14 dcl BCI_HEADER_LENGTH_IN_BYTES 2 15 init (20) fixed bin internal static options (constant); 2 16 dcl DATUM_POSITION_TABLE_OFFSET_IN_BYTES 2 17 init (20) fixed bin internal static options (constant); 2 18 2 19 2 20 /* END INCLUDE FILE dm_cm_basic_ci_const.incl.pl1 */ 141 142 3 1 /* BEGIN INCLUDE FILE dm_ci_lengths.incl.pl1 */ 3 2 3 3 /* DESCRIPTION: 3 4* This include file contains constants which are the length in bytes 3 5* of the addressable portion of a control interval. The addressable portion 3 6* is that part of the control interval which callers of file_manager_ 3 7* may access, specifically, everything between the end of the control 3 8* interval header (ci_header) and the control interval trailer (ci_trailer). 3 9* Control interval 0 is slightly different, as it also contains an 3 10* unaddressable portion in which it maintains the file attributes. For 3 11* control interval 0 the addressable portion is everything between the end 3 12* of the control interval header and the beginning of the file attributes. 3 13**/ 3 14 3 15 /* HISTORY: 3 16*Written by Matthew Pierret, 11/02/84. 3 17*Modified: 3 18**/ 3 19 3 20 /* format: style2,ind3 */ 3 21 3 22 dcl CONTROL_INTERVAL_ADDRESSABLE_LENGTH_IN_BYTES 3 23 fixed bin (17) init (4072) int static options (constant); 3 24 3 25 dcl CONTROL_INTERVAL_ZERO_ADDRESSABLE_LENGTH_IN_BYTES 3 26 fixed bin (17) init (3176) int static options (constant); 3 27 3 28 3 29 dcl CI_ADDRESSABLE_LENGTH fixed bin (17) init (4072) int static options (constant); 3 30 3 31 dcl CI_0_ADDRESSABLE_LENGTH 3 32 fixed bin (17) init (3176) int static options (constant); 3 33 3 34 /* END INCLUDE FILE dm_ci_lengths.incl.pl1 */ 143 144 4 1 /* BEGIN INCLUDE FILE sub_err_flags.incl.pl1 BIM 11/81 */ 4 2 /* format: style3 */ 4 3 4 4 /* These constants are to be used for the flags argument of sub_err_ */ 4 5 /* They are just "string (condition_info_header.action_flags)" */ 4 6 4 7 declare ( 4 8 ACTION_CAN_RESTART init (""b), 4 9 ACTION_CANT_RESTART init ("1"b), 4 10 ACTION_DEFAULT_RESTART 4 11 init ("01"b), 4 12 ACTION_QUIET_RESTART 4 13 init ("001"b), 4 14 ACTION_SUPPORT_SIGNAL 4 15 init ("0001"b) 4 16 ) bit (36) aligned internal static options (constant); 4 17 4 18 /* End include file */ 145 146 147 end cm_setup_buffered_ci; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 01/03/85 1149.5 cm_setup_buffered_ci.pl1 >spec>temp>famis1>cm_setup_buffered_ci.pl1 139 1 01/03/85 1003.0 dm_cm_basic_ci.incl.pl1 >spec>temp>famis1>dm_cm_basic_ci.incl.pl1 141 2 01/03/85 1003.0 dm_cm_basic_ci_const.incl.pl1 >spec>temp>famis1>dm_cm_basic_ci_const.incl.pl1 143 3 01/03/85 1005.2 dm_ci_lengths.incl.pl1 >spec>temp>famis1>dm_ci_lengths.incl.pl1 145 4 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 4-7 set ref 132* BASIC_CI_LAYOUT_1 000001 constant char(4) initial dcl 1-97 set ref 132 132* CONTROL_INTERVAL_ADDRESSABLE_LENGTH_IN_BYTES constant fixed bin(17,0) initial dcl 3-22 ref 95 99 START_OF_CI_OFFSET 000017 constant fixed bin(21,0) initial dcl 71 set ref 99* based_bit_string based bit unaligned dcl 62 set ref 121* bci_header based structure level 1 dcl 1-63 ccv_p_given_version parameter char(4) dcl 130 set ref 127 132 132* ci_buffer_length_in_bits 000101 automatic fixed bin(35,0) dcl 55 set ref 94* 95 121 ci_number 000102 automatic fixed bin(27,0) dcl 57 set ref 93* 99* ci_ptr 000104 automatic pointer dcl 58 set ref 92* 98* 99* 105 106 108 121 121 code 000100 automatic fixed bin(35,0) dcl 54 set ref 91* 99* 101 101* collection_id 1 based bit(36) level 2 dcl 1-63 ref 106 continuation_datum_is_present 3(12) based bit(1) level 3 packed unaligned dcl 1-63 ref 108 datum_slot based structure level 1 dcl 1-82 dm_error_$cant_buffer_ci_continuations 000014 external static fixed bin(35,0) dcl 82 set ref 108* dm_error_$ci_buffer_too_small 000020 external static fixed bin(35,0) dcl 82 set ref 95* dm_error_$ci_not_in_collection 000016 external static fixed bin(35,0) dcl 82 set ref 106* dm_error_$unimplemented_ci_version 000022 external static fixed bin(35,0) dcl 82 set ref 132* er_p_code parameter fixed bin(35,0) dcl 118 ref 115 120 file_manager_$simple_get 000010 constant entry external dcl 75 ref 99 flags 3(12) based structure level 2 packed unaligned dcl 1-63 layout_type based char(4) level 2 dcl 1-63 set ref 105* myname 000002 constant varying char(32) initial dcl 70 set ref 132* null builtin function dcl 66 ref 92 121 132 132 p_ci_buffer_length_in_bits parameter fixed bin(35,0) dcl 48 ref 36 94 p_ci_buffer_ptr parameter pointer dcl 47 ref 36 98 p_code parameter fixed bin(35,0) dcl 50 set ref 36 91* 120* p_collection_id parameter bit(36) dcl 44 ref 36 106 p_control_interval_number parameter fixed bin(24,0) unsigned dcl 45 ref 36 93 p_file_opening_id parameter bit(36) dcl 43 set ref 36 99* sub_err_ 000012 constant entry external dcl 78 ref 132 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ACTION_CAN_RESTART internal static bit(36) initial dcl 4-7 ACTION_DEFAULT_RESTART internal static bit(36) initial dcl 4-7 ACTION_QUIET_RESTART internal static bit(36) initial dcl 4-7 ACTION_SUPPORT_SIGNAL internal static bit(36) initial dcl 4-7 BCI_HEADER_LENGTH_IN_BYTES internal static fixed bin(17,0) initial dcl 2-14 CI_0_ADDRESSABLE_LENGTH internal static fixed bin(17,0) initial dcl 3-31 CI_ADDRESSABLE_LENGTH internal static fixed bin(17,0) initial dcl 3-29 CONTROL_INTERVAL_ZERO_ADDRESSABLE_LENGTH_IN_BYTES internal static fixed bin(17,0) initial dcl 3-25 DATUM_POSITION_TABLE_OFFSET_IN_BYTES internal static fixed bin(17,0) initial dcl 2-16 FREE_SLOT internal static fixed bin(15,0) initial unsigned dcl 2-13 basic_control_interval based structure level 1 dcl 1-56 basic_control_interval_ptr automatic pointer dcl 1-92 bci_header_ptr automatic pointer dcl 1-94 datum_slot_ptr automatic pointer dcl 1-95 NAMES DECLARED BY EXPLICIT CONTEXT. CHECK_CI_VERSION 000211 constant entry internal dcl 127 ref 105 ERROR_RETURN 000172 constant entry internal dcl 115 ref 95 101 106 108 MAIN_RETURN 000171 constant label dcl 112 ref 123 cm_setup_buffered_ci 000052 constant entry external dcl 36 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 420 444 300 430 Length 716 300 24 236 120 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME cm_setup_buffered_ci 156 external procedure is an external procedure. ERROR_RETURN internal procedure shares stack frame of external procedure cm_setup_buffered_ci. CHECK_CI_VERSION internal procedure shares stack frame of external procedure cm_setup_buffered_ci. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME cm_setup_buffered_ci 000100 code cm_setup_buffered_ci 000101 ci_buffer_length_in_bits cm_setup_buffered_ci 000102 ci_number cm_setup_buffered_ci 000104 ci_ptr cm_setup_buffered_ci THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out return ext_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. file_manager_$simple_get sub_err_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. dm_error_$cant_buffer_ci_continuations dm_error_$ci_buffer_too_small dm_error_$ci_not_in_collection dm_error_$unimplemented_ci_version CONSTANTS 000274 aa 000002000000 000275 aa 000000000000 000276 aa 600000000041 000277 aa 000100000000 000000 aa 400000000000 000001 aa 142 143 151 061 bci1 000002 aa 000000000024 000003 aa 143 155 137 163 cm_s 000004 aa 145 164 165 160 etup 000005 aa 137 142 165 146 _buf 000006 aa 146 145 162 145 fere 000007 aa 144 137 143 151 d_ci 000010 aa 040 040 040 040 000011 aa 040 040 040 040 000012 aa 040 040 040 040 000013 aa 524000000066 000014 aa 404000000005 000015 aa 530000000040 000016 aa 524000000004 000017 aa 000000000000 000020 aa 404000000043 000021 aa 464000000000 000022 aa 604000000030 000023 aa 514000000044 000024 aa 077777000043 000025 aa 000001000000 000026 aa 136 057 105 170 ^/Ex 000027 aa 160 145 143 164 pect 000030 aa 145 144 040 166 ed v 000031 aa 145 162 163 151 ersi 000032 aa 157 156 040 136 on ^ 000033 aa 064 141 040 143 4a c 000034 aa 157 156 164 162 ontr 000035 aa 157 154 040 151 ol i 000036 aa 156 164 145 162 nter 000037 aa 166 141 154 073 val; 000040 aa 040 162 145 143 rec 000041 aa 145 151 166 145 eive 000042 aa 144 040 136 064 d ^4 000043 aa 141 056 000 000 a. BEGIN PROCEDURE cm_setup_buffered_ci ENTRY TO cm_setup_buffered_ci STATEMENT 1 ON LINE 36 cm_setup_buffered_ci: proc (p_file_opening_id, p_collection_id, p_control_interval_number, p_ci_buffer_ptr, p_ci_buffer_length_in_bits, p_code); 000044 at 000006000023 000045 tt 000023000022 000046 tt 000021000020 000047 ta 000020000000 000050 ta 000044000000 000051 da 000114300000 000052 aa 000240 6270 00 eax7 160 000053 aa 7 00034 3521 20 epp2 pr7|28,* 000054 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 000055 aa 000014000000 000056 aa 000000000000 STATEMENT 1 ON LINE 91 p_code, code = 0; 000057 aa 6 00032 3735 20 epp7 pr6|26,* 000060 aa 7 00014 4501 20 stz pr7|12,* p_code 000061 aa 6 00100 4501 00 stz pr6|64 code STATEMENT 1 ON LINE 92 ci_ptr = null; 000062 aa 777742 2370 04 ldaq -30,ic 000024 = 077777000043 000001000000 000063 aa 6 00104 7571 00 staq pr6|68 ci_ptr STATEMENT 1 ON LINE 93 ci_number = p_control_interval_number; 000064 aa 7 00006 2361 20 ldq pr7|6,* p_control_interval_number 000065 aa 6 00102 7561 00 stq pr6|66 ci_number STATEMENT 1 ON LINE 94 ci_buffer_length_in_bits = p_ci_buffer_length_in_bits; 000066 aa 7 00012 2361 20 ldq pr7|10,* p_ci_buffer_length_in_bits 000067 aa 6 00101 7561 00 stq pr6|65 ci_buffer_length_in_bits STATEMENT 1 ON LINE 95 if ci_buffer_length_in_bits < CONTROL_INTERVAL_ADDRESSABLE_LENGTH_IN_BYTES * 9 then call ERROR_RETURN (dm_error_$ci_buffer_too_small); 000070 aa 107450 2360 07 ldq 36648,dl 000071 aa 6 00101 1161 00 cmpq pr6|65 ci_buffer_length_in_bits 000072 aa 000007 6044 04 tmoz 7,ic 000101 000073 la 4 00020 3521 20 epp2 pr4|16,* dm_error_$ci_buffer_too_small 000074 aa 6 00124 2521 00 spri2 pr6|84 000075 aa 6 00122 3521 00 epp2 pr6|82 000076 aa 004000 4310 07 fld 2048,dl 000077 aa 2 00000 7571 00 staq pr2|0 000100 aa 000072 6700 04 tsp4 58,ic 000172 STATEMENT 1 ON LINE 98 ci_ptr = p_ci_buffer_ptr; 000101 aa 6 00032 3735 20 epp7 pr6|26,* 000102 aa 7 00010 3715 20 epp5 pr7|8,* p_ci_buffer_ptr 000103 aa 5 00000 3715 20 epp5 pr5|0,* p_ci_buffer_ptr 000104 aa 6 00104 6515 00 spri5 pr6|68 ci_ptr STATEMENT 1 ON LINE 99 call file_manager_$simple_get (p_file_opening_id, ci_number, START_OF_CI_OFFSET, ci_ptr, (CONTROL_INTERVAL_ADDRESSABLE_LENGTH_IN_BYTES), code); 000105 aa 007750 2360 07 ldq 4072,dl 000106 aa 6 00130 7561 00 stq pr6|88 000107 aa 7 00002 3521 20 epp2 pr7|2,* p_file_opening_id 000110 aa 6 00134 2521 00 spri2 pr6|92 000111 aa 6 00102 3521 00 epp2 pr6|66 ci_number 000112 aa 6 00136 2521 00 spri2 pr6|94 000113 aa 777704 3520 04 epp2 -60,ic 000017 = 000000000000 000114 aa 6 00140 2521 00 spri2 pr6|96 000115 aa 6 00104 3521 00 epp2 pr6|68 ci_ptr 000116 aa 6 00142 2521 00 spri2 pr6|98 000117 aa 6 00130 3521 00 epp2 pr6|88 000120 aa 6 00144 2521 00 spri2 pr6|100 000121 aa 6 00100 3521 00 epp2 pr6|64 code 000122 aa 6 00146 2521 00 spri2 pr6|102 000123 aa 6 00132 6211 00 eax1 pr6|90 000124 aa 030000 4310 07 fld 12288,dl 000125 aa 6 00044 3701 20 epp4 pr6|36,* 000126 la 4 00010 3521 20 epp2 pr4|8,* file_manager_$simple_get 000127 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 101 if code ^= 0 then call ERROR_RETURN (code); 000130 aa 6 00100 2361 00 ldq pr6|64 code 000131 aa 000003 6000 04 tze 3,ic 000134 000132 aa 000142 3520 04 epp2 98,ic 000274 = 000002000000 000133 aa 000037 6700 04 tsp4 31,ic 000172 STATEMENT 1 ON LINE 105 call CHECK_CI_VERSION (ci_ptr -> bci_header.layout_type); 000134 aa 6 00104 3521 20 epp2 pr6|68,* bci_header.layout_type 000135 aa 6 00124 2521 00 spri2 pr6|84 000136 aa 6 00122 3521 00 epp2 pr6|82 000137 aa 004000 4310 07 fld 2048,dl 000140 aa 2 00000 7571 00 staq pr2|0 000141 aa 000050 6700 04 tsp4 40,ic 000211 STATEMENT 1 ON LINE 106 if ci_ptr -> bci_header.collection_id ^= p_collection_id then call ERROR_RETURN (dm_error_$ci_not_in_collection); 000142 aa 6 00104 3735 20 epp7 pr6|68,* ci_ptr 000143 aa 7 00001 2351 00 lda pr7|1 bci_header.collection_id 000144 aa 6 00032 3715 20 epp5 pr6|26,* 000145 aa 5 00004 1151 20 cmpa pr5|4,* p_collection_id 000146 aa 000011 6000 04 tze 9,ic 000157 000147 aa 6 00044 3701 20 epp4 pr6|36,* 000150 la 4 00016 3521 20 epp2 pr4|14,* dm_error_$ci_not_in_collection 000151 aa 6 00124 2521 00 spri2 pr6|84 000152 aa 6 00122 3521 00 epp2 pr6|82 000153 aa 004000 4310 07 fld 2048,dl 000154 aa 2 00000 7571 00 staq pr2|0 000155 aa 000015 6700 04 tsp4 13,ic 000172 000156 aa 000013 7100 04 tra 11,ic 000171 STATEMENT 1 ON LINE 108 else if ci_ptr -> bci_header.flags.continuation_datum_is_present then call ERROR_RETURN (dm_error_$cant_buffer_ci_continuations); 000157 aa 7 00003 2351 00 lda pr7|3 bci_header.continuation_datum_is_present 000160 aa 000040 3150 03 cana 32,du 000161 aa 000010 6000 04 tze 8,ic 000171 000162 aa 6 00044 3701 20 epp4 pr6|36,* 000163 la 4 00014 3521 20 epp2 pr4|12,* dm_error_$cant_buffer_ci_continuations 000164 aa 6 00124 2521 00 spri2 pr6|84 000165 aa 6 00122 3521 00 epp2 pr6|82 000166 aa 004000 4310 07 fld 2048,dl 000167 aa 2 00000 7571 00 staq pr2|0 000170 aa 000002 6700 04 tsp4 2,ic 000172 STATEMENT 1 ON LINE 112 MAIN_RETURN: return; 000171 aa 0 00631 7101 00 tra pr0|409 return STATEMENT 1 ON LINE 147 end cm_setup_buffered_ci; BEGIN PROCEDURE ERROR_RETURN ENTRY TO ERROR_RETURN STATEMENT 1 ON LINE 115 ERROR_RETURN: proc (er_p_code); 000172 aa 6 00106 6501 00 spri4 pr6|70 000173 aa 6 00110 2521 00 spri2 pr6|72 STATEMENT 1 ON LINE 120 p_code = er_p_code; 000174 aa 2 00002 2361 20 ldq pr2|2,* er_p_code 000175 aa 6 00032 3735 20 epp7 pr6|26,* 000176 aa 7 00014 7561 20 stq pr7|12,* p_code STATEMENT 1 ON LINE 121 if ci_ptr ^= null then ci_ptr -> based_bit_string = ""b; 000177 aa 6 00104 2371 00 ldaq pr6|68 ci_ptr 000200 aa 777624 6770 04 eraq -108,ic 000024 = 077777000043 000001000000 000201 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 000202 aa 000006 6000 04 tze 6,ic 000210 000203 aa 6 00104 3715 20 epp5 pr6|68,* ci_ptr 000204 aa 6 00101 2351 00 lda pr6|65 ci_buffer_length_in_bits 000205 aa 003 140 060 400 csl (),(pr,rl),fill(0),bool(move) 000206 aa 000000 00 0000 descb 0,0 000207 aa 5 00000 00 0005 descb pr5|0,al based_bit_string STATEMENT 1 ON LINE 123 go to MAIN_RETURN; 000210 aa 777761 7100 04 tra -15,ic 000171 STATEMENT 1 ON LINE 125 end ERROR_RETURN; END PROCEDURE ERROR_RETURN BEGIN PROCEDURE CHECK_CI_VERSION ENTRY TO CHECK_CI_VERSION STATEMENT 1 ON LINE 127 CHECK_CI_VERSION: proc (ccv_p_given_version); 000211 aa 6 00114 6501 00 spri4 pr6|76 000212 aa 6 00116 2521 00 spri2 pr6|78 STATEMENT 1 ON LINE 132 if ccv_p_given_version ^= BASIC_CI_LAYOUT_1 then call sub_err_ (dm_error_$unimplemented_ci_version, myname, ACTION_CANT_RESTART, null, 0, "^/Expected version ^4a control interval; received ^4a.", BASIC_CI_LAYOUT_1, ccv_p_given_version); 000213 aa 2 00002 2351 20 lda pr2|2,* ccv_p_given_version 000214 aa 777565 1150 04 cmpa -139,ic 000001 = 142143151061 000215 aa 000055 6000 04 tze 45,ic 000272 000216 aa 777606 3734 24 epp7 -122,ic* 000217 aa 6 00150 6535 00 spri7 pr6|104 000220 aa 6 00152 4501 00 stz pr6|106 000221 aa 000 100 100 404 mlr (ic),(pr),fill(000) 000222 aa 777605 00 0070 desc9a -123,56 000026 = 136057105170 000223 aa 6 00154 00 0070 desc9a pr6|108,56 000224 aa 6 00044 3701 20 epp4 pr6|36,* 000225 la 4 00022 3521 20 epp2 pr4|18,* dm_error_$unimplemented_ci_version 000226 aa 6 00174 2521 00 spri2 pr6|124 000227 aa 777554 3520 04 epp2 -148,ic 000003 = 143155137163 000230 aa 6 00176 2521 00 spri2 pr6|126 000231 aa 777547 3520 04 epp2 -153,ic 000000 = 400000000000 000232 aa 6 00200 2521 00 spri2 pr6|128 000233 aa 6 00150 3521 00 epp2 pr6|104 000234 aa 6 00202 2521 00 spri2 pr6|130 000235 aa 6 00152 3521 00 epp2 pr6|106 000236 aa 6 00204 2521 00 spri2 pr6|132 000237 aa 6 00154 3521 00 epp2 pr6|108 000240 aa 6 00206 2521 00 spri2 pr6|134 000241 aa 777540 3520 04 epp2 -160,ic 000001 = 142143151061 000242 aa 6 00210 2521 00 spri2 pr6|136 000243 aa 6 00116 3715 20 epp5 pr6|78,* 000244 aa 5 00002 3521 20 epp2 pr5|2,* ccv_p_given_version 000245 aa 6 00212 2521 00 spri2 pr6|138 000246 aa 777552 3520 04 epp2 -150,ic 000020 = 404000000043 000247 aa 6 00214 2521 00 spri2 pr6|140 000250 aa 777545 3520 04 epp2 -155,ic 000015 = 530000000040 000251 aa 6 00216 2521 00 spri2 pr6|142 000252 aa 777551 3520 04 epp2 -151,ic 000023 = 514000000044 000253 aa 6 00220 2521 00 spri2 pr6|144 000254 aa 777545 3520 04 epp2 -155,ic 000021 = 464000000000 000255 aa 6 00222 2521 00 spri2 pr6|146 000256 aa 777536 3520 04 epp2 -162,ic 000014 = 404000000005 000257 aa 6 00224 2521 00 spri2 pr6|148 000260 aa 777533 3520 04 epp2 -165,ic 000013 = 524000000066 000261 aa 6 00226 2521 00 spri2 pr6|150 000262 aa 777534 3520 04 epp2 -164,ic 000016 = 524000000004 000263 aa 6 00230 2521 00 spri2 pr6|152 000264 aa 6 00232 2521 00 spri2 pr6|154 000265 aa 6 00172 6211 00 eax1 pr6|122 000266 aa 040000 4310 07 fld 16384,dl 000267 la 4 00012 3521 20 epp2 pr4|10,* sub_err_ 000270 aa 0 00622 7001 00 tsx0 pr0|402 call_ext_out_desc 000271 aa 000002 7100 04 tra 2,ic 000273 STATEMENT 1 ON LINE 135 else return; 000272 aa 6 00114 6101 00 rtcd pr6|76 STATEMENT 1 ON LINE 137 end CHECK_CI_VERSION; 000273 aa 6 00114 6101 00 rtcd pr6|76 END PROCEDURE CHECK_CI_VERSION END PROCEDURE cm_setup_buffered_ci ----------------------------------------------------------- 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