COMPILATION LISTING OF SEGMENT ibm3270_dump_ Compiled by: Multics PL/I Compiler, Release 28d, of October 4, 1983 Compiled at: Honeywell Multics Op. - System M Compiled on: 01/02/85 1540.6 mst Wed Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* * Copyright (c) 1972 by Massachusetts Institute of * 6* * Technology and Honeywell Information Systems, Inc. * 7* * * 8* *********************************************************** */ 9 10 11 /* IBM3270_DUMP_ - Used by tty_dump for 3270 channels */ 12 /* Written May 1979 by Larry Johnson */ 13 14 ibm3270_dump_: proc (arg_ttybp, arg_ttyap, arg_mdp, arg_subchan, arg_brief_sw); 15 16 /* Arguments */ 17 18 dcl arg_ttybp ptr; 19 dcl arg_ttyap ptr; 20 dcl arg_mdp ptr; 21 dcl arg_subchan fixed bin; 22 dcl arg_brief_sw bit (1); 23 24 /* Automatic */ 25 26 dcl i fixed bin; 27 dcl last_i fixed bin; 28 dcl subchan fixed bin; 29 dcl quit_key char (3); 30 dcl formfeed_key char (5); 31 32 /* External */ 33 34 dcl (ioa_, ioa_$nnl) entry options (variable); 35 36 dcl (addr, bin, null, rel, unspec) builtin; 37 38 39 /* Start of tty_dump code */ 40 41 ttybp = arg_ttybp; 42 mdp = arg_mdp; 43 subchan = arg_subchan; 44 45 call ioa_ ("^/MPX DATA at ^o for ^a (devx ^o)", bin (rel (mdp)), md.name, md.devx); 46 call ioa_ ("Boot process ^.3b, channel ^.3b", md.processid, unspec (md.event_channel)); 47 call ioa_ ("Controller addr ^d, poll ^.3b, select ^.3b, general poll ^.3b", md.controller_address, 48 unspec (md.controller_poll_address), unspec (md.controller_select_address), 49 unspec (md.general_poll_address)); 50 call ioa_ ("line type ^d, baud ^d, buf size ^d, buffer pad ^d", md.line_type, md.baud_rate, 51 md.max_buf_size, md.buffer_pad); 52 if md.quit_key = md.pa1 then quit_key = "pa1"; 53 else if md.quit_key = md.pa2 then quit_key = "pa2"; 54 else if md.quit_key = md.pa3 then quit_key = "pa3"; 55 else quit_key = "?"; 56 if md.formfeed_key = md.pa1 then formfeed_key = "pa1"; 57 else if md.formfeed_key = md.pa2 then formfeed_key = "pa2"; 58 else if md.formfeed_key = md.pa3 then formfeed_key = "pa3"; 59 else if md.formfeed_key = md.clear then formfeed_key = "clear"; 60 else formfeed_key = "?"; 61 call ioa_ ("quit key is ""^a"", formfeed key is ""^a"".", quit_key, formfeed_key); 62 call ioa_ (" ADDR SUBCHAN"); 63 do i = 0 to 31; 64 if md.chan_map (i) = -1 then call ioa_ ("^4d^-NONE (input recieved)", i); 65 else if md.chan_map (i) > 0 then call ioa_ ("^4d^-^d", i, md.chan_map (i)); 66 end; 67 call ioa_ ("Last poll ^.3b, last select ^.3b", unspec (md.last_poll_address), unspec (md.last_select_address)); 68 call ioa_$nnl ("Current write channel: ^d", md.cur_write_chan); 69 if md.write_chain_ptr = null () then call ioa_ (""); 70 else call ioa_ (" write chain at ^o", bin (rel (md.write_chain_ptr))); 71 if md.input_chain_ptr ^= null () then 72 call ioa_ ("input chain at ^o, length ^d", bin (rel (md.input_chain_ptr)), md.input_count); 73 call ioa_ ("Flags:^[ ascii^]^[ debug^]^[ loading^]^[ loaded^]^[ started^]^[ poll_in_progress^]^[ output_in_progress^]^[ message_in_progress^]^[ eot_sent^]^[ send_output^]^[ allow_raw3270^]^[ allow_copy^]", 74 md.ascii, md.debug, md.loading, md.loaded, md.started, md.poll_in_progress, md.output_in_progress, 75 md.message_in_progress, md.eot_sent, md.send_output, md.allow_raw3270, md.allow_copy); 76 77 if md.first_write_chan = 0 then last_i = 0; 78 else do; 79 call ioa_$nnl ("Write queue:"); 80 do i = md.first_write_chan repeat (mde.next_write_chan) while (i ^= 0); 81 mdep = addr (md.mde_entry (i)); 82 call ioa_$nnl (" ^d", i); 83 last_i = i; 84 end; 85 call ioa_ (""); 86 end; 87 if last_i ^= md.last_write_chan then 88 call ioa_ ("Last write chan invalid: is ^d, should be ^d", md.last_write_chan, last_i); 89 90 if md.first_poll_chan = 0 then last_i = 0; 91 else do; 92 call ioa_$nnl ("Poll queue:"); 93 do i = md.first_poll_chan repeat (mde.next_poll_chan) while (i ^= 0); 94 mdep = addr (md.mde_entry (i)); 95 call ioa_$nnl (" ^d", i); 96 last_i = i; 97 end; 98 call ioa_ (""); 99 end; 100 if last_i ^= md.last_poll_chan then 101 call ioa_ ("Last poll chan invalid: is ^d, should be ^d", md.last_poll_chan, last_i); 102 103 if md.first_control_chan = 0 then last_i = 0; 104 else do; 105 call ioa_$nnl ("Control queue:"); 106 do i = md.first_control_chan repeat (mde.next_control_chan) while (i ^= 0); 107 mdep = addr (md.mde_entry (i)); 108 call ioa_$nnl (" ^d", i); 109 last_i = i; 110 end; 111 call ioa_ (""); 112 end; 113 if last_i ^= md.last_control_chan then 114 call ioa_ ("Last control chan invalid: is ^d, should be ^d", md.last_control_chan, last_i); 115 116 if unspec (md.error_stat) ^= "0"b then do; 117 call ioa_ ("Error statistics:"); 118 if md.poll_failed ^= 0 then call ioa_ (" poll failures: ^d", md.poll_failed); 119 if md.bad_output ^= 0 then call ioa_ (" bad output: ^d", md.bad_output); 120 if md.write_eot ^= 0 then call ioa_ (" write eot: ^d", md.write_eot); 121 if md.write_abort ^= 0 then call ioa_ (" write abort: ^d", md.write_abort); 122 if md.select_failed ^= 0 then call ioa_ (" select failures: ^d", md.select_failed); 123 if md.wack_select ^= 0 then call ioa_ (" wack select: ^d", md.wack_select); 124 if md.nak_output ^= 0 then call ioa_ (" nak output: ^d", md.nak_output); 125 if md.input_reject ^= 0 then call ioa_ (" input reject: ^d", md.input_reject); 126 if md.needs_space ^= 0 then call ioa_ (" space needed: ^d", md.needs_space); 127 if md.space_available ^= 0 then call ioa_ (" space available: ^d", md.space_available); 128 if md.write_format_error ^= 0 then call ioa_ (" write format errors: ^d", md.write_format_error); 129 end; 130 131 if subchan = -1 then do subchan = 1 to md.nchan; 132 call print_mde; 133 end; 134 else call print_mde; 135 call ioa_ (""); 136 return; 137 138 print_mde: 139 proc; 140 141 mdep = addr (md.mde_entry (subchan)); 142 call ioa_ ("^/Subchan ^a.^a (devx ^o) address ^.3b", md.name, mde.name, mde.devx, unspec (mde.device_address)); 143 call ioa_ ("screen size ^d, line size ^d, position ^d", mde.screen_size, mde.line_size, mde.position); 144 if mde.write_chain_ptr ^= null () then call ioa_ ("write chain at ^o", bin (rel (mde.write_chain_ptr))); 145 call ioa_ ("Flags:^[ listen^]^[ dialed^]^[ printer^]^[ hndlquit^]^[ waiting_for_ready^]^[ erase_req^]^[ sound_alarm^]^[ control_queued^]^[ end_of_page^]^[ keyboard_restore^]^[ rawo^]^[ rawi^]^[ raw3270^]^[ raw3270_in_effect^]^[ write_queued^]", 146 mde.listen, mde.dialed, mde.printer, mde.hndlquit, mde.waiting_for_ready, mde.erase_req, mde.sound_alarm, mde.control_queued, mde.end_of_page, mde.keyboard_restore, mde.rawo, mde.rawi, mde.raw3270, mde.raw3270_in_effect, mde.write_queued); 147 return; 148 149 end print_mde; 150 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 */ 151 152 3 1 /* Begin include file ..... ibm3270_mpx_data.incl.pl1 */ 3 2 3 3 /* Describes ring-0 data bases used by the ibm3270 demultiplexer */ 3 4 /* Prepared May 1979 by Larry Johnson */ 3 5 3 6 dcl mdp ptr; 3 7 dcl md_nchan fixed bin; 3 8 3 9 dcl 1 md aligned based (mdp), /* Global data */ 3 10 3 11 /* Static items */ 3 12 3 13 2 event_channel fixed bin (71), /* Event channel to talk to AS over */ 3 14 2 processid bit (36), /* AS processid */ 3 15 2 devx fixed bin, /* Devx of major channel */ 3 16 2 name char (32), /* Name of major channel */ 3 17 2 nchan fixed bin, /* Count of subchannels */ 3 18 2 controller_address fixed bin, /* Address of controler, defaults to 0 */ 3 19 2 controller_poll_address char (1), 3 20 2 controller_select_address char (1), 3 21 2 general_poll_address char (1), 3 22 2 dialup_info, /* Data saved from dialup interrupt */ 3 23 3 line_type fixed bin, 3 24 3 baud_rate fixed bin, 3 25 3 max_buf_size fixed bin, 3 26 3 buffer_pad fixed bin, 3 27 2 chars unal, /* Various ascii/ebcdic dependent chars */ 3 28 3 nl char (1), /* Newline character */ 3 29 3 sba char (1), /* Set-buffer-address code */ 3 30 3 stx char (1), /* Start of text code */ 3 31 3 esc char (1), /* Escape code */ 3 32 3 write char (1), /* Function code for write */ 3 33 3 erase_write char (1), /* Function code for erase-write */ 3 34 3 ic char (1), /* Insert cursor */ 3 35 3 etx char (1), /* End of text */ 3 36 3 soh char (1), /* Start of header */ 3 37 3 eot char (1), /* End of transmission */ 3 38 3 percent char (1), /* A "%" */ 3 39 3 slash char (1), /* A "/" */ 3 40 3 letter_R char (1), /* A "R" */ 3 41 3 etb char (1), /* End of text block */ 3 42 3 enter char (1), /* AID field for enter */ 3 43 3 clear char (1), /* AID field for clear */ 3 44 3 pa1 char (1), /* AID field for PA1 */ 3 45 3 pa2 char (1), /* AID field for PA2 */ 3 46 3 pa3 char (1), /* AID field for PA3 */ 3 47 3 bs char (1), /* Backspace */ 3 48 3 cr char (1), /* Carriage return */ 3 49 3 em char (1), /* End of media */ 3 50 3 copy char (1), /* Function code to copy a screen */ 3 51 2 action_chars unal, 3 52 3 quit_key char (1), /* Function code to interpret as quit */ 3 53 3 formfeed_key char (1), /* Function code to interpret as formfeed */ 3 54 2 address_tablep ptr, /* Pointer to ebcdic or ascii table */ 3 55 2 chan_map (0:31) fixed bin (8) unal, /* Maps poll address into mde index */ 3 56 3 57 /* Dynamic items */ 3 58 3 59 2 last_poll_address char (1), /* Last poll address sent to FNP */ 3 60 2 first_control_chan fixed bin, /* First channal in control function queue */ 3 61 2 last_control_chan fixed bin, /* The last */ 3 62 2 last_select_address char (1), /* Likewise for select */ 3 63 2 first_write_chan fixed bin, /* First channel in write queue */ 3 64 2 last_write_chan fixed bin, /* Last channel in write queue */ 3 65 2 cur_write_chan fixed bin, /* If output in progres */ 3 66 2 write_chain_ptr ptr unal, /* For cur_write_chan */ 3 67 2 first_poll_chan fixed bin, /* First channel in poll queue */ 3 68 2 last_poll_chan fixed bin, /* Last channel in poll queue */ 3 69 2 input_chain_ptr ptr, /* Currently accumulating input chain */ 3 70 2 input_count fixed bin, /* Its length */ 3 71 2 error_stat like ibm3270_meters, /* Error statstics */ 3 72 2 saved_meters_ptr ptr, /* address of savedf copy of meters */ 3 73 2 flags, 3 74 3 ascii bit (1) unal, /* Use ascii protocol */ 3 75 3 debug bit (1) unal, 3 76 3 loading bit (1) unal, /* Load in progress */ 3 77 3 loaded bit (1) unal, /* Load complete */ 3 78 3 started bit (1) unal, /* In started state */ 3 79 3 poll_in_progress bit (1) unal, /* FNP has device poll in progress */ 3 80 3 output_in_progress bit (1) unal, /* Working on output, goes off with line status */ 3 81 3 message_in_progress bit (1) unal, /* Working on output, goes off when data passed on */ 3 82 3 eot_sent bit (1) unal, /* If eot has been entor current output */ 3 83 3 send_output bit (1) unal, /* Mpx has been told send output */ 3 84 3 allow_raw3270 bit (1) unal, /* Sub-channels may use raw3270 mode */ 3 85 3 allow_copy bit (1) unal, /* Sub-channels may use copy feature */ 3 86 3 pad bit (24) unal, 3 87 2 mde_entry (md_nchan refer (md.nchan)) like mde; /* Per-channel data */ 3 88 3 89 dcl address_table (0:63) char (1) unal based (md.address_tablep); 3 90 3 91 dcl mdep ptr; 3 92 3 93 dcl 1 mde aligned based (mdep), /* Per channel data */ 3 94 2 devx fixed bin, /* Devx of sub-channel */ 3 95 2 name char (3), /* Last component of name, {p|d}NN */ 3 96 2 device_address char (1), /* Address for poll and selects */ 3 97 2 screen_size fixed bin, /* Number of characters on screen, 480/1920 */ 3 98 2 line_size fixed bin, /* Number of characters on line, 40/80 */ 3 99 2 position fixed bin, /* Where cursor should be */ 3 100 2 next_write_chan fixed bin, /* Next channel in the write queue */ 3 101 2 next_poll_chan fixed bin, /* Next channel in the poll queue */ 3 102 2 next_control_chan fixed bin, /* Next channel in control function queue */ 3 103 2 write_chain_ptr ptr unal, /* Pointer to write chain for this device */ 3 104 2 flags, 3 105 3 listen bit (1) unal, 3 106 3 dialed bit (1) unal, 3 107 3 printer bit (1) unal, 3 108 3 hndlquit bit (1) unal, /* Setting of the mode */ 3 109 3 waiting_for_ready bit (1) unal, /* Waiting for prinnr to finish */ 3 110 3 erase_req bit (1) unal, /* Erase screen on next write */ 3 111 3 sound_alarm bit (1) unal, /* Turn on beeper on next chance */ 3 112 3 control_queued bit (1) unal, /* Channel in unlock queue */ 3 113 3 end_of_page bit (1) unal, /* Waiting for responce to start output */ 3 114 3 keyboard_restore bit (1) unal, /* Must unlock keyboard */ 3 115 3 rawo bit (1) unal, /* Current state of channels rawo mode */ 3 116 3 rawi bit (1) unal, /* Current state of channels rawi mode */ 3 117 3 raw3270 bit (1) unal, /* Special raw mode for 3270's */ 3 118 3 raw3270_in_effect bit (1) unal, /* Equals rawi & rawo & raw3270 */ 3 119 3 write_queued bit (1) unal, 3 120 3 pad bit (21) unal; 3 121 3 122 /* End include file ..... ibm3270_mpx_data.incl.pl1 */ 153 4 1 /* BEGIN INCLUDE FILE ... ibm3270_meters.incl.pl1 */ 4 2 4 3 /* defines metering structures used for ibm3270 multiplexer channel */ 4 4 4 5 /* Written June 1981 by Robert Coren */ 4 6 4 7 dcl 1 ibm3270_meter_struc aligned based, 4 8 2 version fixed bin, 4 9 2 pad bit (36), 4 10 2 current_meters like ibm3270_meters, 4 11 2 saved_meters like ibm3270_meters; 4 12 4 13 dcl 1 ibm3270_meters aligned based (meter_ptr), 4 14 2 poll_failed fixed bin (35), /* No response to poll */ 4 15 2 bad_output fixed bin (35), /* Bsc control tables rejected output */ 4 16 2 write_eot fixed bin (35), /* Got eot in responseto write */ 4 17 2 write_abort fixed bin (35), /* FNP send eot because of nothing to write */ 4 18 2 select_failed fixed bin (35), /* No response to select */ 4 19 2 wack_select fixed bin (35), /* Wack in respnse to select */ 4 20 2 nak_output fixed bin (35), /* Our output got nakked */ 4 21 2 input_reject fixed bin (35), /* Count of input reject interrupts */ 4 22 2 needs_space fixed bin (35), /* Count of times space available interrupt req */ 4 23 2 space_available fixed bin (35), /* Count of space available interrupts */ 4 24 2 write_format_error fixed bin (35), /* Count of bad calls to write entry */ 4 25 2 bad_input fixed bin (35), /* Count of ill-formatted input messages */ 4 26 2 bad_device fixed bin (35); /* Count of unrecognized device identifications */ 4 27 4 28 dcl meter_ptr ptr; 4 29 4 30 dcl IBM3270_METERS_VERSION_1 internal static options (constant) init (1); 4 31 4 32 /* END INCLUDE FILE ... ibm3270_meters.incl.pl1 */ 154 155 end ibm3270_dump_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 01/02/85 1518.9 ibm3270_dump_.pl1 >spec>online>41-2>ibm3270_dump_.pl1 151 1 01/02/85 1316.8 tty_buf.incl.pl1 >spec>online>41-2>tty_buf.incl.pl1 1-152 2 01/02/85 1316.9 hc_fast_lock.incl.pl1 >spec>online>41-2>hc_fast_lock.incl.pl1 153 3 08/10/81 1843.6 ibm3270_mpx_data.incl.pl1 >ldd>include>ibm3270_mpx_data.incl.pl1 154 4 03/27/82 0430.3 ibm3270_meters.incl.pl1 >ldd>include>ibm3270_meters.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. action_chars 32(27) based structure level 2 packed unaligned dcl 3-9 addr builtin function dcl 36 ref 81 94 107 141 allow_copy 102(11) based bit(1) level 3 packed unaligned dcl 3-9 set ref 73* allow_raw3270 102(10) based bit(1) level 3 packed unaligned dcl 3-9 set ref 73* arg_brief_sw parameter bit(1) unaligned dcl 22 ref 14 arg_mdp parameter pointer dcl 20 ref 14 42 arg_subchan parameter fixed bin(17,0) dcl 21 ref 14 43 arg_ttyap parameter pointer dcl 19 ref 14 arg_ttybp parameter pointer dcl 18 ref 14 41 ascii 102 based bit(1) level 3 packed unaligned dcl 3-9 set ref 73* bad_output 64 based fixed bin(35,0) level 3 dcl 3-9 set ref 119 119* baud_rate 22 based fixed bin(17,0) level 3 dcl 3-9 set ref 50* bin builtin function dcl 36 ref 45 45 70 70 71 71 144 144 buffer_pad 24 based fixed bin(17,0) level 3 dcl 3-9 set ref 50* chan_map 36 based fixed bin(8,0) array level 2 packed unaligned dcl 3-9 set ref 64 65 65* chars 25 based structure level 2 packed unaligned dcl 3-9 clear 30(27) based char(1) level 3 packed unaligned dcl 3-9 ref 59 control_queued 12(07) based bit(1) level 3 packed unaligned dcl 3-93 set ref 145* controller_address 15 based fixed bin(17,0) level 2 dcl 3-9 set ref 47* controller_poll_address 16 based char(1) level 2 dcl 3-9 ref 47 47 controller_select_address 17 based char(1) level 2 dcl 3-9 ref 47 47 cur_write_chan 54 based fixed bin(17,0) level 2 dcl 3-9 set ref 68* debug 102(01) based bit(1) level 3 packed unaligned dcl 3-9 set ref 73* device_address 2 based char(1) level 2 dcl 3-93 ref 142 142 devx 3 based fixed bin(17,0) level 2 in structure "md" dcl 3-9 in procedure "ibm3270_dump_" set ref 45* devx based fixed bin(17,0) level 2 in structure "mde" dcl 3-93 in procedure "ibm3270_dump_" set ref 142* dialed 12(01) based bit(1) level 3 packed unaligned dcl 3-93 set ref 145* dialup_info 21 based structure level 2 dcl 3-9 end_of_page 12(08) based bit(1) level 3 packed unaligned dcl 3-93 set ref 145* eot_sent 102(08) based bit(1) level 3 packed unaligned dcl 3-9 set ref 73* erase_req 12(05) based bit(1) level 3 packed unaligned dcl 3-93 set ref 145* error_stat 63 based structure level 2 dcl 3-9 set ref 116 event_channel based fixed bin(71,0) level 2 dcl 3-9 ref 46 46 first_control_chan 47 based fixed bin(17,0) level 2 dcl 3-9 ref 103 106 first_poll_chan 56 based fixed bin(17,0) level 2 dcl 3-9 ref 90 93 first_write_chan 52 based fixed bin(17,0) level 2 dcl 3-9 ref 77 80 flags 102 based structure level 2 in structure "md" dcl 3-9 in procedure "ibm3270_dump_" flags 12 based structure level 2 in structure "mde" dcl 3-93 in procedure "ibm3270_dump_" formfeed_key 000104 automatic char(5) unaligned dcl 30 in procedure "ibm3270_dump_" set ref 56* 57* 58* 59* 60* 61* formfeed_key 33 based char(1) level 3 in structure "md" packed unaligned dcl 3-9 in procedure "ibm3270_dump_" ref 56 57 58 59 general_poll_address 20 based char(1) level 2 dcl 3-9 ref 47 47 hc_fast_lock based structure level 1 dcl 2-10 hndlquit 12(03) based bit(1) level 3 packed unaligned dcl 3-93 set ref 145* i 000100 automatic fixed bin(17,0) dcl 26 set ref 63* 64 64* 65 65* 65* 80* 80* 81 82* 83* 93* 93* 94 95* 96* 106* 106* 107 108* 109* ibm3270_meters based structure level 1 dcl 4-13 input_chain_ptr 60 based pointer level 2 dcl 3-9 ref 71 71 71 input_count 62 based fixed bin(17,0) level 2 dcl 3-9 set ref 71* input_reject 72 based fixed bin(35,0) level 3 dcl 3-9 set ref 125 125* ioa_ 000010 constant entry external dcl 34 ref 45 46 47 50 61 62 64 65 67 69 70 71 73 85 87 98 100 111 113 117 118 119 120 121 122 123 124 125 126 127 128 135 142 143 144 145 ioa_$nnl 000012 constant entry external dcl 34 ref 68 79 82 92 95 105 108 keyboard_restore 12(09) based bit(1) level 3 packed unaligned dcl 3-93 set ref 145* last_control_chan 50 based fixed bin(17,0) level 2 dcl 3-9 set ref 113 113* last_i 000101 automatic fixed bin(17,0) dcl 27 set ref 77* 83* 87 87* 90* 96* 100 100* 103* 109* 113 113* last_poll_address 46 based char(1) level 2 dcl 3-9 ref 67 67 last_poll_chan 57 based fixed bin(17,0) level 2 dcl 3-9 set ref 100 100* last_select_address 51 based char(1) level 2 dcl 3-9 ref 67 67 last_write_chan 53 based fixed bin(17,0) level 2 dcl 3-9 set ref 87 87* line_size 4 based fixed bin(17,0) level 2 dcl 3-93 set ref 143* line_type 21 based fixed bin(17,0) level 3 dcl 3-9 set ref 50* listen 12 based bit(1) level 3 packed unaligned dcl 3-93 set ref 145* loaded 102(03) based bit(1) level 3 packed unaligned dcl 3-9 set ref 73* loading 102(02) based bit(1) level 3 packed unaligned dcl 3-9 set ref 73* max_buf_size 23 based fixed bin(17,0) level 3 dcl 3-9 set ref 50* md based structure level 1 dcl 3-9 mde based structure level 1 dcl 3-93 mde_entry 103 based structure array level 2 dcl 3-9 set ref 81 94 107 141 mdep 000112 automatic pointer dcl 3-91 set ref 81* 84 94* 97 107* 110 141* 142 142 142 142 143 143 143 144 144 144 145 145 145 145 145 145 145 145 145 145 145 145 145 145 145 mdp 000110 automatic pointer dcl 3-6 set ref 42* 45 45 45 45 46 46 46 47 47 47 47 47 47 47 50 50 50 50 52 52 53 53 54 54 56 56 57 57 58 58 59 59 64 65 65 67 67 67 67 68 69 70 70 71 71 71 71 73 73 73 73 73 73 73 73 73 73 73 73 77 80 81 87 87 90 93 94 100 100 103 106 107 113 113 116 118 118 119 119 120 120 121 121 122 122 123 123 124 124 125 125 126 126 127 127 128 128 131 141 142 message_in_progress 102(07) based bit(1) level 3 packed unaligned dcl 3-9 set ref 73* nak_output 71 based fixed bin(35,0) level 3 dcl 3-9 set ref 124 124* name 4 based char(32) level 2 in structure "md" dcl 3-9 in procedure "ibm3270_dump_" set ref 45* 142* name 1 based char(3) level 2 in structure "mde" dcl 3-93 in procedure "ibm3270_dump_" set ref 142* nchan 14 based fixed bin(17,0) level 2 dcl 3-9 ref 131 needs_space 73 based fixed bin(35,0) level 3 dcl 3-9 set ref 126 126* next_control_chan 10 based fixed bin(17,0) level 2 dcl 3-93 ref 110 next_poll_chan 7 based fixed bin(17,0) level 2 dcl 3-93 ref 97 next_write_chan 6 based fixed bin(17,0) level 2 dcl 3-93 ref 84 null builtin function dcl 36 ref 69 71 144 output_in_progress 102(06) based bit(1) level 3 packed unaligned dcl 3-9 set ref 73* pa1 31 based char(1) level 3 packed unaligned dcl 3-9 ref 52 56 pa2 31(09) based char(1) level 3 packed unaligned dcl 3-9 ref 53 57 pa3 31(18) based char(1) level 3 packed unaligned dcl 3-9 ref 54 58 poll_failed 63 based fixed bin(35,0) level 3 dcl 3-9 set ref 118 118* poll_in_progress 102(05) based bit(1) level 3 packed unaligned dcl 3-9 set ref 73* position 5 based fixed bin(17,0) level 2 dcl 3-93 set ref 143* printer 12(02) based bit(1) level 3 packed unaligned dcl 3-93 set ref 145* processid 2 based bit(36) level 2 dcl 3-9 set ref 46* quit_key 32(27) based char(1) level 3 in structure "md" packed unaligned dcl 3-9 in procedure "ibm3270_dump_" ref 52 53 54 quit_key 000103 automatic char(3) unaligned dcl 29 in procedure "ibm3270_dump_" set ref 52* 53* 54* 55* 61* raw3270 12(12) based bit(1) level 3 packed unaligned dcl 3-93 set ref 145* raw3270_in_effect 12(13) based bit(1) level 3 packed unaligned dcl 3-93 set ref 145* rawi 12(11) based bit(1) level 3 packed unaligned dcl 3-93 set ref 145* rawo 12(10) based bit(1) level 3 packed unaligned dcl 3-93 set ref 145* rel builtin function dcl 36 ref 45 45 70 70 71 71 144 144 screen_size 3 based fixed bin(17,0) level 2 dcl 3-93 set ref 143* select_failed 67 based fixed bin(35,0) level 3 dcl 3-9 set ref 122 122* send_output 102(09) based bit(1) level 3 packed unaligned dcl 3-9 set ref 73* sound_alarm 12(06) based bit(1) level 3 packed unaligned dcl 3-93 set ref 145* space_available 74 based fixed bin(35,0) level 3 dcl 3-9 set ref 127 127* started 102(04) based bit(1) level 3 packed unaligned dcl 3-9 set ref 73* subchan 000102 automatic fixed bin(17,0) dcl 28 set ref 43* 131 131* 141 ttybp 000106 automatic pointer dcl 1-19 set ref 41* unspec builtin function dcl 36 ref 46 46 47 47 47 47 47 47 67 67 67 67 116 142 142 wack_select 70 based fixed bin(35,0) level 3 dcl 3-9 set ref 123 123* waiting_for_ready 12(04) based bit(1) level 3 packed unaligned dcl 3-93 set ref 145* write_abort 66 based fixed bin(35,0) level 3 dcl 3-9 set ref 121 121* write_chain_ptr 55 based pointer level 2 in structure "md" packed unaligned dcl 3-9 in procedure "ibm3270_dump_" ref 69 70 70 write_chain_ptr 11 based pointer level 2 in structure "mde" packed unaligned dcl 3-93 in procedure "ibm3270_dump_" ref 144 144 144 write_eot 65 based fixed bin(35,0) level 3 dcl 3-9 set ref 120 120* write_format_error 75 based fixed bin(35,0) level 3 dcl 3-9 set ref 128 128* write_queued 12(14) based bit(1) level 3 packed unaligned dcl 3-93 set ref 145* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. 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 IBM3270_METERS_VERSION_1 internal static fixed bin(17,0) initial dcl 4-30 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 address_table based char(1) array unaligned dcl 3-89 bsizec internal static fixed bin(17,0) initial dcl 1-28 buf_per_second internal static fixed bin(17,0) initial dcl 1-29 ibm3270_meter_struc based structure level 1 dcl 4-7 input_bpart internal static fixed bin(18,0) initial dcl 1-19 lock_ptr automatic pointer dcl 2-9 md_nchan automatic fixed bin(17,0) dcl 3-7 meter_ptr automatic pointer dcl 4-28 output_bpart internal static fixed bin(18,0) initial dcl 1-19 qblock_size internal static fixed bin(17,0) initial dcl 1-27 tty_buf based structure level 1 dcl 1-35 tty_buf$ external static fixed bin(17,0) dcl 1-19 tty_ev internal static fixed bin(17,0) initial dcl 1-19 NAMES DECLARED BY EXPLICIT CONTEXT. ibm3270_dump_ 000605 constant entry external dcl 14 print_mde 002514 constant entry internal dcl 138 ref 132 134 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 3046 3062 3010 3056 Length 3344 3010 14 245 36 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME ibm3270_dump_ 418 external procedure is an external procedure. print_mde internal procedure shares stack frame of external procedure ibm3270_dump_. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME ibm3270_dump_ 000100 i ibm3270_dump_ 000101 last_i ibm3270_dump_ 000102 subchan ibm3270_dump_ 000103 quit_key ibm3270_dump_ 000104 formfeed_key ibm3270_dump_ 000106 ttybp ibm3270_dump_ 000110 mdp ibm3270_dump_ 000112 mdep ibm3270_dump_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc return ext_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. ioa_ ioa_$nnl NO EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 14 000600 41 000612 42 000616 43 000621 45 000623 46 000655 47 000705 50 000751 52 001003 53 001017 54 001027 55 001037 56 001041 57 001047 58 001060 59 001071 60 001101 61 001104 62 001130 63 001145 64 001151 65 001205 66 001234 67 001236 68 001270 69 001311 70 001327 71 001352 73 001406 77 001516 79 001523 80 001541 81 001546 82 001552 83 001571 84 001573 85 001577 87 001610 90 001637 92 001644 93 001661 94 001666 95 001672 96 001711 97 001713 98 001717 100 001730 103 001757 105 001764 106 002001 107 002006 108 002012 109 002031 110 002033 111 002037 113 002050 116 002077 117 002104 118 002123 119 002146 120 002172 121 002216 122 002242 123 002270 124 002314 125 002340 126 002363 127 002411 128 002434 131 002462 132 002475 133 002476 134 002501 135 002502 136 002513 138 002514 141 002515 142 002522 143 002562 144 002611 145 002643 147 002772 ----------------------------------------------------------- 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