COMPILATION LISTING OF SEGMENT priv_ibm3270_mpx Compiled by: Multics PL/I Compiler, Release 32f, of October 9, 1989 Compiled at: Bull HN, Phoenix AZ, System-M Compiled on: 11/11/89 1007.0 mst Sat Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1987 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 6* * * 7* * Copyright (c) 1972 by Massachusetts Institute of * 8* * Technology and Honeywell Information Systems, Inc. * 9* * * 10* *********************************************************** */ 11 12 13 /* PRIV_IBM3270_MPX - Contains the portions of the ibm3270 multiplexer that need nt be wired */ 14 15 /* Written May 1979 by Larry Johnson */ 16 /* Modified June 1981 by Robert Coren to allocate and report meters */ 17 /* Modified November 1984 by Robert Coren to use tty_area_manager to allocate and free meters */ 18 19 /* format: style4,delnl,insnl,^ifthendo */ 20 priv_ibm3270_mpx: 21 proc; 22 23 /* Arguments */ 24 25 dcl arg_devx fixed bin; 26 dcl arg_miip ptr; 27 dcl arg_mdp ptr; 28 dcl arg_infop ptr; 29 dcl arg_order char (*); 30 dcl arg_code fixed bin (35); 31 32 /* Automatic */ 33 34 dcl code fixed bin (35); 35 dcl devx fixed bin; 36 dcl (i, j) fixed bin; 37 dcl name char (32) var; 38 dcl sub_channel_flags (0:31) bit (1) unal; 39 dcl infop ptr; 40 dcl order char (32); 41 42 /* Internal static */ 43 44 dcl init_sw bit (1) int static init ("0"b); /* Set on first ibm3270 load during multics bootload */ 45 46 /* External */ 47 48 dcl tty_area_manager$allocate entry (fixed bin, ptr); 49 dcl tty_area_manager$free entry (fixed bin, ptr); 50 dcl ibm3270_mpx$crash entry (ptr); 51 dcl ibm3270_mpx$dialup entry (ptr, fixed bin); 52 dcl ibm3270_mpx$set_address_table entry (ptr); 53 dcl ibm3270_mpx$start_general_poll entry (ptr); 54 dcl ibm3270_mpx$init entry; 55 56 dcl error_table_$bad_channel ext fixed bin (35); 57 dcl error_table_$noalloc ext fixed bin (35); 58 dcl error_table_$action_not_performed ext fixed bin (35); 59 dcl error_table_$undefined_order_request ext fixed bin (35); 60 dcl error_table_$bad_mpx_load_data ext fixed bin (35); 61 dcl error_table_$unimplemented_version ext fixed bin (35); 62 63 dcl pds$processid ext bit (36) aligned; 64 dcl (area, cleanup) condition; 65 66 dcl (addr, bin, index, length, low, null, reverse, rtrim, size, string, substr, unspec, verify) builtin; 67 68 /* Entry called at multiplexer creation time to build data bases */ 69 70 init_multiplexer: 71 entry (arg_devx, arg_miip, arg_mdp, arg_code); 72 73 devx = arg_devx; 74 miip = arg_miip; 75 arg_mdp = null (); 76 77 ttybp = addr (tty_buf$); 78 lctp = tty_buf.lct_ptr; 79 lcntp = lct.lcnt_ptr; 80 81 md_nchan = mux_init_info.no_channels; 82 string (sub_channel_flags) = "0"b; 83 do i = 1 to md_nchan; 84 j = index (reverse (mux_init_info.name (i)), "."); 85 if j = 0 86 then go to bad_channel; 87 name = rtrim (substr (mux_init_info.name (i), length (mux_init_info.name (i)) - j + 2)); 88 if length (name) ^= 3 89 then go to bad_channel; 90 if substr (name, 1, 1) ^= "p" & substr (name, 1, 1) ^= "d" 91 then go to bad_channel; 92 if verify (substr (name, 2, 2), "0123456789") ^= 0 93 then go to bad_channel; 94 j = bin (substr (name, 2, 2)); 95 if j < 0 | j > 31 96 then go to bad_channel; 97 if sub_channel_flags (j) 98 then go to bad_channel; 99 sub_channel_flags (j) = "1"b; 100 end; 101 102 mdp = null (); 103 on cleanup 104 begin; 105 if mdp ^= null () 106 then call tty_space_man$free_space (size (md), mdp); 107 end; 108 109 call tty_space_man$get_space (size (md), mdp); 110 if mdp = null () 111 then do; 112 noalloc: 113 arg_code = error_table_$noalloc; 114 return; 115 end; 116 117 md.devx = devx; 118 md.name = lcnt.names (devx); 119 md.nchan = md_nchan; 120 121 string (md.flags) = "0"b; 122 md.error_stat = 0; 123 md.chars = ""; 124 md.dialup_info = 0; 125 md.address_tablep = null (); 126 md.chan_map (*) = 0; 127 md.last_select_address, md.last_poll_address = low (1); 128 md.first_write_chan, md.last_write_chan = 0; 129 md.first_poll_chan, md.last_poll_chan = 0; 130 md.first_control_chan, md.last_control_chan = 0; 131 md.cur_write_chan = 0; 132 md.write_chain_ptr = null (); 133 md.input_chain_ptr = null (); 134 md.input_count = 0; 135 136 on area 137 begin; 138 call tty_space_man$free_space (size (md), mdp); 139 go to noalloc; 140 end; 141 142 call tty_area_manager$allocate (size (ibm3270_meters), md.saved_meters_ptr); 143 revert area; 144 145 do i = 1 to md.nchan; 146 mdep = addr (md.mde_entry (i)); 147 mde.position = 0; 148 mde.line_size = 80; 149 mde.screen_size = 1920; 150 mde.next_write_chan = 0; 151 mde.next_poll_chan = 0; 152 mde.next_control_chan = 0; 153 mde.write_chain_ptr = null (); 154 string (mde.flags) = "0"b; 155 j = index (reverse (mux_init_info.name (i)), "."); 156 name = rtrim (substr (mux_init_info.name (i), length (mux_init_info.name (i)) - j + 2)); 157 mdep = addr (md.mde_entry (i)); 158 mde.devx = mux_init_info.devx (i); 159 mde.name = name; 160 j = bin (substr (name, 2, 2)); 161 md.chan_map (j) = i; 162 mde.printer = (substr (name, 1, 1) = "p"); 163 lctep = addr (lct.lcte_array (mde.devx)); 164 lcte.subchannel = i; 165 end; 166 167 arg_mdp = mdp; 168 if ^init_sw 169 then do; /* First caal of multics bootload */ 170 call ibm3270_mpx$init; 171 init_sw = "1"b; 172 end; 173 174 arg_code = 0; 175 176 return; 177 178 bad_channel: 179 arg_code = error_table_$bad_channel; 180 return; 181 182 /* Entry to free the multiplexer data base */ 183 184 terminate_multiplexer: 185 entry (arg_mdp, arg_code); 186 187 mdp = arg_mdp; 188 md_nchan = md.nchan; 189 if md.write_chain_ptr ^= null 190 then call tty_space_man$free_chain (md.devx, OUTPUT, (md.write_chain_ptr)); 191 md.write_chain_ptr = null (); 192 if md.input_chain_ptr ^= null () 193 then call tty_space_man$free_chain (md.devx, INPUT, (md.input_chain_ptr)); 194 md.input_chain_ptr = null (); 195 call tty_area_manager$free (size (ibm3270_meters), md.saved_meters_ptr); 196 call tty_space_man$free_space (size (md), mdp); 197 arg_mdp = null (); 198 arg_code = 0; 199 return; 200 201 /* Entry to allow dialups on the sub-channels */ 202 203 start: 204 entry (arg_mdp, arg_code); 205 206 mdp = arg_mdp; 207 if ^md.loaded 208 then do; 209 arg_code = error_table_$action_not_performed; 210 return; 211 end; 212 213 md.started = "1"b; 214 215 do i = 1 to md.nchan; /* Look for hungup printers */ 216 mdep = addr (md.mde_entry (i)); 217 if mde.listen & ^mde.dialed & mde.printer 218 then call ibm3270_mpx$dialup (mdp, i); 219 end; 220 221 arg_code = 0; 222 return; 223 224 /* Entry to dis-allow dialups on the sub-channels */ 225 226 stop: 227 entry (arg_mdp, arg_code); 228 229 mdp = arg_mdp; 230 if ^md.loaded 231 then do; 232 arg_code = error_table_$action_not_performed; 233 return; 234 end; 235 236 md.started = "0"b; 237 arg_code = 0; 238 return; 239 240 /* Entry to do a forced shutdown (or crash) of the multiplexer */ 241 242 shutdown: 243 entry (arg_mdp, arg_code); 244 245 mdp = arg_mdp; 246 if md.loading | md.loaded 247 then call channel_manager$control (md.devx, "hangup", null (), code); 248 call ibm3270_mpx$crash (mdp); 249 arg_code = 0; 250 return; 251 252 /* Control orders */ 253 254 priv_control: 255 entry (arg_mdp, arg_order, arg_infop, arg_code); 256 257 mdp = arg_mdp; 258 order = arg_order; 259 infop = arg_infop; 260 261 if order = "copy_meters" 262 then do; 263 md.saved_meters_ptr -> ibm3270_meters = md.error_stat; 264 call channel_manager$control (md.devx, order, infop, arg_code); 265 end; 266 267 else if order = "get_meters" 268 then do; 269 if infop -> get_comm_meters_info.version ^= GET_COMM_METERS_INFO_VERSION_1 270 then arg_code = error_table_$unimplemented_version; 271 else do; 272 meter_ptr = infop -> get_comm_meters_info.subchan_ptr; 273 if meter_ptr ^= null () 274 then if meter_ptr -> ibm3270_meter_struc.version ^= IBM3270_METERS_VERSION_1 275 then arg_code = error_table_$unimplemented_version; 276 else do; 277 meter_ptr -> ibm3270_meter_struc.current_meters = md.error_stat; 278 meter_ptr -> ibm3270_meter_struc.saved_meters = md.saved_meters_ptr -> ibm3270_meters; 279 call channel_manager$control (md.devx, order, infop, arg_code); 280 end; 281 end; 282 end; 283 284 else arg_code = error_table_$undefined_order_request; 285 return; 286 287 hpriv_control: 288 entry (arg_mdp, arg_order, arg_infop, arg_code); 289 290 mdp = arg_mdp; 291 order = arg_order; 292 infop = arg_infop; 293 294 if order = "load_mpx" 295 then do; 296 load_infop = infop; 297 if md.loading | md.loaded 298 then code = error_table_$action_not_performed; 299 else do; 300 call channel_manager$control (md.devx, "listen", null (), code); 301 if code = 0 302 then md.loading = "1"b; 303 md.event_channel = load_info.event_channel; 304 md.processid = pds$processid; 305 md.ascii = load_info.ascii; 306 md.debug = load_info.debug; 307 md.allow_copy = load_info.allow_copy; 308 md.allow_raw3270 = load_info.allow_raw3270; 309 call ibm3270_mpx$set_address_table (mdp); 310 /* Get right translation table */ 311 md.controller_address = load_info.controller_address; 312 /* Default */ 313 md.controller_poll_address = address_table (md.controller_address); 314 md.controller_select_address = address_table (md.controller_address + 32); 315 md.general_poll_address = address_table (63); 316 if md.nchan ^= load_info.nchan 317 then do; /* Something changed */ 318 bad_load: 319 code = error_table_$bad_mpx_load_data; 320 go to control_return; 321 end; 322 do i = 1 to md.nchan; 323 mdep = addr (md.mde_entry (i)); 324 chan_load_infop = addr (load_info.chan_info (i)); 325 if mde.devx ^= chan_load_info.devx 326 then go to bad_load; 327 mde.screen_size = chan_load_info.screen_size; 328 mde.line_size = chan_load_info.line_size; 329 j = bin (substr (mde.name, 2, 2)); /* Poll address */ 330 mde.device_address = address_table (j); 331 end; 332 if md.ascii 333 then do; 334 unspec (md.nl) = "012"b3; 335 unspec (md.sba) = "021"b3; 336 unspec (md.stx) = "002"b3; 337 unspec (md.esc) = "033"b3; 338 unspec (md.write) = "061"b3; 339 unspec (md.erase_write) = "065"b3; 340 unspec (md.ic) = "023"b3; 341 unspec (md.etx) = "003"b3; 342 unspec (md.soh) = "001"b3; 343 unspec (md.eot) = "004"b3; 344 unspec (md.percent) = "045"b3; 345 unspec (md.slash) = "057"b3; 346 unspec (md.letter_R) = "122"b3; 347 unspec (md.etb) = "027"b3; 348 unspec (md.enter) = "047"b3; 349 unspec (md.clear) = "137"b3; 350 unspec (md.pa1) = "045"b3; 351 unspec (md.pa2) = "076"b3; 352 unspec (md.pa3) = "054"b3; 353 unspec (md.bs) = "010"b3; 354 unspec (md.cr) = "015"b3; 355 unspec (md.em) = "031"b3; 356 unspec (md.copy) = "067"b3; 357 end; 358 else do; 359 unspec (md.nl) = "025"b3; 360 unspec (md.sba) = "021"b3; 361 unspec (md.stx) = "002"b3; 362 unspec (md.esc) = "047"b3; 363 unspec (md.write) = "361"b3; 364 unspec (md.erase_write) = "365"b3; 365 unspec (md.ic) = "023"b3; 366 unspec (md.etx) = "003"b3; 367 unspec (md.soh) = "001"b3; 368 unspec (md.eot) = "067"b3; 369 unspec (md.percent) = "154"b3; 370 unspec (md.slash) = "141"b3; 371 unspec (md.letter_R) = "331"b3; 372 unspec (md.etb) = "046"b3; 373 unspec (md.enter) = "175"b3; 374 unspec (md.clear) = "155"b3; 375 unspec (md.pa1) = "154"b3; 376 unspec (md.pa2) = "156"b3; 377 unspec (md.pa3) = "054"b3; 378 unspec (md.bs) = "026"b3; 379 unspec (md.cr) = "015"b3; 380 unspec (md.em) = "031"b3; 381 unspec (md.copy) = "367"b3; 382 end; 383 if load_info.quit_key = PA1 384 then md.quit_key = md.pa1; 385 else if load_info.quit_key = PA2 386 then md.quit_key = md.pa2; 387 else if load_info.quit_key = PA3 388 then md.quit_key = md.pa3; 389 else md.quit_key = md.pa1; 390 if load_info.formfeed_key = PA1 391 then md.formfeed_key = md.pa1; 392 else if load_info.formfeed_key = PA2 393 then md.formfeed_key = md.pa2; 394 else if load_info.formfeed_key = PA3 395 then md.formfeed_key = md.pa3; 396 else if load_info.formfeed_key = CLEAR 397 then md.formfeed_key = md.clear; 398 else md.formfeed_key = md.clear; 399 end; 400 end; 401 402 else if order = "start_mpx" 403 then do; 404 if ^md.loaded 405 then do; 406 code = error_table_$action_not_performed; 407 go to control_return; 408 end; 409 line_ctl.val = 0; 410 call line_control (SET_3270_MODE); /* Tell bisync I want the 3270 option */ 411 line_ctl.val (1) = 3; 412 call line_control (SET_BID_LIMIT); 413 line_ctl.val (1) = 1; 414 call line_control (CONFIGURE); /* Non-transparent ebcdic */ 415 line_ctl.val (1) = 2; 416 line_ctl.val (2) = 2; 417 call line_control (SET_TTD_PARAMS); 418 i = 256; /* input buffersize */ 419 call channel_manager$control (md.devx, "set_input_message_size", addr (i), code); 420 if code ^= 0 421 then go to control_return; 422 call ibm3270_mpx$start_general_poll (mdp); 423 end; 424 425 else code = error_table_$undefined_order_request; 426 427 control_return: 428 arg_code = code; 429 return; 430 431 /* Internal procedure to perform a line control operation */ 432 433 line_control: 434 proc (op); 435 436 dcl op fixed bin; 437 438 line_ctl.op = op; 439 call channel_manager$control (md.devx, "line_control", addr (line_ctl), code); 440 if code ^= 0 441 then go to control_return; 442 return; 443 444 end line_control; 445 1 1 /* BEGIN INCLUDE FILE ... tty_buf.incl.pl1 */ 1 2 1 3 /* Date Last Modified and Reason 1 4* Created 04/19/77 by J. Stern (from part of tty.incl.pl1) 1 5* Modified January 1978 by Robert Coren and Larry Johnson for variable-size buffers 1 6* Modified 2/6/78 by Robert Coren to make circular_queue size settable 1 7* Modified Aug 78 by J. Nicholls to move the buffer block format to a file of its own 1 8* and wtcb to its own plus other modification for ring 0 multiplexing, tty_buffer_block.incl.pl1 1 9* Modified 7/17/79 by B. Greenberg for echo negotiation meters. 1 10* Modified November 1979 by C. Hornig for MCS tracing. 1 11* Modified December 1979 by Robert Coren to add FNP channel lock meter 1 12* Modified February 1980 by Robert Coren to remove all references to circular buffer 1 13* Modified March 1980 by Robert Coren to reorganize metering information 1 14* Modified December 1980 by Robert Coren to add FNP-specific events 1 15* Modified 24 March 1982, W. Olin Sibert, to add mcs_timer support, recoverable_error_severity 1 16* Modified November 1984 by Robert Coren to add tty_area_lock 1 17**/ 1 18 1 19 dcl ttybp ptr, 1 20 tty_buf$ ext static, /* tty buffer segment */ 1 21 tty_ev fixed bin int static options (constant) init (57), /* event used for wait and notify */ 1 22 abs_buf_limit fixed bin (18) static options (constant) init (64), /* minimum number of words we will leave free */ 1 23 input_bpart fixed bin (18) static options (constant) init (2), /* fraction of bleft we will allow for input */ 1 24 output_bpart fixed bin (18) static options (constant) init (4); /* fraction of bleft we will allow for output */ 1 25 1 26 1 27 dcl qblock_size fixed bin int static options (constant) init (16); /* size in words of a delay queue block */ 1 28 dcl bsizec fixed bin int static options (constant) init (60); /* number of characters in smallest buffer */ 1 29 dcl buf_per_second fixed bin int static options (constant) init (10); /* for figuring out max. buffer size based on speed */ 1 30 1 31 dcl FNP_DUMP_PATCH_EVENT fixed bin int static options (constant) init (58); 1 32 dcl FNP_METER_EVENT fixed bin int static options (constant) init (59); 1 33 dcl TTY_AREA_LOCK_EVENT bit (36) aligned int static options (constant) init ("74"b3); 1 34 1 35 dcl 1 tty_buf aligned based (ttybp), /* declaration of tty buffer seg */ 1 36 2 slock bit (36), /* per system lock */ 1 37 2 absorig fixed bin (24), /* abs address of this seg */ 1 38 2 borig bit (18), /* index of start of buffer area */ 1 39 2 bleft fixed bin (18), /* words left in pool */ 1 40 2 free bit (18), /* pointer to start of free pool */ 1 41 2 fnp_config_flags (8) bit (1) unal, /* flag(i) ON if fnp(i) configured */ 1 42 2 padb1 bit (28) unaligned, 1 43 2 lct_ptr ptr, /* pointer to logical channel table */ 1 44 1 45 2 nrawread fixed bin (35), /* number of raw chars input, total */ 1 46 2 nrawwrite fixed bin (35), /* number of raw characters output */ 1 47 2 ninchars fixed bin (35), /* total input chars after conversion */ 1 48 2 noutchars fixed bin (35), /* total output chars before conversion */ 1 49 2 readblocked fixed bin (35), /* number of times go input blocked */ 1 50 2 nblocked fixed bin (35), /* number of times process output blocked */ 1 51 2 minbuf fixed bin (18), /* min output buffer size */ 1 52 2 totbuf fixed bin (35), /* divide by nblocked to get ave buffer size */ 1 53 1 54 2 preconverted fixed bin (35), /* number of converted chars held in tty_buf */ 1 55 2 input_restart fixed bin, /* number of times tty_read had to start over */ 1 56 2 output_restart fixed bin, /* number of times tty_write has had to start over */ 1 57 2 output_buffer_overflow fixed bin, /* number of times tty_write has run out of buffers */ 1 58 2 read_time fixed bin (71), /* total time spent in tty_read */ 1 59 2 write_time fixed bin (71), /* total time spent in tty_write */ 1 60 1 61 2 read_calls fixed bin (35), /* number of calls to tty_read */ 1 62 2 write_calls fixed bin (35), /* number of calls to tty_write */ 1 63 2 bfx fixed bin, /* used in calls to iobm */ 1 64 2 nquits fixed bin (35), /* number of quits */ 1 65 2 space_needed_data, 1 66 3 space_needed bit (1) unal, /* space_needed bit on in at least 1 lcte */ 1 67 3 space_needed_calls fixed bin (34) unal, /* meter of uses of this facility */ 1 68 2 space_lock_count fixed bin (35), /* count of times tty_buf.slock locked */ 1 69 2 space_lock_wait_count fixed bin (35), /* count of times necessary to loop to lock it */ 1 70 2 space_lock_wait_time fixed bin (35), /* total time looped trying to lock it */ 1 71 1 72 2 alloc_calls fixed bin (35), /* total number of allocations performed in tty_buf */ 1 73 2 free_calls fixed bin (35), /* total number of freeings in tty_buf */ 1 74 2 alloc_time fixed bin (35), /* time spent masked in tty_space_man$get entries */ 1 75 2 free_time fixed bin (35), /* time spent masked in tty_space_man$free entries */ 1 76 2 total_alloc_steps fixed bin (35), /* number of steps thru free chain while doing above */ 1 77 2 alloc_failures fixed bin (35), /* number of unsuccessful attempts to allocate space */ 1 78 2 cumulative_input_space fixed bin (71), /* cumulative amount of space allocated for input */ 1 79 1 80 2 cumulative_output_space fixed bin (71), /* cumulative amount of space allocated for output */ 1 81 2 cumulative_control_space fixed bin (71), /* cumulative amount of space allocated by tty_space_man$get_space */ 1 82 2 input_space_updates fixed bin (35), /* number of increments to cumulative_input_space */ 1 83 2 output_space_updates fixed bin (35), /* number of increments to cumulative_output_space */ 1 84 2 control_space_updates fixed bin (35), /* number of increments to cumulative_control_space */ 1 85 2 minimum_free_space fixed bin (18), /* smallest amount of free space ever available */ 1 86 1 87 2 current_input_space fixed bin (18), /* amount of space currently allocated for input */ 1 88 2 current_output_space fixed bin (18), /* amount of space currently allocated for output */ 1 89 2 current_control_space fixed bin (18), /* amount of space currently allocated by get_space */ 1 90 2 tty_lock_calls fixed bin (35), /* number of calls to tty_lock$lock entries */ 1 91 2 found_channel_locked fixed bin (35), /* number of times tty_lock found channel already locked */ 1 92 2 max_wait_time fixed bin (35), /* longest time waited for any channel lock */ 1 93 2 total_wait_time fixed bin (71), /* total amount of time spent waiting for channel locks */ 1 94 1 95 2 echo_neg_time fixed bin (71), /* cumulative time spent doing echo negotiation */ 1 96 2 echo_neg_interrupts fixed bin (35), /* Echo-negotiated shipments */ 1 97 2 echo_neg_r0_chars fixed bin (35), /* Chars echoed by ring 0 */ 1 98 2 echo_neg_mux_chars fixed bin (35), /* Chars echoed by mux */ 1 99 2 echo_neg_sndopt_restarts fixed bin (35), /* Echo reinits */ 1 100 2 echo_neg_mux_nonecho fixed bin (35), 1 101 2 echo_neg_entries fixed bin (35), /* Entries into negotiate */ 1 102 1 103 2 echo_neg_mux_inhibit bit (1) aligned, /* For testing */ 1 104 2 n_queued_interrupts fixed bin (35), /* number of interrupts queued by tty_lock */ 1 105 2 trace unaligned, /* tracing information */ 1 106 3 flags, 1 107 4 enable bit, /* global tracing control */ 1 108 4 default_mode bit, /* whether to trace channels by default */ 1 109 4 read bit, /* read */ 1 110 4 write bit, /* write */ 1 111 4 data bit, /* buffers on reads and writes */ 1 112 4 control bit, /* control, priv_control, and hpriv_control */ 1 113 4 modes bit, /* (get set check)_modes */ 1 114 4 interrupt bit, /* interrupt, interrupt_later */ 1 115 4 init bit, /* init_multiplexer, terminate_multiplexer */ 1 116 4 start bit, /* start, stop */ 1 117 4 shutdown bit, /* shutdown */ 1 118 4 space_man bit, /* tty_space_man$* */ 1 119 4 pad_flags bit (6), 1 120 3 data_offset bit (18), /* offset of tracing data */ 1 121 1 122 2 recoverable_error_severity fixed bin, /* Syserr severity for recoverable MCS errors */ 1 123 1 124 2 timer_lock bit (36) aligned, /* Lock owned by mcs_timer */ 1 125 2 next_timer_offset bit (18) aligned, /* Offset of next timer to come due */ 1 126 2 timer_count fixed bin, /* Number of timers outstanding */ 1 127 2 timer_process bit (36) aligned, /* Who is doing timers? */ 1 128 1 129 2 timer_ev_chn fixed bin (71), /* How get get him */ 1 130 2 timer_lock_wait_time fixed bin (71), /* CPU time spent spinning on timer lock */ 1 131 1 132 2 timer_lock_count fixed bin (35), /* Number of times timer lock locked */ 1 133 2 timer_lock_wait_count fixed bin (35), /* Number of times imer lock waited on */ 1 134 2 timer_call_time fixed bin (71), /* CPU time spent in call side timer operations */ 1 135 1 136 2 timer_polling_time fixed bin (71), /* CPU time spent polling (including channel_manager) */ 1 137 2 timer_set_calls fixed bin (35), /* Number of calls to mcs_timer$set, set_wired */ 1 138 2 timer_reset_calls fixed bin (35), /* Number of calls to mcs_timer$reset, reset_wired */ 1 139 1 140 2 timer_change_calls fixed bin (35), /* Number of calls to mcs_timer$change, change_wired */ 1 141 2 timer_poll_calls fixed bin (35), /* Number of calls to mcs_timer$poll */ 1 142 2 timer_error_calls fixed bin (35), /* Number of mcs_timer calls ending with recoverable errors */ 1 143 2 timer_duplicate_pollings fixed bin (35), /* Number of timer polling found in progress on other CPU */ 1 144 1 145 2 tty_area_lock like hc_fast_lock, /* to prevent contention in allocating/freeing in tty_area */ 1 146 1 147 2 pad2 (13) fixed bin (35), 1 148 1 149 2 free_space fixed bin; /* start of free space region */ 1 150 1 151 2 1 /* BEGIN INCLUDE FILE...hc_fast_lock.incl.pl1 */ 2 2 2 3 /* Created November 1984 by Robert Coren to replace hc_lock.incl.pl1 */ 2 4 2 5 /* Lock format suitable for use with lock$lock_fast, unlock_fast */ 2 6 2 7 /* format: style3 */ 2 8 2 9 declare lock_ptr pointer; 2 10 declare 1 hc_fast_lock aligned based (lock_ptr), 2 11 2 pid bit (36) aligned, /* holder of lock */ 2 12 2 event bit (36) aligned, /* event associated with lock */ 2 13 2 flags aligned, 2 14 3 notify_sw bit (1) unaligned, 2 15 3 pad bit (35) unaligned; /* certain locks use this pad, like dirs */ 2 16 2 17 /* END INCLUDE FILE...hc_fast_lock.incl.pl1 */ 1 152 1 153 1 154 /* END INCLUDE FILE ... tty_buf.incl.pl1 */ 446 3 1 /* BEGIN INCLUDE FILE ... lct.incl.pl1 */ 3 2 3 3 /* Created by J. Stern 7/26/78 */ 3 4 /* Metering information added by C. Hornig, March 1980. */ 3 5 /* Unwired saved meters added by Robert Coren, December 1980 */ 3 6 3 7 dcl lctp ptr; /* ptr to logical channel table */ 3 8 dcl lctep ptr; /* ptr to logical channel table entry */ 3 9 dcl lct_size fixed bin; /* size of lcte_array when allocated */ 3 10 3 11 dcl 1 lct aligned based (lctp), /* logical channel table */ 3 12 2 max_no_lctes fixed bin, /* maximum number of lct entries */ 3 13 2 cur_no_lctes fixed bin, /* current number of lct entries used */ 3 14 2 lcnt_ptr ptr, /* ptr to logical channel name table */ 3 15 2 queue_lock bit (36), /* lock used to serialize queueing operations */ 3 16 2 pad (11) fixed bin, 3 17 2 lcte_array (lct_size refer (lct.max_no_lctes)) like lcte; /* lct entries */ 3 18 3 19 3 20 dcl 1 lcte aligned based (lctep), /* logical channel table entry */ 3 21 2 lock bit (36), /* channel lock */ 3 22 2 data_base_ptr ptr unal, /* ptr to channel data base */ 3 23 2 channel_type fixed bin (8) unal, /* identifies channel manager program */ 3 24 2 flags unal, 3 25 3 entry_in_use bit (1) unal, /* ON if this entry in use */ 3 26 3 initialized bit (1) unal, /* ON if this channel initialized */ 3 27 3 notify_reqd bit (1) unal, /* ON if must notify when unlocking this channel */ 3 28 3 locked_for_interrupt bit (1) unal, /* ON if lock set by interrupt handler */ 3 29 3 space_needed bit (1) unal, /* ON if this channel needs buffer space */ 3 30 3 special_lock bit (1) unal, /* ON if lock is managed by multiplexer */ 3 31 3 trace_force bit (1) unal, /* ON to trace based on next bit only */ 3 32 /* OFF to XOR next bit with tty_buf.default_tracing */ 3 33 3 trace bit (1) unal, /* ON to trace this channel */ 3 34 3 unused bit (1) unal, 3 35 2 physical_channel_devx fixed bin (17) unal, /* devx of physical chan from which logical chan is derived */ 3 36 2 major_channel_info, 3 37 3 major_channel_devx fixed bin unal, /* major channel device index */ 3 38 3 subchannel fixed bin (17) unal, /* subchannel id (or data ptr) wrt major channel */ 3 39 2 queue_entries, 3 40 3 queue_head bit (18) unal, /* ptr to first queue entry for this channel */ 3 41 3 queue_tail bit (18) unal, /* ptr to last queue entry for this channel */ 3 42 2 word_counts, 3 43 3 input_words fixed bin (17) unal, /* number of input words charged to this channel */ 3 44 3 output_words fixed bin (17) unal, /* number of output words charged to this channel */ 3 45 3 46 2 meters, 3 47 3 in_bytes fixed bin (35), 3 48 3 out_bytes fixed bin (35), 3 49 3 in, 3 50 4 calls fixed bin (35), 3 51 4 interrupts fixed bin (35), 3 52 4 call_time fixed bin (71), 3 53 4 interrupt_time fixed bin (71), 3 54 3 out like lcte.meters.in, 3 55 3 control like lcte.meters.in, 3 56 2 saved_meters_ptr ptr, /* pointer to unwired copy of meters saved at last dialup */ 3 57 3 58 2 timer_offset bit (18) aligned, /* Head of list of timers for this channel */ 3 59 3 60 2 pad (3) fixed bin (35); 3 61 3 62 3 63 dcl lcntp ptr; /* ptr to logical channel name table */ 3 64 3 65 dcl 1 lcnt aligned based (lcntp), /* logical channel name table */ 3 66 2 names (lct.max_no_lctes) char (32) unal; /* channel names */ 3 67 3 68 dcl 1 saved_meters aligned based like lcte.meters; /* meters saved at dialup, allocated in tty_area */ 3 69 3 70 3 71 /* END INCLUDE FILE ... lct.incl.pl1 */ 447 4 1 /* BEGIN INCLUDE FILE ... mux_init_info.incl.pl1 */ 4 2 4 3 /* Created 8/2/78 by J. Stern */ 4 4 4 5 4 6 dcl miip ptr; /* ptr to mux_init_info structure */ 4 7 dcl mii_chan_count fixed bin; /* channel count when allocating mux_init_info */ 4 8 4 9 4 10 dcl 1 mux_init_info aligned based (miip), /* multiplexer initialization info */ 4 11 2 no_channels fixed bin, /* number of multiplexed channels */ 4 12 2 channels (mii_chan_count refer (mux_init_info.no_channels)), /* one entry per channel */ 4 13 3 name char (32) unal, /* channel name */ 4 14 3 devx fixed bin; /* device index for channel */ 4 15 4 16 4 17 /* END INCLUDE FILE ... mux_init_info.incl.pl1 */ 448 5 1 /* BEGIN INCLUDE FILE ... tty_space_man_dcls.incl.pl1 */ 5 2 5 3 /* This include file declares all the entries in tty_space_man and defines the constants 5 4** to be used for the flags argument 5 5** Modified 08/21/78 by Robert Coren to eliminate "masked" flag 5 6** Modified March 1981 by Robert Coren to add get_perm_space entry 5 7** Modified April 1981 by Robert Coren to add switch_chain entry 5 8**/ 5 9 5 10 dcl tty_space_man$get_space entry (fixed bin, ptr); 5 11 dcl tty_space_man$get_perm_space entry (fixed bin, ptr); 5 12 dcl tty_space_man$free_space entry (fixed bin, ptr); 5 13 dcl tty_space_man$get_buffer entry (fixed bin, fixed bin, bit (1), ptr); 5 14 dcl tty_space_man$free_buffer entry (fixed bin, bit (1), ptr); 5 15 dcl tty_space_man$get_chain entry (fixed bin, fixed bin, fixed bin, bit (1), ptr); 5 16 dcl tty_space_man$free_chain entry (fixed bin, bit (1), ptr); 5 17 dcl tty_space_man$switch_chain entry (fixed bin, fixed bin, bit (1), bit (1), ptr); 5 18 dcl tty_space_man$needs_space entry (fixed bin); 5 19 5 20 dcl INPUT bit (1) int static options (constant) init ("0"b); 5 21 dcl OUTPUT bit (1) int static options (constant) init ("1"b); 5 22 5 23 /* END INCLUDE FILE ... tty_space_man_dcls.incl.pl1 */ 449 6 1 /* BEGIN INCLUDE FILE ... channel_manager_dcls.incl.pl1 */ 6 2 6 3 /* Created 8/25/78 by J. Stern */ 6 4 6 5 6 6 /* call channel_manager$read (devx, chain_ptr, more_input_flag, code) */ 6 7 dcl channel_manager$read entry (fixed bin, ptr, bit (1) aligned, fixed bin (35)); 6 8 6 9 /* call channel_manager$write (devx, output_ptr, code) */ 6 10 dcl channel_manager$write entry (fixed bin, ptr, fixed bin (35)); 6 11 6 12 /* call channel_manager$control (devx, control_type, info_ptr, code) */ 6 13 dcl channel_manager$control entry (fixed bin, char (*), ptr, fixed bin (35)); 6 14 6 15 /* call channel_manager$set_modes (devx, mode_change_list_ptr, code) */ 6 16 dcl channel_manager$set_modes entry (fixed bin, ptr, fixed bin (35)); 6 17 6 18 /* call channel_manager$check_modes (devx, mode_change_list_ptr, code) */ 6 19 dcl channel_manager$check_modes entry (fixed bin, ptr, fixed bin (35)); 6 20 6 21 /* call channel_manager$get_modes (devx, modes, code) */ 6 22 dcl channel_manager$get_modes entry (fixed bin, char (*), fixed bin (35)); 6 23 6 24 /* call channel_manager$interrupt (devx, int_type, int_data) */ 6 25 dcl channel_manager$interrupt entry (fixed bin, fixed bin, bit (72) aligned); 6 26 6 27 /* call channel_manager$interrupt_later (devx, int_type, int_data) */ 6 28 dcl channel_manager$interrupt_later entry (fixed bin, fixed bin, bit (72) aligned); 6 29 6 30 /* call channel_manager$queued_interrupt (devx, int_type, int_data) */ 6 31 dcl channel_manager$queued_interrupt entry (fixed bin, fixed bin, bit (72) aligned); 6 32 6 33 6 34 /* END INCLUDE FILE ... channel_manager_dcls.incl.pl1 */ 450 7 1 /* BEGIN INCLUDE FILE .... bisync_line_data.incl.pl1 */ 7 2 /* Written: October 1977 by Larry Johnson */ 7 3 /* Modified: November 1979 by Larry Johnson and Gary Palter for HASP */ 7 4 /* Modified: February 1984 by G. Palter for HASP system wait-a-bit changes */ 7 5 7 6 /* Structures and codes for doing line_control and line_status operations on bisync lines */ 7 7 7 8 /* For line_control order */ 7 9 7 10 dcl 1 line_ctl aligned, 7 11 2 op fixed binary (17) unaligned, /* indicates action being performed */ 7 12 2 val (3) fixed binary (17) unaligned; /* optional arguments with some ops */ 7 13 7 14 dcl 1 valchar based (addr (line_ctl.val (1))), /* character overlay of line_ctl.val */ 7 15 2 data_len fixed binary (9) unaligned unsigned, 7 16 2 data character (5) unaligned; 7 17 7 18 7 19 /* Values for line_ctl.op */ 7 20 7 21 dcl (SET_BID_LIMIT initial (1), 7 22 ACCEPT_BID initial (2), 7 23 CONFIGURE initial (3), /* val(1): 0 = non-transparent ASCII, 1 = not-tranparent EBCDIC, 7 24* 2 = transparent ASCII, 3 = transparent EBCDIC */ 7 25 SET_TTD_PARAMS initial (4), /* val(1): ttd_time; val(2): ttd_limit */ 7 26 REPORT_WRITE_STATUS initial (5), /* Request FNP to report on output buffers */ 7 27 SET_3270_MODE initial (6), 7 28 SET_POLLING_ADDR initial (7), 7 29 START_POLL initial (8), 7 30 SET_SELECT_ADDR initial (9), 7 31 STOP_AUTO_POLL initial (10), 7 32 SET_MASTER_SLAVE_MODE initial (11), /* val(1): 0 = slave (host), 1 = master (workstation) */ 7 33 SET_HASP_MODE initial (12), 7 34 SET_NAK_LIMIT initial (13), /* val(1): maximum # of NAKs allowed in a row */ 7 35 SET_HASP_TIMERS initial (14)) /* val(1): initial connect timeout; val(2): receive timeout; 7 36* val(3): transmit timeout */ 7 37 fixed binary static options (constant); 7 38 7 39 7 40 /* For line status order */ 7 41 7 42 dcl 1 line_stat aligned, 7 43 2 op fixed binary (17) unaligned, /* contains reason for status */ 7 44 2 val (3) fixed binary (17) unaligned; 7 45 7 46 7 47 /* Values for line_stat.op */ 7 48 7 49 dcl (BID_FAILED initial (1), 7 50 BAD_BLOCK initial (2), 7 51 REVERSE_INTERRUPT initial (3), 7 52 TOO_MANY_NAKS initial (4), 7 53 FNP_WRITE_STATUS initial (5), 7 54 IBM3270_WRITE_COMPLETE initial (6), 7 55 IBM3270_WACK_MESSAGE initial (7), 7 56 IBM3270_WRITE_EOT initial (8), 7 57 IBM3270_WRITE_ABORT initial (9), 7 58 IBM3270_SELECT_FAILED initial (10), 7 59 IBM3270_WACK_SELECT initial (11), 7 60 IBM3270_NAK_OUTPUT initial (12), 7 61 HASP_INIT_COMPLETE initial (13), 7 62 HASP_FOREIGN_SWAB_RESET initial (14)) 7 63 fixed binary static options (constant); 7 64 7 65 /* END INCLUDE FILE ..... bisync_line_data.incl.pl1 */ 451 8 1 /* Begin include file ..... ibm3270_mpx_data.incl.pl1 */ 8 2 8 3 /* Describes ring-0 data bases used by the ibm3270 demultiplexer */ 8 4 /* Prepared May 1979 by Larry Johnson */ 8 5 8 6 dcl mdp ptr; 8 7 dcl md_nchan fixed bin; 8 8 8 9 dcl 1 md aligned based (mdp), /* Global data */ 8 10 8 11 /* Static items */ 8 12 8 13 2 event_channel fixed bin (71), /* Event channel to talk to AS over */ 8 14 2 processid bit (36), /* AS processid */ 8 15 2 devx fixed bin, /* Devx of major channel */ 8 16 2 name char (32), /* Name of major channel */ 8 17 2 nchan fixed bin, /* Count of subchannels */ 8 18 2 controller_address fixed bin, /* Address of controler, defaults to 0 */ 8 19 2 controller_poll_address char (1), 8 20 2 controller_select_address char (1), 8 21 2 general_poll_address char (1), 8 22 2 dialup_info, /* Data saved from dialup interrupt */ 8 23 3 line_type fixed bin, 8 24 3 baud_rate fixed bin, 8 25 3 max_buf_size fixed bin, 8 26 3 buffer_pad fixed bin, 8 27 2 chars unal, /* Various ascii/ebcdic dependent chars */ 8 28 3 nl char (1), /* Newline character */ 8 29 3 sba char (1), /* Set-buffer-address code */ 8 30 3 stx char (1), /* Start of text code */ 8 31 3 esc char (1), /* Escape code */ 8 32 3 write char (1), /* Function code for write */ 8 33 3 erase_write char (1), /* Function code for erase-write */ 8 34 3 ic char (1), /* Insert cursor */ 8 35 3 etx char (1), /* End of text */ 8 36 3 soh char (1), /* Start of header */ 8 37 3 eot char (1), /* End of transmission */ 8 38 3 percent char (1), /* A "%" */ 8 39 3 slash char (1), /* A "/" */ 8 40 3 letter_R char (1), /* A "R" */ 8 41 3 etb char (1), /* End of text block */ 8 42 3 enter char (1), /* AID field for enter */ 8 43 3 clear char (1), /* AID field for clear */ 8 44 3 pa1 char (1), /* AID field for PA1 */ 8 45 3 pa2 char (1), /* AID field for PA2 */ 8 46 3 pa3 char (1), /* AID field for PA3 */ 8 47 3 bs char (1), /* Backspace */ 8 48 3 cr char (1), /* Carriage return */ 8 49 3 em char (1), /* End of media */ 8 50 3 copy char (1), /* Function code to copy a screen */ 8 51 2 action_chars unal, 8 52 3 quit_key char (1), /* Function code to interpret as quit */ 8 53 3 formfeed_key char (1), /* Function code to interpret as formfeed */ 8 54 2 address_tablep ptr, /* Pointer to ebcdic or ascii table */ 8 55 2 chan_map (0:31) fixed bin (8) unal, /* Maps poll address into mde index */ 8 56 8 57 /* Dynamic items */ 8 58 8 59 2 last_poll_address char (1), /* Last poll address sent to FNP */ 8 60 2 first_control_chan fixed bin, /* First channal in control function queue */ 8 61 2 last_control_chan fixed bin, /* The last */ 8 62 2 last_select_address char (1), /* Likewise for select */ 8 63 2 first_write_chan fixed bin, /* First channel in write queue */ 8 64 2 last_write_chan fixed bin, /* Last channel in write queue */ 8 65 2 cur_write_chan fixed bin, /* If output in progres */ 8 66 2 write_chain_ptr ptr unal, /* For cur_write_chan */ 8 67 2 first_poll_chan fixed bin, /* First channel in poll queue */ 8 68 2 last_poll_chan fixed bin, /* Last channel in poll queue */ 8 69 2 input_chain_ptr ptr, /* Currently accumulating input chain */ 8 70 2 input_count fixed bin, /* Its length */ 8 71 2 error_stat like ibm3270_meters, /* Error statstics */ 8 72 2 saved_meters_ptr ptr, /* address of savedf copy of meters */ 8 73 2 flags, 8 74 3 ascii bit (1) unal, /* Use ascii protocol */ 8 75 3 debug bit (1) unal, 8 76 3 loading bit (1) unal, /* Load in progress */ 8 77 3 loaded bit (1) unal, /* Load complete */ 8 78 3 started bit (1) unal, /* In started state */ 8 79 3 poll_in_progress bit (1) unal, /* FNP has device poll in progress */ 8 80 3 output_in_progress bit (1) unal, /* Working on output, goes off with line status */ 8 81 3 message_in_progress bit (1) unal, /* Working on output, goes off when data passed on */ 8 82 3 eot_sent bit (1) unal, /* If eot has been entor current output */ 8 83 3 send_output bit (1) unal, /* Mpx has been told send output */ 8 84 3 allow_raw3270 bit (1) unal, /* Sub-channels may use raw3270 mode */ 8 85 3 allow_copy bit (1) unal, /* Sub-channels may use copy feature */ 8 86 3 pad bit (24) unal, 8 87 2 mde_entry (md_nchan refer (md.nchan)) like mde; /* Per-channel data */ 8 88 8 89 dcl address_table (0:63) char (1) unal based (md.address_tablep); 8 90 8 91 dcl mdep ptr; 8 92 8 93 dcl 1 mde aligned based (mdep), /* Per channel data */ 8 94 2 devx fixed bin, /* Devx of sub-channel */ 8 95 2 name char (3), /* Last component of name, {p|d}NN */ 8 96 2 device_address char (1), /* Address for poll and selects */ 8 97 2 screen_size fixed bin, /* Number of characters on screen, 480/1920 */ 8 98 2 line_size fixed bin, /* Number of characters on line, 40/80 */ 8 99 2 position fixed bin, /* Where cursor should be */ 8 100 2 next_write_chan fixed bin, /* Next channel in the write queue */ 8 101 2 next_poll_chan fixed bin, /* Next channel in the poll queue */ 8 102 2 next_control_chan fixed bin, /* Next channel in control function queue */ 8 103 2 write_chain_ptr ptr unal, /* Pointer to write chain for this device */ 8 104 2 flags, 8 105 3 listen bit (1) unal, 8 106 3 dialed bit (1) unal, 8 107 3 printer bit (1) unal, 8 108 3 hndlquit bit (1) unal, /* Setting of the mode */ 8 109 3 waiting_for_ready bit (1) unal, /* Waiting for prinnr to finish */ 8 110 3 erase_req bit (1) unal, /* Erase screen on next write */ 8 111 3 sound_alarm bit (1) unal, /* Turn on beeper on next chance */ 8 112 3 control_queued bit (1) unal, /* Channel in unlock queue */ 8 113 3 end_of_page bit (1) unal, /* Waiting for responce to start output */ 8 114 3 keyboard_restore bit (1) unal, /* Must unlock keyboard */ 8 115 3 rawo bit (1) unal, /* Current state of channels rawo mode */ 8 116 3 rawi bit (1) unal, /* Current state of channels rawi mode */ 8 117 3 raw3270 bit (1) unal, /* Special raw mode for 3270's */ 8 118 3 raw3270_in_effect bit (1) unal, /* Equals rawi & rawo & raw3270 */ 8 119 3 write_queued bit (1) unal, 8 120 3 pad bit (21) unal; 8 121 8 122 /* End include file ..... ibm3270_mpx_data.incl.pl1 */ 452 9 1 /* Begin include file ..... ibm3270_mpx_load_data.incl.pl1 */ 9 2 9 3 /* Defines data passed between as_ibm3270_mpx_ and priv_ibm3270_mpx when loading an ibm3270 multiplexer */ 9 4 9 5 /* Prepared May 1979 by Larry Johnson */ 9 6 9 7 dcl load_infop ptr; 9 8 dcl load_info_nchan fixed bin; 9 9 9 10 dcl 1 load_info aligned based (load_infop), 9 11 2 event_channel fixed bin (71), 9 12 2 flags unal, 9 13 3 ascii bit (1), /* Use ascii protocol */ 9 14 3 debug bit (1), /* Print unusual stuff */ 9 15 3 allow_raw3270 bit (1), /* Sub-channels may use raw3270 mode */ 9 16 3 allow_copy bit (1), /* Sub-channels in raw3270 may do copies */ 9 17 3 pad bit (32) unal, 9 18 2 controller_address fixed bin, /* device address for controller */ 9 19 2 quit_key fixed bin, /* code to indicate which key is quit */ 9 20 2 formfeed_key fixed bin, /* code for formfeed key */ 9 21 2 nchan fixed bin, 9 22 2 chan_info (load_info_nchan) like chan_load_info; 9 23 9 24 dcl chan_load_infop ptr; 9 25 9 26 dcl 1 chan_load_info aligned based (chan_load_infop), /* Per channel part of data */ 9 27 2 devx fixed bin, /* Which channel */ 9 28 2 screen_size fixed bin, 9 29 2 line_size fixed bin; 9 30 9 31 dcl (IBM3270_MPX_UP init (1), 9 32 IBM3270_MPX_DOWN init (2), 9 33 IBM3270_MPX_MASKED init (3)) fixed bin (71) int static options (constant); 9 34 9 35 /* codeing for quit and formfeed keys */ 9 36 9 37 dcl (PA1 init (1), 9 38 PA2 init (2), 9 39 PA3 init (3), 9 40 CLEAR init (4)) fixed bin int static options (constant); 9 41 9 42 /* End include file .....ibm3270_mpx_load_data.incl.pl1 */ 453 10 1 /* BEGIN INCLUDE FILE ... ibm3270_meters.incl.pl1 */ 10 2 10 3 /* defines metering structures used for ibm3270 multiplexer channel */ 10 4 10 5 /* Written June 1981 by Robert Coren */ 10 6 10 7 dcl 1 ibm3270_meter_struc aligned based, 10 8 2 version fixed bin, 10 9 2 pad bit (36), 10 10 2 current_meters like ibm3270_meters, 10 11 2 saved_meters like ibm3270_meters; 10 12 10 13 dcl 1 ibm3270_meters aligned based (meter_ptr), 10 14 2 poll_failed fixed bin (35), /* No response to poll */ 10 15 2 bad_output fixed bin (35), /* Bsc control tables rejected output */ 10 16 2 write_eot fixed bin (35), /* Got eot in responseto write */ 10 17 2 write_abort fixed bin (35), /* FNP send eot because of nothing to write */ 10 18 2 select_failed fixed bin (35), /* No response to select */ 10 19 2 wack_select fixed bin (35), /* Wack in respnse to select */ 10 20 2 nak_output fixed bin (35), /* Our output got nakked */ 10 21 2 input_reject fixed bin (35), /* Count of input reject interrupts */ 10 22 2 needs_space fixed bin (35), /* Count of times space available interrupt req */ 10 23 2 space_available fixed bin (35), /* Count of space available interrupts */ 10 24 2 write_format_error fixed bin (35), /* Count of bad calls to write entry */ 10 25 2 bad_input fixed bin (35), /* Count of ill-formatted input messages */ 10 26 2 bad_device fixed bin (35); /* Count of unrecognized device identifications */ 10 27 10 28 dcl meter_ptr ptr; 10 29 10 30 dcl IBM3270_METERS_VERSION_1 internal static options (constant) init (1); 10 31 10 32 /* END INCLUDE FILE ... ibm3270_meters.incl.pl1 */ 454 11 1 /* BEGIN INCLUDE FILE...get_comm_meters_info.incl.pl1 */ 11 2 11 3 /* This include file defines the info structure(s) used with the get_meters order to MCM */ 11 4 /* A program that includes this include file must alos include lct.incl.pl1 */ 11 5 11 6 /* Written Decemeber 1980 by Robert Coren */ 11 7 11 8 dcl 1 get_comm_meters_info aligned based, /* info_ptr points to this */ 11 9 2 version fixed bin, 11 10 2 pad fixed bin, 11 11 2 subchan_ptr pointer, /* pointer to meters kept by the subchannel */ 11 12 2 logical_chan_ptr pointer, /* pointer to meters kept by channel_manager */ 11 13 2 parent_ptr pointer, /* pointer to meters kept by the parent multiplexer */ 11 14 2 subchan_type fixed bin, /* multiplexer type of subchannel */ 11 15 2 parent_type fixed bin; /* multiplexer type of parent */ 11 16 11 17 dcl 1 logical_chan_meters based aligned, /* pointed to by get_comm_meters_info.logical_chan_ptr */ 11 18 2 current_meters like lcte.meters, /* latest values */ 11 19 2 saved_meters like lcte.meters; /* values as of last copy_meters */ 11 20 11 21 dcl GET_COMM_METERS_INFO_VERSION_1 fixed bin int static options (constant) init (1); 11 22 11 23 /* END INCLUDE FILE...get_comm_meters_info.incl.pl1 */ 455 456 end priv_ibm3270_mpx; 457 SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/11/89 0803.8 priv_ibm3270_mpx.pl1 >spec>install>1111>priv_ibm3270_mpx.pl1 446 1 01/06/85 1422.1 tty_buf.incl.pl1 >ldd>include>tty_buf.incl.pl1 1-152 2 01/06/85 1422.1 hc_fast_lock.incl.pl1 >ldd>include>hc_fast_lock.incl.pl1 447 3 11/08/82 1005.8 lct.incl.pl1 >ldd>include>lct.incl.pl1 448 4 02/23/79 1434.9 mux_init_info.incl.pl1 >ldd>include>mux_init_info.incl.pl1 449 5 06/18/81 0900.8 tty_space_man_dcls.incl.pl1 >ldd>include>tty_space_man_dcls.incl.pl1 450 6 05/06/80 0958.2 channel_manager_dcls.incl.pl1 >ldd>include>channel_manager_dcls.incl.pl1 451 7 04/23/84 0745.1 bisync_line_data.incl.pl1 >ldd>include>bisync_line_data.incl.pl1 452 8 08/10/81 1843.6 ibm3270_mpx_data.incl.pl1 >ldd>include>ibm3270_mpx_data.incl.pl1 453 9 10/20/82 0938.6 ibm3270_mpx_load_data.incl.pl1 >ldd>include>ibm3270_mpx_load_data.incl.pl1 454 10 03/27/82 0430.3 ibm3270_meters.incl.pl1 >ldd>include>ibm3270_meters.incl.pl1 455 11 06/18/81 0900.6 get_comm_meters_info.incl.pl1 >ldd>include>get_comm_meters_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. CLEAR constant fixed bin(17,0) initial dcl 9-37 ref 396 CONFIGURE constant fixed bin(17,0) initial dcl 7-21 set ref 414* GET_COMM_METERS_INFO_VERSION_1 constant fixed bin(17,0) initial dcl 11-21 ref 269 IBM3270_METERS_VERSION_1 constant fixed bin(17,0) initial dcl 10-30 ref 273 INPUT 000006 constant bit(1) initial packed unaligned dcl 5-20 set ref 192* OUTPUT 000005 constant bit(1) initial packed unaligned dcl 5-21 set ref 189* PA1 constant fixed bin(17,0) initial dcl 9-37 ref 383 390 PA2 constant fixed bin(17,0) initial dcl 9-37 ref 385 392 PA3 constant fixed bin(17,0) initial dcl 9-37 ref 387 394 SET_3270_MODE 000000 constant fixed bin(17,0) initial dcl 7-21 set ref 410* SET_BID_LIMIT constant fixed bin(17,0) initial dcl 7-21 set ref 412* SET_TTD_PARAMS constant fixed bin(17,0) initial dcl 7-21 set ref 417* action_chars 32(27) based structure level 2 packed packed unaligned dcl 8-9 addr builtin function dcl 66 ref 77 146 157 163 216 323 324 419 419 439 439 address_table based char(1) array packed unaligned dcl 8-89 ref 313 314 315 330 address_tablep 34 based pointer level 2 dcl 8-9 set ref 125* 313 314 315 330 allow_copy 102(11) based bit(1) level 3 in structure "md" packed packed unaligned dcl 8-9 in procedure "priv_ibm3270_mpx" set ref 307* allow_copy 2(03) based bit(1) level 3 in structure "load_info" packed packed unaligned dcl 9-10 in procedure "priv_ibm3270_mpx" ref 307 allow_raw3270 2(02) based bit(1) level 3 in structure "load_info" packed packed unaligned dcl 9-10 in procedure "priv_ibm3270_mpx" ref 308 allow_raw3270 102(10) based bit(1) level 3 in structure "md" packed packed unaligned dcl 8-9 in procedure "priv_ibm3270_mpx" set ref 308* area 000130 stack reference condition dcl 64 ref 136 143 arg_code parameter fixed bin(35,0) dcl 30 set ref 70 112* 174* 178* 184 198* 203 209* 221* 226 232* 237* 242 249* 254 264* 269* 273* 279* 284* 287 427* arg_devx parameter fixed bin(17,0) dcl 25 ref 70 73 arg_infop parameter pointer dcl 28 ref 254 259 287 292 arg_mdp parameter pointer dcl 27 set ref 70 75* 167* 184 187 197* 203 206 226 229 242 245 254 257 287 290 arg_miip parameter pointer dcl 26 ref 70 74 arg_order parameter char packed unaligned dcl 29 ref 254 258 287 291 ascii 102 based bit(1) level 3 in structure "md" packed packed unaligned dcl 8-9 in procedure "priv_ibm3270_mpx" set ref 305* 332 ascii 2 based bit(1) level 3 in structure "load_info" packed packed unaligned dcl 9-10 in procedure "priv_ibm3270_mpx" ref 305 bin builtin function dcl 66 ref 94 160 329 bs 31(27) based char(1) level 3 packed packed unaligned dcl 8-9 set ref 353* 378* chan_info 7 based structure array level 2 dcl 9-10 set ref 324 chan_load_info based structure level 1 dcl 9-26 chan_load_infop 000170 automatic pointer dcl 9-24 set ref 324* 325 327 328 chan_map 36 based fixed bin(8,0) array level 2 packed packed unaligned dcl 8-9 set ref 126* 161* channel_manager$control 000056 constant entry external dcl 6-13 ref 246 264 279 300 419 439 channels 1 based structure array level 2 dcl 4-10 chars 25 based structure level 2 packed packed unaligned dcl 8-9 set ref 123* cleanup 000136 stack reference condition dcl 64 ref 103 clear 30(27) based char(1) level 3 packed packed unaligned dcl 8-9 set ref 349* 374* 396 398 code 000100 automatic fixed bin(35,0) dcl 34 set ref 246* 297* 300* 301 318* 406* 419* 420 425* 427 439* 440 controller_address 15 based fixed bin(17,0) level 2 in structure "md" dcl 8-9 in procedure "priv_ibm3270_mpx" set ref 311* 313 314 controller_address 3 based fixed bin(17,0) level 2 in structure "load_info" dcl 9-10 in procedure "priv_ibm3270_mpx" ref 311 controller_poll_address 16 based char(1) level 2 dcl 8-9 set ref 313* controller_select_address 17 based char(1) level 2 dcl 8-9 set ref 314* copy 32(18) based char(1) level 3 packed packed unaligned dcl 8-9 set ref 356* 381* cr 32 based char(1) level 3 packed packed unaligned dcl 8-9 set ref 354* 379* cur_write_chan 54 based fixed bin(17,0) level 2 dcl 8-9 set ref 131* current_meters 2 based structure level 2 dcl 10-7 set ref 277* debug 102(01) based bit(1) level 3 in structure "md" packed packed unaligned dcl 8-9 in procedure "priv_ibm3270_mpx" set ref 306* debug 2(01) based bit(1) level 3 in structure "load_info" packed packed unaligned dcl 9-10 in procedure "priv_ibm3270_mpx" ref 306 device_address 2 based char(1) level 2 dcl 8-93 set ref 330* devx 3 based fixed bin(17,0) level 2 in structure "md" dcl 8-9 in procedure "priv_ibm3270_mpx" set ref 117* 189* 192* 246* 264* 279* 300* 419* 439* devx based fixed bin(17,0) level 2 in structure "mde" dcl 8-93 in procedure "priv_ibm3270_mpx" set ref 158* 163 325 devx 000101 automatic fixed bin(17,0) dcl 35 in procedure "priv_ibm3270_mpx" set ref 73* 117 118 devx 11 based fixed bin(17,0) array level 3 in structure "mux_init_info" dcl 4-10 in procedure "priv_ibm3270_mpx" ref 158 devx based fixed bin(17,0) level 2 in structure "chan_load_info" dcl 9-26 in procedure "priv_ibm3270_mpx" ref 325 dialed 12(01) based bit(1) level 3 packed packed unaligned dcl 8-93 set ref 217 dialup_info 21 based structure level 2 dcl 8-9 set ref 124* em 32(09) based char(1) level 3 packed packed unaligned dcl 8-9 set ref 355* 380* enter 30(18) based char(1) level 3 packed packed unaligned dcl 8-9 set ref 348* 373* eot 27(09) based char(1) level 3 packed packed unaligned dcl 8-9 set ref 343* 368* erase_write 26(09) based char(1) level 3 packed packed unaligned dcl 8-9 set ref 339* 364* error_stat 63 based structure level 2 dcl 8-9 set ref 122* 263 277 error_table_$action_not_performed 000034 external static fixed bin(35,0) dcl 58 ref 209 232 297 406 error_table_$bad_channel 000030 external static fixed bin(35,0) dcl 56 ref 178 error_table_$bad_mpx_load_data 000040 external static fixed bin(35,0) dcl 60 ref 318 error_table_$noalloc 000032 external static fixed bin(35,0) dcl 57 ref 112 error_table_$undefined_order_request 000036 external static fixed bin(35,0) dcl 59 ref 284 425 error_table_$unimplemented_version 000042 external static fixed bin(35,0) dcl 61 ref 269 273 esc 25(27) based char(1) level 3 packed packed unaligned dcl 8-9 set ref 337* 362* etb 30(09) based char(1) level 3 packed packed unaligned dcl 8-9 set ref 347* 372* etx 26(27) based char(1) level 3 packed packed unaligned dcl 8-9 set ref 341* 366* event_channel based fixed bin(71,0) level 2 in structure "load_info" dcl 9-10 in procedure "priv_ibm3270_mpx" ref 303 event_channel based fixed bin(71,0) level 2 in structure "md" dcl 8-9 in procedure "priv_ibm3270_mpx" set ref 303* first_control_chan 47 based fixed bin(17,0) level 2 dcl 8-9 set ref 130* first_poll_chan 56 based fixed bin(17,0) level 2 dcl 8-9 set ref 129* first_write_chan 52 based fixed bin(17,0) level 2 dcl 8-9 set ref 128* flags 12 based structure level 2 in structure "mde" dcl 8-93 in procedure "priv_ibm3270_mpx" set ref 154* flags 2 based structure level 2 in structure "load_info" packed packed unaligned dcl 9-10 in procedure "priv_ibm3270_mpx" flags 102 based structure level 2 in structure "md" dcl 8-9 in procedure "priv_ibm3270_mpx" set ref 121* formfeed_key 5 based fixed bin(17,0) level 2 in structure "load_info" dcl 9-10 in procedure "priv_ibm3270_mpx" ref 390 392 394 396 formfeed_key 33 based char(1) level 3 in structure "md" packed packed unaligned dcl 8-9 in procedure "priv_ibm3270_mpx" set ref 390* 392* 394* 396* 398* general_poll_address 20 based char(1) level 2 dcl 8-9 set ref 315* get_comm_meters_info based structure level 1 dcl 11-8 hc_fast_lock based structure level 1 dcl 2-10 i 000102 automatic fixed bin(17,0) dcl 36 set ref 83* 84 87 87* 145* 146 155 156 156 157 158 161 164* 215* 216 217* 322* 323 324* 418* 419 419 ibm3270_meter_struc based structure level 1 dcl 10-7 ibm3270_meters based structure level 1 dcl 10-13 set ref 142 142 195 195 263* 278 ibm3270_mpx$crash 000016 constant entry external dcl 50 ref 248 ibm3270_mpx$dialup 000020 constant entry external dcl 51 ref 217 ibm3270_mpx$init 000026 constant entry external dcl 54 ref 170 ibm3270_mpx$set_address_table 000022 constant entry external dcl 52 ref 309 ibm3270_mpx$start_general_poll 000024 constant entry external dcl 53 ref 422 ic 26(18) based char(1) level 3 packed packed unaligned dcl 8-9 set ref 340* 365* in 2 based structure level 3 in structure "logical_chan_meters" dcl 11-17 in procedure "priv_ibm3270_mpx" in 26 based structure level 3 in structure "logical_chan_meters" dcl 11-17 in procedure "priv_ibm3270_mpx" in 30 based structure array level 4 in structure "lct" dcl 3-11 in procedure "priv_ibm3270_mpx" in 10 based structure level 3 in structure "lcte" dcl 3-20 in procedure "priv_ibm3270_mpx" in 2 based structure level 2 in structure "saved_meters" dcl 3-68 in procedure "priv_ibm3270_mpx" index builtin function dcl 66 ref 84 155 infop 000116 automatic pointer dcl 39 set ref 259* 264* 269 272 279* 292* 296 init_sw 000010 internal static bit(1) initial packed unaligned dcl 44 set ref 168 171* input_chain_ptr 60 based pointer level 2 dcl 8-9 set ref 133* 192 192 194* input_count 62 based fixed bin(17,0) level 2 dcl 8-9 set ref 134* j 000103 automatic fixed bin(17,0) dcl 36 set ref 84* 85 87 94* 95 95 97 99 155* 156 160* 161 329* 330 last_control_chan 50 based fixed bin(17,0) level 2 dcl 8-9 set ref 130* last_poll_address 46 based char(1) level 2 dcl 8-9 set ref 127* last_poll_chan 57 based fixed bin(17,0) level 2 dcl 8-9 set ref 129* last_select_address 51 based char(1) level 2 dcl 8-9 set ref 127* last_write_chan 53 based fixed bin(17,0) level 2 dcl 8-9 set ref 128* lcnt based structure level 1 dcl 3-65 lcnt_ptr 2 based pointer level 2 dcl 3-11 ref 79 lcntp 000152 automatic pointer dcl 3-63 set ref 79* 118 lct based structure level 1 dcl 3-11 lct_ptr 6 based pointer level 2 dcl 1-35 ref 78 lcte based structure level 1 dcl 3-20 lcte_array 20 based structure array level 2 dcl 3-11 set ref 163 lctep 000150 automatic pointer dcl 3-8 set ref 163* 164 lctp 000146 automatic pointer dcl 3-7 set ref 78* 79 163 length builtin function dcl 66 ref 87 88 156 letter_R 30 based char(1) level 3 packed packed unaligned dcl 8-9 set ref 346* 371* line_ctl 000156 automatic structure level 1 dcl 7-10 set ref 439 439 line_size 4 based fixed bin(17,0) level 2 in structure "mde" dcl 8-93 in procedure "priv_ibm3270_mpx" set ref 148* 328* line_size 2 based fixed bin(17,0) level 2 in structure "chan_load_info" dcl 9-26 in procedure "priv_ibm3270_mpx" ref 328 listen 12 based bit(1) level 3 packed packed unaligned dcl 8-93 set ref 217 load_info based structure level 1 dcl 9-10 load_infop 000166 automatic pointer dcl 9-7 set ref 296* 303 305 306 307 308 311 316 324 383 385 387 390 392 394 396 loaded 102(03) based bit(1) level 3 packed packed unaligned dcl 8-9 set ref 207 230 246 297 404 loading 102(02) based bit(1) level 3 packed packed unaligned dcl 8-9 set ref 246 297 301* low builtin function dcl 66 ref 127 major_channel_info 3 based structure level 2 dcl 3-20 md based structure level 1 dcl 8-9 set ref 105 105 109 109 138 138 196 196 md_nchan 000162 automatic fixed bin(17,0) dcl 8-7 set ref 81* 83 105 105 109 109 119 138 138 188* 196 196 mde based structure level 1 dcl 8-93 mde_entry 103 based structure array level 2 dcl 8-9 set ref 146 157 216 323 mdep 000164 automatic pointer dcl 8-91 set ref 146* 147 148 149 150 151 152 153 154 157* 158 159 162 163 216* 217 217 217 323* 325 327 328 329 330 mdp 000160 automatic pointer dcl 8-6 set ref 102* 105 105 105 105* 109 109 109* 110 117 118 119 121 122 123 124 125 126 127 127 128 128 129 129 130 130 131 132 133 134 138 138 138* 142 145 146 157 161 167 187* 188 189 189 189 191 192 192 192 194 195 196 196 196* 206* 207 213 215 216 217* 229* 230 236 245* 246 246 246 248* 257* 263 263 264 277 278 279 290* 297 297 300 301 303 304 305 306 307 308 309* 311 313 313 313 314 314 314 315 315 316 322 323 330 332 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 383 383 385 385 387 387 389 389 390 390 392 392 394 394 396 396 398 398 404 419 422* 439 meter_ptr 000172 automatic pointer dcl 10-28 set ref 142 142 195 195 272* 273 273 277 278 meters 26 based structure array level 3 in structure "lct" dcl 3-11 in procedure "priv_ibm3270_mpx" meters 6 based structure level 2 in structure "lcte" dcl 3-20 in procedure "priv_ibm3270_mpx" miip 000154 automatic pointer dcl 4-6 set ref 74* 81 84 87 87 155 156 156 158 mux_init_info based structure level 1 dcl 4-10 name 4 based char(32) level 2 in structure "md" dcl 8-9 in procedure "priv_ibm3270_mpx" set ref 118* name 1 based char(32) array level 3 in structure "mux_init_info" packed packed unaligned dcl 4-10 in procedure "priv_ibm3270_mpx" ref 84 87 87 155 156 156 name 1 based char(3) level 2 in structure "mde" dcl 8-93 in procedure "priv_ibm3270_mpx" set ref 159* 329 name 000104 automatic varying char(32) dcl 37 in procedure "priv_ibm3270_mpx" set ref 87* 88 90 90 92 94 156* 159 160 162 names based char(32) array level 2 packed packed unaligned dcl 3-65 ref 118 nchan 14 based fixed bin(17,0) level 2 in structure "md" dcl 8-9 in procedure "priv_ibm3270_mpx" set ref 119* 145 188 215 316 322 nchan 6 based fixed bin(17,0) level 2 in structure "load_info" dcl 9-10 in procedure "priv_ibm3270_mpx" ref 316 next_control_chan 10 based fixed bin(17,0) level 2 dcl 8-93 set ref 152* next_poll_chan 7 based fixed bin(17,0) level 2 dcl 8-93 set ref 151* next_write_chan 6 based fixed bin(17,0) level 2 dcl 8-93 set ref 150* nl 25 based char(1) level 3 packed packed unaligned dcl 8-9 set ref 334* 359* no_channels based fixed bin(17,0) level 2 dcl 4-10 ref 81 null builtin function dcl 66 ref 75 102 105 110 125 132 133 153 189 191 192 194 197 246 246 273 300 300 op parameter fixed bin(17,0) dcl 436 in procedure "line_control" ref 433 438 op 000156 automatic fixed bin(17,0) level 2 in structure "line_ctl" packed packed unaligned dcl 7-10 in procedure "priv_ibm3270_mpx" set ref 438* order 000120 automatic char(32) packed unaligned dcl 40 set ref 258* 261 264* 267 279* 291* 294 402 pa1 31 based char(1) level 3 packed packed unaligned dcl 8-9 set ref 350* 375* 383 389 390 pa2 31(09) based char(1) level 3 packed packed unaligned dcl 8-9 set ref 351* 376* 385 392 pa3 31(18) based char(1) level 3 packed packed unaligned dcl 8-9 set ref 352* 377* 387 394 pds$processid 000044 external static bit(36) dcl 63 ref 304 percent 27(18) based char(1) level 3 packed packed unaligned dcl 8-9 set ref 344* 369* position 5 based fixed bin(17,0) level 2 dcl 8-93 set ref 147* printer 12(02) based bit(1) level 3 packed packed unaligned dcl 8-93 set ref 162* 217 processid 2 based bit(36) level 2 dcl 8-9 set ref 304* quit_key 4 based fixed bin(17,0) level 2 in structure "load_info" dcl 9-10 in procedure "priv_ibm3270_mpx" ref 383 385 387 quit_key 32(27) based char(1) level 3 in structure "md" packed packed unaligned dcl 8-9 in procedure "priv_ibm3270_mpx" set ref 383* 385* 387* 389* reverse builtin function dcl 66 ref 84 155 rtrim builtin function dcl 66 ref 87 156 saved_meters 17 based structure level 2 dcl 10-7 set ref 278* saved_meters_ptr 100 based pointer level 2 dcl 8-9 set ref 142* 195* 263 278 sba 25(09) based char(1) level 3 packed packed unaligned dcl 8-9 set ref 335* 360* screen_size 3 based fixed bin(17,0) level 2 in structure "mde" dcl 8-93 in procedure "priv_ibm3270_mpx" set ref 149* 327* screen_size 1 based fixed bin(17,0) level 2 in structure "chan_load_info" dcl 9-26 in procedure "priv_ibm3270_mpx" ref 327 size builtin function dcl 66 ref 105 105 109 109 138 138 142 142 195 195 196 196 slash 27(27) based char(1) level 3 packed packed unaligned dcl 8-9 set ref 345* 370* soh 27 based char(1) level 3 packed packed unaligned dcl 8-9 set ref 342* 367* started 102(04) based bit(1) level 3 packed packed unaligned dcl 8-9 set ref 213* 236* string builtin function dcl 66 set ref 82* 121* 154* stx 25(18) based char(1) level 3 packed packed unaligned dcl 8-9 set ref 336* 361* sub_channel_flags 000115 automatic bit(1) array packed unaligned dcl 38 set ref 82* 97 99* subchan_ptr 2 based pointer level 2 dcl 11-8 ref 272 subchannel 3(18) based fixed bin(17,0) level 3 packed packed unaligned dcl 3-20 set ref 164* substr builtin function dcl 66 ref 87 90 90 92 94 156 160 162 329 tty_area_manager$allocate 000012 constant entry external dcl 48 ref 142 tty_area_manager$free 000014 constant entry external dcl 49 ref 195 tty_buf based structure level 1 dcl 1-35 tty_buf$ 000046 external static fixed bin(17,0) dcl 1-19 set ref 77 tty_space_man$free_chain 000054 constant entry external dcl 5-16 ref 189 192 tty_space_man$free_space 000052 constant entry external dcl 5-12 ref 105 138 196 tty_space_man$get_space 000050 constant entry external dcl 5-10 ref 109 ttybp 000144 automatic pointer dcl 1-19 set ref 77* 78 unspec builtin function dcl 66 set ref 334* 335* 336* 337* 338* 339* 340* 341* 342* 343* 344* 345* 346* 347* 348* 349* 350* 351* 352* 353* 354* 355* 356* 359* 360* 361* 362* 363* 364* 365* 366* 367* 368* 369* 370* 371* 372* 373* 374* 375* 376* 377* 378* 379* 380* 381* val 0(18) 000156 automatic fixed bin(17,0) array level 2 packed packed unaligned dcl 7-10 set ref 409* 411* 413* 415* 416* verify builtin function dcl 66 ref 92 version based fixed bin(17,0) level 2 in structure "get_comm_meters_info" dcl 11-8 in procedure "priv_ibm3270_mpx" ref 269 version based fixed bin(17,0) level 2 in structure "ibm3270_meter_struc" dcl 10-7 in procedure "priv_ibm3270_mpx" ref 273 write 26 based char(1) level 3 packed packed unaligned dcl 8-9 set ref 338* 363* write_chain_ptr 11 based pointer level 2 in structure "mde" packed packed unaligned dcl 8-93 in procedure "priv_ibm3270_mpx" set ref 153* write_chain_ptr 55 based pointer level 2 in structure "md" packed packed unaligned dcl 8-9 in procedure "priv_ibm3270_mpx" set ref 132* 189 189 191* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ACCEPT_BID internal static fixed bin(17,0) initial dcl 7-21 BAD_BLOCK internal static fixed bin(17,0) initial dcl 7-49 BID_FAILED internal static fixed bin(17,0) initial dcl 7-49 FNP_DUMP_PATCH_EVENT internal static fixed bin(17,0) initial dcl 1-31 FNP_METER_EVENT internal static fixed bin(17,0) initial dcl 1-32 FNP_WRITE_STATUS internal static fixed bin(17,0) initial dcl 7-49 HASP_FOREIGN_SWAB_RESET internal static fixed bin(17,0) initial dcl 7-49 HASP_INIT_COMPLETE internal static fixed bin(17,0) initial dcl 7-49 IBM3270_MPX_DOWN internal static fixed bin(71,0) initial dcl 9-31 IBM3270_MPX_MASKED internal static fixed bin(71,0) initial dcl 9-31 IBM3270_MPX_UP internal static fixed bin(71,0) initial dcl 9-31 IBM3270_NAK_OUTPUT internal static fixed bin(17,0) initial dcl 7-49 IBM3270_SELECT_FAILED internal static fixed bin(17,0) initial dcl 7-49 IBM3270_WACK_MESSAGE internal static fixed bin(17,0) initial dcl 7-49 IBM3270_WACK_SELECT internal static fixed bin(17,0) initial dcl 7-49 IBM3270_WRITE_ABORT internal static fixed bin(17,0) initial dcl 7-49 IBM3270_WRITE_COMPLETE internal static fixed bin(17,0) initial dcl 7-49 IBM3270_WRITE_EOT internal static fixed bin(17,0) initial dcl 7-49 REPORT_WRITE_STATUS internal static fixed bin(17,0) initial dcl 7-21 REVERSE_INTERRUPT internal static fixed bin(17,0) initial dcl 7-49 SET_HASP_MODE internal static fixed bin(17,0) initial dcl 7-21 SET_HASP_TIMERS internal static fixed bin(17,0) initial dcl 7-21 SET_MASTER_SLAVE_MODE internal static fixed bin(17,0) initial dcl 7-21 SET_NAK_LIMIT internal static fixed bin(17,0) initial dcl 7-21 SET_POLLING_ADDR internal static fixed bin(17,0) initial dcl 7-21 SET_SELECT_ADDR internal static fixed bin(17,0) initial dcl 7-21 START_POLL internal static fixed bin(17,0) initial dcl 7-21 STOP_AUTO_POLL internal static fixed bin(17,0) initial dcl 7-21 TOO_MANY_NAKS internal static fixed bin(17,0) initial dcl 7-49 TTY_AREA_LOCK_EVENT internal static bit(36) initial dcl 1-33 abs_buf_limit internal static fixed bin(18,0) initial dcl 1-19 bsizec internal static fixed bin(17,0) initial dcl 1-28 buf_per_second internal static fixed bin(17,0) initial dcl 1-29 channel_manager$check_modes 000000 constant entry external dcl 6-19 channel_manager$get_modes 000000 constant entry external dcl 6-22 channel_manager$interrupt 000000 constant entry external dcl 6-25 channel_manager$interrupt_later 000000 constant entry external dcl 6-28 channel_manager$queued_interrupt 000000 constant entry external dcl 6-31 channel_manager$read 000000 constant entry external dcl 6-7 channel_manager$set_modes 000000 constant entry external dcl 6-16 channel_manager$write 000000 constant entry external dcl 6-10 input_bpart internal static fixed bin(18,0) initial dcl 1-19 lct_size automatic fixed bin(17,0) dcl 3-9 line_stat automatic structure level 1 dcl 7-42 load_info_nchan automatic fixed bin(17,0) dcl 9-8 lock_ptr automatic pointer dcl 2-9 logical_chan_meters based structure level 1 dcl 11-17 mii_chan_count automatic fixed bin(17,0) dcl 4-7 output_bpart internal static fixed bin(18,0) initial dcl 1-19 qblock_size internal static fixed bin(17,0) initial dcl 1-27 saved_meters based structure level 1 dcl 3-68 tty_ev internal static fixed bin(17,0) initial dcl 1-19 tty_space_man$free_buffer 000000 constant entry external dcl 5-14 tty_space_man$get_buffer 000000 constant entry external dcl 5-13 tty_space_man$get_chain 000000 constant entry external dcl 5-15 tty_space_man$get_perm_space 000000 constant entry external dcl 5-11 tty_space_man$needs_space 000000 constant entry external dcl 5-18 tty_space_man$switch_chain 000000 constant entry external dcl 5-17 valchar based structure level 1 packed packed unaligned dcl 7-14 NAMES DECLARED BY EXPLICIT CONTEXT. bad_channel 001002 constant label dcl 178 ref 85 88 90 92 95 97 bad_load 001727 constant label dcl 318 ref 325 control_return 002355 constant label dcl 427 ref 320 407 420 440 hpriv_control 001536 constant entry external dcl 287 init_multiplexer 000073 constant entry external dcl 70 line_control 002360 constant entry internal dcl 433 ref 410 412 414 417 noalloc 000346 constant label dcl 112 ref 139 priv_control 001350 constant entry external dcl 254 priv_ibm3270_mpx 000060 constant entry external dcl 20 shutdown 001261 constant entry external dcl 242 start 001136 constant entry external dcl 203 stop 001227 constant entry external dcl 226 terminate_multiplexer 001012 constant entry external dcl 184 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 3206 3266 2646 3216 Length 3742 2646 60 440 337 2 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME priv_ibm3270_mpx 354 external procedure is an external procedure. on unit on line 103 72 on unit on unit on line 136 72 on unit line_control internal procedure shares stack frame of external procedure priv_ibm3270_mpx. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 init_sw priv_ibm3270_mpx STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME priv_ibm3270_mpx 000100 code priv_ibm3270_mpx 000101 devx priv_ibm3270_mpx 000102 i priv_ibm3270_mpx 000103 j priv_ibm3270_mpx 000104 name priv_ibm3270_mpx 000115 sub_channel_flags priv_ibm3270_mpx 000116 infop priv_ibm3270_mpx 000120 order priv_ibm3270_mpx 000144 ttybp priv_ibm3270_mpx 000146 lctp priv_ibm3270_mpx 000150 lctep priv_ibm3270_mpx 000152 lcntp priv_ibm3270_mpx 000154 miip priv_ibm3270_mpx 000156 line_ctl priv_ibm3270_mpx 000160 mdp priv_ibm3270_mpx 000162 md_nchan priv_ibm3270_mpx 000164 mdep priv_ibm3270_mpx 000166 load_infop priv_ibm3270_mpx 000170 chan_load_infop priv_ibm3270_mpx 000172 meter_ptr priv_ibm3270_mpx THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_e_as call_ext_out_desc call_ext_out return_mac tra_ext_1 enable_op ext_entry ext_entry_desc int_entry any_to_any_truncate_ THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. channel_manager$control ibm3270_mpx$crash ibm3270_mpx$dialup ibm3270_mpx$init ibm3270_mpx$set_address_table ibm3270_mpx$start_general_poll tty_area_manager$allocate tty_area_manager$free tty_space_man$free_chain tty_space_man$free_space tty_space_man$get_space THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$action_not_performed error_table_$bad_channel error_table_$bad_mpx_load_data error_table_$noalloc error_table_$undefined_order_request error_table_$unimplemented_version pds$processid tty_buf$ LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 20 000057 70 000065 73 000105 74 000110 75 000113 77 000115 78 000117 79 000121 81 000123 82 000125 83 000127 84 000135 85 000151 87 000152 88 000211 90 000214 92 000223 94 000235 95 000251 97 000254 99 000260 100 000263 102 000265 103 000267 105 000303 107 000324 109 000325 110 000342 112 000346 114 000351 117 000352 118 000355 119 000363 121 000365 122 000366 123 000403 124 000461 125 000465 126 000467 127 000504 128 000507 129 000511 130 000513 131 000515 132 000516 133 000520 134 000522 136 000523 138 000537 139 000554 142 000557 143 000573 145 000574 146 000605 147 000611 148 000612 149 000614 150 000616 151 000617 152 000620 153 000621 154 000623 155 000624 156 000642 157 000701 158 000706 159 000710 160 000715 161 000731 162 000742 163 000753 164 000760 165 000762 167 000764 168 000766 170 000771 171 000775 174 001000 176 001001 178 001002 180 001005 184 001006 187 001024 188 001027 189 001031 191 001051 192 001054 194 001075 195 001100 196 001113 197 001130 198 001132 199 001133 203 001134 206 001150 207 001153 209 001156 210 001161 213 001162 215 001164 216 001173 217 001177 219 001221 221 001223 222 001224 226 001225 229 001241 230 001244 232 001247 233 001252 236 001253 237 001255 238 001256 242 001257 245 001273 246 001276 248 001332 249 001341 250 001342 254 001343 257 001370 258 001373 259 001401 261 001404 263 001410 264 001414 265 001441 267 001442 269 001446 272 001455 273 001457 277 001472 278 001476 279 001502 282 001527 284 001530 285 001533 287 001534 290 001556 291 001561 292 001567 294 001572 296 001576 297 001577 300 001606 301 001637 303 001644 304 001646 305 001652 306 001657 307 001663 308 001670 309 001675 311 001703 313 001707 314 001714 315 001720 316 001724 318 001727 320 001732 322 001733 323 001741 324 001745 325 001752 327 001755 328 001757 329 001761 330 001775 331 002004 332 002006 334 002012 335 002014 336 002016 337 002020 338 002022 339 002024 340 002026 341 002030 342 002032 343 002034 344 002036 345 002040 346 002042 347 002044 348 002046 349 002050 350 002052 351 002054 352 002056 353 002060 354 002062 355 002064 356 002066 357 002070 359 002071 360 002073 361 002075 362 002077 363 002101 364 002103 365 002105 366 002107 367 002111 368 002113 369 002115 370 002117 371 002121 372 002123 373 002125 374 002127 375 002131 376 002133 377 002135 378 002137 379 002141 380 002143 381 002145 383 002147 385 002157 387 002165 389 002173 390 002176 392 002205 394 002214 396 002223 398 002231 400 002234 402 002235 404 002241 406 002244 407 002247 409 002250 410 002263 411 002265 412 002267 413 002271 414 002273 415 002275 416 002277 417 002301 418 002303 419 002305 420 002340 422 002342 423 002351 425 002352 427 002355 429 002357 433 002360 438 002362 439 002365 440 002421 442 002423 ----------------------------------------------------------- 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