EEC V file conversion

All hardware related, disassembly / programming and code discussions belong here.
jsa
Posts: 274
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 »

Zip them and attach here.
BOOSTEDEVERYTHING
Posts: 235
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, so far this is what I have found. I am going to try and compare subroutines at this point hat I have been writing down when I find chunks of code that look to be doing the same thing, and then saying to goto a subroutine. I write down the routine number for both lst files and figured maybe it may get me further. I haven't went any further with the cmt file yet. I wanted to get through the subroutines I was working with first. Now I am going to see if I can figure out what to put in the cmt file. LOL. Back to the SAD docs.

I do have several ops that I matched up but am confused about. I am suspect that it is using temp registers to get a value but I am not sure. I will put a few below for examples. Thanks again for all of the help.

Also I should note that I do get a few errors with what I added to the dir file that I have not researched yet, but plan to.I think I just put the wrong address in or maybe needed to add something in front of them. Again I have not looked into them yet.

BYT 792D << Error - Invalid bank
BYT 792D << Error - Invalid bank
BYT 792E << Error - Invalid bank

Code: Select all

EQE3                                 RZASA
--------------------------------------------------------------
Rd4+f6				SPI_BIT_TRANSFER_RATE
Rd4+4b				FLAG_EXT1
R52+be1a				DARC_OUT_IMA_L
B1_Rbf				B1_FLAGTEMP_BG
B5_TMP9L				B5_FLAGTEMP_BG
B6_R34				EGRMON
B6_R93				SCP_TX_FLG
B7_TMP0L				B7_FLAGTEMP_BG----shows up in RZASA code as B5_FLAGTEMP
Attachments
eqe3_ml2_8a1a_stock read burn1fnb_cmt.zip
(5.79 KiB) Downloaded 56 times
jsa
Posts: 274
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 »

BOOSTEDEVERYTHING wrote: 2023 Oct 30, 15:24 I will put a few below for examples. Thanks again for all of the help.
So far I've only had a chance for a quick look.
The code sample below already has an entry in the eqe3 dir I pasted at the end of last week. I'm not understanding what concerns you about it. Hit me with a specific question please?
Also I should note that I do get a few errors with what I added to the dir file that I have not researched yet, but plan to.I think I just put the wrong address in or maybe needed to add something in front of them. Again I have not looked into them yet.

BYT 792D << Error - Invalid bank
BYT 792D << Error - Invalid bank
BYT 792E << Error - Invalid bank
They need a bank number for any address above 0x2000.
Any reason you chose byt over sym?

Code: Select all

EQE3                                 RZASA
--------------------------------------------------------------
Rd4+f6				SPI_BIT_TRANSFER_RATE
Hit me with specific questions, please.
decipha
Posts: 5052
Joined: 2021 Feb 15, 12:23
Location: Metairie, LA
Vehicle Information: Work Truck
'19 F-150 3.3L

Re: EEC V file conversion

Unread post by decipha »

it looka like your comparing and trying to make sense of the differences

would be more beneficial to go through just one listing and understand what its doing
BOOSTEDEVERYTHING
Posts: 235
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 code sample below already has an entry in the eqe3 dir I pasted at the end of last week. I'm not understanding what concerns you about it. Hit me with a specific question please?
I am having issues determining how to get to the sym 276 from the Rd4+f6. For example, Rd4= 280, f6 converted to decimal= 246, so it looks to me like it would be 280+246 which equals 526, convert that to hex and get 20e. But your entry says 276. So I know I am doing something wrong, just not sure what yet. The R52+be1a is confusing as well because I was thinking that R52=FGTMP5L, so I am not sure how to figure outhow to do the math with a word value(I think that be1a is a word value but could be misunderstanding) and with a tmp register value. I know I need to follow the code to see what was loaded into R52 before this operation to find the value to use for that, but then how to add the word value is confusing me. I hope that makes sense?

Also I wanted to make sure I understand the entries like B6_R34, Is this saying R34 located in Bank 6? as opposed to R34 in another bank? I thought there were only banks 0, 1, 8, and 9?
Any reason you chose byt over sym?
I was wondering that myself actually. I originally chose sym when entering it in the dir file, but found the same entry in the RZASA dir used byt. That is one of the things I also was going to research. But if you could explain it It may make more sense to me than if I found it in the documentation. Should I have stayed with the sym command?
it looka like your comparing and trying to make sense of the differences

would be more beneficial to go through just one listing and understand what its doing
That is what I am doing, sort of. I am looking through to find similar chunks of code or subroutines and trying to find out what it is doing in the RZASA lst file and making sure it appears to be doing the same thing in the EQE3 lst file. If it is I am writing down the addresses from EQE3 and the corresponding name from the RZASA lst file, then finding the matching entries in the strategy docs to find out what it is doing exactly, then entering it into the eqe3 dir file and comparing the entry I came up with to the RZASA dir file to double check if I am on the right track. Did I miss something with how JSA was telling me to do this?

Quick example: I found that in eqe3 subroutine 05a9d matches 07317 in RZASA, So I look that up in the CDAN2 docs and found that it looks to be the SCP message transmit service routine, which looks like to me wakes up the scp network and loads a value into the EBC chip and then transmits that message on the scp network. That is just a short subroutine that matches up in both. exactly matches really. Some of the other routines seem to differ but be almost the same. Some of them in RZASA load bytes into registers before adding them or comparing them when EQE3 just uses what is already loaded.
decipha
Posts: 5052
Joined: 2021 Feb 15, 12:23
Location: Metairie, LA
Vehicle Information: Work Truck
'19 F-150 3.3L

Re: EEC V file conversion

Unread post by decipha »

You have a strategy doc? any chance of sharing? that would be tremendously helpful as you can't even begin to imagine.
wwhite
Posts: 320
Joined: 2021 Feb 16, 15:53
Location: Victoria, BC, Canada
Vehicle Information: 1994 Flarside, XLT, 351w E4OD
SD48b, Quarter Horse, Burn2

Re: EEC V file conversion

Unread post by wwhite »

B6_R34 - bit 6 of the register.
7|6|5|4|3|2|1|0
| one byte |
8 different bit positions
tvrfan
Posts: 88
Joined: 2023 Oct 22, 22:13
Location: New Zealand
Vehicle Information: Several Kit cars, Ford (Europe), EEC-IV, TVR Vixen, Tasmin (a.k.a Wedge),
Engine - Cologne 2.8 V6 (Europe) catch code 'AA'.

EEC_Disassembler https://github.com/tvrfan/EEC-IV-disassembler

Re: EEC V file conversion

Unread post by tvrfan »

BOOSTEDEVERYTHING wrote: 2023 Oct 31, 11:39
The code sample below already has an entry in the eqe3 dir I pasted at the end of last week. I'm not understanding what concerns you about it. Hit me with a specific question please?
I am having issues determining how to get to the sym 276 from the Rd4+f6. For example, Rd4= 280, f6 converted to decimal= 246, so it looks to me like it would be 280+246 which equals 526, convert that to hex and get 20e. But your entry says 276. So I know I am doing something wrong, just not sure what yet. The R52+be1a is confusing as well because I was thinking that R52=FGTMP5L, so I am not sure how to figure outhow to do the math with a word value(I think that be1a is a word value but could be misunderstanding) and with a tmp register value. I know I need to follow the code to see what was loaded into R52 before this operation to find the value to use for that, but then how to add the word value is confusing me. I hope that makes sense?

Also I wanted to make sure I understand the entries like B6_R34, Is this saying R34 located in Bank 6? as opposed to R34 in another bank? I thought there were only banks 0, 1, 8, and 9?
<snip>
Remember that in indexed with byte offset, the byte is SIGNED, so 0xf6 is actually MINUS 0xA (-10 in decimal) so 0x280-A = 0x276 (top bit of F6 is set).

As per jsa post, a generic " Bx_Ry" means 'bit number x of register Y' and it typically comes from the opcodes JNB (jump if bit not set) and JB (jump if bit set).

typically this kind of check is because most bins use bit 'flags' to keep track of things happening - have a look at A9L again and you can see there are lots of bytes holding single bit flags for a whole range of things.

if code is indexed i.e. Rx = [R52 + be1a] could be a list of things starting at be1a (probably 1be1a as data is in Bank 1) and R52 would then be the index in the list.
BOOSTEDEVERYTHING
Posts: 235
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 »

You have a strategy doc? any chance of sharing? that would be tremendously helpful as you can't even begin to imagine.
No. I wish. I am using the CDAN2 strategy doc to the best of my ability. Sorry, did not mean to get your hopes up.
so 0xf6 is actually MINUS 0xA
I'm sorry. This hex thing is very new to me. How do I know, or where can I find something to help me know that 0xf6 is -0xA? Again, I am sorry, but hex is very new to me. Thanks
tvrfan
Posts: 88
Joined: 2023 Oct 22, 22:13
Location: New Zealand
Vehicle Information: Several Kit cars, Ford (Europe), EEC-IV, TVR Vixen, Tasmin (a.k.a Wedge),
Engine - Cologne 2.8 V6 (Europe) catch code 'AA'.

EEC_Disassembler https://github.com/tvrfan/EEC-IV-disassembler

Re: EEC V file conversion

Unread post by tvrfan »

Quick note on numbers, binary, negative values in HEX for anyone confused.

The way computers work for negative numbers is completely different from the way our brains work.
There are really good reasons why, for efficiency and speed.

Negative numbers - Most CPUs work by using the "two's complement" system. You can look that up in Wiki, but frankly the description doesn't help at all if you are a newbie.
This system defines that the top bit (7 for byte, 15 for word) is used as a 'sign bit' where a '1' is negative.
Under this system -
a byte value (8 bits) 0x80 represents -256 decimal, 0x81 is -255, 0x82 is -254, through to 0xfe = -2 and 0xff = -1 (and 0=0)
a word value (16 bits) 0x8000 represents -32768 , 0x8001 is - 32767, through to 0xfffe = -2, 0xffff = -1 (and 0=0)

A small LOL - to test an explanation I was going to write here, I tried explaining to my wife how the two's complement works and why negative numbers work this way and she totally failed to get it. She is an Excel wizard, ex CFO, IT Project manager (and I she was actually my boss for a while !) so she is definitely not dumb with numbers. I've been in IT all my career, and it makes perfect sense to me, but I struggled to explain it to a non techie. So I left out the 'why' completely.

So when you see, say, LDW, R34, 8000 somewhere, you don't know if this is an address (to be used later as, say, R54 = [R34]), or if it's a value.
If it's a value then it's either +32768, or -32768 depending on how it's used in the following code. That's the only way to find out (unfortunately).

For direct answer to the [RD4+f6], there are 4 addressing modes for most opcodes, and then there are a a couple of further options. Going back to original post, the mode used is 'byte indexed' and the 8061/5 manual says the byte offset is SIGNED. Have a read of the manual (docs in OPEN_EEC in github) and it will explain. So for signed byte, F6 is -10 decimal or -0xA.

yeah - it takes a while to get your brain around it all. I'll see if I can put some opcode examples together from eqe3 for you.
Post Reply