Menu

#394 mKEYB 0.46 - different version of KEYB found 5c1003c != d4cb003c

freedos13
wont-fix
mkeyb (2)
5
2024-06-05
2024-04-24
Oliver
No

I found a strange error when unloading mKEYB with the /U parameter after booting FreeDOS 1.3.

REM BOOT BEGIN
...
MODE select codepage 858 function completed
Refreshing codepage number 858
MODE select codepage 858 function completed
mKEYB 0.46 [Oct 09 2021] - GR - GERMAN - deutsche Tastatur (by tom)
...
REM BOOT END
C:\>mkeyb /U
mKEYB 0.46 [Oct 09 2021] - different version of KEYB found 5c1003c != d4cb003c
C:\>

See Screenshot for details.

The two addresses change on another FreeDOS guest machine in my VM.

1 Attachments

Discussion

  • fritz.mueller

    fritz.mueller - 2024-04-24

    I just tested it. This happens when mkeyb is not the last loaded resident driver.
    Change the order: ctmouse first, mkeyb last - and it should work.

     

    Last edit: fritz.mueller 2024-04-24
  • Jim Hall

    Jim Hall - 2024-04-25

    According to your screenshot, you are loading other drivers after mkeyb. The error message states mkeyb cannot unload because it is not the last loaded driver.

     
  • Aitor Santamaría Merino

    Hello Oliver,

    The topic you are raising affects the various "bugs" that you have opened
    on (m)KEYB, NANSI, etc., affecting virtually any driver or TSR that chains
    through int 2Fh to determine if it is already present in memory.

    The common standard way to receive int2Fh calls is to install itself as int
    2Fh handler, and pass on the next one when the call is not for you. Thus,
    these drivers are stacked, and once you determine that the call is not for
    you, you pass to the next one and lose control: you know who to call next,
    but not who called you.
    Thus, if you are called and you are on the top of the stack (i.e. the int2F
    handler points to you), there is no problem: you point the int2Fh to the
    next. When you are not (because some other program stacked itself on top of
    you), then there is no trivial say to un-link yourself from the chain,
    because you don't know where the address pointing you is in memory.

    To patch this, some later programs used the AMIS (on int 2Dh interface).
    However, programs that use 2Fh, or are forced to use 2Fh for MS-DOS
    compatibility, cannot solve it.

    I am afraid it is not a bug, bug an undesirable feature. Arguably someone
    can make FreeDOS drivers/TSR to never use int 2FH and use AMIs instead, but
    this would break MS-DOS compatibility. And furthermore, the gain is small
    if you correctly configure your FreeDOS, and thus it is unlikely that
    everyone would ever want to implement this.

    I hope this closes these bugs. Feel free to open as feature requests to use
    AMIS instead of int 2Fh and break MS-DOS compatibility.

    Aitor

    quoted reply removed

     

    Last edit: Jim Hall 2024-06-05
  • Aitor Santamaría Merino

    The main problem is cost-benefit. Its just not worth it.
    Just configure your AUTOEXEC.BAT properly.

    Aitor

    quoted reply removed

     

    Last edit: Jim Hall 2024-06-05
  • Jim Hall

    Jim Hall - 2024-06-05
    • status: open --> wont-fix
    • assigned_to: Aitor Santamaría Merino
     
  • Jim Hall

    Jim Hall - 2024-06-05

    I am closing this "bug." See Aitor's explanation in the notes.

     

Log in to post a comment.

MongoDB Logo MongoDB