
Anyway I forgot to say that in EDump.vxd (.386) is present one more
ID at file offset 170h must be patched too. It is needed for unloading
(for RunNumber=0) :)

Let's look at sdw386:
1) cpu test if |>386 is quite redundant
72) christoph gabler's tricks aren't good (i wanna say l??e, he will never
be good coder):
    smsw ax
    test al,1
    jne skip
   mov di, -1
   cmpsd
               ;meh... a try to extend family of RM tricks?
               ;it causes exception 13 - it's ok but
  exception 13 is  handled by bios as IRQ from lpt2 or xt hd or music card
 it changes 0:46bh byte
you cann use this "trick" but better install your own handler for int 13
(0dh) and
catch the exception to it (i didnn't test if you must pop one more word or
dword
from stack before iret in RM)

3 )paraphrase:
     mov bx, [bx]
    add bx,2
    mov  cx, [bx]
    mov  [bx], ffff
    sub  bx,2
   mov [bx],ffff
   ;and restore intvec
what does it mean?
if you know cpu=>386 you can use mov dword ptr [bx],ffffffff
but that's detail,
i'm not sure if interrupts are disabled while int 10h == ffffffff
but i don't recommend to overwite it

4) time check (int 1ah, 2ch,..)
hm... nowadays in multitasking environments you can't
truxt time in dos box (i tested it, and there are big differences,
especially when switching tasks)

5) sdw still crashes when run from ,for example windows commander,
is it because the command_is_my_parrent trick?

6) complete edump detection for windows 3.1 and 9x:

mov ax,1600h
int    2fh
cmp al, 3      ;or al,al  and similar al<>0 detections are bad, there can be
80h in al (refer intlist)
                     ; and win  not  present
je   detectIDonly
cmp al, 4
jl     noWin31or9x
;detect by vxd name (9x only)
mov ax,1684h
mov es, seg   EDumpVxDName  ;not needed in tiny or small or compact models
of course
mov di, offset EDumpVxDName   ;in tasm lea di,...
sub  bx, bx ; compare by name
int  2fh
mov ax, es
or  ax, di
jne   EDumpDetected
detectIDonly:
mov ax,1684h
sub di,di                            ;zeroing DI and ES is not needed
mov bx,EDumpVxDID
mov es,di
int 2fh
mov ax, es
or  ax, di
jne   EDumpDetected

;....
EDumpVxDName db "EDUMP   ",0   ;any name must have 8 upcase characters (fill
with spaces)

i wrote it now on the fly so bugs are allowed

EliCZ

note: my emails to ffselist can't be published , they are private-like

------------------------------------------------------------------------
[got permission from EliCZ, rar - 05-Sept-99]

