update -- I've finally had a chance to look at this. Several things going on...
cell 16 is the idle cell, used if tps < 1.8% and rpm < 1800.
cell 17-19 are used when the 2ndary fuel injectors are on. The cells are divided by the normal RPM boundaries.
I'll post the code, although the formatting is not perfect. So I'll attach a txt file for easier reading.
NEW BLM.txt
Todd
Code:
*#####################################################
*# BLOCK LEARN CELL UPDATE ROUTINE
*# CELLS 0-15 FOR NORMAL OPERATION
*# CELL 16 FOR IDLE CONDITIONS (LOW TPS, LOW RPM)
*# CELLS 17-19 USED WHEN PT OPEN TO 2NDARY'S ON
*# DELAY IS OVER
*#####################################################
******************************************************
* GET BLOCK LEARN MULTIPLIER AND ITS CELL
******************************************************
GETBLM BCLR MWFA;BIT2 BLOCK LEARN ADDRESS CHANGE FLAG = 0
LDAB BLMCELL FETCH CURRENT BL CELL
CMPB #15
BLS BLIDLCHK IF BL CELL <= 15, GO CHECK FOR IDLE STATE
CMPB #16
BNE BLMPTCHK IF BL CELL > 16, GO CHECK PT STATUS
******************************************************
* TEST FOR CONDITIONS TO REMAIN IN IDLE BLM CELL (16)
******************************************************
LDAA KTPSBLML IF BL CELL = 16, CHECK THRESHOLDS TO REMAIN IN IDLE CELL
ADDA KTPSBLHY ADD HYSTERESIS TERM (0.8%) TO MIN TPS FOR CELL 16 (1.2%)
BCS LD0CB
CMPA NTPSLD
BCS GETBLM4A BR IF TPS > LIMIT; THEN NEED TO CHANGE CELL
GETBLM1CLDAA KRPMBLML FETCH RPM THRESHOLD (1800)
ADDA KBLESHY ADD HYSTERESIS TERM (50 RPM) TO MIN RPM FOR CELL 16 (1800)
BCS GETBLM2A
CMPA NTRPMX
BCS GETBLM4A BR IF RPM > LIMIT; THEN NEED TO CHANGE CELL
JMP LD176 IF ALL OK, THEN STAY IN CELL 16
******************************************************
* TEST FOR CONDITIONS TO REMAIN IN PT OPEN CELLS (17-19)
******************************************************
BLMPTCHKBRCLR MW1;BIT1,GETBLM4AIF CELL > 16 AND PT DELAY OVER, GO TO NORMAL BLM ROUTINE
… OTHERWISE IF DELAY NOT OVER
ANDB #3 …. RPMINDEX = BITS 0,1 OF BLMCELL
SUBB #1
LDX #KBLESB1A BLM CELL RPM BOUNDARY--LOW
ABX DETERMINE LOWER RPM BOUNDARY OF CURRENT BLCELL
TSTB IF RPMINDEX = 0, THERE IS NO LOWER BOUNDARY TO CHECK
BEQ GETBLM11
LDAA 0,X
SUBA KBLESHY SUBTRACT HYSTERESIS VALUE TO FORM LOWER RPM LIMIT
BCS GETBLM09
CMPA NTRPMX
BHI GETBLM4A BR IF RPM < LIMIT; CELL HAS CHANGED
GETBLM09CMPB #2 IF RPMINDEX = 2, THERE IS NO UPPER BOUNDARY TO CHECK
BEQ GETBLM2A
GETBLM11LDAA 1,X
ADDA KBLESHY ADD HYSTERESIS VALUE TO FORM UPPER RPM LIMIT
BCS LD176
CMPA NTRPMX
BCS GETBLM4B BR IF RPM > LIMIT; CELL HAS CHANGED
GETBLM2ABRA LD176
GETBLM4AJMP GETBLM4B
******************************************************
* TEST FOR CONDITIONS TO ENTER IDLE CELL (16)
******************************************************
BLIDLCHKLDAA NTPSLD IF CURRENT CELL <= 15, CHECK FOR IDLE STATE
CMPA KTPSBLML COMPARE CURRENT TPS WITH THRESHOLD (1.2%)
BHI GETBLM2B IF TPS > MIN GO CHECK PT STATUS
LDAA NTRPMX
CMPA KRPMBLML COMPARE CURRENT RPM WITH THRESHOLD (1800)
BHI GETBLM2B IF RPM > MIN GO CHECK PT STATUS
LDAB #16 IF TPS AND RPM BELOW LIMIT, USE CELL 16
JMP GETBLM60 GO STORE BLM CELL = 16
******************************************************
* NORMAL BLM ROUTINE BEGINS HERE
******************************************************
GETBLM2BBRSET MW1;BIT1,GETBLM4BBR IF PORT THROTTLE TO 2NDARY'S ON DELAY OVER
LDAB BLMCELL
ANDB #3 …. RPMINDEX = BITS 0,1 OF BLMCELL
LDX #KBLESB1A-1 BLM CELL RPM BOUNDARY--LOW
ABX DETERMINE LOWER RPM BOUNDARY OF CURRENT BLCELL
TSTB IF RPMINDEX = 0, THERE IS NO LOWER BOUNDARY TO CHECK
BEQ GETBLM15
LDAA 0,X
SUBA KBLESHY BLM RPM HYSTERESIS
BCS GETBLM10
CMPA NTRPMX
BHI GETBLM4B
GETBLM10CMPB #3
BEQ GETBLM20
GETBLM15LDAA 1,X
ADDA KBLESHY BLM RPM HYSTERESIS
BCS GETBLM20
CMPA NTRPMX
BCS GETBLM4B
GETBLM20LDAB BLMCELL
ANDB #12
LSRB
LSRB
LDX #KBLESB3 BLM CELL RPM BOUNDARY--HIGH
ABX
TSTB
BEQ GETBLM35
LDAA 0,X
SUBA KBLPMHYA BLM MAP HYSTERESIS
BCS GETBLM30
CMPA MAPSD
BHI GETBLM4B
GETBLM30CMPB #3
BEQ GETBLM36
GETBLM35LDAA 1,X
ADDA KBLPMHYA BLM MAP HYSTERESIS
BCS GETBLM36
CMPA MAPSD
BCS GETBLM4B
GETBLM36LDAB BLMCELL MAPINDEX = BITS 2,3 OF BLMCELL
BRA GETBLM60
******************************************************
* PT OPEN CELLS, ADJUST BASED ON RPM
******************************************************
GETBLM4BBSET MWFA;BIT2+BIT3 SET BLOCK LEARN UPDATE AND CELL CHANGE
LDAB #16
LDAA NTPSLD
CMPA KTPSBLML COMPARE TPS TO THRESHOLD (1.8%)
BHI GETBLM4C
LDAA NTRPMX
CMPA KRPMBLML COMPARE RPM TO THRESHOLD (1800)
BLS GETBLM60
GETBLM4CINCB IF TPS AND RPM ARE ABOVE IDLE LIMIT, INCR BLM TO NEXT CELL
BRCLR MW1;BIT1,GETBLM40IF PT DELAY IS NOT OVER, THEN GOTO NORMAL BL ROUTINE
LDAA NTRPMX
CMPA KBLESB2 BLM CELL RPM BOUNDARY--MID
BLS GETBLM60
INCB INCREMENT BL CELL IF RPM HIGHER THAN BOUNDARY
CMPA KBLESB3 BLM CELL RPM BOUNDARY--HIGH
BLS GETBLM60
INCB INCREMENT BL CELL IF RPM HIGHER THAN BOUNDARY
BRA GETBLM60
GETBLM40CLRB BLMCELL = 0
LDAA NTRPMX MODIFY BLM CELL LOCATION BASED ON RPM
CMPA KBLESB1A BLM CELL RPM BOUNDARY--LOW
BCS GETBLM50
INCB BLMCELL = BLMCELL + 1.0 (IN COLUMN 1)
CMPA KBLESB2 BLM CELL RPM BOUNDARY--MID
BCS GETBLM50
INCB
CMPA KBLESB3 BLM CELL RPM BOUNDARY--HIGH
BCS GETBLM50
INCB
GETBLM50LDAA MAPSD MODIFY BLM CELL LOCATION BASED ON MAP
CMPA KBLPMB1A BLM CELL MAP BOUNDARY--LOW
BCS GETBLM60
ADDB #4 BLMCELL = BLMCELL + 2.0
CMPA KBLPMB2A BLM CELL MAP BOUNDARY--MID
BCS GETBLM60
ADDB #4 BLMCELL = BLMCELL + 2.0
CMPA KBLPMB3A BLM CELL MAP BOUNDARY--HIGH
BCS GETBLM60
ADDB #4 BLMCELL = BLMCELL + 2.0
GETBLM60STAB BLMCELL STORE BLM CELL
LDX #LBLMM POINT TO LEFT BANK BLM CELLS
ABX BLMADD = BLMM + BLMCELL
LDAA 0,X
CMPA KBLMMAX IF BLM VALUE IS OUT OF RANGE, INDICATE
BHI GETBLM65 …NVRAM FAILURE AND INITIALIZE B/L TABLE
CMPA KBLMMIN
BCS GETBLM65
TSTA TEST LEFT BLM
BMI GETBLM85 LIMIT LEFT PE BLM TO 128 - BR IF ALREADY >= 128
BRCLR MWFA;BIT5,GETBLM85BR IF NOT IN PE
LDAA #128 IF IN PE USE LEFT BLM VALUE >= 128
GETBLM85STAA LBLM SAVE FINAL LEFT BLM
LDX #RBLMM POINT TO RIGHT BANK BLM CELLS
ABX BLMADD = BLMM + BLMCELL
LDAA 0,X
CMPA KBLMMAX IF BLM VALUE IS OUT OF RANGE, INDICATE
BHI GETBLM65 …NVRAM FAILURE AND INITIALIZE B/L TABLE
CMPA KBLMMIN
BCS GETBLM65
TSTA TEST RIGHT BLM
BMI GETBLM84 LIMIT RIGHT PE BLM TO 128 - BR IF ALREADY >= 128
BRCLR MWFA;BIT5,GETBLM84BR IF NOT IN PE
LDAA #128 IF IN PE USE RIGHT BLM VALUE >= 128
GETBLM84STAA RBLM SAVE FINAL RIGHT BLM
BRA GETBLMEX
GETBLM65BSET CLCCMW;BIT6 NV RAM FAILED FLAG = 1
LDAA #128
CLRB
LDX #32
BLMINITCSTAA LBLMM-1,X
DEX
BNE BLMINITC
STAA LBLM
STAA RBLM
GETBLMEXEQU *