1DGA disassembly

All hardware related, disassembly / programming and code discussions belong here.
Jamie from oz
Posts: 54
Joined: 2022 Jul 08, 04:54
Location: South Australia
Vehicle Information: 1995 ford falcon ute 5.0 windsor efi

1DGA disassembly

Unread post by Jamie from oz »

Hi all,
I was helping a friend with some addresses for 1DGA ford falcon/Fairlane 5.0L v8 and wanted to share the files and help in any way possible.

There is a paid BE tuning Strat available from Sailorbob if you don't want to learn and get straight into tuning.

I will add some files to start the process.
1DGA_256K_v5.xdf
(588.36 KiB) Downloaded 280 times
Ti performance XDF
1DGA_256k.bin
(256 KiB) Downloaded 276 times
Ti performance BIN
Jamie from oz
Posts: 54
Joined: 2022 Jul 08, 04:54
Location: South Australia
Vehicle Information: 1995 ford falcon ute 5.0 windsor efi

Re: 1DGA disassembly

Unread post by Jamie from oz »

to be put into a text file 1DGA_256k_dir

Code: Select all

sym  a6  "Ra6_Nrmces"         #

sym  a8  "Ra8_Nrmrld"         #
sym  ae  "Rae_RpmX4"
sym  b0  "Rb0_ECT"
sym  b1  "Rb1_ACT"           #

sym  c8  "Rc8_Atmr1"      #

sym  d2  "Rd2_EGRDC"     #

sym 104 "104_EPT_Filt"    #

sym 128 "128_EVP_Def"   #
sym 144 "144_Ctntmr"        #
sym 156 "156_Spkmul"        #

sym 170 "170_Evp"       #
sym 17a "17a_Preser"         #
sym 17c "17c_Conpr"       #

sym 200 "200_bp"             #

sym 203 "203_mult_bp212a"    #
sym 210 "210_Delopt"    "
sym 223 "223_egrcnt"      #
sym 224 "224_Egrper"    #

sym 25a "25a_load"           #
sym 2bb "2bb_MPH_FiltH"       #


sym 5591 "Sub_5591_Calc_EGR"
sym 563f "Sub_563f_Update_EGR2"    #
sym 567b "Sub_567b_Update_advance"


func    8958 8965: SY X 10 : UY X 10 
func    8966 8973: SY X 10 : UY X 10 
func    8974 898f: SW X 10 : UW X 10 
func    8990 89b7: UW X 10 : UW X 10 
func    89b8 89cf: UW X 10 : UW X 10 
func    89d0 89dd: UY X 10 : UY X 10 
sym  89d0 "FN_89d0_FN018_~Atmr1"      #

func    89de 89e7: UY X 10 : UY X 10 
func    89e8 89f1: SY X 10 : UY X 10 
func    89f2 8a11: UW X 10 : UW X 10 V 256 
func    8a12 8a1d: SY X 10 : UY X 10
sym  8a12 "FN_8a12_ECTflScale"
 
func    8a1e 8a39: UW X 10 : UW X 10 V 256
sym  8a1e "Spk_Injector_timing_Maf_Backflow_Sclr~RPM(Rpmscale)" 
func    8a3a 8a55: UW X 10 : UW X 10 V 256 
sym  8a3a "Emissions_&_Spk_Sclr_for_load(Ldscale)"
func    8a56 8a71: UW X 10 : UW X 10 
func    8a72 8a85: UW X 10 : UW X 10 V 256 
func    8a86 8a95: UW X 10 : UW X 10 V 256 
func    8a96 8aad: UW X 10 : UW X 10 
func    8aae 8ab7: UY X 10 : UY X 10 
func    8ab8 8ac5: UY X 10 : UY X 10 
func    8ac6 8acf: UY X 10 : UY X 10 
func    8ad0 8ae5: UY X 10 : UY X 10 
func    8ae6 8aef: UY X 10 : UY X 10 
func    8af0 8b03: UY X 10 : SY X 10 
func    8b04 8b13: SY X 10 : UY X 10 
func    8b14 8b21: SY X 10 : UY X 10 

func   8b22 8b99 : UW X 10 : UW X 10 
sym 8b22 "MAF_Transfer"

table   8dad 8dfc: O 10 UY X 10 
func    8dfd 8e08: UY X 10 : UY X 10 
func    8e0a 8e25: UW X 10 : UW X 10 V 256 
func    8e26 8e45: UW X 10 : UW X 10 
table   8e46 8e8b: O 10 UY X 10 
func    8e8c 8ea3: UW X 10 : UW X 10 
table   8ea4 8efd: O 9 UY X 10 
func    8f05 8f0e: UY X 10 : UY X 10 
table   8f0f 8f46: O 8 UY X 10 
func    8f48 8f6f: UW X 10 : UW X 10 
func    8f70 8f8f: UW X 10 : UW X 10 
func    8f90 8f99: SY X 10 : UY X 10 
func    8f9a 8fc5: UW X 10 : UW X 10 
func    8fca 8fdd: UW X 10 : UW X 10 V 256 
func    8fde 8ff5: UW X 10 : UW X 10 
func    8ff6 9003: UY X 10 : UY X 10 
func    9004 9011: SY X 10 : UY X 10 
func    9012 9019: UY X 10 : UY X 10 
func    901a 9035: SW X 10 : UW X 10 
func    9036 9051: SW X 10 : UW X 10 
func    9052 906d: SW X 10 : UW X 10 
func    906e 9089: UW X 10 : UW X 10 
func    908a 909d: UW X 10 : UW X 10 
func    909e 90a9: SY X 10 : UY X 10 
table   90aa 90d3: O 7 UY X 10 
func    90d4 90df: UY X 10 : UY X 10 
func    90e0 90eb: UY X 10 : UY X 10 

sym 9176  "S.CL_th_spkadd"

sym 917e  "S.917e_WOTspkADD"

func    91cc 91ef: SW X 10 : UW X 10 V 256 
func    91f0 9203: SW X 10 : SW X 10
sym  91f0 "FN_91f0~rpmX4" 

func    9204 9211: SY X 10 : SY X 10
sym  9204 "FN_9204~ect
 
func    9212 921d: UY X 10 : SY X 10 
sym  9212 "FN_9212~bp"

func    921e 9231: UW X 10 : UW X 10 
func    9232 923b: SY X 10 : SY X 10 
func    923c 9247: UY X 10 : UY X 10 
func    9248 926b: UW X 10 : UW X 10 
sym  9248 "WOT_Spk_Advance~rpm"

# sym 926c "Wotadvbap"     #
func    926c 9275: UY X 10 : SY X 10 

# sym 9276 "Wotadvect"
func    9276 9283: SY X 10 : SY X 10

# sym 9284 "Wotadvact" 
func    9284 9291: SY X 10 : SY X 10 
func    9292 929d: UY X 10 : UY X 10 
func    929e 92ab: UY X 10 : UY X 10 
func    92ac 92b7: SY X 10 : UY X 10
sym  92ac "FN92ac~Tcstrt"
 
table   92b8 9307: O 10 UY X 10
sym  92b8 "92b8_spk_base_Tbl" 
table   9308 9357: O 10 UY X 10 
sym  9308 "9308_spk_sea_level_Tbl"
table   9358 93a7: O 10 UY X 10 
sym  9358 "9358_spk_Altitude_Tbl"

table   93a8 93f7: O 10 UY X 10 
table   93f8 9403: O 4 UY X 10 
table   9404 9453: O 10 UY X 10 
sym 9404 "Tbl_9404"               # (table_96c0 in a9l)

table   9454 948b: O 7 SY X 10 
func    948c 94a3: UW X 10 : UW X 10 
func    94a4 94bb: UW X 10 : UW X 10 
func    94bc 94c7: UY X 10 : UY X 10 
func    94c8 94d5: UY X 10 : UY X 10 
func    94d6 94df: UY X 10 : UY X 10 
func    94e0 94eb: UY X 10 : UY X 10 


sym 9512 "9512_EGRDCOFF"     #
sym 9514 "9514_EGRDB"   

func    9551 955e: UY X 10 : UY X 10 
func    955f 956c: UY X 10 : UY X 10 
func    956e 9589: UW X 10 : UW X 10 
func    958a 95a5: UW X 10 : UW X 10 
func    95a6 95bd: UW X 10 : UW X 10 
func    95be 95e1: SW X 10 : UW X 10 
func    95e2 95f3: SY X 10 : UY X 10 
func    95f4 95fd: UY X 10 : UY X 10 
func    95fe 9625: UW X 10 : UW X 10 
func    9626 9631: SY X 10 : SY X 10 
func    9632 963b: UY X 10 : UY X 10 
func    963c 9647: UY X 10 : UY X 10 
func    9648 965f: UW X 10 : UW X 10 
func    9660 9669: SY X 10 : UY X 10 
func    966a 9685: UW X 10 : UW X 10 
func    9686 96a1: SW X 10 : SW X 10
sym 9686  "FN_9686_egr~Preser"     # ? in=egrerr ? 
 
func    96a2 96c9: UW X 10 : UW X 10 
func    96ca 96ed: UW X 10 : UW X 10 
table   96f2 9741: O 10 UY X 10 
table   9742 9791: O 10 UY X 10 
table   9792 979d: O 4 UY X 10 
func    979e 97a9: UY X 10 : UY X 10 
func    97aa 97b5: UY X 10 : UY X 10 
func    97b6 97c1: UY X 10 : UY X 10 

func    9844 9857: UW X 10 : UW X 10 V 256 
func    9858 9877: UW X 10 : UW X 10 V 256 
func    9878 988f: UY X 10 : UY X 10 
func    9890 989b: SY X 10 : UY X 10 
sym 9890 "9890_OLactmult"    #

func    989c 98b3: UW X 10 : UW X 10 
func    98b4 98c7: UW X 10 : UW X 10 
func    98c8 98e7: UW X 10 : UW X 10 
table   98e8 9937: O 10 UY X 10 
table   9938 9987: O 10 UY X 10
sym 9938 "Tbl_9938_Base_fuel_tbl"          # (table_9bf0)
 
table   9988 99d7: O 10 UY X 10 
sym 9988 "tbl_9988_Startup_fuel_tbl"       # (table_9c40)

func    99d8 99f3: UW X 10 : UW X 10 
func    99f4 9a0f: SW X 10 : UW X 10 
func    9a10 9a2f: SW X 10 : UW X 10 V 256 
table   9a30 9a7f: O 10 UY X 10 
table   9a80 9acf: O 10 UY X 10 
table   9ad0 9aef: O 4 UY X 10 
table   9af0 9b0f: O 4 UY X 10 
table   9b10 9b2f: O 4 SY X 10 
func    9b30 9b47: UW X 10 : UW X 10 
was using sad v4.12a

jamie.
jsa
Posts: 402
Joined: 2021 Feb 16, 15:46
Location: Australia
Vehicle Information: 95 Escort RS Cosworth
2.0 YBP
CARD / QUIK / COSY / ANTI
GHAJ0
SMD-190 / SMD-490 EEC-IV

Binary Editor
ForDiag

Re: 1DGA disassembly

Unread post by jsa »

Thanks. How much of the xdf have you converted to the dir?
Jamie from oz
Posts: 54
Joined: 2022 Jul 08, 04:54
Location: South Australia
Vehicle Information: 1995 ford falcon ute 5.0 windsor efi

Re: 1DGA disassembly

Unread post by Jamie from oz »

Not much at this point just the the start up and base fuel tables.

I was going to put the A9L file here also after I finish work as there is tons in that that are similar.
Mainly just to help Dimitrios as a starting point.
Jamie from oz
Posts: 54
Joined: 2022 Jul 08, 04:54
Location: South Australia
Vehicle Information: 1995 ford falcon ute 5.0 windsor efi

Re: 1DGA disassembly

Unread post by Jamie from oz »

Not much at this point just the the start up and base fuel tables.

I was going to put the A9L file here also after I finish work as there is tons in that that are similar.
Mainly just to help Dimitrios as a starting point.
Jamie from oz
Posts: 54
Joined: 2022 Jul 08, 04:54
Location: South Australia
Vehicle Information: 1995 ford falcon ute 5.0 windsor efi

Re: 1DGA disassembly

Unread post by Jamie from oz »

For reference A9L file.
A9L.BIN
(56 KiB) Downloaded 271 times
A9L_dir to cut and paste.

Code: Select all

# opts : C N P S

# SAd doesn't get everything so these commands help a lot...

SYM  8de2 "Maf_tfr"
func 8de2 8e59 :W              # not picked up by func lookup. has its own code 


word 862a 862d                          # initialise data lists
strct 862e 864f : Y N :Y
word 8650 865d
strct 865e 868d : Y N D 100:Y
word 868e 869b :
strct 869c 86c9 : Y N D 200:Y
word 86ca 86d7
strct 86d8 86e5 : Y N D 300:Y
word 86e6 86e7


rbase 72 180
rbase 74 27e
rbase 76 37a
rbase 78 8eda


word 27c4 27c9         # min PIP periods by no of cyls
word 2a32 2a3d         # cyl/spark angle degrees 
word 2fc2 2fc7         # injection something ??
word 3da0 3dab         # rpm divisors by cyl
word 786a 786f         # checksum
word 8c12 8c17         # min pip period by cyl


#cscan 79f9    # calls 7a91



#strct 225f 2283 :Q Y P 3 :W N P 4
vect  2284 2285
strct 2286 22a5 :W R N:Y O 3 P 3:Y D 2c5 N: W R N

sym 22a6 "InjTTab"
struct 22a6 2355 :R N: Y O 3 : Y D 2c5 N: Y O 2 : W P 1: W | R N: Y O 3 : Y D 2c5 N: Y O 2 : W P 1

SYM  69b1 "Timer_list"
timer 69b1 6a7a : W N          # Timer command - under development

#subroutines with various embedded params and decodes - not reqd as SAD can do these

#sub  3654 "UFilter3" : W N O 2: W E 1 e0 N
#sub  365e "UFilter1" : W E 1 e0 N
#sub  3663 "UFilter"
#sub  3665 "SFilter"

#sub  77be "GetbytesR1a" : y
#sub  77c2 "Getbytes" : y
#sub  77d7 "Xfilter" : W
#sub  7bae "SaveTCode1" : Y
#sub  72a3 "SaveTCode2" : Y
#sub  728d "OCC_chk1" : Y: S Y  D 8f86 N : Y : Y N 
#sub  728f "OCC_chk2" : Y : S Y  D 8f86 N : Y : Y N 
#sub  7e3b "GetWord" : e 3 f0  N
#sub  798b "GetAddr" : W 
#sub  7bc0 "ChkRngeTC" : W  N : e 3 f0  n o 2:y 
#sub  76e0 "updTCodes" : Y O 3
#sub  7964 "Compare" : E 3 f0  N O 2
#sub  7ecf "ChkSensor" : W N  : E 3 f0 N  O 2 :y  o 2
#sub  77ed "mark_err" : Y 
#sub  77f9 "upd_flflg" : Y  O 3
#sub  796c "CompareTC" : E 3 f0 N  o 2:Y 
#sub  7a76 "TestIO" : Y  : S Y  D 8f86 N: Y  : Y N 
#sub  7a91 "OpenChk" : Y  :S Y  D 8f86 N: W N 
#sub  7de3 "Scale_Time_delta":  E 3 f0 N
#sub  7de8 "Scale_time_delta2" : e 3 f0 N


# subroutine names

sym  3654 "Srolav3T"
sym  365e "Srolav1T"
sym  3663 "Urolav"
sym  3665 "Srolav"
sym  77be "GetbytesR1a"
sym  77c2 "Getbytes"
sym  77d7 "SrolavT"
sym  7bae "SaveTCode1"
sym  72a3 "SaveTCode2"
sym  728d "OCC_chk1"
sym  728f "OCC_chk2"
sym  7e3b "GetWord"
sym  798b "GetAddr"
sym  7bc0 "ChkRngeTC"
sym  76e0 "updTCodes"
sym  7964 "Compare"
sym  7ecf "ChkSensor"
sym  77ed "Set_TC" 
sym  77f9 "upd_flflg"
sym  796c "CompareTC"
sym  7a76 "Test_IO"
sym  7a91 "OpenCChk"
sym  7de3 "Scale_Time_delta"
sym  7de8 "Scale_time_delta2"
sym 7096 "Set_EGRFlags"
sym 5587 "Update_EGR2"
sym 2c91 "Calc_dwell"
sym 827d "HW_Check"
sym 77b4 "Reset_STO" 
sym 77ac "Set_STO"
sym 839a "RAM_test"
sym 8383 "POP_test"
sym 7050 "Get_diag_vals"
sym 7075 "Save_diag_vals"
sym 7bb2 "SaveTCode"
sym 4ef4 "Do_accelpump"
sym 65d4 "Set_Timers"
sym 848f "Set_ign_timers"
sym 6add "Upd_Thermactor"
sym 5ec4 "Upd_VSC"
sym 6566 "Upd_Thermactor1"
sym 6335 "Upd_canpTm"
sym 62b5 "Upd_HiFan"
sym 6191 "Upd_air_mgt"
sym 3c7c "Calc_Flow"
sym 54d9 "Calc_EGR"
sym 5136 "Calc_EVP"
sym 6d11 "Add_H_Delta"
sym 2358 "Clr_cell"
sym 250d "Do_CmdP"
sym 24f9 "Do_CmdN"
sym 6cd8 "Add_H_Beta"
sym 2c88 "Add_SpoutLo"


sym 9e5c "TRLOAD"
 
SYM  12 "Tmr_OVF_cnt"
SYM  14 "Isl_acon" : B0
SYM  14 "Isl_neut" : B1
SYM  14 "Csmode" : B6
SYM  16 "Vsc_flg1" : B0
SYM  24 "Wot" : B0
SYM  24 "Ctnq" : B1
SYM  24 "Awotmr_On" : B2
SYM  24 "Pw_sign2" : B3
SYM  24 "Console_flag" : B4
SYM  24 "Nactmr_On" : B5
SYM  24 "Atmr2_On" : B6
SYM  24 "Tsegre_On" : B7
SYM  24 "Flags_24"
SYM  25 "Include_ae" : B0
SYM  25 "Warm_up" : B1
SYM  25 "Mhpfd_neg" : B2
SYM  25 "Fam_flg" : B3
SYM  25 "Slq2" : B4
SYM  25 "Slq1" : B5
SYM  25 "Chkair" : B6
SYM  25 "Chkair_flag" : B7
SYM  25 "Flags_25"
SYM  26 "Imfmflg" : B0
SYM  26 "Archflg" : B1
SYM  26 "Nflg" : B2
SYM  26 "Jmpflg" : B3
SYM  26 "Trsprpml" : B4
SYM  26 "Pipflg" : B5
SYM  26 "Dndsup" : B6
SYM  26 "Hcamfg" : B7
SYM  26 "Flags_26"
SYM  27 "Swtfl2" : B0
SYM  27 "Dfsflg" : B1
SYM  27 "Fpwq2" : B2
SYM  27 "Swtfl1" : B3
SYM  27 "Powsfg" : B4
SYM  27 "Booflg" : B5
SYM  27 "Lestmr2_On" : B6
SYM  27 "Lestmr1_On" : B7
SYM  27 "Flags_27"
SYM  28 "Egren" : B0
SYM  28 "Ptpflg" : B1
SYM  28 "Newsa" : B2
SYM  28 "Efflg1" : B3
SYM  28 "Ramp_rich" : B4
SYM  28 "Egoste" : B5
SYM  28 "Fpwq3" : B6
SYM  28 "Kam_error" : B7
SYM  28 "Flags_28"
SYM  29 "Hltmr_Off" : B0
SYM  29 "Taq6" : B1
SYM  29 "Qtpclol" : B2
SYM  29 "Taq1" : B3
SYM  29 "Iacflg" : B4
SYM  29 "Aeoflg" : B5
SYM  29 "Evpout" : B6
SYM  29 "Egrflg" : B7
SYM  29 "Flags_29"
SYM  2a "Vscdt" : B0
SYM  2a "Vscst" : B1
SYM  2a "Vip_enable" : B2
SYM  2a "Disable_running" : B3
SYM  2a "Disable_nostart" : B4
SYM  2a "Self_test" : B5
SYM  2a "No_start" : B6
SYM  2a "Disable_vscdt" : B7
SYM  2a "VIP_flags"
SYM  2b "Rvip_cyl_quit" : B0
SYM  2b "Rvip_cyl_bal" : B1
SYM  2b "Sto_trigger" : B2
SYM  2b "Error_detected" : B3
SYM  2b "Disable_isc" : B4
SYM  2b "Stiflg" : B5
SYM  2b "Egoste2" : B6
SYM  2b "Egoste1" : B7
SYM  2b "Flags_2B"
SYM  2c "Idm_bypass" : B0
SYM  2c "Kflg_local" : B1
SYM  2c "Wigflg" : B3
SYM  2c "Sto_hyper" : B4
SYM  2c "Disable_eolt" : B5
SYM  2c "Egrfg2" : B6
SYM  2c "Egrfg1" : B7
SYM  2c "Flags_2C"
SYM  2d "Spout_pending" : B0
SYM  2d "Undsp_trans" : B1
SYM  2d "Double_edge" : B2
SYM  2d "No_fuel_save" : B3
SYM  2d "First_pip" : B4
SYM  2d "Ctflg" : B5
SYM  2d "Tipflg" : B6
SYM  2d "Tblsflg" : B7
SYM  2d "Flags_2D"
SYM  2e "New_ibeta" : B2
SYM  2e "Simultaneous" : B3
SYM  2e "Sync_up_fuel" : B4
SYM  2e "Base_fuel" : B5
SYM  2e "Synflg" : B6
SYM  2e "Fuel_in_sync" : B7
SYM  2e "Flags_2E"
SYM  2f "Vip_fuel_disable" : B0
SYM  2f "Fgs" : B1
SYM  2f "Ocport_req" : B2
SYM  2f "Nlmt_flg" : B3
SYM  2f "Ptscr" : B4
SYM  2f "Maf_pip" : B5
SYM  2f "New_idelay2" : B6
SYM  2f "New_idelay1" : B7
SYM  2f "Flags_2F"
SYM  3c "Free_run" : B0   # these only used in timer func ?
SYM  3c "Word_tmr" : B1
SYM  3c "Decrement" : B2
SYM  3c "Inverse" : B3
SYM  3c "Millisecs" : B5
SYM  3c "Eighths" : B6
SYM  3c "Seconds" : B7
SYM  3e "Isf_acon" : B0
SYM  3e "Isf_neut" : B1
SYM  3e "Lmillisecs" : B5
SYM  3e "Leighths" : B6
SYM  3e "Lseconds" : B7
SYM  3f "Isf_pson" : B0

SYM  44 "Inj3_State" : B0
SYM  44 "Inj4_State" : B1
SYM  44 "Inj6_State" : B2
SYM  44 "Inj7_State" : B3
SYM  44 "Inj5_State" : B4
SYM  44 "Spout_state" : B5
SYM  44 "Inj1_State" : B6
SYM  44 "Inj2_State" : B7
SYM  44 "Inj8_State" : B8
SYM  44 "HSOut_Flags"
SYM  46 "Scvac" : B0
SYM  46 "Dol" : B1
SYM  46 "Evr" : B2
SYM  46 "Isc" : B3
SYM  46 "Scvnt" : B4
SYM  46 "Sto_state" : B5
SYM  46 "WOT_AC" : B6
SYM  46 "Pump" : B7
SYM  46 "IO_Port_State"
SYM  47 "Canp" : B1
SYM  47 "ShLight_On" : B2
SYM  47 "Sbs1" : B3
SYM  47 "Iac" : B4
SYM  47 "Fan" : B5
SYM  47 "Hi_fan" : B6
SYM  47 "Flags_47"
SYM  48 "Change_fuelpw" : B7
SYM  4b "Flags_4B"
SYM  4c "Bypass_time" : B1
SYM  4c "Bypass_limit" : B2
SYM  4c "Immediate" : B3
SYM  4c "No_service" : B4
SYM  4c "Late_output" : B5
SYM  4c "Queued" : B6
SYM  4c "No_queue" : B7
SYM  4c "Flags_4C"
SYM  4e "Hsi_error" : B0
SYM  4e "Kts_pending" : B1
SYM  4e "New_Bpv" : B2
SYM  4e "New_rpm" : B3
SYM  4e "New_idm" : B4
SYM  4e "New_sti" : B5
SYM  4e "New_bap" : B6
SYM  4e "New_pip" : B7
SYM  4e "Flags_4E"
SYM  4f "Pip_double" : B0
SYM  4f "Sto_quick" : B1
SYM  4f "Clkext_ovr" : B2
SYM  4f "Knock_detected" : B3
SYM  4f "Pending" : B4
SYM  4f "Canceled" : B5
SYM  4f "Knock_enabled" : B6
SYM  4f "Knock_occurred" : B7
SYM  4f "Flags_4F"
SYM  5c "Fg_stack"
SYM  72 "Rp"
SYM  74 "Rp2"
SYM  76 "Rp3"
SYM  78 "Cp"
SYM  7a "Event_time"
SYM  7c "Event_timeH"
SYM  7d "Cmd"
SYM  7e "Rtab"
SYM  80 "HSO_time"
sym  82 "HSO_timeH"
SYM  83 "HSI_State"
# SYM  84 "Ref_delta"
SYM  87 "Pip_irq" : B0
SYM  87 "Knk_irq" : B1
SYM  87 "Bap_irq" : B2
SYM  87 "Cid_irq" : B5
SYM  87 "Mph_irq" : B6
SYM  87 "Idm_irq" : B7
SYM  87 "New_irqs"
#SYM  88 "Pt1"
#SYM  8a "Pt2"
SYM  8c "Reftime"
sym  8e "ReftimeH"
SYM  8f "Wd_time"
#SYM  90 "Pip_high" : B0
#SYM  90 "Knk_high" : B1
#SYM  90 "Bp_high"  : B2
#SYM  90 "Sti_high" : B3
#SYM  90 "Boo_high" : B4
#SYM  90 "Cid_high" : B5
#SYM  90 "Mph_high" : B6
#SYM  90 "Idm_high" : B7
SYM  90 "Last_HSI"
SYM  91 "Slice_ptr"
SYM  92 "TPtr"
SYM  9a "Bg_point"
SYM  9b "Vsc_count"
SYM  9c "Anpip1"
SYM  9d "Anpip2"
SYM  9e "Eftr"
SYM  a0 "Vsc_pulse"   : B0
SYM  a0 "Acc_req"     : B1
SYM  a0 "Hold_state"  : B2
SYM  a0 "Resum_state" : B3
SYM  a0 "Accel_state" : B4
SYM  a0 "Brake_state" : B5
SYM  a0 "Coast_state" : B6
SYM  a0 "On_state"    : B7
SYM  a0 "Vsc_states"
SYM  a1 "Adptmr_On" : B0
SYM  a1 "Idleq" : B1
SYM  a1 "Undsp" : B2
SYM  a1 "Dmflg" : B3
SYM  a1 "Egonflg" : B4
SYM  a1 "Purging" : B5
SYM  a1 "Cttmr_On" : B6
SYM  a1 "Cranking" : B7
SYM  a1 "a1_Flags"
SYM  a2 "AM"
SYM  a4 "Ampem"
SYM  a6 "Nrmces_rpm~clm"
SYM  a8 "Nrmrld_load~row"
SYM  aa "TP"
SYM  ac "Tcstrl"
SYM  ad "Tcstrt"
SYM  ae "Rpmx4"
SYM  b0 "ECT"
SYM  b1 "ACT"
SYM  b2 "Mphcnt"
SYM  b3 "Ppctr"
SYM  b4 "Pipcnt"
SYM  b5 "SCCS_error" : B1
SYM  b5 "SCCS_Resume" : B3
SYM  b5 "SCCS_Accel" : B4
SYM  b5 "SCCS_Coast" : B5
SYM  b5 "SCCS_On" : B6
SYM  b5 "SCCS_Off" : B7
SYM  b5 "Vsc_flagsb"
SYM  b6 "Bapcnt"
SYM  b7 "Ifreq"
SYM  b8 "Iscdty"
SYM  ba "PIPHi_ETime"
SYM  bc "PIPHi_ETimeH"


SYM  bd "Kayctr"     # Cyl_no? 

SYM  be "PIPH_PW"
SYM  c0 "Mkay"
SYM  c2 "Saf"
SYM  c4 "Code_87" : B0
SYM  c4 "First_mph" : B2
SYM  c4 "Vsc_state" : B3
SYM  c4 "Vscq2" : B4
SYM  c4 "Vscq1" : B5
SYM  c4 "Vsc_vac_active" : B6
SYM  c4 "Vsc_flags"
SYM  c5 "Bfmflag" : B1
SYM  c5 "Pefmfag" : B2
SYM  c5 "Mfmflag" : B3
SYM  c5 "Tfmflag" : B4
SYM  c5 "Afmflag" : B5
SYM  c5 "Efmflag" : B6
SYM  c5 "Cfmflag" : B7
SYM  c5 "Fmem_flags"
SYM  c6 "Dol_count"
SYM  c8 "Atmr1"
SYM  c9 "Atmr2"
SYM  ca "Asp_input" : B0
SYM  ca "Declflg" : B1
SYM  ca "Dfldl_hys_flag" : B2
SYM  ca "Dfsvs_hys_flag" : B3
SYM  ca "Ecadq3" : B4
SYM  ca "Ecadq2" : B5
SYM  ca "Ecadq1" : B6
SYM  ca "Usaflg" : B7
SYM  ca "Flag_ca"
SYM  cb "Awotmr"
SYM  cc "Nddtim"
SYM  cd "Nactmr"
SYM  ce "Mfatmr"
SYM  cf "HQcnt"


SYM  d0 "Cl_thrtl" : B7
SYM  d0 "Apt"


SYM  d1 "Synctr"
SYM  d2 "Egrdc"
SYM  d4 "Vip_code"
SYM  d6 "High_speed" : B0
SYM  d6 "Lowspeed_repeat" : B1
SYM  d6 "Low_speed" : B2
SYM  d6 "Sto_working" : B3
SYM  d6 "Sto_fast" : B4
SYM  d6 "Sto_code" : B5
SYM  d6 "Sto_off" : B6
SYM  d6 "Sto_on" : B7
SYM  d6 "STO_flags"
SYM  d7 "Code_75" : B0
SYM  d7 "Code_74" : B1
SYM  d7 "Code_67_94" : B2
SYM  d7 "Code_45_92" : B3
SYM  d7 "Code_77_91" : B4
SYM  d7 "Code_44_73" : B5
SYM  d7 "Code_42_72" : B6
SYM  d7 "Code_25_41" : B7
SYM  d7 "Tc_flags"
SYM  d8 "Sto_holdoff" : B0
SYM  d8 "Vf1" : B1
SYM  d8 "Output_tst_mode" : B2
SYM  d8 "Reqflg" : B3
SYM  d8 "Sto_pending" : B4
SYM  d8 "Code_48" : B5
SYM  d8 "Vip_kam" : B6
SYM  d8 "Threshold_lvl" : B7
SYM  d8 "Vip_flags3"
SYM  d9 "Vip_fp_override" : B0
SYM  d9 "Goose" : B1
SYM  d9 "Onedigit_out" : B2
SYM  d9 "Vip_knock" : B3
SYM  d9 "Kam_codes" : B4
SYM  d9 "Vvsfl1" : B5
SYM  d9 "Vegrbp" : B6
SYM  d9 "Rmspru" : B7
SYM  d9 "Vip_flags4"
SYM  da "Sto_time"
SYM  dc "Pip_counter"
SYM  dd "Kwctr"
SYM  de "Pip_lvl" : B0
SYM  de "Knk_lvl" : B1
SYM  de "Bp_lvl" : B2
SYM  de "Sti_lvl" : B3
SYM  de "Boo_lvl" : B4
SYM  de "Cid_lvl" : B5
SYM  de "Mph_lvl" : B6
SYM  de "Idm_lvl" : B7
SYM  de "Input_image"
SYM  df "Psps_lvl" : B0
SYM  df "Ecadi" : B2
SYM  df "Fpm" : B4
SYM  e0 "Inj_mode"
SYM  e1 "Tipret"
SYM  e2 "Retinc"
SYM  e6 "Hwflgl" : B0
SYM  e6 "Hwflag" : B1
SYM  e6 "Powoff" : B2
SYM  e6 "Powon" : B3
SYM  e6 "Vhfnon" : B4
SYM  e6 "Vlfnon" : B5
SYM  e6 "Pfehp_flg" : B6
SYM  e6 "Flags_e6"
SYM  e7 "Fofflg" : B0
SYM  e7 "Fgfflg" : B1
SYM  e7 "Hspflg" : B2
SYM  e7 "Flg_dasmnq" : B3
SYM  e7 "Fulq2" : B4
SYM  e7 "Ffulflg" : B5
SYM  e7 "Pw_sign" : B6
SYM  e7 "Ndsflg" : B7
SYM  e7 "Flag_e7"
SYM  e8 "Ctntmr_dwn" : B0
SYM  e8 "Ctntmr_up" : B1
SYM  e8 "Ctnflg" : B2
SYM  e8 "Dcelq5" : B3
SYM  e8 "Dcelq4" : B4
SYM  e8 "Dcelq3" : B5
SYM  e8 "Dcelq2" : B6
SYM  e8 "Dcelq1" : B7
SYM  e8 "Flags_e8"
SYM  e9 "Prld_ff" : B0
SYM  e9 "Ldflg" : B1
SYM  e9 "Lospd_ect" : B2
SYM  e9 "Hispd" : B3
SYM  e9 "Crnk_trans" : B4
SYM  e9 "Hsfflg" : B5
SYM  e9 "CanPurgeOK" : B6
SYM  e9 "Ctptfg" : B7
SYM  e9 "Flags_e9"
SYM  ea "Paccflg" : B0
SYM  ea "Biflg" : B1
SYM  ea "Aciflg" : B2
SYM  ea "Accflg" : B3
SYM  ea "Acr_n" : B4
SYM  ea "Acr_ect" : B5
SYM  ea "Egofl2" : B6
SYM  ea "Egofl1" : B7
SYM  ea "Flags_ea"
SYM  eb "Ol_cl_transition" : B0
SYM  eb "Sigpip" : B1
SYM  eb "Hmtmr_On" : B2
SYM  eb "Ctaflg" : B3
SYM  eb "Ctupr_flg" : B4
SYM  eb "Acn_flg" : B5
SYM  eb "Acect_flg" : B6
SYM  eb "Acwflg" : B7
SYM  eb "Flags_eb"
SYM  ec "Mfa_on" : B0
SYM  ec "Neuflg" : B1
SYM  ec "Psflag" : B2
SYM  ec "Refflg" : B3
SYM  ec "Tfq1" : B4
SYM  ec "Bpuflg" : B5
SYM  ec "Sltmr_flgs" : B6
SYM  ec "Swtflg" : B7
SYM  ec "Flag_ec"
SYM  ed "Legofg2" : B0
SYM  ed "Legofg1" : B1
SYM  ed "Hvq2" : B2
SYM  ed "Hvq1" : B3
SYM  ed "Hcsdq" : B4
SYM  ed "Fpwq1" : B5
SYM  ed "Lugtmr_dwn" : B6
SYM  ed "Lugtmr_up" : B7
SYM  ed "Flags_ed"
SYM  ee "Swtfl" : B0
SYM  ee "Egofl" : B1
SYM  ee "Olflg" : B2
SYM  ee "Qclol" : B3
SYM  ee "Signdy" : B4
SYM  ee "Signdslp" : B5
SYM  ee "Indflg" : B6
SYM  ee "A3C" : B7
SYM  ee "Flags_ee"
SYM  ef "Power_up" : B0
SYM  ef "Wmegol" : B1
SYM  ef "Wrmego" : B2
SYM  ef "Idlflg" : B3
SYM  ef "Byptmr_dwn" : B4
SYM  ef "Lesflg" : B5
SYM  ef "Prgflg" : B6
SYM  ef "Byptmr_up" : B7
SYM  ef "Flags_ef"

#  f0 - f8 Reg bases 

SYM  100 "TP_Filt"
SYM  102 "EGR_Filt"
SYM  103 "Ranmul"
SYM  104 "EPT_Filt"
SYM  106 "EGO_Filt"
SYM  108 "RPM_Filt1"
SYM  10a "BAP_Intvl"
SYM  10c "Key_Pwr"
SYM  10e "OCC_Raw"
SYM  110 "VSS_Raw"
SYM  112 "ECT_Raw"
SYM  114 "ACT_Raw"
SYM  116 "EVP_Raw"
SYM  118 "Vsc_Raw"
SYM  11a "NDS_Raw"
SYM  11c "EGO1_Raw"
SYM  11e "EGO2_Raw"
SYM  120 "TAR_Raw"
SYM  122 "TPS_Raw"
SYM  124 "MAF_Raw"
SYM  126 "TPS_Min"   # was "TPS_Ratch"
SYM  128 "EVP_Def"
SYM  12a "Cttmr"
SYM  12b "Start_purg_per"
SYM  12c "Purgdc"
SYM  12d "Purg_on_time"
SYM  12e "Purge_period"
SYM  12f "Ibap"
SYM  130 "Bap_Filtl"
SYM  131 "Bapbar"
SYM  132 "Ffmtmr"
SYM  134 "Putmr"
SYM  136 "Baptmr"
SYM  137 "Hmtmr"
SYM  138 "Ctatmr"
SYM  139 "Sltmr"
SYM  13a "Adptmr"
SYM  13c "Mintim2"
SYM  13e "Tslpip"
SYM  140 "Eighths_ext"
SYM  141 "Secs_ext"
SYM  142 "Loop_time"
SYM  144 "Ctntmr"
SYM  145 "Lugtmr"
SYM  146 "Isctmr"
SYM  147 "Multmr"
SYM  148 "Mfactr"
SYM  149 "Prgtmr"
SYM  14a "Cprgtmr"

SYM  14c "Hltmr"
SYM  14d "Atmr3"
SYM  14e "Edftmr"
SYM  14f "Crktmr"
SYM  150 "Dltmr"
SYM  152 "Rannum"
SYM  154 "Ipsibr"
SYM  156 "Spkmul"
SYM  157 "Iscflg"
SYM  158 "Desmaf"
SYM  15a "Dstpbr"
SYM  15c "Daspot"
SYM  15e "Fam"
SYM  160 "Ibgpsi"
SYM  162 "Nlast"
SYM  164 "Desnlo"
SYM  166 "Dsdrpm"
SYM  167 "Famreg"
SYM  168 "Lammul"
SYM  16a "Bgcnt"
SYM  16b "Isflag"
SYM  16c "Islast"
SYM  16d "Spregb"
SYM  16e "Egract"
SYM  16f "Egrate"
SYM  170 "Evp"
SYM  172 "Egrerr"
SYM  174 "Desdp"
SYM  176 "Delpr"
SYM  178 "Dp"
SYM  17a "Preser"
SYM  17c "Conpr"
SYM  17e "Desem"
SYM  180 "Injdly"
SYM  182 "Baseff1"
SYM  184 "Baseff2"
SYM  186 "Eftrffl"
SYM  188 "Eftrff"
SYM  18a "Basefft"
SYM  18c "Aefuel"
SYM  18e "Pwoff"
SYM  190 "Inj_base"
SYM  191 "Inj_pip"
SYM  192 "Inj_pending"
SYM  193 "Pwofs"
SYM  194 "Bias"
SYM  196 "Lbmf_inj1"
SYM  198 "Lbmf_inj2"
SYM  19a "Lbmf_i1"
SYM  19c "Lbmf_i2"
SYM  19e "Lbmf_i3"
SYM  1a0 "Lbmf_i4"
SYM  1a2 "Lbmf_i5"
SYM  1a4 "Lbmf_i6"
SYM  1a6 "Lbmf_i7"
SYM  1a8 "Lbmf_i8"
SYM  1aa "C14FIL"
SYM  1ab "C22FIL"
SYM  1ac "C29FIL"
SYM  1ad "C31FIL"
SYM  1ae "C32FIL"
SYM  1af "C33FIL"
SYM  1b0 "C34FIL"
SYM  1b1 "C35FIL"
SYM  1b2 "C41FIL"
SYM  1b3 "C51FIL"
SYM  1b4 "C53FIL"
SYM  1b5 "C54FIL"
SYM  1b6 "C56FIL"
SYM  1b7 "C61FIL"
SYM  1b8 "C63FIL"
SYM  1b9 "C64FIL"
SYM  1ba "C66FIL"
SYM  1bb "C87FIL"
SYM  1bc "C91FIL"
SYM  1bd "C95FIL"
SYM  1be "C96FIL"
SYM  1bf "Idm_fault_cnt"
SYM  1c0 "Miltmr"
SYM  1c2 "Outtmr"
SYM  1c4 "Tslidm"
SYM  1c6 "Vip_fpmtmr"
SYM  1c8 "Tsstil"
SYM  1c9 "Vsstmr"
SYM  1ca "Vip_timer_ex"
SYM  1cc "Egobar1"
SYM  1ce "Egobar2"
SYM  1d0 "Code_cnt_ex"
SYM  1d2 "Vip_stack_ex"
SYM  1d4 "Vip_stack_x2"
SYM  1d6 "Ptcnt"
SYM  1d7 "Vip_cnt_ex"
SYM  1d8 "Check_sum"
SYM  1da "Code_ones_ex"
SYM  1dc "Code_tens_ex"
SYM  1de "Occsav"
SYM  1e0 "Viplatm"
SYM  1e2 "Vip_nrm_ex"
SYM  1e4 "Vip_nrm2_EX"
SYM  1e6 "Shift_cnt_ex"
SYM  1e8 "Errbar"
SYM  1ea "Nsav"
SYM  1ec "Pwrbar"
SYM  1ee "Rviprpm"
SYM  1f0 "Tpsav"
SYM  1f2 "Vcbn"
SYM  1f4 "Vcbpct_this_time"
SYM  1f6 "Vcb_pip_cnt"
SYM  1f8 "Vcb_pip_timer"
SYM  1fa "Vcb_pip_htimer"
SYM  1fc "Vegrn"
SYM  1fe "Bp"
SYM  1ff "Bpcor"
SYM  200 "Mult_bp311"
SYM  201 "Mult_bp212A"
SYM  202 "Dslmbs1"
SYM  204 "Dslmbs2"
SYM  206 "Fuelpw1"
SYM  208 "Fuelpw2"

SYM  20a "Lambse1" 
SYM  20c "Lambse2"
SYM  20e "Delopt"
SYM  210 "Clflg"
SYM  211 "Vbat"
SYM  212 "Vcutout"
SYM  213 "Acbtmr"
SYM  214 "Acwtmr"
SYM  215 "Wcotmr"
SYM  216 "Acctmr"
SYM  218 "Acitmr"
SYM  21a "Oldtp"
SYM  21c "Aeload"
SYM  21e "Tsladv"
SYM  220 "Nwotmr"
SYM  221 "Egrcnt"
SYM  222 "Egrper"
SYM  223 "Egrctf"
SYM  224 "Egrprf"
SYM  226 "Htime_beta"
SYM  228 "Htime_delta"
SYM  22a "Tbart"
sym  22b "Spkadv"
SYM  22c "Spkad0"
SYM  22d "Spkad1"
SYM  22e "Spkad2"
SYM  22f "Spkad3"
SYM  230 "Spkad4"
SYM  231 "Spkad5"
SYM  232 "Spkad6"
SYM  233 "Spkad7"
SYM  234 "Fuelflow1"
SYM  236 "Fuelflow2"
SYM  238 "Pipacl"
SYM  23a "Dwlbst"
SYM  23c "Dwell"
SYM  23e "Dwlbse"
SYM  240 "Dwellms"
SYM  242 "Post_image"
SYM  244 "Ppereng"
SYM  246 "Poffeng"
SYM  248 "Spout_low_time"
SYM  24a "Fuel_sum_l"
SYM  24c "Fuel_sum_h"
SYM  24d "Sparebyte1"
SYM  24e "Vmaf"
SYM  250 "Maf"
SYM  252 "Archg"
SYM  254 "Archli"
SYM  256 "Archi"
SYM  258 "Archfg"
SYM  25a "Filrc1"
SYM  25c "Load"
SYM  25e "Peak_load"
SYM  260 "Perload"
SYM  262 "Debyma_fm"
SYM  264 "Tsegre"
SYM  265 "Ectcnt"
SYM  266 "Lestmr1"
SYM  267 "Lestmr2"
SYM  268 "Enpip1"
SYM  269 "Enpip2"
SYM  26a "Inj_pip_cnt1"
SYM  26b "Inj_pip_cnt2"
SYM  26c "Inj_bank1"
SYM  26d "Inj_bank2"
SYM  26e "Total_delay1"
SYM  26f "Total_delay2"
SYM  270 "Ibeta1"
SYM  271 "Ibeta2"
SYM  272 "Mfamul"
SYM  274 "Tslamu1"
SYM  276 "Tslamu2"
SYM  278 "Fflow1"
SYM  27a "Fflow2"
SYM  27c "RPM_Filt2"
SYM  27e "Tcf"
SYM  280 "Last_bap"
SYM  282 "Old_beta"
SYM  284 "Last_HSO"
SYM  286 "Spare_100"
SYM  288 "Em"
SYM  289 "Tran_fuel"
SYM  28a "Lst_iacc"
SYM  28c "Lstrow"
SYM  28e "Lstcol"
SYM  290 "Coltbu"
SYM  291 "Rowtbu"
SYM  292 "Aisfl"
SYM  294 "Aisf"
SYM  296 "Deltim"
SYM  298 "LastSWtime"
SYM  29a "Saftot"
SYM  29c "Sapw"
SYM  29e "Tar"
SYM  29f "N_byte"
SYM  2a0 "Dtpcyc"
SYM  2a2 "Hfpcyc"
SYM  2a4 "Egosss"
SYM  2a5 "Egoss1"
SYM  2a6 "Egoss2"
SYM  2a8 "Debtmr"
SYM  2aa "Ltime"
SYM  2ac "Mph_FiltA"
SYM  2ae "Res_speed"
SYM  2b0 "Set_speed"
SYM  2b2 "Mph_Raw"
SYM  2b4 "Vsccs"
SYM  2b6 "Vsc_error"
SYM  2b8 "Vsc_off_count"
SYM  2b9 "Vsc_on_count"
SYM  2ba "Vsc_dc"
SYM  2bb "Tslmph"
SYM  2bc "Mph_Filt"
SYM  2bd "Mph_FiltH"
SYM  2be "Mphtiml1"
SYM  2c0 "Mphtim1H"

SYM  2c2 "Mphtim2H"
sym  2c3 "Mphtim2" 
SYM  2c5 "HSOQ"   # HSO queue entries 
SYM  2c6 "SvStack"
SYM  2c8 "Q0"
SYM  2ce "Prev_PIP_time"
sym  2d0 "Prev_PIP_timeH"
SYM  2d1 "Inj1_LAST"

SYM  2d4 "Q1"

SYM  2da "Next_spout_beta"
SYM  2dc "Bg_timer"
SYM  2dd "Inj2_last"

SYM  2e0 "Q2"
SYM  2e6 "Spr264"
SYM  2e7 "Inj3_last"
SYM  2ea "Q3"
SYM  2f0 "Spare_26E"
SYM  2f1 "Inj4_last"
SYM  2f4 "Q4"
SYM  2fb "Inj5_last"
SYM  2fe "Q5"
SYM  305 "Inj6_last"
SYM  308 "Q6"
SYM  30f "Inj7_last"
SYM  312 "Q7"
SYM  319 "Inj8_last"
SYM  31c "Q8"

SYM  322 "Q9"  
SYM  323 "Egrcnt2"
SYM  324 "Egrper2"
SYM  328 "Maf_time" 
SYM  32a "Amint"
SYM  32c "Amint_temp"
SYM  32e "Maf_ptr"
SYM  330 "Rawairchg"
SYM  332 "Intm"
SYM  333 "Tstall"
SYM  334 "Prev_PIP_ETime"
SYM  336 "Prev_PIPH_PW"
SYM  338 "Tl0FLG"
SYM  339 "Difctr"
SYM  33a "Sigkal"
SYM  33c "Sigdlt"
SYM  33e "Psgdlt"
SYM  340 "Dtsig"
SYM  342 "Serv_code_tab"
SYM  356 "Cntn_code_tab"
SYM  37e "Cfiept"
SYM  380 "Fiept"
SYM  382 "Fmem_monitor"
SYM  384 "Sto_delay"
SYM  386 "Sto_shift"
SYM  388 "Sto_high_delay"
SYM  389 "Sto_high_time"
SYM  38a "Sto_shift_cnt"
SYM  38c "Xram1L"
SYM  38d "Xram1H"
SYM  38e "Xram2L"
SYM  38f "Xram2H"
SYM  390 "Xram3L"
SYM  391 "Xram3H"
SYM  392 "Xram4L"
SYM  393 "Xram4H"
SYM  394 "Bgful1"
SYM  396 "Bgful2"
SYM  398 "Ffulm1"
SYM  39a "Ffulm2"
SYM  39c "Ffulc1"
SYM  39e "Ffulc2"
SYM  3a0 "Archg_bg"
SYM  3a2 "Aeftrff"
SYM  3a4 "Aeftrffl"
SYM  3a6 "Air37"
SYM  3a8 "A3CTMR"
SYM  3aa "Hwtmr"
SYM  3ac "Ivsccs_lst"
SYM  3ae "Ftemp1"
SYM  3b0 "Runsum"
SYM  3b2 "Lsta3C"
SYM  3b3 "Archcor"
SYM  3b4 "Slice_0"
SYM  3bc "Sparek1"
SYM  3bd "Mapsav"
SYM  3be "Piplim"
SYM  3c0 "Min_pip_dly"
SYM  3c2 "Sim_min"

SYM  700 "Kamqa"
SYM  702 "KCsuml"
SYM  703 "KCsumh"
SYM  704 "Ktmtb100"
SYM  759 "Ktmtb185"
SYM  75a "Ktmtb200"
SYM  7af "Ktmtb285"

SYM  7b0 "Kamqb"
SYM  7b2 "KEgoct1"
SYM  7b3 "KEgoct2"
SYM  7b4 "Kamrf1"
SYM  7b6 "Kamrf2"
SYM  7b8 "KLpct1L"
SYM  7b9 "KLpct2L"
SYM  7ba "KLpct1R"
SYM  7bb "KLpct2R"
SYM  7bc "KBpkam"
SYM  7bd "KBpkyon"
SYM  7be "Bpptwtlo"
SYM  7bf "Bpptwt"
SYM  7c0 "Kam_flags"
SYM  7c1 "KIgncnt"
SYM  7c2 "KBratch"
SYM  7c4 "Kam_indexl"
SYM  7c5 "Kam_indexh"
SYM  7c6 "Kam_index3"
SYM  7c7 "Kam_index4"
SYM  7c8 "Kam_index5"
SYM  7c9 "Kam_index6"
SYM  7ca "K14CNT"
SYM  7df "KIdm_warmup_cnt"
SYM  7e0 "Kwuctr"
SYM  7e2 "Kamqc"
SYM  7e4 "KIsckam0L"
SYM  7e6 "KIsckam1"
SYM  7e8 "KIsckam2"
SYM  7ea "KIsckam3"
SYM  7ec "KIsksum"
SYM  7ee "KEptzer"



SYM  222e "Read_AD"
SYM  235d "check_KAM"
sym  2a4c "Knock_chk"
SYM  2174 "Set_Tasklist"
SYM  84b1 "Check_ConsoleD"
SYM  84b2 "Check_console"
sym  27a6 "Set_SW_intp"
SYM  77a0 "clear_KAM"
SYM  2533 "Read_hsi"
SYM  8485 "Idm_inth"
SYM  2a15 "Vss_inth"
SYM  3590 "Bap_inth"
SYM  6c8f "Knk_inth"
SYM  27ca "Pip_inth"
SYM  23bd "Send_HSO_Cmd"
SYM  245d "Sched_HSO"
SYM  29ce "Cid_inth"
SYM  36db "UTabLu16"
sym 6e49 "Do_SelfTest"

sym 4ad7 "Calc_Fuel"
sym 732e "Chk_Sensors"
sym 823f "CHk_HEGO"
sym 63ca "Upd_canP"
sym 2d29 "MAF_rd_calc"
sym 2d37 "MAF_calc"
sym 2dc7 "Do_MAF"
sym 318a "UPd_Inj_pend"
sym 319a "Set_bank_inj"
sym 31c4 "Do_inj?"

sym 374f "Check_Timers"
sym 3ccf "EGO_CrosscntB"
sym 3cd3 "EGO_crosscnt"

sym 2c61 "upd_Htime_pend"
sym 2c6e "Upd_Htime_Prev"
sym 2a3e "knck4"
sym 366a "FilterX"
sym 36b8 "Calc_FFact"
sym 6d17 "UPd_KnkRet"
sym 58b0 "Update_Idle"
sym 6a7b "Upd_ShiftL"
sym 65a1 "Upd_Air_mgmnt"

sym 33e1 "HSO_continued"

sym 5ee7 "Upd_SCCS"
sym 780d "Do_KOEO"
sym 7844 "Do_Csum"
SYM  5852 "Update_dwell"
SYM  3786 "set_rpm_flgs"
SYM  384e "Update_AD"
sym  3695 "Get_par"
SYM  37f3 "Update_WOT"
SYM  3d5a "Update_HWND"
SYM  3ce4 "Update_MPH"
SYM  3dac "Update_rpm"
SYM  68fe "Update_timers"
SYM  63dd "Update_AC"
SYM  4cca "Update_flDOL"
SYM  8530 "Evp_?"
SYM  85a3 "Check_Kam_1"
SYM  85f5 "Check_Kam_2"
SYM  40ba "Update_Egr"
SYM  4141 "Check_spd_lim"
SYM  41a1 "Update_clolp"
SYM  4700 "Adapt?"
SYM  50ee "Update_fpump"
SYM  55c3 "Update_advance"
SYM  648c "Update_fans"
SYM  2151 "Backg_loop"
sym 2149 "Initialise"
SYM  35ac "subyteLU"
sym  35b1 "SSByteLU"
sym  35b4 "USByteLU"
SYM  35b7 "UUbyteLu"
SYM  3601 "SUWordLU"
sym  3606 "SSWordLU"
SYM  360c "UUWordLu"
SYM  36ea "UTabLookUp"
SYM  36e7 "STabLookup"
SYM  371f "TabInterp"
sym 3e7c "Load_Calc"
sym 42c6 "Calc_Fuel_ratio"
sym 44fe "Clamp_Lamda"
sym 4cdf "Calc_Inj_dly"
sym 584a "Scale_R3c"

sym 93b2 "SSFCTR"

sym 7870 "Test1"
sym 78d2 "Test2"

sym 9E80 "IFAM"
sym 945A "DWLWF" 
sym 946A "LODNOK"
sym 9468 "RPMMIN"


sym 2032 "Reset_All"
sym 2284 "HSOTable"
sym 8c26 "Fn394F" 
SYM  8c34 "Fn651"
SYM  8c50 "Fn652A"
SYM  8c78 "Bapxfr"
SYM  8c90 "Fn018"
SYM  8c9e "Fn019B"
SYM  8ca8 "Fn020B"
SYM  8d16 "Fn072A"
SYM  8d32 "Fn082"
SYM  8d46 "Fn083"
SYM  8d56 "Fn087"
SYM  8d6e "Fn339"
SYM  8d78 "Fn342"
SYM  8d86 "Fn344"
SYM  8d90 "Fn346"
SYM  8da6 "Fn378"
SYM  8db0 "Fn703A"
SYM  8dc4 "Fn825A"
SYM  8dd4 "Fn825B"
SYM  9069 "Fn1328"
SYM  90b9 "Fn389"
SYM  90c6 "Fn098"
SYM  9148 "Inj_lt_scl"
SYM 94da  "LOM_spark"
SYM 9366  "ECT_AM_Mult" 
sym 9afc  "HCAMSW"
sym 924c  "ISC_ECT_SC"
sym 943f  "LUGTIM"

#table 9102 9147 :o 10 
#table 9160 91af :O 10 Y 
#table 91b0 91b8 :O 9 Y 
#table 91b9 91c0 :O 8 Y 

func 90e2 9101 :W
func 9256 9285 "ISC_Tfr" :W
func 9286 9299 "ISC_add_RPM":w
func 929a 92b1 "ISC_DC_load" :w


func 92b2 92bf "ISC_gain_RPM" :Y
func 92c0 92cd "ISC_st_ECT" :Y S:Y
func 92ce 92d5 "SP_IDL_Dash" :Y
func 92d6 92f1 "ISC_Drv_Mult" :S W :W

func 92f2 930d "ISC_Neu_Mult" :S W:W
func 930e 9329 "ISC_Corr_CL" :S W:W

#func 932a 9345 :W
#func 9346 9359 :W
#func 935a 9365 :Y S:Y

#table 9366 938f  :o 7

#func 9390 939b :Y
#func 939c 93a7 :Y

#func 979c 97a7 :Y
#func 9760 9777 :w
#func 9778 9783 :y
#func 9784 9791 :y
#func 9792 979b :y
#func 9748 975f :w

table 9710 9747 "PT_spk_LD":o 7
table 96c0 970f "tqe_red"   :o 10
table 96b4 96bf "PT_spk_add" :o 4

#func 9488 94ab :W S:W
#func 94ac 94bf :W S
#func 94c0 94cd :Y S
#func 94ce 94d9 :Y :Y S

#func 94da 94ed :w

#func 94ee 94f7 :Y S
#func 94f8 9503 :Y

#func 9504 9527 :W
#func 9528 9531 :y
#func 9532 953f :y S
#func 9540 954d :y
#func 954e 9559 :y
#func 955a 9567 :y
#func 9568 9573 :y


#func  9b80 9b9f :W
#func 987a 989d :w S :W
#func 989e 98af :Y S
#func 98b0 98b9 :Y
#func 98ba 98e1 :W
#func 98e2 98ed :Y
#func 98ee 98f7 :Y
#func 98f8 9903 :Y

#func 9904 991b :w
#func 991c 9925 :Y s :Y

#func 9926  9941 :W

#func 9942 995d :w S

#func 995e 9985 :w

#func 9986 99ad :w
#func 982a 9845 :w
#func 980d 981a :Y
#func 981b 9827 :Y 

table 9ba0 9bef "Backflow" :O 10 Y 
table 9bf0 9c3f "Basefuel"  :O 10 Y 
table 9c40 9c8f "Strt_fuel" :O 10 Y 
table 9ce8 9d37 "Fuel_eqLS" :O 10 Y 
table 9d38 9d87 "Fuel_eqLT" :O 10 Y 
#table 9614 9663 :O 10 Y 
#table 9964 9964 :O 10 Y 
#table 9664 96b3 :O 10 Y 
#table 95c4 9613 :O 10 Y 
#table 9574 95c3 :O 10 Y
table 9a4e 9a59 "MFAEGR_mlt" :O 4 Y
#table 99fe 9a4d  :Y O 10 

func 9a5a 9a65 "CANP_DC"  :y
func 9a66 9a71 "CANP_Mlt" :y
func 9a72 9a7d "CANP_AM"  :y 
#func 9de8 9dff :W
#func 9862 9879 :W 
#func 9b48 9b53 :Y S:Y
#func 9b54 9b6b :W
#func 9b6c 9b7f :w
func 9c90 9cab "PK_load_SL" :W
func 9cac 9cc7 "Load_Lim_OL" :W S
func 9cc8 9ce7 "Fuel_Dr_En" :W S
#func 9846 9861 :W 
#func 922c 924b :W 
#func 9b30 9b47 :W
#func 9afc 9b0f :W
#func 924c 9255 :Y S 
#table 99ae 99fd :o 10
#table 9e00 9e59 :O 10 Y S
#table 9da8 9dc7 :O 4 Y
#table 9d88 9da7 :O 4 Y
#table 9dc8 9de7 :O 4 Y S
#func 9b10 9b2f :W




sym 97ce "EGRDCOFF"
sym 97d0 "EGRDB"
sym 9ad4 "SHFRPM"
sym 9ad6 "SHMRPMH"
sym 9ada "DFSVS"
sym 9adb "DFSVSH"

sym 9ae2 "MinECT_adp"
sym 9ae3 "MaxECT_adp"
sym 9ae6 "ADAPTIM"

sym 97fc "ldffact"
sym 97D4 "XFREPT" 
sym 9af2 "LMBJMP"
sym 97be "200rpm"

sym 97c2 "225_RPM"
sym 9aaf "InJPP"
sym 9454 "SPTADV"


sym 980D "HSS_retard"

sym 9439 "SPKWOT"
sym 9444 "SPKSWL"
sym 9463 "TIPINC"
sym 9e68  "MHPFD"
sym  8c0a "Ssfctr"
SYM  8e5c "Bfulsw"
SYM  8e5e "Fkskay"
SYM  8e60 "Sigkll"
SYM  8e62 "Sigklu"
SYM  8e64 "Thbpsc"
SYM  8e66 "Thbpsh"
SYM  8e68 "Niac"
SYM  8e6a "Niach"
SYM  8e6c "Debamp"
SYM  8e6e "Hi_off"
SYM  8e70 "Low_on"
SYM  8e72 "Lcoast"
SYM  8e74 "Hcoast"
SYM  8e76 "Laccel"
SYM  8e78 "Haccel"
SYM  8e7a "Lresum"
SYM  8e7c "Hresum"
SYM  8e7e "Lohold"
SYM  8e80 "Hihold"
SYM  8e82 "Dcbias"
SYM  8e84 "Setgn"
SYM  8e86 "Vehgn"
SYM  8e88 "Tapgn"
SYM  8e8a "Debtim"
SYM  8e8c "Minvsp"
SYM  8e8e "Maxvsp"
SYM  8e90 "Vsnmax"
SYM  8e92 "Mphded"
SYM  8e94 "Mphh"
SYM  8e96 "Aclded"
SYM  8e98 "Aclinc"
SYM  8e9a "Hldref"
SYM  8e9c "Vsmpg"
SYM  8e9d "Vsmpgh"
SYM  8e9e "Hldrng"
SYM  8e9f "Lowbat"
SYM  8ea0 "Vscfrq"
SYM  8ea1 "Vstype"
SYM  8ea2 "Dasmph"
SYM  8ea3 "Dasmhyst"
SYM  8ea4 "Dasmin"
SYM  8ea6 "Mfmhys"
SYM  8ea7 "Vairfl"
SYM  8ea8 "Vtabfl"
SYM  8eaa "Vipspk"
SYM  8eac "Vkypwr"
SYM  8eae "Viprr1"
SYM  8eb0 "Viplr1"
SYM  8eb2 "Vnmin"
SYM  8eb4 "Vdly8"
SYM  8eb6 "Vtap1"
SYM  8eb8 "Vtap2"
SYM  8eba "Vtap3"
SYM  8ebc "Vtap4"
SYM  8ebe "Vtap5"
SYM  8ec0 "Vtap6"
SYM  8ec2 "Actmin"
SYM  8ec4 "Actmax"
SYM  8ec6 "Vect5"
SYM  8ec8 "Tapmax"
SYM  8eca "Tapmin"
SYM  8ecc "Wiglvl"
SYM  8ecd "V_fpmflg"
SYM  8ece "V_fpmdly"
SYM  8ecf "V_fpmtm"
SYM  8ed0 "Vidmst"
SYM  8ed2 "Vidmtm"
SYM  8ed4 "Vlorpm"
SYM  8ed6 "Vpiptm"
SYM  8ed8 "Ectmin"
SYM  8eda "Ectmax"
SYM  8edc "Vtcego"
SYM  8ede "Goosec"
SYM  8edf "Goosmp"
SYM  8ee0 "Goosn"
SYM  8ee2 "Goospk"
SYM  8ee4 "Goostp"
SYM  8ee6 "Goosw"
SYM  8ee7 "Vkts"
SYM  8ee8 "Vdisfm"
SYM  8eea "Vtcdsn"
SYM  8eec "Vbisw"
SYM  8eee "Vcbclp"
SYM  8ef0 "Vcbpad"
SYM  8ef2 "Vcbpct"
SYM  8ef4 "Vlamcb"
SYM  8ef6 "Viscn1"
SYM  8ef8 "Vcbdly"
SYM  8ef9 "Vcbflg"
SYM  8efa "Visdl4"
SYM  8efb "Visdl5"
SYM  8efc "Vcbtm1"
SYM  8efd "Vcbtm2"
SYM  8efe "Vegobp"
SYM  8eff "Vegosw"
SYM  8f00 "Vegotm"
SYM  8f01 "Vptcnt"
SYM  8f02 "Vectmr"
SYM  8f03 "Vcrtdc"
SYM  8f04 "Vegrat"
SYM  8f05 "Vdcmin"
SYM  8f06 "Vdcmax"
SYM  8f08 "Vegrload"
SYM  8f0a "Evpmin"
SYM  8f0c "Evpmax"
SYM  8f0e "Vevpll"
SYM  8f10 "Vevphl"
SYM  8f12 "Vevpdl"
SYM  8f14 "Vevpcl"
SYM  8f16 "Veitmr"
SYM  8f17 "Vdledf"
SYM  8f18 "Vdlhed"
SYM  8f19 "Vlfntm"
SYM  8f1a "Vhfntm"
SYM  8f1b "C14LVL"
SYM  8f1c "C22LVL"
SYM  8f1d "C29LVL"
SYM  8f1e "C31LVL"
SYM  8f1f "C32LVL"
SYM  8f20 "C33LVL"
SYM  8f21 "C34LVL"
SYM  8f22 "C35LVL"
SYM  8f23 "C41LVL"
SYM  8f24 "C51LVL"
SYM  8f25 "C53LVL"
SYM  8f26 "C54LVL"
SYM  8f27 "C56LVL"
SYM  8f28 "C61LVL"
SYM  8f29 "C63LVL"
SYM  8f2a "C64LVL"
SYM  8f2b "C66LVL"
SYM  8f2c "C87LVL"
SYM  8f2d "C91LVL"
SYM  8f2e "C95LVL"
SYM  8f2f "C96LVL"
SYM  8f30 "Idmlvl"
SYM  8f31 "C14UP"
SYM  8f32 "C22UP"
SYM  8f33 "C29UP"
SYM  8f34 "C31UP"
SYM  8f35 "C32UP"
SYM  8f36 "C33UP"
SYM  8f37 "C34UP"
SYM  8f38 "C35UP"
SYM  8f39 "C41UP"
SYM  8f3a "C51UP"
SYM  8f3b "C53UP"
SYM  8f3c "C54UP"
SYM  8f3d "C56UP"
SYM  8f3e "C61UP"
SYM  8f3f "C63UP"
SYM  8f40 "C64UP"
SYM  8f41 "C66UP"
SYM  8f42 "C87UP"
SYM  8f43 "C91UP"
SYM  8f44 "C95UP"
SYM  8f45 "C96UP"
SYM  8f46 "Idmup"
SYM  8f48 "Viact1"
SYM  8f4a "Viact2"
SYM  8f4c "Viact3"
SYM  8f4e "Viact4"
SYM  8f50 "Viect1"
SYM  8f52 "Viect2"
SYM  8f54 "Viect3"
SYM  8f56 "Viect4"
SYM  8f58 "Vect3"
SYM  8f59 "Filhys"
SYM  8f5a "Vrlam2"
SYM  8f5c "Vbpdl1"
SYM  8f5e "Vbpdl2"
SYM  8f60 "Vmafpiplmt"
SYM  8f62 "Vmafo1"
SYM  8f64 "Vmafr1"
SYM  8f66 "Vmafr2"
SYM  8f68 "Maxmaf"
SYM  8f6a "Vmamin"
SYM  8f6c "Vmarpm"
SYM  8f6e "Vsload"
SYM  8f70 "Vbpmax"
SYM  8f72 "Fmdtm"
SYM  8f74 "Millim"
SYM  8f76 "Miltm1"
SYM  8f78 "Vnd1"
SYM  8f7a "Vnd2"
SYM  8f7c "Occdt1"
SYM  8f7e "Occdt2"
SYM  8f80 "Occdt3"
SYM  8f82 "Occdt4"
SYM  8f84 "Occdt5"
SYM  8f86 "Occdt7"
SYM  8f88 "Occdt8"
SYM  8f8a "Occdta"
SYM  8f8c "Occdtb"
SYM  8f8e "Eptmin"
SYM  8f90 "Eptmax"
SYM  8f92 "Veptll"
SYM  8f94 "Vepthl"
SYM  8f96 "Veptrl"
SYM  8f98 "Veptrh"
SYM  8f9a "Veptil"
SYM  8f9c "Veptih"
SYM  8f9e "Veptdl"
SYM  8fa0 "Veptcl"
SYM  8fa2 "Vn"
SYM  8fa4 "Vtcept"
SYM  8fa6 "Vpssw"
SYM  8fa8 "Vsprpm"
SYM  8faa "Vspadv"
SYM  8fac "Vspret"
SYM  8fae "Vspten"
SYM  8faf "Vsptdl"
SYM  8fb0 "Vdly1"
SYM  8fb1 "Vdly2"
SYM  8fb2 "Viptm2"
SYM  8fb3 "Vatmr2"
SYM  8fb4 "Vstgn"
SYM  8fb6 "Vvhgn"
SYM  8fb8 "Vtpgn"
SYM  8fba "Vrsh"
SYM  8fbc "Vrss"
SYM  8fbe "Vacrr"
SYM  8fc0 "Vipt1"
SYM  8fc1 "Vipt2"
SYM  8fc2 "Vipt3"
SYM  8fc3 "Vdly10"
SYM  8fc4 "Vdly11"
SYM  8fc6 "Vtpld"
SYM  8fc8 "Vtplu"
SYM  8fca "Vdcbia"
SYM  8fcc "Vvscet"
SYM  8fcd "Vsmapl"
SYM  8fce "Vsamin"
SYM  8fd0 "Vsmmin"
SYM  8fd2 "Vssmn1"
SYM  8fd3 "Vsssw"
SYM  8fd4 "Vsstim"
SYM  8fd8 "Mfatm3"
SYM  8fd9 "Mfatm2"
SYM  8fda "Mfatm5"
SYM  8fdb "Mfatm1"
SYM  8fdc "Mfatm4"
SYM  8fdd "Mfasw"
SYM  8fde "Cintsw"
SYM  8fdf "Cintv"
SYM  8fe0 "Cthin"
SYM  8fe1 "Numpr"
SYM  8fe2 "Olmtd1"
SYM  8fe3 "Agb"
SYM  8fe4 "Mfanlo"
SYM  8fe6 "Mfanhi"
SYM  8fe8 "Mfasn"
SYM  8fea "Mfalh"
SYM  8fec "Swtcnt"
SYM  8fee "Mfanhh"
SYM  8ff0 "Mfanlh"
SYM  8ff2 "Mfall"
SYM  8ff4 "Mfalhh"
SYM  8ff6 "Mpmnbp"
SYM  8ff7 "Mpnbph"
SYM  8ff8 "Mfarmp"
SYM  8ffa "Injref"
SYM  8ffc "Idkmul"

SYM  9000 "Alpha"

SYM  9004 "Aeflag"
SYM  9006 "Tpdlta"
SYM  9008 "Aeacld"
SYM  900a "Aetar"
SYM  900b "Frctae"
SYM  900c "Kft"
SYM  900e "Tfsmn"
SYM  9010 "Tfctm"
SYM  9011 "Mteisf"
SYM  9012 "Mteftc"
SYM  9013 "Tfcisw"
SYM  9014 "Meftra"
SYM  9015 "Meftrd"
SYM  9016 "Tfcded"
SYM  9018 "Archlk"
SYM  901a "Engdisp"
SYM  9020 "Faminc"
SYM  9022 "Kpsinu"
SYM  9024 "Kpsind"
SYM  9026 "Kpsidu"
SYM  9028 "Kpsidd"
SYM  902a "Psibrm"
SYM  902c "Psibrn"
SYM  902e "Ithbma"
SYM  9030 "Debycp"
SYM  9032 "Dasptk"
SYM  9034 "Daspto"
SYM  9036 "Delhys"
SYM  9038 "Rpmctl"
SYM  903a "Ndif"
SYM  903c "Minmph"
SYM  903e "Rpmded"
SYM  9040 "Delrat"
SYM  9042 "Samrat"
SYM  9043 "Isctm"
SYM  9044 "Lowlod"
SYM  9045 "Aclod"
SYM  9046 "Updisc"
SYM  9047 "Updatm"
SYM  9048 "Niold"
SYM  904a "Nubase"
SYM  904e "Bzzrpm"
SYM  9050 "Dnac"
SYM  9052 "Isclpd"
SYM  9054 "Famlim"
SYM  9056 "Maxfam"
SYM  9058 "Ndppm"
SYM  905a "Dnppm"
SYM  905c "Acppm"
SYM  905e "Dacppm"
SYM  9060 "Psppm"
SYM  9062 "Dactm"
SYM  9064 "Dnpows"
SYM  9066 "Tkdtm"
SYM  9067 "Bzztm"
SYM  9068 "Nddelt"


sym  93e1 "EcadHP"
sym  93e2 "ECADQ1"
sym  93e3 "ECadn"
sym  93E4  "ECADVS"
sym  93E6  "EDNHYS"
sym  93E7  "EDVSHYS"
sym  93E8  "EDTM3"


SYM  9e66 "Hpcid"
SYM  9449 "Hphidres"
SYM  9452 "Paclim"
SYM  945c "dwLTSW"
SYM  9ab1 "Outinj"
sym  9e00 "Lcellindx"
SYM  9ad1 "Pipnum"








SYM  786b "Chkbase"
SYM  97b0 "Wotbrkv"
SYM  9a92 "Openlpv"
SYM  9434 "Ptspkad"
SYM  943a "Wotspkad"
SYM  9462 "Tipinret"
sym  9464 "TIPLOD"
sym  9466 "TIPHS"
sym  945E "KACRAT"
sym  946E "NTIP"
SYM  9456 "Lowdwell"
SYM  9458 "Hidwell"

sym  9461 "ADVLIM"
sym  9470 "WOPEN"

sym  9472 "WINLEN"
sym  9474 "RPMCNL"
sym  9478 "KNKCYL"
sym  9479 "WINCLD"

SYM  9504 "Wotadvrpm"
SYM  9532 "Wotadvect"
SYM  9540 "Wotadvact"
SYM  94ee "Ptadvact"
SYM  9528 "Wotadvbap"
SYM  979c "Advrpm"
SYM  9761 "Minlsdwl"
SYM  9749 "Minhidwl"
SYM  9574 "Basespk"
SYM  95c4 "Sealspk"
SYM  9614 "Atlospk"
SYM  8cde "Rpmscale"
SYM  8cfa "Ldscale"
SYM  97ba "Olflmult"
sym  9d38 "ECT_fuel"
sym  99ae "Sea_l_EGR"
sym  99fe "alt_EGR"
sym  982a "Sea_llug_ol_mult"

sym  97d2 "egrmpt"
sym  97aa "Tp_Delta"


sym 9e5e "CThigh"

sym 97ae  "TP_Hysts" 
sym 97ac  "Tp_Hysts2"

SYM  8de3 "Maftfr"
SYM  935a "Crankisc"

SYM  8d17 "Floadscale"
SYM  8cd2 "Ectflscale"
SYM  9b81 "Wotmult"
SYM  9de9 "Olmult"
SYM  982b "Sealug"
SYM  9847 "Altlug"
SYM  9b48 "Olactmult"
SYM  9863 "Crkmult"
SYM  987b "Crkpw"
SYM  9002 "Gaclmult"

SYM  91c1 "Tpsaclrich"
SYM  91cb "Accelrich"
SYM  922d "Vss_inj"
SYM  901c "Low_slope"
SYM  901e "Hi_slope"
SYM  8ffe "Inj_dly"
SYM  9160 "Inj_time"
SYM  91b9 "Inj_order"
SYM  9b30 "Inj_vss"
SYM  91b1 "Inj_opp"
SYM  9414 "Fan_temp"
SYM  941c "Fan_enble"
SYM  941d "Hedfhp"
SYM  941e "Ect_hs1"
SYM  941f "Ect_hs2"
SYM  9432 "Cl_th_spkadd"
SYM  9b54 "Cl_ol_fuel"
SYM  904c "Neu_rpm"
SYM  9049 "Drv_rpm"
SYM  9390 "Drv_aflw"
SYM  939c "Neu_aflw"
SYM  9346 "Dash_max"
SYM  932a "Dash_dec"
SYM  8c16 "Min_pip"
SYM  9a94 "Max_rpm_f"
SYM  9a9a "Min_cl_ld"
SYM  9aa0 "Ol_time"
SYM  91b0 "Inj_opport"
SYM  93bb "Bihp"
SYM  9ab0 "Cyl_wrap"
SYM  93bc "Pspshp"
SYM  940e "Hpacl"
SYM  947a "Kihp"
SYM  9460 "Retlim"
SYM  9748 "Min_Low_dwell"
SYM  9760 "Min_Hi_dwell"
SYM  97b2 "Ldel"
SYM  97b3 "Ldeh"
SYM  9846 "Alt_lug_ol_mult"
SYM  9862 "Crnk_pw_time"
SYM  987a "Crnk_pw_ect"
SYM  9a82 "Halffuelon"
SYM  9a84 "Halffueloff"
SYM  9a86 "Spdlim_a_on"
SYM  9a8a "Spdlim_a_off"
SYM  9a95 "Rev_lim?"
SYM  9a9c "Min_ld_cl"
SYM  9aa2 "Lammax"
SYM  9aa4 "Lammin"
SYM  9aee "Adp_ctl_min"
SYM  9aef "Adp_ctl_max"
SYM  9b80 "Wot_fuel_mlt"
SYM  9476 "Spklim"
sym  9e5f "CtLow"
SYM  9e6a "Trsrpm"
SYM  9e6c "Trsrph"
SYM  943d "Spuclp"
SYM  943c "Splclp"
SYM  944a "Tfi_dwell"
sym  9446 "PIP_Tlow"
SYM  9450 "Pacslo"
SYM  93aa "Fkarch"
SYM  93ae "Filfrc"
SYM  93ac "Fkarc1"
SYM  9de8 "Ol_fuel_mult"
SYM  9ac3 "Minect_shut"
SYM  9ac8 "Minrpm_shut"
SYM  9ae4 "Minact_adp"
SYM  9ae5 "Maxact_adp"

sym 97b5  "LDLTM"
sym 97b6  "LDMH"
sym 97b8  "LDMHH"

sym 9a9e "HLODH"

SYM  97cd "Egr_mult"
SYM  97d9 "Egr_type"
SYM  9e65 "Thrmhp"
SYM  9e67 "Hp_cidsel"
SYM  9d88 "Ex_pulse"
SYM  9e70 "No_hegos"
SYM  9da8 "Hego_ampl"
SYM  9dc8 "Hego_bias"
SYM  8cb2 "Emm_lscale"
SYM  9b10 "Emm_rscale"

sym 9e5d  "Tstrat"
SYM  9e61 "PIPsC"
sym  9e74 "MINAM"
Jamie from oz
Posts: 54
Joined: 2022 Jul 08, 04:54
Location: South Australia
Vehicle Information: 1995 ford falcon ute 5.0 windsor efi

Re: 1DGA disassembly

Unread post by Jamie from oz »

A9L_cmt to cut and paste

Code: Select all

2004 # FIXSUM to get to zero sum
200a # Checksum Fix
200c # End of ROM ?
200e # I/O times between console executions (->84c2)
2010 # HSO Port Output 2
2012 # I/O Timer Overflow
2014 # A/D End of Conversion
2016 # HSI Port Input Data Available
2018 # External Interrupt Vector
201a # HSO Port Output  1
201c # HSI 1 Interrupt Vector
201e # HSI 0 Interrupt Vector
201e ||################# 'Base + offset' (Rbase) register setup - used throughout -> Rf0 - Rfe
2020 # no of regs
2022 # Rf0
2030 # Rfe
2030 ||#############################################################
2030 |# Master Reset Subroutine
#32030 # Clears 0x16 to 0x489 [if b5&6 R2A unset, then POWER UP=1 (b0 Ref)
#2030 |# bit 6 = ?
#2030 |# input - R2A bit 5 = ?
2030 |#############################################################
2034 # stop interrupts
2036 # save VIP mode
2053 # restore VIP mode
205c # R72,R74,R76 RAM base ptrs
2060 ||###########################
1 |# Initialise various locations in memory, lists start at 862a
1 |# 3 lists linked together
1 |# each list has an address 'base' which is added to each address entry
1 |# update is done with an OR, which allows checking
2060 |###########################|
2068 # outer loop
206c # -1 = list processing done
206e # 'Base' address, in top byte (R1b)
2071 # end of list (address of next list)
2079 # get low byte of addr to init
207c # get current contents
207f # OR byte from list
2082 # save new value
2087 # Error, try again
2089 # Address of next list
208c ||#####################now do rest of checks|
208e # engineering console 
2091 # Init console if found
2094 # verify KAM Table 1 (702-7AF)
2097 # verify KAM Table 2 (7E4-7EC)
209a # engine load (VE)
209e # Averaged Load
20a7 # Save ptr to MAF tfr func
20af # filtered TP to start value
20b7 # EGR Type (0=sonic, 1=PFE, 2=none)
20be # PFE EGR is present
20c1 # = 1.428 for 8 cyl
20c5 # = 8 (PIPs per cycle)
20cc # = 1.666 for 6 and 4 cyl
20d0 # ratio for Signature PIP (cyl 1)
20d4 # get EVP from KAM
20e7 # default EVP if outside limits
20eb # filtered EVP saved in KAM
20f5 # Clear any pending HSI input data
20fe # HSI0, HSO 1, HSO 2
2101 # HSI line select
210a # Drop chan 1 - No knock sensor 
2113 # Add chan 5 - CID sensor 
211c # Add chan 6 - VSS sensor
211c ||######## set up HSO event to tickle console every 5mS|
# 211f # change output in 3 state times
2124 # Software Interrupt (ch 10) in 3 state times
212d # not TFI controlled dwell, do SPOUT ?
2131 # address in data Table - SPOUT(channel 5)?
213d # High Data Rate Electronic Spark H/W 
2141 # address in data Table - SPOUT(channel 5)?
2148 ||#############################################################
2148 |# EEC main (background) loop - cycles thru these routines
2148 |# R9A ($9a) is current routine offset
2148 |# Runs subroutines in Table starting at index 0
2148 |## Jump here from RESET
2148 |#############################################################
2149 # clear all VIP mode flags
214b # set stack pointer
2154 # goto loopstop (DEAD) if too big
2156 # routine num
2159 # address of subroutine from list
215d # push return address
2160 # push subroutine address to stack
216a # Reset RAM pointers every time through
216e # next subroutine
2171 # execute routine
2172 # LOOPSTOP - DEAD
2172 ||#################################################################
2172 |# Update loop selection and restart loop
2172 |# from task list routine at 2151, do each of 3 loops
2172 |# LIST A - Normal Operation
2172 |# List B - KEOE Engine off self tests (and engine on cruise controls self test? )
2172 |# List C - KEOR Engine running self tests
2172 |#################################################################
2177 # Vehicle Speed Control Self Test ?
217a # set List B
2181 # set List C
2185 # set List A
2189 ||####### Tasklist Subroutine Lists
2189 |####### List A - normal operation - no self tests
218a # Check console, init RF0 regs
218c # Validate/initialise KAM
218e # Update Dwell
2190 # Set RPM Flags
2192 # Read AD channels
2194 # Read/update raw AD vals
2196 # Update WOT flag
219a # Update heated windshield flag
219c # Update (MPH) vehicle speed values
219e # Update RPM?
21a0 # Update A/C cutout and idle flags
21a4 # Update Timers
21a8 # Update fuel comsumption for DOL
21ac # EVP something
21ae # Update EGR stuff?
21b0 # Check for RPM and Speed limiters
21b2 # Update closed loop flags
21b4 # Adaptive something
21b8 # Update fuel pump enable
21ba # EVP something - large function
21bc # EGR stuff
21be # Update spark advance
21c2 # Update ect cooling fans
21c8 # Update Canister Purge timing
21cc # Update idle speed
21ce # SCCS stuff checks VBAT
21d0 # Update shift light
21d4 # Update Air Management
21d8 # diagnostic Self Tests
21da # recheck list A
21da ||################# List B - engine off self tests (and engine on cruise controls self test? )|
21dc # check console, init RF0 regs
21de # Set RPM Flags
21e0 # Read AD channels to Table
21e2 # Read/update raw AD vals
21e4 # Update vehicle speed vals
21e6 # Update RPM
21ea # Update Timers
21ee # Update EGR stuff?
21f2 # Update fuel pump enable
21f4 # Update Vehicle Speed Control
21f6 # Diagnostic Self Tests
21f8 # Update EGR stuff
21fa # Update Canister Purge
21fc # Recheck list B
21fc ||######### List C - engine running self tests|
21fe # Check console, init RF0 regs
2200 # Read AD channels
2202 # Read/update raw AD vals
2204 # Update WOT flag
2206 # Update vehicle speed values
2208 # Update Dwell
220a # Update RPM
220e # Update Timers
2212 # Update fuel comsumption for DOL
2216 # Update EGR stuff?
2218 # Something Injection ?
221c # Update fuel pump enable
221e # Ccheck idle speed?
2220 # SCCS stuff checks VBAT
2222 # Check HEGO sensors
2224 # Check brake and PS flags
2226 # Ddiagnostic Self Tests
2228 # Update EGR stuff
222a # Update Canister Purge
222c # List C (rechecks List)
222c ||#################################################################
222c |# Save A to D values.  Definitons in Structure at 225f
222c |#################################################################
222e # A/D Lookup Structure
2233 # get, and set, AD channel reqd
2237 # exit if no more channels
2239 # wait for AD ready
223e # get channel returned
2242 # check correct channel
2245 # No, try read again
2247 # AD Low value
224b # AD High value
224e # incr ptr to save address
2253 # get destination address (hi+lo)
2256 # save AD value to destination.
2259 # next AD
225e ||#############################################################
225e |# A/D Definition.  3 byte entries
225e |# byte 1   = A/D channel no (0-12) 
225e |# byte 2&3 = destination address
225e |# NB AD Ch 6 (MAF) is read and saved elsewhere, to 0x124
225e |#############################################################

225f # Throttle position sensor rate
2262 # Voltage Calibration Level
2265 # Voltage level (->793d)
2268 # Open Circuit Check
226b # Speed control system
226e # Exhaust Gas Oxygen sensor 2
2271 # Throttle position sensor (->794d)
2274 # Engine Coolant Temperature
2277 # Air charge temperature
227a # Auto shift posn (neutral/drive) NDS
227d # Exhaust Gas Oxygen sensor 1
2280 # EGR Valve position
2283 # end of Table
2283 ||##########################
2283 |# Table used for High Speed Output (HSO).  Called from several places
1 |# 8 byte entries are - 
1 |# Offset  Description
1 |# 0,1  Subroutine call address
1 |# 3  HSO command to send, plus bits 6&7
1 |#    B6 = 1 Don't keep o/p state in $44   
1 |#    B7 = 1 Do extra subroutine at [ptr+6] if set (only in $250d)   
1 |# 4  Max count of Queued HSO events (hardware is 12 max) skip if higher
1 |# 5  Offset for this entry into RAM table at 2C5
1 |# 6,7  Subroutine call address
1 |# commands entries are therefore 
1 |# 2286  ch 9 (KTS)    ON, no int, don't keep state, call $24f9  ? don't call $6d11
1 |# 228e  ch 9 (KTS)   OFF, int  , no ON, clear bit 9  call $250d then calls $6cd8
1 |# 2296  ch 5 (SPOUT)  ON, no int, don't keep state, call $24f9  ? don't call $2c88
1 |# 229e  ch 5 (SPOUT) OFF, int  , no ON, clear bit 5  call $250d then calls $2c61
1 |############################################


22a5 ||##################################################################
1 |# Injector timing Table. 22 bytes per cyl (12 ON, 10 OFF ?) 
1 |# (Offset, Size, Purpose)
1 |# 0  subroutine call - 325a is 'Send HSO' command
1 |# 2  ?
1 |# 3  byte HSO (ON) command to send
1 |# 4  byte 10  = count of or max for HSO queue ?
1 |# 5  byte offset into 2C5 scheduling Table
1 |# 6  byte bit mask for setting
1 |# 7  byte bit mask for clearing
1 |# 8  word injector cyl no (port no)
1 |# A  word bit mask
1 |# #######################
1 |# C  (0) Subroutine call - 3273 is 'Send HSO' Command 
1 |# F  (3) byte HSO (OFF) command to send
1 |# 10 (4) byte 12 = count of or max for HSO queue ?
1 |# 11 (5) byte offset into 2C5 scheduling Table
1 |# 12 (6) byte bit mask for setting
1 |# 13 (7) byte bit mask for clearing
1 |# 14 (8) word injector cyl no (port no)
1 ||##################################################################

2356 ||##################################################################
2356 |# called from HSOTable
2356 |##################################################################

235c ||#################################################################
235c |# Validate KAM signature and initialize if invalid
235c |##################################################################

2364 # to check KAM signature
2380 # KAM valid
2382 # KAM invalid
2385 # 700 = 0xAA
2389 # 7b0 = 0xC6
238d # 7e2 = 0x75
2398 # default EVP value
239c # Rolling avg of EPT sensor at Idle (counts)
23a1 # Init tables at 703 and 759
23ac # clear Idle Speed KAM IPSIBR cells
23b7 # Clear KAM Flags (7C0)
23bc ||###############################################################
1 |# Send command to HSO, does actual output
1 |# Input Parameter Registers:
1 |# R80,1,2 = 24 bit time to fire event
1 |# [R92 + 3] = HSO Command to send
1 |# R92 points to one of 2284 entries
1 |# Updates state in $44 if B6 of HSO Command is NOT set
1 |# sends injector pulses via HSO outputs
1 |# NOTE - this proc short cuts the caller, forcing its exit, if no queue flag is set
1 |###############################################################|

23bd # HSO command to send 
23cb # Add Delta to master time (24 bit)

23db # time until event needs to fire (24 bit)
23de # Event time has passed - do immediately?
23e1 # time delta > 65535 IO times
23e7 # time < 29 uS - do immediately
23ef # time > 2.625 mS  - skip
23f8 # schedule command execution (via 2284/2C5 Table)
23fd # compare to [Table+4] - count?
2403 # jmp back to schedule a task
2413 # HSO output overflow
2419 # jmp back to schedule a task
2419 ||########### Set up HSO entry in h/w
241b # set output change time
2420 # command to send - from R92 entry[3]
242b # = (timelo/256) & 7
242f # each slice is event count, in 614uS (0.6mS) slots ?
2436 # increment relevent slice
2453 # keep state (on or off)
2457 # flags = $4c:4 =1 others 0
245a # SHORT CUT, return to GRANDcaller
245c ||##############################################################
245c |# This proc defines a PWM ON or OFF event.
245c |# The volatile info (time etc) are saved in the 2C5 Table in spots from
245c |# 2284 Table  2286(ON), 228E(OFF), 2296(ON), 229E(OFF)
245c |# R80/81/82 24 bit time for event to execute (call events execute proc)
245c |# R92 - pointer to one of the two sides (on or off) of the event pairs in 2284 Table
245c |# 22A6 Table is valid too (ie 22B6)
245c |# check if this functions entry is currently scheduled
245c |# reserved for each ROM Table entry ( ROM offset 5 points to 2C5 Table entry)
245c |# schedule subroutine for timed execution
245c |#
245c |# link (2c5) first byte is status ? jmps to activate if N=1, FF = NOT  scheduled
# 245c |# link is currently scheduled for execution
# 245c |# unlink entry from current execution time list
245c |##############################################################
245d # = 2C5 RAM Table offset for this entry
2461 # = 1st byte(link) of 2C5 entry
2469 # FF = out of service
246c # = link deactivated
2471 # +5, link to next entry (OFF?)
2477 # = link deactivated
247c # jump if end (no next entry)
247e # entry is valid so update link?
247e ||### populate entry - 2284 offset and new 24 bit activation time|
2483 # convert to Table offset
2488 # save *ROM* OFFSET in this 2C5 Table entry [1]
248d # save TimeLo16
2492 # save TimeHi8
2497 # load offset (2C5) to list head (?) from 2284 Table pointer
249b # R8A is link from R88 entry
24a1 # insert into list by activation time
24a1 ||#### insert entry in 2C5 list by activation time
24a3 # flip to other 'side' of entry ?
24a7 # traverse link + 5
24ad # jmp if valid 'link' to next entry - if N==0 && Z==0 then jmp to next entry
24ad ||### end of list - insert at end of list|
24af # save in other 'side' link?
24b9 # convert 2C5 offset to address
24c1 # (ROM offset? )offset 1 (0 value means time/entry not valid/active? )
24c6 # jmp if offset link = 0
24c6 ||### this is an active entry - compare event times|
24c8 # execute time Lo 16 bits
24d0 # execute time Hi 8 bits
24d5 # if new event time is after this entry time then jump
24d5 ||### insert in list before R8A entry|
24e5 # index to flip side of entry
24ed # pointer to base side of entry
24f8 ||#############################################################
1 |# subroutine called from $2296.
1 |# send command from Tptr+3, then change TPtr to next entry (+8)
1 |# and execute subroutine at [Tptr-2]  ([Tptr+6] from orig locn)
1 |#############################################################

24f9 # send HSO command and other stuff
24fe # move to next entry
2502 # push return address
2508 # call subroutine from -2 of next entry
2509 # must reschedule the event
250b # drop through if reschedule
250b ||#############################################################
1 |# subroutine called from $2296.
1 |# send command from Tptr+3,
1 |# IF B7 Cmd SET - change TPtr to prev entry (-8)
1 |# and execute subroutine at [Tptr-14]  ([Tptr+6] from orig locn)
1 |#############################################################
250d # send HSO command and other stuff
2515 # R92 pointer to Previous entry
2519 # push return address
251c # get subroutine address from ON entry
251f # call subroutine
2520 # must reschedule event
2522 # go to ON event execution
2524 # processed ?
2529 # Never gets to here !
# 252f # jump to computed address
2530 # schedule a routine for execution in 2284/2C5 Table
2532 ||###########################################################
1 |# Read HSI data
1 |# The opening arithmetic converts the 16 bit IO TIMER (o/flow every 0.157 secs)into 24 bit value
1 |# (with overflow every 40.2 secs). 
1 |# R7a,b,c is the EVENT time for the HSI Interrupt
1 |# HSI data is then processed and reqd handlers called
1 |###########################################################

2537 # time diff
253b # add diff (24 bits)
2541 # set event time Hi
2544 # time diff since event (Lo)
2548 # add propogation delay ?
254c # corrected event time
2550 # (24 bit)
2553 # read HSI data
2556 # current state
2559 # get changed bits
255c # mask for valid inputs
255f # New state
256c # handle Ign Diag Mon
2572 # handle VSS counts
2578 # handle CID
257e # handle BP/MAP
2584 # handle KNK
258a # handle PIP
2590 # any more events ?
2599 # knock sensor fitted ?
259b # No, mask int
25a2 # CID sensor fitted ?
25a4 # Yes, allow int
25a7 # VSS sensor fitted ?
25ad # Yes, allow int
25b0 # flag extra events
25b6 # loop back until HSI stack empty
25b8 ||#############################################################
25b8 |# High Speed Output Port Output Interrupt Routine
25b8 |# Software interrupt every 1 msec
25b8 |# Input : R91 is flags?
25b8 |# Slice ptr is changed every 614uS? (0.6 mS) and is 0-8 (3b4-3bb)
25b8 |# This base s/w clock int is used to drive a large Table of s/w routines
25b8 |# This may be only for creating PWM output signals ?
25b8 |##############################################################

25bd # = 1msec at 15Mhz
25c2 # int enabled, level low, channel 10
25c5 # save current IO time
25c9 # save stack pointer
25cd # temp stack
25d3 # HSI time/256 & 7 ?
25d3 ||### loop around entries 0-7
25da # New time slice ?
25e5 # clear table entry
25ec # cheap reset for loop 0-7
25ef # loop back, next slice
25f1 || ##### Code segment 33e1 to 358d executed here and returns #####| 


#25f1 ||# this int routine sets ** LSO ** lines from R46
#25f1 |# this int routine sets ** bidirectional IO lines from R47 (8 BITS *NOT* 2)
25f4 # BIDI O/P line 0 to ON
25f7 # R50 = (new ?) LSO and BIDI OP values
2601 # write OUTPUTS
2604 # drop bottom 3 BIDI O/Ps - why ?
2607 # Odd address ? save bits for ?
2607 ||#### traverse the 2C5 queue, execute subroutine for each entry whose time is up
2607 |#### does not remove or add any queue entries
2613 |# Init to top of loop

261b # exit when 2C5[R94] == 0
261f # map to 2284 Table entry
2625 # valid entry
262f # calc next entry
263a # loop exit when R96 == 0
2641 # loop back for next time slice
2643 # process valid entry
264c # update master ref time
264f # event time for this entry
2659 # time left to event
2663 # -ve, time passed, do immediately
2666 # still time left 
266c # < 2mS to go, process it ?
266e # skip until later ?
2670 # late event, flag immediate
2679 # event time > 158 uS
267c # map to 2C5 Table pointer
2680 # map to 2284 Table entry
2684 # return address for call
2689 # call subroutine from 2284 Table
2695 # next 2C5 Table entry
269f # back for next entry
26bd # Prev Low Speed digital inputs?
26c5 # read bidirectional port
26c8 # keep bits 0 and 1
26ce # HSI sample
26d1 # Redundant ?
26d5 # save HSI AND Low speed sample
26d7 # last time HSI+ LS Sample
26db # bits changed since last read
26de # swop bits back ?
26e0 # Last sample
26e3 # compare for changes
26e9 # HSI and LS changes
26ec # save this sample for next time
26f2 # IO time difference for Watchdog
26fb # keep alive
26fe # update wdog time
2701 # keep the watchdog at bay
2703 # toggle line 6 (LOS)
2706 # no of byte locations to add up
2709 # init sum
270b # test for done adding
270e # move sum to RCF
2711 # exit loop
2713 # add 9 bytes of ? save to ?
271a # IO timer overflow pending?
271d # allow only IO timer OVF interrupts
2720 # restore saved stack pointer
2727 # safety delay ?
272a ||#############################################################
272a |## High Speed Input # 0 Interrupt Routine (read HSI data)
272a |#############################################################
272f # save stack pointer
2733 # temp stack pointer
2739 # read HSI data if avail
273b # restore old stack ptr and return
273b ||#############################################################
273b |# Master I/O Timer Overflow Interrupt Routine
273b |# neatly uses overflow to increment 32 bit counter.
273b |#############################################################
273e # increment I/O Timer overflow
2742 # flag Tmr overflow
2748 # save 32 bit time
274c # reset int mask

#32750 ||#############################################################
#32750 |# A/D End of Conversion Interrupt Routine
#2750 |# External Interrupt Routine
#2750 |# High Speed Input # 1 Interrupt Routine
#2750 |# High Speed Input Port Input Data Available Routine
#2750 |# Ignored interrupts linked to 2750



2750 ||#############################################################
1 |# Software Interrupt Handler ?
1 |# Reset S/W interrupt every 5 ms, (2083 IOTimer ticks = 5 mS)
1 |# and check Cal Console status and enter [console] routine if required
1 |# effectively gives console a timeslice every 5mS
1 |#############################################################
2754 # THIS interrupt time
2759 # zero means set no more SW ints
275f # interrupt earlier than time requested
2765 # remember int overflow ? 
2768 # skip creating new int
276a # Next s/w interrupt in 5 Ms
2770 # avoid zero which means s/w ints are off
2772 # save NEXT s/w int time
2779 # set new software interrupt
277c # CONSOLE STATUS check
2781 # Console address ? IO time for next console call
278c # exit if no console
2798 # if time has passed ?
279e # console entry ?

27a5 ||##############################################################
1 |# Reschedule (or start) software interrupt
1 |# sets next software interrupt 5 millisecs after time in $298
1 |# Ignores if HSO overflow
1 |############################################################### |

27a9 # time of last s/w int
27ad # last int + 5msec
27b3 # avoid zero
27b5 # save NEXT time
27bc # set interrupt
27bf # clear ints overflowed flag ?
27c2 ||###############################################################
1 |# Table 4,6,8 cyls - used at 3E5D lookup for $3c2.  Minimum PIP period for cyl 1 marker ?
1 |###############################################################



27c8 ||###############################################################
1 |# handle HSI line 0 data (PIP)
1 |# R7a,b,c = last HSI event time 24 bits
1 |# R50,1,2 = time delta (time since last PIP event)

27c8 |###############################################################

27ca # read MAF (AD ch 6)
27cd # clear Pip flag
27d0 # min PIP time to update RPM ?
27d9 # new PIP time in 24 bits
27e3 ||##### PIP High handler (Initialise if $2d:4 = 1)
1 |##### Initialise the 8 entry RAM table (2c5) from InjTab table (22a6) 

27eb # Base of Table
27f3 # done - exit loop
27f5 # index into 2C5 Table (-3 ?)
27f9 # 24 bit PIP event time
2803 # next InjTab entry (22 bytes)
2807 # end of init loop
2809 ||##### PIP High handler (Run)
2815 # time too small - ignore it
#281c # PIP occurred after 50 msec
2823 # CID sensor present ?
2825 # AE fuel - sync = 1, async = 0. Init to 0
283a # Previous PIP period
283e # new PIP period 24 bits
2841 # period = time since last PIP Hi
2848 # High Data Rate Electronic Spark Present ?
284d # PIP time hi 8 bits
2852 # PIP time lo 16 bits
2858 # Sequential (1) or simultaneous (2) inject
2862 # PIP HSI event time lo 16 bits
2866 # PIP HSI event time hi 8 bits
286f # No of steps to Ramp Fuel, unitless
2875 # No of steps to Ramp Fuel, unitless
287d # No of PIPs which have occurred
28a1 # High Data Rate Electronic Spark present ?
28a4 # wait for A -D complete
28a7 # mask out channel no
28ae # save (raw MAF counts ?) 124
28c7 # routine in 2284 Table
28d1 # Underspeed Flag
28e1 # send HSO command and other stuff R92=2296
2918 ||######## PIP Low handler ####### 
2929 # PIP Elapsed time
292c # half (for equal Hi/Lo)
2933 # PIP hi-lo time delta (Pulsewidth)
2936 ||###### skip this section for narrow blade (cyl 1) if CID fitted,
1 |####### because then don't need to do all this work...|
293a # No Cyl ID sensor 
2942 # = PIP Hi-Hi time/2 - Pip Hi-lo time
2946 # should be zero at steady state
294a # top byte PIPHi-Hi/Pip Hi-Lo

2951 # 9e68 is 20% of 65536
2953 # This is Cyl 1 - narrow blade/slot
295e # OK - cyl 1 expected do/keep SYNC 
2981 # 9aac = 256
2989 # 9aa8 = 256
299b # UNSYNC  
299b |#### end of narrow blade processing|
29ab # Spout Off command ?
29bc # send HSO command and other stuff
29c2 # Spout On command ?
29cd ||########################################################
1 |# handle CID (cylinder ident) Interrupt  - sync to cyl no 1
1 |# $d1 (byte) is incremented by 32 (->2898) in PIPHi handler, so wraps 
1 |# each 8 sparks.  $d1 = 0 for cyl 1. Compares with 9aa8
1 |# are done as byte AND word, so the 256 word value is probably a flag marker
1 |# for newly synched ?  The 128 use may show that CID changes state at cyl 4,
1 |# which would be a state switch for each crank revolution ?
1 |########################################################
29d7 ||####### CID High handler #####|
29de # = 128
29e4 # not = 128
29e6 UNSYNC cyls, set 128 for next rev & return

29f0 ||####### CID Low handler #####
29f6 # UNSYNC if underspeed
29ff # not = 0 so UNSYNC cyls & return
2a03 # OK - SYNC Cyl no 
2a06 # 9aac = 256 
2a0e # 9aa8 = 256

2a14 |#######################################################
2a14 |# Vehicle Speed sensor counts
2a14 |# handle VSS
2a14 |#######################################################

2a15 # masked input line data
2a18 # rising edge only
2a1b # count of VSS ring clicks
2a1d # timer - time since last click
2a24 # set interval start
2a27 # clear click count
2a2d # save event time 32 bit 
2a31 ||#######################################################
2a31 |# data, first 3 entries are cyl/spark angle degrees (*4) = 180,120,90
2a31 |# last 3 entries are also ratio 1, 1.5, 2 
2a31 |# matching 4,6,8 cyls - delay time for bank fired injection ?
2a31 |#######################################################

2a3c ||#################################
1 |# start with R50 = pip counter.  KNKCYL =4
1 |# If R50 > 4, Decrement R50 until it equals 4.
1 |# if R50 < 4 then return unchanged Why go to all this trouble with a loop ?
1 |#################################


2a5a # SparkAdvance[ cyl 1 -8 ]
2a64 # Max degrees retard
2a6e # SparkAdvance[ cyl 1 -8 ]
2a92 # tip in retard max = 0
2a96 # Throttle position
2a9f # (degrees)
2ab7 # SparkAdvance[ cyl 1 -8 ]
2acc # Lower limit spark clip
2ada # Upper limit spark clip
2b22 # Spark Angle Pulse Width, msec.
2b34 # or no of PIPs per engine revolution
2b3d # PIP time lo 16 bits
2b4e # or no of PIPs per engine revolution
2b76 # Max allowed advance in spark timing between spout outputs
2b89 # PIP time lo 16 bits
2ba6 # Min RPM to enable transient spark routine

2baf # Hysteresis for TRSRPM

2bc0 # MAF input range error?
2bcd # PIP time lo 16 bits
2c34 # 27E+5C=02DA = 2C5 -15 right in the middle of our Table
2c52 # odd 2284 Table offset
2c5c # jump with existing return
2c61 ||# 22a0 proc - save zero flag in 2C5 entry or add PIP & ? time to R80/81/82
2c88 # 2284 entry proc 
2c91 # 0 = TFI Controlled Dwell
2caa # Slope for PIP acceleration
2cc8 # Limit of PIP acceleration
2cf9 # Dwell Switch point
2cff # max low speed dwell
2d0c # max high speed dwell
2d28 ||################################################################
2d29 # wait for A -D complete
2d2c # mask off low bits
2d33 # save Raw MAF A/D reading
2d44 # MAF calibrate/lookup 
2d88 # Manifold filling - slow filter
2d8c # Fraction - slow vs fast filter
2d92 # Manifold filling - fast filter
2dc6 ||################################################################
1 |# MAF/calibrate/lookup in transfer function
1 |# This seems to use its own code for func lookup for some reason
2dc6 |#######################################################################
2dcb # Scale raw MAF value
2dcf # Scale via Batt Ref Voltage
2dd5 # clamp max MAF voltage
2dd8 # save value
2ddc # MAF transfer function pointer
2de0 # Table max MAF voltage
2de5 # shortcut if max value/Air flow
2de9 # end Table look up
2ded # back up in MAF transfer function Table to the right value
2df4 # loop
2df8 # jmp ahead in the MAF transfer function to the right value
2dff # loop
2e05 # interpolate larger MAF
2e08 # larger air flow
2e0b # MAF difference
2e0e # MAF delta to interpolate
2e11 # air flow difference
2e1a # interpolated air flow
2e21 # Save last MAF tfr func ptr - for speed?
2e25 # old MAF value
2e29 # MAF not in Kg/Hr
2e2f # add old and new MAF values
2e36 # avg/2
2e45 # Running Total ?

2e5a |##########################################################
2e5b # start port = 0
2ed3 # Injector Pulse Width 
2f06 # which edge for fuel pulse
2f1f # 180 = 4 cyl
2f37 # PIPs per engine revolution
2f9c # sequential (=1) or simultaneous (=2) injections
2fc1 || ########## something to do with injection and no of cyls called from 2f3b
2fc2 # 4 cyl
2fc4 # 6 cyl
2fc6 # 8 cyl
3006 # 8 - no of cyls
300e # R52 is cyl sequence ?
3013 # Load Injector firing order
3018 # ROM ptr to injector to fire from sequence no
301b # R50 is cyl no
301e # Injector Output Port
3023 # Ptr to port from cyl no
3026 # port to fire (0 or 2)
302c # test port - jmp on port = 0
303e # 8 - no of cyls
30d0 # injector firing order ?
30d5 # not self test
30d5 ||########### get cyl no (in R54)
30ef # entry no - 1
30f2 # 2284 Table cell for cyl
30f6 # convert cell to table pointer
30fa # =91B8, Injector Output Port
30ff # load port from cyl no
3104 # PulseWidth? - port 0 or 2
312a # set time for this injector to fire
3141 # 8 - no of cyls
3147 # wrap cyl count
3149 # what does this do?
3158 # watchdog and LOS reset
317f # Not called ?
318a # 2C5 Table ?
3199 ||######################################################################
3199 |# Bank Injection (unsynced fuel) setup ?
3199 |######################################################################

319a # R50 is scyl no ?
319e # Injector Output Port(Inj port vs cyl)
31a3 # add cylno
31a6 # load port (0 or 2) from ROM Table
31a9 # jmp if port == 0 (not 2)
31ac # change port 2 into 1
31ae # Table indexed by port 0 or 1
31b5 # PIP time lo 16 bits
31b8 # R50 = R50 * 8192
31c3 ||######################################################################
31c3 | Cyl Injection (synced fuel) setup ?
31c3 |######################################################################
3212 # schedule event time 
3227 # Add for execution in 2284/2C5 Table
325a # send HSO cmd and other stuff
32cc ||######################################################################
32cc | Fuel addition for trip computer ? unsynced 
32cc |#########################################################
32cf # Cyl No ?
32d3 # Injector Output Port Table
32db # load port 0 or 2 for this cyl
32f7 # Save time
32fb # Inj Pulse Width ms, R50 - port 0 or 2
333d ||######################################################################
333d | Fuel addition for trip computer ? synced 
333d |#########################################################


3347 # 8 - no of cyls
3369 # entry for a cyl no?
336d # Injector Output Port Table
3372 # pointer to the bank for entry R92 cyl ?
3375 # bank to fire for this cyl
337b # Table? pulse width for port 0 (port 2 $208)
339c # schedule event time 
33dd # Add for execution in 2284/2C5 Table
33e0 ||################################################################
33e0 |# update low speed controls - EGR, MIL/STO output, SCCS, CP, Idle Speed(ISC)
1 |# STATIC JUMP from 25f1 (not called as subr) and jumps back to 25f4, so is really part of
1 |# 'HSO Int1' High speed interrupt handler 
1 |################################################################
33e1 # get AD chan 6 (MAF)
33e4 # EGR vac regulator OFF
33ea # EGR stuff done
3406 # EGR vacuum regulator ON
3413 ||#### Idle speed control ### |
3417 # ISC OFF (bypass air)
341a # ISC Duty Cycle ?
3420 # IFREQ - $b8/256
3425 # -ve, set to min ?
3428 # ISC ON
342d # No ISC reqd ?
342d ||### DOL update ###|
3437 # Toggle DOL state
3449 # block PIP interrupts ?
344f # jump past STO stuff
3457 # Allow PIP interrupts ?
345a # STO shift count (leftmost 1 bit at start)
345e # loop if bits left to output
3464 # Self Test Output trigger set - to turn off STO
3469 # Time difference
3470 # Update 24 bit master reference time
3473 # Hi 8 bits of current time
347d # current master time - RDA(STO time)
3481 # R56 = STO time - current time (hi bytes)
348a # jump if time remaining till STO > 3 mS
348a ||### very close to STO bit time end|
348c # set HSO time
3490 # set HSO chan 10 off + interrupt
3493 # IO time for each trouble code bit at selected output speed
3497 # IO time for each trouble code bit at selected output speed
349b # STO high 8 bits time
349f # set bit 0 of RD8 flag STO HOLDOFF (time to change to next bit? )
349f ||#### still shifting out error codes|
34a4 # bits remaining to be output
34a8 # STO SHIFT - shifted trouble code
34ac # next output bit? RIGHT SHIFT? SB left shift
34af # set STO hi/lo based on R52 bit 0
34af ||# handle STO/MIL lamp trouble codes output
34b1 # jump over STO if Self Test Output trigger clr
34b4 # bit to output is set 
34b4 ||##### OFF bit |
34b7 # R52 = 0 - set STO off
34bc # R52 = 1 - set STO on
34c1 # R52 = 0 - set STO off
34c3 # clear STO on and OFF flags
34c6 # jmp to set STO line hi/lo
34c6 ||###### ON bit |
34c8 # clear RD6 bit 5 STO CODE
34cb # set RD6 bit 3 working
34ce # Self Test Trouble code
34d1 # 16 bit trouble code?
34d7 ||##### strip off leading zero bits in trouble code RD4|
34da # RD4 << 1 next bit of trouble code
34dd # leftmost 1 bit just shifted out
34df # decr 16 bit count of left most 1 bit
34e2 # 'backup' to leftmost one bit
34e4 # trouble code bit position (bit position of first != 0 bit)
34e4 ||##### select MIL lamp interval time in R50 and R54|
34ec # STO 'slow', 0x32dcd=0.5 secs
34f6 # STO 'fast', 0x823=5 millisecs
34ff # STO 'hyper', 0x341=2 millisecs
3501 # master time diff in R84
350f # STO timer value 
350f ||######### compute time to change STO|
3513 # time for this next bit (lo 16)
351a # hi 8 time for this next bit
351e # allow next bit to queue up
3521 # MIL ON
3524 # trouble code flg
3527 # MIL OFF
352a # STO bit set for R52 time
353a # no PIP interrupt pending?
353e ||##### Speed control system (SCCS) #####|
3541 # SCCS Count
354b # Speed Control Vacuum Off
354e # Speed Control Vent On
3557 # SCCS vacuum active
355a # TOGGLE Speed Control Vacuum
355f # TOGGLE Speed Control Vent
356d # Loop back
356d ||##### canister purge timing (CP) #####|
356f # output line 1 OFF (canister purge)
3572 # 12B canister purge start period
3577 # 12D canister purge on time
357d # 12E canister purge period
3583 # 12B canister purge start period
3587 # canister purge enabled clear
358a # output line 1 ON (canister purge)
358d ||########################################################
358d |# handle HSI line 2 - BAP sensor
358d |########################################################
3593 # time of last read
3598 # delta time since last BP read
359c # update last time read
35a5 # why not just incb directly ?
35a8 # new BP calc reqd ?
35ab ||########################################################
35ab |# Byte function lookup with interpolate 
35ab |# handles all 4 combinations of signed and unsigned in/out values
35ab |# IN R32 func address
35ab |# IN R34 input value
35ab |# OUT R38 = func(R34) as byte
35ab |########################################################|
35ac # signed input, unsigned output
35b1 # signed input, signed output
35b4 # unsigned input, signed output
35b7 # unsigned input, unsigned output
35bb # Signed input
35ca # Use below for result
35cd # Get values above and below i/p val
35e3 # Negative - remember
35f0 # Negative, fix sign
35f5 # add interpolated delta
35fd # cleanup
3600 ||#############################################################
3600 |# Word function lookup - as byte logic (but word instructions)
3600 |# IN R32 func address
3600 |# IN R34 input value
3600 |# OUT R38 = func(R34) as word
3600 |#############################################################
3653 ||#############################################################
1 |# Filter (rolling average) routine - signed and unsigned options
1 |# 3654 loads 3 params into R32, 34, 36
1 |# 365e loads 1 param  into R36
1 |# 3663 loads 0 params
1 |# inputs R32 old, R34 New, R36 filter factor (rate)
1 |# output in R3e
3653 |#############################################################

3656 # OLD sensor value
365b # NEW sensor value
3660 # filter value
3663 # R36 = R3E * 65536 / (R36 + R3E)
3665 # flag as signed
366a # R36 = R3E * 65536 / (R36 + R3E)
366c # flag as unsigned
366e # difference (new -old)
3672 # jump if signed 
3675 # effectively +ve result (unsigned)
3677 # effectively -ve result (unsigned)
3679 # jmp if difference is NOT negative
367b # set bit 0 - neg result flag ?
367d # reverse diff, so ABS (diff)
367f # ABS(diff ) * R36(filter factor)
3682 # neg scaled diff Hi 16 bits
3684 # jmp if scaled diff > 0000FFFF
3686 # neg scaled diff LO 16 bits
3688 # jmp - scaled diff is ZERO
368a # any fraction to next whole num
368c # negative flag
3691 # add filtered diff to old AD value (in R3E)

3694 ||#############################################################
1 |# Get a caller's WORD param and increment return address
1 |# can be called more than once (see above)
1 |# If positive, returned as is.
1 |# If top bit set, map to ROM.  All calls in this bin are D0nn
1 |# which maps to [f8] + nn as word address to look up 
1 |# Range used is D040 (at 5400) to D060 (at 410c) which gives actual 
1 |# ROM addresses of 97E8-9808
1 |# return R3c with lookup ADDRESS 
3694 |#############################################################
3695 # This subroutine's return addr
3697 # Caller subroutine's return addr
369c # 3C = Word param from caller
369f # restore caller address (+2)
36a1 # restore this return address
36a3 # return unchanged if top bit clear
36a6 # = f0 register offset (R3c top byte)
36a9 # clear reg offset (top nibble) 
36ac # top nibble down 3 (reg offset * 2) 
36af # force even for register offset
36b2 # return  (param & fff)+[e0+x*2]
36b7 ||##############################################################
1 |# Rolling Average/smoothing Filter calc
1 |# R36 = Timer * 65536 / (R36 + Timer)
   #R36 = (r3e*65536)/(r36+R3e) = r3e/(R36+R3e) * 65536 = 1 + r3e/r36
1 |# Aspinput flag uses preset value for timer which is
1 |# used only for AM (airflow) filtering,
1 |#  otherwise uses background timer as base param 
1 |# outputs:
1 |## routine scale filtering difference by factor
1 |#############################################################
36bb # Background Loop Timer
36c4 # divisor + timer
36c9 # clip to max FF
36d1 # clip to max on overflow?
36d7 ||#############################################################
36d7 |# Table lookup with 3 way interpolate (2 vars X and Y) Signed and unsigned
1    |# R30 = X value. (column)   'whole' in top byte (R31), fraction in lower (R30)
1    |# R32 = Y value  (row       'whole' in top byte (R33), fraction in lower (R32)
#36d7 |# R30 is parameter A
#36d7 |# R32 is parameter B
36d7 |# R34 is Table width (no of columns)
36d7 |# R38 is the Table pointer
36d7 |# result in R3B
36d7 |#############################################################
36d8 # Signed scaled Table (not used)
36db # scale up by 16
36dd # Byte param A * 16
36e2 # Byte param B * 16

36e7 # Signed Table
36ea # Unsigned Table

371e ||#############################################################
1 |# single dimension interpolate - signed or unsigned
1 |#############################################################
3722 # SIGNED interpolate calc
373c # UNSIGNED interpolate calc
374e ||#############################################################
1 |# Timer checks against list address supplied in R30.
1 |# Result is carry set/clr.  Looks like (timed) enabler check for several functions
1 |# Closed loop, EVP, CANP etc
1 |#############################################################

3785 ||#################################################################
3785 |# Set RPM Flags mode - cranking, underspeed. run etc
3785 |#################################################################

3790 # (225 RPM) 
3799 # ECTCNT <=8 ?
37a1 # RPM>225, ECTCNT<=8, PIPCNT>8, clear CRANKING
37a6 # RPM > 255
37ab # set underspeed and exit
37ad # cranking flag not set
37b5 # RPM < 50
37c1 # set cranking and other flags
37c6 # cranking not set, RPM >= 50
37cf # RPM < 200, Underspeed limit low, set underspeed
37d1 # R30 = 300RPM
37d8 # RPM < 300, Underspeed limit high, exit
37df # RPM > 300 clear underspeed if set 
37eb # set underspeed if necessary
37ee # Underspeed transition
37f2 ||#################################################################
37f2 |# Update Throttle flags (RAA is Throttle position)
37f2 |#################################################################
37fa # Min+delta
37ff # Min>=delta, clr WOT
3804 # TP <= max,  clr WOT
3806 # hysterysis?
380f # TP > RATCH + DELTA + HYSTS
3811 # Closed Throttle ?

381a # WOT breakpoint (TPS voltage - 1)
382e # set WOT
384d ||#################################################################
384d |# Read Analog to Digital channels new state
384d |#################################################################

3857 # jmp to ACT test
3857 ||#### update EVP
3859 # skip EVP update
385c # default EVP
3860 # filtered EVP saved in KAM
3868 # go to ACT test
386a # use 128 as ACT
386d # raw EVP 116
387d # OK, use as new value
387f # go to ACT test
3881 # Default EVP ? 128
3885 ||#### update ACT
3889 # skip ACT test
389c # AD to degrees F
38a1 # input for ACT calc (addr= 115)
38a7 # R38 is our new ACT
38a7 ||#### ACT sensor is BAD
38a9 # do NOT use ECT as new ACT ?
38af # use ECT as ACT
38b1 # do NOT set ACT from ROM ?
38b4 # Default ACT ?
38b8 ||##### update ACT
38cd # BAD sensor
38cf # AD to degrees F
38d4 # Input for ECT calc  (addr=113)
38da ||###### invalid ECT sensor reading
38dc # use ACT for ECT ?

38f9 # Default ECT value from ROM ? (75 deg ?)
38fe # previous Engine Coolant Temp - degrees F ?
3901 # new ECT value to filter and save
3904 # R38 = R38 * 256
3907 # filter factor
390b # FILTER (factor times difference added back)
390d # Filterd Engine Coolant Temperature
3910 # Counts up after h/w reset
3914 # TKYON2 - compare whole seconds
3918 # jump timer <= ROM time

3921 # jmp time <= 8 secs?
3923 # div by 8
3929 # incr putimer
392b ||#### update TP|
392f # TP sensor has failed ?
393c ||#### TP is out of range|


394e # range error
3950 # TP sensor has failed ?
395b # Change in TP if not at idle (as indicated by AM) To permit Part Throttle operation
3962 # default value

3965 ||################# update TAR - Throttle position sensor rate|
3968 # min rate?
396c # read raw TAR sensor 120
3972 # clamp to zero
397b # round up
397f # TAR scaled and translated? 29E
397f ||############################## update BP

399b # filter R35 as new TP
399d # Never gets here !
399f # time of last BP pulse ?
39ae # Faulty BAP?
39bd # BP counts
39c0 # time of last BP read
39c4 # reset count to zero
39c6 # disallow odd BP counts
39d4 # BP count == zero?
39d6 # Time of last BP read - R18 is delta time?
39e0 # convert counts to freq by dividing by time
39eb # = 106666667/freq
39ee # Table 8C78 - conversion to atmo
39f6 # round up to save byte vs word
39fa # save BP 12F
39fe # time of last BP calc
3a09 # new AD sensor value 
3a0b # Old AD sensor value, filtered BP
3a0f # filter new/old AD input
3a14 # filtered BP
3a18 # BP - barometric pressure 1FE
3a23 # time of last BP read/calc
3a23 ||##### update MAF|
3a35 # max MAF count
3a3c # min MAF count
3a41 # range OK
3a43 # MAF count out of range error
3a46 # bad MAF sensor retry interval (3)
3a4a # set bad MAF retry interval
3a4a |# valid MAF sensor reading
3a51 # counts since last bad MAF read
3a57 # decr bad MAF read count but clamp to zero
3a68 # clr MAF input range error?
3a6b # jmp if MAF out of range error
3a6b |# MAF sensor read is bad - calc air mass by speed density

3a92 # spark RPM scaling
3aa7 # clamp to zero (throttle closing? )
3aa9 # Normalized delta TP, used for MAF sensor failure Table lookup.
3afe |# Update NDS and ACC (multiplexed inputs)
3b0d # last raw AD NDS/A3C
3b1c # A/C cycling control switch is open
3b3e # A/C cycling control switch is closed
3b44 # save last NDS/A3C
3b48 # Transmission Load switch
3b4f # 1 = Drive.
3b52 # Manual Trans, no clutch or gear switches, forced neutral state (NDSFLG = 0).
3b5a # 1 = Drive.
3b63 # time since Neutral/Drive Switch State change, sec.
3b65 # Manual Transmission, both clutch and gear switches.
3b6d # 1 = Drive.
3b70 # Drive Neutral select.
3b75 # 1 = Drive.
3b7d # time since Neutral/Drive Switch State change, sec.
3b82 # clr  Drive Neutral select.
3b8a # OUTPUT = Seconds.
3b92 # time since Neutral/Drive Switch State change, sec.
3b97 # set Drive/Neutral Select.
3b9a # clear Power Steering Flag.

3ba2 || ###### CHECK EGOs - handle cross, rich to lean, or lean to rich
3ba2 | ## check EGO 1|
3ba3 # Mixture cross flag EGO1
3baa # Trip Voltage
3bae # 4.17v = Rich
3bb0 # jump if already rich (No Cross)
3bb3 # Set Mixture Rich
3bb8 # jump if already lean
3bbb # mixture is lean

3bbe # Set CROSS flag
3bc1 # sensor 1

3bc5 || ## check EGO 2  (same but different flags)|



3be1 # CROSS FLAG
3be4 # sensor 2
3be7 ||#### Update Brake On / Off (A/C ? )|

3bec # BIHP Brake Input H/w Present
3bf0 # jmp if not A/C or BOO sensor input
3bf2 # jmp if not BOO HIGH
3bf5 # Brake is on.

3bfb # HSI bit 3 is STI - Self Test Input - on the fly test

3bfe ||###############################################################################
3bfe |# KeyPower may be read thru a 20k and 4.35K voltage divider yielding 17.86% of battery voltage to AD input
3bfe |# Update VCAL/KEYPWR
3bfe |# VCAL is 2.5Volts giving an AD reading of 7FE0 
3bfe |# a 14V battery thru the divider gives a 2.5V AD input
3bfe |# resulting battery voltage level is times 16
3bfe |############################################################################### 

3c05 # R34L = 28000000
3c0b # chk for div by zero (VCAL regulator is bad)
3c10 # 28000000/VCAL = 5014 without voltage error
3c15 # VCAL default 
3c15 ||# validate VCAL range|
3c27 # clamp range err
3c27 ||# normalize KEYPWR voltage|
3c2b # = B32C (gives 380BBF70 w/o voltage err)
3c2f # hi 16 bits of 32 bit result
3c32 # raw KEYPWR (17.86% of bat voltage)(result is VBat * 2)(result Hi SB 1BFE w/o errs)
3c36 # check max voltage in top 16 of 32 bit result (~15.94V)
3c3a # clamp voltage
3c3c # now volts * 16
3c41 # max voltage
3c41 ||# filter battery voltage level|
3c44 # OLD AD sensor value Lo = 211 - Battery Voltage Level
3c48 # NEW AD sensor value Lo
3c4b # filter new AD input - battery voltage
3c4e # filter factors (lookup in ROM)
3c50 # updated AD value = 211 - Battery Voltage Level * 16
3c57 # Table injector offset vs battery volts
3c7f # scale and translated TAR
3c8d # engine load (VE? )
3cce ||###################################################################
3cce |# Count the no of times switched between rich and lean (of stiochoimetric)
3cce |# 2A4 - total crosses
3cce |# 2A5 - EGO1 crosses
3cce |# 2A6 - EGO2 crosses
3cce |### DO THIS ON CROSS. R42 CONTAINS EGO NUMERB - EITHER 1 OR 2
3cce |###################################################################
3ccf # Increment CROSS COUNT by BANK
3cd3 # INCREMENT CROSS COUNTER
3cdc # clamp max to FF
3ce3 ||#################################################################
3ce3 |# Update (MPH) vehicle speed values
3ce3 |# get sample interval time end and click count
3ce3 |# see routine 2A15 for click count
3ce3 |# 02AC = filtered MPH
3ce3 |# 02B2 = unfiltered MPH
3ce3 |# 02BC = filtered MPH
3ce3 |# Tasklist Routine at 2151, routine offset 12
3ce3 |#################################################################
3ce6 # (VSS)
3ce9 # IO time for HSI going 'high'
3cf1 # VSS speed ring clicks
3cf1 |# start new sample interval
3cf6 # time since last click
3cff # timed out, clear and reset
3cff |# check for any click count
3d04 # no clicks?
3d07 # jmp if valid sample
3d09 # NEW MPH = last MPH
3d09 |# calc time per speed ring click
3d0f # time hi 8 bits
3d12 # time since start of this RB2 click count (24 bits)
3d1b # = time per VSS click
3d20 ||# calc MPH - 96000000/2.4 = 40000000.  4000 clicks per mile ?
3d23 # = 96000000 
3d2b # 96M / R14(time per click) = distance per time (MPH? )
3d33 # NEW (unfiltered) MPH
3d37 # IOTIme of this sample (24 bits)
3d48 # Filtered vehicle speed (1)
3d55 # Filtered vehicle speed (2)

3d59 ||#################################################################
3d59 |# Update heated windshield flag - check for some frequency input
3d59 |# Tasklist Routine at 2151, routine offset 10
3d59 |#################################################################
3d5a # A3C flag
3d5e # subtract from last state
3d63 # no state change
3d65 # last state = current state
3d75 # 250mS
3d83 # 300mS
3d85 # defrost already on ?
3d88 # jmp if HWFLGL - first time
3d8e # set first time defrost on
3d99 # jmp if A3C - is AC on?

3d9f || ############# RPM calc tables ###################################
1 |# first list is top word, second is bottom word of 32 bit variable
1 |# used below, where  rpm*4 = value/PIP interval  (in IOtimer ticks)
1 |##################################################################
3da6 # = 2faf080 = 50,000,000 4 cyl
3da8 # = 1fca055 = 33,333,333 6 cyl
3daa # = 17d7840 = 25,000,000 8 cyl
3daa ||#################################################################
1 |# Update RPM variables - filtering as required and other stuff
1 |# 0x108 ($108) RPM with filter 1
1 |# 0x27C ($27c) RPM with filter 2
1 |# Tasklist Routine at 2151, routine offset 14
1 |# RAE is raw RPM ( engine RPM * 4 )
1 |#################################################################
3db0 # time since last PIP recieved ?
3db6 # RPM = 0?
3dd1 # short entry 2284 - spout?
3dd8 # send HSO command 55 ands lots of other stuff - spout?
3de4 # 2nd short entry 2284 - spout?
3deb # send HSO command C5 ands lots of other stuff - spout?
3dfb # Hi word from table
3e00 # Lo word from table
3e05 # PIP time Lo 
3e08 # Pip time Hi (byte)
3e0b # normalize time value (R38Long)
3e0e # divide. (val/pip time = RPM)
3e11 # engine RPM is in bottom bits of LONG shift
3e13 # new RPM
3e16 # RAE = RPM * 4
3e42 # = 256
3e49 # R32 = 16

3e4d # 8 - no of cyls
3e51 # piplim = 4
3e59 # R14 is index (0,2,4)=(4,6,8 cyls)
3e5d # 27C4 [4] = 3200
3e61 # sim min = 3200
3e67 # Min PIP Period
3e6a # Min PIP dly = 961
3e6d # = 13107  20% of 65536
3e7b ||#################################################################
3e7b |# Tasklist Routine at 2151, routine offset 20
3e7b |#################################################################
3ea7 # spark RPM scaling
3eb5 # emission load scaling
3eba # raw engine load (= VE? )
3ecd # Air Meter Backflow Correction Table
3ed9 # Table 9204 ? vs RPM
3f0e # =Closed TP
3f69 # = 66
3f7d # = 9A
4011 # = 0
4025 # = A0
404b # EGR Mass Flow
4057 # clamp max to FFFF
4063 |# engine displacement = 1B4A = 6986 - engine displacement (unit = 0.0430981 Cubic Inches)#|
406c # clamp max to FFFF
406f # SET engine load
406f ||# speed density VE calc? RPM*BP/#00EF = ?  #|

4082 # BP * fs(RPM)
408b # clamp max to FFFF
4096 # never jumps ?
409d # div by 2
40a0 # air flow / (RPM * CID) = VE (=Load)
40a5 # clamp max to FFFF
40a8 # Volumetric Efficiency (=Load)
40b5 # Save filtered Load
40b9 ||#################################################################
40b9 |# Update EGR stuff?
40b9 |# Tasklist Routine at 2151, routine offset 24
40b9 |#################################################################
40ba # PFE EGR Present

40c9 # save result
40d6 # 166


40f5 # Save result
40fc # filtered result EVP 2
4101 # filtered result EVP 1

4115 # Store result

412c # Save result
4130 # RPM <= 450 RPM ?
413c # update to smaller Min TP Closed position
4140 ||#################################################################
1 |# Check for RPM and Speed limiters
1 |# Tasklist Routine at 2151, routine offset 26
1 |# RPM values here are RPM * 4
1 |# Overspeed RPM, sets stage 3 fuel limiter
####1 |NB - THESE ARE NOT STOCK REV LIMITS !ROM checksum error cause!
1 |#################################################################
4141 # = 0x9a82 = 8000 rpm
414b # > 8000 rpm - Half fuel ON
414e # = 0x9a84 = 7500 RPM 
4153 # < 7500 rpm - Half fuel OFF
415a # tracking vehcle speed ? = 1
4163 # vehicle speed filtered(1)
4167 # Speed Limiter A = FF ON
416a # jmp if speed < FF (ALWAYS)
416f # Speed Limiter A = FF OFF
4172 # jmp if speed < FF
4177 # Speed Limiter B = FF ON
417a # jump if speed <= ROM limit
417f # Speed Limiter B = FF OFF
4182 # jmp if speed >= ROM limit
4196 # 1 = High speed alternate fuel/spark
4199 # 1 = fire alternate injectors
41a0 ||#################################################################
41a0 |# Update closed loop flags
41a0 |# Update warm EGO flags
41a0 |# Tasklist Routine at 2151, routine offset 28
41a0 |#################################################################

41aa # 260 Volumetric Efficiency
41b0 # set LDFlag
41b5 # 260 Volumetric Efficiency
41bb # clr LDFlag
41be # LDFlag
41c1 # WOT flag?
41c4 # Engine Temp 254 degrees F ?
41ca # Engine Temp 220 degrees F ?

41da # jmp if not WMEGOL
41f3 # EGOCL1 = 1
41ff # open loop min load(min load for OL control)
4203 # engine load (VE? )
420e # min load for closed loop
4214 # engine load (VE? )
421d # Table 9CAC

4233 # Upper LOAD Limit for Closed Loop Fuel Control,unitless
4245 # open loop tp Voltage (throttle position to force open loop (TPS voltage - 1))
4259 # Hysteresis term to enter WOT mode
4298 # High load timer - 1/8 seconds under high load so far
429c # time at high load to force Open loop(seconds)
42ab # 1 = closed loop control mode
42b6 # set open loop
42bd # ENPIP1 = 1
42c1 # ENPIP2 = 1
42e4 # no of HEGOs
4307 # Desired fuel ratio for the left side bank
430b # Desired fuel ratio for the right side bank
4365 ||########|
4366 # emission rpm scaling

4374 # load scaling
4379 # engine load (VE? )
438c # HEGO BIAS
4394 # computed HEGO bias?
43ad # Closed Loop Peak-to-Peak amplitude, lambdas.

43c1 # time delay from when fuel change made until the EGO sensor sees it

4439 # 20A - LAMBSE1( )[divide by 32768]
444f # clamp overflow
4452 # clamp R34 Lambda to ROM limits (19.0:1 to 10.98:1)
4454 # 20A - LAMBSE1( )[divide by 32768]
44a8 # 20A - LAMBSE1( )[divide by 32768]
44be # clamp overflow
44c1 # clamp R34 Lambda to ROM limits (19.0:1 to 10.98:1)
44c3 # 20A - LAMBSE1( )[divide by 32768]
44fd |# clamp R34 Lambda to ROM limits
44fd ||######|
44fe # LAMMAX (A/F ratio 19.0:1)
4508 # LAMMIN (A/F ratio 10.98:1)
4512 ||######|
4513 # 20A - LAMBSE1( )[divide by 32768]
4526 # 20A - LAMBSE1( )[divide by 32768]
452b ||######|
452c # used for Table lookup

4545 # 260 Volumetric Efficiency
4552 # Base Fuel (A/F ratio) (ECT vs load)
455a # Open Loop Fuel Multiplier vs ACT
455f # RB1 = ACT (ACT = RB1 * 4)
458e # Startup Fuel (A/F ratio)(ECT vs Time)
45ae # Sea Level Lugging O/L Fuel Multiplier vs RPM
45c1 # barometric pressure
45cb # Altitude Lugging O/L Fuel Multiplier vs RPM
45f2 # fuel closed throttle open loop multiply

4631 # Table spark RPM scaling

463f # Table 9016
4644 # 260 Volumetric Efficiency

4654 # Manage Fuel Air Fuel Table, 10 x 8 Table of multipliers as a function of engine speed N and LOAD

4678 # selects which "WOT Fuel Multiplier vs RPM" Table to use
467b # WOT Fuel Multiplier vs RPM 1
4685 # WOT Fuel Multiplier vs RPM 2

469e # LAMBSE modifier?
46af # fuel open loop multiplier (LAMBSE)
46c0 # high speed flag?
46c3 # Table (vehicle speed - LAMBSE)
46c8 # vehicle speed filtered(1) (MPH) 2BC is 8.8 format VSS
46df # Desired fuel ratio for the left side bank of injectors
46e3 # Desired fuel ratio for the right side bank of injectors
46e7 ||#################################################################
46e7 |# temp something?
46e7 |#################################################################
46e8 # RB1 = ACT (ACT = RB1 * 4)

46ff ||#################################################################
46ff |# Adaptive something
46ff |# Tasklist Routine at 2151, routine offset 2A
46ff |#################################################################

4703 # Run/Underspeed Flag. (1 = Underspeed or CRANK, 0 = Run)
4706 # ? ROM 9AE2=55
470a # jump if ECT < 170 degrees Farenheit
470c #  ROM 9AE3=71
4710 # jump if ECT > 226 degrees Farenheit
4712 # set Adaptive Fuel Time Flag
4715 |############## not at operating temp(too hot or cold)
471b # Adaptive Fuel Time Flag
4745 # the column no of the Adaptive Learning Cell to be updated
4769 # ECC Load Scaling - emission load scaling
476e # engine load (VE? )

478a # Table  spark RPM scaling


47a3 # Adaptive Learning Cell to be updated
47af # Adaptive Learning Cell to be updated
4803 # min act for adaptive control
4809 # max act for adaptive control
483e # computed HEGO bias
486d # KAM index = 0
4877 # KAM Table[R3E] write something?
4884 # KAM index = 1
4893 # KAM Table[R3E] write something?
4896 ||################################################################
4896 |# R3E = ? error?
4896 |################################################################
48a2 # 20A - LAMBSE1( )[divide by 32768]
48ac # KAM - read value from KAM Table
48b3 # KAM - write value back to KAM Table
48b8 # 9E00 - read index ROM Table value
48ce # ROM adaptive control min
48d9 # KAM Table store
48de # KAM checksum
48e3 # update KAM cksum and return
48ed # 20A - LAMBSE1( )[divide by 32768]
48f5 # return
48f7 # KAM - read indexed KAM value
48fc # incr value
48fe # KAM - store back into KAM loc
4903 # 9E00
490b # pull value from ROM Table
490e # byte << 1 (times 2)
4919 # adaptive control max
4924 # KAM - store value into same loc as above
4929 # KAM checksum
492e # incr cksum to match incr to value
4930 # KAM checksum

495f # KAM Table 1 Lo byte of ?
4964 # KAM Table 2 Hi byte of ?
496b # spark RPM scaling

4979 # ECC Load Scaling - emission load scaling
497e # engine load (VE? )
4993 # KAM Table 1 Lo byte of ?
4998 # KAM Table 2 Hi byte of ?
49a1 # KAM Table 1 Lo byte of ?
49a6 # KAM Table 2 Hi byte of ?
49bd # KAM Table 1 Lo byte of ?
49c2 # KAM Table 2 Hi byte of ?
49cb # KAM Table 1 Lo byte of ?
49d0 # KAM Table 2 Hi byte of ?
4a17 # jmp if the no of HEGOs != 1
4a17 |# One HEGO case
4a1e |# Two HEGO case (zero hegos? )
4a86 ||################################################################

4ab5 # no of cyls (8)
4ad6 ||#################################################################
4ad6 |# Tasklist Routine at 2151, routine offset 2C - calc injector pulse width?
4ad6 |#################################################################

4adf # Cranking Fuel Pulse Width vs ECT
4aea # barometric pressure
4afa # injector pulse width?
4afd # fuel crank pw multiply time
4b0d # R3CL * 4 and clamped
4b0f # injector slope low
4b1f # R3CL * 4 and clamped
4b3b # Desired fuel ratio for the left bank
4b47 # Desired fuel ratio for the right bank
4b58 ||#################################################################
4b58 |# Tasklist Routine at 2151, routine offset 8E Fall thru?
4b58 |#################################################################
4b6e # MAF input range error?
4b8e # Table 989E
4bb0 # set flags effecting 7XXX ad reads ?
4bd4 # Table 922C
4bd9 # Battery Voltage Level * 16
4be9 # injector slope low
4bf7 # injector slope high
4bf7 |# mult R3C long times 4 and clam max to FFFF -FFFF
4cbd # clamp max R3F to 3FFF
4cc9 ||#################################################################
4cc9 |# Tasklist Routine at 2151, routine offset 1E
4cc9 |# update fuel comsumption for DOL
4cc9 |#################################################################
4cca # Fuel Sum High
4cd0 # No of injectors fired by each output port.
4cf8 # add to Data Output Link Count
4cfc ||##########################################################
4d08 # 9ABD - NITMR3 - ATMR1 timed delay to enter Closed Loop fuel after Hot start, sec. Range of 0 to 255 sec., accuracy 1 sec.
4d30 # spark RPM scaling

4d41 # injector time load scaling
4d46 # engine load (VE? )
4d53 # Injector Timing (crank degrees)(RPM vs Load)
4d67 # injector delay global = 0
4d85 # Save filtered sensor output
4d8e # engine load (VE? )
4da2 # engine load (VE? )

4e10 # min rpm decel fuel shutoff
4e3e # engine load (VE? )
4e56 # Decel fuel low load timer enabled flag, 1 = Count up timer.
4e6c # Open Loop Fuel Multiplier vs RPM

4e83 # min ect decel fuel shutoff (140.0DegF)

4ef3 ||#################################################################
4ef3 |# Tasklist Routine at 2151, routine offset E
4ef3 |#################################################################

4efb # scale and translated TAR
4f08 # engine load (VE? )
4f18 # Table 8C9E fuel tp scaling
4f1d # scale and translated TAR
4f27 # Table 8CA8 fuel XX scaling (what is XX?)
4f3f # accel pump rate - (Deg/sec vs ECT)
4f4a # Accelerator Enrichment Multiplier vs TP
4f4f # RAA is Throttle position - 126 - RATCH=Closed TP
4f61 # BP - barometric pressure
4f65 # Table 90A6
4f75 # accel pump multiplier


4fa4 # Table 8CD2

4fb9 # Table 8CFA load scaling
4fbe # engine load (VE? )
4fd4 # Table 9D38
4fea # Table 9CE8
50ed ||#################################################################
1 |# Tasklist Routine at 2151, routine offset 2E
1 |# Update fuel pump enable. Skip if flag set.
1 |# turn pump off if more than 1 sec elapsed since last PIP occurred
50ed |#################################################################
50f9 # 1024 = 1 second
5102 ||#################################################################

510c # Table 97C7
5116 # WOT flag
5128 # compare to raw EVP AD value
5135 ||#################################################################
5135 |# Tasklist Routine at 2151, routine offset 30
5135 |# EVP something 
5135 |#################################################################
5136 # 97D9 EGR Type contents = 00 - egr type ( 0=sonic, 1=PFE, 2=none)
513a # jmp if sonic or no EGR
513d # PFEHP FLG - sonic h/w present from calibration data
5140 # jmp if EGR = none or sonic
5143 # BG POINT
5146 # 288 EM - EGR Mass Flow = zero
514a # 16E - EGRACT - Actual EGR percent = 100*EM/AMPEM.
5155 # PFEHP FLG - sonic h/w present from calibration data
515b # Table 98B0 - BP correction for exhaust backpressure calculation, "Hg
5160 # BP - barometric pressure
5167 # 1FF - BPCOR - BP corrected
516b # KAMRF1 - Adaptive Fuel strategy correction factor. It is composed of the value LTMTB1rc + .5
5170 # RA2 = AM -> Air mass flow, (lb/min)
517e # Table 98BA - Upstream pressure as a function of (AM * KAMREF). (KAMREF = Adaptive fuel correction factor), "H20.
518a # 1FF - BPCOR - BP corrected
519e # 104 - EPTBAR - Rolling average of the synchronously sampled EPT sensor (time constant = TCEPT), secs
51a5 # filtered EVP saved in KAM
51b0 # 97D4 - XFREPT - Transfer function of EPT sensor, " H20/counts
51cc # 176 - DELPR - Pressure drop across the control orifice, " H20 = PE - DP
51d0 # Table 995E - EGR mass flow as a function of DELPR, lb/min.
51d8 # BP - barometric pressure
51ee # 288 EM - EGR Mass Flow
51fc # 157 - ISCFLG - ISC MODE Flag (1 = RPM CONTROL Mode)
5205 # 20E - DELOPT - Filtered desired EGR valve position.
520b # 170 - EVP - EGR valve position reading in A/D counts.
520f # 128 - EOFF - The EGR valve reading when the valve is fully closed in A/D counts
5217 # Table 9904 - EGR mass flow as a function of EGR valve position (EVP -EOFF).
5222 # BP - barometric pressure
522e # 288 EM - EGR Mass Flow
5232 # 288 EM - EGR Mass Flow
524c # old AD sensor value - EGRACT - Actual EGR percent = 100*EM/AMPEM.
5250 # save new over old value 16E - EGRACT - Actual EGR percent = 100*EM/AMPEM.
5256 # PFEHP FLG - sonic h/w present from calibration data

525e # filtered sensor output - EGRACT - Actual EGR percent = 100*EM/AMPEM.
5267 # EGRMPT - Calibration time delay to ramp EGR in, secs.
526b # 9E5F - CTLOW - Temperature of Engine Coolant at Cold Startup, deg F.
5274 # set TSEGRE FLG -
5277 # 264 timer TSEGRE - Accumulated time EGR is enabled.
527d # clr TSEGRE FLG -
5280 # set 264 timer TSEGRE
5284 # PFEHP FLG - sonic h/w present from calibration data
5287 # EGREN - Flag which indicates EGR enabled
528a # 16F - EGRATE - Desired EGR rate in percent
528e # 20E - DELOPT - Filtered desired EGR valve position.
52ac # Table 8CDE Engine speed N normalizing function
52ba # Input = LOAD and Output = Normalized load
52bf # engine load (VE? )
52d2 # Table 99AE - Sea level EGR Table.
52dd # 201 - MULT BP212A - ?
52f0 # Table 99FE - Altitude EGR Table.
52fb # Table 98F8 - EGRALT multiplier as a function of Barometric Pressure BP.
5300 # BP - barometric pressure
530f # Table 98E2 - Multiplier as a function of ECT.

531d # Table 991C - Multiplier as a function of Air Charge Temperature ACT.
5322 # RB1 = ACT (ACT = RB1 * 4)
5333 # 97CD X EGR Table multplier.
533a # 264 TSEGRE - Accumulated time EGR is enabled (sec)
5340 # 97D2 - EGRMPT - Calibration time delay to ramp EGR in, sec.
534e # MFAFLG - Managed Fuel Air State flag, set to 1 if MFA is being used.
5354 # generates Table entry point. Input = N and Output = Normalized N.


5362 # generates Table entry point. Input = LOAD and Output = Normalized Load.
5367 # engine load (VE? )

5374 # Table 9A4E - Managed fuel Air EGR Table. X -input = FN083 - Normalized Engine Speed, RPM Y -input = FN082 - Normalized load. Output = Multiplier.
53d1 # BP - barometric pressure
53da # Table 9926

5400 # FILTER old, new, factor
5409 # check result
540f # clamp value if nec.
5413 # save filtered output
545b # Table 9986

5467 # BP - barometric pressure
5484 # orig value
548f # filtered value
549e # filtered EVP saved in KAM
54bc # 288 EM - EGR Mass Flow
54cc # 104 - EPTBAR
54d0 # 17C - CONPR
54d4 # 174 - DESDP
54d8 ||#################################################################
54d8 |# Tasklist Routine at 2151, routine offset 32
54d8 |# EGR stuff
54d8 |#################################################################
54d9 # PFE HP flag
54dc # 20E - DELOPT
54e2 # 97D0 - EGRDED
54e6 # 128 - EOFF
54ef # 170 - EVP
54f5 # jmp if EGRFLG
54f8 # 97CE - DCOFF
5519 # Table 9942

5521 # EGRDC
5536 # clr EGRFLG
5584 ||#################################################################
5584 |# Tasklist Routine at 2151, routine offset 6E
5584 |# Fall thru ?
5584 |# Update EGR stuff
5584 ||#################################################################|
5595 # Never gets here ?
55c2 ||#################################################################
55c2 |# Tasklist Routine at 2151, routine offset 34
55c2 |# Update spark advance
55c2 |#################################################################

55d3 # Table 8CDE spark RPM scaling

55e1 # Table 8CFA load scaling
55e6 # engine load (VE? )
55f2 # 2BD - vehicle speed filtered(1) (MPH) 2BC is 8.8 format

560e # Table 96C0 - Torque Reduction Table (auto trans protection)
561e # Table Closed Throttle Spark advance (added, ECT->adv)

562c # Table 94AC - Closed Throttle Base spark advance (RPM->adv)

563a # 9032 spark adder closed throttle


5659 # Table 9568 Time since startup kicker time delay, sec. Input is TCSTRT, max repetition 6.
5669 # Table 94CE (BP is input)
566e # BP - barometric pressure
5687 # Table 954E Idle Spark subtractor, deg.
56a1 # check WOT flag
56a4 # Table 9504 - WOT spark advance vs RPM

56b2 # Table 9528 - Spark Advance vs. BP
56b7 # BP - barometric pressure
56c3 # Table 9532 - WOT Spark Advance vs ECT
56c8 # INPUT: Engine Coolant Temp
56ce # OUTPUT: ECT advance increment
56d3 # Table 9540 - WOT Spark Advance vs ACT
56d8 # RB1 = ACT (ACT = RB1 * 4)
56e3 # 943A spark adder WOT
56ea # done
56f5 # Table 95C4 - Altitude Base spark (RPM vs LOAD)
5712 # Table 9614 - limp mode spark timing Table (Deg BTDC)(RPM vs LOAD)
571d # Table 94F8 LOMALT Table multiplier as a function of Barometric Pressure, BP.(0 at sea level 1.0 at 'high' altitude
5722 # BP - barometric pressure
5739 # Table 9574 - base spark timing Table (Deg BTDC)(RPM vs LOAD)
5769 # X -input = Normalized engine speed on RPM - FN070, Y -input = Normalized LOAD - FN071, Output = Spark advance adder for EGR, deg per 1 percent EGR.
577e # generates Table entry point. Input = N and Output = Normalized N.

578c # generates Table entry point. Input = LOAD and Output = Normalized Load.
5791 # engine load (VE? )
579e # Table 96B4 - Spark adv from engine speed N and LOAD.
57b8 # Table 9488 ECT normalizing function.

57cc # Table 9710 (ECT,LOAD) = Part throttle spark modifier Table. X -input = Normalized ECT (FN033) Y -input = Normalized LOAD (FN071).
57da # Spark advance
57df # RB1 = ACT (ACT = RB1 * 4)
57f4 # 9434 spark adder for part throttle

57f4 ||# Code section to retard timing if overspeed (via VSS) with Table $980d (mph).|

57f9 # If overspeed
57fc # Table 980D High Speed Spark retard, mph.
5801 # 2BD - vehicle speed filtered(1) (MPH) 2BC is 8.8 format
5808 # retard spark
5827 # Table 94DA LOM Load function to activate LOM spark strategy. Input: RPM and Output: load.


5851 ||#################################################################
1 |# Tasklist Routine at 2151, routine offset 4
1 |# Update Dwell - skip subr entirely if TFI Controlled Dwell
1 |#################################################################
5858 # Weighting factor for ECT and ACT on Base Dwell
5862 # Min low speed dwell
586d # Min high speed dwell
5872 # Battery Voltage Level * 16
5879 # Base amount of DWELL
587d # convert to IOtime ticks ?
58af ||#################################################################
58af |# Tasklist Routine at 2151, routine offset 42
58af |# Idle Speed controls
58af |#################################################################

58b0 # Ignore if disable flag set
58b8 # Dashpot hysteresis
58bf # clamp value to max of FF
58bf |# R40 = 11 defined by ROM
#58c6 # 17 <= MPH
#58cc # 13 < MPH

58e3 # time since last PIP recieved
58e7 # 8 seconds
58ed # isc duty cycle during crank


590e # ISCDTY - ROM 9AFA FCAMSW
5926 # jump if normal strategy - not self test mode
592d # Idle Speed in neutral = 672rpm
593f # Table 90C4
594d # Table 90D4
5952 # RB1 = ACT (ACT = RB1 * 4)
5962 # Table 955A

5984 # Table 92C0
5992 # jump if heated windshield not on
599f # Idle Speed in neutral = 672rpm
59ce # filtered DESNLO

5a01 # check if in neutral or in gear ( in ROM! = 3 )Maybe this is manual vs automatic
5a09 # F4 = 8FD6 so 74+8FD6 = 904A = Idle Speed in neutral (0054H = 84 and 84 * 8 = 672rpm


5a46 # time since entering 'running' mode
5a8e # Table 9AFC
5a93 #  time since entering 'running' mode
5aa0 # Table 9366 - (ECT,ATMR3) = Airflow multiplier vs. ECT and ATMR3
5b38 # RAA is Throttle position
5b52 # dashpot decrement rate (dashpot decrement step at given flow(Kg/Hr(flow),Kg/Hr(Step))
5b7a # 126 - RATCH=Closed TP
5b91 # Table 9346 Max Dashpot clip Dashpot clip(lbs/min) vs RPM


5bd0 # jump if normal strategy - not self test mode
5bda # 9E5C
5bea # 2BD - vehicle speed filtered(1) (MPH) 2BC is 8.8 format

5c07 # 146 = $146


5c24 # zero $146
5c2e # Table 92CE
5c59 # engine load (VE? )

5c63 # zero 146 timer - ISCTMR
5cce # Table 9286

5d05 # Table 92F2
5d0c # Table 92D6

5d2b # zero $146 timer?
5d36 # Table 930E


5d62 # jump if normal strategy - not self test mode
5d6b # 29F - N byte
5d6f # Table 92B2
5d7d # jump if normal strategy - not self test mode
5dc1 # jump if normal strategy - not self test mode
5df9 # BP - barometric pressure
5e00 # 9030 - DEBYCP ?
5e06 # 9030 - DEBYCP ?
5e0a # 9030 - DEBYCP ?
5e10 # 9030 - DEBYCP ?
5e18 # Table 9256
5e27 # jump if running self tests
5e2a # engine load (VE? )
5e2e # Table 929A Crank Pulse Width Multiplier vs time in crank mode
5e53 # 146 timer - ISCTMR
5e6c # 16B - ISFlag - index of some sort?
5e70 # index to word offset
5e78 # 9047 - UPDATM
5e81 # 160 - IBGPSI
5e85 # KAM Table 2 checksum
5e8f # 902C - PSIBRN
5e97 # CkSum
5e99 # 902A - PSIBR M
5ea3 # 902A - PSIBR M
5eab # CkSum
5ead # 902C - PSIBRN
5eb5 # ISCKAMOL
5eba # 154 IPSIBR
5ebe # KAM Table 2 checksum ISKSUM
5ec3 ||#################################################################
5ec3 |# Tasklist Routine at 2151, routine offset 44
5ec3 |# SCCS stuff checks VBAT
5ec3 |#################################################################

5ec7 # 8EA0 SCCS Frequency - Desired VSC Frequency, Hz
5ecd # 211 Battery Voltage Level * 16
5ed1 # 8E9E = 26(38)HLDRNG - Error deadband for no pulses required.
5ed5 # jmp battery voltage > ROM limit
5ed5 |# Battery voltage insufficient
5ed7 # SCCS force OFF BUTTON only
5eda # SCCS state clear all
5eda |# Battery voltage is OK
5ede # Update Vehicle Speed Control(VSC)SCCS
5ee6 ||#################################################################
5ee6 |# Tasklist Routine at 2151, routine offset 6A
5ee6 |# Read Cruise control buttons (SCCS)
5ee6 |# Update Vehicle Speed Control(VSC)
5ee6 |# set VSC bits in RB5 & RA0 based on ABS voltage **CHANGE** on AD channel 4 (SCCS)
5ee6 |#################################################################

5ee7 # AD channel 4 118 Cruise control buttons - Vehicle Speed Control Command Switch
5eeb # difference to old value of buttons
5ef2 # ABS difference
5ef4 # 8E6C - Min change in IVSCCS to reset the debounce timer
5efa # 3AC IVSCCS LST - Previous valid SCCS input
5efe # 8E8A - DEBTIM - Debounce time delay, seconds
5f02 # 2A8 timer? DEBOUNCE timer
5f06 # zero 2A8 timer? DEBOUNCE timer
5f0c # input, debounced counts
5f14 # check for SCCS error
5f17 # 8E6E - HI OFF - Input VSC command Switch input range, counts
5f1d # set RB5 bit 7 OFF BUTTON
5f21 # 8E70 - LOW ON - Input VSCCS input range, counts.
5f27 # set RA0 bit 7 ON STATE
5f2b # 8E72 - LCOAST - Input VSCCS input range, counts.
5f31 # 8E74 - HCOAST - Input VSCCS input range, counts.
5f37 # set RB5 bit 5 COAST BUTTON
5f3b # 8E76 - LACCEL - Input VSCCS input range, counts.
5f41 # 8E78 - HACCEL - Input VSCCS input range, counts.
5f47 # set RB5 bit 4 ACCELORATE BUTTON
5f4b # 8E7A - LRESUM - Input VSCCS input range, counts.
5f51 # 8E7C - HRESUM - Input VSCCS input range, counts.
5f57 # set RB5 bit 3 RESUME BUTTON
5f5b # 8E7E - LOHOLD - Input VSCCS input range, counts.
5f61 # 8E80 - HIHOLD - Input VSCCS input range, counts.
5f67 # clr all bits in RB5
5f6a # set RB5 bit 1 button voltage range error
5f6d # clr RA0 bit 7 clr ON state
5f70 ||################################################################
5f71 # jump if not VIP mode flag : VSCDT

5f77 # x4
5f7a # SCCS vehicle speed in MPH filtered 2
5f7e # SCCS vehicle speed in MPH filtered 2
5f82 # SCCS on state
5f85 # SCCS OFF buttob
5f8f # jump if VIP mode flag : VSCDT
5fac # SCCS Button voltage range error

5fe2 # BIFLG = If equal to 1, Brake is on.
5fe5 # BIFLG = If equal to 1, Brake is on.
5feb # 9E5C
5ff4 # ck SCCS buttons: RESUME, COAST, ACCELL
5ffa # set SCCS button Range error
5ffe # SCCS COAST button
6015 # SCCS ACCEL button
6039 # SCCS RESUME button
6087 # SCCS ACCEL button
60a8 # jump if not VIP mode flag : VSCDT
60cf # jump if not VIP mode flag : VSCDT
6109 # SCCS vehicle speed in MPH filtered 2
6112 # RAA is Throttle position, 126 - RATCH=Closed TP
614c # set 2BB - timer?
6178 # LSO output line 0 OFF (Speed Control Vacuum)
617b # LSO output line 4 ON (Speed Control Vent)
6190 ||#################################################################
6190 |# Tasklist Routine at 2151, routine offset 3A
6190 |#################################################################

619e # RB1 = ACT (ACT = RB1 * 4)

61bf # RB1 = ACT (ACT = RB1 * 4)
61d0 # 9E70 no of HEGOs
61e6 # timer?
61ef # 9E65 thermactor present switch = 1.0
6207 # clr bits 6, 2, 1, 0
620d # R47 bit 4 OFF (Air Management 2)
6210 # R47 bit 3 OFF (Air Management 1)
6222 # engine load (VE? )
622d # engine load (VE? )
623c # 93B6
624c # R47 bit 4 OFF (Air Management 2)
624f # R47 bit 3 OFF (Air Management 1)
6254 # 93CE

6269 # timer?
6272 # 138 timer?
627f # 137 timer?
6292 # RCE timer?
629b # timer?
62a3 # R47 bit 4 OFF (Air Management 2)
62ae # R47 bit 4 ON (Air Management 2)
62b1 # R47 bit 3 ON (Air Management 1)
62b4 ||#################################################################
62b4 |# Tasklist Routine at 2151, routine offset 3C
62b4 |#################################################################

62b5 # 93E1 - ECADHP
62b9 # return if h/w not present
62bb # ROM 93E2 - ECADECT
62c1 # set ECADQ1
62c6 # ROM 93E5 - EDETHYS
62cc # clr ECADQ1
62cf # 29F - N BYTE
62d3 # 93E3 - ECADN
62d9 # set ECADQ2
62de # 93E6 - EDNHYS
62e4 # clr ECADQ2
62e7 # 2BD - vehicle speed filtered(1) (MPH) 2BC is 8.8 format
62eb # 93E4 - ECADVS
62f1 # set ECADQ3
62f6 # 93E7 - EDVSHYS
62fc # clr ECADQ3
6305 # 9E65 thermactor present switch = 1.0
630c # jmp if no Thermactor present
630e # jmp if not USAFLG
6311 # 93E8 - EDTM3
6320 # jmp if not ECADI
6323 # jmp if not ECADQ1
6326 # jmp if not ECADQ2
6329 # jmp if not ECADQ3
632c # R47 bit 6 OFF (Fan)HI FAN
6331 # R47 bit 6 ON (Fan)HI FAN
6334 ||#################################################################
6334 |# Tasklist Routine at 2151, routine offset 3E
6334 |# Update Canister Purge timing
6334 |#################################################################
6350 # 93F6 - Canister purge hot startup delay time.
635f # timer?
636e # Table 9A72 - Canister Purge Duty Cycle vs. AM, X -input = AM, Y -output = Purge Duty Cycle.
638c # Table 9A5A - Canister Purge Duty Cycle Multiplier, X -input = PRGTMR. Y -output = Duty Cycle Multiplier.
6391 # 149 - timer Canister Purge Timer - cannister purge accumulation time in seconds
639e # Table 9A66 - Canister Purge Duty Cycle Multiplier, X -input = CPRGTMR, Y -output = Duty Cycle Multiplier.
63a3 # 14A - timer?
63ba # zero 14A - timer - Current Purge on time.
63c7 ||#################################################################
63c7 |# Tasklist Routine at 2151, routine offset 70 Fall thru?
63c7 |# Update Canister Purge
63c7 |################################################################# |

63cd # 12E - PURGE PERIOD
63d1 # 12C - PURGDC - Canister Purge Duty Cycle.
63d8 # 12D - PURG ON TIME
63dc ||#################################################################
63dc |# Tasklist Routine at 2151, routine offset 16
63dc |# Update A/C cutout and idle slowdown flag
63dc |#################################################################




6411 # jmp if A/C is off
6428 # BIFLG = If equal to 1, Brake is on.
642b # 213 - A/C Clutch Brake Timer (sec)
6437 # 215 - A/C Clutch WOT Cutout Timer (sec)
6448 # 216 - A/C CLUTCH TRANSITION TIMER
644e # LSO output line 6 setting bit turns ON relay which turns AC OFF
645d # 3A8 timer?
6467 # 216 - A/C CLUTCH TRANSITION TIMER
6474 # 218 - A/C CLUTCH TURN -ON DELAY TIMER (msec resolution)
647a # LSO output line 6 clearing bit turns OFF relay which turns AC ON
6485 # jmp if ACCFLG
6488 # set ACIFLG - A/C engagement impending flag:1=A/C about to engage - adjust airflow and fuel immediately
648b ||#################################################################
648b |# Tasklist Routine at 2151, routine offset 38
648b |# update ect cooling fans
648b |#################################################################

648c # 941C fan control enable
649b #  ROM 941F fan high speed temp 2(242DegF)
64a1 #  ROM 941E fan high speed temp 1(234DegF)
64b1 # engine load (VE? )
64bb # 2BD - vehicle speed filtered(1) (MPH) 2BC is 8.8 format
64cf # timer?
64d8 # 941E fan high speed temp 1(234DegF)

64e8 #  ROM 9414 fan low speed temp (220DegF)
64f1 # 9414 fan low speed temp (220DegF)

6504 # 941D fan high speed enable
6515 # 2BD - vehicle speed filtered(1) (MPH) 2BC is 8.8 format
6526 # R47 bits 5 and 6 OFF (Fans? )
6531 # 216 - timer?
653d # 215 timer?
6547 # 2BD - vehicle speed filtered(1) (MPH) 2BC is 8.8 format
6551 # R47 bit 5 OFF (Fan? )
6554 # R47 bit 6 ON (Fan? )
655f # R47 bit 5 ON (Fan? )
6562 # R47 bit 6 OFF (Fan? )
6565 ||#################################################################
6565 |# Tasklist Routine at 2151, routine offset 40
6565 |#################################################################

656d # thermactor present must be 2 
657c # 126 - RATCH=Closed TP
6586 # RAA is Throttle position
658b # R47 bit 3 ON (Air management1)
6598 # RAA is Throttle position
659d # R47 bit 3 OFF (Air management1)
65a0 ||#################################################################
65a0 |# Tasklist Routine at 2151, routine offset 4A
65a0 |# Update Air Management
65a0 |#################################################################

65a1 # 9E65 thermactor present switch = 1.0
65aa # 8E68 - NIAC

65b3 # set IACFLG
65b8 # 8E6A - NIACH

65c5 # clr IACFLG
65cb # R47 bit 4 OFF (Air management2)
65d0 # R47 bit 4 ON (Air management2)
65d3 ||#################################################################
65d3 |# Tasklist Routine at 2151, routine offset 18
65d3 |#################################################################

65d7 # STI input line low timer
65de # Cranking, clear timers
65fc # Not cranking, but closed Throttle
6609 # Not crank, not closed Throttle
6613 # At Wide Open Throttle ?
6623 # part throttle ?

6634 # RC9 is some kind of timer
6636 # if R47 bit 5 OFF (Fan? )
6639 # zero 14E - timer
666a # FILTER 955A

66ca # 260 Volumetric Efficiency
66e6 # zero 137 timer?
66f5 # 8FD8
66ff # WOT flag
6711 # 027c - filtered(2) RPM
6736 # BP - barometric pressure
674f # 2BD - vehicle speed filtered(1) (MPH) 2BC is 8.8 format
67b4 # BP - barometric pressure
67c8 # 2BD - vehicle speed filtered(1) (MPH) 2BC is 8.8 format
67ce # zero RCE timer?
67fe # High load timer - 1/8 seconds under high load so far
6810 # zero timer?
6822 # zero timer?
6826 # timer?
6833 # timer?
6863 # zero 216 - timer?
686a # 126 - RATCH=Closed TP
6873 # RAA is Throttle position
687f # RAA is Throttle position
688a # zero 214 - timer?
6890 # 214 - timer?
689b # set 214 - timer?
689f # RAA is Throttle position
68a7 # Table 9056
68af # 214 - timer?
68b5 # zero 215 timer?
68bc # zero 220 timer?
68e6 # zero 138 timer?
68f2 # zero 14F timer?
68f9 # zero 218 - timer?
68fd ||#################################################################
1 |# Update Timers
1 |# see timer table below this subroutine.
1 |# routine has 1 mS (1/1204) resolution.
1 |# keeps remainders of IOTIMER so that it stays in sync
1 |#################################################################
68fe # 1/8s remainder (in mSec)
6909 # IOTIMER delta time since last mSec
6913 # *128/52083 = 1 mSec
691c # < 1 mS passed - return
691e # time since last timer update (mSecs)
6922 # (remainder IO times*128) + 64 (rounding)
6926 # return to IOTIMES remainder
6929 # effective time of this update (IOTIME-remainder)
692d # set $3e:5, = "new mS"
6930 # add new mSs to current mS count
6933 # R3f +ve if new 1/8 sec
6939 # remainder =- 1/8 sec (in mS)
693c # = "New 1/8 Sec"
693f # 1 Sec remainder (in 1/8 secs)
6942 # set "New second" (when R3d = 0)
6945 # reset 1 sec remainder (= 8/8, counts down)
6948 # store 1/8 sec remainder (in mSec)
694c # save IOTIME of last timer update (a true mS)
6950 # OK. Start process
6956 # All zero - return (exit)
695b # 16 bit address of timer
695e # short entry? Go to update
6961 # load mask from timer entry
6964 # create 16 bit address for flags
6967 # AND flags data with entry mask
696a # flag on or off required ?
696d # Inverse - if flag zero, GO timer
696f # (flags set) STOP, loop to next entry
6971 # (flags clr) STOP, loop to next entry
6973 # time flags - has time increment passed?
6977 # no, loop to next entry
6979 # Byte or Word timer
697c # read current Word value
6981 # read current Byte value
6984 # OK - update. Up or Down
6987 # negate value
6989 # if zero jump straight to save
698e # Not mSecs, increment timer
6992 # add mSecs to timer
6997 # overflow, wrap to zero
6999 # down - jmp straight to save
699c # up, set -1 ?
699e # jmp to save word/byte
69a6 # save Word timer
69ab # save Byte timer
69b0 ||###################################### 
69b0 |# TIMERS Table 
1 |# 3 or 5 byte entries
1 |# byte  0    = flags word
1 |# byte  2&3 WORD = timer address
1 |# if 5 byte entry - timer controlled by flag(s)
1 |# byte  4    = flag mask - selects control bit(s) in address
1 |# byte  5    = flags address (start/stop) timer|#
69b0 |# 2X = timer in 1/1024 seconds (~msec)


69b0 |# 4X = timer in 1/8 seconds
69b0 |# 8X = timer in seconds
69b0 |# So
69b0 |# bit 0 = 0 if short entry (3 or 5 bytes)
69b0 |# bit 1 = 1 if 16 bit timer else 0 = 8 bit timer
69b0 |# bit 2 = 0 timer count up vs down
69b0 |# bit 3 = 0 if flag bit must be set to update timer loc
69b0 |# bit 4 not used
69b0 |# bit 5 = 1 update in 1/1024 seconds (~msec)
69b0 |# bit 6 = update in 1/8 seconds
69b0 |# bit 7 = update in seconds
69b0 |# else entry size = 5
69b0 |# entry size = 2 if bit 0 of first byte = 0
69b0 |# in follow Table the 15 bit address field is byte flipped for correct word order
69b0 |######################################
69b1 # Byte,mSecs,Up. Time since last BP pulse?
69b4 # Byte,Secs,Up. Time since $a1:7 = 0
69b9 # Byte,Secs,Up. Time since $24:6 = 1
69be # Byte,Secs,Up. Time since $a1:2 = 0
69c3 # Byte,Secs,Up. Time since $27:7 = 1
69c8 # Byte,Secs,Up. Time since $27:6 = 1
69cd # Byte,Secs,Up. Time since $24:2 = 1
69d2 # Byte,Secs,Up. Time since $24:5 = 1
69d7 # Word,Secs,Up. Time since $a1:0 = 1
69dc # Byte,1/8s,Up. Time since $ed:7 = 1
69e1 # Byte,1/8s,Down. Time since $ed:6 = 1
69e6 # Byte,Secs,Up. 
69e9 # Byte,1/8s,Up. 
69ec # Word,1/8s,Up. 
69ef # Word, mSecs,Up. 
69f2 # Byte,1/8s,Up. Time since $2b:5 = 1
69f7 # Word,Secs,Up. Time since $2a:6 = 1
69fc # Word, mSecs,Up.
69ff # Word, mSecs,Up.
6a02 # Byte,Secs,Up. Time since $eb:2 = 1
6a07 # Byte,1/8s,Up. Time since $29:0 = 0
6a0c # Byte,1/8s,Up.
6a0f # Byte,1/8s,Up. Time since $a1:6 = 1
6a14 # Byte,Secs,Up. Time since $e8:1 = 1
6a19 # Byte,Secs,Down. Time since $e8:0 = 1
6a1e # Byte,Secs,Up. Time since $24:0 = 0 (Not WOT)
6a23 # Byte,Secs,Up. Time since $ec:0 = 1 (managed Fuel)
6a28 # Byte,Secs,Up. Time since $24:7 = 1
6a2d # Word,mSecs,Up. Time since $4f:6 = 1
6a32 # Byte,Secs,Up. 
6a35 # Byte,mSecs,Up. 
6a38 # Byte,1/8s,Up. 
6a3b # Word,1/8s,Up. 
6a3e # Byte,Secs,Up. 
6a41 # Byte,1/8s,Up. 
6a44 # Word,mSecs,Up. Time since $ea:2 = 1
6a49 # Byte,1/8s,Up. Time since $ea:1 = 1
6a4e # Byte,mSecs,Up. Time since $ec:6 = 1
6a53 # Word,mSecs,Down. 
6a56 # Byte,mSecs,Up.
6a59 # Byte,1/8s,Up. 
6a5c # Byte,Secs,Up. Time since $ef:6 = 1 
6a61 # Byte,1/8s,Up. Time since $ea:6 = 1
6a66 # Byte,mSecs,Up. Time since $a1:3 = 1
6a6b # Word,mSecs,Up.
6a6e # Byte,1/8s,Up. 
6a71 # Byte,1/8s,Up. 
6a74 # Word,mSecs,Up.
6a77 # Word,mSecs,Up.

6a79 ||#################################################################
6a79 |# Tasklist Routine at 2151, routine offset 46
6a79 |# Update shift light
6a79 |#################################################################

6a7b # 9E5D=0(Manual trans) - TSTRAT - transmission stratagey
6a7f # SIL (Shift Indicator Light)
6a84 # jmp if ?
6a87 # Table 8C34 - Incremental Indicated RPM shift point as a function of ECT

6a95 # Table 8C50 - Indicated RPM shift point as a function of LOAD.
6a9a # engine load (VE? )
6aa1 # add RPM shift points
6aa4 # ROM 8C0C - SPTRPM
6aaf # set SLTMR FLG
6ab4 # clr SLTMR FLG
6ab7 # zero 139 timer - SLTMR
6ac4 # 139 Shift Light Timer
6ad4 # R47 bit 2 ON Shift Light
6ad9 # R47 bit 2 OFF Shift Light
6adc ||#################################################################
6adc |# Tasklist Routine at 2151, routine offset 48
6adc |#################################################################

6add # 940E - HPACL
6ae1 # return if no Thermactor present
6af0 # 126 - Filtered TP
6af5 # 9412 - SHKTP
6afb # RAA is Throttle position
6b00 # R47 bit 4 ON (Air management2)
6b05 # R47 bit 4 OFF (Air management2)
6b09 # jmp if not SIGPIP
6b0c # jmp if SYNFLG
6b11 # RBA - PIP time lo 16 bits
6b1a # RBA - PIP time lo 16 bits
6b22 # RBA - PIP time lo 16 bits
6b2a # RBA - PIP time lo 16 bits
6bfa # Now check for 10% each way ?
6c04 # = 0.9 ?
6c0f # = 1.10 ?
6c24 # PIP time lo 16 bits with correction

6c8e ||#################################################################
6c8e |# handle HSI line 1 data - Knock sensor
6c8e |# check for Knock if reqd
6c8e |#################################################################
6c8f # mask HSI data
6c92 # 947A KIHP = 00 ( is there a knock sensor )
6c96 # jump if line data = 0
6c98 # set KNOCK DETECTED
6c9b # set VIP KNOCK
6c9f # 947A KIHP = 00 ( is there a knock sensor )

6ca6 # ROM 9474 - RPMCNL
6caa # jmp if N <= RPMCNL
6cac # KWCTR : ROM 9479 - WINCLD
6cb0 # jmp if KWCTR >= WINCLD
6cb2 # jmp if not KNOCK DETECTED
6cb5 # KWCTR
6cb8 # SIGPIP
6cbb # KWCTR
6cbe # KWCTR
6cc0 # QUEUE 9
6cc4 # 323
6cca |# 2284 proc address
6ce2 # clr R4E bit 1
6d03 # last saved PIP event time (24 bits)
6d10 ||#################################################################
6d10 |# Tasklist Routine at 2151, routine offset 36
6d10 |#################################################################

6d17 # New PIP received flag
6d1c # unknown function
6d24 # = RPM / 128
6d2a # Table output * 128
6d2d # = WOPEN
6d31 # WINDOW BETA
6d35 # output is fraction of PIP Period.
6d3d # Table output * 128
6d43 # RBA - PIP time lo 16 bits
6d46 # multiply by 64
6d49 # 9472 - WINLEN
6d4d # 228 - WINDOW DELTA
6d51 # Retard increment versus RPM, deg.
6d59 # Table output * 128
6d5f # RET INC
6d65 # Spark Advance Rate vs RPM
6d6d # RPM / 128
6d73 # adv * 16
6d83 ||# Advance all cyls 1 degree of spark
6d89 # add 1 degree of advance to each cyl
6d8f # 22B - SparkAdvance[ cyl 1 -8 ]

6d9d # Advance Limit
6da1 # 22B - SparkAdvance[ cyl 1 -8 ] new advance for this cyl
6daa # Filter Throttle Posn
6db3 # filtered result
6e20 # is there a knock sensor ?
6e24 # engine load (VE? )
6e3c # clr SparkAdvance[ cyl 1 -8 ]
6e48 ||#################################################################
6e48 |# Tasklist Routine at 2151, routine offset 4E
6e48 |# Key On Engine Off, Engine Running, Continuous tests
6e48 |# There are 4 proc Tables BASE A - BASE D - how do these correspond to
6e48 |# self test stuff
6e48 |#################################################################

6e4c # Set up EGR flags
6e51 # jump if VIP enable is set
6e54 # Time since CPU power up - mS
6e58 # compare whole seconds 16
6e5b # jmp if timer < 4096 msec (~ 4 secs)
6e63 # jump if EEC reset
6e66 # jump if not CRANKING - EEC reset
6e69 # Enter KOEO (Engine off test)
6e69 ||########## STI low - EEC reset
6e74 # Reboot system
6e77 # normal strategy - not self test
6e7a # STI input is low - EEC reset
6e7d # Transmission type
6e81 # 3 = Manual Transmission, both clutch and gear switches.
6e86 # 4 = Auto Transmission, non-electronic, neutral drive switch.
6e91 # filter at 00CA[R78] use blend 116(EVP) to 380
6e9b # jump if STI input is low
6e9e # Vehicle speed, MPH
6ea6 # Vehicle speed > 4 MPH
6ea8 # SCCS on (Cruise Control)
6eab # SCCS brake (cruise control)
6eae # VSCDT? push proc D and execute it
6eb0 # OK - running self tests
6eb3 # EEC reset
6eb5 # jump if not VIP mode flag : VSCST
6eb8 # jump if STI input is high to EEC reset
6ebb # jump if not CRANKING to EEC reset
6ebe # VSCST? push proc C and execute it(STI low and engine off or starting)
6ec0 # jump if CRANKING
6ec3 # jump if underspeed/cranking 
6ec6 # jump if STI input is high
6ecb # 1C8 timer - STI input line low timer (1/8sec)
6ecf # 1 second
6ed2 # jmp if STI low timer < 1 second
6ed4 # jump if not VIP mode flag : VIP enable
6ed7 # 134 - PUTMR - Counts up after h/w reset
6edb # compare whole seconds 1800 msec (1/1024) = 6 seconds
6ede # jmp if timer < 6 sec
6ee9 # SCCS on (Cruise Control)
6eec # jump if VIP mode flag : disable VSCDT set
6eef # 134 - PUTMR - Counts up after h/w reset
6ef3 # compare whole seconds
6ef8 # jmp if timer >= VVSCET?
6efa # VIP mode flag : set VSCDT and DISABLE RUNNING
6efd # jmp to BASE D procs
6eff # jump if VIP mode flag : disable running set
6eff ||# ENTER DYNAMIC TEST
6f02 # Set VIP mode flag : disable no start and disable VSCDT
6f07 # BASE A - computed jump
6f0c # jump if STI input is low
6f0f # jump VIP mode flag : disable no start
6f0f ||# ENTER ENGINE OFF TEST?
6f14 # BASE B - push self test function proc ?
6f18 # test code - KOEO self test and others?
6f20 # return
6f22 # if SCCS ON state - return (exit if cruise control is ON)
6f25 # 134 - PUTMR - Counts up after h/w reset (msec)
6f29 # compare msec - 2800 * 1/1024 = 10 seconds
6f2c # if Eng Runnung Timer >= 10seconds then return
6f2e # 13E - timer? time since last PIP recieved (msec)
6f32 # 400 msec(1/1024) seconds ~ 1 second
6f35 # if time since PIP <= 1 sec then return
6f37 # Set VIP mode flag : VSCST
6f37 ||##### ENGINE OFF VCS TEST?
6f3c # BASE C - computed jump in 7000 area
6f40 # run the test routine
6f40 ||##### ENTER ENGINE RUNNING TEST
6f43 # BASE D - computed jump in 7000 area
6f47 # run the test routine
6f47 ||#### computed diagnostic calls return here
6f48 # Save diagnostic testing registers
6f4d ||######################################
1 |# gets jump function index into R3A
1 |#######################################
6f4e # load diagnostic testing registers
6f50 # function address index
6f53 # X 2 - make into word index
6f56 # original return address
6f58 # push extra address (save diag vals)
6f5b # Zero 1st time only, This is return address of call x7026
6f5e # jump if first time thru here
6f60 # return to 1st or 3rd caller
6f62 # restore return address
6f64 ||# Diagnostic Proc Table A
6f65 # Diagnostic Proc Table A proc no 2
6f82 ||####################################################################
6f82 |# Diagnostic proc Table A
6f82 |# sensor error stack processing - dump out errors?
6f82 |####################################################################
6f86 # is error stack empty?
6f8b |# E11 - System PASS
6f8e # Trouble Code : System PASS (no errors)
6f8f # E 00 (end of errors? ) 
6f93 # Hard Trouble Code Error Table
6f97 # load next trouble code byte into word R32
6f9d # zero is end of error codes?
6f9f # call this for every error
6fa1 # 342 + 13
6fa5 # loop back small
6fa5 |# end of error codes stack

6fbd # loop back big
6fce # loop back big

6fe3 ||#######################################################
6fe3 |# ? DUMPS OUT HARD ERROR CODES?
6fe3 |# R32 byte has trouble code - called for every trouble code in 342 stack
6fe3 |#######################################################
6fe6 # error code x 16 (left one hex digit)
6fed # execute this loop error code X 16 + 1? times
6fff # R32 << 4 (one hex digit)
700e |#######################################################
700e |# entry point 1
700e |# shift D4 right 16 times or until R19 == 0
700e |#######################################################
701a ||#######################################################
7025 ||#######################################################
1 |# this proc can shortcut returns from stack - to grandcaller
1 |#######################################################

7026 # get & save caller
7028 # get & save grandcaller
702a # STO fast codes
702d # jump if STO high speed
7039 # Self Test Output trigger
7042 # return to grandcaller 
7042 # return to grandcaller 
7045 # restore grandcaller
7047 # restore caller
704b # Save diagnostic testing registers

704f ||######################################################
1 |# save and restore test values for self test
1 |######################################################


7095 ||##########################################################
7096 # points to 0x8EDA
709b # why does this REG need resetting
709f # 0=sonic, 1=PFE, 2=none
70a9 # branch ALWAYS in this ROM
70b4 # - never happens in this ROM
70b7 |##########################################################
70bd # process? a trouble code?
70bf # set R30 to end of trouble code stack
70c1 # Low Speed Repeat
70c7 # R30 = # 356 WORD
70d0 # save start code?
70d5 # KAMINDEXLow
70dc # take next value from 7C4 Table
70e1 # loop for 25 entries (37)
70ea # was bit bit set?
70ec # Table (index starts at 1 not zero)
70f2 # skip zeros 
70f4 # write to 356+
70f4 ||#############################################################
70f4 |# Restore the registers used
70f4 |# Save the registers used for testing
70f4 |# If ROM 97D9(EGR Type) = 1 then set bit 6 in RE6 else clear the bit
70f4 |# If ROM 97D9(EGR Type) = 2 then set bit 6 in RD9 else clear the bit
70f4 |# Save diagnostic testing registers
70f4 |# Set up EGR flags
70f4 |# Since ROM does not change this proc ALWAYS clr both bit 6 flags
70f4 |# Things like continious tests require preserving registers
70f4 |# change flag bit 6 in RD9 and RE6 based on ROM 97D9(EGR Type) = egr type ( 0=sonic, 1=PFE, 2=none)
70f4 |# load diagnostic testing registers
70f4 |# resets R72 = 180 and sets R78 = 8EDA
70f4 |#############################################################
70f7 # mark as end in case of exit?
70fa # loop
70fd # loop
70ff # set ptr to code table
7101 # Bubble sort Table
711d # R30 = end of trouble code stack
7121 |# bubble sort
7122 # load ptr to ?
7126 # exit and restore ptr


7141 ||#############################################################
1 |# Diagnostic, Trouble Codes ?  called as [7142+Reg] from 70ec
1 |# so table must start at 1. 
1 |##############################################################
7167 ||#############################################################
1 |# Self Test subroutine list KOEO.  ( From 6f14+x)
1 |##############################################################
716a # Proc uses next word as a PARAM
716c # PARAM - interrupt mask address
716e # ECT. BP, MAF sensor range tests
7170 # ACT, EGR, NPS, A/C on,PwrSteering,VCAL, TP sensor tests
7172 # force LSO and HSO outputs off set STO on jmp to (R34)
7174 # Thermactor Air System test
7176 # Fuel Pump Secondary circuit test
7178 # dump out all 342 stack error codes to ?
717a # incr R38 and set LSO and BiDI outputs?
717c # proc with odd h/w xor
717c ||######## Self Test list 2 (from 6f07)################|
7180 # clr STO, Hard Fault, ACT, ECT, TP, TPS ?
7182 # high RPM test (If Engine Running)
7196 # PARAM  - for proc 8085
71ac # dump out all 342 stack error codes to ?
71c0 # in all three Tables at end
71c2 # clr 1CA timer, incr R38 self test index, set bit flag and return
71c4 # dump out all 342 stack error codes to ?
71c6 # in all three Tables at end
71c6 ||######## Self Test list 3 (from 6f3c)################|
71c8 # STO off and output to low, zero VIP timer, incr R38 test index
71ca # tweak flags
71cc # SCCS something
71d0 # clr 1CA timer, incr R38 self test index, set bit flag and return
71d2 # dump out all 342 stack error codes to ?
71d4 # in all three Tables at end
717c ||######## Self Test list 4 (from 6f43)################|
71d6 # STO off and output to low, zero VIP timer, incr R38 test index
71dc # PARAM - for proc 807e
71e4 # PARAM - for proc 807e
71ec # HEGO - A/F ratio test?
71ee # clr 1CA timer, incr R38 self test index, set bit flag and return
71f0 # dump out all 342 stack error codes to ?
71f2 # in all three Tables at end
71f2 ||########## End of self test lists ####################
71f7 # set code flags for clearing later
721d # no SCCS buttons/mode
7225 # Brake is on.
724f # E49 SPOUT signal defaulted or 1-2 shift error E40D
7254 # E47 air flow low at base idle
7259 # E48 air flow high at base idle
7262 # E67 A/C input high
7268 # E74 Brake circuit fail - not actuated
726e # E75 Brake circuit fail - always high
7279 # SCCS Open Circuit Check, pars = E81,limit,bit mask(=SCCS),IO
7281 # LSO output line 4 ON (Speed Control Vent)
7284 # return from 7A76 to this address
7287 # DOL Open Circuit Check, E82,limit,bit mask(=DOL),IO
728d # SCCS controls off & stuff?
728f # Open Circuit Check function
728f ||############################################################
728f |# STO off and output to low, zero VIP timer, incr R38 test index
728f |# jump Table entry 71C8
728f |############################################################
7294 # set STO off flag, set STO output low, and set STO trigger
7297 # zero 1CA timer? VIP TIMER EX?
729b # incr test index
# 729d |#######################################################
729e # tweak flags, set STO on and return
72a1 # 91 - Air/Fuel mixture not within Self test range (HEGO switching error)
72a3 # JUMP TO (use caller data) E 91 -> err stack
72a6 # From Diagnostic Proc Table D
72cc # From Diagnostic Proc Table D
72cf # From Diagnostic Proc Table D
72d1 # LSO output line 4 ON (Speed Control Vent)

72d6 # From Diagnostic Proc Table D

#72dc |# //72FC # bit 5 is CID line
#72dc |# 716E Self test jump Table entry
7302 ||# Diagnostic Proc Table D
7317 # incr test index
7317 ||# Diagnostic Proc Table D

7319 # clr RD9 bit 5 VVS flag1?
731e # LSO output line 4 OFF (Speed Control Vent)
7321 # LSO output line 0 OFF (Speed Control Vacuum)
7328 # SCCS Count? R9B = R42 why such a strange instruction?
732d ||#################################################################
732d |# Tasklist Routine at 2151, routine offset ?
732d |#################################################################

736f # load diagnostic testing registers
7372 # call set HSO Time Hold = Master IO Timer Lo + # 0003
7375 # return to this address
7378 # E8 Fuel Pump Open Circuit Check
73a3 # exit if CRANKING

73aa # ECT raw from AD conversion
73b1 # trouble code bit 2 - ECT open circuit trouble code

7459 # test selector is 1D7 vs 1D6 BYTE here
746e # increment test routine selector (R38)
7472 # max test is 00FF
7475 # test selector is 1D7 not the 1D6 here
7479 # - RC9 is some kind of timer
7489 # if  Air management2 ON
7492 # test selector is 1D7 - reset to zero
749d # Never gets here ?
755c # Lo,Hi limit, E hi = none, E Lo - PFE/EVP/ (sonic) voltage below closed limit
757d # PFE/EVP/ (sonic) voltage below closed limit, Defective PFE/EPT sensor ?

764d # time in self test mode?

769b # tweak flags, set STO on and return
769f # set STO off flag, set STO output low, and set STO trigger
76c2 # jump if STI input is high
76c2 |# incr the # times the test has been run for index R38 and less ?
76c9 # incr 22 bytes in Table clamp at max of FF
76d2 # clamp to FF max
76df ||#######################################################
76df |# sets and clears trouble code bit flags
76df |# first param (at 001A) bottom 3 bits are index in 7C4 Table?
76df |# rest of bit >> 3 and - 1 are error flag bit
76df |#######################################################
76e0 # copy the three bytes to R1A/1B/1C
76e3 # 3rd param byte to word
76e6 # address 8E5A + data offset
76ea # read ROM at lookup address
76ef # same ROM address AGAIN
76f3 # what is this byte RAM Table?
76f8 # 1st param byte to word
76fb # mask out bottom 3 bits of first param (0 -7)
76fe # R18 is now a pointer to ?
7704 # first param >> 3 (shift out offset bits) 5 bits left
7707 # zero value is special ( flag bits are biased up by one )
770b # R1C = 0001 now
770d # creates a mask of bit # (R1A - 1)
7710 # 382 error bit flags word
7715 # R14 is second param
771a # value looked up above
773d # invert mask
773f # clear the error bit
7745 # R14 is still? 3rd param byte (0x76E3)
7759 # add second param and looked up ROm value
775e # clamp max value
7761 # compare second param sum and Table lookup value
7766 # what is this address ?
776c # clr bits 0,1,2
7775 # clr bits 0,1,2
778a # set the error bit
7795 # save ? R14 is second param (ie 1AA + 0D = 1B7)
779a # 382 error bit flags, bit 2 set = ECT grounded
77a3 # clear Table 7C4 to 7D9
77ac # tweak flags. set STO on and return
77af # LSO output line 5 (STO) ON (MIL)
77af |# set STO off flag, set STO output low, and set STO trigger
77b4 # set STO OFF flag
77b7 # LSO output line 5 (STO) OFF (MIL)
77ba # set Self Test Output trigger
77bd ||################################################################
77bd |# copy specified bytes to R1A onwards (77c2)
1 |# or where specified in R16 (77be) from GRANDCALLER subroutine.
1 |# gets one byte from return address of caller function.
1 |# gets reqd bytes from 'Grandcaller' function, and mods return addresses.
1 |# IN  - 1 byte (caller subroutine), NumBytes (grandcaller subroutine)
1 |# OUT - [R1a] or [x] onwards asigned bytes 
77bd |################################################################
77be # default destination is R1a onwards
77c2 # Caller's (normal) return address
77c4 # Get count of bytes, Inc return address
77c7 # Get GrandCaller's return address
77cf # Get no of bytes into dest. addr
77d4 # and push modded returns back.
77d6 ||################################################################
77d6 |# extended filter ? gets 2 bytes from ROM
77d6 |# R32 is OLD AD sensor value
77d6 |# R34 is new AD sensor value
77d6 |# R36 is manged filtering factor
77d6 |################################################################
77d7 # get ROM bytes to R1A
77d9 # get 2 bytes into R1A from this caller's return addr
77da # (address of) OLD AD sensor value
77dd # NEW AD sensor value 216 - raw EVP
77e1 # manged filter factor
77e6 # filter
77e9 # save updated value
77ec ||################################################################
77ed # get 1 ROM byte to R1A
77f8 ||################################################################
77f9 # get 3 ROM bytes to R1A
77fb # 3 bytes to R1A,B,C from caller
77fc # 382 word
780c ||################################################################
780c |# Key On Engine Off (KOEO) Self -Tests
780c |################################################################
780d # jmp if disable EOLT set
7810 # set STO off flag, set STO output low, and set STO trigger
7813 # do h/w RAM/ROM/CPU checks
7816 # load diagnostic testing registers
7819 # jump if not VIP mode flag : disable no start
781c # Set STO output on - diddle some flags?
781f # *HANG* - h/w error
7821 # checksum the ROM
7824 # test selector set to zero
7829 # STO very fast readout set
782f # the skip two returns do not return here
7832 # clear STO very fast readout
7835 # disable EOLT
7838 # Set VIP mode flag : no start
783b # if LSO output line 7 is ON (Fuel Pump)
783e # jump if not VIP mode flag : VIP enable
7841 # zero 1CA VIP TIMER EX, incr R38 self test index, and return
7843 ||############################################################
7843 |# ROM Checksum
7843 |############################################################

7846 # 
7848 # Start address (2000)
784c # End address  (9fff)
7850 # If real end address
7855 # add to sum
7858 # end address reached?
785b # loop
785d # load next ROM range
7862 # checksum zero ?
7864 # E15 - EEC ROM fail
7867 # zero 1CA timer, incr R38 self test index, and return
7869 ||######################## ROM checksum adresses ##############
786a # start address(set 0 for no checksum test)
786B # @786B checksum base address. Set to zero to clear error code 15

786c # last address of ROM checksum
786e |#############################################################

7873 # 61 ECT sensor circuit grounded
787a # 51 ECT circuit open
7886 # 21 ECT out of range
78a0 # 22 MAP/BP sensor out of range
78a5 # 22 MAP/BP sensor out of range
78c1 # 56 MAF circuit above max voltage
78c6 # 26 MAF input out of range
78c9 # save code 26
78cb # CALLED BELOW - zero timer, incr self test index and return

78d7 # 64 ACT sensor circuit grounded
78de # 54 ACT sensor circuit open
78ea # 24 ACT sensor out of range
78f9 # 32 EGR not controlling,E34 Insufficient EGR flow
7906 # 34 Insufficient EGR flow
7922 # 67 NPS circuit open with Air conditioning on
7924 # 67 Neutral Pressure switch (NPS) circuit open
7928 # 79 A/C on / Defrost
7937 # 52 Power Steering Pressure Switch circuit open
793b # 19 Failure in ECC reference voltage
7947 # 63 TP sensor circuit below min voltage
794e # 53 TP sensor circuit open, above max voltage
795a # 23 - TP out of range during self test
7963 ||#######################################################
7963 |# Compare two values. First value must be less than second
1 |# or error code is generated
1 |# Entry points for FOUR and FIVE params( 2 addresses + optional byte)
1 |# Both params can be plain or complex address types,complex marked by bit 15.
1 |# four param sets flag for pass/fail, 
1 |# five param has error code as fifth byte and set if fails
1 |#######################################################
7964 # mark as 4 bytes
7967 # copy 4 bytes from caller to R1A onwards
796a ||# entry point for FIVE params
796f # make R1a,b into true address
7973 # make R1c,d into true address
797d # Jump if PASSED (no codes)
797f # jump if 4 params
7982 # 5 params, error code
7985 # save errorno in (342) TROUBLE CODE Table
7987 # clear error marker
798a ||#######################################################
1 |# Decode complex addresses into their TRUE addresses (plain ones OK too)
1 |# address decoded back to input register (via R16, R42 )
1 |# Address is encoded as 1 bit=flag, 3 bits=base reg/2, 12 bits offset from reg
1 |# NOTE encoding is HALF reg value (because of divide by 8)
1 |# return value is then a POINTER (as a plain address) 
1 |#######################################################
798f # get address (from args in caller)
7992 # get data from address
7995 # address not encoded - return unchanged
7998 # Hi byte of value
799b # Clear top nibble.  R42 = Offset address
799e # Clear bottom nibble and flag
79a1 # Rbase register (0-14 times 2 effectively)
79a4 # R42 += Rbase register (as pointer)
79a9 # update input pointer to new address
79ac ||# 716E Self test jump Table entry
79b9 # zero 1CA timer, incr R38 self test index, and return
79be # LSO output line 7 ON (Fuel Pump)
79c9 # E96 - Themactor Air System inoperative
79cc ||# 716E Self test jump Table entry
79d6 # E95 - Fuel Pump secondary circuit failure
79d9 # zero 1CA timer, incr R38 self test index, and return
79de # 'return' address
79e2 # zero 1CA timer, incr R38 self test index, and return
79e2 ||# 716E Self test jump Table entry
79e2 |# where does R34 come from?
79e7 # force all LSO and HSO otputs off and STO on
79f6 # address to jump to ?
79f9 # 9E65 thermactor present switch = 1.0

79fd |# Idle Air Control Open Circuit Check, E81, limit, mask, - Idle Air Control
7a05 |# Air Management 1 Open Circuit Check, E82, limit, mask, - Air Management 1
7a0b |# Canister purge Open Circuit Check, E85, limit, mask, # 12D Canister Purge on time
7a17 |# Fuel Pump Open Circuit Check, E87, limit, mask, IO = Fuel Pump
7a34 # check ? E84
7a44 |# Electro Drive Fan Open Circuit Check, E88, limit.mask = ElectroDriveFan
7a5c |# Hi Fan Open Circuit Check, E83, limit,mask, R47 bit 6 - HiFan output line
7a6e # call set HSO Time Hold = Master IO Timer Lo + # 0003
7a73 # clr 1CA timer, incr R38 self test index, set bit flag and return
7a74 ||#################################################################
7a74 |# Four data bytes follow calls to this function (R1A,1B,1C,1D)
7a74 |# R1A - is Trouble Code if there is an error
7a74 |# R1B - ROM loc for limit 8F86 + this offset (word)
7a74 |# R1C - parameter flag - mask to select the device (Fan, CANP, FuelPump etc)
7a74 |# R1D - pointer to SFR flag byte usually R46 or 47 for output lines
7a74 |# The OCC AD channel must be a supply voltage to the actuators
7a74 |# This performs 'circuit' tests
7a74 |# Measure any variation in voltage when the selected output line is switched
7a74 |#################################################################
7a76 # load params from stack & OCC base line test of circuit
7a78 # fourth param byte to word
7a78 |# toggle output line for this device
7a7b # load contents of SFR
7a7e # mask contents with third param
7a81 # store back in [SFR]
7a84 # read OCC and compare to level before - set Trouble code if out of range
7a86 |# retoggle output line for this same device
7a89 # xor 3rd and fourth param (if calls did not change them)
7a8c # store fourth param? to [SFR]
7a8f # return to callers caller
7a8f ||################################################################
7a8f |# Open Circuit Check ?
7a8f |# Four data byte follow calls to this function
7a8f |# (via 7aa1)
7a8f |################################################################
7a91 # load params from stack & OCC base line test of circuit
7a99 # read OCC and compre to level before - set Trouble code if out of range
7aa0 ||################################################################
7aa0 |# Read reference base level OCC AD channel for the test circuit line
7aa0 |################################################################
7aa1 # Repeatedly read AD channels 2.4mS
7aa3 # back up stack by one call
7aa5 # Get 4 bytes from Grandcaller into R1A
7aa8 # restore stack
7aaa # circuit test param 2 - ROM location selector
7ab1 # R1E + ROM 8E5A + 12C = 8F86 + R1E
7ab4 # 10E - OCC - Open Circuit Check AD value
7ab8 # 1DE - OCC reference level save value
7abc ||###############################################################
7abc |# Compare to the reference OCC level
7abc |# Read the switched OCC level for the test circuit line
7abc |###############################################################
7abd # Repeatedly read AD channels for 5161 IOtimes
7abf # 1DE - OCC reference level save value
7ac3 # 10E - OCC - Open Circuit Check AD value - difference
7ac7 # jmp if positive
7ac9 # ABS OCC value
7acb # limit for this circuit
7ace # jmp if OCC >= ROM Limit - GOOD
7ad0 # Post Trouble Code (in R1a) - open circuit error for X
7ad3 # clr trouble code
7ad5 ||################################################################
7ad5 |# Repeatedly read AD channels for 5161 IO times (12.4 mS)
7ad5 |########################################################
7ad6 # read start time
7ad9 # = time passed
7add # loop until 5161 IO times have passed
7ae3 # Save diagnostic testing registers
7ae6 # read all the AD channels 
7ae9 # reload diagnostic testing registers
7aee ||########################################################
1 |# This function forces all LSO lines and BiDir lines OFF
1 |# sets Fan=1 (b5 R47) but clears rest of R46 and 47 and increments HSIO TIME 
1 |# some kind of reset function ?
1 |########################################################

7aef # set Fan=1 (b5 R47) 
7b00 ||# 716E Self test jump Table entry
7b04 # incr self test index
7b06 # Reset ?
7b1a ||########################################################
7b25 # compare to raw TP
7b2e # if LSO output line 5 (STO) is ON (MIL)
7b31 # fan high speed enable
7b4d # return
7b4f # fan control enable
7b9a # = 80
7b9e # exit w/o odd h/w instruction
7ba0 # 1C2 timer?
7baa # exit
7bac ||########################################################
1 |# save R1A in TROUBLE CODE Table (at 342)
1 |# save range error code up to index 19
1 |# trouble code set in R1A (7bb2) or via inline param (7bae)
1 |########################################################

7bae # Get 1 byte from caller to R1A
7bb2 # 19 max error code positions in Table
7bb8 # 342 is base of Hard Trouble Code Error Table

7bbf ||###############################################################
1 |# Range test.  Error code to 342 Table
1 |# 1st and 2nd params are AD value to check
1 |# 3rd and 4th params are [encoded] value limit low
1 |# 5th and 6th params are [encoded] value limit high
1 |# 7th param is trouble code
1 |# params are placed in R1A/1B/1C/1D/1E/1F/20
7bbf |###############################################################
7bc0 # get 7 bytes to R1A - R20
7bc3 # copy this many bytes to R1A on
7bc4 # decode R1c value if high bit set
7bc8 # decode R1e value if high bit set
7bcc # actual AD value to check
7bcf # limit low
7bd4 # limit high
7bdc # save specified trouble code in Table
7bdf ||# 716E Self test jump Table entry
7be0 # set STO off flag, set STO output low, and set STO trigger
7be5 # clear Self Test Output trigger
7beb # 112 - clear ECT raw ?

7c00 # E98 - Hard Fault present
7c0b # E64 - ACT sensor grounded
7c11 # E54 - ACT sensor open
7c17 # E61 - ECT sensor grounded
7c1d # E51 - ECT sensor open
7c23 # E63 - TP sensor  below min voltage
7c29 # E53 - TP sensor  above max voltage
7c2f # E56 - TPS sensor below min voltage
7c35 # E66 - TPS sensor above max voltage
# 7c3c |##############################################################
7c40 # HEGO1 delta time initial value?
7c45 # HEGO2 delta time initial value?

7c52 # clr Knock Enabled
7c6b # LSO output line 6 ON (Wide Open THrottle A/C cutout)
7c6e # LSO output line 3 OFF (Idle Speed Control)
7c71 # R47 bit 4 OFF (Air management2)
7c74 # 12C
7c78 # DOO trouble codes ?
7c81 ||# Diagnostic Proc Table A

7c8f # - filtered RPM
7c97 # E12 - Cannot control RPM during high RPM test
7ca3 # E21 - ECT out of range during self test
7cac # E26 - MAF ? sensor out of range during self test
7cb5 # E23 - TP sensor out of range during self test
7cbe # E24 - ACT sensor out of range during self test
7cc7 ||# Diagnostic Proc Table A
7cc9 # filtered sensor output - in place (0108) - filtered RPM
7ce3 ||# Diagnostic Proc Table A
7ce5 # jump if no HEGO1 cross over voltage detected yet
7ceb # jump if no HEGO2 cross over voltage detected yet
7d06 #E42 - EGO sensor indicates system rich
7d10 |#E92 - Air/Fuel mixture not within Self test range
7d10 |# Diagnostic Proc Table A
7d11 # jump if HEGO1 cross over voltage detected
7d17 # jump if HEGO2 cross over voltage detected
7d25 # 'filter' to scale time delta (ROM range limited to 10A)
7d3f #E41 - EGO sensor indicates system lean
7d45 #E91 - Air/Fuel mixture not with Self test range
7d48 |# Diagnostic Proc Table A
7d51 # Thermactor present?
7d58 # 'filter' to scale time delta (ROM range limited to 10A)
7d60 # (Air management1)
7d63 # (Air management2)
7d66 |# Diagnostic Proc Table A
7d68 # jump if no HEGO1 cross over voltage detected yet
7d6e # jump if no HEGO2 cross over voltage detected yet
7d81 #E94 Thermactor Air System inoperative
7d87 #E44 Thermactor Air System inoperative

7d8f |# Diagnostic Proc Table A
7d95 # HEGO2 cross over voltage detected
7d98 # HEGO1 cross over voltage detected
7d9f #E45 Thermactor air upstream during Self test
7da2 # R47 bit 3 OFF (Air management1)
7da5 # R47 bit 4 ON (Air management2)
7da8 |# Diagnostic Proc Table A
7db9 # HEGO2 cross over voltage detected
7dbc # HEGO1 cross over voltage detected
7dbf #E46 Thermactor air not by-passed during Self test
7dc2 # Air management2
7dc5 # Air management1
7ddb # no of HEGOs
7de2 |||########################################################
7de2 |# Very odd routine
7de2 |# Word behind caller is 'filter' to scale time delta (ROM range limited to 10A)
7de2 |########################################################
7deb # copy byte following call count bytes from stackptr2 to 001A
7dee # copy this many bytes to 001A from this callers return address
7def # mangle the value at 001A into ROM if high bit set
7df4 # 00E0 IO time since last visit to this proc
7df9 # time since ? * ?
7dfd # R36 is Hi 16 bits of prior result times "filter"
7e04 # 10A ? MAP/BP ? time?
7e09 # time delta * # 2844 * filterFactor
7e0e # 9E82 - 6000
7e14 # 9E82 - 6000 - clamp if too low
7e1a # 10A Table ?
7e22 # 9E84 - A666
7e28 # 9E84 - A666 - clamp if too high
7e2c # 10A
7e31 # 10C - ? store to raw KEYPWR?
7e36 # store last time tweaked
7e3a |########################################################
7e3b # copy byte following call count bytes from stackptr2 to 001A
7e3e # copy this many bytes to 001A from this callers return address
7e3f # mangle the value at 001A into ROM if high bit set
7e49 # nasty! return back two addresses
7e4b ||# Diagnostic proc Table A
7e56 # limit Low,Limit High,Trouble Codes, Lo limit,Hi limit
7e8d |# Diagnostic Proc Table D
7e7a |# Diagnostic proc Table A
7ec4 # E33 - EGR valve (PFE and sonic) not opening


7ecd ||########################################################
1 |# data params follow the call here
1 |# param word 0 (1A) - sensor value EVP ?
1 |# param word 1 (1C) - Lo
1 |# param word 2 (1E) - Hi
1 |# param byte 3 (20) - Trouble Code for ? voltage lower than mangle Lo
1 |# param byte 4 (21) - Trouble Code for ? voltage lower than mangle Hi
1 |########################################################
7ee7 # 35 - PFE/EPT/EVP below min voltage
7f02 # 35 - PFE/EPT/EVP above max voltage
7f05 # VSCST, running, no start
7f0b # save R1A in 342 TROUBLE CODE Table

7f14 ||# Diagnostic proc Table A
7f22 ||# Diagnostic proc Table A
7f35 ||# Diagnostic proc Table A
7f53 # 18 - SPOUT circuit open (grounded? )
7f4b ||# Diagnostic proc Table A
7f60 ||# Diagnostic proc Table A
7f75 # 13 Cannot control RPM during low RPM test
7f7d ||# Diagnostic proc Table A
7f8a # is knock sensor present
7faf ||# Diagnostic proc Table A
7fb8 # filtered sensor output - in place (0108) - filtered RPM
7fc6 |# Diagnostic proc Table A
8029 # E77 Operator error during Dynamic Response Test or Cyl Balance Test
8032 # E73 Insufficient TPS change during Dynamic Response Test
803c # E25 Knock not sensed during Dynamic Response Test
8055 # E74 Brake on/off switch circuit open
805c # E75 Brake on/off switch circuit closed

8075 #E52 Power Steering Pressure Switch circuit open
8075 |# Diagnostic Proc Table A
8079 |# Diagnostic Proc Table D
8083 |# Diagnostic Proc Table D
808a |# Diagnostic proc Table A
80a4 |# Diagnostic proc Table A
80c2 |# Diagnostic proc Table A
80d0 |# diagnostic proc Table A
80f0 |# diagnostic proc Table A
811a # store to raw ECT AD
811f |# Diagnostic proc Table A
812b |# Diagnostic proc Table A
8142 # save R1A in 342 TROUBLE CODE Table
8145 # store to raw ECT AD
8161 # store to raw KEYPWR
816b # E 90 - Pass Cyl Balance Test
8175 |# Diagnostic proc Table A
8188 # clr 1CA timer, incr R38 self test index, set bit flag and return
8188 ||# Diagnostic proc Table A

81b8 ||# Diagnostic proc Table A

8227 |#################################################################
8227 |# Tasklist Routine at 2151, routine offset 9A
8227 |#################################################################
8228 # If equal to 1, Brake is on.
8233 # power steering on
823e |#################################################################
823e |# Check HEGO sensors
823e |# Tasklist Routine at 2151, routine offset 98
823e |#################################################################

823f # Set up EGR flags
8242 # OLD average HEGO1
8246 # NEW value - raw HEGO1
824a # filter factor
824e # filter HEGO1
8251 # save new filtered value
8255 # clear HEGO1 cross over voltage detected
8258 # O2S TRIP VOLTAGE
825e # signal HEGO1 voltage cross?
8261 # OLD average HEGO2
8265 # NEW value HEGO2 raw
8269 # filter oxygen sensor?
826c # filtered value (new HEGO2 avg)
8270 # clear HEGO2 cross over voltage detected
8273 # O2S TRIP VOLTAGE
8279 # signal HEGO2 voltage cross?


827c ||#################################################################
1 |# CPU test 
1 |# range of 8061 ALU, addressing, push/pop etc.
1 |#################################################################
8280 # save old stack ptr
8286 # set new stack pointer
829a # exit CPU ALU error
829c # safety catch ?
82a7 # safety catch ?
82b4 # test ADD
82c0 # test SHIFT and SUB
82ce # test XOR
82d8 # test AND
82e2 # test OR
8320 # test norml
8336 # stack test - push and pop
834b # stack to absolute address test locations
8358 # test stack push/pop
836d # indexed fetch test
837c # OK if equal, run RAM test
8381 # reset stack ptr, enable ints and return
8381 ||### push and pop test (called above) ######
8397 ||# safety catch for push and pop ?

8398 ||#############################################################
1 |# memory RAM test from 100 to 8FF
1 |# uses odd and even bit patterns (aaaa and 5555)
1 | and restores stack at end of test
1 |############################################################|
839a # RAM test start and end addresses
83af # backup contents of test location
83b5 # test odd bits
83c0 # test even bits
83cb # restore contents of test location
83d1 # loop to end
83da # RAM error

83da ||################################################################


8404 # timer value for ?
8409 # Check Engine LP?
841b # tweak flags, set STO on and return
841e # jump if VIP mode flag : disable no start
842d # set STO off flag, set STO output low, and set STO trigger
8432 ||################################################################
8432 |# Diagnostic proc Table A
8432 |# jump Table entry 0x71C8
8432 |# reset lots of stuff and jump back to cycling thru procs
8432 |# switch out of self test to run mode ?
8432 |## function/maps/scalars
8432 |################################################################

8442 # force new stack pointer ?
8446 # Reset Low speed outputs ?
8449 # clear all LSO outputs
8451 # Reset EEC - init Tables and ports
8467 # Counts up after h/w reset
846c # not self test mode
847e # Reset STO
8484 ||###################################################################
8484 |# Handle HSI line 7 data (Ignition Diagnostic Moniter)
1 |###################################################################
848e ||#################################################################
1 |# Tasklist Routine at 2151, routine offset 1C
1 |#################################################################

84b0 ||#############################################################
84b0 |# Tasklist Routine at 2151, routine offset 0
84b0 |# On start bit 4 of R24 is set, but this routine clrs it at end so,
84b0 |# check for and set up calibration console
84b0 |# copy calibration pointers from 2022 to 00F0
84b0 |# if 0D00 is 2A, Enconsole is present
84b0 |# this routine called only at reset
84b0 |# this routine skips console ck the first time thru, then checks every time
84b0 |#############################################################

84b2 # Console status
84ba # console present?
84c2 # add 5D to current IOTime
84ca # increment past zero
84cc # to console locaion ?
84d4 # request interrupt (in 5D IOtimes)
84d7 # Console call
84da # flags for data pointers
84e2 # use these calibration pointers for console
84e8 # h/w switch for console?
84ed # calibration Table pointers
84f1 # enable ints if console enabled
84f5 # copy int vectors here
84fe # set 8 vectors from 2022 to Rf0 -f8
8504 # loop
8507 # exit
850a # console value ?
850f # console signature?
8519 # read/write console ?
8525 # return address
8528 # call here if 1FF6 is a R/W register
852f ||#################################################################
852f |# Tasklist Routine at 2151, routine offset 22
852f |# EVP something
852f |#################################################################

#8538 # 134 - PUTMR - Counts up after h/w reset
#853c # TKYON1 - Min time delay before PIPs are recognized, sec
858b # old filtered EVP
8590 # new value in R34
8593 # filter factor
8598 # new filtered EVP
85a2 ||#############################################################
1 |# Checksum the KAM tables  0x704 - 7AF|#
1 |# Checksum stored at 0x702 (word)  - What is at 7e0 ?
1 |# New checksum is OK if within 1 of saved sum, then updated 
1 |# otherwise tables are cleared (set to 128)
1 |# called only at reset
1 |#############################################################
85a3 # 86 byte tables
85a6 # start new csum
85a8 # Table 1
85b0 # Table 2
85b8 # loop
85bb # current csum
85cd # OK, save new csum
85d2 ||# checksum is bad - Clear tables
85d3 # set cells to 128
85d9 # Table 1
85de # Table 2
85e6 # new csum = (56+56)*128
85ea # save sum

85f4 ||#############################################################
1 |# checksum KAM Table 0x7E4-7EA (7EC is csum) 4 words ?
1 |# clear cells to zero if checksum is off by more than 1
1 |# this routine called only at reset
1 |#############################################################

85fb # add words 7E4-7EA
8605 # old sum (cksum? )
861d # zero cells
8623 # new csum
8628 |||#############################################################
1 |#  end of routines 
1 |#############################################################|
8628 ||#############################################################
1 |# Initialisation lists
1 |#
1 |# Start of each list has 
1 |# Word 0 - top byte of address for list (bottom byte from each item)
1 |# word 1 - next list START (i.e. end of this list +1)
1 |# then has pairs of bytes -
1 |# byte 0 address  (top byte for list + this byte)
1 |# byte 1 data which is OR'ed into address|#
1 |# addresses are cleared by the loop at 203d
1 |# so this is same as assigning them, except can check result this way
1 |#############################################################

862a # high byte address = 0
862c # next list, and end of this one
862e # start of 1st init list
8630 #$a1
8632 #$4f
8634 #$c1
8636 #$9c
8638 #$9d
863a #$ae = 640 =160rpm
863c #$af
863e #$b0
8640 #$b1
8642 #$c2
8644 #$dc
8646 #$d0
8648 #$c6
864a #$46
864c #$47
864e #$9b
8650 # next list start 
865a # Addresses + 0x100 for this list
865c # start of next list 
865e #$100 = 0x5bc0
8660 #$101
8662 #$102
8664 #$103
8666 #$104 = 0xa280
8668 #$105
866a #$108 = 0x640
866c #$109
866e #$116 = 0x4cc0
8670 #$117
8672 #$126
8674 #$127
8676 #$128
8678 #$129
867a #$131
867c #$141
867e #$152
8680 #$153
8682 #$169
8684 #$170
8686 #$171
8688 #$17c
868a #$17d
868c #$1fe
868e # next list
8698 # Addresses + 0x200 for this list
869c #$20b
869e #$20d
86a0 #$211
86a2 #$216
86a4 #$217
86a6 #$226
86a8 #$227
86aa #$22a
86ac #$22b
86ae #$23a
86b0 #$23b
86b2 #$268
86b4 #$269
86b6 #$26a
86b8 #$26b
86ba #$2bb
86bc #$2b9
86be #$2c5
86c0 #$2d4
86c2 #$2e0
86c4 #$2ea
86c6 #$2f4
86c8 #$2fe
86d4 # Addresses + 0x300 for this list
86d8 #$308
86da #$312
86dc #$31c
86de #$322
86e0 #$3c3
86e2 #$3c0
86e4 #$3c1
86e6 # end of all lists

8bff ||######################### Reg 0xF0 points here (8c00)
8c00 # pointer to next block (RF2)
8c02 # default/start value for filtered TP (Throttle)
#8c04 # 8 cyl lookups from 3e5d
8c06 # Heated Windscreen Transition Time Threshold
8c08 # Heated Windscreen Recognition Time Threshold - HWRT
8c0a # Steady State Factor -  Used in MKAY and signature KAY calculations.
8c0c # Shift Indicator Light Timer Enable RPM - SPTRPM
8c0e # Shift Indicator Light RPM -  Shift indicator light is turned on at this rpm regardless of any other condition evaluations. 
8c10 # time before shift light turned on (1/8 sec = 1.5 secs)
8c11 # time before shift light turned off (= 4 secs)

8c11 |## Min PIP periods 4,6,8 cyls - at 6500rpm ? - (ref 3e67)
8c11 |# RPM at which the PIP signal is regarded as unreliable. Set slightly higher than Rev Limit Half Fuel On.
8c12 # 4.615mS - 4 cyl  
8c14 # 3.076mS - 6 cyl
8c16 # 2.306ms - 8 cyl (min pip period, = 6250000/rpm)

8c16 ||# Fuel Forward Lambda Decrement Time
8c24 ||# Time Before Drive - FN394F
8c32 ||# Shift Indicator Light RPM vs ECT - FN651
8c4c ||# Shift Indicator Light RPM vs Load - FN652A
8c74 ||# BAP Transfer
8c8c ||# Startup Fuel Scaler for Time
8c9c ||##### Accel Enrichment Fuel Scaler for Throttle Rate
8ca6 ||##### Accel Enrichment Fuel Scaler for ECT/ACT

8cb0 ||################ Func: EEC Load Scaling
8cb0 |# Table - emission load scaling. Spark, MAF Backflow Scaler for Load 
8cb0 |# Scale: 256.0 Offset: 0.0 Math: 1
8cb0 |# Scale: 32768.0 Offset: 0.0 Math: 1
8cb0 |# X: Raw Load
8cb0 |# Y: Table Row Pointer
8cb0 |#################


8cce ||# Startup Fuel Scaler for ECT/ACT 



8cdc ||#################################
1 |# RPM scaling table
1 |# Spark, Injector Timing, MAF Backflow Scaler for RPM 
1 |# Table 8CDE Engine speed rpm scaler 0-9 for tables
1 |# 4000 RPM up = 9, 3000 RPM = 8, 1500 RPM = 5, 500 RPM = 0
1 |#################################
8cf6 ||########## Table - Spark load scaling
1 |# Emissions & Spark Scaler for Load 

8d12 ||########## Table - fuel load scaling
1 |# Base Fuel Scaler for Load 

#8d2e # Table independent var is RPM
#8d2e ||# ECT AD counts to degrees F (used at 38B8)
#8d2e |##
#8d2e |### O2 bias Table
#8d2e |### O2 bias Table
#8d2e |### O2 bias Table - cross time correction

8d2e ||# Fuel & EGR Scaler for Load.


8d42 ||# Fuel & EGR Scaler for RPM.
8d52 ||# A/C Time Delay vs TP
8d6a ||# Fuel C/L Ramp Rate - FN339
8d76 ||# Fuel C/L Jump to Bias - FN342
8d84 ||# Fuel C/L Jump From Bias - FN344
8d8e ||# Ignition Expected Pips - FN346
8da4 ||# Fuel Accel Enrichment vs BP - FN378
8dae ||############## ECT or ACT A/D to degrees F
8dae |# ECT/ACT Transfer -  Input is a rough hi byte only conversion.

8dc4 # ISC Adder vs ECT - FN825A
8dd4 # ISC Adder vs ACT - FN825B






8de0 ||#############################################################
8de0 |# Func: MAF Transfer function (volts => Kg per hr)
8de0 |# Scale: 4.0 Offset: 0.0 Math: 1
8de0 |# Scale: 4096.0 Offset: 0.0 Math: 1
8de0 |# X: MAF Voltage
8de0 |# Y: Mass Flow Kg/hr MAF Transfer - FN036
8de0 |#############################################################

8e59 ||################################################### RF2 points here (8e5a)|
8e5a # next register value (RF4)
8e6a # RPM IAC Hysterysis - "
8e9c # MFA MPH Min -  Minimum speed to remain in MFA mode.
8e9d # MFA MPH Hysterysis - VSMPGH
8e9e # VSS Error Deadband -  No pulses required at this speed
8e9f # SCCS Low Battery - LOWBAT
8ea0 # VSS Frequency - VSCFRQ
8ea1 # MPH Sensor Present -  0 = no sensor, 1 = mph sensor, 2 = mph sensor and cruise control
8ea2 # ISC Dashpot Min MPH - DASMPH
8ea3 # ISC Dashpot Hysteresis For MPH - DASMHYST
8ea4 # ISC Min Daspot Clip For Declutch - DASMIN
8ea6 # Managed Failure Mode Hysteresis - MFMHYS


#8ea6 # bad MAF retry interval

8eaa # VIP Spark
8eb2 # HEGO Test Min RPM
8eb6 # VTAP1 - VTAP1
8eb8 # VTAP2 - VTAP2
8eba # VTAP3 - VTAP3
8ebc # VTAP4 - VTAP4
8ebe # VTAP5 - VTAP5
8ec2 # ACT min  (checked in 38A1 and 7XXX)
8ec4 # ACT max
8ec8 # TPS Max - TAPMAX
8eca # TPS Min - TAPMIN
8ed0 # VIDMST 
8ed8 # ECT min

8ed8 # ECT range low
8ed8 ||################################################### R78 points here (8eda - why not use Rf2 ?)
8eda # ECT range high
8eda # ECT max 
8ede # Goose C
8ee0 # Goose RPM
8ee4 # Goose TP - Min throttle voltage delta for goose.
8eec # VBISW
8ef2 # VCBPCT
8ef8 # VCBDLY
8efe # VEGOBP
8eff # VIP EGO Switch Required
8f00 # VIP EGO Time
8f01 # VPTCNT -
8f0a # EVP min
8f0c # EVP max




#8f0a # ACT min
#8f0c # ACT max
8f20 # Error 33 Threshold -  EGR did not flow
8f26 # Error 54 Threshold -  ACT high
8f2c # Error 87 Threshold -  Fuel pump circuit fault
8f2d # Error 91 Threshold -  Lack of left HEGO switching.
8f32 # Error 22 Up Count -  BAP sensor out of range.
8f38 # Error 35 Up Count -  EVP input high
8f3e # Error 61 Up Count -  ECT low
8f43 # Error 91 Up Count -  Lack of left HEGO switching.
8f44 # Error 95 Up Count -  Fuel pump open circuit

8f58 # warm up /Normal temp thrshhold ?
8f68 # max MAF voltage (mass air max) 
8f6a # min MAF voltage (mass air min)
8f6c # Max RPM (4500) for MAF Max Voltage Test 

8f72 # MIL Delay Time. delay before turning light on after fault detected.
8f76 # MIL Freq.  The light will flash at frequency =  1 / (2 * MILTM1).

8f7a |# next limits are the min that Open Circuit Check needs to see when line toggles, else circuit is faulty
8f7c # AM1 Open Circuit Check.
8f7e # AM2 Open Circuit Check.
8f80 # High Speed Fan Open Circuit Check.
8f82 # EVR Open Circuit Check.
8f84 # Canister Purge Open Circuit Check.
8f86 # Fuel Pump Open Circuit Check.
8f88 # Low Speed Fan Open Circuit Check.
8f8a # SCVNT Open Circuit Check.

8fa2 # Max Idle RPM for EPT Test

8fd5 ||############## RF4 points here (8fd6) #####################################
8fdd # Allow MFA fuel economy mode strategy if set.
8fde # Enable Special Injector Timing In Neutral

8fdf # Injector Timing Value in Neutral
8fe0 # Maximum ECT at cold start to use open loop fuel multiplier.


8fe1 # O/L Fuel Startup Neutral Multiplier
8fe2 # O/L Fuel Multiplier Time Delay
8fe3 # Fuel Shut Off Deceleration Time Delay
8fe4 # MFA State Min RPM
8fe6 # MFA State Max RPM
8fe8 # MFA State Constant RPM Entry Condition
8fea # MFA State Max Load Condition
8fec # MFA State EGO Switch Requirement
8fee # MFA State Max RPM Hysterysis
8ff0 # MFA State Min RPM Hysterysis
8ff2 # MFA State Min Load
8ff4 # MFA State Max Load Condition Hysterysis
8ff6 # MFA Min BP for Fuel Economy Mode
8ff7 # MFA Min BP for Fuel Economy Hysterysis
8ff8 # MFA Ramp Increment
8ffa # Injection Timing Pulse Edge -  0 = Use rising edge, 1 = Use falling  edge
8ffc # Injector delay timing multiplier
8ffe # injector delay global
9002 # global accel pump multiplier

9006 # Fuel Accel Min TP Delta -  Conversion wrong.
9008 # Delta Load for Intake Manifold Filling - AEACLD
900c # Fuel Transient Comp Multiplier
900e # Fuel Transient Min RPM Idle - TFSMN
9011 # Fuel Equilib Intake Surf Multiplier - MTEISF
9012 # Fuel Time Constant Multiplier - MTEFTC
9013 # Fuel Transient Compenstation - TFCISW
9014 # Fuel Decel Multuplier - MEFTRA




901a # Engine displacement 1B4A = 6986 (unit = 0.0430981 Cubic Inches)

901c # low injector slope (unit = 0.00171662 lbs/hr)
901e # high injector slope (unit = 0.00171662 lbs/hr)
9022 # ISC Gain For Underspeed in Neutral. 
9024 # ISC Gain For Overspeed in Neutral. 
9026 # ISC Gain For Underspeed in Drive. 
9028 # ISC Gain For Overspeed in Drive. 
902a #  and gain modulator, used as input in IPSIBR calculation.
902c #  and gain modulator, used as input in IPSIBR calculation.
902e # Throttle Body Air Flow
9030 # ISC Min Airflow 
#9032 # spark adder closed throttle
9032 # ISC Gain Associated With The Desired DASPOT Airflow
9034 # ISC Offset term applied to the DASPOT calculation
9036 # ISC TP Hysterysis
9038 # ISC RPM Control Adder -  Added to desired idle rpm as part of evaluating if ISC C/L rpm control is allowed
903a # ISC RPM Deviation Allowed Over ISC Time
903c # ISC Min Speed To Enter C/L RPM Control
903e # ISC RPM Deadband
9040 # ISC Throttle Position Adder
9042 # Airmass Filter Sample Rate
9043 # ISC Time Interval The Change In RPM Is Evaluated
#9044 # LOWLOD - LOWLOD
9045 # A/C Load Adder

#9046 # UPDISC - UPDISC
9047 # ISC KAM Update Rate
9048 # Neutral idle open loop delay (time in closed loop control before going open loop, secs)
9049 # drive idle (rpm in drive)
904a # Base Idle Speed (target) in Neutral (672rpm) before additions
904c # Base Idle Speed (target) in Drive (672rpm) before additions
# 904c |# Air flow from N and TP when MAF fails


904e # Buzz RPM -  Additional rpm added at start up to idle rpm to clear engine.
9050 # Idle RPM Adder For A/C
9052 # Idle GPAS Clip Limit
9058 # ISC Air Neutral To Drive
905a # ISC Air Drive To Neutral
9066 # ISC Startup Kickdown Time
9067 # Buzz RPM Time -  Duration that Buzz rpm is added to base target idle rpm at startup.
9068 # ISC Time Before N/D or D/N Switch Registers
9068 ||# MFA Fuel Table -  Possibly the fuel table used in closed loop

90b1 ||# MFA Altitude Multiplier vs BP - FN311


90c5 # TP Scaler for MAF Failure 
90de ||# Failed Mass Air Flow Sensor
1 |#  -  Substitution air mass value used if both the MAF and TP sensors have failed.
90fe ||# Failed Mass Air Flow Sensor (TP OK)
1 |# -  Substitution air mass value used if the MAF sensor has failed and the TP sensor is ok.





913e ||# Injector Timing Scaler for Load 

915c ||# Injector Timing - FN1315
1 |# 10 Cols: Speed [RPM] 500,700,900,1100,1300,1500,2000,2500,3000,4000
1 |#  8 Rows: Load []   .05,.15,.23,.30,.40,.50,.60,.75

1 |#  - injector timing (global injector delay in crank degrees)  

91a6 ||# Injector Output Port  (Links injector to fuel pulsewidth, 0 = use Fuel Pulsewidth)
91b0 ||# Injector Firing Order - FN1329

91b9 ||# Func: Accelerator Enrichment Multiplier vs TPS ( accelerator enrichment vs TP voltage) - FN331B
91c9 || # Accel Enrichment Fuel (lbs/min)- FN1303
1 |# 7 Rows: ECT [DegF] -30,0,30,50,100,150,200
1 |# 8 Cols: Throttle Rate [Deg/sec] 15,33,48,63,77,90,110,125

9203 ||# Max Air Charge vs RPM -  The maximum air charge based upon rpm.
9228 ||# Table - injector breakpoint vs battery voltage ( voltage, lbs/rev)

9248 ||# ISC Startup Scaler for ECT.
9254 ||# ISC Transfer -  Alter if air flow characteristics through the ISC valve have changed.

9282 ||# ISC Adder vs RPM - FN810
9296 ||# ISC Dutycycle Multiplier vs Load - FN820B
92ae ||# ISC Gain vs RPM Error - FN824
92be ||# ISC Startup RPM vs ECT - FN826A
92cc ||# Spark Idle Multiplie vs Dashpot - FN839
92d4 ||# ISC Error Spark Multiplier Drive - FN841D
92ee ||# ISC Error Spark Multiplier Neutral - FN841N
930a ||# ISC C/L RPM Correction Rate - FN860


9326 ||# Table - dashpot decrement rate (dashpot decrement step at given flow(Kg/Hr(flow),Kg/Hr(Step))- FN879
1 |# X: RPM  # Y: Dashpot Clip [lb/min]



9342 ||# Max Dashpot Pre Position Clip (maximum dashpot airflow by rpm in Kg/Hr)- FN882
9356 ||# ISC duty cycle during crank (keyed off ect at start) - FN884
9364 ||# Desired Airflow Multiplier -  Multiplier of desired idle airflow to adjust for ECT and time in run mode.
1 |# Airflow multiplier vs. ECT and ATMR3
9389 ||# Desired idle airflow in drive (Kg/Hr)
939a ||# Desired idle airflow in neutral

93a6 ||################################################### Reg 0xF6 points here (93a8)|

93aa # Air Charge Manifold filling model slow filter constant
93ac # Air Charge Manifold filling model fast filter constant
93ae # Air Charge Fraction to select slow transient vs fast

93bb # Brake Input H/w Present - Set if brake pedal switch present.
93bc # Power Steering Pressure Switch Present

93e1 # Electronically Controlled Accessory Drive Present - ECADHP

93e4 # H/w Present (Electronic Control Assembly ? )
93ef # Canister Purge O/L Enable - PURGSW
93f6 # Purge Hot Startup Delay -
93fd # A/C Min Time Before Fan Is On - ACWDLY

9400 # A/C Clutch Engage Delay
9402 # A/C Clutch Engage Max Temp - CTAC
9403 # A/C Clutch Engage Max Temp Hysterysis - CTACH



940e # Set if Adjustable Dampers Present

9410 # Min Air Charge for Adjustable Damper -  The minimum air charge to indicate hard acceleration.
9412 # Min TP for Adjustable Damper -  The minimum voltage above closed throttle to indicate hard acceleration.


9414 # coolant fan low speed temp (220DegF)
9415 # High Speed Fan Temperature Hysteresis - HSFHYS
9416 # Low Speed Fan Temperature Hysterysis - LSFHYS
9417 # Low Speed Fan MPH - LSFVS
9418 # Low Speed Fan MPH Hysterysis - LSFVSH
9419 # Low Speed Fan Min Time Before High Speed - EDFTM
941a # A/C Min Time Off Before Turning Fan Off - ACMNFT


941c # Low Speed Fan Present/Enable
941d # High Speed Fan Present/Enable
941e # fan high speed temp 1(234DegF)
941e # ect1 fan on 
941f # ect2 fan on fan high speed temp 2(242DegF)

9420 # Fan High Speed Min RPM - HSFRPM
9421 # Fan High Speed Min MPH - HSFVS
9422 # Fan High Speed Min Load - HSFLOD
9424 # Default ISC Dutycycle -  Default ISC dutycyle when both TPS and MAF failed flags are set
9426 # Default Desired Idle RPM -  Default desired idle rpm when both TPS and MAF failed flags are set






9428 # Default ECT value?
942f ||################################################### Reg 0xF8 points here (9430)
9432 # closed throttle spark adder
9434 # part throttle  spark adder (Deg BTDC)

943a # spark adder WOT  ( Deg BTDC)
943c # Spark Limit Min - SPLCLP
943d # Spark Limit Max - SPUCLP
943e # PT Spark Multiplier - "
943f # Spark/Fuel Lug Time Limit - LUGTIM

9440 # Lugging Timer Reset Switch -  If set then Lugging Timer is cleared before Lugging Timer Up Flag is cleared and Lugging Timer Down Flag is set.

9442 # Spark Adder Neutral - NSADD
9444 # Spark Max PIP RPM - SPKSWL
9446 # Spark Min PIP RPM - SPKSWH
9448 # RPM to MPH Ratio for First Gear - TTNOV






9449 # High Data Rate Electronic Spark H/W present 
944a # Computer Controlled Dwell Present if Set. (else dwell is TFI controlled)
9450 #  # Slope for linear equation describing PIP period and percent of PIP period for acceleration, (Units = Beta/second)
9452 # Max PIP acceleration in percent of PIP period, Beta
9454 # Spark Advance Limit PIP%

9456 # max low speed dwell (off time in ms )
9458 # max high speed dwell  (off time in ms )
945A # DWLWF - Weighting factor determining effect of ECT and ACT on Base Dwell, unitless.
945c # Switch point for change of max permitted DWELL,sec
945e # Spark Tip In TP - KACRAT
9460 # Spark Retard For Knock Sensor - RETLIM
9461 # Spark Knock Advance Limit - ADVLIM
9462 # Tip in retard (max tip in spark retard in Deg BTDC)
9463 # Spark Tip In Advance Per PIP - TIPINC
9468 # Spark Knock Min RPM -  The minimum rpm for the knock strategy to be enabled.
946c # Spark Knock Min ECT - ECTNOK
946e # Spark Tip In Max RPM - NTIP
9478 # Spark Tip In TP Threshold - KNKCYL
947a # Knock Input H/w Present



9487 ||# PT Spark Scaler for ECT 
94a8 ||# Closed Throttle Spark Adder For RPM - FN111
94bc ||# CT Spark Adder For ECT - FN112
1 |# Generates cold temperature spark advance. Input = ECT, deg F and Output = spark adder.


94cc ||# Closed Throttle Spark Adder For BP - FN115
94d8 ||# LOM spark Strategy - (load managemnt at WOT ?) Input: RPM and Output: load.

94ea ||# Part Throttle Spark Advance vs ACT - FN1261
94f6 ||# LOMALT Multiplier vs BP - FN129A
9502 ||# WOT Spark Advance vs RPM - FN1311

9524 ||# WOT Spark Advance vs BP - FN1331 (Hg , Degrees)

9530 ||# WOT Spark Advance vs ECT - FN134
953e ||# WOT Spark Advance vs ACT - FN135
954c ||# Idle Spark Subtractor - FN180
9558 ||# ISC Neutral RPM Adder - FN880
9566 ||# Startup Kicker Time Delay - FN400

9572 ||# Sea Level (Base) Spark Table (Deg BTDC = load vs RPM)
1 |# - The ecu interpolates between the Sea Level and Altitude spark tables during normal part throttle
1 |# operation.  Set to the same as the Sea Level Spark table.
1 |# 10 Cols: Speed [RPM] 500,700,900,1100,1300,1500,2000,2500,3000,4000
1 |#  8 Rows: Load []   .05,.15,.23,.30,.40,.50,.60,.75

95c3 || # Altitude Spark Table
1 |# - The ecu interpolates between the Sea Level and Altitude spark tables during normal part throttle
1 |# operation.  Set to the same as the Sea Level Spark table.
1 |# 10 Cols: Speed [RPM] 500,700,900,1100,1300,1500,2000,2500,3000,4000
1 |#  8 Rows: Load []   .05,.15,.23,.30,.40,.50,.60,.75

1 |# 95C4 @95C4 

960a ||# sea level (Base) lom spark Table
1 |# - A more aggressive spark advance used during acceleration.
1 |# 10 Cols: Speed [RPM] 500,700,900,1100,1300,1500,2000,2500,3000,4000
1 |#  8 Rows: Load []   .05,.15,.23,.30,.40,.50,.60,.75

#1 |# 9614 @9614 altitude lom spark (load vs RPM)


965a ||# Part Thottle Spark Adder for EGR






96aa ||# PT Spark Adder for RPM
1 |# Table of spark adders from engine speed N and LOAD. (4 x 3) 
1 |# X input is RPM  Y -input is LOAD
96bc ||# Torque Reduction Table - FN1119
970a ||# Part Throttle spark modifier (adder). (ECT,LOAD) 
# 1 |# 9749 @9749 min high speed dwell

9741 ||# Min Low Speed Dwell - FN160A
1 |#   = Dwell/Coil off time vs battery voltage 
975c ||# Min High Speed Dwell - FN160B1 
1 |#   = Dwell/Coil off time vs battery voltage 
# |# 9761 @9761 min low speed dwell
9774 ||# Spark Knock Retard Increment vs RPM - FN143A
9782 ||# Spark Knock Threshold Time - Output is fraction of PIP period.
9790 ||# Spark Knock Threshold Position.

979a ||# Spark Advance Rate vs RPM

1 |#  -  Limits the advance rate to avoid pinging, increase to improve throttle response.
97a6 ||#################### RFA points here (97a8)|

97aa # PT Threshold -  Added to closed throttle value.
97ac # WOT Threshold Hysteresis - HYST2
97ae # PT Threshold Hysteresis - 

97b0 # WOT breakpoint. TPS voltage - 1
 
97b2 # 254 degrees?

97b3 # Fuel Lugging Mode O/L Min ECT - LDEH
97b5 # Min Time for Lugging O/L -  The minimum time in lugging mode required for the Lugging O/L Flag to be set.
97b6 # Fuel Lugging Mode O/L Min Load - LDMH
97b8 # Fuel Lugging Mode O/L Min Load Hysteresis - LDMHH
97ba # Global Open Loop Fuel Multiplier - OLMCL




97bc # RPM classifications



97cc # EGR PT Adder - KPEI
97cd # egr multiplier (byte)
97ce # EGR Dutycycle for Valve to Open - DCOFF
97d0 # EGR Deadband Value for EVP - EGRDED

97d2 # Calibration time delay to ramp in EGR (sec)
97d4 # EPT Transfer - XFREPT

97d9 # EGR type (0=sonic, 1=PFE, 2=none)
97e2 # Dashpot decrement Filter factor ?
97e6 ||## Filter factors for the various filter & rollav subroutine calls, mapped by encoded addresses
1 |# number range d040 - d060,  maps to 97e8 - 9808|

97e8 # EVP output   (d040)
97ea # BAP 1
97ec # ECT 
97ee # EGR 1    (d046)
97f0 # EVP    (d048)
97f2 # AM   (airflow)
97f4 # RPM 1    (d04c)
97f6 # TP 1   (Throttle) (d04e)
97f8 # VBAT     (d050)
97fa # MPH 1    (d052)
97fc # LOAD     (d054)
97fe # BAP 2    (d056)
9800 # Injdly output  (d058)
9802 # MPH 2    (d05a)
9804 # RPM 2    (d05c)
9806 # TP 2   (throttle) (d05e)
9808 # EGR Filter   (d060)








980c ||# High Speed Spark Retard -  Deducted from spark calculations.Table 980D High Speed Spark retard, mph.

981a ||# Fuel High Speed Multiplier - FN396A
9829 ||# Func - sea level lugging Open Loop multiplier (vs rpm) - FN308
9842 ||# Func - Altitude Lugging Open Loop Fuel Multiplier (RPM) - FN309

985e ||# Func - Fuel Crank PulseWidth Multiplier vs Time - FN306
9876 ||# Cranking Fuel PulseWidth vs ECT - FN348

989a ||# Fuel Under RPM Pulsewidth vs ECT - FN387
98ae ||# Exhaust Back Pressure Correction
1 |# -  Barometric pressure correction for exhaust back pressure calculation
98b8 ||# EGR Valve Upstream Pressure
1 |#  -  Upstream pressure as a function of input(AM * KAMREF) output = H2O
98de ||# EGR Multipiler for ECT - FN211
98ec ||# Spark vs BP Sealevel - FN212A
98f6 ||# EGR Multipiler for BAP - FN217A

9902 ||# EGR Mass Flow vs EGR Valve Position - FN219A
9918 ||# EGR Multipiler for ACT - FN220
9924 ||# EGR Position vs Desired Flow - FN221A
993e ||# EGR Duty Cycle Adder vs EGR Error
995a ||# EGR mass flow as a function of DELPR -  is this EGR Transfer Function?
9982 ||# EGR Desired Drop vs Flow - FN247

99aa ||# Table - Sea level EGR table - FN908A
1 |# X = scaled RPM Y = scaled load. Output = Percent EGR
99f4 ||# Table - Altitude EGR table - FN908B
1 |# X = scaled RPM Y = scaled load. Output = Percent EGR

9a44 ||# MFA EGR Multiplier -  Multiplier used for ramping in managed fuel air tables.
9a56 ||# Canister Purge Duty Cycle Multiplier - FN600
9a64 ||# Canister Purge Duty Cycle Multiplier - FN602
9a70 ||# Canister Purge Duty Cycle vs Airmass -  Conversion to be determined.








9a7c ||################################################### Reg 0xFC points here (9a7e)|
9a80  Percent Load Switch - Set for load% = load, clear for load% = load/peak load

9a82 # Half fuel on
9a84 # Half fuel off
9a86 # Speed Limiter A On
9a87 # Speed Limiter A Off
9a88 # Speed Limiter B On
9a89 # Speed Limiter B Off
9a8c # ECT limit LO
9a8d # ECT limit Hi
9a92 # throttle position to force open loop (TPS voltage - 1)
9a94 # no fuel rpm (max rpm)
9a95 # rev limit
9a98 # Min no of HEGO switches required for WARM_EGO_FLAG to be set.
9a9a # min load for open loop
9a9c # min load for closed loop
9a9e # Upper LOAD Limit for Closed Loop Fuel Control,unitless

9aa0 # Time at high load to force Open Loop (secs)
9aa2 # Desired A/F Ratio Max -  is clipped to this limit = 1.30
9aa4 # Desired A/F Ratio Min -  is clipped to this limit = 0.75

9aaf  Injectors Per Output Port -  No of injectors fired by each port.
9ab0 # no of cyls
9ab1 # Injector Fire Method -  1 = sequential, 2 = simultaneous
9ab6 # Max RPM for Idle -  max rpm to allow Idle Flag to be set when Closed Throttle flag set.
9ABD # NITMR3 - ATMR1 timed delay to enter Closed Loop fuel after Hot start, seconds.
9ac3 # min ect for decel fuel shutoff (Deg F - 140)
9ac4 # Fuel Shut Off Max Load.
9ac6 # Fuel Shut Off Max Load Hysterysis.  
9ac8 # Min RPM for Decel Fuel Shut Off.
9aca # Min RPM for Decel Fuel Shut Off Hysterysis.
9acc # Fuel Shut Off Neutral Max Time - DSTM1
9acd # Fuel Shut Off Shift Max Time - DSTM2
9acf # Decel Fuel Shut Off Time Extended - CTEDSO
9ad0 # Fuel Shut Off Min Time at PT - DSFTM
9ad1 # Fuel Shut Off Min PIP To Remain O/L - PIPNUM
9ad4 # Fuel Shut Off Shift Min RPM - SHFRPM
# 9ad4 # Fuel Shut Off Time To Enable - CTDFSO
9ad6 # Fuel Shut Off Shift Min RPM Hysterysis - SHFHYS
9ada # Fuel Shut Off Deceleration Min MPH - DFSVS
9adb # Fuel Shut Off Deceleration Min MPH Hysterysis - DFSVSH
9ae1 # Fuel Shut Off PT Enable -  1 = PT decel fuel shut off, 0 = CT decel fuel shut off.
9ae2 # Adaptive ECT Min - AFECT1
9ae4 # Min ACT for Adaptive Control - AFACT1
9ae5 # Max ACT for Adaptive Control - AFACT2
9ae6 # Adaptive Delay Time - ADAPTM
9aee # Adaptive Control Min - MINADP
9aef # Adaptive Control Max - MAXADP
9af2 # HEGO Rich Correction - LMBJMP
9af8 # Adaptive Max Fast Cycles - KWUCNT
9afa # Adaptive Idle Low RPM - HCAMSW
9afb ||#  ISC Time Scaler for Time 
9b0c ||# Table - Emission Table RPM scaling
9b2c ||# Func - Injector Offset vs Battery Voltage  (Reduce for larger injectors).
9b44 ||# Func - Open Loop Fuel Multiplier vs ACT - FN300
9b52 ||# Func - Closed Throttle, Open Loop Fuel Multiplier vs ACT - FN301
9b68 ||# Func - Fuel Idle Neutral Multiplier - FN301N
9b7c ||# Func - WOT Fuel Multiplier vs RPM - FN303


9b9c ||# Table - MAF Backflow Correction
1 |# Multiplier of raw air mass to compensate for backflow in the MAF sensor.

9be6 ||# Table - Base Fuel  (A/F ratio load vs ECT)
1 |#  A/F ratio - load vs ECT,  Used when ECT is low and WARM_HEGO_FLAG = 0
1 |# 10 Cols: ECT [DegF]  -30,0,30,60,90,120,150,180,210,240
1 |#  8 Rows: Load []   .05, .15, .30, .40, .55, .70, .80, .90


9c36 ||# Table - Startup Fuel -  Subtracted from Base Fuel table for warm up enrichment.  [A/F Ratio]
1 ||# fuel base (correct address? )
1 |# 10 Cols: ECT [DegF]  -30,0,30,60,90,120,150,180,210,240
1 |#  8 Rows: Time [Sec]  0,3,5,10,15,25,35,45

#9c86 ||# fuel startup
#9c86 ||# Table 9C90 fuel time scaling
9c86 ||# Peak Load at Sea Level vs RPM
1 |# Adjust if engine is substantially more efficient than stock and Percent Load Switch is not set.
9ca8 || # Load Limit Open Loop vs ECT - FN320A
9cc4 || # Fuel Drive Engagement vs ECT - FN371
9ce4 || # Fuel Equilibrium Intake Surface - FN1321

#9d32 |# Scale: 128.0 Offset: 0.0 Math: 1
#9d32 |# Scale: 4.0 Offset: 0.0 Math: 1
#9d32 |# X: RPM
#9d32 |# Y: Open Loop Fuel Multiplier

9d36 |# Fuel Equilibrium Time Constant - FN1322
1 |# 10 Cols  8 Rows

#  2e ||# fuel ect scaling

9d7e ||# Table - Exhaust Pulse Delay
1 |# The time, in revs per second, from when a fuel change is made until the HEGO sensor indicates this change. 
1 |# Result is used to calculate the transport delay in PIPs and seconds.


9da4 ||# Table - HEGO amplitude

9dc4 ||# Table - HEGO bias
1 |# Allows the averaged A/F ratio to be shifted slightly rich or lean to adjust emissions.
1 |# A rich mixture will lower NOx but raise CO, a lean mixture will do the opposite.



9de4 ||# Func: Open Loop Fuel Multiplier vs RPM (FN374)

9dfc ||Table - Adaptive Control Update Rate - FN1325    (for learning cells ?)
9e58 ||################## Reg 0xFE points here (9e5a) ############################|
9e5a ||## TRLoad - Transmission Type -  0 = manual, no clutch or gear switches, forced neutral state
1 |# 1 = manual, no clutch or gear switches  2 = manual, one clutch or gear switch 3 = manual, both clutch and gear switches
1 |# 4 = non electronic auto, neutral drive switch  5 = non electronic auto, neutral pressure switch, 6 = electronic auto , PRNDL sensor
9e5c ||## Tstrat - Transmission Strategy -  Selects which transmission strategy to use;
1 |# 0 = no transmission control  1 = SIL (shift indicator light) 2 = A4LD with 3/4 shift control and convertor clutch control 
1 |# 3 = AXOD  4 = C6E4 (E4OD)  5 = A4LD-E  6 = FAX-4  7 = AOD-4 (AOD-I)  8 = 4EAT  9 = CD4E
9e5e # Hot Start Min ECT -  The minimum ECT for a hot start condition to be recognised.
9e5f # Cold Start Max ECT -  The maximum ECT for a cold start condition to be recognised.


9e61 # PIPs per Cycle -  Number of PIPs per dizzy rev. (2 engine revs)
9e64 # Lambda Reset Switch -  Set if desired A/F ratio is to be clipped to be no leaner than 14.64 when transiting from O/L to C/L.


9e65 # Thermactor H/W Present (values 1,2,3 checked...)
9e66 # CID Sensor Present
9e67 # CID Sensor Type - 1 = Variable Reluctance 0 = Hall Effect sensor.
9e67 ||# Signature PIP duty cycle, 8 cyls/<35% = .20, 6 cyls/< 30% = .24, 4 cyls/30% =  .29, Not present = 0.99
9e70 # no of HEGOs

9e74 # MAF Min Airmass Clip

abcd #
feba
b048 # ? - neutral idle open loop delay (time in seconds under closed loop control before going open loop)
bab6 # - max rpm closed throttle idle
jsa
Posts: 402
Joined: 2021 Feb 16, 15:46
Location: Australia
Vehicle Information: 95 Escort RS Cosworth
2.0 YBP
CARD / QUIK / COSY / ANTI
GHAJ0
SMD-190 / SMD-490 EEC-IV

Binary Editor
ForDiag

Re: 1DGA disassembly

Unread post by jsa »

Jamie from oz
Posts: 54
Joined: 2022 Jul 08, 04:54
Location: South Australia
Vehicle Information: 1995 ford falcon ute 5.0 windsor efi

Re: 1DGA disassembly

Unread post by Jamie from oz »

Thanks John for the link also.

I don't have zip file program as I'm a cheap arse and don't want to pay for one hahaha.

Jamie.
jsa
Posts: 402
Joined: 2021 Feb 16, 15:46
Location: Australia
Vehicle Information: 95 Escort RS Cosworth
2.0 YBP
CARD / QUIK / COSY / ANTI
GHAJ0
SMD-190 / SMD-490 EEC-IV

Binary Editor
ForDiag

Re: 1DGA disassembly

Unread post by jsa »

Get 7Zip, free & works perfectly.

Tried conversion on that XDF, but it looks like users are being inconsistent with title and description fields. I'll dig a bit deeper.
Post Reply