OBDII info

Tom Hussey thussey at idirect.com
Tue Feb 23 14:06:32 GMT 1999


Ken Kelly wrote:

> I looked at my 96 Proms. The 96 Event side has the same
> checksum locations as the 95 Event, but the 1 meg 96 T side does not
> have the same checksum locations with the end moved from &HFFFF 
>to &H1FFFF.
> 
>                 Ken

Hi Ken,

Here are a couple of segments of code that may be of use. They document
a checksum routine. See if they are close to what you have...


67E9  CC DF E8    	LDD    #$DFE8          ; BYTE COUNT FOR CHECKSUM
67EC  CE 20 18    	LDX    #$2018          ; STARTING ADDRESS FOR CS
67EF  BD 4F 65    	JSR    $4F65           ; CHECK BANK 0

67F2  18 FF 02 DD 	STY    $02DD           ; SAVE RESULTING CHECKSUM

67F6  B6 10 00    	LDAA   $1000           ; READ PORT A
67F9  8A 20       	ORAA   #$20            ; SELECT BANK 1
67FB  B7 10 00    	STAA   $1000           ; ......ENGAGE

67FE  CC 80 00    	LDD    #$8000          ; BYTE COUNT FOR CHECKSUM
6801  CE 80 00    	LDX    #$8000          ; STARTING ADDRESS FOR CS
6804  BD 4F 65    	JSR    $4F65           ; CHECK BANK 1

6807  B6 10 00    	LDAA   $1000           ; READ PORT A
680A  84 DF       	ANDA   #$DF            ; SELECT BANK 0
680C  B7 10 00    	STAA   $1000           ; 

680F  18 8F       	XGDY                   ; GET RESULT BANK 1
6811  F3 02 DD    	ADDD   $02DD           ; AND ADD TO BANK 0
6814  1A B3 20 15 	CPD    $2015           ; TEST RESULT 
6818  26 07       	BNE    $6821           ; BRANCH IF BAD SUM

--------------------------------------------------------------------

************************************************
* CHECKSUM ROUTINE
*
* ENTER WITH X POINTING AT FIRST BYTE
* D IS THE BYTE COUNT
*
************************************************
4F65  3C          	PSHX                   ; SAVE REGISTERS
4F66  37          	PSHB                   ; 
4F67  36          	PSHA                   ; 
4F68  04          	LSRD                   ; 
4F69  36          	PSHA                   ; 
4F6A  18 CE 00 00 	LDY    #$0000          ; Y ACCUMULATES CHECKSUM
4F6E  17          	TBA                    ; GET START ON FIRST PAGE
4F6F  27 0E       	BEQ    $4F7F           ; IF 0, DO NEXT PAGE

4F71  E6 00       	LDAB   $00,X           ; READ BYTE
4F73  18 3A       	ABY                    ; ACCUMULATE CHECKSUM
4F75  E6 01       	LDAB   $01,X           ; READ BYTE
4F77  18 3A       	ABY                    ; ACCUMULATE CHECKSUM
4F79  C6 02       	LDAB   #$02            ; ADD 2 TO POINTER
4F7B  3A          	ABX                    ; 
4F7C  4A          	DECA                   ; DECREMENT LS COUNT
4F7D  26 F2       	BNE    $4F71           ; LOOP WHILE PAGE NOT DONE

4F7F  C6 55       	LDAB   #$55            ; KICK THE COP TIMER
4F81  F7 10 3A    	STAB   $103A           ; 
4F84  C6 AA       	LDAB   #$AA            ; 
4F86  F7 10 3A    	STAB   $103A           ; 

4F89  C6 50       	LDAB   #$50            ; KICK THE TIMER I/O CHIP
4F8B  F7 18 06    	STAB   $1806           ; WATCHDOG
4F8E  C6 A0       	LDAB   #$A0            ; 
4F90  01          	NOP                    ; 
4F91  01          	NOP                    ; 
4F92  F7 18 06    	STAB   $1806           ; TIMER CHIP

4F95  3C          	PSHX                   ; SAVE X
4F96  30          	TSX                    ; DECREMENT PAGE COUNT
4F97  6A 02       	DEC    $02,X           ; ON STACK 
4F99  38          	PULX                   ; RESTORE X
4F9A  2A D5       	BPL    $4F71           ; DO NEXT PAGE IF NOT 

4F9C  31          	INS                    ; REMOVE DOUBLE STORE
4F9D  32          	PULA                   ; RESTORE REGISTERS
4F9E  33          	PULB                   ; 
4F9F  38          	PULX                   ; 
4FA0  39          	RTS                    ; DONE



More information about the Gmecm mailing list