From ec74db92724c181962479703092365b332b70b0a Mon Sep 17 00:00:00 2001 From: James Haley Date: Tue, 26 Apr 2011 05:49:53 +0000 Subject: 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 --- opl/opl_win32.c | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) (limited to 'opl/opl_win32.c') diff --git a/opl/opl_win32.c b/opl/opl_win32.c index 29df3643..277ce76c 100644 --- a/opl/opl_win32.c +++ b/opl/opl_win32.c @@ -72,8 +72,35 @@ static void OPL_Win32_PortWrite(opl_port_t port, unsigned int value) ); } -// 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 -- cgit v1.2.3