I don't think it is possable to download / upload both program and offset data in same program. For the simple reason that both a machine program and a offset program need to start and end with "%".
So if you combined a machine program with a offset program like this:
N0 Vxxxx (offset portion)
M02 or M30
% (may be able to hand edit these two lines out, so it
% will load and not stop here when run)
O1111 (my program) (main program)
G90 G80 G40 G54
Then every time you ran the program it would update the offsets(to the original setting "not good"), and then stop (M02) or rewind (M30) at the start of the main program (if you didn't edit out the two lines above). So an M02 would stop there and you could push cycle start again, to run the main program.
But it would not update your tool / work offsets, if you edit the tools or work offsets, both as you were running and when you tried to send the program back to floppy or RS-232 to your computer.
You could use G10 at the start of your program, to set all your offsets, but it too would not update your tool / work offsets.
I don't think either option is very good or do able.