COMPILATION LISTING OF SEGMENT tektronix_40XX_ Compiled by: Multics PL/I Compiler, Release 27d, of October 11, 1982 Compiled at: Honeywell LISD Phoenix, System M Compiled on: 11/18/82 1632.9 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 tektronix_40XX_: proc; 19 return; 20 21 /* Graphic support procedure for all Tektronix 40_n_n terminals. */ 22 /* Modified 03/25/80 by CDT to compensate for the fact that hardware 23* design bug causes terminal to lose its mind if you send optimized code 24* when running 9600 baud or faster */ 25 /* Modified by C. Hornig, October 1980, to add support for ADM3A/RG512 */ 26 /* Modified 10/17/80 by CDT to make it clip vectors and text properly 27* off the screen edges, to implement the device and model modes, and to 28* generally clean up the code. */ 29 /* Last modified 02/27/81 by CDT to use breakall for crosshair input. */ 30 31 32 /* PARAMETERS (COMMON TO ALL ENTRIES) */ 33 34 dcl (effector fixed bin, 35 n_chars_out fixed bin (21), 36 (instring, outstring) char (*), 37 data_ptr pointer, 38 code fixed bin (35)) parameter; 39 40 /* AUTOMATIC */ 41 42 dcl accumulator fixed bin (35), 43 alignment fixed bin, 44 ch char (1), 45 char_width float bin, 46 chars_read fixed bin (21), 47 data_ptr_copy pointer, 48 fixed_array (1) fixed bin, 49 float_array (3) float bin, 50 (i, j, k) fixed bin, 51 input_buffer char (200), 52 input_ptr pointer, 53 int_code fixed bin (35), 54 line_type fixed bin, 55 mode_string char (256), 56 new_string_length fixed bin, 57 original_pos (2) float bin, 58 output_ptr pointer, 59 single_mode char (12), 60 string_flatsize fixed bin, 61 string_length fixed bin, 62 string_origin fixed bin, 63 string_width float bin, 64 temp_float float bin, 65 temp_model_type fixed bin, 66 temp_unvar_string char (32), 67 temp_var_string char (32) varying, 68 text_string_length fixed bin, 69 text_string_ptr pointer, 70 tuvs_len fixed bin, 71 (x_offset, y_offset) float bin, 72 xy_temp (2) float bin; 73 74 dcl 1 accumulator_bits aligned automatic, 75 2 pad bit (26) unaligned, 76 2 most_significant bit (5) unaligned, 77 2 least_significant bit (5) unaligned; 78 79 dcl 1 term_info like terminal_info aligned automatic; 80 81 /* BASED AND DEFINED */ 82 83 dcl 1 static_data aligned based (data_ptr_copy), 84 2 flags aligned, 85 3 extended_addr_wanted bit (1) unaligned, 86 3 optimization_ok bit (1) unaligned, 87 3 pad bit (34) unaligned, 88 2 target_switch_ptr pointer, 89 2 number_nuls fixed bin, 90 2 chars_per_second fixed bin, 91 2 delay_chars_owed fixed bin, 92 2 current_pos (2) float bin, 93 2 (prev_highy_char, 94 prev_highx_char, 95 prev_lowy_char, 96 prev_extra_char) char (1), 97 2 (prev_x_fromword, 98 prev_y_fromword) fixed bin (35, 2), 99 2 model_type fixed bin, 100 2 plotter_address char (1); 101 102 dcl based_temp_unvar_string char (tuvs_len) based (addr (temp_unvar_string)), 103 instring_array (262144) char (1) defined (instring) position (1), 104 system_free_area area based (system_free_ptr), 105 text_string char (text_string_length) based (text_string_ptr), 106 text_string_array (text_string_length) char (1) unaligned based (text_string_ptr); 107 108 /* EXTERNAL STATIC */ 109 110 dcl (error_table_$bad_conversion, 111 error_table_$bad_mode) ext fixed bin (35) static; 112 113 dcl (graphic_error_table_$malformed_input, 114 graphic_error_table_$term_bad_effector, 115 graphic_error_table_$unimplemented_effector) ext fixed bin (35); 116 117 /* STATIC */ 118 119 dcl system_free_ptr pointer static initial (null); 120 121 /* CONSTANTS */ 122 123 dcl 1 Char_constants static options (constant), 124 2 NUL char (1) initial (""), 125 2 BS char (1) initial (""), 126 2 Plotter_ring_bell char (3) initial (""), /* US BEL BEL */ 127 2 Plotter_on_and_reset_template char (8) initial ("^aE^aN"), /* ESC #E ESC #N */ 128 2 Plotter_on_prompt_off_template char (8) initial ("^aE^aL"), /* ESC #E ESC #L */ 129 2 Plotter_pause_template char (10) initial ("^aK^aF"), /* US BEL ESC #K ESC #F */ 130 2 Plotter_off_template char (7) initial (" ^aF"), /* US ESC FF ESC #F */ 131 2 Erase_rg512 char (2) initial (""), /* US EM */ 132 2 Disable_rg512 char (2) initial (" "), 133 /* CR CAN */ 134 2 Erase char (2) initial (" "), /* ESC FF */ 135 2 Exit_graphic_mode char (2) initial (" "), 136 /* US CR */ 137 2 Enter_text_mode_at_curpos char (1) initial (""), /* US */ 138 2 Shift_prefix char (1) initial (""), /* GS */ 139 2 Small_char_size char (2) initial (";"), /* ESC ; */ 140 2 Large_char_size char (2) initial ("8"), /* ESC 8 */ 141 2 Enable_crosshairs char (2) initial (""), /* ESC SUB */ 142 2 Set_linetype (0:4) char (2) initial 143 ("`", /* ESC ` */ 144 "c", /* ESC c */ 145 "a", /* ESC a */ 146 "b", /* ESC b */ 147 "d"); /* ESC d */ 148 149 dcl (type_4012 initial (1), 150 type_4014 initial (2), 151 type_4002 initial (3), 152 type_4662 initial (4), 153 type_rg512 initial (5)) fixed bin static options (constant); 154 155 dcl Model_names (5) char (8) static options (constant) initial 156 ("4012", "4014", "4002", "4662", "rg512"); 157 158 dcl 1 Mode_ok (5) static options (constant), 159 2 device bit (1) initial ("0"b, "0"b, "0"b, "1"b, "0"b), 160 2 extaddr bit (1) initial ("0"b, "1"b, "0"b, "1"b, "0"b); 161 162 dcl char_delay_values (32:126) float bin static options (constant) initial 163 (.100e0, .278e0, .265e0, .585e0, .523e0, .536e0, .424e0, .158e0, 164 .266e0, .268e0, .424e0, .301e0, .179e0, .160e0, .139e0, .170e0, 165 .400e0, .204e0, .312e0, .448e0, .274e0, .368e0, .421e0, .239e0, 166 .519e0, .418e0, .239e0, .291e0, .231e0, .322e0, .232e0, .371e0, 167 .509e0, .362e0, .476e0, .343e0, .367e0, .368e0, .344e0, .394e0, 168 .314e0, .326e0, .256e0, .329e0, .270e0, .264e0, .254e0, .377e0, 169 .325e0, .438e0, .378e0, .402e0, .251e0, .280e0, .201e0, .265e0, 170 .314e0, .255e0, .257e0, .257e0, .165e0, .257e0, .180e0, .158e0, 171 .155e0, .387e0, .412e0, .327e0, .398e0, .377e0, .383e0, .440e0, 172 .295e0, .275e0, .338e0, .378e0, .178e0, .364e0, .268e0, .347e0, 173 .391e0, .399e0, .244e0, .415e0, .331e0, .289e0, .180e0, .321e0, 174 .309e0, .233e0, .252e0, .320e0, .280e0, .322e0, .216e0); 175 176 dcl 1 Device_constants static options (constant), 177 2 outscale float bin initial (.761719e0), /* 780/1024 */ 178 2 outscale_inches float bin initial (9.670261e-3), /* 780/1024 * 13 / 1024, for 4662 plotter */ 179 2 inscale float bin initial (1.312821), /* 1024/780 */ 180 2 clipping_limits (2, 2) float bin initial 181 (-672.1641e0, -512e0, 670.8513e0, 511e0), 182 2 screen_offsets (2) fixed bin initial (512, 390), 183 2 charsizes (3) float bin initial (20, 15, 3.38e0), 184 2 baud_per_nul fixed bin initial (9); 185 186 /* ENTRIES */ 187 188 dcl cv_dec_check_ entry (char (*), fixed bin (35)) returns (fixed bin), 189 (ioa_$rsnnl, ioa_$rsnpnnl) entry options (variable), 190 get_system_free_area_ entry returns (pointer); 191 192 dcl (graphic_code_util_$decode_spi, 193 graphic_code_util_$decode_dpi) entry (pointer, fixed bin, (*) fixed bin), 194 graphic_code_util_$decode_scl entry (pointer, fixed bin, (*) float bin), 195 graphic_code_util_$encode_scl entry ((*) float bin, fixed bin, pointer); 196 197 dcl graphic_gsp_utility_$clip_line entry ((2) float bin, (2) float bin, 198 (2, 2) float bin, bit (1), bit (1), (2) float bin, bit (1), (2) float bin), 199 graphic_gsp_utility_$clip_text entry (char (*), fixed bin, (3) float bin, 200 (2) float bin, (2, 2) float bin, fixed bin, (2) float bin, fixed bin, 201 fixed bin); 202 203 /* BUILTINS AND CONDITIONS */ 204 205 dcl (addr, copy, dim, divide, fixed, hbound, high9, index, lbound, length, 206 mod, null, rank, rtrim, string, substr, sum, translate, unspec) builtin; 207 208 /* INCLUDE FILES */ 209 1 1 /* --------------- BEGIN include file graphic_input_formats.incl.pl1 --------------- */ 1 2 1 3 /* Created by Lee J. Scheffler, Nov. 1973 */ 1 4 /* Last modified by C. D. Tavares 03/26/75 */ 1 5 1 6 /* Character string formats of graphic input data */ 1 7 1 8 1 9 dcl 1 Query_characters aligned internal static, 1 10 2 Where_char char (1) init ("A"), 1 11 2 Which_char char (1) init ("B"), 1 12 2 What_char char (1) init ("C"); 1 13 1 14 dcl 1 where_format unaligned based, /* character string for "where" input */ 1 15 2 node_begin char (1), /* node begin char */ 1 16 2 array_indicator char (1), /* must say "array" */ 1 17 2 mbz char (3), /* node id of 0, in UI format */ 1 18 2 setpos_indicator char (1), /* setposition character */ 1 19 2 xpos char (3), /* x position in SCL format */ 1 20 2 ypos char (3), /* y position in SCL format */ 1 21 2 zpos char (3), /* z position in SCL format */ 1 22 2 node_end char (1), /* node end char */ 1 23 2 newline char (1); 1 24 1 25 dcl 1 which_format unaligned based, /* character string for "which" input */ 1 26 2 node_begin char (1), /* node begin char */ 1 27 2 node_id char (3), /* node # of top level list node */ 1 28 2 depth char (1), /* list structure depth of graphic structure indicated */ 1 29 2 path_array (1000) char (2); /* list indices of successive nodes in structure path */ 1 30 1 31 dcl 1 what_format unaligned based, /* character string for "what" input */ 1 32 2 begin char (1), /* node begin char */ 1 33 2 device_code char (1), /* graphic input device code */ 1 34 2 graphic_structure char (graphic_structure_len), /* the actual graphic structure returned */ 1 35 2 node_end char (1), /* node end char */ 1 36 2 newline char (1); 1 37 1 38 dcl graphic_structure_len fixed bin (24); /* computed length of structure */ 1 39 1 40 /* ---------------- END include file graphic_input_formats.incl.pl1 ---------------- */ 210 211 2 1 /* -------- BEGIN include file graphic_code_dcl.incl.pl1 ---------- */ 2 2 2 3 /* The following structure maintains a nonobvious positional relationship 2 4* with respect to the LSM block types as defined by the graphic compiler. 2 5* It therefore has an intimiate and delicate relationship with certain tables 2 6* defined in graphic_comp_specs.incl.pl1. */ 2 7 2 8 dcl 1 Graphic_Code_Structure aligned static options (constant), 2 9 2 Dynamic_and_structural_effectors aligned, 2 10 3 (Pause_char initial ("$"), 2 11 Reference_char initial ("%"), 2 12 Increment_char initial ("&"), 2 13 Alter_char initial ("'"), 2 14 Node_begin_char initial ("("), 2 15 Node_end_char initial (")"), 2 16 Control_char initial ("*"), 2 17 Display_char initial ("+"), 2 18 Query_char initial (","), 2 19 Erase_char initial ("-"), 2 20 Synchronize_char initial ("."), 2 21 Delete_char initial ("/")) char (1) unaligned, 2 22 2 Graphic_effectors aligned, 2 23 3 (Setposition_char initial ("0"), 2 24 Setpoint_char initial ("1"), 2 25 Vector_char initial ("2"), 2 26 Shift_char initial ("3"), 2 27 Point_char initial ("4")) char (1) unaligned, 2 28 3 Illegal_pad char (3) unaligned initial ((3)"U"), 2 29 2 Mapping_effectors aligned, 2 30 3 (Scaling_char initial ("5"), 2 31 Rotation_char initial ("6"), 2 32 Clipping_char initial ("7")) char (1) unaligned, 2 33 3 Illegal_pad char (5) unaligned initial ((5)"U"), 2 34 2 Mode_effectors aligned, 2 35 3 (Intensity_char initial ("8"), 2 36 Linetype_char initial ("9"), 2 37 Sensitivity_char initial (";"), 2 38 Blinking_char initial (":"), 2 39 Color_char initial ("<")) char (1) unaligned, 2 40 3 Illegal_pad char (3) unaligned initial ((3)"U"), 2 41 2 Special_effectors aligned, 2 42 3 (Symbol_char initial ("="), 2 43 Text_char initial (">"), 2 44 Datablock_char initial ("?")) char (1) unaligned, 2 45 3 Illegal_pad char (9) unaligned initial ((9)"U"); 2 46 2 47 dcl 1 Graphic_Defaults aligned static options (constant), 2 48 2 Mode_defaults aligned, 2 49 3 Intensity_default fixed bin initial (7), 2 50 3 Linetype_default fixed bin initial (0), 2 51 3 Blinking_default fixed bin initial (0), 2 52 3 Sensitivity_default fixed bin initial (0), 2 53 3 Color_default (3) fixed bin initial ((3)16), 2 54 2 Mapping_defaults aligned, 2 55 3 Scaling_default (3) float bin initial ((3)1e0), 2 56 3 Rotation_default (3) fixed bin initial ((3)0), 2 57 3 Clipping_default (3, 2) fixed bin initial ((3) (-2048, 2048)), 2 58 2 Identity_matrix (3, 3) float bin initial (1e0, (3)0e0, 1e0, (3)0e0, 1e0); 2 59 2 60 dcl Graphic_Element_Lengths (32 : 63) aligned static options (constant) initial 2 61 ((4)-1, /* not used */ 2 62 1, /* pause */ 4, /* reference */ 9, /* increment */ 9, /* alter */ 2 63 5, /* node begin */ 1, /* node end */ 4, /* control */ 4, /* display */ 2 64 3, /* query */ 1, /* erase */ 1, /* synchronize */ 4, /* delete */ 2 65 10, /* setposition */ 10, /* setpoint */ 10, /* vector */ 10, /* shift */ 2 66 10, /* point */ 10, /* scaling */ 7, /* rotation */ 13, /* clipping */ 2 67 2, /* intensity */ 2, /* line type */ 2, /* blinking */ 2, /* sensitivity */ 2 68 4, /* color */ 0, /* symbol */ 0, /* text */ 0 /* data */); 2 69 2 70 dcl zero_node_id char (3) static initial ("@@@") options (constant); 2 71 2 72 dcl request_for_status char (1) static aligned initial ("") options (constant); 2 73 2 74 dcl (List_char initial ("@"), 2 75 Array_char initial ("A")) char (1) aligned static options (constant); 2 76 2 77 /* --------- END include file graphic_code_dcl.incl.pl1 ----------- */ 212 213 3 1 /* --------------- BEGIN include file graphic_etypes.incl.pl1 --------------- */ 3 2 3 3 /* Types of position, mode, and other effectors for the 3 4* Multics General Graphic System */ 3 5 3 6 3 7 /* Null code */ 3 8 3 9 dcl (Null initial (-1), 3 10 3 11 /* Position codes */ 3 12 3 13 Setposition initial (0), 3 14 Setpoint initial (1), 3 15 Vector initial (2), 3 16 Shift initial (3), 3 17 Point initial (4), 3 18 3 19 /* Mode codes, with values where appropriate */ 3 20 3 21 Scaling initial (8), 3 22 Rotation initial (9), 3 23 Clipping initial (10), 3 24 3 25 Intensity initial (16), 3 26 Full_intensity initial (7), 3 27 Half_intensity initial (3), 3 28 Invisible initial (0), 3 29 3 30 Linetype initial (17), 3 31 Solid initial (0), 3 32 Dashed initial (1), 3 33 Dotted initial (2), 3 34 Dash_dotted initial (3), 3 35 Long_dashed initial (4), 3 36 3 37 Sensitivity initial (18), 3 38 Sensitive initial (1), 3 39 Insensitive initial (0), 3 40 3 41 Blink initial (19), 3 42 Steady initial (0), 3 43 Blinking initial (1), 3 44 3 45 Color initial (20), 3 46 3 47 Symbol initial (24), 3 48 3 49 /* Text code, with legal alignments */ 3 50 3 51 Text initial (25), 3 52 Upper_left initial (1), 3 53 Upper_center initial (2), 3 54 Upper_right initial (3), 3 55 Left initial (4), 3 56 Center initial (5), 3 57 Right initial (6), 3 58 Lower_left initial (7), 3 59 Lower_center initial (8), 3 60 Lower_right initial (9), 3 61 3 62 /* Datablock code */ 3 63 3 64 Datablock initial (26), 3 65 3 66 /* Structural effector codes */ 3 67 3 68 List initial (32), 3 69 Array initial (33), 3 70 3 71 /* Merge codes for gm_$get_struc and gm_$put_struc */ 3 72 3 73 On_dup_error initial (0), /* allow no name duplications */ 3 74 On_dup_source initial (1), /* on name dup, force move (use source copy) */ 3 75 On_dup_target_then_nulls initial (2), /* on name dup, use target copy, for nondup symbols create null ones */ 3 76 On_dup_target_then_source initial (3), /* on name dup, use target copy, for nondup symbols, use source copy */ 3 77 3 78 /* Device codes for graphic input devices */ 3 79 3 80 Terminal_program initial (0), 3 81 Keyboard initial (1), 3 82 Mouse initial (2), 3 83 Joystick initial (3), 3 84 Tablet_and_pen initial (4), 3 85 Light_pen initial (5), 3 86 Trackball initial (6), 3 87 Any_device initial (63)) /* 63 is equivalent to -1 in SPI */ 3 88 3 89 fixed bin internal static options (constant); 3 90 3 91 /* ---------------- END include file graphic_etypes.incl.pl1 ---------------- */ 214 215 4 1 /* -------- BEGIN include file graphic_device_table.incl.pl1 ----------- */ 4 2 4 3 dcl gdt_version_2 fixed bin static initial (2); 4 4 4 5 dcl gdt_pointer pointer; 4 6 4 7 dcl 1 graphic_device_table aligned based (gdt_pointer), 4 8 2 device_data aligned, 4 9 3 version_number fixed bin, 4 10 3 terminal_name char (32) aligned, 4 11 3 terminal_type char (4) aligned, 4 12 3 charsizes (3) float bin, 4 13 3 message_size fixed bin (35) aligned, 4 14 3 points_per_inch float bin (63), 4 15 3 pad (10) fixed bin aligned, 4 16 2 effector_data (32 : 70) aligned, 4 17 3 force_alignment aligned, 4 18 4 (expand, call, ignore, error, flush) bit (1) unaligned; 4 19 4 20 dcl (Reference initial (37), 4 21 Process_input initial (64), 4 22 Prepare_for_graphics initial (65), 4 23 Prepare_for_text initial (66), 4 24 Expansion initial (67), 4 25 Open initial (68), 4 26 Close initial (69), 4 27 Modes initial (70)) fixed bin static options (constant); 4 28 4 29 /* --------- END include file graphic_device_table.incl.pl1 ------------ */ 216 217 5 1 /* BEGIN INCLUDE FiLE ... terminal_info.incl.pl1 */ 5 2 5 3 /* Created 5/25/77 by J. Stern */ 5 4 5 5 5 6 dcl 1 terminal_info aligned based (terminal_info_ptr), /* info structure for terminal_info order */ 5 7 2 version fixed bin, /* version number of this sturcture */ 5 8 2 id char (4) unaligned, /* terminal id from answerback */ 5 9 2 term_type char (32) unaligned, /* terminal type name */ 5 10 2 line_type fixed bin, /* line type number */ 5 11 2 baud_rate fixed bin, 5 12 2 reserved (4) fixed bin; /* reserved for future use */ 5 13 5 14 5 15 dcl terminal_info_ptr ptr; 5 16 dcl terminal_info_version fixed bin int static options (constant) init (1); /* current version */ 5 17 5 18 5 19 /* END INCLUDE FILE ... terminal_info.incl.pl1 */ 218 219 6 1 /* --------------- BEGIN include file iox_dcls.incl.pl1 --------------- */ 6 2 6 3 /* Written 05/04/78 by C. D. Tavares */ 6 4 /* Fixed declaration of iox_$find_iocb_n 05/07/80 by R. Holmstedt */ 6 5 6 6 dcl iox_$attach_name entry (char (*), pointer, char (*), pointer, fixed bin (35)), 6 7 iox_$attach_ptr entry (pointer, char (*), pointer, fixed bin (35)), 6 8 iox_$close entry (pointer, fixed bin (35)), 6 9 iox_$control entry (pointer, char (*), pointer, fixed bin (35)), 6 10 iox_$delete_record entry (pointer, fixed bin (35)), 6 11 iox_$destroy_iocb entry (pointer, fixed bin (35)), 6 12 iox_$detach_iocb entry (pointer, fixed bin (35)), 6 13 iox_$err_not_attached entry options (variable), 6 14 iox_$err_not_closed entry options (variable), 6 15 iox_$err_no_operation entry options (variable), 6 16 iox_$err_not_open entry options (variable), 6 17 iox_$find_iocb entry (char (*), pointer, fixed bin (35)), 6 18 iox_$find_iocb_n entry (fixed bin, ptr, fixed bin(35)), 6 19 iox_$get_chars entry (pointer, pointer, fixed bin (21), fixed bin (21), fixed bin (35)), 6 20 iox_$get_line entry (pointer, pointer, fixed bin (21), fixed bin (21), fixed bin (35)), 6 21 iox_$look_iocb entry (char (*), pointer, fixed bin (35)), 6 22 iox_$modes entry (pointer, char (*), char (*), fixed bin (35)), 6 23 iox_$move_attach entry (pointer, pointer, fixed bin (35)), 6 24 iox_$open entry (pointer, fixed bin, bit (1) aligned, fixed bin (35)), 6 25 iox_$position entry (pointer, fixed bin, fixed bin (21), fixed bin (35)), 6 26 iox_$propagate entry (pointer), 6 27 iox_$put_chars entry (pointer, pointer, fixed bin (21), fixed bin (35)), 6 28 iox_$read_key entry (pointer, char (256) varying, fixed bin (21), fixed bin (35)), 6 29 iox_$read_length entry (pointer, fixed bin (21), fixed bin (35)), 6 30 iox_$read_record entry (pointer, pointer, fixed bin (21), fixed bin (21), fixed bin (35)), 6 31 iox_$rewrite_record entry (pointer, pointer, fixed bin (21), fixed bin (35)), 6 32 iox_$seek_key entry (pointer, char (256) varying, fixed bin (21), fixed bin (35)), 6 33 iox_$write_record entry (pointer, pointer, fixed bin (21), fixed bin (35)) ; 6 34 6 35 dcl (iox_$user_output, 6 36 iox_$user_input, 6 37 iox_$user_io, 6 38 iox_$error_output) external static pointer; 6 39 6 40 /* ---------------- END include file iox_dcls.incl.pl1 ---------------- */ 220 221 222 position: entry (effector, instring, outstring, n_chars_out, data_ptr, code); 223 224 data_ptr_copy = data_ptr; 225 226 call graphic_code_util_$decode_scl (addr (instring_array (2)), 2, xy_temp); /* get coord values */ 227 228 goto pos (effector); /* handle by type */ 229 230 pos (48): pos (49): /* setposition and setpoint */ 231 call shift_to (xy_temp); /* go to the position */ 232 if effector = 49 then call draw_to (xy_temp); /* draw the point */ 233 return; 234 235 pos (50): xy_temp = static_data.current_pos + xy_temp; /* add to abs position */ 236 call draw_to (xy_temp); /* draw the vector */ 237 return; 238 239 pos (51): xy_temp = static_data.current_pos + xy_temp; /* add shift to abs position */ 240 call shift_to (xy_temp); 241 return; 242 243 pos (52): xy_temp = static_data.current_pos + xy_temp; /* add shift to abs position */ 244 call shift_to (xy_temp); 245 call draw_to (xy_temp); /* draw the point */ 246 return; 247 248 open_4012: entry (effector, instring, outstring, n_chars_out, data_ptr, code); 249 250 temp_model_type = type_4012; 251 goto open_common; 252 253 open_4014: entry (effector, instring, outstring, n_chars_out, data_ptr, code); 254 255 temp_model_type = type_4014; 256 goto open_common; 257 258 open_4002: entry (effector, instring, outstring, n_chars_out, data_ptr, code); 259 260 temp_model_type = type_4002; 261 goto open_common; 262 263 open_4662: entry (effector, instring, outstring, n_chars_out, data_ptr, code); 264 265 temp_model_type = type_4662; 266 goto open_common; 267 268 open_rg512: entry (effector, instring, outstring, n_chars_out, data_ptr, code); 269 270 temp_model_type = type_rg512; 271 goto open_common; 272 273 open_common: 274 n_chars_out = 0; 275 276 system_free_ptr = get_system_free_area_ (); 277 allocate static_data in (system_free_area); 278 data_ptr = data_ptr_copy; 279 280 static_data.model_type = temp_model_type; 281 static_data.extended_addr_wanted = "0"b; /* for starters */ 282 283 call initialize_state; 284 285 call iox_$look_iocb (instring, static_data.target_switch_ptr, code); 286 if code ^= 0 then return; 287 288 term_info.version = terminal_info_version; 289 290 call iox_$control (static_data.target_switch_ptr, "terminal_info", 291 addr (term_info), int_code); 292 293 if int_code ^= 0 then term_info.baud_rate = 1200; /* assume 1200 baud, probably using file */ 294 static_data.number_nuls = 295 divide (term_info.baud_rate, Device_constants.baud_per_nul, 17); 296 static_data.chars_per_second = divide (term_info.baud_rate, 10, 17); 297 static_data.optimization_ok = (term_info.baud_rate < 9600); 298 299 if static_data.model_type = type_4662 then do; 300 call ioa_$rsnnl (Char_constants.Plotter_off_template, 301 temp_unvar_string, tuvs_len, static_data.plotter_address); 302 call put_out (based_temp_unvar_string); /* turn plotter off */ 303 end; 304 305 return; 306 307 initialize_state: proc; /* internal proc resets all defaults */ 308 static_data.current_pos = -1000; /* not possible, but will put in long enough delay for 4662 */ 309 static_data.delay_chars_owed = -50; /* Plotter buffer much bigger than this anyway. */ 310 static_data.prev_highy_char, 311 static_data.prev_highx_char, 312 static_data.prev_lowy_char, 313 static_data.prev_extra_char = high9 (1); 314 static_data.prev_x_fromword, static_data.prev_y_fromword = -100; 315 static_data.plotter_address = "A"; 316 317 end initialize_state; 318 319 close: entry (effector, instring, outstring, n_chars_out, data_ptr, code); 320 321 data_ptr_copy = data_ptr; 322 323 n_chars_out = 0; 324 free static_data in (system_free_area); 325 data_ptr = null; 326 return; 327 328 changemode: entry (effector, instring, outstring, n_chars_out, data_ptr, code); 329 330 data_ptr_copy = data_ptr; 331 332 /* first, construct string representing old modes. */ 333 334 call ioa_$rsnpnnl 335 ("model=^a,^[^[^;^^^]extaddr,^;^s^]^[device=^a,^;^s^]baud=^d.", 336 outstring, n_chars_out, 337 Model_names (static_data.model_type), 338 Mode_ok.extaddr (static_data.model_type), 339 static_data.extended_addr_wanted, 340 Mode_ok.device (static_data.model_type), 341 static_data.plotter_address, 342 static_data.chars_per_second * 10e0); 343 344 /* now read modes coming in. */ 345 346 mode_string = instring; 347 348 do while (mode_string ^= ""); 349 i = index (mode_string, ",") - 1; 350 if i < 0 then i = length (rtrim (mode_string, " ")); 351 352 single_mode = substr (mode_string, 1, i); 353 mode_string = copy (substr (mode_string, i+2), 1); 354 355 i = length (rtrim (single_mode)); 356 if substr (single_mode, i, 1) = "." then 357 substr (single_mode, i, 1) = " "; /* trailing periods are a bother. */ 358 359 if substr (single_mode, 1, 5) = "baud=" then do; 360 i = cv_dec_check_ (substr (single_mode, 6), code); 361 if code ^= 0 then do; 362 code = error_table_$bad_conversion; 363 return; 364 end; 365 term_info.baud_rate = i; 366 static_data.chars_per_second = 367 divide (term_info.baud_rate, 10, 17); 368 static_data.number_nuls = 369 divide (term_info.baud_rate, 370 Device_constants.baud_per_nul, 17); 371 end; 372 373 /* check for possible model change before checking modes that may be rejected 374* if model not compatible */ 375 376 else if substr (single_mode, 1, 6) = "model=" then do; 377 temp_var_string = substr (single_mode, 7); 378 379 do i = 1 to dim (Model_names, 1) 380 while (Model_names (i) ^= temp_var_string); 381 end; 382 383 if i > dim (Model_names, 1) then goto bad_mode; 384 385 static_data.model_type = i; 386 end; 387 388 else if single_mode = "extaddr" then 389 if Mode_ok.extaddr (static_data.model_type) then 390 static_data.extended_addr_wanted = "1"b; 391 else goto bad_mode; 392 393 else if single_mode = "^extaddr" then 394 if Mode_ok.extaddr (static_data.model_type) then 395 static_data.extended_addr_wanted = "0"b; 396 else goto bad_mode; 397 398 else if substr (single_mode, 1, 7) = "device=" then 399 if Mode_ok.device (static_data.model_type) then do; 400 temp_var_string = 401 rtrim (translate (substr (single_mode, 8), 402 "ABCD", "abcd")); 403 if length (temp_var_string) ^= 1 then 404 goto bad_mode; 405 if index ("ABCD", temp_var_string) = 0 then 406 goto bad_mode; 407 static_data.plotter_address = temp_var_string; 408 end; 409 else goto bad_mode; 410 411 else do; 412 bad_mode: code = error_table_$bad_mode; 413 return; 414 end; 415 end; 416 417 return; 418 419 mode_switch: entry (effector, instring, outstring, n_chars_out, data_ptr, code); 420 421 data_ptr_copy = data_ptr; 422 423 n_chars_out = 0; /* we swallow this */ 424 425 if effector = Prepare_for_graphics then do; /* put 401X in graphic mode */ 426 call initialize_state; 427 428 if static_data.model_type = type_4662 then do; 429 call ioa_$rsnnl 430 (Char_constants.Plotter_on_and_reset_template, 431 temp_unvar_string, tuvs_len, 432 static_data.plotter_address); 433 call put_out (based_temp_unvar_string); 434 end; 435 end; 436 437 else if static_data.model_type = type_4662 then do; /* exit graphic mode for plotter */ 438 call ioa_$rsnnl (Char_constants.Plotter_off_template, 439 temp_unvar_string, tuvs_len, static_data.plotter_address); 440 call put_out (based_temp_unvar_string); /* plotter home and off */ 441 end; 442 443 else if static_data.model_type = type_rg512 then /* put RG512 in ADM mode */ 444 call put_out (Char_constants.Disable_rg512); 445 446 else do; /* exit graphic mode for everything else */ 447 xy_temp (1) = clipping_limits (1, 1); /* top of screen */ 448 xy_temp (2) = clipping_limits (2, 2); 449 call shift_to (xy_temp); 450 call put_out (Char_constants.Exit_graphic_mode); 451 end; 452 453 return; 454 455 text: entry (effector, instring, outstring, n_chars_out, data_ptr, code); 456 457 data_ptr_copy = data_ptr; 458 459 n_chars_out = 0; 460 461 call graphic_code_util_$decode_spi (addr (instring_array (2)), 1, fixed_array); /* get alignment of string */ 462 alignment = fixed_array (1); 463 464 call graphic_code_util_$decode_dpi (addr (instring_array (3)), 1, fixed_array); /* get length of string */ 465 string_length = fixed_array (1); 466 string_origin = 5; 467 468 text_string_ptr = addr (instring_array (string_origin)); 469 text_string_length = string_length; 470 471 call graphic_gsp_utility_$clip_text 472 (text_string, alignment, Device_constants.charsizes, 473 static_data.current_pos, Device_constants.clipping_limits, 474 Lower_left, xy_temp, string_origin, new_string_length); 475 476 if new_string_length = 0 then return; /* clip sliding away */ 477 478 /* If we get here, we have something to put out. */ 479 480 text_string_ptr = addr (text_string_array (string_origin)); 481 text_string_length, string_length = new_string_length; 482 483 original_pos (*) = static_data.current_pos (*); /* remember place to return to after drawing string */ 484 485 if sum (xy_temp) ^= 0 then do; /* have to shift */ 486 xy_temp = xy_temp + static_data.current_pos; 487 call shift_to (xy_temp); 488 end; 489 490 call put_out (Char_constants.Enter_text_mode_at_curpos); 491 492 if static_data.model_type = type_4014 then 493 call put_out (Char_constants.Large_char_size); 494 495 if static_data.model_type = type_4662 then 496 do i = 1 to length (text_string); 497 ch = substr (text_string, i, 1); 498 j = rank (ch); 499 if j >= lbound (char_delay_values, 1) then 500 if j <= hbound (char_delay_values, 1) then do; 501 k = compute_delay (char_delay_values (j), 1); 502 call put_out (ch); 503 if k > 0 then 504 call put_out_copy (Char_constants.NUL, k); 505 end; 506 507 end; 508 509 else call put_out (text_string); 510 511 if static_data.model_type = type_4014 then 512 call put_out (Char_constants.Small_char_size); 513 514 else if static_data.model_type = type_4002 then do; 515 516 /* 4002 loses its memory when it leaves graphic mode. So we have to lose 517* ours too, to ensure a full 4-char send in the next graphic transmission. */ 518 519 static_data.prev_highx_char, 520 static_data.prev_highy_char, 521 static_data.prev_lowy_char, 522 static_data.prev_extra_char = high9 (1); 523 static_data.prev_x_fromword, 524 static_data.prev_y_fromword = -100; 525 end; 526 527 call shift_to (original_pos); 528 529 return; 530 531 pause: entry (effector, instring, outstring, n_chars_out, data_ptr, code); 532 533 data_ptr_copy = data_ptr; 534 535 if static_data.model_type = type_4662 then do; 536 537 /* ring bell, turn plotter off, activate keyboard. */ 538 539 call ioa_$rsnnl (Char_constants.Plotter_pause_template, 540 temp_var_string, 0, static_data.plotter_address); 541 temp_unvar_string = temp_var_string; 542 543 call iox_$put_chars (static_data.target_switch_ptr, 544 addr (temp_unvar_string), length (temp_var_string), code); 545 if code ^= 0 then return; 546 end; 547 548 call iox_$get_line (static_data.target_switch_ptr, 549 addr (input_buffer), length (input_buffer), 0, code); /* wait for LF */ 550 if code ^= 0 then return; 551 552 if static_data.model_type = type_4662 then do; 553 554 /* Turn plotter on, turn prompt light off */ 555 556 call ioa_$rsnnl (Char_constants.Plotter_on_prompt_off_template, 557 temp_var_string, 0, static_data.plotter_address); 558 temp_unvar_string = temp_var_string; 559 560 call iox_$put_chars (static_data.target_switch_ptr, 561 addr (temp_unvar_string), length (temp_var_string), code); 562 end; 563 564 return; 565 566 node_in: entry (effector, instring, outstring, n_chars_out, data_ptr, code); 567 568 data_ptr_copy = data_ptr; 569 570 n_chars_out = 0; 571 call initialize_state; 572 xy_temp = 0; 573 call shift_to (xy_temp); /* implicit beginning at (0, 0) */ 574 code = 0; 575 return; 576 577 erase: entry (effector, instring, outstring, n_chars_out, data_ptr, code); 578 579 data_ptr_copy = data_ptr; 580 581 n_chars_out = 0; 582 583 if static_data.model_type = type_rg512 then 584 call put_out (Char_constants.Erase_rg512); 585 586 else if static_data.model_type = type_4662 then 587 call put_out (Char_constants.Plotter_ring_bell); 588 589 /* This code does not do anything which would allow the user time to change 590* the paper. Remember that erases usually precede drawings. The first erase 591* will thus be useless since the paper is clean. Subsequent erases, if not 592* accompanied by explicit pauses, will overwrite the picture; but then again, 593* on a 4014 you don't put out a picture and immediately erase it without 594* pausing either. So we rely on the user to provide pauses just like he would 595* on a 4014. */ 596 597 else do; 598 call put_out (Char_constants.Erase); 599 call put_out_copy (Char_constants.NUL, static_data.number_nuls); 600 end; 601 602 call initialize_state; 603 604 return; 605 606 line_type: entry (effector, instring, outstring, n_chars_out, data_ptr, code); 607 608 data_ptr_copy = data_ptr; 609 610 n_chars_out = 0; 611 612 if (static_data.model_type = type_rg512 613 | static_data.model_type = type_4012 614 | static_data.model_type = type_4002) then return; 615 /* ignore for these models */ 616 617 call graphic_code_util_$decode_spi (addr (instring_array (2)), 1, fixed_array); 618 619 line_type = fixed_array (1); 620 if line_type > 4 then line_type = 0; 621 622 call put_out (Char_constants.Set_linetype (line_type)); 623 624 return; 625 626 shift_to: proc (float_coords); 627 628 dcl float_coords (2) float bin parameter; 629 630 dcl (start_point, end_point) (2) float bin, 631 (goto_start_point, goto_end_point) bit (1), 632 shifting bit (1); 633 634 shifting = "1"b; 635 goto draw_common; 636 637 draw_to: entry (float_coords); 638 639 shifting = ""b; 640 goto draw_common; 641 642 draw_common: call graphic_gsp_utility_$clip_line 643 (static_data.current_pos, float_coords, 644 Device_constants.clipping_limits, shifting, 645 goto_start_point, start_point, 646 goto_end_point, end_point); 647 648 if goto_start_point then do; 649 call put_out (Char_constants.Shift_prefix); 650 call encode (start_point, n_chars_out); 651 end; 652 653 if goto_end_point then do; 654 if shifting then 655 call put_out (Char_constants.Shift_prefix); 656 call encode (end_point, n_chars_out); 657 end; 658 659 static_data.current_pos = float_coords; 660 return; 661 662 663 /* ---------------------------------------- */ 664 665 encode: proc (new_coords, n_chars_out); 666 667 dcl new_coords (2) float bin parameter, 668 n_chars_out fixed (21) bin parameter; 669 670 /* AUTOMATIC */ 671 672 dcl base_char_count fixed bin (21), 673 new_tek_coords (2) fixed bin (35, 2), 674 onechar char (1), 675 temp_lowy_char char (1), 676 (x_fromword, y_fromword) fixed bin (35, 2), 677 xy_diff (2) float bin, 678 vector_len_sq float bin, 679 time float bin, 680 k fixed bin, 681 (lowy_sent, highy_sent, extra_sent) bit (1); /* to optimize 40XX series transmission rate */ 682 683 dcl 1 x_bits aligned automatic, 684 2 pad bit (24) unaligned, 685 2 high bit (5) unaligned, 686 2 low bit (5) unaligned, 687 2 frac bit (2) unaligned; 688 689 dcl 1 y_bits aligned automatic like x_bits; 690 691 /* ENTRIES */ 692 693 dcl sub_err_ entry () options (variable); 694 695 /* BUILTINS */ 696 697 dcl (fixed, null, round, sqrt) builtin; 698 699 base_char_count = n_chars_out; 700 701 new_tek_coords = 702 round (fixed (new_coords * Device_constants.outscale 703 + Device_constants.screen_offsets, 35, 6), 2); 704 705 706 lowy_sent, highy_sent, extra_sent = ""b; 707 x_fromword = new_tek_coords (1); 708 y_fromword = new_tek_coords (2); 709 unspec (x_bits) = unspec (x_fromword); 710 unspec (y_bits) = unspec (y_fromword); 711 712 if (x_fromword < 0 713 | y_fromword < 0 714 | x_fromword > 1023.75 715 | y_fromword > 779.75) 716 then call sub_err_ (0, "tektronix_40XX_", "h", null, 0, 717 "System error-- coordinate value out of range."); 718 719 if y_fromword ^= static_data.prev_y_fromword then do; 720 unspec (onechar) = "0001"b || y_bits.high; /* set up first char out */ 721 if onechar ^= static_data.prev_highy_char then do; 722 highy_sent = "1"b; /* if we need it, put it out */ 723 call put_out (onechar); 724 static_data.prev_highy_char = onechar; 725 end; 726 727 if static_data.extended_addr_wanted then do; 728 unspec (onechar) = "00110"b || y_bits.frac || x_bits.frac; 729 if onechar ^= static_data.prev_extra_char then do; 730 extra_sent = "1"b; 731 call put_out (onechar); 732 static_data.prev_extra_char = onechar; 733 end; 734 end; 735 736 unspec (onechar) = "0011"b || y_bits.low; /* set up second char out */ 737 temp_lowy_char = onechar; 738 739 if (onechar ^= static_data.prev_lowy_char 740 | extra_sent 741 | static_data.model_type = type_4002) then do; /* 4002 ALWAYS requires low y */ 742 lowy_sent = "1"b; 743 call put_out (onechar); 744 static_data.prev_lowy_char = onechar; 745 end; 746 747 if static_data.optimization_ok then static_data.prev_y_fromword = y_fromword; 748 end; 749 750 if x_fromword ^= static_data.prev_x_fromword then do; 751 unspec (onechar) = "0001"b || x_bits.high; 752 if onechar ^= static_data.prev_highx_char then do; /* need new high x character */ 753 if ^lowy_sent then do; 754 call put_out (temp_lowy_char); /* guess we needed low y sent */ 755 lowy_sent = "1"b; 756 end; 757 758 call put_out (onechar); /* send high x */ 759 static_data.prev_highx_char = onechar; 760 end; 761 762 if static_data.optimization_ok then static_data.prev_x_fromword = x_fromword; 763 end; 764 765 unspec (onechar) = "0010"b || x_bits.low; /* set up last char */ 766 call put_out (onechar); /* put it out */ 767 768 if static_data.model_type = type_4662 then do; 769 xy_diff = (new_coords - static_data.current_pos) * Device_constants.outscale_inches; 770 vector_len_sq = sum (xy_diff * xy_diff); 771 time = -1.32497e-3 * vector_len_sq + 8.14581e-2 * sqrt (vector_len_sq) + 4.84891e-2; 772 /* don't ask why, this is the best that a least squares program */ 773 /* could do. The plotter manual only had a timing chart! */ 774 k = compute_delay (time, n_chars_out - base_char_count); 775 if k > 0 then 776 call put_out_copy (Char_constants.NUL, k); 777 end; 778 779 780 return; 781 end encode; 782 783 /* ---------------------------------------- */ 784 785 end shift_to; 786 787 788 /* ---------------------------------------- */ 789 790 compute_delay: proc (incr_delay, chars_used) returns (fixed bin); 791 792 dcl incr_delay float bin parameter, 793 chars_used fixed bin parameter, 794 n fixed bin; 795 796 dcl max builtin; 797 798 static_data.delay_chars_owed = static_data.delay_chars_owed - chars_used + (incr_delay * static_data.chars_per_second); 799 n = max (fixed (static_data.delay_chars_owed), 0); 800 static_data.delay_chars_owed = static_data.delay_chars_owed - n; 801 return (n); 802 end compute_delay; 803 804 put_out: proc (chars); /* puts chars into outstring */ 805 806 dcl chars char (*) parameter; 807 808 substr (outstring, n_chars_out + 1, length (chars)) = chars; 809 n_chars_out = n_chars_out + length (chars); 810 return; 811 812 put_out_copy: entry (ch1, count); 813 814 dcl ch1 char (1) parameter, 815 count fixed bin parameter; 816 817 substr (outstring, n_chars_out + 1, count) = copy (ch1, count); 818 n_chars_out = n_chars_out + count; 819 return; 820 821 end put_out; 822 823 query: entry (effector, instring, outstring, n_chars_out, data_ptr, code); 824 825 data_ptr_copy = data_ptr; 826 827 if (static_data.model_type = type_4662 828 | static_data.model_type = type_4002) then do; 829 830 /* We use unimplemented_effector instead of term_bad_effector to simulate 831* the "error" keyword in the GDT. There really should be an error keyword 832* in the GDT for these devices, but in the interests of keeping them nearly 833* identical we let them call in here and in the input entry. */ 834 835 code = graphic_error_table_$unimplemented_effector; 836 return; 837 end; 838 839 if substr (instring, 2, 1) ^= Where_char then do; 840 code = graphic_error_table_$term_bad_effector; 841 return; 842 end; 843 844 /* We used to throw up the crosshairs here, but we don't any more because of 845* a window problem where setting breakall after the input has already been 846* typed-ahead doesn't work. So we throw them up in the input entry. */ 847 848 n_chars_out = 0; 849 return; 850 851 input: entry (effector, instring, outstring, n_chars_out, data_ptr, code); 852 853 dcl 1 tek_input_format unaligned, 854 2 whatever_key_hit char (1), 855 2 position (2), 856 3 a_0001 bit (4), 857 3 most_significant bit (5), 858 3 b_0001 bit (4), 859 3 least_significant bit (5); 860 861 dcl graphic_input_buffer (1:8) char (1) unaligned, 862 chars_left fixed bin (21), 863 chars_gotten fixed bin, 864 buffer_ptr pointer; 865 866 dcl cleanup condition; 867 868 869 data_ptr_copy = data_ptr; 870 871 /* Do a resetread to flush any typeahead before going into breakall mode */ 872 873 call iox_$control (static_data.target_switch_ptr, "resetread", 874 null, 0); 875 876 on cleanup call revert_breakall; 877 878 call iox_$modes (static_data.target_switch_ptr, "breakall", "", 0); 879 880 /* Throw up the crosshairs. */ 881 882 call iox_$put_chars (static_data.target_switch_ptr, 883 addr (Char_constants.Enable_crosshairs), 884 length (Char_constants.Enable_crosshairs), code); 885 if code ^= 0 then return; 886 887 /* Read the input from the crosshairs. Welcome to the great Breakall Race, 888* in which Multics tries to read and return the input faster than the terminal 889* hardware can send it at line speed, and usually does. Thus we have to loop 890* at make sure we get all five characters. */ 891 892 chars_left = 5; 893 chars_gotten = 0; 894 graphic_input_buffer (*) = high9 (1); /* err hedge */ 895 896 do while (chars_left > 0); 897 buffer_ptr = addr (graphic_input_buffer (chars_gotten + 1)); 898 899 call iox_$get_chars (static_data.target_switch_ptr, 900 buffer_ptr, chars_left, chars_read, code); 901 if code ^= 0 then return; 902 903 chars_left = chars_left - chars_read; 904 chars_gotten = chars_gotten + chars_read; 905 end; 906 907 call revert_breakall; 908 909 /* ----- */ 910 911 revert_breakall: proc; 912 913 call iox_$modes (static_data.target_switch_ptr, "^breakall", "", 0); 914 915 end revert_breakall; 916 917 /* ----- */ 918 919 revert cleanup; 920 921 (nostringsize): 922 unspec (tek_input_format) = unspec (string (graphic_input_buffer)); 923 924 call iox_$control 925 (static_data.target_switch_ptr, "resetread", null, code); 926 927 do i = 1 to 2; 928 if tek_input_format.position (i).a_0001 ^= "0001"b 929 | tek_input_format.position (i).b_0001 ^= "0001"b 930 then do; 931 code = graphic_error_table_$malformed_input; 932 return; 933 end; 934 end; 935 936 do i = 1 to 2; 937 unspec (accumulator_bits) = ""b; 938 accumulator_bits.most_significant = 939 tek_input_format.most_significant (i); 940 accumulator_bits.least_significant = 941 tek_input_format.least_significant (i); 942 943 unspec (accumulator) = unspec (accumulator_bits); 944 float_array (i) = (accumulator - Device_constants.screen_offsets (i)) * Device_constants.inscale; 945 end; 946 947 float_array (3) = 0; 948 949 output_ptr = addr (outstring); 950 951 output_ptr -> where_format.node_begin = Node_begin_char; 952 output_ptr -> where_format.array_indicator = Array_char; 953 output_ptr -> where_format.mbz = zero_node_id; 954 output_ptr -> where_format.setpos_indicator = Setposition_char; 955 output_ptr -> where_format.node_end = Node_end_char; 956 957 call graphic_code_util_$encode_scl (float_array, 3, addr (output_ptr -> where_format.xpos)); 958 959 n_chars_out = length (string (null -> where_format)); 960 961 return; 962 963 end tektronix_40XX_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/18/82 1625.3 tektronix_40XX_.pl1 >dumps>old>recomp>tektronix_40XX_.pl1 210 1 03/27/82 0439.3 graphic_input_formats.incl.pl1 >ldd>include>graphic_input_formats.incl.pl1 212 2 03/27/82 0439.2 graphic_code_dcl.incl.pl1 >ldd>include>graphic_code_dcl.incl.pl1 214 3 03/27/82 0439.2 graphic_etypes.incl.pl1 >ldd>include>graphic_etypes.incl.pl1 216 4 03/27/82 0439.2 graphic_device_table.incl.pl1 >ldd>include>graphic_device_table.incl.pl1 218 5 06/29/77 1624.0 terminal_info.incl.pl1 >ldd>include>terminal_info.incl.pl1 220 6 07/22/80 1335.1 iox_dcls.incl.pl1 >ldd>include>iox_dcls.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. Array_char constant char(1) initial dcl 2-74 ref 952 Char_constants 000000 constant structure level 1 packed unaligned dcl 123 Device_constants 000021 constant structure level 1 unaligned dcl 176 Disable_rg512 12 000000 constant char(2) initial level 2 packed unaligned dcl 123 set ref 443* Dynamic_and_structural_effectors 000041 constant structure level 2 dcl 2-8 Enable_crosshairs 15 000000 constant char(2) initial level 2 packed unaligned dcl 123 set ref 882 882 882 882 Enter_text_mode_at_curpos 13(18) 000000 constant char(1) initial level 2 packed unaligned dcl 123 set ref 490* Erase 12(18) 000000 constant char(2) initial level 2 packed unaligned dcl 123 set ref 598* Erase_rg512 11(18) 000000 constant char(2) initial level 2 packed unaligned dcl 123 set ref 583* Exit_graphic_mode 13 000000 constant char(2) initial level 2 packed unaligned dcl 123 set ref 450* Graphic_Code_Structure 000041 constant structure level 1 dcl 2-8 Graphic_effectors 3 000041 constant structure level 2 dcl 2-8 Large_char_size 14(18) 000000 constant char(2) initial level 2 packed unaligned dcl 123 set ref 492* Lower_left 000255 constant fixed bin(17,0) initial dcl 3-9 set ref 471* Mode_ok 000020 constant structure array level 1 packed unaligned dcl 158 Model_names 000222 constant char(8) initial array unaligned dcl 155 set ref 334* 379 379 383 NUL 000000 constant char(1) initial level 2 packed unaligned dcl 123 set ref 503* 599* 775* Node_begin_char 1 000041 constant char(1) initial level 3 packed unaligned dcl 2-8 ref 951 Node_end_char 1(09) 000041 constant char(1) initial level 3 packed unaligned dcl 2-8 ref 955 Plotter_off_template 7(27) 000000 constant char(7) initial level 2 packed unaligned dcl 123 set ref 300* 438* Plotter_on_and_reset_template 1(09) 000000 constant char(8) initial level 2 packed unaligned dcl 123 set ref 429* Plotter_on_prompt_off_template 3(09) 000000 constant char(8) initial level 2 packed unaligned dcl 123 set ref 556* Plotter_pause_template 5(09) 000000 constant char(10) initial level 2 packed unaligned dcl 123 set ref 539* Plotter_ring_bell 0(18) 000000 constant char(3) initial level 2 packed unaligned dcl 123 set ref 586* Prepare_for_graphics constant fixed bin(17,0) initial dcl 4-20 ref 425 Query_characters 000036 constant structure level 1 dcl 1-9 Set_linetype 15(18) 000000 constant char(2) initial array level 2 packed unaligned dcl 123 set ref 622* Setposition_char 3 000041 constant char(1) initial level 3 packed unaligned dcl 2-8 ref 954 Shift_prefix 13(27) 000000 constant char(1) initial level 2 packed unaligned dcl 123 set ref 649* 654* Small_char_size 14 000000 constant char(2) initial level 2 packed unaligned dcl 123 set ref 511* Where_char 000036 constant char(1) initial level 2 dcl 1-9 ref 839 a_0001 0(09) 000366 automatic bit(4) array level 3 packed unaligned dcl 853 set ref 928 accumulator 000100 automatic fixed bin(35,0) dcl 42 set ref 943* 944 accumulator_bits 000344 automatic structure level 1 dcl 74 set ref 937* 943 addr builtin function dcl 205 ref 226 226 290 290 302 433 440 461 461 464 464 468 480 543 543 548 548 560 560 617 617 882 882 897 949 957 957 alignment 000101 automatic fixed bin(17,0) dcl 42 set ref 462* 471* array_indicator 0(09) based char(1) level 2 packed unaligned dcl 1-14 set ref 952* b_0001 0(18) 000366 automatic bit(4) array level 3 packed unaligned dcl 853 set ref 928 base_char_count 000444 automatic fixed bin(21,0) dcl 672 set ref 699* 774 based_temp_unvar_string based char unaligned dcl 102 set ref 302* 433* 440* baud_per_nul 14 000021 constant fixed bin(17,0) initial level 2 dcl 176 ref 294 368 baud_rate 13 000345 automatic fixed bin(17,0) level 2 dcl 79 set ref 293* 294 296 297 365* 366 368 buffer_ptr 000374 automatic pointer dcl 861 set ref 897* 899* ch 000102 automatic char(1) unaligned dcl 42 set ref 497* 498 502* ch1 parameter char(1) unaligned dcl 814 ref 812 817 char_delay_values 000063 constant float bin(27) initial array dcl 162 set ref 499 499 501* chars parameter char unaligned dcl 806 ref 804 808 808 809 chars_gotten 000373 automatic fixed bin(17,0) dcl 861 set ref 893* 897 904* 904 chars_left 000372 automatic fixed bin(21,0) dcl 861 set ref 892* 896 899* 903* 903 chars_per_second 5 based fixed bin(17,0) level 2 dcl 83 set ref 296* 334 366* 798 chars_read 000103 automatic fixed bin(21,0) dcl 42 set ref 899* 903 904 chars_used parameter fixed bin(17,0) dcl 792 ref 790 798 charsizes 11 000021 constant float bin(27) initial array level 2 dcl 176 set ref 471* cleanup 000376 stack reference condition dcl 866 ref 876 919 clipping_limits 3 000021 constant float bin(27) initial array level 2 dcl 176 set ref 447 448 471* 642* code parameter fixed bin(35,0) dcl 34 set ref 222 248 253 258 263 268 285* 286 319 328 360* 361 362* 412* 419 455 531 543* 545 548* 550 560* 566 574* 577 606 823 835* 840* 851 882* 885 899* 901 924* 931* copy builtin function dcl 205 ref 353 817 count parameter fixed bin(17,0) dcl 814 ref 812 817 817 818 current_pos 7 based float bin(27) array level 2 dcl 83 set ref 235 239 243 308* 471* 483 486 642* 659* 769 cv_dec_check_ 000024 constant entry external dcl 188 ref 360 data_ptr parameter pointer dcl 34 set ref 222 224 248 253 258 263 268 278* 319 321 325* 328 330 419 421 455 457 531 533 566 568 577 579 606 608 823 825 851 869 data_ptr_copy 000104 automatic pointer dcl 42 set ref 224* 235 239 243 277* 278 280 281 285 290 294 296 297 299 300 308 309 310 310 310 310 314 314 315 321* 324 330* 334 334 334 334 334 334 366 368 385 388 388 393 393 398 407 421* 428 429 437 438 443 457* 471 483 486 492 495 511 514 519 519 519 519 523 523 533* 535 539 543 548 552 556 560 568* 579* 583 586 599 608* 612 612 612 642 659 719 721 724 727 729 732 739 739 744 747 747 750 752 759 762 762 768 769 798 798 798 799 800 800 825* 827 827 869* 873 878 882 899 913 924 delay_chars_owed 6 based fixed bin(17,0) level 2 dcl 83 set ref 309* 798* 798 799 800* 800 device 000020 constant bit(1) initial array level 2 packed unaligned dcl 158 set ref 334* 398 dim builtin function dcl 205 ref 379 383 divide builtin function dcl 205 ref 294 296 366 368 effector parameter fixed bin(17,0) dcl 34 ref 222 228 232 248 253 258 263 268 319 328 419 425 455 531 566 577 606 823 851 end_point 000430 automatic float bin(27) array dcl 630 set ref 642* 656* error_table_$bad_conversion 000012 external static fixed bin(35,0) dcl 110 ref 362 error_table_$bad_mode 000014 external static fixed bin(35,0) dcl 110 ref 412 extaddr 0(01) 000020 constant bit(1) initial array level 2 packed unaligned dcl 158 set ref 334* 388 393 extended_addr_wanted based bit(1) level 3 packed unaligned dcl 83 set ref 281* 334* 388* 393* 727 extra_sent 000463 automatic bit(1) unaligned dcl 672 set ref 706* 730* 739 fixed builtin function dcl 205 in procedure "tektronix_40XX_" ref 799 fixed builtin function dcl 697 in procedure "encode" ref 701 fixed_array 000106 automatic fixed bin(17,0) array dcl 42 set ref 461* 462 464* 465 617* 619 flags based structure level 2 dcl 83 float_array 000107 automatic float bin(27) array dcl 42 set ref 944* 947* 957* float_coords parameter float bin(27) array dcl 628 set ref 626 637 642* 659 frac 0(34) 000464 automatic bit(2) level 2 in structure "x_bits" packed unaligned dcl 683 in procedure "encode" set ref 728 frac 0(34) 000465 automatic bit(2) level 2 in structure "y_bits" packed unaligned dcl 689 in procedure "encode" set ref 728 get_system_free_area_ 000032 constant entry external dcl 188 ref 276 goto_end_point 000433 automatic bit(1) unaligned dcl 630 set ref 642* 653 goto_start_point 000432 automatic bit(1) unaligned dcl 630 set ref 642* 648 graphic_code_util_$decode_dpi 000036 constant entry external dcl 192 ref 464 graphic_code_util_$decode_scl 000040 constant entry external dcl 192 ref 226 graphic_code_util_$decode_spi 000034 constant entry external dcl 192 ref 461 617 graphic_code_util_$encode_scl 000042 constant entry external dcl 192 ref 957 graphic_error_table_$malformed_input 000016 external static fixed bin(35,0) dcl 113 ref 931 graphic_error_table_$term_bad_effector 000020 external static fixed bin(35,0) dcl 113 ref 840 graphic_error_table_$unimplemented_effector 000022 external static fixed bin(35,0) dcl 113 ref 835 graphic_gsp_utility_$clip_line 000044 constant entry external dcl 197 ref 642 graphic_gsp_utility_$clip_text 000046 constant entry external dcl 197 ref 471 graphic_input_buffer 000370 automatic char(1) array unaligned dcl 861 set ref 894* 897 921 hbound builtin function dcl 205 ref 499 high 0(24) 000465 automatic bit(5) level 2 in structure "y_bits" packed unaligned dcl 689 in procedure "encode" set ref 720 high 0(24) 000464 automatic bit(5) level 2 in structure "x_bits" packed unaligned dcl 683 in procedure "encode" set ref 751 high9 builtin function dcl 205 ref 310 519 894 highy_sent 000462 automatic bit(1) unaligned dcl 672 set ref 706* 722* i 000112 automatic fixed bin(17,0) dcl 42 set ref 349* 350 350* 352 353 355* 356 356 360* 365 379* 379* 383 385 495* 497* 927* 928 928* 936* 938 940 944 944* incr_delay parameter float bin(27) dcl 792 ref 790 798 index builtin function dcl 205 ref 349 405 input_buffer 000115 automatic char(200) unaligned dcl 42 set ref 548 548 548 548 inscale 2 000021 constant float bin(27) initial level 2 dcl 176 ref 944 instring parameter char unaligned dcl 34 set ref 222 226 226 226 226 248 253 258 263 268 285* 319 328 346 419 455 461 461 461 461 464 464 464 464 468 468 531 566 577 606 617 617 617 617 823 839 851 instring_array defined char(1) array unaligned dcl 102 set ref 226 226 461 461 464 464 468 617 617 int_code 000177 automatic fixed bin(35,0) dcl 42 set ref 290* 293 ioa_$rsnnl 000026 constant entry external dcl 188 ref 300 429 438 539 556 ioa_$rsnpnnl 000030 constant entry external dcl 188 ref 334 iox_$control 000050 constant entry external dcl 6-6 ref 290 873 924 iox_$get_chars 000052 constant entry external dcl 6-6 ref 899 iox_$get_line 000054 constant entry external dcl 6-6 ref 548 iox_$look_iocb 000056 constant entry external dcl 6-6 ref 285 iox_$modes 000060 constant entry external dcl 6-6 ref 878 913 iox_$put_chars 000062 constant entry external dcl 6-6 ref 543 560 882 j 000113 automatic fixed bin(17,0) dcl 42 set ref 498* 499 499 501 k 000114 automatic fixed bin(17,0) dcl 42 in procedure "tektronix_40XX_" set ref 501* 503 503* k 000460 automatic fixed bin(17,0) dcl 672 in procedure "encode" set ref 774* 775 775* lbound builtin function dcl 205 ref 499 least_significant 0(31) 000344 automatic bit(5) level 2 in structure "accumulator_bits" packed unaligned dcl 74 in procedure "tektronix_40XX_" set ref 940* least_significant 0(22) 000366 automatic bit(5) array level 3 in structure "tek_input_format" packed unaligned dcl 853 in procedure "tektronix_40XX_" set ref 940 length builtin function dcl 205 ref 350 355 403 495 543 543 548 548 560 560 808 809 882 882 959 line_type 000200 automatic fixed bin(17,0) dcl 42 set ref 619* 620 620* 622 low 0(29) 000464 automatic bit(5) level 2 in structure "x_bits" packed unaligned dcl 683 in procedure "encode" set ref 765 low 0(29) 000465 automatic bit(5) level 2 in structure "y_bits" packed unaligned dcl 689 in procedure "encode" set ref 736 lowy_sent 000461 automatic bit(1) unaligned dcl 672 set ref 706* 742* 753 755* max builtin function dcl 796 ref 799 mbz 0(18) based char(3) level 2 packed unaligned dcl 1-14 set ref 953* mode_string 000201 automatic char(256) unaligned dcl 42 set ref 346* 348 349 350 352 353* 353 model_type 17 based fixed bin(17,0) level 2 dcl 83 set ref 280* 299 334 334 334 385* 388 393 398 428 437 443 492 495 511 514 535 552 583 586 612 612 612 739 768 827 827 most_significant 0(26) 000344 automatic bit(5) level 2 in structure "accumulator_bits" packed unaligned dcl 74 in procedure "tektronix_40XX_" set ref 938* most_significant 0(13) 000366 automatic bit(5) array level 3 in structure "tek_input_format" packed unaligned dcl 853 in procedure "tektronix_40XX_" set ref 938 n 000476 automatic fixed bin(17,0) dcl 792 set ref 799* 800 801 n_chars_out parameter fixed bin(21,0) dcl 667 in procedure "encode" ref 665 699 774 n_chars_out parameter fixed bin(21,0) dcl 34 in procedure "tektronix_40XX_" set ref 222 248 253 258 263 268 273* 319 323* 328 334* 419 423* 455 459* 531 566 570* 577 581* 606 610* 650* 656* 808 809* 809 817 818* 818 823 848* 851 959* new_coords parameter float bin(27) array dcl 667 ref 665 701 769 new_string_length 000301 automatic fixed bin(17,0) dcl 42 set ref 471* 476 481 new_tek_coords 000446 automatic fixed bin(35,2) array dcl 672 set ref 701* 707 708 node_begin based char(1) level 2 packed unaligned dcl 1-14 set ref 951* node_end 3(27) based char(1) level 2 packed unaligned dcl 1-14 set ref 955* null builtin function dcl 205 in procedure "tektronix_40XX_" ref 325 873 873 924 924 959 null builtin function dcl 697 in procedure "encode" ref 712 712 number_nuls 4 based fixed bin(17,0) level 2 dcl 83 set ref 294* 368* 599* onechar 000450 automatic char(1) unaligned dcl 672 set ref 720* 721 723* 724 728* 729 731* 732 736* 737 739 743* 744 751* 752 758* 759 765* 766* optimization_ok 0(01) based bit(1) level 3 packed unaligned dcl 83 set ref 297* 747 762 original_pos 000302 automatic float bin(27) array dcl 42 set ref 483* 527* output_ptr 000304 automatic pointer dcl 42 set ref 949* 951 952 953 954 955 957 957 outscale 000021 constant float bin(27) initial level 2 dcl 176 ref 701 outscale_inches 1 000021 constant float bin(27) initial level 2 dcl 176 ref 769 outstring parameter char unaligned dcl 34 set ref 222 248 253 258 263 268 319 328 334* 419 455 531 566 577 606 808* 817* 823 851 949 plotter_address 20 based char(1) level 2 dcl 83 set ref 300* 315* 334* 407* 429* 438* 539* 556* position 0(09) 000366 automatic structure array level 2 packed unaligned dcl 853 prev_extra_char 14 based char(1) level 2 dcl 83 set ref 310* 519* 729 732* prev_highx_char 12 based char(1) level 2 dcl 83 set ref 310* 519* 752 759* prev_highy_char 11 based char(1) level 2 dcl 83 set ref 310* 519* 721 724* prev_lowy_char 13 based char(1) level 2 dcl 83 set ref 310* 519* 739 744* prev_x_fromword 15 based fixed bin(35,2) level 2 dcl 83 set ref 314* 523* 750 762* prev_y_fromword 16 based fixed bin(35,2) level 2 dcl 83 set ref 314* 523* 719 747* rank builtin function dcl 205 ref 498 round builtin function dcl 697 ref 701 rtrim builtin function dcl 205 ref 350 355 400 screen_offsets 7 000021 constant fixed bin(17,0) initial array level 2 dcl 176 ref 701 944 setpos_indicator 1(09) based char(1) level 2 packed unaligned dcl 1-14 set ref 954* shifting 000434 automatic bit(1) unaligned dcl 630 set ref 634* 639* 642* 654 single_mode 000306 automatic char(12) unaligned dcl 42 set ref 352* 355 356 356* 359 360 360 376 377 388 393 398 400 sqrt builtin function dcl 697 ref 771 start_point 000426 automatic float bin(27) array dcl 630 set ref 642* 650* static_data based structure level 1 dcl 83 set ref 277 324 string builtin function dcl 205 ref 921 959 string_length 000311 automatic fixed bin(17,0) dcl 42 set ref 465* 469 481* string_origin 000312 automatic fixed bin(17,0) dcl 42 set ref 466* 468 471* 480 sub_err_ 000064 constant entry external dcl 693 ref 712 substr builtin function dcl 205 set ref 352 353 356 356* 359 360 360 376 377 398 400 497 808* 817* 839 sum builtin function dcl 205 ref 485 770 system_free_area based area(1024) dcl 102 ref 277 324 system_free_ptr 000010 internal static pointer initial dcl 119 set ref 276* 277 324 target_switch_ptr 2 based pointer level 2 dcl 83 set ref 285* 290* 543* 548* 560* 873* 878* 882* 899* 913* 924* tek_input_format 000366 automatic structure level 1 packed unaligned dcl 853 set ref 921* temp_lowy_char 000451 automatic char(1) unaligned dcl 672 set ref 737* 754* temp_model_type 000313 automatic fixed bin(17,0) dcl 42 set ref 250* 255* 260* 265* 270* 280 temp_unvar_string 000314 automatic char(32) unaligned dcl 42 set ref 300* 302 429* 433 438* 440 541* 543 543 558* 560 560 temp_var_string 000324 automatic varying char(32) dcl 42 set ref 377* 379 400* 403 405 407 539* 541 543 543 556* 558 560 560 term_info 000345 automatic structure level 1 dcl 79 set ref 290 290 terminal_info based structure level 1 dcl 5-6 terminal_info_version constant fixed bin(17,0) initial dcl 5-16 ref 288 text_string based char unaligned dcl 102 set ref 471* 495 497 509* text_string_array based char(1) array unaligned dcl 102 set ref 480 text_string_length 000335 automatic fixed bin(17,0) dcl 42 set ref 469* 471 471 481* 495 497 509 509 text_string_ptr 000336 automatic pointer dcl 42 set ref 468* 471 480* 480 495 497 509 time 000457 automatic float bin(27) dcl 672 set ref 771* 774* translate builtin function dcl 205 ref 400 tuvs_len 000340 automatic fixed bin(17,0) dcl 42 set ref 300* 302 302 429* 433 433 438* 440 440 type_4002 constant fixed bin(17,0) initial dcl 149 ref 260 514 612 739 827 type_4012 constant fixed bin(17,0) initial dcl 149 ref 250 612 type_4014 constant fixed bin(17,0) initial dcl 149 ref 255 492 511 type_4662 constant fixed bin(17,0) initial dcl 149 ref 265 299 428 437 495 535 552 586 768 827 type_rg512 constant fixed bin(17,0) initial dcl 149 ref 270 443 583 612 unspec builtin function dcl 205 set ref 709* 709 710* 710 720* 728* 736* 751* 765* 921* 921 937* 943* 943 vector_len_sq 000456 automatic float bin(27) dcl 672 set ref 770* 771 771 version 000345 automatic fixed bin(17,0) level 2 dcl 79 set ref 288* where_format based structure level 1 packed unaligned dcl 1-14 set ref 959 x_bits 000464 automatic structure level 1 dcl 683 set ref 709* x_fromword 000452 automatic fixed bin(35,2) dcl 672 set ref 707* 709 712 712 750 762 xpos 1(18) based char(3) level 2 packed unaligned dcl 1-14 set ref 957 957 xy_diff 000454 automatic float bin(27) array dcl 672 set ref 769* 770 770 xy_temp 000342 automatic float bin(27) array dcl 42 set ref 226* 230* 232* 235* 235 236* 239* 239 240* 243* 243 244* 245* 447* 448* 449* 471* 485 486* 486 487* 572* 573* y_bits 000465 automatic structure level 1 dcl 689 set ref 710* y_fromword 000453 automatic fixed bin(35,2) dcl 672 set ref 708* 710 712 712 719 747 zero_node_id 000062 constant char(3) initial unaligned dcl 2-70 ref 953 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. Any_device internal static fixed bin(17,0) initial dcl 3-9 Array internal static fixed bin(17,0) initial dcl 3-9 Blink internal static fixed bin(17,0) initial dcl 3-9 Blinking internal static fixed bin(17,0) initial dcl 3-9 Center internal static fixed bin(17,0) initial dcl 3-9 Clipping internal static fixed bin(17,0) initial dcl 3-9 Close internal static fixed bin(17,0) initial dcl 4-20 Color internal static fixed bin(17,0) initial dcl 3-9 Dash_dotted internal static fixed bin(17,0) initial dcl 3-9 Dashed internal static fixed bin(17,0) initial dcl 3-9 Datablock internal static fixed bin(17,0) initial dcl 3-9 Dotted internal static fixed bin(17,0) initial dcl 3-9 Expansion internal static fixed bin(17,0) initial dcl 4-20 Full_intensity internal static fixed bin(17,0) initial dcl 3-9 Graphic_Defaults internal static structure level 1 dcl 2-47 Graphic_Element_Lengths internal static fixed bin(17,0) initial array dcl 2-60 Half_intensity internal static fixed bin(17,0) initial dcl 3-9 Insensitive internal static fixed bin(17,0) initial dcl 3-9 Intensity internal static fixed bin(17,0) initial dcl 3-9 Invisible internal static fixed bin(17,0) initial dcl 3-9 Joystick internal static fixed bin(17,0) initial dcl 3-9 Keyboard internal static fixed bin(17,0) initial dcl 3-9 Left internal static fixed bin(17,0) initial dcl 3-9 Light_pen internal static fixed bin(17,0) initial dcl 3-9 Linetype internal static fixed bin(17,0) initial dcl 3-9 List internal static fixed bin(17,0) initial dcl 3-9 List_char internal static char(1) initial dcl 2-74 Long_dashed internal static fixed bin(17,0) initial dcl 3-9 Lower_center internal static fixed bin(17,0) initial dcl 3-9 Lower_right internal static fixed bin(17,0) initial dcl 3-9 Modes internal static fixed bin(17,0) initial dcl 4-20 Mouse internal static fixed bin(17,0) initial dcl 3-9 Null internal static fixed bin(17,0) initial dcl 3-9 On_dup_error internal static fixed bin(17,0) initial dcl 3-9 On_dup_source internal static fixed bin(17,0) initial dcl 3-9 On_dup_target_then_nulls internal static fixed bin(17,0) initial dcl 3-9 On_dup_target_then_source internal static fixed bin(17,0) initial dcl 3-9 Open internal static fixed bin(17,0) initial dcl 4-20 Point internal static fixed bin(17,0) initial dcl 3-9 Prepare_for_text internal static fixed bin(17,0) initial dcl 4-20 Process_input internal static fixed bin(17,0) initial dcl 4-20 Reference internal static fixed bin(17,0) initial dcl 4-20 Right internal static fixed bin(17,0) initial dcl 3-9 Rotation internal static fixed bin(17,0) initial dcl 3-9 Scaling internal static fixed bin(17,0) initial dcl 3-9 Sensitive internal static fixed bin(17,0) initial dcl 3-9 Sensitivity internal static fixed bin(17,0) initial dcl 3-9 Setpoint internal static fixed bin(17,0) initial dcl 3-9 Setposition internal static fixed bin(17,0) initial dcl 3-9 Shift internal static fixed bin(17,0) initial dcl 3-9 Solid internal static fixed bin(17,0) initial dcl 3-9 Steady internal static fixed bin(17,0) initial dcl 3-9 Symbol internal static fixed bin(17,0) initial dcl 3-9 Tablet_and_pen internal static fixed bin(17,0) initial dcl 3-9 Terminal_program internal static fixed bin(17,0) initial dcl 3-9 Text internal static fixed bin(17,0) initial dcl 3-9 Trackball internal static fixed bin(17,0) initial dcl 3-9 Upper_center internal static fixed bin(17,0) initial dcl 3-9 Upper_left internal static fixed bin(17,0) initial dcl 3-9 Upper_right internal static fixed bin(17,0) initial dcl 3-9 Vector internal static fixed bin(17,0) initial dcl 3-9 char_width automatic float bin(27) dcl 42 gdt_pointer automatic pointer dcl 4-5 gdt_version_2 internal static fixed bin(17,0) initial dcl 4-3 graphic_device_table based structure level 1 dcl 4-7 graphic_structure_len automatic fixed bin(24,0) dcl 1-38 input_ptr automatic pointer dcl 42 iox_$attach_name 000000 constant entry external dcl 6-6 iox_$attach_ptr 000000 constant entry external dcl 6-6 iox_$close 000000 constant entry external dcl 6-6 iox_$delete_record 000000 constant entry external dcl 6-6 iox_$destroy_iocb 000000 constant entry external dcl 6-6 iox_$detach_iocb 000000 constant entry external dcl 6-6 iox_$err_no_operation 000000 constant entry external dcl 6-6 iox_$err_not_attached 000000 constant entry external dcl 6-6 iox_$err_not_closed 000000 constant entry external dcl 6-6 iox_$err_not_open 000000 constant entry external dcl 6-6 iox_$error_output external static pointer dcl 6-35 iox_$find_iocb 000000 constant entry external dcl 6-6 iox_$find_iocb_n 000000 constant entry external dcl 6-6 iox_$move_attach 000000 constant entry external dcl 6-6 iox_$open 000000 constant entry external dcl 6-6 iox_$position 000000 constant entry external dcl 6-6 iox_$propagate 000000 constant entry external dcl 6-6 iox_$read_key 000000 constant entry external dcl 6-6 iox_$read_length 000000 constant entry external dcl 6-6 iox_$read_record 000000 constant entry external dcl 6-6 iox_$rewrite_record 000000 constant entry external dcl 6-6 iox_$seek_key 000000 constant entry external dcl 6-6 iox_$user_input external static pointer dcl 6-35 iox_$user_io external static pointer dcl 6-35 iox_$user_output external static pointer dcl 6-35 iox_$write_record 000000 constant entry external dcl 6-6 mod builtin function dcl 205 request_for_status internal static char(1) initial dcl 2-72 string_flatsize automatic fixed bin(17,0) dcl 42 string_width automatic float bin(27) dcl 42 temp_float automatic float bin(27) dcl 42 terminal_info_ptr automatic pointer dcl 5-15 what_format based structure level 1 packed unaligned dcl 1-31 which_format based structure level 1 packed unaligned dcl 1-25 x_offset automatic float bin(27) dcl 42 y_offset automatic float bin(27) dcl 42 NAMES DECLARED BY EXPLICIT CONTEXT. bad_mode 001645 constant label dcl 412 ref 383 388 393 398 403 405 changemode 001204 constant entry external dcl 328 close 001147 constant entry external dcl 319 compute_delay 004503 constant entry internal dcl 790 ref 501 774 draw_common 003751 constant label dcl 642 ref 635 640 draw_to 003744 constant entry internal dcl 637 ref 232 236 245 encode 004067 constant entry internal dcl 665 ref 650 656 erase 002755 constant entry external dcl 577 initialize_state 003707 constant entry internal dcl 307 ref 283 426 571 602 input 003245 constant entry external dcl 851 line_type 003064 constant entry external dcl 606 mode_switch 001656 constant entry external dcl 419 node_in 002707 constant entry external dcl 566 open_4002 000646 constant entry external dcl 258 open_4012 000574 constant entry external dcl 248 open_4014 000621 constant entry external dcl 253 open_4662 000673 constant entry external dcl 263 open_common 000743 constant label dcl 273 ref 251 256 261 266 271 open_rg512 000720 constant entry external dcl 268 pause 002460 constant entry external dcl 531 pos 000055 constant label array(48:52) dcl 230 ref 228 position 000427 constant entry external dcl 222 put_out 004531 constant entry internal dcl 804 ref 302 433 440 443 450 490 492 502 509 511 583 586 598 622 649 654 723 731 743 754 758 766 put_out_copy 004554 constant entry internal dcl 812 ref 503 599 775 query 003173 constant entry external dcl 823 revert_breakall 004577 constant entry internal dcl 911 ref 876 907 shift_to 003737 constant entry internal dcl 626 ref 230 240 244 449 487 527 573 tektronix_40XX_ 000413 constant entry external dcl 18 text 002046 constant entry external dcl 455 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 5604 5672 5144 5614 Length 6304 5144 66 376 437 2 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME tektronix_40XX_ 504 external procedure is an external procedure. initialize_state internal procedure shares stack frame of external procedure tektronix_40XX_. shift_to internal procedure shares stack frame of external procedure tektronix_40XX_. encode internal procedure shares stack frame of external procedure tektronix_40XX_. compute_delay internal procedure shares stack frame of external procedure tektronix_40XX_. put_out internal procedure shares stack frame of external procedure tektronix_40XX_. on unit on line 876 64 on unit revert_breakall 88 internal procedure is called by several nonquick procedures. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 system_free_ptr tektronix_40XX_ STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME tektronix_40XX_ 000100 accumulator tektronix_40XX_ 000101 alignment tektronix_40XX_ 000102 ch tektronix_40XX_ 000103 chars_read tektronix_40XX_ 000104 data_ptr_copy tektronix_40XX_ 000106 fixed_array tektronix_40XX_ 000107 float_array tektronix_40XX_ 000112 i tektronix_40XX_ 000113 j tektronix_40XX_ 000114 k tektronix_40XX_ 000115 input_buffer tektronix_40XX_ 000177 int_code tektronix_40XX_ 000200 line_type tektronix_40XX_ 000201 mode_string tektronix_40XX_ 000301 new_string_length tektronix_40XX_ 000302 original_pos tektronix_40XX_ 000304 output_ptr tektronix_40XX_ 000306 single_mode tektronix_40XX_ 000311 string_length tektronix_40XX_ 000312 string_origin tektronix_40XX_ 000313 temp_model_type tektronix_40XX_ 000314 temp_unvar_string tektronix_40XX_ 000324 temp_var_string tektronix_40XX_ 000335 text_string_length tektronix_40XX_ 000336 text_string_ptr tektronix_40XX_ 000340 tuvs_len tektronix_40XX_ 000342 xy_temp tektronix_40XX_ 000344 accumulator_bits tektronix_40XX_ 000345 term_info tektronix_40XX_ 000366 tek_input_format tektronix_40XX_ 000370 graphic_input_buffer tektronix_40XX_ 000372 chars_left tektronix_40XX_ 000373 chars_gotten tektronix_40XX_ 000374 buffer_ptr tektronix_40XX_ 000426 start_point shift_to 000430 end_point shift_to 000432 goto_start_point shift_to 000433 goto_end_point shift_to 000434 shifting shift_to 000444 base_char_count encode 000446 new_tek_coords encode 000450 onechar encode 000451 temp_lowy_char encode 000452 x_fromword encode 000453 y_fromword encode 000454 xy_diff encode 000456 vector_len_sq encode 000457 time encode 000460 k encode 000461 lowy_sent encode 000462 highy_sent encode 000463 extra_sent encode 000464 x_bits encode 000465 y_bits encode 000476 n compute_delay THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. fx1_to_fl2 r_l_a call_ext_out_desc call_ext_out call_int_this call_int_other return fl2_to_fx1 enable shorten_stack ext_entry ext_entry_desc int_entry fl2_to_fxscaled round_fx1 repeat set_cs_eis index_cs_eis sqrt alloc_based free_based THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. cv_dec_check_ get_system_free_area_ graphic_code_util_$decode_dpi graphic_code_util_$decode_scl graphic_code_util_$decode_spi graphic_code_util_$encode_scl graphic_gsp_utility_$clip_line graphic_gsp_utility_$clip_text ioa_$rsnnl ioa_$rsnpnnl iox_$control iox_$get_chars iox_$get_line iox_$look_iocb iox_$modes iox_$put_chars sub_err_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$bad_conversion error_table_$bad_mode graphic_error_table_$malformed_input graphic_error_table_$term_bad_effector graphic_error_table_$unimplemented_effector LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 18 000412 19 000420 222 000421 224 000447 226 000453 228 000502 230 000505 232 000507 233 000515 235 000516 236 000531 237 000533 239 000534 240 000547 241 000551 243 000552 244 000565 245 000567 246 000571 248 000572 250 000614 251 000616 253 000617 255 000641 256 000643 258 000644 260 000666 261 000670 263 000671 265 000713 266 000715 268 000716 270 000740 271 000742 273 000743 276 000745 277 000754 278 000762 280 000764 281 000766 283 000770 285 000771 286 001015 288 001020 290 001022 293 001055 294 001061 296 001065 297 001070 299 001077 300 001102 302 001131 305 001144 319 001145 321 001167 323 001173 324 001174 325 001176 326 001201 328 001202 330 001224 334 001230 346 001316 348 001324 349 001330 350 001340 352 001353 353 001356 355 001376 356 001411 359 001420 360 001424 361 001452 362 001455 363 001460 365 001461 366 001463 368 001466 371 001471 376 001472 377 001476 379 001505 381 001521 383 001523 385 001526 386 001530 388 001531 393 001547 398 001565 400 001600 403 001625 405 001630 407 001637 408 001644 412 001645 413 001651 415 001652 417 001653 419 001654 421 001676 423 001702 425 001703 426 001706 428 001707 429 001713 433 001742 435 001755 437 001756 438 001761 440 002010 441 002023 443 002024 447 002032 448 002034 449 002036 450 002040 453 002043 455 002044 457 002066 459 002072 461 002073 462 002122 464 002124 465 002154 466 002156 468 002160 469 002166 471 002170 476 002237 480 002241 481 002247 483 002251 485 002255 486 002273 487 002306 490 002310 492 002322 495 002340 497 002353 498 002360 499 002363 501 002367 502 002404 503 002407 507 002413 509 002416 511 002431 514 002441 519 002443 523 002450 527 002453 529 002455 531 002456 533 002500 535 002504 539 002507 541 002537 543 002543 545 002566 548 002571 550 002616 552 002621 556 002625 558 002655 560 002661 564 002704 566 002705 568 002727 570 002733 571 002734 572 002735 573 002746 574 002750 575 002752 577 002753 579 002775 581 003001 583 003002 586 003020 598 003035 599 003047 602 003060 604 003061 606 003062 608 003104 610 003110 612 003111 617 003120 619 003147 620 003151 622 003154 624 003170 823 003171 825 003213 827 003217 835 003224 836 003227 839 003230 840 003235 841 003240 848 003241 849 003242 851 003243 869 003265 873 003271 876 003325 878 003347 882 003400 885 003423 892 003426 893 003430 894 003431 896 003443 897 003445 899 003451 901 003472 903 003475 904 003477 905 003501 907 003502 919 003506 921 003507 924 003512 927 003547 928 003554 931 003566 932 003572 934 003573 936 003575 937 003602 938 003603 940 003607 943 003612 944 003614 945 003626 947 003630 949 003632 951 003635 952 003640 953 003643 954 003646 955 003651 957 003654 959 003703 961 003706 307 003707 308 003710 309 003722 310 003724 314 003731 315 003734 317 003736 626 003737 634 003741 635 003743 637 003744 639 003746 640 003750 642 003751 648 004000 649 004003 650 004015 653 004026 654 004031 656 004046 659 004057 660 004066 665 004067 699 004071 701 004073 706 004120 707 004123 708 004125 709 004127 710 004131 712 004133 719 004224 720 004230 721 004236 722 004242 723 004244 724 004247 727 004253 728 004256 729 004270 730 004274 731 004276 732 004301 736 004305 737 004313 739 004316 742 004327 743 004331 744 004334 747 004340 750 004345 751 004350 752 004356 753 004362 754 004364 755 004367 758 004371 759 004374 762 004400 765 004405 766 004413 768 004416 769 004422 770 004440 771 004457 774 004470 775 004476 780 004502 790 004503 798 004505 799 004520 800 004524 801 004526 804 004531 808 004542 809 004552 810 004553 812 004554 817 004556 818 004573 819 004575 911 004576 913 004604 915 004637 ----------------------------------------------------------- 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