COMPILATION LISTING OF SEGMENT put_data_block_all_ Compiled by: Multics PL/I Compiler, Release 28d, of September 14, 1983 Compiled at: Honeywell LCPD Phoenix, System M Compiled on: 10/03/83 1426.3 mst Mon Options: optimize map 1 /* ****************************************************** 2* * * 3* * * 4* * Copyright (c) 1972 by Massachusetts Institute of * 5* * Technology and Honeywell Information Systems, Inc. * 6* * * 7* * * 8* ****************************************************** */ 9 10 /* written 05.30.73 by A. Downing as part of the pl1 runtime suport */ 11 put_data_block_all_: proc (psp) options(support); 12 dcl (duplication, n) fixed bin; 13 dcl (block_ptr, /* points at current block */ 14 save_sp, /* save the stack pointer */ 15 save_bp, /* save the block ptr */ 16 sslpsaved, 17 psp) ptr, /* points at ps */ 18 more bit(1) aligned, 19 ptrsave bit(72) aligned based, 20 put_data_var_all_ ext entry (fixed bin, fixed bin, ptr, ptr, ptr), 21 1 bounds (128) aligned int static, 22 2 lower fixed bin, 23 2 upper fixed bin, 24 (addrel,addr, rel, null) builtin; 25 1 1 dcl 1 frame aligned based, 1 2 2 pointers(0:7) ptr, 1 3 2 back ptr, 1 4 2 next ptr, 1 5 2 return ptr, 1 6 2 entry ptr, 1 7 2 operator ptr, 1 8 2 argptr ptr, 1 9 2 skip1(2) fixed bin, 1 10 2 on_unit_info(2) bit(18) unaligned, 1 11 2 translator_id bit(18) unaligned, 1 12 2 operator_return bit(18) unaligned, 1 13 2 display ptr, 1 14 2 skip2(2) fixed bin, 1 15 2 linkage ptr; 26 2 1 /* BEGIN INCLUDE FILE ... runtime_symbol.incl.pl1 ... Modified 07/79 */ 2 2 2 3 dcl 1 runtime_symbol aligned based, 2 4 2 flag unal bit(1), /* always "1"b for Version II */ 2 5 2 use_digit unal bit(1), /* if "1"b and units are half words units are really digits */ 2 6 2 array_units unal bit(2), 2 7 2 units unal bit(2), /* addressing units */ 2 8 2 type unal bit(6), /* data type */ 2 9 2 level unal bit(6), /* structure level */ 2 10 2 ndims unal bit(6), /* number of dimensions */ 2 11 2 bits unal, 2 12 3 aligned bit(1), 2 13 3 packed bit(1), 2 14 3 simple bit(1), 2 15 2 skip unal bit(1), 2 16 2 scale unal bit(8), /* arithmetic scale factor */ 2 17 2 name unal bit(18), /* rel ptr to acc name */ 2 18 2 brother unal bit(18), /* rel ptr to brother entry */ 2 19 2 father unal bit(18), /* rel ptr to father entry */ 2 20 2 son unal bit(18), /* rel ptr to son entry */ 2 21 2 address unal, 2 22 3 location bit(18), /* location in storage class */ 2 23 3 class bit(4), /* storage class */ 2 24 3 next bit(14), /* rel ptr to next of same class */ 2 25 2 size fixed bin(35), /* encoded string|arith size */ 2 26 2 offset fixed bin(35), /* encoded offset from address */ 2 27 2 virtual_org fixed bin(35), 2 28 2 bounds(1), 2 29 3 lower fixed bin(35), /* encoded lower bound */ 2 30 3 upper fixed bin(35), /* encoded upper bound */ 2 31 3 multiplier fixed bin(35); /* encoded multiplier */ 2 32 2 33 dcl 1 runtime_bound based, 2 34 2 lower fixed bin(35), 2 35 2 upper fixed bin(35), 2 36 2 multiplier fixed bin(35); 2 37 2 38 dcl 1 runtime_block aligned based, 2 39 2 flag unal bit(1), /* always "1"b for Version II */ 2 40 2 quick unal bit(1), /* "1"b if quick block */ 2 41 2 fortran unal bit(1), /* "1"b if fortran program */ 2 42 2 standard unal bit(1), /* "1"b if program has std obj segment */ 2 43 2 owner_flag unal bit(1), /* "1"b if block has valid owner field */ 2 44 2 skip unal bit(1), 2 45 2 type unal bit(6), /* = 0 for a block node */ 2 46 2 number unal bit(6), /* begin block number */ 2 47 2 start unal bit(18), /* rel ptr to start of symbols */ 2 48 2 name unal bit(18), /* rel ptr to name of proc */ 2 49 2 brother unal bit(18), /* rel ptr to brother block */ 2 50 2 father unal bit(18), /* rel ptr to father block */ 2 51 2 son unal bit(18), /* rel ptr to son block */ 2 52 2 map unal, 2 53 3 first bit(18), /* rel ptr to first word of map */ 2 54 3 last bit(18), /* rel ptr to last word of map */ 2 55 2 entry_info unal bit(18), /* info about entry of quick block */ 2 56 2 header unal bit(18), /* rel ptr to symbol header */ 2 57 2 chain(4) unal bit(18), /* chain(i) is rel ptr to first symbol 2 58* on start list with length >= 2**i */ 2 59 2 token(0:5) unal bit(18), /* token(i) is rel ptr to first token 2 60* on list with length >= 2 ** i */ 2 61 2 owner unal bit(18); /* rel ptr to owner block */ 2 62 2 63 dcl 1 runtime_token aligned based, 2 64 2 next unal bit(18), /* rel ptr to next token */ 2 65 2 dcl unal bit(18), /* rel ptr to first dcl of this token */ 2 66 2 name, /* ACC */ 2 67 3 size unal unsigned fixed bin (9), /* number of chars in token */ 2 68 3 string unal char(n refer(runtime_token.size)); 2 69 2 70 dcl 1 encoded_value aligned based, 2 71 2 flag bit (2) unal, 2 72 2 code bit (4) unal, 2 73 2 n1 bit (6) unal, 2 74 2 n2 bit (6) unal, 2 75 2 n3 bit (18) unal; 2 76 2 77 /* END INCLUDE FILE ... runtime_symbol.incl.pl1 */ 27 3 1 /* BEGIN INCLUDE FILE ... plio2_ps.incl.pl1 */ 3 2 /* Stream I/O data block used by PL/I I/O runtime routines. 3 3* 3 4* Modified: 31 January 1978 by RAB to change plio2_data_$fsb_thread to plio2_data_fsb_thread_ 3 5**/ 3 6 /* format: style3,idind30 */ 3 7 3 8 /* based */ 3 9 3 10 declare 1 ps aligned based (psp),/* items set NORMALLY by compiled procedures */ 3 11 2 stack_frame_p ptr, /* items set in block prologue */ 3 12 2 ST_top_p ptr, 3 13 2 ST_block_p ptr, 3 14 2 format_area_p ptr, 3 15 2 ss_list_p ptr, 3 16 2 ab_return, /* items set in prep call */ 3 17 3 abret (3) ptr, 3 18 2 source_p ptr, /* addr(fakefsb) for string option, 3 19* addr(file) for explicit file option */ 3 20 2 special_list_p ptr, /* addr(OKlist) for get data, addr(format_list) for edit */ 3 21 2 copy_file_p ptr, 3 22 2 job aligned, 3 23 3 explicit_file bit (1) unal, 3 24 3 string bit (1) unal, 3 25 3 varying_string bit (1) unal, 3 26 3 data bit (1) unal, 3 27 3 edit bit (1) unal, 3 28 3 list bit (1) unal, 3 29 3 get bit (1) unal, 3 30 3 put bit (1) unal, 3 31 3 page bit (1) unal, 3 32 3 line bit (1) unal, 3 33 3 skip bit (1) unal, 3 34 3 copy bit (1) unal, 3 35 3 p1p2 bit (1) unal, 3 36 3 bit_string bit (1) unal, /* for environment(stringvalue) */ 3 37 3 char_string bit (1) unal, 3 38 3 read bit (1) unal, 3 39 3 write bit (1) unal, 3 40 3 rewrite bit (1) unal, 3 41 3 delete bit (1) unal, 3 42 3 locate bit (1) unal, 3 43 3 key bit (1) unal, 3 44 3 keyto bit (1) unal, 3 45 3 keyfrom bit (1) unal, 3 46 3 set bit (1) unal, 3 47 3 into bit (1) unal, 3 48 3 ignore bit (1) unal, 3 49 3 from bit (1) unal, 3 50 3 version bit (6) unal, 3 51 3 not_byte_buffer bit (1) unal, 3 52 3 pad1 bit (1) unal, 3 53 3 packed_ptr bit (1) unal, 3 54 2 number fixed bin (15), 3 55 2 value_p ptr, /* items set NORMALLY by compiled procedures per transmission */ 3 56 2 descriptor bit (36) aligned, 3 57 2 length fixed bin (15), /* may be swallowed into descriptor */ 3 58 2 top_half bit (18) unal, 3 59 2 offset bit (18) unal, 3 60 2 prep fixed bin (15), /* items treated ABNORMALLY, written by user and PLIO */ 3 61 2 new_format fixed bin (15), 3 62 2 switch aligned, /* items used by PLIO and not touched by compiled procedures */ 3 63 3 first_field bit (1) unal, 3 64 3 file bit (1) unal, 3 65 3 transmit_error bit (1) unal, 3 66 3 semi_sep bit (1) unal, 3 67 3 pad2 bit (32) unal, 3 68 2 file_p ptr, 3 69 2 fsbp ptr, 3 70 2 auxp ptr, /* used as addr(ldidata) for GETs */ 3 71 2 fabp ptr, 3 72 2 fab2p ptr, 3 73 2 vp ptr, 3 74 2 descr bit (36) aligned, 3 75 2 start_copy fixed bin (15), 3 76 2 quick_stream_storage, 3 77 3 a_stored fixed bin (35), 3 78 3 q_stored fixed bin (35); 3 79 3 80 /* external static */ 3 81 3 82 declare ( 3 83 plio2_data_$pspstat, 3 84 plio2_data_$fsbpstat, 3 85 plio2_data_$badfsbp, 3 86 plio2_data_$fabpstat, 3 87 plio2_data_$fab2pstat, 3 88 plio2_data_$pliostringfsbp 3 89 ) ptr external static; 3 90 3 91 dcl plio2_data_fsb_thread_ ptr ext static initial (null); 3 92 /* *system var */ 3 93 3 94 declare ( 3 95 plio2_data_$badjob bit (36) aligned, 3 96 plio2_data_$undef_file_sw bit (1) aligned 3 97 ) external static; 3 98 3 99 /* END INCLUDE FILE ... plio2_ps.incl.pl1 */ 28 29 30 31 32 33 34 35 36 37 38 39 40 block_ptr = ps.ST_block_p; 41 42 addr(sslpsaved)->ptrsave=addr(ps.ss_list_p)->ptrsave; 43 addr(save_bp )->ptrsave=addr( block_ptr )->ptrsave; 44 addr(save_sp )->ptrsave=addr( ps.stack_frame_p )->ptrsave; 45 46 duplication = 0; 47 more="1"b; 48 49 do while(more); 50 n = 0; 51 call put_data_var_all_ (duplication, n, addrel (block_ptr, block_ptr -> runtime_block.start), addr (bounds), psp); 52 block_ptr = addrel (block_ptr, block_ptr -> runtime_block.father); 53 54 if block_ptr -> runtime_block.father = block_ptr -> runtime_block.header 55 then more="0"b; 56 else 57 do; 58 if ^ block_ptr -> runtime_block.quick then 59 psp -> ps.stack_frame_p = ps.stack_frame_p -> frame.display; 60 psp -> ps.ST_block_p = block_ptr; 61 end; 62 end; 63 64 addr(ps.ST_block_p )->ptrsave=addr( save_bp )->ptrsave; 65 addr(ps.stack_frame_p)->ptrsave=addr( save_sp )->ptrsave; 66 addr(ps.ss_list_p )->ptrsave=addr(sslpsaved )->ptrsave; 67 68 return; 69 70 end put_data_block_all_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 10/03/83 1005.6 put_data_block_all_.pl1 >spec>on>pl128d>put_data_block_all_.pl1 26 1 05/06/74 1752.6 stu_frame.incl.pl1 >ldd>include>stu_frame.incl.pl1 27 2 11/26/79 1320.6 runtime_symbol.incl.pl1 >ldd>include>runtime_symbol.incl.pl1 28 3 08/13/81 2043.5 plio2_ps.incl.pl1 >ldd>include>plio2_ps.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. ST_block_p 4 based pointer level 2 dcl 3-10 set ref 40 60* 64 addr builtin function dcl 13 ref 42 42 43 43 44 44 51 51 64 64 65 65 66 66 addrel builtin function dcl 13 ref 51 51 52 block_ptr 000102 automatic pointer dcl 13 set ref 40* 43 51 51 51 51 52* 52 52 54 54 58 60 bounds 000010 internal static structure array level 1 dcl 13 set ref 51 51 display 40 based pointer level 2 dcl 1-1 ref 58 duplication 000100 automatic fixed bin(17,0) dcl 12 set ref 46* 51* father 2 based bit(18) level 2 packed unaligned dcl 2-38 ref 52 54 frame based structure level 1 dcl 1-1 header 4(18) based bit(18) level 2 packed unaligned dcl 2-38 ref 54 more 000112 automatic bit(1) dcl 13 set ref 47* 49 54* n 000101 automatic fixed bin(17,0) dcl 12 set ref 50* 51* ps based structure level 1 dcl 3-10 psp parameter pointer dcl 13 set ref 11 40 42 44 51* 58 58 60 64 65 66 ptrsave based bit(72) dcl 13 set ref 42* 42 43* 43 44* 44 64* 64 65* 65 66* 66 put_data_var_all_ 000410 constant entry external dcl 13 ref 51 quick 0(01) based bit(1) level 2 packed unaligned dcl 2-38 ref 58 runtime_block based structure level 1 dcl 2-38 save_bp 000106 automatic pointer dcl 13 set ref 43 64 save_sp 000104 automatic pointer dcl 13 set ref 44 65 ss_list_p 10 based pointer level 2 dcl 3-10 set ref 42 66 sslpsaved 000110 automatic pointer dcl 13 set ref 42 66 stack_frame_p based pointer level 2 dcl 3-10 set ref 44 58* 58 65 start 0(18) based bit(18) level 2 packed unaligned dcl 2-38 ref 51 51 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. encoded_value based structure level 1 dcl 2-70 null builtin function dcl 13 plio2_data_$badfsbp external static pointer dcl 3-82 plio2_data_$badjob external static bit(36) dcl 3-94 plio2_data_$fab2pstat external static pointer dcl 3-82 plio2_data_$fabpstat external static pointer dcl 3-82 plio2_data_$fsbpstat external static pointer dcl 3-82 plio2_data_$pliostringfsbp external static pointer dcl 3-82 plio2_data_$pspstat external static pointer dcl 3-82 plio2_data_$undef_file_sw external static bit(1) dcl 3-94 plio2_data_fsb_thread_ external static pointer initial dcl 3-91 rel builtin function dcl 13 runtime_bound based structure level 1 unaligned dcl 2-33 runtime_symbol based structure level 1 dcl 2-3 runtime_token based structure level 1 dcl 2-63 NAME DECLARED BY EXPLICIT CONTEXT. put_data_block_all_ 000004 constant entry external dcl 11 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 176 610 140 206 Length 1024 140 412 177 36 400 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME put_data_block_all_ 92 external procedure is an external procedure. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 bounds put_data_block_all_ STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME put_data_block_all_ 000100 duplication put_data_block_all_ 000101 n put_data_block_all_ 000102 block_ptr put_data_block_all_ 000104 save_sp put_data_block_all_ 000106 save_bp put_data_block_all_ 000110 sslpsaved put_data_block_all_ 000112 more put_data_block_all_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out return ext_entry set_support THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. put_data_var_all_ NO EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 11 000001 40 000012 42 000017 43 000024 44 000026 46 000031 47 000032 49 000034 50 000036 51 000037 52 000066 54 000073 58 000104 60 000115 62 000122 64 000123 65 000131 66 000134 68 000137 ----------------------------------------------------------- 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