Hi experts,

some interesting observations about an old 486 PC in the thread
with Dimitris about "Which freedos on 486" on freedos-user...

His BIOS answers with AH=86h, carry=UNCHANGED to int 15.e801,
also leaving AL unchanged. So it seems to be a good idea to
STC before INT 15 when doing the 15.e801 call :-) Note that
AH=86 is a common failure code for int 15 functions. I would
also suggest to, in addition, treat AH=UNCHANGED as failure.

Another issue is that RBIL says for this call that if AX=BX=0,
one should use CX and DX as memory size info instead. However,
DOSEMU only sets AX and BX and returns CX=DX=0 while FreeDOS
HIMEMX and JEMMEX both look ONLY at CX and DX, without even
checking for AX and BX! Luckily DOSEMU also supports the two
other int 15 calls for memory info afair, but it seems tricky
that DOSEMU and FreeDOS disagree about 15.e801, no?

Also, it is interesting that the FreeDOS drivers say that if
CX is not 3c00 (the max value) then DX must be treated as 0.

This sounds like "memory hole below 16 MB means end of RAM"?

Finally, JEMMEX and HIMEMX both say "if CX plus scaled DX < 64
then fall back to 15.88", which is a somewhat weird way to say
"if CX and DX are both 0".

RBIL writes about int 15.88 versus the carry flag:

> the standard BIOS only returns memory between 1MB and 16MB; use AH=C7h
> for memory beyond 16MB

> not all BIOSes correctly return the carry flag, making this call
> unreliable unless one first checks whether it is supported through
> a mechanism other than calling the function and testing CF

Interestingly, JEMMEX and HIMEMX decide to trust int 15.88
even if it leaves carry unchanged: They CLC before int 15.

I think it would be a good idea to check if AH=80, 86 or 88
after the int 15 call even if carry is not set, as all those
values would be possible return values if int 15.88 failed.

What is confusing: JEMMEX works on the mentioned 486, while
HIMEMX does not work, not even with /NOABOVE16 and /X, why?

Regards, Eric

PS: In theory, int 15.c7 would also be a possible call to get
info about memory beyond the first 16 MB without 15.e??? BIOS
support, but that would only help for a very specific group
of PS/2 machines identified by int 15.c0 - not very useful.

PPS: The same PC also fails to boot from FAT32 with any SYS
newer than 2.6, so SYS apparently sees LBA support while it
does not really boot later? See freedos-user, still ongoing.
Unclear regarding SYS 3.6e /FORCE:LBA and /FORCE:CHS options.


------------------------------------------------------------------------------
What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic
patterns at an interface-level. Reveals which users, apps, and protocols are 
consuming the most bandwidth. Provides multi-vendor support for NetFlow, 
J-Flow, sFlow and other flows. Make informed decisions using capacity planning
reports.http://sdm.link/zohodev2dev
_______________________________________________
Freedos-devel mailing list
Freedos-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-devel

Reply via email to