Closed wel97459 closed 2 years ago
Hi Winston,
Thanks for the feedback but I don't fully agree. Yes EOP and 0x4283/0x4284 contain the end of a basic program. However the 'Specify Location' feature is to save a specific part of memory. For example if you have some machine code (like the F&M Monitor) somewhere in the end of RAM which you want to save and load directly to that location.
If you turn off the 'Specific Location' check it should save up to EOP, didn't check that but I believe it does. Both PSAVE/DSAVE and memory access features also use 0x4281 (DEFUS), 0x4292/93 (string), 0x4294/95 (array) and 0x4299/0x429A (EOD) so just changing EOP might not give the desired result in all cases.
With 'Specific Location' checked it will save from start to end as specified and uses the exec address for program start. For the F&M Monitor that would be start=9900, end AF7F and exec A000. i.e. to start you would use CALL(@A000) or the RUN button should do that automatically.
Ya I can see that, what if there was an option. The issue I'm having is I'm writing machine code and loading it into the basic prog area and calling @4401. But I want to load it into my real comx and psave is only saving about ~255 bytes up to the unchanged EOP. so changing the value of EOP gets psave to save the area my machine code is in.
Use DEFUS, for example DEFUS @5000 would reserve BASIC RAM 4400 to 4FFF for your machine code. Then when you write some BASIC, for example 10 CALL(@4401), that code will be stored on @5000. PSAVE, PLOAD and memory access will use this info as well.
ok that does make sense, im a little know to the comx-32 platform.
Feel free to contact me anytime if you have any other questions or feedback on Emma 02 or questions about the COMX!
When using Memory Access in the comx-35, it should change the EOP to point at the end of the loaded space when SpecifyLocation is check.
EOP is commend in basic and returns the end of program. It's also used by PSAVE to tell it when to end.
The EOP value is located in memory at 0x4283 high byte and 0x4284 low byte.