COMPILATION LISTING OF SEGMENT iodd_hblp_support_ Compiled by: Multics PL/I Compiler, Release 31a, of October 12, 1988 Compiled at: Honeywell Bull, Phoenix AZ, SysM Compiled on: 12/05/88 1244.4 mst Mon Options: optimize map 1 /****^ ******************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1988 * 4* * * 5* ******************************************** */ 6 7 8 /****^ HISTORY COMMENTS: 9* 1) change(88-06-07,Brunelle), approve(88-06-07,MCR7911), 10* audit(88-10-25,Wallman), install(88-10-28,MR12.2-1199): 11* Created. 12* 2) change(88-11-14,Brunelle), approve(88-11-14,PBF7911), 13* audit(88-11-14,Wallman), install(88-11-14,MR12.2-1212): 14* Correct problem of going into raw output mode for bold faced chars and 15* never returning to normal mode. Also drop the top line on each page 16* enough so the page is centered vertically. 17* 3) change(88-12-05,Brunelle), approve(88-12-05,MECR0005), 18* audit(88-12-05,Wallman), install(88-12-05,MR12.2-1219): 19* Correct first page of document not being properly aligned at top of page. 20* END HISTORY COMMENTS */ 21 22 /* format: style4 */ 23 24 iodd_hblp_support_: proc; 25 return; /* no entry here */ 26 27 /* this module contains the following utility subroutines for the 28* Honeywell Bull Model 80 laser printer: 29* 30* complete_attach - This completes the attachment for the initial iox_$attach 31* call. 32* 33* open - iox_$open replacement for remote_printer_, 34* 35* control - iox_$control replacement for remote_printer_, 36* 37* modes - iox_$modes replacement for remote_printer_, 38* 39* put_chars - iox_$put_chars replacement for remote_printer_. 40* 41**/ 42 43 /* Arguments */ 44 45 dcl a_code fixed bin (35) parameter; /* error code */ 46 dcl a_data_chars fixed bin (21) parameter; /* # of chars to output */ 47 dcl a_data_ptr ptr parameter; /* ptr to data to output */ 48 dcl a_iocbp ptr parameter; /* iocb ptr to process on */ 49 dcl a_mode fixed bin parameter; /* open mode */ 50 dcl a_new_modes char (*) parameter; /* new modes to assign */ 51 dcl a_old_modes char (*) parameter; /* current modes */ 52 dcl a_order char (*) parameter; /* control order to process */ 53 dcl a_orderp ptr parameter; /* options control order info ptr */ 54 dcl a_sw bit (1) parameter; /* com_err_ switch for attach */ 55 56 /* External Procedures and Variables */ 57 58 dcl continue_to_signal_ entry (fixed bin (35)); 59 dcl error_table_$bad_arg fixed bin (35) ext static; 60 dcl error_table_$bad_mode fixed bin (35) ext static; 61 dcl error_table_$not_attached fixed bin (35) ext static; 62 dcl error_table_$not_closed fixed bin (35) ext static; 63 dcl error_table_$not_open fixed bin (35) ext static; 64 dcl error_table_$request_pending fixed bin (35) ext static; 65 dcl error_table_$timeout fixed bin (35) ext static; 66 dcl get_system_free_area_ entry () returns (ptr); 67 dcl hcs_$make_ptr entry (ptr, char (*), char (*), ptr, fixed bin (35)); 68 dcl hcs_$reset_ips_mask entry (bit (36) aligned, bit (36) aligned); 69 dcl hcs_$set_ips_mask entry (bit (36) aligned, bit (36) aligned); 70 dcl iox_$control entry (ptr, char (*), ptr, fixed bin (35)); 71 dcl iox_$modes entry (ptr, char (*), char (*), fixed bin (35)); 72 dcl iox_$open entry (ptr, fixed bin, bit (1) aligned, fixed bin (35)); 73 dcl iox_$propagate entry (ptr); 74 dcl iox_$put_chars entry (ptr, ptr, fixed bin (21), fixed bin (35)); 75 dcl iox_$write_record entry (ptr, ptr, fixed bin (21), fixed bin (35)); 76 dcl prt_conv_ entry (ptr, fixed bin (21), ptr, fixed bin (21), ptr); 77 dcl remote_driver_$problem_notification entry (char (*)); 78 dcl remote_printer_$remote_printer_position external entry; 79 dcl remote_printer_$remote_printer_close external entry; 80 dcl remote_printer_control_ entry (ptr, char (*), ptr, fixed bin (35)); 81 dcl remote_printer_modes_ entry (ptr, char (*), char (*), fixed bin (35)); 82 dcl sys_info$max_seg_size fixed bin (35) ext static; 83 dcl timed_io_$get_chars entry (ptr, fixed bin (71), ptr, fixed bin (21), fixed bin (21), fixed bin (35)); 84 85 dcl (addr, copy, currentsize, divide, index, length, mod, null, rtrim, string, substr, unspec) builtin; 86 87 dcl any_other condition; 88 89 /* Internal Static */ 90 91 dcl VT_or_FF char (2) int static options (constant) init (" "); 92 dcl CR char (1) int static options (constant) init (" "); 93 dcl FF char (1) defined VT_or_FF position (2); 94 dcl NL char (1) int static options (constant) init (" 95 "); 96 dcl last_char_was_ff bit (1) internal static init ("1"b); 97 dcl my_area area based (my_area_ptr); 98 dcl my_area_ptr ptr int static init (null); 99 dcl printer_device char (32) int static options (constant) init ("printer"); 100 dcl prt_conv_on bit (1) int static init ("1"b); /* ON if should call prt_conv_ */ 101 102 /* save data for label processing if needed */ 103 dcl 1 labels int static, 104 2 delta_lines fixed bin, /* number of lines needed for labels */ 105 2 need_initial_ff bit (1) init ("1"b), 106 2 have_labels bit (1) init ("0"b), /* ON if we have top and/or bottom labels */ 107 2 have_top_label bit (1) init ("0"b), /* ON if we have a top label */ 108 2 have_bottom_label bit (1) init ("0"b); /* ON if we have a bottom label */ 109 110 /* Automatic */ 111 112 dcl charp ptr; /* ptr to chars to output */ 113 dcl code fixed bin (35); /* error code */ 114 dcl cur_page fixed bin (24); 115 dcl ec fixed bin (35); /* internal error code */ 116 dcl get_printer_status bit (1); 117 dcl i fixed bin; 118 dcl ignore fixed bin (35); 119 dcl iocbp ptr; /* copy of iocb ptr */ 120 dcl mask bit (36) aligned; /* for setting ips mask */ 121 dcl old_modes char (512); 122 dcl open_mode fixed bin; /* copy of opening mode */ 123 dcl order char (32); /* copy of order to process */ 124 dcl output_string char (record_len) based (prt_conv_outp); 125 dcl prt_conv_outp ptr; 126 dcl record_len fixed bin (21); 127 dcl remaining_chars fixed bin (21); /* # of chars left to process in this put_chars call */ 128 dcl runout_mode bit (1); /* set ON if check_printer_status 129* is called for "runout" control order */ 130 dcl send_raw bit (1); 131 dcl temp_line char (1024) varying; 132 dcl top_line_drop_count fixed bin; 133 dcl total_chars fixed bin (24); /* # of chars requested by put_chars */ 134 135 dcl osdata_ptr ptr; 136 dcl osdata_line_count fixed bin; 137 dcl osdata_line_size fixed bin; 138 dcl osdata_temp_ptr ptr; 139 dcl 1 osdata based (osdata_ptr), 140 2 max_line_count fixed bin, /* max # overstruck lines */ 141 2 line_count fixed bin, /* # overstruck lines */ 142 2 line_size fixed bin, /* # chars in each line */ 143 2 bolding (osdata_line_size refer (osdata.line_size)) bit (1) unaligned, 144 2 line ( 145 osdata_line_count refer (osdata.max_line_count), 146 osdata_line_size refer (osdata.line_size)) 147 char (1) unaligned; 148 149 150 /* entrypoint to complete the processing for the iox_$attach call in 151* remote_printer_. This starts propagating any special processing required 152* for the new device. In our case, it merely causes the open entry in the 153* IOCB to point to our open entry. */ 154 155 complete_attach: entry (a_iocbp, a_code); 156 157 /* copy input args */ 158 iocbp = a_iocbp; /* ptr to iocb to alter */ 159 a_code = 0; 160 161 if my_area_ptr = null then 162 my_area_ptr = get_system_free_area_ (); 163 164 /* mask & alter the IOCB */ 165 mask = "0"b; 166 167 on any_other call handler; 168 169 call hcs_$set_ips_mask ("0"b, mask); 170 iocbp -> iocb.open = hblp_open; 171 call iox_$propagate (iocbp); 172 call hcs_$reset_ips_mask (mask, mask); 173 174 revert any_other; 175 176 /* place init_iocbp does a non-local goto to get out through if not attached */ 177 return_now: 178 return; 179 180 181 /* replacement for iox_$open in remote_printer_ */ 182 183 /* this entrypoint is identical to that in remote_printer_ EXCEPT 184* 185* . it opens it's output switch for input/output where remote_printer_ only 186* opens for output. 187* 188* . it uses our control, modes and put_chars entrypoints. 189**/ 190 191 hblp_open: entry (a_iocbp, a_mode, a_sw, a_code); 192 193 call init_iocbp ("0"b); 194 195 open_mode = a_mode; 196 if ^((open_mode = Stream_output) | (open_mode = Stream_input_output)) then do; 197 a_code = error_table_$bad_mode; 198 return; 199 end; 200 201 /* We will attempt to open the stream for sequential I/O first. If that fails 202* we will then go for stream I/O. In either case we will make note of what 203* worked in ad.record_io. */ 204 call iox_$open (ad.terminal_iocbp, Sequential_input_output, "0"b, a_code); 205 if a_code = 0 then do; 206 ad.record_io = "1"b; /* we have record interface approval */ 207 call hcs_$make_ptr (null, "remote_conv_", "printer", ad.cv_proc, a_code); 208 if a_code ^= 0 then 209 return; 210 end; 211 else do; 212 ad.record_io = "0"b; /* we have stream interface only */ 213 call iox_$open (ad.terminal_iocbp, Stream_input_output, "0"b, a_code); 214 if a_code ^= 0 then 215 return; 216 call hcs_$make_ptr (null, ad.terminal || "conv_", "printer", ad.cv_proc, a_code); 217 if a_code ^= 0 then 218 return; 219 end; 220 221 ad.open_description = rtrim (iox_modes (open_mode)); 222 ad.static_overstrike_data_ptr = null; 223 mask = "0"b; 224 225 on any_other call handler; 226 227 call hcs_$set_ips_mask ("0"b, mask); 228 229 /* These are system entries */ 230 iocbp -> iocb.put_chars = hblp_put_chars; 231 iocbp -> iocb.control = hblp_control; 232 iocbp -> iocb.modes = hblp_modes; 233 234 /* these are my entries */ 235 iocbp -> iocb.position = remote_printer_$remote_printer_position; 236 iocbp -> iocb.close = remote_printer_$remote_printer_close; 237 iocbp -> iocb.open_descrip_ptr = addr (ad.open_description); 238 239 call iox_$propagate (iocbp); 240 241 call hcs_$reset_ips_mask (mask, mask); 242 243 revert any_other; 244 245 return; 246 247 248 /* replacement for iox_$control in remote_printer_ */ 249 250 /* this entrypoint is used so we can pre/post process some of the control orders */ 251 252 hblp_control: entry (a_iocbp, a_order, a_orderp, a_code); 253 254 if debug then call debug_display (1); 255 call init_iocbp ("1"b); 256 257 orderp = a_orderp; 258 order = a_order; 259 code = 0; 260 261 if order = "io_call" then do; /* set up for command call */ 262 if a_orderp = null then do; 263 code = error_table_$bad_arg; 264 go to control_return; 265 end; 266 order = orderp -> io_call_info.order_name; 267 orderp = null; 268 end; 269 270 /* remember to ignore or call prt_conv_ when processing data */ 271 else if order = "prt_conv_on" | order = "prt_conv_off" then do; 272 prt_conv_on = (order = "prt_conv_on"); 273 go to control_return; 274 end; 275 276 /* make sure printer has printed everything sent to it */ 277 else if order = "runout" then do; 278 runout_mode = "1"b; 279 call check_printer_status; 280 end; 281 282 /* issued by do_prt_request_ only to get to bottom of current page, 1 line 283* past where bottom label would be printed on the page. If we are not 284* outputting labels, fake out prt_conv_ so it thinks it is there, otherwise 285* pass the control order on only if we have a bottom label to output. */ 286 else if order = "end_of_page" then do; 287 if ^labels.have_bottom_label then do; 288 pci.line = pci.phys_page_length - 2; 289 go to control_return; 290 end; 291 end; 292 293 /* issued by do_prt_request_ to get to the proper page before starting to 294* display. fake out prt_conv_ by eating the orders here 295* else if order = "inside_page" | order = "outside_page" then do; 296* go to control_return; 297* end; 298**/ 299 300 /* process here so we can handle sheets_per_page properly and return a 0 error 301* code if all goes well */ 302 else if order = "paper_info" then do; /* Set new physical paper characteristics. */ 303 if paper_info.lines_per_inch ^= 6 & paper_info.lines_per_inch ^= 8 then do; 304 bad_arg: code = error_table_$bad_arg; 305 go to control_return; 306 end; 307 if paper_info.phys_page_length < 10 | paper_info.phys_page_length > 127 then 308 go to bad_arg; 309 if paper_info.phys_line_length < 10 | paper_info.phys_line_length > 255 then 310 go to bad_arg; 311 312 pci.phys_page_length = paper_info.phys_page_length; 313 pci.phys_line_length = paper_info.phys_line_length; 314 pci.lpi = paper_info.lines_per_inch; 315 316 /* This is the equivalent of call to prtdim_changemode$remote_printer_modes_ 317* passing in a null new modes. It insures the consistency of prt_conv_info 318* structure. It was moved here so we can special case the sheets_per_page 319* data */ 320 321 pci.rmarg = pci.phys_line_length; 322 pci.lmarg = 0; 323 324 if pci.overflow_off then do; 325 pci.top_label_length, /* "noskip" and page labels are inconsistent */ 326 pci.bot_label_length = 0; 327 pci.page_length = pci.phys_page_length; /* max number of lines on each page */ 328 pci.sheets_per_page = 1; /* one sheet per page in noskip mode */ 329 end; 330 331 /* "^noskip" mode, compute module 10 lines perpage & physical sheets of paper per page */ 332 else do; 333 pci.page_length = pci.phys_page_length - mod (pci.phys_page_length, 10); 334 pci.sheets_per_page = 335 divide (pci.page_length - 1 + pci.phys_page_length, pci.phys_page_length, 17, 0); 336 end; 337 338 go to control_return; 339 end; 340 341 /* let the prtdim control order processor have at the control order. If it 342* returns an error code, it probabily couldn't handle it. In that case we 343* will pass it to the next I/O module following us which may be able to 344* handle it. */ 345 call remote_printer_control_ (iocbp, order, orderp, code); 346 if code ^= 0 then do; /* if not done or partially completed, pass it on */ 347 call iox_$control (ad.terminal_iocbp, order, orderp, ec); 348 if ec = 0 then 349 code = 0; /* let the code from remote_printer_control prevail */ 350 end; 351 352 /* we will post-process the following control orders to allow for any special 353* processing required for the laser printer */ 354 355 /* We will reset pci.page_length to physical page length modulo 10 */ 356 if order = "reset" then do; 357 unspec (labels) = "0"b; /* reset our page labels data */ 358 last_char_was_ff = "1"b; /* we will always start on fresh page */ 359 prt_conv_on = "1"b; /* we will always handle conversion ourselves */ 360 pci.page_length = pci.phys_page_length - mod (pci.phys_page_length, 10); 361 if ad.static_overstrike_data_ptr ^= null then do; 362 free ad.static_overstrike_data_ptr -> osdata; 363 ad.static_overstrike_data_ptr = null; 364 end; 365 end; 366 367 /* set up our internal control orders to handle prt_conv_'s label processing */ 368 else if order = "page_labels" then do; 369 unspec (labels) = "0"b; /* reset our page labels data */ 370 if pci.top_label_length ^= 0 then do; 371 labels.delta_lines = labels.delta_lines + 2; 372 labels.have_labels = "1"b; 373 labels.have_top_label = "1"b; 374 labels.need_initial_ff = "1"b; 375 end; 376 if pci.bot_label_length ^= 0 then do; 377 labels.delta_lines = labels.delta_lines + 2; 378 labels.have_labels = "1"b; 379 labels.have_bottom_label = "1"b; 380 labels.need_initial_ff = "1"b; 381 end; 382 if pci.page_length + labels.delta_lines > pci.phys_page_length then 383 pci.page_length = pci.phys_page_length - labels.delta_lines; 384 end; 385 386 control_return: 387 a_code = code; 388 389 return; 390 391 392 /* replacement for iox_$modes in remote_printer_ */ 393 394 hblp_modes: entry (a_iocbp, a_new_modes, a_old_modes, a_code); 395 396 if debug then call debug_display (2); 397 call init_iocbp ("1"b); 398 code = 0; 399 400 call remote_printer_modes_ (iocbp, a_new_modes, a_old_modes, a_code); 401 402 /* the following is copied from prtdim_changemode.pl1. It is put here so we 403* can recompute the sheets_per_page field properly */ 404 if ^pci.overflow_off then do; /* "^noskip" mode */ 405 pci.sheets_per_page = 406 divide (pci.page_length - 1 + pci.phys_page_length, pci.phys_page_length, 17, 0); 407 end; 408 409 if a_new_modes = "default" then do; 410 call iox_$modes (ad.terminal_iocbp, a_new_modes, "", ignore); 411 end; 412 else if index (a_new_modes, "non_edited") ^= 0 then do; 413 i = index (a_new_modes, "non_edited"); 414 if i = 1 then 415 call iox_$modes (ad.terminal_iocbp, "non_edited", "", ignore); 416 else if substr (a_new_modes, i - 1, 1) = "^" then 417 call iox_$modes (ad.terminal_iocbp, "default", "", ignore); 418 else call iox_$modes (ad.terminal_iocbp, "non_edited", "", ignore); 419 end; 420 else if index (a_new_modes, "rawo") ^= 0 then do; 421 i = index (a_new_modes, "rawo"); 422 if i = 1 then 423 call iox_$modes (ad.terminal_iocbp, "rawo", "", ignore); 424 else if substr (a_new_modes, i - 1, 1) = "^" then 425 call iox_$modes (ad.terminal_iocbp, "^rawo", "", ignore); 426 else call iox_$modes (ad.terminal_iocbp, "rawo", "", ignore); 427 end; 428 429 return; 430 431 432 /* replacement for iox_$put_chars in remote_printer_ */ 433 434 hblp_put_chars: entry (a_iocbp, a_data_ptr, a_data_chars, a_code); 435 436 dcl (col_no, line_no) fixed bin; 437 438 if debug then call debug_display (3); 439 call init_iocbp ("1"b); 440 code = 0; 441 442 if a_data_chars < 0 | a_data_chars > sys_info$max_seg_size * 4 then do; 443 a_code = error_table_$bad_arg; 444 return; 445 end; 446 447 total_chars, remaining_chars = a_data_chars; /* remaining_chars is decremented as data is sent */ 448 charp = a_data_ptr; /* charp is bumped by prt_conv_ as data is sent */ 449 450 call iox_$control (ad.terminal_iocbp, "select_device", addr (printer_device), code); 451 if code ^= 0 then 452 go to put_chars_ret; 453 454 /* allocate the terminal_io_record */ 455 terminal_io_record_element_size = 9; /* character data */ 456 terminal_io_record_n_elements = 3 * ad.phys_line_length; /* enough room for 1 printing character and 2 non-printing 457* characters per column (eg: DC1-u X) */ 458 459 /* get copy of terminal io record that we will send out */ 460 allocate terminal_io_record in (my_area) set (terminal_io_record_ptr); 461 462 unspec (terminal_io_record) = "0"b; /* clear everything */ 463 terminal_io_record.version = terminal_io_record_version_1; 464 terminal_io_record.device_type = ad.device_type; 465 terminal_io_record.element_size = terminal_io_record_element_size; 466 terminal_io_record.n_elements = terminal_io_record_n_elements; 467 468 if ad.record_io then 469 prt_conv_outp = terminal_io_record_ptr; /* full record for record interface */ 470 else prt_conv_outp = addr (terminal_io_record.data); /* use the string portion for stream interface */ 471 472 send_raw = "0"b; 473 get_printer_status = "0"b; 474 osdata_ptr = ad.static_overstrike_data_ptr; 475 top_line_drop_count = (pci.phys_page_length - pci.page_length - labels.delta_lines) / 2; 476 477 do while (remaining_chars > 0 | pci.slew_residue > 0); 478 /* so keep trying while there is anything to slew */ 479 cur_page = pci.page_count; /* save the page number */ 480 481 /* if prt_conv_on switch is ON, use prt_conv_ to parse each line and determine 482* when page breaks occur. */ 483 if prt_conv_on then do; 484 call prt_conv_ (charp, remaining_chars, prt_conv_outp, record_len, pcip); 485 if debug then call debug_display (4); 486 487 /* see if any overstriking is required for this line */ 488 if (substr (output_string, record_len, 1) = CR 489 | pci.level > 0 490 | pci.slew_residue < 0) 491 | osdata_ptr ^= null then do; 492 call process_overstrike_string; 493 end; 494 else send_raw = "0"b; /* no special processing on this line */ 495 end; 496 497 /* if prt_conv_on switch is OFF, just pass all characters on. We will ignore 498* any form feeds because they might be binary data instead of a true form feed. */ 499 else do; 500 prt_conv_outp = charp; 501 record_len = remaining_chars; 502 remaining_chars = remaining_chars - record_len; 503 end; 504 505 /* if we are not printing, just ignore any of the output code */ 506 if ad.noprint then 507 go to skip_line_print; 508 509 /* if we are not running in prt_conv_on mode (raw output), just output the line */ 510 if ^prt_conv_on then 511 go to send_line_out; 512 513 /* skip this line if 2nd sucesssive Form Feed */ 514 if output_string = FF then do; /* have line just containing FF */ 515 if last_char_was_ff then /* already ejected one page */ 516 go to skip_line_print; /* so ignore the line */ 517 last_char_was_ff = "1"b; /* remember this FF */ 518 end; 519 else do; /* have data */ 520 last_char_was_ff = (substr (output_string, record_len, 1) = FF); /* remember if this line ends in FF */ 521 end; 522 523 /* we just found a form feed. If we are in labels mode, it is 524* 1) the one just following the top label if top labels are being used. 525* . We have to replace it with a new line. If this is the first label being 526* . generated, we issue a form feed to get us to the next page then display 527* . the top label. For all subsequent labels, we just replace the form feed 528* . with a new line since prt_conv_ will space us to the next page properly. 529* 2) The one just following the bottom label if top labels are not being used. 530* . In this case, we will do nothing. 531* If we are not in labels mode, it follows the last line on the previous page 532* so adjust the top line down so it is centered vertically on the page */ 533 534 if last_char_was_ff then do; 535 if labels.have_labels then do; 536 if labels.have_top_label then do; 537 if labels.need_initial_ff then do; 538 labels.need_initial_ff = "0"b; 539 temp_line = FF; 540 end; 541 else temp_line = ""; 542 temp_line = temp_line || substr (output_string, 1, record_len - 1); 543 temp_line = temp_line || NL; 544 temp_line = temp_line || NL; 545 record_len = length (temp_line); 546 output_string = temp_line; 547 if debug then call debug_display (5); 548 end; 549 end; 550 else do; 551 if top_line_drop_count > 0 then do; 552 temp_line = output_string; 553 temp_line = temp_line || copy (NL, top_line_drop_count); 554 record_len = length (temp_line); 555 output_string = temp_line; 556 end; 557 end; 558 end; 559 560 /* see if the slew residue denotes there are multiple new lines to follow this 561* one. If not zero, add the extra new lines to this record so that only one 562* call is made to iox_$put_chars instead of one for each slew residue count. */ 563 if pci.slew_residue > 0 then do; 564 i = terminal_io_record.n_elements - record_len; /* determine # chars left in record */ 565 if pci.slew_residue < i then 566 i = pci.slew_residue; 567 temp_line = output_string; 568 temp_line = temp_line || copy (NL, i); 569 record_len = length (temp_line); 570 output_string = temp_line; 571 pci.slew_residue = pci.slew_residue - i; 572 end; 573 574 /* output the data line itself */ 575 send_line_out: 576 if ad.record_io then do; 577 call iox_$write_record (ad.terminal_iocbp, terminal_io_record_ptr, 578 4 * currentsize (terminal_io_record), code); 579 end; 580 else do; /* stream output */ 581 if send_raw then 582 call iox_$modes (ad.terminal_iocbp, "rawo", old_modes, ignore); 583 call iox_$put_chars (ad.terminal_iocbp, prt_conv_outp, record_len, code); 584 if send_raw then 585 call iox_$modes (ad.terminal_iocbp, "^rawo", "", ignore); 586 end; 587 if code ^= 0 then 588 go to put_chars_ret; /* trouble */ 589 590 skip_line_print: 591 592 /* compute lines and pages based on function of bytes if running in rawo mode */ 593 if ^prt_conv_on then do; 594 pci.line = 0; 595 pci.line_count = pci.line_count + total_chars / 60; 596 pci.page_count = pci.page_count + total_chars / 3600; 597 end; 598 599 if cur_page ^= ad.page_count then do; /* did we turn another page? */ 600 ad.stop_counter = ad.stop_counter + 1; /* bump the page stop counter */ 601 if ad.single_page | (ad.stop_every ^= 0 & ad.stop_counter >= ad.stop_every) then do; 602 ad.stop_counter = 0; 603 code = error_table_$request_pending; 604 /* say we were not done yet */ 605 go to put_chars_ret; /* exit the loop and return to caller */ 606 end; 607 end; 608 prt_conv_loop_end: 609 end; 610 611 put_chars_ret: 612 613 if terminal_io_record_ptr ^= null then do; 614 free terminal_io_record_ptr -> terminal_io_record in (my_area); 615 end; 616 617 ad.static_overstrike_data_ptr = osdata_ptr; 618 619 ad.chars_printed = ad.chars_printed + total_chars - remaining_chars; 620 /* record our progress */ 621 622 a_code = code; 623 return; 624 625 process_overstrike_string: proc; 626 627 /* this routine will do the following: 628* 629* 1. If there is no current overstrike data, it will save the current string 630* and let it be output as is. 631* 632* 2. If there is current overstrike data, compare each character in the new 633* string for matches with all other text outputted for this line. If there 634* are matches it will add a 'Begin_bold" before the characters and follow 635* them with an 'End_bold' command. It will use this new line as the output 636* line. 637* 638* 3. If the current line ends in a line feed, it will release the overstrike 639* structure */ 640 641 dcl Begin_bold char (2) int static options (constant) /* ESC O */ 642 init ("O"); 643 dcl End_bold char (2) int static options (constant) /* ESC & */ 644 init ("&"); 645 646 dcl tmp_line char (osdata.line_size) based; 647 dcl bold_on bit (1); 648 649 /* If we have no current overstrike data available, allocate a buffer for 5 650* lines. If we already have more than 5 lines of data allocate a larger 651* buffer and add the new line to it */ 652 653 if osdata_ptr = null then do; 654 osdata_line_count = 5; 655 osdata_line_size = terminal_io_record.n_elements; 656 allocate osdata in (my_area); 657 osdata.line_count = 0; 658 osdata.line (*, *) = ""; 659 osdata.bolding (*) = "0"b; 660 end; 661 else if osdata.line_count + 1 > osdata.max_line_count then do; 662 osdata_line_count = osdata.max_line_count + 5; 663 osdata_line_size = osdata.line_size; 664 allocate osdata in (my_area) set (osdata_temp_ptr); 665 osdata_temp_ptr -> osdata.line_count = osdata.line_count; 666 osdata_temp_ptr -> osdata.bolding (*) = "0"b; 667 osdata_temp_ptr -> osdata.line (*, *) = ""; 668 do i = 1 to osdata.line_count; 669 addr (osdata_temp_ptr -> osdata.line (i, 1)) -> tmp_line = 670 addr (osdata.line (i, 1)) -> tmp_line; 671 end; 672 free osdata; 673 osdata_ptr = osdata_temp_ptr; 674 end; 675 osdata.line_count = osdata.line_count + 1; 676 addr (osdata.line (osdata.line_count, 1)) -> tmp_line = output_string; 677 send_raw = "0"b; /* assume no special chars in output line */ 678 679 /* if this is the first line then just let that line print as is */ 680 if osdata.line_count = 1 then 681 return; 682 683 /* Now process the new data line. Check each column position outputted so far 684* for duplicate chars in this line and turn on the bolding bit if found */ 685 osdata.bolding (*) = "0"b; /* no bolding yet */ 686 do col_no = 1 to record_len; 687 do line_no = 1 to osdata.line_count - 1 while (^osdata.bolding (col_no)); 688 if osdata.line (osdata.line_count, col_no) ^= " " then do; 689 if osdata.line (osdata.line_count, col_no) = osdata.line (line_no, col_no) then do; 690 osdata.bolding (col_no) = "1"b; 691 end; 692 end; 693 end; 694 end; 695 696 /* Now see if any bolding bits were turned on. If so we have to build a new 697* output line putting the Begin/End_bold command sequences around each set of 698* characters to be bolded; otherwise just return */ 699 if index (string (osdata.bolding), "1"b) = 0 then 700 go to process_overstrike_return; 701 702 temp_line = ""; 703 bold_on = "0"b; 704 do col_no = 1 to record_len; 705 if ^osdata.bolding (col_no) then do; 706 if bold_on then do; 707 send_raw = "1"b; 708 bold_on = "0"b; 709 temp_line = temp_line || End_bold; 710 end; 711 end; 712 else do; 713 if ^bold_on then do; 714 send_raw = "1"b; 715 bold_on = "1"b; 716 temp_line = temp_line || Begin_bold; 717 end; 718 end; 719 temp_line = temp_line || osdata.line (osdata.line_count, col_no); 720 end; 721 if bold_on then do; 722 send_raw = "1"b; 723 bold_on = "0"b; 724 temp_line = temp_line || End_bold; 725 end; 726 727 /* replace the output line with the new one with bolding characters inserted */ 728 record_len = length (temp_line); 729 output_string = temp_line; 730 731 /* if this line is last one of an overstrike set, get rid of the overstrike 732* data structure */ 733 process_overstrike_return: 734 if substr (output_string, record_len, 1) = NL then do; 735 free osdata; 736 osdata_ptr = null; 737 if send_raw then do; 738 record_len = record_len + 1; 739 substr (output_string, record_len, 1) = CR; 740 end; 741 end; 742 end process_overstrike_string; 743 744 745 check_printer_status: proc; 746 747 /* this routine will make sure 748* 1. the printer is still talking to the user. 749* 2. it is still in an error free condition (has paper & toner, all covers closed) 750* 3. It has printed everything sent to it. (no data waiting) */ 751 752 dcl status_requests char (6) unaligned; 753 754 dcl STX char (1) int static options (constant) init (""); 755 dcl PAGE_TIMEOUT fixed bin (71) int static init (15000000);/* 15 seconds */ 756 dcl PROBLEM_TIMEOUT fixed bin (71) int static init (300000000); /* 5 minutes */ 757 758 dcl chars_read fixed bin (21); 759 dcl input_buffer char (256); 760 dcl stx_loc fixed bin; 761 dcl timeout_to_use fixed bin (71); 762 763 dcl 1 status_byte_1 unaligned, 764 2 pad1 bit (1), 765 2 parity bit (1), 766 2 test_in_progress bit (1), 767 2 no_data bit (1), 768 2 cover_open bit (1), 769 2 auto_lf bit (1), 770 2 no_paper bit (1), 771 2 hmi bit (1), 772 2 no_toner bit (1); 773 774 dcl 1 status_byte_3 unaligned, 775 2 pad1 bit (1) unaligned, 776 2 parity bit (1) unaligned, 777 2 always_zero bit (5) unaligned, 778 2 exit_paper_jam bit (1) unaligned, 779 2 feed_paper_jam bit (1) unaligned; 780 781 get_printer_status = "0"b; /* be nice to caller */ 782 if ("1"b) then return; /* ignore for now */ 783 status_requests = Request_status_byte_1 || Request_status_byte_3; 784 /* make sure modes are such that we can communicate properly */ 785 call iox_$modes (ad.terminal_iocbp, "breakall,rawo,rawi", old_modes, ec); 786 timeout_to_use = PAGE_TIMEOUT; /* allow 15 seconds for it to respond */ 787 788 request_status_again: /* request the status */ 789 call iox_$put_chars (ad.terminal_iocbp, addr (status_requests), length (status_requests), ec); 790 791 /* wait for status return from the printer. */ 792 read_status_again: 793 call timed_io_$get_chars (ad.terminal_iocbp, timeout_to_use, addr (input_buffer), 794 length (input_buffer), chars_read, ec); 795 796 /* if the get_chars times out, it's because the communications stopped. 797* It might be that comm is gone or the printer itself may have a problem. 798* Warn someone about the problem. then wait to see if the have corrected */ 799 if ec ^= 0 then do; 800 if ec = error_table_$timeout then do; 801 call remote_driver_$problem_notification ("The printer is not responding."); 802 timeout_to_use = PROBLEM_TIMEOUT; /* wait for 5 minutes before complaining again */ 803 go to read_status_again; 804 end; 805 end; 806 807 /* got a response from the printer, look for the STX which starts the message */ 808 stx_loc = index (input_buffer, STX); 809 if stx_loc = 0 then /* not there */ 810 goto read_status_again; /* must be more to read */ 811 812 /* Now that we have start of message, isolate the status byte and check it */ 813 unspec (status_byte_1) = unspec (substr (input_buffer, stx_loc + 1, 1)); 814 unspec (status_byte_3) = unspec (substr (input_buffer, stx_loc + 3, 1)); 815 816 if status_byte_1.cover_open then do; 817 call remote_driver_$problem_notification ("The printer has a cover open."); 818 go to request_status_again; 819 end; 820 821 if status_byte_1.no_paper then do; 822 call remote_driver_$problem_notification ("The printer is out of paper."); 823 go to request_status_again; 824 end; 825 826 if status_byte_3.feed_paper_jam then do; 827 call remote_driver_$problem_notification ("The printer has a feed paper jam."); 828 go to request_status_again; 829 end; 830 831 if status_byte_3.exit_paper_jam then do; 832 call remote_driver_$problem_notification ("The printer has a exit paper jam."); 833 go to request_status_again; 834 end; 835 836 if ^status_byte_1.no_data then /* still has some data in it */ 837 go to request_status_again; 838 839 /* reset modes back to the way they were when we started */ 840 call iox_$modes (ad.terminal_iocbp, old_modes, "", ec); 841 842 end check_printer_status; 843 844 845 /* subroutines */ 846 847 /* This proc handles faults that occur while masked */ 848 849 handler: procedure (); 850 851 dcl ignore fixed bin (35); /* dummy error code */ 852 853 if mask then 854 call hcs_$reset_ips_mask (mask, mask); 855 856 mask = ""b; 857 858 call continue_to_signal_ (ignore); 859 860 return; 861 862 end handler; 863 864 865 init_iocbp: proc (check_for_open); 866 867 /* set up all required variables from the iocb */ 868 869 dcl check_for_open bit (1); /* if ON, check for iocb being open */ 870 /* if OFF, check for iocb being closed */ 871 872 iocbp = a_iocbp -> iocb.actual_iocb_ptr; 873 adp = iocbp -> iocb.attach_data_ptr; 874 if adp = null then do; 875 a_code = error_table_$not_attached; 876 go to return_now; 877 end; 878 if ^check_for_open then do; 879 if iocbp -> iocb.open_descrip_ptr ^= null then do; 880 a_code = error_table_$not_closed; 881 go to return_now; 882 end; 883 end; 884 else do; 885 if iocbp -> iocb.open_descrip_ptr = null then do; 886 a_code = error_table_$not_open; 887 go to return_now; 888 end; 889 end; 890 891 pcip = addr (ad.remote_pci); 892 a_code = 0; 893 894 end init_iocbp; 895 896 dcl debug bit (1) int static init ("0"b); 897 dcl ioa_ entry () options (variable); 898 899 dbgn: entry; 900 debug = "1"b; 901 goto dbg_report; 902 903 dbgf: entry; 904 debug = "0"b; 905 goto dbg_report; 906 907 dbgs: entry; 908 dbg_report: 909 call ioa_ ("Debug is ^[ON^;OFF^]", debug); 910 return; 911 912 debug_display: proc (which_display); 913 914 dcl which_display fixed bin; 915 916 if which_display = 1 then 917 call ioa_ ("hblp_control - order = ^a", a_order); 918 else if which_display = 2 then 919 call ioa_ ("hblp_modes - new_modes = ^a", a_new_modes); 920 else if which_display = 3 then 921 call ioa_ ("hblp_put_chars - string length = ^d", a_data_chars); 922 else if which_display = 4 then 923 call ioa_ ("^5d ^5d ^5d ^5d ^5d ^5d ^5d ^[NL^]^[FF^]^[CR^] ^a", 924 pci.page_count, pci.line_count, pci.line, pci.func, 925 pci.level, pci.slew_residue, record_len - 1, 926 (substr (output_string, record_len, 1) = NL), 927 (substr (output_string, record_len, 1) = FF), 928 (substr (output_string, record_len, 1) = CR), 929 substr (output_string, 1, record_len - 1)); 930 else if which_display = 5 then 931 call ioa_ ("print_the_line changing FF to NL & outputting FF"); 932 933 end debug_display; 934 /* 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 */ 934 935 /* 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 ..... */ 935 936 /* BEGIN INCLUDE FILE ... iod_tables_hdr.incl.pl1 */ 3 2 3 3 3 4 3 5 /****^ HISTORY COMMENTS: 3 6* 1) change(88-01-27,Brunelle), approve(), audit(), install(): 3 7* Ancient History 3 8* Created by J. Stern, 1/20/75 3 9* Modified by J. C. Whitmore April 1978 for enhancements 3 10* Modified by J. C. Whitmore, 10/78, for version 3 iod_tables format. 3 11* Modified by E. N. Kittlitz, 6/81, for version 4 iod_tables with expanded 3 12* q_group_tab 3 13* 2) change(88-02-18,Brunelle), approve(88-08-31,MCR7911), 3 14* audit(88-09-29,Wallman), install(88-10-28,MR12.2-1199): 3 15* Change version number to reflect changes in q_group_tab and 3 16* iod_device_tab for laser printer support. Added font tables. 3 17* END HISTORY COMMENTS */ 3 18 3 19 3 20 /* format: style4 */ 3 21 3 22 dcl ithp ptr; /* ptr to io daemon dables and it's header */ 3 23 dcl 1 iod_tables_hdr aligned based (ithp), /* header of data segment compiled by iod_table_compiler */ 3 24 2 version char (8), /* version of this structure */ 3 25 2 date_time_compiled fixed bin (71), 3 26 2 grace_time fixed bin (71), /* grace time before deleting finished segment */ 3 27 2 max_queues fixed bin (17), /* default number of priority queues per queue group */ 3 28 2 line_tab_offset fixed bin (18), /* offset of line id table */ 3 29 2 device_tab_offset fixed bin (18), /* offset of device table */ 3 30 2 minor_device_tab_offset fixed bin (18), /* offset of minor device table */ 3 31 2 dev_class_tab_offset fixed bin (18), /* offset of device class table */ 3 32 2 q_group_tab_offset fixed bin (18), /* offset of queue group table */ 3 33 2 forms_info_tab_offset fixed bin (18), /* offset of forms info tables */ 3 34 2 text_strings_offset fixed bin (18), 3 35 2 start_of_tables fixed bin; /* beginning of above tables, MUST start on even word boundry */ 3 36 3 37 /* Defines common text block to store virtually all text in the I/O daemon tables */ 3 38 dcl text_strings_ptr ptr; 3 39 dcl 1 text_strings aligned based (text_strings_ptr), 3 40 2 length fixed bin, 3 41 2 chars char (1 refer (text_strings.length)) unaligned; 3 42 3 43 /* this defines text offsets used to locate i/o daemon tables strings in 3 44* the text_strings structure */ 3 45 dcl 1 text_offset based, 3 46 2 first_char fixed bin (18) unsigned unaligned, 3 47 2 total_chars fixed bin (18) unsigned unaligned; 3 48 3 49 dcl IODT_VERSION_5 char (8) int static options (constant) init ("IODT0005"); /* current version number */ 3 50 3 51 3 52 /* END INCLUDE FILE ... iod_tables_hdr.incl.pl1 */ 936 937 /* BEGIN INCLUDE FILE iodd_hblp_commands.incl.pl1. */ 4 2 4 3 4 4 /****^ HISTORY COMMENTS: 4 5* 1) change(88-08-31,Brunelle), approve(88-08-31,MCR7911), 4 6* audit(88-10-12,Wallman), install(88-10-28,MR12.2-1199): 4 7* Created. 4 8* END HISTORY COMMENTS */ 4 9 4 10 /* format: style4 */ 4 11 4 12 4 13 /* ******************************************************************** 4 14* * PAGE FORMAT COMMANDS * 4 15* ******************************************************************** */ 4 16 4 17 dcl 1 Set_page_orientation int static, 4 18 2 header char (3) unaligned init ("D"), /* ESC DC2 D */ 4 19 2 body pic "9" unaligned, /* 1 = portrait */ 4 20 /* 2 = landscape */ 4 21 2 trailer char (1) unaligned init (" "); /* SP */ 4 22 4 23 dcl 1 Set_page_length int static, 4 24 2 header char (2) unaligned /* ESC FF */ 4 25 init (" "), 4 26 2 body char (1) unaligned; /* xx */ 4 27 /* lines/page */ 4 28 4 29 dcl Set_top_margin_position char (2) int static init ("T"); /* ESC T */ 4 30 4 31 dcl 1 Set_top_margin_count int static, 4 32 2 header char (3) unaligned init ("T"), /* ESC DC4 T */ 4 33 2 body char (1) unaligned; /* xx */ 4 34 /* (xx-1) * VMI */ 4 35 4 36 dcl 1 Set_top_margin int static, /* 1/48 inches */ 4 37 2 header char (3) unaligned init ("T"), /* ESC DC2 T */ 4 38 2 body pic "9999" unaligned, /* n n n n */ 4 39 2 trailer char (1) unaligned init (" "); /* SP */ 4 40 4 41 dcl Set_bottom_margin_position char (2) int static init ("L"); /* ESC L */ 4 42 4 43 dcl 1 Set_bottom_margin_count int static, 4 44 2 header char (3) unaligned init ("L"), /* ESC DC4 L */ 4 45 2 body char (1) unaligned; /* xx */ 4 46 /* (xx-1) * VMI */ 4 47 4 48 dcl 1 Set_bottom_margin int static, /* 1/48 inches */ 4 49 2 header char (3) unaligned init ("L"), /* ESC DC2 L */ 4 50 2 body pic "9999" unaligned, /* n n n n */ 4 51 2 trailer char (1) unaligned init (" "); /* SP */ 4 52 4 53 dcl Set_left_margin_position char (2) int static init ("9"); /* ESC 9 */ 4 54 4 55 dcl 1 Set_left_margin_count int static, 4 56 2 header char (3) unaligned init ("9"), /* ESC DC4 9 */ 4 57 2 body char (1) unaligned; /* xx */ 4 58 /* (xx-1) * HMI */ 4 59 4 60 dcl 1 Set_left_margin int static, /* 1/120 inches */ 4 61 2 header char (3) unaligned init ("9"), /* ESC DC2 9 */ 4 62 2 body pic "9999" unaligned, /* n n n n */ 4 63 2 trailer char (1) unaligned init (" "); /* SP */ 4 64 4 65 dcl Set_right_margin_position char (2) int static init ("0"); /* ESC 0 */ 4 66 4 67 dcl 1 Set_right_margin_count int static, 4 68 2 header char (3) unaligned init ("0"), /* ESC DC4 0 */ 4 69 2 body char (1) unaligned; /* xx */ 4 70 /* (xx-1) * HMI */ 4 71 4 72 dcl 1 Set_right_margin int static, /* 1/120 inches */ 4 73 2 header char (3) unaligned init ("0"), /* ESC DC2 0 */ 4 74 2 body pic "9999" unaligned, /* n n n n */ 4 75 2 trailer char (1) unaligned init (" "); /* SP */ 4 76 4 77 4 78 dcl Clear_margins char (2) int static init ("C"); /* ESC C */ 4 79 /* resets top & */ 4 80 /* bottom only */ 4 81 4 82 /* ******************************************************************** 4 83* * REMOTE DIAGNOSTIC COMMANDS * 4 84* ******************************************************************** */ 4 85 4 86 dcl Initialize_printer char (3) int static init ("I"); /* ESC SUB I */ 4 87 4 88 dcl Soft_reset char (3) int static /* ESC CR P */ 4 89 init (" P"); 4 90 4 91 dcl Error_reset char (3) int static init ("R"); /* ESC SUB R */ 4 92 4 93 dcl Request_status_byte_1 char (3) int static init ("1");/* ESC SUB 1 */ 4 94 4 95 dcl Request_status_byte_3 char (3) int static init ("3");/* ESC SUB 3 */ 4 96 4 97 dcl Request_printer_status char (5) int static init ("#1 "); /* ESC SUB # 1 SP */ 4 98 4 99 dcl Request_paper_size_status char (5) int static init ("#2 "); /* ESC SUB # 2 SP */ 4 100 4 101 dcl Request_user_memeory_status char (5) int static init ("#4 "); /* ESC SUB # 4 SP */ 4 102 4 103 dcl Request_font_status char (5) int static init ("#5 ");/* ESC SUB # 5 SP */ 4 104 4 105 dcl Request_character_status char (5) int static init ("#6 "); /* ESC SUB # 6 SP */ 4 106 4 107 /* ******************************************************************** 4 108* * SPACING AND CHARACTER MOVEMENT COMMANDS * 4 109* ******************************************************************** */ 4 110 4 111 dcl 1 Set_hmi int static, 4 112 2 header char (2) unaligned init (""), /* ESC US */ 4 113 2 body char (1) unaligned; /* xx */ 4 114 /* (xx-1) / 120 */ 4 115 4 116 dcl Set_default_hmi char (2) int static init ("S"); /* ESC S */ 4 117 4 118 dcl 1 Set_vmi int static, 4 119 2 header char (2) unaligned init (""), /* ESC RS */ 4 120 2 body char (1) unaligned; /* xx */ 4 121 /* (xx-1) / 48 */ 4 122 4 123 dcl Begin_proportional_mode char (2) int static init ("P"); /* ESC P */ 4 124 4 125 dcl End_proportional_mode char (2) int static init ("Q"); /* ESC Q */ 4 126 4 127 dcl 1 Set_letterspace_offset int static, 4 128 2 header char (2) unaligned init (""), /* ESC DC1 */ 4 129 2 body char (1) unaligned; /* xx */ 4 130 /* xx / 120 */ 4 131 4 132 dcl Incremental_backspace char (2) int static init (""); /* ESC BS */ 4 133 4 134 dcl Begin_auto_justify_mode char (2) int static init ("M"); /* ESC M */ 4 135 4 136 dcl Begin_auto_center_mode char (2) int static init ("=");/* ESC = */ 4 137 4 138 dcl End_auto_center_mode char (1) int static /* CR */ 4 139 init (" "); 4 140 4 141 dcl Begin_program_mode char (3) int static init ("M"); /* ESC SO M */ 4 142 4 143 dcl Cancel char (2) int static init ("X"); /* ESC X */ 4 144 4 145 dcl Begin_newline_mode char (2) int static init ("?"); /* ESC ? */ 4 146 4 147 dcl End_newline_mode char (2) int static init ("!"); /* ESC ! */ 4 148 4 149 dcl Begin_reverse_print_mode char (2) int static init ("<"); /* ESC < */ 4 150 4 151 dcl End_reverse_print_mode char (2) int static init (">");/* ESC > */ 4 152 4 153 dcl Begin_backward_print_mode char (2) int static init ("6"); /* ESC 6 */ 4 154 4 155 dcl End_backward_print_mode char (2) int static init ("5"); /* ESC 5 */ 4 156 4 157 dcl Half_line_feed char (2) int static init ("U"); /* ESC U */ 4 158 4 159 dcl Negative_line_feed char (2) int static init (" 4 160 "); /* ESC LF */ 4 161 4 162 dcl Negative_half_line_feed char (2) int static init ("D"); /* ESC D */ 4 163 4 164 /* ******************************************************************** 4 165* * For the Define Movement command, n can be 1 to 8 as follows: * 4 166* * * 4 167* * CR LF FF (characters received) * 4 168* * * 4 169* * 1 CR LF FF (characters executed) * 4 170* * 2 CR+LF LF FF * 4 171* * 3 CR LF+CR FF * 4 172* * 4 CR+LF LF+CR FF * 4 173* * 5 CR LF FF+CR * 4 174* * 6 CR+LF LF FF+CR * 4 175* * 7 CR LF+CR FF+CR * 4 176* * 8 CR+LF LF+CR FF+CR * 4 177* ******************************************************************** */ 4 178 4 179 dcl 1 Define_movement int static, 4 180 2 header char (3) unaligned init ("M"), /* ESC DC2 M */ 4 181 2 body pic "9" unaligned, /* n (1 - 8) */ 4 182 2 trailer char (1) unaligned init (" "); /* SP */ 4 183 4 184 /* ******************************************************************** 4 185* * FONT COMMANDS * 4 186* ******************************************************************** */ 4 187 4 188 dcl 1 Assign_font int static, 4 189 2 header char (3) unaligned init ("A"), /* ESC DC2 A */ 4 190 2 body unaligned, 4 191 3 font_number pic "99" unaligned, /* n n */ 4 192 3 comma char (1) unaligned init (","), /* , */ 4 193 3 orientation pic "9" unaligned, /* 1 = portrait */ 4 194 /* 2 = landscape */ 4 195 3 commercial_at char (1) unaligned init ("@"), /* @ */ 4 196 3 font_name char (20) unaligned, /* ^ trailing SP */ 4 197 2 trailer char (2) unaligned init (" "); /* ESC SP */ 4 198 4 199 /* ******************************************************************** 4 200* * For the Select Font command, nn can be 00 to 31 as follows: * 4 201* * * 4 202* * 01 - Courier 10 (resident) * 4 203* * 02 - Prestige Elite 12 (resident) * 4 204* * 03 - Century PS (residnt) * 4 205* * 04 - Letter Gothic 15 (resident) * 4 206* * 11 - first font in upper cartridge * 4 207* * .. * 4 208* * 18 - last font in upper cartridge * 4 209* * 21 - first font in lower cartridge * 4 210* * .. * 4 211* * 28 - last font in upper cartridge * 4 212* * 30 - Linegraph * 4 213* ******************************************************************** */ 4 214 4 215 dcl 1 Select_font int static, 4 216 2 header char (3) unaligned init ("S"), /* ESC DC2 S */ 4 217 2 body pic "99" unaligned, /* n n */ 4 218 2 trailer char (1) unaligned init (" "); /* SP */ 4 219 4 220 /* ******************************************************************** 4 221* * CHARACTER ATTRIBUTE COMMANDS * 4 222* ******************************************************************** */ 4 223 4 224 dcl Begin_underline_mode char (2) int static init ("E"); /* ESC E */ 4 225 4 226 dcl End_underline_mode char (2) int static init ("R"); /* ESC R */ 4 227 4 228 dcl Begin_bold_mode char (2) int static init ("O"); /* ESC O */ 4 229 4 230 dcl Begin_shadow_mode char (2) int static init ("W"); /* ESC W */ 4 231 4 232 dcl End_bold_and_shadow_mode char (2) int static init ("&"); /* ESC & */ 4 233 4 234 dcl Begin_suppressed_print_mode char (2) int static init ("7"); /* ESC 7 */ 4 235 4 236 /* ******************************************************************** 4 237* * TAB COMMANDS * 4 238* ******************************************************************** */ 4 239 4 240 dcl Set_horizontal_tab char (2) int static init ("1"); /* ESC 1 */ 4 241 4 242 dcl Clear_single_horizontal_tab char (2) int static init ("8"); /* ESC 8 */ 4 243 4 244 dcl Set_vertical_tab char (2) int static init ("-"); /* ESC - */ 4 245 4 246 dcl Clear_all_tabs char (2) int static init ("2"); /* ESC 2 */ 4 247 4 248 /* ******************************************************************** 4 249* * DIRECT POSITIONING COMMANDS * 4 250* ******************************************************************** */ 4 251 4 252 dcl 1 Absolute_horizontal_position_count int static, 4 253 2 header char (2) unaligned init (" "), /* ESC HT */ 4 254 2 body char (1) unaligned; /* xx */ 4 255 /* (xx-1) * HMI */ 4 256 4 257 dcl 1 Absolute_horizontal_position int static, /* 1/120 inch */ 4 258 2 header char (3) unaligned init ("H"), /* ESC DC2 H */ 4 259 2 body pic "9999" unaligned, /* n n n n */ 4 260 2 trailer char (1) unaligned init (" "); /* SP */ 4 261 4 262 dcl 1 Relative_horizontal_position_count int static, 4 263 2 header char (3) unaligned init (" "), /* ESC DC4 SP */ 4 264 2 sign char (1) unaligned, /* + or - */ 4 265 2 body char (1) unaligned; /* xx */ 4 266 /* (xx-1) * HMI */ 4 267 4 268 dcl 1 Relative_horizontal_position int static, /* 1/120 inch */ 4 269 2 header char (3) unaligned init (" "), /* ESC DC2 SP */ 4 270 2 sign char (1) unaligned, /* + or - */ 4 271 2 body pic "9999" unaligned, /* n n n n */ 4 272 2 trailer char (1) unaligned init (" "); /* SP */ 4 273 4 274 dcl 1 Absolute_vertical_position_count int static, 4 275 2 header char (2) unaligned /* ESC VT */ 4 276 init (" "), 4 277 2 body char (1) unaligned; /* xx */ 4 278 /* (xx-1) * VMI */ 4 279 4 280 dcl 1 Absolute_vertical_position int static, /* 1/48 inch */ 4 281 2 header char (3) unaligned init ("V"), /* ESC DC2 V */ 4 282 2 body pic "9999" unaligned, /* n n n n */ 4 283 2 trailer char (1) unaligned init (" "); /* SP */ 4 284 4 285 dcl 1 Relative_vertical_position_count int static, 4 286 2 header char (3) unaligned init (" 4 287 "), /* ESC DC4 LF */ 4 288 2 sign char (1) unaligned, /* + or - */ 4 289 2 body char (1) unaligned; /* xx */ 4 290 /* (xx-1) * VMI */ 4 291 4 292 dcl 1 Relative_vertical_position int static, /* 1/48 inch */ 4 293 2 header char (3) unaligned init (" 4 294 "), /* ESC DC2 LF */ 4 295 2 sign char (1) unaligned, /* + or - */ 4 296 2 body pic "9999" unaligned, /* n n n n */ 4 297 2 trailer char (1) unaligned init (" "); /* SP */ 4 298 4 299 /* ******************************************************************** 4 300* * OTHER COMMANDS * 4 301* ******************************************************************** */ 4 302 4 303 dcl 1 Set_number_of_copies int static, 4 304 2 header char (3) unaligned init ("N"), /* ESC DC2 N */ 4 305 2 body pic "99" unaligned, /* n n */ 4 306 2 trailer char (1) unaligned init (" "); /* SP */ 4 307 4 308 dcl 1 Draw_box int static, 4 309 2 header char (3) unaligned init ("B"), /* ESC DC2 B */ 4 310 2 left_edge pic "9999" unaligned, /* n n n n */ 4 311 2 comma1 char (1) unaligned init (","), /* , */ 4 312 2 top_edge pic "9999" unaligned, /* n n n n */ 4 313 2 comma2 char (1) unaligned init (","), /* , */ 4 314 2 right_edge pic "9999" unaligned, /* n n n n */ 4 315 /* from left edge */ 4 316 2 comma3 char (1) unaligned init (","), /* , */ 4 317 2 bottom_edge pic "9999" unaligned, /* n n n n */ 4 318 /* from top edge */ 4 319 2 comma4 char (1) unaligned init (","), /* , */ 4 320 2 line_width pic "9999" unaligned, /* n n n n */ 4 321 2 trailer char (1) unaligned init (" "); /* SP */ 4 322 4 323 dcl 1 Draw_line int static, 4 324 2 header char (3) unaligned init ("R"), /* ESC DC2 R */ 4 325 2 left_edge pic "9999" unaligned, /* n n n n */ 4 326 2 comma1 char (1) unaligned init (","), /* , */ 4 327 2 top_edge pic "9999" unaligned, /* n n n n */ 4 328 2 comma2 char (1) unaligned init (","), /* , */ 4 329 2 right_edge pic "9999" unaligned, /* n n n n */ 4 330 /* from left edge */ 4 331 2 comma3 char (1) unaligned init (","), /* , */ 4 332 2 bottom_edge pic "9999" unaligned, /* n n n n */ 4 333 /* from top edge */ 4 334 2 trailer char (1) unaligned init (" "); /* SP */ 4 335 4 336 dcl Begin_graphics_mode char (2) int static init ("3"); /* ESC 3 */ 4 337 4 338 dcl End_graphics_mode char (2) int static init ("4"); /* ESC 4 */ 4 339 4 340 dcl Enter_vector_plot_mode_absolute_exclude char (2) int static init ("G"); /* ESC G */ 4 341 4 342 dcl Enter_vector_plot_mode_absolute_include char (3) int static init ("G"); /* ESC G BEL */ 4 343 4 344 dcl Enter_vector_plot_mode_relative_exclude char (2) int static init ("V"); /* ESC V */ 4 345 4 346 dcl Enter_vector_plot_mode_relative_include char (3) int static init ("V"); /* ESC V BEL */ 4 347 4 348 dcl 1 Change_plot_character int static, 4 349 2 header char (2) unaligned init ("."), /* ESC . */ 4 350 2 body char (1) unaligned; /* xx */ 4 351 4 352 dcl 1 Set_plot_precision int static, 4 353 2 header char (2) unaligned init (","), /* ESC , */ 4 354 2 xx char (1) unaligned, /* xx */ 4 355 2 yy char (1) unaligned; /* yy */ 4 356 /* (xx-32)/120 */ 4 357 /* (yy-32)/48 */ 4 358 4 359 dcl Exit_vector_plot_mode char (2) int static init ("4"); /* ESC 4 */ 4 360 4 361 /* END INCLUDE FILE iodd_hblp_commands.incl.pl1. */ 937 938 /* Begin include file ..... iox_modes.incl.pl1 */ 5 2 5 3 /* Written by C. D. Tavares, 03/17/75 */ 5 4 /* Updated 10/31/77 by CDT to include short iox mode strings */ 5 5 5 6 dcl iox_modes (13) char (24) int static options (constant) aligned initial 5 7 ("stream_input", "stream_output", "stream_input_output", 5 8 "sequential_input", "sequential_output", "sequential_input_output", "sequential_update", 5 9 "keyed_sequential_input", "keyed_sequential_output", "keyed_sequential_update", 5 10 "direct_input", "direct_output", "direct_update"); 5 11 5 12 dcl short_iox_modes (13) char (4) int static options (constant) aligned initial 5 13 ("si", "so", "sio", "sqi", "sqo", "sqio", "squ", "ksqi", "ksqo", "ksqu", "di", "do", "du"); 5 14 5 15 dcl (Stream_input initial (1), 5 16 Stream_output initial (2), 5 17 Stream_input_output initial (3), 5 18 Sequential_input initial (4), 5 19 Sequential_output initial (5), 5 20 Sequential_input_output initial (6), 5 21 Sequential_update initial (7), 5 22 Keyed_sequential_input initial (8), 5 23 Keyed_sequential_output initial (9), 5 24 Keyed_sequential_update initial (10), 5 25 Direct_input initial (11), 5 26 Direct_output initial (12), 5 27 Direct_update initial (13)) fixed bin int static options (constant); 5 28 5 29 /* End include file ..... iox_modes.incl.pl1 */ 938 939 /* BEGIN INCLUDE FILE mode_string_info.incl.pl1 */ 6 2 6 3 /* Structure for parse_mode_string_ JRDavis 20 October 1980 6 4* Last modified 12 January 1981 by J. Spencer Love for version 2, make char_value varying string */ 6 5 6 6 declare mode_value_ptr ptr, 6 7 number_of_modes fixed bin; 6 8 6 9 declare 1 mode_string_info aligned based (mode_string_info_ptr), 6 10 2 version fixed bin, 6 11 2 number fixed bin, 6 12 2 modes (number_of_modes refer (mode_string_info.number)) like mode_value; 6 13 6 14 declare mode_string_info_ptr ptr; 6 15 6 16 declare 1 mode_value aligned based (mode_value_ptr), 6 17 2 version fixed bin, 6 18 2 mode_name char (32) unaligned, 6 19 2 flags, 6 20 3 boolean_valuep bit (1) unaligned, 6 21 3 numeric_valuep bit (1) unaligned, 6 22 3 char_valuep bit (1) unaligned, 6 23 3 boolean_value bit (1) unaligned, 6 24 3 pad1 bit (32) unaligned, 6 25 2 numeric_value fixed bin (35), 6 26 2 char_value char (32) varying, 6 27 2 code fixed bin (35), 6 28 2 pad2 bit (36); 6 29 6 30 declare mode_string_info_version_2 fixed bin static options (constant) initial (2), 6 31 mode_value_version_3 fixed bin static options (constant) initial (3); 6 32 6 33 /* END INCLUDE FILE mode_string_info.incl.pl1 */ 939 940 7 2 /* BEGIN INCLUDE FILE ... prt_conv_info.incl.pl1 */ 7 3 /* Modified: 12 September 1980 by G. Palter */ 7 4 7 5 7 6 /****^ HISTORY COMMENTS: 7 7* 1) change(87-05-10,Gilcrease), approve(87-07-31,MCR7686), 7 8* audit(88-02-01,Farley), install(88-02-02,MR12.2-1019): 7 9* Add modes.line_nbrs, flags.(eol eof) bits for eor -nb. 7 10* END HISTORY COMMENTS */ 7 11 7 12 7 13 dcl pcip ptr; /* pointer to conversion info structure */ 7 14 7 15 dcl 1 pci based (pcip) aligned, /* printer conversion info structure */ 7 16 2 cv_proc ptr, /* pointer to character conversion procedure */ 7 17 2 lmarg fixed bin, /* left margin indentation */ 7 18 2 rmarg fixed bin, /* right margin limit */ 7 19 2 page_length fixed bin, /* number of lines on page */ 7 20 2 phys_line_length fixed bin, /* physical width of paper */ 7 21 2 phys_page_length fixed bin, /* physical length of paper */ 7 22 2 lpi fixed bin, /* lines per inch */ 7 23 2 sheets_per_page fixed bin, /* sheets of paper per logical page */ 7 24 2 line_count fixed bin, /* count of converted lines */ 7 25 2 page_count fixed bin, /* count of converted pages */ 7 26 2 func fixed bin, /* special conversion function */ 7 27 /* 0 => normal conversion */ 7 28 /* 1 => change NL to FF */ 7 29 /* 2 => change NL to top inside page */ 7 30 /* 3 => change NL to end of page */ 7 31 /* 4 => change NL to top of outside page */ 7 32 (2 modes, /* conversion modes */ 7 33 3 overflow_off bit (1), /* "1"b to suppress end of page overflow */ 7 34 3 single_space bit (1), /* "1"b to change all forms advance chars to NL */ 7 35 3 non_edited bit (1), /* "1"b to print ASCII control chars */ 7 36 3 truncate bit (1), /* "1"b to truncate lines that are too long */ 7 37 3 esc bit (1), /* "1"b to process ESC character */ 7 38 3 ctl_char bit (1), /* "1"b to output control characters */ 7 39 3 line_nbrs bit (1), /* "1"b to output line numbers */ 7 40 3 pci_pad bit (5), 7 41 2 flags, /* flags internal to prt_conv_ */ 7 42 3 ignore_next_ff bit (1), /* ON => prt_conv_ just output a FF; ignore next character if 7 43* it's a FF */ 7 44 3 eol bit (1), /* "1"b = end-of-line encountered */ 7 45 3 eof bit (1), /* "1"b = end-of-segment encountered */ 7 46 3 flags_pad bit (3), 7 47 2 coroutine_modes, 7 48 3 upper_case bit(1), /* "1"b to convert to upper case */ 7 49 3 ht bit(1), /* "1"b to skip tab conversion */ 7 50 3 coroutine_pad bit(13), 7 51 3 slew_table_idx bit(3) ) unal, /* slew table index */ 7 52 2 top_label_line char (136), /* contains an optional top of page label */ 7 53 2 bot_label_line char (136), /* contains an optional bottom of page label */ 7 54 2 top_label_length fixed bin, /* length of top label line */ 7 55 2 bot_label_length fixed bin, /* length of bottom label line */ 7 56 2 form_stops (256) unal, /* logical form stops */ 7 57 3 lbits bit (9), /* leftmost bits */ 7 58 3 rbits bit (9), /* rightmost bits */ 7 59 7 60 /* The following items are for internal use by the print conversion procedure. 7 61* They should be zeroed once and then never referenced again. */ 7 62 7 63 2 level fixed bin, /* overstrike level */ 7 64 2 pos fixed bin, /* print position at end of incomplete line */ 7 65 2 line fixed bin, /* current line number */ 7 66 2 slew_residue fixed bin, /* number of lines remaining to be slewed */ 7 67 2 label_nelem fixed bin, /* characters remaining in label */ 7 68 2 label_wksp ptr, /* pointer to label being processed */ 7 69 2 sav_pos fixed bin, /* position saved during label processing */ 7 70 2 esc_state fixed bin, /* state of ESC processing */ 7 71 2 esc_num fixed bin, /* number following ESC sequence */ 7 72 2 temp bit (36); /* conversion proc temporary */ 7 73 7 74 /* End of include file ...... prt_conv_info.incl.pl1 */ 7 75 940 941 8 2 /* Begin include file ...... prt_info.incl.pl1 */ 8 3 /* last modified 6/12/75 by Noel I. Morris */ 8 4 8 5 dcl pip ptr; /* pointer to printer info structure */ 8 6 8 7 dcl 1 prt_info based (pip) aligned, /* printer info structure */ 8 8 2 devname char (4), /* name of device */ 8 9 2 devx fixed bin, /* device index */ 8 10 2 model fixed bin, /* printer model number */ 8 11 2 type fixed bin, /* printer type number */ 8 12 2 train fixed bin, /* print train ID */ 8 13 2 line_length fixed bin, /* max length of printed line */ 8 14 2 print_idcw bit (36), /* IDCW to print 1 line */ 8 15 2 term_idcw bit (36); /* IDCW to stop printer channel */ 8 16 8 17 /* End of include file ...... prt_info.incl.pl1 */ 8 18 941 942 /* Begin include file ...... prt_order_info.incl.pl1 */ 9 2 /* Created 3/15/77 by Noel I. Morris */ 9 3 9 4 dcl orderp ptr; /* pointer to order info structure */ 9 5 9 6 dcl 1 counts based (orderp) aligned, /* structure used in "get_count" order */ 9 7 2 line fixed bin, /* line number */ 9 8 2 page_length fixed bin, /* length of page */ 9 9 2 lmarg fixed bin, /* left margin indentation */ 9 10 2 rmarg fixed bin, /* line length */ 9 11 2 line_count fixed bin, /* count of lines printed */ 9 12 2 page_count fixed bin; /* count of pages printed */ 9 13 9 14 dcl 1 position_data based (orderp) aligned, /* structure for "get_position" & "set_position" orders */ 9 15 2 line_number fixed bin (35), /* current line on the page */ 9 16 2 page_number fixed bin (35), /* current page number */ 9 17 2 total_lines fixed bin (35), /* lines printed since reset */ 9 18 2 total_chars fixed bin (35), /* chars processed since reset */ 9 19 2 pad(4) fixed bin; /* for the future */ 9 20 9 21 dcl 1 page_labels based (orderp) aligned, /* structure used in "page_labels" order */ 9 22 2 top_label char (136), /* label for top of page */ 9 23 2 bottom_label char (136); /* label for bottom of page */ 9 24 9 25 dcl channel_stops (256) bit (16) based (orderp) unal; /* structure used in "channel_stops" order */ 9 26 9 27 dcl 1 paper_info based (orderp) aligned, /* structure used in "paper_info" order */ 9 28 2 phys_page_length fixed bin, /* physical page length */ 9 29 2 phys_line_length fixed bin, /* physical line length */ 9 30 2 lines_per_inch fixed bin; /* lines per inch spacing */ 9 31 9 32 dcl ret_error_count fixed bin based (orderp); /* variable used for "get_error_count" order */ 9 33 9 34 /* End of include file ...... prt_order_info.incl.pl1 */ 942 943 /* BEGIN INCLUDE FILE...q_group_tab.incl.pl1 */ 10 2 10 3 10 4 10 5 /****^ HISTORY COMMENTS: 10 6* 1) change(88-01-27,Brunelle), approve(), audit(), install(): 10 7* Ancient History 10 8* Created by J. Stern, December 1974 10 9* Modified by J. Whitmore April 1978 10 10* Modified by R. McDonald May 1980 to include page charges (UNCA) 10 11* Modified by E. N. Kittlitz June 1981 for UNCA changes 10 12* 2) change(88-02-18,Brunelle), approve(88-08-31,MCR7911), 10 13* audit(88-09-29,Wallman), install(88-10-28,MR12.2-1199): 10 14* Add forms_validation, default_form and font_dir variables for laser 10 15* printer support. 10 16* END HISTORY COMMENTS */ 10 17 10 18 10 19 /* format: style4 */ 10 20 10 21 dcl qgtp ptr; /* ptr to queue group table */ 10 22 dcl 1 q_group_tab aligned based (qgtp), 10 23 2 n_q_groups fixed bin, /* number of queue groups */ 10 24 2 pad fixed bin, 10 25 2 entries (1 refer (q_group_tab.n_q_groups)) like qgte; /* entries of queue group table */ 10 26 10 27 dcl qgtep ptr; /* queue group table entry pointer */ 10 28 dcl 1 qgte aligned based (qgtep), /* queue group table entry */ 10 29 10 30 /* static info from the parms file */ 10 31 10 32 2 name char (24), /* queue group name */ 10 33 2 comment unaligned like text_offset, /* comment to apply to the request_type */ 10 34 2 driver_id char (32), /* person.project name of drivers for this q group */ 10 35 2 accounting unaligned like text_offset, /* offset to accounting routine pathname, "system" => charge_user_ */ 10 36 2 generic_type char (32), /* generic type of requests in this queue */ 10 37 2 default_generic_queue fixed bin (1), /* 1 if this is default queue for above generic type, else 0 */ 10 38 2 rqti_seg_name char (32), /* name of rqti seg, if required, else blank */ 10 39 2 max_queues fixed bin, /* number of queues for this request type */ 10 40 2 default_queue fixed bin, /* number of the default queue */ 10 41 2 line_charge, /* price names for line charges */ 10 42 3 queue (4) char (32), /* one name for each queue */ 10 43 2 page_charge, /* price names for page charges */ 10 44 3 queue (4) char (32), /* one name for each queue */ 10 45 2 forms_table unaligned like text_offset, /* offset to forms table to apply to this queue group */ 10 46 2 forms_validation unaligned like text_offset, /* offset to name of routine for forms validation */ 10 47 2 default_form unaligned like text_offset, /* offset to default -form string if none given */ 10 48 2 font_dir unaligned like text_offset, /* offset to location of downloadable fonts */ 10 49 2 first_dev_class fixed bin, /* index of first device class entry of queue group */ 10 50 2 last_dev_class fixed bin, /* index of last device class entry of queue group */ 10 51 10 52 /* dynamic info reflecting current status of queues */ 10 53 10 54 2 open fixed bin, /* 1 if queues have been opened, else 0 */ 10 55 2 per_queue_info (4), 10 56 3 last_read bit (72), /* ID of last message read */ 10 57 3 mseg_index fixed bin, /* message segment index */ 10 58 3 pad fixed bin; /* pad to even word boundary */ 10 59 10 60 /* END INCLUDE FILE...q_group_tab.incl.pl1 */ 943 944 /* BEGIN INCLUDE FILE ... remote_attach_data.incl.pl1 ... 3/77 */ 11 2 11 3 11 4 11 5 /****^ HISTORY COMMENTS: 11 6* 1) change(88-06-07,Brunelle), approve(88-06-07,MCR7911), 11 7* audit(88-09-29,Wallman), install(88-10-28,MR12.2-1199): 11 8* Model field and static overstrike_data_ptr added for laser printer 11 9* support. 11 10* END HISTORY COMMENTS */ 11 11 11 12 11 13 /* format: style4 */ 11 14 11 15 dcl adp ptr; /* local copy of pointer to attach data */ 11 16 11 17 dcl 1 ad aligned based (adp), 11 18 2 fixed, 11 19 3 runout_spacing fixed bin, 11 20 3 stop_every fixed bin, /* stop every n pages of printing */ 11 21 3 stop_counter fixed bin, 11 22 3 char_mode fixed bin, 11 23 3 record_len fixed bin, /* length of output record in characters */ 11 24 3 line_length fixed bin, /* length of printer line */ 11 25 3 chars_printed fixed bin (35), /* input chars processed since "reset" order */ 11 26 3 device_type fixed bin, /* terminal_io_record device_type code for this attachment 11 27* (See terminal_io_record.incl.pl1) */ 11 28 3 fb_pad fixed bin, 11 29 2 bits, 11 30 3 binary bit (1) unal, 11 31 3 record_io bit (1) unal, /* TRUE - if the iox_ record interface to terminal is used */ 11 32 3 other_bits_padded bit (34) unal, 11 33 3 output_modes, 11 34 4 single_page bit (1) unal, 11 35 4 noprint bit (1) unal, /* if on don't print */ 11 36 4 pad bit (34) unal, 11 37 3 transparent bit (1), /* Set if in transparent mode */ 11 38 3 input_modes bit (36), 11 39 2 ptrs, 11 40 3 terminal_iocbp ptr, /* iocb ptr to terminal dim */ 11 41 3 static_overstrike_data_ptr ptr, /* ptr to overstrike_data */ 11 42 2 chars, 11 43 3 terminal char (32) var, 11 44 3 attach_desc char (256) var, 11 45 3 open_description char (24) var, 11 46 3 model char (32) var, 11 47 2 info like prt_info aligned, 11 48 2 remote_pci like pci aligned; 11 49 11 50 11 51 /* END INCLUDE FILE ... remote_attach_data.incl.pl1 */ 944 945 /* BEGIN INCLUDE FILE ... terminal_io_record.incl.pl1 */ 12 2 /* Created: November 1979 by G. Palter */ 12 3 /* Modified: 26 March 1982 by G. Palter to make the structure more compatible with use of the like attribute */ 12 4 12 5 12 6 /* Record format used by I/O modules designed for communcation with remote I/O daemon stations */ 12 7 12 8 dcl 1 terminal_io_record aligned based (terminal_io_record_ptr), 12 9 2 header, 12 10 3 version fixed binary, 12 11 3 device_type fixed binary, /* type of device sending/receiving this record -- 12 12* reader/printer/punch/teleprinter */ 12 13 3 slew_control, /* slew control data: used for printer and teleprinter only */ 12 14 4 slew_type fixed binary (18) unaligned unsigned, /* type of slewing operation before/after this line -- 12 15* by-count/top-of-form/inside-page/outside-page/to-channel */ 12 16 4 slew_count fixed binary (18) unaligned unsigned,/* # of lines if by count; channel # if to channel */ 12 17 3 flags, 12 18 4 binary bit (1) unaligned, /* ON => data in record should be written in binary mode */ 12 19 4 preslew bit (1) unaligned, /* ON => perform above slew before printing data; 12 20* OFF => perform above slew after printing data */ 12 21 4 pad bit (34) unaligned, 12 22 3 element_size fixed binary, /* # of bits in a data element */ 12 23 3 n_elements fixed binary (24), /* # of elements in the record */ 12 24 2 data, /* force word alignment */ 12 25 3 bits (terminal_io_record_n_elements refer (terminal_io_record.n_elements)) 12 26 bit (terminal_io_record_element_size refer (terminal_io_record.element_size)) unaligned; 12 27 12 28 dcl terminal_io_record_ptr pointer; 12 29 12 30 dcl terminal_io_record_element_size fixed binary; /* used for allocating terminal_io_record structures */ 12 31 dcl terminal_io_record_n_elements fixed binary (24); 12 32 12 33 12 34 /* Manifest constants */ 12 35 12 36 dcl terminal_io_record_version_1 fixed binary static options (constant) initial (1); 12 37 12 38 dcl (TELEPRINTER_DEVICE initial (1), 12 39 READER_DEVICE initial (2), 12 40 PRINTER_DEVICE initial (3), 12 41 PUNCH_DEVICE initial (4)) 12 42 fixed binary static options (constant); 12 43 12 44 dcl (SLEW_BY_COUNT initial (1), 12 45 SLEW_TO_TOP_OF_PAGE initial (2), 12 46 SLEW_TO_INSIDE_PAGE initial (3), /* skip to top of next inside page (head sheet) */ 12 47 SLEW_TO_OUTSIDE_PAGE initial (4), /* skip to top of next outside page (tail sheet) */ 12 48 SLEW_TO_CHANNEL initial (5)) /* skip to specified channel stop */ 12 49 fixed binary static options (constant); 12 50 12 51 12 52 /* Data in record as a character string (terminal_io_record.element_size = 9) */ 12 53 12 54 dcl terminal_io_record_data_chars character (terminal_io_record.n_elements) unaligned 12 55 based (addr (terminal_io_record.bits)); 12 56 12 57 dcl terminal_io_record_data_chars_varying_max_len fixed binary (21); /* Set this before using the varying string. */ 12 58 dcl terminal_io_record_data_chars_varying character (terminal_io_record_data_chars_varying_max_len) varying 12 59 based (addr (terminal_io_record.n_elements)); /* varying string consists of length and data */ 12 60 12 61 12 62 /* Data in record as a bit string (terminal_io_record.element_size = 1) */ 12 63 12 64 dcl terminal_io_record_data_bits bit (terminal_io_record.n_elements) unaligned based (addr (terminal_io_record.bits)); 12 65 12 66 /* END INCLUDE FILE ... terminal_io_record.incl.pl1 */ 945 946 947 end iodd_hblp_support_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 12/05/88 1244.4 iodd_hblp_support_.pl1 >spec>install>1219>iodd_hblp_support_.pl1 934 1 07/19/79 1547.1 io_call_info.incl.pl1 >ldd>include>io_call_info.incl.pl1 935 2 05/20/83 1846.4 iocb.incl.pl1 >ldd>include>iocb.incl.pl1 936 3 11/09/88 0759.7 iod_tables_hdr.incl.pl1 >ldd>include>iod_tables_hdr.incl.pl1 937 4 11/09/88 0759.7 iodd_hblp_commands.incl.pl1 >ldd>include>iodd_hblp_commands.incl.pl1 938 5 02/02/78 1229.7 iox_modes.incl.pl1 >ldd>include>iox_modes.incl.pl1 939 6 03/19/81 1206.8 mode_string_info.incl.pl1 >ldd>include>mode_string_info.incl.pl1 940 7 02/04/88 2009.3 prt_conv_info.incl.pl1 >ldd>include>prt_conv_info.incl.pl1 941 8 08/29/75 1310.5 prt_info.incl.pl1 >ldd>include>prt_info.incl.pl1 942 9 09/28/78 1359.8 prt_order_info.incl.pl1 >ldd>include>prt_order_info.incl.pl1 943 10 11/09/88 0759.7 q_group_tab.incl.pl1 >ldd>include>q_group_tab.incl.pl1 944 11 11/09/88 0759.7 remote_attach_data.incl.pl1 >ldd>include>remote_attach_data.incl.pl1 945 12 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. Begin_bold 005041 constant char(2) initial packed unaligned dcl 641 ref 716 CR 005043 constant char(1) initial packed unaligned dcl 92 ref 488 739 922 End_bold 005040 constant char(2) initial packed unaligned dcl 643 ref 709 724 FF defined char(1) packed unaligned dcl 93 ref 514 520 539 922 NL 005042 constant char(1) initial packed unaligned dcl 94 ref 543 544 553 568 733 922 PAGE_TIMEOUT 000002 constant fixed bin(71,0) initial dcl 755 ref 786 PROBLEM_TIMEOUT 000000 constant fixed bin(71,0) initial dcl 756 ref 802 Request_status_byte_1 000123 constant char(3) initial packed unaligned dcl 4-93 ref 783 Request_status_byte_3 000122 constant char(3) initial packed unaligned dcl 4-95 ref 783 STX constant char(1) initial packed unaligned dcl 754 ref 808 Sequential_input_output 000164 constant fixed bin(17,0) initial dcl 5-15 set ref 204* Stream_input_output 000171 constant fixed bin(17,0) initial dcl 5-15 set ref 196 213* Stream_output constant fixed bin(17,0) initial dcl 5-15 ref 196 VT_or_FF 000134 constant char(2) initial packed unaligned dcl 91 ref 514 514 520 520 539 539 922 922 a_code parameter fixed bin(35,0) dcl 45 set ref 155 159* 191 197* 204* 205 207* 208 213* 214 216* 217 252 386* 394 400* 434 443* 622* 875* 880* 886* 892* a_data_chars parameter fixed bin(21,0) dcl 46 set ref 434 442 442 447 920* a_data_ptr parameter pointer dcl 47 ref 434 448 a_iocbp parameter pointer dcl 48 ref 155 158 191 252 394 434 872 a_mode parameter fixed bin(17,0) dcl 49 ref 191 195 a_new_modes parameter char packed unaligned dcl 50 set ref 394 400* 409 410* 412 413 416 420 421 424 918* a_old_modes parameter char packed unaligned dcl 51 set ref 394 400* a_order parameter char packed unaligned dcl 52 set ref 252 258 916* a_orderp parameter pointer dcl 53 ref 252 257 262 a_sw parameter bit(1) packed unaligned dcl 54 ref 191 actual_iocb_ptr 12 based pointer level 2 dcl 2-6 ref 872 ad based structure level 1 dcl 11-17 addr builtin function dcl 85 ref 237 450 450 470 669 669 676 788 788 792 792 891 adp 000760 automatic pointer dcl 11-15 set ref 204 206 207 212 213 216 216 221 222 237 347 361 362 363 410 414 416 418 422 424 426 450 456 464 468 474 506 575 577 581 583 584 599 600 600 601 601 601 601 602 617 619 619 785 788 792 840 873* 874 891 any_other 000100 stack reference condition dcl 87 ref 167 174 225 243 attach_data_ptr 16 based pointer level 2 dcl 2-6 ref 873 bits 11 based structure level 2 dcl 11-17 bold_on 000776 automatic bit(1) packed unaligned dcl 647 set ref 703* 706 708* 713 715* 721 723* bolding 3 based bit(1) array level 2 packed packed unaligned dcl 139 set ref 659* 666* 685* 687 690* 699 705 bot_label_length 122 based fixed bin(17,0) level 2 dcl 7-15 set ref 325* 376 charp 000106 automatic pointer dcl 112 set ref 448* 484* 500 chars 22 based structure level 2 dcl 11-17 chars_printed 6 based fixed bin(35,0) level 3 dcl 11-17 set ref 619* 619 chars_read 001016 automatic fixed bin(21,0) dcl 758 set ref 792* check_for_open parameter bit(1) packed unaligned dcl 869 ref 865 878 close 36 based entry variable level 2 dcl 2-6 set ref 236* code 000110 automatic fixed bin(35,0) dcl 113 set ref 259* 263* 304* 345* 346 348* 386 398* 440* 450* 451 577* 583* 587 603* 622 col_no 000752 automatic fixed bin(17,0) dcl 436 set ref 686* 687 688 689 689 690* 704* 705 719* continue_to_signal_ 000022 constant entry external dcl 58 ref 858 control 66 based entry variable level 2 dcl 2-6 set ref 231* copy builtin function dcl 85 ref 553 568 cover_open 0(04) 001122 automatic bit(1) level 2 packed packed unaligned dcl 763 set ref 816 cur_page 000111 automatic fixed bin(24,0) dcl 114 set ref 479* 599 currentsize builtin function dcl 85 ref 577 cv_proc 164 based pointer level 3 dcl 11-17 set ref 207* 216* data 6 based structure level 2 dcl 12-8 set ref 470 debug 000020 internal static bit(1) initial packed unaligned dcl 896 set ref 254 396 438 485 547 900* 904* 908* delta_lines 000016 internal static fixed bin(17,0) level 2 dcl 103 set ref 371* 371 377* 377 382 382 475 device_type 7 based fixed bin(17,0) level 3 in structure "ad" dcl 11-17 in procedure "iodd_hblp_support_" ref 464 device_type 1 based fixed bin(17,0) level 3 in structure "terminal_io_record" dcl 12-8 in procedure "iodd_hblp_support_" set ref 464* divide builtin function dcl 85 ref 334 405 ec 000112 automatic fixed bin(35,0) dcl 115 set ref 347* 348 785* 788* 792* 799 800 840* element_size 4 based fixed bin(17,0) level 3 dcl 12-8 set ref 460* 462 465* 577 614 error_table_$bad_arg 000024 external static fixed bin(35,0) dcl 59 ref 263 304 443 error_table_$bad_mode 000026 external static fixed bin(35,0) dcl 60 ref 197 error_table_$not_attached 000030 external static fixed bin(35,0) dcl 61 ref 875 error_table_$not_closed 000032 external static fixed bin(35,0) dcl 62 ref 880 error_table_$not_open 000034 external static fixed bin(35,0) dcl 63 ref 886 error_table_$request_pending 000036 external static fixed bin(35,0) dcl 64 ref 603 error_table_$timeout 000040 external static fixed bin(35,0) dcl 65 ref 800 exit_paper_jam 0(07) 001123 automatic bit(1) level 2 packed packed unaligned dcl 774 set ref 831 feed_paper_jam 0(08) 001123 automatic bit(1) level 2 packed packed unaligned dcl 774 set ref 826 fixed based structure level 2 dcl 11-17 func 13 based fixed bin(17,0) level 2 dcl 7-15 set ref 922* get_printer_status 000113 automatic bit(1) packed unaligned dcl 116 set ref 473* 781* get_system_free_area_ 000042 constant entry external dcl 66 ref 161 have_bottom_label 1(03) 000016 internal static bit(1) initial level 2 packed packed unaligned dcl 103 set ref 287 379* have_labels 1(01) 000016 internal static bit(1) initial level 2 packed packed unaligned dcl 103 set ref 372* 378* 535 have_top_label 1(02) 000016 internal static bit(1) initial level 2 packed packed unaligned dcl 103 set ref 373* 536 hcs_$make_ptr 000044 constant entry external dcl 67 ref 207 216 hcs_$reset_ips_mask 000046 constant entry external dcl 68 ref 172 241 853 hcs_$set_ips_mask 000050 constant entry external dcl 69 ref 169 227 header based structure level 2 dcl 12-8 i 000114 automatic fixed bin(17,0) dcl 117 set ref 413* 414 416 421* 422 424 564* 565 565* 568 571 668* 669 669* ignore 000115 automatic fixed bin(35,0) dcl 118 in procedure "iodd_hblp_support_" set ref 410* 414* 416* 418* 422* 424* 426* 581* 584* ignore 000100 automatic fixed bin(35,0) dcl 851 in procedure "handler" set ref 858* index builtin function dcl 85 ref 412 413 420 421 699 808 input_buffer 001017 automatic char(256) packed unaligned dcl 759 set ref 792 792 792 792 808 813 814 io_call_info based structure level 1 dcl 1-10 ioa_ 000106 constant entry external dcl 897 ref 908 916 918 920 922 930 iocb based structure level 1 dcl 2-6 iocbp 000116 automatic pointer dcl 119 set ref 158* 170 171* 230 231 232 235 236 237 239* 345* 400* 872* 873 879 885 iox_$control 000052 constant entry external dcl 70 ref 347 450 iox_$modes 000054 constant entry external dcl 71 ref 410 414 416 418 422 424 426 581 584 785 840 iox_$open 000056 constant entry external dcl 72 ref 204 213 iox_$propagate 000060 constant entry external dcl 73 ref 171 239 iox_$put_chars 000062 constant entry external dcl 74 ref 583 788 iox_$write_record 000064 constant entry external dcl 75 ref 577 iox_modes 000004 constant char(24) initial array dcl 5-6 ref 221 labels 000016 internal static structure level 1 unaligned dcl 103 set ref 357* 369* last_char_was_ff 000010 internal static bit(1) initial packed unaligned dcl 96 set ref 358* 515 517* 520* 534 length builtin function dcl 85 ref 545 554 569 728 788 788 792 792 level 323 based fixed bin(17,0) level 2 dcl 7-15 set ref 488 922* line based char(1) array level 2 in structure "osdata" packed packed unaligned dcl 139 in procedure "iodd_hblp_support_" set ref 658* 667* 669 669 676 688 689 689 719 line 325 based fixed bin(17,0) level 2 in structure "pci" dcl 7-15 in procedure "iodd_hblp_support_" set ref 288* 594* 922* line_count 11 based fixed bin(17,0) level 2 in structure "pci" dcl 7-15 in procedure "iodd_hblp_support_" set ref 595* 595 922* line_count 1 based fixed bin(17,0) level 2 in structure "osdata" dcl 139 in procedure "iodd_hblp_support_" set ref 657* 661 665* 665 668 675* 675 676 680 687 688 689 719 line_no 000753 automatic fixed bin(17,0) dcl 436 set ref 687* 689* line_size 2 based fixed bin(17,0) level 2 dcl 139 set ref 362 362 656* 658 658 658 658 659 663 664* 666 667 667 667 667 669 669 669 669 669 669 669 669 672 672 676 676 676 676 685 688 688 688 689 689 689 689 689 689 699 719 719 719 735 735 lines_per_inch 2 based fixed bin(17,0) level 2 dcl 9-27 ref 303 303 314 lmarg 2 based fixed bin(17,0) level 2 dcl 7-15 set ref 322* lpi 7 based fixed bin(17,0) level 2 dcl 7-15 set ref 314* mask 000120 automatic bit(36) dcl 120 set ref 165* 169* 172* 172* 223* 227* 241* 241* 853 853* 853* 856* max_line_count based fixed bin(17,0) level 2 dcl 139 set ref 362 656* 658 661 662 664* 667 672 735 mod builtin function dcl 85 ref 333 360 mode_value based structure level 1 dcl 6-16 modes 56 based entry variable level 2 in structure "iocb" dcl 2-6 in procedure "iodd_hblp_support_" set ref 232* modes 14 based structure level 2 in structure "pci" packed packed unaligned dcl 7-15 in procedure "iodd_hblp_support_" my_area based area(1024) dcl 97 ref 460 614 656 664 my_area_ptr 000012 internal static pointer initial dcl 98 set ref 161 161* 460 614 656 664 n_elements 5 based fixed bin(24,0) level 3 dcl 12-8 set ref 460* 462 466* 564 577 614 655 need_initial_ff 1 000016 internal static bit(1) initial level 2 packed packed unaligned dcl 103 set ref 374* 380* 537 538* no_data 0(03) 001122 automatic bit(1) level 2 packed packed unaligned dcl 763 set ref 836 no_paper 0(06) 001122 automatic bit(1) level 2 packed packed unaligned dcl 763 set ref 821 noprint 12(01) based bit(1) level 4 packed packed unaligned dcl 11-17 ref 506 null builtin function dcl 85 ref 161 207 207 216 216 222 262 267 361 363 488 611 653 736 874 879 885 old_modes 000121 automatic char(512) packed unaligned dcl 121 set ref 581* 785* 840* open 32 based entry variable level 2 dcl 2-6 set ref 170* open_descrip_ptr 20 based pointer level 2 dcl 2-6 set ref 237* 879 885 open_description 134 based varying char(24) level 3 dcl 11-17 set ref 221* 237 open_mode 000321 automatic fixed bin(17,0) dcl 122 set ref 195* 196 196 221 order 000322 automatic char(32) packed unaligned dcl 123 set ref 258* 261 266* 271 271 272 277 286 302 345* 347* 356 368 order_name 11 based char(32) level 2 dcl 1-10 ref 266 orderp 000756 automatic pointer dcl 9-4 set ref 257* 266 267* 303 303 307 307 309 309 312 313 314 345* 347* osdata based structure level 1 unaligned dcl 139 set ref 362 656 664 672 735 osdata_line_count 000746 automatic fixed bin(17,0) dcl 136 set ref 654* 656 656 662* 664 664 osdata_line_size 000747 automatic fixed bin(17,0) dcl 137 set ref 655* 656 656 656 663* 664 664 664 osdata_ptr 000744 automatic pointer dcl 135 set ref 474* 488 617 653 656* 657 658 659 661 661 662 663 665 668 669 669 669 672 673* 675 675 676 676 676 680 685 687 687 688 688 689 689 689 690 699 705 719 719 735 736* osdata_temp_ptr 000750 automatic pointer dcl 138 set ref 664* 665 666 667 669 673 output_modes 12 based structure level 3 dcl 11-17 output_string based char packed unaligned dcl 124 set ref 488 514 520 542 546* 552 555* 567 570* 676 729* 733 739* 922 922 922 922 922 overflow_off 14 based bit(1) level 3 packed packed unaligned dcl 7-15 ref 324 404 page_count 176 based fixed bin(17,0) level 3 in structure "ad" dcl 11-17 in procedure "iodd_hblp_support_" set ref 599 page_count 12 based fixed bin(17,0) level 2 in structure "pci" dcl 7-15 in procedure "iodd_hblp_support_" set ref 479 596* 596 922* page_length 4 based fixed bin(17,0) level 2 dcl 7-15 set ref 327* 333* 334 360* 382 382* 405 475 paper_info based structure level 1 dcl 9-27 pci based structure level 1 dcl 7-15 pcip 000754 automatic pointer dcl 7-13 set ref 288 288 312 313 314 321 321 322 324 325 325 327 327 328 333 333 333 334 334 334 334 360 360 360 370 376 382 382 382 382 404 405 405 405 405 475 475 477 479 484* 488 488 563 565 565 571 571 594 595 595 596 596 891* 922 922 922 922 922 922 phys_line_length 171 based fixed bin(17,0) level 3 in structure "ad" dcl 11-17 in procedure "iodd_hblp_support_" set ref 456 phys_line_length 5 based fixed bin(17,0) level 2 in structure "pci" dcl 7-15 in procedure "iodd_hblp_support_" set ref 313* 321 phys_line_length 1 based fixed bin(17,0) level 2 in structure "paper_info" dcl 9-27 in procedure "iodd_hblp_support_" ref 309 309 313 phys_page_length 6 based fixed bin(17,0) level 2 in structure "pci" dcl 7-15 in procedure "iodd_hblp_support_" set ref 288 312* 327 333 333 334 334 360 360 382 382 405 405 475 phys_page_length based fixed bin(17,0) level 2 in structure "paper_info" dcl 9-27 in procedure "iodd_hblp_support_" ref 307 307 312 position 62 based entry variable level 2 dcl 2-6 set ref 235* printer_device 000124 constant char(32) initial packed unaligned dcl 99 set ref 450 450 prt_conv_ 000066 constant entry external dcl 76 ref 484 prt_conv_on 000014 internal static bit(1) initial packed unaligned dcl 100 set ref 272* 359* 483 510 590 prt_conv_outp 000332 automatic pointer dcl 125 set ref 468* 470* 484* 488 500* 514 520 542 546 552 555 567 570 583* 676 729 733 739 922 922 922 922 922 prt_info based structure level 1 dcl 8-7 ptrs 16 based structure level 2 dcl 11-17 put_chars 52 based entry variable level 2 dcl 2-6 set ref 230* qgte based structure level 1 dcl 10-28 record_io 11(01) based bit(1) level 3 packed packed unaligned dcl 11-17 set ref 206* 212* 468 575 record_len 000334 automatic fixed bin(21,0) dcl 126 set ref 484* 488 488 501* 502 514 520 520 542 542 545* 546 552 554* 555 564 567 569* 570 583* 676 686 704 728* 729 733 733 738* 738 739 739 922 922 922 922 922 922 922 922 922 922 922 remaining_chars 000335 automatic fixed bin(21,0) dcl 127 set ref 447* 477 484* 501 502* 502 619 remote_driver_$problem_notification 000070 constant entry external dcl 77 ref 801 817 822 827 832 remote_pci 164 based structure level 2 dcl 11-17 set ref 891 remote_printer_$remote_printer_close 000074 constant entry external dcl 79 ref 236 remote_printer_$remote_printer_position 000072 constant entry external dcl 78 ref 235 remote_printer_control_ 000076 constant entry external dcl 80 ref 345 remote_printer_modes_ 000100 constant entry external dcl 81 ref 400 rmarg 3 based fixed bin(17,0) level 2 dcl 7-15 set ref 321* rtrim builtin function dcl 85 ref 221 runout_mode 000336 automatic bit(1) packed unaligned dcl 128 set ref 278* send_raw 000337 automatic bit(1) packed unaligned dcl 130 set ref 472* 494* 581 584 677* 707* 714* 722* 737 sheets_per_page 10 based fixed bin(17,0) level 2 dcl 7-15 set ref 328* 334* 405* single_page 12 based bit(1) level 4 packed packed unaligned dcl 11-17 ref 601 slew_residue 326 based fixed bin(17,0) level 2 dcl 7-15 set ref 477 488 563 565 565 571* 571 922* static_overstrike_data_ptr 20 based pointer level 3 dcl 11-17 set ref 222* 361 362 363* 474 617* status_byte_1 001122 automatic structure level 1 packed packed unaligned dcl 763 set ref 813* status_byte_3 001123 automatic structure level 1 packed packed unaligned dcl 774 set ref 814* status_requests 001014 automatic char(6) packed unaligned dcl 752 set ref 783* 788 788 788 788 stop_counter 2 based fixed bin(17,0) level 3 dcl 11-17 set ref 600* 600 601 602* stop_every 1 based fixed bin(17,0) level 3 dcl 11-17 ref 601 601 string builtin function dcl 85 ref 699 stx_loc 001117 automatic fixed bin(17,0) dcl 760 set ref 808* 809 813 814 substr builtin function dcl 85 set ref 416 424 488 520 542 733 739* 813 814 922 922 922 922 922 sys_info$max_seg_size 000102 external static fixed bin(35,0) dcl 82 ref 442 temp_line 000340 automatic varying char(1024) dcl 131 set ref 539* 541* 542* 542 543* 543 544* 544 545 546 552* 553* 553 554 555 567* 568* 568 569 570 702* 709* 709 716* 716 719* 719 724* 724 728 729 terminal 22 based varying char(32) level 3 dcl 11-17 ref 216 terminal_io_record based structure level 1 dcl 12-8 set ref 460 462* 577 614 terminal_io_record_element_size 000764 automatic fixed bin(17,0) dcl 12-30 set ref 455* 460 460 465 terminal_io_record_n_elements 000765 automatic fixed bin(24,0) dcl 12-31 set ref 456* 460 460 466 terminal_io_record_ptr 000762 automatic pointer dcl 12-28 set ref 460* 462 463 464 465 466 468 470 564 577* 577 611 614 655 terminal_io_record_version_1 constant fixed bin(17,0) initial dcl 12-36 ref 463 terminal_iocbp 16 based pointer level 3 dcl 11-17 set ref 204* 213* 347* 410* 414* 416* 418* 422* 424* 426* 450* 577* 581* 583* 584* 785* 788* 792* 840* text_offset based structure level 1 packed packed unaligned dcl 3-45 timed_io_$get_chars 000104 constant entry external dcl 83 ref 792 timeout_to_use 001120 automatic fixed bin(71,0) dcl 761 set ref 786* 792* 802* tmp_line based char packed unaligned dcl 646 set ref 669* 669 676* top_label_length 121 based fixed bin(17,0) level 2 dcl 7-15 set ref 325* 370 top_line_drop_count 000741 automatic fixed bin(17,0) dcl 132 set ref 475* 551 553 total_chars 000742 automatic fixed bin(24,0) dcl 133 set ref 447* 595 596 619 unspec builtin function dcl 85 set ref 357* 369* 462* 813* 813 814* 814 version based fixed bin(17,0) level 3 dcl 12-8 set ref 463* which_display parameter fixed bin(17,0) dcl 914 ref 912 916 918 920 922 930 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. Absolute_horizontal_position internal static structure level 1 packed packed unaligned dcl 4-257 Absolute_horizontal_position_count internal static structure level 1 packed packed unaligned dcl 4-252 Absolute_vertical_position internal static structure level 1 packed packed unaligned dcl 4-280 Absolute_vertical_position_count internal static structure level 1 packed packed unaligned dcl 4-274 Assign_font internal static structure level 1 packed packed unaligned dcl 4-188 Begin_auto_center_mode internal static char(2) initial packed unaligned dcl 4-136 Begin_auto_justify_mode internal static char(2) initial packed unaligned dcl 4-134 Begin_backward_print_mode internal static char(2) initial packed unaligned dcl 4-153 Begin_bold_mode internal static char(2) initial packed unaligned dcl 4-228 Begin_graphics_mode internal static char(2) initial packed unaligned dcl 4-336 Begin_newline_mode internal static char(2) initial packed unaligned dcl 4-145 Begin_program_mode internal static char(3) initial packed unaligned dcl 4-141 Begin_proportional_mode internal static char(2) initial packed unaligned dcl 4-123 Begin_reverse_print_mode internal static char(2) initial packed unaligned dcl 4-149 Begin_shadow_mode internal static char(2) initial packed unaligned dcl 4-230 Begin_suppressed_print_mode internal static char(2) initial packed unaligned dcl 4-234 Begin_underline_mode internal static char(2) initial packed unaligned dcl 4-224 Cancel internal static char(2) initial packed unaligned dcl 4-143 Change_plot_character internal static structure level 1 packed packed unaligned dcl 4-348 Clear_all_tabs internal static char(2) initial packed unaligned dcl 4-246 Clear_margins internal static char(2) initial packed unaligned dcl 4-78 Clear_single_horizontal_tab internal static char(2) initial packed unaligned dcl 4-242 Define_movement internal static structure level 1 packed packed unaligned dcl 4-179 Direct_input internal static fixed bin(17,0) initial dcl 5-15 Direct_output internal static fixed bin(17,0) initial dcl 5-15 Direct_update internal static fixed bin(17,0) initial dcl 5-15 Draw_box internal static structure level 1 packed packed unaligned dcl 4-308 Draw_line internal static structure level 1 packed packed unaligned dcl 4-323 End_auto_center_mode internal static char(1) initial packed unaligned dcl 4-138 End_backward_print_mode internal static char(2) initial packed unaligned dcl 4-155 End_bold_and_shadow_mode internal static char(2) initial packed unaligned dcl 4-232 End_graphics_mode internal static char(2) initial packed unaligned dcl 4-338 End_newline_mode internal static char(2) initial packed unaligned dcl 4-147 End_proportional_mode internal static char(2) initial packed unaligned dcl 4-125 End_reverse_print_mode internal static char(2) initial packed unaligned dcl 4-151 End_underline_mode internal static char(2) initial packed unaligned dcl 4-226 Enter_vector_plot_mode_absolute_exclude internal static char(2) initial packed unaligned dcl 4-340 Enter_vector_plot_mode_absolute_include internal static char(3) initial packed unaligned dcl 4-342 Enter_vector_plot_mode_relative_exclude internal static char(2) initial packed unaligned dcl 4-344 Enter_vector_plot_mode_relative_include internal static char(3) initial packed unaligned dcl 4-346 Error_reset internal static char(3) initial packed unaligned dcl 4-91 Exit_vector_plot_mode internal static char(2) initial packed unaligned dcl 4-359 Half_line_feed internal static char(2) initial packed unaligned dcl 4-157 IODT_VERSION_5 internal static char(8) initial packed unaligned dcl 3-49 Incremental_backspace internal static char(2) initial packed unaligned dcl 4-132 Initialize_printer internal static char(3) initial packed unaligned dcl 4-86 Keyed_sequential_input internal static fixed bin(17,0) initial dcl 5-15 Keyed_sequential_output internal static fixed bin(17,0) initial dcl 5-15 Keyed_sequential_update internal static fixed bin(17,0) initial dcl 5-15 Negative_half_line_feed internal static char(2) initial packed unaligned dcl 4-162 Negative_line_feed internal static char(2) initial packed unaligned dcl 4-159 PRINTER_DEVICE internal static fixed bin(17,0) initial dcl 12-38 PUNCH_DEVICE internal static fixed bin(17,0) initial dcl 12-38 READER_DEVICE internal static fixed bin(17,0) initial dcl 12-38 Relative_horizontal_position internal static structure level 1 packed packed unaligned dcl 4-268 Relative_horizontal_position_count internal static structure level 1 packed packed unaligned dcl 4-262 Relative_vertical_position internal static structure level 1 packed packed unaligned dcl 4-292 Relative_vertical_position_count internal static structure level 1 packed packed unaligned dcl 4-285 Request_character_status internal static char(5) initial packed unaligned dcl 4-105 Request_font_status internal static char(5) initial packed unaligned dcl 4-103 Request_paper_size_status internal static char(5) initial packed unaligned dcl 4-99 Request_printer_status internal static char(5) initial packed unaligned dcl 4-97 Request_user_memeory_status internal static char(5) initial packed unaligned dcl 4-101 SLEW_BY_COUNT internal static fixed bin(17,0) initial dcl 12-44 SLEW_TO_CHANNEL internal static fixed bin(17,0) initial dcl 12-44 SLEW_TO_INSIDE_PAGE internal static fixed bin(17,0) initial dcl 12-44 SLEW_TO_OUTSIDE_PAGE internal static fixed bin(17,0) initial dcl 12-44 SLEW_TO_TOP_OF_PAGE internal static fixed bin(17,0) initial dcl 12-44 Select_font internal static structure level 1 packed packed unaligned dcl 4-215 Sequential_input internal static fixed bin(17,0) initial dcl 5-15 Sequential_output internal static fixed bin(17,0) initial dcl 5-15 Sequential_update internal static fixed bin(17,0) initial dcl 5-15 Set_bottom_margin internal static structure level 1 packed packed unaligned dcl 4-48 Set_bottom_margin_count internal static structure level 1 packed packed unaligned dcl 4-43 Set_bottom_margin_position internal static char(2) initial packed unaligned dcl 4-41 Set_default_hmi internal static char(2) initial packed unaligned dcl 4-116 Set_hmi internal static structure level 1 packed packed unaligned dcl 4-111 Set_horizontal_tab internal static char(2) initial packed unaligned dcl 4-240 Set_left_margin internal static structure level 1 packed packed unaligned dcl 4-60 Set_left_margin_count internal static structure level 1 packed packed unaligned dcl 4-55 Set_left_margin_position internal static char(2) initial packed unaligned dcl 4-53 Set_letterspace_offset internal static structure level 1 packed packed unaligned dcl 4-127 Set_number_of_copies internal static structure level 1 packed packed unaligned dcl 4-303 Set_page_length internal static structure level 1 packed packed unaligned dcl 4-23 Set_page_orientation internal static structure level 1 packed packed unaligned dcl 4-17 Set_plot_precision internal static structure level 1 packed packed unaligned dcl 4-352 Set_right_margin internal static structure level 1 packed packed unaligned dcl 4-72 Set_right_margin_count internal static structure level 1 packed packed unaligned dcl 4-67 Set_right_margin_position internal static char(2) initial packed unaligned dcl 4-65 Set_top_margin internal static structure level 1 packed packed unaligned dcl 4-36 Set_top_margin_count internal static structure level 1 packed packed unaligned dcl 4-31 Set_top_margin_position internal static char(2) initial packed unaligned dcl 4-29 Set_vertical_tab internal static char(2) initial packed unaligned dcl 4-244 Set_vmi internal static structure level 1 packed packed unaligned dcl 4-118 Soft_reset internal static char(3) initial packed unaligned dcl 4-88 Stream_input internal static fixed bin(17,0) initial dcl 5-15 TELEPRINTER_DEVICE internal static fixed bin(17,0) initial dcl 12-38 channel_stops based bit(16) array packed unaligned dcl 9-25 counts based structure level 1 dcl 9-6 io_call_af_ret based varying char dcl 1-25 io_call_infop automatic pointer dcl 1-8 iod_tables_hdr based structure level 1 dcl 3-23 iox_$iocb_version_sentinel external static char(4) dcl 2-51 ithp automatic pointer dcl 3-22 mode_string_info based structure level 1 dcl 6-9 mode_string_info_ptr automatic pointer dcl 6-14 mode_string_info_version_2 internal static fixed bin(17,0) initial dcl 6-30 mode_value_ptr automatic pointer dcl 6-6 mode_value_version_3 internal static fixed bin(17,0) initial dcl 6-30 number_of_modes automatic fixed bin(17,0) dcl 6-6 page_labels based structure level 1 dcl 9-21 pip automatic pointer dcl 8-5 position_data based structure level 1 dcl 9-14 q_group_tab based structure level 1 dcl 10-22 qgtep automatic pointer dcl 10-27 qgtp automatic pointer dcl 10-21 ret_error_count based fixed bin(17,0) dcl 9-32 short_iox_modes internal static char(4) initial array dcl 5-12 terminal_io_record_data_bits based bit packed unaligned dcl 12-64 terminal_io_record_data_chars based char packed unaligned dcl 12-54 terminal_io_record_data_chars_varying based varying char dcl 12-58 terminal_io_record_data_chars_varying_max_len automatic fixed bin(21,0) dcl 12-57 text_strings based structure level 1 dcl 3-39 text_strings_ptr automatic pointer dcl 3-38 NAMES DECLARED BY EXPLICIT CONTEXT. bad_arg 001306 constant label dcl 304 ref 307 309 check_printer_status 004134 constant entry internal dcl 745 ref 279 complete_attach 000432 constant entry external dcl 155 control_return 001557 constant label dcl 386 ref 264 273 289 305 338 dbg_report 003257 constant label dcl 908 ref 901 905 dbgf 003240 constant entry external dcl 903 dbgn 003226 constant entry external dcl 899 dbgs 003252 constant entry external dcl 907 debug_display 004556 constant entry internal dcl 912 ref 254 396 438 485 547 handler 004451 constant entry internal dcl 849 ref 167 225 hblp_control 001140 constant entry external dcl 252 ref 231 hblp_modes 001567 constant entry external dcl 394 ref 232 hblp_open 000553 constant entry external dcl 191 ref 170 hblp_put_chars 002224 constant entry external dcl 434 ref 230 init_iocbp 004502 constant entry internal dcl 865 ref 193 255 397 439 iodd_hblp_support_ 000420 constant entry external dcl 24 process_overstrike_return 004074 constant label dcl 733 ref 699 process_overstrike_string 003300 constant entry internal dcl 625 ref 492 prt_conv_loop_end 003173 constant label dcl 608 put_chars_ret 003174 constant label dcl 611 ref 451 587 605 read_status_again 004224 constant label dcl 792 ref 803 809 request_status_again 004202 constant label dcl 788 ref 818 823 828 833 836 return_now 000545 constant label dcl 177 ref 876 881 887 send_line_out 002764 constant label dcl 575 ref 510 skip_line_print 003121 constant label dcl 590 ref 506 515 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 5514 5624 5051 5524 Length 6362 5051 110 521 443 12 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME iodd_hblp_support_ 794 external procedure is an external procedure. on unit on line 167 64 on unit on unit on line 225 64 on unit process_overstrike_string internal procedure shares stack frame of external procedure iodd_hblp_support_. check_printer_status internal procedure shares stack frame of external procedure iodd_hblp_support_. handler 72 internal procedure is called by several nonquick procedures. init_iocbp internal procedure shares stack frame of external procedure iodd_hblp_support_. debug_display internal procedure shares stack frame of external procedure iodd_hblp_support_. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 last_char_was_ff iodd_hblp_support_ 000012 my_area_ptr iodd_hblp_support_ 000014 prt_conv_on iodd_hblp_support_ 000016 labels iodd_hblp_support_ 000020 debug iodd_hblp_support_ STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME handler 000100 ignore handler iodd_hblp_support_ 000106 charp iodd_hblp_support_ 000110 code iodd_hblp_support_ 000111 cur_page iodd_hblp_support_ 000112 ec iodd_hblp_support_ 000113 get_printer_status iodd_hblp_support_ 000114 i iodd_hblp_support_ 000115 ignore iodd_hblp_support_ 000116 iocbp iodd_hblp_support_ 000120 mask iodd_hblp_support_ 000121 old_modes iodd_hblp_support_ 000321 open_mode iodd_hblp_support_ 000322 order iodd_hblp_support_ 000332 prt_conv_outp iodd_hblp_support_ 000334 record_len iodd_hblp_support_ 000335 remaining_chars iodd_hblp_support_ 000336 runout_mode iodd_hblp_support_ 000337 send_raw iodd_hblp_support_ 000340 temp_line iodd_hblp_support_ 000741 top_line_drop_count iodd_hblp_support_ 000742 total_chars iodd_hblp_support_ 000744 osdata_ptr iodd_hblp_support_ 000746 osdata_line_count iodd_hblp_support_ 000747 osdata_line_size iodd_hblp_support_ 000750 osdata_temp_ptr iodd_hblp_support_ 000752 col_no iodd_hblp_support_ 000753 line_no iodd_hblp_support_ 000754 pcip iodd_hblp_support_ 000756 orderp iodd_hblp_support_ 000760 adp iodd_hblp_support_ 000762 terminal_io_record_ptr iodd_hblp_support_ 000764 terminal_io_record_element_size iodd_hblp_support_ 000765 terminal_io_record_n_elements iodd_hblp_support_ 000776 bold_on process_overstrike_string 001014 status_requests check_printer_status 001016 chars_read check_printer_status 001017 input_buffer check_printer_status 001117 stx_loc check_printer_status 001120 timeout_to_use check_printer_status 001122 status_byte_1 check_printer_status 001123 status_byte_3 check_printer_status THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_e_as alloc_char_temp call_ext_out_desc call_ext_out call_int_other return_mac mdfx1 enable_op shorten_stack ext_entry ext_entry_desc int_entry trunc_fx2 set_chars_eis index_chars_eis index_bs_1_eis divide_fx1 op_alloc_ op_freen_ THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. continue_to_signal_ get_system_free_area_ hcs_$make_ptr hcs_$reset_ips_mask hcs_$set_ips_mask ioa_ iox_$control iox_$modes iox_$open iox_$propagate iox_$put_chars iox_$write_record prt_conv_ remote_driver_$problem_notification remote_printer_$remote_printer_close remote_printer_$remote_printer_position remote_printer_control_ remote_printer_modes_ timed_io_$get_chars THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$bad_arg error_table_$bad_mode error_table_$not_attached error_table_$not_closed error_table_$not_open error_table_$request_pending error_table_$timeout sys_info$max_seg_size LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 24 000417 25 000425 155 000426 158 000442 159 000446 161 000447 165 000462 167 000463 169 000505 170 000520 171 000525 172 000534 174 000544 177 000545 191 000546 193 000563 195 000567 196 000572 197 000576 198 000601 204 000602 205 000622 206 000624 207 000627 208 000667 210 000671 212 000672 213 000675 214 000714 216 000716 217 000771 221 000774 222 001026 223 001030 225 001031 227 001053 230 001066 231 001073 232 001076 235 001101 236 001105 237 001110 239 001113 241 001121 243 001131 245 001132 252 001133 254 001156 255 001166 257 001172 258 001176 259 001203 261 001204 262 001210 263 001214 264 001217 266 001220 267 001224 268 001226 271 001227 272 001237 273 001245 277 001246 278 001252 279 001254 280 001255 286 001256 287 001262 288 001266 289 001272 291 001273 302 001274 303 001300 304 001306 305 001311 307 001312 309 001317 312 001324 313 001327 314 001331 321 001333 322 001335 324 001336 325 001341 327 001343 328 001345 329 001347 333 001350 334 001357 338 001363 345 001364 346 001410 347 001412 348 001437 356 001442 357 001446 358 001451 359 001453 360 001454 361 001464 362 001471 363 001510 365 001513 368 001514 369 001520 370 001523 371 001526 372 001530 373 001532 374 001534 376 001536 377 001540 378 001542 379 001544 380 001546 382 001550 386 001557 389 001561 394 001562 396 001612 397 001622 398 001626 400 001627 404 001656 405 001662 409 001667 410 001676 411 001725 412 001726 413 001736 414 001737 416 001775 418 002032 419 002065 420 002066 421 002075 422 002076 424 002131 426 002166 429 002216 434 002217 438 002234 439 002244 440 002250 442 002251 443 002264 444 002267 447 002270 448 002273 450 002276 451 002330 455 002332 456 002334 460 002340 462 002356 463 002370 464 002372 465 002375 466 002377 468 002401 470 002406 472 002410 473 002411 474 002412 475 002414 477 002427 479 002435 483 002440 484 002443 485 002461 488 002471 492 002510 493 002511 494 002512 495 002513 500 002514 501 002516 502 002520 506 002522 510 002526 514 002531 515 002543 517 002545 518 002547 520 002550 534 002555 535 002556 536 002561 537 002564 538 002567 539 002571 540 002575 541 002576 542 002577 543 002614 544 002623 545 002632 546 002634 547 002640 549 002647 551 002650 552 002652 553 002662 554 002701 555 002704 563 002710 564 002713 565 002717 567 002723 568 002734 569 002753 570 002756 571 002762 575 002764 577 002770 579 003015 581 003016 583 003047 584 003065 587 003117 590 003121 594 003124 595 003126 596 003141 599 003153 600 003157 601 003160 602 003167 603 003170 605 003172 608 003173 611 003174 614 003200 617 003210 619 003213 622 003222 623 003224 899 003225 900 003233 901 003236 903 003237 904 003245 905 003250 907 003251 908 003257 910 003277 625 003300 653 003301 654 003305 655 003307 656 003312 657 003337 658 003340 659 003372 660 003405 661 003406 662 003413 663 003416 664 003420 665 003445 666 003450 667 003463 668 003516 669 003527 671 003560 672 003562 673 003601 675 003603 676 003605 677 003624 680 003625 685 003631 686 003645 687 003655 688 003675 689 003716 690 003727 693 003732 694 003734 699 003736 702 003744 703 003745 704 003746 705 003755 706 003762 707 003764 708 003766 709 003767 711 004001 713 004002 714 004004 715 004006 716 004007 719 004021 720 004044 721 004046 722 004050 723 004052 724 004053 728 004065 729 004067 733 004074 735 004102 736 004121 737 004123 738 004125 739 004126 742 004133 745 004134 781 004135 782 004136 783 004137 785 004144 786 004200 788 004202 792 004224 799 004252 800 004254 801 004257 802 004272 803 004274 808 004275 809 004306 813 004307 814 004313 816 004316 817 004321 818 004335 821 004336 822 004341 823 004355 826 004356 827 004361 828 004375 831 004376 832 004401 833 004415 836 004416 840 004421 842 004447 849 004450 853 004456 856 004470 858 004472 860 004501 865 004502 872 004504 873 004511 874 004513 875 004517 876 004522 878 004523 879 004530 880 004534 881 004537 883 004540 885 004541 886 004545 887 004550 891 004551 892 004554 894 004555 912 004556 916 004560 918 004606 920 004633 922 004657 930 005002 933 005021 ----------------------------------------------------------- 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