COMPILATION LISTING OF SEGMENT graphic_chars_ Compiled by: Multics PL/I Compiler, Release 27d, of October 11, 1982 Compiled at: Honeywell LISD Phoenix, System M Compiled on: 11/18/82 1635.3 mst Thu Options: optimize map 1 /* *********************************************************** 2* * * 3* * * 4* * Copyright, (C) Honeywell Information Systems Inc., 1981 * 5* * * 6* * * 7* *********************************************************** */ 8 9 /* ****************************************************** 10* * * 11* * * 12* * Copyright (c) 1972 by Massachusetts Institute of * 13* * Technology and Honeywell Information Systems, Inc. * 14* * * 15* * * 16* ****************************************************** */ 17 18 graphic_chars_: proc (instring, alignment, x_factor, y_factor, code) returns (fixed bin (18)); 19 20 /* graphic_chars_ converts a character string into a list of graphic vectors 21* and shifts that stroke out the desired characters. It uses any of several 22* graphic character tables, each of which describes a character set in a 23* different font or alphabet. */ 24 /* Modified 02/08/78 by CDT for new graphic character table formats, including 25* variable width characters, auto canonicalization processing, and smarter 26* multiple-line processing. */ 27 /* Modified 07/22/80 by CDT to use graphics search paths instead of linker 28* search rules to find GCT's. */ 29 /* Modified 08/19/80 by CDT to make characters sharing same character 30* position be centered in the space, not left-adjusted, remove call to 31* com_err_, and remove support for obsolete version 1 character tables. */ 32 /* Last modified 11/25/80 by CDT to fix spreads returned by $long entries */ 33 34 dcl instring char (*) parameter, /* the string to be converted */ 35 alignment fixed bin parameter, /* where to align it */ 36 (x_factor, y_factor) float bin parameter, 37 code fixed bin (35) parameter; 38 1 1 /* *************** BEGIN INCLUDE FILE gm_entry_dcls.incl.pl1 *************** */ 1 2 1 3 dcl (graphic_manipulator_$init, 1 4 gm_$init) entry (fixed bin (35)); 1 5 1 6 dcl (graphic_manipulator_$segp, 1 7 gm_$segp) entry (pointer, fixed bin (35)); 1 8 1 9 dcl (graphic_manipulator_$create_position, 1 10 gm_$create_position, 1 11 graphic_manipulator_$cpos, 1 12 gm_$cpos) entry (fixed bin, float bin (27), float bin (27), float bin (27), fixed bin (35)) returns (fixed bin (18)); 1 13 1 14 dcl (graphic_manipulator_$create_mode, 1 15 gm_$create_mode, 1 16 graphic_manipulator_$cmode, 1 17 gm_$cmode) entry (fixed bin, fixed bin, fixed bin (35)) returns (fixed bin (18)); 1 18 1 19 dcl (graphic_manipulator_$create_scale, 1 20 gm_$create_scale, 1 21 graphic_manipulator_$cscale, 1 22 gm_$cscale) entry (float bin (27), float bin (27), float bin (27), fixed bin (35)) returns (fixed bin (18)); 1 23 1 24 dcl (graphic_manipulator_$create_rotation, 1 25 gm_$create_rotation, 1 26 graphic_manipulator_$crot, 1 27 gm_$crot) entry (float bin (27), float bin (27), float bin (27), fixed bin (35)) returns (fixed bin (18)); 1 28 1 29 dcl (graphic_manipulator_$create_clip, 1 30 gm_$create_clip, 1 31 graphic_manipulator_$cclip, 1 32 gm_$cclip) entry (float bin (27), float bin (27), float bin (27), float bin (27), float bin (27), float bin (27), 1 33 fixed bin (35)) returns (fixed bin (18)); 1 34 1 35 dcl (graphic_manipulator_$create_color, 1 36 gm_$create_color, 1 37 graphic_manipulator_$ccolor, 1 38 gm_$ccolor) entry (fixed bin, fixed bin, fixed bin, fixed bin (35)) returns (fixed bin (18)); 1 39 1 40 dcl (graphic_manipulator_$create_text, 1 41 gm_$create_text, 1 42 graphic_manipulator_$ctext, 1 43 gm_$ctext) entry (fixed bin, fixed bin, char (*), fixed bin (35)) returns (fixed bin (18)); 1 44 1 45 dcl (graphic_manipulator_$create_data, 1 46 gm_$create_data, 1 47 graphic_manipulator_$cdata, 1 48 gm_$cdata) entry (fixed bin, bit (*), fixed bin (35)) returns (fixed bin (18)); 1 49 1 50 dcl (graphic_manipulator_$create_list, 1 51 gm_$create_list, 1 52 graphic_manipulator_$clist, 1 53 gm_$clist) entry (fixed bin (18) dimension (*), fixed bin, fixed bin (35)) returns (fixed bin (18)); 1 54 1 55 dcl (graphic_manipulator_$create_array, 1 56 gm_$create_array, 1 57 graphic_manipulator_$carray, 1 58 gm_$carray) entry (fixed bin (18) dimension (*), fixed bin, fixed bin (35)) returns (fixed bin (18)); 1 59 1 60 dcl (graphic_manipulator_$assign_name, 1 61 gm_$assign_name) entry (char (*), fixed bin (18), fixed bin (35)) returns (fixed bin (18)); 1 62 1 63 dcl (graphic_manipulator_$find_structure, 1 64 gm_$find_structure, 1 65 graphic_manipulator_$fstruc, 1 66 gm_$fstruc) entry (char (*), fixed bin (18), fixed bin (35)) returns (fixed bin (18)); 1 67 1 68 dcl (graphic_manipulator_$add_element, 1 69 gm_$add_element) entry (fixed bin (18), fixed bin, fixed bin (18), fixed bin (35)); 1 70 1 71 dcl (graphic_manipulator_$replace_element, 1 72 gm_$replace_element) entry (fixed bin (18), fixed bin, fixed bin (18), fixed bin (35)) returns (fixed bin (18)); 1 73 1 74 dcl (graphic_manipulator_$replace_node, 1 75 gm_$replace_node) entry (fixed bin (18), fixed bin (18), fixed bin (35)); 1 76 1 77 dcl (graphic_manipulator_$remove_symbol, 1 78 gm_$remove_symbol) entry (char (*), fixed bin (35)); 1 79 1 80 dcl (graphic_manipulator_$replicate, 1 81 gm_$replicate) entry (fixed bin (18), fixed bin (35)) returns (fixed bin (18)); 1 82 1 83 dcl (graphic_manipulator_$examine_type, 1 84 gm_$examine_type) entry (fixed bin (18), bit (1) aligned, fixed bin, fixed bin (35)); 1 85 1 86 dcl (graphic_manipulator_$examine_position, 1 87 gm_$examine_position, 1 88 graphic_manipulator_$epos, 1 89 gm_$epos) entry (fixed bin (18), fixed bin, float bin, float bin, float bin, fixed bin (35)); 1 90 1 91 dcl (graphic_manipulator_$examine_mode, 1 92 gm_$examine_mode, 1 93 graphic_manipulator_$emode, 1 94 gm_$emode) entry (fixed bin (18), fixed bin, fixed bin, fixed bin (35)); 1 95 1 96 dcl (graphic_manipulator_$examine_color, 1 97 gm_$examine_color, 1 98 graphic_manipulator_$ecolor, 1 99 gm_$ecolor) entry (fixed bin (18), fixed bin, fixed bin, fixed bin, fixed bin (35)); 1 100 1 101 dcl (graphic_manipulator_$examine_mapping, 1 102 gm_$examine_mapping, 1 103 graphic_manipulator_$emap, 1 104 gm_$emap) entry (fixed bin (18), fixed bin, float bin dimension (*), fixed bin, fixed bin (35)); 1 105 1 106 dcl (graphic_manipulator_$examine_contents, 1 107 gm_$examine_contents) entry (fixed bin (18), fixed bin (18) dimension (*), fixed bin, fixed bin (35)); 1 108 1 109 dcl (graphic_manipulator_$examine_list, 1 110 gm_$examine_list, 1 111 graphic_manipulator_$elist, 1 112 gm_$elist) entry (fixed bin (18), dimension (*) fixed bin (18), fixed bin, fixed bin (35)); 1 113 1 114 dcl (graphic_manipulator_$examine_symtab, 1 115 graphic_manipulator_$esymtab, 1 116 gm_$examine_symtab, 1 117 gm_$esymtab) entry (fixed bin (18) dimension (*), fixed bin, fixed bin (35)); 1 118 1 119 dcl (graphic_manipulator_$examine_symbol, 1 120 gm_$examine_symbol, 1 121 graphic_manipulator_$esymbol, 1 122 gm_$esymbol) entry (fixed bin (18), fixed bin (18), fixed bin, char (*), fixed bin (35)); 1 123 1 124 dcl (graphic_manipulator_$examine_text, 1 125 gm_$examine_text, 1 126 graphic_manipulator_$etext, 1 127 gm_$etext) entry (fixed bin (18), fixed bin, fixed bin, char (*), fixed bin (35)); 1 128 1 129 dcl (graphic_manipulator_$examine_data, 1 130 gm_$examine_data, 1 131 graphic_manipulator_$edata, 1 132 gm_$edata) entry (fixed bin (18), fixed bin, bit (*), fixed bin (35)); 1 133 1 134 dcl (graphic_manipulator_$get_struc, 1 135 gm_$get_struc, 1 136 graphic_manipulator_$gstruc, 1 137 gm_$gstruc) entry (char (*), char (*), char (*), fixed bin, fixed bin (35)); 1 138 1 139 dcl (graphic_manipulator_$put_struc, 1 140 gm_$put_struc, 1 141 graphic_manipulator_$pstruc, 1 142 gm_$pstruc) entry (char (*), char (*), char (*), fixed bin, fixed bin (35)); 1 143 1 144 dcl (graphic_manipulator_$save_file, 1 145 gm_$save_file) entry (char (*), char (*), fixed bin (35)); 1 146 1 147 dcl (graphic_manipulator_$use_file, 1 148 gm_$use_file) entry (char (*), char (*), fixed bin (35)); 1 149 1 150 /* **************** END INCLUDE FILE gm_entry_dcls.incl.pl1 **************** */ 39 40 2 1 /* --------------- BEGIN include file graphic_etypes.incl.pl1 --------------- */ 2 2 2 3 /* Types of position, mode, and other effectors for the 2 4* Multics General Graphic System */ 2 5 2 6 2 7 /* Null code */ 2 8 2 9 dcl (Null initial (-1), 2 10 2 11 /* Position codes */ 2 12 2 13 Setposition initial (0), 2 14 Setpoint initial (1), 2 15 Vector initial (2), 2 16 Shift initial (3), 2 17 Point initial (4), 2 18 2 19 /* Mode codes, with values where appropriate */ 2 20 2 21 Scaling initial (8), 2 22 Rotation initial (9), 2 23 Clipping initial (10), 2 24 2 25 Intensity initial (16), 2 26 Full_intensity initial (7), 2 27 Half_intensity initial (3), 2 28 Invisible initial (0), 2 29 2 30 Linetype initial (17), 2 31 Solid initial (0), 2 32 Dashed initial (1), 2 33 Dotted initial (2), 2 34 Dash_dotted initial (3), 2 35 Long_dashed initial (4), 2 36 2 37 Sensitivity initial (18), 2 38 Sensitive initial (1), 2 39 Insensitive initial (0), 2 40 2 41 Blink initial (19), 2 42 Steady initial (0), 2 43 Blinking initial (1), 2 44 2 45 Color initial (20), 2 46 2 47 Symbol initial (24), 2 48 2 49 /* Text code, with legal alignments */ 2 50 2 51 Text initial (25), 2 52 Upper_left initial (1), 2 53 Upper_center initial (2), 2 54 Upper_right initial (3), 2 55 Left initial (4), 2 56 Center initial (5), 2 57 Right initial (6), 2 58 Lower_left initial (7), 2 59 Lower_center initial (8), 2 60 Lower_right initial (9), 2 61 2 62 /* Datablock code */ 2 63 2 64 Datablock initial (26), 2 65 2 66 /* Structural effector codes */ 2 67 2 68 List initial (32), 2 69 Array initial (33), 2 70 2 71 /* Merge codes for gm_$get_struc and gm_$put_struc */ 2 72 2 73 On_dup_error initial (0), /* allow no name duplications */ 2 74 On_dup_source initial (1), /* on name dup, force move (use source copy) */ 2 75 On_dup_target_then_nulls initial (2), /* on name dup, use target copy, for nondup symbols create null ones */ 2 76 On_dup_target_then_source initial (3), /* on name dup, use target copy, for nondup symbols, use source copy */ 2 77 2 78 /* Device codes for graphic input devices */ 2 79 2 80 Terminal_program initial (0), 2 81 Keyboard initial (1), 2 82 Mouse initial (2), 2 83 Joystick initial (3), 2 84 Tablet_and_pen initial (4), 2 85 Light_pen initial (5), 2 86 Trackball initial (6), 2 87 Any_device initial (63)) /* 63 is equivalent to -1 in SPI */ 2 88 2 89 fixed bin internal static options (constant); 2 90 2 91 /* ---------------- END include file graphic_etypes.incl.pl1 ---------------- */ 41 42 3 1 /* -------------- BEGIN include file graphic_char_dcl.incl.pl1 -------------- */ 3 2 3 3 dcl char_info_ptr pointer; 3 4 3 5 dcl 1 graphic_char_structure aligned based (char_info_ptr), 3 6 2 header_word aligned, 3 7 3 (n_elements, 3 8 width, 3 9 left_margin, 3 10 right_margin) fixed bin (8) unaligned, 3 11 2 word_align aligned, 3 12 3 move_type (0 refer (graphic_char_structure.n_elements)) bit (1) unaligned, 3 13 2 coords (0 refer (graphic_char_structure.n_elements)) unaligned, 3 14 3 (x_length, 3 15 y_length) fixed bin (8) unaligned; 3 16 3 17 dcl coords_ptr pointer; 3 18 3 19 dcl 1 coord_struc (graphic_char_structure.n_elements) based (coords_ptr) unaligned like graphic_char_structure.coords; 3 20 3 21 dcl 1 v1_graphic_char_structure aligned based (char_info_ptr), 3 22 2 v1_n_elements fixed bin, 3 23 2 elements (0 refer (v1_graphic_char_structure.v1_n_elements)) aligned, 3 24 3 v1_move_type fixed bin, 3 25 3 v1_x_length fixed bin, 3 26 3 v1_y_length fixed bin; 3 27 3 28 /* --------------- END include file graphic_char_dcl.incl.pl1 --------------- */ 43 44 45 dcl (i, j) fixed bin, /* temps */ 46 start fixed bin, 47 line_node (122) fixed bin (18), 48 line_shift_node fixed bin (18), 49 node fixed bin (18); /* temp node */ 50 51 dcl string_len fixed bin, /* length without trailing blanks */ 52 line_shift float bin, 53 (x_shift, y_shift) float bin; 54 55 dcl (x_rel, y_rel) fixed bin; /* to keep track of where we ended up */ 56 57 dcl char char (1) aligned, 58 (BS initial (""), /* the special chars which graphic_char_table_ won't hack */ 59 CR initial (" "), 60 SPACE initial (" "), 61 TAB initial (" "), 62 UNDERSCORE initial ("_"), 63 NL initial (" 64 ")) char (1) aligned static options (constant); 65 66 dcl Line_space_factor float bin static options (constant) initial (1.5e0); 67 68 dcl already_done_chars (0:127) fixed bin (18) static initial ((128) 0); /* keeps us from doing a char twice */ 69 70 dcl sub_err_ ext entry options (variable); 71 72 dcl (error_table_$bad_index, 73 error_table_$unimplemented_version, 74 graphic_error_table_$gct_bad_special_char) ext fixed bin (35) static; 75 76 dcl saved_dirname char (168) static initial (""), 77 saved_ename char (32) static initial ("gct_block_roman_"); 78 79 dcl motion fixed bin, 80 avg_width float bin; 81 82 dcl char_ptr (0:127) based (char_ptr_ptr) pointer, 83 character_sizes (3) based (char_sizes_ptr) fixed bin; 84 85 dcl (char_ptr_ptr, char_sizes_ptr) pointer static initial (null); 86 87 dcl (x_size, y_size, x_margins) float bin static initial (0); 88 89 dcl strip_blanks bit (1) aligned initial ("1"b); 90 91 dcl (addr, codeptr, dim, divide, float, index, length, 92 max, mod, null, rank, rtrim, substr) builtin; 93 94 common: 95 code = 0; 96 x_rel, y_rel = 0e0; 97 98 if char_ptr_ptr = null then do; 99 call set_table_internal (saved_dirname, saved_ename, code); 100 if code ^= 0 then return (0); 101 end; 102 103 if strip_blanks then string_len = length (rtrim (instring, " ")); 104 else string_len = length (instring); 105 106 if string_len = 0 then return (0); /* simple. */ 107 108 i = index (substr (instring, 1, string_len), NL); 109 if i = 0 then node = assemble_substring (instring, string_len, x_rel, code); 110 111 else do; 112 start = 1; 113 y_rel = -1; /* counts one less lines than times thru loop */ 114 line_shift = y_factor * Line_space_factor; 115 line_shift_node = graphic_manipulator_$create_position (Shift, 0, -line_shift, 0, code); 116 if code ^= 0 then return (0); 117 118 do i = 2 by 2 while (start <= string_len); 119 if i+1 > dim (line_node, 1) then do; 120 code = error_table_$bad_index; 121 return (0); 122 end; 123 124 j = index (substr (instring, start, string_len - start + 1), NL) - 1; 125 if j = -1 then j = string_len - start + 1; 126 127 line_node (i) = assemble_substring (substr (instring, start, j), j, x_rel, code); 128 if code ^= 0 then return (0); 129 130 line_node (i+1) = line_shift_node; 131 y_rel = y_rel + 1; 132 start = start + j + 1; 133 end; 134 135 y_shift = divide (alignment - 1, 3, 17, 0) * y_rel * line_shift / 2e0; 136 line_node (1) = graphic_manipulator_$create_position (Shift, 0, y_shift, 0, code); 137 if code ^= 0 then return (0); 138 line_node (i-1) = graphic_manipulator_$create_position 139 (Shift, 0, (y_rel * line_shift) - y_shift, 0, code); 140 if code ^= 0 then return (0); 141 142 node = graphic_manipulator_$create_array (line_node, i-1, code); 143 if code ^= 0 then return (0); 144 end; 145 146 if end_position_entry then do; /* user wants end position info */ 147 x_arg = x_rel * x_factor; 148 y_arg = y_rel * y_factor * Line_space_factor; 149 end; 150 151 return (node); 152 153 assemble_substring: proc (instring, string_len, max_column, code) returns (fixed bin (18)); 154 155 dcl instring char (*) parameter, 156 string_len fixed bin parameter, 157 max_column fixed bin parameter, 158 code fixed bin (35) parameter; 159 160 dcl column_widths (string_len) fixed bin, 161 a (string_len+10) fixed bin (18), /* temp nodes */ 162 b (200) fixed bin (18); /* more temp nodes */ 163 164 dcl char_value fixed bin, 165 x_rel_pts fixed bin, 166 half_xwidth_difference float bin, 167 column fixed bin, 168 (i, j) fixed bin; 169 170 dcl node fixed bin (18); 171 172 max_column = 0; 173 174 if string_len = 0 then return (0); 175 column_widths = 0; 176 column = 0; 177 178 do i = 1 to string_len; /* do for every character in string */ 179 180 char_value = rank (substr (instring, i, 1)); /* get fixed bin value of char */ 181 if char_value = -1 then char_value = 0; /* gaack. */ 182 char_info_ptr = char_ptr (char_value); 183 184 if graphic_char_structure.n_elements >= 0 then do; 185 column = column + 1; 186 if graphic_char_structure.n_elements > 0 then 187 column_widths (column) = max (column_widths (column), graphic_char_structure.width); 188 end; 189 190 else do; /* is a special char */ 191 char = substr (instring, i, 1); 192 193 if char = BS then column = max (0, column - 1); 194 195 else if char = CR then column = 0; 196 197 else if char = SPACE | char = TAB | char = UNDERSCORE then do; 198 /* we treat these as possible whitespace */ 199 column = column + 1; 200 if column_widths (column) = 0 then 201 column_widths (column) = -x_size + x_margins; 202 /* is negative because if a real char later appears in */ 203 /* this column, it will override this arbitrary width */ 204 end; 205 else do; /* don't know this char, must be new */ 206 call sub_err_ (graphic_error_table_$gct_bad_special_char, 207 "graphic_chars_", "h", null, 0, 208 "Octal value of unrecognized character is ^o.", char_value); 209 a (i+2) = 0; /* put in a nothing */ 210 end; 211 end; 212 213 max_column = max (column, max_column); 214 end; 215 216 x_rel_pts = 0; 217 218 do i = 1 to string_len while (column_widths (i) ^= 0); 219 if column_widths (i) < 0 then column_widths (i) = - column_widths (i); 220 /* legitimize all remaining whitespace */ 221 x_rel_pts = x_rel_pts + column_widths (i); 222 end; 223 224 225 /* Now we have passed the string canonically and know how many points each character */ 226 /* position takes (max). Now we shoehorn the characters into their assigned space. */ 227 228 column = 0; 229 230 do i = 1 to string_len; 231 232 char_value = rank (substr (instring, i, 1)); /* get fixed bin value of char */ 233 if char_value = -1 then char_value = 0; /* gaack. */ 234 char_info_ptr = char_ptr (char_value); 235 236 if already_done_chars (char_value) ^= 0 then do; /* we already assembled one of these */ 237 column = column + 1; 238 if column_widths (column) = graphic_char_structure.width then 239 a (i+2) = already_done_chars (char_value); /* put it in */ 240 else do; 241 half_xwidth_difference = (column_widths (column) - graphic_char_structure.width) / 2e0; 242 b (1) = graphic_manipulator_$create_position (Shift, 243 half_xwidth_difference, 0, 0, code); 244 if code ^= 0 then return (0); 245 b (2) = already_done_chars (char_value); 246 b (3) = b (1); 247 a (i+2) = graphic_manipulator_$create_array (b, 3, code); 248 if code ^= 0 then return (0); 249 end; 250 end; 251 252 else do; /* make it from scratch */ 253 if graphic_char_structure.n_elements < 0 then do; /* this is special char */ 254 255 char = substr (instring, i, 1); /* get it */ 256 257 if char = BS then do; /* backspace */ 258 if column = 0 then a (i+2) = 0; /* he's "up against the wall" */ 259 else do; 260 a (i+2) = graphic_manipulator_$create_position 261 (Shift, - column_widths (column), 0, 0, code); 262 if code ^= 0 then return (0); /* go back one space */ 263 column = column - 1; 264 end; 265 end; 266 267 else if char = CR then do; /* carriage return */ 268 j = 0; 269 do column = column to 1 by -1; 270 j = j - column_widths (column); 271 end; 272 273 a (i+2) = graphic_manipulator_$create_position (Shift, (j), 0, 0, code); 274 if code ^= 0 then return (0); /* go back all the way */ 275 end; 276 277 else if char = SPACE | char = TAB then do; 278 column = column + 1; 279 a (i+2) = graphic_manipulator_$create_position (Shift, (column_widths (column)), 0, 0, code); 280 if code ^= 0 then return (0); 281 end; 282 283 else if char = UNDERSCORE then do; 284 column = column + 1; 285 b (1) = graphic_manipulator_$create_position (Shift, 0, -y_size * 1.125, 0, code); 286 if code ^= 0 then return (0); 287 b (2) = graphic_manipulator_$create_position (Vector, (column_widths (column)), 0, 0, code); 288 if code ^= 0 then return (0); 289 b (3) = graphic_manipulator_$create_position (Shift, 0, y_size * 1.125, 0, code); 290 if code ^= 0 then return (0); 291 a (i+2) = graphic_manipulator_$create_array (b, 3, code); 292 if code ^= 0 then return (0); 293 end; 294 end; 295 296 else if graphic_char_structure.n_elements = 0 then a (i+2) = 0; 297 /* is garbage/control char, ignore */ 298 299 else do; /* char is handled by table */ 300 coords_ptr = addr (graphic_char_structure.coords); /* use faster pointer reference */ 301 column = column + 1; 302 303 if graphic_char_structure.n_elements > dim (b, 1) then do; 304 code = error_table_$bad_index; 305 return (0); 306 end; 307 308 do j = 1 to graphic_char_structure.n_elements; /* do for every vector in char */ 309 if graphic_char_structure.move_type (j) then motion = Vector; 310 else motion = Shift; 311 b (j) = graphic_manipulator_$create_position 312 (motion, float (graphic_char_structure.x_length (j)), 313 float (graphic_char_structure.y_length (j)), 0, code); 314 /* create shift or vector as ordered */ 315 if code ^= 0 then return (0); 316 end; 317 318 already_done_chars (char_value), a (i+2) 319 = graphic_manipulator_$create_array (b, j-1, code); 320 /* remember we did this char. */ 321 if code ^= 0 then return (0); 322 if column_widths (column) > graphic_char_structure.width then do; 323 half_xwidth_difference = (column_widths (column) - graphic_char_structure.width) / 2e0; 324 b (1) = graphic_manipulator_$create_position (Shift, 325 half_xwidth_difference, 0, 0, code); 326 if code ^= 0 then return (0); 327 b (2) = a (i+2); /* use node just created */ 328 b (3) = b (1); 329 a (i+2) = graphic_manipulator_$create_array (b, 3, code); 330 if code ^= 0 then return (0); 331 end; 332 end; 333 end; 334 end; 335 336 if mod (alignment - 1, 3) ^= 0 then 337 x_shift = mod (alignment - 1, 3) * - x_rel_pts/2e0; 338 else x_shift = 0; 339 340 y_shift = divide (alignment - 1, 3, 17, 0) * y_size/2e0; 341 342 if max_column <= 0 then return (0); /* weird, maybe just backspaces */ 343 344 avg_width = float (x_rel_pts)/float (max_column); 345 if avg_width = 0 then return (0); /* all control chars */ 346 347 a (1) = graphic_manipulator_$create_scale 348 (x_factor/avg_width, y_factor/y_size, 1, code); /* scale the chars */ 349 if code ^= 0 then return (0); 350 a (2) = graphic_manipulator_$create_position 351 (Shift, x_shift, y_shift, 0, code); /* perform alignment */ 352 if code ^= 0 then return (0); 353 354 355 a (i+2) = graphic_manipulator_$create_position (Shift, - x_rel_pts - x_shift, 356 - y_shift, 0, code); 357 /* shift back to starting point */ 358 if code ^= 0 then return (0); 359 360 node = graphic_manipulator_$create_array (a, i+2, code); /* make one list from all chars */ 361 if code ^= 0 then return (0); 362 363 return (node); 364 365 end assemble_substring; 366 367 long_tb: entry (instring, alignment, x_factor, y_factor, x_arg, y_arg, code) returns (fixed bin (18)); 368 369 strip_blanks = ""b; 370 371 long: entry (instring, alignment, x_factor, y_factor, x_arg, y_arg, code) returns (fixed bin (18)); 372 373 dcl (x_arg, y_arg) float bin parameter, /* end positions, to be returned */ 374 end_position_entry bit (1) aligned initial (""b); /* if on, were called from this entry */ 375 376 x_arg, y_arg = 0; 377 end_position_entry = "1"b; 378 goto common; 379 380 init: entry; 381 382 already_done_chars = 0; 383 return; 384 385 set_table: entry (dirname, ename, code); 386 387 dcl (dirname, ename) char (*) parameter; 388 389 call set_table_internal (dirname, ename, code); 390 return; 391 392 get_table: entry (dirname, ename); 393 394 dirname = saved_dirname; 395 ename = saved_ename; 396 return; 397 398 399 set_table_internal: proc (dirname, ename, code); 400 401 dcl (dirname, ename) char (*) parameter, 402 code fixed bin (35) parameter; 403 404 dcl term_$single_refname ext entry (char (*), fixed bin (35)), 405 hcs_$initiate ext entry (char (*), char (*), char (*), fixed bin, fixed bin, pointer, fixed bin (35)), 406 hcs_$fs_get_path_name ext entry (pointer, char (*), fixed bin, char (*), fixed bin (35)), 407 hcs_$make_ptr ext entry (pointer, char (*), char (*), pointer, fixed bin (35)); 408 409 dcl search_paths_$find_dir ext entry (char (*), pointer, char (*), char (*), char (*), fixed bin (35)); 410 411 dcl (csp, cpp) pointer; 412 413 dcl auto_dirname char (168), 414 my_own_dirname char (168) static initial (""); 415 416 dcl error_table_$segknown ext fixed bin (35) static; 417 418 419 char_ptr_ptr, char_sizes_ptr = null; /* if anything fails, we want next call */ 420 /* to refind current table from scratch */ 421 422 call term_$single_refname (ename, 0); /* get rid of this refname if possible */ 423 424 if dirname ^= "" then 425 auto_dirname = dirname; /* path given, no sweat */ 426 427 else do; 428 if my_own_dirname = "" then do; /* make referencing_dir rule work */ 429 this_label: call hcs_$fs_get_path_name (codeptr (this_label), 430 my_own_dirname, 0, "", code); 431 if code ^= 0 then return; 432 end; 433 434 call search_paths_$find_dir ("graphics", null, 435 ename, my_own_dirname, auto_dirname, code); 436 if code ^= 0 then return; 437 end; 438 439 call hcs_$initiate (auto_dirname, ename, ename, 0, 0, 440 null, code); 441 if code ^= 0 then if code ^= error_table_$segknown then return; 442 /* want to know about name duplications if need be */ 443 444 call hcs_$make_ptr (null, ename, "char_ptr", cpp, code); 445 if code ^= 0 then return; 446 447 call hcs_$make_ptr (null, ename, "character_sizes", csp, code); 448 if code ^= 0 then return; 449 450 if csp -> character_sizes (3) > 0 then do; 451 code = error_table_$unimplemented_version; 452 return; 453 end; 454 455 saved_dirname = auto_dirname; 456 saved_ename = ename; 457 458 char_ptr_ptr = cpp; 459 char_sizes_ptr = csp; 460 461 x_size = character_sizes (2); 462 y_size = character_sizes (1); 463 x_margins = - character_sizes (3); 464 465 already_done_chars = 0; /* no use keeping this after switching tables! */ 466 467 return; 468 end set_table_internal; 469 470 end graphic_chars_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/18/82 1625.3 graphic_chars_.pl1 >dumps>old>recomp>graphic_chars_.pl1 39 1 08/27/75 1700.7 gm_entry_dcls.incl.pl1 >ldd>include>gm_entry_dcls.incl.pl1 41 2 03/27/82 0439.2 graphic_etypes.incl.pl1 >ldd>include>graphic_etypes.incl.pl1 43 3 03/27/82 0439.2 graphic_char_dcl.incl.pl1 >ldd>include>graphic_char_dcl.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. BS constant char(1) initial dcl 57 ref 193 257 CR constant char(1) initial dcl 57 ref 195 267 Line_space_factor constant float bin(27) initial dcl 66 ref 114 148 NL constant char(1) initial dcl 57 ref 108 124 SPACE constant char(1) initial dcl 57 ref 197 277 Shift 000013 constant fixed bin(17,0) initial dcl 2-9 set ref 115* 136* 138* 242* 260* 273* 279* 285* 289* 310 324* 350* 355* TAB constant char(1) initial dcl 57 ref 197 277 UNDERSCORE constant char(1) initial dcl 57 ref 197 283 Vector 000015 constant fixed bin(17,0) initial dcl 2-9 set ref 287* 309 a 000100 automatic fixed bin(18,0) array dcl 160 set ref 209* 238* 247* 258* 260* 273* 279* 291* 296* 318* 327 329* 347* 350* 355* 360* addr builtin function dcl 91 ref 300 alignment parameter fixed bin(17,0) dcl 34 ref 18 135 336 336 340 367 371 already_done_chars 000010 internal static fixed bin(18,0) initial array dcl 68 set ref 236 238 245 318* 382* 465* auto_dirname 000340 automatic char(168) unaligned dcl 413 set ref 424* 434* 439* 455 avg_width 000313 automatic float bin(27) dcl 79 set ref 344* 345 347 b 000100 automatic fixed bin(18,0) array dcl 160 set ref 242* 245* 246* 246 247* 285* 287* 289* 291* 303 311* 318* 324* 327* 328* 328 329* char 000311 automatic char(1) dcl 57 set ref 191* 193 195 197 197 197 255* 257 267 277 277 283 char_info_ptr 000100 automatic pointer dcl 3-3 set ref 182* 184 186 186 234* 238 241 253 296 300 303 308 309 311 311 311 311 322 323 char_ptr based pointer array dcl 82 ref 182 234 char_ptr_ptr 000272 internal static pointer initial dcl 85 set ref 98 182 234 419* 458* char_sizes_ptr 000274 internal static pointer initial dcl 85 set ref 419* 459* 461 462 463 char_value 000410 automatic fixed bin(17,0) dcl 164 set ref 180* 181 181* 182 206* 232* 233 233* 234 236 238 245 318 character_sizes based fixed bin(17,0) array dcl 82 ref 450 461 462 463 code parameter fixed bin(35,0) dcl 155 in procedure "assemble_substring" set ref 153 242* 244 247* 248 260* 262 273* 274 279* 280 285* 286 287* 288 289* 290 291* 292 304* 311* 315 318* 321 324* 326 329* 330 347* 349 350* 352 355* 358 360* 361 code parameter fixed bin(35,0) dcl 401 in procedure "set_table_internal" set ref 399 429* 431 434* 436 439* 441 441 444* 445 447* 448 451* code parameter fixed bin(35,0) dcl 34 in procedure "graphic_chars_" set ref 18 94* 99* 100 109* 115* 116 120* 127* 128 136* 137 138* 140 142* 143 367 371 385 389* codeptr builtin function dcl 91 ref 429 429 column 000413 automatic fixed bin(17,0) dcl 164 set ref 176* 185* 185 186 186 193* 193 195* 199* 199 200 200 213 228* 237* 237 238 241 258 260 263* 263 269* 269* 270* 278* 278 279 284* 284 287 301* 301 322 323 column_widths 000100 automatic fixed bin(17,0) array dcl 160 set ref 175* 186* 186 200 200* 218 219 219* 219 221 238 241 260 270 279 287 322 323 coords based structure array level 2 packed unaligned dcl 3-5 set ref 300 coords_ptr 000102 automatic pointer dcl 3-17 set ref 300* cpp 000336 automatic pointer dcl 411 set ref 444* 458 csp 000334 automatic pointer dcl 411 set ref 447* 450 459 dim builtin function dcl 91 ref 119 303 dirname parameter char unaligned dcl 387 in procedure "graphic_chars_" set ref 385 389* 392 394* dirname parameter char unaligned dcl 401 in procedure "set_table_internal" ref 399 424 424 divide builtin function dcl 91 ref 135 340 ename parameter char unaligned dcl 387 in procedure "graphic_chars_" set ref 385 389* 392 395* ename parameter char unaligned dcl 401 in procedure "set_table_internal" set ref 399 422* 434* 439* 439* 444* 447* 456 end_position_entry 000315 automatic bit(1) initial dcl 373 set ref 146 373* 377* error_table_$bad_index 000364 external static fixed bin(35,0) dcl 72 ref 120 304 error_table_$segknown 000404 external static fixed bin(35,0) dcl 416 ref 441 error_table_$unimplemented_version 000366 external static fixed bin(35,0) dcl 72 ref 451 float builtin function dcl 91 ref 311 311 311 311 344 344 graphic_char_structure based structure level 1 dcl 3-5 graphic_error_table_$gct_bad_special_char 000370 external static fixed bin(35,0) dcl 72 set ref 206* graphic_manipulator_$create_array 000360 constant entry external dcl 1-55 ref 142 247 291 318 329 360 graphic_manipulator_$create_position 000354 constant entry external dcl 1-9 ref 115 136 138 242 260 273 279 285 287 289 311 324 350 355 graphic_manipulator_$create_scale 000356 constant entry external dcl 1-19 ref 347 half_xwidth_difference 000412 automatic float bin(27) dcl 164 set ref 241* 242* 323* 324* hcs_$fs_get_path_name 000376 constant entry external dcl 404 ref 429 hcs_$initiate 000374 constant entry external dcl 404 ref 439 hcs_$make_ptr 000400 constant entry external dcl 404 ref 444 447 header_word based structure level 2 dcl 3-5 i 000414 automatic fixed bin(17,0) dcl 164 in procedure "assemble_substring" set ref 178* 180 191 209* 218* 218* 219 219 219 221* 230* 232 238 247 255 258 260 273 279 291 296 318 327 329* 355 360 i 000104 automatic fixed bin(17,0) dcl 45 in procedure "graphic_chars_" set ref 108* 109 118* 119 127 130* 138 142 index builtin function dcl 91 ref 108 124 instring parameter char unaligned dcl 155 in procedure "assemble_substring" ref 153 180 191 232 255 instring parameter char unaligned dcl 34 in procedure "graphic_chars_" set ref 18 103 104 108 109* 124 127 127 367 371 j 000105 automatic fixed bin(17,0) dcl 45 in procedure "graphic_chars_" set ref 124* 125 125* 127 127 127* 132 j 000415 automatic fixed bin(17,0) dcl 164 in procedure "assemble_substring" set ref 268* 270* 270 273 308* 309 311 311 311 311 311* 318 length builtin function dcl 91 ref 103 104 line_node 000107 automatic fixed bin(18,0) array dcl 45 set ref 119 127* 130* 136* 138* 142* line_shift 000304 automatic float bin(27) dcl 51 set ref 114* 115 135 138 line_shift_node 000301 automatic fixed bin(18,0) dcl 45 set ref 115* 130 max builtin function dcl 91 ref 186 193 213 max_column parameter fixed bin(17,0) dcl 155 set ref 153 172* 213* 213 342 344 mod builtin function dcl 91 ref 336 336 motion 000312 automatic fixed bin(17,0) dcl 79 set ref 309* 310* 311* move_type 1 based bit(1) array level 3 packed unaligned dcl 3-5 ref 309 my_own_dirname 000301 internal static char(168) initial unaligned dcl 413 set ref 428 429* 434* n_elements based fixed bin(8,0) level 3 packed unaligned dcl 3-5 ref 184 186 253 296 300 303 308 311 311 311 311 node 000416 automatic fixed bin(18,0) dcl 170 in procedure "assemble_substring" set ref 360* 363 node 000302 automatic fixed bin(18,0) dcl 45 in procedure "graphic_chars_" set ref 109* 142* 151 null builtin function dcl 91 ref 98 206 206 419 434 434 439 439 444 444 447 447 rank builtin function dcl 91 ref 180 232 rtrim builtin function dcl 91 ref 103 saved_dirname 000210 internal static char(168) initial unaligned dcl 76 set ref 99* 394 455* saved_ename 000262 internal static char(32) initial unaligned dcl 76 set ref 99* 395 456* search_paths_$find_dir 000402 constant entry external dcl 409 ref 434 start 000106 automatic fixed bin(17,0) dcl 45 set ref 112* 118 124 124 125 127 127 132* 132 string_len 000303 automatic fixed bin(17,0) dcl 51 in procedure "graphic_chars_" set ref 103* 104* 106 108 109* 118 124 125 string_len parameter fixed bin(17,0) dcl 155 in procedure "assemble_substring" ref 153 160 160 174 178 218 230 strip_blanks 000314 automatic bit(1) initial dcl 89 set ref 89* 103 369* sub_err_ 000362 constant entry external dcl 70 ref 206 substr builtin function dcl 91 ref 108 124 127 127 180 191 232 255 term_$single_refname 000372 constant entry external dcl 404 ref 422 width 0(09) based fixed bin(8,0) level 3 packed unaligned dcl 3-5 ref 186 238 241 322 323 word_align 1 based structure level 2 dcl 3-5 x_arg parameter float bin(27) dcl 373 set ref 147* 367 371 376* x_factor parameter float bin(27) dcl 34 ref 18 147 347 367 371 x_length based fixed bin(8,0) array level 3 packed unaligned dcl 3-5 set ref 311 311 x_margins 000300 internal static float bin(27) initial dcl 87 set ref 200 463* x_rel 000307 automatic fixed bin(17,0) dcl 55 set ref 96* 109* 127* 147 x_rel_pts 000411 automatic fixed bin(17,0) dcl 164 set ref 216* 221* 221 336 344 355 x_shift 000305 automatic float bin(27) dcl 51 set ref 336* 338* 350* 355 x_size 000276 internal static float bin(27) initial dcl 87 set ref 200 461* y_arg parameter float bin(27) dcl 373 set ref 148* 367 371 376* y_factor parameter float bin(27) dcl 34 ref 18 114 148 347 367 371 y_length based fixed bin(8,0) array level 3 packed unaligned dcl 3-5 set ref 311 311 y_rel 000310 automatic fixed bin(17,0) dcl 55 set ref 96* 113* 131* 131 135 138 148 y_shift 000306 automatic float bin(27) dcl 51 set ref 135* 136* 138 340* 350* 355 y_size 000277 internal static float bin(27) initial dcl 87 set ref 285 289 340 347 462* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. Any_device internal static fixed bin(17,0) initial dcl 2-9 Array internal static fixed bin(17,0) initial dcl 2-9 Blink internal static fixed bin(17,0) initial dcl 2-9 Blinking internal static fixed bin(17,0) initial dcl 2-9 Center internal static fixed bin(17,0) initial dcl 2-9 Clipping internal static fixed bin(17,0) initial dcl 2-9 Color internal static fixed bin(17,0) initial dcl 2-9 Dash_dotted internal static fixed bin(17,0) initial dcl 2-9 Dashed internal static fixed bin(17,0) initial dcl 2-9 Datablock internal static fixed bin(17,0) initial dcl 2-9 Dotted internal static fixed bin(17,0) initial dcl 2-9 Full_intensity internal static fixed bin(17,0) initial dcl 2-9 Half_intensity internal static fixed bin(17,0) initial dcl 2-9 Insensitive internal static fixed bin(17,0) initial dcl 2-9 Intensity internal static fixed bin(17,0) initial dcl 2-9 Invisible internal static fixed bin(17,0) initial dcl 2-9 Joystick internal static fixed bin(17,0) initial dcl 2-9 Keyboard internal static fixed bin(17,0) initial dcl 2-9 Left internal static fixed bin(17,0) initial dcl 2-9 Light_pen internal static fixed bin(17,0) initial dcl 2-9 Linetype internal static fixed bin(17,0) initial dcl 2-9 List internal static fixed bin(17,0) initial dcl 2-9 Long_dashed internal static fixed bin(17,0) initial dcl 2-9 Lower_center internal static fixed bin(17,0) initial dcl 2-9 Lower_left internal static fixed bin(17,0) initial dcl 2-9 Lower_right internal static fixed bin(17,0) initial dcl 2-9 Mouse internal static fixed bin(17,0) initial dcl 2-9 Null internal static fixed bin(17,0) initial dcl 2-9 On_dup_error internal static fixed bin(17,0) initial dcl 2-9 On_dup_source internal static fixed bin(17,0) initial dcl 2-9 On_dup_target_then_nulls internal static fixed bin(17,0) initial dcl 2-9 On_dup_target_then_source internal static fixed bin(17,0) initial dcl 2-9 Point internal static fixed bin(17,0) initial dcl 2-9 Right internal static fixed bin(17,0) initial dcl 2-9 Rotation internal static fixed bin(17,0) initial dcl 2-9 Scaling internal static fixed bin(17,0) initial dcl 2-9 Sensitive internal static fixed bin(17,0) initial dcl 2-9 Sensitivity internal static fixed bin(17,0) initial dcl 2-9 Setpoint internal static fixed bin(17,0) initial dcl 2-9 Setposition internal static fixed bin(17,0) initial dcl 2-9 Solid internal static fixed bin(17,0) initial dcl 2-9 Steady internal static fixed bin(17,0) initial dcl 2-9 Symbol internal static fixed bin(17,0) initial dcl 2-9 Tablet_and_pen internal static fixed bin(17,0) initial dcl 2-9 Terminal_program internal static fixed bin(17,0) initial dcl 2-9 Text internal static fixed bin(17,0) initial dcl 2-9 Trackball internal static fixed bin(17,0) initial dcl 2-9 Upper_center internal static fixed bin(17,0) initial dcl 2-9 Upper_left internal static fixed bin(17,0) initial dcl 2-9 Upper_right internal static fixed bin(17,0) initial dcl 2-9 coord_struc based structure array level 1 packed unaligned dcl 3-19 gm_$add_element 000000 constant entry external dcl 1-68 gm_$assign_name 000000 constant entry external dcl 1-60 gm_$carray 000000 constant entry external dcl 1-55 gm_$cclip 000000 constant entry external dcl 1-29 gm_$ccolor 000000 constant entry external dcl 1-35 gm_$cdata 000000 constant entry external dcl 1-45 gm_$clist 000000 constant entry external dcl 1-50 gm_$cmode 000000 constant entry external dcl 1-14 gm_$cpos 000000 constant entry external dcl 1-9 gm_$create_array 000000 constant entry external dcl 1-55 gm_$create_clip 000000 constant entry external dcl 1-29 gm_$create_color 000000 constant entry external dcl 1-35 gm_$create_data 000000 constant entry external dcl 1-45 gm_$create_list 000000 constant entry external dcl 1-50 gm_$create_mode 000000 constant entry external dcl 1-14 gm_$create_position 000000 constant entry external dcl 1-9 gm_$create_rotation 000000 constant entry external dcl 1-24 gm_$create_scale 000000 constant entry external dcl 1-19 gm_$create_text 000000 constant entry external dcl 1-40 gm_$crot 000000 constant entry external dcl 1-24 gm_$cscale 000000 constant entry external dcl 1-19 gm_$ctext 000000 constant entry external dcl 1-40 gm_$ecolor 000000 constant entry external dcl 1-96 gm_$edata 000000 constant entry external dcl 1-129 gm_$elist 000000 constant entry external dcl 1-109 gm_$emap 000000 constant entry external dcl 1-101 gm_$emode 000000 constant entry external dcl 1-91 gm_$epos 000000 constant entry external dcl 1-86 gm_$esymbol 000000 constant entry external dcl 1-119 gm_$esymtab 000000 constant entry external dcl 1-114 gm_$etext 000000 constant entry external dcl 1-124 gm_$examine_color 000000 constant entry external dcl 1-96 gm_$examine_contents 000000 constant entry external dcl 1-106 gm_$examine_data 000000 constant entry external dcl 1-129 gm_$examine_list 000000 constant entry external dcl 1-109 gm_$examine_mapping 000000 constant entry external dcl 1-101 gm_$examine_mode 000000 constant entry external dcl 1-91 gm_$examine_position 000000 constant entry external dcl 1-86 gm_$examine_symbol 000000 constant entry external dcl 1-119 gm_$examine_symtab 000000 constant entry external dcl 1-114 gm_$examine_text 000000 constant entry external dcl 1-124 gm_$examine_type 000000 constant entry external dcl 1-83 gm_$find_structure 000000 constant entry external dcl 1-63 gm_$fstruc 000000 constant entry external dcl 1-63 gm_$get_struc 000000 constant entry external dcl 1-134 gm_$gstruc 000000 constant entry external dcl 1-134 gm_$init 000000 constant entry external dcl 1-3 gm_$pstruc 000000 constant entry external dcl 1-139 gm_$put_struc 000000 constant entry external dcl 1-139 gm_$remove_symbol 000000 constant entry external dcl 1-77 gm_$replace_element 000000 constant entry external dcl 1-71 gm_$replace_node 000000 constant entry external dcl 1-74 gm_$replicate 000000 constant entry external dcl 1-80 gm_$save_file 000000 constant entry external dcl 1-144 gm_$segp 000000 constant entry external dcl 1-6 gm_$use_file 000000 constant entry external dcl 1-147 graphic_manipulator_$add_element 000000 constant entry external dcl 1-68 graphic_manipulator_$assign_name 000000 constant entry external dcl 1-60 graphic_manipulator_$carray 000000 constant entry external dcl 1-55 graphic_manipulator_$cclip 000000 constant entry external dcl 1-29 graphic_manipulator_$ccolor 000000 constant entry external dcl 1-35 graphic_manipulator_$cdata 000000 constant entry external dcl 1-45 graphic_manipulator_$clist 000000 constant entry external dcl 1-50 graphic_manipulator_$cmode 000000 constant entry external dcl 1-14 graphic_manipulator_$cpos 000000 constant entry external dcl 1-9 graphic_manipulator_$create_clip 000000 constant entry external dcl 1-29 graphic_manipulator_$create_color 000000 constant entry external dcl 1-35 graphic_manipulator_$create_data 000000 constant entry external dcl 1-45 graphic_manipulator_$create_list 000000 constant entry external dcl 1-50 graphic_manipulator_$create_mode 000000 constant entry external dcl 1-14 graphic_manipulator_$create_rotation 000000 constant entry external dcl 1-24 graphic_manipulator_$create_text 000000 constant entry external dcl 1-40 graphic_manipulator_$crot 000000 constant entry external dcl 1-24 graphic_manipulator_$cscale 000000 constant entry external dcl 1-19 graphic_manipulator_$ctext 000000 constant entry external dcl 1-40 graphic_manipulator_$ecolor 000000 constant entry external dcl 1-96 graphic_manipulator_$edata 000000 constant entry external dcl 1-129 graphic_manipulator_$elist 000000 constant entry external dcl 1-109 graphic_manipulator_$emap 000000 constant entry external dcl 1-101 graphic_manipulator_$emode 000000 constant entry external dcl 1-91 graphic_manipulator_$epos 000000 constant entry external dcl 1-86 graphic_manipulator_$esymbol 000000 constant entry external dcl 1-119 graphic_manipulator_$esymtab 000000 constant entry external dcl 1-114 graphic_manipulator_$etext 000000 constant entry external dcl 1-124 graphic_manipulator_$examine_color 000000 constant entry external dcl 1-96 graphic_manipulator_$examine_contents 000000 constant entry external dcl 1-106 graphic_manipulator_$examine_data 000000 constant entry external dcl 1-129 graphic_manipulator_$examine_list 000000 constant entry external dcl 1-109 graphic_manipulator_$examine_mapping 000000 constant entry external dcl 1-101 graphic_manipulator_$examine_mode 000000 constant entry external dcl 1-91 graphic_manipulator_$examine_position 000000 constant entry external dcl 1-86 graphic_manipulator_$examine_symbol 000000 constant entry external dcl 1-119 graphic_manipulator_$examine_symtab 000000 constant entry external dcl 1-114 graphic_manipulator_$examine_text 000000 constant entry external dcl 1-124 graphic_manipulator_$examine_type 000000 constant entry external dcl 1-83 graphic_manipulator_$find_structure 000000 constant entry external dcl 1-63 graphic_manipulator_$fstruc 000000 constant entry external dcl 1-63 graphic_manipulator_$get_struc 000000 constant entry external dcl 1-134 graphic_manipulator_$gstruc 000000 constant entry external dcl 1-134 graphic_manipulator_$init 000000 constant entry external dcl 1-3 graphic_manipulator_$pstruc 000000 constant entry external dcl 1-139 graphic_manipulator_$put_struc 000000 constant entry external dcl 1-139 graphic_manipulator_$remove_symbol 000000 constant entry external dcl 1-77 graphic_manipulator_$replace_element 000000 constant entry external dcl 1-71 graphic_manipulator_$replace_node 000000 constant entry external dcl 1-74 graphic_manipulator_$replicate 000000 constant entry external dcl 1-80 graphic_manipulator_$save_file 000000 constant entry external dcl 1-144 graphic_manipulator_$segp 000000 constant entry external dcl 1-6 graphic_manipulator_$use_file 000000 constant entry external dcl 1-147 v1_graphic_char_structure based structure level 1 dcl 3-21 NAMES DECLARED BY EXPLICIT CONTEXT. assemble_substring 001155 constant entry internal dcl 153 ref 109 127 common 000130 constant label dcl 94 ref 378 get_table 001110 constant entry external dcl 392 graphic_chars_ 000105 constant entry external dcl 18 init 000775 constant entry external dcl 380 long 000742 constant entry external dcl 371 long_tb 000713 constant entry external dcl 367 set_table 001027 constant entry external dcl 385 set_table_internal 003000 constant entry internal dcl 399 ref 99 389 this_label 003061 constant label dcl 429 ref 429 429 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 3672 4300 3417 3702 Length 4602 3417 406 266 252 344 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME graphic_chars_ 412 external procedure is an external procedure. assemble_substring 347 internal procedure uses auto adjustable storage, and is called during a stack extension. set_table_internal internal procedure shares stack frame of external procedure graphic_chars_. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 already_done_chars graphic_chars_ 000210 saved_dirname graphic_chars_ 000262 saved_ename graphic_chars_ 000272 char_ptr_ptr graphic_chars_ 000274 char_sizes_ptr graphic_chars_ 000276 x_size graphic_chars_ 000277 y_size graphic_chars_ 000300 x_margins graphic_chars_ 000301 my_own_dirname set_table_internal STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME assemble_substring 000100 a assemble_substring 000100 column_widths assemble_substring 000100 b assemble_substring 000410 char_value assemble_substring 000411 x_rel_pts assemble_substring 000412 half_xwidth_difference assemble_substring 000413 column assemble_substring 000414 i assemble_substring 000415 j assemble_substring 000416 node assemble_substring graphic_chars_ 000100 char_info_ptr graphic_chars_ 000102 coords_ptr graphic_chars_ 000104 i graphic_chars_ 000105 j graphic_chars_ 000106 start graphic_chars_ 000107 line_node graphic_chars_ 000301 line_shift_node graphic_chars_ 000302 node graphic_chars_ 000303 string_len graphic_chars_ 000304 line_shift graphic_chars_ 000305 x_shift graphic_chars_ 000306 y_shift graphic_chars_ 000307 x_rel graphic_chars_ 000310 y_rel graphic_chars_ 000311 char graphic_chars_ 000312 motion graphic_chars_ 000313 avg_width graphic_chars_ 000314 strip_blanks graphic_chars_ 000315 end_position_entry graphic_chars_ 000334 csp set_table_internal 000336 cpp set_table_internal 000340 auto_dirname set_table_internal THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. fx1_to_fl2 alloc_cs call_ext_out_desc call_ext_out call_int_this_desc return fl2_to_fx1 alloc_auto_adj mod_fx1 signal shorten_stack ext_entry ext_entry_desc int_entry_desc THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. graphic_manipulator_$create_array graphic_manipulator_$create_position graphic_manipulator_$create_scale hcs_$fs_get_path_name hcs_$initiate hcs_$make_ptr search_paths_$find_dir sub_err_ term_$single_refname THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$bad_index error_table_$segknown error_table_$unimplemented_version graphic_error_table_$gct_bad_special_char LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 89 000072 373 000074 18 000077 94 000130 96 000131 98 000133 99 000140 100 000160 103 000172 104 000212 106 000214 108 000225 109 000240 112 000272 113 000274 114 000276 115 000301 116 000331 118 000343 119 000350 120 000354 121 000357 124 000367 125 000406 127 000413 128 000451 130 000464 131 000467 132 000470 133 000474 135 000477 136 000512 137 000536 138 000550 140 000603 142 000615 143 000645 146 000657 147 000661 148 000666 151 000673 367 000704 369 000736 371 000737 376 000765 377 000771 378 000773 380 000774 382 001004 383 001015 385 001023 389 001054 390 001076 392 001104 394 001132 395 001141 396 001146 153 001154 160 001170 360 001202 172 001212 174 001213 175 001217 176 001230 178 001231 180 001241 181 001250 182 001253 184 001262 185 001266 186 001267 188 001302 191 001303 193 001310 195 001322 197 001326 199 001334 200 001335 204 001346 206 001347 209 001423 213 001426 214 001434 216 001436 218 001437 219 001452 221 001456 222 001461 228 001463 230 001464 232 001474 233 001503 234 001506 236 001515 237 001520 238 001521 241 001536 242 001543 244 001566 245 001573 246 001577 247 001601 248 001631 250 001636 253 001637 255 001643 257 001650 258 001653 260 001660 262 001710 263 001715 265 001717 267 001720 268 001722 269 001723 270 001730 271 001733 273 001736 274 001770 275 001775 277 001776 278 002002 279 002003 280 002034 281 002041 283 002042 284 002044 285 002045 286 002075 287 002102 288 002133 289 002140 290 002170 291 002175 292 002226 294 002233 296 002234 300 002241 301 002245 303 002246 304 002251 305 002253 308 002255 309 002263 310 002274 311 002276 315 002357 316 002364 318 002366 321 002425 322 002432 323 002442 324 002450 326 002473 327 002500 328 002504 329 002506 330 002535 334 002542 336 002544 338 002563 340 002565 342 002574 344 002601 345 002607 347 002612 349 002637 350 002644 352 002671 355 002676 358 002733 360 002740 361 002770 363 002775 399 003000 419 003016 422 003022 424 003041 428 003054 429 003061 431 003116 434 003122 436 003163 439 003167 441 003234 444 003243 445 003300 447 003304 448 003343 450 003347 451 003352 452 003355 455 003356 456 003362 458 003367 459 003371 461 003372 462 003376 463 003401 465 003404 467 003415 ----------------------------------------------------------- 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