forked from peterstanton/TeamAwesome-project
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathOPCODES_subroutine.L68
432 lines (428 loc) · 26 KB
/
OPCODES_subroutine.L68
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
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
00006000 Starting Address
Assembler used: EASy68K Editor/Assembler v5.15.04
Created On: 5/23/2017 8:36:01 AM
00006000 1 START ORG $6000
00006000 4FF9 0000A000 2 LEA $A000,SP *Load the SP
00006006 41F9 00006252 3 LEA jmp_table,A0 *Index into the table
0000600C 4DF9 0000643A 4 LEA BUFFER, A6 * Load buffer into A6
00006012 4283 5 CLR.L D3 *Zero it
00006014 363C 4EB9 6 MOVE.W #$4EB9,D3 *We'll play with it here
00006018 3A03 7 MOVE.W D3,D5
0000601A 183C 000C 8 MOVE.B #12,D4 *Shift 12 bits to the right
0000601E 9
0000601E 10
0000601E E86B 11 LSR.W D4,D3 *Move the bits
00006020 C6FC 0006 12 MULU #6,D3 *Form offset
00006024 4EB0 3000 13 JSR 0(A0,D3) *Jump indirect with index
00006028 14
00006028 15 INCLUDE 'definitions.x68'
00006028 16
00006028 =0000000D 17 CR EQU $0D carriage return
00006028 =0000000A 18 LF EQU $0A line feed
00006028= 43 53 53 20 34 32 ... 19 welcome_msg DC.B 'CSS 422 Disassembler Final Project',CR,LF
0000604C= 42 79 20 54 65 61 ... 20 DC.B 'By Team Awesome (Olga Rocheeva, Dwina Solihin, Peter Stanton)',CR,LF,0
0000608C= 45 6E 74 65 72 20 ... 21 location_start_msg DC.B 'Enter Start location address',CR,LF,0
000060AB= 45 6E 74 65 72 20 ... 22 location_end_msg DC.B 'Enter End location address',CR,LF,0
000060C8= 41 64 64 72 65 73 ... 23 addr_oddBit_msg DC.B 'Address cannot end on an odd byte.',CR,LF,CR,LF,0
000060EF= 45 6E 64 69 6E 67 ... 24 addr_order_check DC.B 'Ending Address cannot go before the starting address.',CR,LF,CR,LF,0
00006129= 50 72 65 73 73 20 ... 25 pause_msg DC.B 'Press enter to continue!',CR,LF
00006143= 52 65 61 63 68 65 ... 26 endTest_msg DC.B 'Reached end of test data.', CR,LF
0000615E= 54 72 79 20 61 6E ... 27 DC.B 'Try another location? (yes/no): ',0
0000617F= 0D 0A 00 28 linebreak DC.B CR,LF,0
00006182 29
00006182= 44 41 54 41 00 30 Invalid_disp DC.B 'DATA',0
00006187= 57 52 4F 4E 47 45 ... 31 InvalidEA_disp DC.B 'WRONGEA',0
0000618F 32
0000618F= 4E 4F 50 00 33 NOP_disp DC.B 'NOP',0
00006193= 4D 4F 56 45 00 34 MOVE_disp DC.B 'MOVE',0
00006198= 4D 4F 56 45 41 00 35 MOVEA_disp DC.B 'MOVEA',0
0000619E= 4D 4F 56 45 51 00 36 MOVEQ_disp DC.B 'MOVEQ',0
000061A4= 4D 4F 56 45 4D 00 37 MOVEM_disp DC.B 'MOVEM',0
000061AA= 41 44 44 00 38 ADD_disp DC.B 'ADD',0
000061AE= 41 44 44 41 00 39 ADDA_disp DC.B 'ADDA',0
000061B3= 41 44 44 49 00 40 ADDI_disp DC.B 'ADDI',0
000061B8= 41 44 44 51 00 41 ADDQ_disp DC.B 'ADDQ',0
000061BD= 53 55 42 00 42 SUB_disp DC.B 'SUB',0
000061C1= 4D 55 4C 53 00 43 MULS_disp DC.B 'MULS',0
000061C6= 44 49 56 55 00 44 DIVU_disp DC.B 'DIVU',0
000061CB= 4C 45 41 00 45 LEA_disp DC.B 'LEA',0
000061CF= 43 4C 52 00 46 CLR_disp DC.B 'CLR',0
000061D3= 41 4E 44 00 47 AND_disp DC.B 'AND',0
000061D7= 4F 52 00 48 OR_disp DC.B 'OR',0
000061DA= 4C 53 4C 00 49 LSL_disp DC.B 'LSL',0
000061DE= 4C 53 52 00 50 LSR_disp DC.B 'LSR',0
000061E2= 41 53 4C 00 51 ASL_disp DC.B 'ASL',0
000061E6= 41 53 52 00 52 ASR_disp DC.B 'ASR',0
000061EA= 52 4F 4C 00 53 ROL_disp DC.B 'ROL',0
000061EE= 52 4F 52 00 54 ROR_disp DC.B 'ROR',0
000061F2= 4A 53 52 00 55 JSR_disp DC.B 'JSR',0
000061F6= 52 54 53 00 56 RTS_disp DC.B 'RTS',0
000061FA= 42 43 43 00 57 BCC_disp DC.B 'BCC',0
000061FE= 42 47 54 00 58 BGT_disp DC.B 'BGT',0
00006202= 42 4C 45 00 59 BLE_disp DC.b 'BLE',0
00006206 60
00006206 61
00006206= 30 00 62 hexaTable DC.B '0',0
00006208= 31 00 63 DC.B '1',0
0000620A= 32 00 64 DC.B '2',0
0000620C= 33 00 65 DC.B '3',0
0000620E= 34 00 66 DC.B '4',0
00006210= 35 00 67 DC.B '5',0
00006212= 36 00 68 DC.B '6',0
00006214= 37 00 69 DC.B '7',0
00006216= 38 00 70 DC.B '8',0
00006218= 39 00 71 DC.B '9',0
0000621A= 41 00 72 DC.B 'A',0
0000621C= 42 00 73 DC.B 'B',0
0000621E= 43 00 74 DC.B 'C',0
00006220= 44 00 75 DC.B 'D',0
00006222= 45 00 76 DC.B 'E',0
00006224= 46 00 77 DC.B 'F',0
00006226= 23 00 78 poundsign DC.B '#',0
00006228= 24 00 79 dollarsign DC.B '$',0
0000622A= 2B 00 80 plussign DC.B '+',0
0000622C= 2D 00 81 minussign DC.B '-',0
0000622E= 2C 00 82 commasign DC.B ',',0
00006230= 2F 00 83 backslashsigh DC.B '/',0
00006232= 28 00 84 openparen DC.B '(',0
00006234= 29 00 85 closeparen DC.B ')',0
00006236= 20 00 86 space DC.B ' ',0
00006238= 2E 42 00 87 size_b DC.B '.B',0
0000623B= 2E 57 00 88 size_w DC.B '.W',0
0000623E= 2E 4C 00 89 size_l DC.B '.L',0
00006241 90
00006241 91 linecount DS.B 1 *storeage for lines on a screen
00006242= 01 92 input_buffer DC.B 1 *creates input buffer for ASCII string
00006244 93 location_startData DS.L 1 *location on where to start reading data
00006248 94 location_endData DS.L 1 *location on where to end reading data
0000624C 95 table_length DS.B 1 *Number of spaces in the table to print to console
0000624D 96
0000624D 97
0000624D 98 -------------------- end include --------------------
0000624D 99
0000624D 100 EXIT
0000624E FFFF FFFF 101 SIMHALT
00006252 102
00006252 4EF9 000062B2 103 jmp_table JMP code0000
00006258 104
00006258 4EF9 000062B6 105 JMP code0001
0000625E 106
0000625E 4EF9 000062BA 107 JMP code0010
00006264 108
00006264 4EF9 000062BE 109 JMP code0011
0000626A 110
0000626A 4EF9 000062C2 111 JMP code0100
00006270 112
00006270 4EF9 00006390 113 JMP code0101
00006276 114
00006276 4EF9 00006394 115 JMP code0110
0000627C 116
0000627C 4EF9 00006398 117 JMP code0111
00006282 118
00006282 4EF9 0000639C 119 JMP code1000
00006288 120
00006288 121 * DIVU
00006288 122 * OR
00006288 123
00006288 4EF9 000063A0 124 JMP code1001
0000628E 125
0000628E 4EF9 000063A4 126 JMP code1010
00006294 127
00006294 4EF9 000063A8 128 JMP code1011
0000629A 129
0000629A 4EF9 000063AA 130 JMP code1100
000062A0 131
000062A0 4EF9 000063AE 132 JMP code1101
000062A6 133
000062A6 4EF9 000063B2 134 JMP code1110
000062AC 135
000062AC 4EF9 000063B6 136 JMP code1111
000062B2 137
000062B2 138
000062B2 4E72 2700 139 code0000 STOP #$2700
000062B6 140
000062B6 4E72 2700 141 code0001 STOP #$2700
000062BA 142
000062BA 4E72 2700 143 code0010 STOP #$2700
000062BE 144
000062BE 4E72 2700 145 code0011 STOP #$2700
000062C2 146
000062C2 147 code0100
000062C2 4EB9 00006434 148 JSR COPY_OPCODE // Makes a copy of Opcode into d2
000062C8 149
000062C8 150 *NOP
000062C8 C47C 0FFF 151 AND #%0000111111111111,D2
000062CC B4BC 00000E79 152 CMP.L #%0000111001111001, D2
000062D2 6700 00E6 153 BEQ NOP
000062D6 154
000062D6 155 *RTS
000062D6 C47C 0FFF 156 AND #%0000111111111111,D2
000062DA B4BC 00000E75 157 CMP.L #%0000111001110101, D2
000062E0 6700 00E6 158 BEQ RTS
000062E4 159
000062E4 160 *JSR
000062E4 C47C 0FC0 161 AND #%0000111111000000,D2
000062E8 B4BC 00000E80 162 CMP.L #%0000111010000000,D2
000062EE 6700 00E6 163 BEQ JSR
000062F2 164
000062F2 165 * MOVEM
000062F2 166 ** 0 1 0 0 1 | D | 0 0 1 | S M Xn
000062F2 167 ** AND #%0000111110000000,D2
000062F2 168 * DATA REGISTER
000062F2 169 ** CMP.L #%0000100010000000, D2
000062F2 170 ** JSR MOVEM
000062F2 171 * ADDRESS REGISTER (DECREMENTED)
000062F2 172 ** CMP.L #%0000110010000000, D2
000062F2 173 ** JSR MOVEM
000062F2 174
000062F2 175 *LEA
000062F2 4EB9 0000631E 176 JSR LEA_buffer
000062F8 4EB9 00006344 177 JSR bits8to10 // 1 1 1
000062FE B47C 0007 178 CMP #7, D2
00006302 6600 0088 179 BNE INVALID
00006306 4EB9 00006356 180 JSR bits11to13 // source mode
0000630C 4EB9 00006368 181 JSR bits14to16 // source address
00006312 4EB9 00006330 182 JSR bits5to7 // destination register (will be address)
00006318 4EB9 00006378 183 JSR An_buffer
0000631E 184
0000631E 185 LEA_buffer
0000631E 3CFC 004C 186 MOVE.W #'L',(A6)+
00006322 3CFC 0045 187 MOVE.W #'E', (A6)+
00006326 3CFC 0041 188 MOVE.W #'A', (A6)+
0000632A 3CFC 0020 189 MOVE.W #' ', (A6)+
0000632E 4E75 190 RTS
00006330 191
00006330 192
00006330 193 bits5to7
00006330 4243 194 CLR D3
00006332 4EB9 00006434 195 JSR COPY_OPCODE // opcode copied to D2
00006338 C47C 0E00 196 AND #%0000111000000000, D2
0000633C E09A 197 ROR.L #8, D2 // rotate bits so isolated at the end
0000633E E29A 198 ROR.L #1, D2
00006340 3602 199 MOVE.W D2,D3 // moving isolated bits into d3
00006342 4E75 200 RTS
00006344 201 bits8to10
00006344 4243 202 CLR D3
00006346 4EB9 00006434 203 JSR COPY_OPCODE // opcode copied to D2
0000634C C47C 01C0 204 AND #%0000000111000000, D2
00006350 EC9A 205 ROR.L #6, D2 // rotate bits so isolated at the end
00006352 3602 206 MOVE.W D2,D3 // moving isolated bits into d3
00006354 4E75 207 RTS
00006356 208
00006356 209 bits11to13
00006356 4243 210 CLR D3
00006358 4EB9 00006434 211 JSR COPY_OPCODE // opcode copied to D2
0000635E C47C 0038 212 AND #%0000000000111000, D2
00006362 E69A 213 ROR.L #3, D2 // rotate bits so isolated at the end
00006364 3602 214 MOVE.W D2,D3 // moving isolated bits into d3
00006366 4E75 215 RTS
00006368 216
00006368 217 bits14to16
00006368 4243 218 CLR D3
0000636A 4EB9 00006434 219 JSR COPY_OPCODE // opcode copied to D2
00006370 C47C 0007 220 AND #%0000000000000111, D2
00006374 3602 221 MOVE.W D2,D3 // moving isolated bits into d3
00006376 4E75 222 RTS
00006378 223
00006378 224
00006378 225 An_buffer
00006378 3CFC 0041 226 MOVE.W #'A',(A6)+
0000637C 3CC6 227 MOVE.W D6, (A6)+ ** TODO: TRYING TO MOVE DECIMAL REPRESENTATION
0000637E 228
0000637E 229 ** TODO: TRYING TO TEST PRINT!
0000637E 43F9 0000643A 230 LEA BUFFER, A1
00006384 303C 000E 231 MOVE.W #14,D0
00006388 4E4F 232 TRAP #15
0000638A 4E75 233 RTS
0000638C 234
0000638C 235 INVALID
0000638C 236 *** CLEAR OUT A6
0000638C 237 ** PUT INVALID MESSAGE INTO A6
0000638C 6000 FEBF 238 BRA EXIT
00006390 239
00006390 240
00006390 241
00006390 242
00006390 4E72 2700 243 code0101 STOP #$2700
00006394 244
00006394 4E72 2700 245 code0110 STOP #$2700
00006398 246
00006398 4E72 2700 247 code0111 STOP #$2700
0000639C 248
0000639C 4E72 2700 249 code1000 STOP #$2700
000063A0 250
000063A0 4E72 2700 251 code1001 STOP #$2700
000063A4 252
000063A4 4E72 2700 253 code1010 STOP #$2700
000063A8 254
000063A8 60FE 255 code1011 BRA code1011
000063AA 256
000063AA 257
000063AA 258
000063AA 4E72 2700 259 code1100 STOP #$2700
000063AE 260
000063AE 4E72 2700 261 code1101 STOP #$2700
000063B2 262
000063B2 4E72 2700 263 code1110 STOP #$2700
000063B6 264
000063B6 4E72 2700 265 code1111 STOP #$2700
000063BA 266
000063BA 43F8 618F 267 NOP LEA NOP_disp,A1
000063BE 103C 000E 268 MOVE.B #14,D0
000063C2 4E4F 269 TRAP #15
000063C4 6000 FE87 270 BRA EXIT
000063C8 271
000063C8 272 RTS
000063C8 43F8 61F6 273 LEA RTS_disp,A1
000063CC 103C 000E 274 MOVE.B #14,D0
000063D0 4E4F 275 TRAP #15
000063D2 6000 FE79 276 BRA EXIT
000063D6 277 JSR
000063D6 4DF9 0000643A 278 LEA BUFFER, A6
000063DC 1CFC 004A 279 MOVE.B #'J', (A6)+
000063E0 1CFC 0053 280 MOVE.B #'S', (A6)+
000063E4 1CFC 0052 281 MOVE.B #'R', (A6)+
000063E8 1CFC 0020 282 MOVE.B #' ', (A6)+
000063EC 43F9 0000643A 283 LEA BUFFER, A1
000063F2 284 ** BITS 10 - 12 MODE
000063F2 285 ** BITS 13 - 16 REGISTER
000063F2 103C 000E 286 MOVE.B #14,D0
000063F6 4E4F 287 TRAP #15
000063F8 6000 FE53 288 BRA EXIT
000063FC 289
000063FC 290 MOVEM
000063FC 291
000063FC 292 ** SIZE SUBROUTINE
000063FC 293 ** 0 1 0 0 1 | D | 0 0 1 | S M Xn
000063FC C47C 0040 294 AND #%0000000001000000,D2
00006400 295 * WORD
00006400 B4BC 00000040 296 CMP.L #%0000000001000000,D2
00006406 4EB9 0000641C 297 JSR MOVEM_W
0000640C 298 *LONG
0000640C B4BC 00000040 299 CMP.L #%0000000001000000,D2
00006412 300 ** JSR MOVEM_L
00006412 103C 000E 301 MOVE.B #14,D0
00006416 4E4F 302 TRAP #15
00006418 6000 FE33 303 BRA EXIT
0000641C 304
0000641C 305 MOVEM_W
0000641C 43F8 61A4 306 LEA MOVEM_disp,A1
00006420 307 * PRINT MOVEM
00006420 103C 000E 308 MOVE.B #14,D0
00006424 4E4F 309 TRAP #15
00006426 310
00006426 311 * PRINT WORD PORTION
00006426 41F8 623B 312 LEA size_w, A0
0000642A 103C 000E 313 MOVE.B #14,D0
0000642E 4E4F 314 TRAP #15
00006430 315
00006430 6000 FE1B 316 BRA EXIT
00006434 317
00006434 318
00006434 319 COPY_OPCODE
00006434 320 ** HOLDS COPY OF OPCODE TO BE MANIPULATED
00006434 4242 321 CLR D2
00006436 3405 322 MOVE.W D5,D2
00006438 4E75 323 RTS
0000643A 324
0000643A 325
0000643A 326
0000643A= 20 20 20 20 20 00 327 BUFFER DC.B ' ',0
00006440 328
00006440 329
00006440 330 END START
No errors detected
No warnings generated
SYMBOL TABLE INFORMATION
Symbol-name Value
-------------------------
ADDA_DISP 61AE
ADDI_DISP 61B3
ADDQ_DISP 61B8
ADDR_ODDBIT_MSG 60C8
ADDR_ORDER_CHECK 60EF
ADD_DISP 61AA
AND_DISP 61D3
AN_BUFFER 6378
ASL_DISP 61E2
ASR_DISP 61E6
BACKSLASHSIGH 6230
BCC_DISP 61FA
BGT_DISP 61FE
BITS11TO13 6356
BITS14TO16 6368
BITS5TO7 6330
BITS8TO10 6344
BLE_DISP 6202
BUFFER 643A
CLOSEPAREN 6234
CLR_DISP 61CF
CODE0000 62B2
CODE0001 62B6
CODE0010 62BA
CODE0011 62BE
CODE0100 62C2
CODE0101 6390
CODE0110 6394
CODE0111 6398
CODE1000 639C
CODE1001 63A0
CODE1010 63A4
CODE1011 63A8
CODE1100 63AA
CODE1101 63AE
CODE1110 63B2
CODE1111 63B6
COMMASIGN 622E
COPY_OPCODE 6434
CR D
DIVU_DISP 61C6
DOLLARSIGN 6228
ENDTEST_MSG 6143
EXIT 624D
HEXATABLE 6206
INPUT_BUFFER 6242
INVALID 638C
INVALIDEA_DISP 6187
INVALID_DISP 6182
JMP_TABLE 6252
JSR 63D6
JSR_DISP 61F2
LEA_BUFFER 631E
LEA_DISP 61CB
LF A
LINEBREAK 617F
LINECOUNT 6241
LOCATION_ENDDATA 6248
LOCATION_END_MSG 60AB
LOCATION_STARTDATA 6244
LOCATION_START_MSG 608C
LSL_DISP 61DA
LSR_DISP 61DE
MINUSSIGN 622C
MOVEA_DISP 6198
MOVEM 63FC
MOVEM_DISP 61A4
MOVEM_W 641C
MOVEQ_DISP 619E
MOVE_DISP 6193
MULS_DISP 61C1
NOP 63BA
NOP_DISP 618F
OPENPAREN 6232
OR_DISP 61D7
PAUSE_MSG 6129
PLUSSIGN 622A
POUNDSIGN 6226
ROL_DISP 61EA
ROR_DISP 61EE
RTS 63C8
RTS_DISP 61F6
SIZE_B 6238
SIZE_L 623E
SIZE_W 623B
SPACE 6236
START 6000
SUB_DISP 61BD
TABLE_LENGTH 624C
WELCOME_MSG 6028