Moving The 64 Kernal
I was given two Commodore 64 games on a disk for Christmas, but could not get either of them to work. The disk drive returned the error message "Invalid command." My dad and I think that there is an error in our Kernal, because we've used the same disk drive with other 64s and both games have loaded and run fine. We saved the Kernal ROM from another 64 to disk, then loaded the Kernal into the RAM beneath the ROM. We then executed POKE 0, PEEK(0) AND 253 to disable the ROM, thus replacing the Kernal with the RAM-loaded one, but this did not work. Is this the right command to turn the Kernal off?
The Kernal is another name for the 64's operating system. Although it is responsible for communicating with the disk drive, it seems unlikely that this would cause the disk error, especially if you are having no other problems. A hardware malfunction in your 64 could just as easily be the culprit. Nonetheless, the command you should use is POKE 1, PEEK(1) AND 253. This will effectively remove the ROMs from $A000–$BFFF and $E000–$EFFF, revealing the underlying RAM. If you save both these ranges on another machine using a machine language monitor, you can load the two files into your 64. If you only want to load the Kernal from the other machine, but don't want to change BASIC, you must copy the contents of the BASIC ROM to the underlying RAM with this statement:
FOR I = 40960 TO 49151 : POKE I, PEEK(I): NEXT
After the Kernal and BASIC have been copied or loaded into RAM, use the aforementioned POKE, or simply POKE 1,53.