[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Burning



Hmm, love that descriptive title - I guess we're not talking
burning rubber - not with a 998 cc Mini anyways (you wish!).

black maj wrote:

> Okay, i'm not very good with programming etc yet.. but am learning, 
> i have read programming 101, but have a quick question.. I have installed modifed
> EFI into my mini, and have found that i have the automatic memcal... 

Get the manual trans. memcal! - Camira 2.0 (PFI NA) used following memcals

Engine	Trans	Model	Code	ID	Comments
2.0PFI	A	JE	AJUN	0098	Prod'n
2.0PFI	A	JE	AMXX	0518	Prod'n No Ping
2.0PFI	M	JE	AKFL	1968	Prod'n
2.0PFI	M	JE	AMXY	0528	Prod'n No Ping

What do you have? (see http://www.syty.org/promguide.html ) to see a
picture of a MemCal - sticker should have letters and numbers = broadcast code
or BCC. I have attach you an AMXY privately.

> the problem is that the car after moving idles up around 3000rpm when i stop, i
> am assuming this is usually to fight against the torque converter? it drops
> back down to idle after a lil bit tho...  I have the camira .bin file for
> the manual and am hoping tomorrow to burn a manual chip...  if i modify the

Oh, you already have one!

> tables do i need to create another checksum??? (btw what is a checksum?) and
> if so.. do i need to create another even if i leave the .bin as it is???

for AMXY, I've used my disassembler's output, and I added comments (doesn't
do this automatically yet ;-) - see more explanation below...

[snip]
        org     $C000
;
        db      $02, $10, $09, $0E, $00, $2F
LC006:  dw      $7598			;Checksum
LC008:  db      $5D			;Program ID
;
[snip]
;
        ldX     #$C008			;start of checksum area
        ldD     #$3FF8			;length to check
        call    LF04D			;compute checksum
        ldX     #$0100			;data area indexed address base
        cmpY    LC006			;check with checksum at $C006
        bne     LD065			;no match - branch, do further checks
        ldaA    LC008			;match - now check program ID byte at $C008
        cmpA    #$5D			
        beq     LD071			;match - now have correct checksum AND ID byte

LD065:  ldaA    LC008			;bad checksum found
        cmpA    #$AA			;if ID is $AA then we'll ignore checksum
        beq     LD071			;ignore it
        bset    0, X, #%00010000	;don't ignore - set bit 4 of $0100
        jr      LD074			;continue
;
LD071:  bclr    0, X, #%00010000	;clear set bit 4 of $0100

This code (or very similar) is pretty much in every GM MemCal ever
made, so it's worth understanding - some of the locations may change,
but basically the checksum routine calculates a 16 bit sum of all the
bytes from $C008 to $FFFF (I have not shown this routine, but in this
MemCal it's at $D065).

The implications for tuning is that you can set location $C008
to $AA and the checksum will be ignored - so you can zap bytes in
the ROM and you won't get any "codes". Or you can compute a checksum
and have the added security of the code checking itself that it's all 
there!

PG.
----------------------------------------------------------------------------
To unsubscribe from gmecm, send "unsubscribe gmecm" (without the quotes)
in the body of a message (not the subject) to majordomo@lists.diy-efi.org