But, and now, I don’t know, but, I’m going to call shenanigans on this quote from the Dvorak article:
I’m simply going to assert that while, perhaps, it was the first CP/M program to use these, that it’s not the first use case of overlaying code on a computer. If they did implement this, then they hand rolled it, since it’s normally a feature of the development system (the linker notably). It’s not hard to do it yourself, it’s just fiddly. If you want to dedicate, say, 8K of RAM to a block of swappable code, it’s straight forward to write several, different, assembly language programs all ORGd to the same space, and straightforward to read them in and swap them out at gross boundaries.
I have no proof, mind, but I just don’t think it was a new idea in 1978. And, honestly, it has nothing to due with DLLs. DLLs aren’t overlays, the mechanics are completely different.