From: Marko Mäkelä (marko.makela_at_hut.fi)
Date: 2003-04-28 20:51:49
I'm working on the next version of cbmlink. I'd like to provide the cbmlink server programs with a BASIC header that transfers the machine code in place. To make things more flexible, I'd document a POKE that allows the user to specify an alternative loading address for the machine code, with 256 bytes of granularity. For example, instead of loading the code to $cc00 on the C64, the user could POKE X,192 and load it to 49152. Now, the problem is: how can I produce a list of all locations that need to be patched? If I remember correctly, the CS-DOS code (a C128 shell extension made by Chris Smeets) does this by assembling the code at two different offsets and comparing the resulting binaries. Is there a more "intelligent" way? I'd like to use André Fachat's xa, but porting the code to the assembler of the cc65 compiler suite is not out of the question. Marko PS: Nicolas Welte asked a while back if the code is ROMable. It seems to be. I've spotted only two occurrences of self-modifying code, neither of which is necessary in a ROM-based installation. First, the program writes the original value of the IRQ vector for the deinstallation routine. Second, the C2N232 routine saves the state of the I/O port connected to CASS WRITE. That can be rewritten easily. Message was sent through the cbm-hackers mailing list
Archive generated by hypermail pre-2.1.8.