
####################################################################################################
#
# Disassembly listing of binary 'KID2'    8061  1 bank     SAD Version 4.0.7.16 (16 Jun 2021)
# See 'KID2_msg.txt' for warnings, results and other information

# Explanation of extra flags and formats - 
#   R general register. Extra prefix letters shown for mixed size opcodes (e.g DIVW)

#   l=long (4 bytes), w=word (2 bytes), y=byte, s=signed. Unsigned is default.
#   [ ]=use value as an address   (addresses are always word) 
#   @=value is an address (to symbol),  '++' increment register after operation.

# Processor status flags (for conditional jumps)
#   CY=carry, STC=sticky, OVF=overflow, OVT=overflow trap
#
####################################################################################################


2000: ff                  nop                    
2001: fa                  di                     interrupts OFF;
2002: 21,1d               sjmp  2121             goto Initialize;

   FIXSUM:
2004: 01,00,ff,df,00,ff   ???   

200a: 17,d4               word   d417                                              # ROM_TO is the complement of CHECKSUM |  # d417 -> one's:2be8, two's: 2be9
200c: 00,e0               word   e000
200e: 5d,00               word     5d

2010: 6b,2d               vect  2d6b             I_HSO_2
2012: 4d,2d               vect  2d4d             I_Timer_OVF
2014: 6a,2d               vect  2d6a             I_Ignore
2016: 6a,2d               vect  2d6a             I_Ignore
2018: 70,23               vect  2370             I_External_Vector
201a: e5,2a               vect  2ae5             I_HSO_1
201c: 6a,2d               vect  2d6a             I_Ignore
201e: 76,2a               vect  2a76             I_HSI_0

2020: 08                  byte      8
2021: 01                  byte      1
2022: 00,b0               word   b000
2024: 3e,b4               word   b43e
2026: 42,b4               word   b442
2028: 14,b9               word   b914
202a: b0,ba               word   bab0
202c: 7a,bb               word   bb7a
202e: a8,c0               word   c0a8
2030: 5a,cb               word   cb5a

   Reset_All:
2032: fa                  di                     interrupts OFF;
2033: ff                  nop                    
2034: 11,0c               clrb  Rc               HSI_Mask = 0;                     # stop interrupts
2036: b0,2a,12            ldb   R12,R2a          Tmr_OVF_cnt = R2a;                # save VIP mode
2039: a1,24,00,14         ldw   R14,24           R14 = 24;                         # 0x24h = 36
203d: c2,15,00            stw   R0,[R14++]       [R14++] = 0;                      # set RAM at 0x24 to 0x6ff to zero
2040: 17,05               incb  R5               WDG_Timer++;                      # increment watchdog timer
2042: 89,ff,06,14         cmpw  R14,6ff                                            # 0x6FFh = 1791
2046: d3,f5               jnc   203d             if (R14 < 6ff) goto 203d;
2048: 51,60,12,14         an3b  R14,R12,60       R14 = Tmr_OVF_cnt & 60;
204c: d7,05               jne   2053             if (R14 = 0)  {
204e: 91,01,a0            orb   Ra0,1            B0_Flags_a0 = 1;
2051: 20,03               sjmp  2056             goto 2056; }

2053: c4,2a,12            stb   R12,R2a          R2a = Tmr_OVF_cnt;                # restore VIP mode
2056: 01,12               clrw  R12              Tmr_OVF_cnt = 0;
2058: a1,68,aa,14         ldw   R14,aa68         R14 = aa68;                       # Initialize 4 lists, base pointer
205c: 89,ff,ff,14         cmpw  R14,ffff                                           # is it done yet?
2060: df,20               je    2082             if (R14 != ffff)  {
2062: a2,15,1a            ldw   R1a,[R14++]      R1a = [R14++];                    # Base address
2065: a2,15,16            ldw   R16,[R14++]      R16 = [R14++];                    # end of list, next address
2068: 88,16,14            cmpw  R14,R16          
206b: db,0e               jc    207b             if (R14 < R16)  {
206d: b2,15,1a            ldb   R1a,[R14++]      R1a = [R14++];
2070: b2,1a,1c            ldb   R1c,[R1a]        R1c = [R1a];
2073: 92,15,1c            orb   R1c,[R14++]      R1c |= [R14++];
2076: c6,1a,1c            stb   R1c,[R1a]        [R1a] = R1c;
2079: 27,ed               sjmp  2068             goto 2068; }                      # loop, load bytes from aa68 to aa98

207b: d9,b5               jgtu  2032             if (R1c > 0) goto Reset_All;      # R14 = R16
207d: a2,16,14            ldw   R14,[R16]        R14 = [R16];                      # next list
2080: 27,da               sjmp  205c             goto 205c; }

2082: 91,01,a1            orb   Ra1,1            B0_MAPUP_NORM_a1 = 1;
2085: 91,10,45            orb   R45,10           B4_RAMINIT_FLG_45 = 1;
2088: ef,4c,89            call  a9d7             Check_Console ();
208b: 28,bb               scall 2148             Reset_RAM_ptr ();
208d: ef,b5,51            call  7245             TRANS_SELECT_LOGIC ();
2090: b3,f4,18,30         ldb   R30,[Rf4+18]     R30 = PIPNUM;
2094: c7,e4,fc,30         stb   R30,[Re4+fc]     PPCTR = R30;
2098: a1,db,b6,42         ldw   R42,b6db         R42 = b6db;                       # = 0xB6DBh / 0x8000h =  1.42857 for 35% duty cycle signature  PIP.
209c: b3,f6,05,30         ldb   R30,[Rf6+5]      R30 = ENGCYL;                     # PIPsC; #= 8 (PIPs per cycle)
20a0: 3b,30,04            jb    B3,R30,20a7      if (B3_R30 = 0)  {
20a3: a1,55,d5,42         ldw   R42,d555         R42 = d555; }                     # = 0xD555h / 0x8000h 1.66666 for  30%  duty cycle signature PIP 
20a7: c3,e6,4c,42         stw   R42,[Re6+4c]     SIGKAL = R42;
20ab: a3,fc,1a,30         ldw   R30,[Rfc+1a]     R30 = GRRAT1;
20af: c3,e8,9c,30         stw   R30,[Re8+9c]     RT_GR_CUR = R30;
20b3: c3,e8,9e,30         stw   R30,[Re8+9e]     RT_GR_OLD = R30;
20b7: b3,fd,ec,00,30      ldb   R30,[Rfc+ec]     R30 = NVBASE;
20bc: c7,e8,d5,30         stb   R30,[Re8+d5]     NOV_ACT_LST = R30;
20c0: c7,e8,d4,30         stb   R30,[Re8+d4]     NOV_ACT = R30;
20c4: c7,e6,ae,ba         stb   Rba,[Re6+ae]     AEMAP = MAP;
20c8: ef,5f,8a            call  ab2a             KAM_VALIDATION_PROCEDURE ();
20cb: 11,09               clrb  R9               INT_Pend = 0;
20cd: 32,0a,06            jnb   B2,Ra,20d6       if (B2_HSI_Ready = 1)  {
20d0: b0,0d,00            ldb   R0,Rd            R0 = HSI_Data;
20d3: ff                  nop                    
20d4: 27,f7               sjmp  20cd             goto 20cd; }

20d6: b0,0b,83            ldb   R83,Rb           HSI_State = HSI_Sample;
20d9: b1,a1,08            ldb   R8,a1            INT_Mask = a1;                    # HSI0, HSI1, HSI2?
20dc: b3,f0,03,42         ldb   R42,[Rf0+3]      R42 = LINK_SW;                    # HSI line select
20e0: 31,42,26            jnb   B1,R42,2109      if (B1_R42 = 1)  {
20e3: 91,02,52            orb   R52,2            B1_USE_EXT_INT_52 = 1;
20e6: b1,b1,08            ldb   R8,b1            INT_Mask = b1;
20e9: 3a,42,09            jb    B2,R42,20f5      if (B2_R42 = 0)  {
20ec: a1,90,90,30         ldw   R30,9090         R30 = 9090;
20f0: 91,20,53            orb   R53,20           B5_CART_MODE_53 = 1;
20f3: 20,04               sjmp  20f9             goto 20f9; }

20f5: a1,98,98,30         ldw   R30,9898         R30 = 9898;                       # 0x98 = 1001 1000 for CCR and CSR
20f9: c3,01,28,09,30      stw   R30,[R0+928]     CART_STATUS_REGISTER_read = R30;  # Cart Control (CCR) and Cart Status(CSR) byte registers.
20fe: b1,0f,aa            ldb   Raa,f            XFRAME = f;                       # 0x0Fh = 15, XFRAME Block?
2101: a1,1f,bc,30         ldw   R30,bc1f         R30 = bc1f;                       # error register is initialized to BC1FH on EEC power-up/initialize
2105: c3,ec,b2,30         stw   R30,[Rec+b2]     DCL_XDCL_ERROR_L = R30; }
2109: ef,e1,41            call  62ed             KNOCK_HARDWARE_PRESENT ();
210c: 37,9e,05            jnb   B7,R9e,2114      if (B7_KIHP_9e = 1)  {
210f: b1,b7,0c            ldb   Rc,b7            HSI_Mask = b7;
2112: 20,03               sjmp  2117             goto 2117; }

2114: b1,b5,0c            ldb   Rc,b5            HSI_Mask = b5;
2117: 45,03,00,06,0e      ad3w  Re,R6,3          HSI_Time_lo = IO_Timer + 3;
211c: b1,2a,0d            ldb   Rd,2a            HSO_Cmd = 2a;                     # GENERATE "OUTPUT INTERRUPT #1", at specified time
211f: fb                  ei                     interrupts ON;
2120: f0                  ret                    return;

   Initialize:
2121: 45,03,00,06,0e      ad3w  Re,R6,3          HSI_Time_lo = IO_Timer + 3;
2126: b1,19,0d            ldb   Rd,19            HSO_Cmd = 19;                     # NO INTERRUPT OUT, SET OUTPUT HIGH, HSO#9
2129: 11,2a               clrb  R2a              R2a = 0;
212b: a1,00,09,10         ldw   R10,900          StackPtr = IW0;
212f: 2f,01               scall 2032             Reset_All ();
   Background_Loop:
2131: 99,9c,d7            cmpb  Rd7,9c           
2134: db,2b               jc    2161             if (Rd7 < 9c)  {                  # 0x9c / 2 functions = 78
2136: b1,ff,d5            ldb   Rd5,ff           Rd5 = ff;
2139: ac,d7,30            ldzbw R30,Rd7          wR30 = yRd7;
213c: 65,ce,21,30         ad2w  R30,21ce         R30 += 21ce;
2140: c9,31,21            push  2131             push(Background_Loop);
2143: ca,30               push  [R30]            push([R30]);
2145: 75,02,d7            ad2b  Rd7,2            Rd7 += 2;
   Reset_RAM_ptr:
2148: a1,80,01,e4         ldw   Re4,180          Re4 = 180;
214c: a1,80,02,e6         ldw   Re6,280          Re6 = 280;
2150: a1,80,03,e8         ldw   Re8,380          Re8 = 380;
2154: a1,80,04,ea         ldw   Rea,480          Rea = 480;
2158: a1,80,05,ec         ldw   Rec,580          Rec = 580;
215c: a1,80,07,ee         ldw   Ree,780          Ree = 780;
2160: f0                  ret                    return; }

   Infinite_Loop_DEAD:
2161: fa                  di                     interrupts OFF;
2162: 27,fd               sjmp  2161             goto Infinite_Loop_DEAD;

   Set_TaskList:
2164: c3,01,00,1f,00      stw   R0,[R0+1f00]     [1f00] = 0;
2169: c3,01,00,1f,00      stw   R0,[R0+1f00]     [1f00] = 0;
216e: c3,01,00,1f,00      stw   R0,[R0+1f00]     [1f00] = 0;
2173: c3,01,00,1f,00      stw   R0,[R0+1f00]     [1f00] = 0;
2178: c3,01,00,1f,00      stw   R0,[R0+1f00]     [1f00] = 0;
217d: c3,01,00,1f,00      stw   R0,[R0+1f00]     [1f00] = 0;
2182: c3,01,00,1f,00      stw   R0,[R0+1f00]     [1f00] = 0;
2187: c3,01,00,1f,00      stw   R0,[R0+1f00]     [1f00] = 0;
218c: c3,01,00,1f,00      stw   R0,[R0+1f00]     [1f00] = 0;
2191: c3,01,00,1f,00      stw   R0,[R0+1f00]     [1f00] = 0;
2196: c3,01,00,1f,00      stw   R0,[R0+1f00]     [1f00] = 0;
219b: c3,01,00,1f,00      stw   R0,[R0+1f00]     [1f00] = 0;
21a0: c3,01,00,1f,00      stw   R0,[R0+1f00]     [1f00] = 0;
21a5: c3,01,00,1f,00      stw   R0,[R0+1f00]     [1f00] = 0;
21aa: c3,01,00,1f,00      stw   R0,[R0+1f00]     [1f00] = 0;
21af: c3,01,00,1f,00      stw   R0,[R0+1f00]     [1f00] = 0;
21b4: b1,0f,42            ldb   R42,f            R42 = f;
21b7: c7,01,ff,1f,42      stb   R42,[R0+1fff]    [1fff] = R42;
21bc: 36,2a,04            jnb   B6,R2a,21c3      if (B6_NO_START_2a = 1)  {
21bf: b1,3e,d7            ldb   Rd7,3e           Rd7 = 3e;                         # 3e bytes to "Task_List_2"
21c2: f0                  ret                    return; }

21c3: 35,2a,04            jnb   B5,R2a,21ca      if (?RUNNING? = 1)  {
21c6: b1,64,d7            ldb   Rd7,64           Rd7 = 64;                         # 64 bytes to "Task_List_3"
21c9: f0                  ret                    return; }

21ca: b1,00,d7            ldb   Rd7,0            Rd7 = 0;                          # 0 bytes to "Task_List_1"
21cd: f0                  ret                    return;

# "Task_List_1"
21ce: d6,a9               vect  a9d6             Check_ConsoleDI
21d0: 52,3b               vect  3b52             KAM_Qualification_Test_Logic
21d2: f1,60               vect  60f1             DWLBSE-DWLCOR_CALCULATION
21d4: 02,3c               vect  3c02             RUN_MODE_SELECTION
21d6: cf,3c               vect  3ccf             Read_AD
21d8: 35,47               vect  4735             AD_Substitutions
21da: f2,3d               vect  3df2             INPUT_ACT_COM2
21dc: 6c,3c               vect  3c6c             THROTTLE_MODE_SELECTION
21de: 67,a7               vect  a767             TIMER_LH
21e0: 9b,a9               vect  a99b             Sub_a99b
21e2: 69,a4               vect  a469             Sub_a469
21e4: 63,47               vect  4763             DCL_Handler_Dispatch
21e6: 33,45               vect  4533             SPEED_DENSITY_AIR_MASS_CALCULATION
21e8: 32,46               vect  4632             INFERRED_BAROMETRIC_PRESSURE_STRATEGY
21ea: 1f,3d               vect  3d1f             SYSTEM_EQUATIONS_EQUA_LH
21ec: aa,4a               vect  4aaa             TIMERS
21ee: 3f,51               vect  513f             FUEL_ADAPT_COM4
21f0: 02,54               vect  5402             Sub_5402
21f2: 40,73               vect  7340             Check_Sensors
21f4: 7b,5c               vect  5c7b             FUEL_PUMP_COM1
21f6: fc,47               vect  47fc             DOL_PULSE_CALC_COM3
21f8: 6a,22               vect  226a             SYSTEM_EQUATIONS_1
21fa: 52,65               vect  6552             EGR_EVR_CONTROL_COM1
21fc: 03,5d               vect  5d03             SPARK_BASE_COM2
21fe: d4,61               vect  61d4             SPKKNOCK_LL
2200: 84,65               vect  6584             ISC_OVERVIEW_COM3
2202: a9,6c               vect  6ca9             Sub_6ca9
2204: fc,62               vect  62fc             Sub_62fc
2206: d7,6c               vect  6cd7             DOL_LH
2208: 16,70               vect  7016             VO_I_EXEC_COM2
220a: 64,21               vect  2164             Set_TaskList
# "Task_List_2"
220c: d6,a9               vect  a9d6             Check_ConsoleDI
220e: 02,3c               vect  3c02             RUN_MODE_SELECTION
2210: cf,3c               vect  3ccf             Read_AD
2212: 35,47               vect  4735             AD_Substitutions
2214: f2,3d               vect  3df2             INPUT_ACT_COM2
2216: a9,6c               vect  6ca9             Sub_6ca9
2218: fc,62               vect  62fc             Sub_62fc
221a: 67,a7               vect  a767             TIMER_LH
221c: 9b,a9               vect  a99b             Sub_a99b
221e: 69,a4               vect  a469             Sub_a469
2220: 63,47               vect  4763             DCL_Handler_Dispatch
2222: 1f,3d               vect  3d1f             SYSTEM_EQUATIONS_EQUA_LH
2224: aa,4a               vect  4aaa             TIMERS
2226: 7b,5c               vect  5c7b             FUEL_PUMP_COM1
2228: d7,6c               vect  6cd7             DOL_LH
222a: 16,70               vect  7016             VO_I_EXEC_COM2
222c: 52,65               vect  6552             EGR_EVR_CONTROL_COM1
222e: b2,6f               vect  6fb2             Update_Can_Purge
2230: 64,21               vect  2164             Set_TaskList
# "Task_List_3"
2232: d6,a9               vect  a9d6             Check_ConsoleDI
2234: 4c,3b               vect  3b4c             VIP_THROTTLE_MODE_SET
2236: cf,3c               vect  3ccf             Read_AD
2238: 35,47               vect  4735             AD_Substitutions
223a: f2,3d               vect  3df2             INPUT_ACT_COM2
223c: 6c,3c               vect  3c6c             THROTTLE_MODE_SELECTION
223e: f1,60               vect  60f1             DWLBSE-DWLCOR_CALCULATION
2240: 67,a7               vect  a767             TIMER_LH
2242: 9b,a9               vect  a99b             Sub_a99b
2244: 69,a4               vect  a469             Sub_a469
2246: 63,47               vect  4763             DCL_Handler_Dispatch
2248: 33,45               vect  4533             SPEED_DENSITY_AIR_MASS_CALCULATION
224a: 1f,3d               vect  3d1f             SYSTEM_EQUATIONS_EQUA_LH
224c: 45,4e               vect  4e45             FUEL_CL_LAMBSE_COM3
224e: 02,54               vect  5402             Sub_5402
2250: 7b,5c               vect  5c7b             FUEL_PUMP_COM1
2252: d7,6c               vect  6cd7             DOL_LH
2254: ff,5c               vect  5cff             Sub_5cff
2256: 84,65               vect  6584             ISC_OVERVIEW_COM3
2258: a9,6c               vect  6ca9             Sub_6ca9
225a: fc,62               vect  62fc             Sub_62fc
225c: 5f,85               vect  855f             VR_EGOBAR_COM1
225e: b2,22               vect  22b2             BRAKE_INPUT
2260: 3d,85               vect  853d             Check_PS_PB
2262: 16,70               vect  7016             VO_I_EXEC_COM2
2264: 52,65               vect  6552             EGR_EVR_CONTROL_COM1
2266: b2,6f               vect  6fb2             Update_Can_Purge
2268: 64,21               vect  2164             Set_TaskList

   SYSTEM_EQUATIONS_1:
226a: 91,80,79            orb   R79,80           ACCFLG = 1;
226d: 91,01,79            orb   R79,1            ACIFLG = 1;
2270: 3c,8e,06            jb    B4,R8e,2279      if (B4_A3C_8e = 0)  {             #  A/C CLUTCH STATUS (ACCFLG)
2273: 71,7f,79            an2b  R79,7f           ACCFLG = 0;
2276: 71,fe,79            an2b  R79,fe           ACIFLG = 0; }
2279: b3,fe,2e,42         ldb   R42,[Rfe+2e]     R42 = GOVHP;
227d: 30,42,06            jnb   B0,R42,2286      if (B0_R42 = 1)  {
2280: ef,d8,4a            call  6d5b             ACC_GOV_MAP_COM2 ();
2283: ef,51,4a            call  6cd7             DOL_LH (); }
2286: 9b,fe,2b,00         cmpb  R0,[Rfe+2b]      
228a: df,05               je    2291             if (THRMHP != 0)  {
228c: ef,51,4b            call  6de0             THERMACTOR_AIR_STRATEGY ();
228f: 20,03               sjmp  2294             goto 2294; }

2291: 91,04,25            orb   R25,4            CHKAIR = 1;
2294: 9b,fe,27,00         cmpb  R0,[Rfe+27]      
2298: df,03               je    229d             if (CANPHP != 0)  {
229a: ef,49,4c            call  6ee6             CANP_COM4 (); }
229d: 9b,fe,29,00         cmpb  R0,[Rfe+29]      
22a1: df,09               je    22ac             if (PFEHP != 0)  {                # EGR IS DISABLED, NO EGR CONTROL REQUIRED
22a3: b0,00,7d            ldb   R7d,R0           EM = 0;
22a6: c7,e6,44,00         stb   R0,[Re6+44]      EGRACT = 0;
22aa: 20,06               sjmp  22b2             goto BRAKE_INPUT; }

22ac: ef,73,41            call  6422             DESEM_DELOPT_CALC ();
22af: ef,45,42            call  64f7             EGRDC_CALC ();
   BRAKE_INPUT:
22b2: 71,ef,25            an2b  R25,ef           BIFLG = 0;
22b5: 9b,fe,26,00         cmpb  R0,[Rfe+26]      
22b9: df,06               je    22c1             if (BIHP != 0)  {
22bb: 34,90,03            jnb   B4,R90,22c1      if (B4_BRAKE_INPUT_90 = 1)  {
22be: 91,10,25            orb   R25,10           BIFLG = 1; } }
22c1: 31,9e,03            jnb   B1,R9e,22c7      if (B1_E4OD_9e = 1)  {
22c4: ef,17,66            call  88de             E4OD_TRANSMISSION_CALCULATIONS (); }
22c7: f0                  ret                    return;

   HSO_Table:
22c8: 58,23               vect  2358             Clear_Cell

22ca: 4c,2a,00,54,0b,22,a1,32  struct  Do_Cmd_N,   0,  54,   b, 262, Add_H_Delta         
22d2: 5e,2a,00,c4,0b,22,6a,32  struct  Do_Cmd_P,   0,  c4,   b, 262, Add_H_Beta          
22da: 4c,2a,00,55,0c,04,d2,31  struct  Do_Cmd_N,   0,  55,   c, 244, Sub_31d2            
22e2: 5e,2a,00,c5,0c,04,69,31  struct  Do_Cmd_P,   0,  c5,   c, 244, Update_HTime_pend   

22ea: 75,37,00,16,0a,10,20,4d,08,ff,94,00  struct  Sub_3775,   0,  16,   a, 250,  20,  4d, ff08, FUELPW1  
22f6: 96,37,00,06,0c,10,20,4d,08,88,94,00  struct  Sub_3796,   0,   6,   c, 250,  20,  4d, 8808, FUELPW1  
2302: 75,37,00,17,0a,1c,10,4d,04,ff,94,00  struct  Sub_3775,   0,  17,   a, 25c,  10,  4d, ff04, FUELPW1  
230e: 96,37,00,07,0c,1c,10,4d,04,44,94,00  struct  Sub_3796,   0,   7,   c, 25c,  10,  4d, 4404, FUELPW1  

231a: 70,38,00,ff,05,34   struct  Sub_3870,   0,  ff,   5, 274

2320: 4c,2a,00,92,08,3a,41,6d  struct  Do_Cmd_N,   0,  92,   8, 27a, Sub_6d41
2328: 5e,2a,00,82,08,3a,28,6d  struct  Do_Cmd_P,   0,  82,   8, 27a, Sub_6d28
2330: 4c,2a,00,90,08,40,c6,6d  struct  Do_Cmd_N,   0,  90,   8, 280, Sub_6dc6
2338: 5e,2a,00,80,08,40,ad,6d  struct  Do_Cmd_P,   0,  80,   8, 280, Sub_6dad
2340: 4c,2a,00,98,08,2e,da,38  struct  Do_Cmd_N,   0,  98,   8, 26e, Sub_38da
2348: 5e,2a,00,88,08,2e,c1,38  struct  Do_Cmd_P,   0,  88,   8, 26e, Sub_38c1

2350: 07,00               word      7

2352: 5f,88,00,99,08,28   struct  Sub_885f,   0,  99,   8, 268

   Clear_Cell:
2358: c7,70,01,00         stb   R0,[R70+1]       [Rtab+1] = 0;
235c: f0                  ret                    return;

235d: ff                  nop                    

235e: 44,02               word    244
2360: 50,02               word    250
2362: 5c,02               word    25c
2364: 74,02               word    274
2366: 62,02               word    262
2368: 6e,02               word    26e
236a: 7a,02               word    27a
236c: 68,02               word    268
236e: 80,02               word    280

   I_External_Vector:
2370: 39,52,01            jb    B1,R52,2374      if (B1_USE_EXT_INT_52 = 0)  {
2373: f1                  reti                   return; }

2374: f2                  pushp                  push(PSW);
2375: c8,42               push  R42              push(R42);
2377: c8,30               push  R30              push(R30);
2379: c8,32               push  R32              push(R32);
237b: c8,34               push  R34              push(R34);
237d: 35,53,02            jnb   B5,R53,2382      if (B5_CART_MODE_53 = 1)  {
2380: 20,a4               sjmp  2426             goto 2426; }

# UART Mode
2382: a1,18,18,34         ldw   R34,1818         R34 = 1818;                       # R34 = 1818h (CART_Status = R34 later, may change to 4040 or 9393)
2386: b3,01,28,09,30      ldb   R30,[R0+928]     R30 = CART_STATUS_REGISTER_read;  # R30 = current CART_Status
238b: 38,30,02            jb    B0,R30,2390      if (B0_R30 = 0)  {                # If the buffer is not full: B0_UART_RECEIVE_BUFFER_FULL
238e: 20,85               sjmp  2415             goto 2415; }                      # message check logic is exited

2390: b3,01,03,09,42      ldb   R42,[R0+903]     R42 = UART_Rx_BUFFER;
2395: 35,30,02            jnb   B5,R30,239a      if (B5_R30 = 1)  {                # RECEIVE OVERRUN ERROR
2398: 20,7b               sjmp  2415             goto 2415; }                      # message check logic is exited

239a: af,ec,a0,30         ldzbw R30,[Rec+a0]     wR30 = BYTE_NUM;
239e: 99,05,30            cmpb  R30,5            
23a1: d9,10               jgtu  23b3             if (R30 <= 5)  {                  # BYTE_NUM is 5 or less
23a3: df,09               je    23ae             if (R30 != 5)  {                  # BYTE_NUM is not 5
                                                                                   # BYTE_NUM is 4 or less
23a5: 17,30               incb  R30              R30++;                            # Increment BYTE_NUM
23a7: 98,00,42            cmpb  R42,R0           
23aa: df,6b               je    2417             if (R42 = 0) goto 2417;
23ac: 20,67               sjmp  2415             goto 2415; }                      # message check logic is exited

23ae: 98,00,42            cmpb  R42,R0           
23b1: df,68               je    241b             if (R42 = 0) goto 241b; }         # BYTE_NUM is 5 (5 zeros received)
                                                                                   # IF new byte = 0 (zero received)   
                                                                                   # (sync sequence complete)
                                                                                   # goto 241b
23b3: 49,05,00,30,32      sb3w  R32,R30,5        R32 = R30 - 5;                    # (first non-zero received)
23b8: 17,30               incb  R30              R30++;                            # Increment BYTE_NUM
23ba: c7,33,1a,05,42      stb   R42,[R32+51a]    [R32+51a] = R42;                  # Store new byte in uart_msg

# SBDS COMMAND LOGIC
23bf: b3,ec,a1,31         ldb   R31,[Rec+a1]     R31 = EEC_CHKSUM;                 # EEC_CHKSUM = EEC_CHKSUM
23c3: 99,0b,30            cmpb  R30,b            
23c6: db,05               jc    23cd             if (R30 < b)  {                   # BYTE_NUM < 11
                                                                                   # CART_STATUS = 1818H
23c8: 94,42,31            xorb  R31,R42          R31 ^= R42;                       #  (update the check sum)
                                                                                   #  XOR new byte
23cb: 20,4a               sjmp  2417             goto 2417; }                      # exit message check logic

23cd: 9b,ec,9f,31         cmpb  R31,[Rec+9f]     
23d1: d7,42               jne   2415             if (R31 = SBDS_CHKSUM_51f)  {     # EEC_CHKSUM <> SBDS_CHKSUM (bad data in buffer)  
23d3: b3,ec,9a,32         ldb   R32,[Rec+9a]     R32 = MODULE_ID;
23d7: 99,01,32            cmpb  R32,1            
23da: d7,39               jne   2415             if (R32 = 1)  {                   # MODULE_ID <> 01 (EEC not selected) 
23dc: b3,ec,9b,33         ldb   R33,[Rec+9b]     R33 = CMD_CODE_51b;
23e0: 99,82,33            cmpb  R33,82           
23e3: d7,07               jne   23ec             if (R33 = 82)  {                  # CMD_CODE = 82 (echo MODULE_ID to SBDS)
23e5: c7,01,01,09,32      stb   R32,[R0+901]     UART_Tx_BUFFER = R32;             # uart transmit buffer = MODULE_ID
23ea: 20,29               sjmp  2415             goto 2415; }

23ec: 99,80,33            cmpb  R33,80           
23ef: d7,06               jne   23f7             if (R33 = 80)  {                  # CMD_CODE = 80 (go permanently off-line)
23f1: a1,40,40,34         ldw   R34,4040         R34 = 4040;                       # CART_Status =  4040h
23f5: 20,1e               sjmp  2415             goto 2415; }

23f7: 99,04,33            cmpb  R33,4            
23fa: d7,19               jne   2415             if (R33 = 4)  {                   # CMD_CODE = 4 (go to CART Mode)
23fc: 91,20,53            orb   R53,20           B5_CART_MODE_53 = 1;              # 0 -> UART mode;
                                                                                   # 1 -> CART mode.
23ff: b1,03,32            ldb   R32,3            R32 = 3;                          # 19200 baud
                                                                                   # 00H                2400 baud
                                                                                   # 01H                4800 baud
                                                                                   # 02H                9600 baud
                                                                                   # 03H               19200 baud
2402: c7,ec,89,32         stb   R32,[Rec+89]     XDCL_BAUD = R32;
2406: b1,0f,aa            ldb   Raa,f            XFRAME = f;
2409: a1,1f,bc,32         ldw   R32,bc1f         R32 = bc1f;                       # error register is initialized to BC1FH on EEC power-up/initialize
240d: c3,ec,b2,32         stw   R32,[Rec+b2]     DCL_XDCL_ERROR_L = R32;           # XDCL_ERRO = BC1Fh
                                                                                   # CART_Status = 9393h
2411: a1,93,93,34         ldw   R34,9393         R34 = 9393; } } }                 
2415: 01,30               clrw  R30              R30 = 0; }                        # BYTE_NUM = 0
                                                                                   # EEC_CHKSUM = 0
2417: c7,ec,a0,30         stb   R30,[Rec+a0]     BYTE_NUM = R30; }
241b: c7,ec,a1,31         stb   R31,[Rec+a1]     EEC_CHKSUM = R31;
241f: c3,01,28,09,34      stw   R34,[R0+928]     CART_STATUS_REGISTER_read = R34;
2424: 21,11               sjmp  2537             goto 2537;                        # Exit message check logic

# CART Mode (Custom Asynchronous Receiver Transmitter)
2426: c8,36               push  R36              push(R36);
2428: c8,38               push  R38              push(R38);
242a: c8,3a               push  R3a              push(R3a);
242c: c8,3c               push  R3c              push(R3c);
242e: c8,3e               push  R3e              push(R3e);
2430: c8,40               push  R40              push(R40);
2432: b0,aa,34            ldb   R34,Raa          R34 = XFRAME;
2435: 17,aa               incb  Raa              XFRAME++;
2437: 71,0f,aa            an2b  Raa,f            XFRAME &= f;
243a: d7,42               jne   247e             if (XFRAME = 0)  {
243c: b3,ec,ae,42         ldb   R42,[Rec+ae]     R42 = DIAGMODE;
2440: 36,42,02            jnb   B6,R42,2445      if (B6_R42 = 1)  {
2443: 28,fe               scall 2543             DCL_Mode_Scheduler (); }
2445: b3,ec,b3,42         ldb   R42,[Rec+b3]     R42 = DCL_XDCL_ERROR_H;
2449: 34,42,1e            jnb   B4,R42,246a      if (B4_R42 = 1)  {                # DCL_ModeSchedular_BadDiagnosticParameterSlot
244c: 71,ef,42            an2b  R42,ef           B4_R42 = 0;
244f: c7,ec,b3,42         stb   R42,[Rec+b3]     DCL_XDCL_ERROR_H = R42;
2453: a1,22,05,42         ldw   R42,522          R42 = 522;
2457: c2,43,00            stw   R0,[R42++]       [R42++] = 0;                      # 522, 523 = 0
245a: c2,43,00            stw   R0,[R42++]       [R42++] = 0;                      # 524, 525 = 0
245d: c6,43,00            stb   R0,[R42++]       [R42++] = 0;                      # 526 = 0
2460: b3,f0,04,30         ldb   R30,[Rf0+4]      R30 = [b004];
2464: c6,43,30            stb   R30,[R42++]      [R42++] = R30;                    # 527 = 1
2467: c2,42,00            stw   R0,[R42]         [R42] = 0; }                      # 528,529 = 0
246a: b1,04,42            ldb   R42,4            R42 = 4;                          # counter, count down
246d: a1,22,05,30         ldw   R30,522          R30 = 522;                        # R30 = address 522, R31 = 523
2471: a1,2a,05,32         ldw   R32,52a          R32 = 52a;                        # R32 = 52a, R33=52b
                                                                                   # Loop 4 times
2475: a2,31,3a            ldw   R3a,[R30++]      R3a = [R30++];                    # R3a = 522, R3b = 523
2478: c2,33,3a            stw   R3a,[R32++]      [R32++] = R3a;                    # [52a] = 522;
                                                                                   # [52c] = 524;
                                                                                   # [52e] = 526;
                                                                                   # [530] = 528;
247b: e0,42,f7            djnz  R42,2475         R42--;
                                                 if (R42 != 0) goto 2475; }
247e: 99,03,34            cmpb  R34,3            
2481: d9,3b               jgtu  24be             if (R34 <= 3)  {                  # 1     Read Bytes           Load Address (high byte) Bad Value
2483: 5d,02,34,38         ml3b  R38,R34,2        wR38 = yR34 * 2;
2487: 65,22,05,38         ad2w  R38,522          R38 += 522;
248b: b1,0c,35            ldb   R35,c            R35 = c;
248e: a3,01,02,09,3a      ldw   R3a,[R0+902]     R3a = IW1;
2493: 29,9b               scall 2630             Vertical_Nibble_Parity_Check ();
2495: 71,0f,3b            an2b  R3b,f            R3b &= f;
2498: c2,38,3a            stw   R3a,[R38]        [R38] = R3a;
249b: b1,26,42            ldb   R42,26           R42 = 26;
249e: 9b,ec,a6,42         cmpb  R42,[Rec+a6]     
24a2: d7,1a               jne   24be             if (R42 = [526])  {
24a4: 9b,ec,ae,42         cmpb  R42,[Rec+ae]     
24a8: df,14               je    24be             if (R42 != DIAGMODE)  {
24aa: 01,42               clrw  R42              R42 = 0;
24ac: ef,db,4d            call  728a             Sub_728a ();
24af: c3,ec,84,3a         stw   R3a,[Rec+84]     [504] = R3a;
24b3: ef,d4,4d            call  728a             Sub_728a ();
24b6: c3,ec,86,3a         stw   R3a,[Rec+86]     [506] = R3a;
24ba: c7,ec,88,42         stb   R42,[Rec+88]     [508] = R42; } } }
24be: ad,01,3c            ldzbw R3c,1            wR3c = 1;
24c1: a0,b4,3a            ldw   R3a,Rb4          R3a = N_RPM;
24c4: 08,07,3a            shrw  R3a,7            R3a >>= 7;
24c7: 89,fa,00,3a         cmpw  R3a,fa           
24cb: d1,03               jleu  24d0             if (R3a > fa)  {
24cd: ad,fa,3a            ldzbw R3a,fa           wR3a = fa; }
24d0: 90,aa,3b            orb   R3b,Raa          R3b |= XFRAME;
24d3: 29,76               scall 264b             Data_Parity_Generator ();
24d5: c3,01,00,09,3a      stw   R3a,[R0+900]     IW0 = R3a;
24da: 71,fb,52            an2b  R52,fb           B2_DCLST_START_52 = 0;            # clear request for self test
24dd: b3,ec,ae,42         ldb   R42,[Rec+ae]     R42 = DIAGMODE;
24e1: 3d,42,05            jb    B5,R42,24e9      if (B5_R42 = 0)  {
24e4: 98,00,aa            cmpb  Raa,R0           
24e7: df,02               je    24eb             if (XFRAME = 0) goto 24eb; }
24e9: 28,58               scall 2543             DCL_Mode_Scheduler (); }
24eb: a3,ec,ac,42         ldw   R42,[Rec+ac]     R42 = [52c];
24ef: 85,ff,0f,42         xrw   R42,fff          R42 ^= fff;
24f3: df,03               je    24f8             if (R42 != 0)  {
24f5: 71,03,3c            an2b  R3c,3            R3c &= 3; }
24f8: b3,ec,89,3e         ldb   R3e,[Rec+89]     R3e = XDCL_BAUD;
24fc: b0,3e,3f            ldb   R3f,R3e          R3f = R3e;
24ff: 81,10,10,3e         orw   R3e,1010         R3e |= 1010;
2503: 11,40               clrb  R40              R40 = 0;
2505: b3,ec,af,42         ldb   R42,[Rec+af]     R42 = [52f];
2509: 17,42               incb  R42              R42++;
250b: 99,08,42            cmpb  R42,8            
250e: db,07               jc    2517             if (R42 < 8)  {
2510: 81,20,20,3e         orw   R3e,2020         R3e |= 2020;
2514: b1,a2,40            ldb   R40,a2           R40 = a2; }
2517: c3,01,28,09,3e      stw   R3e,[R0+928]     CART_STATUS_REGISTER_read = R3e;
251c: c7,01,27,09,42      stb   R42,[R0+927]     FRAME_LENGTH = R42;               # The 8-bit FLR is used to specify
                                                                                   #  the number of user slots (0 to 15) per frame.
                                                                                   #0x00  0  IDLE & SYNC WORDS ONLY
                                                                                   #0x00  1  IDLE & SYNC WORDS & IW0
                                                                                   #....  ...  ......................
                                                                                   #0x00  14  IDLE & SYNC WORDS & IW0 -> IWD
                                                                                   #0x00  15  IDLE & SYNC WORDS & IW0 -> IWE
2521: c7,01,2a,09,40      stb   R40,[R0+92a]     CCR_TEST_MODE_CONTROL_w = R40;
2526: c3,01,20,09,3c      stw   R3c,[R0+920]     TX_CONTROL_L = R3c;
252b: cc,40               pop   R40              R40 = pop();
252d: cc,3e               pop   R3e              R3e = pop();
252f: cc,3c               pop   R3c              R3c = pop();
2531: cc,3a               pop   R3a              R3a = pop();
2533: cc,38               pop   R38              R38 = pop();
2535: cc,36               pop   R36              R36 = pop();
2537: cc,34               pop   R34              R34 = pop();
2539: cc,32               pop   R32              R32 = pop();
253b: cc,30               pop   R30              R30 = pop();
253d: cc,42               pop   R42              R42 = pop();
253f: fa                  di                     interrupts OFF;
2540: ff                  nop                    
2541: f3                  popp                   PSW = pop();
2542: f1                  reti                   return;

   DCL_Mode_Scheduler:
2543: b3,ec,aa,43         ldb   R43,[Rec+aa]     R43 = [52a];
2547: 30,43,21            jnb   B0,R43,256b      if (B0_R43 = 1)  {
254a: a1,b4,28,30         ldw   R30,28b4         R30 = 28b4;                       # address of DEFINED EEC-IV DIAGNOSTIC MODES
254e: b1,11,43            ldb   R43,11           R43 = 11;                         # 0x11h = 17 DiagModes
2551: c9,87,27            push  2787             push(DCL_Diagnostic_Slot);
2554: 9a,31,42            cmpb  R42,[R30++]      
2557: d7,09               jne   2562             if (R42 = [R30++])  {
2559: b2,31,32            ldb   R32,[R30++]      R32 = [R30++];
255c: b2,30,33            ldb   R33,[R30]        R33 = [R30];
255f: c8,32               push  R32              push(R32);
2561: f0                  ret                    return; }

2562: 65,02,00,30         ad2w  R30,2            R30 += 2;
2566: e0,43,eb            djnz  R43,2554         R43--;
                                                 if (R43 != 0) goto 2554;
2569: cc,00               pop   R0               R0 = pop(); }
256b: f0                  ret                    return;

   DCL_DM_PermanentDeviceDisconnect:
256c: a1,40,40,42         ldw   R42,4040         R42 = 4040;
2570: c3,01,28,09,42      stw   R42,[R0+928]     CART_STATUS_REGISTER_read = R42;
2575: cc,00               pop   R0               R0 = pop();
2577: cc,00               pop   R0               R0 = pop();
2579: 27,b0               sjmp  252b             goto 252b;

   DCL_DM_TransmitPID:
257b: a1,2e,06,30         ldw   R30,62e          R30 = 62e;
257f: 28,3c               scall 25bd             Sub_25bd ();
2581: 09,01,40            shlw  R40,1            R40 <<= 1;
2584: b2,39,3e            ldb   R3e,[R38++]      R3e = [R38++];
2587: 98,00,3e            cmpb  R3e,R0           
258a: df,29               je    25b5             if (R3e != 0)  {
258c: 15,3e               decb  R3e              R3e--;
258e: 5d,03,3e,30         ml3b  R30,R3e,3        wR30 = yR3e * 3;
2592: 65,22,29,30         ad2w  R30,2922         R30 += 2922;
2596: b2,31,42            ldb   R42,[R30++]      R42 = [R30++];
2599: b2,31,43            ldb   R43,[R30++]      R43 = [R30++];
259c: b2,31,32            ldb   R32,[R30++]      R32 = [R30++];
259f: 3f,32,05            jb    B7,R32,25a7      if (B7_R32 = 0)  {
25a2: ae,42,3a            ldzbw R3a,[R42]        wR3a = [R42];
25a5: 20,03               sjmp  25aa             goto 25aa; }

25a7: a2,42,3a            ldw   R3a,[R42]        R3a = [R42];
25aa: 08,32,3a            shrw  R3a,R32          R3a >>= R32;
25ad: 28,9c               scall 264b             Data_Parity_Generator ();
25af: 80,40,3c            orw   R3c,R40          R3c |= R40;
25b2: c2,36,3a            stw   R3a,[R36]        [R36] = R3a; }
25b5: 65,02,00,36         ad2w  R36,2            R36 += 2;
25b9: e0,3f,c5            djnz  R3f,2581         R3f--;
                                                 if (R3f != 0) goto 2581;
25bc: f0                  ret                    return;

   Sub_25bd:
25bd: ad,02,40            ldzbw R40,2            wR40 = 2;
25c0: ac,aa,38            ldzbw R38,Raa          wR38 = XFRAME;
25c3: 20,03               sjmp  25c8             goto 25c8;

   Sub_25c5:
25c5: ac,34,38            ldzbw R38,R34          wR38 = yR34;
25c8: 7d,0d,38            ml2b  R38,d            wR38 *= d;                        # 13 Slots;
25cb: 64,30,38            ad2w  R38,R30          R38 += R30;
25ce: b3,ec,af,3f         ldb   R3f,[Rec+af]     R3f = [52f];
25d2: 15,3f               decb  R3f              R3f--;
25d4: a1,04,09,36         ldw   R36,904          R36 = IW2;
25d8: f0                  ret                    return;

   DCL_DM_ParameterRefByAddressOffset:
25d9: b1,06,35            ldb   R35,6            R35 = 6;
25dc: a1,5e,05,30         ldw   R30,55e          R30 = 55e;
25e0: 20,07               sjmp  25e9             goto 25e9;

   DCL_DM_ParameterRefByName:
25e2: b1,05,35            ldb   R35,5            R35 = 5;
25e5: a1,2e,06,30         ldw   R30,62e          R30 = 62e;
25e9: 2f,da               scall 25c5             Sub_25c5 ();
25eb: a2,37,3a            ldw   R3a,[R36++]      R3a = [R36++];
25ee: 89,ff,ff,3a         cmpw  R3a,ffff         
25f2: df,04               je    25f8             if (R3a != ffff)  {
25f4: 28,3a               scall 2630             Vertical_Nibble_Parity_Check ();
25f6: df,02               je    25fa             if (R42 = 0) goto 25fa; }
25f8: 11,3a               clrb  R3a              R3a = 0; }
25fa: c6,39,3a            stb   R3a,[R38++]      [R38++] = R3a;
25fd: e0,3f,eb            djnz  R3f,25eb         R3f--;
                                                 if (R3f != 0) goto 25eb;
2600: f0                  ret                    return;

   DCL_DM_A-D_SensorValueSubstitution:
2601: 99,0d,34            cmpb  R34,d            
2604: db,29               jc    262f             if (R34 < d)  {
2606: ac,34,38            ldzbw R38,R34          wR38 = yR34;
2609: 19,01,38            shlb  R38,1            R38 <<= 1;
260c: 65,44,05,38         ad2w  R38,544          R38 += 544;
2610: a3,01,04,09,3a      ldw   R3a,[R0+904]     R3a = IW2;
2615: 89,ff,ff,3a         cmpw  R3a,ffff         
2619: df,0f               je    262a             if (R3a != ffff)  {
261b: b1,04,35            ldb   R35,4            R35 = 4;
261e: 28,10               scall 2630             Vertical_Nibble_Parity_Check ();
2620: d7,08               jne   262a             if (R42 = 0)  {
2622: 71,03,3b            an2b  R3b,3            R3b &= 3;
2625: 91,a4,3b            orb   R3b,a4           R3b |= a4;
2628: 20,02               sjmp  262c             goto 262c; } }

262a: 01,3a               clrw  R3a              R3a = 0;
262c: c2,38,3a            stw   R3a,[R38]        [R38] = R3a; }
262f: f0                  ret                    return;

   Vertical_Nibble_Parity_Check:
2630: 41,f0,f0,3a,30      an3w  R30,R3a,f0f0     R30 = R3a & f0f0;
2635: 08,04,30            shrw  R30,4            R30 >>= 4;
2638: 41,0f,0f,3a,42      an3w  R42,R3a,f0f      R42 = R3a & f0f;
263d: 84,30,42            xrw   R42,R30          R42 ^= R30;
2640: 94,43,42            xorb  R42,R43          R42 ^= R43;
2643: 95,0a,42            xorb  R42,a            R42 ^= a;
2646: df,02               je    264a             if (R42 != 0)  {
2648: 28,45               scall 268f             Vertical_Nibble_Parity_Error (); }
264a: f0                  ret                    return;

   Data_Parity_Generator:
264b: 71,0f,3b            an2b  R3b,f            R3b &= f;
264e: 41,0f,0f,3a,42      an3w  R42,R3a,f0f      R42 = R3a & f0f;
2653: 51,f0,3a,32         an3b  R32,R3a,f0       R32 = R3a & f0;
2657: 18,04,32            shrb  R32,4            R32 >>= 4;
265a: 94,42,32            xorb  R32,R42          R32 ^= R42;
265d: 94,43,32            xorb  R32,R43          R32 ^= R43;
2660: 95,0a,32            xorb  R32,a            R32 ^= a;
2663: 19,04,32            shlb  R32,4            R32 <<= 4;
2666: 90,32,3b            orb   R3b,R32          R3b |= R32;
2669: f0                  ret                    return;

   DCL_DM_ClearContinuousVIPCodes:
266a: ad,28,30            ldzbw R30,28           wR30 = 28;
266d: 9d,08,30            divb  R30,8            yR30 /= 8;                        # 28h / 8 = 40 / 8 = 5
2670: 98,00,31            cmpb  R31,R0           
2673: df,02               je    2677             if (R31 != 0)  {                  # inc R30 if R31 set
2675: 17,30               incb  R30              R30++; }
2677: a1,19,07,42         ldw   R42,719          R42 = 719;                        # KAM reg base address
267b: c6,43,00            stb   R0,[R42++]       [R42++] = 0;                      # clear the four (or five) KAM bytes 
                                                                                   # which hold the Continuous Self Test Codes
267e: e0,30,fa            djnz  R30,267b         R30--;
                                                 if (R30 != 0) goto 267b;
2681: f0                  ret                    return;

   DCL_DM_ClearDCLErrorFlags:
2682: a3,ec,b2,42         ldw   R42,[Rec+b2]     R42 = DCL_XDCL_ERROR_L;
2686: 61,00,10,42         an2w  R42,1000         R42 &= 1000;                      # clear all bits except bit 13
                                                                                   # 13     EEC Reset            Set if EEC Resets
268a: c3,ec,b2,42         stw   R42,[Rec+b2]     DCL_XDCL_ERROR_L = R42;
268e: f0                  ret                    return;

   Vertical_Nibble_Parity_Error:
268f: ad,01,42            ldzbw R42,1            wR42 = 1;
2692: 09,35,42            shlw  R42,R35          R42 <<= R35;
2695: 83,ec,b2,42         orw   R42,[Rec+b2]     R42 |= DCL_XDCL_ERROR_L;
2699: c3,ec,b2,42         stw   R42,[Rec+b2]     DCL_XDCL_ERROR_L = R42;
269d: f0                  ret                    return;

   DCL_DM_TransmitDMRMap:
269e: a1,5e,05,30         ldw   R30,55e          R30 = 55e;
26a2: 20,04               sjmp  26a8             goto 26a8;

   DCL_DM_TransmitPIDMap:
26a4: a1,2e,06,30         ldw   R30,62e          R30 = 62e;
26a8: 2f,13               scall 25bd             Sub_25bd ();
26aa: ae,39,3a            ldzbw R3a,[R38++]      wR3a = [R38++];
26ad: 2f,9c               scall 264b             Data_Parity_Generator ();
26af: c2,37,3a            stw   R3a,[R36++]      [R36++] = R3a;
26b2: e0,3f,f5            djnz  R3f,26aa         R3f--;
                                                 if (R3f != 0) goto 26aa;
26b5: 81,fc,7f,3c         orw   R3c,7ffc         R3c |= 7ffc;
26b9: f0                  ret                    return;

   DCL_DM_TransmitDMR:
26ba: 98,00,aa            cmpb  Raa,R0           
26bd: d7,0b               jne   26ca             if (XFRAME = 0)  {
26bf: a3,ec,b0,3a         ldw   R3a,[Rec+b0]     R3a = [530];
26c3: 09,04,3a            shlw  R3a,4            R3a <<= 4;
26c6: c3,ec,b6,3a         stw   R3a,[Rec+b6]     [536] = R3a; }
26ca: a1,5e,05,30         ldw   R30,55e          R30 = 55e;
26ce: 2e,ed               scall 25bd             Sub_25bd ();
26d0: a3,ec,b6,30         ldw   R30,[Rec+b6]     R30 = [536];
26d4: 09,01,40            shlw  R40,1            R40 <<= 1;
26d7: ae,39,42            ldzbw R42,[R38++]      wR42 = [R38++];
26da: 98,00,42            cmpb  R42,R0           
26dd: df,0b               je    26ea             if (R42 != 0)  {
26df: 64,30,42            ad2w  R42,R30          R42 += R30;
26e2: ae,42,3a            ldzbw R3a,[R42]        wR3a = [R42];
26e5: 2f,64               scall 264b             Data_Parity_Generator ();
26e7: 80,40,3c            orw   R3c,R40          R3c |= R40; }
26ea: c2,37,3a            stw   R3a,[R36++]      [R36++] = R3a;
26ed: e0,3f,e4            djnz  R3f,26d4         R3f--;
                                                 if (R3f != 0) goto 26d4;
26f0: f0                  ret                    return;

   DCL_DM_ProgramDataDownload:
26f1: a1,04,09,36         ldw   R36,904          R36 = IW2;
26f5: a2,37,3a            ldw   R3a,[R36++]      R3a = [R36++];
26f8: 89,ff,ff,3a         cmpw  R3a,ffff         
26fc: df,48               je    2746             if (R3a != ffff)  {
26fe: 11,35               clrb  R35              R35 = 0;
2700: 2f,2e               scall 2630             Vertical_Nibble_Parity_Check ();
2702: d7,42               jne   2746             if (R42 = 0)  {
2704: b0,3a,38            ldb   R38,R3a          R38 = R3a;
2707: a2,37,3a            ldw   R3a,[R36++]      R3a = [R36++];
270a: 17,35               incb  R35              R35++;
270c: 2f,22               scall 2630             Vertical_Nibble_Parity_Check ();
270e: d7,36               jne   2746             if (R42 = 0)  {
2710: b0,3a,39            ldb   R39,R3a          R39 = R3a;
2713: b1,0a,3f            ldb   R3f,a            R3f = a;
2716: b0,38,3e            ldb   R3e,R38          R3e = R38;
2719: 94,39,3e            xorb  R3e,R39          R3e ^= R39;
271c: 17,35               incb  R35              R35++;
271e: a2,37,3a            ldw   R3a,[R36++]      R3a = [R36++];
2721: 89,ff,ff,3a         cmpw  R3a,ffff         
2725: df,0a               je    2731             if (R3a != ffff)  {
2727: 2f,07               scall 2630             Vertical_Nibble_Parity_Check ();
2729: d7,1b               jne   2746             if (R42 != 0) return;
272b: c6,38,3a            stb   R3a,[R38]        [R38] = R3a;
272e: 94,3a,3e            xorb  R3e,R3a          R3e ^= R3a; }
2731: 07,38               incw  R38              R38++;
2733: e0,3f,e8            djnz  R3f,271e         R3f--;
                                                 if (R3f != 0) goto 271e;
2736: a2,36,3a            ldw   R3a,[R36]        R3a = [R36];
2739: 2e,f5               scall 2630             Vertical_Nibble_Parity_Check ();
273b: d7,09               jne   2746             if (R42 = 0)  {
273d: 94,3a,3e            xorb  R3e,R3a          R3e ^= R3a;
2740: df,04               je    2746             if (R3e != 0)  {
2742: 17,35               incb  R35              R35++;
2744: 2f,49               scall 268f             Vertical_Nibble_Parity_Error (); } } } } } }
2746: f0                  ret                    return;

   DCL_DM_ProgramExecution:
2747: a1,34,05,38         ldw   R38,534          R38 = DCL_EXEC_VECT;
274b: b1,0a,35            ldb   R35,a            R35 = a;
274e: 98,00,34            cmpb  R34,R0           
2751: d7,33               jne   2786             if (R34 = 0)  {
2753: a1,04,09,36         ldw   R36,904          R36 = IW2;
2757: a2,37,3a            ldw   R3a,[R36++]      R3a = [R36++];
275a: 2e,d4               scall 2630             Vertical_Nibble_Parity_Check ();
275c: d7,23               jne   2781             if (R42 = 0)  {
275e: b0,3a,3e            ldb   R3e,R3a          R3e = R3a;
2761: b0,3a,32            ldb   R32,R3a          R32 = R3a;
2764: a2,37,3a            ldw   R3a,[R36++]      R3a = [R36++];
2767: 2e,c7               scall 2630             Vertical_Nibble_Parity_Check ();
2769: d7,16               jne   2781             if (R42 = 0)  {
276b: 94,3a,3e            xorb  R3e,R3a          R3e ^= R3a;
276e: b0,3a,33            ldb   R33,R3a          R33 = R3a;
2771: a2,36,3a            ldw   R3a,[R36]        R3a = [R36];
2774: 2e,ba               scall 2630             Vertical_Nibble_Parity_Check ();
2776: d7,09               jne   2781             if (R42 = 0)  {
2778: 94,3a,3e            xorb  R3e,R3a          R3e ^= R3a;
277b: df,06               je    2783             if (R3e = 0) goto 2783;
277d: 17,35               incb  R35              R35++;
277f: 2f,0e               scall 268f             Vertical_Nibble_Parity_Error (); } } }
2781: 01,32               clrw  R32              R32 = 0; }
2783: c2,38,32            stw   R32,[R38]        [R38] = R32; }
2786: f0                  ret                    return;

   DCL_Diagnostic_Slot:
2787: 5d,02,aa,42         ml3b  R42,Raa,2        wR42 = XFRAME * 2;
278b: 65,e8,28,42         ad2w  R42,28e8         R42 += 28e8;
278f: a2,42,38            ldw   R38,[R42]        R38 = [R42];
2792: 88,00,38            cmpw  R38,R0           
2795: df,0d               je    27a4             if (R38 != 0)  {
2797: ae,38,3a            ldzbw R3a,[R38]        wR3a = [R38];
279a: 2e,af               scall 264b             Data_Parity_Generator ();
279c: c3,01,02,09,3a      stw   R3a,[R0+902]     IW1 = R3a;
27a1: 91,02,3c            orb   R3c,2            B1_R3c = 1; }
   DCL_DM_DisplayDCLStatusInformation:
27a4: f0                  ret                    return;

   DCL_DM_RunningOnDemand_SelfTest:
27a5: 91,04,52            orb   R52,4            B2_DCLST_START_52 = 1;            # initiate self test
                                                                                   #The EEC will set a flag DCLST_START after receiving diagnostic mode code 25H.
                                                                                   #This flag is continuously read by VIP to initiate self test.
27a8: a3,ec,80,38         ldw   R38,[Rec+80]     R38 = [500];
27ac: a3,ec,82,30         ldw   R30,[Rec+82]     R30 = [502];
27b0: 33,52,08            jnb   B3,R52,27bb      if (B3_Flags_52 = 1)  {
27b3: 3c,53,24            jb    B4,R53,27da      if (B4_R53 = 1) goto 27da;
27b6: 98,00,aa            cmpb  Raa,R0           
27b9: df,0f               je    27ca             if (XFRAME = 0) goto 27ca; }
27bb: 71,ef,53            an2b  R53,ef           B4_R53 = 0;
27be: b1,bf,42            ldb   R42,bf           R42 = bf;
27c1: 73,ec,b3,42         an2b  R42,[Rec+b3]     R42 &= DCL_XDCL_ERROR_H;
27c5: c7,ec,b3,42         stb   R42,[Rec+b3]     DCL_XDCL_ERROR_H = R42;
27c9: f0                  ret                    return; }

27ca: a1,90,02,38         ldw   R38,290          R38 = Fault_Code_Buffer02;
27ce: a1,b8,02,30         ldw   R30,2b8          R30 = Xram1L;
27d2: b1,0e,35            ldb   R35,e            R35 = e;                          # all codes have been transmitted at least once, 
                                                                                   # by setting bit 14 in the DCL Error/Flag register.
27d5: 2e,b8               scall 268f             Vertical_Nibble_Parity_Error ();
27d7: 91,10,53            orb   R53,10           B4_R53 = 1; }
27da: af,ec,af,42         ldzbw R42,[Rec+af]     wR42 = [52f];
27de: a1,01,00,40         ldw   R40,1            R40 = 1;
27e2: 09,42,40            shlw  R40,R42          R40 <<= R42;
27e5: 09,01,42            shlw  R42,1            R42 <<= 1;
27e8: 45,00,09,42,36      ad3w  R36,R42,900      R36 = R42 + IW0;
27ed: a2,39,3a            ldw   R3a,[R38++]      R3a = [R38++];
27f0: 88,00,3a            cmpw  R3a,R0           
27f3: df,27               je    281c             if (R3a != 0)  {
27f5: 2e,54               scall 264b             Data_Parity_Generator ();
27f7: 80,40,3c            orw   R3c,R40          R3c |= R40;
27fa: c2,36,3a            stw   R3a,[R36]        [R36] = R3a;
27fd: 45,1e,00,38,42      ad3w  R42,R38,1e       R42 = R38 + 1e;
2802: 88,42,30            cmpw  R30,R42          
2805: d1,15               jleu  281c             if (R30 > R42)  {
2807: a3,38,1e,3a         ldw   R3a,[R38+1e]     R3a = [R38+1e];
280b: 88,00,3a            cmpw  R3a,R0           
280e: df,0c               je    281c             if (R3a != 0)  {
2810: 2e,39               scall 264b             Data_Parity_Generator ();
2812: 08,01,40            shrw  R40,1            R40 >>= 1;
2815: 80,40,3c            orw   R3c,R40          R3c |= R40;
2818: c3,36,fe,3a         stw   R3a,[R36+fe]     [R36-2] = R3a; } } }
281c: c3,ec,80,38         stw   R38,[Rec+80]     [500] = R38;
2820: c3,ec,82,30         stw   R30,[Rec+82]     [502] = R30;
2824: 99,0f,aa            cmpb  Raa,f            
2827: d7,03               jne   282c             if (XFRAME = f)  {
2829: 71,ef,53            an2b  R53,ef           B4_R53 = 0; }
282c: f0                  ret                    return;

   DCL_DM_TransmitContinuous_SelfTestCodes:
282d: 3c,53,1c            jb    B4,R53,284c      if (B4_R53 = 0)  {
2830: 98,00,aa            cmpb  Raa,R0           
2833: df,0f               je    2844             if (XFRAME != 0)  {
2835: 71,ef,53            an2b  R53,ef           B4_R53 = 0;
2838: b1,bf,42            ldb   R42,bf           R42 = bf;
283b: 73,ec,b3,42         an2b  R42,[Rec+b3]     R42 &= DCL_XDCL_ERROR_H;
283f: c7,ec,b3,42         stb   R42,[Rec+b3]     DCL_XDCL_ERROR_H = R42;
2843: f0                  ret                    return; }

2844: b1,0e,35            ldb   R35,e            R35 = e;
2847: 2e,46               scall 268f             Vertical_Nibble_Parity_Error ();
2849: 91,10,53            orb   R53,10           B4_R53 = 1; }
284c: 47,ec,84,00,3a      ad3w  R3a,R0,[Rec+84]  R3a = [504];
2851: df,2e               je    2881             if (R3a != 0)  {
2853: af,ec,af,30         ldzbw R30,[Rec+af]     wR30 = [52f];
2857: a1,01,00,40         ldw   R40,1            R40 = 1;
285b: 09,30,40            shlw  R40,R30          R40 <<= R30;
285e: 09,01,30            shlw  R30,1            R30 <<= 1;
2861: 45,00,09,30,36      ad3w  R36,R30,900      R36 = R30 + IW0;
2866: 2d,e3               scall 264b             Data_Parity_Generator ();
2868: 80,40,3c            orw   R3c,R40          R3c |= R40;
286b: c2,36,3a            stw   R3a,[R36]        [R36] = R3a;
286e: 47,ec,86,00,3a      ad3w  R3a,R0,[Rec+86]  R3a = [506];
2873: df,0c               je    2881             if (R3a != 0)  {
2875: 2d,d4               scall 264b             Data_Parity_Generator ();
2877: 08,01,40            shrw  R40,1            R40 >>= 1;
287a: 80,40,3c            orw   R3c,R40          R3c |= R40;
287d: c3,36,fe,3a         stw   R3a,[R36+fe]     [R36-2] = R3a; } }
2881: af,ec,88,42         ldzbw R42,[Rec+88]     wR42 = [508];
2885: 99,0f,aa            cmpb  Raa,f            
2888: d7,05               jne   288f             if (XFRAME = f)  {
288a: 71,ef,53            an2b  R53,ef           B4_R53 = 0;
288d: 01,42               clrw  R42              R42 = 0; }
288f: ef,f8,49            call  728a             Sub_728a ();
2892: c3,ec,84,3a         stw   R3a,[Rec+84]     [504] = R3a;
2896: ef,f1,49            call  728a             Sub_728a ();
2899: c3,ec,86,3a         stw   R3a,[Rec+86]     [506] = R3a;
289d: c7,ec,88,42         stb   R42,[Rec+88]     [508] = R42;
28a1: f0                  ret                    return;

   DCL_DM_SetCommLinkBAUDRate:
28a2: b3,ec,b0,3a         ldb   R3a,[Rec+b0]     R3a = [530];
28a6: c7,ec,89,3a         stb   R3a,[Rec+89]     XDCL_BAUD = R3a;
28aa: cc,00               pop   R0               R0 = pop();
28ac: f0                  ret                    return;

   DCL_DM_TransmitBoth_PID-DMR:
28ad: ef,0a,fe            call  26ba             DCL_DM_TransmitDMR ();
28b0: ef,c8,fc            call  257b             DCL_DM_TransmitPID ();
28b3: f0                  ret                    return;

# DEFINED EEC-IV DIAGNOSTIC MODES
28b4: 01,82,26            struct    1, DCL_DM_ClearDCLErrorFlags                   # clear DCL error/flag bits
28b7: 02,6a,26            struct    2, DCL_DM_ClearContinuousVIPCodes              # clear Continuous Self Test codes
28ba: 03,a4,27            struct    3, DCL_DM_DisplayDCLStatusInformation          # display status information only
28bd: 21,7b,25            struct   21, DCL_DM_TransmitPID                          # transmit PID values
28c0: 22,ba,26            struct   22, DCL_DM_TransmitDMR                          # transmit DMR values
28c3: 23,a4,26            struct   23, DCL_DM_TransmitPIDMap                       # transmit PID map
28c6: 24,9e,26            struct   24, DCL_DM_TransmitDMRMap                       # transmit DMR map
28c9: 25,a5,27            struct   25, DCL_DM_RunningOnDemand_SelfTest             # run Self Test (K0E0 or K0ER)
28cc: 26,2d,28            struct   26, DCL_DM_TransmitContinuous_SelfTestCodes     # transmit Continuous Self Test codes
28cf: 27,ad,28            struct   27, DCL_DM_TransmitBoth_PID-DMR                 # transmit PID and DMR values
28d2: 41,e2,25            struct   41, DCL_DM_ParameterRefByName                   # read Parameter Identification (PID) map
28d5: 42,d9,25            struct   42, DCL_DM_ParameterRefByAddressOffset          # read Direct Memory Reference (DMR) map
28d8: 43,f1,26            struct   43, DCL_DM_ProgramDataDownload                  # read program/data bytes
28db: 45,47,27            struct   45, DCL_DM_ProgramExecution                     # read program execution vector
28de: 46,01,26            struct   46, DCL_DM_A-D_SensorValueSubstitution          # read A/D substitution values
28e1: 80,6c,25            struct   80, DCL_DM_PermanentDeviceDisconnect            # go permanently offline, disable DCL function
28e4: 81,a2,28            struct   81, DCL_DM_SetCommLinkBAUDRate                  # Set DCL baud rate

28e7: ff                  nop                    

28e8: 00,00               word      0
28ea: 00,00               word      0
28ec: 00,00               word      0
28ee: 00,00               word      0
28f0: 2e,05               word    52e
28f2: 26,05               word    526
28f4: 32,05               word    532
28f6: 33,05               word    533
28f8: 36,05               word    536
28fa: 37,05               word    537
28fc: 0a,20               word   200a
28fe: 0b,20               word   200b
2900: 00,00               word      0
2902: 00,00               word      0
2904: 00,00               word      0
2906: 00,00               word      0
2908: 12,01               word    112
290a: 10,01               word    110
290c: 1a,01               word    11a
290e: 00,00               word      0
2910: 14,01               word    114
2912: 0a,01               word    10a
2914: 18,01               word    118
2916: 0c,01               word    10c
2918: 00,00               word      0
291a: 1c,01               word    11c
291c: 0e,01               word    10e
291e: 00,00               word      0
2920: 00,00               word      0


# 9.0 Parameter Identification (PID) Code Tables:                                  #Parameter        PID    Data    Output    Output
                                                                                   #Name             Code   Type    Scaling   Resolution
                                                                                   #----------------------------------------------------
2922: b4,00,84            struct  N_RPM     ,  84                                  #N                 01    word      bin -2      4 RPM
2925: ba,00,00            struct  MAP       ,   0                                  #MAP               02    byte      bin 3       0.125 "Hg
2928: bb,00,00            struct  BP        ,   0                                  #BP                03    byte      bin 3       0.125 "Hg   
292b: 8e,03,00            struct  SAFTOT    ,   0                                  #SAFTOT            04    byte      bin 2       0.25 degrees S.A.
292e: 12,01,86            struct  IACT      ,  86                                  #IACT              05    word      bin 0       1 A/D count             
2931: 10,01,86            struct  IECT      ,  86                                  #IECT              06    word      bin 0       1 A/D count             
2934: 14,01,86            struct  IEGR      ,  86                                  #IEGR              07    word      bin 0       1 A/D count             
2937: 1a,01,86            struct  IEGO1     ,  86                                  #IEGO1             08    word      bin 0       1 A/D count             
293a: 1c,01,86            struct  ITP       ,  86                                  #ITP               09    word      bin 0       1 A/D count               
293d: 00,00,00            struct           0,   0                                  #***NOT USED***    0A    
2940: 0e,01,86            struct  IVCAL     ,  86                                  #IVCAL             0B    word      bin 0       1 A/D count             
2943: 94,00,84            struct  FUELPW1   ,  84                                  #FUELPW1           0C    word      bin -5      32 clock ticks          
2946: 96,00,84            struct  LAMBSE1   ,  84                                  #LAMBSE1           0D    word      bin 11      1/2048 unitless         
2949: a8,00,00            struct  ?APT?_a8  ,   0                                  #APT               0E    byte      bin 0       -1,0,1 unitless         
294c: b7,00,00            struct  ACT       ,   0                                  #ACT               0F    byte      bin -1      2 degrees F             
294f: b6,00,00            struct  ECT       ,   0                                  #ECT               10    byte      bin -1      2 degrees F             
2952: 91,00,00            struct  VBAT      ,   0                                  #VBAT              11    byte      bin 4       0.0625 volts            
2955: 22,01,84            struct  MAP_FREQ  ,  84                                  #MAP_FREQ          12    word      bin 4       0.0625 Hz               
2958: c0,00,84            struct  EGRDC     ,  84                                  #EGRDC             13    word      bin 11      1 EEC-IV count            
295b: 00,00,00            struct           0,   0                                  #***NOT USED***    14    
295e: 92,00,84            struct  ISCDTY    ,  84                                  #ISCDTY            15    word      bin 11      1 EEC-IV count            
2961: 00,00,00            struct           0,   0                                  #***NOT USED***    16    
2964: 8d,00,00            struct  VSBAR     ,   0                                  #VSBAR             17    byte      bin 1       0.5 MPH                 
2967: 04,02,84            struct  VS        ,  84                                  #VS                18    word      bin 5       0.03125 MPH               
296a: 00,00,00            struct           0,   0                                  #***NOT USED***    19    
296d: 0e,05,80            struct  BITMAP_0  ,  80                                  #BITMAP_0          1A    word      N/A         N/A (see def. below)    
2970: 10,05,80            struct  BITMAP_1  ,  80                                  #BITMAP_1          1B    word      N/A         N/A (see def. below)      
2973: 00,00,00            struct           0,   0                                  #***NOT USED***    1C    
2976: 00,00,00            struct           0,   0                                  #***NOT USED***    1D    
2979: 38,05,00            struct  SBDS01    ,   0                                  #SBDS01            1E    byte      bin 0       N/A                     
297c: 3a,05,00            struct  SBDS02    ,   0                                  #SBDS02            1F    byte      bin 0       N/A                     
297f: 3c,05,00            struct  SBDS03    ,   0                                  #SBDS03            20    byte      bin 0       N/A                     
2982: 3e,05,00            struct  SBDS04    ,   0                                  #SBDS04            21    byte      bin 0       N/A                     
2985: 40,05,00            struct  SBDS05    ,   0                                  #SBDS05            22    byte      bin 0       N/A                     
2988: 42,05,00            struct  SBDS06    ,   0                                  #SBDS06            23    byte      bin 0       N/A        
298b: a6,00,00            struct  FMEM_FLAGS,   0                                  #FMEM_FLAGS        24    byte      bin 0       N/A   
298e: a7,00,00            struct  FMEM_FLAG2,   0                                  #FMEM_FLAG2        25    byte      bin 0       N/A
2991: 00,00,00            struct           0,   0                                  #***NOT USED***    26    
2994: 3e,03,84            struct  LOAD      ,  84                                  #LOAD              27    word      bin 11      0.0488% of standard air charge
2997: 76,01,84            struct  KAMRF1    ,  84                                  #KAMRF1            28    word      bin 4       0.0625 A/F
299a: 00,00,00            struct           0,   0                                  #***NOT USED***    29    
299d: 63,01,00            struct  DSDRPM    ,   0                                  #DSDRPM            2A    byte      bin -4      16 r.p.m.
29a0: 8a,00,84            struct  RATCH     ,  84                                  #RATCH             2B    word      bin 2       0.25 count
29a3: 00,00,00            struct           0,   0                                  #***NOT USED***    2C    
29a6: d4,00,00            struct  ATMR1     ,   0                                  #ATMR1             2D    word      bin 0       1 second
29a9: 0c,01,86            struct  IOCC      ,  86                                  #IOCC              2E    word      bin 0       1 A/D count
29ac: 18,01,86            struct  INDS      ,  86                                  #INDS              2F    word      bin 0       1 A/D count
29af: f8,01,84            struct  BCSDC     ,  84                                  #BCSDC             30    word      bin 11      0.0488% duty cycle on time
29b2: 00,00,00            struct           0,   0                                  #***NOT USED***    31    
29b5: d9,00,00            struct  GR_CM     ,   0                                  #GR_CM             32    byte      bin 1       N/A
29b8: 00,00,00            struct           0,   0                                  #***NOT USED***    33    
29bb: 00,00,00            struct           0,   0                                  #***NOT USED***    34    
29be: 42,03,84            struct  ETVOCM    ,  84                                  #ETVOCM            35    word      bin 2       0.25 volts
29c1: 5b,03,00            struct  TV_PRES   ,   0                                  #TV_PRES           36    byte      bin 1       0.5 p.s.i
29c4: 08,01,86            struct  ITOT      ,  86                                  #ITOT              37    word      bin 0       1 A/D count
29c7: db,00,00            struct  PDL       ,   0                                  #PDL               38    byte      bin 1       N/A
29ca: 00,00,00            struct           0,   0                                  #***NOT USED***    39    

   Send_HSO_Cmd:
29cd: b3,88,03,6f         ldb   R6f,[R88+3]      R6f = [TablePTR+3];
   Sub_29d1:
29d1: 71,8f,4c            an2b  R4c,8f           B4_No_service = 0;
                                                 B5_Late_output = 0;
                                                 B6_Queued = 0;
29d4: 48,84,06,76         sb3w  R76,R6,R84       R76 = IO_Timer - Reftime;
29d8: 64,76,84            ad2w  R84,R76          Reftime += R76;
29db: b4,00,86            adcb  R86,R0           ReftimeH += CY;
29de: 65,09,00,84         ad2w  R84,9            Reftime += 9;
29e2: b4,00,86            adcb  R86,R0           ReftimeH += CY;
29e5: 3b,4c,2a            jb    B3,R4c,2a12      if (B3_Immediate = 0)  {
29e8: 48,84,72,76         sb3w  R76,R72,R84      R76 = HSO_time - Reftime;
29ec: b0,74,78            ldb   R78,R74          R78 = HSO_timeH;
29ef: b8,86,78            sbbb  R78,R86          R78 -= ReftimeH - CY;
29f2: 3f,78,1d            jb    B7,R78,2a12      if (B7_R78 = 0)  {
29f5: d7,31               jne   2a28             if (R78 != 0) goto 2a28;
29f7: 89,83,06,76         cmpw  R76,683          
29fb: d9,2b               jgtu  2a28             if (R76 > 683) goto 2a28;
29fd: 38,0a,1e            jb    B0,Ra,2a1e       if (B0_HSO_OVF = 1) goto 2a1e;
2a00: 49,01,00,72,0e      sb3w  Re,R72,1         HSI_Time_lo = HSO_time - 1;
2a05: b0,6f,0d            ldb   Rd,R6f           HSO_Cmd = R6f;                    # 
2a08: 71,77,4c            an2b  R4c,77           B3_Immediate = 0;
                                                 B7_R4c = 0;
2a0b: f0                  ret                    return;

2a0c: b1,10,4c            ldb   R4c,10           R4c = 10;
2a0f: cc,00               pop   R0               R0 = pop();
2a11: f0                  ret                    return; } }

2a12: 91,20,4c            orb   R4c,20           B5_Late_output = 1;
2a15: a0,84,72            ldw   R72,R84          HSO_time = Reftime;
2a18: b0,86,74            ldb   R74,R86          HSO_timeH = ReftimeH;
2a1b: 30,0a,e2            jnb   B0,Ra,2a00       if (B0_HSO_OVF = 0) goto 2a00; }
2a1e: b3,e6,4a,76         ldb   R76,[Re6+4a]     R76 = [2ca];
2a22: 17,76               incb  R76              R76++;
2a24: c7,e6,4a,76         stb   R76,[Re6+4a]     [2ca] = R76; } }
2a28: 3f,4c,e1            jb    B7,R4c,2a0c      if (B7_R4c = 1) goto 2a0c;
2a2b: 71,20,4c            an2b  R4c,20           B0_R4c = 0;
                                                 B1_R4c = 0;
                                                 B2_R4c = 0;
                                                 B3_Immediate = 0;
                                                 B4_No_service = 0;
                                                 B6_Queued = 0;
                                                 B7_R4c = 0;
2a2e: 91,40,4c            orb   R4c,40           B6_Queued = 1;
2a31: af,88,05,70         ldzbw R70,[R88+5]      Rtab = [TablePTR+5];
2a35: 49,c8,22,88,7e      sb3w  R7e,R88,22c8     R7e = TablePTR - HSO_Table;
2a3a: c7,71,41,02,7e      stb   R7e,[R70+241]    [Rtab+241] = R7e;
2a3f: c3,71,42,02,72      stw   R72,[R70+242]    [Rtab+242] = HSO_time;
2a44: c7,71,44,02,74      stb   R74,[R70+244]    [Rtab+244] = HSO_timeH;
2a49: f0                  ret                    return;

   Sub_2a4a:
2a4a: db,e5               jc    2a31             if (CY = 1) goto 2a31;
   Do_Cmd_N:
2a4c: 2f,7f               scall 29cd             Send_HSO_Cmd ();
2a4e: 3e,4c,24            jb    B6,R4c,2a75      if (B6_Queued = 0)  {
2a51: c9,5c,2a            push  2a5c             push(Reschedule_Event_DoCmdP);
2a54: cb,88,06            push  [R88+6]          push([TablePTR+6]);
2a57: 65,08,00,88         ad2w  R88,8            TablePTR += 8;
2a5b: f0                  ret                    return;

   Reschedule_Event_DoCmdP:
2a5c: db,d3               jc    2a31             if (CY = 1) goto 2a31;
   Do_Cmd_P:
2a5e: 2f,6d               scall 29cd             Send_HSO_Cmd ();
2a60: 3e,4c,12            jb    B6,R4c,2a75      if (B6_Queued = 0)  {
2a63: 37,6f,0b            jnb   B7,R6f,2a71      if (B7_R6f = 1)  {
2a66: c9,4a,2a            push  2a4a             push(Sub_2a4a);
2a69: cb,88,06            push  [R88+6]          push([TablePTR+6]);
2a6c: 69,08,00,88         sb2w  R88,8            TablePTR -= 8;
2a70: f0                  ret                    return; }

2a71: c7,70,01,00         stb   R0,[R70+1]       [Rtab+1] = 0; } }
2a75: f0                  ret                    return;

   I_HSI_0:
2a76: 3a,0a,01            jb    B2,Ra,2a7a       if (B2_HSI_Ready = 0)  {
2a79: f1                  reti                   return; }

2a7a: f2                  pushp                  push(PSW);
2a7b: c3,e6,c2,10         stw   R10,[Re6+c2]     [242] = StackPtr;
2a7f: ad,6c,10            ldzbw R10,6c           StackPtr = 6c;
2a82: c9,46,2d            push  2d46             push(Sub_2d46);
   Read_HSI:
2a85: 48,84,06,76         sb3w  R76,R6,R84       R76 = IO_Timer - Reftime;
2a89: 64,76,84            ad2w  R84,R76          Reftime += R76;
2a8c: b4,00,86            adcb  R86,R0           ReftimeH += CY;
2a8f: b0,86,6e            ldb   R6e,R86          DATA_TIMEH = ReftimeH;
2a92: 48,0e,84,76         sb3w  R76,R84,Re       R76 = Reftime - HSI_Time_lo;
2a96: 65,02,00,76         ad2w  R76,2            R76 += 2;
2a9a: 48,76,84,6c         sb3w  R6c,R84,R76      DATA_TIME = Reftime - R76;
2a9e: b8,00,6e            sbbb  R6e,R0           DATA_TIMEH -= CY;
2aa1: b0,83,75            ldb   R75,R83          NEW_IRQs = HSI_State;
2aa4: b0,0d,83            ldb   R83,Rd           HSI_State = HSI_Data;
2aa7: 94,83,75            xorb  R75,R83          NEW_IRQs ^= HSI_State;
2aaa: 70,0c,75            an2b  R75,Rc           NEW_IRQs &= HSI_Mask;
2aad: 11,4c               clrb  R4c              R4c = 0;
2aaf: 37,9e,0e            jnb   B7,R9e,2ac0      if (B7_KIHP_9e = 1)  {
2ab2: b1,b7,0c            ldb   Rc,b7            HSI_Mask = b7;
2ab5: 31,75,06            jnb   B1,R75,2abe      if (B1_NEW_IRQs = 1)  {
2ab8: 91,08,4f            orb   R4f,8            B3_KNOCK_DETECTED_4f = 1;
2abb: 91,01,2e            orb   R2e,1            VIP_KNOCK = 1; }
2abe: 20,03               sjmp  2ac3             goto 2ac3; }

2ac0: b1,b5,0c            ldb   Rc,b5            HSI_Mask = b5;
2ac3: 30,75,02            jnb   B0,R75,2ac8      if (B0_NEW_IRQs = 1)  {
2ac6: 2a,c4               scall 2d8c             PIP_DATA (); }
2ac8: 37,75,03            jnb   B7,R75,2ace      if (B7_NEW_IRQs = 1)  {
2acb: ef,f1,5d            call  88bf             VIP_EOS_IDM (); }
2ace: 35,75,03            jnb   B5,R75,2ad4      if (B5_NEW_IRQs = 1)  {
2ad1: ef,4c,10            call  3b20             VEHICLE_SPEED_(VS) (); }
2ad4: 32,75,03            jnb   B2,R75,2ada      if (B2_NEW_IRQs = 1)  {
2ad7: ef,1a,0e            call  38f4             SCAP_Sensor_Edge (); }
2ada: 34,75,04            jnb   B4,R75,2ae1      if (B4_NEW_IRQs = 1)  {
2add: c3,e4,16,00         stw   R0,[Re4+16]      A3CTMR = 0; }
2ae1: 3a,0a,a1            jb    B2,Ra,2a85       if (B2_HSI_Ready = 1) goto Read_HSI;
2ae4: f0                  ret                    return;

   I_HSO_1:
2ae5: f2                  pushp                  push(PSW);
2ae6: c0,80,06            stw   R6,R80           bd = IO_Timer;
2ae9: c3,e6,c2,10         stw   R10,[Re6+c2]     [242] = StackPtr;
2aed: ad,6c,10            ldzbw R10,6c           StackPtr = 6c;

EVR FOREGROUND REPEATER MODULE
2af0: 3e,2a,2f            jb    B6,R2a,2b22      if (B6_NO_START_2a = 0)  {
2af3: 71,fb,46            an2b  R46,fb           EVR = 0;
2af6: 11,56               clrb  R56              R56 = 0;
2af8: 9b,e6,8a,00         cmpb  R0,[Re6+8a]      
2afc: df,20               je    2b1e             if (EGRCNT != 0)  {
2afe: b3,e6,8d,56         ldb   R56,[Re6+8d]     R56 = [20d];
2b02: b3,e6,8c,58         ldb   R58,[Re6+8c]     R58 = [20c];
2b06: 79,10,56            sb2b  R56,10           R56 -= 10;
2b09: db,08               jc    2b13             if (R56 < 0)  {
2b0b: 77,e6,8b,56         ad2b  R56,[Re6+8b]     R56 += EGRPER;
2b0f: b3,e6,8a,58         ldb   R58,[Re6+8a]     R58 = EGRCNT; }
2b13: 15,58               decb  R58              R58--;
2b15: de,07               jlt   2b1e             if (R58 >= 0)  {
2b17: c7,e6,8c,58         stb   R58,[Re6+8c]     [20c] = R58;
2b1b: 91,04,46            orb   R46,4            EVR = 1; } }
2b1e: c7,e6,8d,56         stb   R56,[Re6+8d]     [20d] = R56; }
2b22: 71,fd,47            an2b  R47,fd           B1_CANP_OUT_47 = 0;
2b25: 5b,e6,92,85,54      sb3b  R54,R85,[Re6+92] R54 = R85 - [212];
2b2a: 9b,e6,91,54         cmpb  R54,[Re6+91]     
2b2e: d3,0d               jnc   2b3d             if (R54 >= [211])  {
2b30: 9b,e6,90,54         cmpb  R54,[Re6+90]     
2b34: d3,0a               jnc   2b40             if (R54 < [210]) goto 2b40;
2b36: c7,e6,92,85         stb   R85,[Re6+92]     [212] = R85;
2b3a: 35,25,03            jnb   B5,R25,2b40      if (B5_R25 = 0) goto 2b40; }
2b3d: 91,02,47            orb   R47,2            B1_CANP_OUT_47 = 1; } }
2b40: 31,d6,35            jnb   B1,Rd6,2b78      if (B1_Rd6 = 1)  {
2b43: 9b,fe,2e,00         cmpb  R0,[Rfe+2e]      
2b47: d7,2b               jne   2b74             if (GOVHP = 0)  {
2b49: a3,e4,7e,56         ldw   R56,[Re4+7e]     R56 = DOL_COUNT;
2b4d: 69,02,00,56         sb2w  R56,2            R56 -= 2;
2b51: d9,0a               jgtu  2b5d             if (R56 <= 0)  {
2b53: a3,e4,7e,56         ldw   R56,[Re4+7e]     R56 = DOL_COUNT;
2b57: a1,01,00,56         ldw   R56,1            R56 = 1;
2b5b: 20,17               sjmp  2b74             goto 2b74; }

2b5d: 39,50,14            jb    B1,R50,2b74      if (B1_Undsp_trans = 0)  {
2b60: b1,12,6f            ldb   R6f,12           R6f = 12;                         # NO INTERRUPT OUT, SET OUTPUT HIGH, HSO#2
2b63: 30,d6,03            jnb   B0,Rd6,2b69      if (B0_Rd6 = 1)  {
2b66: b1,02,6f            ldb   R6f,2            R6f = 2; }                        # NO INTERRUPT OUT, SET OUTPUT LOW, HSO#2
2b69: 45,03,00,06,0e      ad3w  Re,R6,3          HSI_Time_lo = IO_Timer + 3;
2b6e: b0,6f,0d            ldb   Rd,R6f           HSO_Cmd = R6f;
2b71: 95,01,d6            xorb  Rd6,1            B0_Rd6 ^= 1; } }
2b74: c3,e4,7e,56         stw   R56,[Re4+7e]     DOL_COUNT = R56; }
2b78: 31,9e,17            jnb   B1,R9e,2b92      if (B1_E4OD_9e = 1)  {
2b7b: 30,a2,14            jnb   B0,Ra2,2b92      if (B0_Ra2 = 1)  {
2b7e: b1,03,6f            ldb   R6f,3            R6f = 3;                          # NO INTERRUPT OUT, SET OUTPUT LOW, HSO#3
2b81: 37,a2,03            jnb   B7,Ra2,2b87      if (B7_FLG_CS_CM_a2 = 1)  {
2b84: b1,13,6f            ldb   R6f,13           R6f = 13; }                       # NO INTERRUPT OUT, SET OUTPUT HIGH, HSO#3
2b87: 45,03,00,06,0e      ad3w  Re,R6,3          HSI_Time_lo = IO_Timer + 3;
2b8c: b0,6f,0d            ldb   Rd,R6f           HSO_Cmd = R6f;
2b8f: 71,fe,a2            an2b  Ra2,fe           B0_Ra2 = 0; } }
2b92: 8b,e8,a8,c2         cmpw  Rc2,[Re8+a8]     
2b96: d1,17               jleu  2baf             if (Rc2 > SR_PP_LIM)  {
2b98: 32,dd,0b            jnb   B2,Rdd,2ba6      if (B2_FLG_HS_UNLK_dd = 1)  {
2b9b: 91,01,dd            orb   Rdd,1            B0_FLG_SFT_UNLK_dd = 1;
2b9e: 71,fb,dd            an2b  Rdd,fb           B2_FLG_HS_UNLK_dd = 0;
2ba1: 71,f7,a2            an2b  Ra2,f7           B3_FLG_LK_CM_a2 = 0;
2ba4: 20,0f               sjmp  2bb5             goto 2bb5; }

2ba6: 33,dd,06            jnb   B3,Rdd,2baf      if (B3_FLG_HS_LK_dd = 1)  {
2ba9: 71,f7,dd            an2b  Rdd,f7           B3_FLG_HS_LK_dd = 0;
2bac: 71,fe,dd            an2b  Rdd,fe           B0_FLG_SFT_UNLK_dd = 0; } }
2baf: b1,11,6f            ldb   R6f,11           R6f = 11;                         # NO INTERRUPT OUT, SET OUTPUT HIGH, HSO#1
2bb2: 3b,a2,03            jb    B3,Ra2,2bb8      if (B3_FLG_LK_CM_a2 = 0)  {
2bb5: b1,01,6f            ldb   R6f,1            R6f = 1; }                        # NO INTERRUPT OUT, SET OUTPUT LOW, HSO#1
2bb8: 45,03,00,06,0e      ad3w  Re,R6,3          HSI_Time_lo = IO_Timer + 3;
2bbd: b0,6f,0d            ldb   Rd,R6f           HSO_Cmd = R6f;
2bc0: 31,9e,13            jnb   B1,R9e,2bd6      if (B1_E4OD_9e = 1)  {
2bc3: 3a,44,05            jb    B2,R44,2bcb      if (B2_R44 = 0)  {
2bc6: b1,00,6f            ldb   R6f,0            R6f = 0;                          # NO INTERRUPT OUT, SET OUTPUT LOW, HSO#0
2bc9: 20,03               sjmp  2bce             goto 2bce; }

2bcb: b1,10,6f            ldb   R6f,10           R6f = 10;                         # NO INTERRUPT OUT, SET OUTPUT HIGH, HSO#0
2bce: 45,03,00,06,0e      ad3w  Re,R6,3          HSI_Time_lo = IO_Timer + 3;
2bd3: b0,6f,0d            ldb   Rd,R6f           HSO_Cmd = R6f; }

EPC_VFS_OUT_COM2
2bd6: 35,e0,40            jnb   B5,Re0,2c19      if (B5_VFS_OUT_FLG_e0 = 1)  {
2bd9: 71,df,e0            an2b  Re0,df           B5_VFS_OUT_FLG_e0 = 0;
2bdc: b3,e8,d1,54         ldb   R54,[Re8+d1]     R54 = TV_COUNTS;
2be0: b1,08,55            ldb   R55,8            R55 = 8;
2be3: 71,df,47            an2b  R47,df           B5_FLG_TV_DATA_47 = 0;
2be6: 28,21               scall 2c09             Sub_2c09 ();
2be8: 71,ef,47            an2b  R47,ef           B4_FLG_TV_CLK_47 = 0;
2beb: 28,1c               scall 2c09             Sub_2c09 ();
2bed: 71,df,47            an2b  R47,df           B5_FLG_TV_DATA_47 = 0;
2bf0: 30,54,03            jnb   B0,R54,2bf6      if (B0_R54 = 1)  {
2bf3: 91,20,47            orb   R47,20           B5_FLG_TV_DATA_47 = 1; }
2bf6: 28,11               scall 2c09             Sub_2c09 ();
2bf8: 91,10,47            orb   R47,10           B4_FLG_TV_CLK_47 = 1;
2bfb: 28,0c               scall 2c09             Sub_2c09 ();
2bfd: 91,20,47            orb   R47,20           B5_FLG_TV_DATA_47 = 1;
2c00: 18,01,54            shrb  R54,1            R54 >>= 1;
2c03: e0,55,e0            djnz  R55,2be6         R55--;
                                                 if (R55 != 0) goto 2be6;
2c06: c9,19,2c            push  2c19             push(Sub_2c19);
   Sub_2c09:
2c09: a0,46,56            ldw   R56,R46          R56 = R46;
2c0c: 85,00,00,56         xrw   R56,0            R56 = R56;
2c10: 18,02,57            shrb  R57,2            R57 >>= 2;
2c13: c7,01,2f,09,57      stb   R57,[R0+92f]     [92f] = R57;
2c18: f0                  ret                    return; }

   Sub_2c19:
2c19: a0,80,54            ldw   R54,R80          R54 = 235e;
2c1c: 45,a1,01,54,0e      ad3w  Re,R54,1a1       HSI_Time_lo = R54 + 1a1;
2c21: b1,2a,0d            ldb   Rd,2a            HSO_Cmd = 2a;                     # GENERATE "OUTPUT INTERRUPT #1", at specified time
2c24: 91,0d,47            orb   R47,d            Flags_47 |= d;
2c27: a0,46,54            ldw   R54,R46          R54 = R46;
2c2a: 85,00,00,54         xrw   R54,0            R54 = R54;
2c2e: b0,54,02            ldb   R2,R54           LSO_Port = R54;
2c31: b0,55,03            ldb   R3,R55           BIO_Port = R55;
2c34: 18,02,55            shrb  R55,2            R55 >>= 2;
2c37: c7,01,2f,09,55      stb   R55,[R0+92f]     [92f] = R55;
2c3c: 95,02,50            xorb  R50,2            B1_Undsp_trans ^= 1;
2c3f: 31,50,65            jnb   B1,R50,2ca7      if (B1_Undsp_trans = 1)  {
2c42: a1,5e,23,80         ldw   R80,235e         R80 = 235e;
   Sub_2c46:
2c46: 32,0a,02            jnb   B2,Ra,2c4b       if (B2_HSI_Ready = 1)  {
2c49: 2e,3a               scall 2a85             Read_HSI (); }
2c4b: 48,84,06,76         sb3w  R76,R6,R84       R76 = IO_Timer - Reftime;
2c4f: 64,76,84            ad2w  R84,R76          Reftime += R76;
2c52: b4,00,86            adcb  R86,R0           ReftimeH += CY;
2c55: 89,70,23,80         cmpw  R80,2370         
2c59: db,4c               jc    2ca7             if (R80 < 2370)  {
2c5b: a2,81,70            ldw   R70,[R80++]      Rtab = [R80++];
2c5e: 57,70,01,00,88      ad3b  R88,R0,[R70+1]   TablePTR = [Rtab+1];
2c63: df,f0               je    2c55             if (TablePTR = 0) goto 2c55;
2c65: a3,70,02,72         ldw   R72,[R70+2]      HSO_time = [Rtab+2];
2c69: b3,70,04,74         ldb   R74,[R70+4]      HSO_timeH = [Rtab+4];
2c6d: 68,84,72            sb2w  R72,R84          HSO_time -= Reftime;
2c70: b8,86,74            sbbb  R74,R86          HSO_timeH -= ReftimeH - CY;
2c73: 3f,74,08            jb    B7,R74,2c7e      if (B7_HSO_timeH = 0)  {
2c76: d7,dd               jne   2c55             if (HSO_timeH != 0) goto 2c55;
2c78: 89,83,06,72         cmpw  R72,683          
2c7c: d9,d7               jgtu  2c55             if (HSO_time > 683) goto 2c55; }
2c7e: 64,84,72            ad2w  R72,R84          HSO_time += Reftime;
2c81: b4,86,74            adcb  R74,R86          HSO_timeH += ReftimeH + CY;
2c84: b1,80,4c            ldb   R4c,80           R4c = 80;
2c87: 11,89               clrb  R89              R89 = 0;
2c89: 65,c8,22,88         ad2w  R88,22c8         TablePTR += HSO_Table;
2c8d: a0,70,54            ldw   R54,R70          R54 = Rtab;
2c90: 5b,88,05,70,54      sb3b  R54,R70,[R88+5]  R54 = Rtab - [TablePTR+5];
2c95: 89,40,02,54         cmpw  R54,240          
2c99: d7,06               jne   2ca1             if (R54 = 240)  {
2c9b: c9,46,2c            push  2c46             push(Sub_2c46);
2c9e: ca,88               push  [R88]            push([TablePTR]);
2ca0: f0                  ret                    return; }

2ca1: c7,70,01,00         stb   R0,[R70+1]       [Rtab+1] = 0;
2ca5: 27,ae               sjmp  2c55             goto 2c55; } }

2ca7: 32,0a,02            jnb   B2,Ra,2cac       if (B2_HSI_Ready = 1)  {
2caa: 2d,d9               scall 2a85             Read_HSI (); }
2cac: 34,48,03            jnb   B4,R48,2cb2      if (AEPW_NOT_ZERO = 1)  {
2caf: ef,77,0b            call  3829             Sub_3829 (); }
2cb2: 33,48,0c            jnb   B3,R48,2cc1      if (PUTMR>TKYON1 = 1)  {
2cb5: 71,f7,48            an2b  R48,f7           PUTMR>TKYON1 = 0;
2cb8: 91,02,28            orb   R28,2            B1_PTPFLG_28 = 1;
2cbb: 17,ce               incb  Rce              Rce++;
2cbd: d7,02               jne   2cc1             if (Rce = 0)  {
2cbf: 15,ce               decb  Rce              Rce--; } }
2cc1: 35,48,03            jnb   B5,R48,2cc7      if (STO_TRIGGER = 1)  {
2cc4: ef,66,5b            call  882d             Sub_882d (); }
2cc7: 39,50,3c            jb    B1,R50,2d06      if (B1_Undsp_trans = 0)  {
2cca: b3,01,2f,09,55      ldb   R55,[R0+92f]     R55 = [92f];
2ccf: 19,02,55            shlb  R55,2            R55 <<= 2;
2cd2: b0,03,56            ldb   R56,R3           R56 = BIO_Port;
2cd5: 71,03,56            an2b  R56,3            R56 &= 3;
2cd8: 90,56,55            orb   R55,R56          R55 |= R56;
2cdb: b3,01,30,09,56      ldb   R56,[R0+930]     R56 = [930];
2ce0: c4,90,56            stb   R56,R90          R90 = R56;
2ce3: b0,0b,54            ldb   R54,Rb           R54 = HSI_Sample;
2ce6: 85,08,00,54         xrw   R54,8            B3_R54 ^= 1;
2cea: 95,04,90            xorb  R90,4            B2_I4X4L_90 ^= 1;
2ced: a3,e6,be,58         ldw   R58,[Re6+be]     R58 = LST_data;
2cf1: c3,e6,be,54         stw   R54,[Re6+be]     LST_data = R54;
2cf5: 84,58,54            xrw   R54,R58          R54 ^= R58;
2cf8: 02,54               cplw  R54              R54 = ~R54;
2cfa: a0,8e,56            ldw   R56,R8e          R56 = R8e;
2cfd: 84,58,56            xrw   R56,R58          R56 ^= R58;
2d00: 60,56,54            an2w  R54,R56          R54 &= R56;
2d03: 84,54,8e            xrw   R8e,R54          R8e ^= R54; }
2d06: c3,01,00,1f,00      stw   R0,[R0+1f00]     [1f00] = 0;
2d0b: c3,01,00,1f,00      stw   R0,[R0+1f00]     [1f00] = 0;
2d10: e0,d5,16            djnz  Rd5,2d29         Rd5--;
                                                 if (Rd5 != 0) goto 2d29;
2d13: 17,d5               incb  Rd5              Rd5++;
2d15: b3,ee,87,54         ldb   R54,[Ree+87]     R54 = [707];
2d19: 91,80,54            orb   R54,80           B7_R54 = 1;
2d1c: c7,ee,87,54         stb   R54,[Ree+87]     [707] = R54;
2d20: b0,d7,54            ldb   R54,Rd7          R54 = Rd7;
2d23: c7,ee,81,54         stb   R54,[Ree+81]     [701] = R54;
2d27: 20,17               sjmp  2d40             goto 2d40; }

2d29: a0,06,5c            ldw   R5c,R6           R5c = IO_Timer;
2d2c: 58,87,5d,54         sb3b  R54,R5d,R87      R54 = R5d - R87;
2d30: 99,02,54            cmpb  R54,2            
2d33: d3,0b               jnc   2d40             if (R54 >= 2)  {
2d35: 95,40,02            xorb  R2,40            CPU_OK ^= 1;
2d38: b0,5d,87            ldb   R87,R5d          R87 = R5d;
2d3b: 17,05               incb  R5               WDG_Timer++;
2d3d: 95,40,02            xorb  R2,40            CPU_OK ^= 1; }
2d40: 31,09,03            jnb   B1,R9,2d46       if (B1_INT_Pend = 1)  {
2d43: b1,02,08            ldb   R8,2             INT_Mask = 2; }
   Sub_2d46:
2d46: a3,e6,c2,10         ldw   R10,[Re6+c2]     StackPtr = [242];
2d4a: fa                  di                     interrupts OFF;
2d4b: f3                  popp                   PSW = pop();
2d4c: f1                  reti                   return;

   I_Timer_OVF:
2d4d: f2                  pushp                  push(PSW);
2d4e: 07,12               incw  R12              Tmr_OVF_cnt++;
2d50: d7,03               jne   2d55             if (Tmr_OVF_cnt = 0)  {
2d52: 91,04,4f            orb   R4f,4            B2_Clkext_ovr = 1; }
2d55: b0,12,86            ldb   R86,R12          ReftimeH = Tmr_OVF_cnt;
2d58: a0,06,84            ldw   R84,R6           Reftime = IO_Timer;
2d5b: fa                  di                     interrupts OFF;
2d5c: b1,a1,08            ldb   R8,a1            INT_Mask = a1;                    # reset int mask
                                                                                   # a1 = 1010 0001
2d5f: b3,f0,03,54         ldb   R54,[Rf0+3]      R54 = LINK_SW;
2d63: 31,54,03            jnb   B1,R54,2d69      if (B1_R54 = 1)  {
2d66: b1,b1,08            ldb   R8,b1            INT_Mask = b1; }                  # b1 = 1011 0001
2d69: f3                  popp                   PSW = pop();
   I_Ignore:
2d6a: f1                  reti                   return;

   I_HSO_2:
2d6b: f2                  pushp                  push(PSW);
2d6c: fa                  di                     interrupts OFF;
2d6d: ff                  nop                    
2d6e: a3,01,00,0d,54      ldw   R54,[R0+d00]     R54 = [d00];                      # Console STATUS check
2d73: 99,2a,55            cmpb  R55,2a           
2d76: d7,0b               jne   2d83             if (R55 = 2a)  {                  # exit if no console
2d78: cc,56               pop   R56              R56 = pop();                      # pop stack address into reg
2d7a: ad,04,58            ldzbw R58,4            wR58 = 4;                         # load byte and zero extend to word
2d7d: cb,59,d0,a9         push  [R58+a9d0]       push([R58+a9d0]);                 # push (e009) to stack
                                                                                   # 0x0004 + a9d0 = [a9d4] = 0xe009
2d81: c8,56               push  R56              push(R56); }
2d83: f3                  popp                   PSW = pop();
2d84: f1                  reti                   return;

2d85: ff,fa,06,a6,04      ???   

2d8a: 12,04               word    412

   PIP_DATA:
2d8c: af,f6,05,58         ldzbw R58,[Rf6+5]      wR58 = ENGCYL;
2d90: a3,59,82,2d,58      ldw   R58,[R58+2d82]   R58 = [R58+2d82];
2d95: 48,7a,6c,54         sb3w  R54,R6c,R7a      R54 = DATA_TIME - LAST_HI_PIP;
2d99: b0,6e,56            ldb   R56,R6e          R56 = DATA_TIMEH;
2d9c: b8,7c,56            sbbb  R56,R7c          R56 -= Prev_PIP_timeH - CY;
2d9f: 38,83,02            jb    B0,R83,2da4      if (B0_HSI_State = 0)  {
2da2: 20,cb               sjmp  2e6f             goto 2e6f; }                      |## Initialise the RAM table() from InjTab table()

2da4: 34,50,0b            jnb   B4,R50,2db2      if (B4_First_pip = 1)  {
2da7: d7,2a               jne   2dd3             if (R56 != 0) goto 2dd3;
2da9: 88,58,54            cmpw  R54,R58          
2dac: db,25               jc    2dd3             if (R54 >= R58) goto 2dd3;
2dae: 71,fe,83            an2b  R83,fe           B0_HSI_State = 0;
2db1: f0                  ret                    return; }

2db2: 91,10,50            orb   R50,10           B4_First_pip = 1;
2db5: c3,01,52,02,6c      stw   R6c,[R0+252]     [252] = DATA_TIME;
2dba: c7,01,54,02,6e      stb   R6e,[R0+254]     [254] = DATA_TIMEH;
2dbf: c3,01,5e,02,6c      stw   R6c,[R0+25e]     [25e] = DATA_TIME;
2dc4: c7,01,60,02,6e      stb   R6e,[R0+260]     [260] = DATA_TIMEH;
2dc9: c3,e8,38,6c         stw   R6c,[Re8+38]     PREV_N_PIP = DATA_TIME;
2dcd: c7,e8,3a,6e         stb   R6e,[Re8+3a]     [3ba] = DATA_TIMEH;
2dd1: 20,44               sjmp  2e17             goto 2e17; } }

2dd3: b3,e4,fc,5a         ldb   R5a,[Re4+fc]     R5a = PPCTR;
2dd7: 39,27,0a            jb    B1,R27,2de4      if (B1_DFSFLG_R27 = 0)  {
2dda: 9b,f4,18,5a         cmpb  R5a,[Rf4+18]     
2dde: db,1e               jc    2dfe             if (R5a >= PIPNUM) goto 2dfe;
2de0: 17,5a               incb  R5a              R5a++;
2de2: 20,16               sjmp  2dfa             goto 2dfa; }

2de4: c3,01,52,02,6c      stw   R6c,[R0+252]     [252] = DATA_TIME;
2de9: c7,01,54,02,6e      stb   R6e,[R0+254]     [254] = DATA_TIMEH;
2dee: c3,01,5e,02,6c      stw   R6c,[R0+25e]     [25e] = DATA_TIME;
2df3: c7,01,60,02,6e      stb   R6e,[R0+260]     [260] = DATA_TIMEH;
2df8: 11,5a               clrb  R5a              R5a = 0;
2dfa: c7,e4,fc,5a         stb   R5a,[Re4+fc]     PPCTR = R5a; }
2dfe: 91,08,4e            orb   R4e,8            B3_NEW_RPM_4e = 1;
2e01: 3f,27,0a            jb    B7,R27,2e0e      if (B7_SYNFLG = 0)  {
2e04: a3,f6,0a,5c         ldw   R5c,[Rf6+a]      R5c = MHPFD;
2e08: 3f,5d,03            jb    B7,R5d,2e0e      if (B7_R5d = 0)  {
2e0b: 71,fb,50            an2b  R50,fb           B2_Douple_edge = 0; } }
2e0e: 91,01,4f            orb   R4f,1            B0_PIP_DOUBLE_4f = 1;
2e11: 3a,50,03            jb    B2,R50,2e17      if (B2_Douple_edge = 0)  {
2e14: 71,fe,4f            an2b  R4f,fe           B0_PIP_DOUBLE_4f = 0; }
2e17: 91,80,4e            orb   R4e,80           B7_NEW_PIP = 1;
2e1a: 91,08,48            orb   R48,8            PUTMR>TKYON1 = 1;
2e1d: c3,e6,0c,c4         stw   Rc4,[Re6+c]      DT23S = DT12S;
2e21: a0,54,c4            ldw   Rc4,R54          DT12S = R54;
2e24: b0,56,c6            ldb   Rc6,R56          Rc6 = R56;
2e27: 37,a5,05            jnb   B7,Ra5,2e2f      if (b7_CRKFLG_a5 = 1)  {
2e2a: a0,c4,c2            ldw   Rc2,Rc4          Rc2 = DT12S;
2e2d: 20,15               sjmp  2e44             goto 2e44; }

2e2f: a0,c2,56            ldw   R56,Rc2          R56 = Rc2;
2e32: af,fc,08,58         ldzbw R58,[Rfc+8]      wR58 = PIPFIL;
2e36: 08,58,56            shrw  R56,R58          R56 >>= R58;
2e39: 48,56,c2,5a         sb3w  R5a,Rc2,R56      R5a = Rc2 - R56;
2e3d: 08,58,54            shrw  R54,R58          R54 >>= R58;
2e40: 44,54,5a,c2         ad3w  Rc2,R5a,R54      Rc2 = R5a + R54;

RISING EDGE CALCULATIONS
2e44: 32,e1,03            jnb   B2,Re1,2e4a      if (B2_CCD_HP = 1)  {
2e47: 3b,49,03            jb    B3,R49,2e4d      if (DWLELD = 1) goto 2e4d; }
2e4a: ef,e3,05            call  3430             DWELL_CALCULATION (); }           # Call DWELL_CALCULATION
2e4d: c0,7a,6c            stw   R6c,R7a          LAST_HI_PIP = DATA_TIME;
2e50: c4,7c,6e            stb   R6e,R7c          Prev_PIP_timeH = DATA_TIMEH;
2e53: b3,e4,00,54         ldb   R54,[Re4+0]      R54 = CRKPIP_CTR;                 # Increment CRKPIP_CTR every rising edge of PIP
2e57: 17,54               incb  R54              R54++;
2e59: db,04               jc    2e5f             if (R54 <= ff)  {
2e5b: c7,e4,00,54         stb   R54,[Re4+0]      CRKPIP_CTR = R54; }               # Clip CRKPIP_CTR at 255 as a maximum
2e5f: ef,28,0b            call  398a             SYSEQ_MAP_COM1 ();
2e62: 15,cf               decb  Rcf              SYNCTR--;
2e64: ef,40,04            call  32a7             EOS_KAY_CALCULATIONS ();
2e67: 30,4f,03            jnb   B0,R4f,2e6d      if (B0_PIP_DOUBLE_4f = 1)  {
2e6a: ef,4a,05            call  33b7             TRANSIENT_SPARK-COMPENSATION (); }
2e6d: 20,af               sjmp  2f1e             goto 2f1e;

2e6f: 34,50,0c            jnb   B4,R50,2e7e      if (B4_First_pip = 1)  {
2e72: 08,02,58            shrw  R58,2            R58 >>= 2;
2e75: 88,58,54            cmpw  R54,R58          
2e78: db,04               jc    2e7e             if (R54 < R58)  {
2e7a: 91,01,83            orb   R83,1            B0_HSI_State = 1;
2e7d: f0                  ret                    return; } }

2e7e: 37,a5,03            jnb   B7,Ra5,2e84      if (b7_CRKFLG_a5 = 1)  {
2e81: ef,44,06            call  34c8             FUEL_INJ_OUT_COM6 (); }

# FUEL_INJ_TIM_COM2
2e84: a0,c8,5c            ldw   R5c,Rc8          R5c = HFDLTA;
2e87: c3,e6,0e,c8         stw   Rc8,[Re6+e]      PHFDLT = HFDLTA;                  # Previous PIP first half period.
2e8b: a0,54,c8            ldw   Rc8,R54          HFDLTA = R54;                     # Most recent PIP first half period.
2e8e: 71,fb,51            an2b  R51,fb           B2_SIGPIP_51 = 0;                 # SIGPIP = 0 (not signature PIP)
2e91: 48,c8,5c,56         sb3w  R56,R5c,Rc8      R56 = R5c - HFDLTA;               # (PHFDLT - HFDLTA)
2e95: d1,0e               jleu  2ea5             if (R56 > 0)  {
2e97: 01,54               clrw  R54              R54 = 0;
2e99: 8c,5c,54            divw  R54,R5c          wR54 /= R5c;                      # (PHFDLT - HFDLTA) / PHFDLT
2e9c: 8b,f6,0a,54         cmpw  R54,[Rf6+a]      
2ea0: d1,03               jleu  2ea5             if (R54 > MHPFD)  {               # MHPFD = Signature PIP difference check value.
2ea2: 91,04,51            orb   R51,4            B2_SIGPIP_51 = 1; } }             # SIGPIP = 1 (this is signature PIP)
2ea5: 98,00,cf            cmpb  Rcf,R0           
2ea8: d7,43               jne   2eed             if (SYNCTR = 0)  {
2eaa: 3e,a5,32            jb    B6,Ra5,2edf      if (UNDSP = 0)  {
2ead: 3a,51,0c            jb    B2,R51,2ebc      if (B2_SIGPIP_51 = 0)  {
2eb0: 71,7f,27            an2b  R27,7f           B7_SYNFLG = 0;                    # (not in synch)
2eb3: b3,f6,05,cf         ldb   Rcf,[Rf6+5]      SYNCTR = ENGCYL;
2eb7: 15,cf               decb  Rcf              SYNCTR--;                         # SYNCTR = (2 * ENGCYL) - 1
2eb9: e7,31,00            jump  2eed             goto 2eed; }                      # EXIT FUEL_INJ_TIM_COM2

2ebc: 91,80,27            orb   R27,80           B7_SYNFLG = 1;
2ebf: a3,e6,4e,56         ldw   R56,[Re6+4e]     R56 = SIGDLT;
2ec3: c3,e6,50,56         stw   R56,[Re6+50]     PSGDLT = R56;
2ec7: c3,e6,4e,c8         stw   Rc8,[Re6+4e]     SIGDLT = HFDLTA;
2ecb: a3,e6,4c,54         ldw   R54,[Re6+4c]     R54 = SIGKAL;
2ecf: 6c,c8,54            ml2w  R54,Rc8          lR54 *= HFDLTA;
2ed2: 8c,ca,54            divw  R54,Rca          wR54 /= MKAY;
2ed5: dd,05               jv    2edc             if (OVF = 0)  {
2ed7: c0,c8,54            stw   R54,Rc8          HFDLTA = R54;
2eda: 20,03               sjmp  2edf             goto 2edf; }

2edc: a0,5c,c8            ldw   Rc8,R5c          HFDLTA = R5c; }
2edf: b3,f6,05,cf         ldb   Rcf,[Rf6+5]      SYNCTR = ENGCYL;
2ee3: c3,01,00,1f,00      stw   R0,[R0+1f00]     [1f00] = 0;
2ee8: c3,01,00,1f,00      stw   R0,[R0+1f00]     [1f00] = 0; }
2eed: 37,9e,03            jnb   B7,R9e,2ef3      if (B7_KIHP_9e = 1)  {
2ef0: c9,38,32            push  3238             push(KNOCK_THRESHOLD_SENSE_(KTS)_LOGIC); }

# FALLING EDGE CALCULATIONS
2ef3: a1,e2,22,88         ldw   R88,22e2         TablePTR = 22e2;
2ef7: 36,a1,12            jnb   B6,Ra1,2f0c      if (B6_ECHO_PIP_a1 = 1)  {
2efa: 35,a1,09            jnb   B5,Ra1,2f06      if (B5_ECHO_TRANS_a1 = 1)  {
2efd: 71,df,a1            an2b  Ra1,df           B5_ECHO_TRANS_a1 = 0;
2f00: 33,49,1a            jnb   B3,R49,2f1d      if (DWLELD = 0) return;
2f03: 71,f7,49            an2b  R49,f7           DWLELD = 0; }
2f06: 91,08,4c            orb   R4c,8            B3_Immediate = 1;
2f09: e7,c1,fa            jump  29cd             goto Send_HSO_Cmd; }

2f0c: 30,4f,0b            jnb   B0,R4f,2f1a      if (B0_PIP_DOUBLE_4f = 1)  {
2f0f: a1,da,22,88         ldw   R88,22da         TablePTR = 22da;
2f13: 28,77               scall 2f8c             SPOUT_CALCULATION ();
2f15: 71,df,a1            an2b  Ra1,df           B5_ECHO_TRANS_a1 = 0;
2f18: 20,03               sjmp  2f1d             return; }

2f1a: 3d,a1,e9            jb    B5,Ra1,2f06      if (B5_ECHO_TRANS_a1 = 1) goto 2f06; }
2f1d: f0                  ret                    return;

2f1e: 71,7f,4f            an2b  R4f,7f           B7_KNOCK_OCCURRED_4f = 0;
2f21: 3f,9e,05            jb    B7,R9e,2f29      if (B7_KIHP_9e = 0)  {
2f24: 71,f7,4f            an2b  R4f,f7           B3_KNOCK_DETECTED_4f = 0;
2f27: 20,0c               sjmp  2f35             goto 2f35; }

2f29: 33,4f,09            jnb   B3,R4f,2f35      if (B3_KNOCK_DETECTED_4f = 1)  {
2f2c: 91,80,4f            orb   R4f,80           B7_KNOCK_OCCURRED_4f = 1;
2f2f: 39,83,03            jb    B1,R83,2f35      if (B1_HSI_State = 0)  {
2f32: 71,f7,4f            an2b  R4f,f7           B3_KNOCK_DETECTED_4f = 0; } }
2f35: a1,da,22,88         ldw   R88,22da         TablePTR = 22da;
2f39: 36,a1,16            jnb   B6,Ra1,2f52      if (B6_ECHO_PIP_a1 = 1)  {
2f3c: 3d,a1,06            jb    B5,Ra1,2f45      if (B5_ECHO_TRANS_a1 = 0)  {
2f3f: 91,08,4c            orb   R4c,8            B3_Immediate = 1;
2f42: ef,88,fa            call  29cd             Send_HSO_Cmd (); }
2f45: 71,fb,50            an2b  R50,fb           B2_Douple_edge = 0;
2f48: a1,00,80,54         ldw   R54,8000         R54 = 8000;
2f4c: c3,e4,22,54         stw   R54,[Re4+22]     [1a2] = R54;
2f50: 20,1c               sjmp  2f6e             goto 2f6e; }

2f52: 38,4f,19            jb    B0,R4f,2f6e      if (B0_PIP_DOUBLE_4f = 0)  {
2f55: 35,a1,14            jnb   B5,Ra1,2f6c      if (B5_ECHO_TRANS_a1 = 1)  {
2f58: 91,80,53            orb   R53,80           B7_R53 = 1;
2f5b: c3,e8,76,6c         stw   R6c,[Re8+76]     SPOUT_HIGH_EDGE = DATA_TIME;
2f5f: c7,e8,78,6e         stb   R6e,[Re8+78]     SPOUT_HIGH_EDGE_H = DATA_TIMEH;
2f63: 91,08,4c            orb   R4c,8            B3_Immediate = 1;
2f66: ef,e3,fa            call  2a4c             Do_Cmd_N ();
2f69: 71,df,a1            an2b  Ra1,df           B5_ECHO_TRANS_a1 = 0; }
2f6c: 28,1e               scall 2f8c             SPOUT_CALCULATION (); }
2f6e: 91,c0,4d            orb   R4d,c0           B6_INJ2_PIP_4d = 1;
                                                 B7_INJ1_PIP_4d = 1;
2f71: 3f,a5,03            jb    B7,Ra5,2f77      if (b7_CRKFLG_a5 = 0)  {
2f74: ef,51,05            call  34c8             FUEL_INJ_OUT_COM6 (); }
2f77: f0                  ret                    return;

2f78: d0,02               word    2d0
2f7a: e0,01               word    1e0
2f7c: 68,01               word    168

   SPARK_RETARD_LOGIC:
2f7e: e0,54,04            djnz  R54,2f85         R54--;
                                                 if (R54 != 0) goto 2f85;
2f81: af,fa,4d,54         ldzbw R54,[Rfa+4d]     wR54 = KNKCYL; }
2f85: 9b,fa,4d,54         cmpb  R54,[Rfa+4d]     
2f89: d9,f6               jgtu  2f81             if (R54 > KNKCYL) goto 2f81;
2f8b: f0                  ret                    return;

   SPOUT_CALCULATION:
2f8c: af,e6,b9,54         ldzbw R54,[Re6+b9]     wR54 = Pip_counter;
2f90: 36,4f,22            jnb   B6,R4f,2fb5      if (B6_KNOCK_STRATEGY_4f = 1)  {
2f93: 37,4f,1f            jnb   B7,R4f,2fb5      if (B7_KNOCK_OCCURRED_4f = 1)  {
2f96: 98,9d,00            cmpb  R0,R9d           
2f99: d7,1a               jne   2fb5             if (TIPRET = 0)  {
2f9b: b3,55,d0,01,56      ldb   R56,[R54+1d0]    R56 = [R54+1d0];
2fa0: 7b,e6,b0,56         sb2b  R56,[Re6+b0]     R56 -= RETINC;                    # SPKAD(n-1) = SPKAD(n-1) - RETINC
2fa4: dd,06               jv    2fac             if (R56 < 0)  {
2fa6: 9b,fa,38,56         cmpb  R56,[Rfa+38]     
2faa: d6,04               jge   2fb0             if (R56 >= RETLIM) goto 2fb0; }
2fac: b3,fa,38,56         ldb   R56,[Rfa+38]     R56 = RETLIM; }                   # (Clip min. SPKAD(n-1) to RETLIM)
2fb0: c7,55,d0,01,56      stb   R56,[R54+1d0]    [R54+1d0] = R56; } } }
2fb5: 2f,c7               scall 2f7e             SPARK_RETARD_LOGIC ();
2fb7: c7,e6,b9,54         stb   R54,[Re6+b9]     Pip_counter = R54;
2fbb: 98,00,9d            cmpb  R9d,R0           

# The following Tip-in logic is checked every rising edge of PIP:
2fbe: d7,1f               jne   2fdf             if (TIPRET = 0)  {
2fc0: 34,51,1c            jnb   B4,R51,2fdf      if (B4_TIPFLG_51 = 1)  {
2fc3: 3b,51,0f            jb    B3,R51,2fd5      if (B3_CTFLG_51 = 0)  {
2fc6: 36,4f,16            jnb   B6,R4f,2fdf      if (B6_KNOCK_STRATEGY_4f = 0) goto 2fdf;
2fc9: 37,4f,13            jnb   B7,R4f,2fdf      if (B7_KNOCK_OCCURRED_4f = 0) goto 2fdf;
2fcc: b3,fa,4d,58         ldb   R58,[Rfa+4d]     R58 = KNKCYL;
2fd0: 99,01,58            cmpb  R58,1            
2fd3: df,0a               je    2fdf             if (R58 = 1) goto 2fdf; }
2fd5: b3,fa,39,9d         ldb   R9d,[Rfa+39]     TIPRET = TIPMAX;
2fd9: c3,e4,1c,b2         stw   Rb2,[Re4+1c]     TBART = TP;
2fdd: 20,0e               sjmp  2fed             goto 2fed; } } } } }

2fdf: b0,9d,58            ldb   R58,R9d          R58 = TIPRET;
2fe2: 77,fa,3a,58         ad2b  R58,[Rfa+3a]     R58 += TIPINC;
2fe6: da,02               jle   2fea             if (R58 > 0)  {
2fe8: 11,58               clrb  R58              R58 = 0; }                        # (Clip MAX TIPRET to 0)
2fea: c4,9d,58            stb   R58,R9d          TIPRET = R58;
2fed: b0,9d,56            ldb   R56,R9d          R56 = TIPRET;
2ff0: 36,4f,0c            jnb   B6,R4f,2fff      if (B6_KNOCK_STRATEGY_4f = 1)  {
2ff3: 2f,89               scall 2f7e             SPARK_RETARD_LOGIC ();
2ff5: 77,55,d0,01,56      ad2b  R56,[R54+1d0]    R56 += [R54+1d0];                 # SPKAD(n+1)
2ffa: d5,03               jnv   2fff             if (R56 > ff)  {
2ffc: b1,80,56            ldb   R56,80           R56 = 80; } }
2fff: 16,56               sexb  R56              swR56 = R56;
3001: 44,cc,56,58         ad3w  R58,R56,Rcc      R58 = R56 + SAF;                  # CALCULATED SPARK OUT (n+1) = SAF + SPKAD(n+1) + TIPRET
3005: bf,fa,0b,56         ldsbw R56,[Rfa+b]      swR56 = SPLCLP;
3009: 88,56,58            cmpw  R58,R56          
300c: d6,05               jge   3013             if (R58 < R56)  {
300e: a0,56,58            ldw   R58,R56          R58 = R56;
3011: 20,0c               sjmp  301f             goto 301f; }

3013: af,fa,0c,56         ldzbw R56,[Rfa+c]      wR56 = SPUCLP;
3017: 88,56,58            cmpw  R58,R56          
301a: da,03               jle   301f             if (R58 > R56)  {
301c: a0,56,58            ldw   R58,R56          R58 = R56; }
301f: c3,e8,0e,58         stw   R58,[Re8+e]      SAFTOT = R58;                     # SAFTOT = SAF + SPKAD(n) + TIPRET
3023: af,f6,05,5a         ldzbw R5a,[Rf6+5]      wR5a = ENGCYL;
3027: a3,5b,74,2f,5a      ldw   R5a,[R5a+2f74]   R5a = [R5a+2f74];
302c: 45,28,00,5a,56      ad3w  R56,R5a,28       R56 = R5a + 28;
3031: 68,58,56            sb2w  R56,R58          R56 -= R58;
3034: 01,54               clrw  R54              R54 = 0;
3036: 09,01,5a            shlw  R5a,1            R5a <<= 1;
3039: 8c,5a,54            divw  R54,R5a          wR54 /= R5a;
303c: d5,06               jnv   3044             if (OVF = 1)  {
303e: a3,e4,22,5c         ldw   R5c,[Re4+22]     R5c = [1a2];
3042: 20,17               sjmp  305b             goto 305b; }

3044: c0,5c,54            stw   R54,R5c          R5c = R54;
3047: a3,e4,22,54         ldw   R54,[Re4+22]     R54 = [1a2];
304b: 6b,fa,4a,54         sb2w  R54,[Rfa+4a]     R54 -= SPKLIM;
304f: 88,5c,54            cmpw  R54,R5c          
3052: d1,03               jleu  3057             if (R54 > R5c)  {
3054: a0,54,5c            ldw   R5c,R54          R5c = R54; }
3057: c3,e4,22,5c         stw   R5c,[Re4+22]     [1a2] = R5c;
305b: 38,4f,06            jb    B0,R4f,3064      if (B0_PIP_DOUBLE_4f = 0)  {
305e: 4c,5c,c4,54         ml3w  R54,Rc4,R5c      lR54 = DT12S * R5c;
3062: 20,5f               sjmp  30c3             goto 30c3; }

3064: 49,00,40,5c,54      sb3w  R54,R5c,4000     R54 = R5c - 4000;
3069: 09,01,54            shlw  R54,1            R54 <<= 1;
306c: b3,e6,48,56         ldb   R56,[Re6+48]     R56 = TLOFLG;
3070: 37,56,36            jnb   B7,R56,30a9      if (B7_R56 = 1)  {
3073: a3,f6,0c,56         ldw   R56,[Rf6+c]      R56 = TRSRPM;
3077: 88,56,b4            cmpw  Rb4,R56          
307a: d9,11               jgtu  308d             if (N_RPM <= R56)  {
307c: 6b,f6,0e,56         sb2w  R56,[Rf6+e]      R56 -= TRSRPH;
3080: d3,08               jnc   308a             if (R56 >= 0)  {
3082: 88,56,b4            cmpw  Rb4,R56          
3085: db,03               jc    308a             if (N_RPM < R56)  {
3087: 71,fe,51            an2b  R51,fe           B0_R51 = 0; } }
308a: 30,51,1c            jnb   B0,R51,30a9      if (B0_R51 = 0) goto 30a9; }
308d: 91,01,51            orb   R51,1            B0_R51 = 1;
3090: a3,e6,0e,58         ldw   R58,[Re6+e]      R58 = PHFDLT;
3094: 6c,ca,58            ml2w  R58,Rca          lR58 *= MKAY;
3097: 0d,01,58            shldw R58,1            lR58 <<= 1;
309a: 48,5a,c4,5a         sb3w  R5a,Rc4,R5a      R5a = DT12S - R5a;
309e: 01,58               clrw  R58              R58 = 0;
30a0: 0c,01,58            shrdw R58,1            lR58 >>= 1;
30a3: 8f,e6,0e,58         divw  R58,[Re6+e]      wR58 /= PHFDLT;
30a7: d5,03               jnv   30ac             if (OVF = 0) goto 30ac; } }
30a9: a0,ca,58            ldw   R58,Rca          R58 = MKAY; }
30ac: 6c,58,54            ml2w  R54,R58          lR54 *= R58;
30af: a0,ca,54            ldw   R54,Rca          R54 = MKAY;
30b2: 08,01,54            shrw  R54,1            R54 >>= 1;
30b5: 64,54,56            ad2w  R56,R54          R56 += R54;
30b8: 69,00,40,56         sb2w  R56,4000         R56 -= 4000;
30bc: 09,01,56            shlw  R56,1            R56 <<= 1;
30bf: 4c,c8,56,54         ml3w  R54,R56,Rc8      lR54 = wR56 * HFDLTA;
30c3: 0d,01,54            shldw R54,1            lR54 <<= 1;
30c6: 75,80,55            ad2b  R55,80           R55 += 80;
30c9: a4,00,56            adcw  R56,R0           R56 += CY;
30cc: 32,e1,22            jnb   B2,Re1,30f1      if (B2_CCD_HP = 1)  {
30cf: 30,4f,1f            jnb   B0,R4f,30f1      if (B0_PIP_DOUBLE_4f = 1)  {
30d2: a3,fa,4a,58         ldw   R58,[Rfa+4a]     R58 = SPKLIM;
30d6: 6c,c8,58            ml2w  R58,Rc8          lR58 *= HFDLTA;
30d9: 0d,02,58            shldw R58,2            lR58 <<= 2;
30dc: 48,5a,56,58         sb3w  R58,R56,R5a      R58 = R56 - R5a;
30e0: c3,e8,66,58         stw   R58,[Re8+66]     NEXT_SPOUT_ADVANCED = R58;
30e4: 4b,e8,5c,56,58      sb3w  R58,R56,[Re8+5c] R58 = R56 - DWELL;
30e9: db,02               jc    30ed             if (R58 < 0)  {
30eb: 01,58               clrw  R58              R58 = 0; }
30ed: c3,e8,6e,58         stw   R58,[Re8+6e]     SPOUT_ICCD_DELTA = R58; } }
30f1: 91,04,28            orb   R28,4            B2_NEWSA_28 = 1;
30f4: 32,50,11            jnb   B2,R50,3108      if (B2_Douple_edge = 1)  {
30f7: 89,a1,01,56         cmpw  R56,1a1          
30fb: d1,06               jleu  3103             if (R56 > 1a1)  {
30fd: 8b,f6,06,c4         cmpw  Rc4,[Rf6+6]      
3101: db,03               jc    3106             if (DT12S >= SPKSWH) goto 3106; }
3103: 71,fb,50            an2b  R50,fb           B2_Douple_edge = 0; }
3106: 20,13               sjmp  311b             goto 311b; }

3108: 48,c8,56,54         sb3w  R54,R56,Rc8      R54 = R56 - HFDLTA;
310c: 89,f4,01,54         cmpw  R54,1f4          
3110: da,09               jle   311b             if (R54 > 1f4)  {
3112: 8b,f6,08,c4         cmpw  Rc4,[Rf6+8]      
3116: d1,03               jleu  311b             if (DT12S > SPKSWL)  {
3118: 91,04,50            orb   R50,4            B2_Douple_edge = 1; } }
311b: c3,e6,d6,56         stw   R56,[Re6+d6]     [256] = R56;
311f: 71,bf,9e            an2b  R9e,bf           B6_Reg_9e = 0;
3122: 30,4f,11            jnb   B0,R4f,3136      if (B0_PIP_DOUBLE_4f = 1)  {
3125: 32,e1,0e            jnb   B2,Re1,3136      if (B2_CCD_HP = 1)  {
3128: 33,49,0b            jnb   B3,R49,3136      if (DWLELD = 1)  {
312b: 71,7f,53            an2b  R53,7f           B7_R53 = 0;
312e: a1,e2,22,88         ldw   R88,22e2         TablePTR = 22e2;
3132: 28,9e               scall 31d2             Sub_31d2 ();
3134: 20,05               sjmp  313b             goto 313b; } } }

3136: 91,80,53            orb   R53,80           B7_R53 = 1;
3139: 28,3e               scall 3179             Update_HTime_prev ();
313b: a1,44,02,70         ldw   R70,244          Rtab = 244;
313f: 9b,70,01,00         cmpb  R0,[R70+1]       
3143: d6,19               jge   315e             if ([Rtab+1] > 0)  {
3145: 91,01,50            orb   R50,1            B0_Spout_pending = 1;
3148: 4b,70,02,72,54      sb3w  R54,R72,[R70+2]  R54 = HSO_time - [Rtab+2];
314d: 37,55,0d            jnb   B7,R55,315d      if (B7_R55 = 1)  {
3150: 91,08,4c            orb   R4c,8            B3_Immediate = 1;
3153: af,70,01,88         ldzbw R88,[R70+1]      TablePTR = [Rtab+1];
3157: 65,c8,22,88         ad2w  R88,22c8         TablePTR += HSO_Table;
315b: ca,88               push  [R88]            push([TablePTR]); }
315d: f0                  ret                    return; }

315e: 3f,53,04            jb    B7,R53,3165      if (B7_R53 = 0)  {
3161: ef,fa,f8            call  2a5e             Do_Cmd_P ();
3164: f0                  ret                    return; }

3165: ef,e4,f8            call  2a4c             Do_Cmd_N ();
3168: f0                  ret                    return;

   Update_HTime_pend:
3169: 38,50,0a            jb    B0,R50,3176      if (B0_Spout_pending = 0)  {
316c: 3c,49,0a            jb    B4,R49,3179      if (B4_R49 = 1) goto Update_HTime_prev;
316f: c7,70,01,00         stb   R0,[R70+1]       [Rtab+1] = 0;
3173: cc,00               pop   R0               R0 = pop();
3175: f0                  ret                    return; }

3176: 71,fe,50            an2b  R50,fe           B0_Spout_pending = 0; }
   Update_HTime_prev:
3179: 3f,53,17            jb    B7,R53,3193      if (B7_R53 = 0)  {
317c: 71,ef,49            an2b  R49,ef           B4_R49 = 0;
317f: a3,e8,72,72         ldw   R72,[Re8+72]     HSO_time = SPOUT_LOW_EDGE;
3183: b3,e8,74,74         ldb   R74,[Re8+74]     HSO_timeH = SPOUT_LOW_EDGE_H;
3187: 67,e8,5c,72         ad2w  R72,[Re8+5c]     HSO_time += DWELL;
318b: b4,00,74            adcb  R74,R0           HSO_timeH += CY;
318e: 91,40,9e            orb   R9e,40           B6_Reg_9e = 1;
3191: 20,35               sjmp  31c8             goto 31c8; }

3193: 30,4f,19            jnb   B0,R4f,31af      if (B0_PIP_DOUBLE_4f = 1)  {
3196: 32,e1,16            jnb   B2,Re1,31af      if (B2_CCD_HP = 1)  {
3199: a3,e8,66,54         ldw   R54,[Re8+66]     R54 = NEXT_SPOUT_ADVANCED;
319d: 6b,e8,5c,54         sb2w  R54,[Re8+5c]     R54 -= DWELL;
31a1: d3,0c               jnc   31af             if (R54 >= 0)  {
31a3: 89,f4,01,54         cmpw  R54,1f4          
31a7: d3,06               jnc   31af             if (R54 >= 1f4)  {
31a9: 91,08,49            orb   R49,8            DWLELD = 1;
31ac: 91,40,9e            orb   R9e,40           B6_Reg_9e = 1; } } } }
31af: 71,ef,49            an2b  R49,ef           B4_R49 = 0;
31b2: a0,7a,72            ldw   R72,R7a          HSO_time = LAST_HI_PIP;
31b5: b0,7c,74            ldb   R74,R7c          HSO_timeH = Prev_PIP_timeH;
31b8: 67,e6,d6,72         ad2w  R72,[Re6+d6]     HSO_time += [256];
31bc: b4,00,74            adcb  R74,R0           HSO_timeH += CY;
31bf: 30,4f,06            jnb   B0,R4f,31c8      if (B0_PIP_DOUBLE_4f = 1)  {
31c2: 64,c8,72            ad2w  R72,Rc8          HSO_time += HFDLTA;
31c5: b4,00,74            adcb  R74,R0           HSO_timeH += CY; }
31c8: c3,e8,76,72         stw   R72,[Re8+76]     SPOUT_HIGH_EDGE = HSO_time;
31cc: c7,e8,78,74         stb   R74,[Re8+78]     SPOUT_HIGH_EDGE_H = HSO_timeH;
31d0: f8                  clc                    CY = 0;
31d1: f0                  ret                    return;

   Sub_31d2:
31d2: 32,53,08            jnb   B2,R53,31dd      if (B2_R53 = 1)  {
31d5: 71,fb,53            an2b  R53,fb           B2_R53 = 0;
31d8: ef,55,02            call  3430             DWELL_CALCULATION ();
31db: 20,3f               sjmp  321c             goto 321c; }

31dd: 36,9e,0b            jnb   B6,R9e,31eb      if (B6_Reg_9e = 1)  {
31e0: 71,bf,9e            an2b  R9e,bf           B6_Reg_9e = 0;
31e3: 71,7f,53            an2b  R53,7f           B7_R53 = 0;
31e6: 71,fe,50            an2b  R50,fe           B0_Spout_pending = 0;
31e9: 27,7e               sjmp  3169             goto Update_HTime_pend; }

31eb: 3f,53,2e            jb    B7,R53,321c      if (B7_R53 = 0)  {
31ee: a0,7a,72            ldw   R72,R7a          HSO_time = LAST_HI_PIP;
31f1: b0,7c,74            ldb   R74,R7c          HSO_timeH = Prev_PIP_timeH;
31f4: 64,c8,72            ad2w  R72,Rc8          HSO_time += HFDLTA;
31f7: b4,00,74            adcb  R74,R0           HSO_timeH += CY;
31fa: 67,e8,6e,72         ad2w  R72,[Re8+6e]     HSO_time += SPOUT_ICCD_DELTA;
31fe: b4,00,74            adcb  R74,R0           HSO_timeH += CY;
3201: 91,10,49            orb   R49,10           B4_R49 = 1;
3204: a3,e8,66,54         ldw   R54,[Re8+66]     R54 = NEXT_SPOUT_ADVANCED;
3208: 6b,e8,5c,54         sb2w  R54,[Re8+5c]     R54 -= DWELL;
320c: d3,06               jnc   3214             if (R54 >= 0)  {
320e: 89,a1,01,54         cmpw  R54,1a1          
3212: db,1a               jc    322e             if (R54 >= 1a1) goto 322e; }
3214: 71,f7,49            an2b  R49,f7           DWLELD = 0;
3217: 91,04,53            orb   R53,4            B2_R53 = 1;
321a: 20,12               sjmp  322e             goto 322e; }

321c: 71,f7,49            an2b  R49,f7           DWLELD = 0;
321f: a3,e8,76,72         ldw   R72,[Re8+76]     HSO_time = SPOUT_HIGH_EDGE;
3223: b3,e8,78,74         ldb   R74,[Re8+78]     HSO_timeH = SPOUT_HIGH_EDGE_H;
3227: 67,e8,70,72         ad2w  R72,[Re8+70]     HSO_time += SPOUT_LOW_DELTA;
322b: b4,00,74            adcb  R74,R0           HSO_timeH += CY; }
322e: c3,e8,72,72         stw   R72,[Re8+72]     SPOUT_LOW_EDGE = HSO_time;
3232: c7,e8,74,74         stb   R74,[Re8+74]     SPOUT_LOW_EDGE_H = HSO_timeH;
3236: f8                  clc                    CY = 0;
3237: f0                  ret                    return;

   KNOCK_THRESHOLD_SENSE_(KTS)_LOGIC:
3238: 8b,fa,48,b4         cmpw  Rb4,[Rfa+48]     
323c: d1,12               jleu  3250             if (N_RPM > RPMCNL)  {
323e: 9b,fa,4e,9c         cmpb  R9c,[Rfa+4e]     
3242: db,0c               jc    3250             if (R9c < WINCLD)  {
3244: 33,4f,03            jnb   B3,R4f,324a      if (B3_KNOCK_DETECTED_4f = 1)  {
3247: 17,9c               incb  R9c              R9c++;
3249: f0                  ret                    return; }

324a: 32,51,03            jnb   B2,R51,3250      if (B2_SIGPIP_51 = 1)  {
324d: 17,9c               incb  R9c              R9c++;
324f: f0                  ret                    return; } } }

3250: 11,9c               clrb  R9c              R9c = 0;
3252: a1,62,02,70         ldw   R70,262          Rtab = 262;
3256: 9b,70,01,00         cmpb  R0,[R70+1]       
325a: df,04               je    3260             if ([Rtab+1] != 0)  {
325c: 91,20,50            orb   R50,20           B5_Flags_50 = 1;
325f: f0                  ret                    return; }

3260: 28,15               scall 3277             Sub_3277 ();
3262: a1,ca,22,88         ldw   R88,22ca         TablePTR = 22ca;
3266: ef,e3,f7            call  2a4c             Do_Cmd_N ();
3269: f0                  ret                    return;

   Add_H_Beta:
326a: 3d,50,07            jb    B5,R50,3274      if (B5_Flags_50 = 0)  {
326d: c7,70,01,00         stb   R0,[R70+1]       [Rtab+1] = 0;
3271: cc,00               pop   R0               R0 = pop();
3273: f0                  ret                    return; }

3274: 71,df,50            an2b  R50,df           B5_Flags_50 = 0;
   Sub_3277:
3277: 4c,ca,c8,54         ml3w  R54,Rc8,Rca      lR54 = HFDLTA * MKAY;
327b: 99,40,57            cmpb  R57,40           
327e: db,12               jc    3292             if (R57 < 40)  {
3280: 0d,02,54            shldw R54,2            lR54 <<= 2;
3283: a0,56,54            ldw   R54,R56          R54 = R56;
3286: 6f,e4,18,54         ml2w  R54,[Re4+18]     lR54 *= KTS_timing;
328a: 3f,57,05            jb    B7,R57,3292      if (B7_R57 = 0)  {
328d: 0d,01,54            shldw R54,1            lR54 <<= 1;
3290: 20,03               sjmp  3295             goto 3295; } }

3292: bd,ff,56            ldsbw R56,ff           swR56 = ff;
3295: 44,7a,56,72         ad3w  R72,R56,R7a      HSO_time = R56 + LAST_HI_PIP;
3299: b0,7c,74            ldb   R74,R7c          HSO_timeH = Prev_PIP_timeH;
329c: b4,00,74            adcb  R74,R0           HSO_timeH += CY;
329f: f8                  clc                    CY = 0;
32a0: f0                  ret                    return;

   Add_H_Delta:
32a1: 67,e4,1a,72         ad2w  R72,[Re4+1a]     HSO_time += KTS_pulsewidth;
32a5: 27,f5               sjmp  329c             goto 329c;

   EOS_KAY_CALCULATIONS:
32a7: 32,51,03            jnb   B2,R51,32ad      if (B2_SIGPIP_51 = 1)  {
32aa: 3f,27,02            jb    B7,R27,32af      if (B7_SYNFLG = 1) goto 32af; }
32ad: 20,7d               sjmp  332c             goto 332c; }

# Do Signature Kay Calculation
32af: 4b,e6,52,c4,54      sb3w  R54,Rc4,[Re6+52] R54 = DT12S - DTSIG;
32b4: db,02               jc    32b8             if (R54 < 0)  {
32b6: 03,54               negw  R54              R54 = -R54; }
32b8: c3,e6,52,c4         stw   Rc4,[Re6+52]     DTSIG = DT12S;
32bc: a3,f8,2e,58         ldw   R58,[Rf8+2e]     R58 = SKSSLC;
32c0: 6c,c4,58            ml2w  R58,Rc4          lR58 *= DT12S;
32c3: 88,5a,54            cmpw  R54,R5a          
32c6: db,64               jc    332c             if (R54 < R5a)  {
32c8: 4b,e6,0c,c4,54      sb3w  R54,Rc4,[Re6+c]  R54 = DT12S - DT23S;
32cd: db,02               jc    32d1             if (R54 < 0)  {
32cf: 03,54               negw  R54              R54 = -R54; }
32d1: 88,5a,54            cmpw  R54,R5a          
32d4: db,56               jc    332c             if (R54 < R5a)  {
32d6: a3,e6,4e,54         ldw   R54,[Re6+4e]     R54 = SIGDLT;
32da: c0,58,54            stw   R54,R58          R58 = R54;
32dd: c0,5c,54            stw   R54,R5c          R5c = R54;
32e0: 6b,e6,50,54         sb2w  R54,[Re6+50]     R54 -= PSGDLT;
32e4: db,02               jc    32e8             if (R54 < 0)  {
32e6: 03,54               negw  R54              R54 = -R54; }
32e8: a3,f8,2e,5a         ldw   R5a,[Rf8+2e]     R5a = SKSSLC;
32ec: 6c,5a,58            ml2w  R58,R5a          lR58 *= R5a;
32ef: 88,5a,54            cmpw  R54,R5a          
32f2: db,38               jc    332c             if (R54 < R5a)  {
32f4: a0,c4,5a            ldw   R5a,Rc4          R5a = DT12S;
32f7: 01,58               clrw  R58              R58 = 0;
32f9: 0c,02,58            shrdw R58,2            lR58 >>= 2;
32fc: 8c,5c,58            divw  R58,R5c          wR58 /= R5c;
32ff: dd,2b               jv    332c             if (OVF = 0)  {
3301: a3,f8,30,54         ldw   R54,[Rf8+30]     R54 = FKSKAY;
3305: 6c,54,58            ml2w  R58,R54          lR58 *= R54;
3308: 03,54               negw  R54              R54 = -R54;
330a: a3,e6,4c,56         ldw   R56,[Re6+4c]     R56 = SIGKAL;
330e: 6c,56,54            ml2w  R54,R56          lR54 *= R56;
3311: 64,56,5a            ad2w  R5a,R56          R5a += R56;
3314: 8b,f8,32,5a         cmpw  R5a,[Rf8+32]     
3318: db,04               jc    331e             if (R5a < SIGKLL)  {
331a: a3,f8,32,5a         ldw   R5a,[Rf8+32]     R5a = SIGKLL; }
331e: 8b,f8,34,5a         cmpw  R5a,[Rf8+34]     
3322: d1,04               jleu  3328             if (R5a > SIGKLU)  {
3324: a3,f8,34,5a         ldw   R5a,[Rf8+34]     R5a = SIGKLU; }
3328: c3,e6,4c,5a         stw   R5a,[Re6+4c]     SIGKAL = R5a; } } } }

# MKAY CALC. ENTRY POINT
332c: 9b,f6,05,c7         cmpb  Rc7,[Rf6+5]      
3330: d1,0c               jleu  333e             if (KAYCTR > ENGCYL)  {
3332: b1,01,c7            ldb   Rc7,1            KAYCTR = 1;
3335: c3,e6,6e,c4         stw   Rc4,[Re6+6e]     DTPCYC = DT12S;
3339: c3,e6,70,c8         stw   Rc8,[Re6+70]     HFPCYC = HFDLTA;
333d: f0                  ret                    return; }

333e: 17,c7               incb  Rc7              KAYCTR++;
3340: 9b,f6,05,c7         cmpb  Rc7,[Rf6+5]      
3344: d1,70               jleu  33b6             if (KAYCTR > ENGCYL)  {
3346: 3a,51,6d            jb    B2,R51,33b6      if (B2_SIGPIP_51 = 0)  {

# Do MKAY Kay Calculation
3349: 4b,e6,6e,c4,54      sb3w  R54,Rc4,[Re6+6e] R54 = DT12S - DTPCYC;
334e: db,02               jc    3352             if (R54 < 0)  {
3350: 03,54               negw  R54              R54 = -R54; }
3352: a3,f8,2c,56         ldw   R56,[Rf8+2c]     R56 = SSFCTR;
3356: 4c,56,c4,58         ml3w  R58,Rc4,R56      lR58 = DT12S * R56;
335a: 88,5a,54            cmpw  R54,R5a          
335d: d9,57               jgtu  33b6             if (R54 <= R5a)  {
335f: 4b,e6,70,c8,54      sb3w  R54,Rc8,[Re6+70] R54 = HFDLTA - HFPCYC;
3364: db,02               jc    3368             if (R54 < 0)  {
3366: 03,54               negw  R54              R54 = -R54; }
3368: 4c,56,c8,58         ml3w  R58,Rc8,R56      lR58 = HFDLTA * R56;
336c: 88,5a,54            cmpw  R54,R5a          
336f: d9,45               jgtu  33b6             if (R54 <= R5a)  {
3371: 01,58               clrw  R58              R58 = 0;
3373: 47,e6,6e,c4,5a      ad3w  R5a,Rc4,[Re6+6e] R5a = DT12S + DTPCYC;
3378: db,3c               jc    33b6             if (R5a <= ffff)  {
337a: 0c,02,58            shrdw R58,2            lR58 >>= 2;
337d: 47,e6,70,c8,54      ad3w  R54,Rc8,[Re6+70] R54 = HFDLTA + HFPCYC;
3382: db,32               jc    33b6             if (R54 <= ffff)  {
3384: 8c,54,58            divw  R58,R54          wR58 /= R54;
3387: dd,2d               jv    33b6             if (OVF = 0)  {
3389: 89,99,99,58         cmpw  R58,9999         
338d: db,27               jc    33b6             if (R58 < 9999)  {                #  mkay' < 1.2
338f: a3,fe,06,54         ldw   R54,[Rfe+6]      R54 = FKMKAY;
3393: 03,54               negw  R54              R54 = -R54;
3395: 4c,54,ca,54         ml3w  R54,Rca,R54      lR54 = MKAY * R54;
3399: 6f,fe,06,58         ml2w  R58,[Rfe+6]      lR58 *= FKMKAY;
339d: 44,56,5a,ca         ad3w  Rca,R5a,R56      MKAY = R5a + R56;
33a1: 89,33,73,ca         cmpw  Rca,7333         
33a5: db,05               jc    33ac             if (MKAY < 7333)  {               # KLLIM Lowest value for MKAY multiplier - initial value = 0.9.
33a7: a1,33,73,ca         ldw   Rca,7333         MKAY = 7333;
33ab: f0                  ret                    return; }

33ac: 89,cd,8c,ca         cmpw  Rca,8ccd         
33b0: d1,04               jleu  33b6             if (MKAY > 8ccd)  {               # KULMT Highest value for MKAY multiplier - initial value = 1.1.
33b2: a1,cd,8c,ca         ldw   Rca,8ccd         MKAY = 8ccd; } } } } } } } } }
33b6: f0                  ret                    return;

   TRANSIENT_SPARK-COMPENSATION:
33b7: a0,c8,58            ldw   R58,Rc8          R58 = HFDLTA;
33ba: 6c,ca,58            ml2w  R58,Rca          lR58 *= MKAY;
33bd: 99,40,5b            cmpb  R5b,40           
33c0: d3,02               jnc   33c4             if (R5b >= 40)  {
33c2: 20,6b               sjmp  342f             return; }

33c4: 0d,02,58            shldw R58,2            lR58 <<= 2;
33c7: 48,5a,c4,54         sb3w  R54,Rc4,R5a      R54 = DT12S - R5a;                # DIFF0 = | DT12S - 2 * HFDLTA * MKAY |
33cb: db,02               jc    33cf             if (R54 < 0)  {
33cd: 03,54               negw  R54              R54 = -R54; }
33cf: a3,e6,0c,58         ldw   R58,[Re6+c]      R58 = DT23S;
33d3: 6b,e6,0e,58         sb2w  R58,[Re6+e]      R58 -= PHFDLT;
33d7: 6c,c8,58            ml2w  R58,Rc8          lR58 *= HFDLTA;
33da: 8f,e6,0e,58         divw  R58,[Re6+e]      wR58 /= PHFDLT;
33de: dd,4f               jv    342f             if (OVF = 0)  {
33e0: 64,c8,58            ad2w  R58,Rc8          R58 += HFDLTA;
33e3: db,4a               jc    342f             if (R58 <= ffff)  {
33e5: 48,58,c4,56         sb3w  R56,Rc4,R58      R56 = DT12S - R58;                # DIFF1 = | DT12S - HFDLTA - (HFDLTA * (DT23S - PHFDLT))/PHFDLT |
33e9: db,02               jc    33ed             if (R56 < 0)  {
33eb: 03,56               negw  R56              R56 = -R56; }
33ed: b3,e6,48,58         ldb   R58,[Re6+48]     R58 = TLOFLG;
33f1: 11,5a               clrb  R5a              R5a = 0;
33f3: 88,56,54            cmpw  R54,R56          
33f6: d9,17               jgtu  340f             if (R54 <= R56)  {                # DIFF0 <= DIFF1
33f8: 37,58,0a            jnb   B7,R58,3405      if (B7_TLOFLG_58 = 1)  {
33fb: b3,e6,49,5a         ldb   R5a,[Re6+49]     R5a = DIFCTR;
33ff: 17,5a               incb  R5a              R5a++;
3401: d3,02               jnc   3405             if (R5a > ff)  {
3403: 15,5a               decb  R5a              R5a--; } }
3405: 9b,f6,10,5a         cmpb  R5a,[Rf6+10]     
3409: d3,20               jnc   342b             if (R5a < DFMIN0) goto 342b;      # No change to TLOFLG
340b: 11,58               clrb  R58              R58 = 0;
340d: 20,16               sjmp  3425             goto 3425; }

340f: 3f,58,0a            jb    B7,R58,341c      if (B7_TLOFLG_58 = 0)  {
3412: b3,e6,49,5a         ldb   R5a,[Re6+49]     R5a = DIFCTR;
3416: 17,5a               incb  R5a              R5a++;
3418: d3,02               jnc   341c             if (R5a > ff)  {
341a: 15,5a               decb  R5a              R5a--; } }
341c: 9b,f6,11,5a         cmpb  R5a,[Rf6+11]     
3420: d3,09               jnc   342b             if (R5a >= DFMIN1)  {
3422: b1,80,58            ldb   R58,80           R58 = 80;
3425: c7,e6,48,58         stb   R58,[Re6+48]     TLOFLG = R58;
3429: 11,5a               clrb  R5a              R5a = 0; } }
342b: c7,e6,49,5a         stb   R5a,[Re6+49]     DIFCTR = R5a; } }
342f: f0                  ret                    return;

   DWELL_CALCULATION:
3430: a0,c8,5a            ldw   R5a,Rc8          R5a = HFDLTA;
3433: 3a,e1,0a            jb    B2,Re1,3440      if (B2_CCD_HP = 0)  {
3436: 9b,fe,30,00         cmpb  R0,[Rfe+30]      
343a: d7,02               jne   343e             if (IGN_TYPE = 0)  {              # 0 = Thick Film Ignition (TFI)
343c: 20,85               sjmp  34c3             goto 34c3; }

343e: 20,87               sjmp  34c7             return; }

3440: 3b,49,fb            jb    B3,R49,343e      if (DWLELD = 1) goto 343e;
3443: 4d,44,28,c4,58      ml3w  R58,Rc4,2844     lR58 = DT12S * 2844;
3448: 8b,e8,6c,5a         cmpw  R5a,[Re8+6c]     
344c: d3,23               jnc   3471             if (R5a >= PPERENG)  {
344e: a3,f0,70,54         ldw   R54,[Rf0+70]     R54 = PACSLO;
3452: 6c,5a,54            ml2w  R54,R5a          lR54 *= R5a;
3455: 0c,04,54            shrdw R54,4            lR54 >>= 4;
3458: 88,56,00            cmpw  R0,R56           
345b: d7,0e               jne   346b             if (R56 = 0)  {
345d: 6b,e8,6a,54         sb2w  R54,[Re8+6a]     R54 -= POFFENG;
3461: db,02               jc    3465             if (R54 < 0)  {
3463: 01,54               clrw  R54              R54 = 0; }
3465: 8b,f0,6a,54         cmpw  R54,[Rf0+6a]     
3469: d1,09               jleu  3474             if (R54 <= PACLIM) goto 3474; }
346b: a3,f0,6a,54         ldw   R54,[Rf0+6a]     R54 = PACLIM;
346f: 20,03               sjmp  3474             goto 3474; }

3471: a0,5a,54            ldw   R54,R5a          R54 = R5a; }
3474: c3,e8,68,54         stw   R54,[Re8+68]     PIPACL = R54;
3478: 67,fa,4a,54         ad2w  R54,[Rfa+4a]     R54 += SPKLIM;
347c: 6c,c4,54            ml2w  R54,Rc4          lR54 *= DT12S;
347f: 0d,01,54            shldw R54,1            lR54 <<= 1;
3482: 67,e8,5c,56         ad2w  R56,[Re8+5c]     R56 += DWELL;
3486: 8b,f0,5e,56         cmpw  R56,[Rf0+5e]     
348a: d1,04               jleu  3490             if (R56 > DWLMAX)  {
348c: a3,f0,5e,56         ldw   R56,[Rf0+5e]     R56 = DWLMAX; }
3490: c3,e8,5e,56         stw   R56,[Re8+5e]     dwell_extra = R56;
3494: 48,56,c4,56         sb3w  R56,Rc4,R56      R56 = DT12S - R56;
3498: 01,54               clrw  R54              R54 = 0;
349a: 8c,c4,54            divw  R54,Rc4          wR54 /= DT12S;
349d: 8b,f0,66,54         cmpw  R54,[Rf0+66]     
34a1: d9,0c               jgtu  34af             if (R54 <= MINDLA)  {
34a3: 8b,f0,62,5a         cmpw  R5a,[Rf0+62]     
34a7: d1,06               jleu  34af             if (R5a > DWLTSW)  {
34a9: a3,f0,66,58         ldw   R58,[Rf0+66]     R58 = MINDLA;
34ad: 20,0a               sjmp  34b9             goto 34b9; } }

34af: 8b,f0,68,54         cmpw  R54,[Rf0+68]     
34b3: d9,09               jgtu  34be             if (R54 <= MINDLB)  {
34b5: a3,f0,68,58         ldw   R58,[Rf0+68]     R58 = MINDLB;
34b9: 6c,c4,58            ml2w  R58,Rc4          lR58 *= DT12S;
34bc: 20,05               sjmp  34c3             goto 34c3; }

34be: 4b,e8,5e,c4,5a      sb3w  R5a,Rc4,[Re8+5e] R5a = DT12S - dwell_extra;
34c3: c3,e8,70,5a         stw   R5a,[Re8+70]     SPOUT_LOW_DELTA = R5a;
34c7: f0                  ret                    return;

   FUEL_INJ_OUT_COM6:
34c8: 35,a5,11            jnb   B5,Ra5,34dc      if (B5_STALL_a5 = 1)  {
34cb: 71,df,a5            an2b  Ra5,df           B5_STALL_a5 = 0;
34ce: 71,7f,27            an2b  R27,7f           B7_SYNFLG = 0;
34d1: 11,cf               clrb  Rcf              SYNCTR = 0;
34d3: 71,7f,51            an2b  R51,7f           B7_FUEL_SYNC_51 = 0;
34d6: 91,40,51            orb   R51,40           B6_NO_SYNC_51 = 1;
34d9: b1,01,82            ldb   R82,1            INJ_PIP_CNT = 1; }
34dc: 37,a5,0a            jnb   B7,Ra5,34e9      if (b7_CRKFLG_a5 = 1)  {
34df: 34,50,06            jnb   B4,R50,34e8      if (B4_First_pip = 1)  {
34e2: 8b,e4,f0,00         cmpw  R0,[Re4+f0]      
34e6: d7,01               jne   34e9             if (BGFUEL != 0) goto 34e9; }
34e8: f0                  ret                    return; } }

34e9: b3,e4,14,54         ldb   R54,[Re4+14]     R54 = TOTAL_DELAY;
34ed: 98,54,00            cmpb  R0,R54           
34f0: d7,0c               jne   34fe             if (R54 = 0)  {
34f2: 11,54               clrb  R54              R54 = 0;
34f4: c7,e4,12,54         stb   R54,[Re4+12]     IBETA = R54;
34f8: c7,e4,13,54         stb   R54,[Re4+13]     INJCNT = R54;
34fc: 20,35               sjmp  3533             goto 3533; }

34fe: b3,e4,13,56         ldb   R56,[Re4+13]     R56 = INJCNT;
3502: 19,05,56            shlb  R56,5            R56 <<= 5;
3505: 78,56,54            sb2b  R54,R56          R54 -= R56;                       # IBETA = TOTAL_DELAY - INJCNT
3508: d3,e8               jnc   34f2             if (R54 < 0) goto 34f2;           # IBETA < 0
350a: 99,20,54            cmpb  R54,20           
350d: d3,08               jnc   3517             if (R54 >= 20)  {                 # IBETA >= 1.0
350f: 79,20,54            sb2b  R54,20           R54 -= 20;                        # IBETA = IBETA - 1
3512: 75,20,56            ad2b  R56,20           R56 += 20;                        # INJCNT = INJCNT + 1
3515: 17,82               incb  R82              INJ_PIP_CNT++; }                  # INJ_PIP_CNT = INJ_PIP_CNT + 1
3517: 18,05,56            shrb  R56,5            R56 >>= 5;
351a: c7,e4,13,56         stb   R56,[Re4+13]     INJCNT = R56;
351e: c7,e4,12,54         stb   R54,[Re4+12]     IBETA = R54;
3522: b3,f6,05,54         ldb   R54,[Rf6+5]      R54 = ENGCYL;
3526: 78,56,54            sb2b  R54,R56          R54 -= R56;                       # SYNCH_VALUE = (2 * ENGCYL) - INJCNT
3529: d1,c7               jleu  34f2             if (R54 <= 0) goto 34f2;
352b: 9b,f6,05,54         cmpb  R54,[Rf6+5]      
352f: d7,02               jne   3533             if (R54 = ENGCYL)  {              # SYNCH_VALUE = 2 * ENGCYL
3531: 11,54               clrb  R54              R54 = 0; }                        # SYNCH_VALUE = 0

Do: "FUEL FIRING PIP"
3533: 37,27,15            jnb   B7,R27,354b      if (B7_SYNFLG = 1)  {             # (PIP in synch) 
3536: 98,cf,54            cmpb  R54,Rcf          
3539: d7,10               jne   354b             if (R54 = SYNCTR)  {              # (proper PIP for fuel firing)
353b: 38,4d,0a            jb    B0,R4d,3548      if (B0_INJ_BANK_4d = 0)  {        # (signature PIP must contain bank A)
353e: 99,01,82            cmpb  R82,1            
3541: d7,05               jne   3548             if (INJ_PIP_CNT = 1)  {
3543: 91,80,51            orb   R51,80           B7_FUEL_SYNC_51 = 1;              # (PIP is synched with fuel)
3546: 20,03               sjmp  354b             goto 354b; } }

3548: 91,40,51            orb   R51,40           B6_NO_SYNC_51 = 1; } }            # (PIP is synched but fuel is on wrong bank)
354b: 15,82               decb  R82              INJ_PIP_CNT--;                    # Decrement INJ_PIP_CNT
354d: da,01               jle   3550             if (INJ_PIP_CNT > 0)  {           # EXIT "FUEL SERVICE" routine
354f: f0                  ret                    return; }                         #  (no fuel to be output this PIP)

FOREGROUND FUEL DETERMINATION
3550: a3,e4,f0,56         ldw   R56,[Re4+f0]     R56 = BGFUEL;
3554: 34,a3,3c            jnb   B4,Ra3,3593      if (B4_FFULFG_a3 = 1)  {
3557: a3,e8,0a,54         ldw   R54,[Re8+a]      R54 = FFULM;
355b: 6f,e4,a4,54         ml2w  R54,[Re4+a4]     lR54 *= MAP_WORD;
355f: 0c,08,54            shrdw R54,8            lR54 >>= 8;
3562: 88,00,56            cmpw  R56,R0           
3565: df,03               je    356a             if (R56 != 0)  {
3567: bd,ff,54            ldsbw R54,ff           swR54 = ff; }
356a: a3,e8,08,58         ldw   R58,[Re8+8]      R58 = FFULC;
356e: 64,58,54            ad2w  R54,R58          R54 += R58;
3571: 3f,59,07            jb    B7,R59,357b      if (B7_R59 = 0)  {
3574: d3,09               jnc   357f             if (R54 <= ffff) goto 357f;
3576: bd,ff,54            ldsbw R54,ff           swR54 = ff;
3579: 20,14               sjmp  358f             goto 358f; }

357b: d6,02               jge   357f             if (R54 < 0)  {
357d: 01,54               clrw  R54              R54 = 0; } }

MINIMUM PULSEWIDTH CLIP
357f: 3d,2a,0d            jb    B5,R2a,358f      if (?RUNNING? = 0)  {             # (not in VIP)
3582: 39,27,0a            jb    B1,R27,358f      if (B1_DFSFLG_R27 = 0)  {         # (not in DFSO)
3585: 8b,f4,46,54         cmpw  R54,[Rf4+46]     
3589: db,04               jc    358f             if (R54 < MINPW)  {               # FUELPW < MINPW (less than minimum pulse)
358b: a3,f4,46,54         ldw   R54,[Rf4+46]     R54 = MINPW; } } }
358f: 6d,73,cb,54         ml2w  R54,cb73         lR54 *= cb73; }                   # R54 * FREQ18
3593: a0,56,94            ldw   R94,R56          FUELPW1 = R56;                    # (convert to clock ticks)
3596: b3,e6,72,54         ldb   R54,[Re6+72]     R54 = FUEL_PIPS;
359a: 37,a5,04            jnb   B7,Ra5,35a1      if (b7_CRKFLG_a5 = 1)  {
359d: b3,f4,49,54         ldb   R54,[Rf4+49]     R54 = CRKPIP; }
35a1: 3e,a5,05            jb    B6,Ra5,35a9      if (UNDSP = 0)  {                 # (run mode) 
35a4: 36,51,02            jnb   B6,R51,35a9      if (B6_NO_SYNC_51 = 1)  {         # (fuel not synched)
35a7: 15,54               decb  R54              R54--; } }                        # Decrement INJ_PIP_CNT (walk injector bank B back 1 PIP at a time)
35a9: 98,54,00            cmpb  R0,R54           
35ac: de,03               jlt   35b1             if (R54 <= 0)  {                  # INJ_PIP_CNT <= 0
35ae: b1,01,54            ldb   R54,1            R54 = 1; }
35b1: b0,54,82            ldb   R82,R54          INJ_PIP_CNT = R54;
35b4: 71,bf,50            an2b  R50,bf           B6_FUEL_FINISHED_50 = 0;
35b7: 37,a3,03            jnb   B7,Ra3,35bd      if (B7_OUTINJ_a3 = 1)  {          # (simultaneous injections)
35ba: 71,fe,4d            an2b  R4d,fe           B0_INJ_BANK_4d = 0; }             # (always start with bank A)
35bd: 91,20,51            orb   R51,20           B5_NEW_DELAY_51 = 1;              # (request new IBETA)

FUEL_REPEAT
35c0: 3b,4a,11            jb    B3,R4a,35d4      if (B3_TLS_NV_FLG_4a = 0)  {
35c3: 3a,4a,0e            jb    B2,R4a,35d4      if (B2_TLS_24_FLG_4a = 0)  {
35c6: 39,4a,0b            jb    B1,R4a,35d4      if (B1_TLS_34_FLG_4a = 0)  {
35c9: c9,f3,35            push  35f3             push(SET_UP_INJECTOR_OUTPUT_EDGE);
35cc: b1,01,56            ldb   R56,1            R56 = 1;
35cf: c7,e8,50,56         stb   R56,[Re8+50]     TLSCTR = R56;
35d3: f0                  ret                    return; } } }

35d4: a3,e8,4e,54         ldw   R54,[Re8+4e]     R54 = TLS_SHFTR;
35d8: 09,01,54            shlw  R54,1            R54 <<= 1;                        # Shift TLS_SHFTR 1 bit to the left
35db: b3,e8,50,56         ldb   R56,[Re8+50]     R56 = TLSCTR;
35df: e0,56,07            djnz  R56,35e9         R56--;
                                                 if (R56 != 0) goto 35e9;
35e2: a3,e8,4c,54         ldw   R54,[Re8+4c]     R54 = TLSPAT;
35e6: b1,10,56            ldb   R56,10           R56 = 10; }                       # TLSCTR = 16
35e9: c3,e8,4e,54         stw   R54,[Re8+4e]     TLS_SHFTR = R54;                  # TLS_SHFTR = TLSPAT
35ed: c7,e8,50,56         stb   R56,[Re8+50]     TLSCTR = R56;
35f1: d3,2b               jnc   361e             if (B15_R54 = 1)  {               # carry bit = 1
                                                                                   # (OK to output fuel this PIP)
   SET_UP_INJECTOR_OUTPUT_EDGE:
35f3: 28,82               scall 3677             Injector_Edge ();
35f5: 36,a5,06            jnb   B6,Ra5,35fe      if (UNDSP = 1)  {
35f8: 01,54               clrw  R54              R54 = 0;
35fa: 11,56               clrb  R56              R56 = 0;
35fc: 28,85               scall 3683             Injector_Edge_Immediate_Output_Request (); }
35fe: a0,54,72            ldw   R72,R54          HSO_time = R54;
3601: b0,56,74            ldb   R74,R56          HSO_timeH = R56;
3604: 88,94,00            cmpw  R0,R94           
3607: df,15               je    361e             if (FUELPW1 != 0)  {
3609: 38,4d,09            jb    B0,R4d,3615      if (B0_INJ_BANK_4d = 0)  {
360c: 71,7f,4d            an2b  R4d,7f           B7_INJ1_PIP_4d = 0;               # (injection A occurred)
360f: a1,ea,22,88         ldw   R88,22ea         TablePTR = 22ea;
3613: 20,07               sjmp  361c             goto 361c; }

3615: 71,bf,4d            an2b  R4d,bf           B6_INJ2_PIP_4d = 0;               # (injection B occurred)
3618: a1,02,23,88         ldw   R88,2302         TablePTR = 2302;
361c: 28,6c               scall 368a             Sub_368a (); } }
361e: 36,a3,03            jnb   B6,Ra3,3624      if (B6_NUMOUT_a3 = 1)  {
3621: 95,01,4d            xorb  R4d,1            B0_INJ_BANK_4d ^= 1; }            # Toggle INJ_BANK (do next bank)
3624: 36,a3,17            jnb   B6,Ra3,363e      if (B6_NUMOUT_a3 = 1)  {
3627: 3e,50,14            jb    B6,R50,363e      if (B6_FUEL_FINISHED_50 = 0)  {
362a: 3f,a5,09            jb    B7,Ra5,3636      if (b7_CRKFLG_a5 = 0)  {
362d: 3f,a3,06            jb    B7,Ra3,3636      if (B7_OUTINJ_a3 = 0)  {
3630: 35,a3,0b            jnb   B5,Ra3,363e      if (B5_PIPOUT_a3 = 0) goto 363e;
3633: 36,51,08            jnb   B6,R51,363e      if (B6_NO_SYNC_51 = 0) goto 363e; } }
3636: 91,40,50            orb   R50,40           B6_FUEL_FINISHED_50 = 1;
3639: 71,bf,51            an2b  R51,bf           B6_NO_SYNC_51 = 0;
363c: 27,82               sjmp  35c0             goto 35c0; } } } }

363e: 71,bf,51            an2b  R51,bf           B6_NO_SYNC_51 = 0;
3641: f0                  ret                    return;                           # EXIT "FUEL SERVICE" routine

   Sub_3642:
3642: af,88,07,5c         ldzbw R5c,[R88+7]      wR5c = [TablePTR+7];
3646: b3,88,06,5b         ldb   R5b,[R88+6]      R5b = [TablePTR+6];
364a: 52,5c,5b,00         an3b  R0,R5b,[R5c]     R0 = R5b & [R5c];
364e: df,04               je    3654             if ((R5b & [R5c]) != 0)  {
3650: b3,88,08,5b         ldb   R5b,[R88+8]      R5b = [TablePTR+8]; }
3654: 92,5c,5b            orb   R5b,[R5c]        R5b |= [R5c];
3657: 20,1a               sjmp  3673             goto 3673;

   Sub_3659:
3659: af,88,07,5c         ldzbw R5c,[R88+7]      wR5c = [TablePTR+7];
365d: b3,88,08,5b         ldb   R5b,[R88+8]      R5b = [TablePTR+8];
3661: 52,5c,5b,00         an3b  R0,R5b,[R5c]     R0 = R5b & [R5c];
3665: d7,04               jne   366b             if ((R5b & [R5c]) = 0)  {
3667: b3,88,06,5b         ldb   R5b,[R88+6]      R5b = [TablePTR+6]; }
366b: 12,5b               cplb  R5b              R5b = ~R5b;
366d: 72,5c,5b            an2b  R5b,[R5c]        R5b &= [R5c];
3670: 71,ef,4f            an2b  R4f,ef           B4_No_service = 0;
3673: c6,5c,5b            stb   R5b,[R5c]        [R5c] = R5b;
3676: f0                  ret                    return;

   Injector_Edge:
3677: 11,54               clrb  R54              R54 = 0;
3679: b3,e4,12,55         ldb   R55,[Re4+12]     R55 = IBETA;
367d: 6c,c4,54            ml2w  R54,Rc4          lR54 *= DT12S;
3680: 0c,0d,54            shrdw R54,d            lR54 >>= d;
   Injector_Edge_Immediate_Output_Request:
3683: 64,7a,54            ad2w  R54,R7a          R54 += LAST_HI_PIP;
3686: b4,7c,56            adcb  R56,R7c          R56 += Prev_PIP_timeH + CY;
3689: f0                  ret                    return;

   Sub_368a:
368a: af,88,05,70         ldzbw R70,[R88+5]      Rtab = [TablePTR+5];
368e: 65,40,02,70         ad2w  R70,240          Rtab += HSOQ;
3692: 4b,70,02,72,58      sb3w  R58,R72,[R70+2]  R58 = HSO_time - [Rtab+2];
3697: b0,74,5a            ldb   R5a,R74          R5a = HSO_timeH;
369a: bb,70,04,5a         sbbb  R5a,[R70+4]      R5a -= [Rtab+4] - CY;
369e: 49,c8,22,88,5c      sb3w  R5c,R88,22c8     R5c = TablePTR - HSO_Table;
36a3: 9b,70,01,00         cmpb  R0,[R70+1]       
36a7: d7,02               jne   36ab             if ([Rtab+1] = 0)  {
36a9: 20,b2               sjmp  375d             goto 375d; }

36ab: 3f,5a,02            jb    B7,R5a,36b0      if (B7_R5a = 0)  {
36ae: 20,98               sjmp  3748             goto 3748; }

36b0: 03,58               negw  R58              R58 = -R58;
36b2: 9b,70,01,5c         cmpb  R5c,[R70+1]      
36b6: d7,27               jne   36df             if (R5c = [Rtab+1])  {
36b8: 4b,70,fe,72,76      sb3w  R76,R72,[R70+fe] R76 = HSO_time - [Rtab-2];
36bd: b0,74,78            ldb   R78,R74          R78 = HSO_timeH;
36c0: bb,70,fd,78         sbbb  R78,[R70+fd]     R78 -= [Rtab-3] - CY;
36c4: 37,78,11            jnb   B7,R78,36d8      if (B7_R78 = 1)  {
36c7: 68,76,72            sb2w  R72,R76          HSO_time -= R76;
36ca: b8,78,74            sbbb  R74,R78          HSO_timeH -= R78 - CY;
36cd: ef,fd,f2            call  29cd             Send_HSO_Cmd ();
36d0: 3d,4c,08            jb    B5,R4c,36db      if (B5_Late_output = 1) goto 36db;
36d3: 91,20,4f            orb   R4f,20           B5_Late_output = 1;
36d6: 20,03               sjmp  36db             goto 36db; }

36d8: ef,f2,f2            call  29cd             Send_HSO_Cmd (); }
36db: 2f,65               scall 3642             Sub_3642 ();
36dd: 20,a2               sjmp  3781             goto 3781; }

36df: 39,4d,59            jb    B1,R4d,373b      if (B1_R4d = 0)  {
36e2: 8b,e4,ec,58         cmpw  R58,[Re4+ec]     
36e6: d3,53               jnc   373b             if (R58 >= AEPW)  {
36e8: 11,5c               clrb  R5c              R5c = 0;
36ea: 45,83,06,84,54      ad3w  R54,R84,683      R54 = Reftime + 683;
36ef: b4,86,5c            adcb  R5c,R86          R5c += ReftimeH + CY;
36f2: b0,5c,78            ldb   R78,R5c          R78 = R5c;
36f5: 4b,70,02,54,76      sb3w  R76,R54,[R70+2]  R76 = R54 - [Rtab+2];
36fa: bb,70,04,78         sbbb  R78,[R70+4]      R78 -= [Rtab+4] - CY;
36fe: 3f,78,06            jb    B7,R78,3707      if (B7_R78 = 0)  {
3701: 68,76,54            sb2w  R54,R76          R54 -= R76;
3704: b8,78,5c            sbbb  R5c,R78          R5c -= R78 - CY; }
3707: a3,88,0a,58         ldw   R58,[R88+a]      R58 = [TablePTR+a];
370b: a2,58,58            ldw   R58,[R58]        R58 = [R58];
370e: 01,5a               clrw  R5a              R5a = 0;
3710: 0d,01,58            shldw R58,1            lR58 <<= 1;
3713: 68,58,54            sb2w  R54,R58          R54 -= R58;
3716: b8,5a,5c            sbbb  R5c,R5a          R5c -= R5a - CY;
3719: 6b,e4,ec,54         sb2w  R54,[Re4+ec]     R54 -= AEPW;
371d: b8,00,5c            sbbb  R5c,R0           R5c -= CY;
3720: 68,72,54            sb2w  R54,R72          R54 -= HSO_time;
3723: b8,74,5c            sbbb  R5c,R74          R5c -= HSO_timeH - CY;
3726: 3f,5c,06            jb    B7,R5c,372f      if (B7_R5c = 0)  {
3729: 64,54,72            ad2w  R72,R54          HSO_time += R54;
372c: b4,5c,74            adcb  R74,R5c          HSO_timeH += R5c + CY; }
372f: ef,9b,f2            call  29cd             Send_HSO_Cmd ();
3732: 67,e4,ec,72         ad2w  R72,[Re4+ec]     HSO_time += AEPW;
3736: b4,00,74            adcb  R74,R0           HSO_timeH += CY;
3739: 20,46               sjmp  3781             goto 3781; } }

373b: a3,70,02,72         ldw   R72,[R70+2]      HSO_time = [Rtab+2];
373f: b3,70,04,74         ldb   R74,[R70+4]      HSO_timeH = [Rtab+4];
3743: 91,20,4f            orb   R4f,20           B5_Late_output = 1;
3746: 20,39               sjmp  3781             goto 3781;

3748: 31,4d,10            jnb   B1,R4d,375b      if (B1_R4d = 1)  {
374b: a3,70,02,72         ldw   R72,[R70+2]      HSO_time = [Rtab+2];
374f: b3,70,04,74         ldb   R74,[R70+4]      HSO_timeH = [Rtab+4];
3753: 9b,70,01,5c         cmpb  R5c,[R70+1]      
3757: d7,ea               jne   3743             if (R5c != [Rtab+1]) goto 3743;
3759: 27,7d               sjmp  36d8             goto 36d8; }

375b: 26,e5               sjmp  3642             goto Sub_3642;

375d: 37,5a,15            jnb   B7,R5a,3775      if (B7_R5a = 1)  {
3760: a3,70,02,72         ldw   R72,[R70+2]      HSO_time = [Rtab+2];
3764: b3,70,04,74         ldb   R74,[R70+4]      HSO_timeH = [Rtab+4];
3768: ef,62,f2            call  29cd             Send_HSO_Cmd ();
376b: 3d,4c,03            jb    B5,R4c,3771      if (B5_Late_output = 0)  {
376e: 91,20,4f            orb   R4f,20           B5_Late_output = 1; }
3771: 36,4c,0d            jnb   B6,R4c,3781      if (B6_Queued = 0) goto 3781;
3774: f0                  ret                    return; }

   Sub_3775:
3775: ef,55,f2            call  29cd             Send_HSO_Cmd ();
3778: 34,4f,02            jnb   B4,R4f,377d      if (B4_No_service = 1)  {
377b: 2e,dc               scall 3659             Sub_3659 (); }
377d: 36,4c,01            jnb   B6,R4c,3781      if (B6_Queued = 1)  {
3780: f0                  ret                    return; } }

3781: 28,76               scall 37f9             Sub_37f9 ();
3783: 35,4f,05            jnb   B5,R4f,378b      if (B5_Late_output = 1)  {
3786: 71,df,4f            an2b  R4f,df           B5_Late_output = 0;
3789: 20,07               sjmp  3792             goto 3792; }

378b: 67,e4,f8,72         ad2w  R72,[Re4+f8]     HSO_time += [178];
378f: b4,00,74            adcb  R74,R0           HSO_timeH += CY;
3792: 65,0c,00,88         ad2w  R88,c            TablePTR += c;
   Sub_3796:
3796: b3,88,06,5b         ldb   R5b,[R88+6]      R5b = [TablePTR+6];
379a: af,88,07,5c         ldzbw R5c,[R88+7]      wR5c = [TablePTR+7];
379e: 71,ef,4f            an2b  R4f,ef           B4_No_service = 0;
37a1: 52,5c,5b,00         an3b  R0,R5b,[R5c]     R0 = R5b & [R5c];
37a5: df,25               je    37cc             if ((R5b & [R5c]) != 0)  {
37a7: 91,10,4f            orb   R4f,10           B4_No_service = 1;
37aa: 2e,cb               scall 3677             Injector_Edge ();
37ac: b3,88,09,57         ldb   R57,[R88+9]      R57 = [TablePTR+9];
37b0: 72,5c,57            an2b  R57,[R5c]        R57 &= [R5c];
37b3: df,06               je    37bb             if (R57 != 0)  {
37b5: 68,c4,54            sb2w  R54,Rc4          R54 -= DT12S;
37b8: b8,00,56            sbbb  R56,R0           R56 -= CY; }
37bb: 48,72,54,76         sb3w  R76,R54,R72      R76 = R54 - HSO_time;
37bf: b0,56,78            ldb   R78,R56          R78 = R56;
37c2: b8,74,78            sbbb  R78,R74          R78 -= HSO_timeH - CY;
37c5: 37,78,04            jnb   B7,R78,37cc      if (B7_R78 = 1)  {
37c8: 28,2f               scall 37f9             Sub_37f9 ();
37ca: 2e,8d               scall 3659             Sub_3659 (); } }
37cc: ef,fe,f1            call  29cd             Send_HSO_Cmd ();
37cf: 36,4c,04            jnb   B6,R4c,37d6      if (B6_Queued = 1)  {
37d2: 71,ef,4f            an2b  R4f,ef           B4_No_service = 0;
37d5: f0                  ret                    return; }

37d6: c3,70,fe,72         stw   R72,[R70+fe]     [Rtab-2] = HSO_time;
37da: c7,70,fd,74         stb   R74,[R70+fd]     [Rtab-3] = HSO_timeH;
37de: 34,4f,0c            jnb   B4,R4f,37ed      if (B4_No_service = 1)  {
37e1: a0,54,72            ldw   R72,R54          HSO_time = R54;
37e4: b0,56,74            ldb   R74,R56          HSO_timeH = R56;
37e7: 69,0c,00,88         sb2w  R88,c            TablePTR -= c;
37eb: 27,88               sjmp  3775             goto Sub_3775; }

37ed: 07,70               incw  R70              Rtab++;
37ef: c6,71,00            stb   R0,[R70++]       [Rtab] = 0;
37f2: c2,71,72            stw   R72,[R70++]      [Rtab] = HSO_time;
37f5: c6,70,74            stb   R74,[R70]        [Rtab] = HSO_timeH;
37f8: f0                  ret                    return;

   Sub_37f9:
37f9: 01,5a               clrw  R5a              R5a = 0;
37fb: 31,4d,09            jnb   B1,R4d,3807      if (B1_R4d = 1)  {
37fe: a3,e4,ec,58         ldw   R58,[Re4+ec]     R58 = AEPW;
3802: 71,fd,4d            an2b  R4d,fd           B1_R4d = 0;
3805: 20,0a               sjmp  3811             goto 3811; }

3807: a3,88,0a,58         ldw   R58,[R88+a]      R58 = [TablePTR+a];
380b: a2,58,58            ldw   R58,[R58]        R58 = [R58];
380e: 0d,01,58            shldw R58,1            lR58 <<= 1;
3811: 71,7f,4c            an2b  R4c,7f           B7_R4c = 0;
3814: 64,58,72            ad2w  R72,R58          HSO_time += R58;
3817: b4,5a,74            adcb  R74,R5a          HSO_timeH += R5a + CY;
381a: 47,e4,7c,58,5a      ad3w  R5a,R58,[Re4+7c] R5a = R58 + FUEL_SUM_TKS;
381f: d3,03               jnc   3824             if (R5a > ffff)  {
3821: bd,ff,5a            ldsbw R5a,ff           swR5a = ff; }
3824: c3,e4,7c,5a         stw   R5a,[Re4+7c]     FUEL_SUM_TKS = R5a;
3828: f0                  ret                    return;

   Sub_3829:
3829: 33,50,01            jnb   B3,R50,382d      if (B3_No_fuel_save = 1)  {
382c: f0                  ret                    return; }

382d: 9b,01,75,02,00      cmpb  R0,[R0+275]      
3832: d6,2f               jge   3863             if ([275] > 0)  {
3834: 4b,e4,24,84,54      sb3w  R54,R84,[Re4+24] R54 = Reftime - [1a4];
3839: 3f,55,f0            jb    B7,R55,382c      if (B7_R55 = 1) return;
383c: 48,54,84,72         sb3w  R72,R84,R54      HSO_time = Reftime - R54;
3840: b0,86,74            ldb   R74,R86          HSO_timeH = ReftimeH;
3843: b8,00,74            sbbb  R74,R0           HSO_timeH -= CY;
3846: 71,ef,48            an2b  R48,ef           AEPW_NOT_ZERO = 0;
3849: 77,e4,fb,73         ad2b  R73,[Re4+fb]     R73 += AEPP;
384d: b4,00,74            adcb  R74,R0           HSO_timeH += CY;
3850: 88,72,84            cmpw  R84,R72          
3853: b0,86,54            ldb   R54,R86          R54 = ReftimeH;
3856: b8,74,54            sbbb  R54,R74          R54 -= HSO_timeH - CY;
3859: 37,54,07            jnb   B7,R54,3863      if (B7_R54 = 1)  {
385c: a1,1a,23,88         ldw   R88,231a         TablePTR = 231a;
3860: e7,ce,f1            jump  2a31             goto 2a31; } }

3863: 11,72               clrb  R72              HSO_time = 0;
3865: b0,85,73            ldb   R73,R85          R73 = R85;
3868: b0,86,74            ldb   R74,R86          HSO_timeH = ReftimeH;
386b: 71,ef,48            an2b  R48,ef           AEPW_NOT_ZERO = 0;
386e: 27,ec               sjmp  385c             goto 385c;

   Sub_3870:
3870: 8b,e4,ec,00         cmpw  R0,[Re4+ec]      
3874: d7,09               jne   387f             if (AEPW = 0)  {
3876: 71,f7,50            an2b  R50,f7           B3_No_fuel_save = 0;
3879: c7,01,75,02,00      stb   R0,[R0+275]      [275] = 0;
387e: f0                  ret                    return; }

387f: a1,ea,22,88         ldw   R88,22ea         TablePTR = 22ea;
3883: 33,50,07            jnb   B3,R50,388d      if (B3_No_fuel_save = 1)  {
3886: 91,08,50            orb   R50,8            B3_No_fuel_save = 1;
3889: a1,02,23,88         ldw   R88,2302         TablePTR = 2302; }
388d: b1,80,4c            ldb   R4c,80           R4c = 80;
3890: 91,02,4d            orb   R4d,2            B1_R4d = 1;
3893: ef,f4,fd            call  368a             Sub_368a ();
3896: 34,4c,04            jnb   B4,R4c,389d      if (B4_No_service = 1)  {
3899: 71,fd,4d            an2b  R4d,fd           B1_R4d = 0;
389c: f0                  ret                    return; }

389d: a3,01,76,02,72      ldw   R72,[R0+276]     HSO_time = [276];
38a2: b3,01,78,02,74      ldb   R74,[R0+278]     HSO_timeH = [278];
38a7: 3b,50,09            jb    B3,R50,38b3      if (B3_No_fuel_save = 0)  {
38aa: b3,f4,4c,54         ldb   R54,[Rf4+4c]     R54 = NUMOUT;
38ae: 99,02,54            cmpb  R54,2            
38b1: df,d3               je    3886             if (R54 = 2) goto 3886; }
38b3: 71,f7,50            an2b  R50,f7           B3_No_fuel_save = 0;
38b6: a3,01,76,02,54      ldw   R54,[R0+276]     R54 = [276];
38bb: c3,e4,24,54         stw   R54,[Re4+24]     [1a4] = R54;
38bf: 27,88               sjmp  3849             goto 3849;

   Sub_38c1:
38c1: 4b,e6,40,00,54      sb3w  R54,R0,[Re6+40]  R54 = [2c0];
38c6: df,0c               je    38d4             if (R54 != 0)  {
38c8: 65,2c,0a,54         ad2w  R54,a2c          R54 += a2c;
38cc: 64,54,72            ad2w  R72,R54          HSO_time += R54;
38cf: b4,00,74            adcb  R74,R0           HSO_timeH += CY;
38d2: f8                  clc                    CY = 0;
38d3: f0                  ret                    return; }

38d4: a1,48,23,88         ldw   R88,2348         TablePTR = 2348;
38d8: 20,0e               sjmp  38e8             goto 38e8;

   Sub_38da:
38da: a3,e6,40,54         ldw   R54,[Re6+40]     R54 = [2c0];
38de: 89,2c,0a,54         cmpw  R54,a2c          
38e2: d3,e8               jnc   38cc             if (R54 < a2c) goto 38cc;
38e4: a1,40,23,88         ldw   R88,2340         TablePTR = 2340;
38e8: 65,2c,0a,72         ad2w  R72,a2c          HSO_time += a2c;
38ec: b4,00,74            adcb  R74,R0           HSO_timeH += CY;
38ef: cc,00               pop   R0               R0 = pop();
38f1: e7,3d,f1            jump  2a31             goto 2a31;

   SCAP_Sensor_Edge:
38f4: a3,e4,a8,5c         ldw   R5c,[Re4+a8]     R5c = MAPCNT;
38f8: 3f,a5,03            jb    B7,Ra5,38fe      if (b7_CRKFLG_a5 = 0)  {
38fb: 34,a4,20            jnb   B4,Ra4,391e      if (MAPOFL = 0) goto 391e; }
38fe: 89,00,08,5c         cmpw  R5c,800          
3902: d3,5d               jnc   3961             if (R5c < 800) goto 3961;
3904: 4b,e4,1e,6c,54      sb3w  R54,R6c,[Re4+1e] R54 = DATA_TIME - LAST_MAP2;
3909: a1,ab,9a,58         ldw   R58,9aab         R58 = 9aab;
390d: a1,5b,06,5a         ldw   R5a,65b          R5a = 65b;
3911: 8c,54,58            divw  R58,R54          wR58 /= R54;                      # MAP_FREQ = 1/(DATA_TIME - LAST_MAP2)
3914: d5,04               jnv   391a             if (OVF = 1)  {
3916: a1,00,a5,58         ldw   R58,a500         R58 = a500; }
391a: 29,4f               scall 3a6b             MAP_CALC ();
391c: 20,54               sjmp  3972             goto 3972; }

391e: 48,7a,6c,54         sb3w  R54,R6c,R7a      R54 = DATA_TIME - LAST_HI_PIP;
3922: 01,56               clrw  R56              R56 = 0;
3924: 0d,0b,54            shldw R54,b            lR54 <<= b;
3927: 4b,e4,20,6c,58      sb3w  R58,R6c,[Re4+20] R58 = DATA_TIME - LAST_MAP;
392c: 8c,58,54            divw  R54,R58          wR54 /= R58;
392f: d5,02               jnv   3933             if (OVF = 1)  {
3931: 01,54               clrw  R54              R54 = 0; }
3933: 09,01,56            shlw  R56,1            R56 <<= 1;
3936: 88,58,56            cmpw  R56,R58          
3939: d1,02               jleu  393d             if (R56 > R58)  {
393b: 07,54               incw  R54              R54++; }
393d: 37,52,16            jnb   B7,R52,3956      if (B7_LONG_MAP_AVG_52 = 1)  {
3940: 34,52,09            jnb   B4,R52,394c      if (B4_LONG_ISF_UP_FLG_52 = 1)  {
3943: 71,ef,52            an2b  R52,ef           B4_LONG_ISF_UP_FLG_52 = 0;
3946: c3,e8,54,54         stw   R54,[Re8+54]     ISF = R54;
394a: 20,0a               sjmp  3956             goto 3956; }

394c: b3,e8,56,56         ldb   R56,[Re8+56]     R56 = LONG_MAPCNT;
3950: 17,56               incb  R56              R56++;
3952: c7,e8,56,56         stb   R56,[Re8+56]     LONG_MAPCNT = R56; }
3956: 35,52,08            jnb   B5,R52,3961      if (B5_ISF_UP_FLG_52 = 1)  {
3959: 71,df,52            an2b  R52,df           B5_ISF_UP_FLG_52 = 0;
395c: a0,54,5c            ldw   R5c,R54          R5c = R54;
395f: 20,04               sjmp  3965             goto 3965; } }

3961: 65,00,08,5c         ad2w  R5c,800          R5c += 800;
3965: c3,e4,a8,5c         stw   R5c,[Re4+a8]     MAPCNT = R5c;
3969: 89,00,e0,5c         cmpw  R5c,e000                                           # After incrementing MAPCNT, check the following:
396d: d3,03               jnc   3972             if (R5c >= e000)  {               # MAPCNT >= MAX_SCAP_EDGES
396f: 91,10,a4            orb   Ra4,10           MAPOFL = 1; }                     # (too many SCAP edges)
3972: a3,e4,20,54         ldw   R54,[Re4+20]     R54 = LAST_MAP;
3976: c3,e4,1e,54         stw   R54,[Re4+1e]     LAST_MAP2 = R54;                  # (move time of previous SCAP edge)
397a: c3,e4,20,6c         stw   R6c,[Re4+20]     LAST_MAP = DATA_TIME;             # (store time of current SCAP edge)
397e: 48,54,6c,54         sb3w  R54,R6c,R54      R54 = DATA_TIME - R54;
3982: c3,e6,80,54         stw   R54,[Re6+80]     MDELTA = R54;                     # (time between SCAP edges)
3986: 91,40,4e            orb   R4e,40           B6_NEW_MAP_4e = 1;                # (notify self test of new edge)
3989: f0                  ret                    return;

   SYSEQ_MAP_COM1:
398a: 71,ef,a4            an2b  Ra4,ef           MAPOFL = 0;                       # (clear MAP overflow flag)
398d: 37,a5,01            jnb   B7,Ra5,3991      if (b7_CRKFLG_a5 = 1)  {          # (in crank)
3990: f0                  ret                    return; }

3991: 4b,e4,20,7a,54      sb3w  R54,R7a,[Re4+20] R54 = LAST_HI_PIP - LAST_MAP;
3996: 01,56               clrw  R56              R56 = 0;
3998: 0d,0b,54            shldw R54,b            lR54 <<= b;
399b: 8f,e6,80,54         divw  R54,[Re6+80]     wR54 /= MDELTA;                   # LAST_MAP - LAST_MAP2
399f: 09,01,56            shlw  R56,1            R56 <<= 1;
39a2: 8b,e6,80,56         cmpw  R56,[Re6+80]     
39a6: d3,02               jnc   39aa             if (R56 >= MDELTA)  {
39a8: 07,54               incw  R54              R54++; }
39aa: 3d,52,09            jb    B5,R52,39b6      if (B5_ISF_UP_FLG_52 = 0)  {
39ad: 47,e4,a0,c4,5c      ad3w  R5c,Rc4,[Re4+a0] R5c = DT12S + DT12SA;
39b2: c3,e4,a0,5c         stw   R5c,[Re4+a0]     DT12SA = R5c; }                   # (PIP period accumulator)
39b6: 37,52,30            jnb   B7,R52,39e9      if (B7_LONG_MAP_AVG_52 = 1)  {
39b9: 3c,52,2d            jb    B4,R52,39e9      if (B4_LONG_ISF_UP_FLG_52 = 0)  {
39bc: b3,e8,57,58         ldb   R58,[Re8+57]     R58 = MAP_PIPCNT;
39c0: 17,58               incb  R58              R58++;                            # (increment PIP period counter)
39c2: c7,e8,57,58         stb   R58,[Re8+57]     MAP_PIPCNT = R58;
39c6: 47,e8,52,c4,58      ad3w  R58,Rc4,[Re8+52] R58 = DT12S + LONG_DT12SA;        # (PIP period accumulator)
39cb: d3,07               jnc   39d4             if (R58 > ffff)  {
39cd: 71,7f,52            an2b  R52,7f           B7_LONG_MAP_AVG_52 = 0;
39d0: 28,89               scall 3a5b             MAP_Average_Complete ();
39d2: 20,15               sjmp  39e9             goto 39e9; }

39d4: c3,e8,52,58         stw   R58,[Re8+52]     LONG_DT12SA = R58;
39d8: b3,fe,0d,58         ldb   R58,[Rfe+d]      R58 = MAP_CYCLE;
39dc: 7f,f6,05,58         ml2b  R58,[Rf6+5]      wR58 *= ENGCYL;
39e0: 08,01,58            shrw  R58,1            R58 >>= 1;
39e3: 9b,e8,57,58         cmpb  R58,[Re8+57]     
39e7: d1,30               jleu  3a19             if (R58 <= MAP_PIPCNT) goto 3a19; } }
39e9: 3d,52,7e            jb    B5,R52,3a6a      if (B5_ISF_UP_FLG_52 = 1) return;
39ec: a3,fe,0a,56         ldw   R56,[Rfe+a]      R56 = MAPEDG;
39f0: 69,00,08,56         sb2w  R56,800          R56 -= 800;
39f4: 8b,e4,a8,56         cmpw  R56,[Re4+a8]     
39f8: d9,70               jgtu  3a6a             if (R56 > MAPCNT) return;
39fa: 37,52,05            jnb   B7,R52,3a02      if (B7_LONG_MAP_AVG_52 = 1)  {
39fd: 36,52,02            jnb   B6,R52,3a02      if (B6_LONG_MAP_FST_52 = 1)  {
3a00: 21,0d               sjmp  3b0f             goto 3b0f; } }

3a02: 71,bf,52            an2b  R52,bf           B6_LONG_MAP_FST_52 = 0;
3a05: 47,e4,a8,54,58      ad3w  R58,R54,[Re4+a8] R58 = R54 + MAPCNT;
3a0a: d3,03               jnc   3a0f             if (R58 > ffff)  {
3a0c: bd,ff,58            ldsbw R58,ff           swR58 = ff; }
3a0f: 6d,00,40,58         ml2w  R58,4000         lR58 *= 4000;
3a13: 28,2a               scall 3a3f             Calculate_MAP_FREQ ();
3a15: 37,52,43            jnb   B7,R52,3a5b      if (B7_LONG_MAP_AVG_52 = 0) goto MAP_Average_Complete;
3a18: f0                  ret                    return; }

3a19: 91,40,52            orb   R52,40           B6_LONG_MAP_FST_52 = 1;
3a1c: af,e8,56,58         ldzbw R58,[Re8+56]     wR58 = LONG_MAPCNT;
3a20: 01,5a               clrw  R5a              R5a = 0;
3a22: 0d,0b,58            shldw R58,b            lR58 <<= b;
3a25: 67,e8,54,58         ad2w  R58,[Re8+54]     R58 += ISF;
3a29: a5,00,00,5a         adcw  R5a,0            R5a += CY;
3a2d: 64,54,58            ad2w  R58,R54          R58 += R54;
3a30: a5,00,00,5a         adcw  R5a,0            R5a += CY;
3a34: 0d,0e,58            shldw R58,e            lR58 <<= e;
3a37: a3,e8,52,5c         ldw   R5c,[Re8+52]     R5c = LONG_DT12SA;
3a3b: 28,02               scall 3a3f             Calculate_MAP_FREQ ();
3a3d: 20,1c               sjmp  3a5b             goto MAP_Average_Complete;

   Calculate_MAP_FREQ:
3a3f: 4d,10,a1,5c,54      ml3w  R54,R5c,a110     lR54 = wR5c * a110;
3a44: 8c,56,58            divw  R58,R56          wR58 /= R56;
3a47: dd,0c               jv    3a55             if (OVF = 0)  {
3a49: 09,01,5a            shlw  R5a,1            R5a <<= 1;
3a4c: 88,56,5a            cmpw  R5a,R56          
3a4f: d3,1a               jnc   3a6b             if (R5a < R56) goto MAP_CALC;
3a51: 07,58               incw  R58              R58++;
3a53: 20,16               sjmp  3a6b             goto MAP_CALC; }

3a55: a1,00,a5,58         ldw   R58,a500         R58 = a500;
3a59: 20,10               sjmp  3a6b             goto MAP_CALC; }

   MAP_Average_Complete:
3a5b: c3,e8,52,00         stw   R0,[Re8+52]      LONG_DT12SA = 0;
3a5f: c7,e8,56,00         stb   R0,[Re8+56]      LONG_MAPCNT = 0;
3a63: c7,e8,57,00         stb   R0,[Re8+57]      MAP_PIPCNT = 0;
3a67: 91,10,52            orb   R52,10           B4_LONG_ISF_UP_FLG_52 = 1; } }
3a6a: f0                  ret                    return; }

   MAP_CALC:
3a6b: c3,e4,a2,58         stw   R58,[Re4+a2]     MAP_FREQ = R58;                   # MAP  CALC
3a6f: 89,db,7c,58         cmpw  R58,7cdb         
3a73: db,30               jc    3aa5             if (R58 < 7cdb)  {
3a75: 89,5f,64,58         cmpw  R58,645f         
3a79: db,10               jc    3a8b             if (R58 < 645f)  {
3a7b: 89,6c,59,58         cmpw  R58,596c         
3a7f: d3,54               jnc   3ad5             if (R58 < 596c) goto 3ad5;
3a81: a1,bd,6e,56         ldw   R56,6ebd         R56 = 6ebd;
3a85: a1,21,23,5c         ldw   R5c,2321         R5c = 2321;
3a89: 20,64               sjmp  3aef             goto 3aef; }

3a8b: 89,5a,71,58         cmpw  R58,715a         
3a8f: db,0a               jc    3a9b             if (R58 < 715a)  {
3a91: a1,f1,69,56         ldw   R56,69f1         R56 = 69f1;
3a95: a1,4a,21,5c         ldw   R5c,214a         R5c = 214a;
3a99: 20,54               sjmp  3aef             goto 3aef; }

3a9b: a1,88,63,56         ldw   R56,6388         R56 = 6388;
3a9f: a1,7b,1e,5c         ldw   R5c,1e7b         R5c = 1e7b;
3aa3: 20,4a               sjmp  3aef             goto 3aef; }

3aa5: 89,72,96,58         cmpw  R58,9672         
3aa9: db,1a               jc    3ac5             if (R58 < 9672)  {
3aab: 89,e0,88,58         cmpw  R58,88e0         
3aaf: db,0a               jc    3abb             if (R58 < 88e0)  {
3ab1: a1,c4,5e,56         ldw   R56,5ec4         R56 = 5ec4;
3ab5: a1,2a,1c,5c         ldw   R5c,1c2a         R5c = 1c2a;
3ab9: 20,34               sjmp  3aef             goto 3aef; }

3abb: a1,10,59,56         ldw   R56,5910         R56 = 5910;
3abf: a1,19,19,5c         ldw   R5c,1919         R5c = 1919;
3ac3: 20,2a               sjmp  3aef             goto 3aef; }

3ac5: 89,3f,a2,58         cmpw  R58,a23f         
3ac9: db,18               jc    3ae3             if (R58 >= a23f) goto 3ae3;
3acb: a1,7e,53,56         ldw   R56,537e         R56 = 537e;
3acf: a1,d3,15,5c         ldw   R5c,15d3         R5c = 15d3;
3ad3: 20,1a               sjmp  3aef             goto 3aef; }

3ad5: a1,6c,59,58         ldw   R58,596c         R58 = 596c;
3ad9: a1,bd,6e,56         ldw   R56,6ebd         R56 = 6ebd;
3add: a1,21,23,5c         ldw   R5c,2321         R5c = 2321;
3ae1: 20,0c               sjmp  3aef             goto 3aef; }

3ae3: a1,3f,a2,58         ldw   R58,a23f         R58 = a23f;
3ae7: a1,7e,53,56         ldw   R56,537e         R56 = 537e;
3aeb: a1,d3,15,5c         ldw   R5c,15d3         R5c = 15d3;
3aef: 6c,56,58            ml2w  R58,R56          lR58 *= R56;
3af2: 68,5c,5a            sb2w  R5a,R5c          R5a -= R5c;
3af5: c3,e4,a6,5a         stw   R5a,[Re4+a6]     IMAP_WORD = R5a;
3af9: 91,40,a0            orb   Ra0,40           B6_MUPET_FLAG_a0 = 1;
3afc: 91,01,a1            orb   Ra1,1            B0_MAPUP_NORM_a1 = 1;
3aff: 38,a7,19            jb    B0,Ra7,3b1b      if (B0_V_VACFLG_a7 = 0)  {
3b02: 71,f7,a6            an2b  Ra6,f7           B3_MFMFLG_a6 = 0;
3b05: c3,e4,a4,5a         stw   R5a,[Re4+a4]     MAP_WORD = R5a;
3b09: 09,03,5a            shlw  R5a,3            R5a <<= 3;
3b0c: b0,5b,ba            ldb   Rba,R5b          MAP = R5b;
3b0f: 91,20,52            orb   R52,20           B5_ISF_UP_FLG_52 = 1;
3b12: c3,e4,a0,00         stw   R0,[Re4+a0]      DT12SA = 0;
3b16: c3,e4,a8,00         stw   R0,[Re4+a8]      MAPCNT = 0;
3b1a: f0                  ret                    return; }

3b1b: 91,08,a6            orb   Ra6,8            B3_MFMFLG_a6 = 1;
3b1e: 27,ef               sjmp  3b0f             goto 3b0f;

   VEHICLE_SPEED_(VS):
3b20: b3,e8,03,54         ldb   R54,[Re8+3]      R54 = MPHCNT;
3b24: 35,83,20            jnb   B5,R83,3b47      if (B5_HSI_State = 1)  {
3b27: 17,54               incb  R54              R54++;
3b29: c7,e8,04,00         stb   R0,[Re8+4]       TSLMPH = 0;
3b2d: 3f,a0,0f            jb    B7,Ra0,3b3f      if (B7_FIRST_MPH_a0 = 0)  {
3b30: 91,80,a0            orb   Ra0,80           B7_FIRST_MPH_a0 = 1;
3b33: 11,54               clrb  R54              R54 = 0;
3b35: c3,e6,9c,6c         stw   R6c,[Re6+9c]     MPHTIM2 = DATA_TIME;
3b39: c7,e6,9e,6e         stb   R6e,[Re6+9e]     MPHTIM2H = DATA_TIMEH;
3b3d: 20,08               sjmp  3b47             goto 3b47; }

3b3f: c3,e6,98,6c         stw   R6c,[Re6+98]     MPHTIM1 = DATA_TIME;
3b43: c7,e6,9a,6e         stb   R6e,[Re6+9a]     MPHTIM1H = DATA_TIMEH; }
3b47: c7,e8,03,54         stb   R54,[Re8+3]      MPHCNT = R54;
3b4b: f0                  ret                    return;

   VIP_THROTTLE_MODE_SET:
3b4c: 30,a3,02            jnb   B0,Ra3,3b51      if (B0_V_MODE_SETUP_a3 = 1)  {
3b4f: 20,96               sjmp  3be7             goto ReInitialize_ISCKAM; }

3b51: f0                  ret                    return;

   KAM_Qualification_Test_Logic:
3b52: 71,7f,28            an2b  R28,7f           B7_KAMOK_28 = 0;
3b55: b1,aa,42            ldb   R42,aa           R42 = aa;                         # KAMQA = 10101010 BINARY
3b58: b1,c6,30            ldb   R30,c6           R30 = c6;                         # KAMQB = 11000110 BINARY
3b5b: b1,75,32            ldb   R32,75           R32 = 75;                         # KAMQC = 01110101 BINARY
#                      KAM          KAM
#                      Register     Address
#                      ---------    -------
#                      KAMQA        LOWEST ADDRESS OF KAM
#                      KAMQB        MIDDLE ADDRESS OF KAM
#                      KAMQC        HIGHEST ADDRESS OF KAM

3b5e: 9b,ee,80,42         cmpb  R42,[Ree+80]     
3b62: d7,33               jne   3b97             if (R42 = KAMQA)  {
3b64: 9b,ee,98,30         cmpb  R30,[Ree+98]     
3b68: d7,2d               jne   3b97             if (R30 = KAMQB)  {
3b6a: 9b,ee,c8,32         cmpb  R32,[Ree+c8]     
3b6e: d7,27               jne   3b97             if (R32 = KAMQC)  {
3b70: b1,80,38            ldb   R38,80           R38 = 80;
3b73: 9b,ee,89,38         cmpb  R38,[Ree+89]     
3b77: d9,1e               jgtu  3b97             if (R38 <= BPPTWThi)  {
3b79: 9b,ee,86,38         cmpb  R38,[Ree+86]     
3b7d: d9,18               jgtu  3b97             if (R38 <= BPKYON?)  {
3b7f: 9b,ee,85,38         cmpb  R38,[Ree+85]     
3b83: d9,12               jgtu  3b97             if (R38 <= BPKAM?)  {
3b85: a3,ee,ca,38         ldw   R38,[Ree+ca]     R38 = LTMTBLrc;
3b89: 8b,fd,2e,01,38      cmpw  R38,[Rfc+12e]    
3b8e: d3,07               jnc   3b97             if (R38 >= RTNVMN)  {             # Minimum valid RT_NOVS_KAM.
3b90: 8b,fd,30,01,38      cmpw  R38,[Rfc+130]    
3b95: d1,63               jleu  3bfa             if (R38 <= RTNVMX) goto 3bfa; } } } } } } }  # Maximum valid RT_NOVS_KAM.
3b97: 91,80,28            orb   R28,80           B7_KAMOK_28 = 1;
3b9a: c7,ee,80,42         stb   R42,[Ree+80]     KAMQA = R42;
3b9e: c7,ee,98,30         stb   R30,[Ree+98]     KAMQB = R30;
3ba2: c7,ee,c8,32         stb   R32,[Ree+c8]     KAMQC = R32;
3ba6: 91,40,2d            orb   R2d,40           VIP_KAM = 1;
3ba9: ef,03,40            call  7baf             Clear_KAM ();
3bac: b1,80,3a            ldb   R3a,80           R3a = 80;                         # Default 80h value.
3baf: ad,6a,30            ldzbw R30,6a           wR30 = 6a;                        # 0x6a all 106 KAM locations.
3bb2: c7,31,4d,07,3a      stb   R3a,[R30+74d]    [R30+74d] = R3a;                  # ADAPTIVE FUEL TABLE
3bb7: e0,30,f8            djnz  R30,3bb2         R30--;
                                                 if (R30 != 0) goto 3bb2;          # Loop, all KAM memory locations (106) set to 80h.
3bba: a1,00,35,38         ldw   R38,3500         R38 = 3500;                       # KAM checksum, 0x3500 = 0x80 x 0x6a = (128 * (10*10+6))
3bbe: c3,ee,cc,38         stw   R38,[Ree+cc]     KAM_CHKSUM = R38;
3bc2: b1,ef,38            ldb   R38,ef           R38 = ef;                         # 29.875 * 8 = 239 = 0xEF
3bc5: c7,ee,85,38         stb   R38,[Ree+85]     BPKAM? = R38;
3bc9: c7,ee,86,38         stb   R38,[Ree+86]     BPKYON? = R38;
3bcd: c7,ee,89,38         stb   R38,[Ree+89]     BPPTWThi = R38;
3bd1: c4,bb,38            stb   R38,Rbb          BP = R38;                         # ?BP?
3bd4: c7,e8,d6,00         stb   R0,[Re8+d6]      NOVCTR = 0;
3bd8: a1,00,40,38         ldw   R38,4000         R38 = 4000;
3bdc: c3,ee,ca,38         stw   R38,[Ree+ca]     LTMTBLrc = R38;                   # LTMTBLrc = 0.5
3be0: 71,7f,e1            an2b  Re1,7f           FLG_FRST_NOV = 0;
3be3: c7,ee,84,00         stb   R0,[Ree+84]      KAM_BIT_FLAGS = 0;
   ReInitialize_ISCKAM:
3be7: a1,06,00,32         ldw   R32,6            R32 = 6;                          # ISCKAMn = 0.0 (n=0-5)
3beb: a1,0a,07,30         ldw   R30,70a          R30 = ISCKAM0;
3bef: c2,31,00            stw   R0,[R30++]       [R30++] = 0;                      # clear Idle Speed KAM IPSIBR cells
3bf2: e0,32,fa            djnz  R32,3bef         R32--;
                                                 if (R32 != 0) goto 3bef;
3bf5: c3,ee,82,00         stw   R0,[Ree+82]      ISKSUM = 0;
3bf9: f0                  ret                    return; }

3bfa: b3,ee,85,30         ldb   R30,[Ree+85]     R30 = BPKAM?;
3bfe: c4,bb,30            stb   R30,Rbb          BP = R30;
3c01: f0                  ret                    return;

   RUN_MODE_SELECTION:
3c02: 71,ef,a5            an2b  Ra5,ef           B4_FLG_STALL_a5 = 0;
3c05: 37,a5,1a            jnb   B7,Ra5,3c22      if (b7_CRKFLG_a5 = 1)  {          # Crank Mode
3c08: 8b,fe,1e,b4         cmpw  Rb4,[Rfe+1e]     
3c0c: d1,38               jleu  3c46             if (N_RPM <= NRUN) goto 3c46;
3c0e: b1,08,14            ldb   R14,8            R14 = 8;
3c11: 9b,e6,93,14         cmpb  R14,[Re6+93]     
3c15: d9,09               jgtu  3c20             if (R14 <= ECTCNT)  {
3c17: 9b,fe,18,ce         cmpb  Rce,[Rfe+18]     
3c1b: d3,03               jnc   3c20             if (Rce >= NCNT)  {
3c1d: 71,7f,a5            an2b  Ra5,7f           b7_CRKFLG_a5 = 0; } }
3c20: 20,46               sjmp  3c68             goto 3c68; }

3c22: 8b,fe,20,b4         cmpw  Rb4,[Rfe+20]     
3c26: db,25               jc    3c4d             if (N_RPM >= NSTALL) goto 3c4d;
3c28: 91,10,a5            orb   Ra5,10           B4_FLG_STALL_a5 = 1;
3c2b: 71,ef,26            an2b  R26,ef           RUNUP_FLG = 0;
3c2e: c7,e8,3b,00         stb   R0,[Re8+3b]      RUNUPTMR = 0;
3c32: 91,20,a5            orb   Ra5,20           B5_STALL_a5 = 1;
3c35: 91,80,a5            orb   Ra5,80           b7_CRKFLG_a5 = 1;
3c38: c7,e6,93,00         stb   R0,[Re6+93]      ECTCNT = 0;
3c3c: c3,e6,62,00         stw   R0,[Re6+62]      ACSTRT = 0;
3c40: 01,b8               clrw  Rb8              Rb8 = 0;
3c42: c3,e8,9a,00         stw   R0,[Re8+9a]      INIT_TOT = 0; }
3c46: 11,ce               clrb  Rce              Rce = 0;
3c48: 71,df,26            an2b  R26,df           PTSCR = 0;
3c4b: 20,1b               sjmp  3c68             goto 3c68; }

3c4d: a3,fe,1a,30         ldw   R30,[Rfe+1a]     R30 = UNRPM;
3c51: 88,b4,30            cmpw  R30,Rb4          
3c54: d1,02               jleu  3c58             if (R30 > N_RPM)  {
3c56: 20,10               sjmp  3c68             goto 3c68; }

3c58: 67,fe,1c,30         ad2w  R30,[Rfe+1c]     R30 += UNRPMH;
3c5c: 88,b4,30            cmpw  R30,Rb4          
3c5f: db,05               jc    3c66             if (R30 < N_RPM)  {
3c61: 71,bf,a5            an2b  Ra5,bf           UNDSP = 0;
3c64: 20,05               sjmp  3c6b             return; }

3c66: 20,03               sjmp  3c6b             return;

3c68: 91,40,a5            orb   Ra5,40           UNDSP = 1;
3c6b: f0                  ret                    return;

   THROTTLE_MODE_SELECTION:
3c6c: a3,f6,1c,38         ldw   R38,[Rf6+1c]     R38 = DELTA;
3c70: 88,bc,38            cmpw  R38,Rbc          
3c73: db,10               jc    3c85             if (R38 < TP_REL)  {
3c75: 67,f6,20,38         ad2w  R38,[Rf6+20]     R38 += HYSTS;
3c79: db,0d               jc    3c88             if (R38 > ffff) goto 3c88;
3c7b: 88,bc,38            cmpw  R38,Rbc          
3c7e: d9,08               jgtu  3c88             if (R38 > TP_REL) goto 3c88;
3c80: 71,f7,9e            an2b  R9e,f7           B3_Reg_9e = 0;
3c83: 20,03               sjmp  3c88             goto 3c88; }

3c85: 91,08,9e            orb   R9e,8            B3_Reg_9e = 1; } }
3c88: a3,f6,22,36         ldw   R36,[Rf6+22]     R36 = THBP2;
3c8c: 47,f6,1e,36,38      ad3w  R38,R36,[Rf6+1e] R38 = R36 + HYST2;
3c91: db,05               jc    3c98             if (R38 <= ffff)  {
3c93: 88,bc,38            cmpw  R38,Rbc          
3c96: d3,0a               jnc   3ca2             if (R38 < TP_REL) goto 3ca2; }
3c98: 88,bc,36            cmpw  R36,Rbc          
3c9b: d3,08               jnc   3ca5             if (R36 < TP_REL) goto 3ca5;
3c9d: 71,fb,9e            an2b  R9e,fb           B2_Reg_9e = 0;
3ca0: 20,03               sjmp  3ca5             goto 3ca5; }

3ca2: 91,04,9e            orb   R9e,4            B2_Reg_9e = 1; }
3ca5: 11,42               clrb  R42              R42 = 0;
3ca7: 71,fb,a5            an2b  Ra5,fb           B2_APT_a5 = 0;
3caa: 33,9e,04            jnb   B3,R9e,3cb1      if (B3_Reg_9e = 1)  {
3cad: 15,42               decb  R42              R42--;
3caf: 20,08               sjmp  3cb9             goto 3cb9; }

3cb1: 32,9e,05            jnb   B2,R9e,3cb9      if (B2_Reg_9e = 1)  {
3cb4: 17,42               incb  R42              R42++;
3cb6: 91,04,a5            orb   Ra5,4            B2_APT_a5 = 1; }
3cb9: 71,fe,26            an2b  R26,fe           B0_R26 = 0;
3cbc: 37,a8,0c            jnb   B7,Ra8,3ccb      if (APT_Closed_Throttle = 1)  {
3cbf: 3f,42,09            jb    B7,R42,3ccb      if (B7_R42 = 0)  {
3cc2: 3f,a5,06            jb    B7,Ra5,3ccb      if (b7_CRKFLG_a5 = 0)  {
3cc5: 91,01,26            orb   R26,1            B0_R26 = 1;
3cc8: 91,20,26            orb   R26,20           PTSCR = 1; } } }
3ccb: b0,42,a8            ldb   Ra8,R42          ?APT?_a8 = R42;
3cce: f0                  ret                    return;

   Read_AD:
3ccf: a1,fd,3c,30         ldw   R30,3cfd         R30 = 3cfd;
   Enable_Int:
3cd3: fb                  ei                     interrupts ON;
3cd4: 56,30,00,04         ad3b  R4,R0,[R30]      AD_Cmd = [R30];
3cd8: de,22               jlt   3cfc             if (AD_Cmd >= 0)  {
3cda: 33,0a,fd            jnb   B3,Ra,3cda       if (B3_AD_Ready = 0) goto 3cda;
3cdd: fa                  di                     interrupts OFF;
3cde: ff                  nop                    
3cdf: 51,0f,04,34         an3b  R34,R4,f         R34 = AD_Low & f;
3ce3: 9a,30,34            cmpb  R34,[R30]        
3ce6: d7,eb               jne   3cd3             if (R34 != [R30]) goto Enable_Int;
3ce8: 51,f0,04,34         an3b  R34,R4,f0        R34 = AD_Low & f0;
3cec: b0,05,35            ldb   R35,R5           R35 = AD_High;
3cef: 07,30               incw  R30              R30++;
3cf1: b2,31,32            ldb   R32,[R30++]      R32 = [R30++];
3cf4: b2,31,33            ldb   R33,[R30++]      R33 = [R30++];
3cf7: c2,32,34            stw   R34,[R32]        [R32] = R34;
3cfa: 27,d7               sjmp  3cd3             goto Enable_Int; }

3cfc: f0                  ret                    return;

######
# A/D Definition. 3 byte entries
# byte 1   = A/D channel no (0-12)
# byte 2&3 = destination address
# NB AD Ch 6 (MAF) is read and saved elsewhere, to 0x124?
# no Speed control system?
######
3cfd: 00,08,01            struct    0, ITOT                                        # Throttle position sensor rate
3d00: 01,0e,01            struct    1, IVCAL                                       # A to D conversion of the calibration input voltage, counts.
3d03: 02,0a,01            struct    2, IIVPWR                                      # Ignition voltage, A/D counts.
3d06: 03,0c,01            struct    3, IOCC                                        # Output Circuit Check (OCC) A/D input level.
3d09: 05,44,03            struct    5, IETVOCM                                     # A to D conversion  of  the  ETV  over current  monitor  voltage, counts
3d0c: 07,1c,01            struct    7, ITP                                         # Throttle position value from A/D conversion, counts.
3d0f: 08,10,01            struct    8, IECT                                        # A/D conversion of ECT sensor, counts.
3d12: 09,12,01            struct    9, IACT                                        # A/D conversion of ACT sensor input, counts.
3d15: 0a,18,01            struct    a, INDS                                        # Input Neutral/drive switch, counts.
3d18: 0b,1a,01            struct    b, IEGO1                                       # Exhaust Gas Oxygen sensor 1
3d1b: 0c,14,01            struct    c, IEGR                                        # A/D conversion of EGR sensor input, EVP or EPT sensor, counts. 

3d1e: ff                  nop                                                      # end of table
   SYSTEM_EQUATIONS_EQUA_LH:
3d1f: 37,a5,02            jnb   B7,Ra5,3d24      if (b7_CRKFLG_a5 = 1)  {
3d22: 20,87               sjmp  3dab             goto 3dab; }                      # No change to RATCH

# THROTTLE POSITION FILTER (TPBAR)
#   The  TPBAR  calculation  is  a  time  dependent  rolling  average  filter  of
#   instantaneous  throttle  position  (TP).   It is updated each background pass
#   while in RUN or UNDERSPEED  mode.   The  TPBAR  time  constant,  TCTP,  is  a
#   calibration parameter and should be set to 2.0 seconds.
3d24: a3,e4,80,32         ldw   R32,[Re4+80]     R32 = [100];
3d28: a0,b2,34            ldw   R34,Rb2          R34 = TP;
3d2b: a3,f8,22,36         ldw   R36,[Rf8+22]     R36 = TCTP;
3d2f: ef,1d,0c            call  494f             UROLAV ();
3d32: c3,e4,80,3e         stw   R3e,[Re4+80]     [100] = R3e;                      # TPBAR = UROLAV(TP,TCTP)
3d36: 89,08,07,b4         cmpw  Rb4,708          
3d3a: d1,1a               jleu  3d56             if (N_RPM > 708)  {               # N > 450 RPM
3d3c: 35,2a,0f            jnb   B5,R2a,3d4e      if (?RUNNING? = 1)  {
3d3f: 30,a3,14            jnb   B0,Ra3,3d56      if (B0_V_MODE_SETUP_a3 = 0) goto 3d56;
3d42: 89,80,3e,3e         cmpw  R3e,3e80         
3d46: d3,0b               jnc   3d53             if (R3e < 3e80) goto 3d53;
3d48: a1,80,3e,8a         ldw   R8a,3e80         RATCH = 3e80;                     # (clip RATCH to RACHIV as maximum)
3d4c: 20,08               sjmp  3d56             goto 3d56; }

3d4e: 88,8a,3e            cmpw  R3e,R8a          
3d51: db,03               jc    3d56             if (R3e >= RATCH) goto 3d56; }
3d53: c0,8a,3e            stw   R3e,R8a          RATCH = R3e; } } }                # RATCH = TPBAR

#ACCEL ENRICHMENT TP FILTER (AETP)
# It is used to sense stable TP for purposes of resetting TARFLG to enable  AE.
# The  AETP  time  constant  TCAETP is a calibratable parameter which should be
# large enough to prevent TARFLG reset before the TP stops moving.
3d56: a3,e4,ae,32         ldw   R32,[Re4+ae]     R32 = AETP;
3d5a: a0,b2,34            ldw   R34,Rb2          R34 = TP;
3d5d: a3,f8,08,36         ldw   R36,[Rf8+8]      R36 = TCAETP;
3d61: ef,eb,0b            call  494f             UROLAV ();
3d64: c3,e4,ae,3e         stw   R3e,[Re4+ae]     AETP = R3e;                       # AETP = UROLAV(TP,TCAETP)

# THROTTLE POSITION FILTER (TAPBAR)
#   The TAPBAR calculation is a time and MAP dependent rolling average filter  of
#    instantaneous  throttle  position  (TP).   It is updated each background pass
#    while in RUN or UNDERSPEED mode.  The TAPBAR time constant is FN093(MAP).
3d68: ac,ba,38            ldzbw R38,Rba          wR38 = MAP;
3d6b: ef,78,0b            call  48e6             UUWFuncLU_48e6 (
3d6e: bc,a0                     #arg 1              FN093,
3d70: 38,00                     #arg 2              38 );
3d72: a0,38,36            ldw   R36,R38          R36 = R38;                        # TCxxxx = FN093
3d75: a3,e6,88,32         ldw   R32,[Re6+88]     R32 = TAPBAR;                     # old average
3d79: a0,b2,34            ldw   R34,Rb2          R34 = TP;                         # new value
3d7c: ef,d0,0b            call  494f             UROLAV ();
3d7f: c3,e6,88,3e         stw   R3e,[Re6+88]     TAPBAR = R3e;                     # TAPBAR = UROLAV(TP,FN093(MAP))

# ACCEL ENRICHMENT MAP FILTER (AEMAP)
3d83: 36,a0,25            jnb   B6,Ra0,3dab      if (B6_MUPET_FLAG_a0 = 1)  {
3d86: c7,e6,af,ba         stb   Rba,[Re6+af]     MAPAEF = MAP;                     # (store current MAP for AEMAP filter and TAR calculation)
3d8a: af,e6,ae,32         ldzbw R32,[Re6+ae]     wR32 = AEMAP;
3d8e: af,e6,af,34         ldzbw R34,[Re6+af]     wR34 = MAPAEF;
3d92: a3,f8,06,36         ldw   R36,[Rf8+6]      R36 = TCAEMP;
3d96: af,e6,b3,3e         ldzbw R3e,[Re6+b3]     wR3e = AEMTMR;                    # AEMTMR is the sample rate (filter AE MAP)
3d9a: 91,02,a5            orb   Ra5,2            BG_TMR_DISABLE = 1;
3d9d: ef,af,0b            call  494f             UROLAV ();
3da0: c7,e6,ae,3e         stb   R3e,[Re6+ae]     AEMAP = R3e;                      # AEMAP = UROLAV(MAPAEF,TCAEMP)
3da4: 71,bf,a0            an2b  Ra0,bf           B6_MUPET_FLAG_a0 = 0;             # (wait for MAP update)
3da7: c7,e6,b3,00         stb   R0,[Re6+b3]      AEMTMR = 0; }                     # (reset AEMAP timer for next update)
3dab: 9b,fe,29,00         cmpb  R0,[Rfe+29]      
3daf: df,01               je    3db2             if (PFEHP != 0)  {
3db1: f0                  ret                    return; }

# EVP SENSOR FMEM (PFEHP = 0)
3db2: a3,e4,94,30         ldw   R30,[Re4+94]     R30 = IEGR;
3db6: 8b,ff,d4,00,30      cmpw  R30,[Rfe+d4]     
3dbb: d9,0b               jgtu  3dc8             if (R30 <= EVPMAX)  {
3dbd: 8b,ff,d2,00,30      cmpw  R30,[Rfe+d2]     
3dc2: d3,04               jnc   3dc8             if (R30 >= EVPMIN)  {
3dc4: a3,e4,94,be         ldw   Rbe,[Re4+94]     EVP = IEGR; } }
3dc8: 34,a6,04            jnb   B4,Ra6,3dcf      if (B4_EFMFLG_a6 = 1)  {
3dcb: a3,e4,96,be         ldw   Rbe,[Re4+96]     EVP = EOFF; }
3dcf: 3f,a5,1f            jb    B7,Ra5,3df1      if (b7_CRKFLG_a5 = 0)  {

# EGR POSITION FILTER (EGRBAR)
#   The EGRBAR  calculation  is  a  time  dependent  rolling  average  filter  of
#    instantaneous  EGR  valve  position  EVP.  It is updated each background pass
#    while in  RUN  or  UNDERSPEED  mode.   The  EGRBAR  time  constant  TCEGR  is
#    calibratable, but should be set to 2.0 seconds.
3dd2: a3,e4,84,32         ldw   R32,[Re4+84]     R32 = EGRBAR;                     # old average
3dd6: a0,be,34            ldw   R34,Rbe          R34 = EVP;                        # new value
3dd9: a3,f8,18,36         ldw   R36,[Rf8+18]     R36 = TCEGR;                      # TCxxxx
3ddd: ef,6f,0b            call  494f             UROLAV ();
3de0: c3,e4,84,3e         stw   R3e,[Re4+84]     EGRBAR = R3e;                     # EGRBAR = UROLAV(EVP,TCEGR)
3de4: 37,a8,0a            jnb   B7,Ra8,3df1      if (APT_Closed_Throttle = 1)  {
3de7: 8b,e4,96,3e         cmpw  R3e,[Re4+96]     
3deb: db,04               jc    3df1             if (R3e < EOFF)  {
3ded: c3,e4,96,3e         stw   R3e,[Re4+96]     EOFF = R3e; } } }
3df1: f0                  ret                    return;

   INPUT_ACT_COM2:
3df2: 2a,c4               scall 40b8             Compute_TCSTRT ();
3df4: b3,f6,3c,39         ldb   R39,[Rf6+3c]     R39 = ACTFMM;
3df8: 3f,a6,1d            jb    B7,Ra6,3e18      if (B7_AFMFLG_a6 = 0)  {
3dfb: a3,e4,92,34         ldw   R34,[Re4+92]     R34 = IACT;
3dff: 8b,fe,72,34         cmpw  R34,[Rfe+72]     
3e03: d9,13               jgtu  3e18             if (R34 <= ACTMAX)  {
3e05: 8b,fe,70,34         cmpw  R34,[Rfe+70]     
3e09: d3,0d               jnc   3e18             if (R34 >= ACTMIN)  {             # (sensor OK)
3e0b: ef,d5,0a            call  48e3             USWFuncLU_48e3 (
3e0e: ea,01                     #arg 1              FN703,
3e10: 12,01                     #arg 2              IACT );
3e12: 65,80,00,38         ad2w  R38,80           R38 += 80;
3e16: 20,12               sjmp  3e2a             goto 3e2a; } } }                  # ACT = FN703(IACT)

3e18: 3a,a0,0c            jb    B2,Ra0,3e27      if (B2_WRMEGO_a0 = 0)  {          # (start up Open Loop)
3e1b: 3d,a6,09            jb    B5,Ra6,3e27      if (B5_CFMFLG_a6 = 0)  {
3e1e: 33,29,06            jnb   B3,R29,3e27      if (IECT_IN_RANGE = 1)  {         # (sensor bad, use ECT if OK)
3e21: a3,e8,5a,38         ldw   R38,[Re8+5a]     R38 = TCSTRT;
3e25: 20,03               sjmp  3e2a             goto 3e2a; } } }                  # ACT = FN703(IECT)

3e27: 37,a6,03            jnb   B7,Ra6,3e2d      if (B7_AFMFLG_a6 = 1)  {          # ACT = ACTFMM
3e2a: b0,39,b7            ldb   Rb7,R39          ACT = R39; }                      # Do not update ACT

# STRATEGY MODULE: INPUT_ECT_COM2
3e2d: 3d,a6,12            jb    B5,Ra6,3e42      if (B5_CFMFLG_a6 = 0)  {
3e30: 33,29,0f            jnb   B3,R29,3e42      if (IECT_IN_RANGE = 1)  {
3e33: bf,e8,5b,34         ldsbw R34,[Re8+5b]     swR34 = [3db];
3e37: 9b,e6,93,00         cmpb  R0,[Re6+93]      
3e3b: d7,43               jne   3e80             if (ECTCNT != 0) goto 3e80;
3e3d: c4,b6,34            stb   R34,Rb6          ECT = R34;
3e40: 20,4b               sjmp  3e8d             goto 3e8d; } }

3e42: 9b,e6,93,00         cmpb  R0,[Re6+93]      
3e46: d7,05               jne   3e4d             if (ECTCNT = 0)  {
3e48: b0,b7,b6            ldb   Rb6,Rb7          ECT = ACT;                        #  (sensor bad, start rolling average at ACT)
3e4b: 20,40               sjmp  3e8d             goto 3e8d; }

3e4d: 37,a5,05            jnb   B7,Ra5,3e55      if (b7_CRKFLG_a5 = 1)  {          # (crank mode)
3e50: bc,b7,34            ldsbw R34,Rb7          swR34 = ACT;                      # ECT = ROLAV(ACT),TCECT)
3e53: 20,2b               sjmp  3e80             goto 3e80; }                      # (sensor bad, infer ECT from ACT)

3e55: 35,a6,35            jnb   B5,Ra6,3e8d      if (B5_CFMFLG_a6 = 0) goto 3e8d;  # (every background loop)
3e58: b3,e4,15,30         ldb   R30,[Re4+15]     R30 = FMECTR;
3e5c: 17,30               incb  R30              R30++;
3e5e: d3,02               jnc   3e62             if (R30 > ff)  {                  # (clip at 255 as a max)
3e60: 15,30               decb  R30              R30--; }

# Perform ECT RAMP LOGIC
3e62: b1,01,34            ldb   R34,1            R34 = 1;
3e65: 9b,f6,3d,b6         cmpb  Rb6,[Rf6+3d]     
3e69: de,04               jlt   3e6f             if (ECT >= ECTFMM)  {
3e6b: df,0d               je    3e7a             if (ECT = ECTFMM) goto 3e7a;      # (ECT is already ECTFMM)
3e6d: 13,34               negb  R34              R34 = -R34; }                     # - 2 deg. F
3e6f: 9b,f6,3e,30         cmpb  R30,[Rf6+3e]     
3e73: d3,05               jnc   3e7a             if (R30 >= FMECNT)  {
3e75: 11,30               clrb  R30              R30 = 0;
3e77: 74,34,b6            ad2b  Rb6,R34          ECT += R34; } }                   # ECT = ECT +/- 2 deg. F (ramp up/down to ECTFMM)
3e7a: c7,e4,15,30         stb   R30,[Re4+15]     FMECTR = R30;
3e7e: 20,0d               sjmp  3e8d             goto 3e8d; }

3e80: bc,b6,32            ldsbw R32,Rb6          swR32 = ECT;
3e83: a3,f8,14,36         ldw   R36,[Rf8+14]     R36 = TCECT;
3e87: ef,cc,0a            call  4956             ROLAV ();
3e8a: b0,3e,b6            ldb   Rb6,R3e          ECT = R3e; }

# STRATEGY MODULE: INPUT_TOT_COM1
3e8d: 2a,4c               scall 40db             INPUT_TOT_COM1 ();
3e8f: 30,30,1c            jnb   B0,R30,3eae      if (B0_R30 = 1)  {
3e92: 9b,e6,93,00         cmpb  R0,[Re6+93]      
3e96: d7,06               jne   3e9e             if (ECTCNT = 0)  {
3e98: c3,e8,94,38         stw   R38,[Re8+94]     TOT = R38;                        # (sensor OK, start rolling average at actual value)
3e9c: 20,1c               sjmp  3eba             goto 3eba; }

3e9e: a3,e8,94,32         ldw   R32,[Re8+94]     R32 = TOT;                        # TOT
3ea2: a0,38,34            ldw   R34,R38          R34 = R38;                        # FN703D(ITOT)
3ea5: a3,f8,26,36         ldw   R36,[Rf8+26]     R36 = TCTOT;
3ea9: ef,aa,0a            call  4956             ROLAV ();                         # ROLAV(FN703D(ITOT),TCTOT)
3eac: 20,08               sjmp  3eb6             goto 3eb6; }                      # (sensor OK)

3eae: b0,b6,3f            ldb   R3f,Rb6          R3f = ECT;                        # (sensor bad, use ECT)
3eb1: 11,3e               clrb  R3e              R3e = 0;
3eb3: 0a,04,3e            asrw  R3e,4            swR3e >>= 4;
3eb6: c3,e8,94,3e         stw   R3e,[Re8+94]     TOT = R3e;
3eba: a3,e4,b6,14         ldw   R14,[Re4+b6]     R14 = PUTMR;
3ebe: 8b,f6,2c,14         cmpw  R14,[Rf6+2c]     
3ec2: d1,4e               jleu  3f12             if (R14 > TKYON2)  {              # PUTMR > TKYON2
3ec4: b3,e6,93,14         ldb   R14,[Re6+93]     R14 = ECTCNT;
3ec8: 99,08,14            cmpb  R14,8            
3ecb: db,45               jc    3f12             if (R14 < 8)  {                   # ECTCNT < 8
3ecd: 17,14               incb  R14              R14++;
3ecf: c7,e6,93,14         stb   R14,[Re6+93]     ECTCNT = R14;                     # ECTCNT = ECTCNT + 1
3ed3: b0,b7,41            ldb   R41,Rb7          R41 = ACT;
3ed6: 11,40               clrb  R40              R40 = 0;
3ed8: a0,40,42            ldw   R42,R40          R42 = R40;
3edb: 0a,03,40            asrw  R40,3            swR40 >>= 3;
3ede: 67,e6,62,40         ad2w  R40,[Re6+62]     R40 += ACSTRT;                    # ACSTRT + ACT/8
3ee2: c3,e6,62,40         stw   R40,[Re6+62]     ACSTRT = R40;
3ee6: 33,29,04            jnb   B3,R29,3eed      if (IECT_IN_RANGE = 1)  {
3ee9: a3,e8,5a,42         ldw   R42,[Re8+5a]     R42 = TCSTRT; }
3eed: 0a,03,42            asrw  R42,3            swR42 >>= 3;
3ef0: 64,42,b8            ad2w  Rb8,R42          Rb8 += R42;
3ef3: 29,e6               scall 40db             INPUT_TOT_COM1 ();
3ef5: 38,30,0f            jb    B0,R30,3f07      if (B0_R30 = 0)  {
3ef8: a3,e8,5a,38         ldw   R38,[Re8+5a]     R38 = TCSTRT;
3efc: 3b,29,05            jb    B3,R29,3f04      if (IECT_IN_RANGE = 0)  {
3eff: b0,b7,39            ldb   R39,Rb7          R39 = ACT;
3f02: 11,38               clrb  R38              R38 = 0; }
3f04: 0a,04,38            asrw  R38,4            swR38 >>= 4; }
3f07: 0a,03,38            asrw  R38,3            swR38 >>= 3;
3f0a: 67,e8,9a,38         ad2w  R38,[Re8+9a]     R38 += INIT_TOT;
3f0e: c3,e8,9a,38         stw   R38,[Re8+9a]     INIT_TOT = R38; } }
3f12: a1,00,02,32         ldw   R32,200          R32 = MDELTA;

 STRATEGY MODULE: INPUT_ETVOCM_COM1
3f16: 01,30               clrw  R30              R30 = 0;
3f18: 0c,03,30            shrdw R30,3            lR30 >>= 3;
3f1b: 8f,e4,8e,30         divw  R30,[Re4+8e]     wR30 /= IVCAL;
3f1f: dd,12               jv    3f33             if (OVF = 0)  {
3f21: 89,86,00,30         cmpw  R30,86           
3f25: d9,0c               jgtu  3f33             if (R30 <= 86)  {
3f27: 89,79,00,30         cmpw  R30,79           
3f2b: db,0a               jc    3f37             if (R30 >= 79) goto 3f37;
3f2d: a1,79,00,30         ldw   R30,79           R30 = 79;
3f31: 20,04               sjmp  3f37             goto 3f37; } }

3f33: a1,86,00,30         ldw   R30,86           R30 = 86; }
3f37: 6f,e8,c4,30         ml2w  R30,[Re8+c4]     lR30 *= IETVOCM;
3f3b: 0c,07,30            shrdw R30,7            lR30 >>= 7;
3f3e: 30,32,03            jnb   B0,R32,3f44      if (B0_R32 = 1)  {
3f41: bd,ff,30            ldsbw R30,ff           swR30 = ff; }
3f44: c3,e8,c2,30         stw   R30,[Re8+c2]     ETVOCM = R30;

 STRATEGY MODULE: INPUT_TP_COM3 
3f48: a3,e4,9c,16         ldw   R16,[Re4+9c]     R16 = ITP;
3f4c: a0,8a,1a            ldw   R1a,R8a          R1a = RATCH;
3f4f: 3a,a6,11            jb    B2,Ra6,3f63      if (B2_TFMFLG_a6 = 0)  {
3f52: 8b,fe,78,16         cmpw  R16,[Rfe+78]     
3f56: d3,0b               jnc   3f63             if (R16 >= TAPMIN)  {
3f58: 8b,fe,76,16         cmpw  R16,[Rfe+76]     
3f5c: d9,05               jgtu  3f63             if (R16 <= TAPMAX)  {
3f5e: a0,16,b2            ldw   Rb2,R16          TP = R16;                         # (TP sensor within acceptable range)
3f61: 20,1f               sjmp  3f82             goto 3f82; } } }

3f63: 3f,a5,19            jb    B7,Ra5,3f7f      if (b7_CRKFLG_a5 = 0)  {
3f66: 32,a6,19            jnb   B2,Ra6,3f82      if (B2_TFMFLG_a6 = 0) goto 3f82;
3f69: a1,80,3e,8a         ldw   R8a,3e80         RATCH = 3e80;
3f6d: ac,ba,38            ldzbw R38,Rba          wR38 = MAP;
3f70: ef,73,09            call  48e6             UUWFuncLU_48e6 (
3f73: 5c,61                     #arg 1              FN090,
3f75: 38,00                     #arg 2              38 );
3f77: 64,38,1a            ad2w  R1a,R38          R1a += R38;                       # RATCH + FN090(MAP)
3f7a: d3,03               jnc   3f7f             if (R1a > ffff)  {
3f7c: bd,ff,1a            ldsbw R1a,ff           swR1a = ff; } }
3f7f: a0,1a,b2            ldw   Rb2,R1a          TP = R1a; }                       # TP = RATCH (TP sensor out of limits)
3f82: ef,b6,04            call  443b             INFERRED_BAROMETRIC_PRESSURE_STRATEGY ();
3f85: ef,0e,1c            call  5b96             FUEL_AE_COM5 ();
3f88: 48,8a,b2,34         sb3w  R34,Rb2,R8a      R34 = TP - RATCH;                 # TP_REL = TP - RATCH
# CHANGE OF THROTTLE POSITION FILTER (TPDLBR)
# 
# TPDLBR is a time dependent rolling average filter of the change (or delta) in
# TP  on successive background loops.  It is updated each background pass while
# in Run or Underspeed mode.  TPDLBR is used in the light load RPM  oscillation
# spark  multiplier  logic.   The  time  constant,  TCTPDL,  is  a  calibration
# parameter.
3f8c: db,02               jc    3f90             if (R34 < 0)  {
3f8e: 01,34               clrw  R34              R34 = 0; }                        # (clip to 0 as a minimum)
3f90: c0,bc,34            stw   R34,Rbc          TP_REL = R34;                     # TP_REL = TP - RATCH
3f93: a3,e8,3e,36         ldw   R36,[Re8+3e]     R36 = TP_REL_LST;
3f97: c3,e8,3e,34         stw   R34,[Re8+3e]     TP_REL_LST = R34;                 # Previous value of TP_REL
3f9b: 08,01,34            shrw  R34,1            R34 >>= 1;
3f9e: 08,01,36            shrw  R36,1            R36 >>= 1;
3fa1: 68,36,34            sb2w  R34,R36          R34 -= R36;                       # TP_REL - TP_REL_LST
3fa4: a3,e8,40,32         ldw   R32,[Re8+40]     R32 = TPDLBR;
3fa8: a3,fa,16,36         ldw   R36,[Rfa+16]     R36 = TCTPDL;
3fac: ef,a7,09            call  4956             ROLAV ();
3faf: c3,e8,40,3e         stw   R3e,[Re8+40]     TPDLBR = R3e;                     # ROLAV(TP_REL - TP_REL_LST, TCTPDL)
3fb3: b3,fe,2d,42         ldb   R42,[Rfe+2d]     R42 = TRLOAD;
3fb7: 99,00,42            cmpb  R42,0            
3fba: df,23               je    3fdf             if (R42 != 0)  {
3fbc: 99,04,42            cmpb  R42,4            
3fbf: d1,14               jleu  3fd5             if (R42 > 4)  {
3fc1: 99,06,42            cmpb  R42,6            
3fc4: d7,21               jne   3fe7             if (R42 != 6) goto 3fe7;
3fc6: ef,e9,03            call  43b2             INTRN_MLPS_CONV_COM1 ();
3fc9: 99,0a,db            cmpb  Rdb,a            
3fcc: df,11               je    3fdf             if (PDL = a) goto 3fdf;
3fce: 99,0e,db            cmpb  Rdb,e            
3fd1: df,0c               je    3fdf             if (PDL = e) goto 3fdf;
3fd3: 20,12               sjmp  3fe7             goto 3fe7; }

3fd5: a3,e4,98,14         ldw   R14,[Re4+98]     R14 = INDS;
3fd9: 89,00,80,14         cmpw  R14,8000         
3fdd: db,08               jc    3fe7             if (R14 >= 8000) goto 3fe7; } } }
3fdf: 36,9f,0f            jnb   B6,R9f,3ff1      if (B6_NDSFLG_9f = 0) goto 3ff1;
3fe2: 71,bf,9f            an2b  R9f,bf           B6_NDSFLG_9f = 0;
3fe5: 20,06               sjmp  3fed             goto 3fed; } }

3fe7: 3e,9f,07            jb    B6,R9f,3ff1      if (B6_NDSFLG_9f = 0)  {          # (neutral indication)
3fea: 91,40,9f            orb   R9f,40           B6_NDSFLG_9f = 1;
3fed: c7,e4,d0,00         stb   R0,[Re4+d0]      NDDTIM = 0; } }
3ff1: b3,fe,2d,42         ldb   R42,[Rfe+2d]     R42 = TRLOAD;
3ff5: b3,e4,d0,16         ldb   R16,[Re4+d0]     R16 = NDDTIM;
3ff9: 36,9f,16            jnb   B6,R9f,4012      if (B6_NDSFLG_9f = 1)  {          # (drive indication)
3ffc: 99,03,42            cmpb  R42,3            
3fff: d1,0c               jleu  400d             if (R42 > 3)  {
4001: ef,61,08            call  4865             SUYFuncLU_4865 (
4004: 8c,00                     #arg 1              FN394F,
4006: b6,00                     #arg 2              ECT );
4008: 98,38,16            cmpb  R16,R38          
400b: d3,13               jnc   4020             if (R16 < R38) goto 4020; }
400d: 91,40,26            orb   R26,40           DNDSUP = 1;                       # (transmission engaged)
4010: 20,0e               sjmp  4020             goto 4020; }

4012: 99,03,42            cmpb  R42,3            
4015: d1,06               jleu  401d             if (R42 > 3)  {
4017: 9b,f0,58,16         cmpb  R16,[Rf0+58]     
401b: d3,03               jnc   4020             if (R16 < NDDELT) goto 4020; }
401d: 71,bf,26            an2b  R26,bf           DNDSUP = 0; } }                   # (transmission disengaged)
4020: 71,fe,9f            an2b  R9f,fe           SWTFL = 0;                        # EGOBAR <=855 counts-->EGOSTE (side)=rich(0)
4023: a3,e4,9a,14         ldw   R14,[Re4+9a]     R14 = IEGO1;
4027: 89,c0,d5,14         cmpw  R14,d5c0         
402b: db,08               jc    4035             if (R14 < d5c0)  {
402d: 39,9f,0e            jb    B1,R9f,403e      if (B1_EGO_IS_RICH_9f = 1) goto 403e;
4030: 91,02,9f            orb   R9f,2            B1_EGO_IS_RICH_9f = 1;
4033: 20,06               sjmp  403b             goto 403b; }

4035: 31,9f,06            jnb   B1,R9f,403e      if (B1_EGO_IS_RICH_9f = 1)  {
4038: 71,fd,9f            an2b  R9f,fd           B1_EGO_IS_RICH_9f = 0;
403b: 91,01,9f            orb   R9f,1            SWTFL = 1; } }
403e: 91,08,45            orb   R45,8            STIFLG = 1;
4041: 3a,52,06            jb    B2,R52,404a      if (B2_DCLST_START_52 = 0)  {
4044: 3b,8e,03            jb    B3,R8e,404a      if (B3_R8e = 0)  {
4047: 71,f7,45            an2b  R45,f7           STIFLG = 0; } }
404a: a3,f4,0e,36         ldw   R36,[Rf4+e]      R36 = VCAL;
404e: 01,34               clrw  R34              R34 = 0;
4050: a3,e4,8e,32         ldw   R32,[Re4+8e]     R32 = IVCAL;
4054: 88,32,00            cmpw  R0,R32           
4057: df,05               je    405e             if (R32 != 0)  {
4059: 8c,32,34            divw  R34,R32          wR34 /= R32;
405c: d5,06               jnv   4064             if (OVF = 0) goto 4064; }
405e: a1,fd,8d,34         ldw   R34,8dfd         R34 = 8dfd;
4062: 20,10               sjmp  4074             goto 4074; }

4064: 89,fd,8d,34         cmpw  R34,8dfd         
4068: d9,f4               jgtu  405e             if (R34 > 8dfd) goto 405e;
406a: 89,89,41,34         cmpw  R34,4189         
406e: d9,04               jgtu  4074             if (R34 <= 4189)  {
4070: a1,89,41,34         ldw   R34,4189         R34 = 4189; }
4074: 6f,f6,1a,34         ml2w  R34,[Rf6+1a]     lR34 *= KSF;
4078: a3,e4,8a,34         ldw   R34,[Re4+8a]     R34 = IIVPWR;
407c: 6c,36,34            ml2w  R34,R36          lR34 *= R36;
407f: 89,e1,1f,36         cmpw  R36,1fe1         
4083: d9,05               jgtu  408a             if (R36 <= 1fe1)  {
4085: 0d,03,34            shldw R34,3            lR34 <<= 3;
4088: 20,03               sjmp  408d             goto 408d; }

# BATTERY VOLTAGE (VBAT)
# 
#       The  VBAT  calculation  is  a  time  dependent  rolling  average  filter   of
#       instantaneous  battery  voltage.  It is updated each background pass while in
#       RUN or UNDERSPEED mode.  The VBAT  time  constant  TCVBAT  is  a  calibration
#       parameter and should be set to 0.1 seconds.
# 
# Instantaneous battery voltage is calculated from;
# VBAT' = IIVPWR * (VCAL/IVCAL) * KSF/IVCAL
# 
408a: b1,ff,37            ldb   R37,ff           R37 = ff;
408d: ac,91,32            ldzbw R32,R91          wR32 = VBAT;                      # old average
4090: ac,37,34            ldzbw R34,R37          wR34 = yR37;                      # new value
4093: a3,f8,28,36         ldw   R36,[Rf8+28]     R36 = TCVBAT;                     # TCxxxx
4097: ef,b5,08            call  494f             UROLAV ();
409a: c4,91,3e            stb   R3e,R91          VBAT = R3e;                       # VBAT = UROLAV(VBAT',TCVBAT)
409d: ef,d0,07            call  4870             UUYFuncLU_4870 (
40a0: 75,60                     #arg 1              FN367,
40a2: 91,00                     #arg 2              VBAT );
40a4: c7,e4,fa,38         stb   R38,[Re4+fa]     [17a] = R38;
40a8: 01,30               clrw  R30              R30 = 0;
40aa: b0,38,31            ldb   R31,R38          R31 = R38;
40ad: 6d,83,06,30         ml2w  R30,683          lR30 *= 683;
40b1: c3,e4,f8,32         stw   R32,[Re4+f8]     [178] = R32;
40b5: 28,40               scall 40f7             CNVRT ();
40b7: f0                  ret                    return;

   Compute_TCSTRT:
40b8: 71,f7,29            an2b  R29,f7           IECT_IN_RANGE = 0;                # Calculates (engine coolant temperature)
40bb: a3,e4,90,38         ldw   R38,[Re4+90]     R38 = IECT;
40bf: 8b,ff,80,00,38      cmpw  R38,[Rfe+80]     
40c4: d9,14               jgtu  40da             if (R38 <= ECTMAX)  {
40c6: 8b,fe,7e,38         cmpw  R38,[Rfe+7e]     
40ca: d3,0e               jnc   40da             if (R38 >= ECTMIN)  {
40cc: 91,08,29            orb   R29,8            IECT_IN_RANGE = 1;
40cf: ef,11,08            call  48e3             USWFuncLU_48e3 (
40d2: ea,01                     #arg 1              FN703,
40d4: 10,01                     #arg 2              IECT );
40d6: c3,e8,5a,38         stw   R38,[Re8+5a]     TCSTRT = R38; } }
40da: f0                  ret                    return;

   INPUT_TOT_COM1:
40db: 11,30               clrb  R30              R30 = 0;                          # Calculates  (transmission oil temperature)
40dd: a3,e4,88,38         ldw   R38,[Re4+88]     R38 = ITOT;
40e1: 8b,f6,14,38         cmpw  R38,[Rf6+14]     
40e5: d9,0f               jgtu  40f6             if (R38 <= TOTMAX)  {
40e7: 8b,f6,12,38         cmpw  R38,[Rf6+12]     
40eb: d3,09               jnc   40f6             if (R38 >= TOTMIN)  {
40ed: 17,30               incb  R30              R30++;
40ef: ef,f1,07            call  48e3             USWFuncLU_48e3 (
40f2: 12,02                     #arg 1              FN703D,
40f4: 38,00                     #arg 2              38 ); } }
40f6: f0                  ret                    return;

   CNVRT:
40f7: 33,a6,09            jnb   B3,Ra6,4103      if (B3_MFMFLG_a6 = 1)  {          # (MAP sensor failure)
40fa: 37,a5,1e            jnb   B7,Ra5,411b      if (b7_CRKFLG_a5 = 0) goto 411b;
40fd: a1,ef,00,38         ldw   R38,ef           R38 = ef;                         # 29.875
4101: 20,29               sjmp  412c             goto 412c; }                      # (crank mode and SCAP sensor have failed)

4103: b3,e6,96,38         ldb   R38,[Re6+96]     R38 = MAPTMR;
4107: 9b,ff,1c,01,38      cmpb  R38,[Rfe+11c]    
410c: db,0d               jc    411b             if (R38 < VMPMAX)  {
410e: fa                  di                     interrupts OFF;
410f: ff                  nop                    
4110: a3,e4,20,42         ldw   R42,[Re4+20]     R42 = LAST_MAP;
4114: 8b,e4,1e,42         cmpw  R42,[Re4+1e]     
4118: fb                  ei                     interrupts ON;
4119: d7,21               jne   413c             if (R42 != LAST_MAP2) goto 413c; } }
411b: 91,08,a6            orb   Ra6,8            B3_MFMFLG_a6 = 1;
411e: af,f6,3f,38         ldzbw R38,[Rf6+3f]     wR38 = MAPFMM;
4122: 3a,a6,07            jb    B2,Ra6,412c      if (B2_TFMFLG_a6 = 0)  {          # (throttle position sensor okay)
4125: ef,be,07            call  48e6             UUWFuncLU_48e6 (
4128: 78,61                     #arg 1              FN095,
412a: bc,00                     #arg 2              TP_REL ); }
412c: c4,ba,38            stb   R38,Rba          MAP = R38;
412f: 09,05,38            shlw  R38,5            R38 <<= 5;
4132: c3,e4,a4,38         stw   R38,[Re4+a4]     MAP_WORD = R38;
4136: 91,01,a1            orb   Ra1,1            B0_MAPUP_NORM_a1 = 1;
4139: 91,40,a0            orb   Ra0,40           B6_MUPET_FLAG_a0 = 1; }
413c: 32,a5,0e            jnb   B2,Ra5,414d      if (B2_APT_a5 = 1)  {
413f: 3e,a5,0b            jb    B6,Ra5,414d      if (UNDSP = 0)  {
4142: 9b,fe,0c,00         cmpb  R0,[Rfe+c]       
4146: df,05               je    414d             if (LONG_MAP_RQD != 0)  {
4148: 91,80,52            orb   R52,80           B7_LONG_MAP_AVG_52 = 1;
414b: 20,03               sjmp  4150             goto 4150; } } }

414d: 71,7f,52            an2b  R52,7f           B7_LONG_MAP_AVG_52 = 0;
4150: ac,ba,3e            ldzbw R3e,Rba          wR3e = MAP;
4153: 09,07,3e            shlw  R3e,7            R3e <<= 7;
4156: 9c,bb,3e            divb  R3e,Rbb          yR3e /= BP;
4159: dd,03               jv    415e             if (OVF = 0)  {
415b: 37,3e,03            jnb   B7,R3e,4161      if (B7_R3e = 0) goto 4161; }
415e: b1,80,3e            ldb   R3e,80           R3e = 80; }
4161: c4,a9,3e            stb   R3e,Ra9          MAPPA = R3e;
4164: ac,3e,38            ldzbw R38,R3e          wR38 = yR3e;
4167: ef,7c,07            call  48e6             UUWFuncLU_48e6 (
416a: 1a,03                     #arg 1              FN072A,
416c: 38,00                     #arg 2              38 );
416e: c3,e8,c6,38         stw   R38,[Re8+c6]     FN072A_MAPPA_y = R38;
4172: fa                  di                     interrupts OFF;
4173: ff                  nop                    
4174: af,e8,03,42         ldzbw R42,[Re8+3]      wR42 = MPHCNT;
4178: a3,e6,98,30         ldw   R30,[Re6+98]     R30 = MPHTIM1;
417c: b3,e6,9a,32         ldb   R32,[Re6+9a]     R32 = MPHTIM1H;
4180: c7,e8,03,00         stb   R0,[Re8+3]       MPHCNT = 0;
4184: fb                  ei                     interrupts ON;
4185: 01,34               clrw  R34              R34 = 0;
4187: 9b,fe,2f,00         cmpb  R0,[Rfe+2f]      
418b: df,09               je    4196             if (VSTYPE != 0)  {
418d: b3,e8,04,36         ldb   R36,[Re8+4]      R36 = TSLMPH;
4191: 99,ff,36            cmpb  R36,ff           
4194: d3,0b               jnc   41a1             if (R36 < ff) goto 41a1; }
4196: 71,7f,a0            an2b  Ra0,7f           B7_FIRST_MPH_a0 = 0;
4199: 8b,e6,84,00         cmpw  R0,[Re6+84]      
419d: df,62               je    4201             if (VS = 0) goto 4201;
419f: 20,35               sjmp  41d6             goto 41d6; }

41a1: a3,e6,84,34         ldw   R34,[Re6+84]     R34 = VS;
41a5: 98,00,42            cmpb  R42,R0           
41a8: df,5b               je    4205             if (R42 = 0) goto 4205;
41aa: ac,32,16            ldzbw R16,R32          wR16 = yR32;
41ad: 4b,e6,9c,30,14      sb3w  R14,R30,[Re6+9c] R14 = R30 - MPHTIM2;
41b2: bb,e6,9e,16         sbbb  R16,[Re6+9e]     R16 -= MPHTIM2H - CY;
41b6: 8c,42,14            divw  R14,R42          wR14 /= R42;
41b9: d5,03               jnv   41be             if (OVF = 1)  {
41bb: bd,ff,14            ldsbw R14,ff           swR14 = ff; }
41be: a1,c7,05,36         ldw   R36,5c7          R36 = 5c7;
41c2: a1,80,a3,34         ldw   R34,a380         R34 = a380;
41c6: 8c,14,34            divw  R34,R14          wR34 /= R14;
41c9: d5,03               jnv   41ce             if (OVF = 1)  {
41cb: bd,ff,34            ldsbw R34,ff           swR34 = ff; }
41ce: c3,e6,9c,30         stw   R30,[Re6+9c]     MPHTIM2 = R30;
41d2: c7,e6,9e,32         stb   R32,[Re6+9e]     MPHTIM2H = R32;

VSCTR LOGIC
41d6: 4b,e6,84,34,36      sb3w  R36,R34,[Re6+84] R36 = R34 - VS;
41db: db,02               jc    41df             if (R36 < 0)  {
41dd: 03,36               negw  R36              R36 = -R36; }
41df: b3,e6,bb,38         ldb   R38,[Re6+bb]     R38 = VSCTR;
41e3: 9b,fd,e7,00,37      cmpb  R37,[Rfc+e7]     
41e8: d1,0c               jleu  41f6             if (R37 > VSDELT)  {
41ea: 77,fd,e6,00,38      ad2b  R38,[Rfc+e6]     R38 += VSCNT;
41ef: d3,0c               jnc   41fd             if (R38 <= ff) goto 41fd;
41f1: b1,ff,38            ldb   R38,ff           R38 = ff;
41f4: 20,07               sjmp  41fd             goto 41fd; }

41f6: 98,00,38            cmpb  R38,R0           
41f9: df,06               je    4201             if (R38 = 0) goto 4201;
41fb: 15,38               decb  R38              R38--; }
41fd: c7,e6,bb,38         stb   R38,[Re6+bb]     VSCTR = R38; } }
4201: c3,e6,84,34         stw   R34,[Re6+84]     VS = R34; }
4205: a0,8c,32            ldw   R32,R8c          R32 = R8c;
4208: a3,f8,2a,36         ldw   R36,[Rf8+2a]     R36 = TCVS;
420c: ef,40,07            call  494f             UROLAV ();
420f: c0,8c,3e            stw   R3e,R8c          R8c = R3e;

ENGINE SPEED CALCULATION (EQNCALC)
4212: a3,e4,c2,14         ldw   R14,[Re4+c2]     R14 = TSLPIP;
4216: 89,33,03,14         cmpw  R14,333          
421a: d3,38               jnc   4254             if (R14 >= 333)  {                # (engine is stopped)
421c: 71,ef,50            an2b  R50,ef           B4_First_pip = 0;
421f: 71,7f,45            an2b  R45,7f           B7_REFLG_45 = 0;
4222: 01,b4               clrw  Rb4              N_RPM = 0;
4224: c7,e4,6a,00         stb   R0,[Re4+6a]      N_BYTE = 0;
4228: c3,e8,24,00         stw   R0,[Re8+24]      N_PREV = 0;
422c: c3,e8,1a,00         stw   R0,[Re8+1a]      DNDTI = 0;
4230: c3,e8,18,00         stw   R0,[Re8+18]      DNDT_ISC = 0;
4234: c3,e8,42,00         stw   R0,[Re8+42]      DNDT_SPK = 0;
4238: c3,e4,9e,00         stw   R0,[Re4+9e]      NBAR = 0;
423c: b3,fe,30,42         ldb   R42,[Rfe+30]     R42 = IGN_TYPE;                   # Indicator of ignition type
4240: 99,02,42            cmpb  R42,2            
4243: d7,0d               jne   4252             if (R42 = 2)  {                   # 2 = Low Data Rate Distributorless dual plug (LDR_DIS)
4245: fa                  di                     interrupts OFF;
4246: ff                  nop                    
4247: a1,da,22,88         ldw   R88,22da         TablePTR = 22da;
424b: 91,08,4c            orb   R4c,8            B3_Immediate = 1;
424e: ef,7c,e7            call  29cd             Send_HSO_Cmd ();
4251: fb                  ei                     interrupts ON; }
4252: 20,e4               sjmp  4338             goto 4338; }

4254: 3b,4e,02            jb    B3,R4e,4259      if (B3_NEW_RPM_4e = 0)  {         # No action
4257: 21,04               sjmp  435d             goto 435d; }                      # EXIT RPM LOGIC

# (new PIP information is available for calculation of rpm)
4259: 71,f7,4e            an2b  R4e,f7           B3_NEW_RPM_4e = 0;
425c: af,f6,05,34         ldzbw R34,[Rf6+5]      wR34 = ENGCYL;
4260: a3,35,5c,43,32      ldw   R32,[R34+435c]   R32 = [R34+435c];
4265: a3,35,62,43,30      ldw   R30,[R34+4362]   R30 = [R34+4362];
426a: 0f,42,30            norm  R30,R42          R42 = normalize(lR30);
426d: fa                  di                     interrupts OFF;
426e: a0,c4,34            ldw   R34,Rc4          R34 = DT12S;
4271: ac,c6,36            ldzbw R36,Rc6          wR36 = yRc6;
4274: a0,7a,18            ldw   R18,R7a          R18 = LAST_HI_PIP;
4277: ac,7c,1a            ldzbw R1a,R7c          wR1a = Prev_PIP_timeH;
427a: fb                  ei                     interrupts ON;
427b: 0f,38,34            norm  R34,R38          R38 = normalize(lR34);
427e: b1,10,39            ldb   R39,10           R39 = 10;
4281: ef,4d,1a            call  5cd1             Sub_5cd1 ();
4284: c3,e8,24,b4         stw   Rb4,[Re8+24]     N_PREV = N_RPM;
4288: a0,30,b4            ldw   Rb4,R30          N_RPM = R30;                      # N = 60/(ENGCYL * PIP period)
428b: fa                  di                     interrupts OFF;
428c: a0,7a,30            ldw   R30,R7a          R30 = LAST_HI_PIP;
428f: ac,7c,32            ldzbw R32,R7c          wR32 = Prev_PIP_timeH;
4292: 6b,e8,38,30         sb2w  R30,[Re8+38]     R30 -= PREV_N_PIP;
4296: bb,e8,3a,32         sbbb  R32,[Re8+3a]     R32 -= [3ba] - CY;
429a: a0,7a,42            ldw   R42,R7a          R42 = LAST_HI_PIP;
429d: c3,e8,38,42         stw   R42,[Re8+38]     PREV_N_PIP = R42;
42a1: b0,7c,42            ldb   R42,R7c          R42 = Prev_PIP_timeH;
42a4: c7,e8,3a,42         stb   R42,[Re8+3a]     [3ba] = R42;
42a8: fb                  ei                     interrupts ON;
42a9: 8d,97,01,30         divw  R30,197          wR30 /= 197;
42ad: d5,03               jnv   42b2             if (OVF = 1)  {
42af: bd,ff,30            ldsbw R30,ff           swR30 = ff; }
42b2: c3,e8,2c,30         stw   R30,[Re8+2c]     DT_DNDT = R30;
42b6: 11,3e               clrb  R3e              R3e = 0;
42b8: 01,34               clrw  R34              R34 = 0;
42ba: 4b,e8,24,b4,36      sb3w  R36,Rb4,[Re8+24] R36 = N_RPM - N_PREV;
42bf: db,04               jc    42c5             if (R36 < 0)  {
42c1: 17,3e               incb  R3e              R3e++;
42c3: 03,36               negw  R36              R36 = -R36; }
42c5: 0c,06,34            shrdw R34,6            lR34 >>= 6;
42c8: 8c,30,34            divw  R34,R30          wR34 /= R30;
42cb: dd,03               jv    42d0             if (OVF = 0)  {
42cd: 37,35,04            jnb   B7,R35,42d4      if (B7_R35 = 0) goto 42d4; }
42d0: a1,ff,7f,34         ldw   R34,7fff         R34 = 7fff; }
42d4: 30,3e,02            jnb   B0,R3e,42d9      if (B0_R3e = 1)  {
42d7: 03,34               negw  R34              R34 = -R34; }
42d9: c3,e8,1a,34         stw   R34,[Re8+1a]     DNDTI = R34;                      # DNDTI = (N - N_PREV)/DT_DNDT
42dd: a3,e8,42,32         ldw   R32,[Re8+42]     R32 = DNDT_SPK;
42e1: a3,fa,14,36         ldw   R36,[Rfa+14]     R36 = TCNDT_SPK;
42e5: 91,02,a5            orb   Ra5,2            BG_TMR_DISABLE = 1;
42e8: a3,e8,2c,3e         ldw   R3e,[Re8+2c]     R3e = DT_DNDT;
42ec: ef,67,06            call  4956             ROLAV ();
42ef: c3,e8,42,3e         stw   R3e,[Re8+42]     DNDT_SPK = R3e;                   # DNDT_SPK = ROLAV(DNDTI,TCNDT_SPK)
42f3: a3,e8,18,32         ldw   R32,[Re8+18]     R32 = DNDT_ISC;
42f7: a3,f8,1e,36         ldw   R36,[Rf8+1e]     R36 = TCNDT_ISC;
42fb: 91,02,a5            orb   Ra5,2            BG_TMR_DISABLE = 1;
42fe: a3,e8,2c,3e         ldw   R3e,[Re8+2c]     R3e = DT_DNDT;
4302: ef,51,06            call  4956             ROLAV ();
4305: c3,e8,18,3e         stw   R3e,[Re8+18]     DNDT_ISC = R3e;                   # DNDT_ISC = ROLAV(DNDTI,TCNDT_ISC)

N_BYTE = byte value of N
4309: a0,b4,36            ldw   R36,Rb4          R36 = N_RPM;
430c: 08,06,36            shrw  R36,6            R36 >>= 6;
430f: 98,00,37            cmpb  R37,R0           
4312: df,03               je    4317             if (R37 != 0)  {
4314: b1,ff,36            ldb   R36,ff           R36 = ff; }
4317: c7,e4,6a,36         stb   R36,[Re4+6a]     N_BYTE = R36;                     # (resolution = 16, max value = 4080)

Calculate NBAR
431b: a3,e4,9e,32         ldw   R32,[Re4+9e]     R32 = NBAR;
431f: a0,b4,34            ldw   R34,Rb4          R34 = N_RPM;
4322: 35,2a,08            jnb   B5,R2a,432d      if (?RUNNING? = 1)  {
4325: 47,ff,9e,00,00,36   ad3w  R36,R0,[Rfe+9e]  R36 = TCN;
432b: d7,04               jne   4331             if (R36 != 0) goto 4331; }
432d: a3,f8,1c,36         ldw   R36,[Rf8+1c]     R36 = TC; }
4331: ef,1b,06            call  494f             UROLAV ();
4334: c3,e4,9e,3e         stw   R3e,[Re4+9e]     NBAR = R3e;                       # NBAR = UROLAV(N,TCN)

Look up normalized N
4338: ef,ab,05            call  48e6             UUWFuncLU_48e6 (
433b: fe,02                     #arg 1              FN070L,
433d: b4,00                     #arg 2              N_RPM );
433f: c3,e6,58,38         stw   R38,[Re6+58]     FN070L_N_x = R38;
4343: ef,a0,05            call  48e6             UUWFuncLU_48e6 (
4346: 96,03                     #arg 1              FN039,
4348: b4,00                     #arg 2              N_RPM );
434a: c3,e6,5a,38         stw   R38,[Re6+5a]     FN039_N_x = R38;

FIRST_RPM and REFLG LOGIC
434e: 3d,45,0c            jb    B5,R45,435d      if (B5_FIRST_RPM_45 = 0)  {
4351: 91,20,45            orb   R45,20           B5_FIRST_RPM_45 = 1;
4354: 8b,f0,3c,b4         cmpw  Rb4,[Rf0+3c]     
4358: d3,03               jnc   435d             if (N_RPM >= STALLN)  {
435a: 91,80,45            orb   R45,80           B7_REFLG_45 = 1; } }              # (this is a re-init)
435d: 28,0d               scall 436c             ENGINE_SPEED_OVER_VEHICLE_SPEED_NOVS_&_BPCOR ();  # EXIT RPM LOGIC
435f: f0                  ret                    return;

4360: fa,02               word    2fa
4362: fc,01               word    1fc
4364: 7d,01               word    17d
4366: 80,f0               word   f080
4368: 55,a0               word   a055
436a: 40,78               word   7840

   ENGINE_SPEED_OVER_VEHICLE_SPEED_NOVS_&_BPCOR:
436c: ef,01,05            call  4870             UUYFuncLU_4870 (
436f: 59,a0                     #arg 1              FN004,
4371: bb,00                     #arg 2              BP );
4373: c7,e4,e8,38         stb   R38,[Re4+e8]     BPCOR = R38;                      # BPCOR = BP corrected = FN004(BP).
4377: 99,0a,8d            cmpb  R8d,a            
437a: d9,02               jgtu  437e             if (VSBAR <= a)  {                # (vehicle speed low)  
437c: 20,26               sjmp  43a4             goto 43a4; }

437e: 31,9e,0e            jnb   B1,R9e,438f      if (B1_E4OD_9e = 1)  {            # TSTRAT = 4 (C6E4)
4381: 3b,a2,0b            jb    B3,Ra2,438f      if (B3_FLG_LK_CM_a2 = 0)  {
4384: b1,01,14            ldb   R14,1            R14 = 1;
4387: 9b,f4,30,14         cmpb  R14,[Rf4+30]     
438b: d7,02               jne   438f             if (R14 = MPGLSW)  {              # (auto trans, clutch unlocked)
438d: 20,15               sjmp  43a4             goto 43a4; } } }

438f: ac,8d,34            ldzbw R34,R8d          wR34 = VSBAR;
4392: a0,b4,1c            ldw   R1c,Rb4          R1c = N_RPM;
4395: 01,1e               clrw  R1e              R1e = 0;
4397: 8c,34,1c            divw  R1c,R34          wR1c /= R34;                      # NOVS = N/VSBAR
439a: dd,08               jv    43a4             if (OVF = 0)  {
439c: 08,01,1c            shrw  R1c,1            R1c >>= 1;
439f: 99,00,1d            cmpb  R1d,0            
43a2: df,03               je    43a7             if (R1d = 0) goto 43a7; }
43a4: b1,ff,1c            ldb   R1c,ff           R1c = ff; }                       # NOVS = 255
43a7: c7,e6,9f,1c         stb   R1c,[Re6+9f]     NOVS = R1c;
43ab: f0                  ret                    return;

43ac: 0e                  byte      e
43ad: 0c                  byte      c
43ae: 0a                  byte      a
43af: 08                  byte      8
43b0: 04                  byte      4
43b1: 02                  byte      2

   INTRN_MLPS_CONV_COM1:
43b2: 45,1c,01,fc,e2      ad3w  Re2,Rfc,11c      Re2 = VSPMIN;
43b7: b0,db,42            ldb   R42,Rdb          R42 = PDL;
43ba: c7,e8,d9,42         stb   R42,[Re8+d9]     PDL_LST = R42;
43be: 91,04,4b            orb   R4b,4            B2_PDL_ERROR_4b = 1;
43c1: 71,fe,4b            an2b  R4b,fe           B0_PARK_ERR_4b = 0;
43c4: a3,e4,98,42         ldw   R42,[Re4+98]     R42 = INDS;
43c8: 45,00,01,fc,30      ad3w  R30,Rfc,100      R30 = MAN1LO;
43cd: ad,06,32            ldzbw R32,6            wR32 = 6;
43d0: b3,fd,19,01,34      ldb   R34,[Rfc+119]    R34 = MLPS_2hobyte;
43d5: 8a,31,42            cmpw  R42,[R30++]      
43d8: d1,31               jleu  440b             if (R42 > [R30++])  {
43da: 8a,31,42            cmpw  R42,[R30++]      
43dd: d3,05               jnc   43e4             if (R42 >= [R30++])  {
43df: e0,32,f3            djnz  R32,43d5         R32--;
                                                 if (R32 != 0) goto 43d5;
43e2: 20,27               sjmp  440b             goto 440b; }

43e4: 99,01,32            cmpb  R32,1            
43e7: d7,0f               jne   43f8             if (R32 = 1)  {
43e9: a3,e6,84,36         ldw   R36,[Re6+84]     R36 = VS;
43ed: 8b,e2,00,36         cmpw  R36,[Re2+0]      
43f1: d1,10               jleu  4403             if (R36 <= VSPMIN) goto 4403;
43f3: 91,01,4b            orb   R4b,1            B0_PARK_ERR_4b = 1;
43f6: 20,13               sjmp  440b             goto 440b; }

43f8: 99,05,32            cmpb  R32,5            
43fb: d7,06               jne   4403             if (R32 = 5)  {
43fd: b3,e2,fc,34         ldb   R34,[Re2+fc]     R34 = MLPS_2;
4401: 20,05               sjmp  4408             goto 4408; } }

4403: b3,33,ab,43,34      ldb   R34,[R32+43ab]   R34 = [R32+43ab];                 # FMMMLP = IPDL value when PDL_ERROR is present.
4408: 71,fb,4b            an2b  R4b,fb           B2_PDL_ERROR_4b = 0; }
440b: 99,08,34            cmpb  R34,8            
440e: d7,0f               jne   441f             if (R34 = 8)  {
4410: 37,e0,0c            jnb   B7,Re0,441f      if (B7_FLG_TCS_e0 = 1)  {
4413: b3,e2,fc,30         ldb   R30,[Re2+fc]     R30 = MLPS_2;
4417: 99,04,30            cmpb  R30,4            
441a: d7,03               jne   441f             if (R30 = 4)  {
441c: b1,06,34            ldb   R34,6            R34 = 6; } } }
441f: 9b,e8,d8,34         cmpb  R34,[Re8+d8]     
4423: df,0c               je    4431             if (R34 != IPDL_LST)  {
4425: a3,e2,fe,42         ldw   R42,[Re2+fe]     R42 = PDLTIM;
4429: c3,e8,e6,42         stw   R42,[Re8+e6]     TM_PDL_RES = R42;
442d: c7,e8,d8,34         stb   R34,[Re8+d8]     IPDL_LST = R34; }
4431: 8b,e8,e6,00         cmpw  R0,[Re8+e6]      
4435: d7,03               jne   443a             if (TM_PDL_RES = 0)  {            # TM_PDL_RES = 0(MLPS reading is stable)
4437: c4,db,34            stb   R34,Rdb          PDL = R34; }                      # PDL = IPDL (let input value pass through)
443a: f0                  ret                    return;

   INFERRED_BAROMETRIC_PRESSURE_STRATEGY:
443b: 37,a5,02            jnb   B7,Ra5,4440      if (b7_CRKFLG_a5 = 1)  {
443e: 20,d4               sjmp  4514             goto 4514; }

4440: 01,3a               clrw  R3a              R3a = 0;
4442: 4b,e6,a0,b2,38      sb3w  R38,Rb2,[Re6+a0] R38 = TP - OLDTP;
4447: db,07               jc    4450             if (R38 < 0)  {
4449: 03,38               negw  R38              R38 = -R38;
444b: a0,38,3a            ldw   R3a,R38          R3a = R38;
444e: 01,38               clrw  R38              R38 = 0; }
4450: b3,e6,af,36         ldb   R36,[Re6+af]     R36 = MAPAEF;
4454: 7b,e6,ae,36         sb2b  R36,[Re6+ae]     R36 -= AEMAP;
4458: d3,0b               jnc   4465             if (R36 >= 0)  {
445a: 9b,f6,5c,36         cmpb  R36,[Rf6+5c]     
445e: d3,07               jnc   4467             if (R36 < AEDLMP) goto 4467;
4460: 91,20,29            orb   R29,20           B5_TARFLG_29 = 1;
4463: 20,18               sjmp  447d             goto 447d; }

4465: 11,36               clrb  R36              R36 = 0; }
4467: 8b,fe,12,3a         cmpw  R3a,[Rfe+12]     
446b: db,0d               jc    447a             if (R3a < TPDLTA)  {
446d: 4b,e4,ae,b2,34      sb3w  R34,Rb2,[Re4+ae] R34 = TP - AETP;
4472: d3,06               jnc   447a             if (R34 >= 0)  {
4474: 8b,f6,5e,34         cmpw  R34,[Rf6+5e]     
4478: db,03               jc    447d             if (R34 >= SMTPDL) goto 447d; } }
447a: 71,df,29            an2b  R29,df           B5_TARFLG_29 = 0; }
447d: 8b,fe,12,38         cmpw  R38,[Rfe+12]     
4481: d3,52               jnc   44d5             if (R38 >= TPDLTA)  {
4483: 9b,f6,5c,36         cmpb  R36,[Rf6+5c]     
4487: db,03               jc    448c             if (R36 < AEDLMP)  {
4489: 3d,29,b2            jb    B5,R29,443e      if (B5_TARFLG_29 = 1) goto 443e; }
448c: fa                  di                     interrupts OFF;
448d: 4d,15,00,38,30      ml3w  R30,R38,15       lR30 = wR38 * 15;
4492: 48,84,06,76         sb3w  R76,R6,R84       R76 = IO_Timer - Reftime;
4496: 64,76,84            ad2w  R84,R76          Reftime += R76;
4499: b4,00,86            adcb  R86,R0           ReftimeH += CY;
449c: ac,86,16            ldzbw R16,R86          wR16 = ReftimeH;
449f: 4b,e4,b0,84,14      sb3w  R14,R84,[Re4+b0] R14 = Reftime - [130];
44a4: bb,e4,b2,16         sbbb  R16,[Re4+b2]     R16 -= [132] - CY;
44a8: fb                  ei                     interrupts ON;
44a9: 0c,06,14            shrdw R14,6            lR14 >>= 6;
44ac: 8c,14,30            divw  R30,R14          wR30 /= R14;
44af: dd,06               jv    44b7             if (OVF = 0)  {
44b1: 89,a0,0f,30         cmpw  R30,fa0          
44b5: d3,04               jnc   44bb             if (R30 < fa0) goto 44bb; }
44b7: a1,a0,0f,30         ldw   R30,fa0          R30 = fa0; }
44bb: 88,30,b0            cmpw  Rb0,R30          
44be: d3,10               jnc   44d0             if (TAR >= R30)  {
44c0: a0,b0,32            ldw   R32,Rb0          R32 = TAR;
44c3: a0,30,34            ldw   R34,R30          R34 = R30;
44c6: a3,f8,20,36         ldw   R36,[Rf8+20]     R36 = TCTAR;
44ca: ef,82,04            call  494f             UROLAV ();
44cd: a0,3e,30            ldw   R30,R3e          R30 = R3e; }
44d0: a0,30,b0            ldw   Rb0,R30          TAR = R30;
44d3: 20,41               sjmp  4516             goto 4516; }

44d5: 88,00,38            cmpw  R38,R0           
44d8: d1,14               jleu  44ee             if (R38 > 0)  {
44da: 9b,f6,5c,36         cmpb  R36,[Rf6+5c]     
44de: db,03               jc    44e3             if (R36 < AEDLMP)  {
44e0: 3d,29,0b            jb    B5,R29,44ee      if (B5_TARFLG_29 = 1) goto 44ee; }
44e3: b3,e4,d1,33         ldb   R33,[Re4+d1]     R33 = [151];
44e7: 9b,f6,60,33         cmpb  R33,[Rf6+60]     
44eb: db,01               jc    44ee             if (R33 < MAXTTM)  {
44ed: f0                  ret                    return; } } }

44ee: 35,29,06            jnb   B5,R29,44f7      if (B5_TARFLG_29 = 1)  {
44f1: 9b,f6,5c,36         cmpb  R36,[Rf6+5c]     
44f5: d3,1d               jnc   4514             if (R36 < AEDLMP) goto 4514; }
44f7: 8b,fe,12,3a         cmpw  R3a,[Rfe+12]     
44fb: db,17               jc    4514             if (R3a < TPDLTA)  {
44fd: 4b,e4,ae,b2,38      sb3w  R38,Rb2,[Re4+ae] R38 = TP - AETP;
4502: d3,10               jnc   4514             if (R38 >= 0)  {
4504: 8b,f6,5e,38         cmpw  R38,[Rf6+5e]     
4508: d3,0a               jnc   4514             if (R38 >= SMTPDL)  {
450a: b3,e4,d1,33         ldb   R33,[Re4+d1]     R33 = [151];
450e: 9b,f6,5d,33         cmpb  R33,[Rf6+5d]     
4512: d1,06               jleu  451a             if (R33 <= MAXAET) goto 451a; } } } }
4514: 01,b0               clrw  Rb0              TAR = 0;
4516: c7,e4,d1,00         stb   R0,[Re4+d1]      [151] = 0; }
451a: fa                  di                     interrupts OFF;
451b: c3,e6,a0,b2         stw   Rb2,[Re6+a0]     OLDTP = TP;
451f: 48,84,06,76         sb3w  R76,R6,R84       R76 = IO_Timer - Reftime;
4523: 64,76,84            ad2w  R84,R76          Reftime += R76;
4526: b4,00,86            adcb  R86,R0           ReftimeH += CY;
4529: c3,e4,b0,84         stw   R84,[Re4+b0]     [130] = Reftime;
452d: c7,e4,b2,86         stb   R86,[Re4+b2]     [132] = ReftimeH;
4531: fb                  ei                     interrupts ON;
4532: f0                  ret                    return;

   SPEED_DENSITY_AIR_MASS_CALCULATION:
4533: 37,a5,01            jnb   B7,Ra5,4537      if (b7_CRKFLG_a5 = 1)  {
4536: f0                  ret                    return; }

4537: a3,e4,a4,38         ldw   R38,[Re4+a4]     R38 = MAP_WORD;
453b: c3,e6,64,38         stw   R38,[Re6+64]     MAPWBG = R38;
453f: 11,22               clrb  R22              R22 = 0;
4541: ef,21,03            call  4865             SUYFuncLU_4865 (
4544: 61,60                     #arg 1              FN305,
4546: b7,00                     #arg 2              ACT );
4548: b0,38,3c            ldb   R3c,R38          R3c = R38;
454b: 45,8d,00,f6,1e      ad3w  R1e,Rf6,8d       R1e = FN1320;
4550: a3,e6,64,20         ldw   R20,[Re6+64]     R20 = MAPWBG;
4554: 28,53               scall 45a9             Compute_AMPEM_AMPEMT ();
4556: c3,e4,ee,38         stw   R38,[Re4+ee]     AMPEM = R38;
455a: 28,c7               scall 4623             Subtract_EM ();
455c: c0,9a,3a            stw   R3a,R9a          AM = R3a;                         # AM is used to calculate fuel flow in the FUELPW calculation
455f: a3,e4,f6,3c         ldw   R3c,[Re4+f6]     R3c = KAMRF1;
4563: 6c,9a,3c            ml2w  R3c,R9a          lR3c *= AM;
4566: c3,e4,f2,3e         stw   R3e,[Re4+f2]     [172] = R3e;
456a: 11,42               clrb  R42              R42 = 0;
456c: 3e,29,02            jb    B6,R29,4571      if (B6_REFFLG_29 = 0)  {
456f: 17,42               incb  R42              R42++; }                          # Previous value of REFFLG = 0
4571: ef,1b,12            call  578f             FUEL_IDLE_MOD_COM3 ();            # FUEL STRATEGY, IDLE FUEL MODULATION
4574: 36,29,07            jnb   B6,R29,457e      if (B6_REFFLG_29 = 1)  {          # Current value of REFFLG = 1
4577: 30,42,04            jnb   B0,R42,457e      if (B0_R42 = 1)  {
457a: c7,e4,3a,00         stb   R0,[Re4+3a]      EGO_CNT_IDLE = 0; } }
457e: ef,65,03            call  48e6             UUWFuncLU_48e6 (
4581: 30,a3                     #arg 1              FN074A,
4583: 9a,00                     #arg 2              AM );
4585: 6d,00,ef,38         ml2w  R38,ef00         lR38 *= ef00;                     # FN074A(AM) * (29.875 ... # 29.875 * 2048 = 61184 = 0xEF00
4589: b3,e4,e8,35         ldb   R35,[Re4+e8]     R35 = BPCOR;
458d: 11,34               clrb  R34              R34 = 0;
458f: 8c,34,38            divw  R38,R34          wR38 /= R34;                      # FN074A(AM) * (29.875/BPCOR)
4592: ac,bb,34            ldzbw R34,Rbb          wR34 = BP;
4595: 64,34,38            ad2w  R38,R34          R38 += R34;                       # ABSOLUTE EXHAUST PRESSURE(PEXH)= FN074A(AM) * (29.875/BPCOR) + BP
4598: a3,e4,a4,34         ldw   R34,[Re4+a4]     R34 = MAP_WORD;
459c: 01,36               clrw  R36              R36 = 0;
459e: 0d,02,34            shldw R34,2            lR34 <<= 2;
45a1: 8c,38,34            divw  R34,R38          wR34 /= R38;                      # MAP/PEXH
45a4: c7,e4,6b,34         stb   R34,[Re4+6b]     MAPOPE = R34;                     # NOTE:  MAPOPE = MAP/PEXH
45a8: f0                  ret                    return;

   Compute_AMPEM_AMPEMT:
45a9: ef,b9,02            call  4865             SUYFuncLU_4865 (
45ac: 6b,60                     #arg 1              FN326,
45ae: b6,00                     #arg 2              ECT );
45b0: 7c,38,3c            ml2b  R3c,R38          wR3c *= R38;                      # R3c is either FN305 or FN405
45b3: a3,e6,58,30         ldw   R30,[Re6+58]     R30 = FN070L_N_x;
45b7: af,e4,6b,38         ldzbw R38,[Re4+6b]     wR38 = MAPOPE;
45bb: ef,28,03            call  48e6             UUWFuncLU_48e6 (
45be: 8e,02                     #arg 1              FN021_MAPOPE_y_load,
45c0: 38,00                     #arg 2              38 );
45c2: c3,e6,5c,38         stw   R38,[Re6+5c]     FN021_MAPOPE_y = R38;
45c6: a0,38,32            ldw   R32,R38          R32 = R38;
45c9: a0,1e,38            ldw   R38,R1e          R38 = R1e;                        # R1e = FN1420 or FN1320
45cc: ad,0a,34            ldzbw R34,a            wR34 = a;
45cf: ef,e7,03            call  49b9             Four_Point_Interpolation ();
45d2: 69,80,00,3a         sb2w  R3a,80           R3a -= 80;
45d6: 6c,3a,3c            ml2w  R3c,R3a          lR3c *= R3a;
45d9: a3,f6,16,3c         ldw   R3c,[Rf6+16]     R3c = BASEMD;
45dd: 6c,3e,3c            ml2w  R3c,R3e          lR3c *= R3e;
45e0: a3,f6,18,3c         ldw   R3c,[Rf6+18]     R3c = KVEFF;
45e4: 6c,3e,3c            ml2w  R3c,R3e          lR3c *= R3e;
45e7: 4c,b4,3e,3c         ml3w  R3c,R3e,Rb4      lR3c = wR3e * N_RPM;
45eb: 0d,02,3c            shldw R3c,2            lR3c <<= 2;
45ee: a0,20,38            ldw   R38,R20          R38 = R20;
45f1: 08,01,38            shrw  R38,1            R38 >>= 1;
45f4: 6c,3e,38            ml2w  R38,R3e          lR38 *= R3e;
45f7: bc,b7,3c            ldsbw R3c,Rb7          swR3c = ACT;
45fa: 65,e6,00,3c         ad2w  R3c,e6           R3c += e6;
45fe: 8c,3c,38            divw  R38,R3c          wR38 /= R3c;
4601: d5,1f               jnv   4622             if (OVF = 1)  {
4603: 38,22,19            jb    B0,R22,461f      if (B0_R22 = 0)  {
4606: ac,7d,40            ldzbw R40,R7d          wR40 = EM;
4609: 09,04,40            shlw  R40,4            R40 <<= 4;
460c: 01,3a               clrw  R3a              R3a = 0;
460e: 68,40,38            sb2w  R38,R40          R38 -= R40;
4611: d3,02               jnc   4615             if (R38 >= 0)  {
4613: 07,3a               incw  R3a              R3a++; }
4615: 0c,01,38            shrdw R38,1            lR38 >>= 1;
4618: 91,20,9e            orb   R9e,20           B5_HAVE_ALT_AM_9e = 1;
461b: c3,e6,5e,38         stw   R38,[Re6+5e]     ALT_AM = R38; }
461f: bd,ff,38            ldsbw R38,ff           swR38 = ff; }
4622: f0                  ret                    return;

   Subtract_EM:
4623: ac,7d,3a            ldzbw R3a,R7d          wR3a = EM;
4626: 09,04,3a            shlw  R3a,4            R3a <<= 4;
4629: 48,3a,38,3a         sb3w  R3a,R38,R3a      R3a = R38 - R3a;
462d: db,02               jc    4631             if (R3a < 0)  {
462f: 01,3a               clrw  R3a              R3a = 0; }
4631: f0                  ret                    return;

   INFERRED_BAROMETRIC_PRESSURE_STRATEGY:
4632: b3,ee,84,14         ldb   R14,[Ree+84]     R14 = KAM_BIT_FLAGS;
4636: a3,e4,b6,16         ldw   R16,[Re4+b6]     R16 = PUTMR;
463a: 8b,f6,2a,16         cmpw  R16,[Rf6+2a]     

 KEY-ON BAROMETRIC PRESSURE UPDATE LOGIC
463e: d3,16               jnc   4656             if (R16 >= TKYON1)  {

 MANIFOLD ABSOLUTE PRESSURE FILTER (MAPBAR)
4640: b0,ba,35            ldb   R35,Rba          R35 = MAP;
4643: 11,34               clrb  R34              R34 = 0;
4645: a3,e4,b4,32         ldw   R32,[Re4+b4]     R32 = MAPBAR;
4649: a3,f8,1a,36         ldw   R36,[Rf8+1a]     R36 = TCMBAR;
464d: ef,ff,02            call  494f             UROLAV ();
4650: c3,e4,b4,3e         stw   R3e,[Re4+b4]     MAPBAR = R3e;
4654: 20,10               sjmp  4666             goto 4666; }

4656: 71,fd,28            an2b  R28,fd           B1_PTPFLG_28 = 0;
4659: c7,e4,b5,ba         stb   Rba,[Re4+b5]     MAPBARhi = MAP;
465d: 3f,28,03            jb    B7,R28,4663      if (B7_KAMOK_28 = 0)  {
4660: 3f,14,03            jb    B7,R14,4666      if (B7_BPKFLG_14 = 1) goto 4666; }
4663: 91,08,27            orb   R27,8            B3_BPUFLG_R27 = 1; }
4666: 33,27,32            jnb   B3,R27,469b      if (B3_BPUFLG_R27 = 1)  {
4669: 39,28,2f            jb    B1,R28,469b      if (B1_PTPFLG_28 = 0)  {
466c: 8b,f6,2c,16         cmpw  R16,[Rf6+2c]     
4670: d3,29               jnc   469b             if (R16 >= TKYON2)  {
4672: 8b,f6,2e,16         cmpw  R16,[Rf6+2e]     
4676: db,23               jc    469b             if (R16 < TKYON3)  {
4678: a3,e4,1e,42         ldw   R42,[Re4+1e]     R42 = LAST_MAP2;
467c: 8b,e4,20,42         cmpw  R42,[Re4+20]     
4680: df,19               je    469b             if (R42 != LAST_MAP)  {
4682: b3,e4,b5,3e         ldb   R3e,[Re4+b5]     R3e = MAPBARhi;
4686: 3f,3e,03            jb    B7,R3e,468c      if (B7_R3e = 0)  {
4689: b1,ef,3e            ldb   R3e,ef           R3e = ef; }                       # 29.875 * 8 = 239 = 0xEF
468c: c7,ee,85,3e         stb   R3e,[Ree+85]     BPKAM? = R3e;
4690: c7,ee,86,3e         stb   R3e,[Ree+86]     BPKYON? = R3e;
4694: 91,80,14            orb   R14,80           B7_BPKFLG_14 = 1;
4697: c7,ee,84,14         stb   R14,[Ree+84]     KAM_BIT_FLAGS = R14; } } } } }
469b: 9b,f6,28,d4         cmpb  Rd4,[Rf6+28]     
469f: d1,06               jleu  46a7             if (ATMR1 > TKYON4)  {
46a1: 3e,a5,03            jb    B6,Ra5,46a7      if (UNDSP = 0)  {
46a4: 37,a5,02            jnb   B7,Ra5,46a9      if (b7_CRKFLG_a5 = 0) goto 46a9; } }
46a7: 20,8b               sjmp  4734             return; }

46a9: 71,7f,14            an2b  R14,7f           B7_BPKFLG_14 = 0;
46ac: c7,ee,84,14         stb   R14,[Ree+84]     KAM_BIT_FLAGS = R14;
46b0: 9b,f6,24,b6         cmpb  Rb6,[Rf6+24]     

BPPTWT - PART THROTTLE/WIDE OPEN THROTTLE BAROMETRIC PRESSURE UPDATE :
46b4: da,f1               jle   46a7             if (ECT <= ECTBP) goto 46a7;
46b6: a0,9a,14            ldw   R14,R9a          R14 = AM;
46b9: 9c,bb,14            divb  R14,Rbb          yR14 /= BP;
46bc: dd,05               jv    46c3             if (OVF = 0)  {
46be: 99,fe,14            cmpb  R14,fe           
46c1: d1,03               jleu  46c6             if (R14 <= fe) goto 46c6; }
46c3: b1,fe,14            ldb   R14,fe           R14 = fe; }
46c6: ac,14,38            ldzbw R38,R14          wR38 = yR14;
46c9: ef,1a,02            call  48e6             UUWFuncLU_48e6 (
46cc: f2,60                     #arg 1              FN069A,
46ce: 38,00                     #arg 2              38 );
46d0: 88,38,bc            cmpw  Rbc,R38          
46d3: d1,5f               jleu  4734             if (TP_REL > R38)  {
46d5: 5b,e4,b5,ba,30      sb3b  R30,Rba,[Re4+b5] R30 = MAP - MAPBARhi;
46da: d3,58               jnc   4734             if (R30 >= 0)  {
46dc: 9b,f6,25,30         cmpb  R30,[Rf6+25]     
46e0: d9,52               jgtu  4734             if (R30 <= SSMAP)  {
46e2: 51,ac,a6,32         an3b  R32,Ra6,ac       R32 = (B2_TFMFLG_a6|
                                                        B3_MFMFLG_a6|
                                                        B5_CFMFLG_a6|
                                                        B7_AFMFLG_a6);
46e6: d7,4c               jne   4734             if (R32 = 0)  {
46e8: ef,fb,01            call  48e6             UUWFuncLU_48e6 (
46eb: 66,03                     #arg 1              FN047A,
46ed: bc,00                     #arg 2              TP_REL );
46ef: a0,38,30            ldw   R30,R38          R30 = R38;
46f2: ac,14,38            ldzbw R38,R14          wR38 = yR14;
46f5: ef,ee,01            call  48e6             UUWFuncLU_48e6 (
46f8: 52,03                     #arg 1              FN046A,
46fa: 38,00                     #arg 2              38 );
46fc: a0,38,32            ldw   R32,R38          R32 = R38;
46ff: ad,05,34            ldzbw R34,5            wR34 = 5;
4702: 45,0a,01,f6,38      ad3w  R38,Rf6,10a      R38 = FN1033;
4707: ef,af,02            call  49b9             Four_Point_Interpolation ();
470a: 5c,bb,3b,3e         ml3b  R3e,R3b,Rbb      wR3e = yR3b * BP;
470e: 74,ba,3f            ad2b  R3f,Rba          R3f += MAP;
4711: d3,03               jnc   4716             if (R3f > ff)  {
4713: b1,ff,3f            ldb   R3f,ff           R3f = ff; }
4716: 3f,3f,05            jb    B7,R3f,471e      if (B7_R3f = 0)  {
4719: b1,80,3f            ldb   R3f,80           R3f = 80;
471c: 11,3e               clrb  R3e              R3e = 0; }
471e: a3,f8,0a,36         ldw   R36,[Rf8+a]      R36 = TCBP;
4722: a0,3e,34            ldw   R34,R3e          R34 = R3e;
4725: a3,ee,88,32         ldw   R32,[Ree+88]     R32 = BPPTWT;
4729: ef,23,02            call  494f             UROLAV ();
472c: c7,ee,85,3f         stb   R3f,[Ree+85]     BPKAM? = R3f;
4730: c3,ee,88,3e         stw   R3e,[Ree+88]     BPPTWT = R3e; } } } }
4734: f0                  ret                    return;

   AD_Substitutions:
4735: 31,52,2a            jnb   B1,R52,4762      if (B1_USE_EXT_INT_52 = 1)  {
4738: b3,ec,b2,43         ldb   R43,[Rec+b2]     R43 = DCL_XDCL_ERROR_L;
473c: 3c,43,23            jb    B4,R43,4762      if (B4_R43 = 0)  {                # bit 4  Read A/D Values      Parity Error
473f: b1,0d,42            ldb   R42,d            R42 = d;
4742: a1,44,05,30         ldw   R30,544          R30 = 544;
4746: a1,08,29,32         ldw   R32,2908         R32 = 2908;
474a: a2,31,34            ldw   R34,[R30++]      R34 = [R30++];
474d: a2,33,36            ldw   R36,[R32++]      R36 = [R32++];
4750: 51,fc,35,43         an3b  R43,R35,fc       R43 = R35 & fc;
4754: 99,a4,43            cmpb  R43,a4           
4757: d7,06               jne   475f             if (R43 = a4)  {
4759: 09,06,34            shlw  R34,6            R34 <<= 6;
475c: c2,36,34            stw   R34,[R36]        [R36] = R34; }
475f: e0,42,e8            djnz  R42,474a         R42--;
                                                 if (R42 != 0) goto 474a; } }
4762: f0                  ret                    return;

   DCL_Handler_Dispatch:
4763: b3,f0,03,42         ldb   R42,[Rf0+3]      R42 = LINK_SW;
4767: 39,42,04            jb    B1,R42,476e      if (B1_R42 = 0)  {
476a: 71,fd,52            an2b  R52,fd           B1_USE_EXT_INT_52 = 0;
476d: f0                  ret                    return; }

476e: 91,02,52            orb   R52,2            B1_USE_EXT_INT_52 = 1;
4771: 3a,42,03            jb    B2,R42,4777      if (B2_R42 = 0)  {
4774: 91,20,53            orb   R53,20           B5_CART_MODE_53 = 1; }
4777: a3,ec,b2,30         ldw   R30,[Rec+b2]     R30 = DCL_XDCL_ERROR_L;
477b: 41,0f,8c,30,00      an3w  R0,R30,8c0f      R0 = R30 & 8c0f;
4780: d7,17               jne   4799             if ((R30 & 8c0f) = 0)  {
4782: a3,ec,b4,42         ldw   R42,[Rec+b4]     R42 = DCL_EXEC_VECT;
4786: 88,00,42            cmpw  R42,R0           
4789: df,1d               je    47a8             if (R42 = 0) goto BIMAP_DEFINITIONS;
478b: b1,aa,32            ldb   R32,aa           R32 = aa;
478e: c7,01,1f,09,32      stb   R32,[R0+91f]     [91f] = R32;
4793: c9,a8,47            push  47a8             push(BIMAP_DEFINITIONS);
4796: c8,42               push  R42              push(R42);
4798: f0                  ret                    return; }

4799: fa                  di                     interrupts OFF;
479a: ff                  nop                    
479b: c3,ec,b4,00         stw   R0,[Rec+b4]      DCL_EXEC_VECT = 0;
479f: 81,0f,8c,30         orw   R30,8c0f         R30 |= 8c0f;
47a3: c3,ec,b2,30         stw   R30,[Rec+b2]     DCL_XDCL_ERROR_L = R30;
47a7: fb                  ei                     interrupts ON; }
   BIMAP_DEFINITIONS:
47a8: c7,01,1f,09,00      stb   R0,[R0+91f]      [91f] = 0;
47ad: 01,42               clrw  R42              R42 = 0;
47af: 36,9f,03            jnb   B6,R9f,47b5      if (B6_NDSFLG_9f = 1)  {
47b2: 91,40,42            orb   R42,40           B6_R42 = 1; }                     # Bit 6: 1 if not in neutral or park.
47b5: 37,46,03            jnb   B7,R46,47bb      if (PUMP = 1)  {
47b8: 91,80,42            orb   R42,80           B7_R42 = 1; }                     # Bit 7: 1 if fuel pump is on.
47bb: 31,47,03            jnb   B1,R47,47c1      if (B1_CANP_OUT_47 = 1)  {
47be: 91,04,43            orb   R43,4            B2_R43 = 1; }                     # Bit 2: 1 if canister purge has non-zero duty cycle.
47c1: 36,46,03            jnb   B6,R46,47c7      if (WOT_AC = 1)  {
47c4: 91,08,43            orb   R43,8            B3_R43 = 1; }                     # Bit 3: 1 if A/C clutch is disengaged.
47c7: c3,ec,8e,42         stw   R42,[Rec+8e]     BITMAP_0 = R42;
47cb: 01,42               clrw  R42              R42 = 0;
47cd: 3a,9f,03            jb    B2,R9f,47d3      if (B2_OLFLG = 0)  {
47d0: 91,01,42            orb   R42,1            B0_R42 = 1; }                     # Bit 0: 1 if in closed loop fuel control.
47d3: 30,8f,03            jnb   B0,R8f,47d9      if (B0_POWSFG_8f = 1)  {
47d6: 91,02,42            orb   R42,2            B1_R42 = 1; }                     # Bit 1: 1 if power steering pressure switch is closed.
47d9: 37,79,03            jnb   B7,R79,47df      if (ACCFLG = 1)  {
47dc: 91,04,42            orb   R42,4            B2_R42 = 1; }                     # Bit 2: 1 if driver has selected A/C.
47df: 37,8e,03            jnb   B7,R8e,47e5      if (B7_R8e = 1)  {
47e2: 91,10,42            orb   R42,10           B4_R42 = 1; }                     # Bit 4: 1 if Ignition Diagnostic Monitor EEC module input is high.
47e5: 30,46,03            jnb   B0,R46,47eb      if (AM1 = 1)  {
47e8: 91,20,42            orb   R42,20           B5_R42 = 1; }                     # Bit 5: 1 if output AM1 is on.
47eb: 36,47,03            jnb   B6,R47,47f1      if (B6_AM2_47 = 1)  {
47ee: 91,40,42            orb   R42,40           B6_R42 = 1; }                     # Bit 6: 1 if output AM2 is on.
47f1: 37,e0,03            jnb   B7,Re0,47f7      if (B7_FLG_TCS_e0 = 1)  {
47f4: 91,01,43            orb   R43,1            B0_R43 = 1; }                     # Bit 0: 1 if alternate shift mode/overdrive cancel is selected.
47f7: c3,ec,90,42         stw   R42,[Rec+90]     BITMAP_1 = R42;
47fb: f0                  ret                    return;

   DOL_PULSE_CALC_COM3:
47fc: b3,f0,03,18         ldb   R18,[Rf0+3]      R18 = LINK_SW;
4800: 38,18,04            jb    B0,R18,4807      if (B0_R18 = 0)  {
4803: 71,fd,d6            an2b  Rd6,fd           B1_Rd6 = 0;
4806: f0                  ret                    return; }

4807: 91,02,d6            orb   Rd6,2            B1_Rd6 = 1;
480a: af,f4,4b,32         ldzbw R32,[Rf4+4b]     wR32 = INJOUT;
480e: a3,f5,96,00,30      ldw   R30,[Rf4+96]     R30 = PUL_PER_GAL;
4813: ef,91,14            call  5ca7             Sub_5ca7 ();
4816: a3,e6,60,30         ldw   R30,[Re6+60]     R30 = A0COR;
481a: ef,8c,14            call  5ca9             Sub_5ca9 ();
481d: b0,42,38            ldb   R38,R42          R38 = R42;
4820: b1,10,39            ldb   R39,10           R39 = 10;
4823: a0,32,36            ldw   R36,R32          R36 = R32;
4826: a1,26,06,32         ldw   R32,626          R32 = 626;                        # stcf = Seconds to clock ticks conversion factor, ticks/second.
482a: a1,73,cb,30         ldw   R30,cb73         R30 = cb73;                       # 0xCB73 = 52083; 128/52083 = 1 mSec
482e: ef,76,14            call  5ca7             Sub_5ca7 ();
4831: ef,9d,14            call  5cd1             Sub_5cd1 ();
4834: a0,30,36            ldw   R36,R30          R36 = R30;
4837: fa                  di                     interrupts OFF;
4838: 01,32               clrw  R32              R32 = 0;
483a: a3,e4,7c,30         ldw   R30,[Re4+7c]     R30 = FUEL_SUM_TKS;
483e: 8c,36,30            divw  R30,R36          wR30 /= R36;
4841: 4c,36,32,34         ml3w  R34,R32,R36      lR34 = wR32 * R36;
4845: c3,e4,7c,36         stw   R36,[Re4+7c]     FUEL_SUM_TKS = R36;
4849: 3f,30,10            jb    B7,R30,485c      if (B7_R30 = 0)  {
484c: 09,01,30            shlw  R30,1            R30 <<= 1;
484f: a3,e4,7e,32         ldw   R32,[Re4+7e]     R32 = DOL_COUNT;
4853: 64,30,32            ad2w  R32,R30          R32 += R30;
4856: c3,e4,7e,32         stw   R32,[Re4+7e]     DOL_COUNT = R32;
485a: 20,07               sjmp  4863             goto 4863; }

485c: bd,ff,30            ldsbw R30,ff           swR30 = ff;
485f: c3,e4,7e,30         stw   R30,[Re4+7e]     DOL_COUNT = R30;
4863: fb                  ei                     interrupts ON;
4864: f0                  ret                    return;

   SUYFuncLU_4865:
4865: 91,20,9f            orb   R9f,20           B5_SignedInput = 1;
4868: 20,06               sjmp  4870             goto UUYFuncLU_4870;

486a: 91,20,9f            orb   R9f,20           B5_SignedInput = 1;
   USYFuncLU_486d:
486d: 91,10,9f            orb   R9f,10           B4_SignedOutput = 1;
   UUYFuncLU_4870:
4870: cc,36               pop   R36              R36 = pop();
4872: b2,37,32            ldb   R32,[R36++]      R32 = [R36++];
4875: b2,37,33            ldb   R33,[R36++]      R33 = [R36++];
4878: ac,33,34            ldzbw R34,R33          wR34 = yR33;
487b: 71,0f,33            an2b  R33,f            R33 &= f;
487e: 08,04,34            shrw  R34,4            R34 >>= 4;
4881: 67,35,f0,00,32      ad2w  R32,[R34+f0]     R32 += [R34+f0];
4886: b2,37,34            ldb   R34,[R36++]      R34 = [R36++];
4889: b2,37,35            ldb   R35,[R36++]      R35 = [R36++];
488c: c8,36               push  R36              push(R36);
488e: b2,34,34            ldb   R34,[R34]        R34 = [R34];
   UUYFuncLU_4891:
4891: 9b,32,02,34         cmpb  R34,[R32+2]      
4895: 3d,9f,04            jb    B5,R9f,489c      if (B5_SignedInput = 0)  {
4898: db,0a               jc    48a4             if (R34 >= [R32+2]) goto 48a4;
489a: 20,02               sjmp  489e             goto 489e; }

489c: d6,06               jge   48a4             if (R34 < [R32+2])  {
489e: 65,02,00,32         ad2w  R32,2            R32 += 2;
48a2: 27,ed               sjmp  4891             goto UUYFuncLU_4891; } }

48a4: 71,df,9f            an2b  R9f,df           B5_SignedInput = 0;
48a7: b2,33,36            ldb   R36,[R32++]      R36 = [R32++];
48aa: b2,33,38            ldb   R38,[R32++]      R38 = [R32++];
48ad: 7a,32,36            sb2b  R36,[R32]        R36 -= [R32];
48b0: 7a,33,34            sb2b  R34,[R32++]      R34 -= [R32++];
48b3: 7a,32,38            sb2b  R38,[R32]        R38 -= [R32];
48b6: 3c,9f,04            jb    B4,R9f,48bd      if (B4_SignedOutput = 0)  {
48b9: db,09               jc    48c4             if (R38 >= 0) goto 48c4;
48bb: 20,02               sjmp  48bf             goto 48bf; }

48bd: d6,05               jge   48c4             if (R38 < 0)  {
48bf: 91,20,9f            orb   R9f,20           B5_SignedInput = 1;
48c2: 13,38               negb  R38              R38 = -R38; } }
48c4: 7c,34,38            ml2b  R38,R34          wR38 *= R34;
48c7: 9c,36,38            divb  R38,R36          yR38 /= R36;
48ca: 35,9f,02            jnb   B5,R9f,48cf      if (B5_SignedInput = 1)  {
48cd: 13,38               negb  R38              R38 = -R38; }
48cf: 76,32,38            ad2b  R38,[R32]        R38 += [R32];
48d2: 11,39               clrb  R39              R39 = 0;
48d4: 71,df,9f            an2b  R9f,df           B5_SignedInput = 0;
48d7: 71,ef,9f            an2b  R9f,ef           B4_SignedOutput = 0;
48da: f0                  ret                    return;

   SUWFuncLU_48db:
48db: 91,20,9f            orb   R9f,20           B5_SignedInput = 1;
48de: 20,06               sjmp  48e6             goto UUWFuncLU_48e6;

   SSWFuncLU_48e0:
48e0: 91,20,9f            orb   R9f,20           B5_SignedInput = 1;
   USWFuncLU_48e3:
48e3: 91,10,9f            orb   R9f,10           B4_SignedOutput = 1;
   UUWFuncLU_48e6:
48e6: cc,36               pop   R36              R36 = pop();
48e8: b2,37,32            ldb   R32,[R36++]      R32 = [R36++];
48eb: b2,37,33            ldb   R33,[R36++]      R33 = [R36++];
48ee: ac,33,34            ldzbw R34,R33          wR34 = yR33;
48f1: 71,0f,33            an2b  R33,f            R33 &= f;
48f4: 08,04,34            shrw  R34,4            R34 >>= 4;
48f7: 67,35,f0,00,32      ad2w  R32,[R34+f0]     R32 += [R34+f0];
48fc: b2,37,34            ldb   R34,[R36++]      R34 = [R36++];
48ff: b2,37,35            ldb   R35,[R36++]      R35 = [R36++];
4902: c8,36               push  R36              push(R36);
4904: a2,34,34            ldw   R34,[R34]        R34 = [R34];
   UUWFuncLU_4907:
4907: 8b,32,04,34         cmpw  R34,[R32+4]      
490b: 3d,9f,04            jb    B5,R9f,4912      if (B5_SignedInput = 0)  {
490e: db,0a               jc    491a             if (R34 >= [R32+4]) goto 491a;
4910: 20,02               sjmp  4914             goto 4914; }

4912: d6,06               jge   491a             if (R34 < [R32+4])  {
4914: 65,04,00,32         ad2w  R32,4            R32 += 4;
4918: 27,ed               sjmp  4907             goto UUWFuncLU_4907; } }

491a: 71,df,9f            an2b  R9f,df           B5_SignedInput = 0;
491d: a2,33,36            ldw   R36,[R32++]      R36 = [R32++];
4920: a2,33,38            ldw   R38,[R32++]      R38 = [R32++];
4923: 6a,32,36            sb2w  R36,[R32]        R36 -= [R32];
4926: 6a,33,34            sb2w  R34,[R32++]      R34 -= [R32++];
4929: 6a,32,38            sb2w  R38,[R32]        R38 -= [R32];
492c: 3c,9f,04            jb    B4,R9f,4933      if (B4_SignedOutput = 0)  {
492f: db,09               jc    493a             if (R38 >= 0) goto 493a;
4931: 20,02               sjmp  4935             goto 4935; }

4933: d6,05               jge   493a             if (R38 < 0)  {
4935: 91,20,9f            orb   R9f,20           B5_SignedInput = 1;
4938: 03,38               negw  R38              R38 = -R38; } }
493a: 6c,34,38            ml2w  R38,R34          lR38 *= R34;
493d: 8c,36,38            divw  R38,R36          wR38 /= R36;
4940: 35,9f,02            jnb   B5,R9f,4945      if (B5_SignedInput = 1)  {
4943: 03,38               negw  R38              R38 = -R38; }
4945: 66,32,38            ad2w  R38,[R32]        R38 += [R32];
4948: 71,df,9f            an2b  R9f,df           B5_SignedInput = 0;
494b: 71,ef,9f            an2b  R9f,ef           B4_SignedOutput = 0;
494e: f0                  ret                    return;

   UROLAV:
494f: 28,36               scall 4987             ROLLING_AVERAGE_FILTER_ROUTINE ();
4951: b1,02,42            ldb   R42,2            R42 = 2;
4954: 20,04               sjmp  495a             goto 495a;

   ROLAV:
4956: 28,2f               scall 4987             ROLLING_AVERAGE_FILTER_ROUTINE ();
   ROLLING_AVERAGE_ROUTINE:
4958: 11,42               clrb  R42              R42 = 0;
495a: 48,32,34,3c         sb3w  R3c,R34,R32      R3c = R34 - R32;                  # new value - old average 
495e: 31,42,04            jnb   B1,R42,4965      if (B1_R42 = 1)  {                # if unsigned
4961: db,08               jc    496b             if (R3c >= 0) goto 496b;
4963: 20,02               sjmp  4967             goto 4967; }

4965: d6,04               jge   496b             if (R3c < 0)  {
4967: 17,42               incb  R42              R42++;                            # new value < old average
4969: 03,3c               negw  R3c              R3c = -R3c; } }
496b: 89,01,00,3c         cmpw  R3c,1            
496f: d9,04               jgtu  4975             if (R3c <= 1)  {                  # new value - old average <= 1 BIT
4971: a0,34,3e            ldw   R3e,R34          R3e = R34;                        # new average = new value
4974: f0                  ret                    return; }

4975: 6c,36,3c            ml2w  R3c,R36          lR3c *= R36;                      # FK * (new value - old average)
4978: 03,3e               negw  R3e              R3e = -R3e;
497a: d7,02               jne   497e             if (R3e = 0)  {
497c: 05,3e               decw  R3e              R3e--; }                          # old average - 1 BIT
497e: 38,42,02            jb    B0,R42,4983      if (B0_R42 = 0)  {
4981: 03,3e               negw  R3e              R3e = -R3e; }
4983: 64,32,3e            ad2w  R3e,R32          R3e += R32;
4986: f0                  ret                    return;

   ROLLING_AVERAGE_FILTER_ROUTINE:
4987: 39,a5,04            jb    B1,Ra5,498e      if (BG_TMR_DISABLE = 0)  {
498a: a3,e4,ba,3e         ldw   R3e,[Re4+ba]     R3e = BG_TMR; }
498e: 71,fd,a5            an2b  Ra5,fd           BG_TMR_DISABLE = 0;
4991: 01,3c               clrw  R3c              R3c = 0;
4993: 64,3e,36            ad2w  R36,R3e          R36 += R3e;
4996: d3,03               jnc   499b             if (R36 > ffff)  {
4998: bd,ff,36            ldsbw R36,ff           swR36 = ff; }
499b: 8c,36,3c            divw  R3c,R36          wR3c /= R36;
499e: d5,03               jnv   49a3             if (OVF = 1)  {
49a0: bd,ff,3c            ldsbw R3c,ff           swR3c = ff; }
49a3: a0,3c,36            ldw   R36,R3c          R36 = R3c;
49a6: f0                  ret                    return;

   SYTabLU_49a7:
49a7: 91,10,a0            orb   Ra0,10           SIGNED_TBL_FLG = 1;
49aa: 11,31               clrb  R31              R31 = 0;
49ac: 09,04,30            shlw  R30,4            R30 <<= 4;
49af: 11,33               clrb  R33              R33 = 0;
49b1: 09,04,32            shlw  R32,4            R32 <<= 4;
49b4: 20,03               sjmp  49b9             goto Four_Point_Interpolation;

   SYTabLU_49b6:
49b6: 91,10,a0            orb   Ra0,10           SIGNED_TBL_FLG = 1;
   Four_Point_Interpolation:
49b9: 5c,33,34,36         ml3b  R36,R34,R33      wR36 = yR34 * R33;
49bd: 74,31,36            ad2b  R36,R31          R36 += R31;
49c0: d3,02               jnc   49c4             if (R36 > ff)  {
49c2: 17,37               incb  R37              R37++; }
49c4: 64,36,38            ad2w  R38,R36          R38 += R36;
49c7: b2,39,31            ldb   R31,[R38++]      R31 = [R38++];
49ca: b2,38,33            ldb   R33,[R38]        R33 = [R38];
49cd: 28,1f               scall 49ee             TableInterpolation ();
49cf: 64,34,38            ad2w  R38,R34          R38 += R34;
49d2: b2,38,33            ldb   R33,[R38]        R33 = [R38];
49d5: 05,38               decw  R38              R38--;
49d7: b2,38,31            ldb   R31,[R38]        R31 = [R38];
49da: b0,3b,34            ldb   R34,R3b          R34 = R3b;
49dd: 28,0f               scall 49ee             TableInterpolation ();
49df: b0,3b,33            ldb   R33,R3b          R33 = R3b;
49e2: b0,34,31            ldb   R31,R34          R31 = R34;
49e5: b0,32,30            ldb   R30,R32          R30 = R32;
49e8: 28,04               scall 49ee             TableInterpolation ();
49ea: 71,ef,a0            an2b  Ra0,ef           SIGNED_TBL_FLG = 0;
49ed: f0                  ret                    return;

#############################################################
# 1 dimension interpolate - signed or unsigned
# Inputs:
#  R30 (byte) - Fraction
#  R31 (byte) - Lower table value
#  R33 (byte) - Upper table value
# Outputs:
#  R3B - Interpolated result (byte?)
#############################################################
   TableInterpolation:
49ee: 34,a0,1a            jnb   B4,Ra0,4a0b      if (SIGNED_TBL_FLG = 1)  {
# SIGNED interpolate calc
49f1: bc,33,3a            ldsbw R3a,R33          swR3a = yR33;
49f4: bc,31,3c            ldsbw R3c,R31          swR3c = yR31;
49f7: 68,3c,3a            sb2w  R3a,R3c          R3a -= R3c;
49fa: ac,30,3c            ldzbw R3c,R30          wR3c = yR30;
49fd: fe,6c,3a,3c         sml2w R3c,R3a          slR3c *= R3a;
4a01: c0,3a,3c            stw   R3c,R3a          R3a = R3c;
4a04: 74,31,3b            ad2b  R3b,R31          R3b += R31;
4a07: 37,3b,0f            jnb   B7,R3b,4a19      if (B7_R3b = 0) goto 4a19;
4a0a: f0                  ret                    return; }

# UNSIGNED interpolate calc
4a0b: 5c,33,30,3a         ml3b  R3a,R30,R33      wR3a = yR30 * R33;
4a0f: 5c,31,30,36         ml3b  R36,R30,R31      wR36 = yR30 * R31;
4a13: 68,36,3a            sb2w  R3a,R36          R3a -= R36;
4a16: 74,31,3b            ad2b  R3b,R31          R3b += R31; }
4a19: 65,80,00,3a         ad2w  R3a,80           R3a += 80;
4a1d: f0                  ret                    return;

   Sub_4a1e:
4a1e: b0,b9,1c            ldb   R1c,Rb9          R1c = TCSTRT;
4a21: 9b,f6,02,1c         cmpb  R1c,[Rf6+2]      
4a25: de,04               jlt   4a2b             if (R1c >= CTHIGH)  {
4a27: 9a,30,d4            cmpb  Rd4,[R30]        
4a2a: f0                  ret                    return; }

4a2b: 9b,f6,03,1c         cmpb  R1c,[Rf6+3]      
4a2f: da,05               jle   4a36             if (R1c > CTLOW)  {
4a31: 9b,30,01,d4         cmpb  Rd4,[R30+1]      
4a35: f0                  ret                    return; }

4a36: b3,e8,05,42         ldb   R42,[Re8+5]      R42 = ATMR2;
4a3a: 9b,30,02,42         cmpb  R42,[R30+2]      
4a3e: f0                  ret                    return;

   Calculation_Normalized_MAP:
4a3f: ac,ba,38            ldzbw R38,Rba          wR38 = MAP;
4a42: ef,a1,fe            call  48e6             UUWFuncLU_48e6 (
4a45: 7a,03                     #arg 1              FN071,
4a47: 38,00                     #arg 2              38 );
4a49: c3,e6,54,38         stw   R38,[Re6+54]     FN031_MAPOPE_y = R38;             # TEISF or TEFTC?
4a4d: ac,ba,38            ldzbw R38,Rba          wR38 = MAP;
4a50: ef,93,fe            call  48e6             UUWFuncLU_48e6 (
4a53: b6,03                     #arg 1              FN025,
4a55: 38,00                     #arg 2              38 );
4a57: c3,e6,56,38         stw   R38,[Re6+56]     FN025_MAP_y = R38;
4a5b: 71,fe,a1            an2b  Ra1,fe           B0_MAPUP_NORM_a1 = 0;             # Clear -> Normalized value has been calculated.
   Calculation_MAPWBAR:
4a5e: fa                  di                     interrupts OFF;
4a5f: ff                  nop                    
4a60: a0,84,14            ldw   R14,R84          R14 = Reftime;
4a63: ac,86,16            ldzbw R16,R86          wR16 = ReftimeH;
4a66: fb                  ei                     interrupts ON;
4a67: a0,16,3a            ldw   R3a,R16          R3a = R16;
4a6a: 4b,e4,ac,14,38      sb3w  R38,R14,[Re4+ac] R38 = R14 - [12c];
4a6f: bb,e4,b3,3a         sbbb  R3a,[Re4+b3]     R3a -= [133] - CY;
4a73: 0d,07,38            shldw R38,7            lR38 <<= 7;
4a76: 8d,73,cb,38         divw  R38,cb73         wR38 /= cb73;
4a7a: a0,38,3e            ldw   R3e,R38          R3e = R38;
4a7d: 65,40,00,3a         ad2w  R3a,40           R3a += 40;
4a81: 08,07,3a            shrw  R3a,7            R3a >>= 7;
4a84: 68,3a,14            sb2w  R14,R3a          R14 -= R3a;
4a87: b8,00,16            sbbb  R16,R0           R16 -= CY;
4a8a: c3,e4,ac,14         stw   R14,[Re4+ac]     [12c] = R14;
4a8e: c7,e4,b3,16         stb   R16,[Re4+b3]     [133] = R16;
4a92: a3,e4,aa,32         ldw   R32,[Re4+aa]     R32 = MAPWBAR;
4a96: a3,e4,a4,34         ldw   R34,[Re4+a4]     R34 = MAP_WORD;
4a9a: a3,fd,b8,00,36      ldw   R36,[Rfc+b8]     R36 = TCMAPW;
4a9f: 91,02,a5            orb   Ra5,2            BG_TMR_DISABLE = 1;
4aa2: ef,aa,fe            call  494f             UROLAV ();                        # MAPBAR = ROLAV(MAP_WORD,TCMAPW)
4aa5: c3,e4,aa,3e         stw   R3e,[Re4+aa]     MAPWBAR = R3e;
4aa9: f0                  ret                    return;

   TIMERS:
4aaa: b3,fe,23,14         ldb   R14,[Rfe+23]     R14 = CRKPIPCNT2;

#CRKPIP_CTR - PIP COUNTER FOR CRANKING FUEL
#CRKPIP_CTR is used as a Crank Fuel Multiplier to do a lean-out or fuel  shut-off
# during sub-zero cold operation.  Some calibrators are using the logic to improve
# restarts following a stall during -20 deg F testing  by  turning  off  the  fuel
# during  the  first  seconds  of crank.  This allows the engine to restart on the
# residual fuel remaining in the manifold after the stall.
4aae: 9b,f4,4a,00         cmpb  R0,[Rf4+4a]      
4ab2: df,17               je    4acb             if (CRKCTR_RESET != 0)  {
4ab4: 34,a5,14            jnb   B4,Ra5,4acb      if (B4_FLG_STALL_a5 = 1)  {
4ab7: b3,e6,ba,32         ldb   R32,[Re6+ba]     R32 = ATMR1_LST;
4abb: 9b,fe,22,32         cmpb  R32,[Rfe+22]     
4abf: d9,0a               jgtu  4acb             if (R32 <= CRKTM1)  {             # (in run or underspeed less than CRKTM1 seconds)
4ac1: c7,e4,01,14         stb   R14,[Re4+1]      CRKPIP_CTR_BG = R14;              # CRKPIP_CTR = CRKPIPCNT2
4ac5: c7,e4,00,14         stb   R14,[Re4+0]      CRKPIP_CTR = R14;                 # CRKPIP_CTR_BG = CRKPIPCNT2
4ac9: 20,1b               sjmp  4ae6             goto 4ae6; } } }

4acb: 3f,a5,06            jb    B7,Ra5,4ad4      if (b7_CRKFLG_a5 = 0)  {
4ace: 9b,fe,24,00         cmpb  R0,[Rfe+24]      
4ad2: df,0a               je    4ade             if (CRKTMR_INC = 0) goto 4ade; }
4ad4: b3,e4,00,14         ldb   R14,[Re4+0]      R14 = CRKPIP_CTR;                 # Increment CRKPIP_CTR every rising edge of PIP
4ad8: c7,e4,01,14         stb   R14,[Re4+1]      CRKPIP_CTR_BG = R14;              # CRKPIP_CTR_BG = CRKPIP_CTR
4adc: 20,08               sjmp  4ae6             goto 4ae6; }

4ade: b3,e4,01,14         ldb   R14,[Re4+1]      R14 = CRKPIP_CTR_BG;              # Freeze CRKPIP_CTR
4ae2: c7,e4,00,14         stb   R14,[Re4+0]      CRKPIP_CTR = R14;                 # CRKPIP_CTR = CRKPIP_CTR_BG
4ae6: 30,a1,03            jnb   B0,Ra1,4aec      if (B0_MAPUP_NORM_a1 = 1)  {
4ae9: ef,53,ff            call  4a3f             Calculation_Normalized_MAP (); }
4aec: 01,38               clrw  R38              R38 = 0;
4aee: 37,a5,66            jnb   B7,Ra5,4b57      if (b7_CRKFLG_a5 = 1)  {
4af1: 3a,a5,54            jb    B2,Ra5,4b48      if (B2_APT_a5 = 0)  {
4af4: bc,b6,38            ldsbw R38,Rb6          swR38 = ECT;
4af7: ef,e1,fd            call  48db             SUWFuncLU_48db (
4afa: 02,e3                     #arg 1              FN348,
4afc: 38,00                     #arg 2              38 );
4afe: c0,3e,38            stw   R38,R3e          R3e = R38;                        # FN348(ECT)
4b01: af,e4,01,38         ldzbw R38,[Re4+1]      wR38 = CRKPIP_CTR_BG;
4b05: ef,de,fd            call  48e6             UUWFuncLU_48e6 (
4b08: 12,04                     #arg 1              FN023,
4b0a: 38,00                     #arg 2              38 );
4b0c: a0,38,30            ldw   R30,R38          R30 = R38;                        # X = FN023(CRKPIP_CTR)
4b0f: bc,b7,38            ldsbw R38,Rb7          swR38 = ACT;
4b12: ef,c6,fd            call  48db             SUWFuncLU_48db (
4b15: 26,04                     #arg 1              FN024,
4b17: 38,00                     #arg 2              38 );
4b19: a0,38,32            ldw   R32,R38          R32 = R38;                        # Y = FN024(ACT)
4b1c: 45,68,04,f4,38      ad3w  R38,Rf4,468      R38 = FN1350;                     # Cranking  fuel  pulsewidth  multiplier 
                                                                                   # as a function of number of PIPs in crank and air charge temperature.
4b21: ad,05,34            ldzbw R34,5            wR34 = 5;
4b24: ef,92,fe            call  49b9             Four_Point_Interpolation ();
4b27: ac,3b,38            ldzbw R38,R3b          wR38 = yR3b;                      # FN1350(CRKPIP_CTR_BG,ACT)
4b2a: 6c,3e,38            ml2w  R38,R3e          lR38 *= R3e;                      # FN348(ECT) * FN1350(CRKPIP_CTR_BG,ACT)
4b2d: 0c,06,38            shrdw R38,6            lR38 >>= 6;
4b30: 89,00,00,3a         cmpw  R3a,0            
4b34: df,03               je    4b39             if (R3a != 0)  {
4b36: bd,ff,38            ldsbw R38,ff           swR38 = ff; }
4b39: ac,ba,36            ldzbw R36,Rba          wR36 = MAP;
4b3c: 6c,36,38            ml2w  R38,R36          lR38 *= R36;
4b3f: 8d,ef,00,38         divw  R38,ef           wR38 /= ef;
4b43: d5,03               jnv   4b48             if (OVF = 1)  {
4b45: bd,ff,38            ldsbw R38,ff           swR38 = ff; } }
4b48: 71,fb,a0            an2b  Ra0,fb           B2_WRMEGO_a0 = 0;
4b4b: 71,ef,a3            an2b  Ra3,ef           B4_FFULFG_a3 = 0;
4b4e: 6d,73,cb,38         ml2w  R38,cb73         lR38 *= cb73;
4b52: c3,e4,f0,3a         stw   R3a,[Re4+f0]     BGFUEL = R3a;
4b56: f0                  ret                    return; }                         # Exit FUELPW Routine

4b57: b3,e6,b2,16         ldb   R16,[Re6+b2]     R16 = EGOSSS;
4b5b: 30,9f,16            jnb   B0,R9f,4b74      if (SWTFL = 1)  {                 # (EGO switch)
4b5e: 17,16               incb  R16              R16++;                            # Increment EGOSSS 
4b60: d3,02               jnc   4b64             if (R16 > ff)  {
4b62: 15,16               decb  R16              R16--; }                          # Clip at 255  # 29.875 * 8 = 239 = 0xEF
4b64: c7,e6,b2,16         stb   R16,[Re6+b2]     EGOSSS = R16;
4b68: b3,e4,3a,14         ldb   R14,[Re4+3a]     R14 = EGO_CNT_IDLE;
4b6c: 17,14               incb  R14              R14++;                            # Increment EGO_CNT_IDLE 
4b6e: db,04               jc    4b74             if (R14 <= ff)  {
4b70: c7,e4,3a,14         stb   R14,[Re4+3a]     EGO_CNT_IDLE = R14; } }
4b74: 71,fb,a0            an2b  Ra0,fb           B2_WRMEGO_a0 = 0;
4b77: 45,10,00,f4,30      ad3w  R30,Rf4,10       R30 = OPCLT3;
4b7c: ef,9f,fe            call  4a1e             Sub_4a1e ();
4b7f: d3,03               jnc   4b84             if (R42 >= [R30+2])  {
4b81: 91,04,a0            orb   Ra0,4            B2_WRMEGO_a0 = 1; }
4b84: b3,f4,1b,30         ldb   R30,[Rf4+1b]     R30 = ECTSTABL;
4b88: 98,30,b6            cmpb  Rb6,R30          
4b8b: de,05               jlt   4b92             if (ECT >= R30)  {
4b8d: 91,20,79            orb   R79,20           FLG_ECTSTABLQ = 1;
4b90: 20,0c               sjmp  4b9e             goto 4b9e; }

4b92: 7b,f4,1c,30         sb2b  R30,[Rf4+1c]     R30 -= ECTSTHYS;
4b96: 98,30,b6            cmpb  Rb6,R30          
4b99: d6,03               jge   4b9e             if (ECT < R30)  {
4b9b: 71,df,79            an2b  R79,df           FLG_ECTSTABLQ = 0; }
4b9e: 11,38               clrb  R38              R38 = 0;
4ba0: 36,25,12            jnb   B6,R25,4bb5      if (B6_MPGFLG_25 = 1)  {
4ba3: b3,f4,1d,38         ldb   R38,[Rf4+1d]     R38 = MFARMP;
4ba7: 77,e4,fe,38         ad2b  R38,[Re4+fe]     R38 += MFAMUL;
4bab: db,05               jc    4bb2             if (R38 <= ff)  {
4bad: 99,80,38            cmpb  R38,80           
4bb0: d1,03               jleu  4bb5             if (R38 <= 80) goto 4bb5; }
4bb2: b1,80,38            ldb   R38,80           R38 = 80; } }
4bb5: c7,e4,fe,38         stb   R38,[Re4+fe]     MFAMUL = R38;
4bb9: b3,fe,2d,32         ldb   R32,[Rfe+2d]     R32 = TRLOAD;
4bbd: 99,03,32            cmpb  R32,3            
4bc0: d1,19               jleu  4bdb             if (R32 > 3)  {
4bc2: 3e,26,05            jb    B6,R26,4bca      if (DNDSUP = 0)  {
4bc5: 91,02,26            orb   R26,2            B1_NEUFLG_26 = 1;
4bc8: 20,11               sjmp  4bdb             goto 4bdb; }

4bca: 31,26,0e            jnb   B1,R26,4bdb      if (B1_NEUFLG_26 = 1)  {
4bcd: 71,fd,26            an2b  R26,fd           B1_NEUFLG_26 = 0;                 # (N/D fuel enrichment)  
4bd0: ef,92,fc            call  4865             SUYFuncLU_4865 (
4bd3: 88,e2                     #arg 1              FN371,
4bd5: b6,00                     #arg 2              ECT );
4bd7: c7,e4,69,38         stb   R38,[Re4+69]     LAMMUL = R38; } }                 # (LAMMUL reset)
4bdb: b3,e4,68,30         ldb   R30,[Re4+68]     R30 = MULTMR;                     # (free running timer)  
4bdf: 9b,fe,4c,30         cmpb  R30,[Rfe+4c]     
4be3: d3,10               jnc   4bf5             if (R30 >= MULTM)  {              #  MULTMR >= MULTM
4be5: c7,e4,68,00         stb   R0,[Re4+68]      MULTMR = 0;
4be9: b3,e4,69,30         ldb   R30,[Re4+69]     R30 = LAMMUL;
4bed: 17,30               incb  R30              R30++;                            # LAMMUL + .0039
4bef: db,04               jc    4bf5             if (R30 <= ff)  {                 # Clip at .996 maximum
4bf1: c7,e4,69,30         stb   R30,[Re4+69]     LAMMUL = R30; } }
   FUEL_OLFLG_COM7:
4bf5: 2b,f4               scall 4feb             FN1360(N,MAPPA) ();
4bf7: b3,f4,1f,38         ldb   R38,[Rf4+1f]     R38 = LAMRICH;
4bfb: 98,38,3b            cmpb  R3b,R38          
4bfe: d9,05               jgtu  4c05             if (R3b <= R38)  {                # |S FN1360 <= LAMRICH
4c00: 91,20,24            orb   R24,20           B5_FLG_LAMRICH_Q_24 = 1;          # |Q Set flip flop
4c03: 20,12               sjmp  4c17             goto 4c17; }                      #  (enrichment required)

4c05: 77,f4,20,38         ad2b  R38,[Rf4+20]     R38 += LAMRHYS;
4c09: db,0c               jc    4c17             if (R38 <= ff)  {
4c0b: 98,38,3b            cmpb  R3b,R38          
4c0e: d1,07               jleu  4c17             if (R3b > R38)  {                 # |C FN1360 > LAMRICH + LAMRHYS 
4c10: 71,df,24            an2b  R24,df           B5_FLG_LAMRICH_Q_24 = 0;          # |Q Clear flip flop
4c13: c7,e4,ff,00         stb   R0,[Re4+ff]      HLTMR = 0; } }
4c17: ef,cc,fc            call  48e6             UUWFuncLU_48e6 (
4c1a: ce,41                     #arg 1              FN311,
4c1c: b4,00                     #arg 2              N_RPM );
4c1e: 88,38,bc            cmpw  Rbc,R38          
4c21: d1,05               jleu  4c28             if (TP_REL > R38)  {              # |S TP_REL > FN311(N)
4c23: 91,02,44            orb   R44,2            B1_FN311_Q_44 = 1;                # |Q Set flip flop
4c26: 20,0e               sjmp  4c36             goto 4c36; }

4c28: 6b,f4,14,38         sb2w  R38,[Rf4+14]     R38 -= TP_HYS_OL;                 # FN311(N) - TP_HYS_OL 
4c2c: d3,08               jnc   4c36             if (R38 >= 0)  {
4c2e: 88,38,bc            cmpw  Rbc,R38          
4c31: d9,03               jgtu  4c36             if (TP_REL <= R38)  {             # |C TP_REL <= FN311(N) - TP_HYS_OL
4c33: 71,fd,44            an2b  R44,fd           B1_FN311_Q_44 = 0; } }            # |Q Clear flip flop
4c36: b3,f4,19,30         ldb   R30,[Rf4+19]     R30 = LMAP;
4c3a: 5b,f4,1a,30,32      sb3b  R32,R30,[Rf4+1a] R32 = R30 - LOMAPH;
4c3f: d3,0a               jnc   4c4b             if (R32 >= 0)  {
4c41: 98,32,ba            cmpb  Rba,R32          
4c44: db,05               jc    4c4b             if (MAP < R32)  {                 # |S MAP < LMAP - LOMAPH (decel load)
4c46: 91,08,9f            orb   R9f,8            B3_FLG_LMAP_Q_9f = 1;             # |Q Set flip flop
4c49: 20,08               sjmp  4c53             goto 4c53; } }

4c4b: 98,30,ba            cmpb  Rba,R30          
4c4e: d3,03               jnc   4c53             if (MAP >= R30)  {                # |C MAP >= LMAP
4c50: 71,f7,9f            an2b  R9f,f7           B3_FLG_LMAP_Q_9f = 0; }           # |Q Clear flip flop
4c53: 71,fe,27            an2b  R27,fe           B0_FLG_OPEN_LOOP_R27 = 0;
4c56: 32,a5,0c            jnb   B2,Ra5,4c65      if (B2_APT_a5 = 1)  {
4c59: b3,e4,d3,30         ldb   R30,[Re4+d3]     R30 = APTMR;
4c5d: 9b,fe,4d,30         cmpb  R30,[Rfe+4d]     
4c61: d3,02               jnc   4c65             if (R30 >= XAPT)  {
4c63: 20,7b               sjmp  4ce0             goto 4ce0; } }

4c65: 39,44,78            jb    B1,R44,4ce0      if (B1_FN311_Q_44 = 0)  {
4c68: 3b,9f,75            jb    B3,R9f,4ce0      if (B3_FLG_LMAP_Q_9f = 0)  {
4c6b: 39,27,72            jb    B1,R27,4ce0      if (B1_DFSFLG_R27 = 0)  {
4c6e: 38,a6,6f            jb    B0,Ra6,4ce0      if (B0_ETV_ERROR_a6 = 0)  {
4c71: 35,24,14            jnb   B5,R24,4c88      if (B5_FLG_LAMRICH_Q_24 = 1)  {
4c74: b3,e4,ff,30         ldb   R30,[Re4+ff]     R30 = HLTMR;
4c78: 9b,f4,1e,30         cmpb  R30,[Rf4+1e]     
4c7c: d3,0a               jnc   4c88             if (R30 >= HLDTIM)  {
4c7e: b3,ea,c3,30         ldb   R30,[Rea+c3]     R30 = OPEN_TMR;
4c82: 9b,f4,28,30         cmpb  R30,[Rf4+28]     
4c86: d1,58               jleu  4ce0             if (R30 <= TIME_OL) goto 4ce0; } }
4c88: 36,25,06            jnb   B6,R25,4c91      if (B6_MPGFLG_25 = 1)  {
4c8b: 9b,f4,40,00         cmpb  R0,[Rf4+40]      
4c8f: df,4f               je    4ce0             if (MPG_CL_SW = 0) goto 4ce0; }
4c91: 3b,4a,4c            jb    B3,R4a,4ce0      if (B3_TLS_NV_FLG_4a = 0)  {
4c94: 3a,25,06            jb    B2,R25,4c9d      if (CHKAIR = 0)  {                # (thermactor forced open loop)
4c97: 9b,f6,53,00         cmpb  R0,[Rf6+53]      
4c9b: df,43               je    4ce0             if (T70LSW = 0) goto 4ce0; }
4c9d: a3,e6,5a,30         ldw   R30,[Re6+5a]     R30 = FN039_N_x;
4ca1: a3,e6,56,32         ldw   R32,[Re6+56]     R32 = FN025_MAP_y;
4ca5: ad,06,34            ldzbw R34,6            wR34 = 6;
4ca8: 45,54,01,f4,38      ad3w  R38,Rf4,154      R38 = FN1355;
4cad: ef,06,fd            call  49b6             SYTabLU_49b6 ();
4cb0: bc,3b,38            ldsbw R38,R3b          swR38 = yR3b;
4cb3: c3,e8,46,38         stw   R38,[Re8+46]     BIAS = R38;
4cb7: 65,00,08,38         ad2w  R38,800          R38 += 800;
4cbb: 09,04,38            shlw  R38,4            R38 <<= 4;
4cbe: 6b,e8,48,38         sb2w  R38,[Re8+48]     R38 -= LAMAVE;
4cc2: db,02               jc    4cc6             if (R38 < 0)  {
4cc4: 03,38               negw  R38              R38 = -R38; }                     # |1.0 + BIAS - LAMAVE|
4cc6: c3,ea,c0,38         stw   R38,[Rea+c0]     [440] = R38;
4cca: 8b,f4,6e,38         cmpw  R38,[Rf4+6e]     
4cce: d9,16               jgtu  4ce6             if (R38 > LAMDLT) goto 4ce6;
4cd0: 9b,f4,62,d1         cmpb  Rd1,[Rf4+62]     
4cd4: d1,10               jleu  4ce6             if (IDLTMR <= OLITD1) goto 4ce6;
4cd6: b3,e4,3a,38         ldb   R38,[Re4+3a]     R38 = EGO_CNT_IDLE;
4cda: 9b,f4,41,38         cmpb  R38,[Rf4+41]     
4cde: d3,06               jnc   4ce6             if (R38 < EGO_IDLE) goto 4ce6; } } } } } } } }
4ce0: 91,01,27            orb   R27,1            B0_FLG_OPEN_LOOP_R27 = 1;
4ce3: 71,fd,79            an2b  R79,fd           B1_MPGTFG_79 = 0; } } }

STRATEGY MODULE: FUEL_OL_LAMBSE_COM3
# FINAL FUEL MODE DETERMINATION (OLFLG/CLFLG)
#  AND OPEN LOOP LAMBSE CALCULATION
4ce6: 9b,f4,40,00         cmpb  R0,[Rf4+40]      
4cea: d7,4b               jne   4d37             if (MPG_CL_SW = 0)  {
4cec: 36,25,31            jnb   B6,R25,4d20      if (B6_MPGFLG_25 = 1)  {
4cef: a3,e6,58,30         ldw   R30,[Re6+58]     R30 = FN070L_N_x;
4cf3: a3,e8,c6,32         ldw   R32,[Re8+c6]     R32 = FN072A_MAPPA_y;
4cf7: ad,0a,34            ldzbw R34,a            wR34 = a;
4cfa: 45,86,03,f4,38      ad3w  R38,Rf4,386      R38 = FN1328;
4cff: ef,b4,fc            call  49b6             SYTabLU_49b6 ();
4d02: af,e4,fe,38         ldzbw R38,[Re4+fe]     wR38 = MFAMUL;
4d06: bc,3b,3a            ldsbw R3a,R3b          swR3a = yR3b;
4d09: fe,6c,3a,38         sml2w R38,R3a          slR38 *= R3a;
4d0d: 45,00,40,38,3a      ad3w  R3a,R38,4000     R3a = R38 + 4000;
4d12: d6,02               jge   4d16             if (R3a < 0)  {
4d14: 01,3a               clrw  R3a              R3a = 0; }
4d16: 09,01,3a            shlw  R3a,1            R3a <<= 1;
4d19: d3,03               jnc   4d1e             if (B15_R3a = 1)  {
4d1b: bd,ff,3a            ldsbw R3a,ff           swR3a = ff; }
4d1e: 21,02               sjmp  4e22             goto 4e22; }

4d20: 31,79,14            jnb   B1,R79,4d37      if (B1_MPGTFG_79 = 1)  {          # MPGTFG RESET LOGIC
4d23: 4b,f4,3a,96,3a      sb3w  R3a,R96,[Rf4+3a] R3a = LAMBSE1 - MPGDEC;
4d28: db,02               jc    4d2c             if (R3a < 0)  {
4d2a: 01,3a               clrw  R3a              R3a = 0; }
4d2c: 89,00,80,3a         cmpw  R3a,8000         
4d30: d9,03               jgtu  4d35             if (R3a <= 8000)  {
4d32: 71,fd,79            an2b  R79,fd           B1_MPGTFG_79 = 0; }
4d35: 20,eb               sjmp  4e22             goto 4e22; } }

4d37: 38,27,2c            jb    B0,R27,4d66      if (B0_FLG_OPEN_LOOP_R27 = 0)  {
4d3a: af,e4,fc,30         ldzbw R30,[Re4+fc]     wR30 = PPCTR;
4d3e: 9b,f4,18,30         cmpb  R30,[Rf4+18]     
4d42: db,22               jc    4d66             if (R30 < PIPNUM)  {
4d44: a3,f4,16,3a         ldw   R3a,[Rf4+16]     R3a = DFSLAM;                     # (decel fuel shut-off)
4d48: 6c,3a,30            ml2w  R30,R3a          lR30 *= R3a;
4d4b: af,f4,18,34         ldzbw R34,[Rf4+18]     wR34 = PIPNUM;
4d4f: 8c,34,30            divw  R30,R34          wR30 /= R34;
4d52: d5,03               jnv   4d57             if (OVF = 1)  {
4d54: bd,ff,30            ldsbw R30,ff           swR30 = ff; }
4d57: 68,30,3a            sb2w  R3a,R30          R3a -= R30;
4d5a: db,02               jc    4d5e             if (R3a < 0)  {
4d5c: 01,3a               clrw  R3a              R3a = 0; }
4d5e: 65,00,80,3a         ad2w  R3a,8000         R3a += 8000;
4d62: db,7b               jc    4ddf             if (R3a > ffff) goto 4ddf;
4d64: 20,bc               sjmp  4e22             goto 4e22; } }

4d66: 32,a0,19            jnb   B2,Ra0,4d82      if (B2_WRMEGO_a0 = 1)  {
4d69: 38,27,13            jb    B0,R27,4d7f      if (B0_FLG_OPEN_LOOP_R27 = 0)  {
4d6c: b3,ee,84,42         ldb   R42,[Ree+84]     R42 = KAM_BIT_FLAGS;
4d70: 3d,42,0c            jb    B5,R42,4d7f      if (B5_R42 = 0)  {
4d73: b3,e6,b2,30         ldb   R30,[Re6+b2]     R30 = EGOSSS;
4d77: 9b,f4,13,30         cmpb  R30,[Rf4+13]     
4d7b: d3,02               jnc   4d7f             if (R30 >= EGOCL1)  {             # (not enough EGO switches)
4d7d: 20,c6               sjmp  4e45             goto FUEL_CL_LAMBSE_COM3; } } }   # Do: CLOSED LOOP LAMBSE CALCULATION

4d7f: 3d,79,67            jb    B5,R79,4de9      if (FLG_ECTSTABLQ = 1) goto 4de9; }
4d82: b3,f4,61,36         ldb   R36,[Rf4+61]     R36 = [b4a3];
4d86: 2a,86               scall 500e             TEMP_normalization_factor_x ();
4d88: ac,d4,38            ldzbw R38,Rd4          wR38 = ATMR1;
4d8b: ef,58,fb            call  48e6             UUWFuncLU_48e6 (
4d8e: 3e,02                     #arg 1              FN018A,
4d90: 38,00                     #arg 2              38 );
4d92: a0,38,32            ldw   R32,R38          R32 = R38;
4d95: ad,0a,34            ldzbw R34,a            wR34 = a;
4d98: 45,88,02,f4,38      ad3w  R38,Rf4,288      R38 = FN1361;                     # FN1361(TEMP,ATMR1)
4d9d: ef,19,fc            call  49b9             Four_Point_Interpolation ();
4da0: b0,3b,42            ldb   R42,R3b          R42 = R3b;
4da3: b3,f4,60,36         ldb   R36,[Rf4+60]     R36 = [b4a2];
4da7: 2a,65               scall 500e             TEMP_normalization_factor_x ();
4da9: a3,e8,c6,32         ldw   R32,[Re8+c6]     R32 = FN072A_MAPPA_y;
4dad: ad,0a,34            ldzbw R34,a            wR34 = a;
4db0: 45,38,02,f4,38      ad3w  R38,Rf4,238      R38 = FN1362;                     # fn1362(TEMP,MAPPA)
4db5: ef,01,fc            call  49b9             Four_Point_Interpolation ();
4db8: 58,42,3b,40         sb3b  R40,R3b,R42      R40 = R3b - R42;                  # [fn1362(TEMP,MAPPA) - FN1361(TEMP,ATMR1)]
4dbc: db,02               jc    4dc0             if (R40 < 0)  {
4dbe: 11,40               clrb  R40              R40 = 0; }
4dc0: 29,8e               scall 4f50             C_MULTIPLIER_LOGIC ();
4dc2: 5c,40,3c,38         ml3b  R38,R3c,R40      wR38 = yR3c * R40;                # C * [fn1362(TEMP,MAPPA) - FN1361(TEMP,ATMR1)]
4dc6: af,e4,69,34         ldzbw R34,[Re4+69]     wR34 = LAMMUL;
4dca: 6f,f4,22,34         ml2w  R34,[Rf4+22]     lR34 *= OLMCL;                    # LAMMUL * OLMCL
4dce: 0f,42,34            norm  R34,R42          R42 = normalize(lR34);
4dd1: 6c,36,38            ml2w  R38,R36          lR38 *= R36;
4dd4: 0f,43,38            norm  R38,R43          R43 = normalize(lR38);
4dd7: 74,43,42            ad2b  R42,R43          R42 += R43;
4dda: 79,11,42            sb2b  R42,11           R42 -= 11;
4ddd: db,05               jc    4de4             if (R42 >= 0) goto 4de4; }
4ddf: bd,ff,3a            ldsbw R3a,ff           swR3a = ff;
4de2: 20,3e               sjmp  4e22             goto 4e22; }

4de4: 08,42,3a            shrw  R3a,R42          R3a >>= R42;
4de7: 20,39               sjmp  4e22             goto 4e22; }

4de9: 29,65               scall 4f50             C_MULTIPLIER_LOGIC ();
4deb: 29,fe               scall 4feb             FN1360(N,MAPPA) ();
4ded: 7c,3b,3c            ml2b  R3c,R3b          wR3c *= R3b;
4df0: ef,72,fa            call  4865             SUYFuncLU_4865 (
4df3: ea,41                     #arg 1              FN325,
4df5: b6,00                     #arg 2              ECT );
4df7: 6c,38,3c            ml2w  R3c,R38          lR3c *= R38;                      # C * FN325(ECT)
4dfa: 0f,42,3c            norm  R3c,R42          R42 = normalize(lR3c);
4dfd: af,e4,69,34         ldzbw R34,[Re4+69]     wR34 = LAMMUL;
4e01: 6f,f4,22,34         ml2w  R34,[Rf4+22]     lR34 *= OLMCL;                    # LAMMUL * OLMCL
4e05: 0f,43,34            norm  R34,R43          R43 = normalize(lR34);
4e08: 74,43,42            ad2b  R42,R43          R42 += R43;
4e0b: 4c,36,3e,38         ml3w  R38,R3e,R36      lR38 = wR3e * R36;
4e0f: 0f,43,38            norm  R38,R43          R43 = normalize(lR38);
4e12: 74,43,42            ad2b  R42,R43          R42 += R43;
4e15: 79,1a,42            sb2b  R42,1a           R42 -= 1a;
4e18: db,05               jc    4e1f             if (R42 < 0)  {
4e1a: bd,ff,3a            ldsbw R3a,ff           swR3a = ff;
4e1d: 20,03               sjmp  4e22             goto 4e22; }

4e1f: 08,42,3a            shrw  R3a,R42          R3a >>= R42;
4e22: 88,00,3a            cmpw  R3a,R0           
4e25: d9,02               jgtu  4e29             if (R3a <= 0)  {
4e27: 07,3a               incw  R3a              R3a++; }
4e29: c0,96,3a            stw   R3a,R96          LAMBSE1 = R3a;
4e2c: c3,e8,4a,00         stw   R0,[Re8+4a]      LAMBSE(O) = 0;
4e30: a1,00,80,34         ldw   R34,8000         R34 = 8000;
4e34: c3,e8,48,34         stw   R34,[Re8+48]     LAMAVE = R34;
4e38: 91,04,9f            orb   R9f,4            B2_OLFLG = 1;
4e3b: c7,e4,fd,00         stb   R0,[Re4+fd]      CLFLG = 0;
4e3f: c3,e4,ea,00         stw   R0,[Re4+ea]      ACCUM = 0;
4e43: 20,53               sjmp  4e98             goto 4e98;                        # (lean cruise mode exit into closed loop fuel (ramp fuel))

   FUEL_CL_LAMBSE_COM3:
4e45: 35,2a,04            jnb   B5,R2a,4e4c      if (?RUNNING? = 1)  {
4e48: 38,a3,01            jb    B0,Ra3,4e4c      if (B0_V_MODE_SETUP_a3 = 0)  {
4e4b: f0                  ret                    return; } }

4e4c: b1,01,34            ldb   R34,1            R34 = 1;
4e4f: c7,e4,fd,34         stb   R34,[Re4+fd]     CLFLG = R34;
4e53: 32,9f,05            jnb   B2,R9f,4e5b      if (B2_OLFLG = 1)  {
4e56: 29,65               scall 4fbd             LAMBSE_RESET ();                  # OPEN LOOP/CLOSED LOOP
4e58: 71,fb,9f            an2b  R9f,fb           B2_OLFLG = 0; }
4e5b: 37,a8,0c            jnb   B7,Ra8,4e6a      if (APT_Closed_Throttle = 1)  {
4e5e: b3,e4,e5,38         ldb   R38,[Re4+e5]     R38 = ISFLAG;
4e62: 9b,e4,e6,38         cmpb  R38,[Re4+e6]     
4e66: df,02               je    4e6a             if (R38 != ISLAST)  {
4e68: 29,53               scall 4fbd             LAMBSE_RESET (); } }              # LOAD STATE CHANGE
4e6a: 3e,29,20            jb    B6,R29,4e8d      if (B6_REFFLG_29 = 0)  {
4e6d: 32,26,25            jnb   B2,R26,4e95      if (B2_JMPFLG_26 = 0) goto 4e95;
4e70: 71,fb,26            an2b  R26,fb           B2_JMPFLG_26 = 0;
4e73: 91,02,a0            orb   Ra0,2            B1_V_LAMJMP_a0 = 1;
4e76: af,f4,29,34         ldzbw R34,[Rf4+29]     wR34 = JMPMUL;
4e7a: 6c,96,34            ml2w  R34,R96          lR34 *= LAMBSE1;
4e7d: 0c,07,34            shrdw R34,7            lR34 >>= 7;
4e80: 88,00,36            cmpw  R36,R0           
4e83: df,03               je    4e88             if (R36 != 0)  {
4e85: bd,ff,34            ldsbw R34,ff           swR34 = ff; }
4e88: a0,34,96            ldw   R96,R34          LAMBSE1 = R34;
4e8b: 20,08               sjmp  4e95             goto 4e95; }

4e8d: 3a,26,05            jb    B2,R26,4e95      if (B2_JMPFLG_26 = 0)  {
4e90: 91,04,26            orb   R26,4            B2_JMPFLG_26 = 1;
4e93: 29,28               scall 4fbd             LAMBSE_RESET (); } }              # FAM ENTRY/EXIT
4e95: ef,84,01            call  501c             CALCULATE_PTPAMP_RF_and_RS ();
4e98: c3,e6,82,06         stw   R6,[Re6+82]      [202] = IO_Timer;
4e9c: a0,96,38            ldw   R38,R96          R38 = LAMBSE1;
4e9f: 69,00,80,38         sb2w  R38,8000         R38 -= 8000;
4ea3: c3,e6,42,38         stw   R38,[Re6+42]     DSLMBS = R38;
4ea7: 71,ef,d6            an2b  Rd6,ef           FLG_NOT_ADP = 0;
4eaa: 9b,fe,36,b7         cmpb  Rb7,[Rfe+36]     
4eae: da,15               jle   4ec5             if (ACT > AFACT1)  {
4eb0: 9b,fe,37,b7         cmpb  Rb7,[Rfe+37]     
4eb4: d6,0f               jge   4ec5             if (ACT < AFACT2)  {
4eb6: 9b,fe,34,b6         cmpb  Rb6,[Rfe+34]     
4eba: de,09               jlt   4ec5             if (ECT >= AFECT1)  {
4ebc: 9b,fe,35,b6         cmpb  Rb6,[Rfe+35]     
4ec0: d2,03               jgt   4ec5             if (ECT <= AFECT2)  {
4ec2: 91,10,d6            orb   Rd6,10           FLG_NOT_ADP = 1; } } } }
4ec5: b3,e4,e2,34         ldb   R34,[Re4+e2]     R34 = ISCFLG;
4ec9: 99,01,34            cmpb  R34,1            
4ecc: df,3b               je    4f09             if (R34 != 1)  {
4ece: 9b,ea,c4,00         cmpb  R0,[Rea+c4]      
4ed2: d9,35               jgtu  4f09             if (KAMREF >= 0)  {
4ed4: b3,e4,d3,30         ldb   R30,[Re4+d3]     R30 = APTMR;
4ed8: 9b,fe,4d,30         cmpb  R30,[Rfe+4d]     
4edc: db,2b               jc    4f09             if (R30 < XAPT)  {
4ede: 34,d6,28            jnb   B4,Rd6,4f09      if (FLG_NOT_ADP = 1)  {
4ee1: 29,08               scall 4feb             FN1360(N,MAPPA) ();
4ee3: b3,f4,1f,38         ldb   R38,[Rf4+1f]     R38 = LAMRICH;
4ee7: 98,38,3b            cmpb  R3b,R38          
4eea: d9,23               jgtu  4f0f             if (R3b > R38) goto 4f0f;
4eec: b3,e4,fd,34         ldb   R34,[Re4+fd]     R34 = CLFLG;
4ef0: 99,01,34            cmpb  R34,1            
4ef3: d7,1a               jne   4f0f             if (R34 != 1) goto 4f0f;
4ef5: a3,ea,c0,34         ldw   R34,[Rea+c0]     R34 = [440];
4ef9: 8b,f4,26,34         cmpw  R34,[Rf4+26]     
4efd: d9,10               jgtu  4f0f             if (R34 > LAMDLT_OL) goto 4f0f;
4eff: b3,ea,c2,34         ldb   R34,[Rea+c2]     R34 = [442];
4f03: 9b,f4,25,34         cmpb  R34,[Rf4+25]     
4f07: d3,06               jnc   4f0f             if (R34 < EGO_CNT_OL) goto 4f0f; } } } }
4f09: c7,ea,c3,00         stb   R0,[Rea+c3]      OPEN_TMR = 0;
4f0d: 20,0c               sjmp  4f1b             goto 4f1b; } } } }

4f0f: 71,f7,53            an2b  R53,f7           B3_R53 = 0;
4f12: 9b,e4,fd,00         cmpb  R0,[Re4+fd]      
4f16: d7,03               jne   4f1b             if (CLFLG = 0)  {
4f18: 91,08,53            orb   R53,8            B3_R53 = 1; }
4f1b: b3,e4,fd,34         ldb   R34,[Re4+fd]     R34 = CLFLG;
4f1f: 99,01,34            cmpb  R34,1            
4f22: d7,11               jne   4f35             if (R34 = 1)  {
4f24: 30,9f,12            jnb   B0,R9f,4f39      if (SWTFL = 0) goto 4f39;
4f27: b3,ea,c2,36         ldb   R36,[Rea+c2]     R36 = [442];
4f2b: 17,36               incb  R36              R36++;
4f2d: db,0a               jc    4f39             if (R36 > ff) goto 4f39;
4f2f: c7,ea,c2,36         stb   R36,[Rea+c2]     [442] = R36;
4f33: 20,04               sjmp  4f39             goto 4f39; }

4f35: c7,ea,c2,00         stb   R0,[Rea+c2]      [442] = 0; } }
4f39: b0,a9,34            ldb   R34,Ra9          R34 = MAPPA;
4f3c: 91,02,4e            orb   R4e,2            B1_R4e = 1;
4f3f: 9b,fe,4e,34         cmpb  R34,[Rfe+4e]     
4f43: d3,03               jnc   4f48             if (R34 >= XMAPPA)  {
4f45: 32,9f,07            jnb   B2,R9f,4f4f      if (B2_OLFLG = 0) return; }
4f48: c7,e4,d3,00         stb   R0,[Re4+d3]      APTMR = 0;
4f4c: 71,fd,4e            an2b  R4e,fd           B1_R4e = 0; }
4f4f: f0                  ret                    return;

   C_MULTIPLIER_LOGIC:
4f50: b1,80,3c            ldb   R3c,80           R3c = 80;
4f53: 37,a8,2d            jnb   B7,Ra8,4f83      if (APT_Closed_Throttle = 1)  {
4f56: 3e,26,09            jb    B6,R26,4f62      if (DNDSUP = 0)  {
4f59: b3,fe,2d,30         ldb   R30,[Rfe+2d]     R30 = TRLOAD;
4f5d: 99,03,30            cmpb  R30,3            
4f60: d9,14               jgtu  4f76             if (R30 > 3) goto 4f76; }
4f62: 32,a0,03            jnb   B2,Ra0,4f68      if (B2_WRMEGO_a0 = 1)  {
4f65: 3d,79,0e            jb    B5,R79,4f76      if (FLG_ECTSTABLQ = 1) goto 4f76; }
4f68: ef,7b,f9            call  48e6             UUWFuncLU_48e6 (
4f6b: 84,41                     #arg 1              FN301,
4f6d: b4,00                     #arg 2              N_RPM );
4f6f: 28,43               scall 4fb4             Sub_4fb4 ();
4f71: b0,38,3c            ldb   R3c,R38          R3c = R38;                        # (closed throttle decel/idle, FN1360 not available)
4f74: 20,3d               sjmp  4fb3             return; } }

4f76: b3,f4,21,3c         ldb   R3c,[Rf4+21]     R3c = OLIDRV;                     # (neutral idle)
4f7a: 3e,26,04            jb    B6,R26,4f81      if (DNDSUP = 0)  {
4f7d: b3,f4,24,3c         ldb   R3c,[Rf4+24]     R3c = OLINEUT; }                  # (drive idle)
4f81: 20,30               sjmp  4fb3             return; }

4f83: 30,a8,2d            jnb   B0,Ra8,4fb3      if (APT_WOT = 1)  {
4f86: ef,5d,f9            call  48e6             UUWFuncLU_48e6 (
4f89: 9c,41                     #arg 1              FN303,
4f8b: b4,00                     #arg 2              N_RPM );
4f8d: 28,25               scall 4fb4             Sub_4fb4 ();
4f8f: b0,38,3c            ldb   R3c,R38          R3c = R38;
4f92: 8b,f4,6a,b4         cmpw  Rb4,[Rf4+6a]     
4f96: d3,1b               jnc   4fb3             if (N_RPM >= WOTRPL)  {
4f98: 8b,f4,6c,b4         cmpw  Rb4,[Rf4+6c]     
4f9c: d9,15               jgtu  4fb3             if (N_RPM <= WOTRPH)  {
4f9e: ef,cf,f8            call  4870             UUYFuncLU_4870 (
4fa1: c0,41                     #arg 1              FN310,
4fa3: 52,01                     #arg 2              WOTTMR );
4fa5: 7c,3c,38            ml2b  R38,R3c          wR38 *= R3c;                      # FN303(N) * FN310(WOTTMR) //(wide open throttle)
4fa8: 09,01,38            shlw  R38,1            R38 <<= 1;
4fab: d3,03               jnc   4fb0             if (B15_R38 = 1)  {
4fad: b1,ff,39            ldb   R39,ff           R39 = ff; }
4fb0: b0,39,3c            ldb   R3c,R39          R3c = R39; } } }
4fb3: f0                  ret                    return;

   Sub_4fb4:
4fb4: 98,39,00            cmpb  R0,R39           
4fb7: df,03               je    4fbc             if (R39 != 0)  {
4fb9: b1,ff,38            ldb   R38,ff           R38 = ff; }
4fbc: f0                  ret                    return;

   LAMBSE_RESET:
4fbd: 89,00,80,96         cmpw  R96,8000         
4fc1: d1,0f               jleu  4fd2             if (LAMBSE1 > 8000)  {
4fc3: a1,00,80,96         ldw   R96,8000         LAMBSE1 = 8000;                   # Clip LAMBSE to 1.0 as a maximum
4fc7: c3,e4,c0,00         stw   R0,[Re4+c0]      TSLEGO = 0;
4fcb: c3,e4,ea,00         stw   R0,[Re4+ea]      ACCUM = 0;
4fcf: 91,02,a0            orb   Ra0,2            B1_V_LAMJMP_a0 = 1; }
4fd2: f0                  ret                    return;

   ACT_to_ECT_proportioning_factor(R36):
4fd3: fe,5c,b7,36,38      sml3b R38,R36,Rb7      swR38 = syR36 * ACT;
4fd8: 13,36               negb  R36              R36 = -R36;
4fda: 75,7f,36            ad2b  R36,7f           R36 += 7f;
4fdd: fe,7c,b6,36         sml2b R36,Rb6          swR36 *= ECT;
4fe1: bc,b6,34            ldsbw R34,Rb6          swR34 = ECT;
4fe4: 64,34,36            ad2w  R36,R34          R36 += R34;
4fe7: 64,36,38            ad2w  R38,R36          R38 += R36;
4fea: f0                  ret                    return;

   FN1360(N,MAPPA):
4feb: ef,f8,f8            call  48e6             UUWFuncLU_48e6 (
4fee: e6,02                     #arg 1              FN070B,
4ff0: b4,00                     #arg 2              N_RPM );
4ff2: a0,38,30            ldw   R30,R38          R30 = R38;
4ff5: ac,a9,38            ldzbw R38,Ra9          wR38 = MAPPA;
4ff8: ef,eb,f8            call  48e6             UUWFuncLU_48e6 (
4ffb: 36,03                     #arg 1              FN072C,
4ffd: 38,00                     #arg 2              38 );
4fff: a0,38,32            ldw   R32,R38          R32 = R38;
5002: 45,81,04,f4,38      ad3w  R38,Rf4,481      R38 = FN1360;                     # FN1360(N,MAPPA)
5007: ad,0a,34            ldzbw R34,a            wR34 = a;
500a: ef,ac,f9            call  49b9             Four_Point_Interpolation ();
500d: f0                  ret                    return;

   TEMP_normalization_factor_x:
500e: ef,c2,ff            call  4fd3             ACT_to_ECT_proportioning_factor(R36) ();
5011: ef,c7,f8            call  48db             SUWFuncLU_48db (
5014: be,02                     #arg 1              FN022A,
5016: 38,00                     #arg 2              38 );
5018: a0,38,30            ldw   R30,R38          R30 = R38;
501b: f0                  ret                    return;

   CALCULATE_PTPAMP_RF_and_RS:
501c: 45,d6,03,f4,38      ad3w  R38,Rf4,3d6      R38 = FN1343;
5021: 29,0e               scall 5131             UYTabLU_5131 ();
5023: ac,3b,1e            ldzbw R1e,R3b          wR1e = yR3b;
5026: a3,e8,46,40         ldw   R40,[Re8+46]     R40 = BIAS;
502a: 45,24,01,f4,38      ad3w  R38,Rf4,124      R38 = FN1354;
502f: 29,00               scall 5131             UYTabLU_5131 ();
5031: c7,e8,7d,3b         stb   R3b,[Re8+7d]     PTPAMP = R3b;                     # PTPAMP = FN1354(N,MAP)
5035: ac,3b,38            ldzbw R38,R3b          wR38 = yR3b;
5038: a0,38,3c            ldw   R3c,R38          R3c = R38;
503b: a0,40,16            ldw   R16,R40          R16 = R40;
503e: 37,17,02            jnb   B7,R17,5043      if (B7_R17 = 1)  {
5041: 03,16               negw  R16              R16 = -R16; }
5043: 01,14               clrw  R14              R14 = 0;
5045: 0c,08,14            shrdw R14,8            lR14 >>= 8;
5048: 8c,38,14            divw  R14,R38          wR14 /= R38;                      # |BIAS/PTPAMP|
504b: 89,cc,00,14         cmpw  R14,cc           
504f: d1,03               jleu  5054             if (R14 > cc)  {
5051: b1,cc,14            ldb   R14,cc           R14 = cc; }
5054: ef,19,f8            call  4870             UUYFuncLU_4870 (
5057: 87,60                     #arg 1              FN372,
5059: 14,00                     #arg 2              14 );
505b: 3f,41,05            jb    B7,R41,5063      if (B7_R41 = 0)  {
505e: 39,9f,0a            jb    B1,R9f,506b      if (B1_EGO_IS_RICH_9f = 1) goto 506b;
5061: 20,03               sjmp  5066             goto 5066; }

5063: 31,9f,05            jnb   B1,R9f,506b      if (B1_EGO_IS_RICH_9f = 1)  {
5066: 79,87,38            sb2b  R38,87           R38 -= 87;
5069: 13,38               negb  R38              R38 = -R38; } }
506b: 30,9f,05            jnb   B0,R9f,5073      if (SWTFL = 1)  {
506e: 79,87,38            sb2b  R38,87           R38 -= 87;
5071: 13,38               negb  R38              R38 = -R38; }
5073: b0,38,39            ldb   R39,R38          R39 = R38;
5076: 11,38               clrb  R38              R38 = 0;
5078: 6c,3c,38            ml2w  R38,R3c          lR38 *= R3c;
507b: 0d,01,38            shldw R38,1            lR38 <<= 1;
507e: 8c,1e,38            divw  R38,R1e          wR38 /= R1e;
5081: d5,03               jnv   5086             if (OVF = 1)  {
5083: bd,ff,38            ldsbw R38,ff           swR38 = ff; }
5086: 6c,b4,38            ml2w  R38,Rb4          lR38 *= N_RPM;
5089: 4b,e6,82,06,34      sb3w  R34,R6,[Re6+82]  R34 = IO_Timer - [202];
508e: 6d,44,28,34         ml2w  R34,2844         lR34 *= 2844;
5092: a0,36,34            ldw   R34,R36          R34 = R36;
5095: 30,9f,3e            jnb   B0,R9f,50d6      if (SWTFL = 1)  {
5098: a0,96,34            ldw   R34,R96          R34 = LAMBSE1;
509b: a3,e8,4a,3c         ldw   R3c,[Re8+4a]     R3c = LAMBSE(O);
509f: c3,e8,4a,34         stw   R34,[Re8+4a]     LAMBSE(O) = R34;
50a3: 88,00,3c            cmpw  R3c,R0           
50a6: df,0d               je    50b5             if (R3c != 0)  {
50a8: 08,01,34            shrw  R34,1            R34 >>= 1;
50ab: 08,01,3c            shrw  R3c,1            R3c >>= 1;
50ae: 64,34,3c            ad2w  R3c,R34          R3c += R34;
50b1: c3,e8,48,3c         stw   R3c,[Re8+48]     LAMAVE = R3c; }
50b5: 71,bf,27            an2b  R27,bf           B6_R27_OpenLoop? = 0;
50b8: b0,1e,35            ldb   R35,R1e          R35 = R1e;
50bb: 11,34               clrb  R34              R34 = 0;
50bd: 6d,f0,00,34         ml2w  R34,f0           lR34 *= f0;
50c1: 8c,b4,34            divw  R34,Rb4          wR34 /= N_RPM;
50c4: a3,e4,ea,36         ldw   R36,[Re4+ea]     R36 = ACCUM;
50c8: c3,e4,ea,00         stw   R0,[Re4+ea]      ACCUM = 0;
50cc: 8b,e4,c0,34         cmpw  R34,[Re4+c0]     
50d0: c3,e4,c0,00         stw   R0,[Re4+c0]      TSLEGO = 0;
50d4: db,1e               jc    50f4             if (R34 >= TSLEGO) goto 50f4; }
50d6: 6c,3a,34            ml2w  R34,R3a          lR34 *= R3a;
50d9: 30,9f,0f            jnb   B0,R9f,50eb      if (SWTFL = 1)  {
50dc: 99,03,37            cmpb  R37,3            
50df: d1,05               jleu  50e6             if (R37 > 3)  {
50e1: bd,ff,36            ldsbw R36,ff           swR36 = ff;
50e4: 20,0e               sjmp  50f4             goto 50f4; }

50e6: 0d,06,34            shldw R34,6            lR34 <<= 6;
50e9: 20,09               sjmp  50f4             goto 50f4; }

50eb: 47,e4,ea,36,38      ad3w  R38,R36,[Re4+ea] R38 = R36 + ACCUM;
50f0: c3,e4,ea,38         stw   R38,[Re4+ea]     ACCUM = R38; }
50f4: 39,9f,0b            jb    B1,R9f,5102      if (B1_EGO_IS_RICH_9f = 0)  {
50f7: 68,36,96            sb2w  R96,R36          LAMBSE1 -= R36;
50fa: db,0e               jc    510a             if (LAMBSE1 >= 0) goto 510a;
50fc: a3,f4,44,96         ldw   R96,[Rf4+44]     LAMBSE1 = LAMMIN;
5100: 20,2e               sjmp  5130             return; }

5102: 64,36,96            ad2w  R96,R36          LAMBSE1 += R36;
5105: d3,03               jnc   510a             if (LAMBSE1 > ffff)  {
5107: bd,ff,96            ldsbw R96,ff           LAMBSE1 = ff; } }
510a: a3,f4,44,30         ldw   R30,[Rf4+44]     R30 = LAMMIN;
510e: 88,30,96            cmpw  R96,R30          
5111: d3,1a               jnc   512d             if (LAMBSE1 >= R30)  {
5113: a3,f4,42,30         ldw   R30,[Rf4+42]     R30 = LAMMAX;
5117: 37,a8,0e            jnb   B7,Ra8,5128      if (APT_Closed_Throttle = 1)  {
511a: b3,e4,e5,32         ldb   R32,[Re4+e5]     R32 = ISFLAG;
511e: 9b,e4,e6,32         cmpb  R32,[Re4+e6]     
5122: df,04               je    5128             if (R32 != ISLAST)  {
5124: a1,00,80,30         ldw   R30,8000         R30 = 8000; } }
5128: 88,30,96            cmpw  R96,R30          
512b: d1,03               jleu  5130             if (LAMBSE1 <= R30) return; }
512d: a0,30,96            ldw   R96,R30          LAMBSE1 = R30; }
5130: f0                  ret                    return;

   UYTabLU_5131:
5131: a3,e6,5a,30         ldw   R30,[Re6+5a]     R30 = FN039_N_x;
5135: a3,e6,56,32         ldw   R32,[Re6+56]     R32 = FN025_MAP_y;
5139: ad,06,34            ldzbw R34,6            wR34 = 6;
513c: e7,7a,f8            jump  49b9             goto Four_Point_Interpolation;

   FUEL_ADAPT_COM4:
513f: 3e,a5,11            jb    B6,Ra5,5153      if (UNDSP = 0)  {
5142: 9b,fe,34,b6         cmpb  Rb6,[Rfe+34]     
5146: de,0b               jlt   5153             if (ECT >= AFECT1)  {
5148: 9b,fe,35,b6         cmpb  Rb6,[Rfe+35]     
514c: d2,05               jgt   5153             if (ECT <= AFECT2)  {
514e: 91,01,a5            orb   Ra5,1            Adptmr_on = 1;
5151: 20,07               sjmp  515a             goto 515a; } } }

5153: c3,e4,b8,00         stw   R0,[Re4+b8]      ADPTMR = 0;
5157: 71,fe,a5            an2b  Ra5,fe           Adptmr_on = 0;
515a: a3,e8,0c,14         ldw   R14,[Re8+c]      R14 = RANNUM;
515e: 6d,05,02,14         ml2w  R14,205          lR14 *= 205;
5162: 65,81,00,14         ad2w  R14,81           R14 += 81;
5166: c3,e8,0c,14         stw   R14,[Re8+c]      RANNUM = R14;
516a: 36,29,2d            jnb   B6,R29,519a      if (B6_REFFLG_29 = 1)  {
516d: b3,e4,e2,38         ldb   R38,[Re4+e2]     R38 = ISCFLG;
5171: 99,01,38            cmpb  R38,1            
5174: d7,24               jne   519a             if (R38 = 1)  {                   # ISCFLG = 1 CLOSED LOOP RPM CONTROL
5176: 9b,fe,4b,00         cmpb  R0,[Rfe+4b]      
517a: df,03               je    517f             if (HCAMSW != 0)  {
517c: 3f,26,1b            jb    B7,R26,519a      if (B7_HCAMFG_26 = 1) goto 519a; }
517f: b3,e4,e5,38         ldb   R38,[Re4+e5]     R38 = ISFLAG;
5183: 11,18               clrb  R18              R18 = 0;
5185: b0,38,19            ldb   R19,R38          R19 = R38;                        # kamcol = ISFLAG
5188: c7,e6,46,38         stb   R38,[Re6+46]     COLTBU = R38;                     # OLTBU = ISFLAG
518c: b1,0a,38            ldb   R38,a            R38 = a;
518f: 11,16               clrb  R16              R16 = 0;
5191: b0,38,17            ldb   R17,R38          R17 = R38;                        # kamrow = 10
5194: c7,e6,47,38         stb   R38,[Re6+47]     ROWTBU = R38;                     # ROWTBU = 10
                                                                                   # (special idle cells)
5198: 20,34               sjmp  51ce             goto EGO_Switch_Logic; } } }

519a: ef,49,f7            call  48e6             UUWFuncLU_48e6 (
519d: 6c,e2                     #arg 1              FN070?L?,
519f: b4,00                     #arg 2              N_RPM );
51a1: c0,18,38            stw   R38,R18          R18 = R38;                        # kamcol = FN070L(N)
51a4: bc,15,3c            ldsbw R3c,R15          swR3c = yR15;                     # rancol = RANNUM
51a7: 65,80,00,38         ad2w  R38,80           R38 += 80;                        # 0.5
51ab: 64,3c,38            ad2w  R38,R3c          R38 += R3c;
51ae: c7,e6,46,39         stb   R39,[Re6+46]     COLTBU = R39;                     # COLTBU = kamcol + 0.5 + rancol
51b2: af,e4,6b,38         ldzbw R38,[Re4+6b]     wR38 = MAPOPE;
51b6: ef,2d,f7            call  48e6             UUWFuncLU_48e6 (
51b9: 4c,e2                     #arg 1              FN031,
51bb: 38,00                     #arg 2              38 );
51bd: c0,16,38            stw   R38,R16          R16 = R38;                        # kamrow = FN031(MAPOPE)
51c0: bc,14,3c            ldsbw R3c,R14          swR3c = yR14;                     # ranrow = RANNUM
51c3: 65,80,00,38         ad2w  R38,80           R38 += 80;                        # 0.5
51c7: 64,3c,38            ad2w  R38,R3c          R38 += R3c;                       #
51ca: c7,e6,47,39         stb   R39,[Re6+47]     ROWTBU = R39;                     # ROWTBU = kamrow + 0.5 + ranrow
   EGO_Switch_Logic:
51ce: 30,9f,0a            jnb   B0,R9f,51db      if (SWTFL = 1)  {                 # (EGO switch)
51d1: b3,ea,aa,38         ldb   R38,[Rea+aa]     R38 = EGOCNT;
51d5: 17,38               incb  R38              R38++;                            # Increment EGOCNT
51d7: c7,ea,aa,38         stb   R38,[Rea+aa]     EGOCNT = R38; }
51db: 3a,9f,61            jb    B2,R9f,523f      if (B2_OLFLG = 0)  {              # OPEN LOOP FUEL CONTROL
51de: 9b,fe,36,b7         cmpb  Rb7,[Rfe+36]     
51e2: da,5b               jle   523f             if (ACT > AFACT1)  {
51e4: 9b,fe,37,b7         cmpb  Rb7,[Rfe+37]     
51e8: d6,55               jge   523f             if (ACT < AFACT2)  {
51ea: a3,e4,b8,38         ldw   R38,[Re4+b8]     R38 = ADPTMR;
51ee: 8b,fe,38,38         cmpw  R38,[Rfe+38]     
51f2: d3,4b               jnc   523f             if (R38 >= ADAPTM)  {
51f4: 3f,9f,48            jb    B7,R9f,523f      if (B7_Flags_9f = 0)  {
51f7: 51,ac,a6,38         an3b  R38,Ra6,ac       R38 = (B2_TFMFLG_a6|
                                                        B3_MFMFLG_a6|
                                                        B5_CFMFLG_a6|
                                                        B7_AFMFLG_a6);
51fb: d7,42               jne   523f             if (R38 = 0)  {
51fd: b3,e6,9b,38         ldb   R38,[Re6+9b]     R38 = AEFUEL;
5201: 9b,fe,45,38         cmpb  R38,[Rfe+45]     
5205: d9,38               jgtu  523f             if (R38 <= AELIM)  {
5207: a0,98,38            ldw   R38,R98          R38 = EFTR;
520a: 37,39,02            jnb   B7,R39,520f      if (B7_R39 = 1)  {
520d: 03,38               negw  R38              R38 = -R38; }
520f: 8b,fe,46,38         cmpw  R38,[Rfe+46]     
5213: db,2a               jc    523f             if (R38 < ADEFTR)  {
5215: 4b,e6,a2,16,38      sb3w  R38,R16,[Re6+a2] R38 = R16 - LSTROW;
521a: db,02               jc    521e             if (R38 < 0)  {
521c: 03,38               negw  R38              R38 = -R38; }
521e: 8b,fe,3e,38         cmpw  R38,[Rfe+3e]     
5222: d9,1b               jgtu  523f             if (R38 <= DELROW)  {
5224: 4b,e6,a4,18,38      sb3w  R38,R18,[Re6+a4] R38 = R18 - LSTCOL;
5229: db,02               jc    522d             if (R38 < 0)  {
522b: 03,38               negw  R38              R38 = -R38; }
522d: 8b,fe,40,38         cmpw  R38,[Rfe+40]     
5231: d9,0c               jgtu  523f             if (R38 <= DELCOL)  {
5233: 36,29,1d            jnb   B6,R29,5253      if (B6_REFFLG_29 = 0) goto 5253;
5236: b3,e4,e2,38         ldb   R38,[Re4+e2]     R38 = ISCFLG;
523a: 99,01,38            cmpb  R38,1                                              # ISCFLG = 1 CLOSED LOOP RPM CONTROL
523d: df,14               je    5253             if (R38 = 1) goto 5253; } } } } } } } } } }
523f: c3,e6,8e,00         stw   R0,[Re6+8e]      LOPCT1 = 0;
5243: c7,ea,aa,00         stb   R0,[Rea+aa]      EGOCNT = 0;
5247: c3,e6,a4,18         stw   R18,[Re6+a4]     LSTCOL = R18;                     # LSTCOL = kamcol
524b: c3,e6,a2,16         stw   R16,[Re6+a2]     LSTROW = R16;                     # LSTCOL = kamrow
524f: 29,18               scall 5369             NEW_UPRATE_CALC ();               # Do: NEW_UPRATE_CALC
5251: 21,15               sjmp  5368             return; } }                       # Exit FUEL_ADAPT_COM4

# Continue with FUEL_ADAPT_COM4:

# Calculate the LAMBSE window, LAMWIN:
5253: b3,e8,7d,42         ldb   R42,[Re8+7d]     R42 = PTPAMP;
5257: b3,fe,3a,43         ldb   R43,[Rfe+3a]     R43 = AMPMUL;
525b: 7c,43,42            ml2b  R42,R43          wR42 *= R43;
525e: 08,02,42            shrw  R42,2            R42 >>= 2;
5261: 67,fe,3c,42         ad2w  R42,[Rfe+3c]     R42 += DELAMB;
5265: d3,03               jnc   526a             if (R42 > ffff)  {
5267: bd,ff,42            ldsbw R42,ff           swR42 = ff; }
526a: c3,e8,7a,42         stw   R42,[Re8+7a]     LAMWIN = R42;                     # LAMWIN = DELAMB + (PTPAMP * AMPMUL)

# Calculate the EGO based learning rate:
526e: 39,25,22            jb    B1,R25,5293      if (B1_WARM_UP_25 = 0)  {
5271: 3e,a5,1f            jb    B6,Ra5,5293      if (UNDSP = 0)  {
5274: b0,b9,38            ldb   R38,Rb9          R38 = TCSTRT;
5277: 9b,fe,75,38         cmpb  R38,[Rfe+75]     
527b: d6,16               jge   5293             if (R38 < VECT5)  {
527d: 9b,ff,f0,00,b6      cmpb  Rb6,[Rfe+f0]     
5282: da,0f               jle   5293             if (ECT > VECT3)  {
5284: 91,02,25            orb   R25,2            B1_WARM_UP_25 = 1;
5287: b3,ee,c7,38         ldb   R38,[Ree+c7]     R38 = KWUCTR;
528b: 17,38               incb  R38              R38++;
528d: db,04               jc    5293             if (R38 <= ff)  {                 # Clip KWUCTR to 255
528f: c7,ee,c7,38         stb   R38,[Ree+c7]     KWUCTR = R38; } } } } }
5293: b3,ee,c7,32         ldb   R32,[Ree+c7]     R32 = KWUCTR;
5297: 9b,fe,4a,32         cmpb  R32,[Rfe+4a]     
529b: d3,06               jnc   52a3             if (R32 >= KWUCNT)  {
529d: b3,fe,48,32         ldb   R32,[Rfe+48]     R32 = ADEGCT;                     # egolearn_rat = ADEGCT (use normal learning rate)
52a1: 20,04               sjmp  52a7             goto 52a7; }

52a3: b3,fe,49,32         ldb   R32,[Rfe+49]     R32 = FAEGCT;                     # egolearn_rat = FAEGCT (use fast learning rate)

# Calculate loop counters:
52a7: b3,ea,aa,38         ldb   R38,[Rea+aa]     R38 = EGOCNT;
52ab: 98,32,38            cmpb  R38,R32          
52ae: d3,48               jnc   52f8             if (R38 >= R32)  {                # EGOCNT >= egolearn_rat
52b0: a3,e8,46,38         ldw   R38,[Re8+46]     R38 = BIAS;
52b4: 09,04,38            shlw  R38,4            R38 <<= 4;
52b7: 75,80,39            ad2b  R39,80           R39 += 80;
52ba: 31,9f,23            jnb   B1,R9f,52e0      if (B1_EGO_IS_RICH_9f = 1)  {
52bd: 67,e8,7a,38         ad2w  R38,[Re8+7a]     R38 += LAMWIN;
52c1: 88,96,38            cmpw  R38,R96          
52c4: d9,32               jgtu  52f8             if (R38 > LAMBSE1) goto 52f8;
52c6: 36,44,06            jnb   B6,R44,52cf      if (B6_LIMIT_PURGE_44 = 1)  {
52c9: 8b,e4,76,00         cmpw  R0,[Re4+76]      
52cd: d7,29               jne   52f8             if (PURGDC != 0) goto 52f8; }
52cf: b3,e6,8e,38         ldb   R38,[Re6+8e]     R38 = LOPCT1;
52d3: 99,ff,38            cmpb  R38,ff           
52d6: df,20               je    52f8             if (R38 = ff) goto 52f8;          # (max 255)
52d8: 17,38               incb  R38              R38++;                            # Increment LOPCT1
52da: c7,e6,8e,38         stb   R38,[Re6+8e]     LOPCT1 = R38;
52de: 20,18               sjmp  52f8             goto 52f8; }

52e0: 6b,e8,7a,38         sb2w  R38,[Re8+7a]     R38 -= LAMWIN;
52e4: 88,96,38            cmpw  R38,R96          
52e7: d3,0f               jnc   52f8             if (R38 >= LAMBSE1)  {
52e9: b3,e6,8f,38         ldb   R38,[Re6+8f]     R38 = LOPCT2;
52ed: 99,ff,38            cmpb  R38,ff           
52f0: df,06               je    52f8             if (R38 != ff)  {                 # (max 255)
52f2: 17,38               incb  R38              R38++;                            # Increment LOPCT2
52f4: c7,e6,8f,38         stb   R38,[Re6+8f]     LOPCT2 = R38; } } } } } }

# Determine if adaptive cells should be incremented/decremented:
#  LTMTBL cells are updated when the following conditions are satisfied:
#   Note that r = ROWTBU and c = COLTBU in the following charts.
52f8: 45,94,02,fe,42      ad3w  R42,Rfe,294      R42 = FN1325L;
52fd: b3,e6,47,14         ldb   R14,[Re6+47]     R14 = ROWTBU;
5301: 7d,0a,14            ml2b  R14,a            wR14 *= a;
5304: 77,e6,46,14         ad2b  R14,[Re6+46]     R14 += COLTBU;
5308: ac,14,3a            ldzbw R3a,R14          wR3a = yR14;
530b: 64,42,14            ad2w  R14,R42          R14 += R42;
530e: b1,ff,3d            ldb   R3d,ff           R3d = ff;
5311: 9a,14,00            cmpb  R0,[R14]         
5314: d2,02               jgt   5318             if ([R14] >= 0)  {                # FN1325Lrc >= 0
5316: 17,3d               incb  R3d              R3d++; }
5318: a1,4e,07,40         ldw   R40,74e          R40 = 74e;
531c: 64,3a,40            ad2w  R40,R3a          R40 += R3a;
531f: b2,40,36            ldb   R36,[R40]        R36 = [R40];                      # LTMTBLrc
5322: a3,ee,cc,34         ldw   R34,[Ree+cc]     R34 = KAM_CHKSUM;
5326: b3,e8,7c,32         ldb   R32,[Re8+7c]     R32 = UPRATE;
532a: 19,01,32            shlb  R32,1            R32 <<= 1;                        # 2 * UPRATE 
532d: 9b,e6,8e,32         cmpb  R32,[Re6+8e]     
5331: db,13               jc    5346             if (R32 < LOPCT1)  {              # LOPCT1 > 2 * UPRATE
5333: c7,e6,8e,00         stb   R0,[Re6+8e]      LOPCT1 = 0;
5337: 3f,3d,2a            jb    B7,R3d,5364      if (B7_R3d = 1) goto 5364;
533a: 9b,fe,43,36         cmpb  R36,[Rfe+43]     
533e: d1,24               jleu  5364             if (R36 <= MINADP) goto 5364;
5340: 05,34               decw  R34              R34--;                            # Decrement CHKSUM
5342: 15,36               decb  R36              R36--;                            # LTMTBLrc = LTMBLrc - 0.0039
5344: 20,17               sjmp  535d             goto 535d; }

5346: 9b,e6,8f,32         cmpb  R32,[Re6+8f]     
534a: db,1c               jc    5368             if (R32 >= LOPCT2) return;
534c: c7,e6,8f,00         stb   R0,[Re6+8f]      LOPCT2 = 0;
5350: 3f,3d,11            jb    B7,R3d,5364      if (B7_R3d = 0)  {
5353: 9b,fe,44,36         cmpb  R36,[Rfe+44]     
5357: db,0b               jc    5364             if (R36 < MAXADP)  {              # LTMTBLrc < MAXADP
5359: 07,34               incw  R34              R34++;                            # Increment CHKSUM
535b: 17,36               incb  R36              R36++;                            # LTMTBLrc = LTMTBLrc + 0.0039
535d: c3,ee,cc,34         stw   R34,[Ree+cc]     KAM_CHKSUM = R34;
5361: c6,40,36            stb   R36,[R40]        [R40] = R36; } } } }
5364: c7,ea,aa,00         stb   R0,[Rea+aa]      EGOCNT = 0; }
5368: f0                  ret                    return;

   NEW_UPRATE_CALC:
5369: 45,94,02,fe,42      ad3w  R42,Rfe,294      R42 = FN1325L;
536e: 5d,0a,17,14         ml3b  R14,R17,a        wR14 = yR17 * a;
5372: 74,19,14            ad2b  R14,R19          R14 += R19;
5375: 64,42,14            ad2w  R14,R42          R14 += R42;
5378: 99,0a,17            cmpb  R17,a            
537b: d7,05               jne   5382             if (R17 = a)  {                   # kamrow = kamrow_spec
537d: b2,14,3b            ldb   R3b,[R14]        R3b = [R14];                      # Read the value in FN1325L specified by kamcol.
5380: 20,7b               sjmp  53fd             goto 53fd; }                      # Load this value in UPRATE.

# Continue with subroutine NEW_UPRATE_CALC
5382: b2,15,3b            ldb   R3b,[R14++]      R3b = [R14++];
5385: b0,3b,1a            ldb   R1a,R3b          R1a = R3b;
5388: b0,3b,1b            ldb   R1b,R3b          R1b = R3b;
538b: a0,1a,1c            ldw   R1c,R1a          R1c = R1a;
538e: 99,09,19            cmpb  R19,9            
5391: d7,0e               jne   53a1             if (R19 = 9)  {                   # Column
5393: 99,09,17            cmpb  R17,9            
5396: df,1e               je    53b6             if (R17 = 9) goto 53b6;           # Row
5398: b3,14,09,1c         ldb   R1c,[R14+9]      R1c = [R14+9];
539c: b0,1c,1d            ldb   R1d,R1c          R1d = R1c;
539f: 20,15               sjmp  53b6             goto 53b6; }

53a1: b2,14,1b            ldb   R1b,[R14]        R1b = [R14];
53a4: 99,09,17            cmpb  R17,9            
53a7: d7,05               jne   53ae             if (R17 = 9)  {
53a9: b0,1b,1d            ldb   R1d,R1b          R1d = R1b;
53ac: 20,08               sjmp  53b6             goto 53b6; }

53ae: b3,14,09,1c         ldb   R1c,[R14+9]      R1c = [R14+9];
53b2: b3,14,0a,1d         ldb   R1d,[R14+a]      R1d = [R14+a]; }
53b6: b1,04,36            ldb   R36,4            R36 = 4;                          # (use FN1325L 4 times so not to wrap around table or use special idle cells)
53b9: 11,1e               clrb  R1e              R1e = 0;
53bb: 01,20               clrw  R20              R20 = 0;
53bd: a1,1a,00,38         ldw   R38,1a           R38 = 1a;
53c1: be,39,14            ldsbw R14,[R38++]      swR14 = [R38++];
53c4: 3f,15,05            jb    B7,R15,53cc      if (B7_R15 = 0)  {
53c7: 17,1e               incb  R1e              R1e++;                            # uprat_cnt
53c9: 64,14,20            ad2w  R20,R14          R20 += R14; }                     # (adapt1_uprat + adapt2_uprat + adapt3_uprat + adapt4_uprat) 
53cc: e0,36,f2            djnz  R36,53c1         R36--;
                                                 if (R36 != 0) goto 53c1;
53cf: b1,7f,3b            ldb   R3b,7f           R3b = 7f;                         # UPRATE = 127 (maximum value)
53d2: 98,1e,00            cmpb  R0,R1e           
53d5: df,26               je    53fd             if (R1e != 0)  {                  # uprat_cnt != 0
53d7: 9c,1e,20            divb  R20,R1e          yR20 /= R1e;                      # uprat_avg = R20 / uprat_cnt
53da: b1,04,36            ldb   R36,4            R36 = 4;
53dd: a1,1a,00,38         ldw   R38,1a           R38 = 1a;
53e1: 9a,39,00            cmpb  R0,[R38++]       
53e4: da,04               jle   53ea             if ([R38++] < 0)  {               # If, however, one or more  of  the  cells  in  the  four  points  is  a reference  cell,
53e6: c7,38,ff,20         stb   R20,[R38+ff]     [R38-1] = R20; }                  # then the average of the values in the positive cells is used in place of the negative values.
53ea: e0,36,f4            djnz  R36,53e1         R36--;
                                                 if (R36 != 0) goto 53e1;
53ed: ac,18,30            ldzbw R30,R18          wR30 = yR18;
53f0: ac,16,32            ldzbw R32,R16          wR32 = yR16;
53f3: ad,02,34            ldzbw R34,2            wR34 = 2;
53f6: a1,1a,00,38         ldw   R38,1a           R38 = 1a;
53fa: ef,bc,f5            call  49b9             Four_Point_Interpolation (); }
53fd: c7,e8,7c,3b         stb   R3b,[Re8+7c]     UPRATE = R3b;
5401: f0                  ret                    return;                           # Exit the subroutine NEW_UPRATE_CALC

   Sub_5402:
5402: 37,a5,02            jnb   B7,Ra5,5407      if (b7_CRKFLG_a5 = 1)  {          # (crank mode)   
5405: 23,38               sjmp  573f             goto 573f; }

5407: ef,26,04            call  5830             FUEL_KAM_ADAPT_COM3 ();
540a: ef,df,04            call  58ec             FUEL_TRANS_COM5 ();

STRATEGY MODULE: FUEL_HOT_INJ_COMP_COM2
540d: b3,f5,94,00,36      ldb   R36,[Rf4+94]     R36 = FRCHIC;
5412: ef,be,fb            call  4fd3             ACT_to_ECT_proportioning_factor(R36) ();
5415: 0a,07,38            asrw  R38,7            swR38 >>= 7;
5418: ef,c0,f4            call  48db             SUWFuncLU_48db (
541b: d2,03                     #arg 1              FN005,
541d: 38,00                     #arg 2              38 );
541f: a0,38,30            ldw   R30,R38          R30 = R38;
5422: bf,e6,63,38         ldsbw R38,[Re6+63]     swR38 = ACSTRT;
5426: ef,b2,f4            call  48db             SUWFuncLU_48db (
5429: d2,03                     #arg 1              FN005,
542b: 38,00                     #arg 2              38 );
542d: a0,38,32            ldw   R32,R38          R32 = R38;
5430: ad,05,34            ldzbw R34,5            wR34 = 5;
5433: 45,4f,04,f4,38      ad3w  R38,Rf4,44f      R38 = FN1349;                     # Fuel enrichment factor.  X = FN005(TEMP) Y = FN005(ACSTRT)
5438: ef,7e,f5            call  49b9             Four_Point_Interpolation ();
543b: b0,3b,3c            ldb   R3c,R3b          R3c = R3b;
543e: af,e8,06,38         ldzbw R38,[Re8+6]      wR38 = ATMR3;
5442: ef,a1,f4            call  48e6             UUWFuncLU_48e6 (
5445: fe,03                     #arg 1              FN008,
5447: 38,00                     #arg 2              38 );
5449: a0,38,30            ldw   R30,R38          R30 = R38;
544c: ef,97,f4            call  48e6             UUWFuncLU_48e6 (
544f: ea,03                     #arg 1              FN007,
5451: 9a,00                     #arg 2              AM );
5453: a0,38,32            ldw   R32,R38          R32 = R38;
5456: ad,05,34            ldzbw R34,5            wR34 = 5;
5459: 45,36,04,f4,38      ad3w  R38,Rf4,436      R38 = FN1348;
545e: ef,58,f5            call  49b9             Four_Point_Interpolation ();
5461: 7c,3b,3c            ml2b  R3c,R3b          wR3c *= R3b;
5464: c3,e6,b4,3c         stw   R3c,[Re6+b4]     HICOMP = R3c;
5468: 01,38               clrw  R38              R38 = 0;
546a: a3,f4,0c,3a         ldw   R3a,[Rf4+c]      R3a = A0;                         # Hot Injector compensation has therefore been applied  to  the  fuel delivery  slope  A0.
546e: 0c,04,38            shrdw R38,4            lR38 >>= 4;
5471: 65,00,10,3c         ad2w  R3c,1000         R3c += 1000;
5475: 8c,3c,38            divw  R38,R3c          wR38 /= R3c;
5478: d5,03               jnv   547d             if (OVF = 1)  {
547a: bd,ff,38            ldsbw R38,ff           swR38 = ff; }
547d: c3,e6,60,38         stw   R38,[Re6+60]     A0COR = R38;

DETERMINE BASE FUEL FLOW (BASEFF)
# BASEFF is used in the foreground fuel  calculation  and  contains  base  fuel
#   flow, unadjusted for transient fuel, AE fuel, or injector hardware.
5481: a3,e4,f6,3c         ldw   R3c,[Re4+f6]     R3c = KAMRF1;
5485: 6d,e5,8b,3c         ml2w  R3c,8be5         lR3c *= 8be5;                     # 0x8be5 = 35813; 2^19 = 524288; 524288/35813 = 14.64
5489: 8c,96,3c            divw  R3c,R96          wR3c /= LAMBSE1;
548c: b1,02,30            ldb   R30,2            R30 = 2;
548f: a0,9a,34            ldw   R34,R9a          R34 = AM;
5492: 35,9e,09            jnb   B5,R9e,549e      if (B5_HAVE_ALT_AM_9e = 1)  {
5495: a3,e6,5e,34         ldw   R34,[Re6+5e]     R34 = ALT_AM;
5499: 17,30               incb  R30              R30++;
549b: 71,df,9e            an2b  R9e,df           B5_HAVE_ALT_AM_9e = 0; }
549e: 6c,3c,34            ml2w  R34,R3c          lR34 *= R3c;
54a1: 0d,30,34            shldw R34,R30          lR34 <<= R30;
54a4: c3,e6,68,36         stw   R36,[Re6+68]     BASEFF = R36;

DETERMINE BASE EM (BASE_EM)
# BASE_EM is used in the foreground fuel calculation to adjust  the  base  fuel
#   for EGR mass that may be present at the time.
54a8: ac,7d,32            ldzbw R32,R7d          wR32 = EM;
54ab: 6c,32,3c            ml2w  R3c,R32          lR3c *= R32;
54ae: 0c,0a,3c            shrdw R3c,a            lR3c >>= a;
54b1: c3,e6,6a,3c         stw   R3c,[Re6+6a]     BASE_EM = R3c;


54b5: 7d,f0,18            ml2b  R18,f0           wR18 *= f0;
54b8: a0,98,38            ldw   R38,R98          R38 = EFTR;
54bb: 37,99,02            jnb   B7,R99,54c0      if (B7_R99 = 1)  {
54be: 03,38               negw  R38              R38 = -R38; }
54c0: 6c,18,38            ml2w  R38,R18          lR38 *= R18;
54c3: 37,99,07            jnb   B7,R99,54cd      if (B7_R99 = 1)  {
54c6: 02,3a               cplw  R3a              R3a = ~R3a;
54c8: 03,38               negw  R38              R38 = -R38;
54ca: a4,00,3a            adcw  R3a,R0           R3a += CY; }
54cd: c3,e4,f4,3a         stw   R3a,[Re4+f4]     [174] = R3a;
54d1: 64,34,38            ad2w  R38,R34          R38 += R34;
54d4: a4,36,3a            adcw  R3a,R36          R3a += R36 + CY;
54d7: 3f,99,07            jb    B7,R99,54e1      if (B7_R99 = 0)  {
54da: d3,0c               jnc   54e8             if (R3a <= ffff) goto 54e8;
54dc: bd,ff,3a            ldsbw R3a,ff           swR3a = ff;
54df: 20,07               sjmp  54e8             goto 54e8; }

54e1: d6,05               jge   54e8             if (R3a < 0)  {
54e3: 01,3a               clrw  R3a              R3a = 0;
54e5: a0,3a,38            ldw   R38,R3a          R38 = R3a; } }
54e8: a3,e6,60,34         ldw   R34,[Re6+60]     R34 = A0COR;
54ec: 6c,b4,34            ml2w  R34,Rb4          lR34 *= N_RPM;
54ef: 0f,42,34            norm  R34,R42          R42 = normalize(lR34);
54f2: af,f6,05,34         ldzbw R34,[Rf6+5]      wR34 = ENGCYL;
54f6: 6c,36,34            ml2w  R34,R36          lR34 *= R36;
54f9: 17,42               incb  R42              R42++;
54fb: 0c,42,34            shrdw R34,R42          lR34 >>= R42;
54fe: 88,00,36            cmpw  R36,R0           
5501: df,03               je    5506             if (R36 != 0)  {
5503: bd,ff,34            ldsbw R34,ff           swR34 = ff; }
5506: a0,34,1e            ldw   R1e,R34          R1e = R34;
5509: 8c,34,38            divw  R38,R34          wR38 /= R34;
550c: d5,03               jnv   5511             if (OVF = 1)  {
550e: bd,ff,38            ldsbw R38,ff           swR38 = ff; }
5511: b0,8d,34            ldb   R34,R8d          R34 = VSBAR;
5514: 36,a6,0c            jnb   B6,Ra6,5523      if (B6_VSFMFLG_a6 = 1)  {
5517: b3,e4,7b,34         ldb   R34,[Re4+7b]     R34 = [1fb];
551b: 19,01,34            shlb  R34,1            R34 <<= 1;
551e: d3,03               jnc   5523             if (B7_R34 = 1)  {
5520: b1,ff,34            ldb   R34,ff           R34 = ff; } }
5523: a0,00,30            ldw   R30,R0           R30 = 0;
5526: af,f4,5c,32         ldzbw R32,[Rf4+5c]     wR32 = VSLIM;
552a: 8f,ee,ca,30         divw  R30,[Ree+ca]     wR30 /= LTMTBLrc;
552e: dd,08               jv    5538             if (OVF = 0)  {
5530: 08,02,30            shrw  R30,2            R30 >>= 2;
5533: 98,00,31            cmpb  R31,R0           
5536: df,03               je    553b             if (R31 = 0) goto 553b; }
5538: b1,ff,30            ldb   R30,ff           R30 = ff; }
553b: 5b,f4,5d,30,32      sb3b  R32,R30,[Rf4+5d] R32 = R30 - VSLIMH;
5540: db,02               jc    5544             if (R32 < 0)  {
5542: 11,32               clrb  R32              R32 = 0; }
5544: 98,30,34            cmpb  R34,R30          
5547: d1,05               jleu  554e             if (R34 > R30)  {
5549: 91,04,a3            orb   Ra3,4            B2_Flags_a3 = 1;
554c: 20,08               sjmp  5556             goto 5556; }

554e: 98,32,34            cmpb  R34,R32          
5551: d9,03               jgtu  5556             if (R34 <= R32)  {
5553: 71,fb,a3            an2b  Ra3,fb           B2_Flags_a3 = 0; }
5556: a3,f4,58,3a         ldw   R3a,[Rf4+58]     R3a = NLMT;
555a: 88,3a,b4            cmpw  Rb4,R3a          
555d: d1,03               jleu  5562             if (N_RPM > R3a)  {
555f: 91,04,a4            orb   Ra4,4            B2_FLIPFLOP_Q_a4 = 1; }
5562: 6b,f4,5a,3a         sb2w  R3a,[Rf4+5a]     R3a -= NLMTH;
5566: 88,3a,b4            cmpw  Rb4,R3a          
5569: db,03               jc    556e             if (N_RPM < R3a)  {
556b: 71,fb,a4            an2b  Ra4,fb           B2_FLIPFLOP_Q_a4 = 0; }
556e: 3a,a3,08            jb    B2,Ra3,5579      if (B2_Flags_a3 = 0)  {
5571: 3a,a4,05            jb    B2,Ra4,5579      if (B2_FLIPFLOP_Q_a4 = 0)  {
5574: 71,f7,4a            an2b  R4a,f7           B3_TLS_NV_FLG_4a = 0;
5577: 20,03               sjmp  557c             goto 557c; } }

5579: 91,08,4a            orb   R4a,8            B3_TLS_NV_FLG_4a = 1;
557c: a3,fc,02,32         ldw   R32,[Rfc+2]      R32 = TQMAX1;
5580: 29,f9               scall 577b             Sub_577b ();
5582: 98,00,42            cmpb  R42,R0           
5585: d7,05               jne   558c             if (R42 = 0)  {
5587: 91,20,4a            orb   R4a,20           B5_R4a = 1;
558a: 20,09               sjmp  5595             goto 5595; }

558c: 8b,e8,b0,32         cmpw  R32,[Re8+b0]     
5590: d9,03               jgtu  5595             if (R32 <= TQ_OFM)  {
5592: 71,df,4a            an2b  R4a,df           B5_R4a = 0; }
5595: a3,fc,04,32         ldw   R32,[Rfc+4]      R32 = TQMAX2;
5599: 8b,e8,b0,32         cmpw  R32,[Re8+b0]     
559d: d9,05               jgtu  55a4             if (R32 <= TQ_OFM)  {
559f: 91,01,4a            orb   R4a,1            B0_R4a = 1;
55a2: 20,0a               sjmp  55ae             goto 55ae; }

55a4: 29,d5               scall 577b             Sub_577b ();
55a6: 98,00,42            cmpb  R42,R0           
55a9: d7,03               jne   55ae             if (R42 = 0)  {
55ab: 71,fe,4a            an2b  R4a,fe           B0_R4a = 0; }
55ae: fa                  di                     interrupts OFF;
55af: 71,fb,4a            an2b  R4a,fb           B2_TLS_24_FLG_4a = 0;
55b2: 91,02,4a            orb   R4a,2            B1_TLS_34_FLG_4a = 1;
55b5: 30,a6,09            jnb   B0,Ra6,55c1      if (B0_ETV_ERROR_a6 = 1)  {
55b8: 3d,4a,06            jb    B5,R4a,55c1      if (B5_R4a = 0)  {
55bb: 30,4a,06            jnb   B0,R4a,55c4      if (B0_R4a = 0) goto 55c4;
55be: 95,04,4a            xorb  R4a,4            B2_TLS_24_FLG_4a ^= 1; } }
55c1: 95,02,4a            xorb  R4a,2            B1_TLS_34_FLG_4a ^= 1; }
55c4: 01,32               clrw  R32              R32 = 0;
55c6: 3b,4a,2b            jb    B3,R4a,55f4      if (B3_TLS_NV_FLG_4a = 0)  {
55c9: a1,02,00,32         ldw   R32,2            R32 = 2;
55cd: b3,f4,48,36         ldb   R36,[Rf4+48]     R36 = PIPOUT;
55d1: 19,01,36            shlb  R36,1            R36 <<= 1;
55d4: b3,f6,05,3a         ldb   R3a,[Rf6+5]      R3a = ENGCYL;
55d8: 9c,3a,36            divb  R36,R3a          yR36 /= R3a;
55db: 99,02,36            cmpb  R36,2            
55de: df,04               je    55e4             if (R36 != 2)  {
55e0: a1,06,00,32         ldw   R32,6            R32 = 6; }
55e4: 3a,4a,0d            jb    B2,R4a,55f4      if (B2_TLS_24_FLG_4a = 0)  {
55e7: 65,02,00,32         ad2w  R32,2            R32 += 2;
55eb: 39,4a,06            jb    B1,R4a,55f4      if (B1_TLS_34_FLG_4a = 0)  {
55ee: a1,ff,ff,32         ldw   R32,ffff         R32 = ffff;
55f2: 20,0b               sjmp  55ff             goto 55ff; } } }

55f4: 45,4e,00,f4,3a      ad3w  R3a,Rf4,4e       R3a = b490;
55f9: 64,32,3a            ad2w  R3a,R32          R3a += R32;
55fc: a2,3a,32            ldw   R32,[R3a]        R32 = [R3a];
55ff: c3,e8,4c,32         stw   R32,[Re8+4c]     TLSPAT = R32;
5603: fb                  ei                     interrupts ON;
5604: a0,38,20            ldw   R20,R38          R20 = R38;
5607: ef,27,04            call  5a31             FUEL_DFSO_COM2 ();                # (determine the value of D)
560a: a0,20,38            ldw   R38,R20          R38 = R20;
560d: 4f,e8,1e,30,14      ml3w  R14,R30,[Re8+1e] lR14 = wR30 * ISCMOD;             # D * ISCMOD
5612: 0f,43,14            norm  R14,R43          R43 = normalize(lR14);
5615: 79,05,43            sb2b  R43,5            R43 -= 5;
5618: db,05               jc    561f             if (R43 < 0)  {
561a: bd,ff,16            ldsbw R16,ff           swR16 = ff;
561d: 20,03               sjmp  5622             goto 5622; }

561f: 08,43,16            shrw  R16,R43          R16 >>= R43;                      # FUEL_A = D * ISCMOD
5622: 36,a5,10            jnb   B6,Ra5,5635      if (UNDSP = 1)  {
5625: ef,3d,f2            call  4865             SUYFuncLU_4865 (
5628: 36,e3                     #arg 1              FN387,
562a: b6,00                     #arg 2              ECT );
562c: 6c,16,38            ml2w  R38,R16          lR38 *= R16;
562f: 0c,06,38            shrdw R38,6            lR38 >>= 6;
5632: a0,38,16            ldw   R16,R38          R16 = R38; }                      # FUEL_A = D * ISCMOD * fn387(ECT)
5635: c3,e6,6c,16         stw   R16,[Re6+6c]     FUEL_A = R16;
5639: 4c,16,20,38         ml3w  R38,R20,R16      lR38 = wR20 * R16;
563d: 0c,06,38            shrdw R38,6            lR38 >>= 6;
5640: 88,00,3a            cmpw  R3a,R0           
5643: df,03               je    5648             if (R3a != 0)  {
5645: bd,ff,38            ldsbw R38,ff           swR38 = ff; }
5648: 3d,2a,19            jb    B5,R2a,5664      if (?RUNNING? = 0)  {
564b: 91,80,9f            orb   R9f,80           B7_Flags_9f = 1;
564e: 39,27,13            jb    B1,R27,5664      if (B1_DFSFLG_R27 = 0)  {
5651: 8b,f4,46,38         cmpw  R38,[Rf4+46]     
5655: d9,0a               jgtu  5661             if (R38 <= MINPW)  {
5657: a3,f4,46,38         ldw   R38,[Rf4+46]     R38 = MINPW;
565b: a1,00,80,96         ldw   R96,8000         LAMBSE1 = 8000;
565f: 20,03               sjmp  5664             goto 5664; }

5661: 71,7f,9f            an2b  R9f,7f           B7_Flags_9f = 0; } }
5664: 11,30               clrb  R30              R30 = 0;
5666: b3,f4,48,31         ldb   R31,[Rf4+48]     R31 = PIPOUT;
566a: 01,32               clrw  R32              R32 = 0;
566c: b3,f4,4b,34         ldb   R34,[Rf4+4b]     R34 = INJOUT;
5670: 7f,f4,4c,34         ml2b  R34,[Rf4+4c]     wR34 *= NUMOUT;
5674: 8c,34,30            divw  R30,R34          wR30 /= R34;
5677: 01,20               clrw  R20              R20 = 0;
5679: a0,30,22            ldw   R22,R30          R22 = R30;
567c: 8c,1e,20            divw  R20,R1e          wR20 /= R1e;
567f: d5,03               jnv   5684             if (OVF = 1)  {
5681: bd,ff,20            ldsbw R20,ff           swR20 = ff; }
5684: c3,e6,66,20         stw   R20,[Re6+66]     PWCF = R20;
5688: 6c,30,38            ml2w  R38,R30          lR38 *= R30;
568b: 0c,08,38            shrdw R38,8            lR38 >>= 8;
568e: 88,3a,00            cmpw  R0,R3a           
5691: df,03               je    5696             if (R3a != 0)  {
5693: bd,ff,38            ldsbw R38,ff           swR38 = ff; }
5696: 6d,73,cb,38         ml2w  R38,cb73         lR38 *= cb73;
569a: c3,e4,f0,3a         stw   R3a,[Re4+f0]     BGFUEL = R3a;
569e: 9b,f4,5e,00         cmpb  R0,[Rf4+5e]      
56a2: d7,0b               jne   56af             if (BFULSW = 0)  {
56a4: 3b,a6,08            jb    B3,Ra6,56af      if (B3_MFMFLG_a6 = 0)  {
56a7: 3e,29,05            jb    B6,R29,56af      if (B6_REFFLG_29 = 0)  {
56aa: 91,10,a3            orb   Ra3,10           B4_FFULFG_a3 = 1;
56ad: 20,03               sjmp  56b2             goto 56b2; } } }

56af: 71,ef,a3            an2b  Ra3,ef           B4_FFULFG_a3 = 0;
56b2: a3,e6,68,3c         ldw   R3c,[Re6+68]     R3c = BASEFF;
56b6: 67,e6,6a,3c         ad2w  R3c,[Re6+6a]     R3c += BASE_EM;                   # (BASEFF + BASE_EM)
56ba: 6f,e6,66,3c         ml2w  R3c,[Re6+66]     lR3c *= PWCF;
56be: 8f,e6,64,3c         divw  R3c,[Re6+64]     wR3c /= MAPWBG;
56c2: d5,03               jnv   56c7             if (OVF = 1)  {
56c4: bd,ff,3c            ldsbw R3c,ff           swR3c = ff; }
56c7: 6f,e6,6c,3c         ml2w  R3c,[Re6+6c]     lR3c *= FUEL_A;
56cb: 0c,06,3c            shrdw R3c,6            lR3c >>= 6;
56ce: 88,00,3e            cmpw  R3e,R0           
56d1: df,03               je    56d6             if (R3e != 0)  {
56d3: bd,ff,3c            ldsbw R3c,ff           swR3c = ff; }
56d6: c3,e8,0a,3c         stw   R3c,[Re8+a]      FFULM = R3c;
56da: 11,3c               clrb  R3c              R3c = 0;
56dc: b3,e6,6c,3d         ldb   R3d,[Re6+6c]     R3d = FUEL_A;
56e0: 6f,e6,66,3c         ml2w  R3c,[Re6+66]     lR3c *= PWCF;
56e4: a3,e4,f4,38         ldw   R38,[Re4+f4]     R38 = [174];
56e8: 37,99,0a            jnb   B7,R99,56f5      if (B7_R99 = 1)  {
56eb: 03,38               negw  R38              R38 = -R38;
56ed: 67,e6,6a,38         ad2w  R38,[Re6+6a]     R38 += BASE_EM;
56f1: 03,38               negw  R38              R38 = -R38;
56f3: 20,04               sjmp  56f9             goto 56f9; }

56f5: 6b,e6,6a,38         sb2w  R38,[Re6+6a]     R38 -= BASE_EM;
56f9: a0,3e,3c            ldw   R3c,R3e          R3c = R3e;
56fc: fe,6c,38,3c         sml2w R3c,R38          slR3c *= R38;
5700: 0e,06,3c            asrdw R3c,6            slR3c >>= 6;
5703: c3,e8,08,3c         stw   R3c,[Re8+8]      FFULC = R3c;
5707: 37,27,2c            jnb   B7,R27,5736      if (B7_SYNFLG = 1)  {
570a: 37,51,29            jnb   B7,R51,5736      if (B7_FUEL_SYNC_51 = 1)  {
570d: 35,51,2f            jnb   B5,R51,573f      if (B5_NEW_DELAY_51 = 0) goto 573f;
5710: af,f4,48,16         ldzbw R16,[Rf4+48]     wR16 = PIPOUT;
5714: 09,05,16            shlw  R16,5            R16 <<= 5;
5717: af,f5,89,00,14      ldzbw R14,[Rf4+89]     wR14 = CIBETA;
571c: 88,16,14            cmpw  R14,R16          
571f: d9,15               jgtu  5736             if (R14 <= R16)  {
5721: b3,e4,14,15         ldb   R15,[Re4+14]     R15 = TOTAL_DELAY;
5725: 58,15,14,16         sb3b  R16,R14,R15      R16 = R14 - R15;
5729: d3,0b               jnc   5736             if (R16 >= 0)  {
572b: 99,10,16            cmpb  R16,10           
572e: d1,08               jleu  5738             if (R16 <= 10) goto 5738;
5730: 55,10,15,14         ad3b  R14,R15,10       R14 = R15 + 10;
5734: 20,02               sjmp  5738             goto 5738; } } } }

5736: 11,14               clrb  R14              R14 = 0; }
5738: c7,e4,14,14         stb   R14,[Re4+14]     TOTAL_DELAY = R14;
573c: 71,df,51            an2b  R51,df           B5_NEW_DELAY_51 = 0; }
573f: b3,f4,4c,34         ldb   R34,[Rf4+4c]     R34 = NUMOUT;
5743: b3,f4,48,30         ldb   R30,[Rf4+48]     R30 = PIPOUT;
5747: b3,f5,88,00,32      ldb   R32,[Rf4+88]     R32 = OUTINJ;
574c: 5c,32,30,36         ml3b  R36,R30,R32      wR36 = yR30 * R32;
5750: fa                  di                     interrupts OFF;
5751: 71,7f,a3            an2b  Ra3,7f           B7_OUTINJ_a3 = 0;
5754: 71,bf,a3            an2b  Ra3,bf           B6_NUMOUT_a3 = 0;
5757: 71,df,a3            an2b  Ra3,df           B5_PIPOUT_a3 = 0;
575a: 99,02,30            cmpb  R30,2            
575d: d7,03               jne   5762             if (R30 = 2)  {
575f: 91,20,a3            orb   Ra3,20           B5_PIPOUT_a3 = 1; }
5762: 99,02,32            cmpb  R32,2            
5765: d7,03               jne   576a             if (R32 = 2)  {
5767: 91,80,a3            orb   Ra3,80           B7_OUTINJ_a3 = 1; }
576a: 99,02,34            cmpb  R34,2            
576d: d7,03               jne   5772             if (R34 = 2)  {
576f: 91,40,a3            orb   Ra3,40           B6_NUMOUT_a3 = 1; }
5772: fb                  ei                     interrupts ON;
5773: 9c,34,36            divb  R36,R34          yR36 /= R34;
5776: c7,e6,72,36         stb   R36,[Re6+72]     FUEL_PIPS = R36;
577a: f0                  ret                    return;

   Sub_577b:
577b: 11,42               clrb  R42              R42 = 0;
577d: 4b,fc,06,32,30      sb3w  R30,R32,[Rfc+6]  R30 = R32 - TQMAXH;
5782: db,02               jc    5786             if (R30 < 0)  {
5784: 17,42               incb  R42              R42++; }
5786: 8b,e8,b0,30         cmpw  R30,[Re8+b0]     
578a: d9,02               jgtu  578e             if (R30 <= TQ_OFM)  {
578c: 17,42               incb  R42              R42++; }
578e: f0                  ret                    return;

   FUEL_IDLE_MOD_COM3:
578f: a1,00,04,3c         ldw   R3c,400          R3c = 400;
5793: 35,2f,02            jnb   B5,R2f,5798      if (B5_DISABLE_ISC_2f = 1)  {     # (freeze ISCDTY for VIP) 
5796: 20,88               sjmp  5820             goto 5820; }

5798: 34,2f,11            jnb   B4,R2f,57ac      if (B4_VRUN_ISCFLG_2f = 1)  {     # (throttle adjust mode) 
579b: a3,ff,52,01,14      ldw   R14,[Rfe+152]    R14 = V_KDNDT;
57a0: a3,ff,4e,01,16      ldw   R16,[Rfe+14e]    R16 = V_ISCMOD_MAX;
57a5: a3,ff,50,01,18      ldw   R18,[Rfe+150]    R18 = V_ISCMOD_MIN;
57aa: 20,3c               sjmp  57e8             goto 57e8; }

57ac: 34,26,10            jnb   B4,R26,57bf      if (RUNUP_FLG = 1)  {             # (initial runup complete)
57af: a3,f0,30,32         ldw   R32,[Rf0+30]     R32 = DELRAT;
57b3: 47,f0,0c,32,38      ad3w  R38,R32,[Rf0+c]  R38 = R32 + DLHYST;
57b8: db,0a               jc    57c4             if (R38 > ffff) goto 57c4;
57ba: 88,bc,38            cmpw  R38,Rbc          
57bd: db,05               jc    57c4             if (R38 >= TP_REL) goto 57c4; }
57bf: 71,bf,29            an2b  R29,bf           B6_REFFLG_29 = 0;
57c2: 20,5f               sjmp  5823             goto 5823; } }

57c4: 88,bc,32            cmpw  R32,Rbc          
57c7: d3,10               jnc   57d9             if (R32 >= TP_REL)  {
57c9: b3,e4,e3,38         ldb   R38,[Re4+e3]     R38 = DSDRPM;
57cd: 77,f0,18,38         ad2b  R38,[Rf0+18]     R38 += ISCMOD_RPM;
57d1: db,09               jc    57dc             if (R38 > ff) goto 57dc;
57d3: 9b,e4,6a,38         cmpb  R38,[Re4+6a]     
57d7: db,03               jc    57dc             if (R38 >= N_BYTE) goto 57dc; }
57d9: 36,29,47            jnb   B6,R29,5823      if (B6_REFFLG_29 = 0) goto 5823; } }
57dc: a3,f0,12,14         ldw   R14,[Rf0+12]     R14 = KDNDT;
57e0: a3,f0,0e,16         ldw   R16,[Rf0+e]      R16 = ISCMOD_MAX;
57e4: a3,f0,10,18         ldw   R18,[Rf0+10]     R18 = ISCMOD_MIN;
57e8: a3,e8,18,38         ldw   R38,[Re8+18]     R38 = DNDT_ISC;
57ec: fe,6c,14,38         sml2w R38,R14          slR38 *= R14;
57f0: 89,3f,00,3a         cmpw  R3a,3f           
57f4: d2,0b               jgt   5801             if (R3a <= 3f)  {
57f6: 89,c0,ff,3a         cmpw  R3a,ffc0         
57fa: de,0b               jlt   5807             if (R3a < ffc0) goto 5807;
57fc: 0e,07,38            asrdw R38,7            slR38 >>= 7;
57ff: 20,0a               sjmp  580b             goto 580b; }

5801: a1,ff,7f,38         ldw   R38,7fff         R38 = 7fff;
5805: 20,04               sjmp  580b             goto 580b; }

5807: a1,00,80,38         ldw   R38,8000         R38 = 8000;
580b: 68,38,3c            sb2w  R3c,R38          R3c -= R38;
580e: de,0d               jlt   581d             if (R3c >= 0)  {
5810: 88,16,3c            cmpw  R3c,R16          
5813: d1,03               jleu  5818             if (R3c > R16)  {
5815: a0,16,3c            ldw   R3c,R16          R3c = R16; }
5818: 88,18,3c            cmpw  R3c,R18          
581b: db,03               jc    5820             if (R3c >= R18) goto 5820; }
581d: a0,18,3c            ldw   R3c,R18          R3c = R18; }
5820: 91,40,29            orb   R29,40           B6_REFFLG_29 = 1; }
5823: c3,e8,1e,3c         stw   R3c,[Re8+1e]     ISCMOD = R3c;
5827: 69,00,04,3c         sb2w  R3c,400          R3c -= 400;
582b: c3,e8,20,3c         stw   R3c,[Re8+20]     ISCMOD-1 = R3c;
582f: f0                  ret                    return;

   FUEL_KAM_ADAPT_COM3:
5830: ad,80,3a            ldzbw R3a,80           wR3a = 80;
5833: 3f,a5,21            jb    B7,Ra5,5857      if (b7_CRKFLG_a5 = 0)  {
5836: 36,29,20            jnb   B6,R29,5859      if (B6_REFFLG_29 = 0) goto 5859;
5839: 37,26,06            jnb   B7,R26,5842      if (B7_HCAMFG_26 = 1)  {
583c: 9b,fe,4b,00         cmpb  R0,[Rfe+4b]      
5840: d7,17               jne   5859             if (HCAMSW != 0) goto 5859; }
5842: a1,64,00,30         ldw   R30,64           R30 = 64;
5846: af,e4,e5,32         ldzbw R32,[Re4+e5]     wR32 = ISFLAG;                    # c = ISFLAG
584a: 64,32,30            ad2w  R30,R32          R30 += R32;
584d: a0,30,40            ldw   R40,R30          R40 = R30;
5850: 28,83               scall 58d5             Sub_58d5 ();
5852: af,33,4e,07,3a      ldzbw R3a,[R32+74e]    wR3a = [R32+74e]; }               # KAMREF = 0.5 + LTMTBLrc
5857: 20,64               sjmp  58bd             goto 58bd; } }                    # (use no interpolation)

5859: af,e4,6b,38         ldzbw R38,[Re4+6b]     wR38 = MAPOPE;
585d: ef,86,f0            call  48e6             UUWFuncLU_48e6 (
5860: 4c,e2                     #arg 1              FN031,
5862: 38,00                     #arg 2              38 );
5864: a0,38,14            ldw   R14,R38          R14 = R38;
5867: ef,7c,f0            call  48e6             UUWFuncLU_48e6 (
586a: 6c,e2                     #arg 1              FN070?L?,
586c: b4,00                     #arg 2              N_RPM );
586e: a0,38,16            ldw   R16,R38          R16 = R38;
5871: b0,15,30            ldb   R30,R15          R30 = R15;
5874: 7d,0a,30            ml2b  R30,a            wR30 *= a;
5877: 74,17,30            ad2b  R30,R17          R30 += R17;
587a: a0,30,40            ldw   R40,R30          R40 = R30;
587d: 28,56               scall 58d5             Sub_58d5 ();
587f: b3,33,4e,07,3c      ldb   R3c,[R32+74e]    R3c = [R32+74e];
5884: 07,30               incw  R30              R30++;
5886: 28,4d               scall 58d5             Sub_58d5 ();
5888: b3,33,4e,07,3d      ldb   R3d,[R32+74e]    R3d = [R32+74e];
588d: 99,09,15            cmpb  R15,9            
5890: d3,05               jnc   5897             if (R15 >= 9)  {
5892: a0,3c,3e            ldw   R3e,R3c          R3e = R3c;
5895: 20,13               sjmp  58aa             goto 58aa; }

5897: 75,09,30            ad2b  R30,9            R30 += 9;
589a: 28,39               scall 58d5             Sub_58d5 ();
589c: b3,33,4e,07,3e      ldb   R3e,[R32+74e]    R3e = [R32+74e];
58a1: 07,30               incw  R30              R30++;
58a3: 28,30               scall 58d5             Sub_58d5 ();
58a5: b3,33,4e,07,3f      ldb   R3f,[R32+74e]    R3f = [R32+74e];
58aa: ac,16,30            ldzbw R30,R16          wR30 = yR16;
58ad: ac,14,32            ldzbw R32,R14          wR32 = yR14;
58b0: ad,02,34            ldzbw R34,2            wR34 = 2;
58b3: a1,3c,00,38         ldw   R38,3c           R38 = 3c;                         # 60.000
58b7: ef,ff,f0            call  49b9             Four_Point_Interpolation ();
58ba: ac,3b,3a            ldzbw R3a,R3b          wR3a = yR3b;
58bd: 65,80,00,3a         ad2w  R3a,80           R3a += 80;
58c1: c3,e4,f6,3a         stw   R3a,[Re4+f6]     KAMRF1 = R3a;
58c5: 45,94,02,fe,34      ad3w  R34,Rfe,294      R34 = FN1325L;
58ca: 64,40,34            ad2w  R34,R40          R34 += R40;
58cd: b2,34,34            ldb   R34,[R34]        R34 = [R34];
58d0: c7,ea,c4,34         stb   R34,[Rea+c4]     KAMREF = R34;
58d4: f0                  ret                    return;

   Sub_58d5:
58d5: a0,30,32            ldw   R32,R30          R32 = R30;
58d8: 45,94,02,fe,34      ad3w  R34,Rfe,294      R34 = FN1325L;
58dd: 64,30,34            ad2w  R34,R30          R34 += R30;
58e0: be,34,34            ldsbw R34,[R34]        swR34 = [R34];
58e3: 37,35,05            jnb   B7,R35,58eb      if (B7_R35 = 1)  {
58e6: 03,34               negw  R34              R34 = -R34;
58e8: a0,34,32            ldw   R32,R34          R32 = R34; }
58eb: f0                  ret                    return;

   FUEL_TRANS_COM5:
58ec: b3,f4,75,18         ldb   R18,[Rf4+75]     R18 = MEFTRD;
58f0: 3e,a5,06            jb    B6,Ra5,58f9      if (UNDSP = 0)  {
58f3: 9b,f4,71,d4         cmpb  Rd4,[Rf4+71]     
58f7: db,06               jc    58ff             if (ATMR1 >= TFCTM) goto 58ff; }
58f9: 71,f7,28            an2b  R28,f7           B3_EFFLG1_28 = 0;
58fc: 01,98               clrw  R98              EFTR = 0;
58fe: f0                  ret                    return; }                         # (do not run transient fuel compensation)

58ff: b3,fe,10,36         ldb   R36,[Rfe+10]     R36 = ALPHA;
5903: ef,cd,f6            call  4fd3             ACT_to_ECT_proportioning_factor(R36) ();
5906: ef,d2,ef            call  48db             SUWFuncLU_48db (
5909: be,02                     #arg 1              FN022A,
590b: 38,00                     #arg 2              38 );
590d: a0,38,1a            ldw   R1a,R38          R1a = R38;
5910: a0,1a,30            ldw   R30,R1a          R30 = R1a;
5913: a3,e6,54,32         ldw   R32,[Re6+54]     R32 = FN031_MAPOPE_y;
5917: ad,0a,34            ldzbw R34,a            wR34 = a;
591a: 45,36,03,f4,38      ad3w  R38,Rf4,336      R38 = FN1322;
591f: ef,97,f0            call  49b9             Four_Point_Interpolation ();
5922: ef,4b,ef            call  4870             UUYFuncLU_4870 (
5925: d8,42                     #arg 1              FN307,
5927: ea,01                     #arg 2              N_BYTE );
5929: 5c,38,3b,40         ml3b  R40,R3b,R38      wR40 = yR3b * R38;                # (EFTC * FN307(N_BYTE))
592d: a0,1a,30            ldw   R30,R1a          R30 = R1a;
5930: a3,e6,54,32         ldw   R32,[Re6+54]     R32 = FN031_MAPOPE_y;
5934: ad,0a,34            ldzbw R34,a            wR34 = a;
5937: 45,e6,02,f4,38      ad3w  R38,Rf4,2e6      R38 = FN1321;
593c: ef,7a,f0            call  49b9             Four_Point_Interpolation ();
593f: 5f,f4,72,3b,3a      ml3b  R3a,R3b,[Rf4+72] wR3a = yR3b * MTEISF;
5944: 08,01,3a            shrw  R3a,1            R3a >>= 1;
5947: 33,28,16            jnb   B3,R28,5960      if (B3_EFFLG1_28 = 1)  {
594a: 31,27,28            jnb   B1,R27,5975      if (B1_DFSFLG_R27 = 0) goto 5975;
594d: 01,98               clrw  R98              EFTR = 0;
594f: af,f4,7d,38         ldzbw R38,[Rf4+7d]     wR38 = AISFM;
5953: 6c,3a,38            ml2w  R38,R3a          lR38 *= R3a;
5956: 0d,09,38            shldw R38,9            lR38 <<= 9;
5959: d3,0e               jnc   5969             if (B7_R3a = 0) goto 5969;
595b: bd,ff,3a            ldsbw R3a,ff           swR3a = ff;
595e: 20,09               sjmp  5969             goto 5969; }

5960: b3,f4,74,14         ldb   R14,[Rf4+74]     R14 = TFCISW;
5964: 38,14,02            jb    B0,R14,5969      if (B0_R14 = 0)  {
5967: 01,3a               clrw  R3a              R3a = 0; } }
5969: c3,e6,a6,00         stw   R0,[Re6+a6]      [226] = 0;
596d: c3,e6,a8,3a         stw   R3a,[Re6+a8]     [228] = R3a;
5971: 91,08,28            orb   R28,8            B3_EFFLG1_28 = 1;
5974: f0                  ret                    return; }

5975: 4b,e6,aa,06,34      sb3w  R34,R6,[Re6+aa]  R34 = IO_Timer - [22a];
597a: c3,e6,aa,06         stw   R6,[Re6+aa]      [22a] = IO_Timer;
597e: 6d,44,28,34         ml2w  R34,2844         lR34 *= 2844;
5982: a0,36,34            ldw   R34,R36          R34 = R36;
5985: fe,6c,98,34         sml2w R34,R98          slR34 *= EFTR;
5989: 37,37,23            jnb   B7,R37,59af      if (B7_R37 = 1)  {
598c: a0,36,32            ldw   R32,R36          R32 = R36;
598f: a0,34,30            ldw   R30,R34          R30 = R34;
5992: 02,32               cplw  R32              R32 = ~R32;
5994: 03,30               negw  R30              R30 = -R30;
5996: a4,00,32            adcw  R32,R0           R32 += CY;
5999: 8b,01,28,02,32      cmpw  R32,[R0+228]     
599e: d1,06               jleu  59a6             if (R32 > [228])  {
59a0: 01,34               clrw  R34              R34 = 0;
59a2: 01,36               clrw  R36              R36 = 0;
59a4: 20,13               sjmp  59b9             goto 59b9; }

59a6: d7,07               jne   59af             if (R32 = [228])  {
59a8: 8b,01,26,02,30      cmpw  R30,[R0+226]     
59ad: d9,f1               jgtu  59a0             if (R30 > [226]) goto 59a0; } }
59af: 67,01,26,02,34      ad2w  R34,[R0+226]     R34 += [226];
59b4: a7,01,28,02,36      adcw  R36,[R0+228]     R36 += [228] + CY;
59b9: c3,01,26,02,34      stw   R34,[R0+226]     [226] = R34;
59be: c3,01,28,02,36      stw   R36,[R0+228]     [228] = R36;

TRANSIENT FUEL FLOW MULTIPLIER
59c3: b1,01,30            ldb   R30,1            R30 = 1;
59c6: 36,29,06            jnb   B6,R29,59cf      if (B6_REFFLG_29 = 1)  {
59c9: 9b,f4,77,30         cmpb  R30,[Rf4+77]     
59cd: df,2e               je    59fd             if (R30 = [b4b9]) goto 59fd; }
59cf: 9b,e4,e2,00         cmpb  R0,[Re4+e2]      
59d3: d6,06               jge   59db             if (ISCFLG > 0)  {
59d5: 9b,f4,7c,30         cmpb  R30,[Rf4+7c]     
59d9: df,22               je    59fd             if (R30 = [b4be]) goto 59fd; }
59db: 48,36,3a,1c         sb3w  R1c,R3a,R36      R1c = R3a - R36;
59df: db,06               jc    59e7             if (R1c < 0)  {
59e1: 03,1c               negw  R1c              R1c = -R1c;
59e3: b3,f4,76,18         ldb   R18,[Rf4+76]     R18 = MEFTRA; }
59e7: 8b,f4,78,1c         cmpw  R1c,[Rf4+78]     
59eb: d1,10               jleu  59fd             if (R1c > TFCBITS)  {
59ed: 01,1e               clrw  R1e              R1e = 0;
59ef: 0d,08,1c            shldw R1c,8            lR1c <<= 8;
59f2: 8c,3a,1c            divw  R1c,R3a          wR1c /= R3a;
59f5: dd,08               jv    59ff             if (OVF = 1) goto 59ff;
59f7: 8b,f4,7a,1c         cmpw  R1c,[Rf4+7a]     
59fb: d9,02               jgtu  59ff             if (R1c > TFCDED) goto 59ff; } } }
59fd: 01,18               clrw  R18              R18 = 0; } }
59ff: 11,42               clrb  R42              R42 = 0;
5a01: 6b,e6,a8,3a         sb2w  R3a,[Re6+a8]     R3a -= [228];
5a05: db,04               jc    5a0b             if (R3a < 0)  {
5a07: 17,42               incb  R42              R42++;
5a09: 03,3a               negw  R3a              R3a = -R3a; }

EQUILIBRIUM FUEL TRANSFER CALCULATIONS
# These calculations are performed during each program pass  (background  loop)
#   while  Transient  Fuel Compensation is enabled.  The general form of the rate
#   calculation is:
5a0b: af,f4,70,38         ldzbw R38,[Rf4+70]     wR38 = KFT;                       # A = KFT
5a0f: 36,25,04            jnb   B6,R25,5a16      if (B6_MPGFLG_25 = 1)  {          # (in MPG mode)
5a12: af,f4,73,38         ldzbw R38,[Rf4+73]     wR38 = KFTMPG; }                  # A = KFTMPG
5a16: 6c,3a,38            ml2w  R38,R3a          lR38 *= R3a;                      # A * [(EISF * MTEISF - AISF) 
5a19: 0d,01,38            shldw R38,1            lR38 <<= 1;
5a1c: 8c,40,38            divw  R38,R40          wR38 /= R40;                      # EFTR = A * [(EISF * MTEISF - AISF) / (EFTC * FN307(N_BYTE))]
5a1f: dd,03               jv    5a24             if (OVF = 0)  {
5a21: 37,39,04            jnb   B7,R39,5a28      if (B7_R39 = 0) goto 5a28; }
5a24: a1,ff,7f,38         ldw   R38,7fff         R38 = 7fff; }
5a28: a0,38,98            ldw   R98,R38          EFTR = R38;
5a2b: 30,42,02            jnb   B0,R42,5a30      if (B0_R42 = 1)  {
5a2e: 03,98               negw  R98              EFTR = -EFTR; }
5a30: f0                  ret                    return;

   FUEL_DFSO_COM2:
5a31: 11,30               clrb  R30              R30 = 0;
5a33: 4b,ea,b4,b2,14      sb3w  R14,Rb2,[Rea+b4] R14 = TP - OLD_TP_DFSO;
5a38: db,04               jc    5a3e             if (R14 < 0)  {
5a3a: 17,30               incb  R30              R30++;
5a3c: 03,14               negw  R14              R14 = -R14; }
5a3e: 01,16               clrw  R16              R16 = 0;
5a40: 0d,01,14            shldw R14,1            lR14 <<= 1;
5a43: 8f,e4,ba,14         divw  R14,[Re4+ba]     wR14 /= BG_TMR;
5a47: dd,03               jv    5a4c             if (OVF = 0)  {
5a49: 37,15,04            jnb   B7,R15,5a50      if (B7_R15 = 0) goto 5a50; }
5a4c: a1,ff,7f,14         ldw   R14,7fff         R14 = 7fff; }
5a50: 30,30,02            jnb   B0,R30,5a55      if (B0_R30 = 1)  {
5a53: 03,14               negw  R14              R14 = -R14; }
5a55: c3,ea,b2,14         stw   R14,[Rea+b2]     D_TP_DT = R14;
5a59: c3,ea,b4,b2         stw   Rb2,[Rea+b4]     OLD_TP_DFSO = TP;
5a5d: 9b,f5,81,00,b6      cmpb  Rb6,[Rf4+81]     
5a62: da,38               jle   5a9c             if (ECT > DFSO_ECT)  {            # (ECT high enough)       
5a64: 3a,a6,35            jb    B2,Ra6,5a9c      if (B2_TFMFLG_a6 = 0)  {          # (TP sensor OK)   
5a67: 8b,ea,b0,00         cmpw  R0,[Rea+b0]      
5a6b: d7,12               jne   5a7f             if (DFSO_F_TMR = 0)  {            # (initialize once)
5a6d: 8b,f5,92,00,14      cmpw  R14,[Rf4+92]     
5a72: d6,0b               jge   5a7f             if (R14 < D_TP_DT_F)  {           # (tipping out)
5a74: ef,6f,ee            call  48e6             UUWFuncLU_48e6 (
5a77: 1e,44                     #arg 1              FN222F,
5a79: b4,00                     #arg 2              N_RPM );
5a7b: c3,ea,b0,38         stw   R38,[Rea+b0]     DFSO_F_TMR = R38; } }             # DFSO_F_TMR = FN222F(N)
5a7f: 8b,ea,ae,00         cmpw  R0,[Rea+ae]      
5a83: d7,17               jne   5a9c             if (DFSO_A_TMR = 0)  {            # (initialize once) 
5a85: ef,5b,ee            call  48e3             USWFuncLU_48e3 (
5a88: f8,41                     #arg 1              FND_TP_DT_A,
5a8a: b4,00                     #arg 2              N_RPM );
5a8c: 88,38,14            cmpw  R14,R38          
5a8f: d6,0b               jge   5a9c             if (R14 < R38)  {                 # D_TP_DT < FND_TP_DT_A(N) (tipping out)
5a91: ef,52,ee            call  48e6             UUWFuncLU_48e6 (
5a94: 06,44                     #arg 1              FN222A,
5a96: b4,00                     #arg 2              N_RPM );
5a98: c3,ea,ae,38         stw   R38,[Rea+ae]     DFSO_A_TMR = R38; } } } }
5a9c: b3,f5,8b,00,30      ldb   R30,[Rf4+8b]     R30 = DFSVS;
5aa1: 5b,f5,8e,00,30,32   sb3b  R32,R30,[Rf4+8e] R32 = R30 - DFSVSH;
5aa7: db,02               jc    5aab             if (R32 < 0)  {
5aa9: 11,32               clrb  R32              R32 = 0; }
5aab: 98,30,8d            cmpb  R8d,R30          
5aae: d3,05               jnc   5ab5             if (VSBAR >= R30)  {              # VSBAR >= DFSVS
5ab0: 91,10,27            orb   R27,10           B4_DFSVS_HYS_FG_Q_R27 = 1;        # | SET
5ab3: 20,08               sjmp  5abd             goto 5abd; }

5ab5: 98,32,8d            cmpb  R8d,R32          
5ab8: db,03               jc    5abd             if (VSBAR < R32)  {               # VSBAR < DFSVS - DFSVSH
5aba: 71,ef,27            an2b  R27,ef           B4_DFSVS_HYS_FG_Q_R27 = 0; }      # | CLEAR
5abd: b3,f5,83,00,1a      ldb   R1a,[Rf4+83]     R1a = DFSRPM;
5ac2: b3,e4,6a,30         ldb   R30,[Re4+6a]     R30 = N_BYTE;
5ac6: 7b,e4,e3,30         sb2b  R30,[Re4+e3]     R30 -= DSDRPM;
5aca: d3,32               jnc   5afe             if (R30 >= 0)  {
5acc: 98,1a,30            cmpb  R30,R1a          
5acf: d3,0f               jnc   5ae0             if (R30 >= R1a)  {                # (rpm high enough)   
5ad1: 3b,a6,07            jb    B3,Ra6,5adb      if (B3_MFMFLG_a6 = 0)  {
5ad4: 9b,f5,85,00,ba      cmpb  Rba,[Rf4+85]     
5ad9: d9,05               jgtu  5ae0             if (MAP > DFSMAP) goto 5ae0; }
5adb: 91,04,27            orb   R27,4            B2_FPWQ2_Q_R27 = 1;
5ade: 20,21               sjmp  5b01             goto 5b01; } }

5ae0: 7b,f5,84,00,1a      sb2b  R1a,[Rf4+84]     R1a -= DFSRPH;
5ae5: 98,1a,30            cmpb  R30,R1a          
5ae8: d3,14               jnc   5afe             if (R30 >= R1a)  {
5aea: b3,f5,85,00,1a      ldb   R1a,[Rf4+85]     R1a = DFSMAP;
5aef: 77,f5,86,00,1a      ad2b  R1a,[Rf4+86]     R1a += DFSMPH;
5af4: db,0b               jc    5b01             if (R1a > ff) goto 5b01;
5af6: 98,1a,ba            cmpb  Rba,R1a          
5af9: d1,06               jleu  5b01             if (MAP <= R1a) goto 5b01;
5afb: 3b,a6,03            jb    B3,Ra6,5b01      if (B3_MFMFLG_a6 = 1) goto 5b01; } }
5afe: 71,fb,27            an2b  R27,fb           B2_FPWQ2_Q_R27 = 0; } } }
5b01: 8b,f5,8c,00,d2      cmpw  Rd2,[Rf4+8c]     
5b06: d1,05               jleu  5b0d             if (NACTMR > DFSTM)  {            # (long tip-in)
5b08: 91,40,28            orb   R28,40           B6_FPWQ3_Q_28 = 1;
5b0b: 20,08               sjmp  5b15             goto 5b15; }

5b0d: 88,d2,00            cmpw  R0,Rd2           
5b10: db,03               jc    5b15             if (NACTMR > 0)  {
5b12: 71,bf,28            an2b  R28,bf           B6_FPWQ3_Q_28 = 0; }
5b15: b3,e6,9f,34         ldb   R34,[Re6+9f]     R34 = NOVS;
5b19: b3,f4,7e,30         ldb   R30,[Rf4+7e]     R30 = DFNOVS;
5b1d: 98,30,34            cmpb  R34,R30          
5b20: d9,05               jgtu  5b27             if (R34 <= R30)  {                # (in higher gear) 
5b22: 91,04,29            orb   R29,4            B2_FLG_DFSO_NOVS_Q_29 = 1;
5b25: 20,0e               sjmp  5b35             goto 5b35; }

5b27: 77,f4,7f,30         ad2b  R30,[Rf4+7f]     R30 += DFNOVH;
5b2b: db,08               jc    5b35             if (R30 <= ff)  {
5b2d: 98,30,34            cmpb  R34,R30          
5b30: d1,03               jleu  5b35             if (R34 > R30)  {                 # NOVS > DFNOVS + DFNOVH 
5b32: 71,fb,29            an2b  R29,fb           B2_FLG_DFSO_NOVS_Q_29 = 0; } }    # | CLEAR
5b35: 3d,2a,51            jb    B5,R2a,5b89      if (?RUNNING? = 0)  {
5b38: b3,fe,2d,30         ldb   R30,[Rfe+2d]     R30 = TRLOAD;
5b3c: 99,02,30            cmpb  R30,2            
5b3f: d3,03               jnc   5b44             if (R30 >= 2)  {
5b41: 36,9f,45            jnb   B6,R9f,5b89      if (B6_NDSFLG_9f = 0) goto 5b89; }
5b44: 9b,f5,80,00,b6      cmpb  Rb6,[Rf4+80]     
5b49: da,3e               jle   5b89             if (ECT > DFSECT)  {              # (engine warm enough) 
5b4b: b3,f5,82,00,30      ldb   R30,[Rf4+82]     R30 = DFSO_OUT;
5b50: 3a,a6,06            jb    B2,Ra6,5b59      if (B2_TFMFLG_a6 = 0)  {
5b53: 30,30,09            jnb   B0,R30,5b5f      if (B0_R30 = 0) goto 5b5f;
5b56: 33,a6,06            jnb   B3,Ra6,5b5f      if (B3_MFMFLG_a6 = 0) goto 5b5f; }
5b59: 3b,a6,2d            jb    B3,Ra6,5b89      if (B3_MFMFLG_a6 = 1) goto 5b89;
5b5c: 38,30,2a            jb    B0,R30,5b89      if (B0_R30 = 1) goto 5b89; } }
5b5f: 32,27,27            jnb   B2,R27,5b89      if (B2_FPWQ2_Q_R27 = 1)  {
5b62: 3a,a6,18            jb    B2,Ra6,5b7d      if (B2_TFMFLG_a6 = 0)  {
5b65: b3,ea,b6,30         ldb   R30,[Rea+b6]     R30 = CTTMR;
5b69: 9b,f5,8a,00,30      cmpb  R30,[Rf4+8a]     
5b6e: d1,19               jleu  5b89             if (R30 <= CTDSFO) goto 5b89;
5b70: 9b,f5,87,00,30      cmpb  R30,[Rf4+87]     
5b75: d9,06               jgtu  5b7d             if (R30 <= CTEDSO)  {
5b77: 36,28,0f            jnb   B6,R28,5b89      if (B6_FPWQ3_Q_28 = 0) goto 5b89;
5b7a: 32,29,0c            jnb   B2,R29,5b89      if (B2_FLG_DFSO_NOVS_Q_29 = 0) goto 5b89; } }
5b7d: 3e,a6,03            jb    B6,Ra6,5b83      if (B6_VSFMFLG_a6 = 0)  {
5b80: 34,27,06            jnb   B4,R27,5b89      if (B4_DFSVS_HYS_FG_Q_R27 = 0) goto 5b89; }
5b83: 91,02,27            orb   R27,2            B1_DFSFLG_R27 = 1;
5b86: 01,30               clrw  R30              R30 = 0;
5b88: f0                  ret                    return; } } } } } } } } } }

5b89: 8b,ea,b0,00         cmpw  R0,[Rea+b0]      
5b8d: d7,f4               jne   5b83             if (DFSO_F_TMR != 0) goto 5b83;
5b8f: 71,fd,27            an2b  R27,fd           B1_DFSFLG_R27 = 0;
5b92: ad,80,30            ldzbw R30,80           wR30 = 80;
5b95: f0                  ret                    return;

   FUEL_AE_COM5:
5b96: 3f,a5,10            jb    B7,Ra5,5ba9      if (b7_CRKFLG_a5 = 0)  {          # (RUN/UNDERSPEED)
5b99: 8b,fe,16,b0         cmpw  Rb0,[Rfe+16]     
5b9d: d1,0a               jleu  5ba9             if (TAR > AETAR)  {
5b9f: a3,e8,4c,30         ldw   R30,[Re8+4c]     R30 = TLSPAT;
5ba3: 89,ff,ff,30         cmpw  R30,ffff         
5ba7: df,0d               je    5bb6             if (R30 = ffff) goto 5bb6; } }
5ba9: c7,e6,9b,00         stb   R0,[Re6+9b]      AEFUEL = 0;
5bad: c7,e4,fb,00         stb   R0,[Re4+fb]      AEPP = 0;
5bb1: c3,e4,ec,00         stw   R0,[Re4+ec]      AEPW = 0;
5bb5: f0                  ret                    return; }                         # Disable AE

# AE ENABLE LOGIC
5bb6: ef,2d,ed            call  48e6             UUWFuncLU_48e6 (
5bb9: 5a,02                     #arg 1              FN019A,
5bbb: b0,00                     #arg 2              TAR );
5bbd: a0,38,30            ldw   R30,R38          R30 = R38;                        # FN019A(TAR) = x-axis input to FN1303.
5bc0: b3,fe,14,36         ldb   R36,[Rfe+14]     R36 = FRCTAE;
5bc4: ef,0c,f4            call  4fd3             ACT_to_ECT_proportioning_factor(R36) ();
5bc7: ef,11,ed            call  48db             SUWFuncLU_48db (
5bca: 6e,02                     #arg 1              FN020C,
5bcc: 38,00                     #arg 2              38 );
5bce: a0,38,32            ldw   R32,R38          R32 = R38;                        # FN020(FRCTAE * ACT + (1-FRCTAE) * ECT) = y-axis input to FN1303.
5bd1: ad,08,34            ldzbw R34,8            wR34 = 8;
5bd4: 45,14,02,fe,38      ad3w  R38,Rfe,214      R38 = FN1303;
5bd9: ef,dd,ed            call  49b9             Four_Point_Interpolation ();
5bdc: ac,3b,3c            ldzbw R3c,R3b          wR3c = yR3b;                      # FN1303(TAR,TEMP) = Desired AE fuel flow, lbm/hr.
5bdf: ef,04,ed            call  48e6             UUWFuncLU_48e6 (
5be2: c8,e1                     #arg 1              FN331A,
5be4: bc,00                     #arg 2              TP_REL );
5be6: 6c,38,3c            ml2w  R3c,R38          lR3c *= R38;                      # FN331A(TP-RATCH) = Accel enrichment fuel flow multiplier, unitless.
5be9: ef,84,ec            call  4870             UUYFuncLU_4870 (
5bec: e6,e1                     #arg 1              FN378,
5bee: bb,00                     #arg 2              BP );
5bf0: 6c,38,3c            ml2w  R3c,R38          lR3c *= R38;                      # FN378(BP) = Accel enrichment fuel flow multiplier, unitless.
5bf3: 0d,03,3c            shldw R3c,3            lR3c <<= 3;
5bf6: a0,3e,3c            ldw   R3c,R3e          R3c = R3e;
5bf9: ef,ea,ec            call  48e6             UUWFuncLU_48e6 (
5bfc: f0,e1                     #arg 1              FN379,
5bfe: 1e,01                     #arg 2              NBAR );
5c00: 6c,38,3c            ml2w  R3c,R38          lR3c *= R38;                      # FN379(NBAR) = Accel enrichment fuel flow multiplier, unitless.
5c03: 0c,06,3c            shrdw R3c,6            lR3c >>= 6;
5c06: 6f,fe,0e,3c         ml2w  R3c,[Rfe+e]      lR3c *= AEM;                      # AEM = ECT/ACT weighting factor, unitless.
5c0a: 98,00,3e            cmpb  R3e,R0           
5c0d: df,03               je    5c12             if (R3e != 0)  {
5c0f: bd,ff,3c            ldsbw R3c,ff           swR3c = ff; }
5c12: ef,5b,ec            call  4870             UUYFuncLU_4870 (
5c15: 08,e2                     #arg 1              FN324,
5c17: ba,00                     #arg 2              MAP );
5c19: 6c,38,3c            ml2w  R3c,R38          lR3c *= R38;                      # FN324(MAP) = Accel enrichment fuel flow multiplier, unitless.
5c1c: 0c,07,3c            shrdw R3c,7            lR3c >>= 7;
5c1f: 30,3e,03            jnb   B0,R3e,5c25      if (B0_R3e = 1)  {
5c22: b1,ff,3d            ldb   R3d,ff           R3d = ff; }
5c25: c7,e6,9b,3d         stb   R3d,[Re6+9b]     AEFUEL = R3d;                     # AEFUEL = AEM * FN1303 * FN331A * FN378 * FN379 * FN324
5c29: ef,44,ec            call  4870             UUYFuncLU_4870 (
5c2c: dc,e1                     #arg 1              FN332,
5c2e: 3d,00                     #arg 2              3d );
5c30: b0,38,35            ldb   R35,R38          R35 = R38;                        # FN332(AEFUEL) = Accel enrichment pulse period, seconds.
5c33: 11,34               clrb  R34              R34 = 0;
5c35: 6d,73,cb,34         ml2w  R34,cb73         lR34 *= cb73;
5c39: 0d,01,34            shldw R34,1            lR34 <<= 1;
5c3c: c7,e4,fb,37         stb   R37,[Re4+fb]     AEPP = R37;
5c40: 7c,3d,38            ml2b  R38,R3d          wR38 *= R3d;                      # AEFUEL * FN332
5c43: 6d,c0,91,38         ml2w  R38,91c0         lR38 *= 91c0;                     # AEFUEL * FN332 * 3600 
5c47: 8f,e6,60,38         divw  R38,[Re6+60]     wR38 /= A0COR;                    # (AEFUEL * FN332 * 3600) / A0COR
5c4b: dd,16               jv    5c63             if (OVF = 0)  {
5c4d: 01,3a               clrw  R3a              R3a = 0;
5c4f: b3,f4,4b,32         ldb   R32,[Rf4+4b]     R32 = INJOUT;
5c53: 5f,f4,4c,32,34      ml3b  R34,R32,[Rf4+4c] wR34 = yR32 * NUMOUT;
5c58: 8c,34,38            divw  R38,R34          wR38 /= R34;
5c5b: dd,06               jv    5c63             if (OVF = 0)  {
5c5d: 89,c4,a0,38         cmpw  R38,a0c4         
5c61: d1,04               jleu  5c67             if (R38 <= a0c4) goto 5c67; } }
5c63: a1,c4,a0,38         ldw   R38,a0c4         R38 = a0c4; }
5c67: 6d,73,cb,38         ml2w  R38,cb73         lR38 *= cb73;
5c6b: 0d,01,38            shldw R38,1            lR38 <<= 1;
5c6e: c3,e4,ec,3a         stw   R3a,[Re4+ec]     AEPW = R3a;
5c72: 88,3a,00            cmpw  R0,R3a           
5c75: df,03               je    5c7a             if (R3a != 0)  {
5c77: 91,10,48            orb   R48,10           AEPW_NOT_ZERO = 1; }
5c7a: f0                  ret                    return;

   FUEL_PUMP_COM1:
5c7b: 3a,2c,11            jb    B2,R2c,5c8f      if (B2_VIP_FP_OVERRIDE = 0)  {
5c7e: a3,e4,c2,14         ldw   R14,[Re4+c2]     R14 = TSLPIP;
5c82: 89,00,04,14         cmpw  R14,400          
5c86: d3,04               jnc   5c8c             if (R14 >= 400)  {                # 1024 = 1 second
5c88: 71,7f,46            an2b  R46,7f           PUMP = 0;
5c8b: f0                  ret                    return; }

5c8c: 91,80,46            orb   R46,80           PUMP = 1; }
5c8f: f0                  ret                    return;

   Sub_5c90:
5c90: 99,1f,42            cmpb  R42,1f           
5c93: d1,03               jleu  5c98             if (R42 > 1f)  {
5c95: b1,1f,42            ldb   R42,1f           R42 = 1f; }
5c98: f0                  ret                    return;

5c99: 2f,f5               scall 5c90             Sub_5c90 ();
5c9b: 0c,42,30            shrdw R30,R42          lR30 >>= R42;
5c9e: 88,32,00            cmpw  R0,R32           
5ca1: df,03               je    5ca6             if (R32 = 0) goto 5ca6;
5ca3: bd,ff,30            ldsbw R30,ff           swR30 = ff;
5ca6: f0                  ret                    return;

   Sub_5ca7:
5ca7: 11,42               clrb  R42              R42 = 0;
   Sub_5ca9:
5ca9: 37,50,03            jnb   B7,R50,5caf      if (B7_Tblsflg = 1)  {
5cac: 11,3a               clrb  R3a              R3a = 0;
5cae: fe,6c,32,30         sml2w R30,R32          slR30 *= R32;
5cb2: 37,50,0d            jnb   B7,R50,5cc2      if (B7_Tblsflg = 1)  {
5cb5: 37,33,0a            jnb   B7,R33,5cc2      if (B7_R33 = 1)  {
5cb8: 02,32               cplw  R32              R32 = ~R32;
5cba: 03,30               negw  R30              R30 = -R30;
5cbc: a4,00,32            adcw  R32,R0           R32 += CY;
5cbf: b1,01,3a            ldb   R3a,1            R3a = 1; } }
5cc2: 71,7f,50            an2b  R50,7f           B7_Tblsflg = 0;
5cc5: 0f,43,30            norm  R30,R43          R43 = normalize(lR30);
5cc8: 74,43,42            ad2b  R42,R43          R42 += R43;
5ccb: f0                  ret                    return;

5ccc: 01,36               clrw  R36              R36 = 0;
   Sub_5cce:
5cce: 0f,38,34            norm  R34,R38          R38 = normalize(lR34);
   Sub_5cd1:
5cd1: 8c,36,30            divw  R30,R36          wR30 /= R36;
5cd4: d5,08               jnv   5cde             if (OVF = 1)  {
5cd6: 08,01,30            shrw  R30,1            R30 >>= 1;
5cd9: 91,80,31            orb   R31,80           B7_R31 = 1;
5cdc: 17,38               incb  R38              R38++; }
5cde: 37,39,0b            jnb   B7,R39,5cec      if (B7_R39 = 1)  {
5ce1: 13,39               negb  R39              R39 = -R39;
5ce3: 78,39,42            sb2b  R42,R39          R42 -= R39;
5ce6: db,0c               jc    5cf4             if (R42 >= 0) goto 5cf4;
5ce8: bd,ff,30            ldsbw R30,ff           swR30 = ff;
5ceb: f0                  ret                    return; }

5cec: 74,39,42            ad2b  R42,R39          R42 += R39;
5cef: d3,03               jnc   5cf4             if (R42 > ff)  {
5cf1: b1,ff,42            ldb   R42,ff           R42 = ff; } }
5cf4: 78,38,42            sb2b  R42,R38          R42 -= R38;
5cf7: d3,ef               jnc   5ce8             if (R42 < 0) goto 5ce8;
5cf9: 2f,95               scall 5c90             Sub_5c90 ();
5cfb: 08,42,30            shrw  R30,R42          R30 >>= R42;
5cfe: f0                  ret                    return;

   Sub_5cff:
5cff: 38,a3,01            jb    B0,Ra3,5d03      if (B0_V_MODE_SETUP_a3 = 0)  {
5d02: f0                  ret                    return; }

   SPARK_BASE_COM2:
5d03: b3,fa,06,32         ldb   R32,[Rfa+6]      R32 = DFTRPM;
5d07: 57,fa,07,32,34      ad3b  R34,R32,[Rfa+7]  R34 = R32 + DFTRPH;
5d0c: b3,e4,6a,42         ldb   R42,[Re4+6a]     R42 = N_BYTE;
5d10: 98,32,42            cmpb  R42,R32          
5d13: db,08               jc    5d1d             if (R42 < R32)  {                 # N_BYTE < DFTRPM
5d15: 32,a5,05            jnb   B2,Ra5,5d1d      if (B2_APT_a5 = 1)  {             # APT = 1
5d18: 91,80,a1            orb   Ra1,80           B7_SA10FG_a1 = 1;                 # |SET
5d1b: 20,0b               sjmp  5d28             goto 5d28; } }

5d1d: 98,34,42            cmpb  R42,R34          
5d20: d9,03               jgtu  5d25             if (R42 <= R34)  {
5d22: 3a,a5,03            jb    B2,Ra5,5d28      if (B2_APT_a5 = 1) goto 5d28; }
5d25: 71,7f,a1            an2b  Ra1,7f           B7_SA10FG_a1 = 0; }               # |CLEAR
5d28: 3e,a5,10            jb    B6,Ra5,5d3b      if (UNDSP = 0)  {
5d2b: 3f,a1,0d            jb    B7,Ra1,5d3b      if (B7_SA10FG_a1 = 0)  {
5d2e: fa                  di                     interrupts OFF;
5d2f: 36,a1,06            jnb   B6,Ra1,5d38      if (B6_ECHO_PIP_a1 = 1)  {
5d32: 71,bf,a1            an2b  Ra1,bf           B6_ECHO_PIP_a1 = 0;
5d35: 91,20,a1            orb   Ra1,20           B5_ECHO_TRANS_a1 = 1; }
5d38: fb                  ei                     interrupts ON;
5d39: 20,0f               sjmp  5d4a             goto 5d4a; } }

5d3b: fa                  di                     interrupts OFF;
5d3c: 3e,a1,06            jb    B6,Ra1,5d45      if (B6_ECHO_PIP_a1 = 0)  {
5d3f: 91,40,a1            orb   Ra1,40           B6_ECHO_PIP_a1 = 1;
5d42: 91,20,a1            orb   Ra1,20           B5_ECHO_TRANS_a1 = 1; }
5d45: fb                  ei                     interrupts ON;
5d46: ad,28,cc            ldzbw Rcc,28           SAF = 28;                         # SAF = 10 deg BTDC
5d49: f0                  ret                    return;                           # EXIT Base Spark Angle Logic

5d4a: 3a,28,01            jb    B2,R28,5d4e      if (B2_NEWSA_28 = 0)  {           # (previous value not used yet)  
5d4d: f0                  ret                    return; }                         # Do NOT update SAF EXIT Base Spark Angle Logic

5d4e: 30,a1,03            jnb   B0,Ra1,5d54      if (B0_MAPUP_NORM_a1 = 1)  {      # Set -> MAP update is complete and ready for  calculation  of normalized value;
5d51: ef,eb,ec            call  4a3f             Calculation_Normalized_MAP (); }
5d54: 45,00,01,fa,38      ad3w  R38,Rfa,100      R38 = FN1120;
5d59: 29,b7               scall 5f12             UYTabLU_5f12 ();
5d5b: ac,3b,1c            ldzbw R1c,R3b          wR1c = yR3b;
5d5e: 36,25,07            jnb   B6,R25,5d68      if (B6_MPGFLG_25 = 1)  {
5d61: 45,f0,01,fa,38      ad3w  R38,Rfa,1f0      R38 = FN1126;
5d66: 29,aa               scall 5f12             UYTabLU_5f12 (); }
5d68: ac,3b,40            ldzbw R40,R3b          wR40 = yR3b;
5d6b: 45,40,02,fa,38      ad3w  R38,Rfa,240      R38 = FN1127;
5d70: 29,a0               scall 5f12             UYTabLU_5f12 ();
5d72: ac,3b,14            ldzbw R14,R3b          wR14 = yR3b;
5d75: b3,fa,0a,36         ldb   R36,[Rfa+a]      R36 = FRCCTM;
5d79: ef,57,f2            call  4fd3             ACT_to_ECT_proportioning_factor(R36) ();  # TEMP_FRAC = FRCCTM * ACT + (1 - FRCCTM) * ECT.
5d7c: ef,5c,eb            call  48db             SUWFuncLU_48db (
5d7f: 7c,a0                     #arg 1              FN091,
5d81: 38,00                     #arg 2              38 );
5d83: a0,38,30            ldw   R30,R38          R30 = R38;                        # FN091(TEMP_FRAC) =  TEMP_FRAC  normalizing  function  for  FN1128,
5d86: 4b,e6,88,b2,38      sb3w  R38,Rb2,[Re6+88] R38 = TP - TAPBAR;
5d8b: db,02               jc    5d8f             if (R38 < 0)  {
5d8d: 01,38               clrw  R38              R38 = 0; }
5d8f: ef,54,eb            call  48e6             UUWFuncLU_48e6 (
5d92: a0,a0                     #arg 1              FN092,
5d94: 38,00                     #arg 2              38 );
5d96: a0,38,32            ldw   R32,R38          R32 = R38;                        # FN092(TP - TAPBAR) = TP - TAPBAR normalizing function for FN1128.
5d99: 45,90,02,fa,38      ad3w  R38,Rfa,290      R38 = FN1128;
5d9e: ad,0a,34            ldzbw R34,a            wR34 = a;
5da1: ef,12,ec            call  49b6             SYTabLU_49b6 ();
5da4: bc,3b,3c            ldsbw R3c,R3b          swR3c = yR3b;
5da7: fe,6c,14,3c         sml2w R3c,R14          slR3c *= R14;
5dab: 0e,06,3c            asrdw R3c,6            slR3c >>= 6;
5dae: 64,3c,40            ad2w  R40,R3c          R40 += R3c;
5db1: 45,50,01,fa,38      ad3w  R38,Rfa,150      R38 = FN1121;
5db6: 36,25,05            jnb   B6,R25,5dbe      if (B6_MPGFLG_25 = 1)  {
5db9: 45,e0,02,fa,38      ad3w  R38,Rfa,2e0      R38 = FN1129; }
5dbe: 29,52               scall 5f12             UYTabLU_5f12 ();
5dc0: b0,3b,30            ldb   R30,R3b          R30 = R3b;
5dc3: 5d,c8,7d,34         ml3b  R34,R7d,c8       wR34 = EM * c8;
5dc7: 01,36               clrw  R36              R36 = 0;
5dc9: 0d,05,34            shldw R34,5            lR34 <<= 5;
5dcc: 8f,e4,ee,34         divw  R34,[Re4+ee]     wR34 /= AMPEM;
5dd0: dd,06               jv    5dd8             if (OVF = 0)  {
5dd2: 89,ff,00,34         cmpw  R34,ff           
5dd6: d1,04               jleu  5ddc             if (R34 <= ff) goto 5ddc; }
5dd8: a1,ff,00,34         ldw   R34,ff           R34 = ff; }
5ddc: af,e6,44,32         ldzbw R32,[Re6+44]     wR32 = EGRACT;
5de0: a3,f8,16,36         ldw   R36,[Rf8+16]     R36 = TCEACT;
5de4: ef,68,eb            call  494f             UROLAV ();
5de7: c7,e6,44,3e         stb   R3e,[Re6+44]     EGRACT = R3e;                     # UROLAV(EM * 100/AMPEM, TCEACT).
5deb: 5c,3e,30,3c         ml3b  R3c,R30,R3e      wR3c = yR30 * R3e;
5def: 08,06,3c            shrw  R3c,6            R3c >>= 6;
5df2: 64,3c,40            ad2w  R40,R3c          R40 += R3c;
5df5: 45,a0,01,fa,38      ad3w  R38,Rfa,1a0      R38 = FN1122;
5dfa: 29,16               scall 5f12             UYTabLU_5f12 ();
5dfc: ac,3b,1a            ldzbw R1a,R3b          wR1a = yR3b;
5dff: ef,63,ea            call  4865             SUYFuncLU_4865 (
5e02: 4e,80                     #arg 1              FN051,
5e04: b6,00                     #arg 2              ECT );
5e06: ac,38,30            ldzbw R30,R38          wR30 = yR38;
5e09: ef,59,ea            call  4865             SUYFuncLU_4865 (
5e0c: 5e,80                     #arg 1              FN052,
5e0e: b7,00                     #arg 2              ACT );
5e10: ac,38,32            ldzbw R32,R38          wR32 = yR38;
5e13: ad,06,34            ldzbw R34,6            wR34 = 6;
5e16: 45,98,00,f8,38      ad3w  R38,Rf8,98       R38 = FN1150;
5e1b: ef,89,eb            call  49a7             SYTabLU_49a7 ();
5e1e: bc,3b,38            ldsbw R38,R3b          swR38 = yR3b;
5e21: fe,6c,1a,38         sml2w R38,R1a          slR38 *= R1a;
5e25: 0e,06,38            asrdw R38,6            slR38 >>= 6;
5e28: 68,38,1c            sb2w  R1c,R38          R1c -= R38;
5e2b: c3,e8,34,1c         stw   R1c,[Re8+34]     [3b4] = R1c;
5e2f: 48,38,40,3c         sb3w  R3c,R40,R38      R3c = R40 - R38;
5e33: 32,a5,0a            jnb   B2,Ra5,5e40      if (B2_APT_a5 = 1)  {
5e36: ef,aa,ea            call  48e3             USWFuncLU_48e3 (
5e39: d8,a0                     #arg 1              FN153,
5e3b: b4,00                     #arg 2              N_RPM );
5e3d: 64,38,3c            ad2w  R3c,R38          R3c += R38; }
5e40: 01,38               clrw  R38              R38 = 0;

LIGHT LOAD RPM OSCILLATION ADDER
5e42: a3,fa,0e,16         ldw   R16,[Rfa+e]      R16 = TPOBP2;
5e46: 88,16,bc            cmpw  Rbc,R16          
5e49: d9,05               jgtu  5e50             if (TP_REL <= R16)  {             # (Near closed throttle) 
5e4b: 91,08,a3            orb   Ra3,8            B3_FLIPFLOP_Q_a3 = 1;
5e4e: 20,0e               sjmp  5e5e             goto 5e5e; }

5e50: 67,fa,10,16         ad2w  R16,[Rfa+10]     R16 += TPOH2;
5e54: db,08               jc    5e5e             if (R16 <= ffff)  {
5e56: 88,16,bc            cmpw  Rbc,R16          
5e59: d1,03               jleu  5e5e             if (TP_REL > R16)  {              # TP_REL > TPOBP2 + TPOH2
5e5b: 71,f7,a3            an2b  Ra3,f7           B3_FLIPFLOP_Q_a3 = 0; } }
5e5e: b3,fa,18,16         ldb   R16,[Rfa+18]     R16 = VSOMAX;
5e62: 98,16,8d            cmpb  R8d,R16          
5e65: d9,05               jgtu  5e6c             if (VSBAR <= R16)  {              # (Not at high speed)
5e67: 91,08,44            orb   R44,8            B3_FLIPFLOP_Q_44 = 1;
5e6a: 20,0e               sjmp  5e7a             goto 5e7a; }

5e6c: 77,fa,19,16         ad2b  R16,[Rfa+19]     R16 += VSOMXH;
5e70: db,08               jc    5e7a             if (R16 <= ff)  {
5e72: 98,16,8d            cmpb  R8d,R16          
5e75: d1,03               jleu  5e7a             if (VSBAR > R16)  {               # VSBAR > VSOMAX + VSOMXH
5e77: 71,f7,44            an2b  R44,f7           B3_FLIPFLOP_Q_44 = 0; } }
5e7a: 33,a3,38            jnb   B3,Ra3,5eb5      if (B3_FLIPFLOP_Q_a3 = 1)  {
5e7d: 33,44,35            jnb   B3,R44,5eb5      if (B3_FLIPFLOP_Q_44 = 1)  {
5e80: a3,e8,40,18         ldw   R18,[Re8+40]     R18 = TPDLBR;
5e84: 8b,fa,12,18         cmpw  R18,[Rfa+12]     
5e88: d2,2b               jgt   5eb5             if (R18 <= TPDLMX)  {             # (Not a quick tip in) 
5e8a: b3,e8,36,16         ldb   R16,[Re8+36]     R16 = OSCTMR;
5e8e: 9b,fa,1e,16         cmpb  R16,[Rfa+1e]     
5e92: d3,21               jnc   5eb5             if (R16 >= OSCDLY)  {             # (Gear change delay)
5e94: 9b,e4,e2,00         cmpb  R0,[Re4+e2]      
5e98: de,1b               jlt   5eb5             if (ISCFLG <= 0)  {               # (Dashpot or preposition)
5e9a: ef,43,ea            call  48e0             SSWFuncLU_48e0 (
5e9d: 6e,80                     #arg 1              FN182,
5e9f: c2,03                     #arg 2              DNDT_SPK );
5ea1: bc,38,18            ldsbw R18,R38          swR18 = yR38;
5ea4: ef,c9,e9            call  4870             UUYFuncLU_4870 (
5ea7: 8e,80                     #arg 1              FN183,
5ea9: 8d,00                     #arg 2              VSBAR );
5eab: fe,6c,38,18         sml2w R18,R38          slR18 *= R38;                     # FN182(DNDT_SPK) * FN183(VSBAR)
5eaf: 0e,07,18            asrdw R18,7            slR18 >>= 7;
5eb2: a0,18,38            ldw   R38,R18          R38 = R18; } } } } }
5eb5: c3,e8,44,38         stw   R38,[Re8+44]     OSCMOD = R38;
5eb9: 64,38,3c            ad2w  R3c,R38          R3c += R38;                       # Include OSCMOD = FN182(DNDT_SPK) * FN183(VSBAR) in SPK_NORM
5ebc: 9b,e4,e2,00         cmpb  R0,[Re4+e2]      
5ec0: da,10               jle   5ed2             if (ISCFLG < 0)  {                # ISCFLG = -1 DASHPOT CONTROL
5ec2: a3,e4,d8,38         ldw   R38,[Re4+d8]     R38 = DASPOT;
5ec6: 08,05,38            shrw  R38,5            R38 >>= 5;
5ec9: ef,a4,e9            call  4870             UUYFuncLU_4870 (
5ecc: fc,00                     #arg 1              FN839,
5ece: 38,00                     #arg 2              38 );
5ed0: 28,38               scall 5f0a             Include_in_SPK_NORM (); }         # Include FN839(DASPOT) in SPK_NORM

# COLD START SPARK FLAG AND MULTIPLIER
5ed2: 71,ef,29            an2b  R29,ef           B4_CSSFLG_29 = 0;
5ed5: 9b,fa,03,b9         cmpb  Rb9,[Rfa+3]      
5ed9: da,18               jle   5ef3             if (TCSTRT > CSLOW)  {
5edb: 9b,fa,02,b9         cmpb  Rb9,[Rfa+2]      
5edf: d6,12               jge   5ef3             if (TCSTRT < CSHIGH)  {
5ee1: 9b,fa,05,d4         cmpb  Rd4,[Rfa+5]      
5ee5: db,0c               jc    5ef3             if (ATMR1 < CSSTIM)  {
5ee7: 3d,26,09            jb    B5,R26,5ef3      if (PTSCR = 0)  {
5eea: 91,10,29            orb   R29,10           B4_CSSFLG_29 = 1;
5eed: af,fa,04,38         ldzbw R38,[Rfa+4]      wR38 = CSSPRK;
5ef1: 28,17               scall 5f0a             Include_in_SPK_NORM (); } } } }
5ef3: af,fa,1a,38         ldzbw R38,[Rfa+1a]     wR38 = Y;                         # Y = Calibration development spark multiplier, unitless.
5ef7: 28,11               scall 5f0a             Include_in_SPK_NORM ();
5ef9: 67,fa,08,3c         ad2w  R3c,[Rfa+8]      R3c += KS1;                       # KS1 = Spark Adder, deg BTDC.
5efd: c3,e8,2a,3c         stw   R3c,[Re8+2a]     SPK_NORM = R3c;
5f01: 28,1d               scall 5f20             ENTRY_INTO_IDLE_SPARK ();
5f03: a0,3c,cc            ldw   Rcc,R3c          SAF = R3c;
5f06: 71,fb,28            an2b  R28,fb           B2_NEWSA_28 = 0;
5f09: f0                  ret                    return;

   Include_in_SPK_NORM:
5f0a: fe,6c,38,3c         sml2w R3c,R38          slR3c *= R38;
5f0e: 0e,07,3c            asrdw R3c,7            slR3c >>= 7;
5f11: f0                  ret                    return;

   UYTabLU_5f12:
5f12: a3,e6,58,30         ldw   R30,[Re6+58]     R30 = FN070L_N_x;
5f16: a3,e6,54,32         ldw   R32,[Re6+54]     R32 = FN031_MAPOPE_y;
5f1a: ad,0a,34            ldzbw R34,a            wR34 = a;
5f1d: e7,99,ea            jump  49b9             goto Four_Point_Interpolation;

   ENTRY_INTO_IDLE_SPARK:
5f20: a3,e8,2a,3c         ldw   R3c,[Re8+2a]     R3c = SPK_NORM;
5f24: 11,23               clrb  R23              R23 = 0;
5f26: 3c,29,25            jb    B4,R29,5f4e      if (B4_CSSFLG_29 = 0)  {          # (Cold Start spark not in use)
5f29: 9b,e4,e2,00         cmpb  R0,[Re4+e2]      
5f2d: d6,1f               jge   5f4e             if (ISCFLG > 0)  {                # (RPM control or lockout)  
5f2f: af,e4,e3,30         ldzbw R30,[Re4+e3]     wR30 = DSDRPM;
5f33: 09,01,30            shlw  R30,1            R30 <<= 1;
5f36: 36,26,06            jnb   B6,R26,5f3f      if (DNDSUP = 1)  {
5f39: 6b,f0,44,30         sb2w  R30,[Rf0+44]     R30 -= DRBASE;
5f3d: 20,04               sjmp  5f43             goto 5f43; }

5f3f: 6b,f0,42,30         sb2w  R30,[Rf0+42]     R30 -= NUBASE;
5f43: d1,07               jleu  5f4c             if (R30 > 0)  {
5f45: 8b,f5,aa,00,30      cmpw  R30,[Rf4+aa]     
5f4a: d9,02               jgtu  5f4e             if (R30 > SPKCTL) goto 5f4e; }
5f4c: 17,23               incb  R23              R23++; } } }
5f4e: 91,02,23            orb   R23,2            IDLE_SPARK_EXIT_CONDS_TRUE = 1;   # ENTRY CONDITIONS NOT TRUE
5f51: 37,a8,0c            jnb   B7,Ra8,5f60      if (APT_Closed_Throttle = 1)  {
5f54: b0,8d,1c            ldb   R1c,R8d          R1c = VSBAR;
5f57: 9b,f0,37,1c         cmpb  R1c,[Rf0+37]     
5f5b: d9,03               jgtu  5f60             if (R1c <= MINMPH)  {
5f5d: 71,fd,23            an2b  R23,fd           IDLE_SPARK_EXIT_CONDS_TRUE = 0; } }
5f60: b3,e8,16,22         ldb   R22,[Re8+16]     R22 = SPK_STATE;
5f64: 98,00,22            cmpb  R22,R0           
5f67: d7,24               jne   5f8d             if (R22 = 0)  {
5f69: 3c,26,07            jb    B4,R26,5f73      if (RUNUP_FLG = 0)  {
5f6c: a3,f5,b0,00,3c      ldw   R3c,[Rf4+b0]     R3c = SPK_RUNUP;
5f71: 21,13               sjmp  6086             goto 6086; }

5f73: 38,23,02            jb    B0,R23,5f78      if (IDLE_SPARK_ENTRY_CONDS_TRUE = 0)  {
5f76: 21,0e               sjmp  6086             goto 6086; }

5f78: c7,e8,3c,00         stb   R0,[Re8+3c]      SPKTMR = 0;
5f7c: a0,cc,34            ldw   R34,Rcc          R34 = SAF;
5f7f: 09,06,34            shlw  R34,6            R34 <<= 6;
5f82: c3,e8,28,34         stw   R34,[Re8+28]     SPK_RAMP = R34;
5f86: b1,01,22            ldb   R22,1            R22 = 1;
5f89: 29,00               scall 608b             MISCELLANEOUS_SPARK_CALCULATIONS ();
5f8b: 20,28               sjmp  5fb5             goto 5fb5; }

5f8d: 28,fc               scall 608b             MISCELLANEOUS_SPARK_CALCULATIONS ();
5f8f: 99,01,22            cmpb  R22,1            
5f92: d7,64               jne   5ff8             if (R22 = 1)  {
5f94: 31,23,02            jnb   B1,R23,5f99      if (IDLE_SPARK_EXIT_CONDS_TRUE = 1)  {
5f97: 20,af               sjmp  6048             goto 6048; }

5f99: a3,e8,28,34         ldw   R34,[Re8+28]     R34 = SPK_RAMP;
5f9d: 0a,06,34            asrw  R34,6            swR34 >>= 6;
5fa0: 68,1a,34            sb2w  R34,R1a          R34 -= R1a;
5fa3: d6,02               jge   5fa7             if (R34 < 0)  {
5fa5: 03,34               negw  R34              R34 = -R34; }
5fa7: 8b,f5,98,00,34      cmpw  R34,[Rf4+98]     
5fac: d9,07               jgtu  5fb5             if (R34 <= DELTA_SPK)  {
5fae: 9b,f5,9a,00,14      cmpb  R14,[Rf4+9a]     
5fb3: db,49               jc    5ffe             if (R14 >= ENTRY_T) goto 5ffe; }
5fb5: a3,e8,28,32         ldw   R32,[Re8+28]     R32 = SPK_RAMP;
5fb9: a0,1a,34            ldw   R34,R1a          R34 = R1a;
5fbc: 09,06,34            shlw  R34,6            R34 <<= 6;
5fbf: a3,f5,b6,00,36      ldw   R36,[Rf4+b6]     R36 = TCRAMP;
5fc4: ef,8f,e9            call  4956             ROLAV ();
5fc7: c3,e8,28,3e         stw   R3e,[Re8+28]     SPK_RAMP = R3e;
5fcb: 0a,06,3e            asrw  R3e,6            swR3e >>= 6;
5fce: 48,3e,1a,34         sb3w  R34,R1a,R3e      R34 = R1a - R3e;
5fd2: d6,02               jge   5fd6             if (R34 < 0)  {
5fd4: 03,34               negw  R34              R34 = -R34; }
5fd6: 8b,f5,98,00,34      cmpw  R34,[Rf4+98]     
5fdb: d9,0a               jgtu  5fe7             if (R34 <= DELTA_SPK)  {
5fdd: a0,1a,3e            ldw   R3e,R1a          R3e = R1a;
5fe0: 09,06,1a            shlw  R1a,6            R1a <<= 6;
5fe3: c3,e8,28,1a         stw   R1a,[Re8+28]     SPK_RAMP = R1a; }
5fe7: 09,08,14            shlw  R14,8            R14 <<= 8;
5fea: 6c,18,14            ml2w  R14,R18          lR14 *= R18;
5fed: 0d,01,14            shldw R14,1            lR14 <<= 1;
5ff0: a0,16,18            ldw   R18,R16          R18 = R16;
5ff3: a0,3e,1a            ldw   R1a,R3e          R1a = R3e;
5ff6: 20,09               sjmp  6001             goto 6001; }

5ff8: 38,22,30            jb    B0,R22,602b      if (B0_R22 = 1) goto 602b;
5ffb: 39,23,4a            jb    B1,R23,6048      if (IDLE_SPARK_EXIT_CONDS_TRUE = 1) goto 6048; }
5ffe: b1,02,22            ldb   R22,2            R22 = 2;
6001: a3,e8,32,3c         ldw   R3c,[Re8+32]     R3c = RPMERR_S;
6005: fe,6c,18,3c         sml2w R3c,R18          slR3c *= R18;
6009: 44,1a,3e,3c         ad3w  R3c,R3e,R1a      R3c = R3e + R1a;
600d: d5,04               jnv   6013             if (R3c > ffff)  {
600f: d6,08               jge   6019             if (R3c >= 0) goto 6019;
6011: 20,11               sjmp  6024             goto 6024; }

6013: 8b,e8,34,3c         cmpw  R3c,[Re8+34]     
6017: da,04               jle   601d             if (R3c <= [3b4]) goto 601d; }
6019: a3,e8,34,3c         ldw   R3c,[Re8+34]     R3c = [3b4]; }
601d: 8b,f5,9c,00,3c      cmpw  R3c,[Rf4+9c]     
6022: d6,62               jge   6086             if (R3c >= FBS_MIN) goto 6086;
6024: a3,f5,9c,00,3c      ldw   R3c,[Rf4+9c]     R3c = FBS_MIN;
6029: 20,5b               sjmp  6086             goto 6086; }

602b: 30,23,02            jnb   B0,R23,6030      if (IDLE_SPARK_ENTRY_CONDS_TRUE = 1)  {
602e: 27,48               sjmp  5f78             goto 5f78; }

6030: 4b,e8,2a,cc,1a      sb3w  R1a,Rcc,[Re8+2a] R1a = SAF - SPK_NORM;
6035: d6,02               jge   6039             if (R1a < 0)  {
6037: 03,1a               negw  R1a              R1a = -R1a; }
6039: 8b,f5,98,00,1a      cmpw  R1a,[Rf4+98]     
603e: d9,08               jgtu  6048             if (R1a <= DELTA_SPK)  {
6040: 11,22               clrb  R22              R22 = 0;
6042: a3,e8,2a,3c         ldw   R3c,[Re8+2a]     R3c = SPK_NORM;
6046: 20,3e               sjmp  6086             goto 6086; } }

6048: b1,03,22            ldb   R22,3            R22 = 3;
604b: 01,18               clrw  R18              R18 = 0;
604d: a0,b0,1a            ldw   R1a,Rb0          R1a = TAR;
6050: 0c,01,18            shrdw R18,1            lR18 >>= 1;
6053: 8f,f5,b4,00,18      divw  R18,[Rf4+b4]     wR18 /= TARMAX;
6058: dd,07               jv    6061             if (OVF = 0)  {
605a: 8b,f5,9e,00,18      cmpw  R18,[Rf4+9e]     
605f: d1,05               jleu  6066             if (R18 <= FKEXIT_MAX) goto 6066; }
6061: a3,f5,9e,00,18      ldw   R18,[Rf4+9e]     R18 = FKEXIT_MAX; }
6066: 8b,f5,a0,00,18      cmpw  R18,[Rf4+a0]     
606b: db,05               jc    6072             if (R18 < FKEXIT_MIN)  {
606d: a3,f5,a0,00,18      ldw   R18,[Rf4+a0]     R18 = FKEXIT_MIN; }
6072: c3,e8,1c,18         stw   R18,[Re8+1c]     FKEXIT = R18;
6076: a0,18,36            ldw   R36,R18          R36 = R18;
6079: a3,e8,2a,34         ldw   R34,[Re8+2a]     R34 = SPK_NORM;
607d: a0,cc,32            ldw   R32,Rcc          R32 = SAF;
6080: ef,d5,e8            call  4958             ROLLING_AVERAGE_ROUTINE ();
6083: a0,3e,3c            ldw   R3c,R3e          R3c = R3e; }
6086: c7,e8,16,22         stb   R22,[Re8+16]     SPK_STATE = R22;
608a: f0                  ret                    return;

   MISCELLANEOUS_SPARK_CALCULATIONS:
608b: 11,14               clrb  R14              R14 = 0;

TRANS_T CALCULATION
608d: b3,e8,3c,15         ldb   R15,[Re8+3c]     R15 = SPKTMR;
6091: 08,01,14            shrw  R14,1            R14 >>= 1;
6094: 9f,f5,b2,00,14      divb  R14,[Rf4+b2]     yR14 /= STTIM;
6099: dd,05               jv    60a0             if (OVF = 0)  {
609b: 99,80,14            cmpb  R14,80           
609e: d1,03               jleu  60a3             if (R14 <= 80) goto 60a3; }
60a0: b1,80,14            ldb   R14,80           R14 = 80; }                       # Clip TRANS_T to 1.0 as a maximum
60a3: c7,e8,17,14         stb   R14,[Re8+17]     TRANS_T = R14;                    # TRANS_T = SPKTMR / STTIM

SPK_IDLE SELECT LOGIC
60a7: a3,e8,32,3e         ldw   R3e,[Re8+32]     R3e = RPMERR_S;
60ab: 36,26,14            jnb   B6,R26,60c2      if (DNDSUP = 1)  {
60ae: a3,f5,ac,00,1a      ldw   R1a,[Rf4+ac]     R1a = SPKIDR;

KSPARK SELECT LOGIC                                                                # Delayed neutral/drive flag; 1 -> in drive, loaded.
60b3: a3,f5,a2,00,18      ldw   R18,[Rf4+a2]     R18 = KSPKDO;                     # (Drive, speed high)
60b8: 3f,3f,23            jb    B7,R3f,60de      if (B7_R3f = 1) goto 60de;
60bb: a3,f5,a4,00,18      ldw   R18,[Rf4+a4]     R18 = KSPKDU;                     # (Drive, speed low)
60c0: 20,1c               sjmp  60de             goto 60de; }

60c2: a3,f5,ae,00,1a      ldw   R1a,[Rf4+ae]     R1a = SPKINU;
60c7: ef,a6,e7            call  4870             UUYFuncLU_4870 (
60ca: f4,a0                     #arg 1              FN180,
60cc: d1,00                     #arg 2              IDLTMR );
60ce: 68,38,1a            sb2w  R1a,R38          R1a -= R38;
60d1: a3,f5,a6,00,18      ldw   R18,[Rf4+a6]     R18 = KSPKNO;                     # (Neutral, speed high)
60d6: 3f,3f,05            jb    B7,R3f,60de      if (B7_R3f = 0)  {
60d9: a3,f5,a8,00,18      ldw   R18,[Rf4+a8]     R18 = KSPKNU; } }                 # (Neutral, speed low)
60de: 30,a3,07            jnb   B0,Ra3,60e8      if (B0_V_MODE_SETUP_a3 = 1)  {
60e1: 01,18               clrw  R18              R18 = 0;
60e3: a3,f5,ae,00,1a      ldw   R1a,[Rf4+ae]     R1a = SPKINU; }
60e8: c3,e8,26,1a         stw   R1a,[Re8+26]     SPK_IDLE = R1a;
60ec: c3,e8,22,18         stw   R18,[Re8+22]     KSPARK = R18;
60f0: f0                  ret                    return;

   DWLBSE-DWLCOR_CALCULATION:
60f1: 9b,f0,72,91         cmpb  R91,[Rf0+72]     
60f5: db,05               jc    60fc             if (VBAT < VBAT_DWELL)  {
60f7: 91,04,79            orb   R79,4            B2_R79 = 1;
60fa: 20,09               sjmp  6105             goto 6105; }

60fc: 9b,f0,73,91         cmpb  R91,[Rf0+73]     
6100: d1,03               jleu  6105             if (VBAT > VBAT_DWL_HYS)  {
6102: 71,fb,79            an2b  R79,fb           B2_R79 = 0; }
6105: b3,fe,30,42         ldb   R42,[Rfe+30]     R42 = IGN_TYPE;
6109: 38,42,0a            jb    B0,R42,6116      if (B0_R42 = 0)  {
610c: 39,42,07            jb    B1,R42,6116      if (B1_R42 = 0)  {
610f: 71,fb,e1            an2b  Re1,fb           B2_CCD_HP = 0;
6112: 20,05               sjmp  6119             goto 6119;

6114: 20,9f               sjmp  61b5             goto 61b5; } }

6116: 91,04,e1            orb   Re1,4            B2_CCD_HP = 1;                    # 
6119: 32,e1,f8            jnb   B2,Re1,6114      if (B2_CCD_HP = 0) goto 6114;
611c: b0,91,30            ldb   R30,R91          R30 = VBAT;
611f: 7b,f0,5b,30         sb2b  R30,[Rf0+5b]     R30 -= DWELLA;
6123: db,02               jc    6127             if (R30 < 0)  {
6125: 01,30               clrw  R30              R30 = 0; }
6127: 7f,f0,5c,30         ml2b  R30,[Rf0+5c]     wR30 *= DWELLM;
612b: a1,00,02,36         ldw   R36,200          R36 = MDELTA;
612f: 01,34               clrw  R34              R34 = 0;
6131: 8c,30,34            divw  R34,R30          wR34 /= R30;
6134: 6d,73,cb,34         ml2w  R34,cb73         lR34 *= cb73;                     #  [1 / (DWELLM * (VBAT - DWELLA))] * FREQ18 (ticks/sec)
6138: 0d,01,34            shldw R34,1            lR34 <<= 1;
613b: c3,e8,60,36         stw   R36,[Re8+60]     DWLBSE = R36;
613f: 3e,a5,06            jb    B6,Ra5,6148      if (UNDSP = 0)  {
6142: 39,42,03            jb    B1,R42,6148      if (B1_R42 = 0)  {
6145: 32,79,04            jnb   B2,R79,614c      if (B2_R79 = 0) goto 614c; } }
6148: 01,30               clrw  R30              R30 = 0;
614a: 20,4f               sjmp  619b             goto 619b; }

614c: 30,42,66            jnb   B0,R42,61b5      if (B0_R42 = 1)  {
614f: a3,e8,62,30         ldw   R30,[Re8+62]     R30 = DWLCOR;
6153: 33,49,45            jnb   B3,R49,619b      if (DWLELD = 1)  {
6156: 35,49,42            jnb   B5,R49,619b      if (B5_NEW_DWLIDM_49 = 1)  {
6159: a3,e8,5c,34         ldw   R34,[Re8+5c]     R34 = DWELL;
615d: a3,f0,64,3c         ldw   R3c,[Rf0+64]     R3c = DWL_XS_MIN;
6161: 6d,73,cb,3c         ml2w  R3c,cb73         lR3c *= cb73;
6165: 0c,01,3c            shrdw R3c,1            lR3c >>= 1;
6168: 48,3e,34,32         sb3w  R32,R34,R3e      R32 = R34 - R3e;
616c: 8b,e8,64,32         cmpw  R32,[Re8+64]     
6170: d1,18               jleu  618a             if (R32 > DWLIDM)  {
6172: 4b,e8,64,34,30      sb3w  R30,R34,[Re8+64] R30 = R34 - DWLIDM;
6177: db,02               jc    617b             if (R30 < 0)  {
6179: 01,30               clrw  R30              R30 = 0; }
617b: 08,01,30            shrw  R30,1            R30 >>= 1;
617e: 67,e8,62,30         ad2w  R30,[Re8+62]     R30 += DWLCOR;
6182: d3,17               jnc   619b             if (R30 <= ffff) goto 619b;
6184: a1,ff,ff,30         ldw   R30,ffff         R30 = ffff;
6188: 20,11               sjmp  619b             goto 619b; }

618a: 8b,e8,64,34         cmpw  R34,[Re8+64]     
618e: d9,0b               jgtu  619b             if (R34 <= DWLIDM)  {
6190: a3,e8,62,30         ldw   R30,[Re8+62]     R30 = DWLCOR;
6194: 68,3e,30            sb2w  R30,R3e          R30 -= R3e;
6197: db,02               jc    619b             if (R30 < 0)  {
6199: 01,30               clrw  R30              R30 = 0; } } } } }
619b: c3,e8,62,30         stw   R30,[Re8+62]     DWLCOR = R30;
619f: 68,30,36            sb2w  R36,R30          R36 -= R30;
61a2: d3,06               jnc   61aa             if (R36 >= 0)  {
61a4: 8b,f0,60,36         cmpw  R36,[Rf0+60]     
61a8: d9,04               jgtu  61ae             if (R36 > DWLMIN) goto 61ae; }
61aa: a3,f0,60,36         ldw   R36,[Rf0+60]     R36 = DWLMIN; }
61ae: c3,e8,5c,36         stw   R36,[Re8+5c]     DWELL = R36;
61b2: 71,df,49            an2b  R49,df           B5_NEW_DWLIDM_49 = 0; }
61b5: af,f6,05,32         ldzbw R32,[Rf6+5]      wR32 = ENGCYL;
61b9: 01,3a               clrw  R3a              R3a = 0;
61bb: a3,f0,6e,38         ldw   R38,[Rf0+6e]     R38 = PACPER;
61bf: 8c,32,38            divw  R38,R32          wR38 /= R32;                      # PPERENG = PACPER / ENGCYL
61c2: c3,e8,6c,38         stw   R38,[Re8+6c]     PPERENG = R38;
61c6: 01,3a               clrw  R3a              R3a = 0;
61c8: a3,f0,6c,38         ldw   R38,[Rf0+6c]     R38 = PACOFF;
61cc: 8c,32,38            divw  R38,R32          wR38 /= R32;                      # POFFENG = PACOFF / ENGCYL
61cf: c3,e8,6a,38         stw   R38,[Re8+6a]     POFFENG = R38;
61d3: f0                  ret                    return;

   SPKKNOCK_LL:
61d4: 3f,4e,02            jb    B7,R4e,61d9      if (B7_NEW_PIP = 0)  {
61d7: 20,72               sjmp  624b             goto 624b; }

KNOCK THRESHOLD SENSE (KTS) LOGIC
61d9: ef,0a,e7            call  48e6             UUWFuncLU_48e6 (
61dc: fa,a4                     #arg 1              FN145,
61de: b4,00                     #arg 2              N_RPM );
61e0: 67,fa,44,38         ad2w  R38,[Rfa+44]     R38 += WOPEN;
61e4: c3,e4,18,38         stw   R38,[Re4+18]     KTS_timing = R38;                 # (WOPEN + FN145(N)) * ("LAST PIP PERIOD")
61e8: ef,fb,e6            call  48e6             UUWFuncLU_48e6 (
61eb: c2,a4                     #arg 1              FN144,
61ed: b4,00                     #arg 2              N_RPM );
61ef: 6c,c4,38            ml2w  R38,Rc4          lR38 *= DT12S;
61f2: 0d,01,38            shldw R38,1            lR38 <<= 1;
61f5: 67,fa,46,3a         ad2w  R3a,[Rfa+46]     R3a += WINLEN;
61f9: c3,e4,1a,3a         stw   R3a,[Re4+1a]     KTS_pulsewidth = R3a;             # WINLEN + FN144(N) * ("LAST PIP PERIOD")

RETINC = FN143(N)
61fd: ef,e6,e6            call  48e6             UUWFuncLU_48e6 (
6200: aa,a4                     #arg 1              FN143,
6202: b4,00                     #arg 2              N_RPM );
6204: c7,e6,b0,39         stb   R39,[Re6+b0]     RETINC = R39;

SPARK ADVANCE LOGIC
6208: 36,4f,40            jnb   B6,R4f,624b      if (B6_KNOCK_STRATEGY_4f = 1)  {  # KNOCK STRATEGY ENABLED
620b: ef,d8,e6            call  48e6             UUWFuncLU_48e6 (
620e: 0e,a5                     #arg 1              FN146A,
6210: b4,00                     #arg 2              N_RPM );
6212: 8b,e6,ac,38         cmpw  R38,[Re6+ac]     
6216: d9,33               jgtu  624b             if (R38 <= TSLADV)  {             # TSLADV >= FN146A/4
6218: a3,e6,ac,40         ldw   R40,[Re6+ac]     R40 = TSLADV;
621c: 68,38,40            sb2w  R40,R38          R40 -= R38;
621f: c3,e6,ac,40         stw   R40,[Re6+ac]     TSLADV = R40;                     # TSLADV = TSLADV - FN146A/4
6223: ef,4a,e6            call  4870             UUYFuncLU_4870 (
6226: 26,a5                     #arg 1              FN190,
6228: ea,01                     #arg 2              N_BYTE );
622a: fa                  di                     interrupts OFF;
622b: ff                  nop                    
622c: b1,01,40            ldb   R40,1            R40 = 1;                          #  0.25 deg.
622f: ad,08,42            ldzbw R42,8            wR42 = 8;
6232: 57,43,d0,01,40,30   ad3b  R30,R40,[R42+1d0]  R30 = R40 + [R42+1d0];          # SPKAD(ALL) = SPKAD(ALL) + 0.25 deg. 
6238: dd,05               jv    623f             if (R30 <= ff)  {
623a: 98,38,30            cmpb  R30,R38          
623d: da,03               jle   6242             if (R30 <= R38) goto 6242; }
623f: b0,38,30            ldb   R30,R38          R30 = R38; }                      # (Clip SPKAD(ALL) to FN190(N_BYTE) as a maximum)
6242: c7,43,d0,01,30      stb   R30,[R42+1d0]    [R42+1d0] = R30;                  # SPKAD(ALL) = SPKAD(ALL) + 0.25 deg. 
6247: e0,42,e8            djnz  R42,6232         R42--;
                                                 if (R42 != 0) goto 6232;
624a: fb                  ei                     interrupts ON; } }
624b: a3,e4,1c,32         ldw   R32,[Re4+1c]     R32 = TBART;
624f: a0,b2,34            ldw   R34,Rb2          R34 = TP;
6252: a3,f8,24,36         ldw   R36,[Rf8+24]     R36 = TCTPT;
6256: ef,f6,e6            call  494f             UROLAV ();
6259: c3,e4,1c,3e         stw   R3e,[Re4+1c]     TBART = R3e;
625d: 08,01,3e            shrw  R3e,1            R3e >>= 1;
6260: 08,01,34            shrw  R34,1            R34 >>= 1;
6263: 68,3e,34            sb2w  R34,R3e          R34 -= R3e;
6266: c3,e6,86,34         stw   R34,[Re6+86]     TCF = R34;

CTFLG LOGIC
626a: 98,a8,00            cmpb  R0,Ra8           
626d: da,0b               jle   627a             if (?APT?_a8 < 0)  {
626f: 9b,fa,3b,ba         cmpb  Rba,[Rfa+3b]     
6273: db,05               jc    627a             if (MAP < TIPMAP)  {
6275: 91,08,51            orb   R51,8            B3_CTFLG_51 = 1;
6278: 20,15               sjmp  628f             goto 628f; } }

627a: b3,fa,3c,38         ldb   R38,[Rfa+3c]     R38 = TIPHYS;
627e: 77,fa,3b,38         ad2b  R38,[Rfa+3b]     R38 += TIPMAP;
6282: d3,03               jnc   6287             if (R38 > ff)  {
6284: b1,ff,38            ldb   R38,ff           R38 = ff; }                       # TIPMAP + TIPHYS is clipped to 31.875 in. Hg.
6287: 98,ba,38            cmpb  R38,Rba          
628a: db,03               jc    628f             if (R38 < MAP)  {
628c: 71,f7,51            an2b  R51,f7           B3_CTFLG_51 = 0; }

TIPFLG LOGIC
628f: a3,fa,36,14         ldw   R14,[Rfa+36]     R14 = KACRAT;
6293: 8b,e6,86,14         cmpw  R14,[Re6+86]     
6297: d2,11               jgt   62aa             if (R14 <= TCF)  {
6299: 9b,fa,4c,b6         cmpb  Rb6,[Rfa+4c]     
629d: da,0b               jle   62aa             if (ECT > ECTIP)  {
629f: 8b,fa,42,b4         cmpw  Rb4,[Rfa+42]     
62a3: db,05               jc    62aa             if (N_RPM < NTIP)  {
62a5: 91,10,51            orb   R51,10           B4_TIPFLG_51 = 1;
62a8: 20,03               sjmp  62ad             goto 62ad; } } }

62aa: 71,ef,51            an2b  R51,ef           B4_TIPFLG_51 = 0;

KNOCK STRATEGY ENABLE LOGIC
62ad: ef,3d,00            call  62ed             KNOCK_HARDWARE_PRESENT ();
62b0: 37,9e,1e            jnb   B7,R9e,62d1      if (B7_KIHP_9e = 1)  {
62b3: fa                  di                     interrupts OFF;
62b4: ff                  nop                    
62b5: b1,b7,0c            ldb   Rc,b7            HSI_Mask = b7;
62b8: fb                  ei                     interrupts ON;
62b9: 9b,fa,41,b6         cmpb  Rb6,[Rfa+41]     
62bd: da,10               jle   62cf             if (ECT > ECTNOK)  {
62bf: 8b,fa,3e,b4         cmpw  Rb4,[Rfa+3e]     
62c3: d1,0a               jleu  62cf             if (N_RPM > RPMMIN)  {
62c5: 9b,fa,40,a9         cmpb  Ra9,[Rfa+40]     
62c9: d1,04               jleu  62cf             if (MAPPA > LODNOK)  {
62cb: 91,40,4f            orb   R4f,40           B6_KNOCK_STRATEGY_4f = 1;
62ce: f0                  ret                    return; } } }

62cf: 20,06               sjmp  62d7             goto 62d7; }

62d1: fa                  di                     interrupts OFF;
62d2: ff                  nop                    
62d3: b1,b5,0c            ldb   Rc,b5            HSI_Mask = b5;
62d6: fb                  ei                     interrupts ON;
62d7: 36,4f,12            jnb   B6,R4f,62ec      if (B6_KNOCK_STRATEGY_4f = 1)  {
62da: 71,bf,4f            an2b  R4f,bf           B6_KNOCK_STRATEGY_4f = 0;
62dd: ad,08,42            ldzbw R42,8            wR42 = 8;
62e0: c7,43,d0,01,00      stb   R0,[R42+1d0]     [R42+1d0] = 0;                    # SPKAD(ALL) = 0
62e5: e0,42,f8            djnz  R42,62e0         R42--;
                                                 if (R42 != 0) goto 62e0;
62e8: c3,e6,ac,00         stw   R0,[Re6+ac]      TSLADV = 0; }
62ec: f0                  ret                    return;

   KNOCK_HARDWARE_PRESENT:
62ed: 9b,fe,28,00         cmpb  R0,[Rfe+28]      
62f1: d7,05               jne   62f8             if (KIHP = 0)  {
62f3: 71,7f,9e            an2b  R9e,7f           B7_KIHP_9e = 0;
62f6: 20,03               sjmp  62fb             return; }

62f8: 91,80,9e            orb   R9e,80           B7_KIHP_9e = 1;
62fb: f0                  ret                    return;

   Sub_62fc:
62fc: 9b,fe,28,00         cmpb  R0,[Rfe+28]      
6300: df,05               je    6307             if (KIHP != 0)  {
6302: b1,b7,0c            ldb   Rc,b7            HSI_Mask = b7;
6305: 20,03               sjmp  630a             return; }

6307: b1,b5,0c            ldb   Rc,b5            HSI_Mask = b5;
630a: f0                  ret                    return;

   EGR_ENABLE_LH:
630b: a3,fa,2c,42         ldw   R42,[Rfa+2c]     R42 = EGRTB1;
630f: 4b,fa,2e,42,30      sb3w  R30,R42,[Rfa+2e] R30 = R42 - EGTB1H;
6314: d3,0a               jnc   6320             if (R30 >= 0)  {
6316: 88,30,bc            cmpw  Rbc,R30          
6319: db,05               jc    6320             if (TP_REL < R30)  {
631b: 91,04,24            orb   R24,4            B2_EGRTPQ_Q_24 = 1;
631e: 20,08               sjmp  6328             goto 6328; } }

6320: 88,42,bc            cmpw  Rbc,R42          
6323: d3,03               jnc   6328             if (TP_REL >= R42)  {
6325: 71,fb,24            an2b  R24,fb           B2_EGRTPQ_Q_24 = 0; }
6328: b0,ba,42            ldb   R42,Rba          R42 = MAP;
632b: 9b,fa,27,42         cmpb  R42,[Rfa+27]     
632f: d1,05               jleu  6336             if (R42 > MAP_WOT_EGRS)  {
6331: 91,02,2a            orb   R2a,2            B1_WOT_EGR_FLG_2a = 1;
6334: 20,09               sjmp  633f             goto 633f; }

6336: 9b,fa,26,42         cmpb  R42,[Rfa+26]     
633a: db,03               jc    633f             if (R42 < MAP_WOT_EGRC)  {
633c: 71,fd,2a            an2b  R2a,fd           B1_WOT_EGR_FLG_2a = 0; }
633f: 45,1f,00,fa,30      ad3w  R30,Rfa,1f       R30 = EGRTD1;
6344: 32,8f,05            jnb   B2,R8f,634c      if (B2_R8f = 1)  {
6347: 45,22,00,fa,30      ad3w  R30,Rfa,22       R30 = EGRTD4; }
634c: ef,cf,e6            call  4a1e             Sub_4a1e ();
634f: d3,3b               jnc   638c             if (R42 >= [R30+2])  {
6351: 3f,a5,38            jb    B7,Ra5,638c      if (b7_CRKFLG_a5 = 0)  {
6354: 51,bc,a6,30         an3b  R30,Ra6,bc       R30 = (B2_TFMFLG_a6|
                                                        B3_MFMFLG_a6|
                                                        B4_EFMFLG_a6|
                                                        B5_CFMFLG_a6|
                                                        B7_AFMFLG_a6);
6358: d7,32               jne   638c             if (R30 = 0)  {
635a: 9b,fe,29,00         cmpb  R0,[Rfe+29]      
635e: d7,11               jne   6371             if (PFEHP = 0)  {                 # DO SONIC EGR CONTROL
6360: a3,e4,96,38         ldw   R38,[Re4+96]     R38 = EOFF;
6364: 6b,fa,34,38         sb2w  R38,[Rfa+34]     R38 -= EGRDED;                    # (EOFF - EGRDED)
6368: db,02               jc    636c             if (R38 < 0)  {
636a: 01,38               clrw  R38              R38 = 0; }
636c: 88,38,be            cmpw  Rbe,R38          
636f: d3,1b               jnc   638c             if (EVP < R38) goto 638c; }
6371: 8b,fa,30,d2         cmpw  Rd2,[Rfa+30]     
6375: d3,15               jnc   638c             if (NACTMR >= EGRTD8)  {
6377: 91,80,2f            orb   R2f,80           B7_V_EGR_RDY_2f = 1;
637a: 3f,a8,0f            jb    B7,Ra8,638c      if (APT_Closed_Throttle = 0)  {
637d: 32,24,0c            jnb   B2,R24,638c      if (B2_EGRTPQ_Q_24 = 1)  {
6380: 99,01,a8            cmpb  Ra8,1            
6383: d7,03               jne   6388             if (?APT?_a8 = 1)  {
6385: 31,2a,04            jnb   B1,R2a,638c      if (B1_WOT_EGR_FLG_2a = 0) goto 638c; }
6388: 91,01,28            orb   R28,1            B0_EGREN_28 = 1;
638b: f0                  ret                    return; } } } } } } } }

638c: 71,fe,28            an2b  R28,fe           B0_EGREN_28 = 0;
638f: f0                  ret                    return;

   EGR_SONIC_COM2:
6390: 30,a1,03            jnb   B0,Ra1,6396      if (B0_MAPUP_NORM_a1 = 1)  {
6393: ef,a9,e6            call  4a3f             Calculation_Normalized_MAP (); }
6396: a3,e6,58,30         ldw   R30,[Re6+58]     R30 = FN070L_N_x;
639a: a3,e6,54,32         ldw   R32,[Re6+54]     R32 = FN031_MAPOPE_y;
639e: ad,0a,34            ldzbw R34,a            wR34 = a;
63a1: 45,f6,03,fa,38      ad3w  R38,Rfa,3f6      R38 = FN1220;                     # (Base EGR table)
63a6: 36,25,05            jnb   B6,R25,63ae      if (B6_MPGFLG_25 = 1)  {
63a9: 45,46,04,fa,38      ad3w  R38,Rfa,446      R38 = FN1222; }                   # (MPG mode table)
63ae: ef,08,e6            call  49b9             Four_Point_Interpolation ();
63b1: ef,b1,e4            call  4865             SUYFuncLU_4865 (
63b4: 5c,a3                     #arg 1              FN211,
63b6: b6,00                     #arg 2              ECT );
63b8: 5c,3b,38,3e         ml3b  R3e,R38,R3b      wR3e = yR38 * R3b;                # A * FN211(ECT)
63bc: ef,b1,e4            call  4870             UUYFuncLU_4870 (
63bf: 6a,a3                     #arg 1              FN212A,
63c1: bb,00                     #arg 2              BP );
63c3: 6c,3e,38            ml2w  R38,R3e          lR38 *= R3e;                      # A * FN211(ECT) * FN212A(BP)
63c6: 0d,09,38            shldw R38,9            lR38 <<= 9;
63c9: ef,99,e4            call  4865             SUYFuncLU_4865 (
63cc: 9c,a3                     #arg 1              FN220,
63ce: b7,00                     #arg 2              ACT );
63d0: 6c,3a,38            ml2w  R38,R3a          lR38 *= R3a;                      # * FN220(ACT)
63d3: 0d,08,38            shldw R38,8            lR38 <<= 8;
63d6: 11,34               clrb  R34              R34 = 0;
63d8: b3,fa,28,35         ldb   R35,[Rfa+28]     R35 = X;
63dc: 4c,34,3a,38         ml3w  R38,R3a,R34      lR38 = wR3a * R34;
63e0: 08,05,3a            shrw  R3a,5            R3a >>= 5;
63e3: b3,e4,cb,35         ldb   R35,[Re4+cb]     R35 = EGRTMR;
63e7: 9b,fa,32,35         cmpb  R35,[Rfa+32]     
63eb: db,14               jc    6401             if (R35 < EGRTD7)  {
63ed: 11,34               clrb  R34              R34 = 0;
63ef: b3,fa,32,30         ldb   R30,[Rfa+32]     R30 = EGRTD7;
63f3: 9c,30,34            divb  R34,R30          yR34 /= R30;
63f6: dd,09               jv    6401             if (OVF = 0)  {
63f8: 11,35               clrb  R35              R35 = 0;
63fa: 4c,34,3a,38         ml3w  R38,R3a,R34      lR38 = wR3a * R34;
63fe: 0d,08,38            shldw R38,8            lR38 <<= 8; } }
6401: ef,6c,e4            call  4870             UUYFuncLU_4870 (
6404: ee,a3                     #arg 1              FN240,
6406: 52,01                     #arg 2              WOTTMR );
6408: 7c,38,3a            ml2b  R3a,R38          wR3a *= R38;
640b: 08,07,3a            shrw  R3a,7            R3a >>= 7;
640e: 77,fa,25,3a         ad2b  R3a,[Rfa+25]     R3a += KPEI;
6412: b4,00,3b            adcb  R3b,R0           R3b += CY;
6415: 98,00,3b            cmpb  R3b,R0           
6418: df,03               je    641d             if (R3b != 0)  {
641a: b1,ff,3a            ldb   R3a,ff           R3a = ff; }
641d: c7,e6,45,3a         stb   R3a,[Re6+45]     EGRATE = R3a;
6421: f0                  ret                    return;

   DESEM_DELOPT_CALC:
6422: 3f,a5,4c            jb    B7,Ra5,6471      if (b7_CRKFLG_a5 = 0)  {
6425: 51,bc,a6,30         an3b  R30,Ra6,bc       R30 = (B2_TFMFLG_a6|
                                                        B3_MFMFLG_a6|
                                                        B4_EFMFLG_a6|
                                                        B5_CFMFLG_a6|
                                                        B7_AFMFLG_a6);
6429: d7,0c               jne   6437             if (R30 = 0)  {
642b: 8b,e4,64,00         cmpw  R0,[Re4+64]      
642f: d7,0a               jne   643b             if (DELOPT != 0) goto 643b;
6431: 9b,e4,e2,00         cmpb  R0,[Re4+e2]      
6435: d6,04               jge   643b             if (ISCFLG <= 0) goto 643b; }
6437: 11,7d               clrb  R7d              EM = 0;                           # EGR IS OFF
6439: 20,36               sjmp  6471             goto 6471; } }

643b: ef,32,e4            call  4870             UUYFuncLU_4870 (
643e: 96,a4                     #arg 1              FN218,
6440: eb,01                     #arg 2              MAPOPE );
6442: b0,38,23            ldb   R23,R38          R23 = R38;
6445: 11,22               clrb  R22              R22 = 0;
6447: a0,be,38            ldw   R38,Rbe          R38 = EVP;
644a: 6b,e4,96,38         sb2w  R38,[Re4+96]     R38 -= EOFF;                      # EVP-EOFF
644e: db,02               jc    6452             if (R38 < 0)  {
6450: 01,38               clrw  R38              R38 = 0; }
6452: ef,91,e4            call  48e6             UUWFuncLU_48e6 (
6455: 74,a3                     #arg 1              FN219,
6457: 38,00                     #arg 2              38 );
6459: 08,08,38            shrw  R38,8            R38 >>= 8;
645c: 7c,23,38            ml2b  R38,R23          wR38 *= R23;                      # FN218(MAPOPE) * FN219(EVP-EOFF)
645f: 09,01,38            shlw  R38,1            R38 <<= 1;
6462: 5c,bb,39,38         ml3b  R38,R39,Rbb      wR38 = yR39 * BP;                 #  * (BP/29.875
6466: 9d,ef,38            divb  R38,ef           yR38 /= ef;                       # / 29.875 * 8 = 239 = 0xEF
6469: d5,03               jnv   646e             if (OVF = 1)  {
646b: b1,ff,38            ldb   R38,ff           R38 = ff; }
646e: c4,7d,38            stb   R38,R7d          EM = R38; }                       # Clip EM to 1.99 ppm as a maximum
6471: 2e,98               scall 630b             EGR_ENABLE_LH ();
6473: 30,28,08            jnb   B0,R28,647e      if (B0_EGREN_28 = 1)  {
6476: ef,17,ff            call  6390             EGR_SONIC_COM2 ();
6479: 98,00,3a            cmpb  R3a,R0           
647c: d7,0f               jne   648d             if (R3a != 0) goto 648d; }
647e: c7,e6,45,00         stb   R0,[Re6+45]      EGRATE = 0;
6482: c7,e6,b1,00         stb   R0,[Re6+b1]      DESEM = 0;
6486: c3,e4,64,00         stw   R0,[Re4+64]      DELOPT = 0;
648a: 01,c0               clrw  Rc0              EGRDC = 0;
648c: f0                  ret                    return; }

648d: 7d,a3,3a            ml2b  R3a,a3           wR3a *= a3;
6490: a3,e4,ee,38         ldw   R38,[Re4+ee]     R38 = AMPEM;
6494: 6c,3a,38            ml2w  R38,R3a          lR38 *= R3a;
6497: 99,10,3b            cmpb  R3b,10           
649a: d3,05               jnc   64a1             if (R3b >= 10)  {
649c: bd,ff,3a            ldsbw R3a,ff           swR3a = ff;
649f: 20,03               sjmp  64a4             goto 64a4; }

64a1: 0d,04,38            shldw R38,4            lR38 <<= 4;
64a4: c7,e6,b1,3b         stb   R3b,[Re6+b1]     DESEM = R3b;
64a8: a3,e4,96,42         ldw   R42,[Re4+96]     R42 = EOFF;
64ac: 0c,05,38            shrdw R38,5            lR38 >>= 5;
64af: b0,bb,37            ldb   R37,Rbb          R37 = BP;
64b2: 11,36               clrb  R36              R36 = 0;
64b4: 8c,36,38            divw  R38,R36          wR38 /= R36;
64b7: 6d,00,ef,38         ml2w  R38,ef00         lR38 *= ef00;
64bb: 8c,22,38            divw  R38,R22          wR38 /= R22;
64be: d5,03               jnv   64c3             if (OVF = 1)  {
64c0: bd,ff,38            ldsbw R38,ff           swR38 = ff; }
64c3: ef,20,e4            call  48e6             UUWFuncLU_48e6 (
64c6: aa,a3                     #arg 1              FN221,
64c8: 38,00                     #arg 2              38 );
64ca: 64,42,38            ad2w  R38,R42          R38 += R42;
64cd: d3,03               jnc   64d2             if (R38 > ffff)  {
64cf: bd,c0,38            ldsbw R38,c0           swR38 = c0; }
64d2: a3,e4,64,32         ldw   R32,[Re4+64]     R32 = DELOPT;
64d6: 88,42,32            cmpw  R32,R42          
64d9: db,03               jc    64de             if (R32 < R42)  {
64db: c0,32,42            stw   R42,R32          R32 = R42; }
64de: a0,38,34            ldw   R34,R38          R34 = R38;                        # DELOPT' = FN221 + EOFF
64e1: a3,f8,12,36         ldw   R36,[Rf8+12]     R36 = TCDLOP;
64e5: ef,67,e4            call  494f             UROLAV ();                        # DELOPT = UROLAV(DELOPT',TCDLOP) (counts)
64e8: 89,80,e6,3e         cmpw  R3e,e680         
64ec: d1,04               jleu  64f2             if (R3e > e680)  {                # Clip DELOPT from 0 to 1023.99 counts.
64ee: a1,80,e6,3e         ldw   R3e,e680         R3e = e680; }
64f2: c3,e4,64,3e         stw   R3e,[Re4+64]     DELOPT = R3e;
64f6: f0                  ret                    return;

   EGRDC_CALC:
64f7: 8b,e4,64,00         cmpw  R0,[Re4+64]      
64fb: db,49               jc    6546             if (DELOPT > 0)  {
64fd: a3,fa,34,30         ldw   R30,[Rfa+34]     R30 = EGRDED;
6501: 67,e4,96,30         ad2w  R30,[Re4+96]     R30 += EOFF;
6505: 88,30,be            cmpw  Rbe,R30          
6508: d9,0a               jgtu  6514             if (EVP <= R30)  {
650a: 3c,28,07            jb    B4,R28,6514      if (B4_EGRFLG_28 = 0)  {
650d: a3,fa,2a,c0         ldw   Rc0,[Rfa+2a]     EGRDC = DCOFF;
6511: 91,10,28            orb   R28,10           B4_EGRFLG_28 = 1; } }
6514: a3,e4,64,38         ldw   R38,[Re4+64]     R38 = DELOPT;
6518: a0,be,32            ldw   R32,Rbe          R32 = EVP;
651b: 08,01,32            shrw  R32,1            R32 >>= 1;
651e: 08,01,38            shrw  R38,1            R38 >>= 1;
6521: 68,32,38            sb2w  R38,R32          R38 -= R32;
6524: c3,e4,66,38         stw   R38,[Re4+66]     EGRERR = R38;                     # EGR valve position error = EGRERR = DELOPT - EVP
6528: ef,b5,e3            call  48e0             SSWFuncLU_48e0 (
652b: d2,a3                     #arg 1              FN239,
652d: e6,01                     #arg 2              EGRERR );
652f: a0,c0,36            ldw   R36,Rc0          R36 = EGRDC;
6532: 08,01,36            shrw  R36,1            R36 >>= 1;
6535: 64,38,36            ad2w  R36,R38          R36 += R38;
6538: da,0c               jle   6546             if (R36 > 0)  {
653a: 89,99,39,36         cmpw  R36,3999                                           # NOTE: EGRDC is clipped to 0.90.
653e: d1,04               jleu  6544             if (R36 > 3999)  {
6540: a1,99,39,36         ldw   R36,3999         R36 = 3999; }
6544: 20,05               sjmp  654b             goto 654b; } }

6546: 01,36               clrw  R36              R36 = 0;
6548: 71,ef,28            an2b  R28,ef           B4_EGRFLG_28 = 0;
654b: 09,01,36            shlw  R36,1            R36 <<= 1;
654e: a0,36,c0            ldw   Rc0,R36          EGRDC = R36;
6551: f0                  ret                    return;

   EGR_EVR_CONTROL_COM1:
6552: ad,06,30            ldzbw R30,6            wR30 = 6;
6555: 9b,31,7d,65,c1      cmpb  Rc1,[R30+657d]   
655a: d9,03               jgtu  655f             if (EGRDC_H <= [R30+657d])  {
655c: e0,30,f6            djnz  R30,6555         R30--;
                                                 if (R30 != 0) goto 6555; }
655f: c4,38,30            stb   R30,R38          R38 = R30;
6562: 09,0b,30            shlw  R30,b            R30 <<= b;
6565: 9c,c1,30            divb  R30,Rc1          yR30 /= EGRDC_H;
6568: dd,05               jv    656f             if (OVF = 0)  {
656a: 99,c0,30            cmpb  R30,c0           
656d: d1,03               jleu  6572             if (R30 <= c0) goto 6572; }
656f: b1,c0,30            ldb   R30,c0           R30 = c0; }
6572: fa                  di                     interrupts OFF;
6573: ff                  nop                    
6574: c7,e6,8a,38         stb   R38,[Re6+8a]     EGRCNT = R38;
6578: c7,e6,8b,30         stb   R30,[Re6+8b]     EGRPER = R30;
657c: fb                  ei                     interrupts ON;
657d: f0                  ret                    return;

657e: 0a                  byte      a            8%
657f: 17                  byte     17            18%
6580: 2c                  byte     2c            35%
6581: 40                  byte     40            50%
6582: 58                  byte     58            69%
6583: 6e                  byte     6e            86%

   ISC_OVERVIEW_COM3:
6584: 35,2f,01            jnb   B5,R2f,6588      if (B5_DISABLE_ISC_2f = 1)  {
6587: f0                  ret                    return; }

6588: 3f,a5,1b            jb    B7,Ra5,65a6      if (b7_CRKFLG_a5 = 0)  {
658b: 3f,45,13            jb    B7,R45,65a1      if (B7_REFLG_45 = 0)  {           # (Not a reinit)   
658e: 34,26,46            jnb   B4,R26,65d7      if (RUNUP_FLG = 0) goto 65d7;
6591: 36,26,0d            jnb   B6,R26,65a1      if (DNDSUP = 1)  {
6594: 37,a8,0a            jnb   B7,Ra8,65a1      if (APT_Closed_Throttle = 1)  {
6597: b3,e8,06,3a         ldb   R3a,[Re8+6]      R3a = ATMR3;
659b: 9b,f0,3e,3a         cmpb  R3a,[Rf0+3e]     
659f: d3,16               jnc   65b7             if (R3a < CRKTIM) goto 65b7; } } }
65a1: 71,bf,45            an2b  R45,bf           B6_ISC_LATCH_45 = 0;
65a4: 20,14               sjmp  65ba             goto 65ba; }

65a6: 91,40,45            orb   R45,40           B6_ISC_LATCH_45 = 1;
65a9: a3,e4,c2,3a         ldw   R3a,[Re4+c2]     R3a = TSLPIP;
65ad: 89,00,08,3a         cmpw  R3a,800          
65b1: d3,24               jnc   65d7             if (R3a < 800) goto 65d7;
65b3: 01,92               clrw  R92              ISCDTY = 0;
65b5: 20,32               sjmp  65e9             goto 65e9; }

65b7: 3e,45,1d            jb    B6,R45,65d7      if (B6_ISC_LATCH_45 = 0)  {
65ba: 51,0c,a6,32         an3b  R32,Ra6,c        R32 = (B2_TFMFLG_a6|
                                                        B3_MFMFLG_a6);
65be: df,2e               je    65ee             if (R32 = 0) goto 65ee;
65c0: a3,f6,3a,92         ldw   R92,[Rf6+3a]     ISCDTY = FMMISC;
65c4: b3,f0,5a,30         ldb   R30,[Rf0+5a]     R30 = FMMDSD;
65c8: c7,e4,e3,30         stb   R30,[Re4+e3]     DSDRPM = R30;
65cc: 91,80,26            orb   R26,80           B7_HCAMFG_26 = 1;
65cf: 91,10,26            orb   R26,10           RUNUP_FLG = 1;
65d2: c7,e4,e2,00         stb   R0,[Re4+e2]      ISCFLG = 0;                       # ISCFLG = 0 DASHPOT PRE-POSITION
65d6: f0                  ret                    return; } } }                     # EXIT ISC LOGIC

65d7: 28,5c               scall 6635             DSDRPM_CALC ();
65d9: ef,77,02            call  6853             RPMERR_CALC ();
65dc: ef,86,e2            call  4865             SUYFuncLU_4865 (
65df: e8,40                     #arg 1              FN884,
65e1: b9,00                     #arg 2              TCSTRT );
65e3: 09,08,38            shlw  R38,8            R38 <<= 8;
65e6: a0,38,92            ldw   R92,R38          ISCDTY = R38;
65e9: c3,e4,d6,8a         stw   R8a,[Re4+d6]     DSTPBR = RATCH;
65ed: f0                  ret                    return; }

FLG_DASMNQ and N_RATCH LOGIC
# FLG_DASMNQ
65ee: b3,f2,02,42         ldb   R42,[Rf2+2]      R42 = DASMPH;
65f2: 57,f2,03,42,40      ad3b  R40,R42,[Rf2+3]  R40 = R42 + DASMHYST;
65f7: db,08               jc    6601             if (R40 <= ff)  {
65f9: 98,8d,40            cmpb  R40,R8d          
65fc: d9,03               jgtu  6601             if (R40 <= VSBAR)  {
65fe: 91,01,44            orb   R44,1            B0_FLG_DASMNQ_44 = 1; } }         # Set (Prepare to add dashpot to prevent declutch stall)
6601: 98,8d,42            cmpb  R42,R8d          
6604: d1,03               jleu  6609             if (R42 > VSBAR)  {
6606: 71,fe,44            an2b  R44,fe           B0_FLG_DASMNQ_44 = 0; }           # Clear FLG_DASMNQ = 0
# N_RATCH
6609: 37,a8,12            jnb   B7,Ra8,661e      if (APT_Closed_Throttle = 1)  {
660c: 36,9f,09            jnb   B6,R9f,6618      if (B6_NDSFLG_9f = 1)  {
660f: b3,fe,2d,30         ldb   R30,[Rfe+2d]     R30 = TRLOAD;
6613: 99,03,30            cmpb  R30,3            
6616: df,06               je    661e             if (R30 = 3) goto 661e; }
6618: 8b,e4,de,b4         cmpw  Rb4,[Re4+de]     
661c: d9,04               jgtu  6622             if (N_RPM > N_RATCH) goto 6622; } }
661e: c3,e4,de,b4         stw   Rb4,[Re4+de]     N_RATCH = N_RPM; }
6622: 28,11               scall 6635             DSDRPM_CALC ();
6624: 2a,2d               scall 6853             RPMERR_CALC ();
6626: ef,84,02            call  68ad             ISC_DASPOT_COM1 ();
6629: ef,5a,03            call  6986             ISC_MODE_SELECT_COM1 ();
662c: ef,0b,04            call  6a3a             ISC_IPSIBR_COM1 ();
662f: ef,5a,05            call  6b8c             ISC_ISCDTY_COM1 ();
6632: e7,f2,05            jump  6c27             goto ISC_ISCKAM_COM1;

# 1)  DSDRPM_CALC - calculation of DSDRPM & DESMAF_PRE
# 2)  RPMERR_CALC - calculation of RPMERR_A & RPMERR_S
# 3)  DASPOT_CALC - calculation of DASPOT
# 4)  MODE_SELECT - selection of mode & setting of ISCFLG
# 5)  IPSIBR_CALC - IPSIBR update & calculation of DESMAF
# 6)  ISCDTY_CALC - calculation of DEBYMA & ISCDTY
# 7)  ISCKAM_UPDATE - adaptive update of ISCKAM
#
   DSDRPM_CALC:
6635: 01,40               clrw  R40              R40 = 0;
6637: 01,20               clrw  R20              R20 = 0;
6639: b3,e4,e5,30         ldb   R30,[Re4+e5]     R30 = ISFLAG;
663d: c7,e4,e6,30         stb   R30,[Re4+e6]     ISLAST = R30;
6641: 45,cc,00,f0,32      ad3w  R32,Rf0,cc       R32 = FN825A;
6646: b0,b6,34            ldb   R34,Rb6          R34 = ECT;
6649: 29,f5               scall 6840             Sub_6840 ();
664b: 45,e0,00,f0,32      ad3w  R32,Rf0,e0       R32 = FN825B;
6650: b0,b7,34            ldb   R34,Rb7          R34 = ACT;
6653: 29,eb               scall 6840             Sub_6840 ();
6655: 9b,e4,e7,b7         cmpb  Rb7,[Re4+e7]     

# [+RPMINC] Logic: (Low ACT and A/C panel switch adder)
6659: d6,04               jge   665f             if (ACT < LOACT)  {
665b: c7,e4,e7,b7         stb   Rb7,[Re4+e7]     LOACT = ACT; }                    # LOACT = ACT (lowest ACT since startup)
665f: 9b,f0,57,d4         cmpb  Rd4,[Rf0+57]     

# [+pre_bzzrpm] Logic: (Buzz up adder)
6663: db,06               jc    666b             if (ATMR1 < BZZTM)  {             # (Buzz time not expired) 
6665: 67,f0,48,40         ad2w  R40,[Rf0+48]     R40 += BZZRPM;                    # Add pre_bzzrpm to Hicam
6669: 20,03               sjmp  666e             goto 666e; }

# [+FN826A] Logic: (Engine Cleanout adder)
666b: 3d,26,10            jb    B5,R26,667e      if (PTSCR = 0)  {                 # (Not PT since Crank)
666e: 9b,f0,56,d4         cmpb  Rd4,[Rf0+56]     
6672: db,0a               jc    667e             if (ATMR1 < TKDTM)  {             # (Kickdown time not up)
6674: 45,ee,00,f0,32      ad3w  R32,Rf0,ee       R32 = FN826A;
6679: b0,b9,34            ldb   R34,Rb9          R34 = TCSTRT;
667c: 29,c2               scall 6840             Sub_6840 (); } }                  # Add FN826A(TCSTRT) to DSDRPM

[+ (FN880 + FN821A)] Logic: 
#  (Battery charge control and Inspection Maintenance)
667e: af,f0,08,30         ldzbw R30,[Rf0+8]      wR30 = CHGRPM;
6682: 88,30,40            cmpw  R40,R30          
6685: db,1a               jc    66a1             if (R40 < R30)  {                 # DSDRPM < CHGRPM
6687: ef,e6,e1            call  4870             UUYFuncLU_4870 (
668a: 5e,01                     #arg 1              FN880,
668c: d1,00                     #arg 2              IDLTMR );
668e: 29,b6               scall 6846             Sub_6846 ();                      # Add (FN880A) to DSDRPM
6690: ef,dd,e1            call  4870             UUYFuncLU_4870 (
6693: 4f,a0                     #arg 1              FN821A,
6695: f3,02                     #arg 2              VOLTMR );
6697: 29,ad               scall 6846             Sub_6846 ();                      # Add (FN821A) to DSDRPM
6699: 88,30,40            cmpw  R40,R30          
669c: d1,03               jleu  66a1             if (R40 > R30)  {
669e: a0,30,40            ldw   R40,R30          R40 = R30; } }                    # Clip DSDRPM to CHGRPM as a maximum

HCAMFG Logic: (Enable/Disable Adaptive airflow updates)
66a1: 34,2f,08            jnb   B4,R2f,66ac      if (B4_VRUN_ISCFLG_2f = 1)  {     # (In running VIP)
66a4: a3,e4,36,40         ldw   R40,[Re4+36]     R40 = RVIPRPM;
66a8: 6b,f0,42,40         sb2w  R40,[Rf0+42]     R40 -= NUBASE; }
66ac: 91,40,79            orb   R79,40           B6_R79 = 1;
66af: 88,00,40            cmpw  R40,R0           
66b2: d7,03               jne   66b7             if (R40 = 0)  {
66b4: 71,bf,79            an2b  R79,bf           B6_R79 = 0; }
66b7: 11,3e               clrb  R3e              R3e = 0;
66b9: b3,e4,e6,14         ldb   R14,[Re4+e6]     R14 = ISLAST;
66bd: b3,e4,e7,38         ldb   R38,[Re4+e7]     R38 = LOACT;
66c1: 9b,f0,59,38         cmpb  R38,[Rf0+59]     

[+RPMINC] Logic: (Low ACT and A/C panel switch adder)
66c5: da,09               jle   66d0             if (R38 > MINACT)  {              # (ACT above normal)
66c7: 9b,fe,25,00         cmpb  R0,[Rfe+25]      
66cb: df,0b               je    66d8             if (ACDHP = 0) goto 66d8;
66cd: 33,8f,0e            jnb   B3,R8f,66de      if (B3_ACD_8f = 0) goto 66de; }
66d0: 67,f0,1c,40         ad2w  R40,[Rf0+1c]     R40 += RPMINC;                    # Add RPMINC to DSDRPM
66d4: 17,3e               incb  R3e              R3e++;
66d6: 20,06               sjmp  66de             goto 66de; }

66d8: 3f,79,f9            jb    B7,R79,66d4      if (ACCFLG = 1) goto 66d4;
66db: 38,79,f6            jb    B0,R79,66d4      if (ACIFLG = 1) goto 66d4; }
66de: b3,fe,2d,30         ldb   R30,[Rfe+2d]     R30 = TRLOAD;
66e2: 99,03,30            cmpb  R30,3                                              # (NUBASE or DRBASE) Logic:
66e5: d1,03               jleu  66ea             if (R30 > 3)  {                   # (Auto transmission)   
66e7: 3e,26,09            jb    B6,R26,66f3      if (DNDSUP = 1) goto 66f3; }      # (In drive) 
66ea: 67,f0,42,40         ad2w  R40,[Rf0+42]     R40 += NUBASE;                    # Use pre_nubase in DSDRPM calculation
66ee: 75,03,3e            ad2b  R3e,3            R3e += 3;
66f1: 20,04               sjmp  66f7             goto 66f7; }

66f3: 67,f0,44,40         ad2w  R40,[Rf0+44]     R40 += DRBASE;                    # Use pre_drbase in DSDRPM calculation

#[+AC_PPM] Logic:
66f7: 3f,79,13            jb    B7,R79,670d      if (ACCFLG = 0)  {
66fa: 38,79,10            jb    B0,R79,670d      if (ACIFLG = 0)  {
66fd: c3,ea,be,00         stw   R0,[Rea+be]      AC_PPM = 0;
6701: a3,e4,16,34         ldw   R34,[Re4+16]     R34 = A3CTMR;
6705: 8b,f0,4c,34         cmpw  R34,[Rf0+4c]     

#[+DNAC] Logic: (Air Conditioning adder)
6709: d3,35               jnc   6740             if (R34 < DACTM) goto 6740;       # A3CTMR < DACTM (Delay to turn off A/C adder)
670b: 20,37               sjmp  6744             goto 6744; } }                    # Do NOT add DNAC

670d: 17,3e               incb  R3e              R3e++;
670f: ef,d4,e1            call  48e6             UUWFuncLU_48e6 (
6712: 88,01                     #arg 1              FN885,                         # A/C DESMAF adder based on N.
6714: b4,00                     #arg 2              N_RPM );
6716: a0,38,18            ldw   R18,R38          R18 = R38;
6719: ef,49,e1            call  4865             SUYFuncLU_4865 (
671c: a0,01                     #arg 1              FN887A,                        # A/C air flow correction based on ACT.
671e: b7,00                     #arg 2              ACT );
6720: 11,39               clrb  R39              R39 = 0;
6722: 6c,38,18            ml2w  R18,R38          lR18 *= R38;                      # AC_PPM = FN885 * FN887A
6725: 0c,07,18            shrdw R18,7            lR18 >>= 7;
6728: 88,00,1a            cmpw  R1a,R0           
672b: df,03               je    6730             if (R1a != 0)  {
672d: bd,ff,18            ldsbw R18,ff           swR18 = ff; }
6730: 89,f7,07,18         cmpw  R18,7f7          
6734: d1,04               jleu  673a             if (R18 > 7f7)  {
6736: a1,f7,07,18         ldw   R18,7f7          R18 = 7f7; }
673a: c3,ea,be,18         stw   R18,[Rea+be]     AC_PPM = R18;
673e: 29,0a               scall 684a             Sub_684a (); }                    # DESMAF_PRE add R18 to R20 [+AC_PPM]
6740: 67,f0,4a,40         ad2w  R40,[Rf0+4a]     R40 += DNAC;                      # Add DNAC to DSDRPM
6744: 9b,fe,2a,00         cmpb  R0,[Rfe+2a]      

[+DNPOWS] Logic: (Power Steering adder)
[+PSPPM] Logic:
PSFLAG Logic: (Last state of POWSFG)
6748: df,1f               je    6769             if (PSPSHP != 0)  {
674a: 30,8f,12            jnb   B0,R8f,675f      if (B0_POWSFG_8f = 1)  {
674d: 67,f0,4e,40         ad2w  R40,[Rf0+4e]     R40 += DNPOWS;                    # Add DNPOWS to DSDRPM
6751: a3,f0,54,18         ldw   R18,[Rf0+54]     R18 = PSPPM;
6755: 28,f3               scall 684a             Sub_684a ();                      # Add PSPPM to DESMAF_PRE
6757: 3b,26,0f            jb    B3,R26,6769      if (PSFLAG = 1) goto 6769;
675a: 91,08,26            orb   R26,8            PSFLAG = 1;
675d: 20,06               sjmp  6765             goto 6765; }

675f: 33,26,07            jnb   B3,R26,6769      if (PSFLAG = 1)  {
6762: 71,f7,26            an2b  R26,f7           PSFLAG = 0;
6765: c3,e4,da,00         stw   R0,[Re4+da]      IBGPSI = 0; } } }
6769: c7,e4,e5,3e         stb   R3e,[Re4+e5]     ISFLAG = R3e;
676d: 08,01,40            shrw  R40,1            R40 >>= 1;
6770: 98,00,41            cmpb  R41,R0           
6773: df,03               je    6778             if (R41 != 0)  {
6775: ad,ff,40            ldzbw R40,ff           wR40 = ff; }
6778: 71,7f,26            an2b  R26,7f           B7_HCAMFG_26 = 0;
677b: 01,34               clrw  R34              R34 = 0;
677d: b0,40,35            ldb   R35,R40          R35 = R40;
6780: 8b,e4,e0,34         cmpw  R34,[Re4+e0]     
6784: db,23               jc    67a9             if (R34 < DESNLO)  {
6786: a3,f8,10,36         ldw   R36,[Rf8+10]     R36 = TCDESN;
678a: 34,2f,0c            jnb   B4,R2f,6799      if (B4_VRUN_ISCFLG_2f = 1)  {
678d: 8b,ff,ac,00,00      cmpw  R0,[Rfe+ac]      
6792: df,05               je    6799             if (VTCDSN != 0)  {
6794: a3,ff,ac,00,36      ldw   R36,[Rfe+ac]     R36 = VTCDSN; } }
6799: a3,e4,e0,32         ldw   R32,[Re4+e0]     R32 = DESNLO;
679d: ef,af,e1            call  494f             UROLAV ();
67a0: a0,3e,34            ldw   R34,R3e          R34 = R3e;
67a3: ac,3f,40            ldzbw R40,R3f          wR40 = yR3f;
67a6: 91,80,26            orb   R26,80           B7_HCAMFG_26 = 1; }
67a9: c3,e4,e0,34         stw   R34,[Re4+e0]     DESNLO = R34;
67ad: b1,03,42            ldb   R42,3            R42 = 3;
67b0: 9b,e4,e5,42         cmpb  R42,[Re4+e5]     
67b4: d1,0c               jleu  67c2             if (R42 > ISFLAG)  {
67b6: a3,f0,50,42         ldw   R42,[Rf0+50]     R42 = ISCLPD_idle_max_rpm;
67ba: 88,42,40            cmpw  R40,R42          
67bd: d1,03               jleu  67c2             if (R40 > R42)  {                 # DSDRPM > ISCLPD
67bf: a0,42,40            ldw   R40,R42          R40 = R42; } }                    # Clip DSDRPM to pre_isclpd as a maximum
67c2: c7,e4,e3,40         stb   R40,[Re4+e3]     DSDRPM = R40;
67c6: 09,06,40            shlw  R40,6            R40 <<= 6;
67c9: a0,20,18            ldw   R18,R20          R18 = R20;
67cc: b3,fe,14,36         ldb   R36,[Rfe+14]     R36 = FRCTAE;
67d0: ef,00,e8            call  4fd3             ACT_to_ECT_proportioning_factor(R36) ();
67d3: ef,05,e1            call  48db             SUWFuncLU_48db (
67d6: 6e,02                     #arg 1              FN020C,
67d8: 38,00                     #arg 2              38 );
67da: a0,38,30            ldw   R30,R38          R30 = R38;
67dd: af,e8,06,38         ldzbw R38,[Re8+6]      wR38 = ATMR3;
67e1: ef,02,e1            call  48e6             UUWFuncLU_48e6 (
67e4: 74,00                     #arg 1              FN018B,
67e6: 38,00                     #arg 2              38 );
67e8: a0,38,32            ldw   R32,R38          R32 = R38;
67eb: ad,07,34            ldzbw R34,7            wR34 = 7;
67ee: 45,c0,01,f0,38      ad3w  R38,Rf0,1c0      R38 = FN1861;
67f3: ef,c3,e1            call  49b9             Four_Point_Interpolation ();
67f6: ac,3b,20            ldzbw R20,R3b          wR20 = yR3b;                      # DESMAF_PRE = FN1861(ECT,ATMR3)
67f9: 45,12,01,f0,32      ad3w  R32,Rf0,112      R32 = FN875D;
67fe: b3,e4,e5,3e         ldb   R3e,[Re4+e5]     R3e = ISFLAG;
6802: 99,03,3e            cmpb  R3e,3            
6805: d3,05               jnc   680c             if (R3e >= 3)  {
6807: 45,2a,01,f0,32      ad3w  R32,Rf0,12a      R32 = FN875N; }
680c: af,e4,e3,34         ldzbw R34,[Re4+e3]     wR34 = DSDRPM;
6810: ef,f4,e0            call  4907             UUWFuncLU_4907 ();
6813: 6c,38,20            ml2w  R20,R38          lR20 *= R38;                      # DESMAF_PRE = ((FN875N or FN875D) * FN1861
6816: 0c,06,20            shrdw R20,6            lR20 >>= 6;
6819: 28,2f               scall 684a             Sub_684a ();

#[*CSSMAF] Logic:
681b: 34,29,12            jnb   B4,R29,6830      if (B4_CSSFLG_29 = 1)  {          # (Cold Start spark in use)
681e: af,f0,41,1c         ldzbw R1c,[Rf0+41]     wR1c = CSSMAF;
6822: 6c,1c,20            ml2w  R20,R1c          lR20 *= R1c;                      # Multiply DESMAF_PRE by CSSMAF
6825: 0c,07,20            shrdw R20,7            lR20 >>= 7;
6828: 98,00,22            cmpb  R22,R0           
682b: df,03               je    6830             if (R22 != 0)  {
682d: bd,ff,20            ldsbw R20,ff           swR20 = ff; } }
6830: 3e,79,09            jb    B6,R79,683c      if (B6_R79 = 0)  {
6833: 9b,fe,2a,00         cmpb  R0,[Rfe+2a]      
6837: df,06               je    683f             if (PSPSHP = 0) return;
6839: 30,8f,03            jnb   B0,R8f,683f      if (B0_POWSFG_8f = 0) return; }
683c: 91,80,26            orb   R26,80           B7_HCAMFG_26 = 1; } }
683f: f0                  ret                    return;

   Sub_6840:
6840: 91,20,9f            orb   R9f,20           B5_SignedInput = 1;
6843: ef,4b,e0            call  4891             UUYFuncLU_4891 ();
   Sub_6846:
6846: 64,38,40            ad2w  R40,R38          R40 += R38;
6849: f0                  ret                    return;

   Sub_684a:
684a: 64,18,20            ad2w  R20,R18          R20 += R18;
684d: d3,03               jnc   6852             if (R20 > ffff)  {
684f: bd,ff,20            ldsbw R20,ff           swR20 = ff; }
6852: f0                  ret                    return;

   RPMERR_CALC:
6853: 48,b4,40,34         sb3w  R34,R40,Rb4      R34 = R40 - N_RPM;                # RPMERR = DSDRPM - N
6857: c3,e8,2e,34         stw   R34,[Re8+2e]     RPMERR = R34;
685b: 9b,e4,e2,00         cmpb  R0,[Re4+e2]      
685f: d6,20               jge   6881             if (ISCFLG > 0)  {                # (RPM control or lockout)
6861: a3,e8,30,32         ldw   R32,[Re8+30]     R32 = RPMERR_A;
6865: a3,f8,02,36         ldw   R36,[Rf8+2]      R36 = TCBPA;
6869: ef,ea,e0            call  4956             ROLAV ();                         # RPMERR_A = ROLAV(RPMERR,TCBPA)
686c: c3,e8,30,3e         stw   R3e,[Re8+30]     RPMERR_A = R3e;                   # (calculate RPM error for airflow control)
6870: a3,e8,32,32         ldw   R32,[Re8+32]     R32 = RPMERR_S;
6874: a3,f8,04,36         ldw   R36,[Rf8+4]      R36 = TCFBS;
6878: ef,db,e0            call  4956             ROLAV ();                         # RPMERR_S = ROLAV(RPMERR,TCFBS)
687b: c3,e8,32,3e         stw   R3e,[Re8+32]     RPMERR_S = R3e;                   # (calculate RPM error for spark control)
687f: 20,08               sjmp  6889             goto 6889; }

6881: c3,e8,30,34         stw   R34,[Re8+30]     RPMERR_A = R34;
6885: c3,e8,32,34         stw   R34,[Re8+32]     RPMERR_S = R34;
6889: b1,08,32            ldb   R32,8            R32 = 8;
688c: 9b,e6,93,32         cmpb  R32,[Re6+93]     
6890: d9,1a               jgtu  68ac             if (R32 <= ECTCNT)  {             # (TCSTRT OK to use)  
6892: 3c,26,17            jb    B4,R26,68ac      if (RUNUP_FLG = 0)  {             # (first time this start) 
6895: 03,34               negw  R34              R34 = -R34;
6897: 34,2f,06            jnb   B4,R2f,68a0      if (B4_VRUN_ISCFLG_2f = 1)  {
689a: a3,f4,06,32         ldw   R32,[Rf4+6]      R32 = V_RUNUP_DIFF;
689e: 20,04               sjmp  68a4             goto 68a4; }

68a0: a3,f4,04,32         ldw   R32,[Rf4+4]      R32 = RUNUP_DIFF;
68a4: 88,32,34            cmpw  R34,R32          
68a7: da,03               jle   68ac             if (R34 > R32)  {
68a9: 91,10,26            orb   R26,10           RUNUP_FLG = 1; } } }
68ac: f0                  ret                    return;

   ISC_DASPOT_COM1:
68ad: a3,e4,d6,32         ldw   R32,[Re4+d6]     R32 = DSTPBR;
68b1: a0,b2,34            ldw   R34,Rb2          R34 = TP;
68b4: a3,f8,0e,36         ldw   R36,[Rf8+e]      R36 = TCDASU;
68b8: 88,32,34            cmpw  R34,R32          
68bb: d9,04               jgtu  68c1             if (R34 <= R32)  {                #  if (TP <= DSTPBR)
68bd: a3,f8,0c,36         ldw   R36,[Rf8+c]      R36 = TCDASD; }
68c1: ef,8b,e0            call  494f             UROLAV ();
68c4: c3,e4,d6,3e         stw   R3e,[Re4+d6]     DSTPBR = R3e;
68c8: 37,a8,1f            jnb   B7,Ra8,68ea      if (APT_Closed_Throttle = 1)  {   # DASHPOT MODE  ( APT = -1 )
68cb: ef,18,e0            call  48e6             UUWFuncLU_48e6 (
68ce: 42,01                     #arg 1              FN879,
68d0: 58,01                     #arg 2              DASPOT );
68d2: 34,2f,08            jnb   B4,R2f,68dd      if (B4_VRUN_ISCFLG_2f = 1)  {
68d5: 6f,ff,f2,00,38      ml2w  R38,[Rfe+f2]     lR38 *= V_879_MULT;               # (FN879(DASPOT) * V_879_MULT)
68da: 0c,07,38            shrdw R38,7            lR38 >>= 7; }
68dd: a3,e4,d8,1c         ldw   R1c,[Re4+d8]     R1c = DASPOT;
68e1: 68,38,1c            sb2w  R1c,R38          R1c -= R38;                       # DASPOT = DASPOT - FN879(DASPOT)
68e4: db,69               jc    694f             if (R1c >= 0) goto 694f;
68e6: 01,1c               clrw  R1c              R1c = 0;                          # DASPOT is clipped to either 0
68e8: 20,65               sjmp  694f             goto 694f; }

68ea: 47,f0,28,8a,42      ad3w  R42,R8a,[Rf0+28] R42 = RATCH + DELHYS;             # DASHPOT-PREPOSITION MODE ( APT >= 0 )
68ef: d3,03               jnc   68f4             if (R42 > ffff)  {
68f1: bd,c0,42            ldsbw R42,c0           swR42 = c0; }
68f4: 48,42,3e,3c         sb3w  R3c,R3e,R42      R3c = R3e - R42;
68f8: db,02               jc    68fc             if (R3c < 0)  {
68fa: 01,3c               clrw  R3c              R3c = 0; }
68fc: 6f,f0,26,3c         ml2w  R3c,[Rf0+26]     lR3c *= DASPTK;
6900: af,e4,e3,32         ldzbw R32,[Re4+e3]     wR32 = DSDRPM;
6904: 09,06,32            shlw  R32,6            R32 <<= 6;
6907: 48,32,b4,30         sb3w  R30,Rb4,R32      R30 = N_RPM - R32;                # (N - DSDRPM)
690b: db,02               jc    690f             if (R30 < 0)  {
690d: 01,30               clrw  R30              R30 = 0; }                        # (N - DSDRPM) is clipped to 0 as a minimum.
690f: ef,d4,df            call  48e6             UUWFuncLU_48e6 (
6912: 6c,01                     #arg 1              FN882A,
6914: 30,00                     #arg 2              30 );
6916: a0,38,42            ldw   R42,R38          R42 = R38;
6919: ef,54,df            call  4870             UUYFuncLU_4870 (
691c: b4,01                     #arg 1              FN891,
691e: 8d,00                     #arg 2              VSBAR );
6920: 6c,42,38            ml2w  R38,R42          lR38 *= R42;                      # FN882 * FN891
6923: 0c,07,38            shrdw R38,7            lR38 >>= 7;
6926: 89,d7,2f,38         cmpw  R38,2fd7         
692a: d1,04               jleu  6930             if (R38 > 2fd7)  {
692c: a1,d7,2f,38         ldw   R38,2fd7         R38 = 2fd7; }                     # Clip daspot to 2.99 as a maximum
6930: a0,38,42            ldw   R42,R38          R42 = R38;
6933: 89,f5,0b,3e         cmpw  R3e,bf5          
6937: db,13               jc    694c             if (R3e < bf5)  {
6939: 0d,02,3c            shldw R3c,2            lR3c <<= 2;
693c: ef,a7,df            call  48e6             UUWFuncLU_48e6 (
693f: b8,40                     #arg 1              ?FN839?,
6941: 30,00                     #arg 2              30 );
6943: 44,38,3e,1c         ad3w  R1c,R3e,R38      R1c = R3e + R38;
6947: 88,42,1c            cmpw  R1c,R42          
694a: d1,03               jleu  694f             if (R1c <= R42) goto 694f; }
694c: a0,42,1c            ldw   R1c,R42          R1c = R42; } }
694f: 30,44,2f            jnb   B0,R44,6981      if (B0_FLG_DASMNQ_44 = 1)  {
6952: a3,e4,de,3c         ldw   R3c,[Re4+de]     R3c = N_RATCH;
6956: 68,40,3c            sb2w  R3c,R40          R3c -= R40;                       # N_RATCH - DSDRPM
6959: db,03               jc    695e             if (R3c < 0)  {
695b: a0,00,3c            ldw   R3c,R0           R3c = 0; }
695e: ef,85,df            call  48e6             UUWFuncLU_48e6 (
6961: f4,40                     #arg 1              FN894,
6963: 3c,00                     #arg 2              3c );
6965: 88,38,1c            cmpw  R1c,R38          
6968: db,17               jc    6981             if (R1c < R38)  {
696a: 36,26,05            jnb   B6,R26,6972      if (DNDSUP = 1)  {
696d: a0,38,1c            ldw   R1c,R38          R1c = R38;
6970: 20,0f               sjmp  6981             goto 6981; }

6972: 6f,f4,0a,38         ml2w  R38,[Rf4+a]      lR38 *= DPNEU_MUL;
6976: 0c,08,38            shrdw R38,8            lR38 >>= 8;
6979: 88,38,1c            cmpw  R1c,R38          
697c: db,03               jc    6981             if (R1c < R38)  {
697e: a0,38,1c            ldw   R1c,R38          R1c = R38; } } }
6981: c3,e4,d8,1c         stw   R1c,[Re4+d8]     DASPOT = R1c;
6985: f0                  ret                    return;

   ISC_MODE_SELECT_COM1:
6986: 3f,a8,12            jb    B7,Ra8,699b      if (APT_Closed_Throttle = 0)  {   # APT 0 -> part throttle
6989: c3,e4,dc,b4         stw   Rb4,[Re4+dc]     NLAST = N_RPM;
698d: c7,e4,e2,00         stb   R0,[Re4+e2]      ISCFLG = 0;                       # ISCFLG = 0 DASHPOT PRE-POSITION
6991: c7,e4,e4,00         stb   R0,[Re4+e4]      ISCTMR = 0;
6995: c7,e8,3d,00         stb   R0,[Re8+3d]      SETTMR = 0;
6999: 20,9e               sjmp  6a39             return; }

699b: b1,01,3a            ldb   R3a,1            R3a = 1;                          # ISCFLG = 1 CLOSED LOOP RPM CONTROL
699e: 8b,f0,24,1c         cmpw  R1c,[Rf0+24]     
69a2: d1,06               jleu  69aa             if (R1c > DASCTL)  {
69a4: c7,e8,3d,00         stb   R0,[Re8+3d]      SETTMR = 0;
69a8: 20,83               sjmp  6a2d             goto 6a2d; }

69aa: b3,f0,37,30         ldb   R30,[Rf0+37]     R30 = MINMPH;
69ae: 98,8d,30            cmpb  R30,R8d          
69b1: d3,55               jnc   6a08             if (R30 >= VSBAR)  {
69b3: b3,fe,2d,16         ldb   R16,[Rfe+2d]     R16 = TRLOAD;
69b7: 99,03,16            cmpb  R16,3            
69ba: d7,03               jne   69bf             if (R16 = 3)  {
69bc: 3e,26,49            jb    B6,R26,6a08      if (DNDSUP = 1) goto 6a08; }
69bf: b3,f4,08,30         ldb   R30,[Rf4+8]      R30 = SETLNG_TM;
69c3: 9b,e8,3d,30         cmpb  R30,[Re8+3d]     
69c7: db,3f               jc    6a08             if (R30 < SETTMR)  {
69c9: 47,f0,2a,40,38      ad3w  R38,R40,[Rf0+2a] R38 = R40 + RPMCTL;
69ce: 88,38,b4            cmpw  Rb4,R38          
69d1: d1,62               jleu  6a35             if (N_RPM <= R38) goto 6a35;      # N <= (DSDRPM + RPMCTL)
69d3: 9b,e4,e2,00         cmpb  R0,[Re4+e2]      
69d7: de,59               jlt   6a32             if (ISCFLG > 0) goto 6a32;
69d9: 34,2f,0b            jnb   B4,R2f,69e7      if (B4_VRUN_ISCFLG_2f = 1)  {
69dc: b3,e8,3d,38         ldb   R38,[Re8+3d]     R38 = SETTMR;
69e0: 9b,ff,f4,00,38      cmpb  R38,[Rfe+f4]     
69e5: d9,4b               jgtu  6a32             if (R38 > SETLNG_TM) goto 6a32; }
69e7: b3,e4,e4,38         ldb   R38,[Re4+e4]     R38 = ISCTMR;
69eb: 9b,f0,32,38         cmpb  R38,[Rf0+32]     
69ef: d3,17               jnc   6a08             if (R38 >= ISCTM)  {
69f1: 4b,e4,dc,b4,38      sb3w  R38,Rb4,[Re4+dc] R38 = N_RPM - NLAST;
69f6: db,02               jc    69fa             if (R38 < 0)  {
69f8: 03,38               negw  R38              R38 = -R38; }
69fa: 8b,f0,2c,38         cmpw  R38,[Rf0+2c]     
69fe: d1,0d               jleu  6a0d             if (R38 <= NDIF) goto 6a0d;
6a00: c3,e4,dc,b4         stw   Rb4,[Re4+dc]     NLAST = N_RPM;
6a04: c7,e4,e4,00         stb   R0,[Re4+e4]      ISCTMR = 0; } } } }
6a08: b1,ff,3a            ldb   R3a,ff           R3a = ff;                         # ISCFLG = -1 DASHPOT CONTROL
6a0b: 20,28               sjmp  6a35             goto 6a35; }

6a0d: 99,03,16            cmpb  R16,3            
6a10: d3,03               jnc   6a15             if (R16 >= 3)  {
6a12: 36,26,1d            jnb   B6,R26,6a32      if (DNDSUP = 0) goto 6a32; }
6a15: ef,58,de            call  4870             UUYFuncLU_4870 (
6a18: 0a,01                     #arg 1              FN862,
6a1a: bb,00                     #arg 2              BP );
6a1c: 37,79,09            jnb   B7,R79,6a28      if (ACCFLG = 1)  {
6a1f: 77,f0,33,38         ad2b  R38,[Rf0+33]     R38 += ACMAP;
6a23: d3,03               jnc   6a28             if (R38 > ff)  {
6a25: b1,ff,38            ldb   R38,ff           R38 = ff; } }
6a28: 98,38,ba            cmpb  Rba,R38          
6a2b: db,05               jc    6a32             if (WDG_Timer < 0)  {
6a2d: b1,ff,3a            ldb   R3a,ff           R3a = ff;                         # ISCFLG = -1 DASHPOT CONTROL
6a30: 20,03               sjmp  6a35             goto 6a35; } } } }

6a32: b1,02,3a            ldb   R3a,2            R3a = 2; }                        # ISCFLG = 2 CLOSED LOOP RPM CONTROL (Lock-out entry to RPM control)
6a35: c7,e4,e2,3a         stb   R3a,[Re4+e2]     ISCFLG = R3a;
6a39: f0                  ret                    return;

   ISC_IPSIBR_COM1:
6a3a: b3,e4,e2,1e         ldb   R1e,[Re4+e2]     R1e = ISCFLG;
6a3e: 98,00,1e            cmpb  R1e,R0           
6a41: da,0a               jle   6a4d             if (R1e > 0)  {
6a43: b3,e8,3b,30         ldb   R30,[Re8+3b]     R30 = RUNUPTMR;
6a47: 9b,f4,02,30         cmpb  R30,[Rf4+2]      
6a4b: db,02               jc    6a4f             if (R30 >= IPSIDLY) goto 6a4f; }
6a4d: 20,a8               sjmp  6af7             goto 6af7; }

6a4f: a3,f0,14,22         ldw   R22,[Rf0+14]     R22 = TC_OVER;
6a53: a3,f0,1a,18         ldw   R18,[Rf0+1a]     R18 = PSIBRM;
6a57: a3,f0,1e,1a         ldw   R1a,[Rf0+1e]     R1a = PSIBRN;
6a5b: 34,2f,0e            jnb   B4,R2f,6a6c      if (B4_VRUN_ISCFLG_2f = 1)  {
6a5e: a3,fe,02,22         ldw   R22,[Rfe+2]      R22 = VTC_OVER;
6a62: a3,ff,f6,00,18      ldw   R18,[Rfe+f6]     R18 = VSIBRM;
6a67: a3,ff,f8,00,1a      ldw   R1a,[Rfe+f8]     R1a = VSIBRN; }
6a6c: 01,38               clrw  R38              R38 = 0;
6a6e: 01,3a               clrw  R3a              R3a = 0;
6a70: a3,e8,30,14         ldw   R14,[Re8+30]     R14 = RPMERR_A;
6a74: a0,14,3e            ldw   R3e,R14          R3e = R14;
6a77: 11,16               clrb  R16              R16 = 0;
6a79: 37,3f,12            jnb   B7,R3f,6a8e      if (B7_R3f = 1)  {
6a7c: 17,16               incb  R16              R16++;
6a7e: 03,3e               negw  R3e              R3e = -R3e;
6a80: 03,14               negw  R14              R14 = -R14;
6a82: a3,e8,10,36         ldw   R36,[Re8+10]     R36 = DEBYMA;
6a86: 8b,f0,22,36         cmpw  R36,[Rf0+22]     
6a8a: d1,3f               jleu  6acb             if (R36 <= DEBYCP) goto 6acb;
6a8c: 20,11               sjmp  6a9f             goto 6a9f; }

6a8e: 89,70,7d,92         cmpw  R92,7d70         
6a92: db,37               jc    6acb             if (ISCDTY < 7d70)  {
6a94: a3,f0,16,22         ldw   R22,[Rf0+16]     R22 = TC_UNDER;
6a98: 34,2f,04            jnb   B4,R2f,6a9f      if (B4_VRUN_ISCFLG_2f = 1)  {
6a9b: a3,fe,04,22         ldw   R22,[Rfe+4]      R22 = VTC_UNDER; }
6a9f: 01,3c               clrw  R3c              R3c = 0;
6aa1: 09,02,40            shlw  R40,2            R40 <<= 2;
6aa4: 8c,40,3c            divw  R3c,R40          wR3c /= R40;
6aa7: d5,03               jnv   6aac             if (OVF = 1)  {
6aa9: bd,ff,3c            ldsbw R3c,ff           swR3c = ff; }
6aac: a3,e4,ba,32         ldw   R32,[Re4+ba]     R32 = BG_TMR;
6ab0: 01,30               clrw  R30              R30 = 0;
6ab2: 8c,22,30            divw  R30,R22          wR30 /= R22;
6ab5: d5,03               jnv   6aba             if (OVF = 1)  {
6ab7: bd,ff,30            ldsbw R30,ff           swR30 = ff; }
6aba: 6c,3c,30            ml2w  R30,R3c          lR30 *= R3c;
6abd: 4c,20,32,38         ml3w  R38,R32,R20      lR38 = wR32 * R20;
6ac1: 30,16,07            jnb   B0,R16,6acb      if (B0_R16 = 1)  {
6ac4: 02,3a               cplw  R3a              R3a = ~R3a;
6ac6: 03,38               negw  R38              R38 = -R38;
6ac8: a4,00,3a            adcw  R3a,R0           R3a += CY; } } }
6acb: 67,e8,12,38         ad2w  R38,[Re8+12]     R38 += ISCPSI;
6acf: a7,e8,14,3a         adcw  R3a,[Re8+14]     R3a += IPSIBR + CY;
6ad3: d5,04               jnv   6ad9             if (R3a > ffff)  {
6ad5: d6,09               jge   6ae0             if (R3a >= 0) goto 6ae0;
6ad7: 20,11               sjmp  6aea             goto 6aea; }

6ad9: de,0a               jlt   6ae5             if (R3a < 0) goto 6ae5;
6adb: 88,18,3a            cmpw  R3a,R18          
6ade: da,0f               jle   6aef             if (R3a <= R18) goto 6aef; }
6ae0: a0,18,3a            ldw   R3a,R18          R3a = R18;
6ae3: 01,38               clrw  R38              R38 = 0; }
6ae5: 88,1a,3a            cmpw  R3a,R1a          
6ae8: d6,05               jge   6aef             if (R3a < R1a)  {
6aea: a0,1a,3a            ldw   R3a,R1a          R3a = R1a;
6aed: 01,38               clrw  R38              R38 = 0; } }
6aef: c3,e8,12,38         stw   R38,[Re8+12]     ISCPSI = R38;
6af3: c3,e8,14,3a         stw   R3a,[Re8+14]     IPSIBR = R3a;
6af7: a3,e8,14,3a         ldw   R3a,[Re8+14]     R3a = IPSIBR;
6afb: af,e4,e5,32         ldzbw R32,[Re4+e5]     wR32 = ISFLAG;
6aff: 9b,e4,e6,32         cmpb  R32,[Re4+e6]     
6b03: d7,06               jne   6b0b             if (0 = 0)  {
6b05: 30,26,16            jnb   B0,R26,6b1e      if (B0_R26 = 0) goto 6b1e;
6b08: 3c,2f,13            jb    B4,R2f,6b1e      if (B4_VRUN_ISCFLG_2f = 1) goto 6b1e; }
6b0b: c3,e4,da,00         stw   R0,[Re4+da]      IBGPSI = 0;
6b0f: 88,00,3a            cmpw  R3a,R0           
6b12: d6,0a               jge   6b1e             if (R3a < 0)  {
6b14: 01,3a               clrw  R3a              R3a = 0;
6b16: c3,e8,14,00         stw   R0,[Re8+14]      IPSIBR = 0;
6b1a: c3,e8,12,00         stw   R0,[Re8+12]      ISCPSI = 0; } } }
6b1e: 09,01,32            shlw  R32,1            R32 <<= 1;
6b21: 01,3c               clrw  R3c              R3c = 0;
6b23: 3f,28,11            jb    B7,R28,6b37      if (B7_KAMOK_28 = 0)  {
6b26: a3,33,0a,07,3c      ldw   R3c,[R32+70a]    R3c = [R32+70a];                  # ISCKAM(ISFLAG)
6b2b: 8b,f0,1a,3c         cmpw  R3c,[Rf0+1a]     
6b2f: d2,06               jgt   6b37             if (R3c <= PSIBRM)  {
6b31: 8b,f0,1e,3c         cmpw  R3c,[Rf0+1e]     
6b35: d6,05               jge   6b3c             if (R3c >= PSIBRN) goto 6b3c; } }
6b37: ef,ad,d0            call  3be7             ReInitialize_ISCKAM ();
6b3a: 01,3c               clrw  R3c              R3c = 0; }
6b3c: 0a,01,3c            asrw  R3c,1            swR3c >>= 1;
6b3f: 0a,01,3a            asrw  R3a,1            swR3a >>= 1;
6b42: 08,01,1c            shrw  R1c,1            R1c >>= 1;
6b45: 89,eb,3f,20         cmpw  R20,3feb         
6b49: d1,04               jleu  6b4f             if (R20 > 3feb)  {
6b4b: a1,eb,3f,20         ldw   R20,3feb         R20 = 3feb; }
6b4f: 38,a3,32            jb    B0,Ra3,6b84      if (B0_V_MODE_SETUP_a3 = 0)  {
6b52: 37,79,22            jnb   B7,R79,6b77      if (ACCFLG = 1)  {
6b55: 9b,e4,e2,00         cmpb  R0,[Re4+e2]      
6b59: d6,1c               jge   6b77             if (ISCFLG > 0)  {
6b5b: 9b,f0,53,b6         cmpb  Rb6,[Rf0+53]     
6b5f: da,16               jle   6b77             if (ECT > ECT_HP)  {
6b61: 9b,f0,52,d4         cmpb  Rd4,[Rf0+52]     
6b65: d1,10               jleu  6b77             if (ATMR1 > ACHPTM)  {
6b67: a0,3a,42            ldw   R42,R3a          R42 = R3a;
6b6a: ef,73,dd            call  48e0             SSWFuncLU_48e0 (
6b6d: d0,40                     #arg 1              FN852,
6b6f: ae,03                     #arg 2              RPMERR );
6b71: a0,42,3a            ldw   R3a,R42          R3a = R42;
6b74: 64,38,20            ad2w  R20,R38          R20 += R38; } } } }
6b77: 64,1c,20            ad2w  R20,R1c          R20 += R1c;
6b7a: 64,3a,20            ad2w  R20,R3a          R20 += R3a;
6b7d: 64,3c,20            ad2w  R20,R3c          R20 += R3c;
6b80: d6,02               jge   6b84             if (R20 < 0)  {
6b82: 01,20               clrw  R20              R20 = 0; } }
6b84: 09,01,20            shlw  R20,1            R20 <<= 1;
6b87: c3,e4,d4,20         stw   R20,[Re4+d4]     DESMAF = R20;
6b8b: f0                  ret                    return;

   ISC_ISCDTY_COM1:
6b8c: ac,bb,3e            ldzbw R3e,Rbb          wR3e = BP;
6b8f: 6b,f0,20,20         sb2w  R20,[Rf0+20]     R20 -= ITHBMA;                    # DESMAF - ITHBMA
6b93: db,02               jc    6b97             if (R20 < 0)  {
6b95: 01,20               clrw  R20              R20 = 0; }                        # clip minimum to zero
6b97: b3,f0,3f,30         ldb   R30,[Rf0+3f]     R30 = BPCOR_SW;
6b9b: 38,30,05            jb    B0,R30,6ba3      if (B0_R30 = 0)  {
6b9e: a0,20,30            ldw   R30,R20          R30 = R20;                        # Do not use 29.92/BP
6ba1: 20,0f               sjmp  6bb2             goto 6bb2; }

6ba3: a1,ef,00,30         ldw   R30,ef           R30 = ef;                         # Use 29.92/BP in DEBYMA calculation  # 29.875 * = ( DESMAF - ITHBMA ) 
6ba7: 6c,20,30            ml2w  R30,R20          lR30 *= R20;
6baa: 8c,3e,30            divw  R30,R3e          wR30 /= R3e;                      # ( DESMAF - ITHBMA ) * [29.92/BP]
6bad: d5,03               jnv   6bb2             if (OVF = 1)  {
6baf: bd,ff,30            ldsbw R30,ff           swR30 = ff; }
6bb2: ef,bb,dc            call  4870             UUYFuncLU_4870 (
6bb5: ac,01                     #arg 1              FN890,
6bb7: 3e,00                     #arg 2              3e );
6bb9: 09,04,38            shlw  R38,4            R38 <<= 4;
6bbc: 48,38,30,34         sb3w  R34,R30,R38      R34 = R30 - R38;                  # - FN890(BP)
6bc0: db,02               jc    6bc4             if (R34 < 0)  {
6bc2: 01,34               clrw  R34              R34 = 0; }
6bc4: 8b,f0,22,34         cmpw  R34,[Rf0+22]     
6bc8: db,04               jc    6bce             if (R34 < DEBYCP)  {              # DEBYMA is clipped to DEBYCP as a minimum.
6bca: a3,f0,22,34         ldw   R34,[Rf0+22]     R34 = DEBYCP; }
6bce: c3,e8,10,34         stw   R34,[Re8+10]     DEBYMA = R34;
6bd2: ef,11,dd            call  48e6             UUWFuncLU_48e6 (
6bd5: 98,00                     #arg 1              FN800,
6bd7: 90,03                     #arg 2              DEBYMA );
6bd9: a0,38,40            ldw   R40,R38          R40 = R38;
6bdc: b3,ff,fa,00,38      ldb   R38,[Rfe+fa]     R38 = V820A;                      # ISC duty cycle multiplier, used for VIP only.
6be1: 3c,2f,09            jb    B4,R2f,6bed      if (B4_VRUN_ISCFLG_2f = 0)  {
6be4: 28,32               scall 6c18             Manifold_VACUUM ();
6be6: ef,87,dc            call  4870             UUYFuncLU_4870 (
6be9: c0,00                     #arg 1              FN820A,
6beb: 17,02                     #arg 2              VACUUM ); }
6bed: 09,08,38            shlw  R38,8            R38 <<= 8;
6bf0: 6c,40,38            ml2w  R38,R40          lR38 *= R40;
6bf3: 0d,01,38            shldw R38,1            lR38 <<= 1;
6bf6: db,18               jc    6c10             if (B15_R3a = 0)  {
6bf8: a3,f0,38,38         ldw   R38,[Rf0+38]     R38 = IDCMUL;
6bfc: 6c,3a,38            ml2w  R38,R3a          lR38 *= R3a;
6bff: 0d,01,38            shldw R38,1            lR38 <<= 1;
6c02: db,0c               jc    6c10             if (B15_R3a = 0)  {
6c04: 67,f0,3a,3a         ad2w  R3a,[Rf0+3a]     R3a += IDCOFS;
6c08: db,06               jc    6c10             if (R3a <= ffff)  {
6c0a: 89,00,80,3a         cmpw  R3a,8000         
6c0e: d1,04               jleu  6c14             if (R3a <= 8000) goto 6c14; } } }
6c10: a1,00,80,3a         ldw   R3a,8000         R3a = 8000; }                     # ISCDTY is clipped to 1.0 as a maximum.
6c14: c0,92,3a            stw   R3a,R92          ISCDTY = R3a;
6c17: f0                  ret                    return;

   Manifold_VACUUM:
6c18: 11,35               clrb  R35              R35 = 0;
6c1a: 58,ba,bb,34         sb3b  R34,Rbb,Rba      R34 = BP - MAP;
6c1e: db,02               jc    6c22             if (R34 < 0)  {
6c20: 11,34               clrb  R34              R34 = 0; }
6c22: c7,e6,97,34         stb   R34,[Re6+97]     VACUUM = R34;
6c26: f0                  ret                    return;

   ISC_ISCKAM_COM1:
6c27: a3,e4,da,1c         ldw   R1c,[Re4+da]     R1c = IBGPSI;
6c2b: 07,1c               incw  R1c              R1c++;
6c2d: d3,02               jnc   6c31             if (R1c > ffff)  {                # Clip to Maximum
6c2f: 05,1c               decw  R1c              R1c--; }
6c31: 99,01,1e            cmpb  R1e,1            
6c34: d7,23               jne   6c59             if (R1e = 1)  {
6c36: 8b,f0,2e,14         cmpw  R14,[Rf0+2e]     
6c3a: d1,04               jleu  6c40             if (R14 > RPMDED)  {
6c3c: c7,e4,e4,00         stb   R0,[Re4+e4]      ISCTMR = 0; }
6c40: b3,e4,e4,38         ldb   R38,[Re4+e4]     R38 = ISCTMR;
6c44: 9b,f0,35,38         cmpb  R38,[Rf0+35]     
6c48: d3,0f               jnc   6c59             if (R38 >= UPDISC)  {
6c4a: 3f,26,0c            jb    B7,R26,6c59      if (B7_HCAMFG_26 = 0)  {
6c4d: a3,e8,14,3c         ldw   R3c,[Re8+14]     R3c = IPSIBR;
6c51: 88,00,3c            cmpw  R3c,R0           
6c54: df,03               je    6c59             if (R3c != 0)  {
6c56: 37,28,04            jnb   B7,R28,6c5d      if (B7_KAMOK_28 = 0) goto 6c5d; } } } }
6c59: 01,1c               clrw  R1c              R1c = 0;
6c5b: 20,47               sjmp  6ca4             goto 6ca4; }

6c5d: af,f0,36,3a         ldzbw R3a,[Rf0+36]     wR3a = UPDATM;
6c61: 88,3a,1c            cmpw  R1c,R3a          
6c64: d3,3e               jnc   6ca4             if (R1c >= R3a)  {                # if(IBGPSI < UPDATM) Exit ISCKAM_UPDATE logic;
6c66: 01,1c               clrw  R1c              R1c = 0;                          # IBGPSI = 0
6c68: af,e4,e5,32         ldzbw R32,[Re4+e5]     wR32 = ISFLAG;
6c6c: 09,01,32            shlw  R32,1            R32 <<= 1;
6c6f: a3,33,0a,07,38      ldw   R38,[R32+70a]    R38 = [R32+70a];
6c74: a3,ee,82,3a         ldw   R3a,[Ree+82]     R3a = ISKSUM;
6c78: 88,00,3c            cmpw  R3c,R0           
6c7b: d2,0e               jgt   6c8b             if (R3c <= 0)  {
6c7d: 8b,f0,1e,38         cmpw  R38,[Rf0+1e]     
6c81: da,21               jle   6ca4             if (R38 <= PSIBRN) goto 6ca4;
6c83: 05,38               decw  R38              R38--;                            # Decrement ISCKAMn
6c85: 05,3a               decw  R3a              R3a--;                            # Decrement ISKSUM
6c87: 07,3c               incw  R3c              R3c++;                            # Increment IPSIBR
6c89: 20,0c               sjmp  6c97             goto 6c97; }

6c8b: 8b,f0,1a,38         cmpw  R38,[Rf0+1a]     
6c8f: d6,13               jge   6ca4             if (R38 < PSIBRM)  {
6c91: 07,38               incw  R38              R38++;                            # Increment ISCKAMn
6c93: 07,3a               incw  R3a              R3a++;                            # Increment ISKSUM
6c95: 05,3c               decw  R3c              R3c--;                            # Decrement IPSIBR
6c97: c3,33,0a,07,38      stw   R38,[R32+70a]    [R32+70a] = R38;
6c9c: c3,e8,14,3c         stw   R3c,[Re8+14]     IPSIBR = R3c;
6ca0: c3,ee,82,3a         stw   R3a,[Ree+82]     ISKSUM = R3a; } } }
6ca4: c3,e4,da,1c         stw   R1c,[Re4+da]     IBGPSI = R1c;
6ca8: f0                  ret                    return;

   Sub_6ca9:
6ca9: 4d,58,14,92,34      ml3w  R34,R92,1458     lR34 = ISCDTY * 1458;
6cae: c3,e6,40,36         stw   R36,[Re6+40]     [2c0] = R36;
6cb2: fa                  di                     interrupts OFF;
6cb3: ff                  nop                    
6cb4: a1,6e,02,70         ldw   R70,26e          Rtab = 26e;
6cb8: b3,70,01,88         ldb   R88,[R70+1]      TablePTR = [Rtab+1];
6cbc: 99,78,88            cmpb  R88,78           
6cbf: df,14               je    6cd5             if (TablePTR != 78)  {
6cc1: 99,80,88            cmpb  R88,80           
6cc4: df,0f               je    6cd5             if (TablePTR != 80)  {
6cc6: b1,78,88            ldb   R88,78           TablePTR = 78;
6cc9: c7,70,01,88         stb   R88,[R70+1]      [Rtab+1] = TablePTR;
6ccd: c3,70,02,06         stw   R6,[R70+2]       [Rtab+2] = IO_Timer;
6cd1: c7,70,04,86         stb   R86,[R70+4]      [Rtab+4] = ReftimeH; } }
6cd5: fb                  ei                     interrupts ON;
6cd6: f0                  ret                    return;

   DOL_LH:
6cd7: 9b,fe,2e,00         cmpb  R0,[Rfe+2e]      
6cdb: df,06               je    6ce3             if (GOVHP != 0)  {
6cdd: 32,a6,11            jnb   B2,Ra6,6cf1      if (B2_TFMFLG_a6 = 0) goto 6cf1;
6ce0: 33,a6,0e            jnb   B3,Ra6,6cf1      if (B3_MFMFLG_a6 = 0) goto 6cf1; }
6ce3: c3,e6,08,00         stw   R0,[Re6+8]       DOL_DUTY = 0;
6ce7: c3,e6,0a,00         stw   R0,[Re6+a]       DOL_DUTY_ontime = 0;
6ceb: c7,01,7b,02,00      stb   R0,[R0+27b]      [27b] = 0;
6cf0: f0                  ret                    return; } }

6cf1: ef,f2,db            call  48e6             UUWFuncLU_48e6 (
6cf4: 36,80                     #arg 1              FN500,
6cf6: bc,00                     #arg 2              TP_REL );
6cf8: c3,e6,08,38         stw   R38,[Re6+8]      DOL_DUTY = R38;
6cfc: 6d,da,0a,38         ml2w  R38,ada          lR38 *= ada;
6d00: c3,e6,0a,3a         stw   R3a,[Re6+a]      DOL_DUTY_ontime = R3a;
6d04: b3,01,7b,02,42      ldb   R42,[R0+27b]     R42 = [27b];
6d09: 99,58,42            cmpb  R42,58           
6d0c: df,19               je    6d27             if (R42 != 58)  {
6d0e: 99,60,42            cmpb  R42,60           
6d11: df,14               je    6d27             if (R42 != 60)  {
6d13: b1,58,42            ldb   R42,58           R42 = 58;
6d16: a1,7b,02,38         ldw   R38,27b          R38 = 27b;
6d1a: fa                  di                     interrupts OFF;
6d1b: ff                  nop                    
6d1c: c6,39,42            stb   R42,[R38++]      [R38++] = R42;
6d1f: c2,38,00            stw   R0,[R38]         [R38] = 0;
6d22: c7,38,02,86         stb   R86,[R38+2]      [R38+2] = ReftimeH;
6d26: fb                  ei                     interrupts ON; } }
6d27: f0                  ret                    return;

   Sub_6d28:
6d28: 4b,e6,0a,00,54      sb3w  R54,R0,[Re6+a]   R54 = DOL_DUTY_ontime;
6d2d: df,0c               je    6d3b             if (R54 != 0)  {
6d2f: 65,6d,05,54         ad2w  R54,56d          R54 += 56d;
6d33: 64,54,72            ad2w  R72,R54          HSO_time += R54;
6d36: b4,00,74            adcb  R74,R0           HSO_timeH += CY;
6d39: f8                  clc                    CY = 0;
6d3a: f0                  ret                    return; }

6d3b: a1,28,23,88         ldw   R88,2328         TablePTR = 2328;
6d3f: 20,0e               sjmp  6d4f             goto 6d4f;

   Sub_6d41:
6d41: a3,e6,0a,54         ldw   R54,[Re6+a]      R54 = DOL_DUTY_ontime;
6d45: 89,6d,05,54         cmpw  R54,56d          
6d49: d3,e8               jnc   6d33             if (R54 < 56d) goto 6d33;
6d4b: a1,20,23,88         ldw   R88,2320         TablePTR = 2320;
6d4f: 65,6d,05,72         ad2w  R72,56d          HSO_time += 56d;
6d53: b4,00,74            adcb  R74,R0           HSO_timeH += CY;
6d56: cc,00               pop   R0               R0 = pop();
6d58: e7,d6,bc            jump  2a31             goto 2a31;

   ACC_GOV_MAP_COM2:
6d5b: 33,a6,12            jnb   B3,Ra6,6d70      if (B3_MFMFLG_a6 = 1)  {
6d5e: 32,a6,0f            jnb   B2,Ra6,6d70      if (B2_TFMFLG_a6 = 1)  {
6d61: c7,e6,05,00         stb   R0,[Re6+5]       GMAPDC = 0;
6d65: c3,e6,06,00         stw   R0,[Re6+6]       GOV_ON_CLOCKS = 0;
6d69: c7,01,81,02,00      stb   R0,[R0+281]      [281] = 0;
6d6e: 20,3c               sjmp  6dac             return; } }

6d70: ef,fd,da            call  4870             UUYFuncLU_4870 (
6d73: 46,80                     #arg 1              FN501,
6d75: a9,00                     #arg 2              MAPPA );
6d77: c7,e6,05,38         stb   R38,[Re6+5]      GMAPDC = R38;
6d7b: 09,08,38            shlw  R38,8            R38 <<= 8;
6d7e: 6d,47,10,38         ml2w  R38,1047         lR38 *= 1047;
6d82: 0d,01,38            shldw R38,1            lR38 <<= 1;
6d85: c3,e6,06,3a         stw   R3a,[Re6+6]      GOV_ON_CLOCKS = R3a;
6d89: b3,01,81,02,42      ldb   R42,[R0+281]     R42 = [281];
6d8e: 99,68,42            cmpb  R42,68           
6d91: df,19               je    6dac             if (R42 != 68)  {
6d93: 99,70,42            cmpb  R42,70           
6d96: df,14               je    6dac             if (R42 != 70)  {
6d98: b1,68,42            ldb   R42,68           R42 = 68;
6d9b: a1,81,02,38         ldw   R38,281          R38 = 281;
6d9f: fa                  di                     interrupts OFF;
6da0: ff                  nop                    
6da1: c6,39,42            stb   R42,[R38++]      [R38++] = R42;
6da4: c2,38,00            stw   R0,[R38]         [R38] = 0;
6da7: c7,38,02,86         stb   R86,[R38+2]      [R38+2] = ReftimeH;
6dab: fb                  ei                     interrupts ON; } }
6dac: f0                  ret                    return;

   Sub_6dad:
6dad: 4b,e6,06,00,54      sb3w  R54,R0,[Re6+6]   R54 = GOV_ON_CLOCKS;
6db2: df,0c               je    6dc0             if (R54 != 0)  {
6db4: 65,47,10,54         ad2w  R54,1047         R54 += 1047;
6db8: 64,54,72            ad2w  R72,R54          HSO_time += R54;
6dbb: b4,00,74            adcb  R74,R0           HSO_timeH += CY;
6dbe: f8                  clc                    CY = 0;
6dbf: f0                  ret                    return; }

6dc0: a1,38,23,88         ldw   R88,2338         TablePTR = 2338;
6dc4: 20,0e               sjmp  6dd4             goto 6dd4;

   Sub_6dc6:
6dc6: a3,e6,06,54         ldw   R54,[Re6+6]      R54 = GOV_ON_CLOCKS;
6dca: 89,47,10,54         cmpw  R54,1047         
6dce: d3,e8               jnc   6db8             if (R54 < 1047) goto 6db8;
6dd0: a1,30,23,88         ldw   R88,2330         TablePTR = 2330;
6dd4: 65,47,10,72         ad2w  R72,1047         HSO_time += 1047;
6dd8: b4,00,74            adcb  R74,R0           HSO_timeH += CY;
6ddb: cc,00               pop   R0               R0 = pop();
6ddd: e7,51,bc            jump  2a31             goto 2a31;

   THERMACTOR_AIR_STRATEGY:
6de0: b3,f6,4a,38         ldb   R38,[Rf6+4a]     R38 = CTBYS;                      # Minimum coolant temperature to bypass thermactor air, deg F.
6de4: 98,38,b6            cmpb  Rb6,R38          
6de7: da,05               jle   6dee             if (ECT > R38)  {
6de9: 91,20,a4            orb   Ra4,20           TAQ1 = 1;
6dec: 20,0c               sjmp  6dfa             goto 6dfa; }

6dee: 7b,f6,4b,38         sb2b  R38,[Rf6+4b]     R38 -= CTBYSH;                    # CTBYS - CTBYSH = Hysteresis term for CTBYS, deg F.
6df2: 98,38,b6            cmpb  Rb6,R38          
6df5: d6,03               jge   6dfa             if (ECT < R38)  {
6df7: 71,df,a4            an2b  Ra4,df           TAQ1 = 0; }
6dfa: ef,e9,da            call  48e6             UUWFuncLU_48e6 (
6dfd: 14,42                     #arg 1              FNTP_AIR_OFF,
6dff: b4,00                     #arg 2              N_RPM );
6e01: 88,00,38            cmpw  R38,R0           
6e04: df,10               je    6e16             if (R38 != 0)  {
6e06: 47,f5,90,00,38,36   ad3w  R36,R38,[Rf4+90] R36 = R38 + TP_AIR_OFF_H;
6e0c: d3,03               jnc   6e11             if (R36 > ffff)  {
6e0e: bd,ff,36            ldsbw R36,ff           swR36 = ff; }
6e11: 88,bc,36            cmpw  R36,Rbc          
6e14: d9,05               jgtu  6e1b             if (R36 > TP_REL) goto 6e1b; }
6e16: 71,fb,d6            an2b  Rd6,fb           TP_AIR_OFF_F = 0;                 # (allow air)
6e19: 20,08               sjmp  6e23             goto 6e23; }

6e1b: 88,bc,38            cmpw  R38,Rbc          
6e1e: d1,03               jleu  6e23             if (R38 > TP_REL)  {
6e20: 91,04,d6            orb   Rd6,4            TP_AIR_OFF_F = 1; }               # (dump air)
6e23: 71,fb,25            an2b  R25,fb           CHKAIR = 0;                       # (force O.L.)
6e26: 8b,ea,ae,00         cmpw  R0,[Rea+ae]      
6e2a: d7,6c               jne   6e98             if (DFSO_A_TMR = 0)  {
6e2c: 3f,a5,69            jb    B7,Ra5,6e98      if (b7_CRKFLG_a5 = 0)  {
6e2f: 51,af,a6,32         an3b  R32,Ra6,af       R32 = (B0_ETV_ERROR_a6|
                                                        B1__a6|
                                                        B2_TFMFLG_a6|
                                                        B3_MFMFLG_a6|
                                                        B5_CFMFLG_a6|
                                                        B7_AFMFLG_a6);
6e33: d7,63               jne   6e98             if (R32 = 0)  {
6e35: b3,e4,ce,30         ldb   R30,[Re4+ce]     R30 = [14e];
6e39: 9b,f6,47,30         cmpb  R30,[Rf6+47]     
6e3d: db,59               jc    6e98             if (R30 < BYSTM4)  {
6e3f: 31,27,06            jnb   B1,R27,6e48      if (B1_DFSFLG_R27 = 1)  {
6e42: 9b,f6,4c,00         cmpb  R0,[Rf6+4c]      
6e46: d7,50               jne   6e98             if (DSFTSW != 0) goto 6e98; }
6e48: 45,44,00,f6,30      ad3w  R30,Rf6,44       R30 = BYSTM1;
6e4d: ef,ce,db            call  4a1e             Sub_4a1e ();
6e50: d3,46               jnc   6e98             if (R42 >= [R30+2])  {
6e52: 3d,a4,43            jb    B5,Ra4,6e98      if (TAQ1 = 0)  {
6e55: b3,ee,84,42         ldb   R42,[Ree+84]     R42 = KAM_BIT_FLAGS;
6e59: 3d,42,3c            jb    B5,R42,6e98      if (B5_R42 = 0)  {
6e5c: b3,e4,d2,30         ldb   R30,[Re4+d2]     R30 = WOTTMR;
6e60: 9b,f6,41,30         cmpb  R30,[Rf6+41]     
6e64: d3,03               jnc   6e69             if (R30 >= BYPWOT)  {
6e66: 3a,a5,2f            jb    B2,Ra5,6e98      if (B2_APT_a5 = 1) goto 6e98; }
6e69: 36,25,06            jnb   B6,R25,6e72      if (B6_MPGFLG_25 = 1)  {
6e6c: 9b,f6,52,00         cmpb  R0,[Rf6+52]      
6e70: d7,26               jne   6e98             if (SW_MPD != 0) goto 6e98; }
6e72: 3a,d6,23            jb    B2,Rd6,6e98      if (TP_AIR_OFF_F = 0)  {
6e75: 9b,f4,5f,00         cmpb  R0,[Rf4+5f]      
6e79: df,03               je    6e7e             if (T75LSW != 0)  {
6e7b: 32,9f,1a            jnb   B2,R9f,6e98      if (B2_OLFLG = 0) goto 6e98; }
6e7e: b3,e4,cf,30         ldb   R30,[Re4+cf]     R30 = LMBTMR;
6e82: 9b,f6,48,30         cmpb  R30,[Rf6+48]     
6e86: db,0a               jc    6e92             if (R30 < BYSTM8)  {
6e88: b3,e4,ca,30         ldb   R30,[Re4+ca]     R30 = [14a];
6e8c: 9b,f6,40,30         cmpb  R30,[Rf6+40]     
6e90: d7,10               jne   6ea2             if (R30 != BYMAP) goto 6ea2; }
6e92: 9b,f6,49,00         cmpb  R0,[Rf6+49]      
6e96: df,03               je    6e9b             if (CHKASW = 0) goto 6e9b; } } } } } } } } } } } }
6e98: 91,04,25            orb   R25,4            CHKAIR = 1; }                     # (not forced O.L.)
6e9b: 71,bf,47            an2b  R47,bf           B6_AM2_47 = 0;
6e9e: 71,fe,46            an2b  R46,fe           AM1 = 0;
6ea1: f0                  ret                    return; }                         # (bypass air)

6ea2: 45,58,00,f6,30      ad3w  R30,Rf6,58       R30 = UPSTM4;
6ea7: 3a,8f,05            jb    B2,R8f,6eaf      if (B2_R8f = 0)  {
6eaa: 45,55,00,f6,30      ad3w  R30,Rf6,55       R30 = UPSTM1; }
6eaf: ef,6c,db            call  4a1e             Sub_4a1e ();
6eb2: d3,2b               jnc   6edf             if (R42 >= [R30+2])  {
6eb4: b3,e4,c9,30         ldb   R30,[Re4+c9]     R30 = [149];
6eb8: 9b,f6,5b,30         cmpb  R30,[Rf6+5b]     
6ebc: db,03               jc    6ec1             if (R30 < UPSWOT=0)  {
6ebe: 3a,a5,1e            jb    B2,Ra5,6edf      if (B2_APT_a5 = 1) goto 6edf; }
6ec1: 37,24,0a            jnb   B7,R24,6ece      if (B7_HUMTMR_FLG_24 = 1)  {
6ec4: b3,e4,cc,30         ldb   R30,[Re4+cc]     R30 = HMUTMR;
6ec8: 9b,f6,54,30         cmpb  R30,[Rf6+54]     
6ecc: d3,11               jnc   6edf             if (R30 < UPSMAP=0) goto 6edf; }
6ece: 9b,f6,53,00         cmpb  R0,[Rf6+53]      
6ed2: df,03               je    6ed7             if (T70LSW != 0)  {
6ed4: 3a,9f,08            jb    B2,R9f,6edf      if (B2_OLFLG = 1) goto 6edf; }
6ed7: 91,04,25            orb   R25,4            CHKAIR = 1;                       # (not forced O.L.)
6eda: 71,bf,47            an2b  R47,bf           B6_AM2_47 = 0;                    # (downstream air)
6edd: 20,03               sjmp  6ee2             goto 6ee2; } } } }

6edf: 91,40,47            orb   R47,40           B6_AM2_47 = 1;                    # (upstream air)
6ee2: 91,01,46            orb   R46,1            AM1 = 1;
6ee5: f0                  ret                    return;

   CANP_COM4:
6ee6: 71,df,25            an2b  R25,df           B5_R25 = 0;                       # CANISTER PURGE CONTROL LOGIC
6ee9: 3f,a5,33            jb    B7,Ra5,6f1f      if (b7_CRKFLG_a5 = 0)  {
6eec: 8b,f6,36,d2         cmpw  Rd2,[Rf6+36]     
6ef0: d3,2d               jnc   6f1f             if (NACTMR >= EVTDOT)  {
6ef2: 32,9f,06            jnb   B2,R9f,6efb      if (B2_OLFLG = 1)  {
6ef5: 9b,f6,38,00         cmpb  R0,[Rf6+38]      
6ef9: df,24               je    6f1f             if (PURGSW = 0) goto 6f1f; }
6efb: 3a,a0,06            jb    B2,Ra0,6f04      if (B2_WRMEGO_a0 = 0)  {
6efe: 9b,f6,35,b6         cmpb  Rb6,[Rf6+35]     
6f02: da,1b               jle   6f1f             if (ECT <= PURECT) goto 6f1f; }
6f04: 38,a6,18            jb    B0,Ra6,6f1f      if (B0_ETV_ERROR_a6 = 0)  {
6f07: a3,f4,58,38         ldw   R38,[Rf4+58]     R38 = NLMT;
6f0b: 88,38,b4            cmpw  Rb4,R38          
6f0e: db,0f               jc    6f1f             if (N_RPM < R38)  {
6f10: ef,d3,d9            call  48e6             UUWFuncLU_48e6 (
6f13: 44,61                     #arg 1              FN605A,
6f15: 9a,00                     #arg 2              AM );
6f17: a0,38,16            ldw   R16,R38          R16 = R38;
6f1a: 98,00,16            cmpb  R16,R0           
6f1d: d9,0b               jgtu  6f2a             if (R16 > 0) goto 6f2a; } } } } } }
6f1f: 71,7f,29            an2b  R29,7f           B7_PURGING_29 = 0;
6f22: 01,38               clrw  R38              R38 = 0;
6f24: c3,e4,76,00         stw   R0,[Re4+76]      PURGDC = 0;
6f28: 20,10               sjmp  6f3a             goto 6f3a; }

6f2a: 91,80,29            orb   R29,80           B7_PURGING_29 = 1;
6f2d: ef,40,d9            call  4870             UUYFuncLU_4870 (
6f30: 37,61                     #arg 1              FN600,
6f32: 14,02                     #arg 2              PRGTMR );
6f34: 7c,16,38            ml2b  R38,R16          wR38 *= R16;
6f37: 09,01,38            shlw  R38,1            R38 <<= 1;

# PURGE DUTY CYCLE DECREMENT/INCREMENT LOGIC
6f3a: 3e,44,04            jb    B6,R44,6f41      if (B6_LIMIT_PURGE_44 = 0)  {
6f3d: c3,e4,76,38         stw   R38,[Re4+76]     PURGDC = R38; }
6f41: a0,38,30            ldw   R30,R38          R30 = R38;
6f44: a3,e4,76,3c         ldw   R3c,[Re4+76]     R3c = PURGDC;
6f48: b3,ee,84,42         ldb   R42,[Ree+84]     R42 = KAM_BIT_FLAGS;
6f4c: 3d,42,36            jb    B5,R42,6f85      if (B5_R42 = 0)  {
6f4f: bc,b7,42            ldsbw R42,Rb7          swR42 = ACT;
6f52: ef,86,d9            call  48db             SUWFuncLU_48db (
6f55: 64,a0                     #arg 1              FN603,
6f57: 42,00                     #arg 2              42 );
6f59: 88,96,38            cmpw  R38,R96          
6f5c: d9,03               jgtu  6f61             if (R38 <= LAMBSE1)  {
6f5e: 32,9f,24            jnb   B2,R9f,6f85      if (B2_OLFLG = 0) goto 6f85; }
6f61: af,fe,43,36         ldzbw R36,[Rfe+43]     wR36 = MINADP;
6f65: 65,80,00,36         ad2w  R36,80           R36 += 80;
6f69: 77,f6,34,36         ad2b  R36,[Rf6+34]     R36 += PURG_ADP_SF;
6f6d: b5,00,37            adcb  R37,0            R37 += CY;
6f70: 8b,e4,f6,36         cmpw  R36,[Re4+f6]     
6f74: d3,03               jnc   6f79             if (R36 >= KAMRF1)  {
6f76: 37,a7,0c            jnb   B7,Ra7,6f85      if (B7_FMEM_FLAG2 = 0) goto 6f85; }
6f79: b0,b6,42            ldb   R42,Rb6          R42 = ECT;
6f7c: 9b,f6,30,42         cmpb  R42,[Rf6+30]     
6f80: d1,0d               jleu  6f8f             if (R42 <= PURECT1) goto 6f8f;
6f82: 3a,a0,0a            jb    B2,Ra0,6f8f      if (B2_WRMEGO_a0 = 1) goto 6f8f; } } }
6f85: 6b,f6,32,3c         sb2w  R3c,[Rf6+32]     R3c -= PRG_DEC;
6f89: db,08               jc    6f93             if (R3c >= 0) goto 6f93;
6f8b: 01,3c               clrw  R3c              R3c = 0;
6f8d: 20,0c               sjmp  6f9b             goto 6f9b; } }

6f8f: 67,f6,32,3c         ad2w  R3c,[Rf6+32]     R3c += PRG_DEC; }
6f93: 88,30,3c            cmpw  R3c,R30          
6f96: d3,03               jnc   6f9b             if (R3c >= R30)  {
6f98: a0,30,3c            ldw   R3c,R30          R3c = R30; }
6f9b: c3,e4,76,3c         stw   R3c,[Re4+76]     PURGDC = R3c;
6f9f: 71,bf,44            an2b  R44,bf           B6_LIMIT_PURGE_44 = 0;
6fa2: 88,30,3c            cmpw  R3c,R30          
6fa5: df,03               je    6faa             if (R3c != R30)  {
6fa7: 91,40,44            orb   R44,40           B6_LIMIT_PURGE_44 = 1; }
6faa: 88,00,3c            cmpw  R3c,R0           
6fad: df,03               je    6fb2             if (R3c != 0)  {
6faf: 91,20,25            orb   R25,20           B5_R25 = 1; }
   Update_Can_Purge:
6fb2: b1,a2,38            ldb   R38,a2           R38 = a2;
6fb5: c7,e6,90,38         stb   R38,[Re6+90]     [210] = R38;                      # 210
6fb9: 7f,e4,77,38         ml2b  R38,[Re4+77]     wR38 *= [1f7];
6fbd: 09,01,38            shlw  R38,1            R38 <<= 1;
6fc0: c7,e6,91,39         stb   R39,[Re6+91]     [211] = R39;
6fc4: f0                  ret                    return;

6fc5: ff                  ???   

ERROR CODE DESCRIPTION
6fc6: 12,01               word    112                                              # 112,254 deg. ind. ACT-ckt. grounded.
6fc8: 13,01               word    113                                              # 113,-40 deg. ind. ACT-sensor ckt. open.
6fca: 17,01               word    117                                              # 117,254 deg. ind. ECT-ckt. grounded.
6fcc: 18,01               word    118                                              # 118,-40 deg. ind. ECT-sensor ckt. open.
6fce: 22,01               word    122                                              # 122,TPS ckt. below minimum voltage.
6fd0: 23,01               word    123                                              # 123,TPS ckt. above max. voltage.
6fd2: 26,01               word    126                                              # 126,MAP/BP out of S-T range.
6fd4: 28,01               word    128                                              # 128,MAP vacuum circuit failure
6fd6: 71,01               word    171                                              # 171,Heated oxygen sensor fault/not switching bank #1 or fuel system at adaptive limits
6fd8: 72,01               word    172                                              # 172,EGO sensor ckt. ind. system lean.
6fda: 73,01               word    173                                              # 173,EGO sensor ckt. ind. system rich.
6fdc: 79,01               word    179                                              # 179,Adaptive Fuel Limit Lean
6fde: 81,01               word    181                                              # 181,Adaptive Fuel Limit Rich
6fe0: 82,01               word    182                                              # 182,Adaptive Fuel Limit Lean @idle
6fe2: 83,01               word    183                                              # 183,Adaptive Fuel Limit Rich @idle
6fe4: 11,02               word    211                                              # 211,PIP ckt. fault.
6fe6: 12,02               word    212                                              # 212,Loss of tach input to processor.
6fe8: 27,03               word    327                                              # 327,EPT/EVP below min. voltage.
6fea: 28,03               word    328                                              # 328,EVP volt below closed lim (SONIC)
6fec: 32,03               word    332                                              # 332,EGR valve not opening (SONIC).
6fee: 34,03               word    334                                              # 334,EVP volt. above closed limit.
6ff0: 37,03               word    337                                              # 337,EVP ckt. above max volt.
6ff2: 38,03               word    338                                              # 338,Cooling System not Heating
6ff4: 39,03               word    339                                              # 339,Cooling System not Cooling
6ff6: 52,04               word    452                                              # 452,Insufficient input from VSS.
6ff8: 36,05               word    536                                              # 536,BOO Sw. Ckt failed open/closed -ECA input open or brake not actuated during test
6ffa: 42,05               word    542                                              # 542,FP Ckt Open -ECA to Motor Ground
6ffc: 43,05               word    543                                              # 543,FP Ckt Open Bat. to Relay
6ffe: 56,05               word    556                                              # 556,Fuel pump ckt. failure.
7000: 17,06               word    617                                              # 617,1-2 Shift Error
7002: 18,06               word    618                                              # 618,2-3 Shift Error
7004: 19,06               word    619                                              # 619,3-4 Shift Error
7006: 24,06               word    624                                              # 624,EPC Solenoid Circuit Failure/Shor-Output Driver
7008: 28,06               word    628                                              # 628,Converter Clutch Failure
700a: 34,06               word    634                                              # 634,MLPS Out of Range
700c: 37,06               word    637                                              # 637,-40 deg. ind. TOT sensor ckt open
700e: 38,06               word    638                                              # 638,315 Deg ind. TOT sensor ckt grounded    X
7010: 57,06               word    657                                              # ,
7012: 59,06               word    659                                              # ,
7014: 91,06               word    691                                              # ,

   VO_I_EXEC_COM2:
7016: 71,fb,2c            an2b  R2c,fb           B2_VIP_FP_OVERRIDE = 0;           # (make sure base strategy can control pump)
7019: 2a,16               scall 7231             EGR_SELECT_LOGIC ();
701b: 71,ef,2e            an2b  R2e,ef           WIGFLG = 0;
701e: 37,46,05            jnb   B7,R46,7026      if (PUMP = 1)  {
7021: 3c,2d,0c            jb    B4,R2d,7030      if (B4_R2d = 1) goto 7030;
7024: 20,03               sjmp  7029             goto 7029; }

7026: 34,2d,07            jnb   B4,R2d,7030      if (B4_R2d = 1)  {
7029: 95,10,2d            xorb  R2d,10           B4_R2d ^= 1;
702c: c7,e4,40,00         stb   R0,[Re4+40]      [1c0] = 0; } }
7030: 3a,2a,0c            jb    B2,R2a,703f      if (VIP_ENABLE = 0)  {
7033: a3,e4,b6,42         ldw   R42,[Re4+b6]     R42 = PUTMR;
7037: 99,10,43            cmpb  R43,10           
703a: d3,03               jnc   703f             if (R43 >= 10)  {                 # PUTMR >= 4 SEC
703c: 91,04,2a            orb   R2a,4            VIP_ENABLE = 1; } }
703f: 36,2a,17            jnb   B6,R2a,7059      if (B6_NO_START_2a = 1)  {
7042: 33,45,08            jnb   B3,R45,704d      if (STIFLG = 1)  {
7045: 37,a5,0e            jnb   B7,Ra5,7056      if (b7_CRKFLG_a5 = 0) goto 7056;
7048: 91,20,e0            orb   Re0,20           B5_VFS_OUT_FLG_e0 = 1;
704b: 20,84               sjmp  70d1             goto 70d1; }

704d: 3b,2b,03            jb    B3,R2b,7053      if (STO_WORKING = 0)  {
7050: 35,48,03            jnb   B5,R48,7056      if (STO_TRIGGER = 0) goto 7056; }
7053: ef,5e,0b            call  7bb4             VIP_CODE_ERASE (); } }
7056: e7,af,17            jump  8808             goto 8808; }

7059: 35,2a,23            jnb   B5,R2a,707f      if (?RUNNING? = 1)  {
705c: 39,a3,03            jb    B1,Ra3,7062      if (B1_STI_RESET_a3 = 0)  {
705f: 33,45,f4            jnb   B3,R45,7056      if (STIFLG = 0) goto 7056; }
7062: b3,fe,2d,42         ldb   R42,[Rfe+2d]     R42 = TRLOAD;
7066: 99,03,42            cmpb  R42,3            
7069: d3,03               jnc   706e             if (R42 >= 3)  {
706b: 3e,9f,e8            jb    B6,R9f,7056      if (B6_NDSFLG_9f = 1) goto 7056; }
706e: 9b,fe,2f,00         cmpb  R0,[Rfe+2f]      
7072: df,09               je    707d             if (VSTYPE != 0)  {
7074: b0,8d,42            ldb   R42,R8d          R42 = VSBAR;
7077: 9b,f0,37,42         cmpb  R42,[Rf0+37]     
707b: d9,d9               jgtu  7056             if (R42 > MINMPH) goto 7056; }
707d: 20,41               sjmp  70c0             goto 70c0; }

707f: 3f,a5,49            jb    B7,Ra5,70cb      if (b7_CRKFLG_a5 = 0)  {
7082: 3e,a5,03            jb    B6,Ra5,7088      if (UNDSP = 0)  {
7085: 3b,45,02            jb    B3,R45,708a      if (STIFLG = 1) goto 708a; }
7088: 20,53               sjmp  70dd             return; }

708a: a3,e4,3c,42         ldw   R42,[Re4+3c]     R42 = TSSTIL_TMR;
708e: 99,04,43            cmpb  R43,4            
7091: d3,4a               jnc   70dd             if (R43 < 4) return;
7093: 32,2a,47            jnb   B2,R2a,70dd      if (VIP_ENABLE = 0) return;
7096: a3,e4,b6,42         ldw   R42,[Re4+b6]     R42 = PUTMR;
709a: 99,18,43            cmpb  R43,18           
709d: d3,3e               jnc   70dd             if (R43 < 18) return;
709f: 3b,2a,38            jb    B3,R2a,70da      if (DISABLE_RUNNING = 1) goto 70da;
70a2: b3,fe,2d,42         ldb   R42,[Rfe+2d]     R42 = TRLOAD;
70a6: 99,03,42            cmpb  R42,3            
70a9: d3,03               jnc   70ae             if (R42 >= 3)  {
70ab: 3e,9f,19            jb    B6,R9f,70c7      if (B6_NDSFLG_9f = 1) goto 70c7; }
70ae: 9b,fe,2f,00         cmpb  R0,[Rfe+2f]      
70b2: df,09               je    70bd             if (VSTYPE != 0)  {
70b4: b0,8d,42            ldb   R42,R8d          R42 = VSBAR;
70b7: 9b,f0,37,42         cmpb  R42,[Rf0+37]     
70bb: d9,0a               jgtu  70c7             if (R42 > MINMPH) goto 70c7; }    # (Vehicle moving)  
70bd: 91,20,2a            orb   R2a,20           ?RUNNING? = 1;
70c0: 28,1c               scall 70de             Sub_70de ();
70c2: cb,3b,fc,72         push  [R3a+72fc]       push([R3a+72fc]);
70c6: f0                  ret                    return; } }

70c7: 91,08,2a            orb   R2a,8            DISABLE_RUNNING = 1;              # EXIT CONDITIONS TRUE
70ca: f0                  ret                    return; }

70cb: 33,45,0f            jnb   B3,R45,70dd      if (STIFLG = 0) return;
70ce: 3c,2a,09            jb    B4,R2a,70da      if (DISABLE_NOSTART = 0)  {
70d1: 28,0b               scall 70de             Sub_70de ();
70d3: cb,3b,de,72         push  [R3a+72de]       push([R3a+72de]);
70d7: f0                  ret                    return;

   Sub_70d8:
70d8: 21,36               sjmp  7210             goto Set_DiagCodes; } }

70da: 91,10,2e            orb   R2e,10           WIGFLG = 1; } } } }
70dd: f0                  ret                    return;

######################################
# gets jump function index into R3A
#######################################
   Sub_70de:
70de: 29,0b               scall 71eb             Get_DiagCodes ();                 # load diagnostic testing registers
70e0: ac,38,3a            ldzbw R3a,R38          wR3a = yR38;                      # function address index
70e3: 09,01,3a            shlw  R3a,1            R3a <<= 1;                        # X 2 - make into word index
70e6: cc,42               pop   R42              R42 = pop();                      # original return address
70e8: c9,d8,70            push  70d8             push(Sub_70d8);                   # push extra address (save diag vals)
70eb: 88,00,40            cmpw  R40,R0                                             # Zero 1st time only, This is return address of call x7026
70ee: df,02               je    70f2             if (R40 != 0)  {                  # jump if first time thru here
70f0: 20,e5               sjmp  71d7             goto 71d7; }                      # return to 1st or 3rd caller

70f2: c8,42               push  R42              push(R42);                        # restore return address
70f4: f0                  ret                    return;

# Diagnostic Proc Table A
   Sub_70f5:
70f5: a1,10,55,ac         ldw   Rac,5510         VIP_code = 5510;                  # Diagnostic Proc Table A proc no 2
70f9: 7b,f6,05,ac         sb2b  Rac,[Rf6+5]      VIP_code -= ENGCYL;
70fd: 08,ac,ac            shrw  Rac,Rac          VIP_code >>= VIP_code;
7100: 28,08               scall 710a             Sub_710a ();
7102: 20,70               sjmp  7174             goto 7174;

   Sub_7104:
7104: ad,02,ac            ldzbw Rac,2            VIP_code = 2;
7107: 91,01,2f            orb   R2f,1            B0_GOOSE = 1;
   Sub_710a:
710a: 91,02,2f            orb   R2f,2            B1_OneDigit_output? = 1;
710d: 28,b2               scall 71c1             Sub_71c1 ();
710f: 71,fd,2f            an2b  R2f,fd           B1_OneDigit_output? = 0;
7112: f0                  ret                    return;

####################################################################
# Diagnostic proc Table A
# sensor error stack processing - dump out errors?
####################################################################
   StackErrorCodes:
7113: b1,10,19            ldb   R19,10           R19 = 10;
7116: 88,30,00            cmpw  R0,R30           
7119: d7,05               jne   7120             if (R30 = 0)  {
711b: ef,ab,0f            call  80c9             SET_SERVICE_CODE (
711e: 11,01                     #arg 1              111 ); }                       # E11 - System PASS
7120: ef,a6,0f            call  80c9             SET_SERVICE_CODE (
7123: 00,00                     #arg 1              0 );                           # E 00 (end of errors? )
7125: d3,f9               jnc   7120             if (R30 <= ffff) goto 7120;
7127: 91,08,52            orb   R52,8            B3_Flags_52 = 1;
712a: a1,90,02,30         ldw   R30,290          R30 = Fault_Code_Buffer02;        # Hard Trouble Code Error Table
712e: a2,31,32            ldw   R32,[R30++]      R32 = [R30++];                    # load next trouble code byte into word R32
7131: 28,44               scall 7177             Sub_7177 ();
7133: 8a,30,00            cmpw  R0,[R30]         
7136: d7,f6               jne   712e             if ([R30] != 0) goto 712e;
7138: 30,2b,15            jnb   B0,R2b,7150      if (STO_HighSpeed = 1)  {
713b: 31,2e,05            jnb   B1,R2e,7143      if (Kflg_local = 1)  {
713e: b1,04,33            ldb   R33,4            R33 = 4;
7141: 21,14               sjmp  7257             goto 7257; }

7143: 28,71               scall 71b6             Sub_71b6 ();
7145: 71,fe,2b            an2b  R2b,fe           STO_HighSpeed = 0;
7148: 32,2b,24            jnb   B2,R2b,716f      if (STO_Lowspeed = 0) goto 716f;
714b: b1,08,19            ldb   R19,8            R19 = 8;
714e: 27,da               sjmp  712a             goto 712a; }

7150: 32,2b,0e            jnb   B2,R2b,7161      if (STO_Lowspeed = 1)  {
7153: 71,fb,2b            an2b  R2b,fb           STO_Lowspeed = 0;
7156: 36,2a,03            jnb   B6,R2a,715c      if (B6_NO_START_2a = 1)  {
7159: 91,02,2e            orb   R2e,2            Kflg_local = 1; }
715c: 31,2b,10            jnb   B1,R2b,716f      if (STO_Lowspeed_r = 0) goto 716f;
715f: 27,c9               sjmp  712a             goto 712a; }

7161: 31,2b,10            jnb   B1,R2b,7174      if (STO_Lowspeed_r = 0) goto 7174;
7164: 31,2e,08            jnb   B1,R2e,716f      if (Kflg_local = 1)  {
7167: 91,04,2b            orb   R2b,4            STO_Lowspeed = 1;
716a: b1,0a,33            ldb   R33,a            R33 = a;
716d: 20,e8               sjmp  7257             goto 7257; } } }

716f: 71,fd,2b            an2b  R2b,fd           STO_Lowspeed_r = 0;
7172: 28,42               scall 71b6             Sub_71b6 (); }
7174: e7,8d,12            jump  8404             goto EXIT;

#######################################################
# ? DUMPS OUT HARD ERROR CODES?
# R32 byte has trouble code - called for every trouble code in 342 stack
#######################################################
   Sub_7177:
7177: ad,03,34            ldzbw R34,3            wR34 = 3;
717a: 30,2b,0b            jnb   B0,R2b,7188      if (STO_HighSpeed = 1)  {
717d: b0,33,1a            ldb   R1a,R33          R1a = R33;
7180: 11,33               clrb  R33              R33 = 0;
7182: 09,04,32            shlw  R32,4            R32 <<= 4;                        # error code x 16 (left one hex digit)
7185: 90,1a,32            orb   R32,R1a          R32 |= R1a; }
   Sub_7188:
7188: 17,33               incb  R33              R33++;
718a: 20,04               sjmp  7190             goto 7190;

718c: 28,1c               scall 71aa             Sub_71aa ();                      # execute this loop error code X 16 + 1? times
718e: 28,1d               scall 71ad             Sub_71ad ();
7190: e0,33,f9            djnz  R33,718c         R33--;
                                                 if (R33 != 0) goto 718c;
7193: b1,03,33            ldb   R33,3            R33 = 3;
7196: 28,15               scall 71ad             Sub_71ad ();
7198: e0,33,fb            djnz  R33,7196         R33--;
                                                 if (R33 != 0) goto 7196;
719b: 09,04,32            shlw  R32,4            R32 <<= 4;
719e: e0,34,e7            djnz  R34,7188         R34--;
                                                 if (R34 != 0) goto Sub_7188;
71a1: b1,04,33            ldb   R33,4            R33 = 4;
   Sub_71a4:
71a4: 28,07               scall 71ad             Sub_71ad ();
71a6: e0,33,fb            djnz  R33,71a4         R33--;
                                                 if (R33 != 0) goto Sub_71a4;
71a9: f0                  ret                    return;

#######################################################
# entry point 1
# shift D4 right 16 times or until R19 == 0
######################################################
   Sub_71aa:
71aa: 91,80,ad            orb   Rad,80           B7_Rad = 1;
   Sub_71ad:
71ad: e0,19,02            djnz  R19,71b2         R19--;
                                                 if (R19 != 0) goto 71b2;
71b0: 20,0f               sjmp  71c1             goto Sub_71c1; }

71b2: 08,01,ac            shrw  Rac,1            VIP_code >>= 1;
71b5: f0                  ret                    return;

   Sub_71b6:
71b6: 3c,19,07            jb    B4,R19,71c0      if (B4_R19 = 0)  {
71b9: 15,19               decb  R19              R19--;
71bb: 08,19,ac            shrw  Rac,R19          VIP_code >>= R19;
71be: 28,01               scall 71c1             Sub_71c1 (); }
71c0: f0                  ret                    return;

#######################################################
# this proc can shortcut returns from stack - to grandcaller
#######################################################
   Sub_71c1:
71c1: cc,40               pop   R40              R40 = pop();
71c3: cc,14               pop   R14              R14 = pop();
71c5: 71,ef,2b            an2b  R2b,ef           STO_fast = 0;
71c8: 30,2b,03            jnb   B0,R2b,71ce      if (STO_HighSpeed = 1)  {
71cb: 91,10,2b            orb   R2b,10           STO_fast = 1; }
71ce: b1,10,19            ldb   R19,10           R19 = 10;
71d1: 91,20,2b            orb   R2b,20           STO_code = 1;
71d4: 91,20,48            orb   R48,20           STO_TRIGGER = 1;
71d7: 3d,48,10            jb    B5,R48,71ea      if (STO_TRIGGER = 0)  {
71da: 31,2f,03            jnb   B1,R2f,71e0      if (B1_OneDigit_output? = 1)  {
71dd: 3b,2b,0a            jb    B3,R2b,71ea      if (STO_WORKING = 1) return; }
71e0: c8,14               push  R14              push(R14);
71e2: c8,40               push  R40              push(R40);
71e4: 01,40               clrw  R40              R40 = 0;
71e6: 28,28               scall 7210             Set_DiagCodes ();
71e8: 01,ac               clrw  Rac              VIP_code = 0; } }
71ea: f0                  ret                    return;

   Get_DiagCodes:
71eb: a3,e4,32,30         ldw   R30,[Re4+32]     R30 = CODE_CNT_EX;
71ef: a3,e4,0e,32         ldw   R32,[Re4+e]      R32 = CODE_OUT_L_EX;
71f3: a3,e4,0a,34         ldw   R34,[Re4+a]      R34 = VIP_NRM_EX;
71f7: a3,e4,0c,36         ldw   R36,[Re4+c]      R36 = VIP_NRM2_EX;
71fb: b3,e4,29,38         ldb   R38,[Re4+29]     R38 = VIP_CNT_EX;
71ff: a3,e4,2a,40         ldw   R40,[Re4+2a]     R40 = VIP_STACK_EX;
7203: a3,e4,2c,14         ldw   R14,[Re4+2c]     R14 = VIP_STACK_X2;
7207: b3,e4,41,18         ldb   R18,[Re4+41]     R18 = VIP_TIMER_EX;
720b: b3,e4,10,19         ldb   R19,[Re4+10]     R19 = SHIFT_CNT_EX;
720f: f0                  ret                    return;

   Set_DiagCodes:
7210: c3,e4,32,30         stw   R30,[Re4+32]     CODE_CNT_EX = R30;
7214: c3,e4,0e,32         stw   R32,[Re4+e]      CODE_OUT_L_EX = R32;
7218: c3,e4,0a,34         stw   R34,[Re4+a]      VIP_NRM_EX = R34;
721c: c3,e4,0c,36         stw   R36,[Re4+c]      VIP_NRM2_EX = R36;
7220: c7,e4,29,38         stb   R38,[Re4+29]     VIP_CNT_EX = R38;
7224: c3,e4,2a,40         stw   R40,[Re4+2a]     VIP_STACK_EX = R40;
7228: c3,e4,2c,14         stw   R14,[Re4+2c]     VIP_STACK_X2 = R14;
722c: c7,e4,10,19         stb   R19,[Re4+10]     SHIFT_CNT_EX = R19;
7230: f0                  ret                    return;

   EGR_SELECT_LOGIC:
7231: 45,ff,00,fe,e2      ad3w  Re2,Rfe,ff       Re2 = cc59;
7236: b3,fe,29,42         ldb   R42,[Rfe+29]     R42 = PFEHP;
723a: 71,ef,9e            an2b  R9e,ef           B4_EGREN_9e = 0;
723d: 98,42,00            cmpb  R0,R42           
7240: df,03               je    7245             if (R42 != 0)  {
7242: 91,10,9e            orb   R9e,10           B4_EGREN_9e = 1; }
   TRANS_SELECT_LOGIC:
7245: b1,04,22            ldb   R22,4            R22 = 4;
7248: 9b,fe,2c,22         cmpb  R22,[Rfe+2c]     
724c: d7,05               jne   7253             if (R22 = TSTRAT)  {
724e: 91,02,9e            orb   R9e,2            B1_E4OD_9e = 1;
7251: 20,03               sjmp  7256             return; }

7253: 71,fd,9e            an2b  R9e,fd           B1_E4OD_9e = 0;
7256: f0                  ret                    return;

7257: 2f,4b               scall 71a4             Sub_71a4 ();
7259: ad,02,34            ldzbw R34,2            wR34 = 2;
725c: a1,00,01,32         ldw   R32,100          R32 = 100;
7260: 2f,26               scall 7188             Sub_7188 ();
7262: 01,30               clrw  R30              R30 = 0;
7264: a0,30,42            ldw   R42,R30          R42 = R30;
7267: 2f,a7               scall 7210             Set_DiagCodes ();
7269: 28,1f               scall 728a             Sub_728a ();
726b: 2f,7e               scall 71eb             Get_DiagCodes ();
726d: a0,42,30            ldw   R30,R42          R30 = R42;
7270: 44,3a,00,32         ad3w  R32,R0,R3a       R32 = R3a;
7274: df,04               je    727a             if (R32 != 0)  {
7276: 2e,ff               scall 7177             Sub_7177 ();
7278: 27,ea               sjmp  7264             goto 7264; }

727a: 38,2b,08            jb    B0,R2b,7285      if (STO_HighSpeed = 0)  {
727d: 32,2b,05            jnb   B2,R2b,7285      if (STO_Lowspeed = 1)  {
7280: 71,fb,2b            an2b  R2b,fb           STO_Lowspeed = 0;
7283: 27,dd               sjmp  7262             goto 7262; } }

7285: 71,fd,2e            an2b  R2e,fd           Kflg_local = 0;
7288: 26,b9               sjmp  7143             goto 7143;

   Sub_728a:
728a: 01,3a               clrw  R3a              R3a = 0;
728c: 89,28,00,42         cmpw  R42,28           
7290: db,4a               jc    72dc             if (R42 < 28)  {
7292: 88,42,00            cmpw  R0,R42           
7295: d7,0b               jne   72a2             if (R42 = 0)  {
7297: a1,12,05,3a         ldw   R3a,512          R3a = 512;                        # 512, KAM Test Failed
729b: 3e,2d,3a            jb    B6,R2d,72d8      if (VIP_KAM = 1) goto 72d8;
729e: a1,11,01,3a         ldw   R3a,111          R3a = 111; }                      # 111, PASS 
72a2: a0,42,30            ldw   R30,R42          R30 = R42;
72a5: 08,03,30            shrw  R30,3            R30 >>= 3;
72a8: b3,31,19,07,32      ldb   R32,[R30+719]    R32 = [R30+719];
72ad: 51,07,42,30         an3b  R30,R42,7        R30 = R42 & 7;
72b1: 18,30,32            shrb  R32,R30          R32 >>= R30;
72b4: b1,08,34            ldb   R34,8            R34 = 8;
72b7: 78,30,34            sb2b  R34,R30          R34 -= R30;
72ba: 89,28,00,42         cmpw  R42,28           
72be: db,1c               jc    72dc             if (R42 >= 28) return;
72c0: a0,42,30            ldw   R30,R42          R30 = R42;
72c3: 09,01,30            shlw  R30,1            R30 <<= 1;
72c6: 07,42               incw  R42              R42++;
72c8: 18,01,32            shrb  R32,1            R32 >>= 1;
72cb: d3,06               jnc   72d3             if (B0_R32 = 1)  {
72cd: a3,31,c6,6f,3a      ldw   R3a,[R30+6fc6]   R3a = [R30+6fc6];
72d2: f0                  ret                    return; }

72d3: e0,34,e4            djnz  R34,72ba         R34--;
                                                 if (R34 != 0) goto 72ba;
72d6: 27,ca               sjmp  72a2             goto 72a2; }

72d8: a1,28,00,42         ldw   R42,28           R42 = 28; } }
72dc: f0                  ret                    return;

72dd: ff                  nop                    

72de: a1,7c               vect  7ca1             VO_EOTS_COM1
72e0: ed,7c               vect  7ced             Sub_7ced
72e2: 3a,7d               vect  7d3a             TEST_AD_SWITCHES_1
72e4: 9e,7d               vect  7d9e             TEST_AD_SWITCHES_2
72e6: d7,7e               vect  7ed7             VO_OCC_COM12
72e8: a1,7e               vect  7ea1             VO_FPM_COM2_TEST_1_2
72ea: c3,7e               vect  7ec3             VO_FPM_COM2_TEST_3
72ec: fe,7f               vect  7ffe             VO_EPC_SOLENOID_COM1
72ee: 16,80               vect  8016             VO_EPC_SOLENOID_COM1_624
72f0: 32,80               vect  8032             Sub_8032
72f2: 38,80               vect  8038             VO_EPC_SOLENOID_COM1_625
72f4: fc,80               vect  80fc             Sub_80fc
72f6: 13,71               vect  7113             StackErrorCodes
72f8: 57,80               vect  8057             Sub_8057
72fa: 75,80               vect  8075             Sub_8075
72fc: 02,81               vect  8102             VR_RUN_INIT_COM8
72fe: f5,70               vect  70f5             Sub_70f5
7300: 95,81               vect  8195             VR_HICAM_ISC_COM2
7302: b8,81               vect  81b8             Sub_81b8
7304: fd,81               vect  81fd             VR_EGO_COM1
7306: 1a,82               vect  821a             Sub_821a
7308: 2f,82               vect  822f             Sub_822f
730a: 4f,82               vect  824f             VR_THERMAIR_COM2
730c: 6a,82               vect  826a             AIR_UPSTREAM
730e: 7c,82               vect  827c             AIR_DOWNSTREAM
7310: 8f,82               vect  828f             BLOCK_F2_VR_THERMAIR_COM2
7312: 0c,83               vect  830c             VR_SPARK_COM1_SAF
7314: 18,83               vect  8318             VR_SPARK_COM1_NBAR
7316: 26,83               vect  8326             VR_SPARK_COM1_213
7318: 5a,83               vect  835a             DELAY_SEC(VSPTD)
731a: 69,83               vect  8369             VR_EGR_COM6
731c: 93,83               vect  8393             VR_EGR_COM6_332
731e: 0b,84               vect  840b             VR_LOW_ISC_COM4
7320: 18,84               vect  8418             VR_LOW_ISC_COM4_411
7322: 26,84               vect  8426             VR_GOOSE_SD_COM1
7324: 53,84               vect  8453             VR_GOOSE_SD_COM1_SET_CODE_xxx
7326: 6e,84               vect  846e             VR_GOOSE_SD_COM1_G1
7328: 13,71               vect  7113             StackErrorCodes
732a: 82,85               vect  8582             Sub_8582
732c: 82,85               vect  8582             Sub_8582
732e: 82,85               vect  8582             Sub_8582
7330: 82,85               vect  8582             Sub_8582
7332: a9,85               vect  85a9             Sub_85a9
7334: d1,85               vect  85d1             Sub_85d1
7336: e3,85               vect  85e3             Sub_85e3
7338: 02,88               vect  8802             Sub_8802
733a: 38,85               vect  8538             Sub_8538
733c: 13,71               vect  7113             StackErrorCodes
733e: 02,88               vect  8802             Sub_8802

   Check_Sensors:
7340: 2e,ef               scall 7231             EGR_SELECT_LOGIC ();
7342: ef,52,14            call  8797             VC_MIL_SD_COM1 ();
7345: 71,df,2f            an2b  R2f,df           B5_DISABLE_ISC_2f = 0;
7348: 71,ef,2f            an2b  R2f,ef           B4_VRUN_ISCFLG_2f = 0;
734b: 71,fe,a3            an2b  Ra3,fe           B0_V_MODE_SETUP_a3 = 0;
734e: 3a,2a,02            jb    B2,R2a,7353      if (VIP_ENABLE = 0)  {
7351: 20,63               sjmp  73b6             goto 73b6; }

7353: 71,fb,2f            an2b  R2f,fb           B2_VIP_flags4 = 0;
7356: b3,fe,7b,42         ldb   R42,[Rfe+7b]     R42 = V_FPMFLG;
735a: e0,42,19            djnz  R42,7376         R42--;
                                                 if (R42 != 0) goto 7376;
735d: 37,46,1d            jnb   B7,R46,737d      if (PUMP = 0) goto 737d;
7360: 3e,a5,03            jb    B6,Ra5,7366      if (UNDSP = 0)  {
7363: 91,20,2e            orb   R2e,20           RMSPRU? = 1; }
7366: 3b,90,0d            jb    B3,R90,7376      if (B3_FPM_90 = 0)  {
7369: b3,e4,40,42         ldb   R42,[Re4+40]     R42 = [1c0];
736d: 9b,fe,7d,42         cmpb  R42,[Rfe+7d]     
7371: d3,03               jnc   7376             if (R42 >= V_FPMTM)  {
7373: 91,04,2f            orb   R2f,4            B2_VIP_flags4 = 1; } } }
7376: ef,85,07            call  7afe             ?Fault_Filter_Routine? (
7379: 1b                        #arg 1              1b,
737a: 80                        #arg 2              80 );
737b: 20,2c               sjmp  73a9             goto 73a9; }

737d: 35,2e,19            jnb   B5,R2e,7399      if (RMSPRU? = 1)  {
7380: 71,df,2e            an2b  R2e,df           RMSPRU? = 0;
7383: ef,65,fe            call  71eb             Get_DiagCodes ();
7386: ef,5c,0c            call  7fe5             Sub_7fe5 ();
7389: c9,94,73            push  7394             push(Sub_7394);
738c: ef,c2,0b            call  7f51             VO_OCC_COM12_Func1 (
738f: 04,00                     #arg 1              4,
7391: 80,46                     #arg 2              4680,
7393: 00                        #arg 3              0 );
   Sub_7394:
7394: 90,1a,2f            orb   R2f,R1a          VIP_flags4 |= R1a;
7397: 20,15               sjmp  73ae             goto 73ae; }

7399: b3,e4,40,42         ldb   R42,[Re4+40]     R42 = [1c0];
739d: 9b,fe,7d,42         cmpb  R42,[Rfe+7d]     
73a1: d3,06               jnc   73a9             if (R42 >= V_FPMTM)  {
73a3: 33,90,03            jnb   B3,R90,73a9      if (B3_FPM_90 = 1)  {
73a6: 91,04,2f            orb   R2f,4            B2_VIP_flags4 = 1; } }
73a9: ef,52,07            call  7afe             ?Fault_Filter_Routine? (
73ac: 1a                        #arg 1              1a,
73ad: 80                        #arg 2              80 );
73ae: ef,4d,07            call  7afe             ?Fault_Filter_Routine? (
73b1: 1c                        #arg 1              1c,
73b2: 80                        #arg 2              80 );
73b3: 37,a5,25            jnb   B7,Ra5,73db      if (b7_CRKFLG_a5 = 1)  {
73b6: c7,ea,c8,00         stb   R0,[Rea+c8]      V_LESTMR = 0;
73ba: c7,ea,c6,00         stb   R0,[Rea+c6]      [446] = 0;
73be: b3,ff,bf,00,42      ldb   R42,[Rfe+bf]     R42 = [cc19];
73c3: c7,ea,c9,42         stb   R42,[Rea+c9]     V_EGR_DLYTMR = R42;
73c7: b3,ff,ba,00,42      ldb   R42,[Rfe+ba]     R42 = [cc14];
73cc: c7,ea,c7,42         stb   R42,[Rea+c7]     V_LEGOTMR = R42;
73d0: c7,e4,42,00         stb   R0,[Re4+42]      [1c2] = 0;
73d4: 34,2e,03            jnb   B4,R2e,73da      if (WIGFLG = 1)  {
73d7: 3a,2a,01            jb    B2,R2a,73db      if (VIP_ENABLE = 1) goto 73db; }
73da: f0                  ret                    return; } }

73db: 71,7f,2d            an2b  R2d,7f           B7_R2d = 0;
73de: ef,5f,0a            call  7e40             Sub_7e40 (
73e1: 7e,f0                     #arg 1              ECTMIN,
73e3: 10,01                     #arg 2              IECT,
73e5: 02,05                     #arg 3              502 );
73e7: ef,56,0a            call  7e40             Sub_7e40 (
73ea: 10,01                     #arg 1              IECT,
73ec: 80,f0                     #arg 2              ECTMAX,
73ee: 03,04                     #arg 3              403 );
73f0: ef,4d,0a            call  7e40             Sub_7e40 (
73f3: 12,b0                     #arg 1              TOTMIN,
73f5: 08,01                     #arg 2              ITOT,
73f7: 24,80                     #arg 3              8024 );
73f9: ef,44,0a            call  7e40             Sub_7e40 (
73fc: 08,01                     #arg 1              ITOT,
73fe: 14,b0                     #arg 2              TOTMAX,
7400: 23,80                     #arg 3              8023 );
7402: ef,3b,0a            call  7e40             Sub_7e40 (
7405: 70,f0                     #arg 1              ACTMIN,
7407: 12,01                     #arg 2              IACT,
7409: 00,07                     #arg 3              KAMQA );
740b: ef,32,0a            call  7e40             Sub_7e40 (
740e: 12,01                     #arg 1              IACT,
7410: 72,f0                     #arg 2              ACTMAX,
7412: 01,06                     #arg 3              601 );
7414: b3,e6,96,1a         ldb   R1a,[Re6+96]     R1a = MAPTMR;
7418: 9b,e2,1d,1a         cmpb  R1a,[Re2+1d]     
741c: d1,05               jleu  7423             if (R1a > VMPMAX)  {
741e: 91,04,2f            orb   R2f,4            B2_VIP_flags4 = 1;
7421: 20,11               sjmp  7434             goto 7434; }

7423: ef,17,0a            call  7e3d             Sub_7e3d (
7426: 00,02                     #arg 1              MDELTA,
7428: 14,f1                     #arg 2              VMDEL6 );
742a: 3a,2f,07            jb    B2,R2f,7434      if (B2_VIP_flags4 = 0)  {
742d: ef,0d,0a            call  7e3d             Sub_7e3d (
7430: 12,f1                     #arg 1              VMDEL5,
7432: 00,02                     #arg 2              MDELTA ); }
7434: ef,c7,06            call  7afe             ?Fault_Filter_Routine? (
7437: 06                        #arg 1              6,
7438: 80                        #arg 2              80 );
7439: 77,e2,1c,00         ad2b  R0,[Re2+1c]      R0 = V_MAPFLG;
743d: df,43               je    7482             if (V_MAPFLG != 0)  {
743f: ac,bb,42            ldzbw R42,Rbb          wR42 = BP;
7442: 09,05,42            shlw  R42,5            R42 <<= 5;
7445: 6b,e4,a6,42         sb2w  R42,[Re4+a6]     R42 -= IMAP_WORD;
7449: d3,06               jnc   7451             if (R42 >= 0)  {
744b: 8b,e2,19,42         cmpw  R42,[Re2+19]     
744f: db,31               jc    7482             if (R42 >= V_MAPDIF) goto 7482; }
7451: 37,a8,22            jnb   B7,Ra8,7476      if (APT_Closed_Throttle = 1)  {
7454: 3c,2e,1f            jb    B4,R2e,7476      if (WIGFLG = 0)  {
7457: 3e,a5,1c            jb    B6,Ra5,7476      if (UNDSP = 0)  {
745a: 3a,a6,19            jb    B2,Ra6,7476      if (B2_TFMFLG_a6 = 0)  {
745d: 77,ea,86,00         ad2b  R0,[Rea+86]      R0 = [406];
7461: d7,13               jne   7476             if ([406] = 0)  {
7463: b0,bb,42            ldb   R42,Rbb          R42 = BP;
7466: 9b,e2,1b,42         cmpb  R42,[Re2+1b]     
746a: d1,0a               jleu  7476             if (R42 > V_BPMIN)  {
746c: a3,e4,c2,30         ldw   R30,[Re4+c2]     R30 = TSLPIP;
7470: 8b,e2,17,30         cmpw  R30,[Re2+17]     
7474: d1,09               jleu  747f             if (R30 <= V_PIPMAP_LMT) goto 747f; } } } } } }
7476: 38,a7,0e            jb    B0,Ra7,7487      if (B0_V_VACFLG_a7 = 1) goto 7487;
7479: c7,ea,87,00         stb   R0,[Rea+87]      [407] = 0;
747d: 20,08               sjmp  7487             goto 7487; }

747f: 91,04,2f            orb   R2f,4            B2_VIP_flags4 = 1; } }
7482: ef,79,06            call  7afe             ?Fault_Filter_Routine? (
7485: 07                        #arg 1              7,
7486: 0f                        #arg 2              f ); }
7487: ef,b6,09            call  7e40             Sub_7e40 (
748a: 78,f0                     #arg 1              TAPMIN,
748c: 1c,01                     #arg 2              ITP,
748e: 04,01                     #arg 3              EGRBAR );
7490: ef,ad,09            call  7e40             Sub_7e40 (
7493: 1c,01                     #arg 1              ITP,
7495: 76,f0                     #arg 2              TAPMAX,
7497: 05,00                     #arg 3              AD_High );
7499: af,fe,43,1c         ldzbw R1c,[Rfe+43]     wR1c = MINADP;
749d: 65,80,00,1c         ad2w  R1c,80           R1c += 80;
74a1: af,fe,44,1e         ldzbw R1e,[Rfe+44]     wR1e = MAXADP;
74a5: 65,80,00,1e         ad2w  R1e,80           R1e += 80;
74a9: 01,22               clrw  R22              R22 = 0;
74ab: a0,22,20            ldw   R20,R22          R20 = R22;
74ae: 08,01,20            shrw  R20,1            R20 >>= 1;
74b1: 01,3c               clrw  R3c              R3c = 0;
74b3: 9b,e2,be,00         cmpb  R0,[Re2+be]      
74b7: d7,02               jne   74bb             if (V_ADAPTV_ENA = 0)  {
74b9: 21,cf               sjmp  768a             goto 768a; }

74bb: 38,9f,0a            jb    B0,R9f,74c8      if (SWTFL = 0)  {
74be: 31,a0,05            jnb   B1,Ra0,74c6      if (B1_V_LAMJMP_a0 = 1)  {
74c1: 71,fd,a0            an2b  Ra0,fd           B1_V_LAMJMP_a0 = 0;               # (reinitialize due to LAMBSE jump)
74c4: 20,02               sjmp  74c8             goto 74c8; }

74c6: 20,05               sjmp  74cd             goto 74cd; }

74c8: c7,21,cc,01,00      stb   R0,[R20+1cc]     [R20+1cc] = 0;                    # V_LEGOTMR
74cd: 01,3c               clrw  R3c              R3c = 0;
74cf: a3,23,96,00,42      ldw   R42,[R22+96]     R42 = [R22+96];                   # LAMBSE
74d4: 8b,f4,44,42         cmpw  R42,[Rf4+44]     
74d8: d1,0b               jleu  74e5             if (R42 > LAMMIN)  {
74da: 8b,f4,42,42         cmpw  R42,[Rf4+42]     
74de: db,05               jc    74e5             if (R42 < LAMMAX)  {
74e0: c7,21,48,04,00      stb   R0,[R20+448]     [R20+448] = 0; } }                # V_LESTMR
74e5: b3,e2,b4,34         ldb   R34,[Re2+b4]     R34 = [cc0d];
74e9: 99,01,34            cmpb  R34,1            
74ec: df,38               je    7526             if (R34 != 1)  {
74ee: 71,df,a0            an2b  Ra0,df           B5_Flags_a0 = 0;
74f1: 71,fd,a2            an2b  Ra2,fd           B1_Ra2 = 0;
74f4: a0,bc,3e            ldw   R3e,Rbc          R3e = TP_REL;
74f7: 8b,e2,b5,3e         cmpw  R3e,[Re2+b5]     
74fb: d9,05               jgtu  7502             if (R3e <= [cc0e])  {
74fd: 91,02,a2            orb   Ra2,2            B1_Ra2 = 1;
7500: 20,0d               sjmp  750f             goto 750f; }

7502: b3,e6,95,3e         ldb   R3e,[Re6+95]     R3e = [215];
7506: 9b,e2,b7,3e         cmpb  R3e,[Re2+b7]     
750a: d9,03               jgtu  750f             if (R3e <= [cc10])  {
750c: 91,20,a0            orb   Ra0,20           B5_Flags_a0 = 1; }
750f: 9b,ea,c5,a8         cmpb  Ra8,[Rea+c5]     
7513: df,0c               je    7521             if (?APT?_a8 != [445])  {
7515: c7,ea,c5,a8         stb   Ra8,[Rea+c5]     [445] = ?APT?_a8;
7519: b3,e2,c0,42         ldb   R42,[Re2+c0]     R42 = [cc19];
751d: c7,ea,c9,42         stb   R42,[Rea+c9]     V_EGR_DLYTMR = R42; }
7521: 99,00,34            cmpb  R34,0            
7524: df,19               je    753f             if (R34 = 0) goto 753f; }
7526: 35,25,08            jnb   B5,R25,7531      if (B5_R25 = 1)  {
7529: 3d,27,13            jb    B5,R27,753f      if (B5_R27 = 1) goto 753f;
752c: 91,20,27            orb   R27,20           B5_R27 = 1;
752f: 20,06               sjmp  7537             goto 7537; }

7531: 35,27,0b            jnb   B5,R27,753f      if (B5_R27 = 1)  {
7534: 71,df,27            an2b  R27,df           B5_R27 = 0;
7537: b3,e2,c0,42         ldb   R42,[Re2+c0]     R42 = [cc19];
753b: c7,ea,c9,42         stb   R42,[Rea+c9]     V_EGR_DLYTMR = R42; } } }
753f: 30,28,08            jnb   B0,R28,754a      if (B0_EGREN_28 = 1)  {
7542: 3b,79,13            jb    B3,R79,7558      if (B3_R79 = 1) goto EGOTST_TMR_CONTROL;
7545: 91,08,79            orb   R79,8            B3_R79 = 1;
7548: 20,06               sjmp  7550             goto 7550; }

754a: 33,79,0b            jnb   B3,R79,7558      if (B3_R79 = 1)  {
754d: 71,f7,79            an2b  R79,f7           B3_R79 = 0;
7550: b3,e2,bb,42         ldb   R42,[Re2+bb]     R42 = [cc14];
7554: c7,ea,c7,42         stb   R42,[Rea+c7]     V_LEGOTMR = R42; } }
   EGOTST_TMR_CONTROL:
7558: b3,e6,9b,3e         ldb   R3e,[Re6+9b]     R3e = AEFUEL;
755c: 9b,e2,c5,3e         cmpb  R3e,[Re2+c5]     
7560: d9,74               jgtu  75d6             if (R3e <= V_EGOAEMAX)  {         #  (max AEFUEL to perform test)   
7562: 32,a0,71            jnb   B2,Ra0,75d6      if (B2_WRMEGO_a0 = 1)  {
7565: 3e,25,6e            jb    B6,R25,75d6      if (B6_MPGFLG_25 = 0)  {
7568: 39,79,6b            jb    B1,R79,75d6      if (B1_MPGTFG_79 = 0)  {
756b: 38,27,68            jb    B0,R27,75d6      if (B0_FLG_OPEN_LOOP_R27 = 0)  {
756e: b3,e4,fc,42         ldb   R42,[Re4+fc]     R42 = PPCTR;
7572: 9b,f4,18,42         cmpb  R42,[Rf4+18]     
7576: d3,5e               jnc   75d6             if (R42 >= PIPNUM)  {             # (past decel fuel shutoff)
7578: 35,79,5b            jnb   B5,R79,75d6      if (FLG_ECTSTABLQ = 1)  {
757b: 51,ac,a6,00         an3b  R0,Ra6,ac        R0 = (B2_TFMFLG_a6|               # Set PSW Flags
                                                       B3_MFMFLG_a6|
                                                       B5_CFMFLG_a6|
                                                       B7_AFMFLG_a6);
757f: d7,55               jne   75d6             if ((FMEM_FLAGS & ac) = 0)  {
7581: 9b,e2,bc,d4         cmpb  Rd4,[Re2+bc]     
7585: d3,4f               jnc   75d6             if (ATMR1 >= V_EGORNTM)  {
7587: 9b,ea,c9,00         cmpb  R0,[Rea+c9]      
758b: d7,49               jne   75d6             if (V_EGR_DLYTMR = 0)  {
758d: 9b,ea,c7,00         cmpb  R0,[Rea+c7]      
7591: d7,43               jne   75d6             if (V_LEGOTMR = 0)  {
7593: 99,01,34            cmpb  R34,1            
7596: df,0e               je    75a6             if (R34 != 1)  {
7598: d3,03               jnc   759d             if (R34 >= 1)  {
759a: 3d,25,03            jb    B5,R25,75a0      if (B5_R25 = 1) goto 75a0; }
759d: 3f,a8,13            jb    B7,Ra8,75b3      if (APT_Closed_Throttle = 1) goto 75b3; }
75a0: b3,e6,95,30         ldb   R30,[Re6+95]     R30 = [215];
75a4: 20,07               sjmp  75ad             goto 75ad; }

75a6: 35,25,0a            jnb   B5,R25,75b3      if (B5_R25 = 1)  {
75a9: b3,e6,94,30         ldb   R30,[Re6+94]     R30 = PRGTMR;
75ad: 9b,e2,b7,30         cmpb  R30,[Re2+b7]     
75b1: d3,23               jnc   75d6             if (R30 < [cc10]) goto 75d6; } }
75b3: 36,29,08            jnb   B6,R29,75be      if (B6_REFFLG_29 = 1)  {
75b6: 9b,e2,b8,00         cmpb  R0,[Re2+b8]      
75ba: d7,35               jne   75f1             if ([cc11] != 0) goto 75f1;
75bc: 20,18               sjmp  75d6             goto 75d6; }

75be: a0,bc,3e            ldw   R3e,Rbc          R3e = TP_REL;
75c1: 8b,e2,c3,3e         cmpw  R3e,[Re2+c3]     
75c5: d3,0f               jnc   75d6             if (R3e >= V_EGOTP_MIN)  {
75c7: b0,a9,3e            ldb   R3e,Ra9          R3e = MAPPA;
75ca: 9b,e2,c1,3e         cmpb  R3e,[Re2+c1]     
75ce: db,06               jc    75d6             if (R3e < V_EGOMAP_MAX)  {
75d0: 9b,e2,c2,3e         cmpb  R3e,[Re2+c2]     
75d4: d9,1b               jgtu  75f1             if (R3e > V_EGOMAP_MIN) goto 75f1; } } } } } } } } } } } } } }
75d6: a1,ed,75,30         ldw   R30,75ed         R30 = 75ed;
75da: ef,63,06            call  7c40             EGO_TEST_TMR_CLEAR ();
75dd: c7,ea,c6,00         stb   R0,[Rea+c6]      [446] = 0;
75e1: c7,21,cc,01,00      stb   R0,[R20+1cc]     [R20+1cc] = 0;
75e6: c7,21,48,04,00      stb   R0,[R20+448]     [R20+448] = 0;
75eb: 20,a8               sjmp  7695             goto 7695;

75ed: 03                  byte      3
75ee: 08                  byte      8
75ef: 09                  byte      9
75f0: 0a                  byte      a

75f1: b3,ee,84,32         ldb   R32,[Ree+84]     R32 = KAM_BIT_FLAGS;
75f5: 35,32,25            jnb   B5,R32,761d      if (B5_R32 = 1)  {
75f8: a1,ee,75,30         ldw   R30,75ee         R30 = 75ee;
75fc: b1,03,34            ldb   R34,3            R34 = 3;
75ff: ae,31,42            ldzbw R42,[R30++]      wR42 = [R30++];
7602: 44,fe,42,32         ad3w  R32,R42,Rfe      R32 = R42 + cb5a;
7606: b3,33,63,01,32      ldb   R32,[R32+163]    R32 = [R32+163];
760b: 9b,43,00,04,32      cmpb  R32,[R42+400]    
7610: db,08               jc    761a             if (R32 < [R42+400])  {
7612: ad,08,3c            ldzbw R3c,8            wR3c = 8;
7615: 08,34,3c            shrw  R3c,R34          R3c >>= R34;
7618: 20,70               sjmp  768a             goto 768a; }

761a: e0,34,e2            djnz  R34,75ff         R34--;
                                                 if (R34 != 0) goto 75ff; }
761d: b3,ea,c6,42         ldb   R42,[Rea+c6]     R42 = [446];
7621: 9b,e2,ba,42         cmpb  R42,[Re2+ba]     
7625: d9,02               jgtu  7629             if (R42 <= V_LEGOMAX2)  {
7627: 20,6c               sjmp  7695             goto 7695; }

7629: b3,21,32,02,42      ldb   R42,[R20+232]    R42 = [R20+232];
762e: 9b,e2,b9,42         cmpb  R42,[Re2+b9]     
7632: d3,07               jnc   763b             if (R42 >= [cc12])  {
7634: 91,80,3c            orb   R3c,80           B7_R3c = 1;
7637: 28,3a               scall 7673             Sub_7673 ();
7639: d3,4f               jnc   768a             if (CY = 0) goto 768a; }
763b: 8b,23,76,01,1c      cmpw  R1c,[R22+176]    
7640: df,07               je    7649             if (R1c != [R22+176])  {
7642: 8b,23,76,01,1e      cmpw  R1e,[R22+176]    
7647: d7,05               jne   764e             if (R1e != [R22+176]) goto 764e; }
7649: 91,01,3c            orb   R3c,1            B0_R3c = 1;
764c: 20,3c               sjmp  768a             goto 768a; }

764e: 39,9f,05            jb    B1,R9f,7656      if (B1_EGO_IS_RICH_9f = 0)  {
7651: 91,02,2c            orb   R2c,2            B1_CODE_ = 1;
7654: 20,0f               sjmp  7665             goto 7665; }

7656: 39,2c,03            jb    B1,R2c,765c      if (B1_CODE_ = 0)  {
7659: 37,3c,04            jnb   B7,R3c,7660      if (B7_R3c = 0) goto 7660; }
765c: 28,0c               scall 766a             Sub_766a ();
765e: d3,2a               jnc   768a             if (CY = 0) goto 768a; }
7660: 91,04,3c            orb   R3c,4            B2_R3c = 1;
7663: 20,25               sjmp  768a             goto 768a;

7665: 91,02,3c            orb   R3c,2            B1_R3c = 1;
7668: 20,20               sjmp  768a             goto 768a;

   Sub_766a:
766a: 35,25,06            jnb   B5,R25,7673      if (B5_R25 = 1)  {
766d: 8b,f6,32,00         cmpw  R0,[Rf6+32]      
7671: d7,0b               jne   767e             if (PRG_DEC != 0) goto 767e; }
   Sub_7673:
7673: b3,ea,c8,42         ldb   R42,[Rea+c8]     R42 = V_LESTMR;
7677: 9b,ff,be,00,42      cmpb  R42,[Rfe+be]     
767c: d9,0b               jgtu  7689             if (R42 > V_LESTM) return; }
767e: b3,e4,4c,42         ldb   R42,[Re4+4c]     R42 = IEVPSV;
7682: 9b,e2,bd,42         cmpb  R42,[Re2+bd]     
7686: d9,01               jgtu  7689             if (R42 <= [cc16])  {
7688: f8                  clc                    CY = 0; } }
7689: f0                  ret                    return; } }

768a: 71,7f,3c            an2b  R3c,7f           B7_R3c = 0;
768d: a3,23,98,76,36      ldw   R36,[R22+7698]   R36 = [R22+7698];
7692: ef,8d,05            call  7c22             Sub_7c22 ();
7695: 20,15               sjmp  76ac             goto 76ac;

7697: ff                  ???   

7698: 9a,76               word   769a
769a: 03                  byte      3
769b: 08                  byte      8
769c: 08                  byte      8
769d: 09                  byte      9
769e: 09                  byte      9
769f: 0a                  byte      a
76a0: 0a                  byte      a
76a1: 01                  byte      1
76a2: 32                  byte     32
76a3: 8c                  byte     8c
76a4: 34                  byte     34
76a5: 30                  byte     30
76a6: 07                  byte      7
76a7: 42                  byte     42
76a8: 88                  byte     88
76a9: 42                  byte     42
76aa: 30                  byte     30
76ab: f0                  byte     f0

76ac: ef,3c,05            call  7beb             Sub_7beb (
76af: 07                        #arg 1              7,
76b0: 01                        #arg 2              1,
76b1: 02,a6                     #arg 3              a602 );
76b3: 01,3a               clrw  R3a              R3a = 0;
76b5: 3e,29,2a            jb    B6,R29,76e2      if (B6_REFFLG_29 = 0)  {
76b8: a1,3d,77,30         ldw   R30,773d         R30 = 773d;
76bc: ef,81,05            call  7c40             EGO_TEST_TMR_CLEAR ();
76bf: b3,e2,96,42         ldb   R42,[Re2+96]     R42 = V_ADPMP_MIN;
76c3: 98,a9,42            cmpb  R42,Ra9          
76c6: db,1d               jc    76e5             if (R42 >= MAPPA) goto 76e5;
76c8: b3,e2,95,42         ldb   R42,[Re2+95]     R42 = V_ADPMP_MAX;
76cc: 98,a9,42            cmpb  R42,Ra9          
76cf: d1,14               jleu  76e5             if (R42 <= MAPPA) goto 76e5;
76d1: 8b,e2,99,b4         cmpw  Rb4,[Re2+99]     
76d5: d1,0e               jleu  76e5             if (N_RPM <= V_ADPN_MIN) goto 76e5;
76d7: 8b,e2,97,b4         cmpw  Rb4,[Re2+97]     
76db: db,08               jc    76e5             if (N_RPM >= V_ADPN_MAX) goto 76e5;
76dd: ad,01,3a            ldzbw R3a,1            wR3a = 1;
76e0: 20,0d               sjmp  76ef             goto 76ef; }

76e2: ad,04,3a            ldzbw R3a,4            wR3a = 4; } } } }
76e5: a1,40,77,30         ldw   R30,7740         R30 = 7740;
76e9: ef,54,05            call  7c40             EGO_TEST_TMR_CLEAR ();
76ec: 32,3a,3a            jnb   B2,R3a,7729      if (B2_R3a = 1)  {
76ef: 01,22               clrw  R22              R22 = 0;
76f1: 01,3c               clrw  R3c              R3c = 0;
76f3: 9b,e2,8f,00         cmpb  R0,[Re2+8f]      
76f7: df,28               je    7721             if (V_ADAPTV_ENA2 != 0)  {
76f9: a3,23,c8,03,42      ldw   R42,[R22+3c8]    R42 = LAMAVE;
76fe: 8b,23,76,01,1c      cmpw  R1c,[R22+176]    
7703: d7,09               jne   770e             if (R1c = KAMRF1)  {
7705: 8b,e2,91,42         cmpw  R42,[Re2+91]     
7709: d3,03               jnc   770e             if (R42 >= V_LAMAV_MIN)  {
770b: b0,3a,3c            ldb   R3c,R3a          R3c = R3a; } }
770e: 8b,23,76,01,1e      cmpw  R1e,[R22+176]    
7713: d7,0c               jne   7721             if (R1e = KAMRF1)  {
7715: 8b,e2,93,42         cmpw  R42,[Re2+93]     
7719: d9,06               jgtu  7721             if (R42 <= V_LAMAV_MAX)  {
771b: b0,3a,3c            ldb   R3c,R3a          R3c = R3a;
771e: 19,01,3c            shlb  R3c,1            R3c <<= 1; } } }
7721: a3,23,32,77,36      ldw   R36,[R22+7732]   R36 = [7732];
7726: ef,f9,04            call  7c22             Sub_7c22 (); }
7729: ef,bf,04            call  7beb             Sub_7beb (
772c: 0f                        #arg 1              f,
772d: 02                        #arg 2              2,
772e: 80,a7                     #arg 3              a780 );
7730: 20,11               sjmp  7743             goto 7743;

7732: 34,77               word   7734
7734: 04                  byte      4
7735: 0b                  byte      b
7736: 10                  byte     10
7737: 0c                  byte      c
7738: 11                  byte     11
7739: 0d                  byte      d
773a: 12                  byte     12
773b: 0e                  byte      e
773c: 13                  byte     13
773d: 02                  byte      2
773e: 0d                  byte      d
773f: 0e                  byte      e
7740: 02                  byte      2
7741: 0b                  byte      b
7742: 0c                  byte      c

7743: 3a,48,0d            jb    B2,R48,7753      if (VATMR2_FLG = 0)  {
7746: c7,e4,50,00         stb   R0,[Re4+50]      V_ATMR2 = 0;
774a: 9b,e2,40,b6         cmpb  Rb6,[Re2+40]     
774e: da,03               jle   7753             if (ECT > V_ECTCTMIN)  {
7750: 91,04,48            orb   R48,4            VATMR2_FLG = 1; } }
7753: 9b,e2,3e,00         cmpb  R0,[Re2+3e]      
7757: df,0d               je    7766             if ([cc97] != 0)  {
7759: b3,ea,83,42         ldb   R42,[Rea+83]     R42 = [403];
775d: 93,ea,82,42         orb   R42,[Rea+82]     R42 |= [402];
7761: d7,03               jne   7766             if (R42 = 0)  {
7763: 37,48,02            jnb   B7,R48,7768      if (V_CST_PASS = 0) goto 7768; } }
7766: 20,b0               sjmp  7818             goto 7818; }


 BEGIN: STABILIZATION CHECK
7768: 3e,48,13            jb    B6,R48,777e      if (V_STABLFLG = 0)  {
776b: 9b,e2,44,d4         cmpb  Rd4,[Re2+44]     
776f: d3,0b               jnc   777c             if (ATMR1 >= V_STABLTIM)  {
7771: c3,e4,02,00         stw   R0,[Re4+2]       OUTTMR = 0;
7775: 91,40,48            orb   R48,40           V_STABLFLG = 1;
7778: c7,e4,4e,b6         stb   Rb6,[Re4+4e]     V_ECTHI = ECT; }
777c: 20,9d               sjmp  781b             goto 781b; }                      # EXIT: VC_COOLING_SYS_TEST


 DO: STARTING POINT CHECK
777e: 9b,e2,40,b6         cmpb  Rb6,[Re2+40]     
7782: de,65               jlt   77e9             if (ECT >= V_ECTCTMIN)  {
7784: 9b,e4,4e,b6         cmpb  Rb6,[Re4+4e]     
7788: de,06               jlt   7790             if (ECT >= V_ECTHI)  {
778a: c7,e4,4e,b6         stb   Rb6,[Re4+4e]     V_ECTHI = ECT;
778e: 20,10               sjmp  77a0             goto 77a0; }

7790: 9b,e4,4d,b6         cmpb  Rb6,[Re4+4d]     
7794: d6,0a               jge   77a0             if (ECT < V_ECTCTL)  {
7796: 9b,e2,40,b6         cmpb  Rb6,[Re2+40]     
779a: da,04               jle   77a0             if (ECT > V_ECTCTMIN)  {
779c: c7,e4,4d,b6         stb   Rb6,[Re4+4d]     V_ECTCTL = ECT; } }
77a0: 30,48,15            jnb   B0,R48,77b8      if (V_WARM_FLG = 1)  {
77a3: 39,48,12            jb    B1,R48,77b8      if (V_THMOPN = 0)  {
77a6: b3,e4,4e,42         ldb   R42,[Re4+4e]     R42 = V_ECTHI;
77aa: 7b,e4,4d,42         sb2b  R42,[Re4+4d]     R42 -= V_ECTCTL;
77ae: 9b,ff,40,01,42      cmpb  R42,[Rfe+140]    
77b3: da,03               jle   77b8             if (R42 > V_ECT_DEL)  {
77b5: 91,02,48            orb   R48,2            V_THMOPN = 1; } } }
77b8: b3,e4,4f,42         ldb   R42,[Re4+4f]     R42 = V_ECT_CTR;
77bc: 9b,e2,3f,b6         cmpb  Rb6,[Re2+3f]     
77c0: d6,10               jge   77d2             if (ECT < V_ECTCTMAX)  {
77c2: 9b,e2,42,42         cmpb  R42,[Re2+42]     
77c6: d3,0d               jnc   77d5             if (R42 < V_ECTLIM) goto 77d5;
77c8: b3,e4,50,30         ldb   R30,[Re4+50]     R30 = V_ATMR2;
77cc: 9b,e2,43,30         cmpb  R30,[Re2+43]     
77d0: d3,03               jnc   77d5             if (R30 < V_ECT_TIME) goto 77d5; }
77d2: 91,01,48            orb   R48,1            V_WARM_FLG = 1; } }
77d5: 9b,e2,40,b6         cmpb  Rb6,[Re2+40]     
77d9: da,0e               jle   77e9             if (ECT > V_ECTCTMIN)  {
77db: 9b,e2,3f,b6         cmpb  Rb6,[Re2+3f]     
77df: d6,08               jge   77e9             if (ECT < V_ECTCTMAX)  {
77e1: 17,42               incb  R42              R42++;
77e3: db,04               jc    77e9             if (R42 <= ff)  {
77e5: c7,e4,4f,42         stb   R42,[Re4+4f]     V_ECT_CTR = R42; } } } }
77e9: 38,48,14            jb    B0,R48,7800      if (V_WARM_FLG = 0)  {
77ec: a3,e4,02,42         ldw   R42,[Re4+2]      R42 = OUTTMR;
77f0: 8b,e2,45,42         cmpw  R42,[Re2+45]     
77f4: d3,25               jnc   781b             if (R42 < V_TIME_LIM) goto 781b;
77f6: 91,04,2f            orb   R2f,4            B2_VIP_flags4 = 1;
77f9: ef,02,03            call  7afe             ?Fault_Filter_Routine? (
77fc: 16                        #arg 1              16,
77fd: 80                        #arg 2              80 );
77fe: 20,18               sjmp  7818             goto 7818; }

7800: 39,48,0b            jb    B1,R48,780e      if (V_THMOPN = 0)  {
7803: 9b,e2,3f,b6         cmpb  Rb6,[Re2+3f]     
7807: da,12               jle   781b             if (ECT <= V_ECTCTMAX) goto 781b;
7809: 91,04,2f            orb   R2f,4            B2_VIP_flags4 = 1;
780c: 20,05               sjmp  7813             goto 7813; }

780e: ef,ed,02            call  7afe             ?Fault_Filter_Routine? (
7811: 16                        #arg 1              16,
7812: 80                        #arg 2              80 );
7813: ef,e8,02            call  7afe             ?Fault_Filter_Routine? (
7816: 17                        #arg 1              17,
7817: 80                        #arg 2              80 );
7818: 91,80,48            orb   R48,80           V_CST_PASS = 1; } }
781b: 37,a5,02            jnb   B7,Ra5,7820      if (b7_CRKFLG_a5 = 1)  {
781e: 20,7f               sjmp  789f             goto 789f; }

7820: 71,fe,a4            an2b  Ra4,fe           B0_Ra4 = 0;
7823: b3,e2,62,42         ldb   R42,[Re2+62]     R42 = [ccbb];
7827: e0,42,06            djnz  R42,7830         R42--;
                                                 if (R42 != 0) goto 7830;
782a: 9b,fe,2f,00         cmpb  R0,[Rfe+2f]      
782e: d7,02               jne   7832             if (VSTYPE != 0) goto 7832; }
7830: 20,55               sjmp  7887             goto 7887; }

7832: b0,8d,42            ldb   R42,R8d          R42 = VSBAR;
7835: 9b,e2,61,42         cmpb  R42,[Re2+61]     
7839: d3,03               jnc   783e             if (R42 >= V_STO_DELAY)  {
783b: 91,01,a4            orb   Ra4,1            B0_Ra4 = 1; }
783e: ef,a5,d0            call  48e6             UUWFuncLU_48e6 (
7841: b6,c1                     #arg 1              FN689V,
7843: bc,00                     #arg 2              TP_REL );
7845: 3a,a6,29            jb    B2,Ra6,7871      if (B2_TFMFLG_a6 = 0)  {
7848: 36,9f,26            jnb   B6,R9f,7871      if (B6_NDSFLG_9f = 1)  {
784b: 32,90,12            jnb   B2,R90,7860      if (B2_I4X4L_90 = 1)  {
784e: af,e2,60,36         ldzbw R36,[Re2+60]     wR36 = V_VSS_MULT;
7852: 6c,36,38            ml2w  R38,R36          lR38 *= R36;
7855: 0c,06,38            shrdw R38,6            lR38 >>= 6;
7858: 98,00,3a            cmpb  R3a,R0           
785b: df,03               je    7860             if (R3a != 0)  {
785d: bd,ff,38            ldsbw R38,ff           swR38 = ff; } }
7860: 8b,e8,8c,38         cmpw  R38,[Re8+8c]     
7864: d9,0b               jgtu  7871             if (R38 <= NEBART)  {
7866: 9b,fe,26,00         cmpb  R0,[Rfe+26]      
786a: df,03               je    786f             if (BIHP != 0)  {
786c: 3c,25,02            jb    B4,R25,7871      if (BIFLG = 1) goto 7871; }
786f: 20,06               sjmp  7877             goto 7877; } } } }

7871: c7,e4,42,00         stb   R0,[Re4+42]      [1c2] = 0;
7875: 20,10               sjmp  7887             goto 7887;

7877: 38,a4,f7            jb    B0,Ra4,7871      if (B0_Ra4 = 1) goto 7871;
787a: b3,e4,42,42         ldb   R42,[Re4+42]     R42 = [1c2];
787e: 9b,e2,63,42         cmpb  R42,[Re2+63]     
7882: d1,03               jleu  7887             if (R42 > [ccbc])  {
7884: 91,04,2f            orb   R2f,4            B2_VIP_flags4 = 1; }
7887: ef,74,02            call  7afe             ?Fault_Filter_Routine? (
788a: 18                        #arg 1              18,
788b: 80                        #arg 2              80 );
788c: b3,ea,98,42         ldb   R42,[Rea+98]     R42 = [418];
7890: 9b,e2,7c,42         cmpb  R42,[Re2+7c]     
7894: d1,03               jleu  7899             if (R42 > [ccd5])  {
7896: 91,40,a6            orb   Ra6,40           B6_VSFMFLG_a6 = 1; }
7899: 30,a4,03            jnb   B0,Ra4,789f      if (B0_Ra4 = 1)  {
789c: 71,bf,a6            an2b  Ra6,bf           B6_VSFMFLG_a6 = 0; }
789f: 9b,fe,26,00         cmpb  R0,[Rfe+26]      
78a3: df,67               je    790c             if (BIHP != 0)  {
78a5: 9b,e2,b2,00         cmpb  R0,[Re2+b2]      
78a9: df,61               je    790c             if (V_CBOO_ENA != 0)  {
78ab: b0,8d,42            ldb   R42,R8d          R42 = VSBAR;

 BEGIN: BOO_SPD_TMR
78ae: 9b,e2,b0,42         cmpb  R42,[Re2+b0]     
78b2: db,04               jc    78b8             if (R42 < V_BOO_SPD)  {
78b4: c7,ea,a8,00         stb   R0,[Rea+a8]      V_BOOSPD_TMR = 0; }
 END: BOO_SPD_TMR

78b8: 3c,25,08            jb    B4,R25,78c3      if (BIFLG = 0)  {
78bb: 35,44,0a            jnb   B5,R44,78c8      if (B5_R44 = 0) goto 78c8;
78be: 95,20,44            xorb  R44,20           B5_R44 ^= 1;
78c1: 20,40               sjmp  7903             goto 7903; }

78c3: 3d,44,02            jb    B5,R44,78c8      if (B5_R44 = 0)  {
78c6: 27,f6               sjmp  78be             goto 78be; } }

78c8: 98,00,42            cmpb  R42,R0           
78cb: d7,05               jne   78d2             if (R42 = 0)  {
78cd: 91,10,44            orb   R44,10           V_SPDTOZ_FLG = 1;
78d0: 20,35               sjmp  7907             goto 7907; }

78d2: 34,44,32            jnb   B4,R44,7907      if (V_SPDTOZ_FLG = 1)  {
78d5: b3,ea,a8,42         ldb   R42,[Rea+a8]     R42 = V_BOOSPD_TMR;
78d9: 9b,e2,b1,42         cmpb  R42,[Re2+b1]     
78dd: d1,28               jleu  7907             if (R42 > V_BOOSPD_TM)  {
78df: 71,ef,44            an2b  R44,ef           V_SPDTOZ_FLG = 0;
78e2: 9b,ea,98,00         cmpb  R0,[Rea+98]      
78e6: df,06               je    78ee             if ([418] != 0)  {
78e8: c7,ea,99,00         stb   R0,[Rea+99]      [419] = 0;
78ec: 20,15               sjmp  7903             goto 7903; }

78ee: b3,ea,a9,42         ldb   R42,[Rea+a9]     R42 = [429];
78f2: 9b,e2,b3,42         cmpb  R42,[Re2+b3]     
78f6: db,08               jc    7900             if (R42 < [cc0c])  {
78f8: 17,42               incb  R42              R42++;
78fa: c7,ea,a9,42         stb   R42,[Rea+a9]     [429] = R42;
78fe: 20,07               sjmp  7907             goto 7907; }

7900: 91,04,2f            orb   R2f,4            B2_VIP_flags4 = 1;
7903: c7,ea,a9,00         stb   R0,[Rea+a9]      [429] = 0; } }
7907: ef,f4,01            call  7afe             ?Fault_Filter_Routine? (
790a: 19                        #arg 1              19,
790b: 80                        #arg 2              80 ); } }
790c: 34,9e,11            jnb   B4,R9e,7920      if (B4_EGREN_9e = 1)  {
790f: b3,e4,26,3a         ldb   R3a,[Re4+26]     R3a = [1a6];
7913: 71,f3,3a            an2b  R3a,f3           R3a &= f3;
7916: c7,e4,26,3a         stb   R3a,[Re4+26]     [1a6] = R3a;
791a: c7,ea,93,00         stb   R0,[Rea+93]      C41FIL_TroubleCode = 0;
791e: 20,d8               sjmp  79f8             goto 79f8; }

7920: 3c,2e,03            jb    B4,R2e,7926      if (WIGFLG = 0)  {
7923: 37,2f,24            jnb   B7,R2f,794a      if (B7_V_EGR_RDY_2f = 0) goto 794a; }
7926: ef,99,0a            call  83c2             Sub_83c2 (
7929: 14,01                     #arg 1              IEGR,
792b: d6,f0                     #arg 2              VEVPLL,
792d: d2,f0                     #arg 3              EVPMIN,
792f: 28,03                     #arg 4              328,
7931: 00,00                     #arg 5              0 );
7933: 3c,2e,03            jb    B4,R2e,7939      if (WIGFLG = 0)  {
7936: 37,2f,11            jnb   B7,R2f,794a      if (B7_V_EGR_RDY_2f = 0) goto 794a; }
7939: a0,1a,40            ldw   R40,R1a          R40 = R1a;
793c: ef,ad,01            call  7aec             Sub_7aec (
793f: 27,03                     #arg 1              327,
7941: 11,03                     #arg 2              311 );
7943: ef,a6,01            call  7aec             Sub_7aec (
7946: 37,03                     #arg 1              337,
7948: 15,02                     #arg 2              215 ); } }
794a: 34,2e,08            jnb   B4,R2e,7955      if (WIGFLG = 1)  {
794d: 71,fb,2e            an2b  R2e,fb           Flags_bit2 = 0;
7950: 71,7f,2e            an2b  R2e,7f           Egrfg1 = 0;
7953: 20,a3               sjmp  79f8             goto 79f8; }

7955: ef,94,01            call  7aec             Sub_7aec (
7958: 28,03                     #arg 1              328,
795a: 12,80                     #arg 2              8012 );
795c: 38,40,ee            jb    B0,R40,794d      if (B0_R40 = 1) goto 794d;
795f: 88,c0,00            cmpw  R0,Rc0           
7962: df,02               je    7966             if (EGRDC != 0)  {
7964: 20,4c               sjmp  79b2             goto 79b2; }

7966: 71,7f,2e            an2b  R2e,7f           Egrfg1 = 0;
7969: 3a,2e,15            jb    B2,R2e,7981      if (Flags_bit2 = 0)  {
796c: c7,e4,41,00         stb   R0,[Re4+41]      VIP_TIMER_EX = 0;
7970: 91,04,2e            orb   R2e,4            Flags_bit2 = 1;
7973: b3,ea,94,3a         ldb   R3a,[Rea+94]     R3a = [414];
7977: 9b,e2,78,3a         cmpb  R3a,[Re2+78]     
797b: d9,04               jgtu  7981             if (R3a <= [ccd1])  {
797d: c7,ea,94,00         stb   R0,[Rea+94]      [414] = 0; } }
7981: ef,b9,04            call  7e3d             Sub_7e3d (
7984: 14                        #arg 1              14,
7985: 01                        #arg 2              1,
7986: d8                        #arg 3              d8,
7987: f0                        #arg 4              f0 );
7988: 32,2f,0c            jnb   B2,R2f,7997      if (B2_VIP_flags4 = 1)  {
798b: b3,e4,41,18         ldb   R18,[Re4+41]     R18 = VIP_TIMER_EX;
798f: 9b,e2,df,18         cmpb  R18,[Re2+df]     
7993: db,02               jc    7997             if (R18 < [cc38])  {
7995: 20,61               sjmp  79f8             goto 79f8; } }

7997: ef,64,01            call  7afe             ?Fault_Filter_Routine? (
799a: 14                        #arg 1              14,
799b: 80                        #arg 2              80 );
799c: 20,5a               sjmp  79f8             goto 79f8;

799e: 71,7f,2e            an2b  R2e,7f           Egrfg1 = 0;
79a1: 20,55               sjmp  79f8             goto 79f8;

   Sub_79a3:
79a3: b3,e4,41,18         ldb   R18,[Re4+41]     R18 = VIP_TIMER_EX;
79a7: 9b,e2,c6,18         cmpb  R18,[Re2+c6]     
79ab: d3,01               jnc   79ae             if (R18 >= V_EGR_CTMR)  {
79ad: f0                  ret                    return; }

79ae: cc,00               pop   R0               R0 = pop();
79b0: 20,46               sjmp  79f8             goto 79f8;

79b2: 71,fb,2e            an2b  R2e,fb           Flags_bit2 = 0;
79b5: b3,ea,93,3a         ldb   R3a,[Rea+93]     R3a = C41FIL_TroubleCode;
79b9: 9b,e2,77,3a         cmpb  R3a,[Re2+77]     
79bd: d9,14               jgtu  79d3             if (R3a <= [ccd0])  {
79bf: 9b,e2,c7,c1         cmpb  Rc1,[Re2+c7]     
79c3: d1,d9               jleu  799e             if (EGRDC_H <= VCRTDC) goto 799e;
79c5: b0,bb,42            ldb   R42,Rbb          R42 = BP;
79c8: 78,ba,42            sb2b  R42,Rba          R42 -= MAP;
79cb: d3,d1               jnc   799e             if (R42 < 0) goto 799e;
79cd: 9b,e2,cb,42         cmpb  R42,[Re2+cb]     
79d1: d1,cb               jleu  799e             if (R42 <= VEGVAC) goto 799e; }
79d3: 3f,2e,11            jb    B7,R2e,79e7      if (Egrfg1 = 0)  {
79d6: c7,e4,41,00         stb   R0,[Re4+41]      VIP_TIMER_EX = 0;
79da: 91,80,2e            orb   R2e,80           Egrfg1 = 1;
79dd: 9b,e2,77,3a         cmpb  R3a,[Re2+77]     
79e1: d9,04               jgtu  79e7             if (R3a <= [ccd0])  {
79e3: c7,ea,93,00         stb   R0,[Rea+93]      C41FIL_TroubleCode = 0; } }
79e7: ef,53,04            call  7e3d             Sub_7e3d (
79ea: dc                        #arg 1              dc,
79eb: f0                        #arg 2              f0,
79ec: 14                        #arg 3              14,
79ed: 01                        #arg 4              1 );
79ee: 32,2f,02            jnb   B2,R2f,79f3      if (B2_VIP_flags4 = 1)  {
79f1: 2f,b0               scall 79a3             Sub_79a3 (); }
79f3: ef,08,01            call  7afe             ?Fault_Filter_Routine? (
79f6: 13                        #arg 1              13,
79f7: 80                        #arg 2              80 );
79f8: 71,fb,2f            an2b  R2f,fb           B2_VIP_flags4 = 0;
79fb: 35,4b,03            jnb   B5,R4b,7a01      if (B5_OTEMP_FM_FLG_4b = 1)  {
79fe: 91,04,2f            orb   R2f,4            B2_VIP_flags4 = 1; }
7a01: ef,fa,00            call  7afe             ?Fault_Filter_Routine? (
7a04: 25                        #arg 1              25,
7a05: 80                        #arg 2              80 );
7a06: 8b,e2,8b,b4         cmpw  Rb4,[Re2+8b]     
7a0a: db,02               jc    7a0e             if (N_RPM < VLORPM)  {
7a0c: 20,34               sjmp  7a42             goto 7a42; }

7a0e: ef,2c,04            call  7e3d             Sub_7e3d (
7a11: 42                        #arg 1              42,
7a12: 01                        #arg 2              1,
7a13: 8c                        #arg 3              8c,
7a14: f0                        #arg 4              f0 );
7a15: 32,2f,0b            jnb   B2,R2f,7a23      if (B2_VIP_flags4 = 1)  {
7a18: 91,40,53            orb   R53,40           B6_IDM_BYPASS_53 = 1;
7a1b: c7,ea,90,00         stb   R0,[Rea+90]      [410] = 0;
7a1f: c3,e6,bc,00         stw   R0,[Re6+bc]      TSLIDM = 0; }
7a23: 28,d9               scall 7afe             ?Fault_Filter_Routine? (
7a25: 0f                        #arg 1              f,
7a26: 80                        #arg 2              80 );
7a27: 3e,53,0b            jb    B6,R53,7a35      if (B6_IDM_BYPASS_53 = 0)  {
7a2a: ef,13,04            call  7e40             Sub_7e40 (
7a2d: 3c,02                     #arg 1              TSLIDM,
7a2f: 88,f0                     #arg 2              VIDMTM,
7a31: 10,80                     #arg 3              8010 );
7a33: 20,11               sjmp  7a46             goto 7a46; }

7a35: a3,e6,bc,42         ldw   R42,[Re6+bc]     R42 = TSLIDM;
7a39: 9b,e2,87,43         cmpb  R43,[Re2+87]     
7a3d: d1,07               jleu  7a46             if (R43 > VIDMST)  {
7a3f: 71,bf,53            an2b  R53,bf           B6_IDM_BYPASS_53 = 0;
7a42: c3,e6,bc,00         stw   R0,[Re6+bc]      TSLIDM = 0; }
7a46: 71,fb,2f            an2b  R2f,fb           B2_VIP_flags4 = 0;
7a49: 30,4b,0c            jnb   B0,R4b,7a58      if (B0_PARK_ERR_4b = 1)  {
7a4c: 29,c2               scall 7c10             Sub_7c10 (
7a4e: 01                        #arg 1              1,
7a4f: 26                        #arg 2              26,
7a50: 80                        #arg 3              80 );
7a51: ef,aa,00            call  7afe             ?Fault_Filter_Routine? (
7a54: 22                        #arg 1              22,
7a55: 80                        #arg 2              80 );
7a56: 20,0a               sjmp  7a62             goto 7a62; }

7a58: ef,a3,00            call  7afe             ?Fault_Filter_Routine? (
7a5b: 26                        #arg 1              26,
7a5c: 80                        #arg 2              80 );
7a5d: 29,b1               scall 7c10             Sub_7c10 (
7a5f: 04                        #arg 1              4,
7a60: 22                        #arg 2              22,
7a61: 80                        #arg 3              80 );
7a62: 29,ac               scall 7c10             Sub_7c10 (
7a64: 02                        #arg 1              2,
7a65: 20                        #arg 2              20,
7a66: 80                        #arg 3              80 );
7a67: 29,82               scall 7beb             Sub_7beb (
7a69: c0                        #arg 1              c0,
7a6a: 00                        #arg 2              0,
7a6b: 80                        #arg 3              80,
7a6c: a6                        #arg 4              a6 );
7a6d: 29,7c               scall 7beb             Sub_7beb (
7a6f: 30                        #arg 1              30,
7a70: 00                        #arg 2              0,
7a71: 20                        #arg 3              20,
7a72: a6                        #arg 4              a6 );
7a73: 29,76               scall 7beb             Sub_7beb (
7a75: 0c                        #arg 1              c,
7a76: 00                        #arg 2              0,
7a77: 10                        #arg 3              10,
7a78: a6                        #arg 4              a6 );
7a79: 29,70               scall 7beb             Sub_7beb (
7a7b: 03                        #arg 1              3,
7a7c: 00                        #arg 2              0,
7a7d: 04                        #arg 3              4,
7a7e: a6                        #arg 4              a6 );
7a7f: 29,6a               scall 7beb             Sub_7beb (
7a81: 80                        #arg 1              80,
7a82: 01                        #arg 2              1,
7a83: 01                        #arg 3              1,
7a84: a7                        #arg 4              a7 );
7a85: 34,2e,09            jnb   B4,R2e,7a91      if (WIGFLG = 1)  {
7a88: 37,2d,04            jnb   B7,R2d,7a8f      if (B7_R2d = 1)  {
7a8b: 29,33               scall 7bc0             Set_STO ();
7a8d: 20,02               sjmp  7a91             goto WARM_UP_COUNTER_LOGIC; }

7a8f: 29,37               scall 7bc8             Reset_STO (); }
   WARM_UP_COUNTER_LOGIC:
7a91: 39,25,57            jb    B1,R25,7aeb      if (B1_WARM_UP_25 = 0)  {
7a94: 3e,a5,54            jb    B6,Ra5,7aeb      if (UNDSP = 0)  {
7a97: b0,b9,14            ldb   R14,Rb9          R14 = TCSTRT;
7a9a: 9b,fe,75,14         cmpb  R14,[Rfe+75]     
7a9e: d2,4b               jgt   7aeb             if (R14 <= VECT5)  {
7aa0: 9b,e2,f1,b6         cmpb  Rb6,[Re2+f1]     
7aa4: de,45               jlt   7aeb             if (ECT >= VECT3)  {
7aa6: 91,02,25            orb   R25,2            B1_WARM_UP_25 = 1;
7aa9: 30,a0,3f            jnb   B0,Ra0,7aeb      if (B0_Flags_a0 = 1)  {
7aac: ad,28,38            ldzbw R38,28           wR38 = 28;                        # KAM CODE(N)
   KAM_CODE_ERASE_LOGIC:
7aaf: b3,39,1f,07,3a      ldb   R3a,[R38+71f]    R3a = [R38+71f];                  # WARM-UP COUNTER(N)
7ab4: 17,3a               incb  R3a              R3a++;                            # INCREMENT ALL CODE WARM-UP COUNTERS
7ab6: d7,02               jne   7aba             if (R3a = 0)  {
7ab8: 15,3a               decb  R3a              R3a--; }                          # Set all non-zero upcounts to 255 except as noted in test descriptions
7aba: 99,50,3a            cmpb  R3a,50           
7abd: d3,20               jnc   7adf             if (R3a >= 50)  {                 # WARM-UP COUNTER(N) >= 80
7abf: 99,28,38            cmpb  R38,28           
7ac2: db,1b               jc    7adf             if (R38 < 28)  {
7ac4: a0,38,42            ldw   R42,R38          R42 = R38;
7ac7: 08,03,42            shrw  R42,3            R42 >>= 3;
7aca: a1,ff,fe,14         ldw   R14,feff         R14 = feff;
7ace: 51,07,38,30         an3b  R30,R38,7        R30 = R38 & 7;
7ad2: 09,30,14            shlw  R14,R30          R14 <<= R30;
7ad5: 73,43,19,07,15      an2b  R15,[R42+719]    R15 &= [R42+719];
7ada: c7,43,19,07,15      stb   R15,[R42+719]    [R42+719] = R15; } }
7adf: c7,39,1f,07,3a      stb   R3a,[R38+71f]    [R38+71f] = R3a;
7ae4: 05,38               decw  R38              R38--;
7ae6: db,c7               jc    7aaf             if (R38 >= 0) goto KAM_CODE_ERASE_LOGIC;
7ae8: 71,fe,a0            an2b  Ra0,fe           B0_Flags_a0 = 0; } } } } }
7aeb: f0                  ret                    return;

   Sub_7aec:
7aec: cc,18               pop   R18              R18 = pop();
7aee: b2,19,1a            ldb   R1a,[R18++]      R1a = [R18++];
7af1: b2,19,1b            ldb   R1b,[R18++]      R1b = [R18++];
7af4: 88,1a,40            cmpw  R40,R1a          
7af7: d7,07               jne   7b00             if (R40 = R1a)  {
7af9: 91,04,2f            orb   R2f,4            B2_VIP_flags4 = 1;
7afc: 20,02               sjmp  7b00             goto Sub_7b00;

   ?Fault_Filter_Routine?:
7afe: cc,18               pop   R18              R18 = pop(); }
   Sub_7b00:
7b00: ae,19,14            ldzbw R14,[R18++]      wR14 = [R18++];
7b03: b2,19,17            ldb   R17,[R18++]      R17 = [R18++];
7b06: c8,18               push  R18              push(R18);
   Sub_7b08:
7b08: 3f,17,11            jb    B7,R17,7b1c      if (B7_R17 = 0)  {
7b0b: ac,17,34            ldzbw R34,R17          wR34 = yR17;
7b0e: 41,07,00,34,1a      an3w  R1a,R34,7        R1a = R34 & 7;
7b13: ad,01,16            ldzbw R16,1            wR16 = 1;
7b16: 19,1a,16            shlb  R16,R1a          R16 <<= R1a;
7b19: 08,03,34            shrw  R34,3            R34 >>= 3; }
7b1c: b3,15,00,04,30      ldb   R30,[R14+400]    R30 = [R14+400];
7b21: 44,fe,14,32         ad3w  R32,R14,Rfe      R32 = R14 + cb5a;
7b25: b3,33,63,01,32      ldb   R32,[R32+163]    R32 = [R32+163];
7b2a: 44,fe,14,42         ad3w  R42,R14,Rfe      R42 = R14 + cb5a;
7b2e: 57,43,8b,01,00,42   ad3b  R42,R0,[R42+18b] R42 = [R42+18b];
7b34: df,0d               je    7b43             if (R42 != 0)  {
7b36: 34,2e,07            jnb   B4,R2e,7b40      if (WIGFLG = 1)  {
7b39: b3,fe,7a,32         ldb   R32,[Rfe+7a]     R32 = WIGLVL;
7b3d: b1,ff,42            ldb   R42,ff           R42 = ff; }
7b40: 3a,2f,22            jb    B2,R2f,7b65      if (B2_VIP_flags4 = 1) goto 7b65; }
7b43: 98,00,30            cmpb  R30,R0           
7b46: df,02               je    7b4a             if (R30 != 0)  {
7b48: 15,30               decb  R30              R30--; }
7b4a: 3f,17,51            jb    B7,R17,7b9e      if (B7_R17 = 1) goto 7b9e;
7b4d: 5b,e2,f2,32,33      sb3b  R33,R32,[Re2+f2] R33 = R32 - [cc4b];
7b52: 98,30,33            cmpb  R33,R30          
7b55: d1,0c               jleu  7b63             if (R33 > R30)  {
7b57: 12,16               cplb  R16              R16 = ~R16;
7b59: 73,35,a6,01,16      an2b  R16,[R34+1a6]    R16 &= [R34+1a6];
7b5e: c7,35,a6,01,16      stb   R16,[R34+1a6]    [R34+1a6] = R16; }
7b63: 20,39               sjmp  7b9e             goto 7b9e; }

7b65: 74,42,30            ad2b  R30,R42          R30 += R42;
7b68: d3,03               jnc   7b6d             if (R30 > ff)  {
7b6a: b1,ff,30            ldb   R30,ff           R30 = ff; }
7b6d: 98,30,32            cmpb  R32,R30          
7b70: db,2c               jc    7b9e             if (R32 < R30)  {
7b72: 3f,17,0a            jb    B7,R17,7b7f      if (B7_R17 = 0)  {
7b75: 93,35,a6,01,16      orb   R16,[R34+1a6]    R16 |= [R34+1a6];
7b7a: c7,35,a6,01,16      stb   R16,[R34+1a6]    [R34+1a6] = R16; }
7b7f: 51,07,14,1a         an3b  R1a,R14,7        R1a = R14 & 7;
7b83: b1,01,1b            ldb   R1b,1            R1b = 1;
7b86: 19,1a,1b            shlb  R1b,R1a          R1b <<= R1a;
7b89: a0,14,18            ldw   R18,R14          R18 = R14;
7b8c: 08,03,18            shrw  R18,3            R18 >>= 3;
7b8f: 93,19,19,07,1b      orb   R1b,[R18+719]    R1b |= [R18+719];
7b94: c7,19,19,07,1b      stb   R1b,[R18+719]    [R18+719] = R1b;
7b99: c7,15,1f,07,00      stb   R0,[R14+71f]     [R14+71f] = 0; } }
7b9e: 71,fb,2f            an2b  R2f,fb           B2_VIP_flags4 = 0;
7ba1: 98,30,32            cmpb  R32,R30          
7ba4: db,03               jc    7ba9             if (R32 < R30)  {
7ba6: 91,80,2d            orb   R2d,80           B7_R2d = 1; }
7ba9: c7,15,00,04,30      stb   R30,[R14+400]    [R14+400] = R30;
7bae: f0                  ret                    return;

   Clear_KAM:
7baf: ad,2f,16            ldzbw R16,2f           wR16 = 2f;
7bb2: 20,03               sjmp  7bb7             goto 7bb7;

   VIP_CODE_ERASE:
7bb4: ad,2e,16            ldzbw R16,2e           wR16 = 2e;
7bb7: c7,17,18,07,00      stb   R0,[R16+718]     [R16+718] = 0;                    #  R16 = [718 + {2f or 2e}]
7bbc: e0,16,f8            djnz  R16,7bb7         R16--;
                                                 if (R16 != 0) goto 7bb7;          #  clear Table from 747 or 746 down to 719
7bbf: f0                  ret                    return;

   Set_STO:
7bc0: 91,80,2b            orb   R2b,80           STO_on = 1;
7bc3: 91,02,45            orb   R45,2            STO_STATE = 1;
7bc6: 20,06               sjmp  7bce             goto 7bce;

   Reset_STO:
7bc8: 91,40,2b            orb   R2b,40           STO_off = 1;
7bcb: 71,fd,45            an2b  R45,fd           STO_STATE = 0;
7bce: 91,20,48            orb   R48,20           STO_TRIGGER = 1;
7bd1: f0                  ret                    return;

################################################################
# copy specified bytes to R1A onwards (77c2)
# or where specified in R16 (77be) from GRANDCALLER subroutine.
# gets one byte from return address of caller function.
# gets reqd bytes from 'Grandcaller' function, and mods return addresses.
# IN  - 1 byte (caller subroutine), NumBytes (grandcaller subroutine)
# OUT - [R1a] or [x] onwards asigned bytes 
################################################################
   GetBytes_R1a:
7bd2: a1,1a,00,16         ldw   R16,1a           R16 = 1a;                         # default destination is R1a onwards
7bd6: cc,3c               pop   R3c              R3c = pop();                      # Caller's (normal) return address
7bd8: b2,3d,3a            ldb   R3a,[R3c++]      R3a = [R3c++];                    # Get count of bytes, Inc return address
7bdb: cc,42               pop   R42              R42 = pop();                      # Get GrandCaller's return address
7bdd: b2,43,3b            ldb   R3b,[R42++]      R3b = [R42++];
7be0: c6,17,3b            stb   R3b,[R16++]      [R16++] = R3b;
7be3: e0,3a,f7            djnz  R3a,7bdd         R3a--;
                                                 if (R3a != 0) goto 7bdd;          # Get no of bytes into dest. addr
7be6: c8,42               push  R42              push(R42);
7be8: c8,3c               push  R3c              push(R3c);                        # and push modded returns back.
7bea: f0                  ret                    return;

   Sub_7beb:
7beb: cc,16               pop   R16              R16 = pop();
7bed: b2,17,18            ldb   R18,[R16++]      R18 = [R16++];
7bf0: ae,17,1a            ldzbw R1a,[R16++]      wR1a = [R16++];
7bf3: b2,17,19            ldb   R19,[R16++]      R19 = [R16++];
7bf6: ae,17,14            ldzbw R14,[R16++]      wR14 = [R16++];
7bf9: c8,16               push  R16              push(R16);
7bfb: 73,1b,a6,01,18      an2b  R18,[R1a+1a6]    R18 &= [R1a+1a6];
7c00: df,05               je    7c07             if (R18 != 0)  {
7c02: 92,14,19            orb   R19,[R14]        R19 |= [R14];
7c05: 20,05               sjmp  7c0c             goto 7c0c; }

7c07: 12,19               cplb  R19              R19 = ~R19;
7c09: 72,14,19            an2b  R19,[R14]        R19 &= [R14];
7c0c: c6,14,19            stb   R19,[R14]        [R14] = R19;
7c0f: f0                  ret                    return;

   Sub_7c10:
7c10: cc,18               pop   R18              R18 = pop();
7c12: b2,19,3c            ldb   R3c,[R18++]      R3c = [R18++];
7c15: 31,9e,08            jnb   B1,R9e,7c20      if (B1_E4OD_9e = 1)  {
7c18: 70,4b,3c            an2b  R3c,R4b          R3c &= R4b;
7c1b: df,03               je    7c20             if (R3c != 0)  {
7c1d: 91,04,2f            orb   R2f,4            B2_VIP_flags4 = 1; } }
7c20: 26,de               sjmp  7b00             goto Sub_7b00;

   Sub_7c22:
7c22: 71,fb,2f            an2b  R2f,fb           B2_VIP_flags4 = 0;
7c25: 56,37,00,38         ad3b  R38,R0,[R36++]   R38 = [R36++];
7c29: df,14               je    7c3f             if (R38 != 0)  {
7c2b: ae,37,14            ldzbw R14,[R36++]      wR14 = [R36++];
7c2e: b2,37,17            ldb   R17,[R36++]      R17 = [R36++];
7c31: 08,01,3c            shrw  R3c,1            R3c >>= 1;
7c34: d3,03               jnc   7c39             if (B0_R3c = 1)  {
7c36: 91,04,2f            orb   R2f,4            B2_VIP_flags4 = 1; }
7c39: ef,cc,fe            call  7b08             Sub_7b08 ();
7c3c: e0,38,ec            djnz  R38,7c2b         R38--;
                                                 if (R38 != 0) goto 7c2b; }
7c3f: f0                  ret                    return;

   EGO_TEST_TMR_CLEAR:
7c40: 56,31,00,34         ad3b  R34,R0,[R30++]   R34 = [R30++];
7c44: df,1b               je    7c61             if (R34 != 0)  {
7c46: ae,31,42            ldzbw R42,[R30++]      wR42 = [R30++];
7c49: 44,fe,42,32         ad3w  R32,R42,Rfe      R32 = R42 + cb5a;
7c4d: b3,33,63,01,32      ldb   R32,[R32+163]    R32 = [R32+163];
7c52: 9b,43,00,04,32      cmpb  R32,[R42+400]    
7c57: d3,05               jnc   7c5e             if (R32 >= [R42+400])  {
7c59: c7,43,00,04,00      stb   R0,[R42+400]     [R42+400] = 0; }
7c5e: e0,34,e5            djnz  R34,7c46         R34--;
                                                 if (R34 != 0) goto 7c46; }
7c61: f0                  ret                    return;

   Calculate_ETV_OCM_MIN:
7c62: b0,91,1a            ldb   R1a,R91          R1a = VBAT;
7c65: 79,a0,1a            sb2b  R1a,a0           R1a -= a0;                        # (VBAT - 10.0)
7c68: db,02               jc    7c6c             if (R1a < 0)  {
7c6a: 11,1a               clrb  R1a              R1a = 0; }                        # (Clip to zero)
7c6c: b3,fd,b1,00,3c      ldb   R3c,[Rfc+b1]     R3c = ETV_GAIN_BAT;
7c71: 7c,3c,1a            ml2b  R1a,R3c          wR1a *= R3c;                      # ((VBAT - 10.0) * ETV_GAIN_BAT)
7c74: b3,fd,b0,00,1c      ldb   R1c,[Rfc+b0]     R1c = ETV_GAIN;
7c79: b3,e8,d1,3c         ldb   R3c,[Re8+d1]     R3c = TV_COUNTS;
7c7d: 7c,3c,1c            ml2b  R1c,R3c          wR1c *= R3c;                      # (ETV_GAIN * TV_COUNTS)
7c80: a3,fd,ae,00,1e      ldw   R1e,[Rfc+ae]     R1e = ETV_BIAS;
7c85: 68,1c,1e            sb2w  R1e,R1c          R1e -= R1c;                       # (ETV_BIAS - (ETV_GAIN * TV_COUNTS))
7c88: db,02               jc    7c8c             if (R1e < 0)  {
7c8a: 01,1e               clrw  R1e              R1e = 0; }                        #  (Clip to zero)
7c8c: 09,01,1a            shlw  R1a,1            R1a <<= 1;
7c8f: d3,03               jnc   7c94             if (B15_R1a = 1)  {
7c91: bd,ff,1a            ldsbw R1a,ff           swR1a = ff; }
7c94: 64,1a,1e            ad2w  R1e,R1a          R1e += R1a;
7c97: d3,03               jnc   7c9c             if (R1e > ffff)  {
7c99: bd,ff,1e            ldsbw R1e,ff           swR1e = ff; }
7c9c: c3,e8,c0,1e         stw   R1e,[Re8+c0]     ETV_OCM_MIN = R1e;
7ca0: f0                  ret                    return;

   VO_EOTS_COM1:
7ca1: 3e,2e,22            jb    B6,R2e,7cc6      if (Egrfg2 = 0)  {
7ca4: ef,21,ff            call  7bc8             Reset_STO ();
7ca7: ef,96,09            call  8640             HW_Check ();
7caa: ef,3e,f5            call  71eb             Get_DiagCodes ();
7cad: 34,2a,08            jnb   B4,R2a,7cb8      if (DISABLE_NOSTART = 1)  {
   FAIL_Loop:
7cb0: ef,0d,ff            call  7bc0             Set_STO ();
7cb3: b1,ff,d5            ldb   Rd5,ff           Rd5 = ff;
7cb6: 27,f8               sjmp  7cb0             goto FAIL_Loop; }

7cb8: ef,51,00            call  7d0c             VO_ROM_COM1 ();
7cbb: 11,38               clrb  R38              R38 = 0;
7cbd: 91,40,2e            orb   R2e,40           Egrfg2 = 1;
7cc0: 91,40,2a            orb   R2a,40           B6_NO_START_2a = 1;
7cc3: 39,30,25            jb    B1,R30,7ceb      if (B1_R30 = 1) goto 7ceb; }
7cc6: a3,e4,b6,3a         ldw   R3a,[Re4+b6]     R3a = PUTMR;
7cca: 8b,e2,85,3a         cmpw  R3a,[Re2+85]     
7cce: d3,28               jnc   7cf8             if (R3a < V_LANSDTM) return;
7cd0: a3,e4,3c,3a         ldw   R3a,[Re4+3c]     R3a = TSSTIL_TMR;
7cd4: 8b,e2,83,3a         cmpw  R3a,[Re2+83]     
7cd8: d3,1e               jnc   7cf8             if (R3a < V_HICKOKTM) return;
7cda: fa                  di                     interrupts OFF;
7cdb: ff                  nop                    
7cdc: 71,df,48            an2b  R48,df           STO_TRIGGER = 0;
7cdf: 45,0a,00,06,3a      ad3w  R3a,R6,a         R3a = IO_Timer + a;
7ce4: 28,22               scall 7d08             Sub_7d08 ();
7ce6: 28,11               scall 7cf9             Sub_7cf9 ();
7ce8: 28,0f               scall 7cf9             Sub_7cf9 ();
7cea: fb                  ei                     interrupts ON; }
7ceb: 20,aa               sjmp  7d97             goto SET_VIP_TIMER_EX;

   Sub_7ced:
7ced: 3f,46,08            jb    B7,R46,7cf8      if (PUMP = 0)  {
7cf0: 32,2a,05            jnb   B2,R2a,7cf8      if (VIP_ENABLE = 1)  {
7cf3: ef,ef,02            call  7fe5             Sub_7fe5 ();
7cf6: 20,9f               sjmp  7d97             goto SET_VIP_TIMER_EX; } } } }

7cf8: f0                  ret                    return;

   Sub_7cf9:
7cf9: b1,19,0d            ldb   Rd,19            HSO_Cmd = 19;                     # NO INTERRUPT OUT, SET OUTPUT HIGH, HSO#9
7cfc: 28,06               scall 7d04             Sub_7d04 ();
7cfe: b1,09,0d            ldb   Rd,9             HSO_Cmd = 9;                      # NO INTERRUPT OUT, SET OUTPUT LOW, HSO#9
7d01: 28,01               scall 7d04             Sub_7d04 ();
7d03: f0                  ret                    return;

   Sub_7d04:
7d04: 65,42,03,3a         ad2w  R3a,342          R3a += ETVOCM;
   Sub_7d08:
7d08: a0,3a,0e            ldw   Re,R3a           HSI_Time_lo = R3a;
7d0b: f0                  ret                    return;

############################################################
# ROM Checksum
############################################################
   VO_ROM_COM1:
7d0c: 01,30               clrw  R30              R30 = 0;
7d0e: 01,3c               clrw  R3c              R3c = 0;
7d10: a1,34,7d,42         ldw   R42,7d34         R42 = CheckSumBase;
7d14: a2,43,3a            ldw   R3a,[R42++]      R3a = [R42++];
7d17: a2,43,3e            ldw   R3e,[R42++]      R3e = [R42++];
7d1a: b1,ff,d5            ldb   Rd5,ff           Rd5 = ff;
7d1d: 66,3b,3c            ad2w  R3c,[R3a++]      R3c += [R3a++];
7d20: 88,3e,3a            cmpw  R3a,R3e          
7d23: d7,f5               jne   7d1a             if (R3a != R3e) goto 7d1a;
7d25: 66,3b,3c            ad2w  R3c,[R3a++]      R3c += [R3a++];
7d28: 88,3c,00            cmpw  R0,R3c           
7d2b: df,05               je    7d32             if (R3c != 0)  {
7d2d: ef,99,03            call  80c9             SET_SERVICE_CODE (                #511   | ROM test failed                    |    X    |      |       |
7d30: 11,05                     #arg 1              511 ); }
7d32: 20,63               sjmp  7d97             goto SET_VIP_TIMER_EX;

7d34: 00,20               word   2000            CheckSumBase                      # Start address (0x2000)
7d36: fe,df               word   dffe            CheckSumEnd                       # End address  (0xdffe)
7d38: 00,00               word      0

   TEST_AD_SWITCHES_1:
7d3a: 28,f9               scall 7e35             Sub_7e35 (
7d3c: 7e,f0                     #arg 1              ECTMIN,
7d3e: 10,01                     #arg 2              IECT,
7d40: 17,01                     #arg 3              117 );
7d42: 3a,2f,16            jb    B2,R2f,7d5b      if (B2_VIP_flags4 = 0)  {
7d45: 28,ee               scall 7e35             Sub_7e35 (
7d47: 10,01                     #arg 1              IECT,
7d49: 80,f0                     #arg 2              ECTMAX,
7d4b: 18,01                     #arg 3              118 );
7d4d: 3a,2f,0b            jb    B2,R2f,7d5b      if (B2_VIP_flags4 = 0)  {
7d50: ef,8a,03            call  80dd             Sub_80dd (
7d53: 10,01                     #arg 1              IECT,
7d55: ea,f0                     #arg 2              VIECT2,
7d57: e8,f0                     #arg 3              VIECT1,
7d59: 16,01                     #arg 4              116 ); } }
7d5b: 28,d8               scall 7e35             Sub_7e35 (
7d5d: 12,b0                     #arg 1              TOTMIN,
7d5f: 08,01                     #arg 2              ITOT,
7d61: 38,06                     #arg 3              638 );
7d63: 3a,2f,16            jb    B2,R2f,7d7c      if (B2_VIP_flags4 = 0)  {
7d66: 28,cd               scall 7e35             Sub_7e35 (
7d68: 08,01                     #arg 1              ITOT,
7d6a: 14,b0                     #arg 2              TOTMAX,
7d6c: 37,06                     #arg 3              637 );
7d6e: 3a,2f,0b            jb    B2,R2f,7d7c      if (B2_VIP_flags4 = 0)  {
7d71: ef,69,03            call  80dd             Sub_80dd (
7d74: 08,01                     #arg 1              ITOT,
7d76: 48,f1                     #arg 2              VITOT2,
7d78: 46,f1                     #arg 3              VITOT1,
7d7a: 36,06                     #arg 4              636 ); } }
7d7c: b3,e6,96,42         ldb   R42,[Re6+96]     R42 = MAPTMR;
7d80: 9b,e2,1d,42         cmpb  R42,[Re2+1d]     
7d84: d1,06               jleu  7d8c             if (R42 > VMPMAX)  {
7d86: 2b,41               scall 80c9             SET_SERVICE_CODE (                #126   | MAP/BP out of S-T range.           |    X    |  XX  |   X   |
7d88: 26,01                     #arg 1              126 );
7d8a: 20,0b               sjmp  7d97             goto SET_VIP_TIMER_EX; }

7d8c: ef,4e,03            call  80dd             Sub_80dd (
7d8f: 00,02                     #arg 1              MDELTA,
7d91: 0a,f1                     #arg 2              VMDEL1,
7d93: 0c,f1                     #arg 3              VMDEL2,
7d95: 26,01                     #arg 4              126 );
   SET_VIP_TIMER_EX:
7d97: c7,e4,41,00         stb   R0,[Re4+41]      VIP_TIMER_EX = 0;
7d9b: 17,38               incb  R38              R38++;
7d9d: f0                  ret                    return;

   TEST_AD_SWITCHES_2:
7d9e: 28,95               scall 7e35             Sub_7e35 (
7da0: 78,f0                     #arg 1              TAPMIN,
7da2: 1c,01                     #arg 2              ITP,
7da4: 22,01                     #arg 3              122 );
7da6: 3a,2f,16            jb    B2,R2f,7dbf      if (B2_VIP_flags4 = 0)  {
7da9: 28,8a               scall 7e35             Sub_7e35 (
7dab: 1c,01                     #arg 1              ITP,
7dad: 76,f0                     #arg 2              TAPMAX,
7daf: 23,01                     #arg 3              123 );
7db1: 3a,2f,0b            jb    B2,R2f,7dbf      if (B2_VIP_flags4 = 0)  {
7db4: ef,26,03            call  80dd             Sub_80dd (
7db7: 1c,01                     #arg 1              ITP,
7db9: 64,f0                     #arg 2              VTAP1,
7dbb: 66,f0                     #arg 3              VTAP2,
7dbd: 21,01                     #arg 4              121 ); } }
7dbf: 28,74               scall 7e35             Sub_7e35 (
7dc1: 70,f0                     #arg 1              ACTMIN,
7dc3: 12,01                     #arg 2              IACT,
7dc5: 12,01                     #arg 3              112 );
7dc7: 3a,2f,15            jb    B2,R2f,7ddf      if (B2_VIP_flags4 = 0)  {
7dca: 28,69               scall 7e35             Sub_7e35 (
7dcc: 12,01                     #arg 1              IACT,
7dce: 72,f0                     #arg 2              ACTMAX,
7dd0: 13,01                     #arg 3              113 );
7dd2: 3a,2f,0a            jb    B2,R2f,7ddf      if (B2_VIP_flags4 = 0)  {
7dd5: 2b,06               scall 80dd             Sub_80dd (
7dd7: 12,01                     #arg 1              IACT,
7dd9: e2,f0                     #arg 2              VIACT2,
7ddb: e0,f0                     #arg 3              VIACT1,
7ddd: 14,01                     #arg 4              114 ); } }
7ddf: 3c,9e,0d            jb    B4,R9e,7def      if (B4_EGREN_9e = 0)  {
7de2: ef,dd,05            call  83c2             Sub_83c2 (
7de5: 14,01                     #arg 1              IEGR,
7de7: d6,f0                     #arg 2              VEVPLL,
7de9: d2,f0                     #arg 3              EVPMIN,
7deb: 28,03                     #arg 4              328,
7ded: 34,03                     #arg 5              334 ); }
7def: 34,8e,04            jnb   B4,R8e,7df6      if (B4_A3C_8e = 1)  {             # STRATEGY MODULE: VO_ACCS_COM2
7df2: 2a,d5               scall 80c9             SET_SERVICE_CODE (                #539   | A/C Swith error                    |    X    |      |       |
7df4: 39,05                     #arg 1              539 ); }
7df6: 9b,e2,2f,00         cmpb  R0,[Re2+2f]      
7dfa: df,0c               je    7e08             if ([Re2+2f] != 0)  {
7dfc: 2a,df               scall 80dd             Sub_80dd (
7dfe: 18,01                     #arg 1              INDS,
7e00: 26,f1                     #arg 2              VND1,
7e02: 28,f1                     #arg 3              VND2,
7e04: 54,06                     #arg 4              654 );
7e06: 20,0a               sjmp  7e12             goto 7e12; }

7e08: 2a,d3               scall 80dd             Sub_80dd (
7e0a: 18,01                     #arg 1              INDS,
7e0c: 2a,f1                     #arg 2              VND3,
7e0e: 2c,f1                     #arg 3              VND4,
7e10: 55,06                     #arg 4              655 );
7e12: b3,fe,2a,42         ldb   R42,[Rfe+2a]     R42 = PSPSHP;
7e16: e0,42,08            djnz  R42,7e21         R42--;
                                                 if (R42 != 0) goto 7e21;
7e19: 30,8f,05            jnb   B0,R8f,7e21      if (B0_POWSFG_8f = 1)  {
7e1c: ef,aa,02            call  80c9             SET_SERVICE_CODE (                #519   | PSPS ckt. open.                    |    X    |      |       |
7e1f: 19,05                     #arg 1              519 ); } }
7e21: 28,12               scall 7e35             Sub_7e35 (                        #VO_IVPWR_COM1
7e23: 50,f0                     #arg 1              VKYPWR,
7e25: 0a,01                     #arg 2              IIVPWR,
7e27: 13,05                     #arg 3              513 );                         #513   | Failure in EEC ref. voltage.       |    X    |      |       |

# VO_4X4L_SWITCH_COM2
7e29: 31,9e,07            jnb   B1,R9e,7e33      if (B1_E4OD_9e = 1)  {
7e2c: 32,90,04            jnb   B2,R90,7e33      if (B2_I4X4L_90 = 1)  {
7e2f: 2a,98               scall 80c9             SET_SERVICE_CODE (                #633   | 4X4 Switch closed                  |    X    |      |       |
7e31: 33,06                     #arg 1              633 ); } }
7e33: 20,9c               sjmp  7ed1             goto 7ed1;

   Sub_7e35:
7e35: 2d,9b               scall 7bd2             GetBytes_R1a (
7e37: 06                        #arg 1              6 );
7e38: 71,fb,2f            an2b  R2f,fb           B2_VIP_flags4 = 0;
7e3b: 20,1e               sjmp  7e5b             goto 7e5b;

   Sub_7e3d:
7e3d: f8                  clc                    CY = 0;
7e3e: 20,01               sjmp  7e41             goto 7e41;

   Sub_7e40:
7e40: f9                  stc                    CY = 1;
7e41: cc,18               pop   R18              R18 = pop();
7e43: b2,19,1a            ldb   R1a,[R18++]      R1a = [R18++];
7e46: b2,19,1b            ldb   R1b,[R18++]      R1b = [R18++];
7e49: b2,19,1c            ldb   R1c,[R18++]      R1c = [R18++];
7e4c: b2,19,1d            ldb   R1d,[R18++]      R1d = [R18++];
7e4f: d3,05               jnc   7e56             if (CY = 1)  {
7e51: c9,00,7b            push  7b00             push(Sub_7b00);
7e54: 20,02               sjmp  7e58             goto 7e58; }

7e56: c8,18               push  R18              push(R18);
7e58: 91,04,2f            orb   R2f,4            B2_VIP_flags4 = 1;
7e5b: ad,1a,3e            ldzbw R3e,1a           wR3e = 1a;
7e5e: 28,26               scall 7e86             GET_ADDRESS ();
7e60: ad,1c,3e            ldzbw R3e,1c           wR3e = 1c;
7e63: 28,21               scall 7e86             GET_ADDRESS ();
7e65: a2,1a,42            ldw   R42,[R1a]        R42 = [R1a];
7e68: 8a,1c,42            cmpw  R42,[R1c]        
7e6b: d1,0b               jleu  7e78             if (R42 > [R1c])  {
7e6d: 3a,2f,0b            jb    B2,R2f,7e7b      if (B2_VIP_flags4 = 1) return;
7e70: a0,1e,1a            ldw   R1a,R1e          R1a = R1e;
7e73: 91,04,2f            orb   R2f,4            B2_VIP_flags4 = 1;
7e76: 22,55               sjmp  80cd             goto Sub_80cd; }

7e78: 71,fb,2f            an2b  R2f,fb           B2_VIP_flags4 = 0; }
7e7b: f0                  ret                    return;

   Sub_7e7c:
7e7c: cc,42               pop   R42              R42 = pop();
7e7e: b2,43,3e            ldb   R3e,[R42++]      R3e = [R42++];
7e81: b2,43,3f            ldb   R3f,[R42++]      R3f = [R42++];
7e84: c8,42               push  R42              push(R42);
#######################################################
# Decode complex addresses into their TRUE addresses (plain ones OK too)
# address decoded back to input register (via R16, R42 )
# Address is encoded as 1 bit=flag, 3 bits=base reg/2, 12 bits offset from reg
# NOTE encoding is HALF reg value (because of divide by 8)
# return value is then a POINTER (as a plain address) 
#######################################################
   GET_ADDRESS:
7e86: a2,3e,42            ldw   R42,[R3e]        R42 = [R3e];                      # get data from address
7e89: 37,43,14            jnb   B7,R43,7ea0      if (B7_R43 = 1)  {                # 7_R43 = 1 address encoded, else return unchanged
7e8c: ac,43,3a            ldzbw R3a,R43          wR3a = yR43;                      # Hi byte of value
7e8f: 71,70,3a            an2b  R3a,70           R3a &= 70;                        # Clear bottom nibble and flag
7e92: 08,03,3a            shrw  R3a,3            R3a >>= 3;                        #[ R3a /= 8]  ? # Rbase register (0-14 times 2 effectively)?
7e95: 71,0f,43            an2b  R43,f            R43 &= f;                         # Clear top nibble.  R42 = Offset address
7e98: 67,3b,f0,00,42      ad2w  R42,[R3a+f0]     R42 += [R3a+f0];                  # R42 += Rbase register (as pointer)
7e9d: c2,3e,42            stw   R42,[R3e]        [R3e] = R42; }                    # update input pointer to new address
7ea0: f0                  ret                    return;

   VO_FPM_COM2_TEST_1_2:
7ea1: b3,fe,7b,3a         ldb   R3a,[Rfe+7b]     R3a = V_FPMFLG;                   # VFPMFLG = 1 (Test enabled)
7ea5: e0,3a,03            djnz  R3a,7eab         R3a--;
                                                 if (R3a != 0) goto 7eab;          # (Skip to next test)
# BEGIN: FPM TEST 1 PROCESS
7ea8: 33,2c,04            jnb   B3,R2c,7eaf      if (B3_CODE_556 = 0) goto 7eaf; } # (No fuel pump OCC failure)
7eab: 17,38               incb  R38              R38++;                            # VIP_CNT_EX = fpm_test_3 + 1
7ead: 26,e8               sjmp  7d97             goto SET_VIP_TIMER_EX; }          # (Next test)

# BEGIN: FPM TEST 2 PROCESS
7eaf: 91,04,2c            orb   R2c,4            B2_VIP_FP_OVERRIDE = 1;
7eb2: 91,80,46            orb   R46,80           PUMP = 1;                         # (Command fuel pump on)
7eb5: ef,43,04            call  82fb             DELAY_SEC (
7eb8: 7c,f0                     #arg 1              V_FPMDLY );
7eba: 3b,90,04            jb    B3,R90,7ec1      if (B3_FPM_90 = 0)  {             # (Indicates pump off)
7ebd: 2a,0a               scall 80c9             SET_SERVICE_CODE (                #543   | FP Ckt Open Bat. to Relay          |    X    |      |   X   |
7ebf: 43,05                     #arg 1              543 ); }
7ec1: 26,d4               sjmp  7d97             goto SET_VIP_TIMER_EX;

   VO_FPM_COM2_TEST_3:
7ec3: ef,35,04            call  82fb             DELAY_SEC (
7ec6: 7c,f0                     #arg 1              V_FPMDLY );
7ec8: 33,90,04            jnb   B3,R90,7ecf      if (B3_FPM_90 = 1)  {
7ecb: 29,fc               scall 80c9             SET_SERVICE_CODE (                #542   | FP Ckt Open -ECA to Motor Ground   |    X    |      |   X   |
7ecd: 42,05                     #arg 1              542 ); }
7ecf: 26,c6               sjmp  7d97             goto SET_VIP_TIMER_EX;

7ed1: a1,dc,7e,34         ldw   R34,7edc         R34 = 7edc;
7ed5: 26,c0               sjmp  7d97             goto SET_VIP_TIMER_EX;

   VO_OCC_COM12:
7ed7: 29,0c               scall 7fe5             Sub_7fe5 ();
7ed9: c8,34               push  R34              push(R34);
7edb: f0                  ret                    return;

7edc: b3,fe,2b,3a         ldb   R3a,[Rfe+2b]     R3a = THRMHP;
7ee0: e0,3a,0e            djnz  R3a,7ef1         R3a--;
                                                 if (R3a != 0) goto 7ef1;
7ee3: 28,6c               scall 7f51             VO_OCC_COM12_Func1 (
7ee5: 53,05                     #arg 1              553,
7ee7: 40,47                     #arg 2              4740,
7ee9: f8                        #arg 3              f8 );
7eea: 28,65               scall 7f51             VO_OCC_COM12_Func1 (
7eec: 52,05                     #arg 1              552,
7eee: 01,46                     #arg 2              4601,
7ef0: fa                        #arg 3              fa );
7ef1: 9b,fe,27,00         cmpb  R0,[Rfe+27]      
7ef5: df,0e               je    7f05             if (CANPHP = 0) goto 7f05;
7ef7: b1,14,42            ldb   R42,14           R42 = 14;
7efa: c7,e6,90,42         stb   R42,[Re6+90]     [210] = R42;
7efe: 28,69               scall 7f69             VO_OCC_COM12_Func2 (
7f00: 65,05                     #arg 1              565,
7f02: 11                        #arg 2              11,
7f03: 02                        #arg 3              2,
7f04: fe                        #arg 4              fe );
7f05: 28,4a               scall 7f51             VO_OCC_COM12_Func1 (
7f07: 56,05                     #arg 1              556,
7f09: 80,46                     #arg 2              4680,
7f0b: 00                        #arg 3              0 );
7f0c: 88,30,00            cmpw  R0,R30           
7f0f: df,0e               je    7f1f             if (R30 = 0) goto 7f1f;
7f11: a3,31,8e,02,3a      ldw   R3a,[R30+28e]    R3a = [R30+28e];
7f16: 89,56,05,3a         cmpw  R3a,556          
7f1a: d7,03               jne   7f1f             if (R3a != 556) goto 7f1f;
7f1c: 91,08,2c            orb   R2c,8            B3_CODE_556 = 1;
7f1f: 3c,9e,07            jb    B4,R9e,7f29      if (B4_EGREN_9e = 1) goto 7f29;
7f22: 28,2d               scall 7f51             VO_OCC_COM12_Func1 (
7f24: 58,05                     #arg 1              558,
7f26: 04,46                     #arg 2              4604,
7f28: fc                        #arg 3              fc );
7f29: 31,9e,23            jnb   B1,R9e,7f4f      if (B1_E4OD_9e = 0) goto 7f4f;
7f2c: 28,23               scall 7f51             VO_OCC_COM12_Func1 (
7f2e: 21,06                     #arg 1              621,
7f30: 10,46                     #arg 2              4610,
7f32: 02                        #arg 3              2 );
7f33: 28,1c               scall 7f51             VO_OCC_COM12_Func1 (
7f35: 22,06                     #arg 1              622,
7f37: 20,46                     #arg 2              4620,
7f39: 04                        #arg 3              4 );
7f3a: 28,15               scall 7f51             VO_OCC_COM12_Func1 (
7f3c: 31,06                     #arg 1              631,
7f3e: 04,44                     #arg 2              4404,
7f40: 0a                        #arg 3              a );
7f41: 28,0e               scall 7f51             VO_OCC_COM12_Func1 (
7f43: 29,06                     #arg 1              629,
7f45: 08,a2                     #arg 2              a208,
7f47: 08                        #arg 3              8 );
7f48: 28,2e               scall 7f78             VO_OCC_COM12_Func4 (
7f4a: 26,06                     #arg 1              626,
7f4c: 03,00                     #arg 2              3,
7f4e: 06                        #arg 3              6 );
7f4f: 26,46               sjmp  7d97             goto SET_VIP_TIMER_EX;

#################################################################
# Five data bytes follow calls to this function (R1A,1B,1C,1D,1E)
# R1A, R1B - is Trouble Code if there is an error
# R1C - MASK
# R1D - parameter flag to select device?
# R1E - TIME???????
# The OCC AD channel must be a supply voltage to the actuators
# This performs 'circuit' tests
# Measure any variation in voltage when the selected output line is switched
#################################################################
   VO_OCC_COM12_Func1:
7f51: 28,44               scall 7f97             Sub_7f97 ();
7f53: ac,1d,20            ldzbw R20,R1d          wR20 = yR1d;
7f56: b2,20,1d            ldb   R1d,[R20]        R1d = [R20];
7f59: 94,1c,1d            xorb  R1d,R1c          R1d ^= R1c;
7f5c: c6,20,1d            stb   R1d,[R20]        [R20] = R1d;
7f5f: 28,52               scall 7fb3             Sub_7fb3 ();
7f61: 94,1c,1d            xorb  R1d,R1c          R1d ^= R1c;
7f64: c6,20,1d            stb   R1d,[R20]        [R20] = R1d;
7f67: 20,2b               sjmp  7f94             goto 7f94;

   VO_OCC_COM12_Func2:
7f69: 28,2c               scall 7f97             Sub_7f97 ();
7f6b: b1,80,42            ldb   R42,80           R42 = 80;
7f6e: c6,1c,42            stb   R42,[R1c]        [R1c] = R42;
7f71: 28,40               scall 7fb3             Sub_7fb3 ();
7f73: c6,1c,00            stb   R0,[R1c]         [R1c] = 0;
7f76: 20,1c               sjmp  7f94             goto 7f94;

   VO_OCC_COM12_Func4:
7f78: 28,1d               scall 7f97             Sub_7f97 ();
7f7a: fa                  di                     interrupts OFF;
7f7b: ff                  nop                    
7f7c: 45,03,00,06,0e      ad3w  Re,R6,3          HSI_Time_lo = IO_Timer + 3;
7f81: 55,10,1c,0d         ad3b  Rd,R1c,10        HSO_Cmd = R1c + 10;
7f85: fb                  ei                     interrupts ON;
7f86: 28,2b               scall 7fb3             Sub_7fb3 ();
7f88: fa                  di                     interrupts OFF;
7f89: ff                  nop                    
7f8a: 45,03,00,06,0e      ad3w  Re,R6,3          HSI_Time_lo = IO_Timer + 3;
7f8f: 51,0f,1c,0d         an3b  Rd,R1c,f         HSO_Cmd = R1c & f;
7f93: fb                  ei                     interrupts ON;
7f94: cc,34               pop   R34              R34 = pop();
7f96: f0                  ret                    return;

   Sub_7f97:
7f97: 28,33               scall 7fcc             Sub_7fcc ();
7f99: cc,20               pop   R20              R20 = pop();
7f9b: ef,34,fc            call  7bd2             GetBytes_R1a (
7f9e: 05                        #arg 1              5 );
7f9f: c8,20               push  R20              push(R20);
7fa1: 16,1e               sexb  R1e              swR1e = R1e;
7fa3: 65,bc,01,1e         ad2w  R1e,1bc          R1e += TSSTIL_TMR;
7fa7: 64,fe,1e            ad2w  R1e,Rfe          R1e += cb5a;
7faa: a3,e4,8c,16         ldw   R16,[Re4+8c]     R16 = IOCC;
7fae: c3,e4,04,16         stw   R16,[Re4+4]      OCCSAV = R16;
7fb2: f0                  ret                    return;

   Sub_7fb3:
7fb3: 28,17               scall 7fcc             Sub_7fcc ();
7fb5: a3,e4,04,16         ldw   R16,[Re4+4]      R16 = OCCSAV;
7fb9: 6b,e4,8c,16         sb2w  R16,[Re4+8c]     R16 -= IOCC;
7fbd: db,02               jc    7fc1             if (R16 < 0)  {
7fbf: 03,16               negw  R16              R16 = -R16; }
7fc1: 8a,1e,16            cmpw  R16,[R1e]        
7fc4: db,03               jc    7fc9             if (R16 < [R1e])  {
7fc6: e7,31,04            jump  83fa             goto 83fa; }

7fc9: 01,1a               clrw  R1a              R1a = 0;
7fcb: f0                  ret                    return;

   Sub_7fcc:
7fcc: c0,3c,06            stw   R6,R3c           R3c = IO_Timer;
7fcf: 48,3c,06,3e         sb3w  R3e,R6,R3c       R3e = IO_Timer - R3c;
7fd3: 89,61,51,3e         cmpw  R3e,5161                                           # loop until 5161 IO times have passed(12.4ms)
7fd7: db,0b               jc    7fe4             if (R3e < 5161)  {
7fd9: ef,34,f2            call  7210             Set_DiagCodes ();
7fdc: ef,f0,bc            call  3ccf             Read_AD ();
7fdf: ef,09,f2            call  71eb             Get_DiagCodes ();
7fe2: 27,eb               sjmp  7fcf             goto 7fcf; }

7fe4: f0                  ret                    return;

   Sub_7fe5:
7fe5: 01,46               clrw  R46              R46 = 0;
7fe7: fa                  di                     interrupts OFF;
7fe8: 45,0f,00,06,0e      ad3w  Re,R6,f          HSI_Time_lo = IO_Timer + f;
7fed: 71,fb,44            an2b  R44,fb           B2_R44 = 0;
7ff0: 71,f7,a2            an2b  Ra2,f7           B3_FLG_LK_CM_a2 = 0;
7ff3: b1,03,0d            ldb   Rd,3             HSO_Cmd = 3;                      # NO INTERRUPT OUT, SET OUTPUT LOW, HSO#3
7ff6: fb                  ei                     interrupts ON;
7ff7: 01,92               clrw  R92              ISCDTY = 0;
7ff9: c3,e4,76,00         stw   R0,[Re4+76]      PURGDC = 0;
7ffd: f0                  ret                    return;

   VO_EPC_SOLENOID_COM1:
7ffe: 31,9e,51            jnb   B1,R9e,8052      if (B1_E4OD_9e = 1)  {
8001: 9b,e2,cf,00         cmpb  R0,[Re2+cf]      
8005: df,4b               je    8052             if (V_ETV_TEST != 0)  {           # V_ETV_TEST
8007: b3,e2,cd,42         ldb   R42,[Re2+cd]     R42 = TV1CNTS_TEST;               # TV1CNTS_TEST
800b: c7,e8,d1,42         stb   R42,[Re8+d1]     TV_COUNTS = R42;
800f: ef,e9,02            call  82fb             DELAY_SEC (
8012: cb,f0                     #arg 1              ETV_TEST_SEC );
8014: 25,81               sjmp  7d97             goto SET_VIP_TIMER_EX;

   VO_EPC_SOLENOID_COM1_624:
8016: ef,f7,f1            call  7210             Set_DiagCodes ();
8019: ef,46,fc            call  7c62             Calculate_ETV_OCM_MIN ();
801c: ef,cc,f1            call  71eb             Get_DiagCodes ();
801f: a3,e8,c2,42         ldw   R42,[Re8+c2]     R42 = ETVOCM;
8023: c3,e4,2e,42         stw   R42,[Re4+2e]     V_ETVOCM_SAV = R42;
8027: 88,42,1e            cmpw  R1e,R42          
802a: d1,29               jleu  8055             if (R1e <= R42) goto 8055;
802c: 28,9b               scall 80c9             SET_SERVICE_CODE (
802e: 24,06                     #arg 1              624 );
8030: 20,1c               sjmp  804e             goto 804e;

   Sub_8032:
8032: b3,e2,ce,42         ldb   R42,[Re2+ce]     R42 = TV2CNTS_TEST;
8036: 27,d3               sjmp  800b             goto 800b;

   VO_EPC_SOLENOID_COM1_625:
8038: a3,e4,2e,3a         ldw   R3a,[Re4+2e]     R3a = V_ETVOCM_SAV;
803c: 6b,e8,c2,3a         sb2w  R3a,[Re8+c2]     R3a -= ETVOCM;                    # (V_ETVOCM_SAV - ETVOCM)
8040: db,02               jc    8044             if (R3a < 0)  {
8042: 03,3a               negw  R3a              R3a = -R3a; }                     # ABS(V_ETVOCM_SAV - ETVOCM)
8044: 8b,e2,d1,3a         cmpw  R3a,[Re2+d1]     
8048: db,04               jc    804e             if (R3a < VETVDT)  {              # VETVDT
804a: 28,7d               scall 80c9             SET_SERVICE_CODE (
804c: 25,06                     #arg 1              625 ); }
804e: c7,e8,d1,00         stb   R0,[Re8+d1]      TV_COUNTS = 0; } }
8052: b1,0a,38            ldb   R38,a            R38 = a; }
8055: 25,40               sjmp  7d97             goto SET_VIP_TIMER_EX;

   Sub_8057:
8057: 3b,2b,13            jb    B3,R2b,806d      if (STO_WORKING = 0)  {
805a: 17,38               incb  R38              R38++;
805c: 2f,87               scall 7fe5             Sub_7fe5 ();
805e: 85,00,00,46         xrw   R46,0            R46 = R46;
8062: 45,03,00,06,0e      ad3w  Re,R6,3          HSI_Time_lo = IO_Timer + 3;
8067: b1,09,0d            ldb   Rd,9             HSO_Cmd = 9;                      # NO INTERRUPT OUT, SET OUTPUT LOW, HSO#9
806a: 71,fd,45            an2b  R45,fd           STO_STATE = 0; }
806d: c3,e4,02,00         stw   R0,[Re4+2]       OUTTMR = 0;
8071: 71,f7,2d            an2b  R2d,f7           B3_R2d = 0;
8074: f0                  ret                    return;

   Sub_8075:
8075: a3,fe,6c,1c         ldw   R1c,[Rfe+6c]     R1c = VTAP5;
8079: 8b,e4,9c,1c         cmpw  R1c,[Re4+9c]     
807d: db,03               jc    8082             if (R1c < ITP)  {
807f: 91,08,2d            orb   R2d,8            B3_R2d = 1; }
8082: 33,2d,36            jnb   B3,R2d,80bb      if (B3_R2d = 1)  {
8085: a3,fe,6e,1c         ldw   R1c,[Rfe+6e]     R1c = VTAP6;
8089: 8b,e4,9c,1c         cmpw  R1c,[Re4+9c]     
808d: d1,2c               jleu  80bb             if (R1c > ITP)  {
808f: 31,45,02            jnb   B1,R45,8094      if (STO_STATE = 1)  {
8092: 27,c8               sjmp  805c             goto 805c; }

8094: 85,75,42,46         xrw   R46,4275         AM1 ^= 1;
                                                 EVR ^= 1;
                                                 FLG_SS_1 ^= 1;
                                                 FLG_SS_2 ^= 1;
                                                 WOT_AC ^= 1;
                                                 B1_CANP_OUT_47 ^= 1;
                                                 B6_AM2_47 ^= 1;
8098: a1,00,80,42         ldw   R42,8000         R42 = 8000;
809c: c0,92,42            stw   R42,R92          ISCDTY = R42;
809f: c3,e4,76,42         stw   R42,[Re4+76]     PURGDC = R42;
80a3: fa                  di                     interrupts OFF;
80a4: 45,0f,00,06,0e      ad3w  Re,R6,f          HSI_Time_lo = IO_Timer + f;
80a9: 91,04,44            orb   R44,4            B2_R44 = 1;
80ac: 91,08,a2            orb   Ra2,8            B3_FLG_LK_CM_a2 = 1;
80af: b1,13,0d            ldb   Rd,13            HSO_Cmd = 13;                     # NO INTERRUPT OUT, SET OUTPUT HIGH, HSO#3
80b2: b1,19,0d            ldb   Rd,19            HSO_Cmd = 19;                     # NO INTERRUPT OUT, SET OUTPUT HIGH, HSO#9
80b5: 91,02,45            orb   R45,2            STO_STATE = 1;
80b8: fb                  ei                     interrupts ON;
80b9: 27,b2               sjmp  806d             goto 806d; } }

80bb: a3,e4,02,1a         ldw   R1a,[Re4+2]      R1a = OUTTMR;
80bf: 89,58,02,1a         cmpw  R1a,258          
80c3: d1,02               jleu  80c7             if (R1a > 258)  {
80c5: 27,95               sjmp  805c             goto 805c; }

80c7: 27,ab               sjmp  8074             return;

   SET_SERVICE_CODE:
80c9: ef,06,fb            call  7bd2             GetBytes_R1a (
80cc: 02                        #arg 1              2 );
   Sub_80cd:
80cd: c3,31,90,02,1a      stw   R1a,[R30+290]    [R30+290] = R1a;
80d2: 89,26,00,30         cmpw  R30,26           
80d6: db,04               jc    80dc             if (R30 < 26)  {
80d8: 65,02,00,30         ad2w  R30,2            R30 += 2; }
80dc: f0                  ret                    return;

   Sub_80dd:
80dd: ef,f2,fa            call  7bd2             GetBytes_R1a (
80e0: 08                        #arg 1              8 );
80e1: 2d,99               scall 7e7c             Sub_7e7c (
80e3: 1c,00                     #arg 1              1c );
80e5: 2d,95               scall 7e7c             Sub_7e7c (
80e7: 1e,00                     #arg 1              1e );
80e9: a2,1a,42            ldw   R42,[R1a]        R42 = [R1a];
80ec: 8a,1c,42            cmpw  R42,[R1c]        
80ef: d3,05               jnc   80f6             if (R42 >= [R1c])  {
80f1: 8a,1e,42            cmpw  R42,[R1e]        
80f4: d1,05               jleu  80fb             if (R42 <= [R1e]) return; }
80f6: a0,20,1a            ldw   R1a,R20          R1a = R20;
80f9: 2f,d2               scall 80cd             Sub_80cd (); }
80fb: f0                  ret                    return;

   Sub_80fc:
80fc: 91,02,2e            orb   R2e,2            Kflg_local = 1;
80ff: e7,36,04            jump  8538             goto Sub_8538;

   VR_RUN_INIT_COM8:
8102: ef,c3,fa            call  7bc8             Reset_STO ();
8105: 01,30               clrw  R30              R30 = 0;
8107: 71,fc,a3            an2b  Ra3,fc           B0_V_MODE_SETUP_a3 = 0;
                                                 B1_STI_RESET_a3 = 0;
810a: 51,ac,a6,22         an3b  R22,Ra6,ac       R22 = (B2_TFMFLG_a6|
                                                        B3_MFMFLG_a6|
                                                        B5_CFMFLG_a6|
                                                        B7_AFMFLG_a6);
   FMEM_FAULT_PRESENT_and_INITIALATION_LOGIC:
810e: df,46               je    8156             if (R22 != 0)  {
8110: 2f,b7               scall 80c9             SET_SERVICE_CODE (
8112: 98,09                     #arg 1              998 );                         # 998,FMEM failure/Failed (open)EPC Output Driver
8114: 33,a6,0d            jnb   B3,Ra6,8124      if (B3_MFMFLG_a6 = 1)  {
8117: 30,a7,06            jnb   B0,Ra7,8120      if (B0_V_VACFLG_a7 = 1)  {
811a: 2f,ad               scall 80c9             SET_SERVICE_CODE (
811c: 28,01                     #arg 1              128 );                         # 128,MAP vacuum circuit failure
811e: 20,04               sjmp  8124             goto 8124; }

8120: 2f,a7               scall 80c9             SET_SERVICE_CODE (
8122: 26,01                     #arg 1              126 ); }                       # 126,MAP/BP out of S-T range.
8124: a3,e4,26,22         ldw   R22,[Re4+26]     R22 = [1a6];
8128: 37,22,04            jnb   B7,R22,812f      if (B7_R22 = 1)  {
812b: 2f,9c               scall 80c9             SET_SERVICE_CODE (
812d: 12,01                     #arg 1              112 ); }                       # 112,254 deg. ind. ACT-ckt. grounded.
812f: 36,22,04            jnb   B6,R22,8136      if (B6_R22 = 1)  {
8132: 2f,95               scall 80c9             SET_SERVICE_CODE (
8134: 13,01                     #arg 1              113 ); }                       # 113,-40 deg. ind. ACT-sensor ckt. open.
8136: 35,22,04            jnb   B5,R22,813d      if (B5_R22 = 1)  {
8139: 2f,8e               scall 80c9             SET_SERVICE_CODE (
813b: 17,01                     #arg 1              117 ); }                       # 117,254 deg. ind. ECT-ckt. grounded.
813d: 34,22,04            jnb   B4,R22,8144      if (B4_R22 = 1)  {
8140: 2f,87               scall 80c9             SET_SERVICE_CODE (
8142: 18,01                     #arg 1              118 ); }                       # 118,-40 deg. ind. ECT-sensor ckt. open.
8144: 31,22,04            jnb   B1,R22,814b      if (B1_R22 = 1)  {
8147: 2f,80               scall 80c9             SET_SERVICE_CODE (
8149: 22,01                     #arg 1              122 ); }                       # 122,TPS ckt. below minimum voltage.
814b: 30,22,04            jnb   B0,R22,8152      if (B0_R22 = 1)  {
814e: 2f,79               scall 80c9             SET_SERVICE_CODE (
8150: 23,01                     #arg 1              123 ); }                       # 123,TPS ckt. above max. voltage.
8152: b1,1f,38            ldb   R38,1f           R38 = 1f;
8155: f0                  ret                    return; }

8156: 91,10,2f            orb   R2f,10           B4_VRUN_ISCFLG_2f = 1;
8159: 91,04,9f            orb   R9f,4            B2_OLFLG = 1;
815c: a3,fe,60,96         ldw   R96,[Rfe+60]     LAMBSE1 = VRLAM;
8160: a3,e2,a9,3e         ldw   R3e,[Re2+a9]     R3e = [Re2-57];
8164: c3,e4,36,3e         stw   R3e,[Re4+36]     RVIPRPM = R3e;
8168: 71,bf,4f            an2b  R4f,bf           B6_KNOCK_STRATEGY_4f = 0;
816b: c0,98,00            stw   R0,R98           EFTR = 0;
816e: a1,00,01,42         ldw   R42,100          R42 = 100;
8172: c3,e4,f6,42         stw   R42,[Re4+f6]     KAMRF1 = R42;
8176: a3,fe,52,cc         ldw   Rcc,[Rfe+52]     SAF = VIPSPK;
817a: 01,c0               clrw  Rc0              EGRDC = 0;
817c: 91,40,46            orb   R46,40           WOT_AC = 1;
817f: 71,fe,46            an2b  R46,fe           AM1 = 0;
8182: 71,bf,47            an2b  R47,bf           B6_AM2_47 = 0;
8185: c3,e4,76,00         stw   R0,[Re4+76]      PURGDC = 0;
8189: 91,0a,a4            orb   Ra4,a            BRK_NEVER_OFF = 1;
                                                 BRK_NEVER_ON = 1;
818c: 71,fc,29            an2b  R29,fc           B0_POWOFF_29 = 0;
                                                 B1_POWON_29 = 0;
818f: 71,f9,49            an2b  R49,f9           B1_TCS_SHORT_49 = 0;
                                                 B2_TCS_OPEN_49 = 0;
8192: e7,6f,02            jump  8404             goto EXIT;

   VR_HICAM_ISC_COM2:
8195: 29,64               scall 82fb             DELAY_SEC (
8197: aa,f0                     #arg 1              VISDL1 );
8199: 28,0b               scall 81a6             Sub_81a6 (
819b: 32,00                     #arg 1              32,
819d: a4,f0                     #arg 2              ISUBND,
819f: 12,04                     #arg 3              412 );
81a1: 91,20,2f            orb   R2f,20           B5_DISABLE_ISC_2f = 1;
81a4: 22,5e               sjmp  8404             goto EXIT;

   Sub_81a6:
81a6: af,e4,e3,32         ldzbw R32,[Re4+e3]     wR32 = DSDRPM;
81aa: 09,06,32            shlw  R32,6            R32 <<= 6;
81ad: 6b,e4,9e,32         sb2w  R32,[Re4+9e]     R32 -= NBAR;
81b1: db,02               jc    81b5             if (R32 < 0)  {
81b3: 03,32               negw  R32              R32 = -R32; }                     # |DSDRPM - NBAR|
81b5: e7,7d,fc            jump  7e35             goto Sub_7e35;

   Sub_81b8:
81b8: 2f,23               scall 80dd             Sub_80dd (
81ba: 10,01                     #arg 1              110,
81bc: ee,f0                     #arg 2              VIECT4,
81be: ec,f0                     #arg 3              VIECT3,
81c0: 16,01                     #arg 4              116 );
81c2: 2f,19               scall 80dd             Sub_80dd (
81c4: 08,01                     #arg 1              108,
81c6: 4c,f1                     #arg 2              VITOT3,
81c8: 4a,f1                     #arg 3              VITOT4,
81ca: 36,06                     #arg 4              636 );
81cc: b3,e6,96,42         ldb   R42,[Re6+96]     R42 = MAPTMR;
81d0: 9b,e2,1d,42         cmpb  R42,[Re2+1d]     
81d4: d1,06               jleu  81dc             if (R42 > [Re2+1d])  {
81d6: 2e,f1               scall 80c9             SET_SERVICE_CODE (
81d8: 26,01                     #arg 1              126 );                         # 126,MAP/BP out of S-T range.
81da: 20,0b               sjmp  81e7             goto 81e7; }

81dc: ef,fe,fe            call  80dd             Sub_80dd (
81df: 00,02                     #arg 1              200,
81e1: 0e,f1                     #arg 2              VMDEL3,
81e3: 10,f1                     #arg 3              VMDEL4,
81e5: 26,01                     #arg 4              126 );
81e7: 2e,f4               scall 80dd             Sub_80dd (
81e9: 1c,01                     #arg 1              11c,
81eb: 68,f0                     #arg 2              VTAP3,
81ed: 6a,f0                     #arg 3              VTAP4,
81ef: 21,01                     #arg 4              121 );
81f1: 2e,ea               scall 80dd             Sub_80dd (
81f3: 12,01                     #arg 1              112,
81f5: e6,f0                     #arg 2              VIACT4,
81f7: e4,f0                     #arg 3              VIACT3,
81f9: 14,01                     #arg 4              114 );
81fb: 22,07               sjmp  8404             goto EXIT;

   VR_EGO_COM1:
81fd: 9b,fe,74,00         cmpb  R0,[Rfe+74]      
8201: d7,05               jne   8208             if (V_EGOHP = 0)  {
8203: b1,0a,38            ldb   R38,a            R38 = a;
8206: 21,fc               sjmp  8404             goto EXIT; }

8208: a3,e4,9e,42         ldw   R42,[Re4+9e]     R42 = NBAR;
820c: 8b,fe,5c,42         cmpw  R42,[Rfe+5c]     
8210: db,04               jc    8216             if (R42 < VNMIN)  {               # NBAR >= VMIN ?
8212: b1,11,38            ldb   R38,11           R38 = 11;
8215: f0                  ret                    return; }

8216: 28,de               scall 82f6             Sub_82f6 ();
8218: 21,ea               sjmp  8404             goto EXIT;

   Sub_821a:
821a: 35,28,04            jnb   B5,R28,8221      if (EGOSTE = 1)  {
821d: 28,d7               scall 82f6             Sub_82f6 ();
821f: 21,e3               sjmp  8404             goto EXIT; }

8221: 28,97               scall 82ba             Sub_82ba (
8223: 5a,f0                     #arg 1              VIPLR1 );
8225: 28,d4               scall 82fb             DELAY_SEC (
8227: 62,f0                     #arg 1              VIPTM3 );
8229: 2e,9e               scall 80c9             SET_SERVICE_CODE (
822b: 73,01                     #arg 1              173 );
822d: 20,7a               sjmp  82a9             goto BLOCK_AA;

   Sub_822f:
822f: 3d,28,02            jb    B5,R28,8234      if (EGOSTE = 0)  {                # (RICH) ? 
8232: 21,d0               sjmp  8404             goto EXIT; }

8234: 28,7f               scall 82b5             Sub_82b5 (
8236: 58,f0                     #arg 1              VIPRR1 );
8238: a0,96,42            ldw   R42,R96          R42 = LAMBSE1;
823b: 8b,fe,54,42         cmpw  R42,[Rfe+54]     
823f: d1,04               jleu  8245             if (R42 > REQV)  {
8241: 15,38               decb  R38              R38--;
8243: 21,bf               sjmp  8404             goto EXIT; }

8245: 28,b4               scall 82fb             DELAY_SEC (
8247: 63,f0                     #arg 1              VIPTM4 );
8249: 2e,7e               scall 80c9             SET_SERVICE_CODE (
824b: 72,01                     #arg 1              172 );                         # 172,EGO sensor ckt. ind. system lean.
824d: 20,5a               sjmp  82a9             goto BLOCK_AA;

   VR_THERMAIR_COM2:
824f: 9b,e2,9b,00         cmpb  R0,[Re2+9b]      
8253: df,4f               je    82a4             if ([Re2-65] != 0)  {
8255: a3,fe,2b,42         ldw   R42,[Rfe+2b]     R42 = THRMHP;
8259: e0,42,48            djnz  R42,82a4         R42--;
                                                 if (R42 != 0) goto 82a4;
825c: 28,57               scall 82b5             Sub_82b5 (
825e: 58,f0                     #arg 1              VIPRR1 );
8260: 28,99               scall 82fb             DELAY_SEC (
8262: 39,f1                     #arg 1              VDLY1 );
8264: 81,01,40,46         orw   R46,4001         AM1 = 1;
                                                 B6_AM2_47 = 1;
8268: 21,9a               sjmp  8404             goto EXIT;

   AIR_UPSTREAM:
826a: 3d,28,0a            jb    B5,R28,8277      if (EGOSTE = 0)  {
826d: 28,8c               scall 82fb             DELAY_SEC (
826f: 3b,f1                     #arg 1              VIPTM2 );
8271: 2e,56               scall 80c9             SET_SERVICE_CODE (
8273: 11,03                     #arg 1              311 );
8275: 20,29               sjmp  82a0             goto AM1_AM2_OFF; }

8277: 71,bf,47            an2b  R47,bf           B6_AM2_47 = 0;
827a: 21,88               sjmp  8404             goto EXIT;

   AIR_DOWNSTREAM:
827c: 35,28,08            jnb   B5,R28,8287      if (EGOSTE = 1)  {
827f: 28,7a               scall 82fb             DELAY_SEC (
8281: 3c,f1                     #arg 1              VATMR2 );
8283: 2e,44               scall 80c9             SET_SERVICE_CODE (
8285: 12,03                     #arg 1              312 ); }
8287: 71,fe,46            an2b  R46,fe           AM1 = 0;
828a: 91,40,47            orb   R47,40           B6_AM2_47 = 1;
828d: 21,75               sjmp  8404             goto EXIT;

   BLOCK_F2_VR_THERMAIR_COM2:
828f: 9b,e2,9c,00         cmpb  R0,[Re2+9c]      
8293: df,0b               je    82a0             if ([Re2-64] != 0)  {
8295: 28,64               scall 82fb             DELAY_SEC (
8297: 3a,f1                     #arg 1              VDLY2 );
8299: 35,28,04            jnb   B5,R28,82a0      if (EGOSTE = 1)  {
829c: 2e,2b               scall 80c9             SET_SERVICE_CODE (
829e: 13,03                     #arg 1              313 ); } }
   AM1_AM2_OFF:
82a0: 61,fe,bf,46         an2w  R46,bffe         AM1 = 0;
                                                 B6_AM2_47 = 0; } }
82a4: b1,0a,38            ldb   R38,a            R38 = a;
82a7: 20,03               sjmp  82ac             goto 82ac;

   BLOCK_AA:
82a9: b1,0a,38            ldb   R38,a            R38 = a;
82ac: a3,fe,60,1c         ldw   R1c,[Rfe+60]     R1c = VRLAM;
82b0: c0,96,1c            stw   R1c,R96          LAMBSE1 = R1c;
82b3: 21,4f               sjmp  8404             goto EXIT;

   Sub_82b5:
82b5: 91,01,a4            orb   Ra4,1            B0_Ra4 = 1;
82b8: 20,03               sjmp  82bd             goto 82bd;

   Sub_82ba:
82ba: 71,fe,a4            an2b  Ra4,fe           B0_Ra4 = 0;
82bd: ef,12,f9            call  7bd2             GetBytes_R1a (
82c0: 02                        #arg 1              2 );
82c1: ef,b8,fb            call  7e7c             Sub_7e7c (
82c4: 1a,00                     #arg 1              1a );
82c6: 4b,e4,06,06,34      sb3w  R34,R6,[Re4+6]   R34 = IO_Timer - VIPLATM;
82cb: 6d,44,28,34         ml2w  R34,2844         lR34 *= 2844;
82cf: 4e,1a,36,3c         ml3w  R3c,R36,[R1a]    lR3c = wR36 * [R1a];
82d3: 30,a4,11            jnb   B0,Ra4,82e7      if (B0_Ra4 = 1)  {
82d6: 68,3e,96            sb2w  R96,R3e          LAMBSE1 -= R3e;
82d9: d1,06               jleu  82e1             if (LAMBSE1 > 0)  {
82db: 8b,fe,54,96         cmpw  R96,[Rfe+54]     
82df: db,15               jc    82f6             if (LAMBSE1 >= REQV) goto Sub_82f6; }
82e1: a3,fe,54,96         ldw   R96,[Rfe+54]     LAMBSE1 = REQV;
82e5: 20,0f               sjmp  82f6             goto Sub_82f6; }

82e7: 64,3e,96            ad2w  R96,R3e          LAMBSE1 += R3e;
82ea: db,06               jc    82f2             if (LAMBSE1 <= ffff)  {
82ec: 8b,fe,56,96         cmpw  R96,[Rfe+56]     
82f0: d1,04               jleu  82f6             if (LAMBSE1 <= LEQV) goto Sub_82f6; }
82f2: a3,fe,56,96         ldw   R96,[Rfe+56]     LAMBSE1 = LEQV; } }
   Sub_82f6:
82f6: c3,e4,06,06         stw   R6,[Re4+6]       VIPLATM = IO_Timer;
82fa: f0                  ret                    return;

   DELAY_SEC:
82fb: ef,d4,f8            call  7bd2             GetBytes_R1a (
82fe: 02                        #arg 1              2 );
82ff: ef,7a,fb            call  7e7c             Sub_7e7c (
8302: 1a,00                     #arg 1              1a );
8304: 9a,1a,18            cmpb  R18,[R1a]        
8307: db,02               jc    830b             if (R18 < [R1a])  {
8309: cc,00               pop   R0               R0 = pop(); }
830b: f0                  ret                    return;

   VR_SPARK_COM1_SAF:
830c: 9b,e2,37,00         cmpb  R0,[Re2+37]      
8310: df,51               je    8363             if ([Re2+37] != 0)  {
8312: a3,e2,35,cc         ldw   Rcc,[Re2+35]     SAF = [Re2+35];
8316: 20,ec               sjmp  8404             goto EXIT;

   VR_SPARK_COM1_NBAR:
8318: 2f,e1               scall 82fb             DELAY_SEC (
831a: 5e,f0                     #arg 1              VDLY8 );
831c: a3,e4,9e,42         ldw   R42,[Re4+9e]     R42 = NBAR;
8320: c3,e4,44,42         stw   R42,[Re4+44]     NSAV = R42;
8324: 20,de               sjmp  8404             goto EXIT;

   VR_SPARK_COM1_213:
8326: 5f,e2,38,18,1c      ml3b  R1c,R18,[Re2+38] wR1c = yR18 * [cc91];
832b: 08,03,1c            shrw  R1c,3            R1c >>= 3;
832e: a3,e2,35,42         ldw   R42,[Re2+35]     R42 = V_SPK_INIT;
8332: 48,1c,42,cc         sb3w  Rcc,R42,R1c      SAF = R42 - R1c;
8336: a3,e4,9e,22         ldw   R22,[Re4+9e]     R22 = NBAR;
833a: 6b,e4,44,22         sb2w  R22,[Re4+44]     R22 -= NSAV;
833e: db,02               jc    8342             if (R22 < 0)  {
8340: 03,22               negw  R22              R22 = -R22; }
8342: 8b,e2,31,22         cmpw  R22,[Re2+31]     
8346: db,0c               jc    8354             if (R22 < VSPRPM)  {
8348: 8b,e2,33,cc         cmpw  Rcc,[Re2+33]     
834c: da,02               jle   8350             if (SAF > V_SPK_FINAL)  {
834e: 20,ba               sjmp  840a             return; }

8350: 2d,77               scall 80c9             SET_SERVICE_CODE (
8352: 13,02                     #arg 1              213 ); }
8354: a3,fe,52,cc         ldw   Rcc,[Rfe+52]     SAF = VIPSPK;
8358: 20,aa               sjmp  8404             goto EXIT;

   DELAY_SEC(VSPTD):
835a: 2f,9f               scall 82fb             DELAY_SEC (
835c: 38,f1                     #arg 1              VSPTDL );
835e: b1,0e,38            ldb   R38,e            R38 = e;
8361: 20,a1               sjmp  8404             goto EXIT; }

8363: 2f,96               scall 82fb             DELAY_SEC (
8365: 5e,f0                     #arg 1              VDLY8 );
8367: 27,f5               sjmp  835e             goto 835e;

   VR_EGR_COM6:
8369: 34,9e,04            jnb   B4,R9e,8370      if (B4_EGREN_9e = 1)  {
836c: b1,11,38            ldb   R38,11           R38 = 11;
836f: f0                  ret                    return; }

8370: 28,50               scall 83c2             Sub_83c2 (
8372: 14,01                     #arg 1              IEGR,
8374: d6,f0                     #arg 2              VEVPLL,
8376: d2,f0                     #arg 3              EVPMIN,
8378: 28,03                     #arg 4              328,
837a: 34,03                     #arg 5              334 );
837c: 88,00,1a            cmpw  R1a,R0           
837f: df,04               je    8385             if (R1a != 0)  {
8381: b1,11,38            ldb   R38,11           R38 = 11;
8384: f0                  ret                    return; }

8385: a3,e4,94,42         ldw   R42,[Re4+94]     R42 = IEGR;
8389: c3,e4,46,42         stw   R42,[Re4+46]     TPSAV = R42;
838d: b3,e2,c9,c1         ldb   Rc1,[Re2+c9]     EGRDC_H = VDCMIN;
8391: 20,71               sjmp  8404             goto EXIT;

   VR_EGR_COM6_332:
8393: a3,e4,94,42         ldw   R42,[Re4+94]     R42 = IEGR;
8397: 6b,e4,46,42         sb2w  R42,[Re4+46]     R42 -= TPSAV;
839b: 8b,e2,db,42         cmpw  R42,[Re2+db]     
839f: d2,19               jgt   83ba             if (R42 <= [cc34])  {
83a1: 9b,e2,ca,c1         cmpb  Rc1,[Re2+ca]     
83a5: db,0e               jc    83b5             if (EGRDC_H < VDCMAX)  {
83a7: 5f,e2,c8,18,42      ml3b  R42,R18,[Re2+c8] wR42 = yR18 * VEGRAT;
83ac: 08,03,42            shrw  R42,3            R42 >>= 3;
83af: 57,e2,c9,42,c1      ad3b  Rc1,R42,[Re2+c9] EGRDC_H = R42 + VDCMIN;
83b4: f0                  ret                    return; }

83b5: ef,11,fd            call  80c9             SET_SERVICE_CODE (
83b8: 32,03                     #arg 1              332 ); }
83ba: c0,c0,00            stw   R0,Rc0           EGRDC = 0;
83bd: b1,10,38            ldb   R38,10           R38 = 10;
83c0: 20,42               sjmp  8404             goto EXIT;

   Sub_83c2:
83c2: ef,0d,f8            call  7bd2             GetBytes_R1a (
83c5: 0a                        #arg 1              a );
83c6: ef,b3,fa            call  7e7c             Sub_7e7c (
83c9: 1c                        #arg 1              1c,
83ca: 00                        #arg 2              0 );
83cb: ef,ae,fa            call  7e7c             Sub_7e7c (
83ce: 1e                        #arg 1              1e,
83cf: 00                        #arg 2              0 );
83d0: a2,1a,42            ldw   R42,[R1a]        R42 = [R1a];
83d3: 01,1a               clrw  R1a              R1a = 0;
83d5: 8a,1d,42            cmpw  R42,[R1c++]      
83d8: db,0e               jc    83e8             if (R42 < [R1c++])  {
83da: a1,27,03,1a         ldw   R1a,327          R1a = 327;
83de: 8a,1e,42            cmpw  R42,[R1e]        
83e1: d1,17               jleu  83fa             if (R42 <= [R1e]) goto 83fa;
83e3: a0,20,1a            ldw   R1a,R20          R1a = R20;
83e6: 20,12               sjmp  83fa             goto 83fa; }

83e8: 8a,1c,42            cmpw  R42,[R1c]        
83eb: d1,16               jleu  8403             if (R42 <= [R1c]) return;
83ed: a0,22,1a            ldw   R1a,R22          R1a = R22;
83f0: 8b,1e,02,42         cmpw  R42,[R1e+2]      
83f4: d3,04               jnc   83fa             if (R42 >= [R1e+2])  {
83f6: a1,37,03,1a         ldw   R1a,337          R1a = 337; } }
83fa: 51,60,2a,42         an3b  R42,R2a,60       R42 = (?RUNNING?|
                                                        B6_NO_START_2a);
83fe: df,03               je    8403             if (R42 != 0)  {
8400: ef,ca,fc            call  80cd             Sub_80cd (); } }
8403: f0                  ret                    return;

   EXIT:
8404: c7,e4,41,00         stb   R0,[Re4+41]      VIP_TIMER_EX = 0;
8408: 17,38               incb  R38              R38++;
840a: f0                  ret                    return;

   VR_LOW_ISC_COM4:
840b: a3,e2,a7,3e         ldw   R3e,[Re2+a7]     R3e = V_TCDSN;                    # NGOOSE [Re2+a7]??
840f: c3,e4,36,3e         stw   R3e,[Re4+36]     RVIPRPM = R3e;
8413: 71,df,2f            an2b  R2f,df           B5_DISABLE_ISC_2f = 0;
8416: 27,ec               sjmp  8404             goto EXIT;

   VR_LOW_ISC_COM4_411:
8418: 2e,e1               scall 82fb             DELAY_SEC (
841a: ab,f0                     #arg 1              VISDL3 );
841c: 2d,88               scall 81a6             Sub_81a6 (
841e: 32,00                     #arg 1              32,
8420: a2,f0                     #arg 2              ISLBND,
8422: 11,04                     #arg 3              411 );
8424: 27,de               sjmp  8404             goto EXIT;

   VR_GOOSE_SD_COM1:
8426: 9b,e2,07,00         cmpb  R0,[Re2+7]       
842a: d7,05               jne   8431             if (V_GOOSW = 0)  {
842c: b1,15,38            ldb   R38,15           R38 = 15;
842f: 20,c7               sjmp  84f8             goto 84f8; }

8431: 71,bf,2f            an2b  R2f,bf           B6_KIHP?_2f = 0;
8434: 9b,fe,28,00         cmpb  R0,[Rfe+28]      
8438: df,17               je    8451             if (KIHP != 0)  {
843a: 91,40,2f            orb   R2f,40           B6_KIHP?_2f = 1;
843d: a3,e2,01,cc         ldw   Rcc,[Re2+1]      SAF = V_GOOSPK;
8441: a3,e2,03,96         ldw   R96,[Re2+3]      LAMBSE1 = V_KNK_FUEL;
8445: af,e2,09,1a         ldzbw R1a,[Re2+9]      wR1a = V_KTS;
8449: c3,e4,1a,1a         stw   R1a,[Re4+1a]     KTS_pulsewidth = R1a;
844d: 2e,ac               scall 82fb             DELAY_SEC (
844f: 07,f1                     #arg 1              V_KNK_DLY ); }
8451: 27,b1               sjmp  8404             goto EXIT;

   VR_GOOSE_SD_COM1_SET_CODE_xxx:
8453: 91,f0,2c            orb   R2c,f0           B4_CODE_538 = 1;
                                                 B5_CODE_167 = 1;
                                                 B6_CODE_129 = 1;
                                                 B7_CODE_225 = 1;
8456: c3,e4,46,b2         stw   Rb2,[Re4+46]     TPSAV = TP;
845a: a3,e4,9e,1c         ldw   R1c,[Re4+9e]     R1c = NBAR;
845e: c3,e4,44,1c         stw   R1c,[Re4+44]     NSAV = R1c;
8462: c7,e4,39,ba         stb   Rba,[Re4+39]     MAPSAV = MAP;
8466: 71,fe,2e            an2b  R2e,fe           VIP_KNOCK = 0;
8469: ef,98,ec            call  7104             Sub_7104 ();
846c: 27,96               sjmp  8404             goto EXIT;

   VR_GOOSE_SD_COM1_G1:
846e: 36,2f,06            jnb   B6,R2f,8477      if (B6_KIHP?_2f = 1)  {
8471: 30,2e,03            jnb   B0,R2e,8477      if (VIP_KNOCK = 1)  {
8474: 71,7f,2c            an2b  R2c,7f           B7_CODE_225 = 0; } }
8477: 4b,e4,44,b4,1c      sb3w  R1c,Rb4,[Re4+44] R1c = N_RPM - NSAV;
847c: d3,09               jnc   8487             if (R1c >= 0)  {
847e: 8b,e2,ff,1c         cmpw  R1c,[Re2+ff]     
8482: d3,03               jnc   8487             if (R1c >= V_GOOSN)  {
8484: 71,ef,2c            an2b  R2c,ef           B4_CODE_538 = 0; } }
8487: 4b,e4,46,b2,42      sb3w  R42,Rb2,[Re4+46] R42 = TP - TPSAV;
848c: db,02               jc    8490             if (R42 < 0)  {
848e: 03,42               negw  R42              R42 = -R42; }
8490: 8b,e2,fd,42         cmpw  R42,[Re2+fd]     
8494: d3,03               jnc   8499             if (R42 >= V_GOOSTP)  {
8496: 71,df,2c            an2b  R2c,df           B5_CODE_167 = 0; }
8499: 5b,e4,39,ba,42      sb3b  R42,Rba,[Re4+39] R42 = MAP - MAPSAV;
849e: db,02               jc    84a2             if (R42 < 0)  {
84a0: 13,42               negb  R42              R42 = -R42; }
84a2: 9b,e2,a1,42         cmpb  R42,[Re2+a1]     
84a6: d3,03               jnc   84ab             if (R42 >= V_GOOSMP)  {
84a8: 71,bf,2c            an2b  R2c,bf           B6_CODE_129 = 0; }
84ab: 3c,2c,16            jb    B4,R2c,84c4      if (B4_CODE_538 = 0)  {
84ae: 39,2d,13            jb    B1,R2d,84c4      if (B1_VF1_2d = 0)  {
84b1: 91,02,2d            orb   R2d,2            B1_VF1_2d = 1;
84b4: b3,e2,06,1a         ldb   R1a,[Re2+6]      R1a = V_GOOSEC;
84b8: 7b,e2,05,1a         sb2b  R1a,[Re2+5]      R1a -= V_GOOS_DELAY;
84bc: db,02               jc    84c0             if (R1a < 0)  {
84be: 11,1a               clrb  R1a              R1a = 0; }
84c0: c7,e4,41,1a         stb   R1a,[Re4+41]     VIP_TIMER_EX = R1a; } }
84c4: 2e,35               scall 82fb             DELAY_SEC (
84c6: 05,f1                     #arg 1              V_GOOSEC );
84c8: 36,2f,04            jnb   B6,R2f,84cf      if (B6_KIHP?_2f = 1)  {
84cb: a3,fe,60,96         ldw   R96,[Rfe+60]     LAMBSE1 = VRLAM; }
84cf: 34,2c,07            jnb   B4,R2c,84d9      if (B4_CODE_538 = 1)  {
84d2: ef,f4,fb            call  80c9             SET_SERVICE_CODE (
84d5: 38,05                     #arg 1              538 );                         # 538,Operator error-dyn response test.
84d7: 20,1b               sjmp  84f4             goto 84f4; }

84d9: 36,2c,05            jnb   B6,R2c,84e1      if (B6_CODE_129 = 1)  {
84dc: ef,ea,fb            call  80c9             SET_SERVICE_CODE (
84df: 29,01                     #arg 1              129 ); }                       # 129,Insuff. MAP change-dyn resp. test.
84e1: 35,2c,05            jnb   B5,R2c,84e9      if (B5_CODE_167 = 1)  {
84e4: ef,e2,fb            call  80c9             SET_SERVICE_CODE (
84e7: 67,01                     #arg 1              167 ); }
84e9: 36,2f,08            jnb   B6,R2f,84f4      if (B6_KIHP?_2f = 1)  {
84ec: 37,2c,05            jnb   B7,R2c,84f4      if (B7_CODE_225 = 1)  {
84ef: ef,d7,fb            call  80c9             SET_SERVICE_CODE (
84f2: 25,02                     #arg 1              225 ); } }
84f4: a3,fe,52,cc         ldw   Rcc,[Rfe+52]     SAF = VIPSPK;

# SERVICE CODE SET-UP
84f8: b3,e2,af,42         ldb   R42,[Re2+af]     R42 = VBISW;
84fc: e0,42,12            djnz  R42,8511         R42--;
                                                 if (R42 != 0) goto 8511;
84ff: b3,fe,26,42         ldb   R42,[Rfe+26]     R42 = BIHP;
8503: e0,42,0b            djnz  R42,8511         R42--;
                                                 if (R42 != 0) goto 8511;
8506: 3b,a4,03            jb    B3,Ra4,850c      if (BRK_NEVER_ON = 0)  {
8509: 31,a4,05            jnb   B1,Ra4,8511      if (BRK_NEVER_OFF = 0) goto 8511; }
850c: ef,ba,fb            call  80c9             SET_SERVICE_CODE (
850f: 36,05                     #arg 1              536 ); } } }
8511: b3,e2,30,42         ldb   R42,[Re2+30]     R42 = VPSSW;
8515: e0,42,12            djnz  R42,852a         R42--;
                                                 if (R42 != 0) goto 852a;
8518: b3,fe,2a,42         ldb   R42,[Rfe+2a]     R42 = PSPSHP;
851c: e0,42,0b            djnz  R42,852a         R42--;
                                                 if (R42 != 0) goto 852a;
851f: 30,29,03            jnb   B0,R29,8525      if (B0_POWOFF_29 = 1)  {
8522: 39,29,05            jb    B1,R29,852a      if (B1_POWON_29 = 1) goto 852a; }
8525: ef,a1,fb            call  80c9             SET_SERVICE_CODE (
8528: 21,05                     #arg 1              521 ); } } }
852a: 31,9e,0b            jnb   B1,R9e,8538      if (B1_E4OD_9e = 1)  {
852d: 32,49,03            jnb   B2,R49,8533      if (B2_TCS_OPEN_49 = 1)  {
8530: 39,49,05            jb    B1,R49,8538      if (B1_TCS_SHORT_49 = 1) goto Sub_8538; }
8533: ef,93,fb            call  80c9             SET_SERVICE_CODE (
8536: 32,06                     #arg 1              632 ); } }
   Sub_8538:
8538: 91,07,2b            orb   R2b,7            STO_HighSpeed = 1;
                                                 STO_Lowspeed_r = 1;
                                                 STO_Lowspeed = 1;
853b: 26,c7               sjmp  8404             goto EXIT;


# STRATEGY MODULE: VR_BOO_COM1
   Check_PS_PB:
853d: 34,25,05            jnb   B4,R25,8545      if (BIFLG = 1)  {
8540: 71,f7,a4            an2b  Ra4,f7           BRK_NEVER_ON = 0;
8543: 20,03               sjmp  8548             goto 8548; }

8545: 71,fd,a4            an2b  Ra4,fd           BRK_NEVER_OFF = 0;

# STRATEGY MODULE: VR_PSPS_COM2
8548: 30,8f,05            jnb   B0,R8f,8550      if (B0_POWSFG_8f = 1)  {
854b: 91,02,29            orb   R29,2            B1_POWON_29 = 1;
854e: 20,03               sjmp  8553             goto 8553; }

8550: 91,01,29            orb   R29,1            B0_POWOFF_29 = 1;

# STRATEGY MODULE: VR_TCS_COM4
8553: 30,90,05            jnb   B0,R90,855b      if (B0_ITCS_90 = 1)  {
8556: 91,02,49            orb   R49,2            B1_TCS_SHORT_49 = 1;
8559: 20,03               sjmp  855e             return; }

855b: 91,04,49            orb   R49,4            B2_TCS_OPEN_49 = 1;
855e: f0                  ret                    return;

   VR_EGOBAR_COM1:
855f: ef,cf,ec            call  7231             EGR_SELECT_LOGIC ();
8562: a3,e4,86,32         ldw   R32,[Re4+86]     R32 = EGOBAR;
8566: a3,e4,9a,34         ldw   R34,[Re4+9a]     R34 = IEGO1;
856a: a3,e2,9d,36         ldw   R36,[Re2+9d]     R36 = VTCEGO;
856e: ef,de,c3            call  494f             UROLAV ();                        # EGOBAR = EGOBAR UROLAV(IEGO1,VTCEGO)
8571: c3,e4,86,3e         stw   R3e,[Re4+86]     EGOBAR = R3e;
8575: 71,df,28            an2b  R28,df           EGOSTE = 0;
8578: 89,c0,d5,3e         cmpw  R3e,d5c0         
857c: d1,03               jleu  8581             if (R3e > d5c0)  {                # EGOBAR > 855 counts-->EGOSTE (side)=lean(1)
857e: 91,20,28            orb   R28,20           EGOSTE = 1; }
8581: f0                  ret                    return;

   Sub_8582:
8582: 91,02,a3            orb   Ra3,2            B1_STI_RESET_a3 = 1;
8585: 9b,e2,5e,00         cmpb  R0,[Re2+5e]      
8589: d7,16               jne   85a1             if ([Re2+5e] = 0)  {
858b: 71,fd,a3            an2b  Ra3,fd           B1_STI_RESET_a3 = 0;
858e: 99,f0,18            cmpb  R18,f0           
8591: db,02               jc    8595             if (R18 < f0)  {
8593: 26,75               sjmp  840a             return; }

8595: 99,1a,38            cmpb  R38,1a           
8598: df,02               je    859c             if (R38 != 1a)  {
859a: 26,68               sjmp  8404             goto EXIT; }

859c: b1,1d,38            ldb   R38,1d           R38 = 1d;
859f: 26,67               sjmp  8408             goto 8408; }

85a1: 3b,45,ea            jb    B3,R45,858e      if (STIFLG = 1) goto 858e;
85a4: b1,1a,38            ldb   R38,1a           R38 = 1a;
85a7: 26,5b               sjmp  8404             goto EXIT;

   Sub_85a9:
85a9: 99,02,18            cmpb  R18,2            
85ac: d3,08               jnc   85b6             if (R18 >= 2)  {
85ae: 99,20,18            cmpb  R18,20           
85b1: db,05               jc    85b8             if (R18 >= 20) goto 85b8;
85b3: 3b,45,07            jb    B3,R45,85bd      if (STIFLG = 1) goto 85bd; }
85b6: 26,52               sjmp  840a             return; }

85b8: 71,fd,a3            an2b  Ra3,fd           B1_STI_RESET_a3 = 0;
85bb: 22,4b               sjmp  8808             goto 8808; }

85bd: 91,01,a3            orb   Ra3,1            B0_V_MODE_SETUP_a3 = 1;
85c0: 91,04,9f            orb   R9f,4            B2_OLFLG = 1;
85c3: a3,e2,5b,42         ldw   R42,[Re2+5b]     R42 = [Re2+5b];
85c7: 08,05,42            shrw  R42,5            R42 >>= 5;
85ca: c3,e4,36,42         stw   R42,[Re4+36]     RVIPRPM = R42;
85ce: e7,33,fe            jump  8404             goto EXIT;

   Sub_85d1:
85d1: c3,e4,02,00         stw   R0,[Re4+2]       OUTTMR = 0;
85d5: 33,45,10            jnb   B3,R45,85e8      if (STIFLG = 1)  {
85d8: ef,20,fd            call  82fb             DELAY_SEC (
85db: 5c,f1                     #arg 1              ccb6 );
85dd: ef,24,eb            call  7104             Sub_7104 ();
85e0: e7,21,fe            jump  8404             goto EXIT;

   Sub_85e3:
85e3: ef,15,fd            call  82fb             DELAY_SEC (
85e6: 5e,f1                     #arg 1              VDLY_ENTER ); }
85e8: a3,e4,02,1a         ldw   R1a,[Re4+2]      R1a = OUTTMR;
85ec: 8b,e2,55,1a         cmpw  R1a,[Re2+55]     
85f0: db,48               jc    863a             if (R1a < [Re2+55])  {
85f2: 3b,45,05            jb    B3,R45,85fa      if (STIFLG = 0)  {
85f5: b1,1a,38            ldb   R38,1a           R38 = 1a;
85f8: 20,40               sjmp  863a             goto 863a; }

85fa: a3,e4,bc,1e         ldw   R1e,[Re4+bc]     R1e = [13c];
85fe: a3,e4,9c,20         ldw   R20,[Re4+9c]     R20 = ITP;
8602: 8b,fe,68,20         cmpw  R20,[Rfe+68]     
8606: d3,22               jnc   862a             if (R20 >= VTAP3)  {
8608: 8b,fe,6a,20         cmpw  R20,[Rfe+6a]     
860c: d9,1c               jgtu  862a             if (R20 <= VTAP4)  {
860e: a3,e2,5b,20         ldw   R20,[Re2+5b]     R20 = [Re2+5b];
8612: 4b,e2,59,20,22      sb3w  R22,R20,[Re2+59] R22 = R20 - [Re2+59];
8617: 8b,e4,9e,22         cmpw  R22,[Re4+9e]     
861b: db,17               jc    8634             if (R22 >= NBAR) goto 8634;
861d: 67,e2,57,20         ad2w  R20,[Re2+57]     R20 += [Re2+57];
8621: 8b,e4,9e,20         cmpw  R20,[Re4+9e]     
8625: d1,08               jleu  862f             if (R20 <= NBAR) goto 862f;
8627: e7,96,f5            jump  7bc0             goto Set_STO; } }

862a: 3e,1e,fa            jb    B6,R1e,8627      if (B6_R1e = 1) goto 8627;
862d: 20,08               sjmp  8637             goto 8637; }

862f: 3f,1e,f5            jb    B7,R1e,8627      if (B7_R1e = 1) goto 8627;
8632: 20,03               sjmp  8637             goto 8637; }

8634: 39,1f,f0            jb    B1,R1f,8627      if (B1_R1f = 1) goto 8627;
8637: e7,8e,f5            jump  7bc8             goto Reset_STO; }

863a: ef,8b,f5            call  7bc8             Reset_STO ();
863d: e7,c4,fd            jump  8404             goto EXIT;

   HW_Check:
8640: fa                  di                     interrupts OFF;
8641: ff                  nop                    
8642: 45,03,00,06,0e      ad3w  Re,R6,3          HSI_Time_lo = IO_Timer + 3;
8647: b1,09,0d            ldb   Rd,9             HSO_Cmd = 9;                      # NO INTERRUPT OUT, SET OUTPUT LOW, HSO#9
864a: c3,e6,c2,10         stw   R10,[Re6+c2]     [242] = StackPtr;
864e: a1,5c,00,10         ldw   R10,5c           StackPtr = 5c;
8652: a1,7c,a1,3c         ldw   R3c,a17c         R3c = a17c;
8656: a1,7c,a1,3a         ldw   R3a,a17c         R3a = a17c;
865a: 05,3a               decw  R3a              R3a--;
865c: 88,3a,3c            cmpw  R3c,R3a          
865f: ff                  nop                    
8660: db,03               jc    8665             if (R3c < R3a)  {
8662: 20,d9               sjmp  873d             goto Disable_No_Start;

8664: f8                  clc                    CY = 0; }
8665: d3,fb               jnc   8662             if (CY = 0) goto 8662;
8667: 65,63,75,3c         ad2w  R3c,7563         R3c += 7563;
866b: db,04               jc    8671             if (R3c <= ffff)  {
866d: 27,f3               sjmp  8662             goto 8662;

866f: ff                  nop                    
8670: f8                  clc                    CY = 0; }
8671: d3,ef               jnc   8662             if (CY = 0) goto 8662;
8673: f9                  stc                    CY = 1;
8674: 00                  skip                   goto 8676;
8675: f8                  clc                    CY = 0;
8676: d3,ea               jnc   8662             if (CY = 0) goto 8662;
8678: a1,e5,4b,3a         ldw   R3a,4be5         R3a = 4be5;
867c: 64,3a,3c            ad2w  R3c,R3a          R3c += R3a;
867f: 89,c4,62,3c         cmpw  R3c,62c4         
8683: d7,dd               jne   8662             if (R3c != 62c4) goto 8662;
8685: 09,01,3c            shlw  R3c,1            R3c <<= 1;
8688: 69,63,75,3c         sb2w  R3c,7563         R3c -= 7563;
868c: 89,25,50,3c         cmpw  R3c,5025         
8690: d7,d0               jne   8662             if (R3c != 5025) goto 8662;
8692: 85,82,b0,3c         xrw   R3c,b082         R3c ^= b082;
8696: 85,82,b0,3c         xrw   R3c,b082         R3c ^= b082;
869a: 89,25,50,3c         cmpw  R3c,5025         
869e: d7,c2               jne   8662             if (R3c != 5025) goto 8662;
86a0: 61,82,b0,3c         an2w  R3c,b082         R3c &= b082;
86a4: 89,00,10,3c         cmpw  R3c,1000         
86a8: d7,b8               jne   8662             if (R3c != 1000) goto 8662;
86aa: 81,31,ce,3c         orw   R3c,ce31         R3c |= ce31;
86ae: 89,31,de,3c         cmpw  R3c,de31         
86b2: d7,ae               jne   8662             if (R3c != de31) goto 8662;
86b4: b1,31,33            ldb   R33,31           R33 = 31;
86b7: c7,e6,3b,33         stb   R33,[Re6+3b]     Xram2H = R33;
86bb: b1,92,33            ldb   R33,92           R33 = 92;
86be: 57,e6,3b,33,32      ad3b  R32,R33,[Re6+3b] R32 = R33 + Xram2H;
86c3: 99,c3,32            cmpb  R32,c3           
86c6: d7,75               jne   873d             if (R32 = c3)  {
86c8: b1,7b,30            ldb   R30,7b           R30 = 7b;
86cb: b1,c5,32            ldb   R32,c5           R32 = c5;
86ce: 5c,30,32,34         ml3b  R34,R32,R30      wR34 = yR32 * R30;
86d2: 89,a7,5e,34         cmpw  R34,5ea7         
86d6: d7,65               jne   873d             if (R34 = 5ea7)  {
86d8: 9c,32,34            divb  R34,R32          yR34 /= R32;
86db: 99,7b,34            cmpb  R34,7b           
86de: d7,5d               jne   873d             if (R34 = 7b)  {
86e0: 01,30               clrw  R30              R30 = 0;
86e2: 01,32               clrw  R32              R32 = 0;
86e4: 11,3c               clrb  R3c              R3c = 0;
86e6: 0f,3c,30            norm  R30,R3c          R3c = normalize(lR30);
86e9: 99,7b,34            cmpb  R34,7b           
86ec: d7,4f               jne   873d             if (R34 = 7b)  {
86ee: 99,1f,3c            cmpb  R3c,1f           
86f1: d7,4a               jne   873d             if (R3c = 1f)  {
86f3: a1,7c,a1,3c         ldw   R3c,a17c         R3c = a17c;
86f7: c3,e6,38,3c         stw   R3c,[Re6+38]     Xram1L = R3c;
86fb: 28,45               scall 8742             POP_test ();
86fd: 8b,e6,3a,3c         cmpw  R3c,[Re6+3a]     
8701: d7,3a               jne   873d             if (R3c = Xram2L)  {
8703: 8b,e6,3c,3c         cmpw  R3c,[Re6+3c]     
8707: d7,34               jne   873d             if (R3c = Xram3L)  {
8709: 88,30,3c            cmpw  R3c,R30          
870c: d7,2f               jne   873d             if (R3c = R30)  {
870e: a1,00,04,10         ldw   R10,400          StackPtr = 400;
8712: a1,75,55,3c         ldw   R3c,5575         R3c = 5575;
8716: c3,e6,38,3c         stw   R3c,[Re6+38]     Xram1L = R3c;
871a: 28,26               scall 8742             POP_test ();
871c: 8b,e6,3a,3c         cmpw  R3c,[Re6+3a]     
8720: d7,1b               jne   873d             if (R3c = Xram2L)  {
8722: 8b,e6,3c,3c         cmpw  R3c,[Re6+3c]     
8726: d7,15               jne   873d             if (R3c = Xram3L)  {
8728: 88,30,3c            cmpw  R3c,R30          
872b: d7,10               jne   873d             if (R3c = R30)  {
872d: b1,aa,30            ldb   R30,aa           R30 = aa;
8730: c7,e6,3b,30         stb   R30,[Re6+3b]     Xram2H = R30;
8734: a1,bb,02,32         ldw   R32,2bb          R32 = Xram2H;
8738: 9a,32,30            cmpb  R30,[R32]        
873b: df,18               je    8755             if (R30 = [R32]) goto VO_KAMRAM_COM1; } } } } } } } } } } }
   Disable_No_Start:
873d: 91,10,2a            orb   R2a,10           DISABLE_NOSTART = 1;
8740: 20,4c               sjmp  878e             goto 878e;

   POP_test:
8742: cb,e6,38            push  [Re6+38]         push(Xram1L);
8745: cf,e6,3a            pop   [Re6+3a]         Xram2L = pop();
8748: cb,e6,3a            push  [Re6+3a]         push(Xram2L);
874b: cc,30               pop   R30              R30 = pop();
874d: c8,30               push  R30              push(R30);
874f: cf,e6,3c            pop   [Re6+3c]         Xram3L = pop();
8752: f0                  ret                    return;

8753: 27,e8               sjmp  873d             goto Disable_No_Start; }

#############################################################
# memory RAM test from 100 to 8FF
# uses odd and even bit patterns (aaaa and 5555)
# and restores stack at end of test
############################################################|
   VO_KAMRAM_COM1:
8755: a1,ff,08,3a         ldw   R3a,8ff          R3a = 8ff;
8759: a1,00,01,42         ldw   R42,100          R42 = 100;
875d: a1,aa,aa,30         ldw   R30,aaaa         R30 = aaaa;
8761: a1,55,55,32         ldw   R32,5555         R32 = 5555;
8765: 95,40,02            xorb  R2,40            CPU_OK ^= 1;
8768: 17,05               incb  R5               WDG_Timer++;
876a: a2,42,34            ldw   R34,[R42]        R34 = [R42];
876d: 95,40,02            xorb  R2,40            CPU_OK ^= 1;
8770: c2,42,30            stw   R30,[R42]        [R42] = R30;
8773: a2,42,36            ldw   R36,[R42]        R36 = [R42];
8776: 88,30,36            cmpw  R36,R30          
8779: d7,19               jne   8794             if (R36 = R30)  {
877b: c2,42,32            stw   R32,[R42]        [R42] = R32;
877e: a2,42,36            ldw   R36,[R42]        R36 = [R42];
8781: 88,32,36            cmpw  R36,R32          
8784: d7,0e               jne   8794             if (R36 = R32)  {
8786: c2,43,34            stw   R34,[R42++]      [R42++] = R34;
8789: 88,3a,42            cmpw  R42,R3a          
878c: d3,d7               jnc   8765             if (R42 < R3a) goto 8765;
878e: a3,e6,c2,10         ldw   R10,[Re6+c2]     StackPtr = [242];
8792: fb                  ei                     interrupts ON;
8793: f0                  ret                    return; } }

   RAM_ERROR:
8794: e7,a6,ff            jump  873d             goto Disable_No_Start;

   VC_MIL_SD_COM1:
8797: 33,45,05            jnb   B3,R45,879f      if (STIFLG = 1)  {
   ZERO_MILTMR:
879a: c3,e4,3e,00         stw   R0,[Re4+3e]      MILTMR = 0;
879e: f0                  ret                    return; }

879f: 3f,a5,4b            jb    B7,Ra5,87ed      if (b7_CRKFLG_a5 = 0)  {
87a2: 77,e2,25,00         ad2b  R0,[Re2+25]      R0 = MIL_SW;
87a6: df,51               je    87f9             if (MIL_SW = 0) goto 87f9;
87a8: b3,ea,93,42         ldb   R42,[Rea+93]     R42 = C41FIL_TroubleCode;
87ac: 9b,e2,77,42         cmpb  R42,[Re2+77]     
87b0: d9,1c               jgtu  87ce             if (R42 <= [ccd0])  {
87b2: 41,be,80,a6,34      an3w  R34,Ra6,80be     R34 = (B1__a6|
                                                        B2_TFMFLG_a6|
                                                        B3_MFMFLG_a6|
                                                        B4_EFMFLG_a6|
                                                        B5_CFMFLG_a6|
                                                        B7_AFMFLG_a6|
                                                        B15_FMEM_FLAG2);
87b7: d7,15               jne   87ce             if (R34 = 0)  {
87b9: b3,e2,25,42         ldb   R42,[Re2+25]     R42 = MIL_SW;
87bd: 99,02,42            cmpb  R42,2            
87c0: d7,03               jne   87c5             if (R42 = 2)  {
87c2: 3f,2d,09            jb    B7,R2d,87ce      if (B7_R2d = 1) goto 87ce; }
87c5: 35,2d,31            jnb   B5,R2d,87f9      if (B5_R2d = 0) goto 87f9;
87c8: a3,e2,1f,40         ldw   R40,[Re2+1f]     R40 = FMDTM;
87cc: 20,0d               sjmp  87db             goto 87db; } } }

87ce: a3,e2,1f,40         ldw   R40,[Re2+1f]     R40 = FMDTM;
87d2: 8b,e4,3e,40         cmpw  R40,[Re4+3e]     
87d6: d9,23               jgtu  87fb             if (R40 > MILTMR) goto 87fb;
87d8: 91,20,2d            orb   R2d,20           B5_R2d = 1;
87db: 67,e2,23,40         ad2w  R40,[Re2+23]     R40 += V_MILONTM;
87df: db,09               jc    87ea             if (R40 <= ffff)  {
87e1: 8b,e4,3e,40         cmpw  R40,[Re4+3e]     
87e5: d9,03               jgtu  87ea             if (R40 <= MILTMR)  {
87e7: 71,df,2d            an2b  R2d,df           B5_R2d = 0; } }
   Sub_87ea:
87ea: e7,d3,f3            jump  7bc0             goto Set_STO; }

87ed: 3c,2a,09            jb    B4,R2a,87f9      if (DISABLE_NOSTART = 0)  {
87f0: 3c,50,06            jb    B4,R50,87f9      if (B4_First_pip = 0)  {
87f3: 8b,e2,21,00         cmpw  R0,[Re2+21]      
87f7: d7,05               jne   87fe             if (MILLIM != 0) goto 87fe; } } } }
87f9: 2f,9f               scall 879a             ZERO_MILTMR (); }
87fb: e7,ca,f3            jump  7bc8             goto Reset_STO; }

87fe: 2f,ea               scall 87ea             Sub_87ea ();
8800: 27,98               sjmp  879a             goto ZERO_MILTMR;

################################################################
# Diagnostic proc Table A
# jump Table entry 0xXXXX
# reset lots of stuff and jump back to cycling thru procs
# switch out of self test to run mode ?
## function/maps/scalars
################################################################
   Sub_8802:
8802: 3b,2b,27            jb    B3,R2b,882c      if (STO_WORKING = 0)  {
8805: 3d,48,24            jb    B5,R48,882c      if (STO_TRIGGER = 0)  {
8808: fa                  di                     interrupts OFF;
8809: ff                  nop                    
880a: a1,00,09,10         ldw   R10,900          StackPtr = IW0;
880e: ef,d4,f7            call  7fe5             Sub_7fe5 ();
8811: ef,1e,98            call  2032             Reset_All ();
8814: 35,2a,06            jnb   B5,R2a,881d      if (?RUNNING? = 1)  {
8817: 71,db,2a            an2b  R2a,db           VIP_ENABLE = 0;
                                                 ?RUNNING? = 0;
881a: 91,18,2a            orb   R2a,18           DISABLE_RUNNING = 1;
                                                 DISABLE_NOSTART = 1; }
881d: 36,2a,06            jnb   B6,R2a,8826      if (B6_NO_START_2a = 1)  {
8820: 71,bb,2a            an2b  R2a,bb           VIP_ENABLE = 0;
                                                 B6_NO_START_2a = 0;
8823: 91,10,2a            orb   R2a,10           DISABLE_NOSTART = 1; }
8826: ef,9f,f3            call  7bc8             Reset_STO ();
8829: e7,05,99            jump  2131             goto Background_Loop; } }

882c: f0                  ret                    return;

   Sub_882d:
882d: 3b,2b,2e            jb    B3,R2b,885e      if (STO_WORKING = 0)  {
8830: 45,83,06,84,72      ad3w  R72,R84,683      HSO_time = Reftime + 683;
8835: b0,86,74            ldb   R74,R86          HSO_timeH = ReftimeH;
8838: b4,00,74            adcb  R74,R0           HSO_timeH += CY;
883b: a1,52,23,88         ldw   R88,2352         TablePTR = 2352;
883f: a1,68,02,70         ldw   R70,268          Rtab = 268;
8843: 3d,2b,31            jb    B5,R2b,8877      if (STO_code = 1) goto 8877;
8846: 91,80,4c            orb   R4c,80           B7_R4c = 1;
8849: b1,09,6f            ldb   R6f,9            R6f = 9;                          # NO INTERRUPT OUT, SET OUTPUT LOW, HSO#9
884c: 3e,2b,06            jb    B6,R2b,8855      if (STO_off = 0)  {
884f: 37,2b,03            jnb   B7,R2b,8855      if (STO_on = 1)  {
8852: b1,19,6f            ldb   R6f,19           R6f = 19; } }                     # NO INTERRUPT OUT, SET OUTPUT HIGH, HSO#9
8855: ef,79,a1            call  29d1             Sub_29d1 ();
8858: 71,3f,2b            an2b  R2b,3f           STO_off = 0;
                                                 STO_on = 0;
885b: 71,df,48            an2b  R48,df           STO_TRIGGER = 0; }
885e: f0                  ret                    return;

   Sub_885f:
885f: b1,19,6f            ldb   R6f,19           R6f = 19;                         # NO INTERRUPT OUT, SET OUTPUT HIGH, HSO#9
8862: 38,ae,03            jb    B0,Rae,8868      if (B0_Rae = 0)  {
8865: b1,09,6f            ldb   R6f,9            R6f = 9; }                        # NO INTERRUPT OUT, SET OUTPUT LOW, HSO#9
8868: ef,66,a1            call  29d1             Sub_29d1 ();
886b: 08,01,ae            shrw  Rae,1            Rae >>= 1;
886e: e0,ab,38            djnz  Rab,88a9         Rab--;
                                                 if (Rab != 0) goto 88a9;
8871: 35,48,2d            jnb   B5,R48,88a1      if (STO_TRIGGER = 0) goto 88a1;
8874: 35,2b,2a            jnb   B5,R2b,88a1      if (STO_code = 0) goto 88a1; }
8877: a0,ac,ae            ldw   Rae,Rac          Rae = VIP_code;
887a: b1,10,ab            ldb   Rab,10           Rab = 10;
887d: 30,2f,0d            jnb   B0,R2f,888d      if (B0_GOOSE = 1)  {
8880: 71,fe,2f            an2b  R2f,fe           B0_GOOSE = 0;
8883: 09,01,ac            shlw  Rac,1            VIP_code <<= 1;
8886: db,03               jc    888b             if (B15_VIP_code = 0)  {
8888: e0,ab,f8            djnz  Rab,8883         Rab--;
                                                 if (Rab != 0) goto 8883; }
888b: 17,ab               incb  Rab              Rab++; }
888d: 91,08,2b            orb   R2b,8            STO_WORKING = 1;
8890: 71,df,2b            an2b  R2b,df           STO_code = 0;
8893: 71,fd,4f            an2b  R4f,fd           B1_Bypass_time = 0;
8896: 34,2b,03            jnb   B4,R2b,889c      if (STO_fast = 1)  {
8899: 91,02,4f            orb   R4f,2            B1_Bypass_time = 1; }
889c: 71,df,48            an2b  R48,df           STO_TRIGGER = 0;
889f: 20,08               sjmp  88a9             goto 88a9; } }

88a1: c7,70,01,00         stb   R0,[R70+1]       [Rtab+1] = 0;
88a5: 71,f7,2b            an2b  R2b,f7           STO_WORKING = 0;
88a8: f0                  ret                    return; }

88a9: 31,4f,09            jnb   B1,R4f,88b5      if (B1_Bypass_time = 1)  {
88ac: 65,23,08,72         ad2w  R72,823          HSO_time += 823;
88b0: b5,00,74            adcb  R74,0            HSO_timeH += CY;
88b3: 20,07               sjmp  88bc             goto 88bc; }

88b5: 65,0b,8b,72         ad2w  R72,8b0b         HSO_time += 8b0b;
88b9: b5,02,74            adcb  R74,2            HSO_timeH += 2 + CY;
88bc: e7,72,a1            jump  2a31             goto 2a31;

   VIP_EOS_IDM:
88bf: 3f,83,1b            jb    B7,R83,88dd      if (B7_IDM_HIGH_83 = 0)  {
88c2: 91,10,4e            orb   R4e,10           B4_NEW_IDM = 1;
88c5: 33,49,15            jnb   B3,R49,88dd      if (DWLELD = 1)  {
88c8: b1,01,54            ldb   R54,1            R54 = 1;
88cb: 9b,fe,30,54         cmpb  R54,[Rfe+30]     
88cf: d7,0c               jne   88dd             if (R54 = IGN_TYPE)  {            # 1 = Thick Film Ignition - Improved Computer Control Dwell (TFI_ICCD)
88d1: 4b,e8,72,6c,54      sb3w  R54,R6c,[Re8+72] R54 = DATA_TIME - SPOUT_LOW_EDGE;
88d6: c3,e8,64,54         stw   R54,[Re8+64]     DWLIDM = R54;
88da: 91,20,49            orb   R49,20           B5_NEW_DWLIDM_49 = 1; } } }
88dd: f0                  ret                    return;

   E4OD_TRANSMISSION_CALCULATIONS:
88de: ef,2b,00            call  890c             INTRN_E4OD_INPUT_PROCESSING_COM1 ();
88e1: ef,4f,00            call  8933             INTRN_E4OD_SYS_EQU_COM1 ();
88e4: ef,8a,02            call  8b71             E4OD_INPUT_PROCESSING_COM1 ();
88e7: ef,ec,03            call  8cd6             SC_DESRD_GR_DETR_COM1 ();
88ea: ef,a7,06            call  8f94             SC_CM_GR_DETR_COM1 ();
88ed: ef,ba,07            call  90aa             SC_TIMER_COM1 ();
88f0: ef,37,08            call  912a             SC_SOL_CTL_COM1 ();
88f3: ef,b9,08            call  91af             SC_VALID_COM1 ();
88f6: ef,0f,0a            call  9308             CCC_CST_CLTCH_CTL_COM1 ();
88f9: ef,b6,0a            call  93b2             EPC_GUIDE_COM1 ();
88fc: ef,86,13            call  9c85             CCC_COM1 ();
88ff: ef,04,19            call  a206             INTRN_RT_NOVS_KAM_CALC_COM1 ();
8902: ef,71,1a            call  a376             CCC_VALID_COM2 ();
8905: ef,b0,1a            call  a3b8             INTRN_TCIL_REPEAT_COM1 ();
8908: ef,d6,1a            call  a3e1             EPC_OTEMP_TEST_COM2 ();
890b: f0                  ret                    return;

   INTRN_E4OD_INPUT_PROCESSING_COM1:
890c: 38,e0,05            jb    B0,Re0,8914      if (B0_I4X4L_LAST_e0 = 0)  {
890f: 3a,90,05            jb    B2,R90,8917      if (B2_I4X4L_90 = 1) goto 8917;
8912: 20,0f               sjmp  8923             goto 8923; }

8914: 3a,90,0c            jb    B2,R90,8923      if (B2_I4X4L_90 = 1) goto 8923; }
8917: 95,01,e0            xorb  Re0,1            B0_I4X4L_LAST_e0 ^= 1;
891a: a3,fd,c4,00,42      ldw   R42,[Rfc+c4]     R42 = TM4X4L;
891f: c3,e8,f2,42         stw   R42,[Re8+f2]     TM_4X4L_RES = R42; }
8923: 8b,e8,f2,00         cmpw  R0,[Re8+f2]      
8927: d7,09               jne   8932             if (TM_4X4L_RES = 0)  {
8929: 91,02,e0            orb   Re0,2            B1_FLG_4X4L_e0 = 1;
892c: 3a,90,03            jb    B2,R90,8932      if (B2_I4X4L_90 = 0)  {
892f: 71,fd,e0            an2b  Re0,fd           B1_FLG_4X4L_e0 = 0; } }
8932: f0                  ret                    return;

   INTRN_E4OD_SYS_EQU_COM1:
8933: 45,16,01,fc,e2      ad3w  Re2,Rfc,116      Re2 = PARKHI;
8938: ef,35,bf            call  4870             UUYFuncLU_4870 (                  # BP INTERPOLATION FACTOR
893b: d2,c1                     #arg 1              FN615,
893d: bb,00                     #arg 2              BP );
893f: c7,e8,ca,38         stb   R38,[Re8+ca]     BP_INTR = R38;                    # BP_INTR = FN615(BP)
8943: a3,e8,8c,32         ldw   R32,[Re8+8c]     R32 = NEBART;
8947: a0,b4,34            ldw   R34,Rb4          R34 = N_RPM;                      # FILTERED ENGINE SPEED FOR TRANSMISSIONS USE
894a: a3,e2,a4,36         ldw   R36,[Re2+a4]     R36 = TCNE;
894e: ef,fe,bf            call  494f             UROLAV ();
8951: c3,e8,8c,3e         stw   R3e,[Re8+8c]     NEBART = R3e;                     # NEBART = UROLAV(N,TCNE)
8955: a3,e8,ac,32         ldw   R32,[Re8+ac]     R32 = TPBART;
8959: a0,b2,34            ldw   R34,Rb2          R34 = TP;                         # FILTERED THROTTLE POSITION FOR TRANSMISSION USE
895c: a3,e2,a6,36         ldw   R36,[Re2+a6]     R36 = TCTPTE;
8960: ef,ec,bf            call  494f             UROLAV ();
8963: c3,e8,ac,3e         stw   R3e,[Re8+ac]     TPBART = R3e;                     # TPBART = UROLAV(TP,TCTPTE)
8967: a3,e8,ac,3e         ldw   R3e,[Re8+ac]     R3e = TPBART;
896b: 08,01,3e            shrw  R3e,1            R3e >>= 1;
896e: a0,b2,38            ldw   R38,Rb2          R38 = TP;                         # THROTTLE POSITION RATE
8971: 08,01,38            shrw  R38,1            R38 >>= 1;
8974: 48,3e,38,3e         sb3w  R3e,R38,R3e      R3e = R38 - R3e;                  # TP - TBART
8978: c3,e8,ae,3e         stw   R3e,[Re8+ae]     TP_RATE = R3e;                    # TP_RATE = TP - TPBART (TP_RATE is clipped to +/- 512 counts)
897c: a3,e8,c8,32         ldw   R32,[Re8+c8]     R32 = VSBART;
8980: a3,e6,84,34         ldw   R34,[Re6+84]     R34 = VS;                         # FILTERED VEHICLE SPEED FOR TRANSMISSION USE
8984: a3,e2,a8,36         ldw   R36,[Re2+a8]     R36 = TCVST;
8988: ef,c4,bf            call  494f             UROLAV ();
898b: c3,e8,c8,3e         stw   R3e,[Re8+c8]     VSBART = R3e;                     # VSBART = UROLAV(VS,TCVST)
898f: b3,e8,e0,30         ldb   R30,[Re8+e0]     R30 = CTR_VSRATE;
8993: 9b,fd,d8,00,30      cmpb  R30,[Rfc+d8]     
8998: db,0a               jc    89a4             if (R30 < [c180])  {
899a: 17,30               incb  R30              R30++;
899c: db,48               jc    89e6             if (R30 > ff) goto 89e6;
899e: c7,e8,e0,30         stb   R30,[Re8+e0]     CTR_VSRATE = R30;
89a2: 20,42               sjmp  89e6             goto 89e6; }

89a4: 11,22               clrb  R22              R22 = 0;
89a6: 4b,e6,7a,3e,34      sb3w  R34,R3e,[Re6+7a] R34 = R3e - [2fa];
89ab: 37,35,04            jnb   B7,R35,89b2      if (B7_R35 = 1)  {
89ae: 03,34               negw  R34              R34 = -R34;
89b0: 17,22               incb  R22              R22++; }
89b2: 01,36               clrw  R36              R36 = 0;
89b4: 0d,0a,34            shldw R34,a            lR34 <<= a;
89b7: 8f,e6,7c,34         divw  R34,[Re6+7c]     wR34 /= [2fc];
89bb: d5,04               jnv   89c1             if (OVF = 1)  {
89bd: a1,ff,7f,34         ldw   R34,7fff         R34 = 7fff; }
89c1: 30,22,02            jnb   B0,R22,89c6      if (B0_R22 = 1)  {
89c4: 03,34               negw  R34              R34 = -R34; }
89c6: a3,e6,78,32         ldw   R32,[Re6+78]     R32 = [2f8];
89ca: a3,fd,d6,00,36      ldw   R36,[Rfc+d6]     R36 = [c17e];
89cf: ef,84,bf            call  4956             ROLAV ();
89d2: c3,e6,78,3e         stw   R3e,[Re6+78]     [2f8] = R3e;
89d6: a3,e8,c8,3e         ldw   R3e,[Re8+c8]     R3e = VSBART;
89da: c3,e6,7a,3e         stw   R3e,[Re6+7a]     [2fa] = R3e;
89de: c7,e8,e0,00         stb   R0,[Re8+e0]      CTR_VSRATE = 0;
89e2: c3,e6,7c,00         stw   R0,[Re6+7c]      [2fc] = 0; }
89e6: a3,e8,a0,30         ldw   R30,[Re8+a0]     R30 = [320];
89ea: 6c,3e,30            ml2w  R30,R3e          lR30 *= R3e;
89ed: 99,3f,33            cmpb  R33,3f           
89f0: d1,05               jleu  89f7             if (R33 > 3f)  {
89f2: b1,ff,33            ldb   R33,ff           R33 = ff;
89f5: 20,03               sjmp  89fa             goto 89fa; }

89f7: 0d,02,30            shldw R30,2            lR30 <<= 2;
89fa: c7,e8,d7,33         stb   R33,[Re8+d7]     VSBART_RT = R33;
89fe: 5f,e2,d6,33,30      ml3b  R30,R33,[Re2+d6] wR30 = yR33 * NVBASE;
8a03: c3,e8,8e,30         stw   R30,[Re8+8e]     NOBART = R30;
8a07: ef,0f,01            call  8b19             SPEED_RATIO_ACROSS_TORQUE_CONVERTER ();
8a0a: c3,e8,a2,14         stw   R14,[Re8+a2]     SPD_RATIO = R14;
8a0e: a3,e2,b0,30         ldw   R30,[Re2+b0]     R30 = V_BOO_SPD;
8a12: 88,30,bc            cmpw  Rbc,R30          
8a15: d9,05               jgtu  8a1c             if (TP_REL <= R30)  {
8a17: 91,02,53            orb   R53,2            B1_R53 = 1;
8a1a: 20,0e               sjmp  8a2a             goto 8a2a; }

8a1c: 67,e2,b2,30         ad2w  R30,[Re2+b2]     R30 += [c170];
8a20: db,08               jc    8a2a             if (R30 <= ffff)  {
8a22: 88,30,bc            cmpw  Rbc,R30          
8a25: d1,03               jleu  8a2a             if (TP_REL > R30)  {
8a27: 71,fd,53            an2b  R53,fd           B1_R53 = 0; } }
8a2a: 8b,e2,b6,14         cmpw  R14,[Re2+b6]     
8a2e: d3,05               jnc   8a35             if (R14 >= SPD_PM)  {
8a30: 91,01,53            orb   R53,1            B0_R53 = 1;
8a33: 20,12               sjmp  8a47             goto 8a47; }

8a35: a3,e2,b6,30         ldw   R30,[Re2+b6]     R30 = SPD_PM;
8a39: 6b,e2,b4,30         sb2w  R30,[Re2+b4]     R30 -= [c172];
8a3d: d1,08               jleu  8a47             if (R30 > 0)  {
8a3f: 88,30,14            cmpw  R14,R30          
8a42: db,03               jc    8a47             if (R14 < R30)  {
8a44: 71,fe,53            an2b  R53,fe           B0_R53 = 0; } }
8a47: 3a,a6,08            jb    B2,Ra6,8a52      if (B2_TFMFLG_a6 = 0)  {
8a4a: 31,53,08            jnb   B1,R53,8a55      if (B1_R53 = 0) goto 8a55;
8a4d: 71,bf,df            an2b  Rdf,bf           B6_FLG_PWR_df = 0;
8a50: 20,06               sjmp  8a58             goto 8a58; }

8a52: 38,53,f8            jb    B0,R53,8a4d      if (B0_R53 = 1) goto 8a4d; }
8a55: 91,40,df            orb   Rdf,40           B6_FLG_PWR_df = 1;
8a58: a3,e8,b2,32         ldw   R32,[Re8+b2]     R32 = TPBARTV;
8a5c: a0,b2,34            ldw   R34,Rb2          R34 = TP;
8a5f: a3,e2,82,36         ldw   R36,[Re2+82]     R36 = [c140];
8a63: ef,e9,be            call  494f             UROLAV ();
8a66: c3,e8,b2,3e         stw   R3e,[Re8+b2]     TPBARTV = R3e;
8a6a: a3,e8,aa,32         ldw   R32,[Re8+aa]     R32 = TPBARTC;
8a6e: a0,b2,34            ldw   R34,Rb2          R34 = TP;
8a71: a3,e2,aa,36         ldw   R36,[Re2+aa]     R36 = TCTPTC;
8a75: ef,d7,be            call  494f             UROLAV ();
8a78: c3,e8,aa,3e         stw   R3e,[Re8+aa]     TPBARTC = R3e;
8a7c: a3,e8,94,30         ldw   R30,[Re8+94]     R30 = TOT;
8a80: b3,fd,d1,00,16      ldb   R16,[Rfc+d1]     R16 = OFM_MUL;
8a85: 38,a6,1f            jb    B0,Ra6,8aa7      if (B0_ETV_ERROR_a6 = 0)  {
8a88: b1,80,16            ldb   R16,80           R16 = 80;
8a8b: ef,52,be            call  48e0             SSWFuncLU_48e0 (
8a8e: de,c1                     #arg 1              FN690,
8a90: 1a,03                     #arg 2              INIT_TOT );
8a92: 88,38,30            cmpw  R30,R38          
8a95: d6,10               jge   8aa7             if (R30 < R38)  {
8a97: a3,e8,f4,38         ldw   R38,[Re8+f4]     R38 = TSFETMR;
8a9b: 8b,fd,ce,00,38      cmpw  R38,[Rfc+ce]     
8aa0: db,05               jc    8aa7             if (R38 < CS_MAX_TIME)  {
8aa2: b3,fd,d0,00,16      ldb   R16,[Rfc+d0]     R16 = CS_MUL; } } }
8aa7: c7,e8,cb,16         stb   R16,[Re8+cb]     CS_SFT_MULT = R16;
8aab: 71,ef,e1            an2b  Re1,ef           FLG_TVSTR_CD = 0;
8aae: 8b,fc,76,30         cmpw  R30,[Rfc+76]     
8ab2: d2,03               jgt   8ab7             if (R30 <= TOTTV1)  {
8ab4: 91,10,e1            orb   Re1,10           FLG_TVSTR_CD = 1; }
8ab7: 71,bf,e1            an2b  Re1,bf           FLG_TVENG_CD = 0;
8aba: 8b,fc,78,30         cmpw  R30,[Rfc+78]     
8abe: d2,0e               jgt   8ace             if (R30 <= TOTTV2)  {
8ac0: a3,e8,f4,42         ldw   R42,[Re8+f4]     R42 = TSFETMR;
8ac4: 8b,fd,d4,00,42      cmpw  R42,[Rfc+d4]     
8ac9: db,03               jc    8ace             if (R42 < [c17c])  {
8acb: 91,40,e1            orb   Re1,40           FLG_TVENG_CD = 1; } }
8ace: 71,df,e1            an2b  Re1,df           FLG_TVENG_MD = 0;
8ad1: 8b,fc,7a,30         cmpw  R30,[Rfc+7a]     
8ad5: d2,03               jgt   8ada             if (R30 <= TOTTV3)  {
8ad7: 91,20,e1            orb   Re1,20           FLG_TVENG_MD = 1; }
8ada: 71,7f,49            an2b  R49,7f           B7_R49 = 0;
8add: 8b,fc,7c,30         cmpw  R30,[Rfc+7c]     
8ae1: d6,03               jge   8ae6             if (R30 < TOTTV4)  {
8ae3: 91,80,49            orb   R49,80           B7_R49 = 1; }
8ae6: 3f,df,2f            jb    B7,Rdf,8b18      if (B7_FLG_SFT_IN_df = 0)  {
8ae9: af,fd,ec,00,34      ldzbw R34,[Rfc+ec]     wR34 = NVBASE;
8aee: 6f,e8,9c,34         ml2w  R34,[Re8+9c]     lR34 *= RT_GR_CUR;
8af2: 0f,42,34            norm  R34,R42          R42 = normalize(lR34);
8af5: 4f,e8,a0,36,34      ml3w  R34,R36,[Re8+a0] lR34 = wR36 * [320];
8afa: b1,05,39            ldb   R39,5            R39 = 5;
8afd: 78,42,39            sb2b  R39,R42          R39 -= R42;
8b00: a3,e8,8c,30         ldw   R30,[Re8+8c]     R30 = NEBART;
8b04: 01,32               clrw  R32              R32 = 0;
8b06: 0f,42,30            norm  R30,R42          R42 = normalize(lR30);
8b09: ef,c2,d1            call  5cce             Sub_5cce ();
8b0c: 98,31,00            cmpb  R0,R31           
8b0f: df,03               je    8b14             if (R31 != 0)  {
8b11: b1,ff,30            ldb   R30,ff           R30 = ff; }
8b14: c7,e4,7b,30         stb   R30,[Re4+7b]     [1fb] = R30; }
8b18: f0                  ret                    return;

   SPEED_RATIO_ACROSS_TORQUE_CONVERTER:
8b19: a3,e8,8e,32         ldw   R32,[Re8+8e]     R32 = NOBART;
8b1d: 4f,e8,9c,32,14      ml3w  R14,R32,[Re8+9c] lR14 = wR32 * RT_GR_CUR;
8b22: 8f,e8,8c,14         divw  R14,[Re8+8c]     wR14 /= NEBART;
8b26: d5,03               jnv   8b2b             if (OVF = 1)  {
8b28: bd,ff,14            ldsbw R14,ff           swR14 = ff; }
8b2b: f0                  ret                    return;

   Sub_8b2c:
8b2c: 71,fd,df            an2b  Rdf,fd           B1_Rdf = 0;
8b2f: b0,bd,34            ldb   R34,Rbd          R34 = TP_REL_H;
8b32: ef,5c,bd            call  4891             UUYFuncLU_4891 ();
8b35: b0,38,41            ldb   R41,R38          R41 = R38;
8b38: 11,40               clrb  R40              R40 = 0;
8b3a: a0,3c,32            ldw   R32,R3c          R32 = R3c;
8b3d: b0,bd,34            ldb   R34,Rbd          R34 = TP_REL_H;
8b40: 91,10,9f            orb   R9f,10           B4_SignedOutput = 1;
8b43: ef,4b,bd            call  4891             UUYFuncLU_4891 ();
8b46: 54,00,38,34         ad3b  R34,R38,R0       R34 = R38;
8b4a: d6,05               jge   8b51             if (R34 < 0)  {
8b4c: 13,34               negb  R34              R34 = -R34;
8b4e: 91,02,df            orb   Rdf,2            B1_Rdf = 1; }
8b51: 7f,e8,ca,34         ml2b  R34,[Re8+ca]     wR34 *= BP_INTR;
8b55: 09,01,34            shlw  R34,1            R34 <<= 1;
8b58: 31,df,09            jnb   B1,Rdf,8b64      if (B1_Rdf = 1)  {
8b5b: 68,34,40            sb2w  R40,R34          R40 -= R34;
8b5e: db,0c               jc    8b6c             if (R40 >= 0) goto 8b6c;
8b60: 01,40               clrw  R40              R40 = 0;
8b62: 20,08               sjmp  8b6c             goto 8b6c; }

8b64: 64,34,40            ad2w  R40,R34          R40 += R34;
8b67: d3,03               jnc   8b6c             if (R40 > ffff)  {
8b69: bd,ff,40            ldsbw R40,ff           swR40 = ff; } }
8b6c: 9b,e8,d7,41         cmpb  R41,[Re8+d7]     
8b70: f0                  ret                    return;

   E4OD_INPUT_PROCESSING_COM1:
8b71: 30,a1,03            jnb   B0,Ra1,8b77      if (B0_MAPUP_NORM_a1 = 1)  {
8b74: ef,e7,be            call  4a5e             Calculation_MAPWBAR (); }
8b77: b1,01,22            ldb   R22,1            R22 = 1;
8b7a: ef,e8,bc            call  4865             SUYFuncLU_4865 (
8b7d: 9e,c7                     #arg 1              FN405,
8b7f: b7,00                     #arg 2              ACT );
8b81: b0,38,3c            ldb   R3c,R38          R3c = R38;
8b84: 45,22,08,fc,1e      ad3w  R1e,Rfc,822      R1e = FN1420;
8b89: a3,e4,aa,20         ldw   R20,[Re4+aa]     R20 = MAPWBAR;
8b8d: ef,19,ba            call  45a9             Compute_AMPEM_AMPEMT ();
8b90: c3,e4,74,38         stw   R38,[Re4+74]     AMPEMT = R38;
8b94: ef,8c,ba            call  4623             Subtract_EM ();
8b97: c3,e4,72,3a         stw   R3a,[Re4+72]     AMT = R3a;                        # AMT is used to calculate ARCHG in the torque calculation
8b9b: a0,b4,14            ldw   R14,Rb4          R14 = N_RPM;
8b9e: 08,02,14            shrw  R14,2            R14 >>= 2;
8ba1: af,f6,05,16         ldzbw R16,[Rf6+5]      wR16 = ENGCYL;
8ba5: 6c,16,14            ml2w  R14,R16          lR14 *= R16;                      # (ENGCYL * N)
8ba8: a3,e4,72,1a         ldw   R1a,[Re4+72]     R1a = AMT;
8bac: 01,18               clrw  R18              R18 = 0;
8bae: 0c,02,18            shrdw R18,2            lR18 >>= 2;
8bb1: 8c,14,18            divw  R18,R14          wR18 /= R14;
8bb4: d5,03               jnv   8bb9             if (OVF = 1)  {
8bb6: bd,ff,18            ldsbw R18,ff           swR18 = ff; }
8bb9: a3,e8,bc,32         ldw   R32,[Re8+bc]     R32 = ARCHG;
8bbd: c0,34,18            stw   R18,R34          R34 = R18;
8bc0: 3b,4a,08            jb    B3,R4a,8bcb      if (B3_TLS_NV_FLG_4a = 0)  {
8bc3: 3a,4a,05            jb    B2,R4a,8bcb      if (B2_TLS_24_FLG_4a = 0)  {
8bc6: 39,4a,02            jb    B1,R4a,8bcb      if (B1_TLS_34_FLG_4a = 0)  {
8bc9: 20,0b               sjmp  8bd6             goto 8bd6; } } }                  # R18 = AMT/(ENGCYL * N)

# INTRN_EQ_TQ_CALC_COM2
8bcb: a3,fd,c2,00,36      ldw   R36,[Rfc+c2]     R36 = TCTTA;
8bd0: ef,7c,bd            call  494f             UROLAV ();
8bd3: c0,18,3e            stw   R3e,R18          R18 = R3e;                        # R18 = UROLAV(AMT/[ENGCYL*N], TCTTA) (Filter ARCHG in torque truncation)
8bd6: c3,e8,bc,18         stw   R18,[Re8+bc]     ARCHG = R18;
8bda: a0,18,1a            ldw   R1a,R18          R1a = R18;
8bdd: 01,18               clrw  R18              R18 = 0;
8bdf: 0c,01,18            shrdw R18,1            lR18 >>= 1;
8be2: 8f,fd,9a,00,18      divw  R18,[Rfc+9a]     wR18 /= SARCHG;
8be7: d5,03               jnv   8bec             if (OVF = 1)  {
8be9: bd,ff,18            ldsbw R18,ff           swR18 = ff; }
8bec: c3,e8,be,18         stw   R18,[Re8+be]     LOAD = R18;                       # LOAD = ARCHG / SARCHG
8bf0: ef,f3,bc            call  48e6             UUWFuncLU_48e6 (
8bf3: 06,c8                     #arg 1              FN070C,
8bf5: b4,00                     #arg 2              N_RPM );
8bf7: c0,16,38            stw   R38,R16          R16 = R38;
8bfa: ef,e9,bc            call  48e6             UUWFuncLU_48e6 (
8bfd: ea,c7                     #arg 1              FN034A,
8bff: 18,00                     #arg 2              18 );
8c01: c0,1a,38            stw   R38,R1a          R1a = R38;
8c04: 45,ce,08,fc,38      ad3w  R38,Rfc,8ce      R38 = FN1617;
8c09: ef,bd,00            call  8cc9             FN161x(N,LOAD) ();                # FN1617(N,LOAD)
8c0c: ac,3b,14            ldzbw R14,R3b          wR14 = yR3b;
8c0f: b3,fd,d3,00,30      ldb   R30,[Rfc+d3]     R30 = MBTEGR;
8c14: 7f,e6,44,30         ml2b  R30,[Re6+44]     wR30 *= EGRACT;                   # MBTEGR * EGRACT 
8c18: 08,05,30            shrw  R30,5            R30 >>= 5;
8c1b: 64,30,14            ad2w  R14,R30          R14 += R30;                       # FN1617(N,LOAD) + MBTEGR * EGRACT 
8c1e: b1,80,30            ldb   R30,80           R30 = 80;                         # SPK_LAMBSE = 1 (air/fuel mixture is close to stoichiometry)
8c21: 32,9f,03            jnb   B2,R9f,8c27      if (B2_OLFLG = 1)  {
8c24: b0,97,30            ldb   R30,R97          R30 = LAMBSE1_H; }                # SPK_LAMBSE = LAMBSE1
8c27: c7,e4,7a,30         stb   R30,[Re4+7a]     SPK_LAMBSE = R30;
8c2b: ef,3f,bc            call  486d             USYFuncLU_486d (
8c2e: bc,80                     #arg 1              FN730,
8c30: fa,01                     #arg 2              SPK_LAMBSE );
8c32: 16,38               sexb  R38              swR38 = R38;
8c34: 64,38,14            ad2w  R14,R38          R14 += R38;                       # FN1617(N,LOAD) + MBTEGR * EGRACT  + FN730(SPK_LAMBSE)
8c37: 6b,e8,0e,14         sb2w  R14,[Re8+e]      R14 -= SAFTOT;                    # FN1617(N,LOAD) + MBTEGR * EGRACT  + FN730(SPK_LAMBSE) - SAFTOT
8c3b: de,0a               jlt   8c47             if (R14 >= 0)  {
8c3d: 98,00,15            cmpb  R15,R0           
8c40: df,07               je    8c49             if (R15 = 0) goto 8c49;
8c42: b1,ff,14            ldb   R14,ff           R14 = ff;
8c45: 20,02               sjmp  8c49             goto 8c49; }

8c47: 11,14               clrb  R14              R14 = 0; }                        # (clip SPK_DELTA to ZERO minimum)
8c49: c7,e8,df,14         stb   R14,[Re8+df]     SPK_DELTA = R14;
8c4d: 45,86,08,fc,38      ad3w  R38,Rfc,886      R38 = FN1615A;
8c52: ef,74,00            call  8cc9             FN161x(N,LOAD) ();                # FN1615A(N,LOAD)
8c55: b0,3b,3e            ldb   R3e,R3b          R3e = R3b;
8c58: ef,15,bc            call  4870             UUYFuncLU_4870 (
8c5b: be,c7                     #arg 1              FN621,
8c5d: 14,00                     #arg 2              14 );
8c5f: 7c,38,3e            ml2b  R3e,R38          wR3e *= R38;                      # FN1615A(N,LOAD)*FN621(SPK_DELTA)
8c62: 32,9f,16            jnb   B2,R9f,8c7b      if (B2_OLFLG = 1)  {
8c65: ef,7e,bc            call  48e6             UUWFuncLU_48e6 (
8c68: ce,c7                     #arg 1              FN623,
8c6a: 96,00                     #arg 2              LAMBSE1 );
8c6c: 4c,38,3e,3c         ml3w  R3c,R3e,R38      lR3c = wR3e * R38;                # [FN1615A(N,LOAD)*FN621(SPK_DELTA)*FN623(LAMBSE)]
8c70: 3f,3f,05            jb    B7,R3f,8c78      if (B7_R3f = 0)  {
8c73: 0d,01,3c            shldw R3c,1            lR3c <<= 1;
8c76: 20,03               sjmp  8c7b             goto 8c7b; }

8c78: b1,ff,3f            ldb   R3f,ff           R3f = ff; }
8c7b: ef,f2,bb            call  4870             UUYFuncLU_4870 (
8c7e: aa,c7                     #arg 1              FN618,
8c80: ea,01                     #arg 2              N_BYTE );
8c82: 78,38,3f            sb2b  R3f,R38          R3f -= R38;                       # - FN618(N_BYTE)
8c85: d3,3d               jnc   8cc4             if (R3f >= 0)  {
8c87: 45,aa,08,fc,38      ad3w  R38,Rfc,8aa      R38 = FN1616;
8c8c: ef,3a,00            call  8cc9             FN161x(N,LOAD) ();                # FN1616(N,LOAD)
8c8f: 78,3b,3f            sb2b  R3f,R3b          R3f -= R3b;                       # - FN1616(N,LOAD)
8c92: d3,30               jnc   8cc4             if (R3f >= 0)  {
8c94: 37,79,0c            jnb   B7,R79,8ca3      if (ACCFLG = 1)  {                # Include FN619 in TQ_NET
8c97: ef,d6,bb            call  4870             UUYFuncLU_4870 (
8c9a: b4,c7                     #arg 1              FN619,
8c9c: ea,01                     #arg 2              N_BYTE );
8c9e: 78,38,3f            sb2b  R3f,R38          R3f -= R38;                       # [- FN619(N_BYTE)]
8ca1: d3,21               jnc   8cc4             if (R3f < 0) goto 8cc4; }
8ca3: c7,e8,de,3f         stb   R3f,[Re8+de]     TQ_NET = R3f;
8ca7: ef,3c,bc            call  48e6             UUWFuncLU_48e6 (
8caa: 06,c7                     #arg 1              FN617,
8cac: 22,03                     #arg 2              SPD_RATIO );
8cae: ac,3f,36            ldzbw R36,R3f          wR36 = yR3f;
8cb1: 6c,36,38            ml2w  R38,R36          lR38 *= R36;                      # TQ_NET * FN617(SPD_RATIO)
8cb4: 0c,08,38            shrdw R38,8            lR38 >>= 8;
8cb7: 88,00,3a            cmpw  R3a,R0           
8cba: df,03               je    8cbf             if (R3a != 0)  {
8cbc: bd,ff,38            ldsbw R38,ff           swR38 = ff; }
8cbf: c3,e8,b0,38         stw   R38,[Re8+b0]     TQ_OFM = R38;
8cc3: f0                  ret                    return; } } }

8cc4: c4,3f,00            stb   R0,R3f           R3f = 0;                          # (clip TQ_NET to ZERO minimum)
8cc7: 27,da               sjmp  8ca3             goto 8ca3;

   FN161x(N,LOAD):
8cc9: c0,30,16            stw   R16,R30          R30 = R16;
8ccc: c0,32,1a            stw   R1a,R32          R32 = R1a;
8ccf: ad,06,34            ldzbw R34,6            wR34 = 6;
8cd2: ef,e4,bc            call  49b9             Four_Point_Interpolation ();
8cd5: f0                  ret                    return;

   SC_DESRD_GR_DETR_COM1:
8cd6: c7,e8,ce,d8         stb   Rd8,[Re8+ce]     GR_DS_LST = GR_DS;
8cda: 11,1a               clrb  R1a              R1a = 0;
8cdc: 99,06,db            cmpb  Rdb,6            
8cdf: df,05               je    8ce6             if (PDL != 6)  {
8ce1: 99,08,db            cmpb  Rdb,8            
8ce4: d7,19               jne   8cff             if (PDL != 8) goto 8cff; }
8ce6: 17,1a               incb  R1a              R1a++;
8ce8: b3,e8,d9,30         ldb   R30,[Re8+d9]     R30 = PDL_LST;
8cec: 99,06,30            cmpb  R30,6            
8cef: df,0e               je    8cff             if (R30 != 6)  {
8cf1: 99,08,30            cmpb  R30,8            
8cf4: df,09               je    8cff             if (R30 != 8)  {
8cf6: 17,1a               incb  R1a              R1a++;
8cf8: 71,7f,df            an2b  Rdf,7f           B7_FLG_SFT_IN_df = 0;
8cfb: c7,e8,ec,00         stb   R0,[Re8+ec]      TM_SFT_IN = 0; } } }
8cff: 98,00,1a            cmpb  R1a,R0           
8d02: df,05               je    8d09             if (R1a != 0)  {
8d04: ef,58,00            call  8d5f             SC_GR_DS_AUTO_COM1 ();            # Do "GR_DS, PRNDL = 3 OR 4" Logic
8d07: 20,10               sjmp  8d19             goto 8d19; }

8d09: b1,02,d8            ldb   Rd8,2            GR_DS = 2;
8d0c: 99,02,db            cmpb  Rdb,2            
8d0f: df,08               je    8d19             if (PDL != 2)  {
8d11: 99,04,db            cmpb  Rdb,4            
8d14: d7,03               jne   8d19             if (PDL = 4)  {
8d16: b1,04,d8            ldb   Rd8,4            GR_DS = 4; } }
8d19: c7,e8,d0,d8         stb   Rd8,[Re8+d0]     GR_DS_TV = GR_DS;
8d1d: 38,1a,0c            jb    B0,R1a,8d2c      if (B0_R1a = 0)  {
8d20: c3,e8,ee,00         stw   R0,[Re8+ee]      TM_DEL_SFT = 0;
8d24: 71,fb,df            an2b  Rdf,fb           B2_Rdf = 0;
8d27: 71,df,df            an2b  Rdf,df           B5_FLG_SF_AUTO_df = 0;
8d2a: 20,03               sjmp  8d2f             goto 8d2f; }

8d2c: ef,f9,01            call  8f28             Delay_Shift_Logic ();
8d2f: 8b,e8,ee,00         cmpw  R0,[Re8+ee]      
8d33: d7,03               jne   8d38             if (TM_DEL_SFT = 0)  {
8d35: 71,7f,4a            an2b  R4a,7f           B7_FLG_DEL_MDN_4a = 0; }
8d38: 71,fe,d0            an2b  Rd0,fe           B0_Rd0 = 0;
8d3b: 91,02,d0            orb   Rd0,2            B1_Rd0 = 1;
8d3e: 9b,e8,d0,da         cmpb  Rda,[Re8+d0]     
8d42: d3,08               jnc   8d4c             if (GEAR_CUR >= GR_DS_TV)  {
8d44: d7,0c               jne   8d52             if (GEAR_CUR != GR_DS_TV) goto 8d52;
8d46: 9b,e8,cc,da         cmpb  Rda,[Re8+cc]     
8d4a: d1,06               jleu  8d52             if (GEAR_CUR <= GEAR_OLD) goto 8d52; }
8d4c: 95,01,d0            xorb  Rd0,1            B0_Rd0 ^= 1;
8d4f: 95,02,d0            xorb  Rd0,2            B1_Rd0 ^= 1; } }
8d52: 71,fb,a2            an2b  Ra2,fb           B2_FLG_FRST_DS_a2 = 0;
8d55: 9b,e8,ce,d8         cmpb  Rd8,[Re8+ce]     
8d59: df,03               je    8d5e             if (GR_DS != GR_DS_LST)  {
8d5b: 91,04,a2            orb   Ra2,4            B2_FLG_FRST_DS_a2 = 1; }
8d5e: f0                  ret                    return;

   SC_GR_DS_AUTO_COM1:
8d5f: ef,f4,0e            call  9c56             Sub_9c56 (
8d62: da,00                     #arg 1              GEAR_CUR,
8d64: 30,00                     #arg 2              30 );
8d66: 71,f7,df            an2b  Rdf,f7           B3_FLG_UP_NE_df = 0;              # (Start fresh every time)
8d69: 71,fd,df            an2b  Rdf,fd           B1_Rdf = 0;
8d6c: 3e,a6,06            jb    B6,Ra6,8d75      if (B6_VSFMFLG_a6 = 0)  {         # (VS sensor OK)
8d6f: 9b,e6,bb,00         cmpb  R0,[Re6+bb]      
8d73: df,02               je    8d77             if (VSCTR = 0) goto VEHICLE_SPEED_SENSOR_OK_SHIFT_LOGIC; }  # (stable VS values)    
8d75: 20,f3               sjmp  8e6a             goto VEHICLE_SPEED_SENSOR_FAILURE_SHIFT_LOGIC; }

   VEHICLE_SPEED_SENSOR_OK_SHIFT_LOGIC:
8d77: 39,e0,41            jb    B1,Re0,8dbb      if (B1_FLG_4X4L_e0 = 0)  {
8d7a: 31,30,12            jnb   B1,R30,8d8f      if (B1_R30 = 1)  {
8d7d: a3,e2,c6,32         ldw   R32,[Re2+c6]     R32 = NE12S;
8d81: a3,e2,c4,34         ldw   R34,[Re2+c4]     R34 = NE12A;
8d85: 29,2e               scall 8eb5             Sub_8eb5 ();
8d87: 33,df,31            jnb   B3,Rdf,8dbb      if (B3_FLG_UP_NE_df = 0) goto 8dbb;
8d8a: b1,04,d8            ldb   Rd8,4            GR_DS = 4;
8d8d: 21,15               sjmp  8ea4             goto 8ea4; }

8d8f: 32,30,12            jnb   B2,R30,8da4      if (B2_R30 = 1)  {
8d92: a3,e2,ca,32         ldw   R32,[Re2+ca]     R32 = NE23S;
8d96: a3,e2,c8,34         ldw   R34,[Re2+c8]     R34 = NE23A;
8d9a: 29,19               scall 8eb5             Sub_8eb5 ();
8d9c: 33,df,1c            jnb   B3,Rdf,8dbb      if (B3_FLG_UP_NE_df = 0) goto 8dbb;
8d9f: b1,06,d8            ldb   Rd8,6            GR_DS = 6;
8da2: 21,00               sjmp  8ea4             goto 8ea4; }

8da4: 99,08,db            cmpb  Rdb,8            
8da7: d7,12               jne   8dbb             if (PDL = 8)  {
8da9: a3,e2,ce,32         ldw   R32,[Re2+ce]     R32 = NS34S;
8dad: a3,e2,cc,34         ldw   R34,[Re2+cc]     R34 = NS34A;
8db1: 29,02               scall 8eb5             Sub_8eb5 ();
8db3: 33,df,05            jnb   B3,Rdf,8dbb      if (B3_FLG_UP_NE_df = 1)  {
8db6: b1,08,d8            ldb   Rd8,8            GR_DS = 8;
8db9: 20,e9               sjmp  8ea4             goto 8ea4; } } } } }

8dbb: 3c,30,24            jb    B4,R30,8de2      if (B4_R30 = 0)  {
8dbe: 99,08,db            cmpb  Rdb,8            
8dc1: d7,1f               jne   8de2             if (PDL = 8)  {
8dc3: 45,ba,02,fc,32      ad3w  R32,Rfc,2ba      R32 = FN34S;
8dc8: 45,76,02,fc,3c      ad3w  R3c,Rfc,276      R3c = FN34A;
8dcd: 29,17               scall 8ee6             Sub_8ee6 ();
8dcf: db,11               jc    8de2             if (R41 < VSBART_RT)  {
8dd1: 39,e0,09            jb    B1,Re0,8ddd      if (B1_FLG_4X4L_e0 = 0)  {
8dd4: 45,8a,02,fc,32      ad3w  R32,Rfc,28a      R32 = FN34PPH;
8dd9: 29,23               scall 8efe             Sub_8efe ();
8ddb: d6,05               jge   8de2             if (R3a >= [2f8]) goto 8de2; }
8ddd: b1,08,d8            ldb   Rd8,8            GR_DS = 8;
8de0: 20,c2               sjmp  8ea4             goto 8ea4; } } } }

8de2: 99,06,da            cmpb  Rda,6            
8de5: db,1f               jc    8e06             if (GEAR_CUR < 6)  {
8de7: 45,62,02,fc,32      ad3w  R32,Rfc,262      R32 = FN23S;
8dec: 45,1e,02,fc,3c      ad3w  R3c,Rfc,21e      R3c = FN23A;
8df1: 28,f3               scall 8ee6             Sub_8ee6 ();
8df3: db,11               jc    8e06             if (R41 < VSBART_RT)  {
8df5: 39,e0,09            jb    B1,Re0,8e01      if (B1_FLG_4X4L_e0 = 0)  {
8df8: 45,32,02,fc,32      ad3w  R32,Rfc,232      R32 = FN23PPH;
8dfd: 28,ff               scall 8efe             Sub_8efe ();
8dff: d6,05               jge   8e06             if (R3a >= [2f8]) goto 8e06; }
8e01: b1,06,d8            ldb   Rd8,6            GR_DS = 6;
8e04: 20,9e               sjmp  8ea4             goto 8ea4; } } }

8e06: 31,30,13            jnb   B1,R30,8e1c      if (B1_R30 = 1)  {
8e09: 45,0a,02,fc,32      ad3w  R32,Rfc,20a      R32 = FN12S;
8e0e: 45,f6,01,fc,3c      ad3w  R3c,Rfc,1f6      R3c = FN12A;
8e13: 28,d1               scall 8ee6             Sub_8ee6 ();
8e15: db,05               jc    8e1c             if (R41 < VSBART_RT)  {
8e17: b1,04,d8            ldb   Rd8,4            GR_DS = 4;
8e1a: 20,88               sjmp  8ea4             goto 8ea4; } }

8e1c: 39,30,13            jb    B1,R30,8e32      if (B1_R30 = 0)  {
8e1f: 45,e2,02,fc,32      ad3w  R32,Rfc,2e2      R32 = FN21S;
8e24: 45,ce,02,fc,3c      ad3w  R3c,Rfc,2ce      R3c = FN21A;
8e29: 28,bb               scall 8ee6             Sub_8ee6 ();
8e2b: d1,05               jleu  8e32             if (R41 > VSBART_RT)  {
8e2d: b1,02,d8            ldb   Rd8,2            GR_DS = 2;
8e30: 20,72               sjmp  8ea4             goto 8ea4; } }

8e32: 99,04,da            cmpb  Rda,4            
8e35: d1,13               jleu  8e4a             if (GEAR_CUR > 4)  {
8e37: 45,0a,03,fc,32      ad3w  R32,Rfc,30a      R32 = FN32S;
8e3c: 45,f6,02,fc,3c      ad3w  R3c,Rfc,2f6      R3c = FN32A;
8e41: 28,a3               scall 8ee6             Sub_8ee6 ();
8e43: d1,05               jleu  8e4a             if (R41 > VSBART_RT)  {
8e45: b1,04,d8            ldb   Rd8,4            GR_DS = 4;
8e48: 20,5a               sjmp  8ea4             goto 8ea4; } }

8e4a: 34,30,18            jnb   B4,R30,8e65      if (B4_R30 = 1)  {
8e4d: 99,06,db            cmpb  Rdb,6            
8e50: df,0e               je    8e60             if (PDL != 6)  {
8e52: 45,32,03,fc,32      ad3w  R32,Rfc,332      R32 = FN43S;
8e57: 45,1e,03,fc,3c      ad3w  R3c,Rfc,31e      R3c = FN43A;
8e5c: 28,88               scall 8ee6             Sub_8ee6 ();
8e5e: d1,05               jleu  8e65             if (R41 <= VSBART_RT) goto 8e65; }
8e60: b1,06,d8            ldb   Rd8,6            GR_DS = 6;
8e63: 20,3f               sjmp  8ea4             goto 8ea4; } }

8e65: c4,d8,da            stb   Rda,Rd8          GR_DS = GEAR_CUR;
8e68: 20,3a               sjmp  8ea4             goto 8ea4;

   VEHICLE_SPEED_SENSOR_FAILURE_SHIFT_LOGIC:
8e6a: 3c,30,13            jb    B4,R30,8e80      if (B4_R30 = 0)  {
8e6d: ef,76,ba            call  48e6             UUWFuncLU_48e6 (
8e70: 5a,c3                     #arg 1              FN689U,
8e72: bc,00                     #arg 2              TP_REL );
8e74: 8b,e8,8c,38         cmpw  R38,[Re8+8c]     
8e78: db,06               jc    8e80             if (R38 < NEBART)  {
8e7a: 55,02,da,d8         ad3b  Rd8,Rda,2        GR_DS = GEAR_CUR + 2;
8e7e: 20,17               sjmp  8e97             goto 8e97; } }

8e80: 39,30,14            jb    B1,R30,8e97      if (B1_R30 = 0)  {
8e83: ef,60,ba            call  48e6             UUWFuncLU_48e6 (
8e86: 46,c3                     #arg 1              FN689D,
8e88: bc,00                     #arg 2              TP_REL );
8e8a: 8b,e8,8c,38         cmpw  R38,[Re8+8c]     
8e8e: d1,07               jleu  8e97             if (R38 > NEBART)  {
8e90: 3f,df,04            jb    B7,Rdf,8e97      if (B7_FLG_SFT_IN_df = 0)  {
8e93: 59,02,da,d8         sb3b  Rd8,Rda,2        GR_DS = GEAR_CUR - 2; } } }
8e97: 99,08,d8            cmpb  Rd8,8            
8e9a: d7,08               jne   8ea4             if (GR_DS = 8)  {
8e9c: 99,06,db            cmpb  Rdb,6            
8e9f: d7,03               jne   8ea4             if (PDL = 6)  {
8ea1: b1,06,d8            ldb   Rd8,6            GR_DS = 6; } }
8ea4: 37,df,0d            jnb   B7,Rdf,8eb4      if (B7_FLG_SFT_IN_df = 1)  {
8ea7: 9b,e8,ce,d8         cmpb  Rd8,[Re8+ce]     
8eab: d1,07               jleu  8eb4             if (GR_DS > GR_DS_LST)  {         # (Do not allow an upshift
8ead: b3,e8,ce,d8         ldb   Rd8,[Re8+ce]     GR_DS = GR_DS_LST;                #  if a previous shift is
8eb1: 71,f7,df            an2b  Rdf,f7           B3_FLG_UP_NE_df = 0; } }          #  still in progress)
8eb4: f0                  ret                    return;

   Sub_8eb5:
8eb5: 64,00,34            ad2w  R34,R0           R34 += 0;
8eb8: d6,05               jge   8ebf             if (R34 < 0)  {
8eba: 03,34               negw  R34              R34 = -R34;
8ebc: 91,02,df            orb   Rdf,2            B1_Rdf = 1; }
8ebf: b3,e8,ca,37         ldb   R37,[Re8+ca]     R37 = BP_INTR;
8ec3: 11,36               clrb  R36              R36 = 0;
8ec5: 6c,36,34            ml2w  R34,R36          lR34 *= R36;
8ec8: 31,df,09            jnb   B1,Rdf,8ed4      if (B1_Rdf = 1)  {
8ecb: 68,36,32            sb2w  R32,R36          R32 -= R36;
8ece: db,0c               jc    8edc             if (R32 >= 0) goto 8edc;
8ed0: 01,32               clrw  R32              R32 = 0;
8ed2: 20,08               sjmp  8edc             goto 8edc; }

8ed4: 64,36,32            ad2w  R32,R36          R32 += R36;
8ed7: d3,03               jnc   8edc             if (R32 > ffff)  {
8ed9: bd,ff,32            ldsbw R32,ff           swR32 = ff; } }
8edc: 8b,e8,8c,32         cmpw  R32,[Re8+8c]     
8ee0: db,03               jc    8ee5             if (R32 < NEBART)  {
8ee2: 91,08,df            orb   Rdf,8            B3_FLG_UP_NE_df = 1; }
8ee5: f0                  ret                    return;

   Sub_8ee6:
8ee6: ef,43,fc            call  8b2c             Sub_8b2c ();
8ee9: af,e8,cb,38         ldzbw R38,[Re8+cb]     wR38 = CS_SFT_MULT;
8eed: 6c,38,40            ml2w  R40,R38          lR40 *= R38;
8ef0: 0c,07,40            shrdw R40,7            lR40 >>= 7;
8ef3: 30,42,03            jnb   B0,R42,8ef9      if (B0_R42 = 1)  {
8ef6: b1,ff,41            ldb   R41,ff           R41 = ff; }
8ef9: 9b,e8,d7,41         cmpb  R41,[Re8+d7]     
8efd: f0                  ret                    return;

   Sub_8efe:
8efe: 11,3c               clrb  R3c              R3c = 0;
8f00: a0,bc,34            ldw   R34,Rbc          R34 = TP_REL;
8f03: 91,10,9f            orb   R9f,10           B4_SignedOutput = 1;
8f06: ef,fe,b9            call  4907             UUWFuncLU_4907 ();
8f09: 37,39,04            jnb   B7,R39,8f10      if (B7_R39 = 1)  {
8f0c: 03,38               negw  R38              R38 = -R38;
8f0e: 17,3c               incb  R3c              R3c++; }
8f10: 6f,e8,a0,38         ml2w  R38,[Re8+a0]     lR38 *= [320];
8f14: 35,3b,04            jnb   B5,R3b,8f1b      if (B5_R3b = 1)  {
8f17: a1,ff,1f,3a         ldw   R3a,1fff         R3a = 1fff; }
8f1b: 0d,02,38            shldw R38,2            lR38 <<= 2;
8f1e: 30,3c,02            jnb   B0,R3c,8f23      if (B0_R3c = 1)  {
8f21: 03,3a               negw  R3a              R3a = -R3a; }
8f23: 8b,e6,78,3a         cmpw  R3a,[Re6+78]     
8f27: f0                  ret                    return;

   Delay_Shift_Logic:
8f28: b3,e8,ce,30         ldb   R30,[Re8+ce]     R30 = GR_DS_LST;
8f2c: 98,d8,30            cmpb  R30,Rd8          
8f2f: df,4f               je    8f80             if (R30 != GR_DS)  {              # (desired gear has changed)
8f31: 32,df,08            jnb   B2,Rdf,8f3c      if (B2_Rdf = 1)  {
8f34: 8b,e8,ee,00         cmpw  R0,[Re8+ee]      
8f38: df,43               je    8f7d             if (TM_DEL_SFT = 0) goto 8f7d;
8f3a: 20,3c               sjmp  8f78             goto 8f78; }

8f3c: a3,e2,08,32         ldw   R32,[Re2+8]      R32 = [Re2+8];
8f40: d3,18               jnc   8f5a             if (TM_DEL_SFT <= 0)  {
8f42: a3,e2,0a,32         ldw   R32,[Re2+a]      R32 = [Re2+a];
8f46: 71,ef,a2            an2b  Ra2,ef           B4_FLG_TIP_OUT_a2 = 0;
8f49: 71,bf,4a            an2b  R4a,bf           B6_R4a = 0;
8f4c: 71,7f,4a            an2b  R4a,7f           B7_FLG_DEL_MDN_4a = 0;
8f4f: ef,31,00            call  8f83             MANUAL_DOWNSHIFT_DETERMINATION ();
8f52: 36,4a,19            jnb   B6,R4a,8f6e      if (B6_R4a = 0) goto 8f6e;
8f55: 91,80,4a            orb   R4a,80           B7_FLG_DEL_MDN_4a = 1;
8f58: 20,14               sjmp  8f6e             goto 8f6e; }

8f5a: 71,ef,a2            an2b  Ra2,ef           B4_FLG_TIP_OUT_a2 = 0;
8f5d: a3,e8,ae,34         ldw   R34,[Re8+ae]     R34 = TP_RATE;
8f61: 8b,e2,0e,34         cmpw  R34,[Re2+e]      
8f65: d6,07               jge   8f6e             if (R34 < [Re2+e])  {
8f67: a3,e2,0c,32         ldw   R32,[Re2+c]      R32 = [Re2+c];
8f6b: 91,10,a2            orb   Ra2,10           B4_FLG_TIP_OUT_a2 = 1; } }
8f6e: 91,04,df            orb   Rdf,4            B2_Rdf = 1;
8f71: c3,e8,ee,32         stw   R32,[Re8+ee]     TM_DEL_SFT = R32;
8f75: 71,df,df            an2b  Rdf,df           B5_FLG_SF_AUTO_df = 0;
8f78: c4,d8,30            stb   R30,Rd8          GR_DS = R30;
8f7b: 20,06               sjmp  8f83             goto MANUAL_DOWNSHIFT_DETERMINATION; }

8f7d: 91,20,df            orb   Rdf,20           B5_FLG_SF_AUTO_df = 1; }
8f80: 71,fb,df            an2b  Rdf,fb           B2_Rdf = 0;
   MANUAL_DOWNSHIFT_DETERMINATION:
8f83: 99,06,db            cmpb  Rdb,6            
8f86: d7,0b               jne   8f93             if (PDL = 6)  {
8f88: 99,08,da            cmpb  Rda,8            
8f8b: d7,06               jne   8f93             if (GEAR_CUR = 8)  {              # (driver did manual 4-3)
8f8d: 71,df,df            an2b  Rdf,df           B5_FLG_SF_AUTO_df = 0;
8f90: 91,40,4a            orb   R4a,40           B6_R4a = 1; } }
8f93: f0                  ret                    return;

   SC_CM_GR_DETR_COM1:
8f94: c7,e8,cd,d9         stb   Rd9,[Re8+cd]     GR_CM_LST = GR_CM;
8f98: 32,a2,0b            jnb   B2,Ra2,8fa6      if (B2_FLG_FRST_DS_a2 = 1)  {     # (new desired gear)  
8f9b: ef,48,b9            call  48e6             UUWFuncLU_48e6 (
8f9e: de,c4                     #arg 1              FN624,
8fa0: bc,00                     #arg 2              TP_REL );
8fa2: c3,e8,e2,38         stw   R38,[Re8+e2]     DNUN_TM = R38; }                  # (time to delay downshift to unlock converter)
8fa6: b3,e2,13,32         ldb   R32,[Re2+13]     R32 = SW_MSF;
8faa: 99,01,32            cmpb  R32,1            
8fad: d7,06               jne   8fb5             if (R32 = 1)  {                   # (Manual shift selection) 
8faf: b3,e2,12,d9         ldb   Rd9,[Re2+12]     GR_CM = GRMSFT;                   # GR_CM = GRMSFT
8fb3: 20,45               sjmp  8ffa             goto 8ffa; }

8fb5: 99,02,db            cmpb  Rdb,2            
8fb8: d7,05               jne   8fbf             if (PDL = 2)  {                   # DO "GR_CM, PRNDL = 1" LOGIC
8fba: ef,62,00            call  901f             SC_CM_GR_MAN1_COM1 ();
8fbd: 20,3b               sjmp  8ffa             goto 8ffa; }

8fbf: 99,04,db            cmpb  Rdb,4            
8fc2: d7,05               jne   8fc9             if (PDL = 4)  {                   # DO "GR_CM, PRNDL = 2" LOGIC
8fc4: ef,97,00            call  905e             SC_CM_GR_MAN2_COM1 ();            # GR_CM, PRNDL = 2 LOGIC
8fc7: 20,31               sjmp  8ffa             goto 8ffa; }

8fc9: 99,08,db            cmpb  Rdb,8            
8fcc: d9,11               jgtu  8fdf             if (PDL <= 8)  {
8fce: 98,d8,d9            cmpb  Rd9,Rd8          
8fd1: df,27               je    8ffa             if (GR_CM = GR_DS) goto 8ffa;
8fd3: d3,05               jnc   8fda             if (GR_CM >= GR_DS)  {            # DO "GR_CM, PRNDL = 3 OR 4 DOWNSHIFT"
8fd5: ef,c1,00            call  9099             SC_CM_GR_AUTO_DWN_COM1 ();        # GR_CM, PRNDL = 3 OR 4, DOWNSHIFT LOGIC
8fd8: 20,20               sjmp  8ffa             goto 8ffa; }

8fda: c4,d9,d8            stb   Rd8,Rd9          GR_CM = GR_DS;                    # GR_DS > GR_CM 
8fdd: 20,1b               sjmp  8ffa             goto 8ffa; }

8fdf: b1,02,d9            ldb   Rd9,2            GR_CM = 2;
8fe2: 99,0a,db            cmpb  Rdb,a            
8fe5: d7,13               jne   8ffa             if (PDL = a)  {
8fe7: b3,e8,d7,1e         ldb   R1e,[Re8+d7]     R1e = VSBART_RT;
8feb: 9b,fd,26,01,1e      cmpb  R1e,[Rfc+126]    
8ff0: d9,03               jgtu  8ff5             if (R1e <= VS_NEU)  {
8ff2: 36,a6,05            jnb   B6,Ra6,8ffa      if (B6_VSFMFLG_a6 = 0) goto 8ffa; }
8ff5: b3,fd,27,01,d9      ldb   Rd9,[Rfc+127]    GR_CM = GR_NEU; } } }
8ffa: 71,fd,de            an2b  Rde,fd           FLG_FRST_CM = 0;                  # (No shift this program pass)
8ffd: 9b,e8,cd,d9         cmpb  Rd9,[Re8+cd]     
9001: df,1b               je    901e             if (GR_CM != GR_CM_LST)  {        # (A shift has been commanded)  
9003: 91,02,de            orb   Rde,2            FLG_FRST_CM = 1;                  # (New commanded gear for this program pass only)
9006: c3,e4,70,00         stw   R0,[Re4+70]      [1f0] = 0;
900a: b3,e8,cd,32         ldb   R32,[Re8+cd]     R32 = GR_CM_LST;
900e: c7,e8,cf,32         stb   R32,[Re8+cf]     GR_OLD = R32;                     # GR_OLD = GR_CM_LST (Update old gear)
9012: c7,e8,cc,da         stb   Rda,[Re8+cc]     GEAR_OLD = GEAR_CUR;
9016: a3,e8,9c,32         ldw   R32,[Re8+9c]     R32 = RT_GR_CUR;
901a: c3,e8,9e,32         stw   R32,[Re8+9e]     RT_GR_OLD = R32; }
901e: f0                  ret                    return;

   SC_CM_GR_MAN1_COM1:
901f: 33,d9,04            jnb   B3,Rd9,9026      if (B3_GR_CM = 1)  {
9022: b1,06,d9            ldb   Rd9,6            GR_CM = 6;
9025: f0                  ret                    return; }

9026: 11,34               clrb  R34              R34 = 0;
9028: 3e,a6,0a            jb    B6,Ra6,9035      if (B6_VSFMFLG_a6 = 0)  {
902b: b3,e8,d7,32         ldb   R32,[Re8+d7]     R32 = VSBART_RT;
902f: 9b,e2,14,32         cmpb  R32,[Re2+14]     
9033: d1,02               jleu  9037             if (R32 <= [Re2+14]) goto 9037; }
9035: 17,34               incb  R34              R34++; }
9037: 36,a2,10            jnb   B6,Ra2,904a      if (B6_FLG_CS_ENG_a2 = 1)  {
903a: a3,e8,ea,32         ldw   R32,[Re8+ea]     R32 = TM_UNLK_CONV;
903e: 8b,e8,e2,32         cmpw  R32,[Re8+e2]     
9042: d3,06               jnc   904a             if (R32 >= DNUN_TM)  {
9044: 30,34,13            jnb   B0,R34,905a      if (B0_R34 = 0) goto 905a;
9047: 3a,d9,0c            jb    B2,Rd9,9056      if (B2_GR_CM = 1) goto 9056; } }
904a: 30,34,10            jnb   B0,R34,905d      if (B0_R34 = 0) return;
904d: b3,e8,d9,32         ldb   R32,[Re8+d9]     R32 = PDL_LST;
9051: 99,0a,32            cmpb  R32,a            
9054: d7,07               jne   905d             if (R32 != a) return; }
9056: b1,04,d9            ldb   Rd9,4            GR_CM = 4;
9059: f0                  ret                    return; }

905a: b1,02,d9            ldb   Rd9,2            GR_CM = 2; } }
905d: f0                  ret                    return;

   SC_CM_GR_MAN2_COM1:
905e: b3,e8,d9,30         ldb   R30,[Re8+d9]     R30 = PDL_LST;
9062: 99,02,30            cmpb  R30,2            
9065: d7,10               jne   9077             if (R30 = 2)  {                   # (current gear is first)  
9067: 99,02,d9            cmpb  Rd9,2            
906a: 3e,df,0a            jb    B6,Rdf,9077      if (B6_FLG_PWR_df = 0)  {
906d: b3,e2,15,30         ldb   R30,[Re2+15]     R30 = [Re2+15];
9071: c7,e8,02,30         stb   R30,[Re8+2]      TM_SFT_12MN = R30;
9075: 20,06               sjmp  907d             goto 907d; } }

9077: 9b,e8,02,00         cmpb  R0,[Re8+2]       
907b: df,04               je    9081             if (TM_SFT_12MN != 0)  {
907d: b1,02,d9            ldb   Rd9,2            GR_CM = 2;
9080: f0                  ret                    return; }

9081: 33,d9,04            jnb   B3,Rd9,9088      if (B3_GR_CM = 1)  {
9084: b1,06,d9            ldb   Rd9,6            GR_CM = 6;
9087: f0                  ret                    return; }

9088: 36,a2,0d            jnb   B6,Ra2,9098      if (B6_FLG_CS_ENG_a2 = 1)  {
908b: a3,e8,ea,32         ldw   R32,[Re8+ea]     R32 = TM_UNLK_CONV;
908f: 8b,e8,e2,32         cmpw  R32,[Re8+e2]     
9093: d3,03               jnc   9098             if (R32 >= DNUN_TM)  {
9095: b1,04,d9            ldb   Rd9,4            GR_CM = 4; } }
9098: f0                  ret                    return;

   SC_CM_GR_AUTO_DWN_COM1:
9099: 3b,a2,0d            jb    B3,Ra2,90a9      if (B3_FLG_LK_CM_a2 = 0)  {
909c: a3,e8,e8,30         ldw   R30,[Re8+e8]     R30 = TM_SFT_CCO;
90a0: 8b,e8,e2,30         cmpw  R30,[Re8+e2]     
90a4: d3,03               jnc   90a9             if (R30 >= DNUN_TM)  {
90a6: b0,d8,d9            ldb   Rd9,Rd8          GR_CM = GR_DS; } }                # (command downshift)
90a9: f0                  ret                    return;

   SC_TIMER_COM1:
90aa: 31,de,52            jnb   B1,Rde,90ff      if (FLG_FRST_CM = 1)  {           # (shift has been commanded)
90ad: 71,ef,df            an2b  Rdf,ef           B4_FLG_SFT_MDN_df = 0;
90b0: 9b,e8,cf,d9         cmpb  Rd9,[Re8+cf]     
90b4: d9,28               jgtu  90de             if (GR_CM <= GR_OLD)  {
90b6: 3e,df,1f            jb    B6,Rdf,90d8      if (B6_FLG_PWR_df = 0)  {
90b9: 3d,df,16            jb    B5,Rdf,90d2      if (B5_FLG_SF_AUTO_df = 0)  {
90bc: 01,42               clrw  R42              R42 = 0;
90be: 91,10,df            orb   Rdf,10           B4_FLG_SFT_MDN_df = 1;
90c1: b3,e8,d7,34         ldb   R34,[Re8+d7]     R34 = VSBART_RT;
90c5: 9b,e3,1c,ff,34      cmpb  R34,[Re2+ff1c]   
90ca: d1,24               jleu  90f0             if (R34 <= [Re2+ff1c]) goto 90f0;
90cc: a1,0a,00,42         ldw   R42,a            R42 = a;
90d0: 20,1e               sjmp  90f0             goto 90f0; }

90d2: a1,02,00,42         ldw   R42,2            R42 = 2;
90d6: 20,18               sjmp  90f0             goto 90f0; }

90d8: a1,04,00,42         ldw   R42,4            R42 = 4;
90dc: 20,12               sjmp  90f0             goto 90f0; }

90de: a1,06,00,42         ldw   R42,6            R42 = 6;
90e2: 36,df,0b            jnb   B6,Rdf,90f0      if (B6_FLG_PWR_df = 1)  {
90e5: a1,08,00,42         ldw   R42,8            R42 = 8;
90e9: 31,e0,04            jnb   B1,Re0,90f0      if (B1_FLG_4X4L_e0 = 1)  {
90ec: a1,0c,00,42         ldw   R42,c            R42 = c; } } }
90f0: 45,24,00,fc,30      ad3w  R30,Rfc,24       R30 = c0cc;
90f5: 64,30,42            ad2w  R42,R30          R42 += R30;
90f8: a2,42,30            ldw   R30,[R42]        R30 = [R42];
90fb: c3,e8,ec,30         stw   R30,[Re8+ec]     TM_SFT_IN = R30; }
90ff: 34,df,0f            jnb   B4,Rdf,9111      if (B4_FLG_SFT_MDN_df = 1)  {
9102: 36,df,0c            jnb   B6,Rdf,9111      if (B6_FLG_PWR_df = 1)  {
9105: a3,e3,12,ff,30      ldw   R30,[Re2+ff12]   R30 = [Re2+ff12];
910a: c3,e8,ec,30         stw   R30,[Re8+ec]     TM_SFT_IN = R30;
910e: 71,ef,df            an2b  Rdf,ef           B4_FLG_SFT_MDN_df = 0; } }
9111: 91,80,df            orb   Rdf,80           B7_FLG_SFT_IN_df = 1;
9114: 8b,e8,ec,00         cmpw  R0,[Re8+ec]      
9118: d7,0f               jne   9129             if (TM_SFT_IN = 0)  {
911a: 71,ef,df            an2b  Rdf,ef           B4_FLG_SFT_MDN_df = 0;
911d: 71,7f,df            an2b  Rdf,7f           B7_FLG_SFT_IN_df = 0;
9120: 8b,e8,ee,00         cmpw  R0,[Re8+ee]      
9124: d7,03               jne   9129             if (TM_DEL_SFT = 0)  {
9126: 71,ef,a2            an2b  Ra2,ef           B4_FLG_TIP_OUT_a2 = 0; } }
9129: f0                  ret                    return;

   SC_SOL_CTL_COM1:
912a: b3,e3,0c,ff,16      ldb   R16,[Re2+ff0c]   R16 = CLDCTM;
912f: b3,e8,f6,18         ldb   R18,[Re8+f6]     R18 = CYCCTR;
9133: 17,18               incb  R18              R18++;
9135: 98,16,18            cmpb  R18,R16          
9138: d3,02               jnc   913c             if (R18 >= R16)  {                # CYCCTR >= CLDCTM
913a: 11,18               clrb  R18              R18 = 0; }
913c: fa                  di                     interrupts OFF;
913d: ac,d9,30            ldzbw R30,Rd9          wR30 = GR_CM;
9140: 49,02,00,30,32      sb3w  R32,R30,2        R32 = R30 - 2;
9145: 71,cf,46            an2b  R46,cf           FLG_SS_1 = 0;
                                                 FLG_SS_2 = 0;
9148: 3b,30,11            jb    B3,R30,915c      if (B3_R30 = 0)  {
914b: 31,32,10            jnb   B1,R32,915e      if (B1_R32 = 0) goto 915e;
914e: 99,04,db            cmpb  Rdb,4            
9151: d9,0b               jgtu  915e             if (PDL > 4) goto 915e;
9153: b3,e3,0d,ff,38      ldb   R38,[Re2+ff0d]   R38 = TMS1G2;
9158: c7,e8,ff,38         stb   R38,[Re8+ff]     TM_SS1_GR2 = R38; }
915c: 20,2f               sjmp  918d             goto 918d; } }

915e: 3a,30,1b            jb    B2,R30,917c      if (B2_R30 = 0)  {
9161: 3a,e0,13            jb    B2,Re0,9177      if (B2_FLG_FRST_TV_e0 = 0)  {
9164: 18,01,16            shrb  R16,1            R16 >>= 1;
9167: 98,16,18            cmpb  R18,R16          
916a: d1,0b               jleu  9177             if (R18 > R16)  {                 # CYCCTR > CLDCTM/2
                                                                                   # (cycle shift solenoids)  
916c: 3e,e1,03            jb    B6,Re1,9172      if (FLG_TVENG_CD = 0)  {
916f: 35,e1,05            jnb   B5,Re1,9177      if (FLG_TVENG_MD = 0) goto 9177; }
9172: 3e,a5,02            jb    B6,Ra5,9177      if (UNDSP = 0)  {
9175: 20,13               sjmp  918a             goto 918a; } } } }

9177: 91,10,46            orb   R46,10           FLG_SS_1 = 1;
917a: 20,11               sjmp  918d             goto 918d; }

917c: 39,30,0b            jb    B1,R30,918a      if (B1_R30 = 0)  {
917f: 9b,e8,ff,00         cmpb  R0,[Re8+ff]      
9183: d3,05               jnc   918a             if (TM_SS1_GR2 <= 0)  {
9185: 91,30,46            orb   R46,30           FLG_SS_1 = 1;
                                                 FLG_SS_2 = 1;
9188: 20,03               sjmp  918d             goto 918d; } }

918a: 91,20,46            orb   R46,20           FLG_SS_2 = 1;
918d: fb                  ei                     interrupts ON;
918e: c4,da,30            stb   R30,Rda          GEAR_CUR = R30;
9191: 45,1a,00,fc,34      ad3w  R34,Rfc,1a       R34 = GRRAT1;
9196: 64,34,32            ad2w  R32,R34          R32 += R34;
9199: a2,32,34            ldw   R34,[R32]        R34 = [R32];
919c: c3,e8,9c,34         stw   R34,[Re8+9c]     RT_GR_CUR = R34;
91a0: c7,e8,f6,18         stb   R18,[Re8+f6]     CYCCTR = R18;
91a4: 31,de,07            jnb   B1,Rde,91ae      if (FLG_FRST_CM = 1)  {
91a7: ef,6f,f9            call  8b19             SPEED_RATIO_ACROSS_TORQUE_CONVERTER ();
91aa: c3,e8,a6,14         stw   R14,[Re8+a6]     SPD_RT_STRT = R14; }
91ae: f0                  ret                    return;

   SC_VALID_COM1:
91af: 31,de,79            jnb   B1,Rde,922b      if (FLG_FRST_CM = 1)  {           # (new commanded gear this pass)
91b2: 71,fe,e1            an2b  Re1,fe           B0_FLG_SFT_VAL_e1 = 0;            # (shift may be checked for validity)
91b5: a3,e8,90,42         ldw   R42,[Re8+90]     R42 = SFT_TOTAL;
91b9: 07,42               incw  R42              R42++;
91bb: c3,e8,90,42         stw   R42,[Re8+90]     SFT_TOTAL = R42;
91bf: 3a,4b,69            jb    B2,R4b,922b      if (B2_PDL_ERROR_4b = 0)  {
91c2: 35,df,66            jnb   B5,Rdf,922b      if (B5_FLG_SF_AUTO_df = 1)  {     # (automatic shift) 
91c5: 9b,e8,cc,da         cmpb  Rda,[Re8+cc]     
91c9: d1,60               jleu  922b             if (GEAR_CUR > GEAR_OLD)  {       # (upshift)
91cb: 8b,fd,f6,00,bc      cmpw  Rbc,[Rfc+f6]     
91d0: d1,59               jleu  922b             if (TP_REL > TP_SH_VALID)  {      # (off idle) 
91d2: b3,e8,d7,32         ldb   R32,[Re8+d7]     R32 = VSBART_RT;
91d6: 01,42               clrw  R42              R42 = 0;
91d8: 32,da,05            jnb   B2,Rda,91e0      if (B2_GEAR_CUR = 1)  {
91db: 39,da,0b            jb    B1,Rda,91e9      if (B1_GEAR_CUR = 1) goto 91e9;
91de: 20,0b               sjmp  91eb             goto 91eb; }

91e0: 33,da,48            jnb   B3,Rda,922b      if (B3_GEAR_CUR = 0) goto 922b;
91e3: a1,02,00,42         ldw   R42,2            R42 = 2;
91e7: 20,02               sjmp  91eb             goto 91eb; }

91e9: 07,42               incw  R42              R42++;
91eb: 45,f8,00,fc,30      ad3w  R30,Rfc,f8       R30 = VS_SH_VAL2;
91f0: 64,30,42            ad2w  R42,R30          R42 += R30;
91f3: 9a,42,32            cmpb  R32,[R42]        
91f6: d1,33               jleu  922b             if (R32 > [R42])  {
91f8: 3a,a6,30            jb    B2,Ra6,922b      if (B2_TFMFLG_a6 = 0)  {
91fb: 3e,a6,2d            jb    B6,Ra6,922b      if (B6_VSFMFLG_a6 = 0)  {
91fe: 9b,e6,bb,00         cmpb  R0,[Re6+bb]      
9202: d7,27               jne   922b             if (VSCTR = 0)  {
9204: b3,ee,84,32         ldb   R32,[Ree+84]     R32 = KAM_BIT_FLAGS;
9208: 36,32,20            jnb   B6,R32,922b      if (B6_R32 = 1)  {
920b: 71,fd,e1            an2b  Re1,fd           B1_CCV_STRT_SFT_e1 = 0;
920e: 33,a2,03            jnb   B3,Ra2,9214      if (B3_FLG_LK_CM_a2 = 1)  {       # (record CC state at start of shift)
9211: 91,02,e1            orb   Re1,2            B1_CCV_STRT_SFT_e1 = 1; }
9214: c3,e8,96,bc         stw   Rbc,[Re8+96]     TPV_STRT_SFT = TP_REL;            # (record TP at start of shift)
9218: a3,e8,8c,42         ldw   R42,[Re8+8c]     R42 = NEBART;                     # (record filtered engine
921c: c3,e8,98,42         stw   R42,[Re8+98]     NEV_STRT_SFT = R42;               #  speed at start of shift)
9220: b3,e8,d7,42         ldb   R42,[Re8+d7]     R42 = VSBART_RT;                  # (record filtered vehicle
9224: c7,e8,d3,42         stb   R42,[Re8+d3]     VSV_STRT_SFT = R42;               #  speed at start of shift)
9228: 91,01,e1            orb   Re1,1            B0_FLG_SFT_VAL_e1 = 1; } } } } } } } } } } }  # (shift may be checked for validity)
922b: 3f,df,48            jb    B7,Rdf,9276      if (B7_FLG_SFT_IN_df = 0)  {      # (shift complete, may be verified)
922e: 30,e1,45            jnb   B0,Re1,9276      if (B0_FLG_SFT_VAL_e1 = 1)  {     # (shift can be verified)
   SHIFT_VERIFICATION_LOGIC_(Part_1):
9231: 71,fe,e1            an2b  Re1,fe           B0_FLG_SFT_VAL_e1 = 0;            # (reset valid shift flag)
9234: b3,e8,d3,42         ldb   R42,[Re8+d3]     R42 = VSV_STRT_SFT;
9238: 5b,fd,f5,00,42,30   sb3b  R30,R42,[Rfc+f5] R30 = R42 - S_VAL_VSSUB;
923e: d3,06               jnc   9246             if (R30 >= 0)  {
9240: 9b,e8,d7,30         cmpb  R30,[Re8+d7]     
9244: db,30               jc    9276             if (R30 >= VSBART_RT) goto 9276; }  # (unsteady conditions)
9246: 77,fd,f4,00,42      ad2b  R42,[Rfc+f4]     R42 += S_VAL_VSADD;               # (steady vehicle speed)  
924b: db,06               jc    9253             if (R42 <= ff)  {
924d: 9b,e8,d7,42         cmpb  R42,[Re8+d7]     
9251: d1,23               jleu  9276             if (R42 <= VSBART_RT) goto 9276; }  # (unsteady conditions)
9253: a3,e8,96,42         ldw   R42,[Re8+96]     R42 = TPV_STRT_SFT;               # (steady vehicle speed)  
9257: 47,fd,f0,00,42,30   ad3w  R30,R42,[Rfc+f0] R30 = R42 + S_VAL_TPADD;
925d: db,05               jc    9264             if (R30 <= ffff)  {
925f: 88,bc,30            cmpw  R30,Rbc          
9262: d1,12               jleu  9276             if (R30 <= TP_REL) goto 9276; }   # (unsteady conditions)
9264: 6b,fd,f2,00,42      sb2w  R42,[Rfc+f2]     R42 -= S_VAL_TPSUB;               # (steady TP)
9269: d3,05               jnc   9270             if (R42 >= 0)  {
926b: 88,bc,42            cmpw  R42,Rbc          
926e: db,06               jc    9276             if (R42 >= TP_REL) goto 9276; }   # (unsteady conditions)
9270: 31,e1,05            jnb   B1,Re1,9278      if (B1_CCV_STRT_SFT_e1 = 0) goto SHIFT_VERIFICATION_LOGIC_(Part_2);
9273: 3b,a2,02            jb    B3,Ra2,9278      if (B3_FLG_LK_CM_a2 = 1) goto SHIFT_VERIFICATION_LOGIC_(Part_2); } } } } } }
9276: 20,8f               sjmp  9307             return; } }                       #  EXIT "SHIFT VALIDATION" MODULE

   SHIFT_VERIFICATION_LOGIC_(Part_2):
9278: a3,e8,92,42         ldw   R42,[Re8+92]     R42 = [312];
927c: 07,42               incw  R42              R42++;
927e: c3,e8,92,42         stw   R42,[Re8+92]     [312] = R42;
9282: b0,da,40            ldb   R40,Rda          R40 = GEAR_CUR;
9285: 99,02,40            cmpb  R40,2            
9288: df,30               je    92ba             if (R40 != 2)  {
928a: a3,e8,98,42         ldw   R42,[Re8+98]     R42 = NEV_STRT_SFT;
928e: 6b,fd,ee,00,42      sb2w  R42,[Rfc+ee]     R42 -= S_VAL_NESUB;
9293: d3,06               jnc   929b             if (R42 >= 0)  {
9295: 8b,e8,8c,42         cmpw  R42,[Re8+8c]     
9299: db,03               jc    929e             if (R42 >= NEBART) goto 929e; }
929b: 91,04,2f            orb   R2f,4            B2_VIP_flags4 = 1; }
929e: 79,06,40            sb2b  R40,6            R40 -= 6;
92a1: 37,40,07            jnb   B7,R40,92ab      if (B7_R40 = 1)  {
92a4: ef,57,e8            call  7afe             ?Fault_Filter_Routine? (
92a7: 1d                        #arg 1              1d,
92a8: 80                        #arg 2              80 );
92a9: 20,0f               sjmp  92ba             goto 92ba; }

92ab: 39,40,07            jb    B1,R40,92b5      if (B1_R40 = 0)  {
92ae: ef,4d,e8            call  7afe             ?Fault_Filter_Routine? (
92b1: 1e                        #arg 1              1e,
92b2: 80                        #arg 2              80 );
92b3: 20,05               sjmp  92ba             goto 92ba; }

92b5: ef,46,e8            call  7afe             ?Fault_Filter_Routine? (
92b8: 1f                        #arg 1              1f,
92b9: 80                        #arg 2              80 ); }
92ba: 71,ef,4b            an2b  R4b,ef           B4_SFT_ERROR_4b = 0;
92bd: 9b,ea,9d,00         cmpb  R0,[Rea+9d]      
92c1: d7,0c               jne   92cf             if (C617FIL = 0)  {
92c3: 9b,ea,9e,00         cmpb  R0,[Rea+9e]      
92c7: d7,06               jne   92cf             if (C618FIL = 0)  {
92c9: 9b,ea,9f,00         cmpb  R0,[Rea+9f]      
92cd: df,03               je    92d2             if (C619FIL = 0) goto 92d2; } }
92cf: 91,10,4b            orb   R4b,10           B4_SFT_ERROR_4b = 1; }
92d2: 71,7f,4b            an2b  R4b,7f           B7_SFT_FM_FLG_4b = 0;
92d5: b3,ee,9c,42         ldb   R42,[Ree+9c]     R42 = CXXX_KAM_BIT;
92d9: 35,42,0a            jnb   B5,R42,92e6      if (B5_R42 = 1)  {                # (1-2 shift error detected)
92dc: b3,ee,bc,14         ldb   R14,[Ree+bc]     R14 = C617CNT;
92e0: 9b,fe,08,14         cmpb  R14,[Rfe+8]      
92e4: d3,1e               jnc   9304             if (R14 < SFT_FM_LVL) goto 9304; }
92e6: b3,ee,9c,42         ldb   R42,[Ree+9c]     R42 = CXXX_KAM_BIT;
92ea: 36,42,0a            jnb   B6,R42,92f7      if (B6_R42 = 1)  {                # (2-3 shift error detected) 
92ed: b3,ee,bd,14         ldb   R14,[Ree+bd]     R14 = C618CNT;
92f1: 9b,fe,08,14         cmpb  R14,[Rfe+8]      
92f5: d3,0d               jnc   9304             if (R14 < SFT_FM_LVL) goto 9304; }
92f7: 37,42,0d            jnb   B7,R42,9307      if (B7_R42 = 0) return;           # (3-4 shift error detected) 
92fa: b3,ee,be,14         ldb   R14,[Ree+be]     R14 = C619CNT;
92fe: 9b,fe,08,14         cmpb  R14,[Rfe+8]      
9302: db,03               jc    9307             if (R14 >= SFT_FM_LVL) return; } }
9304: 91,80,4b            orb   R4b,80           B7_SFT_FM_FLG_4b = 1; } }
9307: f0                  ret                    return;

   CCC_CST_CLTCH_CTL_COM1:
9308: b1,08,33            ldb   R33,8            R33 = 8;
# TM_CS_DLY TIMER CONTROL
930b: 31,de,13            jnb   B1,Rde,9321      if (FLG_FRST_CM = 1)  {           # (shift commanded) 
930e: 9b,e8,cf,33         cmpb  R33,[Re8+cf]     
9312: d7,0d               jne   9321             if (R33 = GR_OLD)  {
9314: 99,06,d9            cmpb  Rd9,6            
9317: d7,08               jne   9321             if (GR_CM = 6)  {
9319: b3,e2,d5,38         ldb   R38,[Re2+d5]     R38 = TMCSOD;
931d: c7,e8,fa,38         stb   R38,[Re8+fa]     TM_CS_DLY = R38; } } }            # TM_CS_DLY = TMCSOD
                                                                                   # (delay coast clutch engagement
                                                                                   # in third gear to prevent two
                                                                                   # elements being on at once)
9321: 99,06,db            cmpb  Rdb,6            
# TM_CS_ENG TIMER CONTROL
9324: d7,13               jne   9339             if (PDL = 6)  {                   # (PRNDL = 3)
9326: 37,a2,10            jnb   B7,Ra2,9339      if (B7_FLG_CS_CM_a2 = 1)  {       # (coast clutch commanded on)
9329: 3d,a2,0d            jb    B5,Ra2,9339      if (B5_FLG_CS_FRST_a2 = 0)  {     # (1st pass thru)
932c: b3,e2,d4,38         ldb   R38,[Re2+d4]     R38 = TMCSE3;
9330: c7,e8,fb,38         stb   R38,[Re8+fb]     TM_CS_ENG = R38;                  # (coast clutch will be engaged when timer expires)
9334: 91,20,a2            orb   Ra2,20           B5_FLG_CS_FRST_a2 = 1;            # (set first pass flag)
9337: 20,1e               sjmp  9357             goto 9357; } } }

9339: 99,04,db            cmpb  Rdb,4            
933c: df,05               je    9343             if (PDL != 4)  {
933e: 99,02,db            cmpb  Rdb,2            
9341: d7,14               jne   9357             if (PDL != 2) goto 9357; }
9343: 9b,e8,d9,33         cmpb  R33,[Re8+d9]     
9347: d7,0e               jne   9357             if (R33 = PDL_LST)  {             # (4-2 or 4-1)
9349: 3d,a2,0b            jb    B5,Ra2,9357      if (B5_FLG_CS_FRST_a2 = 0)  {     # (first pass thru)
934c: b3,e2,d3,38         ldb   R38,[Re2+d3]     R38 = TMCSE2;
9350: c7,e8,fb,38         stb   R38,[Re8+fb]     TM_CS_ENG = R38;                  # coast clutch will be engaged when timer expires)
9354: 91,20,a2            orb   Ra2,20           B5_FLG_CS_FRST_a2 = 1; } } }      # (set first pass flag)
9357: 9b,e8,d0,33         cmpb  R33,[Re8+d0]     

# COAST CLUTCH OUTPUT CONTROL
935b: d7,05               jne   9362             if (R33 = GR_DS_TV)  {
935d: 71,7f,a2            an2b  Ra2,7f           B7_FLG_CS_CM_a2 = 0;              # (verifing a 3-4 upshift, de-energize Coast clutch)
9360: 20,27               sjmp  9389             goto 9389; }

9362: 9b,fd,e8,00,00      cmpb  R0,[Rfc+e8]      
9367: d7,08               jne   9371             if (CS_PDL_4 = 0)  {
9369: 99,06,db            cmpb  Rdb,6            
936c: d1,03               jleu  9371             if (PDL > 6)  {
936e: 36,a6,15            jnb   B6,Ra6,9386      if (B6_VSFMFLG_a6 = 0) goto 9386; } }
9371: 9b,e8,fa,00         cmpb  R0,[Re8+fa]      
9375: d7,0a               jne   9381             if (TM_CS_DLY = 0)  {
9377: 98,d9,33            cmpb  R33,Rd9          
937a: df,05               je    9381             if (R33 != GR_CM)  {              # GR_CM <> 4
937c: 91,80,a2            orb   Ra2,80           B7_FLG_CS_CM_a2 = 1;              # (energize coast clutch output)
937f: 20,03               sjmp  9384             goto 9384; } }

9381: 71,7f,a2            an2b  Ra2,7f           B7_FLG_CS_CM_a2 = 0;              # (de-energize coast clutch output. 
                                                                                   # Coast clutch is off hydraulically
                                                                                   # in 4th. Coast clutch is on       
                                                                                   # hydraulically when PDL = 2 or 1)
9384: 20,03               sjmp  9389             goto 9389; }

9386: 71,7f,a2            an2b  Ra2,7f           B7_FLG_CS_CM_a2 = 0;
9389: 91,01,a2            orb   Ra2,1            B0_Ra2 = 1;

INFER COAST CLUTCH ENGAGEMENT
938c: 3f,a2,07            jb    B7,Ra2,9396      if (B7_FLG_CS_CM_a2 = 0)  {
938f: 71,bf,a2            an2b  Ra2,bf           B6_FLG_CS_ENG_a2 = 0;             # (coast clutch is hydraulically off)
9392: 71,df,a2            an2b  Ra2,df           B5_FLG_CS_FRST_a2 = 0;
9395: f0                  ret                    return; }

9396: 9b,e8,fb,00         cmpb  R0,[Re8+fb]      
939a: d7,09               jne   93a5             if (TM_CS_ENG = 0)  {             # (timer expired)
939c: 9b,e8,fa,00         cmpb  R0,[Re8+fa]      
93a0: d7,03               jne   93a5             if (TM_CS_DLY = 0)  {
93a2: 3e,df,09            jb    B6,Rdf,93ae      if (B6_FLG_PWR_df = 1) goto 93ae; } }  # (power on)
93a5: 3c,df,09            jb    B4,Rdf,93b1      if (B4_FLG_SFT_MDN_df = 1) return;
93a8: 3e,df,06            jb    B6,Rdf,93b1      if (B6_FLG_PWR_df = 1) return;
93ab: 3f,4a,03            jb    B7,R4a,93b1      if (B7_FLG_DEL_MDN_4a = 1) return; }
93ae: 91,40,a2            orb   Ra2,40           B6_FLG_CS_ENG_a2 = 1; } } }
93b1: f0                  ret                    return;

   EPC_GUIDE_COM1:
93b2: ef,a1,08            call  9c56             Sub_9c56 (
93b5: db,00                     #arg 1              PDL,
93b7: 20,00                     #arg 2              20 );
93b9: ef,9a,08            call  9c56             Sub_9c56 (
93bc: 59,03                     #arg 1              PDL_LST,
93be: 21,00                     #arg 2              21 );
93c0: c3,e6,74,20         stw   R20,[Re6+74]     [2f4] = R20;
93c4: ef,8f,08            call  9c56             Sub_9c56 (
93c7: da,00                     #arg 1              GEAR_CUR,
93c9: 22,00                     #arg 2              22 );
93cb: ef,88,08            call  9c56             Sub_9c56 (
93ce: 4c,03                     #arg 1              GEAR_OLD,
93d0: 23,00                     #arg 2              23 );
93d2: c3,e6,76,22         stw   R22,[Re6+76]     [2f6] = R22;
93d6: 8b,fe,1e,b4         cmpw  Rb4,[Rfe+1e]     
93da: d1,09               jleu  93e5             if (N_RPM > NRUN)  {
93dc: 3d,20,06            jb    B5,R20,93e5      if (B5_R20 = 0)  {
93df: 3f,20,03            jb    B7,R20,93e5      if (B7_R20 = 0)  {
93e2: 91,04,e0            orb   Re0,4            B2_FLG_FRST_TV_e0 = 1; } } }
93e5: 3a,e0,04            jb    B2,Re0,93ec      if (B2_FLG_FRST_TV_e0 = 0)  {
93e8: c3,e8,f4,00         stw   R0,[Re8+f4]      TSFETMR = 0; }
93ec: 3d,20,03            jb    B5,R20,93f2      if (B5_R20 = 0)  {
93ef: 37,20,1d            jnb   B7,R20,940f      if (B7_R20 = 0) goto 940f; }
93f2: 3d,21,1a            jb    B5,R21,940f      if (B5_R21 = 0)  {
93f5: 3f,21,17            jb    B7,R21,940f      if (B7_R21 = 0)  {
93f8: b3,fc,33,30         ldb   R30,[Rfc+33]     R30 = NEUTIM;
93fc: c7,e6,7e,30         stb   R30,[Re6+7e]     [2fe] = R30;
9400: 71,bf,49            an2b  R49,bf           B6_R49 = 0;
9403: 91,01,df            orb   Rdf,1            B0_Rdf = 1;
9406: 3e,21,06            jb    B6,R21,940f      if (B6_R21 = 0)  {
9409: 91,40,49            orb   R49,40           B6_R49 = 1;
940c: 71,fe,df            an2b  Rdf,fe           B0_Rdf = 0; } } } }
940f: 01,14               clrw  R14              R14 = 0;
9411: 36,20,26            jnb   B6,R20,943a      if (B6_R20 = 1)  {
9414: 3d,21,03            jb    B5,R21,941a      if (B5_R21 = 0)  {
9417: 37,21,15            jnb   B7,R21,942f      if (B7_R21 = 0) goto 942f; }
941a: 9b,e6,7e,00         cmpb  R0,[Re6+7e]      
941e: df,03               je    9423             if ([2fe] != 0)  {
9420: 3e,49,0c            jb    B6,R49,942f      if (B6_R49 = 1) goto 942f; }
9423: a1,04,00,14         ldw   R14,4            R14 = 4;
9427: 91,08,d0            orb   Rd0,8            B3_Rd0 = 1;
942a: 71,6b,d0            an2b  Rd0,6b           Rd0 &= 6b;
942d: 20,3a               sjmp  9469             goto 9469; } }

942f: 3e,21,50            jb    B6,R21,9482      if (B6_R21 = 1) goto 9482;
9432: 91,80,d0            orb   Rd0,80           B7_Rd0 = 1;
9435: 71,e3,d0            an2b  Rd0,e3           Rd0 &= e3;
9438: 20,2f               sjmp  9469             goto 9469; }

943a: 99,10,20            cmpb  R20,10           
943d: d9,43               jgtu  9482             if (R20 <= 10)  {
943f: 3d,21,03            jb    B5,R21,9445      if (B5_R21 = 0)  {
9442: 37,21,15            jnb   B7,R21,945a      if (B7_R21 = 0) goto 945a; }
9445: 9b,e6,7e,00         cmpb  R0,[Re6+7e]      
9449: df,03               je    944e             if ([2fe] != 0)  {
944b: 38,df,0c            jb    B0,Rdf,945a      if (B0_Rdf = 1) goto 945a; }
944e: a1,02,00,14         ldw   R14,2            R14 = 2;
9452: 91,10,d0            orb   Rd0,10           B4_Rd0 = 1;
9455: 71,73,d0            an2b  Rd0,73           Rd0 &= 73;
9458: 20,0f               sjmp  9469             goto 9469; } }

945a: 99,10,21            cmpb  R21,10           
945d: d1,23               jleu  9482             if (R21 > 10)  {
945f: a1,06,00,14         ldw   R14,6            R14 = 6;
9463: 91,04,d0            orb   Rd0,4            B2_Rd0 = 1;
9466: 71,67,d0            an2b  Rd0,67           Rd0 &= 67;
9469: 44,14,fc,40         ad3w  R40,Rfc,R14      R40 = c0a8 + R14;
946d: a3,40,48,30         ldw   R30,[R40+48]     R30 = [R40+48];
9471: c3,e4,6c,30         stw   R30,[Re4+6c]     [1ec] = R30;
9475: 67,40,40,30         ad2w  R30,[R40+40]     R30 += [R40+40];
9479: d3,03               jnc   947e             if (R30 > ffff)  {
947b: bd,ff,30            ldsbw R30,ff           swR30 = ff; }
947e: c3,e4,6e,30         stw   R30,[Re4+6e]     [1ee] = R30; } } }
9482: 71,bf,d0            an2b  Rd0,bf           B6_FLG_ENG_IN_d0 = 0;
9485: 8b,e4,6e,00         cmpw  R0,[Re4+6e]      
9489: df,03               je    948e             if ([1ee] != 0)  {
948b: 91,40,d0            orb   Rd0,40           B6_FLG_ENG_IN_d0 = 1; }
948e: 3e,d0,05            jb    B6,Rd0,9496      if (B6_FLG_ENG_IN_d0 = 0)  {
9491: 71,df,d0            an2b  Rd0,df           B5_Rd0 = 0;
9494: 20,20               sjmp  94b6             goto 94b6; }

9496: 3f,d0,0f            jb    B7,Rd0,94a8      if (B7_Rd0 = 0)  {
9499: 3a,d0,0c            jb    B2,Rd0,94a8      if (B2_Rd0 = 0)  {
949c: 33,d0,03            jnb   B3,Rd0,94a2      if (B3_Rd0 = 1)  {
949f: 3e,49,06            jb    B6,R49,94a8      if (B6_R49 = 1) goto 94a8; }
94a2: 34,d0,0e            jnb   B4,Rd0,94b3      if (B4_Rd0 = 0) goto 94b3;
94a5: 30,df,0b            jnb   B0,Rdf,94b3      if (B0_Rdf = 0) goto 94b3; } } }
94a8: 91,20,d0            orb   Rd0,20           B5_Rd0 = 1;
94ab: 71,bf,49            an2b  R49,bf           B6_R49 = 0;
94ae: 71,fe,df            an2b  Rdf,fe           B0_Rdf = 0;
94b1: 20,1c               sjmp  94cf             goto 94cf; } }

94b3: 3d,d0,19            jb    B5,Rd0,94cf      if (B5_Rd0 = 0)  {
94b6: 99,20,20            cmpb  R20,20           
94b9: db,14               jc    94cf             if (R20 < 20)  {
94bb: 9b,e8,d0,da         cmpb  Rda,[Re8+d0]     
94bf: d7,09               jne   94ca             if (GEAR_CUR = GR_DS_TV)  {
94c1: 3e,d0,0b            jb    B6,Rd0,94cf      if (B6_FLG_ENG_IN_d0 = 1) goto 94cf;
94c4: 3a,a2,03            jb    B2,Ra2,94ca      if (B2_FLG_FRST_DS_a2 = 0)  {
94c7: 3d,e1,08            jb    B5,Re1,94d2      if (FLG_TVENG_MD = 1) goto 94d2; } }
94ca: 71,ef,e0            an2b  Re0,ef           B4_FLG_ENG_TV_e0 = 0;
94cd: 20,03               sjmp  94d2             goto 94d2; } } }

94cf: 91,10,e0            orb   Re0,10           B4_FLG_ENG_TV_e0 = 1; }
94d2: 3d,20,03            jb    B5,R20,94d8      if (B5_R20 = 0)  {
94d5: 37,20,02            jnb   B7,R20,94da      if (B7_R20 = 0) goto 94da; }
94d8: 22,20               sjmp  96fa             goto 96fa; }

94da: 3c,e0,18            jb    B4,Re0,94f5      if (B4_FLG_ENG_TV_e0 = 0)  {
94dd: a3,e8,a2,1a         ldw   R1a,[Re8+a2]     R1a = SPD_RATIO;
94e1: 8b,e2,86,1a         cmpw  R1a,[Re2+86]     
94e5: d9,10               jgtu  94f7             if (R1a > [Re2-7a]) goto 94f7;
94e7: b3,e8,d7,1a         ldb   R1a,[Re8+d7]     R1a = VSBART_RT;
94eb: 9b,e3,1e,ff,1a      cmpb  R1a,[Re2+ff1e]   
94f0: d9,05               jgtu  94f7             if (R1a > [Re2+ff1e]) goto 94f7;
94f2: 3f,df,02            jb    B7,Rdf,94f7      if (B7_FLG_SFT_IN_df = 1) goto 94f7; }
94f5: 22,35               sjmp  972c             goto 972c; } } }

94f7: 36,df,02            jnb   B6,Rdf,94fc      if (B6_FLG_PWR_df = 1)  {
94fa: 23,bc               sjmp  98b8             goto 98b8; }

94fc: 34,df,02            jnb   B4,Rdf,9501      if (B4_FLG_SFT_MDN_df = 1)  {
94ff: 22,0d               sjmp  970e             goto 970e; }

9501: 99,06,db            cmpb  Rdb,6            
9504: d9,09               jgtu  950f             if (PDL <= 6)  {
9506: 3f,df,06            jb    B7,Rdf,950f      if (B7_FLG_SFT_IN_df = 0)  {
9509: 8b,e8,ee,00         cmpw  R0,[Re8+ee]      
950d: db,f0               jc    94ff             if (TM_DEL_SFT <= 0) goto 94ff; } }
950f: 8b,e8,ee,00         cmpw  R0,[Re8+ee]      
9513: db,03               jc    9518             if (TM_DEL_SFT > 0)  {
9515: 3f,4a,e7            jb    B7,R4a,94ff      if (B7_FLG_DEL_MDN_4a = 1) goto 94ff; }
9518: 3f,df,06            jb    B7,Rdf,9521      if (B7_FLG_SFT_IN_df = 0)  {
951b: 8b,e8,ee,00         cmpw  R0,[Re8+ee]      
951f: db,d9               jc    94fa             if (TM_DEL_SFT <= 0) goto 94fa; }
9521: b3,e3,1f,ff,38      ldb   R38,[Re2+ff1f]   R38 = [Re2+ff1f];
9526: a3,e6,74,20         ldw   R20,[Re6+74]     R20 = [2f4];
952a: a3,e6,76,22         ldw   R22,[Re6+76]     R22 = [2f6];

Determine Transmission Overtemperature FMEM action:
952e: a3,e8,8c,30         ldw   R30,[Re8+8c]     R30 = NEBART;
9532: 8b,fc,12,30         cmpw  R30,[Rfc+12]     
9536: d1,05               jleu  953d             if (R30 > NE_OTEMP_MAX)  {
9538: 91,20,d6            orb   Rd6,20           B5_OTMP_EPC_FLG_Q_d6 = 1;
953b: 20,09               sjmp  9546             goto 9546; }

953d: 8b,fc,10,30         cmpw  R30,[Rfc+10]     
9541: db,03               jc    9546             if (R30 < NE_OTEMP_MIN)  {
9543: 71,df,d6            an2b  Rd6,df           B5_OTMP_EPC_FLG_Q_d6 = 0; }
9546: 35,4b,14            jnb   B5,R4b,955d      if (B5_OTEMP_FM_FLG_4b = 1)  {
9549: 35,d6,11            jnb   B5,Rd6,955d      if (B5_OTMP_EPC_FLG_Q_d6 = 1)  {
954c: b3,e8,db,30         ldb   R30,[Re8+db]     R30 = TV_PRES;
9550: 77,fc,0e,30         ad2b  R30,[Rfc+e]      R30 += EPC_OTEMP;

Clip TV_PRES as necessary:
9554: d3,03               jnc   9559             if (R30 > ff)  {
9556: b1,ff,30            ldb   R30,ff           R30 = ff; }                       # TV_PRES = 127.5 (Maximum)
9559: c7,e8,db,30         stb   R30,[Re8+db]     TV_PRES = R30; } }
955d: 3c,4a,06            jb    B4,R4a,9566      if (B4_ETV_TEST_4a = 0)  {
9560: 3a,a6,03            jb    B2,Ra6,9566      if (B2_TFMFLG_a6 = 0)  {
9563: 33,a6,05            jnb   B3,Ra6,956b      if (B3_MFMFLG_a6 = 0) goto 956b; } }
9566: b1,ff,38            ldb   R38,ff           R38 = ff;
9569: 20,c7               sjmp  9632             goto 9632; }

956b: 3e,a6,0f            jb    B6,Ra6,957d      if (B6_VSFMFLG_a6 = 0)  {
956e: 9b,e6,bb,00         cmpb  R0,[Re6+bb]      
9572: d7,09               jne   957d             if (VSCTR = 0)  {
9574: 3a,4b,06            jb    B2,R4b,957d      if (B2_PDL_ERROR_4b = 0)  {
9577: 3b,4b,03            jb    B3,R4b,957d      if (B3_CC_FM_FLG_4b = 0)  {
957a: 37,4b,0e            jnb   B7,R4b,958b      if (B7_SFT_FM_FLG_4b = 0) goto 958b; } } } }
957d: 9b,fd,b6,00,38      cmpb  R38,[Rfc+b6]     
9582: db,e5               jc    9569             if (R38 >= TVFMMN) goto 9569;
9584: b3,fd,b6,00,38      ldb   R38,[Rfc+b6]     R38 = TVFMMN;                     # Clip TV_PRES to TVFMMN as a minimum
9589: 20,a7               sjmp  9632             goto 9632; }

958b: 45,36,00,fc,14      ad3w  R14,Rfc,36       R14 = TVPMX1;
9590: 31,20,24            jnb   B1,R20,95b7      if (B1_R20 = 1)  {
9593: 39,22,10            jb    B1,R22,95a6      if (B1_R22 = 0)  {
9596: 32,22,06            jnb   B2,R22,959f      if (B2_R22 = 1)  {
9599: 65,02,00,14         ad2w  R14,2            R14 += 2;
959d: 20,07               sjmp  95a6             goto 95a6; }

959f: 33,22,15            jnb   B3,R22,95b7      if (B3_R22 = 0) goto 95b7;
95a2: 65,04,00,14         ad2w  R14,4            R14 += 4; }
95a6: 9a,14,38            cmpb  R38,[R14]        
95a9: d9,07               jgtu  95b2             if (R38 <= [R14])  {
95ab: 07,14               incw  R14              R14++;
95ad: 9a,14,38            cmpb  R38,[R14]        
95b0: db,b7               jc    9569             if (R38 >= [R14]) goto 9569; }
95b2: b2,14,38            ldb   R38,[R14]        R38 = [R14];
95b5: 20,7b               sjmp  9632             goto 9632; } }

95b7: ef,9c,06            call  9c56             Sub_9c56 (
95ba: 50,03                     #arg 1              GR_DS_TV,
95bc: 1e,00                     #arg 2              1e );
95be: 3f,df,06            jb    B7,Rdf,95c7      if (B7_FLG_SFT_IN_df = 0)  {
95c1: 9b,e8,d0,da         cmpb  Rda,[Re8+d0]     
95c5: df,6b               je    9632             if (GEAR_CUR = GR_DS_TV) goto 9632; }
95c7: 01,42               clrw  R42              R42 = 0;
95c9: 01,30               clrw  R30              R30 = 0;
95cb: 01,18               clrw  R18              R18 = 0;
95cd: 39,1e,2a            jb    B1,R1e,95fa      if (B1_R1e = 0)  {
95d0: b3,e8,cb,40         ldb   R40,[Re8+cb]     R40 = CS_SFT_MULT;
95d4: 32,1e,0b            jnb   B2,R1e,95e2      if (B2_R1e = 1)  {
95d7: 65,04,00,18         ad2w  R18,4            R18 += 4;
95db: 30,d0,1c            jnb   B0,Rd0,95fa      if (B0_Rd0 = 0) goto 95fa;
95de: 29,01               scall 96e1             Sub_96e1 ();
95e0: 20,18               sjmp  95fa             goto 95fa; }

95e2: 17,42               incb  R42              R42++;
95e4: 33,1e,0b            jnb   B3,R1e,95f2      if (B3_R1e = 1)  {
95e7: 65,08,00,18         ad2w  R18,8            R18 += 8;
95eb: 30,d0,0c            jnb   B0,Rd0,95fa      if (B0_Rd0 = 0) goto 95fa;
95ee: 28,f1               scall 96e1             Sub_96e1 ();
95f0: 20,08               sjmp  95fa             goto 95fa; }

95f2: 17,42               incb  R42              R42++;
95f4: 65,0a,00,18         ad2w  R18,a            R18 += a;
95f8: 28,eb               scall 96e5             Sub_96e5 (); } } }
95fa: a3,e8,94,34         ldw   R34,[Re8+94]     R34 = TOT;
95fe: a3,19,ee,96,32      ldw   R32,[R18+96ee]   R32 = [R18+96ee];
9603: 64,fc,32            ad2w  R32,Rfc          R32 += c0a8;
9606: ac,38,40            ldzbw R40,R38          wR40 = yR38;
9609: 91,20,9f            orb   R9f,20           B5_SignedInput = 1;
960c: ef,f8,b2            call  4907             UUWFuncLU_4907 ();
960f: 6c,40,38            ml2w  R38,R40          lR38 *= R40;
9612: 08,07,38            shrw  R38,7            R38 >>= 7;
9615: 31,18,10            jnb   B1,R18,9628      if (B1_R18 = 1)  {
9618: 30,30,0d            jnb   B0,R30,9628      if (B0_R30 = 1)  {
961b: 64,fc,42            ad2w  R42,Rfc          R42 += c0a8;
961e: af,42,64,3a         ldzbw R3a,[R42+64]     wR3a = [R42+64];
9622: 6c,3a,38            ml2w  R38,R3a          lR38 *= R3a;
9625: 0c,07,38            shrdw R38,7            lR38 >>= 7; } }
9628: 98,39,00            cmpb  R0,R39           
962b: df,05               je    9632             if (R39 != 0)  {
962d: b1,ff,38            ldb   R38,ff           R38 = ff;
9630: 20,0a               sjmp  963c             goto 963c; } }

9632: 9b,e2,96,38         cmpb  R38,[Re2+96]     
9636: db,04               jc    963c             if (R38 < [Re2-6a])  {
9638: b3,e2,96,38         ldb   R38,[Re2+96]     R38 = [Re2-6a]; }
963c: c7,e8,db,38         stb   R38,[Re8+db]     TV_PRES = R38;
9640: b3,e8,d1,42         ldb   R42,[Re8+d1]     R42 = TV_COUNTS;
9644: c7,e8,d2,42         stb   R42,[Re8+d2]     [352] = R42;
9648: 3c,4a,35            jb    B4,R4a,9680      if (B4_ETV_TEST_4a = 0)  {
964b: ef,8d,b2            call  48db             SUWFuncLU_48db (
964e: 7e,c7                     #arg 1              FN622A,
9650: 14,03                     #arg 2              TOT );
9652: 5f,e8,db,38,42      ml3b  R42,R38,[Re8+db] wR42 = yR38 * TV_PRES;
9657: 08,07,42            shrw  R42,7            R42 >>= 7;
965a: 30,43,03            jnb   B0,R43,9660      if (B0_R43 = 1)  {
965d: b1,ff,42            ldb   R42,ff           R42 = ff; }
9660: ef,0d,b2            call  4870             UUYFuncLU_4870 (
9663: 36,c7                     #arg 1              FN620,
9665: 42,00                     #arg 2              42 );
9667: a0,38,40            ldw   R40,R38          R40 = R38;
966a: ef,73,b2            call  48e0             SSWFuncLU_48e0 (
966d: 4e,c7                     #arg 1              FN622,
966f: 14,03                     #arg 2              TOT );
9671: 64,38,40            ad2w  R40,R38          R40 += R38;
9674: de,0a               jlt   9680             if (R40 >= 0)  {
9676: 98,00,41            cmpb  R41,R0           
9679: df,07               je    9682             if (R41 = 0) goto 9682;
967b: b1,ff,40            ldb   R40,ff           R40 = ff;
967e: 20,02               sjmp  9682             goto 9682; } }

9680: 11,40               clrb  R40              R40 = 0; }
9682: 5b,e8,d1,40,30      sb3b  R30,R40,[Re8+d1] R30 = R40 - TV_COUNTS;
9687: db,02               jc    968b             if (R30 < 0)  {
9689: 13,30               negb  R30              R30 = -R30; }
968b: c7,e8,d1,40         stb   R40,[Re8+d1]     TV_COUNTS = R40;
968f: 91,20,e0            orb   Re0,20           B5_VFS_OUT_FLG_e0 = 1;
9692: 9b,fd,b2,00,30      cmpb  R30,[Rfc+b2]     
9697: d1,04               jleu  969d             if (R30 > TVCDLT)  {
9699: c3,e8,e4,00         stw   R0,[Re8+e4]      TM_TV_SS = 0; }
969d: 99,a0,91            cmpb  R91,a0           
96a0: d3,3e               jnc   96e0             if (VBAT >= a0)  {
96a2: 3e,a5,3b            jb    B6,Ra5,96e0      if (UNDSP = 0)  {
96a5: a3,e8,e4,30         ldw   R30,[Re8+e4]     R30 = TM_TV_SS;
96a9: 8b,fd,b4,00,30      cmpw  R30,[Rfc+b4]     
96ae: d3,30               jnc   96e0             if (R30 >= TV_SLT_TM)  {          # Do "ETV Current Monitor Test"
96b0: ef,af,e5            call  7c62             Calculate_ETV_OCM_MIN ();
96b3: 71,bf,4b            an2b  R4b,bf           B6_R4b = 0;
96b6: 71,fe,a6            an2b  Ra6,fe           B0_ETV_ERROR_a6 = 0;
96b9: 71,fd,4b            an2b  R4b,fd           B1_EPC_OPEN_FLG_4b = 0;
96bc: 3c,4a,08            jb    B4,R4a,96c7      if (B4_ETV_TEST_4a = 0)  {
96bf: 8b,e8,c2,1e         cmpw  R1e,[Re8+c2]     
96c3: d1,1b               jleu  96e0             if (R1e <= ETVOCM) return;
96c5: 20,0f               sjmp  96d6             goto 96d6; }

96c7: 91,01,a6            orb   Ra6,1            B0_ETV_ERROR_a6 = 1;
96ca: 8b,e8,c2,1e         cmpw  R1e,[Re8+c2]     
96ce: d9,0d               jgtu  96dd             if (R1e <= ETVOCM)  {
96d0: 71,fe,a6            an2b  Ra6,fe           B0_ETV_ERROR_a6 = 0;
96d3: 91,40,4b            orb   R4b,40           B6_R4b = 1;
96d6: c3,e8,e4,00         stw   R0,[Re8+e4]      TM_TV_SS = 0;
96da: 95,10,4a            xorb  R4a,10           B4_ETV_TEST_4a ^= 1; }
96dd: 91,02,4b            orb   R4b,2            B1_EPC_OPEN_FLG_4b = 1; } } } }
96e0: f0                  ret                    return;

   Sub_96e1:
96e1: 69,02,00,18         sb2w  R18,2            R18 -= 2;
   Sub_96e5:
96e5: 99,80,40            cmpb  R40,80           
96e8: df,02               je    96ec             if (R40 != 80)  {
96ea: 17,30               incb  R30              R30++; }
96ec: f0                  ret                    return;

96ed: ff                  ???   

96ee: 42,06               word    642
96f0: b2,05               word    5b2
96f2: 72,06               word    672
96f4: e2,05               word    5e2
96f6: a2,06               word    6a2
96f8: 12,06               word    612

96fa: ef,73,b1            call  4870             UUYFuncLU_4870 (
96fd: f6,c6                     #arg 1              FN616,
96ff: bd,00                     #arg 2              TP_REL_H );
9701: 34,e1,08            jnb   B4,Re1,970c      if (FLG_TVSTR_CD = 1)  {
9704: 3a,e0,05            jb    B2,Re0,970c      if (B2_FLG_FRST_TV_e0 = 0)  {
9707: b3,e3,26,ff,38      ldb   R38,[Re2+ff26]   R38 = [Re2+ff26]; } }
970c: 26,18               sjmp  9526             goto 9526;

970e: ad,04,14            ldzbw R14,4            wR14 = 4;
9711: 3c,22,04            jb    B4,R22,9718      if (B4_R22 = 0)  {
9714: 59,02,da,14         sb3b  R14,Rda,2        R14 = GEAR_CUR - 2; }
9718: 7d,06,14            ml2b  R14,6            wR14 *= 6;
971b: 45,d2,06,fc,32      ad3w  R32,Rfc,6d2      R32 = FN1CB;
9720: 64,14,32            ad2w  R32,R14          R32 += R14;
9723: b3,e8,d7,34         ldb   R34,[Re8+d7]     R34 = VSBART_RT;
9727: ef,67,b1            call  4891             UUYFuncLU_4891 ();
972a: 25,fa               sjmp  9526             goto 9526;

972c: ef,41,b1            call  4870             UUYFuncLU_4870 (
972f: f6,c6                     #arg 1              FN616,
9731: bd,00                     #arg 2              TP_REL_H );
9733: 9b,fd,ab,00,00      cmpb  R0,[Rfc+ab]      
9738: df,05               je    973f             if (STALLTV_SW != 0)  {
973a: 36,d0,02            jnb   B6,Rd0,973f      if (B6_FLG_ENG_IN_d0 = 1)  {
973d: 11,38               clrb  R38              R38 = 0; } }
973f: a3,e8,8c,16         ldw   R16,[Re8+8c]     R16 = NEBART;
9743: b3,e8,d7,18         ldb   R18,[Re8+d7]     R18 = VSBART_RT;
9747: b3,e3,27,ff,3a      ldb   R3a,[Re2+ff27]   R3a = [Re2+ff27];
974c: 11,42               clrb  R42              R42 = 0;
974e: 9b,e3,45,ff,18      cmpb  R18,[Re2+ff45]   
9753: db,04               jc    9759             if (R18 < [Re2+ff45])  {
9755: 17,42               incb  R42              R42++;
9757: 20,03               sjmp  975c             goto 975c; }

9759: 3d,d0,4a            jb    B5,Rd0,97a6      if (B5_Rd0 = 0)  {
975c: 11,30               clrb  R30              R30 = 0;
975e: 8b,e2,88,bc         cmpw  Rbc,[Re2+88]     
9762: db,02               jc    9766             if (TP_REL < [Re2-78])  {
9764: 17,30               incb  R30              R30++; }
9766: 11,32               clrb  R32              R32 = 0;
9768: 8b,e2,8c,16         cmpw  R16,[Re2+8c]     
976c: db,02               jc    9770             if (R16 < [Re2-74])  {
976e: 17,32               incb  R32              R32++; }
9770: 34,e0,09            jnb   B4,Re0,977c      if (B4_FLG_ENG_TV_e0 = 1)  {
9773: 30,30,30            jnb   B0,R30,97a6      if (B0_R30 = 0) goto 97a6;
9776: 30,32,2d            jnb   B0,R32,97a6      if (B0_R32 = 0) goto 97a6;
9779: 3e,e1,2a            jb    B6,Re1,97a6      if (FLG_TVENG_CD = 1) goto 97a6; }
977c: b3,e3,28,ff,3a      ldb   R3a,[Re2+ff28]   R3a = [Re2+ff28];
9781: 30,42,0a            jnb   B0,R42,978e      if (B0_R42 = 1)  {
9784: 9b,e3,46,ff,18      cmpb  R18,[Re2+ff46]   
9789: d1,03               jleu  978e             if (R18 > [Re2+ff46])  {
978b: 3d,d0,18            jb    B5,Rd0,97a6      if (B5_Rd0 = 1) goto 97a6; } }
978e: 34,e0,26            jnb   B4,Re0,97b7      if (B4_FLG_ENG_TV_e0 = 0) goto 97b7;
9791: 30,30,06            jnb   B0,R30,979a      if (B0_R30 = 1)  {
9794: 8b,e2,8a,bc         cmpw  Rbc,[Re2+8a]     
9798: d9,0c               jgtu  97a6             if (TP_REL > [Re2-76]) goto 97a6; }
979a: 30,32,06            jnb   B0,R32,97a3      if (B0_R32 = 1)  {
979d: 8b,e2,8e,16         cmpw  R16,[Re2+8e]     
97a1: d9,03               jgtu  97a6             if (R16 > [Re2-72]) goto 97a6; }
97a3: 35,e1,11            jnb   B5,Re1,97b7      if (FLG_TVENG_MD = 0) goto 97b7; } } } } } } }
97a6: 99,0c,db            cmpb  Rdb,c            
97a9: d7,19               jne   97c4             if (PDL != c) goto 97c4;
97ab: 77,e3,44,ff,3a      ad2b  R3a,[Re2+ff44]   R3a += [Re2+ff44];
97b0: d3,12               jnc   97c4             if (R3a <= ff) goto 97c4;
97b2: b1,ff,3a            ldb   R3a,ff           R3a = ff;
97b5: 20,0d               sjmp  97c4             goto 97c4; } }

97b7: 11,3a               clrb  R3a              R3a = 0;
97b9: 36,d0,08            jnb   B6,Rd0,97c4      if (B6_FLG_ENG_IN_d0 = 1)  {
97bc: a0,38,1e            ldw   R1e,R38          R1e = R38;
97bf: 28,28               scall 97e9             Sub_97e9 ();
97c1: a0,1e,38            ldw   R38,R1e          R38 = R1e; } } }
97c4: 98,38,3a            cmpb  R3a,R38          
97c7: d1,03               jleu  97cc             if (R3a > R38)  {
97c9: b0,3a,38            ldb   R38,R3a          R38 = R3a; }
97cc: a3,e8,b2,16         ldw   R16,[Re8+b2]     R16 = TPBARTV;
97d0: 68,b2,16            sb2w  R16,Rb2          R16 -= TP;
97d3: db,02               jc    97d7             if (R16 < 0)  {
97d5: 01,16               clrw  R16              R16 = 0; }
97d7: 8b,e2,90,16         cmpw  R16,[Re2+90]     
97db: d3,0a               jnc   97e7             if (R16 >= [Re2-70])  {
97dd: 9b,e8,db,38         cmpb  R38,[Re8+db]     
97e1: db,04               jc    97e7             if (R38 < TV_PRES)  {
97e3: b3,e8,db,38         ldb   R38,[Re8+db]     R38 = TV_PRES; } }
97e7: 25,3d               sjmp  9526             goto 9526;

   Sub_97e9:
97e9: 45,f2,08,fc,16      ad3w  R16,Rfc,8f2      R16 = FN46B_T;
97ee: 45,62,09,fc,18      ad3w  R18,Rfc,962      R18 = FN46S_T;
97f3: 45,d2,09,fc,1a      ad3w  R1a,Rfc,9d2      R1a = FN46F_T;
97f8: 45,42,0a,fc,1c      ad3w  R1c,Rfc,a42      R1c = FN46NE;
97fd: 01,14               clrw  R14              R14 = 0;
97ff: 37,d0,02            jnb   B7,Rd0,9804      if (B7_Rd0 = 1)  {
9802: 28,1c               scall 9820             Sub_9820 (); }
9804: 65,02,00,14         ad2w  R14,2            R14 += 2;
9808: 34,d0,02            jnb   B4,Rd0,980d      if (B4_Rd0 = 1)  {
980b: 28,13               scall 9820             Sub_9820 (); }
980d: 65,02,00,14         ad2w  R14,2            R14 += 2;
9811: 33,d0,02            jnb   B3,Rd0,9816      if (B3_Rd0 = 1)  {
9814: 28,0a               scall 9820             Sub_9820 (); }
9816: 65,02,00,14         ad2w  R14,2            R14 += 2;
981a: 32,d0,02            jnb   B2,Rd0,981f      if (B2_Rd0 = 1)  {
981d: 28,01               scall 9820             Sub_9820 (); }
981f: f0                  ret                    return;

   Sub_9820:
9820: 4d,0e,00,14,30      ml3w  R30,R14,e        lR30 = wR14 * e;
9825: 44,14,fc,40         ad3w  R40,Rfc,R14      R40 = c0a8 + R14;
9829: 8b,e4,6c,00         cmpw  R0,[Re4+6c]      
982d: df,0c               je    983b             if ([1ec] != 0)  {
982f: cc,00               pop   R0               R0 = pop();
9831: 44,30,16,32         ad3w  R32,R16,R30      R32 = R16 + R30;
9835: 28,77               scall 98ae             SUWFuncLU_98ae ();
9837: a0,38,3a            ldw   R3a,R38          R3a = R38;
983a: f0                  ret                    return; }

983b: cc,00               pop   R0               R0 = pop();
983d: 44,30,1c,32         ad3w  R32,R1c,R30      R32 = R1c + R30;
9841: 28,64               scall 98a7             UUWFuncLU_98a7 ();
9843: a0,38,3e            ldw   R3e,R38          R3e = R38;
9846: 44,30,1a,32         ad3w  R32,R1a,R30      R32 = R1a + R30;
984a: 28,62               scall 98ae             SUWFuncLU_98ae ();
984c: a0,38,42            ldw   R42,R38          R42 = R38;
984f: 44,30,18,32         ad3w  R32,R18,R30      R32 = R18 + R30;
9853: 28,59               scall 98ae             SUWFuncLU_98ae ();
9855: a0,38,3a            ldw   R3a,R38          R3a = R38;
9858: 11,1c               clrb  R1c              R1c = 0;
985a: 48,38,42,30         sb3w  R30,R42,R38      R30 = R42 - R38;
985e: db,04               jc    9864             if (R30 < 0)  {
9860: 17,1c               incb  R1c              R1c++;
9862: 03,30               negw  R30              R30 = -R30; }
9864: a3,40,40,38         ldw   R38,[R40+40]     R38 = [R40+40];
9868: a3,e4,6e,36         ldw   R36,[Re4+6e]     R36 = [1ee];
986c: 01,34               clrw  R34              R34 = 0;
986e: 8c,38,34            divw  R34,R38          wR34 /= R38;
9871: d5,03               jnv   9876             if (OVF = 1)  {
9873: bd,ff,34            ldsbw R34,ff           swR34 = ff; }
9876: 03,34               negw  R34              R34 = -R34;
9878: 6c,34,30            ml2w  R30,R34          lR30 *= R34;
987b: 30,1c,09            jnb   B0,R1c,9887      if (B0_R1c = 1)  {
987e: 68,32,3a            sb2w  R3a,R32          R3a -= R32;
9881: db,0f               jc    9892             if (R3a >= 0) goto 9892;
9883: 11,3a               clrb  R3a              R3a = 0;
9885: 20,0b               sjmp  9892             goto 9892; }

9887: 64,32,3a            ad2w  R3a,R32          R3a += R32;
988a: 98,00,3b            cmpb  R3b,R0           
988d: df,03               je    9892             if (R3b != 0)  {
988f: b1,ff,3a            ldb   R3a,ff           R3a = ff; } }
9892: a0,3a,38            ldw   R38,R3a          R38 = R3a;
9895: 6c,3e,38            ml2w  R38,R3e          lR38 *= R3e;
9898: 0c,07,38            shrdw R38,7            lR38 >>= 7;
989b: a0,38,3a            ldw   R3a,R38          R3a = R38;
989e: 98,00,3b            cmpb  R3b,R0           
98a1: df,03               je    98a6             if (R3b != 0)  {
98a3: b1,ff,3a            ldb   R3a,ff           R3a = ff; }
98a6: f0                  ret                    return;

   UUWFuncLU_98a7:
98a7: a3,e8,8c,34         ldw   R34,[Re8+8c]     R34 = NEBART;
98ab: e7,59,b0            jump  4907             goto UUWFuncLU_4907;

   SUWFuncLU_98ae:
98ae: 91,20,9f            orb   R9f,20           B5_SignedInput = 1;
98b1: a3,e8,94,34         ldw   R34,[Re8+94]     R34 = TOT;
98b5: e7,4f,b0            jump  4907             goto UUWFuncLU_4907;

STRATEGY MODULE: EPC_NORM_COM7
98b8: ef,2b,b0            call  48e6             UUWFuncLU_48e6 (
98bb: 06,c7                     #arg 1              FN617,
98bd: 22,03                     #arg 2              SPD_RATIO );
98bf: 31,de,12            jnb   B1,Rde,98d4      if (FLG_FRST_CM = 1)  {           # (start of shift)
98c2: a3,e8,8c,1a         ldw   R1a,[Re8+8c]     R1a = NEBART;
98c6: c3,e8,b4,1a         stw   R1a,[Re8+b4]     NE_STRT_SFT = R1a;                # NE_STRT_SFT = NEBART
98ca: c3,e8,b6,38         stw   R38,[Re8+b6]     TR_STRT_SFT = R38;                # TR_STRT_SFT = FN617(SPD_RATIO)
98ce: c7,e8,fe,bd         stb   Rbd,[Re8+fe]     TP_STRT_SFT = TP_REL_H;           # TP_STRT_SFT = TP_REL
98d2: 29,cd               scall 9aa1             EPC_TQ_IALPHA_COM4 (); }

 Now calculate the minimum static capacity.
98d4: af,e8,de,14         ldzbw R14,[Re8+de]     wR14 = TQ_NET;
98d8: 09,07,14            shlw  R14,7            R14 <<= 7;
98db: 37,df,1b            jnb   B7,Rdf,98f9      if (B7_FLG_SFT_IN_df = 1)  {      # (shift in progress, use IALPHA term)
98de: 67,e8,b8,14         ad2w  R14,[Re8+b8]     R14 += TQ_IALPHA;                 # (TQ_NET + TQ_IALPHA)
98e2: d5,0a               jnv   98ee             if (R14 > ffff)  {
98e4: d6,04               jge   98ea             if (R14 < 0)  {
98e6: 01,14               clrw  R14              R14 = 0;
98e8: 20,04               sjmp  98ee             goto 98ee; }

98ea: a1,ff,7f,14         ldw   R14,7fff         R14 = 7fff; }
98ee: 37,15,02            jnb   B7,R15,98f3      if (B7_R15 = 1)  {
98f1: 01,14               clrw  R14              R14 = 0; }
98f3: a3,e8,b6,38         ldw   R38,[Re8+b6]     R38 = TR_STRT_SFT;
98f7: 20,04               sjmp  98fd             goto 98fd; }

98f9: c3,e8,b8,00         stw   R0,[Re8+b8]      TQ_IALPHA = 0;                    # (shift done, use steady torque requirement)    
98fd: 6c,38,14            ml2w  R14,R38          lR14 *= R38;
9900: 0d,01,14            shldw R14,1            lR14 <<= 1;
9903: c3,e8,ba,16         stw   R16,[Re8+ba]     TQ_STAT_CAP = R16;

 Calculate steady state pressure for current gear.
9907: 37,df,02            jnb   B7,Rdf,990c      if (B7_FLG_SFT_IN_df = 1)  {
990a: 20,cf               sjmp  99db             goto 99db; }

 DO "NON-SHIFTING STATIC TV CALCULATION"
990c: 45,67,00,fc,14      ad3w  R14,Rfc,67       R14 = c10f;
9911: ac,d9,1a            ldzbw R1a,Rd9          wR1a = GR_CM;
9914: 64,1a,14            ad2w  R14,R1a          R14 += R1a;
9917: 69,02,00,14         sb2w  R14,2            R14 -= 2;
991b: ae,15,18            ldzbw R18,[R14++]      wR18 = [R14++];
991e: 6c,16,18            ml2w  R18,R16          lR18 *= R16;
9921: 0d,03,18            shldw R18,3            lR18 <<= 3;
9924: be,14,16            ldsbw R16,[R14]        swR16 = [R14];
9927: 64,16,1a            ad2w  R1a,R16          R1a += R16;
992a: d5,07               jnv   9933             if (R1a > ffff)  {
992c: de,08               jlt   9936             if (R1a < 0) goto 9936;
992e: b1,ff,1a            ldb   R1a,ff           R1a = ff;
9931: 20,10               sjmp  9943             goto 9943; }

9933: 37,1b,02            jnb   B7,R1b,9938      if (B7_R1b = 0) goto 9938; }
9936: 01,1a               clrw  R1a              R1a = 0; }
9938: 09,01,1a            shlw  R1a,1            R1a <<= 1;
993b: 98,00,1b            cmpb  R1b,R0           
993e: df,03               je    9943             if (R1b != 0)  {
9940: b1,ff,1a            ldb   R1a,ff           R1a = ff; }
9943: c7,e8,dc,1a         stb   R1a,[Re8+dc]     TV_STAT = R1a;
9947: 3b,a2,04            jb    B3,Ra2,994e      if (B3_FLG_LK_CM_a2 = 0)  {
994a: 11,15               clrb  R15              R15 = 0;
994c: 20,73               sjmp  99c1             goto 99c1; }

994e: 11,1c               clrb  R1c              R1c = 0;
9950: a3,e8,94,18         ldw   R18,[Re8+94]     R18 = TOT;
9954: 37,19,04            jnb   B7,R19,995b      if (B7_R19 = 1)  {
9957: 17,1c               incb  R1c              R1c++;
9959: 03,18               negw  R18              R18 = -R18; }
995b: a3,fc,56,1e         ldw   R1e,[Rfc+56]     R1e = MUINT;
995f: 6f,fc,58,18         ml2w  R18,[Rfc+58]     lR18 *= MUSLP;
9963: 0c,0c,18            shrdw R18,c            lR18 >>= c;
9966: 30,1c,09            jnb   B0,R1c,9972      if (B0_R1c = 1)  {
9969: 68,18,1e            sb2w  R1e,R18          R1e -= R18;
996c: db,0c               jc    997a             if (R1e >= 0) goto 997a;
996e: 17,1c               incb  R1c              R1c++;
9970: 20,08               sjmp  997a             goto 997a; }

9972: 64,18,1e            ad2w  R1e,R18          R1e += R18;
9975: d3,03               jnc   997a             if (R1e > ffff)  {
9977: bd,ff,1e            ldsbw R1e,ff           swR1e = ff; } }
997a: a3,e8,ba,14         ldw   R14,[Re8+ba]     R14 = TQ_STAT_CAP;
997e: 6f,fc,52,14         ml2w  R14,[Rfc+52]     lR14 *= TQCONVSLP;
9982: 0c,07,14            shrdw R14,7            lR14 >>= 7;
9985: 31,1c,01            jnb   B1,R1c,9989      if (B1_R1c = 1)  {
9988: fe,8c,1e,14         sdivw R14,R1e          swR14 /= R1e;
998c: d5,0c               jnv   999a             if (OVF = 1)  {
998e: 31,1c,06            jnb   B1,R1c,9997      if (B1_R1c = 1)  {
9991: a1,00,80,14         ldw   R14,8000         R14 = 8000;
9995: 20,03               sjmp  999a             goto 999a; }

9997: bd,ff,14            ldsbw R14,ff           swR14 = ff; }
999a: a3,fc,50,1e         ldw   R1e,[Rfc+50]     R1e = TQCONVINT;
999e: 64,1e,14            ad2w  R14,R1e          R14 += R1e;
99a1: 31,1c,09            jnb   B1,R1c,99ad      if (B1_R1c = 1)  {
99a4: 3f,1f,02            jb    B7,R1f,99a9      if (B7_R1f = 0)  {
99a7: db,09               jc    99b2             if (R14 > ffff) goto 99b2; }
99a9: 11,15               clrb  R15              R15 = 0;
99ab: 20,14               sjmp  99c1             goto 99c1; }

99ad: 3f,1f,f7            jb    B7,R1f,99a7      if (B7_R1f = 1) goto 99a7;
99b0: db,0b               jc    99bd             if (R14 > ffff) goto 99bd; }
99b2: 09,01,14            shlw  R14,1            R14 <<= 1;
99b5: db,06               jc    99bd             if (B15_R14 = 0)  {
99b7: 9b,fc,54,15         cmpb  R15,[Rfc+54]     
99bb: d3,04               jnc   99c1             if (R15 < EPC_TQMAX) goto 99c1; } }
99bd: b3,fc,54,15         ldb   R15,[Rfc+54]     R15 = EPC_TQMAX; }

 Select larger of TV_STAT and EPC_TQ_CONV.
99c1: c7,e6,7f,15         stb   R15,[Re6+7f]     EPC_TQ_CONV = R15;
99c5: 9b,e8,dc,15         cmpb  R15,[Re8+dc]     
99c9: d1,04               jleu  99cf             if (R15 > TV_STAT)  {
99cb: c7,e8,dc,15         stb   R15,[Re8+dc]     TV_STAT = R15; }

 Calculate pressure for shift using shifting slopes and Dynamic TV.
99cf: 39,e0,09            jb    B1,Re0,99db      if (B1_FLG_4X4L_e0 = 0)  {
99d2: 9b,e8,d0,d9         cmpb  Rd9,[Re8+d0]     
99d6: d7,03               jne   99db             if (GR_CM = GR_DS_TV)  {
99d8: 37,49,53            jnb   B7,R49,9a2e      if (B7_R49 = 0) goto 9a2e; } }
99db: 45,6e,00,fc,14      ad3w  R14,Rfc,6e       R14 = c116;
99e0: af,e8,d0,1c         ldzbw R1c,[Re8+d0]     wR1c = GR_DS_TV;
99e4: 08,01,1c            shrw  R1c,1            R1c >>= 1;
99e7: 31,1c,07            jnb   B1,R1c,99f1      if (B1_R1c = 1)  {
99ea: 30,d0,04            jnb   B0,Rd0,99f1      if (B0_Rd0 = 1)  {
99ed: 65,03,00,14         ad2w  R14,3            R14 += 3; } }
99f1: 64,1c,14            ad2w  R14,R1c          R14 += R1c;
99f4: ae,14,18            ldzbw R18,[R14]        wR18 = [R14];
99f7: 6f,e8,ba,18         ml2w  R18,[Re8+ba]     lR18 *= TQ_STAT_CAP;
99fb: 0d,03,18            shldw R18,3            lR18 <<= 3;
99fe: ac,1a,16            ldzbw R16,R1a          wR16 = yR1a;
9a01: 09,01,1c            shlw  R1c,1            R1c <<= 1;
9a04: 64,fc,1c            ad2w  R1c,Rfc          R1c += c0a8;
9a07: bf,1c,66,1a         ldsbw R1a,[R1c+66]     swR1a = [R1c+66];
9a0b: 64,16,1a            ad2w  R1a,R16          R1a += R16;
9a0e: d5,07               jnv   9a17             if (R1a > ffff)  {
9a10: de,08               jlt   9a1a             if (R1a < 0) goto 9a1a;
9a12: b1,ff,1a            ldb   R1a,ff           R1a = ff;
9a15: 20,10               sjmp  9a27             goto 9a27; }

9a17: 37,1b,02            jnb   B7,R1b,9a1c      if (B7_R1b = 0) goto 9a1c; }
9a1a: 01,1a               clrw  R1a              R1a = 0; }
9a1c: 09,01,1a            shlw  R1a,1            R1a <<= 1;
9a1f: 98,00,1b            cmpb  R1b,R0           
9a22: df,03               je    9a27             if (R1b != 0)  {
9a24: b1,ff,1a            ldb   R1a,ff           R1a = ff; }
9a27: c7,ea,bd,1a         stb   R1a,[Rea+bd]     [43d] = R1a;
9a2b: ef,e2,00            call  9b10             EPC_DYNAMIC_COM1 (); }

 Select proper value for TV_PRES.
9a2e: 3f,df,26            jb    B7,Rdf,9a57      if (B7_FLG_SFT_IN_df = 0)  {
9a31: 9b,e8,d0,d9         cmpb  Rd9,[Re8+d0]     
9a35: d7,06               jne   9a3d             if (GR_CM = GR_DS_TV)  {
9a37: 39,e0,03            jb    B1,Re0,9a3d      if (B1_FLG_4X4L_e0 = 0)  {
9a3a: 37,49,38            jnb   B7,R49,9a75      if (B7_R49 = 0) goto 9a75; } }
9a3d: af,ea,bd,40         ldzbw R40,[Rea+bd]     wR40 = [43d];
9a41: bf,e8,dd,3e         ldsbw R3e,[Re8+dd]     swR3e = TV_DYN;
9a45: 09,01,3e            shlw  R3e,1            R3e <<= 1;
9a48: 64,3e,40            ad2w  R40,R3e          R40 += R3e;
9a4b: 3f,41,27            jb    B7,R41,9a75      if (B7_R41 = 1) goto 9a75;
9a4e: af,e8,dc,3c         ldzbw R3c,[Re8+dc]     wR3c = TV_STAT;
9a52: 88,3c,40            cmpw  R40,R3c          
9a55: d3,1e               jnc   9a75             if (R40 < R3c) goto 9a75; }
9a57: af,ea,bd,38         ldzbw R38,[Rea+bd]     wR38 = [43d];
9a5b: bf,e8,dd,3e         ldsbw R3e,[Re8+dd]     swR3e = TV_DYN;
9a5f: 09,01,3e            shlw  R3e,1            R3e <<= 1;
9a62: 64,3e,38            ad2w  R38,R3e          R38 += R3e;
9a65: d6,04               jge   9a6b             if (R38 < 0)  {
9a67: 01,38               clrw  R38              R38 = 0;
9a69: 20,0e               sjmp  9a79             goto 9a79; }

9a6b: 98,00,39            cmpb  R39,R0           
9a6e: df,09               je    9a79             if (R39 = 0) goto 9a79;
9a70: ad,ff,38            ldzbw R38,ff           wR38 = ff;
9a73: 20,04               sjmp  9a79             goto 9a79; } } }

9a75: af,e8,dc,38         ldzbw R38,[Re8+dc]     wR38 = TV_STAT; }
9a79: 3f,df,1a            jb    B7,Rdf,9a96      if (B7_FLG_SFT_IN_df = 0)  {
9a7c: 4b,e8,b2,b2,18      sb3w  R18,Rb2,[Re8+b2] R18 = TP - TPBARTV;
9a81: d3,1b               jnc   9a9e             if (R18 < 0) goto 9a9e;
9a83: 8b,e2,92,18         cmpw  R18,[Re2+92]     
9a87: d3,15               jnc   9a9e             if (R18 < [Re2-6e]) goto 9a9e;
9a89: af,e3,47,ff,32      ldzbw R32,[Re2+ff47]   wR32 = [Re2+ff47];
9a8e: 64,32,38            ad2w  R38,R32          R38 += R32;
9a91: d3,03               jnc   9a96             if (R38 > ffff)  {
9a93: b1,ff,38            ldb   R38,ff           R38 = ff; } }
9a96: 98,00,39            cmpb  R39,R0           
9a99: df,03               je    9a9e             if (R39 != 0)  {
9a9b: b1,ff,38            ldb   R38,ff           R38 = ff; } } }
9a9e: e7,85,fa            jump  9526             goto 9526;

   EPC_TQ_IALPHA_COM4:
9aa1: 01,18               clrw  R18              R18 = 0;
9aa3: 39,22,1e            jb    B1,R22,9ac4      if (B1_R22 = 0)  {
9aa6: ac,da,18            ldzbw R18,Rda          wR18 = GEAR_CUR;
9aa9: 32,22,06            jnb   B2,R22,9ab2      if (B2_R22 = 1)  {
9aac: 69,02,00,18         sb2w  R18,2            R18 -= 2;
9ab0: 20,08               sjmp  9aba             goto 9aba; }

9ab2: 3b,22,05            jb    B3,R22,9aba      if (B3_R22 = 0)  {
9ab5: b1,0a,18            ldb   R18,a            R18 = a;
9ab8: 20,0a               sjmp  9ac4             goto 9ac4; }

9aba: 9b,e8,cc,da         cmpb  Rda,[Re8+cc]     
9abe: d9,04               jgtu  9ac4             if (GEAR_CUR <= GEAR_OLD)  {
9ac0: 65,02,00,18         ad2w  R18,2            R18 += 2; } }
9ac4: 45,8c,00,fc,14      ad3w  R14,Rfc,8c       R14 = c134;
9ac9: 64,18,14            ad2w  R14,R18          R14 += R18;
9acc: a3,e8,9c,1a         ldw   R1a,[Re8+9c]     R1a = RT_GR_CUR;
9ad0: 01,18               clrw  R18              R18 = 0;
9ad2: 0c,01,18            shrdw R18,1            lR18 >>= 1;
9ad5: 8f,e8,9e,18         divw  R18,[Re8+9e]     wR18 /= RT_GR_OLD;
9ad9: a1,00,80,1c         ldw   R1c,8000         R1c = 8000;
9add: 68,18,1c            sb2w  R1c,R18          R1c -= R18;                       # [1 - (RT_GR_CUR/RT_GR_OLD)]
9ae0: fe,6e,14,1c         sml2w R1c,[R14]        slR1c *= [R14];
9ae4: fe,4f,e8,b4,1e,1c   sml3w R1c,R1e,[Re8+b4] slR1c = swR1e * NE_STRT_SFT;
9aea: 0e,09,1c            asrdw R1c,9            slR1c >>= 9;
9aed: 37,1e,0f            jnb   B7,R1e,9aff      if (B7_R1e = 1)  {
9af0: 89,ff,ff,1e         cmpw  R1e,ffff         
9af4: d7,03               jne   9af9             if (R1e = ffff)  {
9af6: 3f,1d,12            jb    B7,R1d,9b0b      if (B7_R1d = 1) goto 9b0b; }
9af9: a1,00,80,1c         ldw   R1c,8000         R1c = 8000;
9afd: 20,0c               sjmp  9b0b             goto 9b0b; }

9aff: 88,00,1e            cmpw  R1e,R0           
9b02: d7,03               jne   9b07             if (R1e = 0)  {
9b04: 37,1d,04            jnb   B7,R1d,9b0b      if (B7_R1d = 0) goto 9b0b; }
9b07: a1,ff,7f,1c         ldw   R1c,7fff         R1c = 7fff; } }
9b0b: c3,e8,b8,1c         stw   R1c,[Re8+b8]     TQ_IALPHA = R1c;
9b0f: f0                  ret                    return;

   EPC_DYNAMIC_COM1:
9b10: ef,43,01            call  9c56             Sub_9c56 (
9b13: 50,03                     #arg 1              GR_DS_TV,
9b15: 1e,00                     #arg 2              1e );
9b17: b3,e2,94,14         ldb   R14,[Re2+94]     R14 = [Re2-6c];
9b1b: b3,e8,fe,34         ldb   R34,[Re8+fe]     R34 = TP_STRT_SFT;
9b1f: 99,01,14            cmpb  R14,1            
9b22: d7,03               jne   9b27             if (R14 = 1)  {
9b24: 3f,df,03            jb    B7,Rdf,9b2a      if (B7_FLG_SFT_IN_df = 1) goto 9b2a; }
9b27: b0,bd,34            ldb   R34,Rbd          R34 = TP_REL_H; }
9b2a: 01,30               clrw  R30              R30 = 0;
9b2c: 01,18               clrw  R18              R18 = 0;
9b2e: 39,1e,24            jb    B1,R1e,9b55      if (B1_R1e = 0)  {
9b31: 32,1e,0d            jnb   B2,R1e,9b41      if (B2_R1e = 1)  {
9b34: 65,04,00,18         ad2w  R18,4            R18 += 4;
9b38: 30,d0,1a            jnb   B0,Rd0,9b55      if (B0_Rd0 = 0) goto 9b55;
9b3b: 69,02,00,18         sb2w  R18,2            R18 -= 2;
9b3f: 20,14               sjmp  9b55             goto 9b55; }

9b41: 33,1e,0d            jnb   B3,R1e,9b51      if (B3_R1e = 1)  {
9b44: 65,08,00,18         ad2w  R18,8            R18 += 8;
9b48: 30,d0,0a            jnb   B0,Rd0,9b55      if (B0_Rd0 = 0) goto 9b55;
9b4b: 69,02,00,18         sb2w  R18,2            R18 -= 2;
9b4f: 20,04               sjmp  9b55             goto 9b55; }

9b51: 65,0a,00,18         ad2w  R18,a            R18 += a; } } }
9b55: a3,19,44,9c,32      ldw   R32,[R18+9c44]   R32 = [R18+9c44];
9b5a: 64,fc,32            ad2w  R32,Rfc          R32 += c0a8;
9b5d: 91,10,9f            orb   R9f,10           B4_SignedOutput = 1;
9b60: ef,2e,ad            call  4891             UUYFuncLU_4891 ();
9b63: 16,38               sexb  R38              swR38 = R38;
9b65: 01,42               clrw  R42              R42 = 0;
9b67: a3,e8,94,30         ldw   R30,[Re8+94]     R30 = TOT;
9b6b: 8b,e3,68,ff,30      cmpw  R30,[Re2+ff68]   
9b70: d6,16               jge   9b88             if (R30 < [Re2+ff68])  {
9b72: a3,e4,70,34         ldw   R34,[Re4+70]     R34 = [1f0];
9b76: a1,50,9c,16         ldw   R16,9c50         R16 = 9c50;
9b7a: 28,a5               scall 9c21             Sub_9c21 ();
9b7c: 30,1a,09            jnb   B0,R1a,9b88      if (B0_R1a = 1)  {
9b7f: 64,fc,32            ad2w  R32,Rfc          R32 += c0a8;
9b82: ef,82,ad            call  4907             UUWFuncLU_4907 ();
9b85: 64,40,38            ad2w  R38,R40          R38 += R40; } }
9b88: 31,e0,1d            jnb   B1,Re0,9ba8      if (B1_FLG_4X4L_e0 = 1)  {
9b8b: ac,da,14            ldzbw R14,Rda          wR14 = GEAR_CUR;
9b8e: 3a,14,05            jb    B2,R14,9b96      if (B2_R14 = 0)  {
9b91: 18,03,14            shrb  R14,3            R14 >>= 3;
9b94: 20,08               sjmp  9b9e             goto 9b9e; }

9b96: 79,02,14            sb2b  R14,2            R14 -= 2;
9b99: 38,d0,02            jb    B0,Rd0,9b9e      if (B0_Rd0 = 0)  {
9b9c: 17,14               incb  R14              R14++; }
9b9e: 64,fc,14            ad2w  R14,Rfc          R14 += c0a8;
9ba1: bf,14,5e,40         ldsbw R40,[R14+5e]     swR40 = [R14+5e];
9ba5: 64,40,38            ad2w  R38,R40          R38 += R40; }
9ba8: 31,de,36            jnb   B1,Rde,9be1      if (FLG_FRST_CM = 1)  {
9bab: 38,d0,0b            jb    B0,Rd0,9bb9      if (B0_Rd0 = 0)  {
9bae: 31,d0,30            jnb   B1,Rd0,9be1      if (B1_Rd0 = 0) goto 9be1;
9bb1: a1,00,04,30         ldw   R30,400          R30 = 400;
9bb5: 11,32               clrb  R32              R32 = 0;
9bb7: 20,1c               sjmp  9bd5             goto 9bd5; }

9bb9: 39,1e,25            jb    B1,R1e,9be1      if (B1_R1e = 0)  {
9bbc: 45,80,00,fc,34      ad3w  R34,Rfc,80       R34 = c128;
9bc1: 3a,1e,0b            jb    B2,R1e,9bcf      if (B2_R1e = 0)  {
9bc4: 65,04,00,34         ad2w  R34,4            R34 += 4;
9bc8: 3b,1e,04            jb    B3,R1e,9bcf      if (B3_R1e = 0)  {
9bcb: 65,04,00,34         ad2w  R34,4            R34 += 4; } }
9bcf: a2,35,30            ldw   R30,[R34++]      R30 = [R34++];
9bd2: b2,34,32            ldb   R32,[R34]        R32 = [R34];
9bd5: c3,ea,ba,30         stw   R30,[Rea+ba]     [43a] = R30;
9bd9: c3,ea,b8,30         stw   R30,[Rea+b8]     [438] = R30;
9bdd: c7,ea,bc,32         stb   R32,[Rea+bc]     [43c] = R32; } } }
9be1: 37,df,38            jnb   B7,Rdf,9c1c      if (B7_FLG_SFT_IN_df = 1)  {
9be4: a3,ea,ba,34         ldw   R34,[Rea+ba]     R34 = [43a];
9be8: 4b,ea,b8,34,32      sb3w  R32,R34,[Rea+b8] R32 = R34 - [438];
9bed: 01,30               clrw  R30              R30 = 0;
9bef: 8c,34,30            divw  R30,R34          wR30 /= R34;
9bf2: d5,06               jnv   9bfa             if (OVF = 1)  {
9bf4: b3,ea,bc,32         ldb   R32,[Rea+bc]     R32 = [43c];
9bf8: 20,15               sjmp  9c0f             goto 9c0f; }

9bfa: 11,40               clrb  R40              R40 = 0;
9bfc: bf,ea,bc,34         ldsbw R34,[Rea+bc]     swR34 = [43c];
9c00: 37,35,04            jnb   B7,R35,9c07      if (B7_R35 = 1)  {
9c03: 17,40               incb  R40              R40++;
9c05: 03,34               negw  R34              R34 = -R34; }
9c07: 6c,34,30            ml2w  R30,R34          lR30 *= R34;
9c0a: 30,40,02            jnb   B0,R40,9c0f      if (B0_R40 = 1)  {
9c0d: 13,32               negb  R32              R32 = -R32; }
9c0f: 74,32,38            ad2b  R38,R32          R38 += R32;
9c12: d5,08               jnv   9c1c             if (R38 > ff)  {
9c14: b1,7f,38            ldb   R38,7f           R38 = 7f;
9c17: d6,03               jge   9c1c             if (R38 < 0)  {
9c19: b1,80,38            ldb   R38,80           R38 = 80; } } }
9c1c: c7,e8,dd,38         stb   R38,[Re8+dd]     TV_DYN = R38;
9c20: f0                  ret                    return;

   Sub_9c21:
9c21: 11,1a               clrb  R1a              R1a = 0;
9c23: a0,38,40            ldw   R40,R38          R40 = R38;
9c26: 30,d0,19            jnb   B0,Rd0,9c42      if (B0_Rd0 = 1)  {
9c29: ac,da,42            ldzbw R42,Rda          wR42 = GEAR_CUR;
9c2c: 89,02,00,42         cmpw  R42,2            
9c30: d7,04               jne   9c36             if (R42 = 2)  {
9c32: a1,04,00,42         ldw   R42,4            R42 = 4; }
9c36: 69,04,00,42         sb2w  R42,4            R42 -= 4;
9c3a: 64,42,16            ad2w  R16,R42          R16 += R42;
9c3d: a2,16,32            ldw   R32,[R16]        R32 = [R16];
9c40: 17,1a               incb  R1a              R1a++; }
9c42: f0                  ret                    return;

9c43: ff                  ???   

9c44: 0a,05               word    50a
9c46: 12,05               word    512
9c48: 26,05               word    526
9c4a: 2e,05               word    52e
9c4c: 42,05               word    542
9c4e: 4a,05               word    54a
9c50: 5e,05               word    55e
9c52: 7a,05               word    57a
9c54: 96,05               word    596

   Sub_9c56:
9c56: cc,14               pop   R14              R14 = pop();
9c58: b2,15,16            ldb   R16,[R14++]      R16 = [R14++];
9c5b: b2,15,17            ldb   R17,[R14++]      R17 = [R14++];
9c5e: b2,15,18            ldb   R18,[R14++]      R18 = [R14++];
9c61: b2,15,19            ldb   R19,[R14++]      R19 = [R14++];
9c64: c8,14               push  R14              push(R14);
9c66: b2,16,16            ldb   R16,[R16]        R16 = [R16];
9c69: b1,01,14            ldb   R14,1            R14 = 1;
9c6c: 38,16,12            jb    B0,R16,9c81      if (B0_R16 = 0)  {
9c6f: 17,14               incb  R14              R14++;
9c71: b1,02,17            ldb   R17,2            R17 = 2;
9c74: 98,17,16            cmpb  R16,R17          
9c77: df,08               je    9c81             if (R16 != R17)  {
9c79: 75,02,17            ad2b  R17,2            R17 += 2;
9c7c: 19,01,14            shlb  R14,1            R14 <<= 1;
9c7f: d7,f3               jne   9c74             if (R14 != 0) goto 9c74; } }
9c81: c6,18,14            stb   R14,[R18]        [R18] = R14;
9c84: f0                  ret                    return;

   CCC_COM1:
9c85: 28,74               scall 9cfb             CCC_UNCOND_UNLCK_COM1 ();
9c87: 2a,15               scall 9e9e             CCC_SHFT_UNLCK_COM1 ();
9c89: ef,0b,04            call  a097             CCC_SCHLD_LCK_UNLCK_COM1 ();
9c8c: ef,d4,04            call  a163             CCC_WOT_LCK_UP_COM1 ();
9c8f: ef,2c,00            call  9cbe             CCC_FMEM_COM2 ();
9c92: b3,e2,42,42         ldb   R42,[Re2+42]     R42 = [Re2+42];                   # SW_MLK = 1
9c96: 38,42,0f            jb    B0,R42,9ca8      if (B0_R42 = 0)  {                # (Development unconditional lock-up)
9c99: 3a,de,18            jb    B2,Rde,9cb4      if (FLG_UNC_UNLK = 1) goto 9cb4;  # (Unconditional unlock) 
9c9c: 38,dd,15            jb    B0,Rdd,9cb4      if (B0_FLG_SFT_UNLK_dd = 1) goto 9cb4;  # (Shift control unlock)
9c9f: 39,dd,06            jb    B1,Rdd,9ca8      if (B1_FLG_WOT_LK_dd = 0)  {      # (WOT lockup)
9ca2: 3f,de,03            jb    B7,Rde,9ca8      if (FLG_CRV_LK = 0)  {            # (Scheduled curve lock-up)
9ca5: 36,d6,0c            jnb   B6,Rd6,9cb4      if (B6_FLG_FMM_LK_d6 = 0) goto 9cb4; } } }  # (FMEM lock-up)
9ca8: 91,08,a2            orb   Ra2,8            B3_FLG_LK_CM_a2 = 1;              # (Lock converter clutch)
9cab: a1,00,80,42         ldw   R42,8000         R42 = 8000;
9caf: c3,e4,78,42         stw   R42,[Re4+78]     BCSDC = R42;
9cb3: f0                  ret                    return; } } }

9cb4: 71,f7,a2            an2b  Ra2,f7           B3_FLG_LK_CM_a2 = 0;              # (Unlock converter clutch)
9cb7: 01,42               clrw  R42              R42 = 0;
9cb9: c3,e4,78,42         stw   R42,[Re4+78]     BCSDC = R42;
9cbd: f0                  ret                    return;

   CCC_FMEM_COM2:
9cbe: 36,d6,06            jnb   B6,Rd6,9cc7      if (B6_FLG_FMM_LK_d6 = 1)  {      # (Failure Mode Lock Requested)  
9cc1: 32,de,03            jnb   B2,Rde,9cc7      if (FLG_UNC_UNLK = 1)  {          # (Unconditional Unlock Requested)
9cc4: 71,bf,d6            an2b  Rd6,bf           B6_FLG_FMM_LK_d6 = 0; } }         # (Reset FMEM lock-up flag)
9cc7: a3,e8,a2,30         ldw   R30,[Re8+a2]     R30 = SPD_RATIO;
9ccb: 8b,fc,14,30         cmpw  R30,[Rfc+14]     
9ccf: d1,06               jleu  9cd7             if (R30 > SRLK_FM)  {             # (Speed Ratio above failure mode minimum)
9cd1: 3a,a6,20            jb    B2,Ra6,9cf4      if (B2_TFMFLG_a6 = 1) goto 9cf4;  # (TP Sensor failure)
9cd4: 3f,d6,1d            jb    B7,Rd6,9cf4      if (B7_FLG_FMM_CC_d6 = 1) goto 9cf4; }  # (FMEM lock-up activated this power-up)
9cd7: 36,a6,20            jnb   B6,Ra6,9cfa      if (B6_VSFMFLG_a6 = 0) return;
9cda: a3,e8,8c,16         ldw   R16,[Re8+8c]     R16 = NEBART;
9cde: 3a,a6,0d            jb    B2,Ra6,9cee      if (B2_TFMFLG_a6 = 0)  {
9ce1: ef,02,ac            call  48e6             UUWFuncLU_48e6 (
9ce4: f6,c4                     #arg 1              FN689L,
9ce6: bc,00                     #arg 2              TP_REL );
9ce8: 88,38,16            cmpw  R16,R38          
9ceb: d9,07               jgtu  9cf4             if (R16 > R38) goto 9cf4;         # (Engine Speed above failure  mode minimum)
9ced: f0                  ret                    return; }

9cee: 8b,fc,16,16         cmpw  R16,[Rfc+16]     
9cf2: d1,06               jleu  9cfa             if (R16 <= NELK_FM) return; } } }
9cf4: 91,40,d6            orb   Rd6,40           B6_FLG_FMM_LK_d6 = 1;
9cf7: 91,80,d6            orb   Rd6,80           B7_FLG_FMM_CC_d6 = 1; } }
9cfa: f0                  ret                    return;

   CCC_UNCOND_UNLCK_COM1:
9cfb: a3,e2,58,30         ldw   R30,[Re2+58]     R30 = TPUNCT;
9cff: 88,30,bc            cmpw  Rbc,R30          
9d02: db,05               jc    9d09             if (TP_REL < R30)  {
9d04: 91,08,de            orb   Rde,8            FLG_UN_CT = 1;
9d07: 20,12               sjmp  9d1b             goto 9d1b; }

9d09: 67,e2,52,30         ad2w  R30,[Re2+52]     R30 += TPUNCH;
9d0d: db,0c               jc    9d1b             if (R30 <= ffff)  {
9d0f: 88,30,bc            cmpw  Rbc,R30          
9d12: d3,07               jnc   9d1b             if (TP_REL >= R30)  {
9d14: 71,f7,de            an2b  Rde,f7           FLG_UN_CT = 0;
9d17: c7,e8,00,00         stb   R0,[Re8+0]       TM_UN_CT = 0; } }
9d1b: a3,e8,ae,30         ldw   R30,[Re8+ae]     R30 = TP_RATE;
9d1f: 91,80,dc            orb   Rdc,80           FLG_UN_TRA = 1;
9d22: 8b,e2,5a,bc         cmpw  Rbc,[Re2+5a]     
9d26: d3,08               jnc   9d30             if (TP_REL >= TPUNTR)  {
9d28: 8b,e2,5c,30         cmpw  R30,[Re2+5c]     
9d2c: d6,0b               jge   9d39             if (R30 >= TRUHAC) goto 9d39;
9d2e: 20,06               sjmp  9d36             goto 9d36; }

9d30: 8b,e2,60,30         cmpw  R30,[Re2+60]     
9d34: d6,03               jge   9d39             if (R30 < TRULAC)  {
9d36: 71,7f,dc            an2b  Rdc,7f           FLG_UN_TRA = 0; } }
9d39: 91,40,dc            orb   Rdc,40           FLG_UN_TRD = 1;
9d3c: 8b,e2,5a,bc         cmpw  Rbc,[Re2+5a]     
9d40: d3,08               jnc   9d4a             if (TP_REL >= TPUNTR)  {
9d42: 8b,e2,5e,30         cmpw  R30,[Re2+5e]     
9d46: da,0b               jle   9d53             if (R30 <= TRUHDC) goto 9d53;
9d48: 20,06               sjmp  9d50             goto 9d50; }

9d4a: 8b,e2,62,30         cmpw  R30,[Re2+62]     
9d4e: da,03               jle   9d53             if (R30 > TRULDC)  {
9d50: 71,bf,dc            an2b  Rdc,bf           FLG_UN_TRD = 0; } }
9d53: 91,20,dc            orb   Rdc,20           FLG_UN_BRK = 1;
9d56: 34,25,07            jnb   B4,R25,9d60      if (BIFLG = 1)  {
9d59: 8b,fd,6c,01,bc      cmpw  Rbc,[Rfc+16c]    
9d5e: d1,03               jleu  9d63             if (TP_REL <= TPUNBRK) goto 9d63; }
9d60: 71,df,dc            an2b  Rdc,df           FLG_UN_BRK = 0; }
9d63: 91,10,dc            orb   Rdc,10           FLG_UN_PRN = 1;
9d66: 99,0a,db            cmpb  Rdb,a            
9d69: db,08               jc    9d73             if (PDL < a)  {
9d6b: 99,02,db            cmpb  Rdb,2            
9d6e: df,03               je    9d73             if (PDL != 2)  {
9d70: 71,ef,dc            an2b  Rdc,ef           FLG_UN_PRN = 0; } }
9d73: 71,fb,dc            an2b  Rdc,fb           FLG_UN_MDN = 0;
9d76: 99,04,db            cmpb  Rdb,4            
9d79: d9,08               jgtu  9d83             if (PDL <= 4)  {
9d7b: 98,d9,d8            cmpb  Rd8,Rd9          
9d7e: df,03               je    9d83             if (GR_DS != GR_CM)  {
9d80: 91,04,dc            orb   Rdc,4            FLG_UN_MDN = 1; } }
9d83: 71,f7,dc            an2b  Rdc,f7           FLG_UN_TEMP = 0;
9d86: b3,e8,cb,42         ldb   R42,[Re8+cb]     R42 = CS_SFT_MULT;
9d8a: 99,80,42            cmpb  R42,80           
9d8d: df,03               je    9d92             if (R42 != 80)  {
9d8f: 91,08,dc            orb   Rdc,8            FLG_UN_TEMP = 1; }
9d92: b3,e2,24,30         ldb   R30,[Re2+24]     R30 = BPUNMN;
9d96: 98,30,bb            cmpb  Rbb,R30          
9d99: d9,05               jgtu  9da0             if (BP <= R30)  {
9d9b: 91,02,dc            orb   Rdc,2            FLG_UN_ALT = 1;
9d9e: 20,0e               sjmp  9dae             goto 9dae; }

9da0: 77,e2,23,30         ad2b  R30,[Re2+23]     R30 += BPUNMH;
9da4: db,08               jc    9dae             if (R30 <= ff)  {
9da6: 98,30,bb            cmpb  Rbb,R30          
9da9: d1,03               jleu  9dae             if (BP > R30)  {
9dab: 71,fd,dc            an2b  Rdc,fd           FLG_UN_ALT = 0; } }
9dae: 71,fe,dc            an2b  Rdc,fe           FLG_UN_ULSF = 0;
9db1: 31,de,06            jnb   B1,Rde,9dba      if (FLG_FRST_CM = 1)  {
9db4: 3b,a2,03            jb    B3,Ra2,9dba      if (B3_FLG_LK_CM_a2 = 0)  {
9db7: 91,01,dc            orb   Rdc,1            FLG_UN_ULSF = 1; } }
9dba: 71,f7,e1            an2b  Re1,f7           FLG_UN_NE = 0;
9dbd: a3,e8,8c,30         ldw   R30,[Re8+8c]     R30 = NEBART;
9dc1: 8b,e2,26,30         cmpw  R30,[Re2+26]     
9dc5: db,03               jc    9dca             if (R30 < NELUMN)  {
9dc7: 91,08,e1            orb   Re1,8            FLG_UN_NE = 1; }
9dca: b3,e8,fc,42         ldb   R42,[Re8+fc]     R42 = TM_LK_DLY;
9dce: 45,3e,01,fc,32      ad3w  R32,Rfc,13e      R32 = CTDLY;
9dd3: 33,de,02            jnb   B3,Rde,9dd8      if (FLG_UN_CT = 1)  {
9dd6: 28,bd               scall 9e95             TM_LK_DLY_<[R32] (); }
9dd8: 07,32               incw  R32              R32++;
9dda: 37,dc,02            jnb   B7,Rdc,9ddf      if (FLG_UN_TRA = 1)  {
9ddd: 28,b6               scall 9e95             TM_LK_DLY_<[R32] (); }
9ddf: 07,32               incw  R32              R32++;
9de1: 36,dc,02            jnb   B6,Rdc,9de6      if (FLG_UN_TRD = 1)  {
9de4: 28,af               scall 9e95             TM_LK_DLY_<[R32] (); }
9de6: 07,32               incw  R32              R32++;
9de8: 35,dc,02            jnb   B5,Rdc,9ded      if (FLG_UN_BRK = 1)  {
9deb: 28,a8               scall 9e95             TM_LK_DLY_<[R32] (); }
9ded: 07,32               incw  R32              R32++;
9def: 34,dc,02            jnb   B4,Rdc,9df4      if (FLG_UN_PRN = 1)  {
9df2: 28,a1               scall 9e95             TM_LK_DLY_<[R32] (); }
9df4: 07,32               incw  R32              R32++;
9df6: 38,a6,0f            jb    B0,Ra6,9e08      if (B0_ETV_ERROR_a6 = 0)  {
9df9: 3b,e1,0c            jb    B3,Re1,9e08      if (FLG_UN_NE = 0)  {
9dfc: 3b,dc,09            jb    B3,Rdc,9e08      if (FLG_UN_TEMP = 0)  {
9dff: 3a,dc,06            jb    B2,Rdc,9e08      if (FLG_UN_MDN = 0)  {
9e02: 39,dc,03            jb    B1,Rdc,9e08      if (FLG_UN_ALT = 0)  {
9e05: 32,a6,02            jnb   B2,Ra6,9e0a      if (B2_TFMFLG_a6 = 0) goto 9e0a; } } } } }
9e08: 28,8b               scall 9e95             TM_LK_DLY_<[R32] (); }
9e0a: 30,dc,45            jnb   B0,Rdc,9e52      if (FLG_UN_ULSF = 1)  {
9e0d: b3,e8,cc,34         ldb   R34,[Re8+cc]     R34 = GEAR_OLD;
9e11: 33,da,09            jnb   B3,Rda,9e1d      if (B3_GEAR_CUR = 1)  {
9e14: 3b,34,3b            jb    B3,R34,9e52      if (B3_R34 = 1) goto 9e52;
9e17: b3,e2,66,42         ldb   R42,[Re2+66]     R42 = U34DLY;
9e1b: 20,35               sjmp  9e52             goto 9e52; }

9e1d: 32,da,29            jnb   B2,Rda,9e49      if (B2_GEAR_CUR = 1)  {
9e20: 31,da,13            jnb   B1,Rda,9e36      if (B1_GEAR_CUR = 1)  {
9e23: 99,06,34            cmpb  R34,6            
9e26: d9,08               jgtu  9e30             if (R34 <= 6)  {
9e28: df,28               je    9e52             if (R34 = 6) goto 9e52;
9e2a: b3,e2,65,42         ldb   R42,[Re2+65]     R42 = U23DLY;
9e2e: 20,22               sjmp  9e52             goto 9e52; }

9e30: b3,e2,31,42         ldb   R42,[Re2+31]     R42 = D43DLY;
9e34: 20,1c               sjmp  9e52             goto 9e52; }

9e36: 99,04,34            cmpb  R34,4            
9e39: d9,08               jgtu  9e43             if (R34 <= 4)  {
9e3b: df,15               je    9e52             if (R34 = 4) goto 9e52;
9e3d: b3,e2,64,42         ldb   R42,[Re2+64]     R42 = U12DLY;
9e41: 20,0f               sjmp  9e52             goto 9e52; }

9e43: b3,e2,30,42         ldb   R42,[Re2+30]     R42 = D32DLY;
9e47: 20,09               sjmp  9e52             goto 9e52; }

9e49: 99,02,34            cmpb  R34,2            
9e4c: d1,04               jleu  9e52             if (R34 > 2)  {
9e4e: b3,e2,2f,42         ldb   R42,[Re2+2f]     R42 = D21DLY; } } } } }
9e52: c7,e8,fc,42         stb   R42,[Re8+fc]     TM_LK_DLY = R42;
9e56: b3,e2,42,42         ldb   R42,[Re2+42]     R42 = SW_MLK;
9e5a: 99,02,42            cmpb  R42,2            
9e5d: df,32               je    9e91             if (R42 != 2)  {
9e5f: b3,e8,00,42         ldb   R42,[Re8+0]      R42 = TM_UN_CT;
9e63: 9b,e2,48,42         cmpb  R42,[Re2+48]     
9e67: d9,05               jgtu  9e6e             if (R42 <= TMCTDY)  {
9e69: 3b,de,25            jb    B3,Rde,9e91      if (FLG_UN_CT = 1) goto 9e91;
9e6c: 20,0a               sjmp  9e78             goto 9e78; }

9e6e: b3,e8,d7,42         ldb   R42,[Re8+d7]     R42 = VSBART_RT;
9e72: 9b,e2,67,42         cmpb  R42,[Re2+67]     
9e76: d3,19               jnc   9e91             if (R42 >= VSCTDY)  {
9e78: 98,00,dc            cmpb  Rdc,R0           
9e7b: d7,14               jne   9e91             if (Rdc = 0)  {
9e7d: 3b,e1,11            jb    B3,Re1,9e91      if (FLG_UN_NE = 0)  {
9e80: 3a,a6,0e            jb    B2,Ra6,9e91      if (B2_TFMFLG_a6 = 0)  {
9e83: 38,a6,0b            jb    B0,Ra6,9e91      if (B0_ETV_ERROR_a6 = 0)  {
9e86: 9b,e8,fc,00         cmpb  R0,[Re8+fc]      
9e8a: d7,08               jne   9e94             if (TM_LK_DLY != 0) return;
9e8c: 71,fb,de            an2b  Rde,fb           FLG_UNC_UNLK = 0;
9e8f: 20,03               sjmp  9e94             return; } } } } } } }

9e91: 91,04,de            orb   Rde,4            FLG_UNC_UNLK = 1; }
9e94: f0                  ret                    return;

   TM_LK_DLY_<[R32]:
9e95: 9a,32,42            cmpb  R42,[R32]        
9e98: db,03               jc    9e9d             if (R42 < [R32])  {               # 
9e9a: b2,32,42            ldb   R42,[R32]        R42 = [R32]; }
9e9d: f0                  ret                    return;

   CCC_SHFT_UNLCK_COM1:
9e9e: 32,a2,09            jnb   B2,Ra2,9eaa      if (B2_FLG_FRST_DS_a2 = 1)  {     # (Shift desired this pass)
9ea1: 98,d9,d8            cmpb  Rd8,Rd9          
9ea4: db,04               jc    9eaa             if (GR_DS < GR_CM)  {             # (Downshift)  
9ea6: 28,26               scall 9ece             CCC_INI_DWN_COM1 ();
9ea8: 20,21               sjmp  9ecb             goto 9ecb; } }

9eaa: 31,de,0a            jnb   B1,Rde,9eb7      if (FLG_FRST_CM = 1)  {           # (Shift commanded this pass)
9ead: 9b,e8,cc,da         cmpb  Rda,[Re8+cc]     
9eb1: d1,04               jleu  9eb7             if (GEAR_CUR > GEAR_OLD)  {       # (Upshift) 
9eb3: 28,4f               scall 9f04             CCC_INI_UP_COM1 ();
9eb5: 20,11               sjmp  9ec8             goto 9ec8; } }

9eb7: 3c,dd,11            jb    B4,Rdd,9ecb      if (B4_FLG_DN_UNLK_dd = 0)  {
9eba: 3d,dd,0e            jb    B5,Rdd,9ecb      if (B5_FLG_DN_LK_dd = 0)  {
9ebd: 3e,dd,08            jb    B6,Rdd,9ec8      if (B6_FLG_UP_UNLK_dd = 0)  {
9ec0: 3f,dd,05            jb    B7,Rdd,9ec8      if (B7_FLG_UP_LK_dd = 0)  {
9ec3: c3,e8,e8,00         stw   R0,[Re8+e8]      TM_SFT_CCO = 0;
9ec7: f0                  ret                    return; } }

9ec8: 29,27               scall 9ff1             CCC_UP_CNVR_CLCH_COM2 ();
9eca: f0                  ret                    return; } }

9ecb: 28,0c               scall 9ed9             CCC_DWN_CNVR_CLCH_COM1 ();
9ecd: f0                  ret                    return;

   CCC_INI_DWN_COM1:
9ece: 71,13,dd            an2b  Rdd,13           B2_FLG_HS_UNLK_dd = 0;
                                                 B3_FLG_HS_LK_dd = 0;
                                                 B5_FLG_DN_LK_dd = 0;
                                                 B6_FLG_UP_UNLK_dd = 0;
                                                 B7_FLG_UP_LK_dd = 0;
9ed1: 91,11,dd            orb   Rdd,11           B0_FLG_SFT_UNLK_dd = 1;
                                                 B4_FLG_DN_UNLK_dd = 1;
9ed4: c3,e8,e8,00         stw   R0,[Re8+e8]      TM_SFT_CCO = 0;
9ed8: f0                  ret                    return;

   CCC_DWN_CNVR_CLCH_COM1:
9ed9: a3,e8,e8,42         ldw   R42,[Re8+e8]     R42 = TM_SFT_CCO;
9edd: 34,dd,11            jnb   B4,Rdd,9ef1      if (B4_FLG_DN_UNLK_dd = 1)  {
9ee0: 8b,e8,e2,42         cmpw  R42,[Re8+e2]     
9ee4: d3,0b               jnc   9ef1             if (R42 >= DNUN_TM)  {
9ee6: 71,ef,dd            an2b  Rdd,ef           B4_FLG_DN_UNLK_dd = 0;
9ee9: 91,20,dd            orb   Rdd,20           B5_FLG_DN_LK_dd = 1;
9eec: c3,e8,e8,00         stw   R0,[Re8+e8]      TM_SFT_CCO = 0;
9ef0: f0                  ret                    return; } }

9ef1: 35,dd,0f            jnb   B5,Rdd,9f03      if (B5_FLG_DN_LK_dd = 1)  {
9ef4: 8b,e2,4e,42         cmpw  R42,[Re2+4e]     
9ef8: d3,09               jnc   9f03             if (R42 >= TMDNLK)  {
9efa: 71,df,dd            an2b  Rdd,df           B5_FLG_DN_LK_dd = 0;
9efd: 71,df,df            an2b  Rdf,df           B5_FLG_SF_AUTO_df = 0;
9f00: 71,fe,dd            an2b  Rdd,fe           B0_FLG_SFT_UNLK_dd = 0; } }
9f03: f0                  ret                    return;

   CCC_INI_UP_COM1:
9f04: 71,47,dd            an2b  Rdd,47           B3_FLG_HS_LK_dd = 0;
                                                 B4_FLG_DN_UNLK_dd = 0;
                                                 B5_FLG_DN_LK_dd = 0;
                                                 B7_FLG_UP_LK_dd = 0;
9f07: 91,40,dd            orb   Rdd,40           B6_FLG_UP_UNLK_dd = 1;
9f0a: c3,e8,e8,00         stw   R0,[Re8+e8]      TM_SFT_CCO = 0;
9f0e: 71,7f,44            an2b  R44,7f           B7_FLG_TIP_RATE_44 = 0;
9f11: 33,da,1b            jnb   B3,Rda,9f2f      if (B3_GEAR_CUR = 1)  {
9f14: ad,10,30            ldzbw R30,10           wR30 = 10;
9f17: ef,cc,a9            call  48e6             UUWFuncLU_48e6 (
9f1a: a6,c4                     #arg 1              FN4ULK,
9f1c: bc,00                     #arg 2              TP_REL );
9f1e: c3,e8,88,38         stw   R38,[Re8+88]     RT_ULK_PWR = R38;
9f22: ef,c1,a9            call  48e6             UUWFuncLU_48e6 (
9f25: c2,c4                     #arg 1              FN4LK,
9f27: bc,00                     #arg 2              TP_REL );
9f29: c3,e8,8a,38         stw   R38,[Re8+8a]     RT_LK_PWR = R38;
9f2d: 20,39               sjmp  9f68             goto 9f68; }

9f2f: 32,da,7e            jnb   B2,Rda,9fb0      if (B2_GEAR_CUR = 1)  {
9f32: 31,da,1b            jnb   B1,Rda,9f50      if (B1_GEAR_CUR = 1)  {
9f35: ad,08,30            ldzbw R30,8            wR30 = 8;
9f38: ef,ab,a9            call  48e6             UUWFuncLU_48e6 (
9f3b: 6e,c4                     #arg 1              FN3ULK,
9f3d: bc,00                     #arg 2              TP_REL );
9f3f: c3,e8,88,38         stw   R38,[Re8+88]     RT_ULK_PWR = R38;
9f43: ef,a0,a9            call  48e6             UUWFuncLU_48e6 (
9f46: 8a,c4                     #arg 1              FN3LK,
9f48: bc,00                     #arg 2              TP_REL );
9f4a: c3,e8,8a,38         stw   R38,[Re8+8a]     RT_LK_PWR = R38;
9f4e: 20,18               sjmp  9f68             goto 9f68; }

9f50: 01,30               clrw  R30              R30 = 0;
9f52: ef,91,a9            call  48e6             UUWFuncLU_48e6 (
9f55: 36,c4                     #arg 1              FN2ULK,
9f57: bc,00                     #arg 2              TP_REL );
9f59: c3,e8,88,38         stw   R38,[Re8+88]     RT_ULK_PWR = R38;
9f5d: ef,86,a9            call  48e6             UUWFuncLU_48e6 (
9f60: 52,c4                     #arg 1              FN2LK,
9f62: bc,00                     #arg 2              TP_REL );
9f64: c3,e8,8a,38         stw   R38,[Re8+8a]     RT_LK_PWR = R38;
9f68: 45,7e,01,fc,42      ad3w  R42,Rfc,17e      R42 = c226;
9f6d: 33,df,05            jnb   B3,Rdf,9f75      if (B3_FLG_UP_NE_df = 1)  {
9f70: 45,96,01,fc,42      ad3w  R42,Rfc,196      R42 = c23e; }
9f75: 64,30,42            ad2w  R42,R30          R42 += R30;
9f78: b1,04,34            ldb   R34,4            R34 = 4;
9f7b: a1,00,03,32         ldw   R32,300          R32 = TE_ULK_UP;
9f7f: a2,43,30            ldw   R30,[R42++]      R30 = [R42++];
9f82: c2,33,30            stw   R30,[R32++]      [R32++] = R30;
9f85: e0,34,f7            djnz  R34,9f7f         R34--;
                                                 if (R34 != 0) goto 9f7f;
9f88: b1,02,34            ldb   R34,2            R34 = 2;
9f8b: a1,08,03,32         ldw   R32,308          R32 = RT_ULK_PWR;
9f8f: a2,32,42            ldw   R42,[R32]        R42 = [R32];
9f92: 67,e8,a6,42         ad2w  R42,[Re8+a6]     R42 += SPD_RT_STRT;
9f96: d3,03               jnc   9f9b             if (R42 > ffff)  {
9f98: bd,ff,42            ldsbw R42,ff           swR42 = ff; }
9f9b: c2,33,42            stw   R42,[R32++]      [R32++] = R42;
9f9e: e0,34,ee            djnz  R34,9f8f         R34--;
                                                 if (R34 != 0) goto 9f8f;
9fa1: ac,da,22            ldzbw R22,Rda          wR22 = GEAR_CUR;
9fa4: 64,fc,22            ad2w  R22,Rfc          R22 += c0a8;
9fa7: a3,23,4e,01,20      ldw   R20,[R22+14e]    R20 = [R22+14e];
9fac: c3,e8,a4,20         stw   R20,[Re8+a4]     [324] = R20; }
9fb0: a3,e8,88,38         ldw   R38,[Re8+88]     R38 = RT_ULK_PWR;
9fb4: 28,0d               scall 9fc3             Calc_SR_PP_LIM ();
9fb6: 91,04,dd            orb   Rdd,4            B2_FLG_HS_UNLK_dd = 1;            # (enable high speed unlock check)
9fb9: 71,fd,51            an2b  R51,fd           B1_FLG_UN_UPSFT_51 = 0;
9fbc: 3b,a2,03            jb    B3,Ra2,9fc2      if (B3_FLG_LK_CM_a2 = 0)  {       # (upshift commanded on an unlocked converter)
9fbf: 91,02,51            orb   R51,2            B1_FLG_UN_UPSFT_51 = 1; }
9fc2: f0                  ret                    return;

   Calc_SR_PP_LIM:
9fc3: af,fd,d2,00,30      ldzbw R30,[Rfc+d2]     wR30 = PUL_PER_REV;
9fc8: 6f,e8,8e,30         ml2w  R30,[Re8+8e]     lR30 *= NOBART;
9fcc: 8d,e0,01,30         divw  R30,1e0          wR30 /= 1e0;
9fd0: a1,9b,5b,34         ldw   R34,5b9b         R34 = 5b9b;
9fd4: a1,06,00,36         ldw   R36,6            R36 = 6;
9fd8: 8c,30,34            divw  R34,R30          wR34 /= R30;
9fdb: d5,03               jnv   9fe0             if (OVF = 1)  {
9fdd: bd,ff,34            ldsbw R34,ff           swR34 = ff; }
9fe0: 6c,38,34            ml2w  R34,R38          lR34 *= R38;
9fe3: 8f,e8,9c,34         divw  R34,[Re8+9c]     wR34 /= RT_GR_CUR;
9fe7: d5,03               jnv   9fec             if (OVF = 1)  {
9fe9: bd,ff,34            ldsbw R34,ff           swR34 = ff; }
9fec: c3,e8,a8,34         stw   R34,[Re8+a8]     SR_PP_LIM = R34;
9ff0: f0                  ret                    return;

   CCC_UP_CNVR_CLCH_COM2:
9ff1: 3e,df,06            jb    B6,Rdf,9ffa      if (B6_FLG_PWR_df = 0)  {
9ff4: c3,e8,a8,00         stw   R0,[Re8+a8]      SR_PP_LIM = 0;
9ff8: 20,14               sjmp  a00e             goto a00e; }

9ffa: 36,dd,08            jnb   B6,Rdd,a005      if (B6_FLG_UP_UNLK_dd = 1)  {
9ffd: a3,e8,88,38         ldw   R38,[Re8+88]     R38 = RT_ULK_PWR;
a001: 2f,c0               scall 9fc3             Calc_SR_PP_LIM ();
a003: 20,09               sjmp  a00e             goto a00e; }

a005: 37,dd,06            jnb   B7,Rdd,a00e      if (B7_FLG_UP_LK_dd = 1)  {
a008: a3,e8,8a,38         ldw   R38,[Re8+8a]     R38 = RT_LK_PWR;
a00c: 2f,b5               scall 9fc3             Calc_SR_PP_LIM (); }
a00e: 31,51,0e            jnb   B1,R51,a01f      if (B1_FLG_UN_UPSFT_51 = 1)  {
a011: a3,e8,ae,38         ldw   R38,[Re8+ae]     R38 = TP_RATE;
a015: 8b,fd,5a,01,38      cmpw  R38,[Rfc+15a]    
a01a: da,03               jle   a01f             if (R38 > UP_TIP_RATE)  {
a01c: 91,80,44            orb   R44,80           B7_FLG_TIP_RATE_44 = 1; } }
a01f: a3,e8,e8,42         ldw   R42,[Re8+e8]     R42 = TM_SFT_CCO;
a023: 36,dd,25            jnb   B6,Rdd,a04b      if (B6_FLG_UP_UNLK_dd = 1)  {
a026: 32,dd,11            jnb   B2,Rdd,a03a      if (B2_FLG_HS_UNLK_dd = 1)  {
a029: 36,df,08            jnb   B6,Rdf,a034      if (B6_FLG_PWR_df = 1)  {
a02c: 8b,e8,84,42         cmpw  R42,[Re8+84]     
a030: db,08               jc    a03a             if (R42 >= TE_ULK_PWR) goto a03a;
a032: 20,17               sjmp  a04b             goto a04b; }

a034: 8b,e8,80,42         cmpw  R42,[Re8+80]     
a038: d3,11               jnc   a04b             if (R42 < TE_ULK_UP) goto a04b; } }
a03a: c3,e8,e8,00         stw   R0,[Re8+e8]      TM_SFT_CCO = 0;
a03e: a3,e8,8a,38         ldw   R38,[Re8+8a]     R38 = RT_LK_PWR;
a042: 2f,7f               scall 9fc3             Calc_SR_PP_LIM ();
a044: 71,bb,dd            an2b  Rdd,bb           B2_FLG_HS_UNLK_dd = 0;
                                                 B6_FLG_UP_UNLK_dd = 0;
a047: 91,89,dd            orb   Rdd,89           B0_FLG_SFT_UNLK_dd = 1;
                                                 B3_FLG_HS_LK_dd = 1;
                                                 B7_FLG_UP_LK_dd = 1;
a04a: f0                  ret                    return; } }

a04b: 3f,44,1d            jb    B7,R44,a06b      if (B7_FLG_TIP_RATE_44 = 0)  {
a04e: 37,dd,1a            jnb   B7,Rdd,a06b      if (B7_FLG_UP_LK_dd = 1)  {
a051: 33,dd,11            jnb   B3,Rdd,a065      if (B3_FLG_HS_LK_dd = 1)  {
a054: 36,df,08            jnb   B6,Rdf,a05f      if (B6_FLG_PWR_df = 1)  {
a057: 8b,e8,86,42         cmpw  R42,[Re8+86]     
a05b: db,08               jc    a065             if (R42 >= TE_LK_PWR) goto a065;
a05d: 20,0c               sjmp  a06b             goto a06b; }

a05f: 8b,e8,82,42         cmpw  R42,[Re8+82]     
a063: d3,06               jnc   a06b             if (R42 < TE_LK_UP) goto a06b; } }
a065: 71,76,dd            an2b  Rdd,76           B0_FLG_SFT_UNLK_dd = 0;
                                                 B3_FLG_HS_LK_dd = 0;
                                                 B7_FLG_UP_LK_dd = 0;
a068: 71,df,df            an2b  Rdf,df           B5_FLG_SF_AUTO_df = 0; } } }
a06b: 37,44,28            jnb   B7,R44,a096      if (B7_FLG_TIP_RATE_44 = 1)  {
a06e: a3,e4,70,30         ldw   R30,[Re4+70]     R30 = [1f0];
a072: 8b,fd,5c,01,30      cmpw  R30,[Rfc+15c]    
a077: db,05               jc    a07e             if (R30 < TM_ACT_SFT)  {
a079: 71,f7,dd            an2b  Rdd,f7           B3_FLG_HS_LK_dd = 0;
a07c: 20,15               sjmp  a093             goto a093; }

a07e: 31,51,15            jnb   B1,R51,a096      if (B1_FLG_UN_UPSFT_51 = 1)  {
a081: a3,e8,a2,30         ldw   R30,[Re8+a2]     R30 = SPD_RATIO;
a085: 8b,e8,a4,30         cmpw  R30,[Re8+a4]     
a089: d3,08               jnc   a093             if (R30 >= [324])  {
a08b: 71,fe,dd            an2b  Rdd,fe           B0_FLG_SFT_UNLK_dd = 0;
a08e: 71,7f,44            an2b  R44,7f           B7_FLG_TIP_RATE_44 = 0;
a091: 20,03               sjmp  a096             return; }

a093: 91,01,dd            orb   Rdd,1            B0_FLG_SFT_UNLK_dd = 1; } }
a096: f0                  ret                    return;

   CCC_SCHLD_LCK_UNLCK_COM1:
a097: 71,df,de            an2b  Rde,df           FLG_CRV_LST = 0;
a09a: 36,de,03            jnb   B6,Rde,a0a0      if (FLG_CRV_DS = 1)  {
a09d: 91,20,de            orb   Rde,20           FLG_CRV_LST = 1; }
a0a0: 9b,e2,43,00         cmpb  R0,[Re2+43]      
a0a4: df,06               je    a0ac             if ([Re2+43] != 0)  {
a0a6: 3d,dc,09            jb    B5,Rdc,a0b2      if (FLG_UN_BRK = 1) goto a0b2;
a0a9: 3b,de,06            jb    B3,Rde,a0b2      if (FLG_UN_CT = 1) goto a0b2; }
a0ac: 32,de,03            jnb   B2,Rde,a0b2      if (FLG_UNC_UNLK = 1)  {
a0af: 71,bf,de            an2b  Rde,bf           FLG_CRV_DS = 0; } } }
a0b2: 11,17               clrb  R17              R17 = 0;
a0b4: 59,04,da,16         sb3b  R16,Rda,4        R16 = GEAR_CUR - 4;
a0b8: d3,44               jnc   a0fe             if (R16 >= 0)  {
a0ba: 5d,0a,16,14         ml3b  R14,R16,a        wR14 = yR16 * a;
a0be: 3f,df,11            jb    B7,Rdf,a0d2      if (B7_FLG_SFT_IN_df = 0)  {
a0c1: 45,52,01,fc,18      ad3w  R18,Rfc,152      R18 = SRLK2;
a0c6: 64,16,18            ad2w  R18,R16          R18 += R16;
a0c9: a3,e8,a2,42         ldw   R42,[Re8+a2]     R42 = SPD_RATIO;
a0cd: 8a,18,42            cmpw  R42,[R18]        
a0d0: d3,16               jnc   a0e8             if (R42 < [R18]) goto a0e8; }
a0d2: 45,a6,03,fc,3c      ad3w  R3c,Rfc,3a6      R3c = FN2LA;
a0d7: 45,76,03,fc,1c      ad3w  R1c,Rfc,376      R1c = FN2LS;
a0dc: 64,14,3c            ad2w  R3c,R14          R3c += R14;
a0df: 44,14,1c,32         ad3w  R32,R1c,R14      R32 = R1c + R14;
a0e3: ef,46,ea            call  8b2c             Sub_8b2c ();
a0e6: d3,1b               jnc   a103             if (R41 < VSBART_RT) goto a103; }
a0e8: 45,06,04,fc,3c      ad3w  R3c,Rfc,406      R3c = FN2UA;
a0ed: 45,d6,03,fc,1c      ad3w  R1c,Rfc,3d6      R1c = FN2US;
a0f2: 64,14,3c            ad2w  R3c,R14          R3c += R14;
a0f5: 44,14,1c,32         ad3w  R32,R1c,R14      R32 = R1c + R14;
a0f9: ef,30,ea            call  8b2c             Sub_8b2c ();
a0fc: d1,08               jleu  a106             if (R41 <= VSBART_RT) goto a106; }
a0fe: 71,bf,de            an2b  Rde,bf           FLG_CRV_DS = 0;
a101: 20,03               sjmp  a106             goto a106; }

a103: 91,40,de            orb   Rde,40           FLG_CRV_DS = 1; }
a106: 31,de,05            jnb   B1,Rde,a10e      if (FLG_FRST_CM = 1)  {
a109: 71,ef,de            an2b  Rde,ef           FLG_SCHD_DLY = 0;
a10c: 20,0c               sjmp  a11a             goto a11a; }

a10e: 3e,de,09            jb    B6,Rde,a11a      if (FLG_CRV_DS = 0)  {
a111: 35,de,06            jnb   B5,Rde,a11a      if (FLG_CRV_LST = 1)  {
a114: 3a,de,03            jb    B2,Rde,a11a      if (FLG_UNC_UNLK = 0)  {
a117: 91,10,de            orb   Rde,10           FLG_SCHD_DLY = 1; } } }
a11a: b3,e8,f9,30         ldb   R30,[Re8+f9]     R30 = [379];
a11e: 34,de,16            jnb   B4,Rde,a137      if (FLG_SCHD_DLY = 1)  {
a121: 36,de,13            jnb   B6,Rde,a137      if (FLG_CRV_DS = 1)  {
a124: 4b,e8,aa,b2,32      sb3w  R32,Rb2,[Re8+aa] R32 = TP - TPBARTC;
a129: db,02               jc    a12d             if (R32 < 0)  {
a12b: 03,32               negw  R32              R32 = -R32; }
a12d: 8b,e2,54,32         cmpw  R32,[Re2+54]     
a131: d3,04               jnc   a137             if (R32 >= [Re2+54])  {
a133: b3,e2,2e,30         ldb   R30,[Re2+2e]     R30 = [Re2+2e]; } } }
a137: 3d,de,13            jb    B5,Rde,a14d      if (FLG_CRV_LST = 0)  {
a13a: 36,de,10            jnb   B6,Rde,a14d      if (FLG_CRV_DS = 1)  {
a13d: 9b,e2,24,bb         cmpb  Rbb,[Re2+24]     
a141: d1,0a               jleu  a14d             if (BP > [Re2+24])  {
a143: 9b,e2,25,bb         cmpb  Rbb,[Re2+25]     
a147: db,04               jc    a14d             if (BP < [Re2+25])  {
a149: b3,e2,22,30         ldb   R30,[Re2+22]     R30 = [Re2+22]; } } } }
a14d: c7,e8,f9,30         stb   R30,[Re8+f9]     [379] = R30;
a151: 98,30,00            cmpb  R0,R30           
a154: d7,0c               jne   a162             if (R30 = 0)  {
a156: 71,ef,de            an2b  Rde,ef           FLG_SCHD_DLY = 0;
a159: 91,80,de            orb   Rde,80           FLG_CRV_LK = 1;
a15c: 3e,de,03            jb    B6,Rde,a162      if (FLG_CRV_DS = 0)  {
a15f: 71,7f,de            an2b  Rde,7f           FLG_CRV_LK = 0; } }
a162: f0                  ret                    return;

   CCC_WOT_LCK_UP_COM1:
a163: a3,e2,4a,18         ldw   R18,[Re2+4a]     R18 = TPLKWO;
a167: a3,e8,8c,32         ldw   R32,[Re8+8c]     R32 = NEBART;
a16b: a3,e2,36,34         ldw   R34,[Re2+36]     R34 = NELKWO;
a16f: af,e8,da,36         ldzbw R36,[Re8+da]     wR36 = RLKCTR;
a173: 01,40               clrw  R40              R40 = 0;
a175: 88,18,bc            cmpw  Rbc,R18          
a178: d3,0c               jnc   a186             if (TP_REL >= R18)  {
a17a: 99,02,da            cmpb  Rda,2            
a17d: df,07               je    a186             if (GEAR_CUR != 2)  {
a17f: 99,04,db            cmpb  Rdb,4            
a182: df,02               je    a186             if (PDL != 4)  {
a184: 07,40               incw  R40              R40++; } } }
a186: 6b,e2,4c,18         sb2w  R18,[Re2+4c]     R18 -= TPLKWH;
a18a: db,02               jc    a18e             if (R18 < 0)  {
a18c: 01,18               clrw  R18              R18 = 0; }
a18e: 4b,e2,34,34,1a      sb3w  R1a,R34,[Re2+34] R1a = R34 - NELKWH;
a193: db,02               jc    a197             if (R1a < 0)  {
a195: 01,1a               clrw  R1a              R1a = 0; }
a197: 01,42               clrw  R42              R42 = 0;
a199: 88,1a,32            cmpw  R32,R1a          
a19c: d9,02               jgtu  a1a0             if (R32 <= R1a)  {
a19e: 17,42               incb  R42              R42++; }
a1a0: 88,18,bc            cmpw  Rbc,R18          
a1a3: db,02               jc    a1a7             if (TP_REL < R18)  {
a1a5: 17,43               incb  R43              R43++; }
a1a7: 38,40,1a            jb    B0,R40,a1c4      if (B0_R40 = 0)  {
a1aa: 38,43,17            jb    B0,R43,a1c4      if (B0_R43 = 0)  {
a1ad: 88,34,32            cmpw  R32,R34          
a1b0: d9,0d               jgtu  a1bf             if (R32 <= R34)  {
a1b2: 38,42,15            jb    B0,R42,a1ca      if (B0_R42 = 1) goto a1ca;
a1b5: 33,a2,12            jnb   B3,Ra2,a1ca      if (B3_FLG_LK_CM_a2 = 0) goto a1ca;
a1b8: 30,de,0f            jnb   B0,Rde,a1ca      if (FLG_RLK_WOT = 0) goto a1ca;
a1bb: 17,36               incb  R36              R36++;
a1bd: 20,08               sjmp  a1c7             goto a1c7; }

a1bf: 91,01,de            orb   Rde,1            FLG_RLK_WOT = 1;
a1c2: 20,06               sjmp  a1ca             goto a1ca; } }

a1c4: b1,01,36            ldb   R36,1            R36 = 1;
a1c7: 71,fe,de            an2b  Rde,fe           FLG_RLK_WOT = 0; } } }
a1ca: c7,e8,da,36         stb   R36,[Re8+da]     RLKCTR = R36;
a1ce: 38,40,31            jb    B0,R40,a202      if (B0_R40 = 0)  {
a1d1: 4f,e2,38,36,38      ml3w  R38,R36,[Re2+38] lR38 = wR36 * RTLKWH;
a1d6: 88,00,3a            cmpw  R3a,R0           
a1d9: df,02               je    a1dd             if (R3a != 0)  {
a1db: 20,06               sjmp  a1e3             goto a1e3; }

a1dd: 67,e2,3a,38         ad2w  R38,[Re2+3a]     R38 += RTLKWO;
a1e1: d3,03               jnc   a1e6             if (R38 > ffff)  {
a1e3: bd,ff,38            ldsbw R38,ff           swR38 = ff; }
a1e6: 8b,e8,a2,38         cmpw  R38,[Re8+a2]     
a1ea: d9,11               jgtu  a1fd             if (R38 <= SPD_RATIO)  {
a1ec: 8b,e2,4a,bc         cmpw  Rbc,[Re2+4a]     
a1f0: d3,05               jnc   a1f7             if (TP_REL >= TPLKWO)  {
a1f2: 88,34,32            cmpw  R32,R34          
a1f5: d9,0b               jgtu  a202             if (R32 > R34) goto a202; }
a1f7: 38,42,03            jb    B0,R42,a1fd      if (B0_R42 = 0)  {
a1fa: 30,43,08            jnb   B0,R43,a205      if (B0_R43 = 0) return; } }
a1fd: 71,fd,dd            an2b  Rdd,fd           B1_FLG_WOT_LK_dd = 0;
a200: 20,03               sjmp  a205             return; } }

a202: 91,02,dd            orb   Rdd,2            B1_FLG_WOT_LK_dd = 1; }
a205: f0                  ret                    return;

   INTRN_RT_NOVS_KAM_CALC_COM1:
a206: 71,fe,49            an2b  R49,fe           B0_FLG_NEW_NOV_49 = 0;
a209: 3b,a2,0a            jb    B3,Ra2,a216      if (B3_FLG_LK_CM_a2 = 0)  {
a20c: c7,e8,01,00         stb   R0,[Re8+1]       TM_LK_CONV = 0;
a210: c7,e8,fd,00         stb   R0,[Re8+fd]      TM_NOV_CALC = 0;
a214: 20,04               sjmp  a21a             goto a21a; }

a216: c3,e8,ea,00         stw   R0,[Re8+ea]      TM_UNLK_CONV = 0;
a21a: 3c,4b,43            jb    B4,R4b,a260      if (B4_SFT_ERROR_4b = 0)  {
a21d: 99,06,da            cmpb  Rda,6            
a220: d3,3e               jnc   a260             if (GEAR_CUR >= 6)  {             # (3rd or 4th)
a222: b3,e8,01,30         ldb   R30,[Re8+1]      R30 = TM_LK_CONV;
a226: 9b,e2,1e,30         cmpb  R30,[Re2+1e]     
a22a: d3,34               jnc   a260             if (R30 >= TMNVLK)  {
a22c: b3,e8,fd,30         ldb   R30,[Re8+fd]     R30 = TM_NOV_CALC;
a230: 9b,e2,1f,30         cmpb  R30,[Re2+1f]     
a234: d3,2a               jnc   a260             if (R30 >= TMNVCAL)  {
a236: 3a,4b,27            jb    B2,R4b,a260      if (B2_PDL_ERROR_4b = 0)  {
a239: 3e,a6,24            jb    B6,Ra6,a260      if (B6_VSFMFLG_a6 = 0)  {
a23c: 3f,df,21            jb    B7,Rdf,a260      if (B7_FLG_SFT_IN_df = 0)  {
a23f: 9b,e6,bb,00         cmpb  R0,[Re6+bb]      
a243: d7,1b               jne   a260             if (VSCTR = 0)  {
a245: b3,e8,d4,30         ldb   R30,[Re8+d4]     R30 = NOV_ACT;
a249: c7,e8,d5,30         stb   R30,[Re8+d5]     NOV_ACT_LST = R30;
a24d: 91,01,49            orb   R49,1            B0_FLG_NEW_NOV_49 = 1;
a250: c7,e8,fd,00         stb   R0,[Re8+fd]      TM_NOV_CALC = 0;
a254: b3,e8,d6,30         ldb   R30,[Re8+d6]     R30 = NOVCTR;
a258: 17,30               incb  R30              R30++;
a25a: df,04               je    a260             if (R30 != 0)  {
a25c: c7,e8,d6,30         stb   R30,[Re8+d6]     NOVCTR = R30; } } } } } } } } }
a260: 30,49,3e            jnb   B0,R49,a2a1      if (B0_FLG_NEW_NOV_49 = 1)  {
a263: a3,e8,8c,32         ldw   R32,[Re8+8c]     R32 = NEBART;
a267: 9f,e8,c9,32         divb  R32,[Re8+c9]     yR32 /= [349];
a26b: d5,03               jnv   a270             if (OVF = 1)  {
a26d: b1,ff,32            ldb   R32,ff           R32 = ff; }
a270: 11,33               clrb  R33              R33 = 0;
a272: 01,30               clrw  R30              R30 = 0;
a274: 8f,e8,9c,30         divw  R30,[Re8+9c]     wR30 /= RT_GR_CUR;
a278: d5,03               jnv   a27d             if (OVF = 1)  {
a27a: bd,ff,30            ldsbw R30,ff           swR30 = ff; }
a27d: 31,e0,12            jnb   B1,Re0,a292      if (B1_FLG_4X4L_e0 = 1)  {
a280: a0,30,32            ldw   R32,R30          R32 = R30;
a283: 01,30               clrw  R30              R30 = 0;
a285: 8f,fd,32,01,30      divw  R30,[Rfc+132]    wR30 /= [c1da];
a28a: d5,03               jnv   a28f             if (OVF = 1)  {
a28c: bd,ff,30            ldsbw R30,ff           swR30 = ff; }
a28f: 08,02,30            shrw  R30,2            R30 >>= 2; }
a292: 08,02,30            shrw  R30,2            R30 >>= 2;
a295: 98,00,31            cmpb  R31,R0           
a298: df,03               je    a29d             if (R31 != 0)  {
a29a: b1,ff,30            ldb   R30,ff           R30 = ff; }
a29d: c7,e8,d4,30         stb   R30,[Re8+d4]     NOV_ACT = R30; }
a2a1: 39,de,12            jb    B1,Rde,a2b6      if (FLG_FRST_CM = 0)  {
a2a4: b3,e8,d5,30         ldb   R30,[Re8+d5]     R30 = NOV_ACT_LST;
a2a8: 7b,e8,d4,30         sb2b  R30,[Re8+d4]     R30 -= NOV_ACT;
a2ac: db,02               jc    a2b0             if (R30 < 0)  {
a2ae: 13,30               negb  R30              R30 = -R30; }
a2b0: 9b,e2,17,30         cmpb  R30,[Re2+17]     
a2b4: d1,04               jleu  a2ba             if (R30 <= [c1d5]) goto a2ba; }
a2b6: c7,e8,d6,00         stb   R0,[Re8+d6]      NOVCTR = 0; }
a2ba: 39,e0,2d            jb    B1,Re0,a2ea      if (B1_FLG_4X4L_e0 = 0)  {
a2bd: b3,e8,d6,30         ldb   R30,[Re8+d6]     R30 = NOVCTR;
a2c1: 9b,e2,16,30         cmpb  R30,[Re2+16]     
a2c5: d1,23               jleu  a2ea             if (R30 > NOVCNT)  {
a2c7: 3f,e1,20            jb    B7,Re1,a2ea      if (FLG_FRST_NOV = 0)  {
a2ca: 28,8a               scall a356             Sub_a356 ();
a2cc: 8b,e2,18,30         cmpw  R30,[Re2+18]     
a2d0: d3,18               jnc   a2ea             if (R30 >= RTNVMN)  {
a2d2: 8b,e2,1a,30         cmpw  R30,[Re2+1a]     
a2d6: d9,12               jgtu  a2ea             if (R30 <= RTNVMX)  {
a2d8: c3,ee,ca,30         stw   R30,[Ree+ca]     LTMTBLrc = R30;
a2dc: 91,80,e1            orb   Re1,80           FLG_FRST_NOV = 1;
a2df: b3,ee,84,32         ldb   R32,[Ree+84]     R32 = KAM_BIT_FLAGS;
a2e3: 91,40,32            orb   R32,40           B6_R32 = 1;
a2e6: c7,ee,84,32         stb   R32,[Ree+84]     KAM_BIT_FLAGS = R32; } } } } }
a2ea: b3,e8,d6,30         ldb   R30,[Re8+d6]     R30 = NOVCTR;
a2ee: 9b,e2,16,30         cmpb  R30,[Re2+16]     
a2f2: d1,39               jleu  a32d             if (R30 > NOVCNT)  {
a2f4: 3b,4b,36            jb    B3,R4b,a32d      if (B3_CC_FM_FLG_4b = 0)  {
a2f7: 30,49,33            jnb   B0,R49,a32d      if (B0_FLG_NEW_NOV_49 = 1)  {
a2fa: 31,e0,30            jnb   B1,Re0,a32d      if (B1_FLG_4X4L_e0 = 1)  {
a2fd: b3,ee,84,32         ldb   R32,[Ree+84]     R32 = KAM_BIT_FLAGS;
a301: 36,32,29            jnb   B6,R32,a32d      if (B6_R32 = 1)  {
a304: 28,50               scall a356             Sub_a356 ();
a306: 6b,ee,ca,30         sb2w  R30,[Ree+ca]     R30 -= LTMTBLrc;
a30a: db,02               jc    a30e             if (R30 < 0)  {
a30c: 03,30               negw  R30              R30 = -R30; }
a30e: 11,32               clrb  R32              R32 = 0;
a310: b3,e4,27,32         ldb   R32,[Re4+27]     R32 = [1a7];
a314: 71,bf,32            an2b  R32,bf           B6_R32 = 0;
a317: 8b,fd,36,01,30      cmpw  R30,[Rfc+136]    
a31c: d1,06               jleu  a324             if (R30 > [c1de])  {
a31e: 91,40,32            orb   R32,40           B6_R32 = 1;
a321: 91,04,2f            orb   R2f,4            B2_VIP_flags4 = 1; }
a324: c7,e4,27,32         stb   R32,[Re4+27]     [1a7] = R32;
a328: ef,d3,d7            call  7afe             ?Fault_Filter_Routine? (
a32b: 27                        #arg 1              27,
a32c: 80                        #arg 2              80 ); } } } } }
a32d: a3,ee,ca,30         ldw   R30,[Ree+ca]     R30 = LTMTBLrc;
a331: c3,e8,a0,30         stw   R30,[Re8+a0]     [320] = R30;
a335: 31,e0,1d            jnb   B1,Re0,a355      if (B1_FLG_4X4L_e0 = 1)  {
a338: b3,e4,27,32         ldb   R32,[Re4+27]     R32 = [1a7];
a33c: 3e,32,16            jb    B6,R32,a355      if (B6_R32 = 0)  {
a33f: 6f,e2,1c,30         ml2w  R30,[Re2+1c]     lR30 *= [c1da];
a343: 89,ff,3f,32         cmpw  R32,3fff         
a347: d1,05               jleu  a34e             if (R32 > 3fff)  {
a349: bd,ff,32            ldsbw R32,ff           swR32 = ff;
a34c: 20,03               sjmp  a351             goto a351; }

a34e: 09,02,32            shlw  R32,2            R32 <<= 2;
a351: c3,e8,a0,32         stw   R32,[Re8+a0]     [320] = R32; } }
a355: f0                  ret                    return;

   Sub_a356:
a356: 01,30               clrw  R30              R30 = 0;
a358: 01,32               clrw  R32              R32 = 0;
a35a: b3,e8,d4,31         ldb   R31,[Re8+d4]     R31 = NOV_ACT;
a35e: af,e2,d6,34         ldzbw R34,[Re2+d6]     wR34 = NVBASE;
a362: 8c,34,30            divw  R30,R34          wR30 /= R34;
a365: dd,0b               jv    a372             if (OVF = 0)  {
a367: 89,ff,03,30         cmpw  R30,3ff          
a36b: d9,05               jgtu  a372             if (R30 <= 3ff)  {
a36d: 09,06,30            shlw  R30,6            R30 <<= 6;
a370: 20,03               sjmp  a375             return; } }

a372: bd,ff,30            ldsbw R30,ff           swR30 = ff;
a375: f0                  ret                    return;

   CCC_VALID_COM2:
a376: 37,e1,27            jnb   B7,Re1,a3a0      if (FLG_FRST_NOV = 1)  {
a379: 30,49,24            jnb   B0,R49,a3a0      if (B0_FLG_NEW_NOV_49 = 1)  {
a37c: 39,e0,1c            jb    B1,Re0,a39b      if (B1_FLG_4X4L_e0 = 0)  {
a37f: ef,d4,ff            call  a356             Sub_a356 ();
a382: 6b,ee,ca,30         sb2w  R30,[Ree+ca]     R30 -= LTMTBLrc;
a386: db,02               jc    a38a             if (R30 < 0)  {
a388: 03,30               negw  R30              R30 = -R30; }
a38a: 8b,fd,fc,00,30      cmpw  R30,[Rfc+fc]     
a38f: d1,0a               jleu  a39b             if (R30 > NOV_ERR_BAND)  {
a391: 8b,fd,fe,00,bc      cmpw  Rbc,[Rfc+fe]     
a396: d1,03               jleu  a39b             if (TP_REL > CCE_TPMN)  {
a398: 91,04,2f            orb   R2f,4            B2_VIP_flags4 = 1; } } }
a39b: ef,60,d7            call  7afe             ?Fault_Filter_Routine? (
a39e: 21                        #arg 1              21,
a39f: 80                        #arg 2              80 ); } }
a3a0: 71,f7,4b            an2b  R4b,f7           B3_CC_FM_FLG_4b = 0;
a3a3: b3,ee,9d,42         ldb   R42,[Ree+9d]     R42 = [71d];
a3a7: 31,42,0d            jnb   B1,R42,a3b7      if (B1_R42 = 1)  {
a3aa: b3,ee,c0,42         ldb   R42,[Ree+c0]     R42 = [740];
a3ae: 9b,fe,09,42         cmpb  R42,[Rfe+9]      
a3b2: db,03               jc    a3b7             if (R42 < CC_FM_LVL)  {
a3b4: 91,08,4b            orb   R4b,8            B3_CC_FM_FLG_4b = 1; } }
a3b7: f0                  ret                    return;

   INTRN_TCIL_REPEAT_COM1:
a3b8: a3,e8,f0,30         ldw   R30,[Re8+f0]     R30 = [370];
a3bc: 38,90,05            jb    B0,R90,a3c4      if (B0_ITCS_90 = 0)  {
a3bf: 01,30               clrw  R30              R30 = 0;
a3c1: 71,bf,e0            an2b  Re0,bf           B6_FLG_FRST_TCS_e0 = 0; }
a3c4: 8b,fd,66,01,30      cmpw  R30,[Rfc+166]    
a3c9: d3,09               jnc   a3d4             if (R30 >= TMTCS)  {
a3cb: 3e,e0,06            jb    B6,Re0,a3d4      if (B6_FLG_FRST_TCS_e0 = 0)  {
a3ce: 95,80,e0            xorb  Re0,80           B7_FLG_TCS_e0 ^= 1;
a3d1: 91,40,e0            orb   Re0,40           B6_FLG_FRST_TCS_e0 = 1; } }
a3d4: c3,e8,f0,30         stw   R30,[Re8+f0]     [370] = R30;
a3d8: f0                  ret                    return;

a3d9: 08,04,40,20,80,08,40???   

a3e0: 04                  byte      4

   EPC_OTEMP_TEST_COM2:
a3e1: a3,fc,0a,16         ldw   R16,[Rfc+a]      R16 = TOT_OTEMP;
a3e5: 8b,e8,94,16         cmpw  R16,[Re8+94]     
a3e9: d6,03               jge   a3ee             if (R16 < TOT)  {
a3eb: 91,20,4b            orb   R4b,20           B5_OTEMP_FM_FLG_4b = 1; }
a3ee: 6b,fc,0c,16         sb2w  R16,[Rfc+c]      R16 -= HYS_OTEMP;
a3f2: 8b,e8,94,16         cmpw  R16,[Re8+94]     
a3f6: de,03               jlt   a3fb             if (R16 >= TOT)  {
a3f8: 71,df,4b            an2b  R4b,df           B5_OTEMP_FM_FLG_4b = 0; }
a3fb: 3b,45,1d            jb    B3,R45,a41b      if (STIFLG = 0)  {
a3fe: b3,e8,f8,42         ldb   R42,[Re8+f8]     R42 = [378];
a402: 9b,fc,18,42         cmpb  R42,[Rfc+18]     
a406: d1,13               jleu  a41b             if (R42 > TCIL_TM_DLY)  {
a408: b3,e8,f7,42         ldb   R42,[Re8+f7]     R42 = [377];
a40c: 9b,fc,19,42         cmpb  R42,[Rfc+19]     
a410: d3,18               jnc   a42a             if (R42 < TCIL_TM1) goto a42a;
a412: c7,e8,f7,00         stb   R0,[Re8+f7]      [377] = 0;
a416: 3a,44,09            jb    B2,R44,a422      if (B2_R44 = 1) goto a422;
a419: 20,0c               sjmp  a427             goto a427; } }

a41b: c7,e8,f7,00         stb   R0,[Re8+f7]      [377] = 0;
a41f: 3f,e0,05            jb    B7,Re0,a427      if (B7_FLG_TCS_e0 = 1) goto a427; }
a422: 71,fb,44            an2b  R44,fb           B2_R44 = 0;
a425: 20,03               sjmp  a42a             goto a42a; }

a427: 91,04,44            orb   R44,4            B2_R44 = 1; }
a42a: 3b,45,37            jb    B3,R45,a464      if (STIFLG = 0)  {
a42d: 3f,a5,34            jb    B7,Ra5,a464      if (b7_CRKFLG_a5 = 0)  {
a430: 38,a6,35            jb    B0,Ra6,a468      if (B0_ETV_ERROR_a6 = 1) return;
a433: ad,09,30            ldzbw R30,9            wR30 = 9;
a436: 44,fc,30,16         ad3w  R16,R30,Rfc      R16 = R30 + c0a8;
a43a: 05,16               decw  R16              R16--;
a43c: 15,30               decb  R30              R30--;
a43e: df,24               je    a464             if (R30 != 0)  {
a440: 9b,17,ad,01,00      cmpb  R0,[R16+1ad]     
a445: df,f3               je    a43a             if ([R16+1ad] = 0) goto a43a;
a447: a1,d8,a3,18         ldw   R18,a3d8         R18 = a3d8;
a44b: 64,30,18            ad2w  R18,R30          R18 += R30;
a44e: b2,18,18            ldb   R18,[R18]        R18 = [R18];
a451: 99,03,30            cmpb  R30,3            
a454: d1,07               jleu  a45d             if (R30 > 3)  {
a456: 50,18,4b,32         an3b  R32,R4b,R18      R32 = R4b & R18;
a45a: df,de               je    a43a             if (R32 = 0) goto a43a;
a45c: f0                  ret                    return; }

a45d: 50,18,a6,32         an3b  R32,Ra6,R18      R32 = FMEM_FLAGS & R18;
a461: df,d7               je    a43a             if (R32 = 0) goto a43a;
a463: f0                  ret                    return; } } }

a464: c7,e8,f8,00         stb   R0,[Re8+f8]      [378] = 0; }
a468: f0                  ret                    return;

   Sub_a469:
a469: 71,ef,79            an2b  R79,ef           B4_R79 = 0;
a46c: b3,ee,84,22         ldb   R22,[Ree+84]     R22 = KAM_BIT_FLAGS;
a470: 37,a5,05            jnb   B7,Ra5,a478      if (b7_CRKFLG_a5 = 1)  {          # (CRANK mode)
a473: b0,00,30            ldb   R30,R0           R30 = 0;                          # PRGTMR = 0
a476: 20,0d               sjmp  a485             goto a485; }

a478: 37,29,13            jnb   B7,R29,a48e      if (B7_PURGING_29 = 1)  {         #  PURGING = 1
a47b: b3,f6,39,30         ldb   R30,[Rf6+39]     R30 = FULPRGTM;
a47f: 9b,e6,94,30         cmpb  R30,[Re6+94]     
a483: d9,06               jgtu  a48b             if (R30 <= PRGTMR)  {             # (clip to FULPRGTM as a maximum
a485: c7,e6,94,30         stb   R30,[Re6+94]     PRGTMR = R30;
a489: 20,03               sjmp  a48e             goto a48e; }

a48b: 91,10,79            orb   R79,10           B4_R79 = 1; }
a48e: c7,e6,ba,d4         stb   Rd4,[Re6+ba]     ATMR1_LST = ATMR1;
a492: 3f,a5,02            jb    B7,Ra5,a497      if (b7_CRKFLG_a5 = 0)  {          # (run OR underspeed)  
a495: 20,0d               sjmp  a4a4             goto a4a4; }

a497: 11,d4               clrb  Rd4              ATMR1 = 0;
a499: 71,bf,24            an2b  R24,bf           B6_R24 = 0;
a49c: c7,e8,05,00         stb   R0,[Re8+5]       ATMR2 = 0;
a4a0: 01,d2               clrw  Rd2              NACTMR = 0;
a4a2: 22,37               sjmp  a6db             goto a6db;

a4a4: 37,a8,04            jnb   B7,Ra8,a4ab      if (APT_Closed_Throttle = 1)  {
a4a7: 01,d2               clrw  Rd2              NACTMR = 0;
a4a9: 20,04               sjmp  a4af             goto a4af; }

a4ab: c7,ea,b6,00         stb   R0,[Rea+b6]      CTTMR = 0;
a4af: 9b,f6,51,a9         cmpb  Ra9,[Rf6+51]     
a4b3: d1,25               jleu  a4da             if (MAPPA > LOMAPF)  {
a4b5: 9b,f6,4d,a9         cmpb  Ra9,[Rf6+4d]     
a4b9: db,1f               jc    a4da             if (MAPPA < HIMAPF)  {
a4bb: 3f,a8,1c            jb    B7,Ra8,a4da      if (APT_Closed_Throttle = 0)  {
a4be: 32,a0,19            jnb   B2,Ra0,a4da      if (B2_WRMEGO_a0 = 1)  {
a4c1: 71,fd,a1            an2b  Ra1,fd           B1_Flags_a1 = 0;
a4c4: 91,04,a1            orb   Ra1,4            B2_Flags_a1 = 1;
a4c7: b3,f6,40,38         ldb   R38,[Rf6+40]     R38 = BYMAP;
a4cb: 9b,e4,ca,38         cmpb  R38,[Re4+ca]     
a4cf: d9,0f               jgtu  a4e0             if (R38 > [14a]) goto a4e0;
a4d1: c7,e4,ca,38         stb   R38,[Re4+ca]     [14a] = R38;
a4d5: 71,fb,a1            an2b  Ra1,fb           B2_Flags_a1 = 0;
a4d8: 20,06               sjmp  a4e0             goto a4e0; } } } }

a4da: 91,02,a1            orb   Ra1,2            B1_Flags_a1 = 1;
a4dd: 71,fb,a1            an2b  Ra1,fb           B2_Flags_a1 = 0; }
a4e0: 37,a8,39            jnb   B7,Ra8,a51c      if (APT_Closed_Throttle = 1)  {
a4e3: b3,f6,42,16         ldb   R16,[Rf6+42]     R16 = BYRPM;
a4e7: 9b,e4,6a,16         cmpb  R16,[Re4+6a]     
a4eb: d1,19               jleu  a506             if (R16 > N_BYTE)  {
a4ed: 71,f7,a1            an2b  Ra1,f7           B3_Flags_a1 = 0;
a4f0: 91,10,a1            orb   Ra1,10           B4_Flags_a1 = 1;
a4f3: b3,f6,47,38         ldb   R38,[Rf6+47]     R38 = BYSTM4;
a4f7: 9b,e4,ce,38         cmpb  R38,[Re4+ce]     
a4fb: d9,07               jgtu  a504             if (R38 <= [14e])  {
a4fd: c7,e4,ce,38         stb   R38,[Re4+ce]     [14e] = R38;
a501: 71,ef,a1            an2b  Ra1,ef           B4_Flags_a1 = 0; }
a504: 20,14               sjmp  a51a             goto a51a; }

a506: b3,f6,42,38         ldb   R38,[Rf6+42]     R38 = BYRPM;
a50a: 77,f6,43,38         ad2b  R38,[Rf6+43]     R38 += BYRPMH;
a50e: 9b,e4,6a,38         cmpb  R38,[Re4+6a]     
a512: db,06               jc    a51a             if (R38 < N_BYTE)  {
a514: 91,08,a1            orb   Ra1,8            B3_Flags_a1 = 1;
a517: 71,ef,a1            an2b  Ra1,ef           B4_Flags_a1 = 0; }
a51a: 20,06               sjmp  a522             goto a522; }

a51c: 91,08,a1            orb   Ra1,8            B3_Flags_a1 = 1;
a51f: 71,ef,a1            an2b  Ra1,ef           B4_Flags_a1 = 0;
a522: 3a,a5,04            jb    B2,Ra5,a529      if (B2_APT_a5 = 0)  {
a525: c7,e4,c9,00         stb   R0,[Re4+c9]      [149] = 0; }
a529: 9b,f6,04,b6         cmpb  Rb6,[Rf6+4]      
a52d: da,0a               jle   a539             if (ECT > NUBASE_ALT)  {
a52f: 3e,24,07            jb    B6,R24,a539      if (B6_R24 = 0)  {
a532: 91,40,24            orb   R24,40           B6_R24 = 1;
a535: c7,e8,05,00         stb   R0,[Re8+5]       ATMR2 = 0; } }
a539: 91,40,27            orb   R27,40           B6_R27_OpenLoop? = 1;
a53c: 32,9f,0c            jnb   B2,R9f,a54b      if (B2_OLFLG = 1)  {
a53f: 3d,22,09            jb    B5,R22,a54b      if (B5_R22 = 0)  {
a542: 71,bf,27            an2b  R27,bf           B6_R27_OpenLoop? = 0;
a545: c3,e4,c0,00         stw   R0,[Re4+c0]      TSLEGO = 0;
a549: 20,15               sjmp  a560             goto a560; } }


#TSLEGO - TIME SINCE LAST EGO SWITCH
a54b: 30,9f,05            jnb   B0,R9f,a553      if (SWTFL = 1)  {                 # SWTFL = EGO switch flag; 
                                                                                   # 0 ->  no  EGO  switch,  
                                                                                   # 1  ->  EGO  switch  this background loop.
a54e: 71,df,22            an2b  R22,df           B5_R22 = 0;
a551: 20,0d               sjmp  a560             goto a560; }

a553: a3,e4,c0,38         ldw   R38,[Re4+c0]     R38 = TSLEGO;
a557: 8b,f4,68,38         cmpw  R38,[Rf4+68]     
a55b: d1,03               jleu  a560             if (R38 > LESTM)  {               # TSLEGO > LESTM
a55d: 91,20,22            orb   R22,20           B5_R22 = 1; }
a560: c7,ee,84,22         stb   R22,[Ree+84]     KAM_BIT_FLAGS = R22;
a564: ac,8d,38            ldzbw R38,R8d          wR38 = VSBAR;
a567: ef,7c,a3            call  48e6             UUWFuncLU_48e6 (
a56a: 08,41                     #arg 1              FN900,
a56c: 38,00                     #arg 2              38 );
a56e: a0,38,3a            ldw   R3a,R38          R3a = R38;
a571: b3,f4,33,38         ldb   R38,[Rf4+33]     R38 = MPGRPM;
a575: 77,f4,34,38         ad2b  R38,[Rf4+34]     R38 += MPGRPH;
a579: db,63               jc    a5de             if (R38 <= ff)  {
a57b: 9b,e4,6a,38         cmpb  R38,[Re4+6a]     
a57f: d9,5d               jgtu  a5de             if (R38 <= N_BYTE)  {             # N_BYTE >= MPGRPM + MPGRPH
a581: b3,f4,2c,38         ldb   R38,[Rf4+2c]     R38 = MAPLO;
a585: 77,f4,2d,38         ad2b  R38,[Rf4+2d]     R38 += MAPLOH;
a589: db,53               jc    a5de             if (R38 <= ff)  {
a58b: 98,38,ba            cmpb  Rba,R38          
a58e: d3,4e               jnc   a5de             if (MAP >= R38)  {                # MAP >= MAPLO + MAPLOH
a590: b3,f4,2a,38         ldb   R38,[Rf4+2a]     R38 = MAPAHI;
a594: 7b,f4,2b,38         sb2b  R38,[Rf4+2b]     R38 -= MPAHIH;
a598: d3,44               jnc   a5de             if (R38 >= 0)  {
a59a: 98,38,a9            cmpb  Ra9,R38          
a59d: d9,3f               jgtu  a5de             if (MAPPA <= R38)  {              # MAPPA <= MAPAHI - MPAHIH
a59f: b3,f4,3c,38         ldb   R38,[Rf4+3c]     R38 = MPMNBP;
a5a3: 77,f4,3d,38         ad2b  R38,[Rf4+3d]     R38 += MPNBPH;
a5a7: db,35               jc    a5de             if (R38 <= ff)  {
a5a9: 98,38,bb            cmpb  Rbb,R38          
a5ac: d3,30               jnc   a5de             if (BP >= R38)  {                 # BP >= MPMNBP + MPNBPH
a5ae: b3,f4,31,38         ldb   R38,[Rf4+31]     R38 = MPGNOV;
a5b2: 7b,f4,32,38         sb2b  R38,[Rf4+32]     R38 -= MPNOVH;
a5b6: d3,26               jnc   a5de             if (R38 >= 0)  {
a5b8: 9b,e6,9f,38         cmpb  R38,[Re6+9f]     
a5bc: d3,20               jnc   a5de             if (R38 >= NOVS)  {               # NOVS <= MPGNOV - MPNOVH
a5be: b3,f4,3e,38         ldb   R38,[Rf4+3e]     R38 = VSMPG;
a5c2: 77,f4,3f,38         ad2b  R38,[Rf4+3f]     R38 += VSMPGH;
a5c6: db,05               jc    a5cd             if (R38 <= ff)  {
a5c8: 98,38,8d            cmpb  R8d,R38          
a5cb: db,0c               jc    a5d9             if (VSBAR >= R38) goto a5d9; }    # VSBAR >= VSMPG + VSMPGH
a5cd: 9b,fe,2f,00         cmpb  R0,[Rfe+2f]      
a5d1: df,06               je    a5d9             if (VSTYPE != 0)  {
a5d3: 9b,f4,2f,00         cmpb  R0,[Rf4+2f]      
a5d7: df,05               je    a5de             if (O_8500_SW = 0) goto a5de; } }
a5d9: 91,01,45            orb   R45,1            Rvip_cyl_quit = 1;
a5dc: 20,2f               sjmp  a60d             goto a60d; } } } } } } } } } } }

a5de: b3,e4,6a,38         ldb   R38,[Re4+6a]     R38 = N_BYTE;
a5e2: 9b,f4,33,38         cmpb  R38,[Rf4+33]     
a5e6: d3,22               jnc   a60a             if (R38 >= MPGRPM)  {
a5e8: 9b,f4,2c,ba         cmpb  Rba,[Rf4+2c]     
a5ec: d3,1c               jnc   a60a             if (MAP >= MAPLO)  {
a5ee: 9b,f4,2a,a9         cmpb  Ra9,[Rf4+2a]     
a5f2: d9,16               jgtu  a60a             if (MAPPA <= MAPAHI)  {
a5f4: 9b,f4,3c,bb         cmpb  Rbb,[Rf4+3c]     
a5f8: d3,10               jnc   a60a             if (BP >= MPMNBP)  {
a5fa: b3,e6,9f,38         ldb   R38,[Re6+9f]     R38 = NOVS;
a5fe: 9b,f4,31,38         cmpb  R38,[Rf4+31]     
a602: d9,06               jgtu  a60a             if (R38 <= MPGNOV)  {
a604: 9b,f4,3e,8d         cmpb  R8d,[Rf4+3e]     
a608: db,03               jc    a60d             if (VSBAR >= VSMPG) goto a60d; } } } } }
a60a: 71,fe,45            an2b  R45,fe           Rvip_cyl_quit = 0; }
a60d: 30,45,3e            jnb   B0,R45,a64e      if (Rvip_cyl_quit = 1)  {
a610: 3d,a6,3b            jb    B5,Ra6,a64e      if (B5_CFMFLG_a6 = 0)  {
a613: 3b,a6,38            jb    B3,Ra6,a64e      if (B3_MFMFLG_a6 = 0)  {
a616: 3e,a4,35            jb    B6,Ra4,a64e      if (B6_IDLFLG_a4 = 0)  {
a619: 32,9f,03            jnb   B2,R9f,a61f      if (B2_OLFLG = 1)  {
a61c: 36,25,2f            jnb   B6,R25,a64e      if (B6_MPGFLG_25 = 0) goto a64e; }
a61f: 3a,a5,2c            jb    B2,Ra5,a64e      if (B2_APT_a5 = 0)  {
a622: 9b,f4,36,b6         cmpb  Rb6,[Rf4+36]     
a626: de,26               jlt   a64e             if (ECT >= MPGCTL)  {
a628: 9b,f4,35,b6         cmpb  Rb6,[Rf4+35]     
a62c: d2,20               jgt   a64e             if (ECT <= MPGCTH)  {
a62e: 9b,f4,2e,da         cmpb  Rda,[Rf4+2e]     
a632: db,06               jc    a63a             if (GEAR_CUR < MPGGR)  {
a634: 9b,f4,2f,00         cmpb  R0,[Rf4+2f]      
a638: d7,14               jne   a64e             if (O_8500_SW != 0) goto a64e; }
a63a: 91,10,24            orb   R24,10           B4_R24 = 1;
a63d: 71,f7,24            an2b  R24,f7           B3_R24 = 0;
a640: a3,ea,ac,30         ldw   R30,[Rea+ac]     R30 = [42c];
a644: 88,3a,30            cmpw  R30,R3a          
a647: d1,1c               jleu  a665             if (R30 <= R3a) goto a665;
a649: a0,3a,30            ldw   R30,R3a          R30 = R3a;
a64c: 20,17               sjmp  a665             goto a665; } } } } } } } } }

a64e: 71,ef,24            an2b  R24,ef           B4_R24 = 0;
a651: 91,08,24            orb   R24,8            B3_R24 = 1;
a654: 4b,f4,38,3a,38      sb3w  R38,R3a,[Rf4+38] R38 = R3a - [b47a];
a659: db,02               jc    a65d             if (R38 < 0)  {
a65b: 01,38               clrw  R38              R38 = 0; }
a65d: 88,38,30            cmpw  R30,R38          
a660: d1,03               jleu  a665             if (R30 > R38)  {
a662: c0,30,38            stw   R38,R30          R30 = R38; } }
a665: 88,3a,30            cmpw  R30,R3a          
a668: db,0b               jc    a675             if (R30 < R3a)  {
a66a: 36,25,03            jnb   B6,R25,a670      if (B6_MPGFLG_25 = 1)  {
a66d: 91,02,79            orb   R79,2            B1_MPGTFG_79 = 1; }
a670: 71,bf,25            an2b  R25,bf           B6_MPGFLG_25 = 0;
a673: 20,07               sjmp  a67c             goto a67c; }

a675: 91,40,25            orb   R25,40           B6_MPGFLG_25 = 1;
a678: c3,ea,ac,30         stw   R30,[Rea+ac]     [42c] = R30;

IDLTMR - TIME AT IDLE
a67c: a3,f4,64,38         ldw   R38,[Rf4+64]     R38 = IDLRPM;
a680: 88,38,b4            cmpw  Rb4,R38          
a683: db,05               jc    a68a             if (N_RPM < R38)  {
a685: 91,80,a4            orb   Ra4,80           B7_FLIPFLOP_Q_a4 = 1;
a688: 20,0c               sjmp  a696             goto a696; }

a68a: 67,f4,66,38         ad2w  R38,[Rf4+66]     R38 += IDRPMH;
a68e: 88,38,b4            cmpw  Rb4,R38          
a691: d1,03               jleu  a696             if (N_RPM > R38)  {
a693: 71,7f,a4            an2b  Ra4,7f           B7_FLIPFLOP_Q_a4 = 0; }
a696: 37,a8,03            jnb   B7,Ra8,a69c      if (APT_Closed_Throttle = 1)  {
a699: 3f,a4,05            jb    B7,Ra4,a6a1      if (B7_FLIPFLOP_Q_a4 = 1) goto a6a1; }
a69c: 71,bf,a4            an2b  Ra4,bf           B6_IDLFLG_a4 = 0;
a69f: 20,09               sjmp  a6aa             goto a6aa; }

a6a1: 91,40,a4            orb   Ra4,40           B6_IDLFLG_a4 = 1;
a6a4: 9b,f4,63,d1         cmpb  Rd1,[Rf4+63]     
a6a8: d1,02               jleu  a6ac             if (IDLTMR > OLITD3)  {
a6aa: 11,d1               clrb  Rd1              IDLTMR = 0; }

EGRTMR - EGR ENABLED TIMER
a6ac: 30,28,10            jnb   B0,R28,a6bf      if (B0_EGREN_28 = 1)  {
a6af: b3,fa,32,30         ldb   R30,[Rfa+32]     R30 = EGRTD7;
a6b3: 9b,e4,cb,30         cmpb  R30,[Re4+cb]     
a6b7: db,10               jc    a6c9             if (R30 >= EGRTMR) goto a6c9;
a6b9: c7,e4,cb,30         stb   R30,[Re4+cb]     EGRTMR = R30;                     # Clip at EGRTD7
a6bd: 20,0a               sjmp  a6c9             goto a6c9; }

a6bf: 9b,fa,33,00         cmpb  R0,[Rfa+33]      
a6c3: d7,04               jne   a6c9             if (RAMPSW = 0)  {
a6c5: c7,e4,cb,00         stb   R0,[Re4+cb]      EGRTMR = 0; } }                   # (prepare for next ramp)

LMBTMR - LOW MAP BYPASS TIMER
a6c9: 9b,f6,50,ba         cmpb  Rba,[Rf6+50]     
a6cd: d1,09               jleu  a6d8             if (MAP > LMBMAP)  {
a6cf: c7,e4,cf,00         stb   R0,[Re4+cf]      LMBTMR = 0;
a6d3: 71,f7,a0            an2b  Ra0,f7           B3_Flags_a0 = 0;
a6d6: 20,03               sjmp  a6db             goto a6db; }

a6d8: 91,08,a0            orb   Ra0,8            B3_Flags_a0 = 1;
a6db: 3b,45,04            jb    B3,R45,a6e2      if (STIFLG = 0)  {
a6de: c3,e4,3c,00         stw   R0,[Re4+3c]      TSSTIL_TMR = 0; }

HMUTMR - HIGH MAPPA UPSTREAM AIR TIMER
a6e2: b3,f6,4e,42         ldb   R42,[Rf6+4e]     R42 = HMUMAP;
a6e6: 57,f6,4f,42,30      ad3b  R30,R42,[Rf6+4f] R30 = R42 + HMUMPH;
a6eb: db,0a               jc    a6f7             if (R30 <= ff)  {
a6ed: 98,30,a9            cmpb  Ra9,R30          
a6f0: d3,05               jnc   a6f7             if (MAPPA >= R30)  {              # MAPPA >= HMUMAP + HMUMPH
a6f2: 91,80,24            orb   R24,80           B7_HUMTMR_FLG_24 = 1;
a6f5: 20,0c               sjmp  a703             goto a703; } }

a6f7: 98,42,a9            cmpb  Ra9,R42          
a6fa: db,07               jc    a703             if (MAPPA < R42)  {               # MAPPA < HMUMAP
a6fc: c7,e4,cc,00         stb   R0,[Re4+cc]      HMUTMR = 0;
a700: 71,7f,24            an2b  R24,7f           B7_HUMTMR_FLG_24 = 0; }
a703: 71,fd,24            an2b  R24,fd           B1_R24 = 0;
a706: 71,fe,24            an2b  R24,fe           B0_R24 = 0;

#VOLTMR - LOW VOLTAGE TIMER
a709: b3,f0,05,32         ldb   R32,[Rf0+5]      R32 = LOWVOL;
a70d: 98,32,91            cmpb  R91,R32          
a710: db,05               jc    a717             if (VBAT < R32)  {                # VBAT < LOWVOL
a712: 91,04,45            orb   R45,4            B2_LOWVOLTAGE_Q_45 = 1;
a715: 20,19               sjmp  a730             goto a730; }

a717: 77,f0,06,32         ad2b  R32,[Rf0+6]      R32 += VOLHYS;                    # LOWVOL + VOLHYS
a71b: db,2d               jc    a74a             if (R32 <= ff)  {
a71d: 98,32,91            cmpb  R91,R32          
a720: d3,0e               jnc   a730             if (VBAT >= R32)  {               # VBAT >= LOWVOL + VOLHYS
a722: 71,fb,45            an2b  R45,fb           B2_LOWVOLTAGE_Q_45 = 0;
a725: 8b,f0,0a,d2         cmpw  Rd2,[Rf0+a]      
a729: d3,1f               jnc   a74a             if (NACTMR < CHGTM) goto a74a;
a72b: 91,01,24            orb   R24,1            B0_R24 = 1;
a72e: 20,1a               sjmp  a74a             goto a74a; }

a730: 3f,a5,17            jb    B7,Ra5,a74a      if (b7_CRKFLG_a5 = 0)  {
a733: 37,a8,14            jnb   B7,Ra8,a74a      if (APT_Closed_Throttle = 1)  {
a736: 32,45,11            jnb   B2,R45,a74a      if (B2_LOWVOLTAGE_Q_45 = 1)  {
a739: 91,02,24            orb   R24,2            B1_R24 = 1;
a73c: b3,f0,07,30         ldb   R30,[Rf0+7]      R30 = VOLTCLP;
a740: 9b,e6,73,30         cmpb  R30,[Re6+73]     
a744: db,04               jc    a74a             if (R30 < VOLTMR)  {
a746: c7,e6,73,30         stb   R30,[Re6+73]     VOLTMR = R30; } } } } } }

OSCTMR - OSCMOD DELAY TIMER (0.125 SEC)
 #This timer is used to prevent OSCMOD spark feedback during  manual  transmission shifts.
a74a: a3,e8,40,30         ldw   R30,[Re8+40]     R30 = TPDLBR;
a74e: 8b,fa,1c,30         cmpw  R30,[Rfa+1c]     
a752: d6,04               jge   a758             if (R30 < SHFDLT)  {
a754: c7,e8,36,00         stb   R0,[Re8+36]      OSCTMR = 0; }
a758: a3,e4,bc,30         ldw   R30,[Re4+bc]     R30 = [13c];
a75c: 69,00,f0,30         sb2w  R30,f000         R30 -= f000;
a760: d3,04               jnc   a766             if (R30 >= 0)  {
a762: c3,e4,bc,30         stw   R30,[Re4+bc]     [13c] = R30; }
a766: f0                  ret                    return;

   TIMER_LH:
a767: a1,41,a8,30         ldw   R30,a841         R30 = a841;
a76b: fa                  di                     interrupts OFF;
a76c: ff                  nop                    
a76d: a0,84,14            ldw   R14,R84          R14 = Reftime;
a770: ac,86,16            ldzbw R16,R86          wR16 = ReftimeH;
a773: fb                  ei                     interrupts ON;
a774: a0,16,3a            ldw   R3a,R16          R3a = R16;
a777: 4b,e4,c4,14,38      sb3w  R38,R14,[Re4+c4] R38 = R14 - Loop_time;            # IOTimer delta time since last mSec
a77c: bb,e4,c6,3a         sbbb  R3a,[Re4+c6]     R3a -= [146] - CY;
a780: 0d,07,38            shldw R38,7            lR38 <<= 7;
a783: 8d,73,cb,38         divw  R38,cb73         wR38 /= cb73;                     # *128/52083 = 1 mSec
a787: c3,e4,ba,38         stw   R38,[Re4+ba]     BG_TMR = R38;
a78b: 65,40,00,3a         ad2w  R3a,40           R3a += 40;
a78f: 08,07,3a            shrw  R3a,7            R3a >>= 7;
a792: 48,3a,14,32         sb3w  R32,R14,R3a      R32 = R14 - R3a;
a796: b8,00,16            sbbb  R16,R0           R16 -= CY;
a799: c3,e4,c4,32         stw   R32,[Re4+c4]     Loop_time = R32;
a79d: c7,e4,c6,16         stb   R16,[Re4+c6]     [146] = R16;
a7a1: b1,20,3e            ldb   R3e,20           R3e = 20;
a7a4: af,e4,c7,18         ldzbw R18,[Re4+c7]     wR18 = [147];
a7a8: 64,38,18            ad2w  R18,R38          R18 += R38;
a7ab: 9d,80,18            divb  R18,80           yR18 /= 80;
a7ae: c7,e4,c7,19         stb   R19,[Re4+c7]     [147] = R19;
a7b2: 11,19               clrb  R19              R19 = 0;
a7b4: 98,00,18            cmpb  R18,R0           
a7b7: df,1e               je    a7d7             if (R18 != 0)  {
a7b9: 91,40,3e            orb   R3e,40           B6_R3e = 1;
a7bc: af,e4,c8,1a         ldzbw R1a,[Re4+c8]     wR1a = [148];
a7c0: 74,18,1a            ad2b  R1a,R18          R1a += R18;
a7c3: b4,00,1b            adcb  R1b,R0           R1b += CY;
a7c6: 9d,08,1a            divb  R1a,8            yR1a /= 8;
a7c9: c7,e4,c8,1b         stb   R1b,[Re4+c8]     [148] = R1b;
a7cd: 11,1b               clrb  R1b              R1b = 0;
a7cf: 98,00,1a            cmpb  R1a,R0           
a7d2: df,03               je    a7d7             if (R1a != 0)  {
a7d4: 91,80,3e            orb   R3e,80           B7_R3e = 1; } }                   # set "New second" (when R3e = 0)
a7d7: b2,31,3c            ldb   R3c,[R30++]      R3c = [R30++];                    # OK. start process
a7da: 98,00,3c            cmpb  R3c,R0           
a7dd: df,61               je    a840             if (R3c != 0)  {                  # All zero - return (exit)
a7df: ae,31,32            ldzbw R32,[R30++]      wR32 = [R30++];
a7e2: b2,31,33            ldb   R33,[R30++]      R33 = [R30++];
a7e5: 30,3c,12            jnb   B0,R3c,a7fa      if (B0_R3c = 1)  {
a7e8: b2,31,3d            ldb   R3d,[R30++]      R3d = [R30++];
a7eb: ae,31,34            ldzbw R34,[R30++]      wR34 = [R30++];
a7ee: 72,34,3d            an2b  R3d,[R34]        R3d &= [R34];
a7f1: 33,3c,04            jnb   B3,R3c,a7f8      if (B3_R3c = 1)  {
a7f4: df,04               je    a7fa             if (R3d = 0) goto a7fa;
a7f6: 27,df               sjmp  a7d7             goto a7d7; }

a7f8: df,dd               je    a7d7             if (R3d = 0) goto a7d7; } }
a7fa: 50,3c,3e,00         an3b  R0,R3e,R3c       R0 = R3e & R3c;
a7fe: df,d7               je    a7d7             if ((R3e & R3c) = 0) goto a7d7;
a800: 31,3c,05            jnb   B1,R3c,a808      if (B1_R3c = 1)  {
a803: a2,32,36            ldw   R36,[R32]        R36 = [R32];
a806: 20,03               sjmp  a80b             goto a80b; }

a808: be,32,36            ldsbw R36,[R32]        swR36 = [R32];
a80b: 32,3c,04            jnb   B2,R3c,a812      if (B2_R3c = 1)  {
a80e: 03,36               negw  R36              R36 = -R36;
a810: df,21               je    a833             if (R36 = 0) goto a833; }
a812: 35,3c,05            jnb   B5,R3c,a81a      if (B5_R3c = 1)  {
a815: 64,38,36            ad2w  R36,R38          R36 += R38;
a818: 20,0b               sjmp  a825             goto a825; }

a81a: 36,3c,05            jnb   B6,R3c,a822      if (B6_R3c = 1)  {
a81d: 64,18,36            ad2w  R36,R18          R36 += R18;
a820: 20,03               sjmp  a825             goto a825; }

a822: 64,1a,36            ad2w  R36,R1a          R36 += R1a;
a825: d3,07               jnc   a82e             if (R36 > ffff)  {
a827: 01,36               clrw  R36              R36 = 0;
a829: 3a,3c,07            jb    B2,R3c,a833      if (B2_R3c = 1) goto a833;
a82c: 05,36               decw  R36              R36--; }
a82e: 32,3c,02            jnb   B2,R3c,a833      if (B2_R3c = 1)  {
a831: 03,36               negw  R36              R36 = -R36; } } }
a833: 31,3c,05            jnb   B1,R3c,a83b      if (B1_R3c = 1)  {
a836: c2,32,36            stw   R36,[R32]        [R32] = R36;                      # Save word timer
a839: 27,9c               sjmp  a7d7             goto a7d7; }

a83b: c6,32,36            stb   R36,[R32]        [R32] = R36;                      # Save byte timer
a83e: 27,97               sjmp  a7d7             goto a7d7; }

a840: f0                  ret                    return;

###################################### 
# TIMERS Table 
# 3 or 5 byte entries
# byte  0    = flags word
# byte  2&3 WORD = timer address
# if 5 byte entry - timer controlled by flag(s)
# byte  4    = flag mask - selects control bit(s) in address
# byte  5    = flags address (start/stop) timer|#
# 2X = timer in 1/1024 seconds (~msec)
# 4X = timer in 1/8 seconds
# 8X = timer in seconds
# So
# bit 0 = 0 if short entry (3 or 5 bytes)
# bit 1 = 1 if 16 bit timer else 0 = 8 bit timer
# bit 2 = 0 timer count up vs down
# bit 3 = 0 if flag bit must be set to update timer loc
# bit 4 not used
# bit 5 = 1 update in 1/1024 seconds (~msec)
# bit 6 = update in 1/8 seconds
# bit 7 = update in seconds
# else entry size = 5
# entry size = 2 if bit 0 of first byte = 0
# in follow Table the 15 bit address field is byte flipped for correct word order
######################################
a841: 26,2e,04            timer 26,   42e, 
a844: 26,30,04            timer 26, DFSO_F_TMR, 
a847: 20,16,02            timer 20, MAPTMR, 
a84a: 81,53,01,02,4e      timer 81, APTMR,  B1_4e
a84f: 89,d4,00,80,a5      timer 89, ATMR1, b7_CRKFLG_a5,                           #ATMR1          Time since start (time since exiting CRANK mode) (seconds)
a854: 81,85,03,40,24      timer 81, ATMR2,  B6_24
a859: 89,86,03,40,a5      timer 89, ATMR3, UNDSP,                                  #CTTMR          Time at closed throttle timer (0.125 seconds)
a85e: 83,74,03,04,e0      timer 83, TSFETMR, B2_FLG_FRST_TV_e0, 
a863: 81,d1,00,40,a4      timer 81, IDLTMR, B6_IDLFLG_a4, 
a868: 41,bb,03,10,26      timer 41, RUNUPTMR, RUNUP_FLG, 
a86d: 41,4f,01,08,a0      timer 41, LMBTMR, Flags_a0, 
a872: 23,40,01,40,27      timer 23, TSLEGO, B6_R27_OpenLoop?, 
a877: 23,2c,02,40,4f      timer 23, TSLADV, B6_KNOCK_STRATEGY_4f, 
a87c: 22,fc,02            timer 22,   2fc, 
a87f: 83,2c,04,10,24      timer 83,   42c,  B4_24
a884: 41,7f,01,20,24      timer 41, HLTMR, B5_FLG_LAMRICH_Q_24, 
a889: 87,2c,04,08,24      timer 87,   42c,  B3_24
a88e: 41,36,04,80,a8      timer 41, CTTMR, APT_Closed_Throttle, 
a893: 81,14,02,10,79      timer 81, PRGTMR,  B4_79
a898: 4b,d2,00,80,a8      timer 4b, NACTMR, APT_Closed_Throttle, 
a89d: 83,38,01,01,a5      timer 83, ADPTMR, Adptmr_on, 
a8a2: 20,51,01            timer 20,   151, 
a8a5: 40,c1,01            timer 40, VIP_TIMER_EX, 
a8a8: 22,36,01            timer 22, PUTMR,                                         #PUTMR          Time since CPU power-up (0.001 seconds)
a8ab: 80,cc,01            timer 80, IEVPSV, 
a8ae: 81,d0,01,04,48      timer 81, V_ATMR2, VATMR2_FLG, 
a8b3: 89,37,04,80,a8      timer 89,   437, APT_Closed_Throttle, 
a8b8: 42,be,01            timer 42, MILTMR, 
a8bb: 40,c0,01            timer 40,   1c0, 
a8be: 82,82,01            timer 82, OUTTMR, 
a8c1: 22,42,01            timer 22, TSLPIP, 
a8c4: 20,33,02            timer 20, AEMTMR, 
a8c7: 22,36,02            timer 22,   236, 
a8ca: 80,64,01            timer 80, ISCTMR, 
a8cd: 20,e8,01            timer 20, MULTMR, 
a8d0: 22,96,01            timer 22, A3CTMR, 
a8d3: 81,49,01,04,a5      timer 81,   149, B2_APT_a5, 
a8d8: 40,bc,03            timer 40, SPKTMR, 
a8db: 40,bd,03            timer 40, SETTMR, 
a8de: 22,3c,02            timer 22, TSLIDM, 
a8e1: 40,50,01            timer 40, NDDTIM, 
a8e4: 81,4e,01,10,a1      timer 81,   14e, Flags_a1, 
a8e9: 85,4e,01,08,a1      timer 85,   14e, Flags_a1, 
a8ee: 81,52,01,04,a5      timer 81, WOTTMR, B2_APT_a5,                             #AWOTMR         Time in wide open throttle (seconds)
a8f3: 8d,52,01,04,a5      timer 8d, WOTTMR, B2_APT_a5,                             #AWOTMR         Time in wide open throttle (seconds)
a8f8: 20,84,03            timer 20, TSLMPH, 
a8fb: 81,4b,01,01,28      timer 81, EGRTMR, B0_EGREN_28, 
a900: 81,4a,01,04,a1      timer 81,   14a, Flags_a1, 
a905: 85,4a,01,02,a1      timer 85,   14a, Flags_a1, 
a90a: 23,bc,01,08,45      timer 23, TSSTIL_TMR, STIFLG, 
a90f: 40,c2,01            timer 40,   1c2, 
a912: 81,4c,01,80,24      timer 81, HMUTMR, B7_HUMTMR_FLG_24, 
a917: 22,3c,01            timer 22,   13c, 
a91a: 81,43,04,08,53      timer 81, OPEN_TMR,  B3_53
a91f: 44,7a,03            timer 44, TM_CS_DLY, 
a922: 44,7b,03            timer 44, TM_CS_ENG, 
a925: 26,6c,03            timer 26, TM_SFT_IN, 
a928: 44,82,03            timer 44, TM_SFT_12MN, 
a92b: 24,7f,03            timer 24, TM_SS1_GR2, 
a92e: 26,6e,03            timer 26, TM_DEL_SFT, 
a931: 22,68,03            timer 22, TM_SFT_CCO, 
a934: 41,80,03,08,de      timer 41, TM_UN_CT, FLG_UN_CT, 
a939: 41,81,03,08,a2      timer 41, TM_LK_CONV, B3_FLG_LK_CM_a2, 
a93e: 41,7d,03,08,a2      timer 41, TM_NOV_CALC, B3_FLG_LK_CM_a2, 
a943: 2b,6a,03,08,a2      timer 2b, TM_UNLK_CONV, B3_FLG_LK_CM_a2, 
a948: 44,7c,03            timer 44, TM_LK_DLY, 
a94b: 44,79,03            timer 44,   379, 
a94e: 26,66,03            timer 26, TM_PDL_RES, 
a951: 22,70,03            timer 22,   370, 
a954: 26,72,03            timer 26, TM_4X4L_RES, 
a957: 44,fe,02            timer 44,   2fe, 
a95a: 26,ec,01            timer 26,   1ec, 
a95d: 26,ee,01            timer 26,   1ee, 
a960: 22,f0,01            timer 22,   1f0, 
a963: 40,78,03            timer 40,   378, 
a966: 40,77,03            timer 40,   377, 
a969: 22,64,03            timer 22, TM_TV_SS, 
a96c: 26,38,04            timer 26,   438, 
a96f: 81,f3,02,02,24      timer 81, VOLTMR,  B1_24
a974: 85,f3,02,01,24      timer 85, VOLTMR,  B0_24
a979: 81,18,05,01,52      timer 81,   518, Flags_52, 
a97e: 40,b6,03            timer 40, OSCTMR, 
a981: 40,46,04            timer 40,   446, 
a984: 84,47,04            timer 84, V_LEGOTMR, 
a987: 84,49,04            timer 84, V_EGR_DLYTMR, 
a98a: 40,48,04            timer 40, V_LESTMR, 
a98d: 81,15,02,20,a0      timer 81,   215, Flags_a0, 
a992: 85,15,02,02,a2      timer 85,   215,  B1_a2
a997: 80,28,04            timer 80, V_BOOSPD_TMR, 

a99a: 00                  byte      0

   Sub_a99b:
a99b: 37,4e,07            jnb   B7,R4e,a9a5      if (B7_NEW_PIP = 1)  {
a99e: 71,7f,4e            an2b  R4e,7f           B7_NEW_PIP = 0;
a9a1: c3,e4,c2,00         stw   R0,[Re4+c2]      TSLPIP = 0; }
a9a5: 3e,53,0a            jb    B6,R53,a9b2      if (B6_IDM_BYPASS_53 = 0)  {
a9a8: 34,4e,07            jnb   B4,R4e,a9b2      if (B4_NEW_IDM = 1)  {
a9ab: 71,ef,4e            an2b  R4e,ef           B4_NEW_IDM = 0;
a9ae: c3,e6,bc,00         stw   R0,[Re6+bc]      TSLIDM = 0; } }
a9b2: 36,4e,07            jnb   B6,R4e,a9bc      if (B6_NEW_MAP_4e = 1)  {
a9b5: 71,bf,4e            an2b  R4e,bf           B6_NEW_MAP_4e = 0;
a9b8: c7,e6,96,00         stb   R0,[Re6+96]      MAPTMR = 0; }
a9bc: f0                  ret                    return;

a9bd: ff                  ???   

a9be: 00,c0               word   c000
a9c0: 00,10               word   1000
a9c2: 00,10               word   1000
a9c4: 00,c2               word   c200
a9c6: 00,12               word   1200
a9c8: 00,12               word   1200
a9ca: 06,d0               word   d006
a9cc: 06,c0               word   c006
a9ce: 06,e0               word   e006
a9d0: 09,d0               word   d009
a9d2: 09,c0               word   c009
a9d4: 09,e0               word   e009

   Check_ConsoleDI:
a9d6: fa                  di                     interrupts OFF;
   Check_Console:
a9d7: a3,01,00,0d,14      ldw   R14,[R0+d00]     R14 = [d00];                      # Console status
a9dc: 99,2a,15            cmpb  R15,2a                                             # [RD00]=0x2A=Engineering Console Present
a9df: d7,3b               jne   aa1c             if (R15 = 2a)  {                  # Console Not Present goto aa1c
a9e1: 3c,45,1e            jb    B4,R45,aa02      if (B4_RAMINIT_FLG_45 = 0)  {     # Bit4 of R54 Set 1 at ????. ???? Calls a9d7
a9e4: 38,0a,1b            jb    B0,Ra,aa02       if (B0_HSO_OVF = 0)  {            # HSO PORT CAM or OUTPUT HOLD BUFFER FULL goto aa02
a9e7: 47,01,0e,20,06,72   ad3w  R72,R6,[R0+200e] HSO_time = IO_Timer + [200e];     # add 5D to current IOTime
a9ed: d7,02               jne   a9f1             if (HSO_time = 0)  {
a9ef: 07,72               incw  R72              HSO_time++; }
a9f1: a0,72,0e            ldw   Re,R72           HSI_Time_lo = HSO_time;           # request interrupt (in 5D IOtimes)
a9f4: b1,0f,0d            ldb   Rd,f             HSO_Cmd = f;                      # NO INTERRUPT OUT, SET OUTPUT LOW, OUTPUT INTERRUPT #2
a9f7: c9,02,aa            push  aa02             push(Console_Routine);
a9fa: ad,04,30            ldzbw R30,4            wR30 = 4;
a9fd: cb,31,ca,a9         push  [R30+a9ca]       push([R30+a9ca]);                 # R30=4, a9ca+4 = a9ce, [a9ce]=e006
aa01: f0                  ret                    return; } }

   Console_Routine:
aa02: a3,01,80,0c,14      ldw   R14,[R0+c80]     R14 = [c80];                      # Console Routine, Datalogging patch inserted at 0x
aa07: ad,04,30            ldzbw R30,4            wR30 = 4;
aa0a: a3,31,be,a9,42      ldw   R42,[R30+a9be]   R42 = [R30+a9be];                 # R30=4, a9be+4 = a9d2, [a9c2]=1000
aa0f: c6,42,00            stb   R0,[R42]         [R42] = 0;
aa12: 36,14,07            jnb   B6,R14,aa1c      if (B6_R14 = 1)  {                # Bit 6 of register c80, "ConsoleMode" : B 6
aa15: a3,31,c4,a9,14      ldw   R14,[R30+a9c4]   R14 = [R30+a9c4];                 # R30=4, a9c4+4 = a9c8, [a9c8]=1200
aa1a: 20,04               sjmp  aa20             goto aa20; } }

aa1c: a1,22,20,14         ldw   R14,2022         R14 = 2022;                       # [2022] = 0xb000
aa20: 3c,45,01            jb    B4,R45,aa24      if (B4_RAMINIT_FLG_45 = 0)  {
aa23: fb                  ei                     interrupts ON; }
aa24: a1,f0,00,18         ldw   R18,f0           R18 = f0;
aa28: b3,01,20,20,1a      ldb   R1a,[R0+2020]    R1a = [2020];                     # R1a = 8
aa2d: a2,15,1c            ldw   R1c,[R14++]      R1c = [R14++];
aa30: c2,19,1c            stw   R1c,[R18++]      [R18++] = R1c;
# R1a = 8, R1c = b000, R18 = f0, Rf0 = b000
# R1a = 7, R1c = b43e, R18 = f2, Rf2 = b43e
# R1a = 6, R1c = b442, R18 = f4, Rf4 = b442
# R1a = 5, R1c = b914, R18 = f6, Rf6 = b914
# R1a = 4, R1c = bab0, R18 = f8, Rf8 = bab0
# R1a = 3, R1c = bb7a, R18 = fa, Rfa = bb7a
# R1a = 2, R1c = c0a8, R18 = fc, Rfc = c0a8
# R1a = 1, R1c = cb5a, R18 = fe, Rfe = cb5a
aa33: e0,1a,f7            djnz  R1a,aa2d         R1a--;
                                                 if (R1a != 0) goto aa2d;
aa36: 3c,45,2b            jb    B4,R45,aa64      if (B4_RAMINIT_FLG_45 = 0)  {
aa39: a3,01,00,0d,14      ldw   R14,[R0+d00]     R14 = [d00];
aa3e: 99,3b,15            cmpb  R15,3b           
aa41: d7,03               jne   aa46             if (R15 = 3b)  {
aa43: ef,ba,65            call  1000             1000 (); }
aa46: a1,02,e0,42         ldw   R42,e002         R42 = e002;
aa4a: a2,42,30            ldw   R30,[R42]        R30 = [R42];
aa4d: 02,30               cplw  R30              R30 = ~R30;
aa4f: c2,42,30            stw   R30,[R42]        [R42] = R30;
aa52: 8a,42,30            cmpw  R30,[R42]        
aa55: d7,0d               jne   aa64             if (R30 = [R42])  {
aa57: b3,01,1c,1f,30      ldb   R30,[R0+1f1c]    R30 = [1f1c];
aa5c: 99,f2,30            cmpb  R30,f2           
aa5f: d7,03               jne   aa64             if (R30 = f2)  {
aa61: ef,b8,74            call  1f1c             1f1c (); } } }
aa64: 71,ef,45            an2b  R45,ef           B4_RAMINIT_FLG_45 = 0;            # Original: 71,ef,45     an2b  R45,ef    Disable_isc = 0;
aa67: f0                  ret                    return;

aa68: 00,00               word      0
aa6a: 98,aa               word   aa98                                              # initialise data lists

aa6c: cf,01               struct  SYNCTR     ,       0.06 
aa6e: 9f,04               struct  Flags_9f   ,       0.25 
aa70: a5,40               struct  Flags_a5   ,       4    
aa72: a5,80               struct  Flags_a5   ,       8    
aa74: 4f,01               struct  Flags_4f   ,       0.06 
aa76: a1,40               struct  Flags_a1   ,       4    
aa78: 46,80               struct           46,       8    
aa7a: cb,80               struct           cb,       8    
aa7c: 97,80               struct  LAMBSE1_H  ,       8    
aa7e: b6,1e               struct  ECT        ,       1.88 
aa80: b7,1e               struct  ACT        ,       1.88 
aa82: ba,d8               struct  MAP        ,      13.5  
aa84: cc,28               struct  SAF        ,       2.5  
aa86: a8,ff               struct  ?APT?_a8   ,      15.94 
aa88: 82,01               struct  INJ_PIP_CNT,       0.06 
aa8a: 91,c8               struct  VBAT       ,      12.5                           # 12.5 VOLTS
aa8c: 8a,80               struct  RATCH      ,       8    
aa8e: 8b,3e               struct           8b,       3.88 
aa90: da,02               struct  GEAR_CUR   ,       0.13 
aa92: db,0e               struct  PDL        ,       0.88 
aa94: d8,02               struct  GR_DS      ,       0.13 
aa96: d9,02               struct  GR_CM      ,       0.13 

aa98: 9a,aa               word   aa9a                                              # next data list
aa9a: 00,01               word    100                                              # Addresses + 0x100 for this list
aa9c: de,aa               word   aade                                              # next data list

aa9e: da,80               struct  GEAR_CUR  ,  80
aaa0: db,5c               struct  PDL       ,  5c
aaa2: 00,80               struct           0,  80
aaa4: 01,3e               struct           1,  3e
aaa6: 02,80               struct  LSO_Port  ,  80
aaa8: 03,a2               struct  BIO_Port  ,  a2
aaaa: 35,d8               struct          35,  d8
aaac: 98,99               struct  EFTR      ,  99
aaae: 99,79               struct          99,  79
aab0: e8,ff               struct          e8,  ff
aab2: e9,fe               struct          e9,  fe
aab4: 9c,80               struct          9c,  80
aab6: 9d,3e               struct  TIPRET    ,  3e
aab8: 96,ff               struct  LAMBSE1   ,  ff
aaba: 97,ff               struct  LAMBSE1_H ,  ff
aabc: 2e,c0               struct  Flags_2e  ,  c0
aabe: 2f,5b               struct  VIP_flags4,  5b
aac0: 04,c0               struct  AD_Low    ,  c0
aac2: 05,4c               struct  AD_High   ,  4c
aac4: 14,c0               struct          14,  c0
aac6: 15,4c               struct          15,  4c
aac8: 16,c0               struct          16,  c0
aaca: 17,4c               struct          17,  4c
aacc: 67,7a               struct          67,  7a
aace: 23,96               struct          23,  96
aad0: 25,1b               struct          25,  1b
aad2: b4,80               struct  N_RPM     ,  80
aad4: b5,a2               struct          b5,  a2
aad6: b0,80               struct  TAR       ,  80
aad8: b1,a2               struct          b1,  a2
aada: cd,7f               struct          cd,  7f
aadc: fe,01               struct          fe,   1

aade: e0,aa               word   aae0                                              # next data list
aae0: 00,02               word    200                                              # Addresses + 0x200 for this list
aae2: e8,aa               word   aae8                                              # next data list

aae4: 39,01               struct   39,   1
aae6: 6f,78               struct   6f,  78

aae8: ea,aa               word   aaea                                              # next data list
aaea: 00,03               word    300                                              # Addresses + 0x300 for this list
aaec: 20,ab               word   ab20                                              # next data list

aaee: 4a,80               struct         4a,  80
aaf0: 4c,02               struct         4c,   2
aaf2: 4d,02               struct         4d,   2
aaf4: 4e,02               struct         4e,   2
aaf6: 4f,02               struct  Flags_4f ,   2
aaf8: 58,0e               struct         58,   e
aafa: 59,08               struct         59,   8
aafc: 21,40               struct         21,  40
aafe: 2a,c0               struct         2a,  c0
ab00: 2b,5b               struct  STO_Flags,  5b
ab02: 2c,c0               struct  CODE_    ,  c0
ab04: 2d,5b               struct         2d,  5b
ab06: 32,c0               struct         32,  c0
ab08: 33,5b               struct         33,  5b
ab0a: 5a,01               struct         5a,   1
ab0c: cc,ff               struct  SAF      ,  ff
ab0e: cd,ff               struct         cd,  ff
ab10: d0,01               struct         d0,   1
ab12: 84,fe               struct  Reftime  ,  fe
ab14: c9,80               struct         c9,  80
ab16: 9f,04               struct  Flags_9f ,   4
ab18: 8c,01               struct         8c,   1
ab1a: 8d,20               struct  VSBAR    ,  20
ab1c: dc,a4               struct         dc,  a4
ab1e: dd,06               struct  FLG_dd   ,   6

ab20: 22,ab               word   ab22                                              # next data list
ab22: 00,04               word    400                                              # Addresses + 0x400 for this list
ab24: 28,ab               word   ab28                                              # next data list

ab26: 39,0c               struct   39,   c
ab28: ff,ff               struct   ff,  ff                                         # End of all lists

   KAM_VALIDATION_PROCEDURE:
ab2a: 01,38               clrw  R38              R38 = 0;
ab2c: ad,06,32            ldzbw R32,6            wR32 = 6;                         # ISCKAMn = 0.0 (n=0-5)
ab2f: a1,0a,07,30         ldw   R30,70a          R30 = ISCKAM0;
ab33: 66,31,38            ad2w  R38,[R30++]      R38 += [R30++];                   # Sum all ISCKAMn
ab36: e0,32,fa            djnz  R32,ab33         R32--;
                                                 if (R32 != 0) goto ab33;          # loop for all 6
ab39: 4b,ee,82,38,30      sb3w  R30,R38,[Ree+82] R30 = R38 - ISKSUM;
ab3e: db,02               jc    ab42             if (R30 < 0)  {
ab40: 03,30               negw  R30              R30 = -R30; }
ab42: c3,ee,82,38         stw   R38,[Ree+82]     ISKSUM = R38;
ab46: 89,01,00,30         cmpw  R30,1            
ab4a: d1,03               jleu  ab4f             if (R30 > 1)  {                   # if ISCKAMs are invalid
ab4c: ef,98,90            call  3be7             ReInitialize_ISCKAM (); }
ab4f: ad,6a,30            ldzbw R30,6a           wR30 = 6a;                        # 106 entries
ab52: 01,38               clrw  R38              R38 = 0;
ab54: b3,fe,42,3a         ldb   R3a,[Rfe+42]     R3a = CHKFLG;
ab58: 38,3a,1c            jb    B0,R3a,ab77      if (B0_R3a = 0)  {
ab5b: af,31,4d,07,3a      ldzbw R3a,[R30+74d]    wR3a = [R30+74d];                 # ADAPTIVE FUEL TABLE
ab60: 64,3a,38            ad2w  R38,R3a          R38 += R3a;                       # SUM OF ADAPTIVE FUEL CELLS
ab63: e0,30,f5            djnz  R30,ab5b         R30--;
                                                 if (R30 != 0) goto ab5b;          # loop all KAM entries
ab66: a3,ee,cc,3a         ldw   R3a,[Ree+cc]     R3a = KAM_CHKSUM;
ab6a: 68,38,3a            sb2w  R3a,R38          R3a -= R38;                       # (SUM OF ALL KAM CELLS) - CHKSUM
ab6d: db,02               jc    ab71             if (R3a < 0)  {
ab6f: 03,3a               negw  R3a              R3a = -R3a; }
ab71: 89,01,00,3a         cmpw  R3a,1            
ab75: d1,16               jleu  ab8d             if (R3a <= 1) goto ab8d; }        # DATA IN KAM IS VALID.
ab77: b1,80,3a            ldb   R3a,80           R3a = 80;                         # Default 80h value for initial KAM
ab7a: ad,6a,30            ldzbw R30,6a           wR30 = 6a;                        # 0x6Ah = 106  LTMTBLrc CELLS
ab7d: c7,31,4d,07,3a      stb   R3a,[R30+74d]    [R30+74d] = R3a;                  # ADAPTIVE FUEL TABLE
ab82: e0,30,f8            djnz  R30,ab7d         R30--;
                                                 if (R30 != 0) goto ab7d;
ab85: a1,00,35,38         ldw   R38,3500         R38 = 3500;                       # KAM checksum, 0x3500 = 0x80 x 0x6a = (128 * (10*10+6))
                                                                                   # SET CHKSUM = 13568
ab89: c7,ee,c7,00         stb   R0,[Ree+c7]      KWUCTR = 0; }
ab8d: c3,ee,cc,38         stw   R38,[Ree+cc]     KAM_CHKSUM = R38;
ab91: f0                  ret                    return;

## DataLoggingPatch
ab92 -> ac31 = 0xff  ## fill ## 


ac32: ff                  byte     ff

## Payloads - Datalogging Lists!
ac33 -> afff = 0xff  ## fill ## 


b000: 3e,b4               word   b43e                                              # Register Rf0 
b002: 03                  byte      3
b003: 07                  byte      7            LINK_SW
b004: 01                  byte      1
b005: b0                  byte     b0            LOWVOL
b006: 18                  byte     18            VOLHYS
b007: ff                  byte     ff            VOLTCLP
b008: 96                  byte     96            CHGRPM

b009: ff                  ???   

b00a: 00,00               word      0            CHGTM
b00c: 00,00               word      0            DLHYST
b00e: cd,04               word    4cd            ISCMOD_MAX
b010: 9a,03               word    39a            ISCMOD_MIN
b012: 0a,00               word      a            KDNDT
b014: 80,01               word    180            TC_OVER
b016: b3,00               word     b3            TC_UNDER
b018: 06                  byte      6            ISCMOD_RPM

b019: ff                  ???   

b01a: 9a,09               word    99a            PSIBRM
b01c: 0d,00               word      d            RPMINC
b01e: 66,f6               word   f666            PSIBRN
b020: 8f,0a               word    a8f            ITHBMA
b022: 29,00               word     29            DEBYCP
b024: 00,00               word      0            DASCTL
b026: 71,3d               word   3d71            DASPTK
b028: 00,02               word    200            DELHYS
b02a: 58,02               word    258            RPMCTL
b02c: 80,00               word     80            NDIF
b02e: 50,00               word     50            RPMDED
b030: 40,03               word    340            DELRAT
b032: 01                  byte      1            ISCTM
b033: 08                  byte      8            ACMAP                             # 2 " Hg (engine specific parameter).

b034: 02                  ???   

b035: 01                  byte      1            UPDISC
b036: 05                  byte      5            UPDATM
b037: 0e                  byte      e            MINMPH
b038: 00,80               word   8000            IDCMUL
b03a: 00,00               word      0            IDCOFS
b03c: 20,03               word    320            STALLN
b03e: 01                  byte      1            CRKTIM
b03f: 01                  byte      1            BPCOR_SW

b040: 00                  ???   

b041: 93                  byte     93            CSSMAF
b042: 58,00               word     58            NUBASE
b044: 4e,00               word     4e            DRBASE
b046: 00,00               word      0            idle_rpm_adder_startup
b048: 00,00               word      0            BZZRPM
b04a: 00,00               word      0            DNAC
b04c: 00,08               word    800            DACTM
b04e: 00,00               word      0            DNPOWS
b050: 35,00               word     35            ISCLPD_idle_max_rpm
b052: ff                  byte     ff            ACHPTM
b053: 7f                  byte     7f            ECT_HP
b054: a4,00               word     a4            PSPPM
b056: 2d                  byte     2d            TKDTM
b057: 02                  byte      2            BZZTM
b058: 03                  byte      3            NDDELT
b059: ec                  byte     ec            MINACT
b05a: 32                  byte     32            FMMDSD
b05b: 5d                  byte     5d            DWELLA
b05c: de                  byte     de            DWELLM

b05d: ff                  ???   

b05e: 4c,1d               word   1d4c            DWLMAX
b060: 12,04               word    412            DWLMIN
b062: 1f,05               word    51f            DWLTSW
b064: d8,01               word    1d8            DWL_XS_MIN
b066: 00,80               word   8000            MINDLA
b068: 33,33               word   3333            MINDLB
b06a: ec,11               word   11ec            PACLIM
b06c: f6,28               word   28f6            PACOFF
b06e: 7b,14               word   147b            PACPER
b070: 30,00               word     30            PACSLO
b072: b0                  byte     b0            VBAT_DWELL
b073: b8                  byte     b8            VBAT_DWL_HYS

   FN018B:
b074: ff,ff,00,05         func  65535,  1280
b078: 3c,00,00,05         func     60,  1280
b07c: 14,00,00,03         func     20,   768
b080: 0a,00,00,02         func     10,   512
b084: 03,00,00,01         func      3,   256
b088: 00,00,00,00         func      0,     0

   FN394F:
b08c: 7f,02               func   127,   2
b08e: 64,03               func   100,   3
b090: 23,05               func    35,   5
b092: ec,10               func   -20,  16
b094: 80,10               func  -128,  16
b096: 80,10               func  -128,  16

   FN800:
b098: ff,ff,00,80         func  65535, 32768                                       # FN800(DEBYMA) = Transfer function for the ISC actuator.  # isc_duty_cycle
b09c: 33,26,00,80         func   9779, 32768
b0a0: b4,1e,66,66         func   7860, 26214
b0a4: 15,19,9a,59         func   6421, 22938
b0a8: eb,12,cd,4c         func   4843, 19661
b0ac: d5,0b,00,40         func   3029, 16384
b0b0: ce,06,33,33         func   1742, 13107
b0b4: 4f,03,66,26         func    847,  9830
b0b8: 00,01,9a,19         func    256,  6554
b0bc: 00,00,00,00         func      0,     0

   FN820A:
b0c0: ff,80               func  255, 128                                           # ISC duty cycle multiplier versus VACUUM.
b0c2: 40,80               func   64, 128
b0c4: 20,b3               func   32, 179
b0c6: 00,b3               func    0, 179
b0c8: 00,b3               func    0, 179
b0ca: 00,b3               func    0, 179

   FN825A:
b0cc: 7f,19               func   127,  25
b0ce: 76,19               func   118,  25
b0d0: 6c,00               func   108,   0
b0d2: 50,00               func    80,   0
b0d4: 00,19               func     0,  25
b0d6: f6,32               func   -10,  50
b0d8: 80,32               func  -128,  50
b0da: 80,32               func  -128,  50
b0dc: 80,32               func  -128,  50
b0de: 80,32               func  -128,  50

   FN825B:
b0e0: 7f,00               func   127,   0
b0e2: 80,00               func  -128,   0
b0e4: 80,00               func  -128,   0
b0e6: 80,00               func  -128,   0
b0e8: 80,00               func  -128,   0
b0ea: 80,00               func  -128,   0
b0ec: 80,00               func  -128,   0

   FN826A:
b0ee: 7f,14               func   127,  20
b0f0: 76,0d               func   118,  13
b0f2: 53,0d               func    83,  13
b0f4: 00,26               func     0,  38
b0f6: 80,26               func  -128,  38
b0f8: 80,26               func  -128,  38
b0fa: 80,26               func  -128,  38

   FN839:
b0fc: ff,6d               func  255, 109
b0fe: 00,80               func    0, 128
b100: 00,80               func    0, 128
b102: 00,80               func    0, 128
b104: 00,80               func    0, 128
b106: 00,80               func    0, 128
b108: 00,80               func    0, 128

   FN862:
b10a: ff,44               func  255,  68
b10c: 9c,34               func  156,  52
b10e: 00,34               func    0,  52
b110: 00,34               func    0,  52

   FN875D:
b112: ff,ff,9a,11         func  65535,  4506
b116: 45,00,9a,11         func     69,  4506
b11a: 32,00,91,09         func     50,  2449
b11e: 28,00,e7,06         func     40,  1767
b122: 22,00,d3,05         func     34,  1491
b126: 00,00,00,00         func      0,     0

   FN875N:
b12a: ff,ff,1f,0d         func  65535,  3359
b12e: 57,00,1f,0d         func     87,  3359
b132: 3e,00,81,09         func     62,  2433
b136: 2f,00,3b,07         func     47,  1851
b13a: 25,00,db,05         func     37,  1499
b13e: 00,00,00,00         func      0,     0

   FN879:
b142: ff,ff,b8,02         func  65535,   696                                       # A background driven decrement to the dashpot preposition  airflow register  (DASPOT)  as  a 
                                                                                   function of DASPOT.
b146: 00,20,b8,02         func   8192,   696
b14a: 9a,19,66,02         func   6554,   614
b14e: 66,16,ae,01         func   5734,   430
b152: 00,10,f6,00         func   4096,   246
b156: 00,08,8f,00         func   2048,   143
b15a: 00,00,66,00         func      0,   102

   FN880:
b15e: ff,0d               func  255,  13
b160: 32,00               func   50,   0
b162: 00,00               func    0,   0
b164: 00,00               func    0,   0
b166: 00,00               func    0,   0
b168: 00,00               func    0,   0
b16a: 00,00               func    0,   0

   FN882A:
b16c: ff,ff,00,20         func  65535,  8192
b170: 30,11,00,20         func   4400,  8192
b174: 80,0c,00,1c         func   3200,  7168
b178: c8,00,00,14         func    200,  5120
b17c: 00,00,00,14         func      0,  5120
b180: 00,00,00,14         func      0,  5120
b184: 00,00,00,14         func      0,  5120

   FN885:
b188: ff,ff,48,01         func  65535,   328
b18c: 00,00,48,01         func      0,   328
b190: 00,00,48,01         func      0,   328
b194: 00,00,48,01         func      0,   328
b198: 00,00,48,01         func      0,   328
b19c: 00,00,48,01         func      0,   328

   FN887A:
b1a0: 7f,80               func   127, 128
b1a2: 80,80               func  -128, 128
b1a4: 80,80               func  -128, 128
b1a6: 80,80               func  -128, 128
b1a8: 80,80               func  -128, 128
b1aa: 80,80               func  -128, 128

   FN890:
b1ac: ff,00               func  255,   0
b1ae: 00,00               func    0,   0
b1b0: 00,00               func    0,   0
b1b2: 00,00               func    0,   0

   FN891:
b1b4: ff,80               func  255, 128
b1b6: 00,80               func    0, 128
b1b8: 00,80               func    0, 128
b1ba: 00,80               func    0, 128
b1bc: 00,80               func    0, 128
b1be: 00,80               func    0, 128

   FN1861:
b1c0: c0,66,66,63,50,50,50  table  192, 102, 102,  99,  80,  80,  80
b1c7: b0,73,73,6d,56,50,50  table  176, 115, 115, 109,  86,  80,  80
b1ce: a0,6d,6a,66,50,4d,4d  table  160, 109, 106, 102,  80,  77,  77
b1d5: 60,5a,5a,53,4d,46,46  table   96,  90,  90,  83,  77,  70,  70
b1dc: 40,40,40,40,40,40,40  table   64,  64,  64,  64,  64,  64,  64
b1e3: 40,40,40,40,40,40,40  table   64,  64,  64,  64,  64,  64,  64

   FN703:
b1ea: ff,ff,00,ec         func  65535,  -5120
b1ee: 80,e7,00,ec         func  59264,  -5120
b1f2: c0,df,80,fb         func  57280,  -1152
b1f6: c0,d0,80,09         func  53440,   2432
b1fa: 40,b8,00,17         func  47168,   5888
b1fe: 80,48,80,42         func  18560,  17024
b202: 00,25,80,59         func   9472,  22912
b206: c0,13,00,6f         func   5056,  28416
b20a: 80,0c,00,7f         func   3200,  32512
b20e: 00,00,00,7f         func      0,  32512

   FN703D:
b212: ff,ff,c0,fe         func  65535,   -320
b216: 40,e8,c0,fe         func  59456,   -320
b21a: 00,de,e0,ff         func  56832,    -32
b21e: 80,c6,00,01         func  50816,    256
b222: c0,3b,a8,04         func  15296,   1192
b226: 80,1e,10,06         func   7808,   1552
b22a: c0,11,30,07         func   4544,   1840
b22e: 40,08,e0,08         func   2112,   2272
b232: 80,07,28,09         func   1920,   2344
b236: 80,06,70,09         func   1664,   2416
b23a: 00,00,70,09         func      0,   2416

   FN018A:
b23e: ff,ff,00,07         func  65535,  1792
b242: 56,00,00,07         func     86,  1792
b246: 06,00,00,02         func      6,   512
b24a: 02,00,00,00         func      2,     0
b24e: 00,00,00,00         func      0,     0
b252: 00,00,00,00         func      0,     0
b256: 00,00,00,00         func      0,     0

   FN019A:
b25a: ff,ff,00,07         func  65535,  1792
b25e: d0,07,00,07         func   2000,  1792
b262: c8,00,00,03         func    200,   768
b266: 1e,00,00,00         func     30,     0
b26a: 00,00,00,00         func      0,     0

   FN020C:
b26e: ff,7f,00,06         func   32767,  1536
b272: 80,3e,00,06         func   16000,  1536
b276: 80,f3,00,00         func   -3200,     0
b27a: 00,80,00,00         func  -32768,     0
b27e: 00,80,00,00         func  -32768,     0
b282: 00,80,00,00         func  -32768,     0
b286: 00,80,00,00         func  -32768,     0
b28a: 00,80,00,00         func  -32768,     0

   FN021_MAPOPE_y_load:
b28e: ff,ff,00,09         func  65535,  2304
b292: 7a,00,00,09         func    122,  2304
b296: 73,00,00,08         func    115,  2048
b29a: 26,00,00,02         func     38,   512
b29e: 1a,00,00,00         func     26,     0
b2a2: 00,00,00,00         func      0,     0
b2a6: 00,00,00,00         func      0,     0
b2aa: 00,00,00,00         func      0,     0
b2ae: 00,00,00,00         func      0,     0
b2b2: 00,00,00,00         func      0,     0
b2b6: 00,00,00,00         func      0,     0
b2ba: 00,00,00,00         func      0,     0

   FN022A:
b2be: ff,7f,00,09         func   32767,  2304
b2c2: 80,39,00,09         func   14720,  2304
b2c6: 80,1b,00,05         func    7040,  1280
b2ca: 80,0c,00,02         func    3200,   512
b2ce: 00,05,00,01         func    1280,   256
b2d2: 00,fb,00,00         func   -1280,     0
b2d6: 00,80,00,00         func  -32768,     0
b2da: 00,80,00,00         func  -32768,     0
b2de: 00,80,00,00         func  -32768,     0
b2e2: 00,80,00,00         func  -32768,     0

   FN070B:
b2e6: ff,ff,00,09         func  65535,  2304
b2ea: 50,46,00,09         func  18000,  2304
b2ee: b0,36,00,08         func  14000,  2048
b2f2: 40,1f,00,05         func   8000,  1280
b2f6: a0,0f,00,01         func   4000,   256
b2fa: 00,00,00,00         func      0,     0

   FN070L:
b2fe: ff,ff,00,09         func  65535,  2304
b302: 50,46,00,09         func  18000,  2304
b306: b0,36,00,08         func  14000,  2048
b30a: 40,1f,00,05         func   8000,  1280
b30e: a0,0f,00,01         func   4000,   256
b312: 80,0c,00,00         func   3200,     0
b316: 00,00,00,00         func      0,     0

   FN072A:
b31a: ff,ff,00,07         func  65535,  1792
b31e: 73,00,00,07         func    115,  1792
b322: 1a,00,00,00         func     26,     0
b326: 00,00,00,00         func      0,     0
b32a: 00,00,00,00         func      0,     0
b32e: 00,00,00,00         func      0,     0
b332: 00,00,00,00         func      0,     0

   FN072C:
b336: ff,ff,00,07         func  65535,  1792
b33a: 7a,00,00,07         func    122,  1792
b33e: 5f,00,00,00         func     95,     0
b342: 00,00,00,00         func      0,     0
b346: 00,00,00,00         func      0,     0
b34a: 00,00,00,00         func      0,     0
b34e: 00,00,00,00         func      0,     0

   FN046A:
b352: ff,ff,00,08         func  65535,  2048
b356: b3,00,00,08         func    179,  2048
b35a: 12,00,00,00         func     18,     0
b35e: 00,00,00,00         func      0,     0
b362: 00,00,00,00         func      0,     0

   FN047A:
b366: ff,ff,00,04         func  65535,  1024
b36a: 00,9b,00,04         func  39680,  1024
b36e: 80,25,00,00         func   9600,     0
b372: 00,00,00,00         func      0,     0
b376: 00,00,00,00         func      0,     0

   FN071:
b37a: ff,ff,00,07         func  65535,  1792
b37e: e8,00,00,07         func    232,  1792
b382: 84,00,00,03         func    132,   768
b386: 6c,00,00,02         func    108,   512
b38a: 50,00,00,01         func     80,   256
b38e: 40,00,00,00         func     64,     0
b392: 00,00,00,00         func      0,     0

   FN039:
b396: ff,ff,00,05         func  65535,  1280
b39a: 50,46,00,05         func  18000,  1280
b39e: 80,25,00,04         func   9600,  1024
b3a2: c0,12,00,01         func   4800,   256
b3a6: 10,0e,00,00         func   3600,     0
b3aa: 00,00,00,00         func      0,     0
b3ae: 00,00,00,00         func      0,     0
b3b2: 00,00,00,00         func      0,     0

   FN025:
b3b6: ff,ff,00,07         func  65535,  1792
b3ba: e8,00,00,07         func    232,  1792
b3be: c8,00,00,05         func    200,  1280
b3c2: a8,00,00,04         func    168,  1024
b3c6: 60,00,00,01         func     96,   256
b3ca: 40,00,00,00         func     64,     0
b3ce: 00,00,00,00         func      0,     0

   FN005:
b3d2: ff,7f,00,04         func   32767,  1024
b3d6: 71,00,00,04         func     113,  1024
b3da: 5d,00,00,00         func      93,     0
b3de: 00,80,00,00         func  -32768,     0
b3e2: 00,80,00,00         func  -32768,     0
b3e6: 00,80,00,00         func  -32768,     0

   FN007:
b3ea: ff,ff,00,04         func  65535,  1024
b3ee: 00,20,00,04         func   8192,  1024
b3f2: 00,10,00,00         func   4096,     0
b3f6: 00,00,00,00         func      0,     0
b3fa: 00,00,00,00         func      0,     0

   FN008:
b3fe: ff,ff,00,04         func  65535,  1024
b402: 3c,00,00,04         func     60,  1024
b406: 00,00,00,00         func      0,     0
b40a: 00,00,00,00         func      0,     0
b40e: 00,00,00,00         func      0,     0

   FN023:
b412: ff,ff,00,04         func  65535,  1024
b416: ff,00,00,04         func    255,  1024
b41a: 78,00,00,03         func    120,   768
b41e: 00,00,00,00         func      0,     0
b422: 00,00,00,00         func      0,     0

   FN024:
b426: ff,7f,00,04         func   32767,  1024
b42a: 6e,00,00,04         func     110,  1024
b42e: f6,ff,00,00         func     -10,     0
b432: 00,80,00,00         func  -32768,     0
b436: 00,80,00,00         func  -32768,     0
b43a: 00,80,00,00         func  -32768,     0

b43e: 42,b4               word   b442                                              # Register Rf2 
b440: ff                  byte     ff            DASMPH
b441: c8                  byte     c8            DASMHYST
b442: 14,b9               word   b914                                              # Register Rf4 
b444: 08                  byte      8            IPSIDLY

b445: ff                  ???   

b446: 38,ff               word   ff38            RUNUP_DIFF
b448: 30,f8               word   f830            V_RUNUP_DIFF
b44a: 02                  byte      2            SETLNG_TM

b44b: ff                  ???   

b44c: 00,00               word      0            DPNEU_MUL
b44e: 64,2c               word   2c64            A0
b450: 00,28               word   2800            VCAL
b452: 14                  byte     14            OPCLT3
b453: 2d                  byte     2d            OPCLT2
b454: 5a                  byte     5a            OPCLT1
b455: 00                  byte      0            EGOCL1
b456: 00,00               word      0            TP_HYS_OL
b458: 00,00               word      0            DFSLAM
b45a: 01                  byte      1            PIPNUM
b45b: 28                  byte     28            LMAP
b45c: 04                  byte      4            LOMAPH
b45d: 5a                  byte     5a            ECTSTABL
b45e: 05                  byte      5            ECTSTHYS
b45f: 02                  byte      2            MFARMP
b460: 08                  byte      8            HLDTIM
b461: 73                  byte     73            LAMRICH
b462: 03                  byte      3            LAMRHYS
b463: 80                  byte     80            OLIDRV
b464: 00,01               word    100            OLMCL
b466: 80                  byte     80            OLINEUT
b467: 00                  byte      0            EGO_CNT_OL
b468: 00,80               word   8000            LAMDLT_OL
b46a: ff                  byte     ff            TIME_OL
b46b: 80                  byte     80            JMPMUL
b46c: 6d                  byte     6d            MAPAHI
b46d: 06                  byte      6            MPAHIH
b46e: 60                  byte     60            MAPLO
b46f: 20                  byte     20            MAPLOH
b470: 06                  byte      6            MPGGR
b471: 00                  byte      0            O_8500_SW
b472: 00                  byte      0            MPGLSW
b473: 3c                  byte     3c            MPGNOV
b474: 0a                  byte      a            MPNOVH
b475: 45                  byte     45            MPGRPM
b476: 0d                  byte      d            MPGRPH
b477: 73                  byte     73            MPGCTH
b478: 53                  byte     53            MPGCTL

b479: ff                  ???   

b47a: 02,00               word      2
b47c: f2,02               word    2f2            MPGDEC
b47e: 98                  byte     98            MPMNBP
b47f: 08                  byte      8            MPNBPH
b480: 56                  byte     56            VSMPG
b481: 06                  byte      6            VSMPGH
b482: 01                  byte      1            MPG_CL_SW
b483: ff                  byte     ff            EGO_IDLE
b484: 00,a0               word   a000            LAMMAX
b486: 00,60               word   6000            LAMMIN
b488: 83,00               word     83            MINPW
b48a: 04                  byte      4            PIPOUT
b48b: 04                  byte      4            CRKPIP
b48c: 01                  byte      1            CRKCTR_RESET
b48d: 04                  byte      4            INJOUT
b48e: 02                  byte      2            NUMOUT

b48f: ff                  ???   

b490: 55,55               word   5555

b492: 0f,0f,ff,5a,55,55,5f,5f  ???  

b49a: f0,55               word   55f0            NLMT
b49c: 90,01               word    190            NLMTH
b49e: c0                  byte     c0            VSLIM
b49f: 06                  byte      6            VSLIMH
b4a0: 00                  byte      0            BFULSW
b4a1: 00                  byte      0            T75LSW
b4a2: 00                  byte      0
b4a3: 0d                  byte      d
b4a4: ff                  byte     ff            OLITD1
b4a5: ff                  byte     ff            OLITD3
b4a6: a0,0f               word    fa0            IDLRPM
b4a8: c8,00               word     c8            IDRPMH
b4aa: 00,b4               word   b400            LESTM
b4ac: 40,9c               word   9c40            WOTRPL
b4ae: fc,ff               word   fffc            WOTRPH
b4b0: 00,00               word      0            LAMDLT
b4b2: 80                  byte     80            KFT
b4b3: 00                  byte      0            TFCTM
b4b4: 08                  byte      8            MTEISF
b4b5: 1a                  byte     1a            KFTMPG
b4b6: 01                  byte      1            TFCISW
b4b7: 3c                  byte     3c            MEFTRD
b4b8: 5d                  byte     5d            MEFTRA
b4b9: 00                  byte      0
b4ba: 03,00               word      3            TFCBITS
b4bc: 0d,00               word      d            TFCDED
b4be: 01                  byte      1
b4bf: 00                  byte      0            AISFM
b4c0: 3c                  byte     3c            DFNOVS
b4c1: 00                  byte      0            DFNOVH
b4c2: 4b                  byte     4b            DFSECT
b4c3: 44                  byte     44            DFSO_ECT
b4c4: 00                  byte      0            DFSO_OUT
b4c5: 2c                  byte     2c            DFSRPM
b4c6: 16                  byte     16            DFSRPH
b4c7: 4c                  byte     4c            DFSMAP
b4c8: 20                  byte     20            DFSMPH
b4c9: 02                  byte      2            CTEDSO
b4ca: 02                  byte      2            OUTINJ
b4cb: 28                  byte     28            CIBETA
b4cc: 02                  byte      2            CTDSFO
b4cd: 26                  byte     26            DFSVS
b4ce: 18,00               word     18            DFSTM
b4d0: 06                  byte      6            DFSVSH

b4d1: ff                  ???   

b4d2: 00,00               word      0            TP_AIR_OFF_H
b4d4: 0c,fe               word   fe0c            D_TP_DT_F
b4d6: 00                  byte      0            FRCHIC

b4d7: ff                  ???   

b4d8: 80,3e               word   3e80            PUL_PER_GAL
b4da: 08,00               word      8            DELTA_SPK
b4dc: 66                  byte     66            ENTRY_T

b4dd: ff                  ???   

b4de: 20,00               word     20            FBS_MIN
b4e0: 33,f3               word   f333            FKEXIT_MAX
b4e2: 00,80               word   8000            FKEXIT_MIN
b4e4: 8f,02               word    28f            KSPKDO
b4e6: 8f,02               word    28f            KSPKDU
b4e8: 48,01               word    148            KSPKNO
b4ea: 48,01               word    148            KSPKNU
b4ec: 3f,00               word     3f            SPKCTL
b4ee: 50,00               word     50            SPKIDR
b4f0: 50,00               word     50            SPKINU
b4f2: 60,00               word     60            SPK_RUNUP
b4f4: 10                  byte     10            STTIM

b4f5: ff                  ???   

b4f6: 64,00               word     64            TARMAX
b4f8: 9a,15               word   159a            TCRAMP

   ?FN839?:
b4fa: ff,ff,9a,01         func  65535,   410
b4fe: 00,00,9a,01         func      0,   410
b502: 00,00,9a,01         func      0,   410
b506: 00,00,9a,01         func      0,   410
b50a: 00,00,9a,01         func      0,   410
b50e: 00,00,9a,01         func      0,   410

   FN852:
b512: ff,7f,00,00         func   32767,      0
b516: 00,80,00,00         func  -32768,      0
b51a: 00,80,00,00         func  -32768,      0
b51e: 00,80,00,00         func  -32768,      0
b522: 00,80,00,00         func  -32768,      0
b526: 00,80,00,00         func  -32768,      0

   FN884:
b52a: 7f,5a               func   127,  90
b52c: 5a,53               func    90,  83
b52e: 23,5a               func    35,  90
b530: 0f,7f               func    15, 127
b532: 00,80               func     0, 128
b534: 80,80               func  -128, 128

   FN894:
b536: ff,ff,00,00         func  65535,     0
b53a: 00,00,00,00         func      0,     0
b53e: 00,00,00,00         func      0,     0
b542: 00,00,00,00         func      0,     0
b546: 00,00,00,00         func      0,     0

   FN900:
b54a: ff,ff,0a,00         func  65535,    10
b54e: 00,00,0a,00         func      0,    10
b552: 00,00,0a,00         func      0,    10
b556: 00,00,0a,00         func      0,    10
b55a: 00,00,0a,00         func      0,    10
b55e: 00,00,0a,00         func      0,    10
b562: 00,00,0a,00         func      0,    10

   FN1354:
b566: 0f,12,14,17,1a,1c   table  15,  18,  20,  23,  26,  28
b56c: 0f,12,14,17,1a,1c   table  15,  18,  20,  23,  26,  28
b572: 12,12,14,17,1a,1c   table  18,  18,  20,  23,  26,  28
b578: 14,14,14,17,1a,1c   table  20,  20,  20,  23,  26,  28
b57e: 17,17,17,17,1a,1c   table  23,  23,  23,  23,  26,  28
b584: 1a,1a,1a,1a,1a,1c   table  26,  26,  26,  26,  26,  28
b58a: 1c,1c,1c,1c,1c,1c   table  28,  28,  28,  28,  28,  28
b590: 1f,1f,1f,1f,1f,1f   table  31,  31,  31,  31,  31,  31

   FN1355:
b596: 00,00,00,00,00,00   table    0,    0,    0,    0,    0,    0
b59c: 00,00,f6,f6,f6,00   table    0,    0,  -10,  -10,  -10,    0
b5a2: 00,f6,f6,f6,f6,00   table    0,  -10,  -10,  -10,  -10,    0
b5a8: 00,f6,f6,f6,f6,00   table    0,  -10,  -10,  -10,  -10,    0
b5ae: 00,f6,f6,f6,f6,00   table    0,  -10,  -10,  -10,  -10,    0
b5b4: 00,00,00,00,00,00   table    0,    0,    0,    0,    0,    0
b5ba: 00,00,00,00,00,00   table    0,    0,    0,    0,    0,    0
b5c0: 00,00,00,00,00,00   table    0,    0,    0,    0,    0,    0

   FN301:
b5c6: ff,ff,80,00         func  65535,   128
b5ca: 10,0e,80,00         func   3600,   128
b5ce: b8,0b,7d,00         func   3000,   125
b5d2: 00,00,7d,00         func      0,   125
b5d6: 00,00,7d,00         func      0,   125
b5da: 00,00,7d,00         func      0,   125

   FN303:
b5de: ff,ff,77,00         func  65535,   119
b5e2: 10,27,77,00         func  10000,   119
b5e6: 40,1f,7b,00         func   8000,   123
b5ea: 70,17,7c,00         func   6000,   124
b5ee: a0,0f,80,00         func   4000,   128
b5f2: 00,00,80,00         func      0,   128
b5f6: 00,00,80,00         func      0,   128
b5fa: 00,00,80,00         func      0,   128
b5fe: 00,00,80,00         func      0,   128

   FN310:
b602: ff,80               func  255, 128
b604: 00,80               func    0, 128
b606: 00,80               func    0, 128
b608: 00,80               func    0, 128
b60a: 00,80               func    0, 128
b60c: 00,80               func    0, 128
b60e: 00,80               func    0, 128

   FN311:
b610: ff,ff,00,7d         func  65535, 32000
b614: 10,27,00,7d         func  10000, 32000
b618: 80,25,00,96         func   9600, 38400
b61c: 00,00,00,96         func      0, 38400
b620: 00,00,00,96         func      0, 38400
b624: 00,00,00,96         func      0, 38400
b628: 00,00,00,96         func      0, 38400

   FN325:
b62c: 7f,80               func   127, 128
b62e: 80,80               func  -128, 128
b630: 80,80               func  -128, 128
b632: 80,80               func  -128, 128
b634: 80,80               func  -128, 128
b636: 80,80               func  -128, 128
b638: 80,80               func  -128, 128

   FND_TP_DT_A:
b63a: ff,ff,0c,fe         func  65535,   -500
b63e: 00,00,0c,fe         func      0,   -500
b642: 00,00,0c,fe         func      0,   -500
b646: 00,00,0c,fe         func      0,   -500
b64a: 00,00,0c,fe         func      0,   -500
b64e: 00,00,0c,fe         func      0,   -500
b652: 00,00,0c,fe         func      0,   -500

   FNTP_AIR_OFF:
b656: ff,ff,00,00         func  65535,     0
b65a: 00,00,00,00         func      0,     0
b65e: 00,00,00,00         func      0,     0
b662: 00,00,00,00         func      0,     0
b666: 00,00,00,00         func      0,     0
b66a: 00,00,00,00         func      0,     0
b66e: 00,00,00,00         func      0,     0
b672: 00,00,00,00         func      0,     0
b676: 00,00,00,00         func      0,     0

   FN1362:
b67a: 76,76,7b,80,80,80,80,80,80,80  table  118, 118, 123, 128, 128, 128, 128, 128, 128, 128    
b684: 76,76,7b,80,80,80,80,80,80,80  table  118, 118, 123, 128, 128, 128, 128, 128, 128, 128    
b68e: 76,76,7b,80,80,80,80,80,80,80  table  118, 118, 123, 128, 128, 128, 128, 128, 128, 128    
b698: 76,76,7b,7f,7f,7f,80,80,80,80  table  118, 118, 123, 127, 127, 127, 128, 128, 128, 128    
b6a2: 71,71,78,7d,7d,7d,7d,7d,7d,7d  table  113, 113, 120, 125, 125, 125, 125, 125, 125, 125    
b6ac: 6e,6e,73,78,78,78,78,78,78,78  table  110, 110, 115, 120, 120, 120, 120, 120, 120, 120    
b6b6: 6c,6c,6c,6c,6c,6c,6c,6c,6c,6c  table  108, 108, 108, 108, 108, 108, 108, 108, 108, 108    
b6c0: 6c,6c,6c,6c,6c,6c,6c,6c,6c,6c  table  108, 108, 108, 108, 108, 108, 108, 108, 108, 108    

   FN1361:
b6ca: 3a,33,33,2c,24,20,1a,13,0d,0d  table   58,  51,  51,  44,  36,  32,  26,  19,  13,  13    
b6d4: 36,30,30,29,21,1d,16,10,0a,0a  table   54,  48,  48,  41,  33,  29,  22,  16,  10,  10    
b6de: 33,2d,2d,26,1f,1a,13,0d,07,07  table   51,  45,  45,  38,  31,  26,  19,  13,   7,   7    
b6e8: 2c,25,25,1f,18,12,0c,05,04,04  table   44,  37,  37,  31,  24,  18,  12,   5,   4,   4    
b6f2: 24,1d,1d,17,11,0a,04,02,02,02  table   36,  29,  29,  23,  17,  10,   4,   2,   2,   2    
b6fc: 1c,16,12,0d,09,04,00,00,00,00  table   28,  22,  18,  13,   9,   4,   0,   0,   0,   0    
b706: 14,0d,0a,06,04,00,00,00,00,00  table   20,  13,  10,   6,   4,   0,   0,   0,   0,   0    
b710: 0d,0a,05,01,00,00,00,00,00,00  table   13,  10,   5,   1,   0,   0,   0,   0,   0,   0    

   FN307:
b71a: ff,20               func  255,  32
b71c: 00,20               func    0,  32
b71e: 00,20               func    0,  32
b720: 00,20               func    0,  32
b722: 00,20               func    0,  32
b724: 00,20               func    0,  32
b726: 00,20               func    0,  32

   FN1321:
b728: 2f,2f,17,06,04,03,02,02,02,01  table   47,  47,  23,   6,   4,   3,   2,   2,   2,   1    
b732: 37,37,1b,0d,08,05,04,04,02,02  table   55,  55,  27,  13,   8,   5,   4,   4,   2,   2    
b73c: 47,47,23,19,13,0b,0a,05,04,04  table   71,  71,  35,  25,  19,  11,  10,   5,   4,   4    
b746: 56,56,2b,1e,18,0d,0a,06,05,05  table   86,  86,  43,  30,  24,  13,  10,   6,   5,   5    
b750: 6f,6f,38,26,1c,10,0c,07,06,06  table  111, 111,  56,  38,  28,  16,  12,   7,   6,   6    
b75a: 8c,8c,46,2f,23,13,0e,09,08,08  table  140, 140,  70,  47,  35,  19,  14,   9,   8,   8    
b764: 8c,8c,46,2f,23,18,12,0b,0b,0b  table  140, 140,  70,  47,  35,  24,  18,  11,  11,  11    
b76e: 8c,8c,46,2f,23,23,1a,10,10,10  table  140, 140,  70,  47,  35,  35,  26,  16,  16,  16    

   FN1322:
b778: 02,02,02,02,04,06,06,05,06,06  table    2,   2,   2,   2,   4,   6,   6,   5,   6,   6    
b782: 02,02,02,02,04,06,06,06,06,06  table    2,   2,   2,   2,   4,   6,   6,   6,   6,   6    
b78c: 02,02,02,02,04,05,06,06,06,06  table    2,   2,   2,   2,   4,   5,   6,   6,   6,   6    
b796: 02,02,02,02,04,05,06,06,06,06  table    2,   2,   2,   2,   4,   5,   6,   6,   6,   6    
b7a0: 02,02,02,02,04,05,06,06,06,06  table    2,   2,   2,   2,   4,   5,   6,   6,   6,   6    
b7aa: 02,02,02,02,04,05,06,06,06,06  table    2,   2,   2,   2,   4,   5,   6,   6,   6,   6    
b7b4: 02,02,02,02,04,05,06,06,06,06  table    2,   2,   2,   2,   4,   5,   6,   6,   6,   6    
b7be: 02,02,02,02,04,05,06,06,06,06  table    2,   2,   2,   2,   4,   5,   6,   6,   6,   6    

   FN1328:
b7c8: 05,05,04,04,04,03,03,01,01,01  table     5,    5,    4,    4,    4,    3,    3,    1,    1,    1    
b7d2: 05,05,04,04,04,03,03,01,01,01  table     5,    5,    4,    4,    4,    3,    3,    1,    1,    1    
b7dc: 05,05,04,04,03,03,03,01,01,01  table     5,    5,    4,    4,    3,    3,    3,    1,    1,    1    
b7e6: 05,05,04,04,03,03,03,01,01,00  table     5,    5,    4,    4,    3,    3,    3,    1,    1,    0    
b7f0: 04,04,03,03,03,03,01,01,00,00  table     4,    4,    3,    3,    3,    3,    1,    1,    0,    0    
b7fa: 04,03,03,03,03,03,01,00,00,00  table     4,    3,    3,    3,    3,    3,    1,    0,    0,    0    
b804: 03,03,03,03,03,01,00,00,00,00  table     3,    3,    3,    3,    3,    1,    0,    0,    0,    0    
b80e: 01,01,01,01,01,00,00,00,00,00  table     1,    1,    1,    1,    1,    0,    0,    0,    0,    0    

   FN1343:
b818: 27,20,20,18,14,14   table  39,  32,  32,  24,  20,  20
b81e: 27,20,20,18,14,14   table  39,  32,  32,  24,  20,  20
b824: 20,20,20,18,14,14   table  32,  32,  32,  24,  20,  20
b82a: 20,20,20,18,14,14   table  32,  32,  32,  24,  20,  20
b830: 20,20,18,14,14,14   table  32,  32,  24,  20,  20,  20
b836: 20,20,18,14,14,14   table  32,  32,  24,  20,  20,  20
b83c: 18,18,18,14,14,14   table  24,  24,  24,  20,  20,  20
b842: 18,18,18,14,14,14   table  24,  24,  24,  20,  20,  20

   FN222A:
b848: ff,ff,33,00         func  65535,    51
b84c: 00,00,33,00         func      0,    51
b850: 00,00,33,00         func      0,    51
b854: 00,00,33,00         func      0,    51
b858: 00,00,33,00         func      0,    51
b85c: 00,00,33,00         func      0,    51

   FN222F:
b860: ff,ff,33,00         func  65535,    51
b864: 00,00,33,00         func      0,    51
b868: 00,00,33,00         func      0,    51
b86c: 00,00,33,00         func      0,    51
b870: 00,00,33,00         func      0,    51
b874: 00,00,33,00         func      0,    51

   FN1348:
b878: 00,00,00,00,00      table   0,   0,   0,   0,   0
b87d: 00,00,00,00,00      table   0,   0,   0,   0,   0
b882: 00,00,00,00,00      table   0,   0,   0,   0,   0
b887: 00,00,00,00,00      table   0,   0,   0,   0,   0
b88c: 00,00,00,00,00      table   0,   0,   0,   0,   0

   FN1349:
b891: 00,00,04,07,0a      table   0,   0,   4,   7,  10
b896: 00,00,04,07,0a      table   0,   0,   4,   7,  10
b89b: 04,04,04,07,0a      table   4,   4,   4,   7,  10
b8a0: 07,07,07,07,0a      table   7,   7,   7,   7,  10
b8a5: 0a,0a,0a,0a,0a      table  10,  10,  10,  10,  10

   FN1350:
b8aa: 40,40,30,20,20      table  64,  64,  48,  32,  32
b8af: 40,40,30,26,26      table  64,  64,  48,  38,  38
b8b4: 40,40,30,20,20      table  64,  64,  48,  32,  32
b8b9: 40,40,26,20,1a      table  64,  64,  38,  32,  26
b8be: 40,40,26,20,1a      table  64,  64,  38,  32,  26

   FN1360:
b8c3: 80,80,80,80,80,80,80,80,80,80  table  128, 128, 128, 128, 128, 128, 128, 128, 128, 128    
b8cd: 80,80,80,80,80,80,76,72,72,72  table  128, 128, 128, 128, 128, 128, 118, 114, 114, 114    
b8d7: 80,80,80,80,80,7b,76,72,72,72  table  128, 128, 128, 128, 128, 123, 118, 114, 114, 114    
b8e1: 80,80,80,80,80,7b,76,6e,6e,6e  table  128, 128, 128, 128, 128, 123, 118, 110, 110, 110    
b8eb: 80,80,80,80,80,76,6e,6e,6e,6e  table  128, 128, 128, 128, 128, 118, 110, 110, 110, 110    
b8f5: 76,76,76,76,76,6e,6e,6e,6e,6e  table  118, 118, 118, 118, 118, 110, 110, 110, 110, 110    
b8ff: 6e,6e,6e,6e,6e,6e,6e,6e,6e,6e  table  110, 110, 110, 110, 110, 110, 110, 110, 110, 110    
b909: 6e,6e,6e,6e,6e,6e,6e,6e,6e,6e  table  110, 110, 110, 110, 110, 110, 110, 110, 110, 110    

b913: ff                  ???   

b914: b0,ba               word   bab0                                              # Register Rf6 
b916: 4b                  byte     4b            CTHIGH
b917: 1e                  byte     1e            CTLOW
b918: 07                  byte      7            NUBASE_ALT
b919: 08                  byte      8            ENGCYL
b91a: 16,04               word    416            SPKSWH
b91c: 16,04               word    416            SPKSWL
b91e: 33,33               word   3333            MHPFD                             # If 8-cyl & Signature PIP duty cycle <= 35%, then set MHPFD = .20
b920: 20,4e               word   4e20            TRSRPM
b922: 90,01               word    190            TRSRPH
b924: 02                  byte      2            DFMIN0
b925: 02                  byte      2            DFMIN1
b926: 80,03               word    380            TOTMIN
b928: c0,e9               word   e9c0            TOTMAX
b92a: 39,8b               word   8b39            BASEMD
b92c: 00,80               word   8000            KVEFF
b92e: 2c,b3               word   b32c            KSF
b930: 00,02               word    200            DELTA
b932: 40,01               word    140            HYST2
b934: 00,01               word    100            HYSTS
b936: 00,96               word   9600            THBP2
b938: 5a                  byte     5a            ECTBP
b939: 02                  byte      2            SSMAP

b93a: 00,06               ???   

b93c: 0a,ff               word   ff0a            TKYON4
b93e: 33,00               word     33            TKYON1
b940: 71,00               word     71            TKYON2
b942: 0a,02               word    20a            TKYON3
b944: 76,ff               word   ff76            PURECT1
b946: 27,00               word     27            PRG_DEC
b948: 04                  byte      4            PURG_ADP_SF
b949: 58                  byte     58            PURECT
b94a: 08,00               word      8            EVTDOT
b94c: 01                  byte      1            PURGSW
b94d: 3c                  byte     3c            FULPRGTM
b94e: 66,46               word   4666            FMMISC
b950: 3c                  byte     3c            ACTFMM
b951: 5f                  byte     5f            ECTFMM
b952: b9                  byte     b9            FMECNT
b953: 98                  byte     98            MAPFMM
b954: 01                  byte      1            BYMAP
b955: 00                  byte      0            BYPWOT
b956: 0d                  byte      d            BYRPM
b957: 02                  byte      2            BYRPMH
b958: 00                  byte      0            BYSTM1
b959: 00                  byte      0            BYSTM2
b95a: 00                  byte      0            BYSTM3
b95b: b3                  byte     b3            BYSTM4
b95c: 88                  byte     88            BYSTM8
b95d: 01                  byte      1            CHKASW
b95e: 6a                  byte     6a            CTBYS
b95f: 03                  byte      3            CTBYSH
b960: 01                  byte      1            DSFTSW
b961: 8d                  byte     8d            HIMAPF
b962: 80                  byte     80            HMUMAP
b963: 06                  byte      6            HMUMPH
b964: 50                  byte     50            LMBMAP
b965: 5a                  byte     5a            LOMAPF
b966: 01                  byte      1            SW_MPD
b967: 00                  byte      0            T70LSW
b968: 00                  byte      0            UPSMAP=0
b969: 14                  byte     14            UPSTM1
b96a: 2d                  byte     2d            UPSTM2
b96b: 5a                  byte     5a            UPSTM3
b96c: 14                  byte     14            UPSTM4
b96d: 2d                  byte     2d            UPSTM5
b96e: 5a                  byte     5a            UPSTM6
b96f: 00                  byte      0            UPSWOT=0
b970: 10                  byte     10            AEDLMP
b971: 96                  byte     96            MAXAET
b972: 00,05               word    500            SMTPDL
b974: 96                  byte     96            MAXTTM

   FN305:
b975: 7f,8c               func   127, 140
b977: 28,79               func    40, 121
b979: ec,6b               func   -20, 107
b97b: 80,6b               func  -128, 107
b97d: 80,6b               func  -128, 107

   FN326:
b97f: 7f,7d               func   127, 125
b981: 62,80               func    98, 128
b983: 12,80               func    18, 128
b985: ec,9a               func   -20, 154
b987: 80,9a               func  -128, 154

   FN367:
b989: ff,24               func  255,  36
b98b: e0,24               func  224,  36
b98d: d0,28               func  208,  40
b98f: c0,33               func  192,  51
b991: 60,9d               func   96, 157
b993: 00,9d               func    0, 157
b995: 00,9d               func    0, 157
b997: 00,9d               func    0, 157
b999: 00,9d               func    0, 157

   FN372:
b99b: ff,7b               func  255, 123
b99d: cd,7b               func  205, 123
b99f: 00,44               func    0,  68

   FN1320:
b9a1: 80,85,85,88,8d,92,97,9c,a6,a1  table  128, 133, 133, 136, 141, 146, 151, 156, 166, 161    
b9ab: 88,8f,92,9a,9f,a1,a9,b3,bd,a6  table  136, 143, 146, 154, 159, 161, 169, 179, 189, 166    
b9b5: 97,9f,a6,a1,b1,b3,bd,c5,c5,ac  table  151, 159, 166, 161, 177, 179, 189, 197, 197, 172    
b9bf: a6,b3,b1,b1,b8,bd,ca,d7,d2,bb  table  166, 179, 177, 177, 184, 189, 202, 215, 210, 187    
b9c9: a1,b3,bb,bd,c3,ca,d2,dc,da,c8  table  161, 179, 187, 189, 195, 202, 210, 220, 218, 200    
b9d3: a6,bb,c3,c3,c8,d2,e4,e1,e1,c8  table  166, 187, 195, 195, 200, 210, 228, 225, 225, 200    
b9dd: ae,bb,c5,ca,cf,df,ec,ec,e4,cd  table  174, 187, 197, 202, 207, 223, 236, 236, 228, 205    
b9e7: bb,c5,cf,d2,dc,e6,e4,e6,e6,d7  table  187, 197, 207, 210, 220, 230, 228, 230, 230, 215    
b9f1: c0,ca,cf,d2,d4,da,e6,e6,e6,da  table  192, 202, 207, 210, 212, 218, 230, 230, 230, 218    
b9fb: c5,cd,cd,d2,d7,dc,e6,ec,e6,dc  table  197, 205, 205, 210, 215, 220, 230, 236, 230, 220    

ba05: ff                  ???   

   FN069A:
ba06: ff,ff,c0,ff         func  65535, 65472
ba0a: a4,00,c0,ff         func    164, 65472
ba0e: a4,00,00,64         func    164, 25600
ba12: 8d,00,00,64         func    141, 25600
ba16: 23,00,80,25         func     35,  9600
ba1a: 00,00,80,25         func      0,  9600

   FN1033:
ba1e: 08,00,00,00,00      table   8,   0,   0,   0,   0
ba23: 1f,00,03,05,01      table  31,   0,   3,   5,   1
ba28: 29,05,03,05,03      table  41,   5,   3,   5,   3
ba2d: 38,0f,06,06,03      table  56,  15,   6,   6,   3
ba32: 40,12,0a,07,05      table  64,  18,  10,   7,   5
ba37: 43,1a,10,0b,07      table  67,  26,  16,  11,   7
ba3c: 43,1a,11,0b,08      table  67,  26,  17,  11,   8
ba41: 43,1a,11,0b,0a      table  67,  26,  17,  11,  10
ba46: 43,1a,11,0b,0b      table  67,  26,  17,  11,  11

   FN600:
ba4b: ff,80               func  255, 128
ba4d: 3c,80               func   60, 128
ba4f: 2d,3a               func   45,  58
ba51: 1e,13               func   30,  19
ba53: 0f,06               func   15,   6
ba55: 00,00               func    0,   0

ba57: ff                  ???   

   FN605A:
ba58: ff,ff,80,00         func  65535,   128
ba5c: 00,18,80,00         func   6144,   128
ba60: 00,14,60,00         func   5120,    96
ba64: 66,0e,40,00         func   3686,    64
ba68: 00,00,00,00         func      0,     0
ba6c: 00,00,00,00         func      0,     0

   FN090:
ba70: ff,ff,c0,ff         func  65535, 65472
ba74: ff,00,c0,ff         func    255, 65472
ba78: f8,00,00,b9         func    248, 47360
ba7c: e8,00,80,70         func    232, 28800
ba80: c0,00,80,3e         func    192, 16000
ba84: 70,00,00,00         func    112,     0
ba88: 00,00,00,00         func      0,     0

   FN095:
ba8c: ff,ff,f8,00         func  65535,   248
ba90: 00,b9,f8,00         func  47360,   248
ba94: 80,70,e8,00         func  28800,   232
ba98: 00,41,c8,00         func  16640,   200
ba9c: 80,20,9c,00         func   8320,   156
baa0: 00,0f,80,00         func   3840,   128
baa4: 80,07,70,00         func   1920,   112
baa8: 00,00,70,00         func      0,   112
baac: 00,00,70,00         func      0,   112

bab0: 7a,bb               ???                                                      # Register Rf8 

bab2: 00,02               word    200            TCBPA
bab4: 00,02               word    200            TCFBS
bab6: 11,00               word     11            TCAEMP
bab8: 71,01               word    171            TCAETP
baba: 48,02               word    248            TCBP
babc: ae,04               word    4ae            TCDASD
babe: d7,07               word    7d7            TCDASU
bac0: 00,08               word    800            TCDESN
bac2: cd,00               word     cd            TCDLOP
bac4: cd,04               word    4cd            TCECT
bac6: cd,00               word     cd            TCEACT
bac8: 00,08               word    800            TCEGR
baca: 71,01               word    171            TCMBAR
bacc: b8,06               word    6b8            TC
bace: 9a,00               word     9a            TCNDT_ISC
bad0: 71,01               word    171            TCTAR
bad2: 00,08               word    800            TCTP
bad4: 48,02               word    248            TCTPT
bad6: cd,04               word    4cd            TCTOT
bad8: 85,00               word     85            TCVBAT
bada: 29,00               word     29            TCVS
badc: 48,01               word    148            SSFCTR
bade: 8f,02               word    28f            SKSSLC
bae0: 00,20               word   2000            FKSKAY
bae2: 00,a0               word   a000            SIGKLL
bae4: 55,d5               word   d555            SIGKLU

   FN500:
bae6: ff,ff,00,70         func  65535, 28672
baea: 40,d0,00,70         func  53312, 28672
baee: 00,00,00,10         func      0,  4096
baf2: 00,00,00,10         func      0,  4096

   FN501:
baf6: ff,70               func  255, 112
baf8: 80,70               func  128, 112
bafa: 00,10               func    0,  16
bafc: 00,10               func    0,  16

   FN051:
bafe: 7f,50               func   127,  80
bb00: 6a,50               func   106,  80
bb02: 67,40               func   103,  64
bb04: 60,30               func    96,  48
bb06: 32,20               func    50,  32
bb08: 19,20               func    25,  32
bb0a: 00,00               func     0,   0
bb0c: 80,00               func  -128,   0

   FN052:
bb0e: 7f,50               func   127,  80
bb10: 64,50               func   100,  80
bb12: 58,40               func    88,  64
bb14: 50,30               func    80,  48
bb16: 46,20               func    70,  32
bb18: f6,00               func   -10,   0
bb1a: 80,00               func  -128,   0
bb1c: 80,00               func  -128,   0

   FN182:
bb1e: ff,7f,04,00         func   32767,      4
bb22: 00,80,04,00         func  -32768,      4
bb26: 00,80,04,00         func  -32768,      4
bb2a: 00,80,04,00         func  -32768,      4
bb2e: 00,80,04,00         func  -32768,      4
bb32: 00,80,04,00         func  -32768,      4
bb36: 00,80,04,00         func  -32768,      4
bb3a: 00,80,04,00         func  -32768,      4

   FN183:
bb3e: ff,80               func  255, 128
bb40: 00,80               func    0, 128
bb42: 00,80               func    0, 128
bb44: 00,80               func    0, 128
bb46: 00,80               func    0, 128

   FN1150:
bb48: 20,26,30,40,40,40   table   32,   38,   48,   64,   64,   64
bb4e: 23,2a,33,40,40,40   table   35,   42,   51,   64,   64,   64
bb54: 2a,30,3a,40,46,53   table   42,   48,   58,   64,   70,   83
bb5a: 3a,3d,40,43,60,6a   table   58,   61,   64,   67,   96,  106
bb60: 40,40,40,5d,6a,6a   table   64,   64,   64,   93,  106,  106
bb66: 40,40,40,70,73,76   table   64,   64,   64,  112,  115,  118

   FN730:
bb6c: ff,7f               func  255,  127
bb6e: 8d,0a               func  141,   10
bb70: 80,00               func  128,    0
bb72: 73,fc               func  115,   -4
bb74: 69,fd               func  105,   -3
bb76: 61,00               func   97,    0
bb78: 00,00               func    0,    0

bb7a: a8,c0               word   c0a8                                              # Register Rfa
bb7c: 35                  byte     35            CSHIGH
bb7d: 1e                  byte     1e            CSLOW
bb7e: 37                  byte     37            CSSPRK
bb7f: 3a                  byte     3a            CSSTIM
bb80: 00                  byte      0            DFTRPM
bb81: 00                  byte      0            DFTRPH
bb82: 00,00               word      0            KS1
bb84: 20                  byte     20            FRCCTM
bb85: 00                  byte      0            SPLCLP
bb86: bc                  byte     bc            SPUCLP

bb87: ff                  ???   

bb88: 80,0c               word    c80            TPOBP2
bb8a: 80,02               word    280            TPOH2
bb8c: 40,06               word    640            TPDLMX
bb8e: 00,02               word    200            TCNDT_SPK
bb90: 00,02               word    200            TCTPDL
bb92: 00                  byte      0            VSOMAX
bb93: 04                  byte      4            VSOMXH
bb94: 80                  byte     80            Y

bb95: ff                  ???   

bb96: 80,da               word   da80            SHFDLT
bb98: 00                  byte      0            OSCDLY
bb99: 0f                  byte      f            EGRTD1
bb9a: 3c                  byte     3c            EGRTD2
bb9b: b4                  byte     b4            EGRTD3
bb9c: 0f                  byte      f            EGRTD4
bb9d: 3c                  byte     3c            EGRTD5
bb9e: b4                  byte     b4            EGRTD6
bb9f: 00                  byte      0            KPEI
bba0: ff                  byte     ff            MAP_WOT_EGRC
bba1: ff                  byte     ff            MAP_WOT_EGRS
bba2: 80                  byte     80            X

bba3: ff                  ???   

bba4: ec,31               word   31ec            DCOFF
bba6: 00,64               word   6400            EGRTB1
bba8: 40,06               word    640            EGTB1H
bbaa: 00,00               word      0            EGRTD8
bbac: 01                  byte      1            EGRTD7
bbad: 01                  byte      1            RAMPSW
bbae: 00,04               word    400            EGRDED
bbb0: 80,02               word    280            KACRAT
bbb2: 00                  byte      0            RETLIM
bbb3: ec                  byte     ec            TIPMAX
bbb4: 01                  byte      1            TIPINC
bbb5: 60                  byte     60            TIPMAP
bbb6: 18                  byte     18            TIPHYS

bbb7: ff                  ???   

bbb8: 80,08               word    880            RPMMIN
bbba: 20                  byte     20            LODNOK
bbbb: 7f                  byte     7f            ECTNOK
bbbc: 40,1f               word   1f40            NTIP
bbbe: 00,00               word      0            WOPEN
bbc0: 00,00               word      0            WINLEN
bbc2: 80,3e               word   3e80            RPMCNL
bbc4: ae,07               word    7ae            SPKLIM
bbc6: 58                  byte     58            ECTIP
bbc7: 01                  byte      1            KNKCYL
bbc8: 04                  byte      4            WINCLD

   FN821A:
bbc9: ff,00               func  255,   0
bbcb: 00,00               func    0,   0
bbcd: 00,00               func    0,   0
bbcf: 00,00               func    0,   0
bbd1: 00,00               func    0,   0

######################################
# FN004(BP) = Empirical correction  to  PEXH  for  altitude  with  input  a
#  function of barometric pressure.
# FN074A should be calibrated at sea level since  the  altitude  correction  is
# made  by  the (29.875/BPCOR) term.  Note that the altitude correction used to
# be (29.875/BP)  however  actual  data  obtained  from  the  altitude  chamber
# disagreed  with  the calculated correction.  Therefore FN004(BP) was added to
# allow an empirical correction.  If no correction is desired, calibrate  FN004
# on  a  diagonal, that is, (0,0), (31.875,31.875).  Actual data indicates that
# back pressure does not increase linearly with BP, but at about half that rate,
# roughly (0,8), (31.875,31.875).  This will generate a corrected BP to be used
# in calculating a more accurate PEXH and PE (PFE EGR only).  Over prediction of
# PEXH  results in a smaller MAPOPE and PE which in turn results in leaner open
# loop fuel values and under prediction of actual EM at altitude.
   FN004:
bbd3: ff,ff               func  255, 255                                           # EGR Exhaust BP Correction
bbd5: 00,00               func    0,   0
bbd7: 00,00               func    0,   0
bbd9: 00,00               func    0,   0
bbdb: 00,00               func    0,   0

bbdd: ff                  ???   

   FN603:
bbde: ff,7f,9a,99         func   32767, 39322
bbe2: 00,80,9a,99         func  -32768, 39322
bbe6: 00,80,9a,99         func  -32768, 39322
bbea: 00,80,9a,99         func  -32768, 39322
bbee: 00,80,9a,99         func  -32768, 39322
bbf2: 00,80,9a,99         func  -32768, 39322

   FN091:
bbf6: ff,7f,00,09         func   32767,  2304
bbfa: 80,34,00,09         func   13440,  2304
bbfe: 00,1e,00,06         func    7680,  1536
bc02: 80,11,00,04         func    4480,  1024
bc06: 00,05,00,03         func    1280,   768
bc0a: 00,f6,00,00         func   -2560,     0
bc0e: 00,80,00,00         func  -32768,     0
bc12: 00,80,00,00         func  -32768,     0
bc16: 00,80,00,00         func  -32768,     0

   FN092:
bc1a: ff,ff,00,07         func  65535,  1792
bc1e: 00,af,00,07         func  44800,  1792
bc22: 00,32,00,00         func  12800,     0
bc26: 00,00,00,00         func      0,     0
bc2a: 00,00,00,00         func      0,     0
bc2e: 00,00,00,00         func      0,     0
bc32: 00,00,00,00         func      0,     0

   FN093:
bc36: ff,ff,04,00         func  65535,     4
bc3a: ff,00,04,00         func    255,     4
bc3e: c8,00,66,00         func    200,   102
bc42: 28,00,fc,03         func     40,  1020
bc46: 00,00,fc,03         func      0,  1020
bc4a: 00,00,fc,03         func      0,  1020
bc4e: 00,00,fc,03         func      0,  1020

   FN153:
bc52: ff,ff,10,00         func  65535,     16
bc56: 80,3e,10,00         func  16000,     16
bc5a: e0,2e,0c,00         func  12000,     12
bc5e: 10,27,08,00         func  10000,      8
bc62: 40,1f,08,00         func   8000,      8
bc66: 00,00,00,00         func      0,      0
bc6a: 00,00,00,00         func      0,      0

   FN180:
bc6e: ff,00               func  255,   0
bc70: 00,00               func    0,   0
bc72: 00,00               func    0,   0
bc74: 00,00               func    0,   0
bc76: 00,00               func    0,   0
bc78: 00,00               func    0,   0

   FN1120:
bc7a: 54,54,54,54,54,94,94,94,94,94  table   84,  84,  84,  84,  84, 148, 148, 148, 148, 148    
bc84: 68,78,80,88,8c,94,94,94,94,94  table  104, 120, 128, 136, 140, 148, 148, 148, 148, 148    
bc8e: 68,78,80,88,8c,78,94,94,98,98  table  104, 120, 128, 136, 140, 120, 148, 148, 152, 152    
bc98: 78,78,7a,84,86,80,80,84,88,90  table  120, 120, 122, 132, 134, 128, 128, 132, 136, 144    
bca2: 4c,60,66,6c,70,70,70,70,74,7c  table   76,  96, 102, 108, 112, 112, 112, 112, 116, 124    
bcac: 38,50,56,5c,5e,60,60,60,64,6c  table   56,  80,  86,  92,  94,  96,  96,  96, 100, 108    
bcb6: 2c,44,4c,54,58,5c,60,60,64,68  table   44,  68,  76,  84,  88,  92,  96,  96, 100, 104    
bcc0: 2c,38,44,50,52,54,5c,64,64,68  table   44,  56,  68,  80,  82,  84,  92, 100, 100, 104    

   FN1121:
bcca: 00,00,00,00,00,00,00,00,00,00  table    0,   0,   0,   0,   0,   0,   0,   0,   0,   0    
bcd4: 00,1c,1c,1c,1c,1c,1c,00,00,00  table    0,  28,  28,  28,  28,  28,  28,   0,   0,   0    
bcde: 00,1c,1c,1c,1c,1c,1c,00,00,00  table    0,  28,  28,  28,  28,  28,  28,   0,   0,   0    
bce8: 00,1c,1c,1c,1c,1c,1c,00,00,00  table    0,  28,  28,  28,  28,  28,  28,   0,   0,   0    
bcf2: 00,1c,1c,1c,1c,1c,1c,00,00,00  table    0,  28,  28,  28,  28,  28,  28,   0,   0,   0    
bcfc: 00,00,00,1c,1c,1c,1c,00,00,00  table    0,   0,   0,  28,  28,  28,  28,   0,   0,   0    
bd06: 00,00,00,00,00,00,00,00,00,00  table    0,   0,   0,   0,   0,   0,   0,   0,   0,   0    
bd10: 00,00,00,00,00,00,00,00,00,00  table    0,   0,   0,   0,   0,   0,   0,   0,   0,   0    

   FN1122:
bd1a: 0a,0f,0b,08,02,00,00,00,00,00  table   10,  15,  11,   8,   2,   0,   0,   0,   0,   0    
bd24: 0f,12,11,12,11,00,00,00,00,00  table   15,  18,  17,  18,  17,   0,   0,   0,   0,   0    
bd2e: 05,0d,10,14,17,03,06,06,06,04  table    5,  13,  16,  20,  23,   3,   6,   6,   6,   4    
bd38: 12,07,07,10,14,13,18,1a,14,10  table   18,   7,   7,  16,  20,  19,  24,  26,  20,  16    
bd42: 00,0e,00,04,0d,1a,1c,1e,1c,18  table    0,  14,   0,   4,  13,  26,  28,  30,  28,  24    
bd4c: 00,0c,0f,0e,1b,0f,1e,1e,1e,18  table    0,  12,  15,  14,  27,  15,  30,  30,  30,  24    
bd56: 0d,14,24,20,1c,1c,1e,20,20,20  table   13,  20,  36,  32,  28,  28,  30,  32,  32,  32    
bd60: 0c,20,26,26,26,26,28,28,28,20  table   12,  32,  38,  38,  38,  38,  40,  40,  40,  32    

   FN1126:
bd6a: 68,3c,3c,3c,3c,94,94,94,94,94  table  104,  60,  60,  60,  60, 148, 148, 148, 148, 148    
bd74: 68,78,80,88,8e,94,94,94,94,94  table  104, 120, 128, 136, 142, 148, 148, 148, 148, 148    
bd7e: 68,78,80,88,8e,78,94,94,98,98  table  104, 120, 128, 136, 142, 120, 148, 148, 152, 152    
bd88: 78,78,7a,84,86,80,80,84,88,90  table  120, 120, 122, 132, 134, 128, 128, 132, 136, 144    
bd92: 4c,60,66,6c,70,70,70,70,74,7c  table   76,  96, 102, 108, 112, 112, 112, 112, 116, 124    
bd9c: 38,50,56,5c,5e,60,60,60,64,6c  table   56,  80,  86,  92,  94,  96,  96,  96, 100, 108    
bda6: 2c,44,4c,54,58,5c,60,60,64,68  table   44,  68,  76,  84,  88,  92,  96,  96, 100, 104    
bdb0: 2c,38,44,50,52,54,5c,64,64,68  table   44,  56,  68,  80,  82,  84,  92, 100, 100, 104    

   FN1127:
bdba: 00,00,00,00,00,34,34,34,24,00  table    0,   0,   0,   0,   0,  52,  52,  52,  36,   0    
bdc4: 00,00,00,00,0c,3c,3c,3c,24,00  table    0,   0,   0,   0,  12,  60,  60,  60,  36,   0    
bdce: 00,00,00,00,0c,20,38,38,24,00  table    0,   0,   0,   0,  12,  32,  56,  56,  36,   0    
bdd8: 00,00,00,00,0c,18,18,1c,1c,00  table    0,   0,   0,   0,  12,  24,  24,  28,  28,   0    
bde2: 00,00,00,00,00,00,00,00,00,00  table    0,   0,   0,   0,   0,   0,   0,   0,   0,   0    
bdec: 00,00,00,00,00,00,00,00,00,00  table    0,   0,   0,   0,   0,   0,   0,   0,   0,   0    
bdf6: 00,00,00,00,00,00,00,00,00,00  table    0,   0,   0,   0,   0,   0,   0,   0,   0,   0    
be00: 00,00,00,00,00,00,00,00,00,00  table    0,   0,   0,   0,   0,   0,   0,   0,   0,   0    

   FN1128:
be0a: 00,e0,c0,c0,c0,c0,c0,e0,00,00  table     0,  -32,  -64,  -64,  -64,  -64,  -64,  -32,    0,    0    
be14: 00,e0,c0,c0,c0,c0,c0,e0,00,00  table     0,  -32,  -64,  -64,  -64,  -64,  -64,  -32,    0,    0    
be1e: 00,e0,c0,c0,c0,c0,c0,e0,00,00  table     0,  -32,  -64,  -64,  -64,  -64,  -64,  -32,    0,    0    
be28: 00,e0,c0,c0,c0,c0,c0,e0,00,00  table     0,  -32,  -64,  -64,  -64,  -64,  -64,  -32,    0,    0    
be32: 00,e0,c0,c0,c0,c0,c0,e0,00,00  table     0,  -32,  -64,  -64,  -64,  -64,  -64,  -32,    0,    0    
be3c: 00,e0,c0,c0,c0,c0,c0,e0,00,00  table     0,  -32,  -64,  -64,  -64,  -64,  -64,  -32,    0,    0    
be46: 00,e0,c0,c0,c0,c0,c0,e0,00,00  table     0,  -32,  -64,  -64,  -64,  -64,  -64,  -32,    0,    0    
be50: 00,e0,c0,c0,c0,c0,c0,e0,00,00  table     0,  -32,  -64,  -64,  -64,  -64,  -64,  -32,    0,    0    

   FN1129:
be5a: 00,00,00,00,00,00,00,00,00,00  table    0,   0,   0,   0,   0,   0,   0,   0,   0,   0    
be64: 00,2d,2d,2d,2d,2d,00,00,00,00  table    0,  45,  45,  45,  45,  45,   0,   0,   0,   0    
be6e: 00,2d,2d,2d,2d,2d,00,00,00,00  table    0,  45,  45,  45,  45,  45,   0,   0,   0,   0    
be78: 00,2d,2d,2d,2d,2d,00,00,00,00  table    0,  45,  45,  45,  45,  45,   0,   0,   0,   0    
be82: 00,2d,2d,2d,2d,2d,00,00,00,00  table    0,  45,  45,  45,  45,  45,   0,   0,   0,   0    
be8c: 00,26,2d,2d,2d,2d,00,00,00,00  table    0,  38,  45,  45,  45,  45,   0,   0,   0,   0    
be96: 00,20,26,2d,2d,2d,00,00,00,00  table    0,  32,  38,  45,  45,  45,   0,   0,   0,   0    
bea0: 00,00,00,00,00,00,00,00,00,00  table    0,   0,   0,   0,   0,   0,   0,   0,   0,   0    

   FN074A:
beaa: ff,ff,69,00         func  65535,   105                                       # Used as an adder to calculate MAPOPE based on calculated airmass
beae: 00,80,69,00         func  32768,   105
beb2: 00,58,31,00         func  22528,    49
beb6: 00,38,14,00         func  14336,    20
beba: 00,20,0b,00         func   8192,    11
bebe: 00,0c,00,00         func   3072,     0
bec2: 00,00,00,00         func      0,     0
bec6: 00,00,00,00         func      0,     0
beca: 00,00,00,00         func      0,     0
bece: 00,00,00,00         func      0,     0
bed2: 00,00,00,00         func      0,     0

   FN211:
bed6: 7f,4d               func   127,  77
bed8: 73,7f               func   115, 127
beda: 3c,7f               func    60, 127
bedc: 10,00               func    16,   0
bede: 80,00               func  -128,   0
bee0: 80,00               func  -128,   0
bee2: 80,00               func  -128,   0

   FN212A:
bee4: ff,80               func  255, 128
bee6: d8,80               func  216, 128
bee8: c8,a0               func  200, 160
beea: a0,33               func  160,  51
beec: 00,00               func    0,   0

   FN219:
beee: ff,ff,cd,ec         func  65535, 60621
bef2: c0,ff,cd,ec         func  65472, 60621
bef6: 80,d4,1f,c5         func  54400, 50463
befa: 00,00,00,00         func      0,     0
befe: 00,00,00,00         func      0,     0
bf02: 00,00,00,00         func      0,     0
bf06: 00,00,00,00         func      0,     0
bf0a: 00,00,00,00         func      0,     0
bf0e: 00,00,00,00         func      0,     0
bf12: 00,00,00,00         func      0,     0

   FN220:
bf16: 7f,40               func   127,  64
bf18: 76,80               func   118, 128
bf1a: 1e,80               func    30, 128
bf1c: 14,40               func    20,  64
bf1e: 80,40               func  -128,  64
bf20: 80,40               func  -128,  64
bf22: 80,40               func  -128,  64

   FN221:
bf24: ff,ff,c0,ff         func  65535, 65472
bf28: cd,0e,c0,ff         func   3789, 65472
bf2c: 52,0c,80,d4         func   3154, 54400
bf30: 00,00,00,00         func      0,     0
bf34: 00,00,00,00         func      0,     0
bf38: 00,00,00,00         func      0,     0
bf3c: 00,00,00,00         func      0,     0
bf40: 00,00,00,00         func      0,     0
bf44: 00,00,00,00         func      0,     0
bf48: 00,00,00,00         func      0,     0

   FN239:
bf4c: ff,7f,33,03         func   32767,    819
bf50: 00,7d,33,03         func   32000,    819
bf54: 00,32,52,00         func   12800,     82
bf58: 00,ce,ae,ff         func  -12800,    -82
bf5c: 00,83,cd,fc         func  -32000,   -819
bf60: 00,80,cd,fc         func  -32768,   -819
bf64: 00,80,cd,fc         func  -32768,   -819

   FN240:
bf68: ff,00               func  255,   0
bf6a: 64,00               func  100,   0
bf6c: 00,80               func    0, 128
bf6e: 00,80               func    0, 128

   FN1220:
bf70: 00,00,00,00,00,00,00,00,00,00  table    0,   0,   0,   0,   0,   0,   0,   0,   0,   0    
bf7a: 00,00,00,14,16,16,00,00,00,00  table    0,   0,   0,  20,  22,  22,   0,   0,   0,   0    
bf84: 00,08,10,28,24,16,00,00,00,00  table    0,   8,  16,  40,  36,  22,   0,   0,   0,   0    
bf8e: 00,17,20,2c,2c,24,16,00,00,00  table    0,  23,  32,  44,  44,  36,  22,   0,   0,   0    
bf98: 00,16,20,2c,2c,24,14,00,00,00  table    0,  22,  32,  44,  44,  36,  20,   0,   0,   0    
bfa2: 00,00,10,14,14,10,00,00,00,00  table    0,   0,  16,  20,  20,  16,   0,   0,   0,   0    
bfac: 00,00,00,00,00,00,00,00,00,00  table    0,   0,   0,   0,   0,   0,   0,   0,   0,   0    
bfb6: 00,00,00,00,00,00,00,00,00,00  table    0,   0,   0,   0,   0,   0,   0,   0,   0,   0    

   FN1222:
bfc0: 00,00,00,00,00,00,00,00,00,00  table    0,   0,   0,   0,   0,   0,   0,   0,   0,   0    
bfca: 00,10,18,20,20,18,00,00,00,00  table    0,  16,  24,  32,  32,  24,   0,   0,   0,   0    
bfd4: 00,20,28,2c,2c,18,00,00,00,00  table    0,  32,  40,  44,  44,  24,   0,   0,   0,   0    
bfde: 00,24,28,2c,2c,18,00,00,00,00  table    0,  36,  40,  44,  44,  24,   0,   0,   0,   0    
bfe8: 00,20,24,28,2c,18,00,00,00,00  table    0,  32,  36,  40,  44,  24,   0,   0,   0,   0    
bff2: 00,14,18,1c,1c,0c,00,00,00,00  table    0,  20,  24,  28,  28,  12,   0,   0,   0,   0    
bffc: 00,00,00,00,00,00,00,00,00,00  table    0,   0,   0,   0,   0,   0,   0,   0,   0,   0    
c006: 00,00,00,00,00,00,00,00,00,00  table    0,   0,   0,   0,   0,   0,   0,   0,   0,   0    

   FN218:
c010: ff,80               func  255, 128
c012: 00,80               func    0, 128
c014: 00,80               func    0, 128
c016: 00,80               func    0, 128
c018: 00,80               func    0, 128
c01a: 00,80               func    0, 128
c01c: 00,80               func    0, 128
c01e: 00,80               func    0, 128
c020: 00,80               func    0, 128
c022: 00,80               func    0, 128

   FN143:
c024: ff,ff,00,00         func  65535,     0
c028: 20,4e,00,00         func  20000,     0
c02c: 80,3e,00,04         func  16000,  1024
c030: e0,2e,33,05         func  12000,  1331
c034: 40,1f,00,06         func   8000,  1536
c038: 00,00,00,06         func      0,  1536

   FN144:
c03c: ff,ff,10,01         func  65535,   272
c040: 20,4e,10,01         func  20000,   272
c044: e0,2e,d2,00         func  12000,   210
c048: 40,1f,b4,00         func   8000,   180
c04c: a0,0f,93,00         func   4000,   147
c050: 00,00,76,00         func      0,   118
c054: 00,00,76,00         func      0,   118
c058: 00,00,76,00         func      0,   118
c05c: 00,00,76,00         func      0,   118
c060: 00,00,76,00         func      0,   118
c064: 00,00,76,00         func      0,   118
c068: 00,00,76,00         func      0,   118
c06c: 00,00,76,00         func      0,   118
c070: 00,00,76,00         func      0,   118

   FN145:
c074: ff,ff,00,00         func  65535,     0
c078: 00,00,00,00         func      0,     0
c07c: 00,00,00,00         func      0,     0
c080: 00,00,00,00         func      0,     0
c084: 00,00,00,00         func      0,     0

   FN146A:
c088: ff,ff,80,00         func  65535,   128
c08c: 00,00,80,00         func      0,   128
c090: 00,00,80,00         func      0,   128
c094: 00,00,80,00         func      0,   128
c098: 00,00,80,00         func      0,   128
c09c: 00,00,80,00         func      0,   128

   FN190:
c0a0: ff,00               func  255,   0
c0a2: 00,00               func    0,   0
c0a4: 00,00               func    0,   0
c0a6: 00,00               func    0,   0

c0a8: 5a,cb               word   cb5a                                              # Register Rfc 
c0aa: e0,15               word   15e0            TQMAX1
c0ac: 20,1c               word   1c20            TQMAX2
c0ae: 20,03               word    320            TQMAXH
c0b0: 03                  byte      3            PIPFIL

c0b1: ff                  ???   

c0b2: 60,09               word    960            TOT_OTEMP
c0b4: 90,01               word    190            HYS_OTEMP
c0b6: 28                  byte     28            EPC_OTEMP

c0b7: ff                  ???   

c0b8: 60,22               word   2260            NE_OTEMP_MIN
c0ba: 80,25               word   2580            NE_OTEMP_MAX
c0bc: 00,30               word   3000            SRLK_FM
c0be: c0,2b               word   2bc0            NELK_FM
c0c0: 08                  byte      8            TCIL_TM_DLY
c0c1: 04                  byte      4            TCIL_TM1
c0c2: 71,ad               word   ad71            GRRAT1
c0c4: 6f,62               word   626f            GRRAT2
c0c6: 00,40               word   4000            GRRAT3
c0c8: 91,2d               word   2d91            GRRAT4
c0ca: 50                  byte     50            CLDCTM
c0cb: 29                  byte     29            TMS1G2

c0cc: 1a,00,00,04         ???   

c0d0: 00,01               word    100

c0d2: 00,08,9a,09         ???   

c0d6: 9a,01               word    19a
c0d8: 9a,05               word    59a
c0da: aa                  byte     aa
c0db: 04                  byte      4            NEUTIM
c0dc: 14                  byte     14
c0dd: 00                  byte      0
c0de: 5e                  byte     5e            TVPMX1
c0df: 00                  byte      0            TVPMN1
c0e0: 1e                  byte     1e            TVPMX2
c0e1: 00                  byte      0            TVPMN2
c0e2: 5e                  byte     5e            TVPMX3
c0e3: 00                  byte      0            TVPMN3
c0e4: 50                  byte     50
c0e5: a0                  byte     a0            trans_tv_engagement_high
c0e6: 3c                  byte     3c            trans_tv_engagement_moderate

c0e7: ff                  ???   

c0e8: 00,07               word    700

c0ea: 00,07               ???   

c0ec: 00,07               word    700
c0ee: 00,07               word    700

c0f0: cd,00,cd,00         ???   

c0f4: cd,00               word     cd
c0f6: cd,00               word     cd
c0f8: 00,e2               word   e200            TQCONVINT
c0fa: 1f,05               word    51f            TQCONVSLP
c0fc: 00                  byte      0            EPC_TQMAX

c0fd: ff                  ???   

c0fe: 08,00               word      8            MUINT
c100: 00,80               word   8000            MUSLP
c102: 0a                  byte      a
c103: 28                  byte     28
c104: 14                  byte     14
c105: 46                  byte     46

c106: 00,00,f8,00,fe,00   ???   

c10c: 7c                  byte     7c

c10d: 80                  ???   

c10e: 7d                  byte     7d

c10f: 2a,f8               ???   

c111: 2a                  byte     2a
c112: f8                  byte     f8

c113: 2a,f8,2a,f8,21,21,16,48  ???  

c11b: 3b                  byte     3b

c11c: 37,ff               ???   

c11e: 50,00               word     50            TOTTV1
c120: a0,ff               word   ffa0            TOTTV2
c122: a0,ff               word   ffa0            TOTTV3
c124: a0,00               word     a0            TOTTV4
c126: a0,00               word     a0            TOTTV5

c128: 00,00,00,ff,00,00,00,ff  ???  

c130: 00,00               word      0
c132: 00                  byte      0

c133: ff,56,05,1b,04      ???   

c138: 56,05               word    556

c13a: 72,04,56,05,d0,03   ???   

c140: ae,00               word     ae
c142: aa,7f               word   7faa            SARCHG
c144: 9a,19               word   199a
c146: 00,3f               word   3f00
c148: 00,3e               word   3e00

c14a: e0                  ???   

c14b: 2e                  byte     2e
c14c: 18                  byte     18
c14d: 2e                  byte     2e
c14e: 80,0c               word    c80
c150: 80,0c               word    c80
c152: 00                  byte      0
c153: 00                  byte      0            STALLTV_SW
c154: 0a                  byte      a            trans_min_tv_pressure

c155: ff                  ???   

c156: 80,70               word   7080            ETV_BIAS
c158: 80                  byte     80            ETV_GAIN
c159: 5a                  byte     5a            ETV_GAIN_BAT
c15a: 19                  byte     19            TVCDLT
c15b: ff                  byte     ff
c15c: cd,00               word     cd            TV_SLT_TM
c15e: 8c                  byte     8c            TVFMMN
c15f: ff                  byte     ff
c160: 10,00               word     10            TCMAPW
c162: 1f,00               word     1f            TCNE
c164: 1f,00               word     1f            TCTPTE
c166: 1f,00               word     1f            TCVST
c168: 12,00               word     12            TCTPTC
c16a: 33,01               word    133            TCTTA
c16c: 00                  byte      0            TM4X4L
c16d: 03                  byte      3
c16e: 00,05               word    500            V_BOO_SPD
c170: 40                  byte     40
c171: 01                  byte      1
c172: 8f                  byte     8f

c173: 02                  ???   

c174: 8f,42               word   428f            SPD_PM
c176: b0,04               word    4b0            CS_MAX_TIME
c178: 69                  byte     69            CS_MUL
c179: 9a                  byte     9a            OFM_MUL
c17a: 08                  byte      8            PUL_PER_REV
c17b: 24                  byte     24            MBTEGR
c17c: 2c,01               word    12c
c17e: 00                  byte      0
c17f: 10                  byte     10
c180: 03                  byte      3

c181: ff                  ???   

c182: e0,fc               word   fce0            NE12A                             #  NE12A = WOT RPM 1 - 2 shift point, altitude.
c184: a0,41               word   41a0            NE12S                             #  NE12S = WOT RPM 1 - 2 shift point, sea level.
c186: 50,fb               word   fb50            NE23A                             #  NE23A = WOT RPM 2 - 3 shift point, altitude.
c188: 68,42               word   4268            NE23S                             #  NE23S = WOT RPM 2 - 3 shift point, sea level.
c18a: e0,fc               word   fce0            NS34A                             #  NE34A = WOT RPM 3 - 4 shift point, altitude.
c18c: 60,3b               word   3b60            NS34S                             #  NE34S = WOT RPM 3 - 4 shift point, sea level.
c18e: 02                  byte      2            VSCNT
c18f: 28                  byte     28            VSDELT
c190: 00                  byte      0            CS_PDL_4
c191: 04                  byte      4            TMCSE2
c192: 04                  byte      4            TMCSE3
c193: 02                  byte      2            TMCSOD
c194: 5e                  byte     5e            NVBASE
c195: ff                  byte     ff
c196: 90,01               word    190            S_VAL_NESUB
c198: 40,01               word    140            S_VAL_TPADD
c19a: 00,02               word    200            S_VAL_TPSUB
c19c: 12                  byte     12            S_VAL_VSADD
c19d: 02                  byte      2            S_VAL_VSSUB
c19e: 80,2a               word   2a80            TP_SH_VALID
c1a0: 22                  byte     22            VS_SH_VAL2
c1a1: 3b                  byte     3b            VS_SH_VAL3
c1a2: 5a                  byte     5a            VS_SH_VAL4
c1a3: ff                  byte     ff
c1a4: 1f,05               word    51f            NOV_ERR_BAND
c1a6: 00,2d               word   2d00            CCE_TPMN
c1a8: 00,0f               word    f00            MAN1LO
c1aa: c0,3b               word   3bc0            MAN1HI
c1ac: 80,3b               word   3b80            MLPS_2LO
c1ae: c0,5f               word   5fc0            MLPS_2HI
c1b0: 80,5f               word   5f80            ODLO
c1b2: 00,86               word   8600            ODHI
c1b4: c0,85               word   85c0            NEULO
c1b6: 80,ae               word   ae80            NEUHI
c1b8: 40,ae               word   ae40            REVLO
c1ba: 00,db               word   db00            REVHI
c1bc: c0,da               word   dac0            PARKLO
c1be: 80,f2               word   f280            PARKHI
c1c0: 04                  byte      4            MLPS_2
c1c1: 08                  byte      8            MLPS_2hobyte
c1c2: 9a,00               word     9a            PDLTIM
c1c4: 00,28               word   2800            VSPMIN
c1c6: 00,01               word    100
c1c8: 66,00               word     66
c1ca: 00,00               word      0
c1cc: c0,f9               word   f9c0
c1ce: b4                  byte     b4            VS_NEU
c1cf: 04                  byte      4            GR_NEU
c1d0: 08                  byte      8            GRMSFT
c1d1: 00                  byte      0            SW_MSF
c1d2: 4c                  byte     4c
c1d3: 07                  byte      7
c1d4: 04                  byte      4            NOVCNT
c1d5: 01                  byte      1
c1d6: cd,2c               word   2ccd            RTNVMN                            # 11469
c1d8: 66,56               word   5666            RTNVMX
c1da: 29,ac               word   ac29
c1dc: 20                  byte     20            TMNVLK
c1dd: 08                  byte      8            TMNVCAL
c1de: 9a,19               word   199a
c1e0: 00                  byte      0
c1e1: 08                  byte      8            BPUNMH
c1e2: 70                  byte     70            BPUNMN
c1e3: 70                  byte     70            BPUNMX
c1e4: 80,0c               word    c80            NELUMN
c1e6: 01                  byte      1            CTDLY
c1e7: 08                  byte      8            TRADLY
c1e8: 0c                  byte      c            TRDDLY
c1e9: 03                  byte      3            BRKDLY
c1ea: 10                  byte     10            PRNDLY
c1eb: 08                  byte      8            LUDLY
c1ec: 00                  byte      0            CRVDLY
c1ed: 06                  byte      6            D21DLY
c1ee: 08                  byte      8            D32DLY
c1ef: 01                  byte      1            D43DLY

c1f0: 3f,ff               ???   

c1f2: 80,0c               word    c80            NELKWH
c1f4: c0,2b               word   2bc0            NELKWO
c1f6: 33,03               word    333            RTLKWH
c1f8: 48,31               word   3148            RTLKWO
c1fa: 33,33               word   3333            SRLK2
c1fc: ec,31               word   31ec            SRLK3
c1fe: b8,2e               word   2eb8            SRLK4
c200: 00                  byte      0            SW_MLK
c201: 01                  byte      1            SW_RLK
c202: 00,05               word    500            UP_TIP_RATE
c204: 00,0e               word    e00            TM_ACT_SFT
c206: ff                  byte     ff            TMCTDY

c207: ff                  ???   

c208: 00,a1               word   a100            TPLKWO
c20a: 80,3e               word   3e80            TPLKWH
c20c: 00,00               word      0            TMDNLK
c20e: 66,00               word     66            TMTCS
c210: c0,01               word    1c0            TPUNCH
c212: c0,ff               word   ffc0            TPUNSC
c214: 80,3e               word   3e80            TPUNBRK
c216: c0,04               word    4c0            TPUNCT
c218: 40,38               word   3840            TPUNTR
c21a: c0,08               word    8c0            TRUHAC
c21c: 80,e9               word   e980            TRUHDC
c21e: 40                  byte     40            TRULAC
c21f: 06                  byte      6
c220: 00                  byte      0            TRULDC
c221: f9                  byte     f9
c222: 06                  byte      6            U12DLY
c223: 08                  byte      8            U23DLY
c224: 05                  byte      5            U34DLY
c225: ff                  byte     ff            VSCTDY
c226: 33,03               word    333
c228: 33,03               word    333
c22a: 33,03               word    333
c22c: 33,03               word    333

c22e: 33,04,00,03,33,04,d7,01,33,03,66,01,33,02,d2,00  ???  

c23e: 33,03               word    333
c240: 33,03               word    333
c242: 33,03               word    333
c244: 33,03               word    333

c246: 9a,04,33,02,9a,04,d7,01,00,04,00,04,66,02,cd,00  ???  
c256: 00,00,00,00,00,00,00???   

c25d: 00                  byte      0

   FN689V:
c25e: ff,ff,18,2e         func  65535, 11800
c262: 00,7d,50,2d         func  32000, 11600
c266: 00,4b,c0,2b         func  19200, 11200
c26a: 80,25,80,25         func   9600,  9600
c26e: 80,11,40,1f         func   4480,  8000
c272: 00,0a,c8,19         func   2560,  6600
c276: 00,00,c8,19         func      0,  6600

   FN615:
c27a: ff,00               func  255,   0
c27c: dc,00               func  220,   0
c27e: c4,80               func  196, 128
c280: 98,a6               func  152, 166
c282: 00,ad               func    0, 173
c284: 00,ad               func    0, 173

   FN690:
c286: ff,7f,60,04         func   32767,   1120
c28a: b0,04,60,04         func    1200,   1120
c28e: 20,03,30,03         func     800,    816
c292: f0,00,40,01         func     240,    320
c296: 00,00,f0,00         func       0,    240
c29a: 00,80,f0,00         func  -32768,    240

   FN12A:
c29e: ff,00               func  255,   0
c2a0: a1,00               func  161,   0
c2a2: a1,fd               func  161, 253
c2a4: 26,fc               func   38, 252
c2a6: 19,ff               func   25, 255
c2a8: 0f,00               func   15,   0
c2aa: 00,00               func    0,   0
c2ac: 00,00               func    0,   0
c2ae: 00,00               func    0,   0
c2b0: 00,00               func    0,   0

   FN12S:
c2b2: ff,44               func  255,  68
c2b4: a1,44               func  161,  68
c2b6: a1,38               func  161,  56
c2b8: 4b,2c               func   75,  44
c2ba: 32,24               func   50,  36
c2bc: 26,1e               func   38,  30
c2be: 19,16               func   25,  22
c2c0: 0a,0e               func   10,  14
c2c2: 00,0e               func    0,  14
c2c4: 00,0e               func    0,  14

   FN23A:
c2c6: ff,fc               func  255, 252
c2c8: a1,fc               func  161, 252
c2ca: a1,fa               func  161, 250
c2cc: 7d,f7               func  125, 247
c2ce: 64,f8               func  100, 248
c2d0: 4b,f6               func   75, 246
c2d2: 32,f9               func   50, 249
c2d4: 0f,00               func   15,   0
c2d6: 00,00               func    0,   0
c2d8: 00,00               func    0,   0

   FN23PPH:
c2da: ff,ff,00,d8         func  65535, 55296
c2de: 00,00,00,d8         func      0, 55296
c2e2: 00,00,00,d8         func      0, 55296
c2e6: 00,00,00,d8         func      0, 55296
c2ea: 00,00,00,d8         func      0, 55296
c2ee: 00,00,00,d8         func      0, 55296
c2f2: 00,00,00,d8         func      0, 55296
c2f6: 00,00,00,d8         func      0, 55296
c2fa: 00,00,00,d8         func      0, 55296
c2fe: 00,00,00,d8         func      0, 55296
c302: 00,00,00,d8         func      0, 55296
c306: 00,00,00,d8         func      0, 55296

   FN23S:
c30a: ff,7c               func  255, 124
c30c: a1,7c               func  161, 124
c30e: a1,69               func  161, 105
c310: 7d,65               func  125, 101
c312: 7c,5f               func  124,  95
c314: 4b,53               func   75,  83
c316: 26,3c               func   38,  60
c318: 19,2a               func   25,  42
c31a: 0d,1e               func   13,  30
c31c: 00,1e               func    0,  30

   FN34A:
c31e: ff,fb               func  255, 251
c320: a1,fb               func  161, 251
c322: a1,f5               func  161, 245
c324: 4b,f3               func   75, 243
c326: 26,f7               func   38, 247
c328: 19,fb               func   25, 251
c32a: 0e,00               func   14,   0
c32c: 00,00               func    0,   0
c32e: 00,00               func    0,   0
c330: 00,00               func    0,   0

   FN34PPH:
c332: ff,ff,b3,00         func  65535,   179
c336: 00,64,b3,00         func  25600,   179
c33a: 80,3e,8a,00         func  16000,   138
c33e: 00,32,48,00         func  12800,    72
c342: 00,2d,38,00         func  11520,    56
c346: 00,2d,00,d8         func  11520, 55296
c34a: 00,00,00,d8         func      0, 55296
c34e: 00,00,00,d8         func      0, 55296
c352: 00,00,00,d8         func      0, 55296
c356: 00,00,00,d8         func      0, 55296
c35a: 00,00,00,d8         func      0, 55296
c35e: 00,00,00,d8         func      0, 55296

   FN34S:
c362: ff,aa               func  255, 170
c364: a1,aa               func  161, 170
c366: a1,9a               func  161, 154
c368: 90,93               func  144, 147
c36a: 4b,7b               func   75, 123
c36c: 32,67               func   50, 103
c36e: 26,5a               func   38,  90
c370: 19,4f               func   25,  79
c372: 0e,44               func   14,  68
c374: 00,44               func    0,  68

   FN21A:
c376: ff,ff,a8,ff         func  65535, 65448
c37a: a8,fc,9e,fc         func  64680, 64670
c37e: 64,00,00,00         func    100,     0
c382: 00,00,00,00         func      0,     0
c386: 00,00,00,00         func      0,     0

   FN21S:
c38a: ff,36               func  255,  54
c38c: a8,36               func  168,  54
c38e: a8,29               func  168,  41
c390: 9e,29               func  158,  41
c392: 64,0d               func  100,  13
c394: 00,0d               func    0,  13
c396: 00,0d               func    0,  13
c398: 00,0d               func    0,  13
c39a: 00,0d               func    0,  13
c39c: 00,0d               func    0,  13

   FN32A:
c39e: ff,fd               func  255, 253
c3a0: a8,fd               func  168, 253
c3a2: a8,00               func  168,   0
c3a4: 64,fc               func  100, 252
c3a6: 3f,fb               func   63, 251
c3a8: 19,fe               func   25, 254
c3aa: 0f,00               func   15,   0
c3ac: 00,00               func    0,   0
c3ae: 00,00               func    0,   0
c3b0: 00,00               func    0,   0

   FN32S:
c3b2: ff,6a               func  255, 106
c3b4: a8,6a               func  168, 106
c3b6: a8,54               func  168,  84
c3b8: 64,46               func  100,  70
c3ba: 3f,36               func   63,  54
c3bc: 26,2a               func   38,  42
c3be: 0f,1d               func   15,  29
c3c0: 00,1d               func    0,  29
c3c2: 00,1d               func    0,  29
c3c4: 00,1d               func    0,  29

   FN43A:
c3c6: ff,fc               func  255, 252
c3c8: a8,fc               func  168, 252
c3ca: a8,f5               func  168, 245
c3cc: 76,f5               func  118, 245
c3ce: 76,fa               func  118, 250
c3d0: 6a,fa               func  106, 250
c3d2: 19,ff               func   25, 255
c3d4: 13,00               func   19,   0
c3d6: 00,00               func    0,   0
c3d8: 00,00               func    0,   0

   FN43S:
c3da: ff,96               func  255, 150
c3dc: a8,96               func  168, 150
c3de: a8,8f               func  168, 143
c3e0: 76,80               func  118, 128
c3e2: 76,72               func  118, 114
c3e4: 2d,49               func   45,  73
c3e6: 19,45               func   25,  69
c3e8: 13,42               func   19,  66
c3ea: 00,42               func    0,  66
c3ec: 00,42               func    0,  66

   FN689D:
c3ee: ff,ff,f0,23         func  65535,  9200
c3f2: 00,96,f0,23         func  38400,  9200
c3f6: 00,64,c0,12         func  25600,  4800
c3fa: 00,32,c0,12         func  12800,  4800
c3fe: 00,00,48,0d         func      0,  3400

   FN689U:
c402: ff,ff,30,43         func  65535, 17200
c406: 00,af,30,43         func  44800, 17200
c40a: 00,96,80,3e         func  38400, 16000
c40e: 00,64,40,38         func  25600, 14400
c412: 00,19,80,25         func   6400,  9600
c416: 00,00,e0,15         func      0,  5600
c41a: 00,00,e0,15         func      0,  5600

   FN2LS:
c41e: ff,22               func  255,  34
c420: a1,22               func  161,  34
c422: a1,37               func  161,  55
c424: 7d,32               func  125,  50
c426: 7d,82               func  125, 130
c428: 00,82               func    0, 130
c42a: 00,82               func    0, 130
c42c: 00,82               func    0, 130
c42e: 00,82               func    0, 130
c430: 00,82               func    0, 130

   FN3LS:
c432: ff,33               func  255,  51
c434: 2e,33               func   46,  51
c436: 2e,48               func   46,  72
c438: 19,36               func   25,  54
c43a: 00,36               func    0,  54
c43c: 00,36               func    0,  54
c43e: 00,36               func    0,  54
c440: 00,36               func    0,  54
c442: 00,36               func    0,  54
c444: 00,36               func    0,  54

   FN4LS:
c446: ff,40               func  255,  64
c448: 00,40               func    0,  64
c44a: 00,40               func    0,  64
c44c: 00,40               func    0,  64

   FN2LA:
c44e: ff,00               func  255,   0
c450: a1,00               func  161,   0
c452: a1,fd               func  161, 253
c454: 7d,fc               func  125, 252
c456: 7d,00               func  125,   0
c458: 00,00               func    0,   0
c45a: 00,00               func    0,   0
c45c: 00,00               func    0,   0
c45e: 00,00               func    0,   0
c460: 00,00               func    0,   0

   FN3LA:
c462: ff,00               func  255,   0
c464: 2e,00               func   46,   0
c466: 2e,fa               func   46, 250
c468: 19,00               func   25,   0
c46a: 00,00               func    0,   0
c46c: 00,00               func    0,   0
c46e: 00,00               func    0,   0
c470: 00,00               func    0,   0
c472: 00,00               func    0,   0
c474: 00,00               func    0,   0

   FN4LA:
c476: ff,00               func  255,   0
c478: 00,00               func    0,   0
c47a: 00,00               func    0,   0
c47c: 00,00               func    0,   0

   FN2US:
c47e: ff,21               func  255,  33
c480: a1,21               func  161,  33
c482: a1,36               func  161,  54
c484: 7d,31               func  125,  49
c486: 7d,1c               func  125,  28
c488: 00,1c               func    0,  28
c48a: 00,1c               func    0,  28
c48c: 00,1c               func    0,  28
c48e: 00,1c               func    0,  28
c490: 00,1c               func    0,  28

   FN3US:
c492: ff,32               func  255,  50
c494: 00,32               func    0,  50
c496: 00,32               func    0,  50
c498: 00,32               func    0,  50
c49a: 00,32               func    0,  50
c49c: 00,32               func    0,  50
c49e: 00,32               func    0,  50
c4a0: 00,32               func    0,  50
c4a2: 00,32               func    0,  50
c4a4: 00,32               func    0,  50

   FN4US:
c4a6: ff,3f               func  255,  63
c4a8: 00,3f               func    0,  63
c4aa: 00,3f               func    0,  63
c4ac: 00,3f               func    0,  63

   FN2UA:
c4ae: ff,00               func  255,   0
c4b0: a1,00               func  161,   0
c4b2: a1,fd               func  161, 253
c4b4: 7d,fc               func  125, 252
c4b6: 7d,00               func  125,   0
c4b8: 00,00               func    0,   0
c4ba: 00,00               func    0,   0
c4bc: 00,00               func    0,   0
c4be: 00,00               func    0,   0
c4c0: 00,00               func    0,   0

   FN3UA:
c4c2: ff,00               func  255,   0
c4c4: 00,00               func    0,   0
c4c6: 00,00               func    0,   0
c4c8: 00,00               func    0,   0
c4ca: 00,00               func    0,   0
c4cc: 00,00               func    0,   0
c4ce: 00,00               func    0,   0
c4d0: 00,00               func    0,   0
c4d2: 00,00               func    0,   0
c4d4: 00,00               func    0,   0

   FN4UA:
c4d6: ff,00               func  255,   0
c4d8: 00,00               func    0,   0
c4da: 00,00               func    0,   0
c4dc: 00,00               func    0,   0

   FN2ULK:
c4de: ff,ff,93,00         func  65535,   147
c4e2: 00,00,93,00         func      0,   147
c4e6: 00,00,93,00         func      0,   147
c4ea: 00,00,93,00         func      0,   147
c4ee: 00,00,93,00         func      0,   147
c4f2: 00,00,93,00         func      0,   147
c4f6: 00,00,93,00         func      0,   147

   FN2LK:
c4fa: ff,ff,ae,0f         func  65535,  4014
c4fe: 00,a1,ae,0f         func  41216,  4014
c502: 00,7d,b8,0e         func  32000,  3768
c506: 00,64,b8,0e         func  25600,  3768
c50a: 00,32,29,0c         func  12800,  3113
c50e: 00,00,29,0c         func      0,  3113
c512: 00,00,29,0c         func      0,  3113

   FN3ULK:
c516: ff,ff,93,00         func  65535,   147
c51a: 00,a1,93,00         func  41216,   147
c51e: 00,a1,9c,00         func  41216,   156
c522: 00,4b,9c,00         func  19200,   156
c526: 00,32,a4,00         func  12800,   164
c52a: 00,00,a4,00         func      0,   164
c52e: 00,00,a4,00         func      0,   164

   FN3LK:
c532: ff,ff,e1,0a         func  65535,  2785
c536: 00,a1,e1,0a         func  41216,  2785
c53a: 00,a1,3d,0a         func  41216,  2621
c53e: 00,7d,ec,09         func  32000,  2540
c542: 00,4b,a4,08         func  19200,  2212
c546: 00,32,ae,07         func  12800,  1966
c54a: 00,00,ae,07         func      0,  1966

   FN4ULK:
c54e: ff,ff,9c,00         func  65535,   156
c552: 00,4b,9c,00         func  19200,   156
c556: 80,25,f6,00         func   9600,   246
c55a: 00,00,f6,00         func      0,   246
c55e: 00,00,f6,00         func      0,   246
c562: 00,00,f6,00         func      0,   246
c566: 00,00,f6,00         func      0,   246

   FN4LK:
c56a: ff,ff,66,06         func  65535,  1638
c56e: 00,a1,66,06         func  41216,  1638
c572: 00,a1,00,20         func  41216,  8192
c576: 00,00,00,20         func      0,  8192
c57a: 00,00,00,20         func      0,  8192
c57e: 00,00,00,20         func      0,  8192
c582: 00,00,00,20         func      0,  8192

   FN624:
c586: ff,ff,b8,00         func  65535,   184
c58a: 00,00,b8,00         func      0,   184
c58e: 00,00,b8,00         func      0,   184
c592: 00,00,b8,00         func      0,   184
c596: 00,00,b8,00         func      0,   184
c59a: 00,00,b8,00         func      0,   184

   FN689L:
c59e: ff,ff,70,30         func  65535, 12400
c5a2: 00,4b,70,30         func  19200, 12400
c5a6: 80,25,68,29         func   9600, 10600
c5aa: 00,00,68,29         func      0, 10600
c5ae: 00,00,68,29         func      0, 10600

   FN21_DC:
c5b2: ff,00               func  255,   0
c5b4: 00,00               func    0,   0
c5b6: 00,00               func    0,   0
c5b8: 00,00               func    0,   0

   FN12_DC:
c5ba: ff,f5               func  255, 245
c5bc: a1,f5               func  161, 245
c5be: a1,f8               func  161, 248
c5c0: 4b,f6               func   75, 246
c5c2: 32,f3               func   50, 243
c5c4: 19,eb               func   25, 235
c5c6: 00,e9               func    0, 233
c5c8: 00,e9               func    0, 233
c5ca: 00,e9               func    0, 233
c5cc: 00,e9               func    0, 233

   FN32_DC:
c5ce: ff,00               func  255,   0
c5d0: 00,00               func    0,   0
c5d2: 00,00               func    0,   0
c5d4: 00,00               func    0,   0

   FN23_DC:
c5d6: ff,fa               func  255, 250
c5d8: a1,fa               func  161, 250
c5da: a1,f9               func  161, 249
c5dc: 7d,f7               func  125, 247
c5de: 64,f8               func  100, 248
c5e0: 4b,f7               func   75, 247
c5e2: 32,fa               func   50, 250
c5e4: 19,f9               func   25, 249
c5e6: 00,fa               func    0, 250
c5e8: 00,fa               func    0, 250

   FN43_DC:
c5ea: ff,00               func  255,   0
c5ec: 00,00               func    0,   0
c5ee: 00,00               func    0,   0
c5f0: 00,00               func    0,   0

   FN34_DC:
c5f2: ff,14               func  255,  20
c5f4: 64,14               func  100,  20
c5f6: 4b,08               func   75,   8
c5f8: 32,ff               func   50, 255
c5fa: 26,fc               func   38, 252
c5fc: 19,fc               func   25, 252
c5fe: 00,f9               func    0, 249
c600: 00,f9               func    0, 249
c602: 00,f9               func    0, 249
c604: 00,f9               func    0, 249

   FN12CA:
c606: ff,ff,41,00         func  65535,    65
c60a: 66,06,41,00         func   1638,    65
c60e: 9a,03,32,00         func    922,    50
c612: cd,02,14,00         func    717,    20
c616: 00,02,00,00         func    512,     0
c61a: 00,00,00,00         func      0,     0
c61e: 00,00,00,00         func      0,     0

   FN23CA:
c622: ff,ff,50,00         func  65535,    80
c626: 00,0c,50,00         func   3072,    80
c62a: cd,06,32,00         func   1741,    50
c62e: 33,03,14,00         func    819,    20
c632: 00,00,00,00         func      0,     0
c636: 00,00,00,00         func      0,     0
c63a: 00,00,00,00         func      0,     0

   FN34CA:
c63e: ff,ff,50,00         func  65535,    80
c642: 00,10,50,00         func   4096,    80
c646: 9a,04,28,00         func   1178,    40
c64a: 33,03,1e,00         func    819,    30
c64e: 9a,01,14,00         func    410,    20
c652: 00,00,00,00         func      0,     0
c656: 00,00,00,00         func      0,     0

   FN12T:
c65a: ff,7f               func  255, 127
c65c: 8f,00               func  143,   0
c65e: a8,07               func  168,   7
c660: 8f,00               func  143,   0
c662: e0,06               func  224,   6
c664: 84,00               func  132,   0
c666: 68,06               func  104,   6
c668: 80,00               func  128,   0
c66a: f0,05               func  240,   5
c66c: 80,00               func  128,   0
c66e: a0,05               func  160,   5
c670: 7b,00               func  123,   0
c672: 88,04               func  136,   4
c674: 77,00               func  119,   0
c676: 70,03               func  112,   3
c678: 6c,00               func  108,   0
c67a: c0,fe               func  192, 254
c67c: 68,00               func  104,   0
c67e: 00,80               func    0, 128
c680: 68,00               func  104,   0
c682: 00,80               func    0, 128
c684: 68,00               func  104,   0
c686: 00,80               func    0, 128
c688: 68,00               func  104,   0

   FN23T:
c68a: ff,7f               func  255, 127
c68c: 8a,00               func  138,   0
c68e: f0,07               func  240,   7
c690: 8a,00               func  138,   0
c692: a8,07               func  168,   7
c694: 88,00               func  136,   0
c696: 08,07               func    8,   7
c698: 80,00               func  128,   0
c69a: 10,04               func   16,   4
c69c: 80,00               func  128,   0
c69e: 18,01               func   24,   1
c6a0: 7b,00               func  123,   0
c6a2: 50,00               func   80,   0
c6a4: 77,00               func  119,   0
c6a6: 00,80               func    0, 128
c6a8: 77,00               func  119,   0
c6aa: 00,80               func    0, 128
c6ac: 77,00               func  119,   0
c6ae: 00,80               func    0, 128
c6b0: 77,00               func  119,   0
c6b2: 00,80               func    0, 128
c6b4: 77,00               func  119,   0
c6b6: 00,80               func    0, 128
c6b8: 77,00               func  119,   0

   FN34T:
c6ba: ff,7f               func  255, 127
c6bc: 9a,00               func  154,   0
c6be: a8,07               func  168,   7
c6c0: 9a,00               func  154,   0
c6c2: 30,07               func   48,   7
c6c4: 8d,00               func  141,   0
c6c6: b8,06               func  184,   6
c6c8: 86,00               func  134,   0
c6ca: 90,06               func  144,   6
c6cc: 80,00               func  128,   0
c6ce: f0,05               func  240,   5
c6d0: 80,00               func  128,   0
c6d2: a0,05               func  160,   5
c6d4: 7d,00               func  125,   0
c6d6: d8,04               func  216,   4
c6d8: 7a,00               func  122,   0
c6da: f0,00               func  240,   0
c6dc: 6d,00               func  109,   0
c6de: 00,80               func    0, 128
c6e0: 6d,00               func  109,   0
c6e2: 00,80               func    0, 128
c6e4: 6d,00               func  109,   0
c6e6: 00,80               func    0, 128
c6e8: 6d,00               func  109,   0

   FN21T:
c6ea: ff,7f               func  255, 127
c6ec: 80,00               func  128,   0
c6ee: 00,80               func    0, 128
c6f0: 80,00               func  128,   0
c6f2: 00,80               func    0, 128
c6f4: 80,00               func  128,   0
c6f6: 00,80               func    0, 128
c6f8: 80,00               func  128,   0
c6fa: 00,80               func    0, 128
c6fc: 80,00               func  128,   0
c6fe: 00,80               func    0, 128
c700: 80,00               func  128,   0
c702: 00,80               func    0, 128
c704: 80,00               func  128,   0
c706: 00,80               func    0, 128
c708: 80,00               func  128,   0
c70a: 00,80               func    0, 128
c70c: 80,00               func  128,   0
c70e: 00,80               func    0, 128
c710: 80,00               func  128,   0
c712: 00,80               func    0, 128
c714: 80,00               func  128,   0
c716: 00,80               func    0, 128
c718: 80,00               func  128,   0

   FN32T:
c71a: ff,7f               func  255, 127
c71c: 80,00               func  128,   0
c71e: 00,80               func    0, 128
c720: 80,00               func  128,   0
c722: 00,80               func    0, 128
c724: 80,00               func  128,   0
c726: 00,80               func    0, 128
c728: 80,00               func  128,   0
c72a: 00,80               func    0, 128
c72c: 80,00               func  128,   0
c72e: 00,80               func    0, 128
c730: 80,00               func  128,   0
c732: 00,80               func    0, 128
c734: 80,00               func  128,   0
c736: 00,80               func    0, 128
c738: 80,00               func  128,   0
c73a: 00,80               func    0, 128
c73c: 80,00               func  128,   0
c73e: 00,80               func    0, 128
c740: 80,00               func  128,   0
c742: 00,80               func    0, 128
c744: 80,00               func  128,   0
c746: 00,80               func    0, 128
c748: 80,00               func  128,   0

   FN43T:
c74a: ff,7f               func  255, 127
c74c: 80,00               func  128,   0
c74e: 00,80               func    0, 128
c750: 80,00               func  128,   0
c752: 00,80               func    0, 128
c754: 80,00               func  128,   0
c756: 00,80               func    0, 128
c758: 80,00               func  128,   0
c75a: 00,80               func    0, 128
c75c: 80,00               func  128,   0
c75e: 00,80               func    0, 128
c760: 80,00               func  128,   0
c762: 00,80               func    0, 128
c764: 80,00               func  128,   0
c766: 00,80               func    0, 128
c768: 80,00               func  128,   0
c76a: 00,80               func    0, 128
c76c: 80,00               func  128,   0
c76e: 00,80               func    0, 128
c770: 80,00               func  128,   0
c772: 00,80               func    0, 128
c774: 80,00               func  128,   0
c776: 00,80               func    0, 128
c778: 80,00               func  128,   0

   FN1CB:
c77a: ff,12               func  255,  18
c77c: 1e,12               func   30,  18
c77e: 00,00               func    0,   0
c780: 00,00               func    0,   0
c782: 00,00               func    0,   0
c784: 00,00               func    0,   0

   FN2CB:
c786: ff,6e               func  255, 110
c788: 78,50               func  120,  80
c78a: 3c,14               func   60,  20
c78c: 00,00               func    0,   0
c78e: 00,00               func    0,   0
c790: 00,00               func    0,   0

   FN3CB:
c792: ff,8c               func  255, 140
c794: 8c,42               func  140,  66
c796: 64,34               func  100,  52
c798: 50,1e               func   80,  30
c79a: 00,00               func    0,   0
c79c: 00,00               func    0,   0

   FN616:
c79e: ff,aa               func  255, 170
c7a0: 8a,a0               func  138, 160
c7a2: 3f,a0               func   63, 160
c7a4: 19,64               func   25, 100
c7a6: 02,00               func    2,   0
c7a8: 00,00               func    0,   0
c7aa: 00,00               func    0,   0
c7ac: 00,00               func    0,   0

   FN617:
c7ae: ff,ff,00,40         func  65535, 16384
c7b2: 1b,37,00,40         func  14107, 16384
c7b6: d1,32,f4,45         func  13009, 17908
c7ba: fa,2e,64,4b         func  12026, 19300
c7be: 7f,2a,89,51         func  10879, 20873
c7c2: 71,25,e5,58         func   9585, 22757
c7c6: cf,1f,68,61         func   8143, 24936
c7ca: cb,19,7f,6a         func   6603, 27263
c7ce: 85,13,a0,72         func   4997, 29344
c7d2: 1f,0d,c1,7a         func   3359, 31425
c7d6: 98,06,c1,82         func   1688, 33473
c7da: 00,00,71,8d         func      0, 36209

   FN620:
c7de: ff,00               func  255,   0
c7e0: aa,00               func  170,   0
c7e2: a4,20               func  164,  32
c7e4: 98,3f               func  152,  63
c7e6: 85,60               func  133,  96
c7e8: 68,87               func  104, 135
c7ea: 34,bd               func   52, 189
c7ec: 17,d8               func   23, 216
c7ee: 10,e0               func   16, 224
c7f0: 09,eb               func    9, 235
c7f2: 00,f5               func    0, 245
c7f4: 00,ff               func    0, 255

   FN622:
c7f6: ff,7f,fd,ff         func   32767,     -3
c7fa: d0,07,fd,ff         func    2000,     -3
c7fe: b0,04,01,00         func    1200,      1
c802: c8,00,08,00         func     200,      8
c806: 00,80,08,00         func  -32768,      8
c80a: 00,80,08,00         func  -32768,      8
c80e: 00,80,08,00         func  -32768,      8
c812: 00,80,08,00         func  -32768,      8
c816: 00,80,08,00         func  -32768,      8
c81a: 00,80,08,00         func  -32768,      8
c81e: 00,80,08,00         func  -32768,      8
c822: 00,80,08,00         func  -32768,      8

   FN622A:
c826: ff,7f,80,00         func   32767,   128
c82a: 00,80,80,00         func  -32768,   128
c82e: 00,80,80,00         func  -32768,   128
c832: 00,80,80,00         func  -32768,   128
c836: 00,80,80,00         func  -32768,   128
c83a: 00,80,80,00         func  -32768,   128
c83e: 00,80,80,00         func  -32768,   128
c842: 00,80,80,00         func  -32768,   128

   FN405:
c846: 7f,8c               func   127, 140
c848: 46,80               func    70, 128
c84a: ec,6b               func   -20, 107
c84c: 80,6b               func  -128, 107
c84e: 80,6b               func  -128, 107
c850: 80,6b               func  -128, 107

   FN618:
c852: ff,02               func  255,   2
c854: 7d,02               func  125,   2
c856: 00,00               func    0,   0
c858: 00,00               func    0,   0
c85a: 00,00               func    0,   0

   FN619:
c85c: ff,09               func  255,   9
c85e: bc,07               func  188,   7
c860: 00,06               func    0,   6
c862: 00,06               func    0,   6
c864: 00,06               func    0,   6

   FN621:
c866: ff,6d               func  255, 109
c868: a0,6d               func  160, 109
c86a: 8c,87               func  140, 135
c86c: 64,b9               func  100, 185
c86e: 50,cf               func   80, 207
c870: 3c,e3               func   60, 227
c872: 14,fc               func   20, 252
c874: 00,ff               func    0, 255

   FN623:
c876: ff,ff,29,6c         func  65535, 27689
c87a: b8,fe,29,6c         func  65208, 27689
c87e: cd,8c,79,79         func  36045, 31097
c882: 00,80,00,80         func  32768, 32768
c886: 33,73,f2,82         func  29491, 33522
c88a: f6,68,33,83         func  26870, 33587
c88e: 00,00,b0,82         func      0, 33456

   FN034A:
c892: ff,ff,00,05         func  65535,  1280
c896: cd,6c,00,05         func  27853,  1280
c89a: cd,0c,00,00         func   3277,     0
c89e: 00,00,00,00         func      0,     0
c8a2: 00,00,00,00         func      0,     0
c8a6: 00,00,00,00         func      0,     0
c8aa: 00,00,00,00         func      0,     0

   FN070C:
c8ae: ff,ff,00,05         func  65535,  1280
c8b2: 50,46,00,05         func  18000,  1280
c8b6: 70,17,00,01         func   6000,   256
c8ba: f0,0a,00,00         func   2800,     0
c8be: 00,00,00,00         func      0,     0
c8c2: 00,00,00,00         func      0,     0
c8c6: 00,00,00,00         func      0,     0

   FN1420:
c8ca: 80,80,85,88,8f,94,a6,ac,a9,92  table  128, 128, 133, 136, 143, 148, 166, 172, 169, 146    
c8d4: 8f,92,94,9a,9f,a6,b6,bb,b8,a1  table  143, 146, 148, 154, 159, 166, 182, 187, 184, 161    
c8de: 9c,9f,a1,a4,ac,b1,c0,c5,c3,ac  table  156, 159, 161, 164, 172, 177, 192, 197, 195, 172    
c8e8: ac,ae,b1,b3,b8,c0,cd,d2,cf,b8  table  172, 174, 177, 179, 184, 192, 205, 210, 207, 184    
c8f2: b6,b6,b8,bd,c3,c8,d4,da,d7,c0  table  182, 182, 184, 189, 195, 200, 212, 218, 215, 192    
c8fc: bd,bd,c0,c3,c8,cf,da,df,df,c8  table  189, 189, 192, 195, 200, 207, 218, 223, 223, 200    
c906: c3,c3,c3,c8,cd,d4,e1,e6,e4,cd  table  195, 195, 195, 200, 205, 212, 225, 230, 228, 205    
c910: c8,c8,c8,cd,d2,d7,e4,e6,e6,cf  table  200, 200, 200, 205, 210, 215, 228, 230, 230, 207    
c91a: ca,ca,cd,cf,d4,da,e6,e9,e9,d2  table  202, 202, 205, 207, 212, 218, 230, 233, 233, 210    
c924: ca,cd,cd,d2,d7,dc,e6,ec,e9,d2  table  202, 205, 205, 210, 215, 220, 230, 236, 233, 210    

   FN1615A:
c92e: 02,13,16,15,13,15   table   2,  19,  22,  21,  19,  21
c934: 32,3a,3d,3c,3b,3b   table  50,  58,  61,  60,  59,  59
c93a: 55,5d,60,60,5f,5e   table  85,  93,  96,  96,  95,  94
c940: 74,80,83,83,82,82   table 116, 128, 131, 131, 130, 130
c946: 91,a3,a6,a5,a4,a4   table 145, 163, 166, 165, 164, 164
c94c: ad,c7,cb,c9,c7,c5   table 173, 199, 203, 201, 199, 197

   FN1616:
c952: 12,16,19,1d,21,25   table  18,  22,  25,  29,  33,  37
c958: 0f,13,18,1c,21,26   table  15,  19,  24,  28,  33,  38
c95e: 0d,11,16,1c,21,27   table  13,  17,  22,  28,  33,  39
c964: 0b,10,15,1b,21,29   table  11,  16,  21,  27,  33,  41
c96a: 08,0e,14,1a,21,2a   table   8,  14,  20,  26,  33,  42
c970: 06,0c,13,1a,21,2b   table   6,  12,  19,  26,  33,  43

   FN1617:
c976: 83,8d,99,9e,ac,de   table 131, 141, 153, 158, 172, 222
c97c: 73,84,90,96,a1,c9   table 115, 132, 144, 150, 161, 201
c982: 59,74,80,85,8a,97   table  89, 116, 128, 133, 138, 151
c988: 54,66,73,78,7c,85   table  84, 102, 115, 120, 124, 133
c98e: 49,55,64,6c,72,77   table  73,  85, 100, 108, 114, 119
c994: 42,4b,58,61,65,68   table  66,  75,  88,  97, 101, 104

   FN46B_T:
c99a: ff,7f               func  255, 127
c99c: 0a,00               func   10,   0
c99e: 78,05               func  120,   5
c9a0: 0a,00               func   10,   0
c9a2: b0,04               func  176,   4
c9a4: 1e,00               func   30,   0
c9a6: 20,03               func   32,   3
c9a8: 32,00               func   50,   0
c9aa: 58,02               func   88,   2
c9ac: 50,00               func   80,   0
c9ae: 00,80               func    0, 128
c9b0: 50,00               func   80,   0
c9b2: 00,80               func    0, 128
c9b4: 50,00               func   80,   0

   FN54B_T:
c9b6: ff,7f               func  255, 127
c9b8: 0a,00               func   10,   0
c9ba: 58,02               func   88,   2
c9bc: 0a,00               func   10,   0
c9be: 90,01               func  144,   1
c9c0: 28,00               func   40,   0
c9c2: 00,80               func    0, 128
c9c4: 28,00               func   40,   0
c9c6: 00,80               func    0, 128
c9c8: 28,00               func   40,   0
c9ca: 00,80               func    0, 128
c9cc: 28,00               func   40,   0
c9ce: 00,80               func    0, 128
c9d0: 28,00               func   40,   0

   FN56B_T:
c9d2: ff,7f               func  255, 127
c9d4: 0a,00               func   10,   0
c9d6: 20,03               func   32,   3
c9d8: 0a,00               func   10,   0
c9da: 58,02               func   88,   2
c9dc: 28,00               func   40,   0
c9de: 00,80               func    0, 128
c9e0: 28,00               func   40,   0
c9e2: 00,80               func    0, 128
c9e4: 28,00               func   40,   0
c9e6: 00,80               func    0, 128
c9e8: 28,00               func   40,   0
c9ea: 00,80               func    0, 128
c9ec: 28,00               func   40,   0

   FN64B_T:
c9ee: ff,7f               func  255, 127
c9f0: 0a,00               func   10,   0
c9f2: 20,03               func   32,   3
c9f4: 0a,00               func   10,   0
c9f6: 58,02               func   88,   2
c9f8: 28,00               func   40,   0
c9fa: 00,80               func    0, 128
c9fc: 28,00               func   40,   0
c9fe: 00,80               func    0, 128
ca00: 28,00               func   40,   0
ca02: 00,80               func    0, 128
ca04: 28,00               func   40,   0
ca06: 00,80               func    0, 128
ca08: 28,00               func   40,   0

   FN46S_T:
ca0a: ff,7f               func  255, 127
ca0c: 0a,00               func   10,   0
ca0e: b0,04               func  176,   4
ca10: 0a,00               func   10,   0
ca12: 20,03               func   32,   3
ca14: 14,00               func   20,   0
ca16: 90,01               func  144,   1
ca18: 28,00               func   40,   0
ca1a: c0,fe               func  192, 254
ca1c: 50,00               func   80,   0
ca1e: 00,80               func    0, 128
ca20: 50,00               func   80,   0
ca22: 00,80               func    0, 128
ca24: 50,00               func   80,   0

   FN54S_T:
ca26: ff,7f               func  255, 127
ca28: 0a,00               func   10,   0
ca2a: 00,80               func    0, 128
ca2c: 0a,00               func   10,   0
ca2e: 00,80               func    0, 128
ca30: 0a,00               func   10,   0
ca32: 00,80               func    0, 128
ca34: 0a,00               func   10,   0
ca36: 00,80               func    0, 128
ca38: 0a,00               func   10,   0
ca3a: 00,80               func    0, 128
ca3c: 0a,00               func   10,   0
ca3e: 00,80               func    0, 128
ca40: 0a,00               func   10,   0

   FN56S_T:
ca42: ff,7f               func  255, 127
ca44: 1e,00               func   30,   0
ca46: b0,04               func  176,   4
ca48: 1e,00               func   30,   0
ca4a: 20,03               func   32,   3
ca4c: 28,00               func   40,   0
ca4e: 58,02               func   88,   2
ca50: 28,00               func   40,   0
ca52: 90,01               func  144,   1
ca54: 32,00               func   50,   0
ca56: c0,fe               func  192, 254
ca58: 46,00               func   70,   0
ca5a: 00,80               func    0, 128
ca5c: 46,00               func   70,   0

   FN64S_T:
ca5e: ff,7f               func  255, 127
ca60: 0a,00               func   10,   0
ca62: 20,03               func   32,   3
ca64: 0a,00               func   10,   0
ca66: 90,01               func  144,   1
ca68: 1e,00               func   30,   0
ca6a: 00,80               func    0, 128
ca6c: 1e,00               func   30,   0
ca6e: 00,80               func    0, 128
ca70: 1e,00               func   30,   0
ca72: 00,80               func    0, 128
ca74: 1e,00               func   30,   0
ca76: 00,80               func    0, 128
ca78: 1e,00               func   30,   0

   FN46F_T:
ca7a: ff,7f               func  255, 127
ca7c: 0a,00               func   10,   0
ca7e: 58,02               func   88,   2
ca80: 0a,00               func   10,   0
ca82: 90,01               func  144,   1
ca84: 14,00               func   20,   0
ca86: 00,80               func    0, 128
ca88: 14,00               func   20,   0
ca8a: 00,80               func    0, 128
ca8c: 14,00               func   20,   0
ca8e: 00,80               func    0, 128
ca90: 14,00               func   20,   0
ca92: 00,80               func    0, 128
ca94: 14,00               func   20,   0

   FN54F_T:
ca96: ff,7f               func  255, 127
ca98: 0a,00               func   10,   0
ca9a: 00,80               func    0, 128
ca9c: 0a,00               func   10,   0
ca9e: 00,80               func    0, 128
caa0: 0a,00               func   10,   0
caa2: 00,80               func    0, 128
caa4: 0a,00               func   10,   0
caa6: 00,80               func    0, 128
caa8: 0a,00               func   10,   0
caaa: 00,80               func    0, 128
caac: 0a,00               func   10,   0
caae: 00,80               func    0, 128
cab0: 0a,00               func   10,   0

   FN56F_T:
cab2: ff,7f               func  255, 127
cab4: 0a,00               func   10,   0
cab6: 00,80               func    0, 128
cab8: 0a,00               func   10,   0
caba: 00,80               func    0, 128
cabc: 0a,00               func   10,   0
cabe: 00,80               func    0, 128
cac0: 0a,00               func   10,   0
cac2: 00,80               func    0, 128
cac4: 0a,00               func   10,   0
cac6: 00,80               func    0, 128
cac8: 0a,00               func   10,   0
caca: 00,80               func    0, 128
cacc: 0a,00               func   10,   0

   FN64F_T:
cace: ff,7f               func  255, 127
cad0: 0a,00               func   10,   0
cad2: 00,80               func    0, 128
cad4: 0a,00               func   10,   0
cad6: 00,80               func    0, 128
cad8: 0a,00               func   10,   0
cada: 00,80               func    0, 128
cadc: 0a,00               func   10,   0
cade: 00,80               func    0, 128
cae0: 0a,00               func   10,   0
cae2: 00,80               func    0, 128
cae4: 0a,00               func   10,   0
cae6: 00,80               func    0, 128
cae8: 0a,00               func   10,   0

   FN46NE:
caea: ff,ff               func  255, 255
caec: c0,00               func  192,   0
caee: c0,12               func  192,  18
caf0: c0,00               func  192,   0
caf2: a0,0f               func  160,  15
caf4: 80,00               func  128,   0
caf6: 00,00               func    0,   0
caf8: 80,00               func  128,   0
cafa: 00,00               func    0,   0
cafc: 80,00               func  128,   0
cafe: 00,00               func    0,   0
cb00: 80,00               func  128,   0
cb02: 00,00               func    0,   0
cb04: 80,00               func  128,   0

   FN54NE:
cb06: ff,ff               func  255, 255
cb08: f3,00               func  243,   0
cb0a: 10,27               func   16,  39
cb0c: f3,00               func  243,   0
cb0e: 40,1f               func   64,  31
cb10: 80,00               func  128,   0
cb12: 00,00               func    0,   0
cb14: 80,00               func  128,   0
cb16: 00,00               func    0,   0
cb18: 80,00               func  128,   0
cb1a: 00,00               func    0,   0
cb1c: 80,00               func  128,   0
cb1e: 00,00               func    0,   0
cb20: 80,00               func  128,   0

   FN56NE:
cb22: ff,ff               func  255, 255
cb24: f3,00               func  243,   0
cb26: 40,1f               func   64,  31
cb28: f3,00               func  243,   0
cb2a: 70,17               func  112,  23
cb2c: b0,00               func  176,   0
cb2e: a0,0f               func  160,  15
cb30: 80,00               func  128,   0
cb32: 00,00               func    0,   0
cb34: 80,00               func  128,   0
cb36: 00,00               func    0,   0
cb38: 80,00               func  128,   0
cb3a: 00,00               func    0,   0
cb3c: 80,00               func  128,   0

   FN64NE:
cb3e: ff,ff               func  255, 255
cb40: 80,00               func  128,   0
cb42: 00,00               func    0,   0
cb44: 80,00               func  128,   0
cb46: 00,00               func    0,   0
cb48: 80,00               func  128,   0
cb4a: 00,00               func    0,   0
cb4c: 80,00               func  128,   0
cb4e: 00,00               func    0,   0
cb50: 80,00               func  128,   0
cb52: 00,00               func    0,   0
cb54: 80,00               func  128,   0
cb56: 00,00               func    0,   0
cb58: 80,00               func  128,   0

cb5a: 9c,ce               word   ce9c
cb5c: 40,01               word    140            VTC_OVER
cb5e: c0,00               word     c0            VTC_UNDER
cb60: 00,20               word   2000            FKMKAY
cb62: 0a                  byte      a            SFT_FM_LVL
cb63: 05                  byte      5            CC_FM_LVL
cb64: 00,18               word   1800            MAPEDG
cb66: 00                  byte      0            LONG_MAP_RQD
cb67: 02                  byte      2            MAP_CYCLE
cb68: 5a,00               word     5a            AEM
cb6a: 00                  byte      0            ALPHA

cb6b: ff                  ???   

cb6c: 00,02               word    200            TPDLTA
cb6e: 00                  byte      0            FRCTAE

cb6f: ff                  ???   

cb70: 14,00               word     14            AETAR
cb72: 08                  byte      8            NCNT

cb73: ff                  ???   

cb74: 40,06               word    640            UNRPM
cb76: c8,00               word     c8            UNRPMH
cb78: b0,04               word    4b0            NRUN
cb7a: 90,01               word    190            NSTALL
cb7c: 05                  byte      5            CRKTM1
cb7d: 00                  byte      0            CRKPIPCNT2
cb7e: 00                  byte      0            CRKTMR_INC
cb7f: 00                  byte      0            ACDHP
cb80: 01                  byte      1            BIHP
cb81: 01                  byte      1            CANPHP
cb82: 00                  byte      0            KIHP
cb83: 00                  byte      0            PFEHP                             # EGR Type 0 = Sonic
cb84: 00                  byte      0            PSPSHP
cb85: 01                  byte      1            THRMHP
cb86: 04                  byte      4            TSTRAT
cb87: 06                  byte      6            TRLOAD
cb88: 00                  byte      0            GOVHP
cb89: 01                  byte      1            VSTYPE
cb8a: 01                  byte      1            IGN_TYPE

cb8b: ff                  ???   

cb8c: a4                  byte     a4
cb8d: 10                  byte     10
cb8e: 53                  byte     53            AFECT1
cb8f: 69                  byte     69            AFECT2
cb90: 19                  byte     19            AFACT1
cb91: 64                  byte     64            AFACT2
cb92: 19,00               word     19            ADAPTM
cb94: b3                  byte     b3            AMPMUL

cb95: 00                  ???   

cb96: 8f,02               word    28f            DELAMB
cb98: 33,00               word     33            DELROW
cb9a: 33,00               word     33            DELCOL
cb9c: 00                  byte      0            CHKFLG
cb9d: 40                  byte     40            MINADP
cb9e: c0                  byte     c0            MAXADP
cb9f: 00                  byte      0            AELIM
cba0: 42,00               word     42            ADEFTR
cba2: 02                  byte      2            ADEGCT
cba3: 00                  byte      0            FAEGCT
cba4: 00                  byte      0            KWUCNT
cba5: 01                  byte      1            HCAMSW
cba6: 66                  byte     66            MULTM
cba7: 00                  byte      0            XAPT
cba8: 8d                  byte     8d            XMAPPA

cba9: ff                  ???   

cbaa: 00,32               word   3200            VKYPWR
cbac: 78,00               word     78            VIPSPK
cbae: 00,60               word   6000            REQV
cbb0: 00,a0               word   a000            LEQV
cbb2: 9a,09               word    99a            VIPRR1
cbb4: 33,03               word    333            VIPLR1
cbb6: a0,0f               word    fa0            VNMIN
cbb8: 18,ff               word   ff18            VDLY8
cbba: 33,73               word   7333            VRLAM
cbbc: a0,28               word   28a0            VIPTM3
cbbe: c0,21               word   21c0            VTAP1
cbc0: c0,3f               word   3fc0            VTAP2
cbc2: c0,21               word   21c0            VTAP3
cbc4: c0,3f               word   3fc0            VTAP4
cbc6: 80,70               word   7080            VTAP5
cbc8: 80,57               word   5780            VTAP6
cbca: 00,0a               word    a00            ACTMIN
cbcc: c0,e9               word   e9c0            ACTMAX
cbce: 01                  byte      1            V_EGOHP
cbcf: 3c                  byte     3c            VECT5
cbd0: 80,f7               word   f780            TAPMAX
cbd2: 80,11               word   1180            TAPMIN
cbd4: e1                  byte     e1            WIGLVL
cbd5: 01                  byte      1            V_FPMFLG
cbd6: 0b,08               word    80b            V_FPMDLY
cbd8: 00,0a               word    a00            ECTMIN
cbda: c0,e9               word   e9c0            ECTMAX
cbdc: 33,01               word    133            V_HICKOKTM
cbde: 33,01               word    133            V_LANSDTM
cbe0: 10                  byte     10            VIDMST

cbe1: ff                  ???   

cbe2: 2c,01               word    12c            VIDMTM
cbe4: d0,07               word    7d0            VLORPM
cbe6: 96,00               word     96            VPIPTM
cbe8: 01,ff               word   ff01            V_ADAPTV_ENA2
cbea: 33,93               word   9333            V_LAMAV_MIN
cbec: cd,6c               word   6ccd            V_LAMAV_MAX
cbee: 66                  byte     66            V_ADPMP_MAX
cbef: 46                  byte     46            V_ADPMP_MIN
cbf0: 10,27               word   2710            V_ADPN_MAX
cbf2: c0,12               word   12c0            V_ADPN_MIN
cbf4: 01                  byte      1            VAIRFL
cbf5: 01                  byte      1            VTABFL
cbf6: 9a,01               word    19a            VTCEGO
cbf8: 00,02               word    200            TCN
cbfa: 50                  byte     50            V_GOOSMP

cbfb: ff                  ???   

cbfc: 58,02               word    258            ISLBND
cbfe: 20,03               word    320            ISUBND
cc00: 71,00               word     71            V_TCDSN
cc02: bc,00               word     bc            VISCN
cc04: a0,60               word   60a0            VISDL1
cc06: 00,0c               word    c00            VTCDSN
cc08: 01                  byte      1            VBISW
cc09: 3c                  byte     3c            V_BOO_SPD
cc0a: 0a                  byte      a            V_BOOSPD_TM
cc0b: 01                  byte      1            V_CBOO_ENA
cc0c: 05                  byte      5
cc0d: 01                  byte      1
cc0e: 80                  byte     80

cc0f: 02                  ???   

cc10: 3c                  byte     3c
cc11: 00                  byte      0
cc12: 08                  byte      8
cc13: 18                  byte     18            V_LEGOMAX2
cc14: 03                  byte      3
cc15: e6                  byte     e6            V_EGORNTM
cc16: 32                  byte     32
cc17: 01                  byte      1            V_ADAPTV_ENA
cc18: 50                  byte     50            V_LESTM
cc19: 06                  byte      6
cc1a: 6d                  byte     6d            V_EGOMAP_MAX
cc1b: 3b                  byte     3b            V_EGOMAP_MIN
cc1c: 80,07               word    780            V_EGOTP_MIN
cc1e: 00                  byte      0            V_EGOAEMAX
cc1f: 10                  byte     10            V_EGR_CTMR
cc20: 5a                  byte     5a            VCRTDC
cc21: 08                  byte      8            VEGRAT
cc22: 20                  byte     20            VDCMIN
cc23: 60                  byte     60            VDCMAX
cc24: 40                  byte     40            VEGVAC
cc25: 04                  byte      4            ETV_TEST_SEC
cc26: 32                  byte     32            TV1CNTS_TEST
cc27: cb                  byte     cb            TV2CNTS_TEST
cc28: 01                  byte      1            V_ETV_TEST

cc29: ff                  ???   

cc2a: 80,0c               word    c80            VETVDT
cc2c: 80,02               word    280            EVPMIN
cc2e: 40,f6               word   f640            EVPMAX
cc30: 80,02               word    280            VEVPLL

cc32: 00,25               ???   

cc34: 00,1e               word   1e00

cc36: 00,28               ???   

cc38: 10                  byte     10

cc39: ff                  ???   

cc3a: 40,b3               word   b340            VIACT1
cc3c: c0,0f               word    fc0            VIACT2
cc3e: 40,be               word   be40            VIACT3
cc40: c0,0f               word    fc0            VIACT4
cc42: 40,b3               word   b340            VIECT1
cc44: c0,0f               word    fc0            VIECT2
cc46: c0,3a               word   3ac0            VIECT3
cc48: c0,0f               word    fc0            VIECT4
cc4a: 4b                  byte     4b            VECT3                             # VECT3 = Minimum coolant temperature, engine on.
cc4b: 05                  byte      5
cc4c: 73,00               word     73            V_879_MULT
cc4e: 14                  byte     14            SETLNG_TM

cc4f: ff                  ???   

cc50: 00,10               word   1000            VSIBRM
cc52: 00,f0               word   f000            VSIBRN
cc54: 80                  byte     80            V820A

cc55: ff                  ???   

cc56: 80,25               word   2580            V_GOOSTP
cc58: 40,06               word    640            V_GOOSN
cc5a: c8,00               word     c8            V_GOOSPK
cc5c: cd,6c               word   6ccd            V_KNK_FUEL
cc5e: 0c                  byte      c            V_GOOS_DELAY
cc5f: 78                  byte     78            V_GOOSEC
cc60: 01                  byte      1            V_GOOSW
cc61: 18                  byte     18            V_KNK_DLY
cc62: 19,ff               word   ff19            V_KTS
cc64: b0,04               word    4b0            VMDEL1
cc66: 1e,06               word    61e            VMDEL2
cc68: 1d,07               word    71d            VMDEL3
cc6a: 91,08               word    891            VMDEL4
cc6c: 00,00               word      0            VMDEL5
cc6e: ff,ff               word   ffff            VMDEL6
cc70: 10,00               word     10            V_PIPMAP_LMT
cc72: 00,02               word    200            V_MAPDIF
cc74: a0,01               word    1a0            V_BPMIN
cc76: 9a                  byte     9a            VMPMAX

cc77: ff                  ???   

cc78: 24,00               word     24            FMDTM
cc7a: 01,00               word      1            MILLIM
cc7c: 50,00               word     50            V_MILONTM
cc7e: 01                  byte      1            MIL_SW

cc7f: ff                  ???   

cc80: c0,de               word   dec0            VND1
cc82: 00,e4               word   e400            VND2
cc84: 40,22               word   2240            VND3
cc86: 40,39               word   3940            VND4
cc88: 01,00               word      1            V_SW_PRK
cc8a: 58,02               word    258            VSPRPM
cc8c: 18,00               word     18            V_SPK_FINAL
cc8e: a0,00               word     a0            V_SPK_INIT
cc90: 01,0e               word    e01            V_SPK_ENABL
cc92: 18,08               word    818            VSPTDL
cc94: 28,40               word   4028            VDLY2
cc96: 40,00               word     40            VATMR2
cc98: 73                  byte     73            V_ECTCTMAX
cc99: 55                  byte     55            V_ECTCTMIN
cc9a: 05                  byte      5            V_ECT_DEL
cc9b: 14                  byte     14            V_ECTLIM
cc9c: f0                  byte     f0            V_ECT_TIME
cc9d: 1e                  byte     1e            V_STABLTIM
cc9e: b0,04               word    4b0            V_TIME_LIM
cca0: 40,b3               word   b340            VITOT1
cca2: 00,0a               word    a00            VITOT2
cca4: 40,b3               word   b340            VITOT4
cca6: 00,0a               word    a00            VITOT3
cca8: 66,04               word    466            V_ISCMOD_MAX
ccaa: 9a,03               word    39a            V_ISCMOD_MIN
ccac: 0a,00               word      a            V_KDNDT
ccae: 58,02               word    258            V_MODE_END
ccb0: 90,01               word    190            V_NLOW
ccb2: 60,04               word    460            V_NHIGH
ccb4: ac,0d               word    dac            V_RPM_SET
ccb6: 28,01               word    128
ccb8: 20,46               word   4620            VDLY_ENTER
ccba: 08                  byte      8            V_STO_DELAY
ccbb: 01                  byte      1
ccbc: 10                  byte     10
ccbd: c8                  byte     c8
ccbe: c8                  byte     c8
ccbf: c8                  byte     c8
ccc0: c8                  byte     c8
ccc1: c8                  byte     c8
ccc2: c8                  byte     c8
ccc3: c8                  byte     c8
ccc4: c8                  byte     c8
ccc5: c8                  byte     c8
ccc6: c8                  byte     c8
ccc7: c8                  byte     c8
ccc8: c8                  byte     c8
ccc9: c8                  byte     c8
ccca: c8                  byte     c8
cccb: c8                  byte     c8
cccc: c8                  byte     c8
cccd: c8                  byte     c8
ccce: c8                  byte     c8
cccf: c8                  byte     c8
ccd0: c8                  byte     c8
ccd1: c8                  byte     c8
ccd2: c8                  byte     c8
ccd3: c8                  byte     c8
ccd4: c8                  byte     c8
ccd5: c8                  byte     c8
ccd6: c8                  byte     c8
ccd7: c8                  byte     c8
ccd8: c8                  byte     c8
ccd9: c8                  byte     c8
ccda: 08                  byte      8
ccdb: 08                  byte      8
ccdc: 08                  byte      8
ccdd: c8                  byte     c8
ccde: 3c                  byte     3c
ccdf: fe                  byte     fe
cce0: c8                  byte     c8
cce1: c8                  byte     c8
cce2: 28                  byte     28
cce3: fe                  byte     fe
cce4: a0                  byte     a0
cce5: 32                  byte     32
cce6: 32                  byte     32
cce7: 32                  byte     32
cce8: 32                  byte     32
cce9: 32                  byte     32
ccea: 32                  byte     32
cceb: 64                  byte     64
ccec: 04                  byte      4
cced: 32                  byte     32
ccee: 32                  byte     32
ccef: 32                  byte     32
ccf0: 32                  byte     32
ccf1: 32                  byte     32
ccf2: 00                  byte      0
ccf3: 00                  byte      0
ccf4: 64                  byte     64
ccf5: 32                  byte     32
ccf6: 0a                  byte      a
ccf7: 00                  byte      0
ccf8: 0a                  byte      a
ccf9: 0a                  byte      a
ccfa: 0a                  byte      a
ccfb: 32                  byte     32
ccfc: 32                  byte     32
ccfd: 0a                  byte      a
ccfe: fe                  byte     fe
ccff: 05                  byte      5
cd00: 05                  byte      5
cd01: ff                  byte     ff
cd02: 02                  byte      2
cd03: 02                  byte      2
cd04: 02                  byte      2
cd05: 0a                  byte      a
cd06: 02                  byte      2
cd07: 03                  byte      3
cd08: 0a                  byte      a
cd09: 0a                  byte      a
cd0a: 02                  byte      2
cd0b: 03                  byte      3
cd0c: 28                  byte     28
cd0d: ff                  byte     ff
cd0e: 00                  byte      0
cd0f: 09                  byte      9
cd10: 00                  byte      0
cd11: 09                  byte      9
cd12: 00                  byte      0
cd13: 05                  byte      5
cd14: 00                  byte      0
cd15: 09                  byte      9
cd16: 00                  byte      0
cd17: 09                  byte      9
cd18: 00                  byte      0
cd19: 09                  byte      9
cd1a: 00                  byte      0
cd1b: 09                  byte      9
cd1c: 00                  byte      0
cd1d: 09                  byte      9
cd1e: 00                  byte      0
cd1f: 09                  byte      9
cd20: 00                  byte      0
cd21: 09                  byte      9

   FN331A:
cd22: ff,ff,80,00         func  65535,   128
cd26: 80,70,80,00         func  28800,   128
cd2a: c0,44,8d,00         func  17600,   141
cd2e: 00,2d,e0,00         func  11520,   224
cd32: 00,00,e0,00         func      0,   224

   FN332:
cd36: ff,24               func  255,  36
cd38: 24,24               func   36,  36
cd3a: 10,3d               func   16,  61
cd3c: 00,5c               func    0,  92

cd3e: 00,00               ???   

   FN378:
cd40: ff,80               func  255, 128
cd42: e0,80               func  224, 128
cd44: c8,53               func  200,  83
cd46: a0,4d               func  160,  77
cd48: 00,46               func    0,  70

   FN379:
cd4a: ff,ff,40,00         func  65535,    64
cd4e: 00,00,40,00         func      0,    64
cd52: 00,00,40,00         func      0,    64
cd56: 00,00,40,00         func      0,    64
cd5a: 00,00,40,00         func      0,    64
cd5e: 00,00,40,00         func      0,    64

   FN324:
cd62: ff,80               func  255, 128
cd64: 00,80               func    0, 128
cd66: 00,80               func    0, 128
cd68: 00,80               func    0, 128
cd6a: 00,80               func    0, 128
cd6c: 00,80               func    0, 128

   FN1303:
cd6e: 1c,24,30,54,5c,68,70,84  table   28,  36,  48,  84,  92, 104, 112, 132
cd76: 1a,1e,26,40,49,50,56,64  table   26,  30,  38,  64,  73,  80,  86, 100
cd7e: 16,1a,20,36,3e,45,48,58  table   22,  26,  32,  54,  62,  69,  72,  88
cd86: 0f,14,1a,20,22,26,2c,34  table   15,  20,  26,  32,  34,  38,  44,  52
cd8e: 06,0a,0e,12,17,19,1b,1d  table    6,  10,  14,  18,  23,  25,  27,  29
cd96: 05,09,0d,11,15,17,19,1b  table    5,   9,  13,  17,  21,  23,  25,  27
cd9e: 03,04,06,0a,12,18,1e,24  table    3,   4,   6,  10,  18,  24,  30,  36

   FN031:
cda6: ff,ff,00,09         func  65535,  2304
cdaa: 7a,00,00,09         func    122,  2304
cdae: 73,00,00,08         func    115,  2048
cdb2: 26,00,00,02         func     38,   512
cdb6: 1a,00,00,00         func     26,     0
cdba: 00,00,00,00         func      0,     0
cdbe: 00,00,00,00         func      0,     0
cdc2: 00,00,00,00         func      0,     0

   FN070?L?:
cdc6: ff,ff,00,09         func  65535,  2304
cdca: 50,46,00,09         func  18000,  2304
cdce: b0,36,00,08         func  14000,  2048
cdd2: 40,1f,00,05         func   8000,  1280
cdd6: a0,0f,00,01         func   4000,   256
cdda: 80,0c,00,00         func   3200,     0
cdde: 00,00,00,00         func      0,     0

   FN371:
cde2: 7f,ff               func   127, 255
cde4: 5a,ff               func    90, 255
cde6: 26,cd               func    38, 205
cde8: 00,c0               func     0, 192
cdea: f6,a6               func   -10, 166
cdec: 80,a6               func  -128, 166

   FN1325L:
cdee: 03,03,03,03,03,03,03,03,03,03  table    3,   3,   3,   3,   3,   3,   3,   3,   3,   3    
cdf8: 03,03,03,03,03,03,03,03,03,03  table    3,   3,   3,   3,   3,   3,   3,   3,   3,   3    
ce02: 03,03,03,03,03,03,03,03,03,03  table    3,   3,   3,   3,   3,   3,   3,   3,   3,   3    
ce0c: 03,03,03,03,03,03,03,03,03,03  table    3,   3,   3,   3,   3,   3,   3,   3,   3,   3    
ce16: 03,03,03,03,03,03,03,03,03,03  table    3,   3,   3,   3,   3,   3,   3,   3,   3,   3    
ce20: 03,03,03,03,03,03,03,03,03,03  table    3,   3,   3,   3,   3,   3,   3,   3,   3,   3    
ce2a: 03,03,03,03,02,02,02,c7,c6,c5  table    3,   3,   3,   3,   2,   2,   2, 199, 198, 197    
ce34: 03,03,03,03,02,02,be,c7,c6,c5  table    3,   3,   3,   3,   2,   2, 190, 199, 198, 197    
ce3e: ba,b9,b8,b7,b6,b5,be,c7,c6,c5  table  186, 185, 184, 183, 182, 181, 190, 199, 198, 197    
ce48: ba,b9,b8,b7,b6,b5,be,c7,c6,c5  table  186, 185, 184, 183, 182, 181, 190, 199, 198, 197    
ce52: 03,03,03,03,03,03,03,03,03,03  table    3,   3,   3,   3,   3,   3,   3,   3,   3,   3    

   FN348:
ce5c: ff,7f,3d,0a         func   32767,  2621                                      # FN348(ECT) = Crank fuel pulsewidth as a function of ECT.
ce60: 7f,00,3d,0a         func     127,  2621
ce64: 76,00,d5,09         func     118,  2517
ce68: 70,00,d5,09         func     112,  2517
ce6c: 6c,00,37,09         func     108,  2359
ce70: 64,00,2b,07         func     100,  1835
ce74: 5a,00,2b,07         func      90,  1835
ce78: 3c,00,d9,0e         func      60,  3801
ce7c: 23,00,87,16         func      35,  5767
ce80: 14,00,9c,44         func      20, 17564
ce84: 05,00,cd,4c         func       5, 19661
ce88: f6,ff,48,61         func     -10, 24904
ce8c: 00,80,48,61         func  -32768, 24904

   FN387:
ce90: 7f,43               func   127,  67
ce92: 00,43               func     0,  67
ce94: fb,46               func    -5,  70
ce96: f6,60               func   -10,  96
ce98: 80,60               func  -128,  96
ce9a: 80,60               func  -128,  96

ce9c -> ffff = 0xff  ## fill ## 


 ##########   END of Listing   ##########

