summaryrefslogtreecommitdiff
path: root/asm/MetroTRK/serpoll.s
blob: 03d658170062d5c05fecd4ea0fea442fb2b9dbf0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
.include "macros.inc"

.section .text, "ax"  # 0x80006980 - 0x803E1E60

.global TRKTerminateSerialHandler
TRKTerminateSerialHandler:
/* 801D5544 001D11A4  38 60 00 00 */	li r3, 0
/* 801D5548 001D11A8  4E 80 00 20 */	blr

.global TRKInitializeSerialHandler
TRKInitializeSerialHandler:
/* 801D554C 001D11AC  3C 60 80 49 */	lis r3, lbl_804907D0@ha
/* 801D5550 001D11B0  38 A0 FF FF */	li r5, -1
/* 801D5554 001D11B4  38 83 07 D0 */	addi r4, r3, lbl_804907D0@l
/* 801D5558 001D11B8  38 00 00 00 */	li r0, 0
/* 801D555C 001D11BC  90 A4 00 00 */	stw r5, 0(r4)
/* 801D5560 001D11C0  38 60 00 00 */	li r3, 0
/* 801D5564 001D11C4  90 04 00 08 */	stw r0, 8(r4)
/* 801D5568 001D11C8  90 04 00 0C */	stw r0, 0xc(r4)
/* 801D556C 001D11CC  4E 80 00 20 */	blr

.global TRKProcessInput
TRKProcessInput:
/* 801D5570 001D11D0  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 801D5574 001D11D4  7C 08 02 A6 */	mflr r0
/* 801D5578 001D11D8  38 80 00 02 */	li r4, 2
/* 801D557C 001D11DC  90 01 00 24 */	stw r0, 0x24(r1)
/* 801D5580 001D11E0  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 801D5584 001D11E4  7C 7F 1B 78 */	mr r31, r3
/* 801D5588 001D11E8  38 61 00 08 */	addi r3, r1, 8
/* 801D558C 001D11EC  4B FF F3 C9 */	bl TRKConstructEvent
/* 801D5590 001D11F0  3C 60 80 49 */	lis r3, lbl_804907D0@ha
/* 801D5594 001D11F4  38 00 FF FF */	li r0, -1
/* 801D5598 001D11F8  38 83 07 D0 */	addi r4, r3, lbl_804907D0@l
/* 801D559C 001D11FC  93 E1 00 10 */	stw r31, 0x10(r1)
/* 801D55A0 001D1200  38 61 00 08 */	addi r3, r1, 8
/* 801D55A4 001D1204  90 04 00 00 */	stw r0, 0(r4)
/* 801D55A8 001D1208  4B FF F3 C5 */	bl TRKPostEvent
/* 801D55AC 001D120C  80 01 00 24 */	lwz r0, 0x24(r1)
/* 801D55B0 001D1210  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 801D55B4 001D1214  7C 08 03 A6 */	mtlr r0
/* 801D55B8 001D1218  38 21 00 20 */	addi r1, r1, 0x20
/* 801D55BC 001D121C  4E 80 00 20 */	blr

.global TRKGetInput
TRKGetInput:
/* 801D55C0 001D1220  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 801D55C4 001D1224  7C 08 02 A6 */	mflr r0
/* 801D55C8 001D1228  90 01 00 24 */	stw r0, 0x24(r1)
/* 801D55CC 001D122C  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 801D55D0 001D1230  48 00 00 51 */	bl TRKTestForPacket
/* 801D55D4 001D1234  7C 7F 1B 78 */	mr r31, r3
/* 801D55D8 001D1238  2C 1F FF FF */	cmpwi r31, -1
/* 801D55DC 001D123C  41 82 00 30 */	beq lbl_801D560C
/* 801D55E0 001D1240  4B FF FD FD */	bl TRKGetBuffer
/* 801D55E4 001D1244  38 61 00 08 */	addi r3, r1, 8
/* 801D55E8 001D1248  38 80 00 02 */	li r4, 2
/* 801D55EC 001D124C  4B FF F3 69 */	bl TRKConstructEvent
/* 801D55F0 001D1250  3C 60 80 49 */	lis r3, lbl_804907D0@ha
/* 801D55F4 001D1254  38 00 FF FF */	li r0, -1
/* 801D55F8 001D1258  38 83 07 D0 */	addi r4, r3, lbl_804907D0@l
/* 801D55FC 001D125C  93 E1 00 10 */	stw r31, 0x10(r1)
/* 801D5600 001D1260  38 61 00 08 */	addi r3, r1, 8
/* 801D5604 001D1264  90 04 00 00 */	stw r0, 0(r4)
/* 801D5608 001D1268  4B FF F3 65 */	bl TRKPostEvent
lbl_801D560C:
/* 801D560C 001D126C  80 01 00 24 */	lwz r0, 0x24(r1)
/* 801D5610 001D1270  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 801D5614 001D1274  7C 08 03 A6 */	mtlr r0
/* 801D5618 001D1278  38 21 00 20 */	addi r1, r1, 0x20
/* 801D561C 001D127C  4E 80 00 20 */	blr

.global TRKTestForPacket
TRKTestForPacket:
/* 801D5620 001D1280  94 21 F7 20 */	stwu r1, -0x8e0(r1)
/* 801D5624 001D1284  7C 08 02 A6 */	mflr r0
/* 801D5628 001D1288  90 01 08 E4 */	stw r0, 0x8e4(r1)
/* 801D562C 001D128C  93 E1 08 DC */	stw r31, 0x8dc(r1)
/* 801D5630 001D1290  48 00 40 55 */	bl TRKPollUART
/* 801D5634 001D1294  2C 03 00 00 */	cmpwi r3, 0
/* 801D5638 001D1298  41 81 00 0C */	bgt lbl_801D5644
/* 801D563C 001D129C  38 60 FF FF */	li r3, -1
/* 801D5640 001D12A0  48 00 00 9C */	b lbl_801D56DC
lbl_801D5644:
/* 801D5644 001D12A4  38 61 00 0C */	addi r3, r1, 0xc
/* 801D5648 001D12A8  38 81 00 08 */	addi r4, r1, 8
/* 801D564C 001D12AC  4B FF FD BD */	bl TRKGetFreeBuffer
/* 801D5650 001D12B0  7C 60 1B 78 */	mr r0, r3
/* 801D5654 001D12B4  80 61 00 08 */	lwz r3, 8(r1)
/* 801D5658 001D12B8  7C 1F 03 78 */	mr r31, r0
/* 801D565C 001D12BC  38 80 00 00 */	li r4, 0
/* 801D5660 001D12C0  4B FF FC A9 */	bl TRKSetBufferPosition
/* 801D5664 001D12C4  38 61 00 10 */	addi r3, r1, 0x10
/* 801D5668 001D12C8  38 80 00 40 */	li r4, 0x40
/* 801D566C 001D12CC  48 00 3F DD */	bl TRKReadUARTN
/* 801D5670 001D12D0  2C 03 00 00 */	cmpwi r3, 0
/* 801D5674 001D12D4  40 82 00 58 */	bne lbl_801D56CC
/* 801D5678 001D12D8  80 61 00 08 */	lwz r3, 8(r1)
/* 801D567C 001D12DC  38 81 00 10 */	addi r4, r1, 0x10
/* 801D5680 001D12E0  38 A0 00 40 */	li r5, 0x40
/* 801D5684 001D12E4  4B FF F9 F1 */	bl TRKAppendBuffer_ui8
/* 801D5688 001D12E8  80 61 00 10 */	lwz r3, 0x10(r1)
/* 801D568C 001D12EC  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 801D5690 001D12F0  34 83 FF C0 */	addic. r4, r3, -64
/* 801D5694 001D12F4  40 81 00 44 */	ble lbl_801D56D8
/* 801D5698 001D12F8  38 61 00 50 */	addi r3, r1, 0x50
/* 801D569C 001D12FC  48 00 3F AD */	bl TRKReadUARTN
/* 801D56A0 001D1300  2C 03 00 00 */	cmpwi r3, 0
/* 801D56A4 001D1304  40 82 00 18 */	bne lbl_801D56BC
/* 801D56A8 001D1308  80 61 00 08 */	lwz r3, 8(r1)
/* 801D56AC 001D130C  38 81 00 50 */	addi r4, r1, 0x50
/* 801D56B0 001D1310  80 A1 00 10 */	lwz r5, 0x10(r1)
/* 801D56B4 001D1314  4B FF F9 C1 */	bl TRKAppendBuffer_ui8
/* 801D56B8 001D1318  48 00 00 20 */	b lbl_801D56D8
lbl_801D56BC:
/* 801D56BC 001D131C  7F E3 FB 78 */	mr r3, r31
/* 801D56C0 001D1320  4B FF FC B9 */	bl TRKReleaseBuffer
/* 801D56C4 001D1324  3B E0 FF FF */	li r31, -1
/* 801D56C8 001D1328  48 00 00 10 */	b lbl_801D56D8
lbl_801D56CC:
/* 801D56CC 001D132C  7F E3 FB 78 */	mr r3, r31
/* 801D56D0 001D1330  4B FF FC A9 */	bl TRKReleaseBuffer
/* 801D56D4 001D1334  3B E0 FF FF */	li r31, -1
lbl_801D56D8:
/* 801D56D8 001D1338  7F E3 FB 78 */	mr r3, r31
lbl_801D56DC:
/* 801D56DC 001D133C  80 01 08 E4 */	lwz r0, 0x8e4(r1)
/* 801D56E0 001D1340  83 E1 08 DC */	lwz r31, 0x8dc(r1)
/* 801D56E4 001D1344  7C 08 03 A6 */	mtlr r0
/* 801D56E8 001D1348  38 21 08 E0 */	addi r1, r1, 0x8e0
/* 801D56EC 001D134C  4E 80 00 20 */	blr