On 2011-01-24, at 14:37, Ullrich von Bassewitz wrote: > At least for the CBMs I doubt that something like exec() is doable without > nasty tricks. Depends how we define "nasty" ;-) My definition would apply if we would like to account for _every_ possible combination of load addresses/starting methods. If we come up with sensible convention for the external prgs to be started, it could fit into "reasonable" pool of tricks. > Assuming that the program to load is a BASIC program, or has a > BASIC header, it must be loaded to the BASIC start and started by a call to > BASIC. Since for the C64 the BASIC ROM is switched off, and the memory in > question is occupied by the running program, an implementation would have to > copy a small loader stub somewhere. Problem is that there is no safe > "somewhere". Maybe someone has a good idea but all I can think of may collide > with some sort of other program, customized kernal ROMs or whatever. I recall we were doing this sort of stuff using page two and three locations, back in the days. Now - since I didn't find it - it must be in the docs somewhere, but I am not the first time missing a sort of mem usage map of standard cc65 targets configurations. Are all the "typical" page two/three locations used by default config/runtime already? > The best idea would probably be to actually terminate the running program and > run a new one instead, eventually passing some arguments as if they were > passed on the "command line". This is the easiest and cleanest solution. This seem to fit into the same place as the stub-loader you mentioned. Get into "safe" place then exit the caller plus load'n run the callee. All in one chunk seems to be the least "nasty" approach. -- SD!---------------------------------------------------------------------- To unsubscribe from the list send mail to majordomo@musoftware.de with the string "unsubscribe cc65" in the body(!) of the mail.Received on Mon Jan 24 15:41:15 2011
This archive was generated by hypermail 2.1.8 : 2011-01-24 15:41:18 CET