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
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
|
.include "macros.inc"
.section .text, "ax" # 0x80006980 - 0x803E1E60
.global gdev_cc_initinterrupts
gdev_cc_initinterrupts:
/* 801D99F0 001D5650 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 801D99F4 001D5654 7C 08 02 A6 */ mflr r0
/* 801D99F8 001D5658 90 01 00 14 */ stw r0, 0x14(r1)
/* 801D99FC 001D565C 48 00 06 19 */ bl DBInitInterrupts
/* 801D9A00 001D5660 80 01 00 14 */ lwz r0, 0x14(r1)
/* 801D9A04 001D5664 38 60 00 00 */ li r3, 0
/* 801D9A08 001D5668 7C 08 03 A6 */ mtlr r0
/* 801D9A0C 001D566C 38 21 00 10 */ addi r1, r1, 0x10
/* 801D9A10 001D5670 4E 80 00 20 */ blr
.global gdev_cc_peek
gdev_cc_peek:
/* 801D9A14 001D5674 94 21 FA F0 */ stwu r1, -0x510(r1)
/* 801D9A18 001D5678 7C 08 02 A6 */ mflr r0
/* 801D9A1C 001D567C 90 01 05 14 */ stw r0, 0x514(r1)
/* 801D9A20 001D5680 93 E1 05 0C */ stw r31, 0x50c(r1)
/* 801D9A24 001D5684 48 00 06 45 */ bl DBQueryData
/* 801D9A28 001D5688 7C 7F 1B 79 */ or. r31, r3, r3
/* 801D9A2C 001D568C 41 81 00 0C */ bgt lbl_801D9A38
/* 801D9A30 001D5690 38 60 00 00 */ li r3, 0
/* 801D9A34 001D5694 48 00 00 3C */ b lbl_801D9A70
lbl_801D9A38:
/* 801D9A38 001D5698 7F E4 FB 78 */ mr r4, r31
/* 801D9A3C 001D569C 38 61 00 08 */ addi r3, r1, 8
/* 801D9A40 001D56A0 48 00 06 CD */ bl DBRead
/* 801D9A44 001D56A4 2C 03 00 00 */ cmpwi r3, 0
/* 801D9A48 001D56A8 40 82 00 1C */ bne lbl_801D9A64
/* 801D9A4C 001D56AC 3C 60 80 49 */ lis r3, lbl_80491290@ha
/* 801D9A50 001D56B0 7F E5 FB 78 */ mr r5, r31
/* 801D9A54 001D56B4 38 63 12 90 */ addi r3, r3, lbl_80491290@l
/* 801D9A58 001D56B8 38 81 00 08 */ addi r4, r1, 8
/* 801D9A5C 001D56BC 48 00 03 5D */ bl CircleBufferWriteBytes
/* 801D9A60 001D56C0 48 00 00 0C */ b lbl_801D9A6C
lbl_801D9A64:
/* 801D9A64 001D56C4 38 60 D8 E7 */ li r3, -10009
/* 801D9A68 001D56C8 48 00 00 08 */ b lbl_801D9A70
lbl_801D9A6C:
/* 801D9A6C 001D56CC 7F E3 FB 78 */ mr r3, r31
lbl_801D9A70:
/* 801D9A70 001D56D0 80 01 05 14 */ lwz r0, 0x514(r1)
/* 801D9A74 001D56D4 83 E1 05 0C */ lwz r31, 0x50c(r1)
/* 801D9A78 001D56D8 7C 08 03 A6 */ mtlr r0
/* 801D9A7C 001D56DC 38 21 05 10 */ addi r1, r1, 0x510
/* 801D9A80 001D56E0 4E 80 00 20 */ blr
.global gdev_cc_post_stop
gdev_cc_post_stop:
/* 801D9A84 001D56E4 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 801D9A88 001D56E8 7C 08 02 A6 */ mflr r0
/* 801D9A8C 001D56EC 90 01 00 14 */ stw r0, 0x14(r1)
/* 801D9A90 001D56F0 48 00 08 0D */ bl DBOpen
/* 801D9A94 001D56F4 80 01 00 14 */ lwz r0, 0x14(r1)
/* 801D9A98 001D56F8 38 60 00 00 */ li r3, 0
/* 801D9A9C 001D56FC 7C 08 03 A6 */ mtlr r0
/* 801D9AA0 001D5700 38 21 00 10 */ addi r1, r1, 0x10
/* 801D9AA4 001D5704 4E 80 00 20 */ blr
.global gdev_cc_pre_continue
gdev_cc_pre_continue:
/* 801D9AA8 001D5708 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 801D9AAC 001D570C 7C 08 02 A6 */ mflr r0
/* 801D9AB0 001D5710 90 01 00 14 */ stw r0, 0x14(r1)
/* 801D9AB4 001D5714 48 00 07 ED */ bl DBClose
/* 801D9AB8 001D5718 80 01 00 14 */ lwz r0, 0x14(r1)
/* 801D9ABC 001D571C 38 60 00 00 */ li r3, 0
/* 801D9AC0 001D5720 7C 08 03 A6 */ mtlr r0
/* 801D9AC4 001D5724 38 21 00 10 */ addi r1, r1, 0x10
/* 801D9AC8 001D5728 4E 80 00 20 */ blr
.global gdev_cc_write
gdev_cc_write:
/* 801D9ACC 001D572C 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 801D9AD0 001D5730 7C 08 02 A6 */ mflr r0
/* 801D9AD4 001D5734 90 01 00 14 */ stw r0, 0x14(r1)
/* 801D9AD8 001D5738 93 E1 00 0C */ stw r31, 0xc(r1)
/* 801D9ADC 001D573C 7C 9F 23 78 */ mr r31, r4
/* 801D9AE0 001D5740 93 C1 00 08 */ stw r30, 8(r1)
/* 801D9AE4 001D5744 7C 7E 1B 78 */ mr r30, r3
/* 801D9AE8 001D5748 80 0D 9F E8 */ lwz r0, lbl_8063F2A8-_SDA_BASE_(r13)
/* 801D9AEC 001D574C 2C 00 00 00 */ cmpwi r0, 0
/* 801D9AF0 001D5750 40 82 00 2C */ bne lbl_801D9B1C
/* 801D9AF4 001D5754 38 60 D8 EF */ li r3, -10001
/* 801D9AF8 001D5758 48 00 00 30 */ b lbl_801D9B28
/* 801D9AFC 001D575C 48 00 00 20 */ b lbl_801D9B1C
lbl_801D9B00:
/* 801D9B00 001D5760 7F C3 F3 78 */ mr r3, r30
/* 801D9B04 001D5764 7F E4 FB 78 */ mr r4, r31
/* 801D9B08 001D5768 48 00 06 85 */ bl DBWrite
/* 801D9B0C 001D576C 2C 03 00 00 */ cmpwi r3, 0
/* 801D9B10 001D5770 41 82 00 14 */ beq lbl_801D9B24
/* 801D9B14 001D5774 7F DE 1A 14 */ add r30, r30, r3
/* 801D9B18 001D5778 7F E3 F8 50 */ subf r31, r3, r31
lbl_801D9B1C:
/* 801D9B1C 001D577C 2C 1F 00 00 */ cmpwi r31, 0
/* 801D9B20 001D5780 41 81 FF E0 */ bgt lbl_801D9B00
lbl_801D9B24:
/* 801D9B24 001D5784 38 60 00 00 */ li r3, 0
lbl_801D9B28:
/* 801D9B28 001D5788 80 01 00 14 */ lwz r0, 0x14(r1)
/* 801D9B2C 001D578C 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 801D9B30 001D5790 83 C1 00 08 */ lwz r30, 8(r1)
/* 801D9B34 001D5794 7C 08 03 A6 */ mtlr r0
/* 801D9B38 001D5798 38 21 00 10 */ addi r1, r1, 0x10
/* 801D9B3C 001D579C 4E 80 00 20 */ blr
.global gdev_cc_read
gdev_cc_read:
/* 801D9B40 001D57A0 94 21 FA E0 */ stwu r1, -0x520(r1)
/* 801D9B44 001D57A4 7C 08 02 A6 */ mflr r0
/* 801D9B48 001D57A8 90 01 05 24 */ stw r0, 0x524(r1)
/* 801D9B4C 001D57AC BF 61 05 0C */ stmw r27, 0x50c(r1)
/* 801D9B50 001D57B0 7C 7B 1B 78 */ mr r27, r3
/* 801D9B54 001D57B4 3B A0 00 00 */ li r29, 0
/* 801D9B58 001D57B8 80 0D 9F E8 */ lwz r0, lbl_8063F2A8-_SDA_BASE_(r13)
/* 801D9B5C 001D57BC 2C 00 00 00 */ cmpwi r0, 0
/* 801D9B60 001D57C0 40 82 00 0C */ bne lbl_801D9B6C
/* 801D9B64 001D57C4 38 60 D8 EF */ li r3, -10001
/* 801D9B68 001D57C8 48 00 00 78 */ b lbl_801D9BE0
lbl_801D9B6C:
/* 801D9B6C 001D57CC 3C 60 80 49 */ lis r3, lbl_80491290@ha
/* 801D9B70 001D57D0 7C 9E 23 78 */ mr r30, r4
/* 801D9B74 001D57D4 3B E3 12 90 */ addi r31, r3, lbl_80491290@l
/* 801D9B78 001D57D8 48 00 00 38 */ b lbl_801D9BB0
lbl_801D9B7C:
/* 801D9B7C 001D57DC 3B A0 00 00 */ li r29, 0
/* 801D9B80 001D57E0 48 00 04 E9 */ bl DBQueryData
/* 801D9B84 001D57E4 7C 7C 1B 79 */ or. r28, r3, r3
/* 801D9B88 001D57E8 41 82 00 28 */ beq lbl_801D9BB0
/* 801D9B8C 001D57EC 7F C4 F3 78 */ mr r4, r30
/* 801D9B90 001D57F0 38 61 00 08 */ addi r3, r1, 8
/* 801D9B94 001D57F4 48 00 05 79 */ bl DBRead
/* 801D9B98 001D57F8 7C 7D 1B 79 */ or. r29, r3, r3
/* 801D9B9C 001D57FC 40 82 00 14 */ bne lbl_801D9BB0
/* 801D9BA0 001D5800 7F E3 FB 78 */ mr r3, r31
/* 801D9BA4 001D5804 7F 85 E3 78 */ mr r5, r28
/* 801D9BA8 001D5808 38 81 00 08 */ addi r4, r1, 8
/* 801D9BAC 001D580C 48 00 02 0D */ bl CircleBufferWriteBytes
lbl_801D9BB0:
/* 801D9BB0 001D5810 7F E3 FB 78 */ mr r3, r31
/* 801D9BB4 001D5814 48 00 03 5D */ bl CBGetBytesAvailableForRead
/* 801D9BB8 001D5818 7C 03 F0 40 */ cmplw r3, r30
/* 801D9BBC 001D581C 41 80 FF C0 */ blt lbl_801D9B7C
/* 801D9BC0 001D5820 28 1D 00 00 */ cmplwi r29, 0
/* 801D9BC4 001D5824 40 82 00 18 */ bne lbl_801D9BDC
/* 801D9BC8 001D5828 3C 60 80 49 */ lis r3, lbl_80491290@ha
/* 801D9BCC 001D582C 7F 64 DB 78 */ mr r4, r27
/* 801D9BD0 001D5830 38 63 12 90 */ addi r3, r3, lbl_80491290@l
/* 801D9BD4 001D5834 7F C5 F3 78 */ mr r5, r30
/* 801D9BD8 001D5838 48 00 00 D9 */ bl CircleBufferReadBytes
lbl_801D9BDC:
/* 801D9BDC 001D583C 7F A3 EB 78 */ mr r3, r29
lbl_801D9BE0:
/* 801D9BE0 001D5840 BB 61 05 0C */ lmw r27, 0x50c(r1)
/* 801D9BE4 001D5844 80 01 05 24 */ lwz r0, 0x524(r1)
/* 801D9BE8 001D5848 7C 08 03 A6 */ mtlr r0
/* 801D9BEC 001D584C 38 21 05 20 */ addi r1, r1, 0x520
/* 801D9BF0 001D5850 4E 80 00 20 */ blr
.global gdev_cc_close
gdev_cc_close:
/* 801D9BF4 001D5854 38 60 00 00 */ li r3, 0
/* 801D9BF8 001D5858 4E 80 00 20 */ blr
.global gdev_cc_open
gdev_cc_open:
/* 801D9BFC 001D585C 80 0D 9F E8 */ lwz r0, lbl_8063F2A8-_SDA_BASE_(r13)
/* 801D9C00 001D5860 2C 00 00 00 */ cmpwi r0, 0
/* 801D9C04 001D5864 41 82 00 0C */ beq lbl_801D9C10
/* 801D9C08 001D5868 38 60 D8 EB */ li r3, -10005
/* 801D9C0C 001D586C 4E 80 00 20 */ blr
lbl_801D9C10:
/* 801D9C10 001D5870 38 00 00 01 */ li r0, 1
/* 801D9C14 001D5874 38 60 00 00 */ li r3, 0
/* 801D9C18 001D5878 90 0D 9F E8 */ stw r0, lbl_8063F2A8-_SDA_BASE_(r13)
/* 801D9C1C 001D587C 4E 80 00 20 */ blr
.global gdev_cc_shutdown
gdev_cc_shutdown:
/* 801D9C20 001D5880 38 60 00 00 */ li r3, 0
/* 801D9C24 001D5884 4E 80 00 20 */ blr
.global gdev_cc_initialize
gdev_cc_initialize:
/* 801D9C28 001D5888 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 801D9C2C 001D588C 7C 08 02 A6 */ mflr r0
/* 801D9C30 001D5890 90 01 00 14 */ stw r0, 0x14(r1)
/* 801D9C34 001D5894 48 00 03 85 */ bl DBInitComm
/* 801D9C38 001D5898 3C 60 80 49 */ lis r3, lbl_80491290@ha
/* 801D9C3C 001D589C 3C 80 80 49 */ lis r4, lbl_80490D90@ha
/* 801D9C40 001D58A0 38 63 12 90 */ addi r3, r3, lbl_80491290@l
/* 801D9C44 001D58A4 38 A0 05 00 */ li r5, 0x500
/* 801D9C48 001D58A8 38 84 0D 90 */ addi r4, r4, lbl_80490D90@l
/* 801D9C4C 001D58AC 48 00 02 75 */ bl CircleBufferInitialize
/* 801D9C50 001D58B0 80 01 00 14 */ lwz r0, 0x14(r1)
/* 801D9C54 001D58B4 38 60 00 00 */ li r3, 0
/* 801D9C58 001D58B8 7C 08 03 A6 */ mtlr r0
/* 801D9C5C 001D58BC 38 21 00 10 */ addi r1, r1, 0x10
/* 801D9C60 001D58C0 4E 80 00 20 */ blr
.global OutputData
OutputData:
/* 801D9C64 001D58C4 2C 04 00 00 */ cmpwi r4, 0
/* 801D9C68 001D58C8 38 A0 00 00 */ li r5, 0
/* 801D9C6C 001D58CC 4C 81 00 20 */ blelr
/* 801D9C70 001D58D0 2C 04 00 08 */ cmpwi r4, 8
/* 801D9C74 001D58D4 38 64 FF F8 */ addi r3, r4, -8
/* 801D9C78 001D58D8 40 81 00 20 */ ble lbl_801D9C98
/* 801D9C7C 001D58DC 38 03 00 07 */ addi r0, r3, 7
/* 801D9C80 001D58E0 54 00 E8 FE */ srwi r0, r0, 3
/* 801D9C84 001D58E4 7C 09 03 A6 */ mtctr r0
/* 801D9C88 001D58E8 2C 03 00 00 */ cmpwi r3, 0
/* 801D9C8C 001D58EC 40 81 00 0C */ ble lbl_801D9C98
lbl_801D9C90:
/* 801D9C90 001D58F0 38 A5 00 08 */ addi r5, r5, 8
/* 801D9C94 001D58F4 42 00 FF FC */ bdnz lbl_801D9C90
lbl_801D9C98:
/* 801D9C98 001D58F8 7C 05 20 50 */ subf r0, r5, r4
/* 801D9C9C 001D58FC 7C 09 03 A6 */ mtctr r0
/* 801D9CA0 001D5900 7C 05 20 00 */ cmpw r5, r4
/* 801D9CA4 001D5904 4C 80 00 20 */ bgelr
lbl_801D9CA8:
/* 801D9CA8 001D5908 42 00 00 00 */ bdnz lbl_801D9CA8
/* 801D9CAC 001D590C 4E 80 00 20 */ blr
|