8088 and 286 were cool, no MMU and just 640K RAM.
They invited ingenious solutions
Compilers generated code using 3 different calling conventions
1. near call (usual call)
2. far call (going inside another address space)
3. overlay call (called code was swapped from disk or high memory)