How did we get on the topic of #Realloc()? That has to do with changing where in memory the A-θ variables reference, not strings or MemKit. I meant you should use a different pointer argument for Print() that will result in the string being copied to RAM, since Str1 is a part of your application and cannot be written to. For example: Print(L₁).
Regarding appvars, unless you want data to persist between runs (like settings or high scores), I would try to use scratch RAM to hold your data whenever possible. As far as I know, you don't need this string to persist between runs and it's pretty small, at most 9 bytes, so it's probably easiest to use scratch RAM to hold it.
Oh... I was under the assumption that #Realloc() would cause the variables to be located in L₁ for modification.
So wait, if I do use Print(L₁), will I still be able to use regular variables?
(Or maybe I just don't get where the variables are/how do variables work/etc. )
The variables are stored at the END of L1, not the beginning. Using the first 714 bytes of L1 is perfectly fine and encouraged. Its only the last 54 bytes that are freed during #Realloc() to expand the L1 buffer to the full 768 bytes so it can be used as a screen buffer. Hope that clears up your confusion.
Also, no, there is no such command as ->nib{}r since you cannot write to ROM pages. The nib{}r command is ONLY for reading data from the app itself (your strings, sprites, data, etc). If you are reading nibbles from appvars, free ram, or other ram variables, you STILL use the regular nib{} command even in an app.
As of 1.0.4, all apps generated by Axe Parser are non-trial