What it boils down to is that ONE code clearly identifies the ICM. We're very certain it'* a bad unit. Two other codes COULD be the ICM, but might not be. The ICM is the logical starting point.
Your TPS should be next, as the O2 won't prevent a start. But again, you may have a wiring problem or a ground issue, or a PCM fault. That'* a TON of codes to be throwing.
You might want to re-seat all your PCM connections to be on the safe side, and for some peace of mind. It'* above the right front passenger footwell. Remove the 3 screws that hold the hushpanel, and look up. It'* the silver box with the 4 connectors on it. You'll have to remove a 10mm hex to get it out, and it'* a tight fit and a struggle.
I don't have the time to look it up right now, but your spark reference, cam, crank, tps, and O2 may all use the same connector on the PCM.