Hi Hans,

> I just updated my BIOS to report
> any unsupported INT/service calls,

Can you give a short overview of your hardware and
of the functions your BIOS already does support? :-)

I cannot resist answering before the FAQ is up
again (still needs config fixes after SF update)
so here you go... It's also "fresher". Enjoy :-).



Here is the summary of the summary first: Provide
40:0e, 1e, 6c, 71, 96, int 08, 11-12, 1c (easy),
set int 1e geometry info, int 10 func 0e, int 1a
func 0-5, int 13 func 0-3/8, int 16 func 0-2, if
102+ keys FreeDOS also uses int 16 func 10-12 :-).
Optional: int 13 func 5, d, 15-18, 41-43, 48 and
int 14 func 0-3, int 17 func 0-2 - provide stubs!

Int 15 functions 87, 88 and maybe c0, 24: HIMEMX
but "func 88 + A20 always on" should be enough...
Some extra 40:nn for keyboard and textscreen and
more int 10 func and b800:0 make more apps happy.



Overview BIOS services versus FreeDOS kernel: DOS
overwrites int 20-2f and some others, some drivers
assume the first IRQs to be at int 08-0f and the
usual 8086 CPU exception numbers 0-6 are assumed.
RAM usage starts at 50:nn or 70:nn, is tweakable.

Int 1e floppy data and 40:6c timer should be more
or less related to reality, also int 08 / int 1c.

Core int 10 screen functions: 0e TTY, occasionally
others (00 set mode, 02 / 09 cursor and print...)
but DOS *apps* and shell may require some more.
Config option "screen" uses int 10 func. 00 / 11.

Core int 16 keyboard functions: 0-2 but if you do
have 100+ keys you should also support 10-12, this
is detected by testing "40:96 and 10" flag but you
can force to 86 key compat mode with SWITCHES=/K.

Core int 13 disk functions: 0-3 and 8, some more can
return dummy values: LBA check, format, change check
and similar... FreeDOS can probe drives 0-1, 80-87,
be prepared to get probes for drives you do not have,
simply return a suitable error code... The dummy-able
other int 13 functions: 05, 0d (?), 15-18, 41-43, 48.

Core simple functions: int 11 / int 12 / int 19 to
get some flags / memory size / do reboot (optional).
Int 11 and 12 basically only return a flag bitmask.

Core communication functions: int 14 and int 17 for
COM / LPT only used if they exist according to int 11.
Int 14 func 0 to 3 and int 17 func 0 to 2 are used
when accessing COM / LPT and when initing them.

Core time functions: int 1a functions 0 / 2 / 4 at
boot, functions 1 / 3 / 5 if you change date/time,
also timer tick count at 40:6c and maybe int 8 / 1c.



Minimal CPU: 8086, 286 or 386 depending on compile
time option. Recommended is 386 with int 15 for ext
RAM size info so you can use HIMEM for HMA and the
"XMS swap" of our command.com :-). HIMEM might also
use PS/2 A20 access and RAM copy (both int 15) and
mouse drivers can use PS/2 int 15 mouse stuff...

Several DOS apps will be happy if you have a text
screen buffer at b800:0 and some of the 40:xx BIOS
data. The kernel uses very little 40:xx data itself:



IF you use the full screen config sys menu, you
need int 10 function 02 and 06 and the 40:4a and
40:84 values. Using numlock / keybuf config sys
OPTIONS modify 40:17 and 40:1a/1e and 40:80/82.

EBDA move OPTION uses 40:0e / 40:13. Ctrl Break
handling *uses* 40:71... Treating 1 drive as both
A: and B: uses 50:04. Boot drive is at 50:e0 and
timer tick is *expected* at 40:6c. The 50:xx are
written by DOS but 40:xx are expected from BIOS.

Eric



-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Freedos-user mailing list
Freedos-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-user

Reply via email to