summaryrefslogtreecommitdiffstats
path: root/private/mvdm/wow16/mmsystem/drvr31.asm
diff options
context:
space:
mode:
Diffstat (limited to 'private/mvdm/wow16/mmsystem/drvr31.asm')
-rw-r--r--private/mvdm/wow16/mmsystem/drvr31.asm195
1 files changed, 195 insertions, 0 deletions
diff --git a/private/mvdm/wow16/mmsystem/drvr31.asm b/private/mvdm/wow16/mmsystem/drvr31.asm
new file mode 100644
index 000000000..d18862562
--- /dev/null
+++ b/private/mvdm/wow16/mmsystem/drvr31.asm
@@ -0,0 +1,195 @@
+ page ,132
+;-----------------------------Module-Header-----------------------------;
+; Module Name: DRVR31.ASM - Installable driver code.
+;
+; all this code does is pass any installable driver API on to
+; win 3.1 USER.
+;
+; Created: 28-08-91
+; Author: Todd Laney [ToddLa]
+;
+; Copyright (c) 1984-1991 Microsoft Corporation
+;
+;-----------------------------------------------------------------------;
+
+ ?PLM = 1
+ ?WIN = 0
+ PMODE = 1
+
+ .xlist
+ include cmacros.inc
+ include windows.inc
+ .list
+
+;
+; these are the USER driver interface functions
+;
+ externFP OpenDriver ; USER
+ externFP CloseDriver ; USER
+ externFP GetDriverModuleHandle ; USER
+ externFP SendDriverMessage ; USER
+ externFP DefDriverProc ; USER
+
+ifdef DEBUG
+ externFP GetModuleFileName ; KERNEL
+ externFP _dprintf ; COMM.ASM
+endif
+
+; The following structure should be used to access high and low
+; words of a DWORD. This means that "word ptr foo[2]" -> "foo.hi".
+
+LONG struc
+lo dw ?
+hi dw ?
+LONG ends
+
+FARPOINTER struc
+off dw ?
+sel dw ?
+FARPOINTER ends
+
+ifndef SEGNAME
+ SEGNAME equ <_TEXT>
+endif
+
+createSeg %SEGNAME, CodeSeg, word, public, CODE
+
+sBegin CodeSeg
+ assumes cs,CodeSeg
+ assumes ds,nothing
+ assumes es,nothing
+
+;-----------------------------------------------------------------------;
+;-----------------------------------------------------------------------;
+ assumes ds,nothing
+ assumes es,nothing
+
+ifdef DEBUG
+
+szSuccess:
+ db "MMSYSTEM: DrvOpen(%ls) (%ls)", 13,10,0
+
+szFailed:
+ db "MMSYSTEM: DrvOpen(%ls) *failed*", 13,10,0
+
+cProc DrvOpen, <FAR, PUBLIC, PASCAL, LOADDS>, <>
+ ParmD szDriverName
+ ParmD szSectionName
+ ParmD dw2
+ LocalV ach,128
+cBegin
+ cCall OpenDriver, <szDriverName, szSectionName, dw2>
+ push ax
+
+ lea bx,szFailed
+ or ax,ax
+ jz DrvOpenFailed
+
+ cCall GetDriverModuleHandle, <ax>
+
+ lea bx,ach
+ cCall GetModuleFileName,<ax, ss,bx, 128>
+
+ lea bx,szSuccess
+
+DrvOpenFailed:
+ lea ax,ach
+ push ss ; ach
+ push ax
+
+ push szDriverName.sel ; szDriverName
+ push szDriverName.off
+
+ push cs ; szFormat
+ push bx
+
+ call _dprintf ; dprintf(szFormat, szDriverName, ach)
+ add sp,6*2
+
+DrvOpenExit:
+ pop ax ; return hdrv to caller
+
+DrvOpenExitNow:
+cEnd
+
+else ; DEBUG
+
+cProc DrvOpen, <FAR, PUBLIC, PASCAL>, <>
+; ParmD szDriverName
+; ParmD szSectionName
+; ParmD dw2
+cBegin nogen
+
+ jmp OpenDriver
+
+cEnd nogen
+
+
+
+
+endif ; DEBUG
+
+;-----------------------------------------------------------------------;
+;-----------------------------------------------------------------------;
+ assumes ds,nothing
+ assumes es,nothing
+
+cProc DrvClose, <FAR, PUBLIC, PASCAL>, <>
+; ParmW hDriver
+; ParmD dw1
+; ParmD dw2
+cBegin nogen
+
+ jmp CloseDriver
+
+cEnd nogen
+
+;-----------------------------------------------------------------------;
+;-----------------------------------------------------------------------;
+ assumes ds,nothing
+ assumes es,nothing
+
+cProc DrvGetModuleHandle, <FAR, PUBLIC, PASCAL>, <>
+; ParmW hDriver
+cBegin nogen
+
+ jmp GetDriverModuleHandle
+
+cEnd nogen
+
+;-----------------------------------------------------------------------;
+;-----------------------------------------------------------------------;
+ assumes ds,nothing
+ assumes es,nothing
+
+cProc DrvSendMessage, <FAR, PUBLIC, PASCAL>, <>
+; ParmW hDriver
+; ParmW message
+; ParmD dw1
+; ParmD dw2
+cBegin nogen
+
+ jmp SendDriverMessage
+
+cEnd nogen
+
+;-----------------------------------------------------------------------;
+;-----------------------------------------------------------------------;
+ assumes ds,nothing
+ assumes es,nothing
+
+cProc DrvDefDriverProc, <FAR, PUBLIC, PASCAL>, <>
+; ParmD dwDriver
+; ParmW hDriver
+; ParmW message
+; ParmD dw1
+; ParmD dw2
+cBegin nogen
+
+ jmp DefDriverProc
+
+cEnd nogen
+
+sEnd
+
+end