COMPILATION LISTING OF SEGMENT speedtype_util_ Compiled by: Multics PL/I Compiler, Release 26a, of September 3, 1980 Compiled at: Honeywell LISD Phoenix, System M Compiled on: 01/06/81 1250.7 mst Tue Options: optimize map 1 /* ****************************************************** 2* * * 3* * * 4* * Copyright, (C) Honeywell Information Systems * 5* * Inc., 1980. * 6* * * 7* * * 8* ****************************************************** */ 9 10 speedtype_util_: rns: procedure; 11 12 /* This procedure is an internal interface of the Speedtype subsystem. 13* * Created on 02/03/76 by Bill Silver as notescript_util_. 14* * Changed on 06/13/77 by Bill Silver to speedtype_util_. 15* * Changed on 05/30/80 by Paul Benjamin to change dcl of bit_count. 16* * 17* * It contains entry points that are called to set up input and output 18* * segments for the expand_symbols and retain_symbols commands. 19**/ 20 21 /* ARGUMENTS */ 22 23 dcl arg_dir_name char (*); /* (I) Directory containing input or output segment. */ 24 dcl arg_ent_name char (*); /* (I) Entry name of input or output segment. */ 25 dcl arg_ecode fixed bin (35); /* (O) Returned error_table_ code. */ 26 dcl arg_in_ptr ptr; /* (I/O) Pointer to input segment. */ 27 dcl arg_out_ptr ptr; /* (I/O) Pointer to output segment. */ 28 dcl arg_seg_len fixed bin (21); /* (I/O) Length of input or output segment. */ 29 dcl arg_temp_flag bit (1); /* (I) ON => copy output segment into input segment. */ 30 31 /* AUTOMATIC DATA */ 32 33 dcl bit_count fixed bin (24); /* Bit count of input and output segments. */ 34 dcl ecode fixed bin (35); /* Error table code. */ 35 dcl in_ptr ptr; /* Pointer to input segment. */ 36 dcl out_ptr ptr; /* Pointer to output segment. */ 37 dcl seg_len fixed bin (21); /* Length of an output segment. */ 38 dcl words fixed bin (19); /* Size of output segment at completion of command. */ 39 40 41 /* BASED DATA */ 42 43 dcl based_data char (seg_len) based; /* Used to copy temporary output segment. */ 44 45 /* EXTERNAL ENTRIES */ 46 47 dcl (null) builtin; 48 49 dcl error_table_$zero_length_seg fixed bin (35) external; 50 51 dcl hcs_$get_max_length_seg entry (ptr, fixed bin (19), fixed bin (35)); 52 dcl hcs_$initiate_count entry (char(*), char(*), char(*), fixed bin(24), 53 fixed bin(2), ptr, fixed bin(35)); 54 dcl hcs_$make_seg entry (char (*), char (*), char (*), fixed bin (5), ptr, fixed bin (35)); 55 dcl hcs_$set_bc_seg entry (ptr, fixed bin(24), fixed bin(35)); 56 dcl hcs_$truncate_seg entry (ptr, fixed bin (19), fixed bin (35)); 57 /* */ 58 init_input_seg: entry (arg_dir_name, arg_ent_name, arg_in_ptr, arg_seg_len, arg_ecode); 59 60 /* This entry will initiate an input segment. it will return a pointer 61* * to this segment and will return the length of the segment. 62**/ 63 call hcs_$initiate_count (arg_dir_name, arg_ent_name, "", bit_count, (0), in_ptr, ecode); 64 if in_ptr = null () /* Did we get a pointer to segment? */ 65 then do; /* No, error. */ 66 arg_ecode = ecode; 67 return; 68 end; 69 70 if bit_count = 0 /* Is this a zero length segment? */ 71 then do; /* Yes, cannot process input segment. */ 72 arg_ecode = error_table_$zero_length_seg; 73 return; 74 end; 75 76 arg_in_ptr = in_ptr; /* Return pointer to input segment. */ 77 arg_seg_len = bit_count / 9; /* Return length of input segment. */ 78 arg_ecode = 0; /* No error, make sure no error code. */ 79 return; 80 /* */ 81 init_output_seg: entry (arg_dir_name, arg_ent_name, arg_out_ptr, arg_seg_len, arg_ecode); 82 83 /* This entry will initialize an output segment. If the segment does not 84* * exist it will be created. It will return a pointer to the segment 85* * and it will return the maximum length of the segment in characters. 86**/ 87 if arg_dir_name ^= " " /* Blank name => use process directory. */ 88 then call hcs_$make_seg (arg_dir_name, arg_ent_name, "", 01010b, out_ptr, ecode); 89 else call hcs_$make_seg ("", arg_ent_name, "", 01010b, out_ptr, ecode); 90 91 if out_ptr = null () /* Did we get a pointer to the output segment? */ 92 then do; /* No. */ 93 arg_ecode = ecode; 94 return; 95 end; 96 97 call hcs_$get_max_length_seg (out_ptr, words, ecode); 98 if ecode ^= 0 99 then do; 100 arg_ecode = ecode; 101 return; 102 end; 103 104 arg_out_ptr = out_ptr; /* Return a pointer to the output segment. */ 105 arg_seg_len = words * 4; /* Return max size of segment in characters. */ 106 arg_ecode = 0; 107 return; 108 /* */ 109 fix_output_seg: entry (arg_temp_flag, arg_in_ptr, arg_out_ptr, arg_seg_len, arg_ecode); 110 111 /* This entry will fix an output segment so that its actual size 112* * and bit count are correct. 113**/ 114 in_ptr = arg_in_ptr; /* Copy arguments. */ 115 out_ptr = arg_out_ptr; 116 seg_len = arg_seg_len; 117 if arg_temp_flag /* Is output segment a temporary? */ 118 then do; /* Yes, copy output into input segment. */ 119 in_ptr -> based_data = out_ptr -> based_data; 120 call hcs_$truncate_seg (out_ptr, 0, ecode); 121 out_ptr = in_ptr; /* Input and output segments are now the same. */ 122 end; 123 124 words = (seg_len + 3) / 4; /* Get number of words needed by output segment. */ 125 call hcs_$truncate_seg (out_ptr, words, ecode); 126 if ecode ^= 0 /* Error trying to adjust size of output segment. */ 127 then do; /* Yes there was an error. */ 128 arg_ecode = ecode; 129 return; 130 end; 131 132 bit_count = seg_len * 9; /* Get number of bits in output segment. */ 133 call hcs_$set_bc_seg (out_ptr, bit_count, ecode); 134 135 arg_ecode = ecode; 136 return; 137 138 end speedtype_util_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 01/06/81 1247.7 speedtype_util_.pl1 >spec>on>speed>speedtype_util_.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. arg_dir_name parameter char unaligned dcl 23 set ref 58 63* 81 87 87* arg_ecode parameter fixed bin(35,0) dcl 25 set ref 58 66* 72* 78* 81 93* 100* 106* 109 128* 135* arg_ent_name parameter char unaligned dcl 24 set ref 58 63* 81 87* 89* arg_in_ptr parameter pointer dcl 26 set ref 58 76* 109 114 arg_out_ptr parameter pointer dcl 27 set ref 81 104* 109 115 arg_seg_len parameter fixed bin(21,0) dcl 28 set ref 58 77* 81 105* 109 116 arg_temp_flag parameter bit(1) unaligned dcl 29 ref 109 117 based_data based char unaligned dcl 43 set ref 119* 119 bit_count 000100 automatic fixed bin(24,0) dcl 33 set ref 63* 70 77 132* 133* ecode 000101 automatic fixed bin(35,0) dcl 34 set ref 63* 66 87* 89* 93 97* 98 100 120* 125* 126 128 133* 135 error_table_$zero_length_seg 000010 external static fixed bin(35,0) dcl 49 ref 72 hcs_$get_max_length_seg 000012 constant entry external dcl 51 ref 97 hcs_$initiate_count 000014 constant entry external dcl 52 ref 63 hcs_$make_seg 000016 constant entry external dcl 54 ref 87 89 hcs_$set_bc_seg 000020 constant entry external dcl 55 ref 133 hcs_$truncate_seg 000022 constant entry external dcl 56 ref 120 125 in_ptr 000102 automatic pointer dcl 35 set ref 63* 64 76 114* 119 121 null builtin function dcl 47 ref 64 91 out_ptr 000104 automatic pointer dcl 36 set ref 87* 89* 91 97* 104 115* 119 120* 121* 125* 133* seg_len 000106 automatic fixed bin(21,0) dcl 37 set ref 116* 119 119 124 132 words 000107 automatic fixed bin(19,0) dcl 38 set ref 97* 105 124* 125* NAMES DECLARED BY EXPLICIT CONTEXT. fix_output_seg 000355 constant entry external dcl 109 init_input_seg 000037 constant entry external dcl 58 init_output_seg 000161 constant entry external dcl 81 rns 000015 constant entry external dcl 10 speedtype_util_ 000024 constant entry external dcl 10 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 636 662 501 646 Length 1046 501 24 147 135 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME rns 109 external procedure is an external procedure. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME rns 000100 bit_count rns 000101 ecode rns 000102 in_ptr rns 000104 out_ptr rns 000106 seg_len rns 000107 words rns THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out return ext_entry ext_entry_desc trunc_fx2 divide_fx1 THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. hcs_$get_max_length_seg hcs_$initiate_count hcs_$make_seg hcs_$set_bc_seg hcs_$truncate_seg THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$zero_length_seg LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 10 000014 58 000031 63 000062 64 000125 66 000131 67 000134 70 000135 72 000137 73 000143 76 000144 77 000146 78 000155 79 000156 81 000157 87 000201 89 000251 91 000310 93 000314 94 000317 97 000320 98 000333 100 000335 101 000337 104 000340 105 000343 106 000346 107 000347 109 000350 114 000365 115 000370 116 000374 117 000376 119 000403 120 000406 121 000422 124 000424 125 000434 126 000447 128 000451 129 000453 132 000454 133 000457 135 000472 136 000475 ----------------------------------------------------------- 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