Yes, i/o commands are the key.
With real thing it goes straight through, but with newer systems there will be an exception, so something must be present and handle that exception.
Finally exact i/o command is executed but before that the security level must change to correct level and address of the command reroute through the new hardware.
With straight through software it would be less than extremely painful to change all i/o commands directly to memory mapped things that new hardware can understand and new system accepts without any exceptions, but all kind of scrambling styles of old times will most likely drop that less than part off the table.