Not sure if your aware of this or not but did you know you can pull engine codes using the check engine light in the gauge cluster?
Turn the key to the run position three times stopping on the third (on off on off on) and the light will start to flash a certain amount of times.
Say the battery has been disconnected within 50 starts of the car this is code 12 using this method the check engine light will flash once then a slight pause then two more times.
Each code has it own amount of flashes.
If you would like a list of these codes i can get them for you.
Comes in very handy on the road.
12*
Battery has been disconnected within last 50 key-on cycles
55*
Completion of fault code display on Check Engine Lamp
54**
No camshaft signal detected during cranking
53**
PCM Internal Fault detected
47***
Battery voltage sense below target charging during engine operation
46***
Battery voltage above target charging during engine operation
42*
Open or shorted condition detected in the auto shutdown relay circuit
41***
Open or shorted condition detected in the generator field control circuit
34*
Open or shorted condition in the Speed Control vacuum or vent solenoid circuits
33*
Open or shorted condtion detected in the A/C clutch relay circuit
32**
Open or shorted condtion detected in the EGR transucer solenoid circuit
31**
Open or shorted condtion detected in the duty cycle purge solenoid circuit
27**
Injector #3 or #2 output driver doesn’t respond properly to the control signal
25**
Open or shorted condtion detected in one or more of the idle air control motor circuits
24**
Throttle Position Sensor input above/below acceptable voltage limits
22**
Engine Coolant Temperature Sensor input above/below acceptable voltage limits
17*
Engine did not reach operating temperature within acceptable limits
15**
No vehicle speed sensor signal detected during road load conditions
14**
MAP sensor input above/below acceptable voltage limits
13**
No difference recognized between the engine MAP reading and the barometric (atmospheric) pressure reading from start-up
11*
No crank reference signal detected during engine cranking
43**
Peak primary circuit current not achieved within maximum dwell time (could be on ignition coil #1, #2 or #3)
42*
Open condition detected in the ASD Relay Output Circuit
32**
Required change in air/fuel ratio not detected during diagnostic test
62*
Unsuccessful attempt to update EMR mileage in the PCM EEPROM
63**
Unsuccessful attempt to write to an EEPROM location by the PCM
23**
Intake air temperature sensor input above/below acceptable limits
16*
Knock sensor either shorted to ground or 12 volts. Will not detect open circuit
61
Barometric pressure out of range
27**
Injector #4 output driver does not respond properly to the control signal
53**
PCM internal fault detected
27**
Injector #5 or #6 driver does not output does not respond properly to the control signal
77*
Malfunction detected with power feed to speed control servo solenoids
34*
Speed control switch input above/below acceptable voltage limits
33
A/C pressure sensor input above 4.9 volts/below .098 volts
35**
Open or shorted condition detected in the control circuit of the low/high speed radiator fan
66
No messages received from Transmission Control Module / No messages received from Body Control Module
42*
Open of shorted condition detected in the fuel pump relay control circuit
43**
Misfire detected (hook up scan tool reader to determine which cylinder)
31*
Insufficient or excessive vapor flow detected during evaporative emission system operation
37**
Incorrect input state deteceted for the Park/Neutral switch
52**
Rich air/fuel mixture has been indicated by an abnormally lean correction factor
51**
Lean air/fuel mixture has been indicated by an abnormally rich correction factor
17**
Engine does not reach 20°F within 5 minutes with a vehicle speed signal
24**
TPS signal does not correlate to MAP sensor
14**
5 volt output to MAP sensor open
45**
Automatic transmission input DTC has been set in the transmission controller
25**
Actual idle speed does not reach target idle speed
71**
5 volt output from regulator does not meet minimum requirement
42*
Open circuit between PCM and fuel gauge sending unit / Circuit shorted to voltage between PCM and fuel gauge sending unit / No movement of fuel level sender detected
65**
No release of brake switch seen after too many accelerations
44**
Battery temperature sensor input voltage above/below acceptable limits
11**
Intermittent loss of either camshaft or crankshaft position sensor
72**
Catalyst efficiency below required level
21**
O2 sensor
11**
CKP sensor target windows have too much variation
21
Oxygen Sensor reponse slower than minimum required