Update on FreeDOS-32

I received this update 2002-03-13 from Luca about the status on the FreeDOS-32 Project:


I am Luca Abeni, one of the freedos-32 (FD/32 for the friends :) developers. Salvo Isaja told me that you are interested on being informed on the status of the FD/32 kernel; hence I am trying to make a summary of the current situation, and if you want I'll send you updates as soon as we make some progress.

First of all, I'd like to summarize some of the FD/32 characteristics: According to our initial design decision, FD/32 is based on a small kernel providing a limited number of functionalities (single flat address space, no protection, no multitasking, ...) that are extended by external entities called drivers.

Drivers execute in the kernel address space, and are dynamically linked to the kernel in order to provide new functionalities without a big overhead.

After some initial experiments and discussion, we thought that compiling the FreeDOS kernel code in a 32 bit environment is very difficult (there are a lot of 16-bit dependencies), hence we decided to develop the kernel from scratch using the FreeDOS kernel sources as a reference.

According to this design, the main tasks of the kernel are to manage physical memory, and to load/execute drivers and programs in the flat address space.

Current status of the project:

1) the kernel is currently able to boot, to dynamically link drivers and programs, and to load programs in its flat address space. Moreover, a physical memory manager has been implemented in the kernel, and seems to work properly

2) a driver engine (currently implemented in the kernel) permits to register devices and to access them through some interfaces that can be associated to them

3) a DPMI driver is able to provide most of the needed DPMI services (only few calls are missing). The 0x0300 service (Simulate RM interrupt) permits to access registered devices through the standard DOS interface. One of the most important DOS services that we are still missing is 4B (exec), for which the kernel provides only part of the needed support.

4) simple keyboard and console drivers have been implemented, and permit to perform input from the keyboard

5) a driver for accessing floppy and hard disks through the BIOS (reflecting interrupts through the VM86 mode) has been implemented, and is correctly working

6) a FAT driver, for accessing block devices formatted with a FAT fs (both hd partitions or floppies), has been implemented and is currently under testing

Summing up, the current kernel and drivers can boot and execute simple DJGPP programs running in the kernel address space - note that in order to run in the flat address space a program must be linked at a free physical memory address (we are currently using 0x320000). In order to load and run standard DJGPP executables (that are linked at address 0x1024), we will need to implement a program that creates a new segment and loads the DJGPP executable in it.

Finally, as a personal note I'd like to say a big ``thank you'' to you and to all the FreeDOS community. FreeDOS is a wonderful project, and I hope that some day FD/32 will be able to give some good contribution to it.