COMPILATION LISTING OF SEGMENT g115_as_ Compiled by: Multics PL/I Compiler, Release 25b, of November 27, 1979 Compiled at: Honeywell LISD Phoenix, System M Compiled on: 02/06/80 1133.2 mst Wed Options: optimize map 1 /* ****************************************************** 2* * * 3* * * 4* * Copyright (c) 1972 by Massachusetts Institute of * 5* * Technology and Honeywell Information Systems, Inc. * 6* * * 7* * * 8* ****************************************************** */ 9 10 g115_as_: proc; 11 12 13 /* g115_as_ - procedure to interface answering service when it needs to communicate VIA G115 protocol. 14* 15* The tty_index entry must be called first to establish a data structure for the device. 16* The other entries rely on the presence of this data structure. */ 17 18 19 /* coded 07/11/75 by Bob Adsit */ 20 /* Modified by J. C. Whitmore, 9/79, during restructure of g115_ I/O module. */ 21 22 dcl a_asw fixed bin parameter; 23 dcl a_bufp ptr parameter; 24 dcl a_code fixed bin (35); 25 dcl a_device char (*) parameter; 26 dcl a_devx fixed bin parameter; 27 dcl a_dflag fixed bin parameter; 28 dcl a_event fixed bin (71) parameter; 29 dcl a_nelem fixed bin parameter; 30 dcl a_nelemt fixed bin parameter; 31 dcl a_new_mode char (*) parameter; 32 dcl a_offset fixed bin parameter; 33 dcl a_old_mode char (*) parameter; 34 dcl a_order char (*) parameter; 35 dcl a_orderp ptr parameter; 36 dcl a_proc_id bit (36) aligned; 37 dcl a_state fixed bin parameter; 38 39 dcl io_buff char (322) aligned; 40 dcl io_data char (322) var; 41 dcl dd_idx fixed bin; 42 dcl pos fixed bin; 43 dcl state fixed bin; 44 dcl idx fixed bin; 45 46 dcl based_string char (322) based; 47 48 dcl (addr, addrel, index, length, rtrim, substr, translate, null, hbound) builtin; 49 50 dcl error_table_$namedup fixed bin (35) ext; 51 dcl error_table_$noentry fixed bin (35) ext; 52 dcl error_table_$notalloc fixed bin (35) ext; 53 dcl error_table_$io_no_permission ext fixed bin (35); 54 55 dcl NL char (1) int static options (constant) init (" 56 "); 57 58 59 60 dcl 1 dd aligned static, /* device data structure on active channels */ 61 2 last_used fixed bin init (0), /* last entry defined in the array */ 62 2 free_idx fixed bin init (-1), /* head of the free list of entries */ 63 2 entries (100), /* array of entries larger than ever needed */ 64 3 next_idx fixed bin init ((100) 0), /* next entry in the chain - (100) 0 = end */ 65 3 devx fixed bin init ((100) 0), /* the device index for Ring 0 */ 66 3 adp ptr init ((100) null), /* pointer to the attach data structure for devx */ 67 3 ddp ptr init ((100) null); /* pointer to the device data structure for devx */ 68 69 70 dcl 1 modes aligned, 71 2 len fixed bin, 72 2 str char (256); 73 74 dcl (lower_case init ("abcdefghijklmnopqrstuvwxyz"), 75 upper_case init ("ABCDEFGHIJKLMNOPQRSTUVWXYZ")) char (26) int static options (constant); 76 77 dcl ipc_$create_ev_chn entry (fixed bin (71), fixed bin (35)); 78 dcl ipc_$delete_ev_chn entry (fixed bin (71), fixed bin (35)); 79 dcl g115_$as_init entry (fixed bin, ptr, ptr, fixed bin (35)); 80 dcl g115_$as_detach entry (fixed bin, ptr, ptr, fixed bin (35)); 81 dcl g115_protocol_$read entry (ptr, ptr, ptr, fixed bin, fixed bin, fixed bin (35)); 82 dcl g115_protocol_$write entry (ptr, ptr, ptr, fixed bin, fixed bin (35)); 83 dcl hcs_$tty_index entry (char (*), fixed bin, fixed bin, fixed bin (35)); 84 dcl hcs_$tty_event entry (fixed bin, fixed bin (71), fixed bin, fixed bin (35)); 85 dcl hcs_$tty_abort entry (fixed bin, fixed bin, fixed bin, fixed bin (35)); 86 dcl hcs_$tty_state entry (fixed bin, fixed bin, fixed bin (35)); 87 dcl hcs_$tty_order entry (fixed bin, char (*), ptr, fixed bin, fixed bin (35)); 88 dcl hcs_$tty_detach_new_proc entry (fixed bin, bit (36) aligned, fixed bin, fixed bin (35)); 89 1 1 /* BEGIN INCLUDE FILE ... g115_device_data.incl.pl1 ... 9-7-79 */ 1 2 1 3 1 4 /* This structure describes all the data specific to a tty channel used for the G115 protocol. 1 5* There is one device data block per channel chained together in a list. Chaining and allocation 1 6* of each data block is managed by g115_.pl1 1 7**/ 1 8 1 9 dcl device_data_p ptr init (null); 1 10 1 11 dcl 1 g115_device_data aligned based (device_data_p), 1 12 2 fwd_ptr ptr, /* forward pointer in chain of these structures */ 1 13 2 back_ptr ptr, /* backward pointer " " " " */ 1 14 2 tty_name char (32), /* name of the device channel for devx */ 1 15 2 devx fixed bin, /* Ring 0 device index for the device */ 1 16 2 attach_count fixed bin, /* number of switches currently active */ 1 17 2 dial_mgr_ev_chan fixed bin (71), /* IPC channel for dial manager */ 1 18 2 as_ev_chan fixed bin (71), /* IPC event channel from answering service */ 1 19 2 wait_list, /* IPC wait list to block on for hardcore tty dim */ 1 20 3 nchan fixed bin, /* this must be 2 and must be on an even word */ 1 21 3 dummy_word fixed bin, 1 22 3 tty_ev_channel fixed bin (71), /* because the compiler wants this on even word */ 1 23 3 timeout_ev_channel fixed bin (71), 1 24 2 control_bits, 1 25 3 as_priv_no_block bit (1) unal, /* ON for answering service reads and writes */ 1 26 3 write_split bit (1) unal, /* ON if split records are to be sent to device */ 1 27 3 write_compress bit (1) unal, /* ON if compressed records are to be sent */ 1 28 3 hangup_signalled bit (1) unal, /* ON if a hangup control is sent */ 1 29 2 delay fixed bin (35), /* runout delay for L6 bug */ 1 30 2 fmt_code, /* the current data and operator msg format codes */ 1 31 3 data bit (9) unal, /* format code for data transfer to remote terminal */ 1 32 3 control bit (9) unal, /* format code for operator messages (teleprinter) */ 1 33 2 process_id bit (36), /* process id for sending wakeups to ourselves */ 1 34 2 padding (14) fixed bin, /* for the future */ 1 35 2 buffer_areap ptr, /* ptr to area for buffer allocation */ 1 36 2 first_bp ptr, /* ptr to first input buffer of chain */ 1 37 2 last_bp ptr, /* ptr to last input buffer of chain */ 1 38 2 template_ptr ptr, /* ptr to template output buffer */ 1 39 2 level fixed bin, /* write recursion (or quit) level index */ 1 40 2 outp (100) ptr; /* pointers to output buffers in buffer area 1 41* indexed by level */ 1 42 1 43 dcl buffer_area based (g115_device_data.buffer_areap) area (262144); /* area for input and output buffers */ 1 44 1 45 /* END INCLUDE FILE ... g115_device_data.incl.pl1 */ 90 91 2 1 /* BEGIN include file g115_attach_data.incl.pl1 */ 2 2 2 3 /* This structure describes all data which is defined per g115 switch attachment */ 2 4 2 5 /* Modified by J. C. Whitmore, 8/79, adding new fields and changing name from g115_data.incl.pl1 */ 2 6 2 7 dcl adp ptr init (null); 2 8 2 9 dcl 1 g115_attach_data aligned based (adp), 2 10 2 ttt_info like remote_ttt_info, 2 11 2 device_ptr ptr, /* pointer to g115_device_data for this attachment */ 2 12 2 media_code char (1) unal, /* current media code used for this attachment */ 2 13 2 attach_description char (256) var, 2 14 2 open_description char (32) var, 2 15 2 device char (32), /* name of the generic type of remote device */ 2 16 2 device_type fixed bin; /* device type code in fixed bin form */ 2 17 /* 1 = reader */ 2 18 /* 2 = printer */ 2 19 /* 3 = teleprinter */ 2 20 /* 4 = punch */ 2 21 2 22 /* Constants which describe the defined device types */ 2 23 2 24 dcl reader fixed bin static options (constant) init (1); 2 25 dcl printer fixed bin static options (constant) init (2); 2 26 dcl teleprinter fixed bin static options (constant) init (3); 2 27 dcl punch fixed bin static options (constant) init (4); 2 28 2 29 /* END include file g115_attach_data.incl.pl1 */ 92 93 3 1 /* BEGIN... remote_ttt_info.incl.pl1 ... 5/78 */ 3 2 3 3 dcl rttp ptr; /* ptr to data structure */ 3 4 3 5 3 6 dcl 1 remote_ttt_info based (rttp) aligned, /* data */ 3 7 2 ttt_bits, /* control bits */ 3 8 (3 escape_output bit (1), /* if on enables output escape processing */ 3 9 3 translate_output bit (1), /* if on enables output translation */ 3 10 3 translate_input bit (1), /* if on enables input translation */ 3 11 3 escape_input bit (1), /* if on enables input escape processing */ 3 12 3 erase_input bit (1), /* if on enables input erase processing */ 3 13 3 canonicalize_input bit (1), /* if on enables input canonicalization */ 3 14 3 edited bit (1)) unal, /* if on enables edited escape processing */ 3 15 2 terminal_type char (32), /* terminal type in TTT */ 3 16 2 kill_char char (1), /* specified kil character */ 3 17 2 erase_char char (1), /* and erase character */ 3 18 2 ttt_ptrs, /* ptr to various ttt tables */ 3 19 3 input_mvtp ptr, /* input translation table */ 3 20 3 output_mvtp ptr, /* output translation table */ 3 21 3 input_tctp ptr, /* input escape table */ 3 22 3 output_tctp ptr, /* output escape table */ 3 23 3 specp ptr; /* special table */ 3 24 3 25 /* END remote_ttt_info.incl.pl1 */ 94 95 96 as_index: entry (a_device, a_devx, a_state, a_code); 97 98 /* This is the entry first called by answering service to set up the attachment through g115 */ 99 100 call hcs_$tty_index (a_device, a_devx, a_state, a_code); /* get the device index of the channel */ 101 if a_code ^= 0 then return; 102 103 call make_dd_entry (a_devx, dd_idx, a_code); /* get a place to save attachment data ptrs */ 104 if a_code ^= 0 then return; 105 106 call g115_$as_init (a_devx, device_data_p, adp, a_code); 107 if a_code ^= 0 then do; 108 drop_entry: call delete_dd_entry (dd_idx); /* remove the entry we made */ 109 if device_data_p ^= null then 110 call g115_$as_detach (a_devx, device_data_p, adp, (0)); 111 return; 112 end; 113 114 dd.ddp (dd_idx) = device_data_p; /* save these for the future */ 115 dd.adp (dd_idx) = adp; 116 117 g115_attach_data.device = a_device; /* record the device name given us */ 118 119 call ipc_$create_ev_chn (g115_device_data.tty_ev_channel, a_code); /* create ev chan for ring 0 */ 120 if a_code ^= 0 then go to drop_entry; 121 122 call ipc_$create_ev_chn (g115_device_data.timeout_ev_channel, a_code); /* and one for timeout on blocking */ 123 if a_code ^= 0 then go to drop_entry; 124 125 return; 126 127 128 as_event: entry (a_devx, a_event, a_state, a_code); 129 130 /* This entry defines the event channel that AS will block on (listen to) */ 131 132 call find_dd_entry (a_devx, dd_idx, a_code); /* get the structure ptr info */ 133 if a_code ^= 0 then return; 134 135 device_data_p = dd.ddp (dd_idx); /* get the pointer to g115_device_data */ 136 137 g115_device_data.as_ev_chan = a_event; /* save the event channel for g115_io_ */ 138 139 call hcs_$tty_event (a_devx, a_event, a_state, a_code); /* set the AS event channel in ring 0 */ 140 141 return; 142 143 as_detach: entry (a_devx, a_dflag, a_state, a_code); 144 145 call find_dd_entry (a_devx, dd_idx, a_code); /* get the device data index */ 146 if a_code ^= 0 then return; 147 148 device_data_p = dd.ddp (dd_idx); /* copy the structure pointers */ 149 adp = dd.adp (dd_idx); 150 151 call ipc_$delete_ev_chn (g115_device_data.tty_ev_channel, a_code); /* don't check the code, just try */ 152 call ipc_$delete_ev_chn (g115_device_data.timeout_ev_channel, a_code); 153 154 call g115_$as_detach (a_devx, device_data_p, adp, a_code); 155 156 a_state = 1; 157 158 call delete_dd_entry (dd_idx); 159 160 return; 161 162 163 as_detach_new_proc: entry (a_devx, a_proc_id, a_state, a_code); 164 165 call hcs_$tty_detach_new_proc (a_devx, a_proc_id, a_state, a_code); 166 return; 167 168 169 as_order: entry (a_devx, a_order, a_orderp, a_state, a_code); 170 171 call hcs_$tty_order (a_devx, a_order, a_orderp, a_state, a_code); 172 return; 173 174 175 as_changemode: entry (a_devx, a_new_mode, a_old_mode, a_code); 176 177 modes.len = length (modes.str); /* set the max size for return info */ 178 modes.str = a_new_mode; 179 180 call hcs_$tty_order (a_devx, "modes", addr (modes), state, a_code); 181 if state ^= 5 then a_code = error_table_$io_no_permission; 182 183 a_old_mode = modes.str; /* copy back the old modes from Ring 0 */ 184 185 return; 186 187 188 as_state: entry (a_devx, a_state, a_code); 189 190 call hcs_$tty_state (a_devx, a_state, a_code); 191 return; 192 193 194 as_abort: entry (a_devx, a_asw, a_state, a_code); 195 196 call hcs_$tty_abort (a_devx, a_asw, a_state, a_code); 197 return; 198 199 as_write: 200 as_write_force: entry (a_devx, a_bufp, a_offset, a_nelem, a_nelemt, a_state, a_code); 201 202 call find_dd_entry (a_devx, dd_idx, a_code); /* get the device data index */ 203 if a_code ^= 0 then return; 204 205 device_data_p = dd.ddp (dd_idx); /* define the structure pointers */ 206 adp = dd.adp (dd_idx); 207 208 io_buff = substr (addrel (a_bufp, a_offset) -> based_string, 1, a_nelem); /* be sure we fit into a message */ 209 210 call g115_protocol_$write (adp, device_data_p, addr (io_buff), a_nelem, a_code); 211 212 a_nelemt = a_nelem; 213 214 return; 215 216 217 as_read: entry (a_devx, a_bufp, a_offset, a_nelem, a_nelemt, a_state, a_code); 218 219 call find_dd_entry (a_devx, dd_idx, a_code); 220 if a_code ^= 0 then return; 221 222 device_data_p = dd.ddp (dd_idx); /* define the structure pointers */ 223 adp = dd.adp (dd_idx); 224 225 call g115_protocol_$read (adp, device_data_p, addr (io_buff), length (io_buff), a_nelemt, a_code); 226 227 if a_code ^= 0 | a_nelemt = 0 then return; /* none yet */ 228 229 io_buff = substr (io_buff, 1, a_nelemt); /* remove any cruft */ 230 io_data = ""; /* clear the output string */ 231 pos = 1; /* go through io_buff starting with char 1 */ 232 idx = index (io_buff, "\"); /* look for upper case escapes */ 233 234 do while (idx > 0); /* loop processing all escapes */ 235 io_data = io_data || translate (substr (io_buff, pos, idx - 1), lower_case, upper_case) || 236 substr (io_buff, pos + idx, 1); /* omit the backslash and take following char as is */ 237 pos = pos + idx + 1; 238 idx = index (substr (io_buff, pos), "\"); /* look for next one */ 239 end; 240 241 io_data = io_data || translate (substr (io_buff, pos), lower_case, upper_case); /* add in the last part */ 242 io_data = rtrim (io_data) || NL; /* and make it look like tty input */ 243 244 if length (io_data) > a_nelem then a_nelemt = a_nelem; /* only give back up to limit */ 245 else a_nelemt = length (io_data); 246 247 substr (addrel (a_bufp, a_offset) -> based_string, 1, a_nelemt) = io_data; /* return the data */ 248 249 return; 250 251 make_dd_entry: proc (a_devx, dd_idx, ec); 252 253 dcl a_devx fixed bin; 254 dcl dd_idx fixed bin; 255 dcl ec fixed bin (35); 256 dcl idx fixed bin; 257 258 dd_idx = 0; /* initialize output index */ 259 260 do idx = 1 to dd.last_used while (dd_idx = 0); /* look for a duplicate entry */ 261 if dd.next_idx (idx) = 0 then /* not in free list */ 262 if dd.devx (idx) = a_devx then dd_idx = idx; /* found a match */ 263 end; 264 265 if dd_idx = 0 then do; /* must make an entry */ 266 if dd.free_idx < 0 then do; /* no free entries, extend max used */ 267 if dd.last_used = hbound (dd.entries, 1) then do; 268 ec = error_table_$notalloc; 269 return; 270 end; 271 dd_idx, dd.last_used = dd.last_used + 1; /* bump the count */ 272 end; 273 else do; /* take a free entry */ 274 dd_idx = dd.free_idx; 275 dd.free_idx = dd.next_idx (dd_idx); /* shorten chain by one link */ 276 dd.next_idx (dd_idx) = 0; /* remove this from the chain */ 277 end; 278 dd.devx (dd_idx) = a_devx; /* assign the new device index */ 279 end; 280 else ec = error_table_$namedup; /* found a match! WHY? */ 281 282 return; 283 284 285 find_dd_entry: entry (a_devx, dd_idx, ec); 286 287 dd_idx = 0; /* initialize output index */ 288 289 do idx = 1 to dd.last_used while (dd_idx = 0); /* look for a duplicate entry */ 290 if dd.next_idx (idx) = 0 then /* not in free list */ 291 if dd.devx (idx) = a_devx then dd_idx = idx; /* found a match */ 292 end; 293 294 if dd_idx = 0 then ec = error_table_$noentry; 295 296 return; 297 298 delete_dd_entry: entry (dd_idx); 299 300 dd.devx (dd_idx) = 0; /* make the entry invalid */ 301 dd.ddp (dd_idx) = null; 302 dd.adp (dd_idx) = null; 303 304 dd.next_idx (dd_idx) = dd.free_idx; /* put at the head of the free chain */ 305 dd.free_idx = dd_idx; 306 307 return; 308 309 end make_dd_entry; 310 311 312 313 314 end g115_as_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 02/06/80 1131.0 g115_as_.pl1 >spec>on>spec020680>g115_as_.pl1 90 1 02/06/80 1130.0 g115_device_data.incl.pl1 >spec>on>spec020680>g115_device_data.incl.pl1 92 2 02/06/80 1129.2 g115_attach_data.incl.pl1 >spec>on>spec020680>g115_attach_data.incl.pl1 94 3 08/03/78 2021.0 remote_ttt_info.incl.pl1 >ldd>include>remote_ttt_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. NL 002036 constant char(1) initial unaligned dcl 55 ref 242 a_asw parameter fixed bin(17,0) dcl 22 set ref 194 196* a_bufp parameter pointer dcl 23 ref 199 199 208 217 247 a_code parameter fixed bin(35,0) dcl 24 set ref 96 100* 101 103* 104 106* 107 119* 120 122* 123 128 132* 133 139* 143 145* 146 151* 152* 154* 163 165* 169 171* 175 180* 181* 188 190* 194 196* 199 199 202* 203 210* 217 219* 220 225* 227 a_device parameter char unaligned dcl 25 set ref 96 100* 117 a_devx parameter fixed bin(17,0) dcl 26 in procedure "g115_as_" set ref 96 100* 103* 106* 109* 128 132* 139* 143 145* 154* 163 165* 169 171* 175 180* 188 190* 194 196* 199 199 202* 217 219* a_devx parameter fixed bin(17,0) dcl 253 in procedure "make_dd_entry" ref 251 261 278 285 290 a_dflag parameter fixed bin(17,0) dcl 27 ref 143 a_event parameter fixed bin(71,0) dcl 28 set ref 128 137 139* a_nelem parameter fixed bin(17,0) dcl 29 set ref 199 199 208 210* 212 217 244 244 a_nelemt parameter fixed bin(17,0) dcl 30 set ref 199 199 212* 217 225* 227 229 244* 245* 247 a_new_mode parameter char unaligned dcl 31 ref 175 178 a_offset parameter fixed bin(17,0) dcl 32 ref 199 199 208 217 247 a_old_mode parameter char unaligned dcl 33 set ref 175 183* a_order parameter char unaligned dcl 34 set ref 169 171* a_orderp parameter pointer dcl 35 set ref 169 171* a_proc_id parameter bit(36) dcl 36 set ref 163 165* a_state parameter fixed bin(17,0) dcl 37 set ref 96 100* 128 139* 143 156* 163 165* 169 171* 188 190* 194 196* 199 199 217 addr builtin function dcl 48 ref 180 180 210 210 225 225 addrel builtin function dcl 48 ref 208 247 adp 4 000010 internal static pointer initial array level 3 in structure "dd" dcl 60 in procedure "g115_as_" set ref 115* 149 206 223 302* adp 000452 automatic pointer initial dcl 2-7 in procedure "g115_as_" set ref 106* 109* 115 117 149* 154* 206* 210* 223* 225* 2-7* as_ev_chan 20 based fixed bin(71,0) level 2 dcl 1-11 set ref 137* based_string based char(322) unaligned dcl 46 set ref 208 247* dd 000010 internal static structure level 1 dcl 60 dd_idx 000343 automatic fixed bin(17,0) dcl 41 in procedure "g115_as_" set ref 103* 108* 114 115 132* 135 145* 148 149 158* 202* 205 206 219* 222 223 dd_idx parameter fixed bin(17,0) dcl 254 in procedure "make_dd_entry" set ref 251 258* 260 261* 265 271* 274* 275 276 278 285 287* 289 290* 294 298 300 301 302 304 305 ddp 6 000010 internal static pointer initial array level 3 dcl 60 set ref 114* 135 148 205 222 301* device 143 based char(32) level 2 dcl 2-9 set ref 117* device_data_p 000450 automatic pointer initial dcl 1-9 set ref 106* 109 109* 114 119 122 135* 137 148* 151 152 154* 205* 210* 222* 225* 1-9* devx 3 000010 internal static fixed bin(17,0) initial array level 3 dcl 60 set ref 261 278* 290 300* ec parameter fixed bin(35,0) dcl 255 set ref 251 268* 280* 285 294* entries 2 000010 internal static structure array level 2 dcl 60 set ref 267 error_table_$io_no_permission 001150 external static fixed bin(35,0) dcl 53 ref 181 error_table_$namedup 001142 external static fixed bin(35,0) dcl 50 ref 280 error_table_$noentry 001144 external static fixed bin(35,0) dcl 51 ref 294 error_table_$notalloc 001146 external static fixed bin(35,0) dcl 52 ref 268 free_idx 1 000010 internal static fixed bin(17,0) initial level 2 dcl 60 set ref 266 274 275* 304 305* g115_$as_detach 001160 constant entry external dcl 80 ref 109 154 g115_$as_init 001156 constant entry external dcl 79 ref 106 g115_attach_data based structure level 1 dcl 2-9 g115_device_data based structure level 1 dcl 1-11 g115_protocol_$read 001162 constant entry external dcl 81 ref 225 g115_protocol_$write 001164 constant entry external dcl 82 ref 210 hbound builtin function dcl 48 ref 267 hcs_$tty_abort 001172 constant entry external dcl 85 ref 196 hcs_$tty_detach_new_proc 001200 constant entry external dcl 88 ref 165 hcs_$tty_event 001170 constant entry external dcl 84 ref 139 hcs_$tty_index 001166 constant entry external dcl 83 ref 100 hcs_$tty_order 001176 constant entry external dcl 87 ref 171 180 hcs_$tty_state 001174 constant entry external dcl 86 ref 190 idx 000346 automatic fixed bin(17,0) dcl 44 in procedure "g115_as_" set ref 232* 234 235 235 237 238* idx 000470 automatic fixed bin(17,0) dcl 256 in procedure "make_dd_entry" set ref 260* 261 261 261* 289* 290 290 290* index builtin function dcl 48 ref 232 238 io_buff 000100 automatic char(322) dcl 39 set ref 208* 210 210 225 225 225 225 229* 229 232 235 235 238 241 io_data 000221 automatic varying char(322) dcl 40 set ref 230* 235* 235 241* 241 242* 242 244 245 247 ipc_$create_ev_chn 001152 constant entry external dcl 77 ref 119 122 ipc_$delete_ev_chn 001154 constant entry external dcl 78 ref 151 152 last_used 000010 internal static fixed bin(17,0) initial level 2 dcl 60 set ref 260 267 271 271* 289 len 000347 automatic fixed bin(17,0) level 2 dcl 70 set ref 177* length builtin function dcl 48 ref 177 225 225 244 245 lower_case 000007 constant char(26) initial unaligned dcl 74 ref 235 241 modes 000347 automatic structure level 1 dcl 70 set ref 180 180 next_idx 2 000010 internal static fixed bin(17,0) initial array level 3 dcl 60 set ref 261 275 276* 290 304* null builtin function dcl 48 ref 109 1-9 2-7 301 302 pos 000344 automatic fixed bin(17,0) dcl 42 set ref 231* 235 235 237* 237 238 241 remote_ttt_info based structure level 1 dcl 3-6 rtrim builtin function dcl 48 ref 242 state 000345 automatic fixed bin(17,0) dcl 43 set ref 180* 181 str 1 000347 automatic char(256) level 2 dcl 70 set ref 177 178* 183 substr builtin function dcl 48 set ref 208 229 235 235 238 241 247* timeout_ev_channel 26 based fixed bin(71,0) level 3 dcl 1-11 set ref 122* 152* translate builtin function dcl 48 ref 235 241 tty_ev_channel 24 based fixed bin(71,0) level 3 dcl 1-11 set ref 119* 151* upper_case 000000 constant char(26) initial unaligned dcl 74 ref 235 241 wait_list 22 based structure level 2 dcl 1-11 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. buffer_area based area(262144) dcl 1-43 printer internal static fixed bin(17,0) initial dcl 2-25 punch internal static fixed bin(17,0) initial dcl 2-27 reader internal static fixed bin(17,0) initial dcl 2-24 rttp automatic pointer dcl 3-3 teleprinter internal static fixed bin(17,0) initial dcl 2-26 NAMES DECLARED BY EXPLICIT CONTEXT. as_abort 000747 constant entry external dcl 194 as_changemode 000601 constant entry external dcl 175 as_detach 000344 constant entry external dcl 143 as_detach_new_proc 000455 constant entry external dcl 163 as_event 000261 constant entry external dcl 128 as_index 000055 constant entry external dcl 96 as_order 000516 constant entry external dcl 169 as_read 001130 constant entry external dcl 217 as_state 000714 constant entry external dcl 188 as_write 001031 constant entry external dcl 199 as_write_force 001011 constant entry external dcl 199 delete_dd_entry 001611 constant entry internal dcl 298 ref 108 158 drop_entry 000163 constant label dcl 108 ref 120 123 find_dd_entry 001544 constant entry internal dcl 285 ref 132 145 202 219 g115_as_ 000041 constant entry external dcl 10 make_dd_entry 001444 constant entry internal dcl 251 ref 103 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 2344 3546 2037 2354 Length 4056 2037 1202 273 305 1132 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME g115_as_ 370 external procedure is an external procedure. make_dd_entry internal procedure shares stack frame of external procedure g115_as_. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 dd g115_as_ STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME g115_as_ 000100 io_buff g115_as_ 000221 io_data g115_as_ 000343 dd_idx g115_as_ 000344 pos g115_as_ 000345 state g115_as_ 000346 idx g115_as_ 000347 modes g115_as_ 000450 device_data_p g115_as_ 000452 adp g115_as_ 000470 idx make_dd_entry THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_cs cat_realloc_cs call_ext_out_desc call_ext_out return shorten_stack ext_entry ext_entry_desc THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. g115_$as_detach g115_$as_init g115_protocol_$read g115_protocol_$write hcs_$tty_abort hcs_$tty_detach_new_proc hcs_$tty_event hcs_$tty_index hcs_$tty_order hcs_$tty_state ipc_$create_ev_chn ipc_$delete_ev_chn THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$io_no_permission error_table_$namedup error_table_$noentry error_table_$notalloc LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 1 9 000033 2 7 000035 10 000040 96 000047 100 000100 101 000126 103 000130 104 000142 106 000144 107 000161 108 000163 109 000165 111 000207 114 000210 115 000215 117 000217 119 000225 120 000235 122 000237 123 000251 125 000253 128 000254 132 000276 133 000310 135 000312 137 000317 139 000322 141 000336 143 000337 145 000361 146 000373 148 000375 149 000402 151 000404 152 000414 154 000426 156 000443 158 000445 160 000447 163 000450 165 000472 166 000510 169 000511 171 000541 172 000573 175 000574 177 000627 178 000631 180 000637 181 000673 183 000701 185 000707 188 000710 190 000731 191 000744 194 000745 196 000764 197 001002 199 001003 202 001046 203 001060 205 001062 206 001067 208 001071 210 001102 212 001122 214 001125 217 001126 219 001145 220 001157 222 001161 223 001166 225 001170 227 001215 229 001222 230 001225 231 001226 232 001230 234 001241 235 001243 237 001313 238 001320 239 001336 241 001337 242 001365 244 001421 245 001431 247 001432 249 001443 251 001444 258 001450 260 001451 261 001463 263 001500 265 001502 266 001504 267 001507 268 001512 269 001515 271 001516 272 001521 274 001522 275 001523 276 001527 278 001530 279 001536 280 001537 282 001543 285 001544 287 001550 289 001551 290 001563 292 001600 294 001602 296 001610 298 001611 300 001615 301 001621 302 001624 304 001625 305 001627 307 001631 ----------------------------------------------------------- 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