cc65

cc65 is a cross development package for 65(C)02 systems, including a macro assembler, a C cross compiler, linker, librarian and several other tools.

cc65
Developer(s)Ullrich von Bassewitz
Initial releaseApril 26, 1999 (1999-04-26) (email list)
May 28, 2000 (2000-05-28) (repository)
Stable release
2.18 / May 29, 2019 (2019-05-29)
Repository
Written inANSI C
Operating systemMultiplatform
TypeCross compiler
Licensezlib license
Websitecc65.github.io

cc65 is based on a native C compiler that was originally adapted for the Atari 8-bit computers by John R. Dunning in 1989, which originated as a Small C descendant. It has several extensions, and some of the limits of the original Small C compiler are gone.

The toolkit has largely been expanded by Ullrich von Bassewitz and other contributors. The actual cc65 compiler, a complete set of binary tools (assembler, linker, etc.) and runtime library are under a license identical to zlib's.[1] The ca65 cross-assembler is one of the most powerful 6502 cross-assemblers available under an open-source license.

The compiler itself comes close to ANSI C compatibility, while C library features depend on the target platform's hardware. stdio is supported on many platforms, as is Borland-style conio.h screen handling. GEOS is also supported on the Commodore 64 and even the Apple II. The library supports many of the Commodore platforms (C64, C128, C16/116/Plus/4, P500 and 600/700 family), Apple II family, Atari 8-bit family, Oric Atmos, Nintendo Entertainment System, Watara Supervision game console and Ohio Scientific Challenger 1P.[2]

Officially supported host systems include Linux, Microsoft Windows, MS-DOS and OS/2, but the source code itself has been reported to work almost unmodified on many platforms beside these.

Supported API

static

  • conio (text-based console I/O non-scrolling)
  • dio (block-oriented disk I/O bypassing the file system)

dynamic

  • em (expanded memory, used for all kinds of memory beyond the 6502's 64K barrier, similar EMS)
  • joystick (relative input devices)
  • mouse (absolute input devices)
  • serial (communication)
  • tgi (2D graphics primitives inspired by BGI)
coniodioemdjoymousertgi
apple2 YesYes11112
apple2enh YesYes11112
atari YesYes215[3]
atmos Yes1
c16 Yes11
c64 Yes64311
c128 Yes52312
cbm510 Yes111
cbm610 Yes11
geos YesYes111
lynx 111
nes Yes1
osi Yes
pet Yes1
plus4 Yes11
supervision
vic20 Yes2

Note: For static libraries, "Yes" means the feature is available. For dynamic libraries, the columns list the number of available drivers.

  1. https://github.com/cc65/cc65/commit/aeb849257277a6b98542de8579697b81c6dd70e6
  2. https://cc65.github.io/doc/osi.html
  3. By Fatih Aygün. CIRCLE doesn't work at all, some graphics modes may crash on some machines.
gollark: It would look nicer if it wasn't invisible.
gollark: This month I got a green invisiprize.
gollark: Er, hypothetical future trade.
gollark: <@204627302850494475> Want some eggs on your trade?
gollark: They're quite in-demand, and that's a word code, so definitely.
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.