windows-nt/Source/XPSP1/NT/multimedia/media/avi/msvideo.16/libentry.asm

123 lines
3 KiB
NASM
Raw Permalink Normal View History

2020-09-26 03:20:57 -05:00
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; DLLENTRY.ASM
;
; simulates the NT DllEntryPoint call for a Win16 DLL
;
; Copyright (c) Microsoft Corporation 1989, 1990. All rights reserved.
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
PMODE = 1
?PLM=1 ; pascal call convention
?WIN=0 ; NO! Windows prolog/epilog code
.286
.xlist
include cmacros.inc
.list
DLL_PROCESS_DETACH = 0
DLL_PROCESS_ATTACH = 1
externFP DllEntryPoint
externFP LocalInit
ifndef SEGNAME
SEGNAME equ <_TEXT>
endif
createSeg %SEGNAME, CodeSeg, word, public, CODE
;-----------------------------------------------------------------------;
;
; Stuff needed to avoid the C runtime coming in, and init the windows
; reserved parameter block at the base of DGROUP
;
; NOTE if you need the 'C' startup dont use this file.
;
;-----------------------------------------------------------------------;
if 1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
sBegin Data
assumes ds,Data
DD 0 ; So null pointers get 0
DW 5 ; number of reserved ptrs
globalW pLocalHeap,0 ; Local heap pointer
globalW pAtomTable,0 ; Atom table pointer
globalW pStackTop,0 ; top of stack
globalW pStackMin,0 ; minimum value of SP
globalW pStackBot,0 ; bottom of stack
public __acrtused
__acrtused = 1
sEnd Data
endif;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
sBegin CodeSeg
assumes cs,CodeSeg
assumes ds,Data
assumes es,nothing
;--------------------------Private-Routine-----------------------------;
;
; LibEntry - called when DLL is loaded
;
; Entry:
; CX = size of heap
; DI = module handle
; DS = automatic data segment
; ES:SI = address of command line (not used)
; Returns:
; AX = TRUE if success
; History:
; 06-27-89 -by- Todd Laney [ToddLa]
; Created.
;-----------------------------------------------------------------------;
assumes ds,nothing
assumes es,nothing
cProc LibEntry,<FAR,PUBLIC,NODATA>,<>
cBegin
jcxz @f
cCall LocalInit,<0,0,cx>
@@: cCall DllEntryPoint, <di, 0,DLL_PROCESS_ATTACH, 0, 0>
cEnd
;--------------------------Private-Routine-----------------------------;
;
; WEP - called when DLL is unloaded
;
; History:
; 06-27-89 -by- Todd Laney [ToddLa]
; Created.
;-----------------------------------------------------------------------;
assumes ds,nothing
assumes es,nothing
cProc WEP, <FAR, PUBLIC, PASCAL>, <ds>
ParmW fSystemExit
cBegin
;
; HEY dont cleanup if windows is going down.
;
mov ax,fSystemExit
or ax,ax
;;; jnz just_exit
mov ax,DataBASE
mov ds,ax
assumes ds,Data
cCall DllEntryPoint, <ax, 0,DLL_PROCESS_DETACH, 0, 0>
just_exit:
cEnd
sEnd CodeSeg
end LibEntry