COMPILATION LISTING OF SEGMENT graphic_macros_ Compiled by: Multics PL/I Compiler, Release 27d, of October 11, 1982 Compiled at: Honeywell LISD Phoenix, System M Compiled on: 11/18/82 1638.3 mst Thu Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* * Copyright (c) 1972 by Massachusetts Institute of * 6* * Technology and Honeywell Information Systems, Inc. * 7* * * 8* *********************************************************** */ 9 10 11 graphic_macros_: gmc_: proc; 12 return; 13 14 /* This proc is a catch-all in which to implement common complex 15* graphic objects of general use. 16* Written on and off from 11/10/74 to 05/06/76 by C. D. Tavares as the basis for a replacement 17* for gui_. */ 18 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 **************** */ 19 20 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 ---------------- */ 21 22 23 24 box: entry (x_side, y_side, code) returns (fixed bin (18)); 25 26 dcl (x_side, y_side) float bin parameter, 27 code fixed bin (35) parameter; 28 29 dcl node_array (10) fixed bin (18), 30 node fixed bin (18); 31 32 33 node_array (1) = graphic_manipulator_$create_position (Vector, x_side, 0, 0, code); 34 node_array (2) = graphic_manipulator_$create_position (Vector, 0, y_side, 0, code); 35 node_array (3) = graphic_manipulator_$create_position (Vector, -x_side, 0, 0, code); 36 node_array (4) = graphic_manipulator_$create_position (Vector, 0, -y_side, 0, code); 37 38 node = graphic_manipulator_$carray (node_array, 4, code); 39 40 return (node); 41 42 error_return: 43 return (0); 44 45 46 circle: entry (x_dist, y_dist, code) returns (fixed bin (18)); 47 48 /* This entrypoint draws a circle centered at (x, dist, y_dist) from your current position. */ 49 50 dcl (x_dist, y_dist) float bin parameter, 51 Undefined fixed bin static initial (-1); 52 53 node = closed_curve (x_dist, y_dist, 1, Undefined, (Undefined), (Undefined), (Undefined), code); 54 return (node); 55 56 arc: entry (x_dist, y_dist, fraction, code) returns (fixed bin (18)); 57 58 /* This entry is like arc, but the fraction determines how much of a circle the resultant arc is. */ 59 /* If the fraction is negative, arc will be drawn clockwise, &vv */ 60 61 dcl fraction float bin parameter; 62 63 node = closed_curve (x_dist, y_dist, fraction, Undefined, (Undefined), (Undefined), (Undefined), code); 64 return (node); 65 66 polygon: entry (x_dist, y_dist, n_sides, code) returns (fixed bin (18)); 67 68 /* This is like circle, but there are a definite number of sides desired. */ 69 /* If n_sides is negative the polygon will be drawn clockwise, but what of it? */ 70 71 dcl n_sides fixed bin parameter; 72 73 node = closed_curve (x_dist, y_dist, 1, n_sides, (Undefined), (Undefined), (Undefined), code); 74 return (node); 75 76 ellipse: entry (x_dist, y_dist, eccentricity, eccentricity_angle, fraction, code) returns (fixed bin (18)); 77 78 /* This entry draws an ellipse. It assumes your current position is on the ellipse, 79* the epicenter (geographical center) of the ellipse is (x_dist, y_dist) from you, the eccentricity (the major 80* axis over the minor axis, not the textbook definition) is given, and the eccentricity angle is the angle 81* that the major axis makes with the x axis. The fraction is measured in RADIAL DEGREES; therefore, with 82* eccentricity angles of around 45 degrees, asking for 3/4 ellipse can get you almost the whole thing. */ 83 84 dcl eccentricity float bin parameter, 85 eccentricity_angle fixed bin parameter; 86 87 dcl (sind, cosd, atand) builtin; 88 89 dcl (rotated_x, rotated_y) float bin; 90 91 dcl (a, b) float bin; 92 93 94 rotated_x = - x_dist * cosd (eccentricity_angle) - y_dist * sind (eccentricity_angle); 95 rotated_y = x_dist * sind (eccentricity_angle) - y_dist * cosd (eccentricity_angle); 96 97 a = sqrt (eccentricity * eccentricity * rotated_y * rotated_y + rotated_x * rotated_x); 98 b = a / eccentricity; 99 100 node = closed_curve (x_dist, y_dist, fraction, Undefined, a, b, (eccentricity_angle), code); 101 return (node); 102 103 104 ellipse_by_foci: entry (x_dist1, y_dist1, x_dist2, y_dist2, fraction, code) returns (fixed bin (18)); 105 106 /* This also draws an ellipse, whose foci are at (x_dist1, y_dist1) and (x_dist2, y_dist2) from you. */ 107 108 dcl (x_dist1, y_dist1, x_dist2, y_dist2) float bin parameter; 109 110 dcl (rad_1, rad_2, /* radii from each focus to any pt on ellipse */ 111 c, /* half distance between foci */ 112 epicenter_dx, epicenter_dy, /* rel. dists to geometric ctr of ellipse */ 113 epiradius, /* distance to geometric ctr of ellipse */ 114 temp) float bin; /* random optimization temporary */ 115 116 dcl computed_eccentricity_angle float bin; 117 118 119 rad_1 = sqrt (x_dist1 ** 2 + y_dist1 ** 2); 120 rad_2 = sqrt (x_dist2 ** 2 + y_dist2 ** 2); 121 122 c = sqrt ((x_dist2 - x_dist1) ** 2 + (y_dist2 - y_dist1) ** 2) / 2; 123 124 epicenter_dx = (x_dist1 + x_dist2) / 2; 125 epicenter_dy = (y_dist1 + y_dist2) / 2; 126 127 epiradius = sqrt (epicenter_dx ** 2 + epicenter_dy ** 2); 128 129 temp = x_dist2 - x_dist1; 130 if temp = 0 then computed_eccentricity_angle = -90; 131 else computed_eccentricity_angle = atand ((y_dist2 - y_dist1) / temp); 132 133 a = (rad_1 + rad_2) / 2; 134 b = sqrt (a * a - c * c); 135 136 node = closed_curve (epicenter_dx, epicenter_dy, fraction, Undefined, a, b, computed_eccentricity_angle, code); 137 return (node); 138 139 140 141 /* ----------------------------- */ 142 143 closed_curve: proc (x_dist, y_dist, fraction, n_sides, a, b, eccentricity_angle, code) returns (fixed bin (18)); 144 145 /* Closed curve algorithm largely courtesy Sally Duren, from old gui_. */ 146 147 dcl (x_dist, y_dist, fraction) float bin parameter, 148 n_sides fixed bin parameter, 149 (a, b) float bin parameter, 150 eccentricity_angle float bin, 151 elliptical bit (1), 152 (cos_theta, sin_theta) float bin, 153 code fixed bin (35) parameter, 154 node fixed bin (18); 155 156 dcl (radius, x, y, old_x, old_y, delta, delta_x, delta_y, avg_radius, temp_delta) float bin, 157 save_dx float bin, 158 save_x float bin, 159 i fixed bin, 160 node_array (400) fixed bin (18), 161 array_ct fixed bin, 162 steps fixed bin, 163 acosd_ ext entry (float bin) returns (float bin), 164 stretch float bin, 165 target_theta float bin, 166 theta float bin; 167 168 code = 0; 169 170 radius = sqrt (x_dist ** 2 + y_dist ** 2); 171 if radius = 0 then return (0); /* sure... */ 172 173 elliptical = a ^= Undefined; /* a is undefined for all but ellipses */ 174 stretch = a/b; /* major axis / minor axis */ 175 if stretch < 1e0 then stretch = 1e0/stretch; /* user specified eccentricity < 1e0 */ 176 177 if n_sides = Undefined then steps = abs (fraction * ((radius / 6) + (20 * stretch))); 178 /* a pretty good random function */ 179 else steps = n_sides; /* polygon case */ 180 steps = min (steps, hbound (node_array, 1)); /* so we dont overstep array */ 181 delta, temp_delta = fraction * 360 / steps; /* angular increment */ 182 183 if elliptical then do; /* swing the curpos through -eccentricity_angle */ 184 old_x = -x_dist; old_y = - y_dist; 185 avg_radius = (a+b)/2; /* the average radius of the ellipse */ 186 end; 187 188 else do; 189 old_x = -x_dist; 190 old_y = -y_dist; 191 avg_radius = radius; 192 end; 193 194 theta = acosd_ (max (-1, min (1, old_x/radius))); /* current angle with x axis */ 195 /* acosd_ gets moby upset at the slightest bit over 1 or under -1 */ 196 if y_dist > 0 then theta = 360 - theta; 197 if elliptical then theta = theta - eccentricity_angle; 198 target_theta = theta + fraction * 360; /* final angle */ 199 200 array_ct = 0; 201 202 sin_theta = sind (theta); 203 cos_theta = cosd (theta); 204 205 if elliptical then /* have to fudge ahead of time */ 206 radius = a * b / sqrt (b * b * cos_theta * cos_theta + a * a * sin_theta * sin_theta); 207 208 old_x = radius * cos_theta; 209 old_y = radius * sin_theta; 210 211 do i = 1 to steps while (theta ^= target_theta); 212 213 if elliptical then temp_delta = delta * avg_radius / radius; 214 /* this makes the angles smaller near the points so */ 215 /* the curve is smoother there */ 216 theta = theta + temp_delta; /* increment the angle */ 217 218 if temp_delta < 0 then theta = max (theta, target_theta); /* don't run past end */ 219 else theta = min (theta, target_theta); 220 221 sin_theta = sind (theta); 222 cos_theta = cosd (theta); 223 224 if elliptical then 225 radius = a * b / sqrt (b * b * cos_theta * cos_theta + a * a * sin_theta * sin_theta); 226 227 x = radius * cos_theta; 228 y = radius * sin_theta; 229 230 delta_x = x - old_x; /* coords of difference vector */ 231 delta_y = y - old_y; 232 233 old_x = x; old_y = y; 234 235 if elliptical then do; 236 save_dx = delta_x; /* rotate the difference vector thru eccentricity_angle */ 237 delta_x = delta_x * cosd (eccentricity_angle) - delta_y * sind (eccentricity_angle); 238 delta_y = save_dx * sind (eccentricity_angle) + delta_y * cosd (eccentricity_angle); 239 240 save_x = x; /* also the current position */ 241 x = x * cosd (eccentricity_angle) - y * sind (eccentricity_angle); 242 y = save_x * sind (eccentricity_angle) + y * cosd (eccentricity_angle); 243 end; 244 245 array_ct = array_ct + 1; 246 node_array (array_ct) = graphic_manipulator_$create_position (Vector, delta_x, delta_y, 0, code); 247 if code ^= 0 then return (0); 248 end; 249 250 node = graphic_manipulator_$create_array (node_array, array_ct, code); /* list them up */ 251 if code ^= 0 then return (0); 252 253 return (node); 254 end closed_curve; 255 256 /* ----------------------------- */ 257 258 259 end; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/18/82 1627.8 graphic_macros_.pl1 >dumps>old>recomp>graphic_macros_.pl1 19 1 08/27/75 1700.7 gm_entry_dcls.incl.pl1 >ldd>include>gm_entry_dcls.incl.pl1 21 2 03/27/82 0439.2 graphic_etypes.incl.pl1 >ldd>include>graphic_etypes.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. Undefined 000010 internal static fixed bin(17,0) initial dcl 50 set ref 53* 53 53 53 63* 63 63 63 73 73 73 100* 136* 173 177 Vector 000002 constant fixed bin(17,0) initial dcl 2-9 set ref 33* 34* 35* 36* 246* a 000115 automatic float bin(27) dcl 91 in procedure "gmc_" set ref 97* 98 100* 133* 134 134 136* a parameter float bin(27) dcl 147 in procedure "closed_curve" ref 143 173 174 185 205 205 205 224 224 224 acosd_ 000020 constant entry external dcl 156 ref 194 array_ct 001005 automatic fixed bin(17,0) dcl 156 set ref 200* 245* 245 246 250* atand builtin function dcl 87 ref 131 avg_radius 000160 automatic float bin(27) dcl 156 set ref 185* 191* 213 b parameter float bin(27) dcl 147 in procedure "closed_curve" ref 143 174 185 205 205 205 224 224 224 b 000116 automatic float bin(27) dcl 91 in procedure "gmc_" set ref 98* 100* 134* 136* c 000121 automatic float bin(27) dcl 110 set ref 122* 134 134 code parameter fixed bin(35,0) dcl 147 in procedure "closed_curve" set ref 143 168* 246* 247 250* 251 code parameter fixed bin(35,0) dcl 26 in procedure "gmc_" set ref 24 33* 34* 35* 36* 38* 46 53* 56 63* 66 73* 76 100* 104 136* computed_eccentricity_angle 000126 automatic float bin(27) dcl 116 set ref 130* 131* 136* cos_theta 000145 automatic float bin(27) dcl 147 set ref 203* 205 205 208 222* 224 224 227 cosd builtin function dcl 87 ref 94 95 203 222 237 238 241 242 delta 000155 automatic float bin(27) dcl 156 set ref 181* 213 delta_x 000156 automatic float bin(27) dcl 156 set ref 230* 236 237* 237 246* delta_y 000157 automatic float bin(27) dcl 156 set ref 231* 237 238* 238 246* eccentricity parameter float bin(27) dcl 84 ref 76 97 97 98 eccentricity_angle parameter float bin(27) dcl 147 in procedure "closed_curve" ref 143 197 237 237 238 238 241 241 242 242 eccentricity_angle parameter fixed bin(17,0) dcl 84 in procedure "gmc_" ref 76 94 94 95 95 100 elliptical 000144 automatic bit(1) unaligned dcl 147 set ref 173* 183 197 205 213 224 235 epicenter_dx 000122 automatic float bin(27) dcl 110 set ref 124* 127 136* epicenter_dy 000123 automatic float bin(27) dcl 110 set ref 125* 127 136* epiradius 000124 automatic float bin(27) dcl 110 set ref 127* fraction parameter float bin(27) dcl 61 in procedure "gmc_" set ref 56 63* 76 100* 104 136* fraction parameter float bin(27) dcl 147 in procedure "closed_curve" ref 143 177 181 198 graphic_manipulator_$carray 000016 constant entry external dcl 1-55 ref 38 graphic_manipulator_$create_array 000014 constant entry external dcl 1-55 ref 250 graphic_manipulator_$create_position 000012 constant entry external dcl 1-9 ref 33 34 35 36 246 i 000164 automatic fixed bin(17,0) dcl 156 set ref 211* n_sides parameter fixed bin(17,0) dcl 71 in procedure "gmc_" set ref 66 73* n_sides parameter fixed bin(17,0) dcl 147 in procedure "closed_curve" ref 143 177 179 node 000112 automatic fixed bin(18,0) dcl 29 in procedure "gmc_" set ref 38* 40 53* 54 63* 64 73* 74 100* 101 136* 137 node 000147 automatic fixed bin(18,0) dcl 147 in procedure "closed_curve" set ref 250* 253 node_array 000165 automatic fixed bin(18,0) array dcl 156 in procedure "closed_curve" set ref 180 246* 250* node_array 000100 automatic fixed bin(18,0) array dcl 29 in procedure "gmc_" set ref 33* 34* 35* 36* 38* old_x 000153 automatic float bin(27) dcl 156 set ref 184* 189* 194 194 208* 230 233* old_y 000154 automatic float bin(27) dcl 156 set ref 184* 190* 209* 231 233* rad_1 000117 automatic float bin(27) dcl 110 set ref 119* 133 rad_2 000120 automatic float bin(27) dcl 110 set ref 120* 133 radius 000150 automatic float bin(27) dcl 156 set ref 170* 171 177 191 194 194 205* 208 209 213 224* 227 228 rotated_x 000113 automatic float bin(27) dcl 89 set ref 94* 97 97 rotated_y 000114 automatic float bin(27) dcl 89 set ref 95* 97 97 save_dx 000162 automatic float bin(27) dcl 156 set ref 236* 238 save_x 000163 automatic float bin(27) dcl 156 set ref 240* 242 sin_theta 000146 automatic float bin(27) dcl 147 set ref 202* 205 205 209 221* 224 224 228 sind builtin function dcl 87 ref 94 95 202 221 237 238 241 242 steps 001006 automatic fixed bin(17,0) dcl 156 set ref 177* 179* 180* 180 181 211 stretch 001007 automatic float bin(27) dcl 156 set ref 174* 175 175* 175 177 target_theta 001010 automatic float bin(27) dcl 156 set ref 198* 211 218 219 temp 000125 automatic float bin(27) dcl 110 set ref 129* 130 131 temp_delta 000161 automatic float bin(27) dcl 156 set ref 181* 213* 216 218 theta 001011 automatic float bin(27) dcl 156 set ref 194* 196* 196 197* 197 198 202 203 211 216* 216 218* 218 219* 219 221 222 x 000151 automatic float bin(27) dcl 156 set ref 227* 230 233 240 241* 241 x_dist parameter float bin(27) dcl 50 in procedure "gmc_" set ref 46 53* 56 63* 66 73* 76 94 95 100* x_dist parameter float bin(27) dcl 147 in procedure "closed_curve" ref 143 170 184 189 x_dist1 parameter float bin(27) dcl 108 ref 104 119 122 124 129 x_dist2 parameter float bin(27) dcl 108 ref 104 120 122 124 129 x_side parameter float bin(27) dcl 26 set ref 24 33* 35 y 000152 automatic float bin(27) dcl 156 set ref 228* 231 233 241 242* 242 y_dist parameter float bin(27) dcl 50 in procedure "gmc_" set ref 46 53* 56 63* 66 73* 76 94 95 100* y_dist parameter float bin(27) dcl 147 in procedure "closed_curve" ref 143 170 184 190 196 y_dist1 parameter float bin(27) dcl 108 ref 104 119 122 125 131 y_dist2 parameter float bin(27) dcl 108 ref 104 120 122 125 131 y_side parameter float bin(27) dcl 26 set ref 24 34* 36 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 Shift 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 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_$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_scale 000000 constant entry external dcl 1-19 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 NAMES DECLARED BY EXPLICIT CONTEXT. arc 000373 constant entry external dcl 56 box 000057 constant entry external dcl 24 circle 000277 constant entry external dcl 46 closed_curve 001116 constant entry internal dcl 143 ref 53 63 73 100 136 ellipse 000564 constant entry external dcl 76 ellipse_by_foci 000723 constant entry external dcl 104 error_return 000265 constant label dcl 42 gmc_ 000024 constant entry external dcl 11 graphic_macros_ 000035 constant entry external dcl 11 polygon 000467 constant entry external dcl 66 NAMES DECLARED BY CONTEXT OR IMPLICATION. abs builtin function ref 177 hbound builtin function ref 180 max builtin function ref 194 194 218 min builtin function ref 180 194 194 219 sqrt builtin function ref 97 119 120 122 127 134 170 205 224 STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1750 1772 1621 1760 Length 2222 1621 22 214 126 2 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME gmc_ 649 external procedure is an external procedure. closed_curve internal procedure shares stack frame of external procedure gmc_. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 Undefined gmc_ STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME gmc_ 000100 node_array gmc_ 000112 node gmc_ 000113 rotated_x gmc_ 000114 rotated_y gmc_ 000115 a gmc_ 000116 b gmc_ 000117 rad_1 gmc_ 000120 rad_2 gmc_ 000121 c gmc_ 000122 epicenter_dx gmc_ 000123 epicenter_dy gmc_ 000124 epiradius gmc_ 000125 temp gmc_ 000126 computed_eccentricity_angle gmc_ 000144 elliptical closed_curve 000145 cos_theta closed_curve 000146 sin_theta closed_curve 000147 node closed_curve 000150 radius closed_curve 000151 x closed_curve 000152 y closed_curve 000153 old_x closed_curve 000154 old_y closed_curve 000155 delta closed_curve 000156 delta_x closed_curve 000157 delta_y closed_curve 000160 avg_radius closed_curve 000161 temp_delta closed_curve 000162 save_dx closed_curve 000163 save_x closed_curve 000164 i closed_curve 000165 node_array closed_curve 001005 array_ct closed_curve 001006 steps closed_curve 001007 stretch closed_curve 001010 target_theta closed_curve 001011 theta closed_curve THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. fx1_to_fl2 r_ne_as call_ext_out_desc call_ext_out return fl2_to_fx1 signal ext_entry sqrt sind cosd atand THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. acosd_ graphic_manipulator_$carray graphic_manipulator_$create_array graphic_manipulator_$create_position NO EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 11 000023 12 000044 24 000052 33 000072 34 000117 35 000144 36 000174 38 000225 40 000254 42 000265 46 000275 53 000312 54 000355 56 000366 63 000410 64 000451 66 000462 73 000502 74 000545 76 000556 94 000601 95 000625 97 000634 98 000647 100 000652 101 000704 104 000715 119 000740 120 000752 122 000764 124 001003 125 001010 127 001014 129 001025 130 001031 131 001035 133 001041 134 001045 136 001056 137 001105 143 001116 168 001120 170 001121 171 001132 173 001136 174 001145 175 001150 177 001154 179 001173 180 001174 181 001200 183 001207 184 001211 184 001214 185 001217 186 001223 189 001224 190 001227 191 001232 194 001234 196 001255 197 001263 198 001270 200 001274 202 001275 203 001301 205 001305 208 001332 209 001335 211 001340 213 001352 216 001360 218 001363 219 001373 221 001400 222 001403 224 001407 227 001434 228 001437 230 001442 231 001445 233 001450 233 001452 235 001454 236 001456 237 001460 238 001477 240 001506 241 001510 242 001517 245 001526 246 001527 247 001554 248 001561 250 001563 251 001611 253 001616 ----------------------------------------------------------- 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