Skip to content
Dec 15, 2019
15 Dec 2019 "stable" build-ia16 commit (tkchia)

@tkchia tkchia released this Oct 19, 2019 · 5 commits to master since this release

This commit fixes a minor issue in the man page file names in the Ubuntu PPA package gcc-ia16-elf.

The packages for the GCC engine proper (gcc-ia16-elf) have been updated; the other packages are as for 10 Oct.

Assets 6

@tkchia tkchia released this Oct 13, 2019 · 6 commits to master since this release

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, myself, and various contributors. The toolchain itself is 32-bit, but it will output 16-bit code.

Binary + source diff packages, and documentation packages, for FreeDOS:

Changes since 21 May 2019:

  • Some experimental features have been added:
    • You can now generate code for the medium memory model --- with multiple text segments and one data segment by default --- with a -mcmodel=medium option.
      • Some compiler features, such as DPMI-capable output (-mdpmiable) and __builtin_return_address (.), do not work yet under the medium model.
    • The toolchain now has a draft implementation (-msegelf) of a new internal interface (ABI) for representing IA-16 segmented addressing in object modules.
      • The new ABI is being proposed by H. Peter Anvin, maintainer of nasm. It potentially overcomes some limitations of the current default ABI. Unfortunately, the two ABIs are not completely compatible.
      • The system libraries have not yet been built with this new ABI.
  • Bug fix: -mnewlib-nano-stdio now correctly links in the "nano" version of the sprintf (...) routine.
  • Minor changes and improvements:
    • A statement like static int __far x, y, z; in C will now place all the variables in the same far section, rather than in separate far sections as before.
    • When targeting ELKS OS, you can now specify a -maout-total=t option to customize the size of the data segment.
  • Various other internal improvements.

Notes:

  • These FreeDOS packages do not contain support for C++ or link-time optimization (LTO).
  • The toolchain sources --- patches for Binutils and GCC, and full sources for Newlib --- are included in the i16*.zip files. The "Source code" links (produced by GitHub) point only to the build scripts.
  • To view the packages' contents, you can use the 7-Zip program (other unzip-programs may not handle the LZMA compression these packages use). Versions of 7-Zip are available for MS-DOS (via ibiblio), Ubuntu Linux (as 7za under p7zip-full), and other systems.
  • If you get the error message i16gcc.exe: fatal error: environment variable DJGPP not defined when running i16gcc.exe, please install the DJGPP base environment first, and then set the DJGPP DOS variable to point to its djgpp.env, e.g. set DJGPP=c:\devel\djgpp\djgpp.env. (See DJGPP's readme.1st for more information.)
  • If you run i16gcc -mcmodel=small ..., you may get an error message like
    i16gcc.exe: error: small: No such file or directory (ENOENT)
    i16gcc.exe: error: unrecognized command line option '-mcmodel'
    
    (as if you wrote -mcmodel small instead). For now, you can work around the issue by quoting arguments with = signs in them, e.g. i16gcc "-mcmodel=small" ... . Using fdnpkg 0.99.6 and above should fix this issue.
Assets 25
i16gcc.zip 8.94 MB

@tkchia tkchia released this Oct 6, 2019 · 9 commits to master since this release

…o 5 Oct (tkchia)
Assets 18

@tkchia tkchia released this Sep 30, 2019 · 9 commits to master since this release

30 Sep 2019 "stable" build-ia16 commit (tkchia)
Assets 18

@tkchia tkchia released this Sep 29, 2019 · 10 commits to master since this release

29 Sep 2019 "stable" build-ia16 commit (tkchia)
Assets 2

@tkchia tkchia released this Sep 29, 2019 · 16 commits to master since this release

17 Aug 2019 "stable" build-ia16 commit (tkchia)
Assets 18
Jun 2, 2019
30 May 2019 "stable" build-ia16 commit (tkchia)

@tkchia tkchia released this May 23, 2019 · 26 commits to master since this release

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, myself, and various contributors. The toolchain itself is 32-bit, but it will output 16-bit code.

Binary + source diff packages, and documentation packages, for FreeDOS:

  • i16butil.zip, i16gcc.zip, i16newli.zip: Binutils, GCC, and Newlib C library and math library for 16-bit MS-DOS target.
  • i16budoc.zip, i16gcdoc.zip: documentation for Binutils and GCC (including IA-16-specific GCC options).
  • i16nlelk.zip, i16elklc.zip: optional packages, for cross-compiling programs for ELKS OS (see below).
  • I am also separately distributing packages for my libi86 library of non-standard routines.

Changes since 10 Apr 2019:

  • The malloc memory allocator in the Newlib C library now uses less heap memory. Thanks to @bartoldeman for contributing the patches (#10, #11).
  • Some experimental features have been added:
    • A new -mdpmiable option will produce MS-DOS programs which try to run themselves in protected mode using the DOS Protected Mode Interface (DPMI), if they detect a DPMI host (the programs will continue to run in real/V86 mode if this is not possible).
    • You can now more easily cross-compile programs for the Embeddable Linux Kernel Subset (ELKS) operating system. The programs can either be linked with the Newlib C library (with the -melks option), or with ELKS's own libc (-melks-libc).
  • Various internal improvements.

Notes:

  • These FreeDOS packages do not contain support for C++ or link-time optimization (LTO).
  • The toolchain sources --- patches for Binutils and GCC, and full sources for Newlib --- are included in the i16*.zip files. The "Source code" links (produced by GitHub) point only to the build scripts.
  • To view the packages' contents, you can use the 7-Zip program (other unzip-programs may not handle the LZMA compression these packages use). Versions of 7-Zip are available for MS-DOS (via ibiblio), Ubuntu Linux (as 7za under p7zip-full), and other systems.
  • If you get the error message i16gcc.exe: fatal error: environment variable DJGPP not defined when running i16gcc.exe, please install the DJGPP base environment first, and then set the DJGPP DOS variable to point to its djgpp.env, e.g. set DJGPP=c:\devel\djgpp\djgpp.env. (See DJGPP's readme.1st for more information.)
  • If you run i16gcc -mcmodel=small ..., you may get an error message like
    i16gcc.exe: error: small: No such file or directory (ENOENT)
    i16gcc.exe: error: unrecognized command line option '-mcmodel'
    
    (as if you wrote -mcmodel small instead). For now, you can work around the issue by quoting arguments with = signs in them, e.g. i16gcc "-mcmodel=small" ... . Using fdnpkg 0.99.6 and above should fix this issue.
Assets 9
May 19, 2019
14 May 2019 "stable" build-ia16 commit (tkchia)
You can’t perform that action at this time.