Ach Mist, man soll einfach nicht Emulatoren vertrauen. Auf echter Hardware liefert Dgetpath() auch unter TOS 2.06 einen leeren String zurück.
Zu 1ST1:
Ich mache den Aufruf der Programme in etwa so:
short appl_type; /* 0=TOS, 1=GEM, anhand der Dateiendung */
short win;
long rc;
shel_write(1, appl_type, 0, (char*)program, param);
wind_set(0, WF_NEWDESK, 0, 0, 0, 0);
/* alle Fenster schließen */
do {
    short dummy;
    
    wind_get(0, WF_TOP, &win, &dummy, &dummy, &dummy);
    
    if (win > 0) {
	wind_close(win);
	wind_delete(win);
    }
} while (win > 0);
rc = Pexec(0, program, param, env);
shel_write(0, 1, 0, "", "\0\0");