Some assembly tricks: * SMC instead of checking the XMS driver address in the DOS DS stub, * SMC so that the address goes right into a `call far immediate` instruction, * use `repe cmpsw` to compare multiple words (saves space over the individual word compares), * near calls to far functions use push cs to build a far-call stack frame, * segments 0 and FFFFh generated by segment arithmetic instead of loading from memory, * common case (A20 already enabled) made to be the case where the conditional branch just falls through, which may be slightly better.
fd kernel
FreeDOS kernel - current 0xFD version is 2.43 (2043)
The FreeDOS kernel implements the core MS/PC-DOS (R) compatible functions. It is derived from Pat Villani's DOS-C kernel and released under the GPL v2. Please see http://www.freedos.org/ for more details about the FreeDOS (TM) Project. This was originally a branch based on 2042 SVN 0xFD kernel; the full svn history has since been added to git (see other branches) and current development of release kernels are available here. Please fork and submit a Pull Request!
Compiled kernels ready to use (just copy kernel.sys over an existing install) are available at http://www.fdos.org/kernel/testing/git/ - also available are the source archive and fdpkg compatible packages. *** TODO update links/upload archives
This version of the kernel is intended only for 8086+ or 80386+ IBM compatible computers in continuation of the goals of the FreeDOS Project. Please see http://www.fdos.org/kernel for my 0xDC kernel that is work on merging back in some of the original portability aspects and other supported features at the cost of some compatibility with older hardware/software.
Please feel free to email me - PerditionC@gmail.com