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