cc65

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search
cc65
DeveloperUllrich von Bassewitz
Initial releaseNovember 15, 1998; 27 years ago (1998-11-15)[1]
Repository
  • {{URL|example.com|optional display text}}Lua error in Module:EditAtWikidata at line 29: attempt to index field 'wikibase' (a nil value).
Written inANSI C
Engine
    Lua error in Module:EditAtWikidata at line 29: attempt to index field 'wikibase' (a nil value).
    Operating systemMultiplatform
    TypeCross compiler
    Licensezlib license
    Websitecc65.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

    [edit | edit source]

    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.[2]

    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,[3][4] Watara Supervision game console, Synertek Systems SYM-1 and Ohio Scientific Challenger 1P.[5]

    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.[6]

    Supported API

    [edit | edit source]

    static

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

    dynamic

    [edit | edit source]
    • 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[7]
    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

    [edit | edit source]
    1. ^ C=Hacking #17 first mention
    2. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    3. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    4. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    5. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    6. ^ ca65 Users Guide
    7. ^ By Fatih Aygün. CIRCLE doesn't work at all, some graphics modes may crash on some machines.
    [edit | edit source]