COMPILATION LISTING OF SEGMENT ws_channel_ Compiled by: Multics PL/I Compiler, Release 31a, of October 12, 1988 Compiled at: Honeywell Bull, Phoenix AZ, SysM Compiled on: 01/24/89 0850.8 mst Tue Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1987 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1987 * 6* * * 7* *********************************************************** */ 8 9 /* format: style4,indattr,ifthen,^indcomtxt,thendo,^indproc,^indblkcom,initcol1,declareind8,dclind4,struclvlind3,comcol55 */ 10 ws_channel_: 11 proc (); 12 13 14 /* PROGRAM FUNCTION 15* 16*This is a collection of entry points which are used to aid mowse in waiting 17*on specific events (wait channels). 18**/ 19 20 21 /* NOTES 22**/ 23 24 /****^ HISTORY COMMENTS: 25* 1) change(87-04-20,Flegel), approve(87-06-23,MCR7649), 26* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 27* Created. 28* END HISTORY COMMENTS */ 29 30 /* INPUT PARAMETERS */ 31 dcl p_wait_ptr ptr parameter; /* Channel control info */ 32 dcl p_iocb_ptr ptr parameter; /* Debug File */ 33 dcl p_caller char (*) parameter; /* Caller name */ 34 dcl p_channel fixed bin (71) aligned parameter; /* Channel ID */ 35 dcl p_mio_data_ptr ptr parameter; /* mowse_io_ info */ 36 37 /* OUTPUT PARAMETERS */ 38 39 /* MISC VARIABLES */ 40 dcl code fixed bin (35); 41 dcl mask bit (36) aligned; /* IPS mask */ 42 dcl mio_data_ptr ptr; /* mowse_io_data pointer */ 43 44 /* STRUCTURES */ 45 dcl 01 mio_data like mowse_io_data based (mio_data_ptr); 46 47 dcl 01 fatal_error_info aligned, 48 02 version fixed bin, /* Must be 0 */ 49 02 status_code fixed bin (35); /* Error code causing fatality */ 50 51 /* SYSTEM CALLS */ 52 dcl ipc_$unmask_ev_calls entry (fixed bin(35)); 53 dcl hcs_$wakeup entry (bit (36) aligned, fixed bin (71), fixed bin (71), fixed bin (35)); 54 dcl ipc_$block entry (ptr, ptr, fixed bin (35)); 55 dcl iox_$modes entry (ptr, char (*), char (*), fixed bin (35)); 56 dcl hcs_$reset_ips_mask entry (bit (36) aligned, bit (36) aligned); 57 dcl hcs_$set_ips_mask entry (bit (36) aligned, bit (36) aligned); 58 dcl terminate_process_ entry (char (*), ptr); 59 dcl create_ips_mask_ entry (ptr, fixed bin, bit (36) aligned); 60 dcl hcs_$get_ips_mask entry (bit (36) aligned); 61 62 /* SYSTEM CALL SUPPORT */ 63 dcl error_table_$unable_to_do_io fixed bin (35) ext static; 64 65 /* EXTERNAL CALLS */ 66 dcl ws_packet_transmitter_$supervisory entry (ptr, char(1)); 67 dcl ws_debug_$line entry () options (variable); 68 69 /* EXTERNAL CALL SUPPORT */ 70 71 /* BUILTINS */ 72 dcl byte builtin; 73 dcl bool builtin; 74 dcl addr builtin; 75 76 /* CONDITIONS */ 77 dcl mowse_io_error condition; 78 dcl cleanup condition; 79 80 /* CONSTANTS */ 81 dcl True bit (1) int static options (constant) init ("1"b); 82 dcl False bit (1) int static options (constant) init ("0"b); 83 84 /* */ 85 86 /* INITIALIZATION */ 87 88 /* MAIN */ 89 90 return; 91 92 /* */ 93 94 95 96 /* INTERNAL ENTRIES */ 97 98 99 /* *** Entry: call_wakeup - Internal entry for ws_channel_ *** */ 100 101 call_wakeup: 102 entry (p_mio_data_ptr, p_channel); 103 104 105 /* ENTRY FUNCTION 106* 107*Generate a wakeup on the specified channel which is a call event channel. 108**/ 109 110 /* NOTES 111* 112*This is NOT an async channel so control will not be given until something goes 113*blocked. 114**/ 115 116 mio_data_ptr = p_mio_data_ptr; 117 call hcs_$wakeup (mio_data.channel_info.process_id, p_channel, 118 0, (0)); 119 120 return; 121 122 /* */ 123 124 /* *** Entry: wait_block - Internal entry for ws_channel_ *** */ 125 126 wait_block: 127 entry (p_mio_data_ptr, p_wait_ptr, p_caller, p_iocb_ptr); 128 129 130 /* ENTRY FUNCTION 131* 132*Wait for an event to occur on the specified channel. 133**/ 134 135 /* NOTES 136**/ 137 138 mio_data_ptr = p_mio_data_ptr; 139 140 call check_ips_mask (); 141 142 /* Add myself to the count of blocked events */ 143 144 mask = ""b; 145 call hcs_$set_ips_mask (""b, mask); 146 p_wait_ptr -> wait_info.count = p_wait_ptr -> wait_info.count + 1; 147 on cleanup 148 p_wait_ptr -> wait_info.count = p_wait_ptr -> wait_info.count - 1; 149 call hcs_$reset_ips_mask (mask, mask); 150 151 /* Block */ 152 153 call ws_debug_$line (p_iocb_ptr, "vvv blocking: ^a (^d)", p_caller, 154 p_wait_ptr -> wait_info.count); 155 156 call wait_block_handle (p_wait_ptr -> wait_info.channel); 157 158 call ws_debug_$line (p_iocb_ptr, "^^^^^^ unblocking: ^a (^d)", 159 p_caller, p_wait_ptr -> wait_info.count); 160 161 /* Remove from the list of blocked on user_input */ 162 163 p_wait_ptr -> wait_info.flags.transmitted = False; 164 p_wait_ptr -> wait_info.count = p_wait_ptr -> wait_info.count - 1; 165 166 return; 167 168 /* */ 169 170 /* *** Entry: user_input_wakeup - Internal entry for ws_channel_ *** */ 171 172 wait_wakeup: 173 entry (p_mio_data_ptr, p_wait_ptr); 174 175 176 /* ENTRY FUNCTION 177* 178*Issue a wakeup on the wait channel if there is something waiting on it. 179**/ 180 181 /* NOTES 182**/ 183 184 mio_data_ptr = p_mio_data_ptr; 185 186 if p_wait_ptr -> wait_info.count > 0 187 & ^p_wait_ptr -> wait_info.flags.transmitted 188 then do; 189 p_wait_ptr -> wait_info.flags.transmitted = True; 190 call hcs_$wakeup (mio_data.channel_info.process_id, 191 p_wait_ptr -> wait_info.channel, 0, code); 192 if code ^= 0 then 193 signal mowse_io_error; 194 end; 195 196 return; 197 198 /* */ 199 200 201 202 /* INTERNAL PROCEDURES */ 203 204 205 /* *** Procedure: check_ips_mask - Internal proc for ws_channel_ *** */ 206 207 check_ips_mask: 208 proc (); 209 210 211 /* PROCEDURE FUNCTION 212* 213*When blocking on a channel, the alrm_ mask cannot be masked, otherwise a wakeup 214*will never be seen on the channel. If this condition occurs, the process is 215*terminated and the remote is notified. 216* 217*In addition, event calls (ipc_$mask_ev_calls) cannot be set. 218**/ 219 220 /* NOTES 221**/ 222 223 /* INPUT PARAMETERS */ 224 225 /* OUTPUT PARAMETERS */ 226 227 /* MISC VARIABLES */ 228 dcl mask_array (2) char (32) aligned; /* Array of IPS names */ 229 dcl mask bit (36) aligned; /* Current IPS mask */ 230 dcl test_mask bit (36) aligned; /* IPS test mask */ 231 dcl code fixed bin (35); 232 233 /* STRUCTURES */ 234 235 /* INITIALIZATION */ 236 test_mask = ""b; 237 mask = ""b; 238 mask_array (1) = "wkp_"; 239 mask_array (2) = "alrm"; 240 241 /* MAIN */ 242 243 call hcs_$get_ips_mask (mask); 244 call create_ips_mask_ (addr (mask_array), 2, test_mask); 245 if bool (^mask, ^test_mask, And) then 246 goto FATAL_IO_ERROR; 247 248 call ipc_$unmask_ev_calls (code); 249 if code = 0 then 250 goto FATAL_IO_ERROR; 251 252 return; 253 254 FATAL_IO_ERROR: 255 call ws_packet_transmitter_$supervisory (mio_data_ptr, 256 byte (FastDis)); 257 call iox_$modes (mio_data.iocb_ptr, mio_data.old_modes, "", 0); 258 fatal_error_info.version = 0; 259 fatal_error_info.status_code = error_table_$unable_to_do_io; 260 call terminate_process_ ("fatal_error", addr (fatal_error_info)); 261 262 end check_ips_mask; 263 264 /* */ 265 266 /* *** Procedure: wait_block_handle - Internal proc for ws_channel_ *** */ 267 268 wait_block_handle: 269 proc (p_channel_id); 270 271 272 /* PROCEDURE FUNCTION 273* 274*Wait on the specified channel for a wakeup. 275**/ 276 277 /* NOTES 278**/ 279 280 /* INPUT PARAMETERS */ 281 dcl p_channel_id fixed bin (71) aligned parameter; /* Channel to wait on */ 282 283 /* OUTPUT PARAMETERS */ 284 285 /* MISC VARIABLES */ 286 dcl code fixed bin (35); 287 288 /* STRUCTURES */ 289 dcl 01 ewc like event_wait_channel aligned automatic; 290 dcl 01 ewi like event_wait_info aligned automatic; 291 292 /* INITIALIZATION */ 293 294 /* MAIN */ 295 296 ewc.n_channels = 1; 297 ewc.pad = ""b; 298 ewc.channel_id = p_channel_id; 299 300 call ipc_$block (addr (ewc), addr (ewi), code); 301 if code ^= 0 then 302 signal mowse_io_error; 303 304 end wait_block_handle; 305 306 /* */ 307 308 309 310 /* INCLUDE FILES */ 1 1 /* BEGIN INCLUDE FILE: mowse_io_constants.incl.pl1 * * * * * * * * * * * * */ 1 2 1 3 /****^ HISTORY COMMENTS: 1 4* 1) change(86-11-06,Flegel), approve(87-07-15,MCR7580), 1 5* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 1 6* Created. 1 7* 2) change(86-11-27,Flegel), approve(86-11-27,MCR7580), 1 8* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 1 9* Approved. 1 10* END HISTORY COMMENTS */ 1 11 1 12 /* Protocol constants */ 1 13 /* format: style4,indattr,ifthen,^indcomtxt,thendo,^indproc,^indblkcom,initcol1,declareind8,dclind4,struclvlind3,comcol55 */ 1 14 dcl INIT_CRC fixed bin int static options (constant) init (63); 1 15 dcl CONVERT_CRC fixed bin int static options (constant) init (32); 1 16 dcl REVPOLY fixed bin int static options (constant) init (101001b); /* Bit N is coeff of x**(5-N) of generator */ 1 17 dcl OR bit (4) int static options (constant) init ("0111"b); 1 18 dcl XOR bit (4) int static options (constant) init ("0110"b); 1 19 dcl And bit (4) int static options (constant) init ("0001"b); 1 20 1 21 /* Debugging Switches */ 1 22 dcl DBGPKTS bit (1) int static options (constant) init ("0"b); 1 23 /* show packets */ 1 24 dcl DBGREJS bit (1) int static options (constant) init ("1"b); 1 25 /* diagnose rejects */ 1 26 dcl DBGXCHRS bit (1) int static options (constant) init ("0"b); 1 27 /* show extraneous received chars */ 1 28 1 29 /* ASCII Control Characters */ 1 30 1 31 dcl CR char (1) int static options (constant) 1 32 init (" "); 1 33 dcl ESC char (1) int static options (constant) 1 34 init (""); 1 35 dcl LF char (1) int static options (constant) 1 36 init (" 1 37 "); 1 38 dcl SI char (1) int static options (constant) 1 39 init (""); 1 40 dcl SO char (1) int static options (constant) 1 41 init (""); 1 42 dcl SOH char (1) int static options (constant) 1 43 init (""); 1 44 1 45 /* Protocol Bit-field Constants */ 1 46 dcl ChnCnt fixed bin int static options (constant) init (2); 1 47 /* no. logical channels */ 1 48 dcl SeqFld fixed bin int static options (constant) init (2); 1 49 /* no. bits in seq. field */ 1 50 dcl SeqCnt fixed bin int static options (constant) init (4); 1 51 /* 2**SeqFld */ 1 52 dcl SeqMsk fixed bin int static options (constant) init (3); 1 53 /* SeqCnt-1 */ 1 54 1 55 /* Protocol Byte-field Constants */ 1 56 dcl MaxDatLen fixed bin int static options (constant) init (124); 1 57 /* Maximum packet length */ 1 58 dcl SOPLen fixed bin int static options (constant) init (1); 1 59 /* Characters in SOP field */ 1 60 dcl TypLen fixed bin int static options (constant) init (1); 1 61 /* Characters in type field */ 1 62 dcl ChkLen fixed bin int static options (constant) init (1); 1 63 /* Characters in check field */ 1 64 dcl LenLen fixed bin int static options (constant) init (1); 1 65 /* Characters in length field */ 1 66 dcl EOPLen fixed bin int static options (constant) init (1); 1 67 /* Characters in EOP field */ 1 68 dcl MinPktLen fixed bin int static options (constant) init (5); 1 69 /* SOPLen+TypLen+LenLen+ChkLen+EOPLen */ 1 70 dcl MaxPktLen fixed bin int static options (constant) init (129); 1 71 /* MinPktLen+MaxDatLen */ 1 72 1 73 /* Protocol Packet Type Constants */ 1 74 dcl RstOff fixed bin (8) int static options (constant) 1 75 init (32); /* */ 1 76 dcl Request fixed bin (8) int static options (constant) 1 77 init (0); 1 78 dcl Confirm fixed bin (8) int static options (constant) 1 79 init (1); 1 80 dcl RstCnt fixed bin (8) int static options (constant) 1 81 init (2); /* Confirm+1 */ 1 82 dcl FGBrk fixed bin (8) int static options (constant) 1 83 init (36); /* BrkOff+2*FG*/ 1 84 dcl DisCon fixed bin (8) int static options (constant) 1 85 init (34); /* BrkOff+2*BG */ 1 86 dcl FastDis fixed bin (8) int static options (constant) 1 87 init (86); /* NakOff+NakCnt */ 1 88 dcl BrkOff fixed bin (8) int static options (constant) 1 89 init (34); /* RstOff+RstCnt */ 1 90 dcl BrkCnt fixed bin (8) int static options (constant) 1 91 init (4); /* ChnCnt*(Confirm+1) */ 1 92 dcl DatOff fixed bin (8) int static options (constant) 1 93 init (38); /* BrkOff+BrkCnt */ 1 94 dcl DatCnt fixed bin (8) int static options (constant) 1 95 init (32); /* ChnCnt*SeqCnt*SeqCnt */ 1 96 dcl AckOff fixed bin (8) int static options (constant) 1 97 init (70); /* DatOff+DatCnt */ 1 98 dcl AckCnt fixed bin (8) int static options (constant) 1 99 init (8); /* ChnCnt*SeqCnt */ 1 100 dcl NakOff fixed bin (8) int static options (constant) 1 101 init (78); /* AckOff+AckCnt */ 1 102 dcl NakCnt fixed bin (8) int static options (constant) 1 103 init (8); /* ChnCnt*SeqCnt */ 1 104 1 105 /* Protocol Parameters */ 1 106 dcl RQS fixed bin int static options (constant) init (2); 1 107 /* rcvchr's queue size (upper bound of r_pkt) */ 1 108 dcl RWS fixed bin int static options (constant) init (3); 1 109 /* Receiver's window size (upper bound of r_dat */ 1 110 dcl SWS fixed bin int static options (constant) init (3); 1 111 /* Sender's window size (upper bound of s_dat */ 1 112 dcl Lim_r_timer fixed bin int static options (constant) init (7); 1 113 /* Limit for r_timer */ 1 114 dcl Lim_s_timer fixed bin int static options (constant) init (15); 1 115 /* Limit for s_timer */ 1 116 dcl Lim_p_timer fixed bin int static options (constant) init (30); 1 117 /* Limit for pending_timer */ 1 118 dcl Timer_Interval fixed bin (71) int static options (constant) 1 119 init (125000); /* Next wakeup of timer */ 1 120 1 121 /* Tasking priority values */ 1 122 dcl Modem_Reader_Task fixed bin int static options (constant) init (0); 1 123 /* Modem Reader */ 1 124 dcl FG_task fixed bin int static options (constant) init (1); 1 125 /* FG processing */ 1 126 dcl BG_task fixed bin int static options (constant) init (2); 1 127 /* BG processing */ 1 128 dcl Idle bit (1) int static options (constant) init ("0"b); 1 129 /* Task not executing */ 1 130 1 131 /* Capability constants */ 1 132 dcl NO_MINOR fixed bin int static options (constant) init (-1); 1 133 1 134 /* WSTERM modes string indices */ 1 135 1 136 dcl WST_INIT_PL fixed bin int static options (constant) init (23); 1 137 dcl WST_INIT_LL fixed bin int static options (constant) init (79); 1 138 1 139 dcl WST_HEADER_1 fixed bin int static options (constant) init (1); 1 140 dcl WST_HEADER_2 fixed bin int static options (constant) init (2); 1 141 dcl WST_HEADER_3 fixed bin int static options (constant) init (3); 1 142 dcl WST_LENGTH_HIGH fixed bin int static options (constant) init (4); 1 143 dcl WST_LENGTH_LOW fixed bin int static options (constant) init (5); 1 144 dcl WST_MODES fixed bin int static options (constant) init (6); 1 145 dcl WST_KILL fixed bin int static options (constant) init (7); 1 146 dcl WST_ERASE fixed bin int static options (constant) init (8); 1 147 dcl WST_ESCAPE fixed bin int static options (constant) init (9); 1 148 dcl WST_LINE_LENGTH fixed bin int static options (constant) init (10); 1 149 dcl WST_PAGE_LENGTH fixed bin int static options (constant) init (11); 1 150 1 151 /* END INCLUDE FILE: mowse_io_constants.incl.pl1 * * * * * * * * * * * * */ 311 2 1 /* BEGIN INCLUDE FILE event_wait_info.incl.pl1 */ 2 2 2 3 /* T. Casey, May 1978 */ 2 4 2 5 dcl event_wait_info_ptr ptr; 2 6 2 7 dcl 1 event_wait_info aligned based (event_wait_info_ptr), /* argument structure filled in on return from ipc_$block */ 2 8 2 channel_id fixed bin (71), /* event channel on which wakeup occurred */ 2 9 2 message fixed bin (71), /* 72 bits of information passed by sender of wakeup */ 2 10 2 sender bit (36), /* process id of sender */ 2 11 2 origin, 2 12 3 dev_signal bit (18) unaligned, /* "1"b if device signal */ 2 13 3 ring fixed bin (17) unaligned, /* ring from which sent */ 2 14 2 channel_index fixed bin; /* index of this channel in the event wait list */ 2 15 2 16 /* END INCLUDE FILE event_wait_info.incl.pl1 */ 312 3 1 /* BEGIN INCLUDE FILE ... event_wait_channel.incl.pl1 */ 3 2 3 3 /* ipc_$block wait list with one channel 3 4* 3 5* Written 9-May-79 by M. N. Davidoff. 3 6**/ 3 7 3 8 declare 1 event_wait_channel aligned, 3 9 2 n_channels fixed bin initial (1), /* number of channels */ 3 10 2 pad bit (36), 3 11 2 channel_id (1) fixed bin (71); /* event channel to wait on */ 3 12 3 13 /* END INCLUDE FILE ... event_wait_channel.incl.pl1 */ 313 4 1 /* BEGIN INCLUDE FILE: mowse_io_data.incl.pl1 * * * * * * * * * * * * */ 4 2 4 3 /****^ HISTORY COMMENTS: 4 4* 1) change(87-04-16,Flegel), approve(87-07-15,MCR7580), 4 5* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 4 6* Created. 4 7* 2) change(87-06-23,Flegel), approve(87-06-23,MCR7649), 4 8* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 4 9* Converted to support the use of event channels. 4 10* 3) change(88-10-06,Flegel), approve(88-11-16,MCR8023), audit(88-12-12,Lee), 4 11* install(89-01-24,MR12.3-1012): 4 12* phx21215 - Added mowse_io_data.channel_info.foreground to use to generate 4 13* events when something happens in the foreground. 4 14* END HISTORY COMMENTS */ 4 15 4 16 /* format: style4,indattr,ifthen,^indcomtxt,thendo,^indproc,^indblkcom,initcol1,declareind8,dclind4,struclvlind3,comcol55 */ 4 17 dcl mowse_io_data_ptr ptr; 4 18 dcl 01 mowse_io_data based (mowse_io_data_ptr), 4 19 02 open_descrip char (19) var, 4 20 02 iocb_ptr ptr aligned, /* mowse_tty iocb pointer */ 4 21 02 default_iocb_ptr ptr aligned, /* mowse_i/o iocb pointer */ 4 22 02 attach_descrip char (256) var, /* Attach description */ 4 23 02 old_modes char (256) unal, /* Modes on previous iocb */ 4 24 4 25 02 current_modes char (256) unal, /* Current mode settings */ 4 26 02 WSTERM_modes (11) char (1), /* Encoded modes for WSTERM */ 4 27 02 cv_trans_struc_ptr ptr, /* Conversion table pointer */ 4 28 4 29 02 info_ptr ptr, /* Application control info seg */ 4 30 02 mcb_ptr ptr, /* Internal MCB to MOWSE */ 4 31 02 sleepers ptr, /* Queue of sleeping applications */ 4 32 02 dozers fixed bin (35), /* Number of unhandled sleeper wakeups */ 4 33 4 34 02 ws, /* Vidoe system control */ 4 35 03 flags, 4 36 04 trace bit (1) unal, 4 37 04 debug bit (1) unal, 4 38 04 mark_set bit (1) unal, 4 39 04 video_mode bit (1) unal, /* State (on/off) of video */ 4 40 04 more_input bit (1) unal, /* Last read unfinished */ 4 41 04 pad bit (31) unal, 4 42 03 read_count fixed bin (17), /* count of unfinished read commands sent */ 4 43 03 ips_mask bit (36) aligned, 4 44 4 45 02 sus_data, /* sus_ information */ 4 46 03 sus_entry ptr, /* Saved sus_ signal handler */ 4 47 03 activated bit (1) unal, /* If sus_ has been signaled */ 4 48 03 pad bit (35) unal, 4 49 4 50 02 channel_info, /* Event channel info */ 4 51 03 process_id bit (36) aligned, /* This process */ 4 52 03 wake_info, 4 53 04 wake_map (0:127) bit (1) unal, /* Break chars */ 4 54 04 pad bit (16) unal, 4 55 03 user_input like wait_info, /* Input wait channel */ 4 56 03 packet_transmitter like wait_info, /* Write events */ 4 57 03 packet_receiver, /* hcs_ events */ 4 58 04 channel fixed bin (71), /* Channel id */ 4 59 03 packet_dispatcher, /* Dispatch channels */ 4 60 04 sync_channel fixed bin (71), /* Process when quiet */ 4 61 04 async_channel fixed bin (71), /* Process NOW! */ 4 62 03 foreground, /* MF - phx21215 - read/write_status, get_event_channel info */ 4 63 04 channel fixed bin (71), /* Event channel */ 4 64 4 65 02 debug_iocb_ptr ptr, /* Debug file IOCB */ 4 66 02 trace_iocb_ptr ptr, /* Trace file IOCB */ 4 67 4 68 02 timer_info (8), 4 69 03 wakeup fixed bin (71), /* Seconds from last in queue */ 4 70 03 timer_id fixed bin, /* Who owns this wakeup */ 4 71 4 72 02 switches, /* Control switches */ 4 73 03 quit_enable bit (1) unal, /* Quit processing state */ 4 74 03 reset_write bit (1) unal, /* resetwrite requested */ 4 75 03 disconnect_active bit (1) unal, /* Disconnection occuring */ 4 76 03 rs_pending (2) bit (1) unal, /* Reset occuring */ 4 77 03 ds_pending (2) bit (1) unal, /* Disconnect occuring */ 4 78 03 br_pending bit (1) unal, /* Break occurring */ 4 79 03 brk_pending bit (1) unal, /* Break occuring (quit) */ 4 80 03 info_stored bit (1) unal, /* Info segment stored */ 4 81 03 connect_active bit (1) unal, /* Connection in progress */ 4 82 03 start_issued bit (1) unal, /* Indicates start order pending */ 4 83 03 pad bit (24) unal, 4 84 4 85 02 task, 4 86 03 active (0:2) bit (1) unal, /* Tasks which are active */ 4 87 03 pad bit (33) unal, 4 88 4 89 02 user_input, /* User_i/o input data */ 4 90 03 in fixed bin (21), /* Next free slot in repository */ 4 91 03 out fixed bin (21), /* Head of data */ 4 92 03 queue (0:4095) char (1), /* Repository */ 4 93 4 94 02 l_dat (0:1), /* Local data message queue */ 4 95 03 in_ptr ptr, /* Incoming messages */ 4 96 03 out_ptr ptr, /* Outgoing messages */ 4 97 4 98 02 r, /* Receiver data */ 4 99 03 eop char (1), /* End of packet character */ 4 100 03 sop char (1), /* Start of packet character */ 4 101 03 esc (0:2) char (1), /* 3 escape characters */ 4 102 03 esc_count fixed bin, /* Number of escaped chars in received packet */ 4 103 03 asn (0:1) fixed bin (3), /* Acknowledge sequence number */ 4 104 03 dat (0:1, 0:3) char (124) var, /* Data queues */ 4 105 03 pkt (0:2) char (129) var, /* Packet queue */ 4 106 03 pktin fixed bin, /* Next packet character in */ 4 107 03 pktout fixed bin, /* Head of packet */ 4 108 03 psn (0:1) fixed bin, /* SN for each channel */ 4 109 03 esckey bit (9) unal, /* Decoding 2nd character escape */ 4 110 03 ignoring (0:1) bit (1) unal, /* Ignore data during synchronization */ 4 111 03 pad bit (25) unal, 4 112 4 113 02 s, /* Sender data */ 4 114 03 eop char (1), /* End of packet character */ 4 115 03 sop char (1), /* Start of packet character */ 4 116 03 esc (0:2) char (1), /* 3 escape characters */ 4 117 03 dat (0:1, 0:3) char (124) var, /* Data queue */ 4 118 03 psn (0:1) fixed bin (3), /* Packet sequence number */ 4 119 03 lasn (0:1) fixed bin (3), /* Last ack sent */ 4 120 03 nasn (0:1) fixed bin (3), /* Next ack to be sent */ 4 121 03 escreq (0:255) bit (1) unal, /* Characters to be escaped */ 4 122 03 pad bit (32) unal; 4 123 4 124 /* Wait channel control struncture */ 4 125 4 126 dcl 01 wait_info based, 4 127 02 channel fixed bin (71) aligned, /* Channel ID */ 4 128 02 count fixed bin, /* Waiting count */ 4 129 02 flags, 4 130 03 transmitted bit (1) unal, /* Wakeup already generated */ 4 131 03 pad bit (35) unal; 4 132 4 133 /* END INCLUDE FILE: mowse_io_data.incl.pl1 * * * * * * * * * * * * */ 314 315 316 end; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 01/24/89 0847.1 ws_channel_.pl1 >spec>install>MR12.3-1012>ws_channel_.pl1 311 1 08/10/87 1336.7 mowse_io_constants.incl.pl1 >ldd>include>mowse_io_constants.incl.pl1 312 2 06/29/79 1727.8 event_wait_info.incl.pl1 >ldd>include>event_wait_info.incl.pl1 313 3 06/29/79 1728.0 event_wait_channel.incl.pl1 >ldd>include>event_wait_channel.incl.pl1 314 4 01/24/89 0847.4 mowse_io_data.incl.pl1 >spec>install>MR12.3-1012>mowse_io_data.incl.pl1 NAMES DECLARED IN THIS COMPILATION. IDENTIFIER OFFSET LOC STORAGE CLASS DATA TYPE ATTRIBUTES AND REFERENCES (* indicates a set context) NAMES DECLARED BY DECLARE STATEMENT. And constant bit(4) initial packed unaligned dcl 1-19 ref 245 False constant bit(1) initial packed unaligned dcl 82 ref 163 FastDis constant fixed bin(8,0) initial dcl 1-86 ref 254 254 True constant bit(1) initial packed unaligned dcl 81 ref 189 addr builtin function dcl 74 ref 244 244 260 260 300 300 300 300 bool builtin function dcl 73 ref 245 byte builtin function dcl 72 ref 254 254 channel based fixed bin(71,0) level 2 dcl 4-126 set ref 156* 190* channel_id 2 000170 automatic fixed bin(71,0) array level 2 dcl 289 set ref 298* channel_info 336 based structure level 2 unaligned dcl 45 cleanup 000114 stack reference condition dcl 78 ref 147 code 000166 automatic fixed bin(35,0) dcl 286 in procedure "wait_block_handle" set ref 300* 301 code 000100 automatic fixed bin(35,0) dcl 40 in procedure "ws_channel_" set ref 190* 192 code 000156 automatic fixed bin(35,0) dcl 231 in procedure "check_ips_mask" set ref 248* 249 count 2 based fixed bin(17,0) level 2 dcl 4-126 set ref 146* 146 147* 147 153* 158* 164* 164 186 create_ips_mask_ 000026 constant entry external dcl 59 ref 244 error_table_$unable_to_do_io 000032 external static fixed bin(35,0) dcl 63 ref 259 event_wait_channel 000122 automatic structure level 1 dcl 3-8 event_wait_info based structure level 1 dcl 2-7 ewc 000170 automatic structure level 1 dcl 289 set ref 300 300 ewi 000174 automatic structure level 1 dcl 290 set ref 300 300 fatal_error_info 000104 automatic structure level 1 dcl 47 set ref 260 260 flags 3 based structure level 2 packed packed unaligned dcl 4-126 hcs_$get_ips_mask 000030 constant entry external dcl 60 ref 243 hcs_$reset_ips_mask 000020 constant entry external dcl 56 ref 149 hcs_$set_ips_mask 000022 constant entry external dcl 57 ref 145 hcs_$wakeup 000012 constant entry external dcl 53 ref 117 190 iocb_ptr 6 based pointer level 2 dcl 45 set ref 257* iox_$modes 000016 constant entry external dcl 55 ref 257 ipc_$block 000014 constant entry external dcl 54 ref 300 ipc_$unmask_ev_calls 000010 constant entry external dcl 52 ref 248 mask 000154 automatic bit(36) dcl 229 in procedure "check_ips_mask" set ref 237* 243* 245 mask 000101 automatic bit(36) dcl 41 in procedure "ws_channel_" set ref 144* 145* 149* 149* mask_array 000134 automatic char(32) array dcl 228 set ref 238* 239* 244 244 mio_data based structure level 1 unaligned dcl 45 mio_data_ptr 000102 automatic pointer dcl 42 set ref 116* 117 138* 184* 190 254* 257 257 mowse_io_data based structure level 1 unaligned dcl 4-18 mowse_io_error 000106 stack reference condition dcl 77 ref 192 301 n_channels 000170 automatic fixed bin(17,0) initial level 2 in structure "ewc" dcl 289 in procedure "wait_block_handle" set ref 289* 296* n_channels 000122 automatic fixed bin(17,0) initial level 2 in structure "event_wait_channel" dcl 3-8 in procedure "ws_channel_" set ref 3-8* old_modes 113 based char(256) level 2 packed packed unaligned dcl 45 set ref 257* p_caller parameter char packed unaligned dcl 33 set ref 126 153* 158* p_channel parameter fixed bin(71,0) dcl 34 set ref 101 117* p_channel_id parameter fixed bin(71,0) dcl 281 ref 268 298 p_iocb_ptr parameter pointer dcl 32 set ref 126 153* 158* p_mio_data_ptr parameter pointer dcl 35 ref 101 116 126 138 172 184 p_wait_ptr parameter pointer dcl 31 ref 126 146 146 147 147 153 156 158 163 164 164 172 186 186 189 190 pad 1 000170 automatic bit(36) level 2 dcl 289 set ref 297* process_id 336 based bit(36) level 3 dcl 45 set ref 117* 190* status_code 1 000104 automatic fixed bin(35,0) level 2 dcl 47 set ref 259* terminate_process_ 000024 constant entry external dcl 58 ref 260 test_mask 000155 automatic bit(36) dcl 230 set ref 236* 244* 245 transmitted 3 based bit(1) level 3 packed packed unaligned dcl 4-126 set ref 163* 186 189* version 000104 automatic fixed bin(17,0) level 2 dcl 47 set ref 258* wait_info based structure level 1 unaligned dcl 4-126 ws_debug_$line 000036 constant entry external dcl 67 ref 153 158 ws_packet_transmitter_$supervisory 000034 constant entry external dcl 66 ref 254 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. AckCnt internal static fixed bin(8,0) initial dcl 1-98 AckOff internal static fixed bin(8,0) initial dcl 1-96 BG_task internal static fixed bin(17,0) initial dcl 1-126 BrkCnt internal static fixed bin(8,0) initial dcl 1-90 BrkOff internal static fixed bin(8,0) initial dcl 1-88 CONVERT_CRC internal static fixed bin(17,0) initial dcl 1-15 CR internal static char(1) initial packed unaligned dcl 1-31 ChkLen internal static fixed bin(17,0) initial dcl 1-62 ChnCnt internal static fixed bin(17,0) initial dcl 1-46 Confirm internal static fixed bin(8,0) initial dcl 1-78 DBGPKTS internal static bit(1) initial packed unaligned dcl 1-22 DBGREJS internal static bit(1) initial packed unaligned dcl 1-24 DBGXCHRS internal static bit(1) initial packed unaligned dcl 1-26 DatCnt internal static fixed bin(8,0) initial dcl 1-94 DatOff internal static fixed bin(8,0) initial dcl 1-92 DisCon internal static fixed bin(8,0) initial dcl 1-84 EOPLen internal static fixed bin(17,0) initial dcl 1-66 ESC internal static char(1) initial packed unaligned dcl 1-33 FGBrk internal static fixed bin(8,0) initial dcl 1-82 FG_task internal static fixed bin(17,0) initial dcl 1-124 INIT_CRC internal static fixed bin(17,0) initial dcl 1-14 Idle internal static bit(1) initial packed unaligned dcl 1-128 LF internal static char(1) initial packed unaligned dcl 1-35 LenLen internal static fixed bin(17,0) initial dcl 1-64 Lim_p_timer internal static fixed bin(17,0) initial dcl 1-116 Lim_r_timer internal static fixed bin(17,0) initial dcl 1-112 Lim_s_timer internal static fixed bin(17,0) initial dcl 1-114 MaxDatLen internal static fixed bin(17,0) initial dcl 1-56 MaxPktLen internal static fixed bin(17,0) initial dcl 1-70 MinPktLen internal static fixed bin(17,0) initial dcl 1-68 Modem_Reader_Task internal static fixed bin(17,0) initial dcl 1-122 NO_MINOR internal static fixed bin(17,0) initial dcl 1-132 NakCnt internal static fixed bin(8,0) initial dcl 1-102 NakOff internal static fixed bin(8,0) initial dcl 1-100 OR internal static bit(4) initial packed unaligned dcl 1-17 REVPOLY internal static fixed bin(17,0) initial dcl 1-16 RQS internal static fixed bin(17,0) initial dcl 1-106 RWS internal static fixed bin(17,0) initial dcl 1-108 Request internal static fixed bin(8,0) initial dcl 1-76 RstCnt internal static fixed bin(8,0) initial dcl 1-80 RstOff internal static fixed bin(8,0) initial dcl 1-74 SI internal static char(1) initial packed unaligned dcl 1-38 SO internal static char(1) initial packed unaligned dcl 1-40 SOH internal static char(1) initial packed unaligned dcl 1-42 SOPLen internal static fixed bin(17,0) initial dcl 1-58 SWS internal static fixed bin(17,0) initial dcl 1-110 SeqCnt internal static fixed bin(17,0) initial dcl 1-50 SeqFld internal static fixed bin(17,0) initial dcl 1-48 SeqMsk internal static fixed bin(17,0) initial dcl 1-52 Timer_Interval internal static fixed bin(71,0) initial dcl 1-118 TypLen internal static fixed bin(17,0) initial dcl 1-60 WST_ERASE internal static fixed bin(17,0) initial dcl 1-146 WST_ESCAPE internal static fixed bin(17,0) initial dcl 1-147 WST_HEADER_1 internal static fixed bin(17,0) initial dcl 1-139 WST_HEADER_2 internal static fixed bin(17,0) initial dcl 1-140 WST_HEADER_3 internal static fixed bin(17,0) initial dcl 1-141 WST_INIT_LL internal static fixed bin(17,0) initial dcl 1-137 WST_INIT_PL internal static fixed bin(17,0) initial dcl 1-136 WST_KILL internal static fixed bin(17,0) initial dcl 1-145 WST_LENGTH_HIGH internal static fixed bin(17,0) initial dcl 1-142 WST_LENGTH_LOW internal static fixed bin(17,0) initial dcl 1-143 WST_LINE_LENGTH internal static fixed bin(17,0) initial dcl 1-148 WST_MODES internal static fixed bin(17,0) initial dcl 1-144 WST_PAGE_LENGTH internal static fixed bin(17,0) initial dcl 1-149 XOR internal static bit(4) initial packed unaligned dcl 1-18 event_wait_info_ptr automatic pointer dcl 2-5 mowse_io_data_ptr automatic pointer dcl 4-17 NAMES DECLARED BY EXPLICIT CONTEXT. FATAL_IO_ERROR 000470 constant label dcl 254 ref 245 249 call_wakeup 000065 constant entry external dcl 101 check_ips_mask 000405 constant entry internal dcl 207 ref 140 wait_block 000125 constant entry external dcl 126 wait_block_handle 000562 constant entry internal dcl 268 ref 156 wait_wakeup 000335 constant entry external dcl 172 ws_channel_ 000052 constant entry external dcl 10 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1050 1110 633 1060 Length 1400 633 40 253 214 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME ws_channel_ 224 external procedure is an external procedure. on unit on line 147 64 on unit check_ips_mask internal procedure shares stack frame of external procedure ws_channel_. wait_block_handle internal procedure shares stack frame of external procedure ws_channel_. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME ws_channel_ 000100 code ws_channel_ 000101 mask ws_channel_ 000102 mio_data_ptr ws_channel_ 000104 fatal_error_info ws_channel_ 000122 event_wait_channel ws_channel_ 000134 mask_array check_ips_mask 000154 mask check_ips_mask 000155 test_mask check_ips_mask 000156 code check_ips_mask 000166 code wait_block_handle 000170 ewc wait_block_handle 000174 ewi wait_block_handle THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out return_mac signal_op enable_op ext_entry ext_entry_desc int_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. create_ips_mask_ hcs_$get_ips_mask hcs_$reset_ips_mask hcs_$set_ips_mask hcs_$wakeup iox_$modes ipc_$block ipc_$unmask_ev_calls terminate_process_ ws_debug_$line ws_packet_transmitter_$supervisory THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$unable_to_do_io LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 3 8 000045 10 000051 90 000060 101 000061 116 000073 117 000077 120 000117 126 000120 138 000141 140 000145 144 000146 145 000147 146 000162 147 000166 149 000211 153 000221 156 000255 158 000265 163 000321 164 000326 166 000330 172 000331 184 000343 186 000347 189 000356 190 000360 192 000377 196 000404 207 000405 236 000406 237 000407 238 000410 239 000413 243 000416 244 000425 245 000444 248 000456 249 000465 252 000467 254 000470 257 000504 258 000533 259 000534 260 000537 262 000561 268 000562 289 000564 297 000566 298 000567 300 000605 301 000624 304 000631 ----------------------------------------------------------- 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