Notices
ECU Flash

Evo IX GSR serial routines 1 to 14 disassembly

Thread Tools
 
Search this Thread
 
Old Sep 7, 2006 | 05:34 AM
  #1  
jcsbanks's Avatar
Thread Starter
Evolved Member
 
Joined: May 2006
Posts: 2,399
Likes: 6
From: UK
Evo IX GSR serial routines 1 to 14 disassembly

; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ


SERIAL_0: ; CODE XREF: sub_A600+306p
; DATA XREF: sub_A600ff_A910o
mov.l r14, @-r15
mov r15, r14
mov #0, r10
mov.l @(h'15C,pc), r11 ; [0000E0F4] = h'FFFFF002
mov.b r10, @r11
mov.l @(h'16C,pc), r0 ; [0000E108] = h'FFFFF006
mov.b @r0, r0
and #h'F7, r0 ; direction of shift
mov.l @(h'164,pc), r10 ; [0000E108] = h'FFFFF006
mov.b r0, @r10
mov.w @(h'142,pc), r10 ; [0000E0EA] = h'13F ; 1953 baud rate and clock
mov.l @(h'148,pc), r11 ; [0000E0F0] = h'FFFFF000
mov.w r10, @r11
mov #h'30, r10 ; '0' ; enable trans and receive
mov.l @(h'144,pc), r11 ; [0000E0F4] = h'FFFFF002
mov.b r10, @r11
mov #0, r10
mov.l @(h'138,pc), r11 ; [0000E0EC] = h'FFFFF00A
mov.b r10, @r11
mov.l @(h'14C,pc), r0 ; [0000E104] = h'FFFFF00E
mov.b @r0, r0
and #h'F7, r0 ; direction of shift
mov.l @(h'144,pc), r10 ; [0000E104] = h'FFFFF00E
mov.b r0, @r10
mov.w @(h'126,pc), r10 ; [0000E0EA] = h'13F ; 1953 baud
mov.l @(h'B0,pc), r11 ; [0000E074] = h'FFFFF008
mov.w r10, @r11 ; baud rate and clock
mov #h'70, r10 ; 'p' ; enable trans and receive and RXI/ERI1 interrupt
mov.l @(h'120,pc), r11 ; [0000E0EC] = h'FFFFF00A
mov.b r10, @r11
mov #0, r10
mov.l @(h'A8,pc), r11 ; [0000E078] = h'FFFFF012
mov.b r10, @r11
mov.l @(h'12C,pc), r0 ; [0000E100] = h'FFFFF016
mov.b @r0, r0
and #h'F7, r0
mov.l @(h'124,pc), r10 ; [0000E100] = h'FFFFF016
mov.b r0, @r10
mov #h'1F, r10 ; 15625 baud rate and clock
mov.l @(h'9C,pc), r11 ; [0000E07C] = h'FFFFF010
mov.w r10, @r11
mov #-h'50, r10 ; enable trans and receive and TXI2
mov.l @(h'90,pc), r11 ; [0000E078] = h'FFFFF012
mov.b r10, @r11
mov #0, r10 ; disable 3
mov.l @(h'94,pc), r11 ; [0000E080] = h'FFFFF01A
mov.b r10, @r11
mov.l @(h'10C,pc), r0 ; [0000E0FC] = h'FFFFF01E
mov.b @r0, r0
and #h'F7, r0 ; direction of shift
mov.l @(h'104,pc), r10 ; [0000E0FC] = h'FFFFF01E
mov.b r0, @r10
mov.w @(h'EE,pc), r10 ; [0000E0EA] = h'13F
mov.l @(h'88,pc), r11 ; [0000E084] = h'FFFFF018
mov.w r10, @r11 ; 1953 baud

loc_DFFE: ; DATA XREF: sub_8426ff_87D4o
; sub_AD14ff_AE60o ...
mov #0, r10
mov.l @(h'7C,pc), r11 ; [0000E080] = h'FFFFF01A
mov.b r10, @r11 ; disable 3
mov.l @(h'80,pc), r11 ; [0000E088] = h'FFFFF022
mov.b r10, @r11
mov.l @(h'EC,pc), r0 ; [0000E0F8] = h'FFFFF026
mov.b @r0, r0
and #h'F7, r0
mov.l @(h'E8,pc), r10 ; [0000E0F8] = h'FFFFF026
mov.b r0, @r10
mov.w @(h'D4,pc), r10 ; [0000E0EA] = h'13F
mov.l @(h'74,pc), r11 ; [0000E08C] = h'FFFFF020
mov.w r10, @r11 ; 1953 baud rate and clock ch4
mov #0, r10
mov.l @(h'6C,pc), r11 ; [0000E088] = h'FFFFF022
mov.b r10, @r11 ; disable 4
mov.l @(h'70,pc), r11 ; [0000E090] = h'FFFFECC8
mov.l r10, @r11
mov.l @(h'70,pc), r11 ; [0000E094] = h'FFFFECD8
mov.l r10, @r11
mov.l @r15+, r14
rts
nop
; End of function SERIAL_0

; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
dword_E02C: .data.l h'FFFFF5A4 ; DATA XREF: sub_DC6E+34r sub_DDC8+34r
dword_E030: .data.l h'FFFFF524 ; DATA XREF: sub_DC6E+30r sub_DDC8+30r
dword_E034: .data.l h'FFFFF526 ; DATA XREF: sub_DC6E+2Cr sub_DDC8+2Cr
dword_E038: .data.l h'FFFFF5A0 ; DATA XREF: sub_DDC8+26r
dword_E03C: .data.l h'FFFFF5A1 ; DATA XREF: sub_DDC8+20r
dword_E040: .data.l h'FFFFF520 ; DATA XREF: sub_DDC8+1Cr
dword_E044: .data.l h'FFFFF521 ; DATA XREF: sub_DDC8+16r
dword_E048: .data.l h'FFFFF408 ; DATA XREF: sub_DDC8+12r
dword_E04C: .data.l h'FFFFF406 ; DATA XREF: sub_DDC8+Er
.data.b h'FF
.data.b h'FF
.data.b h'F5 ; õ
.data.b h'10
.data.b h'FF
.data.b h'FF
.data.b h'F5 ; õ
.data.b h'12
.data.b h'FF
.data.b h'FF
.data.b h'F5 ; õ
.data.b h'14
dword_E05C: .data.l h'FFFFF516 ; DATA XREF: sub_DED6+1Cr
off_E060: .data.l sub_35810 ; DATA XREF: sub_DED6+Cr
.data.b h'FF
.data.b h'FF
.data.b h'F5 ; õ
.data.b h'90 ;
.data.b h'FF
.data.b h'FF
.data.b h'F5 ; õ
.data.b h'92 ; ’
off_E06C: .data.l sub_41E ; DATA XREF: sub_DDC8+56r sub_DED6+20r
.data.b h'FF
.data.b h'FF
.data.b h'F5 ; õ
.data.b h'94 ; ”
dword_E074: .data.l h'FFFFF008 ; DATA XREF: SERIAL_0+32r
dword_E078: .data.l h'FFFFF012 ; DATA XREF: SERIAL_0+3Er SERIAL_0+54r
dword_E07C: .data.l h'FFFFF010 ; DATA XREF: SERIAL_0+4Er
dword_E080: .data.l h'FFFFF01A ; DATA XREF: SERIAL_0+5Ar SERIAL_0+70r
dword_E084: .data.l h'FFFFF018 ; DATA XREF: SERIAL_0+6Ar
dword_E088: .data.l h'FFFFF022 ; DATA XREF: SERIAL_0+74r SERIAL_0+8Ar
dword_E08C: .data.l h'FFFFF020 ; DATA XREF: SERIAL_0+84r
dword_E090: .data.l h'FFFFECC8 ; DATA XREF: SERIAL_0+8Er
dword_E094: .data.l h'FFFFECD8 ; DATA XREF: SERIAL_0+92r
Reply
Old Sep 7, 2006 | 05:35 AM
  #2  
jcsbanks's Avatar
Thread Starter
Evolved Member
 
Joined: May 2006
Posts: 2,399
Likes: 6
From: UK
; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ


SERIAL_1: ; CODE XREF: sub_A990+D6p
; DATA XREF: sub_A990ff_AA70o
add #-4, r15
sts.l pr, @-r15
mov.l r14, @-r15
mov r15, r14
mov.l r1, @-r15
mov.w @(h'44,pc), r1 ; [0000E0EA] = h'13F
mov.l @(h'64,pc), r10 ; [0000E10C] = sub_400
jsr @r10 ; sub_400 ; raise interrupt priority request to max
nop
mov.l @(h'5C,pc), r0 ; [0000E108] = h'FFFFF006
mov.b @r0, r0
and #h'F7, r0
mov.l @(h'54,pc), r10 ; [0000E108] = h'FFFFF006
mov.b r0, @r10 ; direction of shift
mov.l @(h'4C,pc), r0 ; [0000E104] = h'FFFFF00E
mov.b @r0, r0
and #h'F7, r0
mov.l @(h'48,pc), r10 ; [0000E104] = h'FFFFF00E
mov.b r0, @r10
mov.l @(h'40,pc), r0 ; [0000E100] = h'FFFFF016
mov.b @r0, r0
and #h'F7, r0
mov.l @(h'38,pc), r10 ; [0000E100] = h'FFFFF016
mov.b r0, @r10
mov.l @(h'30,pc), r0 ; [0000E0FC] = h'FFFFF01E
mov.b @r0, r0
and #h'F7, r0
mov.l @(h'2C,pc), r10 ; [0000E0FC] = h'FFFFF01E
mov.b r0, @r10
mov.l @(h'24,pc), r0 ; [0000E0F8] = h'FFFFF026
mov.b @r0, r0
and #h'F7, r0 ; ditto channels 0-4
mov.l @(h'1C,pc), r10 ; [0000E0F8] = h'FFFFF026
mov.b r0, @r10
mov.l @(h'284,pc), r0 ; [0000E364] = h'FFFF69E6
mov.w @r0, r0
tst #2, r0 ; 69e6 & #2 - true if 0
bt loc_E110 ; branch if bit1 clear
mov #h'2F, r13 ; '/'
bra loc_E12A
nop
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
word_E0EA: .data.w h'13F ; DATA XREF: SERIAL_0+14r SERIAL_0+30r ...
dword_E0EC: .data.l h'FFFFF00A ; DATA XREF: SERIAL_0+22r SERIAL_0+38r
dword_E0F0: .data.l h'FFFFF000 ; DATA XREF: SERIAL_0+16r
dword_E0F4: .data.l h'FFFFF002 ; DATA XREF: SERIAL_0+6r SERIAL_0+1Cr
dword_E0F8: .data.l h'FFFFF026 ; DATA XREF: SERIAL_0+78r SERIAL_0+7Er ...
dword_E0FC: .data.l h'FFFFF01E ; DATA XREF: SERIAL_0+5Er SERIAL_0+64r ...
dword_E100: .data.l h'FFFFF016 ; DATA XREF: SERIAL_0+42r SERIAL_0+48r ...
dword_E104: .data.l h'FFFFF00E ; DATA XREF: SERIAL_0+26r SERIAL_0+2Cr ...
dword_E108: .data.l h'FFFFF006 ; DATA XREF: SERIAL_0+Ar SERIAL_0+10r ...
off_E10C: .data.l sub_400 ; DATA XREF: sub_DED6+16r SERIAL_1+Cr
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

loc_E110: ; CODE XREF: SERIAL_1+4Aj
mov.l @(h'250,pc), r0 ; [0000E364] = h'FFFF69E6
mov.w @r0, r0
tst #4, r0 ; 69e6 & #4 - true if 0
bt loc_E11E ; branch if bit 2 clear
mov #h'1F, r13
bra loc_E12A
nop
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

loc_E11E: ; CODE XREF: SERIAL_1+7Ej
mov r1, r13
mov.l @(h'240,pc), r0 ; [0000E364] = h'FFFF69E6
mov.w @r0, r0
tst #8, r0 ; 69e6 & #8 - true if 0
bt loc_E12A ; branch if bit 3 clear
mov #7, r13

loc_E12A: ; CODE XREF: SERIAL_1+4Ej SERIAL_1+82j ...
extu.w r13, r13
mov.l @(h'238,pc), r10 ; [0000E368] = h'FFFFF000
mov.w @r10, r10
extu.w r10, r10
cmp/eq r13, r10 ; if mode register and bit rate register as word=7,1f,2f
bt loc_E13A
mov.l @(h'230,pc), r10 ; [0000E368] = h'FFFFF000
mov.w r13, @r10 ; otherwise set to 7,1f,2f
; = 62.5K, 15625, 10417

loc_E13A: ; CODE XREF: SERIAL_1+9Cj
mov.l @(h'270,pc), r0 ; [0000E3AC] = h'FFFFECCC
mov.l @r0, r0
tst #1, r0
bf loc_E176 ; if bottom bit set of eccc branch
mov.l @(h'26C,pc), r0 ; [0000E3B0] = h'FFFFECDC
mov.l @r0, r0
tst #1, r0
bf loc_E176 ; if bottom bit set of ecdc branch
mov #h'70, r13 ; 'p'
mov.l @(h'21C,pc), r0 ; [0000E36C] = h'FFFF6FE6
mov.w @r0, r0
tst #1, r0
bf loc_E166 ; if bottom bit set of 6fe6 branch
mov.l @(h'268,pc), r0 ; [0000E3C0] = h'FFFFF005
mov.b @r0, r0
mov.b r0, @(8,r14) ; receive data onto stack at point where this routine called
mov.l @(h'268,pc), r0 ; [0000E3C4] = h'FFFFF004
mov.b @r0, r0
and #h'87, r0
mov.l @(h'260,pc), r10 ; [0000E3C4] = h'FFFFF004
mov.b r0, @r10 ; receive ended normally
mov #h'30, r13 ; '0'

loc_E166: ; CODE XREF: SERIAL_1+BAj
extu.b r13, r13 ; 70or30 in R13
mov.l @(h'250,pc), r10 ; [0000E3BC] = h'FFFFF002
mov.b @r10, r10
extu.b r10, r10
cmp/eq r13, r10
bt loc_E176
mov.l @(h'248,pc), r10 ; [0000E3BC] = h'FFFFF002
mov.b r13, @r10 ; make sure 70 or 30 in scr0
; transmit and receive enable if 30
; also receive interrupt enable if 70

loc_E176: ; CODE XREF: SERIAL_1+A8j SERIAL_1+B0j ...
extu.w r1, r1
mov.l @(h'1F4,pc), r10 ; [0000E370] = h'FFFFF008
mov.w @r10, r10
extu.w r10, r10
cmp/eq r1, r10
bt loc_E186
mov.l @(h'1EC,pc), r10 ; [0000E370] = h'FFFFF008
mov.w r1, @r10 ; make sure 1953 baud

loc_E186: ; CODE XREF: SERIAL_1+E8j
mov.l @(h'1EC,pc), r0 ; [0000E374] = h'FFFFF00A
mov.b @r0, r0
cmp/eq #h'70, r0 ; 'p'
bt loc_E194
mov #h'70, r10 ; 'p'
mov.l @(h'1E0,pc), r11 ; [0000E374] = h'FFFFF00A
mov.b r10, @r11 ; make sure TIE (transmit data empty) is enabled

loc_E194: ; CODE XREF: SERIAL_1+F4j
mov.l @(h'1E0,pc), r0 ; [0000E378] = h'FFFFF010
mov.w @r0, r0
cmp/eq #h'1F, r0
bt loc_E1A2
mov #h'1F, r10
mov.l @(h'1D8,pc), r11 ; [0000E378] = h'FFFFF010
mov.w r10, @r11 ; make sure 15625 baud

loc_E1A2: ; CODE XREF: SERIAL_1+102j
extu.w r1, r1
mov.l @(h'1D4,pc), r10 ; [0000E37C] = h'FFFFF018
mov.w @r10, r10
extu.w r10, r10
cmp/eq r1, r10
bt loc_E1B2
mov.l @(h'1CC,pc), r10 ; [0000E37C] = h'FFFFF018
mov.w r1, @r10 ; make sure 1953 baud

loc_E1B2: ; CODE XREF: SERIAL_1+114j
mov.l @(h'1CC,pc), r10 ; [0000E380] = h'FFFFF01A
mov.b @r10, r10
tst r10, r10
bt loc_E1C0
mov #0, r10
mov.l @(h'1C0,pc), r11 ; [0000E380] = h'FFFFF01A
mov.b r10, @r11 ; make sure scr3=0

loc_E1C0: ; CODE XREF: SERIAL_1+120j
extu.w r1, r1
mov.l @(h'1C0,pc), r10 ; [0000E384] = h'FFFFF020
mov.w @r10, r10
extu.w r10, r10
cmp/eq r1, r10
bt loc_E1D0
mov.l @(h'1B4,pc), r10 ; [0000E384] = h'FFFFF020
mov.w r1, @r10 ; make sure 1953 baud

loc_E1D0: ; CODE XREF: SERIAL_1+132j
mov.l @(h'1B4,pc), r10 ; [0000E388] = h'FFFFF022
mov.b @r10, r10
tst r10, r10
bt loc_E1DE
mov #0, r10
mov.l @(h'1AC,pc), r11 ; [0000E388] = h'FFFFF022
mov.b r10, @r11 ; make sure scr4=0

loc_E1DE: ; CODE XREF: SERIAL_1+13Ej
mov.l @(h'1B4,pc), r0 ; [0000E394] = h'FFFF6FA6
mov.w @r0, r0
shlr8 r0
tst #h'F0, r0 ; lower byte & F0, true if 0
bf loc_E1FC ; branch if not 0
mov.l @(h'1A0,pc), r0 ; [0000E38C] = h'FFFF6FA8
mov.w @r0, r0
shlr8 r0
tst #h'80, r0 ; lower byte & 80, true if 0
bf loc_E1FC ; branch if not 0
mov.l @(h'1A0,pc), r10 ; [0000E394] = h'FFFF6FA6
mov.w @r10, r0
mov.l @(h'198,pc), r11 ; [0000E390] = (off_FDFC+3)
and r11, r0 ; RAM6FA6 & #fdff
mov.w r0, @r10

loc_E1FC: ; CODE XREF: SERIAL_1+14Ej
; SERIAL_1+158j
mov.l @(h'1B4,pc), r10 ; [0000E3B4] = sub_41E
jsr @r10 ; sub_41E ; restore interrupt priority
nop
mov.l @r15+, r1
mov.l @r15+, r14
lds.l @r15+, pr
add #4, r15 ; receive channel 0 data at SP
rts
nop
; End of function SERIAL_1


; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ


SERIAL_2: ; CODE XREF: sub_21744+34p
; sub_22160+5Cp ...
sts.l pr, @-r15
mov.l r14, @-r15
mov r15, r14
mov #0, r10
mov.l @(h'188,pc), r11 ; [0000E3A0] = h'FFFF704C
mov.w r10, @r11
bsr SERIAL_4
nop
mov.l @r15+, r14
lds.l @r15+, pr
rts
nop
; End of function SERIAL_2


; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ


SERIAL_3: ; CODE XREF: sub_2163C+16p
; DATA XREF: ROMff_21738o
sts.l pr, @-r15
mov.l r14, @-r15
mov r15, r14
mov.l @(h'194,pc), r0 ; [0000E3C4] = h'FFFFF004
mov.b @r0, r0
tst #h'80, r0
bt loc_E238 ; tdr0 contains valid transmit data
bsr SERIAL_4
nop

loc_E238: ; CODE XREF: SERIAL_3+Cj
mov.l @r15+, r14
lds.l @r15+, pr
rts
nop
; End of function SERIAL_3


; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ


SERIAL_4: ; CODE XREF: SERIAL_2+Cp SERIAL_3+Ep
add #-4, r15
sts.l pr, @-r15
mov.l r14, @-r15
mov r15, r14
mov.l @(h'120,pc), r0 ; [0000E36C] = h'FFFF6FE6
mov.w @r0, r0
tst #1, r0
bt loc_E29A
mov.l @(h'14C,pc), r13 ; [0000E3A0] = h'FFFF704C
mov.w @r13, r13
extu.w r13, r13
mov.l @(h'140,pc), r10 ; [0000E398] = h'FFFF7050
mov.w @r10, r10
extu.w r10, r10
cmp/hs r10, r13
bt loc_E29A
mov #h'F, r10
cmp/hs r10, r13
bt loc_E29A
shll r13
mov.l @(h'13C,pc), r0 ; [0000E3A8] = h'FFFF700E
mov.w @(r0,r13), r10
mov r10, r0
mov.w r0, @(8,r14)
mov.w @(8,r14), r0
extu.w r0, r0
extu.b r0, r0
mov.l @(h'12C,pc), r10 ; [0000E3A4] = h'FFFFF003
mov.b r0, @r10 ; write to serial port 0
mov.l @(h'148,pc), r0 ; [0000E3C4] = h'FFFFF004
mov.b @r0, r0
and #h'7F, r0
mov.l @(h'140,pc), r10 ; [0000E3C4] = h'FFFFF004
mov.b r0, @r10 ; TDR0 contains valid transmit data
mov.l @(h'118,pc), r10 ; [0000E3A0] = h'FFFF704C
mov.w @r10, r0
add #1, r0
mov.w r0, @r10 ; incr 704c
mov.l @(h'DC,pc), r10 ; [0000E36C] = h'FFFF6FE6
mov.w @r10, r0
or #h'80, r0 ; set bit 7 of 6fe6
mov.w r0, @r10
mov #0, r10
mov.l @(h'104,pc), r11 ; [0000E39C] = h'FFFF7054
mov.w r10, @r11 ; zero 7054

loc_E29A: ; CODE XREF: SERIAL_4+Ej SERIAL_4+1Ej ...
mov.l @r15+, r14
lds.l @r15+, pr
add #4, r15
rts
nop
; End of function SERIAL_4

; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

SERIAL_5: ; DATA XREF: ROM:00000320o
; ROM:00000324o
add #-4, r15 ; ERI0,RXI0
sts.l pr, @-r15
mov.l r14, @-r15
mov r15, r14
sts.l macl, @-r15
sts.l mach, @-r15
mov.l r10, @-r15
mov.l r11, @-r15
mov.l r12, @-r15
mov.l r13, @-r15
mov.l r3, @-r15
mov.l r4, @-r15
mov.l r5, @-r15
mov.l r6, @-r15
mov.l r7, @-r15
mov.l r0, @-r15
mov.l @(h'E4,pc), r0 ; [0000E3AC] = h'FFFFECCC
mov.l @r0, r0
tst #1, r0
bf loc_E2D4 ; if bit0 set then branch
mov.l @(h'E0,pc), r0 ; [0000E3B0] = h'FFFFECDC
mov.l @r0, r0
tst #1, r0
bt loc_E304 ; if bit0 clear then branch
; to serial6 then exit

loc_E2D4: ; CODE XREF: ROM:0000E2CAj
mov.l @(h'F0,pc), r10 ; [0000E3C8] = sub_400
jsr @r10 ; sub_400
nop
mov.l @(h'E4,pc), r0 ; [0000E3C0] = h'FFFFF005
mov.b @r0, r0
mov.b r0, @(8,r14) ; receive and stick on stack
mov.l @(h'E0,pc), r0 ; [0000E3C4] = h'FFFFF004
mov.b @r0, r0
and #h'87, r0
mov.l @(h'DC,pc), r10 ; [0000E3C4] = h'FFFFF004
mov.b r0, @r10 ; receive ended normally
mov.l @(h'D0,pc), r0 ; [0000E3BC] = h'FFFFF002
mov.b @r0, r0
and #h'BF, r0 ; enable RXI only
mov.l @(h'C8,pc), r10 ; [0000E3BC] = h'FFFFF002
mov.b r0, @r10
mov #1, r10
mov.l @(h'C0,pc), r11 ; [0000E3B8] = h'FFFF7C98
mov.w r10, @r11 ; 1 into 7c98
mov.l @(h'B8,pc), r10 ; [0000E3B4] = sub_41E
jsr @r10 ; sub_41E
nop
bra loc_E308
nop
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

loc_E304: ; CODE XREF: ROM:0000E2D2j
bsr SERIAL_6
nop

loc_E308: ; CODE XREF: ROM:0000E300j
mov.l @r15+, r0
mov.l @r15+, r7
mov.l @r15+, r6
mov.l @r15+, r5
mov.l @r15+, r4
mov.l @r15+, r3
mov.l @r15+, r13
mov.l @r15+, r12
mov.l @r15+, r11
mov.l @r15+, r10
lds.l @r15+, mach
lds.l @r15+, macl
mov.l @r15+, r14
lds.l @r15+, pr
add #4, r15
rte
nop
Reply
Old Sep 7, 2006 | 05:36 AM
  #3  
jcsbanks's Avatar
Thread Starter
Evolved Member
 
Joined: May 2006
Posts: 2,399
Likes: 6
From: UK
; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ


SERIAL_6: ; CODE XREF: ROM:loc_E304p
sts.l pr, @-r15
mov.l r14, @-r15
mov r15, r14
mov.l r1, @-r15
mov.l @(h'94,pc), r10 ; [0000E3C8] = sub_400
jsr @r10 ; sub_400
nop
mov.l @(h'88,pc), r13 ; [0000E3C4] = h'FFFFF004
mov.b @r13, r13
mov.l @(h'80,pc), r1 ; [0000E3C0] = h'FFFFF005
mov.b @r1, r1 ; receive 0
extu.b r1, r1
mov.l @(h'80,pc), r0 ; [0000E3C4] = h'FFFFF004
mov.b @r0, r0
and #h'87, r0
mov.l @(h'78,pc), r10 ; [0000E3C4] = h'FFFFF004
mov.b r0, @r10 ; received normally
mov.l @(h'1C,pc), r0 ; [0000E36C] = h'FFFF6FE6
mov.w @r0, r0
tst #1, r0
bf loc_E3D0 ; if bit0 set then branch
mov.l @(h'14,pc), r10 ; [0000E36C] = h'FFFF6FE6
mov.w @r10, r0
mov.l @(h'70,pc), r11 ; [0000E3CC] = (loc_FF5E+1)
and r11, r0
mov.w r0, @r10
bra loc_E416
nop
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
.data.b h'FF
.data.b h'FF
dword_E364: .data.l h'FFFF69E6 ; DATA XREF: SERIAL_1+44r
; SERIAL_1:loc_E110r ...
dword_E368: .data.l h'FFFFF000 ; DATA XREF: SERIAL_1+94r SERIAL_1+9Er
dword_E36C: .data.l h'FFFF6FE6 ; DATA XREF: SERIAL_1+B4r SERIAL_4+8r ...
dword_E370: .data.l h'FFFFF008 ; DATA XREF: SERIAL_1+E0r SERIAL_1+EAr
dword_E374: .data.l h'FFFFF00A ; DATA XREF: SERIAL_1:loc_E186r
; SERIAL_1+F8r
dword_E378: .data.l h'FFFFF010 ; DATA XREF: SERIAL_1:loc_E194r
; SERIAL_1+106r
dword_E37C: .data.l h'FFFFF018 ; DATA XREF: SERIAL_1+10Cr
; SERIAL_1+116r
dword_E380: .data.l h'FFFFF01A ; DATA XREF: SERIAL_1:loc_E1B2r
; SERIAL_1+124r
dword_E384: .data.l h'FFFFF020 ; DATA XREF: SERIAL_1+12Ar
; SERIAL_1+134r
dword_E388: .data.l h'FFFFF022 ; DATA XREF: SERIAL_1:loc_E1D0r
; SERIAL_1+142r
dword_E38C: .data.l h'FFFF6FA8 ; DATA XREF: SERIAL_1+150r
; sub_281B4ff_28900o ...
off_E390: .data.l off_FDFC+3 ; DATA XREF: SERIAL_1+15Er
dword_E394: .data.l h'FFFF6FA6 ; DATA XREF: SERIAL_1:loc_E1DEr
; SERIAL_1+15Ar
dword_E398: .data.l h'FFFF7050 ; DATA XREF: SERIAL_4+16r
dword_E39C: .data.l h'FFFF7054 ; DATA XREF: SERIAL_4+56r
dword_E3A0: .data.l h'FFFF704C ; DATA XREF: SERIAL_2+8r SERIAL_4+10r ...
dword_E3A4: .data.l h'FFFFF003 ; DATA XREF: SERIAL_4+36r
dword_E3A8: .data.l h'FFFF700E ; DATA XREF: SERIAL_4+28r
dword_E3AC: .data.l h'FFFFECCC ; DATA XREF: SERIAL_1:loc_E13Ar
; ROM:0000E2C4r
dword_E3B0: .data.l h'FFFFECDC ; DATA XREF: SERIAL_1+AAr
; ROM:0000E2CCr
off_E3B4: .data.l sub_41E ; DATA XREF: SERIAL_1:loc_E1FCr
; ROM:0000E2FAr
dword_E3B8: .data.l h'FFFF7C98 ; DATA XREF: ROM:0000E2F6r
dword_E3BC: .data.l h'FFFFF002 ; DATA XREF: SERIAL_1+D0r SERIAL_1+DAr ...
dword_E3C0: .data.l h'FFFFF005 ; DATA XREF: SERIAL_1+BCr
; ROM:0000E2DAr ...
dword_E3C4: .data.l h'FFFFF004 ; DATA XREF: SERIAL_1+C2r SERIAL_1+C8r ...
off_E3C8: .data.l sub_400 ; DATA XREF: ROM:loc_E2D4r SERIAL_6+8r
off_E3CC: .data.l loc_FF5E+1 ; DATA XREF: SERIAL_6+2Er
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

loc_E3D0: ; CODE XREF: SERIAL_6+28j
extu.b r13, r0 ; ssr0
tst #h'38, r0
bt loc_E3DE ; receive ended normally
mov.l @(h'60,pc), r10 ; [0000E438] = h'FFFF6FE6
mov.w @r10, r0
or #h'20, r0
mov.w r0, @r10 ; otherwise set bit5

loc_E3DE: ; CODE XREF: SERIAL_6+AAj
mov.l @(h'58,pc), r0 ; [0000E438] = h'FFFF6FE6
mov.w @r0, r0
tst #h'80, r0
bf loc_E40C ; if bit7 set branch
mov.l @(h'2B0,pc), r13 ; [0000E698] = h'FFFF7048
mov.w @r13, r13
extu.w r13, r13
mov #h'B, r10
cmp/hs r10, r13 ; if 7048>=B
bt loc_E422
shll r13 ; else double 7048
mov.l @(h'3C,pc), r0 ; [0000E434] = h'FFFF6FF8
mov.w r1, @(r0,r13) ; move received0 data to to 6ff8+2*7048
mov.l @(h'3C,pc), r10 ; [0000E438] = h'FFFF6FE6
mov.w @r10, r0
or #h'40, r0 ; setbit6 = ?valid data
mov.w r0, @r10
mov.l @(h'294,pc), r10 ; [0000E698] = h'FFFF7048
mov.w @r10, r0
add #1, r0 ; incr the 7048 offset
mov.w r0, @r10
bra loc_E41C
nop
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

loc_E40C: ; CODE XREF: SERIAL_6+BAj
mov.l @(h'28,pc), r10 ; [0000E438] = h'FFFF6FE6
mov.w @r10, r0
mov.l @(h'2DC,pc), r11 ; [0000E6F0] = (loc_FF7E+1)
and r11, r0 ; ram6fe6&#ff7f
mov.w r0, @r10

loc_E416: ; CODE XREF: SERIAL_6+34j
mov #0, r10
mov.l @(h'27C,pc), r11 ; [0000E698] = h'FFFF7048
mov.w r10, @r11 ; reset 7048 offset

loc_E41C: ; CODE XREF: SERIAL_6+DEj
mov #0, r10
mov.l @(h'27C,pc), r11 ; [0000E69C] = h'FFFF7054
mov.w r10, @r11 ; reset 7054

loc_E422: ; CODE XREF: SERIAL_6+C6j
mov.l @(h'27C,pc), r10 ; [0000E6A0] = sub_41E
jsr @r10 ; sub_41E
nop
mov.l @r15+, r1
mov.l @r15+, r14
lds.l @r15+, pr
rts
nop
; End of function SERIAL_6

; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
.data.b h'FF
.data.b h'FF
dword_E434: .data.l h'FFFF6FF8 ; DATA XREF: SERIAL_6+CAr
dword_E438: .data.l h'FFFF6FE6 ; DATA XREF: SERIAL_6+ACr
; SERIAL_6:loc_E3DEr ...

; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ


SERIAL_7: ; CODE XREF: sub_281B4+1130p
; DATA XREF: sub_281B4ff_29438o
sts.l pr, @-r15
mov.l r14, @-r15
mov r15, r14
mov.l @(h'260,pc), r10 ; [0000E6A4] = sub_400
jsr @r10 ; sub_400
nop
mov.l @(h'264,pc), r10 ; [0000E6B0] = dword_8EE4
mov.l @r10, r10 ; 6a9c
mov.w @r10, r11
extu.b r11, r10
mov.l @(h'258,pc), r12 ; [0000E6AC] = h'FFFFF013
mov.b r10, @r12 ; write to serial port 2
mov.l @(h'264,pc), r0 ; [0000E6BC] = h'FFFFF014
mov.b @r0, r0
and #h'7F, r0
mov.l @(h'260,pc), r10 ; [0000E6BC] = h'FFFFF014
mov.b r0, @r10 ; contains valid trans
mov #-h'50, r10 ; enable trans and rec
mov.l @(h'254,pc), r12 ; [0000E6B8] = h'FFFFF012
mov.b r10, @r12
mov.l @(h'240,pc), r10 ; [0000E6A8] = h'FFFF6F3E
mov.w r11, @r10 ; 6a9c into 6f3e
mov #1, r10
mov.l @(h'248,pc), r11 ; [0000E6B4] = h'FFFF6F60
mov.w r10, @r11 ; 6f60=1
mov.l @(h'230,pc), r10 ; [0000E6A0] = sub_41E
jsr @r10 ; sub_41E
nop
mov.l @r15+, r14
lds.l @r15+, pr
rts
nop
; End of function SERIAL_7

; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

SERIAL_8: ; DATA XREF: ROM:00000348o
sts.l pr, @-r15
mov.l r14, @-r15
mov r15, r14
sts.l macl, @-r15
sts.l mach, @-r15
mov.l r10, @-r15
mov.l r11, @-r15
mov.l r12, @-r15
mov.l r13, @-r15
mov.l r3, @-r15
mov.l r4, @-r15
mov.l r5, @-r15
mov.l r6, @-r15
mov.l r7, @-r15
mov.l r0, @-r15
mov.l @(h'208,pc), r10 ; [0000E6A4] = sub_400
jsr @r10 ; sub_400
nop
mov.l @(h'210,pc), r10 ; [0000E6B4] = h'FFFF6F60
mov.w @r10, r10
mov #7, r11
cmp/hs r11, r10 ; if 6f60>=7
bt loc_E4DE
mov.l @(h'208,pc), r10 ; [0000E6B4] = h'FFFF6F60
mov.w @r10, r10
extu.w r10, r10
shll2 r10
mov.l @(h'1FC,pc), r0 ; [0000E6B0] = dword_8EE4
mov.l @(r0,r10), r11 ; 6a9c+word offset from 6f60
mov.w @r11, r12
extu.b r12, r10
mov.l @(h'1F0,pc), r11 ; [0000E6AC] = h'FFFFF013
mov.b r10, @r11 ; send to ch2
mov.l @(h'1FC,pc), r0 ; [0000E6BC] = h'FFFFF014
mov.b @r0, r0
and #h'7F, r0
mov.l @(h'1F4,pc), r10 ; [0000E6BC] = h'FFFFF014
mov.b r0, @r10 ; ch2 valid trans
mov.l @(h'1DC,pc), r10 ; [0000E6A8] = h'FFFF6F3E
mov.w @r10, r10
add r10, r12
mov.l @(h'1D8,pc), r11 ; [0000E6A8] = h'FFFF6F3E
mov.w r12, @r11 ; add previous offset to 6f3e
mov.l @(h'1E0,pc), r10 ; [0000E6B4] = h'FFFF6F60
mov.w @r10, r0
add #1, r0 ; inc 6f60
mov.w r0, @r10
bra loc_E4E8
nop
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

loc_E4DE: ; CODE XREF: ROM:0000E4A8j
mov.l @(h'1D8,pc), r0 ; [0000E6B8] = h'FFFFF012
mov.b @r0, r0
and #h'7F, r0 ; disable txi
mov.l @(h'1D0,pc), r10 ; [0000E6B8] = h'FFFFF012
mov.b r0, @r10

loc_E4E8: ; CODE XREF: ROM:0000E4DAj
mov.l @(h'1B4,pc), r10 ; [0000E6A0] = sub_41E
jsr @r10 ; sub_41E
nop
mov.l @r15+, r0
mov.l @r15+, r7
mov.l @r15+, r6
mov.l @r15+, r5
mov.l @r15+, r4
mov.l @r15+, r3
mov.l @r15+, r13
mov.l @r15+, r12
mov.l @r15+, r11
mov.l @r15+, r10
lds.l @r15+, mach
lds.l @r15+, macl
mov.l @r15+, r14
lds.l @r15+, pr
rte
nop

; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ


SERIAL_9: ; CODE XREF: sub_281B4+2ECp
; DATA XREF: sub_281B4ff_2859Co
sts.l pr, @-r15
mov.l r14, @-r15
mov r15, r14
mov.l r1, @-r15
mov.l @(h'18C,pc), r10 ; [0000E6A4] = sub_400
jsr @r10 ; sub_400
nop
mov.l @(h'19C,pc), r3 ; [0000E6BC] = h'FFFFF014
mov.b @r3, r3
extu.b r3, r0
tst #h'78, r0 ; if bits 3,4,5,6 are clear then branch
; rec in progress or ended normally
; rec data reg does not contain valid data
; continue if one of these bits is set, ?error routine
bt loc_E556
mov.l @(h'198,pc), r1 ; [0000E6C0] = h'FFFFF015
mov.b @r1, r1
extu.b r1, r1 ; receive data
mov.l @(h'18C,pc), r0 ; [0000E6BC] = h'FFFFF014
mov.b @r0, r0
and #h'87, r0 ; received normally
mov.l @(h'188,pc), r10 ; [0000E6BC] = h'FFFFF014
mov.b r0, @r10
mov.l @(h'18C,pc), r13 ; [0000E6C4] = h'FFFF6F5E
mov.w @r13, r13
extu.w r13, r13
mov #5, r10
cmp/hs r10, r13 ; if 6f5e>=5 then exit
bt loc_E556
extu.b r3, r0
tst #h'38, r0 ; status register rec err bits - if not set exit
bf loc_E556
shll r13 ; otherwise double 6f6e
mov.l @(h'17C,pc), r0 ; [0000E6C8] = h'FFFF6F52
mov.w r1, @(r0,r13) ; move rec'd data into 6f52+(6f5e word offset)
mov.l @(h'174,pc), r10 ; [0000E6C4] = h'FFFF6F5E
mov.w @r10, r0
add #1, r0 ; increment 6f5e offset
mov.w r0, @r10

loc_E556: ; CODE XREF: SERIAL_9+16j SERIAL_9+32j ...
mov.l @(h'148,pc), r10 ; [0000E6A0] = sub_41E
jsr @r10 ; sub_41E
nop
mov.l @r15+, r1
mov.l @r15+, r14
lds.l @r15+, pr
rts
nop
; End of function SERIAL_9
Reply
Old Sep 7, 2006 | 05:37 AM
  #4  
jcsbanks's Avatar
Thread Starter
Evolved Member
 
Joined: May 2006
Posts: 2,399
Likes: 6
From: UK
; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ


SERIAL_10: ; CODE XREF: sub_231E8+68p
; sub_233A0+B4p ...
sts.l pr, @-r15
mov.l r14, @-r15
mov r15, r14
mov #0, r10
mov.l @(h'160,pc), r11 ; [0000E6D0] = h'FFFF704E
mov.w r10, @r11 ; 704e=0
bsr SERIAL_12 ; called if transmit data register doesn't contain valid data
nop
mov.l @r15+, r14
lds.l @r15+, pr
rts
nop
; End of function SERIAL_10


; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ


SERIAL_11: ; CODE XREF: sub_231E8+40p
; sub_23460+14p ...
sts.l pr, @-r15
mov.l r14, @-r15
mov r15, r14
mov.l @(h'158,pc), r0 ; [0000E6E0] = h'FFFFF00C
mov.b @r0, r0
tst #h'80, r0 ; tdr valid transmit
bt loc_E590 ; branch & exit if true
bsr SERIAL_12 ; otherwise serial12
nop

loc_E590: ; CODE XREF: SERIAL_11+Cj
mov.l @r15+, r14
lds.l @r15+, pr
rts
nop
; End of function SERIAL_11


; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ

; called if transmit data register doesn't contain valid data

SERIAL_12: ; CODE XREF: SERIAL_10+Cp SERIAL_11+Ep
add #-4, r15
sts.l pr, @-r15
mov.l r14, @-r15
mov r15, r14
mov.l @(h'148,pc), r0 ; [0000E6EC] = h'FFFF6FE8
mov.w @r0, r0
tst #1, r0 ; bottom bit 6fe8 is clear then branch to exit
bt loc_E5F2
mov.l @(h'124,pc), r13 ; [0000E6D0] = h'FFFF704E
mov.w @r13, r13
extu.w r13, r13
mov.l @(h'11C,pc), r10 ; [0000E6CC] = h'FFFF7052
mov.w @r10, r10
extu.w r10, r10
cmp/hs r10, r13 ; if 704e>=7052 then branch
bt loc_E5F2
mov #7, r10
cmp/hs r10, r13 ; if 704e>=7 then branch
bt loc_E5F2
shll r13
mov.l @(h'114,pc), r0 ; [0000E6D8] = h'FFFF703A
mov.w @(r0,r13), r10 ; otherwise put 703a+(word offset 704e) onto base of stack
mov r10, r0
mov.w r0, @(8,r14)
mov.w @(8,r14), r0
extu.w r0, r0
extu.b r0, r0
mov.l @(h'104,pc), r10 ; [0000E6D4] = h'FFFFF00B
mov.b r0, @r10 ; write to serial port 1
mov.l @(h'10C,pc), r0 ; [0000E6E0] = h'FFFFF00C
mov.b @r0, r0
and #h'7F, r0
mov.l @(h'104,pc), r10 ; [0000E6E0] = h'FFFFF00C
mov.b r0, @r10 ; valid transmit data flag
mov.l @(h'F0,pc), r10 ; [0000E6D0] = h'FFFF704E
mov.w @r10, r0
add #1, r0 ; inc 704e
mov.w r0, @r10
mov.l @(h'104,pc), r10 ; [0000E6EC] = h'FFFF6FE8
mov.w @r10, r0
or #h'80, r0 ; set bit7 of 6fe8
mov.w r0, @r10
mov #0, r10
mov.l @(h'13C,pc), r11 ; [0000E72C] = h'FFFF7056
mov.w r10, @r11 ; 7056=0

loc_E5F2: ; CODE XREF: SERIAL_12+Ej
; SERIAL_12+1Ej ...
mov.l @r15+, r14
lds.l @r15+, pr
add #4, r15
rts
nop
; End of function SERIAL_12

; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

SERIAL_13: ; DATA XREF: ROM:00000330o
; ROM:00000334o
sts.l pr, @-r15

loc_E5FE: ; DATA XREF: ROMff_2C1F4o
mov.l r14, @-r15
mov r15, r14
sts.l macl, @-r15
sts.l mach, @-r15
mov.l r10, @-r15
mov.l r11, @-r15
mov.l r12, @-r15
mov.l r13, @-r15
mov.l r3, @-r15
mov.l r4, @-r15
mov.l r5, @-r15
mov.l r6, @-r15
mov.l r7, @-r15
mov.l r1, @-r15
mov.l r0, @-r15
mov.l @(h'84,pc), r10 ; [0000E6A4] = sub_400
jsr @r10 ; sub_400
nop
mov.l @(h'BC,pc), r13 ; [0000E6E0] = h'FFFFF00C
mov.b @r13, r13
mov.l @(h'B4,pc), r1 ; [0000E6DC] = h'FFFFF00D
mov.b @r1, r1
extu.b r1, r1 ; receive on 1
mov.l @(h'B0,pc), r0 ; [0000E6E0] = h'FFFFF00C
mov.b @r0, r0
and #h'87, r0 ; tdr contains valid data
mov.l @(h'AC,pc), r10 ; [0000E6E0] = h'FFFFF00C
mov.b r0, @r10
mov.l @(h'B4,pc), r0 ; [0000E6EC] = h'FFFF6FE8
mov.w @r0, r0
tst #1, r0 ; if bit0 6fe8 is set then branch
bf loc_E64C
mov.l @(h'AC,pc), r10 ; [0000E6EC] = h'FFFF6FE8
mov.w @r10, r0
mov.l @(h'A0,pc), r11 ; [0000E6E4] = (loc_FF5E+1)
and r11, r0 ; 6fe8 and #ff5f
mov.w r0, @r10
bra loc_E6F4
nop
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

loc_E64C: ; CODE XREF: ROM:0000E63Cj
extu.b r13, r0
tst #h'38, r0
bt loc_E65A ; receive in progress or ended normally
mov.l @(h'98,pc), r10 ; [0000E6EC] = h'FFFF6FE8
mov.w @r10, r0 ; set bit5 of 6fe8
or #h'20, r0
mov.w r0, @r10

loc_E65A: ; CODE XREF: ROM:0000E650j
mov.l @(h'90,pc), r0 ; [0000E6EC] = h'FFFF6FE8
mov.w @r0, r0
tst #h'80, r0
bf loc_E688 ; if bit7 set branch
mov.l @(h'C4,pc), r13 ; [0000E728] = h'FFFF704A
mov.w @r13, r13
extu.w r13, r13
mov #7, r10
cmp/hs r10, r13 ; if 704a>=7 branch
bt loc_E700
shll r13
mov.l @(h'74,pc), r0 ; [0000E6E8] = h'FFFF702C
mov.w r1, @(r0,r13) ; rec data into 702c + 704a pointer word
mov.l @(h'74,pc), r10 ; [0000E6EC] = h'FFFF6FE8
mov.w @r10, r0
or #h'40, r0 ; set bit 6 6fe8
mov.w r0, @r10
mov.l @(h'A8,pc), r10 ; [0000E728] = h'FFFF704A
mov.w @r10, r0
add #1, r0 ; inc 704a
mov.w r0, @r10
bra loc_E6FA
nop
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

loc_E688: ; CODE XREF: ROM:0000E660j
mov.l @(h'60,pc), r10 ; [0000E6EC] = h'FFFF6FE8
mov.w @r10, r0
mov.l @(h'60,pc), r11 ; [0000E6F0] = (loc_FF7E+1)
and r11, r0 ; 6fe8 AND #ff7f
mov.w r0, @r10
bra loc_E6F4
nop
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
.data.b h'FF
.data.b h'FF
dword_E698: .data.l h'FFFF7048 ; DATA XREF: SERIAL_6+BCr SERIAL_6+D6r ...
dword_E69C: .data.l h'FFFF7054 ; DATA XREF: SERIAL_6+F4r
off_E6A0: .data.l sub_41E ; DATA XREF: SERIAL_6:loc_E422r
; SERIAL_7+32r ...
off_E6A4: .data.l sub_400 ; DATA XREF: SERIAL_7+6r ROM:0000E49Ar ...
dword_E6A8: .data.l h'FFFF6F3E ; DATA XREF: SERIAL_7+28r
; ROM:0000E4C8r ...
dword_E6AC: .data.l h'FFFFF013 ; DATA XREF: SERIAL_7+14r
; ROM:0000E4BAr
off_E6B0: .data.l dword_8EE4 ; DATA XREF: SERIAL_7+Cr ROM:0000E4B2r
dword_E6B4: .data.l h'FFFF6F60 ; DATA XREF: SERIAL_7+2Er
; ROM:0000E4A0r ...
dword_E6B8: .data.l h'FFFFF012 ; DATA XREF: SERIAL_7+24r
; ROM:loc_E4DEr ...
dword_E6BC: .data.l h'FFFFF014 ; DATA XREF: SERIAL_7+18r SERIAL_7+1Er ...
dword_E6C0: .data.l h'FFFFF015 ; DATA XREF: SERIAL_9+18r
dword_E6C4: .data.l h'FFFF6F5E ; DATA XREF: SERIAL_9+28r SERIAL_9+40r
dword_E6C8: .data.l h'FFFF6F52 ; DATA XREF: SERIAL_9+3Cr
dword_E6CC: .data.l h'FFFF7052 ; DATA XREF: SERIAL_12+16r
dword_E6D0: .data.l h'FFFF704E ; DATA XREF: SERIAL_10+8r
; SERIAL_12+10r ...
dword_E6D4: .data.l h'FFFFF00B ; DATA XREF: SERIAL_12+36r
dword_E6D8: .data.l h'FFFF703A ; DATA XREF: SERIAL_12+28r
dword_E6DC: .data.l h'FFFFF00D ; DATA XREF: ROM:0000E626r
dword_E6E0: .data.l h'FFFFF00C ; DATA XREF: SERIAL_11+6r
; SERIAL_12+3Ar ...
off_E6E4: .data.l loc_FF5E+1 ; DATA XREF: ROM:0000E642r
dword_E6E8: .data.l h'FFFF702C ; DATA XREF: ROM:0000E670r
dword_E6EC: .data.l h'FFFF6FE8 ; DATA XREF: SERIAL_12+8r
; SERIAL_12+4Cr ...
off_E6F0: .data.l loc_FF7E+1 ; DATA XREF: SERIAL_6+E6r
; ROM:0000E68Cr
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

loc_E6F4: ; CODE XREF: ROM:0000E648j
; ROM:0000E692j
mov #0, r10
mov.l @(h'30,pc), r11 ; [0000E728] = h'FFFF704A
mov.w r10, @r11 ; 704a=0

loc_E6FA: ; CODE XREF: ROM:0000E684j
mov #0, r10
mov.l @(h'2C,pc), r11 ; [0000E72C] = h'FFFF7056
mov.w r10, @r11 ; 7056=0

loc_E700: ; CODE XREF: ROM:0000E66Cj
mov.l @(h'D8,pc), r10 ; [0000E7DC] = sub_41E
jsr @r10 ; sub_41E
nop
mov.l @r15+, r0
mov.l @r15+, r1
mov.l @r15+, r7
mov.l @r15+, r6
mov.l @r15+, r5
mov.l @r15+, r4
mov.l @r15+, r3
mov.l @r15+, r13
mov.l @r15+, r12
mov.l @r15+, r11
mov.l @r15+, r10
lds.l @r15+, mach
lds.l @r15+, macl
mov.l @r15+, r14
lds.l @r15+, pr
rte
nop


********* SNIP SOME DATA *******

; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ


SERIAL_14: ; CODE XREF: sub_223B0+132p
; DATA XREF: sub_223B0ff_22558o
sts.l pr, @-r15
mov.l r14, @-r15
mov r15, r14
mov.l @(h'218,pc), r10 ; [0000EB04] = sub_400
jsr @r10 ; sub_400
nop
mov.l @(h'18C,pc), r0 ; [0000EA7C] = h'FFFFF002
mov.b @r0, r0
and #h'7F, r0 ; disable transmitter data empty interrupt request
mov.l @(h'184,pc), r10 ; [0000EA7C] = h'FFFFF002
mov.b r0, @r10
mov #-2, r0
mov.l @(h'17C,pc), r10 ; [0000EA78] = h'FFFFECCC
mov.l @r10, r10
and r0, r10 ; clear bit 0 of ffffeccc
mov.l @(h'174,pc), r11 ; [0000EA78] = h'FFFFECCC
mov.l r10, @r11
mov.l @(h'16C,pc), r10 ; [0000EA74] = h'FFFFECDC
mov.l @r10, r10
and r0, r10 ; clear bit 0 of ffffecdc
mov.l @(h'168,pc), r11 ; [0000EA74] = h'FFFFECDC
mov.l r10, @r11
mov.l @(h'1F8,pc), r10 ; [0000EB08] = sub_41E
jsr @r10 ; sub_41E
nop
mov.l @r15+, r14
lds.l @r15+, pr
rts
nop
; End of function SERIAL_14
Reply
Old Sep 7, 2006 | 07:45 AM
  #5  
mchuang's Avatar
Evolved Member
iTrader: (11)
 
Joined: Sep 2005
Posts: 2,180
Likes: 1
From: h town
Man if I only knew what all that meant lol...thx for your hardwork anyways man..
Reply
Old Sep 8, 2006 | 01:55 PM
  #6  
galvitron's Avatar
Evolving Member
iTrader: (2)
 
Joined: Sep 2004
Posts: 287
Likes: 0
From: South Bay
Hell yeah! Those comments are going in my dis tonight!

Do you know of any way to share the IDA save? I haven't looked, but it is probably a file that we could trade. If so, new disassemblers wouldn't have to spend all that time defining code and data and starting from scratch...

Just a thought
Reply
Old Sep 8, 2006 | 02:33 PM
  #7  
jcsbanks's Avatar
Thread Starter
Evolved Member
 
Joined: May 2006
Posts: 2,399
Likes: 6
From: UK
My IDA save is now 14MB. Compresses to 1MB.
Reply
Old Sep 8, 2006 | 02:38 PM
  #8  
galvitron's Avatar
Evolving Member
iTrader: (2)
 
Joined: Sep 2004
Posts: 287
Likes: 0
From: South Bay
How about an upload to AktiveMatrix? Is 1MB allowed?
Reply
Old Sep 8, 2006 | 05:23 PM
  #9  
MalibuJack's Avatar
EvoM Guru
20 Year Member
iTrader: (5)
 
Joined: Feb 2003
Posts: 10,572
Likes: 14
From: Royse City, TX
you should be able to upload new versions there.. let me know when you do so they can be approved.
Reply
Related Topics
Thread
Thread Starter
Forum
Replies
Last Post
Eugeny dontknow
ECU Flash
25
Dec 30, 2021 09:21 AM
mrfred
Evo X Engine Management / Tuning Forums
82
Jan 3, 2020 04:18 PM
mrfred
ECU Flash
316
Apr 24, 2016 10:24 AM
monsta
ECU Flash
5
Jun 15, 2009 01:14 AM
acamus
ECU Flash
11
Mar 8, 2009 07:22 AM




All times are GMT -7. The time now is 12:46 AM.