how does the current launch control work?
from the
rom editor point of view...you are changing the values for launch control rpm and launch control vss and on/off.
the rpm used is the 2-byte value so you have a hi-byte and a lo-byte.
the vss used is the 1-byte value, 0-255.
the on/off is a 1-byte value, 0 or 1.
on the
rom itself, the launch control code is in series with the revlimiter code (part of the revlimit routine).
Code:
;; ************** Launch Control (ADDED BY George Ricketts 30/10/2002) **************
; Limits RPM to lower value if travelling slower than a certain speed
; @MODIFIES: A,C,R6,R7
LAUNCH: MOV DPTR, #07FF8h ;Location of launch control settings
CLR A
MOVC A, @A+DPTR ; load up the first byte to see if launch control is enabled
JZ LNCEND ; if A = 0 skip lauch code
; as a nifty side effect of being enabled a A=1 at this point
; we can use @A+DPTR to get the VSS value
MOVC A,@A+DPTR ; get the VSS limit to enable launch control
SUBB A,VSS ; subtract the limit from the VSS value
JC LNCEND ; If carry (VSS was larger), use normal limiter.
;
MOV A,#02H ; first byte of launch control RPM
MOVC A,@A+DPTR
MOV R6,A
MOV A,#03H ; second byte of launch control RPM
MOVC A,@A+DPTR
MOV R7,A
LNCEND: ;RET (we no longer return here - simply continue to the next routine)
so to walk thru the code in basic steps:
1. the data pointer looks at 7FF8h (where the on/off value is stored).
2. if its off (0), then we skip the code entirely (step 4). otherwise it points to the next bit which happens to be the launch control vss setting.
3. if the value of the vss sensor is above our launch control vss setting, then we skip the rest of the code entirely (step 4). otherwise we change the 2-byte rpm (which is stored in R6 and R7 at this point) to whatever our launch control rpm setpoints are.
4. then we continue on with the next segment of the revlimit code, which is the boostcut...because this is actually rpm based.
easy!
problems: because this comes after the actual revlimit code, if you have the cold or hot revlimit lower than the launch control rpm (and the launch control turned on)...the launch control limiter becomes your new total rev limiter. this will have to be fixed in the future.