If a gcode prog get aborted with the stop button or estop while processing a subroutine, you can not restart it, since in emctaskmain.cc the subprogram is reloaded, but the toplevel file should so. I also have an issue with calling subroutines from an MDI command after the abort, it seems that the interpreter starts somewhere in the aborted programm. Please find my suggested fix attached. It adds a new field called file_toplevel to the task state, so the toplevel file can be reloaded. The reload will also be done in case of a MDI command after the abort.
The fix also patches axisui to display the toplevel file name.