Browse Source

Ported VMWareTools

git-svn-id: https://svn.inf.ethz.ch/svn/lecturers/a2/trunk@8198 8c9fc860-2736-0410-a75d-ab315db34111
negelef 7 years ago
parent
commit
23cbc804f4
2 changed files with 151 additions and 23 deletions
  1. 1 1
      source/Release.Tool
  2. 150 22
      source/VMWareTools.Mod

+ 1 - 1
source/Release.Tool

@@ -1126,7 +1126,7 @@ PACKAGE GuiApplications ARCHIVE "GuiApplications.zip" SOURCE "GuiApplicationsSrc
 
 
 	HotKeysCommands.Mod
 	HotKeysCommands.Mod
 
 
-	I386 { I386.VMWareTools.Mod }		# VMWare
+	BIOS { VMWareTools.Mod }		# VMWare
 	SynergyClient.Mod			# Synergy
 	SynergyClient.Mod			# Synergy
 
 
 	NATIVE {
 	NATIVE {

+ 150 - 22
source/I386.VMWareTools.Mod → source/VMWareTools.Mod

@@ -31,122 +31,250 @@ VAR
 	textbuffer : Strings.String;
 	textbuffer : Strings.String;
 
 
 PROCEDURE -ReadMouse() : LONGINT;
 PROCEDURE -ReadMouse() : LONGINT;
-CODE {SYSTEM.i386}
-	PUSH ECX
+CODE
+#IF I386 THEN
 	MOV EAX, 564D5868H
 	MOV EAX, 564D5868H
+	PUSH ECX
 	MOV ECX, 4
 	MOV ECX, 4
 	MOV DX, 5658H
 	MOV DX, 5658H
 	IN EAX, DX;
 	IN EAX, DX;
 	POP ECX
 	POP ECX
+#ELSIF AMD64 THEN
+	MOV EAX, 564D5868H
+	PUSH RCX
+	MOV ECX, 4
+	MOV DX, 5658H
+	IN EAX, DX;
+	POP RCX
+#ELSE
+	unimplemented
+#END
 END ReadMouse;
 END ReadMouse;
 
 
 PROCEDURE -WriteMouse(pos : LONGINT);
 PROCEDURE -WriteMouse(pos : LONGINT);
-CODE {SYSTEM.i386}
-	PUSH ECX
+CODE
+#IF I386 THEN
 	MOV EAX, 564D5868H
 	MOV EAX, 564D5868H
 	POP EBX
 	POP EBX
+	PUSH ECX
 	MOV ECX, 5
 	MOV ECX, 5
 	MOV DX, 5658H
 	MOV DX, 5658H
 	OUT DX, EAX;
 	OUT DX, EAX;
 	POP ECX
 	POP ECX
+#ELSIF AMD64 THEN
+	MOV EAX, 564D5868H
+	POP EBX
+	PUSH RCX
+	MOV ECX, 5
+	MOV DX, 5658H
+	OUT DX, EAX;
+	POP RCX
+#ELSE
+	unimplemented
+#END
 END WriteMouse;
 END WriteMouse;
 
 
 PROCEDURE -SendLength(l : LONGINT);
 PROCEDURE -SendLength(l : LONGINT);
-CODE {SYSTEM.i386}
-	PUSH ECX
+CODE
+#IF I386 THEN
 	MOV EAX, 564D5868H
 	MOV EAX, 564D5868H
 	POP EBX
 	POP EBX
+	PUSH ECX
 	MOV ECX, 8
 	MOV ECX, 8
 	MOV DX, 5658H
 	MOV DX, 5658H
 	OUT DX, EAX;
 	OUT DX, EAX;
 	POP ECX
 	POP ECX
+#ELSIF AMD64 THEN
+	MOV EAX, 564D5868H
+	POP EBX
+	PUSH RCX
+	MOV ECX, 8
+	MOV DX, 5658H
+	OUT DX, EAX;
+	POP RCX
+#ELSE
+	unimplemented
+#END
 END SendLength;
 END SendLength;
 
 
 PROCEDURE -Send4Chars(chars : LONGINT);
 PROCEDURE -Send4Chars(chars : LONGINT);
-CODE {SYSTEM.i386}
-	PUSH ECX
+CODE
+#IF I386 THEN
 	MOV EAX, 564D5868H
 	MOV EAX, 564D5868H
 	POP EBX
 	POP EBX
+	PUSH ECX
 	MOV ECX, 9
 	MOV ECX, 9
 	MOV DX, 5658H
 	MOV DX, 5658H
 	OUT DX, EAX;
 	OUT DX, EAX;
 	POP ECX
 	POP ECX
+#ELSIF AMD64 THEN
+	MOV EAX, 564D5868H
+	POP EBX
+	PUSH RCX
+	MOV ECX, 9
+	MOV DX, 5658H
+	OUT DX, EAX;
+	POP RCX
+#ELSE
+	unimplemented
+#END
 END Send4Chars;
 END Send4Chars;
 
 
 PROCEDURE -ReceiveLength() : LONGINT;
 PROCEDURE -ReceiveLength() : LONGINT;
-CODE {SYSTEM.i386}
-	PUSH ECX
+CODE
+#IF I386 THEN
 	MOV EAX, 564D5868H
 	MOV EAX, 564D5868H
+	PUSH ECX
 	MOV ECX, 6
 	MOV ECX, 6
 	MOV DX, 5658H
 	MOV DX, 5658H
 	IN EAX, DX;
 	IN EAX, DX;
 	POP ECX
 	POP ECX
+#ELSIF AMD64 THEN
+	MOV EAX, 564D5868H
+	PUSH RCX
+	MOV ECX, 6
+	MOV DX, 5658H
+	IN EAX, DX;
+	POP RCX
+#ELSE
+	unimplemented
+#END
 END ReceiveLength;
 END ReceiveLength;
 
 
 PROCEDURE -Receive4Chars() : LONGINT;
 PROCEDURE -Receive4Chars() : LONGINT;
-CODE {SYSTEM.i386}
-	PUSH ECX
+CODE
+#IF I386 THEN
 	MOV EAX, 564D5868H
 	MOV EAX, 564D5868H
+	PUSH ECX
 	MOV ECX, 7
 	MOV ECX, 7
 	MOV DX, 5658H
 	MOV DX, 5658H
 	IN EAX, DX
 	IN EAX, DX
 	POP ECX
 	POP ECX
+#ELSIF AMD64 THEN
+	MOV EAX, 564D5868H
+	PUSH RCX
+	MOV ECX, 7
+	MOV DX, 5658H
+	IN EAX, DX
+	POP RCX
+#ELSE
+	unimplemented
+#END
 END Receive4Chars;
 END Receive4Chars;
 
 
 PROCEDURE -GetVirtualHWVersion() : LONGINT;
 PROCEDURE -GetVirtualHWVersion() : LONGINT;
-CODE {SYSTEM.i386}
-	PUSH ECX
+CODE
+#IF I386 THEN
 	MOV EAX, 564D5868H
 	MOV EAX, 564D5868H
+	PUSH ECX
 	MOV ECX, 11H
 	MOV ECX, 11H
 	MOV DX, 5658H
 	MOV DX, 5658H
 	IN EAX, DX
 	IN EAX, DX
 	POP ECX
 	POP ECX
+#ELSIF AMD64 THEN
+	MOV EAX, 564D5868H
+	PUSH RCX
+	MOV ECX, 11H
+	MOV DX, 5658H
+	IN EAX, DX
+	POP RCX
+#ELSE
+	unimplemented
+#END
 END GetVirtualHWVersion;
 END GetVirtualHWVersion;
 
 
 PROCEDURE -GetVMWareVersion() : LONGINT;
 PROCEDURE -GetVMWareVersion() : LONGINT;
-CODE {SYSTEM.i386}
-	PUSH ECX
+CODE
+#IF I386 THEN
 	MOV EAX, 564D5868H
 	MOV EAX, 564D5868H
+	PUSH ECX
 	MOV ECX, 0AH
 	MOV ECX, 0AH
 	MOV DX, 5658H
 	MOV DX, 5658H
 	IN EAX, DX
 	IN EAX, DX
 	MOV EAX, ECX
 	MOV EAX, ECX
 	POP ECX
 	POP ECX
+#ELSIF AMD64 THEN
+	MOV EAX, 564D5868H
+	PUSH RCX
+	MOV ECX, 0AH
+	MOV DX, 5658H
+	IN EAX, DX
+	MOV EAX, ECX
+	POP RCX
+#ELSE
+	unimplemented
+#END
 END GetVMWareVersion;
 END GetVMWareVersion;
 
 
 (*
 (*
 PROCEDURE -GetDeviceInformation(nrnr : LONGINT) : LONGINT;
 PROCEDURE -GetDeviceInformation(nrnr : LONGINT) : LONGINT;
-CODE {SYSTEM.i386}
-	PUSH ECX
+CODE
+#IF I386 THEN
 	MOV EAX, 564D5868H
 	MOV EAX, 564D5868H
 	POP EBX
 	POP EBX
+	PUSH ECX
 	MOV ECX, 0BH
 	MOV ECX, 0BH
 	MOV DX, 5658H
 	MOV DX, 5658H
 	IN EAX, DX
 	IN EAX, DX
 	MOV EAX, EBX
 	MOV EAX, EBX
 	POP ECX
 	POP ECX
+#ELSIF AMD64 THEN
+	MOV EAX, 564D5868H
+	POP EBX
+	PUSH RCX
+	MOV ECX, 0BH
+	MOV DX, 5658H
+	IN EAX, DX
+	MOV EAX, EBX
+	POP RCX
+#ELSE
+	unimplemented
+#END
 END GetDeviceInformation;
 END GetDeviceInformation;
 *)
 *)
 
 
 PROCEDURE -SetGUIOptions(options: SET);
 PROCEDURE -SetGUIOptions(options: SET);
-CODE {SYSTEM.i386}
-	PUSH ECX
+CODE
+#IF I386 THEN
 	MOV EAX, 564D5868H
 	MOV EAX, 564D5868H
 	POP EBX
 	POP EBX
+	PUSH ECX
 	MOV ECX, 0EX
 	MOV ECX, 0EX
 	MOV DX, 5658H
 	MOV DX, 5658H
 	OUT DX, EAX;
 	OUT DX, EAX;
 	POP ECX
 	POP ECX
+#ELSIF AMD64 THEN
+	MOV EAX, 564D5868H
+	POP EBX
+	PUSH RCX
+	MOV ECX, 0EX
+	MOV DX, 5658H
+	OUT DX, EAX;
+	POP RCX
+#ELSE
+	unimplemented
+#END
 END SetGUIOptions;
 END SetGUIOptions;
 
 
 PROCEDURE -GetGUIOptions(): SET;
 PROCEDURE -GetGUIOptions(): SET;
-CODE {SYSTEM.i386}
-	PUSH ECX
+CODE
+#IF I386 THEN
 	MOV EAX, 564D5868H
 	MOV EAX, 564D5868H
+	PUSH ECX
 	MOV ECX, 0DX
 	MOV ECX, 0DX
 	MOV DX, 5658H
 	MOV DX, 5658H
 	IN EAX, DX;
 	IN EAX, DX;
 	POP ECX
 	POP ECX
+#ELSIF AMD64 THEN
+	MOV EAX, 564D5868H
+	PUSH RCX
+	MOV ECX, 0DX
+	MOV DX, 5658H
+	IN EAX, DX;
+	POP RCX
+#ELSE
+	unimplemented
+#END
 END GetGUIOptions;
 END GetGUIOptions;
 
 
 PROCEDURE SetMousePos(x, y : LONGINT);
 PROCEDURE SetMousePos(x, y : LONGINT);