COMPILATION LISTING OF SEGMENT fc_menu_window Compiled by: Multics PL/I Compiler, Release 33e, of October 6, 1992 Compiled at: CGI Compiled on: 2000-04-17_1933.23_Mon_mdt Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* *********************************************************** */ 6 /* 7* This is the FORTRAN/COBOL interface to the window system. It is a very primitive interface, consisting 8* only of those entries absolutely necessary for the operation of the menu subroutines. These are 9* create, destroy, and change. 10**/ 11 /* Written April 1982 by Chris Jones */ 12 /* Modified 20 August 1984 by Jon A. Rochlis for MR11 video. Changes the 13* reference window_position_info.mbz to window_position_info.column */ 14 15 /* format: style4,delnl,insnl,indattr,ifthen,declareind10,dclind10 */ 16 fc_menu_window: 17 proc; 18 19 signal bad_call_; /* not a true entrypoint */ 20 return; 21 22 /* Parameters */ 23 24 dcl p_code fixed bin (35) parameter; /* (Output) standard status code */ 25 dcl p_first_line fixed bin (35) parameter; /* (Input) where the window is to start */ 26 dcl p_height fixed bin (35) parameter; /* (Input) how high the window is to be */ 27 dcl p_switch_name char (*) parameter; /* (Input) name of the switch the window is attached to */ 28 dcl p_window_id fixed bin (35) parameter; /* (Input/Output) how a window is identified */ 29 dcl p_window_ptr ptr parameter; /* (Input) used to add a window to the array */ 30 31 /* Automatic variables */ 32 33 dcl 1 auto_window_info like window_position_info; 34 dcl window_iocb_ptr ptr; 35 36 /* Based variables */ 37 38 dcl THE_AREA area based (get_system_free_area_ ()); 39 dcl window_array (fc_menu_data_$window_array_size) ptr based (fc_menu_data_$window_array_ptr); 40 41 /* Constants */ 42 43 dcl WINDOW_ARRAY_SIZE_INCREMENT 44 fixed bin static init (3) options (constant); 45 /* External variables and entries */ 46 47 dcl get_system_free_area_ entry () returns (ptr); 48 dcl iox_$control entry (ptr, char (*), ptr, fixed bin (35)); 49 dcl iox_$find_iocb entry (char (*), ptr, fixed bin (35)); 50 dcl window_$clear_window entry (ptr, fixed bin (35)); 51 dcl window_$create entry (ptr, ptr, ptr, fixed bin (35)); 52 dcl window_$destroy entry (ptr, fixed bin (35)); 53 54 dcl error_table_$no_operation 55 fixed bin (35) ext static; 56 dcl error_table_$out_of_sequence 57 fixed bin (35) ext static; 58 dcl video_et_$overlaps_screen_edge 59 fixed bin (35) ext static; 60 61 dcl fc_menu_data_$auto_window 62 bit (1) aligned ext static; 63 dcl fc_menu_data_$initialized 64 bit (1) aligned ext static; 65 dcl 1 fc_menu_data_$user_io_window_info 66 like window_position_info ext static aligned; 67 dcl fc_menu_data_$window_array_ptr 68 ptr ext static; 69 dcl fc_menu_data_$window_array_size 70 fixed bin ext static; 71 dcl video_data_$terminal_iocb 72 ptr ext static; 73 74 /* Builtins and conditions */ 75 76 dcl (addr, null) builtin; 77 78 dcl (bad_call_) condition; 79 80 create: 81 entry (p_first_line, p_height, p_switch_name, p_window_id, p_code); 82 83 call must_have_initialized; 84 call validate_origin_and_height; 85 call iox_$find_iocb (p_switch_name, window_iocb_ptr, p_code); 86 if p_code ^= 0 then 87 return; 88 auto_window_info.version = window_position_info_version_1; 89 auto_window_info.column = 0; 90 auto_window_info.line = fc_menu_data_$user_io_window_info.line + p_first_line - 1; 91 auto_window_info.width = 0; /* not used currently */ 92 auto_window_info.height = p_height; 93 call window_$create (video_data_$terminal_iocb, addr (auto_window_info), window_iocb_ptr, p_code); 94 if p_code ^= 0 then 95 return; 96 call add_to_window_array_proc (window_iocb_ptr); 97 p_window_id = pack_ptr (window_iocb_ptr); /* pack the pointer into an integer */ 98 return; 99 100 /* Entry to destroy a previously created window. */ 101 102 destroy: 103 entry (p_window_id, p_code); 104 105 call must_have_initialized; 106 window_iocb_ptr = unpack_ptr (p_window_id); 107 call remove_from_window_array (window_iocb_ptr); 108 call window_$destroy (window_iocb_ptr, p_code); 109 if p_code = 0 then 110 p_window_id = 0; 111 return; 112 113 /* Entry to change the size and/or position of a window. */ 114 change: 115 entry (p_window_id, p_first_line, p_height, p_code); 116 117 call must_have_initialized; 118 call validate_origin_and_height; 119 window_iocb_ptr = unpack_ptr (p_window_id); 120 auto_window_info.version = window_position_info_version_1; 121 auto_window_info.column = 0; 122 auto_window_info.line = fc_menu_data_$user_io_window_info.line + p_first_line - 1; 123 auto_window_info.width = 0; /* not used currently */ 124 auto_window_info.height = p_height; 125 call iox_$control (window_iocb_ptr, "set_window_info", addr (auto_window_info), p_code); 126 return; 127 128 clear_window: 129 entry (p_window_id, p_code); 130 131 window_iocb_ptr = unpack_ptr (p_window_id); 132 call window_$clear_window (window_iocb_ptr, p_code); 133 return; 134 135 add_to_window_array: 136 entry (p_window_ptr); 137 138 call add_to_window_array_proc (p_window_ptr); 139 return; 140 141 /* Routine to add a newly created window to the array of windows we will destroy on termination of this package. 142* This routine handles the case of growing the window_array if necessary. */ 143 144 add_to_window_array_proc: 145 proc (window_ptr); 146 147 dcl window_ptr ptr; /* the id to add to the array */ 148 149 dcl window_array_idx fixed bin; /* index into window_array */ 150 151 do window_array_idx = 1 to fc_menu_data_$window_array_size while (window_array (window_array_idx) ^= null ()); 152 end; 153 if window_array_idx > fc_menu_data_$window_array_size then do; 154 /* must grow window_array */ 155 156 begin; /* so we can define some tricky arrays */ 157 158 dcl new_window_array_end_ptr 159 ptr; 160 dcl old_window_array_ptr ptr; 161 dcl old_window_array_size fixed bin; 162 163 dcl old_window_array (old_window_array_size) ptr based (old_window_array_ptr); 164 dcl window_array_beginning (old_window_array_size) ptr based (fc_menu_data_$window_array_ptr); 165 dcl window_array_end (WINDOW_ARRAY_SIZE_INCREMENT) ptr based (new_window_array_end_ptr); 166 167 old_window_array_ptr = fc_menu_data_$window_array_ptr; 168 /* save so we can access after creating new one */ 169 old_window_array_size = fc_menu_data_$window_array_size; 170 window_array_idx = fc_menu_data_$window_array_size + 1; 171 /* this is where the new free slot will be */ 172 173 fc_menu_data_$window_array_size = fc_menu_data_$window_array_size + WINDOW_ARRAY_SIZE_INCREMENT; 174 allocate window_array in (THE_AREA) set (fc_menu_data_$window_array_ptr); 175 new_window_array_end_ptr = addr (window_array (window_array_idx)); 176 window_array_beginning (*) = old_window_array (*); 177 /* copy all the old values */ 178 free old_window_array; /* all done with this now */ 179 window_array_end (*) = null (); 180 end; /* the begin */ 181 end; /* the do */ 182 183 window_array (window_array_idx) = window_ptr; 184 185 end add_to_window_array_proc; 186 187 remove_from_window_array: 188 proc (window_ptr); 189 190 dcl window_ptr ptr; 191 192 dcl window_array_idx fixed bin; 193 194 do window_array_idx = 1 to fc_menu_data_$window_array_size 195 while (window_array (window_array_idx) ^= window_ptr); 196 end; 197 198 if window_array_idx <= fc_menu_data_$window_array_size then 199 if window_array (window_array_idx) = window_ptr then 200 window_array (window_array_idx) = null (); 201 202 end remove_from_window_array; 203 204 pack_ptr: 205 proc (p) returns (fixed bin (35)); 206 207 dcl p ptr; 208 209 dcl pp ptr unal based; 210 dcl ptr_as_integer fixed bin (35); 211 212 addr (ptr_as_integer) -> pp = p; 213 return (ptr_as_integer); 214 215 end pack_ptr; 216 217 unpack_ptr: 218 proc (pp) returns (ptr); 219 220 dcl pp fixed bin (35); 221 222 dcl packed_ptr ptr unal based (addr (pp)); 223 224 return (packed_ptr); 225 226 end unpack_ptr; 227 228 /* Routine to make sure we've initialized, and to make sure we aren't being called if automatic windows were specified */ 229 must_have_initialized: 230 proc; 231 232 if ^fc_menu_data_$initialized then 233 goto HAVE_NOT_INITIALIZED; 234 if fc_menu_data_$auto_window then 235 goto ILLEGAL_WINDOW_OPERATION; 236 237 end must_have_initialized; 238 239 HAVE_NOT_INITIALIZED: 240 p_code = error_table_$out_of_sequence; 241 return; 242 243 ILLEGAL_WINDOW_OPERATION: 244 p_code = error_table_$no_operation; 245 return; 246 247 validate_origin_and_height: 248 proc; 249 250 if (p_first_line < 1) 251 | (p_first_line + p_height 252 > fc_menu_data_$user_io_window_info.line + fc_menu_data_$user_io_window_info.height) then 253 goto ILLEGAL_WINDOW_SIZE; 254 end validate_origin_and_height; 255 256 ILLEGAL_WINDOW_SIZE: 257 p_code = video_et_$overlaps_screen_edge; 258 return; 259 1 1 /* BEGIN INCLUDE FILE ... window_control_info.incl.pl1 JRD */ 1 2 /* format: style3 */ 1 3 1 4 /* Modified 26 January 1982 by William York to add the set_more_handler 1 5* and reset_more_handler control orders. */ 1 6 /* Modified October 1982 by WMY to add set and get_token_characters, 1 7* set and get_more_prompt. */ 1 8 /* Modified February 1983 by WMY to add the line_editor_key_binding_info 1 9* structure. */ 1 10 /* Modified 30 September 1983 by Jon A. Rochlis to add the origin.column for 1 11* partial screen width windows. */ 1 12 /* Modified 9 October 1983 by JR to add version 1 window_edit_line_info. 1 13* This should be removed when window_info.incl.pl1 is created. */ 1 14 /* Modified 29 February 1984 by Barmar to add version 1 1 15* get_editor_key_bindings_info. */ 1 16 /* Modified 1 March 1984 by Barmar to add version 1 1 17* set_editor_key_bindings_info. */ 1 18 /* Modified 2 March 1984 by Barmar to upgrade to version 3 1 19* line_editor_key_bindings_info, which includes the name, description, and 1 20* info path */ 1 21 1 22 /* structure for the set_window_info and get_window_info 1 23* control orders. */ 1 24 1 25 dcl 1 window_position_info 1 26 based (window_position_info_ptr), 1 27 2 version fixed bin, 1 28 2 origin, 1 29 3 column fixed bin, 1 30 3 line fixed bin, 1 31 2 extent, 1 32 3 width fixed bin, 1 33 3 height fixed bin; 1 34 1 35 dcl (window_position_info_version, window_position_info_version_1) 1 36 fixed bin internal static init (1) options (constant); 1 37 dcl window_position_info_ptr 1 38 pointer; 1 39 1 40 /* structure for the set_window_status and get_window_status 1 41* control orders */ 1 42 1 43 declare window_status_info_ptr 1 44 pointer; 1 45 declare 1 window_status_info 1 46 aligned based (window_status_info_ptr), 1 47 2 version fixed bin, 1 48 2 status_string bit (36) aligned; /* string (window_status) */ 1 49 /* see window_status.incl.pl1 for the contents of this string */ 1 50 1 51 1 52 declare (window_status_version, window_status_version_1) 1 53 fixed bin internal static init (1) options (constant); 1 54 1 55 /* info structure for the set_more_responses and get_more_responses control 1 56* orders */ 1 57 1 58 1 59 dcl 1 more_responses_info 1 60 aligned based (more_responses_info_ptr), 1 61 2 version fixed bin, 1 62 2 n_yeses fixed bin, /* how many valid characters in the strings below */ 1 63 2 n_noes fixed bin, 1 64 2 yeses char (32) unaligned, 1 65 2 noes char (32) unaligned; 1 66 1 67 dcl (more_responses_info_version_1, more_responses_version) 1 68 fixed bin internal static init (1) options (constant); 1 69 dcl more_responses_info_ptr 1 70 pointer; 1 71 1 72 /* structure for the set_break_table and get_break_table 1 73* control orders */ 1 74 1 75 declare break_table_ptr pointer; 1 76 declare 1 break_table_info aligned based (break_table_ptr), 1 77 2 version fixed bin, 1 78 2 breaks (0:127) bit (1) unaligned; 1 79 1 80 declare (break_table_info_version, break_table_info_version_1) 1 81 fixed bin init (1) internal static options (constant); 1 82 1 83 declare 1 more_handler_info aligned based (more_handler_info_ptr), 1 84 2 version fixed bin, 1 85 2 flags unaligned, 1 86 3 old_handler_valid 1 87 bit(1), 1 88 3 pad bit(35), 1 89 2 more_handler entry (pointer, bit(1) aligned), 1 90 2 old_more_handler entry (pointer, bit(1) aligned); 1 91 1 92 declare more_handler_info_ptr pointer; 1 93 1 94 declare (more_handler_info_version, more_handler_info_version_3) 1 95 fixed bin internal static options (constant) init (3); 1 96 1 97 declare 1 token_characters_info aligned based (token_characters_info_ptr), 1 98 2 version char(8), 1 99 2 token_character_count 1 100 fixed bin, 1 101 2 token_characters 1 102 char (128) unaligned; 1 103 1 104 declare token_characters_info_ptr pointer; 1 105 1 106 declare token_characters_info_version_1 char(8) internal static options (constant) init ("wtci0001"); 1 107 1 108 declare 1 more_prompt_info aligned based (more_prompt_info_ptr), 1 109 2 version char(8), 1 110 2 more_prompt char(80); 1 111 1 112 declare more_prompt_info_ptr pointer; 1 113 1 114 declare more_prompt_info_version_1 char(8) static options (constant) init ("wsmp0001"); 1 115 1 116 /* Line editor stuff ... */ 1 117 1 118 dcl line_editor_key_binding_info_ptr 1 119 pointer; 1 120 1 121 dcl line_editor_binding_count 1 122 fixed bin; 1 123 dcl line_editor_longest_sequence 1 124 fixed bin; 1 125 /* For each binding, action defines what to do for that sequence. Constants 1 126* are defined in window_editor_values.incl.pl1. Only if action is set to 1 127* EXTERNAL_ROUTINE does the editor_routine entry variable get examined. */ 1 128 1 129 dcl 1 line_editor_key_binding_info 1 130 aligned based (line_editor_key_binding_info_ptr), 1 131 2 version char(8), 1 132 2 binding_count fixed bin, 1 133 2 longest_sequence fixed bin, 1 134 2 bindings (line_editor_binding_count refer 1 135 (line_editor_key_binding_info.binding_count)), 1 136 3 sequence char(line_editor_longest_sequence refer 1 137 (line_editor_key_binding_info.longest_sequence)) varying, 1 138 3 action fixed bin, 1 139 3 numarg_action fixed binary, 1 140 3 editor_routine entry (pointer, fixed bin(35)), 1 141 3 name char (64) varying unaligned, 1 142 3 description char (256) varying unaligned, 1 143 3 info_path unaligned, 1 144 4 info_dir char (168), 1 145 4 info_entry char (32); 1 146 1 147 1 148 dcl line_editor_key_binding_info_version_3 1 149 char(8) static options (constant) init ("lekbi003"); 1 150 1 151 dcl 1 get_editor_key_bindings_info aligned based (get_editor_key_bindings_info_ptr), 1 152 2 version char (8), 1 153 2 flags, 1 154 3 entire_state bit (1) unaligned, 1 155 3 mbz bit (35) unaligned, 1 156 2 key_binding_info_ptr ptr, 1 157 2 entire_state_ptr ptr; 1 158 1 159 dcl get_editor_key_bindings_info_ptr ptr; 1 160 dcl get_editor_key_bindings_info_version_1 char (8) int static options (constant) init ("gekbi_01"); 1 161 1 162 dcl 1 set_editor_key_bindings_info aligned 1 163 based (set_editor_key_bindings_info_ptr), 1 164 2 version char (8), 1 165 2 flags, 1 166 3 replace bit (1) unaligned, 1 167 3 update bit (1) unaligned, 1 168 3 mbz bit (34) unaligned, 1 169 2 key_binding_info_ptr ptr; 1 170 1 171 dcl set_editor_key_bindings_info_ptr ptr; 1 172 dcl set_editor_key_bindings_info_version_1 char (8) int static options (constant) init ("sekbi_01"); 1 173 1 174 /* This should be moved to window_info.incl.pl1 when that include file is 1 175* created. JR 2/1/84 */ 1 176 1 177 dcl 1 window_edit_line_info 1 178 based (window_edit_line_info_ptr), 1 179 2 version char (8), 1 180 2 line_ptr ptr, 1 181 2 line_length fixed bin (21); /* later we will hack initial cursor position, key bindings, etc. */ 1 182 1 183 dcl window_edit_line_info_version_1 1 184 char (8) static options (constant) init ("wedl0001"); 1 185 1 186 dcl window_edit_line_info_ptr 1 187 ptr; 1 188 1 189 /* END INCLUDE FILE window_control_info.incl.pl1 */ 260 261 262 end fc_menu_window; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 04/17/00 1933.2 fc_menu_window.pl1 >udd>sm>ds>w>ml>fc_menu_window.pl1 260 1 09/12/84 1016.7 window_control_info.incl.pl1 >ldd>incl>window_control_info.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. THE_AREA based area(1024) dcl 38 ref 174 WINDOW_ARRAY_SIZE_INCREMENT constant fixed bin(17,0) initial dcl 43 ref 165 173 addr builtin function dcl 76 ref 93 93 125 125 175 212 224 auto_window_info 000100 automatic structure level 1 unaligned dcl 33 set ref 93 93 125 125 bad_call_ 000110 stack reference condition dcl 78 ref 19 column 1 000100 automatic fixed bin(17,0) level 3 dcl 33 set ref 89* 121* error_table_$no_operation 000024 external static fixed bin(35,0) dcl 54 ref 243 error_table_$out_of_sequence 000026 external static fixed bin(35,0) dcl 56 ref 239 extent 3 000100 automatic structure level 2 in structure "auto_window_info" unaligned dcl 33 in procedure "fc_menu_window" extent 3 000036 external static structure level 2 in structure "fc_menu_data_$user_io_window_info" dcl 65 in procedure "fc_menu_window" fc_menu_data_$auto_window 000032 external static bit(1) dcl 61 ref 234 fc_menu_data_$initialized 000034 external static bit(1) dcl 63 ref 232 fc_menu_data_$user_io_window_info 000036 external static structure level 1 dcl 65 fc_menu_data_$window_array_ptr 000040 external static pointer dcl 67 set ref 151 167 174* 175 176 183 194 198 198 fc_menu_data_$window_array_size 000042 external static fixed bin(17,0) dcl 69 set ref 151 153 169 170 173* 173 174 194 198 get_system_free_area_ 000010 constant entry external dcl 47 ref 174 height 4 000100 automatic fixed bin(17,0) level 3 in structure "auto_window_info" dcl 33 in procedure "fc_menu_window" set ref 92* 124* height 4 000036 external static fixed bin(17,0) level 3 in structure "fc_menu_data_$user_io_window_info" dcl 65 in procedure "fc_menu_window" ref 250 iox_$control 000012 constant entry external dcl 48 ref 125 iox_$find_iocb 000014 constant entry external dcl 49 ref 85 line 2 000100 automatic fixed bin(17,0) level 3 in structure "auto_window_info" dcl 33 in procedure "fc_menu_window" set ref 90* 122* line 2 000036 external static fixed bin(17,0) level 3 in structure "fc_menu_data_$user_io_window_info" dcl 65 in procedure "fc_menu_window" ref 90 122 250 new_window_array_end_ptr 000136 automatic pointer dcl 158 set ref 175* 179 null builtin function dcl 76 ref 151 179 198 old_window_array based pointer array dcl 163 ref 176 178 old_window_array_ptr 000140 automatic pointer dcl 160 set ref 167* 176 178 old_window_array_size 000142 automatic fixed bin(17,0) dcl 161 set ref 169* 176 178 origin 1 000036 external static structure level 2 in structure "fc_menu_data_$user_io_window_info" dcl 65 in procedure "fc_menu_window" origin 1 000100 automatic structure level 2 in structure "auto_window_info" unaligned dcl 33 in procedure "fc_menu_window" p parameter pointer dcl 207 ref 204 212 p_code parameter fixed bin(35,0) dcl 24 set ref 80 85* 86 93* 94 102 108* 109 114 125* 128 132* 239* 243* 256* p_first_line parameter fixed bin(35,0) dcl 25 ref 80 90 114 122 250 250 p_height parameter fixed bin(35,0) dcl 26 ref 80 92 114 124 250 p_switch_name parameter char packed unaligned dcl 27 set ref 80 85* p_window_id parameter fixed bin(35,0) dcl 28 set ref 80 97* 102 106* 109* 114 119* 128 131* p_window_ptr parameter pointer dcl 29 set ref 135 138* packed_ptr based pointer packed unaligned dcl 222 ref 224 pp parameter fixed bin(35,0) dcl 220 in procedure "unpack_ptr" set ref 217 224 pp based pointer packed unaligned dcl 209 in procedure "pack_ptr" set ref 212* ptr_as_integer 000162 automatic fixed bin(35,0) dcl 210 set ref 212 213 version 000100 automatic fixed bin(17,0) level 2 dcl 33 set ref 88* 120* video_data_$terminal_iocb 000044 external static pointer dcl 71 set ref 93* video_et_$overlaps_screen_edge 000030 external static fixed bin(35,0) dcl 58 ref 256 width 3 000100 automatic fixed bin(17,0) level 3 dcl 33 set ref 91* 123* window_$clear_window 000016 constant entry external dcl 50 ref 132 window_$create 000020 constant entry external dcl 51 ref 93 window_$destroy 000022 constant entry external dcl 52 ref 108 window_array based pointer array dcl 39 set ref 151 174 175 183* 194 198 198* window_array_beginning based pointer array dcl 164 set ref 176* window_array_end based pointer array dcl 165 set ref 179* window_array_idx 000134 automatic fixed bin(17,0) dcl 149 in procedure "add_to_window_array_proc" set ref 151* 151* 153 170* 175 183 window_array_idx 000152 automatic fixed bin(17,0) dcl 192 in procedure "remove_from_window_array" set ref 194* 194* 198 198 198 window_iocb_ptr 000106 automatic pointer dcl 34 set ref 85* 93* 96* 97* 106* 107* 108* 119* 125* 131* 132* window_position_info based structure level 1 unaligned dcl 1-25 window_position_info_version_1 constant fixed bin(17,0) initial dcl 1-35 ref 88 120 window_ptr parameter pointer dcl 147 in procedure "add_to_window_array_proc" ref 144 183 window_ptr parameter pointer dcl 190 in procedure "remove_from_window_array" ref 187 194 198 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. break_table_info based structure level 1 dcl 1-76 break_table_info_version internal static fixed bin(17,0) initial dcl 1-80 break_table_info_version_1 internal static fixed bin(17,0) initial dcl 1-80 break_table_ptr automatic pointer dcl 1-75 get_editor_key_bindings_info based structure level 1 dcl 1-151 get_editor_key_bindings_info_ptr automatic pointer dcl 1-159 get_editor_key_bindings_info_version_1 internal static char(8) initial packed unaligned dcl 1-160 line_editor_binding_count automatic fixed bin(17,0) dcl 1-121 line_editor_key_binding_info based structure level 1 dcl 1-129 line_editor_key_binding_info_ptr automatic pointer dcl 1-118 line_editor_key_binding_info_version_3 internal static char(8) initial packed unaligned dcl 1-148 line_editor_longest_sequence automatic fixed bin(17,0) dcl 1-123 more_handler_info based structure level 1 dcl 1-83 more_handler_info_ptr automatic pointer dcl 1-92 more_handler_info_version internal static fixed bin(17,0) initial dcl 1-94 more_handler_info_version_3 internal static fixed bin(17,0) initial dcl 1-94 more_prompt_info based structure level 1 dcl 1-108 more_prompt_info_ptr automatic pointer dcl 1-112 more_prompt_info_version_1 internal static char(8) initial packed unaligned dcl 1-114 more_responses_info based structure level 1 dcl 1-59 more_responses_info_ptr automatic pointer dcl 1-69 more_responses_info_version_1 internal static fixed bin(17,0) initial dcl 1-67 more_responses_version internal static fixed bin(17,0) initial dcl 1-67 set_editor_key_bindings_info based structure level 1 dcl 1-162 set_editor_key_bindings_info_ptr automatic pointer dcl 1-171 set_editor_key_bindings_info_version_1 internal static char(8) initial packed unaligned dcl 1-172 token_characters_info based structure level 1 dcl 1-97 token_characters_info_ptr automatic pointer dcl 1-104 token_characters_info_version_1 internal static char(8) initial packed unaligned dcl 1-106 window_edit_line_info based structure level 1 unaligned dcl 1-177 window_edit_line_info_ptr automatic pointer dcl 1-186 window_edit_line_info_version_1 internal static char(8) initial packed unaligned dcl 1-183 window_position_info_ptr automatic pointer dcl 1-37 window_position_info_version internal static fixed bin(17,0) initial dcl 1-35 window_status_info based structure level 1 dcl 1-45 window_status_info_ptr automatic pointer dcl 1-43 window_status_version internal static fixed bin(17,0) initial dcl 1-52 window_status_version_1 internal static fixed bin(17,0) initial dcl 1-52 NAMES DECLARED BY EXPLICIT CONTEXT. HAVE_NOT_INITIALIZED 000415 constant label dcl 239 ref 232 ILLEGAL_WINDOW_OPERATION 000421 constant label dcl 243 ref 234 ILLEGAL_WINDOW_SIZE 000425 constant label dcl 256 ref 250 add_to_window_array 000400 constant entry external dcl 135 add_to_window_array_proc 000431 constant entry internal dcl 144 ref 96 138 change 000234 constant entry external dcl 114 clear_window 000341 constant entry external dcl 128 create 000034 constant entry external dcl 80 destroy 000165 constant entry external dcl 102 fc_menu_window 000016 constant entry external dcl 16 must_have_initialized 000642 constant entry internal dcl 229 ref 83 105 117 pack_ptr 000625 constant entry internal dcl 204 ref 97 remove_from_window_array 000556 constant entry internal dcl 187 ref 107 unpack_ptr 000635 constant entry internal dcl 217 ref 106 119 131 validate_origin_and_height 000651 constant entry internal dcl 247 ref 84 118 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1142 1210 676 1152 Length 1434 676 46 210 244 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME fc_menu_window 180 external procedure is an external procedure. add_to_window_array_proc internal procedure shares stack frame of external procedure fc_menu_window. begin block on line 156 begin block shares stack frame of external procedure fc_menu_window. remove_from_window_array internal procedure shares stack frame of external procedure fc_menu_window. pack_ptr internal procedure shares stack frame of external procedure fc_menu_window. unpack_ptr internal procedure shares stack frame of external procedure fc_menu_window. must_have_initialized internal procedure shares stack frame of external procedure fc_menu_window. validate_origin_and_height internal procedure shares stack frame of external procedure fc_menu_window. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME fc_menu_window 000100 auto_window_info fc_menu_window 000106 window_iocb_ptr fc_menu_window 000134 window_array_idx add_to_window_array_proc 000136 new_window_array_end_ptr begin block on line 156 000140 old_window_array_ptr begin block on line 156 000142 old_window_array_size begin block on line 156 000152 window_array_idx remove_from_window_array 000162 ptr_as_integer pack_ptr THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out return_mac signal_op ext_entry ext_entry_desc op_alloc_ op_freen_ THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. get_system_free_area_ iox_$control iox_$find_iocb window_$clear_window window_$create window_$destroy THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$no_operation error_table_$out_of_sequence fc_menu_data_$auto_window fc_menu_data_$initialized fc_menu_data_$user_io_window_info fc_menu_data_$window_array_ptr fc_menu_data_$window_array_size video_data_$terminal_iocb video_et_$overlaps_screen_edge LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 16 000015 19 000023 20 000026 80 000027 83 000060 84 000061 85 000062 86 000105 88 000107 89 000111 90 000112 91 000123 92 000124 93 000126 94 000144 96 000146 97 000150 98 000160 102 000161 105 000177 106 000200 107 000210 108 000212 109 000223 111 000226 114 000227 117 000252 118 000253 119 000254 120 000264 121 000266 122 000267 123 000300 124 000301 125 000303 126 000336 128 000337 131 000353 132 000363 133 000374 135 000375 138 000405 139 000414 239 000415 241 000420 243 000421 245 000424 256 000425 258 000430 144 000431 151 000433 152 000453 153 000455 167 000461 169 000465 170 000467 173 000471 174 000473 175 000512 176 000516 178 000526 179 000530 183 000544 185 000555 187 000556 194 000560 196 000602 198 000604 202 000624 204 000625 212 000627 213 000632 217 000635 224 000637 229 000642 232 000643 234 000646 237 000650 247 000651 250 000652 254 000671 ----------------------------------------------------------- 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