I'm proud to announce version 2.9.0 of CC65, a C crosscompiler / crossassembler combo for 6502 systems. CC65 has C and runtime library support for many of the old 6502 machines, including - The Commodore VIC20 (contributed by Steve Schmidtke ). - The Commodore C64 and C128. - The Commodore C16, C116, 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 ][ (library support by Kevin Ruland ) - The Atari 8 bit machines (thanks to the Atari team: Christian Groessler , Mark Keates , Freddy Offenga and David Lloyd, ). - GEOS for the C64 and C128 (GEOSLib by Maciej Witkowiak ) There is also rudimentary support for the Oric Atmos (startup file and linker config, but no library support) contributed by Debrune Jérôme . The libraries are fairly portable, so creating a version for other 6502s shouldn't be too much work. New features in this release are: * Assembler: - In the .local directive, transfer the local char to the created symbols, so ".local @L1" will create cheap local symbols in macros. - New commands .PUSHSEG and .POPSEG to save and restore the current segment. * Compiler: - Optimization for memset (call bzero if fill value is zero). - Better handling of unknown pragmas, support for _Pragma(). - Local variables of compound type may now be initialized. - Register variables are back again and they work better than ever before! The plasma demo has a speed increase of 30% using register variables, the fire demo more than 60%. Note that these are special cases (small loops with a high loop count), so these numbers may not be typical. - More optimizations, especially register variable related ones. * Linker: - Support for more o65 attributes and "simple" o65 files - The linker is able to generate cc65 specific o65 modules. * cl65 utility: - Output the command line for the subprocesses when -d is given * Library: - A module loader allows to load o65 extension modules at runtime. These fully relocatable modules can be used as drivers, overlays or whatever. - Completely new graphics library (currently supported: C64) using loadable graphics drivers. - RS232 module for the Atari (written by Christian Groessler) - New _randomize() function for all platforms - Complete set of functions from time.h. All that has to be supplied is a machine speficic _systime function. - Most CBM file functions are now written in assembly. - C file I/O support for the following platforms: C64, C128, C16, C116, Plus/4, VIC20, PET. This is probably one of the most requested additions! - New API to access extended memory with loadable drivers for: C64 with GeoRAM cartridge, C64 with REU, C64 using RAM behind kernal and I/O area. C128 with GeoRAM cartridge, C128 with REU and C128 using the RAM in bank #1. * Platforms: - Some small improvements for the Apple ][: o revers() should now work correctly (do nothing) o Binaries have an AppleDOS 3.3 header - Support for VLIR files under GEOS - Minimal support for the Oric Atmos (just the startup file - contributed by Debrune Jérôme) - Support for the VIC20 (Steve Schmidtke). The standard linker config is made for the standard memory setup (3.5K) which is too small for most serious things. You have to use an external memory config when linking for a VIC20 with memory extension. - The C16/116 and Plus/4 are now separate platforms. The new Plus/4 target does banking and supports up to 59K of memory, while the C16/116 works without banking (and the overhead) and supports up to 28K. Both are still compatible, so C16 programs will run on the Plus/4, and Plus/4 programs will run on an expanded C16 or 116. * Documentation: - New function reference (incomplete) * Bugfixes and minor improvements as usual. There is still no support for the following features: * Floats and bit fields. * stdio file routines on some systems. * The 80 column mode on the C128 is not supported by the conio library. Available packages: As usual I will provide the complete sources and several binary packages, including RPMs for RedHat Linux. 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 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. Binaries for DOS and and Windows will follow or may already 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. 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. ----------- Thanks to all who sent feedback and suggestions, and of course to anyone who helped developing cc65! -- Ullrich von Bassewitz uz@remove-to-reply.musoftware.de 6:40pm up 73 days, 4:55, 17 users, load average: 0.07, 0.21, 0.45