Skip to content
Maarten Vermeulen edited this page Apr 17, 2019 · 2 revisions

What is Night Kernel?

The Night kernel is a 32-bit drop-in replacement for the original 16-bit kernel of the FreeDOS operating system. As such, it consists of a single file, kernel.sys, which will include the basic microkernel, task scheduler, and a 32-bit port of the DOS API to be developed by consulting the existing C source code of the FreeDOS kernel and duplicating its algorithmic logic in Assembly. Until this API rewrite is completed, Night will attempt to use an actual copy of the FreeDOS kernel for every traditional DOS app launched so that, as far as each is concerned, it is the only application on the system. Once a 32-bit reimplementation of the DOS API is complete, a 16-bit interface will be set up so that traditional DOS applications can access it via the typical interrupt call system. Although Assembly is used for the kernel itself, the DOS API, and a small handful of generic drivers to achieve maximum performance, applications and external drivers may be written in whatever language the author prefers.

Night is designed to boot directly on an x86 CPU without assistance from any outside software or emulator and, by the same token, it uses no software emulation to run applications. Instead, multitasking is handled in hardware using the facilities provided within the CPU itself to maintain multiple separate address spaces in which applications can run, giving the typical user full compatibility with their traditional DOS applications as well as new protected mode abilities such as task switching between applications, protected memory and increased overall performance.

To achieve these goals, our first step was to discuss the amount (and difficulty) of work on such a product. After careful consideration, the overall consensus is that, while some aspects may be challenging to implement, the benefits of a 32-bit DOS-style kernel far outweigh the cost in time, effort and planning. The project is go! Which is where this group comes in: this is the place to discuss design and implementation, as well as making documentation and tech notes along the way. Most aspects of the kernel, particularly those not listed here, are up for discussion and not yet set in stone. The kernel team is currently fairly small, but new members are always welcome. If you have useful experience and/or ideas which can advance the project, feel free to let us know!

Thank you for your interest! For help or information about Night, send mail to nightdos.info@gmail.com. Or, check out the project's Git repo, Twitter, and website!

Clone this wiki locally