1 /* ====== BEGIN INCLUDE SEGMENT apl_ws_info.incl.pl1 ====================================== */ 2 3 /* This structure contains all of the global data (or pointers to it) for the APL subsystem */ 4 5 /* automatic */ 6 7 declare ws_info_ptr ptr initial (apl_static_$ws_info_ptr.static_ws_info_ptr); 8 9 /* external static */ 10 11 declare 1 apl_static_$ws_info_ptr external static aligned structure, 12 2 static_ws_info_ptr unaligned pointer; 13 14 /* based */ 15 16 declare 1 ws_info aligned based (ws_info_ptr), 17 2 version_number fixed bin, /* version of this structure (3) */ 18 2 switches unaligned, /* mainly ws parameters */ 19 3 long_error_mode bit, /* if 1, long Multics format, else APL/360 format */ 20 3 debug_mode bit, /* if 1, system error causes escape to command level */ 21 3 canonicalize_mode bit, /* if 1, the editor canonicalizes user input */ 22 3 restrict_exec_command bit, /* if 1, the )EXEC command may not be used */ 23 3 restrict_debug_command bit, /* if 1, the )DEBUG command may not be used */ 24 3 restrict_external_functions 25 bit, /* if 1, the )ZFN, )MFN, and )DFN commands may not be used */ 26 3 restrict_load bit, /* if 1, the )LOAD and )COPY commands may not be used */ 27 3 restrict_load_directory bit, /* if 1, no directory allowed in )LOAD or )COPY pathnames */ 28 3 restrict_save bit, /* if 1, the )SAVE command may not be used */ 29 3 restrict_save_directory bit, /* if 1, no directory allowed in )SAVE pathnames */ 30 3 off_hold bit, /* if 1, )OFF HOLD was typed, else just )OFF */ 31 3 transparent_to_signals bit, /* if 1, any conditions slip right past APL */ 32 3 meter_mode bit, /* if 1, metering may be done, else speed is all-important */ 33 3 restrict_msg_command bit, /* if 1, the )MSG command may not be used. */ 34 3 compatibility_check_mode 35 bit, /* if 1, check for incompatible operators */ 36 3 no_quit_handler bit, /* if 1, do not trap QUITs. */ 37 /* remaining 20 bits not presently used */ 38 39 2 values, /* attributes of the workspace */ 40 3 digits fixed bin, /* number of digits of precision printed on output */ 41 3 width fixed bin, /* line length for formatted output */ 42 3 index_origin fixed bin, /* the index origin (0 or 1) */ 43 3 random_link fixed bin(35), /* seed for random number generator */ 44 3 fuzz float, /* comparison tolerance (relative fuzz) */ 45 3 float_index_origin float, /* the index origin in floating point */ 46 3 number_of_symbols fixed bin, /* the number of symbol_beads currently in existence */ 47 3 maximum_value_stack_size 48 fixed bin (18), /* maximum number of words in one segment of value stack */ 49 50 2 pointers, /* pointers to various internal tables */ 51 3 symbol_table_ptr unaligned pointer, /* -> symbol_table (apl_symbol_table.incl.pl1) */ 52 3 current_parse_frame_ptr unaligned pointer, /* -> topmost parse frame */ 53 3 value_stack_ptr unaligned pointer, /* -> next free location on value stack */ 54 3 alloc_free_info_ptr unaligned pointer, /* -> apl_storage_mngr_ data (apl_storage_system_data.incl.pl1) */ 55 56 2 time_invoked fixed bin(71), /* clock time that APL was entered */ 57 2 integer_fuzz float, /* the absolute fuzz used in checking for integers */ 58 2 user_number fixed bin(35), /* number under which the user is signed on */ 59 2 latent_expression unaligned pointer, /* -> value_bead for QuadLX */ 60 2 lock char(32), /* the lock currently set on this workspace (password) */ 61 2 wsid char(100), /* the workspace identification: name, number name, or clear ws */ 62 2 last_error_code fixed bin(35), /* last code passed to apl_error_ */ 63 2 signoff_lock character (32), 64 65 2 interrupt_info aligned, /* bits used by apl_interpreter_ to tell when to abort */ 66 3 dont_interrupt_parse bit, /* if 1, don't do a dirty stop because the parser is running */ 67 3 dont_interrupt_operator bit, /* if 1, don't do a dirty stop because an operator is running */ 68 3 dont_interrupt_storage_manager /* if 1, don't stop because apl_storage_mngr_ is */ 69 bit, /* munging his tables */ 70 3 unused_interrupt_bit bit, /* not presently used */ 71 3 dont_interrupt_command bit, 72 3 can_be_interrupted bit, /* if 1, OK to do a clean stop (we are between lines, reading) */ 73 3 clean_interrupt_pending bit, /* interrupt occured, break cleanly (between lines) */ 74 3 dirty_interrupt_pending bit, /* interrupt occured, break as soon as not inhibited */ 75 76 2 user_name char (32), /* process group id of user */ 77 2 immediate_input_prompt char (32) varying, /* normal input */ 78 2 evaluated_input_prompt char (32) varying, /* quad input */ 79 2 character_input_prompt char (32) varying, /* quad-quote input */ 80 2 vcpu_time aligned, 81 3 total fixed bin (71), 82 3 setup fixed bin (71), 83 3 parse fixed bin (71), 84 3 lex fixed bin (71), 85 3 operator fixed bin (71), 86 3 storage_manager fixed bin (71), 87 2 output_info aligned, /* data pertaining to output buffer */ 88 3 output_buffer_ptr unal ptr, /* ptr to output buffer */ 89 3 output_buffer_len fixed bin (21), /* length (bytes) of output buffer */ 90 3 output_buffer_pos fixed bin (21), /* index of next byte to write in */ 91 3 output_buffer_ll fixed bin (21), /* print positions used up so far */ 92 2 tab_width fixed bin (21); /* number of columns a tabs moves cursor */ 93 94 declare output_buffer char (ws_info.output_buffer_len) based (ws_info.output_buffer_ptr); 95 96 /* internal static */ 97 98 declare max_parse_stack_depth fixed bin int static init(64536); 99 100 /* ------ END INCLUDE SEGMENT apl_ws_info.incl.pl1 -------------------------------------- */