COMPILATION LISTING OF SEGMENT display_prt_rqti Compiled by: Multics PL/I Compiler, Release 28d, of October 4, 1983 Compiled at: Honeywell Multics Op. - System M Compiled on: 07/26/84 1427.8 mst Thu Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1984 * 4* * * 5* * Copyright (c) 1972 by Massachusetts Institute of * 6* * Technology and Honeywell Information Systems, Inc. * 7* * * 8* *********************************************************** */ 9 10 11 /* format: style4,delnl,insnl,^ifthendo */ 12 13 /* format: off */ 14 15 /* Decodes and prints the contents of a binary data table segment produced by cv_rqti. The format of the printed output 16* corresponds exactly to the source language accepted by cv_rqti. Thus, if output is directed to a file, the resulting 17* file can be converted. */ 18 19 /* Created: August 1977 by J. Whitmore */ 20 /* Modified: June 1979 by C. Hornig to define the banner_bars keyword */ 21 /* Modified: 30 November 1981 by G. Palter to recognize new force_ctl_char mode */ 22 /* Modified: November 1983 by C. Marker to recognize force_nsep mode. */ 23 24 /* format: on */ 25 26 display_prt_rqti: 27 procedure () options (variable); 28 29 dcl arglen fixed bin; /* length of arg */ 30 dcl argp ptr; /* ptr to arg */ 31 dcl code fixed bin (35); /* error code */ 32 dcl date char (24); /* the date in ascii */ 33 dcl dir char (168); /* directory pathname */ 34 dcl ent char (32); /* entry name */ 35 dcl (i, j, k) fixed bin; /* loop variables */ 36 dcl nargs fixed binary; 37 dcl segp ptr; /* ptr to compiled segment */ 38 dcl stops char (48) var; 39 40 dcl arg char (arglen) based (argp); /* command argument */ 41 dcl chan_id (16) char (3) int static options (constant) 42 init (" 1,", " 2,", " 3,", " 4,", " 5,", " 6,", " 7,", " 8,", " 9,", "10,", "11,", "12,", "13,", "14,", "15,", 43 "16,"); 44 dcl whoami char (24) int static options (constant) init ("display_prt_rqti"); 45 46 dcl (hbound, length, null, string, substr, rtrim) builtin; 47 48 dcl cleanup condition; 49 50 dcl ( 51 com_err_, 52 com_err_$suppress_name 53 ) entry () options (variable); 54 dcl cu_$arg_count entry (fixed binary, fixed binary (35)); 55 dcl cu_$arg_ptr entry (fixed bin, ptr, fixed bin, fixed bin (35)); 56 dcl date_time_ entry (fixed bin (71), char (*)); 57 dcl expand_pathname_ entry (char (*), char (*), char (*), fixed bin (35)); 58 dcl hcs_$initiate entry (char (*), char (*), char (*), fixed bin (1), fixed bin (2), ptr, fixed bin (35)); 59 dcl hcs_$terminate_noname entry (ptr, fixed bin (35)); 60 dcl ioa_ entry () options (variable); 61 dcl pathname_ entry (char (*), char (*)) returns (char (168)); 62 dcl requote_string_ entry (character (*)) returns (character (*)); 63 64 /* */ 65 66 call cu_$arg_count (nargs, code); 67 if code ^= 0 68 then do; /* not called as a command */ 69 call com_err_ (code, whoami); 70 return; 71 end; 72 73 if nargs ^= 1 74 then do; 75 call com_err_$suppress_name (0, whoami, "Usage: ^a path", whoami); 76 return; 77 end; 78 79 call cu_$arg_ptr (1, argp, arglen, code); /* get pathname arg */ 80 if code ^= 0 81 then do; 82 call com_err_ (code, whoami, "Fetching argument #1."); 83 return; 84 end; 85 86 call expand_pathname_ (argp -> arg, dir, ent, code); 87 /* get dir and entry names */ 88 if code ^= 0 89 then do; 90 call com_err_ (code, whoami, arg); 91 return; 92 end; 93 94 call hcs_$initiate (dir, ent, "", 0, 0, segp, code); 95 /* get segment ptr */ 96 if segp = null () 97 then do; 98 call com_err_ (code, whoami, "^a>^a", dir, ent); 99 return; 100 end; 101 102 on condition (cleanup) call hcs_$terminate_noname (segp, (0)); 103 104 prt_rqtip = segp; /* set up for automatic based references */ 105 106 call date_time_ (prt_rqti.header.time_created, date); 107 /* keep compilation date handy */ 108 if prt_rqti.header.header_version ^= rqti_header_version_1 109 then do; 110 call com_err_ (0, whoami, "Wrong header version number for ^a. ^d (compilation date: ^a)", 111 pathname_ (dir, ent), prt_rqti.header.header_version, date); 112 go to finish; 113 end; 114 if prt_rqti.type_code = 1 115 then /* check items for printer type only */ 116 if prt_rqti.version ^= prt_rqti_version_1 117 then do; 118 call com_err_ (0, whoami, "Wrong table version number for ^a. ^d (compilation date: ^a)", 119 pathname_ (dir, ent), prt_rqti.version, date); 120 go to finish; 121 end; 122 123 call ioa_ ("/* Listing of^[ printer^;^] request type info table: ^a */ 124 /* Table created on: ^a */ 125 /* Header version number: ^d */ 126 /* Table version number: ^d */", (prt_rqti.type_code = 1), pathname_ (dir, ent), date, prt_rqti.header.header_version, 127 prt_rqti.version); /* start with a little background information */ 128 129 call ioa_ ("^2//* Driver Info */^/"); 130 call ioa_ ("driver_attributes:^-^[^;^^^]meter, ^[^;^^^]auto_go;", prt_rqti.meter, prt_rqti.auto_go); 131 call ioa_ ("driver_wait_time:^-^d;", prt_rqti.driver_wait_time); 132 133 if prt_rqti.type_code = 1 134 then do; /* if a printer type rqti display rest of information */ 135 if prt_rqti.opr_msg ^= "" 136 then do; /* print the message and comment only if defined */ 137 call ioa_ ("^2//* Message to the operator during driver initialization */^/"); 138 call ioa_ ("message:^/^a;", requote_string_ (rtrim (prt_rqti.opr_msg))); 139 end; 140 141 call ioa_ ("^2//* Banner Info */^/"); 142 call ioa_ ("banner_type:^-^[none^;standard^;brief^;^d^];", (prt_rqti.banner_type + 1), 143 prt_rqti.banner_type); 144 call ioa_ ("banner_bars:^-^[double^;single^;none^;^d^];", (prt_rqti.banner_bars + 1), prt_rqti.banner_bars) 145 ; 146 147 call ioa_ ("^2//* Control Flags for Printing */^/"); 148 call ioa_ ( 149 "prt_control:^-^[^;^^^]auto_print, ^[^;^^^]force_nep, ^[^;^^^]force_esc, ^[^;^^^]force_ctl_char, ^[^;^^^]force_nsep;" 150 , ^prt_rqti.no_auto_print, prt_rqti.force_nep, prt_rqti.force_esc, prt_rqti.force_ctl_char, 151 prt_rqti.force_nsep); 152 153 call ioa_ ("^2//* Physical Paper Info */^/"); 154 call ioa_ ("paper_width:^-^d;", prt_rqti.paper_width); 155 call ioa_ ("paper_length:^-^d;", prt_rqti.paper_length); 156 call ioa_ ("lines_per_inch:^4x^-^d;", prt_rqti.lines_per_inch); 157 158 if string (prt_rqti.channel_stops) 159 then do; /* if there are any stops defined, print them */ 160 call ioa_ ("^2//* Logical Channel Stops */^/"); 161 do i = 1 to hbound (prt_rqti.channel_stops, 1); 162 /* look at all the possible values */ 163 if prt_rqti.channel_stops (i) 164 then do; /* but only print the non-null stop data */ 165 stops = ""; /* clear the stops from the last line */ 166 do j = 1 to 16; /* look at each channel for this line */ 167 if substr (prt_rqti.channel_stops (i), j, 1) 168 then stops = stops || chan_id (j); 169 end; 170 k = length (rtrim (stops)); /* change last comma into a semi-colon */ 171 stops = substr (stops, 1, (k - 1)) || ";"; 172 call ioa_ ("line(^d):^5x^-^a", i, stops); 173 /* print it */ 174 end; 175 end; 176 end; 177 end; 178 179 call ioa_ ("^/end;"); 180 181 182 finish: 183 call hcs_$terminate_noname (segp, code); 184 185 return; 186 187 1 1 /* BEGIN INCLUDE FILE ... prt_rqti.incl.pl1 */ 1 2 /* Modified: 30 November 1981 by G. Palter to add force_ctl_char mode */ 1 3 /* Modified: November 1983 by C. Marker to add force_nsep */ 1 4 2 1 /* BEGIN INCLUDE FILE ..... rqti_header.incl.pl1 ..... */ 2 2 2 3 2 4 dcl 1 rqti_header aligned based, /* header for a request type info seg */ 2 5 2 time_created fixed bin (71), /* clock time when table was translated */ 2 6 2 header_version fixed bin, /* version number of the header alone */ 2 7 2 type_code fixed bin, /* 0 = header only */ 2 8 /* 1 = printer generic type */ 2 9 /* 2 = punch generic type */ 2 10 /* 3 = tape generic type */ 2 11 2 rqti_switches, 2 12 (3 meter bit (1), /* meter this request type */ 2 13 3 auto_go bit (1), /* driver should not request a go command */ 2 14 3 rqti_sw_pad bit (34)) unal, /* room to grow */ 2 15 2 driver_wait_time fixed bin, /* seconds to wait, before asking coord for service */ 2 16 2 header_pad (10) fixed bin; /* leave 10 words for future generations */ 2 17 2 18 dcl rqti_header_version_1 fixed bin int static options (constant) init (1); 2 19 2 20 2 21 /* END INCLUDE FILE ..... rqti_header.incl.pl1 .... */ 1 5 1 6 1 7 dcl prt_rqtip ptr; 1 8 1 9 dcl 1 prt_rqti aligned based (prt_rqtip), 1 10 1 11 2 header like rqti_header, /* use a common header */ 1 12 1 13 2 version fixed bin, /* version of the prt_rqti portion */ 1 14 2 opr_msg char (256), /* operator message */ 1 15 2 banner_type fixed bin, /* 0 = no banners */ 1 16 /* 1 = normal head/tail sheets */ 1 17 /* 2 = RESERVED (brief banners) */ 1 18 2 banner_bars fixed bin, /* how separator bars should be printed */ 1 19 2 banner_indent fixed bin, /* how far to indent the banner */ 1 20 2 banner_line fixed bin, /* what line to start the banner on */ 1 21 2 prt_flags, 1 22 (3 no_auto_print bit (1), /* TRUE if we want commands for each request */ 1 23 3 force_nep bit (1), /* TRUE if we set noskip regardless */ 1 24 3 force_esc bit (1), /* TRUE if we assume escapes in text */ 1 25 3 force_ctl_char bit (1), /* TRUE if we pass control characters regardless */ 1 26 3 force_nsep bit (1), /* TRUE if inner head and tail sheets of multiple copies are to be supressed */ 1 27 3 prt_ctl_pad bit (31)) unal, 1 28 1 29 2 default_bit_modes, /* rqt defaults for dprint */ 1 30 (3 non_edited bit (1), /* TRUE if not removing control chars */ 1 31 3 esc bit (1), /* TRUE if slew escapes are to be processed */ 1 32 3 single bit (1), /* TRUE if VT and FF are to be ignored */ 1 33 3 truncate bit (1), /* TRUE if truncating lines at line length */ 1 34 3 center_top_label bit (1), /* TRUE if centering top label */ 1 35 3 center_bottom_label bit (1), /* TRUE if centering bottom label */ 1 36 3 no_endpage bit (1), /* TRUE if printing over perforations (one big page) */ 1 37 3 mode_bit_pad bit (29)) unal, /* room to grow */ 1 38 2 default_position_modes, /* these are the length modes */ 1 39 3 indent fixed bin, /* columns to indent from the left */ 1 40 3 line_length fixed bin, /* print positions starting from col 1 */ 1 41 3 page_length fixed bin, /* number of lines before auto skip to top */ 1 42 3 mode_pad (10) fixed bin, /* more room to grow */ 1 43 1 44 2 rqt_pad (28) fixed bin, /* pad to 128 words */ 1 45 1 46 2 lfi, 1 47 3 paper_info, /* physical paper info */ 1 48 4 paper_length fixed bin, /* max lines to perf */ 1 49 4 paper_width fixed bin, /* max print positions */ 1 50 4 lines_per_inch fixed bin, /* normally 6 or 8 */ 1 51 3 lfi_pad (5) fixed bin, /* pad to even */ 1 52 3 channel_stops (256) bit (16) unal; /* channel stops for slews */ 1 53 1 54 dcl prt_rqti_version_1 fixed bin int static options (constant) init (1); 1 55 1 56 1 57 /* END INCLUDE FILE .... prt_rqti.incl.pl1 */ 188 189 190 end display_prt_rqti; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 07/26/84 1208.5 display_prt_rqti.pl1 >special_ldd>on>07/27/84>display_prt_rqti.pl1 188 1 07/26/84 1207.9 prt_rqti.incl.pl1 >special_ldd>on>07/27/84>prt_rqti.incl.pl1 1-5 2 02/23/78 1629.0 rqti_header.incl.pl1 >ldd>include>rqti_header.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. arg based char unaligned dcl 40 set ref 86* 90* arglen 000100 automatic fixed bin(17,0) dcl 29 set ref 79* 86 86 90 90 argp 000102 automatic pointer dcl 30 set ref 79* 86 90 auto_go 4(01) based bit(1) level 4 packed unaligned dcl 1-9 set ref 130* banner_bars 122 based fixed bin(17,0) level 2 dcl 1-9 set ref 144 144* banner_type 121 based fixed bin(17,0) level 2 dcl 1-9 set ref 142 142* chan_id 000006 constant char(3) initial array unaligned dcl 41 ref 167 channel_stops 210 based bit(16) array level 3 packed unaligned dcl 1-9 ref 158 161 163 167 cleanup 000222 stack reference condition dcl 48 ref 102 code 000104 automatic fixed bin(35,0) dcl 31 set ref 66* 67 69* 79* 80 82* 86* 88 90* 94* 98* 182* com_err_ 000010 constant entry external dcl 50 ref 69 82 90 98 110 118 com_err_$suppress_name 000012 constant entry external dcl 50 ref 75 cu_$arg_count 000014 constant entry external dcl 54 ref 66 cu_$arg_ptr 000016 constant entry external dcl 55 ref 79 date 000105 automatic char(24) unaligned dcl 32 set ref 106* 110* 118* 123* date_time_ 000020 constant entry external dcl 56 ref 106 dir 000113 automatic char(168) unaligned dcl 33 set ref 86* 94* 98* 110* 110* 118* 118* 123* 123* driver_wait_time 5 based fixed bin(17,0) level 3 dcl 1-9 set ref 131* ent 000165 automatic char(32) unaligned dcl 34 set ref 86* 94* 98* 110* 110* 118* 118* 123* 123* expand_pathname_ 000022 constant entry external dcl 57 ref 86 force_ctl_char 125(03) based bit(1) level 3 packed unaligned dcl 1-9 set ref 148* force_esc 125(02) based bit(1) level 3 packed unaligned dcl 1-9 set ref 148* force_nep 125(01) based bit(1) level 3 packed unaligned dcl 1-9 set ref 148* force_nsep 125(04) based bit(1) level 3 packed unaligned dcl 1-9 set ref 148* hbound builtin function dcl 46 ref 161 hcs_$initiate 000024 constant entry external dcl 58 ref 94 hcs_$terminate_noname 000026 constant entry external dcl 59 ref 102 182 header based structure level 2 dcl 1-9 header_version 2 based fixed bin(17,0) level 3 dcl 1-9 set ref 108 110* 123* i 000175 automatic fixed bin(17,0) dcl 35 set ref 161* 163 167 172* ioa_ 000030 constant entry external dcl 60 ref 123 129 130 131 137 138 141 142 144 147 148 153 154 155 156 160 172 179 j 000176 automatic fixed bin(17,0) dcl 35 set ref 166* 167 167* k 000177 automatic fixed bin(17,0) dcl 35 set ref 170* 171 length builtin function dcl 46 ref 170 lfi 200 based structure level 2 dcl 1-9 lines_per_inch 202 based fixed bin(17,0) level 4 dcl 1-9 set ref 156* meter 4 based bit(1) level 4 packed unaligned dcl 1-9 set ref 130* nargs 000200 automatic fixed bin(17,0) dcl 36 set ref 66* 73 no_auto_print 125 based bit(1) level 3 packed unaligned dcl 1-9 ref 148 null builtin function dcl 46 ref 96 opr_msg 21 based char(256) level 2 dcl 1-9 ref 135 138 138 paper_info 200 based structure level 3 dcl 1-9 paper_length 200 based fixed bin(17,0) level 4 dcl 1-9 set ref 155* paper_width 201 based fixed bin(17,0) level 4 dcl 1-9 set ref 154* pathname_ 000032 constant entry external dcl 61 ref 110 110 118 118 123 123 prt_flags 125 based structure level 2 dcl 1-9 prt_rqti based structure level 1 dcl 1-9 prt_rqti_version_1 constant fixed bin(17,0) initial dcl 1-54 ref 114 prt_rqtip 000230 automatic pointer dcl 1-7 set ref 104* 106 108 110 114 114 118 123 123 123 130 130 131 133 135 138 138 142 142 144 144 148 148 148 148 148 154 155 156 158 161 163 167 requote_string_ 000034 constant entry external dcl 62 ref 138 rqti_header based structure level 1 dcl 2-4 rqti_header_version_1 constant fixed bin(17,0) initial dcl 2-18 ref 108 rqti_switches 4 based structure level 3 dcl 1-9 rtrim builtin function dcl 46 ref 138 138 170 segp 000202 automatic pointer dcl 37 set ref 94* 96 102* 104 182* stops 000204 automatic varying char(48) dcl 38 set ref 165* 167* 167 170 171* 171 172* string builtin function dcl 46 ref 158 substr builtin function dcl 46 ref 167 171 time_created based fixed bin(71,0) level 3 dcl 1-9 set ref 106* type_code 3 based fixed bin(17,0) level 3 dcl 1-9 ref 114 123 133 version 20 based fixed bin(17,0) level 2 dcl 1-9 set ref 114 118* 123* whoami 000000 constant char(24) initial unaligned dcl 44 set ref 69* 75* 75* 82* 90* 98* 110* 118* NAMES DECLARED BY EXPLICIT CONTEXT. display_prt_rqti 000445 constant entry external dcl 26 finish 002165 constant label dcl 182 set ref 112 120 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 2346 2404 2200 2356 Length 2644 2200 36 224 145 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME display_prt_rqti 310 external procedure is an external procedure. on unit on line 102 72 on unit STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME display_prt_rqti 000100 arglen display_prt_rqti 000102 argp display_prt_rqti 000104 code display_prt_rqti 000105 date display_prt_rqti 000113 dir display_prt_rqti 000165 ent display_prt_rqti 000175 i display_prt_rqti 000176 j display_prt_rqti 000177 k display_prt_rqti 000200 nargs display_prt_rqti 000202 segp display_prt_rqti 000204 stops display_prt_rqti 000230 prt_rqtip display_prt_rqti THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_e_as alloc_cs call_ext_out_desc call_ext_out return enable shorten_stack ext_entry int_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. com_err_ com_err_$suppress_name cu_$arg_count cu_$arg_ptr date_time_ expand_pathname_ hcs_$initiate hcs_$terminate_noname ioa_ pathname_ requote_string_ NO EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 26 000444 66 000452 67 000462 69 000464 70 000501 73 000502 75 000505 76 000536 79 000537 80 000556 82 000560 83 000607 86 000610 88 000640 90 000642 91 000666 94 000667 96 000732 98 000736 99 000771 102 000772 104 001021 106 001023 108 001040 110 001044 112 001125 114 001126 118 001134 120 001215 123 001216 129 001302 130 001321 131 001347 133 001373 135 001377 137 001403 138 001417 139 001476 141 001477 142 001516 144 001546 147 001576 148 001612 153 001664 154 001700 155 001721 156 001745 158 001771 160 001777 161 002013 163 002021 165 002027 166 002030 167 002035 169 002064 170 002066 171 002101 172 002122 175 002150 179 002152 182 002165 185 002176 ----------------------------------------------------------- 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