INITWDLL.A 2.8 KB

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