Latest updates for IA-16 GCC toolchain and libi86 library
If you're familiar with GCC on Linux, and want the same/similar tools on FreeDOS, you'll like the IA-16 GCC. This is a DJGPP/MS-DOS-hosted (32-bit x86) port of the GNU C and C++ compiler toolchain to the IA-16 target (16-bit Intel x86), by Rask Ingemann Lambertsen, Andrew Jenner, TK Chia, and others. The toolchain itself is 32-bit, but it will output 16-bit code. Changes in this version since the previous release in March: + A compiler bug was causing incorrect code to be output under the options -mcmodel=medium -ffunction-sections. This is now fixed. + There is now a new built-in function, __builtin_ia16_static_far_cast (·), which can be used within a static initializer to cast a near pointer to a far pointer. + argv[0] is now set properly — to an empty string — under MS-DOS 2.x. + Tabs can now delimit command line arguments. + Various other internal improvements. You can find the new IA-16 GCC toolchain at IA-16 GCC releases on GitHub. We've also mirrored this release on the FreeDOS files archive at Ibiblio, under /devel/c/gcc-ia16.
Also available is an updated libi86 library of routines, a companion library for IA-16 GCC. libi86 is an attempt to reimplement non-standard C library facilities (such as conio) commonly used in classical MS-DOS programs, for use with a GCC toolchain for 16-bit x86. The current aim is to be compatible enough with the Open Watcom runtime — as described in the Open Watcom C Library Reference — to be useful for building existing MS-DOS code. Defining the macro _BORLANDC_SOURCE will also enable some degree of compatibility with the Borland Turbo C++ compiler's C library. The new version of the library can be found at libi86 releases on GitLab. We've also mirrored this on Ibiblio, under /devel/c/gcc-ia16/libi86.