COMPILATION LISTING OF SEGMENT atm Compiled by: Multics PL/I Compiler, Release 29, of July 28, 1986 Compiled at: Honeywell Bull, Phx. Az., Sys-M Compiled on: 08/07/87 1501.3 mst Fri Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1987 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1986 * 6* * * 7* *********************************************************** */ 8 9 /****^ HISTORY COMMENTS: 10* 1) change(86-08-14,Flegel), approve(87-07-15,MCR7580), 11* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 12* Created. 13* 2) change(86-08-28,Flegel), approve(87-07-15,MCR7580), 14* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 15* Extracted get_at_ to separate module. 16* 3) change(86-10-07,Flegel), approve(87-07-15,MCR7580), 17* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 18* Added syn_mowse_i/o to allow easy location of the switch attached to 19* mowse_io_ module. 20* 4) change(86-10-08,Flegel), approve(87-07-15,MCR7580), 21* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 22* Renamed attachments. 23* 5) change(86-10-09,Flegel), approve(87-07-15,MCR7580), 24* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 25* Masked around critical switch movements. 26* 6) change(86-11-27,Flegel), approve(86-11-27,MCR7580), 27* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 28* Approved. 29* 7) change(87-01-19,Flegel), approve(87-01-19,MCR7580), 30* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 31* Added check for WSTERM terminal type before attaching MOWSE. 32* 8) change(87-02-25,Flegel), approve(87-02-25,MCR7580), 33* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 34* Corrected terminal type setting test, installed the 35* clean_up_init_mowse_info routine, and added the force request to the 36* command. 37* 9) change(87-03-24,Flegel), approve(87-03-24,MCR7580), 38* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 39* Changed call to iox_$open_file in order to pass escape and EOP character 40* information to mowse_io_. 41* END HISTORY COMMENTS */ 42 43 /* format: style4,indattr,ifthen,^indcomtxt,thendo,^indproc,^indblkcom,initcol1,declareind8,dclind4,struclvlind3,comcol55 */ 44 atm: 45 attach_mowse: 46 proc (); 47 48 /* : PROGRAM FUNCTION 49* 50*Attach the MOWSE environment to the user's process. 51**/ 52 53 /* : NOTES 54* 55*The MOWSE environment is to be used only by the user when (s)he has logged 56*into Multics through the MOWSE environment on a Personal Computer. Failure to 57*do so will result in a "hung" terminal. 58* 59*MOWSE will be attached before tty_. If tty_ does not exist, then attachment 60*will fail. 61* 62*Below is a before/after look of the io switch attachments: 63* 64* --| 65* --+--...---- tty_ 66* --| 67* 68* --| 69* --+--...---- syn_ ---- mowse_io_ ---- tty_ 70* --| 71**/ 72 73 74 /* MISC VARIABLES */ 75 dcl open_descrip char (32); /* Open description arguments */ 76 dcl err_string char (512) var; 77 dcl iocb_ptr ptr; 78 dcl switch_name char (32); /* Switch name to attach to */ 79 dcl arg_count fixed bin; /* Number of arguments */ 80 dcl arg_list_ptr ptr; /* Pointer to argument list */ 81 dcl mowse_iocb_ptr ptr; /* Pointer to Mowse control block */ 82 dcl syn_iocb_ptr ptr; /* Pointer to Syn Mowse control block */ 83 dcl code fixed bin (35); /* Error code */ 84 dcl old_mask bit (36) aligned; /* IPS mask */ 85 dcl new_mask bit (36) aligned; /* IPS mask */ 86 87 /* STRUCTURES */ 88 dcl 01 term_info like terminal_info aligned automatic; 89 dcl 01 info like mowse_io_info automatic; 90 91 /* SYSTEM CALLS */ 92 dcl iox_$open_file entry (ptr, fixed bin, char (*), bit (1) aligned, fixed bin (35)); 93 dcl ioa_$ioa_switch entry () options (variable); 94 dcl hcs_$set_ips_mask entry (bit (36) aligned, bit (36) aligned); 95 dcl hcs_$reset_ips_mask entry (bit (36) aligned, bit (36) aligned); 96 dcl ioa_$rsnnl entry () options (variable); 97 dcl iox_$detach_iocb entry (ptr, fixed bin (35)); 98 dcl iox_$destroy_iocb entry (ptr, fixed bin (35)); 99 dcl iox_$look_iocb entry (char (*), ptr, fixed bin (35)); 100 dcl cu_$arg_count entry (fixed bin, fixed bin (35)); 101 dcl cu_$arg_list_ptr entry (ptr); 102 dcl iox_$control entry (ptr, char (*), ptr, fixed bin (35)); 103 dcl com_err_ entry () options (variable); 104 dcl iox_$move_attach entry (ptr, ptr, fixed bin (35)); 105 dcl iox_$find_iocb entry (char (*), ptr, fixed bin (35)); 106 dcl iox_$attach_ptr entry (ptr, char (*), ptr, fixed bin (35)); 107 108 109 /* SYSTEM CALL SUPPORT */ 110 dcl iox_$error_output ptr ext static; 111 dcl ws_error_$unsupported_ws_terminal 112 fixed bin (35) ext static; 113 dcl iox_$user_io ptr ext static; /* User_i/o IOCB */ 114 115 116 /* EXTERNAL CALLS */ 117 dcl get_at_ entry (char (*), char (*), ptr, fixed bin (35)); 118 dcl init_mowse_ entry (ptr, ptr, fixed bin (35)); 119 dcl startup_parser_ entry (ptr, fixed bin, ptr, char (*) var, 120 fixed bin (35)); 121 122 123 /* EXTERNAL CALL SUPPORT */ 124 125 126 /* BUILTINS */ 127 dcl addr builtin; 128 dcl length builtin; 129 dcl null builtin; 130 dcl index builtin; 131 132 /* CONDITIONS */ 133 134 135 /* CONSTANTS */ 136 dcl MY_NAME char (12) int static options (constant) 137 init ("attach_mowse"); 138 139 140 /* */ 141 /* INITIALIZATION */ 142 open_struc_ptr = addr (open_descrip); 143 init_mowse_info_ptr = null; 144 new_mask = ""b; 145 146 /* MAIN */ 147 148 /* : MOWSE already attached? */ 149 150 call iox_$look_iocb ("mowse_i/o", iocb_ptr, code); 151 if iocb_ptr ^= null then do; 152 call ioa_$ioa_switch (iox_$error_output, 153 "^a: MOWSE has already been invoked.", MY_NAME); 154 return; 155 end; 156 157 /* : Parse the arglist */ 158 159 call cu_$arg_list_ptr (arg_list_ptr); 160 call cu_$arg_count (arg_count, code); 161 if code ^= 0 then do; 162 call com_err_ (code, MY_NAME, "Getting arg count."); 163 return; 164 end; 165 166 /* : Call arg_list parser routine */ 167 168 call startup_parser_ (arg_list_ptr, arg_count, init_mowse_info_ptr, 169 err_string, code); 170 if code ^= 0 then do; 171 call com_err_ (code, MY_NAME, err_string); 172 call clean_up_init_mowse_info (init_mowse_info_ptr); 173 return; 174 end; 175 176 /* : See if we are on an acceptable terminal type */ 177 178 if ^init_mowse_info.flags.force_sw then do; 179 term_info.version = 1; 180 call iox_$control (iox_$user_io, "terminal_info", 181 addr (term_info), code); 182 if code ^= 0 then do; 183 call com_err_ (code, MY_NAME, "Getting terminal type."); 184 call clean_up_init_mowse_info (init_mowse_info_ptr); 185 return; 186 end; 187 188 if index (term_info.term_type, "MOWSE") = 0 then do; 189 call com_err_ (ws_error_$unsupported_ws_terminal, 190 MY_NAME, "Use MOWSE."); 191 call clean_up_init_mowse_info (init_mowse_info_ptr); 192 return; 193 end; 194 end; 195 196 /* : Find the iocb of the switch (if specified) under which to attach, 197* otherwise next to tty_ */ 198 199 if ^init_mowse_info.flags.io_switch_sw then do; 200 call get_at_ ("tty_", "", iocb_ptr, code); 201 if code ^= 0 then do; 202 call com_err_ (code, MY_NAME, "Finding tty_."); 203 call clean_up_init_mowse_info (init_mowse_info_ptr); 204 return; 205 end; 206 end; 207 else do; 208 switch_name = init_mowse_info.io_switch; 209 call iox_$look_iocb (switch_name, iocb_ptr, code); 210 if code ^= 0 then do; 211 call com_err_ (code, MY_NAME, "Finding ^a", 212 switch_name); 213 call clean_up_init_mowse_info (init_mowse_info_ptr); 214 return; 215 end; 216 end; 217 218 /* : Create mowse_tty control block */ 219 220 call iox_$find_iocb ("mowse_tty", mowse_iocb_ptr, code); 221 if code ^= 0 then do; 222 call com_err_ (code, MY_NAME, "Finding mowse_tty."); 223 call clean_up_init_mowse_info (init_mowse_info_ptr); 224 return; 225 end; 226 227 /* : Create mowse_i/o control block */ 228 229 call iox_$find_iocb ("mowse_i/o", syn_iocb_ptr, code); 230 if code ^= 0 then do; 231 call iox_$destroy_iocb (mowse_iocb_ptr, (0)); 232 call com_err_ (code, MY_NAME, "Finding mowse_i/o."); 233 call clean_up_init_mowse_info (init_mowse_info_ptr); 234 return; 235 end; 236 237 /* : Move mowse_i/o onto the iocb above tty_ */ 238 239 new_mask = ""b; 240 call hcs_$set_ips_mask (new_mask, old_mask); 241 call iox_$move_attach (iocb_ptr, syn_iocb_ptr, code); 242 if code ^= 0 then do; 243 call hcs_$reset_ips_mask (old_mask, new_mask); 244 call ioa_$rsnnl ("Moving ^a attachment to mowse_i/o.", 245 err_string, length (err_string), iocb_ptr -> iocb.name); 246 goto DESTROY_IOCB_SYN; 247 end; 248 249 /* : Attach the syn_ */ 250 251 call iox_$attach_ptr (iocb_ptr, "syn_ mowse_i/o", null, code); 252 if code ^= 0 then do; 253 call hcs_$reset_ips_mask (old_mask, new_mask); 254 call ioa_$rsnnl ("Attaching ^a to mowse_i/o.", err_string, 255 length (err_string), iocb_ptr -> iocb.name); 256 goto UNMOVE_ATTACH_SYN; 257 end; 258 call hcs_$reset_ips_mask (old_mask, new_mask); 259 260 /* : Move mowse_i/o to mowse_io_ */ 261 262 new_mask = ""b; 263 call hcs_$set_ips_mask (new_mask, old_mask); 264 call iox_$move_attach (syn_iocb_ptr, mowse_iocb_ptr, code); 265 if code ^= 0 then do; 266 call hcs_$reset_ips_mask (old_mask, new_mask); 267 call ioa_$rsnnl ("Moving ^a attachment to mowse_i/o.", 268 err_string, length (err_string), syn_iocb_ptr -> iocb.name) 269 ; 270 goto DESTROY_IOCB; 271 end; 272 273 /* : Attach mowse_io_ to tty_ */ 274 275 call iox_$attach_ptr (syn_iocb_ptr, "mowse_io_ mowse_tty", null, 276 code); 277 if code ^= 0 then do; 278 call hcs_$reset_ips_mask (old_mask, new_mask); 279 call ioa_$rsnnl ("Attaching ^a to mowse_tty.", err_string, 280 length (err_string), syn_iocb_ptr -> iocb.name); 281 goto UNMOVE_ATTACH; 282 end; 283 call hcs_$reset_ips_mask (old_mask, new_mask); 284 285 /* : Open mowse_io_ */ 286 287 open_struc.flags.network_sw = "0"b; 288 open_struc.flags.escape_sw = "0"b; 289 if init_mowse_info.flags.escape_sw then do; 290 open_struc.flags.escape_sw = "1"b; 291 open_struc.escape.switches = init_mowse_info.escape.chars; 292 end; 293 if init_mowse_info.flags.network_sw then 294 open_struc.flags.network_sw = "1"b; 295 296 call iox_$open_file (syn_iocb_ptr, Stream_input_output, 297 open_descrip, "0"b, code); 298 if code ^= 0 then do; 299 err_string = "Opening mowse_tty."; 300 goto UNATTACH; 301 end; 302 303 /* : Initialization of mowse */ 304 305 info.version = mowse_io_info_version_1; 306 call iox_$control (syn_iocb_ptr, "get_mowse_info", addr (info), 307 code); 308 if code ^= 0 then do; 309 call com_err_ (code, MY_NAME, "Getting mowse mcb."); 310 call clean_up_init_mowse_info (init_mowse_info_ptr); 311 return; 312 end; 313 314 /* : Set up the mowse_info_ structure */ 315 316 call init_mowse_ (info.mcb_ptr, init_mowse_info_ptr, code); 317 if code ^= 0 then do; 318 call com_err_ (code, MY_NAME, "Initializing mowse."); 319 call clean_up_init_mowse_info (init_mowse_info_ptr); 320 return; 321 end; 322 323 return; 324 325 /* */ 326 327 /* : Label entries to transfer control to when a failure occurs during the 328* attachment / movement of the iocbs */ 329 330 UNATTACH: 331 call iox_$detach_iocb (syn_iocb_ptr, (0)); 332 333 UNMOVE_ATTACH: 334 call iox_$move_attach (mowse_iocb_ptr, syn_iocb_ptr, (0)); 335 336 DESTROY_IOCB: 337 call iox_$destroy_iocb (mowse_iocb_ptr, (0)); 338 339 UNMOVE_ATTACH_SYN: 340 call iox_$detach_iocb (iocb_ptr, (0)); 341 call iox_$move_attach (syn_iocb_ptr, iocb_ptr, (0)); 342 343 DESTROY_IOCB_SYN: 344 call iox_$destroy_iocb (syn_iocb_ptr, (0)); 345 346 call com_err_ (code, MY_NAME, err_string); 347 call clean_up_init_mowse_info (init_mowse_info_ptr); 348 349 return; 350 351 /* */ 352 353 /* INTERNAL PROCEDURES */ 354 355 /* : *** Procedure clean_up_init_mowse_ptr: internal procedure for atm *** */ 356 357 clean_up_init_mowse_info: 358 proc (p_info_ptr); 359 360 /* : PROCEDURE FUNCTION 361* 362*Free the init_mowse_info structure if the pointer is not null. 363**/ 364 365 /* INPUT PARAMETERS */ 366 dcl p_info_ptr ptr parameter; 367 368 /* INITIALIZATION */ 369 370 if p_info_ptr ^= null then 371 free p_info_ptr -> init_mowse_info; 372 p_info_ptr = null; 373 374 end clean_up_init_mowse_info; 375 376 /* */ 377 378 379 /* INCLUDE FILES */ 1 1 /* Begin include file ..... iox_modes.incl.pl1 */ 1 2 1 3 /* Written by C. D. Tavares, 03/17/75 */ 1 4 /* Updated 10/31/77 by CDT to include short iox mode strings */ 1 5 1 6 dcl iox_modes (13) char (24) int static options (constant) aligned initial 1 7 ("stream_input", "stream_output", "stream_input_output", 1 8 "sequential_input", "sequential_output", "sequential_input_output", "sequential_update", 1 9 "keyed_sequential_input", "keyed_sequential_output", "keyed_sequential_update", 1 10 "direct_input", "direct_output", "direct_update"); 1 11 1 12 dcl short_iox_modes (13) char (4) int static options (constant) aligned initial 1 13 ("si", "so", "sio", "sqi", "sqo", "sqio", "squ", "ksqi", "ksqo", "ksqu", "di", "do", "du"); 1 14 1 15 dcl (Stream_input initial (1), 1 16 Stream_output initial (2), 1 17 Stream_input_output initial (3), 1 18 Sequential_input initial (4), 1 19 Sequential_output initial (5), 1 20 Sequential_input_output initial (6), 1 21 Sequential_update initial (7), 1 22 Keyed_sequential_input initial (8), 1 23 Keyed_sequential_output initial (9), 1 24 Keyed_sequential_update initial (10), 1 25 Direct_input initial (11), 1 26 Direct_output initial (12), 1 27 Direct_update initial (13)) fixed bin int static options (constant); 1 28 1 29 /* End include file ..... iox_modes.incl.pl1 */ 380 2 1 /* BEGIN INCLUDE FiLE ... terminal_info.incl.pl1 */ 2 2 2 3 /* Created 5/25/77 by J. Stern */ 2 4 2 5 2 6 dcl 1 terminal_info aligned based (terminal_info_ptr), /* info structure for terminal_info order */ 2 7 2 version fixed bin, /* version number of this sturcture */ 2 8 2 id char (4) unaligned, /* terminal id from answerback */ 2 9 2 term_type char (32) unaligned, /* terminal type name */ 2 10 2 line_type fixed bin, /* line type number */ 2 11 2 baud_rate fixed bin, 2 12 2 reserved (4) fixed bin; /* reserved for future use */ 2 13 2 14 2 15 dcl terminal_info_ptr ptr; 2 16 dcl terminal_info_version fixed bin int static options (constant) init (1); /* current version */ 2 17 2 18 2 19 /* END INCLUDE FILE ... terminal_info.incl.pl1 */ 381 3 1 /* BEGIN INCLUDE FILE: mowse_info.incl.pl1 * * * * * * * * * * * * */ 3 2 3 3 /****^ HISTORY COMMENTS: 3 4* 1) change(86-07-19,Smith), approve(87-07-15,MCR7580), 3 5* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 3 6* Created to define MOWSE information to be 3 7* placed into a temp segment. 3 8* 2) change(86-11-27,Flegel), approve(86-11-27,MCR7580), 3 9* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 3 10* Approved. 3 11* 3) change(87-02-25,Flegel), approve(87-02-25,MCR7580), 3 12* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 3 13* Added bit switches to the init_mowse_info structure as well as the force 3 14* flag. 3 15* 4) change(87-03-24,Flegel), approve(87-03-24,MCR7580), 3 16* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 3 17* Added open_struc for passing EOP and escape char info from attach_mowse 3 18* to mowse_io_. 3 19* END HISTORY COMMENTS */ 3 20 3 21 /* CAT index limits */ 3 22 3 23 /* format: style4,indattr,ifthen,^indcomtxt,thendo,^indproc,^indblkcom,initcol1,declareind8,dclind4,struclvlind3,comcol55 */ 3 24 dcl MINIMUM_CAT_ENTRY fixed bin int static options (constant) init (33); 3 25 dcl MAXIMUM_CAT_ENTRY fixed bin int static options (constant) init (64); 3 26 3 27 dcl CAPABILITY_NAME_LENGTH fixed bin int static options (constant) init (32); 3 28 3 29 /* Mowse information structure */ 3 30 3 31 dcl 01 mowse_info based aligned, 3 32 02 version char (8), 3 33 02 local_cat dimension (33:64), /* Multics CAT table */ 3 34 03 flags, 3 35 04 reset bit (1) unal, /* Reset in progress */ 3 36 04 suspended bit (1) unal, /* Suspended applciation */ 3 37 04 status bit (1) unal, /* Status pending */ 3 38 04 mbz1 bit (33) unal, 3 39 03 sleep_time fixed bin, /* Time application is sleeping */ 3 40 03 mcb_ptr ptr, /* Capability MCB */ 3 41 02 remote_cat dimension (33:64), /* PC CAT table */ 3 42 03 major_capability 3 43 fixed bin, /* Capability number */ 3 44 03 capability_name char (32), /* Name of capability */ 3 45 03 flags, 3 46 04 reset bit (1) unal, /* Reset in progress */ 3 47 04 suspended bit (1) unal, /* Suspended capability */ 3 48 04 sleep_time bit (1) unal, /* Application sleeping */ 3 49 04 mbz2 bit (33) unal, 3 50 02 message_manager_info, /* Info for processing messages */ 3 51 03 head_list_ptr ptr, /* Head of message list */ 3 52 03 tail_list_ptr ptr, /* Tail of message list */ 3 53 03 pending_messages 3 54 fixed bin, /* Number of pending messages */ 3 55 02 mowse_flags, 3 56 03 trace bit (1) unal, /* Message tracing facility active */ 3 57 03 debug bit (1) unal, /* Debugging packets facility active */ 3 58 03 error_handled bit (1) unal, /* In mowse_error_handler procedure */ 3 59 03 mbz1 bit (33) unal, 3 60 03 trace_file_iocb ptr, /* Trace file iocb */ 3 61 03 debug_file_iocb ptr, /* Debug file iocb */ 3 62 02 init_mowse_info_ptr 3 63 ptr; /* Initialization information */ 3 64 3 65 /* MOWSE initialization information */ 3 66 3 67 dcl init_mowse_info_ptr ptr; 3 68 dcl 01 init_mowse_info based (init_mowse_info_ptr), 3 69 02 version char (8), 3 70 02 flags, /* Bit switches */ 3 71 03 trace_sw bit (1) unal, 3 72 03 debug_sw bit (1) unal, 3 73 03 io_switch_sw bit (1) unal, 3 74 03 force_sw bit (1) unal, 3 75 03 start_up_sw bit (1) unal, 3 76 03 escape_sw bit (1) unal, 3 77 03 network_sw bit (1) unal, 3 78 03 pad bit (29) unal, 3 79 02 escape, 3 80 03 chars (0:255) bit (1) unal, /* Character escapes */ 3 81 03 pad bit (32) unal, 3 82 02 trace char (512) var, /* Trace file name */ 3 83 02 debug char (512) var, /* Debug file name */ 3 84 02 io_switch char (512) var, /* Io switch name of mowse_io_ attachment */ 3 85 02 startup (MAXIMUM_CAT_ENTRY - MINIMUM_CAT_ENTRY + 1) 3 86 char (168) var; /* Capability to be autoloaded */ 3 87 3 88 /* Open description structure (this is padded to character bounds as it 3 89* is a character overlay structure - passed as a character string) */ 3 90 3 91 dcl open_struc_ptr ptr; 3 92 dcl 01 open_struc based (open_struc_ptr), 3 93 02 flags, 3 94 03 network_sw bit (1) unal, 3 95 03 escape_sw bit (1) unal, 3 96 03 pad bit (7) unal, 3 97 02 escape, 3 98 03 switches (0:255) bit (1) unal, 3 99 03 pad bit (32) unal, 3 100 02 mbz bit (16) unal; 3 101 3 102 /* END INCLUDE FILE: mowse_info.incl.pl1 * * * * * * * * * * * * */ 382 4 1 4 2 dcl 1 iocb aligned based (iocb_ptr), 4 3 /* I/O control block. */ 4 4 2 iocb_version fixed init (1), /* Version number of structure. */ 4 5 2 name char (32), /* I/O name of this block. */ 4 6 2 actual_iocb_ptr ptr, /* IOCB ultimately SYNed to. */ 4 7 2 attach_descrip_ptr ptr, /* Ptr to printable attach description. */ 4 8 2 attach_data_ptr ptr, /* Ptr to attach data structure. */ 4 9 2 open_descrip_ptr ptr, /* Ptr to printable open description. */ 4 10 2 open_data_ptr ptr, /* Ptr to open data structure (old SDB). */ 4 11 2 reserved bit (72), /* Reserved for future use. */ 4 12 2 detach_iocb entry (ptr, fixed (35)),/* detach_iocb(p,s) */ 4 13 2 open entry (ptr, fixed, bit (1) aligned, fixed (35)), 4 14 /* open(p,mode,not_used,s) */ 4 15 2 close entry (ptr, fixed (35)),/* close(p,s) */ 4 16 2 get_line entry (ptr, ptr, fixed (21), fixed (21), fixed (35)), 4 17 /* get_line(p,bufptr,buflen,actlen,s) */ 4 18 2 get_chars entry (ptr, ptr, fixed (21), fixed (21), fixed (35)), 4 19 /* get_chars(p,bufptr,buflen,actlen,s) */ 4 20 2 put_chars entry (ptr, ptr, fixed (21), fixed (35)), 4 21 /* put_chars(p,bufptr,buflen,s) */ 4 22 2 modes entry (ptr, char (*), char (*), fixed (35)), 4 23 /* modes(p,newmode,oldmode,s) */ 4 24 2 position entry (ptr, fixed, fixed (21), fixed (35)), 4 25 /* position(p,u1,u2,s) */ 4 26 2 control entry (ptr, char (*), ptr, fixed (35)), 4 27 /* control(p,order,infptr,s) */ 4 28 2 read_record entry (ptr, ptr, fixed (21), fixed (21), fixed (35)), 4 29 /* read_record(p,bufptr,buflen,actlen,s) */ 4 30 2 write_record entry (ptr, ptr, fixed (21), fixed (35)), 4 31 /* write_record(p,bufptr,buflen,s) */ 4 32 2 rewrite_record entry (ptr, ptr, fixed (21), fixed (35)), 4 33 /* rewrite_record(p,bufptr,buflen,s) */ 4 34 2 delete_record entry (ptr, fixed (35)),/* delete_record(p,s) */ 4 35 2 seek_key entry (ptr, char (256) varying, fixed (21), fixed (35)), 4 36 /* seek_key(p,key,len,s) */ 4 37 2 read_key entry (ptr, char (256) varying, fixed (21), fixed (35)), 4 38 /* read_key(p,key,len,s) */ 4 39 2 read_length entry (ptr, fixed (21), fixed (35)); 4 40 /* read_length(p,len,s) */ 4 41 383 5 1 /* BEGIN INCLUDE FILE: mowse_io_control_info.incl.pl1 * * * * * * * * * * * * */ 5 2 5 3 /****^ HISTORY COMMENTS: 5 4* 1) change(86-06-15,Flegel), approve(86-12-16,MCR7580), 5 5* audit(86-12-15,Gilcrease), install(87-01-06,MR12.0-1255): 5 6* Created for control support for mowse_io_. 5 7* 2) change(86-08-01,Flegel), approve(86-12-16,MCR7580), 5 8* audit(86-12-15,Gilcrease), install(87-01-06,MR12.0-1255): 5 9* Changed version fields to char (8) and 5 10* installed version constant. 5 11* 3) change(86-10-08,Flegel), approve(86-12-16,MCR7580), 5 12* audit(86-12-15,Gilcrease), install(87-01-06,MR12.0-1255): 5 13* Added flush_subchannel_info structure. 5 14* 4) change(86-11-27,Flegel), approve(86-11-27,MCR7580), 5 15* audit(86-12-15,Gilcrease), install(87-01-06,MR12.0-1255): 5 16* Approved. 5 17* 5) change(86-12-05,Flegel), approve(86-12-05,MCR7580), 5 18* audit(86-12-15,Gilcrease), install(87-01-06,MR12.0-1255): 5 19* Added mowse_io_set_video_mode_info structure. 5 20* 6) change(87-07-31,Flegel), approve(87-07-31,MCR7580), 5 21* audit(87-07-31,RBarstad), install(87-08-07,MR12.1-1075): 5 22* Changes to support async call channels. 5 23* END HISTORY COMMENTS */ 5 24 5 25 /* : Version number */ 5 26 /* format: style4,indattr,ifthen,^indcomtxt,thendo,^indproc,^indblkcom,initcol1,declareind8,dclind4,struclvlind3,comcol55 */ 5 27 dcl mowse_io_info_version_1 5 28 char (8) int static options (constant) 5 29 init ("miover_1"); 5 30 5 31 /* : Mowse store info structure */ 5 32 dcl mowse_io_store_info_ptr 5 33 ptr; 5 34 dcl 01 mowse_io_store_info based (mowse_io_store_info_ptr), 5 35 02 version char (8), 5 36 02 info_ptr ptr; /* Pointer to mowse_info_ structure */ 5 37 5 38 /* : Mowse info structure */ 5 39 dcl mowse_io_info_ptr ptr; 5 40 dcl 01 mowse_io_info based (mowse_io_info_ptr), 5 41 02 version char (8), 5 42 02 mcb_ptr ptr, /* Pointer to mowse_mcb */ 5 43 02 info_ptr ptr; /* Pointer to Mowse information (CATs etc.) */ 5 44 5 45 /* : Control info overlay for debug_on */ 5 46 dcl mowse_io_debug_info_ptr 5 47 ptr; 5 48 dcl 01 mowse_io_debug_info based (mowse_io_debug_info_ptr), 5 49 02 version char (8), 5 50 02 segment_name char (512) var; /* Debug file name */ 5 51 5 52 /* : Control info overlay for get_terminal_emulator_state */ 5 53 dcl mowse_io_terminal_state_ptr 5 54 ptr; 5 55 dcl 01 mowse_io_terminal_state 5 56 based (mowse_io_terminal_state_ptr), 5 57 02 version char (8), 5 58 02 state bit (1) unal, /* WSTERM state */ 5 59 02 mbz bit (35) unal; 5 60 5 61 /* : Control info overlay for send_message and send_local_message */ 5 62 dcl mowse_io_message_ptr ptr; 5 63 dcl 01 mowse_io_message based (mowse_io_message_ptr), 5 64 02 version char (8), 5 65 02 channel fixed bin, /* Channel of message */ 5 66 02 io_message_ptr ptr, /* Pointer to the nonvarying message */ 5 67 02 io_message_len fixed bin (21); /* Length of message */ 5 68 5 69 /* : Control info overlay for put_to_sleep */ 5 70 dcl mowse_io_sleep_info_ptr 5 71 ptr; 5 72 dcl 01 mowse_io_sleep_info based (mowse_io_sleep_info_ptr), 5 73 02 version char (8), 5 74 02 major_index fixed bin, /* CAT index of sleeper */ 5 75 02 sleep_seconds fixed bin; /* Sleep interval */ 5 76 5 77 /* : Control info for flush_subchannel */ 5 78 dcl mowse_io_flush_subchannel_info_ptr 5 79 ptr; 5 80 dcl 01 mowse_io_flush_subchannel_info 5 81 based (mowse_io_flush_subchannel_info_ptr), 5 82 02 version char (8), 5 83 02 subchannel fixed bin; /* The subchannel to be flushed (BG/FG) */ 5 84 5 85 /* : Control info to set the video mode */ 5 86 dcl mowse_io_set_video_mode_info_ptr 5 87 ptr; 5 88 dcl 01 mowse_io_set_video_mode_info 5 89 based (mowse_io_set_video_mode_info_ptr), 5 90 02 version char (8), 5 91 02 mode bit (1) unal, /* On or off */ 5 92 02 mbz bit (35) unal; 5 93 5 94 /* END INCLUDE FILE: mowse_io_control_info.incl.pl1 * * * * * * * * * * * * */ 384 385 386 /* : END */ 387 end; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 08/07/87 1450.0 atm.pl1 >special_ldd>install>MR12.1-1075>atm.pl1 380 1 02/02/78 1229.7 iox_modes.incl.pl1 >ldd>include>iox_modes.incl.pl1 381 2 06/29/77 1624.0 terminal_info.incl.pl1 >ldd>include>terminal_info.incl.pl1 382 3 08/07/87 1445.8 mowse_info.incl.pl1 >special_ldd>install>MR12.1-1075>mowse_info.incl.pl1 383 4 07/02/81 1905.0 iocbv.incl.pl1 >ldd>include>iocbv.incl.pl1 384 5 08/07/87 1445.8 mowse_io_control_info.incl.pl1 >special_ldd>install>MR12.1-1075>mowse_io_control_info.incl.pl1 NAMES DECLARED IN THIS COMPILATION. IDENTIFIER OFFSET LOC STORAGE CLASS DATA TYPE ATTRIBUTES AND REFERENCES (* indicates a set context) NAMES DECLARED BY DECLARE STATEMENT. MAXIMUM_CAT_ENTRY constant fixed bin(17,0) initial dcl 3-25 ref 370 MINIMUM_CAT_ENTRY constant fixed bin(17,0) initial dcl 3-24 ref 370 MY_NAME 000003 constant char(12) initial unaligned dcl 136 set ref 152* 162* 171* 183* 189* 202* 211* 222* 232* 309* 318* 346* Stream_input_output 000002 constant fixed bin(17,0) initial dcl 1-15 set ref 296* addr builtin function dcl 127 ref 142 180 180 306 306 arg_count 000324 automatic fixed bin(17,0) dcl 79 set ref 160* 168* arg_list_ptr 000326 automatic pointer dcl 80 set ref 159* 168* chars 3 based bit(1) array level 3 packed unaligned dcl 3-68 ref 291 code 000334 automatic fixed bin(35,0) dcl 83 set ref 150* 160* 161 162* 168* 170 171* 180* 182 183* 200* 201 202* 209* 210 211* 220* 221 222* 229* 230 232* 241* 242 251* 252 264* 265 275* 277 296* 298 306* 308 309* 316* 317 318* 346* com_err_ 000036 constant entry external dcl 103 ref 162 171 183 189 202 211 222 232 309 318 346 cu_$arg_count 000030 constant entry external dcl 100 ref 160 cu_$arg_list_ptr 000032 constant entry external dcl 101 ref 159 err_string 000110 automatic varying char(512) dcl 76 set ref 168* 171* 244* 244 244 254* 254 254 267* 267 267 279* 279 279 299* 346* escape 3 based structure level 2 in structure "init_mowse_info" packed unaligned dcl 3-68 in procedure "attach_mowse" escape 0(09) based structure level 2 in structure "open_struc" packed unaligned dcl 3-92 in procedure "attach_mowse" escape_sw 2(05) based bit(1) level 3 in structure "init_mowse_info" packed unaligned dcl 3-68 in procedure "attach_mowse" ref 289 escape_sw 0(01) based bit(1) level 3 in structure "open_struc" packed unaligned dcl 3-92 in procedure "attach_mowse" set ref 288* 290* flags 2 based structure level 2 in structure "init_mowse_info" packed unaligned dcl 3-68 in procedure "attach_mowse" flags based structure level 2 in structure "open_struc" packed unaligned dcl 3-92 in procedure "attach_mowse" force_sw 2(03) based bit(1) level 3 packed unaligned dcl 3-68 ref 178 get_at_ 000054 constant entry external dcl 117 ref 200 hcs_$reset_ips_mask 000016 constant entry external dcl 95 ref 243 253 258 266 278 283 hcs_$set_ips_mask 000014 constant entry external dcl 94 ref 240 263 index builtin function dcl 130 ref 188 info 000360 automatic structure level 1 unaligned dcl 89 set ref 306 306 init_mowse_ 000056 constant entry external dcl 118 ref 316 init_mowse_info based structure level 1 unaligned dcl 3-68 ref 370 init_mowse_info_ptr 000366 automatic pointer dcl 3-67 set ref 143* 168* 172* 178 184* 191* 199 203* 208 213* 223* 233* 289 291 293 310* 316* 319* 347* io_switch 415 based varying char(512) level 2 dcl 3-68 ref 208 io_switch_sw 2(02) based bit(1) level 3 packed unaligned dcl 3-68 ref 199 ioa_$ioa_switch 000012 constant entry external dcl 93 ref 152 ioa_$rsnnl 000020 constant entry external dcl 96 ref 244 254 267 279 iocb based structure level 1 dcl 4-2 iocb_ptr 000312 automatic pointer dcl 77 set ref 150* 151 200* 209* 241* 244 251* 254 339* 341* iox_$attach_ptr 000044 constant entry external dcl 106 ref 251 275 iox_$control 000034 constant entry external dcl 102 ref 180 306 iox_$destroy_iocb 000024 constant entry external dcl 98 ref 231 336 343 iox_$detach_iocb 000022 constant entry external dcl 97 ref 330 339 iox_$error_output 000046 external static pointer dcl 110 set ref 152* iox_$find_iocb 000042 constant entry external dcl 105 ref 220 229 iox_$look_iocb 000026 constant entry external dcl 99 ref 150 209 iox_$move_attach 000040 constant entry external dcl 104 ref 241 264 333 341 iox_$open_file 000010 constant entry external dcl 92 ref 296 iox_$user_io 000052 external static pointer dcl 113 set ref 180* length builtin function dcl 128 ref 244 244 254 254 267 267 279 279 mcb_ptr 2 000360 automatic pointer level 2 dcl 89 set ref 316* mowse_io_info based structure level 1 unaligned dcl 5-40 mowse_io_info_version_1 000000 constant char(8) initial unaligned dcl 5-27 ref 305 mowse_iocb_ptr 000330 automatic pointer dcl 81 set ref 220* 231* 264* 333* 336* name 1 based char(32) level 2 dcl 4-2 set ref 244* 254* 267* 279* network_sw based bit(1) level 3 in structure "open_struc" packed unaligned dcl 3-92 in procedure "attach_mowse" set ref 287* 293* network_sw 2(06) based bit(1) level 3 in structure "init_mowse_info" packed unaligned dcl 3-68 in procedure "attach_mowse" ref 293 new_mask 000336 automatic bit(36) dcl 85 set ref 144* 239* 240* 243* 253* 258* 262* 263* 266* 278* 283* null builtin function dcl 129 ref 143 151 251 251 275 275 370 372 old_mask 000335 automatic bit(36) dcl 84 set ref 240* 243* 253* 258* 263* 266* 278* 283* open_descrip 000100 automatic char(32) unaligned dcl 75 set ref 142 296* open_struc based structure level 1 packed unaligned dcl 3-92 open_struc_ptr 000370 automatic pointer dcl 3-91 set ref 142* 287 288 290 291 293 p_info_ptr parameter pointer dcl 366 set ref 357 370 370 372* startup_parser_ 000060 constant entry external dcl 119 ref 168 switch_name 000314 automatic char(32) unaligned dcl 78 set ref 208* 209* 211* switches 0(09) based bit(1) array level 3 packed unaligned dcl 3-92 set ref 291* syn_iocb_ptr 000332 automatic pointer dcl 82 set ref 229* 241* 264* 267 275* 279 296* 306* 330* 333* 341* 343* term_info 000337 automatic structure level 1 dcl 88 set ref 180 180 term_type 2 000337 automatic char(32) level 2 packed unaligned dcl 88 set ref 188 terminal_info based structure level 1 dcl 2-6 version 000337 automatic fixed bin(17,0) level 2 in structure "term_info" dcl 88 in procedure "attach_mowse" set ref 179* version 000360 automatic char(8) level 2 in structure "info" packed unaligned dcl 89 in procedure "attach_mowse" set ref 305* ws_error_$unsupported_ws_terminal 000050 external static fixed bin(35,0) dcl 111 set ref 189* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. CAPABILITY_NAME_LENGTH internal static fixed bin(17,0) initial dcl 3-27 Direct_input internal static fixed bin(17,0) initial dcl 1-15 Direct_output internal static fixed bin(17,0) initial dcl 1-15 Direct_update internal static fixed bin(17,0) initial dcl 1-15 Keyed_sequential_input internal static fixed bin(17,0) initial dcl 1-15 Keyed_sequential_output internal static fixed bin(17,0) initial dcl 1-15 Keyed_sequential_update internal static fixed bin(17,0) initial dcl 1-15 Sequential_input internal static fixed bin(17,0) initial dcl 1-15 Sequential_input_output internal static fixed bin(17,0) initial dcl 1-15 Sequential_output internal static fixed bin(17,0) initial dcl 1-15 Sequential_update internal static fixed bin(17,0) initial dcl 1-15 Stream_input internal static fixed bin(17,0) initial dcl 1-15 Stream_output internal static fixed bin(17,0) initial dcl 1-15 iox_modes internal static char(24) initial array dcl 1-6 mowse_info based structure level 1 dcl 3-31 mowse_io_debug_info based structure level 1 unaligned dcl 5-48 mowse_io_debug_info_ptr automatic pointer dcl 5-46 mowse_io_flush_subchannel_info based structure level 1 unaligned dcl 5-80 mowse_io_flush_subchannel_info_ptr automatic pointer dcl 5-78 mowse_io_info_ptr automatic pointer dcl 5-39 mowse_io_message based structure level 1 unaligned dcl 5-63 mowse_io_message_ptr automatic pointer dcl 5-62 mowse_io_set_video_mode_info based structure level 1 packed unaligned dcl 5-88 mowse_io_set_video_mode_info_ptr automatic pointer dcl 5-86 mowse_io_sleep_info based structure level 1 unaligned dcl 5-72 mowse_io_sleep_info_ptr automatic pointer dcl 5-70 mowse_io_store_info based structure level 1 unaligned dcl 5-34 mowse_io_store_info_ptr automatic pointer dcl 5-32 mowse_io_terminal_state based structure level 1 packed unaligned dcl 5-55 mowse_io_terminal_state_ptr automatic pointer dcl 5-53 short_iox_modes internal static char(4) initial array dcl 1-12 terminal_info_ptr automatic pointer dcl 2-15 terminal_info_version internal static fixed bin(17,0) initial dcl 2-16 NAMES DECLARED BY EXPLICIT CONTEXT. DESTROY_IOCB 001774 constant label dcl 336 ref 270 DESTROY_IOCB_SYN 002034 constant label dcl 343 ref 246 UNATTACH 001746 constant label dcl 330 ref 300 UNMOVE_ATTACH 001760 constant label dcl 333 ref 281 UNMOVE_ATTACH_SYN 002006 constant label dcl 339 ref 256 atm 000215 constant entry external dcl 44 attach_mowse 000206 constant entry external dcl 44 clean_up_init_mowse_info 002072 constant entry internal dcl 357 ref 172 184 191 203 213 223 233 310 319 347 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 2362 2444 2114 2372 Length 2776 2114 62 316 246 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME attach_mowse 313 external procedure is an external procedure. clean_up_init_mowse_info internal procedure shares stack frame of external procedure attach_mowse. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME attach_mowse 000100 open_descrip attach_mowse 000110 err_string attach_mowse 000312 iocb_ptr attach_mowse 000314 switch_name attach_mowse 000324 arg_count attach_mowse 000326 arg_list_ptr attach_mowse 000330 mowse_iocb_ptr attach_mowse 000332 syn_iocb_ptr attach_mowse 000334 code attach_mowse 000335 old_mask attach_mowse 000336 new_mask attach_mowse 000337 term_info attach_mowse 000360 info attach_mowse 000366 init_mowse_info_ptr attach_mowse 000370 open_struc_ptr attach_mowse THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out return_mac ext_entry set_chars_eis index_chars_eis op_freen_ THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. com_err_ cu_$arg_count cu_$arg_list_ptr get_at_ hcs_$reset_ips_mask hcs_$set_ips_mask init_mowse_ ioa_$ioa_switch ioa_$rsnnl iox_$attach_ptr iox_$control iox_$destroy_iocb iox_$detach_iocb iox_$find_iocb iox_$look_iocb iox_$move_attach iox_$open_file startup_parser_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. iox_$error_output iox_$user_io ws_error_$unsupported_ws_terminal LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 44 000205 142 000222 143 000224 144 000226 150 000227 151 000254 152 000260 154 000304 159 000305 160 000314 161 000325 162 000327 163 000356 168 000357 170 000407 171 000411 172 000432 173 000434 178 000435 179 000441 180 000443 182 000475 183 000477 184 000523 185 000525 188 000526 189 000535 191 000562 192 000564 199 000565 200 000571 201 000620 202 000622 203 000647 204 000651 206 000652 208 000653 209 000657 210 000700 211 000702 213 000734 214 000736 220 000737 221 000764 222 000766 223 001012 224 001014 229 001015 230 001043 231 001045 232 001057 233 001106 234 001110 240 001111 241 001122 242 001135 243 001137 244 001150 246 001201 251 001202 252 001234 253 001236 254 001247 256 001300 258 001301 262 001312 263 001313 264 001324 265 001337 266 001341 267 001352 270 001403 275 001404 277 001435 278 001437 279 001450 281 001501 283 001502 287 001513 288 001517 289 001522 290 001526 291 001531 293 001540 296 001546 298 001601 299 001603 300 001610 305 001611 306 001613 308 001645 309 001647 310 001673 311 001675 316 001676 317 001711 318 001713 319 001742 320 001744 323 001745 330 001746 333 001760 336 001774 339 002006 341 002020 343 002034 346 002046 347 002067 349 002071 357 002072 370 002074 372 002103 374 002106 ----------------------------------------------------------- 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