I'm running through my collection of unique strategy files, and I noticed that the vect lists aren't always defined and some code gets missed because of it, so I've been working on matching up all of the vect lists in each file and adding them to a dir file per strategy and just realized that new code gets marked as a sub, but doesn't actually get disassembled. I assume this isn't the expected behavior?
SAD version: SAD Version 4.0.14.1 (27 Feb 2025)
Also validated the same issue exists in: SAD Version 4.0.13 (01 Feb 2025)
Strategy: ATAF2
DIR file:
vect 182b6 182DB : K 0
vect 182f0 18303 : K 9
vect 18422 184E9 : K 8
Example of a sub marked but not disassembled:
Sub_0882c:
0882c: f2,b3,d8,26,46,71,7f,46,c7,d8,26,46,2a,3f,e2,09 ???
0883c: ea,09,e0,06,a7,08,10,2a,2a,ca,09,e2,09,ac,0b,a7 ???
0884c: 08,80,28,bd,ef,d3,04,f3,f0 ???
Which is called this string of subs:
vect @ 184e2: -> Sub_87487 87489: -> Sub_874f2 87545: -> Sub_0882c
Second example in the same file:
vect @ 184e0: -> Sub_8f332 8f334: -> Sub_930a4 930d1: -> Sub_93373 93a72: -> Sub_93a76 93b6f: -> Sub_08c14
Both items above are in the msg file like any other sub, no warnings or errors that I see, so it seems like they should have processed. Also, I went back and found that even with no dir file it does the same thing.
sym 0882c "Sub_0882c"
sym 08c14 "Sub_08c14"
Adding them to the dir file seems to not change anything when done like this:
Adding it as code seems to have forced it to display what it could work out. I guess it's flagging the code as invalid which is why it refused to disassemble the code by default.
dir file
code 0882c 08c9e
code 08c14 08c9d
Sub_0882c:
0882c: f2 pushp push(PSW);
0882d: b3,d8,26,46 ldb R46,[Rd8+26] R46 = [108a6];
08831: 71,7f,46 an2b R46,7f B7_R46 = 0;
08834: c7,d8,26,46 stb R46,[Rd8+26] [108a6] = R46;
08838: 2a,3f scall 08a79 Sub_08a79 (
0883a: e2,09 #arg 1 9e2,
0883c: ea,09 #arg 2 9ea,
0883e: e0 #arg 3 e0,
0883f: 06 #arg 4 6,
08840: a7,08 #arg 5 8a7,
08842: 10 #arg 6 10 );
08843: 2a,2a scall 08a6f Sub_08a6f ();
08845: ca,09 push [R8++] push([INT_Mask++]);
08847: e2 !INV!
08849: ac,0b,a7 ldzbw Ra7,Rb wRa7 = HSI_Sample;
0884c: 08,80,28 shrw R28,R80 R28 = R28 >> R80;
0884f: bd,ef,d3 ldsbw Rd3,ef swRd3 = ef;
08852: 04 !INV!
08854: f0 ret return;
Side note, I used notepad++ and a regex to find these. Most files I've been working with have around 15 matches, this one had 25 so it stood out as different. With those two subs disassembled it would be 13 left which would be ball park like the other files.
^[0,8,9].*\?\?\?.*$
I know the work around is to define the sub, but for my usage I don't need to name it or anything, just need it disassembled for reference since it's a lot more work defining every sub manually this way, hoping that it's just a small bug to make my work a lot easier (got 470 files to do this for lol). Actually this reminds me, this would break my current script because it expects all marked subs to be disassembled, I better add a check for ??? lines.
SAD has come a long ways, it's been such a great tool to use while learning these computers (EEC-V era).
It seems like the latest version of SAD hits almost everything automatically now. I've found that it does miss the last line of some vect lists when it does find them, I suspect it doesn't check the code for the actual if statement difference for the length (aka if (R26 <= 24) vs if (Rcf < c8) from the same file). I can make a separate issue detailing that bug but for the most part it's a very minor issue, it just misses one vect item at the end sometimes.
The exact bin file is ATAF2A7 which can be downloaded directly from Ford. ATAF3 appears to have the exact same situation going on in it (probably the same code).
https://www.motorcraftservice.com/diagnostic/Support?channelId=50&categoryId=288
Choose USA for the country, click Calibration Files link, paste file name in the text box and download. If you get the asp file, retry till the page either says the file isn't found or you get a zip file.
I'm running through my collection of unique strategy files, and I noticed that the vect lists aren't always defined and some code gets missed because of it, so I've been working on matching up all of the vect lists in each file and adding them to a dir file per strategy and just realized that new code gets marked as a sub, but doesn't actually get disassembled. I assume this isn't the expected behavior?
SAD version: SAD Version 4.0.14.1 (27 Feb 2025)
Also validated the same issue exists in: SAD Version 4.0.13 (01 Feb 2025)
Strategy: ATAF2
DIR file:
Example of a sub marked but not disassembled:
Which is called this string of subs:
vect @ 184e2: -> Sub_87487 87489: -> Sub_874f2 87545: -> Sub_0882c
Second example in the same file:
vect @ 184e0: -> Sub_8f332 8f334: -> Sub_930a4 930d1: -> Sub_93373 93a72: -> Sub_93a76 93b6f: -> Sub_08c14
Both items above are in the msg file like any other sub, no warnings or errors that I see, so it seems like they should have processed. Also, I went back and found that even with no dir file it does the same thing.
Adding them to the dir file seems to not change anything when done like this:
Adding it as code seems to have forced it to display what it could work out. I guess it's flagging the code as invalid which is why it refused to disassemble the code by default.
dir file
Side note, I used notepad++ and a regex to find these. Most files I've been working with have around 15 matches, this one had 25 so it stood out as different. With those two subs disassembled it would be 13 left which would be ball park like the other files.
^[0,8,9].*\?\?\?.*$I know the work around is to define the sub, but for my usage I don't need to name it or anything, just need it disassembled for reference since it's a lot more work defining every sub manually this way, hoping that it's just a small bug to make my work a lot easier (got 470 files to do this for lol). Actually this reminds me, this would break my current script because it expects all marked subs to be disassembled, I better add a check for ??? lines.
SAD has come a long ways, it's been such a great tool to use while learning these computers (EEC-V era).
It seems like the latest version of SAD hits almost everything automatically now. I've found that it does miss the last line of some vect lists when it does find them, I suspect it doesn't check the code for the actual if statement difference for the length (aka if (R26 <= 24) vs if (Rcf < c8) from the same file). I can make a separate issue detailing that bug but for the most part it's a very minor issue, it just misses one vect item at the end sometimes.
The exact bin file is ATAF2A7 which can be downloaded directly from Ford. ATAF3 appears to have the exact same situation going on in it (probably the same code).
https://www.motorcraftservice.com/diagnostic/Support?channelId=50&categoryId=288
Choose USA for the country, click Calibration Files link, paste file name in the text box and download. If you get the asp file, retry till the page either says the file isn't found or you get a zip file.