Che differenza c'è tra Emit() e WriteLn()??

cosa dovrebbe fare questo pezzo di codice:

var A : char;

procedure get;
begin
Read(A);
end;

function Name: char;
begin
Name := UpCase(A);
get;
end;


cosa restituisce la funzione Name?? Il valore di Read??
e cosa fa, in questo caso := ??