OpenCores
URL https://opencores.org/ocsvn/openmsp430/openmsp430/trunk

Subversion Repositories openmsp430

[/] [openmsp430/] [trunk/] [core/] [sim/] [rtl_sim/] [src/] [sing-op_rrc.s43] - Blame information for rev 111

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 olivier.gi
/*===========================================================================*/
2
/* Copyright (C) 2001 Authors                                                */
3
/*                                                                           */
4
/* This source file may be used and distributed without restriction provided */
5
/* that this copyright statement is not removed from the file and that any   */
6
/* derivative work contains the original copyright notice and the associated */
7
/* disclaimer.                                                               */
8
/*                                                                           */
9
/* This source file is free software; you can redistribute it and/or modify  */
10
/* it under the terms of the GNU Lesser General Public License as published  */
11
/* by the Free Software Foundation; either version 2.1 of the License, or    */
12
/* (at your option) any later version.                                       */
13
/*                                                                           */
14
/* This source is distributed in the hope that it will be useful, but WITHOUT*/
15
/* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or     */
16
/* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public       */
17
/* License for more details.                                                 */
18
/*                                                                           */
19
/* You should have received a copy of the GNU Lesser General Public License  */
20
/* along with this source; if not, write to the Free Software Foundation,    */
21
/* Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA        */
22
/*                                                                           */
23
/*===========================================================================*/
24
/*                 SINGLE-OPERAND ARITHMETIC: RRC[.B] INSTRUCTION            */
25
/*---------------------------------------------------------------------------*/
26
/* Test the RRC[.B] instruction.                                             */
27 18 olivier.gi
/*                                                                           */
28
/* Author(s):                                                                */
29
/*             - Olivier Girard,    olgirard@gmail.com                       */
30
/*                                                                           */
31
/*---------------------------------------------------------------------------*/
32 19 olivier.gi
/* $Rev: 111 $                                                                */
33
/* $LastChangedBy: olivier.girard $                                          */
34
/* $LastChangedDate: 2011-05-20 22:39:02 +0200 (Fri, 20 May 2011) $          */
35 2 olivier.gi
/*===========================================================================*/
36
 
37 111 olivier.gi
.set    DMEM_BASE, (__data_start     )
38
.set    DMEM_200,  (__data_start+0x00)
39
.set    DMEM_202,  (__data_start+0x02)
40
.set    DMEM_204,  (__data_start+0x04)
41
.set    DMEM_206,  (__data_start+0x06)
42
.set    DMEM_208,  (__data_start+0x08)
43
.set    DMEM_209,  (__data_start+0x09)
44
.set    DMEM_20A,  (__data_start+0x0A)
45
.set    DMEM_20B,  (__data_start+0x0B)
46
.set    DMEM_20C,  (__data_start+0x0C)
47
.set    DMEM_20D,  (__data_start+0x0D)
48
.set    DMEM_20E,  (__data_start+0x0E)
49
.set    DMEM_20F,  (__data_start+0x0F)
50
.set    DMEM_210,  (__data_start+0x10)
51
.set    DMEM_212,  (__data_start+0x12)
52
.set    DMEM_214,  (__data_start+0x14)
53
.set    DMEM_216,  (__data_start+0x16)
54
.set    DMEM_218,  (__data_start+0x18)
55
.set    DMEM_219,  (__data_start+0x19)
56
.set    DMEM_21A,  (__data_start+0x1A)
57
.set    DMEM_21B,  (__data_start+0x1B)
58
.set    DMEM_21C,  (__data_start+0x1C)
59
.set    DMEM_21D,  (__data_start+0x1D)
60
.set    DMEM_21E,  (__data_start+0x1E)
61
.set    DMEM_21F,  (__data_start+0x1F)
62
.set    DMEM_220,  (__data_start+0x20)
63
.set    DMEM_222,  (__data_start+0x22)
64
.set    DMEM_224,  (__data_start+0x24)
65
.set    DMEM_226,  (__data_start+0x26)
66
.set    DMEM_228,  (__data_start+0x28)
67
.set    DMEM_22A,  (__data_start+0x2A)
68
.set    DMEM_22C,  (__data_start+0x2C)
69
.set    DMEM_22E,  (__data_start+0x2E)
70
.set    DMEM_230,  (__data_start+0x30)
71
.set    DMEM_232,  (__data_start+0x32)
72
.set    DMEM_234,  (__data_start+0x34)
73
.set    DMEM_236,  (__data_start+0x36)
74
.set    DMEM_238,  (__data_start+0x38)
75
.set    DMEM_239,  (__data_start+0x39)
76
.set    DMEM_23A,  (__data_start+0x3A)
77
.set    DMEM_23B,  (__data_start+0x3B)
78
.set    DMEM_23C,  (__data_start+0x3C)
79
.set    DMEM_23D,  (__data_start+0x3D)
80
.set    DMEM_23E,  (__data_start+0x3E)
81
.set    DMEM_23F,  (__data_start+0x3F)
82
.set    DMEM_240,  (__data_start+0x40)
83
.set    DMEM_242,  (__data_start+0x42)
84
.set    DMEM_244,  (__data_start+0x44)
85
.set    DMEM_246,  (__data_start+0x46)
86
.set    DMEM_248,  (__data_start+0x48)
87
.set    DMEM_249,  (__data_start+0x49)
88
.set    DMEM_24A,  (__data_start+0x4A)
89
.set    DMEM_24B,  (__data_start+0x4B)
90
.set    DMEM_24C,  (__data_start+0x4C)
91
.set    DMEM_24D,  (__data_start+0x4D)
92
.set    DMEM_24E,  (__data_start+0x4E)
93
.set    DMEM_24F,  (__data_start+0x4F)
94
.set    DMEM_250,  (__data_start+0x50)
95 2 olivier.gi
 
96
.global main
97
 
98
main:
99
        /* -------------- TEST INSTRUCTION IN WORD MODE ------------------- */
100
 
101
 
102
        # Addressing mode: Rn
103
        #------------------------
104
 
105
        mov     #0x0000, r2        ;# Test 1
106
        mov     #0x3332, r4
107
        rrc          r4            ;# RRC ({C=0, r4=0x3332}  => {r4=0x1999, C=0})
108
        mov          r2, r5
109
 
110
        mov     #0x0000, r2        ;# Test 2
111
        mov     #0x3333, r6
112
        rrc          r6            ;# RRC ({C=0, r6=0x3333}  => {r6=0x1999, C=1})
113
        mov          r2, r7
114
 
115
        mov     #0x0001, r2        ;# Test 3
116
        mov     #0x3332, r8
117
        rrc          r8            ;# RRC ({C=1, r9=0x3332}  => {r9=0x9999, C=0})
118
        mov          r2, r9
119
 
120
        mov     #0x0001, r2        ;# Test 4
121
        mov     #0x3333, r10
122
        rrc         r10            ;# RRC ({C=1, r10=0x3333} => {r10=0x9999, C=1})
123
        mov          r2, r11
124
 
125
        mov     #0x1000, r15
126
 
127
 
128
        # Addressing mode: @Rn
129
        #------------------------
130
 
131
        mov     #0x0000, r2        ;# Test 1
132 111 olivier.gi
        mov     #0x3332, &DMEM_200
133
        mov   #DMEM_200, r4
134
        mov     #0xaaaa, &DMEM_202
135 2 olivier.gi
        rrc         @r4            ;# RRC ({C=0, mem00=0x3332}  => {mem00=0x1999, C=0})
136
        mov          r2, r5
137
 
138
        mov     #0x0000, r2        ;# Test 2
139 111 olivier.gi
        mov     #0x3333, &DMEM_202
140
        mov   #DMEM_202, r6
141
        mov     #0xaaaa, &DMEM_204
142 2 olivier.gi
        rrc         @r6            ;# RRC ({C=0, mem01=0x3333}  => {mem01=0x1999, C=1})
143
        mov          r2, r7
144
 
145
        mov     #0x0001, r2        ;# Test 3
146 111 olivier.gi
        mov     #0x3332, &DMEM_204
147
        mov   #DMEM_204, r8
148
        mov     #0xaaaa, &DMEM_206
149 2 olivier.gi
        rrc         @r8            ;# RRC ({C=1, mem02=0x3332}  => {mem02=0x9999, C=0})
150
        mov          r2, r9
151
 
152
        mov     #0x0001, r2        ;# Test 4
153 111 olivier.gi
        mov     #0x3333, &DMEM_206
154
        mov   #DMEM_206, r10
155
        mov     #0xaaaa, &DMEM_208
156 2 olivier.gi
        rrc        @r10            ;# RRC ({C=1, mem03=0x3333}  => {mem03=0x9999, C=1})
157
        mov          r2, r11
158
 
159
        mov     #0x2000, r15
160
 
161
 
162
        # Addressing mode: @Rn+
163
        #------------------------
164
 
165
        mov     #0x0000, r2        ;# Test 1
166 111 olivier.gi
        mov     #0x3332, &DMEM_208
167
        mov   #DMEM_208, r4
168
        mov     #0xaaaa, &DMEM_20A
169 2 olivier.gi
        rrc        @r4+            ;# RRC ({C=0, mem04=0x3332}  => {mem04=0x1999, C=0})
170
        mov          r2, r5
171
 
172
        mov     #0x0000, r2        ;# Test 2
173 111 olivier.gi
        mov     #0x3333, &DMEM_20A
174
        mov   #DMEM_20A, r6
175
        mov     #0xaaaa, &DMEM_20C
176 2 olivier.gi
        rrc        @r6+            ;# RRC ({C=0, mem05=0x3333}  => {mem05=0x1999, C=1})
177
        mov          r2, r7
178
 
179
        mov     #0x0001, r2        ;# Test 3
180 111 olivier.gi
        mov     #0x3332, &DMEM_20C
181
        mov   #DMEM_20C, r8
182
        mov     #0xaaaa, &DMEM_20E
183 2 olivier.gi
        rrc        @r8+            ;# RRC ({C=1, mem06=0x3332}  => {mem06=0x9999, C=0})
184
        mov          r2, r9
185
 
186
        mov     #0x0001, r2        ;# Test 4
187 111 olivier.gi
        mov     #0x3333, &DMEM_20E
188
        mov   #DMEM_20E, r10
189
        mov     #0xaaaa, &DMEM_210
190 2 olivier.gi
        rrc       @r10+            ;# RRC ({C=1, mem07=0x3333}  => {mem07=0x9999, C=1})
191
        mov          r2, r11
192
 
193
        mov     #0x3000, r15
194
 
195
 
196
        # Addressing mode: X(Rn)
197
        #------------------------
198
 
199
        mov     #0x0000, r2        ;# Test 1
200 111 olivier.gi
        mov     #0x3332, &DMEM_210
201
        mov   #DMEM_200, r4
202
        mov     #0xaaaa, &DMEM_212
203 2 olivier.gi
        rrc       16(r4)            ;# RRC ({C=0, mem08=0x3332}  => {mem08=0x1999, C=0})
204
        mov          r2, r5
205
 
206
        mov     #0x0000, r2        ;# Test 2
207 111 olivier.gi
        mov     #0x3333, &DMEM_212
208
        mov   #DMEM_200, r6
209
        mov     #0xaaaa, &DMEM_214
210 2 olivier.gi
        rrc       18(r6)            ;# RRC ({C=0, mem09=0x3333}  => {mem09=0x1999, C=1})
211
        mov          r2, r7
212
 
213
        mov     #0x0001, r2        ;# Test 3
214 111 olivier.gi
        mov     #0x3332, &DMEM_214
215
        mov   #DMEM_200, r8
216
        mov     #0xaaaa, &DMEM_216
217 2 olivier.gi
        rrc       20(r8)            ;# RRC ({C=1, mem0a=0x3332}  => {mem0a=0x9999, C=0})
218
        mov          r2, r9
219
 
220
        mov     #0x0001, r2        ;# Test 4
221 111 olivier.gi
        mov     #0x3333, &DMEM_216
222
        mov   #DMEM_200, r10
223
        mov     #0xaaaa, &DMEM_218
224 2 olivier.gi
        rrc      22(r10)            ;# RRC ({C=1, mem0b=0x3333}  => {mem0b=0x9999, C=1})
225
        mov          r2, r11
226
 
227
        mov     #0x4000, r15
228
 
229
 
230
        # Addressing mode: EDE
231
        #------------------------
232 111 olivier.gi
.set   EDE_218,  DMEM_218
233
.set   EDE_21A,  DMEM_21A
234
.set   EDE_21C,  DMEM_21C
235
.set   EDE_21E,  DMEM_21E
236 2 olivier.gi
 
237
        mov     #0x0000, r2        ;# Test 1
238 111 olivier.gi
        mov     #0x3332, &DMEM_218
239
        mov     #0xaaaa, &DMEM_21A
240 2 olivier.gi
        rrc     EDE_218            ;# RRC ({C=0, mem0c=0x3332}  => {mem0c=0x1999, C=0})
241
        mov          r2, r5
242
 
243
        mov     #0x0000, r2        ;# Test 2
244 111 olivier.gi
        mov     #0x3333, &DMEM_21A
245
        mov     #0xaaaa, &DMEM_21C
246 2 olivier.gi
        rrc     EDE_21A            ;# RRC ({C=0, mem0d=0x3333}  => {mem0d=0x1999, C=1})
247
        mov          r2, r7
248
 
249
        mov     #0x0001, r2        ;# Test 3
250 111 olivier.gi
        mov     #0x3332, &DMEM_21C
251
        mov     #0xaaaa, &DMEM_21E
252 2 olivier.gi
        rrc     EDE_21C            ;# RRC ({C=1, mem0e=0x3332}  => {mem0e=0x9999, C=0})
253
        mov          r2, r9
254
 
255
        mov     #0x0001, r2        ;# Test 4
256 111 olivier.gi
        mov     #0x3333, &DMEM_21E
257
        mov     #0xaaaa, &DMEM_220
258 2 olivier.gi
        rrc     EDE_21E            ;# RRC ({C=1, mem0f=0x3333}  => {mem0f=0x9999, C=1})
259
        mov          r2, r11
260
 
261
        mov     #0x5000, r15
262
 
263
 
264
        # Addressing mode: &EDE
265
        #------------------------
266 111 olivier.gi
.set   aEDE_220,  DMEM_220
267
.set   aEDE_222,  DMEM_222
268
.set   aEDE_224,  DMEM_224
269
.set   aEDE_226,  DMEM_226
270 2 olivier.gi
 
271
        mov     #0x0000, r2        ;# Test 1
272 111 olivier.gi
        mov     #0x3332, &DMEM_220
273
        mov     #0xaaaa, &DMEM_222
274 2 olivier.gi
        rrc   &aEDE_220            ;# RRC ({C=0, mem10=0x3332}  => {mem10=0x1999, C=0})
275
        mov          r2, r5
276
 
277
        mov     #0x0000, r2        ;# Test 2
278 111 olivier.gi
        mov     #0x3333, &DMEM_222
279
        mov     #0xaaaa, &DMEM_224
280 2 olivier.gi
        rrc   &aEDE_222            ;# RRC ({C=0, mem11=0x3333}  => {mem11=0x1999, C=1})
281
        mov          r2, r7
282
 
283
        mov     #0x0001, r2        ;# Test 3
284 111 olivier.gi
        mov     #0x3332, &DMEM_224
285
        mov     #0xaaaa, &DMEM_226
286 2 olivier.gi
        rrc   &aEDE_224            ;# RRC ({C=1, mem12=0x3332}  => {mem12=0x9999, C=0})
287
        mov          r2, r9
288
 
289
        mov     #0x0001, r2        ;# Test 4
290 111 olivier.gi
        mov     #0x3333, &DMEM_226
291
        mov     #0xaaaa, &DMEM_228
292 2 olivier.gi
        rrc   &aEDE_226            ;# RRC ({C=1, mem13=0x3333}  => {mem13=0x9999, C=1})
293
        mov          r2, r11
294
 
295
        mov     #0x6000, r15
296
 
297
 
298
        /* ----------------------- CLEAR MEMORY --------------------------- */
299
        mov     #0x0015, r4
300 111 olivier.gi
        mov   #DMEM_200, r5
301 2 olivier.gi
clear_mem_loop:
302
        clr    0(r5)
303
        incd     r5
304
        dec      r4
305
        jnz     clear_mem_loop
306
 
307
        mov     #0x7000, r15
308
 
309
 
310
        /* -------------- TEST INSTRUCTION IN BYTE MODE ------------------- */
311
 
312
        # Addressing mode: Rn
313
        #------------------------
314
 
315
        mov     #0x0000, r2    ;# Test 1
316
        mov     #0xff32, r4
317
        rrc.b        r4        ;# RRC.B ({C=0, r4=0x32}  => {r4=0x19, C=0})
318
        mov          r2, r5
319
 
320
        mov     #0x0000, r2    ;# Test 2
321
        mov     #0xff33, r6
322
        rrc.b        r6        ;# RRC.B ({C=0, r6=0x33}  => {r6=0x19, C=1})
323
        mov          r2, r7
324
 
325
        mov     #0x0001, r2    ;# Test 3
326
        mov     #0xf032, r8
327
        rrc.b        r8        ;# RRC.B ({C=1, r9=0x32}  => {r9=0x99, C=0})
328
        mov          r2, r9
329
 
330
        mov     #0x0001, r2    ;# Test 4
331
        mov     #0xf033, r10
332
        rrc.b       r10        ;# RRC.B ({C=1, r10=0x33} => {r10=0x99, C=1})
333
        mov          r2, r11
334
 
335
        mov     #0x8000, r15
336
 
337
 
338
        # Addressing mode: @Rn (Low Byte)
339
        #---------------------------------
340
 
341
        mov     #0x0000, r2        ;# Test 1: Low Byte
342 111 olivier.gi
        mov     #0x2532, &DMEM_200
343
        mov   #DMEM_200, r4
344
        mov     #0xaaaa, &DMEM_202
345 2 olivier.gi
        rrc.b       @r4            ;# RRC.B ({C=0, mem00=0x2532}  => {mem00=0x2519, C=0})
346
        mov          r2, r5
347
 
348
        mov     #0x0000, r2        ;# Test 2: Low Byte
349 111 olivier.gi
        mov     #0x2533, &DMEM_202
350
        mov   #DMEM_202, r6
351
        mov     #0xaaaa, &DMEM_204
352 2 olivier.gi
        rrc.b       @r6            ;# RRC.B ({C=0, mem01=0x2533}  => {mem01=0x2519, C=1})
353
        mov          r2, r7
354
 
355
        mov     #0x0001, r2        ;# Test 3: Low Byte
356 111 olivier.gi
        mov     #0x2532, &DMEM_204
357
        mov   #DMEM_204, r8
358
        mov     #0xaaaa, &DMEM_206
359 2 olivier.gi
        rrc.b       @r8            ;# RRC.B ({C=1, mem02=0x2532}  => {mem02=0x2599, C=0})
360
        mov          r2, r9
361
 
362
        mov     #0x0001, r2        ;# Test 4: Low Byte
363 111 olivier.gi
        mov     #0x2533, &DMEM_206
364
        mov   #DMEM_206, r10
365
        mov     #0xaaaa, &DMEM_208
366 2 olivier.gi
        rrc.b      @r10            ;# RRC.B ({C=1, mem03=0x2533}  => {mem03=0x2599, C=1})
367
        mov          r2, r11
368
 
369
        mov     #0x9000, r15
370
 
371
        # Addressing mode: @Rn (High Byte)
372
        #---------------------------------
373
 
374
        mov     #0x0000, r2        ;# Test 1: High Byte
375 111 olivier.gi
        mov     #0x3225, &DMEM_208
376
        mov   #DMEM_209, r4
377
        mov     #0xaaaa, &DMEM_20A
378 2 olivier.gi
        rrc.b       @r4            ;# RRC.B ({C=0, mem04=0x3225}  => {mem04=0x1925, C=0})
379
        mov          r2, r6
380
 
381
        mov     #0x0000, r2        ;# Test 2: High Byte
382 111 olivier.gi
        mov     #0x3325, &DMEM_20A
383
        mov   #DMEM_20B, r6
384
        mov     #0xaaaa, &DMEM_20C
385 2 olivier.gi
        rrc.b       @r6            ;# RRC.B ({C=0, mem05=0x3325}  => {mem05=0x1925, C=1})
386
        mov          r2, r8
387
 
388
        mov     #0x0001, r2        ;# Test 3: High Byte
389 111 olivier.gi
        mov     #0x3225, &DMEM_20C
390
        mov   #DMEM_20D, r8
391
        mov     #0xaaaa, &DMEM_20E
392 2 olivier.gi
        rrc.b       @r8            ;# RRC.B ({C=1, mem06=0x3225}  => {mem06=0x9925, C=0})
393
        mov          r2, r10
394
 
395
        mov     #0x0001, r2        ;# Test 4: High Byte
396 111 olivier.gi
        mov     #0x3325, &DMEM_20E
397
        mov   #DMEM_20F, r10
398
        mov     #0xaaaa, &DMEM_210
399 2 olivier.gi
        rrc.b      @r10            ;# RRC.B ({C=1, mem07=0x3325}  => {mem07=0x9925, C=1})
400
        mov          r2, r11
401
 
402
        mov     #0x9001, r15
403
 
404
 
405
        # Addressing mode: @Rn+ (Low Byte)
406
        #---------------------------------
407
 
408
        mov     #0x0000, r2        ;# Test 1: Low Byte
409 111 olivier.gi
        mov     #0x2532, &DMEM_210
410
        mov   #DMEM_210, r4
411
        mov     #0xaaaa, &DMEM_212
412 2 olivier.gi
        rrc.b      @r4+            ;# RRC.B ({C=0, mem08=0x2532}  => {mem08=0x2519, C=0})
413
        mov          r2, r5
414
 
415
        mov     #0x0000, r2        ;# Test 2: Low Byte
416 111 olivier.gi
        mov     #0x2533, &DMEM_212
417
        mov   #DMEM_212, r6
418
        mov     #0xaaaa, &DMEM_214
419 2 olivier.gi
        rrc.b      @r6+            ;# RRC.B ({C=0, mem09=0x2533}  => {mem09=0x2519, C=1})
420
        mov          r2, r7
421
 
422
        mov     #0x0001, r2        ;# Test 3: Low Byte
423 111 olivier.gi
        mov     #0x2532, &DMEM_214
424
        mov   #DMEM_214, r8
425
        mov     #0xaaaa, &DMEM_216
426 2 olivier.gi
        rrc.b      @r8+            ;# RRC.B ({C=1, mem0a=0x2532}  => {mem0a=0x2599, C=0})
427
        mov          r2, r9
428
 
429
        mov     #0x0001, r2        ;# Test 4: Low Byte
430 111 olivier.gi
        mov     #0x2533, &DMEM_216
431
        mov   #DMEM_216, r10
432
        mov     #0xaaaa, &DMEM_218
433 2 olivier.gi
        rrc.b     @r10+            ;# RRC.B ({C=1, mem0b=0x2533}  => {mem0b=0x2599, C=1})
434
        mov          r2, r11
435
 
436
        mov     #0xA000, r15
437
 
438
        # Addressing mode: @Rn+ (High Byte)
439
        #-----------------------------------
440
 
441
        mov     #0x0000, r2        ;# Test 1: High Byte
442 111 olivier.gi
        mov     #0x3225, &DMEM_218
443
        mov   #DMEM_219, r4
444
        mov     #0xaaaa, &DMEM_21A
445 2 olivier.gi
        rrc.b      @r4+            ;# RRC.B ({C=0, mem0c=0x3225}  => {mem0c=0x1925, C=0})
446
        mov          r2, r6
447
 
448
        mov     #0x0000, r2        ;# Test 2: High Byte
449 111 olivier.gi
        mov     #0x3325, &DMEM_21A
450
        mov   #DMEM_21B, r6
451
        mov     #0xaaaa, &DMEM_21C
452 2 olivier.gi
        rrc.b      @r6+            ;# RRC.B ({C=0, mem0d=0x3325}  => {mem0d=0x1925, C=1})
453
        mov          r2, r8
454
 
455
        mov     #0x0001, r2        ;# Test 3: High Byte
456 111 olivier.gi
        mov     #0x3225, &DMEM_21C
457
        mov   #DMEM_21D, r8
458
        mov     #0xaaaa, &DMEM_21E
459 2 olivier.gi
        rrc.b      @r8+            ;# RRC.B ({C=1, mem0e=0x3225}  => {mem0e=0x9925, C=0})
460
        mov          r2, r10
461
 
462
        mov     #0x0001, r2        ;# Test 4: High Byte
463 111 olivier.gi
        mov     #0x3325, &DMEM_21E
464
        mov   #DMEM_21F, r10
465
        mov     #0xaaaa, &DMEM_220
466 2 olivier.gi
        rrc.b     @r10+            ;# RRC.B ({C=1, mem0f=0x3325}  => {mem0f=0x9925, C=1})
467
        mov          r2, r11
468
 
469
        mov     #0xA001, r15
470
 
471
 
472
        # Addressing mode: X(Rn) (Low Byte)
473
        #-----------------------------------
474
 
475
        mov     #0x0000, r2        ;# Test 1
476 111 olivier.gi
        mov     #0x2532, &DMEM_220
477
        mov   #DMEM_200, r4
478
        mov     #0xaaaa, &DMEM_222
479 2 olivier.gi
        rrc.b     32(r4)           ;# RRC ({C=0, mem10=0x2532}  => {mem10=0x2519, C=0})
480
        mov          r2, r5
481
 
482
        mov     #0x0000, r2        ;# Test 2
483 111 olivier.gi
        mov     #0x2533, &DMEM_222
484
        mov   #DMEM_200, r6
485
        mov     #0xaaaa, &DMEM_224
486 2 olivier.gi
        rrc.b     34(r6)           ;# RRC ({C=0, mem11=0x2533}  => {mem11=0x2519, C=1})
487
        mov          r2, r7
488
 
489
        mov     #0x0001, r2        ;# Test 3
490 111 olivier.gi
        mov     #0x2532, &DMEM_224
491
        mov   #DMEM_200, r8
492
        mov     #0xaaaa, &DMEM_226
493 2 olivier.gi
        rrc.b     36(r8)           ;# RRC ({C=1, mem12=0x2532}  => {mem12=0x2599, C=0})
494
        mov          r2, r9
495
 
496
        mov     #0x0001, r2        ;# Test 4
497 111 olivier.gi
        mov     #0x2533, &DMEM_226
498
        mov   #DMEM_200, r10
499
        mov     #0xaaaa, &DMEM_228
500 2 olivier.gi
        rrc.b    38(r10)           ;# RRC ({C=1, mem13=0x2533}  => {mem13=0x2599, C=1})
501
        mov          r2, r11
502
 
503
        mov     #0xB000, r15
504
 
505
        # Addressing mode: X(Rn) (High Byte)
506
        #------------------------------------
507
 
508
        mov     #0x0000, r2        ;# Test 1
509 111 olivier.gi
        mov     #0x3225, &DMEM_228
510
        mov   #DMEM_200, r4
511
        mov     #0xaaaa, &DMEM_22A
512 2 olivier.gi
        rrc.b     41(r4)           ;# RRC ({C=0, mem14=0x3225}  => {mem14=0x1925, C=0})
513
        mov          r2, r5
514
 
515
        mov     #0x0000, r2        ;# Test 2
516 111 olivier.gi
        mov     #0x3325, &DMEM_22A
517
        mov   #DMEM_200, r6
518
        mov     #0xaaaa, &DMEM_22C
519 2 olivier.gi
        rrc.b     43(r6)           ;# RRC ({C=0, mem15=0x3325}  => {mem15=0x1925, C=1})
520
        mov          r2, r7
521
 
522
        mov     #0x0001, r2        ;# Test 3
523 111 olivier.gi
        mov     #0x3225, &DMEM_22C
524
        mov   #DMEM_200, r8
525
        mov     #0xaaaa, &DMEM_22E
526 2 olivier.gi
        rrc.b     45(r8)           ;# RRC ({C=1, mem16=0x3225}  => {mem16=0x9925, C=0})
527
        mov          r2, r9
528
 
529
        mov     #0x0001, r2        ;# Test 4
530 111 olivier.gi
        mov     #0x3325, &DMEM_22E
531
        mov   #DMEM_200, r10
532
        mov     #0xaaaa, &DMEM_230
533 2 olivier.gi
        rrc.b    47(r10)           ;# RRC ({C=1, mem17=0x3325}  => {mem17=0x9925, C=1})
534
        mov          r2, r11
535
 
536
        mov     #0xB001, r15
537
 
538
 
539
        # Addressing mode: EDE (Low Byte)
540
        #---------------------------------
541 111 olivier.gi
.set   EDE_230,  DMEM_230
542
.set   EDE_232,  DMEM_232
543
.set   EDE_234,  DMEM_234
544
.set   EDE_236,  DMEM_236
545 2 olivier.gi
 
546
        mov     #0x0000, r2        ;# Test 1
547 111 olivier.gi
        mov     #0x2532, &DMEM_230
548
        mov     #0xaaaa, &DMEM_232
549 2 olivier.gi
        rrc.b   EDE_230            ;# RRC ({C=0, mem18=0x2532}  => {mem18=0x2519, C=0})
550
        mov          r2, r5
551
 
552
        mov     #0x0000, r2        ;# Test 2
553 111 olivier.gi
        mov     #0x2533, &DMEM_232
554
        mov     #0xaaaa, &DMEM_234
555 2 olivier.gi
        rrc.b   EDE_232            ;# RRC ({C=0, mem19=0x2533}  => {mem19=0x2519, C=1})
556
        mov          r2, r7
557
 
558
        mov     #0x0001, r2        ;# Test 3
559 111 olivier.gi
        mov     #0x2532, &DMEM_234
560
        mov     #0xaaaa, &DMEM_236
561 2 olivier.gi
        rrc.b   EDE_234            ;# RRC ({C=1, mem1a=0x2532}  => {mem1a=0x2599, C=0})
562
        mov          r2, r9
563
 
564
        mov     #0x0001, r2        ;# Test 4
565 111 olivier.gi
        mov     #0x2533, &DMEM_236
566
        mov     #0xaaaa, &DMEM_238
567 2 olivier.gi
        rrc.b   EDE_236            ;# RRC ({C=1, mem1b=0x2533}  => {mem1b=0x2599, C=1})
568
        mov          r2, r11
569
 
570
        mov     #0xC000, r15
571
 
572
        # Addressing mode: EDE (High Byte)
573
        #----------------------------------
574 111 olivier.gi
.set   EDE_239,  DMEM_239
575
.set   EDE_23B,  DMEM_23B
576
.set   EDE_23D,  DMEM_23D
577
.set   EDE_23F,  DMEM_23F
578 2 olivier.gi
 
579
        mov     #0x0000, r2        ;# Test 1
580 111 olivier.gi
        mov     #0x3225, &DMEM_238
581
        mov     #0xaaaa, &DMEM_23A
582 2 olivier.gi
        rrc.b   EDE_239            ;# RRC ({C=0, mem1c=0x3225}  => {mem1c=0x1925, C=0})
583
        mov          r2, r5
584
 
585
        mov     #0x0000, r2        ;# Test 2
586 111 olivier.gi
        mov     #0x3325, &DMEM_23A
587
        mov     #0xaaaa, &DMEM_23C
588 2 olivier.gi
        rrc.b   EDE_23B            ;# RRC ({C=0, mem1d=0x3325}  => {mem1d=0x1925, C=1})
589
        mov          r2, r7
590
 
591
        mov     #0x0001, r2        ;# Test 3
592 111 olivier.gi
        mov     #0x3225, &DMEM_23C
593
        mov     #0xaaaa, &DMEM_23E
594 2 olivier.gi
        rrc.b   EDE_23D            ;# RRC ({C=1, mem1e=0x3225}  => {mem1e=0x9925, C=0})
595
        mov          r2, r9
596
 
597
        mov     #0x0001, r2        ;# Test 4
598 111 olivier.gi
        mov     #0x3325, &DMEM_23E
599
        mov     #0xaaaa, &DMEM_240
600 2 olivier.gi
        rrc.b   EDE_23F            ;# RRC ({C=1, mem1f=0x3325}  => {mem1f=0x9925, C=1})
601
        mov          r2, r11
602
 
603
        mov     #0xC001, r15
604
 
605
 
606
        # Addressing mode: &EDE (Low Byte)
607
        #----------------------------------
608 111 olivier.gi
.set   aEDE_240,  DMEM_240
609
.set   aEDE_242,  DMEM_242
610
.set   aEDE_244,  DMEM_244
611
.set   aEDE_246,  DMEM_246
612 2 olivier.gi
 
613
        mov     #0x0000, r2        ;# Test 1
614 111 olivier.gi
        mov     #0x2532, &DMEM_240
615
        mov     #0xaaaa, &DMEM_242
616 2 olivier.gi
        rrc.b &aEDE_240            ;# RRC ({C=0, mem20=0x2532}  => {mem20=0x2519, C=0})
617
        mov          r2, r5
618
 
619
        mov     #0x0000, r2        ;# Test 2
620 111 olivier.gi
        mov     #0x2533, &DMEM_242
621
        mov     #0xaaaa, &DMEM_244
622 2 olivier.gi
        rrc.b &aEDE_242            ;# RRC ({C=0, mem21=0x2533}  => {mem21=0x2519, C=1})
623
        mov          r2, r7
624
 
625
        mov     #0x0001, r2        ;# Test 3
626 111 olivier.gi
        mov     #0x2532, &DMEM_244
627
        mov     #0xaaaa, &DMEM_246
628 2 olivier.gi
        rrc.b &aEDE_244            ;# RRC ({C=1, mem22=0x2532}  => {mem22=0x2599, C=0})
629
        mov          r2, r9
630
 
631
        mov     #0x0001, r2        ;# Test 4
632 111 olivier.gi
        mov     #0x2533, &DMEM_246
633
        mov     #0xaaaa, &DMEM_248
634 2 olivier.gi
        rrc.b &aEDE_246            ;# RRC ({C=1, mem23=0x2533}  => {mem23=0x2599, C=1})
635
        mov          r2, r11
636
 
637
        mov     #0xD000, r15
638
 
639
        # Addressing mode: &EDE (High Byte)
640
        #-----------------------------------
641 111 olivier.gi
.set   aEDE_249,  DMEM_249
642
.set   aEDE_24B,  DMEM_24B
643
.set   aEDE_24D,  DMEM_24D
644
.set   aEDE_24F,  DMEM_24F
645 2 olivier.gi
 
646
        mov     #0x0000, r2        ;# Test 1
647 111 olivier.gi
        mov     #0x3225, &DMEM_248
648
        mov     #0xaaaa, &DMEM_24A
649 2 olivier.gi
        rrc.b &aEDE_249            ;# RRC ({C=0, mem24=0x3225}  => {mem24=0x1925, C=0})
650
        mov          r2, r5
651
 
652
        mov     #0x0000, r2        ;# Test 2
653 111 olivier.gi
        mov     #0x3325, &DMEM_24A
654
        mov     #0xaaaa, &DMEM_24C
655 2 olivier.gi
        rrc.b &aEDE_24B            ;# RRC ({C=0, mem25=0x3325}  => {mem25=0x1925, C=1})
656
        mov          r2, r7
657
 
658
        mov     #0x0001, r2        ;# Test 3
659 111 olivier.gi
        mov     #0x3225, &DMEM_24C
660
        mov     #0xaaaa, &DMEM_24E
661 2 olivier.gi
        rrc.b &aEDE_24D            ;# RRC ({C=1, mem26=0x3225}  => {mem26=0x9925, C=0})
662
        mov          r2, r9
663
 
664
        mov     #0x0001, r2        ;# Test 4
665 111 olivier.gi
        mov     #0x3325, &DMEM_24E
666
        mov     #0xaaaa, &DMEM_250
667 2 olivier.gi
        rrc.b &aEDE_24F            ;# RRC ({C=1, mem27=0x3325}  => {mem27=0x9925, C=1})
668
        mov          r2, r11
669
 
670
        mov     #0xD001, r15
671
 
672
 
673
 
674
        /* ----------------------         END OF TEST        --------------- */
675
end_of_test:
676
        nop
677
        br #0xffff
678
 
679
 
680
 
681
        /* ----------------------         INTERRUPT VECTORS  --------------- */
682
 
683
.section .vectors, "a"
684
.word end_of_test  ; Interrupt  0 (lowest priority)    
685
.word end_of_test  ; Interrupt  1                      
686
.word end_of_test  ; Interrupt  2                      
687
.word end_of_test  ; Interrupt  3                      
688
.word end_of_test  ; Interrupt  4                      
689
.word end_of_test  ; Interrupt  5                      
690
.word end_of_test  ; Interrupt  6                      
691
.word end_of_test  ; Interrupt  7                      
692
.word end_of_test  ; Interrupt  8                      
693
.word end_of_test  ; Interrupt  9                      
694
.word end_of_test  ; Interrupt 10                      Watchdog timer
695
.word end_of_test  ; Interrupt 11                      
696
.word end_of_test  ; Interrupt 12                      
697
.word end_of_test  ; Interrupt 13                      
698
.word end_of_test  ; Interrupt 14                      NMI
699
.word main         ; Interrupt 15 (highest priority)   RESET

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.