COMPILATION LISTING OF SEGMENT apl_command_ Compiled by: Multics PL/I Compiler, Release 28d, of October 4, 1983 Compiled at: Honeywell LCPD Phoenix, System M Compiled on: 11/29/83 1558.5 mst Tue 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 /* format: style3 */ 11 apl_command_: 12 proc (line, r_paren_pos, exit_flag); 13 14 /* 15* * this module processes commands for APL. 16* * 17* * written 7/25/73 by DAM 18* * Modified 1/7/74 by PG to fix )WIDTH to tell dim. 19* Modified 740405 by PG to fix )COPY, flush )MAIL 20* Modified 741009 by PG to add )V1LIB, change )HELP for installation. 21* Modified 741017 by PG to add )TABS. 22* Modified 770112 by PG to add )V1DROP, delete )WORK, fix )HELP, and fix )TABS. 23* Modified 770303 by PG to add )ERRS, delete )BRIEF and )LONG (bug 265), and fix locks (bug 276). 24* Modified 780207 by PG to fix 309, add dummy )RESET, and do a little cleaning up of the source 25* Modified 780211 by PG to add $from_editor entrypoint. 26* Modified 780512 by William York to change calling sequences for the 27* vars, fns, and grps commands. 28* Modified 790213 by PG to fix 367 (copy command could not handle wsid's with locks). 29* Modified 790720 by PG to fix 404 (the last change fixed locks for copy, but broke them for everything else!), 30* and to switch to iox_. 31* Modified 791219 by PG to add )VERSION and )SINL. 32* Modified 800131 by PG to add )? 33* Modified 811210 by TO to add )EFNS 34* */ 35 36 /* parameters */ 37 38 declare line char (*) aligned parameter, /* the command string */ 39 r_paren_pos fixed bin (21) parameter, /* index in line of the ")" that begins the command */ 40 exit_flag fixed bin (35) parameter; /* return code to caller */ 41 42 /* automatic */ 43 44 declare amount_to_pass fixed bin (21), 45 called_from_editor bit (1) aligned, 46 cur_pos fixed bin (21), 47 his_password char (8) aligned, 48 list_count fixed bin, 49 list_element (100) char (100), /* TEMPORARY KLUDGE - interface will probably be changed */ 50 lock_len fixed bin (21), 51 lock_ptr ptr, 52 tok_len fixed bin (21), 53 tok_type fixed bin, 54 wsid_len fixed bin (21), 55 wsid_ptr ptr, 56 cmd4 char (4) aligned, 57 cmd_number fixed bin, 58 old_flag bit (1) aligned, 59 on_off bit (1) aligned, 60 letter char (1) aligned, 61 command_line char (132), 62 send_type bit (1) aligned, /* indicates whether command is MSG on|off or to be sent */ 63 code fixed bin (35), 64 1 ready_mode aligned, 65 2 ready_state bit (1) unaligned, 66 2 pad bit (35) unaligned; 67 68 declare ext_fcn_class_code fixed bin, 69 old_tab_width fixed bin, 70 tab_width fixed bin, 71 apl_number float; 72 73 /* based */ 74 75 declare string_to_pass char (amount_to_pass) unaligned based (addr (line_array (cur_pos))), 76 wsid_string char (wsid_len) unaligned based (wsid_ptr), 77 lock_string char (lock_len) unaligned based (lock_ptr), 78 line_array (length (line)) char (1) unaligned based (addr (line)); 79 80 /* builtin */ 81 82 declare (addr, float, hbound, lbound, length, min, substr) 83 builtin; 84 85 /* entries */ 86 87 declare apl_flush_buffer_nl_ 88 entry (), 89 apl_print_string_ entry (char (*)), 90 apl_read_password_ entry (char (8) aligned), 91 apl_external_fcn_defn_ 92 entry (char (*), fixed bin), 93 iox_$modes entry (ptr, char (*), char (*), fixed bin (35)), 94 iox_$control entry (ptr, char (*), ptr, fixed bin (35)), 95 convert_binary_integer_$decimal_string 96 entry (fixed bin (35)) returns (char (13) varying), 97 apl_error_$huh entry (fixed bin (35)), 98 ioa_$ioa_switch entry options (variable), 99 who entry options (variable), 100 help entry options (variable), 101 cu_$ready_proc entry (1 aligned, 2 bit (1) unaligned, 2 bit (35) unaligned), 102 cu_$cp entry (pointer, fixed bin (21), fixed bin (35)), 103 (apl_vars_command_, apl_fns_command_, apl_efns_command_, apl_grps_command_) 104 entry (char (1) aligned, bit (1) aligned), 105 apl_clear_workspace_ 106 entry, 107 (apl_si_command_, apl_siv_command_) 108 entry, 109 (apl_save_command_, apl_load_command_, apl_wsid_command_) 110 entry (char (*), char (*), fixed bin (35)), 111 apl_directory_commands_ 112 entry (char (4) aligned, char (*)), 113 (apl_copy_command_, apl_v1_copy_command_) 114 entry (char (*), char (*), bit (1) aligned, char (*) dim (*), fixed bin, fixed bin (35)), 115 apl_erase_command_ entry (fixed bin, dim (*) char (*)), 116 apl_group_command_ entry (fixed bin, dim (*) char (*)), 117 apl_grp_command_ entry (char (*)); 118 119 /* external static */ 120 121 declare ( 122 apl_error_table_$return_from_apl, 123 apl_error_table_$ws_cleared, 124 apl_error_table_$ws_loaded 125 ) fixed bin (35) external, 126 apl_static_$apl_output 127 ptr external static, 128 apl_static_$version_number 129 char (5) external static; 130 131 /* internal static */ 132 133 /* table of commands, used to dispatch through cmd (): tv */ 134 135 declare cmd_table (0:48) char (8) aligned static init ("r", 136 /* 0 */ 137 "q", /* 1 */ 138 "quit", /* 2 */ 139 "e", /* 3 */ 140 "errs", /* 4 */ 141 "reset", /* 5 */ 142 "debug", /* 6 */ 143 "vars", /* 7 */ 144 "grps", /* 8 */ 145 "fns", /* 9 */ 146 "digits", /* 10 */ 147 "origin", /* 11 */ 148 "width", /* 12 */ 149 "clear", /* 13 */ 150 "siv", /* 14 */ 151 "si", /* 15 */ 152 "save", /* 16 */ 153 "load", /* 17 */ 154 "wsid", /* 18 */ 155 "check", /* 19 */ 156 "help", /* 20 */ 157 "huh", /* 21 */ 158 "off", /* 22 */ 159 "continue", /* 23 */ 160 "exec", /* 24 */ 161 "erase", /* 25 */ 162 "copy", /* 26 */ 163 "pcopy", /* 27 */ 164 "group", /* 28 */ 165 "grp", /* 29 */ 166 "msg", /* 30 */ 167 "lib", /* 31 */ 168 "zfn", /* 32 */ 169 "mfn", /* 33 */ 170 "dfn", /* 34 */ 171 "libd", /* 35 */ 172 "drop", /* 36 */ 173 "ports", /* 37 */ 174 "meter", /* 38 */ 175 "v1drop", /* 39 */ 176 "symbols", /* 40 */ 177 "v1copy", /* 41 */ 178 "v1pcopy", /* 42 */ 179 "v1lib", /* 43 */ 180 "tabs", /* 44 */ 181 "version", /* 45 */ 182 "sinl", /* 46 */ 183 "?", /* 47 */ 184 "efns"); /* 48 */ 185 186 declare command_OK_in_editor 187 (0:48) bit (1) unaligned internal static initial ("1"b, 188 /* 0 */ 189 (2) (1)"0"b, /* 1-2 */ 190 (2) (1)"1"b, /* 3-4 */ 191 "0"b, /* 5 */ 192 (7) (1)"1"b, /* 6-12 */ 193 "0"b, /* 13 */ 194 (2) (1)"1"b, /* 14-15 */ 195 (2) (1)"0"b, /* 16-17 */ 196 (4) (1)"1"b, /* 18-21 */ 197 (2) (1)"0"b, /* 22-23 */ 198 "1"b, /* 24 */ 199 (2) (1)"0"b, /* 25-26 */ 200 (14) (1)"1"b, /* 27-40 */ 201 "0"b, /* 41 */ 202 (7) (1)"1"b); /* 42-48 */ 203 204 /* include files */ 205 1 1 /* ====== BEGIN INCLUDE SEGMENT apl_characters.incl.pl1 =================================== */ 1 2 1 3 /* 1 4* * This include file contains all the characters in the APL character set, 1 5* * declared char(1) [Instead of fixed bin as in the apl_character_codes.incl.pl1 file] 1 6* * 1 7* Modified 780913 by PG to add CentSign 1 8* Modified 790319 by PG to add CommaHyphen 1 9* */ 1 10 1 11 declare ( 1 12 QBell init(""), 1 13 QBackSpace init(""), 1 14 QTab init(" "), 1 15 QNewLine init(" 1 16 "), 1 17 QSpace init(" "), 1 18 QExclamation init("!"), 1 19 QDollar init("$"), 1 20 QApostrophe init("'"), 1 21 QLeftParen init("("), 1 22 QRightParen init(")"), 1 23 QStar init("*"), 1 24 QPlus init("+"), 1 25 QComma init(","), 1 26 QMinus init("-"), 1 27 QPeriod init("."), 1 28 QSlash init("/"), 1 29 QZero init("0"), 1 30 QOne init("1"), 1 31 QTwo init("2"), 1 32 QThree init("3"), 1 33 QFour init("4"), 1 34 QFive init("5"), 1 35 QSix init("6"), 1 36 QSeven init("7"), 1 37 QEight init("8"), 1 38 QNine init("9"), 1 39 QColon init(":"), 1 40 QSemiColon init(";"), 1 41 QLessThan init("<"), 1 42 QEqual init("="), 1 43 QGreaterThan init(">"), 1 44 QQuestion init("?"), 1 45 QLetterA_ init("A"), 1 46 QLetterB_ init("B"), 1 47 QLetterC_ init("C"), 1 48 QLetterD_ init("D"), 1 49 QLetterE_ init("E"), 1 50 QLetterF_ init("F"), 1 51 QLetterG_ init("G"), 1 52 QLetterH_ init("H"), 1 53 QLetterI_ init("I"), 1 54 QLetterJ_ init("J"), 1 55 QLetterK_ init("K"), 1 56 QLetterL_ init("L"), 1 57 QLetterM_ init("M"), 1 58 QLetterN_ init("N"), 1 59 QLetterO_ init("O"), 1 60 QLetterP_ init("P"), 1 61 QLetterQ_ init("Q"), 1 62 QLetterR_ init("R"), 1 63 QLetterS_ init("S"), 1 64 QLetterT_ init("T"), 1 65 QLetterU_ init("U"), 1 66 QLetterV_ init("V"), 1 67 QLetterW_ init("W"), 1 68 QLetterX_ init("X"), 1 69 QLetterY_ init("Y"), 1 70 QLetterZ_ init("Z"), 1 71 QLeftBracket init("["), 1 72 QBackSlash init("\"), 1 73 QRightBracket init("]"), 1 74 QUnderLine init("_"), 1 75 QLetterA init("a"), 1 76 QLetterB init("b"), 1 77 QLetterC init("c"), 1 78 QLetterD init("d"), 1 79 QLetterE init("e"), 1 80 QLetterF init("f"), 1 81 QLetterG init("g"), 1 82 QLetterH init("h"), 1 83 QLetterI init("i"), 1 84 QLetterJ init("j"), 1 85 QLetterK init("k"), 1 86 QLetterL init("l"), 1 87 QLetterM init("m"), 1 88 QLetterN init("n"), 1 89 QLetterO init("o"), 1 90 QLetterP init("p"), 1 91 QLetterQ init("q"), 1 92 QLetterR init("r"), 1 93 QLetterS init("s"), 1 94 QLetterT init("t"), 1 95 QLetterU init("u"), 1 96 QLetterV init("v"), 1 97 QLetterW init("w"), 1 98 QLetterX init("x"), 1 99 QLetterY init("y"), 1 100 QLetterZ init("z"), 1 101 QLeftBrace init("{"), 1 102 QVerticalBar init("|"), 1 103 QRightBrace init("}"), 1 104 QTilde init("~"), 1 105 QLessOrEqual init(""), 1 106 QGreaterOrEqual init(""), 1 107 QNotEqual init(""), 1 108 QOrSign init(""), 1 109 QAndSign init(""), 1 110 QDivision init(""), 1 111 QEpsilon init(""), 1 112 QUpArrow init(""), 1 113 QDownArrow init(""), 1 114 QCircle init(""), 1 115 QCeiling init(""), 1 116 QFloor init(""), 1 117 QDelta init(""), 1 118 QSmallCircle init(""), 1 119 QQuad init(""), 1 120 QCap init(""), 1 121 QDeCode init(""), 1 122 QEnCode init(""), 1 123 QLeftLump init(""), 1 124 QRightLump init(""), 1 125 QCup init(""), 1 126 QNorSign init(""), 1 127 QNandSign init(""), 1 128 QCircleHyphen init(""), 1 129 QSlashHyphen init(""), 1 130 QDelTilde init(""), 1 131 QCircleStar init(""), 1 132 QCircleBar init(""), 1 133 QCircleBackSlash init(""), 1 134 QCircleSlash init(""), 1 135 QGradeDown init(""), 1 136 QGradeUp init(""), 1 137 QLamp init(""), 1 138 QQuadQuote init(""), 1 139 QIBeam init(""), 1 140 QBackSlashHyphen init(""), 1 141 QDomino init(""), 1 142 QDiaresis init(""), 1 143 QOmega init(""), 1 144 QIota init(""), 1 145 QRho init(""), 1 146 QTimes init(""), 1 147 QAlpha init(""), 1 148 QUpperMinus init(""), 1 149 QDel init(""), 1 150 QLeftArrow init(""), 1 151 QRightArrow init(""), 1 152 QDiamond init(""), 1 153 QZero_ init(""), 1 154 QOne_ init(""), 1 155 QTwo_ init(""), 1 156 QThree_ init(""), 1 157 QFour_ init(""), 1 158 QFive_ init(""), 1 159 QSix_ init(""), 1 160 QSeven_ init(""), 1 161 QEight_ init(""), 1 162 QNine_ init(""), 1 163 QDelta_ init(""), 1 164 QMarkError init(""), 1 165 QExecuteSign init(""), 1 166 QFormatSign init(""), 1 167 QLeftTack init(""), 1 168 QRightTack init(""), 1 169 QLineFeed init(""), 1 170 QConditionalNewLine init(""), 1 171 QCentSign init(""), 1 172 QCommaHyphen init("") 1 173 ) char(1) internal static options (constant); 1 174 1 175 /* ------ END INCLUDE SEGMENT apl_characters.incl.pl1 ----------------------------------- */ 206 2 1 /* ====== BEGIN INCLUDE SEGMENT apl_scan_info.incl.pl1 ==================================== */ 2 2 2 3 /* entries */ 2 4 2 5 declare apl_editor_scan_ entry (char (*) aligned, fixed bin (21), fixed bin (21), fixed bin (21), fixed bin, ptr unal); 2 6 declare apl_scan_ entry (char (*) aligned, fixed bin (21), fixed bin (21), fixed bin (21), fixed bin, ptr unal); 2 7 2 8 /* internal static */ 2 9 2 10 declare (NO_TOKEN init (0), /* no token found */ 2 11 DELIMITER_TOKEN init (1), /* single character token */ 2 12 NAME_TOKEN init (2), /* workspace, symbol, group, or function name */ 2 13 INTEGER_TOKEN init (3), /* positive integer */ 2 14 NUMBER_TOKEN init (4) /* all other numbers */ 2 15 ) fixed bin int static options (constant); 2 16 2 17 /* ------ END INCLUDE SEGMENT apl_scan_info.incl.pl1 ------------------------------------ */ 207 3 1 /* ====== BEGIN INCLUDE SEGMENT apl_ws_info.incl.pl1 ====================================== */ 3 2 3 3 /* This structure contains all of the global data (or pointers to it) for the APL subsystem */ 3 4 3 5 /* automatic */ 3 6 3 7 declare ws_info_ptr ptr initial (apl_static_$ws_info_ptr.static_ws_info_ptr); 3 8 3 9 /* external static */ 3 10 3 11 declare 1 apl_static_$ws_info_ptr external static aligned structure, 3 12 2 static_ws_info_ptr unaligned pointer; 3 13 3 14 /* based */ 3 15 3 16 declare 1 ws_info aligned based (ws_info_ptr), 3 17 2 version_number fixed bin, /* version of this structure (3) */ 3 18 2 switches unaligned, /* mainly ws parameters */ 3 19 3 long_error_mode bit, /* if 1, long Multics format, else APL/360 format */ 3 20 3 debug_mode bit, /* if 1, system error causes escape to command level */ 3 21 3 canonicalize_mode bit, /* if 1, the editor canonicalizes user input */ 3 22 3 restrict_exec_command bit, /* if 1, the )EXEC command may not be used */ 3 23 3 restrict_debug_command bit, /* if 1, the )DEBUG command may not be used */ 3 24 3 restrict_external_functions 3 25 bit, /* if 1, the )ZFN, )MFN, and )DFN commands may not be used */ 3 26 3 restrict_load bit, /* if 1, the )LOAD and )COPY commands may not be used */ 3 27 3 restrict_load_directory bit, /* if 1, no directory allowed in )LOAD or )COPY pathnames */ 3 28 3 restrict_save bit, /* if 1, the )SAVE command may not be used */ 3 29 3 restrict_save_directory bit, /* if 1, no directory allowed in )SAVE pathnames */ 3 30 3 off_hold bit, /* if 1, )OFF HOLD was typed, else just )OFF */ 3 31 3 transparent_to_signals bit, /* if 1, any conditions slip right past APL */ 3 32 3 meter_mode bit, /* if 1, metering may be done, else speed is all-important */ 3 33 3 restrict_msg_command bit, /* if 1, the )MSG command may not be used. */ 3 34 3 compatibility_check_mode 3 35 bit, /* if 1, check for incompatible operators */ 3 36 3 no_quit_handler bit, /* if 1, do not trap QUITs. */ 3 37 /* remaining 20 bits not presently used */ 3 38 3 39 2 values, /* attributes of the workspace */ 3 40 3 digits fixed bin, /* number of digits of precision printed on output */ 3 41 3 width fixed bin, /* line length for formatted output */ 3 42 3 index_origin fixed bin, /* the index origin (0 or 1) */ 3 43 3 random_link fixed bin(35), /* seed for random number generator */ 3 44 3 fuzz float, /* comparison tolerance (relative fuzz) */ 3 45 3 float_index_origin float, /* the index origin in floating point */ 3 46 3 number_of_symbols fixed bin, /* the number of symbol_beads currently in existence */ 3 47 3 maximum_value_stack_size 3 48 fixed bin (18), /* maximum number of words in one segment of value stack */ 3 49 3 50 2 pointers, /* pointers to various internal tables */ 3 51 3 symbol_table_ptr unaligned pointer, /* -> symbol_table (apl_symbol_table.incl.pl1) */ 3 52 3 current_parse_frame_ptr unaligned pointer, /* -> topmost parse frame */ 3 53 3 value_stack_ptr unaligned pointer, /* -> next free location on value stack */ 3 54 3 alloc_free_info_ptr unaligned pointer, /* -> apl_storage_mngr_ data (apl_storage_system_data.incl.pl1) */ 3 55 3 56 2 time_invoked fixed bin(71), /* clock time that APL was entered */ 3 57 2 integer_fuzz float, /* the absolute fuzz used in checking for integers */ 3 58 2 user_number fixed bin(35), /* number under which the user is signed on */ 3 59 2 latent_expression unaligned pointer, /* -> value_bead for QuadLX */ 3 60 2 lock char(32), /* the lock currently set on this workspace (password) */ 3 61 2 wsid char(100), /* the workspace identification: name, number name, or clear ws */ 3 62 2 last_error_code fixed bin(35), /* last code passed to apl_error_ */ 3 63 2 signoff_lock character (32), 3 64 3 65 2 interrupt_info aligned, /* bits used by apl_interpreter_ to tell when to abort */ 3 66 3 dont_interrupt_parse bit, /* if 1, don't do a dirty stop because the parser is running */ 3 67 3 dont_interrupt_operator bit, /* if 1, don't do a dirty stop because an operator is running */ 3 68 3 dont_interrupt_storage_manager /* if 1, don't stop because apl_storage_mngr_ is */ 3 69 bit, /* munging his tables */ 3 70 3 unused_interrupt_bit bit, /* not presently used */ 3 71 3 dont_interrupt_command bit, 3 72 3 can_be_interrupted bit, /* if 1, OK to do a clean stop (we are between lines, reading) */ 3 73 3 clean_interrupt_pending bit, /* interrupt occured, break cleanly (between lines) */ 3 74 3 dirty_interrupt_pending bit, /* interrupt occured, break as soon as not inhibited */ 3 75 3 76 2 user_name char (32), /* process group id of user */ 3 77 2 immediate_input_prompt char (32) varying, /* normal input */ 3 78 2 evaluated_input_prompt char (32) varying, /* quad input */ 3 79 2 character_input_prompt char (32) varying, /* quad-quote input */ 3 80 2 vcpu_time aligned, 3 81 3 total fixed bin (71), 3 82 3 setup fixed bin (71), 3 83 3 parse fixed bin (71), 3 84 3 lex fixed bin (71), 3 85 3 operator fixed bin (71), 3 86 3 storage_manager fixed bin (71), 3 87 2 output_info aligned, /* data pertaining to output buffer */ 3 88 3 output_buffer_ptr unal ptr, /* ptr to output buffer */ 3 89 3 output_buffer_len fixed bin (21), /* length (bytes) of output buffer */ 3 90 3 output_buffer_pos fixed bin (21), /* index of next byte to write in */ 3 91 3 output_buffer_ll fixed bin (21), /* print positions used up so far */ 3 92 2 tab_width fixed bin (21); /* number of columns a tabs moves cursor */ 3 93 3 94 declare output_buffer char (ws_info.output_buffer_len) based (ws_info.output_buffer_ptr); 3 95 3 96 /* internal static */ 3 97 3 98 declare max_parse_stack_depth fixed bin int static init(64536); 3 99 3 100 /* ------ END INCLUDE SEGMENT apl_ws_info.incl.pl1 -------------------------------------- */ 208 4 1 /* ====== BEGIN INCLUDE SEGMENT apl_number_data.incl.pl1 ================================== */ 4 2 4 3 /* 4 4* This include file contains information about the machine representation of numbers. 4 5* In all programs numbers should simply be declared 'float'. 4 6* All default statements should be in this include file. 4 7* 4 8* This is the binary version. The manifest constant Binary should be used by programs 4 9* that need to know whether we are using binary or decimal. 4 10* */ 4 11 4 12 /* format: style3,initlm0,idind30 */ 4 13 4 14 default (float & ^decimal & ^binary & ^precision & ^constant) float binary (63); 4 15 4 16 declare ( 4 17 TheBiggestNumberWeveGot float initial (0.1701411834604692317e+39), 4 18 TheSmallestNumberWeveGot float initial (.1469367938527859385e-38), 4 19 Binary bit (1) aligned initial ("1"b) 4 20 ) internal static options (constant); 4 21 4 22 /* Number of characters in a number datum entry; used for copying float number arrays as strings. 4 23* (Obsolete! use array copies!) */ 4 24 4 25 declare NumberSize fixed binary precision (4) internal static initial (8); 4 26 4 27 /* ------ END INCLUDE SEGMENT apl_number_data.incl.pl1 ---------------------------------- */ 209 210 211 /* program */ 212 213 called_from_editor = "0"b; /* main entry */ 214 go to join; 215 216 apl_command_$from_editor: 217 entry (line, r_paren_pos, exit_flag); 218 219 called_from_editor = "1"b; 220 221 join: 222 exit_flag = 0; 223 cur_pos = r_paren_pos + 1; 224 225 call scan; 226 227 /* We don't care about the token type */ 228 229 cmd4 = substr (line, cur_pos, min (tok_len, 4)); /* expand or truncate to 4 chars for lookup */ 230 do cmd_number = lbound (cmd_table, 1) to hbound (cmd_table, 1) 231 while (cmd4 ^= substr (cmd_table (cmd_number), 1, 4)); 232 end; 233 234 if cmd_number <= hbound (cmd_table, 1) 235 then if (tok_len > 4 & substr (line, cur_pos, tok_len) = cmd_table (cmd_number)) | (tok_len <= 4) 236 then do; 237 cur_pos = cur_pos + tok_len; /* skip over command name */ 238 if called_from_editor & ^command_OK_in_editor (cmd_number) 239 then do; 240 call ioa_$ioa_switch (apl_static_$apl_output, "not while in editor"); 241 return; 242 end; 243 244 go to cmd (cmd_number); 245 end; 246 247 incorrect_command: 248 call ioa_$ioa_switch (apl_static_$apl_output, "incorrect command"); 249 return; 250 251 cmd (0): /* )R causes ready message */ 252 ready_mode.ready_state = "1"b; 253 call cu_$ready_proc (ready_mode); 254 return; 255 256 257 cmd (22): /* )OFF [HOLD] [: [SIGNOFF_LOCK]] */ 258 call off_command_parse; 259 260 cmd (1): /* )Q */ 261 cmd (2): /* )QUIT */ 262 exit_flag = apl_error_table_$return_from_apl; 263 return; 264 265 cmd (23): /* )CONTINUE [HOLD] [:SIGNOFF_LOCK] */ 266 call off_command_parse; 267 call apl_save_command_ ("continue", (ws_info.lock), code); 268 if code = 0 269 then go to cmd (1); /* if saved successfully, do )Q */ 270 ws_info.off_hold = "0"b; /* if error, clean up after ourselves */ 271 ws_info.signoff_lock = ""; /* .. */ 272 return; 273 274 cmd (3): /* )E command_line */ 275 cmd (24): /* )EXEC command_line */ 276 if ws_info.restrict_exec_command 277 then go to incorrect_command; 278 substr (line, 1, cur_pos - 1) = ""; /* blank out beginning of line, before actual command */ 279 /* (caveat vocator) */ 280 ws_info.transparent_to_signals = "1"b; /* while out in Multics command system, turn off our */ 281 call cu_$cp (addr (line), length (line), (0)); /* condition handler. The effect is intended to */ 282 ws_info.transparent_to_signals = "0"b; /* be as if it was in a separate process */ 283 return; 284 285 cmd (45): /* )VERSION */ 286 call scan; 287 if tok_type ^= NO_TOKEN 288 then go to incorrect_command; 289 290 call ioa_$ioa_switch (apl_static_$apl_output, "is ^a", apl_static_$version_number); 291 return; 292 293 cmd (47): /* Query command (?) */ 294 call scan; 295 if tok_type ^= NO_TOKEN 296 then go to incorrect_command; 297 298 do cmd_number = lbound (cmd_table, 1) to hbound (cmd_table, 1); 299 call apl_print_string_ ((cmd_table (cmd_number))); 300 end; 301 call apl_flush_buffer_nl_; 302 return; 303 304 cmd (37): /* )PORTS */ 305 call who; 306 return; 307 308 cmd (30): /* )MSG */ 309 if ws_info.restrict_msg_command 310 then go to incorrect_command; 311 312 call scan; 313 314 send_type = "0"b; 315 316 if tok_type = NO_TOKEN /* no argument */ 317 then on_off = "1"b; 318 else do; 319 if tok_type = NAME_TOKEN 320 then if substr (line, cur_pos, tok_len) = "on" 321 then on_off = "1"b; 322 else if substr (line, cur_pos, tok_len) = "off" 323 then on_off = "0"b; 324 else send_type = "1"b; 325 326 if ^send_type 327 then do; /* allow only one argument */ 328 329 cur_pos = cur_pos + tok_len; 330 call scan; 331 if tok_type ^= NO_TOKEN 332 then go to incorrect_command; 333 end; 334 end; 335 336 if ^send_type 337 then do; 338 if on_off 339 then command_line = "immediate_messages"; 340 else command_line = "defer_messages"; 341 end; 342 else command_line = "send_message " || substr (line, cur_pos); 343 344 call cu_$cp (addr (command_line), length (command_line), code); 345 if code ^= 0 346 then go to incorrect_command; 347 348 return; 349 350 cmd (4): /* )ERRS */ 351 call scan; 352 if tok_type = NO_TOKEN 353 then do; 354 call ioa_$ioa_switch (apl_static_$apl_output, "is ^[long^;brief^]", ws_info.long_error_mode); 355 return; 356 end; 357 else if tok_type ^= NAME_TOKEN 358 then go to incorrect_command; 359 360 old_flag = ws_info.long_error_mode; 361 362 if substr (line, cur_pos, tok_len) = "brief" 363 then on_off = "0"b; 364 else if substr (line, cur_pos, tok_len) = "long" 365 then on_off = "1"b; 366 else go to incorrect_command; 367 368 cur_pos = cur_pos + tok_len; 369 call scan; 370 if tok_type ^= NO_TOKEN 371 then go to incorrect_command; 372 373 call ioa_$ioa_switch (apl_static_$apl_output, "was ^[long^;brief^]", old_flag); 374 ws_info.long_error_mode = on_off; 375 return; 376 377 cmd (6): /* )DEBUG */ 378 if ws_info.restrict_debug_command 379 then go to incorrect_command; 380 call on_off_parse (ws_info.debug_mode); 381 return; 382 383 cmd (38): /* )METER */ 384 call on_off_parse (ws_info.meter_mode); 385 return; 386 387 cmd (19): /* )CHECK */ 388 call on_off_parse (ws_info.compatibility_check_mode); 389 return; 390 391 cmd (44): /* )TABS N_ */ 392 call iox_$control (apl_static_$apl_output, "get_tab_width", addr (old_tab_width), code); 393 /* get old width */ 394 call scan; /* find argument */ 395 396 if tok_type = NO_TOKEN 397 then do; /* no arg given */ 398 call ioa_$ioa_switch (apl_static_$apl_output, "is ^d", old_tab_width); 399 return; 400 end; 401 else if tok_type ^= INTEGER_TOKEN 402 then go to incorrect_command; 403 404 tab_width = apl_number; /* remember new value */ 405 call iox_$control (apl_static_$apl_output, "set_tab_width", addr (tab_width), code); 406 if code ^= 0 407 then go to incorrect_command; /* DIM didn't like value... */ 408 409 call ioa_$ioa_switch (apl_static_$apl_output, "was ^d", old_tab_width); 410 return; 411 412 /* commands for defining external functions */ 413 414 cmd (32): /* )ZFN */ 415 ext_fcn_class_code = 2; 416 go to external_function_command; 417 418 cmd (33): /* )MFN */ 419 ext_fcn_class_code = 3; 420 go to external_function_command; 421 422 cmd (34): /* )DFN */ 423 ext_fcn_class_code = 4; 424 external_function_command: 425 if ws_info.restrict_external_functions 426 then go to incorrect_command; 427 428 call scan; /* skip blanks before arg */ 429 430 if tok_type = NO_TOKEN 431 then go to incorrect_command; 432 amount_to_pass = length (line) - cur_pos + 1 - 1; /* the +1-1 is to strip off newline. This subroutine does the real work */ 433 call apl_external_fcn_defn_ (string_to_pass, ext_fcn_class_code); 434 return; 435 436 cmd (21): /* )HUH - reprint last error in long form */ 437 if ws_info.last_error_code = 0 438 then call ioa_$ioa_switch (apl_static_$apl_output, "no previous error"); 439 else call apl_error_$huh (ws_info.last_error_code); 440 return; 441 442 /* The following commands list the 3 flavors of workspace names in the same fashion. */ 443 444 cmd (7): /* )VARS */ 445 cmd (8): /* )GRPS */ 446 cmd (9): /* )FNS */ 447 cmd (48): /* )EFNS */ 448 call scan; /* look for optional argument */ 449 if tok_type = NO_TOKEN 450 then letter = " "; 451 else if tok_type = NAME_TOKEN 452 then if tok_len = 1 453 then letter = substr (line, cur_pos, 1); 454 else go to incorrect_command; 455 else go to incorrect_command; 456 457 if cmd_number = 7 458 then call apl_vars_command_ (letter, called_from_editor); 459 else if cmd_number = 9 460 then call apl_fns_command_ (letter, called_from_editor); 461 else if cmd_number = 48 462 then call apl_efns_command_ (letter, called_from_editor); 463 else call apl_grps_command_ (letter, called_from_editor); 464 return; 465 466 /* The following commands, if given with no argument, print the appropriate value, 467* else they attempt to change the ws parameter to that value */ 468 469 cmd (10): /* )DIGITS */ 470 call number_command (ws_info.digits, 1, 19); 471 return; 472 473 cmd (11): /* )ORIGIN */ 474 call number_command (ws_info.index_origin, 0, 1); 475 ws_info.float_index_origin = float (ws_info.index_origin); 476 /* in case has changed, update for iota */ 477 return; 478 479 480 cmd (12): /* )WIDTH */ 481 call number_command (ws_info.width, 30, 390); 482 call iox_$modes (apl_static_$apl_output, "ll" || convert_binary_integer_$decimal_string ((ws_info.width)), "", code) 483 ; 484 return; 485 486 cmd (40): /* )SYMBOLS */ 487 call number_command (ws_info.number_of_symbols, 0, 0); 488 return; 489 490 /* The following commands all deal with the workspace itself in some way. */ 491 492 cmd (5): /* )RESET */ 493 call ioa_$ioa_switch (apl_static_$apl_output, "not implemented"); 494 return; 495 496 cmd (13): /* )CLEAR */ 497 call scan; /* check for argument */ 498 if tok_type = NO_TOKEN 499 then do; /* normal clear with no argument */ 500 call apl_clear_workspace_; 501 call ioa_$ioa_switch (apl_static_$apl_output, "clear ws"); 502 exit_flag = apl_error_table_$ws_cleared; 503 return; 504 end; 505 else go to incorrect_command; 506 507 cmd (14): /* )SIV */ 508 cmd (46): /* )SINL */ 509 call apl_siv_command_; 510 return; 511 512 cmd (15): /* )SI */ 513 call apl_si_command_; 514 return; 515 516 517 cmd (16): /* )SAVE */ 518 if ws_info.restrict_save 519 then go to incorrect_command; 520 call ws_command (apl_save_command_); 521 return; 522 523 524 cmd (17): /* )LOAD */ 525 if ws_info.restrict_load 526 then go to incorrect_command; 527 call ws_command (apl_load_command_); 528 if code = 0 529 then exit_flag = apl_error_table_$ws_loaded; 530 return; 531 532 533 cmd (18): /* )WSID */ 534 call ws_command (apl_wsid_command_); 535 return; 536 537 /* The following commands are somewhat temporary, probably. They are an attempt to 538* provide a reasonable user interface. */ 539 540 cmd (20): /* )HELP command for getting help I guess */ 541 tok_len = length (line) - 1; /* drop trailing NL */ 542 do cur_pos = cur_pos to tok_len while (substr (line, cur_pos, 1) = " "); 543 end; 544 if cur_pos > tok_len /* nothing on line */ 545 then call help ("apl_help_available"); 546 else call help (substr (line, cur_pos, tok_len - cur_pos + 1)); 547 return; 548 549 cmd (31): /* )LIB */ 550 cmd (35): /* )LIBD is parsed the same way */ 551 cmd (43): /* )V1LIB */ 552 call scan; /* find argument, if any */ 553 if tok_type = NO_TOKEN 554 then amount_to_pass = 0; /* no arg, pass null string */ 555 else amount_to_pass = length (line) - cur_pos; /* pass rest of line, but not newline at end */ 556 557 call apl_directory_commands_ (cmd4, string_to_pass); 558 return; 559 560 561 cmd (36): /* )DROP */ 562 cmd (39): /* )V1DROP */ 563 call ws_command (drop_command); 564 return; 565 566 cmd (26): /* )COPY */ 567 call copy_command (apl_copy_command_, "0"b); 568 return; 569 570 cmd (27): /* )PCOPY */ 571 call copy_command (apl_copy_command_, "1"b); 572 return; 573 574 cmd (41): /* )V1COPY */ 575 call copy_command (apl_v1_copy_command_, "0"b); 576 return; 577 578 cmd (42): /* )V1PCOPY */ 579 call copy_command (apl_v1_copy_command_, "1"b); 580 return; 581 582 cmd (25): /* )ERASE */ 583 call compile_list; 584 call apl_erase_command_ (list_count, list_element); 585 return; 586 587 cmd (28): /* )GROUP */ 588 call compile_list; 589 call apl_group_command_ (list_count, list_element); 590 return; 591 592 cmd (29): /* )GRP */ 593 call compile_list; 594 if list_count ^= 1 595 then go to incorrect_command; 596 call apl_grp_command_ (list_element (1)); 597 return; 598 599 /* Internal procedures (in alphabetical order) */ 600 601 compile_list: 602 procedure; 603 604 list_count = 0; 605 606 list_loop: 607 call scan; 608 609 if tok_type = NO_TOKEN 610 then return; 611 612 if tok_type ^= NAME_TOKEN 613 then go to incorrect_command; 614 615 list_count = list_count + 1; 616 list_element (list_count) = substr (line, cur_pos, tok_len); 617 cur_pos = cur_pos + tok_len; 618 go to list_loop; 619 620 end compile_list; 621 622 drop_command: 623 proc (wsid, lock, code); 624 625 declare wsid char (*) parameter, 626 lock char (*) parameter, 627 code fixed bin (35) parameter; 628 629 if length (lock) ^= 0 630 then go to incorrect_command; /* no lock allowed */ 631 code = 0; /* code is not really used */ 632 call apl_directory_commands_ (cmd4, wsid); 633 end; 634 635 get_lock: 636 proc; 637 638 /* this proc is called when type-1 token seen, may be colon */ 639 640 if substr (line, cur_pos, 1) ^= ":" 641 then go to incorrect_command; 642 643 cur_pos = cur_pos + 1; 644 call scan; 645 646 if tok_type = NO_TOKEN /* colon but no lock = blank lock */ 647 then do; 648 lock_ptr = addr (QSpace); 649 lock_len = 1; 650 return; 651 end; 652 653 else if tok_type = DELIMITER_TOKEN 654 then do; 655 if tok_len ^= 1 656 then go to incorrect_command; 657 658 if substr (line, cur_pos, 1) ^= QQuadQuote 659 then go to incorrect_command; 660 661 cur_pos = cur_pos + 1; 662 663 /* get line from user attempting to use print-suppress */ 664 665 call apl_read_password_ (his_password); 666 if his_password = "*" 667 then do; 668 lock_len = 1; 669 lock_ptr = addr (QSpace); 670 end; 671 else do; 672 lock_len = length (his_password); 673 /* trailing spaces are OK */ 674 lock_ptr = addr (his_password); 675 end; 676 end; 677 678 else if tok_type ^= NAME_TOKEN 679 then go to incorrect_command; 680 681 else do; /* use just next token after colon as the lock */ 682 lock_ptr = addr (line_array (cur_pos)); 683 lock_len = tok_len; 684 cur_pos = cur_pos + tok_len; 685 end; 686 687 call scan; /* check for unwated tokens after lock */ 688 return; 689 690 end get_lock; 691 692 number_command: 693 procedure (variable, minimum, maximum); 694 695 declare (variable, minimum, maximum) 696 fixed bin parameter, 697 n fixed bin; 698 699 call scan; 700 701 if tok_type = NO_TOKEN /* no argument, tell what variable is */ 702 then call ioa_$ioa_switch (apl_static_$apl_output, "is ^d", variable); 703 else if minimum = maximum /* )SYMBOLS escape */ 704 then go to incorrect_command; /* can't assign to this one... */ 705 else if tok_type = INTEGER_TOKEN /* integer argument */ 706 then do; 707 n = apl_number; 708 if n < minimum 709 then go to incorrect_command; 710 else if n > maximum 711 then go to incorrect_command; 712 713 call ioa_$ioa_switch (apl_static_$apl_output, "was ^d", variable); 714 variable = n; 715 end; 716 717 else go to incorrect_command; /* name or floating point cruft */ 718 719 end number_command; 720 721 off_command_parse: 722 procedure; 723 724 call scan; 725 726 if tok_type = NO_TOKEN 727 then return; 728 729 if tok_type = NAME_TOKEN 730 then if substr (line, cur_pos, tok_len) = "hold" 731 then do; 732 ws_info.off_hold = "1"b; /* tell apl_subsystem_ to do an off hold */ 733 cur_pos = cur_pos + tok_len; 734 call scan; 735 end; 736 else go to incorrect_command; 737 738 if tok_type = DELIMITER_TOKEN 739 then do; 740 call get_lock; 741 742 if lock_len = 1 & lock_string = " " 743 then ws_info.signoff_lock = "*"; /* blank lock */ 744 else ws_info.signoff_lock = lock_string; 745 746 call scan; 747 end; 748 749 if tok_type ^= NO_TOKEN 750 then go to incorrect_command; 751 752 return; 753 754 end off_command_parse; 755 756 on_off_parse: 757 procedure (bv_flag); 758 759 /* parameters */ 760 761 declare bv_flag bit (1) unaligned; 762 763 /* automatic */ 764 765 declare new_flag bit (1) aligned; 766 767 /* program */ 768 769 call scan; 770 if tok_type = NO_TOKEN 771 then do; /* if no argument, print state */ 772 call ioa_$ioa_switch (apl_static_$apl_output, "is ^[on^;off^]", bv_flag); 773 return; 774 end; 775 else if tok_type ^= NAME_TOKEN 776 then go to incorrect_command; 777 778 if substr (line, cur_pos, tok_len) = "on" 779 then new_flag = "1"b; 780 else if substr (line, cur_pos, tok_len) = "off" 781 then new_flag = "0"b; 782 else go to incorrect_command; 783 784 cur_pos = cur_pos + tok_len; 785 call scan; 786 if tok_type ^= NO_TOKEN 787 then go to incorrect_command; /* allow only one argument */ 788 789 call ioa_$ioa_switch (apl_static_$apl_output, "was ^[on^;off^]", bv_flag); 790 bv_flag = new_flag; 791 return; 792 793 end on_off_parse; 794 795 scan: 796 procedure (); /* lazy programmers... */ 797 798 call apl_scan_ (line, cur_pos, cur_pos, tok_len, tok_type, addr (apl_number)); 799 800 end scan; 801 802 ws_command: 803 proc (command); 804 805 copy = "0"b; 806 go to it; 807 808 809 copy_command: 810 entry (command, protected); 811 copy = "1"b; 812 813 declare command entry options (variable), 814 (copy, protected) bit (1) aligned; 815 816 declare cur_state fixed bin, 817 saw_number bit (1) aligned, 818 last_in_wsid fixed bin (21), 819 start_of_wsid fixed bin (21); 820 821 /* internal static */ 822 823 declare new_state (0:1, 0:5) fixed bin (8) unal internal static initial (3, 0, 1, 2, 2, 3, 3, 0, 3, 2, 2, 3); 824 825 /* program */ 826 827 it: 828 lock_ptr = addr (wsid_ptr); /* avoid uninitialized ptr (to null string) */ 829 lock_len = 0; /* if no lock specified, will use null string */ 830 call scan; 831 832 /* Check for optional wsid (and/or lock), and optional arguments for copy */ 833 834 saw_number = "0"b; 835 last_in_wsid, start_of_wsid = cur_pos; 836 837 if tok_type = INTEGER_TOKEN 838 then do; 839 saw_number = "1"b; 840 last_in_wsid, cur_pos = cur_pos + tok_len; 841 call scan; 842 end; 843 844 cur_state = 0; 845 846 begin: 847 if (tok_type = DELIMITER_TOKEN) & (substr (line, cur_pos, 1) = ":") 848 then tok_type = 5; /* special for colon */ 849 850 cur_state = new_state (cur_state, tok_type); 851 go to state (cur_state); 852 853 state (0): /* delimiter seen */ 854 if saw_number 855 then if (substr (line, cur_pos, 1) = "<") | (substr (line, cur_pos, 1) = ">") 856 then go to incorrect_command; /* can't mix lib number and pathname */ 857 858 state (1): /* first name seen */ 859 last_in_wsid, cur_pos = cur_pos + tok_len; 860 call scan; 861 go to begin; 862 863 state (2): /* error - number seen */ 864 go to incorrect_command; 865 866 state (3): /* done */ 867 if tok_type = 5 868 then call get_lock; 869 870 wsid_len = last_in_wsid - start_of_wsid; 871 wsid_ptr = addr (line_array (start_of_wsid)); 872 873 if copy 874 then do; 875 call compile_list; 876 call command (wsid_string, lock_string, protected, list_element, list_count, code); 877 return; 878 end; 879 880 if tok_type ^= NO_TOKEN 881 then go to incorrect_command; /* extraneous arguments */ 882 883 call command (wsid_string, lock_string, code); 884 885 end /* ws_command */; 886 887 end /* apl_command_ */; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/29/83 1346.2 apl_command_.pl1 >special_ldd>on>apl.1129>apl_command_.pl1 206 1 03/27/82 0438.6 apl_characters.incl.pl1 >ldd>include>apl_characters.incl.pl1 207 2 03/27/82 0439.1 apl_scan_info.incl.pl1 >ldd>include>apl_scan_info.incl.pl1 208 3 03/27/82 0439.2 apl_ws_info.incl.pl1 >ldd>include>apl_ws_info.incl.pl1 209 4 03/27/82 0429.8 apl_number_data.incl.pl1 >ldd>include>apl_number_data.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. DELIMITER_TOKEN constant fixed bin(17,0) initial dcl 2-10 ref 653 738 846 INTEGER_TOKEN constant fixed bin(17,0) initial dcl 2-10 ref 401 705 837 NAME_TOKEN constant fixed bin(17,0) initial dcl 2-10 ref 319 357 451 612 678 729 775 NO_TOKEN constant fixed bin(17,0) initial dcl 2-10 ref 287 295 316 331 352 370 396 430 449 498 553 609 646 701 726 749 770 786 880 QQuadQuote 003522 constant char(1) initial unaligned dcl 1-11 ref 658 QSpace 000245 constant char(1) initial unaligned dcl 1-11 set ref 648 669 addr builtin function dcl 82 ref 281 281 344 344 391 391 405 405 433 433 557 557 648 669 674 682 682 798 798 827 871 871 amount_to_pass 000100 automatic fixed bin(21,0) dcl 44 set ref 432* 433 433 553* 555* 557 557 apl_clear_workspace_ 000052 constant entry external dcl 87 ref 500 apl_copy_command_ 000070 constant entry external dcl 87 ref 566 566 570 570 apl_directory_commands_ 000066 constant entry external dcl 87 ref 557 632 apl_efns_command_ 000046 constant entry external dcl 87 ref 461 apl_erase_command_ 000074 constant entry external dcl 87 ref 584 apl_error_$huh 000026 constant entry external dcl 87 ref 439 apl_error_table_$return_from_apl 000102 external static fixed bin(35,0) dcl 121 ref 260 apl_error_table_$ws_cleared 000104 external static fixed bin(35,0) dcl 121 ref 502 apl_error_table_$ws_loaded 000106 external static fixed bin(35,0) dcl 121 ref 528 apl_external_fcn_defn_ 000016 constant entry external dcl 87 ref 433 apl_flush_buffer_nl_ 000010 constant entry external dcl 87 ref 301 apl_fns_command_ 000044 constant entry external dcl 87 ref 459 apl_group_command_ 000076 constant entry external dcl 87 ref 589 apl_grp_command_ 000100 constant entry external dcl 87 ref 596 apl_grps_command_ 000050 constant entry external dcl 87 ref 463 apl_load_command_ 000062 constant entry external dcl 87 ref 527 527 apl_number 005100 automatic float bin(63) dcl 68 set ref 404 707 798 798 apl_print_string_ 000012 constant entry external dcl 87 ref 299 apl_read_password_ 000014 constant entry external dcl 87 ref 665 apl_save_command_ 000060 constant entry external dcl 87 ref 267 520 520 apl_scan_ 000114 constant entry external dcl 2-6 ref 798 apl_si_command_ 000054 constant entry external dcl 87 ref 512 apl_siv_command_ 000056 constant entry external dcl 87 ref 507 apl_static_$apl_output 000110 external static pointer dcl 121 set ref 240* 247* 290* 354* 373* 391* 398* 405* 409* 436* 482* 492* 501* 701* 713* 772* 789* apl_static_$version_number 000112 external static char(5) unaligned dcl 121 set ref 290* apl_static_$ws_info_ptr 000116 external static structure level 1 dcl 3-11 apl_v1_copy_command_ 000072 constant entry external dcl 87 ref 574 574 578 578 apl_vars_command_ 000042 constant entry external dcl 87 ref 457 apl_wsid_command_ 000064 constant entry external dcl 87 ref 533 533 bv_flag parameter bit(1) unaligned dcl 761 set ref 756 772* 789* 790* called_from_editor 000101 automatic bit(1) dcl 44 set ref 213* 219* 238 457* 459* 461* 463* cmd4 005024 automatic char(4) dcl 44 set ref 229* 230 557* 632* cmd_number 005025 automatic fixed bin(17,0) dcl 44 set ref 230* 230* 234 234 238 244 298* 299* 457 459 461 cmd_table 000072 constant char(8) initial array dcl 135 ref 230 230 230 234 234 298 298 299 code 005073 automatic fixed bin(35,0) dcl 44 in procedure "apl_command_" set ref 267* 268 344* 345 391* 405* 406 482* 528 876* 883* code parameter fixed bin(35,0) dcl 625 in procedure "drop_command" set ref 622 631* command parameter entry variable dcl 813 ref 802 809 876 883 command_OK_in_editor 000070 constant bit(1) initial array unaligned dcl 186 ref 238 command_line 005031 automatic char(132) unaligned dcl 44 set ref 338* 340* 342* 344 344 344 344 compatibility_check_mode 1(14) based bit(1) level 3 packed unaligned dcl 3-16 set ref 387* convert_binary_integer_$decimal_string 000024 constant entry external dcl 87 ref 482 copy 005164 automatic bit(1) dcl 813 set ref 805* 811* 873 cu_$cp 000040 constant entry external dcl 87 ref 281 344 cu_$ready_proc 000036 constant entry external dcl 87 ref 253 cur_pos 000102 automatic fixed bin(21,0) dcl 44 set ref 223* 229 234 237* 237 278 319 322 329* 329 342 362 364 368* 368 432 433 451 542* 542 542* 544 546 546 546 546 555 557 616 617* 617 640 643* 643 658 661* 661 682 684* 684 729 733* 733 778 780 784* 784 798* 798* 835 840 840* 846 853 853 858 858* cur_state 005165 automatic fixed bin(17,0) dcl 816 set ref 844* 850* 850 851 debug_mode 1(01) based bit(1) level 3 packed unaligned dcl 3-16 set ref 380* digits 2 based fixed bin(17,0) level 3 dcl 3-16 set ref 469* exit_flag parameter fixed bin(35,0) dcl 38 set ref 11 216 221* 260* 502* 528* ext_fcn_class_code 005075 automatic fixed bin(17,0) dcl 68 set ref 414* 418* 422* 433* float builtin function dcl 82 ref 475 float_index_origin 10 based float bin(63) level 3 dcl 3-16 set ref 475* hbound builtin function dcl 82 ref 230 234 298 help 000034 constant entry external dcl 87 ref 544 546 his_password 000104 automatic char(8) dcl 44 set ref 665* 666 672 674 index_origin 4 based fixed bin(17,0) level 3 dcl 3-16 set ref 473* 475 ioa_$ioa_switch 000030 constant entry external dcl 87 ref 240 247 290 354 373 398 409 436 492 501 701 713 772 789 iox_$control 000022 constant entry external dcl 87 ref 391 405 iox_$modes 000020 constant entry external dcl 87 ref 482 last_error_code 67 based fixed bin(35,0) level 2 dcl 3-16 set ref 436 439* last_in_wsid 005167 automatic fixed bin(21,0) dcl 816 set ref 835* 840* 858* 870 lbound builtin function dcl 82 ref 230 298 length builtin function dcl 82 ref 281 281 344 344 432 540 555 629 672 letter 005030 automatic char(1) dcl 44 set ref 449* 451* 457* 459* 461* 463* line parameter char dcl 38 set ref 11 216 229 234 278* 281 281 281 281 319 322 342 362 364 432 433 451 540 542 546 546 555 557 616 640 658 682 729 778 780 798* 846 853 853 871 line_array based char(1) array unaligned dcl 75 set ref 433 557 682 871 list_count 000106 automatic fixed bin(17,0) dcl 44 set ref 584* 589* 594 604* 615* 615 616 876* list_element 000107 automatic char(100) array unaligned dcl 44 set ref 584* 589* 596* 616* 876* lock parameter char unaligned dcl 625 in procedure "drop_command" ref 622 629 lock 26 based char(32) level 2 in structure "ws_info" dcl 3-16 in procedure "apl_command_" ref 267 lock_len 005013 automatic fixed bin(21,0) dcl 44 set ref 649* 668* 672* 683* 742 742 744 829* 876 876 883 883 lock_ptr 005014 automatic pointer dcl 44 set ref 648* 669* 674* 682* 742 744 827* 876 883 lock_string based char unaligned dcl 75 set ref 742 744 876* 883* long_error_mode 1 based bit(1) level 3 packed unaligned dcl 3-16 set ref 354* 360 374* maximum parameter fixed bin(17,0) dcl 695 ref 692 703 710 meter_mode 1(12) based bit(1) level 3 packed unaligned dcl 3-16 set ref 383* min builtin function dcl 82 ref 229 minimum parameter fixed bin(17,0) dcl 695 ref 692 703 708 n 005130 automatic fixed bin(17,0) dcl 695 set ref 707* 708 710 714 new_flag 005146 automatic bit(1) dcl 765 set ref 778* 780* 790 new_state 000065 constant fixed bin(8,0) initial array unaligned dcl 823 ref 850 number_of_symbols 12 based fixed bin(17,0) level 3 dcl 3-16 set ref 486* off_hold 1(10) based bit(1) level 3 packed unaligned dcl 3-16 set ref 270* 732* old_flag 005026 automatic bit(1) dcl 44 set ref 360* 373* old_tab_width 005076 automatic fixed bin(17,0) dcl 68 set ref 391 391 398* 409* on_off 005027 automatic bit(1) dcl 44 set ref 316* 319* 322* 338 362* 364* 374 protected parameter bit(1) dcl 813 set ref 809 876* r_paren_pos parameter fixed bin(21,0) dcl 38 ref 11 216 223 ready_mode 005074 automatic structure level 1 dcl 44 set ref 253* ready_state 005074 automatic bit(1) level 2 packed unaligned dcl 44 set ref 251* restrict_debug_command 1(04) based bit(1) level 3 packed unaligned dcl 3-16 ref 377 restrict_exec_command 1(03) based bit(1) level 3 packed unaligned dcl 3-16 ref 274 restrict_external_functions 1(05) based bit(1) level 3 packed unaligned dcl 3-16 ref 424 restrict_load 1(06) based bit(1) level 3 packed unaligned dcl 3-16 ref 524 restrict_msg_command 1(13) based bit(1) level 3 packed unaligned dcl 3-16 ref 308 restrict_save 1(08) based bit(1) level 3 packed unaligned dcl 3-16 ref 517 saw_number 005166 automatic bit(1) dcl 816 set ref 834* 839* 853 send_type 005072 automatic bit(1) dcl 44 set ref 314* 324* 326 336 signoff_lock 70 based char(32) level 2 dcl 3-16 set ref 271* 742* 744* start_of_wsid 005170 automatic fixed bin(21,0) dcl 816 set ref 835* 870 871 static_ws_info_ptr 000116 external static pointer level 2 packed unaligned dcl 3-11 ref 3-7 string_to_pass based char unaligned dcl 75 set ref 433* 557* substr builtin function dcl 82 set ref 229 230 234 278* 319 322 342 362 364 451 542 546 546 616 640 658 729 778 780 846 853 853 switches 1 based structure level 2 packed unaligned dcl 3-16 tab_width 005077 automatic fixed bin(17,0) dcl 68 set ref 404* 405 405 tok_len 005016 automatic fixed bin(21,0) dcl 44 set ref 229 234 234 234 237 319 322 329 362 364 368 451 540* 542 544 546 546 616 617 655 683 684 729 733 778 780 784 798* 840 858 tok_type 005017 automatic fixed bin(17,0) dcl 44 set ref 287 295 316 319 331 352 357 370 396 401 430 449 451 498 553 609 612 646 653 678 701 705 726 729 738 749 770 775 786 798* 837 846 846* 850 866 880 transparent_to_signals 1(11) based bit(1) level 3 packed unaligned dcl 3-16 set ref 280* 282* values 2 based structure level 2 dcl 3-16 variable parameter fixed bin(17,0) dcl 695 set ref 692 701* 713* 714* who 000032 constant entry external dcl 87 ref 304 width 3 based fixed bin(17,0) level 3 dcl 3-16 set ref 480* 482 ws_info based structure level 1 dcl 3-16 ws_info_ptr 005102 automatic pointer initial dcl 3-7 set ref 267 270 271 274 280 282 308 354 360 374 377 380 383 387 424 436 439 469 473 475 475 480 482 486 517 524 3-7* 732 742 744 wsid parameter char unaligned dcl 625 set ref 622 632* wsid_len 005020 automatic fixed bin(21,0) dcl 44 set ref 870* 876 876 883 883 wsid_ptr 005022 automatic pointer dcl 44 set ref 827 871* 876 883 wsid_string based char unaligned dcl 75 set ref 876* 883* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. Binary internal static bit(1) initial dcl 4-16 NUMBER_TOKEN internal static fixed bin(17,0) initial dcl 2-10 NumberSize internal static fixed bin(4,0) initial dcl 4-25 QAlpha internal static char(1) initial unaligned dcl 1-11 QAndSign internal static char(1) initial unaligned dcl 1-11 QApostrophe internal static char(1) initial unaligned dcl 1-11 QBackSlash internal static char(1) initial unaligned dcl 1-11 QBackSlashHyphen internal static char(1) initial unaligned dcl 1-11 QBackSpace internal static char(1) initial unaligned dcl 1-11 QBell internal static char(1) initial unaligned dcl 1-11 QCap internal static char(1) initial unaligned dcl 1-11 QCeiling internal static char(1) initial unaligned dcl 1-11 QCentSign internal static char(1) initial unaligned dcl 1-11 QCircle internal static char(1) initial unaligned dcl 1-11 QCircleBackSlash internal static char(1) initial unaligned dcl 1-11 QCircleBar internal static char(1) initial unaligned dcl 1-11 QCircleHyphen internal static char(1) initial unaligned dcl 1-11 QCircleSlash internal static char(1) initial unaligned dcl 1-11 QCircleStar internal static char(1) initial unaligned dcl 1-11 QColon internal static char(1) initial unaligned dcl 1-11 QComma internal static char(1) initial unaligned dcl 1-11 QCommaHyphen internal static char(1) initial unaligned dcl 1-11 QConditionalNewLine internal static char(1) initial unaligned dcl 1-11 QCup internal static char(1) initial unaligned dcl 1-11 QDeCode internal static char(1) initial unaligned dcl 1-11 QDel internal static char(1) initial unaligned dcl 1-11 QDelTilde internal static char(1) initial unaligned dcl 1-11 QDelta internal static char(1) initial unaligned dcl 1-11 QDelta_ internal static char(1) initial unaligned dcl 1-11 QDiamond internal static char(1) initial unaligned dcl 1-11 QDiaresis internal static char(1) initial unaligned dcl 1-11 QDivision internal static char(1) initial unaligned dcl 1-11 QDollar internal static char(1) initial unaligned dcl 1-11 QDomino internal static char(1) initial unaligned dcl 1-11 QDownArrow internal static char(1) initial unaligned dcl 1-11 QEight internal static char(1) initial unaligned dcl 1-11 QEight_ internal static char(1) initial unaligned dcl 1-11 QEnCode internal static char(1) initial unaligned dcl 1-11 QEpsilon internal static char(1) initial unaligned dcl 1-11 QEqual internal static char(1) initial unaligned dcl 1-11 QExclamation internal static char(1) initial unaligned dcl 1-11 QExecuteSign internal static char(1) initial unaligned dcl 1-11 QFive internal static char(1) initial unaligned dcl 1-11 QFive_ internal static char(1) initial unaligned dcl 1-11 QFloor internal static char(1) initial unaligned dcl 1-11 QFormatSign internal static char(1) initial unaligned dcl 1-11 QFour internal static char(1) initial unaligned dcl 1-11 QFour_ internal static char(1) initial unaligned dcl 1-11 QGradeDown internal static char(1) initial unaligned dcl 1-11 QGradeUp internal static char(1) initial unaligned dcl 1-11 QGreaterOrEqual internal static char(1) initial unaligned dcl 1-11 QGreaterThan internal static char(1) initial unaligned dcl 1-11 QIBeam internal static char(1) initial unaligned dcl 1-11 QIota internal static char(1) initial unaligned dcl 1-11 QLamp internal static char(1) initial unaligned dcl 1-11 QLeftArrow internal static char(1) initial unaligned dcl 1-11 QLeftBrace internal static char(1) initial unaligned dcl 1-11 QLeftBracket internal static char(1) initial unaligned dcl 1-11 QLeftLump internal static char(1) initial unaligned dcl 1-11 QLeftParen internal static char(1) initial unaligned dcl 1-11 QLeftTack internal static char(1) initial unaligned dcl 1-11 QLessOrEqual internal static char(1) initial unaligned dcl 1-11 QLessThan internal static char(1) initial unaligned dcl 1-11 QLetterA internal static char(1) initial unaligned dcl 1-11 QLetterA_ internal static char(1) initial unaligned dcl 1-11 QLetterB internal static char(1) initial unaligned dcl 1-11 QLetterB_ internal static char(1) initial unaligned dcl 1-11 QLetterC internal static char(1) initial unaligned dcl 1-11 QLetterC_ internal static char(1) initial unaligned dcl 1-11 QLetterD internal static char(1) initial unaligned dcl 1-11 QLetterD_ internal static char(1) initial unaligned dcl 1-11 QLetterE internal static char(1) initial unaligned dcl 1-11 QLetterE_ internal static char(1) initial unaligned dcl 1-11 QLetterF internal static char(1) initial unaligned dcl 1-11 QLetterF_ internal static char(1) initial unaligned dcl 1-11 QLetterG internal static char(1) initial unaligned dcl 1-11 QLetterG_ internal static char(1) initial unaligned dcl 1-11 QLetterH internal static char(1) initial unaligned dcl 1-11 QLetterH_ internal static char(1) initial unaligned dcl 1-11 QLetterI internal static char(1) initial unaligned dcl 1-11 QLetterI_ internal static char(1) initial unaligned dcl 1-11 QLetterJ internal static char(1) initial unaligned dcl 1-11 QLetterJ_ internal static char(1) initial unaligned dcl 1-11 QLetterK internal static char(1) initial unaligned dcl 1-11 QLetterK_ internal static char(1) initial unaligned dcl 1-11 QLetterL internal static char(1) initial unaligned dcl 1-11 QLetterL_ internal static char(1) initial unaligned dcl 1-11 QLetterM internal static char(1) initial unaligned dcl 1-11 QLetterM_ internal static char(1) initial unaligned dcl 1-11 QLetterN internal static char(1) initial unaligned dcl 1-11 QLetterN_ internal static char(1) initial unaligned dcl 1-11 QLetterO internal static char(1) initial unaligned dcl 1-11 QLetterO_ internal static char(1) initial unaligned dcl 1-11 QLetterP internal static char(1) initial unaligned dcl 1-11 QLetterP_ internal static char(1) initial unaligned dcl 1-11 QLetterQ internal static char(1) initial unaligned dcl 1-11 QLetterQ_ internal static char(1) initial unaligned dcl 1-11 QLetterR internal static char(1) initial unaligned dcl 1-11 QLetterR_ internal static char(1) initial unaligned dcl 1-11 QLetterS internal static char(1) initial unaligned dcl 1-11 QLetterS_ internal static char(1) initial unaligned dcl 1-11 QLetterT internal static char(1) initial unaligned dcl 1-11 QLetterT_ internal static char(1) initial unaligned dcl 1-11 QLetterU internal static char(1) initial unaligned dcl 1-11 QLetterU_ internal static char(1) initial unaligned dcl 1-11 QLetterV internal static char(1) initial unaligned dcl 1-11 QLetterV_ internal static char(1) initial unaligned dcl 1-11 QLetterW internal static char(1) initial unaligned dcl 1-11 QLetterW_ internal static char(1) initial unaligned dcl 1-11 QLetterX internal static char(1) initial unaligned dcl 1-11 QLetterX_ internal static char(1) initial unaligned dcl 1-11 QLetterY internal static char(1) initial unaligned dcl 1-11 QLetterY_ internal static char(1) initial unaligned dcl 1-11 QLetterZ internal static char(1) initial unaligned dcl 1-11 QLetterZ_ internal static char(1) initial unaligned dcl 1-11 QLineFeed internal static char(1) initial unaligned dcl 1-11 QMarkError internal static char(1) initial unaligned dcl 1-11 QMinus internal static char(1) initial unaligned dcl 1-11 QNandSign internal static char(1) initial unaligned dcl 1-11 QNewLine internal static char(1) initial unaligned dcl 1-11 QNine internal static char(1) initial unaligned dcl 1-11 QNine_ internal static char(1) initial unaligned dcl 1-11 QNorSign internal static char(1) initial unaligned dcl 1-11 QNotEqual internal static char(1) initial unaligned dcl 1-11 QOmega internal static char(1) initial unaligned dcl 1-11 QOne internal static char(1) initial unaligned dcl 1-11 QOne_ internal static char(1) initial unaligned dcl 1-11 QOrSign internal static char(1) initial unaligned dcl 1-11 QPeriod internal static char(1) initial unaligned dcl 1-11 QPlus internal static char(1) initial unaligned dcl 1-11 QQuad internal static char(1) initial unaligned dcl 1-11 QQuestion internal static char(1) initial unaligned dcl 1-11 QRho internal static char(1) initial unaligned dcl 1-11 QRightArrow internal static char(1) initial unaligned dcl 1-11 QRightBrace internal static char(1) initial unaligned dcl 1-11 QRightBracket internal static char(1) initial unaligned dcl 1-11 QRightLump internal static char(1) initial unaligned dcl 1-11 QRightParen internal static char(1) initial unaligned dcl 1-11 QRightTack internal static char(1) initial unaligned dcl 1-11 QSemiColon internal static char(1) initial unaligned dcl 1-11 QSeven internal static char(1) initial unaligned dcl 1-11 QSeven_ internal static char(1) initial unaligned dcl 1-11 QSix internal static char(1) initial unaligned dcl 1-11 QSix_ internal static char(1) initial unaligned dcl 1-11 QSlash internal static char(1) initial unaligned dcl 1-11 QSlashHyphen internal static char(1) initial unaligned dcl 1-11 QSmallCircle internal static char(1) initial unaligned dcl 1-11 QStar internal static char(1) initial unaligned dcl 1-11 QTab internal static char(1) initial unaligned dcl 1-11 QThree internal static char(1) initial unaligned dcl 1-11 QThree_ internal static char(1) initial unaligned dcl 1-11 QTilde internal static char(1) initial unaligned dcl 1-11 QTimes internal static char(1) initial unaligned dcl 1-11 QTwo internal static char(1) initial unaligned dcl 1-11 QTwo_ internal static char(1) initial unaligned dcl 1-11 QUnderLine internal static char(1) initial unaligned dcl 1-11 QUpArrow internal static char(1) initial unaligned dcl 1-11 QUpperMinus internal static char(1) initial unaligned dcl 1-11 QVerticalBar internal static char(1) initial unaligned dcl 1-11 QZero internal static char(1) initial unaligned dcl 1-11 QZero_ internal static char(1) initial unaligned dcl 1-11 TheBiggestNumberWeveGot internal static float bin(63) initial dcl 4-16 TheSmallestNumberWeveGot internal static float bin(63) initial dcl 4-16 apl_editor_scan_ 000000 constant entry external dcl 2-5 max_parse_stack_depth internal static fixed bin(17,0) initial dcl 3-98 output_buffer based char unaligned dcl 3-94 NAMES DECLARED BY EXPLICIT CONTEXT. apl_command_ 000423 constant entry external dcl 11 apl_command_$from_editor 000443 constant entry external dcl 216 begin 003315 constant label dcl 846 ref 861 cmd 000000 constant label array(0:48) dcl 251 ref 244 268 compile_list 002527 constant entry internal dcl 601 ref 582 587 592 875 copy_command 003266 constant entry internal dcl 809 ref 566 570 574 578 drop_command 002555 constant entry internal dcl 622 ref 561 561 external_function_command 001527 constant label dcl 424 ref 416 420 get_lock 002624 constant entry internal dcl 635 ref 740 866 incorrect_command 000575 constant label dcl 247 ref 274 287 295 308 331 345 357 364 370 377 401 406 424 430 451 451 498 517 524 594 612 629 640 655 658 678 703 705 708 710 729 749 775 780 786 853 863 880 it 003272 constant label dcl 827 ref 806 join 000461 constant label dcl 221 ref 214 list_loop 002531 constant label dcl 606 ref 618 number_command 002726 constant entry internal dcl 692 ref 469 473 480 486 off_command_parse 003025 constant entry internal dcl 721 ref 257 265 on_off_parse 003103 constant entry internal dcl 756 ref 380 383 387 scan 003221 constant entry internal dcl 795 ref 225 285 293 312 330 350 369 394 428 444 496 549 606 644 687 699 724 734 746 769 785 830 841 860 state 000061 constant label array(0:3) dcl 853 ref 851 ws_command 003262 constant entry internal dcl 802 ref 520 527 533 561 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 4230 4350 3527 4240 Length 4724 3527 120 337 500 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME apl_command_ 2834 external procedure is an external procedure. compile_list internal procedure shares stack frame of external procedure apl_command_. drop_command 76 internal procedure is assigned to an entry variable. get_lock internal procedure shares stack frame of external procedure apl_command_. number_command internal procedure shares stack frame of external procedure apl_command_. off_command_parse internal procedure shares stack frame of external procedure apl_command_. on_off_parse internal procedure shares stack frame of external procedure apl_command_. scan internal procedure shares stack frame of external procedure apl_command_. ws_command internal procedure shares stack frame of external procedure apl_command_. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME apl_command_ 000100 amount_to_pass apl_command_ 000101 called_from_editor apl_command_ 000102 cur_pos apl_command_ 000104 his_password apl_command_ 000106 list_count apl_command_ 000107 list_element apl_command_ 005013 lock_len apl_command_ 005014 lock_ptr apl_command_ 005016 tok_len apl_command_ 005017 tok_type apl_command_ 005020 wsid_len apl_command_ 005022 wsid_ptr apl_command_ 005024 cmd4 apl_command_ 005025 cmd_number apl_command_ 005026 old_flag apl_command_ 005027 on_off apl_command_ 005030 letter apl_command_ 005031 command_line apl_command_ 005072 send_type apl_command_ 005073 code apl_command_ 005074 ready_mode apl_command_ 005075 ext_fcn_class_code apl_command_ 005076 old_tab_width apl_command_ 005077 tab_width apl_command_ 005100 apl_number apl_command_ 005102 ws_info_ptr apl_command_ 005130 n number_command 005146 new_flag on_off_parse 005164 copy ws_command 005165 cur_state ws_command 005166 saw_number ws_command 005167 last_in_wsid ws_command 005170 start_of_wsid ws_command THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. fx1_to_fl2 alloc_cs call_var_desc call_ext_out_desc call_ext_out return fl2_to_fx1 tra_ext shorten_stack ext_entry_desc int_entry_desc THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. apl_clear_workspace_ apl_copy_command_ apl_directory_commands_ apl_efns_command_ apl_erase_command_ apl_error_$huh apl_external_fcn_defn_ apl_flush_buffer_nl_ apl_fns_command_ apl_group_command_ apl_grp_command_ apl_grps_command_ apl_load_command_ apl_print_string_ apl_read_password_ apl_save_command_ apl_scan_ apl_si_command_ apl_siv_command_ apl_v1_copy_command_ apl_vars_command_ apl_wsid_command_ convert_binary_integer_$decimal_string cu_$cp cu_$ready_proc help ioa_$ioa_switch iox_$control iox_$modes who THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. apl_error_table_$return_from_apl apl_error_table_$ws_cleared apl_error_table_$ws_loaded apl_static_$apl_output apl_static_$version_number apl_static_$ws_info_ptr LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 3 7 000412 11 000417 213 000437 214 000440 216 000441 219 000457 221 000461 223 000463 225 000466 229 000467 230 000501 232 000511 234 000513 237 000536 238 000537 240 000547 241 000572 244 000573 247 000575 249 000615 251 000616 253 000620 254 000627 257 000630 260 000631 263 000635 265 000636 267 000637 268 000666 270 000670 271 000673 272 000676 274 000677 278 000703 280 000712 281 000714 282 000734 283 000737 285 000740 287 000741 290 000743 291 000766 293 000767 295 000770 298 000772 299 000777 300 001014 301 001016 302 001023 304 001024 306 001031 308 001032 312 001036 314 001037 316 001040 319 001045 322 001062 324 001070 326 001072 329 001074 330 001076 331 001077 336 001101 338 001103 340 001111 341 001114 342 001115 344 001144 345 001164 348 001166 350 001167 352 001170 354 001172 355 001217 357 001220 360 001222 362 001226 364 001240 368 001246 369 001250 370 001251 373 001253 374 001302 375 001307 377 001310 380 001314 381 001324 383 001325 385 001336 387 001337 389 001350 391 001351 394 001403 396 001404 398 001406 399 001431 401 001432 404 001434 405 001437 406 001471 409 001473 410 001516 414 001517 416 001521 418 001522 420 001524 422 001525 424 001527 428 001533 430 001534 432 001536 433 001541 434 001565 436 001566 439 001612 440 001621 444 001622 449 001623 451 001630 457 001644 459 001661 461 001675 463 001711 464 001722 469 001723 471 001742 473 001743 475 001761 477 001765 480 001766 482 002005 484 002063 486 002065 488 002102 492 002103 494 002124 496 002125 498 002126 500 002130 501 002135 502 002154 503 002160 507 002161 510 002166 512 002167 514 002174 517 002175 520 002201 521 002210 524 002211 527 002215 528 002224 530 002232 533 002233 535 002242 540 002243 542 002246 543 002263 544 002265 546 002307 547 002335 549 002337 553 002340 555 002344 557 002347 558 002374 561 002375 564 002402 566 002403 568 002414 570 002415 572 002426 574 002427 576 002440 578 002441 580 002452 582 002453 584 002454 585 002471 587 002472 589 002473 590 002510 592 002511 594 002512 596 002515 597 002526 601 002527 604 002530 606 002531 609 002532 612 002535 615 002537 616 002540 617 002552 618 002553 622 002554 629 002575 631 002602 632 002604 633 002623 635 002624 640 002625 643 002634 644 002635 646 002636 648 002640 649 002642 650 002644 653 002645 655 002647 658 002652 661 002661 665 002662 666 002671 668 002676 669 002700 670 002702 672 002703 674 002705 676 002707 678 002710 682 002712 683 002721 684 002723 687 002724 688 002725 692 002726 699 002730 701 002731 703 002760 705 002764 707 002767 708 002772 710 002774 713 002776 714 003021 719 003024 721 003025 724 003026 726 003027 729 003032 732 003044 733 003047 734 003050 738 003051 740 003054 742 003055 744 003072 746 003077 749 003100 752 003102 756 003103 769 003105 770 003106 772 003110 773 003136 775 003137 778 003141 780 003154 784 003161 785 003162 786 003163 789 003165 790 003213 791 003220 795 003221 798 003222 800 003261 802 003262 805 003264 806 003265 809 003266 811 003270 827 003272 829 003274 830 003275 834 003276 835 003277 837 003302 839 003305 840 003307 841 003313 844 003314 846 003315 850 003333 851 003347 853 003350 858 003357 860 003363 861 003364 863 003365 866 003366 870 003372 871 003375 873 003404 875 003406 876 003407 877 003452 880 003453 883 003455 885 003503 ----------------------------------------------------------- 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