瀏覽代碼

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

+ 6 - 6
source/AMD64Decoder.Mod

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

+ 5 - 5
source/ARMDecoder.Mod

@@ -231,12 +231,12 @@ TYPE
 			argStructure := none
 		END New;
 
-		PROCEDURE PrintOpcodeBytes (w : Streams.Writer);
+		PROCEDURE PrintOpcodeBytes*(w : Streams.Writer);
 		BEGIN
 			w.Hex(op, 0)
 		END PrintOpcodeBytes;
 
-		PROCEDURE PrintInstruction (w : Streams.Writer);
+		PROCEDURE PrintInstruction*(w : Streams.Writer);
 		VAR str : ARRAY 20 OF CHAR; writeCondition, writeLSMAddrMode : BOOLEAN;
 		BEGIN
 			writeCondition := TRUE; writeLSMAddrMode := FALSE;
@@ -362,7 +362,7 @@ TYPE
 			w.String(str)
 		END PrintLSMAddrMode;
 
-		PROCEDURE PrintArguments (w : Streams.Writer);
+		PROCEDURE PrintArguments*(w : Streams.Writer);
 		BEGIN
 			(* KernelLog.String("*argStructure = "); KernelLog.Int(argStructure, 0); KernelLog.String(", instr = "); KernelLog.Int(instr, 0); KernelLog.Ln; *)
 			CASE argStructure OF
@@ -536,7 +536,7 @@ TYPE
 	VAR
 		bit24To27, bit20To23, bit16To19, bit12To15, bit8To11, bit4To7, bit0To3 : LONGINT;
 
-		PROCEDURE NewOpcode() : Decoder.Opcode;
+		PROCEDURE NewOpcode*() : Decoder.Opcode;
 		VAR
 			opcode : ARMOpcode;
 		BEGIN
@@ -544,7 +544,7 @@ TYPE
 			RETURN opcode
 		END NewOpcode;
 
-		PROCEDURE DecodeThis(opcode : Decoder.Opcode);
+		PROCEDURE DecodeThis*(opcode : Decoder.Opcode);
 		VAR
 			armOpcode : ARMOpcode;
 			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 *)
 	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;
 		begin
 			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 ! *)
 
 		(** override *)
-		PROCEDURE Allocate( size: LONGINT;  VAR adr: Index;  VAR ptr: ANY );
+		PROCEDURE Allocate*( size: LONGINT;  VAR adr: Index;  VAR ptr: ANY );
 		BEGIN
 			NEW( data, size );  adr := ADDRESSOF( data[0] );  ptr := data;
 		END Allocate;
 
-		PROCEDURE GetInfo( VAR elementsize: Index );
+		PROCEDURE GetInfo*( VAR elementsize: Index );
 		BEGIN
 			elementsize := SIZEOF( Value );
 		END GetInfo;
 
-		PROCEDURE AlikeX( ): ArrayXdBytes.Array;
+		PROCEDURE AlikeX*( ): ArrayXdBytes.Array;
 		VAR copy: Array;
 		BEGIN
 			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 ! *)
 
 		(** override *)
-		PROCEDURE Allocate( size: LONGINT;  VAR adr: Index;  VAR ptr: ANY );
+		PROCEDURE Allocate*( size: LONGINT;  VAR adr: Index;  VAR ptr: ANY );
 		BEGIN
 			NEW( data, size );  adr := ADDRESSOF( data[0] );  ptr := data;
 		END Allocate;
 
-		PROCEDURE GetInfo( VAR elementsize: Index );
+		PROCEDURE GetInfo*( VAR elementsize: Index );
 		BEGIN
 			elementsize := SIZEOF( Value );
 		END GetInfo;
 
-		PROCEDURE AlikeX( ): ArrayXdBytes.Array;
+		PROCEDURE AlikeX*( ): ArrayXdBytes.Array;
 		VAR copy: Array;
 		BEGIN
 			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 ! *)
 
 		(** override *)
-		PROCEDURE Allocate( size: LONGINT;  VAR adr: Index;  VAR ptr: ANY );
+		PROCEDURE Allocate*( size: LONGINT;  VAR adr: Index;  VAR ptr: ANY );
 		BEGIN
 			NEW( data, size );  adr := ADDRESSOF( data[0] );  ptr := data;
 		END Allocate;
 
-		PROCEDURE GetInfo( VAR elementsize: Index );
+		PROCEDURE GetInfo*( VAR elementsize: Index );
 		BEGIN
 			elementsize := SIZEOF( Value );
 		END GetInfo;
 
-		PROCEDURE AlikeX( ): ArrayXdBytes.Array;
+		PROCEDURE AlikeX*( ): ArrayXdBytes.Array;
 		VAR copy: Array;
 		BEGIN
 			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 ! *)
 
 		(** override *)
-		PROCEDURE Allocate( size: LONGINT;  VAR adr: Index;  VAR ptr: ANY );
+		PROCEDURE Allocate*( size: LONGINT;  VAR adr: Index;  VAR ptr: ANY );
 		BEGIN
 			NEW( data, size );  adr := ADDRESSOF( data[0] );  ptr := data;
 		END Allocate;
 
-		PROCEDURE GetInfo( VAR elementsize: Index );
+		PROCEDURE GetInfo*( VAR elementsize: Index );
 		BEGIN
 			elementsize := SIZEOF( Value );
 		END GetInfo;
 
-		PROCEDURE AlikeX( ): ArrayXdBytes.Array;
+		PROCEDURE AlikeX*( ): ArrayXdBytes.Array;
 		VAR copy: Array;
 		BEGIN
 			NEW( copy, origin, len );  RETURN copy;

+ 2 - 2
source/BimboMail.Mod

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

+ 2 - 2
source/Bimso.Mod

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

+ 1 - 1
source/BootShell.Mod

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

+ 5 - 5
source/CSS2Properties.Mod

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

+ 3 - 3
source/CalcGauss.Mod

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

+ 1 - 1
source/CharacterLineup.Mod

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

+ 3 - 3
source/Commands.Mod

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

+ 5 - 5
source/ComponentViewer.Mod

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

+ 3 - 3
source/CubeCplx.Mod

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

+ 1 - 1
source/CyberbitNetInstall.Mod

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

+ 1 - 1
source/DTPEditor.Mod

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

+ 2 - 2
source/DTPImage.Mod

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

+ 2 - 2
source/DTPRect.Mod

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

+ 4 - 4
source/DTPText.Mod

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

+ 9 - 9
source/DTPUtilities.Mod

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

+ 7 - 7
source/DTPView.Mod

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

+ 1 - 1
source/DebugLog.Mod

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

+ 2 - 2
source/Decoder.Mod

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

+ 19 - 19
source/DiskFS.Mod

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

+ 1 - 1
source/DiskTests.Mod

@@ -44,7 +44,7 @@ TYPE
 	(** Fills partition with test data *)
 	TestDataWriter* = OBJECT(TestDataBase);
 
-		PROCEDURE FillWithTestData(VAR buffer : ARRAY OF CHAR);
+		PROCEDURE FillWithTestData*(VAR buffer : ARRAY OF CHAR);
 		VAR i : LONGINT;
 		BEGIN
 			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)
 		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;
 		BEGIN
 			HTTPSupport.RemoveVariablesFromURI(request.uri, newuri);

+ 1 - 1
source/EventsFileLog.Mod

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

+ 1 - 1
source/EventsKernelLog.Mod

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

+ 1 - 1
source/EventsMemoryLog.Mod

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

+ 45 - 45
source/ExerciseGroups.Mod

@@ -134,7 +134,7 @@ TYPE
 			leginr: Strings.String;
 			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;
 			str: Strings.String; number: LONGINT;
 		BEGIN
@@ -162,7 +162,7 @@ TYPE
 			END
 		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;
 		BEGIN
 			NEW(container);
@@ -186,7 +186,7 @@ TYPE
 			RETURN container
 		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;
 		BEGIN
 			NEW(row, 6);
@@ -204,7 +204,7 @@ TYPE
 			RETURN row
 		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;
 		BEGIN
 			NEW(container);
@@ -257,7 +257,7 @@ TYPE
 			RETURN table
 		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;
 		BEGIN
 			NEW(table); table.SetName("table");
@@ -302,7 +302,7 @@ TYPE
 			searchText: Strings.String;
 			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;
 		BEGIN
 			elem := WebStd.GetXMLSubElement(input, "MaxEntries");
@@ -316,7 +316,7 @@ TYPE
 			RETURN Transform^(input, request);
 		END Transform;
 
-		PROCEDURE GetHeaderXMLContent(persContainer: WebStd.PersistentDataContainer; input: XML.Element;
+		PROCEDURE GetHeaderXMLContent*(persContainer: WebStd.PersistentDataContainer; input: XML.Element;
 			request: HTTPSupport.HTTPRequest) : XML.Content;
 		VAR dynStr: DynamicStrings.DynamicString; list: WebStd.PersistentDataObjectList; i: LONGINT;
 			str, encStr: Strings.String; person: Person; pTag, aTag: XML.Element; tempStr: ARRAY 10 OF CHAR;
@@ -348,7 +348,7 @@ TYPE
 			RETURN NIL
 		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;
 			(* parameters "firstname", "lastname", "email", "leginr"*)
 		VAR firstname, lastname, email, leginr: Strings.String; obj: Person;
@@ -380,7 +380,7 @@ TYPE
 			END
 		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;
 		VAR firstname, lastname, email, leginr: Strings.String;  person: Person;
 		BEGIN (* obj # NIL *)
@@ -417,12 +417,12 @@ TYPE
 			END
 		END UpdateObject;
 
-		PROCEDURE ThisObjectName() : Strings.String;
+		PROCEDURE ThisObjectName*() : Strings.String;
 		BEGIN
 			RETURN WebStd.GetString(SingleGroupDatagridName)
 		END ThisObjectName;
 
-		PROCEDURE ThisModuleName() : Strings.String;
+		PROCEDURE ThisModuleName*() : Strings.String;
 		BEGIN
 			RETURN WebStd.GetString(ThisModuleNameStr)
 		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
 		 * 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 *)
-		PROCEDURE GetInsertView(superEntry: WebComplex.WebForumEntry; request: HTTPSupport.HTTPRequest): XML.Content;
+		PROCEDURE GetInsertView*(superEntry: WebComplex.WebForumEntry; request: HTTPSupport.HTTPRequest): XML.Content;
 		VAR table: XML.Element;
 		BEGIN
 			NEW(table); table.SetName("table");
@@ -441,7 +441,7 @@ TYPE
 			RETURN table
 		END GetInsertView;
 
-		PROCEDURE GetTableHeader(request: HTTPSupport.HTTPRequest): WebComplex.HeaderRow;
+		PROCEDURE GetTableHeader*(request: HTTPSupport.HTTPRequest): WebComplex.HeaderRow;
 		VAR row: WebComplex.HeaderRow;
 		BEGIN
 			NEW(row, 6);
@@ -459,7 +459,7 @@ TYPE
 			RETURN row
 		END GetTableHeader;
 
-		PROCEDURE GetSearchFilter(text: Strings.String) : WebStd.PersistentDataFilter;
+		PROCEDURE GetSearchFilter*(text: Strings.String) : WebStd.PersistentDataFilter;
 		BEGIN
 			IF (text # NIL) THEN
 				NEW(searchText, Strings.Length(text^)+3);
@@ -501,32 +501,32 @@ TYPE
 			RETURN FALSE
 		END SearchFilter;
 
-		PROCEDURE GetDefaultOrdering() : WebStd.PersistentDataCompare;
+		PROCEDURE GetDefaultOrdering*() : WebStd.PersistentDataCompare;
 		BEGIN RETURN CompareLastName
 		END GetDefaultOrdering;
 
-		PROCEDURE GetEmptyListMessage(request: HTTPSupport.HTTPRequest) : XML.Container;
+		PROCEDURE GetEmptyListMessage*(request: HTTPSupport.HTTPRequest) : XML.Container;
 		BEGIN
 			RETURN WebStd.CreateXMLText(EmptyListText);
 		END GetEmptyListMessage;
 
-		PROCEDURE GetBackButtonLabel(request: HTTPSupport.HTTPRequest) : Strings.String;
+		PROCEDURE GetBackButtonLabel*(request: HTTPSupport.HTTPRequest) : Strings.String;
 		BEGIN RETURN WebStd.GetString(BackButtonLabel)
 		END GetBackButtonLabel;
 
-		PROCEDURE GetInsertLinkLabel(request: HTTPSupport.HTTPRequest) : Strings.String;
+		PROCEDURE GetInsertLinkLabel*(request: HTTPSupport.HTTPRequest) : Strings.String;
 		BEGIN RETURN WebStd.GetString(InsertToGroupLabel);
 		END GetInsertLinkLabel;
 
-		PROCEDURE GetSubmitButtonLabel(request: HTTPSupport.HTTPRequest): Strings.String;
+		PROCEDURE GetSubmitButtonLabel*(request: HTTPSupport.HTTPRequest): Strings.String;
 		BEGIN RETURN WebStd.GetString(SubmitButtonLabel)
 		END GetSubmitButtonLabel;
 
-		PROCEDURE GetUnapplySortLabel(request: HTTPSupport.HTTPRequest): Strings.String;
+		PROCEDURE GetUnapplySortLabel*(request: HTTPSupport.HTTPRequest): Strings.String;
 		BEGIN RETURN WebStd.GetString(UnapplySortLabel)
 		END GetUnapplySortLabel;
 
-		PROCEDURE GetUnapplyFilterLabel(request: HTTPSupport.HTTPRequest): Strings.String;
+		PROCEDURE GetUnapplyFilterLabel*(request: HTTPSupport.HTTPRequest): Strings.String;
 		BEGIN RETURN WebStd.GetString(UnapplyFilterLabel)
 		END GetUnapplyFilterLabel;
 
@@ -603,7 +603,7 @@ TYPE
 			toggleBlockId := DynamicWebpage.CreateNewObjectId() (* toggleBlockId # NIL *)
 		END Initialize;
 
-		PROCEDURE Internalize(input: XML.Content);
+		PROCEDURE Internalize*(input: XML.Content);
 		VAR container: XML.Container; elem: XML.Element; oidStr: Strings.String;
 			persObj: PrevalenceSystem.PersistentObject; oidNr: LONGINT;
 		BEGIN
@@ -634,7 +634,7 @@ TYPE
 			maxPeople := WebStd.InternalizeInteger(container, "MaxPeople");
 		END Internalize;
 
-		PROCEDURE Externalize() : XML.Content;
+		PROCEDURE Externalize*() : XML.Content;
 		VAR container: XML.Container; elem: XML.Element; oidStr: ARRAY 14 OF CHAR;
 		BEGIN
 			NEW(container);
@@ -658,7 +658,7 @@ TYPE
 			RETURN container
 		END Externalize;
 
-		PROCEDURE GetReferrencedObjects() : PrevalenceSystem.PersistentObjectList;
+		PROCEDURE GetReferrencedObjects*() : PrevalenceSystem.PersistentObjectList;
 		VAR list: PrevalenceSystem.PersistentObjectList;
 		BEGIN
 			NEW(list, 1);
@@ -702,7 +702,7 @@ TYPE
 			RETURN maxPeopleStr
 		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;
 		BEGIN
 			NEW(row, 8);
@@ -717,7 +717,7 @@ TYPE
 			RETURN row
 		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;
 		BEGIN
 			NEW(container);
@@ -853,7 +853,7 @@ TYPE
 			END
 		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;
 		BEGIN
 			NEW(table); table.SetName("table");
@@ -936,14 +936,14 @@ TYPE
 		BEGIN Init^; reInitializeSubContainer := FALSE
 		END Init;
 
-		PROCEDURE Transform(input: XML.Element; request: HTTPSupport.HTTPRequest) : XML.Content;
+		PROCEDURE Transform*(input: XML.Element; request: HTTPSupport.HTTPRequest) : XML.Content;
 		BEGIN
 			(* get the access constraint for later propagation to the nested SingleGroupDatagrid *)
 			accessConstraint := WebStd.GetXMLSubElement(input, "AccessConstraint");
 			RETURN Transform^(input, request)
 		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;
 			(* parameters "name", "info", "assistant", "date", "place", "maxpeople", "opentojoin" *)
 		VAR name, info, assistant, date, place, maxpeople, opentojoin, containername: Strings.String; obj: Group;
@@ -990,7 +990,7 @@ TYPE
 			END
 		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;
 			(* parameters "name", "info", "assistant", "date", "place", "maxpeople", "opentojoin" *)
 		VAR name, info, assistant, date, place, maxpeople, opentojoin: Strings.String; group: Group;
@@ -1030,12 +1030,12 @@ TYPE
 			END
 		END UpdateObject;
 
-		PROCEDURE ThisObjectName() : Strings.String;
+		PROCEDURE ThisObjectName*() : Strings.String;
 		BEGIN
 			RETURN WebStd.GetString(AllGroupsDatagridName)
 		END ThisObjectName;
 
-		PROCEDURE ThisModuleName() : Strings.String;
+		PROCEDURE ThisModuleName*() : Strings.String;
 		BEGIN
 			RETURN WebStd.GetString(ThisModuleNameStr)
 		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
 		 * 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 *)
-		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;
 		BEGIN
 			NEW(table); table.SetName("table");
@@ -1074,11 +1074,11 @@ TYPE
 			RETURN table
 		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 *)
 		END OnDetailViewActivated;
 
-		PROCEDURE GetTableHeader(request: HTTPSupport.HTTPRequest): WebComplex.HeaderRow;
+		PROCEDURE GetTableHeader*(request: HTTPSupport.HTTPRequest): WebComplex.HeaderRow;
 		VAR row: WebComplex.HeaderRow;
 		BEGIN
 			NEW(row, 8);
@@ -1093,32 +1093,32 @@ TYPE
 			RETURN row
 		END GetTableHeader;
 
-		PROCEDURE GetEmptyListMessage(request: HTTPSupport.HTTPRequest) : XML.Container;
+		PROCEDURE GetEmptyListMessage*(request: HTTPSupport.HTTPRequest) : XML.Container;
 		BEGIN
 			RETURN WebStd.CreateXMLText(EmptyListText);
 		END GetEmptyListMessage;
 
-		PROCEDURE GetBackButtonLabel(request: HTTPSupport.HTTPRequest) : Strings.String;
+		PROCEDURE GetBackButtonLabel*(request: HTTPSupport.HTTPRequest) : Strings.String;
 		BEGIN RETURN WebStd.GetString(BackButtonLabel)
 		END GetBackButtonLabel;
 
-		PROCEDURE GetInsertLinkLabel(request: HTTPSupport.HTTPRequest) : Strings.String;
+		PROCEDURE GetInsertLinkLabel*(request: HTTPSupport.HTTPRequest) : Strings.String;
 		BEGIN RETURN WebStd.GetString(InsertGroupText)
 		END GetInsertLinkLabel;
 
-		PROCEDURE GetSubmitButtonLabel(request: HTTPSupport.HTTPRequest): Strings.String;
+		PROCEDURE GetSubmitButtonLabel*(request: HTTPSupport.HTTPRequest): Strings.String;
 		BEGIN RETURN WebStd.GetString(SubmitButtonLabel)
 		END GetSubmitButtonLabel;
 
-		PROCEDURE GetUnapplySortLabel(request: HTTPSupport.HTTPRequest): Strings.String;
+		PROCEDURE GetUnapplySortLabel*(request: HTTPSupport.HTTPRequest): Strings.String;
 		BEGIN RETURN WebStd.GetString(UnapplySortLabel)
 		END GetUnapplySortLabel;
 
-		PROCEDURE GetUnapplyFilterLabel(request: HTTPSupport.HTTPRequest): Strings.String;
+		PROCEDURE GetUnapplyFilterLabel*(request: HTTPSupport.HTTPRequest): Strings.String;
 		BEGIN RETURN WebStd.GetString(UnapplyFilterLabel)
 		END GetUnapplyFilterLabel;
 
-		PROCEDURE GetSearchFilter(text: Strings.String) : WebStd.PersistentDataFilter;
+		PROCEDURE GetSearchFilter*(text: Strings.String) : WebStd.PersistentDataFilter;
 		BEGIN
 			IF (text # NIL) THEN
 				NEW(searchText, Strings.Length(text^)+3);
@@ -1260,7 +1260,7 @@ TYPE
 		BEGIN group := NIL
 		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;
 			prevSys: PrevalenceSystem.PrevalenceSystem;
 		BEGIN
@@ -1563,7 +1563,7 @@ TYPE
 			END
 		END DeleteExercise;
 
-		PROCEDURE GetEventHandlers() : DynamicWebpage.EventHandlerList;
+		PROCEDURE GetEventHandlers*() : DynamicWebpage.EventHandlerList;
 		VAR list: DynamicWebpage.EventHandlerList;
 		BEGIN
 			NEW(list, 3);
@@ -1578,7 +1578,7 @@ TYPE
 	 * <ExerciseGroups:SummaryList containername=".." prevalencesystem=".."/>
 	 *)
 	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;
 			persList: WebStd.PersistentDataObjectList; i: LONGINT; outputCont: XML.Container;
 			entry: WebComplex.WebForumEntry; prevSys: PrevalenceSystem.PrevalenceSystem;

+ 12 - 12
source/FATFiles.Mod

@@ -146,7 +146,7 @@ TYPE
 		END Initialize;
 
 		(* Finalize the file system. *)
-		PROCEDURE Finalize;
+		PROCEDURE Finalize*;
 		VAR purge: FilePurger; update: FileUpdater;
 		BEGIN {EXCLUSIVE}
 			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.
 			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)
 		END Set;
 
@@ -659,7 +659,7 @@ TYPE
 		END SetX;
 
 		(* 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
 		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
 			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)
 		END ReadBytes;
 
@@ -826,7 +826,7 @@ TYPE
 		END WriteX;
 
 		(* 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)
 		END WriteBytes;
 
@@ -854,7 +854,7 @@ TYPE
 		END WriteBytesX;
 
 		(* Return the current length of a file. *)
-		PROCEDURE Length(): LONGINT;
+		PROCEDURE Length*(): LONGINT;
 		BEGIN
 			(* 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 *)
@@ -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.
 			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;
 		BEGIN {EXCLUSIVE}
 			IF ~registered THEN
@@ -949,7 +949,7 @@ TYPE
 		END Register0;
 
 		(* Flush the changes made to a file from its buffers. Register0 will automatically update a file. *)
-		PROCEDURE Update;
+		PROCEDURE Update*;
 		BEGIN {EXCLUSIVE} UpdateX
 		END Update;
 
@@ -1110,7 +1110,7 @@ TYPE
 		END SetX;
 
 		(* Return the current length of a file. *)
-		PROCEDURE Length(): LONGINT;
+		PROCEDURE Length*(): LONGINT;
 		BEGIN {EXCLUSIVE}
 			IF (size = 0) THEN InitSize END;
 			RETURN Length^()
@@ -1641,7 +1641,7 @@ TYPE
 	END 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;
 		BEGIN {EXCLUSIVE}
 			pos := 0; i := 0;
@@ -1672,7 +1672,7 @@ TYPE
 			size := fs.vol(FATVolumes.FAT1216Volume).numRootSectors*FATVolumes.BS
 		END InitSize;
 
-		PROCEDURE ReadBuffer*(buffer: Buffer; pos: LONGINT);
+		PROCEDURE ReadBuffer(buffer: Buffer; pos: LONGINT);
 		VAR vol: FATVolumes.FAT1216Volume; res: LONGINT;
 		BEGIN
 			vol := fs.vol(FATVolumes.FAT1216Volume);
@@ -1682,7 +1682,7 @@ TYPE
 			IF (res # Ok) THEN HALT(ErrIOError) END
 		END ReadBuffer;
 
-		PROCEDURE WriteBuffer*(buffer: Buffer);
+		PROCEDURE WriteBuffer(buffer: Buffer);
 		VAR vol: FATVolumes.FAT1216Volume; res: LONGINT;
 		BEGIN
 			vol := fs.vol(FATVolumes.FAT1216Volume);

+ 9 - 9
source/FATVolumes.Mod

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

+ 19 - 19
source/FTPFS.Mod

@@ -624,7 +624,7 @@ TYPE
 			END
 		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;
 		BEGIN (*{EXCLUSIVE}*)
 			lock.Acquire;
@@ -691,7 +691,7 @@ TYPE
 			RETURN res=0
 		END Receive;
 
-		PROCEDURE Old0(name: ARRAY OF CHAR): Files.File;
+		PROCEDURE Old0*(name: ARRAY OF CHAR): Files.File;
 		VAR
 			i, k, res: LONGINT; f: File; header: DiskAdr; buf: Buffer; head: FileHd;
 			namebuf, local: FileName; super: SuperIndex; sub: SubIndex; sec: IndexSector;
@@ -756,7 +756,7 @@ TYPE
 			RETURN f
 		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;
 		BEGIN (*{EXCLUSIVE}*)
 			lock.Acquire;
@@ -777,7 +777,7 @@ TYPE
 			lock.Release
 		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;
 		BEGIN (*{EXCLUSIVE}*)
 			lock.Acquire;
@@ -802,7 +802,7 @@ TYPE
 			lock.Release
 		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;
 		BEGIN (*{EXCLUSIVE}*)
 			lock.Acquire;
@@ -810,7 +810,7 @@ TYPE
 			lock.Release
 		END Enumerate0;
 
-		PROCEDURE FileKey(name: ARRAY OF CHAR): LONGINT;
+		PROCEDURE FileKey*(name: ARRAY OF CHAR): LONGINT;
 			VAR res: LONGINT; namebuf: FileName; header: DiskAdr;
 		BEGIN (*{EXCLUSIVE}*)
 			lock.Acquire;
@@ -823,7 +823,7 @@ TYPE
 			RETURN header
 		END FileKey;
 
-		PROCEDURE Finalize;
+		PROCEDURE Finalize*;
 		BEGIN (*{EXCLUSIVE}*)
 			lock.Acquire;
 			dir.Cleanup();
@@ -847,7 +847,7 @@ TYPE
 			ext: SuperIndex;
 			sec: SectorTable;
 
-		PROCEDURE Set(VAR r: Files.Rider; pos: LONGINT);
+		PROCEDURE Set*(VAR r: Files.Rider; pos: LONGINT);
 		VAR a, b: LONGINT;
 		BEGIN {EXCLUSIVE}
 			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
 		END Set;
 
-		PROCEDURE Pos(VAR r: Files.Rider): LONGINT;
+		PROCEDURE Pos*(VAR r: Files.Rider): LONGINT;
 		BEGIN
 			RETURN r.apos*SS + r.bpos - HS
 		END Pos;
 
-		PROCEDURE Read(VAR r: Files.Rider; VAR x: CHAR);
+		PROCEDURE Read*(VAR r: Files.Rider; VAR x: CHAR);
 		VAR buf: Buffer;
 		BEGIN {EXCLUSIVE}
 			buf := r.hint(Buffer);
@@ -889,7 +889,7 @@ TYPE
 			END
 		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;
 		BEGIN {EXCLUSIVE}
 			IF LEN(x)-ofs < len THEN SYSTEM.HALT(19) END;
@@ -928,7 +928,7 @@ TYPE
 			END
 		END ReadBytes;
 
-		PROCEDURE Write(VAR r: Files.Rider; x: CHAR);
+		PROCEDURE Write*(VAR r: Files.Rider; x: CHAR);
 		VAR buf: Buffer;
 		BEGIN {EXCLUSIVE}
 			buf := r.hint(Buffer);
@@ -955,7 +955,7 @@ TYPE
 			buf.data.B[r.bpos] := x; INC(r.bpos); buf.mod := TRUE
 		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;
 		BEGIN {EXCLUSIVE}
 			IF LEN(x)-ofs < len THEN SYSTEM.HALT(19) END;
@@ -990,27 +990,27 @@ TYPE
 			END
 		END WriteBytes;
 
-		PROCEDURE Length(): LONGINT;
+		PROCEDURE Length*(): LONGINT;
 		BEGIN {EXCLUSIVE}
 			RETURN aleng*SS + bleng - HS
 		END Length;
 
-		PROCEDURE GetDate(VAR t, d: LONGINT);
+		PROCEDURE GetDate*(VAR t, d: LONGINT);
 		BEGIN {EXCLUSIVE}
 			t := time; d := date
 		END GetDate;
 
-		PROCEDURE SetDate(t, d: LONGINT);
+		PROCEDURE SetDate*(t, d: LONGINT);
 		BEGIN {EXCLUSIVE}
 			modH := TRUE; time := t; date := d
 		END SetDate;
 
-		PROCEDURE GetName(VAR name: ARRAY OF CHAR);
+		PROCEDURE GetName*(VAR name: ARRAY OF CHAR);
 		BEGIN {EXCLUSIVE}
 			Files.JoinName(fs.prefix, SELF.name, name)
 		END GetName;
 
-		PROCEDURE Register0(VAR res: LONGINT);
+		PROCEDURE Register0*(VAR res: LONGINT);
 		BEGIN {EXCLUSIVE}
 			Unbuffer(SELF);
 			IF ~registered & (name # "") THEN
@@ -1022,7 +1022,7 @@ TYPE
 			END
 		END Register0;
 
-		PROCEDURE Update;
+		PROCEDURE Update*;
 		BEGIN {EXCLUSIVE}
 			Unbuffer(SELF)
 		END Update;

+ 33 - 33
source/FoxAMDBackend.Mod

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

+ 24 - 24
source/FoxARMBackend.Mod

@@ -402,12 +402,12 @@ TYPE
 		END InitPhysicalRegisters;
 
 		(** the number of physical registers **)
-		PROCEDURE NumberRegisters(): LONGINT;
+		PROCEDURE NumberRegisters*(): LONGINT;
 		BEGIN RETURN InstructionSet.NumberRegisters
 		END NumberRegisters;
 
 		(** 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;
 		BEGIN
 			ASSERT(~ticket.spilled);
@@ -427,17 +427,17 @@ TYPE
 		END Allocate;
 
 		(** 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
 		END SetReserved;
 
 		(** whether a certain physical register is reserved **)
-		PROCEDURE Reserved(physicalRegisterNumber: LONGINT): BOOLEAN;
+		PROCEDURE Reserved*(physicalRegisterNumber: LONGINT): BOOLEAN;
 		BEGIN RETURN (physicalRegisterNumber > 0) & reserved[physicalRegisterNumber]
 		END Reserved;
 
 		(** free a certain physical register **)
-		PROCEDURE Free(physicalRegisterNumber: LONGINT);
+		PROCEDURE Free*(physicalRegisterNumber: LONGINT);
 		VAR index: LONGINT;
 		BEGIN
 			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
 		- 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
 			result, i: LONGINT;
 		BEGIN
@@ -504,17 +504,17 @@ TYPE
 		END NextFree;
 
 		(** give the register allocator a hint on what physical register to use next **)
-		PROCEDURE AllocationHint(physicalRegisterNumber: LONGINT);
+		PROCEDURE AllocationHint*(physicalRegisterNumber: LONGINT);
 		BEGIN hint := physicalRegisterNumber
 		END AllocationHint;
 
 		(** 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]
 		END Mapped;
 
 		(** dump the current register mapping to a stream **)
-		PROCEDURE Dump(w: Streams.Writer);
+		PROCEDURE Dump*(w: Streams.Writer);
 		VAR i: LONGINT; virtual: Ticket;
 		BEGIN
 			w.String("---- registers ----"); w.Ln;
@@ -587,7 +587,7 @@ TYPE
 		(*------------------- overwritten methods ----------------------*)
 
 		(* TODO: revise this *)
-		PROCEDURE Section(in: IntermediateCode.Section; out: BinaryCode.Section);
+		PROCEDURE Section*(in: IntermediateCode.Section; out: BinaryCode.Section);
 		VAR
 			oldSpillStackSize: LONGINT;
 
@@ -635,7 +635,7 @@ TYPE
 		(* TODO: complete this *)
 		(** whether the code generator can generate code for a certain intermediate code intstruction
 		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
 			result: BOOLEAN; value: HUGEINT; exp: LONGINT;
 		BEGIN
@@ -1430,7 +1430,7 @@ TYPE
 
 		(* the intermediate code type of a part
 		- 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
 			ASSERT((part = Low) OR (part = High));
 			IF (type.sizeInBits <= 32) OR (type.form = IntermediateCode.Float) & backend.useFPU64 THEN
@@ -1499,7 +1499,7 @@ TYPE
 		END NegatedIrOperandIsDirectlyEncodable;
 
 		(** generate code for a certain IR instruction **)
-		PROCEDURE Generate(VAR irInstruction: IntermediateCode.Instruction);
+		PROCEDURE Generate*(VAR irInstruction: IntermediateCode.Instruction);
 		BEGIN
 			(* CheckFixups; *)
 			EmitFixupBlockIfNeeded;
@@ -1562,7 +1562,7 @@ TYPE
 
 		END Generate;
 
-		PROCEDURE PostGenerate(CONST instruction: IntermediateCode.Instruction);
+		PROCEDURE PostGenerate*(CONST instruction: IntermediateCode.Instruction);
 		VAR ticket: Ticket;
 		BEGIN
 			TryUnmap(instruction.op3); TryUnmap(instruction.op2); TryUnmap(instruction.op1);
@@ -3415,7 +3415,7 @@ TYPE
 			SetName("ARM");
 		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
 			Initialize^(diagnostics, log, flags, checker, system);
 			NEW(cg, runtimeModuleName, diagnostics, SELF)
@@ -3488,7 +3488,7 @@ TYPE
 			New; RealVarPar; IntVarPar; Finish("UNPK", UNPK);
 		END EnterCustomBuiltins;
 
-		PROCEDURE GetSystem(): Global.System;
+		PROCEDURE GetSystem*(): Global.System;
 		BEGIN
 			(* create system object if not yet existing *)
 			IF system = NIL THEN
@@ -3538,7 +3538,7 @@ TYPE
 
 		(** 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 **)
-		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
 			(* only necessary for binary object file format for symbol / module entry in IntermediateBackend *)
 			RETURN cg.Supported(irInstruction, moduleName, procedureName);
@@ -3546,7 +3546,7 @@ TYPE
 
 		(** 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 **)
-		PROCEDURE SupportedImmediate(CONST irImmediateOperand: IntermediateCode.Operand): BOOLEAN;
+		PROCEDURE SupportedImmediate*(CONST irImmediateOperand: IntermediateCode.Operand): BOOLEAN;
 		VAR
 			result: BOOLEAN;
 		BEGIN
@@ -3728,7 +3728,7 @@ TYPE
 			RETURN result
 		END ProcessIntermediateCodeModule;
 
-		PROCEDURE DefineOptions(options: Options.Options);
+		PROCEDURE DefineOptions*(options: Options.Options);
 		BEGIN
 			options.Add(0X, UseFPU32Flag, Options.Flag);
 			options.Add(0X, UseFPU64Flag, Options.Flag);
@@ -3736,7 +3736,7 @@ TYPE
 			DefineOptions^(options);
 		END DefineOptions;
 
-		PROCEDURE GetOptions(options: Options.Options);
+		PROCEDURE GetOptions*(options: Options.Options);
 		BEGIN
 			IF options.GetFlag(UseFPU32Flag) THEN useFPU32 := TRUE END;
 			IF options.GetFlag(UseFPU64Flag) THEN useFPU64 := TRUE; useFPU32 := TRUE END;
@@ -3744,20 +3744,20 @@ TYPE
 			GetOptions^(options);
 		END GetOptions;
 
-		PROCEDURE DefaultObjectFileFormat(): Formats.ObjectFileFormat;
+		PROCEDURE DefaultObjectFileFormat*(): Formats.ObjectFileFormat;
 		BEGIN RETURN ObjectFileFormat.Get();
 		END DefaultObjectFileFormat;
 
-		PROCEDURE DefaultSymbolFileFormat(): Formats.SymbolFileFormat;
+		PROCEDURE DefaultSymbolFileFormat*(): Formats.SymbolFileFormat;
 		BEGIN RETURN NIL
 		END DefaultSymbolFileFormat;
 
 		(** get the name of the backend **)
-		PROCEDURE GetDescription(VAR instructionSet: ARRAY OF CHAR);
+		PROCEDURE GetDescription*(VAR instructionSet: ARRAY OF CHAR);
 		BEGIN instructionSet := "ARM"
 		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
 			section: Sections.Section; binarySection: BinaryCode.Section; label: BinaryCode.LabelList; module: Formats.GeneratedModule;
 			i: LONGINT; pooledName: Basic.SegmentedName;

+ 1 - 1
source/FoxARMInstructionSet.Mod

@@ -2865,7 +2865,7 @@ CONST
 	TYPE
 		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;
 			BEGIN
 				(* maxInstructionSize can be ignored here *)

+ 9 - 9
source/FoxActiveCells.Mod

@@ -127,7 +127,7 @@ TYPE
 		delegate-: PortInstance;
 		index-: LONGINT;
 
-		PROCEDURE Same(as: Symbol; flags: SET): BOOLEAN;
+		PROCEDURE Same*(as: Symbol; flags: SET): BOOLEAN;
 		BEGIN
 			IF TraceSame THEN TRACE("Port",name) END;
 			IF (as = NIL) OR ~(as IS Port) THEN RETURN FALSE END;
@@ -250,7 +250,7 @@ TYPE
 		adr-: LONGINT;
 		index-: LONGINT;
 
-		PROCEDURE Same(as: Symbol; flags: SET): BOOLEAN;
+		PROCEDURE Same*(as: Symbol; flags: SET): BOOLEAN;
 		BEGIN
 			IF TraceSame THEN TRACE("Device",name) 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) *)
 		index-: LONGINT;
 
-		PROCEDURE Same(as: Symbol; flags: SET): BOOLEAN;
+		PROCEDURE Same*(as: Symbol; flags: SET): BOOLEAN;
 		BEGIN
 			IF TraceSame THEN TRACE("Module",name) END;
 			IF (as = NIL) OR  ~(as IS Module) THEN RETURN FALSE END;
@@ -422,7 +422,7 @@ TYPE
 		boolean-: BOOLEAN;
 		string-: Strings.String;
 
-		PROCEDURE Same(as: Symbol; flags: SET): BOOLEAN;
+		PROCEDURE Same*(as: Symbol; flags: SET): BOOLEAN;
 		BEGIN
 			IF TraceSame THEN TRACE("Parameter",name) END;
 			IF (as = NIL) OR ~(as IS Parameter) THEN RETURN FALSE END;
@@ -553,7 +553,7 @@ TYPE
 		instructionMemorySize-, dataMemorySize-: LONGINT;
 		capabilities-: SET;
 
-		PROCEDURE Same(as: Symbol; flags: SET): BOOLEAN;
+		PROCEDURE Same*(as: Symbol; flags: SET): BOOLEAN;
 		BEGIN
 			IF TraceSame THEN TRACE("Instance",name) END;
 			IF (as = NIL) OR ~(as IS Instance) THEN RETURN FALSE END;
@@ -674,7 +674,7 @@ TYPE
 			END;
 		END Read;
 
-		PROCEDURE AppendToMsg(VAR msg: ARRAY OF CHAR);
+		PROCEDURE AppendToMsg*(VAR msg: ARRAY OF CHAR);
 		VAR name:Name;
 		BEGIN
 			AppendToMsg^(msg);
@@ -744,7 +744,7 @@ TYPE
 			index := -1;
 		END InitScope;
 
-		PROCEDURE Same(as: Symbol; flags: SET): BOOLEAN;
+		PROCEDURE Same*(as: Symbol; flags: SET): BOOLEAN;
 		BEGIN
 			IF TraceSame THEN TRACE("Scope",name) END;
 			IF (as = NIL) OR ~(as IS Scope) THEN RETURN FALSE END;
@@ -866,7 +866,7 @@ TYPE
 		instructionMemorySize-, dataMemorySize-: LONGINT; (* sizes in units *)
 		capabilities-: SET;
 
-		PROCEDURE Same(as: Symbol; flags: SET): BOOLEAN;
+		PROCEDURE Same*(as: Symbol; flags: SET): BOOLEAN;
 		BEGIN
 			IF TraceSame THEN TRACE("Type",name) 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) *)
 
 
-		PROCEDURE Same(as: Symbol; flags: SET): BOOLEAN;
+		PROCEDURE Same*(as: Symbol; flags: SET): BOOLEAN;
 		BEGIN
 			IF TraceSame THEN TRACE("Channel",name) 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;
 		END VisitEdge;
 
-		PROCEDURE VisitBlock(block: Block);
+		PROCEDURE VisitBlock*(block: Block);
 		VAR
 			i: LONGINT;
 			dom: Block;
@@ -1661,7 +1661,7 @@ TYPE
 			SELF.diagnostics := diagnostics
 		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
 			IF diagnostics # NIL THEN
 				diagnostics.Error(source,position,errorCode,message);

+ 2 - 2
source/FoxBinaryObjectFile.Mod

@@ -174,11 +174,11 @@ TYPE
 			END;
 		END GetOptions;
 
-		PROCEDURE DefaultSymbolFileFormat(): Formats.SymbolFileFormat;
+		PROCEDURE DefaultSymbolFileFormat*(): Formats.SymbolFileFormat;
 		BEGIN RETURN SymbolFileFormat.Get();
 		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
 		END ForceModuleBodies;
 

+ 25 - 25
source/FoxBinarySymbolFile.Mod

@@ -253,57 +253,57 @@ TYPE
 
 		(* types that do not refer to other types *)
 
-		PROCEDURE VisitType(x: SyntaxTree.Type);
+		PROCEDURE VisitType*(x: SyntaxTree.Type);
 		BEGIN END VisitType;
 
-		PROCEDURE VisitBasicType(x: SyntaxTree.BasicType);
+		PROCEDURE VisitBasicType*(x: SyntaxTree.BasicType);
 		BEGIN END VisitBasicType;
 
-		PROCEDURE VisitByteType(x: SyntaxTree.ByteType);
+		PROCEDURE VisitByteType*(x: SyntaxTree.ByteType);
 		BEGIN END VisitByteType;
 
-		PROCEDURE VisitBooleanType(x: SyntaxTree.BooleanType);
+		PROCEDURE VisitBooleanType*(x: SyntaxTree.BooleanType);
 		BEGIN END VisitBooleanType;
 
-		PROCEDURE VisitSetType(x: SyntaxTree.SetType);
+		PROCEDURE VisitSetType*(x: SyntaxTree.SetType);
 		BEGIN END VisitSetType;
 
-		PROCEDURE VisitAddressType(x: SyntaxTree.AddressType);
+		PROCEDURE VisitAddressType*(x: SyntaxTree.AddressType);
 		BEGIN END VisitAddressType;
 
-		PROCEDURE VisitSizeType(x: SyntaxTree.SizeType);
+		PROCEDURE VisitSizeType*(x: SyntaxTree.SizeType);
 		BEGIN END VisitSizeType;
 
-		PROCEDURE VisitAnyType(x: SyntaxTree.AnyType);
+		PROCEDURE VisitAnyType*(x: SyntaxTree.AnyType);
 		BEGIN END VisitAnyType;
 
-		PROCEDURE VisitObjectType(x: SyntaxTree.ObjectType);
+		PROCEDURE VisitObjectType*(x: SyntaxTree.ObjectType);
 		BEGIN END VisitObjectType;
 
-		PROCEDURE VisitNilType(x: SyntaxTree.NilType);
+		PROCEDURE VisitNilType*(x: SyntaxTree.NilType);
 		BEGIN END VisitNilType;
 
-		PROCEDURE VisitCharacterType(x: SyntaxTree.CharacterType);
+		PROCEDURE VisitCharacterType*(x: SyntaxTree.CharacterType);
 		BEGIN END VisitCharacterType;
 
-		PROCEDURE VisitIntegerType(x: SyntaxTree.IntegerType);
+		PROCEDURE VisitIntegerType*(x: SyntaxTree.IntegerType);
 		BEGIN END VisitIntegerType;
 
-		PROCEDURE VisitFloatType(x: SyntaxTree.FloatType);
+		PROCEDURE VisitFloatType*(x: SyntaxTree.FloatType);
 		BEGIN END VisitFloatType;
 
-		PROCEDURE VisitComplexType(x: SyntaxTree.ComplexType);
+		PROCEDURE VisitComplexType*(x: SyntaxTree.ComplexType);
 		BEGIN END VisitComplexType;
 
-		PROCEDURE VisitQualifiedType(x: SyntaxTree.QualifiedType);
+		PROCEDURE VisitQualifiedType*(x: SyntaxTree.QualifiedType);
 		BEGIN
 			x.SetResolved(ResolveType(x.resolved))
 		END VisitQualifiedType;
 
-		PROCEDURE VisitStringType(x: SyntaxTree.StringType);
+		PROCEDURE VisitStringType*(x: SyntaxTree.StringType);
 		BEGIN END VisitStringType;
 
-		PROCEDURE VisitRangeType(x: SyntaxTree.RangeType);
+		PROCEDURE VisitRangeType*(x: SyntaxTree.RangeType);
 		BEGIN END VisitRangeType;
 
 		(* types containing links to other types *)
@@ -330,7 +330,7 @@ TYPE
 		(**
 			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;
 		BEGIN
 			x.SetEnumerationBase(ResolveType(x.enumerationBase));
@@ -343,7 +343,7 @@ TYPE
 			x.SetState(SyntaxTree.Resolved);
 		END VisitEnumerationType;
 
-		PROCEDURE VisitArrayType(arrayType: SyntaxTree.ArrayType);
+		PROCEDURE VisitArrayType*(arrayType: SyntaxTree.ArrayType);
 		BEGIN
 			ASSERT(arrayType.arrayBase # NIL);
 			arrayType.SetArrayBase(ResolveType(arrayType.arrayBase));
@@ -351,7 +351,7 @@ TYPE
 			arrayType.SetState(SyntaxTree.Resolved);
 		END VisitArrayType;
 
-		PROCEDURE VisitMathArrayType(arrayType: SyntaxTree.MathArrayType);
+		PROCEDURE VisitMathArrayType*(arrayType: SyntaxTree.MathArrayType);
 		BEGIN
 			arrayType.SetArrayBase(ResolveType(arrayType.arrayBase));
 			IF arrayType.form = SyntaxTree.Static THEN
@@ -363,7 +363,7 @@ TYPE
 			arrayType.SetState(SyntaxTree.Resolved);
 		END VisitMathArrayType;
 
-		PROCEDURE VisitPointerType(pointerType: SyntaxTree.PointerType);
+		PROCEDURE VisitPointerType*(pointerType: SyntaxTree.PointerType);
 		VAR recordType: SyntaxTree.RecordType;
 		BEGIN
 			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;
 			pointerType: SyntaxTree.Type; typeDeclaration: SyntaxTree.TypeDeclaration; symbol: SyntaxTree.Symbol; size: HUGEINT; hasPointer: BOOLEAN;
 			var: SyntaxTree.Variable;
@@ -467,7 +467,7 @@ TYPE
 		END VisitRecordType;
 
 
-		PROCEDURE VisitProcedureType(procedureType: SyntaxTree.ProcedureType);
+		PROCEDURE VisitProcedureType*(procedureType: SyntaxTree.ProcedureType);
 		VAR parameter: SyntaxTree.Parameter;
 		BEGIN
 			IF ~(SyntaxTree.Resolved IN procedureType.state) THEN
@@ -642,7 +642,7 @@ TYPE
 			version: CHAR;
 
 		(** 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
 			module: SyntaxTree.Module;
 			moduleIdentifier,contextIdentifier: SyntaxTree.Identifier;
@@ -1609,7 +1609,7 @@ TYPE
 			RETURN module
 		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;
 
 

+ 1 - 1
source/FoxCSharpFrontend.Mod

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

+ 60 - 60
source/FoxDocumentationBackend.Mod

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

+ 43 - 43
source/FoxFingerPrinter.Mod

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

+ 1 - 1
source/FoxGenericObjectFile.Mod

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

+ 78 - 78
source/FoxIntermediateBackend.Mod

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

+ 2 - 2
source/FoxIntermediateCode.Mod

@@ -361,7 +361,7 @@ TYPE
 		END DumpCode;
 
 		(* inherited method *)
-		PROCEDURE Dump(w: Streams.Writer);
+		PROCEDURE Dump*(w: Streams.Writer);
 		VAR ww: Basic.Writer;
 		BEGIN
 			IF resolved # NIL THEN
@@ -377,7 +377,7 @@ TYPE
 			END;
 		END Dump;
 		
-		PROCEDURE WriteRaw(w: Streams.Writer);
+		PROCEDURE WriteRaw*(w: Streams.Writer);
 		VAR i: LONGINT;
 		BEGIN
 			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");
 		END GetOptions;
 
-		PROCEDURE DefaultSymbolFileFormat(): Formats.SymbolFileFormat;
+		PROCEDURE DefaultSymbolFileFormat*(): Formats.SymbolFileFormat;
 		BEGIN RETURN TextualSymbolFile.Get();
 		END DefaultSymbolFileFormat;
 
-		PROCEDURE GetExtension(VAR ext: ARRAY OF CHAR);
+		PROCEDURE GetExtension*(VAR ext: ARRAY OF CHAR);
 		BEGIN COPY(extension, ext)
 		END GetExtension;
 
-		PROCEDURE SetExtension(CONST ext: ARRAY OF CHAR);
+		PROCEDURE SetExtension*(CONST ext: ARRAY OF CHAR);
 		BEGIN COPY(ext, extension)
 		END SetExtension;
 		

+ 2 - 2
source/FoxInterpreter.Mod

@@ -57,7 +57,7 @@ TYPE
 
 	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;
 		BEGIN
 			IF (Token() = Scanner.ExclamationMark) THEN
@@ -651,7 +651,7 @@ TYPE
 		END FindType;
 		
 		
-		PROCEDURE VisitBuiltinCallDesignator(x: SyntaxTree.BuiltinCallDesignator);
+		PROCEDURE VisitBuiltinCallDesignator*(x: SyntaxTree.BuiltinCallDesignator);
 		VAR p,p0,p1,p2: SyntaxTree.Expression;
 			type,t0,t1,t2: SyntaxTree.Type;
 			len: LONGINT;

+ 4 - 4
source/FoxInterpreterBackend.Mod

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

+ 3 - 3
source/FoxMinosObjectFile.Mod

@@ -68,15 +68,15 @@ TYPE
 			IF ~options.GetString("objectFilePrefix",prefix) THEN prefix := "" END
 		END GetOptions;
 
-		PROCEDURE DefaultSymbolFileFormat(): Formats.SymbolFileFormat;
+		PROCEDURE DefaultSymbolFileFormat*(): Formats.SymbolFileFormat;
 		BEGIN RETURN SymbolFileFormat.Get();
 		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
 		END ForceModuleBodies;
 
-		PROCEDURE GetExtension(VAR ext: ARRAY OF CHAR);
+		PROCEDURE GetExtension*(VAR ext: ARRAY OF CHAR);
 		BEGIN COPY(extension, ext)
 		END GetExtension;
 

+ 1 - 1
source/FoxOberonFrontend.Mod

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

+ 1 - 1
source/FoxSections.Mod

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

+ 30 - 30
source/FoxTRMBackend.Mod

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

+ 1 - 1
source/FoxTRMInstructionSet.Mod

@@ -1070,7 +1070,7 @@ TYPE
 	TYPE
 		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;
 			BEGIN
 				(* maxInstructionSize can be ignored here *)

+ 1 - 1
source/FoxTest.Mod

@@ -28,7 +28,7 @@ TYPE
 			IF log = NIL THEN INCL(commandFlags, Commands.Silent) END;
 		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;
 		BEGIN
 			result := TestSuite.Failure;

+ 4 - 4
source/FoxTextualSymbolFile.Mod

@@ -11,7 +11,7 @@ TYPE
 	TextualSymbolFile = OBJECT (Formats.SymbolFileFormat)
 	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;
 			checker: SemanticChecker.Checker;
 		BEGIN
@@ -35,7 +35,7 @@ TYPE
 			RETURN module
 		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;
 		BEGIN
 			Global.ModuleFileName(module.name,module.context,moduleName);
@@ -75,14 +75,14 @@ TYPE
 			RETURN result
 		END Export;
 
-		PROCEDURE DefineOptions(options: Options.Options);
+		PROCEDURE DefineOptions*(options: Options.Options);
 		BEGIN
 			options.Add(0X,"symbolFileExtension",Options.String);
 			options.Add(0X,"noRedefinition",Options.Flag);
 			options.Add(0X,"noModification",Options.Flag);
 		END DefineOptions;
 
-		PROCEDURE GetOptions(options: Options.Options);
+		PROCEDURE GetOptions*(options: Options.Options);
 		BEGIN
 			IF ~options.GetString("symbolFileExtension",extension) THEN extension := ".Sym" END;
 			noRedefinition := options.GetFlag("noRedefinition");

+ 1 - 1
source/FoxTranspilerBackend.Mod

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

+ 5 - 5
source/FractalDemo.Mod

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

+ 1 - 1
source/Generic.Modules.Mod

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

+ 3 - 3
source/GenericLoader.Mod

@@ -324,7 +324,7 @@ TYPE
 		END InitLinkerX;
 
 		(* 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;
 		BEGIN
 			block := NIL;
@@ -342,7 +342,7 @@ TYPE
 			RETURN block;
 		END FindBlock;
 
-		PROCEDURE ExportBlock(block: GenericLinker.Block);
+		PROCEDURE ExportBlock*(block: GenericLinker.Block);
 		BEGIN
 			IF block.identifier.fingerprint # 0 THEN
 				hash.Put(block.identifier.fingerprint, block)
@@ -354,7 +354,7 @@ TYPE
 			END;
 		END ExportBlock;
 
-		PROCEDURE ImportBlock(CONST fixup: ObjectFile.Fixup): GenericLinker.Block;
+		PROCEDURE ImportBlock*(CONST fixup: ObjectFile.Fixup): GenericLinker.Block;
 		VAR name: Modules.Name; res: LONGINT;
 			msg: ARRAY 128 OF CHAR; module: Modules.Module; adr: ADDRESS; m: HashTableInt;
 			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;
 
 		(** override *)
-		PROCEDURE AlikeX( ): ArrayXdBytes.Array;
+		PROCEDURE AlikeX*( ): ArrayXdBytes.Array;
 		VAR copy: HCube;
 		BEGIN
 			NEW( copy, origin[0], len[0], origin[1], len[1], origin[2], len[2], origin[3], len[3] );  RETURN copy;
 		END AlikeX;
 
-		PROCEDURE NewRangeX( neworigin, newlen: ArrayXdBytes.IndexArray;  copydata: BOOLEAN );
+		PROCEDURE NewRangeX*( neworigin, newlen: ArrayXdBytes.IndexArray;  copydata: BOOLEAN );
 		BEGIN
 			IF LEN( newlen ) # 4 THEN HALT( 1001 ) END;
 			NewRangeX^( neworigin, newlen, copydata );
 		END NewRangeX;
 
-		PROCEDURE ValidateCache;
+		PROCEDURE ValidateCache*;
 		BEGIN
 			ValidateCache^;
 			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;
 
 		(** override *)
-		PROCEDURE AlikeX( ): ArrayXdBytes.Array;
+		PROCEDURE AlikeX*( ): ArrayXdBytes.Array;
 		VAR copy: HCube;
 		BEGIN
 			NEW( copy, origin[0], len[0], origin[1], len[1], origin[2], len[2], origin[3], len[3] );  RETURN copy;
 		END AlikeX;
 
-		PROCEDURE NewRangeX( neworigin, newlen: ArrayXdBytes.IndexArray;  copydata: BOOLEAN );
+		PROCEDURE NewRangeX*( neworigin, newlen: ArrayXdBytes.IndexArray;  copydata: BOOLEAN );
 		BEGIN
 			IF LEN( newlen ) # 4 THEN HALT( 1001 ) END;
 			NewRangeX^( neworigin, newlen, copydata );
 		END NewRangeX;
 
-		PROCEDURE ValidateCache;
+		PROCEDURE ValidateCache*;
 		BEGIN
 			ValidateCache^;
 			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;
 
 		(** override *)
-		PROCEDURE AlikeX( ): ArrayXdBytes.Array;
+		PROCEDURE AlikeX*( ): ArrayXdBytes.Array;
 		VAR copy: HCube;
 		BEGIN
 			NEW( copy, origin[0], len[0], origin[1], len[1], origin[2], len[2], origin[3], len[3] );  RETURN copy;
 		END AlikeX;
 
-		PROCEDURE NewRangeX( neworigin, newlen: ArrayXdBytes.IndexArray;  copydata: BOOLEAN );
+		PROCEDURE NewRangeX*( neworigin, newlen: ArrayXdBytes.IndexArray;  copydata: BOOLEAN );
 		BEGIN
 			IF LEN( newlen ) # 4 THEN HALT( 1001 ) END;
 			NewRangeX^( neworigin, newlen, copydata );
 		END NewRangeX;
 
-		PROCEDURE ValidateCache;
+		PROCEDURE ValidateCache*;
 		BEGIN
 			ValidateCache^;
 			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;
 
 		(** override *)
-		PROCEDURE AlikeX( ): ArrayXdBytes.Array;
+		PROCEDURE AlikeX*( ): ArrayXdBytes.Array;
 		VAR copy: HCube;
 		BEGIN
 			NEW( copy, origin[0], len[0], origin[1], len[1], origin[2], len[2], origin[3], len[3] );  RETURN copy;
 		END AlikeX;
 
-		PROCEDURE NewRangeX( neworigin, newlen: ArrayXdBytes.IndexArray;  copydata: BOOLEAN );
+		PROCEDURE NewRangeX*( neworigin, newlen: ArrayXdBytes.IndexArray;  copydata: BOOLEAN );
 		BEGIN
 			IF LEN( newlen ) # 4 THEN HALT( 1001 ) END;
 			NewRangeX^( neworigin, newlen, copydata );
 		END NewRangeX;
 
-		PROCEDURE ValidateCache;
+		PROCEDURE ValidateCache*;
 		BEGIN
 			ValidateCache^;
 			IF dim # 4 THEN HALT( 100 ) END;

+ 1 - 1
source/HTMLTransformer.Mod

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

+ 2 - 2
source/HotKeysCommands.Mod

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

+ 7 - 7
source/I386Decoder.Mod

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

+ 13 - 13
source/IMAPGUI.Mod

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

+ 2 - 2
source/ISO9660Files.Mod

@@ -38,7 +38,7 @@ MODULE ISO9660Files;	(** AUTHOR "?/be"; PURPOSE "ISO 9660 File System (ported fr
 				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. *)
-			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;
 			BEGIN {EXCLUSIVE}
 				res := 0; f := NIL;
@@ -57,7 +57,7 @@ MODULE ISO9660Files;	(** AUTHOR "?/be"; PURPOSE "ISO 9660 File System (ported fr
 			END Old0;
 
 			(** 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
 				fname, name, mmask, pname, fullname: Filename;
 				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
 			END Available;
 
-			PROCEDURE GetBlock(adr: LONGINT; VAR blk: ARRAY OF CHAR);
+			PROCEDURE GetBlock*(adr: LONGINT; VAR blk: ARRAY OF CHAR);
 			VAR res, i: LONGINT;
 			BEGIN {EXCLUSIVE}
 				ASSERT(dev # NIL, 101);
@@ -47,19 +47,19 @@ MODULE ISO9660Volumes;	(* AUTHOR "?/be"; PURPOSE "ISO 9660 volume (ported from N
 				ASSERT(res = 0, 102)
 			END GetBlock;
 
-			PROCEDURE AllocBlock(hint: Files.Address; VAR adr: Files.Address);
+			PROCEDURE AllocBlock*(hint: Files.Address; VAR adr: Files.Address);
 			BEGIN HALT(301)
 			END AllocBlock;
 
-			PROCEDURE FreeBlock(adr: Files.Address);
+			PROCEDURE FreeBlock*(adr: Files.Address);
 			BEGIN HALT(301)
 			END FreeBlock;
 
-			PROCEDURE MarkBlock(adr: Files.Address);
+			PROCEDURE MarkBlock*(adr: Files.Address);
 			BEGIN HALT(301)
 			END MarkBlock;
 
-			PROCEDURE Marked(adr: Files.Address): BOOLEAN;
+			PROCEDURE Marked*(adr: Files.Address): BOOLEAN;
 			BEGIN HALT(301)
 			END Marked;
 		END Volume;

+ 4 - 4
source/Inputs.Mod

@@ -214,13 +214,13 @@ TYPE
 	Broadcaster = OBJECT (Group)
 		VAR sentinel: List;
 
-		PROCEDURE Register(s: Sink);
+		PROCEDURE Register*(s: Sink);
 		VAR n: List;
 		BEGIN {EXCLUSIVE}
 			NEW(n); n.s := s; n.next := sentinel.next; sentinel.next := n
 		END Register;
 
-		PROCEDURE Unregister(s: Sink);
+		PROCEDURE Unregister*(s: Sink);
 		VAR n: List;
 		BEGIN {EXCLUSIVE}
 			n := sentinel;
@@ -228,7 +228,7 @@ TYPE
 			IF n.next # NIL THEN n.next := n.next.next END
 		END Unregister;
 
-		PROCEDURE Handle(VAR msg: Message);
+		PROCEDURE Handle*(VAR msg: Message);
 		VAR n: List;
 		BEGIN {EXCLUSIVE}
 			n := sentinel.next;
@@ -273,7 +273,7 @@ TYPE
 	MouseFixer = OBJECT (Sink)
 		VAR ctrl: BOOLEAN;
 
-		PROCEDURE Handle(VAR m: Message);
+		PROCEDURE Handle*(VAR m: Message);
 		VAR new: BOOLEAN;
 		BEGIN {EXCLUSIVE}
 			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
 				most recently read "stream byte". Bit unstuffing is performed, where necessary.
 			*)
-			PROCEDURE NextBit() : LONGINT;
+			PROCEDURE NextBit*() : LONGINT;
 				BEGIN
 					IF curBytePos =  0 THEN
 

+ 1 - 1
source/MPEGVideoDecoder.Mod

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

+ 3 - 3
source/MainMenu.Mod

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

+ 2 - 2
source/MathErf.Mod

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

+ 3 - 3
source/MathMitLef.Mod

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

+ 7 - 7
source/MathRe.Mod

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

+ 4 - 4
source/MediaPlayer.Mod

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

+ 3 - 3
source/MenuEdit.Mod

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

+ 4 - 4
source/Models.Mod

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

+ 1 - 1
source/ModuleTrees.Mod

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

+ 3 - 3
source/MtxCplx.Mod

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

+ 3 - 3
source/MtxInt.Mod

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

+ 3 - 3
source/MtxRat.Mod

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

+ 3 - 3
source/MtxRe.Mod

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

+ 1 - 1
source/MultiLogger.Mod

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

+ 2 - 2
source/Notepad.Mod

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

+ 1 - 1
source/OGGVorbisPlayer.Mod

@@ -1855,7 +1855,7 @@ TYPE
 			vendorString*: ARRAY MaxVendorLength OF CHAR;
 			(* other comment fields are already defined in OGGUtilities.List *)
 
-		PROCEDURE Print;
+		PROCEDURE Print*;
 		VAR cur: CommentListElement;
 		BEGIN
 			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. *)
 		lastCtrl : BOOLEAN;	(* Value TRUE denotes Ctrl-key pressed. *)
 
-		PROCEDURE IsHit(x, y  : LONGINT) : BOOLEAN;
+		PROCEDURE IsHit*(x, y  : LONGINT) : BOOLEAN;
 		BEGIN RETURN TRUE;
 		END IsHit;
 
@@ -55,14 +55,14 @@ TYPE
 			y := SHORT(curY)
 		END Mouse;
 
-		PROCEDURE PointerMove(x, y : LONGINT; keys :SET);
+		PROCEDURE PointerMove*(x, y : LONGINT; keys :SET);
 		BEGIN {EXCLUSIVE}
 			curX := x; curY := y; curKeys := curKeys * {30, 31} + keys;
 			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 *)
 		END PointerMove;
 
-		PROCEDURE WheelMove(dz : LONGINT); (*fof*)
+		PROCEDURE WheelMove*(dz : LONGINT); (*fof*)
 		BEGIN
 			IF dz > 0 THEN
 				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 *)
 		END WheelMove;
 
-		PROCEDURE PointerUp(x, y : LONGINT; keys : SET);
+		PROCEDURE PointerUp*(x, y : LONGINT; keys : SET);
 		BEGIN {EXCLUSIVE}
 			curX := x; curY := y; curKeys := keys;
 			IF input # NIL THEN input.timer.Wakeup END
@@ -98,12 +98,12 @@ TYPE
 			END
 		END InsertKey;
 
-		PROCEDURE Close;
+		PROCEDURE Close*;
 		BEGIN {EXCLUSIVE}
 			InsertKey(0FFX, 0, {})
 		END Close;
 
-		PROCEDURE KeyEvent(ucs : LONGINT; flags : SET; keysym : LONGINT);
+		PROCEDURE KeyEvent*(ucs : LONGINT; flags : SET; keysym : LONGINT);
 		BEGIN {EXCLUSIVE}
 			IF fixMM & ((flags * Inputs.Ctrl # {}) # lastCtrl)  THEN
 				lastCtrl := flags * Inputs.Ctrl # {};
@@ -139,22 +139,22 @@ TYPE
 	OberonInput = OBJECT (Inputs.OberonInput)
 		VAR window : OberonWindow;
 
-		PROCEDURE Mouse(VAR x, y : INTEGER; VAR keys : SET);
+		PROCEDURE Mouse*(VAR x, y : INTEGER; VAR keys : SET);
 		BEGIN
 			window.Mouse(x, y, keys)
 		END Mouse;
 
-		PROCEDURE Read(VAR ch : CHAR; VAR b : BOOLEAN);
+		PROCEDURE Read*(VAR ch : CHAR; VAR b : BOOLEAN);
 		BEGIN
 			window.Read(ch, b)
 		END Read;
 
-		PROCEDURE Available(VAR num : INTEGER; VAR b : BOOLEAN);
+		PROCEDURE Available*(VAR num : INTEGER; VAR b : BOOLEAN);
 		BEGIN
 			window.Available(num, b)
 		END Available;
 
-		PROCEDURE KeyState(VAR k : SET);
+		PROCEDURE KeyState*(VAR k : SET);
 		BEGIN
 			window.KeyState(k)
 		END KeyState;
@@ -187,7 +187,7 @@ TYPE
 			END
 		END LocalAddDirty;
 
-		PROCEDURE Update;
+		PROCEDURE Update*;
 		BEGIN
 			IF Cache & (ml # MAX(LONGINT)) THEN
 				disp.Invalidate(WMRectangles.MakeRect(ml, mt, mr, mb));	(* updated dirty rectangle *)
@@ -363,7 +363,7 @@ TYPE
 			ASSERT(res = 0)
 		END Init;
 
-		PROCEDURE Finalize;
+		PROCEDURE Finalize*;
 		BEGIN
 			IF disp = NIL THEN RETURN END;
 			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 *)
 		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;
 		BEGIN {EXCLUSIVE}
 			f := NIL; Check(name, namebuf, res);
@@ -537,7 +537,7 @@ TYPE
 			RETURN f
 		END New0;
 
-		PROCEDURE Old0(name: ARRAY OF CHAR): Files.File;
+		PROCEDURE Old0*(name: ARRAY OF CHAR): Files.File;
 		VAR
 			i, k, res: LONGINT; f: File; header: DiskAdr; buf: Buffer; head: FileHd;
 			namebuf: FileName; inxpg: Index;
@@ -570,7 +570,7 @@ TYPE
 			RETURN f
 		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;
 		BEGIN {EXCLUSIVE}
 			Check(name, namebuf, res);
@@ -589,7 +589,7 @@ TYPE
 			END
 		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;
 		BEGIN {EXCLUSIVE}
 			Check(old, oldbuf, res);
@@ -612,13 +612,13 @@ TYPE
 			END
 		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;
 		BEGIN {EXCLUSIVE}
 			b := TRUE; enumerate(SELF, mask, DirRootAdr, flags, enum, b, fh, fn)
 		END Enumerate0;
 
-		PROCEDURE FileKey(name: ARRAY OF CHAR): LONGINT;
+		PROCEDURE FileKey*(name: ARRAY OF CHAR): LONGINT;
 			VAR res: LONGINT; namebuf: FileName; header: DiskAdr;
 		BEGIN {EXCLUSIVE}
 			header := 0;
@@ -629,7 +629,7 @@ TYPE
 			RETURN header
 		END FileKey;
 
-		PROCEDURE Finalize;
+		PROCEDURE Finalize*;
 		BEGIN {EXCLUSIVE}
 			dir.Cleanup();
 			vol.Finalize;
@@ -651,7 +651,7 @@ TYPE
 			ext: ARRAY ETS OF Index;
 			sec: SectorTable;
 
-		PROCEDURE Set(VAR r: Files.Rider; pos: LONGINT);
+		PROCEDURE Set*(VAR r: Files.Rider; pos: LONGINT);
 		VAR a, b: LONGINT;
 		BEGIN {EXCLUSIVE}
 			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
 		END Set;
 
-		PROCEDURE Pos(VAR r: Files.Rider): LONGINT;
+		PROCEDURE Pos*(VAR r: Files.Rider): LONGINT;
 		BEGIN
 			RETURN r.apos*SS + r.bpos - HS
 		END Pos;
 
-		PROCEDURE Read(VAR r: Files.Rider; VAR x: CHAR);
+		PROCEDURE Read*(VAR r: Files.Rider; VAR x: CHAR);
 		VAR buf: Buffer;
 		BEGIN {EXCLUSIVE}
 			ASSERT(r.file = SELF);
@@ -695,7 +695,7 @@ TYPE
 			END
 		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;
 		BEGIN {EXCLUSIVE}
 			ASSERT(r.file = SELF);
@@ -730,7 +730,7 @@ TYPE
 			END;
 		END ReadBytes;
 
-		PROCEDURE Write(VAR r: Files.Rider; x: CHAR);
+		PROCEDURE Write*(VAR r: Files.Rider; x: CHAR);
 		VAR buf: Buffer;
 		BEGIN {EXCLUSIVE}
 			ASSERT(r.file = SELF);
@@ -758,7 +758,7 @@ TYPE
 			buf.data.B[r.bpos] := x; INC(r.bpos); buf.mod := TRUE
 		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;
 		BEGIN {EXCLUSIVE}
 			ASSERT(r.file = SELF);
@@ -791,27 +791,27 @@ TYPE
 			END
 		END WriteBytes;
 
-		PROCEDURE Length(): LONGINT;
+		PROCEDURE Length*(): LONGINT;
 		BEGIN {EXCLUSIVE}
 			RETURN aleng*SS + bleng - HS
 		END Length;
 
-		PROCEDURE GetDate(VAR t, d: LONGINT);
+		PROCEDURE GetDate*(VAR t, d: LONGINT);
 		BEGIN {EXCLUSIVE}
 			t := time; d := date
 		END GetDate;
 
-		PROCEDURE SetDate(t, d: LONGINT);
+		PROCEDURE SetDate*(t, d: LONGINT);
 		BEGIN {EXCLUSIVE}
 			modH := TRUE; time := t; date := d
 		END SetDate;
 
-		PROCEDURE GetName(VAR name: ARRAY OF CHAR);
+		PROCEDURE GetName*(VAR name: ARRAY OF CHAR);
 		BEGIN {EXCLUSIVE}
 			Files.JoinName(fs.prefix, SELF.name, name)
 		END GetName;
 
-		PROCEDURE Register0(VAR res: LONGINT);
+		PROCEDURE Register0*(VAR res: LONGINT);
 		BEGIN {EXCLUSIVE}
 			Unbuffer(SELF);
 			IF ~registered & (name # "") THEN
@@ -823,7 +823,7 @@ TYPE
 			END
 		END Register0;
 
-		PROCEDURE Update;
+		PROCEDURE Update*;
 		BEGIN {EXCLUSIVE}
 			Unbuffer(SELF)
 		END Update;

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