How does this code match up with what other folks have found? Not sure yet why engine rpm is calculated twice with different scale factors... re-use of older code??
Code:
************************************************
* OPTISPARK LOW RES SIGNAL IS DRIVEN OFF THE CAM
* AND HAS EIGHT SLOTS. EACH TWO ENGINE REVS GENERATE
* EIGHT PULSES OR FOUR PER REVOLUTION.
*
* LOCATION $01E0 IS THE NUMBER OF 5.086US TICKS
* BETWEEN EACH CYL. THIS VALUE COMES FROM
* THE TIMER CLOCK INPUT AND PRESCALE AS:
* 12.5829MHZ /4 /16 = 196,608HZ OR 5.086US
*
* FDIV DIVIDES THE CONSTANT 461 * 2^16 OR 30,212,096
* DIVIDED BY THE NUMBER OF TICKS
* RESULT IS 8 * RPM.
*
* FOR 1000RPM, OR 16.66RPS, EACH OF THE EIGHT LOW
* RES PULSES HAPPEN AT 90 DEGREES (CRANK-> 45 CAM&OPTI)
* OR 66.666HZ/.015MS
* 15MS/5.086US = 2949 TICKS BETWEEN LOW RES PULSES
* 30,212,096/2949 = 10244....1000 RPM.
***********************************************
7182 FE 01 E0 LDX $01E0 ; TIMER TICKS BETWEEN LO RES INTS
7185 CC 01 CD LDD #$01CD ; DIVIDE CONSTANT 461 * 65536
7188 03 FDIV ; DIVIDE TO GET RPM * 10
7189 8F XGDX ;
718A 37 PSHB ; SAVE RPM * 10
718B 36 PSHA ;
718C C3 00 80 ADDD #$0080 ; FORCE CARRY OUT FROM LSBYTE
718F 24 02 BCC $7193 ; SHOULD NOT OVERFLOW
7191 86 FF LDAA #$FF ; FORCE ERROR INDICATION
7193 B7 01 62 STAA $0162 ; RPM * 10/256 OR RPM/25
7196 32 PULA ; RESTORE RPM * 10
7197 33 PULB ;
7198 05 ASLD ; MULTIPLY BY 2
7199 25 05 BCS $71A0 ;
719B C3 00 80 ADDD #$0080 ; FORCE CARRY OUT FROM LSBYTE
719E 24 02 BCC $71A2 ;
71A0 86 FF LDAA #$FF ; FORCE ERROR INDICATION
71A2 B7 01 63 STAA $0163 ; RPM * 20/256 OR RPM/12.5
71A5 5F CLRB ;
71A6 FE 01 64 LDX $0164 ; READ AGERAGE RPM
71A9 27 06 BEQ $71B1 ; IF ENGINE NOT RUNNING, BRANCH
71AB F6 2A 25 LDAB $2A25 ; FLASH CONST $33
71AE BD 4E 94 JSR $4E94 ; CALCULATE AVERAGE, OLD * 5/6 + 33 * NEW
71B1 FD 01 64 STD $0164 ; UPDATE 20 * RPM
* CALCULATE HIGH RESOLUTION ENGINE SPEED: RPM X 4
71B4 CC 00 B4 LDD #$00B4 ; DIVIDE CONSTANT 180 * 65536
71B7 FE 01 E0 LDX $01E0 ; TIMER TICKS BETWEEN LO RES INTS
71BA 03 FDIV ; RESULT IS 4* RPM
71BB 8C 00 B4 CPX #$00B4 ; TEST FOR 45 RPM
71BE 22 03 BHI $71C3 ; BRANCH IF RUNNING...
71C0 CE 00 00 LDX #$0000 ; MARK AS NOT RUNNING
71C3 FF 01 D0 STX $01D0 ; ENGINE RPM X 4
Bookmarks