COMPILATION LISTING OF SEGMENT xforum_default_fkeys_ Compiled by: Multics PL/I Compiler, Release 28e, of February 14, 1985 Compiled at: Honeywell Multics Op. - System M Compiled on: 04/24/86 1530.2 mst Thu Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1983 * 4* * * 5* *********************************************************** */ 6 7 8 9 /****^ HISTORY COMMENTS: 10* 1) change(84-11-06,Davids), approve(86-02-04,MCR7350), 11* audit(86-04-24,Gilcrease), install(86-04-24,MR12.0-1048): 12* Improved the functional description and redid the declarations. 13* END HISTORY COMMENTS */ 14 15 16 xforum_default_fkeys_: proc () returns (ptr) /* must be quick */; 17 18 /* 19* BEGIN DESCRIPTION 20* 21* function: 22* This module creates a static function key data structure that does not 23* depend on function keys that are part of the currently used terminal. The 24* function key mapping is: 25* 1: ESC? 9: ESCF 26* 2: ESCf 11: ESCP 27* 3: ESCp 12: ESCQ 28* 4: ESCq 13: ESCR 29* 5: ESCr 14: ESCL 30* 6: ESCl 15: ESCH 31* 7: ESCh 16: ESCE 32* 8: ESCe 33* 34* description of entry points: 35* xforum_default_fkeys_: 36* input: 37* output: returns (ptr) A pointer to the function_key_data structure 38* The function key data structure is allocated in the system_free_area_. 39* A pointer to the structure is keep in internal static. If a call is 40* made and the internal static pointer is not null then the pointer 41* value is returned. If the pointer is null, the structure is allocated, 42* the static pointer value set, and the pointer value returned. Note 43* that the structure is NOT FREED when xforum terminates. It is a small 44* structure and it was decided to leave it around so that it could be 45* used in another invocation of xforum. 46* 47* description of internal procedures: 48* 49* known bugs: 50* 51* notes: 52* 53* history: 54* 83-??-?? Deryk Barker: written. 55* 56* 84-09-17 Davids: Added the upper case letters to the list of pseudo 57* function keys. 58* 59* END DESCRIPTION 60**/ 61 62 /* PARAMETERS */ 63 64 /* EXTERNAL STATIC */ 65 66 /* ENTRIES */ 67 68 dcl get_system_free_area_ entry () returns (ptr); 69 70 /* CONDITIONS */ 71 72 /* INTERNAL AUTOMATIC */ 73 74 dcl i fixed bin; /* loop index */ 75 76 /* INTERNAL STATIC */ 77 78 dcl default static ptr init (null); /* pointer to the allocated structure */ 79 80 /* CONSTANTS */ 81 82 dcl ( 83 ESC init ("") char (1), /* escape character, \033 */ 84 PSEUDO_KEYS init ("?fpqrlheFPQRLHE") char (15) /* second characters in the */ 85 ) internal static options (constant); /* pseudo function keys */ 86 87 /* BUILTINS */ 88 89 dcl length builtin; 90 dcl null builtin; 91 dcl substr builtin; 92 93 /* BASED */ 94 95 dcl default_fkey_seq char (default -> function_key_data.seq_len) /* string defining the pseudo */ 96 based (default -> function_key_data.seq_ptr); /* function key character sequences */ 97 dcl system_area area based (get_system_free_area_ ()); /* system free area */ 98 99 /* INCLUDE FILES */ 100 1 1 /* BEGIN INCLUDE FILE ... function_key_data.incl.pl1 1 2* 1 3* This include file defines the structure used for ttt_info_$function_key_data 1 4* MCR 4671 James R. Davis Sept 80 1 5**/ 1 6 1 7 dcl 1 function_key_data aligned based (function_key_data_ptr), 1 8 2 version fixed bin, 1 9 2 highest fixed bin, /* highest fkey */ 1 10 2 sequence, /* string of all seqs. */ 1 11 3 seq_ptr pointer, 1 12 3 seq_len fixed bin (21), 1 13 2 cursor_motion_keys, 1 14 3 home (0:3) like key_info, 1 15 3 left (0:3) like key_info, 1 16 3 up (0:3) like key_info, 1 17 3 right (0:3) like key_info, 1 18 3 down (0:3) like key_info, 1 19 2 function_keys (0:function_key_data_highest refer 1 20 (function_key_data.highest), 0:3) like key_info; 1 21 1 22 dcl (KEY_PLAIN init (0), 1 23 KEY_SHIFT init (1), 1 24 KEY_CTRL init (2), 1 25 KEY_CTRL_AND_SHIFT init (3) 1 26 ) fixed bin internal static options (constant); 1 27 1 28 dcl 1 key_info unaligned based (key_info_ptr), 1 29 2 sequence_index fixed bin (12) unsigned unaligned, 1 30 2 sequence_length fixed bin (6) unsigned unaligned; /* 0 -> not exist */ 1 31 1 32 dcl function_key_seqs char (function_key_data.sequence.seq_len) 1 33 based (function_key_data.sequence.seq_ptr); 1 34 dcl function_key_data_ptr ptr; 1 35 dcl function_key_data_highest fixed bin; 1 36 dcl function_key_data_version_1 1 37 fixed bin internal static options (constant) init (1); 1 38 dcl key_info_ptr ptr; 1 39 1 40 1 41 /* END INCLUDE FILE ... function_key_data.incl.pl1 */ 101 102 103 if default ^= null () 104 then return (default); 105 106 function_key_data_highest = length (PSEUDO_KEYS); 107 108 allocate function_key_data set (default) in (system_area); 109 default -> function_key_data.version = function_key_data_version_1; 110 default -> function_key_data.seq_len = 2 * function_key_data_highest; 111 112 allocate default_fkey_seq in (system_area); 113 do i = 1 to function_key_data_highest; 114 substr (default_fkey_seq, 2 * i - 1, 1) = ESC; 115 substr (default_fkey_seq, 2 * i, 1) = substr (PSEUDO_KEYS, i, 1); 116 default -> function_key_data.function_keys (i, KEY_PLAIN).sequence_index = 2 * i - 1; 117 default -> function_key_data.function_keys (i, KEY_PLAIN).sequence_length = 2; 118 end; 119 120 return (default); 121 122 end xforum_default_fkeys_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 04/24/86 1513.4 xforum_default_fkeys_.pl1 >special_ldd>install>MR12.0-1048>xforum_default_fkeys_.pl1 101 1 02/23/81 2146.3 function_key_data.incl.pl1 >ldd>include>function_key_data.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. ESC constant char(1) initial unaligned dcl 82 ref 114 KEY_PLAIN constant fixed bin(17,0) initial dcl 1-22 ref 116 117 PSEUDO_KEYS 000000 constant char(15) initial unaligned dcl 82 ref 106 115 default 000010 internal static pointer initial dcl 78 set ref 103 103 108* 109 110 112 112 112 114 114 115 115 116 117 120 default_fkey_seq based char unaligned dcl 95 set ref 112 114* 115* function_key_data based structure level 1 dcl 1-7 set ref 108 function_key_data_highest 000101 automatic fixed bin(17,0) dcl 1-35 set ref 106* 108 108 110 113 function_key_data_version_1 constant fixed bin(17,0) initial dcl 1-36 ref 109 function_keys 31 based structure array level 2 dcl 1-7 get_system_free_area_ 000012 constant entry external dcl 68 ref 108 112 highest 1 based fixed bin(17,0) level 2 dcl 1-7 set ref 108* i 000100 automatic fixed bin(17,0) dcl 74 set ref 113* 114 115 115 116 116 117* key_info based structure level 1 packed unaligned dcl 1-28 length builtin function dcl 89 ref 106 null builtin function dcl 90 ref 103 seq_len 4 based fixed bin(21,0) level 3 dcl 1-7 set ref 110* 112 112 114 115 seq_ptr 2 based pointer level 3 dcl 1-7 set ref 112* 114 115 sequence 2 based structure level 2 dcl 1-7 sequence_index 31 based fixed bin(12,0) array level 3 packed unsigned unaligned dcl 1-7 set ref 116* sequence_length 31(12) based fixed bin(6,0) array level 3 packed unsigned unaligned dcl 1-7 set ref 117* substr builtin function dcl 91 set ref 114* 115* 115 system_area based area(1024) dcl 97 ref 108 112 version based fixed bin(17,0) level 2 dcl 1-7 set ref 109* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. KEY_CTRL internal static fixed bin(17,0) initial dcl 1-22 KEY_CTRL_AND_SHIFT internal static fixed bin(17,0) initial dcl 1-22 KEY_SHIFT internal static fixed bin(17,0) initial dcl 1-22 function_key_data_ptr automatic pointer dcl 1-34 function_key_seqs based char unaligned dcl 1-32 key_info_ptr automatic pointer dcl 1-38 NAME DECLARED BY EXPLICIT CONTEXT. xforum_default_fkeys_ 000013 constant entry external dcl 16 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 212 226 151 222 Length 422 151 14 157 40 2 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME xforum_default_fkeys_ 75 external procedure is an external procedure. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 default xforum_default_fkeys_ STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME xforum_default_fkeys_ 000100 i xforum_default_fkeys_ 000101 function_key_data_highest xforum_default_fkeys_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out return ext_entry alloc_based THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. get_system_free_area_ NO EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 16 000010 103 000020 106 000030 108 000032 109 000054 110 000056 112 000061 113 000103 114 000113 115 000122 116 000126 117 000137 118 000142 120 000144 ----------------------------------------------------------- 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