Re: '99 Saturn Dissassembly
Posted: Fri Jan 22, 2010 1:53 am
Well this took awhile so I am not planning on doing it much (unless I build a program to do it for me) but I merged a section out of the code with data from the logic analyzer so that you can actually step through it and see what is happening, while it is happening. This goes from initial check through return to the main loop. I went with a mode 22 request since that would give me hopefully some insight into how the PID's are set up too.
Code: Select all
Send 6c 10 f1 22 11 01 01
Recv 6C F1 10 62 11 01 A1 FA
18190 ldY L1E3A; 1E3A = $1df8
18194 ldaA 15, Y; 1E07 = $AA
18197 cmpA #$AA
18199 beq L819E
1819E ldaB 0, Y ; 1DF8 = $6C
181A1 xorB #%00001000
181A3 bitB #%00011000
181A5 beq L81AA
181AA cmpB #$E0
181AC bcs L81B1
181B1 bitB #%00000100
181B3 bne L81C2
181C2 ldaA 1, Y ; 1DF9 = $10
181C5 cmpA #$FE
181C7 bne L81E3
181E3 cmpA LC251 ; 1C251 = $10
181E6 beq L81F8
181F8 ldX L1E7B ; 1E7B = $1E, 1E7C = $5B
181FB ldaA 15, X ; 1E6A = $00
181FD cmpA #$AA
181FF bne L820B
1820B ldD 0, Y ; 1DF8 = $6C, 1DF9 = $10
1820E stD 0, X ; 1E5B = $6C, 1E5C = $10
18210 ldD 2, Y ; 1DFA = $F1, 1DFB = $22
18213 stD 2, X ; 1E5D = $F1, 1E5E = $22
18215 ldD 4, Y ; 1DFC = $11, 1DFD = $01
18218 stD 4, X ; 1E5F = $11, 1E60 = $01
1821A ldD 6, Y ; 1DFE = $01, 1DFF = $01
1821D stD 6, X ; 1E61 = $01, 1E62 = $01
1821F ldD 8, Y ; 1E00 = $12, 1E01 = $00
18222 stD 8, X ; 1E63 = $12, 1E64 = $00
18224 ldD 10, Y; 1E02 = $00, 1E03 = $00
18227 stD 10, X; 1E65 = $00, 1E66 = $00
18229 ldD 12, Y; 1E04 = $1D, 1E05 = $FF
1822C stD 12, X; 1E67 = $1D, 1E68 = $FF
1822E ldD 14, Y; 1E06 = $00, 1E07 = $AA
18231 stD 14, X; 1E69 = $00, 1E6A = $AA
18233 ldD 12, Y; 1E04 = $1D, 1E05 = $FF
18236 subD L1E3A; 1E3A = $1D, 1E3B = $F8
18239 aBX
1823A ldY L1E7B; 1E7B = $1E, 1E7C = $5B
1823E stX 12, Y; 1E67 = $1E, 1E68 = $62
18241 ldD L1E7B; 1E7B = $1E, 1E7C = $5B
18244 addD #$0010
18247 cmpD #$1E7B
1824B bcs L8250
18250 stD L1E7B; 1E7B = $1E, 1E7C = $6B
18253 ldY L1E3A; 1E3A = $1D, 1E3B = $F8
18257 ldaA #$00
18259 staA 15, Y; 1E07 = $00
1825C ldD L1E3A; 1E3A = $1D, 1E3B = $F8
1825F addD #$0010
18262 cmpD #$1E38
18266 bcs L826B
1826B stD L1E3A; 1E3A = $1E, 1E3B = $08
1826E jmp E8190
18190 ldY L1E3A; 1E3A = $1E, 1E3B = $08
18194 ldaA 15, Y; 1E17 = $00
18197 cmpA #$AA
18199 beq L819E
1819B jmp L8271
18271 brset L0088, #%00100000, L8284; 88 = $02
18275 brset L0088, #%00010000, L82CC; 88 = $02
18279 ldY L1E7D; 1E7D = $1E, 1E7E = $5B
1827D ldaA 15, Y; 1E6A = $AA
18280 cmpA #$AA
18282 beq L8286
18286 ldX #$0383
18289 ldaB 0, Y; 1E5B = $6C
1828C bitB #%00000100
1828E bne L82A2
182A2 ldaA 0, Y; 1E5B = $6C
182A5 staA 0, X; 383 = $6C
182A7 ldaA 2, Y; 1E5D = $F1
182AA staA 1, X; 384 = $F1
182AC ldaA LC251; 1C251 = $10
182AF staA 2, X; 385 = $10
182B1 ldD 12, Y; 1E67 = $1E, 1E68 = $62
182B4 subD L1E7D; 1E7D - $1E, 1E7E = $5B
182B7 subB #$03
182B9 staB L1E7F; 1E7F = $04
182BC ldaA 3, Y; 1E5E = $22
182BF staA 3, X; 386 = $22
182C1 incX
182C2 incY
182C4 decB
182C5 bne L82BC
182BC ldaA 3, Y; 1E5F = $11
182BF staA 3, X; 387 = $11
182C1 incX
182C2 incY
182C4 decB
182C5 bne L82BC
182BC ldaA 3, Y; 1E60 = $01
182BF staA 3, X; 388 = $01
182C1 incX
182C2 incY
182C4 decB
182C5 bne L82BC
182BC ldaA 3, Y; 1E61 = $01
182BF staA 3, X; 389 = $01
182C1 incX
182C2 incY
182C4 decB
182C5 bne L82BC
182C7 ldaA #$01
182C9 staA L1E82; 1E82 = $01
182CC call L8883; 3FA = $CF, 3F9 = $82
18883 ldaB L0386; 386 = $22
18886 andB #%10111111
18888 tBA
18889 beq L8899
1888B cmpB #$08
1888D bhi L8895
18895 subB #$10
18897 bcc L889F
1889F cmpB #$2F; actually $3f
188A1 bhi L88A8
188A3 ldX #$8805
188A6 jr L88B3
188B3 aBX
188B4 aBX
188B5 ldX 0, X; 18829 = $98, 1882A = $D9
188B7 beq L88D9
188B9 brset L0088, #%00010000, L88D5; 88 =$02
188BD ldaB L1E7F; 1E7F = $04
188C0 cmpB 0, X; 198D9 = $04
188C2 bhi L88C8
188C4 cmpB 1, X; 198DA = $04
188C6 bcc L88D0
188D0 bset L0088, #%00010000; 88 = $02, 88 = $12
188D3 jmp 4, X
198DD ldY #$0386
198E1 ldaA 3, Y; 389 = $01
198E4 cmpA #$01
198E6 beq L98EC
198EC ldD 1, Y; 387 = $11, 388 = $01
198EF call LB158; 3F8 = $F2, 3F7 = $98
1B158 cmpA #$11
1B15A beq LB170; TRAP FIRST TWO DIGITS
1B170 ldX #$B1E4
1B173 jr LB197
1B197 aBX
1B198 aBX
1B199 ldX 0, X; 1B1E6 = $B6, 1B1E7 = $D8
1B19B cmpX #$FFFF
1B19E jr LB1A1
1B1A1 ret; 3F6 = $E1, 3F7 = $98, 3F8 = $F2
198F2 bcc L98E8
198F4 ldaB #$03
198F6 aBY
198F8 cmpX #$B58A
198FB bcs L9906
198FD cmpX #$B958
19900 bhi L9906
19902 call 1, X; 3F8 = $04, 3F7 = $99
1B6D9 clrA
1B6DA ldaB L0054; 54 = $10
1B6DC bitB #%00010000
1B6DE beq LB6E2
1B6E0 oraA #%00000001
1B6E2 ldaB L0058; 58 = $0C
1B6E4 bitB #%10000000
1B6E6 beq LB6EA
1B6EA ldaB L005F; 5F = $00
1B6EC bitB #%10000000
1B6EE beq LB6F2
1B6F2 bitB #%00010000
1B6F4 beq LB6F8
1B6F8 ldaB L0058; 58 = $0C
1B6FA bitB #%00000010
1B6FC beq LB700
1B700 ldaB L1802; 1802 = $C1
1B703 bitB #%00000001
1B705 beq LB709
1B707 oraA #%00100000
1B709 ldaB L0071; 71 = $10
1B70B bitB #%00001000
1B70D beq LB711
1B711 ldaB L005A; 5A = $18
1B713 bitB #%00001000
1B715 beq LB719
1B717 oraA #%10000000
1B719 jmp LB969
1B969 staA 0, Y; 389 = $A1
1B96C ldaB #$01
1B96E aBY
1B970 ret; 3F6 = $E1, 3F7 = $99, 3F8 = $04
19904 jr L990D
1990D ldaA #$03
1990F aBA
19910 jr L9912
19912 jmp LAF9F
1AF9F bclr L0088, #%00010000; 88 = $12, 88 = $02
1AFA2 tstA
1AFA3 beq LAFA8
1AFA5 staA L1E7F; 1E7F = $04
1AFA8 ldaA L0386; 386 = $22
1AFAB oraA #%01000000
1AFAD staA L0386; 386 = $62
1AFB0 ldX #$C603
1AFB3 call LBD43; 3F8 = $B6, 3F7 = $AF
1BD43 ldaB 16, X; 1C613 = $00
1BD45 ldY #$1F9A
1BD49 aBY
1BD4B tPA
1BD4C di
1BD4D ldaB 15, X; 1C612 = $01
1BD4F oraB 0, Y; 1F9A = $04
1BD52 staB 0, Y; 1F9A = $05
1BD55 tAP
1BD56 ret; 3F6 = $E1, 3F7 = $AF, 3F8 = $B6
1AFB6 bset L0088, #%00100000; 88 = $02, 88 = $22
1AFB9 clrA
1AFBA brclr L0088, #%00010000, LAFBF; 88 = $22
1AFBF ret; 3F8 = $B6, 3F9 = $82, 3FA = $CF
182CF tstA
182D0 bne L82F0
182D2 ldY L1E7D; 1E7D = $1E, 1E7E = $5B
182D6 ldaA #$00
182D8 staA 15, Y; 1E6A = $00
182DB ldD L1E7D; 1E7D = $1E, 1E7E = $5B
182DE addD #$0010
182E1 cmpD #$1E7B
182E5 bcs L82EA
182EA stD L1E7D; 1E7D = $1E, 1E7E = $6B
182ED jmp L8271
18271 brset L0088, #%00100000, L8284; 88 = $22
18284 jr L82F0
182F0 ret; 3FA = $CF, 3FB = $56, 3FC = $7B