With SDCC, memory usage is controlled by command line options
given to SDCC when it links the code. These options are typically
written in the project Makefile. For example, "--code-loc 0x2000"
would cause the linker to place your code at the beginning of the
RAM which can be used for downloading code, and "--xram-loc 0x6000"
would instruct the linker to place all your "xdata" variables
beginning at 0x6000.

With AS31, your program's location is controlled by the ".org"
directive within the code. Typically a ".equ" directive defines a constant near
the top of the code, and subsequent ".org" directives utilize this
constant to allow the code to be "moved" more easily.

Flash ROM must be erased before it is written.
When you download code built between 8000 to F7FF, PAULMON2 will automatically
program your code into Flash ROM (Flash programming is a procedure different
from simply writing to RAM). Flash programming can only turn 1's into 0's.
To turn programmed 0's back into 1's, you must erase the flash chip ('Z' Command)
or a 4k sector of the flash chip. The erasure causes all the bytes in the
erased area to turn back into 0xFF. If you download a new version of your
program "on top of" the original, the result is usually incorrect and PAULMON2
will print an "Unable to write" error message. If this happens, simply
erase the flash rom and try again (or use the RAM for development until
your code is debugged).