|Here is a short report how I changed the switch-on message of the Dolphin Dos.
At the beginning there is the research in the internet, so that you get a starting point, or an idea of how it could work.
First there is the information how the C64 displays the power on message and where to find the jump addresses.
A good starting point is this page: > LINK
There you can find the commented source code of the standard kernel, which is normally found in the C64. The power-on message is available at the address: E422-E446
The text for the single lines starting at E473
Then we need the source code of the Dolphin-Dos kernel. For this I used this online dissassembler: > LINK
The dissassembled Dolphin-Dos code is important in two ways, first to find empty places, to not overwrite important functions with new functions, and of course to see what the code does.
So far so good
In order to test the modified kernel in real time, some preparations are necessary. Because it is surely no fun to compile the source code every time, program an EEprom, and then put this EEprom into the C64 to see if it works.
This is my C64 programming IDE (incl. own compiler) which I programmed especially for the C64. As you can see on the top right, I send the source code directly to the C64, via a self-developed code-injection module.
That means, when I click "RUN" in the editor, the executable code starts in 3-5 seconds directly on the C64. This is how I program almost all the time, because emulators often give wrong results (even the best ones).
For the development of the kernel changes I programmed a PRG that copies the kernel in the C64 into RAM under the kernel ROM (E000-FFFF). For this, of course, Dolphin Dos must first be copied to an EEprom and plugged into the C64 (in my case the Tuning Board).
This is what the power-on message of the C64 looks like:
When the kernel from the EEprom has landed in RAM, the changes are made in RAM, as well as the Basic is restarted. Because only then the new message appears. So a lot of tricks are necessary to get an ideal test or programming environment.
In search of free memory
The main problem is not to program the routines, but to find space in the kernel. There must be analyzed from kernel to kernel. So research and look at the source code.
The easiest way is of course to overwrite either the tape or/and the RS232 routines of the kernel, so that they are no longer usable. The former can be forgiven, because TAPE is not something that is usually used all the time. With RS232 the situation is quite different. So it is always a consideration
In the case of DolphinDos, the focus would be on possible address ranges:
So rather small ranges. If your own code is too long, it would have to be chunked and distributed over the free address ranges.
But in the case of Dolphin-Dos, which has a small monitor ready from F000, I decided to overwrite the monitor code.
In the end it looks like this: