This commit contains a number of changes:
1. int86x gets and sets struct SREGS members ds and es
2. int86x patches itself (SMC) using a cs: segment override prefix,
as ds may no longer equal cs.
3. int86x interrupt number is %7 rather than %5
4. int86x assembly part doesn't push and pop ds, it is handled by
the compiler instead (in practice it puts a push ss \ pop ds at the
end of the function to restore the near data segment).
5. int86 is implemented by calling int86x (with ds = es = 0)
6. findfirst, int2526readwrite, fat32readwrite also changed to use
int86x because they need to set ds. This used to be implied as the
same ds that the compiler already used by default.
7. Finally, haveLBA changed to set ds to 40h.
The inline assembly constraints for gcc-ia16 are documented in
ca89332092/gcc/doc/md.texi (L2379)
fd kernel
FreeDOS kernel - current 0xFD version is 2.44 (2044)
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