COMPILATION LISTING OF SEGMENT cross_ring_io_ Compiled by: Multics PL/I Compiler, Release 29, of July 28, 1986 Compiled at: Honeywell Multics Op. - System M Compiled on: 11/20/86 1157.0 mst Thu Options: optimize list 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* * Copyright (c) 1972 by Massachusetts Institute of * 6* * Technology and Honeywell Information Systems, Inc. * 7* * * 8* *********************************************************** */ 9 10 11 12 13 /****^ HISTORY COMMENTS: 14* 1) change(86-08-20,DGHowe), approve(86-08-20,MCR7391), 15* audit(86-08-01,Schroth), install(86-11-20,MR12.0-1222): 16* removed unrequired declarations. 17* END HISTORY COMMENTS */ 18 19 20 /* format: style2 */ 21 cross_ring_io_: 22 procedure; 23 24 /* CROSS_RING_IO_ - Handle iox attachments which cross ring boundaries. 25* 26* This module runs in the inner ring. It is called by a gate 27* whose name depends on the inner target ring sought. 28* 29* THVV 2/77 */ 30 31 32 /* Modified November 1981 by Benson I. Margulies to fix resused and misused 33* attachment index bug. */ 34 /* Modified 9/10/82 by R. Lamson to fix syn_ attachments. */ 35 /* Modified 10/82 BIM to keep table of valid indices to avoid construction */ 36 /* of bogus blocks in mailboxes. */ 37 38 39 /* parameters */ 40 41 dcl iocb_ptr ptr; /* pointer to outer ring iocb */ 42 dcl inner_iocbp ptr; /* ptr to switch in inner ring */ 43 dcl blp ptr; /* ptr to attachment permission block */ 44 45 dcl switchname char (*); 46 47 dcl return_code fixed bin (35); 48 dcl open_mode fixed bin; /* open mode for open call only */ 49 dcl dummy bit (1) aligned; /* extend sw for open call only */ 50 dcl control_arg char (*); /* arg for control call */ 51 dcl control_ptr ptr; /* arg for control call */ 52 dcl old_modes char (*); /* arg for modes call */ 53 dcl new_modes char (*); /* arg for modes call */ 54 dcl (char_cnt, char_cnt1) fixed bin (21); /* character count on iox call */ 55 dcl char_ptr ptr; /* character pointer on iox call */ 56 dcl postype fixed bin; 57 dcl poscount fixed bin (21); 58 dcl key char (256) var; 59 dcl reclth fixed bin (21); 60 61 62 /* automatic storage */ 63 64 declare was_found bit (1) aligned; 65 declare node_ptr pointer; 66 dcl save_level fixed bin; 67 dcl inner_index bit (72) aligned; 68 declare i fixed bin; 69 70 declare 1 inner_index_struc aligned, 71 2 iocb_ptr pointer unaligned, 72 2 block_ptr pointer unaligned; 73 74 /* entry variables */ 75 76 dcl set_ext_variable_ entry (character (*), pointer, 77 pointer, bit (1) aligned, pointer, 78 fixed binary (35)); 79 dcl get_ring_ entry () returns (fixed bin); 80 dcl cu_$level_get entry (fixed bin); 81 dcl cu_$level_set entry (fixed bin); 82 83 /* built in fuctions */ 84 85 dcl (addr, hbound, null, rtrim, stackbaseptr, unspec) 86 builtin; 87 88 89 dcl 1 block based (blp) aligned, 90 2 sentinel character (16) aligned, 91 2 name char (32) unaligned, 92 2 head_ptr pointer, /* will be correct ringno */ 93 2 validation fixed bin, 94 2 permission_granted bit (1) aligned, 95 2 i_opened bit (1), 96 2 attach_count fixed bin, 97 2 open_count fixed bin; 98 99 declare BLOCK_SENTINEL character (16) init ("Cross Ring I/O") internal static options (constant); 100 declare any_other condition; 101 102 declare cross_ring_io_block_table_ptr_ 103 ptr unaligned external static init (null ()); 104 declare 1 block_table aligned based (cross_ring_io_block_table_ptr_), 105 2 count fixed bin, 106 2 known (block_table_count refer (block_table.count)) bit (72) aligned; 107 /* ""b if free */ 108 109 declare block_table_count fixed bin; 110 111 112 dcl error_table_$io_no_permission 113 fixed bin (35) ext; 114 1 1 /* BEGIN INCLUDE FILE ..... iocb.incl.pl1 ..... 13 Feb 1975, M. Asherman */ 1 2 /* Modified 11/29/82 by S. Krupp to add new entries and to change 1 3* version number to IOX2. */ 1 4 /* format: style2 */ 1 5 1 6 dcl 1 iocb aligned based, /* I/O control block. */ 1 7 2 version character (4) aligned, /* IOX2 */ 1 8 2 name char (32), /* I/O name of this block. */ 1 9 2 actual_iocb_ptr ptr, /* IOCB ultimately SYNed to. */ 1 10 2 attach_descrip_ptr ptr, /* Ptr to printable attach description. */ 1 11 2 attach_data_ptr ptr, /* Ptr to attach data structure. */ 1 12 2 open_descrip_ptr ptr, /* Ptr to printable open description. */ 1 13 2 open_data_ptr ptr, /* Ptr to open data structure (old SDB). */ 1 14 2 reserved bit (72), /* Reserved for future use. */ 1 15 2 detach_iocb entry (ptr, fixed (35)),/* detach_iocb(p,s) */ 1 16 2 open entry (ptr, fixed, bit (1) aligned, fixed (35)), 1 17 /* open(p,mode,not_used,s) */ 1 18 2 close entry (ptr, fixed (35)),/* close(p,s) */ 1 19 2 get_line entry (ptr, ptr, fixed (21), fixed (21), fixed (35)), 1 20 /* get_line(p,bufptr,buflen,actlen,s) */ 1 21 2 get_chars entry (ptr, ptr, fixed (21), fixed (21), fixed (35)), 1 22 /* get_chars(p,bufptr,buflen,actlen,s) */ 1 23 2 put_chars entry (ptr, ptr, fixed (21), fixed (35)), 1 24 /* put_chars(p,bufptr,buflen,s) */ 1 25 2 modes entry (ptr, char (*), char (*), fixed (35)), 1 26 /* modes(p,newmode,oldmode,s) */ 1 27 2 position entry (ptr, fixed, fixed (21), fixed (35)), 1 28 /* position(p,u1,u2,s) */ 1 29 2 control entry (ptr, char (*), ptr, fixed (35)), 1 30 /* control(p,order,infptr,s) */ 1 31 2 read_record entry (ptr, ptr, fixed (21), fixed (21), fixed (35)), 1 32 /* read_record(p,bufptr,buflen,actlen,s) */ 1 33 2 write_record entry (ptr, ptr, fixed (21), fixed (35)), 1 34 /* write_record(p,bufptr,buflen,s) */ 1 35 2 rewrite_record entry (ptr, ptr, fixed (21), fixed (35)), 1 36 /* rewrite_record(p,bufptr,buflen,s) */ 1 37 2 delete_record entry (ptr, fixed (35)),/* delete_record(p,s) */ 1 38 2 seek_key entry (ptr, char (256) varying, fixed (21), fixed (35)), 1 39 /* seek_key(p,key,len,s) */ 1 40 2 read_key entry (ptr, char (256) varying, fixed (21), fixed (35)), 1 41 /* read_key(p,key,len,s) */ 1 42 2 read_length entry (ptr, fixed (21), fixed (35)), 1 43 /* read_length(p,len,s) */ 1 44 2 open_file entry (ptr, fixed bin, char (*), bit (1) aligned, fixed bin (35)), 1 45 /* open_file(p,mode,desc,not_used,s) */ 1 46 2 close_file entry (ptr, char (*), fixed bin (35)), 1 47 /* close_file(p,desc,s) */ 1 48 2 detach entry (ptr, char (*), fixed bin (35)); 1 49 /* detach(p,desc,s) */ 1 50 1 51 declare iox_$iocb_version_sentinel 1 52 character (4) aligned external static; 1 53 1 54 /* END INCLUDE FILE ..... iocb.incl.pl1 ..... */ 115 2 1 /* BEGIN INCLUDE FILE ... system_link_names.incl.pl1 */ 2 2 2 3 2 4 /****^ HISTORY COMMENTS: 2 5* 1) change(86-06-24,DGHowe), approve(86-06-24,MCR7396), audit(86-11-12,Zwick), 2 6* install(86-11-20,MR12.0-1222): 2 7* added the declaration of the heap_header. 2 8* 2) change(86-10-20,DGHowe), approve(86-10-20,MCR7420), audit(86-11-12,Zwick), 2 9* install(86-11-20,MR12.0-1222): 2 10* add the seg ptr to the variable node structure. 2 11* END HISTORY COMMENTS */ 2 12 2 13 2 14 /* created by M. Weaver 7/28/76 */ 2 15 /* Modified: 82-11-19 by T. Oke to add LIST_TEMPLATE_INIT. */ 2 16 /* Modified 02/11/83 by M. Weaver to add have_vla_variables flag */ 2 17 2 18 2 19 dcl 1 variable_table_header aligned based, /* header for name table */ 2 20 2 hash_table (0:63) ptr unaligned, /* hash table for variable nodes */ 2 21 2 total_search_time fixed bin (71), /* total time to search for variables */ 2 22 2 total_allocation_time fixed bin (71), /* total time spent allocating and initializing nodes and variables */ 2 23 2 number_of_searches fixed bin, /* number of times names were looked up */ 2 24 2 number_of_variables fixed bin (35), /* number of variables allocated by the linker, incl deletions */ 2 25 2 flags unaligned, 2 26 3 have_vla_variables bit (1) unaligned, /* on if some variables are > sys_info$max_seg_size */ 2 27 3 pad bit (11) unaligned, 2 28 2 cur_num_of_variables fixed bin (24) unal, /* current number of variables allocated */ 2 29 2 number_of_steps fixed bin, /* total number of nodes looked at */ 2 30 2 total_allocated_size fixed bin (35); /* current amount of storage in user area */ 2 31 2 32 2 33 dcl 1 variable_node aligned based, /* individual variable information */ 2 34 2 forward_thread ptr unaligned, /* thread to next node off same hash bucket */ 2 35 2 vbl_size fixed bin (24) unsigned unaligned, /* length in words of variable */ 2 36 2 init_type fixed bin (11) unaligned, /* 0=not init; 3=init template; 4=area 5=list_template*/ 2 37 2 time_allocated fixed bin (71), /* time when variable was allocated */ 2 38 2 vbl_ptr ptr, /* pointer to variable's storage */ 2 39 2 init_ptr ptr, /* pointer to original init info in object seg */ 2 40 2 name_size fixed bin(21) aligned, /* length of name in characters */ 2 41 2 name char (nchars refer (variable_node.name_size)), /* name of variable */ 2 42 2 seg_ptr pointer; 2 43 2 44 /* variable_node.seg_ptr 2 45* Is a pointer to the segment containing the initialization information 2 46* for this variable. It is used as a segment base pointer for external 2 47* pointer initialization via list_init_. 2 48* 2 49* The init_ptr can not be used as a reference to the defining segment 2 50* due to the possibility of set_fortran_common being used to initialize 2 51* the external variables. sfc will generate an initialization information 2 52* structure if multiple intialization sizes are found in the specified 2 53* segments. sfc stores the address of this structure in the init_ptr field. 2 54* This is one reason why sfc does not perform external pointer 2 55* initialization. 2 56* 2 57* The seg_ptr is set to point at the segment used to define the 2 58* initialization information. term_ sets this field to null on termination 2 59* due to the possiblity of executing a different segment which defines 2 60* initialization information. In this way the seg_ptr field will either 2 61* be valid or null. 2 62**/ 2 63 2 64 dcl 1 heap_header based, 2 65 2 version char(8), /* specifies the verison of the header */ 2 66 2 heap_name_list_ptr pointer, /* points to the variable_table_header for this heap */ 2 67 2 previous_heap_ptr pointer, /* points to the previous heap or is null */ 2 68 2 area_ptr pointer, /* points to the heap area */ 2 69 2 execution_level fixed bin (17); /* specifies the execution level this header deals with */ 2 70 2 71 dcl heap_header_version_1 char(8) static options (constant) 2 72 init ("Heap_v01"); 2 73 2 74 2 75 /* END INCLUDE FILE ... system_link_names.incl.pl1 */ 116 3 1 /* --------------- BEGIN include file iox_dcls.incl.pl1 --------------- */ 3 2 3 3 /* Written 05/04/78 by C. D. Tavares */ 3 4 /* Fixed declaration of iox_$find_iocb_n 05/07/80 by R. Holmstedt */ 3 5 /* Modified 5/83 by S. Krupp to add declarations for: iox_$open_file, 3 6* iox_$close_file, iox_$detach and iox_$attach_loud entries. */ 3 7 3 8 dcl iox_$attach_name entry (char (*), pointer, char (*), pointer, fixed bin (35)), 3 9 iox_$attach_ptr entry (pointer, char (*), pointer, fixed bin (35)), 3 10 iox_$close entry (pointer, fixed bin (35)), 3 11 iox_$control entry (pointer, char (*), pointer, fixed bin (35)), 3 12 iox_$delete_record entry (pointer, fixed bin (35)), 3 13 iox_$destroy_iocb entry (pointer, fixed bin (35)), 3 14 iox_$detach_iocb entry (pointer, fixed bin (35)), 3 15 iox_$err_not_attached entry options (variable), 3 16 iox_$err_not_closed entry options (variable), 3 17 iox_$err_no_operation entry options (variable), 3 18 iox_$err_not_open entry options (variable), 3 19 iox_$find_iocb entry (char (*), pointer, fixed bin (35)), 3 20 iox_$find_iocb_n entry (fixed bin, ptr, fixed bin(35)), 3 21 iox_$get_chars entry (pointer, pointer, fixed bin (21), fixed bin (21), fixed bin (35)), 3 22 iox_$get_line entry (pointer, pointer, fixed bin (21), fixed bin (21), fixed bin (35)), 3 23 iox_$look_iocb entry (char (*), pointer, fixed bin (35)), 3 24 iox_$modes entry (pointer, char (*), char (*), fixed bin (35)), 3 25 iox_$move_attach entry (pointer, pointer, fixed bin (35)), 3 26 iox_$open entry (pointer, fixed bin, bit (1) aligned, fixed bin (35)), 3 27 iox_$position entry (pointer, fixed bin, fixed bin (21), fixed bin (35)), 3 28 iox_$propagate entry (pointer), 3 29 iox_$put_chars entry (pointer, pointer, fixed bin (21), fixed bin (35)), 3 30 iox_$read_key entry (pointer, char (256) varying, fixed bin (21), fixed bin (35)), 3 31 iox_$read_length entry (pointer, fixed bin (21), fixed bin (35)), 3 32 iox_$read_record entry (pointer, pointer, fixed bin (21), fixed bin (21), fixed bin (35)), 3 33 iox_$rewrite_record entry (pointer, pointer, fixed bin (21), fixed bin (35)), 3 34 iox_$seek_key entry (pointer, char (256) varying, fixed bin (21), fixed bin (35)), 3 35 iox_$write_record entry (pointer, pointer, fixed bin (21), fixed bin (35)), 3 36 iox_$open_file entry(ptr, fixed bin, char(*), bit(1) aligned, fixed bin(35)), 3 37 iox_$close_file entry(ptr, char(*), fixed bin(35)), 3 38 iox_$detach entry(ptr, char(*), fixed bin(35)), 3 39 iox_$attach_loud entry(ptr, char(*), ptr, fixed bin(35)); 3 40 3 41 dcl (iox_$user_output, 3 42 iox_$user_input, 3 43 iox_$user_io, 3 44 iox_$error_output) external static pointer; 3 45 3 46 /* ---------------- END include file iox_dcls.incl.pl1 ---------------- */ 117 4 1 /* begin include file cross_ring_attach_data_ */ 4 2 /* BIM November 1981 */ 4 3 /*format: style3 */ 4 4 4 5 declare attach_data_ptr pointer; 4 6 declare 1 attach_data aligned based (attach_data_ptr), 4 7 2 atd char (200) varying, 4 8 2 open char (20) varying, 4 9 2 inner_index bit (72) aligned, 4 10 2 target_ring fixed bin, 4 11 2 open_mode fixed bin; 4 12 4 13 /* End include file cross_ring_attach_data_ */ 118 119 120 121 /* helper for attach */ 122 123 find_attachment: 124 entry (switchname, inner_index, return_code); 125 126 call setup; 127 if addr (block_table) = null 128 then do; 129 block_table_count = 4; 130 allocate block_table; 131 block_table.known = ""b; 132 end; 133 134 /* cann't create it so pass null init iinfo and null seg ptr */ 135 136 call set_ext_variable_ (rtrim (var_name (switchname)), null (), 137 stackbaseptr (), was_found, node_ptr, return_code); 138 if ^was_found | return_code ^= 0 139 then do; 140 141 NO_GO_ATTACHMENT: 142 return_code = error_table_$io_no_permission; 143 go to exit; 144 end; 145 blp = node_ptr -> variable_node.vbl_ptr; 146 147 148 call iox_$find_iocb (switchname, inner_iocbp, return_code); 149 if return_code ^= 0 150 then go to NO_GO_ATTACHMENT; /* censor code*/ 151 152 if save_level > block.validation 153 then go to NO_GO_ATTACHMENT; 154 block.attach_count = block.attach_count + 1; 155 inner_index_struc.block_ptr = blp; 156 inner_index_struc.iocb_ptr = inner_iocbp; 157 FILL_IN: 158 do i = 1 to hbound (block_table.known, 1); 159 if block_table.known (i) = ""b 160 then do; 161 block_table.known (i) = unspec (inner_index_struc); 162 go to FILLED_IN; 163 end; 164 end; 165 call grow_block_table; 166 go to FILL_IN; 167 168 FILLED_IN: 169 inner_index = block_table.known (i); 170 171 return_code = 0; 172 exit: 173 call cu_$level_set (save_level); 174 return; 175 176 /* helper for detach */ 177 178 release_attachment: 179 entry (inner_index, return_code); 180 181 call setup; 182 unspec (inner_index_struc) = inner_index; 183 call validate_index (unspec (inner_index_struc), (null ())); 184 185 block.attach_count = block.attach_count - 1; 186 do i = 1 to hbound (block_table.known, 1); 187 if block_table.known (i) = unspec (inner_index_struc) 188 then do; 189 block_table.known (i) = ""b; 190 go to exit; 191 end; 192 end; 193 go to exit; 194 195 /* helper for open */ 196 197 open: 198 entry (inner_index, open_mode, dummy, return_code); 199 200 call setup; 201 call validate_index (inner_index, inner_iocbp); 202 203 block.open_count = block.open_count + 1; 204 if inner_iocbp -> iocb.open_descrip_ptr = null 205 then do; 206 call iox_$open (inner_iocbp, open_mode, dummy, return_code); 207 if return_code = 0 208 then block.i_opened = "1"b; 209 else block.open_count = block.open_count - 1; 210 end; 211 go to exit; 212 213 /* helper for close */ 214 215 close: 216 entry (inner_index, return_code); 217 218 call setup; 219 call validate_index (inner_index, inner_iocbp); 220 221 block.open_count = block.open_count - 1; 222 if block.open_count > 0 223 then go to exit; 224 if block.i_opened 225 then call iox_$close (inner_iocbp, return_code); 226 block.i_opened = "0"b; 227 go to exit; 228 229 /* control entry point */ 230 231 control: 232 entry (iocb_ptr, control_arg, control_ptr, return_code); 233 234 call setup; 235 inner_iocbp = validate_io (iocb_ptr); 236 237 call iox_$control (inner_iocbp, control_arg, control_ptr, return_code); 238 go to exit; 239 240 /* modes entry */ 241 242 modes: 243 entry (iocb_ptr, new_modes, old_modes, return_code); 244 245 call setup; 246 inner_iocbp = validate_io (iocb_ptr); 247 call iox_$modes (inner_iocbp, new_modes, old_modes, return_code); 248 go to exit; 249 250 /* read_key entry */ 251 252 read_key: 253 entry (iocb_ptr, key, reclth, return_code); 254 255 call setup; 256 inner_iocbp = validate_io (iocb_ptr); 257 call iox_$read_key (inner_iocbp, key, reclth, return_code); 258 go to exit; 259 260 /* read_length entry */ 261 262 read_length: 263 entry (iocb_ptr, reclth, return_code); 264 265 call setup; 266 inner_iocbp = validate_io (iocb_ptr); 267 call iox_$read_length (inner_iocbp, reclth, return_code); 268 go to exit; 269 270 /* delete_record entry */ 271 272 delete_record: 273 entry (iocb_ptr, return_code); 274 275 call setup; 276 inner_iocbp = validate_io (iocb_ptr); 277 call iox_$delete_record (inner_iocbp, return_code); 278 go to exit; 279 280 /* entry point for put_chars. */ 281 282 put_chars: 283 entry (iocb_ptr, char_ptr, char_cnt, return_code); 284 285 call setup; 286 inner_iocbp = validate_io (iocb_ptr); 287 call iox_$put_chars (inner_iocbp, char_ptr, char_cnt, return_code); 288 go to exit; 289 290 /* entry point for get_chars. */ 291 292 get_chars: 293 entry (iocb_ptr, char_ptr, char_cnt, char_cnt1, return_code); 294 295 call setup; 296 inner_iocbp = validate_io (iocb_ptr); 297 char_cnt1 = 0; 298 call iox_$get_chars (inner_iocbp, char_ptr, char_cnt, char_cnt1, return_code); 299 go to exit; 300 301 /* entry point for get_line. */ 302 303 get_line: 304 entry (iocb_ptr, char_ptr, char_cnt, char_cnt1, return_code); 305 306 call setup; 307 inner_iocbp = validate_io (iocb_ptr); 308 char_cnt1 = 0; 309 call iox_$get_line (inner_iocbp, char_ptr, char_cnt, char_cnt1, return_code); 310 go to exit; 311 312 /* entry point for read_record. */ 313 314 read_record: 315 entry (iocb_ptr, char_ptr, char_cnt, char_cnt1, return_code); 316 317 call setup; 318 inner_iocbp = validate_io (iocb_ptr); 319 char_cnt1 = 0; 320 call iox_$read_record (inner_iocbp, char_ptr, char_cnt, char_cnt1, return_code); 321 go to exit; 322 323 /* entry point for write_record. */ 324 325 write_record: 326 entry (iocb_ptr, char_ptr, char_cnt, return_code); 327 328 call setup; 329 inner_iocbp = validate_io (iocb_ptr); 330 call iox_$write_record (inner_iocbp, char_ptr, char_cnt, return_code); 331 go to exit; 332 333 /* entry point for rewrite_record. */ 334 335 rewrite_record: 336 entry (iocb_ptr, char_ptr, char_cnt, return_code); 337 338 call setup; 339 inner_iocbp = validate_io (iocb_ptr); 340 call iox_$rewrite_record (inner_iocbp, char_ptr, char_cnt, return_code); 341 go to exit; 342 343 /* entry point for position. */ 344 345 position: 346 entry (iocb_ptr, postype, poscount, return_code); 347 348 call setup; 349 inner_iocbp = validate_io (iocb_ptr); 350 return_code = 0; 351 call iox_$position (inner_iocbp, postype, poscount, return_code); 352 go to exit; 353 354 /* entry point for seek_key. */ 355 356 seek_key: 357 entry (iocb_ptr, key, char_cnt, return_code); 358 359 call setup; 360 inner_iocbp = validate_io (iocb_ptr); 361 call iox_$seek_key (inner_iocbp, key, char_cnt, return_code); 362 go to exit; 363 364 365 allow_cross: 366 entry (x, v_arg, return_code); 367 368 dcl x char (*); 369 dcl v_arg fixed bin; 370 371 372 begin; 373 5 1 /* Begin include file ... system_link_init_info.incl.pl1 ... 5/6/80 MRJ */ 5 2 5 3 5 4 5 5 /****^ HISTORY COMMENTS: 5 6* 1) change(86-05-02,Elhard), approve(86-05-02,MCR7391), 5 7* audit(86-07-18,DGHowe), install(86-11-20,MR12.0-1222): 5 8* Modified to declare DEFERRED_INIT type constant. 5 9* 2) change(86-06-24,DGHowe), approve(86-06-24,MCR7420), audit(86-11-12,Zwick), 5 10* install(86-11-20,MR12.0-1222): 5 11* added the external pointer initialization structure and the constants 5 12* required to use them. 5 13* END HISTORY COMMENTS */ 5 14 5 15 5 16 /* Modified: 82-11-17 by T. Oke to add list_init_info and LIST_TEMPLATE_INIT. */ 5 17 5 18 /* format: style3,idind25 */ 5 19 5 20 /* NOTE -------------------------------------------------- 5 21* the following structures defining initialization information can also 5 22* be found in fortran_storage.incl.pl1 definition_dcls.incl.pl1 5 23* and should be kept equivalent 5 24* ------------------------------------------------------- 5 25**/ 5 26 5 27 dcl init_info_ptr ptr; /* ptr to structure below */ 5 28 dcl init_size fixed bin (35); /* size (in words) of initialization template */ 5 29 5 30 dcl 1 init_info aligned based (init_info_ptr), 5 31 2 size fixed bin (35), /* size (in words) of data */ 5 32 2 type fixed bin, /* type of initialization: see below */ 5 33 2 init_template (init_size refer (init_info.size)) fixed bin (35); 5 34 5 35 dcl 1 init_info_single_word aligned based (init_info_ptr), 5 36 /* for convenience of people like ssi */ 5 37 2 size fixed bin (19), /* = 1 */ 5 38 2 type fixed bin, /* = TEMPLATE_INIT */ 5 39 2 init_template (1) fixed bin (35); /* = value */ 5 40 5 41 dcl 1 list_init_info aligned based, 5 42 2 size fixed bin (35), /* length of variable */ 5 43 2 type fixed bin, /* LIST_TEMPLATE_INIT */ 5 44 2 pad bit (18) unaligned, 5 45 2 list_size fixed bin (18) unsigned unaligned, 5 46 /* size in words of template */ 5 47 2 template (0 refer (list_init_info.list_size)) bit (36); 5 48 /* first create_entry position */ 5 49 5 50 /* A list template consists of a series of entries with the following 5 51* description, concatenated together. n_bits and datum are bit items, 5 52* to permit a wide range of inputs. 5 53* 5 54* 1. A 'repeat' of '0' signifies skipping of 'n_bits' bits. 5 55* 2. A 'n_bits' of '0' signifies the last item of the list. 5 56* 5 57* COMMON, VLA's, and LA's are presumed to start at the base pointer 5 58* of their particular storage section. */ 5 59 5 60 dcl 1 list_template_entry aligned based, 5 61 2 n_bits fixed bin (35) aligned, /* size of datum */ 5 62 2 mbz bit (3) unaligned, /* future expansion */ 5 63 2 init_type fixed bin (3) unsigned unaligned, /* 0 normal init, 1 ptr init, 2 packed ptr init */ 5 64 2 repeat fixed bin (30) unsigned unaligned, 5 65 /* number of times to repeat datum */ 5 66 2 datum bit (init_n_bits_in_datum refer (list_template_entry.n_bits)); 5 67 5 68 /* list_template_entry_ptr is defined such that it can be used as an 5 69* automatic definition overlay with a fixed size datum. it has a declared 5 70* size of 72 to allow for the its pointer sixe of 72 bits. 5 71**/ 5 72 5 73 dcl 1 list_template_entry_ptr aligned based, 5 74 2 n_bits fixed bin (35) aligned, 5 75 2 mbz bit(3) unaligned, 5 76 2 init_type fixed bin (3) unsigned unaligned, 5 77 2 repeat fixed bin (30) unsigned unaligned, 5 78 2 datum bit(72); 5 79 5 80 /* the pointer_init_template represents the initialization information 5 81* for ITS and packed pointers. Both pointer types require the entire 5 82* 72 bit structure. 5 83**/ 5 84 5 85 dcl 1 pointer_init_template based, 5 86 2 ptr_type fixed bin (18) unsigned unaligned, /* 0 text section, 1 linkage section, 2 static section */ 5 87 2 section_offset fixed bin (18) unsigned unaligned, /* offset to item in specified section */ 5 88 2 word_offset fixed bin (18) unsigned unaligned, /* word offset from section item to target */ 5 89 2 mbz bit (12) unaligned, 5 90 2 bit_offset fixed bin (6) unsigned unaligned; /* bit offset from section item|word offset to target */ 5 91 5 92 5 93 dcl init_n_bits_in_datum fixed bin (35); 5 94 5 95 dcl NO_INIT fixed bin static options (constant) init (0); 5 96 dcl TEMPLATE_INIT fixed bin static options (constant) init (3); 5 97 dcl EMPTY_AREA_INIT fixed bin static options (constant) init (4); 5 98 dcl LIST_TEMPLATE_INIT fixed bin static options (constant) init (5); 5 99 dcl INIT_DEFERRED fixed bin static options (constant) init (6); 5 100 dcl ITS_PTR_INIT fixed bin (3) unsigned static options (constant) init(1); 5 101 dcl PACKED_PTR_INIT fixed bin (3) unsigned static options (constant) init(2); 5 102 dcl PTR_INIT_TEXT fixed bin (17) static options (constant) init(0); 5 103 dcl PTR_INIT_LOT fixed bin (17) static options (constant) init(1); 5 104 dcl PTR_INIT_ISOT fixed bin (17) static options (constant) init(2); 5 105 5 106 5 107 /* End include file ... system_link_init_info.incl.pl1 */ 374 375 declare size builtin; /* avoid confusion with structure component */ 376 init_size = 0; 377 allocate init_info; 378 init_info.size = size (block); 379 init_info.type = NO_INIT; 380 was_found = "0"b; 381 382 /* no ptr init so pass null seg ptr */ 383 384 call set_ext_variable_ (rtrim (var_name (x)), addr (init_info), 385 stackbaseptr (), was_found, node_ptr, return_code); 386 if return_code ^= 0 387 then go to exit; 388 blp = node_ptr -> variable_node.vbl_ptr; 389 end; 390 391 if ^was_found 392 then do; 393 block.open_count, block.attach_count = 0; 394 block.sentinel = BLOCK_SENTINEL; 395 block.head_ptr = addr (block); 396 end; 397 block.name = x; 398 block.permission_granted = "1"b; 399 block.validation = v_arg; 400 401 402 return; 403 404 405 setup: 406 proc; 407 408 call cu_$level_get (save_level); 409 call cu_$level_set (get_ring_ ()); 410 return_code = 0; 411 412 end setup; 413 414 validate_io: 415 procedure (iocbp) returns (pointer); 416 declare iocbp pointer; 417 declare inner_iocb pointer; 418 419 call validate_index (iocbp -> iocb.actual_iocb_ptr -> iocb.attach_data_ptr -> attach_data.inner_index, 420 inner_iocb); 421 return (inner_iocb); 422 end validate_io; 423 424 validate_index: 425 procedure (bits, iocb_ptr); 426 declare bits bit (72) aligned; 427 declare iocb_ptr pointer; 428 429 declare 1 val_data aligned like inner_index_struc; 430 431 unspec (val_data) = bits; 432 on any_other go to BAD_POINTER; 433 434 if cross_ring_io_block_table_ptr_ = null () 435 then goto BAD_POINTER; 436 437 if ^found_block (unspec (val_data)) | val_data.block_ptr -> block.validation < save_level 438 /** **/ 439 | val_data.block_ptr -> block.name ^= val_data.iocb_ptr -> iocb.name 440 /** **/ 441 | val_data.block_ptr -> block.sentinel ^= BLOCK_SENTINEL 442 /** **/ 443 | ^val_data.block_ptr -> block.permission_granted 444 then do; 445 BAD_POINTER: 446 return_code = error_table_$io_no_permission; 447 go to exit; 448 end; 449 iocb_ptr = val_data.iocb_ptr; 450 blp = val_data.block_ptr; /* global */ 451 return; 452 453 found_block: 454 procedure (ix) returns (bit (1) aligned); 455 declare ix bit (72) aligned; 456 declare i fixed bin; 457 do i = 1 to hbound (block_table.known, 1); 458 if block_table.known (i) = ix 459 then return ("1"b); 460 end; 461 return ("0"b); 462 end found_block; 463 464 end validate_index; 465 466 grow_block_table: 467 procedure; 468 declare new_bt_p pointer; 469 declare i fixed bin; 470 471 block_table_count = block_table.count * 2; 472 allocate block_table set (new_bt_p); 473 new_bt_p -> block_table.known = ""b; 474 do i = 1 to hbound (block_table.known, 1); /* old one */ 475 new_bt_p -> block_table.known (i) = block_table.known (i); 476 end; 477 free block_table; 478 cross_ring_io_block_table_ptr_ = new_bt_p; 479 return; 480 end grow_block_table; 481 482 var_name: 483 procedure (sname) returns (character (64)); 484 485 declare sname character (*); 486 return ("cross_ring_io_." || sname); 487 end var_name; 488 end cross_ring_io_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/20/86 1142.5 cross_ring_io_.pl1 >special_ldd>install>MR12.0-1222>cross_ring_io_.pl1 115 1 05/20/83 1846.4 iocb.incl.pl1 >ldd>include>iocb.incl.pl1 116 2 11/20/86 1035.4 system_link_names.incl.pl1 >special_ldd>install>MR12.0-1222>system_link_names.incl.pl1 117 3 05/23/83 0916.6 iox_entries.incl.pl1 >ldd>include>iox_dcls.incl.pl1 118 4 02/08/82 2101.5 cross_ring_attach_data_.incl.pl1 >ldd>include>cross_ring_attach_data_.incl.pl1 374 5 11/20/86 1035.4 system_link_init_info.incl.pl1 >special_ldd>install>MR12.0-1222>system_link_init_info.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. BLOCK_SENTINEL 000000 constant char(16) initial unaligned dcl 99 ref 394 437 NO_INIT constant fixed bin(17,0) initial dcl 5-95 ref 379 actual_iocb_ptr 12 based pointer level 2 dcl 1-6 ref 419 addr builtin function dcl 85 ref 127 384 384 395 any_other 000000 stack reference condition dcl 100 ref 432 attach_count 21 based fixed bin(17,0) level 2 dcl 89 set ref 154* 154 185* 185 393* attach_data based structure level 1 dcl 4-6 attach_data_ptr 16 based pointer level 2 dcl 1-6 ref 419 bits parameter bit(72) dcl 426 ref 424 431 block based structure level 1 dcl 89 set ref 378 395 block_ptr 1 000112 automatic pointer level 2 in structure "inner_index_struc" packed unaligned dcl 70 in procedure "cross_ring_io_" set ref 155* block_ptr 1 000100 automatic pointer level 2 in structure "val_data" packed unaligned dcl 429 in procedure "validate_index" set ref 437 437 437 437 450 block_table based structure level 1 dcl 104 set ref 127 130 472 477 block_table_count 000114 automatic fixed bin(17,0) dcl 109 set ref 129* 130 130 471* 472 472 blp 000102 automatic pointer dcl 43 set ref 145* 152 154 154 155 185 185 203 203 207 209 209 221 221 222 224 226 378 388* 393 393 394 395 395 397 398 399 450* char_cnt parameter fixed bin(21,0) dcl 54 set ref 282 287* 292 298* 303 309* 314 320* 325 330* 335 340* 356 361* char_cnt1 parameter fixed bin(21,0) dcl 54 set ref 292 297* 298* 303 308* 309* 314 319* 320* char_ptr parameter pointer dcl 55 set ref 282 287* 292 298* 303 309* 314 320* 325 330* 335 340* control_arg parameter char unaligned dcl 50 set ref 231 237* control_ptr parameter pointer dcl 51 set ref 231 237* count based fixed bin(17,0) level 2 dcl 104 set ref 130* 131 157 186 457 471 472* 473 474 477 cross_ring_io_block_table_ptr_ 000020 external static pointer initial unaligned dcl 102 set ref 127 130* 131 157 159 161 168 186 187 189 434 457 458 471 474 475 477 478* cu_$level_get 000014 constant entry external dcl 80 ref 408 cu_$level_set 000016 constant entry external dcl 81 ref 172 409 dummy parameter bit(1) dcl 49 set ref 197 206* error_table_$io_no_permission 000022 external static fixed bin(35,0) dcl 112 ref 141 445 get_ring_ 000012 constant entry external dcl 79 ref 409 409 hbound builtin function dcl 85 ref 157 186 457 474 head_ptr 14 based pointer level 2 dcl 89 set ref 395* i 000116 automatic fixed bin(17,0) dcl 456 in procedure "found_block" set ref 457* 458* i 000111 automatic fixed bin(17,0) dcl 68 in procedure "cross_ring_io_" set ref 157* 159 161* 168 186* 187 189* i 000162 automatic fixed bin(17,0) dcl 469 in procedure "grow_block_table" set ref 474* 475 475* i_opened 20 based bit(1) level 2 dcl 89 set ref 207* 224 226* init_info based structure level 1 dcl 5-30 set ref 377 384 384 init_info_ptr 000130 automatic pointer dcl 5-27 set ref 377* 378 379 384 384 init_size 000132 automatic fixed bin(35,0) dcl 5-28 set ref 376* 377 377 inner_index parameter bit(72) dcl 67 in procedure "cross_ring_io_" set ref 123 168* 178 182 197 201* 215 219* inner_index 71 based bit(72) level 2 in structure "attach_data" dcl 4-6 in procedure "cross_ring_io_" set ref 419* inner_index_struc 000112 automatic structure level 1 dcl 70 set ref 161 182* 183 183 187 inner_iocb 000150 automatic pointer dcl 417 set ref 419* 421 inner_iocbp 000100 automatic pointer dcl 42 set ref 148* 156 201* 204 206* 219* 224* 235* 237* 246* 247* 256* 257* 266* 267* 276* 277* 286* 287* 296* 298* 307* 309* 318* 320* 329* 330* 339* 340* 349* 351* 360* 361* iocb based structure level 1 dcl 1-6 iocb_ptr parameter pointer dcl 41 in procedure "cross_ring_io_" set ref 231 235* 242 246* 252 256* 262 266* 272 276* 282 286* 292 296* 303 307* 314 318* 325 329* 335 339* 345 349* 356 360* iocb_ptr 000100 automatic pointer level 2 in structure "val_data" packed unaligned dcl 429 in procedure "validate_index" set ref 437 449 iocb_ptr 000112 automatic pointer level 2 in structure "inner_index_struc" packed unaligned dcl 70 in procedure "cross_ring_io_" set ref 156* iocb_ptr parameter pointer dcl 427 in procedure "validate_index" set ref 424 449* iocbp parameter pointer dcl 416 ref 414 419 iox_$close 000024 constant entry external dcl 3-8 ref 224 iox_$control 000026 constant entry external dcl 3-8 ref 237 iox_$delete_record 000030 constant entry external dcl 3-8 ref 277 iox_$find_iocb 000032 constant entry external dcl 3-8 ref 148 iox_$get_chars 000034 constant entry external dcl 3-8 ref 298 iox_$get_line 000036 constant entry external dcl 3-8 ref 309 iox_$modes 000040 constant entry external dcl 3-8 ref 247 iox_$open 000042 constant entry external dcl 3-8 ref 206 iox_$position 000044 constant entry external dcl 3-8 ref 351 iox_$put_chars 000046 constant entry external dcl 3-8 ref 287 iox_$read_key 000050 constant entry external dcl 3-8 ref 257 iox_$read_length 000052 constant entry external dcl 3-8 ref 267 iox_$read_record 000054 constant entry external dcl 3-8 ref 320 iox_$rewrite_record 000056 constant entry external dcl 3-8 ref 340 iox_$seek_key 000060 constant entry external dcl 3-8 ref 361 iox_$write_record 000062 constant entry external dcl 3-8 ref 330 ix parameter bit(72) dcl 455 ref 453 458 key parameter varying char(256) dcl 58 set ref 252 257* 356 361* known 1 based bit(72) array level 2 dcl 104 set ref 131* 157 159 161* 168 186 187 189* 457 458 473* 474 475* 475 name 1 based char(32) level 2 in structure "iocb" dcl 1-6 in procedure "cross_ring_io_" ref 437 name 4 based char(32) level 2 in structure "block" packed unaligned dcl 89 in procedure "cross_ring_io_" set ref 397* 437 new_bt_p 000160 automatic pointer dcl 468 set ref 472* 473 475 478 new_modes parameter char unaligned dcl 53 set ref 242 247* node_ptr 000106 automatic pointer dcl 65 set ref 136* 145 384* 388 null builtin function dcl 85 ref 127 136 136 183 204 434 old_modes parameter char unaligned dcl 52 set ref 242 247* open_count 22 based fixed bin(17,0) level 2 dcl 89 set ref 203* 203 209* 209 221* 221 222 393* open_descrip_ptr 20 based pointer level 2 dcl 1-6 ref 204 open_mode parameter fixed bin(17,0) dcl 48 set ref 197 206* permission_granted 17 based bit(1) level 2 dcl 89 set ref 398* 437 poscount parameter fixed bin(21,0) dcl 57 set ref 345 351* postype parameter fixed bin(17,0) dcl 56 set ref 345 351* reclth parameter fixed bin(21,0) dcl 59 set ref 252 257* 262 267* return_code parameter fixed bin(35,0) dcl 47 set ref 123 136* 138 141* 148* 149 171* 178 197 206* 207 215 224* 231 237* 242 247* 252 257* 262 267* 272 277* 282 287* 292 298* 303 309* 314 320* 325 330* 335 340* 345 350* 351* 356 361* 365 384* 386 410* 445* rtrim builtin function dcl 85 ref 136 136 384 384 save_level 000110 automatic fixed bin(17,0) dcl 66 set ref 152 172* 408* 437 sentinel based char(16) level 2 dcl 89 set ref 394* 437 set_ext_variable_ 000010 constant entry external dcl 76 ref 136 384 size based fixed bin(35,0) level 2 in structure "init_info" dcl 5-30 in begin block on line 372 set ref 377* 378* size builtin function dcl 375 in begin block on line 372 ref 378 sname parameter char unaligned dcl 485 ref 482 486 stackbaseptr builtin function dcl 85 ref 136 136 384 384 switchname parameter char unaligned dcl 45 set ref 123 136* 136* 148* type 1 based fixed bin(17,0) level 2 dcl 5-30 set ref 379* unspec builtin function dcl 85 set ref 161 182* 183 183 187 431* 437 437 v_arg parameter fixed bin(17,0) dcl 369 ref 365 399 val_data 000100 automatic structure level 1 dcl 429 set ref 431* 437 437 validation 16 based fixed bin(17,0) level 2 dcl 89 set ref 152 399* 437 variable_node based structure level 1 dcl 2-33 vbl_ptr 4 based pointer level 2 dcl 2-33 ref 145 388 was_found 000104 automatic bit(1) dcl 64 set ref 136* 138 380* 384* 391 x parameter char unaligned dcl 368 set ref 365 384* 384* 397 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. EMPTY_AREA_INIT internal static fixed bin(17,0) initial dcl 5-97 INIT_DEFERRED internal static fixed bin(17,0) initial dcl 5-99 ITS_PTR_INIT internal static fixed bin(3,0) initial unsigned dcl 5-100 LIST_TEMPLATE_INIT internal static fixed bin(17,0) initial dcl 5-98 PACKED_PTR_INIT internal static fixed bin(3,0) initial unsigned dcl 5-101 PTR_INIT_ISOT internal static fixed bin(17,0) initial dcl 5-104 PTR_INIT_LOT internal static fixed bin(17,0) initial dcl 5-103 PTR_INIT_TEXT internal static fixed bin(17,0) initial dcl 5-102 TEMPLATE_INIT internal static fixed bin(17,0) initial dcl 5-96 attach_data_ptr automatic pointer dcl 4-5 heap_header based structure level 1 unaligned dcl 2-64 heap_header_version_1 internal static char(8) initial unaligned dcl 2-71 init_info_single_word based structure level 1 dcl 5-35 init_n_bits_in_datum automatic fixed bin(35,0) dcl 5-93 iox_$attach_loud 000000 constant entry external dcl 3-8 iox_$attach_name 000000 constant entry external dcl 3-8 iox_$attach_ptr 000000 constant entry external dcl 3-8 iox_$close_file 000000 constant entry external dcl 3-8 iox_$destroy_iocb 000000 constant entry external dcl 3-8 iox_$detach 000000 constant entry external dcl 3-8 iox_$detach_iocb 000000 constant entry external dcl 3-8 iox_$err_no_operation 000000 constant entry external dcl 3-8 iox_$err_not_attached 000000 constant entry external dcl 3-8 iox_$err_not_closed 000000 constant entry external dcl 3-8 iox_$err_not_open 000000 constant entry external dcl 3-8 iox_$error_output external static pointer dcl 3-41 iox_$find_iocb_n 000000 constant entry external dcl 3-8 iox_$iocb_version_sentinel external static char(4) dcl 1-51 iox_$look_iocb 000000 constant entry external dcl 3-8 iox_$move_attach 000000 constant entry external dcl 3-8 iox_$open_file 000000 constant entry external dcl 3-8 iox_$propagate 000000 constant entry external dcl 3-8 iox_$user_input external static pointer dcl 3-41 iox_$user_io external static pointer dcl 3-41 iox_$user_output external static pointer dcl 3-41 list_init_info based structure level 1 dcl 5-41 list_template_entry based structure level 1 dcl 5-60 list_template_entry_ptr based structure level 1 dcl 5-73 pointer_init_template based structure level 1 packed unaligned dcl 5-85 variable_table_header based structure level 1 dcl 2-19 NAMES DECLARED BY EXPLICIT CONTEXT. BAD_POINTER 002151 constant label dcl 445 ref 432 434 FILLED_IN 000333 constant label dcl 168 ref 162 FILL_IN 000277 constant label dcl 157 ref 166 NO_GO_ATTACHMENT 000233 constant label dcl 141 ref 149 152 allow_cross 001612 constant entry external dcl 365 close 000533 constant entry external dcl 215 control 000606 constant entry external dcl 231 cross_ring_io_ 000032 constant entry external dcl 21 delete_record 001077 constant entry external dcl 272 exit 000337 constant label dcl 172 ref 143 190 193 211 222 227 238 248 258 268 278 288 299 310 321 331 341 352 362 386 447 find_attachment 000044 constant entry external dcl 123 found_block 002167 constant entry internal dcl 453 ref 437 get_chars 001206 constant entry external dcl 292 get_line 001254 constant entry external dcl 303 grow_block_table 002226 constant entry internal dcl 466 ref 165 modes 000672 constant entry external dcl 242 open 000447 constant entry external dcl 197 position 001501 constant entry external dcl 345 put_chars 001140 constant entry external dcl 282 read_key 000764 constant entry external dcl 252 read_length 001033 constant entry external dcl 262 read_record 001322 constant entry external dcl 314 release_attachment 000353 constant entry external dcl 178 rewrite_record 001433 constant entry external dcl 335 seek_key 001545 constant entry external dcl 356 setup 002001 constant entry internal dcl 405 ref 126 181 200 218 234 245 255 265 275 285 295 306 317 328 338 348 359 validate_index 002054 constant entry internal dcl 424 ref 183 201 219 419 validate_io 002031 constant entry internal dcl 414 ref 235 246 256 266 276 286 296 307 318 329 339 349 360 var_name 002322 constant entry internal dcl 482 ref 136 136 384 384 write_record 001370 constant entry external dcl 325 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 2756 3042 2363 2766 Length 3440 2363 64 361 372 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME cross_ring_io_ 273 external procedure is an external procedure. begin block on line 372 begin block shares stack frame of external procedure cross_ring_io_. setup internal procedure shares stack frame of external procedure cross_ring_io_. validate_io internal procedure shares stack frame of external procedure cross_ring_io_. validate_index 87 internal procedure enables or reverts conditions. on unit on line 432 64 on unit found_block internal procedure shares stack frame of internal procedure validate_index. grow_block_table internal procedure shares stack frame of external procedure cross_ring_io_. var_name internal procedure shares stack frame of external procedure cross_ring_io_. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME cross_ring_io_ 000100 inner_iocbp cross_ring_io_ 000102 blp cross_ring_io_ 000104 was_found cross_ring_io_ 000106 node_ptr cross_ring_io_ 000110 save_level cross_ring_io_ 000111 i cross_ring_io_ 000112 inner_index_struc cross_ring_io_ 000114 block_table_count cross_ring_io_ 000130 init_info_ptr begin block on line 372 000132 init_size begin block on line 372 000150 inner_iocb validate_io 000160 new_bt_p grow_block_table 000162 i grow_block_table validate_index 000100 val_data validate_index 000116 i found_block THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_l_a r_ne_as alloc_char_temp call_ext_out_desc call_ext_out call_int_this return_mac tra_ext_1 enable_op shorten_stack ext_entry ext_entry_desc int_entry alloc_storage op_freen_ THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. cu_$level_get cu_$level_set get_ring_ iox_$close iox_$control iox_$delete_record iox_$find_iocb iox_$get_chars iox_$get_line iox_$modes iox_$open iox_$position iox_$put_chars iox_$read_key iox_$read_length iox_$read_record iox_$rewrite_record iox_$seek_key iox_$write_record set_ext_variable_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. cross_ring_io_block_table_ptr_ error_table_$io_no_permission CONSTANTS 002354 aa 000004000000 002355 aa 000000000000 002356 aa 600000000041 002357 aa 000124000000 002360 aa 600000000041 002361 aa 000126000000 002362 aa 007777000001 000000 aa 103 162 157 163 Cros 000001 aa 163 040 122 151 s Ri 000002 aa 156 147 040 111 ng I 000003 aa 057 117 040 040 /O 000004 aa 524000000000 000005 aa 526000000100 000006 aa 514000000110 000007 aa 530000000400 000010 aa 404000000025 000011 aa 514000000001 000012 aa 404000000021 000013 aa 404000000043 000014 aa 526077777777 000015 aa 464000000000 000016 aa 000000000000 000017 aa 000000000000 000020 aa 077777000043 000021 aa 000001000000 000022 aa 141 156 171 137 any_ 000023 aa 157 164 150 145 othe 000024 aa 162 000 000 000 r 000025 aa 143 162 157 163 cros 000026 aa 163 137 162 151 s_ri 000027 aa 156 147 137 151 ng_i 000030 aa 157 137 056 000 o_. BEGIN PROCEDURE cross_ring_io_ ENTRY TO cross_ring_io_ STATEMENT 1 ON LINE 21 cross_ring_io_: procedure; 000031 da 000247200000 000032 aa 000440 6270 00 eax7 288 000033 aa 7 00034 3521 20 epp2 pr7|28,* 000034 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 000035 aa 000000000000 000036 aa 000000000000 STATEMENT 1 ON LINE 123 find_attachment: entry (switchname, inner_index, return_code); 000037 aa 000025 7100 04 tra 21,ic 000064 ENTRY TO find_attachment STATEMENT 1 ON LINE 123 find_attachment: entry (switchname, inner_index, return_code); 000040 at 000003000014 000041 tt 000006000013 000042 ta 000040000000 000043 da 000256300000 000044 aa 000440 6270 00 eax7 288 000045 aa 7 00034 3521 20 epp2 pr7|28,* 000046 aa 2 01046 2721 00 tsp2 pr2|550 ext_entry_desc 000047 aa 000006000000 000050 aa 000000000000 000051 aa 6 00042 3735 20 epp7 pr6|34,* 000052 aa 7 00000 2361 20 ldq pr7|0,* 000053 aa 000002 6040 04 tmi 2,ic 000055 000054 aa 777777 3760 07 anq 262143,dl 000055 aa 0 00250 3761 00 anq pr0|168 = 000077777777 000056 aa 6 00174 7561 00 stq pr6|124 000057 aa 6 00032 3715 20 epp5 pr6|26,* 000060 aa 5 00004 3535 20 epp3 pr5|4,* 000061 aa 6 00122 2535 00 spri3 pr6|82 000062 aa 5 00006 3515 20 epp1 pr5|6,* 000063 aa 6 00116 2515 00 spri1 pr6|78 STATEMENT 1 ON LINE 126 call setup; 000064 aa 001715 6700 04 tsp4 973,ic 002001 STATEMENT 1 ON LINE 127 if addr (block_table) = null then do; 000065 aa 6 00044 3701 20 epp4 pr6|36,* 000066 la 4 00020 7671 20 lprp7 pr4|16,* cross_ring_io_block_table_ptr_ 000067 aa 7 00000 3715 00 epp5 pr7|0 block_table 000070 aa 6 00176 6515 00 spri5 pr6|126 000071 aa 6 00176 2371 00 ldaq pr6|126 000072 aa 777726 6770 04 eraq -42,ic 000020 = 077777000043 000001000000 000073 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 000074 aa 000034 6010 04 tnz 28,ic 000130 STATEMENT 1 ON LINE 129 block_table_count = 4; 000075 aa 000004 2360 07 ldq 4,dl 000076 aa 6 00114 7561 00 stq pr6|76 block_table_count STATEMENT 1 ON LINE 130 allocate block_table; 000077 aa 6 00114 2361 00 ldq pr6|76 block_table_count 000100 aa 000001 7360 00 qls 1 000101 aa 000001 0760 07 adq 1,dl 000102 aa 0 01403 7001 00 tsx0 pr0|771 alloc_storage 000103 aa 777774 7100 04 tra -4,ic 000077 000104 aa 6 00044 3701 20 epp4 pr6|36,* 000105 la 4 00020 5421 20 sprp2 pr4|16,* cross_ring_io_block_table_ptr_ 000106 la 4 00020 7671 20 lprp7 pr4|16,* cross_ring_io_block_table_ptr_ 000107 aa 6 00114 2361 00 ldq pr6|76 block_table_count 000110 aa 7 00000 7561 00 stq pr7|0 block_table.count STATEMENT 1 ON LINE 131 block_table.known = ""b; 000111 aa 000001 2360 07 ldq 1,dl 000112 aa 6 00124 7561 00 stq pr6|84 000113 aa 6 00200 6535 00 spri7 pr6|128 000114 aa 6 00044 3701 20 epp4 pr6|36,* 000115 la 4 00020 7671 20 lprp7 pr4|16,* cross_ring_io_block_table_ptr_ 000116 aa 6 00124 2361 00 ldq pr6|84 000117 aa 000001 7360 00 qls 1 000120 aa 000000 6270 06 eax7 0,ql 000121 aa 777675 2370 04 ldaq -67,ic 000016 = 000000000000 000000000000 000122 aa 7 77777 7551 17 sta pr7|-1,7 block_table.known 000123 aa 7 00000 7561 17 stq pr7|0,7 block_table.known 000124 aa 6 00124 2361 00 ldq pr6|84 000125 aa 6 00124 0541 00 aos pr6|84 000126 aa 6 00200 1161 20 cmpq pr6|128,* block_table.count 000127 aa 777765 6040 04 tmi -11,ic 000114 STATEMENT 1 ON LINE 132 end; STATEMENT 1 ON LINE 136 call set_ext_variable_ (rtrim (var_name (switchname)), null (), stackbaseptr (), was_found, node_ptr, return_code); 000130 aa 6 00032 3735 20 epp7 pr6|26,* 000131 aa 7 00002 3521 20 epp2 pr7|2,* switchname 000132 aa 6 00224 2521 00 spri2 pr6|148 000133 aa 6 00202 3521 00 epp2 pr6|130 000134 aa 6 00226 2521 00 spri2 pr6|150 000135 aa 6 00042 3715 20 epp5 pr6|34,* 000136 aa 5 00000 3521 20 epp2 pr5|0,* 000137 aa 6 00230 2521 00 spri2 pr6|152 000140 aa 777645 3520 04 epp2 -91,ic 000005 = 526000000100 000141 aa 6 00232 2521 00 spri2 pr6|154 000142 aa 6 00222 3521 00 epp2 pr6|146 000143 aa 010000 4310 07 fld 4096,dl 000144 aa 2 00000 7571 00 staq pr2|0 000145 aa 002155 6700 04 tsp4 1133,ic 002322 000146 aa 000 000 165 500 tctr (pr) 000147 aa 6 00202 00 0100 desc9a pr6|130,64 000150 aa 0 76605 0001 00 arg pr0|-635 = 777777777777 000151 aa 6 00056 0001 00 arg pr6|46 000152 aa 6 00056 2361 00 ldq pr6|46 000153 aa 0 00242 3761 00 anq pr0|162 = 000777777777 000154 aa 6 00236 7561 00 stq pr6|158 000155 aa 000100 2360 07 ldq 64,dl 000156 aa 6 00236 1761 00 sbq pr6|158 000157 aa 6 00236 7561 00 stq pr6|158 000160 aa 524000 2760 03 orq 174080,du 000161 aa 6 00175 7561 00 stq pr6|125 000162 aa 6 00236 2361 00 ldq pr6|158 000163 aa 0 00551 7001 00 tsx0 pr0|361 alloc_char_temp 000164 aa 6 00246 2521 00 spri2 pr6|166 000165 aa 040 140 100 540 mlr (pr,rl),(pr,rl),fill(040) 000166 aa 6 00202 00 0006 desc9a pr6|130,ql 000167 aa 2 00000 00 0006 desc9a pr2|0,ql 000170 aa 777630 3734 24 epp7 -104,ic* 000171 aa 6 00240 6535 00 spri7 pr6|160 000172 aa 6 00000 3511 00 epbp1 pr6|0 000173 aa 6 00242 2515 00 spri1 pr6|162 000174 aa 6 00240 3521 00 epp2 pr6|160 000175 aa 6 00250 2521 00 spri2 pr6|168 000176 aa 6 00242 3521 00 epp2 pr6|162 000177 aa 6 00252 2521 00 spri2 pr6|170 000200 aa 6 00104 3521 00 epp2 pr6|68 was_found 000201 aa 6 00254 2521 00 spri2 pr6|172 000202 aa 6 00106 3521 00 epp2 pr6|70 node_ptr 000203 aa 6 00256 2521 00 spri2 pr6|174 000204 aa 6 00116 3521 20 epp2 pr6|78,* return_code 000205 aa 6 00260 2521 00 spri2 pr6|176 000206 aa 6 00175 3521 00 epp2 pr6|125 000207 aa 6 00262 2521 00 spri2 pr6|178 000210 aa 777605 3520 04 epp2 -123,ic 000015 = 464000000000 000211 aa 6 00264 2521 00 spri2 pr6|180 000212 aa 6 00266 2521 00 spri2 pr6|182 000213 aa 6 00272 2521 00 spri2 pr6|186 000214 aa 777575 3520 04 epp2 -131,ic 000011 = 514000000001 000215 aa 6 00270 2521 00 spri2 pr6|184 000216 aa 777575 3520 04 epp2 -131,ic 000013 = 404000000043 000217 aa 6 00274 2521 00 spri2 pr6|188 000220 aa 6 00244 6211 00 eax1 pr6|164 000221 aa 030000 4310 07 fld 12288,dl 000222 aa 6 00044 3701 20 epp4 pr6|36,* 000223 la 4 00010 3521 20 epp2 pr4|8,* set_ext_variable_ 000224 aa 0 00622 7001 00 tsx0 pr0|402 call_ext_out_desc STATEMENT 1 ON LINE 138 if ^was_found | return_code ^= 0 then do; 000225 aa 0 01014 7001 00 tsx0 pr0|524 shorten_stack 000226 aa 6 00104 2351 00 lda pr6|68 was_found 000227 aa 400000 3150 03 cana 131072,du 000230 aa 000003 6000 04 tze 3,ic 000233 000231 aa 6 00116 2361 20 ldq pr6|78,* return_code 000232 aa 000005 6000 04 tze 5,ic 000237 STATEMENT 1 ON LINE 141 NO_GO_ATTACHMENT: return_code = error_table_$io_no_permission; 000233 aa 6 00044 3701 20 epp4 pr6|36,* 000234 la 4 00022 2361 20 ldq pr4|18,* error_table_$io_no_permission 000235 aa 6 00116 7561 20 stq pr6|78,* return_code STATEMENT 1 ON LINE 143 go to exit; 000236 aa 000101 7100 04 tra 65,ic 000337 STATEMENT 1 ON LINE 144 end; STATEMENT 1 ON LINE 145 blp = node_ptr -> variable_node.vbl_ptr; 000237 aa 6 00106 3735 20 epp7 pr6|70,* node_ptr 000240 aa 7 00004 3735 20 epp7 pr7|4,* variable_node.vbl_ptr 000241 aa 6 00102 6535 00 spri7 pr6|66 blp STATEMENT 1 ON LINE 148 call iox_$find_iocb (switchname, inner_iocbp, return_code); 000242 aa 6 00032 3715 20 epp5 pr6|26,* 000243 aa 5 00002 3521 20 epp2 pr5|2,* switchname 000244 aa 6 00204 2521 00 spri2 pr6|132 000245 aa 6 00100 3521 00 epp2 pr6|64 inner_iocbp 000246 aa 6 00206 2521 00 spri2 pr6|134 000247 aa 6 00116 3521 20 epp2 pr6|78,* return_code 000250 aa 6 00210 2521 00 spri2 pr6|136 000251 aa 6 00042 3535 20 epp3 pr6|34,* 000252 aa 3 00000 3521 20 epp2 pr3|0,* 000253 aa 6 00212 2521 00 spri2 pr6|138 000254 aa 777541 3520 04 epp2 -159,ic 000015 = 464000000000 000255 aa 6 00214 2521 00 spri2 pr6|140 000256 aa 777535 3520 04 epp2 -163,ic 000013 = 404000000043 000257 aa 6 00216 2521 00 spri2 pr6|142 000260 aa 6 00202 6211 00 eax1 pr6|130 000261 aa 014000 4310 07 fld 6144,dl 000262 aa 6 00044 3701 20 epp4 pr6|36,* 000263 la 4 00032 3521 20 epp2 pr4|26,* iox_$find_iocb 000264 aa 0 00622 7001 00 tsx0 pr0|402 call_ext_out_desc STATEMENT 1 ON LINE 149 if return_code ^= 0 then go to NO_GO_ATTACHMENT; 000265 aa 6 00116 2361 20 ldq pr6|78,* return_code 000266 aa 777745 6010 04 tnz -27,ic 000233 STATEMENT 1 ON LINE 152 if save_level > block.validation then go to NO_GO_ATTACHMENT; 000267 aa 6 00110 2361 00 ldq pr6|72 save_level 000270 aa 6 00102 3735 20 epp7 pr6|66,* blp 000271 aa 7 00016 1161 00 cmpq pr7|14 block.validation 000272 aa 777741 6054 04 tpnz -31,ic 000233 STATEMENT 1 ON LINE 154 block.attach_count = block.attach_count + 1; 000273 aa 7 00021 0541 00 aos pr7|17 block.attach_count STATEMENT 1 ON LINE 155 inner_index_struc.block_ptr = blp; 000274 aa 6 00113 5471 00 sprp7 pr6|75 inner_index_struc.block_ptr STATEMENT 1 ON LINE 156 inner_index_struc.iocb_ptr = inner_iocbp; 000275 aa 6 00100 3715 20 epp5 pr6|64,* inner_iocbp 000276 aa 6 00112 5451 00 sprp5 pr6|74 inner_index_struc.iocb_ptr STATEMENT 1 ON LINE 157 FILL_IN: do i = 1 to hbound (block_table.known, 1); 000277 aa 6 00044 3701 20 epp4 pr6|36,* 000300 la 4 00020 7671 20 lprp7 pr4|16,* cross_ring_io_block_table_ptr_ 000301 aa 7 00000 2361 00 ldq pr7|0 block_table.count 000302 aa 6 00125 7561 00 stq pr6|85 000303 aa 000001 2360 07 ldq 1,dl 000304 aa 6 00111 7561 00 stq pr6|73 i 000305 aa 000000 0110 03 nop 0,du 000306 aa 6 00111 2361 00 ldq pr6|73 i 000307 aa 6 00125 1161 00 cmpq pr6|85 000310 aa 000021 6054 04 tpnz 17,ic 000331 STATEMENT 1 ON LINE 159 if block_table.known (i) = ""b then do; 000311 aa 6 00044 3701 20 epp4 pr6|36,* 000312 la 4 00020 7671 20 lprp7 pr4|16,* cross_ring_io_block_table_ptr_ 000313 aa 000001 7360 00 qls 1 000314 aa 6 00175 7561 00 stq pr6|125 000315 aa 7 77777 2351 06 lda pr7|-1,ql block_table.known 000316 aa 7 00000 2361 06 ldq pr7|0,ql block_table.known 000317 aa 0 00000 1171 00 cmpaq pr0|0 = 000000000000 000000000000 000320 aa 6 00242 6535 00 spri7 pr6|162 000321 aa 000006 6010 04 tnz 6,ic 000327 STATEMENT 1 ON LINE 161 block_table.known (i) = unspec (inner_index_struc); 000322 aa 6 00112 2371 00 ldaq pr6|74 000323 aa 6 00175 7271 00 lxl7 pr6|125 000324 aa 7 77777 7551 17 sta pr7|-1,7 block_table.known 000325 aa 7 00000 7561 17 stq pr7|0,7 block_table.known STATEMENT 1 ON LINE 162 go to FILLED_IN; 000326 aa 000005 7100 04 tra 5,ic 000333 STATEMENT 1 ON LINE 163 end; STATEMENT 1 ON LINE 164 end; 000327 aa 6 00111 0541 00 aos pr6|73 i 000330 aa 777756 7100 04 tra -18,ic 000306 STATEMENT 1 ON LINE 165 call grow_block_table; 000331 aa 001675 6700 04 tsp4 957,ic 002226 STATEMENT 1 ON LINE 166 go to FILL_IN; 000332 aa 777745 7100 04 tra -27,ic 000277 STATEMENT 1 ON LINE 168 FILLED_IN: inner_index = block_table.known (i); 000333 aa 6 00122 3715 20 epp5 pr6|82,* 000334 aa 5 00000 7551 00 sta pr5|0 inner_index 000335 aa 5 00001 7561 00 stq pr5|1 inner_index STATEMENT 1 ON LINE 171 return_code = 0; 000336 aa 6 00116 4501 20 stz pr6|78,* return_code STATEMENT 1 ON LINE 172 exit: call cu_$level_set (save_level); 000337 aa 6 00110 3521 00 epp2 pr6|72 save_level 000340 aa 6 00224 2521 00 spri2 pr6|148 000341 aa 6 00222 6211 00 eax1 pr6|146 000342 aa 004000 4310 07 fld 2048,dl 000343 aa 6 00044 3701 20 epp4 pr6|36,* 000344 la 4 00016 3521 20 epp2 pr4|14,* cu_$level_set 000345 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 174 return; 000346 aa 0 00631 7101 00 tra pr0|409 return_mac ENTRY TO release_attachment STATEMENT 1 ON LINE 178 release_attachment: entry (inner_index, return_code); 000347 at 000002000006 000350 ta 000013000000 000351 ta 000347000000 000352 da 000266300000 000353 aa 000440 6270 00 eax7 288 000354 aa 7 00034 3521 20 epp2 pr7|28,* 000355 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 000356 aa 000004000000 000357 aa 000000000000 000360 aa 6 00032 3735 20 epp7 pr6|26,* 000361 aa 7 00002 3715 20 epp5 pr7|2,* 000362 aa 6 00122 6515 00 spri5 pr6|82 000363 aa 7 00004 3535 20 epp3 pr7|4,* 000364 aa 6 00116 2535 00 spri3 pr6|78 STATEMENT 1 ON LINE 181 call setup; 000365 aa 001414 6700 04 tsp4 780,ic 002001 STATEMENT 1 ON LINE 182 unspec (inner_index_struc) = inner_index; 000366 aa 6 00122 3735 20 epp7 pr6|82,* 000367 aa 7 00000 2351 00 lda pr7|0 inner_index 000370 aa 7 00001 2361 00 ldq pr7|1 inner_index 000371 aa 6 00112 7571 00 staq pr6|74 STATEMENT 1 ON LINE 183 call validate_index (unspec (inner_index_struc), (null ())); 000372 aa 6 00242 7571 00 staq pr6|162 000373 aa 777425 3714 24 epp5 -235,ic* 000374 aa 6 00240 6515 00 spri5 pr6|160 000375 aa 6 00242 3521 00 epp2 pr6|162 000376 aa 6 00224 2521 00 spri2 pr6|148 000377 aa 6 00240 3521 00 epp2 pr6|160 000400 aa 6 00226 2521 00 spri2 pr6|150 000401 aa 6 00222 6211 00 eax1 pr6|146 000402 aa 010000 4310 07 fld 4096,dl 000403 aa 001451 3520 04 epp2 809,ic 002054 = 000140627000 000404 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 185 block.attach_count = block.attach_count - 1; 000405 aa 000001 3360 07 lcq 1,dl 000406 aa 6 00102 3735 20 epp7 pr6|66,* blp 000407 aa 7 00021 0561 00 asq pr7|17 block.attach_count STATEMENT 1 ON LINE 186 do i = 1 to hbound (block_table.known, 1); 000410 aa 6 00044 3701 20 epp4 pr6|36,* 000411 la 4 00020 7651 20 lprp5 pr4|16,* cross_ring_io_block_table_ptr_ 000412 aa 5 00000 2361 00 ldq pr5|0 block_table.count 000413 aa 6 00126 7561 00 stq pr6|86 000414 aa 000001 2360 07 ldq 1,dl 000415 aa 6 00111 7561 00 stq pr6|73 i 000416 aa 6 00111 2361 00 ldq pr6|73 i 000417 aa 6 00126 1161 00 cmpq pr6|86 000420 aa 777717 6054 04 tpnz -49,ic 000337 STATEMENT 1 ON LINE 187 if block_table.known (i) = unspec (inner_index_struc) then do; 000421 aa 6 00044 3701 20 epp4 pr6|36,* 000422 la 4 00020 7671 20 lprp7 pr4|16,* cross_ring_io_block_table_ptr_ 000423 aa 000001 7360 00 qls 1 000424 aa 6 00175 7561 00 stq pr6|125 000425 aa 7 77777 2351 06 lda pr7|-1,ql block_table.known 000426 aa 7 00000 2361 06 ldq pr7|0,ql block_table.known 000427 aa 6 00112 1171 00 cmpaq pr6|74 000430 aa 6 00240 6535 00 spri7 pr6|160 000431 aa 000006 6010 04 tnz 6,ic 000437 STATEMENT 1 ON LINE 189 block_table.known (i) = ""b; 000432 aa 777364 2370 04 ldaq -268,ic 000016 = 000000000000 000000000000 000433 aa 6 00175 7271 00 lxl7 pr6|125 000434 aa 7 77777 7551 17 sta pr7|-1,7 block_table.known 000435 aa 7 00000 7561 17 stq pr7|0,7 block_table.known STATEMENT 1 ON LINE 190 go to exit; 000436 aa 777701 7100 04 tra -63,ic 000337 STATEMENT 1 ON LINE 191 end; STATEMENT 1 ON LINE 192 end; 000437 aa 6 00111 0541 00 aos pr6|73 i 000440 aa 777756 7100 04 tra -18,ic 000416 STATEMENT 1 ON LINE 193 go to exit; 000441 aa 777676 7100 04 tra -66,ic 000337 ENTRY TO open STATEMENT 1 ON LINE 197 open: entry (inner_index, open_mode, dummy, return_code); 000442 at 000004000006 000443 tt 000012000011 000444 ta 000013000000 000445 ta 000442000000 000446 da 000271300000 000447 aa 000440 6270 00 eax7 288 000450 aa 7 00034 3521 20 epp2 pr7|28,* 000451 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 000452 aa 000010000000 000453 aa 000000000000 000454 aa 6 00032 3735 20 epp7 pr6|26,* 000455 aa 7 00002 3715 20 epp5 pr7|2,* 000456 aa 6 00122 6515 00 spri5 pr6|82 000457 aa 7 00010 3535 20 epp3 pr7|8,* 000460 aa 6 00116 2535 00 spri3 pr6|78 STATEMENT 1 ON LINE 200 call setup; 000461 aa 001320 6700 04 tsp4 720,ic 002001 STATEMENT 1 ON LINE 201 call validate_index (inner_index, inner_iocbp); 000462 aa 6 00122 3521 20 epp2 pr6|82,* inner_index 000463 aa 6 00224 2521 00 spri2 pr6|148 000464 aa 6 00100 3521 00 epp2 pr6|64 inner_iocbp 000465 aa 6 00226 2521 00 spri2 pr6|150 000466 aa 6 00222 6211 00 eax1 pr6|146 000467 aa 010000 4310 07 fld 4096,dl 000470 aa 001364 3520 04 epp2 756,ic 002054 = 000140627000 000471 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 203 block.open_count = block.open_count + 1; 000472 aa 6 00102 3735 20 epp7 pr6|66,* blp 000473 aa 7 00022 0541 00 aos pr7|18 block.open_count STATEMENT 1 ON LINE 204 if inner_iocbp -> iocb.open_descrip_ptr = null then do; 000474 aa 6 00100 3715 20 epp5 pr6|64,* inner_iocbp 000475 aa 5 00020 2371 00 ldaq pr5|16 iocb.open_descrip_ptr 000476 aa 777322 6770 04 eraq -302,ic 000020 = 077777000043 000001000000 000477 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 000500 aa 777637 6010 04 tnz -97,ic 000337 STATEMENT 1 ON LINE 206 call iox_$open (inner_iocbp, open_mode, dummy, return_code); 000501 aa 6 00100 3521 00 epp2 pr6|64 inner_iocbp 000502 aa 6 00224 2521 00 spri2 pr6|148 000503 aa 6 00032 3535 20 epp3 pr6|26,* 000504 aa 3 00004 3521 20 epp2 pr3|4,* open_mode 000505 aa 6 00226 2521 00 spri2 pr6|150 000506 aa 3 00006 3521 20 epp2 pr3|6,* dummy 000507 aa 6 00230 2521 00 spri2 pr6|152 000510 aa 6 00116 3521 20 epp2 pr6|78,* return_code 000511 aa 6 00232 2521 00 spri2 pr6|154 000512 aa 6 00222 6211 00 eax1 pr6|146 000513 aa 020000 4310 07 fld 8192,dl 000514 aa 6 00044 3701 20 epp4 pr6|36,* 000515 la 4 00042 3521 20 epp2 pr4|34,* iox_$open 000516 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 207 if return_code = 0 then block.i_opened = "1"b; 000517 aa 6 00116 2361 20 ldq pr6|78,* return_code 000520 aa 000005 6010 04 tnz 5,ic 000525 000521 aa 400000 2350 03 lda 131072,du 000522 aa 6 00102 3735 20 epp7 pr6|66,* blp 000523 aa 7 00020 7551 00 sta pr7|16 block.i_opened 000524 aa 777613 7100 04 tra -117,ic 000337 STATEMENT 1 ON LINE 209 else block.open_count = block.open_count - 1; 000525 aa 000001 3360 07 lcq 1,dl 000526 aa 6 00102 3735 20 epp7 pr6|66,* blp 000527 aa 7 00022 0561 00 asq pr7|18 block.open_count STATEMENT 1 ON LINE 210 end; STATEMENT 1 ON LINE 211 go to exit; 000530 aa 777607 7100 04 tra -121,ic 000337 ENTRY TO close STATEMENT 1 ON LINE 215 close: entry (inner_index, return_code); 000531 ta 000347000000 000532 da 000274300000 000533 aa 000440 6270 00 eax7 288 000534 aa 7 00034 3521 20 epp2 pr7|28,* 000535 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 000536 aa 000004000000 000537 aa 000000000000 000540 aa 6 00032 3735 20 epp7 pr6|26,* 000541 aa 7 00002 3715 20 epp5 pr7|2,* 000542 aa 6 00122 6515 00 spri5 pr6|82 000543 aa 7 00004 3535 20 epp3 pr7|4,* 000544 aa 6 00116 2535 00 spri3 pr6|78 STATEMENT 1 ON LINE 218 call setup; 000545 aa 001234 6700 04 tsp4 668,ic 002001 STATEMENT 1 ON LINE 219 call validate_index (inner_index, inner_iocbp); 000546 aa 6 00122 3521 20 epp2 pr6|82,* inner_index 000547 aa 6 00224 2521 00 spri2 pr6|148 000550 aa 6 00100 3521 00 epp2 pr6|64 inner_iocbp 000551 aa 6 00226 2521 00 spri2 pr6|150 000552 aa 6 00222 6211 00 eax1 pr6|146 000553 aa 010000 4310 07 fld 4096,dl 000554 aa 001300 3520 04 epp2 704,ic 002054 = 000140627000 000555 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 221 block.open_count = block.open_count - 1; 000556 aa 000001 3360 07 lcq 1,dl 000557 aa 6 00102 3735 20 epp7 pr6|66,* blp 000560 aa 7 00022 0561 00 asq pr7|18 block.open_count STATEMENT 1 ON LINE 222 if block.open_count > 0 then go to exit; 000561 aa 7 00022 2361 00 ldq pr7|18 block.open_count 000562 aa 777555 6054 04 tpnz -147,ic 000337 STATEMENT 1 ON LINE 224 if block.i_opened then call iox_$close (inner_iocbp, return_code); 000563 aa 7 00020 2351 00 lda pr7|16 block.i_opened 000564 aa 000012 6000 04 tze 10,ic 000576 000565 aa 6 00100 3521 00 epp2 pr6|64 inner_iocbp 000566 aa 6 00224 2521 00 spri2 pr6|148 000567 aa 6 00116 3521 20 epp2 pr6|78,* return_code 000570 aa 6 00226 2521 00 spri2 pr6|150 000571 aa 6 00222 6211 00 eax1 pr6|146 000572 aa 010000 4310 07 fld 4096,dl 000573 aa 6 00044 3701 20 epp4 pr6|36,* 000574 la 4 00024 3521 20 epp2 pr4|20,* iox_$close 000575 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 226 block.i_opened = "0"b; 000576 aa 6 00102 3735 20 epp7 pr6|66,* blp 000577 aa 7 00020 4501 00 stz pr7|16 block.i_opened STATEMENT 1 ON LINE 227 go to exit; 000600 aa 777537 7100 04 tra -161,ic 000337 ENTRY TO control STATEMENT 1 ON LINE 231 control: entry (iocb_ptr, control_arg, control_ptr, return_code); 000601 at 000004000015 000602 tt 000014000015 000603 ta 000013000000 000604 ta 000601000000 000605 da 000277300000 000606 aa 000440 6270 00 eax7 288 000607 aa 7 00034 3521 20 epp2 pr7|28,* 000610 aa 2 01046 2721 00 tsp2 pr2|550 ext_entry_desc 000611 aa 000010000000 000612 aa 000000000000 000613 aa 6 00042 3735 20 epp7 pr6|34,* 000614 aa 7 00002 2361 20 ldq pr7|2,* 000615 aa 000002 6040 04 tmi 2,ic 000617 000616 aa 777777 3760 07 anq 262143,dl 000617 aa 0 00250 3761 00 anq pr0|168 = 000077777777 000620 aa 6 00276 7561 00 stq pr6|190 000621 aa 6 00032 3715 20 epp5 pr6|26,* 000622 aa 5 00010 3535 20 epp3 pr5|8,* 000623 aa 6 00116 2535 00 spri3 pr6|78 STATEMENT 1 ON LINE 234 call setup; 000624 aa 001155 6700 04 tsp4 621,ic 002001 STATEMENT 1 ON LINE 235 inner_iocbp = validate_io (iocb_ptr); 000625 aa 6 00032 3735 20 epp7 pr6|26,* 000626 aa 7 00002 3521 20 epp2 pr7|2,* iocb_ptr 000627 aa 6 00224 2521 00 spri2 pr6|148 000630 aa 6 00100 3521 00 epp2 pr6|64 inner_iocbp 000631 aa 6 00226 2521 00 spri2 pr6|150 000632 aa 6 00222 3521 00 epp2 pr6|146 000633 aa 010000 4310 07 fld 4096,dl 000634 aa 2 00000 7571 00 staq pr2|0 000635 aa 001174 6700 04 tsp4 636,ic 002031 STATEMENT 1 ON LINE 237 call iox_$control (inner_iocbp, control_arg, control_ptr, return_code); 000636 aa 6 00100 3521 00 epp2 pr6|64 inner_iocbp 000637 aa 6 00246 2521 00 spri2 pr6|166 000640 aa 6 00032 3735 20 epp7 pr6|26,* 000641 aa 7 00004 3521 20 epp2 pr7|4,* control_arg 000642 aa 6 00250 2521 00 spri2 pr6|168 000643 aa 7 00006 3521 20 epp2 pr7|6,* control_ptr 000644 aa 6 00252 2521 00 spri2 pr6|170 000645 aa 6 00116 3521 20 epp2 pr6|78,* return_code 000646 aa 6 00254 2521 00 spri2 pr6|172 000647 aa 777146 3520 04 epp2 -410,ic 000015 = 464000000000 000650 aa 6 00256 2521 00 spri2 pr6|174 000651 aa 6 00262 2521 00 spri2 pr6|178 000652 aa 6 00042 3715 20 epp5 pr6|34,* 000653 aa 5 00002 3521 20 epp2 pr5|2,* 000654 aa 6 00260 2521 00 spri2 pr6|176 000655 aa 777136 3520 04 epp2 -418,ic 000013 = 404000000043 000656 aa 6 00264 2521 00 spri2 pr6|180 000657 aa 6 00244 6211 00 eax1 pr6|164 000660 aa 020000 4310 07 fld 8192,dl 000661 aa 6 00044 3701 20 epp4 pr6|36,* 000662 la 4 00026 3521 20 epp2 pr4|22,* iox_$control 000663 aa 0 00622 7001 00 tsx0 pr0|402 call_ext_out_desc STATEMENT 1 ON LINE 238 go to exit; 000664 aa 777453 7100 04 tra -213,ic 000337 ENTRY TO modes STATEMENT 1 ON LINE 242 modes: entry (iocb_ptr, new_modes, old_modes, return_code); 000665 at 000004000015 000666 tt 000014000014 000667 ta 000013000000 000670 ta 000665000000 000671 da 000302300000 000672 aa 000440 6270 00 eax7 288 000673 aa 7 00034 3521 20 epp2 pr7|28,* 000674 aa 2 01046 2721 00 tsp2 pr2|550 ext_entry_desc 000675 aa 000010000000 000676 aa 000000000000 000677 aa 6 00042 3735 20 epp7 pr6|34,* 000700 aa 7 00002 2361 20 ldq pr7|2,* 000701 aa 000002 6040 04 tmi 2,ic 000703 000702 aa 777777 3760 07 anq 262143,dl 000703 aa 0 00250 3761 00 anq pr0|168 = 000077777777 000704 aa 6 00276 7561 00 stq pr6|190 000705 aa 7 00004 2361 20 ldq pr7|4,* 000706 aa 000002 6040 04 tmi 2,ic 000710 000707 aa 777777 3760 07 anq 262143,dl 000710 aa 0 00250 3761 00 anq pr0|168 = 000077777777 000711 aa 6 00277 7561 00 stq pr6|191 000712 aa 6 00032 3715 20 epp5 pr6|26,* 000713 aa 5 00010 3535 20 epp3 pr5|8,* 000714 aa 6 00116 2535 00 spri3 pr6|78 STATEMENT 1 ON LINE 245 call setup; 000715 aa 001064 6700 04 tsp4 564,ic 002001 STATEMENT 1 ON LINE 246 inner_iocbp = validate_io (iocb_ptr); 000716 aa 6 00032 3735 20 epp7 pr6|26,* 000717 aa 7 00002 3521 20 epp2 pr7|2,* iocb_ptr 000720 aa 6 00224 2521 00 spri2 pr6|148 000721 aa 6 00100 3521 00 epp2 pr6|64 inner_iocbp 000722 aa 6 00226 2521 00 spri2 pr6|150 000723 aa 6 00222 3521 00 epp2 pr6|146 000724 aa 010000 4310 07 fld 4096,dl 000725 aa 2 00000 7571 00 staq pr2|0 000726 aa 001103 6700 04 tsp4 579,ic 002031 STATEMENT 1 ON LINE 247 call iox_$modes (inner_iocbp, new_modes, old_modes, return_code); 000727 aa 6 00100 3521 00 epp2 pr6|64 inner_iocbp 000730 aa 6 00246 2521 00 spri2 pr6|166 000731 aa 6 00032 3735 20 epp7 pr6|26,* 000732 aa 7 00004 3521 20 epp2 pr7|4,* new_modes 000733 aa 6 00250 2521 00 spri2 pr6|168 000734 aa 7 00006 3521 20 epp2 pr7|6,* old_modes 000735 aa 6 00252 2521 00 spri2 pr6|170 000736 aa 6 00116 3521 20 epp2 pr6|78,* return_code 000737 aa 6 00254 2521 00 spri2 pr6|172 000740 aa 777055 3520 04 epp2 -467,ic 000015 = 464000000000 000741 aa 6 00256 2521 00 spri2 pr6|174 000742 aa 6 00042 3715 20 epp5 pr6|34,* 000743 aa 5 00002 3521 20 epp2 pr5|2,* 000744 aa 6 00260 2521 00 spri2 pr6|176 000745 aa 5 00004 3521 20 epp2 pr5|4,* 000746 aa 6 00262 2521 00 spri2 pr6|178 000747 aa 777044 3520 04 epp2 -476,ic 000013 = 404000000043 000750 aa 6 00264 2521 00 spri2 pr6|180 000751 aa 6 00244 6211 00 eax1 pr6|164 000752 aa 020000 4310 07 fld 8192,dl 000753 aa 6 00044 3701 20 epp4 pr6|36,* 000754 la 4 00040 3521 20 epp2 pr4|32,* iox_$modes 000755 aa 0 00622 7001 00 tsx0 pr0|402 call_ext_out_desc STATEMENT 1 ON LINE 248 go to exit; 000756 aa 777361 7100 04 tra -271,ic 000337 ENTRY TO read_key STATEMENT 1 ON LINE 252 read_key: entry (iocb_ptr, key, reclth, return_code); 000757 at 000004000015 000760 tt 000007000010 000761 ta 000013000000 000762 ta 000757000000 000763 da 000305300000 000764 aa 000440 6270 00 eax7 288 000765 aa 7 00034 3521 20 epp2 pr7|28,* 000766 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 000767 aa 000010000000 000770 aa 000000000000 000771 aa 6 00032 3735 20 epp7 pr6|26,* 000772 aa 7 00006 3715 20 epp5 pr7|6,* 000773 aa 6 00120 6515 00 spri5 pr6|80 000774 aa 7 00010 3535 20 epp3 pr7|8,* 000775 aa 6 00116 2535 00 spri3 pr6|78 STATEMENT 1 ON LINE 255 call setup; 000776 aa 001003 6700 04 tsp4 515,ic 002001 STATEMENT 1 ON LINE 256 inner_iocbp = validate_io (iocb_ptr); 000777 aa 6 00032 3735 20 epp7 pr6|26,* 001000 aa 7 00002 3521 20 epp2 pr7|2,* iocb_ptr 001001 aa 6 00224 2521 00 spri2 pr6|148 001002 aa 6 00100 3521 00 epp2 pr6|64 inner_iocbp 001003 aa 6 00226 2521 00 spri2 pr6|150 001004 aa 6 00222 3521 00 epp2 pr6|146 001005 aa 010000 4310 07 fld 4096,dl 001006 aa 2 00000 7571 00 staq pr2|0 001007 aa 001022 6700 04 tsp4 530,ic 002031 STATEMENT 1 ON LINE 257 call iox_$read_key (inner_iocbp, key, reclth, return_code); 001010 aa 6 00100 3521 00 epp2 pr6|64 inner_iocbp 001011 aa 6 00224 2521 00 spri2 pr6|148 001012 aa 6 00032 3735 20 epp7 pr6|26,* 001013 aa 7 00004 3521 20 epp2 pr7|4,* key 001014 aa 6 00226 2521 00 spri2 pr6|150 001015 aa 6 00120 3521 20 epp2 pr6|80,* reclth 001016 aa 6 00230 2521 00 spri2 pr6|152 001017 aa 6 00116 3521 20 epp2 pr6|78,* return_code 001020 aa 6 00232 2521 00 spri2 pr6|154 001021 aa 6 00222 6211 00 eax1 pr6|146 001022 aa 020000 4310 07 fld 8192,dl 001023 aa 6 00044 3701 20 epp4 pr6|36,* 001024 la 4 00050 3521 20 epp2 pr4|40,* iox_$read_key 001025 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 258 go to exit; 001026 aa 777311 7100 04 tra -311,ic 000337 ENTRY TO read_length STATEMENT 1 ON LINE 262 read_length: entry (iocb_ptr, reclth, return_code); 001027 at 000003000015 001030 tt 000010000013 001031 ta 001027000000 001032 da 000310300000 001033 aa 000440 6270 00 eax7 288 001034 aa 7 00034 3521 20 epp2 pr7|28,* 001035 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 001036 aa 000006000000 001037 aa 000000000000 001040 aa 6 00032 3735 20 epp7 pr6|26,* 001041 aa 7 00004 3715 20 epp5 pr7|4,* 001042 aa 6 00120 6515 00 spri5 pr6|80 001043 aa 7 00006 3535 20 epp3 pr7|6,* 001044 aa 6 00116 2535 00 spri3 pr6|78 STATEMENT 1 ON LINE 265 call setup; 001045 aa 000734 6700 04 tsp4 476,ic 002001 STATEMENT 1 ON LINE 266 inner_iocbp = validate_io (iocb_ptr); 001046 aa 6 00032 3735 20 epp7 pr6|26,* 001047 aa 7 00002 3521 20 epp2 pr7|2,* iocb_ptr 001050 aa 6 00224 2521 00 spri2 pr6|148 001051 aa 6 00100 3521 00 epp2 pr6|64 inner_iocbp 001052 aa 6 00226 2521 00 spri2 pr6|150 001053 aa 6 00222 3521 00 epp2 pr6|146 001054 aa 010000 4310 07 fld 4096,dl 001055 aa 2 00000 7571 00 staq pr2|0 001056 aa 000753 6700 04 tsp4 491,ic 002031 STATEMENT 1 ON LINE 267 call iox_$read_length (inner_iocbp, reclth, return_code); 001057 aa 6 00100 3521 00 epp2 pr6|64 inner_iocbp 001060 aa 6 00224 2521 00 spri2 pr6|148 001061 aa 6 00120 3521 20 epp2 pr6|80,* reclth 001062 aa 6 00226 2521 00 spri2 pr6|150 001063 aa 6 00116 3521 20 epp2 pr6|78,* return_code 001064 aa 6 00230 2521 00 spri2 pr6|152 001065 aa 6 00222 6211 00 eax1 pr6|146 001066 aa 014000 4310 07 fld 6144,dl 001067 aa 6 00044 3701 20 epp4 pr6|36,* 001070 la 4 00052 3521 20 epp2 pr4|42,* iox_$read_length 001071 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 268 go to exit; 001072 aa 777245 7100 04 tra -347,ic 000337 ENTRY TO delete_record STATEMENT 1 ON LINE 272 delete_record: entry (iocb_ptr, return_code); 001073 at 000002000015 001074 ta 000013000000 001075 ta 001073000000 001076 da 000313300000 001077 aa 000440 6270 00 eax7 288 001100 aa 7 00034 3521 20 epp2 pr7|28,* 001101 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 001102 aa 000004000000 001103 aa 000000000000 001104 aa 6 00032 3735 20 epp7 pr6|26,* 001105 aa 7 00004 3715 20 epp5 pr7|4,* 001106 aa 6 00116 6515 00 spri5 pr6|78 STATEMENT 1 ON LINE 275 call setup; 001107 aa 000672 6700 04 tsp4 442,ic 002001 STATEMENT 1 ON LINE 276 inner_iocbp = validate_io (iocb_ptr); 001110 aa 6 00032 3735 20 epp7 pr6|26,* 001111 aa 7 00002 3521 20 epp2 pr7|2,* iocb_ptr 001112 aa 6 00224 2521 00 spri2 pr6|148 001113 aa 6 00100 3521 00 epp2 pr6|64 inner_iocbp 001114 aa 6 00226 2521 00 spri2 pr6|150 001115 aa 6 00222 3521 00 epp2 pr6|146 001116 aa 010000 4310 07 fld 4096,dl 001117 aa 2 00000 7571 00 staq pr2|0 001120 aa 000711 6700 04 tsp4 457,ic 002031 STATEMENT 1 ON LINE 277 call iox_$delete_record (inner_iocbp, return_code); 001121 aa 6 00100 3521 00 epp2 pr6|64 inner_iocbp 001122 aa 6 00224 2521 00 spri2 pr6|148 001123 aa 6 00116 3521 20 epp2 pr6|78,* return_code 001124 aa 6 00226 2521 00 spri2 pr6|150 001125 aa 6 00222 6211 00 eax1 pr6|146 001126 aa 010000 4310 07 fld 4096,dl 001127 aa 6 00044 3701 20 epp4 pr6|36,* 001130 la 4 00030 3521 20 epp2 pr4|24,* iox_$delete_record 001131 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 278 go to exit; 001132 aa 777205 7100 04 tra -379,ic 000337 ENTRY TO put_chars STATEMENT 1 ON LINE 282 put_chars: entry (iocb_ptr, char_ptr, char_cnt, return_code); 001133 at 000004000015 001134 tt 000015000010 001135 ta 000013000000 001136 ta 001133000000 001137 da 000316300000 001140 aa 000440 6270 00 eax7 288 001141 aa 7 00034 3521 20 epp2 pr7|28,* 001142 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 001143 aa 000010000000 001144 aa 000000000000 001145 aa 6 00032 3735 20 epp7 pr6|26,* 001146 aa 7 00010 3715 20 epp5 pr7|8,* 001147 aa 6 00116 6515 00 spri5 pr6|78 STATEMENT 1 ON LINE 285 call setup; 001150 aa 000631 6700 04 tsp4 409,ic 002001 STATEMENT 1 ON LINE 286 inner_iocbp = validate_io (iocb_ptr); 001151 aa 6 00032 3735 20 epp7 pr6|26,* 001152 aa 7 00002 3521 20 epp2 pr7|2,* iocb_ptr 001153 aa 6 00224 2521 00 spri2 pr6|148 001154 aa 6 00100 3521 00 epp2 pr6|64 inner_iocbp 001155 aa 6 00226 2521 00 spri2 pr6|150 001156 aa 6 00222 3521 00 epp2 pr6|146 001157 aa 010000 4310 07 fld 4096,dl 001160 aa 2 00000 7571 00 staq pr2|0 001161 aa 000650 6700 04 tsp4 424,ic 002031 STATEMENT 1 ON LINE 287 call iox_$put_chars (inner_iocbp, char_ptr, char_cnt, return_code); 001162 aa 6 00100 3521 00 epp2 pr6|64 inner_iocbp 001163 aa 6 00224 2521 00 spri2 pr6|148 001164 aa 6 00032 3735 20 epp7 pr6|26,* 001165 aa 7 00004 3521 20 epp2 pr7|4,* char_ptr 001166 aa 6 00226 2521 00 spri2 pr6|150 001167 aa 7 00006 3521 20 epp2 pr7|6,* char_cnt 001170 aa 6 00230 2521 00 spri2 pr6|152 001171 aa 6 00116 3521 20 epp2 pr6|78,* return_code 001172 aa 6 00232 2521 00 spri2 pr6|154 001173 aa 6 00222 6211 00 eax1 pr6|146 001174 aa 020000 4310 07 fld 8192,dl 001175 aa 6 00044 3701 20 epp4 pr6|36,* 001176 la 4 00046 3521 20 epp2 pr4|38,* iox_$put_chars 001177 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 288 go to exit; 001200 aa 777137 7100 04 tra -417,ic 000337 ENTRY TO get_chars STATEMENT 1 ON LINE 292 get_chars: entry (iocb_ptr, char_ptr, char_cnt, char_cnt1, return_code); 001201 at 000005000015 001202 tt 000015000010 001203 tt 000010000013 001204 ta 001201000000 001205 da 000321300000 001206 aa 000440 6270 00 eax7 288 001207 aa 7 00034 3521 20 epp2 pr7|28,* 001210 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 001211 aa 000012000000 001212 aa 000000000000 001213 aa 6 00032 3735 20 epp7 pr6|26,* 001214 aa 7 00012 3715 20 epp5 pr7|10,* 001215 aa 6 00116 6515 00 spri5 pr6|78 STATEMENT 1 ON LINE 295 call setup; 001216 aa 000563 6700 04 tsp4 371,ic 002001 STATEMENT 1 ON LINE 296 inner_iocbp = validate_io (iocb_ptr); 001217 aa 6 00032 3735 20 epp7 pr6|26,* 001220 aa 7 00002 3521 20 epp2 pr7|2,* iocb_ptr 001221 aa 6 00224 2521 00 spri2 pr6|148 001222 aa 6 00100 3521 00 epp2 pr6|64 inner_iocbp 001223 aa 6 00226 2521 00 spri2 pr6|150 001224 aa 6 00222 3521 00 epp2 pr6|146 001225 aa 010000 4310 07 fld 4096,dl 001226 aa 2 00000 7571 00 staq pr2|0 001227 aa 000602 6700 04 tsp4 386,ic 002031 STATEMENT 1 ON LINE 297 char_cnt1 = 0; 001230 aa 6 00032 3735 20 epp7 pr6|26,* 001231 aa 7 00010 4501 20 stz pr7|8,* char_cnt1 STATEMENT 1 ON LINE 298 call iox_$get_chars (inner_iocbp, char_ptr, char_cnt, char_cnt1, return_code); 001232 aa 6 00100 3521 00 epp2 pr6|64 inner_iocbp 001233 aa 6 00224 2521 00 spri2 pr6|148 001234 aa 7 00004 3521 20 epp2 pr7|4,* char_ptr 001235 aa 6 00226 2521 00 spri2 pr6|150 001236 aa 7 00006 3521 20 epp2 pr7|6,* char_cnt 001237 aa 6 00230 2521 00 spri2 pr6|152 001240 aa 7 00010 3521 20 epp2 pr7|8,* char_cnt1 001241 aa 6 00232 2521 00 spri2 pr6|154 001242 aa 6 00116 3521 20 epp2 pr6|78,* return_code 001243 aa 6 00234 2521 00 spri2 pr6|156 001244 aa 6 00222 6211 00 eax1 pr6|146 001245 aa 024000 4310 07 fld 10240,dl 001246 aa 6 00044 3701 20 epp4 pr6|36,* 001247 la 4 00034 3521 20 epp2 pr4|28,* iox_$get_chars 001250 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 299 go to exit; 001251 aa 777066 7100 04 tra -458,ic 000337 ENTRY TO get_line STATEMENT 1 ON LINE 303 get_line: entry (iocb_ptr, char_ptr, char_cnt, char_cnt1, return_code); 001252 ta 001201000000 001253 da 000324300000 001254 aa 000440 6270 00 eax7 288 001255 aa 7 00034 3521 20 epp2 pr7|28,* 001256 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 001257 aa 000012000000 001260 aa 000000000000 001261 aa 6 00032 3735 20 epp7 pr6|26,* 001262 aa 7 00012 3715 20 epp5 pr7|10,* 001263 aa 6 00116 6515 00 spri5 pr6|78 STATEMENT 1 ON LINE 306 call setup; 001264 aa 000515 6700 04 tsp4 333,ic 002001 STATEMENT 1 ON LINE 307 inner_iocbp = validate_io (iocb_ptr); 001265 aa 6 00032 3735 20 epp7 pr6|26,* 001266 aa 7 00002 3521 20 epp2 pr7|2,* iocb_ptr 001267 aa 6 00224 2521 00 spri2 pr6|148 001270 aa 6 00100 3521 00 epp2 pr6|64 inner_iocbp 001271 aa 6 00226 2521 00 spri2 pr6|150 001272 aa 6 00222 3521 00 epp2 pr6|146 001273 aa 010000 4310 07 fld 4096,dl 001274 aa 2 00000 7571 00 staq pr2|0 001275 aa 000534 6700 04 tsp4 348,ic 002031 STATEMENT 1 ON LINE 308 char_cnt1 = 0; 001276 aa 6 00032 3735 20 epp7 pr6|26,* 001277 aa 7 00010 4501 20 stz pr7|8,* char_cnt1 STATEMENT 1 ON LINE 309 call iox_$get_line (inner_iocbp, char_ptr, char_cnt, char_cnt1, return_code); 001300 aa 6 00100 3521 00 epp2 pr6|64 inner_iocbp 001301 aa 6 00224 2521 00 spri2 pr6|148 001302 aa 7 00004 3521 20 epp2 pr7|4,* char_ptr 001303 aa 6 00226 2521 00 spri2 pr6|150 001304 aa 7 00006 3521 20 epp2 pr7|6,* char_cnt 001305 aa 6 00230 2521 00 spri2 pr6|152 001306 aa 7 00010 3521 20 epp2 pr7|8,* char_cnt1 001307 aa 6 00232 2521 00 spri2 pr6|154 001310 aa 6 00116 3521 20 epp2 pr6|78,* return_code 001311 aa 6 00234 2521 00 spri2 pr6|156 001312 aa 6 00222 6211 00 eax1 pr6|146 001313 aa 024000 4310 07 fld 10240,dl 001314 aa 6 00044 3701 20 epp4 pr6|36,* 001315 la 4 00036 3521 20 epp2 pr4|30,* iox_$get_line 001316 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 310 go to exit; 001317 aa 777020 7100 04 tra -496,ic 000337 ENTRY TO read_record STATEMENT 1 ON LINE 314 read_record: entry (iocb_ptr, char_ptr, char_cnt, char_cnt1, return_code); 001320 ta 001201000000 001321 da 000327300000 001322 aa 000440 6270 00 eax7 288 001323 aa 7 00034 3521 20 epp2 pr7|28,* 001324 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 001325 aa 000012000000 001326 aa 000000000000 001327 aa 6 00032 3735 20 epp7 pr6|26,* 001330 aa 7 00012 3715 20 epp5 pr7|10,* 001331 aa 6 00116 6515 00 spri5 pr6|78 STATEMENT 1 ON LINE 317 call setup; 001332 aa 000447 6700 04 tsp4 295,ic 002001 STATEMENT 1 ON LINE 318 inner_iocbp = validate_io (iocb_ptr); 001333 aa 6 00032 3735 20 epp7 pr6|26,* 001334 aa 7 00002 3521 20 epp2 pr7|2,* iocb_ptr 001335 aa 6 00224 2521 00 spri2 pr6|148 001336 aa 6 00100 3521 00 epp2 pr6|64 inner_iocbp 001337 aa 6 00226 2521 00 spri2 pr6|150 001340 aa 6 00222 3521 00 epp2 pr6|146 001341 aa 010000 4310 07 fld 4096,dl 001342 aa 2 00000 7571 00 staq pr2|0 001343 aa 000466 6700 04 tsp4 310,ic 002031 STATEMENT 1 ON LINE 319 char_cnt1 = 0; 001344 aa 6 00032 3735 20 epp7 pr6|26,* 001345 aa 7 00010 4501 20 stz pr7|8,* char_cnt1 STATEMENT 1 ON LINE 320 call iox_$read_record (inner_iocbp, char_ptr, char_cnt, char_cnt1, return_code); 001346 aa 6 00100 3521 00 epp2 pr6|64 inner_iocbp 001347 aa 6 00224 2521 00 spri2 pr6|148 001350 aa 7 00004 3521 20 epp2 pr7|4,* char_ptr 001351 aa 6 00226 2521 00 spri2 pr6|150 001352 aa 7 00006 3521 20 epp2 pr7|6,* char_cnt 001353 aa 6 00230 2521 00 spri2 pr6|152 001354 aa 7 00010 3521 20 epp2 pr7|8,* char_cnt1 001355 aa 6 00232 2521 00 spri2 pr6|154 001356 aa 6 00116 3521 20 epp2 pr6|78,* return_code 001357 aa 6 00234 2521 00 spri2 pr6|156 001360 aa 6 00222 6211 00 eax1 pr6|146 001361 aa 024000 4310 07 fld 10240,dl 001362 aa 6 00044 3701 20 epp4 pr6|36,* 001363 la 4 00054 3521 20 epp2 pr4|44,* iox_$read_record 001364 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 321 go to exit; 001365 aa 776752 7100 04 tra -534,ic 000337 ENTRY TO write_record STATEMENT 1 ON LINE 325 write_record: entry (iocb_ptr, char_ptr, char_cnt, return_code); 001366 ta 001133000000 001367 da 000332300000 001370 aa 000440 6270 00 eax7 288 001371 aa 7 00034 3521 20 epp2 pr7|28,* 001372 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 001373 aa 000010000000 001374 aa 000000000000 001375 aa 6 00032 3735 20 epp7 pr6|26,* 001376 aa 7 00010 3715 20 epp5 pr7|8,* 001377 aa 6 00116 6515 00 spri5 pr6|78 STATEMENT 1 ON LINE 328 call setup; 001400 aa 000401 6700 04 tsp4 257,ic 002001 STATEMENT 1 ON LINE 329 inner_iocbp = validate_io (iocb_ptr); 001401 aa 6 00032 3735 20 epp7 pr6|26,* 001402 aa 7 00002 3521 20 epp2 pr7|2,* iocb_ptr 001403 aa 6 00224 2521 00 spri2 pr6|148 001404 aa 6 00100 3521 00 epp2 pr6|64 inner_iocbp 001405 aa 6 00226 2521 00 spri2 pr6|150 001406 aa 6 00222 3521 00 epp2 pr6|146 001407 aa 010000 4310 07 fld 4096,dl 001410 aa 2 00000 7571 00 staq pr2|0 001411 aa 000420 6700 04 tsp4 272,ic 002031 STATEMENT 1 ON LINE 330 call iox_$write_record (inner_iocbp, char_ptr, char_cnt, return_code); 001412 aa 6 00100 3521 00 epp2 pr6|64 inner_iocbp 001413 aa 6 00224 2521 00 spri2 pr6|148 001414 aa 6 00032 3735 20 epp7 pr6|26,* 001415 aa 7 00004 3521 20 epp2 pr7|4,* char_ptr 001416 aa 6 00226 2521 00 spri2 pr6|150 001417 aa 7 00006 3521 20 epp2 pr7|6,* char_cnt 001420 aa 6 00230 2521 00 spri2 pr6|152 001421 aa 6 00116 3521 20 epp2 pr6|78,* return_code 001422 aa 6 00232 2521 00 spri2 pr6|154 001423 aa 6 00222 6211 00 eax1 pr6|146 001424 aa 020000 4310 07 fld 8192,dl 001425 aa 6 00044 3701 20 epp4 pr6|36,* 001426 la 4 00062 3521 20 epp2 pr4|50,* iox_$write_record 001427 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 331 go to exit; 001430 aa 776707 7100 04 tra -569,ic 000337 ENTRY TO rewrite_record STATEMENT 1 ON LINE 335 rewrite_record: entry (iocb_ptr, char_ptr, char_cnt, return_code); 001431 ta 001133000000 001432 da 000335300000 001433 aa 000440 6270 00 eax7 288 001434 aa 7 00034 3521 20 epp2 pr7|28,* 001435 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 001436 aa 000010000000 001437 aa 000000000000 001440 aa 6 00032 3735 20 epp7 pr6|26,* 001441 aa 7 00010 3715 20 epp5 pr7|8,* 001442 aa 6 00116 6515 00 spri5 pr6|78 STATEMENT 1 ON LINE 338 call setup; 001443 aa 000336 6700 04 tsp4 222,ic 002001 STATEMENT 1 ON LINE 339 inner_iocbp = validate_io (iocb_ptr); 001444 aa 6 00032 3735 20 epp7 pr6|26,* 001445 aa 7 00002 3521 20 epp2 pr7|2,* iocb_ptr 001446 aa 6 00224 2521 00 spri2 pr6|148 001447 aa 6 00100 3521 00 epp2 pr6|64 inner_iocbp 001450 aa 6 00226 2521 00 spri2 pr6|150 001451 aa 6 00222 3521 00 epp2 pr6|146 001452 aa 010000 4310 07 fld 4096,dl 001453 aa 2 00000 7571 00 staq pr2|0 001454 aa 000355 6700 04 tsp4 237,ic 002031 STATEMENT 1 ON LINE 340 call iox_$rewrite_record (inner_iocbp, char_ptr, char_cnt, return_code); 001455 aa 6 00100 3521 00 epp2 pr6|64 inner_iocbp 001456 aa 6 00224 2521 00 spri2 pr6|148 001457 aa 6 00032 3735 20 epp7 pr6|26,* 001460 aa 7 00004 3521 20 epp2 pr7|4,* char_ptr 001461 aa 6 00226 2521 00 spri2 pr6|150 001462 aa 7 00006 3521 20 epp2 pr7|6,* char_cnt 001463 aa 6 00230 2521 00 spri2 pr6|152 001464 aa 6 00116 3521 20 epp2 pr6|78,* return_code 001465 aa 6 00232 2521 00 spri2 pr6|154 001466 aa 6 00222 6211 00 eax1 pr6|146 001467 aa 020000 4310 07 fld 8192,dl 001470 aa 6 00044 3701 20 epp4 pr6|36,* 001471 la 4 00056 3521 20 epp2 pr4|46,* iox_$rewrite_record 001472 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 341 go to exit; 001473 aa 776644 7100 04 tra -604,ic 000337 ENTRY TO position STATEMENT 1 ON LINE 345 position: entry (iocb_ptr, postype, poscount, return_code); 001474 at 000004000015 001475 tt 000012000010 001476 ta 000013000000 001477 ta 001474000000 001500 da 000340300000 001501 aa 000440 6270 00 eax7 288 001502 aa 7 00034 3521 20 epp2 pr7|28,* 001503 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 001504 aa 000010000000 001505 aa 000000000000 001506 aa 6 00032 3735 20 epp7 pr6|26,* 001507 aa 7 00010 3715 20 epp5 pr7|8,* 001510 aa 6 00116 6515 00 spri5 pr6|78 STATEMENT 1 ON LINE 348 call setup; 001511 aa 000270 6700 04 tsp4 184,ic 002001 STATEMENT 1 ON LINE 349 inner_iocbp = validate_io (iocb_ptr); 001512 aa 6 00032 3735 20 epp7 pr6|26,* 001513 aa 7 00002 3521 20 epp2 pr7|2,* iocb_ptr 001514 aa 6 00224 2521 00 spri2 pr6|148 001515 aa 6 00100 3521 00 epp2 pr6|64 inner_iocbp 001516 aa 6 00226 2521 00 spri2 pr6|150 001517 aa 6 00222 3521 00 epp2 pr6|146 001520 aa 010000 4310 07 fld 4096,dl 001521 aa 2 00000 7571 00 staq pr2|0 001522 aa 000307 6700 04 tsp4 199,ic 002031 STATEMENT 1 ON LINE 350 return_code = 0; 001523 aa 6 00116 4501 20 stz pr6|78,* return_code STATEMENT 1 ON LINE 351 call iox_$position (inner_iocbp, postype, poscount, return_code); 001524 aa 6 00100 3521 00 epp2 pr6|64 inner_iocbp 001525 aa 6 00224 2521 00 spri2 pr6|148 001526 aa 6 00032 3735 20 epp7 pr6|26,* 001527 aa 7 00004 3521 20 epp2 pr7|4,* postype 001530 aa 6 00226 2521 00 spri2 pr6|150 001531 aa 7 00006 3521 20 epp2 pr7|6,* poscount 001532 aa 6 00230 2521 00 spri2 pr6|152 001533 aa 6 00116 3521 20 epp2 pr6|78,* return_code 001534 aa 6 00232 2521 00 spri2 pr6|154 001535 aa 6 00222 6211 00 eax1 pr6|146 001536 aa 020000 4310 07 fld 8192,dl 001537 aa 6 00044 3701 20 epp4 pr6|36,* 001540 la 4 00044 3521 20 epp2 pr4|36,* iox_$position 001541 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 352 go to exit; 001542 aa 776575 7100 04 tra -643,ic 000337 ENTRY TO seek_key STATEMENT 1 ON LINE 356 seek_key: entry (iocb_ptr, key, char_cnt, return_code); 001543 ta 000757000000 001544 da 000343300000 001545 aa 000440 6270 00 eax7 288 001546 aa 7 00034 3521 20 epp2 pr7|28,* 001547 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 001550 aa 000010000000 001551 aa 000000000000 001552 aa 6 00032 3735 20 epp7 pr6|26,* 001553 aa 7 00010 3715 20 epp5 pr7|8,* 001554 aa 6 00116 6515 00 spri5 pr6|78 STATEMENT 1 ON LINE 359 call setup; 001555 aa 000224 6700 04 tsp4 148,ic 002001 STATEMENT 1 ON LINE 360 inner_iocbp = validate_io (iocb_ptr); 001556 aa 6 00032 3735 20 epp7 pr6|26,* 001557 aa 7 00002 3521 20 epp2 pr7|2,* iocb_ptr 001560 aa 6 00224 2521 00 spri2 pr6|148 001561 aa 6 00100 3521 00 epp2 pr6|64 inner_iocbp 001562 aa 6 00226 2521 00 spri2 pr6|150 001563 aa 6 00222 3521 00 epp2 pr6|146 001564 aa 010000 4310 07 fld 4096,dl 001565 aa 2 00000 7571 00 staq pr2|0 001566 aa 000243 6700 04 tsp4 163,ic 002031 STATEMENT 1 ON LINE 361 call iox_$seek_key (inner_iocbp, key, char_cnt, return_code); 001567 aa 6 00100 3521 00 epp2 pr6|64 inner_iocbp 001570 aa 6 00224 2521 00 spri2 pr6|148 001571 aa 6 00032 3735 20 epp7 pr6|26,* 001572 aa 7 00004 3521 20 epp2 pr7|4,* key 001573 aa 6 00226 2521 00 spri2 pr6|150 001574 aa 7 00006 3521 20 epp2 pr7|6,* char_cnt 001575 aa 6 00230 2521 00 spri2 pr6|152 001576 aa 6 00116 3521 20 epp2 pr6|78,* return_code 001577 aa 6 00232 2521 00 spri2 pr6|154 001600 aa 6 00222 6211 00 eax1 pr6|146 001601 aa 020000 4310 07 fld 8192,dl 001602 aa 6 00044 3701 20 epp4 pr6|36,* 001603 la 4 00060 3521 20 epp2 pr4|48,* iox_$seek_key 001604 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 362 go to exit; 001605 aa 776532 7100 04 tra -678,ic 000337 ENTRY TO allow_cross STATEMENT 1 ON LINE 365 allow_cross: entry (x, v_arg, return_code); 001606 at 000003000014 001607 tt 000012000013 001610 ta 001606000000 001611 da 000351300000 001612 aa 000440 6270 00 eax7 288 001613 aa 7 00034 3521 20 epp2 pr7|28,* 001614 aa 2 01046 2721 00 tsp2 pr2|550 ext_entry_desc 001615 aa 000006000000 001616 aa 000000000000 001617 aa 6 00042 3735 20 epp7 pr6|34,* 001620 aa 7 00000 2361 20 ldq pr7|0,* 001621 aa 000002 6040 04 tmi 2,ic 001623 001622 aa 777777 3760 07 anq 262143,dl 001623 aa 0 00250 3761 00 anq pr0|168 = 000077777777 001624 aa 6 00174 7561 00 stq pr6|124 001625 aa 6 00032 3715 20 epp5 pr6|26,* 001626 aa 5 00006 3535 20 epp3 pr5|6,* 001627 aa 6 00116 2535 00 spri3 pr6|78 STATEMENT 1 ON LINE 372 begin; BEGIN BLOCK 1 STATEMENT 1 ON LINE 376 init_size = 0; 001630 aa 6 00132 4501 00 stz pr6|90 init_size STATEMENT 1 ON LINE 377 allocate init_info; 001631 aa 6 00132 2351 00 lda pr6|90 init_size 001632 aa 000044 7330 00 lrs 36 001633 aa 000002 0330 07 adl 2,dl 001634 aa 0 01403 7001 00 tsx0 pr0|771 alloc_storage 001635 aa 777774 7100 04 tra -4,ic 001631 001636 aa 6 00130 2521 00 spri2 pr6|88 init_info_ptr 001637 aa 6 00132 2361 00 ldq pr6|90 init_size 001640 aa 2 00000 7561 00 stq pr2|0 init_info.size STATEMENT 1 ON LINE 378 init_info.size = size (block); 001641 aa 000023 2360 07 ldq 19,dl 001642 aa 2 00000 7561 00 stq pr2|0 init_info.size STATEMENT 1 ON LINE 379 init_info.type = NO_INIT; 001643 aa 000000 2360 07 ldq 0,dl 001644 aa 2 00001 7561 00 stq pr2|1 init_info.type STATEMENT 1 ON LINE 380 was_found = "0"b; 001645 aa 6 00104 4501 00 stz pr6|68 was_found STATEMENT 1 ON LINE 384 call set_ext_variable_ (rtrim (var_name (x)), addr (init_info), stackbaseptr (), was_found, node_ptr, return_code); 001646 aa 6 00032 3735 20 epp7 pr6|26,* 001647 aa 7 00002 3521 20 epp2 pr7|2,* x 001650 aa 6 00324 2521 00 spri2 pr6|212 001651 aa 6 00302 3521 00 epp2 pr6|194 001652 aa 6 00326 2521 00 spri2 pr6|214 001653 aa 6 00042 3715 20 epp5 pr6|34,* 001654 aa 5 00000 3521 20 epp2 pr5|0,* 001655 aa 6 00330 2521 00 spri2 pr6|216 001656 aa 776127 3520 04 epp2 -937,ic 000005 = 526000000100 001657 aa 6 00332 2521 00 spri2 pr6|218 001660 aa 6 00322 3521 00 epp2 pr6|210 001661 aa 010000 4310 07 fld 4096,dl 001662 aa 2 00000 7571 00 staq pr2|0 001663 aa 000437 6700 04 tsp4 287,ic 002322 001664 aa 000 000 165 500 tctr (pr) 001665 aa 6 00302 00 0100 desc9a pr6|194,64 001666 aa 0 76605 0001 00 arg pr0|-635 = 777777777777 001667 aa 6 00056 0001 00 arg pr6|46 001670 aa 6 00056 2361 00 ldq pr6|46 001671 aa 0 00242 3761 00 anq pr0|162 = 000777777777 001672 aa 6 00301 7561 00 stq pr6|193 001673 aa 000100 2360 07 ldq 64,dl 001674 aa 6 00301 1761 00 sbq pr6|193 001675 aa 6 00301 7561 00 stq pr6|193 001676 aa 524000 2760 03 orq 174080,du 001677 aa 6 00300 7561 00 stq pr6|192 001700 aa 6 00301 2361 00 ldq pr6|193 001701 aa 0 00551 7001 00 tsx0 pr0|361 alloc_char_temp 001702 aa 6 00346 2521 00 spri2 pr6|230 001703 aa 040 140 100 540 mlr (pr,rl),(pr,rl),fill(040) 001704 aa 6 00302 00 0006 desc9a pr6|194,ql 001705 aa 2 00000 00 0006 desc9a pr2|0,ql 001706 aa 6 00130 3735 20 epp7 pr6|88,* init_info 001707 aa 6 00340 6535 00 spri7 pr6|224 001710 aa 6 00000 3511 00 epbp1 pr6|0 001711 aa 6 00342 2515 00 spri1 pr6|226 001712 aa 6 00340 3521 00 epp2 pr6|224 001713 aa 6 00350 2521 00 spri2 pr6|232 001714 aa 6 00342 3521 00 epp2 pr6|226 001715 aa 6 00352 2521 00 spri2 pr6|234 001716 aa 6 00104 3521 00 epp2 pr6|68 was_found 001717 aa 6 00354 2521 00 spri2 pr6|236 001720 aa 6 00106 3521 00 epp2 pr6|70 node_ptr 001721 aa 6 00356 2521 00 spri2 pr6|238 001722 aa 6 00116 3521 20 epp2 pr6|78,* return_code 001723 aa 6 00360 2521 00 spri2 pr6|240 001724 aa 6 00300 3521 00 epp2 pr6|192 001725 aa 6 00362 2521 00 spri2 pr6|242 001726 aa 776067 3520 04 epp2 -969,ic 000015 = 464000000000 001727 aa 6 00364 2521 00 spri2 pr6|244 001730 aa 6 00366 2521 00 spri2 pr6|246 001731 aa 6 00372 2521 00 spri2 pr6|250 001732 aa 776057 3520 04 epp2 -977,ic 000011 = 514000000001 001733 aa 6 00370 2521 00 spri2 pr6|248 001734 aa 776057 3520 04 epp2 -977,ic 000013 = 404000000043 001735 aa 6 00374 2521 00 spri2 pr6|252 001736 aa 6 00344 6211 00 eax1 pr6|228 001737 aa 030000 4310 07 fld 12288,dl 001740 aa 6 00044 3701 20 epp4 pr6|36,* 001741 la 4 00010 3521 20 epp2 pr4|8,* set_ext_variable_ 001742 aa 0 00622 7001 00 tsx0 pr0|402 call_ext_out_desc STATEMENT 1 ON LINE 386 if return_code ^= 0 then go to exit; 001743 aa 0 01014 7001 00 tsx0 pr0|524 shorten_stack 001744 aa 6 00116 2361 20 ldq pr6|78,* return_code 001745 aa 776372 6010 04 tnz -774,ic 000337 STATEMENT 1 ON LINE 388 blp = node_ptr -> variable_node.vbl_ptr; 001746 aa 6 00106 3735 20 epp7 pr6|70,* node_ptr 001747 aa 7 00004 3735 20 epp7 pr7|4,* variable_node.vbl_ptr 001750 aa 6 00102 6535 00 spri7 pr6|66 blp STATEMENT 1 ON LINE 389 end; END BLOCK 1 STATEMENT 1 ON LINE 391 if ^was_found then do; 001751 aa 6 00104 2351 00 lda pr6|68 was_found 001752 aa 400000 3150 03 cana 131072,du 001753 aa 000013 6010 04 tnz 11,ic 001766 STATEMENT 1 ON LINE 393 block.open_count, block.attach_count = 0; 001754 aa 7 00022 4501 00 stz pr7|18 block.open_count 001755 aa 7 00021 4501 00 stz pr7|17 block.attach_count STATEMENT 1 ON LINE 394 block.sentinel = BLOCK_SENTINEL; 001756 aa 776022 2370 04 ldaq -1006,ic 000000 = 103162157163 163040122151 001757 aa 7 00000 7551 00 sta pr7|0 block.sentinel 001760 aa 7 00001 7561 00 stq pr7|1 block.sentinel 001761 aa 776021 2370 04 ldaq -1007,ic 000002 = 156147040111 057117040040 001762 aa 7 00002 7551 00 sta pr7|2 block.sentinel 001763 aa 7 00003 7561 00 stq pr7|3 block.sentinel STATEMENT 1 ON LINE 395 block.head_ptr = addr (block); 001764 aa 7 00000 3715 00 epp5 pr7|0 block 001765 aa 7 00014 6515 00 spri5 pr7|12 block.head_ptr STATEMENT 1 ON LINE 396 end; STATEMENT 1 ON LINE 397 block.name = x; 001766 aa 6 00032 3715 20 epp5 pr6|26,* 001767 aa 5 00002 3535 20 epp3 pr5|2,* 001770 aa 6 00174 2351 00 lda pr6|124 001771 aa 040 100 100 540 mlr (pr,rl),(pr),fill(040) 001772 aa 3 00000 00 0005 desc9a pr3|0,al x 001773 aa 7 00004 00 0040 desc9a pr7|4,32 block.name STATEMENT 1 ON LINE 398 block.permission_granted = "1"b; 001774 aa 400000 2350 03 lda 131072,du 001775 aa 7 00017 7551 00 sta pr7|15 block.permission_granted STATEMENT 1 ON LINE 399 block.validation = v_arg; 001776 aa 5 00004 2361 20 ldq pr5|4,* v_arg 001777 aa 7 00016 7561 00 stq pr7|14 block.validation STATEMENT 1 ON LINE 402 return; 002000 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 488 end cross_ring_io_; BEGIN PROCEDURE setup ENTRY TO setup STATEMENT 1 ON LINE 405 setup: proc; 002001 aa 6 00134 6501 00 spri4 pr6|92 STATEMENT 1 ON LINE 408 call cu_$level_get (save_level); 002002 aa 6 00110 3521 00 epp2 pr6|72 save_level 002003 aa 6 00400 2521 00 spri2 pr6|256 002004 aa 6 00376 6211 00 eax1 pr6|254 002005 aa 004000 4310 07 fld 2048,dl 002006 aa 6 00044 3701 20 epp4 pr6|36,* 002007 la 4 00014 3521 20 epp2 pr4|12,* cu_$level_get 002010 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 409 call cu_$level_set (get_ring_ ()); 002011 aa 6 00402 3521 00 epp2 pr6|258 002012 aa 6 00400 2521 00 spri2 pr6|256 002013 aa 6 00376 6211 00 eax1 pr6|254 002014 aa 004000 4310 07 fld 2048,dl 002015 aa 6 00044 3701 20 epp4 pr6|36,* 002016 la 4 00012 3521 20 epp2 pr4|10,* get_ring_ 002017 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out 002020 aa 6 00402 3521 00 epp2 pr6|258 002021 aa 6 00400 2521 00 spri2 pr6|256 002022 aa 6 00376 6211 00 eax1 pr6|254 002023 aa 004000 4310 07 fld 2048,dl 002024 aa 6 00044 3701 20 epp4 pr6|36,* 002025 la 4 00016 3521 20 epp2 pr4|14,* cu_$level_set 002026 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 410 return_code = 0; 002027 aa 6 00116 4501 20 stz pr6|78,* return_code STATEMENT 1 ON LINE 412 end setup; 002030 aa 6 00134 6101 00 rtcd pr6|92 END PROCEDURE setup BEGIN PROCEDURE validate_io ENTRY TO validate_io STATEMENT 1 ON LINE 414 validate_io: procedure (iocbp) returns (pointer); 002031 aa 6 00142 6501 00 spri4 pr6|98 002032 aa 6 00144 2521 00 spri2 pr6|100 STATEMENT 1 ON LINE 419 call validate_index (iocbp -> iocb.actual_iocb_ptr -> iocb.attach_data_ptr -> attach_data.inner_index, inner_iocb); 002033 aa 2 00002 3735 20 epp7 pr2|2,* iocbp 002034 aa 7 00000 3735 20 epp7 pr7|0,* iocbp 002035 aa 7 00012 3715 20 epp5 pr7|10,* iocb.actual_iocb_ptr 002036 aa 5 00016 3535 20 epp3 pr5|14,* iocb.attach_data_ptr 002037 aa 3 00071 3521 00 epp2 pr3|57 attach_data.inner_index 002040 aa 6 00406 2521 00 spri2 pr6|262 002041 aa 6 00150 3521 00 epp2 pr6|104 inner_iocb 002042 aa 6 00410 2521 00 spri2 pr6|264 002043 aa 6 00404 6211 00 eax1 pr6|260 002044 aa 010000 4310 07 fld 4096,dl 002045 aa 000007 3520 04 epp2 7,ic 002054 = 000140627000 002046 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 421 return (inner_iocb); 002047 aa 6 00150 3735 20 epp7 pr6|104,* inner_iocb 002050 aa 6 00144 3715 20 epp5 pr6|100,* 002051 aa 5 00004 6535 20 spri7 pr5|4,* 002052 aa 6 00142 6101 00 rtcd pr6|98 STATEMENT 1 ON LINE 422 end validate_io; END PROCEDURE validate_io BEGIN PROCEDURE validate_index ENTRY TO validate_index STATEMENT 1 ON LINE 424 validate_index: procedure (bits, iocb_ptr); 002053 da 000360200000 002054 aa 000140 6270 00 eax7 96 002055 aa 7 00034 3521 20 epp2 pr7|28,* 002056 aa 2 01047 2721 00 tsp2 pr2|551 int_entry 002057 aa 000004000000 002060 aa 000000000000 STATEMENT 1 ON LINE 431 unspec (val_data) = bits; 002061 aa 6 00032 3735 20 epp7 pr6|26,* 002062 aa 7 00002 3715 20 epp5 pr7|2,* 002063 aa 5 00000 2351 00 lda pr5|0 bits 002064 aa 5 00001 2361 00 ldq pr5|1 bits 002065 aa 6 00100 7571 00 staq pr6|64 STATEMENT 1 ON LINE 432 on any_other go to BAD_POINTER; 002066 aa 000011 7260 07 lxl6 9,dl 002067 aa 775733 3520 04 epp2 -1061,ic 000022 = 141156171137 002070 aa 0 00717 7001 00 tsx0 pr0|463 enable_op 002071 aa 000004 7100 04 tra 4,ic 002075 002072 aa 000102000000 002073 aa 000012 7100 04 tra 10,ic 002105 BEGIN CONDITION any_other.1 ENTRY TO any_other.1 STATEMENT 1 ON LINE 432 on any_other go to BAD_POINTER; 002074 da 000366200000 002075 aa 000100 6270 00 eax7 64 002076 aa 7 00034 3521 20 epp2 pr7|28,* 002077 aa 2 01047 2721 00 tsp2 pr2|551 int_entry 002100 aa 000000000000 002101 aa 000000000000 002102 aa 000047 3520 04 epp2 39,ic 002151 = 600044370120 002103 aa 000001 7270 07 lxl7 1,dl 002104 aa 0 00657 7101 00 tra pr0|431 tra_ext_1 END CONDITION any_other.1 STATEMENT 1 ON LINE 434 if cross_ring_io_block_table_ptr_ = null () then goto BAD_POINTER; 002105 aa 6 00044 3701 20 epp4 pr6|36,* 002106 la 4 00020 2361 20 ldq pr4|16,* cross_ring_io_block_table_ptr_ 002107 aa 000253 1160 04 cmpq 171,ic 002362 = 007777000001 002110 aa 000041 6000 04 tze 33,ic 002151 STATEMENT 1 ON LINE 437 if ^found_block (unspec (val_data)) | val_data.block_ptr -> block.validation < save_level /** **/ | val_data.block_ptr -> block.name ^= val_data.iocb_ptr -> iocb.name /** **/ | val_data.block_ptr -> block.sentinel ^= BLOCK_SENTINEL /** **/ | ^val_data.block_ptr -> block.permission_granted then do; 002111 aa 6 00101 7671 00 lprp7 pr6|65 val_data.block_ptr 002112 aa 7 00017 2351 00 lda pr7|15 block.permission_granted 002113 aa 0 00002 6751 00 era pr0|2 = 400000000000 002114 aa 6 00120 7551 00 sta pr6|80 002115 aa 040 004 106 500 cmpc (pr),(ic),fill(040) 002116 aa 7 00000 00 0020 desc9a pr7|0,16 block.sentinel 002117 aa 775663 00 0020 desc9a -1101,16 000000 = 103162157163 002120 aa 0 00515 7001 00 tsx0 pr0|333 r_ne_as 002121 aa 6 00121 7551 00 sta pr6|81 002122 aa 6 00100 7651 00 lprp5 pr6|64 val_data.iocb_ptr 002123 aa 040 100 106 500 cmpc (pr),(pr),fill(040) 002124 aa 7 00004 00 0040 desc9a pr7|4,32 block.name 002125 aa 5 00001 00 0040 desc9a pr5|1,32 iocb.name 002126 aa 0 00515 7001 00 tsx0 pr0|333 r_ne_as 002127 aa 6 00122 7551 00 sta pr6|82 002130 aa 7 00016 2361 00 ldq pr7|14 block.validation 002131 aa 6 00040 3535 20 epp3 pr6|32,* 002132 aa 3 00110 1161 00 cmpq pr3|72 save_level 002133 aa 0 00474 7001 00 tsx0 pr0|316 r_l_a 002134 aa 6 00123 7551 00 sta pr6|83 002135 aa 6 00100 2371 00 ldaq pr6|64 002136 aa 6 00124 7571 00 staq pr6|84 002137 aa 000215 3520 04 epp2 141,ic 002354 = 000004000000 002140 aa 000027 6700 04 tsp4 23,ic 002167 002141 aa 6 00126 2351 00 lda pr6|86 002142 aa 0 00002 3771 00 anaq pr0|2 = 400000000000 000000000000 002143 aa 0 00002 6751 00 era pr0|2 = 400000000000 002144 aa 6 00123 2751 00 ora pr6|83 002145 aa 6 00122 2751 00 ora pr6|82 002146 aa 6 00121 2751 00 ora pr6|81 002147 aa 6 00120 2751 00 ora pr6|80 002150 aa 000010 6000 04 tze 8,ic 002160 STATEMENT 1 ON LINE 445 BAD_POINTER: return_code = error_table_$io_no_permission; 002151 aa 6 00044 3701 20 epp4 pr6|36,* 002152 la 4 00022 2361 20 ldq pr4|18,* error_table_$io_no_permission 002153 aa 6 00040 3735 20 epp7 pr6|32,* 002154 aa 7 00116 7561 20 stq pr7|78,* return_code STATEMENT 1 ON LINE 447 go to exit; 002155 aa 776162 3520 04 epp2 -910,ic 000337 = 600110352100 002156 aa 000001 7270 07 lxl7 1,dl 002157 aa 0 00657 7101 00 tra pr0|431 tra_ext_1 STATEMENT 1 ON LINE 448 end; STATEMENT 1 ON LINE 449 iocb_ptr = val_data.iocb_ptr; 002160 aa 6 00100 7671 00 lprp7 pr6|64 val_data.iocb_ptr 002161 aa 6 00032 3715 20 epp5 pr6|26,* 002162 aa 5 00004 6535 20 spri7 pr5|4,* iocb_ptr STATEMENT 1 ON LINE 450 blp = val_data.block_ptr; 002163 aa 6 00101 7631 00 lprp3 pr6|65 val_data.block_ptr 002164 aa 6 00040 3515 20 epp1 pr6|32,* 002165 aa 1 00102 2535 00 spri3 pr1|66 blp STATEMENT 1 ON LINE 451 return; 002166 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 464 end validate_index; BEGIN PROCEDURE found_block ENTRY TO found_block STATEMENT 1 ON LINE 453 found_block: procedure (ix) returns (bit (1) aligned); 002167 aa 6 00110 6501 00 spri4 pr6|72 002170 aa 6 00112 2521 00 spri2 pr6|74 STATEMENT 1 ON LINE 457 do i = 1 to hbound (block_table.known, 1); 002171 aa 6 00044 3701 20 epp4 pr6|36,* 002172 la 4 00020 7671 20 lprp7 pr4|16,* cross_ring_io_block_table_ptr_ 002173 aa 7 00000 2361 00 ldq pr7|0 block_table.count 002174 aa 6 00117 7561 00 stq pr6|79 002175 aa 000001 2360 07 ldq 1,dl 002176 aa 6 00116 7561 00 stq pr6|78 i 002177 aa 000000 0110 03 nop 0,du 002200 aa 6 00116 2361 00 ldq pr6|78 i 002201 aa 6 00117 1161 00 cmpq pr6|79 002202 aa 000021 6054 04 tpnz 17,ic 002223 STATEMENT 1 ON LINE 458 if block_table.known (i) = ix then return ("1"b); 002203 aa 6 00044 3701 20 epp4 pr6|36,* 002204 la 4 00020 7671 20 lprp7 pr4|16,* cross_ring_io_block_table_ptr_ 002205 aa 000001 7360 00 qls 1 002206 aa 7 77777 2351 06 lda pr7|-1,ql block_table.known 002207 aa 7 00000 2361 06 ldq pr7|0,ql block_table.known 002210 aa 6 00112 3715 20 epp5 pr6|74,* 002211 aa 5 00002 3535 20 epp3 pr5|2,* 002212 aa 3 00000 1151 00 cmpa pr3|0 ix 002213 aa 000002 6010 04 tnz 2,ic 002215 002214 aa 3 00001 1161 00 cmpq pr3|1 ix 002215 aa 000004 6010 04 tnz 4,ic 002221 002216 aa 400000 2350 03 lda 131072,du 002217 aa 5 00004 7551 20 sta pr5|4,* 002220 aa 6 00110 6101 00 rtcd pr6|72 STATEMENT 1 ON LINE 460 end; 002221 aa 6 00116 0541 00 aos pr6|78 i 002222 aa 777756 7100 04 tra -18,ic 002200 STATEMENT 1 ON LINE 461 return ("0"b); 002223 aa 6 00112 3735 20 epp7 pr6|74,* 002224 aa 7 00004 4501 20 stz pr7|4,* 002225 aa 6 00110 6101 00 rtcd pr6|72 STATEMENT 1 ON LINE 462 end found_block; END PROCEDURE found_block END PROCEDURE validate_index BEGIN PROCEDURE grow_block_table ENTRY TO grow_block_table STATEMENT 1 ON LINE 466 grow_block_table: procedure; 002226 aa 6 00152 6501 00 spri4 pr6|106 STATEMENT 1 ON LINE 471 block_table_count = block_table.count * 2; 002227 aa 6 00044 3701 20 epp4 pr6|36,* 002230 la 4 00020 7671 20 lprp7 pr4|16,* cross_ring_io_block_table_ptr_ 002231 aa 7 00000 2361 00 ldq pr7|0 block_table.count 002232 aa 000001 7360 00 qls 1 002233 aa 6 00114 7561 00 stq pr6|76 block_table_count STATEMENT 1 ON LINE 472 allocate block_table set (new_bt_p); 002234 aa 6 00114 2361 00 ldq pr6|76 block_table_count 002235 aa 000001 7360 00 qls 1 002236 aa 000001 0760 07 adq 1,dl 002237 aa 0 01403 7001 00 tsx0 pr0|771 alloc_storage 002240 aa 777774 7100 04 tra -4,ic 002234 002241 aa 6 00160 2521 00 spri2 pr6|112 new_bt_p 002242 aa 6 00114 2361 00 ldq pr6|76 block_table_count 002243 aa 2 00000 7561 00 stq pr2|0 block_table.count STATEMENT 1 ON LINE 473 new_bt_p -> block_table.known = ""b; 002244 aa 000001 2360 07 ldq 1,dl 002245 aa 6 00163 7561 00 stq pr6|115 002246 aa 6 00163 2361 00 ldq pr6|115 002247 aa 000001 7360 00 qls 1 002250 aa 000000 6270 06 eax7 0,ql 002251 aa 775545 2370 04 ldaq -1179,ic 000016 = 000000000000 000000000000 002252 aa 6 00160 3735 20 epp7 pr6|112,* new_bt_p 002253 aa 7 77777 7551 17 sta pr7|-1,7 block_table.known 002254 aa 7 00000 7561 17 stq pr7|0,7 block_table.known 002255 aa 6 00163 2361 00 ldq pr6|115 002256 aa 6 00163 0541 00 aos pr6|115 002257 aa 7 00000 1161 00 cmpq pr7|0 block_table.count 002260 aa 777766 6040 04 tmi -10,ic 002246 STATEMENT 1 ON LINE 474 do i = 1 to hbound (block_table.known, 1); 002261 aa 6 00044 3701 20 epp4 pr6|36,* 002262 la 4 00020 7651 20 lprp5 pr4|16,* cross_ring_io_block_table_ptr_ 002263 aa 5 00000 2361 00 ldq pr5|0 block_table.count 002264 aa 6 00164 7561 00 stq pr6|116 002265 aa 000001 2360 07 ldq 1,dl 002266 aa 6 00162 7561 00 stq pr6|114 i 002267 aa 000000 0110 03 nop 0,du 002270 aa 6 00162 2361 00 ldq pr6|114 i 002271 aa 6 00164 1161 00 cmpq pr6|116 002272 aa 000014 6054 04 tpnz 12,ic 002306 STATEMENT 1 ON LINE 475 new_bt_p -> block_table.known (i) = block_table.known (i); 002273 aa 000001 7360 00 qls 1 002274 aa 6 00044 3701 20 epp4 pr6|36,* 002275 la 4 00020 7671 20 lprp7 pr4|16,* cross_ring_io_block_table_ptr_ 002276 aa 000000 6270 06 eax7 0,ql 002277 aa 7 77777 2351 06 lda pr7|-1,ql block_table.known 002300 aa 7 00000 2361 06 ldq pr7|0,ql block_table.known 002301 aa 6 00160 3715 20 epp5 pr6|112,* new_bt_p 002302 aa 5 77777 7551 17 sta pr5|-1,7 block_table.known 002303 aa 5 00000 7561 17 stq pr5|0,7 block_table.known STATEMENT 1 ON LINE 476 end; 002304 aa 6 00162 0541 00 aos pr6|114 i 002305 aa 777763 7100 04 tra -13,ic 002270 STATEMENT 1 ON LINE 477 free block_table; 002306 aa 6 00044 3701 20 epp4 pr6|36,* 002307 la 4 00020 7671 20 lprp7 pr4|16,* cross_ring_io_block_table_ptr_ 002310 aa 7 00000 2361 00 ldq pr7|0 block_table.count 002311 aa 000001 7360 00 qls 1 002312 aa 000001 0760 07 adq 1,dl 002313 aa 6 00416 3715 00 epp5 pr6|270 002314 aa 6 00416 6535 00 spri7 pr6|270 002315 aa 0 01404 7001 00 tsx0 pr0|772 op_freen_ STATEMENT 1 ON LINE 478 cross_ring_io_block_table_ptr_ = new_bt_p; 002316 aa 6 00160 3735 20 epp7 pr6|112,* new_bt_p 002317 aa 6 00044 3701 20 epp4 pr6|36,* 002320 la 4 00020 5471 20 sprp7 pr4|16,* cross_ring_io_block_table_ptr_ STATEMENT 1 ON LINE 479 return; 002321 aa 6 00152 6101 00 rtcd pr6|106 STATEMENT 1 ON LINE 480 end grow_block_table; END PROCEDURE grow_block_table BEGIN PROCEDURE var_name ENTRY TO var_name STATEMENT 1 ON LINE 482 var_name: procedure (sname) returns (character (64)); 002322 aa 6 00166 6501 00 spri4 pr6|118 002323 aa 6 00170 2521 00 spri2 pr6|120 002324 aa 2 00002 3521 01 epp2 pr2|2,au 002325 aa 6 00172 2521 00 spri2 pr6|122 002326 aa 2 00000 2361 20 ldq pr2|0,* 002327 aa 000002 6040 04 tmi 2,ic 002331 002330 aa 777777 3760 07 anq 262143,dl 002331 aa 0 00250 3761 00 anq pr0|168 = 000077777777 002332 aa 6 00420 7561 00 stq pr6|272 STATEMENT 1 ON LINE 486 return ("cross_ring_io_." || sname); 002333 aa 000017 0760 07 adq 15,dl 002334 aa 0 00551 7001 00 tsx0 pr0|361 alloc_char_temp 002335 aa 040 100 100 404 mlr (ic),(pr),fill(040) 002336 aa 775470 00 0017 desc9a -1224,15 000025 = 143162157163 002337 aa 2 00000 00 0017 desc9a pr2|0,15 002340 aa 6 00170 3735 20 epp7 pr6|120,* 002341 aa 7 00002 3715 20 epp5 pr7|2,* 002342 aa 6 00420 2351 00 lda pr6|272 002343 aa 040 140 100 540 mlr (pr,rl),(pr,rl),fill(040) 002344 aa 5 00000 00 0005 desc9a pr5|0,al sname 002345 aa 2 00003 60 0005 desc9a pr2|3(3),al 002346 aa 7 00004 3535 20 epp3 pr7|4,* 002347 aa 040 100 100 540 mlr (pr,rl),(pr),fill(040) 002350 aa 2 00000 00 0006 desc9a pr2|0,ql 002351 aa 3 00000 00 0100 desc9a pr3|0,64 002352 aa 0 01014 7001 00 tsx0 pr0|524 shorten_stack 002353 aa 6 00166 6101 00 rtcd pr6|118 STATEMENT 1 ON LINE 487 end var_name; END PROCEDURE var_name END PROCEDURE cross_ring_io_ ----------------------------------------------------------- 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