COMPILATION LISTING OF SEGMENT apl_display_saved_ws Compiled by: Experimental PL/I Compiler of Friday, July 31, 1981 at 13:16 Compiled at: Honeywell LISD Phoenix, System M Compiled on: 08/08/81 1947.8 mst Sat Options: optimize map 1 /* ****************************************************** 2* * * 3* * * 4* * Copyright (c) 1972 by Massachusetts Institute of * 5* * Technology and Honeywell Information Systems, Inc. * 6* * * 7* * * 8* ****************************************************** */ 9 10 /* Program to symbolically dump a saved Version 2 APL workspace. */ 11 /* PG 740126 12* Modified 740626 by PG to print bead info. 13* Modified 741031 by PG to print stack info. 14* Modified 750404 b y PG to correctly print value beads 15* Modified 771003 by PG to change program name and print a little more info 16* Modified 790328 by PG to use iox_ and clock builtin. 17**/ 18 19 apl_display_saved_ws: 20 adsw: 21 procedure; 22 23 /* entries */ 24 25 declare (ioa_, ioa_$nnl) entry options (variable), 26 cu_$arg_ptr entry (fixed bin, ptr, fixed bin (20), fixed bin (35)), 27 com_err_ entry options (variable), 28 date_time_ entry (fixed bin (71), char (*)), 29 expand_pathname_$add_suffix 30 entry (char (*), char (*), char (*), char (*), fixed bin (35)), 31 hcs_$initiate_count entry (char (*), char (*), char (*), fixed bin (24), fixed bin (2), ptr, fixed bin (35)), 32 hcs_$terminate_noname 33 entry (ptr, fixed bin (35)), 34 iox_$put_chars entry (ptr, ptr, fixed bin (21), fixed bin (35)); 35 36 /* automatic */ 37 38 declare argument_pointer ptr, 39 argument_length fixed bin (20), 40 bead_index fixed bin, 41 code fixed bin (35), 42 data_elements fixed bin (21), 43 directory_name char (168), 44 entry_name char (32), 45 bitcount fixed bin (24), 46 date_string char (24), 47 ws_ptr (0:63) ptr aligned, 48 n fixed bin (21), 49 p ptr; 50 51 /* external static */ 52 53 declare iox_$user_output ptr external static; 54 55 /* internal static initial */ 56 57 declare my_name char (20) internal static options (constant) initial ("apl_display_saved_ws"); 58 declare value_name (0:5) char (9) internal static 59 initial ("Unknown", "Boolean", "Integral", "Numeric", "Character", "List"); 60 declare frame_name (5) char (10) aligned internal static options (constant) 61 initial ("SUSPENDED", "FUNCTION", "EVALUATED", "EXECUTE", "SAVE"); 62 declare save_frame_type fixed bin internal static initial (5); 63 64 /* based */ 65 66 declare argument char (argument_length) based (argument_pointer), 67 based_fixed_bin fixed bin based, 68 varying_string char (n) varying based; 69 70 /* builtins */ 71 72 declare (addr, addrel, baseno, clock, divide, fixed, hbound, index, lbound, length, min, null, pointer, ptr, rel, reverse, 73 string) builtin; 74 75 /* include files */ 76 1 1 /* ====== BEGIN INCLUDE SEGMENT apl_number_data.incl.pl1 ================================== */ 1 2 1 3 /* 1 4* This include file contains information about the machine representation of numbers. 1 5* In all programs numbers should simply be declared 'float'. 1 6* All default statements should be in this include file. 1 7* 1 8* This is the binary version. The manifest constant Binary should be used by programs 1 9* that need to know whether we are using binary or decimal. 1 10* */ 1 11 1 12 /* format: style3,initlm0,idind30 */ 1 13 1 14 default (float & ^decimal & ^binary & ^precision & ^constant) float binary (63); 1 15 1 16 declare ( 1 17 TheBiggestNumberWeveGot float initial (0.1701411834604692317e+39), 1 18 TheSmallestNumberWeveGot float initial (.1469367938527859385e-38), 1 19 Binary bit (1) aligned initial ("1"b) 1 20 ) internal static options (constant); 1 21 1 22 /* Number of characters in a number datum entry; used for copying float number arrays as strings. 1 23* (Obsolete! use array copies!) */ 1 24 1 25 declare NumberSize fixed binary precision (4) internal static initial (8); 1 26 1 27 /* ------ END INCLUDE SEGMENT apl_number_data.incl.pl1 ---------------------------------- */ 77 2 1 /* ====== BEGIN INCLUDE SEGMENT apl_bead_format.incl.pl1 ================================== */ 2 2 2 3 declare 1 general_bead aligned based, /* The Venerable Bead */ 2 4 2 type unaligned, 2 5 3 bead_type unaligned, 2 6 4 operator bit (1), /* ON if operator bead */ 2 7 4 symbol bit (1), /* ON if symbol bead */ 2 8 4 value bit (1), /* ON if value bead */ 2 9 4 function bit (1), /* ON if function bead */ 2 10 4 group bit (1), /* ON if group bead */ 2 11 4 label bit (1), /* ON if label bead */ 2 12 4 shared_variable bit (1), /* ON if shared variable bead */ 2 13 4 lexed_function bit (1), /* ON if lexed function bead */ 2 14 3 data_type unaligned, 2 15 4 list_value bit (1), /* ON if a list value bead */ 2 16 4 character_value bit (1), /* ON if a character value bead */ 2 17 4 numeric_value bit (1), /* ON if a numeric value bead */ 2 18 4 integral_value bit (1), /* ON if an integral value bead */ 2 19 4 zero_or_one_value bit (1), /* ON if a boolean value bead */ 2 20 4 complex_value bit (1), /* ON if a complex, numeric value bead */ 2 21 3 unused_bits bit (4) unaligned, /* pad to 18 bits (for future use) */ 2 22 2 size bit (18) unaligned, /* Number of words this bead occupies 2 23* (used by bead storage manager) */ 2 24 2 reference_count fixed binary (29); /* Number of pointers which point 2 25* to this bead (used by bead manager) */ 2 26 2 27 2 28 /* constant strings for initing type field in various beads */ 2 29 2 30 declare ( 2 31 operator_type init("100000000000000000"b), 2 32 symbol_type init("010000000000000000"b), 2 33 value_type init("001000000000000000"b), 2 34 function_type init("000100000000000000"b), 2 35 group_type init("000010000000000000"b), 2 36 label_type init("001001000011000000"b), 2 37 shared_variable_type init("001000100000000000"b), 2 38 lexed_function_type init("000000010000000000"b), 2 39 2 40 list_value_type init("000000001000000000"b), 2 41 character_value_type init("001000000100000000"b), 2 42 numeric_value_type init("001000000010000000"b), 2 43 integral_value_type init("001000000011000000"b), 2 44 zero_or_one_value_type init("001000000011100000"b), 2 45 complex_value_type init("001000000000010000"b), 2 46 2 47 not_integer_mask init("111111111110011111"b), /* to clear integral, zero_or_one bits */ 2 48 not_zero_or_one_mask init("111111111111011111"b) /* to clear zero_or_one bit */ 2 49 ) bit(18) internal static; 2 50 2 51 /* ------ END INCLUDE SEGMENT apl_bead_format.incl.pl1 ---------------------------------- */ 78 3 1 /* ====== BEGIN INCLUDE SEGMENT apl_value_bead.incl.pl1 =================================== */ 3 2 3 3 declare 3 4 number_of_dimensions fixed bin, 3 5 3 6 1 value_bead aligned based, 3 7 2 header aligned like general_bead, 3 8 2 total_data_elements fixed binary (21), /* length of ,[value] in APL */ 3 9 2 rhorho fixed binary, /* number of dimensions of value */ 3 10 2 data_pointer pointer unaligned, /* packed pointer to the data in value */ 3 11 2 rho fixed binary (21) dimension (number_of_dimensions refer (value_bead.rhorho)); 3 12 /* dimensions of value (zero-origin) */ 3 13 3 14 3 15 declare 1 character_data_structure aligned based, /* alignment trick for PL/I compiler */ 3 16 2 character_datum character (1) unaligned dimension (0:data_elements - 1); 3 17 /* actual elements of character array */ 3 18 3 19 declare character_string_overlay character (data_elements) aligned based; 3 20 /* to overlay on above structure */ 3 21 3 22 3 23 declare numeric_datum float aligned dimension (0:data_elements - 1) based; 3 24 /* actual elements of numeric array */ 3 25 3 26 declare complex_datum complex float aligned dimension (0:data_elements -1) based; 3 27 3 28 declare MAX_VALUE_BEAD_SIZE fixed bin (19) init (261120) int static options (constant); 3 29 3 30 /* ------ END INCLUDE SEGMENT apl_value_bead.incl.pl1 ----------------------------------- */ 79 4 1 /* ====== BEGIN INCLUDE SEGMENT apl_symbol_bead.incl.pl1 ================================== */ 4 2 4 3 /* Explanation of fields: 4 4* symbol_bead.hash_link_pointer points to next symbol in same hash bucket in the symbol table. 4 5* symbol_bead.meaning_pointer points to current "value" of this name: 4 6* = null => unused (e.g. undefined variable) 4 7* -> group bead => group name 4 8* -> value bead => variable with a value 4 9* -> function bead => function name 4 10* -> label bead => localized label value 4 11* -> shared var bead => shared variable */ 4 12 4 13 declare 1 symbol_bead aligned based, 4 14 2 header aligned like general_bead, 4 15 2 hash_link_pointer pointer unaligned, 4 16 2 meaning_pointer pointer unaligned, 4 17 2 name_length fixed binary, 4 18 2 name character (0 refer (symbol_bead.name_length)) unaligned; 4 19 4 20 /* ------ END INCLUDE SEGMENT apl_symbol_bead.incl.pl1 ---------------------------------- */ 80 5 1 /* ====== BEGIN INCLUDE SEGMENT apl_operator_bead.incl.pl1 ================================ */ 5 2 5 3 declare 5 4 1 operator_bead aligned based, 5 5 5 6 2 type unaligned like general_bead.type, 5 7 5 8 2 bits_for_lex unaligned, 5 9 3 allow_brackets bit(1), /* operator may have dimension info in brackets */ 5 10 3 allow_product bit(1), /* operator may be used in inner and outer product */ 5 11 3 allow_reduction bit(1), /* operator may be used in reduction and scan */ 5 12 3 special_assignment bit(1), /* doesn't use standard assignment operator */ 5 13 3 ignores_assignment bit(1), /* assignment has no effect */ 5 14 3 allow_subscripted_assignment 5 15 bit(1), /* system variable that can be subscripted assigned */ 5 16 3 pad bit(12), 5 17 5 18 2 bits_for_parse unaligned, 5 19 3 stop_trace_control bit(1), /* next lexeme is function being stopped/traced 5 20* (op1 tells which) */ 5 21 3 quad bit(1), /* this is a quad type */ 5 22 3 system_variable bit(1), /* this is a system variable, not an op */ 5 23 3 dyadic bit(1), /* operator may be dyadic */ 5 24 3 monadic bit(1), /* operator may be monadic */ 5 25 3 function bit(1), /* operator is a user defined function */ 5 26 3 semantics_valid bit(1), /* if semantics has been set */ 5 27 3 has_list bit(1), /* semantics is a list */ 5 28 3 inner_product bit(1), /* op2 is valid */ 5 29 3 semantics_on_stack bit(1), /* semantics points to value stack */ 5 30 3 is_external_function bit(1), /* semantics points to function bead for ext function */ 5 31 3 pad bit(7), 5 32 3 op2 fixed bin(8) unaligned, /* secondary operator code */ 5 33 3 op1 fixed bin(8) unaligned, /* primary operator code */ 5 34 2 type_code fixed bin; /* for parse */ 5 35 5 36 /* ------ END INCLUDE SEGMENT apl_operator_bead.incl.pl1 -------------------------------- */ 81 6 1 /* ====== BEGIN INCLUDE SEGMENT apl_ws_info.incl.pl1 ====================================== */ 6 2 6 3 /* This structure contains all of the global data (or pointers to it) for the APL subsystem */ 6 4 6 5 /* automatic */ 6 6 6 7 declare ws_info_ptr ptr initial (apl_static_$ws_info_ptr.static_ws_info_ptr); 6 8 6 9 /* external static */ 6 10 6 11 declare 1 apl_static_$ws_info_ptr external static aligned structure, 6 12 2 static_ws_info_ptr unaligned pointer; 6 13 6 14 /* based */ 6 15 6 16 declare 1 ws_info aligned based (ws_info_ptr), 6 17 2 version_number fixed bin, /* version of this structure (3) */ 6 18 2 switches unaligned, /* mainly ws parameters */ 6 19 3 long_error_mode bit, /* if 1, long Multics format, else APL/360 format */ 6 20 3 debug_mode bit, /* if 1, system error causes escape to command level */ 6 21 3 canonicalize_mode bit, /* if 1, the editor canonicalizes user input */ 6 22 3 restrict_exec_command bit, /* if 1, the )EXEC command may not be used */ 6 23 3 restrict_debug_command bit, /* if 1, the )DEBUG command may not be used */ 6 24 3 restrict_external_functions 6 25 bit, /* if 1, the )ZFN, )MFN, and )DFN commands may not be used */ 6 26 3 restrict_load bit, /* if 1, the )LOAD and )COPY commands may not be used */ 6 27 3 restrict_load_directory bit, /* if 1, no directory allowed in )LOAD or )COPY pathnames */ 6 28 3 restrict_save bit, /* if 1, the )SAVE command may not be used */ 6 29 3 restrict_save_directory bit, /* if 1, no directory allowed in )SAVE pathnames */ 6 30 3 off_hold bit, /* if 1, )OFF HOLD was typed, else just )OFF */ 6 31 3 transparent_to_signals bit, /* if 1, any conditions slip right past APL */ 6 32 3 meter_mode bit, /* if 1, metering may be done, else speed is all-important */ 6 33 3 restrict_msg_command bit, /* if 1, the )MSG command may not be used. */ 6 34 3 compatibility_check_mode 6 35 bit, /* if 1, check for incompatible operators */ 6 36 3 no_quit_handler bit, /* if 1, do not trap QUITs. */ 6 37 /* remaining 20 bits not presently used */ 6 38 6 39 2 values, /* attributes of the workspace */ 6 40 3 digits fixed bin, /* number of digits of precision printed on output */ 6 41 3 width fixed bin, /* line length for formatted output */ 6 42 3 index_origin fixed bin, /* the index origin (0 or 1) */ 6 43 3 random_link fixed bin(35), /* seed for random number generator */ 6 44 3 fuzz float, /* comparison tolerance (relative fuzz) */ 6 45 3 float_index_origin float, /* the index origin in floating point */ 6 46 3 number_of_symbols fixed bin, /* the number of symbol_beads currently in existence */ 6 47 3 maximum_value_stack_size 6 48 fixed bin (18), /* maximum number of words in one segment of value stack */ 6 49 6 50 2 pointers, /* pointers to various internal tables */ 6 51 3 symbol_table_ptr unaligned pointer, /* -> symbol_table (apl_symbol_table.incl.pl1) */ 6 52 3 current_parse_frame_ptr unaligned pointer, /* -> topmost parse frame */ 6 53 3 value_stack_ptr unaligned pointer, /* -> next free location on value stack */ 6 54 3 alloc_free_info_ptr unaligned pointer, /* -> apl_storage_mngr_ data (apl_storage_system_data.incl.pl1) */ 6 55 6 56 2 time_invoked fixed bin(71), /* clock time that APL was entered */ 6 57 2 integer_fuzz float, /* the absolute fuzz used in checking for integers */ 6 58 2 user_number fixed bin(35), /* number under which the user is signed on */ 6 59 2 latent_expression unaligned pointer, /* -> value_bead for QuadLX */ 6 60 2 lock char(32), /* the lock currently set on this workspace (password) */ 6 61 2 wsid char(100), /* the workspace identification: name, number name, or clear ws */ 6 62 2 last_error_code fixed bin(35), /* last code passed to apl_error_ */ 6 63 2 signoff_lock character (32), 6 64 6 65 2 interrupt_info aligned, /* bits used by apl_interpreter_ to tell when to abort */ 6 66 3 dont_interrupt_parse bit, /* if 1, don't do a dirty stop because the parser is running */ 6 67 3 dont_interrupt_operator bit, /* if 1, don't do a dirty stop because an operator is running */ 6 68 3 dont_interrupt_storage_manager /* if 1, don't stop because apl_storage_mngr_ is */ 6 69 bit, /* munging his tables */ 6 70 3 unused_interrupt_bit bit, /* not presently used */ 6 71 3 dont_interrupt_command bit, 6 72 3 can_be_interrupted bit, /* if 1, OK to do a clean stop (we are between lines, reading) */ 6 73 3 clean_interrupt_pending bit, /* interrupt occured, break cleanly (between lines) */ 6 74 3 dirty_interrupt_pending bit, /* interrupt occured, break as soon as not inhibited */ 6 75 6 76 2 user_name char (32), /* process group id of user */ 6 77 2 immediate_input_prompt char (32) varying, /* normal input */ 6 78 2 evaluated_input_prompt char (32) varying, /* quad input */ 6 79 2 character_input_prompt char (32) varying, /* quad-quote input */ 6 80 2 vcpu_time aligned, 6 81 3 total fixed bin (71), 6 82 3 setup fixed bin (71), 6 83 3 parse fixed bin (71), 6 84 3 lex fixed bin (71), 6 85 3 operator fixed bin (71), 6 86 3 storage_manager fixed bin (71), 6 87 2 output_info aligned, /* data pertaining to output buffer */ 6 88 3 output_buffer_ptr unal ptr, /* ptr to output buffer */ 6 89 3 output_buffer_len fixed bin (21), /* length (bytes) of output buffer */ 6 90 3 output_buffer_pos fixed bin (21), /* index of next byte to write in */ 6 91 3 output_buffer_ll fixed bin (21), /* print positions used up so far */ 6 92 2 tab_width fixed bin (21); /* number of columns a tabs moves cursor */ 6 93 6 94 declare output_buffer char (ws_info.output_buffer_len) based (ws_info.output_buffer_ptr); 6 95 6 96 /* internal static */ 6 97 6 98 declare max_parse_stack_depth fixed bin int static init(64536); 6 99 6 100 /* ------ END INCLUDE SEGMENT apl_ws_info.incl.pl1 -------------------------------------- */ 82 7 1 /* ====== BEGIN INCLUDE SEGMENT apl_saved_ws.incl.pl1 ===================================== */ 7 2 7 3 /* This include file describes the format of a saved workspace. */ 7 4 7 5 /* all packed pointer items are "pseudo-pointers" to other data items within the saved ws, identifying 7 6* the component and word offset within the MSF. 7 7* all fixed binary (21) items are "bead numbers", representing indicies into the bead_description_table. */ 7 8 7 9 declare current_save_version fixed binary internal static initial (4), 7 10 saved_ws_info_pointer pointer; 7 11 7 12 declare 1 saved_ws_info aligned based (saved_ws_info_pointer), 7 13 2 save_version fixed binary, /* Version number of this declaration. */ 7 14 2 highest_segment fixed binary, /* number of internal segments in ws. */ 7 15 2 bead_table_pointer pointer unaligned, /* pointer to bead_description_table */ 7 16 2 total_beads fixed binary (24), /* size of bead_description_table */ 7 17 2 padding fixed binary (35) dimension (4), /* reserved just in case. */ 7 18 2 other_ws_info aligned, 7 19 3 digits fixed bin, 7 20 3 width fixed bin, 7 21 3 index_origin fixed bin, 7 22 3 random_link fixed bin (35), 7 23 3 fuzz float, 7 24 3 float_index_origin float, 7 25 3 number_of_symbols fixed bin, 7 26 3 current_parse_frame_ptr pointer unaligned, 7 27 3 time_saved fixed binary (71), 7 28 3 integer_fuzz float, 7 29 3 user_number fixed bin (35), 7 30 3 latent_expression fixed bin (21), /* bead number of latent expression */ 7 31 3 lock char (32), 7 32 3 wsid char (100), 7 33 3 user_name char (32); 7 34 7 35 declare saved_bead_count fixed bin, 7 36 bead_description_pointer pointer; 7 37 7 38 declare 1 bead_description_table aligned based (bead_description_pointer) dimension (saved_bead_count), 7 39 2 bead_pointer pointer unaligned; /* pseudo pointer to bead */ 7 40 7 41 declare saved_bead_pointer pointer, 7 42 (symbol_name_length, total_members) fixed binary; 7 43 7 44 declare 1 saved_general_bead aligned based (saved_bead_pointer), 7 45 2 type unaligned like general_bead.type, 7 46 2 size unaligned bit (18); /* N.B.: this is the # of words in the original bead, */ 7 47 /* not the saved bead. */ 7 48 7 49 declare 1 saved_value_bead aligned based (saved_bead_pointer), 7 50 2 header aligned like saved_general_bead, 7 51 2 total_data_elements fixed binary (21), 7 52 2 rhorho fixed binary, 7 53 2 data_pointer unaligned pointer, 7 54 2 rho fixed binary (21) dimension (number_of_dimensions refer (saved_value_bead.rhorho)); 7 55 7 56 declare saved_boolean_datum bit (data_elements) aligned based; 7 57 7 58 7 59 declare 1 saved_sb aligned based (saved_bead_pointer), 7 60 2 header aligned like saved_general_bead, 7 61 2 meaning_pointer fixed binary (21), 7 62 2 name_length fixed binary, 7 63 2 name character (symbol_name_length refer (saved_sb.name_length)) unaligned; 7 64 7 65 7 66 7 67 declare 1 saved_lb aligned based (saved_bead_pointer), 7 68 2 header aligned like saved_general_bead, 7 69 2 number_of_members fixed bin, 7 70 2 members dim (total_members refer (saved_lb.number_of_members)) aligned, 7 71 3 member_ptr fixed binary (21), 7 72 3 bits unaligned like operator_bead.bits_for_parse; 7 73 7 74 7 75 7 76 declare 1 saved_gb aligned based (saved_bead_pointer), 7 77 2 header aligned like saved_general_bead, 7 78 2 number_of_members fixed binary, 7 79 2 member fixed binary (21) dimension (total_members refer (saved_gb.number_of_members)); 7 80 7 81 7 82 declare 1 saved_fb aligned based (saved_bead_pointer), 7 83 2 header aligned like saved_general_bead, 7 84 2 class fixed bin, 7 85 2 stop_control_pointer fixed bin (21), 7 86 2 trace_control_pointer fixed bin (21), 7 87 2 text_length fixed bin, 7 88 2 text aligned char (data_elements refer (saved_fb.text_length)); 7 89 7 90 declare (saved_frame_pointer, saved_reductions_pointer) pointer; 7 91 7 92 declare 7 93 1 saved_pf based(saved_frame_pointer) aligned, 7 94 2 last_parse_frame_ptr ptr unaligned, /* pseudo-pointer to last parse frame, or null */ 7 95 2 parse_frame_type fixed bin, 7 96 2 function_bead_ptr fixed bin (21), /* pseudo-pointer to function bead */ 7 97 2 current_parseme unal fixed bin (17), 7 98 2 current_lexeme unal fixed bin (17), 7 99 2 current_line_number unal fixed bin (17), 7 100 2 return_point unal fixed bin (17), 7 101 2 put_result unal fixed bin (17), 7 102 2 print_final_value unal bit, 7 103 2 re_lex_source unal bit, /* if 1, re-lex the source for this frame */ 7 104 2 pad unal bit (16), 7 105 2 number_of_ptrs fixed bin, 7 106 2 old_meaning_ptrs dim (number_of_ptrs refer (saved_pf.number_of_ptrs)) fixed bin (21); 7 107 /* old meanings for local variables */ 7 108 7 109 declare 7 110 1 v3_saved_pf based (saved_frame_pointer) aligned, 7 111 2 last_parse_frame_ptr ptr unaligned, /* pseudo-pointer to last parse frame, or null */ 7 112 2 parse_frame_type fixed bin, 7 113 2 function_bead_ptr fixed bin (21), /* pseudo-pointer to function bead */ 7 114 2 current_parseme unal fixed bin (17), 7 115 2 current_lexeme unal fixed bin (17), 7 116 2 current_line_number unal fixed bin (17), 7 117 2 return_point unal fixed bin (17), 7 118 2 put_result unal fixed bin (17), 7 119 2 print_final_value unal bit, 7 120 2 re_lex_source unal bit, /* if 1, re-lex the source for this frame */ 7 121 2 pad unal bit (16), 7 122 2 old_meaning_ptrs dim (number_of_ptrs) fixed bin (21); 7 123 /* old meanings for local variables */ 7 124 7 125 declare 7 126 1 saved_rs dim(1000) aligned based(saved_reductions_pointer), 7 127 2 type fixed bin, /* type of parseme */ 7 128 2 bits unaligned like operator_bead.bits_for_parse, 7 129 2 semantics fixed bin (21), /* pseudo-pointer */ 7 130 2 lexeme fixed bin, 7 131 7 132 1 saved_rs_for_op dim(1000) aligned based(saved_reductions_pointer), 7 133 2 type fixed bin, 7 134 2 bits unaligned like operator_bead.bits_for_parse, 7 135 2 semantics fixed bin, 7 136 2 lexeme fixed bin; 7 137 7 138 7 139 declare 1 saved_sf aligned based (saved_frame_pointer), 7 140 2 last_frame_pointer pointer unaligned, /* pointer to last parse frame, or null */ 7 141 2 frame_type fixed binary, /* = save_frame_type */ 7 142 2 saved_symbol_count fixed binary (29), 7 143 2 symbol_list aligned dimension (total_symbols refer (saved_sf.saved_symbol_count)), 7 144 3 symbol_pointer fixed binary (21), /* bead number of each symbol bead */ 7 145 3 saved_meaning_pointer fixed binary (21); /* bead number of meaning at the time frame is created */ 7 146 7 147 /* ------ END INCLUDE SEGMENT apl_saved_ws.incl.pl1 ------------------------------------- */ 83 84 85 call cu_$arg_ptr (1, argument_pointer, argument_length, code); 86 if code ^= 0 87 then do; 88 call com_err_ (code, my_name, "Usage: ^a pathname", my_name); 89 return; 90 end; 91 92 call expand_pathname_$add_suffix (argument, "sv.apl", directory_name, entry_name, code); 93 if code ^= 0 94 then do; 95 call com_err_ (code, my_name, "^a", argument); 96 return; 97 end; 98 99 call hcs_$initiate_count (directory_name, entry_name, "", bitcount, 0, saved_ws_info_pointer, code); 100 if saved_ws_info_pointer = null 101 then do; 102 call com_err_ (code, my_name, "^a>^a", directory_name, entry_name); 103 return; 104 end; 105 106 ws_ptr (0) = saved_ws_info_pointer; 107 108 call date_time_ (clock (), date_string); 109 110 call ioa_ ("^/^-^a>^a^-^a^/", directory_name, entry_name, date_string); 111 112 call date_time_ (saved_ws_info.time_saved, date_string); 113 114 call ioa_ ("workspace:^-^a^/saved by:^2-^a^/saved on:^2-^a^/lock:^2-^a^/user number:^-^5d", saved_ws_info.wsid, 115 saved_ws_info.user_name, date_string, saved_ws_info.lock, saved_ws_info.user_number); 116 117 call ioa_ ("version:^2-^5d^/components:^-^5d^/size in words:^-^5d", saved_ws_info.save_version, 118 saved_ws_info.highest_segment + 1, divide (bitcount + 35, 36, 24, 0)); 119 120 call ioa_ ("digits:^2-^5d^/width:^2-^5d^/origin:^2-^5d^/float_origin:^-^e^/link:^-^15d^/fuzz:^2-^e", 121 saved_ws_info.digits, saved_ws_info.width, saved_ws_info.index_origin, saved_ws_info.float_index_origin, 122 saved_ws_info.random_link, saved_ws_info.fuzz); 123 124 call ioa_ ("integer fuzz:^-^e", saved_ws_info.integer_fuzz); 125 126 call ioa_ ("latent expression:^-bead ^d", saved_ws_info.latent_expression); 127 128 call ioa_ ("number of symbols:^-^5d^/number of beads:^-^5d", saved_ws_info.number_of_symbols, 129 saved_ws_info.total_beads); 130 131 /* print bead information */ 132 133 saved_bead_count = saved_ws_info.total_beads; 134 bead_description_pointer = pointer (saved_ws_info_pointer, rel (saved_ws_info.bead_table_pointer)); 135 136 do bead_index = lbound (bead_description_table (*), 1) to hbound (bead_description_table (*), 1); 137 call display_bead (bead_index, bead_pointer (bead_index)); 138 end; 139 140 /* print stack information */ 141 142 do saved_frame_pointer = un_pseudo_pointer (saved_ws_info.current_parse_frame_ptr) 143 repeat un_pseudo_pointer (saved_pf.last_parse_frame_ptr) while (saved_frame_pointer ^= null); 144 call ioa_ ("^/^a FRAME at ^6.3b", frame_name (saved_pf.parse_frame_type), rel (saved_frame_pointer)); 145 146 if saved_pf.parse_frame_type = save_frame_type 147 then do; 148 call ioa_ ("saved_symbol_count = ^d", saved_sf.saved_symbol_count); 149 call ioa_ ("Symbol Meaning"); 150 do bead_index = lbound (saved_sf.symbol_list, 1) to hbound (saved_sf.symbol_list, 1); 151 call ioa_ ("^6d^3x^6d", saved_sf.symbol_list (bead_index).symbol_pointer, 152 saved_sf.symbol_list (bead_index).saved_meaning_pointer); 153 end; 154 go to frame_type (5); 155 end; 156 157 call ioa_ ("function_bead_ptr = ^d", saved_pf.function_bead_ptr); 158 call ioa_ ("current_parseme = ^d", saved_pf.current_parseme); 159 call ioa_ ("current_lexeme = ^d", saved_pf.current_lexeme); 160 call ioa_ ("current_line_number = ^d", saved_pf.current_line_number); 161 call ioa_ ("return_point = ^d", saved_pf.return_point); 162 call ioa_ ("put_result = ^d", saved_pf.put_result); 163 call ioa_ ("print_final_value = ""^1b""b", saved_pf.print_final_value); 164 165 go to frame_type (saved_pf.parse_frame_type); 166 167 frame_type (1): /* suspended frame */ 168 frame_type (3): /* evaluated frame */ 169 if saved_ws_info.save_version = 3 170 then p = addr (v3_saved_pf.old_meaning_ptrs (1)); 171 else p = addr (saved_pf.old_meaning_ptrs (1)); 172 173 n = length (p -> varying_string); 174 call ioa_ ("re-lex source = ""^1b""b", saved_pf.re_lex_source); 175 call ioa_ ("Source: ^a", p -> varying_string); 176 go to end_loop; 177 178 frame_type (2): /* function frame */ 179 if saved_ws_info.save_version > 3 180 then do; /* can print old meanings */ 181 call ioa_ ("number_of_ptrs = ^d", saved_pf.number_of_ptrs); 182 do bead_index = 1 to saved_pf.number_of_ptrs; 183 call ioa_ ("old(^d) = ^d", bead_index, saved_pf.old_meaning_ptrs (bead_index)); 184 end; 185 end; 186 go to end_loop; 187 188 frame_type (4): /* execute frame */ 189 go to end_loop; 190 191 frame_type (5): /* save frame */ 192 go to end_loop; 193 194 end_loop: 195 end; 196 197 call hcs_$terminate_noname (saved_ws_info_pointer, code); 198 199 return; 200 201 un_pseudo_pointer: 202 procedure (bv_pseudo_pointer) returns (ptr); 203 204 /* parameters */ 205 206 declare bv_pseudo_pointer ptr unaligned; 207 208 /* program */ 209 210 if bv_pseudo_pointer = null 211 then return (null); 212 else return (addrel (ws_ptr (fixed (baseno (bv_pseudo_pointer), 18, 0)), rel (bv_pseudo_pointer))); 213 214 end un_pseudo_pointer; 215 216 display_bead: 217 procedure (bv_bead_index, bv_bead_pointer); 218 219 /* parameters */ 220 221 declare ( 222 bv_bead_index fixed bin, 223 bv_bead_pointer ptr unaligned 224 ) parameter; 225 226 /* automatic */ 227 228 declare i fixed bin, 229 more bit (1) aligned, 230 p ptr; 231 232 /* program */ 233 234 saved_bead_pointer = un_pseudo_pointer (bv_bead_pointer); 235 236 call ioa_ ("^/BEAD ^d at ^6.3b, size = ^dd, ^oo", bv_bead_index, rel (bv_bead_pointer), 237 fixed (saved_general_bead.size), fixed (saved_general_bead.size)); 238 239 go to type (index (string (saved_general_bead.bead_type), "1"b)); 240 241 type (0): 242 type (1): /* operator */ 243 type (6): /* label */ 244 type (7): /* shared variable */ 245 type (8): /* lexed function */ 246 call ioa_ ("Impossible type! header = ^w", saved_bead_pointer -> based_fixed_bin); 247 return; 248 249 type (2): /* symbol */ 250 call ioa_ ("Symbol '^a'", saved_sb.name); 251 252 if saved_sb.meaning_pointer ^= 0 253 then call ioa_ ("meaning is bead ^d", saved_sb.meaning_pointer); 254 255 return; 256 257 type (3): /* value */ 258 data_elements = saved_value_bead.total_data_elements; 259 i = index (reverse (string (saved_value_bead.data_type)), "1"b); 260 call ioa_ ("^a value: total_data_elements = ^d, rhorho = ^d, data_pointer = ^w", (value_name (i)), data_elements, 261 saved_value_bead.rhorho, saved_value_bead.data_pointer); 262 263 if saved_value_bead.rhorho > 0 264 then do i = 0 by 1 while (i < saved_value_bead.rhorho); 265 call ioa_ ("rho(^d) = ^d", i + 1, saved_value_bead.rho (i + 1)); 266 end; 267 268 if data_elements = 0 269 then return; 270 271 p = ptr (saved_bead_pointer, rel (saved_value_bead.data_pointer)); 272 273 more = "0"b; 274 275 if saved_value_bead.character_value 276 then do; 277 call iox_$put_chars (iox_$user_output, p, min (70, data_elements), code); 278 call ioa_ (""); 279 if data_elements > 70 280 then more = "1"b; 281 end; 282 else if saved_value_bead.zero_or_one_value 283 then do; 284 if data_elements > 70 285 then do; 286 data_elements = 70; 287 more = "1"b; 288 end; 289 290 call ioa_ ("""^vb""b", data_elements, p -> saved_boolean_datum); 291 end; 292 else do; 293 if data_elements > 4 294 then do; 295 data_elements = 4; 296 more = "1"b; 297 end; 298 299 do i = 0 by 1 while (i < data_elements); 300 call ioa_ ("^19e", p -> numeric_datum (i)); 301 end; 302 end; 303 304 if more 305 then call ioa_ ("(more)"); 306 307 return; 308 309 type (4): /* function */ 310 call ioa_ ("Function: class = ^d, text_length = ^d", saved_fb.class, saved_fb.text_length); 311 312 if saved_fb.stop_control_pointer ^= 0 313 then call ioa_ ("stop control is bead ^d", saved_fb.stop_control_pointer); 314 315 if saved_fb.trace_control_pointer ^= 0 316 then call ioa_ ("trace control is bead ^d", saved_fb.trace_control_pointer); 317 318 call ioa_$nnl ("text = "); 319 call iox_$put_chars (iox_$user_output, addr (saved_fb.text), length (saved_fb.text), code); 320 321 return; 322 323 type (5): /* group */ 324 call ioa_ ("Group of ^d members", saved_gb.number_of_members); 325 326 do i = 0 by 1 while (i < saved_gb.number_of_members); 327 call ioa_ ("member(^d) = bead ^d", i + 1, saved_gb.member (i + 1)); 328 end; 329 330 return; 331 332 end /* display_bead */; 333 334 end /* apl_display_saved_ws */; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 08/08/81 1558.8 apl_display_saved_ws.pl1 >dumps>old_dumps>on>MIB-073181>apl_display_saved_ws.pl1 77 1 08/08/81 1935.2 apl_number_data.incl.pl1 >dumps>old_dumps>on>MIB-073181>apl_number_data.incl.pl1 78 2 08/08/81 1934.9 apl_bead_format.incl.pl1 >dumps>old_dumps>on>MIB-073181>apl_bead_format.incl.pl1 79 3 08/08/81 1935.4 apl_value_bead.incl.pl1 >dumps>old_dumps>on>MIB-073181>apl_value_bead.incl.pl1 80 4 08/08/81 1935.4 apl_symbol_bead.incl.pl1 >dumps>old_dumps>on>MIB-073181>apl_symbol_bead.incl.pl1 81 5 08/08/81 1935.2 apl_operator_bead.incl.pl1 >dumps>old_dumps>on>MIB-073181>apl_operator_bead.incl.pl1 82 6 08/08/81 1935.4 apl_ws_info.incl.pl1 >dumps>old_dumps>on>MIB-073181>apl_ws_info.incl.pl1 83 7 08/08/81 1935.3 apl_saved_ws.incl.pl1 >dumps>old_dumps>on>MIB-073181>apl_saved_ws.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. addr builtin function dcl 72 ref 167 171 319 319 addrel builtin function dcl 72 ref 212 apl_static_$ws_info_ptr 000034 external static structure level 1 dcl 6-11 argument based char unaligned dcl 66 set ref 92* 95* argument_length 000102 automatic fixed bin(20,0) dcl 38 set ref 85* 92 92 95 95 argument_pointer 000100 automatic pointer dcl 38 set ref 85* 92 95 based_fixed_bin based fixed bin(17,0) dcl 66 set ref 241* baseno builtin function dcl 72 ref 212 bead_description_pointer 000412 automatic pointer dcl 7-35 set ref 134* 136 136 137 bead_description_table based structure array level 1 dcl 7-38 set ref 136 136 bead_index 000103 automatic fixed bin(17,0) dcl 38 set ref 136* 137* 137* 150* 151 151* 182* 183* 183* bead_pointer based pointer array level 2 packed unaligned dcl 7-38 set ref 137* bead_table_pointer 2 based pointer level 2 packed unaligned dcl 7-12 ref 134 bead_type based structure level 3 packed unaligned dcl 7-44 ref 239 bitcount 000170 automatic fixed bin(24,0) dcl 38 set ref 99* 117 117 bits_for_parse 1 based structure level 2 packed unaligned dcl 5-3 bv_bead_index parameter fixed bin(17,0) dcl 221 set ref 216 236* bv_bead_pointer parameter pointer unaligned dcl 221 set ref 216 234* 236 236 bv_pseudo_pointer parameter pointer unaligned dcl 206 ref 201 210 212 212 character_value 0(09) based bit(1) level 5 packed unaligned dcl 7-49 ref 275 class 1 based fixed bin(17,0) level 2 dcl 7-82 set ref 309* clock builtin function dcl 72 ref 108 108 code 000104 automatic fixed bin(35,0) dcl 38 set ref 85* 86 88* 92* 93 95* 99* 102* 197* 277* 319* com_err_ 000016 constant entry external dcl 25 ref 88 95 102 cu_$arg_ptr 000014 constant entry external dcl 25 ref 85 current_lexeme 3(18) based fixed bin(17,0) level 2 packed unaligned dcl 7-92 set ref 159* current_line_number 4 based fixed bin(17,0) level 2 packed unaligned dcl 7-92 set ref 160* current_parse_frame_ptr 21 based pointer level 3 packed unaligned dcl 7-12 set ref 142* current_parseme 3 based fixed bin(17,0) level 2 packed unaligned dcl 7-92 set ref 158* data_elements 000105 automatic fixed bin(21,0) dcl 38 set ref 257* 260* 268 277 277 279 284 286* 290* 290 290 293 295* 299 data_pointer 3 based pointer level 2 packed unaligned dcl 7-49 set ref 260* 271 data_type 0(08) based structure level 4 packed unaligned dcl 7-49 ref 259 date_string 000171 automatic char(24) unaligned dcl 38 set ref 108* 110* 112* 114* date_time_ 000020 constant entry external dcl 25 ref 108 112 digits 10 based fixed bin(17,0) level 3 dcl 7-12 set ref 120* directory_name 000106 automatic char(168) unaligned dcl 38 set ref 92* 99* 102* 110* divide builtin function dcl 72 ref 117 117 entry_name 000160 automatic char(32) unaligned dcl 38 set ref 92* 99* 102* 110* expand_pathname_$add_suffix 000022 constant entry external dcl 25 ref 92 fixed builtin function dcl 72 ref 212 236 236 236 236 float_index_origin 16 based float bin(63) level 3 dcl 7-12 set ref 120* frame_name 000016 constant char(10) initial array dcl 60 set ref 144* function_bead_ptr 2 based fixed bin(21,0) level 2 dcl 7-92 set ref 157* fuzz 14 based float bin(63) level 3 dcl 7-12 set ref 120* general_bead based structure level 1 dcl 2-3 hbound builtin function dcl 72 ref 136 150 hcs_$initiate_count 000024 constant entry external dcl 25 ref 99 hcs_$terminate_noname 000026 constant entry external dcl 25 ref 197 header based structure level 2 dcl 7-49 highest_segment 1 based fixed bin(17,0) level 2 dcl 7-12 ref 117 i 000440 automatic fixed bin(17,0) dcl 228 set ref 259* 260 263* 263* 265 265* 299* 299* 300* 326* 326* 327 327* index builtin function dcl 72 ref 239 259 index_origin 12 based fixed bin(17,0) level 3 dcl 7-12 set ref 120* integer_fuzz 24 based float bin(63) level 3 dcl 7-12 set ref 124* ioa_ 000010 constant entry external dcl 25 ref 110 114 117 120 124 126 128 144 148 149 151 157 158 159 160 161 162 163 174 175 181 183 236 241 249 252 260 265 278 290 300 304 309 312 315 323 327 ioa_$nnl 000012 constant entry external dcl 25 ref 318 iox_$put_chars 000030 constant entry external dcl 25 ref 277 319 iox_$user_output 000032 external static pointer dcl 53 set ref 277* 319* last_parse_frame_ptr based pointer level 2 packed unaligned dcl 7-92 set ref 194* latent_expression 27 based fixed bin(21,0) level 3 dcl 7-12 set ref 126* lbound builtin function dcl 72 ref 136 150 length builtin function dcl 72 ref 173 319 319 lock 30 based char(32) level 3 dcl 7-12 set ref 114* meaning_pointer 1 based fixed bin(21,0) level 2 dcl 7-59 set ref 252 252* member 2 based fixed bin(21,0) array level 2 dcl 7-76 set ref 327* min builtin function dcl 72 ref 277 277 more 000441 automatic bit(1) dcl 228 set ref 273* 279* 287* 296* 304 my_name 000053 constant char(20) initial unaligned dcl 57 set ref 88* 88* 95* 102* n 000400 automatic fixed bin(21,0) dcl 38 set ref 173* 175 name 3 based char level 2 packed unaligned dcl 7-59 set ref 249* name_length 2 based fixed bin(17,0) level 2 dcl 7-59 ref 249 249 null builtin function dcl 72 ref 100 142 210 210 number_of_members 1 based fixed bin(17,0) level 2 dcl 7-76 set ref 323* 326 number_of_ptrs 6 based fixed bin(17,0) level 2 dcl 7-92 set ref 181* 182 number_of_symbols 20 based fixed bin(17,0) level 3 dcl 7-12 set ref 128* numeric_datum based float bin(63) array dcl 3-23 set ref 300* old_meaning_ptrs 7 based fixed bin(21,0) array level 2 in structure "saved_pf" dcl 7-92 in procedure "adsw" set ref 171 183* old_meaning_ptrs 6 based fixed bin(21,0) array level 2 in structure "v3_saved_pf" dcl 7-109 in procedure "adsw" set ref 167 operator_bead based structure level 1 dcl 5-3 other_ws_info 10 based structure level 2 dcl 7-12 p 000402 automatic pointer dcl 38 in procedure "adsw" set ref 167* 171* 173 175 p 000442 automatic pointer dcl 228 in procedure "display_bead" set ref 271* 277* 290 300 parse_frame_type 1 based fixed bin(17,0) level 2 dcl 7-92 ref 144 146 165 pointer builtin function dcl 72 ref 134 print_final_value 5(18) based bit(1) level 2 packed unaligned dcl 7-92 set ref 163* ptr builtin function dcl 72 ref 271 put_result 5 based fixed bin(17,0) level 2 packed unaligned dcl 7-92 set ref 162* random_link 13 based fixed bin(35,0) level 3 dcl 7-12 set ref 120* re_lex_source 5(19) based bit(1) level 2 packed unaligned dcl 7-92 set ref 174* rel builtin function dcl 72 ref 134 144 144 212 236 236 271 return_point 4(18) based fixed bin(17,0) level 2 packed unaligned dcl 7-92 set ref 161* reverse builtin function dcl 72 ref 259 rho 4 based fixed bin(21,0) array level 2 dcl 7-49 set ref 265* rhorho 2 based fixed bin(17,0) level 2 dcl 7-49 set ref 260* 263 263 save_frame_type constant fixed bin(17,0) initial dcl 62 ref 146 save_version based fixed bin(17,0) level 2 dcl 7-12 set ref 117* 167 178 saved_bead_count 000410 automatic fixed bin(17,0) dcl 7-35 set ref 133* 136 saved_bead_pointer 000414 automatic pointer dcl 7-41 set ref 234* 236 236 236 236 239 241 249 252 252 257 259 260 260 263 263 265 271 271 275 282 309 309 312 312 315 315 319 319 319 319 323 326 327 saved_boolean_datum based bit dcl 7-56 set ref 290* saved_fb based structure level 1 dcl 7-82 saved_frame_pointer 000416 automatic pointer dcl 7-90 set ref 142* 142* 144 144 144 146 148 150 150 151 151 157 158 159 160 161 162 163 165 167 171 174 181 182 183* 194 saved_gb based structure level 1 dcl 7-76 saved_general_bead based structure level 1 dcl 7-44 saved_meaning_pointer 4 based fixed bin(21,0) array level 3 dcl 7-139 set ref 151* saved_pf based structure level 1 dcl 7-92 saved_sb based structure level 1 dcl 7-59 saved_sf based structure level 1 dcl 7-139 saved_symbol_count 2 based fixed bin(29,0) level 2 dcl 7-139 set ref 148* 150 saved_value_bead based structure level 1 dcl 7-49 saved_ws_info based structure level 1 dcl 7-12 saved_ws_info_pointer 000406 automatic pointer dcl 7-9 set ref 99* 100 106 112 114 114 114 114 117 117 120 120 120 120 120 120 124 126 128 128 133 134 134 142 167 178 197* size 0(18) based bit(18) level 2 packed unaligned dcl 7-44 ref 236 236 236 236 static_ws_info_ptr 000034 external static pointer level 2 packed unaligned dcl 6-11 ref 6-7 stop_control_pointer 2 based fixed bin(21,0) level 2 dcl 7-82 set ref 312 312* string builtin function dcl 72 ref 239 259 symbol_list 3 based structure array level 2 dcl 7-139 set ref 150 150 symbol_pointer 3 based fixed bin(21,0) array level 3 dcl 7-139 set ref 151* text 5 based char level 2 dcl 7-82 set ref 319 319 319 319 text_length 4 based fixed bin(17,0) level 2 dcl 7-82 set ref 309* 319 319 319 319 time_saved 22 based fixed bin(71,0) level 3 dcl 7-12 set ref 112* total_beads 3 based fixed bin(24,0) level 2 dcl 7-12 set ref 128* 133 total_data_elements 1 based fixed bin(21,0) level 2 dcl 7-49 ref 257 trace_control_pointer 3 based fixed bin(21,0) level 2 dcl 7-82 set ref 315 315* type based structure level 2 in structure "general_bead" packed unaligned dcl 2-3 in procedure "adsw" type based structure level 3 in structure "saved_value_bead" packed unaligned dcl 7-49 in procedure "adsw" type based structure level 3 in structure "value_bead" packed unaligned dcl 3-3 in procedure "adsw" type based structure level 3 in structure "symbol_bead" packed unaligned dcl 4-13 in procedure "adsw" type based structure level 2 in structure "saved_general_bead" packed unaligned dcl 7-44 in procedure "adsw" user_name 71 based char(32) level 3 dcl 7-12 set ref 114* user_number 26 based fixed bin(35,0) level 3 dcl 7-12 set ref 114* v3_saved_pf based structure level 1 dcl 7-109 value_name 000035 constant char(9) initial array unaligned dcl 58 ref 260 varying_string based varying char dcl 66 set ref 173 175* width 11 based fixed bin(17,0) level 3 dcl 7-12 set ref 120* ws_info_ptr 000404 automatic pointer initial dcl 6-7 set ref 6-7* ws_ptr 000200 automatic pointer array dcl 38 set ref 106* 212 wsid 40 based char(100) level 3 dcl 7-12 set ref 114* zero_or_one_value 0(12) based bit(1) level 5 packed unaligned dcl 7-49 ref 282 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. Binary internal static bit(1) initial dcl 1-16 MAX_VALUE_BEAD_SIZE internal static fixed bin(19,0) initial dcl 3-28 NumberSize internal static fixed bin(4,0) initial dcl 1-25 TheBiggestNumberWeveGot internal static float bin(63) initial dcl 1-16 TheSmallestNumberWeveGot internal static float bin(63) initial dcl 1-16 character_data_structure based structure level 1 dcl 3-15 character_string_overlay based char dcl 3-19 character_value_type internal static bit(18) initial unaligned dcl 2-30 complex_datum based complex float bin(63) array dcl 3-26 complex_value_type internal static bit(18) initial unaligned dcl 2-30 current_save_version internal static fixed bin(17,0) initial dcl 7-9 function_type internal static bit(18) initial unaligned dcl 2-30 group_type internal static bit(18) initial unaligned dcl 2-30 integral_value_type internal static bit(18) initial unaligned dcl 2-30 label_type internal static bit(18) initial unaligned dcl 2-30 lexed_function_type internal static bit(18) initial unaligned dcl 2-30 list_value_type internal static bit(18) initial unaligned dcl 2-30 max_parse_stack_depth internal static fixed bin(17,0) initial dcl 6-98 not_integer_mask internal static bit(18) initial unaligned dcl 2-30 not_zero_or_one_mask internal static bit(18) initial unaligned dcl 2-30 number_of_dimensions automatic fixed bin(17,0) dcl 3-3 numeric_value_type internal static bit(18) initial unaligned dcl 2-30 operator_type internal static bit(18) initial unaligned dcl 2-30 output_buffer based char unaligned dcl 6-94 saved_lb based structure level 1 dcl 7-67 saved_reductions_pointer automatic pointer dcl 7-90 saved_rs based structure array level 1 dcl 7-125 saved_rs_for_op based structure array level 1 dcl 7-125 shared_variable_type internal static bit(18) initial unaligned dcl 2-30 symbol_bead based structure level 1 dcl 4-13 symbol_name_length automatic fixed bin(17,0) dcl 7-41 symbol_type internal static bit(18) initial unaligned dcl 2-30 total_members automatic fixed bin(17,0) dcl 7-41 value_bead based structure level 1 dcl 3-3 value_type internal static bit(18) initial unaligned dcl 2-30 ws_info based structure level 1 dcl 6-16 zero_or_one_value_type internal static bit(18) initial unaligned dcl 2-30 NAMES DECLARED BY EXPLICIT CONTEXT. adsw 000545 constant entry external dcl 19 apl_display_saved_ws 000555 constant entry external dcl 19 display_bead 002227 constant entry internal dcl 216 ref 137 end_loop 002156 constant label dcl 194 ref 176 186 188 191 frame_type 000000 constant label array(5) dcl 167 ref 154 165 type 000005 constant label array(0:8) dcl 241 set ref 239 un_pseudo_pointer 002201 constant entry internal dcl 201 ref 142 194 234 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 3326 3364 3154 3336 Length 4006 3154 36 405 152 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME adsw 446 external procedure is an external procedure. un_pseudo_pointer internal procedure shares stack frame of external procedure adsw. display_bead internal procedure shares stack frame of external procedure adsw. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME adsw 000100 argument_pointer adsw 000102 argument_length adsw 000103 bead_index adsw 000104 code adsw 000105 data_elements adsw 000106 directory_name adsw 000160 entry_name adsw 000170 bitcount adsw 000171 date_string adsw 000200 ws_ptr adsw 000400 n adsw 000402 p adsw 000404 ws_info_ptr adsw 000406 saved_ws_info_pointer adsw 000410 saved_bead_count adsw 000412 bead_description_pointer adsw 000414 saved_bead_pointer adsw 000416 saved_frame_pointer adsw 000440 i display_bead 000441 more display_bead 000442 p display_bead THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out return shorten_stack ext_entry fetch_bits reverse_bs set_bs_eis index_bs_eis index_bs_1_eis clock THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. com_err_ cu_$arg_ptr date_time_ expand_pathname_$add_suffix hcs_$initiate_count hcs_$terminate_noname ioa_ ioa_$nnl iox_$put_chars THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. apl_static_$ws_info_ptr iox_$user_output LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 6 7 000537 19 000544 85 000563 86 000602 88 000604 89 000636 92 000637 93 000675 95 000677 96 000731 99 000732 100 000774 102 001000 103 001033 106 001034 108 001036 110 001055 112 001110 114 001126 117 001166 120 001226 124 001270 126 001311 128 001332 133 001357 134 001362 136 001367 137 001375 138 001406 142 001410 144 001425 146 001461 148 001465 149 001505 150 001524 151 001534 153 001567 154 001571 157 001572 158 001612 159 001633 160 001661 161 001702 162 001725 163 001751 165 001774 167 001777 171 002005 173 002007 174 002011 175 002033 176 002061 178 002062 181 002065 182 002110 183 002120 184 002151 186 002153 188 002154 191 002155 194 002156 197 002167 199 002200 201 002201 210 002203 212 002215 216 002227 234 002231 236 002241 239 002314 241 002321 247 002341 249 002342 252 002370 255 002413 257 002414 259 002417 260 002436 263 002477 265 002507 266 002542 268 002544 271 002547 273 002554 275 002555 277 002560 278 002601 279 002612 281 002617 282 002620 284 002623 286 002625 287 002627 290 002631 291 002656 293 002657 295 002661 296 002663 299 002665 300 002671 301 002714 304 002716 307 002733 309 002734 312 002760 315 003003 318 003026 319 003041 321 003063 323 003064 326 003110 327 003115 328 003147 330 003151 ----------------------------------------------------------- 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