Hi;
I am almost sure the procedures described bellow are known by you, but I decided to keep them there, so anyone else that doesn't know how to accomplish these procedures will be able to understand; O.K.?
There is no other way to put program labels in a specific order than by "inserting" them in memory in this order. As you mentioned, after a GTO[.][.], the "program memory" (an internal pointer) will be positioned in the "top" of the program memory.
Anyway, you can always position the pointer in between two existing programs and "insert" a complete, new one in there. Imagine you have:
.END.
END
.
.
LBL"THELAST"
END
.
.
LBL"THENEXT"
END
.
.
LBL"FIRSTNE"
If you want to add a new one and get this arrangement:
.END.
END
.
.
LBL"LAST"
END
.
.
LBL"NEXT"
END
.
.
LBL"MID"
END
.
.
LBL"FIRST"
you should: (in normal mode)
[SHIFT][GTO] [NEXT] (NEXT will appear as a menu key)
[SHIFT][PRGM] (enters into PRGM mode)
[SHIFT][GTO][.]0[ENTER] (positions before the first line of NEXT program)
(insert all lines for the program
[XEQ] END (so the new program in its own space...)
[SHIFT][PRGM] (leaves PRGM mode)
[SHIFT][GTO][.][.]
Otherwise, if you want to trade one label for the other, you should "reinsert" all lines for the existing program and delete it's previous "existence".
Using CUSTOM or TMENU (with KEYGO or KEYXEQ) will be, indeed, more efficient, as you mentioned.
As I mentioned in the beginning, I am almost sure you are reading about your own thoughts. Anyway, I hope this helps.
Cheers.
(Please, if there is anything wrong, allow me to know)