-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathd
424 lines (424 loc) · 13.5 KB
/
d
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
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
[1mdiff --git a/OP_EA.X68 b/OP_EA.X68[m
[1mindex c595519..0a5e4be 100644[m
[1m--- a/OP_EA.X68[m
[1m+++ b/OP_EA.X68[m
[36m@@ -1,18 +1,15 @@[m
[m
TEST ORG $1000 [m
[31m- MOVEQ #127,D1[m
[31m- MOVEQ #0,D4[m
[31m- MOVEQ #1,D7[m
[31m- MOVEQ #-127,D2[m
[31m- MOVEQ #-1,D2[m
[31m- MOVEQ #7,D2[m
[31m- MOVEQ #2,D5[m
[31m- MOVEQ #5,D3[m
[31m- MOVEQ #1,D1[m
[31m- MOVEQ #5,D3[m
[31m- MOVEQ #0,D6[m
[31m- MOVEQ #3,D1[m
[31m- [m
[32m+[m[41m [m
[32m+[m[32m ADDA.W D0,A0[m[41m [m
[32m+[m[32m ADDA.W A0,A1[m[41m [m
[32m+[m[32m ADDA.W (A1),A2[m[41m [m
[32m+[m[32m ADDA.W (A2)+,A3[m[41m [m
[32m+[m[32m ADDA.W -(A3),A4[m[41m [m
[32m+[m[32m ADDA.W $4000,A5[m[41m [m
[32m+[m[32m ADDA.W $A000,A6[m[41m [m
[32m+[m[32m ADDA.W #$70,A7[m[41m [m
[32m+[m[32m ADDA.W #$7000,A0[m[41m [m
[m
START ORG $6000[m
MOVEA.L #$1000,A2 ** TEST START ADDRESS[m
[36m@@ -345,9 +342,38 @@[m [mADDA_BUFFER[m
MOVE.B #'D', (A6)+[m
MOVE.B #'A', (A6)+[m
JSR GETSIZE_ADDA[m
[32m+[m[41m [m
[32m+[m[41m [m
[32m+[m[32m ;Okay, the directionality bit in D6 should determine which order we should process bits in?[m[41m[m
[32m+[m[32m JSR ADDA_SRC[m[41m[m
[32m+[m[32m MOVE.B #',', (A6)+[m[41m[m
MOVE.B #' ', (A6)+[m
[32m+[m[32m JSR ADDA_DEST[m[41m[m
RTS[m
[31m- [m
[32m+[m[41m [m
[32m+[m[32mADDA_SRC[m[41m[m
[32m+[m[32m CLR.L D7[m[41m[m
[32m+[m[32m JSR bits14to16[m[41m[m
[32m+[m[32m MOVE.B D3,D7 ** need to know if immediate or absolute[m[41m[m
[32m+[m[32m JSR bits11to13 ** mode to jump with[m[41m [m
[32m+[m[32m MOVE.B D3,D4[m[41m[m
[32m+[m[32m LEA jmp_mode,A0 *Index into the table[m[41m[m
[32m+[m[32m MULU #6,D3[m[41m[m
[32m+[m[32m JSR 0(A0,D3)[m[41m [m
[32m+[m[32m JSR bits14to16 ** register number if not absolute or immediate[m[41m[m
[32m+[m[32m CMP.B #$FF,D7[m[41m[m
[32m+[m[32m BNE NUM_INSERT[m[41m [m
[32m+[m[32m RTS[m[41m[m
[32m+[m[32mADDA_DEST[m[41m[m
[32m+[m[32m MOVE.W #%001,D3 ;Can only have a ADDRESS register.[m[41m[m
[32m+[m[32m MOVE.W D3,D4[m[41m[m
[32m+[m[32m LEA jmp_mode,A0 *Index into the table[m[41m[m
[32m+[m[32m MULU #6,D3 *Form offset[m[41m [m
[32m+[m[32m JSR 0(A0,D3) *Jump indirect with index[m[41m[m
[32m+[m[32m JSR bits5to7[m[41m[m
[32m+[m[32m JSR insert_num[m[41m[m
[32m+[m[32m RTS[m[41m[m
[32m+[m[41m[m
********************************************* [m
MOVEA_W[m
JSR MOVE_BUFFER[m
[36m@@ -1103,24 +1129,64 @@[m [mCMP_BUFFER[m
************************************************ [m
[m
************************************************ [m
[31m- [m
[32m+[m[32m*ADD[m[41m [m
[32m+[m[32m* JSR ADD_BUFFER[m[41m[m
[32m+[m[32m* RTS[m[41m[m
[32m+[m[32m*[m[41m [m
[32m+[m[32m*ADD_BUFFER[m[41m[m
[32m+[m[32m* MOVE.B #'A',(A6)+[m[41m[m
[32m+[m[32m* MOVE.B #'D', (A6)+[m[41m [m
[32m+[m[32m* MOVE.B #'D', (A6)+[m[41m[m
[32m+[m[32m* JSR GETSIZE_ADD[m[41m[m
[32m+[m[32m*[m[41m [m
[32m+[m[32m* ;Okay, the directionality bit in D6 should determine which order we should process bits in?[m[41m[m
[32m+[m[32m*[m[41m [m
[32m+[m[32m* CMP #1,D6[m[41m[m
[32m+[m[32m* BNE ADD_DIRECTION_REVERSED[m[41m[m
[32m+[m[32m* JSR ADD_SRC[m[41m[m
[32m+[m[32m* MOVE.B #',', (A6)+[m[41m[m
[32m+[m[32m* MOVE.B #' ', (A6)+[m[41m[m
[32m+[m[32m* JSR ADD_DEST[m[41m[m
[32m+[m[32m* RTS[m[41m[m
[32m+[m[32m*[m[41m [m
[32m+[m[32m*[m[41m [m
[32m+[m[32m*ADD_DIRECTION_REVERSED[m[41m[m
[32m+[m[32m* CLR.L D6[m[41m[m
[32m+[m[32m* JSR ADD_DEST[m[41m[m
[32m+[m[32m* MOVE.B #',', (A6)+[m[41m[m
[32m+[m[32m* MOVE.B #' ', (A6)+[m[41m[m
[32m+[m[32m* JSR ADD_SRC[m[41m [m
[32m+[m[32m* RTS[m[41m [m
[32m+[m[32m* ** VALID SIZES ARE B (000) , W (001) ,L (010) ---> <EA> + DN --> DN[m[41m [m
[32m+[m[32m* ** B (100) , W (101) ,L (110) ---> DN + <EA> --> <EA>[m[41m [m
[32m+[m[32m*[m[41m [m
[32m+[m[32m*ADD_SRC[m[41m[m
[32m+[m[32m* CLR.L D7[m[41m[m
[32m+[m[32m* JSR bits14to16[m[41m[m
[32m+[m[32m* MOVE.B D3,D7 ** need to know if immediate or absolute[m[41m[m
[32m+[m[32m* JSR bits11to13 ** mode to jump with[m[41m [m
[32m+[m[32m* MOVE.B D3,D4[m[41m[m
[32m+[m[32m* LEA jmp_mode,A0 *Index into the table[m[41m[m
[32m+[m[32m* MULU #6,D3[m[41m[m
[32m+[m[32m* JSR 0(A0,D3)[m[41m [m
[32m+[m[32m* JSR bits14to16 ** register number if not absolute or immediate[m[41m[m
[32m+[m[32m* CMP.B #$FF,D7[m[41m[m
[32m+[m[32m* BNE NUM_INSERT[m[41m [m
[32m+[m[32m* RTS[m[41m [m
[32m+[m[32m*ADD_DEST[m[41m[m
[32m+[m[32m* MOVE.W #%000,D3 ;Can only have a data register.[m[41m[m
[32m+[m[32m* MOVE.W D3,D4[m[41m[m
[32m+[m[32m* LEA jmp_mode,A0 *Index into the table[m[41m[m
[32m+[m[32m* MULU #6,D3 *Form offset[m[41m [m
[32m+[m[32m* JSR 0(A0,D3) *Jump indirect with index[m[41m[m
[32m+[m[32m* JSR bits5to7[m[41m[m
[32m+[m[32m* JSR insert_num[m[41m[m
[32m+[m[32m* RTS[m[41m[m
[32m+[m[32m*****************************[m[41m [m
MULS[m
JSR MULS_BUFFER ;returns with size bits in D3[m
[31m- CMP #%000,D3[m
[31m- BNE MULS_MAIN_SIZENOTWORD[m
[31m- CLR.L D3[m
[31m- JSR MULS_ISWORD[m
[31m- BRA MULS_DONE[m
[31m- [m
[31m-MULS_MAIN_SIZENOTWORD[m
[31m- CLR.L D3[m
[31m- JSR MULS_ISLONG[m
[31m- BRA MULS_DONE[m
[31m- [m
[31m- ;go to word, long, etc.[m
[31m- [m
[31m-MULS_DONE [m
[31m- RTS ;BRA PRINT_BUFFER[m
[32m+[m[32m RTS[m[41m[m
[32m+[m[41m[m
[m
[m
MULS_BUFFER[m
[36m@@ -1130,67 +1196,19 @@[m [mMULS_BUFFER[m
MOVE.B #'S', (A6)+[m
JSR GETSIZE_MULS[m
MOVE.B #' ', (A6)+[m
[31m- RTS[m
[32m+[m[32m CLR.L D6[m[41m[m
[32m+[m[32m JSR ADD_SRC[m[41m[m
[32m+[m[32m MOVE.B #',', (A6)+[m[41m[m
[32m+[m[32m MOVE.B #' ', (A6)+[m[41m[m
[32m+[m[32m JSR ADD_DEST[m[41m [m
[32m+[m[32m RTS[m[41m [m
[32m+[m[41m [m
[m
[m
[m
[31m-MULS_ISWORD[m
[31m- CLR.L D3[m
[31m- CLR.L D4[m
[31m- JSR bits11to13[m
[31m- CMP #%001,D3[m
[31m- BEQ INVALID_EA[m
[31m- MOVE D3,D4[m
[31m- LEA jmp_mode,A0 *Index into the table[m
[31m- MULU #6,D3 *Form offset [m
[31m- JSR 0(A0,D3) *Jump indirect with index [m
[31m- CLR.L D3[m
[31m- JSR bits14to16[m
[31m- JSR insert_num[m
[31m- [m
[31m- MOVE.B #',',(A6)+[m
[31m- MOVE.B #' ',(A6)+[m
[31m- MOVE.B #'D',(A6)+[m
[31m- [m
[31m- JSR bits5to7[m
[31m- JSR insert_num[m
[31m- CLR.L D3[m
[31m- CLR.L D4[m
[31m- RTS[m
[m
[m
[m
[31m-MULS_ISLONG[m
[31m-[m
[31m- CLR.L D7[m
[31m- JSR bits14to16[m
[31m- MOVE.B D3,D7 ** need to know if immediate or absolute[m
[31m- [m
[31m- [m
[31m- CLR.L D3[m
[31m- CLR.L D4[m
[31m- JSR bits11to13[m
[31m- JSR bits11to13[m
[31m- CMP #%001,D3[m
[31m- MOVE D3,D4[m
[31m- LEA jmp_mode,A0 *Index into the table[m
[31m- MULU #6,D3 *Form offset [m
[31m- JSR 0(A0,D3) *Jump indirect with index [m
[31m- CLR.L D3[m
[31m- JSR bits14to16[m
[31m- [m
[31m- CMP.B #$FF,D7[m
[31m- BNE NUM_INSERT [m
[31m- [m
[31m- MOVE.B #',',(A6)+[m
[31m- MOVE.B #' ',(A6)+[m
[31m- MOVE.B #'D',(A6)+[m
[31m- [m
[31m- MOVE.B #%100,D3[m
[31m- JSR insert_num[m
[31m- CLR.L D3[m
[31m- CLR.L D4[m
[31m- RTS[m
[m
************************************************ [m
[m
[36m@@ -1201,29 +1219,28 @@[m [mMULS_ISLONG[m
[m
[m
************************************************ [m
[31m-[m
AND [m
JSR AND_BUFFER[m
[31m- ;Okay, the directionality bit in D6 should determine which order we should process bits in?[m
[31m- CMP #1,D6[m
[31m- BNE CMP_DIRECTION_REVERSED ;?????[m
[31m- CLR.L D6[m
[31m- JSR CMP_SRC[m
[31m- MOVE.B #',', (A6)+[m
[31m- MOVE.B #' ', (A6)+[m
[31m- JSR CMP_DEST[m
RTS[m
[m
AND_BUFFER[m
MOVE.B #'A',(A6)+[m
MOVE.B #'N', (A6)+ [m
MOVE.B #'D', (A6)+[m
[31m- MOVE.B #'.', (A6)+[m
[31m- ** TODO: ADD SIZE BASED ON BITS 8 TO 10[m
[31m- ** VALID SIZES ARE B (000) , W (001) ,L (010) ---> <EA> + DN --> DN [m
[31m- ** B (100) , W (101) ,L (110) ---> DN + <EA> --> <EA> [m
[32m+[m[32m JSR GETSIZE_ADD[m[41m[m
[32m+[m[41m [m
[32m+[m[32m ;Okay, the directionality bit in D6 should determine which order we should process bits in?[m[41m[m
[32m+[m[41m [m
[32m+[m[32m CMP #1,D6[m[41m[m
[32m+[m[32m BNE ADD_DIRECTION_REVERSED[m[41m[m
[32m+[m[32m JSR ADD_SRC[m[41m[m
[32m+[m[32m MOVE.B #',', (A6)+[m[41m[m
MOVE.B #' ', (A6)+[m
[31m- RTS [m
[32m+[m[32m JSR ADD_DEST[m[41m[m
[32m+[m[32m RTS[m[41m[m
[32m+[m[41m [m
[32m+[m[41m [m
[32m+[m[41m [m
[m
[m
**************************************************[m
[36m@@ -2285,7 +2302,7 @@[m [mGETSIZE_ADD[m
CLR.L D6[m
****[m
JSR SIZEISBYTE[m
[31m- MOVE #1,D6[m
[32m+[m[32m MOVE #1, D6[m[41m[m
CLR.L D3[m
RTS[m
[m
[36m@@ -2472,6 +2489,9 @@[m [mBUFFER DC.L 1[m
[m
>>>>>>> d55ff32b3e77f68eccfd3618fa1977b3d64590fe[m
[m
[32m+[m[41m[m
[32m+[m[41m[m
[32m+[m[41m[m
*~Font name~Courier New~[m
*~Font size~10~[m
*~Tab type~1~[m
[1mdiff --git a/comprehensive_test.X68 b/comprehensive_test.X68[m
[1mindex 9392c30..f9cb0fd 100644[m
[1m--- a/comprehensive_test.X68[m
[1m+++ b/comprehensive_test.X68[m
[36m@@ -514,6 +514,7 @@[m [mROCKBOTTOM[m
[m
[m
[m
[32m+[m[41m[m
*~Font name~Courier New~[m
*~Font size~10~[m
*~Tab type~1~[m