COMPILATION LISTING OF SEGMENT pl1_signal_catcher Compiled by: Multics PL/I Compiler, Release 28d, of September 14, 1983 Compiled at: Honeywell LCPD Phoenix, System M Compiled on: 10/03/83 1619.6 mst Mon Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* *********************************************************** */ 6 7 /* ****************************************************** 8* * * 9* * * 10* * Copyright (c) 1972 by Massachusetts Institute of * 11* * Technology and Honeywell Information Systems, Inc. * 12* * * 13* * * 14* ****************************************************** */ 15 16 /* Modified 7/01/81 by EBush to add recognition of "null_pointer" condition. */ 17 18 pl1_signal_catcher: proc (mc_ptr, name, co_ptr, info_ptr, continue); 19 20 dcl (mc_ptr, co_ptr, info_ptr) ptr, 21 name char (*) unaligned, 22 continue bit (1) aligned; 23 24 dcl (cg_static_$cur_statement, pl1_stat_$cur_statement) ptr ext, 25 pl1_stat_$phase fixed bin ext, 26 cg_static_$debug bit (1) aligned ext, 27 (p, q, source_pt) ptr, 28 errno fixed bin, 29 n fixed bin, 30 cond char (32), 31 (error, error$omit_text) entry (fixed bin, ptr, ptr), 32 parse_error entry (fixed bin, ptr), 33 ioa_ entry options (variable); 34 35 dcl 1 source_structure based (source_pt), 36 2 spacer char (p -> statement.source.start) unal, 37 2 output char (p -> statement.source.length) unal; 38 39 dcl code fixed bin (35); /* needed by iox_$put_chars but never examined */ 40 dcl program_interrupt condition; 41 42 declare any_other condition; 43 44 dcl (addr, fixed, length, null, ptr) builtin; 45 1 1 /* BEGIN INCLUDE FILE ... pl1_tree_areas.incl.pl1 */ 1 2 1 3 /* format: style3 */ 1 4 dcl tree_area area based (pl1_stat_$tree_area_ptr); 1 5 dcl xeq_tree_area area based (pl1_stat_$xeq_tree_area_ptr); 1 6 1 7 dcl pl1_stat_$tree_area_ptr 1 8 ptr ext static, 1 9 pl1_stat_$xeq_tree_area_ptr 1 10 ptr ext static; 1 11 1 12 /* END INCLUDE FILE ... op_codes.incl.pl1 */ 46 2 1 /* *********************************************************** 2 2* * * 2 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 2 4* * * 2 5* *********************************************************** */ 2 6 /* BEGIN INCLUDE FILE ... statement.incl.pl1 */ 2 7 /* Internal interface of the PL/I compiler */ 2 8 2 9 dcl 1 statement based aligned, 2 10 2 node_type bit(9) unaligned, 2 11 2 source_id structure unaligned, 2 12 3 file_number bit(8), 2 13 3 line_number bit(14), 2 14 3 statement_number bit(5), 2 15 2 next ptr unaligned, 2 16 2 back ptr unaligned, 2 17 2 root ptr unaligned, 2 18 2 labels ptr unaligned, 2 19 2 reference_list ptr unaligned, 2 20 2 state_list ptr unaligned, 2 21 2 reference_count fixed(17) unaligned, 2 22 2 ref_count_copy fixed(17) unaligned, 2 23 2 object structure unaligned, 2 24 3 start fixed(17), 2 25 3 finish fixed(17), 2 26 2 source structure unaligned, 2 27 3 segment fixed(11), 2 28 3 start fixed(23), 2 29 3 length fixed(11), 2 30 2 prefix bit(12) unaligned, 2 31 2 optimized bit(1) unaligned, 2 32 2 free_temps bit(1) unaligned, 2 33 2 LHS_in_RHS bit(1) unaligned, 2 34 2 statement_type bit(9) unaligned, 2 35 2 bits structure unaligned, 2 36 3 processed bit(1) unaligned, 2 37 3 put_in_profile bit(1) unaligned, 2 38 3 generated bit(1) unaligned, 2 39 3 snap bit(1) unaligned, 2 40 3 system bit(1) unaligned, 2 41 3 irreducible bit(1) unaligned, 2 42 3 checked bit(1) unaligned, 2 43 3 save_temps bit(1) unaligned, 2 44 3 suppress_warnings bit(1) unaligned, 2 45 3 force_nonquick bit(1) unaligned, 2 46 3 expanded_by_name bit(1) unaligned, 2 47 3 begins_loop bit(1) unaligned, 2 48 3 pad bit(24) unaligned; 2 49 2 50 /* END INCLUDE FILE ... statement.incl.pl1 */ 47 3 1 dcl m fixed bin(15); 3 2 dcl pl1_stat_$source_seg fixed bin(8) ext static; 3 3 dcl pl1_stat_$last_source fixed bin(15) ext static; 3 4 dcl pl1_stat_$source_list_ptr ptr ext static; 3 5 dcl source_list(0:source_list_length) ptr based(pl1_stat_$source_list_ptr); 3 6 dcl source_list_length fixed bin(15) internal static initial(255) options(constant); 3 7 3 8 dcl 1 source based(source_list(m)) aligned, 3 9 2 node_type unal bit(9), 3 10 2 source_id unal structure, 3 11 3 file_number bit(8), 3 12 3 line_number bit(14), 3 13 3 statement_number bit(5), 3 14 2 standard_object_info aligned structure, 3 15 3 uid bit(36), 3 16 3 dtm fixed bin(71), 3 17 2 seg_ptr unal ptr, 3 18 2 name unal ptr, 3 19 2 source_length unal fixed bin(24), 3 20 2 pathlen unal fixed bin(10), 3 21 2 pathname char(n refer(source.pathlen)); 48 4 1 /* BEGIN INCLUDE FILE ... token.incl.pl1 */ 4 2 4 3 dcl 1 token based aligned, 4 4 2 node_type bit(9) unaligned, 4 5 2 type bit(9) unaligned, 4 6 2 loc bit(18) unaligned, /* symtab offset for identifiers, "p" flag for constants */ 4 7 2 declaration ptr unaligned, 4 8 2 next ptr unaligned, 4 9 2 size fixed(9), 4 10 2 string char(n refer(token.size)); 4 11 4 12 /* END INCLUDE FILE ... token.incl.pl1 */ 49 5 1 /* BEGIN INCLUDE FILE ... nodes.incl.pl1 */ 5 2 5 3 /* Modified: 26 Dec 1979 by PCK to implement by name assignment */ 5 4 5 5 dcl ( block_node initial("000000001"b), 5 6 statement_node initial("000000010"b), 5 7 operator_node initial("000000011"b), 5 8 reference_node initial("000000100"b), 5 9 token_node initial("000000101"b), 5 10 symbol_node initial("000000110"b), 5 11 context_node initial("000000111"b), 5 12 array_node initial("000001000"b), 5 13 bound_node initial("000001001"b), 5 14 format_value_node initial("000001010"b), 5 15 list_node initial("000001011"b), 5 16 default_node initial("000001100"b), 5 17 machine_state_node initial("000001101"b), 5 18 source_node initial("000001110"b), 5 19 label_node initial("000001111"b), 5 20 cross_reference_node initial("000010000"b), 5 21 sf_par_node initial("000010001"b), 5 22 temporary_node initial("000010010"b), 5 23 label_array_element_node initial("000010011"b), 5 24 by_name_agg_node initial("000010100"b)) 5 25 bit(9) internal static aligned options(constant); 5 26 5 27 dcl 1 node based aligned, 5 28 2 type unal bit(9), 5 29 2 source_id unal structure, 5 30 3 file_number bit(8), 5 31 3 line_number bit(14), 5 32 3 statement_number bit(5); 5 33 5 34 /* END INCLUDE FILE ... nodes.incl.pl1 */ 50 51 52 on any_other system; /* In case of recursive faults ! */ 53 if pl1_stat_$phase <= 4 54 then do; 55 errno = pl1_stat_$phase + 333; 56 p = pl1_stat_$cur_statement; 57 end; 58 59 else do; 60 errno = 310; 61 p = cg_static_$cur_statement; 62 end; 63 if p = null 64 then if pl1_stat_$phase ^= 1 | cg_static_$debug 65 then do; 66 67 /* refuse to handle the condition */ 68 69 refuse: continue = "1"b; 70 return; 71 end; 72 73 else ; 74 75 else if p -> node.type ^= statement_node 76 then if p -> node.type ^= symbol_node | cg_static_$debug 77 then go to refuse; 78 79 cond = name; 80 if cond = "null_pointer" then go to ok; 81 if cond = "out_of_bounds" then goto ok; 82 if cond = "illegal_opcode" then goto ok; 83 if cond = "no_read_permission" then go to ok; 84 if cond = "no_write_permission" then go to ok; 85 if cond = "no_execute_permission" then go to ok; 86 if cond = "null_pointer" then goto ok; 87 if cond = "storage" 88 then do; 89 if pl1_stat_$phase = 2 /* semantics */ 90 then errno = 365; 91 go to ok; 92 end; 93 if cond = "size" then go to ok; 94 if cond = "fixedoverflow" then goto ok; 95 if cond = "illegal_modifier" then goto ok; 96 if cond = "not_in_call_bracket" then go to ok; 97 if cond = "not_in_execute_bracket" then go to ok; 98 if cond = "not_in_read_bracket" then go to ok; 99 if cond ^= "not_in_write_bracket" then go to refuse; 100 101 /* condition is one we recognize */ 102 103 104 ok: if ^cg_static_$debug 105 then do; 106 n = length (name); 107 allocate token in (tree_area) set (q); 108 q -> node.type = token_node; 109 q -> token.string = cond; 110 111 if p ^= null 112 then if p -> node.type = statement_node 113 then call error (errno, p, q); 114 else call error$omit_text (errno, p, q); 115 else call parse_error (errno, q); 116 117 /* call to error should abort compilation and never return */ 118 119 end; 120 goto refuse; 121 122 123 end; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 10/03/83 1007.7 pl1_signal_catcher.pl1 >spec>on>pl128d>pl1_signal_catcher.pl1 46 1 07/21/80 1546.3 pl1_tree_areas.incl.pl1 >ldd>include>pl1_tree_areas.incl.pl1 47 2 04/07/83 1635.0 statement.incl.pl1 >ldd>include>statement.incl.pl1 48 3 05/03/76 1320.4 source_list.incl.pl1 >ldd>include>source_list.incl.pl1 49 4 09/14/77 1705.7 token.incl.pl1 >ldd>include>token.incl.pl1 50 5 07/21/80 1546.3 nodes.incl.pl1 >ldd>include>nodes.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. any_other 000116 stack reference condition dcl 42 ref 52 cg_static_$cur_statement 000010 external static pointer dcl 24 ref 61 cg_static_$debug 000016 external static bit(1) dcl 24 ref 63 75 104 co_ptr parameter pointer dcl 20 ref 18 cond 000106 automatic char(32) unaligned dcl 24 set ref 79* 80 81 82 83 84 85 86 87 93 94 95 96 97 98 99 109 continue parameter bit(1) dcl 20 set ref 18 69* errno 000104 automatic fixed bin(17,0) dcl 24 set ref 55* 60* 89* 111* 114* 115* error 000020 constant entry external dcl 24 ref 111 error$omit_text 000022 constant entry external dcl 24 ref 114 info_ptr parameter pointer dcl 20 ref 18 length builtin function dcl 44 ref 106 mc_ptr parameter pointer dcl 20 ref 18 n 000105 automatic fixed bin(17,0) dcl 24 set ref 106* 107 107 name parameter char unaligned dcl 20 ref 18 79 106 node based structure level 1 dcl 5-27 null builtin function dcl 44 ref 63 111 p 000100 automatic pointer dcl 24 set ref 56* 61* 63 75 75 111 111 111* 114* parse_error 000024 constant entry external dcl 24 ref 115 pl1_stat_$cur_statement 000012 external static pointer dcl 24 ref 56 pl1_stat_$phase 000014 external static fixed bin(17,0) dcl 24 ref 53 55 63 89 pl1_stat_$tree_area_ptr 000026 external static pointer dcl 1-7 ref 107 q 000102 automatic pointer dcl 24 set ref 107* 108 109 111* 114* 115* size 3 based fixed bin(9,0) level 2 dcl 4-3 set ref 107* 109 statement_node constant bit(9) initial dcl 5-5 ref 75 111 string 4 based char level 2 dcl 4-3 set ref 109* symbol_node constant bit(9) initial dcl 5-5 ref 75 token based structure level 1 dcl 4-3 set ref 107 token_node constant bit(9) initial dcl 5-5 ref 108 tree_area based area(1024) dcl 1-4 ref 107 type based bit(9) level 2 packed unaligned dcl 5-27 set ref 75 75 108* 111 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. addr builtin function dcl 44 array_node internal static bit(9) initial dcl 5-5 block_node internal static bit(9) initial dcl 5-5 bound_node internal static bit(9) initial dcl 5-5 by_name_agg_node internal static bit(9) initial dcl 5-5 code automatic fixed bin(35,0) dcl 39 context_node internal static bit(9) initial dcl 5-5 cross_reference_node internal static bit(9) initial dcl 5-5 default_node internal static bit(9) initial dcl 5-5 fixed builtin function dcl 44 format_value_node internal static bit(9) initial dcl 5-5 ioa_ 000000 constant entry external dcl 24 label_array_element_node internal static bit(9) initial dcl 5-5 label_node internal static bit(9) initial dcl 5-5 list_node internal static bit(9) initial dcl 5-5 m automatic fixed bin(15,0) dcl 3-1 machine_state_node internal static bit(9) initial dcl 5-5 operator_node internal static bit(9) initial dcl 5-5 pl1_stat_$last_source external static fixed bin(15,0) dcl 3-3 pl1_stat_$source_list_ptr external static pointer dcl 3-4 pl1_stat_$source_seg external static fixed bin(8,0) dcl 3-2 pl1_stat_$xeq_tree_area_ptr external static pointer dcl 1-7 program_interrupt 000000 stack reference condition dcl 40 ptr builtin function dcl 44 reference_node internal static bit(9) initial dcl 5-5 sf_par_node internal static bit(9) initial dcl 5-5 source based structure level 1 dcl 3-8 source_list based pointer array dcl 3-5 source_list_length internal static fixed bin(15,0) initial dcl 3-6 source_node internal static bit(9) initial dcl 5-5 source_pt automatic pointer dcl 24 source_structure based structure level 1 packed unaligned dcl 35 statement based structure level 1 dcl 2-9 temporary_node internal static bit(9) initial dcl 5-5 xeq_tree_area based area(1024) dcl 1-5 NAMES DECLARED BY EXPLICIT CONTEXT. ok 000324 constant label dcl 104 ref 80 81 82 83 84 85 86 91 93 94 95 96 97 98 pl1_signal_catcher 000115 constant entry external dcl 18 refuse 000175 constant label dcl 69 ref 75 99 120 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 542 572 424 552 Length 1054 424 30 245 116 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME pl1_signal_catcher 94 external procedure is an external procedure. on unit on line 52 64 on unit STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME pl1_signal_catcher 000100 p pl1_signal_catcher 000102 q pl1_signal_catcher 000104 errno pl1_signal_catcher 000105 n pl1_signal_catcher 000106 cond pl1_signal_catcher THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out return enable ext_entry_desc int_entry alloc_based THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. error error$omit_text parse_error THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. cg_static_$cur_statement cg_static_$debug pl1_stat_$cur_statement pl1_stat_$phase pl1_stat_$tree_area_ptr LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 18 000110 52 000130 53 000145 55 000151 56 000153 57 000156 60 000157 61 000161 63 000164 69 000175 70 000200 73 000201 75 000202 79 000213 80 000221 81 000225 82 000231 83 000235 84 000241 85 000245 86 000251 87 000255 89 000261 91 000267 93 000270 94 000274 95 000300 96 000304 97 000310 98 000314 99 000320 104 000324 106 000327 107 000331 108 000345 109 000347 111 000352 114 000376 115 000412 120 000423 ----------------------------------------------------------- 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