#412 int 15h AH=89h not implemented !

closed
nobody
ROM BIOS (28)
5
2012-10-15
2009-02-23
Czerno Bill
No

Surprisingly int 15 AH=89h is unimplemented in both 'legacy' and 'latest' Bochs main BIOSes.

Surely implementing this and other basic functions of the good old IBM AT BIOS should be a priority over newer fancy things like ACPI and deity knows what...

Are the coders possibly too young and not familiar with ISA-architecture ? I don't run Bochs often, and done nothing like systematic testing; yet oftentimes while firing an old program of mine or some 3rd party one, I will stumble upon problems casued by poor conformance. IMO it should be a priority to review the BIOS basics before adding those fancy extensions. This holds true of the video BIOS also - see other bug report.

Regards

--
Czerno

Discussion

  • Volker Ruppert
    Volker Ruppert
    2009-02-24

    First of all I changed the type to "feature request", since this is not a bug. I know that there are still some unimplemented BIOS functions, but nobody has requested this feature before you did it. I hope there will a BIOS expert with protected mode knowledge who can help us implementing it.

     
  • Czerno Bill
    Czerno Bill
    2009-02-24

    I changed the type to "feature request", since this is not a bug.
    nobody has requested this feature before you did it.

    Thank you, VRuppert. Sure, you're right an unimplemented feature cannot
    be buggy <G>. I do think however the reasonable expectation from a user PoV
    is that the virtual 'platform' as provided by Bochs should emulate an IBM
    PC-AT (AT3). Which is to say features such as the one being discussed are
    requested /implicitly/, IMVHO ;=)

    Admittedly int15/89 never was /necessary/ nor even convenient for entering (16-bit) protected mode, but the fact is, it's part of the ISA "legacy" and programs exist that rely on such BIOS functions.

    I hope there will a
    BIOS expert with protected mode knowledge who can help us implementing it.

    I too hope so; the particular feature is well documented (IBM's docs or,
    as always, Ralf Brown's interrupt list; there is even, or was, self documenting
    BIOS source code floating on the web.)

    Regards

    --
    Czerno

     
  • Please supply a test program to verify INT 15h AH=89h functionality.

    • Sebastian
     
  • Czerno Bill
    Czerno Bill
    2009-03-23

    See attached. Run the exe from good old DOS (real mode, NO EMM386 or suchlike); it will enter 16-bit protected mode, do (basic) interrupt processing, display a clock (not too accurate). Press the Escape key to return to DOS (assumes an extra 'DMS' register exists at port 0084h. BOCHS has it OK, some modern (in)compatibles do not! in which case, it is SAFE to RESET or switch machine off).

    Code snipped from a very old project (ca 1986!). HTH
    File Added: INT1589.ZIP

     
  • Czerno Bill
    Czerno Bill
    2009-03-23

    int15/89 demo, EXE file + source ASM

     
    Attachments
  • Czerno Bill
    Czerno Bill
    2009-03-23

    typo correction (aka slipped finger) : read 'DMA' page register, not 'DMS' - of course.

     
  • Czerno Bill
    Czerno Bill
    2009-03-23

    typo correction (aka slipped finger) : read 'DMA' page register, not 'DMS' - of course.

     
  • I ported changeset 5196 from vbox (http://www.virtualbox.org/changeset/5196) which does implement INT 15h AH=89h.
    Your program does enter protected mode, but bochs does spit errors while returning back to real mode.

    00361007864e[CPU0 ] read_virtual_word_32(): segment limit violation
    00361007864e[CPU0 ] interrupt(): gate descriptor is not valid sys seg (vector=0x0d)
    00361007864e[CPU0 ] interrupt(): gate descriptor is not valid sys seg (vector=0x08)
    ...
    00361007864e[CPU0 ] exception(): 3rd (13) exception with no resolution, shutdown status is 05h, resetting

    On VMware Server 1.0.7 i get:

    Mar 27 22:00:38: vcpu-0| Triple fault.
    Mar 27 22:00:38: vcpu-0| MONITOR PANIC: vcpu-0:ASSERT vmcore/vmm/cpu/segment.h:444 bugNr=19580

    • Sebastian
     
  • Czerno Bill
    Czerno Bill
    2009-03-28

    I ported changeset 5196 from vbox
    Your program does enter protected mode,

    = Fine !

    but bochs does spit errors while returning back to real mode.

    The 3-ple fault is intentional (remember, that was written to work on a i80286 !), shutdown type 05 is indeed awaited and shoud get us back to business in real mode through the branch vector at 40:67h. If it doesn't then there is a distinct artifact in Bochs.

    Regards

     
  • I did trace the shutdown code 5 handling and it does work. Your program does continue in real mode, displays the message and exits. FreeDOS doesn't seem to continue correctly tho.
    I will send the INT 15h AH=89h patch to the mailing list.

    • Sebastian
     
  • Czerno Bill
    Czerno Bill
    2009-03-28

    Thank you Seb, I hope the patch will make its way to release and assume this feature request can be closed now :=)

    Rem : FreeDOS has artifacts (is this the politically correct spelling for bugs ?)... I've never seen the test program, or more elaborate versions thereof, do any harm to any MS-DOS starting with, at least, 3.2. I would not be too concerned over this one ;=)

     
  • Czerno Bill
    Czerno Bill
    2009-03-30

    Re my previous comment : I did a quick check and confirmed even MSDOS hanging at the prompt line after return from the example program on a K7 based system. This does not happen on the 486DX and did not on earlier systems. Honestly, this program was devised for a 286-based PC-AT compatible, slightly extended for compatibility to a 386 and checked working on many 486s and, not sure, some Pentium-class computers... Time allowing, I'll debug and trace the problem.

    This detail in any case is not relevant to thi feature request, but I wanted to acknowlege the problem exists and retract the bad words re. FreeDOS ;=)

     
  • Czerno Bill
    Czerno Bill
    2009-04-05

    Re: keyboard locked after return from the sample program.

    In VMplayer the sample program works as designed and returns to DOS (or whichever caller) in
    good shape :=)

    One reason why in Bochs the keyboard appears to be locked upon return from protected mode could be Bochs' handling of shutdown/reset code 05. I have had no time to check, does BIOS care to reset the legacy PICs as it must ? If not that would be cause for opening yet another case report, I'm afraid.

     
  • Which version of VMplayer did you test?
    It still fails here (VMware crashes) with VMware Server 1.0.7
    and PhoenixBIOS 4.0 Release 6.0 / VMware BIOS build 245.
    Tested with FreeDOS and MS-DOS 6.22.

    • Sebastian
     
  • Czerno Bill
    Czerno Bill
    2009-04-14

    Which version of VMplayer did you test?

    Player 2, part of workstation 6.5.1 - with DOS 6.22 or 7.10, I don't recall which DOS but doesn't matter anyway.

    I'll remember to check Player 1 next time I have an opportunity. It's quite possible VMware corrected the BIOS in-between (in fact I think I bugged them with similar suggestions a few years ago)

    I would suggest we ended this thread and carry future discussion of shutdown 05 to the newer dedicated one.

     
  • Volker Ruppert
    Volker Ruppert
    2009-05-10

    Applied to CVS now.