Hi Martin
Makes sense - thanks.
Here are the Turbo compile options I hard-code in the pre-amble to the test program in question (a Lap Counter/Race Timer for my son's Scalextric):
Code: Select all
TURBO_locstr "R"
TURBO_windo 0
TURBO_optim "B"
TURBO_model 1
TURBO_struct "S"
TURBO_diags "I"
TURBO_list "YES"
TURBO_sound "YES"
TURBO_objdat 16
TURBO_buffersz 16
TURBO_objstk 512
TURBO_taskn "RMS v4.4k"
TURBO_objfil "ram1_RMS_v4t4k_exe"
TURBO_repfil "dos2_RMS_RMS_v4t4k_rpt.txt"
I'm about 5% the way through the 200-odd code IDs, switching-out the existing check-sums for those of the routines found in the test job.
One thought for a future version - given that, once a suitable 'line-start' marker is defined, based on version of the detected Turbo code-generator, could the check-sum routine be made instead to only scan the intervening code fragment to build the hash, i.e. excluding the line-start marker itself - thus potentially making the check-sums more likely to match across/independent from compiler version?
On a side note, I've already found at least one duplication of routine (ID: 204 - "RETRY_HERE") that appears twice in my disassembly (so far), only with very slightly different offsets for the BCC and LEA instructions (due to position-dependence), thus:
Code: Select all
Prefix - 9BE2 (204a)
Version 5.37 - Checksum = 001A00C948
0031C55A 41E9FF80 lea -$0080(a1),a0 A...
0031C55E B1CC cmpa.l a4,a0 ..
0031C560 6404 bcc.s [b]$0031C566[/b] d.
0031C562 4EEE8AEC jmp -$7514(a6) N...
0031C566 45EE805A lea [b]-$7FA6(a6)[/b],a2 E..Z
0031C56A 24CD move.l a5,(a2)+ $.
0031C56C 48D2D200 movem.l a1/a4/a6-a7,(a2) H...
0031C570 4EEE8370 jmp -$7C90(a6)
and:
Code: Select all
Prefix - 9BFC (204b)
Version 5.37 - Checksum = 001A00CA24
0031C574 41E9FF80 lea -$0080(a1),a0 A...
0031C578 B1CC cmpa.l a4,a0 ..
0031C57A 6404 bcc.s [b]$0031C580[/b] d.
0031C57C 4EEE8AEC jmp -$7514(a6) N...
0031C580 45EE806E lea [b]-$7F92(a6)[/b],a2 E..n
0031C584 24CD move.l a5,(a2)+ $.
0031C586 48D2D200 movem.l a1/a4/a6-a7,(a2) H...
0031C58A 4EEE8370 jmp -$7C90(a6)
Obviously, this produces two distinct check-sum hashes, but the current program logic only appears to accomodate one routine/segment per ID...
Is this an example of where manual intervention is expected, following the ProcessDump run?
Interestingly, I don't actually have any explicit RETRY_HERE commands in my source program
Meanwhile, I've got some more visual inspection to do to match-up the remaining routines between the disassembly and TCLibrary2_lib...
M.