BIN differences (including howell730.bin)
Marc Randolph
mrand at pobox.com
Mon Jun 19 21:24:31 GMT 2000
On Mon, Jun 19, 2000 at 04:12:10PM -0400, trax wrote:
> Quick question,
>
> I used a BIN compare utility to illustrate the differences between two GM
> PROM images. The first image is the one I obtained from my 1990 IROC 350.
> The second image was a standard AUJP1350 replacement chip. The program
> reported almost 12000 differences. In TunerCat I saw no differences. I
> have a data file listing all the differences in these two BINs. I also have
> the anht_hac.pdf on-hand. How the heck do I determine where these
> differences are found? For example, the following lines illustrate some
> differences:
>
> Address 90FL98 AUJP1350 90FL98 AUJP1350
> ------- ---(d)--- ---(d)--- ---(h)--- ---(h)---
> 03005 101 109 65 6D
> 03039 210 218 D2 DA
> 03056 192 200 C0 C8
> 0306B 192 200 C0 C8
>
> The differences go on and on and on and on ...
Often times the differences are an added table or piece of code.
This means that after the point of the added piece, it will
appear that nothing matches up. The trick is to figure out how
much was added and then get everything lined back up.
As an example, last week squash updated howell730.bin.
At first glance, it differs by a TON from AUJP.
However, after converting the .bin's to a straight hex dumps,
I discovered that around line 532 was were the code was
added (around byte offset 8508 I believe).
So, if you want howell730.hex to match up with aujp.hex,
simply search for 20 06 C1 40 23 02 C6 40 in AUJP.
That is extra stuff that isn't in Howell730. After discovering
this, the number of differences drop dramaticly (like more than a
factor of ten).
So what does the extra stuff do?
20 06 = always branch 6 (bytes) ahead [ie, skip the next 3 lines]
C1 40 = compare accumlator (storage location) "B" with hex 0x40
23 02 = branch 2 ahead if compare was less or equal [ie, skip next line]
C6 40 = load accumlator location "B" with hex 0x40
So, it appears that some code ahead of this point will allow
the program to jump to the C1 40 line. At this point, if
accumulator B (just a storage register) contains a value greater
than 0x40, it overwrites whatever is there with 0x40.
In C, most people would code this as:
if (AccumB > 0x40)
AccumB = 0x40;
I have no idea what AccumB is being used for at this point in
the code (LC26B in the disassembly). It's in the tables after
the IAC stuff, commented as desired RPM boost.
If anyone wants the modified AUJP.hex file that allows comparison
to Howell.hex, I'd be happy to send it to you (it's just raw hex
digits - not a disassembly [which IS included in 7730aujp.zip, BTW]).
Have fun,
Marc
--
Marc Randolph - mrand at pobox.com - PGP keyID: 0x4C95994D
If you have any info on the mid-60's car called the Bill Thomas
Cheetah, or know anyone that might, please contact me.
----------------------------------------------------------------------------
To unsubscribe from gmecm, send "unsubscribe gmecm" (without the quotes)
in the body of a message (not the subject) to majordomo at lists.diy-efi.org
More information about the Gmecm
mailing list