[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