| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179 |
- (* Release 3.00 *)
- (* Copyright (C) 1989..1991 Jensen & Partners International *)
- include "corelib.inc"
- module initmwin
- section
- segment ENTERCODE(CODE,28H)
- public __ecode_dummy :
- segment INITCODE(CODE,28H)
- public __icode_dummy :
- segment _TEXT(CODE,28H)
- segment _INIT(INIT_CODE,28H)
- public __initcode_dummy :
- segment _FAR_DATA(FAR_DATA,28H)
- public __fd_dummy :
- segment STACK(STACK,74H)
- public __s_dummy :
- segment BEGDATA(DATA,28H)
- segment _DATA(DATA,28H)
- public __ud_dummy :
- segment BSS_START(BSS,28H)
- segment _BSS(BSS,28H)
- segment BSS_END(BSS,28H)
- section
- segment _TEXT(CODE,28H)
- segment _DATA(DATA,28H)
- select _DATA
- public __ireg: org 10
- select _TEXT
- extrn INITAPP
- extrn WAITEVENT
- extrn WINMAIN
- extrn _exit
- public ENTRYPOINT:
- xor ax,ax; push ax;
- call far WAITEVENT;
- push [__ireg][0]
- call far INITAPP
- or ax, ax
- jz BadApp
- push [__ireg][0]
- push [__ireg][2]
- push [__ireg][4]
- push [__ireg][6]
- push [__ireg][8]
- call far WINMAIN
- public exitApp:
- push ax
- (*%F NearCall *)
- call far _exit
- (*%E *)
- (*%T NearCall *)
- call _exit
- (*%E *)
- BadApp:
- mov ax, 0FFH
- jmp exitApp
- 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
- select _DATA
- InitRec: dw 0, 0, 0, _INIT
- select BSS_START
- public __bss_start:
- select BSS_END
- public __bss_end:
- select _TEXT
- extrn _main
- extrn __startup
- extrn _x_main
- extrn _x_initx
- extrn __initx
- extrn _x_bss_end
- extrn _x_bss_start
- extrn __ireg
- extrn INITTASK
- select ENTERCODE
- public __wstart:
- sub bp, bp
- push bp (* terminate bp chain ? *)
- call far INITTASK
- or ax, ax
- jz BadApp
- mov [__ireg][0],di
- mov [__ireg][2],si
- mov [__ireg][4],es
- mov [__ireg][6],bx
- mov [__ireg][8],dx
- (*%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], _main
- (*%E*)
- mov word [_x_bss_end], __bss_end
- mov word [_x_bss_start], __bss_start
- mov bx, InitRec
- mov ax, ds
- extrn __InitLink
- call far __InitLink
- mov ax,cs:[mainaddress][4]
- mov word [_x_initx][0], ax
- mov ax,cs:[mainaddress][6]
- mov word [_x_initx][2], ax
- jmp far __startup
- BadApp:
- mov ax, 0FFH
- extrn exitApp
- jmp far exitApp
- 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 _main
- extrn __initm
- dd __initm
- end*
|