COMPILATION LISTING OF SEGMENT tutorial Compiled by: Multics PL/I Compiler, Release 30, of February 16, 1988 Compiled at: Honeywell Bull, Phoenix AZ, SysM Compiled on: 09/13/88 1321.4 mst Tue Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1987 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1983 * 6* * * 7* *********************************************************** */ 8 9 10 11 /****^ HISTORY COMMENTS: 12* 1) change(86-01-22,LJAdams), approve(86-01-22,MCR7327), 13* audit(86-04-17,Lippard), install(86-04-24,MR12.0-1048): 14* Added ssu_ references so subsystem calls to help_ will work properly. 15* Added include file "help_args" which contains data needed by help. 16* 2) change(87-08-07,LJAdams), approve(87-09-03,MCR7766), 17* audit(88-09-03,GDixon), install(88-09-13,MR12.2-1109): 18* Changed Vhelp_args_2 to Vhelp_args_3. Moved code from tut_quit_ 19* and tut_terminate_sys_ into here thus eliminating these modules. 20* END HISTORY COMMENTS */ 21 22 23 /* Written by J. Siwila 3/30/83 */ 24 /* Modified: April,1985 by L.Adams - use new help_args_incl */ 25 26 /* This procedure starts the Tutorial by setting up the video system and 27* alternate function key escape sequences and initializing the 28* help_args data structure. */ 29 30 /* format: style2 */ 31 tutorial: 32 proc (); 33 34 /* Automatic */ 35 36 dcl code fixed bin (35); 37 dcl key_shift_idx fixed bin; 38 dcl menu_io ptr; 39 dcl my_area_ptr ptr; 40 dcl 1 local_area_info like area_info; 41 dcl reason char (512); 42 dcl 1 user_io_window_info like window_position_info; 43 dcl 1 auto_terminal_info like terminal_info; 44 dcl i fixed bin; 45 dcl pseudo bit (1) aligned; 46 47 /* Based */ 48 49 dcl 1 fkey_data like function_key_data based (function_key_data_ptr) aligned; 50 dcl my_area area (sys_info$max_seg_size) based (my_area_ptr); 51 52 /* Builtin */ 53 54 dcl (addr, length, null, unspec) 55 builtin; 56 57 /* Conditions */ 58 59 dcl (cleanup) condition; 60 61 /* Entries */ 62 63 dcl tut_main_menu_ entry () options (variable); 64 dcl ttt_info_$function_key_data 65 entry (char (*), ptr, ptr, fixed bin (35)); 66 dcl video_utils_$turn_on_login_channel 67 entry (fixed bin (35), char (*)); 68 dcl video_utils_$turn_off_login_channel 69 entry (fixed bin(35)); 70 dcl com_err_ entry() options(variable); 71 dcl define_area_ entry (ptr, fixed bin (35)); 72 dcl release_area_ entry (ptr); 73 74 /* Internal Static */ 75 76 dcl ME_EXAMPLE char (8) init ("tutorial") int static options(constant); 77 dcl PSEUDO_KEYS char (8) static options (constant) init ("gcpq"); 78 dcl PSEUDO_KEYS_COUNT char (4) init ("1234") int static options(constant); 79 dcl tutorial_active bit (1) internal static init("0"b); 80 dcl video_was_already_on bit (1) aligned internal static init ("0"b); 81 82 83 /* External */ 84 85 dcl error_table_$no_table fixed bin (35) ext; 86 dcl sys_info$max_seg_size ext fixed bin (35); 87 dcl video_data_$terminal_iocb 88 pointer external; 89 90 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 91 92 if tutorial_active /* tutorial CANNOT be invoked recursively */ 93 then do; /* because of its use of internal static*/ 94 /* variables. */ 95 call com_err_ (0, ME_EXAMPLE, "The tutorial command may not be invoked recursively. 96 Type ""release -all"" to stop the prior invocation, then invoke tutorial again."); 97 return; 98 end; 99 else tutorial_active = "1"b; 100 101 menu_io = null; /* initialize values needed for cleanup */ 102 my_area_ptr = null; /* on unit */ 103 Phelp_args = null; 104 105 video_was_already_on = (video_data_$terminal_iocb ^= null); 106 if video_was_already_on /* video details used by cleanup too. */ 107 then do; 108 user_io_window_info = window_position_info_version_1; 109 call iox_$control (iox_$user_io, "get_window_info", addr (user_io_window_info), code); 110 if code ^= 0 111 then do; 112 call com_err_ (code, ME_EXAMPLE, "Unable to get window info."); 113 return; 114 end; 115 end; 116 on condition (cleanup) call clean_up (); 117 118 unspec (local_area_info) = "0"b; 119 120 local_area_info.version = area_info_version_1; 121 local_area_info.control.extend = "1"b; 122 local_area_info.owner = ME_EXAMPLE; 123 local_area_info.size = sys_info$max_seg_size; 124 local_area_info.areap = null; 125 126 call define_area_ (addr (local_area_info), code); 127 if code ^= 0 128 then do; 129 call tut_quit_ (code, ME_EXAMPLE, reason, menu_io, user_io_window_info); 130 return; 131 end; 132 my_area_ptr = local_area_info.areap; 133 134 /* Invoke the window system if it's not already invoked */ 135 136 if ^video_was_already_on 137 then do; 138 call video_utils_$turn_on_login_channel (code, reason); 139 if code ^= 0 140 then do; 141 if code = error_table_$no_table 142 then call tut_quit_ (code, ME_EXAMPLE, 143 "The Multics Tutorial can be invoked only on an appropriately configured video terminal. Please configure your terminal properly, or see your local Multics consultant." 144 , menu_io, user_io_window_info); 145 else call tut_quit_ (code, ME_EXAMPLE, reason, menu_io, user_io_window_info); 146 return; 147 end; 148 user_io_window_info = window_position_info_version_1; 149 call iox_$control (iox_$user_io, "get_window_info", addr (user_io_window_info), code); 150 if code ^= 0 151 then do; 152 call tut_quit_ (code, ME_EXAMPLE, "Unable to get window info after turning on video.", 153 menu_io, user_io_window_info); 154 return; 155 end; 156 end; 157 158 call window_$clear_window (iox_$user_io, code); 159 if code ^= 0 160 then do; 161 call tut_quit_ (code, ME_EXAMPLE, "Unable to clear window.", menu_io, user_io_window_info); 162 return; 163 end; 164 165 /* See if we have to use escape sequences for function keys */ 166 167 pseudo = "0"b; 168 auto_terminal_info.version = terminal_info_version; 169 call iox_$control (iox_$user_io, "terminal_info", addr (auto_terminal_info), code); 170 if code ^= 0 171 then do; 172 call tut_quit_ (code, ME_EXAMPLE, "Unable to get terminal info.", menu_io, user_io_window_info); 173 return; 174 end; 175 function_key_data_ptr = null; 176 call ttt_info_$function_key_data (auto_terminal_info.term_type, my_area_ptr, function_key_data_ptr, code); 177 if code ^= 0 178 then do; 179 if code = error_table_$no_table 180 then call alt_keys; 181 else do; 182 call tut_quit_ (code, ME_EXAMPLE, "Cannot get function key data.", menu_io, 183 user_io_window_info); 184 return; 185 end; 186 end; 187 if function_key_data_ptr = null 188 then call alt_keys; 189 if fkey_data.highest < length (PSEUDO_KEYS_COUNT) 190 then call alt_keys; 191 192 call help_$init (ME_EXAMPLE, "", "", Vhelp_args_3, Phelp_args, code); 193 if code ^= 0 194 then do; 195 call tut_quit_ (code, ME_EXAMPLE, "Unable to initiate help_.", menu_io, user_io_window_info); 196 return; 197 end; 198 help_args.Sctl.all = "1"b; 199 help_args.Sctl.inhibit_errors = "1"b; 200 help_args.Nsearch_dirs = help_args.Nsearch_dirs + 1; 201 help_args.Npaths = 1; 202 help_args.search_dirs = ">doc>facilities_data_dir"; 203 help_args.path.value = ">doc>facilities_data_dir>tut_glossary.gi.info"; 204 help_args.path.S.pn_ctl_arg = "0"b; 205 help_args.path.S.info_name_not_starname = "1"b; 206 207 MAIN_MENU: 208 call tut_main_menu_ (menu_io, function_key_data_ptr, Phelp_args, pseudo); 209 call help_$term (ME_EXAMPLE, Phelp_args, code); 210 if code ^= 0 211 then do; 212 call tut_quit_ (code, ME_EXAMPLE, "Unable to terminate help_.", menu_io, user_io_window_info); 213 return; 214 end; 215 call clean_up(); 216 return; 217 218 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 219 220 alt_keys: 221 proc; 222 223 pseudo = "1"b; 224 function_key_data_highest = length (PSEUDO_KEYS_COUNT); 225 allocate fkey_data in (my_area) set (function_key_data_ptr); 226 fkey_data.version = function_key_data_version_1; 227 fkey_data.seq_ptr = addr (PSEUDO_KEYS); 228 fkey_data.seq_len = length (PSEUDO_KEYS); 229 do key_shift_idx = 0 to 3; 230 fkey_data.home.sequence_length (key_shift_idx) = 0; 231 fkey_data.left.sequence_length (key_shift_idx) = 0; 232 fkey_data.up.sequence_length (key_shift_idx) = 0; 233 fkey_data.right.sequence_length (key_shift_idx) = 0; 234 fkey_data.down.sequence_length (key_shift_idx) = 0; 235 end; 236 237 do i = 1 to function_key_data_highest; 238 fkey_data.function_keys (i, KEY_PLAIN).sequence_index = 2 * i - 1; 239 fkey_data.function_keys (i, KEY_PLAIN).sequence_length = 2; 240 end; 241 end alt_keys; 242 243 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 244 245 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 246 247 clean_up: 248 proc (); 249 250 call help_$term ("tutorial", Phelp_args, (0)); 251 if tutorial_active then 252 call tut_terminate_sys_ (menu_io, user_io_window_info); 253 if my_area_ptr ^= null 254 then call release_area_ (my_area_ptr); 255 return; 256 end clean_up; 257 258 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 259 260 terminate_sys_: 261 proc (); 262 263 if tutorial_active then do; 264 if menu_io ^= null () 265 then call window_$destroy (menu_io, (0)); 266 menu_io = null; 267 if video_was_already_on 268 then call iox_$control (iox_$user_io, "set_window_info", addr (user_io_window_info), (0)); 269 else call video_utils_$turn_off_login_channel ((0)); 270 tutorial_active = "0"b; 271 end; 272 273 end terminate_sys_; 274 275 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 276 277 tut_quit_: 278 entry (acode, ME, explanation, Pmenu_io, puser_io_window_info); 279 280 dcl acode fixed bin(35), 281 explanation char (*), 282 ME char (*), 283 Pmenu_io ptr, 284 1 puser_io_window_info like window_position_info; 285 286 menu_io = Pmenu_io; 287 user_io_window_info = puser_io_window_info; 288 call terminate_sys_; 289 call com_err_ (acode, ME, explanation); 290 return; 291 292 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 293 294 tut_terminate_sys_: 295 entry (Pmenu_io, puser_io_window_info); 296 297 menu_io = Pmenu_io; 298 user_io_window_info = puser_io_window_info; 299 call terminate_sys_; 300 return; 301 302 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 303 1 1 /* BEGIN: help_args_.incl.pl1 * * * * * */ 1 2 1 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 1 4 /* */ 1 5 /* Name: help_args_.incl.pl1 */ 1 6 /* */ 1 7 /* This include file declares the structure used by the help command and other subsystems */ 1 8 /* to pass info segment selection and printing control information to the help_ */ 1 9 /* subroutine. This based structure is NEVER allocated. Instead, the caller of help_ */ 1 10 /* must call help_$init to get a pointer to a temporary segment which is used for */ 1 11 /* storage for the structure. The structure contains 5 arrays with refer extents, */ 1 12 /* allowing complete freedom in the numbers of selection values given. Typically, the */ 1 13 /* caller fills in the arrays at the top of the structure first, growing the arrays */ 1 14 /* as each new element is added. After each array is filled, the caller begins filling */ 1 15 /* in the next array. Note that, on return from help_$init, all of the arrays have 0 */ 1 16 /* extents, except that the search_dirs array contains the list of directories to be */ 1 17 /* searched in to find info segments, as defined by the search facility. The caller */ 1 18 /* may of course change or replace these search directories. */ 1 19 /* */ 1 20 /* A legend describing the variable naming convention follows. */ 1 21 /* */ 1 22 /* STARTING LETTER STANDS FOR */ 1 23 /* P pointer to */ 1 24 /* L length of */ 1 25 /* D descriptor of */ 1 26 /* S switch */ 1 27 /* V version */ 1 28 /* */ 1 29 /* Status */ 1 30 /* */ 1 31 /* 0) Created: October, 1978 by Gary Dixon */ 1 32 /* 1) Modified: June 4, 1983 by Gary Dixon - add Sctl.inhibit_errors flag. */ 1 33 /* 2) Modified: April, 1985 by L.Adams - use Vhelp_args_2. */ 1 34 /* */ 1 35 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 1 36 1 37 /****^ HISTORY COMMENTS: 1 38* 1) change(86-03-07,LJAdams), approve(86-03-07,MCR7327), 1 39* audit(86-03-10,Lippard), install(86-04-24,MR12.0-1048): 1 40* Declares structure used by the help command and other subsystems to pass 1 41* info segment selection and printing control information the help_ 1 42* subroutine. 1 43* 2) change(87-01-26,LJAdams), approve(87-09-03,MCR7766), 1 44* audit(88-05-03,GDixon), install(88-09-13,MR12.2-1109): 1 45* Added lep to Sctl. 1 46* Added Sctl.cs to indicate if search or section requests are to be case 1 47* sensitive or not. 1 48* Changed version to Vhelp_args_3. 1 49* 3) change(88-02-12,LJAdams), approve(88-03-07,MCR7857), 1 50* audit(88-05-03,GDixon), install(88-09-13,MR12.2-1109): 1 51* Added help_data_ptr to point to a second help_args structure that will be 1 52* used for list_requests. 1 53* END HISTORY COMMENTS */ 1 54 1 55 dcl 1 help_args aligned based (Phelp_args), /* help's input arguments. */ 1 56 2 version fixed bin, /* = 3, currently. Use Vhelp_args_3. */ 1 57 /* (set by help_$init, checked by caller) */ 1 58 2 Sctl, /* control argument switches. */ 1 59 /* (SET BY CALLER OF help_) */ 1 60 (3 he_only, /* print only a heading, nothing else. */ 1 61 3 he_pn, /* when heading printed, include info pathname. */ 1 62 3 he_info_name, /* when heading printed, include info_name. */ 1 63 3 he_counts, /* when heading printed, include line counts. */ 1 64 /* If none of the 3 switches above are set, */ 1 65 /* then only info header is incl. in heading. */ 1 66 3 title, /* -title */ 1 67 3 scn, /* -section */ 1 68 3 srh, /* -search */ 1 69 3 bf, /* -brief */ 1 70 3 ca, /* -control_arg */ 1 71 3 ep, /* -entry_point */ 1 72 3 all, /* -all */ 1 73 3 lep, /* -lep */ 1 74 3 cs, /* -case_sensitive */ 1 75 3 inhibit_errors) /* inhibits error diagnostics when desired */ 1 76 /* information is not found. Useful for */ 1 77 /* subsystems like ted that want to diagnose */ 1 78 /* their own errors. */ 1 79 bit(1) unal, 1 80 3 mbz1 bit(22) unal, 1 81 2 Nsearch_dirs fixed bin, /* number of info_segment (or other) search dirs. */ 1 82 /* (set by help_$init, CALLER CAN CHANGE) */ 1 83 2 Npaths fixed bin, /* number of info segment names. */ 1 84 /* (SET BY CALLER OF help_) */ 1 85 2 Ncas fixed bin, /* number of control arg names given with -ca */ 1 86 /* (SET BY CALLER OF help_) */ 1 87 2 Nscns fixed bin, /* number of section substrings. */ 1 88 /* (SET BY CALLER OF help_) */ 1 89 2 Nsrhs fixed bin, /* number of search strings. */ 1 90 /* (SET BY CALLER OF help_) */ 1 91 2 min_Lpgh fixed bin, /* minimum length of a paragraph. */ 1 92 /* (set by help_$init, CALLER CAN CHANGE) */ 1 93 2 max_Lpgh fixed bin, /* maximum lines in group of aggregated paragraphs*/ 1 94 /* or in paragraphs constructed by help_. */ 1 95 /* (set by help_$init, CALLER CAN CHANGE) */ 1 96 2 Lspace_between_infos fixed bin, /* spaces inserted between infos when several */ 1 97 /* printed by one invocation. */ 1 98 /* (set by help_$init, CALLER CAN CHANGE) */ 1 99 2 min_date_time fixed bin(71), /* do not process infos modified before this date.*/ 1 100 /* (SET BY CALLER OF help_) */ 1 101 2 sci_ptr ptr, /* sci_ptr when help_ is invoked by a subsystem. */ 1 102 /* This must be set to null when not invoked */ 1 103 /* from a subsystem. */ 1 104 2 help_data_ptr ptr, /* ptr to second help_args (used for list rqts) */ 1 105 2 pad2 (6) fixed bin, /* reserved for future expansion. */ 1 106 1 107 /* End of fixed-length part of the structure. */ 1 108 1 109 2 search_dirs (0 refer (help_args.Nsearch_dirs)) 1 110 char (168) unal, /* directories help_ will look in to find info */ 1 111 /* segments when relative paths (without < or >)*/ 1 112 /* are given. When help_$init is called, the */ 1 113 /* current search rules (from a search list of */ 1 114 /* caller's choice) will be given here. Caller */ 1 115 /* may modify this list if desired before */ 1 116 /* calling help_. */ 1 117 2 path (0 refer (help_args.Npaths)), /* names of sought info segments. */ 1 118 3 value char(425) varying, /* These are the args themselves, without */ 1 119 /* processing by expand_pathname_, etc. */ 1 120 /* Their length is length(path) + length("$") */ 1 121 /* + length(entry_point_name). */ 1 122 /* Note that entry_point_names can be 256 chars.*/ 1 123 /* (SET BY CALLER OF help_) */ 1 124 3 info_name char(32) unal, /* name of logical info to be printed. */ 1 125 /* (SET BY CALLER OF help_) */ 1 126 /* "" = help_ should set this to entry part */ 1 127 /* of path.value, minus the suffix. */ 1 128 /* other = logical info name not a name on the */ 1 129 /* physical info segment. */ 1 130 3 dir (1) char(168) unal, /* dir part of a pathname (set by help_). */ 1 131 3 ent char(32) unal, /* ent part of name (set by help_). */ 1 132 3 ep char(32) varying, /* entry point part of name. (set by help_) */ 1 133 3 code fixed bin(35), /* error code while processing this path. */ 1 134 /* (set by help_) */ 1 135 3 S, /* switches indicating path type. */ 1 136 (4 pn_ctl_arg, /* -pn ctl given before this path. */ 1 137 /* (SET BY CALLER OF help_) */ 1 138 4 info_name_not_starname, /* caller-supplied path.info_name is not a */ 1 139 /* star name, even if it has * or ? chars. */ 1 140 /* (SET BY CALLER OF help_) */ 1 141 4 less_greater, /* A < or > appears in path.value. */ 1 142 /* (set by help_) */ 1 143 4 starname_ent, /* on if ent is a starname. */ 1 144 /* (set by help_) */ 1 145 4 starname_info_name, /* on if info_name is a starname. */ 1 146 /* (set by help_) */ 1 147 4 separate_info_name) bit(1) unal, /* on if info_name given by caller. */ 1 148 /* (set by help_) */ 1 149 4 pad3 bit(30) unal, 1 150 2 ca (0 refer (help_args.Ncas)) /* the ctl_arg names, without leading - just as */ 1 151 char(32) varying, /* req'd by the -ca ctl_arg of help. */ 1 152 /* (SET BY CALLER OF help_) */ 1 153 2 scn (0 refer (help_args.Nscns)) /* substrings sought in section titles. */ 1 154 char(80) varying, /* (SET BY CALLER OF help_) */ 1 155 2 srh (0 refer (help_args.Nsrhs)) /* search strings. */ 1 156 char(80) varying, /* (SET BY CALLER OF help_) */ 1 157 Phelp_args ptr, 1 158 Vhelp_args_3 fixed bin int static options(constant) init(3); 1 159 1 160 dcl help_ entry (char(*), ptr, char(*), fixed bin, fixed bin(35)), 1 161 help_$init entry (char(*), char(*), char(*), fixed bin, ptr, fixed bin(35)), 1 162 help_$term entry (char(*), ptr, fixed bin(35)); 1 163 1 164 /* END OF: help_args_.incl.pl1 * * * * * */ 304 305 2 1 /* --------------- BEGIN include file iox_dcls.incl.pl1 --------------- */ 2 2 2 3 /* Written 05/04/78 by C. D. Tavares */ 2 4 /* Fixed declaration of iox_$find_iocb_n 05/07/80 by R. Holmstedt */ 2 5 /* Modified 5/83 by S. Krupp to add declarations for: iox_$open_file, 2 6* iox_$close_file, iox_$detach and iox_$attach_loud entries. */ 2 7 2 8 dcl iox_$attach_name entry (char (*), pointer, char (*), pointer, fixed bin (35)), 2 9 iox_$attach_ptr entry (pointer, char (*), pointer, fixed bin (35)), 2 10 iox_$close entry (pointer, fixed bin (35)), 2 11 iox_$control entry (pointer, char (*), pointer, fixed bin (35)), 2 12 iox_$delete_record entry (pointer, fixed bin (35)), 2 13 iox_$destroy_iocb entry (pointer, fixed bin (35)), 2 14 iox_$detach_iocb entry (pointer, fixed bin (35)), 2 15 iox_$err_not_attached entry options (variable), 2 16 iox_$err_not_closed entry options (variable), 2 17 iox_$err_no_operation entry options (variable), 2 18 iox_$err_not_open entry options (variable), 2 19 iox_$find_iocb entry (char (*), pointer, fixed bin (35)), 2 20 iox_$find_iocb_n entry (fixed bin, ptr, fixed bin(35)), 2 21 iox_$get_chars entry (pointer, pointer, fixed bin (21), fixed bin (21), fixed bin (35)), 2 22 iox_$get_line entry (pointer, pointer, fixed bin (21), fixed bin (21), fixed bin (35)), 2 23 iox_$look_iocb entry (char (*), pointer, fixed bin (35)), 2 24 iox_$modes entry (pointer, char (*), char (*), fixed bin (35)), 2 25 iox_$move_attach entry (pointer, pointer, fixed bin (35)), 2 26 iox_$open entry (pointer, fixed bin, bit (1) aligned, fixed bin (35)), 2 27 iox_$position entry (pointer, fixed bin, fixed bin (21), fixed bin (35)), 2 28 iox_$propagate entry (pointer), 2 29 iox_$put_chars entry (pointer, pointer, fixed bin (21), fixed bin (35)), 2 30 iox_$read_key entry (pointer, char (256) varying, fixed bin (21), fixed bin (35)), 2 31 iox_$read_length entry (pointer, fixed bin (21), fixed bin (35)), 2 32 iox_$read_record entry (pointer, pointer, fixed bin (21), fixed bin (21), fixed bin (35)), 2 33 iox_$rewrite_record entry (pointer, pointer, fixed bin (21), fixed bin (35)), 2 34 iox_$seek_key entry (pointer, char (256) varying, fixed bin (21), fixed bin (35)), 2 35 iox_$write_record entry (pointer, pointer, fixed bin (21), fixed bin (35)), 2 36 iox_$open_file entry(ptr, fixed bin, char(*), bit(1) aligned, fixed bin(35)), 2 37 iox_$close_file entry(ptr, char(*), fixed bin(35)), 2 38 iox_$detach entry(ptr, char(*), fixed bin(35)), 2 39 iox_$attach_loud entry(ptr, char(*), ptr, fixed bin(35)); 2 40 2 41 dcl (iox_$user_output, 2 42 iox_$user_input, 2 43 iox_$user_io, 2 44 iox_$error_output) external static pointer; 2 45 2 46 /* ---------------- END include file iox_dcls.incl.pl1 ---------------- */ 306 307 3 1 /* begin include fine window_dcls.incl.pl1 BIM June 1981 */ 3 2 /* Modified 9 October 1983 by Jon A. Rochlis to add window_$edit_line. */ 3 3 3 4 /* format: style3 */ 3 5 3 6 declare window_$bell entry (pointer, fixed binary (35)); 3 7 declare window_$clear_region 3 8 entry (pointer, fixed binary, fixed binary, fixed binary, fixed binary, fixed binary (35)); 3 9 declare window_$clear_to_end_of_line 3 10 entry (pointer, fixed binary (35)); 3 11 declare window_$clear_to_end_of_window 3 12 entry (pointer, fixed binary (35)); 3 13 declare window_$clear_window 3 14 entry (pointer, fixed binary (35)); 3 15 declare window_$delete_chars 3 16 entry (pointer, fixed binary, fixed binary (35)); 3 17 declare window_$get_cursor_position 3 18 entry (pointer, fixed binary, fixed binary, fixed binary (35)); 3 19 3 20 /* Call window_$get_echoed_chars (iocb_ptr, n_to_read, read_buffer, n_read, read_break, code); */ 3 21 3 22 declare window_$get_echoed_chars 3 23 entry (pointer, fixed binary (21), character (*), fixed binary (21), character (1) var, 3 24 fixed binary (35)); 3 25 declare window_$get_unechoed_chars 3 26 entry (pointer, fixed binary (21), character (*), fixed binary (21), character (1) var, 3 27 fixed binary (35)); 3 28 declare window_$insert_text entry (pointer, character (*), fixed binary (35)); 3 29 declare window_$overwrite_text 3 30 entry (pointer, character (*), fixed binary (35)); 3 31 declare window_$position_cursor 3 32 entry (pointer, fixed binary, fixed binary, fixed binary (35)); 3 33 3 34 /* Call window_$position_cursor_rel (iocb_ptr, delta_line, delta_column, code); */ 3 35 3 36 declare window_$position_cursor_rel 3 37 entry (pointer, fixed binary, fixed binary, fixed binary (35)); 3 38 3 39 /* Call window_$scroll_region (iocb_ptr, first_line_of_region, n_lines_of_region, distance_to_scroll_region_negative_is_up, 3 40* code); */ 3 41 3 42 declare window_$scroll_region 3 43 entry (pointer, fixed binary, fixed binary, fixed binary, fixed binary (35)); 3 44 declare window_$sync entry (pointer, fixed binary (35)); 3 45 3 46 /* Call window_$write_raw_text (iocb_ptr, text_string, code); */ 3 47 3 48 declare window_$write_raw_text 3 49 entry (pointer, character (*), fixed binary (35)); 3 50 3 51 /* Call window_$write_sync_read (iocb_ptr, prompt_string, n_to_read, read_buffer, n_read, break_char, code); */ 3 52 3 53 declare window_$write_sync_read 3 54 entry (pointer, character (*), fixed bin (21), character (*), fixed binary (21), 3 55 character (1) var, fixed binary (35)); 3 56 3 57 /* Call window_$change_line (iocb_ptr, new_line, code); */ 3 58 3 59 declare window_$change_line entry (pointer, fixed binary, fixed binary (35)); 3 60 3 61 /* Call window_$change_column (iocb_ptr, new_column, code); */ 3 62 3 63 declare window_$change_column 3 64 entry (pointer, fixed binary, fixed binary (35)); 3 65 3 66 /* Call window_$get_one_unechoed (iocb_ptr, char_or_len_0, block_flag, code); */ 3 67 declare ( 3 68 window_$get_one_unechoed, 3 69 window_$get_one_unechoed_char 3 70 ) entry (pointer, character (1) var, bit (1) aligned, fixed binary (35)); 3 71 3 72 declare window_$create entry (pointer, pointer, pointer, fixed binary (35)); 3 73 3 74 declare window_$destroy entry (pointer, fixed binary (35)); 3 75 3 76 declare window_$edit_line entry (pointer, pointer, pointer, fixed bin(21), fixed bin(21), fixed bin(35)); 3 77 3 78 /* call window_$edit_line (iocb_ptr, window_edit_line_info_ptr, buffer_ptr, 3 79* buffer_len, n_returned, code); */ 3 80 3 81 3 82 /* end include file window_dcls.incl.pl1 */ 308 309 4 1 /* BEGIN INCLUDE FILE ... function_key_data.incl.pl1 4 2* 4 3* This include file defines the structure used for ttt_info_$function_key_data 4 4* MCR 4671 James R. Davis Sept 80 4 5**/ 4 6 4 7 dcl 1 function_key_data aligned based (function_key_data_ptr), 4 8 2 version fixed bin, 4 9 2 highest fixed bin, /* highest fkey */ 4 10 2 sequence, /* string of all seqs. */ 4 11 3 seq_ptr pointer, 4 12 3 seq_len fixed bin (21), 4 13 2 cursor_motion_keys, 4 14 3 home (0:3) like key_info, 4 15 3 left (0:3) like key_info, 4 16 3 up (0:3) like key_info, 4 17 3 right (0:3) like key_info, 4 18 3 down (0:3) like key_info, 4 19 2 function_keys (0:function_key_data_highest refer 4 20 (function_key_data.highest), 0:3) like key_info; 4 21 4 22 dcl (KEY_PLAIN init (0), 4 23 KEY_SHIFT init (1), 4 24 KEY_CTRL init (2), 4 25 KEY_CTRL_AND_SHIFT init (3) 4 26 ) fixed bin internal static options (constant); 4 27 4 28 dcl 1 key_info unaligned based (key_info_ptr), 4 29 2 sequence_index fixed bin (12) unsigned unaligned, 4 30 2 sequence_length fixed bin (6) unsigned unaligned; /* 0 -> not exist */ 4 31 4 32 dcl function_key_seqs char (function_key_data.sequence.seq_len) 4 33 based (function_key_data.sequence.seq_ptr); 4 34 dcl function_key_data_ptr ptr; 4 35 dcl function_key_data_highest fixed bin; 4 36 dcl function_key_data_version_1 4 37 fixed bin internal static options (constant) init (1); 4 38 dcl key_info_ptr ptr; 4 39 4 40 4 41 /* END INCLUDE FILE ... function_key_data.incl.pl1 */ 310 311 5 1 /* BEGIN INCLUDE FILE menu_dcls.incl.pl1 5 2* declarations for the menu_ subroutines MTB 493 5 3* James R. Davis 26 Jan 81 to 20 Februrary 81 5 4**/ 5 5 5 6 /* format: off */ 5 7 5 8 dcl menu_$create entry ( 5 9 (*) char (*) varying, /* input: choices */ 5 10 (*) char (*) varying, /* input: headers */ 5 11 (*) char (*) varying, /* input: trailers */ 5 12 pointer, /* input: to format info */ 5 13 (*) char (1) unal, /* input: keys to use */ 5 14 pointer, /* input: to area */ 5 15 pointer, /* input: to needs str. */ 5 16 pointer, /* to menu: output */ 5 17 fixed bin (35) /* code */ 5 18 ); 5 19 5 20 dcl menu_$display entry ( 5 21 pointer, /* window */ 5 22 pointer, /* menu */ 5 23 fixed bin (35) /* code */ 5 24 ); 5 25 5 26 dcl menu_$get_choice entry ( 5 27 pointer, /* window */ 5 28 pointer, /* menu */ 5 29 pointer, /* to function key info */ 5 30 bit (1) aligned, /* function key hi: output */ 5 31 fixed bin, /* output: selection number */ 5 32 fixed bin (35) /* output: code */ 5 33 ); 5 34 5 35 dcl menu_$describe entry ( 5 36 pointer, /* menu */ 5 37 pointer, /* needs */ 5 38 fixed bin (35) /* code */ 5 39 ); 5 40 5 41 dcl menu_$destroy entry ( 5 42 pointer, /* menu */ 5 43 fixed bin (35) /* code */ 5 44 ); 5 45 5 46 dcl menu_$store entry ( 5 47 character (*), 5 48 character (*), 5 49 character (*), 5 50 bit (1) aligned, 5 51 pointer, 5 52 fixed bin (35)); 5 53 5 54 dcl menu_$retrieve entry ( 5 55 character (*), 5 56 character (*), 5 57 character (*), 5 58 pointer, 5 59 pointer, 5 60 fixed bin (35)); 5 61 dcl menu_$delete entry ( 5 62 character (*), 5 63 character (*), 5 64 character (*), 5 65 fixed binary (35)); 5 66 5 67 dcl menu_$list entry ( 5 68 character (*), 5 69 character (*), 5 70 character (*), 5 71 pointer, 5 72 fixed bin, 5 73 pointer, 5 74 fixed bin (35)); 5 75 5 76 dcl 1 menu_format aligned based (menu_format_ptr), 5 77 2 version fixed bin, 5 78 2 constraints, 5 79 3 max_width fixed bin, 5 80 3 max_height fixed bin, 5 81 2 n_columns fixed bin, 5 82 2 flags, 5 83 3 center_headers bit (1) unal, 5 84 3 center_trailers bit (1) unal, 5 85 3 pad bit (34) unal, 5 86 2 pad_char char (1); 5 87 5 88 dcl 1 menu_requirements aligned based (menu_requirements_ptr), 5 89 2 version fixed bin, 5 90 2 lines_needed fixed bin, 5 91 2 width_needed fixed bin, 5 92 2 n_options fixed bin; 5 93 5 94 dcl menu_format_ptr pointer; 5 95 dcl menu_requirements_ptr pointer; 5 96 5 97 dcl (menu_format_version_1, menu_requirements_version_1) 5 98 fixed bin internal static init (1) options (constant); 5 99 5 100 dcl MENU_OPTION_KEYS (35) char (1) unal internal static 5 101 options (constant) init 5 102 ("1", "2", "3", "4", "5", "6", "7", "8", "9", 5 103 "A", "B", "C", "D", "E", "F", "G", "H", "I", 5 104 "J", "K", "L", "M", "N", "O", "P", "Q", "R", 5 105 "S", "T", "U", "V", "W", "X", "Y", "Z"); 5 106 5 107 /* END INCLUDE FILE ... menu_dcls.incl.pl1 */ 312 313 6 1 /* BEGIN INCLUDE FILE ... window_control_info.incl.pl1 JRD */ 6 2 /* format: style3 */ 6 3 6 4 /* Modified 26 January 1982 by William York to add the set_more_handler 6 5* and reset_more_handler control orders. */ 6 6 /* Modified October 1982 by WMY to add set and get_token_characters, 6 7* set and get_more_prompt. */ 6 8 /* Modified February 1983 by WMY to add the line_editor_key_binding_info 6 9* structure. */ 6 10 /* Modified 30 September 1983 by Jon A. Rochlis to add the origin.column for 6 11* partial screen width windows. */ 6 12 /* Modified 9 October 1983 by JR to add version 1 window_edit_line_info. 6 13* This should be removed when window_info.incl.pl1 is created. */ 6 14 /* Modified 29 February 1984 by Barmar to add version 1 6 15* get_editor_key_bindings_info. */ 6 16 /* Modified 1 March 1984 by Barmar to add version 1 6 17* set_editor_key_bindings_info. */ 6 18 /* Modified 2 March 1984 by Barmar to upgrade to version 3 6 19* line_editor_key_bindings_info, which includes the name, description, and 6 20* info path */ 6 21 6 22 /* structure for the set_window_info and get_window_info 6 23* control orders. */ 6 24 6 25 dcl 1 window_position_info 6 26 based (window_position_info_ptr), 6 27 2 version fixed bin, 6 28 2 origin, 6 29 3 column fixed bin, 6 30 3 line fixed bin, 6 31 2 extent, 6 32 3 width fixed bin, 6 33 3 height fixed bin; 6 34 6 35 dcl (window_position_info_version, window_position_info_version_1) 6 36 fixed bin internal static init (1) options (constant); 6 37 dcl window_position_info_ptr 6 38 pointer; 6 39 6 40 /* structure for the set_window_status and get_window_status 6 41* control orders */ 6 42 6 43 declare window_status_info_ptr 6 44 pointer; 6 45 declare 1 window_status_info 6 46 aligned based (window_status_info_ptr), 6 47 2 version fixed bin, 6 48 2 status_string bit (36) aligned; /* string (window_status) */ 6 49 /* see window_status.incl.pl1 for the contents of this string */ 6 50 6 51 6 52 declare (window_status_version, window_status_version_1) 6 53 fixed bin internal static init (1) options (constant); 6 54 6 55 /* info structure for the set_more_responses and get_more_responses control 6 56* orders */ 6 57 6 58 6 59 dcl 1 more_responses_info 6 60 aligned based (more_responses_info_ptr), 6 61 2 version fixed bin, 6 62 2 n_yeses fixed bin, /* how many valid characters in the strings below */ 6 63 2 n_noes fixed bin, 6 64 2 yeses char (32) unaligned, 6 65 2 noes char (32) unaligned; 6 66 6 67 dcl (more_responses_info_version_1, more_responses_version) 6 68 fixed bin internal static init (1) options (constant); 6 69 dcl more_responses_info_ptr 6 70 pointer; 6 71 6 72 /* structure for the set_break_table and get_break_table 6 73* control orders */ 6 74 6 75 declare break_table_ptr pointer; 6 76 declare 1 break_table_info aligned based (break_table_ptr), 6 77 2 version fixed bin, 6 78 2 breaks (0:127) bit (1) unaligned; 6 79 6 80 declare (break_table_info_version, break_table_info_version_1) 6 81 fixed bin init (1) internal static options (constant); 6 82 6 83 declare 1 more_handler_info aligned based (more_handler_info_ptr), 6 84 2 version fixed bin, 6 85 2 flags unaligned, 6 86 3 old_handler_valid 6 87 bit(1), 6 88 3 pad bit(35), 6 89 2 more_handler entry (pointer, bit(1) aligned), 6 90 2 old_more_handler entry (pointer, bit(1) aligned); 6 91 6 92 declare more_handler_info_ptr pointer; 6 93 6 94 declare (more_handler_info_version, more_handler_info_version_3) 6 95 fixed bin internal static options (constant) init (3); 6 96 6 97 declare 1 token_characters_info aligned based (token_characters_info_ptr), 6 98 2 version char(8), 6 99 2 token_character_count 6 100 fixed bin, 6 101 2 token_characters 6 102 char (128) unaligned; 6 103 6 104 declare token_characters_info_ptr pointer; 6 105 6 106 declare token_characters_info_version_1 char(8) internal static options (constant) init ("wtci0001"); 6 107 6 108 declare 1 more_prompt_info aligned based (more_prompt_info_ptr), 6 109 2 version char(8), 6 110 2 more_prompt char(80); 6 111 6 112 declare more_prompt_info_ptr pointer; 6 113 6 114 declare more_prompt_info_version_1 char(8) static options (constant) init ("wsmp0001"); 6 115 6 116 /* Line editor stuff ... */ 6 117 6 118 dcl line_editor_key_binding_info_ptr 6 119 pointer; 6 120 6 121 dcl line_editor_binding_count 6 122 fixed bin; 6 123 dcl line_editor_longest_sequence 6 124 fixed bin; 6 125 /* For each binding, action defines what to do for that sequence. Constants 6 126* are defined in window_editor_values.incl.pl1. Only if action is set to 6 127* EXTERNAL_ROUTINE does the editor_routine entry variable get examined. */ 6 128 6 129 dcl 1 line_editor_key_binding_info 6 130 aligned based (line_editor_key_binding_info_ptr), 6 131 2 version char(8), 6 132 2 binding_count fixed bin, 6 133 2 longest_sequence fixed bin, 6 134 2 bindings (line_editor_binding_count refer 6 135 (line_editor_key_binding_info.binding_count)), 6 136 3 sequence char(line_editor_longest_sequence refer 6 137 (line_editor_key_binding_info.longest_sequence)) varying, 6 138 3 action fixed bin, 6 139 3 numarg_action fixed binary, 6 140 3 editor_routine entry (pointer, fixed bin(35)), 6 141 3 name char (64) varying unaligned, 6 142 3 description char (256) varying unaligned, 6 143 3 info_path unaligned, 6 144 4 info_dir char (168), 6 145 4 info_entry char (32); 6 146 6 147 6 148 dcl line_editor_key_binding_info_version_3 6 149 char(8) static options (constant) init ("lekbi003"); 6 150 6 151 dcl 1 get_editor_key_bindings_info aligned based (get_editor_key_bindings_info_ptr), 6 152 2 version char (8), 6 153 2 flags, 6 154 3 entire_state bit (1) unaligned, 6 155 3 mbz bit (35) unaligned, 6 156 2 key_binding_info_ptr ptr, 6 157 2 entire_state_ptr ptr; 6 158 6 159 dcl get_editor_key_bindings_info_ptr ptr; 6 160 dcl get_editor_key_bindings_info_version_1 char (8) int static options (constant) init ("gekbi_01"); 6 161 6 162 dcl 1 set_editor_key_bindings_info aligned 6 163 based (set_editor_key_bindings_info_ptr), 6 164 2 version char (8), 6 165 2 flags, 6 166 3 replace bit (1) unaligned, 6 167 3 update bit (1) unaligned, 6 168 3 mbz bit (34) unaligned, 6 169 2 key_binding_info_ptr ptr; 6 170 6 171 dcl set_editor_key_bindings_info_ptr ptr; 6 172 dcl set_editor_key_bindings_info_version_1 char (8) int static options (constant) init ("sekbi_01"); 6 173 6 174 /* This should be moved to window_info.incl.pl1 when that include file is 6 175* created. JR 2/1/84 */ 6 176 6 177 dcl 1 window_edit_line_info 6 178 based (window_edit_line_info_ptr), 6 179 2 version char (8), 6 180 2 line_ptr ptr, 6 181 2 line_length fixed bin (21); /* later we will hack initial cursor position, key bindings, etc. */ 6 182 6 183 dcl window_edit_line_info_version_1 6 184 char (8) static options (constant) init ("wedl0001"); 6 185 6 186 dcl window_edit_line_info_ptr 6 187 ptr; 6 188 6 189 /* END INCLUDE FILE window_control_info.incl.pl1 */ 314 315 7 1 /* BEGIN INCLUDE FiLE ... terminal_info.incl.pl1 */ 7 2 7 3 /* Created 5/25/77 by J. Stern */ 7 4 7 5 7 6 dcl 1 terminal_info aligned based (terminal_info_ptr), /* info structure for terminal_info order */ 7 7 2 version fixed bin, /* version number of this sturcture */ 7 8 2 id char (4) unaligned, /* terminal id from answerback */ 7 9 2 term_type char (32) unaligned, /* terminal type name */ 7 10 2 line_type fixed bin, /* line type number */ 7 11 2 baud_rate fixed bin, 7 12 2 reserved (4) fixed bin; /* reserved for future use */ 7 13 7 14 7 15 dcl terminal_info_ptr ptr; 7 16 dcl terminal_info_version fixed bin int static options (constant) init (1); /* current version */ 7 17 7 18 7 19 /* END INCLUDE FILE ... terminal_info.incl.pl1 */ 316 317 8 1 /* BEGIN INCLUDE FILE area_info.incl.pl1 12/75 */ 8 2 8 3 dcl area_info_version_1 fixed bin static init (1) options (constant); 8 4 8 5 dcl area_infop ptr; 8 6 8 7 dcl 1 area_info aligned based (area_infop), 8 8 2 version fixed bin, /* version number for this structure is 1 */ 8 9 2 control aligned like area_control, /* control bits for the area */ 8 10 2 owner char (32) unal, /* creator of the area */ 8 11 2 n_components fixed bin, /* number of components in the area (returned only) */ 8 12 2 size fixed bin (18), /* size of the area in words */ 8 13 2 version_of_area fixed bin, /* version of area (returned only) */ 8 14 2 areap ptr, /* pointer to the area (first component on multisegment area) */ 8 15 2 allocated_blocks fixed bin, /* number of blocks allocated */ 8 16 2 free_blocks fixed bin, /* number of free blocks not in virgin */ 8 17 2 allocated_words fixed bin (30), /* number of words allocated in the area */ 8 18 2 free_words fixed bin (30); /* number of words free in area not in virgin */ 8 19 8 20 dcl 1 area_control aligned based, 8 21 2 extend bit (1) unal, /* says area is extensible */ 8 22 2 zero_on_alloc bit (1) unal, /* says block gets zerod at allocation time */ 8 23 2 zero_on_free bit (1) unal, /* says block gets zerod at free time */ 8 24 2 dont_free bit (1) unal, /* debugging aid, turns off free requests */ 8 25 2 no_freeing bit (1) unal, /* for allocation method without freeing */ 8 26 2 system bit (1) unal, /* says area is managed by system */ 8 27 2 pad bit (30) unal; 8 28 8 29 /* END INCLUDE FILE area_info.incl.pl1 */ 318 319 320 end tutorial; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 09/13/88 1257.6 tutorial.pl1 >spec>install>MR12.2-1109>tutorial.pl1 304 1 09/13/88 1257.6 help_args_.incl.pl1 >spec>install>MR12.2-1109>help_args_.incl.pl1 306 2 05/23/83 0916.6 iox_dcls.incl.pl1 >ldd>include>iox_dcls.incl.pl1 308 3 09/12/84 0916.7 window_dcls.incl.pl1 >ldd>include>window_dcls.incl.pl1 310 4 02/23/81 2146.3 function_key_data.incl.pl1 >ldd>include>function_key_data.incl.pl1 312 5 03/27/82 0429.3 menu_dcls.incl.pl1 >ldd>include>menu_dcls.incl.pl1 314 6 09/12/84 0916.7 window_control_info.incl.pl1 >ldd>include>window_control_info.incl.pl1 316 7 06/29/77 1624.0 terminal_info.incl.pl1 >ldd>include>terminal_info.incl.pl1 318 8 06/11/76 1043.4 area_info.incl.pl1 >ldd>include>area_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. KEY_PLAIN constant fixed bin(17,0) initial dcl 4-22 ref 238 239 ME parameter char packed unaligned dcl 280 set ref 277 289* ME_EXAMPLE 000004 constant char(8) initial packed unaligned dcl 76 set ref 95* 112* 122 129* 141* 145* 152* 161* 172* 182* 192* 195* 209* 212* Npaths 3 based fixed bin(17,0) level 2 dcl 1-55 set ref 201* 203 204 205 Nsearch_dirs 2 based fixed bin(17,0) level 2 dcl 1-55 set ref 200* 200 202 203 203 204 204 205 205 PSEUDO_KEYS 000002 constant char(8) initial packed unaligned dcl 77 set ref 227 228 PSEUDO_KEYS_COUNT 000000 constant char(4) initial packed unaligned dcl 78 ref 189 224 Phelp_args 000370 automatic pointer dcl 1-55 set ref 103* 192* 198 199 200 200 201 202 203 204 205 207* 209* 250* Pmenu_io parameter pointer dcl 280 ref 277 286 294 297 S based structure array level 3 dcl 1-55 Sctl 1 based structure level 2 dcl 1-55 Vhelp_args_3 000032 constant fixed bin(17,0) initial dcl 1-55 set ref 192* acode parameter fixed bin(35,0) dcl 280 set ref 277 289* addr builtin function dcl 54 ref 109 109 126 126 149 149 169 169 227 267 267 all 1(10) based bit(1) level 3 packed packed unaligned dcl 1-55 set ref 198* area_control based structure level 1 dcl 8-20 area_info based structure level 1 dcl 8-7 area_info_version_1 constant fixed bin(17,0) initial dcl 8-3 ref 120 areap 16 000106 automatic pointer level 2 dcl 40 set ref 124* 132 auto_terminal_info 000337 automatic structure level 1 unaligned dcl 43 set ref 169 169 cleanup 000362 stack reference condition dcl 59 ref 116 code 000100 automatic fixed bin(35,0) dcl 36 set ref 109* 110 112* 126* 127 129* 138* 139 141 141* 145* 149* 150 152* 158* 159 161* 169* 170 172* 176* 177 179 182* 192* 193 195* 209* 210 212* com_err_ 000022 constant entry external dcl 70 ref 95 112 289 control 1 000106 automatic structure level 2 dcl 40 cursor_motion_keys 5 based structure level 2 dcl 49 define_area_ 000024 constant entry external dcl 71 ref 126 down 25 based structure array level 3 dcl 49 error_table_$no_table 000030 external static fixed bin(35,0) dcl 85 ref 141 179 explanation parameter char packed unaligned dcl 280 set ref 277 289* extend 1 000106 automatic bit(1) level 3 packed packed unaligned dcl 40 set ref 121* fkey_data based structure level 1 dcl 49 set ref 225 function_key_data based structure level 1 dcl 4-7 function_key_data_highest 000374 automatic fixed bin(17,0) dcl 4-35 set ref 224* 225 225 237 function_key_data_ptr 000372 automatic pointer dcl 4-34 set ref 175* 176* 187 189 207* 225* 226 227 228 230 231 232 233 234 238 239 function_key_data_version_1 constant fixed bin(17,0) initial dcl 4-36 ref 226 function_keys 31 based structure array level 2 dcl 49 help_$init 000036 constant entry external dcl 1-160 ref 192 help_$term 000040 constant entry external dcl 1-160 ref 209 250 help_args based structure level 1 dcl 1-55 highest 1 based fixed bin(17,0) level 2 in structure "function_key_data" dcl 4-7 in procedure "tutorial" set ref 225* highest 1 based fixed bin(17,0) level 2 in structure "fkey_data" dcl 49 in procedure "tutorial" ref 189 home 5 based structure array level 3 dcl 49 i 000357 automatic fixed bin(17,0) dcl 44 set ref 237* 238 238 239* info_name_not_starname based bit(1) array level 4 packed packed unaligned dcl 1-55 set ref 205* inhibit_errors 1(13) based bit(1) level 3 packed packed unaligned dcl 1-55 set ref 199* iox_$control 000042 constant entry external dcl 2-8 ref 109 149 169 267 iox_$user_io 000044 external static pointer dcl 2-41 set ref 109* 149* 158* 169* 267* key_info based structure level 1 packed packed unaligned dcl 4-28 key_shift_idx 000101 automatic fixed bin(17,0) dcl 37 set ref 229* 230 231 232 233 234* left 11 based structure array level 3 dcl 49 length builtin function dcl 54 ref 189 224 228 local_area_info 000106 automatic structure level 1 unaligned dcl 40 set ref 118* 126 126 menu_io 000102 automatic pointer dcl 38 set ref 101* 129* 141* 145* 152* 161* 172* 182* 195* 207* 212* 251* 264 264* 266* 286* 297* my_area based area dcl 50 ref 225 my_area_ptr 000104 automatic pointer dcl 39 set ref 102* 132* 176* 225 253 253* null builtin function dcl 54 ref 101 102 103 105 124 175 187 253 264 266 owner 2 000106 automatic char(32) level 2 packed packed unaligned dcl 40 set ref 122* path based structure array level 2 dcl 1-55 pn_ctl_arg based bit(1) array level 4 packed packed unaligned dcl 1-55 set ref 204* pseudo 000360 automatic bit(1) dcl 45 set ref 167* 207* 223* puser_io_window_info parameter structure level 1 unaligned dcl 280 ref 277 287 294 298 reason 000132 automatic char(512) packed unaligned dcl 41 set ref 129* 138* 145* release_area_ 000026 constant entry external dcl 72 ref 253 right 21 based structure array level 3 dcl 49 search_dirs 26 based char(168) array level 2 packed packed unaligned dcl 1-55 set ref 202* seq_len 4 based fixed bin(21,0) level 3 dcl 49 set ref 228* seq_ptr 2 based pointer level 3 dcl 49 set ref 227* sequence 2 based structure level 2 dcl 49 sequence_index 31 based fixed bin(12,0) array level 3 packed packed unsigned unaligned dcl 49 set ref 238* sequence_length 15(12) based fixed bin(6,0) array level 4 in structure "fkey_data" packed packed unsigned unaligned dcl 49 in procedure "tutorial" set ref 232* sequence_length 11(12) based fixed bin(6,0) array level 4 in structure "fkey_data" packed packed unsigned unaligned dcl 49 in procedure "tutorial" set ref 231* sequence_length 25(12) based fixed bin(6,0) array level 4 in structure "fkey_data" packed packed unsigned unaligned dcl 49 in procedure "tutorial" set ref 234* sequence_length 5(12) based fixed bin(6,0) array level 4 in structure "fkey_data" packed packed unsigned unaligned dcl 49 in procedure "tutorial" set ref 230* sequence_length 21(12) based fixed bin(6,0) array level 4 in structure "fkey_data" packed packed unsigned unaligned dcl 49 in procedure "tutorial" set ref 233* sequence_length 31(12) based fixed bin(6,0) array level 3 in structure "fkey_data" packed packed unsigned unaligned dcl 49 in procedure "tutorial" set ref 239* size 13 000106 automatic fixed bin(18,0) level 2 dcl 40 set ref 123* sys_info$max_seg_size 000032 external static fixed bin(35,0) dcl 86 ref 123 term_type 2 000337 automatic char(32) level 2 packed packed unaligned dcl 43 set ref 176* terminal_info based structure level 1 dcl 7-6 terminal_info_version constant fixed bin(17,0) initial dcl 7-16 ref 168 ttt_info_$function_key_data 000014 constant entry external dcl 64 ref 176 tut_main_menu_ 000012 constant entry external dcl 63 ref 207 tutorial_active 000010 internal static bit(1) initial packed unaligned dcl 79 set ref 92 99* 251 263 270* unspec builtin function dcl 54 set ref 118* up 15 based structure array level 3 dcl 49 user_io_window_info 000332 automatic structure level 1 unaligned dcl 42 set ref 108* 109 109 129* 141* 145* 148* 149 149 152* 161* 172* 182* 195* 212* 251* 267 267 287* 298* value based varying char(425) array level 3 dcl 1-55 set ref 203* version 000106 automatic fixed bin(17,0) level 2 in structure "local_area_info" dcl 40 in procedure "tutorial" set ref 120* version 000337 automatic fixed bin(17,0) level 2 in structure "auto_terminal_info" dcl 43 in procedure "tutorial" set ref 168* version based fixed bin(17,0) level 2 in structure "fkey_data" dcl 49 in procedure "tutorial" set ref 226* video_data_$terminal_iocb 000034 external static pointer dcl 87 ref 105 video_utils_$turn_off_login_channel 000020 constant entry external dcl 68 ref 269 video_utils_$turn_on_login_channel 000016 constant entry external dcl 66 ref 138 video_was_already_on 000011 internal static bit(1) initial dcl 80 set ref 105* 106 136 267 window_$clear_window 000046 constant entry external dcl 3-13 ref 158 window_$destroy 000050 constant entry external dcl 3-74 ref 264 window_position_info based structure level 1 unaligned dcl 6-25 window_position_info_version_1 constant fixed bin(17,0) initial dcl 6-35 ref 108 148 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. KEY_CTRL internal static fixed bin(17,0) initial dcl 4-22 KEY_CTRL_AND_SHIFT internal static fixed bin(17,0) initial dcl 4-22 KEY_SHIFT internal static fixed bin(17,0) initial dcl 4-22 MENU_OPTION_KEYS internal static char(1) initial array packed unaligned dcl 5-100 area_infop automatic pointer dcl 8-5 break_table_info based structure level 1 dcl 6-76 break_table_info_version internal static fixed bin(17,0) initial dcl 6-80 break_table_info_version_1 internal static fixed bin(17,0) initial dcl 6-80 break_table_ptr automatic pointer dcl 6-75 function_key_seqs based char packed unaligned dcl 4-32 get_editor_key_bindings_info based structure level 1 dcl 6-151 get_editor_key_bindings_info_ptr automatic pointer dcl 6-159 get_editor_key_bindings_info_version_1 internal static char(8) initial packed unaligned dcl 6-160 help_ 000000 constant entry external dcl 1-160 iox_$attach_loud 000000 constant entry external dcl 2-8 iox_$attach_name 000000 constant entry external dcl 2-8 iox_$attach_ptr 000000 constant entry external dcl 2-8 iox_$close 000000 constant entry external dcl 2-8 iox_$close_file 000000 constant entry external dcl 2-8 iox_$delete_record 000000 constant entry external dcl 2-8 iox_$destroy_iocb 000000 constant entry external dcl 2-8 iox_$detach 000000 constant entry external dcl 2-8 iox_$detach_iocb 000000 constant entry external dcl 2-8 iox_$err_no_operation 000000 constant entry external dcl 2-8 iox_$err_not_attached 000000 constant entry external dcl 2-8 iox_$err_not_closed 000000 constant entry external dcl 2-8 iox_$err_not_open 000000 constant entry external dcl 2-8 iox_$error_output external static pointer dcl 2-41 iox_$find_iocb 000000 constant entry external dcl 2-8 iox_$find_iocb_n 000000 constant entry external dcl 2-8 iox_$get_chars 000000 constant entry external dcl 2-8 iox_$get_line 000000 constant entry external dcl 2-8 iox_$look_iocb 000000 constant entry external dcl 2-8 iox_$modes 000000 constant entry external dcl 2-8 iox_$move_attach 000000 constant entry external dcl 2-8 iox_$open 000000 constant entry external dcl 2-8 iox_$open_file 000000 constant entry external dcl 2-8 iox_$position 000000 constant entry external dcl 2-8 iox_$propagate 000000 constant entry external dcl 2-8 iox_$put_chars 000000 constant entry external dcl 2-8 iox_$read_key 000000 constant entry external dcl 2-8 iox_$read_length 000000 constant entry external dcl 2-8 iox_$read_record 000000 constant entry external dcl 2-8 iox_$rewrite_record 000000 constant entry external dcl 2-8 iox_$seek_key 000000 constant entry external dcl 2-8 iox_$user_input external static pointer dcl 2-41 iox_$user_output external static pointer dcl 2-41 iox_$write_record 000000 constant entry external dcl 2-8 key_info_ptr automatic pointer dcl 4-38 line_editor_binding_count automatic fixed bin(17,0) dcl 6-121 line_editor_key_binding_info based structure level 1 dcl 6-129 line_editor_key_binding_info_ptr automatic pointer dcl 6-118 line_editor_key_binding_info_version_3 internal static char(8) initial packed unaligned dcl 6-148 line_editor_longest_sequence automatic fixed bin(17,0) dcl 6-123 menu_$create 000000 constant entry external dcl 5-8 menu_$delete 000000 constant entry external dcl 5-61 menu_$describe 000000 constant entry external dcl 5-35 menu_$destroy 000000 constant entry external dcl 5-41 menu_$display 000000 constant entry external dcl 5-20 menu_$get_choice 000000 constant entry external dcl 5-26 menu_$list 000000 constant entry external dcl 5-67 menu_$retrieve 000000 constant entry external dcl 5-54 menu_$store 000000 constant entry external dcl 5-46 menu_format based structure level 1 dcl 5-76 menu_format_ptr automatic pointer dcl 5-94 menu_format_version_1 internal static fixed bin(17,0) initial dcl 5-97 menu_requirements based structure level 1 dcl 5-88 menu_requirements_ptr automatic pointer dcl 5-95 menu_requirements_version_1 internal static fixed bin(17,0) initial dcl 5-97 more_handler_info based structure level 1 dcl 6-83 more_handler_info_ptr automatic pointer dcl 6-92 more_handler_info_version internal static fixed bin(17,0) initial dcl 6-94 more_handler_info_version_3 internal static fixed bin(17,0) initial dcl 6-94 more_prompt_info based structure level 1 dcl 6-108 more_prompt_info_ptr automatic pointer dcl 6-112 more_prompt_info_version_1 internal static char(8) initial packed unaligned dcl 6-114 more_responses_info based structure level 1 dcl 6-59 more_responses_info_ptr automatic pointer dcl 6-69 more_responses_info_version_1 internal static fixed bin(17,0) initial dcl 6-67 more_responses_version internal static fixed bin(17,0) initial dcl 6-67 set_editor_key_bindings_info based structure level 1 dcl 6-162 set_editor_key_bindings_info_ptr automatic pointer dcl 6-171 set_editor_key_bindings_info_version_1 internal static char(8) initial packed unaligned dcl 6-172 terminal_info_ptr automatic pointer dcl 7-15 token_characters_info based structure level 1 dcl 6-97 token_characters_info_ptr automatic pointer dcl 6-104 token_characters_info_version_1 internal static char(8) initial packed unaligned dcl 6-106 window_$bell 000000 constant entry external dcl 3-6 window_$change_column 000000 constant entry external dcl 3-63 window_$change_line 000000 constant entry external dcl 3-59 window_$clear_region 000000 constant entry external dcl 3-7 window_$clear_to_end_of_line 000000 constant entry external dcl 3-9 window_$clear_to_end_of_window 000000 constant entry external dcl 3-11 window_$create 000000 constant entry external dcl 3-72 window_$delete_chars 000000 constant entry external dcl 3-15 window_$edit_line 000000 constant entry external dcl 3-76 window_$get_cursor_position 000000 constant entry external dcl 3-17 window_$get_echoed_chars 000000 constant entry external dcl 3-22 window_$get_one_unechoed 000000 constant entry external dcl 3-67 window_$get_one_unechoed_char 000000 constant entry external dcl 3-67 window_$get_unechoed_chars 000000 constant entry external dcl 3-25 window_$insert_text 000000 constant entry external dcl 3-28 window_$overwrite_text 000000 constant entry external dcl 3-29 window_$position_cursor 000000 constant entry external dcl 3-31 window_$position_cursor_rel 000000 constant entry external dcl 3-36 window_$scroll_region 000000 constant entry external dcl 3-42 window_$sync 000000 constant entry external dcl 3-44 window_$write_raw_text 000000 constant entry external dcl 3-48 window_$write_sync_read 000000 constant entry external dcl 3-53 window_edit_line_info based structure level 1 unaligned dcl 6-177 window_edit_line_info_ptr automatic pointer dcl 6-186 window_edit_line_info_version_1 internal static char(8) initial packed unaligned dcl 6-183 window_position_info_ptr automatic pointer dcl 6-37 window_position_info_version internal static fixed bin(17,0) initial dcl 6-35 window_status_info based structure level 1 dcl 6-45 window_status_info_ptr automatic pointer dcl 6-43 window_status_version internal static fixed bin(17,0) initial dcl 6-52 window_status_version_1 internal static fixed bin(17,0) initial dcl 6-52 NAMES DECLARED BY EXPLICIT CONTEXT. MAIN_MENU 001452 constant label dcl 207 alt_keys 001676 constant entry internal dcl 220 ref 179 187 189 clean_up 002003 constant entry internal dcl 247 ref 116 215 terminate_sys_ 002065 constant entry internal dcl 260 ref 288 299 tut_quit_ 001566 constant entry external dcl 277 ref 129 141 145 152 161 172 182 195 212 tut_terminate_sys_ 001653 constant entry external dcl 294 ref 251 tutorial 000313 constant entry external dcl 31 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 2440 2512 2161 2450 Length 3076 2161 52 347 256 2 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME tutorial 398 external procedure is an external procedure. on unit on line 116 64 on unit alt_keys internal procedure shares stack frame of external procedure tutorial. clean_up 82 internal procedure is called by several nonquick procedures. terminate_sys_ internal procedure shares stack frame of external procedure tutorial. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 tutorial_active tutorial 000011 video_was_already_on tutorial STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME tutorial 000100 code tutorial 000101 key_shift_idx tutorial 000102 menu_io tutorial 000104 my_area_ptr tutorial 000106 local_area_info tutorial 000132 reason tutorial 000332 user_io_window_info tutorial 000337 auto_terminal_info tutorial 000357 i tutorial 000360 pseudo tutorial 000370 Phelp_args tutorial 000372 function_key_data_ptr tutorial 000374 function_key_data_highest tutorial THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_ne_as call_ext_in_desc call_ext_in call_ext_out_desc call_ext_out call_int_this call_int_other return_mac enable_op ext_entry ext_entry_desc int_entry op_alloc_ THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. com_err_ define_area_ help_$init help_$term iox_$control release_area_ ttt_info_$function_key_data tut_main_menu_ video_utils_$turn_off_login_channel video_utils_$turn_on_login_channel window_$clear_window window_$destroy THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$no_table iox_$user_io sys_info$max_seg_size video_data_$terminal_iocb LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 31 000312 92 000320 95 000322 97 000346 99 000347 101 000351 102 000353 103 000354 105 000355 106 000361 108 000362 109 000370 110 000421 112 000423 113 000447 116 000450 118 000472 120 000475 121 000477 122 000501 123 000504 124 000507 126 000511 127 000523 129 000525 130 000555 132 000556 136 000560 138 000563 139 000577 141 000601 145 000640 146 000670 148 000671 149 000677 150 000731 152 000733 154 000766 158 000767 159 001000 161 001002 162 001040 167 001041 168 001042 169 001044 170 001076 172 001100 173 001133 175 001134 176 001136 177 001162 179 001164 182 001171 184 001224 187 001225 189 001232 192 001237 193 001273 195 001275 196 001330 198 001331 199 001334 200 001336 201 001337 202 001341 203 001360 204 001405 205 001426 207 001452 209 001475 210 001516 212 001520 213 001553 215 001554 216 001560 277 001561 286 001613 287 001616 288 001622 289 001623 290 001646 294 001647 297 001665 298 001670 299 001674 300 001675 220 001676 223 001677 224 001701 225 001703 226 001715 227 001717 228 001721 229 001724 230 001731 231 001735 232 001740 233 001743 234 001746 235 001751 237 001753 238 001763 239 001774 240 001777 241 002001 247 002002 250 002010 251 002034 253 002050 255 002064 260 002065 263 002066 264 002071 266 002106 267 002110 269 002146 270 002155 273 002157 ----------------------------------------------------------- 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