INITWDLL.A 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
  1. (* Release 3.10 *)
  2. (*-------------------------------------------------------------------------*
  3. * *
  4. * INITWDLL.A - Windows DLL startup *
  5. * *
  6. * COPYRIGHT (C) 1989..1992 Clarion Software Corporation. *
  7. * All Rights Reserved *
  8. * *
  9. *--------------------------------------------------------------------------*)
  10. module initwdll
  11. section
  12. segment ENTERCODE(CODE,28H)
  13. segment INITCODE(CODE,28H)
  14. segment MP_CODE(MP_CODE,68H)
  15. segment _TEXT(CODE,28H)
  16. segment _INIT(INIT_CODE,28H)
  17. segment _FAR_DATA(FAR_DATA,28H)
  18. segment FAR_BSS(FAR_BSS,28H)
  19. segment CONST(CONST,28H)
  20. segment _CONST(DATA,28H)
  21. segment _DATA(DATA,28H)
  22. segment BSS_START(BSS,28H)
  23. segment _BSS(BSS,28H)
  24. segment BSS_END(BSS,28H)
  25. segment STACK(STACK,74H)
  26. section
  27. segment ENTERCODE(CODE,28H)
  28. segment CODE(none,28H);
  29. segment INITCODE(CODE,28H)
  30. segment _TEXT(CODE,28H)
  31. segment _FAR_DATA(FAR_DATA,28H)
  32. segment EMU_STATE(DATA,28H)
  33. EMU_STATE__: org 0;
  34. segment STACK(STACK,74H)
  35. STACK__: org 0;
  36. segment BEGDATA(DATA,28H)
  37. BEGDATA__: org 0;
  38. segment _INIT(INIT_CODE,28H)
  39. _INIT__: org 0;
  40. segment CONST(CONST,28H)
  41. CONST__: org 0;
  42. segment _CONST(DATA,28H)
  43. _CONST__: org 0;
  44. segment _DATA(DATA,28H)
  45. _DATA__: org 0;
  46. segment BSS_START(BSS,28H)
  47. BSS_START__: org 0;
  48. segment _BSS(BSS,28H)
  49. _BSS__: org 0;
  50. segment BSS_END(BSS,28H)
  51. BSS_END__: org 0;
  52. group DGROUP(BEGDATA,EMU_STATE,CONST,_CONST,_DATA,BSS_START,_BSS,BSS_END,STACK)
  53. select BEGDATA
  54. beg_data_dummy : dw 0, 0, 0, 0, 0, 0, 0, 0, 0 (* 18 Bytes *)
  55. select _TEXT
  56. db 0
  57. select _DATA
  58. SSisDS = 8
  59. HeapSize = 6
  60. StackSize = 4
  61. select _DATA
  62. InitRec: dw 0, 0, 0, _INIT
  63. select BSS_START
  64. public __bss_start:
  65. public _edata:
  66. select BSS_END
  67. public __bss_end:
  68. public _end:
  69. select _INIT
  70. public init_d :
  71. add ax, 4
  72. add ax, 4
  73. add ax, 4
  74. add ax, 4
  75. add ax, 4
  76. add ax, 4
  77. ret far 0
  78. select _TEXT
  79. text_dummy : db 0
  80. select ENTERCODE
  81. extrn _main
  82. extrn __startup
  83. extrn _x_main
  84. extrn _x_initx
  85. extrn __heap_size
  86. extrn _x_bss_end
  87. extrn _x_bss_start
  88. extrn __near_stack_start
  89. extrn __x_near_stack_start
  90. extrn __CmdLine
  91. extrn __iHandle
  92. extrn __InitLink
  93. extrn __initWDLL
  94. extrn LOCALINIT
  95. extrn LIBMAIN
  96. public __dstart :
  97. push bp
  98. push di
  99. push si
  100. mov [__CmdLine], si (* es:si = command line *)
  101. mov [__CmdLine][2], es
  102. mov [__iHandle], di (* hInstance *)
  103. mov [__heap_size], cx (* Heap Size from .EXP file *)
  104. jcxz $NoHeap
  105. push ax
  106. push cx
  107. xor ax, ax
  108. push ds
  109. push ax
  110. push cx
  111. call far LOCALINIT (* Initialize Local Heap *)
  112. or ax, ax
  113. pop cx
  114. pop ax
  115. jz $HeapInitError
  116. $NoHeap:
  117. (*%T _fcall*)
  118. mov bx,cs:[mainaddress]
  119. mov word [_x_main][0], bx
  120. mov bx,cs:[mainaddress][2]
  121. mov word [_x_main][2], bx
  122. (*%E*)
  123. (*%F _fcall*)
  124. mov word [_x_main][0], LIBMAIN
  125. (*%E*)
  126. mov bx,cs:[mainaddress][4]
  127. mov word [_x_initx][0], bx
  128. mov bx,cs:[mainaddress][6]
  129. mov word [_x_initx][2], bx
  130. push ax
  131. push bx
  132. call far init_d
  133. mov bx, InitRec
  134. mov ax, ds
  135. call far __InitLink
  136. pop bx
  137. pop ax
  138. call far __startup
  139. $HeapInitError:
  140. pop si
  141. pop di
  142. pop bp
  143. ret far 0
  144. dw beg_data_dummy
  145. dw EMU_STATE__
  146. dw CONST__
  147. dw _CONST__
  148. dw _DATA__
  149. dw BSS_START__
  150. dw _BSS__
  151. dw BSS_END__ (* establishes order ! *)
  152. dw STACK__
  153. dw 0
  154. mainaddress:
  155. dd LIBMAIN
  156. dd __initWDLL
  157. end *
  158.