Hi Eric,

Many thanks for the info, very useful!!

----- Original Message ----- 
From: "Eric Auer" <[EMAIL PROTECTED]>
To: <freedos-user@lists.sourceforge.net>
Sent: Friday, September 26, 2008 1:59 AM
Subject: Re: [Freedos-user] required BIOS services FAQ item


>
> Hi Hans,
>
>> I just updated my BIOS to report
>> any unsupported INT/service calls,
>
> Can you give a short overview of your hardware

I am using an FPGA based 80188/6 processor + a number of standard 
peripherals such as 8259 PIC, 146818 RTC, ATA/CF interface, 8239 DMAC, 16550 
UART, 8255 PIO and a 7 segment LCD display.

Although I use a commercial version a "light 8088 version" can be downloaded 
from here :

http://www.ht-lab.com/freecores/cpu8086/cpu86.html

The processor fits in a small FPGA and can be synthesised using the free 
vendor synthesis tools (QNS/XST). Clock speed is round the 40MHz for a 
modern Xilinx/Altera FPGA.

> and of the functions your BIOS already does support? :-)

For the BIOS I have implemented a number of basic I/O calls such that one 
can use a DOSbox for development. I also implemented a simple debugger, the 
(old) source can be downloaded from here:

http://www.ht-lab.com/freeutils/mon88/mon88.html

All the BIOS I/O calls (e.g. INT10,0E, INT21,01,03,09 etc) are redirected to 
one of the serial ports since my system does not have a keyboard or display 
(the same will be required when running FreeDOS).

I have recently updated the BIOS with a number of INT13 calls such as the 
basic services 00/02/03/08/25 and 3 extended calls (41/42/43). I did not 
implement extended service 48 since none of the virtual machines (VMWare, 
Virtual PC 2007, Bochs) seems to support it (return error code 01). I assume 
that service 08 is sufficient to get the system up and running and/or the OS 
use service 25 to get the drive parameters and then build their own 
SPDT/EPDT tables?

Just to be on the safe side the BIOS also builds an SPDT hard disk table 
located at 40:E0-40:EF and pointed to by int41h. I wasn't sure were to store 
this table and/or if FreeDOS requires it.  The basic call 02/03 are 
translated to LBA before passing to an Compact Flash card in ATA mode. There 
is no support for a floppy or second hard disk.

The BIOS sets up one of the timers to generate the 18.2Hz timer tick. The 
RTC is used for the date/clock functions (INT1A).

Some Bios Data Area (40:00-40:ff) is filled in such as equipment list etc. 
Your email it very useful since it is not easy to figure out what is 
required for this area.

I though that I was getting close to invoking that magic int19,  but looking 
at your list it seems there is still some way to go :-(

Regards,
Hans
www.ht-lab.com

>
> 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
> 



-------------------------------------------------------------------------
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