COMPILATION LISTING OF SEGMENT fc_menu_utils Compiled by: Multics PL/I Compiler, Release 28d, of October 4, 1983 Compiled at: Honeywell Multics Op. - System M Compiled on: 09/11/84 1037.4 mst Tue Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* *********************************************************** */ 6 /* 7* This program invokes and revokes the FORTRAN/COBOL menu subsystem. 8**/ 9 /* Written March to April 1982 by Chris Jones */ 10 /* format: style4,delnl,insnl,indattr,ifthen,declareind10,dclind10 */ 11 fc_menu_utils: 12 proc; 13 14 signal condition (bad_call_); /* not a true entrypoint */ 15 return; 16 17 /* Parameters */ 18 19 dcl p_code fixed bin (35) parameter; /* (Output) status code */ 20 dcl p_user_window_columns fixed bin (35) parameter; /* (Output) width of user_i/o window after init */ 21 dcl p_user_window_id fixed bin (35) parameter; /* (Output) id of user_i/o window after init */ 22 dcl p_user_window_lines fixed bin (35) parameter; /* (Output) height of user_i/o window after init */ 23 dcl p_usage_mode fixed bin parameter; /* (Input) whether windows are to be managed automatically */ 24 25 /* Automatic variables */ 26 27 dcl 1 entry_overlay aligned, 28 2 codeptr ptr, 29 2 envptr ptr; 30 dcl entry_variable entry variable options (variable); 31 32 /* Based variables */ 33 34 dcl THE_AREA area based (get_system_free_area_ ()); 35 dcl menu_array (fc_menu_data_$menu_array_size) ptr based (fc_menu_data_$menu_array_ptr); 36 /* array of menus we are managing */ 37 dcl window_array (fc_menu_data_$window_array_size) ptr based (fc_menu_data_$window_array_ptr); 38 /* array of windows we've created */ 39 40 41 /* Static storage and constants */ 42 43 dcl DEFAULT_MENU_ARRAY_SIZE 44 fixed bin init (5) static options (constant); 45 dcl DEFAULT_WINDOW_ARRAY_SIZE 46 fixed bin init (3) static options (constant); 47 48 /* External entries and variables */ 49 50 dcl error_table_$bad_arg fixed bin (35) ext static; 51 dcl error_table_$out_of_sequence 52 fixed bin (35) ext static; 53 54 dcl fc_menu_data_$already_video 55 bit (1) aligned external static; 56 dcl fc_menu_data_$auto_window 57 bit (1) aligned external static; 58 dcl fc_menu_data_$have_user_io_info 59 bit (1) aligned external static; 60 dcl fc_menu_data_$initialized 61 bit (1) aligned external static; 62 dcl fc_menu_data_$menu_array_ptr 63 ptr external static; 64 dcl fc_menu_data_$menu_array_size 65 fixed bin external static; 66 dcl fc_menu_data_$original_cleanup_handler 67 ptr external static; 68 dcl 1 fc_menu_data_$user_io_window_info 69 aligned like window_position_info external static; 70 dcl fc_menu_data_$window_array_ptr 71 ptr external static; 72 dcl fc_menu_data_$window_array_size 73 fixed bin external static; 74 75 dcl iox_$user_io ptr ext static; 76 77 dcl video_data_$terminal_iocb 78 ptr external static; 79 80 dcl get_system_free_area_ entry () returns (ptr); 81 dcl iox_$control entry (ptr, char (*), ptr, fixed bin (35)); 82 dcl iox_$destroy_iocb entry (ptr, fixed bin (35)); 83 dcl video_utils_$turn_off_login_channel 84 entry (fixed bin (35)); 85 dcl video_utils_$turn_on_login_channel 86 entry (fixed bin (35), char (*)); 87 88 /* Conditions and builtins */ 89 90 dcl (bad_call_) condition; 91 92 dcl (addr, null, unspec) builtin; 93 94 /* Routine to do the real initialization (the cleanup handler has been attached by init1 */ 95 96 init2: 97 entry (p_usage_mode, p_user_window_lines, p_user_window_columns, p_user_window_id, p_code); 98 99 if ^fc_menu_data_$initialized then do; 100 p_code = error_table_$out_of_sequence; 101 return; 102 end; 103 if (p_usage_mode ^= 0) & (p_usage_mode ^= 1) then do; 104 p_code = error_table_$bad_arg; 105 return; 106 end; 107 fc_menu_data_$auto_window = (p_usage_mode = 0); 108 109 /* Allocate the array, set the pointer and length */ 110 111 fc_menu_data_$menu_array_size = DEFAULT_MENU_ARRAY_SIZE; 112 allocate menu_array in (THE_AREA) set (fc_menu_data_$menu_array_ptr); 113 menu_array (*) = null (); 114 fc_menu_data_$window_array_size = DEFAULT_WINDOW_ARRAY_SIZE; 115 allocate window_array in (THE_AREA) set (fc_menu_data_$window_array_ptr); 116 window_array (*) = null (); 117 118 /* Now set up the video system. If the video system is already invoked, leave it as is, and only manage the 119* area of the display currently covered by user_i/o. Otherwise, invoke the video system and use the whole display. */ 120 121 fc_menu_data_$already_video = (video_data_$terminal_iocb ^= null ()); 122 if ^fc_menu_data_$already_video then do; 123 call video_utils_$turn_on_login_channel (p_code, ""); 124 if p_code ^= 0 then do; 125 call terminate_proc; 126 return; 127 end; 128 end; 129 call iox_$control (iox_$user_io, "get_window_info", addr (fc_menu_data_$user_io_window_info), p_code); 130 if p_code ^= 0 then do; 131 call terminate_proc; 132 return; 133 end; 134 fc_menu_data_$have_user_io_info = "1"b; 135 136 p_user_window_lines = fc_menu_data_$user_io_window_info.height; 137 p_user_window_columns = fc_menu_data_$user_io_window_info.width; 138 p_user_window_id = pack_ptr (iox_$user_io); 139 return; 140 141 /* entry which cleans up */ 142 143 terminate: 144 entry; 145 146 call terminate_proc; 147 return; 148 149 /* routine to do the termination and cleanup stuff */ 150 /* This routine must be very careful as it can be called at any time (including in the middle of the init call). */ 151 152 terminate_proc: 153 proc; 154 155 dcl menu_array_idx fixed bin; 156 dcl window_array_idx fixed bin; 157 158 if ^fc_menu_data_$initialized then 159 return; /* nothing to do, nowhere to report an error */ 160 161 /* Free the menu_array variables */ 162 163 if fc_menu_data_$menu_array_ptr ^= null () then do; 164 do menu_array_idx = 1 to fc_menu_data_$menu_array_size; 165 if menu_array (menu_array_idx) ^= null () then do; 166 call menu_$destroy (menu_array (menu_array_idx), (0)); 167 end; 168 end; 169 free menu_array; 170 fc_menu_data_$menu_array_ptr = null (); 171 fc_menu_data_$menu_array_size = 0; 172 end; 173 174 /* Restore the terminal attachments */ 175 176 if fc_menu_data_$already_video then do; 177 if fc_menu_data_$have_user_io_info then do; 178 179 /* Destroy any windows we've created */ 180 181 if fc_menu_data_$window_array_ptr ^= null () then do; 182 do window_array_idx = 1 to fc_menu_data_$window_array_size; 183 if window_array (window_array_idx) ^= null () then do; 184 call window_$destroy (window_array (window_array_idx), (0)); 185 call iox_$destroy_iocb (window_array (window_array_idx), (0)); 186 window_array (window_array_idx) = null (); 187 end; 188 end; 189 free window_array; 190 fc_menu_data_$window_array_ptr = null (); 191 fc_menu_data_$window_array_size = 0; 192 end; 193 194 call iox_$control (iox_$user_io, "set_window_info", addr (fc_menu_data_$user_io_window_info), (0)); 195 fc_menu_data_$have_user_io_info = "0"b; 196 end; 197 end; 198 else call video_utils_$turn_off_login_channel ((0)); 199 200 if fc_menu_data_$original_cleanup_handler ^= null () then do; 201 entry_overlay.codeptr = fc_menu_data_$original_cleanup_handler; 202 entry_overlay.envptr = null (); 203 unspec (entry_variable) = unspec (entry_overlay); 204 call entry_variable; 205 fc_menu_data_$original_cleanup_handler = null (); 206 end; 207 208 fc_menu_data_$initialized = "0"b; 209 210 end terminate_proc; 211 212 pack_ptr: 213 proc (p) returns (fixed bin (35)); 214 215 dcl p ptr; 216 217 dcl pp ptr unal; 218 dcl ptr_as_integer fixed bin (35) based; 219 220 pp = p; 221 return (addr (pp) -> ptr_as_integer); 222 223 end pack_ptr; 224 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 */ 225 226 2 1 /* begin include fine window_dcls.incl.pl1 BIM June 1981 */ 2 2 /* Modified 9 October 1983 by Jon A. Rochlis to add window_$edit_line. */ 2 3 2 4 /* format: style3 */ 2 5 2 6 declare window_$bell entry (pointer, fixed binary (35)); 2 7 declare window_$clear_region 2 8 entry (pointer, fixed binary, fixed binary, fixed binary, fixed binary, fixed binary (35)); 2 9 declare window_$clear_to_end_of_line 2 10 entry (pointer, fixed binary (35)); 2 11 declare window_$clear_to_end_of_window 2 12 entry (pointer, fixed binary (35)); 2 13 declare window_$clear_window 2 14 entry (pointer, fixed binary (35)); 2 15 declare window_$delete_chars 2 16 entry (pointer, fixed binary, fixed binary (35)); 2 17 declare window_$get_cursor_position 2 18 entry (pointer, fixed binary, fixed binary, fixed binary (35)); 2 19 2 20 /* Call window_$get_echoed_chars (iocb_ptr, n_to_read, read_buffer, n_read, read_break, code); */ 2 21 2 22 declare window_$get_echoed_chars 2 23 entry (pointer, fixed binary (21), character (*), fixed binary (21), character (1) var, 2 24 fixed binary (35)); 2 25 declare window_$get_unechoed_chars 2 26 entry (pointer, fixed binary (21), character (*), fixed binary (21), character (1) var, 2 27 fixed binary (35)); 2 28 declare window_$insert_text entry (pointer, character (*), fixed binary (35)); 2 29 declare window_$overwrite_text 2 30 entry (pointer, character (*), fixed binary (35)); 2 31 declare window_$position_cursor 2 32 entry (pointer, fixed binary, fixed binary, fixed binary (35)); 2 33 2 34 /* Call window_$position_cursor_rel (iocb_ptr, delta_line, delta_column, code); */ 2 35 2 36 declare window_$position_cursor_rel 2 37 entry (pointer, fixed binary, fixed binary, fixed binary (35)); 2 38 2 39 /* Call window_$scroll_region (iocb_ptr, first_line_of_region, n_lines_of_region, distance_to_scroll_region_negative_is_up, 2 40* code); */ 2 41 2 42 declare window_$scroll_region 2 43 entry (pointer, fixed binary, fixed binary, fixed binary, fixed binary (35)); 2 44 declare window_$sync entry (pointer, fixed binary (35)); 2 45 2 46 /* Call window_$write_raw_text (iocb_ptr, text_string, code); */ 2 47 2 48 declare window_$write_raw_text 2 49 entry (pointer, character (*), fixed binary (35)); 2 50 2 51 /* Call window_$write_sync_read (iocb_ptr, prompt_string, n_to_read, read_buffer, n_read, break_char, code); */ 2 52 2 53 declare window_$write_sync_read 2 54 entry (pointer, character (*), fixed bin (21), character (*), fixed binary (21), 2 55 character (1) var, fixed binary (35)); 2 56 2 57 /* Call window_$change_line (iocb_ptr, new_line, code); */ 2 58 2 59 declare window_$change_line entry (pointer, fixed binary, fixed binary (35)); 2 60 2 61 /* Call window_$change_column (iocb_ptr, new_column, code); */ 2 62 2 63 declare window_$change_column 2 64 entry (pointer, fixed binary, fixed binary (35)); 2 65 2 66 /* Call window_$get_one_unechoed (iocb_ptr, char_or_len_0, block_flag, code); */ 2 67 declare ( 2 68 window_$get_one_unechoed, 2 69 window_$get_one_unechoed_char 2 70 ) entry (pointer, character (1) var, bit (1) aligned, fixed binary (35)); 2 71 2 72 declare window_$create entry (pointer, pointer, pointer, fixed binary (35)); 2 73 2 74 declare window_$destroy entry (pointer, fixed binary (35)); 2 75 2 76 declare window_$edit_line entry (pointer, pointer, pointer, fixed bin(21), fixed bin(21), fixed bin(35)); 2 77 2 78 /* call window_$edit_line (iocb_ptr, window_edit_line_info_ptr, buffer_ptr, 2 79* buffer_len, n_returned, code); */ 2 80 2 81 2 82 /* end include file window_dcls.incl.pl1 */ 227 228 3 1 /* BEGIN INCLUDE FILE menu_dcls.incl.pl1 3 2* declarations for the menu_ subroutines MTB 493 3 3* James R. Davis 26 Jan 81 to 20 Februrary 81 3 4**/ 3 5 3 6 /* format: off */ 3 7 3 8 dcl menu_$create entry ( 3 9 (*) char (*) varying, /* input: choices */ 3 10 (*) char (*) varying, /* input: headers */ 3 11 (*) char (*) varying, /* input: trailers */ 3 12 pointer, /* input: to format info */ 3 13 (*) char (1) unal, /* input: keys to use */ 3 14 pointer, /* input: to area */ 3 15 pointer, /* input: to needs str. */ 3 16 pointer, /* to menu: output */ 3 17 fixed bin (35) /* code */ 3 18 ); 3 19 3 20 dcl menu_$display entry ( 3 21 pointer, /* window */ 3 22 pointer, /* menu */ 3 23 fixed bin (35) /* code */ 3 24 ); 3 25 3 26 dcl menu_$get_choice entry ( 3 27 pointer, /* window */ 3 28 pointer, /* menu */ 3 29 pointer, /* to function key info */ 3 30 bit (1) aligned, /* function key hi: output */ 3 31 fixed bin, /* output: selection number */ 3 32 fixed bin (35) /* output: code */ 3 33 ); 3 34 3 35 dcl menu_$describe entry ( 3 36 pointer, /* menu */ 3 37 pointer, /* needs */ 3 38 fixed bin (35) /* code */ 3 39 ); 3 40 3 41 dcl menu_$destroy entry ( 3 42 pointer, /* menu */ 3 43 fixed bin (35) /* code */ 3 44 ); 3 45 3 46 dcl menu_$store entry ( 3 47 character (*), 3 48 character (*), 3 49 character (*), 3 50 bit (1) aligned, 3 51 pointer, 3 52 fixed bin (35)); 3 53 3 54 dcl menu_$retrieve entry ( 3 55 character (*), 3 56 character (*), 3 57 character (*), 3 58 pointer, 3 59 pointer, 3 60 fixed bin (35)); 3 61 dcl menu_$delete entry ( 3 62 character (*), 3 63 character (*), 3 64 character (*), 3 65 fixed binary (35)); 3 66 3 67 dcl menu_$list entry ( 3 68 character (*), 3 69 character (*), 3 70 character (*), 3 71 pointer, 3 72 fixed bin, 3 73 pointer, 3 74 fixed bin (35)); 3 75 3 76 dcl 1 menu_format aligned based (menu_format_ptr), 3 77 2 version fixed bin, 3 78 2 constraints, 3 79 3 max_width fixed bin, 3 80 3 max_height fixed bin, 3 81 2 n_columns fixed bin, 3 82 2 flags, 3 83 3 center_headers bit (1) unal, 3 84 3 center_trailers bit (1) unal, 3 85 3 pad bit (34) unal, 3 86 2 pad_char char (1); 3 87 3 88 dcl 1 menu_requirements aligned based (menu_requirements_ptr), 3 89 2 version fixed bin, 3 90 2 lines_needed fixed bin, 3 91 2 width_needed fixed bin, 3 92 2 n_options fixed bin; 3 93 3 94 dcl menu_format_ptr pointer; 3 95 dcl menu_requirements_ptr pointer; 3 96 3 97 dcl (menu_format_version_1, menu_requirements_version_1) 3 98 fixed bin internal static init (1) options (constant); 3 99 3 100 dcl MENU_OPTION_KEYS (35) char (1) unal internal static 3 101 options (constant) init 3 102 ("1", "2", "3", "4", "5", "6", "7", "8", "9", 3 103 "A", "B", "C", "D", "E", "F", "G", "H", "I", 3 104 "J", "K", "L", "M", "N", "O", "P", "Q", "R", 3 105 "S", "T", "U", "V", "W", "X", "Y", "Z"); 3 106 3 107 /* END INCLUDE FILE ... menu_dcls.incl.pl1 */ 229 230 231 end fc_menu_utils; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 09/04/84 1524.3 fc_menu_utils.pl1 >spec>on>09/04/84-6762>fc_menu_utils.pl1 225 1 09/04/84 1513.8 window_control_info.incl.pl1 >spec>on>09/04/84-6762>window_control_info.incl.pl1 227 2 09/04/84 1513.7 window_dcls.incl.pl1 >spec>on>09/04/84-6762>window_dcls.incl.pl1 229 3 03/27/82 0429.3 menu_dcls.incl.pl1 >ldd>include>menu_dcls.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. DEFAULT_MENU_ARRAY_SIZE constant fixed bin(17,0) initial dcl 43 ref 111 DEFAULT_WINDOW_ARRAY_SIZE constant fixed bin(17,0) initial dcl 45 ref 114 THE_AREA based area(1024) dcl 34 ref 112 115 addr builtin function dcl 92 ref 129 129 194 194 221 bad_call_ 000110 stack reference condition dcl 90 ref 14 codeptr 000100 automatic pointer level 2 dcl 27 set ref 201* entry_overlay 000100 automatic structure level 1 dcl 27 set ref 203 entry_variable 000104 automatic entry variable dcl 30 set ref 203* 204 envptr 2 000100 automatic pointer level 2 dcl 27 set ref 202* error_table_$bad_arg 000010 external static fixed bin(35,0) dcl 50 ref 104 error_table_$out_of_sequence 000012 external static fixed bin(35,0) dcl 51 ref 100 extent 3 000032 external static structure level 2 dcl 68 fc_menu_data_$already_video 000014 external static bit(1) dcl 54 set ref 121* 122 176 fc_menu_data_$auto_window 000016 external static bit(1) dcl 56 set ref 107* fc_menu_data_$have_user_io_info 000020 external static bit(1) dcl 58 set ref 134* 177 195* fc_menu_data_$initialized 000022 external static bit(1) dcl 60 set ref 99 158 208* fc_menu_data_$menu_array_ptr 000024 external static pointer dcl 62 set ref 112* 113 163 165 166 169 170* fc_menu_data_$menu_array_size 000026 external static fixed bin(17,0) dcl 64 set ref 111* 112 113 164 169 171* fc_menu_data_$original_cleanup_handler 000030 external static pointer dcl 66 set ref 200 201 205* fc_menu_data_$user_io_window_info 000032 external static structure level 1 dcl 68 set ref 129 129 194 194 fc_menu_data_$window_array_ptr 000034 external static pointer dcl 70 set ref 115* 116 181 183 184 185 186 189 190* fc_menu_data_$window_array_size 000036 external static fixed bin(17,0) dcl 72 set ref 114* 115 116 182 189 191* get_system_free_area_ 000044 constant entry external dcl 80 ref 112 115 height 4 000032 external static fixed bin(17,0) level 3 dcl 68 set ref 136 iox_$control 000046 constant entry external dcl 81 ref 129 194 iox_$destroy_iocb 000050 constant entry external dcl 82 ref 185 iox_$user_io 000040 external static pointer dcl 75 set ref 129* 138* 194* menu_$destroy 000060 constant entry external dcl 3-41 ref 166 menu_array based pointer array dcl 35 set ref 112 113* 165 166* 169 menu_array_idx 000126 automatic fixed bin(17,0) dcl 155 set ref 164* 165 166* null builtin function dcl 92 ref 113 116 121 163 165 170 181 183 186 190 200 202 205 p parameter pointer dcl 215 ref 212 220 p_code parameter fixed bin(35,0) dcl 19 set ref 96 100* 104* 123* 124 129* 130 p_usage_mode parameter fixed bin(17,0) dcl 23 ref 96 103 103 107 p_user_window_columns parameter fixed bin(35,0) dcl 20 set ref 96 137* p_user_window_id parameter fixed bin(35,0) dcl 21 set ref 96 138* p_user_window_lines parameter fixed bin(35,0) dcl 22 set ref 96 136* pp 000140 automatic pointer unaligned dcl 217 set ref 220* 221 ptr_as_integer based fixed bin(35,0) dcl 218 ref 221 unspec builtin function dcl 92 set ref 203* 203 video_data_$terminal_iocb 000042 external static pointer dcl 77 ref 121 video_utils_$turn_off_login_channel 000052 constant entry external dcl 83 ref 198 video_utils_$turn_on_login_channel 000054 constant entry external dcl 85 ref 123 width 3 000032 external static fixed bin(17,0) level 3 dcl 68 set ref 137 window_$destroy 000056 constant entry external dcl 2-74 ref 184 window_array based pointer array dcl 37 set ref 115 116* 183 184* 185* 186* 189 window_array_idx 000127 automatic fixed bin(17,0) dcl 156 set ref 182* 183 184 185 186* window_position_info based structure level 1 unaligned dcl 1-25 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. MENU_OPTION_KEYS internal static char(1) initial array unaligned dcl 3-100 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 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 unaligned dcl 1-148 line_editor_longest_sequence automatic fixed bin(17,0) dcl 1-123 menu_$create 000000 constant entry external dcl 3-8 menu_$delete 000000 constant entry external dcl 3-61 menu_$describe 000000 constant entry external dcl 3-35 menu_$display 000000 constant entry external dcl 3-20 menu_$get_choice 000000 constant entry external dcl 3-26 menu_$list 000000 constant entry external dcl 3-67 menu_$retrieve 000000 constant entry external dcl 3-54 menu_$store 000000 constant entry external dcl 3-46 menu_format based structure level 1 dcl 3-76 menu_format_ptr automatic pointer dcl 3-94 menu_format_version_1 internal static fixed bin(17,0) initial dcl 3-97 menu_requirements based structure level 1 dcl 3-88 menu_requirements_ptr automatic pointer dcl 3-95 menu_requirements_version_1 internal static fixed bin(17,0) initial dcl 3-97 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 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 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 unaligned dcl 1-106 window_$bell 000000 constant entry external dcl 2-6 window_$change_column 000000 constant entry external dcl 2-63 window_$change_line 000000 constant entry external dcl 2-59 window_$clear_region 000000 constant entry external dcl 2-7 window_$clear_to_end_of_line 000000 constant entry external dcl 2-9 window_$clear_to_end_of_window 000000 constant entry external dcl 2-11 window_$clear_window 000000 constant entry external dcl 2-13 window_$create 000000 constant entry external dcl 2-72 window_$delete_chars 000000 constant entry external dcl 2-15 window_$edit_line 000000 constant entry external dcl 2-76 window_$get_cursor_position 000000 constant entry external dcl 2-17 window_$get_echoed_chars 000000 constant entry external dcl 2-22 window_$get_one_unechoed 000000 constant entry external dcl 2-67 window_$get_one_unechoed_char 000000 constant entry external dcl 2-67 window_$get_unechoed_chars 000000 constant entry external dcl 2-25 window_$insert_text 000000 constant entry external dcl 2-28 window_$overwrite_text 000000 constant entry external dcl 2-29 window_$position_cursor 000000 constant entry external dcl 2-31 window_$position_cursor_rel 000000 constant entry external dcl 2-36 window_$scroll_region 000000 constant entry external dcl 2-42 window_$sync 000000 constant entry external dcl 2-44 window_$write_raw_text 000000 constant entry external dcl 2-48 window_$write_sync_read 000000 constant entry external dcl 2-53 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 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_position_info_version_1 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. fc_menu_utils 000024 constant entry external dcl 11 init2 000042 constant entry external dcl 96 pack_ptr 000567 constant entry internal dcl 212 ref 138 terminate 000304 constant entry external dcl 143 terminate_proc 000313 constant entry internal dcl 152 ref 125 131 146 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1106 1170 577 1116 Length 1466 577 62 261 307 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME fc_menu_utils 160 external procedure is an external procedure. terminate_proc internal procedure shares stack frame of external procedure fc_menu_utils. pack_ptr internal procedure shares stack frame of external procedure fc_menu_utils. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME fc_menu_utils 000100 entry_overlay fc_menu_utils 000104 entry_variable fc_menu_utils 000126 menu_array_idx terminate_proc 000127 window_array_idx terminate_proc 000140 pp pack_ptr THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_e_as r_ne_as call_var call_ext_out_desc call_ext_out return signal ext_entry alloc_based free_based THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. get_system_free_area_ iox_$control iox_$destroy_iocb menu_$destroy video_utils_$turn_off_login_channel video_utils_$turn_on_login_channel window_$destroy THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$bad_arg error_table_$out_of_sequence fc_menu_data_$already_video fc_menu_data_$auto_window fc_menu_data_$have_user_io_info fc_menu_data_$initialized fc_menu_data_$menu_array_ptr fc_menu_data_$menu_array_size fc_menu_data_$original_cleanup_handler fc_menu_data_$user_io_window_info fc_menu_data_$window_array_ptr fc_menu_data_$window_array_size iox_$user_io video_data_$terminal_iocb LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 11 000023 14 000031 15 000034 96 000035 99 000047 100 000052 101 000055 103 000056 104 000063 105 000065 107 000066 111 000071 112 000073 113 000112 114 000130 115 000132 116 000151 121 000170 122 000175 123 000176 124 000213 125 000216 126 000217 129 000220 130 000255 131 000260 132 000261 134 000262 136 000265 137 000270 138 000272 139 000302 143 000303 146 000311 147 000312 152 000313 158 000314 163 000320 164 000324 165 000333 166 000344 168 000356 169 000360 170 000365 171 000370 176 000371 177 000373 181 000375 182 000401 183 000411 184 000422 185 000434 186 000451 188 000457 189 000461 190 000466 191 000471 194 000472 195 000526 197 000530 198 000531 200 000540 201 000545 202 000550 203 000552 204 000556 205 000562 208 000565 210 000566 212 000567 220 000571 221 000574 ----------------------------------------------------------- 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