Compilation listing of file >2.1spec>online>mib083074>bcpl_lex0.bcpl. Compilation performed for Martinson.SysMaint.a at 01/24/75 0659.2 mst Fri. Compiled by BCPL version 3.4, August 1973. Compiler updated at 09/25/73 0959.1 mst Tue. Options applied: source xref alist optimize 6180. 1 // This part of the lexical analyzer contains the miscellaneous short routines. 2 // Last modified on 06/06/74 at 18:25:50 by R F Mabee. 3 // Slight modifications installed on 6180 as Version 3.4 by R F Mabee. 4 // First installed as Version 2.7 on 645 by R F Mabee. 5 6 // Copyright (c) 1974 by Massachusetts Institute of Technology and Honeywell Information Systems, Inc. 7 8 // General permission is granted to copy and use this program, but not to sell it, provided that the above 9 // copyright statement is given. Contact Information Processing Services, MIT, for further information. 10 // Please contact R F Mabee at MIT for information on this program and versions for other machines. 11 12 get "bcpl_lex_head" 1 // Declarations entirely restricted to the lexical analysis phase. 2 // Last modified on 07/21/73 at 23:41:22 by R F Mabee. 3 // Installed on 6180 as Version 3.4, R F Mabee. 4 // First installed with Version 2.7 by R F Mabee. 5 6 // Copyright (c) 1973 by the author, Robert F. Mabee. 7 // This file may only be reproduced or modified with explicit written 8 // permission of the author. Permission is hereby extended to those 9 // persons responsible for operating the Multics system to make such 10 // copies as are normally required to ensure the integrity of the Multics 11 // file system. Permission is also hereby extended to those persons 12 // responsible for maintaining the Multics program libraries to make such 13 // copies as are normally required for online installations. 14 15 get "bcpl_compiler_head" 1 // Declarations common to the entire BCPL compiler. 2 // Last modified on 07/28/73 at 03:56:32 by R F Mabee. 3 // Installed on 6180 as Version 3.4, R F Mabee. 4 // First installed on 645 as Version 2.7 by R F Mabee. 5 6 // Copyright (c) 1973 by the author, Robert F. Mabee. 7 // This file may only be reproduced or modified with explicit written 8 // permission of the author. Permission is hereby extended to those 9 // persons responsible for operating the Multics system to make such 10 // copies as are normally required to ensure the integrity of the Multics 11 // file system. Permission is also hereby extended to those persons 12 // responsible for maintaining the Multics program libraries to make such 13 // copies as are normally required for online installations. 14 15 external 16 $( Readch = "bcpl_machine_code_$Readch" // Library routines used by the compiler. 17 Writech = "bcpl_machine_code_$Writech" 18 WriteS = "bcpl_stream_io_$WriteS" 19 WriteN = "bcpl_stream_io_$WriteN" 20 Format = "bcpl_stream_io_$Format" 21 Packstring = "bcpl_machine_code_$Packstring" 22 Unpackstring = "bcpl_machine_code_$Unpackstring" 23 RemoveEscapes = "bcpl_conversions_$RemoveEscapes" 24 EqualString = "bcpl_strings_$EqualString" 25 CompareStrings = "bcpl_strings_$CompareStrings" // Alphabetic comparison. 26 Concatenate = "bcpl_strings_$Concatenate" 27 ConvertStoN = "bcpl_conversions_$ConvertStoN" 28 ConvertNtoS = "bcpl_conversions_$ConvertNtoS" 29 Length = "bcpl_strings_$Length" // Number of characters. 30 LengthInWords = "bcpl_strings_$LengthInWords" // Length of packed string. 31 RandomI = "bcpl_arithmetic_$RandomI" 32 33 Newvec = "bcpl_utility$Newvec" // Utility routines used throughout the compiler. 34 Freevec = "bcpl_utility$Freevec" 35 List1 = "bcpl_utility$List1" 36 List2 = "bcpl_utility$List2" 37 List3 = "bcpl_utility$List3" 38 List4 = "bcpl_utility$List4" 39 List5 = "bcpl_utility$List5" 40 List6 = "bcpl_utility$List6" 41 StoreString = "bcpl_utility$StoreString" 42 PushInput = "bcpl_utility$PushInput" 43 PopInput = "bcpl_utility$PopInput" 44 MakeTimeString = "bcpl_utility$MakeTimeString" 45 Nextparam = "bcpl_utility$Nextparam" 46 FormCharconst = "bcpl_utility$FormCharconst" 47 FormStringconst = "bcpl_utility$FormStringconst" 48 49 CaeReport = "bcpl_report$CaeReport" 50 Transreport = "bcpl_report$Transreport" 51 CGreport = "bcpl_report$CGreport" 52 53 Nextsymb = "bcpl_lex0$Nextsymb" 54 55 SymbolName = "bcpl_plist$SymbolName" 56 FindPrintName = "bcpl_plist$FindPrintName" 57 EnterIntoCrossreference = "bcpl_plist$EnterIntoCrossreference" 58 59 GetVersion = "bcpl_version$GetVersion" // Routines used only by the driver. 60 UtilitiesInit = "bcpl_utility$UtilitiesInit" 61 Cleanup = "bcpl_utility$Cleanup" 62 GetStream = "bcpl_utility$GetStream" 63 64 CAE = "bcpl_cae0$CAE" 65 LexInit = "bcpl_lex0$LexInit" 66 67 Pname = "bcpl_plist$Pname" 68 Plist = "bcpl_plist$Plist" 69 70 Trans = "bcpl_trans0$Trans" 71 CgInit = "bcpl_cg0$CgInit" 72 BuildObject = "bcpl_cg0$BuildObject" 73 WriteObjectListing = "bcpl_cg0$WriteObjectListing" 74 $) 75 76 global // Globals are reserved in blocks as follows: 77 $( // 0 - 31 system 78 // 32 - 99 library 79 // 100 - 149 options and other common cells 80 // 150 - 159 metering cells 81 // 160 - 169 bcpl_utility 82 // 170 - 199 to be assigned 83 // 200 - 229 lexical phase 84 // 230 - 249 syntax analyzer 85 // 250 - 299 translator 86 // 300 - 399 code generator 87 88 // Cells used for communication with the library. 89 OUTPUT : 32 90 INPUT : 33 91 MONITOR : 34 92 Ch : 36 93 94 // Options for this compilation. 95 Listing : 100 96 UpperCase : 101 97 PPrep : 102 98 Crep : 103 99 Symbols : 104 100 LineMap : 105 101 Optimize : 106 102 Machine : 107 103 Xref : 108 104 OcodeSw : 109 105 HaveListingFile : 110 106 QuietSw : 111 107 108 // Other information about this compilation. 109 CompilerVersionString : 120 110 CompilerVersionNumber : 121 111 CompilerDTMString : 122 112 CompilerDTM : 123 113 TimeNowString : 124 114 TimeNow : 125 115 OptionString : 126 116 FileNames : 127 117 FilesInfo : 128 118 FileCount : 129 119 ProgramName : 130 120 UserID : 131 121 122 // Working variables needing global scope. 123 LineCount : 140 124 Errorsw : 141 125 NAMECHAIN : 142 126 Symb : 143 127 DictionaryEntry : 144 128 Column : 145 129 $) 130 manifest 131 $( GlobalTemp = 199 $) // Number of cell available for local, temporary use. 132 133 manifest 134 $( Left = 18; Right = $8777777 135 Endofstreamch = $87777 136 Even = $87777777777776 137 Vmax = 511 138 LineMask = $817777; FileShift = 13 // Breakdown of line count. 139 UnexpectedCase = 99 // Error code for use throughout compiler. 140 $) 16 get "bcpl_symbols" 1 // All symbols used in the interface between any two phases of the compiler are defined here. 2 // This includes all canonical symbols, syntax tree nodes, and XOCODE operators. 3 // Last modified on 07/08/73 at 22:55:31 by R F Mabee. 4 // Revisions installed in Version 3.4 on 6180, R F Mabee. 5 // First installed with Version 2.7 by R F Mabee. 6 7 // Copyright (c) 1973 by the author, Robert F. Mabee. 8 // This file may only be reproduced or modified with explicit written 9 // permission of the author. Permission is hereby extended to those 10 // persons responsible for operating the Multics system to make such 11 // copies as are normally required to ensure the integrity of the Multics 12 // file system. Permission is also hereby extended to those persons 13 // responsible for maintaining the Multics program libraries to make such 14 // copies as are normally required for online installations. 15 16 manifest 17 $( AND_S = 1 18 ASSIGN_S = 2 19 BE_S = 3 20 BIT_S = 4 21 BREAK_S = 5 22 BY_S = 6 23 CALL_S = 07 24 CASE_S = 08 25 26 CHAR_S = 10 27 CHARCONST_S = 11 28 COLON_S = 12 29 COMMA_S = 13 30 COND_S = 14 31 CONSTANT_S = 15 32 CONSTDEF_S = 16 33 DEFAULT_S = 17 34 DIV_F = 18 35 36 DIV_S = 20 37 DO_S = 21 38 DOUBLE_S = 22 39 ENDCASE_S = 23 40 ENDPROG_S = 24 41 ERROR_S = 25 42 EQ_F = 26 43 EQ_S = 27 44 EQV_S = 28 45 46 EXTERNAL_S = 30 47 FALSE_S = 31 48 FINISH_S = 32 49 FIXED_S = 33 50 FLOAT_S = 34 51 FNAP_S = 35 52 FNDEF_S = 36 53 FOR_S = 37 54 GE_F = 38 55 56 GE_S = 40 57 GET_S = 41 58 GLOBAL_S = 42 59 GOTO_S = 43 60 GR_F = 44 61 GR_S = 45 62 IF_S = 46 63 IFNOT_S = 47 64 IFSO_S = 48 65 66 INTO_S = 50 67 LABDEF_S = 51 68 LABEL_S = 52 69 LE_F = 53 70 LE_S = 54 71 LENGTH_S = 55 72 LET_S = 56 73 LIST_S = 57 74 LOCAL_S = 58 75 76 LOGAND_S = 60 77 LOGOR_S = 61 78 LOOP_S = 62 79 LS_F = 63 80 LS_S = 64 81 LSHIFT_S = 65 82 LV_S = 66 83 LVECAP_S = 67 84 LV_ARG_OUT = 68 85 86 LV_FNAP_RESULT = 70 87 LV_GLOBAL = 71 88 LV_LOCAL = 72 89 LV_STATIC = 73 90 LV_TEMP = 74 91 MAIN_S = 75 92 MANIFEST_S = 76 93 MINUS_F = 77 94 MINUS_S = 78 95 96 MULT_F = 80 97 MULT_S = 81 98 NAME_S = 82 99 NEG_F = 83 100 NEG_S = 84 101 NEQV_S = 85 102 NE_F = 86 103 NE_S = 87 104 NIL_S = 88 105 106 NOT_S = 90 107 NUMBER_S = 91 108 OFFSET_S = 92 109 OR_S = 93 110 PLUS_F = 94 111 PLUS_S = 95 112 POINTER_S = 96 113 POS_F = 97 114 POS_S = 98 115 116 RBRA_S = 100 117 REGISTER_S = 101 118 REL_S = 102 119 REM_S = 103 120 REP_S = 104 121 REPEAT_S = 105 122 REPEATUNTIL_S = 106 123 REPEATWHILE_S = 107 124 RESULTIS_S = 108 125 126 RETURN_S = 110 127 RKET_S = 111 128 RSHIFT_S = 112 129 RTAP_S = 113 130 RTDEF_S = 114 131 RV_S = 115 132 SBRA_S = 116 133 SECTBEGIN_S = 117 134 SECTBRA_S = 118 135 136 SECTEND_S = 120 137 SECTKET_S = 121 138 SEMICOLON_S = 122 139 SKET_S = 123 140 STATIC_S = 124 141 STRING_S = 125 142 STRINGCONST_S = 126 143 STRUCTURE_S = 127 144 SWITCHON_S = 128 145 146 TABLE_S = 130 147 TEMP_S = 131 148 TEST_S = 132 149 TO_S = 133 150 TRUE_S = 134 151 TYPE_S = 135 152 UNLESS_S = 136 153 UNTIL_S = 137 154 VALDEF_S = 138 155 156 VALOF_S = 140 157 VEC_S = 141 158 VECAP_S = 142 159 WHILE_S = 143 160 $) 17 get "bcpl_lex_codes" 1 // Report codes for the lexical analyzer. 2 // Last modified on 07/05/73 at 23:01:26 by R F Mabee. 3 // Installed on 6180 Multics as Version 3.4 by R F Mabee. 4 // First installed with Version 2.7, R F Mabee. 5 6 // Copyright (c) 1973 by the author, Robert F. Mabee. 7 // This file may only be reproduced or modified with explicit written 8 // permission of the author. Permission is hereby extended to those 9 // persons responsible for operating the Multics system to make such 10 // copies as are normally required to ensure the integrity of the Multics 11 // file system. Permission is also hereby extended to those persons 12 // responsible for maintaining the Multics program libraries to make such 13 // copies as are normally required for online installations. 14 15 manifest // 100 - 149 are reserved for the lexical phase. 16 $( BadCharacter = 100 17 BadDollar = 101 18 BadFloat = 102 19 BadNumber = 103 20 BadSystemword = 104 21 GetStringMissing = 105 22 TokenTooLong = 106 23 $) 18 19 external 20 $( Rch = "bcpl_lex0$Rch" 21 EnterIntoDictionary = "bcpl_lex0$EnterIntoDictionary" 22 Nsymb = "bcpl_lex1$Nsymb" 23 LoadDictionary = "bcpl_lex2$LoadDictionary" 24 $) 25 global // 200 - 229 are reserved for the lexical phase. 26 $( ST : 200 // Internal switches etc. for Lex. 27 SavedSymb : 201 28 V : 202 29 Vp : 203 30 NLPending : 204 31 Lvch : 205 32 Chkind : 206 33 BeginNewLine : 207 34 EndCurrentLine : 208 35 36 EndOfAllInputReached: 210 37 NestingDepth : 211 38 NamesTable : 212 39 $) 40 manifest 41 $( Ignorable = 1 // Codes for Chkind - always set to type of current character. 42 Endline = 2 43 Bracket = 3 44 Simple = 4 45 Digit = 6 // Order is important from here on. 46 Small = 7 47 Capital = 8 48 UnderScore= 9 49 $) 13 get "bcpl_metering_head" 1 // Variables and constants for use in measuring performance of the various parts of the BCPL compiler. 2 // Last modified on 08/14/73 at 22:09:47 by R F Mabee. 3 // First installed with Version 3.4 by R F Mabee. 4 // Written in April 1973 to obtain detailed info about compiler performance. 5 6 // Copyright (c) 1973 by the author, Robert F. Mabee. 7 // This file may only be reproduced or modified with explicit written 8 // permission of the author. Permission is hereby extended to those 9 // persons responsible for operating the Multics system to make such 10 // copies as are normally required to ensure the integrity of the Multics 11 // file system. Permission is also hereby extended to those persons 12 // responsible for maintaining the Multics program libraries to make such 13 // copies as are normally required for online installations. 14 15 external 16 $( SaveOldUsage = "bcpl_utility$SaveOldUsage" 17 RecordUsage = "bcpl_utility$RecordUsage" 18 PrintMeters = "bcpl_meter_print$PrintMeters" 19 $) 20 21 global 22 $( Metering : 150 23 MeterData : 151 24 DictionaryDepth : 152 25 TotalLines : 153 26 TotalWords : 154 27 $) 28 29 manifest 30 $( DriverOverhead_Meter = 0 31 SyntaxAnalysis_Meter = 3 32 Nextsymb_Meter = 6 33 ProcessGet_Meter = 9 34 SymbolAdd_Meter = 12 35 SymbolSearch_Meter = 15 36 RchWithoutListing_Meter = 18 37 RchWithListing_Meter = 21 38 PrintXref_Meter = 24 39 MakeObject_Meter = 27 40 CompileSwitchWithoutOptimizing_Meter = 30 41 CompileSwitchWithOptimizing_Meter = 33 42 SemanticTranslation_Meter = 36 43 CodeGeneration_Meter = 39 44 CompileExpression_Meter = 42 45 MeteringOverhead_Meter = 45 46 TotalLines_Count = 48 47 TextWords_Count = 49 48 DictionaryDepth_Count = 50 49 Meters_Length = 51 50 $) 14 15 manifest 16 $( HashSize = 101 $) 17 18 19 // The routine Rch fetches the next input character, sets Chkind to reflect its type, 20 // writes the character in the listing, keeps track of line numbers for cross-reference and 21 // for error messages, and switches input streams when end-of-file is detected. 22 23 let Rch () be 24 $( let UsageTemp = nil 25 if Metering do UsageTemp := SaveOldUsage () 26 Top: Readch (INPUT, Lvch) 27 Chkind := valof switchon Ch into 28 $( case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': 29 case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': 30 case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': 31 case 'V': case 'W': case 'X': case 'Y': case 'Z': 32 resultis Capital 33 34 case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': 35 case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': 36 case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': 37 case 'v': case 'w': case 'x': case 'y': case 'z': 38 resultis Small 39 40 case '0': case '1': case '2': case '3': case '4': 41 case '5': case '6': case '7': case '8': case '9': 42 resultis Digit 43 44 case '{': case '}': 45 resultis Bracket 46 47 case '_': resultis UnderScore 48 49 case '*s': case '*t': case '*r': 50 case '*v': case '*d': case '*k': 51 case '*f': case '*b': 52 resultis Ignorable 53 54 case '*n':EndCurrentLine := true 55 resultis Endline 56 57 case '?': unless Crep & NestingDepth = 0 resultis Simple // Terminator for typed-in program, otherwise illegal. 58 59 case Endofstreamch: 60 unless EndOfAllInputReached do TotalLines := TotalLines + (LineCount & LineMask) 61 if NestingDepth = 0 do // If the outermost source file is finished... 62 $( Chkind := Endline 63 EndOfAllInputReached := true 64 goto Exit 65 $) 66 if Listing & not BeginNewLine do Writech (OUTPUT, '*n') 67 NestingDepth := NestingDepth - 1 // For indenting listing. 68 PopInput () 69 NLPending := true 70 goto Top 71 72 default: resultis Simple 73 $) 74 if BeginNewLine do 75 $( LineCount := LineCount + 1 76 if Listing do 77 $( for i = 1 to NestingDepth do Writech (OUTPUT, '*t') 78 Format (OUTPUT, " ^4d*t", LineCount & LineMask) 79 $) 80 BeginNewLine := false 81 $) 82 if Listing do Writech (OUTPUT, Ch) 83 if EndCurrentLine do BeginNewLine, EndCurrentLine := true, false 84 85 Exit: if Metering do RecordUsage (Listing -> RchWithListing_Meter, RchWithoutListing_Meter, UsageTemp) 86 $) 87 88 89 manifest 90 $( Must = $8100 // Categories for symbols with respect to insertion of ; and _d_o. 91 May = $8000 92 BeginCommand = $8010 93 EndCommand = $8001 94 $) 95 96 // Nextsymb is used throughout the syntax analyzer to get the next input canonical symbol. 97 // It puts the internal representation (a named constant) for the input token in the global cell Symb. 98 // This routine applies the pre-processor rules for inserting DO and SEMICOLON, 99 // as well as detecting a GET phrase. Nsymb is used to obtain actual input symbols. 100 101 let Nextsymb () be 102 $( let UsageTemp = nil 103 if Metering do UsageTemp := SaveOldUsage () 104 unless SavedSymb = 0 do 105 $( Symb := SavedSymb 106 SavedSymb := 0 107 goto Exit 108 $) 109 Rnext: Symb := Nsymb () 110 let Category = valof switchon Symb into 111 $( case GET_S: 112 ProcessGet () 113 goto Rnext 114 115 case NAME_S: 116 if Xref do EnterIntoCrossreference () 117 118 case FALSE_S: case TRUE_S: case NUMBER_S: 119 case STRINGCONST_S: case CHARCONST_S: 120 resultis May | BeginCommand | EndCommand 121 122 case PLUS_S: case MINUS_S: case SECTBRA_S: case RBRA_S: case VALOF_S: 123 case TABLE_S: case LIST_S: case SECTBEGIN_S: case NOT_S: 124 case RV_S: case LV_S: 125 resultis May | BeginCommand 126 127 case BREAK_S: case ENDCASE_S: case LOOP_S: case FINISH_S: case RETURN_S: 128 resultis Must | BeginCommand | EndCommand 129 130 case MANIFEST_S: case GLOBAL_S: case STATIC_S: case EXTERNAL_S: 131 case LET_S: case STRUCTURE_S: 132 case CALL_S: case CASE_S: case DEFAULT_S: 133 case FOR_S: case GOTO_S: 134 case IF_S: case RESULTIS_S: 135 case SWITCHON_S: case TEST_S: case UNLESS_S: 136 case UNTIL_S: case WHILE_S: 137 resultis Must | BeginCommand 138 139 case REPEAT_S: 140 resultis Must | EndCommand 141 142 case NIL_S: case RKET_S: case SKET_S: case SECTKET_S: case SECTEND_S: 143 resultis May | EndCommand 144 145 default: resultis 0 // Can't begin or end a command. 146 $) 147 test NLPending 148 then $( NLPending := false 149 if (ST & EndCommand) ne 0 & (Category & BeginCommand) ne 0 do 150 $( SavedSymb := Symb 151 Symb := SEMICOLON_S 152 $) 153 $) 154 or if (ST & EndCommand) ne 0 & (Category & (Must | BeginCommand)) = (Must | BeginCommand) do 155 $( SavedSymb := Symb 156 Symb := DO_S 157 $) 158 ST := Category 159 Exit: if Metering do RecordUsage (Nextsymb_Meter, UsageTemp) 160 if PPrep do 161 $( WriteS (OUTPUT, SymbolName (Symb)) 162 Writech (OUTPUT, '*n') 163 $) 164 $) 165 and ProcessGet () be // Handle GET phrase for Nextsymb. 166 $( let UsageTemp = nil 167 if Metering do UsageTemp := SaveOldUsage () 168 unless Nsymb () = STRINGCONST_S do 169 $( CaeReport (GetStringMissing) 170 goto Exit 171 $) 172 unless BeginNewLine do 173 $( if Listing do Writech (OUTPUT, '*n') 174 LineCount := LineCount - 1 175 $) 176 PushInput (DictionaryEntry!1) 177 NestingDepth := NestingDepth + 1 // For indenting listing. 178 BeginNewLine, NLPending := true, true 179 Ch, Chkind := '*n', Endline 180 181 Exit: if Metering do RecordUsage (ProcessGet_Meter, UsageTemp) 182 $) 183 184 // EnterIntoDictionary is called to record any string in the compiler's symbol table so that it may 185 // be referenced by a unique pointer to a dictionary entry. Result is left in global DictionaryEntry. 186 187 let EnterIntoDictionary (Unpacked, Type) = valof 188 $( let UsageTemp = nil 189 if Metering do UsageTemp := SaveOldUsage () 190 let String = vec Vmax 191 Packstring (Unpacked, String) 192 let Len = LengthInWords (String) - 1 193 let Hash = String!0 + String!Len // Use primitive hashing to fan out binary tree rapidly. 194 if Hash < 0 do Hash := - Hash 195 let Q = lv NamesTable!(Hash rem HashSize) // Separate name chain for each hash value. 196 $( DictionaryEntry := rv Q 197 DictionaryDepth := DictionaryDepth + 1 198 if DictionaryEntry = 0 break // Not found. 199 let d = String!0 - DictionaryEntry!1!0 // Compare raw representations. 200 if d = 0 then for i = 1 to Len do 201 $( d := String!i - DictionaryEntry!1!i 202 unless d = 0 break 203 $) 204 if d = 0 do // Is found. 205 $( if Metering do RecordUsage (SymbolSearch_Meter, UsageTemp) 206 resultis DictionaryEntry!0 207 $) 208 Q := d < 0 -> lv DictionaryEntry!4, lv DictionaryEntry!5 209 $) repeat 210 DictionaryEntry := List6 (Type, StoreString (String), 0, 0, 0, 0) 211 // Format: type, name pointer, value cell for Trans, xref list, < dict list, > dict list. 212 rv Q := DictionaryEntry // And enter into symbol tree. 213 if Metering do RecordUsage (SymbolAdd_Meter, UsageTemp) 214 resultis Type 215 $) 216 217 218 // This is LexInit, which initializes some global cells for the lexical analyzer, 219 // and loads up the dictionary with all the reserved words with their internal values. 220 // The lexical phase (Lex) operates as a co-routine to the syntactic phase (Cae). 221 // Cae can keep things in its stack, but Lex must store everything in global cells. 222 223 let LexInit () be 224 $( Ch, Chkind, Lvch := '*n', Endline, lv Ch 225 BeginNewLine, EndCurrentLine := true, false 226 EndOfAllInputReached := false 227 NestingDepth := 0 228 NLPending, ST, SavedSymb := true, 0, 0 229 V, Vp := Newvec (Vmax), 0 230 TotalLines, DictionaryDepth := 0, 0 231 NamesTable := Newvec (HashSize) 232 for i = 0 to HashSize do NamesTable!i := 0 233 234 LoadDictionary () 235 Nextsymb () // Symb should always be valid. 236 $) CAE time 5.2, 126 source lines per second. cross reference table AND_S bcpl_symbols: 17 ASSIGN_S bcpl_symbols: 18 BadCharacter bcpl_lex_codes: 16 BadDollar bcpl_lex_codes: 17 BadFloat bcpl_lex_codes: 18 BadNumber bcpl_lex_codes: 19 BadSystemword bcpl_lex_codes: 20 BeginCommand bcpl_lex0: 92, 120, 125, 128, 137, 149, 154, 154 BeginNewLine bcpl_lex_head: 33, bcpl_lex0: 66, 74, 80, 83, 172, 178, 225 BE_S bcpl_symbols: 19 BIT_S bcpl_symbols: 20 Bracket bcpl_lex_head: 43, bcpl_lex0: 45 BREAK_S bcpl_symbols: 21, bcpl_lex0: 127 BuildObject bcpl_compiler_head: 72 BY_S bcpl_symbols: 22 CAE bcpl_compiler_head: 64 CaeReport bcpl_compiler_head: 49, bcpl_lex0: 169 CALL_S bcpl_symbols: 23, bcpl_lex0: 132 Capital bcpl_lex_head: 47, bcpl_lex0: 32 CASE_S bcpl_symbols: 24, bcpl_lex0: 132 Category bcpl_lex0: 110, 149, 154, 158 CgInit bcpl_compiler_head: 71 CGreport bcpl_compiler_head: 51 Ch bcpl_compiler_head: 92, bcpl_lex0: 27, 82, 179, 224, 224 CHARCONST_S bcpl_symbols: 27, bcpl_lex0: 119 CHAR_S bcpl_symbols: 26 Chkind bcpl_lex_head: 32, bcpl_lex0: 27, 62, 179, 224 Cleanup bcpl_compiler_head: 61 CodeGeneration_Meter bcpl_metering_head: 43 COLON_S bcpl_symbols: 28 Column bcpl_compiler_head: 128 COMMA_S bcpl_symbols: 29 CompareStrings bcpl_compiler_head: 25 CompileExpression_Meter bcpl_metering_head: 44 CompilerDTM bcpl_compiler_head: 112 CompilerDTMString bcpl_compiler_head: 111 CompilerVersionNumber bcpl_compiler_head: 110 CompilerVersionString bcpl_compiler_head: 109 CompileSwitchWithOptimizing_Meter bcpl_metering_head: 41 CompileSwitchWithoutOptimizing_Meter bcpl_metering_head: 40 Concatenate bcpl_compiler_head: 26 COND_S bcpl_symbols: 30 CONSTANT_S bcpl_symbols: 31 CONSTDEF_S bcpl_symbols: 32 ConvertNtoS bcpl_compiler_head: 28 ConvertStoN bcpl_compiler_head: 27 Crep bcpl_compiler_head: 98, bcpl_lex0: 57 d bcpl_lex0: 199, 200, 201, 202, 204, 208 DEFAULT_S bcpl_symbols: 33, bcpl_lex0: 132 DictionaryDepth bcpl_metering_head: 24, bcpl_lex0: 197, 197, 230 DictionaryDepth_Count bcpl_metering_head: 48 DictionaryEntry bcpl_compiler_head: 127, bcpl_lex0: 176, 196, 198, 199, 201, 206, 208, 208, 210, 212 Digit bcpl_lex_head: 45, bcpl_lex0: 42 DIV_F bcpl_symbols: 34 DIV_S bcpl_symbols: 36 DOUBLE_S bcpl_symbols: 38 DO_S bcpl_symbols: 37, bcpl_lex0: 156 DriverOverhead_Meter bcpl_metering_head: 30 ENDCASE_S bcpl_symbols: 39, bcpl_lex0: 127 EndCommand bcpl_lex0: 93, 120, 128, 140, 143, 149, 154 EndCurrentLine bcpl_lex_head: 34, bcpl_lex0: 54, 83, 83, 225 Endline bcpl_lex_head: 42, bcpl_lex0: 55, 62, 179, 224 EndOfAllInputReached bcpl_lex_head: 36, bcpl_lex0: 60, 63, 226 Endofstreamch bcpl_compiler_head: 135, bcpl_lex0: 59 ENDPROG_S bcpl_symbols: 40 EnterIntoCrossreference bcpl_compiler_head: 57, bcpl_lex0: 116 EnterIntoDictionary bcpl_lex_head: 21, bcpl_lex0: 187 EqualString bcpl_compiler_head: 24 EQV_S bcpl_symbols: 44 EQ_F bcpl_symbols: 42 EQ_S bcpl_symbols: 43 Errorsw bcpl_compiler_head: 124 ERROR_S bcpl_symbols: 41 Even bcpl_compiler_head: 136 Exit bcpl_lex0: 64, 85, 107, 159, 170, 181 EXTERNAL_S bcpl_symbols: 46, bcpl_lex0: 130 FALSE_S bcpl_symbols: 47, bcpl_lex0: 118 FileCount bcpl_compiler_head: 118 FileNames bcpl_compiler_head: 116 FileShift bcpl_compiler_head: 138 FilesInfo bcpl_compiler_head: 117 FindPrintName bcpl_compiler_head: 56 FINISH_S bcpl_symbols: 48, bcpl_lex0: 127 FIXED_S bcpl_symbols: 49 FLOAT_S bcpl_symbols: 50 FNAP_S bcpl_symbols: 51 FNDEF_S bcpl_symbols: 52 Format bcpl_compiler_head: 20, bcpl_lex0: 78 FormCharconst bcpl_compiler_head: 46 FormStringconst bcpl_compiler_head: 47 FOR_S bcpl_symbols: 53, bcpl_lex0: 133 Freevec bcpl_compiler_head: 34 GetStream bcpl_compiler_head: 62 GetStringMissing bcpl_lex_codes: 21, bcpl_lex0: 169 GetVersion bcpl_compiler_head: 59 GET_S bcpl_symbols: 57, bcpl_lex0: 111 GE_F bcpl_symbols: 54 GE_S bcpl_symbols: 56 GlobalTemp bcpl_compiler_head: 131 GLOBAL_S bcpl_symbols: 58, bcpl_lex0: 130 GOTO_S bcpl_symbols: 59, bcpl_lex0: 133 GR_F bcpl_symbols: 60 GR_S bcpl_symbols: 61 Hash bcpl_lex0: 193, 194, 194, 194, 195 HashSize bcpl_lex0: 16, 195, 231, 232 HaveListingFile bcpl_compiler_head: 105 i bcpl_lex0: 77, 200, 201, 201, 232, 232 IFNOT_S bcpl_symbols: 63 IFSO_S bcpl_symbols: 64 IF_S bcpl_symbols: 62, bcpl_lex0: 134 Ignorable bcpl_lex_head: 41, bcpl_lex0: 52 INPUT bcpl_compiler_head: 90, bcpl_lex0: 26 INTO_S bcpl_symbols: 66 LABDEF_S bcpl_symbols: 67 LABEL_S bcpl_symbols: 68 Left bcpl_compiler_head: 134 Len bcpl_lex0: 192, 193, 200 Length bcpl_compiler_head: 29 LengthInWords bcpl_compiler_head: 30, bcpl_lex0: 192 LENGTH_S bcpl_symbols: 71 LET_S bcpl_symbols: 72, bcpl_lex0: 131 LexInit bcpl_compiler_head: 65, bcpl_lex0: 223 LE_F bcpl_symbols: 69 LE_S bcpl_symbols: 70 LineCount bcpl_compiler_head: 123, bcpl_lex0: 60, 75, 75, 78, 174, 174 LineMap bcpl_compiler_head: 100 LineMask bcpl_compiler_head: 138, bcpl_lex0: 60, 78 List1 bcpl_compiler_head: 35 List2 bcpl_compiler_head: 36 List3 bcpl_compiler_head: 37 List4 bcpl_compiler_head: 38 List5 bcpl_compiler_head: 39 List6 bcpl_compiler_head: 40, bcpl_lex0: 210 Listing bcpl_compiler_head: 95, bcpl_lex0: 66, 76, 82, 85, 173 LIST_S bcpl_symbols: 73, bcpl_lex0: 123 LoadDictionary bcpl_lex_head: 23, bcpl_lex0: 234 LOCAL_S bcpl_symbols: 74 LOGAND_S bcpl_symbols: 76 LOGOR_S bcpl_symbols: 77 LOOP_S bcpl_symbols: 78, bcpl_lex0: 127 LSHIFT_S bcpl_symbols: 81 LS_F bcpl_symbols: 79 LS_S bcpl_symbols: 80 Lvch bcpl_lex_head: 31, bcpl_lex0: 26, 224 LVECAP_S bcpl_symbols: 83 LV_ARG_OUT bcpl_symbols: 84 LV_FNAP_RESULT bcpl_symbols: 86 LV_GLOBAL bcpl_symbols: 87 LV_LOCAL bcpl_symbols: 88 LV_S bcpl_symbols: 82, bcpl_lex0: 124 LV_STATIC bcpl_symbols: 89 LV_TEMP bcpl_symbols: 90 Machine bcpl_compiler_head: 102 MAIN_S bcpl_symbols: 91 MakeObject_Meter bcpl_metering_head: 39 MakeTimeString bcpl_compiler_head: 44 MANIFEST_S bcpl_symbols: 92, bcpl_lex0: 130 May bcpl_lex0: 91, 120, 125, 143 MeterData bcpl_metering_head: 23 Metering bcpl_metering_head: 22, bcpl_lex0: 25, 85, 103, 159, 167, 181, 189, 205, 213 MeteringOverhead_Meter bcpl_metering_head: 45 Meters_Length bcpl_metering_head: 49 MINUS_F bcpl_symbols: 93 MINUS_S bcpl_symbols: 94, bcpl_lex0: 122 MONITOR bcpl_compiler_head: 91 MULT_F bcpl_symbols: 96 MULT_S bcpl_symbols: 97 Must bcpl_lex0: 90, 128, 137, 140, 154, 154 NAMECHAIN bcpl_compiler_head: 125 NamesTable bcpl_lex_head: 38, bcpl_lex0: 195, 231, 232 NAME_S bcpl_symbols: 98, bcpl_lex0: 115 NEG_F bcpl_symbols: 99 NEG_S bcpl_symbols: 100 NEQV_S bcpl_symbols: 101 NestingDepth bcpl_lex_head: 37, bcpl_lex0: 57, 61, 67, 67, 77, 177, 177, 227 Newvec bcpl_compiler_head: 33, bcpl_lex0: 229, 231 Nextparam bcpl_compiler_head: 45 Nextsymb bcpl_compiler_head: 53, bcpl_lex0: 101, 235 Nextsymb_Meter bcpl_metering_head: 32, bcpl_lex0: 159 NE_F bcpl_symbols: 102 NE_S bcpl_symbols: 103 NIL_S bcpl_symbols: 104, bcpl_lex0: 142 NLPending bcpl_lex_head: 30, bcpl_lex0: 69, 147, 148, 178, 228 NOT_S bcpl_symbols: 106, bcpl_lex0: 123 Nsymb bcpl_lex_head: 22, bcpl_lex0: 109, 168 NUMBER_S bcpl_symbols: 107, bcpl_lex0: 118 OcodeSw bcpl_compiler_head: 104 OFFSET_S bcpl_symbols: 108 Optimize bcpl_compiler_head: 101 OptionString bcpl_compiler_head: 115 OR_S bcpl_symbols: 109 OUTPUT bcpl_compiler_head: 89, bcpl_lex0: 66, 77, 78, 82, 161, 162, 173 Packstring bcpl_compiler_head: 21, bcpl_lex0: 191 Plist bcpl_compiler_head: 68 PLUS_F bcpl_symbols: 110 PLUS_S bcpl_symbols: 111, bcpl_lex0: 122 Pname bcpl_compiler_head: 67 POINTER_S bcpl_symbols: 112 PopInput bcpl_compiler_head: 43, bcpl_lex0: 68 POS_F bcpl_symbols: 113 POS_S bcpl_symbols: 114 PPrep bcpl_compiler_head: 97, bcpl_lex0: 160 PrintMeters bcpl_metering_head: 18 PrintXref_Meter bcpl_metering_head: 38 ProcessGet bcpl_lex0: 112, 165 ProcessGet_Meter bcpl_metering_head: 33, bcpl_lex0: 181 ProgramName bcpl_compiler_head: 119 PushInput bcpl_compiler_head: 42, bcpl_lex0: 176 Q bcpl_lex0: 195, 196, 208, 212 QuietSw bcpl_compiler_head: 106 RandomI bcpl_compiler_head: 31 RBRA_S bcpl_symbols: 116, bcpl_lex0: 122 Rch bcpl_lex_head: 20, bcpl_lex0: 23 RchWithListing_Meter bcpl_metering_head: 37, bcpl_lex0: 85 RchWithoutListing_Meter bcpl_metering_head: 36, bcpl_lex0: 85 Readch bcpl_compiler_head: 16, bcpl_lex0: 26 RecordUsage bcpl_metering_head: 17, bcpl_lex0: 85, 159, 181, 205, 213 REGISTER_S bcpl_symbols: 117 REL_S bcpl_symbols: 118 RemoveEscapes bcpl_compiler_head: 23 REM_S bcpl_symbols: 119 REPEATUNTIL_S bcpl_symbols: 122 REPEATWHILE_S bcpl_symbols: 123 REPEAT_S bcpl_symbols: 121, bcpl_lex0: 139 REP_S bcpl_symbols: 120 RESULTIS_S bcpl_symbols: 124, bcpl_lex0: 134 RETURN_S bcpl_symbols: 126, bcpl_lex0: 127 Right bcpl_compiler_head: 134 RKET_S bcpl_symbols: 127, bcpl_lex0: 142 Rnext bcpl_lex0: 109, 113 RSHIFT_S bcpl_symbols: 128 RTAP_S bcpl_symbols: 129 RTDEF_S bcpl_symbols: 130 RV_S bcpl_symbols: 131, bcpl_lex0: 124 SavedSymb bcpl_lex_head: 27, bcpl_lex0: 104, 105, 106, 150, 155, 228 SaveOldUsage bcpl_metering_head: 16, bcpl_lex0: 25, 103, 167, 189 SBRA_S bcpl_symbols: 132 SECTBEGIN_S bcpl_symbols: 133, bcpl_lex0: 123 SECTBRA_S bcpl_symbols: 134, bcpl_lex0: 122 SECTEND_S bcpl_symbols: 136, bcpl_lex0: 142 SECTKET_S bcpl_symbols: 137, bcpl_lex0: 142 SemanticTranslation_Meter bcpl_metering_head: 42 SEMICOLON_S bcpl_symbols: 138, bcpl_lex0: 151 Simple bcpl_lex_head: 44, bcpl_lex0: 57, 72 SKET_S bcpl_symbols: 139, bcpl_lex0: 142 Small bcpl_lex_head: 46, bcpl_lex0: 38 ST bcpl_lex_head: 26, bcpl_lex0: 149, 154, 158, 228 STATIC_S bcpl_symbols: 140, bcpl_lex0: 130 StoreString bcpl_compiler_head: 41, bcpl_lex0: 210 String bcpl_lex0: 190, 191, 192, 193, 193, 199, 201, 210 STRINGCONST_S bcpl_symbols: 142, bcpl_lex0: 119, 168 STRING_S bcpl_symbols: 141 STRUCTURE_S bcpl_symbols: 143, bcpl_lex0: 131 SWITCHON_S bcpl_symbols: 144, bcpl_lex0: 135 Symb bcpl_compiler_head: 126, bcpl_lex0: 105, 109, 110, 150, 151, 155, 156, 161 SymbolAdd_Meter bcpl_metering_head: 34, bcpl_lex0: 213 SymbolName bcpl_compiler_head: 55, bcpl_lex0: 161 Symbols bcpl_compiler_head: 99 SymbolSearch_Meter bcpl_metering_head: 35, bcpl_lex0: 205 SyntaxAnalysis_Meter bcpl_metering_head: 31 TABLE_S bcpl_symbols: 146, bcpl_lex0: 123 TEMP_S bcpl_symbols: 147 TEST_S bcpl_symbols: 148, bcpl_lex0: 135 TextWords_Count bcpl_metering_head: 47 TimeNow bcpl_compiler_head: 114 TimeNowString bcpl_compiler_head: 113 TokenTooLong bcpl_lex_codes: 22 Top bcpl_lex0: 26, 70 TotalLines bcpl_metering_head: 25, bcpl_lex0: 60, 60, 230 TotalLines_Count bcpl_metering_head: 46 TotalWords bcpl_metering_head: 26 TO_S bcpl_symbols: 149 Trans bcpl_compiler_head: 70 Transreport bcpl_compiler_head: 50 TRUE_S bcpl_symbols: 150, bcpl_lex0: 118 Type bcpl_lex0: 187, 210, 214 TYPE_S bcpl_symbols: 151 UnderScore bcpl_lex_head: 48, bcpl_lex0: 47 UnexpectedCase bcpl_compiler_head: 139 UNLESS_S bcpl_symbols: 152, bcpl_lex0: 135 Unpacked bcpl_lex0: 187, 191 Unpackstring bcpl_compiler_head: 22 UNTIL_S bcpl_symbols: 153, bcpl_lex0: 136 UpperCase bcpl_compiler_head: 96 UsageTemp bcpl_lex0: 24, 25, 85, 102, 103, 159, 166, 167, 181, 188, 189, 205, 213 UserID bcpl_compiler_head: 120 UtilitiesInit bcpl_compiler_head: 60 V bcpl_lex_head: 28, bcpl_lex0: 229 VALDEF_S bcpl_symbols: 154 VALOF_S bcpl_symbols: 156, bcpl_lex0: 122 VECAP_S bcpl_symbols: 158 VEC_S bcpl_symbols: 157 Vmax bcpl_compiler_head: 137, bcpl_lex0: 190, 229 Vp bcpl_lex_head: 29, bcpl_lex0: 229 WHILE_S bcpl_symbols: 159, bcpl_lex0: 136 Writech bcpl_compiler_head: 17, bcpl_lex0: 66, 77, 82, 162, 173 WriteN bcpl_compiler_head: 19 WriteObjectListing bcpl_compiler_head: 73 WriteS bcpl_compiler_head: 18, bcpl_lex0: 161 Xref bcpl_compiler_head: 103, bcpl_lex0: 116 Trans time 1.5, 685 object words per second. " Begin text of Rch aa 000000 000003 122143 zero 3,42083 " Rch aa 000001 150000 000000 zero 53248 L1: aa 000002 000000 213000 23 epaq 0 " set lp to linkage section aa 000003 700026 764161 lprplp sb|22,*au aa 000004 200000 021100 adlx1 bp|0 " BCPL save aa 000005 700000 542111 sprpbp sb|0,x1 aa 000006 700001 544111 sprplp sb|1,x1 aa 000007 700424 620111 eax0 sb|276,x1 aa 000010 777760 360003 anx0 -16,du aa 000011 700025 740100 stx0 sb|21 " end of save sequence aa 000012 600226 234100 25 szn sp|150 " Metering aa 000013 000004 600004 tze L7 4a 000014 400052 272120 tsbbp lp|L8,* " SaveOldUsage aa 000015 000006 000000 zero 6 aa 000016 700002 756111 stq sb|2,x1 " UsageTemp L7: L3: aa 000017 600041 236100 26 ldq sp|33 " INPUT aa 000020 700010 756111 stq sb|8,x1 aa 000021 600315 236100 ldq sp|205 " Lvch aa 000022 700011 756111 stq sb|9,x1 4a 000023 400050 272120 tsbbp lp|L9,* " Readch aa 000024 000006 000002 zero 6,2 aa 000025 000066 710004 28 tra L12 L13: aa 000026 000010 236007 32 ldq 8,dl " Capital aa 000027 000134 710004 34 tra L10 L14: aa 000030 000007 236007 38 ldq 7,dl " Small aa 000031 000132 710004 40 tra L10 L15: aa 000032 000006 236007 42 ldq 6,dl " Digit aa 000033 000130 710004 44 tra L10 L16: aa 000034 000003 236007 45 ldq 3,dl " Bracket aa 000035 000126 710004 47 tra L10 L17: aa 000036 000011 236007 ldq 9,dl " UnderScore aa 000037 000124 710004 49 tra L10 L18: aa 000040 000001 236007 52 ldq 1,dl " Ignorable aa 000041 000122 710004 54 tra L10 L19: aa 000042 000001 335007 lca 1,dl " true aa 000043 600320 755100 sta sp|208 " EndCurrentLine aa 000044 000002 236007 55 ldq 2,dl " Endline aa 000045 000116 710004 57 tra L10 L20: aa 000046 600147 234100 szn sp|103 " Crep aa 000047 000003 600004 tze L22 aa 000050 600323 234100 szn sp|211 " NestingDepth aa 000051 000003 600004 tze L21 L22: aa 000052 000004 236007 ldq 4,dl " Simple aa 000053 000110 710004 tra L10 L21: L23: aa 000054 600322 234100 60 szn sp|210 " EndOfAllInputReached aa 000055 000004 601004 tnz L24 aa 000056 600214 235100 lda sp|140 " LineCount aa 000057 017777 375007 ana 8191,dl " LineMask aa 000060 600231 055100 asa sp|153 " TotalLines L24: aa 000061 600323 234100 61 szn sp|211 " NestingDepth aa 000062 000006 601004 tnz L25 aa 000063 000002 235007 62 lda 2,dl " Endline aa 000064 600316 755100 sta sp|206 " Chkind aa 000065 000001 335007 63 lca 1,dl " true aa 000066 600322 755100 sta sp|210 " EndOfAllInputReached aa 000067 000152 710004 64 tra L2 L25: aa 000070 600144 234100 66 szn sp|100 " Listing aa 000071 000011 600004 tze L26 aa 000072 600317 234100 szn sp|207 " BeginNewLine aa 000073 000007 601004 tnz L26 aa 000074 600040 235100 lda sp|32 " OUTPUT aa 000075 700010 755111 sta sb|8,x1 aa 000076 000012 235007 lda 10,dl " '*n' aa 000077 700011 755111 sta sb|9,x1 4a 000100 400046 272120 tsbbp lp|L27,* " Writech aa 000101 000006 000002 zero 6,2 L26: aa 000102 000001 335007 67 lca 1,dl " 1 aa 000103 600323 055100 asa sp|211 " NestingDepth 4a 000104 400044 272120 68 tsbbp lp|L28,* " PopInput aa 000105 000006 000000 zero 6 aa 000106 000001 335007 69 lca 1,dl " true aa 000107 600314 755100 sta sp|204 " NLPending aa 000110 777707 710004 72 tra L3 L29: aa 000111 000004 236007 ldq 4,dl " Simple aa 000112 000051 710004 tra L10 L12: " Begin switchon aa 000113 600044 235100 lda sp|36 " Ch aa 000114 000141 115007 cmpa 97,dl aa 000115 000014 604004 tmi L30 aa 000116 000173 115007 cmpa 123,dl aa 000117 777711 604004 tmi L14 aa 000120 007777 115007 cmpa 4095,dl aa 000121 000003 604004 tmi L31 aa 000122 777732 600004 tze L23 aa 000123 777766 710004 tra L29 L31: aa 000124 000173 115007 cmpa 123,dl aa 000125 777707 600004 tze L16 aa 000126 000175 115007 cmpa 125,dl aa 000127 777705 600004 tze L16 aa 000130 777761 710004 tra L29 L30: aa 000131 000101 115007 cmpa 65,dl aa 000132 000006 604004 tmi L32 aa 000133 000133 115007 cmpa 91,dl aa 000134 777672 604004 tmi L13 aa 000135 000137 115007 cmpa 95,dl aa 000136 777700 600004 tze L17 aa 000137 777752 710004 tra L29 L32: aa 000140 000060 115007 cmpa 48,dl aa 000141 000006 604004 tmi L33 aa 000142 000072 115007 cmpa 58,dl aa 000143 777667 604004 tmi L15 aa 000144 000077 115007 cmpa 63,dl aa 000145 777701 600004 tze L20 aa 000146 777743 710004 tra L29 L33: aa 000147 000013 115007 cmpa 11,dl aa 000150 000006 604004 tmi L34 aa 000151 000020 115007 cmpa 16,dl aa 000152 777666 604004 tmi L18 aa 000153 000040 115007 cmpa 32,dl aa 000154 777664 600004 tze L18 aa 000155 777734 710004 tra L29 L34: aa 000156 000010 115007 cmpa 8,dl aa 000157 777732 604004 tmi L29 aa 000160 000012 115007 cmpa 10,dl aa 000161 777657 604004 tmi L18 aa 000162 777660 710004 tra L19 L11: L10: aa 000163 700003 756111 stq sb|3,x1 aa 000164 700003 236111 ldq sb|3,x1 aa 000165 600316 756100 stq sp|206 " Chkind aa 000166 600317 234100 74 szn sp|207 " BeginNewLine aa 000167 000035 600004 tze L35 aa 000170 600214 054100 75 aos sp|140 " LineCount aa 000171 600144 234100 76 szn sp|100 " Listing aa 000172 000031 600004 tze L36 aa 000173 000001 236007 77 ldq 1,dl " 1 aa 000174 700003 756111 stq sb|3,x1 " i aa 000175 600323 236100 ldq sp|211 " NestingDepth aa 000176 700004 756111 stq sb|4,x1 aa 000177 000010 710004 tra L37 L38: aa 000200 600040 236100 ldq sp|32 " OUTPUT aa 000201 700010 756111 stq sb|8,x1 aa 000202 000011 236007 ldq 9,dl " '*t' aa 000203 700011 756111 stq sb|9,x1 4a 000204 400046 272120 tsbbp lp|L27,* " Writech aa 000205 000006 000002 zero 6,2 aa 000206 700003 054111 aos sb|3,x1 " i L37: aa 000207 700003 236111 ldq sb|3,x1 " i aa 000210 700004 116111 cmpq sb|4,x1 aa 000211 777767 604404 tmoz L38 aa 000212 600040 235100 78 lda sp|32 " OUTPUT aa 000213 700010 755111 sta sb|8,x1 aa 000214 000051 350004 eapap L39 " " ^4d*t" aa 000215 700011 540111 sprpap sb|9,x1 aa 000216 600214 235100 lda sp|140 " LineCount aa 000217 017777 375007 ana 8191,dl " LineMask aa 000220 700012 755111 sta sb|10,x1 4a 000221 400042 272120 tsbbp lp|L40,* " Format aa 000222 000006 000003 zero 6,3 L36: aa 000223 600317 450100 80 stz sp|207 " BeginNewLine L35: aa 000224 600144 234100 82 szn sp|100 " Listing aa 000225 000007 600004 tze L41 aa 000226 600040 235100 lda sp|32 " OUTPUT aa 000227 700010 755111 sta sb|8,x1 aa 000230 600044 235100 lda sp|36 " Ch aa 000231 700011 755111 sta sb|9,x1 4a 000232 400046 272120 tsbbp lp|L27,* " Writech aa 000233 000006 000002 zero 6,2 L41: aa 000234 600320 234100 83 szn sp|208 " EndCurrentLine aa 000235 000004 600004 tze L42 aa 000236 000001 335007 lca 1,dl " true aa 000237 600317 755100 sta sp|207 " BeginNewLine aa 000240 600320 450100 stz sp|208 " EndCurrentLine L42: L2: aa 000241 600226 234100 85 szn sp|150 " Metering aa 000242 000017 600004 tze L43 aa 000243 600144 234100 szn sp|100 " Listing aa 000244 000003 600004 tze L44 aa 000245 000025 235007 lda 21,dl " RchWithListing_Meter aa 000246 000002 710004 tra L45 L44: aa 000247 000022 235007 lda 18,dl " RchWithoutListing_Meter L45: aa 000250 700004 755111 sta sb|4,x1 aa 000251 700004 235111 lda sb|4,x1 aa 000252 700003 755111 sta sb|3,x1 aa 000253 700003 235111 lda sb|3,x1 aa 000254 700010 755111 sta sb|8,x1 aa 000255 700002 235111 lda sb|2,x1 " UsageTemp aa 000256 700011 755111 sta sb|9,x1 4a 000257 400040 272120 tsbbp lp|L46,* " RecordUsage aa 000260 000006 000002 zero 6,2 L43: L6: aa 000261 700000 762111 lprpbp sb|0,x1 " bcpl return aa 000262 200000 121100 sblx1 bp|0 aa 000263 700001 764111 lprplp sb|1,x1 aa 000264 200001 710100 tra bp|1 " end of return sequence " Literal pool L39: aa 000265 000006 040040 zero 6,16416 " " ^4d*t" aa 000266 136064 144011 zero 48180,51209 " Begin text of ProcessGet aa 000267 000012 120162 zero 10,41074 " ProcessGet aa 000270 157143 145163 zero 56931,51827 aa 000271 163107 145164 zero 58951,51828 L48: aa 000272 000000 213000 165 epaq 0 " set lp to linkage section aa 000273 700026 764161 lprplp sb|22,*au aa 000274 200000 021100 adlx1 bp|0 " BCPL save aa 000275 700000 542111 sprpbp sb|0,x1 aa 000276 700001 544111 sprplp sb|1,x1 aa 000277 700423 620111 eax0 sb|275,x1 aa 000300 777760 360003 anx0 -16,du aa 000301 700025 740100 stx0 sb|21 " end of save sequence aa 000302 600226 234100 167 szn sp|150 " Metering aa 000303 000004 600004 tze L53 4a 000304 400052 272120 tsbbp lp|L8,* " SaveOldUsage aa 000305 000006 000000 zero 6 aa 000306 700002 756111 stq sb|2,x1 " UsageTemp L53: 4a 000307 400036 272120 168 tsbbp lp|L55,* " Nsymb aa 000310 000006 000000 zero 6 aa 000311 000176 116007 cmpq 126,dl " STRINGCONST_S aa 000312 000006 600004 tze L54 aa 000313 000151 236007 169 ldq 105,dl " GetStringMissing aa 000314 700010 756111 stq sb|8,x1 4a 000315 400034 272120 tsbbp lp|L56,* " CaeReport aa 000316 000006 000001 zero 6,1 aa 000317 000033 710004 170 tra L49 L54: aa 000320 600317 234100 172 szn sp|207 " BeginNewLine aa 000321 000013 601004 tnz L57 aa 000322 600144 234100 173 szn sp|100 " Listing aa 000323 000007 600004 tze L58 aa 000324 600040 236100 ldq sp|32 " OUTPUT aa 000325 700010 756111 stq sb|8,x1 aa 000326 000012 236007 ldq 10,dl " '*n' aa 000327 700011 756111 stq sb|9,x1 4a 000330 400046 272120 tsbbp lp|L27,* " Writech aa 000331 000006 000002 zero 6,2 L58: aa 000332 000001 336007 174 lcq 1,dl " 1 aa 000333 600214 056100 asq sp|140 " LineCount L57: aa 000334 600220 760100 176 lprpap sp|144 " DictionaryEntry aa 000335 000001 236100 ldq ap|1 aa 000336 700010 756111 stq sb|8,x1 4a 000337 400032 272120 tsbbp lp|L59,* " PushInput aa 000340 000006 000001 zero 6,1 aa 000341 600323 054100 177 aos sp|211 " NestingDepth aa 000342 000001 336007 178 lcq 1,dl " true aa 000343 600314 756100 stq sp|204 " NLPending aa 000344 000001 336007 lcq 1,dl " true aa 000345 600317 756100 stq sp|207 " BeginNewLine aa 000346 000002 236007 179 ldq 2,dl " Endline aa 000347 600316 756100 stq sp|206 " Chkind aa 000350 000012 236007 ldq 10,dl " '*n' aa 000351 600044 756100 stq sp|36 " Ch L49: aa 000352 600226 234100 181 szn sp|150 " Metering aa 000353 000007 600004 tze L60 aa 000354 000011 236007 ldq 9,dl " ProcessGet_Meter aa 000355 700010 756111 stq sb|8,x1 aa 000356 700002 236111 ldq sb|2,x1 " UsageTemp aa 000357 700011 756111 stq sb|9,x1 4a 000360 400040 272120 tsbbp lp|L46,* " RecordUsage aa 000361 000006 000002 zero 6,2 L60: L52: aa 000362 700000 762111 lprpbp sb|0,x1 " bcpl return aa 000363 200000 121100 sblx1 bp|0 aa 000364 700001 764111 lprplp sb|1,x1 aa 000365 200001 710100 tra bp|1 " end of return sequence " Begin text of Nextsymb aa 000366 000010 116145 zero 8,40037 " Nextsymb aa 000367 170164 163171 zero 61556,59001 aa 000370 155142 000000 zero 55906 L47: aa 000371 000000 213000 101 epaq 0 " set lp to linkage section aa 000372 700026 764161 lprplp sb|22,*au aa 000373 200000 021100 adlx1 bp|0 " BCPL save aa 000374 700000 542111 sprpbp sb|0,x1 aa 000375 700001 544111 sprplp sb|1,x1 aa 000376 700423 620111 eax0 sb|275,x1 aa 000377 777760 360003 anx0 -16,du aa 000400 700025 740100 stx0 sb|21 " end of save sequence aa 000401 600226 234100 103 szn sp|150 " Metering aa 000402 000004 600004 tze L66 4a 000403 400052 272120 tsbbp lp|L8,* " SaveOldUsage aa 000404 000006 000000 zero 6 aa 000405 700002 756111 stq sb|2,x1 " UsageTemp L66: aa 000406 600311 234100 104 szn sp|201 " SavedSymb aa 000407 000005 600004 tze L67 aa 000410 600311 236100 105 ldq sp|201 " SavedSymb aa 000411 600217 756100 stq sp|143 " Symb aa 000412 600311 450100 106 stz sp|201 " SavedSymb aa 000413 000314 710004 107 tra L61 L67: L62: 4a 000414 400036 272120 109 tsbbp lp|L55,* " Nsymb aa 000415 000006 000000 zero 6 aa 000416 600217 756100 stq sp|143 " Symb aa 000417 000026 710004 111 tra L70 L71: aa 000420 777654 272004 112 tsbbp L48+2 " ProcessGet aa 000421 000006 000000 zero 6 aa 000422 777772 710004 115 tra L62 L72: aa 000423 600154 234100 116 szn sp|108 " Xref aa 000424 000003 600004 tze L73 4a 000425 400030 272120 tsbbp lp|L74,* " EnterIntoCrossreference aa 000426 000006 000000 zero 6 L73: L75: aa 000427 000011 236007 120 ldq 9,dl aa 000430 000241 710004 122 tra L68 L76: aa 000431 000010 236007 125 ldq 8,dl aa 000432 000237 710004 127 tra L68 L77: aa 000433 000111 236007 128 ldq 73,dl aa 000434 000235 710004 130 tra L68 L78: aa 000435 000110 236007 137 ldq 72,dl aa 000436 000233 710004 139 tra L68 L79: aa 000437 000101 236007 140 ldq 65,dl aa 000440 000231 710004 142 tra L68 L80: aa 000441 000001 236007 143 ldq 1,dl aa 000442 000227 710004 145 tra L68 L81: aa 000443 000000 236007 ldq 0,dl " 0 aa 000444 000225 710004 tra L68 L70: " Begin switchon aa 000445 600217 235100 lda sp|143 " Symb aa 000446 000220 115007 cmpa 144,dl aa 000447 777774 603004 trc L81 0a 000450 000451 710005 tra L82,al L82: aa 000451 777772 710004 tra L81 aa 000452 777771 710004 tra L81 aa 000453 777770 710004 tra L81 aa 000454 777767 710004 tra L81 aa 000455 777766 710004 tra L81 aa 000456 777755 710004 tra L77 aa 000457 777764 710004 tra L81 aa 000460 777755 710004 tra L78 aa 000461 777754 710004 tra L78 aa 000462 777761 710004 tra L81 aa 000463 777760 710004 tra L81 aa 000464 777743 710004 tra L75 aa 000465 777756 710004 tra L81 aa 000466 777755 710004 tra L81 aa 000467 777754 710004 tra L81 aa 000470 777753 710004 tra L81 aa 000471 777752 710004 tra L81 aa 000472 777743 710004 tra L78 aa 000473 777750 710004 tra L81 aa 000474 777747 710004 tra L81 aa 000475 777746 710004 tra L81 aa 000476 777745 710004 tra L81 aa 000477 777744 710004 tra L81 aa 000500 777733 710004 tra L77 aa 000501 777742 710004 tra L81 aa 000502 777741 710004 tra L81 aa 000503 777740 710004 tra L81 aa 000504 777737 710004 tra L81 aa 000505 777736 710004 tra L81 aa 000506 777735 710004 tra L81 aa 000507 777726 710004 tra L78 aa 000510 777717 710004 tra L75 aa 000511 777722 710004 tra L77 aa 000512 777731 710004 tra L81 aa 000513 777730 710004 tra L81 aa 000514 777727 710004 tra L81 aa 000515 777726 710004 tra L81 aa 000516 777717 710004 tra L78 aa 000517 777724 710004 tra L81 aa 000520 777723 710004 tra L81 aa 000521 777722 710004 tra L81 aa 000522 777676 710004 tra L71 aa 000523 777712 710004 tra L78 aa 000524 777711 710004 tra L78 aa 000525 777716 710004 tra L81 aa 000526 777715 710004 tra L81 aa 000527 777706 710004 tra L78 aa 000530 777713 710004 tra L81 aa 000531 777712 710004 tra L81 aa 000532 777711 710004 tra L81 aa 000533 777710 710004 tra L81 aa 000534 777707 710004 tra L81 aa 000535 777706 710004 tra L81 aa 000536 777705 710004 tra L81 aa 000537 777704 710004 tra L81 aa 000540 777703 710004 tra L81 aa 000541 777674 710004 tra L78 aa 000542 777667 710004 tra L76 aa 000543 777700 710004 tra L81 aa 000544 777677 710004 tra L81 aa 000545 777676 710004 tra L81 aa 000546 777675 710004 tra L81 aa 000547 777664 710004 tra L77 aa 000550 777673 710004 tra L81 aa 000551 777672 710004 tra L81 aa 000552 777671 710004 tra L81 aa 000553 777656 710004 tra L76 aa 000554 777667 710004 tra L81 aa 000555 777666 710004 tra L81 aa 000556 777665 710004 tra L81 aa 000557 777664 710004 tra L81 aa 000560 777663 710004 tra L81 aa 000561 777662 710004 tra L81 aa 000562 777661 710004 tra L81 aa 000563 777660 710004 tra L81 aa 000564 777657 710004 tra L81 aa 000565 777650 710004 tra L78 aa 000566 777655 710004 tra L81 aa 000567 777642 710004 tra L76 aa 000570 777653 710004 tra L81 aa 000571 777652 710004 tra L81 aa 000572 777651 710004 tra L81 aa 000573 777630 710004 tra L72 aa 000574 777647 710004 tra L81 aa 000575 777646 710004 tra L81 aa 000576 777645 710004 tra L81 aa 000577 777644 710004 tra L81 aa 000600 777643 710004 tra L81 aa 000601 777640 710004 tra L80 aa 000602 777641 710004 tra L81 aa 000603 777626 710004 tra L76 aa 000604 777623 710004 tra L75 aa 000605 777636 710004 tra L81 aa 000606 777635 710004 tra L81 aa 000607 777634 710004 tra L81 aa 000610 777621 710004 tra L76 aa 000611 777632 710004 tra L81 aa 000612 777631 710004 tra L81 aa 000613 777630 710004 tra L81 aa 000614 777627 710004 tra L81 aa 000615 777614 710004 tra L76 aa 000616 777625 710004 tra L81 aa 000617 777624 710004 tra L81 aa 000620 777623 710004 tra L81 aa 000621 777622 710004 tra L81 aa 000622 777615 710004 tra L79 aa 000623 777620 710004 tra L81 aa 000624 777617 710004 tra L81 aa 000625 777610 710004 tra L78 aa 000626 777615 710004 tra L81 aa 000627 777604 710004 tra L77 aa 000630 777611 710004 tra L80 aa 000631 777612 710004 tra L81 aa 000632 777611 710004 tra L81 aa 000633 777610 710004 tra L81 aa 000634 777575 710004 tra L76 aa 000635 777606 710004 tra L81 aa 000636 777573 710004 tra L76 aa 000637 777572 710004 tra L76 aa 000640 777603 710004 tra L81 aa 000641 777600 710004 tra L80 aa 000642 777577 710004 tra L80 aa 000643 777600 710004 tra L81 aa 000644 777575 710004 tra L80 aa 000645 777570 710004 tra L78 aa 000646 777575 710004 tra L81 aa 000647 777560 710004 tra L75 aa 000650 777565 710004 tra L78 aa 000651 777564 710004 tra L78 aa 000652 777571 710004 tra L81 aa 000653 777556 710004 tra L76 aa 000654 777567 710004 tra L81 aa 000655 777560 710004 tra L78 aa 000656 777565 710004 tra L81 aa 000657 777550 710004 tra L75 aa 000660 777563 710004 tra L81 aa 000661 777554 710004 tra L78 aa 000662 777553 710004 tra L78 aa 000663 777560 710004 tra L81 aa 000664 777557 710004 tra L81 aa 000665 777544 710004 tra L76 aa 000666 777555 710004 tra L81 aa 000667 777554 710004 tra L81 aa 000670 777545 710004 tra L78 L69: L68: aa 000671 700004 756111 stq sb|4,x1 aa 000672 700004 236111 ldq sb|4,x1 aa 000673 700003 756111 stq sb|3,x1 " Category aa 000674 600314 234100 147 szn sp|204 " NLPending aa 000675 000015 600004 tze L83 aa 000676 600314 450100 148 stz sp|204 " NLPending aa 000677 600310 236100 149 ldq sp|200 " ST aa 000700 000001 376007 anq 1,dl " EndCommand aa 000701 000010 600004 tze L85 aa 000702 700003 236111 ldq sb|3,x1 " Category aa 000703 000010 376007 anq 8,dl " BeginCommand aa 000704 000005 600004 tze L85 aa 000705 600217 236100 150 ldq sp|143 " Symb aa 000706 600311 756100 stq sp|201 " SavedSymb aa 000707 000172 236007 151 ldq 122,dl " SEMICOLON_S aa 000710 600217 756100 stq sp|143 " Symb L85: aa 000711 000014 710004 tra L84 L83: aa 000712 600310 236100 154 ldq sp|200 " ST aa 000713 000001 376007 anq 1,dl " EndCommand aa 000714 000011 600004 tze L86 aa 000715 700003 236111 ldq sb|3,x1 " Category aa 000716 000110 376007 anq 72,dl aa 000717 000110 116007 cmpq 72,dl aa 000720 000005 601004 tnz L86 aa 000721 600217 236100 155 ldq sp|143 " Symb aa 000722 600311 756100 stq sp|201 " SavedSymb aa 000723 000025 236007 156 ldq 21,dl " DO_S aa 000724 600217 756100 stq sp|143 " Symb L86: L84: aa 000725 700003 236111 158 ldq sb|3,x1 " Category aa 000726 600310 756100 stq sp|200 " ST L61: aa 000727 600226 234100 159 szn sp|150 " Metering aa 000730 000007 600004 tze L87 aa 000731 000006 236007 ldq 6,dl " Nextsymb_Meter aa 000732 700010 756111 stq sb|8,x1 aa 000733 700002 236111 ldq sb|2,x1 " UsageTemp aa 000734 700011 756111 stq sb|9,x1 4a 000735 400040 272120 tsbbp lp|L46,* " RecordUsage aa 000736 000006 000002 zero 6,2 L87: aa 000737 600146 234100 160 szn sp|102 " PPrep aa 000740 000022 600004 tze L88 aa 000741 600217 236100 161 ldq sp|143 " Symb aa 000742 700010 756111 stq sb|8,x1 4a 000743 400026 272120 tsbbp lp|L89,* " SymbolName aa 000744 000006 000001 zero 6,1 aa 000745 700004 756111 stq sb|4,x1 aa 000746 600040 236100 ldq sp|32 " OUTPUT aa 000747 700010 756111 stq sb|8,x1 aa 000750 700004 236111 ldq sb|4,x1 aa 000751 700011 756111 stq sb|9,x1 4a 000752 400024 272120 tsbbp lp|L90,* " WriteS aa 000753 000006 000002 zero 6,2 aa 000754 600040 236100 162 ldq sp|32 " OUTPUT aa 000755 700010 756111 stq sb|8,x1 aa 000756 000012 236007 ldq 10,dl " '*n' aa 000757 700011 756111 stq sb|9,x1 4a 000760 400046 272120 tsbbp lp|L27,* " Writech aa 000761 000006 000002 zero 6,2 L88: L65: aa 000762 700000 762111 lprpbp sb|0,x1 " bcpl return aa 000763 200000 121100 sblx1 bp|0 aa 000764 700001 764111 lprplp sb|1,x1 aa 000765 200001 710100 tra bp|1 " end of return sequence " Begin text of EnterIntoDictionary aa 000766 000023 105156 zero 19,35438 " EnterIntoDictionary aa 000767 164145 162111 zero 59493,58441 aa 000770 156164 157104 zero 56436,56900 aa 000771 151143 164151 zero 53859,59497 aa 000772 157156 141162 zero 56942,49778 aa 000773 171000 000000 zero 61952 L91: aa 000774 000000 213000 187 epaq 0 " set lp to linkage section aa 000775 700026 764161 lprplp sb|22,*au aa 000776 200000 021100 adlx1 bp|0 " BCPL save aa 000777 700000 542111 sprpbp sb|0,x1 aa 001000 700001 544111 sprplp sb|1,x1 aa 001001 701047 620111 eax0 sb|551,x1 aa 001002 777760 360003 anx0 -16,du aa 001003 700025 740100 stx0 sb|21 " end of save sequence aa 001004 600226 234100 189 szn sp|150 " Metering aa 001005 000004 600004 tze L95 4a 001006 400052 272120 tsbbp lp|L8,* " SaveOldUsage aa 001007 001020 000000 zero 528 aa 001010 700005 756111 stq sb|5,x1 " UsageTemp L95: aa 001011 700010 352111 190 eapbp sb|8,x1 " a vector aa 001012 700006 542111 sprpbp sb|6,x1 " String aa 001013 700002 236111 191 ldq sb|2,x1 " Unpacked aa 001014 701022 756111 stq sb|530,x1 aa 001015 700006 236111 ldq sb|6,x1 " String aa 001016 701023 756111 stq sb|531,x1 4a 001017 400022 272120 tsbbp lp|L96,* " Packstring aa 001020 001020 000002 zero 528,2 aa 001021 700006 236111 192 ldq sb|6,x1 " String aa 001022 701022 756111 stq sb|530,x1 4a 001023 400020 272120 tsbbp lp|L97,* " LengthInWords aa 001024 001020 000001 zero 528,1 aa 001025 000001 176007 sbq 1,dl " 1 aa 001026 700007 756111 stq sb|7,x1 " Len aa 001027 700006 762111 193 lprpbp sb|6,x1 " String aa 001030 200000 236100 ldq bp|0 aa 001031 700007 722111 lxl2 sb|7,x1 " Len aa 001032 700006 761111 lprpab sb|6,x1 " String aa 001033 100000 076112 adq ab|0,x2 aa 001034 701010 756111 stq sb|520,x1 " Hash aa 001035 701010 234111 194 szn sb|520,x1 " Hash aa 001036 000003 605004 tpl L98 aa 001037 000000 236007 ldq 0,dl aa 001040 701010 156111 ssq sb|520,x1 " Hash L98: aa 001041 701010 236111 195 ldq sb|520,x1 " Hash aa 001042 000145 506007 div 101,dl " HashSize aa 001043 600324 763100 lprpbb sp|212 " NamesTable aa 001044 300000 353505 eapbb bb|0,al aa 001045 701011 543111 sprpbb sb|521,x1 " Q L99: aa 001046 701011 763111 196 lprpbb sb|521,x1 " Q aa 001047 300000 235100 lda bb|0 aa 001050 600220 755100 sta sp|144 " DictionaryEntry aa 001051 600230 054100 197 aos sp|152 " DictionaryDepth aa 001052 600220 234100 198 szn sp|144 " DictionaryEntry aa 001053 000064 600004 tze L100 aa 001054 700006 765111 199 lprplb sb|6,x1 " String aa 001055 500000 235100 lda lb|0 aa 001056 600220 760100 lprpap sp|144 " DictionaryEntry aa 001057 000001 760100 lprpap ap|1 aa 001060 000000 175100 sba ap|0 aa 001061 701012 755111 sta sb|522,x1 " d aa 001062 701012 234111 200 szn sb|522,x1 " d aa 001063 000024 601004 tnz L101 aa 001064 000001 235007 lda 1,dl " 1 aa 001065 701013 755111 sta sb|523,x1 " i aa 001066 700007 235111 lda sb|7,x1 " Len aa 001067 701014 755111 sta sb|524,x1 aa 001070 000014 710004 tra L102 L103: aa 001071 701013 723111 201 lxl3 sb|523,x1 " i aa 001072 700006 762111 lprpbp sb|6,x1 " String aa 001073 200000 235113 lda bp|0,x3 aa 001074 701013 724111 lxl4 sb|523,x1 " i aa 001075 600220 761100 lprpab sp|144 " DictionaryEntry aa 001076 100001 761100 lprpab ab|1 aa 001077 100000 175114 sba ab|0,x4 aa 001100 701012 755111 sta sb|522,x1 " d aa 001101 701012 234111 202 szn sb|522,x1 " d aa 001102 000005 601004 tnz L104 aa 001103 701013 054111 aos sb|523,x1 " i L102: aa 001104 701013 235111 lda sb|523,x1 " i aa 001105 701014 115111 cmpa sb|524,x1 aa 001106 777763 604404 tmoz L103 L104: L101: aa 001107 701012 234111 204 szn sb|522,x1 " d aa 001110 000014 601004 tnz L105 aa 001111 600226 234100 205 szn sp|150 " Metering aa 001112 000007 600004 tze L106 aa 001113 000017 236007 ldq 15,dl " SymbolSearch_Meter aa 001114 701022 756111 stq sb|530,x1 aa 001115 700005 236111 ldq sb|5,x1 " UsageTemp aa 001116 701023 756111 stq sb|531,x1 4a 001117 400040 272120 tsbbp lp|L46,* " RecordUsage aa 001120 001020 000002 zero 528,2 L106: aa 001121 600220 763100 206 lprpbb sp|144 " DictionaryEntry aa 001122 300000 236100 ldq bb|0 aa 001123 000050 710004 tra L94 L105: aa 001124 701012 234111 208 szn sb|522,x1 " d aa 001125 000004 605004 tpl L107 aa 001126 600220 765100 lprplb sp|144 " DictionaryEntry aa 001127 500004 371500 eaplb lb|4 aa 001130 000003 710004 tra L108 L107: aa 001131 600220 760100 lprpap sp|144 " DictionaryEntry aa 001132 000005 371500 eaplb ap|5 L108: aa 001133 701015 545111 sprplb sb|525,x1 aa 001134 701015 235111 lda sb|525,x1 aa 001135 701011 755111 sta sb|521,x1 " Q aa 001136 777710 710004 tra L99 L100: aa 001137 700006 235111 210 lda sb|6,x1 " String aa 001140 701022 755111 sta sb|530,x1 4a 001141 400016 272120 tsbbp lp|L109,* " StoreString aa 001142 001020 000001 zero 528,1 aa 001143 701012 756111 stq sb|522,x1 aa 001144 700003 236111 ldq sb|3,x1 " Type aa 001145 701022 756111 stq sb|530,x1 aa 001146 701012 236111 ldq sb|522,x1 aa 001147 701023 756111 stq sb|531,x1 aa 001150 701024 450111 stz sb|532,x1 aa 001151 701025 450111 stz sb|533,x1 aa 001152 701026 450111 stz sb|534,x1 aa 001153 701027 450111 stz sb|535,x1 4a 001154 400014 272120 tsbbp lp|L110,* " List6 aa 001155 001020 000006 zero 528,6 aa 001156 600220 756100 stq sp|144 " DictionaryEntry aa 001157 600220 236100 212 ldq sp|144 " DictionaryEntry aa 001160 701011 765111 lprplb sb|521,x1 " Q aa 001161 500000 756100 stq lb|0 " Q aa 001162 600226 234100 213 szn sp|150 " Metering aa 001163 000007 600004 tze L111 aa 001164 000014 236007 ldq 12,dl " SymbolAdd_Meter aa 001165 701022 756111 stq sb|530,x1 aa 001166 700005 236111 ldq sb|5,x1 " UsageTemp aa 001167 701023 756111 stq sb|531,x1 4a 001170 400040 272120 tsbbp lp|L46,* " RecordUsage aa 001171 001020 000002 zero 528,2 L111: aa 001172 700003 236111 214 ldq sb|3,x1 " Type L94: aa 001173 700005 756111 stq sb|5,x1 aa 001174 700005 236111 ldq sb|5,x1 aa 001175 700000 762111 lprpbp sb|0,x1 " bcpl return aa 001176 200000 121100 sblx1 bp|0 aa 001177 700001 764111 lprplp sb|1,x1 aa 001200 200001 710100 tra bp|1 " end of return sequence " Begin text of LexInit aa 001201 000007 114145 zero 7,39013 " LexInit aa 001202 170111 156151 zero 61513,56425 aa 001203 164000 000000 zero 59392 aa 001204 700004 756111 223 stq sb|4,x1 " temporary L112: aa 001205 000000 213000 epaq 0 " set lp to linkage section aa 001206 700026 764161 lprplp sb|22,*au aa 001207 200000 021100 adlx1 bp|0 " BCPL save aa 001210 700000 542111 sprpbp sb|0,x1 aa 001211 700001 544111 sprplp sb|1,x1 aa 001212 700422 620111 eax0 sb|274,x1 aa 001213 777760 360003 anx0 -16,du aa 001214 700025 740100 stx0 sb|21 " end of save sequence aa 001215 600044 352100 224 eapbp sp|36 " Ch aa 001216 600315 542100 sprpbp sp|205 " Lvch aa 001217 000012 236007 ldq 10,dl " '*n' aa 001220 600044 756100 stq sp|36 " Ch aa 001221 000002 236007 ldq 2,dl " Endline aa 001222 600316 756100 stq sp|206 " Chkind aa 001223 600320 450100 225 stz sp|208 " EndCurrentLine aa 001224 000001 336007 lcq 1,dl " true aa 001225 600317 756100 stq sp|207 " BeginNewLine aa 001226 600322 450100 226 stz sp|210 " EndOfAllInputReached aa 001227 600323 450100 227 stz sp|211 " NestingDepth aa 001230 000001 336007 228 lcq 1,dl " true aa 001231 600314 756100 stq sp|204 " NLPending aa 001232 600311 450100 stz sp|201 " SavedSymb aa 001233 600310 450100 stz sp|200 " ST aa 001234 600313 450100 229 stz sp|203 " Vp aa 001235 000777 236007 ldq 511,dl " Vmax aa 001236 700006 756111 stq sb|6,x1 4a 001237 400012 272120 tsbbp lp|L116,* " Newvec aa 001240 000004 000001 zero 4,1 aa 001241 600312 756100 stq sp|202 " V aa 001242 600231 450100 230 stz sp|153 " TotalLines aa 001243 600230 450100 stz sp|152 " DictionaryDepth aa 001244 000145 236007 231 ldq 101,dl " HashSize aa 001245 700006 756111 stq sb|6,x1 4a 001246 400012 272120 tsbbp lp|L116,* " Newvec aa 001247 000004 000001 zero 4,1 aa 001250 600324 756100 stq sp|212 " NamesTable aa 001251 700002 450111 232 stz sb|2,x1 " i aa 001252 000005 710004 tra L117 L118: aa 001253 700002 725111 lxl5 sb|2,x1 " i aa 001254 600324 762100 lprpbp sp|212 " NamesTable aa 001255 200000 450115 stz bp|0,x5 aa 001256 700002 054111 aos sb|2,x1 " i L117: aa 001257 700002 236111 ldq sb|2,x1 " i aa 001260 000145 116007 cmpq 101,dl " HashSize aa 001261 777772 604404 tmoz L118 4a 001262 400010 272120 234 tsbbp lp|L119,* " LoadDictionary aa 001263 000004 000000 zero 4 aa 001264 777107 272004 235 tsbbp L47+2 " Nextsymb aa 001265 000004 000000 zero 4 L115: aa 001266 700000 762111 lprpbp sb|0,x1 " bcpl return aa 001267 200000 121100 sblx1 bp|0 aa 001270 700001 764111 lprplp sb|1,x1 aa 001271 200001 710100 tra bp|1 " end of return sequence " Definition section part one - external entry points 5a 000000 000025 000000 " pointer to first definition aa 000001 000000 600000 " flags: new format, ignore header aa 000002 000000 000000 " list terminator aa 000003 011142 143160 " "bcpl_lex0" aa 000004 154137 154145 aa 000005 170060 000000 aa 000006 007114 145170 " "LexInit" aa 000007 111156 151164 aa 000010 023105 156164 " "EnterIntoDictionary" aa 000011 145162 111156 aa 000012 164157 104151 aa 000013 143164 151157 aa 000014 156141 162171 aa 000015 010116 145170 " "Nextsymb" aa 000016 164163 171155 aa 000017 142000 000000 aa 000020 003122 143150 " "Rch" aa 000021 014163 171155 " "symbol_table" aa 000022 142157 154137 aa 000023 164141 142154 aa 000024 145000 000000 " Segname definition for bcpl_lex0 55 000025 000030 000002 " forward, backward threads 5a 000026 000002 400003 " value defined, class flags 55 000027 000003 000030 " name pointer, first entry def " Definition for LexInit 55 000030 000033 000025 " forward, backward threads 0a 000031 001205 500000 " value defined, class flags 55 000032 000006 000025 " name pointer, segname def pointer " Definition for EnterIntoDictionary 55 000033 000036 000030 " forward, backward threads 0a 000034 000774 500000 " value defined, class flags 55 000035 000010 000025 " name pointer, segname def pointer " Definition for Nextsymb 55 000036 000041 000033 " forward, backward threads 0a 000037 000371 500000 " value defined, class flags 55 000040 000015 000025 " name pointer, segname def pointer " Definition for Rch 55 000041 000044 000036 " forward, backward threads 0a 000042 000002 500000 " value defined, class flags 55 000043 000020 000025 " name pointer, segname def pointer " Definition for symbol_table 55 000044 000002 000041 " forward, backward threads 6a 000045 000000 400002 " value defined, class flags 55 000046 000021 000025 " name pointer, segname def pointer " Definition section part two - symbolic info for external references aa 000047 011142 143160 " "bcpl_lex2" aa 000050 154137 154145 aa 000051 170062 000000 aa 000052 016114 157141 " "LoadDictionary" aa 000053 144104 151143 aa 000054 164151 157156 aa 000055 141162 171000 5a 000056 000057 000000 aa 000057 000004 000000 55 000060 000047 000052 aa 000061 014142 143160 " "bcpl_utility" aa 000062 154137 165164 aa 000063 151154 151164 aa 000064 171000 000000 aa 000065 006116 145167 " "Newvec" aa 000066 166145 143000 5a 000067 000070 000000 aa 000070 000004 000000 55 000071 000061 000065 aa 000072 005114 151163 " "List6" aa 000073 164066 000000 5a 000074 000075 000000 aa 000075 000004 000000 55 000076 000061 000072 aa 000077 013123 164157 " "StoreString" aa 000100 162145 123164 aa 000101 162151 156147 5a 000102 000103 000000 aa 000103 000004 000000 55 000104 000061 000077 aa 000105 015142 143160 " "bcpl_strings_" aa 000106 154137 163164 aa 000107 162151 156147 aa 000110 163137 000000 aa 000111 015114 145156 " "LengthInWords" aa 000112 147164 150111 aa 000113 156127 157162 aa 000114 144163 000000 5a 000115 000116 000000 aa 000116 000004 000000 55 000117 000105 000111 aa 000120 022142 143160 " "bcpl_machine_code_" aa 000121 154137 155141 aa 000122 143150 151156 aa 000123 145137 143157 aa 000124 144145 137000 aa 000125 012120 141143 " "Packstring" aa 000126 153163 164162 aa 000127 151156 147000 5a 000130 000131 000000 aa 000131 000004 000000 55 000132 000120 000125 aa 000133 017142 143160 " "bcpl_stream_io_" aa 000134 154137 163164 aa 000135 162145 141155 aa 000136 137151 157137 aa 000137 006127 162151 " "WriteS" aa 000140 164145 123000 5a 000141 000142 000000 aa 000142 000004 000000 55 000143 000133 000137 aa 000144 012142 143160 " "bcpl_plist" aa 000145 154137 160154 aa 000146 151163 164000 aa 000147 012123 171155 " "SymbolName" aa 000150 142157 154116 aa 000151 141155 145000 5a 000152 000153 000000 aa 000153 000004 000000 55 000154 000144 000147 aa 000155 027105 156164 " "EnterIntoCrossreference" aa 000156 145162 111156 aa 000157 164157 103162 aa 000160 157163 163162 aa 000161 145146 145162 aa 000162 145156 143145 5a 000163 000164 000000 aa 000164 000004 000000 55 000165 000144 000155 aa 000166 011120 165163 " "PushInput" aa 000167 150111 156160 aa 000170 165164 000000 5a 000171 000172 000000 aa 000172 000004 000000 55 000173 000061 000166 aa 000174 013142 143160 " "bcpl_report" aa 000175 154137 162145 aa 000176 160157 162164 aa 000177 011103 141145 " "CaeReport" aa 000200 122145 160157 aa 000201 162164 000000 5a 000202 000203 000000 aa 000203 000004 000000 55 000204 000174 000177 aa 000205 011142 143160 " "bcpl_lex1" aa 000206 154137 154145 aa 000207 170061 000000 aa 000210 005116 163171 " "Nsymb" aa 000211 155142 000000 5a 000212 000213 000000 aa 000213 000004 000000 55 000214 000205 000210 aa 000215 013122 145143 " "RecordUsage" aa 000216 157162 144125 aa 000217 163141 147145 5a 000220 000221 000000 aa 000221 000004 000000 55 000222 000061 000215 aa 000223 006106 157162 " "Format" aa 000224 155141 164000 5a 000225 000226 000000 aa 000226 000004 000000 55 000227 000133 000223 aa 000230 010120 157160 " "PopInput" aa 000231 111156 160165 aa 000232 164000 000000 5a 000233 000234 000000 aa 000234 000004 000000 55 000235 000061 000230 aa 000236 007127 162151 " "Writech" aa 000237 164145 143150 5a 000240 000241 000000 aa 000241 000004 000000 55 000242 000120 000236 aa 000243 006122 145141 " "Readch" aa 000244 144143 150000 5a 000245 000246 000000 aa 000246 000004 000000 55 000247 000120 000243 aa 000250 014123 141166 " "SaveOldUsage" aa 000251 145117 154144 aa 000252 125163 141147 aa 000253 145000 000000 5a 000254 000255 000000 aa 000255 000004 000000 55 000256 000061 000250 aa 000257 000000 000000 " padding " Linkage section - static variables and external links aa 000000 000000 000000 " linkage header 0a 000001 001272 000000 " address of defs aa 000002 000000 000000 aa 000003 000000 000000 aa 000004 000000 000000 aa 000005 000000 000000 2a 000006 000010 000054 " offset to links, total length aa 000007 000000 000054 " obsolete length " External link pairs L119: 3a 000010 777770 000046 " "bcpl_lex2$LoadDictionary" 5a 000011 000056 000000 L116: 3a 000012 777766 000046 " "bcpl_utility$Newvec" 5a 000013 000067 000000 L110: 3a 000014 777764 000046 " "bcpl_utility$List6" 5a 000015 000074 000000 L109: 3a 000016 777762 000046 " "bcpl_utility$StoreString" 5a 000017 000102 000000 L97: 3a 000020 777760 000046 " "bcpl_strings_$LengthInWords" 5a 000021 000115 000000 L96: 3a 000022 777756 000046 " "bcpl_machine_code_$Packstring" 5a 000023 000130 000000 L90: 3a 000024 777754 000046 " "bcpl_stream_io_$WriteS" 5a 000025 000141 000000 L89: 3a 000026 777752 000046 " "bcpl_plist$SymbolName" 5a 000027 000152 000000 L74: 3a 000030 777750 000046 " "bcpl_plist$EnterIntoCrossreference" 5a 000031 000163 000000 L59: 3a 000032 777746 000046 " "bcpl_utility$PushInput" 5a 000033 000171 000000 L56: 3a 000034 777744 000046 " "bcpl_report$CaeReport" 5a 000035 000202 000000 L55: 3a 000036 777742 000046 " "bcpl_lex1$Nsymb" 5a 000037 000212 000000 L46: 3a 000040 777740 000046 " "bcpl_utility$RecordUsage" 5a 000041 000220 000000 L40: 3a 000042 777736 000046 " "bcpl_stream_io_$Format" 5a 000043 000225 000000 L28: 3a 000044 777734 000046 " "bcpl_utility$PopInput" 5a 000045 000233 000000 L27: 3a 000046 777732 000046 " "bcpl_machine_code_$Writech" 5a 000047 000240 000000 L9: 3a 000050 777730 000046 " "bcpl_machine_code_$Readch" 5a 000051 000245 000000 L8: 3a 000052 777726 000046 " "bcpl_utility$SaveOldUsage" 5a 000053 000254 000000 " Symbol section header aa 000000 000000 000001 " version number of header structure aa 000001 163171 155142 " "symbtree" aa 000002 164162 145145 aa 000003 000000 000003 " compiler version number aa 000004 000000 101170 " date/time compiler modified aa 000005 533311 032072 " 09/25/73 0959.1 mst Tue aa 000006 000000 102333 " time of this compilation aa 000007 437644 745437 " 01/24/75 0659.2 mst Fri aa 000010 142143 160154 " "bcpl " aa 000011 040040 040040 aa 000012 000056 000035 " compiler version name - pointer, length aa 000013 000066 000024 " user id - pointer, length aa 000014 000073 000043 " comment string - pointer, length aa 000015 000002 000002 " text and linkage boundaries aa 000016 000024 000000 " source map, symbol tree root 7a 000017 000000 000200 " section header pointer, block size aa 000020 000000 000200 " next block pointer, rel_text aa 000021 000000 000223 " rel_def, rel_link aa 000022 000234 000200 " rel_symbol, default truncate aa 000023 000024 000000 " optional truncate, unused aa 000024 000000 000001 " source files map: version number aa 000025 000000 000006 " number of files aa 000026 000104 000050 " bcpl_lex0 aa 000027 023333 611421 " last modified on aa 000030 000000 102333 " 01/24/75 0647.2 mst Fri aa 000031 432366 600000 aa 000032 000116 000044 " bcpl_lex_head aa 000033 021607 540216 " last modified on aa 000034 000000 101621 " 05/06/74 1740.7 mst Mon aa 000035 351437 000000 aa 000036 000127 000051 " bcpl_compiler_head aa 000037 021607 540214 " last modified on aa 000040 000000 101621 " 05/06/74 1740.6 mst Mon aa 000041 351403 200000 aa 000042 000142 000043 " bcpl_symbols aa 000043 021607 540223 " last modified on aa 000044 000000 101621 " 05/06/74 1740.8 mst Mon aa 000045 351474 000000 aa 000046 000153 000045 " bcpl_lex_codes aa 000047 021607 540215 " last modified on aa 000050 000000 101621 " 05/06/74 1740.7 mst Mon aa 000051 351432 600000 aa 000052 000165 000051 " bcpl_metering_head aa 000053 021607 540220 " last modified on aa 000054 000000 101621 " 05/06/74 1740.8 mst Mon aa 000055 351474 000000 aa 000056 102103 120114 " "BCPL version 3.4, August 1973" aa 000057 040166 145162 aa 000060 163151 157156 aa 000061 040063 056064 aa 000062 054040 101165 aa 000063 147165 163164 aa 000064 040061 071067 aa 000065 063040 040040 aa 000066 115141 162164 " "Martinson.SysMaint.a" aa 000067 151156 163157 aa 000070 156056 123171 aa 000071 163115 141151 aa 000072 156164 056141 aa 000073 163157 165162 " "source xref alist optimize 6180" aa 000074 143145 040040 aa 000075 170162 145146 aa 000076 040040 141154 aa 000077 151163 164040 aa 000100 040157 160164 aa 000101 151155 151172 aa 000102 145040 040066 aa 000103 061070 060040 aa 000104 076062 056061 " ">2.1spec>online>mib083074>bcpl_lex0.bcpl" aa 000105 163160 145143 aa 000106 076157 156154 aa 000107 151156 145076 aa 000110 155151 142060 aa 000111 070063 060067 aa 000112 064076 142143 aa 000113 160154 137154 aa 000114 145170 060056 aa 000115 142143 160154 aa 000116 076154 144144 " ">ldd>include>bcpl_lex_head.incl.bcpl" aa 000117 076151 156143 aa 000120 154165 144145 aa 000121 076142 143160 aa 000122 154137 154145 aa 000123 170137 150145 aa 000124 141144 056151 aa 000125 156143 154056 aa 000126 142143 160154 aa 000127 076154 144144 " ">ldd>include>bcpl_compiler_head.incl.bcpl" aa 000130 076151 156143 aa 000131 154165 144145 aa 000132 076142 143160 aa 000133 154137 143157 aa 000134 155160 151154 aa 000135 145162 137150 aa 000136 145141 144056 aa 000137 151156 143154 aa 000140 056142 143160 aa 000141 154040 040040 aa 000142 076154 144144 " ">ldd>include>bcpl_symbols.incl.bcpl" aa 000143 076151 156143 aa 000144 154165 144145 aa 000145 076142 143160 aa 000146 154137 163171 aa 000147 155142 157154 aa 000150 163056 151156 aa 000151 143154 056142 aa 000152 143160 154040 aa 000153 076154 144144 " ">ldd>include>bcpl_lex_codes.incl.bcpl" aa 000154 076151 156143 aa 000155 154165 144145 aa 000156 076142 143160 aa 000157 154137 154145 aa 000160 170137 143157 aa 000161 144145 163056 aa 000162 151156 143154 aa 000163 056142 143160 aa 000164 154040 040040 aa 000165 076154 144144 " ">ldd>include>bcpl_metering_head.incl.bcpl" aa 000166 076151 156143 aa 000167 154165 144145 aa 000170 076142 143160 aa 000171 154137 155145 aa 000172 164145 162151 aa 000173 156147 137150 aa 000174 145141 144056 aa 000175 151156 143154 aa 000176 056142 143160 aa 000177 154040 040040 " Relocation information " text section relocation bits aa 000200 000000 000002 " version number of rel-bits structure aa 000201 000000 001141 " length in bits aa 000202 740305 000005 aa 000203 170263 200123 aa 000204 607764 740315 aa 000205 170043 236024 aa 000206 647405 150024 aa 000207 000123 601264 aa 000210 000024 740415 aa 000211 170113 236010 aa 000212 647402 151701 aa 000213 130362 646400 aa 000214 012000 012000 aa 000215 051701 272360 aa 000216 106400 247416 aa 000217 751701 072360 aa 000220 126474 027517 aa 000221 023320 000123 aa 000222 601364 000000 l " inkage relocation bits aa 000223 000000 000002 " version number of rel-bits structure aa 000224 000000 000360 " length in bits aa 000225 100002 204652 aa 000226 465246 524652 aa 000227 465246 524652 aa 000230 465246 524652 aa 000231 465246 524652 aa 000232 465246 524652 aa 000233 465246 520000 s " ymbol relocation bits aa 000234 000000 000002 " version number of rel-bits structure aa 000235 000000 000043 " length in bits aa 000236 740365 770702 " Object map aa 002065 000000 000001 " version number of object_map structure aa 002066 157142 152137 " "obj_map " aa 002067 155141 160040 aa 002070 000000 001272 " text offset, length aa 002071 001272 000257 " def offset, length aa 002072 001552 000054 " link offset, length aa 002073 001626 000237 " symbol offset, length aa 002074 000000 000000 " break map offset, length aa 002075 340000 000000 " flags: ^bound, relocatable, procedure, standard aa 002076 002065 000000 " object map pointer, unused ----------------------------------------------------------- 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