*.ABT format in FORScan

Car configuration discussions and experience sharing
Post Reply
Site Admin
Posts: 2618
Joined: Fri Jun 13, 2014 2:21 am

*.ABT format in FORScan

Post by FORScan » Thu Jul 04, 2019 11:42 am

Update 2019-08-08: created a simple command line untility ABTConverter to convert from new to old format. It may be necessary, for example, for comparsion purpose. Syntax:

Syntax: ABTConverter <input filename> <output filename>

*.ABT is a simple plain text format that was designed by us specially to store As Built Data (ABD). The plain text format was chosen specially to provide easy way to read and modify ABD offline as it can be opened in any text editor.

Prior to FORScan v2.3.23 the format was very transparent. Let's look at this IPC block:

720-01-01 4301 0000 6D

and this is how it is written to the *.ABT file.

;Block 1


720 - module ID, hexadecimal
01 - block number, decimal
01 - line number, decimal

The problem of the format is that (as it often happens) didn't foresee some real life cases. It dedicated 2 digits for block and line numbers. So you cannot have blocks greater than 99 and number of lines in every block greater than 99 (so maximum number of block cannot be greater than 5 * 99 = 495 bytes). In real world the ABT format is used not only for loading Ford ABD but also for any module configuration. For example, some IPMB blocks of 2018MY have size of 512 bytes. Next, on new PCMs Ford started to use ABD blocks with number greater than 99. For example, 7E0-162-01 ....

In FORScan v2.3.23 we have updated this functionality to fix the problems mentioned above. In order to provide backward compatibility we had to adjust ABT format as the following:

;Block 1

As you may see, the only difference is in block and line number, they look strange now. This is because they are encoded. The encoding is:

BlockNumber = HEX(block number, decimal) + G0
LineNumber = HEX(line number, decimal) + G0

where G0 is some number in "alphabet" notation. So block #01 is encoded as G0 + 0x01 = G1. Block with decimal number 10 (hex 0x0A) is encoded as G0+0x0A = GA. If block number or line number is greater than 15 (hex 0x0F), lower half of byte is added as usually and higher half of byte is added to G (G+1 - H, G+2=I and so on). So block #20 decimal is encoded as G0+14 = H4

Few more examples:

ABD: 720-28-01 FF3F 1900 A7
Old *.ABT record: 7202801FF3F1900A7
New *.ABT record: 720HCG1FF3F1900A7

ABD: 720-36-01 0000 0000 5E
Old *.ABT record: 7203601000000005E
New *.ABT record: 720I4G1000000005E

It may look confusing and complicated for people who work with ABT, but it was the only way to safe compatibility and avoid full redesign of the function. Also, block and line numbers are not modified by hands, so, in our understanding, it should not be a big problem. Good news is that these formats are backward compatible, so FORScan v2.3.23 is able to read old *ABT files properly. Versions prior to v2.3.23 will not be able to read new *.ABT files.

Posts: 6
Joined: Mon May 28, 2018 4:03 pm
Vehicle: 2014 FORD FUSION

Re: *.ABT format in FORScan

Post by STATEPOLICE » Mon Aug 26, 2019 7:49 pm

cant seem to get the program to work ,,any input

Posts: 116
Joined: Sat Mar 05, 2016 11:29 pm
Vehicle: 2013 Taurus SHO pp
Location: Detroit Area

Re: *.ABT format in FORScan

Post by ClockWorK » Sun Sep 08, 2019 8:33 pm

I'm working on integrating this change into my AsBuilt Explorer compare tool, along with the ability to export in old or new ABT format.

Probably in the next week or two.
2013 Taurus SHO (pp), AWD Gauge Enabled, Engine Hours Enabled, Nav Enabled in APIM and IPC, DRLs Enabled
AsBuilt Compare Tool: http://www.compulsivecode.com/Project_A ... mpare.aspx

Posts: 12
Joined: Tue Oct 11, 2016 8:06 pm
Vehicle: Galaxy, Duratorq-Turbo Diesel 2.0 L/182 kW, 2015

Re: *.ABT format in FORScan

Post by Kingsammy » Fri Oct 04, 2019 9:01 pm

Have already implemented the change of the Forscan ABT format in your program? Many thanks in advance.

Post Reply