Re: File I/O
Part of the reason for the lack of named file access in PASCAL was perhaps portability, in those days every OS had its own notion of file name syntax, and they were even more divergent than the tension between Windows and Unix/Linux file names.
It is also clearly meant for a batch environment. In the original, your PROGRAM statement could have file-type parameters and your "control cards" were expected to assign them to real files.
Another place where the batch-orientedness shows is that strictly-speaking the original did not even support any interactive IO, because notionally opening a file read the first element from it, so that INPUT^ which denotes the next unread element (usually character) would always have a defined value, and this INPUT (correspondings to C's stdin) was opened when the program started. So the program could not print a prompt before it required input!
Most implementations used "lazy IO", where INPUT was notionally opened at first reference. I think Turbo Pascal solved this by eliminating the silly file^ syntax entirely and required always using READ. A sane solution.
One implementation, PAX, that I had to use at the HUT (where it was written) took alternate route: The INPUT would always begin with a fictional line-delimiter, so to read from the terminal you would have to write
READLN;
READ(whateveryoureallywantedtoread);
Thanks, but that made interactive PAX programs automatically incompatible with all other implementations.