It is, and sure! I use axe.eeems.ca/Commands.html for reference. Basically,  has a bunch of uses, and one of them allows you to 'absorb' the data of another program, appvar, picvar, or anything else, really, into the compiled code. Axe puts data at the end of the program, so if prgmHELLO simple had one line that said:
Then the following Axe code would compile to a C9 (Return) followed by the data from prgmHELLO:
In Axe, this is typically used for pic variables, because it makes creating splash screens and whatnot a lot easier (create the splash screen, store it to Pic1, then use [Pic1]→Pic1 in the source code instead of trying to input the whole hex string for the data.
The next thing you need to know is that Axe works with pointers, so when you do something like "prgmHELLO"→Str1, you are not actually storing to the Str1 variable. Instead, Axe puts the string at the end of the assembly program/app with the rest of the data, and Str1 is loaded with a 16-bit pointer to the data (so Str1 is just a number). You can use Pic, GDB, and all sorts of other tokens as pointers, too. As well, you can add an additional byte that is a number or letter, so Pic19 will also work as a pointer. In the code provided, I use [prgmBASIC]→GDB1 so that I can get a pointer to the data (which is now part of the actual assembly program) followed immediately by →GDB2 which loads 0 bytes of hex as data and returns the pointer in GDB2. Essentially, this gives me a pointer to the end of the data absorbed from prgmBASIC.
The GetCalc() command can do a number of things as well, including creating a variable. Its inputs for that are a pointer to the name (in the code provided, Str1 points to the name for prgmBASIC), and the next argument is the size, which is why needed a pointer to the start of the data and to the end of the data. If the var could not be created, 0 is returned, else a pointer to the variable's data is returned. This number will be >32767 since the created var will be in RAM. Return!If tells the code to Return if the result was 0. It would have been more clear if I had done Return!If Z but that would be 3 bytes larger in the output assembly program and 16 t-states slower. Since "Ans" is already the value of Z, there is no need to be redundant with it.
Copy() copies a chunk of data from one spot to another.
The assembly hex code takes the Axe "Ans" as a pointer to the name of a BASIC program and executes it as a BASIC program.
Also remember that when I refer to "Ans", there isn't actually an Ans variable in Axe. Behind the scenes, at the assembly level, all functions in Axe return the result in the register pair HL and that is what I am referring to.