[Gmecm] VE error in $A1 hac?

Ryan Hess rgmecm
Sun Apr 23 14:36:42 UTC 2006


Thanks for the correction Gary.  It was late and I thought I had something.  Guess not.  :)

Ryan

Gary Evans <gary at garyandliz.com> wrote: Hi Ryan,

It looks to me like the calculation bottoms out at 600 rpm.

The only error I see is here:

B898        suba      #0x30                   ;(RPM*2)-48

Should be:

B898        suba      #0x30                   ;(RPM*2)-1200 RPM

If the engine RPM is 800 or higher, the code will jump to B89F,  
subtract 400, and do a table lookup on the location RPM-400. If, for  
example, the rpm is 799, the code will multiply by two (1598),  
subtract 1200 (398), and do the lookup on that result.

Any input lower than 600 is treated as 600, because 600*2-1200 = 0.  
If the RPM is 599 or less, line B89C sets the result back to zero  
after the subtraction yields a negative number.

The code you are looking at is only used to scale the actual RPM  
value for the purposes of performing the table lookup. Below 800 rpm,  
the table scaling is 1/2 that of the rest of the table. So where the  
rest of the table has 400 RPM jumps between columns, the the first  
column would only be a 200 RPM jump (since the lookup index is  
RPM*2). Hence, I believe the label of 600 RPM for the first column is  
correct. This assumption is backed up by the fact that the code will  
not allow a lookup below 600 RPM anyway.

-Gary



On Apr 22, 2006, at 9:44 PM, Ryan Hess wrote:

> I'm a n00b when it comes to assembly, but I was reading the 3d VE  
> lookup tables in the $a1 hac, and it appears to me that if the RPM  
> <800, it gets multiplied by 2, and 400rpm is subtracted.  Wouldn't  
> that mean the last cell would be 400 rpm?  Someone check me...  If  
> so I need to change my definition file.
>
> (there's no way this is going to come out formatted right...)
>                       B893      LB893:cmpa   
> #0x20                   ;800 RPM
> B895        bhi      LB89F                   ;BRANCH IF > 800 RPM,  
> ELSE
> B897        lsla                          ;MULT * 2
> B898        suba      #0x30                   ;(RPM*2)-48
> B89A        bcc      LB89D                   ;BRANCH IF NO  
> UNDERFLOW, ELSE
> B89C        clra                          ;CLEAR A
> B89D      LB89D:bra   LB8A1                   ;BRANCH
> B89F      LB89F:suba  #0x10                   ;RPM - 400 RPM
> B8A1      LB8A1:ldx      #0x8772                       ;MAIN VE TABLE
> ... MAP stuff
>
> B8B5      LB8B5:bra   LB8C3                   ;GO DO TABLE LOOKUP
> B8B7      LB8B7:psha                          ;SAVE RPM ON STACK
>
>
> Ryan
>
>   
> ---------------------------------
> Talk is cheap. Use Yahoo! Messenger to make PC-to-Phone calls.   
> Great rates starting at 1??/min.
> _______________________________________________
> Gmecm mailing list
> Gmecm at diy-efi.org
> http://lists.diy-efi.org/mailman/listinfo/gmecm

_______________________________________________
Gmecm mailing list
Gmecm at diy-efi.org
http://lists.diy-efi.org/mailman/listinfo/gmecm


		
---------------------------------
Yahoo! Messenger with Voice. Make PC-to-Phone Calls to the US (and 30+ countries) for 2?/min or less.



More information about the Gmecm mailing list