Browse Source

+ -b and -bl options work !
+ cs_local_browser ($L+) is disabled if cs_browser ($Y+)
is not enabled when quitting global section
* local vars and procedures are not yet stored into PPU

pierre 26 years ago
parent
commit
0669413251

+ 2 - 0
compiler/msgidx.inc

@@ -56,6 +56,7 @@ type tmsgconst=(
   scan_w_unsupported_app_type,
   scan_w_unsupported_app_type,
   scan_w_app_type_not_support,
   scan_w_app_type_not_support,
   scan_w_unsupported_asmmode_specifier,
   scan_w_unsupported_asmmode_specifier,
+  scan_w_no_asm_reader_switch_inside_asm,
   scan_e_wrong_switch_toggle,
   scan_e_wrong_switch_toggle,
   scan_e_resourcefiles_not_supported,
   scan_e_resourcefiles_not_supported,
   parser_e_syntax_error,
   parser_e_syntax_error,
@@ -510,6 +511,7 @@ type tmsgconst=(
   ol001,
   ol001,
   ol002,
   ol002,
   ol003,
   ol003,
+  ol137,
   ol004,
   ol004,
   ol005,
   ol005,
   ol006,
   ol006,

+ 199 - 198
compiler/msgtxt.inc

@@ -56,611 +56,612 @@ const msgtxt : array[0..00099,1..240] of char=(
   'W_Unsupported application type: $1'#000+
   'W_Unsupported application type: $1'#000+
   'W_$APPTYPE isn'#039't support by the target OS'#000+
   'W_$APPTYPE isn'#039't support by the target OS'#000+
   'W_Unsupported assembler style specified',' $1'#000+
   'W_Unsupported assembler style specified',' $1'#000+
+  'W_ASM reader switch is not possible inside asm statement $1 will be ef'+
+  'fective only for next'#000+
   'E_Wrong switch toggle, use ON/OFF or +/-'#000+
   'E_Wrong switch toggle, use ON/OFF or +/-'#000+
   'E_Resource files are not supported for this target'#000+
   'E_Resource files are not supported for this target'#000+
   'E_Parser - Syntax Error'#000+
   'E_Parser - Syntax Error'#000+
-  'W_Procedure type FAR ignored'#000+
+  'W_Procedure type FAR ignored',#000+
   'W_Procedure type NEAR ignored'#000+
   'W_Procedure type NEAR ignored'#000+
   'W_Procedure type REGISTER ignored'#000+
   'W_Procedure type REGISTER ignored'#000+
   'E_No DLL File specified'#000+
   'E_No DLL File specified'#000+
-  'E_D','LL exported function names cannot be double $1'#000+
+  'E_DLL exported function names cannot be double $1'#000+
   'E_DLL exported function indexes cannot be double $1'#000+
   'E_DLL exported function indexes cannot be double $1'#000+
   'E_Invalid index for DLL exported function'#000+
   'E_Invalid index for DLL exported function'#000+
-  'E_Constructor name must be INIT'#000+
+  'E_Const','ructor name must be INIT'#000+
   'E_Destructor name must be DONE'#000+
   'E_Destructor name must be DONE'#000+
   'E_Illegal open parameter'#000+
   'E_Illegal open parameter'#000+
-  'E_Procedure',' type INLINE not supported'#000+
+  'E_Procedure type INLINE not supported'#000+
   'W_Private methods shouldn'#039't be VIRTUAL'#000+
   'W_Private methods shouldn'#039't be VIRTUAL'#000+
   'W_Constructor should be public'#000+
   'W_Constructor should be public'#000+
   'W_Destructor should be public'#000+
   'W_Destructor should be public'#000+
-  'N_Class should have one destructor only'#000+
+  'N_Class should have o','ne destructor only'#000+
   'E_Local class definitions are not allowed'#000+
   'E_Local class definitions are not allowed'#000+
-  'F_Anonym class definitions are ','not allowed'#000+
+  'F_Anonym class definitions are not allowed'#000+
   'E_The object $1 has no VMT'#000+
   'E_The object $1 has no VMT'#000+
   'E_Illegal parameter list'#000+
   'E_Illegal parameter list'#000+
   'E_Wrong parameter type specified for arg #$1'#000+
   'E_Wrong parameter type specified for arg #$1'#000+
-  'E_Wrong amount of parameters specified'#000+
+  'E_Wrong amount of parameters specified'#000,+
   'E_overloaded identifier $1 isn'#039't a function'#000+
   'E_overloaded identifier $1 isn'#039't a function'#000+
-  'E_overloaded functions have the same parameter l','ist'#000+
+  'E_overloaded functions have the same parameter list'#000+
   'E_function header doesn'#039't match the forward declaration $1'#000+
   'E_function header doesn'#039't match the forward declaration $1'#000+
   'E_function header $1 doesn'#039't match forward : var name changes $2 ='+
   'E_function header $1 doesn'#039't match forward : var name changes $2 ='+
   '> $3'#000+
   '> $3'#000+
-  'N_only values can be jumped over in enumeration types'#000+
-  'N_Interface and implementation names are different !',#000+
+  'N_only values ','can be jumped over in enumeration types'#000+
+  'N_Interface and implementation names are different !'#000+
   'E_With can not be used for variables in a different segment'#000+
   'E_With can not be used for variables in a different segment'#000+
   'E_function nesting > 31'#000+
   'E_function nesting > 31'#000+
   'E_range check error while evaluating constants'#000+
   'E_range check error while evaluating constants'#000+
-  'W_range check error while evaluating constants'#000+
+  'W_range check er','ror while evaluating constants'#000+
   'E_duplicate case label'#000+
   'E_duplicate case label'#000+
-  'E_Upper bound of case range is less th','an lower bound'#000+
+  'E_Upper bound of case range is less than lower bound'#000+
   'E_typed constants of classes are not allowed'#000+
   'E_typed constants of classes are not allowed'#000+
   'E_functions variables of overloaded functions are not allowed'#000+
   'E_functions variables of overloaded functions are not allowed'#000+
-  'E_string length must be a value from 1 to 255'#000+
+  'E_string length must be a ','value from 1 to 255'#000+
   'W_use extended syntax of DISPOSE and NEW to generate instances of obje'+
   'W_use extended syntax of DISPOSE and NEW to generate instances of obje'+
-  'ct','s'#000+
+  'cts'#000+
   'E_class identifier expected'#000+
   'E_class identifier expected'#000+
   'E_type identifier not allowed here'#000+
   'E_type identifier not allowed here'#000+
   'E_method identifier expected'#000+
   'E_method identifier expected'#000+
-  'E_function header doesn'#039't match any method of this class'#000+
+  'E_function header doesn'#039't match any method of this cla','ss'#000+
   'P_procedure/function $1'#000+
   'P_procedure/function $1'#000+
   'E_Illegal floating point constant'#000+
   'E_Illegal floating point constant'#000+
-  'E_FAIL can be used in construct','ors only'#000+
+  'E_FAIL can be used in constructors only'#000+
   'E_Destructors can'#039't have parameters'#000+
   'E_Destructors can'#039't have parameters'#000+
   'E_Only class methods can be referred with class references'#000+
   'E_Only class methods can be referred with class references'#000+
-  'E_Only class methods can be accessed in class methods'#000+
+  'E_Only class methods can be accessed in clas','s methods'#000+
   'E_Constant and CASE types do not match'#000+
   'E_Constant and CASE types do not match'#000+
-  'E_The symbol can'#039't be exported from a libra','ry'#000+
+  'E_The symbol can'#039't be exported from a library'#000+
   'W_A inherited method is hidden by $1'#000+
   'W_A inherited method is hidden by $1'#000+
   'E_There is no method in an ancestor class to be overridden: $1'#000+
   'E_There is no method in an ancestor class to be overridden: $1'#000+
   'E_No member is provided to access property'#000+
   'E_No member is provided to access property'#000+
-  'W_Stored prorperty directive is not yet implemented'#000+
+  'W_','Stored prorperty directive is not yet implemented'#000+
   'E_Illegal symbol for property access'#000+
   'E_Illegal symbol for property access'#000+
-  'E_Can','not access a protected field of an object here'#000+
+  'E_Cannot access a protected field of an object here'#000+
   'E_Cannot access a private field of an object here'#000+
   'E_Cannot access a private field of an object here'#000+
-  'W_overloaded of virtual method must be virtual: $1'#000+
+  'W_overloaded of virtual method must be virtual: $1'#000,+
   'E_overloaded methods which are virtual must have the same return type:'+
   'E_overloaded methods which are virtual must have the same return type:'+
   ' $1'#000+
   ' $1'#000+
-  'E_EXPORT declared ','functions can'#039't be nested'#000+
+  'E_EXPORT declared functions can'#039't be nested'#000+
   'E_methods can'#039't be EXPORTed'#000+
   'E_methods can'#039't be EXPORTed'#000+
   'E_call by var parameters have to match exactly'#000+
   'E_call by var parameters have to match exactly'#000+
-  'E_Class isn'#039't a parent class of the current class'#000+
+  'E_Class isn'#039't a parent class of the current cla','ss'#000+
   'E_SELF is only allowed in methods'#000+
   'E_SELF is only allowed in methods'#000+
-  'E_methods can be only in other methods called direct wi','th type ident'+
-  'ifier of the class'#000+
+  'E_methods can be only in other methods called direct with type identif'+
+  'ier of the class'#000+
   'E_Illegal use of '#039':'#039#000+
   'E_Illegal use of '#039':'#039#000+
   'E_range check error in set constructor or duplicate set element'#000+
   'E_range check error in set constructor or duplicate set element'#000+
   'E_Pointer to object expected'#000+
   'E_Pointer to object expected'#000+
-  'E_Expression must be constructor call'#000+
+  'E_','Expression must be constructor call'#000+
   'E_Expression must be destructor call'#000+
   'E_Expression must be destructor call'#000+
-  'E_Illegal order of ','record elements'#000+
+  'E_Illegal order of record elements'#000+
   'E_Expression type must be class or record type'#000+
   'E_Expression type must be class or record type'#000+
   'E_Functions with void return value can'#039't return any value'#000+
   'E_Functions with void return value can'#039't return any value'#000+
-  'E_constructors and destructors must be methods'#000+
+  'E_constructors and destruct','ors must be methods'#000+
   'E_Operator is not overloaded'#000+
   'E_Operator is not overloaded'#000+
   'E_Re-raise isn'#039't possible there'#000+
   'E_Re-raise isn'#039't possible there'#000+
-  'E_The exten','ded syntax of new or dispose isn'#039't allowed for a clas'+
-  's'#000+
+  'E_The extended syntax of new or dispose isn'#039't allowed for a class'#000+
   'E_Assembler incompatible with function return value'#000+
   'E_Assembler incompatible with function return value'#000+
   'E_Procedure overloading is switched off'#000+
   'E_Procedure overloading is switched off'#000+
-  'E_It is not possible to overload this operator (overload = instead)'#000+
-  'E_Comparative operator mu','st return a boolean value'#000+
+  'E','_It is not possible to overload this operator (overload = instead)'#000+
+  'E_Comparative operator must return a boolean value'#000+
   'E_Only virtual methods can be abstract'#000+
   'E_Only virtual methods can be abstract'#000+
   'F_Use of unsupported feature!'#000+
   'F_Use of unsupported feature!'#000+
   'E_The mix of CLASSES and OBJECTS isn'#039't allowed'#000+
   'E_The mix of CLASSES and OBJECTS isn'#039't allowed'#000+
-  'W_Unknown procedure directive had to be ignored: $1'#000+
-  'E_absolute can only be associated to ONE varia','ble'#000+
+  'W_Unkn','own procedure directive had to be ignored: $1'#000+
+  'E_absolute can only be associated to ONE variable'#000+
   'E_absolute can only be associated a var or const'#000+
   'E_absolute can only be associated a var or const'#000+
   'E_Abtract methods shouldn'#039't have any definition (with function bod'+
   'E_Abtract methods shouldn'#039't have any definition (with function bod'+
   'y)'#000+
   'y)'#000+
-  'E_This overloaded function can'#039't be local (must be exported)'#000+
+  'E_This overloaded function',' can'#039't be local (must be exported)'#000+
   'W_Virtual methods are used without a constructor in $1'#000+
   'W_Virtual methods are used without a constructor in $1'#000+
-  'M_','Macro defined: $1'#000+
+  'M_Macro defined: $1'#000+
   'M_Macro undefined: $1'#000+
   'M_Macro undefined: $1'#000+
   'M_Macro $1 set to $2'#000+
   'M_Macro $1 set to $2'#000+
   'I_Compiling $1'#000+
   'I_Compiling $1'#000+
   'D_Compiling $1 for the second time'#000+
   'D_Compiling $1 for the second time'#000+
-  'E_Array properties aren'#039't allowed at this point'#000+
+  'E_Array properties aren'#039't allowed at ','this point'#000+
   'E_No property found to override'#000+
   'E_No property found to override'#000+
-  'E_Only one default property is allowed, found inh','erited default prop'+
-  'erty in class $1'#000+
+  'E_Only one default property is allowed, found inherited default proper'+
+  'ty in class $1'#000+
   'E_The default property must be an array property'#000+
   'E_The default property must be an array property'#000+
-  'E_Virtual constructors are only supported in class object model'#000+
+  'E_Virtual constructors are only supported in class object model',#000+
   'E_No default property available'#000+
   'E_No default property available'#000+
-  'E_The class can'#039't have a published section, use the {$M+} s','witch'+
-  #000+
+  'E_The class can'#039't have a published section, use the {$M+} switch'#000+
   'E_Forward declaration of class $1 must be resolved here to use the cla'+
   'E_Forward declaration of class $1 must be resolved here to use the cla'+
   'ss as ancestor'#000+
   'ss as ancestor'#000+
   'E_Local operators not supported'#000+
   'E_Local operators not supported'#000+
-  'E_Procedure directive $1 not allowed in interface section'#000+
-  'E_Procedure directive $1 not allowed in implementation sect','ion'#000+
+  'E_Procedure directive $1 ','not allowed in interface section'#000+
+  'E_Procedure directive $1 not allowed in implementation section'#000+
   'E_Procedure directive $1 not allowed in procvar declaration'#000+
   'E_Procedure directive $1 not allowed in procvar declaration'#000+
   'E_Function is already declared Public/Forward $1'#000+
   'E_Function is already declared Public/Forward $1'#000+
-  'E_Can'#039't use both EXPORT and EXTERNAL'#000+
+  'E_Can'#039't use both EXPORT and EXTERNA','L'#000+
   'E_NAME keyword expected'#000+
   'E_NAME keyword expected'#000+
   'W_$1 not yet supported inside inline procedure/function'#000+
   'W_$1 not yet supported inside inline procedure/function'#000+
-  'W_Inlining',' disabled'#000+
+  'W_Inlining disabled'#000+
   'I_Writing Browser log $1'#000+
   'I_Writing Browser log $1'#000+
   'H_may be pointer dereference is missing'#000+
   'H_may be pointer dereference is missing'#000+
   'F_Selected assembler reader not supported'#000+
   'F_Selected assembler reader not supported'#000+
-  'E_Procedure directive $1 has conflicts with other directives'#000+
+  'E_Procedure directive $1 has co','nflicts with other directives'#000+
   'E_Calling convention doesn'#039't match forward'#000+
   'E_Calling convention doesn'#039't match forward'#000+
-  'E_Register calling ','(fastcall) not supported'#000+
+  'E_Register calling (fastcall) not supported'#000+
   'E_Property can'#039't have a default value'#000+
   'E_Property can'#039't have a default value'#000+
   'E_The default value of a property must be constant'#000+
   'E_The default value of a property must be constant'#000+
-  'E_Symbol can'#039't be published, can be only a class'#000+
+  'E_Symbol can'#039't be published, can b','e only a class'#000+
   'E_That kind of property can'#039't be published'#000+
   'E_That kind of property can'#039't be published'#000+
   'W_Empty import name specified'#000+
   'W_Empty import name specified'#000+
-  'W_Em','pty import name specified'#000+
+  'W_Empty import name specified'#000+
   'E_Function internal name changed after use of function'#000+
   'E_Function internal name changed after use of function'#000+
   'E_Division by zero'#000+
   'E_Division by zero'#000+
   'E_Invalid floating point operation'#000+
   'E_Invalid floating point operation'#000+
-  'E_Upper bound of range is less than lower bound'#000+
+  'E_Upper bound',' of range is less than lower bound'#000+
   'E_string length is larger than array of char length'#000+
   'E_string length is larger than array of char length'#000+
-  'E_Typ','e mismatch'#000+
+  'E_Type mismatch'#000+
   'E_Integer expression expected'#000+
   'E_Integer expression expected'#000+
   'E_Ordinal expression expected'#000+
   'E_Ordinal expression expected'#000+
   'E_Type identifier expected'#000+
   'E_Type identifier expected'#000+
   'E_Variable identifier expected'#000+
   'E_Variable identifier expected'#000+
-  'E_pointer type expected'#000+
+  'E_pointer type expe','cted'#000+
   'E_class type expected'#000+
   'E_class type expected'#000+
   'E_Variable or type indentifier expected'#000+
   'E_Variable or type indentifier expected'#000+
-  'E_Can'#039't evaluate constant',' expression'#000+
+  'E_Can'#039't evaluate constant expression'#000+
   'E_Set elements are not compatible'#000+
   'E_Set elements are not compatible'#000+
   'E_Operation not implemented for sets'#000+
   'E_Operation not implemented for sets'#000+
-  'W_Automatic type conversion from floating type to COMP which is an int'+
-  'eger type'#000+
+  'W_Automatic type conversion from floating type to COMP which is a','n i'+
+  'nteger type'#000+
   'W_Using / will give a floating point result'#000+
   'W_Using / will give a floating point result'#000+
-  'H_use DIV instead to get an integ','er result'#000+
+  'H_use DIV instead to get an integer result'#000+
   'E_string types doesn'#039't match, because of $V+ mode'#000+
   'E_string types doesn'#039't match, because of $V+ mode'#000+
   'E_succ or pred on enums with assignments not possible'#000+
   'E_succ or pred on enums with assignments not possible'#000+
-  'E_Can'#039't read or write variables of this type'#000+
+  'E_Can'#039't read or write variables of',' this type'#000+
   'E_Type conflict between set elements'#000+
   'E_Type conflict between set elements'#000+
-  'W_lo/hi(longint/dword) returns the upper/low','er word'#000+
+  'W_lo/hi(longint/dword) returns the upper/lower word'#000+
   'E_Integer or real expression expected'#000+
   'E_Integer or real expression expected'#000+
   'E_Identifier not found $1'#000+
   'E_Identifier not found $1'#000+
   'F_Internal Error in SymTableStack()'#000+
   'F_Internal Error in SymTableStack()'#000+
   'E_Duplicate identifier $1'#000+
   'E_Duplicate identifier $1'#000+
-  'E_Unknown identifier $1'#000+
+  'E_Unknown iden','tifier $1'#000+
   'E_Forward declaration not solved $1'#000+
   'E_Forward declaration not solved $1'#000+
   'F_Identifier type already defined as type'#000+
   'F_Identifier type already defined as type'#000+
-  'E_Er','ror in type definition'#000+
+  'E_Error in type definition'#000+
   'E_Type identifier not defined'#000+
   'E_Type identifier not defined'#000+
   'E_Forward type not resolved $1'#000+
   'E_Forward type not resolved $1'#000+
-  'E_Only static variables can be used in static methods or outside metho'+
-  'ds'#000+
+  'E_Only static variables can be used in static methods or outside',' met'+
+  'hods'#000+
   'E_Invalid call to tvarsym.mangledname()'#000+
   'E_Invalid call to tvarsym.mangledname()'#000+
   'F_record or class type expected'#000+
   'F_record or class type expected'#000+
-  'E_Instances',' of classes or objects with an abtsract method are not al'+
-  'lowed'#000+
+  'E_Instances of classes or objects with an abtsract method are not allo'+
+  'wed'#000+
   'W_Label not defined $1'#000+
   'W_Label not defined $1'#000+
   'E_Illegal label declaration'#000+
   'E_Illegal label declaration'#000+
-  'E_GOTO und LABEL are not supported (use command line switch -Sg)'#000+
+  'E_GOTO und LABEL are not supported',' (use command line switch -Sg)'#000+
   'E_Label not found'#000+
   'E_Label not found'#000+
   'E_identifier isn'#039't a label'#000+
   'E_identifier isn'#039't a label'#000+
-  'E_label already ','defined'#000+
+  'E_label already defined'#000+
   'E_illegal type declaration of set elements'#000+
   'E_illegal type declaration of set elements'#000+
   'E_Forward class definition not resolved $1'#000+
   'E_Forward class definition not resolved $1'#000+
   'H_Parameter not used $1'#000+
   'H_Parameter not used $1'#000+
   'N_Local variable not used $1'#000+
   'N_Local variable not used $1'#000+
-  'E_Set type expected'#000+
+  'E','_Set type expected'#000+
   'W_Function result does not seem to be set'#000+
   'W_Function result does not seem to be set'#000+
-  'E_Unknown record field identifi','er $1'#000+
+  'E_Unknown record field identifier $1'#000+
   'W_Local variable $1 does not seem to be initialized'#000+
   'W_Local variable $1 does not seem to be initialized'#000+
   'E_identifier idents no member $1'#000+
   'E_identifier idents no member $1'#000+
   'B_Found declaration: $1'#000+
   'B_Found declaration: $1'#000+
   'E_BREAK not allowed'#000+
   'E_BREAK not allowed'#000+
-  'E_CONTINUE not allowed'#000+
+  'E_CONTINUE no','t allowed'#000+
   'E_Expression too complicated - FPU stack overflow'#000+
   'E_Expression too complicated - FPU stack overflow'#000+
   'E_Illegal expression'#000+
   'E_Illegal expression'#000+
-  'E_Invalid i','nteger'#000+
+  'E_Invalid integer'#000+
   'E_Illegal qualifier'#000+
   'E_Illegal qualifier'#000+
   'E_High range limit < low range limit'#000+
   'E_High range limit < low range limit'#000+
   'E_Illegal counter variable'#000+
   'E_Illegal counter variable'#000+
   'E_Can'#039't determine which overloaded function to call'#000+
   'E_Can'#039't determine which overloaded function to call'#000+
-  'E_Parameter list size exceeds 65535 bytes'#000+
+  'E_Par','ameter list size exceeds 65535 bytes'#000+
   'E_Illegal type conversion'#000+
   'E_Illegal type conversion'#000+
-  'E_File types must be var para','meters'#000+
+  'E_File types must be var parameters'#000+
   'E_The use of a far pointer isn'#039't allowed there'#000+
   'E_The use of a far pointer isn'#039't allowed there'#000+
   'E_illegal call by reference parameters'#000+
   'E_illegal call by reference parameters'#000+
   'E_EXPORT declared functions can'#039't be called'#000+
   'E_EXPORT declared functions can'#039't be called'#000+
-  'W_Possible illegal call of constructor or destructor (doesn'#039't matc'+
-  'h to this context)'#000+
-  'N_Inefficient code',#000+
+  'W_Possible ','illegal call of constructor or destructor (doesn'#039't ma'+
+  'tch to this context)'#000+
+  'N_Inefficient code'#000+
   'W_unreachable code'#000+
   'W_unreachable code'#000+
   'E_procedure call with stackframe ESP/SP'#000+
   'E_procedure call with stackframe ESP/SP'#000+
   'E_Abstract methods can'#039't be called directly'#000+
   'E_Abstract methods can'#039't be called directly'#000+
-  'F_Internal Error in getfloatreg(), allocation failure'#000+
+  'F_Internal Error in getfloatreg(), allocatio','n failure'#000+
   'F_Unknown float type'#000+
   'F_Unknown float type'#000+
   'F_SecondVecn() base defined twice'#000+
   'F_SecondVecn() base defined twice'#000+
-  'F_Extended cg68k not suppor','ted'#000+
+  'F_Extended cg68k not supported'#000+
   'F_32-bit unsigned not supported in MC68000 mode'#000+
   'F_32-bit unsigned not supported in MC68000 mode'#000+
   'F_Internal Error in secondinline()'#000+
   'F_Internal Error in secondinline()'#000+
   'D_Register $1 weight $2 $3'#000+
   'D_Register $1 weight $2 $3'#000+
-  'E_Stack limit excedeed in local routine'#000+
+  'E_Stack limit excedeed in local ro','utine'#000+
   'D_Stack frame is omited'#000+
   'D_Stack frame is omited'#000+
   'E_Unable to inline object methods'#000+
   'E_Unable to inline object methods'#000+
-  'E_Unable to inline procvar c','alls'#000+
+  'E_Unable to inline procvar calls'#000+
   'E_No code for inline procedure stored'#000+
   'E_No code for inline procedure stored'#000+
   'E_Element zero of an ansi/wide- or longstring can'#039't be accessed, u'+
   'E_Element zero of an ansi/wide- or longstring can'#039't be accessed, u'+
   'se (set)length instead'#000+
   'se (set)length instead'#000+
-  'E_Include or exclude not implemented in this case'#000+
-  'Constructors or destructors can not be called inside with ','here'#000+
+  'E_Include or exc','lude not implemented in this case'#000+
+  'Constructors or destructors can not be called inside with here'#000+
   'F_Divide by zero in asm evaluator'#000+
   'F_Divide by zero in asm evaluator'#000+
   'F_Evaluator stack overflow'#000+
   'F_Evaluator stack overflow'#000+
   'F_Evaluator stack underflow'#000+
   'F_Evaluator stack underflow'#000+
   'F_Invalid numeric format in asm evaluator'#000+
   'F_Invalid numeric format in asm evaluator'#000+
-  'F_Invalid Operator in asm evaluator'#000+
+  'F_Invalid Op','erator in asm evaluator'#000+
   'F_Unknown error in asm evaluator'#000+
   'F_Unknown error in asm evaluator'#000+
   'W_Invalid numeric value'#000+
   'W_Invalid numeric value'#000+
-  'E_escape se','quence ignored: $1'#000+
+  'E_escape sequence ignored: $1'#000+
   'E_Asm syntax error - Prefix not found'#000+
   'E_Asm syntax error - Prefix not found'#000+
   'E_Asm syntax error - Trying to add more than one prefix'#000+
   'E_Asm syntax error - Trying to add more than one prefix'#000+
-  'E_Asm syntax error - Opcode not found'#000+
+  'E_Asm syntax error - Opcode not fou','nd'#000+
   'E_Invalid symbol reference'#000+
   'E_Invalid symbol reference'#000+
   'W_Calling an overload function in an asm'#000+
   'W_Calling an overload function in an asm'#000+
-  'E_Constant value out ','of bounds'#000+
+  'E_Constant value out of bounds'#000+
   'E_Non-label pattern contains @'#000+
   'E_Non-label pattern contains @'#000+
   'E_Invalid Operand: $1'#000+
   'E_Invalid Operand: $1'#000+
   'W_Override operator not supported'#000+
   'W_Override operator not supported'#000+
   'E_Error in binary constant: $1'#000+
   'E_Error in binary constant: $1'#000+
-  'E_Error in octal constant: $1'#000+
+  'E_Error in octal con','stant: $1'#000+
   'E_Error in hexadecimal constant: $1'#000+
   'E_Error in hexadecimal constant: $1'#000+
   'E_Error in integer constant: $1'#000+
   'E_Error in integer constant: $1'#000+
-  'E_Invalid labe','led opcode'#000+
+  'E_Invalid labeled opcode'#000+
   'F_Internal error in Findtype()'#000+
   'F_Internal error in Findtype()'#000+
   'E_Invalid size for MOVSX/MOVZX'#000+
   'E_Invalid size for MOVSX/MOVZX'#000+
   'E_16-bit base in 32-bit segment'#000+
   'E_16-bit base in 32-bit segment'#000+
   'E_16-bit index in 32-bit segment'#000+
   'E_16-bit index in 32-bit segment'#000+
-  'E_Invalid Opcode'#000+
+  'E_Invalid ','Opcode'#000+
   'E_Constant reference not allowed'#000+
   'E_Constant reference not allowed'#000+
   'W_Fwait can cause emulation problems with emu387'#000+
   'W_Fwait can cause emulation problems with emu387'#000+
-  'E_I','nvalid combination of opcode and operands'#000+
+  'E_Invalid combination of opcode and operands'#000+
   'W_Opcode $1 not in table, operands not checked'#000+
   'W_Opcode $1 not in table, operands not checked'#000+
   'F_Internal Error in ConcatOpcode()'#000+
   'F_Internal Error in ConcatOpcode()'#000+
-  'E_Invalid size in reference'#000+
+  'E_Invalid size in refere','nce'#000+
   'E_Invalid middle sized operand'#000+
   'E_Invalid middle sized operand'#000+
   'E_Invalid three operand opcode'#000+
   'E_Invalid three operand opcode'#000+
   'E_Assembler syntax error'#000+
   'E_Assembler syntax error'#000+
-  'E','_Invalid operand type'#000+
+  'E_Invalid operand type'#000+
   'E_Segment overrides not supported'#000+
   'E_Segment overrides not supported'#000+
   'E_Invalid constant symbol $1'#000+
   'E_Invalid constant symbol $1'#000+
   'F_Internal Errror converting binary'#000+
   'F_Internal Errror converting binary'#000+
-  'F_Internal Errror converting hexadecimal'#000+
+  'F_Internal Errror convertin','g hexadecimal'#000+
   'F_Internal Errror converting octal'#000+
   'F_Internal Errror converting octal'#000+
   'E_Invalid constant expression'#000+
   'E_Invalid constant expression'#000+
-  'E_Unknown ide','ntifier: $1'#000+
+  'E_Unknown identifier: $1'#000+
   'E_Trying to define an index register more than once'#000+
   'E_Trying to define an index register more than once'#000+
   'E_Invalid field specifier'#000+
   'E_Invalid field specifier'#000+
   'F_Internal Error in BuildScaling()'#000+
   'F_Internal Error in BuildScaling()'#000+
-  'E_Invalid scaling factor'#000+
+  'E_Invalid scaling facto','r'#000+
   'E_Invalid scaling value'#000+
   'E_Invalid scaling value'#000+
   'E_Scaling value only allowed with index'#000+
   'E_Scaling value only allowed with index'#000+
-  'E_Invalid assembler syntax','. No ref with brackets)'#000+
+  'E_Invalid assembler syntax. No ref with brackets)'#000+
   'E_Expressions of the form [sreg:reg...] are currently not supported'#000+
   'E_Expressions of the form [sreg:reg...] are currently not supported'#000+
   'E_Trying to define a segment register twice'#000+
   'E_Trying to define a segment register twice'#000+
-  'E_Trying to define a base register twice'#000+
+  'E_Trying to ','define a base register twice'#000+
   'E_Trying to use a negative index register'#000+
   'E_Trying to use a negative index register'#000+
-  'E_Asm syntax error - ','error in reference'#000+
+  'E_Asm syntax error - error in reference'#000+
   'E_Local symbols not allowed as references'#000+
   'E_Local symbols not allowed as references'#000+
   'E_Invalid operand in bracket expression'#000+
   'E_Invalid operand in bracket expression'#000+
   'E_Invalid symbol name: $1'#000+
   'E_Invalid symbol name: $1'#000+
-  'E_Invalid Reference syntax'#000+
+  'E_Invalid Reference s','yntax'#000+
   'E_Invalid string as opcode operand: $1'#000+
   'E_Invalid string as opcode operand: $1'#000+
   'W_@CODE and @DATA not supported'#000+
   'W_@CODE and @DATA not supported'#000+
-  'E_Null label re','ferences are not allowed'#000+
+  'E_Null label references are not allowed'#000+
   'W_Calling of an overloaded function in direct assembler'#000+
   'W_Calling of an overloaded function in direct assembler'#000+
   'E_Cannot use SELF outside a method'#000+
   'E_Cannot use SELF outside a method'#000+
-  'E_Asm syntax error - Should start with bracket'#000+
+  'E_Asm syntax error - Should star','t with bracket'#000+
   'E_Asm syntax error - register: $1'#000+
   'E_Asm syntax error - register: $1'#000+
   'E_SEG and OFFSET not supported'#000+
   'E_SEG and OFFSET not supported'#000+
-  'E_Asm syntax',' error - in opcode operand'#000+
+  'E_Asm syntax error - in opcode operand'#000+
   'E_Invalid String expression'#000+
   'E_Invalid String expression'#000+
   'E_Constant expression out of bounds'#000+
   'E_Constant expression out of bounds'#000+
   'F_Internal Error in BuildConstant()'#000+
   'F_Internal Error in BuildConstant()'#000+
-  'W_A repeat prefix and a segment override on <= i386 may result in erro'+
-  'rs if an interrupt occurs'#000+
-  'E_Invalid or miss','ing opcode'#000+
+  'W_A repeat prefix and',' a segment override on <= i386 may result in er'+
+  'rors if an interrupt occurs'#000+
+  'E_Invalid or missing opcode'#000+
   'E_Invalid combination of prefix and opcode: $1'#000+
   'E_Invalid combination of prefix and opcode: $1'#000+
   'E_Invalid combination of override and opcode: $1'#000+
   'E_Invalid combination of override and opcode: $1'#000+
   'E_Too many operands on line'#000+
   'E_Too many operands on line'#000+
-  'E_Duplicate local symbol: $1'#000+
+  'E_Duplicate l','ocal symbol: $1'#000+
   'E_Unknown label identifer: $1'#000+
   'E_Unknown label identifer: $1'#000+
   'E_Assemble node syntax error'#000+
   'E_Assemble node syntax error'#000+
-  'E_Undefined local',' symbol: $1'#000+
+  'E_Undefined local symbol: $1'#000+
   'D_Starting intel styled assembler parsing...'#000+
   'D_Starting intel styled assembler parsing...'#000+
   'D_Finished intel styled assembler parsing...'#000+
   'D_Finished intel styled assembler parsing...'#000+
   'E_Not a directive or local symbol: $1'#000+
   'E_Not a directive or local symbol: $1'#000+
-  'E_/ at beginning of line not allowed'#000+
+  'E_/ at b','eginning of line not allowed'#000+
   'E_NOR not supported'#000+
   'E_NOR not supported'#000+
   'E_Invalid floating point register name'#000+
   'E_Invalid floating point register name'#000+
-  'W_Mo','dulo not supported'#000+
+  'W_Modulo not supported'#000+
   'E_Invalid floating point constant: $1'#000+
   'E_Invalid floating point constant: $1'#000+
   'E_Size suffix and destination register do not match'#000+
   'E_Size suffix and destination register do not match'#000+
-  'E_Size suffix and destination or source size do not match'#000+
+  'E_Size suffix and destination or source',' size do not match'#000+
   'W_Size suffix and destination or source size do not match'#000+
   'W_Size suffix and destination or source size do not match'#000+
-  'E_Internal erro','r in ConcatLabeledInstr()'#000+
+  'E_Internal error in ConcatLabeledInstr()'#000+
   'W_Floating point binary representation ignored'#000+
   'W_Floating point binary representation ignored'#000+
   'W_Floating point hexadecimal representation ignored'#000+
   'W_Floating point hexadecimal representation ignored'#000+
-  'W_Floating point octal representation ignored'#000+
+  'W_Floating point octal ','representation ignored'#000+
   'E_Invalid real constant expression'#000+
   'E_Invalid real constant expression'#000+
   'E_Parenthesis are not allowed'#000+
   'E_Parenthesis are not allowed'#000+
-  'E_In','valid Reference'#000+
+  'E_Invalid Reference'#000+
   'E_Cannot use __SELF outside a method'#000+
   'E_Cannot use __SELF outside a method'#000+
   'E_Cannot use __OLDEBP outside a nested procedure'#000+
   'E_Cannot use __OLDEBP outside a nested procedure'#000+
   'W_Identifier $1 supposed external'#000+
   'W_Identifier $1 supposed external'#000+
-  'E_Invalid segment override expression'#000+
+  'E_Invalid se','gment override expression'#000+
   'E_Strings not allowed as constants'#000+
   'E_Strings not allowed as constants'#000+
-  'D_Starting AT&T styled assemble','r parsing...'#000+
+  'D_Starting AT&T styled assembler parsing...'#000+
   'D_Finished AT&T styled assembler parsing...'#000+
   'D_Finished AT&T styled assembler parsing...'#000+
   'E_Switching sections is not allowed in an assembler block'#000+
   'E_Switching sections is not allowed in an assembler block'#000+
   'E_Invalid global definition'#000+
   'E_Invalid global definition'#000+
-  'E_Line separator expected'#000+
+  'E_Lin','e separator expected'#000+
   'W_globl not supported'#000+
   'W_globl not supported'#000+
   'W_align not supported'#000+
   'W_align not supported'#000+
   'W_lcomm not supported'#000+
   'W_lcomm not supported'#000+
-  'W_com','m not supported'#000+
+  'W_comm not supported'#000+
   'E_Invalid local common definition'#000+
   'E_Invalid local common definition'#000+
   'E_Invalid global common definition'#000+
   'E_Invalid global common definition'#000+
   'E_local symbol: $1 not found inside asm statement'#000+
   'E_local symbol: $1 not found inside asm statement'#000+
-  'E_assembler code not returned to text'#000+
+  'E_assembler c','ode not returned to text'#000+
   'F_internal error in BuildReference()'#000+
   'F_internal error in BuildReference()'#000+
   'E_invalid opcode size'#000+
   'E_invalid opcode size'#000+
-  'W_NEAR i','gnored'#000+
+  'W_NEAR ignored'#000+
   'W_FAR ignored'#000+
   'W_FAR ignored'#000+
   'D_Creating inline asm lookup tables'#000+
   'D_Creating inline asm lookup tables'#000+
   'E_Using a defined name as a local label'#000+
   'E_Using a defined name as a local label'#000+
   'F_internal error in HandleExtend()'#000+
   'F_internal error in HandleExtend()'#000+
-  'E_Invalid character: <'#000+
+  'E_Invalid charac','ter: <'#000+
   'E_Invalid character: >'#000+
   'E_Invalid character: >'#000+
   'E_Unsupported opcode'#000+
   'E_Unsupported opcode'#000+
-  'E_Increment and Decrement mode not allowe','d together'#000+
+  'E_Increment and Decrement mode not allowed together'#000+
   'E_Invalid Register list in movem/fmovem'#000+
   'E_Invalid Register list in movem/fmovem'#000+
   'E_Invalid Register list for opcode'#000+
   'E_Invalid Register list for opcode'#000+
   'E_68020+ mode required to assemble'#000+
   'E_68020+ mode required to assemble'#000+
-  'D_Starting Motorola styled assembler parsing...'#000+
+  'D_Starting Motorola styled ','assembler parsing...'#000+
   'D_Finished Motorola styled assembler parsing...'#000+
   'D_Finished Motorola styled assembler parsing...'#000+
   'W_XDEF not supported'#000+
   'W_XDEF not supported'#000+
-  'W_','Functions with void return value can'#039't return any value in asm'+
-  ' code'#000+
+  'W_Functions with void return value can'#039't return any value in asm c'+
+  'ode'#000+
   'E_Invalid suffix for intel assembler'#000+
   'E_Invalid suffix for intel assembler'#000+
   'E_Extended not supported in this mode'#000+
   'E_Extended not supported in this mode'#000+
-  'E_Comp not supported in this mode'#000+
+  'E_Com','p not supported in this mode'#000+
   'W_You need GNU as version >= 2.81 to compile this MMX code'#000+
   'W_You need GNU as version >= 2.81 to compile this MMX code'#000+
-  'F_To','o many assembler files'#000+
+  'F_Too many assembler files'#000+
   'F_Selected assembler output not supported'#000+
   'F_Selected assembler output not supported'#000+
   'E_Unsupported symbol type for operand'#000+
   'E_Unsupported symbol type for operand'#000+
-  'E_Cannot index a local var or parameter with a register'#000+
+  'E_Cannot index a local var or parameter with ','a register'#000+
   'W_Source operating system redefined'#000+
   'W_Source operating system redefined'#000+
   'I_Assembling (pipe) $1'#000+
   'I_Assembling (pipe) $1'#000+
-  'E_Can'#039't create assembe','r file $1'#000+
+  'E_Can'#039't create assember file $1'#000+
   'W_Assembler $1 not found, switching to external assembling'#000+
   'W_Assembler $1 not found, switching to external assembling'#000+
   'T_Using assembler: $1'#000+
   'T_Using assembler: $1'#000+
   'W_Error while assembling exitcode $1'#000+
   'W_Error while assembling exitcode $1'#000+
-  'W_Can'#039't call the assembler, error $1 switching to external assembl'+
-  'ing'#000+
+  'W_Can'#039't call the ass','embler, error $1 switching to external assem'+
+  'bling'#000+
   'I_Assembling $1'#000+
   'I_Assembling $1'#000+
-  'W_Linker $1 not found, swi','tching to external linking'#000+
+  'W_Linker $1 not found, switching to external linking'#000+
   'T_Using linker: $1'#000+
   'T_Using linker: $1'#000+
   'W_Object $1 not found, Linking may fail !'#000+
   'W_Object $1 not found, Linking may fail !'#000+
   'W_Library $1 not found, Linking may fail !'#000+
   'W_Library $1 not found, Linking may fail !'#000+
-  'W_Error while linking'#000+
+  'W_Error while lin','king'#000+
   'W_Can'#039't call the linker, switching to external linking'#000+
   'W_Can'#039't call the linker, switching to external linking'#000+
   'I_Linking $1'#000+
   'I_Linking $1'#000+
-  'W_binder not found,',' switching to external binding'#000+
+  'W_binder not found, switching to external binding'#000+
   'W_ar not found, switching to external ar'#000+
   'W_ar not found, switching to external ar'#000+
   'E_Dynamic Libraries not supported'#000+
   'E_Dynamic Libraries not supported'#000+
   'I_Closing script $1'#000+
   'I_Closing script $1'#000+
-  'W_resource compiler not found, switching to external mode'#000+
+  'W_resource compiler no','t found, switching to external mode'#000+
   'I_Compiling resource $1'#000+
   'I_Compiling resource $1'#000+
-  'F_Can'#039't post process executable ','$1'#000+
+  'F_Can'#039't post process executable $1'#000+
   'F_Can'#039't open executable $1'#000+
   'F_Can'#039't open executable $1'#000+
   'X_Size of Code: $1 bytes'#000+
   'X_Size of Code: $1 bytes'#000+
   'X_Size of initialized data: $1 bytes'#000+
   'X_Size of initialized data: $1 bytes'#000+
   'X_Size of uninitialized data: $1 bytes'#000+
   'X_Size of uninitialized data: $1 bytes'#000+
-  'X_Stack space reserved: $1 bytes'#000+
+  'X_Stack space res','erved: $1 bytes'#000+
   'X_Stack space commited: $1 bytes'#000+
   'X_Stack space commited: $1 bytes'#000+
   'T_Unitsearch: $1'#000+
   'T_Unitsearch: $1'#000+
   'T_PPU Loading $1'#000+
   'T_PPU Loading $1'#000+
-  'U_PPU Nam','e: $1'#000+
+  'U_PPU Name: $1'#000+
   'U_PPU Flags: $1'#000+
   'U_PPU Flags: $1'#000+
   'U_PPU Crc: $1'#000+
   'U_PPU Crc: $1'#000+
   'U_PPU Time: $1'#000+
   'U_PPU Time: $1'#000+
   'U_PPU File too short'#000+
   'U_PPU File too short'#000+
   'U_PPU Invalid Header (no PPU at the begin)'#000+
   'U_PPU Invalid Header (no PPU at the begin)'#000+
   'U_PPU Invalid Version $1'#000+
   'U_PPU Invalid Version $1'#000+
-  'U_PPU is compiled for an other processor'#000+
+  'U_PPU is',' compiled for an other processor'#000+
   'U_PPU is compiled for an other target'#000+
   'U_PPU is compiled for an other target'#000+
   'U_PPU Source: $1'#000+
   'U_PPU Source: $1'#000+
-  'U_Wr','iting $1'#000+
+  'U_Writing $1'#000+
   'F_Can'#039't Write PPU-File'#000+
   'F_Can'#039't Write PPU-File'#000+
   'F_reading PPU-File'#000+
   'F_reading PPU-File'#000+
   'F_unexpected end of PPU-File'#000+
   'F_unexpected end of PPU-File'#000+
   'F_Invalid PPU-File entry: $1'#000+
   'F_Invalid PPU-File entry: $1'#000+
   'F_PPU Dbx count problem'#000+
   'F_PPU Dbx count problem'#000+
-  'E_Illegal unit name: $1'#000+
+  'E_Illegal unit ','name: $1'#000+
   'F_Too much units'#000+
   'F_Too much units'#000+
   'F_Circular unit reference between $1 and $2'#000+
   'F_Circular unit reference between $1 and $2'#000+
-  'F_Can'#039't compile unit $','1, no sources available'#000+
+  'F_Can'#039't compile unit $1, no sources available'#000+
   'W_Compiling the system unit requires the -Us switch'#000+
   'W_Compiling the system unit requires the -Us switch'#000+
   'F_There were $1 errors compiling module, stopping'#000+
   'F_There were $1 errors compiling module, stopping'#000+
-  'U_Load from $1 ($2) unit $3'#000+
+  'U_Load from $1 ($2) un','it $3'#000+
   'U_Recompiling $1, checksum changed for $2'#000+
   'U_Recompiling $1, checksum changed for $2'#000+
-  'U_Recompiling unit, static lib is older than',' ppufile'#000+
+  'U_Recompiling unit, static lib is older than ppufile'#000+
   'U_Recompiling unit, shared lib is older than ppufile'#000+
   'U_Recompiling unit, shared lib is older than ppufile'#000+
   'U_Recompiling unit, obj and asm are older than ppufile'#000+
   'U_Recompiling unit, obj and asm are older than ppufile'#000+
-  'U_Recompiling unit, obj is older than asm'#000+
+  'U_Recompiling unit, obj is olde','r than asm'#000+
   'U_Parsing interface of $1'#000+
   'U_Parsing interface of $1'#000+
   'U_Parsing implementation of $1'#000+
   'U_Parsing implementation of $1'#000+
-  'U_Second load for unit $','1'#000+
+  'U_Second load for unit $1'#000+
   'U_PPU Check file $1 time $2'#000+
   'U_PPU Check file $1 time $2'#000+
   '$1 [options] <inputfile> [options]'#000+
   '$1 [options] <inputfile> [options]'#000+
   'W_Only one source file supported'#000+
   'W_Only one source file supported'#000+
   'W_DEF file can be created only for OS/2'#000+
   'W_DEF file can be created only for OS/2'#000+
-  'E_nested response files are not supported'#000+
+  'E_nested r','esponse files are not supported'#000+
   'F_No source file name in command line'#000+
   'F_No source file name in command line'#000+
-  'E_Illegal parameter: $','1'#000+
+  'E_Illegal parameter: $1'#000+
   'H_-? writes help pages'#000+
   'H_-? writes help pages'#000+
   'F_Too many config files nested'#000+
   'F_Too many config files nested'#000+
   'F_Unable to open file $1'#000+
   'F_Unable to open file $1'#000+
   'N_Reading further options from $1'#000+
   'N_Reading further options from $1'#000+
   'W_Target is already set to: $1'#000+
   'W_Target is already set to: $1'#000+
-  'W_Shared libs not supported on DOS platform, reverting to static'#000+
+  'W_','Shared libs not supported on DOS platform, reverting to static'#000+
   'F_too many IF(N)DEFs'#000+
   'F_too many IF(N)DEFs'#000+
-  'F_too ma','ny ENDIFs'#000+
+  'F_too many ENDIFs'#000+
   'F_open conditional at the end of the file'#000+
   'F_open conditional at the end of the file'#000+
   'W_Debug information generation is not supported by this executable'#000+
   'W_Debug information generation is not supported by this executable'#000+
-  'H_Try recompiling with -dGDB'#000+
+  'H_Try recompiling with -dGDB'#000,+
   'W_You are using the obsolete switch $1'#000+
   'W_You are using the obsolete switch $1'#000+
-  'Free Pascal Compiler version $FPCVER [$FPCDATE] for $','FPCTARGET'#000+
+  'Free Pascal Compiler version $FPCVER [$FPCDATE] for $FPCTARGET'#000+
   'Copyright (c) 1993-98 by Florian Klaempfl'#000+
   'Copyright (c) 1993-98 by Florian Klaempfl'#000+
   'Free Pascal Compiler version $FPCVER'#000+
   'Free Pascal Compiler version $FPCVER'#000+
   #000+
   #000+
   'Compiler Date  : $FPCDATE'#000+
   'Compiler Date  : $FPCDATE'#000+
   'Compiler Target: $FPCTARGET'#000+
   'Compiler Target: $FPCTARGET'#000+
   #000+
   #000+
-  'This program comes under the GNU General Public Licence'#000+
+  'Thi','s program comes under the GNU General Public Licence'#000+
   'For more information read COPYING.FPC'#000+
   'For more information read COPYING.FPC'#000+
-  #000,+
+  #000+
   'Report bugs,suggestions etc to:'#000+
   'Report bugs,suggestions etc to:'#000+
   '                 [email protected]'#000+
   '                 [email protected]'#000+
-  '**0*_put + after a boolean switch option to enable it, - to disable it'+
-  #000+
+  '**0*_put + after a boolean switch option to enable it, - to disab','le '+
+  'it'#000+
   '**1a_the compiler doesn'#039't delete the generated assembler file'#000+
   '**1a_the compiler doesn'#039't delete the generated assembler file'#000+
-  '**2al_list sourcecode li','nes in assembler file'#000+
-  '*t1b_use EMS'#000+
+  '**2al_list sourcecode lines in assembler file'#000+
+  '**1b_generate browser info'#000+
+  '**2bl_generate local symbol info'#000+
   '**1B_build all modules'#000+
   '**1B_build all modules'#000+
   '**1C_code generation options'#000+
   '**1C_code generation options'#000+
-  '3*2CD_create dynamic library'#000+
+  '3*2CD_create d','ynamic library'#000+
   '**2Ch<n>_<n> bytes heap (between 1023 and 67107840)'#000+
   '**2Ch<n>_<n> bytes heap (between 1023 and 67107840)'#000+
   '**2Ci_IO-checking'#000+
   '**2Ci_IO-checking'#000+
   '**2Cn_omit linking stage'#000+
   '**2Cn_omit linking stage'#000+
-  '**2Co_check overflow of integ','er operations'#000+
+  '**2Co_check overflow of integer operations'#000+
   '**2Cr_range checking'#000+
   '**2Cr_range checking'#000+
   '**2Cs<n>_set stack size to <n>'#000+
   '**2Cs<n>_set stack size to <n>'#000+
   '**2Ct_stack checking'#000+
   '**2Ct_stack checking'#000+
-  '3*2CS_create static library'#000+
+  '3*2CS_create s','tatic library'#000+
   '3*2Cx_use smartlinking'#000+
   '3*2Cx_use smartlinking'#000+
   '**1d<x>_defines the symbol <x>'#000+
   '**1d<x>_defines the symbol <x>'#000+
   '*O1D_generate a DEF file'#000+
   '*O1D_generate a DEF file'#000+
   '*O2Dd<x>_set description to <x>'#000+
   '*O2Dd<x>_set description to <x>'#000+
-  '*O2Dw_PM appli','cation'#000+
+  '*O2Dw_PM application'#000+
   '**1e<x>_set path to executable'#000+
   '**1e<x>_set path to executable'#000+
   '**1E_same as -Cn'#000+
   '**1E_same as -Cn'#000+
   '**1F_set file names and paths'#000+
   '**1F_set file names and paths'#000+
-  '**2FD<x>_sets the directory where to search for compiler utilities'#000+
+  '**2FD<x>_sets th','e directory where to search for compiler utilities'#000+
   '**2Fe<x>_redirect error output to <x>'#000+
   '**2Fe<x>_redirect error output to <x>'#000+
   '**2FE<x>_set exe/unit output path to <x>'#000+
   '**2FE<x>_set exe/unit output path to <x>'#000+
-  '*L2Fg<x>_','same as -Fl'#000+
+  '*L2Fg<x>_same as -Fl'#000+
   '**2Fi<x>_adds <x> to include path'#000+
   '**2Fi<x>_adds <x> to include path'#000+
   '**2Fl<x>_adds <x> to library path'#000+
   '**2Fl<x>_adds <x> to library path'#000+
-  '*L2FL<x>_uses <x> as dynamic linker'#000+
+  '*L2FL<x>_uses <x> as ','dynamic linker'#000+
   '**2Fo<x>_adds <x> to object path'#000+
   '**2Fo<x>_adds <x> to object path'#000+
   '**2Fr<x>_load error message file <x>'#000+
   '**2Fr<x>_load error message file <x>'#000+
   '**2Fu<x>_adds <x> to unit path'#000+
   '**2Fu<x>_adds <x> to unit path'#000+
-  '**2FU<x>_set unit outpu','t path to <x>, overrides -FE'#000+
+  '**2FU<x>_set unit output path to <x>, overrides -FE'#000+
   '*g1g_generate debugger information'#000+
   '*g1g_generate debugger information'#000+
   '*g2gg_use gsym'#000+
   '*g2gg_use gsym'#000+
   '*g2gd_use dbx'#000+
   '*g2gd_use dbx'#000+
-  '*g2gh_use heap trace unit'#000+
+  '*g2gh_us','e heap trace unit'#000+
   '**1i_information'#000+
   '**1i_information'#000+
   '**2iD_return compiler date'#000+
   '**2iD_return compiler date'#000+
   '**2iV_return compiler version'#000+
   '**2iV_return compiler version'#000+
   '**2iSO_return source OS'#000+
   '**2iSO_return source OS'#000+
-  '**2iSP_return source pr','ocessor'#000+
+  '**2iSP_return source processor'#000+
   '**2iTO_return target OS'#000+
   '**2iTO_return target OS'#000+
   '**2iTP_return target processor'#000+
   '**2iTP_return target processor'#000+
   '**1I<x>_adds <x> to include path'#000+
   '**1I<x>_adds <x> to include path'#000+
-  '**1k<x>_Pass <x> to the linker'#000+
+  '**1k<','x>_Pass <x> to the linker'#000+
   '**1l_write logo'#000+
   '**1l_write logo'#000+
   '**1n_don'#039't read the default config file'#000+
   '**1n_don'#039't read the default config file'#000+
-  '**1o<x>_change the name of the executable produced to <x>',#000+
+  '**1o<x>_change the name of the executable produced to <x>'#000+
   '**1pg_generate profile code for gprof'#000+
   '**1pg_generate profile code for gprof'#000+
   '*L1P_use pipes instead of creating temporary assembler files'#000+
   '*L1P_use pipes instead of creating temporary assembler files'#000+
-  '**1S_syntax options'#000+
+  '*','*1S_syntax options'#000+
   '**2S2_switch some Delphi 2 extensions on'#000+
   '**2S2_switch some Delphi 2 extensions on'#000+
   '**2Sc_supports operators like C (*=,+=,/= and -=)'#000+
   '**2Sc_supports operators like C (*=,+=,/= and -=)'#000+
-  '**2Sd_tries to be Delphi comp','atible'#000+
+  '**2Sd_tries to be Delphi compatible'#000+
   '**2Se_compiler stops after the first error'#000+
   '**2Se_compiler stops after the first error'#000+
   '**2Sg_allow LABEL and GOTO'#000+
   '**2Sg_allow LABEL and GOTO'#000+
   '**2Sh_Use ansistrings'#000+
   '**2Sh_Use ansistrings'#000+
-  '**2Si_support C++ stlyed INLINE'#000+
+  '**','2Si_support C++ stlyed INLINE'#000+
   '**2Sm_support macros like C (global)'#000+
   '**2Sm_support macros like C (global)'#000+
   '**2So_tries to be TP/BP 7.0 compatible'#000+
   '**2So_tries to be TP/BP 7.0 compatible'#000+
-  '**2Sp_tries to be gpc compatible'#000,+
+  '**2Sp_tries to be gpc compatible'#000+
   '**2Ss_constructor name must be init (destructor must be done)'#000+
   '**2Ss_constructor name must be init (destructor must be done)'#000+
   '**2St_allow static keyword in objects'#000+
   '**2St_allow static keyword in objects'#000+
-  '**1s_don'#039't call assembler and linker (only with -a)'#000+
+  '*','*1s_don'#039't call assembler and linker (only with -a)'#000+
   '**1u<x>_undefines the symbol <x>'#000+
   '**1u<x>_undefines the symbol <x>'#000+
   '**1U_unit options'#000+
   '**1U_unit options'#000+
   '**2Un_don'#039't check the unit name'#000+
   '**2Un_don'#039't check the unit name'#000+
-  '**2Up','<x>_same as -Fu<x>'#000+
+  '**2Up<x>_same as -Fu<x>'#000+
   '**2Us_compile a system unit'#000+
   '**2Us_compile a system unit'#000+
-  '**1v<x>_Be verbose. <x> is a combination of the following letters :'#000+
+  '**1v<x>_Be verbose. <x> is a combination of the follow','ing letters :'#000+
   '**2*_e : Show errors (default)       d : Show debug info'#000+
   '**2*_e : Show errors (default)       d : Show debug info'#000+
   '**2*_w : Show warnings               u : Show unit info'#000+
   '**2*_w : Show warnings               u : Show unit info'#000+
-  '**2*_n : Sho','w notes                  t : Show tried/used files'#000+
-  '**2*_h : Show hints                  m : Show defined macros'#000+
+  '**2*_n : Show notes                  t : Show tried/used files'#000+
+  '**2*_h : Show hints                  m : Show defi','ned macros'#000+
   '**2*_i : Show general info           p : Show compiled procedures'#000+
   '**2*_i : Show general info           p : Show compiled procedures'#000+
   '**2*_l : Show linenumbers            c : Show conditionals'#000+
   '**2*_l : Show linenumbers            c : Show conditionals'#000+
-  '**2','*_a : Show everything             0 : Show nothing (except errors'+
-  ')'#000+
-  '**2*_b : Show all procedure          r : Rhide/GCC compatibility mode'#000+
+  '**2*_a : Show everything             0 : Show nothing (except errors)'#000+
+  '**2*_b : Show all procedure       ','   r : Rhide/GCC compatibility mod'+
+  'e'#000+
   '**2*_    declarations if an error    x : Executable info (Win32 only)'#000+
   '**2*_    declarations if an error    x : Executable info (Win32 only)'#000+
   '**2*_    occurs'#000+
   '**2*_    occurs'#000+
-  '**1X_executable o','ptions'#000+
+  '**1X_executable options'#000+
   '*L2Xc_link with the c library'#000+
   '*L2Xc_link with the c library'#000+
   '**2XD_link with dynamic libraries (defines FPC_LINK_DYNAMIC)'#000+
   '**2XD_link with dynamic libraries (defines FPC_LINK_DYNAMIC)'#000+
-  '**2Xs_strip all symbols from executable'#000+
+  '**2','Xs_strip all symbols from executable'#000+
   '**2XS_link with static libraries (defines FPC_LINK_STATIC)'#000+
   '**2XS_link with static libraries (defines FPC_LINK_STATIC)'#000+
   '**0*_Processor specific options:'#000+
   '**0*_Processor specific options:'#000+
-  '3*1A<x>_ou','tput format'#000+
+  '3*1A<x>_output format'#000+
   '3*2Ao_coff file using GNU AS'#000+
   '3*2Ao_coff file using GNU AS'#000+
   '3*2Anasmcoff_coff file using Nasm'#000+
   '3*2Anasmcoff_coff file using Nasm'#000+
-  '3*2Anasmelf_elf32 (linux) file using Nasm'#000+
+  '3*2Anasmelf_elf32 (linux) ','file using Nasm'#000+
   '3*2Anasmobj_obj file using Nasm'#000+
   '3*2Anasmobj_obj file using Nasm'#000+
   '3*2Amasm_obj using Masm (Mircosoft)'#000+
   '3*2Amasm_obj using Masm (Mircosoft)'#000+
   '3*2Atasm_obj using Tasm (Borland)'#000+
   '3*2Atasm_obj using Tasm (Borland)'#000+
-  '3*1R<x>_assembler rea','ding style'#000+
+  '3*1R<x>_assembler reading style'#000+
   '3*2Ratt_read AT&T style assembler'#000+
   '3*2Ratt_read AT&T style assembler'#000+
   '3*2Rintel_read Intel style assembler'#000+
   '3*2Rintel_read Intel style assembler'#000+
-  '3*2Rdirect_copy assembler text directly to assembler file'#000+
+  '3*2Rdirect_copy ass','embler text directly to assembler file'#000+
   '3*1O<x>_optimizations'#000+
   '3*1O<x>_optimizations'#000+
   '3*2Og_generate smaller code'#000+
   '3*2Og_generate smaller code'#000+
   '3*2OG_generate faster code (default)'#000+
   '3*2OG_generate faster code (default)'#000+
-  '3*2Or_keep ce','rtain variables in registers (still BUGGY!!!)'#000+
+  '3*2Or_keep certain variables in registers (still BUGGY!!!)'#000+
   '3*2Ou_enable uncertain optimizations (see docs)'#000+
   '3*2Ou_enable uncertain optimizations (see docs)'#000+
-  '3*2O1_level 1 optimizations (quick optimizations)'#000+
+  '3*2O1_l','evel 1 optimizations (quick optimizations)'#000+
   '3*2O2_level 2 optimizations (-O1 + slower optimizations)'#000+
   '3*2O2_level 2 optimizations (-O1 + slower optimizations)'#000+
-  '3*2O3_level 3 optimizations (same as -O','2u)'#000+
+  '3*2O3_level 3 optimizations (same as -O2u)'#000+
   '3*2Op_target processor'#000+
   '3*2Op_target processor'#000+
   '3*3Op1_set target processor to 386/486'#000+
   '3*3Op1_set target processor to 386/486'#000+
-  '3*3Op2_set target processor to Pentium/PentiumMMX (tm)'#000+
+  '3*3Op2_set target processor to Pent','ium/PentiumMMX (tm)'#000+
   '3*3Op3_set target processor to PPro/PII/c6x86/K6 (tm)'#000+
   '3*3Op3_set target processor to PPro/PII/c6x86/K6 (tm)'#000+
   '3*1T<x>_Target operating system'#000+
   '3*1T<x>_Target operating system'#000+
-  '3*2TGO32V1_version 1 of DJ Delori','e DOS extender'#000+
+  '3*2TGO32V1_version 1 of DJ Delorie DOS extender'#000+
   '3*2TGO32V2_version 2 of DJ Delorie DOS extender'#000+
   '3*2TGO32V2_version 2 of DJ Delorie DOS extender'#000+
   '3*2TLINUX_Linux'#000+
   '3*2TLINUX_Linux'#000+
   '3*2TOS2_OS/2 2.x'#000+
   '3*2TOS2_OS/2 2.x'#000+
-  '3*2TWin32_Windows 32 Bit'#000+
+  '3*2TW','in32_Windows 32 Bit'#000+
   '6*1A<x>_output format'#000+
   '6*1A<x>_output format'#000+
   '6*2Ao_Unix o-file using GNU AS'#000+
   '6*2Ao_Unix o-file using GNU AS'#000+
   '6*2Agas_GNU Motorola assembler'#000+
   '6*2Agas_GNU Motorola assembler'#000+
   '6*2Amit_MIT Syntax (old GAS)'#000+
   '6*2Amit_MIT Syntax (old GAS)'#000+
-  '6*2Amo','t_Standard Motorola assembler'#000+
+  '6*2Amot_Standard Motorola assembler'#000+
   '6*1O_optimizations'#000+
   '6*1O_optimizations'#000+
   '6*2Oa_turn on the optimizer'#000+
   '6*2Oa_turn on the optimizer'#000+
-  '6*2Og_generate smaller code'#000+
+  '6*2Og_generate smaller c','ode'#000+
   '6*2OG_generate faster code (default)'#000+
   '6*2OG_generate faster code (default)'#000+
   '6*2Ox_optimize maximum (still BUGGY!!!)'#000+
   '6*2Ox_optimize maximum (still BUGGY!!!)'#000+
   '6*2O2_set target processor to a MC68020+'#000+
   '6*2O2_set target processor to a MC68020+'#000+
-  '6*1R<x>_assembler',' reading style'#000+
+  '6*1R<x>_assembler reading style'#000+
   '6*2RMOT_read motorola style assembler'#000+
   '6*2RMOT_read motorola style assembler'#000+
   '6*1T<x>_Target operating system'#000+
   '6*1T<x>_Target operating system'#000+
-  '6*2TAMIGA_Commodore Amiga'#000+
+  '6*2TAMIGA_Commod','ore Amiga'#000+
   '6*2TATARI_Atari ST/STe/TT'#000+
   '6*2TATARI_Atari ST/STe/TT'#000+
   '6*2TMACOS_Macintosh m68k'#000+
   '6*2TMACOS_Macintosh m68k'#000+
   '6*2TLINUX_Linux-68k'#000+
   '6*2TLINUX_Linux-68k'#000+
   '**1*_'#000+
   '**1*_'#000+
   '**1?_shows this help'#000+
   '**1?_shows this help'#000+
-  '**1h_shows this help without wa','iting'#000
+  '**1h_shows this help without waiting'#000
 );
 );

+ 29 - 9
compiler/pmodules.pas

@@ -316,13 +316,12 @@ unit pmodules;
             end;
             end;
            pu:=pused_unit(pu^.next);
            pu:=pused_unit(pu^.next);
          end;
          end;
-        { load browser info if turned on }
-        if cs_browser in aktmoduleswitches then
+        { load browser info if stored }
+        if ((current_module^.flags and uf_has_browser)<>0) then
           punitsymtable(current_module^.globalsymtable)^.load_symtable_refs;
           punitsymtable(current_module^.globalsymtable)^.load_symtable_refs;
-        if ((current_module^.flags and uf_has_browser)<>0) and
-           (cs_local_browser in aktmoduleswitches) then
+        if ((current_module^.flags and uf_local_browser)<>0) then
          begin
          begin
-           current_module^.localsymtable:=new(psymtable,load);
+           current_module^.localsymtable:=new(psymtable,loadas(staticsymtable));
            psymtable(current_module^.localsymtable)^.name:=
            psymtable(current_module^.localsymtable)^.name:=
               stringdup('implementation of '+psymtable(current_module^.globalsymtable)^.name^);
               stringdup('implementation of '+psymtable(current_module^.globalsymtable)^.name^);
            psymtable(current_module^.localsymtable)^.load_browser;
            psymtable(current_module^.localsymtable)^.load_browser;
@@ -791,6 +790,12 @@ unit pmodules;
          consume(_INTERFACE);
          consume(_INTERFACE);
          { global switches are read, so further changes aren't allowed }
          { global switches are read, so further changes aren't allowed }
          current_module^.in_global:=false;
          current_module^.in_global:=false;
+
+         { can't have local browser when no global browser }
+         if (cs_local_browser in aktmoduleswitches) and
+            not(cs_browser in aktmoduleswitches) then
+           aktmoduleswitches:=aktmoduleswitches-[cs_local_browser];
+
          Message1(unit_u_start_parse_interface,current_module^.modulename^);
          Message1(unit_u_start_parse_interface,current_module^.modulename^);
 
 
          { update status }
          { update status }
@@ -1061,7 +1066,8 @@ unit pmodules;
             refsymtable^.write;
             refsymtable^.write;
             refsymtable^.write_browser;
             refsymtable^.write_browser;
           end;
           end;
-
+          { must be done only after local symtable ref stores !! }
+          closecurrentppu;
 {$ifdef GDB}
 {$ifdef GDB}
          pu:=pused_unit(usedunits.first);
          pu:=pused_unit(usedunits.first);
          while assigned(pu) do
          while assigned(pu) do
@@ -1072,8 +1078,11 @@ unit pmodules;
 {$endif GDB}
 {$endif GDB}
 
 
          { remove static symtable (=refsymtable) here to save some mem }
          { remove static symtable (=refsymtable) here to save some mem }
-         dispose(st,done);
-         current_module^.localsymtable:=nil;
+         if not (cs_local_browser in aktmoduleswitches) then
+           begin
+              dispose(st,done);
+              current_module^.localsymtable:=nil;
+           end;
 
 
          if is_assembler_generated then
          if is_assembler_generated then
           begin
           begin
@@ -1126,6 +1135,11 @@ unit pmodules;
 
 
          { global switches are read, so further changes aren't allowed }
          { global switches are read, so further changes aren't allowed }
          current_module^.in_global:=false;
          current_module^.in_global:=false;
+
+         { can't have local browser when no global browser }
+         if (cs_local_browser in aktmoduleswitches) and
+            not(cs_browser in aktmoduleswitches) then
+           aktmoduleswitches:=aktmoduleswitches-[cs_local_browser];
          { set implementation flag }
          { set implementation flag }
          current_module^.in_implementation:=true;
          current_module^.in_implementation:=true;
 
 
@@ -1245,7 +1259,13 @@ unit pmodules;
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.98  1999-02-22 02:15:29  peter
+  Revision 1.99  1999-02-22 13:06:58  pierre
+    + -b and -bl options work !
+    + cs_local_browser ($L+) is disabled if cs_browser ($Y+)
+      is not enabled when quitting global section
+    * local vars and procedures are not yet stored into PPU
+
+  Revision 1.98  1999/02/22 02:15:29  peter
     * updates for ag386bin
     * updates for ag386bin
 
 
   Revision 1.97  1999/02/16 00:45:31  peter
   Revision 1.97  1999/02/16 00:45:31  peter

+ 8 - 1
compiler/ppu.pas

@@ -75,6 +75,7 @@ const
   ibvarsym_C      = 28;
   ibvarsym_C      = 28;
   ibunitsym       = 29;  { needed for browser }
   ibunitsym       = 29;  { needed for browser }
   iblabelsym      = 30;
   iblabelsym      = 30;
+  ibfuncretsym    = 31;
   {definitions}
   {definitions}
   iborddef        = 40;
   iborddef        = 40;
   ibpointerdef    = 41;
   ibpointerdef    = 41;
@@ -795,7 +796,13 @@ end;
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.23  1999-02-16 00:48:24  peter
+  Revision 1.24  1999-02-22 13:07:00  pierre
+    + -b and -bl options work !
+    + cs_local_browser ($L+) is disabled if cs_browser ($Y+)
+      is not enabled when quitting global section
+    * local vars and procedures are not yet stored into PPU
+
+  Revision 1.23  1999/02/16 00:48:24  peter
     * save in the ppu if linked with obj file instead of using the
     * save in the ppu if linked with obj file instead of using the
       library flag, so the .inc files are also checked
       library flag, so the .inc files are also checked
 
 

+ 10 - 1
compiler/pstatmnt.pas

@@ -705,6 +705,7 @@ unit pstatmnt;
               Message(parser_w_inlining_disabled);
               Message(parser_w_inlining_disabled);
               aktprocsym^.definition^.options:= aktprocsym^.definition^.options and not poinline;
               aktprocsym^.definition^.options:= aktprocsym^.definition^.options and not poinline;
            End;
            End;
+         Inside_asm_statement:=true;
          case aktasmmode of
          case aktasmmode of
 {$ifdef i386}
 {$ifdef i386}
   {$ifndef NoRA386Att}
   {$ifndef NoRA386Att}
@@ -790,6 +791,8 @@ unit pstatmnt;
              Marker := New(Pai_Marker, Init(AsmBlockEnd));
              Marker := New(Pai_Marker, Init(AsmBlockEnd));
              AsmStat^.p_asm^.Concat(Marker);
              AsmStat^.p_asm^.Concat(Marker);
            End;
            End;
+         Inside_asm_statement:=false;
+
          _asm_statement:=asmstat;
          _asm_statement:=asmstat;
       end;
       end;
 
 
@@ -1282,7 +1285,13 @@ unit pstatmnt;
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.66  1999-02-22 02:15:31  peter
+  Revision 1.67  1999-02-22 13:07:01  pierre
+    + -b and -bl options work !
+    + cs_local_browser ($L+) is disabled if cs_browser ($Y+)
+      is not enabled when quitting global section
+    * local vars and procedures are not yet stored into PPU
+
+  Revision 1.66  1999/02/22 02:15:31  peter
     * updates for ag386bin
     * updates for ag386bin
 
 
   Revision 1.65  1999/02/15 13:13:15  pierre
   Revision 1.65  1999/02/15 13:13:15  pierre

+ 11 - 1
compiler/scandir.inc

@@ -766,6 +766,8 @@ const
       var
       var
         s : string;
         s : string;
       begin
       begin
+        If Inside_asm_statement then
+          Message1(scan_w_no_asm_reader_switch_inside_asm,s);
         current_scanner^.skipspace;
         current_scanner^.skipspace;
         s:=current_scanner^.readid;
         s:=current_scanner^.readid;
         if s='DEFAULT' then
         if s='DEFAULT' then
@@ -778,6 +780,8 @@ const
 
 
     procedure dir_oldasmmode(t:tdirectivetoken);
     procedure dir_oldasmmode(t:tdirectivetoken);
       begin
       begin
+        If Inside_asm_statement then
+          Message1(scan_w_no_asm_reader_switch_inside_asm,directive[t]);
 {$ifdef i386}
 {$ifdef i386}
         case t of
         case t of
          _DIR_I386_ATT    : aktasmmode:=asmmode_i386_att;
          _DIR_I386_ATT    : aktasmmode:=asmmode_i386_att;
@@ -1001,7 +1005,13 @@ const
 
 
 {
 {
   $Log$
   $Log$
-  Revision 1.46  1999-02-05 08:51:16  pierre
+  Revision 1.47  1999-02-22 13:07:05  pierre
+    + -b and -bl options work !
+    + cs_local_browser ($L+) is disabled if cs_browser ($Y+)
+      is not enabled when quitting global section
+    * local vars and procedures are not yet stored into PPU
+
+  Revision 1.46  1999/02/05 08:51:16  pierre
    * $L default extension from resext to objext
    * $L default extension from resext to objext
 
 
   Revision 1.45  1998/12/28 23:26:25  peter
   Revision 1.45  1998/12/28 23:26:25  peter

+ 10 - 3
compiler/switches.pas

@@ -114,10 +114,11 @@ begin
                         aktmoduleswitches:=aktmoduleswitches+[tmoduleswitch(setsw)]
                         aktmoduleswitches:=aktmoduleswitches+[tmoduleswitch(setsw)]
                       else
                       else
                         aktmoduleswitches:=aktmoduleswitches-[tmoduleswitch(setsw)];
                         aktmoduleswitches:=aktmoduleswitches-[tmoduleswitch(setsw)];
-                      { can't have local browser when no global browser }
+                      { can't have local browser when no global browser
+                        moved to end of global section
                       if (cs_local_browser in aktmoduleswitches) and
                       if (cs_local_browser in aktmoduleswitches) and
                          not(cs_browser in aktmoduleswitches) then
                          not(cs_browser in aktmoduleswitches) then
-                        aktmoduleswitches:=aktmoduleswitches-[cs_local_browser];
+                        aktmoduleswitches:=aktmoduleswitches-[cs_local_browser];}
                     end
                     end
                    else
                    else
                     Message(scan_w_switch_is_global);
                     Message(scan_w_switch_is_global);
@@ -170,7 +171,13 @@ end;
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.19  1999-02-18 13:43:20  peter
+  Revision 1.20  1999-02-22 13:07:06  pierre
+    + -b and -bl options work !
+    + cs_local_browser ($L+) is disabled if cs_browser ($Y+)
+      is not enabled when quitting global section
+    * local vars and procedures are not yet stored into PPU
+
+  Revision 1.19  1999/02/18 13:43:20  peter
     * no localbrowser when browser is turned off
     * no localbrowser when browser is turned off
 
 
   Revision 1.18  1998/12/11 00:03:47  peter
   Revision 1.18  1998/12/11 00:03:47  peter

+ 28 - 9
compiler/symdef.inc

@@ -1484,9 +1484,18 @@
 ***************************************************************************}
 ***************************************************************************}
 
 
     constructor tformaldef.init;
     constructor tformaldef.init;
+      var
+         stregdef : boolean;
       begin
       begin
+         stregdef:=registerdef;
+         registerdef:=false;
          inherited init;
          inherited init;
          deftype:=formaldef;
          deftype:=formaldef;
+         registerdef:=stregdef;
+         { formaldef must be registered at unit level !! }
+         if registerdef and assigned(current_module) and
+            assigned(current_module^.globalsymtable) then
+           psymtable(current_module^.globalsymtable)^.registerdef(@self);
          savesize:=target_os.size_of_pointer;
          savesize:=target_os.size_of_pointer;
       end;
       end;
 
 
@@ -1684,7 +1693,7 @@
          savesize:=readlong;
          savesize:=readlong;
          oldread_member:=read_member;
          oldread_member:=read_member;
          read_member:=true;
          read_member:=true;
-         symtable:=new(psymtable,loadasstruct(recordsymtable));
+         symtable:=new(psymtable,loadas(recordsymtable));
          read_member:=oldread_member;
          read_member:=oldread_member;
          symtable^.defowner := @self;
          symtable^.defowner := @self;
       end;
       end;
@@ -1759,7 +1768,7 @@
          inherited write;
          inherited write;
          writelong(savesize);
          writelong(savesize);
          current_ppu^.writeentry(ibrecorddef);
          current_ppu^.writeentry(ibrecorddef);
-         self.symtable^.writeasstruct;
+         self.symtable^.writeas;
          read_member:=oldread_member;
          read_member:=oldread_member;
       end;
       end;
 
 
@@ -2239,10 +2248,12 @@
           lastwritten:=lastref;
           lastwritten:=lastref;
         if (current_module^.flags and uf_local_browser)<>0 then
         if (current_module^.flags and uf_local_browser)<>0 then
           begin
           begin
-             new(parast,load);
+{$ifdef Dummy}
+             new(parast,loadas(parasymtable));
              parast^.load_browser;
              parast^.load_browser;
-             new(localst,load);
+             new(localst,loadas(localsymtable));
              localst^.load_browser;
              localst^.load_browser;
+{$endif def Dummy}
           end;
           end;
       end;
       end;
 
 
@@ -2281,16 +2292,18 @@
         write_references:=true;
         write_references:=true;
         if (current_module^.flags and uf_local_browser)<>0 then
         if (current_module^.flags and uf_local_browser)<>0 then
           begin
           begin
+{$ifdef Dummy}
              { we need dummy para and local symtables
              { we need dummy para and local symtables
                PPU files are then easier to read PM }
                PPU files are then easier to read PM }
              if not assigned(parast) then
              if not assigned(parast) then
                parast:=new(psymtable,init(parasymtable));
                parast:=new(psymtable,init(parasymtable));
-             parast^.write;
+             parast^.writeas;
              parast^.write_browser;
              parast^.write_browser;
              if not assigned(localst) then
              if not assigned(localst) then
                localst:=new(psymtable,init(localsymtable));
                localst:=new(psymtable,init(localsymtable));
-             localst^.write;
+             localst^.writeas;
              localst^.write_browser;
              localst^.write_browser;
+{$endif def Dummy}
           end;
           end;
       end;
       end;
 
 
@@ -2705,7 +2718,7 @@
          oldread_member:=read_member;
          oldread_member:=read_member;
          read_member:=true;
          read_member:=true;
          object_options:=true;
          object_options:=true;
-         publicsyms:=new(psymtable,loadasstruct(objectsymtable));
+         publicsyms:=new(psymtable,loadas(objectsymtable));
          object_options:=false;
          object_options:=false;
          read_member:=oldread_member;
          read_member:=oldread_member;
          publicsyms^.defowner:=@self;
          publicsyms^.defowner:=@self;
@@ -2889,7 +2902,7 @@
          oldread_member:=read_member;
          oldread_member:=read_member;
          read_member:=true;
          read_member:=true;
          object_options:=true;
          object_options:=true;
-         publicsyms^.writeasstruct;
+         publicsyms^.writeas;
          object_options:=false;
          object_options:=false;
          read_member:=oldread_member;
          read_member:=oldread_member;
       end;
       end;
@@ -3293,7 +3306,13 @@
 
 
 {
 {
   $Log$
   $Log$
-  Revision 1.92  1999-02-17 10:14:20  peter
+  Revision 1.93  1999-02-22 13:07:07  pierre
+    + -b and -bl options work !
+    + cs_local_browser ($L+) is disabled if cs_browser ($Y+)
+      is not enabled when quitting global section
+    * local vars and procedures are not yet stored into PPU
+
+  Revision 1.92  1999/02/17 10:14:20  peter
     * set the first enumsym also for subrange types
     * set the first enumsym also for subrange types
 
 
   Revision 1.91  1999/02/08 09:51:21  pierre
   Revision 1.91  1999/02/08 09:51:21  pierre

+ 18 - 3
compiler/symppu.inc

@@ -109,7 +109,9 @@
          current_ppu^.putlongint($ffffffff)
          current_ppu^.putlongint($ffffffff)
         else
         else
          begin
          begin
-           if (p^.owner^.symtabletype in [recordsymtable,objectsymtable]) then
+           if p^.owner^.symtabletype=staticsymtable then
+            current_ppu^.putword($fffe)
+           else if not (p^.owner^.symtabletype in [unitsymtable,globalsymtable]) then
             current_ppu^.putword($ffff)
             current_ppu^.putword($ffff)
            else
            else
             current_ppu^.putword(p^.owner^.unitid);
             current_ppu^.putword(p^.owner^.unitid);
@@ -124,7 +126,9 @@
          current_ppu^.putlongint($ffffffff)
          current_ppu^.putlongint($ffffffff)
         else
         else
          begin
          begin
-           if (p^.owner^.symtabletype in [recordsymtable,objectsymtable]) then
+           if p^.owner^.symtabletype=staticsymtable then
+            current_ppu^.putword($fffe)
+           else if not (p^.owner^.symtabletype in [unitsymtable,globalsymtable]) then
             current_ppu^.putword($ffff)
             current_ppu^.putword($ffff)
            else
            else
             current_ppu^.putword(p^.owner^.unitid);
             current_ppu^.putword(p^.owner^.unitid);
@@ -220,9 +224,14 @@
          current_ppu^.writeheader;
          current_ppu^.writeheader;
        { save crc in current_module also }
        { save crc in current_module also }
          current_module^.crc:=current_ppu^.crc;
          current_module^.crc:=current_ppu^.crc;
+      end;
+
+    procedure closecurrentppu;
+      begin
        { close }
        { close }
          current_ppu^.close;
          current_ppu^.close;
          dispose(current_ppu,done);
          dispose(current_ppu,done);
+         current_ppu:=nil;
       end;
       end;
 
 
 
 
@@ -439,7 +448,13 @@
 
 
 {
 {
   $Log$
   $Log$
-  Revision 1.31  1999-02-16 00:48:25  peter
+  Revision 1.32  1999-02-22 13:07:08  pierre
+    + -b and -bl options work !
+    + cs_local_browser ($L+) is disabled if cs_browser ($Y+)
+      is not enabled when quitting global section
+    * local vars and procedures are not yet stored into PPU
+
+  Revision 1.31  1999/02/16 00:48:25  peter
     * save in the ppu if linked with obj file instead of using the
     * save in the ppu if linked with obj file instead of using the
       library flag, so the .inc files are also checked
       library flag, so the .inc files are also checked
 
 

+ 51 - 9
compiler/symsym.inc

@@ -459,17 +459,26 @@
 
 
 
 
     procedure tprocsym.load_references;
     procedure tprocsym.load_references;
-      var
-        prdef : pprocdef;
+      (* var
+        prdef,prdef2 : pprocdef;
+        b : byte; *)
       begin
       begin
          inherited load_references;
          inherited load_references;
-         prdef:=definition;
+         (* prdef:=definition;
          { take care about operators !!  }
          { take care about operators !!  }
-         while assigned(prdef) and (prdef^.owner=definition^.owner) do
-          begin
-            prdef^.load_references;
-            prdef:=prdef^.nextoverloaded;
-          end;
+         if (current_module^.flags and uf_has_browser) <>0 then
+           while assigned(prdef) and (prdef^.owner=definition^.owner) do
+             begin
+                b:=current_ppu^.readentry;
+                if b<>ibdefref then
+                  Message(unit_f_ppu_read_error);
+                prdef2:=pprocdef(readdefref);
+                resolvedef(prdef2);
+                if prdef<>prdef2 then
+                  Message(unit_f_ppu_read_error);
+                prdef^.load_references;
+                prdef:=prdef^.nextoverloaded;
+             end; *)
       end;
       end;
 
 
     function tprocsym.write_references : boolean;
     function tprocsym.write_references : boolean;
@@ -727,6 +736,33 @@
          address:=pprocinfo(approcinfo)^.retoffset;
          address:=pprocinfo(approcinfo)^.retoffset;
       end;
       end;
 
 
+    constructor tfuncretsym.load;
+      begin
+         tsym.load;
+         funcretdef:=readdefref;
+         address:=readlong;
+         funcretprocinfo:=nil;
+         typ:=funcretsym;
+      end;
+
+    procedure tfuncretsym.write;
+      begin
+      
+         (*
+          Normally all references are
+          transfered to the function symbol itself !! PM *)
+         tsym.write;
+         writedefref(funcretdef);
+         writelong(address);
+         
+         current_ppu^.writeentry(ibfuncretsym);
+      end;
+
+    procedure tfuncretsym.deref;
+      begin
+         resolvedef(funcretdef);
+      end;
+
 {$ifdef GDB}
 {$ifdef GDB}
     procedure tfuncretsym.concatstabto(asmlist : paasmoutput);
     procedure tfuncretsym.concatstabto(asmlist : paasmoutput);
       begin
       begin
@@ -1775,7 +1811,13 @@
 
 
 {
 {
   $Log$
   $Log$
-  Revision 1.72  1999-02-08 09:51:22  pierre
+  Revision 1.73  1999-02-22 13:07:09  pierre
+    + -b and -bl options work !
+    + cs_local_browser ($L+) is disabled if cs_browser ($Y+)
+      is not enabled when quitting global section
+    * local vars and procedures are not yet stored into PPU
+
+  Revision 1.72  1999/02/08 09:51:22  pierre
    * gdb info for local functions was wrong
    * gdb info for local functions was wrong
 
 
   Revision 1.71  1999/01/23 23:29:41  florian
   Revision 1.71  1999/01/23 23:29:41  florian

+ 10 - 1
compiler/symsymh.inc

@@ -231,6 +231,9 @@
           funcretdef : pdef;
           funcretdef : pdef;
           address : longint;
           address : longint;
           constructor init(const n : string;approcinfo : pointer{pprocinfo});
           constructor init(const n : string;approcinfo : pointer{pprocinfo});
+          constructor load;
+          procedure write;virtual;
+          procedure deref;virtual;
 {$ifdef GDB}
 {$ifdef GDB}
           procedure concatstabto(asmlist : paasmoutput);virtual;
           procedure concatstabto(asmlist : paasmoutput);virtual;
 {$endif GDB}
 {$endif GDB}
@@ -328,7 +331,13 @@
 
 
 {
 {
   $Log$
   $Log$
-  Revision 1.14  1999-01-20 10:20:22  peter
+  Revision 1.15  1999-02-22 13:07:11  pierre
+    + -b and -bl options work !
+    + cs_local_browser ($L+) is disabled if cs_browser ($Y+)
+      is not enabled when quitting global section
+    * local vars and procedures are not yet stored into PPU
+
+  Revision 1.14  1999/01/20 10:20:22  peter
     * don't make localvar copies for assembler procedures
     * don't make localvar copies for assembler procedures
 
 
   Revision 1.13  1999/01/14 21:49:59  peter
   Revision 1.13  1999/01/14 21:49:59  peter