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