COMPILATION LISTING OF SEGMENT remote_printer_ Compiled by: Multics PL/I Compiler, Release 31a, of October 12, 1988 Compiled at: Honeywell Bull, Phoenix AZ, SysM Compiled on: 11/09/88 1302.1 mst Wed Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1988 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 6* * * 7* * Copyright (c) 1972 by Massachusetts Institute of * 8* * Technology and Honeywell Information Systems, Inc. * 9* * * 10* *********************************************************** */ 11 12 /* format: style4 */ 13 14 /* format: off */ 15 16 /* remote_printer_: An I/O module for communicating with a remote printer or its equivilent */ 17 18 /* Created: March 1977 by David Vinograd */ 19 /* Modified: May 1978 by David Vinograd to clean up and interface to user TTFs */ 20 /* Modified: November 1978 by J. C. Whitmore to make all attach options for remote_xxx_ dims consistent */ 21 /* Modified: March 1980 by J. C. Whitmore to use the terminal_io_record interface to the terminal IO module */ 22 /* Modified: 13 December 1981 by G. Palter to not use illegal PL/I and provide sufficient extra space for prt_conv_ to 23* output control sequences */ 24 25 /****^ HISTORY COMMENTS: 26* 1) change(88-06-07,Brunelle), approve(88-06-07,MCR7911), 27* audit(88-10-24,Farley), install(88-11-08,MR12.2-1205): 28* Add support for model name argument on attach. This includes calling a 29* module based on the model name to setup for any special processing 30* required. Also add support to disable prt_conv_ processing and 31* recognize rawo modes and pass them to tty_ module. 32* END HISTORY COMMENTS */ 33 34 /* format: on */ 35 36 remote_printer_: procedure (); 37 38 /* Parameters */ 39 40 dcl a_code fixed bin (35) parameter; /* error code */ 41 dcl a_data_chars fixed bin (21) parameter; /* number of chars to be input/output */ 42 dcl a_data_ptr ptr parameter; /* ptr to chars to be input/output */ 43 dcl a_infop ptr parameter; /* info ptr to control order */ 44 dcl a_iocbp ptr parameter; /* iocb ptr */ 45 dcl a_mode fixed bin parameter; /* The open mode */ 46 dcl a_new_modes char (*) parameter; /* new modes to assign */ 47 dcl a_old_modes char (*) parameter; /* current modes */ 48 dcl a_option (*) char (*) var parameter; /* options for attach */ 49 dcl a_order char (*) parameter; /* order to be executed */ 50 dcl a_pos_type fixed bin parameter; /* iox_$position positioning type */ 51 dcl a_pos_value fixed bin (21) parameter; /* iox_$position positioning count */ 52 dcl a_sw bit (1) parameter; /* com_err_ switch for attach */ 53 54 /* Automatic */ 55 56 dcl attach_entry entry (ptr, fixed bin (35)) variable; /* special model entry to call to complete attachment */ 57 dcl attach_entry_name char (64); /* module name for special model attachment */ 58 dcl charp ptr; /* ptr to next char for output in put_chars entrypoint */ 59 dcl code fixed bin (35); /* general error code */ 60 dcl com_err_sw bit (1); /* Set if com_err_ should be called on attach error */ 61 dcl cur_page fixed bin (24); /* current page number being output as returned by prt_conv_ */ 62 dcl device_opt char (32) var; 63 dcl dummy char (32) var; /* type of device for attachment */ 64 dcl ec fixed bin (35); /* secondary error code */ 65 dcl i fixed bin (21); /* misc counter */ 66 dcl idx fixed bin; /* attachment argument index */ 67 dcl ignore fixed bin (35); /* dummy error code */ 68 dcl infop ptr; /* internal copy of control order info pointer */ 69 dcl iocbp ptr; /* internal copy of iocb ptr */ 70 dcl mask bit (36) aligned; /* for setting ips mask */ 71 dcl my_options char (256) var; /* some of the attachment options */ 72 dcl open_mode fixed bin; /* copy of user supplied input mode */ 73 dcl order char (32); /* copy of user supplied order */ 74 dcl prt_conv_outp ptr; /* where prt_conv_ is to put processed data */ 75 dcl record_len fixed bin (21); /* length of prt_conv_ processed record */ 76 dcl remaining_chars fixed bin (21); /* number of chars left for prt_conv_ to process */ 77 dcl temp_iocbp ptr; /* temporary IOCB prt */ 78 dcl terminal_attach_desc char (256) var; 79 dcl terminal_attach_options char (256) var; 80 dcl terminal_switch_name char (32) var; 81 dcl total_chars fixed bin (24); /* number of chars requested for put_chars */ 82 83 /* Internal Static */ 84 85 dcl attach_count fixed bin int static init (0); 86 dcl my_area_ptr ptr int static init (null); 87 dcl my_area area based (my_area_ptr); 88 dcl prt_conv_on bit (1) internal static init ("1"b); 89 dcl static_comerr_sw bit (1) int static init ("0"b); 90 91 /* Constants */ 92 93 dcl printer_device char (32) int static options (constant) init ("printer"); 94 dcl remote_device_name char (15) int static options (constant) init ("remote_printer_"); 95 dcl space char (1) static init (" ") int options (constant); 96 97 /* External Procedures & Variables */ 98 99 dcl com_err_ entry options (variable); 100 dcl continue_to_signal_ entry (fixed bin (35)); 101 dcl cv_entry_ entry (char (*), ptr, fixed bin (35)) returns (entry); 102 dcl error_table_$bad_arg ext fixed bin (35); 103 dcl error_table_$bad_conversion fixed bin (35) ext; 104 dcl error_table_$bad_mode ext fixed bin (35); 105 dcl error_table_$noarg ext fixed bin (35); 106 dcl error_table_$not_attached ext fixed bin (35); 107 dcl error_table_$not_closed ext fixed bin (35); 108 dcl error_table_$not_detached ext fixed bin (35); 109 dcl error_table_$not_open ext fixed bin (35); 110 dcl error_table_$request_pending ext fixed bin (35); 111 dcl error_table_$wrong_no_of_args ext fixed bin (35); 112 dcl get_system_free_area_ entry () returns (pointer); 113 dcl hcs_$make_ptr entry (ptr, char (*), char (*), ptr, fixed bin (35)); 114 dcl hcs_$reset_ips_mask entry (bit (36) aligned, bit (36) aligned); 115 dcl hcs_$set_ips_mask entry (bit (36) aligned, bit (36) aligned); 116 dcl ioa_ entry options (variable); 117 dcl iox_$attach_ioname entry (char (*), ptr, char (*), fixed bin (35)); 118 dcl iox_$close entry (ptr, fixed bin (35)); 119 dcl iox_$control entry (ptr, char (*), ptr, fixed bin (35)); 120 dcl iox_$detach_iocb entry (ptr, fixed bin (35)); 121 dcl iox_$err_no_operation entry; 122 dcl iox_$modes entry (ptr, char (*), char (*), fixed bin (35)); 123 dcl iox_$open entry (ptr, fixed bin, bit (36), fixed bin (35)); 124 dcl iox_$position entry (ptr, fixed bin, fixed bin (21), fixed bin (35)); 125 dcl iox_$propagate entry (ptr); 126 dcl iox_$put_chars entry (ptr, ptr, fixed bin (21), fixed bin (35)); 127 dcl iox_$write_record entry (ptr, ptr, fixed bin, fixed bin (35)); 128 dcl prt_conv_ entry (ptr, fixed bin (21), ptr, fixed bin (21), ptr); 129 dcl remote_printer_control_ entry (ptr, char (*), ptr, fixed bin (35)); 130 dcl remote_printer_modes_ entry (ptr, char (*), char (*), fixed bin (35)); 131 dcl sys_info$max_seg_size fixed bin ext; 132 133 /* Conditions and Builtins */ 134 135 dcl (conversion, cleanup, any_other) condition; 136 137 dcl (addr, bin, char, currentsize, hbound, index, ltrim, null, rtrim, substr, unspec) builtin; 138 139 140 remote_printer_attach: 141 entry (a_iocbp, a_option, a_sw, a_code); 142 143 iocbp = a_iocbp; 144 com_err_sw = a_sw | static_comerr_sw; /* report errors if either is on */ 145 code, a_code = 0; 146 147 if my_area_ptr = null then 148 my_area_ptr = get_system_free_area_ (); 149 150 adp = null; 151 if iocbp -> iocb.attach_descrip_ptr ^= null then do; 152 code = error_table_$not_detached; 153 call abort_attach (code, "Switch name: ^a", iocbp -> iocb.name); 154 end; 155 156 if hbound (a_option, 1) < 1 then do; /* Must be at least one */ 157 code = error_table_$wrong_no_of_args; 158 call abort_attach (code, "Bad attach description.", ""); 159 end; 160 161 on cleanup call clean_up; 162 163 allocate ad in (my_area) set (adp); /* make space for the attach data structure */ 164 165 /* Initialize the Attach Data Structure variables */ 166 167 ad.bits = "0"b; 168 ad.fixed = 0; 169 ad.ptrs = null; 170 ad.chars = ""; 171 unspec (ad.remote_pci) = "0"b; 172 unspec (ad.info) = "0"b; 173 ad.device_type = PRINTER_DEVICE; /* default for terminal_io_record structure */ 174 ad.sheets_per_page = 1; 175 ad.phys_line_length = 132; /* this will normally get reset by a paper_info control order */ 176 ad.phys_page_length = 66; 177 ad.lpi = 6; 178 ad.line = 1; 179 ad.cv_proc = null; /* not defined until the open operation */ 180 181 /* Process options */ 182 183 terminal_attach_options = ""; 184 my_options = ""; 185 terminal_attach_desc = ""; 186 device_opt = "printer"; /* our default device option */ 187 188 do idx = 1 to hbound (a_option, 1); 189 if a_option (idx) = "-physical_line_length" | a_option (idx) = "-pll" then do; 190 ad.phys_line_length = cv_dec_arg (idx); 191 terminal_attach_options = terminal_attach_options || " -pll " || a_option (idx); 192 end; 193 else if a_option (idx) = "-physical_page_length" | a_option (idx) = "-ppl" then do; 194 ad.phys_page_length = cv_dec_arg (idx); 195 my_options = my_options || " -ppl " || a_option (idx); 196 end; 197 else if a_option (idx) = "-horizontal_tab" | a_option (idx) = "-htab" then do; 198 ad.ht = "1"b; 199 terminal_attach_options = terminal_attach_options || space || a_option (idx); 200 end; 201 else if a_option (idx) = "-runout_spacing" | a_option (idx) = "-runsp" then do; /* grab this and next arg */ 202 dummy = get_arg (idx); /* don't pass on but say we got it */ 203 my_options = my_options || " -runsp " || dummy; 204 end; 205 else if a_option (idx) = "-terminal" then do; 206 ad.terminal = get_arg (idx); 207 my_options = my_options || " -terminal " || ad.terminal; 208 end; 209 else if a_option (idx) = "-device" then 210 device_opt = get_arg (idx); /* check out this option */ 211 else if a_option (idx) = "-model" then do; 212 ad.chars.model = get_arg (idx); 213 end; 214 else terminal_attach_options = terminal_attach_options || space || a_option (idx); 215 end; 216 217 if ad.terminal = "" then do; 218 code = error_table_$noarg; 219 call abort_attach (code, "No terminal IO Module specified.", ""); 220 end; 221 222 if ad.phys_line_length < 1 | ad.phys_line_length > 512 then do; 223 code = error_table_$bad_arg; 224 call abort_attach (code, "Invalid line length specified.", ""); 225 end; 226 227 if ad.phys_page_length < 10 | ad.phys_page_length > 128 then do; 228 code = error_table_$bad_arg; 229 call abort_attach (code, "Invalid page length specified.", ""); 230 end; 231 232 if device_opt ^= "printer" then do; /* was it changed? */ 233 code = error_table_$bad_arg; 234 call abort_attach (code, "Invalid -device option: ", (device_opt)); 235 end; 236 237 /* Attach through terminal dim */ 238 239 attach_count = attach_count + 1; /* new attach name tag number each time */ 240 if attach_count > 999 then 241 attach_count = 1; 242 terminal_switch_name = remote_device_name || ltrim (char (attach_count)); 243 /* make the switch name */ 244 245 terminal_attach_options = ltrim (terminal_attach_options) || " -device " || device_opt; 246 terminal_attach_desc = ad.terminal || space || terminal_attach_options; 247 ad.attach_desc = remote_device_name || my_options || space || terminal_attach_options; 248 249 call iox_$attach_ioname ((terminal_switch_name), temp_iocbp, (terminal_attach_desc), code); 250 if code ^= 0 then 251 call abort_attach (code, "Unable to attach to terminal ", ""); 252 253 ad.terminal_iocbp = temp_iocbp; 254 255 /* Now mask and complete the iocb */ 256 257 mask = "0"b; 258 259 on any_other call handler; 260 261 call hcs_$set_ips_mask ("0"b, mask); 262 iocbp -> iocb.attach_descrip_ptr = addr (ad.attach_desc); 263 iocbp -> iocb.attach_data_ptr = adp; 264 iocbp -> iocb.open = remote_printer_open; 265 iocbp -> iocb.detach_iocb = remote_printer_detach; 266 call iox_$propagate (iocbp); 267 call hcs_$reset_ips_mask (mask, mask); 268 269 revert any_other; 270 271 /* if a model is defined, special processing might be required for some of 272* them. See if there is a special processing module to complete the 273* attachment. If there is, call it and let it fiddle with the iocb */ 274 275 if ad.chars.model ^= "" then do; 276 attach_entry_name = "iodd_" || rtrim (ad.chars.model) || "_support_$complete_attach"; 277 attach_entry = cv_entry_ (attach_entry_name, null, code); 278 if code ^= 0 then 279 call abort_attach (code, "Unable to locate ^a.", (attach_entry_name)); 280 call attach_entry (iocbp, code); 281 if code ^= 0 then 282 call abort_attach (code, "Calling ^a.", (attach_entry_name)); 283 end; 284 285 call remote_printer_control_ (iocbp, "reset", null, code); 286 if code ^= 0 then 287 call abort_attach (code, "Unable to reset printer data", ""); 288 289 attach_return: 290 return; 291 292 293 remote_printer_detach: 294 entry (a_iocbp, a_code); 295 296 iocbp = a_iocbp; 297 code, a_code = 0; 298 adp = iocbp -> iocb.attach_data_ptr; 299 300 if adp = null then do; 301 a_code = error_table_$not_attached; 302 return; 303 end; 304 305 if iocbp -> iocb.open_descrip_ptr ^= null then do; 306 a_code = error_table_$not_closed; 307 return; 308 end; 309 310 call clean_up; 311 312 mask = "0"b; 313 314 on any_other call handler; 315 316 call hcs_$set_ips_mask ("0"b, mask); 317 318 iocbp -> iocb.attach_descrip_ptr = null; 319 320 call iox_$propagate (iocbp); 321 322 call hcs_$reset_ips_mask (mask, mask); 323 324 revert any_other; 325 326 return; 327 328 329 remote_printer_open: 330 entry (a_iocbp, a_mode, a_sw, a_code); 331 332 iocbp = a_iocbp -> iocb.actual_iocb_ptr; 333 code, a_code = 0; 334 adp = iocbp -> iocb.attach_data_ptr; 335 336 if adp = null then do; 337 a_code = error_table_$not_attached; 338 return; 339 end; 340 341 if iocbp -> iocb.open_descrip_ptr ^= null then do; 342 a_code = error_table_$not_closed; 343 return; 344 end; 345 346 open_mode = a_mode; 347 if ^((open_mode = Stream_output) | (open_mode = Stream_input_output)) then do; 348 a_code = error_table_$bad_mode; 349 return; 350 end; 351 352 call iox_$open (ad.terminal_iocbp, Sequential_output, "0"b, a_code); 353 /* try for record output */ 354 if a_code = 0 then do; 355 ad.record_io = "1"b; /* we have record interface approval */ 356 call hcs_$make_ptr (null, "remote_conv_", "printer", ad.cv_proc, a_code); 357 if a_code ^= 0 then 358 return; 359 end; 360 else do; 361 ad.record_io = "0"b; /* try for stream interface */ 362 call iox_$open (ad.terminal_iocbp, Stream_output, "0"b, a_code); 363 if a_code ^= 0 then 364 return; 365 call hcs_$make_ptr (null, ad.terminal || "conv_", "printer", ad.cv_proc, a_code); 366 if a_code ^= 0 then 367 return; 368 end; 369 370 ad.open_description = rtrim (iox_modes (open_mode)); 371 mask = "0"b; 372 373 on any_other call handler; 374 375 call hcs_$set_ips_mask ("0"b, mask); 376 377 iocbp -> iocb.put_chars = remote_printer_put_chars; 378 iocbp -> iocb.control = remote_printer_control; 379 iocbp -> iocb.modes = remote_printer_modes; 380 iocbp -> iocb.position = remote_printer_position; 381 iocbp -> iocb.close = remote_printer_close; 382 iocbp -> iocb.open_descrip_ptr = addr (ad.open_description); 383 384 call iox_$propagate (iocbp); 385 386 call hcs_$reset_ips_mask (mask, mask); 387 388 revert any_other; 389 390 return; 391 392 393 remote_printer_close: 394 entry (a_iocbp, a_code); 395 396 iocbp = a_iocbp -> iocb.actual_iocb_ptr; 397 a_code = 0; 398 adp = iocbp -> iocb.attach_data_ptr; 399 400 if adp = null then do; 401 a_code = error_table_$not_attached; 402 return; 403 end; 404 405 if iocbp -> iocb.open_descrip_ptr = null then do; 406 a_code = error_table_$not_open; 407 return; 408 end; 409 410 call iox_$close (ad.terminal_iocbp, a_code); 411 if a_code = error_table_$not_open | a_code = error_table_$not_attached then 412 a_code = 0; 413 414 mask = "0"b; 415 416 on any_other call handler; 417 418 call hcs_$set_ips_mask ("0"b, mask); 419 420 iocbp -> iocb.open_descrip_ptr = null; 421 iocbp -> iocb.open = remote_printer_open; 422 iocbp -> iocb.detach_iocb = remote_printer_detach; 423 iocbp -> iocb.control = iox_$err_no_operation; 424 iocbp -> iocb.position = iox_$err_no_operation; 425 iocbp -> iocb.modes = iox_$err_no_operation; 426 427 call iox_$propagate (iocbp); 428 429 call hcs_$reset_ips_mask (mask, mask); 430 431 revert any_other; 432 433 return; 434 435 436 remote_printer_put_chars: 437 entry (a_iocbp, a_data_ptr, a_data_chars, a_code); 438 439 iocbp = a_iocbp -> iocb.actual_iocb_ptr; 440 code, a_code = 0; 441 adp = iocbp -> iocb.attach_data_ptr; 442 443 if adp = null then do; 444 a_code = error_table_$not_attached; 445 return; 446 end; 447 448 if iocbp -> iocb.open_descrip_ptr = null then do; 449 a_code = error_table_$not_open; 450 return; 451 end; 452 453 if a_data_chars < 0 | a_data_chars > sys_info$max_seg_size * 4 then do; 454 a_code = error_table_$bad_arg; 455 return; 456 end; 457 458 total_chars, remaining_chars = a_data_chars; /* remaining_chars is decremented as data is sent */ 459 charp = a_data_ptr; /* charp is bumped by prt_conv_ as data is sent */ 460 461 terminal_io_record_ptr = null (); /* for the cleanup handler */ 462 463 call iox_$control (ad.terminal_iocbp, "select_device", addr (printer_device), code); 464 /* HACK FOR THE ibm2780_ TERMINAL DIM */ 465 if code ^= 0 then 466 go to put_chars_ret; 467 468 pcip = addr (ad.remote_pci); /* ready for the prt_conv_ hack. We must force a write of 469* all trailing NL chars, even though they have already been 470* accounted for in the remaining chars. */ 471 472 terminal_io_record_element_size = 9; /* always character data */ 473 terminal_io_record_n_elements = 3 * ad.phys_line_length; 474 /* enough room for 1 printing character and 2 non-printing 475* characters per column (eg: DC1-u X) */ 476 477 on cleanup 478 begin; 479 if terminal_io_record_ptr ^= null () then 480 free terminal_io_record_ptr -> terminal_io_record in (my_area); 481 end; 482 483 call alloc_tio_rec; /* allocate and initialize the terminal_io_record */ 484 485 if ad.record_io then 486 prt_conv_outp = terminal_io_record_ptr; /* full record for record interface */ 487 else prt_conv_outp = addr (terminal_io_record.data); 488 /* use the string for stream interface */ 489 490 do while (remaining_chars > 0 | pci.slew_residue > 0); 491 /* so keep trying while there is anything to slew */ 492 cur_page = pci.page_count; /* save the page number */ 493 494 /* ******************************************************************** 495* * Call prt_conv_ or not, depending on the value of the static * 496* * switch prt_conv_on. * 497* ******************************************************************** */ 498 499 if prt_conv_on then 500 call prt_conv_ (charp, remaining_chars, prt_conv_outp, record_len, pcip); 501 else do; 502 prt_conv_outp = charp; 503 record_len = remaining_chars; 504 remaining_chars = 0; 505 end; 506 507 if ^ad.noprint then do; /* if actually printing, send to the terminal */ 508 if ad.record_io & prt_conv_on then do; 509 call iox_$write_record (ad.terminal_iocbp, terminal_io_record_ptr, 510 4 * currentsize (terminal_io_record), code); 511 end; 512 else do; /* stream output */ 513 call iox_$put_chars (ad.terminal_iocbp, prt_conv_outp, record_len, code); 514 end; 515 if code ^= 0 then 516 go to put_chars_ret; /* trouble */ 517 end; 518 519 if cur_page ^= ad.page_count then do; /* did we turn another page? */ 520 ad.stop_counter = ad.stop_counter + 1; /* bump the page stop counter */ 521 if ad.single_page | (ad.stop_every ^= 0 & ad.stop_counter >= ad.stop_every) then do; 522 ad.stop_counter = 0; 523 code = error_table_$request_pending; 524 /* say we were not done yet */ 525 go to put_chars_ret; /* exit the loop and return to caller */ 526 end; 527 end; 528 end; 529 530 put_chars_ret: 531 if terminal_io_record_ptr ^= null () then 532 free terminal_io_record_ptr -> terminal_io_record in (my_area); 533 534 ad.chars_printed = ad.chars_printed + total_chars - remaining_chars; 535 /* record our progress */ 536 537 a_code = code; 538 539 return; 540 541 542 remote_printer_control: 543 entry (a_iocbp, a_order, a_infop, a_code); 544 545 iocbp = a_iocbp -> iocb.actual_iocb_ptr; 546 adp = iocbp -> iocb.attach_data_ptr; 547 548 if adp = null then do; 549 a_code = error_table_$not_attached; 550 return; 551 end; 552 553 if iocbp -> iocb.open_descrip_ptr = null then do; 554 a_code = error_table_$not_open; 555 return; 556 end; 557 558 infop = a_infop; 559 order = a_order; 560 code, a_code = 0; 561 562 if order = "io_call" then do; 563 if a_infop = null then do; 564 a_code = error_table_$bad_arg; 565 return; 566 end; 567 order = infop -> io_call_info.order_name; 568 infop = null; 569 end; 570 571 /* check for prt_conv_on/prt_conv_off orders and handle them 572* directly without calling remote_printer_control_. */ 573 574 if order = "prt_conv_on" | order = "prt_conv_off" then do; 575 prt_conv_on = order = "prt_conv_on"; 576 return; 577 end; 578 579 call remote_printer_control_ (iocbp, order, infop, code); 580 if code ^= 0 then do; /* if not done or partially completed, pass it on */ 581 call iox_$control (ad.terminal_iocbp, order, infop, ec); 582 if ec = 0 then 583 code = 0; /* let the code from remote_printer_control preveil */ 584 end; 585 586 if order = "reset" then do; 587 call iox_$control (ad.terminal_iocbp, order, infop, ignore); 588 prt_conv_on = "1"b; 589 end; 590 a_code = code; 591 592 return; 593 594 595 remote_printer_modes: 596 entry (a_iocbp, a_new_modes, a_old_modes, a_code); 597 598 iocbp = a_iocbp -> iocb.actual_iocb_ptr; 599 adp = iocbp -> iocb.attach_data_ptr; 600 code, a_code = 0; 601 602 if adp = null then do; 603 a_code = error_table_$not_attached; 604 return; 605 end; 606 607 if iocbp -> iocb.open_descrip_ptr = null then do; 608 a_code = error_table_$not_open; 609 return; 610 end; 611 612 call remote_printer_modes_ (iocbp, a_new_modes, a_old_modes, a_code); 613 614 if a_new_modes = "default" then do; 615 call iox_$modes (ad.terminal_iocbp, a_new_modes, "", ignore); 616 end; 617 else if index (a_new_modes, "non_edited") ^= 0 then do; 618 i = index (a_new_modes, "non_edited"); 619 if i = 1 then 620 call iox_$modes (ad.terminal_iocbp, "non_edited", "", ignore); 621 else if substr (a_new_modes, i - 1, 1) = "^" then 622 call iox_$modes (ad.terminal_iocbp, "default", "", ignore); 623 else call iox_$modes (ad.terminal_iocbp, "non_edited", "", ignore); 624 end; 625 else if index (a_new_modes, "rawo") ^= 0 then do; 626 i = index (a_new_modes, "rawo"); 627 if i = 1 then 628 call iox_$modes (ad.terminal_iocbp, "rawo", "", ignore); 629 else if substr (a_new_modes, i - 1, 1) = "^" then 630 call iox_$modes (ad.terminal_iocbp, "^rawo", "", ignore); 631 else call iox_$modes (ad.terminal_iocbp, "rawo", "", ignore); 632 end; 633 634 return; 635 636 637 remote_printer_position: 638 entry (a_iocbp, a_pos_type, a_pos_value, a_code); 639 640 iocbp = a_iocbp -> iocb.actual_iocb_ptr; 641 adp = iocbp -> iocb.attach_data_ptr; 642 code, a_code = 0; 643 644 if adp = null then do; 645 a_code = error_table_$not_attached; 646 return; 647 end; 648 649 if iocbp -> iocb.open_descrip_ptr = null then do; 650 a_code = error_table_$not_open; 651 return; 652 end; 653 654 call iox_$position (ad.terminal_iocbp, a_pos_type, a_pos_value, a_code); 655 656 return; 657 658 659 660 661 662 663 flip_com_err_sw: 664 entry; 665 666 static_comerr_sw = ^static_comerr_sw; /* flip the bit */ 667 668 call ioa_ ("The printer com err sw is now: ^[on^;off^]", static_comerr_sw); 669 670 return; 671 672 673 get_arg: 674 procedure (idx) returns (character (*)); 675 676 dcl idx fixed bin; 677 678 idx = idx + 1; /* advance the arg index of the main loop */ 679 if idx > hbound (a_option, 1) then do; 680 code = error_table_$noarg; 681 call abort_attach (code, "No argument after ^a.", (a_option (idx - 1))); 682 end; 683 684 return (a_option (idx)); 685 686 end get_arg; 687 688 689 690 cv_dec_arg: 691 procedure (idx) returns (fixed binary); 692 693 dcl idx fixed bin; 694 695 idx = idx + 1; /* advance the arg index of the main loop */ 696 if idx > hbound (a_option, 1) then do; 697 code = error_table_$noarg; 698 call abort_attach (code, "No argument after ^a.", (a_option (idx - 1))); 699 end; 700 701 on conversion go to bad_dec_arg; 702 703 return (bin (a_option (idx))); 704 705 bad_dec_arg: 706 code = error_table_$bad_conversion; 707 call abort_attach (code, "Invalid decimal number. ^a", (a_option (idx))); 708 709 end cv_dec_arg; 710 711 712 713 abort_attach: 714 procedure (code, str1, str2); 715 716 dcl code fixed bin (35); 717 dcl (str1, str2) char (*) aligned; 718 719 /* This proc handles attach errors */ 720 721 if com_err_sw then 722 call com_err_ (code, remote_device_name, str1, str2); 723 724 a_code = code; 725 726 call clean_up; 727 728 go to attach_return; /* abort the attach by non-local go to */ 729 730 end abort_attach; 731 732 733 alloc_tio_rec: 734 procedure (); 735 736 allocate terminal_io_record in (my_area) set (terminal_io_record_ptr); 737 738 unspec (terminal_io_record) = "0"b; /* clear everything */ 739 740 terminal_io_record.version = terminal_io_record_version_1; 741 /* our view of the record structure */ 742 terminal_io_record.device_type = ad.device_type; 743 terminal_io_record.element_size = terminal_io_record_element_size; 744 /* set by our caller */ 745 746 return; 747 748 end alloc_tio_rec; 749 750 751 752 clean_up: 753 procedure (); 754 755 /* this is for any form of abort during attachment */ 756 757 if adp ^= null then do; 758 if ad.terminal_iocbp ^= null then 759 call iox_$detach_iocb (ad.terminal_iocbp, ignore); 760 free adp -> ad in (my_area); 761 adp = null; 762 end; 763 764 iocbp -> iocb.attach_descrip_ptr = null; /* be sure iox_ knows */ 765 iocbp -> iocb.attach_data_ptr = null; 766 iocbp -> iocb.open = iox_$err_no_operation; 767 768 return; 769 770 end clean_up; 771 772 773 handler: 774 procedure (); 775 776 dcl ignore fixed bin (35); 777 778 /* This proc handles faults that occur while masked */ 779 780 if mask then 781 call hcs_$reset_ips_mask (mask, mask); 782 783 mask = ""b; 784 785 call continue_to_signal_ (ignore); 786 787 return; 788 789 end handler; 790 /* Begin include file ..... io_call_info.incl.pl1 */ 1 2 1 3 /* This include file defines the info_structure used by an I/O module to perform an "io_call" order 1 4* on behalf of the io_call command. */ 1 5 /* Coded April 1976 by Larry Johnson */ 1 6 /* Changed June 1977 by Larry Johnson for "io_call_af" order */ 1 7 1 8 dcl io_call_infop ptr; 1 9 1 10 dcl 1 io_call_info aligned based (io_call_infop), 1 11 2 version fixed bin, 1 12 2 caller_name char (32), /* Caller name for error messages */ 1 13 2 order_name char (32), /* Actual name of the order to be performed */ 1 14 2 report entry variable options (variable), 1 15 /* Entry to ioa_ like procedure to report results */ 1 16 2 error entry variable options (variable), 1 17 /* Entry to com_err_ like procedure to report results */ 1 18 2 af_returnp ptr, /* Pointer to return string if "io_call_af" order */ 1 19 2 af_returnl fixed bin, /* Length of string */ 1 20 2 fill (5) bit (36) aligned, 1 21 2 nargs fixed bin, /* Number of additional command arguments provided */ 1 22 2 max_arglen fixed bin, /* Length of longest argument (used to define array) */ 1 23 2 args (0 refer (io_call_info.nargs)) char (0 refer (io_call_info.max_arglen)) varying; 1 24 1 25 dcl io_call_af_ret char (io_call_info.af_returnl) based (io_call_info.af_returnp) varying; 1 26 /* Return string for active function */ 1 27 1 28 /* End include file ..... io_call_info.incl.pl1 */ 790 791 /* BEGIN INCLUDE FILE ..... iocb.incl.pl1 ..... 13 Feb 1975, M. Asherman */ 2 2 /* Modified 11/29/82 by S. Krupp to add new entries and to change 2 3* version number to IOX2. */ 2 4 /* format: style2 */ 2 5 2 6 dcl 1 iocb aligned based, /* I/O control block. */ 2 7 2 version character (4) aligned, /* IOX2 */ 2 8 2 name char (32), /* I/O name of this block. */ 2 9 2 actual_iocb_ptr ptr, /* IOCB ultimately SYNed to. */ 2 10 2 attach_descrip_ptr ptr, /* Ptr to printable attach description. */ 2 11 2 attach_data_ptr ptr, /* Ptr to attach data structure. */ 2 12 2 open_descrip_ptr ptr, /* Ptr to printable open description. */ 2 13 2 open_data_ptr ptr, /* Ptr to open data structure (old SDB). */ 2 14 2 reserved bit (72), /* Reserved for future use. */ 2 15 2 detach_iocb entry (ptr, fixed (35)),/* detach_iocb(p,s) */ 2 16 2 open entry (ptr, fixed, bit (1) aligned, fixed (35)), 2 17 /* open(p,mode,not_used,s) */ 2 18 2 close entry (ptr, fixed (35)),/* close(p,s) */ 2 19 2 get_line entry (ptr, ptr, fixed (21), fixed (21), fixed (35)), 2 20 /* get_line(p,bufptr,buflen,actlen,s) */ 2 21 2 get_chars entry (ptr, ptr, fixed (21), fixed (21), fixed (35)), 2 22 /* get_chars(p,bufptr,buflen,actlen,s) */ 2 23 2 put_chars entry (ptr, ptr, fixed (21), fixed (35)), 2 24 /* put_chars(p,bufptr,buflen,s) */ 2 25 2 modes entry (ptr, char (*), char (*), fixed (35)), 2 26 /* modes(p,newmode,oldmode,s) */ 2 27 2 position entry (ptr, fixed, fixed (21), fixed (35)), 2 28 /* position(p,u1,u2,s) */ 2 29 2 control entry (ptr, char (*), ptr, fixed (35)), 2 30 /* control(p,order,infptr,s) */ 2 31 2 read_record entry (ptr, ptr, fixed (21), fixed (21), fixed (35)), 2 32 /* read_record(p,bufptr,buflen,actlen,s) */ 2 33 2 write_record entry (ptr, ptr, fixed (21), fixed (35)), 2 34 /* write_record(p,bufptr,buflen,s) */ 2 35 2 rewrite_record entry (ptr, ptr, fixed (21), fixed (35)), 2 36 /* rewrite_record(p,bufptr,buflen,s) */ 2 37 2 delete_record entry (ptr, fixed (35)),/* delete_record(p,s) */ 2 38 2 seek_key entry (ptr, char (256) varying, fixed (21), fixed (35)), 2 39 /* seek_key(p,key,len,s) */ 2 40 2 read_key entry (ptr, char (256) varying, fixed (21), fixed (35)), 2 41 /* read_key(p,key,len,s) */ 2 42 2 read_length entry (ptr, fixed (21), fixed (35)), 2 43 /* read_length(p,len,s) */ 2 44 2 open_file entry (ptr, fixed bin, char (*), bit (1) aligned, fixed bin (35)), 2 45 /* open_file(p,mode,desc,not_used,s) */ 2 46 2 close_file entry (ptr, char (*), fixed bin (35)), 2 47 /* close_file(p,desc,s) */ 2 48 2 detach entry (ptr, char (*), fixed bin (35)); 2 49 /* detach(p,desc,s) */ 2 50 2 51 declare iox_$iocb_version_sentinel 2 52 character (4) aligned external static; 2 53 2 54 /* END INCLUDE FILE ..... iocb.incl.pl1 ..... */ 791 792 /* Begin include file ..... iox_modes.incl.pl1 */ 3 2 3 3 /* Written by C. D. Tavares, 03/17/75 */ 3 4 /* Updated 10/31/77 by CDT to include short iox mode strings */ 3 5 3 6 dcl iox_modes (13) char (24) int static options (constant) aligned initial 3 7 ("stream_input", "stream_output", "stream_input_output", 3 8 "sequential_input", "sequential_output", "sequential_input_output", "sequential_update", 3 9 "keyed_sequential_input", "keyed_sequential_output", "keyed_sequential_update", 3 10 "direct_input", "direct_output", "direct_update"); 3 11 3 12 dcl short_iox_modes (13) char (4) int static options (constant) aligned initial 3 13 ("si", "so", "sio", "sqi", "sqo", "sqio", "squ", "ksqi", "ksqo", "ksqu", "di", "do", "du"); 3 14 3 15 dcl (Stream_input initial (1), 3 16 Stream_output initial (2), 3 17 Stream_input_output initial (3), 3 18 Sequential_input initial (4), 3 19 Sequential_output initial (5), 3 20 Sequential_input_output initial (6), 3 21 Sequential_update initial (7), 3 22 Keyed_sequential_input initial (8), 3 23 Keyed_sequential_output initial (9), 3 24 Keyed_sequential_update initial (10), 3 25 Direct_input initial (11), 3 26 Direct_output initial (12), 3 27 Direct_update initial (13)) fixed bin int static options (constant); 3 28 3 29 /* End include file ..... iox_modes.incl.pl1 */ 792 793 4 2 /* BEGIN INCLUDE FILE ... prt_conv_info.incl.pl1 */ 4 3 /* Modified: 12 September 1980 by G. Palter */ 4 4 4 5 4 6 /****^ HISTORY COMMENTS: 4 7* 1) change(87-05-10,Gilcrease), approve(87-07-31,MCR7686), 4 8* audit(88-02-01,Farley), install(88-02-02,MR12.2-1019): 4 9* Add modes.line_nbrs, flags.(eol eof) bits for eor -nb. 4 10* END HISTORY COMMENTS */ 4 11 4 12 4 13 dcl pcip ptr; /* pointer to conversion info structure */ 4 14 4 15 dcl 1 pci based (pcip) aligned, /* printer conversion info structure */ 4 16 2 cv_proc ptr, /* pointer to character conversion procedure */ 4 17 2 lmarg fixed bin, /* left margin indentation */ 4 18 2 rmarg fixed bin, /* right margin limit */ 4 19 2 page_length fixed bin, /* number of lines on page */ 4 20 2 phys_line_length fixed bin, /* physical width of paper */ 4 21 2 phys_page_length fixed bin, /* physical length of paper */ 4 22 2 lpi fixed bin, /* lines per inch */ 4 23 2 sheets_per_page fixed bin, /* sheets of paper per logical page */ 4 24 2 line_count fixed bin, /* count of converted lines */ 4 25 2 page_count fixed bin, /* count of converted pages */ 4 26 2 func fixed bin, /* special conversion function */ 4 27 /* 0 => normal conversion */ 4 28 /* 1 => change NL to FF */ 4 29 /* 2 => change NL to top inside page */ 4 30 /* 3 => change NL to end of page */ 4 31 /* 4 => change NL to top of outside page */ 4 32 (2 modes, /* conversion modes */ 4 33 3 overflow_off bit (1), /* "1"b to suppress end of page overflow */ 4 34 3 single_space bit (1), /* "1"b to change all forms advance chars to NL */ 4 35 3 non_edited bit (1), /* "1"b to print ASCII control chars */ 4 36 3 truncate bit (1), /* "1"b to truncate lines that are too long */ 4 37 3 esc bit (1), /* "1"b to process ESC character */ 4 38 3 ctl_char bit (1), /* "1"b to output control characters */ 4 39 3 line_nbrs bit (1), /* "1"b to output line numbers */ 4 40 3 pci_pad bit (5), 4 41 2 flags, /* flags internal to prt_conv_ */ 4 42 3 ignore_next_ff bit (1), /* ON => prt_conv_ just output a FF; ignore next character if 4 43* it's a FF */ 4 44 3 eol bit (1), /* "1"b = end-of-line encountered */ 4 45 3 eof bit (1), /* "1"b = end-of-segment encountered */ 4 46 3 flags_pad bit (3), 4 47 2 coroutine_modes, 4 48 3 upper_case bit(1), /* "1"b to convert to upper case */ 4 49 3 ht bit(1), /* "1"b to skip tab conversion */ 4 50 3 coroutine_pad bit(13), 4 51 3 slew_table_idx bit(3) ) unal, /* slew table index */ 4 52 2 top_label_line char (136), /* contains an optional top of page label */ 4 53 2 bot_label_line char (136), /* contains an optional bottom of page label */ 4 54 2 top_label_length fixed bin, /* length of top label line */ 4 55 2 bot_label_length fixed bin, /* length of bottom label line */ 4 56 2 form_stops (256) unal, /* logical form stops */ 4 57 3 lbits bit (9), /* leftmost bits */ 4 58 3 rbits bit (9), /* rightmost bits */ 4 59 4 60 /* The following items are for internal use by the print conversion procedure. 4 61* They should be zeroed once and then never referenced again. */ 4 62 4 63 2 level fixed bin, /* overstrike level */ 4 64 2 pos fixed bin, /* print position at end of incomplete line */ 4 65 2 line fixed bin, /* current line number */ 4 66 2 slew_residue fixed bin, /* number of lines remaining to be slewed */ 4 67 2 label_nelem fixed bin, /* characters remaining in label */ 4 68 2 label_wksp ptr, /* pointer to label being processed */ 4 69 2 sav_pos fixed bin, /* position saved during label processing */ 4 70 2 esc_state fixed bin, /* state of ESC processing */ 4 71 2 esc_num fixed bin, /* number following ESC sequence */ 4 72 2 temp bit (36); /* conversion proc temporary */ 4 73 4 74 /* End of include file ...... prt_conv_info.incl.pl1 */ 4 75 793 794 5 2 /* Begin include file ...... prt_info.incl.pl1 */ 5 3 /* last modified 6/12/75 by Noel I. Morris */ 5 4 5 5 dcl pip ptr; /* pointer to printer info structure */ 5 6 5 7 dcl 1 prt_info based (pip) aligned, /* printer info structure */ 5 8 2 devname char (4), /* name of device */ 5 9 2 devx fixed bin, /* device index */ 5 10 2 model fixed bin, /* printer model number */ 5 11 2 type fixed bin, /* printer type number */ 5 12 2 train fixed bin, /* print train ID */ 5 13 2 line_length fixed bin, /* max length of printed line */ 5 14 2 print_idcw bit (36), /* IDCW to print 1 line */ 5 15 2 term_idcw bit (36); /* IDCW to stop printer channel */ 5 16 5 17 /* End of include file ...... prt_info.incl.pl1 */ 5 18 794 795 /* BEGIN INCLUDE FILE ... remote_attach_data.incl.pl1 ... 3/77 */ 6 2 6 3 6 4 6 5 /****^ HISTORY COMMENTS: 6 6* 1) change(88-06-07,Brunelle), approve(88-06-07,MCR7911), 6 7* audit(88-09-29,Wallman), install(88-10-28,MR12.2-1199): 6 8* Model field and static overstrike_data_ptr added for laser printer 6 9* support. 6 10* END HISTORY COMMENTS */ 6 11 6 12 6 13 /* format: style4 */ 6 14 6 15 dcl adp ptr; /* local copy of pointer to attach data */ 6 16 6 17 dcl 1 ad aligned based (adp), 6 18 2 fixed, 6 19 3 runout_spacing fixed bin, 6 20 3 stop_every fixed bin, /* stop every n pages of printing */ 6 21 3 stop_counter fixed bin, 6 22 3 char_mode fixed bin, 6 23 3 record_len fixed bin, /* length of output record in characters */ 6 24 3 line_length fixed bin, /* length of printer line */ 6 25 3 chars_printed fixed bin (35), /* input chars processed since "reset" order */ 6 26 3 device_type fixed bin, /* terminal_io_record device_type code for this attachment 6 27* (See terminal_io_record.incl.pl1) */ 6 28 3 fb_pad fixed bin, 6 29 2 bits, 6 30 3 binary bit (1) unal, 6 31 3 record_io bit (1) unal, /* TRUE - if the iox_ record interface to terminal is used */ 6 32 3 other_bits_padded bit (34) unal, 6 33 3 output_modes, 6 34 4 single_page bit (1) unal, 6 35 4 noprint bit (1) unal, /* if on don't print */ 6 36 4 pad bit (34) unal, 6 37 3 transparent bit (1), /* Set if in transparent mode */ 6 38 3 input_modes bit (36), 6 39 2 ptrs, 6 40 3 terminal_iocbp ptr, /* iocb ptr to terminal dim */ 6 41 3 static_overstrike_data_ptr ptr, /* ptr to overstrike_data */ 6 42 2 chars, 6 43 3 terminal char (32) var, 6 44 3 attach_desc char (256) var, 6 45 3 open_description char (24) var, 6 46 3 model char (32) var, 6 47 2 info like prt_info aligned, 6 48 2 remote_pci like pci aligned; 6 49 6 50 6 51 /* END INCLUDE FILE ... remote_attach_data.incl.pl1 */ 795 796 /* BEGIN INCLUDE FILE ... terminal_io_record.incl.pl1 */ 7 2 /* Created: November 1979 by G. Palter */ 7 3 /* Modified: 26 March 1982 by G. Palter to make the structure more compatible with use of the like attribute */ 7 4 7 5 7 6 /* Record format used by I/O modules designed for communcation with remote I/O daemon stations */ 7 7 7 8 dcl 1 terminal_io_record aligned based (terminal_io_record_ptr), 7 9 2 header, 7 10 3 version fixed binary, 7 11 3 device_type fixed binary, /* type of device sending/receiving this record -- 7 12* reader/printer/punch/teleprinter */ 7 13 3 slew_control, /* slew control data: used for printer and teleprinter only */ 7 14 4 slew_type fixed binary (18) unaligned unsigned, /* type of slewing operation before/after this line -- 7 15* by-count/top-of-form/inside-page/outside-page/to-channel */ 7 16 4 slew_count fixed binary (18) unaligned unsigned,/* # of lines if by count; channel # if to channel */ 7 17 3 flags, 7 18 4 binary bit (1) unaligned, /* ON => data in record should be written in binary mode */ 7 19 4 preslew bit (1) unaligned, /* ON => perform above slew before printing data; 7 20* OFF => perform above slew after printing data */ 7 21 4 pad bit (34) unaligned, 7 22 3 element_size fixed binary, /* # of bits in a data element */ 7 23 3 n_elements fixed binary (24), /* # of elements in the record */ 7 24 2 data, /* force word alignment */ 7 25 3 bits (terminal_io_record_n_elements refer (terminal_io_record.n_elements)) 7 26 bit (terminal_io_record_element_size refer (terminal_io_record.element_size)) unaligned; 7 27 7 28 dcl terminal_io_record_ptr pointer; 7 29 7 30 dcl terminal_io_record_element_size fixed binary; /* used for allocating terminal_io_record structures */ 7 31 dcl terminal_io_record_n_elements fixed binary (24); 7 32 7 33 7 34 /* Manifest constants */ 7 35 7 36 dcl terminal_io_record_version_1 fixed binary static options (constant) initial (1); 7 37 7 38 dcl (TELEPRINTER_DEVICE initial (1), 7 39 READER_DEVICE initial (2), 7 40 PRINTER_DEVICE initial (3), 7 41 PUNCH_DEVICE initial (4)) 7 42 fixed binary static options (constant); 7 43 7 44 dcl (SLEW_BY_COUNT initial (1), 7 45 SLEW_TO_TOP_OF_PAGE initial (2), 7 46 SLEW_TO_INSIDE_PAGE initial (3), /* skip to top of next inside page (head sheet) */ 7 47 SLEW_TO_OUTSIDE_PAGE initial (4), /* skip to top of next outside page (tail sheet) */ 7 48 SLEW_TO_CHANNEL initial (5)) /* skip to specified channel stop */ 7 49 fixed binary static options (constant); 7 50 7 51 7 52 /* Data in record as a character string (terminal_io_record.element_size = 9) */ 7 53 7 54 dcl terminal_io_record_data_chars character (terminal_io_record.n_elements) unaligned 7 55 based (addr (terminal_io_record.bits)); 7 56 7 57 dcl terminal_io_record_data_chars_varying_max_len fixed binary (21); /* Set this before using the varying string. */ 7 58 dcl terminal_io_record_data_chars_varying character (terminal_io_record_data_chars_varying_max_len) varying 7 59 based (addr (terminal_io_record.n_elements)); /* varying string consists of length and data */ 7 60 7 61 7 62 /* Data in record as a bit string (terminal_io_record.element_size = 1) */ 7 63 7 64 dcl terminal_io_record_data_bits bit (terminal_io_record.n_elements) unaligned based (addr (terminal_io_record.bits)); 7 65 7 66 /* END INCLUDE FILE ... terminal_io_record.incl.pl1 */ 796 797 798 end remote_printer_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/09/88 1302.1 remote_printer_.pl1 >spec>install>1208>remote_printer_.pl1 790 1 07/19/79 1547.1 io_call_info.incl.pl1 >ldd>include>io_call_info.incl.pl1 791 2 05/20/83 1846.4 iocb.incl.pl1 >ldd>include>iocb.incl.pl1 792 3 02/02/78 1229.7 iox_modes.incl.pl1 >ldd>include>iox_modes.incl.pl1 793 4 02/04/88 2009.3 prt_conv_info.incl.pl1 >ldd>include>prt_conv_info.incl.pl1 794 5 08/29/75 1310.5 prt_info.incl.pl1 >ldd>include>prt_info.incl.pl1 795 6 11/09/88 0759.7 remote_attach_data.incl.pl1 >ldd>include>remote_attach_data.incl.pl1 796 7 11/12/82 1624.8 terminal_io_record.incl.pl1 >ldd>include>terminal_io_record.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. PRINTER_DEVICE constant fixed bin(17,0) initial dcl 7-38 ref 173 Sequential_output 000155 constant fixed bin(17,0) initial dcl 3-15 set ref 352* Stream_input_output constant fixed bin(17,0) initial dcl 3-15 ref 347 Stream_output 000173 constant fixed bin(17,0) initial dcl 3-15 set ref 347 362* a_code parameter fixed bin(35,0) dcl 40 set ref 140 145* 293 297* 301* 306* 329 333* 337* 342* 348* 352* 354 356* 357 362* 363 365* 366 393 397* 401* 406* 410* 411 411 411* 436 440* 444* 449* 454* 537* 542 549* 554* 560* 564* 590* 595 600* 603* 608* 612* 637 642* 645* 650* 654* 724* a_data_chars parameter fixed bin(21,0) dcl 41 ref 436 453 453 458 a_data_ptr parameter pointer dcl 42 ref 436 459 a_infop parameter pointer dcl 43 ref 542 558 563 a_iocbp parameter pointer dcl 44 ref 140 143 293 296 329 332 393 396 436 439 542 545 595 598 637 640 a_mode parameter fixed bin(17,0) dcl 45 ref 329 346 a_new_modes parameter char packed unaligned dcl 46 set ref 595 612* 614 615* 617 618 621 625 626 629 a_old_modes parameter char packed unaligned dcl 47 set ref 595 612* a_option parameter varying char array dcl 48 ref 140 156 188 189 189 191 193 193 195 197 197 199 201 201 205 209 211 214 679 681 684 696 698 703 707 a_order parameter char packed unaligned dcl 49 ref 542 559 a_pos_type parameter fixed bin(17,0) dcl 50 set ref 637 654* a_pos_value parameter fixed bin(21,0) dcl 51 set ref 637 654* a_sw parameter bit(1) packed unaligned dcl 52 ref 140 144 329 actual_iocb_ptr 12 based pointer level 2 dcl 2-6 ref 332 396 439 545 598 640 ad based structure level 1 dcl 6-17 set ref 163 760 addr builtin function dcl 137 ref 262 382 463 463 468 487 adp 000540 automatic pointer dcl 6-15 set ref 150* 163* 167 168 169 170 171 172 173 174 175 176 177 178 179 190 194 198 206 207 212 217 222 222 227 227 246 247 253 262 263 275 276 298* 300 334* 336 352 355 356 361 362 365 365 370 382 398* 400 410 441* 443 463 468 473 485 507 508 509 513 519 520 520 521 521 521 521 522 534 534 546* 548 581 587 599* 602 615 619 621 623 627 629 631 641* 644 654 742 757 758 758 760 761* any_other 000530 stack reference condition dcl 135 ref 259 269 314 324 373 388 416 431 attach_count 000010 internal static fixed bin(17,0) initial dcl 85 set ref 239* 239 240 240* 242 attach_data_ptr 16 based pointer level 2 dcl 2-6 set ref 263* 298 334 398 441 546 599 641 765* attach_desc 33 based varying char(256) level 3 dcl 6-17 set ref 247* 262 attach_descrip_ptr 14 based pointer level 2 dcl 2-6 set ref 151 262* 318* 764* attach_entry 000100 automatic entry variable dcl 56 set ref 277* 280 attach_entry_name 000104 automatic char(64) packed unaligned dcl 57 set ref 276* 277* 278 281 bin builtin function dcl 137 ref 703 bits 11 based structure level 2 dcl 6-17 set ref 167* char builtin function dcl 137 ref 242 charp 000124 automatic pointer dcl 58 set ref 459* 499* 502 chars 22 based structure level 2 dcl 6-17 set ref 170* chars_printed 6 based fixed bin(35,0) level 3 dcl 6-17 set ref 534* 534 cleanup 000522 stack reference condition dcl 135 ref 161 477 close 36 based entry variable level 2 dcl 2-6 set ref 381* code parameter fixed bin(35,0) dcl 716 in procedure "abort_attach" set ref 713 721* 724 code 000126 automatic fixed bin(35,0) dcl 59 in procedure "remote_printer_" set ref 145* 152* 153* 157* 158* 218* 219* 223* 224* 228* 229* 233* 234* 249* 250 250* 277* 278 278* 280* 281 281* 285* 286 286* 297* 333* 440* 463* 465 509* 513* 515 523* 537 560* 579* 580 582* 590 600* 642* 680* 681* 697* 698* 705* 707* com_err_ 000016 constant entry external dcl 99 ref 721 com_err_sw 000127 automatic bit(1) packed unaligned dcl 60 set ref 144* 721 continue_to_signal_ 000020 constant entry external dcl 100 ref 785 control 66 based entry variable level 2 dcl 2-6 set ref 378* 423* conversion 000000 stack reference condition dcl 135 ref 701 coroutine_modes 200(18) based structure level 3 packed packed unaligned dcl 6-17 cur_page 000130 automatic fixed bin(24,0) dcl 61 set ref 492* 519 currentsize builtin function dcl 137 ref 509 cv_entry_ 000022 constant entry external dcl 101 ref 277 cv_proc 164 based pointer level 3 dcl 6-17 set ref 179* 356* 365* data 6 based structure level 2 dcl 7-8 set ref 487 detach_iocb 26 based entry variable level 2 dcl 2-6 set ref 265* 422* device_opt 000131 automatic varying char(32) dcl 62 set ref 186* 209* 232 234 245 device_type 1 based fixed bin(17,0) level 3 in structure "terminal_io_record" dcl 7-8 in procedure "remote_printer_" set ref 742* device_type 7 based fixed bin(17,0) level 3 in structure "ad" dcl 6-17 in procedure "remote_printer_" set ref 173* 742 dummy 000142 automatic varying char(32) dcl 63 set ref 202* 203 ec 000153 automatic fixed bin(35,0) dcl 64 set ref 581* 582 element_size 4 based fixed bin(17,0) level 3 dcl 7-8 set ref 479 509 530 736* 738 743* error_table_$bad_arg 000024 external static fixed bin(35,0) dcl 102 ref 223 228 233 454 564 error_table_$bad_conversion 000026 external static fixed bin(35,0) dcl 103 ref 705 error_table_$bad_mode 000030 external static fixed bin(35,0) dcl 104 ref 348 error_table_$noarg 000032 external static fixed bin(35,0) dcl 105 ref 218 680 697 error_table_$not_attached 000034 external static fixed bin(35,0) dcl 106 ref 301 337 401 411 444 549 603 645 error_table_$not_closed 000036 external static fixed bin(35,0) dcl 107 ref 306 342 error_table_$not_detached 000040 external static fixed bin(35,0) dcl 108 ref 152 error_table_$not_open 000042 external static fixed bin(35,0) dcl 109 ref 406 411 449 554 608 650 error_table_$request_pending 000044 external static fixed bin(35,0) dcl 110 ref 523 error_table_$wrong_no_of_args 000046 external static fixed bin(35,0) dcl 111 ref 157 fixed based structure level 2 dcl 6-17 set ref 168* get_system_free_area_ 000050 constant entry external dcl 112 ref 147 hbound builtin function dcl 137 ref 156 188 679 696 hcs_$make_ptr 000052 constant entry external dcl 113 ref 356 365 hcs_$reset_ips_mask 000054 constant entry external dcl 114 ref 267 322 386 429 780 hcs_$set_ips_mask 000056 constant entry external dcl 115 ref 261 316 375 418 header based structure level 2 dcl 7-8 ht 200(19) based bit(1) level 4 packed packed unaligned dcl 6-17 set ref 198* i 000154 automatic fixed bin(21,0) dcl 65 set ref 618* 619 621 626* 627 629 idx parameter fixed bin(17,0) dcl 676 in procedure "get_arg" set ref 673 678* 678 679 681 684 idx 000155 automatic fixed bin(17,0) dcl 66 in procedure "remote_printer_" set ref 188* 189 189 190* 191 193 193 194* 195 197 197 199 201 201 202* 205 206* 209 209* 211 212* 214* idx parameter fixed bin(17,0) dcl 693 in procedure "cv_dec_arg" set ref 690 695* 695 696 698 703 707 ignore 000100 automatic fixed bin(35,0) dcl 776 in procedure "handler" set ref 785* ignore 000156 automatic fixed bin(35,0) dcl 67 in procedure "remote_printer_" set ref 587* 615* 619* 621* 623* 627* 629* 631* 758* index builtin function dcl 137 ref 617 618 625 626 info 154 based structure level 2 dcl 6-17 set ref 172* infop 000160 automatic pointer dcl 68 set ref 558* 567 568* 579* 581* 587* io_call_info based structure level 1 dcl 1-10 ioa_ 000060 constant entry external dcl 116 ref 668 iocb based structure level 1 dcl 2-6 iocbp 000162 automatic pointer dcl 69 set ref 143* 151 153 262 263 264 265 266* 280* 285* 296* 298 305 318 320* 332* 334 341 377 378 379 380 381 382 384* 396* 398 405 420 421 422 423 424 425 427* 439* 441 448 545* 546 553 579* 598* 599 607 612* 640* 641 649 764 765 766 iox_$attach_ioname 000062 constant entry external dcl 117 ref 249 iox_$close 000064 constant entry external dcl 118 ref 410 iox_$control 000066 constant entry external dcl 119 ref 463 581 587 iox_$detach_iocb 000070 constant entry external dcl 120 ref 758 iox_$err_no_operation 000072 constant entry external dcl 121 ref 423 424 425 766 iox_$modes 000074 constant entry external dcl 122 ref 615 619 621 623 627 629 631 iox_$open 000076 constant entry external dcl 123 ref 352 362 iox_$position 000100 constant entry external dcl 124 ref 654 iox_$propagate 000102 constant entry external dcl 125 ref 266 320 384 427 iox_$put_chars 000104 constant entry external dcl 126 ref 513 iox_$write_record 000106 constant entry external dcl 127 ref 509 iox_modes 000000 constant char(24) initial array dcl 3-6 ref 370 line 511 based fixed bin(17,0) level 3 dcl 6-17 set ref 178* lpi 173 based fixed bin(17,0) level 3 dcl 6-17 set ref 177* ltrim builtin function dcl 137 ref 242 245 mask 000164 automatic bit(36) dcl 70 set ref 257* 261* 267* 267* 312* 316* 322* 322* 371* 375* 386* 386* 414* 418* 429* 429* 780 780* 780* 783* model 143 based varying char(32) level 3 dcl 6-17 set ref 212* 275 276 modes 56 based entry variable level 2 dcl 2-6 set ref 379* 425* my_area based area(1024) dcl 87 ref 163 479 530 736 760 my_area_ptr 000012 internal static pointer initial dcl 86 set ref 147 147* 163 479 530 736 760 my_options 000165 automatic varying char(256) dcl 71 set ref 184* 195* 195 203* 203 207* 207 247 n_elements 5 based fixed bin(24,0) level 3 dcl 7-8 set ref 479 509 530 736* 738 name 1 based char(32) level 2 dcl 2-6 set ref 153* noprint 12(01) based bit(1) level 4 packed packed unaligned dcl 6-17 set ref 507 null builtin function dcl 137 ref 147 150 151 169 179 277 277 285 285 300 305 318 336 341 356 356 365 365 400 405 420 443 448 461 479 530 548 553 563 568 602 607 644 649 757 758 761 764 765 open 32 based entry variable level 2 dcl 2-6 set ref 264* 421* 766* open_descrip_ptr 20 based pointer level 2 dcl 2-6 set ref 305 341 382* 405 420* 448 553 607 649 open_description 134 based varying char(24) level 3 dcl 6-17 set ref 370* 382 open_mode 000266 automatic fixed bin(17,0) dcl 72 set ref 346* 347 347 370 order 000267 automatic char(32) packed unaligned dcl 73 set ref 559* 562 567* 574 574 575 579* 581* 586 587* order_name 11 based char(32) level 2 dcl 1-10 ref 567 output_modes 12 based structure level 3 dcl 6-17 page_count 176 based fixed bin(17,0) level 3 in structure "ad" dcl 6-17 in procedure "remote_printer_" set ref 519 page_count 12 based fixed bin(17,0) level 2 in structure "pci" dcl 4-15 in procedure "remote_printer_" ref 492 pci based structure level 1 dcl 4-15 pcip 000536 automatic pointer dcl 4-13 set ref 468* 490 492 499* phys_line_length 171 based fixed bin(17,0) level 3 dcl 6-17 set ref 175* 190* 222 222 473 phys_page_length 172 based fixed bin(17,0) level 3 dcl 6-17 set ref 176* 194* 227 227 position 62 based entry variable level 2 dcl 2-6 set ref 380* 424* printer_device 000122 constant char(32) initial packed unaligned dcl 93 set ref 463 463 prt_conv_ 000110 constant entry external dcl 128 ref 499 prt_conv_on 000014 internal static bit(1) initial packed unaligned dcl 88 set ref 499 508 575* 588* prt_conv_outp 000300 automatic pointer dcl 74 set ref 485* 487* 499* 502* 513* prt_info based structure level 1 dcl 5-7 ptrs 16 based structure level 2 dcl 6-17 set ref 169* put_chars 52 based entry variable level 2 dcl 2-6 set ref 377* record_io 11(01) based bit(1) level 3 packed packed unaligned dcl 6-17 set ref 355* 361* 485 508 record_len 000302 automatic fixed bin(21,0) dcl 75 set ref 499* 503* 513* remaining_chars 000303 automatic fixed bin(21,0) dcl 76 set ref 458* 490 499* 503 504* 534 remote_device_name 000116 constant char(15) initial packed unaligned dcl 94 set ref 242 247 721* remote_pci 164 based structure level 2 dcl 6-17 set ref 171* 468 remote_printer_control_ 000112 constant entry external dcl 129 ref 285 579 remote_printer_modes_ 000114 constant entry external dcl 130 ref 612 rtrim builtin function dcl 137 ref 276 370 sheets_per_page 174 based fixed bin(17,0) level 3 dcl 6-17 set ref 174* single_page 12 based bit(1) level 4 packed packed unaligned dcl 6-17 set ref 521 slew_residue 326 based fixed bin(17,0) level 2 dcl 4-15 ref 490 space 006042 constant char(1) initial packed unaligned dcl 95 ref 199 214 246 247 static_comerr_sw 000015 internal static bit(1) initial packed unaligned dcl 89 set ref 144 666* 666 668* stop_counter 2 based fixed bin(17,0) level 3 dcl 6-17 set ref 520* 520 521 522* stop_every 1 based fixed bin(17,0) level 3 dcl 6-17 set ref 521 521 str1 parameter char dcl 717 set ref 713 721* str2 parameter char dcl 717 set ref 713 721* substr builtin function dcl 137 ref 621 629 sys_info$max_seg_size 000116 external static fixed bin(17,0) dcl 131 ref 453 temp_iocbp 000304 automatic pointer dcl 77 set ref 249* 253 terminal 22 based varying char(32) level 3 dcl 6-17 set ref 206* 207 217 246 365 terminal_attach_desc 000306 automatic varying char(256) dcl 78 set ref 185* 246* 249 terminal_attach_options 000407 automatic varying char(256) dcl 79 set ref 183* 191* 191 199* 199 214* 214 245* 245 246 247 terminal_io_record based structure level 1 dcl 7-8 set ref 479 509 530 736 738* terminal_io_record_element_size 000544 automatic fixed bin(17,0) dcl 7-30 set ref 472* 736 736 743 terminal_io_record_n_elements 000545 automatic fixed bin(24,0) dcl 7-31 set ref 473* 736 736 terminal_io_record_ptr 000542 automatic pointer dcl 7-28 set ref 461* 479 479 485 487 509* 509 530 530 736* 738 740 742 743 terminal_io_record_version_1 constant fixed bin(17,0) initial dcl 7-36 ref 740 terminal_iocbp 16 based pointer level 3 dcl 6-17 set ref 253* 352* 362* 410* 463* 509* 513* 581* 587* 615* 619* 621* 623* 627* 629* 631* 654* 758 758* terminal_switch_name 000510 automatic varying char(32) dcl 80 set ref 242* 249 total_chars 000521 automatic fixed bin(24,0) dcl 81 set ref 458* 534 unspec builtin function dcl 137 set ref 171* 172* 738* version based fixed bin(17,0) level 3 dcl 7-8 set ref 740* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. Direct_input internal static fixed bin(17,0) initial dcl 3-15 Direct_output internal static fixed bin(17,0) initial dcl 3-15 Direct_update internal static fixed bin(17,0) initial dcl 3-15 Keyed_sequential_input internal static fixed bin(17,0) initial dcl 3-15 Keyed_sequential_output internal static fixed bin(17,0) initial dcl 3-15 Keyed_sequential_update internal static fixed bin(17,0) initial dcl 3-15 PUNCH_DEVICE internal static fixed bin(17,0) initial dcl 7-38 READER_DEVICE internal static fixed bin(17,0) initial dcl 7-38 SLEW_BY_COUNT internal static fixed bin(17,0) initial dcl 7-44 SLEW_TO_CHANNEL internal static fixed bin(17,0) initial dcl 7-44 SLEW_TO_INSIDE_PAGE internal static fixed bin(17,0) initial dcl 7-44 SLEW_TO_OUTSIDE_PAGE internal static fixed bin(17,0) initial dcl 7-44 SLEW_TO_TOP_OF_PAGE internal static fixed bin(17,0) initial dcl 7-44 Sequential_input internal static fixed bin(17,0) initial dcl 3-15 Sequential_input_output internal static fixed bin(17,0) initial dcl 3-15 Sequential_update internal static fixed bin(17,0) initial dcl 3-15 Stream_input internal static fixed bin(17,0) initial dcl 3-15 TELEPRINTER_DEVICE internal static fixed bin(17,0) initial dcl 7-38 io_call_af_ret based varying char dcl 1-25 io_call_infop automatic pointer dcl 1-8 iox_$iocb_version_sentinel external static char(4) dcl 2-51 pip automatic pointer dcl 5-5 short_iox_modes internal static char(4) initial array dcl 3-12 terminal_io_record_data_bits based bit packed unaligned dcl 7-64 terminal_io_record_data_chars based char packed unaligned dcl 7-54 terminal_io_record_data_chars_varying based varying char dcl 7-58 terminal_io_record_data_chars_varying_max_len automatic fixed bin(21,0) dcl 7-57 NAMES DECLARED BY EXPLICIT CONTEXT. abort_attach 005602 constant entry internal dcl 713 ref 153 158 219 224 229 234 250 278 281 286 681 698 707 alloc_tio_rec 005666 constant entry internal dcl 733 ref 483 attach_return 002701 constant label dcl 289 ref 728 bad_dec_arg 005516 constant label dcl 705 set ref 701 clean_up 005730 constant entry internal dcl 752 ref 161 310 726 cv_dec_arg 005360 constant entry internal dcl 690 ref 190 194 flip_com_err_sw 005204 constant entry external dcl 663 get_arg 005241 constant entry internal dcl 673 ref 202 206 209 212 handler 006002 constant entry internal dcl 773 ref 259 314 373 416 put_chars_ret 004167 constant label dcl 530 ref 465 515 525 remote_printer_ 000474 constant entry external dcl 36 remote_printer_attach 000507 constant entry external dcl 140 remote_printer_close 003445 constant entry external dcl 393 ref 381 remote_printer_control 004223 constant entry external dcl 542 ref 378 remote_printer_detach 002706 constant entry external dcl 293 ref 265 422 remote_printer_modes 004465 constant entry external dcl 595 ref 379 remote_printer_open 003041 constant entry external dcl 329 ref 264 421 remote_printer_position 005124 constant entry external dcl 637 ref 380 remote_printer_put_chars 003632 constant entry external dcl 436 ref 377 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 6662 7002 6044 6672 Length 7462 6044 120 444 616 6 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME remote_printer_ 457 external procedure is an external procedure. on unit on line 161 64 on unit on unit on line 259 64 on unit on unit on line 314 64 on unit on unit on line 373 64 on unit on unit on line 416 64 on unit on unit on line 477 64 on unit get_arg 90 internal procedure uses returns(char(*)) or returns(bit(*)). cv_dec_arg 256 internal procedure enables or reverts conditions. on unit on line 701 64 on unit abort_attach 84 internal procedure is called during a stack extension. alloc_tio_rec internal procedure shares stack frame of external procedure remote_printer_. clean_up 70 internal procedure is called by several nonquick procedures. handler 72 internal procedure is called by several nonquick procedures. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 attach_count remote_printer_ 000012 my_area_ptr remote_printer_ 000014 prt_conv_on remote_printer_ 000015 static_comerr_sw remote_printer_ STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME handler 000100 ignore handler remote_printer_ 000100 attach_entry remote_printer_ 000104 attach_entry_name remote_printer_ 000124 charp remote_printer_ 000126 code remote_printer_ 000127 com_err_sw remote_printer_ 000130 cur_page remote_printer_ 000131 device_opt remote_printer_ 000142 dummy remote_printer_ 000153 ec remote_printer_ 000154 i remote_printer_ 000155 idx remote_printer_ 000156 ignore remote_printer_ 000160 infop remote_printer_ 000162 iocbp remote_printer_ 000164 mask remote_printer_ 000165 my_options remote_printer_ 000266 open_mode remote_printer_ 000267 order remote_printer_ 000300 prt_conv_outp remote_printer_ 000302 record_len remote_printer_ 000303 remaining_chars remote_printer_ 000304 temp_iocbp remote_printer_ 000306 terminal_attach_desc remote_printer_ 000407 terminal_attach_options remote_printer_ 000510 terminal_switch_name remote_printer_ 000521 total_chars remote_printer_ 000536 pcip remote_printer_ 000540 adp remote_printer_ 000542 terminal_io_record_ptr remote_printer_ 000544 terminal_io_record_element_size remote_printer_ 000545 terminal_io_record_n_elements remote_printer_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_e_as alloc_char_temp cat_realloc_chars call_ent_var call_ext_out_desc call_ext_out call_int_this_desc call_int_this call_int_other_desc call_int_other return_mac tra_ext_1 signal_op enable_op shorten_stack ext_entry ext_entry_desc int_entry int_entry_desc set_chars_eis index_chars_eis return_chars_eis any_to_any_truncate_op_alloc_ op_freen_ THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. com_err_ continue_to_signal_ cv_entry_ get_system_free_area_ hcs_$make_ptr hcs_$reset_ips_mask hcs_$set_ips_mask ioa_ iox_$attach_ioname iox_$close iox_$control iox_$detach_iocb iox_$err_no_operation iox_$modes iox_$open iox_$position iox_$propagate iox_$put_chars iox_$write_record prt_conv_ remote_printer_control_ remote_printer_modes_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$bad_arg error_table_$bad_conversion error_table_$bad_mode error_table_$noarg error_table_$not_attached error_table_$not_closed error_table_$not_detached error_table_$not_open error_table_$request_pending error_table_$wrong_no_of_args sys_info$max_seg_size LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 36 000473 140 000501 143 000525 144 000531 145 000543 147 000545 150 000557 151 000561 152 000565 153 000570 156 000614 157 000621 158 000624 161 000647 163 000671 167 000677 168 000715 169 000726 170 000731 171 000735 172 000740 173 000743 174 000745 175 000747 176 000751 177 000753 178 000755 179 000757 183 000761 184 000762 185 000763 186 000764 188 000770 189 001001 190 001026 191 001037 192 001110 193 001112 194 001124 195 001135 196 001206 197 001210 198 001222 199 001225 200 001263 201 001265 202 001277 203 001327 204 001364 205 001366 206 001373 207 001424 208 001461 209 001463 211 001521 212 001530 213 001561 214 001563 215 001621 217 001624 218 001632 219 001635 222 001660 223 001666 224 001671 227 001714 228 001722 229 001725 232 001750 233 001755 234 001760 235 002013 239 002014 240 002016 242 002023 245 002067 246 002137 247 002175 249 002241 250 002306 253 002334 257 002337 259 002340 261 002362 262 002375 263 002401 264 002403 265 002407 266 002412 267 002421 269 002431 275 002432 276 002440 277 002500 278 002530 280 002563 281 002573 285 002624 286 002654 289 002701 293 002702 296 002716 297 002722 298 002724 300 002726 301 002732 302 002735 305 002736 306 002742 307 002745 310 002746 312 002752 314 002753 316 002775 318 003010 320 003013 322 003022 324 003032 326 003033 329 003034 332 003051 333 003056 334 003060 336 003062 337 003066 338 003071 341 003072 342 003076 343 003101 346 003102 347 003104 348 003110 349 003113 352 003114 354 003133 355 003135 356 003140 357 003201 359 003203 361 003204 362 003207 363 003226 365 003230 366 003303 370 003306 371 003340 373 003341 375 003363 377 003376 378 003403 379 003406 380 003411 381 003414 382 003417 384 003422 386 003431 388 003441 390 003442 393 003443 396 003455 397 003462 398 003463 400 003465 401 003471 402 003474 405 003475 406 003501 407 003504 410 003505 411 003516 414 003525 416 003526 418 003550 420 003563 421 003566 422 003572 423 003575 424 003601 425 003603 427 003605 429 003613 431 003623 433 003624 436 003625 439 003642 440 003647 441 003651 443 003653 444 003657 445 003662 448 003663 449 003667 450 003672 453 003673 454 003702 455 003705 458 003706 459 003711 461 003714 463 003716 465 003750 468 003752 472 003755 473 003757 477 003763 479 003777 481 004014 483 004015 485 004016 487 004025 490 004030 492 004035 499 004040 502 004062 503 004064 504 004066 507 004067 508 004073 509 004101 511 004125 513 004126 515 004143 519 004145 520 004151 521 004152 522 004161 523 004162 525 004165 528 004166 530 004167 534 004203 537 004213 539 004215 542 004216 545 004241 546 004246 548 004250 549 004254 550 004257 553 004260 554 004264 555 004267 558 004270 559 004273 560 004300 562 004302 563 004306 564 004312 565 004315 567 004316 568 004322 574 004324 575 004334 576 004342 579 004343 580 004367 581 004371 582 004416 586 004421 587 004425 588 004452 590 004455 592 004457 595 004460 598 004510 599 004515 600 004517 602 004521 603 004525 604 004530 607 004531 608 004535 609 004540 612 004541 614 004567 615 004576 616 004625 617 004626 618 004636 619 004637 621 004675 623 004732 624 004765 625 004766 626 004775 627 004776 629 005031 631 005066 634 005116 637 005117 640 005134 641 005141 642 005143 644 005145 645 005151 646 005154 649 005155 650 005161 651 005164 654 005165 656 005202 663 005203 666 005211 668 005220 670 005237 673 005240 678 005246 679 005250 680 005256 681 005260 682 005330 684 005331 690 005357 695 005365 696 005367 697 005375 698 005377 699 005447 701 005450 703 005467 705 005516 707 005522 709 005574 713 005601 721 005622 724 005652 726 005656 728 005663 733 005666 736 005667 738 005705 740 005717 742 005721 743 005724 746 005726 752 005727 757 005735 758 005742 760 005757 761 005762 764 005765 765 005770 766 005772 768 006000 773 006001 780 006007 783 006021 785 006023 787 006032 ----------------------------------------------------------- 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