COMPILATION LISTING OF SEGMENT pps_print Compiled by: Multics PL/I Compiler, Release 27d, of October 11, 1982 Compiled at: Honeywell LISD Phoenix, System M Compiled on: 11/18/82 1649.4 mst Thu Options: optimize map 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 pps_print: proc (iocb_ptr, current_string, table_ptr, mvt_entry, code); 12 13 14 15 /* PARAMETERS */ 16 17 18 dcl a_debug_sw bit (1); 19 dcl code fixed bin (35); 20 dcl current_string char (*); 21 dcl iocb_ptr ptr; 22 dcl mvt_entry entry (char (*), char (*)) variable; 23 dcl table_ptr ptr; 24 25 26 /* ENTRY CONSTANTS */ 27 28 29 dcl ioa_$nnl entry options (variable); 30 dcl iox_$write_record entry (ptr, ptr, fixed bin (21), fixed bin (35)); 31 32 33 /* EXTERNAL DATA */ 34 35 36 37 38 /* BUILTIN FUNCTIONS */ 39 40 41 dcl addr builtin; 42 dcl fixed builtin; 43 dcl length builtin; 44 dcl min builtin; 45 dcl null builtin; 46 dcl substr builtin; 47 dcl unspec builtin; 48 49 50 /* AUTOMATIC STORAGE */ 51 52 53 dcl curr_i fixed bin ; 54 dcl current_string_len fixed bin; 55 dcl hold_i fixed bin; 56 dcl i fixed bin; 57 dcl len fixed bin; 58 dcl stop_index fixed bin; 59 dcl temp_string char (133); 60 61 dcl 1 hex_data aligned, 62 2 upper_bit bit (1) unal, 63 2 digit (2) bit (4) unal; 64 65 66 /* CONSTANTS */ 67 68 69 dcl HEX (0:15) char (1) static internal options (constant) init ( 70 "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"); 71 dcl OVERSTRIKE char (1) static internal options (constant) init ("+"); 72 73 74 /* INTERNAL STATIC */ 75 76 77 dcl debug_sw bit (1) static init ("0"b); 78 dcl hold_string char (133) static; 79 dcl hold_string_len fixed bin static; 80 81 82 /* BASED VARIABLES */ 83 84 85 dcl table (0:127-32, 0:255) char (1) unal based (table_ptr); 86 87 code = 0; 88 89 90 if table_ptr = null () then do; 91 call mvt_entry (current_string, hold_string); 92 if ^debug_sw then 93 call iox_$write_record (iocb_ptr, addr (hold_string), length (hold_string), code); 94 return; 95 end; 96 97 98 current_string_len = length (current_string); 99 if current_string_len = 0 then goto no_overstrike; 100 101 102 if substr (current_string, 1, 1) ^= OVERSTRIKE then do; 103 no_overstrike: 104 call Output (); 105 if code ^= 0 then return; 106 if current_string_len > 0 then do; 107 call mvt_entry (current_string, hold_string); 108 end; 109 hold_string_len = current_string_len; 110 return; 111 end; 112 113 114 stop_index = min (current_string_len, hold_string_len); 115 do i = 2 to stop_index; 116 117 hold_i = fixed (unspec (substr (hold_string, i, 1)), 9); 118 curr_i = fixed (unspec (substr (current_string, i, 1)), 9)-32; 119 if curr_i ^= 0 then 120 substr (hold_string, i, 1) = table (curr_i, hold_i); 121 122 end; 123 124 125 if current_string_len > hold_string_len then do; 126 stop_index = stop_index+1; 127 len = current_string_len-hold_string_len; 128 call mvt_entry (substr (current_string, stop_index, len), temp_string); 129 substr (hold_string, stop_index, len) = substr (temp_string, stop_index, len); 130 hold_string_len = current_string_len; 131 end; 132 133 134 return; 135 136 init: entry (); 137 138 139 hold_string_len = 0; 140 141 142 return; 143 144 flush: entry (iocb_ptr, code); 145 146 147 code = 0; 148 call Output (); 149 return; 150 151 set_debug_sw: entry (a_debug_sw); 152 153 154 debug_sw = a_debug_sw; 155 return; 156 157 Output: proc (); 158 159 160 if hold_string_len = 0 then return; 161 if debug_sw then do; 162 do i = 1 to length (hold_string); 163 unspec (hex_data) = unspec (substr (hold_string, i, 1)); 164 call ioa_$nnl ("^[1^; ^]^a^a^x", hex_data.upper_bit, HEX (fixed (hex_data.digit (1), 4)), HEX (fixed (hex_data.digit (2), 4))); 165 end; 166 call ioa_$nnl ("^/"); 167 end; 168 else call iox_$write_record (iocb_ptr, addr (hold_string), (length (hold_string)), code); 169 hold_string_len = 0; 170 return; 171 172 173 end Output; 174 175 176 177 end pps_print; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/18/82 1629.4 pps_print.pl1 >dumps>old>recomp>pps_print.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. HEX 000000 constant char(1) initial array unaligned dcl 69 set ref 164* 164* OVERSTRIKE 000470 constant char(1) initial unaligned dcl 71 ref 102 a_debug_sw parameter bit(1) unaligned dcl 18 ref 151 154 addr builtin function dcl 41 ref 92 92 168 168 code parameter fixed bin(35,0) dcl 19 set ref 11 87* 92* 105 144 147* 168* curr_i 000100 automatic fixed bin(17,0) dcl 53 set ref 118* 119 119 current_string parameter char unaligned dcl 20 set ref 11 91* 98 102 107* 118 128 128 current_string_len 000101 automatic fixed bin(17,0) dcl 54 set ref 98* 99 106 109 114 125 127 130 debug_sw 000010 internal static bit(1) initial unaligned dcl 77 set ref 92 154* 161 digit 0(01) 000150 automatic bit(4) array level 2 packed unaligned dcl 61 set ref 164 164 fixed builtin function dcl 42 ref 117 118 164 164 hex_data 000150 automatic structure level 1 dcl 61 set ref 163* hold_i 000102 automatic fixed bin(17,0) dcl 55 set ref 117* 119 hold_string 000011 internal static char(133) unaligned dcl 78 set ref 91* 92 92 92 92 107* 117 119* 129* 162 163 168 168 168 hold_string_len 000053 internal static fixed bin(17,0) dcl 79 set ref 109* 114 125 127 130* 139* 160 169* i 000103 automatic fixed bin(17,0) dcl 56 set ref 115* 117 118 119* 162* 163* ioa_$nnl 000054 constant entry external dcl 29 ref 164 166 iocb_ptr parameter pointer dcl 21 set ref 11 92* 144 168* iox_$write_record 000056 constant entry external dcl 30 ref 92 168 len 000104 automatic fixed bin(17,0) dcl 57 set ref 127* 128 128 129 129 length builtin function dcl 43 ref 92 92 98 162 168 min builtin function dcl 44 ref 114 mvt_entry parameter entry variable dcl 22 ref 11 91 107 128 null builtin function dcl 45 ref 90 stop_index 000105 automatic fixed bin(17,0) dcl 58 set ref 114* 115 126* 126 128 128 129 129 substr builtin function dcl 46 set ref 102 117 118 119* 128 128 129* 129 163 table based char(1) array unaligned dcl 85 ref 119 table_ptr parameter pointer dcl 23 ref 11 90 119 temp_string 000106 automatic char(133) unaligned dcl 59 set ref 128* 129 unspec builtin function dcl 47 set ref 117 118 163* 163 upper_bit 000150 automatic bit(1) level 2 packed unaligned dcl 61 set ref 164* NAMES DECLARED BY EXPLICIT CONTEXT. Output 000343 constant entry internal dcl 157 ref 103 148 flush 000310 constant entry external dcl 144 init 000274 constant entry external dcl 136 no_overstrike 000125 constant label dcl 103 ref 99 pps_print 000031 constant entry external dcl 11 set_debug_sw 000326 constant entry external dcl 151 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 556 636 471 566 Length 1016 471 60 144 64 44 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME pps_print 158 external procedure is an external procedure. Output internal procedure shares stack frame of external procedure pps_print. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 debug_sw pps_print 000011 hold_string pps_print 000053 hold_string_len pps_print STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME pps_print 000100 curr_i pps_print 000101 current_string_len pps_print 000102 hold_i pps_print 000103 i pps_print 000104 len pps_print 000105 stop_index pps_print 000106 temp_string pps_print 000150 hex_data pps_print THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_cs call_var_desc call_ext_out_desc call_ext_out return shorten_stack ext_entry ext_entry_desc THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. ioa_$nnl iox_$write_record NO EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 11 000024 87 000047 90 000050 91 000054 92 000070 94 000114 98 000115 99 000117 102 000120 103 000125 105 000126 106 000130 107 000132 109 000151 110 000154 114 000155 115 000161 117 000167 118 000177 119 000212 122 000223 125 000225 126 000231 127 000232 128 000234 129 000261 130 000270 134 000272 136 000273 139 000301 142 000303 144 000304 147 000320 148 000321 149 000322 151 000323 154 000333 155 000342 157 000343 160 000344 161 000350 162 000352 163 000357 164 000365 165 000426 166 000430 167 000443 168 000444 169 000465 170 000467 ----------------------------------------------------------- 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