EEC V file conversion

All hardware related, disassembly / programming and code discussions belong here.
BOOSTEDEVERYTHING
Posts: 424
Joined: 2023 Sep 06, 13:11
Location: Charlotte NC , USA
Vehicle Information: 1999 Ford Ranger with 2000 Explorer v8 swap, FLN0
2003 Ford F150 Harley Davidson, Built 5.4L SOHC with 3.4L Whipple and Built 4R100

Re: EEC V file conversion

Unread post by BOOSTEDEVERYTHING »

Sorry, wife had me busy over the weekend and did not get a chance to read up yet. I will add the above to my cmt file and add the word values to my dir file if not already there. So depending on the flag set, it would add 8 or 2 to the 926e to get the register of the value to load into Tmp2l? So indirectly loading the resulting register by adding 8 or 2 to the value of 926e. Sound like I understand why you got what you did? If it were a direct address mode it would be looking for the value of the register it is pointing to not an actual value plus a hex amount? Is that correct?
jsa
Posts: 433
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: EEC V file conversion

Unread post by jsa »

Yes flag determines 8 or 2 added to 926e, which gives 9276 or 9270.

No, 9276 or 9270 is loaded into temp7l.

Indirect means get the value at the address held by the register. The register is temp7l, the address is 9276 or 9270 and the values at 9276 and 9270 are 13c8 or 13a4.

It is bank 1 for 9276 and 9270 because bank 1 is the data bank set as part of the boot sequence, and the operation is a data operation.

To put it another way, indirect means get the values 13c8 or 13a4, at the address 19276 or 19270 held by the register temp7l.

Temp2l gets the result of adding the rbase value 1723e to the indirect value 13c8 or 13a4.

Direct is what you were trying to do in your earlier post.

Direct is the value held by temp7l.
Indirect is the value @ the address held by temp7l.
BOOSTEDEVERYTHING
Posts: 424
Joined: 2023 Sep 06, 13:11
Location: Charlotte NC , USA
Vehicle Information: 1999 Ford Ranger with 2000 Explorer v8 swap, FLN0
2003 Ford F150 Harley Davidson, Built 5.4L SOHC with 3.4L Whipple and Built 4R100

Re: EEC V file conversion

Unread post by BOOSTEDEVERYTHING »

Ok. Thank you. That makes it easier to bang into my head, LOL. I think I get it now. Indirect points to a register, that holds the address, of the actual value used, and direct points to a register that contains the actual value used?
jsa
Posts: 433
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: EEC V file conversion

Unread post by jsa »

Points is not quite the right word, uses is more appropriate.
BOOSTEDEVERYTHING
Posts: 424
Joined: 2023 Sep 06, 13:11
Location: Charlotte NC , USA
Vehicle Information: 1999 Ford Ranger with 2000 Explorer v8 swap, FLN0
2003 Ford F150 Harley Davidson, Built 5.4L SOHC with 3.4L Whipple and Built 4R100

Re: EEC V file conversion

Unread post by BOOSTEDEVERYTHING »

I have a question about defining a section of code. It is a byte sized value that is directly loaded, or compared, but I believe it is only used in a section of code for the purpose I am defining it for. I think........
Below is a section of CRAI8 I am working on...

Code: Select all

0ec35: 3c,b6,04           jb    B4,Rb6,0ec3c     if (ER_TST_ENA = 0)  {
0ec38: c7,ec,44,00        stb   R0,[Rec+44]      KOER_TST_TMR = ZERO; } } }
0ec3c: 36,b6,2c           jnb   B6,Rb6,0ec6b     if (DEMAND_ABORT = 1)  {
0ec3f: 30,b7,27           jnb   B0,Rb7,0ec69     if (ER_ACTIVE = 1)  {
0ec42: 99,5f,24           cmpb  R24,5f           
0ec45: d7,15              jne   0ec5c            if (TEMP0L = 5f)  {               # [5F] ER_DONE
0ec47: b3,de,28,44        ldb   R44,[Rde+28]     TMP9L = p1001_RECORD;
0ec4b: 3f,44,1b           jb    B7,R44,0ec69     if (B7_TMP9L = 1) goto 0ec69;
0ec4e: 71,bf,b6           an2b  Rb6,bf           DEMAND_ABORT = 0;
0ec51: 71,fd,b6           an2b  Rb6,fd           ER_TST_RDY = 0;
0ec54: 71,fe,b7           an2b  Rb7,fe           ER_ACTIVE = 0;
0ec57: b1,00,24           ldb   R24,0            TEMP0L = 0;
0ec5a: 20,0f              sjmp  0ec6b            goto 0ec6b; }
I added a comment to my cmt file for now...would that be the best way to do this or can I use a sym for a range for the 5f value somehow? Or, I guess, what would be the best way to do this for everybody to be able to see it, I guess is what I am asking? There are a bunch of these in sections of code that are byte sized values that correspond to a given result that I would like to add in the disassembly. This just happens to be one of many of them in this section of code. Thanks
jsa
Posts: 433
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: EEC V file conversion

Unread post by jsa »

Yes a range could be applied for this immediate value and the register R5F if byte size used.

It's not an address 5F to be resolved, so I'd use 0x without brackets to indicate the value 5f.

Code: Select all

0ec42: 99,5f,24           cmpb  R24,5f           
0ec45: d7,15              jne   0ec5c            if (TEMP0L = 5f)  {               # 0x5F ER_DONE
Yes it is an issue with SAD currently.
For the purpose of the definition file it is address 0ec43 that is the target. So you could put a commented out command in dir.

Code: Select all

#SYN0ec43 "ER_DONE"         # 0x5f {7??}
BOOSTEDEVERYTHING
Posts: 424
Joined: 2023 Sep 06, 13:11
Location: Charlotte NC , USA
Vehicle Information: 1999 Ford Ranger with 2000 Explorer v8 swap, FLN0
2003 Ford F150 Harley Davidson, Built 5.4L SOHC with 3.4L Whipple and Built 4R100

Re: EEC V file conversion

Unread post by BOOSTEDEVERYTHING »

Ok, Thank you. Ill add them that way and try and remember to stick notes next to them for a reminder.
BOOSTEDEVERYTHING
Posts: 424
Joined: 2023 Sep 06, 13:11
Location: Charlotte NC , USA
Vehicle Information: 1999 Ford Ranger with 2000 Explorer v8 swap, FLN0
2003 Ford F150 Harley Davidson, Built 5.4L SOHC with 3.4L Whipple and Built 4R100

Re: EEC V file conversion

Unread post by BOOSTEDEVERYTHING »

I has been a while, so I figured I would post an update on the CRAI8 disassembly that I am working on. I know there must be several mistakes so beware of those and use at your own risk, LOL. I am trying to figure out what some of the defined items are actually called in the strategy docs, so it has been a bit slow going lately. Some of the DARC stuff doesn't line up term wise, and some of the other things having to do with the clock stuff, etc, use different terminology as well. Any help renaming any of that would be welcome. HAHA Thanks again for helping me through the learning process. I am hopefully getting a bit better as I go.
Attachments
CRAI8_AOL1_20241111.zip
(292.41 KiB) Downloaded 37 times
jsa
Posts: 433
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: EEC V file conversion

Unread post by jsa »

Thank you for the update.

What are the data sources for the names that don't match up and do you have an example?

Mistakes, yeah check your MSG file. Do a run on 5.08 as well and look at that MSG file too.
A number of functions are incorrectly commanded. A function must always start with the maximum value and decrease to the minimum.
FF,FF can only be the maximum if unsigned, so it is an unsigned input function.

Code: Select all

   suwFn46S_T:
17114: ff,ff,00,00        func      -1,     0
Everything in the background vector list can be named as a background sub, Sbg.....

Code: Select all

   BACKGROUND:
193b2: 9b,f7              vect  8f79b            Sbg8F79B_RZA8F62B_Cal_Pntrs_&_Consl
193b4: bb,f8              vect  8f8bb            Sub_8f8bb
193b6: ec,7f              vect  87fec            Sxx87FEC_RZA884BC_22.1.2_ALTERNATIVE_CALIBRATION_CLEAR_LOGIC
BOOSTEDEVERYTHING
Posts: 424
Joined: 2023 Sep 06, 13:11
Location: Charlotte NC , USA
Vehicle Information: 1999 Ford Ranger with 2000 Explorer v8 swap, FLN0
2003 Ford F150 Harley Davidson, Built 5.4L SOHC with 3.4L Whipple and Built 4R100

Re: EEC V file conversion

Unread post by BOOSTEDEVERYTHING »

The data source for the names that do not match up is the DIR file itself. Not sure where the names came from.
I must have incorrectly identified a function subroutine somewhere if I am not commanding some of the functions correctly, either that or I incorrectly identified the function itself. Some I copied and pasted directly over from RZASA. Is it possible that in RZASA, the function may be unsigned, and in another strategy, it is signed? That could be the case if it is possible, and I will have to go back through and change the commands. I will try and grab a few examples of names that do not match up to the strategy doc today. Some of them are how the DARC functions or commands are named. But I will try and find some specific examples as I work through some more today.

Edit: Just saw this, It is a perfect example....Is this explained anywhere in the strategy docs, or is it in the eec software manual somewhere?

Code: Select all

Sbg8F79B_RZA8F62B_Cal_Pntrs_&_Consl

Code: Select all

## FUN 17114 1712F :SW :UW #[SW=flo(x*1)] [UW=flo(x*1)]                    #TOT> {7}
 Warning - Function Start value Invalid 
I did see this in the MSG file and was ignoring it because of the way it shows up in the LST file. I figured maybe it just did not see that it was supposed to be a function at all. They show up in the LST file below, Did I just not identify them correctly? Or maybe the RBase for Rfc is not correct? Or maybe, Is it because I copied them over from RZASA, and they are just different in that strategy?
Also, I have found a couple of SYM commands that are signed in the RZASA DIR and appear to be unsigned in the CRAI8 LST file, is that possible?

Code: Select all

92488: 36,b3,1b           jnb   B6,Rb3,924a6     if (FLG_DRV_REV = 1)  {
9248b: 45,72,13,fc,36     ad3w  R36,Rfc,1372     TMP2L = suwFn46F_N;
92490: 45,52,14,fc,24     ad3w  R24,Rfc,1452     TEMP0L = suwFn46F_T;
92495: 45,02,13,fc,26     ad3w  R26,Rfc,1302     TEMP1L = suwFn46S_N;
9249a: 45,e2,13,fc,28     ad3w  R28,Rfc,13e2     TEMP2L = suwFn46S_T;
9249f: a3,fd,bc,10,2c     ldw   R2c,[Rfc+10bc]   TEMP4L = TMDRVREV;
924a4: 20,5a              sjmp  92500            goto 92500; }

924a6: 33,b3,1b           jnb   B3,Rb3,924c4     if (FLG_NEU_DRV = 1)  {
924a9: 45,8e,13,fc,36     ad3w  R36,Rfc,138e     TMP2L = suwFn54F_N;
924ae: 45,6e,14,fc,24     ad3w  R24,Rfc,146e     TEMP0L = suwFn54F_T;
924b3: 45,1e,13,fc,26     ad3w  R26,Rfc,131e     TEMP1L = suwFn54S_N;
924b8: 45,fe,13,fc,28     ad3w  R28,Rfc,13fe     TEMP2L = suwFn54S_T;
924bd: a3,fd,be,10,2c     ldw   R2c,[Rfc+10be]   TEMP4L = TMNEUDRV;
924c2: 20,3c              sjmp  92500            goto 92500; }

924c4: 32,b3,1b           jnb   B2,Rb3,924e2     if (FLG_NEU_REV = 1)  {
924c7: 45,aa,13,fc,36     ad3w  R36,Rfc,13aa     TMP2L = suwFnFN56F_N;
924cc: 45,8a,14,fc,24     ad3w  R24,Rfc,148a     TEMP0L = suwFn56F_T;
924d1: 45,3a,13,fc,26     ad3w  R26,Rfc,133a     TEMP1L = suwFn56S_N;
924d6: 45,1a,14,fc,28     ad3w  R28,Rfc,141a     TEMP2L = suwFn56S_T;
924db: a3,fd,c0,10,2c     ldw   R2c,[Rfc+10c0]   TEMP4L = TMNEUREV;
924e0: 20,1e              sjmp  92500            goto 92500; }

924e2: 39,b3,02           jb    B1,Rb3,924e7     if (FLG_REV_DRV = 0)  {
924e5: 20,93              sjmp  9257a            goto 9257a; }

924e7: 45,c6,13,fc,36     ad3w  R36,Rfc,13c6     TMP2L = suwFnFN64F_N;
924ec: 45,a6,14,fc,24     ad3w  R24,Rfc,14a6     TEMP0L = suwFn64F_T;
924f1: 45,56,13,fc,26     ad3w  R26,Rfc,1356     TEMP1L = suwFn64S_N;
924f6: 45,36,14,fc,28     ad3w  R28,Rfc,1436     TEMP2L = suwFn64S_T;
924fb: a3,fd,c2,10,2c     ldw   R2c,[Rfc+10c2]   TEMP4L = TMREVDRV;
92500: a3,d2,40,38        ldw   R38,[Rd2+40]     TMP3L = TOT;
92504: 91,20,a5           orb   Ra5,20           SIGNDSLP = 1;
92507: ef,9f,23           call  948a9            SLU948A9_92C62_**WFn ();
9250a: a0,3c,40           ldw   R40,R3c          TMP7L = TMP5L;
9250d: a0,24,36           ldw   R36,R24          TMP2L = TEMP0L;
92510: a3,e4,90,38        ldw   R38,[Re4+90]     TMP3L = NEBART;
92514: ef,92,23           call  948a9            SLU948A9_92C62_**WFn ();
92517: 64,3c,40           ad2w  R40,R3c          TMP7L += TMP5L;
9251a: 98,41,00           cmpb  R0,R41           
9251d: df,03              je    92522            if (TMP7H != ZERO)  {
9251f: ad,ff,40           ldzbw R40,ff           TMP7L = ff; }
92522: 8b,ea,7c,00        cmpw  R0,[Rea+7c]      
92526: df,52              je    9257a            if (EPC_ENG_TMR != ZERO)  {
92528: a0,40,24           ldw   R24,R40          TEMP0L = TMP7L;
9252b: a0,26,36           ldw   R36,R26          TMP2L = TEMP1L;
9252e: a3,d2,40,38        ldw   R38,[Rd2+40]     TMP3L = TOT;
92532: 91,20,a5           orb   Ra5,20           SIGNDSLP = 1;
92535: ef,71,23           call  948a9            SLU948A9_92C62_**WFn ();
92538: a0,3c,40           ldw   R40,R3c          TMP7L = TMP5L;
9253b: a0,28,36           ldw   R36,R28          TMP2L = TEMP2L;
9253e: a3,e4,90,38        ldw   R38,[Re4+90]     TMP3L = NEBART;
92542: ef,64,23           call  948a9            SLU948A9_92C62_**WFn ();
92545: 64,3c,40           ad2w  R40,R3c          TMP7L += TMP5L;
Here is an example of a labeled subroutine that I can not find in the strategy doc

Code: Select all

SUB 03445 "Sxx03445_RZA034B1_subr_aice_fg_mwr"
Post Reply