DTV kernelstarter

The DTV kernelstarter is a program that allows loading a custom kernel on the Commodore 64 DTV without the need to reflash the dreaded section $0000-$FFFF. This makes the update much more safe, since there is much less risk of bricking your DTV if you avoid flashing this section.

The way the kernel loader works is by copying the kernel to $1EE000, and configuring the memory mapper to use this area for the kernel ROM.

This kernelstarter is basically a copy of the original one by TLR, with the modification that the load address is 2061, which is needed in order to load the file from the stock kernel, by naming it INTRO and putting it on the flash filesystem. Although this method takes slightly longer for the DTV to boot, I prefer this way, because there is much less risk than if the original kernel is replaced.

TLR's kernel has a few patches fixing bugs in the original DTV kernel. I also wanted to use a custom kernel in order to get an optimized palette (after doing research on the subject). In order for this to work, I had to patch the kernelstarter to also call $f739, which loads the new palette. But this requires the kernel to be DTV compatible (i.e. correctly handle this call).

Because people may want to use this with other kernels, I also provide a version of the kernelstarter which does not initialize the palette.

In order to use either of the kernelstarters simply append a binary kernel image to the end of the PRG given here.

There is also an example of how I use it, in the form of a ZIP-file, compatible with dtvmkfs. If you want to use this example, please note that the kernel included here is TLR's with the modifications described above. Also, I have patched it so that it loads BOOT* instead of INTRO. You will likely want to replace the file I included called BOOTTEST, in which case it is important to note that the kernel expects the program to have a SYS-address of 2061.

Last updated: 2008.07.04