etxmato / emma_02

Emma 02 - RCA CDP 1802 Multi-system Emulator
Other
39 stars 9 forks source link

Changing EOP(End Of Program) #41

Closed wel97459 closed 2 years ago

wel97459 commented 2 years ago

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.

image

etxmato commented 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.

wel97459 commented 2 years ago

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.

etxmato commented 2 years ago

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.

wel97459 commented 2 years ago

ok that does make sense, im a little know to the comx-32 platform.

etxmato commented 2 years ago

Feel free to contact me anytime if you have any other questions or feedback on Emma 02 or questions about the COMX!