| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177 |
- (* Release 3.10 *)
- (*-------------------------------------------------------------------------*
- * *
- * INITWDLL.A - Windows DLL startup *
- * *
- * COPYRIGHT (C) 1989..1992 Clarion Software Corporation. *
- * All Rights Reserved *
- * *
- *--------------------------------------------------------------------------*)
- module initwdll
- section
- segment ENTERCODE(CODE,28H)
- segment INITCODE(CODE,28H)
- segment MP_CODE(MP_CODE,68H)
- segment _TEXT(CODE,28H)
- segment _INIT(INIT_CODE,28H)
- segment _FAR_DATA(FAR_DATA,28H)
- segment FAR_BSS(FAR_BSS,28H)
- segment CONST(CONST,28H)
- segment _CONST(DATA,28H)
- segment _DATA(DATA,28H)
- segment BSS_START(BSS,28H)
- segment _BSS(BSS,28H)
- segment BSS_END(BSS,28H)
- segment STACK(STACK,74H)
- section
- segment ENTERCODE(CODE,28H)
- segment CODE(none,28H);
- segment INITCODE(CODE,28H)
- segment _TEXT(CODE,28H)
- segment _FAR_DATA(FAR_DATA,28H)
- segment EMU_STATE(DATA,28H)
- EMU_STATE__: org 0;
- segment STACK(STACK,74H)
- STACK__: org 0;
- segment BEGDATA(DATA,28H)
- BEGDATA__: org 0;
- segment _INIT(INIT_CODE,28H)
- _INIT__: org 0;
- segment CONST(CONST,28H)
- CONST__: org 0;
- segment _CONST(DATA,28H)
- _CONST__: org 0;
- segment _DATA(DATA,28H)
- _DATA__: org 0;
- segment BSS_START(BSS,28H)
- BSS_START__: org 0;
- segment _BSS(BSS,28H)
- _BSS__: org 0;
- segment BSS_END(BSS,28H)
- BSS_END__: org 0;
- group DGROUP(BEGDATA,EMU_STATE,CONST,_CONST,_DATA,BSS_START,_BSS,BSS_END,STACK)
- select BEGDATA
- beg_data_dummy : dw 0, 0, 0, 0, 0, 0, 0, 0, 0 (* 18 Bytes *)
- select _TEXT
- db 0
- select _DATA
- SSisDS = 8
- HeapSize = 6
- StackSize = 4
- select _DATA
- InitRec: dw 0, 0, 0, _INIT
- select BSS_START
- public __bss_start:
- public _edata:
- select BSS_END
- public __bss_end:
- public _end:
- select _INIT
- public init_d :
- add ax, 4
- add ax, 4
- add ax, 4
- add ax, 4
- add ax, 4
- add ax, 4
- ret far 0
- select _TEXT
- text_dummy : db 0
- select ENTERCODE
- extrn _main
- extrn __startup
- extrn _x_main
- extrn _x_initx
- extrn __heap_size
- extrn _x_bss_end
- extrn _x_bss_start
- extrn __near_stack_start
- extrn __x_near_stack_start
- extrn __CmdLine
- extrn __iHandle
- extrn __InitLink
- extrn __initWDLL
- extrn LOCALINIT
- extrn LIBMAIN
- public __dstart :
- push bp
- push di
- push si
- mov [__CmdLine], si (* es:si = command line *)
- mov [__CmdLine][2], es
- mov [__iHandle], di (* hInstance *)
- mov [__heap_size], cx (* Heap Size from .EXP file *)
- jcxz $NoHeap
- push ax
- push cx
- xor ax, ax
- push ds
- push ax
- push cx
- call far LOCALINIT (* Initialize Local Heap *)
- or ax, ax
- pop cx
- pop ax
- jz $HeapInitError
- $NoHeap:
- (*%T _fcall*)
- mov bx,cs:[mainaddress]
- mov word [_x_main][0], bx
- mov bx,cs:[mainaddress][2]
- mov word [_x_main][2], bx
- (*%E*)
- (*%F _fcall*)
- mov word [_x_main][0], LIBMAIN
- (*%E*)
- mov bx,cs:[mainaddress][4]
- mov word [_x_initx][0], bx
- mov bx,cs:[mainaddress][6]
- mov word [_x_initx][2], bx
- push ax
- push bx
- call far init_d
- mov bx, InitRec
- mov ax, ds
- call far __InitLink
- pop bx
- pop ax
- call far __startup
- $HeapInitError:
- pop si
- pop di
- pop bp
- ret far 0
- dw beg_data_dummy
- dw EMU_STATE__
- dw CONST__
- dw _CONST__
- dw _DATA__
- dw BSS_START__
- dw _BSS__
- dw BSS_END__ (* establishes order ! *)
- dw STACK__
- dw 0
- mainaddress:
- dd LIBMAIN
- dd __initWDLL
- end *
|