Not being a programmer
Me neither. Here's how I understand it:
First you need a compiler that's able to produce code that can address
64 bit of RAM. When that works, you have to rewrite the memory management.
At least the system has to support 64 bit addressable RAM to be able to
assign that to apps. (Guess that part is in the kernel.) Quite a challenge
when you don't have the source code. ;-)
About 16 bit code: OS/2 itself contains much 16 bit code: Almost all drivers,
except ACPI.PSD and CMD.EXE are still 16 bit code. Much fun without the
sources. ;-)
The next step won't be to raise evrything to 64 bit. It is to support PAE
(Physical Address Extension). Then the 4 GB limit would apply for each
process, not, as it is now, for the entire system.
About 16 bit apps: Except some few system apps, I don't use 16 bit apps.
I don't understand why 64 bit code can't support 16 bit code, but that seems
to be the case. Note that for systems with 64 bit addressable RAM
virtualization is always an option.