瀏覽代碼

patched all method visibility conflicts: extending methods keep visibility of super method.

git-svn-id: https://svn.inf.ethz.ch/svn/lecturers/a2/trunk@7618 8c9fc860-2736-0410-a75d-ab315db34111
felixf 7 年之前
父節點
當前提交
dd3d5477c3
共有 100 個文件被更改,包括 746 次插入746 次删除
  1. 14 14
      source/A2Sequencers.Mod
  2. 6 6
      source/AMD64Decoder.Mod
  3. 5 5
      source/ARMDecoder.Mod
  4. 1 1
      source/ActiveCellsRunner.mod
  5. 3 3
      source/ArrayXdCplx.Mod
  6. 3 3
      source/ArrayXdInt.Mod
  7. 3 3
      source/ArrayXdRat.Mod
  8. 3 3
      source/ArrayXdRe.Mod
  9. 2 2
      source/BimboMail.Mod
  10. 2 2
      source/Bimso.Mod
  11. 1 1
      source/BootShell.Mod
  12. 5 5
      source/CSS2Properties.Mod
  13. 3 3
      source/CalcGauss.Mod
  14. 1 1
      source/CharacterLineup.Mod
  15. 3 3
      source/Commands.Mod
  16. 5 5
      source/ComponentViewer.Mod
  17. 3 3
      source/CubeCplx.Mod
  18. 3 3
      source/CubeInt.Mod
  19. 3 3
      source/CubeRat.Mod
  20. 3 3
      source/CubeRe.Mod
  21. 1 1
      source/CyberbitNetInstall.Mod
  22. 1 1
      source/DTPEditor.Mod
  23. 2 2
      source/DTPImage.Mod
  24. 2 2
      source/DTPRect.Mod
  25. 4 4
      source/DTPText.Mod
  26. 9 9
      source/DTPUtilities.Mod
  27. 7 7
      source/DTPView.Mod
  28. 1 1
      source/DebugLog.Mod
  29. 2 2
      source/Decoder.Mod
  30. 19 19
      source/DiskFS.Mod
  31. 1 1
      source/DiskTests.Mod
  32. 1 1
      source/DynamicWebpagePlugin.Mod
  33. 1 1
      source/EventsFileLog.Mod
  34. 1 1
      source/EventsKernelLog.Mod
  35. 1 1
      source/EventsMemoryLog.Mod
  36. 45 45
      source/ExerciseGroups.Mod
  37. 12 12
      source/FATFiles.Mod
  38. 9 9
      source/FATVolumes.Mod
  39. 19 19
      source/FTPFS.Mod
  40. 33 33
      source/FoxAMDBackend.Mod
  41. 24 24
      source/FoxARMBackend.Mod
  42. 1 1
      source/FoxARMInstructionSet.Mod
  43. 9 9
      source/FoxActiveCells.Mod
  44. 2 2
      source/FoxBasic.Mod
  45. 2 2
      source/FoxBinaryObjectFile.Mod
  46. 25 25
      source/FoxBinarySymbolFile.Mod
  47. 1 1
      source/FoxCSharpFrontend.Mod
  48. 60 60
      source/FoxDocumentationBackend.Mod
  49. 43 43
      source/FoxFingerPrinter.Mod
  50. 1 1
      source/FoxGenericObjectFile.Mod
  51. 78 78
      source/FoxIntermediateBackend.Mod
  52. 2 2
      source/FoxIntermediateCode.Mod
  53. 3 3
      source/FoxIntermediateObjectFile.Mod
  54. 2 2
      source/FoxInterpreter.Mod
  55. 4 4
      source/FoxInterpreterBackend.Mod
  56. 73 73
      source/FoxInterpreterSymbols.Mod
  57. 3 3
      source/FoxMinosObjectFile.Mod
  58. 1 1
      source/FoxOberonFrontend.Mod
  59. 1 1
      source/FoxSections.Mod
  60. 30 30
      source/FoxTRMBackend.Mod
  61. 1 1
      source/FoxTRMInstructionSet.Mod
  62. 1 1
      source/FoxTest.Mod
  63. 4 4
      source/FoxTextualSymbolFile.Mod
  64. 1 1
      source/FoxTranspilerBackend.Mod
  65. 5 5
      source/FractalDemo.Mod
  66. 1 1
      source/Generic.Modules.Mod
  67. 3 3
      source/GenericLoader.Mod
  68. 3 3
      source/HCubeCplx.Mod
  69. 3 3
      source/HCubeInt.Mod
  70. 3 3
      source/HCubeRat.Mod
  71. 3 3
      source/HCubeRe.Mod
  72. 1 1
      source/HTMLTransformer.Mod
  73. 2 2
      source/HotKeysCommands.Mod
  74. 7 7
      source/I386Decoder.Mod
  75. 13 13
      source/IMAPGUI.Mod
  76. 2 2
      source/ISO9660Files.Mod
  77. 5 5
      source/ISO9660Volumes.Mod
  78. 4 4
      source/Inputs.Mod
  79. 1 1
      source/JPEG2000DecoderCS.Mod
  80. 1 1
      source/MPEGVideoDecoder.Mod
  81. 3 3
      source/MainMenu.Mod
  82. 2 2
      source/MathErf.Mod
  83. 3 3
      source/MathMitLef.Mod
  84. 7 7
      source/MathRe.Mod
  85. 4 4
      source/MediaPlayer.Mod
  86. 3 3
      source/MenuEdit.Mod
  87. 4 4
      source/Models.Mod
  88. 1 1
      source/ModuleTrees.Mod
  89. 3 3
      source/MtxCplx.Mod
  90. 3 3
      source/MtxInt.Mod
  91. 3 3
      source/MtxRat.Mod
  92. 3 3
      source/MtxRe.Mod
  93. 1 1
      source/MultiLogger.Mod
  94. 2 2
      source/Notepad.Mod
  95. 1 1
      source/OGGVorbisPlayer.Mod
  96. 二進制
      source/Oberon.FileDisks.Mod
  97. 二進制
      source/Oberon.ants3D.Mod
  98. 二進制
      source/Oberon.vyRanSupr.Mod
  99. 12 12
      source/OberonDisplay.Mod
  100. 19 19
      source/OberonFS.Mod

+ 14 - 14
source/A2Sequencers.Mod

@@ -259,7 +259,7 @@ TYPE
 		BEGIN InitMessage; SELF.procedure := procedure;
 		BEGIN InitMessage; SELF.procedure := procedure;
 		END InitProcedureMessage;
 		END InitProcedureMessage;
 
 
-		PROCEDURE Handle;
+		PROCEDURE Handle*;
 		BEGIN procedure;
 		BEGIN procedure;
 		END Handle;
 		END Handle;
 
 
@@ -274,7 +274,7 @@ TYPE
 		BEGIN InitMessage; SELF.value := value; SELF.procedure := procedure;
 		BEGIN InitMessage; SELF.value := value; SELF.procedure := procedure;
 		END InitBooleanMessage;
 		END InitBooleanMessage;
 
 
-		PROCEDURE Handle;
+		PROCEDURE Handle*;
 		BEGIN procedure (value);
 		BEGIN procedure (value);
 		END Handle;
 		END Handle;
 
 
@@ -289,7 +289,7 @@ TYPE
 		BEGIN InitMessage; SELF.value := value; SELF.procedure := procedure;
 		BEGIN InitMessage; SELF.value := value; SELF.procedure := procedure;
 		END InitIntegerMessage;
 		END InitIntegerMessage;
 
 
-		PROCEDURE Handle;
+		PROCEDURE Handle*;
 		BEGIN procedure (value);
 		BEGIN procedure (value);
 		END Handle;
 		END Handle;
 
 
@@ -304,7 +304,7 @@ TYPE
 		BEGIN InitMessage; SELF.value0 := value0; SELF.value1 := value1; SELF.procedure := procedure;
 		BEGIN InitMessage; SELF.value0 := value0; SELF.value1 := value1; SELF.procedure := procedure;
 		END InitIntegerIntegerMessage;
 		END InitIntegerIntegerMessage;
 
 
-		PROCEDURE Handle;
+		PROCEDURE Handle*;
 		BEGIN procedure (value0, value1);
 		BEGIN procedure (value0, value1);
 		END Handle;
 		END Handle;
 
 
@@ -319,7 +319,7 @@ TYPE
 		BEGIN InitMessage; SELF.value := value; SELF.procedure := procedure;
 		BEGIN InitMessage; SELF.value := value; SELF.procedure := procedure;
 		END InitRealMessage;
 		END InitRealMessage;
 
 
-		PROCEDURE Handle;
+		PROCEDURE Handle*;
 		BEGIN procedure (value);
 		BEGIN procedure (value);
 		END Handle;
 		END Handle;
 
 
@@ -334,7 +334,7 @@ TYPE
 		BEGIN InitMessage; SELF.value := value; SELF.procedure := procedure;
 		BEGIN InitMessage; SELF.value := value; SELF.procedure := procedure;
 		END InitSetMessage;
 		END InitSetMessage;
 
 
-		PROCEDURE Handle;
+		PROCEDURE Handle*;
 		BEGIN procedure (value);
 		BEGIN procedure (value);
 		END Handle;
 		END Handle;
 
 
@@ -353,7 +353,7 @@ TYPE
 			NEW (SELF.value, length); COPY (value, SELF.value^); SELF.procedure := procedure;
 			NEW (SELF.value, length); COPY (value, SELF.value^); SELF.procedure := procedure;
 		END InitStringMessage;
 		END InitStringMessage;
 
 
-		PROCEDURE Handle;
+		PROCEDURE Handle*;
 		BEGIN procedure (value^);
 		BEGIN procedure (value^);
 		END Handle;
 		END Handle;
 
 
@@ -369,7 +369,7 @@ TYPE
 		END InitRequest;
 		END InitRequest;
 
 
 		(* IMPORTANT: to be called at the end of overriding procedures *)
 		(* IMPORTANT: to be called at the end of overriding procedures *)
-		PROCEDURE Handle;
+		PROCEDURE Handle*;
 		BEGIN {EXCLUSIVE} handled := TRUE
 		BEGIN {EXCLUSIVE} handled := TRUE
 		END Handle;
 		END Handle;
 
 
@@ -389,7 +389,7 @@ TYPE
 		BEGIN InitRequest; SELF.value := value; SELF.procedure := procedure;
 		BEGIN InitRequest; SELF.value := value; SELF.procedure := procedure;
 		END InitIntegerRequest;
 		END InitIntegerRequest;
 
 
-		PROCEDURE Handle;
+		PROCEDURE Handle*;
 		BEGIN procedure (value); Handle^;
 		BEGIN procedure (value); Handle^;
 		END Handle;
 		END Handle;
 
 
@@ -404,7 +404,7 @@ TYPE
 		BEGIN InitRequest; SELF.procedure := procedure;
 		BEGIN InitRequest; SELF.procedure := procedure;
 		END InitRequestBoolean;
 		END InitRequestBoolean;
 
 
-		PROCEDURE Handle;
+		PROCEDURE Handle*;
 		BEGIN result := procedure (); Handle^;
 		BEGIN result := procedure (); Handle^;
 		END Handle;
 		END Handle;
 
 
@@ -419,7 +419,7 @@ TYPE
 		BEGIN InitRequest; SELF.procedure := procedure;
 		BEGIN InitRequest; SELF.procedure := procedure;
 		END InitRequestInteger;
 		END InitRequestInteger;
 
 
-		PROCEDURE Handle;
+		PROCEDURE Handle*;
 		BEGIN result := procedure (); Handle^;
 		BEGIN result := procedure (); Handle^;
 		END Handle;
 		END Handle;
 
 
@@ -434,7 +434,7 @@ TYPE
 		BEGIN InitRequest; SELF.procedure := procedure;
 		BEGIN InitRequest; SELF.procedure := procedure;
 		END InitRequestReal;
 		END InitRequestReal;
 
 
-		PROCEDURE Handle;
+		PROCEDURE Handle*;
 		BEGIN result := procedure (); Handle^;
 		BEGIN result := procedure (); Handle^;
 		END Handle;
 		END Handle;
 
 
@@ -450,7 +450,7 @@ TYPE
 		BEGIN InitRequest; SELF.value := value; SELF.procedure := procedure;
 		BEGIN InitRequest; SELF.value := value; SELF.procedure := procedure;
 		END InitIntegerRequestBoolean;
 		END InitIntegerRequestBoolean;
 
 
-		PROCEDURE Handle;
+		PROCEDURE Handle*;
 		BEGIN result := procedure (value); Handle^;
 		BEGIN result := procedure (value); Handle^;
 		END Handle;
 		END Handle;
 
 
@@ -466,7 +466,7 @@ TYPE
 		BEGIN InitRequest; SELF.value := value; SELF.procedure := procedure;
 		BEGIN InitRequest; SELF.value := value; SELF.procedure := procedure;
 		END InitRealRequestInteger;
 		END InitRealRequestInteger;
 
 
-		PROCEDURE Handle;
+		PROCEDURE Handle*;
 		BEGIN result := procedure (value); Handle^;
 		BEGIN result := procedure (value); Handle^;
 		END Handle;
 		END Handle;
 
 

+ 6 - 6
source/AMD64Decoder.Mod

@@ -833,7 +833,7 @@ TYPE
 			hidePrefixes := FALSE;
 			hidePrefixes := FALSE;
 		END New;
 		END New;
 
 
-		PROCEDURE PrintOpcodeBytes (w : Streams.Writer);
+		PROCEDURE PrintOpcodeBytes*(w : Streams.Writer);
 		VAR
 		VAR
 			i : LONGINT;
 			i : LONGINT;
 		BEGIN
 		BEGIN
@@ -847,7 +847,7 @@ TYPE
 			END
 			END
 		END PrintOpcodeBytes;
 		END PrintOpcodeBytes;
 
 
-		PROCEDURE PrintInstruction (w : Streams.Writer);
+		PROCEDURE PrintInstruction*(w : Streams.Writer);
 		BEGIN
 		BEGIN
 			IF ~hidePrefixes THEN
 			IF ~hidePrefixes THEN
 				IF prREP IN prefixes THEN w.String ("REP ") END;
 				IF prREP IN prefixes THEN w.String ("REP ") END;
@@ -1364,7 +1364,7 @@ TYPE
 			END;
 			END;
 		END PrintInstruction;
 		END PrintInstruction;
 
 
-		PROCEDURE PrintArguments (w : Streams.Writer);
+		PROCEDURE PrintArguments*(w : Streams.Writer);
 		VAR
 		VAR
 			i: LONGINT;
 			i: LONGINT;
 		BEGIN
 		BEGIN
@@ -1376,7 +1376,7 @@ TYPE
 			END
 			END
 		END PrintArguments;
 		END PrintArguments;
 
 
-		PROCEDURE PrintVariables (w : Streams.Writer);
+		PROCEDURE PrintVariables*(w : Streams.Writer);
 		VAR
 		VAR
 			i, count: LONGINT;
 			i, count: LONGINT;
 			argMem: ArgMem;
 			argMem: ArgMem;
@@ -1410,7 +1410,7 @@ TYPE
 	(* AMD dissassembler*)
 	(* AMD dissassembler*)
 	AMD64Decoder = OBJECT (Decoder.Decoder)
 	AMD64Decoder = OBJECT (Decoder.Decoder)
 
 
-		PROCEDURE NewOpcode() : Decoder.Opcode;
+		PROCEDURE NewOpcode*() : Decoder.Opcode;
 		VAR
 		VAR
 			opcode : AMD64Opcode;
 			opcode : AMD64Opcode;
 		BEGIN
 		BEGIN
@@ -1418,7 +1418,7 @@ TYPE
 			RETURN opcode
 			RETURN opcode
 		END NewOpcode;
 		END NewOpcode;
 
 
-		PROCEDURE DecodeThis(opcode : Decoder.Opcode);
+		PROCEDURE DecodeThis*(opcode : Decoder.Opcode);
 		VAR
 		VAR
 			opc : AMD64Opcode;
 			opc : AMD64Opcode;
 			byte, code, arg, mod, segment, reg, rm, scale, index, base, disp: LONGINT;
 			byte, code, arg, mod, segment, reg, rm, scale, index, base, disp: LONGINT;

+ 5 - 5
source/ARMDecoder.Mod

@@ -231,12 +231,12 @@ TYPE
 			argStructure := none
 			argStructure := none
 		END New;
 		END New;
 
 
-		PROCEDURE PrintOpcodeBytes (w : Streams.Writer);
+		PROCEDURE PrintOpcodeBytes*(w : Streams.Writer);
 		BEGIN
 		BEGIN
 			w.Hex(op, 0)
 			w.Hex(op, 0)
 		END PrintOpcodeBytes;
 		END PrintOpcodeBytes;
 
 
-		PROCEDURE PrintInstruction (w : Streams.Writer);
+		PROCEDURE PrintInstruction*(w : Streams.Writer);
 		VAR str : ARRAY 20 OF CHAR; writeCondition, writeLSMAddrMode : BOOLEAN;
 		VAR str : ARRAY 20 OF CHAR; writeCondition, writeLSMAddrMode : BOOLEAN;
 		BEGIN
 		BEGIN
 			writeCondition := TRUE; writeLSMAddrMode := FALSE;
 			writeCondition := TRUE; writeLSMAddrMode := FALSE;
@@ -362,7 +362,7 @@ TYPE
 			w.String(str)
 			w.String(str)
 		END PrintLSMAddrMode;
 		END PrintLSMAddrMode;
 
 
-		PROCEDURE PrintArguments (w : Streams.Writer);
+		PROCEDURE PrintArguments*(w : Streams.Writer);
 		BEGIN
 		BEGIN
 			(* KernelLog.String("*argStructure = "); KernelLog.Int(argStructure, 0); KernelLog.String(", instr = "); KernelLog.Int(instr, 0); KernelLog.Ln; *)
 			(* KernelLog.String("*argStructure = "); KernelLog.Int(argStructure, 0); KernelLog.String(", instr = "); KernelLog.Int(instr, 0); KernelLog.Ln; *)
 			CASE argStructure OF
 			CASE argStructure OF
@@ -536,7 +536,7 @@ TYPE
 	VAR
 	VAR
 		bit24To27, bit20To23, bit16To19, bit12To15, bit8To11, bit4To7, bit0To3 : LONGINT;
 		bit24To27, bit20To23, bit16To19, bit12To15, bit8To11, bit4To7, bit0To3 : LONGINT;
 
 
-		PROCEDURE NewOpcode() : Decoder.Opcode;
+		PROCEDURE NewOpcode*() : Decoder.Opcode;
 		VAR
 		VAR
 			opcode : ARMOpcode;
 			opcode : ARMOpcode;
 		BEGIN
 		BEGIN
@@ -544,7 +544,7 @@ TYPE
 			RETURN opcode
 			RETURN opcode
 		END NewOpcode;
 		END NewOpcode;
 
 
-		PROCEDURE DecodeThis(opcode : Decoder.Opcode);
+		PROCEDURE DecodeThis*(opcode : Decoder.Opcode);
 		VAR
 		VAR
 			armOpcode : ARMOpcode;
 			armOpcode : ARMOpcode;
 			opSet : SET;
 			opSet : SET;

+ 1 - 1
source/ActiveCellsRunner.mod

@@ -255,7 +255,7 @@ type
 	(* generic context object that can be used by implementers of the active cells runtime *)
 	(* generic context object that can be used by implementers of the active cells runtime *)
 	Context*= object (ActiveCellsRuntime.Context)
 	Context*= object (ActiveCellsRuntime.Context)
 
 
-		procedure Allocate(scope: any; var c: any; t: Modules.TypeDesc; const name: array of char; isCellnet, isEngine: boolean);
+		procedure Allocate*(scope: any; var c: any; t: Modules.TypeDesc; const name: array of char; isCellnet, isEngine: boolean);
 		var cel: Cell;
 		var cel: Cell;
 		begin
 		begin
 			if res # 0 then return; end; (*! do not do anything in case of an error *)
 			if res # 0 then return; end; (*! do not do anything in case of an error *)

+ 3 - 3
source/ArrayXdCplx.Mod

@@ -33,17 +33,17 @@ TYPE
 	VAR data-: Array1;   (*! will probably be removed, do not use ! *)
 	VAR data-: Array1;   (*! will probably be removed, do not use ! *)
 
 
 		(** override *)
 		(** override *)
-		PROCEDURE Allocate( size: LONGINT;  VAR adr: Index;  VAR ptr: ANY );
+		PROCEDURE Allocate*( size: LONGINT;  VAR adr: Index;  VAR ptr: ANY );
 		BEGIN
 		BEGIN
 			NEW( data, size );  adr := ADDRESSOF( data[0] );  ptr := data;
 			NEW( data, size );  adr := ADDRESSOF( data[0] );  ptr := data;
 		END Allocate;
 		END Allocate;
 
 
-		PROCEDURE GetInfo( VAR elementsize: Index );
+		PROCEDURE GetInfo*( VAR elementsize: Index );
 		BEGIN
 		BEGIN
 			elementsize := SIZEOF( Value );
 			elementsize := SIZEOF( Value );
 		END GetInfo;
 		END GetInfo;
 
 
-		PROCEDURE AlikeX( ): ArrayXdBytes.Array;
+		PROCEDURE AlikeX*( ): ArrayXdBytes.Array;
 		VAR copy: Array;
 		VAR copy: Array;
 		BEGIN
 		BEGIN
 			NEW( copy, origin, len );  RETURN copy;
 			NEW( copy, origin, len );  RETURN copy;

+ 3 - 3
source/ArrayXdInt.Mod

@@ -36,17 +36,17 @@ TYPE
 	VAR data-: Array1;   (*! will probably be removed, do not use ! *)
 	VAR data-: Array1;   (*! will probably be removed, do not use ! *)
 
 
 		(** override *)
 		(** override *)
-		PROCEDURE Allocate( size: LONGINT;  VAR adr: Index;  VAR ptr: ANY );
+		PROCEDURE Allocate*( size: LONGINT;  VAR adr: Index;  VAR ptr: ANY );
 		BEGIN
 		BEGIN
 			NEW( data, size );  adr := ADDRESSOF( data[0] );  ptr := data;
 			NEW( data, size );  adr := ADDRESSOF( data[0] );  ptr := data;
 		END Allocate;
 		END Allocate;
 
 
-		PROCEDURE GetInfo( VAR elementsize: Index );
+		PROCEDURE GetInfo*( VAR elementsize: Index );
 		BEGIN
 		BEGIN
 			elementsize := SIZEOF( Value );
 			elementsize := SIZEOF( Value );
 		END GetInfo;
 		END GetInfo;
 
 
-		PROCEDURE AlikeX( ): ArrayXdBytes.Array;
+		PROCEDURE AlikeX*( ): ArrayXdBytes.Array;
 		VAR copy: Array;
 		VAR copy: Array;
 		BEGIN
 		BEGIN
 			NEW( copy, origin, len );  RETURN copy;
 			NEW( copy, origin, len );  RETURN copy;

+ 3 - 3
source/ArrayXdRat.Mod

@@ -33,17 +33,17 @@ TYPE
 	VAR data-: Array1;   (*! will probably be removed, do not use ! *)
 	VAR data-: Array1;   (*! will probably be removed, do not use ! *)
 
 
 		(** override *)
 		(** override *)
-		PROCEDURE Allocate( size: LONGINT;  VAR adr: Index;  VAR ptr: ANY );
+		PROCEDURE Allocate*( size: LONGINT;  VAR adr: Index;  VAR ptr: ANY );
 		BEGIN
 		BEGIN
 			NEW( data, size );  adr := ADDRESSOF( data[0] );  ptr := data;
 			NEW( data, size );  adr := ADDRESSOF( data[0] );  ptr := data;
 		END Allocate;
 		END Allocate;
 
 
-		PROCEDURE GetInfo( VAR elementsize: Index );
+		PROCEDURE GetInfo*( VAR elementsize: Index );
 		BEGIN
 		BEGIN
 			elementsize := SIZEOF( Value );
 			elementsize := SIZEOF( Value );
 		END GetInfo;
 		END GetInfo;
 
 
-		PROCEDURE AlikeX( ): ArrayXdBytes.Array;
+		PROCEDURE AlikeX*( ): ArrayXdBytes.Array;
 		VAR copy: Array;
 		VAR copy: Array;
 		BEGIN
 		BEGIN
 			NEW( copy, origin, len );  RETURN copy;
 			NEW( copy, origin, len );  RETURN copy;

+ 3 - 3
source/ArrayXdRe.Mod

@@ -33,17 +33,17 @@ TYPE
 	VAR data-: Array1;   (*! will probably be removed, do not use ! *)
 	VAR data-: Array1;   (*! will probably be removed, do not use ! *)
 
 
 		(** override *)
 		(** override *)
-		PROCEDURE Allocate( size: LONGINT;  VAR adr: Index;  VAR ptr: ANY );
+		PROCEDURE Allocate*( size: LONGINT;  VAR adr: Index;  VAR ptr: ANY );
 		BEGIN
 		BEGIN
 			NEW( data, size );  adr := ADDRESSOF( data[0] );  ptr := data;
 			NEW( data, size );  adr := ADDRESSOF( data[0] );  ptr := data;
 		END Allocate;
 		END Allocate;
 
 
-		PROCEDURE GetInfo( VAR elementsize: Index );
+		PROCEDURE GetInfo*( VAR elementsize: Index );
 		BEGIN
 		BEGIN
 			elementsize := SIZEOF( Value );
 			elementsize := SIZEOF( Value );
 		END GetInfo;
 		END GetInfo;
 
 
-		PROCEDURE AlikeX( ): ArrayXdBytes.Array;
+		PROCEDURE AlikeX*( ): ArrayXdBytes.Array;
 		VAR copy: Array;
 		VAR copy: Array;
 		BEGIN
 		BEGIN
 			NEW( copy, origin, len );  RETURN copy;
 			NEW( copy, origin, len );  RETURN copy;

+ 2 - 2
source/BimboMail.Mod

@@ -126,13 +126,13 @@ TYPE
 			END
 			END
 		END GetTitleStr;
 		END GetTitleStr;
 
 
-		PROCEDURE Close;
+		PROCEDURE Close*;
 		BEGIN
 		BEGIN
 			Close^;
 			Close^;
 			DecCount
 			DecCount
 		END Close;
 		END Close;
 
 
-		PROCEDURE Handle(VAR x: WMMessages.Message);
+		PROCEDURE Handle*(VAR x: WMMessages.Message);
 		BEGIN
 		BEGIN
 			IF (x.msgType = WMMessages.MsgExt) & (x.ext # NIL) & (x.ext IS KillerMsg) THEN Close
 			IF (x.msgType = WMMessages.MsgExt) & (x.ext # NIL) & (x.ext IS KillerMsg) THEN Close
 			ELSE Handle^(x)
 			ELSE Handle^(x)

+ 2 - 2
source/Bimso.Mod

@@ -95,13 +95,13 @@ TYPE
 			SetTitle(Strings.NewString("Bimso Game"));
 			SetTitle(Strings.NewString("Bimso Game"));
 		END New;
 		END New;
 
 
-		PROCEDURE Close;
+		PROCEDURE Close*;
 		BEGIN
 		BEGIN
 			Close^;
 			Close^;
 			DecCount
 			DecCount
 		END Close;
 		END Close;
 
 
-		PROCEDURE Handle(VAR x : WMMessages.Message);
+		PROCEDURE Handle*(VAR x : WMMessages.Message);
 		BEGIN
 		BEGIN
 			IF (x.msgType = WMMessages.MsgExt) & (x.ext # NIL) & (x.ext IS KillerMsg) THEN Close
 			IF (x.msgType = WMMessages.MsgExt) & (x.ext # NIL) & (x.ext IS KillerMsg) THEN Close
 			ELSE Handle^(x)
 			ELSE Handle^(x)

+ 1 - 1
source/BootShell.Mod

@@ -465,7 +465,7 @@ TYPE
 			Inputs.keyboard.Register(SELF);
 			Inputs.keyboard.Register(SELF);
 		END Init;
 		END Init;
 
 
-		PROCEDURE Handle(VAR msg: Inputs.Message);
+		PROCEDURE Handle*(VAR msg: Inputs.Message);
 		BEGIN
 		BEGIN
 			IF (msg IS Inputs.KeyboardMsg) & (msg(Inputs.KeyboardMsg).flags * {Inputs.Release} = {}) THEN
 			IF (msg IS Inputs.KeyboardMsg) & (msg(Inputs.KeyboardMsg).flags * {Inputs.Release} = {}) THEN
 				WITH msg:Inputs.KeyboardMsg DO
 				WITH msg:Inputs.KeyboardMsg DO

+ 5 - 5
source/CSS2Properties.Mod

@@ -327,12 +327,12 @@ TYPE
 			ppi := 91.44
 			ppi := 91.44
 		END Init;
 		END Init;
 
 
-		PROCEDURE SetParent(parent: AllMediaProperties);
+		PROCEDURE SetParent*(parent: AllMediaProperties);
 		BEGIN
 		BEGIN
 			IF parent IS VisualProperties THEN SetParent^(parent) END
 			IF parent IS VisualProperties THEN SetParent^(parent) END
 		END SetParent;
 		END SetParent;
 
 
-		PROCEDURE GetValue(name: ARRAY OF CHAR): CSS2.Declaration;
+		PROCEDURE GetValue*(name: ARRAY OF CHAR): CSS2.Declaration;
 		VAR declaration: CSS2.Declaration; term1: CSS2.Term;
 		VAR declaration: CSS2.Declaration; term1: CSS2.Term;
 		BEGIN
 		BEGIN
 			NEW(declaration); declaration.SetProperty(name);
 			NEW(declaration); declaration.SetProperty(name);
@@ -578,7 +578,7 @@ TYPE
 			RETURN declaration
 			RETURN declaration
 		END GetValue;
 		END GetValue;
 
 
-		PROCEDURE SetValue(declaration: CSS2.Declaration);
+		PROCEDURE SetValue*(declaration: CSS2.Declaration);
 		VAR s: String; terms: XMLObjects.Enumerator; c: ANY;
 		VAR s: String; terms: XMLObjects.Enumerator; c: ANY;
 			term1, term2, term3, term4, term5, term6: CSS2.Term; i: LONGINT; imgTerm: ImgTerm;
 			term1, term2, term3, term4, term5, term6: CSS2.Term; i: LONGINT; imgTerm: ImgTerm;
 		BEGIN
 		BEGIN
@@ -1367,7 +1367,7 @@ TYPE
 			END
 			END
 		END SetValue;
 		END SetValue;
 
 
-		PROCEDURE Initialize;
+		PROCEDURE Initialize*;
 		BEGIN
 		BEGIN
 			Initialize^();
 			Initialize^();
 			backgroundAttachment.computed := TRUE;
 			backgroundAttachment.computed := TRUE;
@@ -1481,7 +1481,7 @@ TYPE
 			zIndex.computed := -1; zIndex.specified := NIL
 			zIndex.computed := -1; zIndex.specified := NIL
 		END Initialize;
 		END Initialize;
 
 
-		PROCEDURE ComputeValues;
+		PROCEDURE ComputeValues*;
 		VAR terms: XMLObjects.Enumerator; term: ANY;
 		VAR terms: XMLObjects.Enumerator; term: ANY;
 		BEGIN
 		BEGIN
 			ComputeValues^();
 			ComputeValues^();

+ 3 - 3
source/CalcGauss.Mod

@@ -37,7 +37,7 @@ TYPE
 			a := 0;  b := 0;  error := 0
 			a := 0;  b := 0;  error := 0
 		END Initialize;
 		END Initialize;
 
 
-		PROCEDURE Copy( VAR copy: Data.Datum );
+		PROCEDURE Copy*( VAR copy: Data.Datum );
 		VAR new, obj: Interval;
 		VAR new, obj: Interval;
 		BEGIN
 		BEGIN
 			(* Create object copy. *)
 			(* Create object copy. *)
@@ -64,7 +64,7 @@ TYPE
 			soln := 0
 			soln := 0
 		END Initialize;
 		END Initialize;
 
 
-		PROCEDURE Copy( VAR copy: Data.Datum );
+		PROCEDURE Copy*( VAR copy: Data.Datum );
 		VAR new, obj: ReInterval;
 		VAR new, obj: ReInterval;
 		BEGIN
 		BEGIN
 			(* Create object copy. *)
 			(* Create object copy. *)
@@ -91,7 +91,7 @@ TYPE
 			soln := 0
 			soln := 0
 		END Initialize;
 		END Initialize;
 
 
-		PROCEDURE Copy( VAR copy: Data.Datum );
+		PROCEDURE Copy*( VAR copy: Data.Datum );
 		VAR new, obj: CplxInterval;
 		VAR new, obj: CplxInterval;
 		BEGIN
 		BEGIN
 			(* Create object copy. *)
 			(* Create object copy. *)

+ 1 - 1
source/CharacterLineup.Mod

@@ -320,7 +320,7 @@ TYPE
 			END;
 			END;
 		END PaintCharacter;
 		END PaintCharacter;
 
 
-		PROCEDURE Close;
+		PROCEDURE Close*;
 		BEGIN
 		BEGIN
 			Close^;
 			Close^;
 			winstance := NIL
 			winstance := NIL

+ 3 - 3
source/Commands.Mod

@@ -76,15 +76,15 @@ TYPE
 			res:=in.res
 			res:=in.res
 		END Receiver;
 		END Receiver;
 
 
-		PROCEDURE CanSetPos(): BOOLEAN;
+		PROCEDURE CanSetPos*(): BOOLEAN;
 		BEGIN RETURN in.CanSetPos()
 		BEGIN RETURN in.CanSetPos()
 		END CanSetPos;
 		END CanSetPos;
 
 
-		PROCEDURE SetPos(pos: LONGINT);
+		PROCEDURE SetPos*(pos: LONGINT);
 		BEGIN Reset; pos0 := pos; in.SetPos(pos)
 		BEGIN Reset; pos0 := pos; in.SetPos(pos)
 		END SetPos;
 		END SetPos;
 
 
-		PROCEDURE Pos(): LONGINT;
+		PROCEDURE Pos*(): LONGINT;
 		BEGIN RETURN Pos^()+pos0;
 		BEGIN RETURN Pos^()+pos0;
 		END Pos;
 		END Pos;
 
 

+ 5 - 5
source/ComponentViewer.Mod

@@ -40,13 +40,13 @@ TYPE
 			Init(width, height, alpha);
 			Init(width, height, alpha);
 		END InitWindow;
 		END InitWindow;
 
 
-		PROCEDURE Close;
+		PROCEDURE Close*;
 		BEGIN
 		BEGIN
 			Close^;
 			Close^;
 			DecCount
 			DecCount
 		END Close;
 		END Close;
 
 
-		PROCEDURE Handle(VAR m : WMMessages.Message);
+		PROCEDURE Handle*(VAR m : WMMessages.Message);
 		VAR data: XML.Element;
 		VAR data: XML.Element;
 		BEGIN
 		BEGIN
 			IF (m.msgType = WMMessages.MsgExt) & (m.ext # NIL) THEN
 			IF (m.msgType = WMMessages.MsgExt) & (m.ext # NIL) THEN
@@ -60,7 +60,7 @@ TYPE
 			END;
 			END;
 		END Handle;
 		END Handle;
 		
 		
-		PROCEDURE PointerDown(x, y:LONGINT; keys:SET);
+		PROCEDURE PointerDown*(x, y:LONGINT; keys:SET);
 		BEGIN
 		BEGIN
 			lastX := bounds.l + x; lastY:=bounds.t + y;
 			lastX := bounds.l + x; lastY:=bounds.t + y;
 			IF (keys = {0}) & (FlagMoveable IN flags) THEN
 			IF (keys = {0}) & (FlagMoveable IN flags) THEN
@@ -71,7 +71,7 @@ TYPE
 			END;
 			END;
 		END PointerDown;
 		END PointerDown;
 
 
-		PROCEDURE PointerMove(x,y:LONGINT; keys:SET);
+		PROCEDURE PointerMove*(x,y:LONGINT; keys:SET);
 		VAR dx, dy, width, height : LONGINT;
 		VAR dx, dy, width, height : LONGINT;
 		BEGIN
 		BEGIN
 			IF dragging THEN
 			IF dragging THEN
@@ -83,7 +83,7 @@ TYPE
 			END;
 			END;
 		END PointerMove;
 		END PointerMove;
 
 
-		PROCEDURE PointerUp(x, y:LONGINT; keys:SET);
+		PROCEDURE PointerUp*(x, y:LONGINT; keys:SET);
 		BEGIN
 		BEGIN
 			dragging := FALSE;
 			dragging := FALSE;
 			PointerDown^(x,y,keys);
 			PointerDown^(x,y,keys);

+ 3 - 3
source/CubeCplx.Mod

@@ -22,19 +22,19 @@ TYPE
 		Get-: PROCEDURE {DELEGATE} ( x, y, z: Index ): Value;
 		Get-: PROCEDURE {DELEGATE} ( x, y, z: Index ): Value;
 
 
 		(* override *)
 		(* override *)
-		PROCEDURE AlikeX( ): ArrayXdBytes.Array;
+		PROCEDURE AlikeX*( ): ArrayXdBytes.Array;
 		VAR copy: Cube;
 		VAR copy: Cube;
 		BEGIN
 		BEGIN
 			NEW( copy, origin[0], len[0], origin[1], len[1], origin[2], len[2] );  RETURN copy;
 			NEW( copy, origin[0], len[0], origin[1], len[1], origin[2], len[2] );  RETURN copy;
 		END AlikeX;
 		END AlikeX;
 
 
-		PROCEDURE NewRangeX( neworigin, newlen:ArrayXdBytes.IndexArray;  copydata: BOOLEAN );
+		PROCEDURE NewRangeX*( neworigin, newlen:ArrayXdBytes.IndexArray;  copydata: BOOLEAN );
 		BEGIN
 		BEGIN
 			IF LEN( newlen ) # 3 THEN HALT( 1001 ) END;
 			IF LEN( newlen ) # 3 THEN HALT( 1001 ) END;
 			NewRangeX^( neworigin, newlen, copydata );
 			NewRangeX^( neworigin, newlen, copydata );
 		END NewRangeX;
 		END NewRangeX;
 
 
-		PROCEDURE ValidateCache;
+		PROCEDURE ValidateCache*;
 		BEGIN
 		BEGIN
 			ValidateCache^;
 			ValidateCache^;
 			IF dim # 3 THEN HALT( 100 ) END;
 			IF dim # 3 THEN HALT( 100 ) END;

+ 3 - 3
source/CubeInt.Mod

@@ -20,19 +20,19 @@ TYPE
 		Get-: PROCEDURE {DELEGATE} ( x, y, z: Index ): Value;
 		Get-: PROCEDURE {DELEGATE} ( x, y, z: Index ): Value;
 
 
 		(* override *)
 		(* override *)
-		PROCEDURE AlikeX( ): ArrayXdBytes.Array;
+		PROCEDURE AlikeX*( ): ArrayXdBytes.Array;
 		VAR copy: Cube;
 		VAR copy: Cube;
 		BEGIN
 		BEGIN
 			NEW( copy, origin[0], len[0], origin[1], len[1], origin[2], len[2] );  RETURN copy;
 			NEW( copy, origin[0], len[0], origin[1], len[1], origin[2], len[2] );  RETURN copy;
 		END AlikeX;
 		END AlikeX;
 
 
-		PROCEDURE NewRangeX( neworigin, newlen: ArrayXdBytes.IndexArray; copydata: BOOLEAN );
+		PROCEDURE NewRangeX*( neworigin, newlen: ArrayXdBytes.IndexArray; copydata: BOOLEAN );
 		BEGIN
 		BEGIN
 			IF LEN( newlen ) # 3 THEN HALT( 1001 ) END;
 			IF LEN( newlen ) # 3 THEN HALT( 1001 ) END;
 			NewRangeX^( neworigin, newlen, copydata );
 			NewRangeX^( neworigin, newlen, copydata );
 		END NewRangeX;
 		END NewRangeX;
 
 
-		PROCEDURE ValidateCache;
+		PROCEDURE ValidateCache*;
 		BEGIN
 		BEGIN
 			ValidateCache^;
 			ValidateCache^;
 			IF dim # 3 THEN HALT( 100 ) END;
 			IF dim # 3 THEN HALT( 100 ) END;

+ 3 - 3
source/CubeRat.Mod

@@ -20,19 +20,19 @@ TYPE
 		Get-: PROCEDURE {DELEGATE} ( x, y, z: Index ): Value;
 		Get-: PROCEDURE {DELEGATE} ( x, y, z: Index ): Value;
 
 
 		(* override *)
 		(* override *)
-		PROCEDURE AlikeX( ): ArrayXdBytes.Array;
+		PROCEDURE AlikeX*( ): ArrayXdBytes.Array;
 		VAR copy: Cube;
 		VAR copy: Cube;
 		BEGIN
 		BEGIN
 			NEW( copy, origin[0], len[0], origin[1], len[1], origin[2], len[2] );  RETURN copy;
 			NEW( copy, origin[0], len[0], origin[1], len[1], origin[2], len[2] );  RETURN copy;
 		END AlikeX;
 		END AlikeX;
 
 
-		PROCEDURE NewRangeX( neworigin, newlen: ArrayXdBytes.IndexArray;  copydata: BOOLEAN );
+		PROCEDURE NewRangeX*( neworigin, newlen: ArrayXdBytes.IndexArray;  copydata: BOOLEAN );
 		BEGIN
 		BEGIN
 			IF LEN( newlen ) # 3 THEN HALT( 1001 ) END;
 			IF LEN( newlen ) # 3 THEN HALT( 1001 ) END;
 			NewRangeX^( neworigin, newlen, copydata );
 			NewRangeX^( neworigin, newlen, copydata );
 		END NewRangeX;
 		END NewRangeX;
 
 
-		PROCEDURE ValidateCache;
+		PROCEDURE ValidateCache*;
 		BEGIN
 		BEGIN
 			ValidateCache^;
 			ValidateCache^;
 			IF dim # 3 THEN HALT( 100 ) END;
 			IF dim # 3 THEN HALT( 100 ) END;

+ 3 - 3
source/CubeRe.Mod

@@ -21,19 +21,19 @@ TYPE
 		Get-: PROCEDURE {DELEGATE} ( x, y, z: Index ): Value;
 		Get-: PROCEDURE {DELEGATE} ( x, y, z: Index ): Value;
 
 
 		(* override *)
 		(* override *)
-		PROCEDURE AlikeX( ): ArrayXdBytes.Array;
+		PROCEDURE AlikeX*( ): ArrayXdBytes.Array;
 		VAR copy: Cube;
 		VAR copy: Cube;
 		BEGIN
 		BEGIN
 			NEW( copy, origin[0], len[0], origin[1], len[1], origin[2], len[2] );  RETURN copy;
 			NEW( copy, origin[0], len[0], origin[1], len[1], origin[2], len[2] );  RETURN copy;
 		END AlikeX;
 		END AlikeX;
 
 
-		PROCEDURE NewRangeX( neworigin, newlen:ArrayXdBytes.IndexArray;  copydata: BOOLEAN );
+		PROCEDURE NewRangeX*( neworigin, newlen:ArrayXdBytes.IndexArray;  copydata: BOOLEAN );
 		BEGIN
 		BEGIN
 			IF LEN( newlen ) # 3 THEN HALT( 1001 ) END;
 			IF LEN( newlen ) # 3 THEN HALT( 1001 ) END;
 			NewRangeX^( neworigin, newlen, copydata );
 			NewRangeX^( neworigin, newlen, copydata );
 		END NewRangeX;
 		END NewRangeX;
 
 
-		PROCEDURE ValidateCache;
+		PROCEDURE ValidateCache*;
 		BEGIN
 		BEGIN
 			ValidateCache^;
 			ValidateCache^;
 			IF dim # 3 THEN HALT( 100 ) END;
 			IF dim # 3 THEN HALT( 100 ) END;

+ 1 - 1
source/CyberbitNetInstall.Mod

@@ -198,7 +198,7 @@ TYPE
 		bevelWidth* : LONGINT;
 		bevelWidth* : LONGINT;
 		bevelColor* : LONGINT;
 		bevelColor* : LONGINT;
 
 
-		PROCEDURE DrawBackground(canvas : WMGraphics.Canvas);
+		PROCEDURE DrawBackground*(canvas : WMGraphics.Canvas);
 		BEGIN
 		BEGIN
 			IF ~visible.Get() THEN RETURN END;
 			IF ~visible.Get() THEN RETURN END;
 			Acquire;
 			Acquire;

+ 1 - 1
source/DTPEditor.Mod

@@ -1865,7 +1865,7 @@ TYPE
 			UpdatePageNumber;
 			UpdatePageNumber;
 		END SetMasterHandler;
 		END SetMasterHandler;
 
 
-		PROCEDURE Close;
+		PROCEDURE Close*;
 		BEGIN
 		BEGIN
 			Close^;
 			Close^;
 			drawPanel.CloseContentProps;
 			drawPanel.CloseContentProps;

+ 2 - 2
source/DTPImage.Mod

@@ -112,7 +112,7 @@ TYPE
 			END;
 			END;
 		END OnCreate;
 		END OnCreate;
 
 
-		PROCEDURE Redraw;
+		PROCEDURE Redraw*;
 		BEGIN
 		BEGIN
 			Redraw^;
 			Redraw^;
 		END Redraw;
 		END Redraw;
@@ -227,7 +227,7 @@ TYPE
 
 
 		END SetValueHandler;
 		END SetValueHandler;
 
 
-		PROCEDURE Close;
+		PROCEDURE Close*;
 		BEGIN
 		BEGIN
 			shown := FALSE;
 			shown := FALSE;
 			Hide;
 			Hide;

+ 2 - 2
source/DTPRect.Mod

@@ -78,7 +78,7 @@ TYPE
 
 
 		END Draw;
 		END Draw;
 
 
-		PROCEDURE Redraw;
+		PROCEDURE Redraw*;
 		BEGIN
 		BEGIN
 			Redraw^;
 			Redraw^;
 		END Redraw;
 		END Redraw;
@@ -486,7 +486,7 @@ TYPE
 			RefreshValues;
 			RefreshValues;
 		END SetValueHandler;
 		END SetValueHandler;
 
 
-		PROCEDURE Close;
+		PROCEDURE Close*;
 		BEGIN
 		BEGIN
 			shown := FALSE;
 			shown := FALSE;
 			Hide;
 			Hide;

+ 4 - 4
source/DTPText.Mod

@@ -620,7 +620,7 @@ TYPE
 			layout.FullLayout(firstPos, firstLineI); CheckNumberOfLines;
 			layout.FullLayout(firstPos, firstLineI); CheckNumberOfLines;
 		END BordersChanged;
 		END BordersChanged;
 
 
-		PROCEDURE SetSize(w, h: LONGINT);
+		PROCEDURE SetSize*(w, h: LONGINT);
 		VAR obj: TextObject;
 		VAR obj: TextObject;
 		BEGIN
 		BEGIN
 			SetSize^(w, h);
 			SetSize^(w, h);
@@ -637,7 +637,7 @@ TYPE
 			END;
 			END;
 		END SetSize;
 		END SetSize;
 
 
-		PROCEDURE Resize(zoom : REAL);
+		PROCEDURE Resize*(zoom : REAL);
 		BEGIN
 		BEGIN
 			Resize^(zoom);
 			Resize^(zoom);
 			(* layout.FullLayout; CheckNumberOfLines; *)
 			(* layout.FullLayout; CheckNumberOfLines; *)
@@ -2368,7 +2368,7 @@ TYPE
 			canvas.RestoreState(canvasState);
 			canvas.RestoreState(canvasState);
 *)		END Draw;
 *)		END Draw;
 
 
-		PROCEDURE Redraw;
+		PROCEDURE Redraw*;
 		BEGIN
 		BEGIN
 			Redraw^;
 			Redraw^;
 		END Redraw;
 		END Redraw;
@@ -3096,7 +3096,7 @@ TYPE
 			END;
 			END;
 		END InsertImg;
 		END InsertImg;
 
 
-		PROCEDURE Close;
+		PROCEDURE Close*;
 		BEGIN
 		BEGIN
 			shown := FALSE;
 			shown := FALSE;
 			Hide;
 			Hide;

+ 9 - 9
source/DTPUtilities.Mod

@@ -144,7 +144,7 @@ TYPE
 			manager.Remove(SELF); shown := FALSE;
 			manager.Remove(SELF); shown := FALSE;
 		END Hide;
 		END Hide;
 
 
-		PROCEDURE FocusLost;
+		PROCEDURE FocusLost*;
 		BEGIN
 		BEGIN
 			SetResult(1);
 			SetResult(1);
 		END FocusLost;
 		END FocusLost;
@@ -187,7 +187,7 @@ TYPE
 			theCaller := caller;
 			theCaller := caller;
 		END SetCaller;
 		END SetCaller;
 
 
-		PROCEDURE PointerDown(x, y : LONGINT; keys : SET);
+		PROCEDURE PointerDown*(x, y : LONGINT; keys : SET);
 		VAR r, g, b, a, i, j, cColor: LONGINT;
 		VAR r, g, b, a, i, j, cColor: LONGINT;
 		BEGIN
 		BEGIN
 			i := y DIV 10; j := x DIV 10;
 			i := y DIV 10; j := x DIV 10;
@@ -1665,7 +1665,7 @@ TYPE
 			checked := FALSE; hasThreeStates := FALSE; inactive := FALSE;
 			checked := FALSE; hasThreeStates := FALSE; inactive := FALSE;
 		END Init;
 		END Init;
 
 
-		PROCEDURE PointerDown(x, y: LONGINT; keys: SET);
+		PROCEDURE PointerDown*(x, y: LONGINT; keys: SET);
 		BEGIN
 		BEGIN
 			IF ~inactive THEN
 			IF ~inactive THEN
 				IF hasThreeStates THEN
 				IF hasThreeStates THEN
@@ -1682,7 +1682,7 @@ TYPE
 			Invalidate;
 			Invalidate;
 		END PointerDown;
 		END PointerDown;
 
 
-		PROCEDURE Draw(canvas: WMGraphics.Canvas);
+		PROCEDURE Draw*(canvas: WMGraphics.Canvas);
 		VAR rect: WMRectangles.Rectangle;
 		VAR rect: WMRectangles.Rectangle;
 		BEGIN
 		BEGIN
 			Draw^(canvas);
 			Draw^(canvas);
@@ -1763,7 +1763,7 @@ TYPE
 			isHorizontal := TRUE;
 			isHorizontal := TRUE;
 		END Init;
 		END Init;
 
 
-		PROCEDURE DrawBackground(canvas: WMGraphics.Canvas);
+		PROCEDURE DrawBackground*(canvas: WMGraphics.Canvas);
 		VAR rect: WMRectangles.Rectangle;
 		VAR rect: WMRectangles.Rectangle;
 			highlight, shadow, w, h, dist : LONGINT;
 			highlight, shadow, w, h, dist : LONGINT;
 		BEGIN
 		BEGIN
@@ -1820,7 +1820,7 @@ TYPE
 
 
 		END CreateComponent;
 		END CreateComponent;
 
 
-		PROCEDURE DrawBackground(canvas: WMGraphics.Canvas);
+		PROCEDURE DrawBackground*(canvas: WMGraphics.Canvas);
 		VAR rect: WMRectangles.Rectangle;
 		VAR rect: WMRectangles.Rectangle;
 			highlight, shadow, w, h : LONGINT;
 			highlight, shadow, w, h : LONGINT;
 
 
@@ -1917,7 +1917,7 @@ TYPE
 			RETURN border;
 			RETURN border;
 		END GetBorder;
 		END GetBorder;
 
 
-		PROCEDURE AddContent(content: XML.Content);
+		PROCEDURE AddContent*(content: XML.Content);
 		BEGIN
 		BEGIN
 			centerContent.AddContent(content);
 			centerContent.AddContent(content);
 		END AddContent;
 		END AddContent;
@@ -2010,12 +2010,12 @@ TYPE
 			RETURN border;
 			RETURN border;
 		END GetBorder;
 		END GetBorder;
 
 
-		PROCEDURE AddContent(content: XML.Content);
+		PROCEDURE AddContent*(content: XML.Content);
 		BEGIN
 		BEGIN
 			centerContent.AddContent(content);
 			centerContent.AddContent(content);
 		END AddContent;
 		END AddContent;
 
 
-		PROCEDURE Draw(canvas: WMGraphics.Canvas);
+		PROCEDURE Draw*(canvas: WMGraphics.Canvas);
 		VAR rect, rect1, rect2: WMRectangles.Rectangle;
 		VAR rect, rect1, rect2: WMRectangles.Rectangle;
 			color, mode: LONGINT;
 			color, mode: LONGINT;
 		BEGIN
 		BEGIN

+ 7 - 7
source/DTPView.Mod

@@ -158,7 +158,7 @@ TYPE
 			render := state;
 			render := state;
 		END Render;
 		END Render;
 
 
-		PROCEDURE RecacheProperties;
+		PROCEDURE RecacheProperties*;
 		BEGIN
 		BEGIN
 			RecacheProperties^;
 			RecacheProperties^;
 			Invalidate;
 			Invalidate;
@@ -459,7 +459,7 @@ TYPE
 			gridDivision := gDiv;
 			gridDivision := gDiv;
 		END SetGrid;
 		END SetGrid;
 
 
-		PROCEDURE WheelMove(dz: LONGINT);
+		PROCEDURE WheelMove*(dz: LONGINT);
 		BEGIN
 		BEGIN
 			IF ~previewMode THEN
 			IF ~previewMode THEN
 				IF wheelMode = 0 THEN								(* wheel zoom *)
 				IF wheelMode = 0 THEN								(* wheel zoom *)
@@ -477,7 +477,7 @@ TYPE
 			END;
 			END;
 		END WheelMove;
 		END WheelMove;
 
 
-		PROCEDURE PointerDown(x, y : LONGINT; keys : SET);
+		PROCEDURE PointerDown*(x, y : LONGINT; keys : SET);
 		VAR
 		VAR
 (*			cpage: DTPData.PageObject;
 (*			cpage: DTPData.PageObject;
 			cframe: DTPData.FrameObject;
 			cframe: DTPData.FrameObject;
@@ -581,7 +581,7 @@ TYPE
 			END;
 			END;
 		END PointerDown;
 		END PointerDown;
 
 
-		PROCEDURE PointerMove(x, y : LONGINT; keys : SET);
+		PROCEDURE PointerMove*(x, y : LONGINT; keys : SET);
 		VAR
 		VAR
 (*			cpage: DTPData.PageObject;
 (*			cpage: DTPData.PageObject;
 			cframe: DTPData.FrameObject;
 			cframe: DTPData.FrameObject;
@@ -790,7 +790,7 @@ TYPE
 			END;
 			END;
 		END PointerMove;
 		END PointerMove;
 
 
-		PROCEDURE PointerUp(x, y : LONGINT; keys : SET);
+		PROCEDURE PointerUp*(x, y : LONGINT; keys : SET);
 		VAR string, tempString, tempString2: ARRAY 32 OF CHAR;
 		VAR string, tempString, tempString2: ARRAY 32 OF CHAR;
 			content, activeContent: DTPData.ContentObject;
 			content, activeContent: DTPData.ContentObject;
 			resguide: DTPData.GuideObject;
 			resguide: DTPData.GuideObject;
@@ -966,7 +966,7 @@ TYPE
 			END;
 			END;
 		END PointerUp;
 		END PointerUp;
 
 
-		PROCEDURE KeyEvent(ucs: LONGINT; flags: SET; VAR keySym: LONGINT);
+		PROCEDURE KeyEvent*(ucs: LONGINT; flags: SET; VAR keySym: LONGINT);
 		VAR
 		VAR
 (*			cpage: DTPData.PageObject;
 (*			cpage: DTPData.PageObject;
 			cframe: DTPData.FrameObject;
 			cframe: DTPData.FrameObject;
@@ -2300,7 +2300,7 @@ TYPE
 			theCaller.Invalidate;
 			theCaller.Invalidate;
 		END SetValueHandler;
 		END SetValueHandler;
 
 
-		PROCEDURE Close;
+		PROCEDURE Close*;
 		BEGIN
 		BEGIN
 			theCaller.propertyOpen := FALSE;
 			theCaller.propertyOpen := FALSE;
 			Hide;
 			Hide;

+ 1 - 1
source/DebugLog.Mod

@@ -52,7 +52,7 @@ TYPE
 			open := TRUE
 			open := TRUE
 		END New;
 		END New;
 
 
-		PROCEDURE Close;
+		PROCEDURE Close*;
 		BEGIN
 		BEGIN
 			open := FALSE;
 			open := FALSE;
 			Close^
 			Close^

+ 2 - 2
source/Decoder.Mod

@@ -1816,7 +1816,7 @@ TYPE
 			END
 			END
 		END DecodeBytesHandler;
 		END DecodeBytesHandler;
 
 
-		PROCEDURE Handle(VAR x: WMMessages.Message);
+		PROCEDURE Handle*(VAR x: WMMessages.Message);
 		BEGIN
 		BEGIN
 			IF (x.msgType = WMMessages.MsgExt) & (x.ext # NIL) & (x.ext IS KillerMsg) THEN Close
 			IF (x.msgType = WMMessages.MsgExt) & (x.ext # NIL) & (x.ext IS KillerMsg) THEN Close
 			ELSE Handle^(x)
 			ELSE Handle^(x)
@@ -1837,7 +1837,7 @@ TYPE
 			END
 			END
 		END OutlinePC;
 		END OutlinePC;
 
 
-		PROCEDURE Close;
+		PROCEDURE Close*;
 		BEGIN
 		BEGIN
 			Close^;
 			Close^;
 			BEGIN {EXCLUSIVE}
 			BEGIN {EXCLUSIVE}

+ 19 - 19
source/DiskFS.Mod

@@ -552,7 +552,7 @@ TYPE
 		BEGIN NEW(finalizeFiles); NEW(openFiles); NEW(tempRegFileSec)
 		BEGIN NEW(finalizeFiles); NEW(openFiles); NEW(tempRegFileSec)
 		END Init;
 		END Init;
 
 
-		PROCEDURE New0(name: ARRAY OF CHAR): Files.File;
+		PROCEDURE New0*(name: ARRAY OF CHAR): Files.File;
 		VAR i, res: LONGINT; f: File; buf: Buffer; head {UNTRACED}: POINTER {UNSAFE} TO FileHeader; namebuf: FileName;
 		VAR i, res: LONGINT; f: File; buf: Buffer; head {UNTRACED}: POINTER {UNSAFE} TO FileHeader; namebuf: FileName;
 		BEGIN {EXCLUSIVE}
 		BEGIN {EXCLUSIVE}
 			f := NIL; Check(name, namebuf, res);
 			f := NIL; Check(name, namebuf, res);
@@ -575,7 +575,7 @@ TYPE
 			RETURN f
 			RETURN f
 		END New0;
 		END New0;
 
 
-		PROCEDURE Old0(name: ARRAY OF CHAR): Files.File;
+		PROCEDURE Old0*(name: ARRAY OF CHAR): Files.File;
 		VAR
 		VAR
 			i, k, res: LONGINT; f: File; header: DiskAdr; buf: Buffer; head {UNTRACED}: POINTER {UNSAFE} TO FileHeader;
 			i, k, res: LONGINT; f: File; header: DiskAdr; buf: Buffer; head {UNTRACED}: POINTER {UNSAFE} TO FileHeader;
 			namebuf: FileName; super: SuperIndex; sub: SubIndex; sec: IndexSector;
 			namebuf: FileName; super: SuperIndex; sub: SubIndex; sec: IndexSector;
@@ -615,7 +615,7 @@ TYPE
 			RETURN f
 			RETURN f
 		END Old0;
 		END Old0;
 
 
-		PROCEDURE Delete0(name: ARRAY OF CHAR; VAR key, res: LONGINT);
+		PROCEDURE Delete0*(name: ARRAY OF CHAR; VAR key, res: LONGINT);
 		VAR adr: DiskAdr; namebuf: FileName; head: FileHeader;
 		VAR adr: DiskAdr; namebuf: FileName; head: FileHeader;
 		BEGIN {EXCLUSIVE}
 		BEGIN {EXCLUSIVE}
 			Check(name, namebuf, res);
 			Check(name, namebuf, res);
@@ -638,7 +638,7 @@ TYPE
 			END
 			END
 		END Delete0;
 		END Delete0;
 
 
-		PROCEDURE Rename0(old, new: ARRAY OF CHAR; f: Files.File; VAR res: LONGINT);
+		PROCEDURE Rename0*(old, new: ARRAY OF CHAR; f: Files.File; VAR res: LONGINT);
 		VAR adr, newAdr: DiskAdr; oldbuf, newbuf: FileName;  head: FileHeader;
 		VAR adr, newAdr: DiskAdr; oldbuf, newbuf: FileName;  head: FileHeader;
 		BEGIN {EXCLUSIVE}
 		BEGIN {EXCLUSIVE}
 			Check(old, oldbuf, res);
 			Check(old, oldbuf, res);
@@ -665,13 +665,13 @@ TYPE
 			END
 			END
 		END Rename0;
 		END Rename0;
 
 
-		PROCEDURE Enumerate0(mask: ARRAY OF CHAR; flags: SET; enum: Files.Enumerator);
+		PROCEDURE Enumerate0*(mask: ARRAY OF CHAR; flags: SET; enum: Files.Enumerator);
 		VAR b: BOOLEAN; fh: FileHeader; fn: ARRAY Files.PrefixLength+FileNameLength OF CHAR;
 		VAR b: BOOLEAN; fh: FileHeader; fn: ARRAY Files.PrefixLength+FileNameLength OF CHAR;
 		BEGIN {EXCLUSIVE}
 		BEGIN {EXCLUSIVE}
 			b := TRUE; enumerate(SELF, mask, DirRootAdr, flags, enum, b, fh, fn)
 			b := TRUE; enumerate(SELF, mask, DirRootAdr, flags, enum, b, fh, fn)
 		END Enumerate0;
 		END Enumerate0;
 
 
-		PROCEDURE FileKey(name: ARRAY OF CHAR): LONGINT;
+		PROCEDURE FileKey*(name: ARRAY OF CHAR): LONGINT;
 			VAR res: LONGINT; namebuf: FileName; header: DiskAdr;
 			VAR res: LONGINT; namebuf: FileName; header: DiskAdr;
 		BEGIN {EXCLUSIVE}
 		BEGIN {EXCLUSIVE}
 			header := 0;
 			header := 0;
@@ -801,7 +801,7 @@ TYPE
 			END
 			END
 		END Close;
 		END Close;
 
 
-		PROCEDURE Finalize;
+		PROCEDURE Finalize*;
 		BEGIN {EXCLUSIVE}
 		BEGIN {EXCLUSIVE}
 			dir.Cleanup();
 			dir.Cleanup();
 			vol.Finalize;
 			vol.Finalize;
@@ -883,7 +883,7 @@ TYPE
 			ext: SuperIndex;
 			ext: SuperIndex;
 			sec: SectorTable;
 			sec: SectorTable;
 
 
-		PROCEDURE Set(VAR r: Files.Rider; pos: LONGINT);
+		PROCEDURE Set*(VAR r: Files.Rider; pos: LONGINT);
 		VAR a, b: LONGINT;
 		VAR a, b: LONGINT;
 		BEGIN {EXCLUSIVE}
 		BEGIN {EXCLUSIVE}
 			r.eof := FALSE; r.res := 0; r.file := SELF; r.fs := fs;
 			r.eof := FALSE; r.res := 0; r.file := SELF; r.fs := fs;
@@ -897,12 +897,12 @@ TYPE
 			r.apos := a; r.bpos := b; r.hint := firstbuf
 			r.apos := a; r.bpos := b; r.hint := firstbuf
 		END Set;
 		END Set;
 
 
-		PROCEDURE Pos(VAR r: Files.Rider): LONGINT;
+		PROCEDURE Pos*(VAR r: Files.Rider): LONGINT;
 		BEGIN
 		BEGIN
 			RETURN r.apos*SectorSize + r.bpos - HeaderSize
 			RETURN r.apos*SectorSize + r.bpos - HeaderSize
 		END Pos;
 		END Pos;
 
 
-		PROCEDURE Read(VAR r: Files.Rider; VAR x: CHAR);
+		PROCEDURE Read*(VAR r: Files.Rider; VAR x: CHAR);
 		VAR buf: Buffer;
 		VAR buf: Buffer;
 		BEGIN {EXCLUSIVE}
 		BEGIN {EXCLUSIVE}
 			buf := r.hint(Buffer);
 			buf := r.hint(Buffer);
@@ -926,7 +926,7 @@ TYPE
 			END
 			END
 		END Read;
 		END Read;
 
 
-		PROCEDURE ReadBytes(VAR r: Files.Rider; VAR x: ARRAY OF CHAR; ofs, len: LONGINT);
+		PROCEDURE ReadBytes*(VAR r: Files.Rider; VAR x: ARRAY OF CHAR; ofs, len: LONGINT);
 		VAR src: ADDRESS; m: LONGINT; buf: Buffer;
 		VAR src: ADDRESS; m: LONGINT; buf: Buffer;
 		BEGIN {EXCLUSIVE}
 		BEGIN {EXCLUSIVE}
 			IF LEN(x)-ofs < len THEN SYSTEM.HALT(19) END;
 			IF LEN(x)-ofs < len THEN SYSTEM.HALT(19) END;
@@ -964,7 +964,7 @@ TYPE
 			END
 			END
 		END ReadBytes;
 		END ReadBytes;
 
 
-		PROCEDURE Write(VAR r: Files.Rider; x: CHAR);
+		PROCEDURE Write*(VAR r: Files.Rider; x: CHAR);
 		VAR buf: Buffer;
 		VAR buf: Buffer;
 		BEGIN {EXCLUSIVE}
 		BEGIN {EXCLUSIVE}
 			buf := r.hint(Buffer);
 			buf := r.hint(Buffer);
@@ -991,7 +991,7 @@ TYPE
 			buf.data.B[r.bpos] := x; INC(r.bpos); buf.mod := TRUE
 			buf.data.B[r.bpos] := x; INC(r.bpos); buf.mod := TRUE
 		END Write;
 		END Write;
 
 
-		PROCEDURE WriteBytes(VAR r: Files.Rider; CONST x: ARRAY OF CHAR; ofs, len: LONGINT);
+		PROCEDURE WriteBytes*(VAR r: Files.Rider; CONST x: ARRAY OF CHAR; ofs, len: LONGINT);
 		VAR src, dst: ADDRESS; m: LONGINT; buf: Buffer;
 		VAR src, dst: ADDRESS; m: LONGINT; buf: Buffer;
 		BEGIN {EXCLUSIVE}
 		BEGIN {EXCLUSIVE}
 			IF LEN(x)-ofs < len THEN SYSTEM.HALT(19) END;
 			IF LEN(x)-ofs < len THEN SYSTEM.HALT(19) END;
@@ -1025,27 +1025,27 @@ TYPE
 			END
 			END
 		END WriteBytes;
 		END WriteBytes;
 
 
-		PROCEDURE Length(): LONGINT;
+		PROCEDURE Length*(): LONGINT;
 		BEGIN {EXCLUSIVE}
 		BEGIN {EXCLUSIVE}
 			RETURN aleng*SectorSize + bleng - HeaderSize
 			RETURN aleng*SectorSize + bleng - HeaderSize
 		END Length;
 		END Length;
 
 
-		PROCEDURE GetDate(VAR t, d: LONGINT);
+		PROCEDURE GetDate*(VAR t, d: LONGINT);
 		BEGIN {EXCLUSIVE}
 		BEGIN {EXCLUSIVE}
 			t := time; d := date
 			t := time; d := date
 		END GetDate;
 		END GetDate;
 
 
-		PROCEDURE SetDate(t, d: LONGINT);
+		PROCEDURE SetDate*(t, d: LONGINT);
 		BEGIN {EXCLUSIVE}
 		BEGIN {EXCLUSIVE}
 			modH := TRUE; time := t; date := d
 			modH := TRUE; time := t; date := d
 		END SetDate;
 		END SetDate;
 
 
-		PROCEDURE GetName(VAR name: ARRAY OF CHAR);
+		PROCEDURE GetName*(VAR name: ARRAY OF CHAR);
 		BEGIN {EXCLUSIVE}
 		BEGIN {EXCLUSIVE}
 			Files.JoinName(fs.prefix, SELF.name, name)
 			Files.JoinName(fs.prefix, SELF.name, name)
 		END GetName;
 		END GetName;
 
 
-		PROCEDURE Register0(VAR res: LONGINT);
+		PROCEDURE Register0*(VAR res: LONGINT);
 		VAR oldAdr: DiskAdr; fs0: FileSystem;
 		VAR oldAdr: DiskAdr; fs0: FileSystem;
 		BEGIN {EXCLUSIVE}
 		BEGIN {EXCLUSIVE}
 			Unbuffer(SELF);
 			Unbuffer(SELF);
@@ -1065,7 +1065,7 @@ TYPE
 			END
 			END
 		END Register0;
 		END Register0;
 
 
-		PROCEDURE Update;
+		PROCEDURE Update*;
 		BEGIN {EXCLUSIVE}
 		BEGIN {EXCLUSIVE}
 			Unbuffer(SELF)
 			Unbuffer(SELF)
 		END Update;
 		END Update;

+ 1 - 1
source/DiskTests.Mod

@@ -44,7 +44,7 @@ TYPE
 	(** Fills partition with test data *)
 	(** Fills partition with test data *)
 	TestDataWriter* = OBJECT(TestDataBase);
 	TestDataWriter* = OBJECT(TestDataBase);
 
 
-		PROCEDURE FillWithTestData(VAR buffer : ARRAY OF CHAR);
+		PROCEDURE FillWithTestData*(VAR buffer : ARRAY OF CHAR);
 		VAR i : LONGINT;
 		VAR i : LONGINT;
 		BEGIN
 		BEGIN
 			FOR i := 0 TO LEN(buffer) - 1 DO buffer[i] := CHR(i MOD 256); END;
 			FOR i := 0 TO LEN(buffer) - 1 DO buffer[i] := CHR(i MOD 256); END;

+ 1 - 1
source/DynamicWebpagePlugin.Mod

@@ -23,7 +23,7 @@ TYPE
 			Init^(PluginName)
 			Init^(PluginName)
 		END Init;
 		END Init;
 
 
-		PROCEDURE CanHandle(host: WebHTTPServer.Host; VAR request: WebHTTP.RequestHeader; secure : BOOLEAN) : BOOLEAN;
+		PROCEDURE CanHandle*(host: WebHTTPServer.Host; VAR request: WebHTTP.RequestHeader; secure : BOOLEAN) : BOOLEAN;
 		VAR name, ext: Files.FileName; f: Files.File; newuri : ARRAY 4096 OF CHAR;
 		VAR name, ext: Files.FileName; f: Files.File; newuri : ARRAY 4096 OF CHAR;
 		BEGIN
 		BEGIN
 			HTTPSupport.RemoveVariablesFromURI(request.uri, newuri);
 			HTTPSupport.RemoveVariablesFromURI(request.uri, newuri);

+ 1 - 1
source/EventsFileLog.Mod

@@ -34,7 +34,7 @@ TYPE
 		currentFileSize, maxFileSize : LONGINT;
 		currentFileSize, maxFileSize : LONGINT;
 		warned : BOOLEAN;
 		warned : BOOLEAN;
 
 
-		PROCEDURE Handle(event : Events.Event);
+		PROCEDURE Handle*(event : Events.Event);
 		BEGIN
 		BEGIN
 			IF currentFileSize < maxFileSize - 1024 THEN
 			IF currentFileSize < maxFileSize - 1024 THEN
 				EventsUtils.ToStream(w, event);
 				EventsUtils.ToStream(w, event);

+ 1 - 1
source/EventsKernelLog.Mod

@@ -24,7 +24,7 @@ TYPE
 	EventLogger = OBJECT(Events.Sink);
 	EventLogger = OBJECT(Events.Sink);
 	VAR w : Streams.Writer;
 	VAR w : Streams.Writer;
 
 
-		PROCEDURE Handle(event : Events.Event);
+		PROCEDURE Handle*(event : Events.Event);
 		BEGIN
 		BEGIN
 			EventsUtils.ToStream(w, event);
 			EventsUtils.ToStream(w, event);
 		END Handle;
 		END Handle;

+ 1 - 1
source/EventsMemoryLog.Mod

@@ -20,7 +20,7 @@ TYPE
 	VAR
 	VAR
 		events : EventsUtils.EventContainer;
 		events : EventsUtils.EventContainer;
 
 
-		PROCEDURE Handle(event : Events.Event);
+		PROCEDURE Handle*(event : Events.Event);
 		BEGIN
 		BEGIN
 			IF ~events.IsFull() THEN
 			IF ~events.IsFull() THEN
 				events.Handle(event);
 				events.Handle(event);

+ 45 - 45
source/ExerciseGroups.Mod

@@ -134,7 +134,7 @@ TYPE
 			leginr: Strings.String;
 			leginr: Strings.String;
 			grades: IntList;
 			grades: IntList;
 
 
-		PROCEDURE Internalize(input: XML.Content);
+		PROCEDURE Internalize*(input: XML.Content);
 		VAR container: XML.Container; elem, subElem: XML.Element; p: ANY; enum: XMLObjects.Enumerator;
 		VAR container: XML.Container; elem, subElem: XML.Element; p: ANY; enum: XMLObjects.Enumerator;
 			str: Strings.String; number: LONGINT;
 			str: Strings.String; number: LONGINT;
 		BEGIN
 		BEGIN
@@ -162,7 +162,7 @@ TYPE
 			END
 			END
 		END Internalize;
 		END Internalize;
 
 
-		PROCEDURE Externalize() : XML.Content;
+		PROCEDURE Externalize*() : XML.Content;
 		VAR container: XML.Container; elem, subElem: XML.Element; str: ARRAY 14 OF CHAR; i, number: LONGINT;
 		VAR container: XML.Container; elem, subElem: XML.Element; str: ARRAY 14 OF CHAR; i, number: LONGINT;
 		BEGIN
 		BEGIN
 			NEW(container);
 			NEW(container);
@@ -186,7 +186,7 @@ TYPE
 			RETURN container
 			RETURN container
 		END Externalize;
 		END Externalize;
 
 
-		PROCEDURE TableView(forum: WebComplex.WebForum; request: HTTPSupport.HTTPRequest) : WebComplex.TableRow;
+		PROCEDURE TableView*(forum: WebComplex.WebForum; request: HTTPSupport.HTTPRequest) : WebComplex.TableRow;
 		VAR row: WebComplex.TableRow;
 		VAR row: WebComplex.TableRow;
 		BEGIN
 		BEGIN
 			NEW(row, 6);
 			NEW(row, 6);
@@ -204,7 +204,7 @@ TYPE
 			RETURN row
 			RETURN row
 		END TableView;
 		END TableView;
 
 
-		PROCEDURE DetailView(forum: WebComplex.WebForum; request: HTTPSupport.HTTPRequest) : XML.Content;
+		PROCEDURE DetailView*(forum: WebComplex.WebForum; request: HTTPSupport.HTTPRequest) : XML.Content;
 		VAR container: XML.Container; pTag: XML.Element;
 		VAR container: XML.Container; pTag: XML.Element;
 		BEGIN
 		BEGIN
 			NEW(container);
 			NEW(container);
@@ -257,7 +257,7 @@ TYPE
 			RETURN table
 			RETURN table
 		END GetGradesDetailView;
 		END GetGradesDetailView;
 
 
-		PROCEDURE EditView(forum: WebComplex.WebForum; request: HTTPSupport.HTTPRequest) : XML.Content;
+		PROCEDURE EditView*(forum: WebComplex.WebForum; request: HTTPSupport.HTTPRequest) : XML.Content;
 		VAR table: XML.Element;
 		VAR table: XML.Element;
 		BEGIN
 		BEGIN
 			NEW(table); table.SetName("table");
 			NEW(table); table.SetName("table");
@@ -302,7 +302,7 @@ TYPE
 			searchText: Strings.String;
 			searchText: Strings.String;
 			maxEntries: LONGINT;
 			maxEntries: LONGINT;
 
 
-		PROCEDURE Transform(input: XML.Element; request: HTTPSupport.HTTPRequest) : XML.Content;
+		PROCEDURE Transform*(input: XML.Element; request: HTTPSupport.HTTPRequest) : XML.Content;
 		VAR maxEntriesStr: Strings.String; elem: XML.Element;
 		VAR maxEntriesStr: Strings.String; elem: XML.Element;
 		BEGIN
 		BEGIN
 			elem := WebStd.GetXMLSubElement(input, "MaxEntries");
 			elem := WebStd.GetXMLSubElement(input, "MaxEntries");
@@ -316,7 +316,7 @@ TYPE
 			RETURN Transform^(input, request);
 			RETURN Transform^(input, request);
 		END Transform;
 		END Transform;
 
 
-		PROCEDURE GetHeaderXMLContent(persContainer: WebStd.PersistentDataContainer; input: XML.Element;
+		PROCEDURE GetHeaderXMLContent*(persContainer: WebStd.PersistentDataContainer; input: XML.Element;
 			request: HTTPSupport.HTTPRequest) : XML.Content;
 			request: HTTPSupport.HTTPRequest) : XML.Content;
 		VAR dynStr: DynamicStrings.DynamicString; list: WebStd.PersistentDataObjectList; i: LONGINT;
 		VAR dynStr: DynamicStrings.DynamicString; list: WebStd.PersistentDataObjectList; i: LONGINT;
 			str, encStr: Strings.String; person: Person; pTag, aTag: XML.Element; tempStr: ARRAY 10 OF CHAR;
 			str, encStr: Strings.String; person: Person; pTag, aTag: XML.Element; tempStr: ARRAY 10 OF CHAR;
@@ -348,7 +348,7 @@ TYPE
 			RETURN NIL
 			RETURN NIL
 		END GetHeaderXMLContent;
 		END GetHeaderXMLContent;
 
 
-		PROCEDURE InsertObject(container: WebStd.PersistentDataContainer; superEntry: WebComplex.WebForumEntry;
+		PROCEDURE InsertObject*(container: WebStd.PersistentDataContainer; superEntry: WebComplex.WebForumEntry;
 			request: HTTPSupport.HTTPRequest; params: DynamicWebpage.ParameterList; VAR statusMsg: XML.Content) : BOOLEAN;
 			request: HTTPSupport.HTTPRequest; params: DynamicWebpage.ParameterList; VAR statusMsg: XML.Content) : BOOLEAN;
 			(* parameters "firstname", "lastname", "email", "leginr"*)
 			(* parameters "firstname", "lastname", "email", "leginr"*)
 		VAR firstname, lastname, email, leginr: Strings.String; obj: Person;
 		VAR firstname, lastname, email, leginr: Strings.String; obj: Person;
@@ -380,7 +380,7 @@ TYPE
 			END
 			END
 		END InsertObject;
 		END InsertObject;
 
 
-		PROCEDURE UpdateObject(obj: WebComplex.WebForumEntry; request: HTTPSupport.HTTPRequest;
+		PROCEDURE UpdateObject*(obj: WebComplex.WebForumEntry; request: HTTPSupport.HTTPRequest;
 			params: DynamicWebpage.ParameterList; VAR statusMsg: XML.Content) : BOOLEAN;
 			params: DynamicWebpage.ParameterList; VAR statusMsg: XML.Content) : BOOLEAN;
 		VAR firstname, lastname, email, leginr: Strings.String;  person: Person;
 		VAR firstname, lastname, email, leginr: Strings.String;  person: Person;
 		BEGIN (* obj # NIL *)
 		BEGIN (* obj # NIL *)
@@ -417,12 +417,12 @@ TYPE
 			END
 			END
 		END UpdateObject;
 		END UpdateObject;
 
 
-		PROCEDURE ThisObjectName() : Strings.String;
+		PROCEDURE ThisObjectName*() : Strings.String;
 		BEGIN
 		BEGIN
 			RETURN WebStd.GetString(SingleGroupDatagridName)
 			RETURN WebStd.GetString(SingleGroupDatagridName)
 		END ThisObjectName;
 		END ThisObjectName;
 
 
-		PROCEDURE ThisModuleName() : Strings.String;
+		PROCEDURE ThisModuleName*() : Strings.String;
 		BEGIN
 		BEGIN
 			RETURN WebStd.GetString(ThisModuleNameStr)
 			RETURN WebStd.GetString(ThisModuleNameStr)
 		END ThisModuleName;
 		END ThisModuleName;
@@ -430,7 +430,7 @@ TYPE
 		(** returns the insert view for the initialization of a new web forum entry, without submit/back-input fields
 		(** returns the insert view for the initialization of a new web forum entry, without submit/back-input fields
 		 * and without hidden parameter for super entry in hierarchy.
 		 * and without hidden parameter for super entry in hierarchy.
 		 * superEntry is the parent web forum entry in a hierachical web forum, superEntry is NIL iff it is a root entry *)
 		 * superEntry is the parent web forum entry in a hierachical web forum, superEntry is NIL iff it is a root entry *)
-		PROCEDURE GetInsertView(superEntry: WebComplex.WebForumEntry; request: HTTPSupport.HTTPRequest): XML.Content;
+		PROCEDURE GetInsertView*(superEntry: WebComplex.WebForumEntry; request: HTTPSupport.HTTPRequest): XML.Content;
 		VAR table: XML.Element;
 		VAR table: XML.Element;
 		BEGIN
 		BEGIN
 			NEW(table); table.SetName("table");
 			NEW(table); table.SetName("table");
@@ -441,7 +441,7 @@ TYPE
 			RETURN table
 			RETURN table
 		END GetInsertView;
 		END GetInsertView;
 
 
-		PROCEDURE GetTableHeader(request: HTTPSupport.HTTPRequest): WebComplex.HeaderRow;
+		PROCEDURE GetTableHeader*(request: HTTPSupport.HTTPRequest): WebComplex.HeaderRow;
 		VAR row: WebComplex.HeaderRow;
 		VAR row: WebComplex.HeaderRow;
 		BEGIN
 		BEGIN
 			NEW(row, 6);
 			NEW(row, 6);
@@ -459,7 +459,7 @@ TYPE
 			RETURN row
 			RETURN row
 		END GetTableHeader;
 		END GetTableHeader;
 
 
-		PROCEDURE GetSearchFilter(text: Strings.String) : WebStd.PersistentDataFilter;
+		PROCEDURE GetSearchFilter*(text: Strings.String) : WebStd.PersistentDataFilter;
 		BEGIN
 		BEGIN
 			IF (text # NIL) THEN
 			IF (text # NIL) THEN
 				NEW(searchText, Strings.Length(text^)+3);
 				NEW(searchText, Strings.Length(text^)+3);
@@ -501,32 +501,32 @@ TYPE
 			RETURN FALSE
 			RETURN FALSE
 		END SearchFilter;
 		END SearchFilter;
 
 
-		PROCEDURE GetDefaultOrdering() : WebStd.PersistentDataCompare;
+		PROCEDURE GetDefaultOrdering*() : WebStd.PersistentDataCompare;
 		BEGIN RETURN CompareLastName
 		BEGIN RETURN CompareLastName
 		END GetDefaultOrdering;
 		END GetDefaultOrdering;
 
 
-		PROCEDURE GetEmptyListMessage(request: HTTPSupport.HTTPRequest) : XML.Container;
+		PROCEDURE GetEmptyListMessage*(request: HTTPSupport.HTTPRequest) : XML.Container;
 		BEGIN
 		BEGIN
 			RETURN WebStd.CreateXMLText(EmptyListText);
 			RETURN WebStd.CreateXMLText(EmptyListText);
 		END GetEmptyListMessage;
 		END GetEmptyListMessage;
 
 
-		PROCEDURE GetBackButtonLabel(request: HTTPSupport.HTTPRequest) : Strings.String;
+		PROCEDURE GetBackButtonLabel*(request: HTTPSupport.HTTPRequest) : Strings.String;
 		BEGIN RETURN WebStd.GetString(BackButtonLabel)
 		BEGIN RETURN WebStd.GetString(BackButtonLabel)
 		END GetBackButtonLabel;
 		END GetBackButtonLabel;
 
 
-		PROCEDURE GetInsertLinkLabel(request: HTTPSupport.HTTPRequest) : Strings.String;
+		PROCEDURE GetInsertLinkLabel*(request: HTTPSupport.HTTPRequest) : Strings.String;
 		BEGIN RETURN WebStd.GetString(InsertToGroupLabel);
 		BEGIN RETURN WebStd.GetString(InsertToGroupLabel);
 		END GetInsertLinkLabel;
 		END GetInsertLinkLabel;
 
 
-		PROCEDURE GetSubmitButtonLabel(request: HTTPSupport.HTTPRequest): Strings.String;
+		PROCEDURE GetSubmitButtonLabel*(request: HTTPSupport.HTTPRequest): Strings.String;
 		BEGIN RETURN WebStd.GetString(SubmitButtonLabel)
 		BEGIN RETURN WebStd.GetString(SubmitButtonLabel)
 		END GetSubmitButtonLabel;
 		END GetSubmitButtonLabel;
 
 
-		PROCEDURE GetUnapplySortLabel(request: HTTPSupport.HTTPRequest): Strings.String;
+		PROCEDURE GetUnapplySortLabel*(request: HTTPSupport.HTTPRequest): Strings.String;
 		BEGIN RETURN WebStd.GetString(UnapplySortLabel)
 		BEGIN RETURN WebStd.GetString(UnapplySortLabel)
 		END GetUnapplySortLabel;
 		END GetUnapplySortLabel;
 
 
-		PROCEDURE GetUnapplyFilterLabel(request: HTTPSupport.HTTPRequest): Strings.String;
+		PROCEDURE GetUnapplyFilterLabel*(request: HTTPSupport.HTTPRequest): Strings.String;
 		BEGIN RETURN WebStd.GetString(UnapplyFilterLabel)
 		BEGIN RETURN WebStd.GetString(UnapplyFilterLabel)
 		END GetUnapplyFilterLabel;
 		END GetUnapplyFilterLabel;
 
 
@@ -603,7 +603,7 @@ TYPE
 			toggleBlockId := DynamicWebpage.CreateNewObjectId() (* toggleBlockId # NIL *)
 			toggleBlockId := DynamicWebpage.CreateNewObjectId() (* toggleBlockId # NIL *)
 		END Initialize;
 		END Initialize;
 
 
-		PROCEDURE Internalize(input: XML.Content);
+		PROCEDURE Internalize*(input: XML.Content);
 		VAR container: XML.Container; elem: XML.Element; oidStr: Strings.String;
 		VAR container: XML.Container; elem: XML.Element; oidStr: Strings.String;
 			persObj: PrevalenceSystem.PersistentObject; oidNr: LONGINT;
 			persObj: PrevalenceSystem.PersistentObject; oidNr: LONGINT;
 		BEGIN
 		BEGIN
@@ -634,7 +634,7 @@ TYPE
 			maxPeople := WebStd.InternalizeInteger(container, "MaxPeople");
 			maxPeople := WebStd.InternalizeInteger(container, "MaxPeople");
 		END Internalize;
 		END Internalize;
 
 
-		PROCEDURE Externalize() : XML.Content;
+		PROCEDURE Externalize*() : XML.Content;
 		VAR container: XML.Container; elem: XML.Element; oidStr: ARRAY 14 OF CHAR;
 		VAR container: XML.Container; elem: XML.Element; oidStr: ARRAY 14 OF CHAR;
 		BEGIN
 		BEGIN
 			NEW(container);
 			NEW(container);
@@ -658,7 +658,7 @@ TYPE
 			RETURN container
 			RETURN container
 		END Externalize;
 		END Externalize;
 
 
-		PROCEDURE GetReferrencedObjects() : PrevalenceSystem.PersistentObjectList;
+		PROCEDURE GetReferrencedObjects*() : PrevalenceSystem.PersistentObjectList;
 		VAR list: PrevalenceSystem.PersistentObjectList;
 		VAR list: PrevalenceSystem.PersistentObjectList;
 		BEGIN
 		BEGIN
 			NEW(list, 1);
 			NEW(list, 1);
@@ -702,7 +702,7 @@ TYPE
 			RETURN maxPeopleStr
 			RETURN maxPeopleStr
 		END GetFreePlaces;
 		END GetFreePlaces;
 
 
-		PROCEDURE TableView(forum: WebComplex.WebForum; request: HTTPSupport.HTTPRequest) : WebComplex.TableRow;
+		PROCEDURE TableView*(forum: WebComplex.WebForum; request: HTTPSupport.HTTPRequest) : WebComplex.TableRow;
 		VAR row: WebComplex.TableRow;
 		VAR row: WebComplex.TableRow;
 		BEGIN
 		BEGIN
 			NEW(row, 8);
 			NEW(row, 8);
@@ -717,7 +717,7 @@ TYPE
 			RETURN row
 			RETURN row
 		END TableView;
 		END TableView;
 
 
-		PROCEDURE DetailView(forum: WebComplex.WebForum; request: HTTPSupport.HTTPRequest) : XML.Content;
+		PROCEDURE DetailView*(forum: WebComplex.WebForum; request: HTTPSupport.HTTPRequest) : XML.Content;
 		VAR container: XML.Container; toggleBlock, show, hide: XML.Element;
 		VAR container: XML.Container; toggleBlock, show, hide: XML.Element;
 		BEGIN
 		BEGIN
 			NEW(container);
 			NEW(container);
@@ -853,7 +853,7 @@ TYPE
 			END
 			END
 		END GetSingleGroupDatagridView;
 		END GetSingleGroupDatagridView;
 
 
-		PROCEDURE EditView(forum: WebComplex.WebForum; request: HTTPSupport.HTTPRequest) : XML.Content;
+		PROCEDURE EditView*(forum: WebComplex.WebForum; request: HTTPSupport.HTTPRequest) : XML.Content;
 		VAR table, tr, td, select, option: XML.Element; maxPeopleStr: Strings.String;
 		VAR table, tr, td, select, option: XML.Element; maxPeopleStr: Strings.String;
 		BEGIN
 		BEGIN
 			NEW(table); table.SetName("table");
 			NEW(table); table.SetName("table");
@@ -936,14 +936,14 @@ TYPE
 		BEGIN Init^; reInitializeSubContainer := FALSE
 		BEGIN Init^; reInitializeSubContainer := FALSE
 		END Init;
 		END Init;
 
 
-		PROCEDURE Transform(input: XML.Element; request: HTTPSupport.HTTPRequest) : XML.Content;
+		PROCEDURE Transform*(input: XML.Element; request: HTTPSupport.HTTPRequest) : XML.Content;
 		BEGIN
 		BEGIN
 			(* get the access constraint for later propagation to the nested SingleGroupDatagrid *)
 			(* get the access constraint for later propagation to the nested SingleGroupDatagrid *)
 			accessConstraint := WebStd.GetXMLSubElement(input, "AccessConstraint");
 			accessConstraint := WebStd.GetXMLSubElement(input, "AccessConstraint");
 			RETURN Transform^(input, request)
 			RETURN Transform^(input, request)
 		END Transform;
 		END Transform;
 
 
-		PROCEDURE InsertObject(container: WebStd.PersistentDataContainer; superEntry: WebComplex.WebForumEntry;
+		PROCEDURE InsertObject*(container: WebStd.PersistentDataContainer; superEntry: WebComplex.WebForumEntry;
 			request: HTTPSupport.HTTPRequest; params: DynamicWebpage.ParameterList; VAR statusMsg: XML.Content) : BOOLEAN;
 			request: HTTPSupport.HTTPRequest; params: DynamicWebpage.ParameterList; VAR statusMsg: XML.Content) : BOOLEAN;
 			(* parameters "name", "info", "assistant", "date", "place", "maxpeople", "opentojoin" *)
 			(* parameters "name", "info", "assistant", "date", "place", "maxpeople", "opentojoin" *)
 		VAR name, info, assistant, date, place, maxpeople, opentojoin, containername: Strings.String; obj: Group;
 		VAR name, info, assistant, date, place, maxpeople, opentojoin, containername: Strings.String; obj: Group;
@@ -990,7 +990,7 @@ TYPE
 			END
 			END
 		END InsertObject;
 		END InsertObject;
 
 
-		PROCEDURE UpdateObject(obj: WebComplex.WebForumEntry; request: HTTPSupport.HTTPRequest;
+		PROCEDURE UpdateObject*(obj: WebComplex.WebForumEntry; request: HTTPSupport.HTTPRequest;
 			params: DynamicWebpage.ParameterList; VAR statusMsg: XML.Content) : BOOLEAN;
 			params: DynamicWebpage.ParameterList; VAR statusMsg: XML.Content) : BOOLEAN;
 			(* parameters "name", "info", "assistant", "date", "place", "maxpeople", "opentojoin" *)
 			(* parameters "name", "info", "assistant", "date", "place", "maxpeople", "opentojoin" *)
 		VAR name, info, assistant, date, place, maxpeople, opentojoin: Strings.String; group: Group;
 		VAR name, info, assistant, date, place, maxpeople, opentojoin: Strings.String; group: Group;
@@ -1030,12 +1030,12 @@ TYPE
 			END
 			END
 		END UpdateObject;
 		END UpdateObject;
 
 
-		PROCEDURE ThisObjectName() : Strings.String;
+		PROCEDURE ThisObjectName*() : Strings.String;
 		BEGIN
 		BEGIN
 			RETURN WebStd.GetString(AllGroupsDatagridName)
 			RETURN WebStd.GetString(AllGroupsDatagridName)
 		END ThisObjectName;
 		END ThisObjectName;
 
 
-		PROCEDURE ThisModuleName() : Strings.String;
+		PROCEDURE ThisModuleName*() : Strings.String;
 		BEGIN
 		BEGIN
 			RETURN WebStd.GetString(ThisModuleNameStr)
 			RETURN WebStd.GetString(ThisModuleNameStr)
 		END ThisModuleName;
 		END ThisModuleName;
@@ -1043,7 +1043,7 @@ TYPE
 		(** abstract, returns the insert view for the initialization of a new web forum entry, without submit/back-input fields
 		(** abstract, returns the insert view for the initialization of a new web forum entry, without submit/back-input fields
 		 * and without hidden parameter for super entry in hierarchy.
 		 * and without hidden parameter for super entry in hierarchy.
 		 * superEntry is the parent web forum entry in a hierachical web forum, superEntry is NIL iff it is a root entry *)
 		 * superEntry is the parent web forum entry in a hierachical web forum, superEntry is NIL iff it is a root entry *)
-		PROCEDURE GetInsertView(superEntry: WebComplex.WebForumEntry; request: HTTPSupport.HTTPRequest): XML.Content;
+		PROCEDURE GetInsertView*(superEntry: WebComplex.WebForumEntry; request: HTTPSupport.HTTPRequest): XML.Content;
 		VAR table, tr, td, select, option: XML.Element;
 		VAR table, tr, td, select, option: XML.Element;
 		BEGIN
 		BEGIN
 			NEW(table); table.SetName("table");
 			NEW(table); table.SetName("table");
@@ -1074,11 +1074,11 @@ TYPE
 			RETURN table
 			RETURN table
 		END GetInsertView;
 		END GetInsertView;
 
 
-		PROCEDURE OnDetailViewActivated(entryOid: LONGINT; request: HTTPSupport.HTTPRequest);
+		PROCEDURE OnDetailViewActivated*(entryOid: LONGINT; request: HTTPSupport.HTTPRequest);
 		BEGIN reInitializeSubContainer := TRUE (* the sub container has to showed in the default mode *)
 		BEGIN reInitializeSubContainer := TRUE (* the sub container has to showed in the default mode *)
 		END OnDetailViewActivated;
 		END OnDetailViewActivated;
 
 
-		PROCEDURE GetTableHeader(request: HTTPSupport.HTTPRequest): WebComplex.HeaderRow;
+		PROCEDURE GetTableHeader*(request: HTTPSupport.HTTPRequest): WebComplex.HeaderRow;
 		VAR row: WebComplex.HeaderRow;
 		VAR row: WebComplex.HeaderRow;
 		BEGIN
 		BEGIN
 			NEW(row, 8);
 			NEW(row, 8);
@@ -1093,32 +1093,32 @@ TYPE
 			RETURN row
 			RETURN row
 		END GetTableHeader;
 		END GetTableHeader;
 
 
-		PROCEDURE GetEmptyListMessage(request: HTTPSupport.HTTPRequest) : XML.Container;
+		PROCEDURE GetEmptyListMessage*(request: HTTPSupport.HTTPRequest) : XML.Container;
 		BEGIN
 		BEGIN
 			RETURN WebStd.CreateXMLText(EmptyListText);
 			RETURN WebStd.CreateXMLText(EmptyListText);
 		END GetEmptyListMessage;
 		END GetEmptyListMessage;
 
 
-		PROCEDURE GetBackButtonLabel(request: HTTPSupport.HTTPRequest) : Strings.String;
+		PROCEDURE GetBackButtonLabel*(request: HTTPSupport.HTTPRequest) : Strings.String;
 		BEGIN RETURN WebStd.GetString(BackButtonLabel)
 		BEGIN RETURN WebStd.GetString(BackButtonLabel)
 		END GetBackButtonLabel;
 		END GetBackButtonLabel;
 
 
-		PROCEDURE GetInsertLinkLabel(request: HTTPSupport.HTTPRequest) : Strings.String;
+		PROCEDURE GetInsertLinkLabel*(request: HTTPSupport.HTTPRequest) : Strings.String;
 		BEGIN RETURN WebStd.GetString(InsertGroupText)
 		BEGIN RETURN WebStd.GetString(InsertGroupText)
 		END GetInsertLinkLabel;
 		END GetInsertLinkLabel;
 
 
-		PROCEDURE GetSubmitButtonLabel(request: HTTPSupport.HTTPRequest): Strings.String;
+		PROCEDURE GetSubmitButtonLabel*(request: HTTPSupport.HTTPRequest): Strings.String;
 		BEGIN RETURN WebStd.GetString(SubmitButtonLabel)
 		BEGIN RETURN WebStd.GetString(SubmitButtonLabel)
 		END GetSubmitButtonLabel;
 		END GetSubmitButtonLabel;
 
 
-		PROCEDURE GetUnapplySortLabel(request: HTTPSupport.HTTPRequest): Strings.String;
+		PROCEDURE GetUnapplySortLabel*(request: HTTPSupport.HTTPRequest): Strings.String;
 		BEGIN RETURN WebStd.GetString(UnapplySortLabel)
 		BEGIN RETURN WebStd.GetString(UnapplySortLabel)
 		END GetUnapplySortLabel;
 		END GetUnapplySortLabel;
 
 
-		PROCEDURE GetUnapplyFilterLabel(request: HTTPSupport.HTTPRequest): Strings.String;
+		PROCEDURE GetUnapplyFilterLabel*(request: HTTPSupport.HTTPRequest): Strings.String;
 		BEGIN RETURN WebStd.GetString(UnapplyFilterLabel)
 		BEGIN RETURN WebStd.GetString(UnapplyFilterLabel)
 		END GetUnapplyFilterLabel;
 		END GetUnapplyFilterLabel;
 
 
-		PROCEDURE GetSearchFilter(text: Strings.String) : WebStd.PersistentDataFilter;
+		PROCEDURE GetSearchFilter*(text: Strings.String) : WebStd.PersistentDataFilter;
 		BEGIN
 		BEGIN
 			IF (text # NIL) THEN
 			IF (text # NIL) THEN
 				NEW(searchText, Strings.Length(text^)+3);
 				NEW(searchText, Strings.Length(text^)+3);
@@ -1260,7 +1260,7 @@ TYPE
 		BEGIN group := NIL
 		BEGIN group := NIL
 		END Init;
 		END Init;
 
 
-		PROCEDURE Transform(input: XML.Element; request: HTTPSupport.HTTPRequest) : XML.Content;
+		PROCEDURE Transform*(input: XML.Element; request: HTTPSupport.HTTPRequest) : XML.Content;
 		VAR groupOid: LONGINT; groupOidStr, prevSysName: Strings.String; persObj: PrevalenceSystem.PersistentObject;
 		VAR groupOid: LONGINT; groupOidStr, prevSysName: Strings.String; persObj: PrevalenceSystem.PersistentObject;
 			prevSys: PrevalenceSystem.PrevalenceSystem;
 			prevSys: PrevalenceSystem.PrevalenceSystem;
 		BEGIN
 		BEGIN
@@ -1563,7 +1563,7 @@ TYPE
 			END
 			END
 		END DeleteExercise;
 		END DeleteExercise;
 
 
-		PROCEDURE GetEventHandlers() : DynamicWebpage.EventHandlerList;
+		PROCEDURE GetEventHandlers*() : DynamicWebpage.EventHandlerList;
 		VAR list: DynamicWebpage.EventHandlerList;
 		VAR list: DynamicWebpage.EventHandlerList;
 		BEGIN
 		BEGIN
 			NEW(list, 3);
 			NEW(list, 3);
@@ -1578,7 +1578,7 @@ TYPE
 	 * <ExerciseGroups:SummaryList containername=".." prevalencesystem=".."/>
 	 * <ExerciseGroups:SummaryList containername=".." prevalencesystem=".."/>
 	 *)
 	 *)
 	SummaryList* = OBJECT(DynamicWebpage.StateLessActiveElement);
 	SummaryList* = OBJECT(DynamicWebpage.StateLessActiveElement);
-		PROCEDURE Transform(input: XML.Element; request: HTTPSupport.HTTPRequest) : XML.Content;
+		PROCEDURE Transform*(input: XML.Element; request: HTTPSupport.HTTPRequest) : XML.Content;
 		VAR containerName, prevSysName: Strings.String; persCont: WebStd.PersistentDataContainer;
 		VAR containerName, prevSysName: Strings.String; persCont: WebStd.PersistentDataContainer;
 			persList: WebStd.PersistentDataObjectList; i: LONGINT; outputCont: XML.Container;
 			persList: WebStd.PersistentDataObjectList; i: LONGINT; outputCont: XML.Container;
 			entry: WebComplex.WebForumEntry; prevSys: PrevalenceSystem.PrevalenceSystem;
 			entry: WebComplex.WebForumEntry; prevSys: PrevalenceSystem.PrevalenceSystem;

+ 12 - 12
source/FATFiles.Mod

@@ -146,7 +146,7 @@ TYPE
 		END Initialize;
 		END Initialize;
 
 
 		(* Finalize the file system. *)
 		(* Finalize the file system. *)
-		PROCEDURE Finalize;
+		PROCEDURE Finalize*;
 		VAR purge: FilePurger; update: FileUpdater;
 		VAR purge: FilePurger; update: FileUpdater;
 		BEGIN {EXCLUSIVE}
 		BEGIN {EXCLUSIVE}
 			NEW(purge); purge.count := 0;
 			NEW(purge); purge.count := 0;
@@ -639,7 +639,7 @@ TYPE
 
 
 		(* Position a Rider at a certain position in a file. Multiple Riders can be positioned at different locations in a file.
 		(* Position a Rider at a certain position in a file. Multiple Riders can be positioned at different locations in a file.
 			A Rider cannot be positioned beyond the end of a file. *)
 			A Rider cannot be positioned beyond the end of a file. *)
-		PROCEDURE Set(VAR r: Files.Rider; pos: LONGINT);
+		PROCEDURE Set*(VAR r: Files.Rider; pos: LONGINT);
 		BEGIN {EXCLUSIVE} SetX(r, pos)
 		BEGIN {EXCLUSIVE} SetX(r, pos)
 		END Set;
 		END Set;
 
 
@@ -659,7 +659,7 @@ TYPE
 		END SetX;
 		END SetX;
 
 
 		(* Return the offset of a Rider positioned on a file. *)
 		(* Return the offset of a Rider positioned on a file. *)
-		PROCEDURE Pos(VAR r: Files.Rider): LONGINT;
+		PROCEDURE Pos*(VAR r: Files.Rider): LONGINT;
 		BEGIN RETURN r.apos*clusterSize + r.bpos
 		BEGIN RETURN r.apos*clusterSize + r.bpos
 		END Pos;
 		END Pos;
 
 
@@ -782,7 +782,7 @@ TYPE
 
 
 		(* Read a sequence of len bytes into the buffer x at offset ofs, advancing the Rider. Less bytes will be read when
 		(* Read a sequence of len bytes into the buffer x at offset ofs, advancing the Rider. Less bytes will be read when
 			reading over the end of the file. r.res indicates the number of unread bytes. x must be big enough to hold all the bytes. *)
 			reading over the end of the file. r.res indicates the number of unread bytes. x must be big enough to hold all the bytes. *)
-		PROCEDURE ReadBytes(VAR r: Files.Rider; VAR x: ARRAY OF CHAR; ofs, len: LONGINT);
+		PROCEDURE ReadBytes*(VAR r: Files.Rider; VAR x: ARRAY OF CHAR; ofs, len: LONGINT);
 		BEGIN {EXCLUSIVE} ReadBytesX(r, x, ofs, len)
 		BEGIN {EXCLUSIVE} ReadBytesX(r, x, ofs, len)
 		END ReadBytes;
 		END ReadBytes;
 
 
@@ -826,7 +826,7 @@ TYPE
 		END WriteX;
 		END WriteX;
 
 
 		(* Write the buffer x containing len bytes (starting at offset ofs) into a file at the Rider position. *)
 		(* Write the buffer x containing len bytes (starting at offset ofs) into a file at the Rider position. *)
-		PROCEDURE WriteBytes(VAR r: Files.Rider; CONST x: ARRAY OF CHAR; ofs, len: LONGINT);
+		PROCEDURE WriteBytes*(VAR r: Files.Rider; CONST x: ARRAY OF CHAR; ofs, len: LONGINT);
 		BEGIN {EXCLUSIVE} WriteBytesX(r, x, ofs, len)
 		BEGIN {EXCLUSIVE} WriteBytesX(r, x, ofs, len)
 		END WriteBytes;
 		END WriteBytes;
 
 
@@ -854,7 +854,7 @@ TYPE
 		END WriteBytesX;
 		END WriteBytesX;
 
 
 		(* Return the current length of a file. *)
 		(* Return the current length of a file. *)
-		PROCEDURE Length(): LONGINT;
+		PROCEDURE Length*(): LONGINT;
 		BEGIN
 		BEGIN
 			(* Length() should in principle be exlusive, however it won't do any harm if it is not, it just reflects the
 			(* Length() should in principle be exlusive, however it won't do any harm if it is not, it just reflects the
 				current size if called from outside. Internal methods that call Length() are exclusive whenever needed *)
 				current size if called from outside. Internal methods that call Length() are exclusive whenever needed *)
@@ -913,7 +913,7 @@ TYPE
 
 
 		(* Register a file created with New in the directory, replacing the previous file in the directory with the same name.
 		(* Register a file created with New in the directory, replacing the previous file in the directory with the same name.
 			The file is automatically updated.  End users use Files.Register instead. *)
 			The file is automatically updated.  End users use Files.Register instead. *)
-		PROCEDURE Register0(VAR res: LONGINT);
+		PROCEDURE Register0*(VAR res: LONGINT);
 		VAR dir: Directory; old: File; s: SearchByName;
 		VAR dir: Directory; old: File; s: SearchByName;
 		BEGIN {EXCLUSIVE}
 		BEGIN {EXCLUSIVE}
 			IF ~registered THEN
 			IF ~registered THEN
@@ -949,7 +949,7 @@ TYPE
 		END Register0;
 		END Register0;
 
 
 		(* Flush the changes made to a file from its buffers. Register0 will automatically update a file. *)
 		(* Flush the changes made to a file from its buffers. Register0 will automatically update a file. *)
-		PROCEDURE Update;
+		PROCEDURE Update*;
 		BEGIN {EXCLUSIVE} UpdateX
 		BEGIN {EXCLUSIVE} UpdateX
 		END Update;
 		END Update;
 
 
@@ -1110,7 +1110,7 @@ TYPE
 		END SetX;
 		END SetX;
 
 
 		(* Return the current length of a file. *)
 		(* Return the current length of a file. *)
-		PROCEDURE Length(): LONGINT;
+		PROCEDURE Length*(): LONGINT;
 		BEGIN {EXCLUSIVE}
 		BEGIN {EXCLUSIVE}
 			IF (size = 0) THEN InitSize END;
 			IF (size = 0) THEN InitSize END;
 			RETURN Length^()
 			RETURN Length^()
@@ -1641,7 +1641,7 @@ TYPE
 	END Directory;
 	END Directory;
 
 
 	RootDirectory = OBJECT(Directory)
 	RootDirectory = OBJECT(Directory)
-		PROCEDURE GetFullName(VAR name: ARRAY OF CHAR; WithPrefix: BOOLEAN);
+		PROCEDURE GetFullName*(VAR name: ARRAY OF CHAR; WithPrefix: BOOLEAN);
 		VAR pos, i: LONGINT;
 		VAR pos, i: LONGINT;
 		BEGIN {EXCLUSIVE}
 		BEGIN {EXCLUSIVE}
 			pos := 0; i := 0;
 			pos := 0; i := 0;
@@ -1672,7 +1672,7 @@ TYPE
 			size := fs.vol(FATVolumes.FAT1216Volume).numRootSectors*FATVolumes.BS
 			size := fs.vol(FATVolumes.FAT1216Volume).numRootSectors*FATVolumes.BS
 		END InitSize;
 		END InitSize;
 
 
-		PROCEDURE ReadBuffer*(buffer: Buffer; pos: LONGINT);
+		PROCEDURE ReadBuffer(buffer: Buffer; pos: LONGINT);
 		VAR vol: FATVolumes.FAT1216Volume; res: LONGINT;
 		VAR vol: FATVolumes.FAT1216Volume; res: LONGINT;
 		BEGIN
 		BEGIN
 			vol := fs.vol(FATVolumes.FAT1216Volume);
 			vol := fs.vol(FATVolumes.FAT1216Volume);
@@ -1682,7 +1682,7 @@ TYPE
 			IF (res # Ok) THEN HALT(ErrIOError) END
 			IF (res # Ok) THEN HALT(ErrIOError) END
 		END ReadBuffer;
 		END ReadBuffer;
 
 
-		PROCEDURE WriteBuffer*(buffer: Buffer);
+		PROCEDURE WriteBuffer(buffer: Buffer);
 		VAR vol: FATVolumes.FAT1216Volume; res: LONGINT;
 		VAR vol: FATVolumes.FAT1216Volume; res: LONGINT;
 		BEGIN
 		BEGIN
 			vol := fs.vol(FATVolumes.FAT1216Volume);
 			vol := fs.vol(FATVolumes.FAT1216Volume);

+ 9 - 9
source/FATVolumes.Mod

@@ -74,19 +74,19 @@ TYPE
 		BEGIN HALT(301)	(* abstract *)
 		BEGIN HALT(301)	(* abstract *)
 		END Init;
 		END Init;
 
 
-		PROCEDURE AllocBlock(hint: Address; VAR adr: Address);
+		PROCEDURE AllocBlock*(hint: Address; VAR adr: Address);
 		BEGIN HALT(301) (* not available on FAT volumes *)
 		BEGIN HALT(301) (* not available on FAT volumes *)
 		END AllocBlock;
 		END AllocBlock;
 
 
-		PROCEDURE FreeBlock(adr: Address);
+		PROCEDURE FreeBlock*(adr: Address);
 		BEGIN HALT(301) (* not available on FAT volumes *)
 		BEGIN HALT(301) (* not available on FAT volumes *)
 		END FreeBlock;
 		END FreeBlock;
 
 
-		PROCEDURE MarkBlock(adr: Address);
+		PROCEDURE MarkBlock*(adr: Address);
 		BEGIN HALT(301) (* not available on FAT volumes *)
 		BEGIN HALT(301) (* not available on FAT volumes *)
 		END MarkBlock;
 		END MarkBlock;
 
 
-		PROCEDURE Marked(adr: Address): BOOLEAN;
+		PROCEDURE Marked*(adr: Address): BOOLEAN;
 		BEGIN HALT(301) (* not available on FAT volumes *)
 		BEGIN HALT(301) (* not available on FAT volumes *)
 		END Marked;
 		END Marked;
 
 
@@ -124,7 +124,7 @@ TYPE
 			END;
 			END;
 		END InitLowLevel;
 		END InitLowLevel;
 
 
-		PROCEDURE Finalize;
+		PROCEDURE Finalize*;
 		VAR i, j, res: LONGINT; ptable: Disks.PartitionTable;
 		VAR i, j, res: LONGINT; ptable: Disks.PartitionTable;
 		BEGIN (* must be exclusive in overridden methods *)
 		BEGIN (* must be exclusive in overridden methods *)
 			quit := TRUE;
 			quit := TRUE;
@@ -145,7 +145,7 @@ TYPE
 			Finalize^	(* see note in Files *)
 			Finalize^	(* see note in Files *)
 		END Finalize;
 		END Finalize;
 
 
-		PROCEDURE Available(): LONGINT;
+		PROCEDURE Available*(): LONGINT;
 		VAR i: Address;
 		VAR i: Address;
 		BEGIN {EXCLUSIVE}
 		BEGIN {EXCLUSIVE}
 			IF (freeCount = -1) THEN
 			IF (freeCount = -1) THEN
@@ -470,7 +470,7 @@ TYPE
 			RETURN Initialize^(bpb, MaxClusters)	(* see note in Volumes.Initialize *)
 			RETURN Initialize^(bpb, MaxClusters)	(* see note in Volumes.Initialize *)
 		END Initialize;
 		END Initialize;
 
 
-		PROCEDURE Finalize;
+		PROCEDURE Finalize*;
 		BEGIN {EXCLUSIVE}
 		BEGIN {EXCLUSIVE}
 			Finalize^	(* see note in Volumes.Finalize *)
 			Finalize^	(* see note in Volumes.Finalize *)
 		END Finalize;
 		END Finalize;
@@ -586,7 +586,7 @@ TYPE
 			END
 			END
 		END Initialize;
 		END Initialize;
 
 
-		PROCEDURE Finalize;
+		PROCEDURE Finalize*;
 		VAR vcf: SET; res: LONGINT;
 		VAR vcf: SET; res: LONGINT;
 		BEGIN {EXCLUSIVE}
 		BEGIN {EXCLUSIVE}
 			IF ~(Files.ReadOnly IN flags) THEN
 			IF ~(Files.ReadOnly IN flags) THEN
@@ -730,7 +730,7 @@ TYPE
 			RETURN result
 			RETURN result
 		END Initialize;
 		END Initialize;
 
 
-		PROCEDURE Finalize;
+		PROCEDURE Finalize*;
 		VAR vcf: SET; res: LONGINT; info: ARRAY BS OF CHAR;
 		VAR vcf: SET; res: LONGINT; info: ARRAY BS OF CHAR;
 		BEGIN {EXCLUSIVE}
 		BEGIN {EXCLUSIVE}
 			IF ~(Files.ReadOnly IN flags) THEN
 			IF ~(Files.ReadOnly IN flags) THEN

+ 19 - 19
source/FTPFS.Mod

@@ -624,7 +624,7 @@ TYPE
 			END
 			END
 		END ScheduleClose;
 		END ScheduleClose;
 
 
-		PROCEDURE New0(name: ARRAY OF CHAR): Files.File;
+		PROCEDURE New0*(name: ARRAY OF CHAR): Files.File;
 		VAR i, res: LONGINT; f: File; buf: Buffer; head: FileHd; namebuf: FileName;
 		VAR i, res: LONGINT; f: File; buf: Buffer; head: FileHd; namebuf: FileName;
 		BEGIN (*{EXCLUSIVE}*)
 		BEGIN (*{EXCLUSIVE}*)
 			lock.Acquire;
 			lock.Acquire;
@@ -691,7 +691,7 @@ TYPE
 			RETURN res=0
 			RETURN res=0
 		END Receive;
 		END Receive;
 
 
-		PROCEDURE Old0(name: ARRAY OF CHAR): Files.File;
+		PROCEDURE Old0*(name: ARRAY OF CHAR): Files.File;
 		VAR
 		VAR
 			i, k, res: LONGINT; f: File; header: DiskAdr; buf: Buffer; head: FileHd;
 			i, k, res: LONGINT; f: File; header: DiskAdr; buf: Buffer; head: FileHd;
 			namebuf, local: FileName; super: SuperIndex; sub: SubIndex; sec: IndexSector;
 			namebuf, local: FileName; super: SuperIndex; sub: SubIndex; sec: IndexSector;
@@ -756,7 +756,7 @@ TYPE
 			RETURN f
 			RETURN f
 		END Old0;
 		END Old0;
 
 
-		PROCEDURE Delete0(name: ARRAY OF CHAR; VAR key, res: LONGINT);
+		PROCEDURE Delete0*(name: ARRAY OF CHAR; VAR key, res: LONGINT);
 		VAR adr: DiskAdr; namebuf: FileName; head: FileHeader;
 		VAR adr: DiskAdr; namebuf: FileName; head: FileHeader;
 		BEGIN (*{EXCLUSIVE}*)
 		BEGIN (*{EXCLUSIVE}*)
 			lock.Acquire;
 			lock.Acquire;
@@ -777,7 +777,7 @@ TYPE
 			lock.Release
 			lock.Release
 		END Delete0;
 		END Delete0;
 
 
-		PROCEDURE Rename0(old, new: ARRAY OF CHAR; f: Files.File; VAR res: LONGINT);
+		PROCEDURE Rename0*(old, new: ARRAY OF CHAR; f: Files.File; VAR res: LONGINT);
 		VAR adr: DiskAdr; oldbuf, newbuf: FileName;  head: FileHeader;
 		VAR adr: DiskAdr; oldbuf, newbuf: FileName;  head: FileHeader;
 		BEGIN (*{EXCLUSIVE}*)
 		BEGIN (*{EXCLUSIVE}*)
 			lock.Acquire;
 			lock.Acquire;
@@ -802,7 +802,7 @@ TYPE
 			lock.Release
 			lock.Release
 		END Rename0;
 		END Rename0;
 
 
-		PROCEDURE Enumerate0(mask: ARRAY OF CHAR; flags: SET; enum: Files.Enumerator);
+		PROCEDURE Enumerate0*(mask: ARRAY OF CHAR; flags: SET; enum: Files.Enumerator);
 		VAR b: BOOLEAN; fh: FileHeader; fn: ARRAY Files.PrefixLength+FnLength OF CHAR;
 		VAR b: BOOLEAN; fh: FileHeader; fn: ARRAY Files.PrefixLength+FnLength OF CHAR;
 		BEGIN (*{EXCLUSIVE}*)
 		BEGIN (*{EXCLUSIVE}*)
 			lock.Acquire;
 			lock.Acquire;
@@ -810,7 +810,7 @@ TYPE
 			lock.Release
 			lock.Release
 		END Enumerate0;
 		END Enumerate0;
 
 
-		PROCEDURE FileKey(name: ARRAY OF CHAR): LONGINT;
+		PROCEDURE FileKey*(name: ARRAY OF CHAR): LONGINT;
 			VAR res: LONGINT; namebuf: FileName; header: DiskAdr;
 			VAR res: LONGINT; namebuf: FileName; header: DiskAdr;
 		BEGIN (*{EXCLUSIVE}*)
 		BEGIN (*{EXCLUSIVE}*)
 			lock.Acquire;
 			lock.Acquire;
@@ -823,7 +823,7 @@ TYPE
 			RETURN header
 			RETURN header
 		END FileKey;
 		END FileKey;
 
 
-		PROCEDURE Finalize;
+		PROCEDURE Finalize*;
 		BEGIN (*{EXCLUSIVE}*)
 		BEGIN (*{EXCLUSIVE}*)
 			lock.Acquire;
 			lock.Acquire;
 			dir.Cleanup();
 			dir.Cleanup();
@@ -847,7 +847,7 @@ TYPE
 			ext: SuperIndex;
 			ext: SuperIndex;
 			sec: SectorTable;
 			sec: SectorTable;
 
 
-		PROCEDURE Set(VAR r: Files.Rider; pos: LONGINT);
+		PROCEDURE Set*(VAR r: Files.Rider; pos: LONGINT);
 		VAR a, b: LONGINT;
 		VAR a, b: LONGINT;
 		BEGIN {EXCLUSIVE}
 		BEGIN {EXCLUSIVE}
 			r.eof := FALSE; r.res := 0; r.file := SELF; r.fs := fs;
 			r.eof := FALSE; r.res := 0; r.file := SELF; r.fs := fs;
@@ -861,12 +861,12 @@ TYPE
 			r.apos := a; r.bpos := b; r.hint := firstbuf
 			r.apos := a; r.bpos := b; r.hint := firstbuf
 		END Set;
 		END Set;
 
 
-		PROCEDURE Pos(VAR r: Files.Rider): LONGINT;
+		PROCEDURE Pos*(VAR r: Files.Rider): LONGINT;
 		BEGIN
 		BEGIN
 			RETURN r.apos*SS + r.bpos - HS
 			RETURN r.apos*SS + r.bpos - HS
 		END Pos;
 		END Pos;
 
 
-		PROCEDURE Read(VAR r: Files.Rider; VAR x: CHAR);
+		PROCEDURE Read*(VAR r: Files.Rider; VAR x: CHAR);
 		VAR buf: Buffer;
 		VAR buf: Buffer;
 		BEGIN {EXCLUSIVE}
 		BEGIN {EXCLUSIVE}
 			buf := r.hint(Buffer);
 			buf := r.hint(Buffer);
@@ -889,7 +889,7 @@ TYPE
 			END
 			END
 		END Read;
 		END Read;
 
 
-		PROCEDURE ReadBytes(VAR r: Files.Rider; VAR x: ARRAY OF CHAR; ofs, len: LONGINT);
+		PROCEDURE ReadBytes*(VAR r: Files.Rider; VAR x: ARRAY OF CHAR; ofs, len: LONGINT);
 		VAR src, dst: ADDRESS; m: LONGINT; buf: Buffer;
 		VAR src, dst: ADDRESS; m: LONGINT; buf: Buffer;
 		BEGIN {EXCLUSIVE}
 		BEGIN {EXCLUSIVE}
 			IF LEN(x)-ofs < len THEN SYSTEM.HALT(19) END;
 			IF LEN(x)-ofs < len THEN SYSTEM.HALT(19) END;
@@ -928,7 +928,7 @@ TYPE
 			END
 			END
 		END ReadBytes;
 		END ReadBytes;
 
 
-		PROCEDURE Write(VAR r: Files.Rider; x: CHAR);
+		PROCEDURE Write*(VAR r: Files.Rider; x: CHAR);
 		VAR buf: Buffer;
 		VAR buf: Buffer;
 		BEGIN {EXCLUSIVE}
 		BEGIN {EXCLUSIVE}
 			buf := r.hint(Buffer);
 			buf := r.hint(Buffer);
@@ -955,7 +955,7 @@ TYPE
 			buf.data.B[r.bpos] := x; INC(r.bpos); buf.mod := TRUE
 			buf.data.B[r.bpos] := x; INC(r.bpos); buf.mod := TRUE
 		END Write;
 		END Write;
 
 
-		PROCEDURE WriteBytes(VAR r: Files.Rider; CONST x: ARRAY OF CHAR; ofs, len: LONGINT);
+		PROCEDURE WriteBytes*(VAR r: Files.Rider; CONST x: ARRAY OF CHAR; ofs, len: LONGINT);
 		VAR src, dst: ADDRESS; m: LONGINT; buf: Buffer;
 		VAR src, dst: ADDRESS; m: LONGINT; buf: Buffer;
 		BEGIN {EXCLUSIVE}
 		BEGIN {EXCLUSIVE}
 			IF LEN(x)-ofs < len THEN SYSTEM.HALT(19) END;
 			IF LEN(x)-ofs < len THEN SYSTEM.HALT(19) END;
@@ -990,27 +990,27 @@ TYPE
 			END
 			END
 		END WriteBytes;
 		END WriteBytes;
 
 
-		PROCEDURE Length(): LONGINT;
+		PROCEDURE Length*(): LONGINT;
 		BEGIN {EXCLUSIVE}
 		BEGIN {EXCLUSIVE}
 			RETURN aleng*SS + bleng - HS
 			RETURN aleng*SS + bleng - HS
 		END Length;
 		END Length;
 
 
-		PROCEDURE GetDate(VAR t, d: LONGINT);
+		PROCEDURE GetDate*(VAR t, d: LONGINT);
 		BEGIN {EXCLUSIVE}
 		BEGIN {EXCLUSIVE}
 			t := time; d := date
 			t := time; d := date
 		END GetDate;
 		END GetDate;
 
 
-		PROCEDURE SetDate(t, d: LONGINT);
+		PROCEDURE SetDate*(t, d: LONGINT);
 		BEGIN {EXCLUSIVE}
 		BEGIN {EXCLUSIVE}
 			modH := TRUE; time := t; date := d
 			modH := TRUE; time := t; date := d
 		END SetDate;
 		END SetDate;
 
 
-		PROCEDURE GetName(VAR name: ARRAY OF CHAR);
+		PROCEDURE GetName*(VAR name: ARRAY OF CHAR);
 		BEGIN {EXCLUSIVE}
 		BEGIN {EXCLUSIVE}
 			Files.JoinName(fs.prefix, SELF.name, name)
 			Files.JoinName(fs.prefix, SELF.name, name)
 		END GetName;
 		END GetName;
 
 
-		PROCEDURE Register0(VAR res: LONGINT);
+		PROCEDURE Register0*(VAR res: LONGINT);
 		BEGIN {EXCLUSIVE}
 		BEGIN {EXCLUSIVE}
 			Unbuffer(SELF);
 			Unbuffer(SELF);
 			IF ~registered & (name # "") THEN
 			IF ~registered & (name # "") THEN
@@ -1022,7 +1022,7 @@ TYPE
 			END
 			END
 		END Register0;
 		END Register0;
 
 
-		PROCEDURE Update;
+		PROCEDURE Update*;
 		BEGIN {EXCLUSIVE}
 		BEGIN {EXCLUSIVE}
 			Unbuffer(SELF)
 			Unbuffer(SELF)
 		END Update;
 		END Update;

+ 33 - 33
source/FoxAMDBackend.Mod

@@ -79,11 +79,11 @@ TYPE
 			useFPU := fpu
 			useFPU := fpu
 		END InitPhysicalRegisters;
 		END InitPhysicalRegisters;
 
 
-		PROCEDURE AllocationHint(index: LONGINT);
+		PROCEDURE AllocationHint*(index: LONGINT);
 		BEGIN hint := index
 		BEGIN hint := index
 		END AllocationHint;
 		END AllocationHint;
 
 
-		PROCEDURE NumberRegisters(): LONGINT;
+		PROCEDURE NumberRegisters*(): LONGINT;
 		BEGIN
 		BEGIN
 			RETURN LEN(toVirtual)
 			RETURN LEN(toVirtual)
 		END NumberRegisters;
 		END NumberRegisters;
@@ -113,7 +113,7 @@ TYPE
 			FOR i := 0 TO LEN(reserved)-1 DO reserved[i] := FALSE END;
 			FOR i := 0 TO LEN(reserved)-1 DO reserved[i] := FALSE END;
 		END InitPhysicalRegisters32;
 		END InitPhysicalRegisters32;
 
 
-		PROCEDURE Allocate(index: LONGINT; virtualRegister: Ticket);
+		PROCEDURE Allocate*(index: LONGINT; virtualRegister: Ticket);
 		BEGIN
 		BEGIN
 			(*
 			(*
 			D.String("allocate register x : index="); D.Int(index,1); D.Ln;
 			D.String("allocate register x : index="); D.Int(index,1); D.Ln;
@@ -149,7 +149,7 @@ TYPE
 			END;
 			END;
 		END Allocate;
 		END Allocate;
 
 
-		PROCEDURE SetReserved(index: LONGINT; res: BOOLEAN);
+		PROCEDURE SetReserved*(index: LONGINT; res: BOOLEAN);
 		BEGIN
 		BEGIN
 			IF index DIV 32 <=2 THEN
 			IF index DIV 32 <=2 THEN
 				index := index MOD 16;
 				index := index MOD 16;
@@ -162,12 +162,12 @@ TYPE
 			END;
 			END;
 		END SetReserved;
 		END SetReserved;
 
 
-		PROCEDURE Reserved(index: LONGINT): BOOLEAN;
+		PROCEDURE Reserved*(index: LONGINT): BOOLEAN;
 		BEGIN
 		BEGIN
 			RETURN (index>0) & reserved[index]
 			RETURN (index>0) & reserved[index]
 		END Reserved;
 		END Reserved;
 
 
-		PROCEDURE Free(index: LONGINT);
+		PROCEDURE Free*(index: LONGINT);
 		VAR x: Ticket;
 		VAR x: Ticket;
 		BEGIN
 		BEGIN
 			(*
 			(*
@@ -207,7 +207,7 @@ TYPE
 			END;
 			END;
 		END Free;
 		END Free;
 
 
-		PROCEDURE NextFree(CONST type: IntermediateCode.Type):LONGINT;
+		PROCEDURE NextFree*(CONST type: IntermediateCode.Type):LONGINT;
 		VAR i,sizeInBits,length, form: LONGINT;
 		VAR i,sizeInBits,length, form: LONGINT;
 
 
 			PROCEDURE GetGPHint(offset: LONGINT): LONGINT;
 			PROCEDURE GetGPHint(offset: LONGINT): LONGINT;
@@ -282,7 +282,7 @@ TYPE
 			RETURN i
 			RETURN i
 		END NextFree;
 		END NextFree;
 
 
-		PROCEDURE Mapped(physical: LONGINT): Ticket;
+		PROCEDURE Mapped*(physical: LONGINT): Ticket;
 		VAR virtual: Ticket;
 		VAR virtual: Ticket;
 		BEGIN
 		BEGIN
 			virtual := toVirtual[physical];
 			virtual := toVirtual[physical];
@@ -297,7 +297,7 @@ TYPE
 			RETURN virtual
 			RETURN virtual
 		END Mapped;
 		END Mapped;
 
 
-		PROCEDURE Dump(w: Streams.Writer);
+		PROCEDURE Dump*(w: Streams.Writer);
 		VAR i: LONGINT; virtual: Ticket;
 		VAR i: LONGINT; virtual: Ticket;
 		BEGIN
 		BEGIN
 			w.String("; ---- registers ----"); w.Ln;
 			w.String("; ---- registers ----"); w.Ln;
@@ -325,7 +325,7 @@ TYPE
 			InitPhysicalRegisters(fpu,cooperative);
 			InitPhysicalRegisters(fpu,cooperative);
 		END InitPhysicalRegisters64;
 		END InitPhysicalRegisters64;
 
 
-		PROCEDURE SetReserved(index: LONGINT; res: BOOLEAN);
+		PROCEDURE SetReserved*(index: LONGINT; res: BOOLEAN);
 		BEGIN
 		BEGIN
 			(*
 			(*
 			IF res THEN D.String("reserve ") ELSE D.String("unreserve ") END;
 			IF res THEN D.String("reserve ") ELSE D.String("unreserve ") END;
@@ -343,12 +343,12 @@ TYPE
 			END;
 			END;
 		END SetReserved;
 		END SetReserved;
 
 
-		PROCEDURE Reserved(index: LONGINT): BOOLEAN;
+		PROCEDURE Reserved*(index: LONGINT): BOOLEAN;
 		BEGIN
 		BEGIN
 			RETURN reserved[index]
 			RETURN reserved[index]
 		END Reserved;
 		END Reserved;
 
 
-		PROCEDURE Allocate(index: LONGINT; virtualRegister: Ticket);
+		PROCEDURE Allocate*(index: LONGINT; virtualRegister: Ticket);
 		BEGIN
 		BEGIN
 			(*
 			(*
 			D.String("allocate register x : index="); D.Int(index,1); D.Ln;
 			D.String("allocate register x : index="); D.Int(index,1); D.Ln;
@@ -379,7 +379,7 @@ TYPE
 			END;
 			END;
 		END Allocate;
 		END Allocate;
 
 
-		PROCEDURE Free(index: LONGINT);
+		PROCEDURE Free*(index: LONGINT);
 		BEGIN
 		BEGIN
 			(*
 			(*
 			D.String("release register x : index="); D.Int(index,1); D.Ln;
 			D.String("release register x : index="); D.Int(index,1); D.Ln;
@@ -418,7 +418,7 @@ TYPE
 			END;
 			END;
 		END Free;
 		END Free;
 
 
-		PROCEDURE NextFree(CONST type: IntermediateCode.Type): LONGINT;
+		PROCEDURE NextFree*(CONST type: IntermediateCode.Type): LONGINT;
 		VAR i: LONGINT;
 		VAR i: LONGINT;
 
 
 			PROCEDURE GetGPHint(offset: LONGINT): LONGINT;
 			PROCEDURE GetGPHint(offset: LONGINT): LONGINT;
@@ -488,7 +488,7 @@ TYPE
 			RETURN i;
 			RETURN i;
 		END NextFree;
 		END NextFree;
 
 
-		PROCEDURE Mapped(physical: LONGINT): Ticket;
+		PROCEDURE Mapped*(physical: LONGINT): Ticket;
 		VAR virtual: Ticket;
 		VAR virtual: Ticket;
 		BEGIN
 		BEGIN
 			virtual := toVirtual[physical];
 			virtual := toVirtual[physical];
@@ -569,7 +569,7 @@ TYPE
 		END InitGeneratorAMD64;
 		END InitGeneratorAMD64;
 
 
 		(*------------------- overwritten methods ----------------------*)
 		(*------------------- overwritten methods ----------------------*)
-		PROCEDURE Section(in: IntermediateCode.Section; out: BinaryCode.Section);
+		PROCEDURE Section*(in: IntermediateCode.Section; out: BinaryCode.Section);
 		VAR oldSpillStackSize: LONGINT;
 		VAR oldSpillStackSize: LONGINT;
 
 
 			PROCEDURE CheckEmptySpillStack;
 			PROCEDURE CheckEmptySpillStack;
@@ -600,7 +600,7 @@ TYPE
 			error := error OR emitter.error;
 			error := error OR emitter.error;
 		END Section;
 		END Section;
 
 
-		PROCEDURE Supported(CONST instruction: IntermediateCode.Instruction; VAR moduleName, procedureName: ARRAY OF CHAR): BOOLEAN;
+		PROCEDURE Supported*(CONST instruction: IntermediateCode.Instruction; VAR moduleName, procedureName: ARRAY OF CHAR): BOOLEAN;
 		BEGIN
 		BEGIN
 			COPY(runtimeModuleName, moduleName);
 			COPY(runtimeModuleName, moduleName);
 			IF (cpuBits=32) & (instruction.op2.type.sizeInBits = IntermediateCode.Bits64) & (instruction.op2.type.form IN IntermediateCode.Integer) THEN
 			IF (cpuBits=32) & (instruction.op2.type.sizeInBits = IntermediateCode.Bits64) & (instruction.op2.type.form IN IntermediateCode.Integer) THEN
@@ -645,7 +645,7 @@ TYPE
 		END Supported;
 		END Supported;
 
 
 		(* input: type (such as that of an intermediate operand), output: low and high type (such as in low and high type of an operand) *)
 		(* input: type (such as that of an intermediate operand), output: low and high type (such as in low and high type of an operand) *)
-		PROCEDURE GetPartType(CONST type: IntermediateCode.Type; part: LONGINT; VAR typePart: IntermediateCode.Type);
+		PROCEDURE GetPartType*(CONST type: IntermediateCode.Type; part: LONGINT; VAR typePart: IntermediateCode.Type);
 		BEGIN
 		BEGIN
 			ASSERT(type.sizeInBits >0);
 			ASSERT(type.sizeInBits >0);
 			IF (type.sizeInBits > cpuBits) & (type.form IN IntermediateCode.Integer) THEN
 			IF (type.sizeInBits > cpuBits) & (type.form IN IntermediateCode.Integer) THEN
@@ -695,7 +695,7 @@ TYPE
 			END;
 			END;
 		END Move;
 		END Move;
 
 
-		PROCEDURE ToSpillStack(ticket: Ticket);
+		PROCEDURE ToSpillStack*(ticket: Ticket);
 		VAR op: Assembler.Operand;
 		VAR op: Assembler.Operand;
 		BEGIN
 		BEGIN
 			IF (ticket.type.form = IntermediateCode.Float) & backend.forceFPU THEN
 			IF (ticket.type.form = IntermediateCode.Float) & backend.forceFPU THEN
@@ -710,21 +710,21 @@ TYPE
 			END;
 			END;
 		END ToSpillStack;
 		END ToSpillStack;
 
 
-		PROCEDURE AllocateSpillStack(size: LONGINT);
+		PROCEDURE AllocateSpillStack*(size: LONGINT);
 		BEGIN
 		BEGIN
 			IF ~FrameSpillStack THEN
 			IF ~FrameSpillStack THEN
 				AllocateStack(cpuBits DIV 8*size)
 				AllocateStack(cpuBits DIV 8*size)
 			END;
 			END;
 		END AllocateSpillStack;
 		END AllocateSpillStack;
 
 
-		PROCEDURE ToRegister(ticket: Ticket);
+		PROCEDURE ToRegister*(ticket: Ticket);
 		VAR op: Assembler.Operand;
 		VAR op: Assembler.Operand;
 		BEGIN
 		BEGIN
 			GetSpillOperand(ticket,op);
 			GetSpillOperand(ticket,op);
 			emitter.Emit2(InstructionSet.opMOV,registerOperands[ticket.register],op);
 			emitter.Emit2(InstructionSet.opMOV,registerOperands[ticket.register],op);
 		END ToRegister;
 		END ToRegister;
 
 
-		PROCEDURE ExchangeTickets(ticket1,ticket2: Ticket);
+		PROCEDURE ExchangeTickets*(ticket1,ticket2: Ticket);
 		VAR op1,op2: Assembler.Operand;
 		VAR op1,op2: Assembler.Operand;
 		BEGIN
 		BEGIN
 			TicketToOperand(ticket1, op1);
 			TicketToOperand(ticket1, op1);
@@ -1066,7 +1066,7 @@ TYPE
 		BEGIN RETURN (operand.type.form IN IntermediateCode.Integer) & (operand.type.sizeInBits > cpuBits)
 		BEGIN RETURN (operand.type.form IN IntermediateCode.Integer) & (operand.type.sizeInBits > cpuBits)
 		END IsComplex;
 		END IsComplex;
 
 
-		PROCEDURE Generate(VAR instruction: IntermediateCode.Instruction);
+		PROCEDURE Generate*(VAR instruction: IntermediateCode.Instruction);
 		VAR opcode: SHORTINT; ticket: Ticket; hwreg, lastUse, i, part: LONGINT;
 		VAR opcode: SHORTINT; ticket: Ticket; hwreg, lastUse, i, part: LONGINT;
 		BEGIN
 		BEGIN
 			(*!IF ((instruction.opcode = IntermediateCode.mov) OR (instruction.opcode = IntermediateCode.pop)) & (instruction.op1.register <= IntermediateCode.ParameterRegister) THEN
 			(*!IF ((instruction.opcode = IntermediateCode.mov) OR (instruction.opcode = IntermediateCode.pop)) & (instruction.op1.register <= IntermediateCode.ParameterRegister) THEN
@@ -1225,7 +1225,7 @@ TYPE
 
 
 		END Generate;
 		END Generate;
 
 
-		PROCEDURE PostGenerate(CONST instruction: IntermediateCode.Instruction);
+		PROCEDURE PostGenerate*(CONST instruction: IntermediateCode.Instruction);
 		VAR ticket: Ticket;
 		VAR ticket: Ticket;
 		BEGIN
 		BEGIN
 			TryUnmap(instruction.op3); TryUnmap(instruction.op2); TryUnmap(instruction.op1);
 			TryUnmap(instruction.op3); TryUnmap(instruction.op2); TryUnmap(instruction.op1);
@@ -3184,12 +3184,12 @@ TYPE
 			SetName("AMD");
 			SetName("AMD");
 		END InitBackendAMD64;
 		END InitBackendAMD64;
 
 
-		PROCEDURE Initialize(diagnostics: Diagnostics.Diagnostics; log: Streams.Writer; flags: SET; checker: SemanticChecker.Checker; system: Global.System);
+		PROCEDURE Initialize*(diagnostics: Diagnostics.Diagnostics; log: Streams.Writer; flags: SET; checker: SemanticChecker.Checker; system: Global.System);
 		BEGIN
 		BEGIN
 			Initialize^(diagnostics,log, flags,checker,system); NEW(cg, runtimeModuleName, diagnostics, SELF);
 			Initialize^(diagnostics,log, flags,checker,system); NEW(cg, runtimeModuleName, diagnostics, SELF);
 		END Initialize;
 		END Initialize;
 
 
-		PROCEDURE GetSystem(): Global.System;
+		PROCEDURE GetSystem*(): Global.System;
 		VAR system: Global.System;
 		VAR system: Global.System;
 
 
 			PROCEDURE AddRegister(CONST name: Scanner.IdentifierString; val: LONGINT);
 			PROCEDURE AddRegister(CONST name: Scanner.IdentifierString; val: LONGINT);
@@ -3300,7 +3300,7 @@ TYPE
 			RETURN XMM0 + index;
 			RETURN XMM0 + index;
 		END HardwareFloatRegister;
 		END HardwareFloatRegister;
 		
 		
-		PROCEDURE ParameterRegister(callingConvention: SyntaxTree.CallingConvention;  type: IntermediateCode.Type; index: LONGINT): LONGINT;
+		PROCEDURE ParameterRegister*(callingConvention: SyntaxTree.CallingConvention;  type: IntermediateCode.Type; index: LONGINT): LONGINT;
 		VAR size: LONGINT; 
 		VAR size: LONGINT; 
 		BEGIN
 		BEGIN
 			IF type.form IN IntermediateCode.Integer THEN
 			IF type.form IN IntermediateCode.Integer THEN
@@ -3316,7 +3316,7 @@ TYPE
 			END;
 			END;
 		END ParameterRegister;
 		END ParameterRegister;
 
 
-		PROCEDURE SupportedInstruction(CONST instruction: IntermediateCode.Instruction; VAR moduleName, procedureName: ARRAY OF CHAR): BOOLEAN;
+		PROCEDURE SupportedInstruction*(CONST instruction: IntermediateCode.Instruction; VAR moduleName, procedureName: ARRAY OF CHAR): BOOLEAN;
 		BEGIN
 		BEGIN
 			RETURN cg.Supported(instruction,moduleName,procedureName);
 			RETURN cg.Supported(instruction,moduleName,procedureName);
 		END SupportedInstruction;
 		END SupportedInstruction;
@@ -3463,7 +3463,7 @@ TYPE
 			RETURN result
 			RETURN result
 		END ProcessIntermediateCodeModule;
 		END ProcessIntermediateCodeModule;
 
 
-		PROCEDURE FindPC(x: SyntaxTree.Module; CONST sectionName: ARRAY OF CHAR; sectionOffset: LONGINT);
+		PROCEDURE FindPC*(x: SyntaxTree.Module; CONST sectionName: ARRAY OF CHAR; sectionOffset: LONGINT);
 		VAR
 		VAR
 			section: Sections.Section; binarySection: BinaryCode.Section; label: BinaryCode.LabelList; module: Formats.GeneratedModule;
 			section: Sections.Section; binarySection: BinaryCode.Section; label: BinaryCode.LabelList; module: Formats.GeneratedModule;
 			i: LONGINT; pooledName: Basic.SegmentedName;
 			i: LONGINT; pooledName: Basic.SegmentedName;
@@ -3511,7 +3511,7 @@ TYPE
 		BEGIN instructionSet := "AMD";
 		BEGIN instructionSet := "AMD";
 		END GetDescription;
 		END GetDescription;
 
 
-		PROCEDURE DefineOptions(options: Options.Options);
+		PROCEDURE DefineOptions*(options: Options.Options);
 		BEGIN
 		BEGIN
 			options.Add(0X,"bits",Options.Integer);
 			options.Add(0X,"bits",Options.Integer);
 			options.Add(0X,"traceable", Options.Flag);
 			options.Add(0X,"traceable", Options.Flag);
@@ -3519,7 +3519,7 @@ TYPE
 			DefineOptions^(options);
 			DefineOptions^(options);
 		END DefineOptions;
 		END DefineOptions;
 
 
-		PROCEDURE GetOptions(options: Options.Options);
+		PROCEDURE GetOptions*(options: Options.Options);
 		BEGIN
 		BEGIN
 			IF ~options.GetInteger("bits",bits) THEN bits := 32 END;
 			IF ~options.GetInteger("bits",bits) THEN bits := 32 END;
 			traceable := options.GetFlag("traceable");
 			traceable := options.GetFlag("traceable");
@@ -3527,11 +3527,11 @@ TYPE
 			GetOptions^(options);
 			GetOptions^(options);
 		END GetOptions;
 		END GetOptions;
 
 
-		PROCEDURE DefaultObjectFileFormat(): Formats.ObjectFileFormat;
+		PROCEDURE DefaultObjectFileFormat*(): Formats.ObjectFileFormat;
 		BEGIN RETURN ObjectFileFormat.Get();
 		BEGIN RETURN ObjectFileFormat.Get();
 		END DefaultObjectFileFormat;
 		END DefaultObjectFileFormat;
 
 
-		PROCEDURE DefaultSymbolFileFormat(): Formats.SymbolFileFormat;
+		PROCEDURE DefaultSymbolFileFormat*(): Formats.SymbolFileFormat;
 		BEGIN
 		BEGIN
 			RETURN NIL
 			RETURN NIL
 		END DefaultSymbolFileFormat;
 		END DefaultSymbolFileFormat;

+ 24 - 24
source/FoxARMBackend.Mod

@@ -402,12 +402,12 @@ TYPE
 		END InitPhysicalRegisters;
 		END InitPhysicalRegisters;
 
 
 		(** the number of physical registers **)
 		(** the number of physical registers **)
-		PROCEDURE NumberRegisters(): LONGINT;
+		PROCEDURE NumberRegisters*(): LONGINT;
 		BEGIN RETURN InstructionSet.NumberRegisters
 		BEGIN RETURN InstructionSet.NumberRegisters
 		END NumberRegisters;
 		END NumberRegisters;
 
 
 		(** allocate, i.e., map, a physical register to a ticket **)
 		(** allocate, i.e., map, a physical register to a ticket **)
-		PROCEDURE Allocate(physicalRegisterNumber: LONGINT; ticket: Ticket);
+		PROCEDURE Allocate*(physicalRegisterNumber: LONGINT; ticket: Ticket);
 		VAR index: LONGINT;
 		VAR index: LONGINT;
 		BEGIN
 		BEGIN
 			ASSERT(~ticket.spilled);
 			ASSERT(~ticket.spilled);
@@ -427,17 +427,17 @@ TYPE
 		END Allocate;
 		END Allocate;
 
 
 		(** set whether a certain physical register is reserved or not **)
 		(** set whether a certain physical register is reserved or not **)
-		PROCEDURE SetReserved(physicalRegisterNumber: LONGINT; isReserved: BOOLEAN);
+		PROCEDURE SetReserved*(physicalRegisterNumber: LONGINT; isReserved: BOOLEAN);
 		BEGIN reserved[physicalRegisterNumber] := isReserved
 		BEGIN reserved[physicalRegisterNumber] := isReserved
 		END SetReserved;
 		END SetReserved;
 
 
 		(** whether a certain physical register is reserved **)
 		(** whether a certain physical register is reserved **)
-		PROCEDURE Reserved(physicalRegisterNumber: LONGINT): BOOLEAN;
+		PROCEDURE Reserved*(physicalRegisterNumber: LONGINT): BOOLEAN;
 		BEGIN RETURN (physicalRegisterNumber > 0) & reserved[physicalRegisterNumber]
 		BEGIN RETURN (physicalRegisterNumber > 0) & reserved[physicalRegisterNumber]
 		END Reserved;
 		END Reserved;
 
 
 		(** free a certain physical register **)
 		(** free a certain physical register **)
-		PROCEDURE Free(physicalRegisterNumber: LONGINT);
+		PROCEDURE Free*(physicalRegisterNumber: LONGINT);
 		VAR index: LONGINT;
 		VAR index: LONGINT;
 		BEGIN
 		BEGIN
 			Assert((toVirtual[physicalRegisterNumber] # NIL), "register not reserved");
 			Assert((toVirtual[physicalRegisterNumber] # NIL), "register not reserved");
@@ -464,7 +464,7 @@ TYPE
 		(** get the number of the next free physical register for a certain data type
 		(** get the number of the next free physical register for a certain data type
 		- if a register hint has been set, it is respected if possible
 		- if a register hint has been set, it is respected if possible
 		**)
 		**)
-		PROCEDURE NextFree(CONST type: IntermediateCode.Type): LONGINT;
+		PROCEDURE NextFree*(CONST type: IntermediateCode.Type): LONGINT;
 		VAR
 		VAR
 			result, i: LONGINT;
 			result, i: LONGINT;
 		BEGIN
 		BEGIN
@@ -504,17 +504,17 @@ TYPE
 		END NextFree;
 		END NextFree;
 
 
 		(** give the register allocator a hint on what physical register to use next **)
 		(** give the register allocator a hint on what physical register to use next **)
-		PROCEDURE AllocationHint(physicalRegisterNumber: LONGINT);
+		PROCEDURE AllocationHint*(physicalRegisterNumber: LONGINT);
 		BEGIN hint := physicalRegisterNumber
 		BEGIN hint := physicalRegisterNumber
 		END AllocationHint;
 		END AllocationHint;
 
 
 		(** get the ticket that is currently mapped to a certain physical register **)
 		(** get the ticket that is currently mapped to a certain physical register **)
-		PROCEDURE Mapped(physicalRegisterNumber: LONGINT): Ticket;
+		PROCEDURE Mapped*(physicalRegisterNumber: LONGINT): Ticket;
 		BEGIN RETURN toVirtual[physicalRegisterNumber]
 		BEGIN RETURN toVirtual[physicalRegisterNumber]
 		END Mapped;
 		END Mapped;
 
 
 		(** dump the current register mapping to a stream **)
 		(** dump the current register mapping to a stream **)
-		PROCEDURE Dump(w: Streams.Writer);
+		PROCEDURE Dump*(w: Streams.Writer);
 		VAR i: LONGINT; virtual: Ticket;
 		VAR i: LONGINT; virtual: Ticket;
 		BEGIN
 		BEGIN
 			w.String("---- registers ----"); w.Ln;
 			w.String("---- registers ----"); w.Ln;
@@ -587,7 +587,7 @@ TYPE
 		(*------------------- overwritten methods ----------------------*)
 		(*------------------- overwritten methods ----------------------*)
 
 
 		(* TODO: revise this *)
 		(* TODO: revise this *)
-		PROCEDURE Section(in: IntermediateCode.Section; out: BinaryCode.Section);
+		PROCEDURE Section*(in: IntermediateCode.Section; out: BinaryCode.Section);
 		VAR
 		VAR
 			oldSpillStackSize: LONGINT;
 			oldSpillStackSize: LONGINT;
 
 
@@ -635,7 +635,7 @@ TYPE
 		(* TODO: complete this *)
 		(* TODO: complete this *)
 		(** whether the code generator can generate code for a certain intermediate code intstruction
 		(** whether the code generator can generate code for a certain intermediate code intstruction
 		if not, the location of a runtime is returned **)
 		if not, the location of a runtime is returned **)
-		PROCEDURE Supported(CONST irInstruction: IntermediateCode.Instruction; VAR moduleName, procedureName: ARRAY OF CHAR): BOOLEAN;
+		PROCEDURE Supported*(CONST irInstruction: IntermediateCode.Instruction; VAR moduleName, procedureName: ARRAY OF CHAR): BOOLEAN;
 		VAR
 		VAR
 			result: BOOLEAN; value: HUGEINT; exp: LONGINT;
 			result: BOOLEAN; value: HUGEINT; exp: LONGINT;
 		BEGIN
 		BEGIN
@@ -1430,7 +1430,7 @@ TYPE
 
 
 		(* the intermediate code type of a part
 		(* the intermediate code type of a part
 		- a part type is by definition directly representable in a register *)
 		- a part type is by definition directly representable in a register *)
-		PROCEDURE GetPartType(CONST type: IntermediateCode.Type; part: LONGINT; VAR partType: IntermediateCode.Type);
+		PROCEDURE GetPartType*(CONST type: IntermediateCode.Type; part: LONGINT; VAR partType: IntermediateCode.Type);
 		BEGIN
 		BEGIN
 			ASSERT((part = Low) OR (part = High));
 			ASSERT((part = Low) OR (part = High));
 			IF (type.sizeInBits <= 32) OR (type.form = IntermediateCode.Float) & backend.useFPU64 THEN
 			IF (type.sizeInBits <= 32) OR (type.form = IntermediateCode.Float) & backend.useFPU64 THEN
@@ -1499,7 +1499,7 @@ TYPE
 		END NegatedIrOperandIsDirectlyEncodable;
 		END NegatedIrOperandIsDirectlyEncodable;
 
 
 		(** generate code for a certain IR instruction **)
 		(** generate code for a certain IR instruction **)
-		PROCEDURE Generate(VAR irInstruction: IntermediateCode.Instruction);
+		PROCEDURE Generate*(VAR irInstruction: IntermediateCode.Instruction);
 		BEGIN
 		BEGIN
 			(* CheckFixups; *)
 			(* CheckFixups; *)
 			EmitFixupBlockIfNeeded;
 			EmitFixupBlockIfNeeded;
@@ -1562,7 +1562,7 @@ TYPE
 
 
 		END Generate;
 		END Generate;
 
 
-		PROCEDURE PostGenerate(CONST instruction: IntermediateCode.Instruction);
+		PROCEDURE PostGenerate*(CONST instruction: IntermediateCode.Instruction);
 		VAR ticket: Ticket;
 		VAR ticket: Ticket;
 		BEGIN
 		BEGIN
 			TryUnmap(instruction.op3); TryUnmap(instruction.op2); TryUnmap(instruction.op1);
 			TryUnmap(instruction.op3); TryUnmap(instruction.op2); TryUnmap(instruction.op1);
@@ -3415,7 +3415,7 @@ TYPE
 			SetName("ARM");
 			SetName("ARM");
 		END InitBackendARM;
 		END InitBackendARM;
 
 
-		PROCEDURE Initialize(diagnostics: Diagnostics.Diagnostics; log: Streams.Writer; flags: SET; checker: SemanticChecker.Checker; system: Global.System);
+		PROCEDURE Initialize*(diagnostics: Diagnostics.Diagnostics; log: Streams.Writer; flags: SET; checker: SemanticChecker.Checker; system: Global.System);
 		BEGIN
 		BEGIN
 			Initialize^(diagnostics, log, flags, checker, system);
 			Initialize^(diagnostics, log, flags, checker, system);
 			NEW(cg, runtimeModuleName, diagnostics, SELF)
 			NEW(cg, runtimeModuleName, diagnostics, SELF)
@@ -3488,7 +3488,7 @@ TYPE
 			New; RealVarPar; IntVarPar; Finish("UNPK", UNPK);
 			New; RealVarPar; IntVarPar; Finish("UNPK", UNPK);
 		END EnterCustomBuiltins;
 		END EnterCustomBuiltins;
 
 
-		PROCEDURE GetSystem(): Global.System;
+		PROCEDURE GetSystem*(): Global.System;
 		BEGIN
 		BEGIN
 			(* create system object if not yet existing *)
 			(* create system object if not yet existing *)
 			IF system = NIL THEN
 			IF system = NIL THEN
@@ -3538,7 +3538,7 @@ TYPE
 
 
 		(** whether the code generator can generate code for a certain IR instruction
 		(** whether the code generator can generate code for a certain IR instruction
 		if not, where to find the runtime procedure that is to be called instead **)
 		if not, where to find the runtime procedure that is to be called instead **)
-		PROCEDURE SupportedInstruction(CONST irInstruction: IntermediateCode.Instruction; VAR moduleName, procedureName: ARRAY OF CHAR): BOOLEAN;
+		PROCEDURE SupportedInstruction*(CONST irInstruction: IntermediateCode.Instruction; VAR moduleName, procedureName: ARRAY OF CHAR): BOOLEAN;
 		BEGIN
 		BEGIN
 			(* only necessary for binary object file format for symbol / module entry in IntermediateBackend *)
 			(* only necessary for binary object file format for symbol / module entry in IntermediateBackend *)
 			RETURN cg.Supported(irInstruction, moduleName, procedureName);
 			RETURN cg.Supported(irInstruction, moduleName, procedureName);
@@ -3546,7 +3546,7 @@ TYPE
 
 
 		(** whether a certain intermediate code immediate value can be directly appear in code
 		(** whether a certain intermediate code immediate value can be directly appear in code
 		if not, the value is stored in a const section and loaded from there **)
 		if not, the value is stored in a const section and loaded from there **)
-		PROCEDURE SupportedImmediate(CONST irImmediateOperand: IntermediateCode.Operand): BOOLEAN;
+		PROCEDURE SupportedImmediate*(CONST irImmediateOperand: IntermediateCode.Operand): BOOLEAN;
 		VAR
 		VAR
 			result: BOOLEAN;
 			result: BOOLEAN;
 		BEGIN
 		BEGIN
@@ -3728,7 +3728,7 @@ TYPE
 			RETURN result
 			RETURN result
 		END ProcessIntermediateCodeModule;
 		END ProcessIntermediateCodeModule;
 
 
-		PROCEDURE DefineOptions(options: Options.Options);
+		PROCEDURE DefineOptions*(options: Options.Options);
 		BEGIN
 		BEGIN
 			options.Add(0X, UseFPU32Flag, Options.Flag);
 			options.Add(0X, UseFPU32Flag, Options.Flag);
 			options.Add(0X, UseFPU64Flag, Options.Flag);
 			options.Add(0X, UseFPU64Flag, Options.Flag);
@@ -3736,7 +3736,7 @@ TYPE
 			DefineOptions^(options);
 			DefineOptions^(options);
 		END DefineOptions;
 		END DefineOptions;
 
 
-		PROCEDURE GetOptions(options: Options.Options);
+		PROCEDURE GetOptions*(options: Options.Options);
 		BEGIN
 		BEGIN
 			IF options.GetFlag(UseFPU32Flag) THEN useFPU32 := TRUE END;
 			IF options.GetFlag(UseFPU32Flag) THEN useFPU32 := TRUE END;
 			IF options.GetFlag(UseFPU64Flag) THEN useFPU64 := TRUE; useFPU32 := TRUE END;
 			IF options.GetFlag(UseFPU64Flag) THEN useFPU64 := TRUE; useFPU32 := TRUE END;
@@ -3744,20 +3744,20 @@ TYPE
 			GetOptions^(options);
 			GetOptions^(options);
 		END GetOptions;
 		END GetOptions;
 
 
-		PROCEDURE DefaultObjectFileFormat(): Formats.ObjectFileFormat;
+		PROCEDURE DefaultObjectFileFormat*(): Formats.ObjectFileFormat;
 		BEGIN RETURN ObjectFileFormat.Get();
 		BEGIN RETURN ObjectFileFormat.Get();
 		END DefaultObjectFileFormat;
 		END DefaultObjectFileFormat;
 
 
-		PROCEDURE DefaultSymbolFileFormat(): Formats.SymbolFileFormat;
+		PROCEDURE DefaultSymbolFileFormat*(): Formats.SymbolFileFormat;
 		BEGIN RETURN NIL
 		BEGIN RETURN NIL
 		END DefaultSymbolFileFormat;
 		END DefaultSymbolFileFormat;
 
 
 		(** get the name of the backend **)
 		(** get the name of the backend **)
-		PROCEDURE GetDescription(VAR instructionSet: ARRAY OF CHAR);
+		PROCEDURE GetDescription*(VAR instructionSet: ARRAY OF CHAR);
 		BEGIN instructionSet := "ARM"
 		BEGIN instructionSet := "ARM"
 		END GetDescription;
 		END GetDescription;
 
 
-		PROCEDURE FindPC(x: SyntaxTree.Module; CONST sectionName: ARRAY OF CHAR; sectionOffset: LONGINT);
+		PROCEDURE FindPC*(x: SyntaxTree.Module; CONST sectionName: ARRAY OF CHAR; sectionOffset: LONGINT);
 		VAR
 		VAR
 			section: Sections.Section; binarySection: BinaryCode.Section; label: BinaryCode.LabelList; module: Formats.GeneratedModule;
 			section: Sections.Section; binarySection: BinaryCode.Section; label: BinaryCode.LabelList; module: Formats.GeneratedModule;
 			i: LONGINT; pooledName: Basic.SegmentedName;
 			i: LONGINT; pooledName: Basic.SegmentedName;

+ 1 - 1
source/FoxARMInstructionSet.Mod

@@ -2865,7 +2865,7 @@ CONST
 	TYPE
 	TYPE
 		Disasm = OBJECT (Disassembler.Disassembler)
 		Disasm = OBJECT (Disassembler.Disassembler)
 
 
-			PROCEDURE DisassembleInstruction(bitSet: BitSets.BitSet; VAR adr: LONGINT; maxInstructionSize: LONGINT; w:Streams.Writer);
+			PROCEDURE DisassembleInstruction*(bitSet: BitSets.BitSet; VAR adr: LONGINT; maxInstructionSize: LONGINT; w:Streams.Writer);
 			VAR instruction: Instruction; value: LONGINT; mnemonic: LONGINT;
 			VAR instruction: Instruction; value: LONGINT; mnemonic: LONGINT;
 			BEGIN
 			BEGIN
 				(* maxInstructionSize can be ignored here *)
 				(* maxInstructionSize can be ignored here *)

+ 9 - 9
source/FoxActiveCells.Mod

@@ -127,7 +127,7 @@ TYPE
 		delegate-: PortInstance;
 		delegate-: PortInstance;
 		index-: LONGINT;
 		index-: LONGINT;
 
 
-		PROCEDURE Same(as: Symbol; flags: SET): BOOLEAN;
+		PROCEDURE Same*(as: Symbol; flags: SET): BOOLEAN;
 		BEGIN
 		BEGIN
 			IF TraceSame THEN TRACE("Port",name) END;
 			IF TraceSame THEN TRACE("Port",name) END;
 			IF (as = NIL) OR ~(as IS Port) THEN RETURN FALSE END;
 			IF (as = NIL) OR ~(as IS Port) THEN RETURN FALSE END;
@@ -250,7 +250,7 @@ TYPE
 		adr-: LONGINT;
 		adr-: LONGINT;
 		index-: LONGINT;
 		index-: LONGINT;
 
 
-		PROCEDURE Same(as: Symbol; flags: SET): BOOLEAN;
+		PROCEDURE Same*(as: Symbol; flags: SET): BOOLEAN;
 		BEGIN
 		BEGIN
 			IF TraceSame THEN TRACE("Device",name) END;
 			IF TraceSame THEN TRACE("Device",name) END;
 			IF (as = NIL) OR ~(as IS Device) THEN RETURN FALSE END;
 			IF (as = NIL) OR ~(as IS Device) THEN RETURN FALSE END;
@@ -335,7 +335,7 @@ TYPE
 		fileName*: Files.FileName; (* preparation for separate compilation (optimization) *)
 		fileName*: Files.FileName; (* preparation for separate compilation (optimization) *)
 		index-: LONGINT;
 		index-: LONGINT;
 
 
-		PROCEDURE Same(as: Symbol; flags: SET): BOOLEAN;
+		PROCEDURE Same*(as: Symbol; flags: SET): BOOLEAN;
 		BEGIN
 		BEGIN
 			IF TraceSame THEN TRACE("Module",name) END;
 			IF TraceSame THEN TRACE("Module",name) END;
 			IF (as = NIL) OR  ~(as IS Module) THEN RETURN FALSE END;
 			IF (as = NIL) OR  ~(as IS Module) THEN RETURN FALSE END;
@@ -422,7 +422,7 @@ TYPE
 		boolean-: BOOLEAN;
 		boolean-: BOOLEAN;
 		string-: Strings.String;
 		string-: Strings.String;
 
 
-		PROCEDURE Same(as: Symbol; flags: SET): BOOLEAN;
+		PROCEDURE Same*(as: Symbol; flags: SET): BOOLEAN;
 		BEGIN
 		BEGIN
 			IF TraceSame THEN TRACE("Parameter",name) END;
 			IF TraceSame THEN TRACE("Parameter",name) END;
 			IF (as = NIL) OR ~(as IS Parameter) THEN RETURN FALSE END;
 			IF (as = NIL) OR ~(as IS Parameter) THEN RETURN FALSE END;
@@ -553,7 +553,7 @@ TYPE
 		instructionMemorySize-, dataMemorySize-: LONGINT;
 		instructionMemorySize-, dataMemorySize-: LONGINT;
 		capabilities-: SET;
 		capabilities-: SET;
 
 
-		PROCEDURE Same(as: Symbol; flags: SET): BOOLEAN;
+		PROCEDURE Same*(as: Symbol; flags: SET): BOOLEAN;
 		BEGIN
 		BEGIN
 			IF TraceSame THEN TRACE("Instance",name) END;
 			IF TraceSame THEN TRACE("Instance",name) END;
 			IF (as = NIL) OR ~(as IS Instance) THEN RETURN FALSE END;
 			IF (as = NIL) OR ~(as IS Instance) THEN RETURN FALSE END;
@@ -674,7 +674,7 @@ TYPE
 			END;
 			END;
 		END Read;
 		END Read;
 
 
-		PROCEDURE AppendToMsg(VAR msg: ARRAY OF CHAR);
+		PROCEDURE AppendToMsg*(VAR msg: ARRAY OF CHAR);
 		VAR name:Name;
 		VAR name:Name;
 		BEGIN
 		BEGIN
 			AppendToMsg^(msg);
 			AppendToMsg^(msg);
@@ -744,7 +744,7 @@ TYPE
 			index := -1;
 			index := -1;
 		END InitScope;
 		END InitScope;
 
 
-		PROCEDURE Same(as: Symbol; flags: SET): BOOLEAN;
+		PROCEDURE Same*(as: Symbol; flags: SET): BOOLEAN;
 		BEGIN
 		BEGIN
 			IF TraceSame THEN TRACE("Scope",name) END;
 			IF TraceSame THEN TRACE("Scope",name) END;
 			IF (as = NIL) OR ~(as IS Scope) THEN RETURN FALSE END;
 			IF (as = NIL) OR ~(as IS Scope) THEN RETURN FALSE END;
@@ -866,7 +866,7 @@ TYPE
 		instructionMemorySize-, dataMemorySize-: LONGINT; (* sizes in units *)
 		instructionMemorySize-, dataMemorySize-: LONGINT; (* sizes in units *)
 		capabilities-: SET;
 		capabilities-: SET;
 
 
-		PROCEDURE Same(as: Symbol; flags: SET): BOOLEAN;
+		PROCEDURE Same*(as: Symbol; flags: SET): BOOLEAN;
 		BEGIN
 		BEGIN
 			IF TraceSame THEN TRACE("Type",name) END;
 			IF TraceSame THEN TRACE("Type",name) END;
 			IF (as = NIL) OR ~(as IS Type) THEN RETURN FALSE END;
 			IF (as = NIL) OR ~(as IS Type) THEN RETURN FALSE END;
@@ -1138,7 +1138,7 @@ TYPE
 		index-: LONGINT; (* useful for implementations that emulate channels (simulator) *)
 		index-: LONGINT; (* useful for implementations that emulate channels (simulator) *)
 
 
 
 
-		PROCEDURE Same(as: Symbol; flags: SET): BOOLEAN;
+		PROCEDURE Same*(as: Symbol; flags: SET): BOOLEAN;
 		BEGIN
 		BEGIN
 			IF TraceSame THEN TRACE("Channel",name) END;
 			IF TraceSame THEN TRACE("Channel",name) END;
 			IF (as = NIL) OR ~(as IS Channel) THEN RETURN FALSE END;
 			IF (as = NIL) OR ~(as IS Channel) THEN RETURN FALSE END;

+ 2 - 2
source/FoxBasic.Mod

@@ -1378,7 +1378,7 @@ TYPE
 			writer.String(";"); writer.Ln;
 			writer.String(";"); writer.Ln;
 		END VisitEdge;
 		END VisitEdge;
 
 
-		PROCEDURE VisitBlock(block: Block);
+		PROCEDURE VisitBlock*(block: Block);
 		VAR
 		VAR
 			i: LONGINT;
 			i: LONGINT;
 			dom: Block;
 			dom: Block;
@@ -1661,7 +1661,7 @@ TYPE
 			SELF.diagnostics := diagnostics
 			SELF.diagnostics := diagnostics
 		END InitDiagnostics;
 		END InitDiagnostics;
 
 
-		PROCEDURE Error(CONST source: ARRAY OF CHAR; position, errorCode : LONGINT; CONST message : ARRAY OF CHAR);
+		PROCEDURE Error*(CONST source: ARRAY OF CHAR; position, errorCode : LONGINT; CONST message : ARRAY OF CHAR);
 		BEGIN
 		BEGIN
 			IF diagnostics # NIL THEN
 			IF diagnostics # NIL THEN
 				diagnostics.Error(source,position,errorCode,message);
 				diagnostics.Error(source,position,errorCode,message);

+ 2 - 2
source/FoxBinaryObjectFile.Mod

@@ -174,11 +174,11 @@ TYPE
 			END;
 			END;
 		END GetOptions;
 		END GetOptions;
 
 
-		PROCEDURE DefaultSymbolFileFormat(): Formats.SymbolFileFormat;
+		PROCEDURE DefaultSymbolFileFormat*(): Formats.SymbolFileFormat;
 		BEGIN RETURN SymbolFileFormat.Get();
 		BEGIN RETURN SymbolFileFormat.Get();
 		END DefaultSymbolFileFormat;
 		END DefaultSymbolFileFormat;
 
 
-		PROCEDURE ForceModuleBodies(): BOOLEAN; (* necessary in binary object file format as bodies not recognizable later on *)
+		PROCEDURE ForceModuleBodies*(): BOOLEAN; (* necessary in binary object file format as bodies not recognizable later on *)
 		BEGIN RETURN TRUE
 		BEGIN RETURN TRUE
 		END ForceModuleBodies;
 		END ForceModuleBodies;
 
 

+ 25 - 25
source/FoxBinarySymbolFile.Mod

@@ -253,57 +253,57 @@ TYPE
 
 
 		(* types that do not refer to other types *)
 		(* types that do not refer to other types *)
 
 
-		PROCEDURE VisitType(x: SyntaxTree.Type);
+		PROCEDURE VisitType*(x: SyntaxTree.Type);
 		BEGIN END VisitType;
 		BEGIN END VisitType;
 
 
-		PROCEDURE VisitBasicType(x: SyntaxTree.BasicType);
+		PROCEDURE VisitBasicType*(x: SyntaxTree.BasicType);
 		BEGIN END VisitBasicType;
 		BEGIN END VisitBasicType;
 
 
-		PROCEDURE VisitByteType(x: SyntaxTree.ByteType);
+		PROCEDURE VisitByteType*(x: SyntaxTree.ByteType);
 		BEGIN END VisitByteType;
 		BEGIN END VisitByteType;
 
 
-		PROCEDURE VisitBooleanType(x: SyntaxTree.BooleanType);
+		PROCEDURE VisitBooleanType*(x: SyntaxTree.BooleanType);
 		BEGIN END VisitBooleanType;
 		BEGIN END VisitBooleanType;
 
 
-		PROCEDURE VisitSetType(x: SyntaxTree.SetType);
+		PROCEDURE VisitSetType*(x: SyntaxTree.SetType);
 		BEGIN END VisitSetType;
 		BEGIN END VisitSetType;
 
 
-		PROCEDURE VisitAddressType(x: SyntaxTree.AddressType);
+		PROCEDURE VisitAddressType*(x: SyntaxTree.AddressType);
 		BEGIN END VisitAddressType;
 		BEGIN END VisitAddressType;
 
 
-		PROCEDURE VisitSizeType(x: SyntaxTree.SizeType);
+		PROCEDURE VisitSizeType*(x: SyntaxTree.SizeType);
 		BEGIN END VisitSizeType;
 		BEGIN END VisitSizeType;
 
 
-		PROCEDURE VisitAnyType(x: SyntaxTree.AnyType);
+		PROCEDURE VisitAnyType*(x: SyntaxTree.AnyType);
 		BEGIN END VisitAnyType;
 		BEGIN END VisitAnyType;
 
 
-		PROCEDURE VisitObjectType(x: SyntaxTree.ObjectType);
+		PROCEDURE VisitObjectType*(x: SyntaxTree.ObjectType);
 		BEGIN END VisitObjectType;
 		BEGIN END VisitObjectType;
 
 
-		PROCEDURE VisitNilType(x: SyntaxTree.NilType);
+		PROCEDURE VisitNilType*(x: SyntaxTree.NilType);
 		BEGIN END VisitNilType;
 		BEGIN END VisitNilType;
 
 
-		PROCEDURE VisitCharacterType(x: SyntaxTree.CharacterType);
+		PROCEDURE VisitCharacterType*(x: SyntaxTree.CharacterType);
 		BEGIN END VisitCharacterType;
 		BEGIN END VisitCharacterType;
 
 
-		PROCEDURE VisitIntegerType(x: SyntaxTree.IntegerType);
+		PROCEDURE VisitIntegerType*(x: SyntaxTree.IntegerType);
 		BEGIN END VisitIntegerType;
 		BEGIN END VisitIntegerType;
 
 
-		PROCEDURE VisitFloatType(x: SyntaxTree.FloatType);
+		PROCEDURE VisitFloatType*(x: SyntaxTree.FloatType);
 		BEGIN END VisitFloatType;
 		BEGIN END VisitFloatType;
 
 
-		PROCEDURE VisitComplexType(x: SyntaxTree.ComplexType);
+		PROCEDURE VisitComplexType*(x: SyntaxTree.ComplexType);
 		BEGIN END VisitComplexType;
 		BEGIN END VisitComplexType;
 
 
-		PROCEDURE VisitQualifiedType(x: SyntaxTree.QualifiedType);
+		PROCEDURE VisitQualifiedType*(x: SyntaxTree.QualifiedType);
 		BEGIN
 		BEGIN
 			x.SetResolved(ResolveType(x.resolved))
 			x.SetResolved(ResolveType(x.resolved))
 		END VisitQualifiedType;
 		END VisitQualifiedType;
 
 
-		PROCEDURE VisitStringType(x: SyntaxTree.StringType);
+		PROCEDURE VisitStringType*(x: SyntaxTree.StringType);
 		BEGIN END VisitStringType;
 		BEGIN END VisitStringType;
 
 
-		PROCEDURE VisitRangeType(x: SyntaxTree.RangeType);
+		PROCEDURE VisitRangeType*(x: SyntaxTree.RangeType);
 		BEGIN END VisitRangeType;
 		BEGIN END VisitRangeType;
 
 
 		(* types containing links to other types *)
 		(* types containing links to other types *)
@@ -330,7 +330,7 @@ TYPE
 		(**
 		(**
 			resolve enumeration type: check enumeration scope
 			resolve enumeration type: check enumeration scope
 		**)
 		**)
-		PROCEDURE VisitEnumerationType(x: SyntaxTree.EnumerationType);
+		PROCEDURE VisitEnumerationType*(x: SyntaxTree.EnumerationType);
 		VAR baseScope: SyntaxTree.EnumerationScope; resolved: SyntaxTree.Type; enumerationBase: SyntaxTree.EnumerationType;
 		VAR baseScope: SyntaxTree.EnumerationScope; resolved: SyntaxTree.Type; enumerationBase: SyntaxTree.EnumerationType;
 		BEGIN
 		BEGIN
 			x.SetEnumerationBase(ResolveType(x.enumerationBase));
 			x.SetEnumerationBase(ResolveType(x.enumerationBase));
@@ -343,7 +343,7 @@ TYPE
 			x.SetState(SyntaxTree.Resolved);
 			x.SetState(SyntaxTree.Resolved);
 		END VisitEnumerationType;
 		END VisitEnumerationType;
 
 
-		PROCEDURE VisitArrayType(arrayType: SyntaxTree.ArrayType);
+		PROCEDURE VisitArrayType*(arrayType: SyntaxTree.ArrayType);
 		BEGIN
 		BEGIN
 			ASSERT(arrayType.arrayBase # NIL);
 			ASSERT(arrayType.arrayBase # NIL);
 			arrayType.SetArrayBase(ResolveType(arrayType.arrayBase));
 			arrayType.SetArrayBase(ResolveType(arrayType.arrayBase));
@@ -351,7 +351,7 @@ TYPE
 			arrayType.SetState(SyntaxTree.Resolved);
 			arrayType.SetState(SyntaxTree.Resolved);
 		END VisitArrayType;
 		END VisitArrayType;
 
 
-		PROCEDURE VisitMathArrayType(arrayType: SyntaxTree.MathArrayType);
+		PROCEDURE VisitMathArrayType*(arrayType: SyntaxTree.MathArrayType);
 		BEGIN
 		BEGIN
 			arrayType.SetArrayBase(ResolveType(arrayType.arrayBase));
 			arrayType.SetArrayBase(ResolveType(arrayType.arrayBase));
 			IF arrayType.form = SyntaxTree.Static THEN
 			IF arrayType.form = SyntaxTree.Static THEN
@@ -363,7 +363,7 @@ TYPE
 			arrayType.SetState(SyntaxTree.Resolved);
 			arrayType.SetState(SyntaxTree.Resolved);
 		END VisitMathArrayType;
 		END VisitMathArrayType;
 
 
-		PROCEDURE VisitPointerType(pointerType: SyntaxTree.PointerType);
+		PROCEDURE VisitPointerType*(pointerType: SyntaxTree.PointerType);
 		VAR recordType: SyntaxTree.RecordType;
 		VAR recordType: SyntaxTree.RecordType;
 		BEGIN
 		BEGIN
 			IF ~(SyntaxTree.Resolved IN pointerType.state) THEN
 			IF ~(SyntaxTree.Resolved IN pointerType.state) THEN
@@ -402,7 +402,7 @@ TYPE
 
 
 
 
 
 
-		PROCEDURE VisitRecordType(recordType: SyntaxTree.RecordType);
+		PROCEDURE VisitRecordType*(recordType: SyntaxTree.RecordType);
 		VAR recordBase: SyntaxTree.RecordType; numberMethods: LONGINT; procedure,super,testsuper: SyntaxTree.Procedure; recordScope: SyntaxTree.RecordScope;
 		VAR recordBase: SyntaxTree.RecordType; numberMethods: LONGINT; procedure,super,testsuper: SyntaxTree.Procedure; recordScope: SyntaxTree.RecordScope;
 			pointerType: SyntaxTree.Type; typeDeclaration: SyntaxTree.TypeDeclaration; symbol: SyntaxTree.Symbol; size: HUGEINT; hasPointer: BOOLEAN;
 			pointerType: SyntaxTree.Type; typeDeclaration: SyntaxTree.TypeDeclaration; symbol: SyntaxTree.Symbol; size: HUGEINT; hasPointer: BOOLEAN;
 			var: SyntaxTree.Variable;
 			var: SyntaxTree.Variable;
@@ -467,7 +467,7 @@ TYPE
 		END VisitRecordType;
 		END VisitRecordType;
 
 
 
 
-		PROCEDURE VisitProcedureType(procedureType: SyntaxTree.ProcedureType);
+		PROCEDURE VisitProcedureType*(procedureType: SyntaxTree.ProcedureType);
 		VAR parameter: SyntaxTree.Parameter;
 		VAR parameter: SyntaxTree.Parameter;
 		BEGIN
 		BEGIN
 			IF ~(SyntaxTree.Resolved IN procedureType.state) THEN
 			IF ~(SyntaxTree.Resolved IN procedureType.state) THEN
@@ -642,7 +642,7 @@ TYPE
 			version: CHAR;
 			version: CHAR;
 
 
 		(** Import - Symbol Table Loader Plugin *)
 		(** Import - Symbol Table Loader Plugin *)
-		PROCEDURE Import(CONST moduleName: ARRAY OF CHAR; importCache: SyntaxTree.ModuleScope): SyntaxTree.Module;
+		PROCEDURE Import*(CONST moduleName: ARRAY OF CHAR; importCache: SyntaxTree.ModuleScope): SyntaxTree.Module;
 		VAR
 		VAR
 			module: SyntaxTree.Module;
 			module: SyntaxTree.Module;
 			moduleIdentifier,contextIdentifier: SyntaxTree.Identifier;
 			moduleIdentifier,contextIdentifier: SyntaxTree.Identifier;
@@ -1609,7 +1609,7 @@ TYPE
 			RETURN module
 			RETURN module
 		END Import;
 		END Import;
 
 
-		PROCEDURE Export(module: SyntaxTree.Module; importCache: SyntaxTree.ModuleScope): BOOLEAN;
+		PROCEDURE Export*(module: SyntaxTree.Module; importCache: SyntaxTree.ModuleScope): BOOLEAN;
 		VAR w: Files.Writer; lookup: TypeToIndex; indexToAttribute: IndexToAttribute; numberType: LONGINT; flags: SET;
 		VAR w: Files.Writer; lookup: TypeToIndex; indexToAttribute: IndexToAttribute; numberType: LONGINT; flags: SET;
 
 
 
 

+ 1 - 1
source/FoxCSharpFrontend.Mod

@@ -22,7 +22,7 @@ TYPE
 			RETURN parser.Module();
 			RETURN parser.Module();
 		END Parse;
 		END Parse;
 		
 		
-		PROCEDURE Error(): BOOLEAN;
+		PROCEDURE Error*(): BOOLEAN;
 		BEGIN
 		BEGIN
 			RETURN parser.error;
 			RETURN parser.error;
 		END Error;
 		END Error;

+ 60 - 60
source/FoxDocumentationBackend.Mod

@@ -227,11 +227,11 @@ TYPE
 			IF x # NIL THEN x.Accept(SELF) END;
 			IF x # NIL THEN x.Accept(SELF) END;
 		END Type;
 		END Type;
 
 
-		PROCEDURE VisitType(x: SyntaxTree.Type);
+		PROCEDURE VisitType*(x: SyntaxTree.Type);
 		BEGIN
 		BEGIN
 		END VisitType;
 		END VisitType;
 
 
-		PROCEDURE VisitBasicType(x: SyntaxTree.BasicType);
+		PROCEDURE VisitBasicType*(x: SyntaxTree.BasicType);
 		BEGIN
 		BEGIN
 			IF x.typeDeclaration # NIL THEN
 			IF x.typeDeclaration # NIL THEN
 				Identifier(x.typeDeclaration.name)
 				Identifier(x.typeDeclaration.name)
@@ -240,50 +240,50 @@ TYPE
 			END
 			END
 		END VisitBasicType;
 		END VisitBasicType;
 
 
-		PROCEDURE VisitBooleanType(x: SyntaxTree.BooleanType);
+		PROCEDURE VisitBooleanType*(x: SyntaxTree.BooleanType);
 		BEGIN VisitBasicType(x)
 		BEGIN VisitBasicType(x)
 		END VisitBooleanType;
 		END VisitBooleanType;
 
 
-		PROCEDURE VisitSetType(x: SyntaxTree.SetType);
+		PROCEDURE VisitSetType*(x: SyntaxTree.SetType);
 		BEGIN VisitBasicType(x)
 		BEGIN VisitBasicType(x)
 		END VisitSetType;
 		END VisitSetType;
 
 
-		PROCEDURE VisitSizeType(x: SyntaxTree.SizeType);
+		PROCEDURE VisitSizeType*(x: SyntaxTree.SizeType);
 		BEGIN VisitBasicType(x)
 		BEGIN VisitBasicType(x)
 		END VisitSizeType;
 		END VisitSizeType;
 
 
-		PROCEDURE VisitCharacterType(x: SyntaxTree.CharacterType);
+		PROCEDURE VisitCharacterType*(x: SyntaxTree.CharacterType);
 		BEGIN VisitBasicType(x)
 		BEGIN VisitBasicType(x)
 		END VisitCharacterType;
 		END VisitCharacterType;
 
 
-		PROCEDURE VisitIntegerType(x: SyntaxTree.IntegerType);
+		PROCEDURE VisitIntegerType*(x: SyntaxTree.IntegerType);
 		BEGIN VisitBasicType(x)
 		BEGIN VisitBasicType(x)
 		END VisitIntegerType;
 		END VisitIntegerType;
 
 
-		PROCEDURE VisitFloatType(x: SyntaxTree.FloatType);
+		PROCEDURE VisitFloatType*(x: SyntaxTree.FloatType);
 		BEGIN VisitBasicType(x)
 		BEGIN VisitBasicType(x)
 		END VisitFloatType;
 		END VisitFloatType;
 
 
-		PROCEDURE VisitComplexType(x: SyntaxTree.ComplexType);
+		PROCEDURE VisitComplexType*(x: SyntaxTree.ComplexType);
 		BEGIN VisitBasicType(x)
 		BEGIN VisitBasicType(x)
 		END VisitComplexType;
 		END VisitComplexType;
 
 
-		PROCEDURE VisitByteType(x: SyntaxTree.ByteType);
+		PROCEDURE VisitByteType*(x: SyntaxTree.ByteType);
 		BEGIN VisitBasicType(x)
 		BEGIN VisitBasicType(x)
 		END VisitByteType;
 		END VisitByteType;
 
 
-		PROCEDURE VisitQualifiedType(x: SyntaxTree.QualifiedType);
+		PROCEDURE VisitQualifiedType*(x: SyntaxTree.QualifiedType);
 		BEGIN
 		BEGIN
 			IF x.qualifiedIdentifier # NIL THEN
 			IF x.qualifiedIdentifier # NIL THEN
 				QualifiedIdentifier(x.qualifiedIdentifier)
 				QualifiedIdentifier(x.qualifiedIdentifier)
 			END;
 			END;
 		END VisitQualifiedType;
 		END VisitQualifiedType;
 
 
-		PROCEDURE VisitStringType(x: SyntaxTree.StringType);
+		PROCEDURE VisitStringType*(x: SyntaxTree.StringType);
 		BEGIN
 		BEGIN
 		END VisitStringType;
 		END VisitStringType;
 
 
-		PROCEDURE VisitEnumerationType(x: SyntaxTree.EnumerationType);
+		PROCEDURE VisitEnumerationType*(x: SyntaxTree.EnumerationType);
 		VAR e: SyntaxTree.Constant; first: BOOLEAN;
 		VAR e: SyntaxTree.Constant; first: BOOLEAN;
 		BEGIN
 		BEGIN
 			Keyword("ENUMERATION"); Whitespace;
 			Keyword("ENUMERATION"); Whitespace;
@@ -303,11 +303,11 @@ TYPE
 			END;
 			END;
 		END VisitEnumerationType;
 		END VisitEnumerationType;
 
 
-		PROCEDURE VisitRangeType(x: SyntaxTree.RangeType);
+		PROCEDURE VisitRangeType*(x: SyntaxTree.RangeType);
 		BEGIN VisitBasicType(x);
 		BEGIN VisitBasicType(x);
 		END VisitRangeType;
 		END VisitRangeType;
 
 
-		PROCEDURE VisitArrayType(x: SyntaxTree.ArrayType);
+		PROCEDURE VisitArrayType*(x: SyntaxTree.ArrayType);
 		BEGIN
 		BEGIN
 			Keyword("ARRAY"); Whitespace;
 			Keyword("ARRAY"); Whitespace;
 			IF x.length # NIL THEN Expression(x.length);ToText(w,current.text,ElementType.Default);Whitespace; END;
 			IF x.length # NIL THEN Expression(x.length);ToText(w,current.text,ElementType.Default);Whitespace; END;
@@ -315,27 +315,27 @@ TYPE
 			Type(x.arrayBase);
 			Type(x.arrayBase);
 		END VisitArrayType;
 		END VisitArrayType;
 
 
-		PROCEDURE VisitNilType(x: SyntaxTree.NilType);
+		PROCEDURE VisitNilType*(x: SyntaxTree.NilType);
 		BEGIN
 		BEGIN
 			String("NILTYPE");
 			String("NILTYPE");
 		END VisitNilType;
 		END VisitNilType;
 
 
-		PROCEDURE VisitAddressType(x: SyntaxTree.AddressType);
+		PROCEDURE VisitAddressType*(x: SyntaxTree.AddressType);
 		BEGIN
 		BEGIN
 			String("ADDRESSTYPE");
 			String("ADDRESSTYPE");
 		END VisitAddressType;
 		END VisitAddressType;
 
 
-		PROCEDURE VisitObjectType(x: SyntaxTree.ObjectType);
+		PROCEDURE VisitObjectType*(x: SyntaxTree.ObjectType);
 		BEGIN
 		BEGIN
 			VisitBasicType(x);
 			VisitBasicType(x);
 		END VisitObjectType;
 		END VisitObjectType;
 
 
-		PROCEDURE VisitAnyType(x: SyntaxTree.AnyType);
+		PROCEDURE VisitAnyType*(x: SyntaxTree.AnyType);
 		BEGIN
 		BEGIN
 			VisitBasicType(x);
 			VisitBasicType(x);
 		END VisitAnyType;
 		END VisitAnyType;
 
 
-		PROCEDURE VisitMathArrayType(x: SyntaxTree.MathArrayType);
+		PROCEDURE VisitMathArrayType*(x: SyntaxTree.MathArrayType);
 		BEGIN
 		BEGIN
 			Keyword("ARRAY" );Whitespace;
 			Keyword("ARRAY" );Whitespace;
 			IF x.form = SyntaxTree.Tensor THEN String("[?]");
 			IF x.form = SyntaxTree.Tensor THEN String("[?]");
@@ -363,7 +363,7 @@ TYPE
 			END;
 			END;
 		END VisitMathArrayType;
 		END VisitMathArrayType;
 
 
-		PROCEDURE VisitPointerType(x: SyntaxTree.PointerType);
+		PROCEDURE VisitPointerType*(x: SyntaxTree.PointerType);
 		VAR pointerBase: SyntaxTree.Type;
 		VAR pointerBase: SyntaxTree.Type;
 		BEGIN
 		BEGIN
 			IF x.pointerBase # NIL THEN
 			IF x.pointerBase # NIL THEN
@@ -376,7 +376,7 @@ TYPE
 			END;
 			END;
 		END VisitPointerType;
 		END VisitPointerType;
 
 
-		PROCEDURE VisitPortType(x: SyntaxTree.PortType);
+		PROCEDURE VisitPortType*(x: SyntaxTree.PortType);
 		BEGIN
 		BEGIN
 			Keyword("PORT");Whitespace;
 			Keyword("PORT");Whitespace;
 			IF x.direction = SyntaxTree.OutPort THEN
 			IF x.direction = SyntaxTree.OutPort THEN
@@ -391,7 +391,7 @@ TYPE
 			END;
 			END;
 		END VisitPortType;
 		END VisitPortType;
 
 
-		PROCEDURE VisitCellType(x: SyntaxTree.CellType);
+		PROCEDURE VisitCellType*(x: SyntaxTree.CellType);
 		BEGIN
 		BEGIN
 			Keyword("CELL");Whitespace;
 			Keyword("CELL");Whitespace;
 			Modifiers(x.modifiers);
 			Modifiers(x.modifiers);
@@ -402,7 +402,7 @@ TYPE
 			END;
 			END;
 		END VisitCellType;
 		END VisitCellType;
 
 
-		PROCEDURE VisitRecordType(x: SyntaxTree.RecordType);
+		PROCEDURE VisitRecordType*(x: SyntaxTree.RecordType);
 		VAR prevScope: SyntaxTree.Scope; first: BOOLEAN; variable: SyntaxTree.Variable;
 		VAR prevScope: SyntaxTree.Scope; first: BOOLEAN; variable: SyntaxTree.Variable;
 		BEGIN
 		BEGIN
 			IF x.isObject THEN
 			IF x.isObject THEN
@@ -439,7 +439,7 @@ TYPE
 			END;
 			END;
 		END VisitRecordType;
 		END VisitRecordType;
 
 
-		PROCEDURE VisitProcedureType(x: SyntaxTree.ProcedureType);
+		PROCEDURE VisitProcedureType*(x: SyntaxTree.ProcedureType);
 		VAR first: BOOLEAN;
 		VAR first: BOOLEAN;
 		BEGIN
 		BEGIN
 			Keyword("PROCEDURE" );
 			Keyword("PROCEDURE" );
@@ -480,21 +480,21 @@ TYPE
 			w.Update;
 			w.Update;
 		END Expression;
 		END Expression;
 
 
-		PROCEDURE VisitExpression(x: SyntaxTree.Expression);
+		PROCEDURE VisitExpression*(x: SyntaxTree.Expression);
 		BEGIN
 		BEGIN
 		END VisitExpression;
 		END VisitExpression;
 
 
-		PROCEDURE VisitSet(x: SyntaxTree.Set);
+		PROCEDURE VisitSet*(x: SyntaxTree.Set);
 		BEGIN
 		BEGIN
 			String( "{" );  ExpressionList(x.elements); String( "}" );
 			String( "{" );  ExpressionList(x.elements); String( "}" );
 		END VisitSet;
 		END VisitSet;
 
 
-		PROCEDURE VisitMathArrayExpression(x: SyntaxTree.MathArrayExpression);
+		PROCEDURE VisitMathArrayExpression*(x: SyntaxTree.MathArrayExpression);
 		BEGIN
 		BEGIN
 			String( "[" );  ExpressionList(x.elements); String( "]" );
 			String( "[" );  ExpressionList(x.elements); String( "]" );
 		END VisitMathArrayExpression;
 		END VisitMathArrayExpression;
 
 
-		PROCEDURE VisitUnaryExpression(x: SyntaxTree.UnaryExpression);
+		PROCEDURE VisitUnaryExpression*(x: SyntaxTree.UnaryExpression);
 		VAR identifier: SyntaxTree.Identifier;
 		VAR identifier: SyntaxTree.Identifier;
 		BEGIN
 		BEGIN
 			IF x.operator = Scanner.Transpose THEN
 			IF x.operator = Scanner.Transpose THEN
@@ -508,7 +508,7 @@ TYPE
 			END;
 			END;
 		END VisitUnaryExpression;
 		END VisitUnaryExpression;
 
 
-		PROCEDURE VisitBinaryExpression(x: SyntaxTree.BinaryExpression);
+		PROCEDURE VisitBinaryExpression*(x: SyntaxTree.BinaryExpression);
 		VAR identifier: SyntaxTree.Identifier;
 		VAR identifier: SyntaxTree.Identifier;
 		BEGIN
 		BEGIN
 			String( "(" );
 			String( "(" );
@@ -519,7 +519,7 @@ TYPE
 			String(")");
 			String(")");
 		END VisitBinaryExpression;
 		END VisitBinaryExpression;
 
 
-		PROCEDURE VisitRangeExpression(x: SyntaxTree.RangeExpression);
+		PROCEDURE VisitRangeExpression*(x: SyntaxTree.RangeExpression);
 		BEGIN
 		BEGIN
 			IF x.missingFirst & x.missingLast & x.missingStep THEN
 			IF x.missingFirst & x.missingLast & x.missingStep THEN
 				String("*")
 				String("*")
@@ -534,11 +534,11 @@ TYPE
 			END;
 			END;
 		END VisitRangeExpression;
 		END VisitRangeExpression;
 
 
-		PROCEDURE VisitTensorRangeExpression(x: SyntaxTree.TensorRangeExpression);
+		PROCEDURE VisitTensorRangeExpression*(x: SyntaxTree.TensorRangeExpression);
 		BEGIN String("?");
 		BEGIN String("?");
 		END VisitTensorRangeExpression;
 		END VisitTensorRangeExpression;
 
 
-		PROCEDURE VisitConversion(x: SyntaxTree.Conversion);
+		PROCEDURE VisitConversion*(x: SyntaxTree.Conversion);
 		BEGIN
 		BEGIN
 			IF x.typeExpression # NIL THEN Expression(x.typeExpression); String("(");
 			IF x.typeExpression # NIL THEN Expression(x.typeExpression); String("(");
 			END;
 			END;
@@ -546,7 +546,7 @@ TYPE
 			IF x.typeExpression # NIL THEN String(")") END;
 			IF x.typeExpression # NIL THEN String(")") END;
 		END VisitConversion;
 		END VisitConversion;
 
 
-		PROCEDURE VisitSymbolDesignator(x: SyntaxTree.SymbolDesignator);
+		PROCEDURE VisitSymbolDesignator*(x: SyntaxTree.SymbolDesignator);
 		BEGIN
 		BEGIN
 			IF x.left # NIL THEN
 			IF x.left # NIL THEN
 			Expression(x.left); String(".");
 			Expression(x.left); String(".");
@@ -558,7 +558,7 @@ TYPE
 			END;
 			END;
 		END VisitSymbolDesignator;
 		END VisitSymbolDesignator;
 
 
-		PROCEDURE VisitBuiltinCallDesignator(x: SyntaxTree.BuiltinCallDesignator);
+		PROCEDURE VisitBuiltinCallDesignator*(x: SyntaxTree.BuiltinCallDesignator);
 		BEGIN
 		BEGIN
 			IF x.left # NIL THEN
 			IF x.left # NIL THEN
 				Expression(x.left);
 				Expression(x.left);
@@ -570,11 +570,11 @@ TYPE
 			String("("); ExpressionList(x.parameters); String(")");
 			String("("); ExpressionList(x.parameters); String(")");
 		END VisitBuiltinCallDesignator;
 		END VisitBuiltinCallDesignator;
 
 
-		PROCEDURE VisitValue(x: SyntaxTree.Value);
+		PROCEDURE VisitValue*(x: SyntaxTree.Value);
 		BEGIN
 		BEGIN
 		END VisitValue;
 		END VisitValue;
 
 
-		PROCEDURE VisitBooleanValue(x: SyntaxTree.BooleanValue);
+		PROCEDURE VisitBooleanValue*(x: SyntaxTree.BooleanValue);
 		BEGIN
 		BEGIN
 			IF Scanner.Uppercase = case THEN
 			IF Scanner.Uppercase = case THEN
 				IF x.value THEN String("TRUE" ) ELSE String( "FALSE" ) END
 				IF x.value THEN String("TRUE" ) ELSE String( "FALSE" ) END
@@ -583,7 +583,7 @@ TYPE
 			END
 			END
 		END VisitBooleanValue;
 		END VisitBooleanValue;
 
 
-		PROCEDURE VisitIntegerValue(x: SyntaxTree.IntegerValue);
+		PROCEDURE VisitIntegerValue*(x: SyntaxTree.IntegerValue);
 
 
 			PROCEDURE InBounds(val: HUGEINT; bits: LONGINT): BOOLEAN;
 			PROCEDURE InBounds(val: HUGEINT; bits: LONGINT): BOOLEAN;
 			VAR m: HUGEINT;
 			VAR m: HUGEINT;
@@ -606,13 +606,13 @@ TYPE
 			ToText(w,current.text,ElementType.Default);
 			ToText(w,current.text,ElementType.Default);
 		END VisitIntegerValue;
 		END VisitIntegerValue;
 
 
-		PROCEDURE VisitCharacterValue(x: SyntaxTree.CharacterValue);
+		PROCEDURE VisitCharacterValue*(x: SyntaxTree.CharacterValue);
 		BEGIN
 		BEGIN
 			Hex(w, ORD(x.value));  w.String( "X" );
 			Hex(w, ORD(x.value));  w.String( "X" );
 			ToText(w,current.text,ElementType.Default);
 			ToText(w,current.text,ElementType.Default);
 		END VisitCharacterValue;
 		END VisitCharacterValue;
 
 
-		PROCEDURE VisitSetValue(x: SyntaxTree.SetValue);
+		PROCEDURE VisitSetValue*(x: SyntaxTree.SetValue);
 		VAR i: LONGINT;
 		VAR i: LONGINT;
 		BEGIN
 		BEGIN
 			w.String("{");
 			w.String("{");
@@ -632,7 +632,7 @@ TYPE
 			ToText(w,current.text,ElementType.Default);
 			ToText(w,current.text,ElementType.Default);
 		END VisitSetValue;
 		END VisitSetValue;
 
 
-		PROCEDURE VisitMathArrayValue(x: SyntaxTree.MathArrayValue);
+		PROCEDURE VisitMathArrayValue*(x: SyntaxTree.MathArrayValue);
 		BEGIN
 		BEGIN
 			VisitMathArrayExpression(x.array);
 			VisitMathArrayExpression(x.array);
 		END VisitMathArrayValue;
 		END VisitMathArrayValue;
@@ -662,11 +662,11 @@ TYPE
 			END;
 			END;
 		END FormatedFloat;
 		END FormatedFloat;
 
 
-		PROCEDURE VisitRealValue(x: SyntaxTree.RealValue);
+		PROCEDURE VisitRealValue*(x: SyntaxTree.RealValue);
 		BEGIN FormatedFloat(x.value, x.subtype)
 		BEGIN FormatedFloat(x.value, x.subtype)
 		END VisitRealValue;
 		END VisitRealValue;
 
 
-		PROCEDURE VisitComplexValue(x: SyntaxTree.ComplexValue);
+		PROCEDURE VisitComplexValue*(x: SyntaxTree.ComplexValue);
 		BEGIN
 		BEGIN
 			IF (x.realValue = 0) & (x.imagValue = 1) THEN
 			IF (x.realValue = 0) & (x.imagValue = 1) THEN
 				String("IMAG")
 				String("IMAG")
@@ -679,7 +679,7 @@ TYPE
 			END
 			END
 		END VisitComplexValue;
 		END VisitComplexValue;
 
 
-		PROCEDURE VisitStringValue(x: SyntaxTree.StringValue);
+		PROCEDURE VisitStringValue*(x: SyntaxTree.StringValue);
 		VAR i: LONGINT;
 		VAR i: LONGINT;
 		BEGIN
 		BEGIN
 			i := 0;
 			i := 0;
@@ -693,17 +693,17 @@ TYPE
 			ToText(w,current.text,ElementType.Default);
 			ToText(w,current.text,ElementType.Default);
 		END VisitStringValue;
 		END VisitStringValue;
 
 
-		PROCEDURE VisitNilValue(x: SyntaxTree.NilValue);
+		PROCEDURE VisitNilValue*(x: SyntaxTree.NilValue);
 		BEGIN String( "NIL" );
 		BEGIN String( "NIL" );
 		END VisitNilValue;
 		END VisitNilValue;
 
 
-		PROCEDURE VisitEnumerationValue(x: SyntaxTree.EnumerationValue);
+		PROCEDURE VisitEnumerationValue*(x: SyntaxTree.EnumerationValue);
 		BEGIN w.Int(x.value,1); ToText(w,current.text,ElementType.Default);
 		BEGIN w.Int(x.value,1); ToText(w,current.text,ElementType.Default);
 		END VisitEnumerationValue;
 		END VisitEnumerationValue;
 
 
 		(**** symbols ****)
 		(**** symbols ****)
 
 
-		PROCEDURE VisitParameter(x: SyntaxTree.Parameter);
+		PROCEDURE VisitParameter*(x: SyntaxTree.Parameter);
 		END VisitParameter;
 		END VisitParameter;
 
 
 		PROCEDURE PrintSymbol(x: SyntaxTree.Symbol);
 		PROCEDURE PrintSymbol(x: SyntaxTree.Symbol);
@@ -903,11 +903,11 @@ TYPE
 			RETURN section;
 			RETURN section;
 		END BeginSymbolSection;
 		END BeginSymbolSection;
 
 
-		PROCEDURE VisitSymbol(x: SyntaxTree.Symbol);
+		PROCEDURE VisitSymbol*(x: SyntaxTree.Symbol);
 		BEGIN
 		BEGIN
 		END VisitSymbol;
 		END VisitSymbol;
 
 
-		PROCEDURE VisitTypeDeclaration(x: SyntaxTree.TypeDeclaration);
+		PROCEDURE VisitTypeDeclaration*(x: SyntaxTree.TypeDeclaration);
 		VAR section: DocumentationTree.Section; paragraph: DocumentationTree.Paragraph;commentDoc: DocumentationTree.Document;
 		VAR section: DocumentationTree.Section; paragraph: DocumentationTree.Paragraph;commentDoc: DocumentationTree.Document;
 		BEGIN
 		BEGIN
 			IF ~short THEN
 			IF ~short THEN
@@ -920,7 +920,7 @@ TYPE
 			String("="); Type(x.declaredType);
 			String("="); Type(x.declaredType);
 		END VisitTypeDeclaration;
 		END VisitTypeDeclaration;
 
 
-		PROCEDURE VisitConstant(x: SyntaxTree.Constant);
+		PROCEDURE VisitConstant*(x: SyntaxTree.Constant);
 		VAR section: DocumentationTree.Section;paragraph: DocumentationTree.Paragraph; commentDoc: DocumentationTree.Document;
 		VAR section: DocumentationTree.Section;paragraph: DocumentationTree.Paragraph; commentDoc: DocumentationTree.Document;
 		BEGIN
 		BEGIN
 			IF ~short THEN
 			IF ~short THEN
@@ -933,7 +933,7 @@ TYPE
 			END;
 			END;
 		END VisitConstant;
 		END VisitConstant;
 
 
-		PROCEDURE VisitVariable(x: SyntaxTree.Variable);
+		PROCEDURE VisitVariable*(x: SyntaxTree.Variable);
 		VAR section: DocumentationTree.Section; paragraph: DocumentationTree.Paragraph;commentDoc: DocumentationTree.Document;
 		VAR section: DocumentationTree.Section; paragraph: DocumentationTree.Paragraph;commentDoc: DocumentationTree.Document;
 		BEGIN
 		BEGIN
 			IF ~short THEN
 			IF ~short THEN
@@ -974,7 +974,7 @@ TYPE
 		END Value;
 		END Value;
 
 
 		(** process procedure including comments describing the procedure *)
 		(** process procedure including comments describing the procedure *)
-		PROCEDURE VisitProcedure(x: SyntaxTree.Procedure);
+		PROCEDURE VisitProcedure*(x: SyntaxTree.Procedure);
 		VAR section: DocumentationTree.Section; paragraph: DocumentationTree.Paragraph; name: Basic.SectionName; first: BOOLEAN; type: SyntaxTree.ProcedureType;
 		VAR section: DocumentationTree.Section; paragraph: DocumentationTree.Paragraph; name: Basic.SectionName; first: BOOLEAN; type: SyntaxTree.ProcedureType;
 		doc: DocumentationTree.Document; par: SyntaxTree.Parameter;
 		doc: DocumentationTree.Document; par: SyntaxTree.Parameter;
 		BEGIN
 		BEGIN
@@ -1026,11 +1026,11 @@ TYPE
 		END Whitespace;
 		END Whitespace;
 
 
 
 
-		PROCEDURE VisitOperator(x: SyntaxTree.Operator);
+		PROCEDURE VisitOperator*(x: SyntaxTree.Operator);
 		BEGIN VisitProcedure(x);
 		BEGIN VisitProcedure(x);
 		END VisitOperator;
 		END VisitOperator;
 
 
-		PROCEDURE VisitImport(x: SyntaxTree.Import);
+		PROCEDURE VisitImport*(x: SyntaxTree.Import);
 		VAR context: SyntaxTree.Identifier; name: Basic.SectionName; 
 		VAR context: SyntaxTree.Identifier; name: Basic.SectionName; 
 		BEGIN
 		BEGIN
 			x.GetName(name);
 			x.GetName(name);
@@ -1044,7 +1044,7 @@ TYPE
 			END;
 			END;
 		END VisitImport;
 		END VisitImport;
 
 
-		PROCEDURE VisitBuiltin(x: SyntaxTree.Builtin);
+		PROCEDURE VisitBuiltin*(x: SyntaxTree.Builtin);
 		BEGIN
 		BEGIN
 		END VisitBuiltin;
 		END VisitBuiltin;
 
 
@@ -1402,7 +1402,7 @@ TYPE
 			RETURN document
 			RETURN document
 		END ParseFile;
 		END ParseFile;
 
 
-		PROCEDURE ProcessSyntaxTreeModule(syntaxTreeModule: SyntaxTree.Module): Formats.GeneratedModule;
+		PROCEDURE ProcessSyntaxTreeModule*(syntaxTreeModule: SyntaxTree.Module): Formats.GeneratedModule;
 		VAR dump: Streams.Writer;  printer: DocumentationPrinter.Printer; document, template: DocumentationTree.Document;
 		VAR dump: Streams.Writer;  printer: DocumentationPrinter.Printer; document, template: DocumentationTree.Document;
 			htmlPrinter: DocumentationHtml.Printer; file: Files.File; writer: Files.Writer;
 			htmlPrinter: DocumentationHtml.Printer; file: Files.File; writer: Files.Writer;
 
 
@@ -1458,7 +1458,7 @@ TYPE
 			RETURN NIL
 			RETURN NIL
 		END ProcessSyntaxTreeModule;
 		END ProcessSyntaxTreeModule;
 
 
-		PROCEDURE DefineOptions(options: Options.Options);
+		PROCEDURE DefineOptions*(options: Options.Options);
 		BEGIN
 		BEGIN
 			DefineOptions^(options);
 			DefineOptions^(options);
 			options.Add(0X,"dtrace",Options.Flag);
 			options.Add(0X,"dtrace",Options.Flag);
@@ -1466,7 +1466,7 @@ TYPE
 			options.Add(0X,"internals",Options.Flag);
 			options.Add(0X,"internals",Options.Flag);
 		END DefineOptions;
 		END DefineOptions;
 
 
-		PROCEDURE GetOptions(options: Options.Options);
+		PROCEDURE GetOptions*(options: Options.Options);
 		BEGIN
 		BEGIN
 			GetOptions^(options);
 			GetOptions^(options);
 			trace := options.GetFlag("dtrace");
 			trace := options.GetFlag("dtrace");
@@ -1475,11 +1475,11 @@ TYPE
 			internals := options.GetFlag("internals");
 			internals := options.GetFlag("internals");
 		END GetOptions;
 		END GetOptions;
 
 
-		PROCEDURE DefaultSymbolFileFormat(): Formats.SymbolFileFormat;
+		PROCEDURE DefaultSymbolFileFormat*(): Formats.SymbolFileFormat;
 		BEGIN RETURN SymbolFileFormat.Get()
 		BEGIN RETURN SymbolFileFormat.Get()
 		END DefaultSymbolFileFormat;
 		END DefaultSymbolFileFormat;
 
 
-		PROCEDURE DefaultObjectFileFormat(): Formats.ObjectFileFormat;
+		PROCEDURE DefaultObjectFileFormat*(): Formats.ObjectFileFormat;
 		BEGIN RETURN NIL
 		BEGIN RETURN NIL
 		END DefaultObjectFileFormat;
 		END DefaultObjectFileFormat;
 
 

+ 43 - 43
source/FoxFingerPrinter.Mod

@@ -151,7 +151,7 @@ TYPE
 		PublicFP(BasicType)  = FP(basicType).
 		PublicFP(BasicType)  = FP(basicType).
 		PrivateFP(BasicType) = sizeof(basicType).
 		PrivateFP(BasicType) = sizeof(basicType).
 		*)
 		*)
-		PROCEDURE VisitBasicType(x: SyntaxTree.BasicType);
+		PROCEDURE VisitBasicType*(x: SyntaxTree.BasicType);
 		BEGIN
 		BEGIN
 		END VisitBasicType;
 		END VisitBasicType;
 
 
@@ -170,48 +170,48 @@ TYPE
 			SELF.fingerprint := fingerprint;
 			SELF.fingerprint := fingerprint;
 		END SetTypeFingerprint;
 		END SetTypeFingerprint;
 
 
-		PROCEDURE VisitRangeType(x: SyntaxTree.RangeType);
+		PROCEDURE VisitRangeType*(x: SyntaxTree.RangeType);
 		VAR fingerprint: FingerPrint;
 		VAR fingerprint: FingerPrint;
 		BEGIN
 		BEGIN
 			SetTypeFingerprint(x,fpTypeRange);
 			SetTypeFingerprint(x,fpTypeRange);
 		END VisitRangeType;
 		END VisitRangeType;
 
 
-		PROCEDURE VisitBooleanType(x: SyntaxTree.BooleanType);
+		PROCEDURE VisitBooleanType*(x: SyntaxTree.BooleanType);
 		BEGIN
 		BEGIN
 			SetTypeFingerprint(x,fpTypeBoolean);
 			SetTypeFingerprint(x,fpTypeBoolean);
 		END VisitBooleanType;
 		END VisitBooleanType;
 
 
-		PROCEDURE VisitByteType(x: SyntaxTree.ByteType);
+		PROCEDURE VisitByteType*(x: SyntaxTree.ByteType);
 		BEGIN
 		BEGIN
 			SetTypeFingerprint(x,fpTypeByte)
 			SetTypeFingerprint(x,fpTypeByte)
 		END VisitByteType;
 		END VisitByteType;
 
 
-		PROCEDURE VisitSetType(x: SyntaxTree.SetType);
+		PROCEDURE VisitSetType*(x: SyntaxTree.SetType);
 		BEGIN
 		BEGIN
 			SetTypeFingerprint(x,fpTypeSet)
 			SetTypeFingerprint(x,fpTypeSet)
 		END VisitSetType;
 		END VisitSetType;
 
 
-		PROCEDURE VisitNilType(x: SyntaxTree.NilType);
+		PROCEDURE VisitNilType*(x: SyntaxTree.NilType);
 		BEGIN
 		BEGIN
 			SetTypeFingerprint(x,fpTypePointer)
 			SetTypeFingerprint(x,fpTypePointer)
 		END VisitNilType;
 		END VisitNilType;
 
 
-		PROCEDURE VisitAnyType(x: SyntaxTree.AnyType);
+		PROCEDURE VisitAnyType*(x: SyntaxTree.AnyType);
 		BEGIN
 		BEGIN
 			SetTypeFingerprint(x,fpTypePointer)
 			SetTypeFingerprint(x,fpTypePointer)
 		END VisitAnyType;
 		END VisitAnyType;
 
 
-		PROCEDURE VisitAddressType(x: SyntaxTree.AddressType);
+		PROCEDURE VisitAddressType*(x: SyntaxTree.AddressType);
 		BEGIN
 		BEGIN
 			SetTypeFingerprint(x,fpTypeAddress)
 			SetTypeFingerprint(x,fpTypeAddress)
 		END VisitAddressType;
 		END VisitAddressType;
 
 
-		PROCEDURE VisitSizeType(x: SyntaxTree.SizeType);
+		PROCEDURE VisitSizeType*(x: SyntaxTree.SizeType);
 		BEGIN
 		BEGIN
 			SetTypeFingerprint(x, fpTypeSize); 
 			SetTypeFingerprint(x, fpTypeSize); 
 		END VisitSizeType;
 		END VisitSizeType;
 
 
-		PROCEDURE VisitObjectType(x: SyntaxTree.ObjectType);
+		PROCEDURE VisitObjectType*(x: SyntaxTree.ObjectType);
 		BEGIN
 		BEGIN
 			SetTypeFingerprint(x,fpTypePointer)
 			SetTypeFingerprint(x,fpTypePointer)
 		END VisitObjectType;
 		END VisitObjectType;
@@ -221,7 +221,7 @@ TYPE
 		PublicFP(BasicType)  = FP(basicType).
 		PublicFP(BasicType)  = FP(basicType).
 		PrivateFP(BasicType) = sizeof(basicType).
 		PrivateFP(BasicType) = sizeof(basicType).
 		*)
 		*)
-		PROCEDURE VisitCharacterType(x: SyntaxTree.CharacterType);
+		PROCEDURE VisitCharacterType*(x: SyntaxTree.CharacterType);
 		BEGIN
 		BEGIN
 			IF x.sizeInBits = 8 THEN SetTypeFingerprint(x,fpTypeChar8)
 			IF x.sizeInBits = 8 THEN SetTypeFingerprint(x,fpTypeChar8)
 			ELSIF x.sizeInBits = 16 THEN SetTypeFingerprint(x,fpTypeChar16)
 			ELSIF x.sizeInBits = 16 THEN SetTypeFingerprint(x,fpTypeChar16)
@@ -235,7 +235,7 @@ TYPE
 		PublicFP(BasicType)  = FP(basicType).
 		PublicFP(BasicType)  = FP(basicType).
 		PrivateFP(BasicType) = sizeof(basicType).
 		PrivateFP(BasicType) = sizeof(basicType).
 		*)
 		*)
-		PROCEDURE VisitIntegerType(x: SyntaxTree.IntegerType);
+		PROCEDURE VisitIntegerType*(x: SyntaxTree.IntegerType);
 		BEGIN
 		BEGIN
 			IF x.sizeInBits=8 THEN SetTypeFingerprint(x,fpTypeShortint)
 			IF x.sizeInBits=8 THEN SetTypeFingerprint(x,fpTypeShortint)
 			ELSIF x.sizeInBits = 16 THEN SetTypeFingerprint(x,fpTypeInteger)
 			ELSIF x.sizeInBits = 16 THEN SetTypeFingerprint(x,fpTypeInteger)
@@ -250,7 +250,7 @@ TYPE
 		PublicFP(BasicType)  = FP(basicType).
 		PublicFP(BasicType)  = FP(basicType).
 		PrivateFP(BasicType) = sizeof(basicType).
 		PrivateFP(BasicType) = sizeof(basicType).
 		*)
 		*)
-		PROCEDURE VisitFloatType(x: SyntaxTree.FloatType);
+		PROCEDURE VisitFloatType*(x: SyntaxTree.FloatType);
 		BEGIN
 		BEGIN
 			IF x.sizeInBits = 32 THEN SetTypeFingerprint(x,fpTypeReal)
 			IF x.sizeInBits = 32 THEN SetTypeFingerprint(x,fpTypeReal)
 			ELSIF x.sizeInBits = 64 THEN SetTypeFingerprint(x,fpTypeLongreal)
 			ELSIF x.sizeInBits = 64 THEN SetTypeFingerprint(x,fpTypeLongreal)
@@ -258,7 +258,7 @@ TYPE
 			END;
 			END;
 		END VisitFloatType;
 		END VisitFloatType;
 
 
-		PROCEDURE VisitComplexType(x: SyntaxTree.ComplexType);
+		PROCEDURE VisitComplexType*(x: SyntaxTree.ComplexType);
 		BEGIN
 		BEGIN
 			ASSERT(x.componentType # NIL);
 			ASSERT(x.componentType # NIL);
 			IF x.componentType.sizeInBits = 32 THEN SetTypeFingerprint(x,fpTypeComplex)
 			IF x.componentType.sizeInBits = 32 THEN SetTypeFingerprint(x,fpTypeComplex)
@@ -272,7 +272,7 @@ TYPE
 		PublicFP(BasicType)  = FP(basicType).
 		PublicFP(BasicType)  = FP(basicType).
 		PrivateFP(BasicType) = sizeof(basicType).
 		PrivateFP(BasicType) = sizeof(basicType).
 		*)
 		*)
-		PROCEDURE VisitStringType(x: SyntaxTree.StringType);
+		PROCEDURE VisitStringType*(x: SyntaxTree.StringType);
 		BEGIN
 		BEGIN
 			SetTypeFingerprint(x,fpTypeString);
 			SetTypeFingerprint(x,fpTypeString);
 		END VisitStringType;
 		END VisitStringType;
@@ -280,7 +280,7 @@ TYPE
 		(**
 		(**
 			fp enumeration type
 			fp enumeration type
 		**)
 		**)
-		PROCEDURE VisitEnumerationType(x: SyntaxTree.EnumerationType);
+		PROCEDURE VisitEnumerationType*(x: SyntaxTree.EnumerationType);
 		VAR fingerprint: FingerPrint; enumerator: SyntaxTree.Constant; fp: LONGINT;
 		VAR fingerprint: FingerPrint; enumerator: SyntaxTree.Constant; fp: LONGINT;
 		BEGIN
 		BEGIN
 			fingerprint := x.fingerprint;
 			fingerprint := x.fingerprint;
@@ -323,7 +323,7 @@ TYPE
 			*)
 			*)
 		END VisitEnumerationType;
 		END VisitEnumerationType;
 
 
-		PROCEDURE VisitQualifiedType(x: SyntaxTree.QualifiedType);
+		PROCEDURE VisitQualifiedType*(x: SyntaxTree.QualifiedType);
 		BEGIN
 		BEGIN
 			x.resolved.Accept(SELF);
 			x.resolved.Accept(SELF);
 		END VisitQualifiedType;
 		END VisitQualifiedType;
@@ -334,7 +334,7 @@ TYPE
 		PublicFP(ArrayType)        = FP(arrayType).
 		PublicFP(ArrayType)        = FP(arrayType).
 		PrivateFP(ArrayType)       = FP(arrayType).
 		PrivateFP(ArrayType)       = FP(arrayType).
 		*)
 		*)
-		PROCEDURE VisitArrayType(x: SyntaxTree.ArrayType);
+		PROCEDURE VisitArrayType*(x: SyntaxTree.ArrayType);
 		VAR fingerprint: FingerPrint; deep: BOOLEAN; fp: LONGINT;
 		VAR fingerprint: FingerPrint; deep: BOOLEAN; fp: LONGINT;
 		BEGIN
 		BEGIN
 			IF Trace THEN TraceEnter("ArrayType") END;
 			IF Trace THEN TraceEnter("ArrayType") END;
@@ -383,7 +383,7 @@ TYPE
 		PublicFP(MathArrayType)    = FP(arrayType).
 		PublicFP(MathArrayType)    = FP(arrayType).
 		PrivateFP(MathArrayType)   = FP(arrayType).
 		PrivateFP(MathArrayType)   = FP(arrayType).
 		*)
 		*)
-		PROCEDURE VisitMathArrayType(x: SyntaxTree.MathArrayType);
+		PROCEDURE VisitMathArrayType*(x: SyntaxTree.MathArrayType);
 		VAR fingerprint: FingerPrint; deep: BOOLEAN; fp: LONGINT;
 		VAR fingerprint: FingerPrint; deep: BOOLEAN; fp: LONGINT;
 		BEGIN
 		BEGIN
 			fingerprint := x.fingerprint;
 			fingerprint := x.fingerprint;
@@ -482,7 +482,7 @@ TYPE
 		PublicFP(PointerType)      = 0.
 		PublicFP(PointerType)      = 0.
 		PrivateFP(PointerType)     = 0.
 		PrivateFP(PointerType)     = 0.
 		*)
 		*)
-		PROCEDURE VisitPointerType(x: SyntaxTree.PointerType);
+		PROCEDURE VisitPointerType*(x: SyntaxTree.PointerType);
 		VAR fingerprint,typeFP: FingerPrint; fp: LONGINT; deep: BOOLEAN;
 		VAR fingerprint,typeFP: FingerPrint; fp: LONGINT; deep: BOOLEAN;
 		BEGIN
 		BEGIN
 			IF Trace THEN TraceEnter("PointerType");  END;
 			IF Trace THEN TraceEnter("PointerType");  END;
@@ -524,7 +524,7 @@ TYPE
 		PublicFP(PortType)      = 0.
 		PublicFP(PortType)      = 0.
 		PrivateFP(PortType)     = 0.
 		PrivateFP(PortType)     = 0.
 		*)
 		*)
-		PROCEDURE VisitPortType(x: SyntaxTree.PortType);
+		PROCEDURE VisitPortType*(x: SyntaxTree.PortType);
 		VAR fingerprint: FingerPrint; fp: LONGINT; deep: BOOLEAN;
 		VAR fingerprint: FingerPrint; fp: LONGINT; deep: BOOLEAN;
 		BEGIN
 		BEGIN
 			IF Trace THEN TraceEnter("PortType");  END;
 			IF Trace THEN TraceEnter("PortType");  END;
@@ -591,7 +591,7 @@ TYPE
 			END;
 			END;
 		END FPrintMethod;
 		END FPrintMethod;
 
 
-		PROCEDURE VisitCellType(x: SyntaxTree.CellType);
+		PROCEDURE VisitCellType*(x: SyntaxTree.CellType);
 		VAR fingerprint: FingerPrint; fp:LONGINT; name: SyntaxTree.String;
 		VAR fingerprint: FingerPrint; fp:LONGINT; name: SyntaxTree.String;
 		BEGIN
 		BEGIN
 			fingerprint := x.fingerprint;
 			fingerprint := x.fingerprint;
@@ -617,7 +617,7 @@ TYPE
 		PrivateFP(RecordType)      = FP(recordType) [<*> PrivateFP(baseType)] {<*> FP(method) <*> methodNumber }
 		PrivateFP(RecordType)      = FP(recordType) [<*> PrivateFP(baseType)] {<*> FP(method) <*> methodNumber }
 		                            {<*> PrivateFP(fieldType) <*> offset(field) <*> FP(field)}
 		                            {<*> PrivateFP(fieldType) <*> offset(field) <*> FP(field)}
 		*)
 		*)
-		PROCEDURE VisitRecordType(x: SyntaxTree.RecordType);
+		PROCEDURE VisitRecordType*(x: SyntaxTree.RecordType);
 		VAR scope: SyntaxTree.RecordScope; fp: LONGINT; variable: SyntaxTree.Variable;
 		VAR scope: SyntaxTree.RecordScope; fp: LONGINT; variable: SyntaxTree.Variable;
 			fingerprint,variableFingerPrint,variableTypeFingerPrint,baseFingerPrint: FingerPrint;flags: SET;
 			fingerprint,variableFingerPrint,variableTypeFingerPrint,baseFingerPrint: FingerPrint;flags: SET;
 			symbol: SyntaxTree.Symbol; procedure: SyntaxTree.Procedure;  baseType: SyntaxTree.Type;
 			symbol: SyntaxTree.Symbol; procedure: SyntaxTree.Procedure;  baseType: SyntaxTree.Type;
@@ -765,7 +765,7 @@ TYPE
 		PublicFP(ProcedureType)    = FP(arrayType) -> Signature(procedureType)
 		PublicFP(ProcedureType)    = FP(arrayType) -> Signature(procedureType)
 		PrivateFP(ProcedureType)   = FP(arrayType)-> Signature(procedureType).
 		PrivateFP(ProcedureType)   = FP(arrayType)-> Signature(procedureType).
 		*)
 		*)
-		PROCEDURE VisitProcedureType(x: SyntaxTree.ProcedureType);
+		PROCEDURE VisitProcedureType*(x: SyntaxTree.ProcedureType);
 		VAR fingerprint: FingerPrint; deep: BOOLEAN; fp: LONGINT;
 		VAR fingerprint: FingerPrint; deep: BOOLEAN; fp: LONGINT;
 		BEGIN
 		BEGIN
 			IF Trace THEN TraceEnter("ProcedureType") END;
 			IF Trace THEN TraceEnter("ProcedureType") END;
@@ -809,29 +809,29 @@ TYPE
 		(** values - used in constant symbols - effects in fingerprint modification of (object) global variable fp *)
 		(** values - used in constant symbols - effects in fingerprint modification of (object) global variable fp *)
 
 
 		(* fp = fp & (fpTrue | fpFalse) *)
 		(* fp = fp & (fpTrue | fpFalse) *)
-		PROCEDURE VisitBooleanValue(x: SyntaxTree.BooleanValue);
+		PROCEDURE VisitBooleanValue*(x: SyntaxTree.BooleanValue);
 		BEGIN IF x.value THEN FPNumber(SELF.fp,fpTrue) ELSE FPNumber(SELF.fp,fpFalse) END
 		BEGIN IF x.value THEN FPNumber(SELF.fp,fpTrue) ELSE FPNumber(SELF.fp,fpFalse) END
 		END VisitBooleanValue;
 		END VisitBooleanValue;
 
 
 		(* fp = fp & (HugeInt | Number) *)
 		(* fp = fp & (HugeInt | Number) *)
-		PROCEDURE VisitIntegerValue(x: SyntaxTree.IntegerValue);
+		PROCEDURE VisitIntegerValue*(x: SyntaxTree.IntegerValue);
 		BEGIN IF x.type.sizeInBits = 64 THEN FPHugeInt(SELF.fp,x.hvalue) ELSE FPNumber(SELF.fp,x.value) END;
 		BEGIN IF x.type.sizeInBits = 64 THEN FPHugeInt(SELF.fp,x.hvalue) ELSE FPNumber(SELF.fp,x.value) END;
 		END VisitIntegerValue;
 		END VisitIntegerValue;
 
 
 		(* fp = fp & (HugeInt | Number) *)
 		(* fp = fp & (HugeInt | Number) *)
-		PROCEDURE VisitEnumerationValue(x: SyntaxTree.EnumerationValue);
+		PROCEDURE VisitEnumerationValue*(x: SyntaxTree.EnumerationValue);
 		BEGIN FPNumber(SELF.fp,x.value)
 		BEGIN FPNumber(SELF.fp,x.value)
 		END VisitEnumerationValue;
 		END VisitEnumerationValue;
 
 
 		(* fp = fp & ORD(char) *)
 		(* fp = fp & ORD(char) *)
-		PROCEDURE VisitCharacterValue(x: SyntaxTree.CharacterValue);
+		PROCEDURE VisitCharacterValue*(x: SyntaxTree.CharacterValue);
 		BEGIN FPNumber(SELF.fp,ORD(x.value)) END VisitCharacterValue;
 		BEGIN FPNumber(SELF.fp,ORD(x.value)) END VisitCharacterValue;
 
 
 		(* fp = fp & Set *)
 		(* fp = fp & Set *)
-		PROCEDURE VisitSetValue(x: SyntaxTree.SetValue);
+		PROCEDURE VisitSetValue*(x: SyntaxTree.SetValue);
 		BEGIN FPSet(SELF.fp,x.value) END VisitSetValue;
 		BEGIN FPSet(SELF.fp,x.value) END VisitSetValue;
 
 
-		PROCEDURE VisitMathArrayExpression(x: SyntaxTree.MathArrayExpression);
+		PROCEDURE VisitMathArrayExpression*(x: SyntaxTree.MathArrayExpression);
 		VAR element: SyntaxTree.Expression; i: LONGINT;
 		VAR element: SyntaxTree.Expression; i: LONGINT;
 		BEGIN
 		BEGIN
 			FOR i := 0 TO x.elements.Length()-1 DO
 			FOR i := 0 TO x.elements.Length()-1 DO
@@ -841,25 +841,25 @@ TYPE
 		END VisitMathArrayExpression;
 		END VisitMathArrayExpression;
 
 
 		(* fp = fp {& Value} *)
 		(* fp = fp {& Value} *)
-		PROCEDURE VisitMathArrayValue(x: SyntaxTree.MathArrayValue);
+		PROCEDURE VisitMathArrayValue*(x: SyntaxTree.MathArrayValue);
 		BEGIN
 		BEGIN
 			VisitMathArrayExpression(x.array); (* do not call FPValue here, recursion possible because x.array.resolved = x  *)
 			VisitMathArrayExpression(x.array); (* do not call FPValue here, recursion possible because x.array.resolved = x  *)
 		END VisitMathArrayValue;
 		END VisitMathArrayValue;
 
 
 		(* fp = fp & (Real | LongReal) *)
 		(* fp = fp & (Real | LongReal) *)
-		PROCEDURE VisitRealValue(x: SyntaxTree.RealValue);
+		PROCEDURE VisitRealValue*(x: SyntaxTree.RealValue);
 		BEGIN
 		BEGIN
 			IF x.type.sizeInBits=32 THEN FPReal(SELF.fp,SHORT(x.value))
 			IF x.type.sizeInBits=32 THEN FPReal(SELF.fp,SHORT(x.value))
 			ELSE FPLongReal(SELF.fp,x.value)
 			ELSE FPLongReal(SELF.fp,x.value)
 			END;
 			END;
 		END VisitRealValue;
 		END VisitRealValue;
 		
 		
-		PROCEDURE VisitNilValue(x: SyntaxTree.NilValue);
+		PROCEDURE VisitNilValue*(x: SyntaxTree.NilValue);
 		BEGIN IF x.type.sizeInBits = 64 THEN FPHugeInt(SELF.fp, 0) ELSE FPNumber(SELF.fp, 0) END;
 		BEGIN IF x.type.sizeInBits = 64 THEN FPHugeInt(SELF.fp, 0) ELSE FPNumber(SELF.fp, 0) END;
 		END VisitNilValue;
 		END VisitNilValue;
 
 
 		(* fp = fp & String *)
 		(* fp = fp & String *)
-		PROCEDURE VisitStringValue(x: SyntaxTree.StringValue);
+		PROCEDURE VisitStringValue*(x: SyntaxTree.StringValue);
 		BEGIN FPString(SELF.fp,x.value^) END VisitStringValue;
 		BEGIN FPString(SELF.fp,x.value^) END VisitStringValue;
 
 
 		(* fp = fp & FP(x) *)
 		(* fp = fp & FP(x) *)
@@ -973,7 +973,7 @@ TYPE
 		(*
 		(*
 			FP(TypeDeclaration)        = 0 <*> fpModeType -> Name -> Visibility <*> FP(Type).
 			FP(TypeDeclaration)        = 0 <*> fpModeType -> Name -> Visibility <*> FP(Type).
 		*)
 		*)
-		PROCEDURE VisitTypeDeclaration(x: SyntaxTree.TypeDeclaration);
+		PROCEDURE VisitTypeDeclaration*(x: SyntaxTree.TypeDeclaration);
 		VAR fp: LONGINT;
 		VAR fp: LONGINT;
 			fingerprint: FingerPrint; deep: BOOLEAN;
 			fingerprint: FingerPrint; deep: BOOLEAN;
 			typeFP: FingerPrint;
 			typeFP: FingerPrint;
@@ -1018,7 +1018,7 @@ TYPE
 		(*
 		(*
 			FP(ConstantDeclaration)    = 0 <*> fpModeConstant -> Name -> Visibility <*> FP(Type) -> Basic -> Value.
 			FP(ConstantDeclaration)    = 0 <*> fpModeConstant -> Name -> Visibility <*> FP(Type) -> Basic -> Value.
 		*)
 		*)
-		PROCEDURE VisitConstant(x: SyntaxTree.Constant);
+		PROCEDURE VisitConstant*(x: SyntaxTree.Constant);
 		VAR access: SET;
 		VAR access: SET;
 			fingerprint: FingerPrint;
 			fingerprint: FingerPrint;
 			fp: LONGINT;
 			fp: LONGINT;
@@ -1051,7 +1051,7 @@ TYPE
 		(*
 		(*
 			FP(VariableDeclaration)    = 0 <*> fpModePar -> Name -> Visibility <*> FP(Type).
 			FP(VariableDeclaration)    = 0 <*> fpModePar -> Name -> Visibility <*> FP(Type).
 		*)
 		*)
-		PROCEDURE VisitVariable(x: SyntaxTree.Variable);
+		PROCEDURE VisitVariable*(x: SyntaxTree.Variable);
 		VAR fingerprint: FingerPrint; deep: BOOLEAN; name: SyntaxTree.IdentifierString;
 		VAR fingerprint: FingerPrint; deep: BOOLEAN; name: SyntaxTree.IdentifierString;
 		BEGIN
 		BEGIN
 			fingerprint := x.fingerprint;
 			fingerprint := x.fingerprint;
@@ -1076,7 +1076,7 @@ TYPE
 			SELF.fingerprint := fingerprint
 			SELF.fingerprint := fingerprint
 		END VisitVariable;
 		END VisitVariable;
 		
 		
-		PROCEDURE VisitProperty(x: SyntaxTree.Property);
+		PROCEDURE VisitProperty*(x: SyntaxTree.Property);
 		BEGIN
 		BEGIN
 			VisitVariable(x);
 			VisitVariable(x);
 		END VisitProperty;
 		END VisitProperty;
@@ -1085,7 +1085,7 @@ TYPE
 		(*
 		(*
 			FP(ParameterDeclaration)    = 0 <*> fpModePar -> Name -> Visibility <*> FP(Type).
 			FP(ParameterDeclaration)    = 0 <*> fpModePar -> Name -> Visibility <*> FP(Type).
 		*)
 		*)
-		PROCEDURE VisitParameter(x: SyntaxTree.Parameter);
+		PROCEDURE VisitParameter*(x: SyntaxTree.Parameter);
 		VAR fingerprint: FingerPrint; deep: BOOLEAN; name: SyntaxTree.IdentifierString;
 		VAR fingerprint: FingerPrint; deep: BOOLEAN; name: SyntaxTree.IdentifierString;
 		BEGIN
 		BEGIN
 			fingerprint := x.fingerprint;
 			fingerprint := x.fingerprint;
@@ -1114,7 +1114,7 @@ TYPE
 		FP(ProcedureDeclaration)   = 0 <*> fpModeInlineProcedure -> Name -> Visibility <*> FP(Type) -> Code.
 		FP(ProcedureDeclaration)   = 0 <*> fpModeInlineProcedure -> Name -> Visibility <*> FP(Type) -> Code.
 		                            | 0 <*> fpModeExportedProcedure -> Name -> Visibility <*> FP(Type)
 		                            | 0 <*> fpModeExportedProcedure -> Name -> Visibility <*> FP(Type)
 		*)
 		*)
-		PROCEDURE VisitProcedure(x: SyntaxTree.Procedure);
+		PROCEDURE VisitProcedure*(x: SyntaxTree.Procedure);
 		VAR fp: LONGINT; access: SET; fingerprint: FingerPrint; deep: BOOLEAN; code: SyntaxTree.Code; i: LONGINT;
 		VAR fp: LONGINT; access: SET; fingerprint: FingerPrint; deep: BOOLEAN; code: SyntaxTree.Code; i: LONGINT;
 			size,value: LONGINT; name: ARRAY 256 OF CHAR;
 			size,value: LONGINT; name: ARRAY 256 OF CHAR;
 		BEGIN
 		BEGIN
@@ -1166,12 +1166,12 @@ TYPE
 		END VisitProcedure;
 		END VisitProcedure;
 
 
 		(* cf. Procedure *)
 		(* cf. Procedure *)
-		PROCEDURE VisitOperator(x: SyntaxTree.Operator);
+		PROCEDURE VisitOperator*(x: SyntaxTree.Operator);
 		BEGIN
 		BEGIN
 			VisitProcedure(x) (* same finger print as a procedure *)
 			VisitProcedure(x) (* same finger print as a procedure *)
 		END VisitOperator;
 		END VisitOperator;
 		
 		
-		PROCEDURE VisitModule(x: SyntaxTree.Module);
+		PROCEDURE VisitModule*(x: SyntaxTree.Module);
 		VAR fingerprint, symbolFingerPrint: FingerPrint; deep: BOOLEAN; fp: LONGINT; symbol: SyntaxTree.Symbol; scope: SyntaxTree.ModuleScope;
 		VAR fingerprint, symbolFingerPrint: FingerPrint; deep: BOOLEAN; fp: LONGINT; symbol: SyntaxTree.Symbol; scope: SyntaxTree.ModuleScope;
 		BEGIN
 		BEGIN
 			fingerprint := x.fingerprint;
 			fingerprint := x.fingerprint;
@@ -1231,7 +1231,7 @@ TYPE
 
 
 		END VisitModule;
 		END VisitModule;
 
 
-		PROCEDURE VisitSymbol(x: SyntaxTree.Symbol);
+		PROCEDURE VisitSymbol*(x: SyntaxTree.Symbol);
 		BEGIN
 		BEGIN
 			fingerprint.shallow := 0;
 			fingerprint.shallow := 0;
 			fingerprint.public := fingerprint.shallow;
 			fingerprint.public := fingerprint.shallow;

+ 1 - 1
source/FoxGenericObjectFile.Mod

@@ -344,7 +344,7 @@ TYPE ObjectFileFormat* = OBJECT (Formats.ObjectFileFormat)
 			mergeSections := options.GetFlag("mergeSections");
 			mergeSections := options.GetFlag("mergeSections");
 		END GetOptions;
 		END GetOptions;
 
 
-		PROCEDURE DefaultSymbolFileFormat(): Formats.SymbolFileFormat;
+		PROCEDURE DefaultSymbolFileFormat*(): Formats.SymbolFileFormat;
 		BEGIN RETURN SymbolFileFormat.Get();
 		BEGIN RETURN SymbolFileFormat.Get();
 		END DefaultSymbolFileFormat;
 		END DefaultSymbolFileFormat;
 
 

+ 78 - 78
source/FoxIntermediateBackend.Mod

@@ -204,22 +204,22 @@ TYPE
 
 
 		(** types **)
 		(** types **)
 
 
-		PROCEDURE VisitBasicType(x: SyntaxTree.BasicType);
+		PROCEDURE VisitBasicType*(x: SyntaxTree.BasicType);
 		BEGIN (* no code emission *) END VisitBasicType;
 		BEGIN (* no code emission *) END VisitBasicType;
 
 
-		PROCEDURE VisitCharacterType(x: SyntaxTree.CharacterType);
+		PROCEDURE VisitCharacterType*(x: SyntaxTree.CharacterType);
 		BEGIN (* no code emission *)  END VisitCharacterType;
 		BEGIN (* no code emission *)  END VisitCharacterType;
 
 
-		PROCEDURE VisitIntegerType(x: SyntaxTree.IntegerType);
+		PROCEDURE VisitIntegerType*(x: SyntaxTree.IntegerType);
 		BEGIN (* no code emission *)  END VisitIntegerType;
 		BEGIN (* no code emission *)  END VisitIntegerType;
 
 
-		PROCEDURE VisitFloatType(x: SyntaxTree.FloatType);
+		PROCEDURE VisitFloatType*(x: SyntaxTree.FloatType);
 		BEGIN (* no code emission *)  END VisitFloatType;
 		BEGIN (* no code emission *)  END VisitFloatType;
 
 
-		PROCEDURE VisitComplexType(x: SyntaxTree.ComplexType);
+		PROCEDURE VisitComplexType*(x: SyntaxTree.ComplexType);
 		BEGIN (* no code emission *)  END VisitComplexType;
 		BEGIN (* no code emission *)  END VisitComplexType;
 
 
-		PROCEDURE VisitQualifiedType(x: SyntaxTree.QualifiedType);
+		PROCEDURE VisitQualifiedType*(x: SyntaxTree.QualifiedType);
 		VAR type: SyntaxTree.Type;
 		VAR type: SyntaxTree.Type;
 		BEGIN (* no further traversal to x.resolved necessary since type descriptor and code will be inserted at "original" position ? *)
 		BEGIN (* no further traversal to x.resolved necessary since type descriptor and code will be inserted at "original" position ? *)
 			type := x.resolved;
 			type := x.resolved;
@@ -228,31 +228,31 @@ TYPE
 			END;
 			END;
 		END VisitQualifiedType;
 		END VisitQualifiedType;
 
 
-		PROCEDURE VisitStringType(x: SyntaxTree.StringType);
+		PROCEDURE VisitStringType*(x: SyntaxTree.StringType);
 		BEGIN (* no code emission *)   END VisitStringType;
 		BEGIN (* no code emission *)   END VisitStringType;
 
 
 		PROCEDURE VisitArrayRangeType(x: SyntaxTree.RangeType);
 		PROCEDURE VisitArrayRangeType(x: SyntaxTree.RangeType);
 		BEGIN (* no code emission *)
 		BEGIN (* no code emission *)
 		END VisitArrayRangeType;
 		END VisitArrayRangeType;
 
 
-		PROCEDURE VisitArrayType(x: SyntaxTree.ArrayType);
+		PROCEDURE VisitArrayType*(x: SyntaxTree.ArrayType);
 		BEGIN (* no code emission *)   END VisitArrayType;
 		BEGIN (* no code emission *)   END VisitArrayType;
 
 
-		PROCEDURE VisitPortType(x: SyntaxTree.PortType);
+		PROCEDURE VisitPortType*(x: SyntaxTree.PortType);
 		BEGIN (* no code emission *)   END VisitPortType;
 		BEGIN (* no code emission *)   END VisitPortType;
 
 
-		PROCEDURE VisitMathArrayType(x: SyntaxTree.MathArrayType);
+		PROCEDURE VisitMathArrayType*(x: SyntaxTree.MathArrayType);
 		BEGIN
 		BEGIN
 			meta.CheckTypeDeclaration(x);
 			meta.CheckTypeDeclaration(x);
 		END VisitMathArrayType;
 		END VisitMathArrayType;
 
 
-		PROCEDURE VisitPointerType(x: SyntaxTree.PointerType);
+		PROCEDURE VisitPointerType*(x: SyntaxTree.PointerType);
 		BEGIN
 		BEGIN
 			meta.CheckTypeDeclaration(x);
 			meta.CheckTypeDeclaration(x);
 			(* base type must not be visited => will be done via record type declaration, otherwise is done twice ! *)
 			(* base type must not be visited => will be done via record type declaration, otherwise is done twice ! *)
 		END VisitPointerType;
 		END VisitPointerType;
 
 
-		PROCEDURE VisitRecordType(x: SyntaxTree.RecordType);
+		PROCEDURE VisitRecordType*(x: SyntaxTree.RecordType);
 		VAR name: ARRAY 256 OF CHAR; td: SyntaxTree.TypeDeclaration;
 		VAR name: ARRAY 256 OF CHAR; td: SyntaxTree.TypeDeclaration;
 		BEGIN (* no code emission *)
 		BEGIN (* no code emission *)
 			meta.CheckTypeDeclaration(x);
 			meta.CheckTypeDeclaration(x);
@@ -279,7 +279,7 @@ TYPE
 			RETURN this # NIL
 			RETURN this # NIL
 		END HasFlag;
 		END HasFlag;
 
 
-		PROCEDURE VisitCellType(x: SyntaxTree.CellType);
+		PROCEDURE VisitCellType*(x: SyntaxTree.CellType);
 		VAR port,adr: LONGINT; symbol: IntermediateCode.Section; op: IntermediateCode.Operand; capabilities: SET;
 		VAR port,adr: LONGINT; symbol: IntermediateCode.Section; op: IntermediateCode.Operand; capabilities: SET;
 		BEGIN
 		BEGIN
 			IF backend.cellsAreObjects THEN meta.CheckTypeDeclaration(x) END;
 			IF backend.cellsAreObjects THEN meta.CheckTypeDeclaration(x) END;
@@ -293,26 +293,26 @@ TYPE
 			END;
 			END;
 		END VisitCellType;
 		END VisitCellType;
 
 
-		PROCEDURE VisitProcedureType(x: SyntaxTree.ProcedureType);
+		PROCEDURE VisitProcedureType*(x: SyntaxTree.ProcedureType);
 		BEGIN (* no code emission *)   END VisitProcedureType;
 		BEGIN (* no code emission *)   END VisitProcedureType;
 
 
-		PROCEDURE VisitEnumerationType(x: SyntaxTree.EnumerationType);
+		PROCEDURE VisitEnumerationType*(x: SyntaxTree.EnumerationType);
 		BEGIN (* no code emission, exported enumeration type values should be included in symbol file *)
 		BEGIN (* no code emission, exported enumeration type values should be included in symbol file *)
 		END VisitEnumerationType;
 		END VisitEnumerationType;
 
 
 		(* symbols *)
 		(* symbols *)
 
 
-		PROCEDURE VisitProcedure(x: SyntaxTree.Procedure);
+		PROCEDURE VisitProcedure*(x: SyntaxTree.Procedure);
 		BEGIN
 		BEGIN
 			Procedure(x);
 			Procedure(x);
 		END VisitProcedure;
 		END VisitProcedure;
 
 
-		PROCEDURE VisitOperator(x: SyntaxTree.Operator);
+		PROCEDURE VisitOperator*(x: SyntaxTree.Operator);
 		BEGIN
 		BEGIN
 			Procedure(x);
 			Procedure(x);
 		END VisitOperator;
 		END VisitOperator;
 
 
-		PROCEDURE VisitVariable(x: SyntaxTree.Variable);
+		PROCEDURE VisitVariable*(x: SyntaxTree.Variable);
 		VAR name: Basic.SegmentedName; irv: IntermediateCode.Section; align,  dim, i: LONGINT;
 		VAR name: Basic.SegmentedName; irv: IntermediateCode.Section; align,  dim, i: LONGINT;
 			size: LONGINT; lastUpdated: LONGINT; imm: IntermediateCode.Operand;
 			size: LONGINT; lastUpdated: LONGINT; imm: IntermediateCode.Operand;
 
 
@@ -456,12 +456,12 @@ TYPE
 			(* do not call Type(x.type) here as this must already performed in the type declaration section ! *)
 			(* do not call Type(x.type) here as this must already performed in the type declaration section ! *)
 		END VisitVariable;
 		END VisitVariable;
 
 
-		PROCEDURE VisitProperty(x: SyntaxTree.Property);
+		PROCEDURE VisitProperty*(x: SyntaxTree.Property);
 		BEGIN
 		BEGIN
 			VisitVariable(x)
 			VisitVariable(x)
 		END VisitProperty; 
 		END VisitProperty; 
 
 
-		PROCEDURE VisitParameter(x: SyntaxTree.Parameter);
+		PROCEDURE VisitParameter*(x: SyntaxTree.Parameter);
 		VAR name: Basic.SegmentedName; irv: IntermediateCode.Section; align, i, dim: LONGINT;
 		VAR name: Basic.SegmentedName; irv: IntermediateCode.Section; align, i, dim: LONGINT;
 			size: LONGINT; lastUpdated: LONGINT; imm: IntermediateCode.Operand;
 			size: LONGINT; lastUpdated: LONGINT; imm: IntermediateCode.Operand;
 		BEGIN
 		BEGIN
@@ -495,7 +495,7 @@ TYPE
 		
 		
 
 
 
 
-		PROCEDURE VisitTypeDeclaration(x: SyntaxTree.TypeDeclaration);
+		PROCEDURE VisitTypeDeclaration*(x: SyntaxTree.TypeDeclaration);
 		BEGIN
 		BEGIN
 			Type(x.declaredType); (* => code in objects *)
 			Type(x.declaredType); (* => code in objects *)
 			IF ~(x.declaredType IS SyntaxTree.QualifiedType) & (x.declaredType.resolved IS SyntaxTree.PointerType) THEN
 			IF ~(x.declaredType IS SyntaxTree.QualifiedType) & (x.declaredType.resolved IS SyntaxTree.PointerType) THEN
@@ -503,7 +503,7 @@ TYPE
 			END;
 			END;
 		END VisitTypeDeclaration;
 		END VisitTypeDeclaration;
 
 
-		PROCEDURE VisitConstant(x: SyntaxTree.Constant);
+		PROCEDURE VisitConstant*(x: SyntaxTree.Constant);
 		BEGIN
 		BEGIN
 			IF (SyntaxTree.Public * x.access # {}) THEN
 			IF (SyntaxTree.Public * x.access # {}) THEN
 				implementationVisitor.VisitConstant(x);
 				implementationVisitor.VisitConstant(x);
@@ -1170,7 +1170,7 @@ TYPE
 			nameIndex := 0; 
 			nameIndex := 0; 
 		END Init;
 		END Init;
 		
 		
-		PROCEDURE Clear;
+		PROCEDURE Clear*;
 		VAR i: LONGINT;
 		VAR i: LONGINT;
 		BEGIN
 		BEGIN
 			Clear^;
 			Clear^;
@@ -2276,7 +2276,7 @@ TYPE
 			RETURN resultingSet
 			RETURN resultingSet
 		END SetFromRange;
 		END SetFromRange;
 
 
-		PROCEDURE VisitSet(x: SyntaxTree.Set);
+		PROCEDURE VisitSet*(x: SyntaxTree.Set);
 		VAR
 		VAR
 			res, operand: Operand;
 			res, operand: Operand;
 			temp, one, noBits, dest: IntermediateCode.Operand;
 			temp, one, noBits, dest: IntermediateCode.Operand;
@@ -2331,7 +2331,7 @@ TYPE
 		(* math arrays of the form [a,b,c] 
 		(* math arrays of the form [a,b,c] 
 			x is a static array and thus does not provide any pointers
 			x is a static array and thus does not provide any pointers
 		*)
 		*)
-		PROCEDURE VisitMathArrayExpression(x: SyntaxTree.MathArrayExpression);
+		PROCEDURE VisitMathArrayExpression*(x: SyntaxTree.MathArrayExpression);
 		VAR variable: SyntaxTree.Variable; index: SyntaxTree.IndexDesignator; dim: LONGINT;
 		VAR variable: SyntaxTree.Variable; index: SyntaxTree.IndexDesignator; dim: LONGINT;
 			designator: SyntaxTree.Designator; i: LONGINT; element: SyntaxTree.IntegerValue;
 			designator: SyntaxTree.Designator; i: LONGINT; element: SyntaxTree.IntegerValue;
 
 
@@ -2370,7 +2370,7 @@ TYPE
 			Expression(designator);
 			Expression(designator);
 		END VisitMathArrayExpression;
 		END VisitMathArrayExpression;
 
 
-		PROCEDURE VisitUnaryExpression(x: SyntaxTree.UnaryExpression);
+		PROCEDURE VisitUnaryExpression*(x: SyntaxTree.UnaryExpression);
 		VAR type,t0: SyntaxTree.Type; operand: Operand; dest: IntermediateCode.Operand;
 		VAR type,t0: SyntaxTree.Type; operand: Operand; dest: IntermediateCode.Operand;
 		BEGIN
 		BEGIN
 			IF Trace THEN TraceEnter("VisitUnaryExpression") END;
 			IF Trace THEN TraceEnter("VisitUnaryExpression") END;
@@ -3383,7 +3383,7 @@ TYPE
 			RestoreRegisters(saved);
 			RestoreRegisters(saved);
 		END CopyString;
 		END CopyString;
 
 
-		PROCEDURE VisitBinaryExpression(x: SyntaxTree.BinaryExpression);
+		PROCEDURE VisitBinaryExpression*(x: SyntaxTree.BinaryExpression);
 		VAR left,right: Operand; temp: Operand;  zero, one, tempReg, tempReg2: IntermediateCode.Operand;
 		VAR left,right: Operand; temp: Operand;  zero, one, tempReg, tempReg2: IntermediateCode.Operand;
 			leftType,rightType: SyntaxTree.Type;
 			leftType,rightType: SyntaxTree.Type;
 			leftExpression,rightExpression : SyntaxTree.Expression;
 			leftExpression,rightExpression : SyntaxTree.Expression;
@@ -3816,7 +3816,7 @@ TYPE
 			IF Trace THEN TraceExit("VisitBinaryExpression") END;
 			IF Trace THEN TraceExit("VisitBinaryExpression") END;
 		END VisitBinaryExpression;
 		END VisitBinaryExpression;
 
 
-		PROCEDURE VisitRangeExpression(x: SyntaxTree.RangeExpression);
+		PROCEDURE VisitRangeExpression*(x: SyntaxTree.RangeExpression);
 		VAR localResult, operand: Operand;
 		VAR localResult, operand: Operand;
 		BEGIN
 		BEGIN
 			IF Trace THEN TraceEnter("VisitRangeExpression") END;
 			IF Trace THEN TraceEnter("VisitRangeExpression") END;
@@ -3852,7 +3852,7 @@ TYPE
 			HALT(100); (* should never be evaluated *)
 			HALT(100); (* should never be evaluated *)
 		END VisitTensorRangeExpression;
 		END VisitTensorRangeExpression;
 
 
-		PROCEDURE VisitConversion(x: SyntaxTree.Conversion);
+		PROCEDURE VisitConversion*(x: SyntaxTree.Conversion);
 		VAR old: Operand; dest: IntermediateCode.Operand; componentType: SyntaxTree.Type;
 		VAR old: Operand; dest: IntermediateCode.Operand; componentType: SyntaxTree.Type;
 		BEGIN
 		BEGIN
 			IF Trace THEN TraceEnter("VisitConversion") END;
 			IF Trace THEN TraceEnter("VisitConversion") END;
@@ -3891,7 +3891,7 @@ TYPE
 			IF Trace THEN TraceExit("VisitConversion") END;
 			IF Trace THEN TraceExit("VisitConversion") END;
 		END VisitConversion;
 		END VisitConversion;
 
 
-		PROCEDURE VisitTypeDeclaration(x: SyntaxTree.TypeDeclaration);
+		PROCEDURE VisitTypeDeclaration*(x: SyntaxTree.TypeDeclaration);
 		BEGIN
 		BEGIN
 			IF Trace THEN TraceEnter("VisitTypeDeclaration") END;
 			IF Trace THEN TraceEnter("VisitTypeDeclaration") END;
 			ASSERT((x.declaredType.resolved IS SyntaxTree.EnumerationType) OR (x.declaredType.resolved IS SyntaxTree.RecordType)
 			ASSERT((x.declaredType.resolved IS SyntaxTree.EnumerationType) OR (x.declaredType.resolved IS SyntaxTree.RecordType)
@@ -3901,7 +3901,7 @@ TYPE
 
 
 		(** designators (expressions) *)
 		(** designators (expressions) *)
 
 
-		PROCEDURE VisitSymbolDesignator(x: SyntaxTree.SymbolDesignator);
+		PROCEDURE VisitSymbolDesignator*(x: SyntaxTree.SymbolDesignator);
 		VAR ownerType, designatorType: SyntaxTree.RecordType;
 		VAR ownerType, designatorType: SyntaxTree.RecordType;
 		BEGIN
 		BEGIN
 			IF Trace THEN TraceEnter("VisitSymbolDesignator") END;
 			IF Trace THEN TraceEnter("VisitSymbolDesignator") END;
@@ -4540,7 +4540,7 @@ TYPE
 			END;
 			END;
 		END IndexDesignator;
 		END IndexDesignator;
 
 
-		PROCEDURE VisitIndexDesignator(x: SyntaxTree.IndexDesignator);
+		PROCEDURE VisitIndexDesignator*(x: SyntaxTree.IndexDesignator);
 		VAR type: SyntaxTree.Type; dest: IntermediateCode.Operand;
 		VAR type: SyntaxTree.Type; dest: IntermediateCode.Operand;
 		BEGIN
 		BEGIN
 			IF Trace THEN TraceEnter("VisitIndexDesignator") END;
 			IF Trace THEN TraceEnter("VisitIndexDesignator") END;
@@ -5336,7 +5336,7 @@ TYPE
 			IF Trace THEN TraceExit("PushParameter") END;
 			IF Trace THEN TraceExit("PushParameter") END;
 		END PushParameter;
 		END PushParameter;
 
 
-		PROCEDURE VisitStatementDesignator(x: SyntaxTree.StatementDesignator);
+		PROCEDURE VisitStatementDesignator*(x: SyntaxTree.StatementDesignator);
 		VAR prevConditional: BOOLEAN;
 		VAR prevConditional: BOOLEAN;
 		BEGIN
 		BEGIN
 			prevConditional := conditional;
 			prevConditional := conditional;
@@ -5515,7 +5515,7 @@ TYPE
 			RETURN ~tooComplex
 			RETURN ~tooComplex
 		END InlineProcedureCall;
 		END InlineProcedureCall;
 
 
-		PROCEDURE VisitProcedureCallDesignator(x: SyntaxTree.ProcedureCallDesignator);
+		PROCEDURE VisitProcedureCallDesignator*(x: SyntaxTree.ProcedureCallDesignator);
 		VAR
 		VAR
 			parameters: SyntaxTree.ExpressionList;
 			parameters: SyntaxTree.ExpressionList;
 			d, resultDesignator, actualParameter: SyntaxTree.Expression;
 			d, resultDesignator, actualParameter: SyntaxTree.Expression;
@@ -7542,7 +7542,7 @@ TYPE
 			 *)
 			 *)
 		END OnHeap;
 		END OnHeap;
 
 
-		PROCEDURE VisitBuiltinCallDesignator(x: SyntaxTree.BuiltinCallDesignator);
+		PROCEDURE VisitBuiltinCallDesignator*(x: SyntaxTree.BuiltinCallDesignator);
 		VAR
 		VAR
 			p0,p1,p2,parameter: SyntaxTree.Expression; len,val: LONGINT; l,r: Operand; res,adr,reg: IntermediateCode.Operand; type, componentType: SyntaxTree.Type;
 			p0,p1,p2,parameter: SyntaxTree.Expression; len,val: LONGINT; l,r: Operand; res,adr,reg: IntermediateCode.Operand; type, componentType: SyntaxTree.Type;
 			constructor: SyntaxTree.Procedure; s0,s1,s2: Operand; hint: HUGEINT;
 			constructor: SyntaxTree.Procedure; s0,s1,s2: Operand; hint: HUGEINT;
@@ -9143,7 +9143,7 @@ TYPE
 			IF Trace THEN TraceExit("VisitBuiltinCallDesignator") END;
 			IF Trace THEN TraceExit("VisitBuiltinCallDesignator") END;
 		END VisitBuiltinCallDesignator;
 		END VisitBuiltinCallDesignator;
 
 
-		PROCEDURE VisitTypeGuardDesignator(x: SyntaxTree.TypeGuardDesignator);
+		PROCEDURE VisitTypeGuardDesignator*(x: SyntaxTree.TypeGuardDesignator);
 		VAR trueL,falseL: Label; recordType: SyntaxTree.RecordType; dest,tag,ptr: IntermediateCode.Operand;
 		VAR trueL,falseL: Label; recordType: SyntaxTree.RecordType; dest,tag,ptr: IntermediateCode.Operand;
 		BEGIN
 		BEGIN
 			IF Trace THEN TraceEnter("VisitTypeGuardDesignator") END;
 			IF Trace THEN TraceEnter("VisitTypeGuardDesignator") END;
@@ -9248,7 +9248,7 @@ TYPE
 			END;
 			END;
 		END Dereference;
 		END Dereference;
 
 
-		PROCEDURE VisitDereferenceDesignator(x: SyntaxTree.DereferenceDesignator);
+		PROCEDURE VisitDereferenceDesignator*(x: SyntaxTree.DereferenceDesignator);
 		VAR  type: SyntaxTree.Type; d: Operand; dest: IntermediateCode.Operand;prevIsUnchecked: BOOLEAN;
 		VAR  type: SyntaxTree.Type; d: Operand; dest: IntermediateCode.Operand;prevIsUnchecked: BOOLEAN;
 		BEGIN
 		BEGIN
 			IF Trace THEN TraceEnter("VisitDereferenceDesignator") END;
 			IF Trace THEN TraceEnter("VisitDereferenceDesignator") END;
@@ -9271,7 +9271,7 @@ TYPE
 			IF Trace THEN TraceExit("VisitDereferenceDesignator") END;
 			IF Trace THEN TraceExit("VisitDereferenceDesignator") END;
 		END VisitDereferenceDesignator;
 		END VisitDereferenceDesignator;
 
 
-		PROCEDURE VisitSupercallDesignator(x: SyntaxTree.SupercallDesignator);
+		PROCEDURE VisitSupercallDesignator*(x: SyntaxTree.SupercallDesignator);
 		VAR procedure: SyntaxTree.Procedure; tag: IntermediateCode.Operand; dest: IntermediateCode.Operand;
 		VAR procedure: SyntaxTree.Procedure; tag: IntermediateCode.Operand; dest: IntermediateCode.Operand;
 		BEGIN
 		BEGIN
 			IF Trace THEN TraceEnter("VisitSupercallDesignator") END;
 			IF Trace THEN TraceEnter("VisitSupercallDesignator") END;
@@ -9290,7 +9290,7 @@ TYPE
 			IF Trace THEN TraceExit("VisitSupercallDesignator") END;
 			IF Trace THEN TraceExit("VisitSupercallDesignator") END;
 		END VisitSupercallDesignator;
 		END VisitSupercallDesignator;
 
 
-		PROCEDURE VisitSelfDesignator(x: SyntaxTree.SelfDesignator);
+		PROCEDURE VisitSelfDesignator*(x: SyntaxTree.SelfDesignator);
 		VAR basereg: IntermediateCode.Operand; scope: SyntaxTree.Scope; dest: IntermediateCode.Operand;
 		VAR basereg: IntermediateCode.Operand; scope: SyntaxTree.Scope; dest: IntermediateCode.Operand;
 			moduleSection: IntermediateCode.Section; moduleOffset, parametersSize: LONGINT;
 			moduleSection: IntermediateCode.Section; moduleOffset, parametersSize: LONGINT;
 			name: Basic.SegmentedName;
 			name: Basic.SegmentedName;
@@ -9341,7 +9341,7 @@ TYPE
 			IF Trace THEN TraceExit("VisitSelfDesignator") END;
 			IF Trace THEN TraceExit("VisitSelfDesignator") END;
 		END VisitSelfDesignator;
 		END VisitSelfDesignator;
 
 
-		PROCEDURE VisitResultDesignator(x: SyntaxTree.ResultDesignator);
+		PROCEDURE VisitResultDesignator*(x: SyntaxTree.ResultDesignator);
 		VAR procedure: SyntaxTree.Procedure; procedureType: SyntaxTree.ProcedureType; parameter: SyntaxTree.Parameter; map: SymbolMap;
 		VAR procedure: SyntaxTree.Procedure; procedureType: SyntaxTree.ProcedureType; parameter: SyntaxTree.Parameter; map: SymbolMap;
 		BEGIN
 		BEGIN
 			IF Trace THEN TraceEnter("VisitResultDesignator") END;
 			IF Trace THEN TraceEnter("VisitResultDesignator") END;
@@ -9364,7 +9364,7 @@ TYPE
 		END VisitResultDesignator;
 		END VisitResultDesignator;
 
 
 		(** values *)
 		(** values *)
-		PROCEDURE VisitBooleanValue(x: SyntaxTree.BooleanValue);
+		PROCEDURE VisitBooleanValue*(x: SyntaxTree.BooleanValue);
 		BEGIN
 		BEGIN
 			IF Trace THEN TraceEnter("VisitBooleanValue") END;
 			IF Trace THEN TraceEnter("VisitBooleanValue") END;
 			IF conditional THEN
 			IF conditional THEN
@@ -9396,7 +9396,7 @@ TYPE
 			IntermediateCode.MakeMemory(vop, type);
 			IntermediateCode.MakeMemory(vop, type);
 		END GetImmediateMem;
 		END GetImmediateMem;
 
 
-		PROCEDURE VisitIntegerValue(x: SyntaxTree.IntegerValue);
+		PROCEDURE VisitIntegerValue*(x: SyntaxTree.IntegerValue);
 		BEGIN
 		BEGIN
 			IF Trace THEN TraceEnter("VisitIntegerValue") END;
 			IF Trace THEN TraceEnter("VisitIntegerValue") END;
 			InitOperand(result,ModeValue);
 			InitOperand(result,ModeValue);
@@ -9406,21 +9406,21 @@ TYPE
 			END;
 			END;
 		END VisitIntegerValue;
 		END VisitIntegerValue;
 
 
-		PROCEDURE VisitCharacterValue(x: SyntaxTree.CharacterValue);
+		PROCEDURE VisitCharacterValue*(x: SyntaxTree.CharacterValue);
 		BEGIN
 		BEGIN
 			IF Trace THEN TraceEnter("VisitCharacterValue") END;
 			IF Trace THEN TraceEnter("VisitCharacterValue") END;
 			InitOperand(result,ModeValue);
 			InitOperand(result,ModeValue);
 			IntermediateCode.InitImmediate(result.op,IntermediateCode.GetType(system,x.type),ORD(x.value));
 			IntermediateCode.InitImmediate(result.op,IntermediateCode.GetType(system,x.type),ORD(x.value));
 		END VisitCharacterValue;
 		END VisitCharacterValue;
 
 
-		PROCEDURE VisitSetValue(x: SyntaxTree.SetValue);
+		PROCEDURE VisitSetValue*(x: SyntaxTree.SetValue);
 		BEGIN
 		BEGIN
 			IF Trace THEN TraceEnter("VisitSetValue") END;
 			IF Trace THEN TraceEnter("VisitSetValue") END;
 			InitOperand(result,ModeValue);
 			InitOperand(result,ModeValue);
 			IntermediateCode.InitImmediate(result.op,IntermediateCode.GetType(system,x.type),SYSTEM.VAL(LONGINT,x.value));
 			IntermediateCode.InitImmediate(result.op,IntermediateCode.GetType(system,x.type),SYSTEM.VAL(LONGINT,x.value));
 		END VisitSetValue;
 		END VisitSetValue;
 
 
-		PROCEDURE VisitMathArrayValue(x: SyntaxTree.MathArrayValue);
+		PROCEDURE VisitMathArrayValue*(x: SyntaxTree.MathArrayValue);
 		VAR  irv: IntermediateCode.Section; name:Basic.SegmentedName;
 		VAR  irv: IntermediateCode.Section; name:Basic.SegmentedName;
 
 
 			PROCEDURE RecursiveData(x: SyntaxTree.MathArrayExpression);
 			PROCEDURE RecursiveData(x: SyntaxTree.MathArrayExpression);
@@ -9474,20 +9474,20 @@ TYPE
 			RETURN FALSE
 			RETURN FALSE
 		END TryConstantDeclaration;
 		END TryConstantDeclaration;
 
 
-		PROCEDURE VisitConstant(x: SyntaxTree.Constant);
+		PROCEDURE VisitConstant*(x: SyntaxTree.Constant);
 		BEGIN
 		BEGIN
 			constantDeclaration := x;
 			constantDeclaration := x;
 			x.value.resolved.Accept(SELF);
 			x.value.resolved.Accept(SELF);
 		END VisitConstant;
 		END VisitConstant;
 
 
-		PROCEDURE VisitRealValue(x: SyntaxTree.RealValue);
+		PROCEDURE VisitRealValue*(x: SyntaxTree.RealValue);
 		BEGIN
 		BEGIN
 			IF Trace THEN TraceEnter("VisitRealValue") END;
 			IF Trace THEN TraceEnter("VisitRealValue") END;
 			InitOperand(result,ModeValue);
 			InitOperand(result,ModeValue);
 			IntermediateCode.InitFloatImmediate(result.op,IntermediateCode.GetType(system,x.type),x.value);
 			IntermediateCode.InitFloatImmediate(result.op,IntermediateCode.GetType(system,x.type),x.value);
 		END VisitRealValue;
 		END VisitRealValue;
 
 
-		PROCEDURE VisitComplexValue(x: SyntaxTree.ComplexValue);
+		PROCEDURE VisitComplexValue*(x: SyntaxTree.ComplexValue);
 		VAR
 		VAR
 			componentType: SyntaxTree.Type;
 			componentType: SyntaxTree.Type;
 		BEGIN
 		BEGIN
@@ -9499,7 +9499,7 @@ TYPE
 			IntermediateCode.InitFloatImmediate(result.tag,IntermediateCode.GetType(system,componentType),x.imagValue); (* imaginary part *)
 			IntermediateCode.InitFloatImmediate(result.tag,IntermediateCode.GetType(system,componentType),x.imagValue); (* imaginary part *)
 		END VisitComplexValue;
 		END VisitComplexValue;
 
 
-		PROCEDURE VisitStringValue(x: SyntaxTree.StringValue);
+		PROCEDURE VisitStringValue*(x: SyntaxTree.StringValue);
 		VAR  i: LONGINT; name: Basic.SegmentedName;
 		VAR  i: LONGINT; name: Basic.SegmentedName;
 			irv: IntermediateCode.Section; op: IntermediateCode.Operand;
 			irv: IntermediateCode.Section; op: IntermediateCode.Operand;
 		BEGIN
 		BEGIN
@@ -9522,7 +9522,7 @@ TYPE
 			END
 			END
 		END VisitStringValue;
 		END VisitStringValue;
 
 
-		PROCEDURE VisitNilValue(x: SyntaxTree.NilValue);
+		PROCEDURE VisitNilValue*(x: SyntaxTree.NilValue);
 		BEGIN
 		BEGIN
 			IF Trace THEN TraceEnter("VisitNilValue") END;
 			IF Trace THEN TraceEnter("VisitNilValue") END;
 			InitOperand(result,ModeValue);
 			InitOperand(result,ModeValue);
@@ -9530,7 +9530,7 @@ TYPE
 			result.tag := IntermediateCode.Immediate(IntermediateCode.GetType(system,x.type),0);
 			result.tag := IntermediateCode.Immediate(IntermediateCode.GetType(system,x.type),0);
 		END VisitNilValue;
 		END VisitNilValue;
 
 
-		PROCEDURE VisitEnumerationValue(x: SyntaxTree.EnumerationValue);
+		PROCEDURE VisitEnumerationValue*(x: SyntaxTree.EnumerationValue);
 		BEGIN
 		BEGIN
 			IF Trace THEN TraceEnter("VisitEnumerationValue") END;
 			IF Trace THEN TraceEnter("VisitEnumerationValue") END;
 			InitOperand(result,ModeValue);
 			InitOperand(result,ModeValue);
@@ -9539,7 +9539,7 @@ TYPE
 
 
 		(** symbols *)
 		(** symbols *)
 
 
-		PROCEDURE VisitImport(x: SyntaxTree.Import);
+		PROCEDURE VisitImport*(x: SyntaxTree.Import);
 		BEGIN (* nothing to be done, might however be called via some designator module.procedure *)
 		BEGIN (* nothing to be done, might however be called via some designator module.procedure *)
 		END VisitImport;
 		END VisitImport;
 
 
@@ -9567,7 +9567,7 @@ TYPE
 			END;
 			END;
 		END GetBaseRegister;
 		END GetBaseRegister;
 
 
-		PROCEDURE VisitVariable(x: SyntaxTree.Variable);
+		PROCEDURE VisitVariable*(x: SyntaxTree.Variable);
 		VAR symbol: Sections.Section;  type: SyntaxTree.Type; recordType: SyntaxTree.RecordType; name: Basic.SegmentedName; temp: IntermediateCode.Operand; reg: LONGINT;
 		VAR symbol: Sections.Section;  type: SyntaxTree.Type; recordType: SyntaxTree.RecordType; name: Basic.SegmentedName; temp: IntermediateCode.Operand; reg: LONGINT;
 		BEGIN
 		BEGIN
 			IF Trace THEN TraceEnter("VisitVariable");  END;
 			IF Trace THEN TraceEnter("VisitVariable");  END;
@@ -9661,12 +9661,12 @@ TYPE
 			IF Trace THEN TraceExit("VisitVariable") END;
 			IF Trace THEN TraceExit("VisitVariable") END;
 		END VisitVariable;
 		END VisitVariable;
 
 
-		PROCEDURE VisitProperty(property: SyntaxTree.Property);
+		PROCEDURE VisitProperty*(property: SyntaxTree.Property);
 		BEGIN 
 		BEGIN 
 			VisitVariable(property);
 			VisitVariable(property);
 		END VisitProperty;
 		END VisitProperty;
 
 
-		PROCEDURE VisitParameter(x: SyntaxTree.Parameter);
+		PROCEDURE VisitParameter*(x: SyntaxTree.Parameter);
 		VAR type: SyntaxTree.Type; basereg, mem: IntermediateCode.Operand; parameter: SyntaxTree.Parameter;adr: LONGINT; symbol: Sections.Section;
 		VAR type: SyntaxTree.Type; basereg, mem: IntermediateCode.Operand; parameter: SyntaxTree.Parameter;adr: LONGINT; symbol: Sections.Section;
 			name: Basic.SegmentedName; parameterType, ptype: SyntaxTree.Type; len,inc: LONGINT; temp: IntermediateCode.Operand;
 			name: Basic.SegmentedName; parameterType, ptype: SyntaxTree.Type; len,inc: LONGINT; temp: IntermediateCode.Operand;
 		BEGIN
 		BEGIN
@@ -9874,7 +9874,7 @@ TYPE
 			IF Trace THEN TraceExit("StaticCallOperand") END;
 			IF Trace THEN TraceExit("StaticCallOperand") END;
 		END StaticCallOperand;
 		END StaticCallOperand;
 
 
-		PROCEDURE VisitProcedure(x: SyntaxTree.Procedure);
+		PROCEDURE VisitProcedure*(x: SyntaxTree.Procedure);
 		(* handle expressions of the form designator.procedure or procedure *)
 		(* handle expressions of the form designator.procedure or procedure *)
 		BEGIN
 		BEGIN
 			IF Trace THEN TraceEnter("VisitProcedure") END;
 			IF Trace THEN TraceEnter("VisitProcedure") END;
@@ -9888,14 +9888,14 @@ TYPE
 			IF Trace THEN TraceExit("VisitProcedure") END;
 			IF Trace THEN TraceExit("VisitProcedure") END;
 		END VisitProcedure;
 		END VisitProcedure;
 
 
-		PROCEDURE VisitOperator(x: SyntaxTree.Operator);
+		PROCEDURE VisitOperator*(x: SyntaxTree.Operator);
 		BEGIN
 		BEGIN
 			VisitProcedure(x);
 			VisitProcedure(x);
 		END VisitOperator;
 		END VisitOperator;
 
 
 		(** statements *)
 		(** statements *)
 
 
-		PROCEDURE VisitProcedureCallStatement(x: SyntaxTree.ProcedureCallStatement);
+		PROCEDURE VisitProcedureCallStatement*(x: SyntaxTree.ProcedureCallStatement);
 		BEGIN
 		BEGIN
 			IF Trace THEN TraceEnter("VisitProcedureCallStatement") END;
 			IF Trace THEN TraceEnter("VisitProcedureCallStatement") END;
 			Expression(x.call);
 			Expression(x.call);
@@ -10281,7 +10281,7 @@ TYPE
 			END;
 			END;
 		END Assign;
 		END Assign;
 
 
-		PROCEDURE VisitAssignment(x: SyntaxTree.Assignment);
+		PROCEDURE VisitAssignment*(x: SyntaxTree.Assignment);
 		BEGIN
 		BEGIN
 			IF Trace THEN TraceEnter("VisitAssignment") END;
 			IF Trace THEN TraceEnter("VisitAssignment") END;
 			Assign(x.left,x.right);
 			Assign(x.left,x.right);
@@ -10301,7 +10301,7 @@ TYPE
 			INC(statCoopSwitch, section.pc - pc);
 			INC(statCoopSwitch, section.pc - pc);
 		END EmitCooperativeSwitch;
 		END EmitCooperativeSwitch;
 
 
-		PROCEDURE VisitCommunicationStatement(communication: SyntaxTree.CommunicationStatement);
+		PROCEDURE VisitCommunicationStatement*(communication: SyntaxTree.CommunicationStatement);
 		VAR p0,p1,tmp: SyntaxTree.Expression; s0,s1: Operand; size: LONGINT;
 		VAR p0,p1,tmp: SyntaxTree.Expression; s0,s1: Operand; size: LONGINT;
 		BEGIN
 		BEGIN
 			p0 := communication.left; p1 := communication.right;
 			p0 := communication.left; p1 := communication.right;
@@ -10351,7 +10351,7 @@ TYPE
 		END VisitCommunicationStatement;
 		END VisitCommunicationStatement;
 
 
 
 
-		PROCEDURE VisitIfStatement(x: SyntaxTree.IfStatement);
+		PROCEDURE VisitIfStatement*(x: SyntaxTree.IfStatement);
 		VAR end: Label; i,elsifs: LONGINT; elsif: SyntaxTree.IfPart; escape: BOOLEAN;
 		VAR end: Label; i,elsifs: LONGINT; elsif: SyntaxTree.IfPart; escape: BOOLEAN;
 
 
 			PROCEDURE IfPart(if: SyntaxTree.IfPart);
 			PROCEDURE IfPart(if: SyntaxTree.IfPart);
@@ -10411,7 +10411,7 @@ TYPE
 			BrL(endL);
 			BrL(endL);
 		END WithPart;
 		END WithPart;
 
 
-		PROCEDURE VisitWithStatement(x: SyntaxTree.WithStatement);
+		PROCEDURE VisitWithStatement*(x: SyntaxTree.WithStatement);
 		VAR endL,falseL: Label;i: LONGINT;
 		VAR endL,falseL: Label;i: LONGINT;
 		BEGIN
 		BEGIN
 			IF Trace THEN TraceEnter("VisitWithStatement") END;
 			IF Trace THEN TraceEnter("VisitWithStatement") END;
@@ -10433,7 +10433,7 @@ TYPE
 			IF Trace THEN TraceExit("VisitWithStatement") END;
 			IF Trace THEN TraceExit("VisitWithStatement") END;
 		END VisitWithStatement;
 		END VisitWithStatement;
 
 
-		PROCEDURE VisitCaseStatement(x: SyntaxTree.CaseStatement);
+		PROCEDURE VisitCaseStatement*(x: SyntaxTree.CaseStatement);
 		VAR var: Operand; jmp,res,op,tmp: IntermediateCode.Operand; j,i,size: LONGINT; part: SyntaxTree.CasePart; constant: SyntaxTree.CaseConstant;
 		VAR var: Operand; jmp,res,op,tmp: IntermediateCode.Operand; j,i,size: LONGINT; part: SyntaxTree.CasePart; constant: SyntaxTree.CaseConstant;
 			out,else: Label; label: Label;
 			out,else: Label; label: Label;
 			fixups: POINTER TO ARRAY OF Label; section: IntermediateCode.Section; name: Basic.SegmentedName; string: ARRAY 32 OF CHAR;
 			fixups: POINTER TO ARRAY OF Label; section: IntermediateCode.Section; name: Basic.SegmentedName; string: ARRAY 32 OF CHAR;
@@ -10507,7 +10507,7 @@ TYPE
 		END VisitCaseStatement;
 		END VisitCaseStatement;
 
 
 
 
-		PROCEDURE VisitWhileStatement(x: SyntaxTree.WhileStatement);
+		PROCEDURE VisitWhileStatement*(x: SyntaxTree.WhileStatement);
 		VAR start: Label; true,false: Label;
 		VAR start: Label; true,false: Label;
 		BEGIN
 		BEGIN
 			IF Trace THEN TraceEnter("VisitWhileStatement") END;
 			IF Trace THEN TraceEnter("VisitWhileStatement") END;
@@ -10525,7 +10525,7 @@ TYPE
 			IF Trace THEN TraceExit("VisitWhileStatement") END;
 			IF Trace THEN TraceExit("VisitWhileStatement") END;
 		END VisitWhileStatement;
 		END VisitWhileStatement;
 
 
-		PROCEDURE VisitRepeatStatement(x: SyntaxTree.RepeatStatement);
+		PROCEDURE VisitRepeatStatement*(x: SyntaxTree.RepeatStatement);
 		VAR false,true: Label;
 		VAR false,true: Label;
 		BEGIN
 		BEGIN
 			IF Trace THEN TraceEnter("VisitRepeatStatement") END;
 			IF Trace THEN TraceEnter("VisitRepeatStatement") END;
@@ -10540,7 +10540,7 @@ TYPE
 			IF Trace THEN TraceExit("VisitRepeatStatement") END;
 			IF Trace THEN TraceExit("VisitRepeatStatement") END;
 		END VisitRepeatStatement;
 		END VisitRepeatStatement;
 
 
-		PROCEDURE VisitForStatement(x: SyntaxTree.ForStatement);
+		PROCEDURE VisitForStatement*(x: SyntaxTree.ForStatement);
 		VAR
 		VAR
 			binary: SyntaxTree.BinaryExpression; start,true,false : Label; cmp: LONGINT; by: HUGEINT;
 			binary: SyntaxTree.BinaryExpression; start,true,false : Label; cmp: LONGINT; by: HUGEINT;
 			temporaryVariable: SyntaxTree.Variable;
 			temporaryVariable: SyntaxTree.Variable;
@@ -10587,7 +10587,7 @@ TYPE
 			IF Trace THEN TraceExit("VisitForStatement") END;
 			IF Trace THEN TraceExit("VisitForStatement") END;
 		END VisitForStatement;
 		END VisitForStatement;
 
 
-		PROCEDURE VisitExitableBlock(x: SyntaxTree.ExitableBlock);
+		PROCEDURE VisitExitableBlock*(x: SyntaxTree.ExitableBlock);
 		VAR prevLoop: Label;
 		VAR prevLoop: Label;
 		BEGIN
 		BEGIN
 			IF Trace THEN TraceEnter("VisitExitableBlock") END;
 			IF Trace THEN TraceEnter("VisitExitableBlock") END;
@@ -10599,7 +10599,7 @@ TYPE
 			IF Trace THEN TraceExit("VisitExitableBlock") END;
 			IF Trace THEN TraceExit("VisitExitableBlock") END;
 		END VisitExitableBlock;
 		END VisitExitableBlock;
 
 
-		PROCEDURE VisitLoopStatement(x: SyntaxTree.LoopStatement);
+		PROCEDURE VisitLoopStatement*(x: SyntaxTree.LoopStatement);
 		VAR prevLoop,start: Label;
 		VAR prevLoop,start: Label;
 		BEGIN
 		BEGIN
 			IF Trace THEN TraceEnter("VisitLoopStatement") END;
 			IF Trace THEN TraceEnter("VisitLoopStatement") END;
@@ -10616,7 +10616,7 @@ TYPE
 			IF Trace THEN TraceExit("VisitLoopStatement") END;
 			IF Trace THEN TraceExit("VisitLoopStatement") END;
 		END VisitLoopStatement;
 		END VisitLoopStatement;
 
 
-		PROCEDURE VisitExitStatement(x: SyntaxTree.ExitStatement);
+		PROCEDURE VisitExitStatement*(x: SyntaxTree.ExitStatement);
 		VAR outer: SyntaxTree.Statement;
 		VAR outer: SyntaxTree.Statement;
 		BEGIN
 		BEGIN
 			IF Trace THEN TraceEnter("VisitExitStatement") END;
 			IF Trace THEN TraceEnter("VisitExitStatement") END;
@@ -10633,7 +10633,7 @@ TYPE
 			IF Trace THEN TraceExit("VisitExitStatement") END;
 			IF Trace THEN TraceExit("VisitExitStatement") END;
 		END VisitExitStatement;
 		END VisitExitStatement;
 
 
-		PROCEDURE VisitReturnStatement(x: SyntaxTree.ReturnStatement);
+		PROCEDURE VisitReturnStatement*(x: SyntaxTree.ReturnStatement);
 		VAR
 		VAR
 			expression, parameterDesignator: SyntaxTree.Expression;
 			expression, parameterDesignator: SyntaxTree.Expression;
 			type, componentType: SyntaxTree.Type;
 			type, componentType: SyntaxTree.Type;
@@ -10816,7 +10816,7 @@ TYPE
 			RETURN procedure
 			RETURN procedure
 		END MakeAwaitProcedure;
 		END MakeAwaitProcedure;
 
 
-		PROCEDURE VisitAwaitStatement(x: SyntaxTree.AwaitStatement);
+		PROCEDURE VisitAwaitStatement*(x: SyntaxTree.AwaitStatement);
 		VAR proc: SyntaxTree.Procedure; res: IntermediateCode.Operand; symbol: Sections.Section;
 		VAR proc: SyntaxTree.Procedure; res: IntermediateCode.Operand; symbol: Sections.Section;
 			call: IntermediateCode.Operand; label, start, true, false: Label; name: Basic.SegmentedName;
 			call: IntermediateCode.Operand; label, start, true, false: Label; name: Basic.SegmentedName;
 		BEGIN
 		BEGIN
@@ -10941,7 +10941,7 @@ TYPE
 			IF Trace THEN TraceExit("Lock") END;
 			IF Trace THEN TraceExit("Lock") END;
 		END Lock;
 		END Lock;
 
 
-		PROCEDURE VisitStatementBlock(x: SyntaxTree.StatementBlock);
+		PROCEDURE VisitStatementBlock*(x: SyntaxTree.StatementBlock);
 		VAR previouslyUnchecked, previouslyCooperativeSwitches: BOOLEAN;
 		VAR previouslyUnchecked, previouslyCooperativeSwitches: BOOLEAN;
 		BEGIN
 		BEGIN
 			IF Trace THEN TraceEnter("VisitStatementBlock") END;
 			IF Trace THEN TraceEnter("VisitStatementBlock") END;
@@ -10963,7 +10963,7 @@ TYPE
 			IF Trace THEN TraceExit("VisitStatementBlock") END;
 			IF Trace THEN TraceExit("VisitStatementBlock") END;
 		END VisitStatementBlock;
 		END VisitStatementBlock;
 
 
-		PROCEDURE VisitCode(x: SyntaxTree.Code);
+		PROCEDURE VisitCode*(x: SyntaxTree.Code);
 		VAR (*  inline: Sections.CellNet; symbol: SyntaxTree.Symbol; *)
 		VAR (*  inline: Sections.CellNet; symbol: SyntaxTree.Symbol; *)
 			in, out: IntermediateCode.Rules; statement: SyntaxTree.Statement; i: LONGINT; operand,par: Operand; str: POINTER TO ARRAY OF CHAR;
 			in, out: IntermediateCode.Rules; statement: SyntaxTree.Statement; i: LONGINT; operand,par: Operand; str: POINTER TO ARRAY OF CHAR;
 				result, mem: IntermediateCode.Operand; scope: SyntaxTree.Scope; procedureType: SyntaxTree.ProcedureType; return: IntermediateCode.Operand;
 				result, mem: IntermediateCode.Operand; scope: SyntaxTree.Scope; procedureType: SyntaxTree.ProcedureType; return: IntermediateCode.Operand;
@@ -13724,11 +13724,11 @@ TYPE
 		BEGIN RETURN TRUE
 		BEGIN RETURN TRUE
 		END SupportedImmediate;
 		END SupportedImmediate;
 
 
-		PROCEDURE ProcessSyntaxTreeModule(syntaxTreeModule: SyntaxTree.Module): Formats.GeneratedModule;
+		PROCEDURE ProcessSyntaxTreeModule*(syntaxTreeModule: SyntaxTree.Module): Formats.GeneratedModule;
 		BEGIN RETURN ProcessIntermediateCodeModule(GenerateIntermediate(syntaxTreeModule, SupportedInstruction, SupportedImmediate))
 		BEGIN RETURN ProcessIntermediateCodeModule(GenerateIntermediate(syntaxTreeModule, SupportedInstruction, SupportedImmediate))
 		END ProcessSyntaxTreeModule;
 		END ProcessSyntaxTreeModule;
 
 
-		PROCEDURE ProcessIntermediateCodeModule(intermediateCodeModule: Formats.GeneratedModule): Formats.GeneratedModule;
+		PROCEDURE ProcessIntermediateCodeModule*(intermediateCodeModule: Formats.GeneratedModule): Formats.GeneratedModule;
 		VAR
 		VAR
 			result: Sections.Module;
 			result: Sections.Module;
 			traceName: Basic.MessageString;
 			traceName: Basic.MessageString;
@@ -13764,7 +13764,7 @@ TYPE
 		BEGIN COPY(name, traceModuleName)
 		BEGIN COPY(name, traceModuleName)
 		END SetTraceModuleName;
 		END SetTraceModuleName;
 
 
-		PROCEDURE DefineOptions(options: Options.Options);
+		PROCEDURE DefineOptions*(options: Options.Options);
 		BEGIN
 		BEGIN
 			DefineOptions^(options);
 			DefineOptions^(options);
 			options.Add(0X,"trace",Options.String);
 			options.Add(0X,"trace",Options.String);
@@ -13784,7 +13784,7 @@ TYPE
 			options.Add(0X,"experiment", Options.Flag);
 			options.Add(0X,"experiment", Options.Flag);
 		END DefineOptions;
 		END DefineOptions;
 
 
-		PROCEDURE GetOptions(options: Options.Options);
+		PROCEDURE GetOptions*(options: Options.Options);
 		VAR name,string: SyntaxTree.IdentifierString;
 		VAR name,string: SyntaxTree.IdentifierString;
 		BEGIN
 		BEGIN
 			GetOptions^(options);
 			GetOptions^(options);
@@ -13816,7 +13816,7 @@ TYPE
 			experiment := options.GetFlag("experiment");
 			experiment := options.GetFlag("experiment");
 		END GetOptions;
 		END GetOptions;
 
 
-		PROCEDURE DefaultSymbolFileFormat(): Formats.SymbolFileFormat;
+		PROCEDURE DefaultSymbolFileFormat*(): Formats.SymbolFileFormat;
 		BEGIN RETURN SymbolFileFormat.Get()
 		BEGIN RETURN SymbolFileFormat.Get()
 		END DefaultSymbolFileFormat;
 		END DefaultSymbolFileFormat;
 
 

+ 2 - 2
source/FoxIntermediateCode.Mod

@@ -361,7 +361,7 @@ TYPE
 		END DumpCode;
 		END DumpCode;
 
 
 		(* inherited method *)
 		(* inherited method *)
-		PROCEDURE Dump(w: Streams.Writer);
+		PROCEDURE Dump*(w: Streams.Writer);
 		VAR ww: Basic.Writer;
 		VAR ww: Basic.Writer;
 		BEGIN
 		BEGIN
 			IF resolved # NIL THEN
 			IF resolved # NIL THEN
@@ -377,7 +377,7 @@ TYPE
 			END;
 			END;
 		END Dump;
 		END Dump;
 		
 		
-		PROCEDURE WriteRaw(w: Streams.Writer);
+		PROCEDURE WriteRaw*(w: Streams.Writer);
 		VAR i: LONGINT;
 		VAR i: LONGINT;
 		BEGIN
 		BEGIN
 			FOR i := 0 TO pc-1 DO
 			FOR i := 0 TO pc-1 DO

+ 3 - 3
source/FoxIntermediateObjectFile.Mod

@@ -422,15 +422,15 @@ TYPE ObjectFileFormat* = OBJECT (Formats.ObjectFileFormat)
 			textual := options.GetFlag("textualObjectFile");
 			textual := options.GetFlag("textualObjectFile");
 		END GetOptions;
 		END GetOptions;
 
 
-		PROCEDURE DefaultSymbolFileFormat(): Formats.SymbolFileFormat;
+		PROCEDURE DefaultSymbolFileFormat*(): Formats.SymbolFileFormat;
 		BEGIN RETURN TextualSymbolFile.Get();
 		BEGIN RETURN TextualSymbolFile.Get();
 		END DefaultSymbolFileFormat;
 		END DefaultSymbolFileFormat;
 
 
-		PROCEDURE GetExtension(VAR ext: ARRAY OF CHAR);
+		PROCEDURE GetExtension*(VAR ext: ARRAY OF CHAR);
 		BEGIN COPY(extension, ext)
 		BEGIN COPY(extension, ext)
 		END GetExtension;
 		END GetExtension;
 
 
-		PROCEDURE SetExtension(CONST ext: ARRAY OF CHAR);
+		PROCEDURE SetExtension*(CONST ext: ARRAY OF CHAR);
 		BEGIN COPY(ext, extension)
 		BEGIN COPY(ext, extension)
 		END SetExtension;
 		END SetExtension;
 		
 		

+ 2 - 2
source/FoxInterpreter.Mod

@@ -57,7 +57,7 @@ TYPE
 
 
 	Parser*= OBJECT(FoxParser.Parser)
 	Parser*= OBJECT(FoxParser.Parser)
 
 
-		PROCEDURE Statement(statements: SyntaxTree.StatementSequence; outer: SyntaxTree.Statement): BOOLEAN;
+		PROCEDURE Statement*(statements: SyntaxTree.StatementSequence; outer: SyntaxTree.Statement): BOOLEAN;
 		VAR statement: SyntaxTree.Statement;
 		VAR statement: SyntaxTree.Statement;
 		BEGIN
 		BEGIN
 			IF (Token() = Scanner.ExclamationMark) THEN
 			IF (Token() = Scanner.ExclamationMark) THEN
@@ -651,7 +651,7 @@ TYPE
 		END FindType;
 		END FindType;
 		
 		
 		
 		
-		PROCEDURE VisitBuiltinCallDesignator(x: SyntaxTree.BuiltinCallDesignator);
+		PROCEDURE VisitBuiltinCallDesignator*(x: SyntaxTree.BuiltinCallDesignator);
 		VAR p,p0,p1,p2: SyntaxTree.Expression;
 		VAR p,p0,p1,p2: SyntaxTree.Expression;
 			type,t0,t1,t2: SyntaxTree.Type;
 			type,t0,t1,t2: SyntaxTree.Type;
 			len: LONGINT;
 			len: LONGINT;

+ 4 - 4
source/FoxInterpreterBackend.Mod

@@ -374,7 +374,7 @@ TYPE
 		BEGIN InitBackend;
 		BEGIN InitBackend;
 		END InitInterpreterBackend;
 		END InitInterpreterBackend;
 
 
-		PROCEDURE GetSystem(): Global.System;
+		PROCEDURE GetSystem*(): Global.System;
 		VAR system: Global.System;
 		VAR system: Global.System;
 		BEGIN
 		BEGIN
 			NEW (system, 8, 8, 32, 1, 1, 1, 1, addressSize * 2,cooperative);
 			NEW (system, 8, 8, 32, 1, 1, 1, 1, addressSize * 2,cooperative);
@@ -383,7 +383,7 @@ TYPE
 			RETURN system;
 			RETURN system;
 		END GetSystem;
 		END GetSystem;
 
 
-		PROCEDURE ProcessSyntaxTreeModule (x: SyntaxTree.Module): Formats.GeneratedModule;
+		PROCEDURE ProcessSyntaxTreeModule *(x: SyntaxTree.Module): Formats.GeneratedModule;
 		VAR module: Sections.Module; section: Sections.Section; interpreter: Interpreter;
 		VAR module: Sections.Module; section: Sections.Section; interpreter: Interpreter;
  		BEGIN
  		BEGIN
 			module := GenerateIntermediate (x, SupportedInstruction, SupportedImmediate);
 			module := GenerateIntermediate (x, SupportedInstruction, SupportedImmediate);
@@ -398,13 +398,13 @@ TYPE
 			RETURN NIL
 			RETURN NIL
 		END ProcessSyntaxTreeModule;
 		END ProcessSyntaxTreeModule;
 		
 		
-		PROCEDURE DefineOptions(options: Options.Options);
+		PROCEDURE DefineOptions*(options: Options.Options);
 		BEGIN DefineOptions^(options);
 		BEGIN DefineOptions^(options);
 			options.Add("a","addressSize", Options.Integer);
 			options.Add("a","addressSize", Options.Integer);
 			options.Add("s","setSize", Options.Integer);
 			options.Add("s","setSize", Options.Integer);
 		END DefineOptions;
 		END DefineOptions;
 
 
-		PROCEDURE GetOptions(options: Options.Options);
+		PROCEDURE GetOptions*(options: Options.Options);
 		BEGIN GetOptions^(options);
 		BEGIN GetOptions^(options);
 			IF ~options.GetInteger("addressSize", addressSize) THEN addressSize := 2 END;
 			IF ~options.GetInteger("addressSize", addressSize) THEN addressSize := 2 END;
 			IF ~options.GetInteger("setSize", setSize) THEN setSize := 2 END;
 			IF ~options.GetInteger("setSize", setSize) THEN setSize := 2 END;

+ 73 - 73
source/FoxInterpreterSymbols.Mod

@@ -142,7 +142,7 @@ TYPE
 			address := SymbolAddress(type, 0);
 			address := SymbolAddress(type, 0);
 		END InitType;
 		END InitType;
 
 
-		PROCEDURE Address(): ADDRESS;
+		PROCEDURE Address*(): ADDRESS;
 		BEGIN
 		BEGIN
 			RETURN address;
 			RETURN address;
 		END Address;
 		END Address;
@@ -164,7 +164,7 @@ TYPE
 			self := m; 
 			self := m; 
 		END InitModule;
 		END InitModule;
 		
 		
-		PROCEDURE Find(CONST name: ARRAY OF CHAR): Result;
+		PROCEDURE Find*(CONST name: ARRAY OF CHAR): Result;
 		VAR num: LONGINT;
 		VAR num: LONGINT;
 				proc: ProcedureResult;
 				proc: ProcedureResult;
 				field: FieldResult;
 				field: FieldResult;
@@ -397,7 +397,7 @@ TYPE
 			END;
 			END;
 		END ReturnsPointer;
 		END ReturnsPointer;
 		
 		
-		PROCEDURE Address(): ADDRESS;
+		PROCEDURE Address*(): ADDRESS;
 		BEGIN
 		BEGIN
 			RETURN address;
 			RETURN address;
 		END Address;
 		END Address;
@@ -551,7 +551,7 @@ TYPE
 			RETURN Reflection.GetChar(parameters.refs, parameters.offset) # Reflection.sfVariable;
 			RETURN Reflection.GetChar(parameters.refs, parameters.offset) # Reflection.sfVariable;
 		END Check;
 		END Check;
 
 
-		PROCEDURE Evaluate(): Value;
+		PROCEDURE Evaluate*(): Value;
 		VAR 
 		VAR 
 			int: IntegerValue;
 			int: IntegerValue;
 			real: RealValue;
 			real: RealValue;
@@ -610,12 +610,12 @@ TYPE
 			SELF.address := SymbolAddress(meta, base);
 			SELF.address := SymbolAddress(meta, base);
 		END InitField;
 		END InitField;
 		
 		
-		PROCEDURE Address(): ADDRESS;
+		PROCEDURE Address*(): ADDRESS;
 		BEGIN
 		BEGIN
 			RETURN address;
 			RETURN address;
 		END Address;
 		END Address;
 
 
-		PROCEDURE Evaluate(): Value;
+		PROCEDURE Evaluate*(): Value;
 		VAR 
 		VAR 
 			s: SHORTINT;
 			s: SHORTINT;
 			i: INTEGER;
 			i: INTEGER;
@@ -655,7 +655,7 @@ TYPE
 			END;
 			END;
 		END Evaluate;
 		END Evaluate;
 		
 		
-		PROCEDURE SetV(v: Value): BOOLEAN;
+		PROCEDURE SetV*(v: Value): BOOLEAN;
 		VAR 
 		VAR 
 			s: SHORTINT; i: INTEGER; l: LONGINT; h: HUGEINT; 
 			s: SHORTINT; i: INTEGER; l: LONGINT; h: HUGEINT; 
 			r: REAL; x: LONGREAL;
 			r: REAL; x: LONGREAL;
@@ -710,7 +710,7 @@ TYPE
 			END;
 			END;
 		END SetV;
 		END SetV;
 
 
-		PROCEDURE Find(CONST name: ARRAY OF CHAR): Result;
+		PROCEDURE Find*(CONST name: ARRAY OF CHAR): Result;
 		VAR value, typeDesc: ADDRESS;
 		VAR value, typeDesc: ADDRESS;
 		VAR typeInfo: Modules.TypeDesc; num: LONGINT;
 		VAR typeInfo: Modules.TypeDesc; num: LONGINT;
 		proc: ProcedureResult; f: FieldResult;
 		proc: ProcedureResult; f: FieldResult;
@@ -817,7 +817,7 @@ TYPE
 		BEGIN InitObject
 		BEGIN InitObject
 		END InitValue;
 		END InitValue;
 
 
-		PROCEDURE Evaluate(): Value;
+		PROCEDURE Evaluate*(): Value;
 		BEGIN
 		BEGIN
 			RETURN SELF;
 			RETURN SELF;
 		END Evaluate;
 		END Evaluate;
@@ -882,25 +882,25 @@ TYPE
 		BEGIN InitValue; SELF.value := value; type := "AnyValue";
 		BEGIN InitValue; SELF.value := value; type := "AnyValue";
 		END InitAny;
 		END InitAny;
 
 
-		PROCEDURE Enumerate(enum: PersistentObjects.Enumerator);
+		PROCEDURE Enumerate*(enum: PersistentObjects.Enumerator);
 		BEGIN Enumerate^(enum); enum(StrValue,FALSE);
 		BEGIN Enumerate^(enum); enum(StrValue,FALSE);
 		END Enumerate;
 		END Enumerate;
 
 
-		PROCEDURE GetAddress(VAR a: ADDRESS): BOOLEAN;
+		PROCEDURE GetAddress*(VAR a: ADDRESS): BOOLEAN;
 		BEGIN
 		BEGIN
 			a := value; RETURN TRUE;
 			a := value; RETURN TRUE;
 		END GetAddress;
 		END GetAddress;
 
 
-		PROCEDURE WriteValue(w: Streams.Writer);
+		PROCEDURE WriteValue*(w: Streams.Writer);
 		BEGIN w.Address(value);
 		BEGIN w.Address(value);
 		END WriteValue;
 		END WriteValue;
 		
 		
-		PROCEDURE Address(): ADDRESS;
+		PROCEDURE Address*(): ADDRESS;
 		BEGIN
 		BEGIN
 			RETURN ADDRESSOF(value)
 			RETURN ADDRESSOF(value)
 		END Address;
 		END Address;
 		
 		
-		PROCEDURE Find(CONST name: ARRAY OF CHAR): Result;
+		PROCEDURE Find*(CONST name: ARRAY OF CHAR): Result;
 		VAR type, v, address: ADDRESS;
 		VAR type, v, address: ADDRESS;
 		VAR typeInfo: Modules.TypeDesc; num: LONGINT;
 		VAR typeInfo: Modules.TypeDesc; num: LONGINT;
 		proc: ProcedureResult; f: FieldResult;
 		proc: ProcedureResult; f: FieldResult;
@@ -936,11 +936,11 @@ TYPE
 		BEGIN InitValue; SELF.value := value; type := "AnyValue";
 		BEGIN InitValue; SELF.value := value; type := "AnyValue";
 		END InitAny;
 		END InitAny;
 
 
-		PROCEDURE Enumerate(enum: PersistentObjects.Enumerator);
+		PROCEDURE Enumerate*(enum: PersistentObjects.Enumerator);
 		BEGIN Enumerate^(enum); enum(StrValue,FALSE);
 		BEGIN Enumerate^(enum); enum(StrValue,FALSE);
 		END Enumerate;
 		END Enumerate;
 
 
-		PROCEDURE Set(CONST name: ARRAY OF CHAR; index: LONGINT; c: Content);
+		PROCEDURE Set*(CONST name: ARRAY OF CHAR; index: LONGINT; c: Content);
 		VAR int: HUGEINT;
 		VAR int: HUGEINT;
 		BEGIN
 		BEGIN
 			IF name = StrValue THEN c.GetInteger(int); value := ADDRESS(int);
 			IF name = StrValue THEN c.GetInteger(int); value := ADDRESS(int);
@@ -948,23 +948,23 @@ TYPE
 			END;
 			END;
 		END Set;
 		END Set;
 
 
-		PROCEDURE Get(CONST name: ARRAY OF CHAR; index: LONGINT; c: Content);
+		PROCEDURE Get*(CONST name: ARRAY OF CHAR; index: LONGINT; c: Content);
 		BEGIN
 		BEGIN
 			IF name = StrValue THEN c.SetInteger(value);
 			IF name = StrValue THEN c.SetInteger(value);
 			ELSE Get^(name, index, c);
 			ELSE Get^(name, index, c);
 			END;
 			END;
 		END Get;
 		END Get;
 
 
-		PROCEDURE GetAddress(VAR a: ADDRESS): BOOLEAN;
+		PROCEDURE GetAddress*(VAR a: ADDRESS): BOOLEAN;
 		BEGIN
 		BEGIN
 			a := value; RETURN TRUE;
 			a := value; RETURN TRUE;
 		END GetAddress;
 		END GetAddress;
 
 
-		PROCEDURE WriteValue(w: Streams.Writer);
+		PROCEDURE WriteValue*(w: Streams.Writer);
 		BEGIN w.Address(value);
 		BEGIN w.Address(value);
 		END WriteValue;
 		END WriteValue;
 		
 		
-		PROCEDURE Address(): ADDRESS;
+		PROCEDURE Address*(): ADDRESS;
 		BEGIN
 		BEGIN
 			RETURN ADDRESSOF(value)
 			RETURN ADDRESSOF(value)
 		END Address;
 		END Address;
@@ -979,11 +979,11 @@ TYPE
 		BEGIN InitValue; SELF.value := value; type := "IntegerValue";
 		BEGIN InitValue; SELF.value := value; type := "IntegerValue";
 		END InitInteger;
 		END InitInteger;
 
 
-		PROCEDURE Enumerate(enum: PersistentObjects.Enumerator);
+		PROCEDURE Enumerate*(enum: PersistentObjects.Enumerator);
 		BEGIN Enumerate^(enum); enum(StrValue,FALSE);
 		BEGIN Enumerate^(enum); enum(StrValue,FALSE);
 		END Enumerate;
 		END Enumerate;
 
 
-		PROCEDURE Set(CONST name: ARRAY OF CHAR; index: LONGINT; c: Content);
+		PROCEDURE Set*(CONST name: ARRAY OF CHAR; index: LONGINT; c: Content);
 		VAR val: HUGEINT;
 		VAR val: HUGEINT;
 		BEGIN
 		BEGIN
 			IF name = StrValue THEN c.GetInteger(val); value := val;
 			IF name = StrValue THEN c.GetInteger(val); value := val;
@@ -991,28 +991,28 @@ TYPE
 			END;
 			END;
 		END Set;
 		END Set;
 
 
-		PROCEDURE Get(CONST name: ARRAY OF CHAR; index: LONGINT; c: Content);
+		PROCEDURE Get*(CONST name: ARRAY OF CHAR; index: LONGINT; c: Content);
 		BEGIN
 		BEGIN
 			IF name = StrValue THEN c.SetInteger(LONGINT(value));
 			IF name = StrValue THEN c.SetInteger(LONGINT(value));
 			ELSE Get^(name, index, c);
 			ELSE Get^(name, index, c);
 			END;
 			END;
 		END Get;
 		END Get;
 		
 		
-		PROCEDURE GetInt(VAR v: HUGEINT): BOOLEAN;
+		PROCEDURE GetInt*(VAR v: HUGEINT): BOOLEAN;
 		BEGIN
 		BEGIN
 			v := value; RETURN TRUE;
 			v := value; RETURN TRUE;
 		END GetInt;
 		END GetInt;
 
 
-		PROCEDURE GetReal(VAR x: LONGREAL): BOOLEAN;
+		PROCEDURE GetReal*(VAR x: LONGREAL): BOOLEAN;
 		BEGIN
 		BEGIN
 			x := value; RETURN TRUE;
 			x := value; RETURN TRUE;
 		END GetReal;
 		END GetReal;
 
 
-		PROCEDURE WriteValue(w: Streams.Writer);
+		PROCEDURE WriteValue*(w: Streams.Writer);
 		BEGIN w.Int(value,0);
 		BEGIN w.Int(value,0);
 		END WriteValue;
 		END WriteValue;
 
 
-		PROCEDURE Address(): ADDRESS;
+		PROCEDURE Address*(): ADDRESS;
 		BEGIN
 		BEGIN
 			RETURN ADDRESSOF(value)
 			RETURN ADDRESSOF(value)
 		END Address;
 		END Address;
@@ -1026,34 +1026,34 @@ TYPE
 		BEGIN InitValue; SELF.value := value; type := "RealValue";
 		BEGIN InitValue; SELF.value := value; type := "RealValue";
 		END InitReal;
 		END InitReal;
 
 
-		PROCEDURE Enumerate(enum: PersistentObjects.Enumerator);
+		PROCEDURE Enumerate*(enum: PersistentObjects.Enumerator);
 		BEGIN Enumerate^(enum); enum(StrValue,FALSE);
 		BEGIN Enumerate^(enum); enum(StrValue,FALSE);
 		END Enumerate;
 		END Enumerate;
 
 
-		PROCEDURE Set(CONST name: ARRAY OF CHAR; index: LONGINT; c: Content);
+		PROCEDURE Set*(CONST name: ARRAY OF CHAR; index: LONGINT; c: Content);
 		BEGIN
 		BEGIN
 			IF name = StrValue THEN c.GetFloat(value);
 			IF name = StrValue THEN c.GetFloat(value);
 			ELSE Set^(name, index, c);
 			ELSE Set^(name, index, c);
 			END;
 			END;
 		END Set;
 		END Set;
 
 
-		PROCEDURE Get(CONST name: ARRAY OF CHAR; index: LONGINT; c: Content);
+		PROCEDURE Get*(CONST name: ARRAY OF CHAR; index: LONGINT; c: Content);
 		BEGIN
 		BEGIN
 			IF name = StrValue THEN c.SetFloat(value);
 			IF name = StrValue THEN c.SetFloat(value);
 			ELSE Get^(name, index, c);
 			ELSE Get^(name, index, c);
 			END;
 			END;
 		END Get;
 		END Get;
 		
 		
-		PROCEDURE GetReal(VAR x: LONGREAL): BOOLEAN;
+		PROCEDURE GetReal*(VAR x: LONGREAL): BOOLEAN;
 		BEGIN
 		BEGIN
 			x := value; RETURN TRUE; 
 			x := value; RETURN TRUE; 
 		END GetReal;
 		END GetReal;
 		
 		
-		PROCEDURE WriteValue(w: Streams.Writer);
+		PROCEDURE WriteValue*(w: Streams.Writer);
 		BEGIN w.Float(value,40);
 		BEGIN w.Float(value,40);
 		END WriteValue;
 		END WriteValue;
 
 
-		PROCEDURE Address(): ADDRESS;
+		PROCEDURE Address*(): ADDRESS;
 		BEGIN
 		BEGIN
 			RETURN ADDRESSOF(value)
 			RETURN ADDRESSOF(value)
 		END Address;
 		END Address;
@@ -1067,35 +1067,35 @@ TYPE
 		BEGIN InitValue; SELF.value := value; type := "BooleanValue";
 		BEGIN InitValue; SELF.value := value; type := "BooleanValue";
 		END InitBoolean;
 		END InitBoolean;
 
 
-		PROCEDURE Enumerate(enum: PersistentObjects.Enumerator);
+		PROCEDURE Enumerate*(enum: PersistentObjects.Enumerator);
 		BEGIN Enumerate^(enum); enum(StrValue,FALSE);
 		BEGIN Enumerate^(enum); enum(StrValue,FALSE);
 		END Enumerate;
 		END Enumerate;
 
 
-		PROCEDURE Set(CONST name: ARRAY OF CHAR; index: LONGINT; c: Content);
+		PROCEDURE Set*(CONST name: ARRAY OF CHAR; index: LONGINT; c: Content);
 		BEGIN
 		BEGIN
 			IF name = StrValue THEN c.GetBoolean(value);
 			IF name = StrValue THEN c.GetBoolean(value);
 			ELSE Set^(name, index, c);
 			ELSE Set^(name, index, c);
 			END;
 			END;
 		END Set;
 		END Set;
 
 
-		PROCEDURE Get(CONST name: ARRAY OF CHAR; index: LONGINT; c: Content);
+		PROCEDURE Get*(CONST name: ARRAY OF CHAR; index: LONGINT; c: Content);
 		BEGIN
 		BEGIN
 			IF name = StrValue THEN c.SetBoolean(value);
 			IF name = StrValue THEN c.SetBoolean(value);
 			ELSE Get^(name, index, c);
 			ELSE Get^(name, index, c);
 			END;
 			END;
 		END Get;
 		END Get;
 
 
-		PROCEDURE GetBoolean(VAR x: BOOLEAN): BOOLEAN;
+		PROCEDURE GetBoolean*(VAR x: BOOLEAN): BOOLEAN;
 		BEGIN
 		BEGIN
 			x := value; RETURN TRUE;
 			x := value; RETURN TRUE;
 		END GetBoolean;
 		END GetBoolean;
 
 
 
 
-		PROCEDURE WriteValue(w: Streams.Writer);
+		PROCEDURE WriteValue*(w: Streams.Writer);
 		BEGIN IF value THEN w.String("TRUE") ELSE w.String("FALSE") END
 		BEGIN IF value THEN w.String("TRUE") ELSE w.String("FALSE") END
 		END WriteValue;
 		END WriteValue;
 
 
-		PROCEDURE Address(): ADDRESS;
+		PROCEDURE Address*(): ADDRESS;
 		BEGIN
 		BEGIN
 			RETURN ADDRESSOF(value)
 			RETURN ADDRESSOF(value)
 		END Address;
 		END Address;
@@ -1109,29 +1109,29 @@ TYPE
 		BEGIN InitValue; SELF.value := Strings.NewString(value); type := "StringValue";
 		BEGIN InitValue; SELF.value := Strings.NewString(value); type := "StringValue";
 		END InitString;
 		END InitString;
 
 
-		PROCEDURE Enumerate(enum: PersistentObjects.Enumerator);
+		PROCEDURE Enumerate*(enum: PersistentObjects.Enumerator);
 		BEGIN Enumerate^(enum); enum(StrValue,FALSE);
 		BEGIN Enumerate^(enum); enum(StrValue,FALSE);
 		END Enumerate;
 		END Enumerate;
 
 
-		PROCEDURE Set(CONST name: ARRAY OF CHAR; index: LONGINT; c: Content);
+		PROCEDURE Set*(CONST name: ARRAY OF CHAR; index: LONGINT; c: Content);
 		BEGIN
 		BEGIN
 			IF name = StrValue THEN c.GetString(value);
 			IF name = StrValue THEN c.GetString(value);
 			ELSE Set^(name, index, c);
 			ELSE Set^(name, index, c);
 			END;
 			END;
 		END Set;
 		END Set;
 
 
-		PROCEDURE Get(CONST name: ARRAY OF CHAR; index: LONGINT; c: Content);
+		PROCEDURE Get*(CONST name: ARRAY OF CHAR; index: LONGINT; c: Content);
 		BEGIN
 		BEGIN
 			IF name = StrValue THEN c.SetString(value);
 			IF name = StrValue THEN c.SetString(value);
 			ELSE Get^(name, index, c);
 			ELSE Get^(name, index, c);
 			END;
 			END;
 		END Get;
 		END Get;
 
 
-		PROCEDURE WriteValue(w: Streams.Writer);
+		PROCEDURE WriteValue*(w: Streams.Writer);
 		BEGIN (*w.String('"');*) w.String(value^); (*w.String('"');*)
 		BEGIN (*w.String('"');*) w.String(value^); (*w.String('"');*)
 		END WriteValue;
 		END WriteValue;
 
 
-		PROCEDURE Address(): ADDRESS;
+		PROCEDURE Address*(): ADDRESS;
 		BEGIN
 		BEGIN
 			RETURN value;
 			RETURN value;
 		END Address;
 		END Address;
@@ -1146,35 +1146,35 @@ TYPE
 		BEGIN InitValue; SELF.value := value; type := "SetValue"
 		BEGIN InitValue; SELF.value := value; type := "SetValue"
 		END InitSet;
 		END InitSet;
 
 
-		PROCEDURE Enumerate(enum: PersistentObjects.Enumerator);
+		PROCEDURE Enumerate*(enum: PersistentObjects.Enumerator);
 		BEGIN Enumerate^(enum); enum(StrValue,FALSE);
 		BEGIN Enumerate^(enum); enum(StrValue,FALSE);
 		END Enumerate;
 		END Enumerate;
 
 
-		PROCEDURE Set(CONST name: ARRAY OF CHAR; index: LONGINT; c: Content);
+		PROCEDURE Set*(CONST name: ARRAY OF CHAR; index: LONGINT; c: Content);
 		BEGIN
 		BEGIN
 			IF name = StrValue THEN c.GetSet(value);
 			IF name = StrValue THEN c.GetSet(value);
 			ELSE Set^(name, index, c);
 			ELSE Set^(name, index, c);
 			END;
 			END;
 		END Set;
 		END Set;
 
 
-		PROCEDURE Get(CONST name: ARRAY OF CHAR; index: LONGINT; c: Content);
+		PROCEDURE Get*(CONST name: ARRAY OF CHAR; index: LONGINT; c: Content);
 		BEGIN
 		BEGIN
 			IF name = StrValue THEN c.SetSet(value);
 			IF name = StrValue THEN c.SetSet(value);
 			ELSE Get^(name, index, c);
 			ELSE Get^(name, index, c);
 			END;
 			END;
 		END Get;
 		END Get;
 		
 		
-		PROCEDURE GetSet(VAR x: SET): BOOLEAN;
+		PROCEDURE GetSet*(VAR x: SET): BOOLEAN;
 		BEGIN
 		BEGIN
 			x:= value; RETURN TRUE;
 			x:= value; RETURN TRUE;
 		END GetSet;
 		END GetSet;
 
 
-		PROCEDURE WriteValue(w: Streams.Writer);
+		PROCEDURE WriteValue*(w: Streams.Writer);
 		BEGIN
 		BEGIN
 			w.Set(value)
 			w.Set(value)
 		END WriteValue;
 		END WriteValue;
 		
 		
-		PROCEDURE Address(): ADDRESS;
+		PROCEDURE Address*(): ADDRESS;
 		BEGIN
 		BEGIN
 			RETURN ADDRESSOF(value)
 			RETURN ADDRESSOF(value)
 		END Address;
 		END Address;
@@ -1188,36 +1188,36 @@ TYPE
 		BEGIN InitValue; value := r; type := "RangeValue"
 		BEGIN InitValue; value := r; type := "RangeValue"
 		END InitRange;
 		END InitRange;
 
 
-		PROCEDURE Enumerate(enum: PersistentObjects.Enumerator);
+		PROCEDURE Enumerate*(enum: PersistentObjects.Enumerator);
 		BEGIN Enumerate^(enum); enum(StrValue,FALSE);
 		BEGIN Enumerate^(enum); enum(StrValue,FALSE);
 		END Enumerate;
 		END Enumerate;
 
 
-		PROCEDURE Set(CONST name: ARRAY OF CHAR; index: LONGINT; c: Content);
+		PROCEDURE Set*(CONST name: ARRAY OF CHAR; index: LONGINT; c: Content);
 		BEGIN
 		BEGIN
 			IF name = StrValue THEN c.GetRange(value);
 			IF name = StrValue THEN c.GetRange(value);
 			ELSE Set^(name, index, c);
 			ELSE Set^(name, index, c);
 			END;
 			END;
 		END Set;
 		END Set;
 
 
-		PROCEDURE Get(CONST name: ARRAY OF CHAR; index: LONGINT; c: Content);
+		PROCEDURE Get*(CONST name: ARRAY OF CHAR; index: LONGINT; c: Content);
 		BEGIN
 		BEGIN
 			IF name = StrValue THEN c.SetRange(value);
 			IF name = StrValue THEN c.SetRange(value);
 			ELSE Get^(name, index, c);
 			ELSE Get^(name, index, c);
 			END;
 			END;
 		END Get;		
 		END Get;		
 
 
-		PROCEDURE GetRange(VAR x: RANGE): BOOLEAN;
+		PROCEDURE GetRange*(VAR x: RANGE): BOOLEAN;
 		BEGIN
 		BEGIN
 			x := value; RETURN TRUE; 
 			x := value; RETURN TRUE; 
 		END GetRange;
 		END GetRange;
 
 
 
 
-		PROCEDURE WriteValue(w: Streams.Writer);
+		PROCEDURE WriteValue*(w: Streams.Writer);
 		BEGIN
 		BEGIN
 			w.Int(FIRST(value),0); w.String(" .. "); w.Int(LAST(value),0); IF STEP(value) # 1 THEN w.String(" BY "); w.Int(STEP(value),0) END;
 			w.Int(FIRST(value),0); w.String(" .. "); w.Int(LAST(value),0); IF STEP(value) # 1 THEN w.String(" BY "); w.Int(STEP(value),0) END;
 		END WriteValue;
 		END WriteValue;
 
 
-		PROCEDURE Address(): ADDRESS;
+		PROCEDURE Address*(): ADDRESS;
 		BEGIN
 		BEGIN
 			RETURN ADDRESSOF(value)
 			RETURN ADDRESSOF(value)
 		END Address;
 		END Address;
@@ -1231,35 +1231,35 @@ TYPE
 		BEGIN InitValue; value := c; type := "CharValue";
 		BEGIN InitValue; value := c; type := "CharValue";
 		END InitChar;
 		END InitChar;
 
 
-		PROCEDURE Enumerate(enum: PersistentObjects.Enumerator);
+		PROCEDURE Enumerate*(enum: PersistentObjects.Enumerator);
 		BEGIN Enumerate^(enum); enum(StrValue,FALSE);
 		BEGIN Enumerate^(enum); enum(StrValue,FALSE);
 		END Enumerate;
 		END Enumerate;
 
 
-		PROCEDURE Set(CONST name: ARRAY OF CHAR; index: LONGINT; c: Content);
+		PROCEDURE Set*(CONST name: ARRAY OF CHAR; index: LONGINT; c: Content);
 		BEGIN
 		BEGIN
 			IF name = StrValue THEN c.GetChar(value);
 			IF name = StrValue THEN c.GetChar(value);
 			ELSE Set^(name, index, c);
 			ELSE Set^(name, index, c);
 			END;
 			END;
 		END Set;
 		END Set;
 
 
-		PROCEDURE Get(CONST name: ARRAY OF CHAR; index: LONGINT; c: Content);
+		PROCEDURE Get*(CONST name: ARRAY OF CHAR; index: LONGINT; c: Content);
 		BEGIN
 		BEGIN
 			IF name = StrValue THEN c.SetChar(value);
 			IF name = StrValue THEN c.SetChar(value);
 			ELSE Get^(name, index, c);
 			ELSE Get^(name, index, c);
 			END;
 			END;
 		END Get;
 		END Get;
 		
 		
-		PROCEDURE GetChar(VAR c: CHAR): BOOLEAN;
+		PROCEDURE GetChar*(VAR c: CHAR): BOOLEAN;
 		BEGIN
 		BEGIN
 			c := value; RETURN TRUE; 
 			c := value; RETURN TRUE; 
 		END GetChar;
 		END GetChar;
 
 
-		PROCEDURE WriteValue(w: Streams.Writer);
+		PROCEDURE WriteValue*(w: Streams.Writer);
 		BEGIN
 		BEGIN
 			w.Hex(ORD(value),2); w.String("X");
 			w.Hex(ORD(value),2); w.String("X");
 		END WriteValue;
 		END WriteValue;
 
 
-		PROCEDURE Address(): ADDRESS;
+		PROCEDURE Address*(): ADDRESS;
 		BEGIN
 		BEGIN
 			RETURN ADDRESSOF(value)
 			RETURN ADDRESSOF(value)
 		END Address;
 		END Address;
@@ -1273,31 +1273,31 @@ TYPE
 		BEGIN InitValue; value := v;  translation := trans; type := "EnumValue";
 		BEGIN InitValue; value := v;  translation := trans; type := "EnumValue";
 		END InitEnumValue;
 		END InitEnumValue;
 
 
-		PROCEDURE Enumerate(enum: PersistentObjects.Enumerator);
+		PROCEDURE Enumerate*(enum: PersistentObjects.Enumerator);
 		BEGIN Enumerate^(enum); enum(StrValue,FALSE);
 		BEGIN Enumerate^(enum); enum(StrValue,FALSE);
 		END Enumerate;
 		END Enumerate;
 
 
-		PROCEDURE Set(CONST name: ARRAY OF CHAR; index: LONGINT; c: Content);
+		PROCEDURE Set*(CONST name: ARRAY OF CHAR; index: LONGINT; c: Content);
 		BEGIN
 		BEGIN
 			IF name = StrValue THEN c.GetEnum(translation, value);
 			IF name = StrValue THEN c.GetEnum(translation, value);
 			ELSE Set^(name, index, c);
 			ELSE Set^(name, index, c);
 			END;
 			END;
 		END Set;
 		END Set;
 
 
-		PROCEDURE Get(CONST name: ARRAY OF CHAR; index: LONGINT; c: Content);
+		PROCEDURE Get*(CONST name: ARRAY OF CHAR; index: LONGINT; c: Content);
 		BEGIN
 		BEGIN
 			IF name = StrValue THEN c.SetEnum(translation, value);
 			IF name = StrValue THEN c.SetEnum(translation, value);
 			ELSE Get^(name, index, c);
 			ELSE Get^(name, index, c);
 			END;
 			END;
 		END Get;
 		END Get;
 
 
-		PROCEDURE WriteValue(w: Streams.Writer);
+		PROCEDURE WriteValue*(w: Streams.Writer);
 		VAR str: ARRAY 32 OF CHAR;
 		VAR str: ARRAY 32 OF CHAR;
 		BEGIN
 		BEGIN
 			IF translation.Name(SIZE(value), str) THEN w.String(str) ELSE w.String("unknown") END;
 			IF translation.Name(SIZE(value), str) THEN w.String(str) ELSE w.String("unknown") END;
 		END WriteValue;
 		END WriteValue;
 
 
-		PROCEDURE Address(): ADDRESS;
+		PROCEDURE Address*(): ADDRESS;
 		BEGIN
 		BEGIN
 			RETURN ADDRESSOF(value)
 			RETURN ADDRESSOF(value)
 		END Address;
 		END Address;
@@ -1314,18 +1314,18 @@ TYPE
 			type := "MathArrayValue";
 			type := "MathArrayValue";
 		END InitMathArrayValue;
 		END InitMathArrayValue;
 
 
-		PROCEDURE Enumerate(enum: PersistentObjects.Enumerator);
+		PROCEDURE Enumerate*(enum: PersistentObjects.Enumerator);
 		BEGIN Enumerate^(enum); enum(StrValue,FALSE);
 		BEGIN Enumerate^(enum); enum(StrValue,FALSE);
 		END Enumerate;
 		END Enumerate;
 
 
-		PROCEDURE Set(CONST name: ARRAY OF CHAR; index: LONGINT; c: Content);
+		PROCEDURE Set*(CONST name: ARRAY OF CHAR; index: LONGINT; c: Content);
 		BEGIN
 		BEGIN
 			IF name = StrValue THEN values[index] := ContentGetValue(c)
 			IF name = StrValue THEN values[index] := ContentGetValue(c)
 			ELSE Set^(name, index, c);
 			ELSE Set^(name, index, c);
 			END;
 			END;
 		END Set;
 		END Set;
 
 
-		PROCEDURE Get(CONST name: ARRAY OF CHAR; index: LONGINT; c: Content);
+		PROCEDURE Get*(CONST name: ARRAY OF CHAR; index: LONGINT; c: Content);
 		BEGIN
 		BEGIN
 			IF name = StrValue THEN c.SetObject(values[index],"Value");
 			IF name = StrValue THEN c.SetObject(values[index],"Value");
 			ELSE Get^(name, index, c);
 			ELSE Get^(name, index, c);
@@ -1390,7 +1390,7 @@ TYPE
 			type := "Container";
 			type := "Container";
 		END InitContainer;
 		END InitContainer;
 
 
-		PROCEDURE Enumerate(enum: PersistentObjects.Enumerator);
+		PROCEDURE Enumerate*(enum: PersistentObjects.Enumerator);
 		VAR i: LONGINT; symbol: Symbol; o: ANY; name: ARRAY 256 OF CHAR;
 		VAR i: LONGINT; symbol: Symbol; o: ANY; name: ARRAY 256 OF CHAR;
 		BEGIN Enumerate^(enum);
 		BEGIN Enumerate^(enum);
 			FOR i := 0 TO symbols.Length()-1 DO
 			FOR i := 0 TO symbols.Length()-1 DO
@@ -1401,14 +1401,14 @@ TYPE
 			END;
 			END;
 		END Enumerate;
 		END Enumerate;
 
 
-		PROCEDURE Set(CONST name: ARRAY OF CHAR; index: LONGINT; c: Content);
+		PROCEDURE Set*(CONST name: ARRAY OF CHAR; index: LONGINT; c: Content);
 		BEGIN
 		BEGIN
 			IF FALSE THEN
 			IF FALSE THEN
 			ELSE Set^(name, index, c);
 			ELSE Set^(name, index, c);
 			END;
 			END;
 		END Set;
 		END Set;
 
 
-		PROCEDURE Get(CONST name: ARRAY OF CHAR; index: LONGINT; c: Content);
+		PROCEDURE Get*(CONST name: ARRAY OF CHAR; index: LONGINT; c: Content);
 		VAR item: Item;
 		VAR item: Item;
 		BEGIN
 		BEGIN
 			item := Find(name);
 			item := Find(name);

+ 3 - 3
source/FoxMinosObjectFile.Mod

@@ -68,15 +68,15 @@ TYPE
 			IF ~options.GetString("objectFilePrefix",prefix) THEN prefix := "" END
 			IF ~options.GetString("objectFilePrefix",prefix) THEN prefix := "" END
 		END GetOptions;
 		END GetOptions;
 
 
-		PROCEDURE DefaultSymbolFileFormat(): Formats.SymbolFileFormat;
+		PROCEDURE DefaultSymbolFileFormat*(): Formats.SymbolFileFormat;
 		BEGIN RETURN SymbolFileFormat.Get();
 		BEGIN RETURN SymbolFileFormat.Get();
 		END DefaultSymbolFileFormat;
 		END DefaultSymbolFileFormat;
 
 
-		PROCEDURE ForceModuleBodies(): BOOLEAN; (* necessary in binary object file format as bodies not recognizable later on *)
+		PROCEDURE ForceModuleBodies*(): BOOLEAN; (* necessary in binary object file format as bodies not recognizable later on *)
 		BEGIN RETURN TRUE
 		BEGIN RETURN TRUE
 		END ForceModuleBodies;
 		END ForceModuleBodies;
 
 
-		PROCEDURE GetExtension(VAR ext: ARRAY OF CHAR);
+		PROCEDURE GetExtension*(VAR ext: ARRAY OF CHAR);
 		BEGIN COPY(extension, ext)
 		BEGIN COPY(extension, ext)
 		END GetExtension;
 		END GetExtension;
 
 

+ 1 - 1
source/FoxOberonFrontend.Mod

@@ -23,7 +23,7 @@ TYPE
 			RETURN parser.Module();
 			RETURN parser.Module();
 		END Parse;
 		END Parse;
 		
 		
-		PROCEDURE Error(): BOOLEAN;
+		PROCEDURE Error*(): BOOLEAN;
 		BEGIN
 		BEGIN
 			RETURN parser.error;
 			RETURN parser.error;
 		END Error;
 		END Error;

+ 1 - 1
source/FoxSections.Mod

@@ -229,7 +229,7 @@ TYPE
 			lastComment.Append(buf,ofs,len)
 			lastComment.Append(buf,ofs,len)
 		END AppendToLine;
 		END AppendToLine;
 
 
-		PROCEDURE Ln;
+		PROCEDURE Ln*;
 		BEGIN
 		BEGIN
 			Ln^;
 			Ln^;
 			(*Update;*)
 			(*Update;*)

+ 30 - 30
source/FoxTRMBackend.Mod

@@ -115,35 +115,35 @@ TYPE
 			IF b THEN toVirtual[InstructionSet.FP] := unusable ELSE toVirtual[InstructionSet.FP] := NIL END;
 			IF b THEN toVirtual[InstructionSet.FP] := unusable ELSE toVirtual[InstructionSet.FP] := NIL END;
 		END SupportFP;
 		END SupportFP;
 
 
-		PROCEDURE NumberRegisters(): LONGINT;
+		PROCEDURE NumberRegisters*(): LONGINT;
 		BEGIN
 		BEGIN
 			RETURN Registers
 			RETURN Registers
 		END NumberRegisters;
 		END NumberRegisters;
 
 
-		PROCEDURE Allocate(index: LONGINT; virtualRegister: Ticket);
+		PROCEDURE Allocate*(index: LONGINT; virtualRegister: Ticket);
 		BEGIN
 		BEGIN
 			Assert(toVirtual[index]=NIL,"register already allocated");
 			Assert(toVirtual[index]=NIL,"register already allocated");
 			toVirtual[index] := virtualRegister;
 			toVirtual[index] := virtualRegister;
 			ASSERT(~virtualRegister.spilled);
 			ASSERT(~virtualRegister.spilled);
 		END Allocate;
 		END Allocate;
 
 
-		PROCEDURE SetReserved(index: LONGINT; res: BOOLEAN);
+		PROCEDURE SetReserved*(index: LONGINT; res: BOOLEAN);
 		BEGIN
 		BEGIN
 			reserved[index] := res;
 			reserved[index] := res;
 		END SetReserved;
 		END SetReserved;
 
 
-		PROCEDURE Reserved(index: LONGINT): BOOLEAN;
+		PROCEDURE Reserved*(index: LONGINT): BOOLEAN;
 		BEGIN
 		BEGIN
 			RETURN (index>0) & reserved[index]
 			RETURN (index>0) & reserved[index]
 		END Reserved;
 		END Reserved;
 
 
-		PROCEDURE Free(index: LONGINT);
+		PROCEDURE Free*(index: LONGINT);
 		BEGIN
 		BEGIN
 			Assert((toVirtual[index] # NIL),"register not reserved");
 			Assert((toVirtual[index] # NIL),"register not reserved");
 			toVirtual[index] := NIL;
 			toVirtual[index] := NIL;
 		END Free;
 		END Free;
 
 
-		PROCEDURE NextFree(CONST type: IntermediateCode.Type):LONGINT;
+		PROCEDURE NextFree*(CONST type: IntermediateCode.Type):LONGINT;
 		VAR i: LONGINT;
 		VAR i: LONGINT;
 		BEGIN
 		BEGIN
 			ASSERT(type.sizeInBits=32);
 			ASSERT(type.sizeInBits=32);
@@ -160,16 +160,16 @@ TYPE
 			RETURN i;
 			RETURN i;
 		END NextFree;
 		END NextFree;
 
 
-		PROCEDURE AllocationHint(index: LONGINT);
+		PROCEDURE AllocationHint*(index: LONGINT);
 		BEGIN hint := index
 		BEGIN hint := index
 		END AllocationHint;
 		END AllocationHint;
 
 
-		PROCEDURE Mapped(physical: LONGINT): Ticket;
+		PROCEDURE Mapped*(physical: LONGINT): Ticket;
 		BEGIN
 		BEGIN
 			RETURN toVirtual[physical]
 			RETURN toVirtual[physical]
 		END Mapped;
 		END Mapped;
 
 
-		PROCEDURE Dump(w: Streams.Writer);
+		PROCEDURE Dump*(w: Streams.Writer);
 		VAR i: LONGINT; virtual: Ticket;
 		VAR i: LONGINT; virtual: Ticket;
 		BEGIN
 		BEGIN
 			w.String("---- registers ----"); w.Ln;
 			w.String("---- registers ----"); w.Ln;
@@ -299,7 +299,7 @@ TYPE
 		END Emit1N;
 		END Emit1N;
 
 
 		(*------------------- overwritten methods ----------------------*)
 		(*------------------- overwritten methods ----------------------*)
-		PROCEDURE Section(in: IntermediateCode.Section; out: BinaryCode.Section);
+		PROCEDURE Section*(in: IntermediateCode.Section; out: BinaryCode.Section);
 		VAR oldSpillStackSize: LONGINT;
 		VAR oldSpillStackSize: LONGINT;
 
 
 			PROCEDURE CheckEmptySpillStack(): BOOLEAN;
 			PROCEDURE CheckEmptySpillStack(): BOOLEAN;
@@ -345,7 +345,7 @@ TYPE
 
 
 		END Section;
 		END Section;
 
 
-		PROCEDURE Supported(CONST instr: IntermediateCode.Instruction; VAR moduleName, procedureName: ARRAY OF CHAR): BOOLEAN;
+		PROCEDURE Supported*(CONST instr: IntermediateCode.Instruction; VAR moduleName, procedureName: ARRAY OF CHAR): BOOLEAN;
 		VAR sizeInBits: LONGINT; form: LONGINT; opcode: LONGINT; value: HUGEINT; exp: LONGINT;
 		VAR sizeInBits: LONGINT; form: LONGINT; opcode: LONGINT; value: HUGEINT; exp: LONGINT;
 		BEGIN
 		BEGIN
 			opcode := instr.opcode;
 			opcode := instr.opcode;
@@ -482,7 +482,7 @@ TYPE
 		END Supported;
 		END Supported;
 
 
 		(* input: type (such as that of an intermediate operand), output: low and high type (such as in low and high type of an operand) *)
 		(* input: type (such as that of an intermediate operand), output: low and high type (such as in low and high type of an operand) *)
-		PROCEDURE GetPartType(CONST type: IntermediateCode.Type; part: LONGINT; VAR typePart: IntermediateCode.Type);
+		PROCEDURE GetPartType*(CONST type: IntermediateCode.Type; part: LONGINT; VAR typePart: IntermediateCode.Type);
 		BEGIN
 		BEGIN
 			ASSERT(type.sizeInBits >0); ASSERT(part < 2);
 			ASSERT(type.sizeInBits >0); ASSERT(part < 2);
 			IF (part = 0) OR (type.sizeInBits =64) THEN
 			IF (part = 0) OR (type.sizeInBits =64) THEN
@@ -503,7 +503,7 @@ TYPE
 			instructionSet.InitMemory(mem, register, offset);
 			instructionSet.InitMemory(mem, register, offset);
 		END GetSpillOperand;
 		END GetSpillOperand;
 
 
-		PROCEDURE ToSpillStack(ticket: Ticket);
+		PROCEDURE ToSpillStack*(ticket: Ticket);
 		VAR mem, reg:Operand;
 		VAR mem, reg:Operand;
 		BEGIN
 		BEGIN
 			IF dump # NIL THEN dump.String("spill: "); CodeGenerators.DumpTicket(dump,ticket); dump.Ln; END;
 			IF dump # NIL THEN dump.String("spill: "); CodeGenerators.DumpTicket(dump,ticket); dump.Ln; END;
@@ -512,11 +512,11 @@ TYPE
 			Emit2(opST,reg,mem);
 			Emit2(opST,reg,mem);
 		END ToSpillStack;
 		END ToSpillStack;
 
 
-		PROCEDURE AllocateSpillStack(size: LONGINT);
+		PROCEDURE AllocateSpillStack*(size: LONGINT);
 		BEGIN
 		BEGIN
 		END AllocateSpillStack;
 		END AllocateSpillStack;
 
 
-		PROCEDURE ToRegister(ticket: Ticket);
+		PROCEDURE ToRegister*(ticket: Ticket);
 		VAR mem,reg: Operand;
 		VAR mem,reg: Operand;
 		BEGIN
 		BEGIN
 			IF dump # NIL THEN dump.String("unspill: "); CodeGenerators.DumpTicket(dump,ticket); dump.Ln END;
 			IF dump # NIL THEN dump.String("unspill: "); CodeGenerators.DumpTicket(dump,ticket); dump.Ln END;
@@ -525,7 +525,7 @@ TYPE
 			Emit2(opLD,reg,mem);
 			Emit2(opLD,reg,mem);
 		END ToRegister;
 		END ToRegister;
 
 
-		PROCEDURE ExchangeTickets(ticket1,ticket2: Ticket);
+		PROCEDURE ExchangeTickets*(ticket1,ticket2: Ticket);
 		VAR op1,op2,temp: Operand;
 		VAR op1,op2,temp: Operand;
 		BEGIN
 		BEGIN
 			TicketToOperand(ticket1,op1);
 			TicketToOperand(ticket1,op1);
@@ -605,7 +605,7 @@ TYPE
 		BEGIN RETURN operand.type.form = IntermediateCode.Float
 		BEGIN RETURN operand.type.form = IntermediateCode.Float
 		END IsFloat;
 		END IsFloat;
 
 
-		PROCEDURE Generate(VAR instruction: IntermediateCode.Instruction);
+		PROCEDURE Generate*(VAR instruction: IntermediateCode.Instruction);
 		VAR opcode: SHORTINT; ticket: Ticket; hwreg, lastUse: LONGINT;
 		VAR opcode: SHORTINT; ticket: Ticket; hwreg, lastUse: LONGINT;
 		BEGIN
 		BEGIN
 			CheckFixups;
 			CheckFixups;
@@ -712,7 +712,7 @@ TYPE
 
 
 		END Generate;
 		END Generate;
 
 
-		PROCEDURE PostGenerate(CONST instruction: IntermediateCode.Instruction);
+		PROCEDURE PostGenerate*(CONST instruction: IntermediateCode.Instruction);
 		VAR ticket: Ticket;
 		VAR ticket: Ticket;
 		BEGIN
 		BEGIN
 			TryUnmap(instruction.op3); TryUnmap(instruction.op2); TryUnmap(instruction.op1);
 			TryUnmap(instruction.op3); TryUnmap(instruction.op2); TryUnmap(instruction.op1);
@@ -2192,7 +2192,7 @@ TYPE
 
 
 	System = OBJECT (Global.System)
 	System = OBJECT (Global.System)
 
 
-		PROCEDURE SizeOf(type: SyntaxTree.Type): LONGINT;
+		PROCEDURE SizeOf*(type: SyntaxTree.Type): LONGINT;
 		BEGIN
 		BEGIN
 			type := type.resolved;
 			type := type.resolved;
 			IF type IS SyntaxTree.BasicType THEN
 			IF type IS SyntaxTree.BasicType THEN
@@ -2227,7 +2227,7 @@ TYPE
 			SetName("TRM");
 			SetName("TRM");
 		END InitBackendTRM;
 		END InitBackendTRM;
 
 
-		PROCEDURE Initialize(diagnostics: Diagnostics.Diagnostics; log: Streams.Writer; flags: SET; checker: SemanticChecker.Checker; system: Global.System);
+		PROCEDURE Initialize*(diagnostics: Diagnostics.Diagnostics; log: Streams.Writer; flags: SET; checker: SemanticChecker.Checker; system: Global.System);
 		VAR
 		VAR
 		BEGIN
 		BEGIN
 			Initialize^(diagnostics, log, flags, checker, system); (*goes up the inheritance hierarchy all the way to Backend.Mod*)
 			Initialize^(diagnostics, log, flags, checker, system); (*goes up the inheritance hierarchy all the way to Backend.Mod*)
@@ -2247,7 +2247,7 @@ TYPE
 			END;
 			END;
 		END SetInstructionWidth;
 		END SetInstructionWidth;
 		
 		
-		PROCEDURE GetSystem(): Global.System;
+		PROCEDURE GetSystem*(): Global.System;
 		VAR system: System;
 		VAR system: System;
 		BEGIN
 		BEGIN
 			NEW(system, 18, 32, 32, 32, 32, 32, 32, 64(* parameter offset 0: handled locally *),  cooperative);
 			NEW(system, 18, 32, 32, 32, 32, 32, 32, 64(* parameter offset 0: handled locally *),  cooperative);
@@ -2256,12 +2256,12 @@ TYPE
 			RETURN system
 			RETURN system
 		END GetSystem;
 		END GetSystem;
 
 
-		PROCEDURE SupportedInstruction(CONST instruction: IntermediateCode.Instruction; VAR moduleName, procedureName: ARRAY OF CHAR): BOOLEAN;
+		PROCEDURE SupportedInstruction*(CONST instruction: IntermediateCode.Instruction; VAR moduleName, procedureName: ARRAY OF CHAR): BOOLEAN;
 		BEGIN
 		BEGIN
 			RETURN cg.Supported(instruction, moduleName, procedureName);
 			RETURN cg.Supported(instruction, moduleName, procedureName);
 		END SupportedInstruction;
 		END SupportedInstruction;
 
 
-		PROCEDURE SupportedImmediate(CONST immediate: IntermediateCode.Operand): BOOLEAN;
+		PROCEDURE SupportedImmediate*(CONST immediate: IntermediateCode.Operand): BOOLEAN;
 		VAR reg: InstructionSet.Operand; int: LONGINT;
 		VAR reg: InstructionSet.Operand; int: LONGINT;
 		BEGIN
 		BEGIN
 			IF immediate.type.form IN  IntermediateCode.Integer THEN
 			IF immediate.type.form IN  IntermediateCode.Integer THEN
@@ -2409,7 +2409,7 @@ TYPE
 			RETURN result
 			RETURN result
 		END ProcessIntermediateCodeModule;
 		END ProcessIntermediateCodeModule;
 
 
-		PROCEDURE DefineOptions(options: Options.Options);
+		PROCEDURE DefineOptions*(options: Options.Options);
 		BEGIN
 		BEGIN
 			options.Add(0X,VectorSupportFlag,Options.Flag);
 			options.Add(0X,VectorSupportFlag,Options.Flag);
 			options.Add(0X,FloatingPointSupportFlag,Options.Flag);
 			options.Add(0X,FloatingPointSupportFlag,Options.Flag);
@@ -2417,7 +2417,7 @@ TYPE
 			DefineOptions^(options);
 			DefineOptions^(options);
 		END DefineOptions;
 		END DefineOptions;
 
 
-		PROCEDURE GetOptions(options: Options.Options);
+		PROCEDURE GetOptions*(options: Options.Options);
 		VAR capabilities: SET;
 		VAR capabilities: SET;
 		BEGIN
 		BEGIN
 			capabilities := SELF.capabilities;
 			capabilities := SELF.capabilities;
@@ -2428,20 +2428,20 @@ TYPE
 			GetOptions^(options);
 			GetOptions^(options);
 		END GetOptions;
 		END GetOptions;
 
 
-		PROCEDURE DefaultObjectFileFormat(): Formats.ObjectFileFormat;
+		PROCEDURE DefaultObjectFileFormat*(): Formats.ObjectFileFormat;
 		BEGIN RETURN ObjectFileFormat.Get();
 		BEGIN RETURN ObjectFileFormat.Get();
 		END DefaultObjectFileFormat;
 		END DefaultObjectFileFormat;
 
 
-		PROCEDURE DefaultSymbolFileFormat(): Formats.SymbolFileFormat;
+		PROCEDURE DefaultSymbolFileFormat*(): Formats.SymbolFileFormat;
 		BEGIN
 		BEGIN
 			RETURN NIL
 			RETURN NIL
 		END DefaultSymbolFileFormat;
 		END DefaultSymbolFileFormat;
 
 
-		PROCEDURE GetDescription(VAR instructionSet: ARRAY OF CHAR);
+		PROCEDURE GetDescription*(VAR instructionSet: ARRAY OF CHAR);
 		BEGIN instructionSet := "TRM"
 		BEGIN instructionSet := "TRM"
 		END GetDescription;
 		END GetDescription;
 
 
-		PROCEDURE FindPC(x: SyntaxTree.Module; CONST sectionName: ARRAY OF CHAR; sectionOffset: LONGINT);
+		PROCEDURE FindPC*(x: SyntaxTree.Module; CONST sectionName: ARRAY OF CHAR; sectionOffset: LONGINT);
 		VAR
 		VAR
 			section: Sections.Section; binarySection: BinaryCode.Section; label: BinaryCode.LabelList; module: Formats.GeneratedModule;
 			section: Sections.Section; binarySection: BinaryCode.Section; label: BinaryCode.LabelList; module: Formats.GeneratedModule;
 			i: LONGINT; pooledName: Basic.SegmentedName;
 			i: LONGINT; pooledName: Basic.SegmentedName;
@@ -2470,7 +2470,7 @@ TYPE
 			END;
 			END;
 		END FindPC;
 		END FindPC;
 
 
-		PROCEDURE CheckCodeAddress(VAR adr: LONGINT);
+		PROCEDURE CheckCodeAddress*(VAR adr: LONGINT);
 		BEGIN
 		BEGIN
 			IF (patchSpartan6) & (adr MOD 1024 >= 959) (* need one instruction to jump, therefore include 959 in check *) & (adr MOD 1024 <= 975) THEN
 			IF (patchSpartan6) & (adr MOD 1024 >= 959) (* need one instruction to jump, therefore include 959 in check *) & (adr MOD 1024 <= 975) THEN
 				adr := (adr DIV 1024) * 1024 +976;
 				adr := (adr DIV 1024) * 1024 +976;

+ 1 - 1
source/FoxTRMInstructionSet.Mod

@@ -1070,7 +1070,7 @@ TYPE
 	TYPE
 	TYPE
 		Disasm = OBJECT (Disassembler.Disassembler)
 		Disasm = OBJECT (Disassembler.Disassembler)
 
 
-			PROCEDURE DisassembleInstruction(bitSet: BitSets.BitSet; VAR adr: LONGINT; maxInstructionSize: LONGINT; w:Streams.Writer);
+			PROCEDURE DisassembleInstruction*(bitSet: BitSets.BitSet; VAR adr: LONGINT; maxInstructionSize: LONGINT; w:Streams.Writer);
 			VAR instruction: Instruction; value: LONGINT; mnemonic: LONGINT;
 			VAR instruction: Instruction; value: LONGINT; mnemonic: LONGINT;
 			BEGIN
 			BEGIN
 				(* maxInstructionSize can be ignored here *)
 				(* maxInstructionSize can be ignored here *)

+ 1 - 1
source/FoxTest.Mod

@@ -28,7 +28,7 @@ TYPE
 			IF log = NIL THEN INCL(commandFlags, Commands.Silent) END;
 			IF log = NIL THEN INCL(commandFlags, Commands.Silent) END;
 		END InitTester;
 		END InitTester;
 
 
-		PROCEDURE Handle (r: Streams.Reader; position: LONGINT; CONST name: ARRAY OF CHAR; type: TestSuite.TestType): INTEGER;
+		PROCEDURE Handle* (r: Streams.Reader; position: LONGINT; CONST name: ARRAY OF CHAR; type: TestSuite.TestType): INTEGER;
 		VAR result: INTEGER; msg: ARRAY 128 OF CHAR; res: LONGINT; f: Files.File; w: Files.Writer; ch: CHAR;
 		VAR result: INTEGER; msg: ARRAY 128 OF CHAR; res: LONGINT; f: Files.File; w: Files.Writer; ch: CHAR;
 		BEGIN
 		BEGIN
 			result := TestSuite.Failure;
 			result := TestSuite.Failure;

+ 4 - 4
source/FoxTextualSymbolFile.Mod

@@ -11,7 +11,7 @@ TYPE
 	TextualSymbolFile = OBJECT (Formats.SymbolFileFormat)
 	TextualSymbolFile = OBJECT (Formats.SymbolFileFormat)
 	VAR extension: Basic.FileName; noRedefinition, noModification: BOOLEAN;
 	VAR extension: Basic.FileName; noRedefinition, noModification: BOOLEAN;
 
 
-		PROCEDURE Import(CONST moduleFileName: ARRAY OF CHAR; importCache: SyntaxTree.ModuleScope): SyntaxTree.Module;
+		PROCEDURE Import*(CONST moduleFileName: ARRAY OF CHAR; importCache: SyntaxTree.ModuleScope): SyntaxTree.Module;
 		VAR fileName: Files.FileName; module: SyntaxTree.Module; reader: Streams.Reader; scanner: Scanner.Scanner; parser: Parser.Parser;
 		VAR fileName: Files.FileName; module: SyntaxTree.Module; reader: Streams.Reader; scanner: Scanner.Scanner; parser: Parser.Parser;
 			checker: SemanticChecker.Checker;
 			checker: SemanticChecker.Checker;
 		BEGIN
 		BEGIN
@@ -35,7 +35,7 @@ TYPE
 			RETURN module
 			RETURN module
 		END Import;
 		END Import;
 
 
-		PROCEDURE Export(module: SyntaxTree.Module; importCache: SyntaxTree.ModuleScope): BOOLEAN;
+		PROCEDURE Export*(module: SyntaxTree.Module; importCache: SyntaxTree.ModuleScope): BOOLEAN;
 		VAR moduleName,fileName: Basic.FileName; writer: Files.Writer; file: Files.File; printer: Printout.Printer; result: BOOLEAN;flags: SET;
 		VAR moduleName,fileName: Basic.FileName; writer: Files.Writer; file: Files.File; printer: Printout.Printer; result: BOOLEAN;flags: SET;
 		BEGIN
 		BEGIN
 			Global.ModuleFileName(module.name,module.context,moduleName);
 			Global.ModuleFileName(module.name,module.context,moduleName);
@@ -75,14 +75,14 @@ TYPE
 			RETURN result
 			RETURN result
 		END Export;
 		END Export;
 
 
-		PROCEDURE DefineOptions(options: Options.Options);
+		PROCEDURE DefineOptions*(options: Options.Options);
 		BEGIN
 		BEGIN
 			options.Add(0X,"symbolFileExtension",Options.String);
 			options.Add(0X,"symbolFileExtension",Options.String);
 			options.Add(0X,"noRedefinition",Options.Flag);
 			options.Add(0X,"noRedefinition",Options.Flag);
 			options.Add(0X,"noModification",Options.Flag);
 			options.Add(0X,"noModification",Options.Flag);
 		END DefineOptions;
 		END DefineOptions;
 
 
-		PROCEDURE GetOptions(options: Options.Options);
+		PROCEDURE GetOptions*(options: Options.Options);
 		BEGIN
 		BEGIN
 			IF ~options.GetString("symbolFileExtension",extension) THEN extension := ".Sym" END;
 			IF ~options.GetString("symbolFileExtension",extension) THEN extension := ".Sym" END;
 			noRedefinition := options.GetFlag("noRedefinition");
 			noRedefinition := options.GetFlag("noRedefinition");

+ 1 - 1
source/FoxTranspilerBackend.Mod

@@ -1292,7 +1292,7 @@ TYPE
 			IF isRecord THEN writer.Char (')') END;
 			IF isRecord THEN writer.Char (')') END;
 		END VisitTypeGuardDesignator;
 		END VisitTypeGuardDesignator;
 
 
-		PROCEDURE VisitSupercallDesignator(expression: SyntaxTree.SupercallDesignator);
+		PROCEDURE VisitSupercallDesignator*(expression: SyntaxTree.SupercallDesignator);
 		VAR name: Identifier; procedure: SyntaxTree.Procedure;
 		VAR name: Identifier; procedure: SyntaxTree.Procedure;
 		BEGIN
 		BEGIN
 			procedure := expression.left(SyntaxTree.SymbolDesignator).symbol(SyntaxTree.Procedure);
 			procedure := expression.left(SyntaxTree.SymbolDesignator).symbol(SyntaxTree.Procedure);

+ 5 - 5
source/FractalDemo.Mod

@@ -202,7 +202,7 @@ TYPE
 			calculating := FALSE
 			calculating := FALSE
 		END Recalc;
 		END Recalc;
 
 
-		PROCEDURE PointerDown(x,y : LONGINT; keys : SET);
+		PROCEDURE PointerDown*(x,y : LONGINT; keys : SET);
 		BEGIN
 		BEGIN
 			IF calculating THEN RETURN END;
 			IF calculating THEN RETURN END;
 			IF (keys*{0}#{}) THEN
 			IF (keys*{0}#{}) THEN
@@ -215,7 +215,7 @@ TYPE
 			END
 			END
 		END PointerDown;
 		END PointerDown;
 
 
-		PROCEDURE PointerMove(x,y : LONGINT; keys : SET);
+		PROCEDURE PointerMove*(x,y : LONGINT; keys : SET);
 		BEGIN
 		BEGIN
 			IF calculating THEN RETURN END;
 			IF calculating THEN RETURN END;
 			x1 := x; y1 := y;
 			x1 := x; y1 := y;
@@ -223,7 +223,7 @@ TYPE
 		END PointerMove;
 		END PointerMove;
 
 
 
 
-		PROCEDURE PointerUp(x,y : LONGINT; keys : SET);
+		PROCEDURE PointerUp*(x,y : LONGINT; keys : SET);
 		VAR t: LONGREAL;
 		VAR t: LONGREAL;
 		BEGIN
 		BEGIN
 			IF calculating THEN RETURN END;
 			IF calculating THEN RETURN END;
@@ -262,7 +262,7 @@ TYPE
 			PrepareBuffer;
 			PrepareBuffer;
 		END Resized;
 		END Resized;
 
 
-		PROCEDURE DrawBackground(canvas : WMGraphics.Canvas);
+		PROCEDURE DrawBackground*(canvas : WMGraphics.Canvas);
 		VAR str, t : ARRAY 32 OF CHAR;
 		VAR str, t : ARRAY 32 OF CHAR;
 		BEGIN
 		BEGIN
 			canvas.DrawImage(0, 0, backBmp, WMGraphics.ModeCopy);
 			canvas.DrawImage(0, 0, backBmp, WMGraphics.ModeCopy);
@@ -283,7 +283,7 @@ TYPE
 			END;
 			END;
 		END DrawBackground;
 		END DrawBackground;
 
 
-		PROCEDURE Finalize;
+		PROCEDURE Finalize*;
 		BEGIN
 		BEGIN
 			Finalize^;
 			Finalize^;
 			BEGIN {EXCLUSIVE} alive := FALSE END
 			BEGIN {EXCLUSIVE} alive := FALSE END

+ 1 - 1
source/Generic.Modules.Mod

@@ -113,7 +113,7 @@ TYPE
 			body*: PROCEDURE;
 			body*: PROCEDURE;
 			flags*: SET;	 (* e.g. compilation flags *)
 			flags*: SET;	 (* e.g. compilation flags *)
 			
 			
-		PROCEDURE FindRoots;	(* override *)
+		PROCEDURE FindRoots*;	(* override *)
 		VAR i: LONGINT; ptr: ANY; false: BOOLEAN;
 		VAR i: LONGINT; ptr: ANY; false: BOOLEAN;
 		VAR name: Name;
 		VAR name: Name;
 		BEGIN
 		BEGIN

+ 3 - 3
source/GenericLoader.Mod

@@ -324,7 +324,7 @@ TYPE
 		END InitLinkerX;
 		END InitLinkerX;
 
 
 		(* oerwritten functionality of generic linker *)
 		(* oerwritten functionality of generic linker *)
-		PROCEDURE FindBlock(CONST identifier: ObjectFile.Identifier): GenericLinker.Block;
+		PROCEDURE FindBlock*(CONST identifier: ObjectFile.Identifier): GenericLinker.Block;
 		VAR block: GenericLinker.Block; any: ANY;
 		VAR block: GenericLinker.Block; any: ANY;
 		BEGIN
 		BEGIN
 			block := NIL;
 			block := NIL;
@@ -342,7 +342,7 @@ TYPE
 			RETURN block;
 			RETURN block;
 		END FindBlock;
 		END FindBlock;
 
 
-		PROCEDURE ExportBlock(block: GenericLinker.Block);
+		PROCEDURE ExportBlock*(block: GenericLinker.Block);
 		BEGIN
 		BEGIN
 			IF block.identifier.fingerprint # 0 THEN
 			IF block.identifier.fingerprint # 0 THEN
 				hash.Put(block.identifier.fingerprint, block)
 				hash.Put(block.identifier.fingerprint, block)
@@ -354,7 +354,7 @@ TYPE
 			END;
 			END;
 		END ExportBlock;
 		END ExportBlock;
 
 
-		PROCEDURE ImportBlock(CONST fixup: ObjectFile.Fixup): GenericLinker.Block;
+		PROCEDURE ImportBlock*(CONST fixup: ObjectFile.Fixup): GenericLinker.Block;
 		VAR name: Modules.Name; res: LONGINT;
 		VAR name: Modules.Name; res: LONGINT;
 			msg: ARRAY 128 OF CHAR; module: Modules.Module; adr: ADDRESS; m: HashTableInt;
 			msg: ARRAY 128 OF CHAR; module: Modules.Module; adr: ADDRESS; m: HashTableInt;
 			s: ObjectFile.SectionName; isModule: BOOLEAN; identifier: ObjectFile.Identifier;
 			s: ObjectFile.SectionName; isModule: BOOLEAN; identifier: ObjectFile.Identifier;

+ 3 - 3
source/HCubeCplx.Mod

@@ -21,19 +21,19 @@ TYPE
 		Get-: PROCEDURE {DELEGATE} ( x, y, z, t: Index ): Value;
 		Get-: PROCEDURE {DELEGATE} ( x, y, z, t: Index ): Value;
 
 
 		(** override *)
 		(** override *)
-		PROCEDURE AlikeX( ): ArrayXdBytes.Array;
+		PROCEDURE AlikeX*( ): ArrayXdBytes.Array;
 		VAR copy: HCube;
 		VAR copy: HCube;
 		BEGIN
 		BEGIN
 			NEW( copy, origin[0], len[0], origin[1], len[1], origin[2], len[2], origin[3], len[3] );  RETURN copy;
 			NEW( copy, origin[0], len[0], origin[1], len[1], origin[2], len[2], origin[3], len[3] );  RETURN copy;
 		END AlikeX;
 		END AlikeX;
 
 
-		PROCEDURE NewRangeX( neworigin, newlen: ArrayXdBytes.IndexArray;  copydata: BOOLEAN );
+		PROCEDURE NewRangeX*( neworigin, newlen: ArrayXdBytes.IndexArray;  copydata: BOOLEAN );
 		BEGIN
 		BEGIN
 			IF LEN( newlen ) # 4 THEN HALT( 1001 ) END;
 			IF LEN( newlen ) # 4 THEN HALT( 1001 ) END;
 			NewRangeX^( neworigin, newlen, copydata );
 			NewRangeX^( neworigin, newlen, copydata );
 		END NewRangeX;
 		END NewRangeX;
 
 
-		PROCEDURE ValidateCache;
+		PROCEDURE ValidateCache*;
 		BEGIN
 		BEGIN
 			ValidateCache^;
 			ValidateCache^;
 			IF dim # 4 THEN HALT( 100 ) END;
 			IF dim # 4 THEN HALT( 100 ) END;

+ 3 - 3
source/HCubeInt.Mod

@@ -20,19 +20,19 @@ TYPE
 		Get-: PROCEDURE {DELEGATE} ( x, y, z, t: Index ): Value;
 		Get-: PROCEDURE {DELEGATE} ( x, y, z, t: Index ): Value;
 
 
 		(** override *)
 		(** override *)
-		PROCEDURE AlikeX( ): ArrayXdBytes.Array;
+		PROCEDURE AlikeX*( ): ArrayXdBytes.Array;
 		VAR copy: HCube;
 		VAR copy: HCube;
 		BEGIN
 		BEGIN
 			NEW( copy, origin[0], len[0], origin[1], len[1], origin[2], len[2], origin[3], len[3] );  RETURN copy;
 			NEW( copy, origin[0], len[0], origin[1], len[1], origin[2], len[2], origin[3], len[3] );  RETURN copy;
 		END AlikeX;
 		END AlikeX;
 
 
-		PROCEDURE NewRangeX( neworigin, newlen: ArrayXdBytes.IndexArray;  copydata: BOOLEAN );
+		PROCEDURE NewRangeX*( neworigin, newlen: ArrayXdBytes.IndexArray;  copydata: BOOLEAN );
 		BEGIN
 		BEGIN
 			IF LEN( newlen ) # 4 THEN HALT( 1001 ) END;
 			IF LEN( newlen ) # 4 THEN HALT( 1001 ) END;
 			NewRangeX^( neworigin, newlen, copydata );
 			NewRangeX^( neworigin, newlen, copydata );
 		END NewRangeX;
 		END NewRangeX;
 
 
-		PROCEDURE ValidateCache;
+		PROCEDURE ValidateCache*;
 		BEGIN
 		BEGIN
 			ValidateCache^;
 			ValidateCache^;
 			IF dim # 4 THEN HALT( 100 ) END;
 			IF dim # 4 THEN HALT( 100 ) END;

+ 3 - 3
source/HCubeRat.Mod

@@ -21,19 +21,19 @@ TYPE
 		Get-: PROCEDURE {DELEGATE} ( x, y, z, t: Index ): Value;
 		Get-: PROCEDURE {DELEGATE} ( x, y, z, t: Index ): Value;
 
 
 		(** override *)
 		(** override *)
-		PROCEDURE AlikeX( ): ArrayXdBytes.Array;
+		PROCEDURE AlikeX*( ): ArrayXdBytes.Array;
 		VAR copy: HCube;
 		VAR copy: HCube;
 		BEGIN
 		BEGIN
 			NEW( copy, origin[0], len[0], origin[1], len[1], origin[2], len[2], origin[3], len[3] );  RETURN copy;
 			NEW( copy, origin[0], len[0], origin[1], len[1], origin[2], len[2], origin[3], len[3] );  RETURN copy;
 		END AlikeX;
 		END AlikeX;
 
 
-		PROCEDURE NewRangeX( neworigin, newlen: ArrayXdBytes.IndexArray;  copydata: BOOLEAN );
+		PROCEDURE NewRangeX*( neworigin, newlen: ArrayXdBytes.IndexArray;  copydata: BOOLEAN );
 		BEGIN
 		BEGIN
 			IF LEN( newlen ) # 4 THEN HALT( 1001 ) END;
 			IF LEN( newlen ) # 4 THEN HALT( 1001 ) END;
 			NewRangeX^( neworigin, newlen, copydata );
 			NewRangeX^( neworigin, newlen, copydata );
 		END NewRangeX;
 		END NewRangeX;
 
 
-		PROCEDURE ValidateCache;
+		PROCEDURE ValidateCache*;
 		BEGIN
 		BEGIN
 			ValidateCache^;
 			ValidateCache^;
 			IF dim # 4 THEN HALT( 100 ) END;
 			IF dim # 4 THEN HALT( 100 ) END;

+ 3 - 3
source/HCubeRe.Mod

@@ -21,19 +21,19 @@ TYPE
 		Get-: PROCEDURE {DELEGATE} ( x, y, z, t: Index ): Value;
 		Get-: PROCEDURE {DELEGATE} ( x, y, z, t: Index ): Value;
 
 
 		(** override *)
 		(** override *)
-		PROCEDURE AlikeX( ): ArrayXdBytes.Array;
+		PROCEDURE AlikeX*( ): ArrayXdBytes.Array;
 		VAR copy: HCube;
 		VAR copy: HCube;
 		BEGIN
 		BEGIN
 			NEW( copy, origin[0], len[0], origin[1], len[1], origin[2], len[2], origin[3], len[3] );  RETURN copy;
 			NEW( copy, origin[0], len[0], origin[1], len[1], origin[2], len[2], origin[3], len[3] );  RETURN copy;
 		END AlikeX;
 		END AlikeX;
 
 
-		PROCEDURE NewRangeX( neworigin, newlen: ArrayXdBytes.IndexArray;  copydata: BOOLEAN );
+		PROCEDURE NewRangeX*( neworigin, newlen: ArrayXdBytes.IndexArray;  copydata: BOOLEAN );
 		BEGIN
 		BEGIN
 			IF LEN( newlen ) # 4 THEN HALT( 1001 ) END;
 			IF LEN( newlen ) # 4 THEN HALT( 1001 ) END;
 			NewRangeX^( neworigin, newlen, copydata );
 			NewRangeX^( neworigin, newlen, copydata );
 		END NewRangeX;
 		END NewRangeX;
 
 
-		PROCEDURE ValidateCache;
+		PROCEDURE ValidateCache*;
 		BEGIN
 		BEGIN
 			ValidateCache^;
 			ValidateCache^;
 			IF dim # 4 THEN HALT( 100 ) END;
 			IF dim # 4 THEN HALT( 100 ) END;

+ 1 - 1
source/HTMLTransformer.Mod

@@ -1533,7 +1533,7 @@ TYPE
 			IF ~isSubtable THEN AlignCells(); END;
 			IF ~isSubtable THEN AlignCells(); END;
 		END New;
 		END New;
 
 
-		PROCEDURE DrawBackground(canvas : WMGraphics.Canvas);
+		PROCEDURE DrawBackground*(canvas : WMGraphics.Canvas);
 		VAR
 		VAR
 			h, w, color, i : LONGINT;
 			h, w, color, i : LONGINT;
 		BEGIN
 		BEGIN

+ 2 - 2
source/HotKeysCommands.Mod

@@ -58,12 +58,12 @@ TYPE
 			Close;
 			Close;
 		END HandleEscape;
 		END HandleEscape;
 
 
-		PROCEDURE FocusLost;
+		PROCEDURE FocusLost*;
 		BEGIN
 		BEGIN
 			Close;
 			Close;
 		END FocusLost;
 		END FocusLost;
 
 
-		PROCEDURE Close;
+		PROCEDURE Close*;
 		BEGIN
 		BEGIN
 			Close^; window := NIL;
 			Close^; window := NIL;
 		END Close;
 		END Close;

+ 7 - 7
source/I386Decoder.Mod

@@ -637,7 +637,7 @@ TYPE
 			ELSIF b = OpSize THEN opPrefix := TRUE END
 			ELSIF b = OpSize THEN opPrefix := TRUE END
 		END AddPrefixByte;
 		END AddPrefixByte;
 
 
-		PROCEDURE PrintOpcodeBytes(w : Streams.Writer);
+		PROCEDURE PrintOpcodeBytes*(w : Streams.Writer);
 		VAR
 		VAR
 			string : ARRAY 100 OF CHAR;
 			string : ARRAY 100 OF CHAR;
 			hexStr : ARRAY 3 OF CHAR;
 			hexStr : ARRAY 3 OF CHAR;
@@ -654,7 +654,7 @@ TYPE
 			END
 			END
 		END PrintOpcodeBytes;
 		END PrintOpcodeBytes;
 
 
-		PROCEDURE PrintInstruction(w : Streams.Writer);
+		PROCEDURE PrintInstruction*(w : Streams.Writer);
 		VAR
 		VAR
 			i : LONGINT;
 			i : LONGINT;
 			opStr : ARRAY 20 OF CHAR;
 			opStr : ARRAY 20 OF CHAR;
@@ -1152,7 +1152,7 @@ TYPE
 			w.String(opStr)
 			w.String(opStr)
 		END PrintInstruction;
 		END PrintInstruction;
 
 
-		PROCEDURE PrintArguments(w : Streams.Writer);
+		PROCEDURE PrintArguments*(w : Streams.Writer);
 		BEGIN
 		BEGIN
 			IF (argStructure >=0) & (arg1 = NIL) THEN w.String("{too little arguments}");RETURN
 			IF (argStructure >=0) & (arg1 = NIL) THEN w.String("{too little arguments}");RETURN
 			ELSIF (argStructure >= ArgRegReg) & (arg2=NIL) THEN w.String("{too little arguments}");RETURN
 			ELSIF (argStructure >= ArgRegReg) & (arg2=NIL) THEN w.String("{too little arguments}");RETURN
@@ -1185,7 +1185,7 @@ TYPE
 			END
 			END
 		END PrintArguments;
 		END PrintArguments;
 
 
-		PROCEDURE PrintVariables(w : Streams.Writer);
+		PROCEDURE PrintVariables*(w : Streams.Writer);
 		VAR
 		VAR
 			numPrints : LONGINT;
 			numPrints : LONGINT;
 
 
@@ -1227,7 +1227,7 @@ TYPE
 			END
 			END
 		END PrintVariables;
 		END PrintVariables;
 
 
-		PROCEDURE ToString () : Strings.String;
+		PROCEDURE ToString*() : Strings.String;
 		VAR
 		VAR
 			str : ARRAY 255 OF CHAR;
 			str : ARRAY 255 OF CHAR;
 			temp : ARRAY 10 OF CHAR;
 			temp : ARRAY 10 OF CHAR;
@@ -3072,7 +3072,7 @@ TYPE
 			END
 			END
 		END Escape;
 		END Escape;
 
 
-		PROCEDURE DecodeThis(opcode : Decoder.Opcode);
+		PROCEDURE DecodeThis*(opcode : Decoder.Opcode);
 		VAR
 		VAR
 			op : IA32Opcode;
 			op : IA32Opcode;
 		BEGIN
 		BEGIN
@@ -3294,7 +3294,7 @@ TYPE
 				(* end of WAIT hack *)
 				(* end of WAIT hack *)
 		END DecodeThis;
 		END DecodeThis;
 
 
-		PROCEDURE NewOpcode() :Decoder. Opcode;
+		PROCEDURE NewOpcode*() :Decoder. Opcode;
 		VAR
 		VAR
 			opcode : IA32Opcode;
 			opcode : IA32Opcode;
 		BEGIN
 		BEGIN

+ 13 - 13
source/IMAPGUI.Mod

@@ -86,13 +86,13 @@ TYPE
 			RETURN ret;
 			RETURN ret;
 		END CreateForm;
 		END CreateForm;
 
 
-		PROCEDURE Close;
+		PROCEDURE Close*;
 		BEGIN
 		BEGIN
 			Close^();
 			Close^();
 			DecCount();
 			DecCount();
 		END Close;
 		END Close;
 
 
-		PROCEDURE Handle(VAR x: WMMessages.Message);
+		PROCEDURE Handle*(VAR x: WMMessages.Message);
 		BEGIN
 		BEGIN
 			IF (x.msgType = WMMessages.MsgExt) & (x.ext # NIL) & (x.ext IS KillerMsg) THEN
 			IF (x.msgType = WMMessages.MsgExt) & (x.ext # NIL) & (x.ext IS KillerMsg) THEN
 					Close();
 					Close();
@@ -185,13 +185,13 @@ TYPE
 			RETURN ret;
 			RETURN ret;
 		END CreateForm;
 		END CreateForm;
 
 
-		PROCEDURE Close;
+		PROCEDURE Close*;
 		BEGIN
 		BEGIN
 			Close^();
 			Close^();
 			DecCount();
 			DecCount();
 		END Close;
 		END Close;
 
 
-		PROCEDURE Handle(VAR x: WMMessages.Message);
+		PROCEDURE Handle*(VAR x: WMMessages.Message);
 		BEGIN
 		BEGIN
 			IF (x.msgType = WMMessages.MsgExt) & (x.ext # NIL) & (x.ext IS KillerMsg) THEN
 			IF (x.msgType = WMMessages.MsgExt) & (x.ext # NIL) & (x.ext IS KillerMsg) THEN
 					Close();
 					Close();
@@ -419,13 +419,13 @@ TYPE
 			RETURN panel;
 			RETURN panel;
 		END CreateForm;
 		END CreateForm;
 
 
-		PROCEDURE Close;
+		PROCEDURE Close*;
 		BEGIN
 		BEGIN
 			Close^();
 			Close^();
 			DecCount();
 			DecCount();
 		END Close;
 		END Close;
 
 
-		PROCEDURE Handle(VAR x: WMMessages.Message);
+		PROCEDURE Handle*(VAR x: WMMessages.Message);
 		BEGIN
 		BEGIN
 			IF (x.msgType = WMMessages.MsgExt) & (x.ext # NIL) & (x.ext IS KillerMsg) THEN
 			IF (x.msgType = WMMessages.MsgExt) & (x.ext # NIL) & (x.ext IS KillerMsg) THEN
 					Close();
 					Close();
@@ -1042,13 +1042,13 @@ TYPE
 			RETURN panel;
 			RETURN panel;
 		END CreateForm;
 		END CreateForm;
 
 
-		PROCEDURE Close;
+		PROCEDURE Close*;
 		BEGIN
 		BEGIN
 			Close^();
 			Close^();
 			DecCount();
 			DecCount();
 		END Close;
 		END Close;
 
 
-		PROCEDURE Handle(VAR x: WMMessages.Message);
+		PROCEDURE Handle*(VAR x: WMMessages.Message);
 		BEGIN
 		BEGIN
 			IF (x.msgType = WMMessages.MsgExt) & (x.ext # NIL) & (x.ext IS KillerMsg) THEN
 			IF (x.msgType = WMMessages.MsgExt) & (x.ext # NIL) & (x.ext IS KillerMsg) THEN
 					Close();
 					Close();
@@ -1464,13 +1464,13 @@ TYPE
 			RETURN panel;
 			RETURN panel;
 		END CreateForm;
 		END CreateForm;
 
 
-		PROCEDURE Close;
+		PROCEDURE Close*;
 		BEGIN
 		BEGIN
 			Close^();
 			Close^();
 			DecCount();
 			DecCount();
 		END Close;
 		END Close;
 
 
-		PROCEDURE Handle(VAR x: WMMessages.Message);
+		PROCEDURE Handle*(VAR x: WMMessages.Message);
 		BEGIN
 		BEGIN
 			IF (x.msgType = WMMessages.MsgExt) & (x.ext # NIL) & (x.ext IS KillerMsg) THEN
 			IF (x.msgType = WMMessages.MsgExt) & (x.ext # NIL) & (x.ext IS KillerMsg) THEN
 					Close();
 					Close();
@@ -1570,7 +1570,7 @@ TYPE
 		END New;
 		END New;
 
 
 		(* Wird aufgerufen, wenn das Fenster seine Groesse aendert *)
 		(* Wird aufgerufen, wenn das Fenster seine Groesse aendert *)
-		PROCEDURE Resized(width, height : LONGINT);
+		PROCEDURE Resized*(width, height : LONGINT);
 		BEGIN
 		BEGIN
 			Resized^(width, height);
 			Resized^(width, height);
 			ResizeGrid;
 			ResizeGrid;
@@ -2407,7 +2407,7 @@ TYPE
 			NEW(pw, SELF);
 			NEW(pw, SELF);
 		END SetPreferences;
 		END SetPreferences;
 
 
-		PROCEDURE Handle(VAR x: WMMessages.Message);
+		PROCEDURE Handle*(VAR x: WMMessages.Message);
 		BEGIN
 		BEGIN
 			IF (x.msgType = WMMessages.MsgExt) & (x.ext # NIL) THEN
 			IF (x.msgType = WMMessages.MsgExt) & (x.ext # NIL) THEN
 				IF(x.ext IS KillerMsg) THEN
 				IF(x.ext IS KillerMsg) THEN
@@ -2422,7 +2422,7 @@ TYPE
 			END;
 			END;
 		END Handle;
 		END Handle;
 
 
-		PROCEDURE Close;
+		PROCEDURE Close*;
 		BEGIN
 		BEGIN
 			client.abort := TRUE;
 			client.abort := TRUE;
 			client.Close();
 			client.Close();

+ 2 - 2
source/ISO9660Files.Mod

@@ -38,7 +38,7 @@ MODULE ISO9660Files;	(** AUTHOR "?/be"; PURPOSE "ISO 9660 File System (ported fr
 				jolietLevel: LONGINT;
 				jolietLevel: LONGINT;
 
 
 			(** Open an existing file. The same file descriptor is returned if a file is opened multiple times.  End users use Files.Old instead. *)
 			(** Open an existing file. The same file descriptor is returned if a file is opened multiple times.  End users use Files.Old instead. *)
-			PROCEDURE Old0(name: ARRAY OF CHAR): Files.File;
+			PROCEDURE Old0*(name: ARRAY OF CHAR): Files.File;
 			VAR f: File; namebuf: Filename; dircl, dirpos, time, date, filecl, len: LONGINT; attr: SET; res: INTEGER;
 			VAR f: File; namebuf: Filename; dircl, dirpos, time, date, filecl, len: LONGINT; attr: SET; res: INTEGER;
 			BEGIN {EXCLUSIVE}
 			BEGIN {EXCLUSIVE}
 				res := 0; f := NIL;
 				res := 0; f := NIL;
@@ -57,7 +57,7 @@ MODULE ISO9660Files;	(** AUTHOR "?/be"; PURPOSE "ISO 9660 File System (ported fr
 			END Old0;
 			END Old0;
 
 
 			(** Enumerate canonical file names. mask may contain * wildcards.  For internal use only.  End users use Enumerator instead. *)
 			(** Enumerate canonical file names. mask may contain * wildcards.  For internal use only.  End users use Enumerator instead. *)
-			PROCEDURE Enumerate0(mask: ARRAY OF CHAR; flags: SET; enum: Files.Enumerator);
+			PROCEDURE Enumerate0*(mask: ARRAY OF CHAR; flags: SET; enum: Files.Enumerator);
 			VAR
 			VAR
 				fname, name, mmask, pname, fullname: Filename;
 				fname, name, mmask, pname, fullname: Filename;
 				f: Files.File; R: Files.Rider;
 				f: Files.File; R: Files.Rider;

+ 5 - 5
source/ISO9660Volumes.Mod

@@ -34,7 +34,7 @@ MODULE ISO9660Volumes;	(* AUTHOR "?/be"; PURPOSE "ISO 9660 volume (ported from N
 				RETURN 0
 				RETURN 0
 			END Available;
 			END Available;
 
 
-			PROCEDURE GetBlock(adr: LONGINT; VAR blk: ARRAY OF CHAR);
+			PROCEDURE GetBlock*(adr: LONGINT; VAR blk: ARRAY OF CHAR);
 			VAR res, i: LONGINT;
 			VAR res, i: LONGINT;
 			BEGIN {EXCLUSIVE}
 			BEGIN {EXCLUSIVE}
 				ASSERT(dev # NIL, 101);
 				ASSERT(dev # NIL, 101);
@@ -47,19 +47,19 @@ MODULE ISO9660Volumes;	(* AUTHOR "?/be"; PURPOSE "ISO 9660 volume (ported from N
 				ASSERT(res = 0, 102)
 				ASSERT(res = 0, 102)
 			END GetBlock;
 			END GetBlock;
 
 
-			PROCEDURE AllocBlock(hint: Files.Address; VAR adr: Files.Address);
+			PROCEDURE AllocBlock*(hint: Files.Address; VAR adr: Files.Address);
 			BEGIN HALT(301)
 			BEGIN HALT(301)
 			END AllocBlock;
 			END AllocBlock;
 
 
-			PROCEDURE FreeBlock(adr: Files.Address);
+			PROCEDURE FreeBlock*(adr: Files.Address);
 			BEGIN HALT(301)
 			BEGIN HALT(301)
 			END FreeBlock;
 			END FreeBlock;
 
 
-			PROCEDURE MarkBlock(adr: Files.Address);
+			PROCEDURE MarkBlock*(adr: Files.Address);
 			BEGIN HALT(301)
 			BEGIN HALT(301)
 			END MarkBlock;
 			END MarkBlock;
 
 
-			PROCEDURE Marked(adr: Files.Address): BOOLEAN;
+			PROCEDURE Marked*(adr: Files.Address): BOOLEAN;
 			BEGIN HALT(301)
 			BEGIN HALT(301)
 			END Marked;
 			END Marked;
 		END Volume;
 		END Volume;

+ 4 - 4
source/Inputs.Mod

@@ -214,13 +214,13 @@ TYPE
 	Broadcaster = OBJECT (Group)
 	Broadcaster = OBJECT (Group)
 		VAR sentinel: List;
 		VAR sentinel: List;
 
 
-		PROCEDURE Register(s: Sink);
+		PROCEDURE Register*(s: Sink);
 		VAR n: List;
 		VAR n: List;
 		BEGIN {EXCLUSIVE}
 		BEGIN {EXCLUSIVE}
 			NEW(n); n.s := s; n.next := sentinel.next; sentinel.next := n
 			NEW(n); n.s := s; n.next := sentinel.next; sentinel.next := n
 		END Register;
 		END Register;
 
 
-		PROCEDURE Unregister(s: Sink);
+		PROCEDURE Unregister*(s: Sink);
 		VAR n: List;
 		VAR n: List;
 		BEGIN {EXCLUSIVE}
 		BEGIN {EXCLUSIVE}
 			n := sentinel;
 			n := sentinel;
@@ -228,7 +228,7 @@ TYPE
 			IF n.next # NIL THEN n.next := n.next.next END
 			IF n.next # NIL THEN n.next := n.next.next END
 		END Unregister;
 		END Unregister;
 
 
-		PROCEDURE Handle(VAR msg: Message);
+		PROCEDURE Handle*(VAR msg: Message);
 		VAR n: List;
 		VAR n: List;
 		BEGIN {EXCLUSIVE}
 		BEGIN {EXCLUSIVE}
 			n := sentinel.next;
 			n := sentinel.next;
@@ -273,7 +273,7 @@ TYPE
 	MouseFixer = OBJECT (Sink)
 	MouseFixer = OBJECT (Sink)
 		VAR ctrl: BOOLEAN;
 		VAR ctrl: BOOLEAN;
 
 
-		PROCEDURE Handle(VAR m: Message);
+		PROCEDURE Handle*(VAR m: Message);
 		VAR new: BOOLEAN;
 		VAR new: BOOLEAN;
 		BEGIN {EXCLUSIVE}
 		BEGIN {EXCLUSIVE}
 			WITH m: KeyboardMsg DO
 			WITH m: KeyboardMsg DO

+ 1 - 1
source/JPEG2000DecoderCS.Mod

@@ -2151,7 +2151,7 @@ TYPE
 				Reads the next bit in the stream (i.e. the next bit in the buffer which contains the
 				Reads the next bit in the stream (i.e. the next bit in the buffer which contains the
 				most recently read "stream byte". Bit unstuffing is performed, where necessary.
 				most recently read "stream byte". Bit unstuffing is performed, where necessary.
 			*)
 			*)
-			PROCEDURE NextBit() : LONGINT;
+			PROCEDURE NextBit*() : LONGINT;
 				BEGIN
 				BEGIN
 					IF curBytePos =  0 THEN
 					IF curBytePos =  0 THEN
 
 

+ 1 - 1
source/MPEGVideoDecoder.Mod

@@ -87,7 +87,7 @@ TYPE
 			Draw^(canvas, w, h, 0)
 			Draw^(canvas, w, h, 0)
 		END Draw;
 		END Draw;
 
 
-		PROCEDURE Close;
+		PROCEDURE Close*;
 		BEGIN
 		BEGIN
 			Close^;
 			Close^;
 		END Close;
 		END Close;

+ 3 - 3
source/MainMenu.Mod

@@ -56,14 +56,14 @@ TYPE
 			manager.Add(0, view.height0 - GetHeight(), SELF, {WM.FlagNavigation, WM.FlagHidden});
 			manager.Add(0, view.height0 - GetHeight(), SELF, {WM.FlagNavigation, WM.FlagHidden});
 		END New;
 		END New;
 
 
-		PROCEDURE PointerMove(x, y : LONGINT; keys : SET);
+		PROCEDURE PointerMove*(x, y : LONGINT; keys : SET);
 		BEGIN
 		BEGIN
 			PointerMove^(x, y, keys);
 			PointerMove^(x, y, keys);
 			moveToFront := FALSE;
 			moveToFront := FALSE;
 			manager.ToFront(SELF);
 			manager.ToFront(SELF);
 		END PointerMove;
 		END PointerMove;
 
 
-		PROCEDURE PointerLeave;
+		PROCEDURE PointerLeave*;
 		BEGIN
 		BEGIN
 			PointerLeave^;
 			PointerLeave^;
 			moveToFront := TRUE;
 			moveToFront := TRUE;
@@ -202,7 +202,7 @@ TYPE
 			END
 			END
 		END TabSelected;
 		END TabSelected;
 
 
-		PROCEDURE Close;
+		PROCEDURE Close*;
 		BEGIN
 		BEGIN
 			Close^;
 			Close^;
 			window := NIL
 			window := NIL

+ 2 - 2
source/MathErf.Mod

@@ -24,7 +24,7 @@ VAR
 TYPE
 TYPE
 	ErfP = OBJECT (MathReSeries.Coefficient)
 	ErfP = OBJECT (MathReSeries.Coefficient)
 
 
-		PROCEDURE Evaluate;
+		PROCEDURE Evaluate*;
 		VAR m: NbrInt.Integer;
 		VAR m: NbrInt.Integer;
 		BEGIN
 		BEGIN
 			IF n = 0 THEN coef := 0
 			IF n = 0 THEN coef := 0
@@ -40,7 +40,7 @@ TYPE
 
 
 	ErfQ = OBJECT (MathReSeries.Coefficient)
 	ErfQ = OBJECT (MathReSeries.Coefficient)
 
 
-		PROCEDURE Evaluate;
+		PROCEDURE Evaluate*;
 		BEGIN
 		BEGIN
 			IF n = 0 THEN coef := 0
 			IF n = 0 THEN coef := 0
 			ELSIF n = 1 THEN coef := 1
 			ELSIF n = 1 THEN coef := 1

+ 3 - 3
source/MathMitLef.Mod

@@ -17,7 +17,7 @@ TYPE
 	MitLef = OBJECT (MathCplxSeries.Coefficient)
 	MitLef = OBJECT (MathCplxSeries.Coefficient)
 		(* Series solution for the Mittag-Leffler function.  Only apply this as a solution around 0. *)
 		(* Series solution for the Mittag-Leffler function.  Only apply this as a solution around 0. *)
 
 
-		PROCEDURE Evaluate;
+		PROCEDURE Evaluate*;
 		VAR x: NbrRe.Real;
 		VAR x: NbrRe.Real;
 		BEGIN
 		BEGIN
 			x := storeBeta + n * storeAlpha;
 			x := storeBeta + n * storeAlpha;
@@ -30,7 +30,7 @@ TYPE
 	AsympMitLef = OBJECT (MathCplxSeries.Coefficient)
 	AsympMitLef = OBJECT (MathCplxSeries.Coefficient)
 		(* Series solution for the Mittag-Leffler function.  Only apply this as a solution for large x. *)
 		(* Series solution for the Mittag-Leffler function.  Only apply this as a solution for large x. *)
 
 
-		PROCEDURE Evaluate;
+		PROCEDURE Evaluate*;
 		VAR x: NbrRe.Real;
 		VAR x: NbrRe.Real;
 		BEGIN
 		BEGIN
 			x := storeBeta - n * storeAlpha;
 			x := storeBeta - n * storeAlpha;
@@ -43,7 +43,7 @@ TYPE
 	DMitLef = OBJECT (MathCplxSeries.Coefficient)
 	DMitLef = OBJECT (MathCplxSeries.Coefficient)
 		(* Series solution for the derivative of the Mittag-Leffler function.  Only apply this as a solution around 0. *)
 		(* Series solution for the derivative of the Mittag-Leffler function.  Only apply this as a solution around 0. *)
 
 
-		PROCEDURE Evaluate;
+		PROCEDURE Evaluate*;
 		VAR x: NbrRe.Real;
 		VAR x: NbrRe.Real;
 		BEGIN
 		BEGIN
 			x := (1 + n) * storeAlpha + storeBeta;
 			x := (1 + n) * storeAlpha + storeBeta;

+ 7 - 7
source/MathRe.Mod

@@ -12,7 +12,7 @@ VAR
 TYPE
 TYPE
 	ArcSinA = OBJECT (MathReSeries.Coefficient)
 	ArcSinA = OBJECT (MathReSeries.Coefficient)
 
 
-		PROCEDURE Evaluate;
+		PROCEDURE Evaluate*;
 		VAR i, k, index: NbrInt.Integer;  den, num: NbrRe.Real;
 		VAR i, k, index: NbrInt.Integer;  den, num: NbrRe.Real;
 		BEGIN {EXCLUSIVE}
 		BEGIN {EXCLUSIVE}
 			IF NbrInt.Odd( n ) THEN
 			IF NbrInt.Odd( n ) THEN
@@ -28,7 +28,7 @@ TYPE
 
 
 	ArcSinhA = OBJECT (MathReSeries.Coefficient)
 	ArcSinhA = OBJECT (MathReSeries.Coefficient)
 
 
-		PROCEDURE Evaluate;
+		PROCEDURE Evaluate*;
 		VAR index: NbrInt.Integer;
 		VAR index: NbrInt.Integer;
 		BEGIN {EXCLUSIVE}
 		BEGIN {EXCLUSIVE}
 			IF n = 0 THEN coef := 0
 			IF n = 0 THEN coef := 0
@@ -44,7 +44,7 @@ TYPE
 
 
 	ArcSinhB = OBJECT (MathReSeries.Coefficient)
 	ArcSinhB = OBJECT (MathReSeries.Coefficient)
 
 
-		PROCEDURE Evaluate;
+		PROCEDURE Evaluate*;
 		BEGIN {EXCLUSIVE}
 		BEGIN {EXCLUSIVE}
 			IF n = 0 THEN coef := 0 ELSE coef := (2 * n - 1) END
 			IF n = 0 THEN coef := 0 ELSE coef := (2 * n - 1) END
 		END Evaluate;
 		END Evaluate;
@@ -53,7 +53,7 @@ TYPE
 
 
 	ArcTanhA = OBJECT (MathReSeries.Coefficient)
 	ArcTanhA = OBJECT (MathReSeries.Coefficient)
 
 
-		PROCEDURE Evaluate;
+		PROCEDURE Evaluate*;
 		VAR index: NbrInt.Integer;
 		VAR index: NbrInt.Integer;
 		BEGIN {EXCLUSIVE}
 		BEGIN {EXCLUSIVE}
 			IF n = 0 THEN coef := 0
 			IF n = 0 THEN coef := 0
@@ -67,7 +67,7 @@ TYPE
 
 
 	ArcTanhB = OBJECT (MathReSeries.Coefficient)
 	ArcTanhB = OBJECT (MathReSeries.Coefficient)
 
 
-		PROCEDURE Evaluate;
+		PROCEDURE Evaluate*;
 		BEGIN {EXCLUSIVE}
 		BEGIN {EXCLUSIVE}
 			IF n = 0 THEN coef := 0 ELSE coef := (2 * n - 1) END
 			IF n = 0 THEN coef := 0 ELSE coef := (2 * n - 1) END
 		END Evaluate;
 		END Evaluate;
@@ -76,7 +76,7 @@ TYPE
 
 
 	TanA = OBJECT (MathReSeries.Coefficient)
 	TanA = OBJECT (MathReSeries.Coefficient)
 
 
-		PROCEDURE Evaluate;
+		PROCEDURE Evaluate*;
 		BEGIN {EXCLUSIVE}
 		BEGIN {EXCLUSIVE}
 			IF n = 0 THEN coef := 0
 			IF n = 0 THEN coef := 0
 			ELSIF n = 1 THEN coef := 1
 			ELSIF n = 1 THEN coef := 1
@@ -89,7 +89,7 @@ TYPE
 
 
 	TanB = OBJECT (MathReSeries.Coefficient)
 	TanB = OBJECT (MathReSeries.Coefficient)
 
 
-		PROCEDURE Evaluate;
+		PROCEDURE Evaluate*;
 		BEGIN {EXCLUSIVE}
 		BEGIN {EXCLUSIVE}
 			IF n = 0 THEN coef := 0 ELSE coef := (2 * n - 1) END
 			IF n = 0 THEN coef := 0 ELSE coef := (2 * n - 1) END
 		END Evaluate;
 		END Evaluate;

+ 4 - 4
source/MediaPlayer.Mod

@@ -206,7 +206,7 @@ TYPE
 			Draw^(canvas, w, h, 0);
 			Draw^(canvas, w, h, 0);
 		END Draw;
 		END Draw;
 
 
-		PROCEDURE Close;
+		PROCEDURE Close*;
 		BEGIN
 		BEGIN
 			player.Close;
 			player.Close;
 			alive := FALSE; IF timer # NIL THEN timer.Wakeup; END;
 			alive := FALSE; IF timer # NIL THEN timer.Wakeup; END;
@@ -215,7 +215,7 @@ TYPE
 		END Close;
 		END Close;
 
 
 		(* Key Handler *)
 		(* Key Handler *)
-		PROCEDURE KeyEvent(ucs : LONGINT; flags : SET; keysym : LONGINT);
+		PROCEDURE KeyEvent*(ucs : LONGINT; flags : SET; keysym : LONGINT);
 		BEGIN
 		BEGIN
 			IF extKeyEventHandler # NIL THEN extKeyEventHandler(ucs, flags, keysym); END;
 			IF extKeyEventHandler # NIL THEN extKeyEventHandler(ucs, flags, keysym); END;
 			IF keysym = 0FF50H THEN (* Cursor Home *)
 			IF keysym = 0FF50H THEN (* Cursor Home *)
@@ -255,7 +255,7 @@ TYPE
 		END ShowFrame;
 		END ShowFrame;
 
 
 		(* Make pointer visible when it is moved *)
 		(* Make pointer visible when it is moved *)
-		PROCEDURE PointerMove(x, y : LONGINT; keys : SET);
+		PROCEDURE PointerMove*(x, y : LONGINT; keys : SET);
 		BEGIN
 		BEGIN
 			IF PointerInvisibleAfter > 0 THEN
 			IF PointerInvisibleAfter > 0 THEN
 				lastTimestamp := Kernel.GetTicks();
 				lastTimestamp := Kernel.GetTicks();
@@ -263,7 +263,7 @@ TYPE
 			END;
 			END;
 		END PointerMove;
 		END PointerMove;
 
 
-		PROCEDURE PointerDown(x, y : LONGINT; keys : SET);
+		PROCEDURE PointerDown*(x, y : LONGINT; keys : SET);
 		BEGIN
 		BEGIN
 			IF PointerInvisibleAfter > 0 THEN
 			IF PointerInvisibleAfter > 0 THEN
 				lastTimestamp := Kernel.GetTicks();
 				lastTimestamp := Kernel.GetTicks();

+ 3 - 3
source/MenuEdit.Mod

@@ -64,7 +64,7 @@ TYPE
 			SetTitle(Strings.NewString("Menu Edit"));
 			SetTitle(Strings.NewString("Menu Edit"));
 		END New;
 		END New;
 
 
-		PROCEDURE PointerDown(x, y : LONGINT; keys : SET);
+		PROCEDURE PointerDown*(x, y : LONGINT; keys : SET);
 		VAR button : WMStandardComponents.Button;
 		VAR button : WMStandardComponents.Button;
 		BEGIN
 		BEGIN
 			IF 1 IN keys THEN
 			IF 1 IN keys THEN
@@ -214,13 +214,13 @@ TYPE
 		END HandlePointerMove;
 		END HandlePointerMove;
 
 
 
 
-		PROCEDURE Close;
+		PROCEDURE Close*;
 		BEGIN
 		BEGIN
 			Close^;
 			Close^;
 			DecCount
 			DecCount
 		END Close;
 		END Close;
 
 
-		PROCEDURE Handle(VAR x : WMMessages.Message);
+		PROCEDURE Handle*(VAR x : WMMessages.Message);
 		BEGIN
 		BEGIN
 			IF (x.msgType = WMMessages.MsgExt) & (x.ext # NIL) & (x.ext IS KillerMsg) THEN Close
 			IF (x.msgType = WMMessages.MsgExt) & (x.ext # NIL) & (x.ext IS KillerMsg) THEN Close
 			ELSE Handle^(x)
 			ELSE Handle^(x)

+ 4 - 4
source/Models.Mod

@@ -648,7 +648,7 @@ TYPE
 	VAR
 	VAR
 		value : Texts.Text; (* {value # NIL} *)
 		value : Texts.Text; (* {value # NIL} *)
 
 
-		PROCEDURE &Init;
+		PROCEDURE &Init*;
 		BEGIN
 		BEGIN
 			Init^;
 			Init^;
 			SetNameAsString(StrText);
 			SetNameAsString(StrText);
@@ -671,12 +671,12 @@ TYPE
 			RETURN value.HasReadLock();
 			RETURN value.HasReadLock();
 		END HasReadLock;
 		END HasReadLock;
 
 
-		PROCEDURE AcquireWrite;
+		PROCEDURE AcquireWrite*;
 		BEGIN
 		BEGIN
 			value.AcquireWrite;
 			value.AcquireWrite;
 		END AcquireWrite;
 		END AcquireWrite;
 
 
-		PROCEDURE ReleaseWrite;
+		PROCEDURE ReleaseWrite*;
 		BEGIN
 		BEGIN
 			value.ReleaseWrite;
 			value.ReleaseWrite;
 			onChanged.Call(SELF); (*? TBD only call when text has changed *)
 			onChanged.Call(SELF); (*? TBD only call when text has changed *)
@@ -764,7 +764,7 @@ TYPE
 
 
 	Container* = OBJECT(Model)
 	Container* = OBJECT(Model)
 
 
-		PROCEDURE &Init;
+		PROCEDURE &Init*;
 		BEGIN
 		BEGIN
 			Init^;
 			Init^;
 			SetNameAsString(StrContainer);
 			SetNameAsString(StrContainer);

+ 1 - 1
source/ModuleTrees.Mod

@@ -138,7 +138,7 @@ TYPE
 			toolbar.AddContent(publicBtn);
 			toolbar.AddContent(publicBtn);
 		END Init;
 		END Init;
 
 
-		PROCEDURE PropertyChanged(sender, data : ANY);
+		PROCEDURE PropertyChanged*(sender, data : ANY);
 		BEGIN
 		BEGIN
 			IF (data = showTypeHierarchy) THEN
 			IF (data = showTypeHierarchy) THEN
 				RefreshHandler(NIL, NIL);
 				RefreshHandler(NIL, NIL);

+ 3 - 3
source/MtxCplx.Mod

@@ -30,19 +30,19 @@ TYPE
 		Get-: PROCEDURE {DELEGATE} ( x, y: Index ): Value;
 		Get-: PROCEDURE {DELEGATE} ( x, y: Index ): Value;
 
 
 		(* override *)
 		(* override *)
-		PROCEDURE AlikeX( ): ArrayXdBytes.Array;
+		PROCEDURE AlikeX*( ): ArrayXdBytes.Array;
 		VAR copy: Matrix;
 		VAR copy: Matrix;
 		BEGIN
 		BEGIN
 			NEW( copy, origin[0], len[0], origin[1], len[1] );  RETURN copy;
 			NEW( copy, origin[0], len[0], origin[1], len[1] );  RETURN copy;
 		END AlikeX;
 		END AlikeX;
 
 
-		PROCEDURE NewRangeX( neworigin, newlen: ArrayXdBytes.IndexArray;  copydata: BOOLEAN );
+		PROCEDURE NewRangeX*( neworigin, newlen: ArrayXdBytes.IndexArray;  copydata: BOOLEAN );
 		BEGIN
 		BEGIN
 			IF LEN( newlen ) # 2 THEN HALT( 1001 ) END;
 			IF LEN( newlen ) # 2 THEN HALT( 1001 ) END;
 			NewRangeX^( neworigin, newlen, copydata );
 			NewRangeX^( neworigin, newlen, copydata );
 		END NewRangeX;
 		END NewRangeX;
 
 
-		PROCEDURE ValidateCache;
+		PROCEDURE ValidateCache*;
 		BEGIN
 		BEGIN
 			ValidateCache^;
 			ValidateCache^;
 			IF dim # 2 THEN HALT( 100 ) END;
 			IF dim # 2 THEN HALT( 100 ) END;

+ 3 - 3
source/MtxInt.Mod

@@ -28,19 +28,19 @@ TYPE
 		Get-: PROCEDURE {DELEGATE} ( x, y: Index ): Value;
 		Get-: PROCEDURE {DELEGATE} ( x, y: Index ): Value;
 
 
 		(* override *)
 		(* override *)
-		PROCEDURE AlikeX( ): ArrayXdBytes.Array;
+		PROCEDURE AlikeX*( ): ArrayXdBytes.Array;
 		VAR copy: Matrix;
 		VAR copy: Matrix;
 		BEGIN
 		BEGIN
 			NEW( copy, origin[0], len[0], origin[1], len[1] );  RETURN copy;
 			NEW( copy, origin[0], len[0], origin[1], len[1] );  RETURN copy;
 		END AlikeX;
 		END AlikeX;
 
 
-		PROCEDURE NewRangeX( neworigin, newlen: ArrayXdBytes.IndexArray;  copydata: BOOLEAN );
+		PROCEDURE NewRangeX*( neworigin, newlen: ArrayXdBytes.IndexArray;  copydata: BOOLEAN );
 		BEGIN
 		BEGIN
 			IF LEN( newlen ) # 2 THEN HALT( 1001 ) END;
 			IF LEN( newlen ) # 2 THEN HALT( 1001 ) END;
 			NewRangeX^( neworigin, newlen, copydata );
 			NewRangeX^( neworigin, newlen, copydata );
 		END NewRangeX;
 		END NewRangeX;
 
 
-		PROCEDURE ValidateCache;
+		PROCEDURE ValidateCache*;
 		BEGIN
 		BEGIN
 			ValidateCache^;
 			ValidateCache^;
 			IF dim # 2 THEN HALT( 100 ) END;
 			IF dim # 2 THEN HALT( 100 ) END;

+ 3 - 3
source/MtxRat.Mod

@@ -29,19 +29,19 @@ TYPE
 		Get-: PROCEDURE {DELEGATE} ( x, y: Index ): Value;
 		Get-: PROCEDURE {DELEGATE} ( x, y: Index ): Value;
 
 
 		(* override *)
 		(* override *)
-		PROCEDURE AlikeX( ): ArrayXdBytes.Array;
+		PROCEDURE AlikeX*( ): ArrayXdBytes.Array;
 		VAR copy: Matrix;
 		VAR copy: Matrix;
 		BEGIN
 		BEGIN
 			NEW( copy, origin[0], len[0], origin[1], len[1] );  RETURN copy;
 			NEW( copy, origin[0], len[0], origin[1], len[1] );  RETURN copy;
 		END AlikeX;
 		END AlikeX;
 
 
-		PROCEDURE NewRangeX( neworigin, newlen: ArrayXdBytes.IndexArray;  copydata: BOOLEAN );
+		PROCEDURE NewRangeX*( neworigin, newlen: ArrayXdBytes.IndexArray;  copydata: BOOLEAN );
 		BEGIN
 		BEGIN
 			IF LEN( newlen ) # 2 THEN HALT( 1001 ) END;
 			IF LEN( newlen ) # 2 THEN HALT( 1001 ) END;
 			NewRangeX^( neworigin, newlen, copydata );
 			NewRangeX^( neworigin, newlen, copydata );
 		END NewRangeX;
 		END NewRangeX;
 
 
-		PROCEDURE ValidateCache;
+		PROCEDURE ValidateCache*;
 		BEGIN
 		BEGIN
 			ValidateCache^;
 			ValidateCache^;
 			IF dim # 2 THEN HALT( 100 ) END;
 			IF dim # 2 THEN HALT( 100 ) END;

+ 3 - 3
source/MtxRe.Mod

@@ -28,19 +28,19 @@ TYPE
 		Get-: PROCEDURE {DELEGATE} ( x, y: Index ): Value;
 		Get-: PROCEDURE {DELEGATE} ( x, y: Index ): Value;
 
 
 		(* override *)
 		(* override *)
-		PROCEDURE AlikeX( ): ArrayXdBytes.Array;
+		PROCEDURE AlikeX*( ): ArrayXdBytes.Array;
 		VAR copy: Matrix;
 		VAR copy: Matrix;
 		BEGIN
 		BEGIN
 			NEW( copy, origin[0], len[0], origin[1], len[1] );  RETURN copy;
 			NEW( copy, origin[0], len[0], origin[1], len[1] );  RETURN copy;
 		END AlikeX;
 		END AlikeX;
 
 
-		PROCEDURE NewRangeX( neworigin, newlen: ArrayXdBytes.IndexArray;  copydata: BOOLEAN );
+		PROCEDURE NewRangeX*( neworigin, newlen: ArrayXdBytes.IndexArray;  copydata: BOOLEAN );
 		BEGIN
 		BEGIN
 			IF LEN( newlen ) # 2 THEN HALT( 1001 ) END;
 			IF LEN( newlen ) # 2 THEN HALT( 1001 ) END;
 			NewRangeX^( neworigin, newlen, copydata );
 			NewRangeX^( neworigin, newlen, copydata );
 		END NewRangeX;
 		END NewRangeX;
 
 
-		PROCEDURE ValidateCache;
+		PROCEDURE ValidateCache*;
 		BEGIN
 		BEGIN
 			ValidateCache^;
 			ValidateCache^;
 			IF dim # 2 THEN HALT( 100 ) END;
 			IF dim # 2 THEN HALT( 100 ) END;

+ 1 - 1
source/MultiLogger.Mod

@@ -31,7 +31,7 @@ TYPE
 			open := TRUE
 			open := TRUE
 		END New;
 		END New;
 
 
-		PROCEDURE Close;
+		PROCEDURE Close*;
 		BEGIN
 		BEGIN
 			open := FALSE;
 			open := FALSE;
 			Close^
 			Close^

+ 2 - 2
source/Notepad.Mod

@@ -36,13 +36,13 @@ TYPE
 			END;
 			END;
 		END New;
 		END New;
 
 
-		PROCEDURE Close;
+		PROCEDURE Close*;
 		BEGIN
 		BEGIN
 			Close^;
 			Close^;
 			DecCount
 			DecCount
 		END Close;
 		END Close;
 
 
-		PROCEDURE Handle(VAR x : WMMessages.Message);
+		PROCEDURE Handle*(VAR x : WMMessages.Message);
 		VAR data : XML.Element;
 		VAR data : XML.Element;
 		BEGIN
 		BEGIN
 			IF (x.msgType = WMMessages.MsgExt) & (x.ext # NIL) THEN
 			IF (x.msgType = WMMessages.MsgExt) & (x.ext # NIL) THEN

+ 1 - 1
source/OGGVorbisPlayer.Mod

@@ -1855,7 +1855,7 @@ TYPE
 			vendorString*: ARRAY MaxVendorLength OF CHAR;
 			vendorString*: ARRAY MaxVendorLength OF CHAR;
 			(* other comment fields are already defined in OGGUtilities.List *)
 			(* other comment fields are already defined in OGGUtilities.List *)
 
 
-		PROCEDURE Print;
+		PROCEDURE Print*;
 		VAR cur: CommentListElement;
 		VAR cur: CommentListElement;
 		BEGIN
 		BEGIN
 			IF cur = NIL THEN
 			IF cur = NIL THEN

二進制
source/Oberon.FileDisks.Mod


二進制
source/Oberon.ants3D.Mod


二進制
source/Oberon.vyRanSupr.Mod


+ 12 - 12
source/OberonDisplay.Mod

@@ -39,7 +39,7 @@ TYPE
 		fixMM : BOOLEAN;	(* Value TRUE denotes the presence of a 2-button mouse, Ctrl-key acts then as middle button. *)
 		fixMM : BOOLEAN;	(* Value TRUE denotes the presence of a 2-button mouse, Ctrl-key acts then as middle button. *)
 		lastCtrl : BOOLEAN;	(* Value TRUE denotes Ctrl-key pressed. *)
 		lastCtrl : BOOLEAN;	(* Value TRUE denotes Ctrl-key pressed. *)
 
 
-		PROCEDURE IsHit(x, y  : LONGINT) : BOOLEAN;
+		PROCEDURE IsHit*(x, y  : LONGINT) : BOOLEAN;
 		BEGIN RETURN TRUE;
 		BEGIN RETURN TRUE;
 		END IsHit;
 		END IsHit;
 
 
@@ -55,14 +55,14 @@ TYPE
 			y := SHORT(curY)
 			y := SHORT(curY)
 		END Mouse;
 		END Mouse;
 
 
-		PROCEDURE PointerMove(x, y : LONGINT; keys :SET);
+		PROCEDURE PointerMove*(x, y : LONGINT; keys :SET);
 		BEGIN {EXCLUSIVE}
 		BEGIN {EXCLUSIVE}
 			curX := x; curY := y; curKeys := curKeys * {30, 31} + keys;
 			curX := x; curY := y; curKeys := curKeys * {30, 31} + keys;
 			IF fixMM &lastCtrl THEN INCL(curKeys, 1) END;
 			IF fixMM &lastCtrl THEN INCL(curKeys, 1) END;
 			IF input # NIL THEN input.timer.Wakeup END	(* have to check, because upcalls to us can start immediately *)
 			IF input # NIL THEN input.timer.Wakeup END	(* have to check, because upcalls to us can start immediately *)
 		END PointerMove;
 		END PointerMove;
 
 
-		PROCEDURE WheelMove(dz : LONGINT); (*fof*)
+		PROCEDURE WheelMove*(dz : LONGINT); (*fof*)
 		BEGIN
 		BEGIN
 			IF dz > 0 THEN
 			IF dz > 0 THEN
 				INCL(curKeys, 30);
 				INCL(curKeys, 30);
@@ -72,7 +72,7 @@ TYPE
 			IF input # NIL THEN input.timer.Wakeup END	(* have to check, because upcalls to us can start immediately *)
 			IF input # NIL THEN input.timer.Wakeup END	(* have to check, because upcalls to us can start immediately *)
 		END WheelMove;
 		END WheelMove;
 
 
-		PROCEDURE PointerUp(x, y : LONGINT; keys : SET);
+		PROCEDURE PointerUp*(x, y : LONGINT; keys : SET);
 		BEGIN {EXCLUSIVE}
 		BEGIN {EXCLUSIVE}
 			curX := x; curY := y; curKeys := keys;
 			curX := x; curY := y; curKeys := keys;
 			IF input # NIL THEN input.timer.Wakeup END
 			IF input # NIL THEN input.timer.Wakeup END
@@ -98,12 +98,12 @@ TYPE
 			END
 			END
 		END InsertKey;
 		END InsertKey;
 
 
-		PROCEDURE Close;
+		PROCEDURE Close*;
 		BEGIN {EXCLUSIVE}
 		BEGIN {EXCLUSIVE}
 			InsertKey(0FFX, 0, {})
 			InsertKey(0FFX, 0, {})
 		END Close;
 		END Close;
 
 
-		PROCEDURE KeyEvent(ucs : LONGINT; flags : SET; keysym : LONGINT);
+		PROCEDURE KeyEvent*(ucs : LONGINT; flags : SET; keysym : LONGINT);
 		BEGIN {EXCLUSIVE}
 		BEGIN {EXCLUSIVE}
 			IF fixMM & ((flags * Inputs.Ctrl # {}) # lastCtrl)  THEN
 			IF fixMM & ((flags * Inputs.Ctrl # {}) # lastCtrl)  THEN
 				lastCtrl := flags * Inputs.Ctrl # {};
 				lastCtrl := flags * Inputs.Ctrl # {};
@@ -139,22 +139,22 @@ TYPE
 	OberonInput = OBJECT (Inputs.OberonInput)
 	OberonInput = OBJECT (Inputs.OberonInput)
 		VAR window : OberonWindow;
 		VAR window : OberonWindow;
 
 
-		PROCEDURE Mouse(VAR x, y : INTEGER; VAR keys : SET);
+		PROCEDURE Mouse*(VAR x, y : INTEGER; VAR keys : SET);
 		BEGIN
 		BEGIN
 			window.Mouse(x, y, keys)
 			window.Mouse(x, y, keys)
 		END Mouse;
 		END Mouse;
 
 
-		PROCEDURE Read(VAR ch : CHAR; VAR b : BOOLEAN);
+		PROCEDURE Read*(VAR ch : CHAR; VAR b : BOOLEAN);
 		BEGIN
 		BEGIN
 			window.Read(ch, b)
 			window.Read(ch, b)
 		END Read;
 		END Read;
 
 
-		PROCEDURE Available(VAR num : INTEGER; VAR b : BOOLEAN);
+		PROCEDURE Available*(VAR num : INTEGER; VAR b : BOOLEAN);
 		BEGIN
 		BEGIN
 			window.Available(num, b)
 			window.Available(num, b)
 		END Available;
 		END Available;
 
 
-		PROCEDURE KeyState(VAR k : SET);
+		PROCEDURE KeyState*(VAR k : SET);
 		BEGIN
 		BEGIN
 			window.KeyState(k)
 			window.KeyState(k)
 		END KeyState;
 		END KeyState;
@@ -187,7 +187,7 @@ TYPE
 			END
 			END
 		END LocalAddDirty;
 		END LocalAddDirty;
 
 
-		PROCEDURE Update;
+		PROCEDURE Update*;
 		BEGIN
 		BEGIN
 			IF Cache & (ml # MAX(LONGINT)) THEN
 			IF Cache & (ml # MAX(LONGINT)) THEN
 				disp.Invalidate(WMRectangles.MakeRect(ml, mt, mr, mb));	(* updated dirty rectangle *)
 				disp.Invalidate(WMRectangles.MakeRect(ml, mt, mr, mb));	(* updated dirty rectangle *)
@@ -363,7 +363,7 @@ TYPE
 			ASSERT(res = 0)
 			ASSERT(res = 0)
 		END Init;
 		END Init;
 
 
-		PROCEDURE Finalize;
+		PROCEDURE Finalize*;
 		BEGIN
 		BEGIN
 			IF disp = NIL THEN RETURN END;
 			IF disp = NIL THEN RETURN END;
 			Inputs.oberonInput.Remove(inp);	(* Unregister virtual input driver *)
 			Inputs.oberonInput.Remove(inp);	(* Unregister virtual input driver *)

+ 19 - 19
source/OberonFS.Mod

@@ -517,7 +517,7 @@ TYPE
 	FileSystem = OBJECT (Files.FileSystem)	(* our file system type *)
 	FileSystem = OBJECT (Files.FileSystem)	(* our file system type *)
 		VAR dir: Directory;
 		VAR dir: Directory;
 
 
-		PROCEDURE New0(name: ARRAY OF CHAR): Files.File;
+		PROCEDURE New0*(name: ARRAY OF CHAR): Files.File;
 		VAR i, res: LONGINT; f: File; buf: Buffer; head: FileHd; namebuf: FileName;
 		VAR i, res: LONGINT; f: File; buf: Buffer; head: FileHd; namebuf: FileName;
 		BEGIN {EXCLUSIVE}
 		BEGIN {EXCLUSIVE}
 			f := NIL; Check(name, namebuf, res);
 			f := NIL; Check(name, namebuf, res);
@@ -537,7 +537,7 @@ TYPE
 			RETURN f
 			RETURN f
 		END New0;
 		END New0;
 
 
-		PROCEDURE Old0(name: ARRAY OF CHAR): Files.File;
+		PROCEDURE Old0*(name: ARRAY OF CHAR): Files.File;
 		VAR
 		VAR
 			i, k, res: LONGINT; f: File; header: DiskAdr; buf: Buffer; head: FileHd;
 			i, k, res: LONGINT; f: File; header: DiskAdr; buf: Buffer; head: FileHd;
 			namebuf: FileName; inxpg: Index;
 			namebuf: FileName; inxpg: Index;
@@ -570,7 +570,7 @@ TYPE
 			RETURN f
 			RETURN f
 		END Old0;
 		END Old0;
 
 
-		PROCEDURE Delete0(name: ARRAY OF CHAR; VAR key, res: LONGINT);
+		PROCEDURE Delete0*(name: ARRAY OF CHAR; VAR key, res: LONGINT);
 		VAR adr: DiskAdr; namebuf: FileName; head: FileHeader;
 		VAR adr: DiskAdr; namebuf: FileName; head: FileHeader;
 		BEGIN {EXCLUSIVE}
 		BEGIN {EXCLUSIVE}
 			Check(name, namebuf, res);
 			Check(name, namebuf, res);
@@ -589,7 +589,7 @@ TYPE
 			END
 			END
 		END Delete0;
 		END Delete0;
 
 
-		PROCEDURE Rename0(old, new: ARRAY OF CHAR; f: Files.File; VAR res: LONGINT);
+		PROCEDURE Rename0*(old, new: ARRAY OF CHAR; f: Files.File; VAR res: LONGINT);
 		VAR adr: DiskAdr; oldbuf, newbuf: FileName;  head: FileHeader;
 		VAR adr: DiskAdr; oldbuf, newbuf: FileName;  head: FileHeader;
 		BEGIN {EXCLUSIVE}
 		BEGIN {EXCLUSIVE}
 			Check(old, oldbuf, res);
 			Check(old, oldbuf, res);
@@ -612,13 +612,13 @@ TYPE
 			END
 			END
 		END Rename0;
 		END Rename0;
 
 
-		PROCEDURE Enumerate0(mask: ARRAY OF CHAR; flags: SET; enum: Files.Enumerator);
+		PROCEDURE Enumerate0*(mask: ARRAY OF CHAR; flags: SET; enum: Files.Enumerator);
 		VAR b: BOOLEAN; fh: FileHeader; fn: ARRAY Files.PrefixLength+FnLength OF CHAR;
 		VAR b: BOOLEAN; fh: FileHeader; fn: ARRAY Files.PrefixLength+FnLength OF CHAR;
 		BEGIN {EXCLUSIVE}
 		BEGIN {EXCLUSIVE}
 			b := TRUE; enumerate(SELF, mask, DirRootAdr, flags, enum, b, fh, fn)
 			b := TRUE; enumerate(SELF, mask, DirRootAdr, flags, enum, b, fh, fn)
 		END Enumerate0;
 		END Enumerate0;
 
 
-		PROCEDURE FileKey(name: ARRAY OF CHAR): LONGINT;
+		PROCEDURE FileKey*(name: ARRAY OF CHAR): LONGINT;
 			VAR res: LONGINT; namebuf: FileName; header: DiskAdr;
 			VAR res: LONGINT; namebuf: FileName; header: DiskAdr;
 		BEGIN {EXCLUSIVE}
 		BEGIN {EXCLUSIVE}
 			header := 0;
 			header := 0;
@@ -629,7 +629,7 @@ TYPE
 			RETURN header
 			RETURN header
 		END FileKey;
 		END FileKey;
 
 
-		PROCEDURE Finalize;
+		PROCEDURE Finalize*;
 		BEGIN {EXCLUSIVE}
 		BEGIN {EXCLUSIVE}
 			dir.Cleanup();
 			dir.Cleanup();
 			vol.Finalize;
 			vol.Finalize;
@@ -651,7 +651,7 @@ TYPE
 			ext: ARRAY ETS OF Index;
 			ext: ARRAY ETS OF Index;
 			sec: SectorTable;
 			sec: SectorTable;
 
 
-		PROCEDURE Set(VAR r: Files.Rider; pos: LONGINT);
+		PROCEDURE Set*(VAR r: Files.Rider; pos: LONGINT);
 		VAR a, b: LONGINT;
 		VAR a, b: LONGINT;
 		BEGIN {EXCLUSIVE}
 		BEGIN {EXCLUSIVE}
 			r.eof := FALSE; r.res := 0; r.file := SELF; r.fs := fs;
 			r.eof := FALSE; r.res := 0; r.file := SELF; r.fs := fs;
@@ -665,12 +665,12 @@ TYPE
 			r.apos := a; r.bpos := b; r.hint := firstbuf
 			r.apos := a; r.bpos := b; r.hint := firstbuf
 		END Set;
 		END Set;
 
 
-		PROCEDURE Pos(VAR r: Files.Rider): LONGINT;
+		PROCEDURE Pos*(VAR r: Files.Rider): LONGINT;
 		BEGIN
 		BEGIN
 			RETURN r.apos*SS + r.bpos - HS
 			RETURN r.apos*SS + r.bpos - HS
 		END Pos;
 		END Pos;
 
 
-		PROCEDURE Read(VAR r: Files.Rider; VAR x: CHAR);
+		PROCEDURE Read*(VAR r: Files.Rider; VAR x: CHAR);
 		VAR buf: Buffer;
 		VAR buf: Buffer;
 		BEGIN {EXCLUSIVE}
 		BEGIN {EXCLUSIVE}
 			ASSERT(r.file = SELF);
 			ASSERT(r.file = SELF);
@@ -695,7 +695,7 @@ TYPE
 			END
 			END
 		END Read;
 		END Read;
 
 
-		PROCEDURE ReadBytes(VAR r: Files.Rider; VAR x: ARRAY OF CHAR; ofs, len: LONGINT);
+		PROCEDURE ReadBytes*(VAR r: Files.Rider; VAR x: ARRAY OF CHAR; ofs, len: LONGINT);
 		VAR src: ADDRESS; m: LONGINT; buf: Buffer;
 		VAR src: ADDRESS; m: LONGINT; buf: Buffer;
 		BEGIN {EXCLUSIVE}
 		BEGIN {EXCLUSIVE}
 			ASSERT(r.file = SELF);
 			ASSERT(r.file = SELF);
@@ -730,7 +730,7 @@ TYPE
 			END;
 			END;
 		END ReadBytes;
 		END ReadBytes;
 
 
-		PROCEDURE Write(VAR r: Files.Rider; x: CHAR);
+		PROCEDURE Write*(VAR r: Files.Rider; x: CHAR);
 		VAR buf: Buffer;
 		VAR buf: Buffer;
 		BEGIN {EXCLUSIVE}
 		BEGIN {EXCLUSIVE}
 			ASSERT(r.file = SELF);
 			ASSERT(r.file = SELF);
@@ -758,7 +758,7 @@ TYPE
 			buf.data.B[r.bpos] := x; INC(r.bpos); buf.mod := TRUE
 			buf.data.B[r.bpos] := x; INC(r.bpos); buf.mod := TRUE
 		END Write;
 		END Write;
 
 
-		PROCEDURE WriteBytes(VAR r: Files.Rider; CONST x: ARRAY OF CHAR; ofs, len: LONGINT);
+		PROCEDURE WriteBytes*(VAR r: Files.Rider; CONST x: ARRAY OF CHAR; ofs, len: LONGINT);
 		VAR dst: ADDRESS; m: LONGINT; buf: Buffer;
 		VAR dst: ADDRESS; m: LONGINT; buf: Buffer;
 		BEGIN {EXCLUSIVE}
 		BEGIN {EXCLUSIVE}
 			ASSERT(r.file = SELF);
 			ASSERT(r.file = SELF);
@@ -791,27 +791,27 @@ TYPE
 			END
 			END
 		END WriteBytes;
 		END WriteBytes;
 
 
-		PROCEDURE Length(): LONGINT;
+		PROCEDURE Length*(): LONGINT;
 		BEGIN {EXCLUSIVE}
 		BEGIN {EXCLUSIVE}
 			RETURN aleng*SS + bleng - HS
 			RETURN aleng*SS + bleng - HS
 		END Length;
 		END Length;
 
 
-		PROCEDURE GetDate(VAR t, d: LONGINT);
+		PROCEDURE GetDate*(VAR t, d: LONGINT);
 		BEGIN {EXCLUSIVE}
 		BEGIN {EXCLUSIVE}
 			t := time; d := date
 			t := time; d := date
 		END GetDate;
 		END GetDate;
 
 
-		PROCEDURE SetDate(t, d: LONGINT);
+		PROCEDURE SetDate*(t, d: LONGINT);
 		BEGIN {EXCLUSIVE}
 		BEGIN {EXCLUSIVE}
 			modH := TRUE; time := t; date := d
 			modH := TRUE; time := t; date := d
 		END SetDate;
 		END SetDate;
 
 
-		PROCEDURE GetName(VAR name: ARRAY OF CHAR);
+		PROCEDURE GetName*(VAR name: ARRAY OF CHAR);
 		BEGIN {EXCLUSIVE}
 		BEGIN {EXCLUSIVE}
 			Files.JoinName(fs.prefix, SELF.name, name)
 			Files.JoinName(fs.prefix, SELF.name, name)
 		END GetName;
 		END GetName;
 
 
-		PROCEDURE Register0(VAR res: LONGINT);
+		PROCEDURE Register0*(VAR res: LONGINT);
 		BEGIN {EXCLUSIVE}
 		BEGIN {EXCLUSIVE}
 			Unbuffer(SELF);
 			Unbuffer(SELF);
 			IF ~registered & (name # "") THEN
 			IF ~registered & (name # "") THEN
@@ -823,7 +823,7 @@ TYPE
 			END
 			END
 		END Register0;
 		END Register0;
 
 
-		PROCEDURE Update;
+		PROCEDURE Update*;
 		BEGIN {EXCLUSIVE}
 		BEGIN {EXCLUSIVE}
 			Unbuffer(SELF)
 			Unbuffer(SELF)
 		END Update;
 		END Update;

部分文件因文件數量過多而無法顯示