COMPILATION LISTING OF SEGMENT !BBBJZjXjjMqPnm Compiled by: Multics PL/I Compiler, Release 32f, of October 9, 1989 Compiled at: Bull HN, Phoenix AZ, System-M Compiled on: 11/11/89 1007.6 mst Sat Options: table map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1987 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 6* * * 7* * Copyright (c) 1972 by Massachusetts Institute of * 8* * Technology and Honeywell Information Systems, Inc. * 9* * * 10* *********************************************************** */ 11 12 13 14 inzr_stk0: proc; 15 16 /* This program is the initializer's stack during initialization */ 17 /* This is so called because it must be found in bootstrap1's magic name 18* table, which limits names to 8 recognizable characters. */ 19 20 /* Automatic */ 21 22 dcl 1 cdsa aligned like cds_args; 23 dcl code fixed bin (35); 24 25 /* Static */ 26 27 dcl name char (32) aligned static init ("inzr_stk0") options (constant); 28 dcl exclude_pad (1) char (32) aligned static options (constant) init ("*"); 29 30 /* Builtins */ 31 32 dcl (addr, baseptr, bin, bit, hbound, mod, null, ptr, rel, size, string) builtin; 33 34 /* Entries */ 35 36 dcl com_err_ entry options (variable); 37 dcl create_data_segment_ entry (ptr, fixed bin (35)); 38 39 40 /* The initialization stack definition */ 41 42 43 dcl 1 inzr_stk0 aligned, 44 2 header like stack_header, 45 2 frame like stack_frame; 46 47 /* */ 48 49 unspec (inzr_stk0) = ""b; 50 51 /* Initialize the stack header pointers. */ 52 53 inzr_stk0.header.stack_begin_ptr 54 = ptr (null (), bin (rel (addr (inzr_stk0.frame))) 55 - bin (rel (addr (inzr_stk0)))); 56 inzr_stk0.header.stack_end_ptr = inzr_stk0.header.stack_begin_ptr; 57 58 /* Now set up call to create data segment */ 59 60 cdsa.sections (1).p = addr (inzr_stk0); 61 cdsa.sections (1).len = size (inzr_stk0); 62 cdsa.sections (1).struct_name = "inzr_stk0"; 63 64 cdsa.seg_name = name; 65 cdsa.num_exclude_names = 1; 66 cdsa.exclude_array_ptr = addr (exclude_pad); 67 68 string (cdsa.switches) = "0"b; 69 cdsa.switches.have_text = "1"b; 70 71 call create_data_segment_ (addr (cdsa), code); 72 return; 73 74 1 1 /* BEGIN INCLUDE FILE cds_args.incl.pl1 */ 1 2 1 3 dcl 1 cds_args based aligned, 1 4 2 sections (2), 1 5 3 p ptr, /* pointer to data for text/static section */ 1 6 3 len fixed bin (18), /* size of text/static section */ 1 7 3 struct_name char (32), /* name of declared structure for this section */ 1 8 2 seg_name char (32), /* name to create segment by */ 1 9 2 num_exclude_names fixed bin, /* number of names in exclude array */ 1 10 2 exclude_array_ptr ptr, /* pointer to array of exclude names */ 1 11 2 switches, /* control switches */ 1 12 3 defs_in_link bit (1) unal, /* says put defs in linkage */ 1 13 3 separate_static bit (1) unal, /* says separate static section is wanted */ 1 14 3 have_text bit (1) unal, /* ON if text section given */ 1 15 3 have_static bit (1) unal, /* ON if static section given */ 1 16 3 pad bit (32) unal; 1 17 1 18 dcl exclude_names (1) char (32) based; /* pointed to be cds_args.exclude_array_ptr */ 1 19 1 20 /* END INCLUDE FILE cds_args.incl.pl1 */ 75 2 1 /* BEGIN INCLUDE FILE ... stack_header.incl.pl1 .. 3/72 Bill Silver */ 2 2 /* modified 7/76 by M. Weaver for *system links and more system use of areas */ 2 3 /* modified 3/77 by M. Weaver to add rnt_ptr */ 2 4 /* Modified April 1983 by C. Hornig for tasking */ 2 5 2 6 /****^ HISTORY COMMENTS: 2 7* 1) change(86-06-24,DGHowe), approve(86-06-24,MCR7396), 2 8* audit(86-08-05,Schroth), install(86-11-03,MR12.0-1206): 2 9* added the heap_header_ptr definition. 2 10* 2) change(86-08-12,Kissel), approve(86-08-12,MCR7473), 2 11* audit(86-10-10,Fawcett), install(86-11-03,MR12.0-1206): 2 12* Modified to support control point management. These changes were actually 2 13* made in February 1985 by G. Palter. 2 14* 3) change(86-10-22,Fawcett), approve(86-10-22,MCR7473), 2 15* audit(86-10-22,Farley), install(86-11-03,MR12.0-1206): 2 16* Remove the old_lot pointer and replace it with cpm_data_ptr. Use the 18 2 17* bit pad after cur_lot_size for the cpm_enabled. This was done to save some 2 18* space int the stack header and change the cpd_ptr unal to cpm_data_ptr 2 19* (ITS pair). 2 20* END HISTORY COMMENTS */ 2 21 2 22 /* format: style2 */ 2 23 2 24 dcl sb ptr; /* the main pointer to the stack header */ 2 25 2 26 dcl 1 stack_header based (sb) aligned, 2 27 2 pad1 (4) fixed bin, /* (0) also used as arg list by outward_call_handler */ 2 28 2 cpm_data_ptr ptr, /* (4) pointer to control point which owns this stack */ 2 29 2 combined_stat_ptr ptr, /* (6) pointer to area containing separate static */ 2 30 2 clr_ptr ptr, /* (8) pointer to area containing linkage sections */ 2 31 2 max_lot_size fixed bin (17) unal, /* (10) DU number of words allowed in lot */ 2 32 2 main_proc_invoked fixed bin (11) unal, /* (10) DL nonzero if main procedure invoked in run unit */ 2 33 2 have_static_vlas bit (1) unal, /* (10) DL "1"b if (very) large arrays are being used in static */ 2 34 2 pad4 bit (2) unal, 2 35 2 run_unit_depth fixed bin (2) unal, /* (10) DL number of active run units stacked */ 2 36 2 cur_lot_size fixed bin (17) unal, /* (11) DU number of words (entries) in lot */ 2 37 2 cpm_enabled bit (18) unal, /* (11) DL non-zero if control point management is enabled */ 2 38 2 system_free_ptr ptr, /* (12) pointer to system storage area */ 2 39 2 user_free_ptr ptr, /* (14) pointer to user storage area */ 2 40 2 null_ptr ptr, /* (16) */ 2 41 2 stack_begin_ptr ptr, /* (18) pointer to first stack frame on the stack */ 2 42 2 stack_end_ptr ptr, /* (20) pointer to next useable stack frame */ 2 43 2 lot_ptr ptr, /* (22) pointer to the lot for the current ring */ 2 44 2 signal_ptr ptr, /* (24) pointer to signal procedure for current ring */ 2 45 2 bar_mode_sp ptr, /* (26) value of sp before entering bar mode */ 2 46 2 pl1_operators_ptr ptr, /* (28) pointer to pl1_operators_$operator_table */ 2 47 2 call_op_ptr ptr, /* (30) pointer to standard call operator */ 2 48 2 push_op_ptr ptr, /* (32) pointer to standard push operator */ 2 49 2 return_op_ptr ptr, /* (34) pointer to standard return operator */ 2 50 2 return_no_pop_op_ptr 2 51 ptr, /* (36) pointer to standard return / no pop operator */ 2 52 2 entry_op_ptr ptr, /* (38) pointer to standard entry operator */ 2 53 2 trans_op_tv_ptr ptr, /* (40) pointer to translator operator ptrs */ 2 54 2 isot_ptr ptr, /* (42) pointer to ISOT */ 2 55 2 sct_ptr ptr, /* (44) pointer to System Condition Table */ 2 56 2 unwinder_ptr ptr, /* (46) pointer to unwinder for current ring */ 2 57 2 sys_link_info_ptr ptr, /* (48) pointer to *system link name table */ 2 58 2 rnt_ptr ptr, /* (50) pointer to Reference Name Table */ 2 59 2 ect_ptr ptr, /* (52) pointer to event channel table */ 2 60 2 assign_linkage_ptr ptr, /* (54) pointer to storage for (obsolete) hcs_$assign_linkage */ 2 61 2 heap_header_ptr ptr, /* (56) pointer to the heap header for this ring */ 2 62 2 trace, 2 63 3 frames, 2 64 4 count fixed bin, /* (58) number of trace frames */ 2 65 4 top_ptr ptr unal, /* (59) pointer to last trace frame */ 2 66 3 in_trace bit (36) aligned, /* (60) trace antirecursion flag */ 2 67 2 pad2 bit (36), /* (61) */ 2 68 2 pad5 pointer; /* (62) pointer to future stuff */ 2 69 2 70 /* The following offset refers to a table within the pl1 operator table. */ 2 71 2 72 dcl tv_offset fixed bin init (361) internal static; 2 73 /* (551) octal */ 2 74 2 75 2 76 /* The following constants are offsets within this transfer vector table. */ 2 77 2 78 dcl ( 2 79 call_offset fixed bin init (271), 2 80 push_offset fixed bin init (272), 2 81 return_offset fixed bin init (273), 2 82 return_no_pop_offset fixed bin init (274), 2 83 entry_offset fixed bin init (275) 2 84 ) internal static; 2 85 2 86 2 87 2 88 2 89 2 90 /* The following declaration is an overlay of the whole stack header. Procedures which 2 91* move the whole stack header should use this overlay. 2 92**/ 2 93 2 94 dcl stack_header_overlay (size (stack_header)) fixed bin based (sb); 2 95 2 96 2 97 2 98 /* END INCLUDE FILE ... stack_header.incl.pl1 */ 76 3 1 /* BEGIN INCLUDE FILE ... stack_frame.incl.pl1 ... */ 3 2 3 3 /* format: off */ 3 4 3 5 /* Modified: 16 Dec 1977, D. Levin - to add fio_ps_ptr and pl1_ps_ptr */ 3 6 /* Modified: 3 Feb 1978, P. Krupp - to add run_unit_manager bit & main_proc bit */ 3 7 /* Modified: 21 March 1978, D. Levin - change fio_ps_ptr to support_ptr */ 3 8 /* Modified: 03/01/84, S. Herbst - Added RETURN_PTR_MASK */ 3 9 3 10 3 11 /****^ HISTORY COMMENTS: 3 12* 1) change(86-09-15,Kissel), approve(86-09-15,MCR7473), 3 13* audit(86-10-01,Fawcett), install(86-11-03,MR12.0-1206): 3 14* Modified to add constants for the translator_id field in the stack_frame 3 15* structure. 3 16* END HISTORY COMMENTS */ 3 17 3 18 3 19 dcl RETURN_PTR_MASK bit (72) int static options (constant) /* mask to be AND'd with stack_frame.return_ptr */ 3 20 init ("777777777777777777000000"b3); /* when copying, to ignore bits that a call fills */ 3 21 /* with indicators (nonzero for Fortran hexfp caller) */ 3 22 /* say: unspec(ptr) = unspec(stack_frame.return_ptr) & RETURN_PTR_MASK; */ 3 23 3 24 dcl TRANSLATOR_ID_PL1V2 bit (18) internal static options (constant) init ("000000"b3); 3 25 dcl TRANSLATOR_ID_ALM bit (18) internal static options (constant) init ("000001"b3); 3 26 dcl TRANSLATOR_ID_PL1V1 bit (18) internal static options (constant) init ("000002"b3); 3 27 dcl TRANSLATOR_ID_SIGNAL_CALLER bit (18) internal static options (constant) init ("000003"b3); 3 28 dcl TRANSLATOR_ID_SIGNALLER bit (18) internal static options (constant) init ("000004"b3); 3 29 3 30 3 31 dcl sp pointer; /* pointer to beginning of stack frame */ 3 32 3 33 dcl stack_frame_min_length fixed bin static init(48); 3 34 3 35 3 36 dcl 1 stack_frame based(sp) aligned, 3 37 2 pointer_registers(0 : 7) ptr, 3 38 2 prev_sp pointer, 3 39 2 next_sp pointer, 3 40 2 return_ptr pointer, 3 41 2 entry_ptr pointer, 3 42 2 operator_and_lp_ptr ptr, /* serves as both */ 3 43 2 arg_ptr pointer, 3 44 2 static_ptr ptr unaligned, 3 45 2 support_ptr ptr unal, /* only used by fortran I/O */ 3 46 2 on_unit_relp1 bit(18) unaligned, 3 47 2 on_unit_relp2 bit(18) unaligned, 3 48 2 translator_id bit(18) unaligned, /* Translator ID (see constants above) 3 49* 0 => PL/I version II 3 50* 1 => ALM 3 51* 2 => PL/I version I 3 52* 3 => signal caller frame 3 53* 4 => signaller frame */ 3 54 2 operator_return_offset bit(18) unaligned, 3 55 2 x(0: 7) bit(18) unaligned, /* index registers */ 3 56 2 a bit(36), /* accumulator */ 3 57 2 q bit(36), /* q-register */ 3 58 2 e bit(36), /* exponent */ 3 59 2 timer bit(27) unaligned, /* timer */ 3 60 2 pad bit(6) unaligned, 3 61 2 ring_alarm_reg bit(3) unaligned; 3 62 3 63 3 64 dcl 1 stack_frame_flags based(sp) aligned, 3 65 2 pad(0 : 7) bit(72), /* skip over prs */ 3 66 2 xx0 bit(22) unal, 3 67 2 main_proc bit(1) unal, /* on if frame belongs to a main procedure */ 3 68 2 run_unit_manager bit(1) unal, /* on if frame belongs to run unit manager */ 3 69 2 signal bit(1) unal, /* on if frame belongs to logical signal_ */ 3 70 2 crawl_out bit(1) unal, /* on if this is a signal caller frame */ 3 71 2 signaller bit(1) unal, /* on if next frame is signaller's */ 3 72 2 link_trap bit(1) unal, /* on if this frame was made by the linker */ 3 73 2 support bit(1) unal, /* on if frame belongs to a support proc */ 3 74 2 condition bit(1) unal, /* on if condition established in this frame */ 3 75 2 xx0a bit(6) unal, 3 76 2 xx1 fixed bin, 3 77 2 xx2 fixed bin, 3 78 2 xx3 bit(25) unal, 3 79 2 old_crawl_out bit (1) unal, /* on if this is a signal caller frame */ 3 80 2 old_signaller bit(1) unal, /* on if next frame is signaller's */ 3 81 2 xx3a bit(9) unaligned, 3 82 2 xx4(9) bit(72) aligned, 3 83 2 v2_pl1_op_ret_base ptr, /* When a V2 PL/I program calls an operator the 3 84* * operator puts a pointer to the base of 3 85* * the calling procedure here. (text base ptr) */ 3 86 2 xx5 bit(72) aligned, 3 87 2 pl1_ps_ptr ptr; /* ptr to ps for this frame; also used by fio. */ 3 88 3 89 /* format: on */ 3 90 3 91 /* END INCLUDE FILE ... stack_frame.incl.pl1 */ 77 78 end inzr_stk0; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/11/89 0853.8 !BBBJZjXjjMqPnm.pl1 >spec>install>1115>inzr_stk0.cds 75 1 04/01/76 2209.5 cds_args.incl.pl1 >ldd>include>cds_args.incl.pl1 76 2 11/07/86 1550.3 stack_header.incl.pl1 >ldd>include>stack_header.incl.pl1 77 3 11/07/86 1550.3 stack_frame.incl.pl1 >ldd>include>stack_frame.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. addr builtin function dcl 32 ref 53 53 60 66 71 71 bin builtin function dcl 32 ref 53 53 cds_args based structure level 1 dcl 1-3 cdsa 000100 automatic structure level 1 dcl 22 set ref 71 71 code 000145 automatic fixed bin(35,0) dcl 23 set ref 71* create_data_segment_ 000022 constant entry external dcl 37 ref 71 exclude_array_ptr 42 000100 automatic pointer level 2 dcl 22 set ref 66* exclude_pad 000000 constant char(32) initial array dcl 28 set ref 66 frame 100 000146 automatic structure level 2 dcl 43 set ref 53 have_text 44(02) 000100 automatic bit(1) level 3 packed packed unaligned dcl 22 set ref 69* header 000146 automatic structure level 2 dcl 43 inzr_stk0 000146 automatic structure level 1 dcl 43 set ref 49* 53 60 61 len 2 000100 automatic fixed bin(18,0) array level 3 dcl 22 set ref 61* name 000010 constant char(32) initial dcl 27 ref 64 null builtin function dcl 32 ref 53 num_exclude_names 40 000100 automatic fixed bin(17,0) level 2 dcl 22 set ref 65* p 000100 automatic pointer array level 3 dcl 22 set ref 60* ptr builtin function dcl 32 ref 53 rel builtin function dcl 32 ref 53 53 sb 000316 automatic pointer dcl 2-24 ref 2-26 2-26 2-26 2-26 2-26 2-26 2-26 2-26 2-26 2-26 2-26 2-26 2-26 2-26 2-26 2-26 2-26 2-26 2-26 2-26 2-26 2-26 2-26 2-26 2-26 2-26 2-26 2-26 2-26 2-26 2-26 2-26 2-26 2-26 2-26 2-26 2-26 2-26 2-26 2-26 2-26 2-26 sections 000100 automatic structure array level 2 dcl 22 seg_name 30 000100 automatic char(32) level 2 dcl 22 set ref 64* size builtin function dcl 32 ref 61 sp 000320 automatic pointer dcl 3-31 ref 3-36 3-36 3-36 3-36 3-36 3-36 3-36 3-36 3-36 3-36 3-36 3-36 3-36 3-36 3-36 3-36 3-36 3-36 3-36 3-36 3-36 stack_begin_ptr 22 000146 automatic pointer level 3 dcl 43 set ref 53* 56 stack_end_ptr 24 000146 automatic pointer level 3 dcl 43 set ref 56* stack_frame based structure level 1 dcl 3-36 stack_header based structure level 1 dcl 2-26 string builtin function dcl 32 set ref 68* struct_name 3 000100 automatic char(32) array level 3 dcl 22 set ref 62* switches 44 000100 automatic structure level 2 dcl 22 set ref 68* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. RETURN_PTR_MASK constant bit(72) initial packed unaligned dcl 3-19 TRANSLATOR_ID_ALM constant bit(18) initial packed unaligned dcl 3-25 TRANSLATOR_ID_PL1V1 constant bit(18) initial packed unaligned dcl 3-26 TRANSLATOR_ID_PL1V2 constant bit(18) initial packed unaligned dcl 3-24 TRANSLATOR_ID_SIGNALLER constant bit(18) initial packed unaligned dcl 3-28 TRANSLATOR_ID_SIGNAL_CALLER constant bit(18) initial packed unaligned dcl 3-27 baseptr builtin function dcl 32 bit builtin function dcl 32 call_offset 000011 internal static fixed bin(17,0) initial dcl 2-78 com_err_ 000000 constant entry external dcl 36 entry_offset 000015 internal static fixed bin(17,0) initial dcl 2-78 exclude_names based char(32) array packed unaligned dcl 1-18 hbound builtin function dcl 32 mod builtin function dcl 32 push_offset 000012 internal static fixed bin(17,0) initial dcl 2-78 return_no_pop_offset 000014 internal static fixed bin(17,0) initial dcl 2-78 return_offset 000013 internal static fixed bin(17,0) initial dcl 2-78 stack_frame_flags based structure level 1 dcl 3-64 stack_frame_min_length 000016 internal static fixed bin(17,0) initial dcl 3-33 stack_header_overlay based fixed bin(17,0) array dcl 2-94 tv_offset 000010 internal static fixed bin(17,0) initial dcl 2-72 NAME DECLARED BY EXPLICIT CONTEXT. inzr_stk0 000026 constant entry external dcl 14 NAME DECLARED BY CONTEXT OR IMPLICATION. unspec builtin function ref 49 STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 156 202 112 166 Length 3224 112 24 3005 44 10 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME inzr_stk0 224 external procedure is an external procedure. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 tv_offset inzr_stk0 000011 call_offset inzr_stk0 000012 push_offset inzr_stk0 000013 return_offset inzr_stk0 000014 return_no_pop_offset inzr_stk0 000015 entry_offset inzr_stk0 000016 stack_frame_min_length inzr_stk0 STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME inzr_stk0 000100 cdsa inzr_stk0 000145 code inzr_stk0 000146 inzr_stk0 inzr_stk0 000316 sb inzr_stk0 000320 sp inzr_stk0 THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out return_mac ext_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. create_data_segment_ NO EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 14 000025 49 000033 53 000036 56 000052 60 000053 61 000055 62 000057 64 000062 65 000065 66 000067 68 000071 69 000072 71 000074 72 000111 Object Segment >spec>install>1115>inzr_stk0 Created on 11/11/89 1007.7 mst Sat by Hirneisen.SysMaint.a using create_data_segment_, Version II of Thursday, November 20, 1986 Object Text Defs Link Symb Static Start 0 0 150 170 200 200 Length 402 150 20 10 166 0 2 Definitions: segname: inzr_stk0 symb|0 symbol_table No Links. ----------------------------------------------------------- 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