OpenKERNAL - a clean-room implementation of the C64's KERNAL ABI for the w65c02. OpenKERNAL is a clean-room implementation of the Commodore 64 KERNAL ABI (Application Binary Interface) as documented in the Commodore 64 Programmer's Reference. OpenKERNAL allows programs which rely only on the KERNAL ABI to run on a variety of hardware platforms. This includes, but is not limited to, CBM BASIC V2, which is of nostalgic value to many C64 owners. NOTE: OpenKERNAL relies on features of the 65C02, so it is not a replacement for the KERNAL in the C64 (which uses the 6510). OpenKERNAL is released under the GPL3 license with the kernel exception: applications which merely make use of the kernel through ABI calls are NOT considered 'derivative works'. Building -------- To build, you should only need GNU Make and 64tass. The default target (bin/C256jr.bin) will build an unbundled kernel for the C256 Foenix Jr. This kernel will normally be loaded at $e000, but see the README file for your platform to confirm. The C256 Jr. build loads at $c000. Bundling with CBM BASIC ----------------------- To bundle the kernel with CBM BASIC, you will need to provide a ROM file containing the BASIC. The Makefile provides two targets (wget-cbm and curl-cbm) to fetch a copy from the web if you don't want to extract the data from your C64. Once you have the ROM, 'make cbm/<platform>.bin' to make a kernel for your platform that's bundled with CBM BASIC, eg: make cbm/C256jr.bin These targets should be loaded at $a000. Note that 'cbmjr' is provided as an alias for this specific target. Bundling with other ROMs ------------------------ Other ROMs may be bundled and automatically started from the kernel. See core/kernel.asm:start for details.