I think I once read in the Help for "of" Turbo Pascal that read differs from readln in that it does not add an end-of-line block "character" (line feed) and that this creates a problem in the following readln statements if reading from the console i.e. almost not preferring to use read for reading, "from" the console.
It isn't that it doesn't "add" an EOL but that it reads up to but
excluding the ending <CR> (or <LF>), while
ReadLn reads and discards it. The consequence is that after a
Read there is a <CR> still in the queue which a later
ReadLn will interpret as reading an empty line.
There are several ways to deal with this, among other by using the
EOLn function for a conditional
ReadLn, but if all one's doing is just reading a single value it's usually better to just use
ReadLn().