Notice. New forum software under development. It's going to miss a few functions and look a bit ugly for a while, but I'm working on it full time now as the old forum was too unstable. Couple days, all good. If you notice any issues, please contact me.
|
Forum Index : Microcontroller and PC projects : RESTORE Woes on a MM+ E100
Author | Message | ||||
Bowden_P Senior Member Joined: 20/03/2019 Location: United KingdomPosts: 162 |
Hi, I have just added some more code to an already large program, and got a plaintive beep towards the end of the download to my MM+ E100. MEMORY showed no program loaded, and the character count from MMEdit showed 90K characters, exceeding the RAM size of 89KB, assuming 1 character/byte. I am also assuming that a program is downloaded to RAM before tokenisation into Flash, so it wouldn't ever get downloaded even though the Flash at 96KB is large enough to take it. Sorry, lots of assumptions - please put me right if they're not true! I reasoned that if I put some subroutines into the Library, the main program would then be small enough to fit the RAM, and so be downloaded too. I shifted 6600 characters worth of subs into the Library, and got the main program to download. Yippee! Then came a problem - a Library sub needs to access labelled DATA in the main program, and MMBasic errors, saying :- [LIBRARY] Restore Hdr_Ctrl_List.Lbl Error : Cannot find label The label and data is in the main program, and all worked fine before the Library split. I've read the manual, but can't figure out a solution. All suggestions welcome, with best regards, Paul. p.s. The program is heavily #REPLACE'd with Disco4now's routine, so little chance to shrink the program much at all. Nothing so constant as change. |
||||
Geoffg Guru Joined: 06/06/2011 Location: AustraliaPosts: 3194 |
It sounds as if you have done everything correctly by moving some code to the library. However, in the library any RESTORE commands operate on the library space only. The only thing that I can think of is moving some other code that does not read data to the library. There must be something. Geoff Geoff Graham - http://geoffg.net |
||||
TassyJim Guru Joined: 07/08/2011 Location: AustraliaPosts: 6099 |
Can you store the data in a file and read it in as required. Slow but not a problem for a one time read. Jim VK7JH MMedit MMBasic Help |
||||
Bowden_P Senior Member Joined: 20/03/2019 Location: United KingdomPosts: 162 |
Hi Geoff, Thanks for clarifying the RESTORE command and Library interaction. You are quite right - there are plenty of other subs that I can move - I just happened to choose one that would have a problem. Must be one of Murphy's laws that describes this perfectly - perhaps "If anything can go wrong it will - and more often than you would think!" Hi TassyJim, Thanks for your suggestion. I use the SD card to store Help file info, which works well, and this would relieve Flash of having to store that data. Definitely worth a look. Thanks too to Grogster and this forum. I added control codes into the Help file text using the same technique as his icons to make bold, or italics etc., and can change the font, text colour, underline, and lines per screen! Makes otherwise dry text more interesting, With best regards to all, Paul. Nothing so constant as change. |
||||
Bowden_P Senior Member Joined: 20/03/2019 Location: United KingdomPosts: 162 |
Hi Geoff, Perhaps the Micromite manual could be clarified with the Library info w.r.t DATA access. My v5.05.05 version on p.47 describes DATA access from the Library to the main program DATA is possible - but you say not. With best regards, Paul. Nothing so constant as change. |
||||
Geoffg Guru Joined: 06/06/2011 Location: AustraliaPosts: 3194 |
DATA reads default to reading from the main program space but you needed to use RESTORE which {when used in the library) changes the reads to be from the library space. So the manual is correct - but this mechanism could be clarified. I will set a ToDo for the next manual update. Geoff. Geoff Graham - http://geoffg.net |
||||
Bowden_P Senior Member Joined: 20/03/2019 Location: United KingdomPosts: 162 |
Hi Geoff, Thanks. I needed to select assorted DATA blocks at random, hence using RESTORE. I have now chosen other subs I woun't have to edit to put in the Library, and all work well. The Library seems to reserve Flash in 2K blocks, so I juggled subs to get just under a multiple of 2K so as not to loose too much main program space! With thanks, Paul. Nothing so constant as change. |
||||
Print this page |