Evo IX GSR serial routines 1 to 14 disassembly
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_A600
ff_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_8426
ff_87D4o
; sub_AD14
ff_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
SERIAL_0: ; CODE XREF: sub_A600+306p
; DATA XREF: sub_A600
ff_A910omov.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_8426
ff_87D4o; sub_AD14
ff_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
; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
SERIAL_1: ; CODE XREF: sub_A990+D6p
; DATA XREF: sub_A990
ff_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: ROM
ff_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
SERIAL_1: ; CODE XREF: sub_A990+D6p
; DATA XREF: sub_A990
ff_AA70oadd #-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: ROM
ff_21738osts.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
; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ 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_281B4
ff_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_281B4
ff_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_281B4
ff_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
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_281B4
ff_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_281B4
ff_29438osts.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_281B4
ff_2859Costs.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
; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ 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: ROM
ff_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_223B0
ff_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
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: ROM
ff_2C1F4omov.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_223B0
ff_22558osts.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
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
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
Trending Topics
Thread
Thread Starter
Forum
Replies
Last Post
mrfred
Evo X Engine Management / Tuning Forums
82
Jan 3, 2020 04:18 PM





