You haven't said if the engine will rev past 4000 in neutral ? But you mention limp mode
so I'm going to assume that it won't go past 4000 while actually driving... if so engine load
is a factor. Probably also safe to assume that the engine is mechanically sound and that
the problem is related to electrical, fuel or timing issues.
There are a few things that will cause the engine to run out of puff at a certain rpm but
the ISCV is not one of them as it is only active at idle. The O2 sensor can cause all sorts
of running and tuning problems, only they are usually irritating and relatively minor so
probably safe to put that code aside for the time being.
What's left that might cause or contribute to rev limiting ?
- Ignition timing ? Have you checked it with a light ?
- Cam timing ? Have you checked your belt is installed correctly and all the marks line up ?
- MAP sensor ? Hose connected, plugged in and no broken wires ?
- Fuel pressure OK ? Tail pipe black or white ? Any smell once engine is warmed up ?
- Do you hear any "pinking" or "knocking" sound when you put load on the engine ?
- Does it get weak earlier than 4000 if you have your foot up it and later if you are gentle ?
- Does the engine run any different hot from cold ? Like does it feel stronger if you warm
it up on the road compared to once it is fully up to temperature ?
I once had a 3SG Corona that suddenly went into limp mode one day on the drive to work.
Couldn't find anything wrong with it and in desperation I started pulling fuses from the
under hood fusebox to see if any were blown. The fuses were all good but the next time
I started the car it was back to normal. Could be worth a try as corrosion can form on the
contacts after a lot of years without being disturbed, and just pulling and replacing the
fuses is enough to restore the contact surfaces.
That ought to keep you busy for a while