-------------------------------- MBASIC NOTES -------------------------------- A question asked quite frequently regarding MBASIC has to do with "garbage collection"; or "Why does my MBASIC program suddenly lock up in the middle of execution?". Many of our users are unfamiliar with the way MBASIC stores and manipulates strings. Perhaps the best way to explain how MBASIC works with strings would be to use a short example program, and show what the string space looks like after each instruction. PROGRAM STRING SPACE ------- ------------ A$="TEST" TEST B$="NEW" TESTNEW A$="OLD" TESTNEWOLD SWAP A$,B$ TESTNEWOLD A$=B$ TESTNEWOLDOLD PRINT FRE("") OLD VARIABLES --------- A$>TEST A$>TEST B$>NEW A$>OLD B$>NEW A$>NEW B$>OLD A$>OLD B$>OLD A$>OLD B$>OLD As you can see, MBASIC stores each new string it comes upon by APPENDING it to the end of the string space, NOT by overwriting what is already there. Notice that the unused strings are not deleted until the FRE function is encountered. The FRE function forces MBASIC to reclaim the unassigned string space, by a "garbage collection" process. MBASIC will also perform this garbage collection when string space is exhausted. Thus, the larger the string space, the longer this process will take. This is why a large MBASIC program will sometimes "hang up" for a few minutes when you least expect it. There is no way to prevent this process from taking place; but you CAN force it to take place when you want it to. The FRE function will return the number of bytes remaining in the string space. In order to do this, it must first force garbage collection. Given this, the line A=FRE("") may be used to force garbage collection when YOU want it to happen.