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

Reply via email to