COMPILATION LISTING OF SEGMENT apl_attach_streams_ Compiled by: Multics PL/I Compiler, Release 29, of July 28, 1986 Compiled at: Honeywell Bull, Phx. Az., Sys-M Compiled on: 08/04/87 1616.9 mst Tue Options: optimize map 1 /* ****************************************************** 2* * * 3* * * 4* * Copyright (c) 1972 by Massachusetts Institute of * 5* * Technology and Honeywell Information Systems, Inc. * 6* * * 7* * * 8* ****************************************************** */ 9 10 /* Commands and subroutines to attach & detach the APL I/O streams and Device Interface Module. 11* R.S.Lamson, D.A.Moon, and P.Green, 1973 12* Modified 740511 by PG to correct handling of network terminals. 13* Modified 750711 by PG to work with MCS. 14* Modified 760209 by PG to add Correspondence 2741s. 15* Modified 760730 by PG to add bit-paired APL/ASCII terminals (CDI 1030). 16* Modified 770120 by PG to work in an absentee process. 17* Modified 781208 by PG to use iox_$move_attach and friends (bug 218). 18* Modified 790320 by PG to flush NET2741 (sugg 344), add TYPEPAIRED and BITPAIRED (bug 210). 19* Modified 790326 by PG to fix 387 (didn't detach switches in absentee). 20* Modified 790602 by PG to fix 401 (didn't recognize typepaired or bitpaired), 21* and to do sugg 396 (recognize some TTF names, and be consistent with TTF). 22* Modified 790910 by PG to add TELERAY11 and LA36 terminal types (sugg 386). 23* Modified 790912 by PG to get TELERAY11 to switch in and out automatically like TEK4013. 24* Modified 800129 by PG to add SARA, AJ510, and AJ830. 25* Modified 800130 by PG to call apl_dim_select_table_. 26* Modified 800227 by PG to setup apl_static_$user_tty in absentee. 27* Modified 810125 by WMY to fix bug 479, the streams are attached incorrectly 28* when running in foreground absentee. 29* Modified 811208 by TO to get LA36 (ne cybernex_apl) to switch in and out 30* Modified 820824 by AD to fix bug 484 (line length was obtained from modes 31* string instead of by calling get_line_length_). 32**/ 33 34 /* format: style3 */ 35 apl_start: 36 procedure; 37 38 call cu_$arg_count (argument_count); 39 40 if argument_count ^= 0 41 then do; 42 call cu_$arg_ptr (1, argument_ptr, argument_length, code); 43 if code ^= 0 44 then do; 45 argument_error: 46 call com_err_ (code, "apl_start", "Usage: apl_start {-terminal_type name} 47 where name = 1050, 2741, CORR2741, 1030, TEK4013, TEK4015, TN300, ARDS, 48 ASCII, TTY33, TTY38, TYPEPAIRED, BITPAIRED, TELERAY11, LA36, SARA, 49 AJ510, AJ830, AJ832."); 50 return; 51 end; 52 53 if argument ^= "-terminal_type" & argument ^= "-ttp" 54 then do; 55 code = error_table_$badopt; 56 go to argument_error; 57 end; 58 59 call cu_$arg_ptr (2, argument_ptr, argument_length, code); 60 if code ^= 0 61 then do; 62 code = error_table_$noarg; 63 go to argument_error; 64 end; 65 66 user_terminal_type = argument; 67 end; 68 else user_terminal_type = ""; 69 70 call apl_attach_streams_ (user_terminal_type, code); 71 if code ^= 0 72 then call com_err_ (code, "apl_start", "^a", user_terminal_type); 73 74 return; 75 76 apl_attach_streams_: 77 entry (a_terminal_type, a_code); 78 79 a_code = 0; 80 81 if apl_streams_attached 82 then do; 83 a_code = error_table_$ionmat; 84 return; 85 end; 86 87 call user_info_$absentee_queue (abs_q); 88 89 /* The abs_q must be greater than zero (zero means foreground) */ 90 91 if abs_q >= 0 92 then do; 93 absentee_process = "1"b; 94 call iox_$attach_name ("apl_output_", apl_static_$apl_output, "syn_ user_output", 95 codeptr (apl_attach_streams_), a_code); 96 if a_code ^= 0 97 then return; 98 99 call iox_$attach_name ("apl_input_", apl_static_$apl_input, "syn_ user_input", 100 codeptr (apl_attach_streams_), a_code); 101 102 apl_static_$user_tty = iox_$user_io; 103 apl_streams_attached = "1"b; 104 return; 105 end; 106 else absentee_process = "0"b; 107 108 terminal_info.version = 1; 109 call iox_$control (iox_$user_io, "terminal_info", addr (terminal_info), code); 110 if code = 0 111 then do; 112 terminal_type = terminal_info.term_type; 113 114 if terminal_info.line_type = LINE_TELNET 115 then network_terminal = "1"b; 116 else network_terminal = "0"b; 117 end; 118 else do; 119 terminal_type = "ASCII"; 120 network_terminal = "0"b; 121 end; 122 123 if a_terminal_type ^= "" /* if caller gave us one, use it instead */ 124 then do; 125 terminal_type = translate (a_terminal_type, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "abcdefghijklmnopqrstuvwxyz"); 126 if terminal_type = "4013" /* convert old apl-only name to TTF name */ 127 then terminal_type = "TEK4013"; 128 end; 129 130 call apl_dim_select_table_ (terminal_type, table_ptr, default_table_used); 131 132 if default_table_used & a_terminal_type ^= "" /* subroutine couldn't understand name that user gave us */ 133 then do; 134 a_code = error_table_$no_term_type; 135 return; 136 end; 137 138 call mask; 139 140 /* Get the old modes so we can compute some apl modes from them. */ 141 142 call iox_$modes (iox_$user_io, "", old_modes, status_code); 143 if status_code ^= 0 144 then do; 145 a_code = status_code; 146 return; 147 end; 148 149 if index (old_modes, "^red") ^= 0 150 then new_modes = "^red"; 151 else new_modes = "red"; 152 153 if index (old_modes, "^tabs") ^= 0 | (terminal_type = "TEK4013") | (terminal_type = "TEK4015") 154 /* SHOULD BE IN TABLE */ 155 then new_modes = new_modes || ",^tabs"; 156 else new_modes = new_modes || ",tabs"; 157 158 i = get_line_length_$switch (iox_$user_io, status_code); 159 if status_code = 0 160 then new_modes = new_modes || ",ll" || ltrim (char (i)); 161 162 if network_terminal 163 then do; 164 initial_modes = "^esc,^erkl,^can"; 165 final_modes = "esc,erkl,can"; 166 end; 167 else do; 168 initial_modes = "rawi,rawo,^hndlquit"; 169 final_modes = "^rawi,^rawo,hndlquit"; 170 end; 171 172 call iox_$find_iocb ("user_tty_", apl_static_$user_tty, status_code); 173 if status_code ^= 0 174 then go to loss (7); 175 176 call iox_$move_attach (iox_$user_io, apl_static_$user_tty, status_code); 177 if status_code ^= 0 /* today is not our day... */ 178 then go to loss (6); 179 180 call iox_$modes (apl_static_$user_tty, initial_modes, "", status_code); 181 if status_code ^= 0 182 then go to loss (5); 183 184 /* the following statement is necessary because the ios_ writearound for iox_ does not 185* follow the same search rules as the old ios_. taking the addr will cause the normal 186* search rules to be followed. */ 187 188 if addr (apl_dim_$apl_dim_module) = null 189 then ; 190 191 call ios_$attach ("user_i/o", "apl_dim_", "user_tty_", (new_modes), status); 192 if status_code ^= 0 /* what!? probably no room for sdb... */ 193 then go to loss (4); 194 195 call iox_$attach_name ("apl_output_", apl_static_$apl_output, "syn_ user_output", codeptr (apl_attach_streams_), 196 status_code); 197 if status_code ^= 0 198 then go to loss (3); 199 200 call iox_$attach_name ("apl_input_", apl_static_$apl_input, "syn_ user_input", codeptr (apl_attach_streams_), 201 status_code); 202 if status_code ^= 0 203 then go to loss (2); 204 205 call ios_$order ("user_i/o", "set_table", table_ptr, status); 206 if status_code ^= 0 /* aw, c'mon! We got this far and then lost? */ 207 then go to loss (1); 208 209 call ios_$order ("user_i/o", "read_back_input", null, ""b); 210 211 apl_streams_attached = "1"b; /* this bit prevents us from trying to attach the 212* streams more than once, in case of a recursive call. */ 213 214 /* SHOULD BE IN TABLE */ 215 216 if (terminal_type = "TEK4013") | (terminal_type = "TEK4015") | (terminal_type = "TELERAY11") 217 then call iox_$put_chars (apl_static_$user_tty, addr (enter_4013_apl_mode), length (enter_4013_apl_mode), 0); 218 else if (terminal_type = "AJ510") 219 then call iox_$put_chars (apl_static_$user_tty, addr (enter_aj510_apl_mode), length (enter_aj510_apl_mode), 0); 220 else if (terminal_type = "LA36") 221 then call iox_$put_chars (apl_static_$user_tty, addr (enter_la36_apl_mode), length (enter_la36_apl_mode), 0); 222 223 call unmask; 224 return; 225 226 loss (1): 227 call iox_$detach_iocb (apl_static_$apl_input, 0); 228 229 loss (2): 230 call iox_$detach_iocb (apl_static_$apl_output, 0); 231 232 loss (3): 233 call ios_$detach ("user_i/o", "", "", ""b); 234 235 loss (4): 236 call iox_$modes (apl_static_$user_tty, final_modes, "", 0); 237 238 loss (5): 239 call iox_$move_attach (apl_static_$user_tty, iox_$user_io, 0); 240 241 loss (6): 242 loss (7): 243 a_code = status_code; /* give caller prime reason why failed. */ 244 return; 245 246 apl_end: 247 entry; 248 249 call apl_detach_streams_ (code); 250 251 if code ^= 0 252 then call com_err_ (code, "apl_end", "While trying to restore the I/O switches."); 253 254 return; 255 256 apl_detach_streams_: 257 entry (a_code); 258 259 a_code = 0; 260 261 if ^apl_streams_attached 262 then do; 263 a_code = error_table_$ioname_not_active; 264 return; 265 end; 266 267 if ^absentee_process 268 then do; 269 270 /* SHOULD BE IN TABLE */ 271 272 if (terminal_type = "TEK4013") | (terminal_type = "TEK4015") | (terminal_type = "TELERAY11") 273 then call iox_$put_chars (apl_static_$user_tty, addr (leave_4013_apl_mode), length (leave_4013_apl_mode), 274 code); 275 else if (terminal_type = "AJ510") 276 then call iox_$put_chars (apl_static_$user_tty, addr (leave_aj510_apl_mode), 277 length (leave_aj510_apl_mode), code); 278 else if (terminal_type = "LA36") 279 then call iox_$put_chars (apl_static_$user_tty, addr (leave_la36_apl_mode), 280 length (leave_la36_apl_mode), code); 281 282 call mask; 283 284 call ios_$detach ("user_i/o", "", "", ""b); 285 /* flush apl dim */ 286 287 call iox_$move_attach (apl_static_$user_tty, iox_$user_io, code); 288 if code ^= 0 289 then a_code = code; 290 291 call iox_$modes (iox_$user_io, final_modes, "", code); 292 if code ^= 0 293 then a_code = code; 294 295 call unmask; 296 end; 297 298 call iox_$detach_iocb (apl_static_$apl_output, 0); 299 call iox_$detach_iocb (apl_static_$apl_input, 0); 300 301 apl_static_$apl_input = null; 302 apl_static_$apl_output = null; 303 apl_static_$user_tty = null; 304 305 apl_streams_attached = "0"b; /* ready for a 2nd time... */ 306 return; 307 308 /* Internal procedures */ 309 310 mask: 311 unmask: 312 procedure (); 313 314 return; 315 316 end /* mask */; 317 318 /* parameters */ 319 320 dcl ( 321 a_terminal_type char (*), 322 a_code fixed bin (35) 323 ) parameter; 324 325 /* entries */ 326 327 declare apl_attach_streams_ entry (char (*), fixed bin (35)), 328 apl_detach_streams_ entry (fixed bin (35)), 329 apl_dim_$apl_dim_module 330 entry (), 331 apl_dim_select_table_ 332 entry (char (*), ptr, bit (1) aligned), 333 com_err_ entry options (variable), 334 cu_$arg_count entry (fixed bin), 335 cu_$arg_ptr entry (fixed bin, ptr, fixed bin, fixed bin (35)), 336 get_line_length_$switch 337 entry (ptr, fixed bin (35)) returns (fixed bin), 338 ios_$attach entry (char (*), char (*), char (*), char (*), bit (72) aligned), 339 ios_$detach entry (char (*), char (*), char (*), bit (72) aligned), 340 ios_$order entry (char (*), char (*), pointer, bit (72) aligned), 341 iox_$attach_name entry (char (*), ptr, char (*), ptr, fixed bin (35)), 342 iox_$control entry (ptr, char (*), ptr, fixed bin (35)), 343 iox_$detach_iocb entry (ptr, fixed bin (35)), 344 iox_$find_iocb entry (char (*), ptr, fixed bin (35)), 345 iox_$modes entry (ptr, char (*), char (*), fixed bin (35)), 346 iox_$move_attach entry (ptr, ptr, fixed bin (35)), 347 iox_$put_chars entry (ptr, ptr, fixed bin (21), fixed bin (35)), 348 user_info_$absentee_queue 349 entry (fixed bin); 350 351 /* automatic */ 352 353 declare 1 terminal_info aligned, 354 2 version fixed bin, /* ==1 */ 355 2 id char (4) unal, 356 2 term_type char (32) unal, 357 2 line_type fixed bin, 358 2 baud_rate fixed bin, 359 2 reserved (4) fixed bin; 360 361 dcl abs_q fixed bin, 362 argument_count fixed bin, 363 argument_length fixed bin, 364 argument_ptr pointer, 365 default_table_used bit (1) aligned, 366 network_terminal bit (1) aligned, 367 user_terminal_type char (32), 368 (i, number_of_digits) 369 fixed bin, 370 new_modes char (168) varying, 371 status bit (72) aligned, 372 table_ptr pointer, 373 code fixed bin (35); 374 375 /* based */ 376 377 dcl argument char (argument_length) based (argument_ptr), 378 status_code fixed bin (35) aligned based (addr (status)); 379 /* UGH! */ 380 381 /* builtins */ 382 383 dcl (addr, codeptr, index, length, ltrim, null, substr, translate, verify) 384 builtin; 385 386 /* external static */ 387 388 declare ( 389 error_table_$badopt, 390 error_table_$ioname_not_active, 391 error_table_$ionmat, 392 error_table_$no_term_type, 393 error_table_$noarg 394 ) fixed bin (35) external static; 395 396 declare ( 397 apl_static_$apl_input, 398 apl_static_$apl_output, 399 apl_static_$user_tty, 400 iox_$user_io 401 ) ptr external static; 402 403 /* internal static */ 404 405 declare ( 406 absentee_process bit (1) aligned, 407 apl_streams_attached 408 bit (1) aligned initial ("0"b), 409 terminal_type char (32) unal, 410 old_modes char (256), 411 (final_modes, initial_modes) 412 char (32) 413 ) internal static; 414 415 /* internal static initial */ 416 417 declare ( 418 enter_4013_apl_mode char (2) init (""), /* ESC CTL-N */ 419 leave_4013_apl_mode char (2) init (""), /* ESC CTL-O */ 420 enter_aj510_apl_mode 421 char (1) init (""), /* CTL-N */ 422 leave_aj510_apl_mode 423 char (1) init (""), /* CTL-O */ 424 enter_la36_apl_mode char (1) init (""), /* CTL-O */ 425 leave_la36_apl_mode char (1) init ("") /* CTL-N */ 426 ) aligned internal static options (constant); 427 428 /* include files */ 429 1 1 /* BEGIN INCLUDE FILE ... line_types.incl.pl1 */ 1 2 1 3 /* Written November 10 1975 by Paul Green */ 1 4 /* Modified October 1978 by Larry Johnson to include line_type_names */ 1 5 /* Modified 12/19/78 by J. Stern to add POLLED_VIP line type */ 1 6 /* Modified 9/27/79 by J. Stern to add X25LAP line type */ 1 7 /* Modified Spring 1981 by Charles Hornig to add HDLC line type */ 1 8 /* Modified May 1981 by Robert Coren to add COLTS line type */ 1 9 /* Modified September 1984 by Robert Coren to correctly count VIP as a synchronous line type */ 1 10 1 11 1 12 /****^ HISTORY COMMENTS: 1 13* 1) change(86-02-25,Negaret), approve(87-07-13,MCR7679), 1 14* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 1 15* Add a DSA line type. 1 16* 2) change(87-03-17,Beattie), approve(87-07-13,MCR7656), 1 17* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 1 18* Add HASP_OPR to identify HASP workstation consoles with login service. 1 19* END HISTORY COMMENTS */ 1 20 1 21 1 22 declare (LINE_MC initial (-2), 1 23 LINE_TELNET initial (-1), 1 24 LINE_UNKNOWN initial (0), 1 25 LINE_ASCII initial (1), 1 26 LINE_1050 initial (2), 1 27 LINE_2741 initial (3), 1 28 LINE_ARDS initial (4), 1 29 LINE_SYNCH initial (5), 1 30 LINE_G115 initial (6), 1 31 LINE_BSC initial (7), 1 32 LINE_ETX initial (8), 1 33 LINE_VIP initial (9), 1 34 LINE_ASYNC1 initial (10), 1 35 LINE_ASYNC2 initial (11), 1 36 LINE_ASYNC3 initial (12), 1 37 LINE_SYNC1 initial (13), 1 38 LINE_SYNC2 initial (14), 1 39 LINE_SYNC3 initial (15), 1 40 LINE_POLLED_VIP initial (16), 1 41 LINE_X25LAP initial (17), 1 42 LINE_HDLC initial (18), 1 43 LINE_COLTS initial (19), 1 44 LINE_DSA initial (20), 1 45 LINE_HASP_OPR initial (21) 1 46 ) fixed bin internal static options (constant); 1 47 1 48 dcl max_line_type fixed bin int static options (constant) init (21); 1 49 1 50 declare n_sync_line_types fixed bin int static options (constant) init (10); 1 51 1 52 declare sync_line_type (10) fixed bin int static options (constant) init (5, 6, 7, 9, 13, 14, 15, 16, 17, 18); 1 53 1 54 dcl line_types (-2:21) char (16) int static options (constant) init ( 1 55 "MC", /* -2 */ 1 56 "TELNET", /* -1 */ 1 57 "none", /* 0 */ 1 58 "ASCII", /* 1 */ 1 59 "1050", /* 2 */ 1 60 "2741", /* 3 */ 1 61 "ARDS", /* 4 */ 1 62 "Sync", /* 5 */ 1 63 "G115", /* 6 */ 1 64 "BSC", /* 7 */ 1 65 "202ETX", /* 8 */ 1 66 "VIP", /* 9 */ 1 67 "ASYNC1", /* 10 */ 1 68 "ASYNC2", /* 11 */ 1 69 "ASYNC3", /* 12 */ 1 70 "SYNC1", /* 13 */ 1 71 "SYNC2", /* 14 */ 1 72 "SYNC3", /* 15 */ 1 73 "POLLED_VIP", /* 16 */ 1 74 "X25LAP", /* 17 */ 1 75 "HDLC", /* 18 */ 1 76 "COLTS", /* 19 */ 1 77 "DSA", /* 20 */ 1 78 "HASP_OPR"); /* 21 */ 1 79 1 80 /* END INCLUDE FILE ... line_types.incl.pl1 */ 430 431 end /* apl_attach_streams_ */; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 08/04/87 1541.9 apl_attach_streams_.pl1 >special_ldd>install>MR12.1-1054>apl_attach_streams_.pl1 430 1 08/04/87 1140.0 line_types.incl.pl1 >spec>install>1056>line_types.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. LINE_TELNET 002704 constant fixed bin(17,0) initial dcl 1-22 ref 114 a_code parameter fixed bin(35,0) dcl 320 set ref 76 79* 83* 94* 96 99* 134* 145* 241* 256 259* 263* 288* 292* a_terminal_type parameter char unaligned dcl 320 ref 76 123 125 132 abs_q 000120 automatic fixed bin(17,0) dcl 361 set ref 87* 91 absentee_process 000010 internal static bit(1) dcl 405 set ref 93* 106* 267 addr builtin function dcl 383 ref 109 109 142 143 145 158 159 172 173 176 177 180 181 188 192 195 197 200 202 206 216 216 218 218 220 220 241 272 272 275 275 278 278 apl_attach_streams_ 000142 constant entry external dcl 327 ref 70 94 94 99 99 195 195 200 200 apl_detach_streams_ 000144 constant entry external dcl 327 ref 249 apl_dim_$apl_dim_module 000146 constant entry external dcl 327 set ref 188 apl_dim_select_table_ 000150 constant entry external dcl 327 ref 130 apl_static_$apl_input 000222 external static pointer dcl 396 set ref 99* 200* 226* 299* 301* apl_static_$apl_output 000224 external static pointer dcl 396 set ref 94* 195* 229* 298* 302* apl_static_$user_tty 000226 external static pointer dcl 396 set ref 102* 172* 176* 180* 216* 218* 220* 235* 238* 272* 275* 278* 287* 303* apl_streams_attached 000011 internal static bit(1) initial dcl 405 set ref 81 103* 211* 261 305* argument based char unaligned dcl 377 ref 53 53 66 argument_count 000121 automatic fixed bin(17,0) dcl 361 set ref 38* 40 argument_length 000122 automatic fixed bin(17,0) dcl 361 set ref 42* 53 53 59* 66 argument_ptr 000124 automatic pointer dcl 361 set ref 42* 53 53 59* 66 code 000220 automatic fixed bin(35,0) dcl 361 set ref 42* 43 45* 55* 59* 60 62* 70* 71 71* 109* 110 249* 251 251* 272* 275* 278* 287* 288 288 291* 292 292 codeptr builtin function dcl 383 ref 94 94 99 99 195 195 200 200 com_err_ 000152 constant entry external dcl 327 ref 45 71 251 cu_$arg_count 000154 constant entry external dcl 327 ref 38 cu_$arg_ptr 000156 constant entry external dcl 327 ref 42 59 default_table_used 000126 automatic bit(1) dcl 361 set ref 130* 132 enter_4013_apl_mode 000012 constant char(2) initial dcl 417 set ref 216 216 216 216 enter_aj510_apl_mode 000010 constant char(1) initial dcl 417 set ref 218 218 218 218 enter_la36_apl_mode 000007 constant char(1) initial dcl 417 set ref 220 220 220 220 error_table_$badopt 000210 external static fixed bin(35,0) dcl 388 ref 55 error_table_$ioname_not_active 000212 external static fixed bin(35,0) dcl 388 ref 263 error_table_$ionmat 000214 external static fixed bin(35,0) dcl 388 ref 83 error_table_$no_term_type 000216 external static fixed bin(35,0) dcl 388 ref 134 error_table_$noarg 000220 external static fixed bin(35,0) dcl 388 ref 62 final_modes 000122 internal static char(32) unaligned dcl 405 set ref 165* 169* 235* 291* get_line_length_$switch 000160 constant entry external dcl 327 ref 158 i 000140 automatic fixed bin(17,0) dcl 361 set ref 158* 159 index builtin function dcl 383 ref 149 153 initial_modes 000132 internal static char(32) unaligned dcl 405 set ref 164* 168* 180* ios_$attach 000162 constant entry external dcl 327 ref 191 ios_$detach 000164 constant entry external dcl 327 ref 232 284 ios_$order 000166 constant entry external dcl 327 ref 205 209 iox_$attach_name 000170 constant entry external dcl 327 ref 94 99 195 200 iox_$control 000172 constant entry external dcl 327 ref 109 iox_$detach_iocb 000174 constant entry external dcl 327 ref 226 229 298 299 iox_$find_iocb 000176 constant entry external dcl 327 ref 172 iox_$modes 000200 constant entry external dcl 327 ref 142 180 235 291 iox_$move_attach 000202 constant entry external dcl 327 ref 176 238 287 iox_$put_chars 000204 constant entry external dcl 327 ref 216 218 220 272 275 278 iox_$user_io 000230 external static pointer dcl 396 set ref 102 109* 142* 158* 176* 238* 287* 291* leave_4013_apl_mode 000011 constant char(2) initial dcl 417 set ref 272 272 272 272 leave_aj510_apl_mode 000007 constant char(1) initial dcl 417 set ref 275 275 275 275 leave_la36_apl_mode 000010 constant char(1) initial dcl 417 set ref 278 278 278 278 length builtin function dcl 383 ref 216 216 218 218 220 220 272 272 275 275 278 278 line_type 12 000100 automatic fixed bin(17,0) level 2 dcl 353 set ref 114 ltrim builtin function dcl 383 ref 159 network_terminal 000127 automatic bit(1) dcl 361 set ref 114* 116* 120* 162 new_modes 000141 automatic varying char(168) dcl 361 set ref 149* 151* 153* 153 156* 156 159* 159 191 null builtin function dcl 383 ref 188 209 209 301 302 303 old_modes 000022 internal static char(256) unaligned dcl 405 set ref 142* 149 153 status 000214 automatic bit(72) dcl 361 set ref 142 143 145 158 159 172 173 176 177 180 181 191* 192 195 197 200 202 205* 206 241 status_code based fixed bin(35,0) dcl 377 set ref 142* 143 145 158* 159 172* 173 176* 177 180* 181 192 195* 197 200* 202 206 241 table_ptr 000216 automatic pointer dcl 361 set ref 130* 205* term_type 2 000100 automatic char(32) level 2 packed unaligned dcl 353 set ref 112 terminal_info 000100 automatic structure level 1 dcl 353 set ref 109 109 terminal_type 000012 internal static char(32) unaligned dcl 405 set ref 112* 119* 125* 126 126* 130* 153 153 216 216 216 218 220 272 272 272 275 278 translate builtin function dcl 383 ref 125 user_info_$absentee_queue 000206 constant entry external dcl 327 ref 87 user_terminal_type 000130 automatic char(32) unaligned dcl 361 set ref 66* 68* 70* 71* version 000100 automatic fixed bin(17,0) level 2 dcl 353 set ref 108* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. LINE_1050 internal static fixed bin(17,0) initial dcl 1-22 LINE_2741 internal static fixed bin(17,0) initial dcl 1-22 LINE_ARDS internal static fixed bin(17,0) initial dcl 1-22 LINE_ASCII internal static fixed bin(17,0) initial dcl 1-22 LINE_ASYNC1 internal static fixed bin(17,0) initial dcl 1-22 LINE_ASYNC2 internal static fixed bin(17,0) initial dcl 1-22 LINE_ASYNC3 internal static fixed bin(17,0) initial dcl 1-22 LINE_BSC internal static fixed bin(17,0) initial dcl 1-22 LINE_COLTS internal static fixed bin(17,0) initial dcl 1-22 LINE_DSA internal static fixed bin(17,0) initial dcl 1-22 LINE_ETX internal static fixed bin(17,0) initial dcl 1-22 LINE_G115 internal static fixed bin(17,0) initial dcl 1-22 LINE_HASP_OPR internal static fixed bin(17,0) initial dcl 1-22 LINE_HDLC internal static fixed bin(17,0) initial dcl 1-22 LINE_MC internal static fixed bin(17,0) initial dcl 1-22 LINE_POLLED_VIP internal static fixed bin(17,0) initial dcl 1-22 LINE_SYNC1 internal static fixed bin(17,0) initial dcl 1-22 LINE_SYNC2 internal static fixed bin(17,0) initial dcl 1-22 LINE_SYNC3 internal static fixed bin(17,0) initial dcl 1-22 LINE_SYNCH internal static fixed bin(17,0) initial dcl 1-22 LINE_UNKNOWN internal static fixed bin(17,0) initial dcl 1-22 LINE_VIP internal static fixed bin(17,0) initial dcl 1-22 LINE_X25LAP internal static fixed bin(17,0) initial dcl 1-22 line_types internal static char(16) initial array unaligned dcl 1-54 max_line_type internal static fixed bin(17,0) initial dcl 1-48 n_sync_line_types internal static fixed bin(17,0) initial dcl 1-50 number_of_digits automatic fixed bin(17,0) dcl 361 substr builtin function dcl 383 sync_line_type internal static fixed bin(17,0) initial array dcl 1-52 verify builtin function dcl 383 NAMES DECLARED BY EXPLICIT CONTEXT. apl_attach_streams_ 000523 constant entry external dcl 76 apl_detach_streams_ 002214 constant entry external dcl 256 apl_end 002144 constant entry external dcl 246 apl_start 000301 constant entry external dcl 35 argument_error 000337 constant label dcl 45 ref 56 63 loss 000000 constant label array(7) dcl 226 ref 173 177 181 192 197 202 206 mask 002500 constant entry internal dcl 310 ref 138 282 unmask 002476 constant entry internal dcl 310 ref 223 295 NAME DECLARED BY CONTEXT OR IMPLICATION. char builtin function ref 159 STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 3244 3476 2705 3254 Length 4006 2705 232 273 337 132 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME apl_start 246 external procedure is an external procedure. unmask internal procedure shares stack frame of external procedure apl_start. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 absentee_process apl_start 000011 apl_streams_attached apl_start 000012 terminal_type apl_start 000022 old_modes apl_start 000122 final_modes apl_start 000132 initial_modes apl_start STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME apl_start 000100 terminal_info apl_start 000120 abs_q apl_start 000121 argument_count apl_start 000122 argument_length apl_start 000124 argument_ptr apl_start 000126 default_table_used apl_start 000127 network_terminal apl_start 000130 user_terminal_type apl_start 000140 i apl_start 000141 new_modes apl_start 000214 status apl_start 000216 table_ptr apl_start 000220 code apl_start THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_char_temp cat_realloc_chars call_ext_out_desc call_ext_out return_mac shorten_stack ext_entry ext_entry_desc set_chars_eis index_chars_eis THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. apl_attach_streams_ apl_detach_streams_ apl_dim_$apl_dim_module apl_dim_select_table_ com_err_ cu_$arg_count cu_$arg_ptr get_line_length_$switch ios_$attach ios_$detach ios_$order iox_$attach_name iox_$control iox_$detach_iocb iox_$find_iocb iox_$modes iox_$move_attach iox_$put_chars user_info_$absentee_queue THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. apl_static_$apl_input apl_static_$apl_output apl_static_$user_tty error_table_$badopt error_table_$ioname_not_active error_table_$ionmat error_table_$no_term_type error_table_$noarg iox_$user_io LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 35 000300 38 000306 40 000314 42 000316 43 000335 45 000337 50 000367 53 000370 55 000402 56 000405 59 000406 60 000425 62 000427 63 000432 66 000433 67 000440 68 000441 70 000444 71 000461 74 000516 76 000517 79 000541 81 000542 83 000545 84 000547 87 000550 91 000556 93 000560 94 000563 96 000627 99 000631 102 000675 103 000701 104 000703 106 000704 108 000706 109 000710 110 000743 112 000745 114 000751 116 000757 117 000760 119 000761 120 000765 123 000766 125 000775 126 001006 130 001016 132 001036 134 001050 135 001053 138 001054 142 001055 143 001102 145 001106 146 001107 149 001110 151 001125 153 001131 156 001163 158 001175 159 001207 162 001273 164 001276 165 001302 166 001305 168 001306 169 001312 172 001315 173 001341 176 001343 177 001356 180 001360 181 001405 188 001407 191 001416 192 001465 195 001470 197 001535 200 001537 202 001603 205 001605 206 001641 209 001643 211 001704 216 001707 218 001745 220 001773 223 002020 224 002021 226 002022 229 002034 232 002046 235 002076 238 002124 241 002140 244 002142 246 002143 249 002151 251 002160 254 002210 256 002211 259 002224 261 002225 263 002230 264 002232 267 002233 272 002235 275 002272 278 002317 282 002343 284 002344 287 002374 288 002407 291 002412 292 002437 295 002442 298 002443 299 002455 301 002467 302 002472 303 002473 305 002474 306 002475 310 002476 314 002501 ----------------------------------------------------------- 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