Releases: pzembrod/cc64
cc64 v0.13
v0.13 updates the VolksForth build base from 3.9.5 to 3.9.6 which
slightly reduces the size for the Commander X16 version of cc64 and also
should make it much more robust against new Commander X16 ROM releases.
A visible consequence of this change is that cc64's command line now uses
the regular Commodore screen editor.
For the records: v0.13 was tested with ROM R47. v0.12 works with R47, too.
The Commander X16 version of c-charset
is now
working correctly; in v0.11 I had forgotten to adapt it to use the changed
bank switching address of prototype#2 and subsequent boards. Thanks to leop
for pointing this out to me.
Minor changes: Scratching of temp and output files before, during and after
each compile run was fixed and refactored. The src/samples/
dir
contains some code I wrote inspired by the Vintage Computing Christmas Challenge 2023.
And the run-in-x16emu.sh
script doesn't use the generated SDCard image anymore
but runs directly off the x16files/
dir using x16emu's -fsroot
option.
cc64 v0.12
v0.12 updates the VolksForth build base from 3.9.4 to 3.9.5 which
migrates the Commander X16 version of cc64 to the Kernal version R46.
For C64 and C16 the change should be a no-op.
cc64 v0.11
v0.11 updates the VolksForth build base from 3.9.3 to 3.9.4 which
migrates the Commander X16 version of cc64 to the Kernal version R41
and the new prototype #2 board. For C64 and C16 the change should
be a no-op.
cc64 v0.10
The three main changes that v0.10 brings are ANSI syntax for function definitions, a basic libc, and proper support for _fastcall
functions, with a related breaking change in runtime module .h file format.
ANSI style function definitions (char f(int a) {...}
) are implemented as a syntactic alternative to K&R style function definitions (char f(a) int a; {...}
) with exactly the same semantics, i.e. there is no matching or checking of declared parameter types and actual parameter types in function calls.
The new basic libc is based on PDCLib. Only a limited range of standard libc functions make sense on an int/char only compiler on the C64, C16 or X16. 18 string.h
functions and 2 stdlib.h
functions were ported from PDCLib, and 2 functions from stdlib.h
, 8 functions from ctype.h
and 12 functions from stdio.h
were reimplemented in 6502 assembly. The cc64 libc is available in precompiled runtime modules libc-*.[hio]
, to be used instead of rt-*.[hio]
.
cc64 always could call a type of assembly-implemented single-param functions which need no own stack frame and get the param passed in
a/x. v0.10 introduces the keywork _fastcall
to declare or define such functions, as well as _fastcall
function pointers, which weren't possible before.
The related breaking change concerns the the format of how symbols are defined in the rt-*.h
and libc-*.h
files.
There are now more parser unit tests, some compiler bugs discovered while implementing the libc were fixed, and binary sizes are now tracked in bin-size-register.
For more details see Versions.
cc64 v0.9
Main topic of v0.9 is compile speed. With the help of a simple profiler
I was able to optimize a few performance hotspots in the scanner and in
the scanner/parser interface, resulting in more than 20% compile time
saved or more than 30% speed gained.
Also, Source code listing during compile can now be switched on and off.
Default is off; it turns out that switching off listing decreases
compile time by another ~10%.
cc64 v0.8.1
v0.8.1 brings fixes for 2 bugs around declaring and exporting symbols for new runtime libraries. Thanks to buzzphp for finding and reporting them.
Also following a suggestion from buzzphp, v0.8.1 contains a zip file with cc64's Fourth sources in PETSCII format, plus the VolksForth kernels for C64, C16 and X16, to facilitate recompiling cc64 from source in case the Makefile setup doesn't work, e.g. on emulators under Windows or on real machines.
And finally the release contains improved testing, namely integration tests for the library symbol export, and the first unit tests for scanner and parser.
cc64 v0.8.0.1
No code changes, just a small update to COPYING,
and COPYING is added to the distribution zip files and images.
cc64 v0.8
v0.8 brings cc64 to the Commander X16.
This required a number of refactorings and the move to VolksForth 3.9.2 as build base, and a logging-to-file option was added, but there are no feature changes beyond that.
cc64 v0.7.1
In cc64 v0.7, the C16/Plus4 disk image c16files.d64 mistakenly held the C64 binaries instead of the correct C16 binaries.
V0.7.1 fixes this.
cc64 v0.7
v0.7 is the first properly defined version, with a labeled github release.
v0.7 brings two major changes: a new build base, and a C16/Plus4 port.
The build base has been updated from my custom C64 UltraForth 3.82 version to VolksForth 3.90. Note that UltraForth was the earlier name of VolksForth's C64/C16 versions.
VolksForth C64/C16 3.90 has the fixes and enhancements (esp. UNLOOP) of my 3.82 as well as my simple INCLUDE implementation for loading .fth files integrated into the core system. It also offers a lite version without the BLOCK mechanism for loading d64 screen sources which cc64 doesn't use anymore.
Thus, cc64 is now built on stock VolksForth 3.90, which enabled the second major change: porting to C16 (with 64k) and Plus4. As of v0.7, cc64 runs hosted on C64 as well as on all C16 variants with 64k. Target runtime libraries for both platforms are available on both hosts, enabling cross-compilation.