My recollection of the 1980s MS-DOS world was that Turbo Pascal's
problems were it's small memory model and lack of modules until
v4.0, by which time C had already taken over.

Who said anything about MSDOS? C took over when CP/M was the rage.
"Modules" are just what I mentioned with respect to "separate
compilation".
The issue with Pascal is that it is completely unsuited to
systems programming altogether, because it has no escape
route from the strong typing, no provision for separate
compilation, and uses interpreted p-code.
It is impossible to write a string concatenation routine
in Pascal because of the strong typing. It is impossible
to unpack a floating point number into its compnent parts
because of the strong typing. These are just two examples
of how Pascal is completely unsuited for systems programmning.
Without separate compilation, programs are individual
separate things. This prevents code sharing, which is
one of the prime reasons for having an OS. So this is
another reason Pascal cannot be used for systems programming.
Since the output of a Pascal compiler is required to be
p-code, it needs an interpreter. So, we're back to
writing the interpreter in assembler. Furthermore, the
OS normally cannot take the performance hit that interpretation
imposes. So, again, Pascal is completely unsuited for
systems programming.
Modula-II addressed all these issues, in a way superior
to C. It just had the wrong name and came along 10 years
too late.
Mike
--
p="p=%c%s%c;main(){printf(p,34,p,34);}";main(){printf(p,34,p,34);}
This message made from 100% recycled bits.
You have found the bank of Larn.
I can explain it for you, but I can't understand it for you.
I speak only for myself, and I am unanimous in that!