home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / magazine / pcmagazi / 1992 / 11 / labnotes / libentry.asm < prev    next >
Assembly Source File  |  1992-02-24  |  2KB  |  65 lines

  1. ;LibEntry.ASM  - Entry module for Visual Basic Add-On DLL
  2. ;Copyright (c) 1991 Jay Munro
  3. ;First Published in PC Magazine June 16, 1992
  4.  
  5. .286
  6. .Model Medium
  7.  
  8. ;----------------------------------------------------------------------------
  9. ;Public Declarations
  10. ;----------------------------------------------------------------------------
  11.  
  12. Public LibEntry                         ;So Windows can find it
  13.  
  14. Extrn  LibMain:  Proc                   ;declare modules needed
  15. Extrn  LocalInit:Proc
  16.  
  17.  
  18. .Data
  19.  
  20. Dummy  DB    16  Dup (0)                ;Assembler .DLL's need this
  21.  
  22. .Code
  23.  
  24. ;----------------------------------------------------------------------------
  25. ;LibEntry module
  26. ;----------------------------------------------------------------------------
  27.  
  28. LibEntry Proc Far
  29.    Push    DI               ; handle of the module instance
  30.    Push    DS               ; library data segment
  31.    Push    CX               ; heap size
  32. ; -- not used for Visual Basic
  33. ;   Push    ES               ; command line segment
  34. ;   Push    SI               ; command line offset
  35.  
  36. ;---- If CX <> 0 then we have some heap to initialize
  37.    jcxz    CallMain         ; jump if no heap specified
  38.  
  39. ;---- Call Windows LocalInit to initialize local heap
  40.    Xor     AX,AX
  41.    Push    DS
  42.    Push    AX
  43.    Push    CX
  44.    Call    LocalInit
  45.    Or      AX,AX            ; did it do it ok ?
  46.    Jz      Error1           ; quit if it failed
  47.  
  48. ;---- LibMain can be called to do any special initialization
  49.  
  50. CallMain:
  51.    Call Far Ptr LibMain     ; invoke the startup routine (result in AX)
  52.    Jmp short Exit1          ; LibMain is responsible for stack clean up
  53.  
  54. Error1:                     ; no heap to initialize, or error
  55. ;   Pop     SI               ;    clean up stack
  56. ;   Pop     ES
  57.    Pop     CX
  58.    Pop     DS
  59.    Pop     DI
  60.  
  61. Exit1:
  62.    Ret
  63. LibEntry EndP
  64. End LibEntry            ;show Windows where to start
  65.