[Gmecm] DIS vs. on Distributor code (was: BLM cell confusion)
Gary Evans
gary
Tue Nov 15 17:33:24 UTC 2005
I do believe the SyTy and Sunbird are both distributor. Interesting
that the constants are hard coded. I don't think GM ever intended the
ECM to be switchable from Distributor to DIS jut by changing
calibration tables alone.
Clearly they developed the DIS module to be hardware compatible, but
the software side has something going on. One thing I never
understood is why changing the base reference angle has no effect on
timing?
On Nov 14, 2005, at 5:56 PM, WopOnTour wrote:
> Gary
> I'm trying to determine what's different in the calibration files
> between the "distributor" versions of the '749 code (2.0L turbo, Sy/
> Ty) and the DIS version (1988 Quad 4)
> Below are a few excerpts from "the archives" you probably have all
> this already but if it helps any... But one things for certain, at
> least the offsets are different in the Quad4 as its a 256K PROM
> instead of 128K
> WopOnTour
> **************************************************
> Here is the dwell computation code from the SyTy (and turbo Sunbird)
> program. All the named locations are RAM variables except for
> TachInterval which comes from the hardware timing chip. Notice
> that all
> of the constants are hard coded, none are read from the configuration
> area. (Question: Are the SyTy and Sunbird distributor or DIS?)
> This code fragment is invoked at 80 Hz
> xD035 ...
> LDX TachInterval ;Hardware register
> LDAA #255 ;Dummy huge ExtraDwell
> LDAB Flags2F
> BITB #bigMapIncrease
> BNE @0 ;Force ExtraDwell := (TachInterval / 8)
> LDD OldTachInterval ;OldTachInterval - TachInterval
> PSHX
> TSX
> SUBD (X)
> PULX
> ASLD ;Double difference
> SUBD ExtraDwell ;Extra dwell if RPM increased
> BMI @1
> ADDD ExtraDwell
> @0 STD ExtraDwell
> @1 PSHX ;TachInterval to D
> PULD
> LSRD ;TachInterval / 8
> LSRD
> LSRD
> SUBD ExtraDwell ;Limit ExtraDwell to (TachInterval / 8)
> BHS @2
> ADDD ExtraDwell
> STD ExtraDwell
> @2 PSHX ;TachInterval to D
> PULD
> STD OldTachInterval ;Set new OldTachInterval
> LSRD ;Compute Dwell using TachInterval
> SUBD #229
> BHS @3
> ADDD #308
> BRA @5
> @3 LSRD
> SUBD #295
> BLO @4
> ADDD #382
> BRA @5
> @4 ADDD #1527
> LSRD
> LSRD
> @5 STD Dwell
> LDAA #120 ;Increase dwell at low volts
> DIFA SensedVolts
> LDAB #4
> MUL
> ADDD Dwell ;Combine all terms
> ADDD ExtraDwell
> STD Dwell
> LDD TachInterval ;TachInterval - 39
> SUBD #39
> SUBD Dwell ;Limit Dwell to (TachInterval - 39)
> BHS @6
> ADDD Dwell
> STD Dwell
> @6 ...
> This code fragment slowly reduces ExtraDwell to zero. It is executed
> once per ignition event (up to 80 Hz).
> xCE2F ...
> LDD ExtraDwell ;ExtraDwell / 8
> LSRD
> LSRD
> LSRD
> COMA ;- (ExtraDwell / 8) - 1
> COMB
> ADDD ExtraDwell ;ExtraDwell - (ExtraDwell / 8) - 1
> BPL @9
> CLRD
> @9 STD ExtraDwell ;Decay ExtraDwell to zero
> --
> Ludis Langens ludis (at) cruzers
> (dot) com
> Mac, Fiero, & engine controller goodies: http://www.cruzers.com/
> ~ludis/
> -<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>-
> -<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>-
> $Date: Tue, 23 Feb 1999 10:04:57 -0800
> $From: Ludis Langens <ludis at cruzers.com>
> $Subject: Re: EST observations (kinda long)
> Tedscj at aol.com wrote:
> The problem is that the other edge may "move around" at different
> RPMs.
> Here is the dwell computation code from the SyTy (and turbo Sunbird)
> program. All the named locations are RAM variables except for
> TachInterval which comes from the hardware timing chip. Notice
> that all
> of the constants are hard coded, none are read from the configuration
> area. (Question: Are the SyTy and Sunbird distributor or DIS?)
> This code fragment is invoked at 80 Hz
> xD035 ...
> LDX TachInterval ;Hardware register
> LDAA #255 ;Dummy huge ExtraDwell
> LDAB Flags2F
> BITB #bigMapIncrease
> BNE @0 ;Force ExtraDwell := (TachInterval / 8)
> LDD OldTachInterval ;OldTachInterval - TachInterval
> PSHX
> TSX
> SUBD (X)
> PULX
> ASLD ;Double difference
> SUBD ExtraDwell ;Extra dwell if RPM increased
> BMI @1
> ADDD ExtraDwell
> @0 STD ExtraDwell
> @1 PSHX ;TachInterval to D
> PULD
> LSRD ;TachInterval / 8
> LSRD
> LSRD
> SUBD ExtraDwell ;Limit ExtraDwell to (TachInterval / 8)
> BHS @2
> ADDD ExtraDwell
> STD ExtraDwell
> @2 PSHX ;TachInterval to D
> PULD
> STD OldTachInterval ;Set new OldTachInterval
> LSRD ;Compute Dwell using TachInterval
> SUBD #229
> BHS @3
> ADDD #308
> BRA @5
> @3 LSRD
> SUBD #295
> BLO @4
> ADDD #382
> BRA @5
> @4 ADDD #1527
> LSRD
> LSRD
> @5 STD Dwell
> LDAA #120 ;Increase dwell at low volts
> DIFA SensedVolts
> LDAB #4
> MUL
> ADDD Dwell ;Combine all terms
> ADDD ExtraDwell
> STD Dwell
> LDD TachInterval ;TachInterval - 39
> SUBD #39
> SUBD Dwell ;Limit Dwell to (TachInterval - 39)
> BHS @6
> ADDD Dwell
> STD Dwell
> @6 ...
> This code fragment slowly reduces ExtraDwell to zero. It is executed
> once per ignition event (up to 80 Hz).
> xCE2F ...
> LDD ExtraDwell ;ExtraDwell / 8
> LSRD
> LSRD
> LSRD
> COMA ;- (ExtraDwell / 8) - 1
> COMB
> ADDD ExtraDwell ;ExtraDwell - (ExtraDwell / 8) - 1
> BPL @9
> CLRD
> @9 STD ExtraDwell ;Decay ExtraDwell to zero
> --
> Ludis Langens ludis (at) cruzers
> (dot) com
> Mac, Fiero, & engine controller goodies: http://www.cruzers.com/
> ~ludis/
> -<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>-
> -<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>-
> $From: "Bruce Plecan" <nacelp at bright.net>
> $Subject: Re: 749 inna 730
> $Date: Wed, 31 Mar 1999 20:59:38 -0500
> -----Original Message-----
> From: andy quaas <realsquash at yahoo.com>
> To: gmecm at esl.eng.ohio-state.edu <gmecm at esl.eng.ohio-state.edu>
> Date: Wednesday, March 31, 1999 7:52 PM
> Subject: Re: 749 inna 730
> No, the 730 uses one injector driver, and shares two pins for the
> injectors.
> The 749 has two injector drivers and can be set as a single saturated
> injector driver
> like in the syclone, or as a dual Peak+Hold like in the Sunbird
> Turbo (that
> used the 749),
> or like in the Quad 4 (that used the 749).
> It can take a ton of work to work out a calibration!.
> If anyone thinks the reading the archives is time consuming you won't
> beleive how much time you can invest inna calibration.
> Bruce
> -<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>-
> $From: "John T. Martin" <gmman at eskimo.com>
> $Subject: Re: Turbo Sunbird GT Boost Gauge wiring?
> $Date: Fri, 2 Apr 1999 20:29:37 -0800
> -----Original Message-----
> From: Terry/Carol Kelley <terryk at foothill.net>
> To: gmecm at esl.eng.ohio-state.edu <gmecm at esl.eng.ohio-state.edu>
> Date: Thursday, April 01, 1999 5:47 PM
> Subject: Turbo Sunbird GT Boost Gauge wiring?
> Anybody have the wiring for the Sunbird turbo boost gauge?
> Terry Kelley
> 1986 Olds Ciera GT 3800 Supercharged
> hello,
> The boost gauge is in parallel with the ECM on the Sunbird. Uses
> the same
> map signal on pin F15 of the 749. Had a wiring diagram faxed to me
> today.
> Email me if any more info is needed.
> John
> gmman at eskimo.com
> -<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>-
> -<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>-
> $From: Tedscj at aol.com
> $Date: Mon, 12 Apr 1999 17:58:30 EDT
> $Subject: Re: DIS, HEI, and PITAs
> I Tried some things with the DIS today.
> First, I made sure the DIS was at least responding to the original
> DIS .bin
> (from a '91 Sunbird) and it was.
> Then I just started from the beginning trying to adjust different
> things with
> the SyTy .bin. I kept notes and I will paste them right here.
> The changes I made to the .bin were NOT accumulative. The changes
> made were
> ONLY those mentioned in each line. Except for the Main Spark
> Table. 1-5 the
> table was zeroed out completely 6< the table was 0 for everything
> below
> 2000rpm and 30degrees for everything above 2000rpm (so that any
> advance would
> be obvious.)
> 1 - 5 : Main Spark Table zeroed out.
> 1. no changes except for above: ran about 60 degrees advanced.
> 2 KREFANGL at 40: No difference.
> 3. MAXRTRD2 at 50: Timing mark right at zero.
> 4. MAXRTRD2 at 70: Timing mark at 20 BTDC.
> MAXRTRD2 seems to be ADVANCING the base timing.
> 5. Changed KCTBIAS (coolant temp bias) from 20 to 50: No changed.
> 6- Main spark advance table set as described below.
> 6. Changed main spark advance to abruptly go from 0 to 30 degrees
> advance at
> 2000 rpm: It DID advance abruptly at 2000 RPM.
> 7. set MAXRTRD2 at 60: timing mark at 10 BTDC but there is now NO
> advance
> at 2000RPM
> 8. 7 + changed MAXADVN2 from 46 to 120: still No advance at 2000 RPM
> 9. change MAXRTRD2 to 5 (to check if a small change will still
> render the
> main spark table inop.): It DID advance abruptly at 2000RPM. SO
> changing
> the MAXRTRD2 value does not in itself render the the Main Spark
> Adv. inop.
> 10. Change MAXRTRD2 to 20 (I'm going to sneak up on the 60
> value): Can
> barely get the car started at 20, and won't reve pas 1200 or so ...
> will jump
> to 40 and see what happens.
> 11. MAXRTRD2 set to 40: Timing mark at something like 10 ATDC and
> there is
> NO advance after 2000RPM.
> 12. Set MAXRTRD2 to 50 and set MAXADVN2 to 0.0 just to see what
> happens:
> timing mark at 0 degrees and No advance.
> 13. leave MAXRTRD2 at 50 and move MAXADVN2 to 60 and KREFANGL to
> 60 to see
> what happens: Still no advance.
> 14. same as above only MAXADVN2 at 120: still no advance.
> What did I learn?
> The DIS module DOES respond to the EST signal, WHEN no other
> parameters have
> been changed too far. The MAXRTRD2 seems to advance the base
> timing. The
> MAXADVN2 and KREFANGL seem to have no apparent effect. Once you
> advance the
> base timing too far (through the MAXRTRD2) the MAIN SPARK TABLE
> ceases to be
> effective. Again, adjusting the MAXADVN2 does not solve this
> problem and
> appears to have no effect.
> You can see all the different combinations I have tried above. If
> you can
> think of anything else, please let me know.
> Thanks,
> Ted
> PS What Bruce and Terry said about inverting the Reference Signal
> from the
> DIS to the ECM would work. It would push back the timing 60degrees
> (assuming
> 50% duty cylce and three pulse per revolution). That would set the
> base
> timing at 10degrees when the Main Spark Table says 0 degrees, which
> is close
> enough. And I found that if you don't mess with the KREFANGL,
> MAXRTRD2, or
> MAXADVN2 then the DIS module WILL respond to the EST signal. If
> you set the
> base timing too far with the MAXRTRD2, then the DIS module will NOT
> respond
> to the EST signal (or maybe the ECM stops pushing up the advance on
> the EST
> signal any further).
> -<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>-
> -<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>-
> $From: ECMnut at aol.com
> $Date: Fri, 12 Feb 1999 09:32:05 EST
> $Subject: DIS w/ '749 .bin, GM did it..
> The same 749 box was used in just about all
> of the '88 Quad-4 applications the General produced,
> with (I think) DIS.. I never saw a a Q4 with a dissy...
> Anyway, it sounds like the the 749 has the hardware
> to do what you want, but the Sy bin has the wrong code
> for the app. Unfortunately, none of the offsets are the same
> in the Q4 PROM as the Sy chip.. It's a 256 instead of the
> Syphoon/Sunbird 128 chip.
> Lemme know (off list) if a Q4 749 bin is required.
> HTH
> Mike V
> In a message dated 2/11/99 5:42:14 PM Eastern Standard Time,
> Tedscj at aol.com
> writes:
> be
> -<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>-
>
>
> ----- Original Message ----- From: "Gary Evans" <gary at garyandliz.com>
> To: <gmecm at diy-efi.org>
> Sent: Monday, November 14, 2005 2:32 PM
> Subject: Re: [Gmecm] BLM cell confusion
>
>
>> Not Kidding.
>>
>> If you have some time, check out the disassembly. There are only
>> 3 cells defined. Unlike the 16 cell code, which determines cell
>> based on rpm and map, the $a1 and $88 define the cells based on
>> VSS, BPW and MAP.
>>
>> Here are the definitions in the code:
>>
>> HIGH HYSTERESIS VALUE, WITH KLCBPWL
>> 870F 04 4 KCELIDLL 1.3 MPH IF SPEED EXCEEDS THIS
>> THRESHOLD, CAN'T BE IDLE
>> LOW HYSTERESIS VALUE, WITH KCELIDLH
>> 8710 06 6 KCELIDLH 2 MPH IF SPEED EXCEEDS THIS
>> THRESHOLD, CAN'T BE IDLE
>> HIGH HYSTERESIS VALUE, WITH KCELIDLL
>> 8711 24 36 KCELMAPL 31.3 KPA DIVIDING POINT BETWEEN
>> PART THROTTLE CELL AND
>> OVERRUN CELL LOW HYSTERESIS VALUE, WITH KCELMAPH
>> 8712 37 55 KCELMAPH 37.2 KPA HIGH MAP DETERMINES
>> PART THROTTLE CELL
>> HIGH HYSTERESIS VALUE, WITH KCELMAPL
>> 8713 0080 128 KCELBPWL 1.95 MSEC THRESH BETWEEN CELL 1
>> AND CELL 2
>> LOW HYSTERESIS VALUE, WITH KCELBPWH
>> 8715 0090 144 KCELBPWH 2.2 MSEC BPW > THRESH DETERMINES
>> CELL 1
>> HIGH HYSTERESIS VALUE, WITH KCELBPWL
>>
>> There are only 3 cells: Idle, part throttle, and overrun.
>>
>> My scan tool is a laptop reading the raw ALDL stream for the ECM.
>> The ECM *never* reports any other cell than 0, 1 or 2. Is it
>> possible the Tech 1 is faking 16 cells based on the RPM / MAP
>> values?
>>
>> As for the 6+1 crank trigger, there have been lengthy threads in
>> the past on the differences between the DIS and distributor code.
>> Despite the similarities in wiring and theory of operation, the
>> distributor and DIS codes expect slightly different things to be
>> happening on the signal lines. There is a difference in the
>> timing and dwell calculations that no one ever seemed to figure
>> out (or if they did, I missed it). Of particular interest is this
>> line:
>>
>> 801B AA 170 KREFANGL 59.8 DEG SPARK REFERENCE ANGLE
>>
>> I read about the trials of another GMECM member trying to get DIS
>> to run on distributor code, decided it wasn't worth blowing up
>> my engine, and went with the $a1 code instead.
>>
>> This google search will lead you to some of the old threads on the
>> subject:
>>
>> http://www.google.com/search?q=gmecm+dis+distributor+base
>> +reference +angle
>>
>> -Gary
More information about the Gmecm
mailing list