Hi!
6-Ноя-2005 17:44 [EMAIL PROTECTED] (Kenneth J. Davis) wrote to
[email protected]:
>>>+ jmp far [ds:_OemHook21] ; invoke OEM handler (no return)
>> Looks like bug: if before "ds=cs:_DGROUP_" DS doesn't contains segment
>> of _OemHook21, then it willn't contain it after POP DS (and JMP then tries
>> to get jump address from wrong point). Else, if DS contains segment of
>> _OemHook21 before this code, then why MOV DS above?
KJD> I agree there is a bug here, I originally coded this differently (copied
KJD> address to a variable in code segment which I believe a comments still
KJD> has remnants of)
push ax ; place for
push ax ; far address
push bp
mov bp,sp ; pointer to above place
push ds
mov ds,[cs:_DGROUP_]
lds ax,[_OemHook21]
mov [bp+6],ds
pop ds
cmp ax,-1 ; FP_OFF(OemHook21) != -1 ?
xchg [bp+4],ax
pop bp
je ...
retf
...: add sp,4
KJD> and then simplified it at some point (which introduced
KJD> the bug). I have a fix locally (just need to compile and test).
-------------------------------------------------------
SF.Net email is sponsored by:
Tame your development challenges with Apache's Geronimo App Server. Download
it for free - -and be entered to win a 42" plasma tv or your very own
Sony(tm)PSP. Click here to play: http://sourceforge.net/geronimo.php
_______________________________________________
Freedos-kernel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/freedos-kernel