-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathBcc_BRA.X68
More file actions
168 lines (110 loc) · 2.87 KB
/
Bcc_BRA.X68
File metadata and controls
168 lines (110 loc) · 2.87 KB
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
*------------------------------------------------------------------------------
* Title : Bcc_BRA
* Description: Handles parsing of BRA, BGT, BLE, and BEQ.
*------------------------------------------------------------------------------
ORG $2460
IF_Bcc_BRA
MOVE.W A4,D3
AND.W #$FF00,D3
CMP.W #$6000,D3
BEQ DISPLAY_BRA
CMP.W #$6E00,D3
BEQ DISPLAY_BGT
CMP.W #$6F00,D3
BEQ DISPLAY_BLE
CMP.W #$6700,D3
BEQ DISPLAY_BEQ
BRA IF_INVALID_OP
DISPLAY_BRA
LEA BRA_OUTPUT,A1
MOVE.B #14,D0
TRAP #15
MOVE.W A4,D3
AND.W #$00FF,D3
CMP.B #$00,D3
BEQ PARSE_DISPLACEMENT_WORD
CMP.B #$FF,D3
BEQ IF_INVALID_SIZE ;We don't handle 32 bit
BRA PARSE_DISPLACEMENT_BYTE
DISPLAY_BGT
LEA BGT_OUTPUT,A1
MOVE.B #14,D0
TRAP #15
MOVE.W A4,D3
AND.W #$00FF,D3
CMP.B #$00,D3
BEQ PARSE_DISPLACEMENT_WORD
CMP.B #$FF,D3
BEQ IF_INVALID_SIZE ;We don't handle 32 bit
BRA PARSE_DISPLACEMENT_BYTE
DISPLAY_BLE
LEA BLE_OUTPUT,A1
MOVE.B #14,D0
TRAP #15
MOVE.W A4,D3
AND.W #$00FF,D3
CMP.B #$00,D3
BEQ PARSE_DISPLACEMENT_WORD
CMP.B #$FF,D3
BEQ IF_INVALID_SIZE ;We don't handle 32 bit
BRA PARSE_DISPLACEMENT_BYTE
DISPLAY_BEQ
LEA BEQ_OUTPUT,A1
MOVE.B #14,D0
TRAP #15
MOVE.W A4,D3
AND.W #$00FF,D3
CMP.B #$00,D3
BEQ PARSE_DISPLACEMENT_WORD
CMP.B #$FF,D3
BEQ IF_INVALID_SIZE ;We don't handle 32 bit
BRA PARSE_DISPLACEMENT_BYTE
PARSE_DISPLACEMENT_BYTE
LEA B_OUTPUT,A1
MOVE.B #14,D0
TRAP #15
MOVE.L #$00000000,D1
AND.L #$000000FF,D3
MOVE.L D3,D4
AND.L #$000000A0,D4
CMP.B #$A0,D4
BEQ IF_NEGATIVE_BYTE
MOVE.L D3,D1
ADD.L A2,D1
ADDQ #2,D1
BRA DISPLAY_DISPLACEMENT_AS_ADDRESS
PARSE_DISPLACEMENT_WORD
LEA W_OUTPUT,A1
MOVE.B #14,D0
TRAP #15
MOVE.L #$00000000,D1
ADDQ #2,A2
MOVE.W (A2),D3
AND.L #$0000FFFF,D3
MOVE.L D3,D4
AND.L #$0000A000,D4
CMP.W #$A000,D4
BEQ IF_NEGATIVE_WORD
MOVE.L D3,D1
ADD.L A2,D1
BRA DISPLAY_DISPLACEMENT_AS_ADDRESS
IF_NEGATIVE_BYTE
MOVE.L #$FFFFFF00,D1
ADD.L D3,D1
ADD.L A2,D1
ADDQ #2,D1
BRA DISPLAY_DISPLACEMENT_AS_ADDRESS
IF_NEGATIVE_WORD
MOVE.L #$FFFF0000,D1
ADD.L D3,D1
ADD.L A2,D1
BRA DISPLAY_DISPLACEMENT_AS_ADDRESS
DISPLAY_DISPLACEMENT_AS_ADDRESS
MOVE.B #16,D2
MOVE.B #15,D0
TRAP #15
BRA ITERATE
*~Font name~Courier New~
*~Font size~10~
*~Tab type~1~
*~Tab size~4~