What do you mean by not using L1? I thought that L1 is a specific pointer to some free memory?
Indeed, that's why you can't use it this way. L1 is already defined. You can't do whatever→L1. But you can do
{whatever}→L1 whatever→{L1}, or Copy([101010101010],L1,6).
Also, what is "°MyMap"?
Seen from the program editor "°MyMap" is the "°" character followed with the "M" character... etc.
Seen from your program once compiled, it's a number. You just gave that number the name "°MyMap" because it's much more convenient to use.
Seen from the Axe Parser, it is a preprocessor name that means a number, it'll have to be replaced with that number at the end.
Seen from you, it's the pointer to what's before the "→".
Also, what is "°MyMap"? I mean I'm aware I can name variable, but how would I define, for example, a portion of memory 16 bytes in size?
It depends on what you call define. You can "create" 5 bytes of memory but just writing [0000000000] or Data(0,0,0,0,0) or Buff(5). Then you need a pointer to that so you can use those bytes, so you'll write → followed with a pointer. Note that doing this always works if you are only reading bytes, but if you compile as an app, you won't be able to write back to those bytes.
Alternatively, you can just use existing memory, like the area pointed by L1 or L2, or any free RAM area (or a non-free RAM area but maybe you won't be able to use your calculator afterwards).
From what I can see on the axe parser command list, Data () adds bytes to the program memory? What does that mean? What is program memory in this case?
Your program is just a bunch of bytes. Some of them are commands, some others are data, but it's just a pack of bytes. Data just adds some bytes in your program that you'll use as data. But if you mess up severely, you might be able to read or write data in the middle of your code and execute your data as if it was code