Vymyslet se dá spoustu věcí, co třeba pointerová matematika? Neboli žádný cyklus, jen přiřazení odkud se bude brát přímo ze zdroje?
function copy(s : string; odkud, delka : integer) : string;
var ls : byte absolute s;
pvystup: ^string;
begin
if odkud>ls then s:='';
if delka>ls-odkud+1 then delka:=ls-odkud+1;
pvystup:=ptr(seg(s),ofs(s)+odkud-1);
pvystup^[0]:=chr(delka);
copy:=pvystup^;
end;