{{Short description|65(C)02 cross development software}} {{lowercase title|cc65}} {{Infobox software | name = cc65 | logo = Cc65-logo.png | screenshot = | caption = | developer = Ullrich von Bassewitz | released = {{Start date and age|1998|11|15}}<ref>[http://unusedino.de/ec64/technical/c=hacking/ch17.html C=Hacking #17] first mention</ref> | latest release version = {{wikidata|property|preferred|references|edit|Q1052150|P348}} | latest release date = {{Start date and age|2020|11|20}} | latest preview version = | programming language = ANSI C | operating system = Multiplatform | genre = Cross compiler | license = zlib License | website = {{URL|https://cc65.github.io}} }}
'''cc65''' is a cross development package for 6502 and 65C02 targets, including a macro assembler, a C cross compiler, linker, librarian and several other tools.
==Overview== 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.<ref>{{Cite web|url=https://github.com/cc65/cc65/commit/aeb849257277a6b98542de8579697b81c6dd70e6|title = Simplified license. · cc65/Cc65@aeb8492|website = GitHub}}</ref>
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 {{mono|conio.h}} screen handling. GEOS is also supported on the Commodore 64 and the Apple II. The library supports Commodore 8-bit systems, Apple II, Atari 8-bit computers, Oric Atmos, Nintendo Entertainment System,<ref>{{Cite book |last=Hugg |first=Steven |title=Making Games for the NES |publisher=Amazon Digital Services LLC |year=2019 |isbn=9781075952722 |pages=231–232 |language=en}}</ref><ref>{{Cite book |last=Cruise |first=Tony |title=Classic Game Programming on the NES |publisher=Manning Publications |year=2024 |isbn=9781633438019 |pages=268 |language=en}}</ref> Watara Supervision game console, Synertek Systems SYM-1 and Ohio Scientific Challenger 1P.<ref>{{Cite web|url=https://cc65.github.io/doc/osi.html|title = Ohio Scientific-specific information for cc65}}</ref>
Officially supported host systems include Linux, Windows, MS-DOS and OS/2, but the source code itself has been reported{{by whom|date=November 2017}} to work almost unmodified on many platforms beside these.
The ca65 macro assembler supports 6502, 65C02, and 65C816 processors, and can be used standalone without the C compiler.<ref>{{cite web|title=ca65 Users Guide|url=https://cc65.github.io/doc/ca65.html|first1=Ullrich|last1=von Bassewitz|first2=Greg|last2=King}}</ref>
==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)
{| class="wikitable" ! !!conio !!dio !!emd !!joy !!mou !!ser !!tgi |- ! apple2 | {{yes}} ||{{yes}} ||1 ||1 ||1 ||1 ||2 |- ! apple2enh | {{yes}} ||{{yes}} ||1 ||1 ||1 ||1 ||2 |- ! atari | {{yes}} ||{{yes}} || ||2 || || ||15<ref name="tgiAtari" /> |- ! atmos | {{yes}} || || || || || ||1 |- ! c16 | {{yes}} || ||1 ||1 || || || |- ! c64 | {{yes}} || ||6 ||4 ||3 ||1 ||1 |- ! c128 | {{yes}} || ||5 ||2 ||3 ||1 ||2 |- ! cbm510 | {{yes}} || ||1 ||1 || ||1 || |- ! cbm610 | {{yes}} || ||1 || || ||1 || |- ! geos | {{yes}} ||{{yes}} ||1 ||1 || || ||1 <!--|- ! lunix | x || || ||1 || || ||--> |- ! lynx | || || ||1 || ||1 ||1 |- ! nes | {{yes}} || || ||1 || || ||1 |- ! osic1p | {{yes}} || || || || || || |- ! pet | {{yes}} || || ||1 || || || |- ! plus4 | {{yes}} || || ||1 || ||1 || |- ! supervision | || || || || || || |- ! sym1 | || || || || || || |- ! vic20 | {{yes}} || || ||2 || || || |}
Note: For static libraries, "Yes" means the feature is available. For dynamic libraries, the columns list the number of available drivers.
==References== <references>
<ref name="tgiAtari">By Fatih Aygün. CIRCLE doesn't work at all, some graphics modes may crash on some machines.</ref>
</references>
==External links== * [https://web.archive.org/web/20210120204936/https://www.cc65.org/ Official website (archive)] (no longer maintained) * [https://cc65.github.io Modern github fork of cc65] * [https://hitmen.c02.at/html/tools_contiki.html Contiki desktop, written with cc65] * [https://www.cc65.org/mailarchive/2009-11/7459.html Atari TGI 2009-11-02 release announcement on cc65 mailing list] * [https://github.com/efornara/jbit/wiki/Android Android host]
Category:C (programming language) compilers Category:Cross-compilers Category:Free and open source compilers Category:Assemblers Category:Atari 8-bit computers Category:Commodore 64 Category:Apple II family