summaryrefslogtreecommitdiff
path: root/asm/MetroTRK/dispatch.s
blob: 66f9b52558b9057b5ff2b504417459e26d0a4c4b (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
.include "macros.inc"

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

.global TRKDispatchMessage
TRKDispatchMessage:
/* 801D577C 001D13DC  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 801D5780 001D13E0  7C 08 02 A6 */	mflr r0
/* 801D5784 001D13E4  38 80 00 00 */	li r4, 0
/* 801D5788 001D13E8  90 01 00 14 */	stw r0, 0x14(r1)
/* 801D578C 001D13EC  93 E1 00 0C */	stw r31, 0xc(r1)
/* 801D5790 001D13F0  3B E0 05 00 */	li r31, 0x500
/* 801D5794 001D13F4  93 C1 00 08 */	stw r30, 8(r1)
/* 801D5798 001D13F8  7C 7E 1B 78 */	mr r30, r3
/* 801D579C 001D13FC  4B FF FB 6D */	bl TRKSetBufferPosition
/* 801D57A0 001D1400  88 1E 00 14 */	lbz r0, 0x14(r30)
/* 801D57A4 001D1404  28 00 00 1A */	cmplwi r0, 0x1a
/* 801D57A8 001D1408  41 81 00 F8 */	bgt lbl_801D58A0
/* 801D57AC 001D140C  3C 60 80 42 */	lis r3, lbl_80423188@ha
/* 801D57B0 001D1410  54 00 10 3A */	slwi r0, r0, 2
/* 801D57B4 001D1414  38 63 31 88 */	addi r3, r3, lbl_80423188@l
/* 801D57B8 001D1418  7C 03 00 2E */	lwzx r0, r3, r0
/* 801D57BC 001D141C  7C 09 03 A6 */	mtctr r0
/* 801D57C0 001D1420  4E 80 04 20 */	bctr
/* 801D57C4 001D1424  7F C3 F3 78 */	mr r3, r30
/* 801D57C8 001D1428  48 00 11 35 */	bl TRKDoConnect
/* 801D57CC 001D142C  7C 7F 1B 78 */	mr r31, r3
/* 801D57D0 001D1430  48 00 00 D0 */	b lbl_801D58A0
/* 801D57D4 001D1434  7F C3 F3 78 */	mr r3, r30
/* 801D57D8 001D1438  48 00 10 89 */	bl TRKDoDisconnect
/* 801D57DC 001D143C  7C 7F 1B 78 */	mr r31, r3
/* 801D57E0 001D1440  48 00 00 C0 */	b lbl_801D58A0
/* 801D57E4 001D1444  7F C3 F3 78 */	mr r3, r30
/* 801D57E8 001D1448  48 00 0F FD */	bl TRKDoReset
/* 801D57EC 001D144C  7C 7F 1B 78 */	mr r31, r3
/* 801D57F0 001D1450  48 00 00 B0 */	b lbl_801D58A0
/* 801D57F4 001D1454  7F C3 F3 78 */	mr r3, r30
/* 801D57F8 001D1458  48 00 0F 71 */	bl TRKDoOverride
/* 801D57FC 001D145C  7C 7F 1B 78 */	mr r31, r3
/* 801D5800 001D1460  48 00 00 A0 */	b lbl_801D58A0
/* 801D5804 001D1464  7F C3 F3 78 */	mr r3, r30
/* 801D5808 001D1468  48 00 0F 59 */	bl TRKDoVersions
/* 801D580C 001D146C  7C 7F 1B 78 */	mr r31, r3
/* 801D5810 001D1470  48 00 00 90 */	b lbl_801D58A0
/* 801D5814 001D1474  7F C3 F3 78 */	mr r3, r30
/* 801D5818 001D1478  48 00 0F 41 */	bl TRKDoSupportMask
/* 801D581C 001D147C  7C 7F 1B 78 */	mr r31, r3
/* 801D5820 001D1480  48 00 00 80 */	b lbl_801D58A0
/* 801D5824 001D1484  7F C3 F3 78 */	mr r3, r30
/* 801D5828 001D1488  48 00 0C E9 */	bl TRKDoReadMemory
/* 801D582C 001D148C  7C 7F 1B 78 */	mr r31, r3
/* 801D5830 001D1490  48 00 00 70 */	b lbl_801D58A0
/* 801D5834 001D1494  7F C3 F3 78 */	mr r3, r30
/* 801D5838 001D1498  48 00 0A BD */	bl TRKDoWriteMemory
/* 801D583C 001D149C  7C 7F 1B 78 */	mr r31, r3
/* 801D5840 001D14A0  48 00 00 60 */	b lbl_801D58A0
/* 801D5844 001D14A4  7F C3 F3 78 */	mr r3, r30
/* 801D5848 001D14A8  48 00 08 89 */	bl TRKDoReadRegisters
/* 801D584C 001D14AC  7C 7F 1B 78 */	mr r31, r3
/* 801D5850 001D14B0  48 00 00 50 */	b lbl_801D58A0
/* 801D5854 001D14B4  7F C3 F3 78 */	mr r3, r30
/* 801D5858 001D14B8  48 00 05 BD */	bl TRKDoWriteRegisters
/* 801D585C 001D14BC  7C 7F 1B 78 */	mr r31, r3
/* 801D5860 001D14C0  48 00 00 40 */	b lbl_801D58A0
/* 801D5864 001D14C4  7F C3 F3 78 */	mr r3, r30
/* 801D5868 001D14C8  48 00 04 C9 */	bl TRKDoContinue
/* 801D586C 001D14CC  7C 7F 1B 78 */	mr r31, r3
/* 801D5870 001D14D0  48 00 00 30 */	b lbl_801D58A0
/* 801D5874 001D14D4  7F C3 F3 78 */	mr r3, r30
/* 801D5878 001D14D8  48 00 01 E5 */	bl TRKDoStep
/* 801D587C 001D14DC  7C 7F 1B 78 */	mr r31, r3
/* 801D5880 001D14E0  48 00 00 20 */	b lbl_801D58A0
/* 801D5884 001D14E4  7F C3 F3 78 */	mr r3, r30
/* 801D5888 001D14E8  48 00 01 09 */	bl TRKDoStop
/* 801D588C 001D14EC  7C 7F 1B 78 */	mr r31, r3
/* 801D5890 001D14F0  48 00 00 10 */	b lbl_801D58A0
/* 801D5894 001D14F4  7F C3 F3 78 */	mr r3, r30
/* 801D5898 001D14F8  48 00 00 2D */	bl TRKDoSetOption
/* 801D589C 001D14FC  7C 7F 1B 78 */	mr r31, r3
lbl_801D58A0:
/* 801D58A0 001D1500  80 01 00 14 */	lwz r0, 0x14(r1)
/* 801D58A4 001D1504  7F E3 FB 78 */	mr r3, r31
/* 801D58A8 001D1508  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 801D58AC 001D150C  83 C1 00 08 */	lwz r30, 8(r1)
/* 801D58B0 001D1510  7C 08 03 A6 */	mtlr r0
/* 801D58B4 001D1514  38 21 00 10 */	addi r1, r1, 0x10
/* 801D58B8 001D1518  4E 80 00 20 */	blr

.global TRKInitializeDispatcher
TRKInitializeDispatcher:
/* 801D58BC 001D151C  38 60 00 00 */	li r3, 0
/* 801D58C0 001D1520  4E 80 00 20 */	blr