Yes, there is a connector under the dash. Is the engine light on? The port is OBD1, so there are only a few codes that you can extract manually. See procedure below and let me know if you have questions. If you get a code out, please let me know what it is for repair advice. If no code, I can probably give you some info to test a few of the main sensors that are used to calculate the injector pulse width. It's clear at least that your problem is in the closed loop mode, where the upstream oxygen sensor plays a key role along with the MAF sensor. Though you have swapped out the MAF, the problem could be in the wiring. Please do get back to me after checking the codes.
READING FAULT CODES
All stored codes are read through connections at the diagnostic connector. The DRB-II or equivalent may be used to read stored codes; the Mitsubishi Adapter must be used as an interface between the scan tool and the vehicle. The DRB-II may be used to read codes and observe the signal values being sent to and from the ECU. Fault codes stored within the system may be cleared through the DRB-II.
In the absence of a scan tool and/or adapter, codes may be read directly from the diagnostic connector. All stored fault codes are read through an analog (needle type) voltmeter after the system enters self-diagnostics. The codes are transmitted as pulses which cause the needle to sweep repeatedly. To enter the self-diagnostic mode:
- The self-diagnostic connector is located either next to or below the fuse panel, under the left dash. The only exception is the Colt Wagon, which locates the connector under the left side of the glove box, behind the center console. Remove the cover if one is fitted.
- With the ignition switch OFF , connect the ground probe of the voltmeter to the ground terminal (terminal No. 12) of the diagnostic connector.
- Connect the voltage probe of the voltmeter to the MPI diagnostic terminal (terminal No. 1) of the connector.
- Turn the ignition switch ON but do not start the engine. The codes will be transmitted immediately. Each two-digit code will be sent as groups of electrical pulses; these pulses will cause needle sweeps on the voltmeter. The codes are sent in place value groups. For example, Code 23 is sent as a group of 2 long pulses followed by a group of 3 shorter pulses. There is a short pause between place value groups and a longer pause between code groups.
If multiple codes are stored in the memory they will be transmitted in numerical order from lowest to highest, not in the order of occurrence.
- If the ECU detects an internal error, the needle on the voltmeter will show constant voltage instead of sweeping on and off. When this signal is received, the ECU must be replaced.
- If no faults are stored within the memory, the Normal State signal will be displayed. This is a constant, rapid needle sweep with no pauses or groups. This signal shows that the system understands the request for stored data but has nothing to report.
- Record the codes transmitted for use during repairs. Once the codes are recorded, switch the ignition OFF . Based on the codes, perform diagnostic and test procedures on the individual components and circuits.
If, during testing or repair, a sensor is disconnected with the ignition ON, the fault code for that sensor or circuit will be set. For this reason, having the original codes written down will eliminate confusion about additional codes appearing during testing or repair.
CLEARING STORED CODES
After all diagnosis has been completed and the needed repairs performed, the stored fault codes must be erased from the ECU memory.
Codes may be cleared using the DRB-II. When properly connected through the Mitubishi Adapter, select ADJUSTMENTS from the Main Menu screen. Choose item 1, ERASE FAULTS and follow the directions given on the screen.
Alternately, with the ignition switch OFF , disconnect the negative battery terminal for at least 10 seconds. This will also clear the stored codes. When the battery is reconnected, double check the repair by road testing over a moderate distance, then checking for newly-set codes.