|
@@ -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);
|