pweingar / OpenKERNAL

OpenKERNAL - a clean-room implementation of the C64's KERNAL ABI for the 65C02.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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.

About

OpenKERNAL - a clean-room implementation of the C64's KERNAL ABI for the 65C02.

License:GNU General Public License v3.0


Languages

Language:Assembly 98.0%Language:Makefile 2.0%