More About Points »
it sounds like a thermostat problem, How long does your car take to warm up if it just idles from a cold start. It should go from 30-40 degrees F to 180-190 degrees F within 4-5 minutes. This should be the middle of the gauge and that means the the heater should blow very warm at this point. If not then the thermostat is getting 'lazy'. It may even set a Check Engine Light for 'slow warm up'.
If the Check Engine Light is flashing it means that there is a misfire. The flashing CEL is to warn you that the misfire is severe enough to damage your CAT converter. Be prudent with how much you drive your vehicle in this state. Misfires are most commonly caused by worn out plugs, wires or bad coils.
Do a static timing check by lining up the cam and crank on the top dead center marks and then pull off your distributor cap and see if the rotor is pointing directly at #1 in the firing order. if the cam and crank are perfectly in time with their marks and the distributor is off, then your need to reinstall the distributor as Andy suggests.
It is unlikely that the ambient temp sensor would cause this problem. Check your coolant level. Low coolant will cause inefficient operation of the heating system because the heater core has little or nothing flowing through it so no heat gets transferred to the passenger compartment. Does your heater work normally at higher engine speeds?
You can just disconnect the negative battery terminal for 30 seconds on an early Toyota and that will do the trick. If the light comes right back on, there is another code or the code is still not properly repaired. Let me know if this helps I have a lot of experience with OBDI Toyotas.
There have been some updates to the Subaru Oxygen sensors. They had some problems with the element prematurely cracking. There may be some help avaliable from the manufacturer because this is a known problem with 2000-2003 Subarus. I am curious why the Cat converters need replacing. Is there a P0420 code (CAT failure code), are they rattling? There should be a logical reason. Having a bad Oxygen sensor should not wipe out the Cats because the computer will automatically go into a back-up mode to protect the CAT. It has stored values of known good reading from the front Oxygen sensor before it failed and the computer can utilize these for different driving conditions. I hope that this info is helpful.
It could be your Instrument Cluster Computer which also acts like a BCM or body control module. The Instrument Cluster Computer acts as a data bus connector for the rest of the computers on the vehicle. If you can, have someone connect a scan tool to see what codes are stored in the various computers. See if there are Instrument Cluster or Instrument Panel codes and/or BCM codes. Also see if there are data bus error codes and if so, which ones. Once we know this we can go to the next step.
Usually the codes have 4 digits i.e. P0300, etc. Are the codes P0011, P0021 and P0300? If they are then the P0011 and P0021 are Camshaft Sensor codes, ( not Crankshaft Sensor Codes ) and occur 1 for each bank. How many miles are on your vehicle? Did it occur immediately after the carwash? Were there no problems before that?
Have you made sure that your EGR valve is working properly? A malfunctioning EGR valve can set a P0401. If it is working properly then it is recommended that you have a professional clean the system because the fuel rail must be removed, with the injectors, and that involves dealing with high fuel pressure which can be very hazardous.
If the fuse is blowing, it has to be because there is too much of a current draw somewhere in the circuit. The purpose of the ASD relay is to cut the power to the fuel pump if there is no Crank signal such as in the case of an accident. The control side is grounded by the Power Train Control Module when it sees a Crank Signal and ungrounded when the Crank Signal goes away. How do the wires look that surround your relay in the area where it plugs in?