
I'm proud to announce cc65 version 2.11.0. cc65 is a complete cross
development package for 65(C)02 systems, including a powerful macro
assembler, a C compiler, linker, librarian and several other tools.

cc65 has C and runtime library support for many of the old 6502 machines,
including

  - The Commodore VIC20 (contributed by Steve Schmidtke
    <steve_schmidtke@hotmail.com>).

  - The Commodore C64 and C128.

  - The Commodore C16, C116 and Plus/4.

  - The CBM 510 (aka P500), a quite rare Commodore machine (programs
    run in bank 0).

  - The CBM 600/700 family (programs run in bank 1).

  - Newer PET machines (not 2001)

  - The Apple ][ and successors (basic support by Kevin Ruland
    <kevin@rodin.wustl.edu> and many, many additions by Oliver Schmidt,
    <ol.sc@web.de>).

  - The Atari 8 bit machines (thanks to the Atari team: Christian Groessler
    <cpg@aladdin.de>, Mark Keates <markk@dendrite.co.uk>, Freddy Offenga
    <taf_offenga@yahoo.com> and David Lloyd, <dmlloyd@atari-central.com>).

  - GEOS for the C64 and C128 (by Maciej Witkowiak <ytm@elysium.pl>)

  - The Nintendo Entertainment System (NES) (contributed by Groepaz,
    <groepaz@gmx.net>).

  - The Supervision console (contributed by Peter Trauner,
    <peter.trauner@utanet.at>) (startup code and linker config only).

  - The Oric Atmos (this one is - still - BETA!).

  - The Lynx Console. Support was added by Karri Kaksonen <karri@sipo.fi>
    based on the original Lynx compiler by Bastian Schick. Bastians code
    was used with permission - thanks!

The libraries are fairly portable, so creating a version for other 6502s
shouldn't be too much work.



Changes to the last version:

This is quite a large step from the last version. See the (probably
incomplete) list of changes below for more information.



Available packages:

As usual I will provide the complete sources and several binary packages,
including RPMs for RedHat Enterprise Linux 3. Linux is the primary
development platform, so the sources do compile out of the box on Linux
machines.

Please note that there are separate RPMs for the compiler proper, the
docs, and the target specific libraries. To develop for one of the
predefined target systems you need the compiler RPM package *and* one of
the target machine packages. Be sure to download the documentation package
if you're not already a cc65 user.

Binaries for DOS and and Windows should also be available at the time you
read this. OS/2 packages will again be available, but since there are
almost no downloads for OS/2, so the host platform may get dropped in the
near future (again). As with the RPM packages, you need the package for
the development system (Windows, etc.) *and* one or more of the target
machine packages, plus optionally the doc package.

New in the windows version is the beta version of a poor mans windows
installer: Grab all the windows packages you need and unpack them into one
tree. Then double click on the "install.vbs" file. This will install the
tools in the program directory, will add start menu entries for the docs,
setup the necessary environment variables, and add an uninstaller as well.
IF YOU HAVE ANY PROBLEMS SETTING UP CC65, IT IS STRONGLY ADVISED THAT YOU
GIVE THE INSTALLER A TRY!



Download:

For more information and a download link, please visit the cc65 web page
at

     	http://www.cc65.org/


Mailing list:

There is a mailing list for discussing cc65 related issues (programming,
suggestions, bugs, ...). See

        http://www.cc65.org/#List

for information on how to subscribe to this list.



Many people have contributed to this version, please be sure to have a
look at the CREDITS file. Thanks to all contributors!

Have fun!


	Uz



-----------------------------------------------------------------------------
[Incomplete list of changes against version 2.10]


  * Assembler:

    - New feature missing_char_term.

    - New feature ubiquitous_idents.

    - Optional curly braces allowed as delimiters for token lists.
      Incompatible change: Brace matching in some cases is gone.

    - New 6502X cpu that includes 6502 illegal opcodes.

    - Better error messages in case of a range error.

    - Assembler defines target system symbols (__C64__ etc.) similar to the
      C compiler.

    - Handle foreign newline sequences (cr/lf under Unix) more gracefully.

    - Fixed problems with unnamed labels.

    - The assembler does now support the SWEET16 16 bit pseudo CPU.

    - Support for zilog/intel style hex numbers (trailing 'h').

    - New .ident and .sprintf pseudo functions.

    - Variable symbols using .set.

    - Support for a "none" CPU that has no opcode mnemonics at all. People
      use ca65 to implement instructions sets for other CPUs using macros,
      and this pseudo CPU should remove any conflicts.

    - Support for the HuC6280 CPU used in the PC engine.



  * Compiler:

    - Rewrite of input and preprocessor routines. Among other things, this
      adds variadic macros and removes the input line limit.

    - Stackable pragmas using #pragma(push, val) and #pragma(pop)

    - New pragmas codesize, optimize, regvars, and warn (all stackable)

    - New option --writable-strings

    - Rewrote part of the parser allowing better code generation in a few
      places.

    - The "inline standard functions" option (-Os) has slightly changed its
      meaning: In older versions it controlled inlining. Now, the compiler
      will always inline if it considers it safe to do so, and the flag does
      only control inlining in situations where inlining is not always
      completely safe.

    - More and better inlining of known standard functions. The following
      functions may get inlined: strcpy, strlen, memcpy, memset.

    - Inline assembly can now reference C labels with the %g format specifier.

    - The -A and --ansi switches are gone, together with the __STRICT_ANSI__
      predefined macro. Instead there is now a command line option --standard
      that allows to set c89, c99 or cc65 as language standard. The compiler
      defines a macro __CC65_STD__ that is one of __CC65_STD_C89__,
      __CC65_STD_C99__ or __CC65_STD_CC65__ depending on the command line
      option. Default is cc65 (all extensions) as before.

    - Improved code for shifts.



  * Linker

    - Start Oric programs at $500 (Stefan Haubenthal)

    - Added library groups.

    - Simple expressions now supported in the config files.



  * cl65 utility:

    - Extended to support additional command line switches of the
      underlying tools as needed.

    - New -Wa and -Wl switches to pass options to the assembler and linker.



  * Disassembler

    - New "asminc" directive that allows to read in a file containing assembler
      symbol assignments in the form "name = value".

    - New "comment" attribute for several directives.



  * Library

    - Mouse support uses loadable drivers.

    - Changed command line argument syntax for C64.

    - Command line parameters are now working for: C64, C128, Plus/4, C16,
      VIC20.

    - ungetc is available. Read functions on streams support pushed back
      characters.

    - New apple2enh target by Oliver Schmidt.

    - Lots of Apple2 improvements by Oliver Schmidt.

    - Oric TGI driver by Stefan Haubenthal.

    - New _heapblocksize function that returns the size of an allocated block.

    - New lynx target by Karri Kaksonen and Shawn Jefferson based on
      Bastian Schicks cc65 port (thanks!).

    - Joystick and TGI drivers do now have an interrupt entry. The API version
      has been changed which means that old drivers will need an update.

    - Full set of scanf functions available (base work by me, lots of
      improvements by Greg King).

    - scanf functions for conio (Greg King).

    - New function posix_memalign.

    - Directory routines for the Apple machines (by Oliver Schmidt).

    - SSC serial driver for the apple2 and apple2enh targets (Oliver Schmidt).



  * Documentation

    - Lots of additions to the function reference.

    - Several target specific docs (one prominent contributor was Stefan
      Haubenthal).


  * Other

    - Poor mans windows installer.

    - The output of --help goes to stdout instead of stderr.

