I think it would be possible to change execution starting address in PE header, so that program starting point would point to statement that is right after "begin" in program's main unit. Then the system unit wouldn't allocate that 3 MB chunk.