My pleasure!
The waffle I have in LST.
Code: Select all
Sub444e_6Args_To_R1A:
444e: 2d,80 scall 41d0 Sub41D0_xArgs_To_R1A (
4450: 06 #arg 1 6 );
4451: 71,fd,2c an2b R2c,fd CxxxFlgClrSet = 0; # B1 Clear 0
4454: 20,1e sjmp 4474 goto 4474;
#
##################################################################################
#
# Call from L2F0F Sub2ea1
# Call from L2F19 Sub2ea1
# Call from L2F2B Sub2ea1
# Call from L2F54 Sub2ea1
# Call from L3A59 Sub39f4
# Call from L3A6A Sub39f4
# Call from L3A90 Sub39f4
# Call from L3A99 Sub39f4
Sub4456_FltCdHndlr:
4456: f8 clc CY = 0; # Return to Callers address
4457: 20,01 sjmp 445a goto 445a;
#
##################################################################################
# Tests process values against limits. Set flags when outside limits.
# Call from L2ED6 Sub2ea1
# Call from L2EDF Sub2ea1
# Call from L2EE8 Sub2ea1
# Call from L2EF1 Sub2ea1
# Call from L2F60 Sub2ea1
# Call from L2F69 Sub2ea1
# Call from L39D9 Sub354c
# Call from L39E4 Sub354c
Sub4459_FltCdHndlr:
4459: f9 stc CY = 1; # Return to Sub40FA_2Arg_R14_R17
# Continue Carry Set 1
# SJump from L4457 Carry Cleared 0 Sub4456_FltCdHndlr
445a: cc,18 pop R18 R18 = pop(); # Get callers next line from stack
445c: b2,19,1a ldb R1a,[R18++] R1a = [R18++]; # Get yArg1A from address++
445f: b2,19,1b ldb R1b,[R18++] R1b = [R18++]; # Get yArg1B from address++
4462: b2,19,1c ldb R1c,[R18++] R1c = [R18++]; # Get yArg1C from address++
4465: b2,19,1d ldb R1d,[R18++] R1d = [R18++]; # Get yArg1D from address++
4468: d3,05 jnc 446f if (CY = 1) { # L2F12 CY Clear 0 on entry L4456
# Cont CY=1 Take
446a: c9,fa,40 push 40fa push(Sub40FA_2Arg_R14_R17); # Push Sub40FA_2Arg_R14_R17 return address to stack
446d: 20,02 sjmp 4471 goto 4471; } # goto L4471 CY=1 Sub4459_FltCdHndlr sequence
# JNC from L4468 CY = 0 Sub4456_FltCdHndlr sequence, Sub4459_FltCdHndlr
446f: c8,18 push R18 push(R18); # Push callers retrun address to stack
# Cont from L446F CY=0 Sub4456_FltCdHndlr sequence
# SJump from L446D CY=1 Sub4459_FltCdHndlr sequence
4471: 91,02,2c orb R2c,2 CxxxFlgClrSet = 1; # B1 Set 1
# Cont from L4471 CY=0 Sub4456_FltCdHndlr sequence
# Cont from L4471 CY=1 Sub4459_FltCdHndlr sequence
# SJump from L4454 after Sub444e_6Args_To_R1A with CxxxFlgClrSet=1
4474: ad,1a,3e ldzbw R3e,1a wR3e = 1a; # wR3E immediate value for target address wArg1A
4477: 28,26 scall 449f Sub449f_2yArgAddr_Decode ();
4479: ad,1c,3e ldzbw R3e,1c wR3e = 1c; # wR3E immediate value for target address wArg1C
447c: 28,21 scall 449f Sub449f_2yArgAddr_Decode (); #
447e: a2,1a,42 ldw R42,[R1a] R42 = [R1a]; # x053C MAPTIM_Dt
4481: 8a,1c,42 cmpw R42,[R1c] # x053C [F138]
4484: d1,0b jleu 4491 if (R42 > [R1c]) { # Compares present value
# with limit value, order
# depends on arg order so
# sub can process Hi and Lo limits
# Cont process value outside of limit, Set Fault Code
4486: 39,2c,0b jb B1,R2c,4494 if (CxxxFlgClrSet = 1) return;
# Cont CxxxFlgClrSet=0 Sub444e_6Args_To_R1A Sequence
4489: a0,1e,1a ldw R1a,R1e R1a = R1e; # wR1A=R1E Arg 5 & 6 Fault Code
448c: 91,02,2c orb R2c,2 CxxxFlgClrSet = 1; # B1 Set 1
448f: 22,99 sjmp 472a goto Sub472a_Str_Flt_Cd; }
# JLEU from L4484 process value within limits, No Fault Code Sub4459_FltCdHndlr
4491: 71,fd,2c an2b R2c,fd CxxxFlgClrSet = 0; } # B1 Clear 0
# JB from L4486 CxxxFlgClrSet=1 x Sequence Sub4459_FltCdHndlr
4494: f0 ret return; # Return to pushed Sub40FA_2Arg_R14_R17 CY=1 Sub4459 sequence
# Return to Caller for Sub444e_6Args_To_R1A
# Return to Caller for Sub4456_FltCdHndlr
Code: Select all
4840: ef,0b,fc call 444e Sub444e_6Args_To_R1A (
4843: 32,00 #arg 1 32, # [15A] DSDRPM
4845: 5e,f0 #arg 2 S.ISubND_400rpm, # [DBB2]
4847: 12,04 #arg 3 412 ); # KOER Test idle RPM to high
Code: Select all
2f0f: ef,44,15 call 4456 Sub4456_FltCdHndlr (
2f12: 3c,05 #arg 1 MAPTIM_Dt, # [053C]
2f14: 38,f1 #arg 2 S.VBPDL2_4320Tk ); # [DC8C]
Exploding Args, piste de résistance.
Code: Select all
2ee8: ef,6e,15 call 4459 Sub4459_FltCdHndlr (
2eeb: 2c,f0 #arg 1 S.ACTMIN_0.2V, # [DB80]
2eed: 0e,01 #arg 2 iACT, # [010E]
2eef: 00 #arg 3 C112FIL_iACT_VLo, # [17C] C112FIL_iACT_VLo
# [DCFE] S.C112LVL_200counts
# [DD4F] S.C112UP_50counts
# B0_758 KAM C Fault Code Flag
# 763 KAM C
2ef0: 00 #arg 4 0 ); # B0_1D4 RAM C Fault Code Flag
2ef1: ef,65,15 call 4459 Sub4459_FltCdHndlr (
2ef4: 0e,01 #arg 1 iACT, # [010E]
2ef6: 2e,f0 #arg 2 S.ACTMAX_4.675V, # [DB82]
2ef8: 01 #arg 3 C113FIL_iACT_VHi, # [17D] C113FIL_iACT_VHi
# [DCFF] S.C113LVL_200counts
# [DD50] S.C113UP_50counts
# B1_758 KAM C Fault Code Flag
# 764 KAM C
2ef9: 01 #arg 4 1 ); # B1_1D4 RAM C Fault Code Flag