COMPILATION LISTING OF SEGMENT cm_put_datum_in_place Compiled by: Multics PL/I Compiler, Release 28d, of October 4, 1983 Compiled at: Honeywell Multics Op. - System M Compiled on: 01/03/85 1638.9 mst Thu Options: optimize list 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* *********************************************************** */ 6 7 8 /* DESCRIPTION: 9* 10* This routine places a datum in the place indicated by the supplied 11* datum slot (p_datum_slot_ptr). It assumes that the caller has already 12* determined that the datum will fit there. Four entries work as follows: 13* 14* $cm_put_datum_in_place - 15* (1) Update datum_slot.length_in_bits, bci_header.scattered_free_space. 16* (2) Invoke file_manager_ to put: 17* (a) the datum contents at the offset in datum_slot.offset_in_bytes; 18* (b) the datum slot at the location indicated by p_element_id; 19* (c) the bci_header at the base of the addressable control interval 20* This entry assumes that p_datum_slot_ptr -> datum_slot.flags and 21* .offset_in_bytes are set correctly. 22* 23* $continued - 24* (1) Update datum_slot.(length_in_bits length_in_bits), 25* bci_header.scattered_free_space. 26* (2) Setup a local datum header using p_element_length_in_bits and 27* p_continuation. 28* (3) Invoke file_manager_ to put: 29* (a) the datum header at the offset in datum_slot.offset_in_bytes; 30* (b) the datum contents at the offset in datum_slot.offset_in_bytes 31* + the length of the datum header; 32* (c) the datum slot at the location indicated by p_element_id; 33* (d) the bci_header at the base of the addressable control interval 34* This entry assumes that p_datum_slot_ptr -> datum_slot.is_continuation & 35* .offset_in_bytes are set correctly. 36* 37* $buffered - same as $cm_put_datum_in_place except: 38* (2) Directly copies datum contents only. 39* This entry also assumes that p_datum_slot_ptr points directly into the 40* control interval buffer. 41* 42* $buffered_continued - same as $continued except: 43* (3) Directly copies (a) and (b) only. 44* This entry also assumes that p_datum_slot_ptr points directly 45* into the control interval buffer. 46**/ 47 48 /* HISTORY: 49*Written by Matthew Pierret. 50*Modified: 51*04/13/82 by Matthew Pierret: Fixed bug. Uninitialized element_ptr was being 52* used instead of p_element_ptr. 53*05/10/82 by Lindsey Spratt: Fixed scattered_free_space calculation to account 54* for the datum header length. Extended the division of the 55* element_length_in_bits to use (35,18) as the precision and scale 56* instead of (17,2). This is because the element_length_in_bytes 57* was coming up 1 too small when the element length wasn't an 58* integral number of bytes. 59*06/15/82 by Matthew Pierret: Changed to use bci_header, dm_cm_basic_ci.incl.pl1, 60* ignore non-addressable portion of CI, change calling sequence of 61* cm_add_ci_part. 62*08/04/82 by Matthew Pierret: Removed calls to cm_add_ci_part, making that code 63* in-line. 64*10/20/82 by Matthew Pierret: Converted to use file_manager_. Changed to 65* handle zero-length datum contents. 66*11/09/82 by Matthew Pierret: Added "continued" entry for storing continued 67* datums (Cd and CdCn). 68*01/04/83 by Matthew Pierret: Added $buffered and $buffered_continued to do 69* puts into a supplied ci buffer. 70*01/14/83 by Lindsey Spratt: Fixed to set bci_header_ptr = p_bci_header_ptr 71* for main entry. 72*01/21/83 by Matthew Pierret: Changed based_ci_string character overlay to be based_ci, a bit (9) 73* array. This was to remove the "addr(substr())" construct, which 74* is not guaranteed to be correct in all cases. 75*10/03/84 by Matthew Pierret: Removed un-used dm_cm_entry_dcls.incl.pl1, 76* substr and ceil. Changed bit-to-byte calculation to 77* divide (bits + BITS_PER_BYTE - 1, BITS_PER_BYTE, 17, 0) from 78* ceil (divide (bits, BITS_PER_BYTE, 35, 18)). The former is more 79* efficient. Changed to declare correct calling sequence of 80* file_manager_$put. 81*12/03/84 by Matthew Pierret: Added the local cd_datum_header and 82* cdcn_datum_header, which were removed from dm_cm_datum.incl.pl1. 83**/ 84 85 /* format: style2,ind3 */ 86 87 cm_put_datum_in_place: 88 proc (p_file_opening_id, p_element_id, p_datum_contents_ptr, p_datum_contents_length_in_bits, p_datum_slot_ptr, 89 p_bci_header_ptr, p_code); 90 91 92 /* START OF DECLARATIONS */ 93 /* Parameter */ 94 95 dcl p_file_opening_id bit (36) aligned; 96 dcl p_element_id bit (36) aligned; 97 dcl p_datum_contents_ptr ptr; 98 dcl p_datum_contents_length_in_bits 99 fixed bin (35); 100 dcl p_datum_slot_ptr ptr; 101 dcl p_bci_header_ptr ptr; 102 dcl p_ci_buffer_ptr ptr; 103 dcl p_element_length_in_bits 104 fixed bin (35); 105 dcl p_continuation bit (36) aligned; 106 dcl p_code fixed bin (35); 107 108 /* Automatic */ 109 110 dcl automatic_ci_parts_buffer 111 (18) fixed bin (71); /* Max of 3 parts */ 112 dcl is_buffered bit (1) aligned init ("0"b); 113 dcl replace_bci_header bit (1) aligned init ("0"b); 114 dcl based_byte_string_length 115 fixed bin (35) init (0); 116 dcl datum_contents_length_in_bytes 117 fixed bin (17); 118 dcl datum_header_length_in_bytes 119 fixed bin (35) init (0); 120 dcl old_datum_length_in_bytes 121 fixed bin (17); 122 dcl ci_datum_contents_ptr ptr init (null); 123 dcl ci_datum_header_ptr ptr init (null); 124 dcl datum_header_ptr ptr init (null); 125 126 dcl 1 cd_datum_header aligned like continued_datum.header; 127 dcl 1 cdcn_datum_header aligned like continued_continuation_datum.header; 128 129 /* Based */ 130 131 dcl 1 based_ci aligned based (bci_header_ptr), 132 2 byte (CONTROL_INTERVAL_ADDRESSABLE_LENGTH_IN_BYTES) bit (9) unaligned; 133 dcl based_byte_string char (based_byte_string_length) based; 134 135 /* Builtin */ 136 137 dcl (addr, divide, null, size, unspec) 138 builtin; 139 140 /* Controlled */ 141 /* Constant */ 142 143 dcl BITS_PER_BYTE fixed bin init (9) int static options (constant); 144 dcl BYTES_PER_WORD fixed bin init (4) int static options (constant); 145 146 /* Entry */ 147 148 dcl file_manager_$put entry (bit (36) aligned, fixed bin (27), ptr, fixed bin (35)); 149 150 /* External */ 151 /* END OF DECLARATIONS */ 152 153 bci_header_ptr = p_bci_header_ptr; 154 datum_slot_ptr = p_datum_slot_ptr; 155 156 goto JOIN; 157 158 buffered: 159 entry (p_ci_buffer_ptr, p_datum_contents_ptr, p_datum_contents_length_in_bits, p_datum_slot_ptr, p_code); 160 161 bci_header_ptr = p_ci_buffer_ptr; 162 datum_slot_ptr = p_datum_slot_ptr; 163 is_buffered = "1"b; 164 165 goto JOIN; 166 167 continued: 168 entry (p_file_opening_id, p_element_id, p_datum_contents_ptr, p_datum_contents_length_in_bits, p_datum_slot_ptr, 169 p_bci_header_ptr, p_element_length_in_bits, p_continuation, p_code); 170 171 bci_header_ptr = p_bci_header_ptr; 172 173 goto CD_JOIN; 174 175 buffered_continued: 176 entry (p_ci_buffer_ptr, p_datum_contents_ptr, p_datum_contents_length_in_bits, p_datum_slot_ptr, 177 p_element_length_in_bits, p_continuation, p_code); 178 179 bci_header_ptr = p_ci_buffer_ptr; 180 is_buffered = "1"b; 181 182 CD_JOIN: 183 datum_slot_ptr = p_datum_slot_ptr; 184 185 datum_slot.flags.is_continued = "1"b; 186 187 if p_element_length_in_bits < 0 188 then 189 do; 190 datum_slot.flags.is_continuation = "1"b; 191 datum_header_length_in_bytes = CDCN_DATUM_HEADER_LENGTH_IN_BYTES; 192 193 unspec (cdcn_datum_header.continuation) = p_continuation; 194 datum_header_ptr = addr (cdcn_datum_header); 195 end; 196 else 197 do; 198 datum_slot.flags.is_continuation = "0"b; 199 datum_header_length_in_bytes = CD_DATUM_HEADER_LENGTH_IN_BYTES; 200 201 cd_datum_header.full_length = p_element_length_in_bits; 202 unspec (cd_datum_header.continuation) = p_continuation; 203 204 datum_header_ptr = addr (cd_datum_header); 205 end; 206 207 goto JOIN; 208 209 JOIN: 210 p_code = 0; 211 212 datum_contents_length_in_bits = p_datum_contents_length_in_bits; 213 datum_contents_length_in_bytes = divide (datum_contents_length_in_bits + BITS_PER_BYTE - 1, BITS_PER_BYTE, 17, 0); 214 old_datum_length_in_bytes = divide (datum_slot.length_in_bits + BITS_PER_BYTE - 1, BITS_PER_BYTE, 17, 0); 215 216 if old_datum_length_in_bytes > datum_contents_length_in_bytes + datum_header_length_in_bytes 217 then 218 do; 219 bci_header.scattered_free_space = 220 bci_header.scattered_free_space + old_datum_length_in_bytes - datum_contents_length_in_bytes 221 - datum_header_length_in_bytes; 222 223 replace_bci_header = "1"b; 224 end; 225 226 datum_slot.length_in_bits = datum_contents_length_in_bits + datum_header_length_in_bytes * BITS_PER_BYTE; 227 228 if is_buffered 229 then 230 do; 231 if datum_contents_length_in_bytes > 0 232 then 233 do; 234 based_byte_string_length = datum_contents_length_in_bytes; 235 ci_datum_contents_ptr = 236 addr (based_ci.byte (datum_slot.offset_in_bytes + datum_header_length_in_bytes + 1)); 237 ci_datum_contents_ptr -> based_byte_string = p_datum_contents_ptr -> based_byte_string; 238 end; 239 240 if datum_header_length_in_bytes > 0 241 then 242 do; 243 based_byte_string_length = datum_header_length_in_bytes; 244 ci_datum_header_ptr = addr (based_ci.byte (datum_slot.offset_in_bytes + 1)); 245 ci_datum_header_ptr -> based_byte_string = datum_header_ptr -> based_byte_string; 246 end; 247 end; 248 else 249 do; 250 element_id_string = p_element_id; 251 252 automatic_ci_parts_buffer = 0; 253 ci_parts_ptr = addr (automatic_ci_parts_buffer); 254 ci_parts.number_of_parts = 0; 255 256 if datum_contents_length_in_bytes > 0 257 then 258 do; 259 ci_parts.number_of_parts = ci_parts.number_of_parts + 1; 260 261 ci_parts.part (ci_parts.number_of_parts).offset_in_bytes = 262 datum_slot.offset_in_bytes + datum_header_length_in_bytes; 263 ci_parts.part (ci_parts.number_of_parts).length_in_bytes = datum_contents_length_in_bytes; 264 ci_parts.part (ci_parts.number_of_parts).local_ptr = p_datum_contents_ptr; 265 266 end; 267 268 if datum_slot.is_continued 269 then 270 do; 271 ci_parts.number_of_parts = ci_parts.number_of_parts + 1; 272 273 ci_parts.part (ci_parts.number_of_parts).offset_in_bytes = datum_slot.offset_in_bytes; 274 ci_parts.part (ci_parts.number_of_parts).length_in_bytes = datum_header_length_in_bytes; 275 ci_parts.part (ci_parts.number_of_parts).local_ptr = datum_header_ptr; 276 277 end; 278 279 ci_parts.number_of_parts = ci_parts.number_of_parts + 1; 280 281 ci_parts.part (ci_parts.number_of_parts).offset_in_bytes = 282 BYTES_PER_WORD * ((element_id.index - 1) + size (bci_header)); 283 ci_parts.part (ci_parts.number_of_parts).length_in_bytes = BYTES_PER_WORD; 284 ci_parts.part (ci_parts.number_of_parts).local_ptr = datum_slot_ptr; 285 286 if replace_bci_header 287 then 288 do; 289 ci_parts.number_of_parts = ci_parts.number_of_parts + 1; 290 291 ci_parts.part (ci_parts.number_of_parts).offset_in_bytes = 0; 292 ci_parts.part (ci_parts.number_of_parts).length_in_bytes = size (bci_header) * BYTES_PER_WORD; 293 ci_parts.part (ci_parts.number_of_parts).local_ptr = bci_header_ptr; 294 295 296 end; 297 298 299 call file_manager_$put (p_file_opening_id, (element_id.control_interval_id), ci_parts_ptr, p_code); 300 301 end; 302 303 return; 304 305 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 */ 306 307 2 1 /* BEGIN INCLUDE FILE: dm_ci_parts.incl.pl1 */ 2 2 2 3 /* DESCRIPTION: 2 4* 2 5* This include file contains the ci_parts structure. This structure 2 6* is used across the file_manager_ interface to specify the parts of a 2 7* control interval to get or put. If the number_of parts is equal to 0, 2 8* modules which take ci_parts interpret this case to mean to do everything 2 9* except the actual requested operation, i.e., lock the control interval 2 10* but don't get anything. offset_in_bytes is the 0-originned offset in 2 11* bytes from the beginning of the addressable portion of the control interval. 2 12* An offset_in_bytes which is in the addressable portion is in error. 2 13* Likewise, if offset_in_bytes + length_in_bytes is outside of the addressable 2 14* portion, it is in error. 2 15**/ 2 16 2 17 /* HISTORY: 2 18*Written by Matthew Pierret, 01/28/82. 2 19* (01/28/82 Andre Bensoussan, Design.) 2 20*Modified: 2 21*11/07/84 by Matthew Pierret: To add must_be_zero, initial attributes on 2 22* automatic storge. 2 23**/ 2 24 2 25 /* format: style2,ind3 */ 2 26 2 27 dcl 1 ci_parts aligned based (ci_parts_ptr), 2 28 2 number_of_parts fixed bin (17), 2 29 2 must_be_zero fixed bin, 2 30 2 part (cip_number_of_parts refer (ci_parts.number_of_parts)), 2 31 3 offset_in_bytes fixed bin (17), 2 32 3 length_in_bytes fixed bin (17), 2 33 3 local_ptr ptr; 2 34 2 35 dcl ci_parts_ptr ptr init (null ()); 2 36 dcl cip_number_of_parts fixed bin (17) init (0); 2 37 2 38 2 39 /* BEGIN INCLUDE FILE: dm_ci_parts.incl.pl1 */ 308 309 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 */ 310 311 4 1 /* BEGIN INCLUDE FILE dm_cm_datum_constants.incl.pl1 */ 4 2 4 3 /* DESCRIPTION: 4 4* Contains constants describing the extents of datums and datum 4 5* headers. The datum headers are described in dm_cm_datum.incl.pl1. 4 6* MAXIMUM_DATUM_CONTENTS_LENGTH_IN_BYTES is the byte length of the largest 4 7* datum that can be stored in a control interval, allowing for the largest 4 8* possibledatum header. MAXIMUM_DATUM_CONTENTS_LENGTH_IN_BITS is the same 4 9* in bits instead of bytes. MINIMUM_MAXIMUM_DATUM_CONTENTS_LENGTH_IN_BITS 4 10* is the smallest length in bits which requires 4 11* MAXIMUM_DATUM_CONTENTS_LENGTH_IN_BYTES bytes to store. 4 12**/ 4 13 4 14 /* 4 15*HISTORY: 4 16*Written by Matthew Pierret, 02/07/82. 4 17*Modified: 4 18*10/29/82 by Matthew Pierret: Removed DATUM_HEADER*. 4 19*11/02/82 by Matthew Pierret: Added maximum datum contents lengths. 4 20*12/01/82 by Lindsey Spratt: Corrected values for datum header lengths. 4 21*09/18/84 by Matthew Pierret: Corrected values for maximum lengths. Added 4 22* MINIMUM_MAXIMUM_DATUM_CONTENTS_LENGTH_IN_BITS. Added 4 23* DESCRIPTION section. 4 24**/ 4 25 4 26 /* format: style2,ind3,ll79 */ 4 27 dcl CD_DATUM_HEADER_LENGTH_IN_BYTES 4 28 fixed bin init (8) internal static 4 29 options (constant); 4 30 4 31 dcl CD_DATUM_HEADER_LENGTH_IN_BITS 4 32 fixed bin init (72) internal static 4 33 options (constant); 4 34 4 35 dcl CDCN_DATUM_HEADER_LENGTH_IN_BYTES 4 36 init (4) fixed bin int static 4 37 options (constant); 4 38 4 39 dcl CDCN_DATUM_HEADER_LENGTH_IN_BITS 4 40 init (36) fixed bin int static 4 41 options (constant); 4 42 4 43 dcl MAXIMUM_DATUM_CONTENTS_LENGTH_IN_BITS 4 44 init (36360) fixed bin (35) internal 4 45 static options (constant); 4 46 4 47 dcl MAXIMUM_DATUM_CONTENTS_LENGTH_IN_BYTES 4 48 init (4040) fixed bin (35) internal 4 49 static options (constant); 4 50 4 51 dcl MINIMUM_MAXIMUM_DATUM_CONTENTS_LENGTH_IN_BITS 4 52 init (36352) fixed bin (35) internal 4 53 static options (constant); 4 54 4 55 /* END INCLUDE FILE dm_cm_datum.incl.pl1 */ 312 313 5 1 /* BEGIN INCLUDE FILE dm_cm_datum.incl.pl1 */ 5 2 5 3 /* DESCRIPTION: 5 4* This include file contains the declarations of datum structures. 5 5* There are four tyes of datums: your ordinary, run-of-the-mill datum 5 6* (Datum); a continuation datum (CN Datum), which is a continuation of 5 7* another datum; a continued datum (CD Datum), which is continued (has a 5 8* continuation datum) but is not a continuation itself; and a continued 5 9* continuation datum (CDCN Datum), which is both continued and is a 5 10* continuation. To illustrate, datums can be pieced combined in the 5 11* following ways: 5 12* 5 13* 1) Datum alone. 5 14* 5 15* 2) CD Datum -> CN Datum. 5 16* 5 17* 3) CD Datum -> CDCN Datum {-> CDCN Datum -> ...-> CDCN Datum} -> CN Datum. 5 18* 5 19* continued_datum and continued_continuation_datum each contains a header 5 20* which includes the identifier of the datum which is its continuation. 5 21* continued_datum.header.full_length is the length in bits of the entire 5 22* element, i.e., the addition of the length of contents structure component 5 23* of all of the datums from CD Datum to CN Datum. 5 24**/ 5 25 5 26 /* HISTORY: 5 27*Written by Matthew Pierret, 02/07/82. 5 28*Modified: 5 29*03/25/82 by Matthew Pierret: Changed all datum structures to be unaligned. 5 30*06/14/82 by Matthew Pierret: Added DATUM_HEADER_LENGTH_IN_BYTES. 5 31*08/04/82 by Matthew Pierret: Added DATUM_HEADER_LENGTH_IN_BITS. 5 32*10/20/82 by Matthew Pierret: Split into two include files, this one and 5 33* dm_cm_datum_constants. The latter holds only and all constants 5 34* formerly in this include file. 5 35*10/29/82 by Matthew Pierret: Removed datum headers. 5 36*09/18/84 by Matthew Pierret: Added DESCRIPTION section. Added datum and 5 37* continuation_datum (mainly for illustration). 5 38*12/03/84 by Matthew Pierret: Removed the non-based structures 5 39* (cd cdcn)_datum_headers. 5 40**/ 5 41 5 42 /* format: style2,ll79,ind3 */ 5 43 5 44 dcl 1 datum unaligned based (datum_ptr), 5 45 2 contents bit (datum_contents_length_in_bits); 5 46 5 47 dcl 1 continuation_datum unaligned based (datum_ptr), 5 48 2 contents bit (datum_contents_length_in_bits); 5 49 5 50 dcl 1 continued_datum unaligned based (datum_ptr), 5 51 2 header, 5 52 3 full_length fixed bin (35), 5 53 3 continuation like datum_id, 5 54 2 contents bit (datum_contents_length_in_bits); 5 55 5 56 dcl 1 continued_continuation_datum 5 57 unaligned based (datum_ptr), 5 58 2 header, 5 59 3 continuation like datum_id, 5 60 2 contents bit (datum_contents_length_in_bits); 5 61 5 62 dcl 1 datum_id aligned based (datum_id_ptr), 5 63 2 control_interval_id 5 64 fixed bin (24) unal uns, 5 65 2 index fixed bin (12) unal uns; 5 66 5 67 dcl datum_ptr ptr init (null ()); 5 68 dcl datum_id_ptr ptr init (null ()); 5 69 dcl datum_contents_length_in_bits 5 70 fixed bin (35) init (-1); 5 71 5 72 5 73 5 74 /* END INCLUDE FILE dm_cm_datum.incl.pl1 */ 314 315 6 1 /* BEGIN INCLUDE FILE dm_element_id.incl.pl1 */ 6 2 6 3 /* DESCRIPTION: 6 4* 6 5* Contains the declaration of an element identifier. Element 6 6* identifiers consist of two parts, the id (number) of the control interval 6 7* in which the element resides, and the index into the slot table of 6 8* the element in the control interval. The declaration of the element_id 6 9* structure reflects this division of the element identifier. The structure 6 10* is based on the automatic bit string element_id_string because programs 6 11* generally pass bit strings (element_id_string) to each other, then 6 12* interpret the bit string by overlaying the element_id structure ony if 6 13* it is necessary to access the parts of the id. Basing element_id on 6 14* addr(element_id_string) instead of on a pointer removes the necessity 6 15* for always setting that pointer explicitly and guarantees that changes 6 16* made to the string or structure do not get inconsistent. 6 17* 6 18* Changes made to element_id must also be made to datum_id, declared in 6 19* dm_cm_datum.incl.pl1. 6 20**/ 6 21 6 22 /* HISTORY: 6 23*Written by Matthew Pierret, 04/01/82. 6 24*Modified: 6 25*09/24/84 by Matthew Pierret: Added DESCRIPTION section. 6 26**/ 6 27 6 28 /* format: style2,ind3,ll79 */ 6 29 6 30 dcl element_id_string bit (36) aligned; 6 31 6 32 dcl 1 element_id aligned based (addr (element_id_string)), 6 33 2 control_interval_id 6 34 fixed bin (24) unal unsigned, 6 35 2 index fixed bin (12) unal unsigned; 6 36 6 37 6 38 /* END INCLUDE FILE dm_element_id.incl.pl1 */ 316 317 318 end cm_put_datum_in_place; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 01/03/85 1149.0 cm_put_datum_in_place.pl1 >spec>temp>famis1>cm_put_datum_in_place.pl1 306 1 01/03/85 1003.0 dm_cm_basic_ci.incl.pl1 >spec>temp>famis1>dm_cm_basic_ci.incl.pl1 308 2 01/03/85 1005.2 dm_ci_parts.incl.pl1 >spec>temp>famis1>dm_ci_parts.incl.pl1 310 3 01/03/85 1005.2 dm_ci_lengths.incl.pl1 >spec>temp>famis1>dm_ci_lengths.incl.pl1 312 4 01/03/85 1003.1 dm_cm_datum_constants.incl.pl1 >spec>temp>famis1>dm_cm_datum_constants.incl.pl1 314 5 01/03/85 1005.4 dm_cm_datum.incl.pl1 >spec>temp>famis1>dm_cm_datum.incl.pl1 316 6 01/03/85 1003.2 dm_element_id.incl.pl1 >spec>temp>famis1>dm_element_id.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. BITS_PER_BYTE 000565 constant fixed bin(17,0) initial dcl 143 ref 213 213 214 214 226 BYTES_PER_WORD constant fixed bin(17,0) initial dcl 144 ref 281 283 292 CDCN_DATUM_HEADER_LENGTH_IN_BYTES constant fixed bin(17,0) initial dcl 4-35 ref 191 CD_DATUM_HEADER_LENGTH_IN_BYTES constant fixed bin(17,0) initial dcl 4-27 ref 199 addr builtin function dcl 137 ref 194 204 235 244 253 281 299 automatic_ci_parts_buffer 000100 automatic fixed bin(71,0) array dcl 110 set ref 252* 253 based_byte_string based char unaligned dcl 133 set ref 237* 237 245* 245 based_byte_string_length 000146 automatic fixed bin(35,0) initial dcl 114 set ref 114* 234* 237 237 243* 245 245 based_ci based structure level 1 dcl 131 bci_header based structure level 1 dcl 1-63 set ref 281 292 bci_header_ptr 000164 automatic pointer dcl 1-94 set ref 153* 161* 171* 179* 219 219 235 244 281 292 293 byte based bit(9) array level 2 packed unaligned dcl 131 set ref 235 244 cd_datum_header 000160 automatic structure level 1 dcl 126 set ref 204 cdcn_datum_header 000162 automatic structure level 1 dcl 127 set ref 194 ci_datum_contents_ptr 000152 automatic pointer initial dcl 122 set ref 122* 235* 237 ci_datum_header_ptr 000154 automatic pointer initial dcl 123 set ref 123* 244* 245 ci_parts based structure level 1 dcl 2-27 ci_parts_ptr 000170 automatic pointer initial dcl 2-35 set ref 253* 254 259 259 261 261 263 263 264 264 271 271 273 273 274 274 275 275 279 279 281 281 283 283 284 284 289 289 291 291 292 292 293 293 299* 2-35* cip_number_of_parts 000172 automatic fixed bin(17,0) initial dcl 2-36 set ref 2-36* continuation 1 000160 automatic structure level 2 in structure "cd_datum_header" dcl 126 in procedure "cm_put_datum_in_place" set ref 202* continuation 000162 automatic structure level 2 in structure "cdcn_datum_header" dcl 127 in procedure "cm_put_datum_in_place" set ref 193* continued_continuation_datum based structure level 1 packed unaligned dcl 5-56 continued_datum based structure level 1 packed unaligned dcl 5-50 control_interval_id based fixed bin(24,0) level 2 packed unsigned unaligned dcl 6-32 ref 299 datum_contents_length_in_bits 000200 automatic fixed bin(35,0) initial dcl 5-69 set ref 212* 213 226 5-69* datum_contents_length_in_bytes 000147 automatic fixed bin(17,0) dcl 116 set ref 213* 216 219 231 234 256 263 datum_header_length_in_bytes 000150 automatic fixed bin(35,0) initial dcl 118 set ref 118* 191* 199* 216 219 226 235 240 243 261 274 datum_header_ptr 000156 automatic pointer initial dcl 124 set ref 124* 194* 204* 245 275 datum_id based structure level 1 dcl 5-62 datum_id_ptr 000176 automatic pointer initial dcl 5-68 set ref 5-68* datum_ptr 000174 automatic pointer initial dcl 5-67 set ref 5-67* datum_slot based structure level 1 dcl 1-82 datum_slot_ptr 000166 automatic pointer dcl 1-95 set ref 154* 162* 182* 185 190 198 214 226 235 244 261 268 273 284 divide builtin function dcl 137 ref 213 214 element_id based structure level 1 dcl 6-32 element_id_string 000201 automatic bit(36) dcl 6-30 set ref 250* 281 299 file_manager_$put 000010 constant entry external dcl 148 ref 299 flags based structure level 2 packed unaligned dcl 1-82 full_length 000160 automatic fixed bin(35,0) level 2 dcl 126 set ref 201* header based structure level 2 in structure "continued_datum" packed unaligned dcl 5-50 in procedure "cm_put_datum_in_place" header based structure level 2 in structure "continued_continuation_datum" packed unaligned dcl 5-56 in procedure "cm_put_datum_in_place" index 0(24) based fixed bin(12,0) level 2 packed unsigned unaligned dcl 6-32 ref 281 is_buffered 000144 automatic bit(1) initial dcl 112 set ref 112* 163* 180* 228 is_continuation 0(02) based bit(1) level 3 packed unaligned dcl 1-82 set ref 190* 198* is_continued 0(01) based bit(1) level 3 packed unaligned dcl 1-82 set ref 185* 268 length_in_bits 0(19) based fixed bin(17,0) level 2 packed unsigned unaligned dcl 1-82 set ref 214 226* length_in_bytes 3 based fixed bin(17,0) array level 3 dcl 2-27 set ref 263* 274* 283* 292* local_ptr 4 based pointer array level 3 dcl 2-27 set ref 264* 275* 284* 293* null builtin function dcl 137 ref 122 123 124 2-35 5-67 5-68 number_of_parts based fixed bin(17,0) level 2 dcl 2-27 set ref 254* 259* 259 261 263 264 271* 271 273 274 275 279* 279 281 283 284 289* 289 291 292 293 offset_in_bytes 0(04) based fixed bin(15,0) level 2 in structure "datum_slot" packed unsigned unaligned dcl 1-82 in procedure "cm_put_datum_in_place" ref 235 244 261 273 offset_in_bytes 2 based fixed bin(17,0) array level 3 in structure "ci_parts" dcl 2-27 in procedure "cm_put_datum_in_place" set ref 261* 273* 281* 291* old_datum_length_in_bytes 000151 automatic fixed bin(17,0) dcl 120 set ref 214* 216 219 p_bci_header_ptr parameter pointer dcl 101 ref 87 153 167 171 p_ci_buffer_ptr parameter pointer dcl 102 ref 158 161 175 179 p_code parameter fixed bin(35,0) dcl 106 set ref 87 158 167 175 209* 299* p_continuation parameter bit(36) dcl 105 ref 167 175 193 202 p_datum_contents_length_in_bits parameter fixed bin(35,0) dcl 98 ref 87 158 167 175 212 p_datum_contents_ptr parameter pointer dcl 97 ref 87 158 167 175 237 264 p_datum_slot_ptr parameter pointer dcl 100 ref 87 154 158 162 167 175 182 p_element_id parameter bit(36) dcl 96 ref 87 167 250 p_element_length_in_bits parameter fixed bin(35,0) dcl 103 ref 167 175 187 201 p_file_opening_id parameter bit(36) dcl 95 set ref 87 167 299* part 2 based structure array level 2 dcl 2-27 replace_bci_header 000145 automatic bit(1) initial dcl 113 set ref 113* 223* 286 scattered_free_space 3(18) based fixed bin(17,0) level 2 packed unaligned dcl 1-63 set ref 219* 219 size builtin function dcl 137 ref 281 292 unspec builtin function dcl 137 set ref 193* 202* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. BASIC_CI_LAYOUT_1 internal static char(4) initial dcl 1-97 CDCN_DATUM_HEADER_LENGTH_IN_BITS internal static fixed bin(17,0) initial dcl 4-39 CD_DATUM_HEADER_LENGTH_IN_BITS internal static fixed bin(17,0) initial dcl 4-31 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_ADDRESSABLE_LENGTH_IN_BYTES internal static fixed bin(17,0) initial dcl 3-22 CONTROL_INTERVAL_ZERO_ADDRESSABLE_LENGTH_IN_BYTES internal static fixed bin(17,0) initial dcl 3-25 MAXIMUM_DATUM_CONTENTS_LENGTH_IN_BITS internal static fixed bin(35,0) initial dcl 4-43 MAXIMUM_DATUM_CONTENTS_LENGTH_IN_BYTES internal static fixed bin(35,0) initial dcl 4-47 MINIMUM_MAXIMUM_DATUM_CONTENTS_LENGTH_IN_BITS internal static fixed bin(35,0) initial dcl 4-51 basic_control_interval based structure level 1 dcl 1-56 basic_control_interval_ptr automatic pointer dcl 1-92 continuation_datum based structure level 1 packed unaligned dcl 5-47 datum based structure level 1 packed unaligned dcl 5-44 NAMES DECLARED BY EXPLICIT CONTEXT. CD_JOIN 000222 constant label dcl 182 ref 173 JOIN 000255 constant label dcl 209 set ref 156 165 207 buffered 000073 constant entry external dcl 158 buffered_continued 000171 constant entry external dcl 175 cm_put_datum_in_place 000037 constant entry external dcl 87 continued 000133 constant entry external dcl 167 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 652 664 566 662 Length 1174 566 12 273 63 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME cm_put_datum_in_place 158 external procedure is an external procedure. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME cm_put_datum_in_place 000100 automatic_ci_parts_buffer cm_put_datum_in_place 000144 is_buffered cm_put_datum_in_place 000145 replace_bci_header cm_put_datum_in_place 000146 based_byte_string_length cm_put_datum_in_place 000147 datum_contents_length_in_bytes cm_put_datum_in_place 000150 datum_header_length_in_bytes cm_put_datum_in_place 000151 old_datum_length_in_bytes cm_put_datum_in_place 000152 ci_datum_contents_ptr cm_put_datum_in_place 000154 ci_datum_header_ptr cm_put_datum_in_place 000156 datum_header_ptr cm_put_datum_in_place 000160 cd_datum_header cm_put_datum_in_place 000162 cdcn_datum_header cm_put_datum_in_place 000164 bci_header_ptr cm_put_datum_in_place 000166 datum_slot_ptr cm_put_datum_in_place 000170 ci_parts_ptr cm_put_datum_in_place 000172 cip_number_of_parts cm_put_datum_in_place 000174 datum_ptr cm_put_datum_in_place 000176 datum_id_ptr cm_put_datum_in_place 000200 datum_contents_length_in_bits cm_put_datum_in_place 000201 element_id_string cm_put_datum_in_place THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out return mpfx2 ext_entry divide_fx3 THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. file_manager_$put NO EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. CONSTANTS 000564 aa 677777777777 000565 aa 000000000011 000000 aa 404000000043 000001 aa 464000000000 000002 aa 514000000044 000004 aa 077777000043 000005 aa 000001000000 000006 aa 000000000000 000007 aa 000000000000 BEGIN PROCEDURE cm_put_datum_in_place PROLOGUE SEQUENCE 000010 aa 6 00217 4401 00 sxl0 pr6|143 STATEMENT 1 ON LINE 112 000011 aa 6 00144 4501 00 stz pr6|100 is_buffered STATEMENT 1 ON LINE 113 000012 aa 6 00145 4501 00 stz pr6|101 replace_bci_header STATEMENT 1 ON LINE 114 000013 aa 6 00146 4501 00 stz pr6|102 based_byte_string_length STATEMENT 1 ON LINE 118 000014 aa 6 00150 4501 00 stz pr6|104 datum_header_length_in_bytes STATEMENT 1 ON LINE 122 000015 aa 777767 2370 04 ldaq -9,ic 000004 = 077777000043 000001000000 000016 aa 6 00152 7571 00 staq pr6|106 ci_datum_contents_ptr STATEMENT 1 ON LINE 123 000017 aa 6 00154 7571 00 staq pr6|108 ci_datum_header_ptr STATEMENT 1 ON LINE 124 000020 aa 6 00156 7571 00 staq pr6|110 datum_header_ptr STATEMENT 1 ON LINE 35 OF FILE 2 000021 aa 6 00170 7571 00 staq pr6|120 ci_parts_ptr STATEMENT 1 ON LINE 36 OF FILE 2 000022 aa 6 00172 4501 00 stz pr6|122 cip_number_of_parts STATEMENT 1 ON LINE 67 OF FILE 5 000023 aa 6 00174 7571 00 staq pr6|124 datum_ptr STATEMENT 1 ON LINE 68 OF FILE 5 000024 aa 6 00176 7571 00 staq pr6|126 datum_id_ptr STATEMENT 1 ON LINE 69 OF FILE 5 000025 aa 000001 3360 07 lcq 1,dl 000026 aa 6 00200 7561 00 stq pr6|128 datum_contents_length_in_bits 000027 aa 6 00217 7201 00 lxl0 pr6|143 000030 aa 000000 7100 10 tra 0,0 MAIN SEQUENCE ENTRY TO cm_put_datum_in_place STATEMENT 1 ON LINE 87 cm_put_datum_in_place: proc (p_file_opening_id, p_element_id, p_datum_contents_ptr, p_datum_contents_length_in_bits, p_datum_slot_ptr, p_bci_header_ptr, p_code); 000031 at 000007000002 000032 tt 000002000001 000033 tt 000000000001 000034 tt 000001000000 000035 ta 000031000000 000036 da 000033300000 000037 aa 000240 6270 00 eax7 160 000040 aa 7 00034 3521 20 epp2 pr7|28,* 000041 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 000042 aa 000016000000 000043 aa 000000000000 000044 aa 6 00032 3735 20 epp7 pr6|26,* 000045 aa 7 00006 3715 20 epp5 pr7|6,* 000046 aa 6 00202 6515 00 spri5 pr6|130 000047 aa 7 00010 3535 20 epp3 pr7|8,* 000050 aa 6 00204 2535 00 spri3 pr6|132 000051 aa 7 00012 3515 20 epp1 pr7|10,* 000052 aa 6 00206 2515 00 spri1 pr6|134 000053 aa 7 00016 3715 20 epp5 pr7|14,* 000054 aa 6 00214 6515 00 spri5 pr6|140 000055 aa 777733 7000 04 tsx0 -37,ic 000010 STATEMENT 1 ON LINE 153 bci_header_ptr = p_bci_header_ptr; 000056 aa 6 00032 3735 20 epp7 pr6|26,* 000057 aa 7 00014 3715 20 epp5 pr7|12,* p_bci_header_ptr 000060 aa 5 00000 3715 20 epp5 pr5|0,* p_bci_header_ptr 000061 aa 6 00164 6515 00 spri5 pr6|116 bci_header_ptr STATEMENT 1 ON LINE 154 datum_slot_ptr = p_datum_slot_ptr; 000062 aa 6 00206 3535 20 epp3 pr6|134,* p_datum_slot_ptr 000063 aa 3 00000 3535 20 epp3 pr3|0,* p_datum_slot_ptr 000064 aa 6 00166 2535 00 spri3 pr6|118 datum_slot_ptr STATEMENT 1 ON LINE 156 goto JOIN; 000065 aa 000170 7100 04 tra 120,ic 000255 ENTRY TO buffered STATEMENT 1 ON LINE 158 buffered: entry (p_ci_buffer_ptr, p_datum_contents_ptr, p_datum_contents_length_in_bits, p_datum_slot_ptr, p_code); 000066 at 000005000001 000067 tt 000001000000 000070 tt 000001000000 000071 ta 000066000000 000072 da 000041300000 000073 aa 000240 6270 00 eax7 160 000074 aa 7 00034 3521 20 epp2 pr7|28,* 000075 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 000076 aa 000012000000 000077 aa 000000000000 000100 aa 6 00032 3735 20 epp7 pr6|26,* 000101 aa 7 00004 3715 20 epp5 pr7|4,* 000102 aa 6 00202 6515 00 spri5 pr6|130 000103 aa 7 00006 3535 20 epp3 pr7|6,* 000104 aa 6 00204 2535 00 spri3 pr6|132 000105 aa 7 00010 3515 20 epp1 pr7|8,* 000106 aa 6 00206 2515 00 spri1 pr6|134 000107 aa 7 00012 3715 20 epp5 pr7|10,* 000110 aa 6 00214 6515 00 spri5 pr6|140 000111 aa 777677 7000 04 tsx0 -65,ic 000010 STATEMENT 1 ON LINE 161 bci_header_ptr = p_ci_buffer_ptr; 000112 aa 6 00032 3735 20 epp7 pr6|26,* 000113 aa 7 00002 3715 20 epp5 pr7|2,* p_ci_buffer_ptr 000114 aa 5 00000 3715 20 epp5 pr5|0,* p_ci_buffer_ptr 000115 aa 6 00164 6515 00 spri5 pr6|116 bci_header_ptr STATEMENT 1 ON LINE 162 datum_slot_ptr = p_datum_slot_ptr; 000116 aa 6 00206 3535 20 epp3 pr6|134,* p_datum_slot_ptr 000117 aa 3 00000 3535 20 epp3 pr3|0,* p_datum_slot_ptr 000120 aa 6 00166 2535 00 spri3 pr6|118 datum_slot_ptr STATEMENT 1 ON LINE 163 is_buffered = "1"b; 000121 aa 400000 2350 03 lda 131072,du 000122 aa 6 00144 7551 00 sta pr6|100 is_buffered STATEMENT 1 ON LINE 165 goto JOIN; 000123 aa 000132 7100 04 tra 90,ic 000255 ENTRY TO continued STATEMENT 1 ON LINE 167 continued: entry (p_file_opening_id, p_element_id, p_datum_contents_ptr, p_datum_contents_length_in_bits, p_datum_slot_ptr, p_bci_header_ptr, p_element_length_in_bits, p_continuation, p_code); 000124 at 000011000002 000125 tt 000002000001 000126 tt 000000000001 000127 tt 000001000000 000130 tt 000002000000 000131 ta 000124000000 000132 da 000047300000 000133 aa 000240 6270 00 eax7 160 000134 aa 7 00034 3521 20 epp2 pr7|28,* 000135 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 000136 aa 000022000000 000137 aa 000000000000 000140 aa 6 00032 3735 20 epp7 pr6|26,* 000141 aa 7 00006 3715 20 epp5 pr7|6,* 000142 aa 6 00202 6515 00 spri5 pr6|130 000143 aa 7 00010 3535 20 epp3 pr7|8,* 000144 aa 6 00204 2535 00 spri3 pr6|132 000145 aa 7 00012 3515 20 epp1 pr7|10,* 000146 aa 6 00206 2515 00 spri1 pr6|134 000147 aa 7 00016 3715 20 epp5 pr7|14,* 000150 aa 6 00210 6515 00 spri5 pr6|136 000151 aa 7 00020 3535 20 epp3 pr7|16,* 000152 aa 6 00212 2535 00 spri3 pr6|138 000153 aa 7 00022 3515 20 epp1 pr7|18,* 000154 aa 6 00214 2515 00 spri1 pr6|140 000155 aa 777633 7000 04 tsx0 -101,ic 000010 STATEMENT 1 ON LINE 171 bci_header_ptr = p_bci_header_ptr; 000156 aa 6 00032 3735 20 epp7 pr6|26,* 000157 aa 7 00014 3715 20 epp5 pr7|12,* p_bci_header_ptr 000160 aa 5 00000 3715 20 epp5 pr5|0,* p_bci_header_ptr 000161 aa 6 00164 6515 00 spri5 pr6|116 bci_header_ptr STATEMENT 1 ON LINE 173 goto CD_JOIN; 000162 aa 000040 7100 04 tra 32,ic 000222 ENTRY TO buffered_continued STATEMENT 1 ON LINE 175 buffered_continued: entry (p_ci_buffer_ptr, p_datum_contents_ptr, p_datum_contents_length_in_bits, p_datum_slot_ptr, p_element_length_in_bits, p_continuation, p_code); 000163 at 000007000001 000164 tt 000001000000 000165 tt 000001000000 000166 tt 000002000000 000167 ta 000163000000 000170 da 000057300000 000171 aa 000240 6270 00 eax7 160 000172 aa 7 00034 3521 20 epp2 pr7|28,* 000173 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 000174 aa 000016000000 000175 aa 000000000000 000176 aa 6 00032 3735 20 epp7 pr6|26,* 000177 aa 7 00004 3715 20 epp5 pr7|4,* 000200 aa 6 00202 6515 00 spri5 pr6|130 000201 aa 7 00006 3535 20 epp3 pr7|6,* 000202 aa 6 00204 2535 00 spri3 pr6|132 000203 aa 7 00010 3515 20 epp1 pr7|8,* 000204 aa 6 00206 2515 00 spri1 pr6|134 000205 aa 7 00012 3715 20 epp5 pr7|10,* 000206 aa 6 00210 6515 00 spri5 pr6|136 000207 aa 7 00014 3535 20 epp3 pr7|12,* 000210 aa 6 00212 2535 00 spri3 pr6|138 000211 aa 7 00016 3515 20 epp1 pr7|14,* 000212 aa 6 00214 2515 00 spri1 pr6|140 000213 aa 777575 7000 04 tsx0 -131,ic 000010 STATEMENT 1 ON LINE 179 bci_header_ptr = p_ci_buffer_ptr; 000214 aa 6 00032 3735 20 epp7 pr6|26,* 000215 aa 7 00002 3715 20 epp5 pr7|2,* p_ci_buffer_ptr 000216 aa 5 00000 3715 20 epp5 pr5|0,* p_ci_buffer_ptr 000217 aa 6 00164 6515 00 spri5 pr6|116 bci_header_ptr STATEMENT 1 ON LINE 180 is_buffered = "1"b; 000220 aa 400000 2350 03 lda 131072,du 000221 aa 6 00144 7551 00 sta pr6|100 is_buffered STATEMENT 1 ON LINE 182 CD_JOIN: datum_slot_ptr = p_datum_slot_ptr; 000222 aa 6 00206 3535 20 epp3 pr6|134,* p_datum_slot_ptr 000223 aa 3 00000 3535 20 epp3 pr3|0,* p_datum_slot_ptr 000224 aa 6 00166 2535 00 spri3 pr6|118 datum_slot_ptr STATEMENT 1 ON LINE 185 datum_slot.flags.is_continued = "1"b; 000225 aa 200000 2350 03 lda 65536,du 000226 aa 3 00000 2551 00 orsa pr3|0 datum_slot.is_continued STATEMENT 1 ON LINE 187 if p_element_length_in_bits < 0 then do; 000227 aa 6 00210 2361 20 ldq pr6|136,* p_element_length_in_bits 000230 aa 000012 6050 04 tpl 10,ic 000242 STATEMENT 1 ON LINE 190 datum_slot.flags.is_continuation = "1"b; 000231 aa 100000 2350 03 lda 32768,du 000232 aa 3 00000 2551 00 orsa pr3|0 datum_slot.is_continuation STATEMENT 1 ON LINE 191 datum_header_length_in_bytes = CDCN_DATUM_HEADER_LENGTH_IN_BYTES; 000233 aa 000004 2360 07 ldq 4,dl 000234 aa 6 00150 7561 00 stq pr6|104 datum_header_length_in_bytes STATEMENT 1 ON LINE 193 unspec (cdcn_datum_header.continuation) = p_continuation; 000235 aa 6 00212 2351 20 lda pr6|138,* p_continuation 000236 aa 6 00162 7551 00 sta pr6|114 STATEMENT 1 ON LINE 194 datum_header_ptr = addr (cdcn_datum_header); 000237 aa 6 00162 3515 00 epp1 pr6|114 cdcn_datum_header 000240 aa 6 00156 2515 00 spri1 pr6|110 datum_header_ptr STATEMENT 1 ON LINE 195 end; 000241 aa 000014 7100 04 tra 12,ic 000255 STATEMENT 1 ON LINE 196 else do; STATEMENT 1 ON LINE 198 datum_slot.flags.is_continuation = "0"b; 000242 aa 000322 2350 04 lda 210,ic 000564 = 677777777777 000243 aa 3 00000 3551 00 ansa pr3|0 datum_slot.is_continuation STATEMENT 1 ON LINE 199 datum_header_length_in_bytes = CD_DATUM_HEADER_LENGTH_IN_BYTES; 000244 aa 000010 2360 07 ldq 8,dl 000245 aa 6 00150 7561 00 stq pr6|104 datum_header_length_in_bytes STATEMENT 1 ON LINE 201 cd_datum_header.full_length = p_element_length_in_bits; 000246 aa 6 00210 2361 20 ldq pr6|136,* p_element_length_in_bits 000247 aa 6 00160 7561 00 stq pr6|112 cd_datum_header.full_length STATEMENT 1 ON LINE 202 unspec (cd_datum_header.continuation) = p_continuation; 000250 aa 6 00212 2351 20 lda pr6|138,* p_continuation 000251 aa 6 00161 7551 00 sta pr6|113 STATEMENT 1 ON LINE 204 datum_header_ptr = addr (cd_datum_header); 000252 aa 6 00160 3515 00 epp1 pr6|112 cd_datum_header 000253 aa 6 00156 2515 00 spri1 pr6|110 datum_header_ptr STATEMENT 1 ON LINE 205 end; STATEMENT 1 ON LINE 207 goto JOIN; 000254 aa 000001 7100 04 tra 1,ic 000255 STATEMENT 1 ON LINE 209 JOIN: p_code = 0; 000255 aa 6 00214 4501 20 stz pr6|140,* p_code STATEMENT 1 ON LINE 212 datum_contents_length_in_bits = p_datum_contents_length_in_bits; 000256 aa 6 00204 2361 20 ldq pr6|132,* p_datum_contents_length_in_bits 000257 aa 6 00200 7561 00 stq pr6|128 datum_contents_length_in_bits STATEMENT 1 ON LINE 213 datum_contents_length_in_bytes = divide (datum_contents_length_in_bits + BITS_PER_BYTE - 1, BITS_PER_BYTE, 17, 0); 000260 aa 000044 7770 00 llr 36 000261 aa 000044 7330 00 lrs 36 000262 aa 000011 0330 07 adl 9,dl 000263 aa 000000 5330 00 negl 0 000264 aa 000001 0330 07 adl 1,dl 000265 aa 000000 5330 00 negl 0 000266 aa 000277 3520 04 epp2 191,ic 000565 = 000000000011 000267 aa 0 01264 7001 00 tsx0 pr0|692 divide_fx3 000270 aa 000000000000 000271 aa 6 00147 7561 00 stq pr6|103 datum_contents_length_in_bytes STATEMENT 1 ON LINE 214 old_datum_length_in_bytes = divide (datum_slot.length_in_bits + BITS_PER_BYTE - 1, BITS_PER_BYTE, 17, 0); 000272 aa 3 00000 2361 00 ldq pr3|0 datum_slot.length_in_bits 000273 aa 0 00376 3771 00 anaq pr0|254 = 000000000000 000000377777 000274 aa 2 00000 0761 00 adq pr2|0 BITS_PER_BYTE 000275 aa 000001 1760 07 sbq 1,dl 000276 aa 2 00000 5061 00 div pr2|0 BITS_PER_BYTE 000277 aa 6 00151 7561 00 stq pr6|105 old_datum_length_in_bytes STATEMENT 1 ON LINE 216 if old_datum_length_in_bytes > datum_contents_length_in_bytes + datum_header_length_in_bytes then do; 000300 aa 6 00147 2351 00 lda pr6|103 datum_contents_length_in_bytes 000301 aa 000044 7330 00 lrs 36 000302 aa 6 00150 0331 00 adl pr6|104 datum_header_length_in_bytes 000303 aa 6 00220 7571 00 staq pr6|144 000304 aa 6 00151 2351 00 lda pr6|105 old_datum_length_in_bytes 000305 aa 000044 7330 00 lrs 36 000306 aa 6 00220 1171 00 cmpaq pr6|144 000307 aa 000017 6044 04 tmoz 15,ic 000326 STATEMENT 1 ON LINE 219 bci_header.scattered_free_space = bci_header.scattered_free_space + old_datum_length_in_bytes - datum_contents_length_in_bytes - datum_header_length_in_bytes; 000310 aa 5 00003 2351 00 lda pr5|3 bci_header.scattered_free_space 000311 aa 000022 7350 00 als 18 000312 aa 000066 7330 00 lrs 54 000313 aa 6 00151 0761 00 adq pr6|105 old_datum_length_in_bytes 000314 aa 6 00147 1761 00 sbq pr6|103 datum_contents_length_in_bytes 000315 aa 0 00110 6761 00 erq pr0|72 = 777777777777 000316 aa 000001 0760 07 adq 1,dl 000317 aa 000044 7770 00 llr 36 000320 aa 000044 7330 00 lrs 36 000321 aa 6 00150 0331 00 adl pr6|104 datum_header_length_in_bytes 000322 aa 000000 5330 00 negl 0 000323 aa 5 00003 5521 14 stbq pr5|3,14 bci_header.scattered_free_space STATEMENT 1 ON LINE 223 replace_bci_header = "1"b; 000324 aa 400000 2350 03 lda 131072,du 000325 aa 6 00145 7551 00 sta pr6|101 replace_bci_header STATEMENT 1 ON LINE 224 end; STATEMENT 1 ON LINE 226 datum_slot.length_in_bits = datum_contents_length_in_bits + datum_header_length_in_bytes * BITS_PER_BYTE; 000326 aa 6 00150 2361 00 ldq pr6|104 datum_header_length_in_bytes 000327 aa 2 00000 4021 00 mpy pr2|0 BITS_PER_BYTE 000330 aa 6 00200 0331 00 adl pr6|128 datum_contents_length_in_bits 000331 aa 3 00000 6761 00 erq pr3|0 datum_slot.length_in_bits 000332 aa 377777 3760 07 anq 131071,dl 000333 aa 3 00000 6561 00 ersq pr3|0 datum_slot.length_in_bits STATEMENT 1 ON LINE 228 if is_buffered then do; 000334 aa 6 00144 2351 00 lda pr6|100 is_buffered 000335 aa 000047 6000 04 tze 39,ic 000404 STATEMENT 1 ON LINE 231 if datum_contents_length_in_bytes > 0 then do; 000336 aa 6 00147 2361 00 ldq pr6|103 datum_contents_length_in_bytes 000337 aa 000025 6044 04 tmoz 21,ic 000364 STATEMENT 1 ON LINE 234 based_byte_string_length = datum_contents_length_in_bytes; 000340 aa 6 00146 7561 00 stq pr6|102 based_byte_string_length STATEMENT 1 ON LINE 235 ci_datum_contents_ptr = addr (based_ci.byte (datum_slot.offset_in_bytes + datum_header_length_in_bytes + 1)); 000341 aa 3 00000 2351 00 lda pr3|0 datum_slot.offset_in_bytes 000342 aa 000004 7350 00 als 4 000343 aa 000071 7730 00 lrl 57 000344 aa 000044 7770 00 llr 36 000345 aa 000044 7330 00 lrs 36 000346 aa 6 00150 0331 00 adl pr6|104 datum_header_length_in_bytes 000347 aa 6 00220 7571 00 staq pr6|144 000350 aa 000011 2360 07 ldq 9,dl 000351 aa 6 00220 3521 00 epp2 pr6|144 000352 aa 0 00671 7001 00 tsx0 pr0|441 mpfx2 000353 aa 5 00000 3521 00 epp2 pr5|0 based_ci.byte 000354 aa 2 00000 5035 06 abd pr2|0,ql 000355 aa 6 00152 2521 00 spri2 pr6|106 ci_datum_contents_ptr STATEMENT 1 ON LINE 237 ci_datum_contents_ptr -> based_byte_string = p_datum_contents_ptr -> based_byte_string; 000356 aa 6 00202 3515 20 epp1 pr6|130,* p_datum_contents_ptr 000357 aa 1 00000 3515 20 epp1 pr1|0,* p_datum_contents_ptr 000360 aa 6 00146 2351 00 lda pr6|102 based_byte_string_length 000361 aa 040 140 100 540 mlr (pr,rl),(pr,rl),fill(040) 000362 aa 1 00000 00 0005 desc9a pr1|0,al based_byte_string 000363 aa 2 00000 00 0005 desc9a pr2|0,al based_byte_string STATEMENT 1 ON LINE 238 end; STATEMENT 1 ON LINE 240 if datum_header_length_in_bytes > 0 then do; 000364 aa 6 00150 2361 00 ldq pr6|104 datum_header_length_in_bytes 000365 aa 000176 6044 04 tmoz 126,ic 000563 STATEMENT 1 ON LINE 243 based_byte_string_length = datum_header_length_in_bytes; 000366 aa 6 00146 7561 00 stq pr6|102 based_byte_string_length STATEMENT 1 ON LINE 244 ci_datum_header_ptr = addr (based_ci.byte (datum_slot.offset_in_bytes + 1)); 000367 aa 3 00000 2351 00 lda pr3|0 datum_slot.offset_in_bytes 000370 aa 000004 7350 00 als 4 000371 aa 000071 7730 00 lrl 57 000372 aa 000011 4020 07 mpy 9,dl 000373 aa 5 00000 3521 00 epp2 pr5|0 based_ci.byte 000374 aa 2 00000 5035 06 abd pr2|0,ql 000375 aa 6 00154 2521 00 spri2 pr6|108 ci_datum_header_ptr STATEMENT 1 ON LINE 245 ci_datum_header_ptr -> based_byte_string = datum_header_ptr -> based_byte_string; 000376 aa 6 00156 3515 20 epp1 pr6|110,* datum_header_ptr 000377 aa 6 00146 2351 00 lda pr6|102 based_byte_string_length 000400 aa 040 140 100 540 mlr (pr,rl),(pr,rl),fill(040) 000401 aa 1 00000 00 0005 desc9a pr1|0,al based_byte_string 000402 aa 2 00000 00 0005 desc9a pr2|0,al based_byte_string STATEMENT 1 ON LINE 246 end; STATEMENT 1 ON LINE 247 end; 000403 aa 000160 7100 04 tra 112,ic 000563 STATEMENT 1 ON LINE 248 else do; STATEMENT 1 ON LINE 250 element_id_string = p_element_id; 000404 aa 7 00004 2351 20 lda pr7|4,* p_element_id 000405 aa 6 00201 7551 00 sta pr6|129 element_id_string STATEMENT 1 ON LINE 252 automatic_ci_parts_buffer = 0; 000406 aa 000001 2360 07 ldq 1,dl 000407 aa 6 00216 7561 00 stq pr6|142 000410 aa 6 00216 2361 00 ldq pr6|142 000411 aa 000001 7360 00 qls 1 000412 aa 000000 6270 06 eax7 0,ql 000413 aa 777373 2370 04 ldaq -261,ic 000006 = 000000000000 000000000000 000414 aa 6 00076 7571 17 staq pr6|62,7 automatic_ci_parts_buffer 000415 aa 6 00216 2361 00 ldq pr6|142 000416 aa 6 00216 0541 00 aos pr6|142 000417 aa 000022 1160 07 cmpq 18,dl 000420 aa 777770 6040 04 tmi -8,ic 000410 STATEMENT 1 ON LINE 253 ci_parts_ptr = addr (automatic_ci_parts_buffer); 000421 aa 6 00100 3735 00 epp7 pr6|64 automatic_ci_parts_buffer 000422 aa 6 00170 6535 00 spri7 pr6|120 ci_parts_ptr STATEMENT 1 ON LINE 254 ci_parts.number_of_parts = 0; 000423 aa 7 00000 4501 00 stz pr7|0 ci_parts.number_of_parts STATEMENT 1 ON LINE 256 if datum_contents_length_in_bytes > 0 then do; 000424 aa 6 00147 2361 00 ldq pr6|103 datum_contents_length_in_bytes 000425 aa 000026 6044 04 tmoz 22,ic 000453 STATEMENT 1 ON LINE 259 ci_parts.number_of_parts = ci_parts.number_of_parts + 1; 000426 aa 7 00000 0541 00 aos pr7|0 ci_parts.number_of_parts STATEMENT 1 ON LINE 261 ci_parts.part (ci_parts.number_of_parts).offset_in_bytes = datum_slot.offset_in_bytes + datum_header_length_in_bytes; 000427 aa 7 00000 2361 00 ldq pr7|0 ci_parts.number_of_parts 000430 aa 000002 7360 00 qls 2 000431 aa 6 00166 2351 20 lda pr6|118,* datum_slot.offset_in_bytes 000432 aa 000004 7350 00 als 4 000433 aa 000000 6260 06 eax6 0,ql 000434 aa 000071 7730 00 lrl 57 000435 aa 000044 7770 00 llr 36 000436 aa 000044 7330 00 lrs 36 000437 aa 6 00150 0331 00 adl pr6|104 datum_header_length_in_bytes 000440 aa 7 77776 7561 16 stq pr7|-2,6 ci_parts.offset_in_bytes STATEMENT 1 ON LINE 263 ci_parts.part (ci_parts.number_of_parts).length_in_bytes = datum_contents_length_in_bytes; 000441 aa 7 00000 2361 00 ldq pr7|0 ci_parts.number_of_parts 000442 aa 000002 7360 00 qls 2 000443 aa 000000 6250 06 eax5 0,ql 000444 aa 6 00147 2361 00 ldq pr6|103 datum_contents_length_in_bytes 000445 aa 7 77777 7561 15 stq pr7|-1,5 ci_parts.length_in_bytes STATEMENT 1 ON LINE 264 ci_parts.part (ci_parts.number_of_parts).local_ptr = p_datum_contents_ptr; 000446 aa 7 00000 2361 00 ldq pr7|0 ci_parts.number_of_parts 000447 aa 000002 7360 00 qls 2 000450 aa 6 00202 3715 20 epp5 pr6|130,* p_datum_contents_ptr 000451 aa 5 00000 3715 20 epp5 pr5|0,* p_datum_contents_ptr 000452 aa 7 00000 6515 06 spri5 pr7|0,ql ci_parts.local_ptr STATEMENT 1 ON LINE 266 end; STATEMENT 1 ON LINE 268 if datum_slot.is_continued then do; 000453 aa 6 00166 2351 20 lda pr6|118,* datum_slot.is_continued 000454 aa 200000 3150 03 cana 65536,du 000455 aa 000022 6000 04 tze 18,ic 000477 STATEMENT 1 ON LINE 271 ci_parts.number_of_parts = ci_parts.number_of_parts + 1; 000456 aa 7 00000 0541 00 aos pr7|0 ci_parts.number_of_parts STATEMENT 1 ON LINE 273 ci_parts.part (ci_parts.number_of_parts).offset_in_bytes = datum_slot.offset_in_bytes; 000457 aa 7 00000 2361 00 ldq pr7|0 ci_parts.number_of_parts 000460 aa 000002 7360 00 qls 2 000461 aa 6 00166 2351 20 lda pr6|118,* datum_slot.offset_in_bytes 000462 aa 000004 7350 00 als 4 000463 aa 000000 6260 06 eax6 0,ql 000464 aa 000071 7730 00 lrl 57 000465 aa 7 77776 7561 16 stq pr7|-2,6 ci_parts.offset_in_bytes STATEMENT 1 ON LINE 274 ci_parts.part (ci_parts.number_of_parts).length_in_bytes = datum_header_length_in_bytes; 000466 aa 7 00000 2361 00 ldq pr7|0 ci_parts.number_of_parts 000467 aa 000002 7360 00 qls 2 000470 aa 000000 6250 06 eax5 0,ql 000471 aa 6 00150 2361 00 ldq pr6|104 datum_header_length_in_bytes 000472 aa 7 77777 7561 15 stq pr7|-1,5 ci_parts.length_in_bytes STATEMENT 1 ON LINE 275 ci_parts.part (ci_parts.number_of_parts).local_ptr = datum_header_ptr; 000473 aa 7 00000 2361 00 ldq pr7|0 ci_parts.number_of_parts 000474 aa 000002 7360 00 qls 2 000475 aa 6 00156 3715 20 epp5 pr6|110,* datum_header_ptr 000476 aa 7 00000 6515 06 spri5 pr7|0,ql ci_parts.local_ptr STATEMENT 1 ON LINE 277 end; STATEMENT 1 ON LINE 279 ci_parts.number_of_parts = ci_parts.number_of_parts + 1; 000477 aa 7 00000 0541 00 aos pr7|0 ci_parts.number_of_parts STATEMENT 1 ON LINE 281 ci_parts.part (ci_parts.number_of_parts).offset_in_bytes = BYTES_PER_WORD * ((element_id.index - 1) + size (bci_header)); 000500 aa 7 00000 2361 00 ldq pr7|0 ci_parts.number_of_parts 000501 aa 000002 7360 00 qls 2 000502 aa 6 00201 2351 00 lda pr6|129 element_id.index 000503 aa 000030 7350 00 als 24 000504 aa 000000 6260 06 eax6 0,ql 000505 aa 000074 7730 00 lrl 60 000506 aa 000004 0760 07 adq 4,dl 000507 aa 000004 4020 07 mpy 4,dl 000510 aa 7 77776 7561 16 stq pr7|-2,6 ci_parts.offset_in_bytes STATEMENT 1 ON LINE 283 ci_parts.part (ci_parts.number_of_parts).length_in_bytes = BYTES_PER_WORD; 000511 aa 7 00000 2361 00 ldq pr7|0 ci_parts.number_of_parts 000512 aa 000002 7360 00 qls 2 000513 aa 000000 6250 06 eax5 0,ql 000514 aa 000004 2360 07 ldq 4,dl 000515 aa 7 77777 7561 15 stq pr7|-1,5 ci_parts.length_in_bytes STATEMENT 1 ON LINE 284 ci_parts.part (ci_parts.number_of_parts).local_ptr = datum_slot_ptr; 000516 aa 7 00000 2361 00 ldq pr7|0 ci_parts.number_of_parts 000517 aa 000002 7360 00 qls 2 000520 aa 6 00166 3715 20 epp5 pr6|118,* datum_slot_ptr 000521 aa 7 00000 6515 06 spri5 pr7|0,ql ci_parts.local_ptr STATEMENT 1 ON LINE 286 if replace_bci_header then do; 000522 aa 6 00145 2351 00 lda pr6|101 replace_bci_header 000523 aa 000017 6000 04 tze 15,ic 000542 STATEMENT 1 ON LINE 289 ci_parts.number_of_parts = ci_parts.number_of_parts + 1; 000524 aa 7 00000 0541 00 aos pr7|0 ci_parts.number_of_parts STATEMENT 1 ON LINE 291 ci_parts.part (ci_parts.number_of_parts).offset_in_bytes = 0; 000525 aa 7 00000 2361 00 ldq pr7|0 ci_parts.number_of_parts 000526 aa 000002 7360 00 qls 2 000527 aa 7 77776 4501 06 stz pr7|-2,ql ci_parts.offset_in_bytes STATEMENT 1 ON LINE 292 ci_parts.part (ci_parts.number_of_parts).length_in_bytes = size (bci_header) * BYTES_PER_WORD; 000530 aa 7 00000 2361 00 ldq pr7|0 ci_parts.number_of_parts 000531 aa 000002 7360 00 qls 2 000532 aa 000000 6240 06 eax4 0,ql 000533 aa 000005 2360 07 ldq 5,dl 000534 aa 000004 4020 07 mpy 4,dl 000535 aa 7 77777 7561 14 stq pr7|-1,4 ci_parts.length_in_bytes STATEMENT 1 ON LINE 293 ci_parts.part (ci_parts.number_of_parts).local_ptr = bci_header_ptr; 000536 aa 7 00000 2361 00 ldq pr7|0 ci_parts.number_of_parts 000537 aa 000002 7360 00 qls 2 000540 aa 6 00164 3535 20 epp3 pr6|116,* bci_header_ptr 000541 aa 7 00000 2535 06 spri3 pr7|0,ql ci_parts.local_ptr STATEMENT 1 ON LINE 296 end; STATEMENT 1 ON LINE 299 call file_manager_$put (p_file_opening_id, (element_id.control_interval_id), ci_parts_ptr, p_code); 000542 aa 6 00201 2351 00 lda pr6|129 element_id.control_interval_id 000543 aa 000060 7730 00 lrl 48 000544 aa 6 00222 7561 00 stq pr6|146 000545 aa 6 00032 3535 20 epp3 pr6|26,* 000546 aa 3 00002 3521 20 epp2 pr3|2,* p_file_opening_id 000547 aa 6 00226 2521 00 spri2 pr6|150 000550 aa 6 00222 3521 00 epp2 pr6|146 000551 aa 6 00230 2521 00 spri2 pr6|152 000552 aa 6 00170 3521 00 epp2 pr6|120 ci_parts_ptr 000553 aa 6 00232 2521 00 spri2 pr6|154 000554 aa 6 00214 3521 20 epp2 pr6|140,* p_code 000555 aa 6 00234 2521 00 spri2 pr6|156 000556 aa 6 00224 6211 00 eax1 pr6|148 000557 aa 020000 4310 07 fld 8192,dl 000560 aa 6 00044 3701 20 epp4 pr6|36,* 000561 la 4 00010 3521 20 epp2 pr4|8,* file_manager_$put 000562 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 301 end; STATEMENT 1 ON LINE 303 return; 000563 aa 0 00631 7101 00 tra pr0|409 return STATEMENT 1 ON LINE 318 end cm_put_datum_in_place; END PROCEDURE cm_put_datum_in_place ----------------------------------------------------------- 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