Yes you're correct about purpose, but many of the runtime functions would then be limited to the old 64K limit.
I rewrote all the string handling, memory management, etc functions in the Borland pascal and c++ runtimes to let me use all the memory without worrying about segments/offsets.
So, you got the DOS functions, but you also got printf, port io, memory functions, a bunch of stuff I can't remember, etc.
Basically you got the primary benefits (for the needs of the time) of pmode - flat memory, without most of the pain. Seems like the same situation here - you get all the new registers, but without the pointer overhead.
EDIT: One point to note is that your Code, Data and Heap segments all stayed 64K. This bit me in the ass once when I was presenting. Two bits of code had been tested separately when brought together went over the 64K code and heap limits. That was embarrassing.
I rewrote all the string handling, memory management, etc functions in the Borland pascal and c++ runtimes to let me use all the memory without worrying about segments/offsets.
So, you got the DOS functions, but you also got printf, port io, memory functions, a bunch of stuff I can't remember, etc.
Basically you got the primary benefits (for the needs of the time) of pmode - flat memory, without most of the pain. Seems like the same situation here - you get all the new registers, but without the pointer overhead.
EDIT: One point to note is that your Code, Data and Heap segments all stayed 64K. This bit me in the ass once when I was presenting. Two bits of code had been tested separately when brought together went over the 64K code and heap limits. That was embarrassing.