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.[3]
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 the Apple II. The library supports many of the Commodore platforms (C64, C128, C16/116/Plus/4, P500 and 600/700 family), Apple II, Atari 8-bit computers, Oric Atmos, Nintendo Entertainment System,[4][5] Watara Supervision game console, Synertek Systems SYM-1 and Ohio Scientific Challenger 1P.[6]
Officially supported host systems include Linux, Microsoft Windows, MS-DOS and OS/2, but the source code itself has been reported[by whom?] 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.[7]
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)
|
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[8]
|
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
|
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
External links