ref: ec74db92724c181962479703092365b332b70b0a
parent: 085797aeb4c05857b315ebf4448322829151aedc
author: James Haley <[email protected]>
date: Tue Apr 26 01:49:53 EDT 2011
Support for Win32 native OPL output when compiled with Microsoft Visual C++. Confirmed to work with Aureal Vortex AU8830 in Win98SE by GhostlyDeath. Subversion-branch: /trunk/chocolate-doom Subversion-revision: 2331
--- a/opl/opl_win32.c
+++ b/opl/opl_win32.c
@@ -72,8 +72,35 @@
);
}
-// TODO: MSVC version
-// #elif defined(_MSC_VER) && defined(_M_IX6) ...
+// haleyjd 20110417: MSVC version
+#elif defined(_MSC_VER) && defined(_M_IX86)
+
+static unsigned int OPL_Win32_PortRead(opl_port_t port)
+{
+ unsigned char result;
+ opl_port_t dst_port = opl_port_base + port;
+
+ __asm
+ {
+ mov edx, dword ptr [dst_port]
+ in al, dx
+ mov byte ptr [result], al
+ }
+
+ return result;
+}
+
+static void OPL_Win32_PortWrite(opl_port_t port, unsigned int value)
+{
+ opl_port_t dst_port = opl_port_base + port;
+
+ __asm
+ {
+ mov edx, dword ptr [dst_port]
+ mov al, byte ptr [value]
+ out dx, al
+ }
+}
#else