DIY PROM Do It Yourself PROM chip burning help. No PROM begging. No PROMs for sale. No commercial exchange. Not a referral service.

$8D RPM/25 calc

Thread Tools
 
Search this Thread
 
Old 04-10-2005, 11:26 PM
  #1  
Z69
Supreme Member

Thread Starter
 
Z69's Avatar
 
Join Date: Sep 2003
Location: Texas
Posts: 1,409
Likes: 0
Received 1 Like on 1 Post
$8D RPM/25 calc

I was working on using a different scaled rpm value and Rbob set me straight on how to do it. Thanks Rbob.
So here is how the stock code works. Well AUJP anyway.

The short version:
Code:
LDD L00B3         ; get DRP period from FDB L00B3
ASLD		  ;mult by 2
PSHB
PSHA		  ;move D to the stack
Pulx		  ;put val on stack in x or move D to x
LDD #307	  ; put 307d in D which is scale to 25 rpm per bit
Fdiv		  ; divide 307 by (DRP * 2) with result in X
PSHX		  ; put RPM/25 on stack
Pula
Pulb		  ; move x to d	
;limit to 6375
STAA L0058        ; and store at L0058
Long version
Code:
Determine # of cylinders first

LDAA $8009 				; 00 = 8 CYL- go get constant
BNE LB7C8				; BR if Cyl NE 8,do not br if 8cyl
					; .... else
LDD L00B3 				; get CURRENT MNR LOOP DRP PERIOD  (inv rpm)
BRA LB7CB 				; Save cnts at L0467
LB7C8: JSR LE33F 			; Not 8cyl, then scale to 8 cyl ref by
					; (8 x 16 MULT)
LB7CB: STD L0467 			; ECM IM RAM, NUM OF 65.5Khz cnts
					; between DRPs

Then calc rpm

;-------------------------------------
; RPM, RPM P, RPM/25 & RPM/12.5
;
; Q = (153.6/RPM RER) * 2 ^8
;
; PER = 1/65.5 Khz per bit
;--------------------------------------
PSHB 					;Put DRP per. on stack
PSHA 					;or move val in D to X
ASLD 					;multiply D by 2, SET DIVIDE OPER
PSHB 					;put rpm/2 (D)on stack
PSHA 					;
PULX 					;Value from  ASLD
LDD #0307 				;val= 15 * (512/25) or 153.6 * 2
FDIV 					;calc RPM/25 w/256th's in LSB by
					;division with remainder in LSB 
					;result is X=D/X
;SNIP- bunch of code for hi & lo range Qals and limited rpm stored at L0057
; not relavent to topic
PSHX 					;Put value from fdiv in x reg on the stack
PULA 					;Pull RPM/25 off of stack or
PULB					;put X in D (which is actually A&B) 
PSHB					;put back on stack for later use
PSHA					;in RPM/12.5 calc
ADDD #128 				;Round off by adding 128 to LSB (B reg)
BCC LB7FD 				;BR if no overflow (LT 6375 rpm (255 x 25))
					;... else
LDAA #255 				;limit to 255 or 6375 rpm
LB7FD: STAA L0058 		;put rpm/25 in ram 
;-----------------------
; MAKE UN-FILT RPM/12.5
;-----------------------
PULA 					; non rounded rpm/25 val from above
PULB
ASLD 					; MULT * 2 for scale to Rpm/12.5
BCS LB809 				; IF OVERFLOW LIMIT TO 255, (3187 RPM)
					; .... else
ADDD #128 				; ROUND by adding 128 to LSB (accB)
BCC LB80B 				; BR IF NO OVERFLOW ( Br if accA < FF)
					; ... else
LB809: LDAA #255 			; 3187 RPM (limit accA to FF)
LB80B: STAA L0059 		; SAVE UNFILT 12.5 RPM Var in ram
Related Topics
Thread
Thread Starter
Forum
Replies
Last Post
ryan.h
DIY PROM
50
04-27-2006 02:13 PM
Z69
DIY PROM
33
04-22-2006 03:26 AM
Z69
DIY PROM
6
09-09-2005 10:51 PM
Doctor J
DFI and ECM
2
11-13-2003 02:47 PM
V8Astro Captain
DIY PROM
3
02-24-2003 02:13 PM



Quick Reply: $8D RPM/25 calc



All times are GMT -5. The time now is 12:41 AM.