You can type here any text you want

Question about table $34E5

Welcome!

By registering with us, you'll be able to discuss, share and private message with other members of our community.

SignUp Now!

Eric Stage I

TurboTweak Guy
Joined
May 25, 2001
Messages
2,668
The table known as "A/F vs LV8 cold engine"...
I was looking through the code to see how this table is utilized. It looks to me like it only is used when the coolant temp is under -4 F. Did I interpret that right? Why -4? Does something happen to fuel at this temp?
Also, at $3BEC, it seems to add another %100 fuel to whatever the table value was.
Can anyone shed some light on this for me?

On another note, can someone put a zif type socket in my ecm?

Thanks,
Eric
 
Whelp..i'll give this a shot..
To me it looks like the table you're talking about is actually
"Cold engine %AFR Change vs. Load" if not that one then it's gotta be "Cold Engine AFR Multiplier vs. Coolant Temp"

In the former table the data is as it states: As load increases you can change the percentage of AFR change. Valid values are from 0-256 load and 0-100% change. The stock chip is set to zero from 0-128 load, 3.9% at 144 load, and 7.8% all the way up from 160 load to 256 (there's your 100% change right there)...but it may not be the table you're talking about.? Anyway - i'll keep on goin..:D

In the Cold Engine AFR Multiplier vs. Coolant Temp" however, your value comes into play.

This is basically the same table, but temperature controlled instead of load (duh)..:) This is the guy you're probably looking at. Valid values are: -40 degrees CELSIUS (yeah i know!) up to a "tombstone frozen pizza roof-of-mouth-burning" 116 degrees celsius. ;) hehehe Anyway - all that table does is richen the mix as temperature increases. When it's really cold out - our cars will run lean, and this table compensates for that. Unless you live in Alaska - no need to change either of those tables. The similarity between them both is essentially the fact that everyone knows that you shouldn't fire up a cold motor, and go full load (WOT) right away. ..though I dont exactly heed my own advice sometimes. :rolleyes:

As for the ZIF - yup...you can! I use an 8 position 32K EEPROM meant for an '89 350 GM ECM. It's the 29C256 Chip vs. our wimpy 2732A chips. I cant tell you how much better it is to NEVER need to erase a chip in those UV erasers again. The pocket programmer does it all! Boom - 2 seconds, and the EEPROM erases all 8 positions if i want. Or, I can erase the #5 chip...really great stuff there. There's an adapter and comes with everything you need to do it..hot glue with gun (!!), ZIF socket, 32K chip, Wheel...$75. You cant beat that! :)

Here's the site: http://moates.net/gmecm/hworder.html
I have Package P-2...but package S-1 would work great too since you'd never have to fumble with those stupid carriers again!.

Good luck! :)
 
Thanks for the reply jayster, especially the socket info!

Here's a snippet of code as translated on gnttype.org:


3BD4: 96 23 LDAA $23 A = Filtered Load Var
3BD6: CE 34 E5 LDX #$34E5 X = COLD ENG A/F VS LV8 [#$10]
3BD9: BD FC 00 JSR $FC00 ; Do table lookup
3BDC: 97 93 STAA $93 AFRatio = A
3BDE: 4F CLRA A = 0
3BDF: D6 0C LDAB $0C if (NotClosedLoop)
3BE1: 2A 16 BPL $3BF9 goto 3BF9
3BE3: D6 1F LDAB $1F
3BE5: F1 34 28 CMPB $3428 if (CoolantTemp > MAX TEMP FOR VAPORIZATION CORRECTION) [#$30]
3BE8: 22 0A BHI $3BF4 goto $3BF4
3BEA: D6 93 LDAB $93 B = ColdEngAF
3BEC: CB 80 ADDB #$80 B += #$80 ; Apply vaporization correction
3BEE: 24 34 BCC $3C24 if (B <= #$FF) goto $3C24
3BF0: 4C INCA A++
3BF1: 5F CLRB B = 0
3BF2: 20 30 BRA $3C24 Goto $3C24

3BF4: F6 34 2A LDAB $342A B = CLOSED LOOP A/F RATIO [#$6F]
3BF7: 20 44 BRA $3C3D Goto $3C3D

3BF9: 7F 00 66 CLR $0066 $66 = 0
3BFC: D6 05 LDAB $05 B = $05
3BFE: C4 40 ANDB #$40 if (Idle Fuel Mode Enabled) /0540
3C00: 27 10 BEQ $3C12 goto $3C12
3C02: F6 34 2C LDAB $342C B = LOW COOLANT O/L IDLE A/F RATIO [#$6F]
3C05: 96 1E LDAA $1E
3C07: B1 34 2F CMPA $342F
3C0A: 25 03 BCS $3C0F if (CoolantTemp >= COOLANT SWITCHPOINT FOR IDLE A/F RATIOS) [#$70]
3C0C: F6 34 2D LDAB $342D B = HIGH COOLANT O/L IDLE A/F RATIO [#$6F]

3C0F: 4F CLRA A = 0
3C10: 20 2B BRA $3C3D Goto $3C3D
***
3C12: 96 1F LDAA $1F
3C14: B1 34 29 CMPA $3429
3C17: 23 02 BLS $3C1B if (CoolantTemp > MAX TEMP FOR VAP CORRECTION O/L) [#$30]
3C19: D6 93 LDAB $93 B = AFRatio
3C1B: 4F CLRA A = 0
3C1C: DB 8E ADDB $8E B += Cold Engine Dep. Fuel/Air Ratio
3C1E: 89 00 ADCA #$00
3C20: DB E6 ADDB $E6 B += $E6
3C22: 89 00 ADCA #$00

3C24: DD 91 STD $91 FuelTrim = D
3C26: B6 34 2A LDAA $342A A = CLOSED LOOP A/F RATIO [#$6F]
_________________________

At 3BD6 it loads in the a/f vs lv8 table
At 3BDC it saves the proper value into mem location $93

The next time $93 is used is at 3BEA, but only if in closed loop and coolant temp is below -4. How can it be in closed loop at -4 degrees? Then, at 3BEC, it tacks on #$80, which I believe is 100%. I don't understand that.

Now, if its in open loop, $93 is used at 3C19, but once again only if coolant is less than -4 degrees.

Is this table in use for cars in the arctic?


I'm starting to become an assembly code geek, somebody please stop me...
 
Got me, Eric...im not an assembler :) I use BMCS tuner..a windows-based app to set the variables. It's virtually identical to Tunercat - which is the best "easy to use" interface around. All the same options are there, it just lays it out for you real nice.

There are some code geeks out there, but they're hard to find. You may want to go GUI vs. assembler because there seems to be definite discrepancies in the "meaning" of the tables.

As i said before though..there is no need to mess with those tables at all. It will affect BLM's at idle during cold starts and your PE mode will also be affected. I would really recommend not bothering with those tables as it has nothing to do with "performance", and as such - changing those values will net you no gains, just harder to track problems. If you're that advanced, and looking to go silly with it all - by all means go for it...but i'd think you'd be charting unknown territory at that point, and will become your own "guinea-pig" ;)

Nobody I know touches those values, or 90% of the available values either..it's just not necessary for WOT performance.

thats my 2¢..sorry i couldn't be of more help with the assembly! :)
Good luck, Cap'n..
 
I'll try to look over that code this weekend (if Englishtown is rained out :mad: ). As for the afr vs coolant temp table, I use that to richen up the cold afr for better behavior in the winter. My car is a daily driver and we often have 15-20 deg F mornings here in MD, and I hate a cold natured car. It was most important with red stripes, along with keeping the temp threshold for closed loop up above 120 F or so (forget the exact value I wound up at). Otherwise it would die the first time or two I dropped it into gear. 009's may benefit from this but I've never made a chip for them. My 72's don't seem to need as much enrichment as the red stripes but a little more than stock did help. Like jayster said, this stuff doesn't matter for drag racing a warmed up engine, but believe it or not some of us do more that that :).
 
Looking at it more...I was thinking it was -4 F but I guess it would be -4 C which would make alittle more sense, however it still can't be in closed loop and -4C at the same time.
Looking at the thrasher code, it looks like Tom C. deleted this code and overwrote it with the lean cruise routine (I gotta give him credit, the code in that chip is pretty darn clever...and sneaky:)).
Anyway, so it looks to me like the only condition where the table A/F change vs. lv8 is "activated" is open loop and coolant temp below 25 F (-4C). I would still think that a/f vs coolant would take care of that.

As far as the a/f vs. coolant temp table goes. I've noticed that on the spreadsheet on gnttype from Turbodave (nice job) the values are listed as -100/+100%. In the code, I don't see where this % is multiplied by another a/f to get the final a/f. So I'm wondering if this table should be shown with actual a/f ratios and not percentages (I'm not positive).

Eric
 
A full explanation would be too lengthy for this forum, but I'll try to shed a little light on the subject. There are 4 tables used to adjust the AFR when the engine is started and the ECM has not yet switched to closed loop.

There's a 5th table ($34E5) that is used in O/L but only if temp is > 25F. It adds fuel because you "punched it" while the engine was still warming. You know, like my wife does .. turn key, put into gear, mash gas pedal! :mad: Anyhow, this table is also used in C/L but only when the temp is < 25F and the x'80 you noticed being added is some sort of vaporization correction. The AFR in C/L is too lean for Alaska-like temps, so this table fixes it.

The other 4 tables are used only in O/L. Unless you program the chip to enter learn-mode prior to switching to C/L, :eek: they will not affect BLMs. Their job is to control idle at start-up and that's all. Like Carl said, he adjusted them for red-stripes in order to get a decent idle. I discovered even using green-stripe injectors, you can create a very smooth idle by making changes here. Unfortunately, its like most things on these cars, you can't change just one to make an improvement. The tables are used together as an AFR multiplier.

Table $3521 primarily establishes the AFR used from the end of the initial warm-up until the C/L switch. Yea, its a percentage value (% of AFR), but since the AFR is fixed, a predictable final AFR is easily calculated.

Table $34F7 determines how much fuel is added to $3521 when engine is started, but this added fuel is reduced based on engine run-time.

Table $3513 determines how long to wait before reducing $34F7 added fuel.

Table $3505 specifies what the reduction "chunk size" is. Every 0.8 seconds the addition fuel is multiplied by this value. I found it easier to convert the % as listed to actual reduction amount. Example 0.922 is a 7.8% reduction.

I hope this helps.
 
Yes, that helps tremendously, thank you.

A couple questions:
You said that 34E5 can also be used in closed loop when coolant< 25F. Isn't that impossible if the open/closed loop temp threshold is 76F?

Also, take a look at this code,
3C1C: DB 8E ADDB $8E Add Cold Engine A/F Ratio to B
3C1E: 89 00 ADCA #$00 ???
3C20: DB E6 ADDB $E6 Add A/F Timout to B
3C22: 89 00 ADCA #$00 ???
3C24: DD 91 STD $91 Store D into FuelTrim
3C26: B6 34 2A LDAA $342A Load Closed Loop A/F Ratio (14.76) into A

See the command ADCA, what is that doing. I looked it up and its defined as "Add Memory to Accumulator with Carry A". I'm slowly teaching myself assem. and I don't get this one.

Thanks for the help

Eric
 
See the command ADCA, what is that doing. I looked it up and its defined as "Add Memory to Accumulator with Carry A". I'm slowly teaching myself assem. and I don't get this one.

The processor is adding the two numbers in binary during the ADDB instruction. If the result is larger than decimal 255, it needs a 9th bit but doesn't have one since its using 8-bit registers. In this case a "carry" flag bit is set (to be the extra bit). So that this bit doesn't get lost, it is moved to ACC A using the ADCA instruction. Now if you look at ACC A and ACC B together (A on left, B on right), you have the correct binary value for the actual result of the addition.

Note: This same carry flag bit is also used after a subtraction to indicate a "borrow" bit was needed because the bottom number was larger.:cool:

Be careful, too much of this and people will start calling you Geek Stage 1!
 
Originally posted by dennisL

Be careful, too much of this and people will start calling you Geek Stage 1!


Sorry, it's too late, he's already there ;)

Couldn't resist :D
 
Back
Top