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

Subversion Repositories t48

[/] [t48/] [tags/] [rel_0_6_1_beta/] [sw/] [verif/] [black_box/] [rb/] [int/] [test.asm] - Blame information for rev 57

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

Line No. Rev Author Line
1 12 arniml
        ;; *******************************************************************
2 57 arniml
        ;; $Id: test.asm,v 1.2 2004-04-15 22:01:51 arniml Exp $
3 12 arniml
        ;;
4
        ;; Test interrupts in conjunction with RB-switching.
5
        ;; *******************************************************************
6
 
7
        INCLUDE "cpu.inc"
8
        INCLUDE "pass_fail.inc"
9
 
10
        ORG     0
11
 
12
        jmp     start
13
        nop
14
        jmp     interrupt
15
        jmp     fail
16
        jmp     fail
17
        jmp     fail
18
 
19
 
20
        ;; Start of test
21
start:
22
        ;; fill RB0
23
        clr     a
24
        call    fill
25
 
26
        ;; fill RB1
27
        sel     rb1
28
        mov     a, #010H
29
        call    fill
30
        sel     rb0
31
 
32
        ;; set up interrupt
33
        clr     f1
34
        ;; sync on next interrupt
35
        call    sync_on_int
36
 
37
        mov     r0, #000H
38
        en      i
39
loop1:  jf1     goon1
40
        djnz    r0, loop1
41
        jmp     fail
42
 
43
goon1:
44
        dis     i
45
        clr     f1
46
 
47
        ;; check BS implicitely
48
        ;; r0 must not be zero
49
        mov     a, r0
50
        jz      fail
51
 
52
        ;; check RB1
53
        sel     rb1
54
        call    check_0
55
 
56
        ;; check RB0
57
        sel     rb0
58
        call    check_rb0
59
 
60
pass:   PASS
61
 
62
fail:   FAIL
63
 
64
 
65
        ORG     0200H
66
interrupt:
67
        sel     rb1
68
        mov     r0, a
69
 
70
        call    check_rb1
71
 
72
        clr     a
73
        mov     r1, a
74
        mov     r2, a
75
        mov     r3, a
76
        mov     r4, a
77
        mov     r5, a
78
        mov     r6, a
79
        mov     r7, a
80
        xch     a, r0
81
 
82
        cpl     f1
83
 
84
        retr
85
 
86
 
87
        ORG     0300H
88
 
89
fill:   add     a, #0B0H
90
        mov     r0, a
91
        inc     a
92
        mov     r1, a
93
        inc     a
94
        mov     r2, a
95
        inc     a
96
        mov     r3, a
97
        inc     a
98
        mov     r4, a
99
        inc     a
100
        mov     r5, a
101
        inc     a
102
        mov     r6, a
103
        inc     a
104
        mov     r7, a
105
        ret
106
 
107
check_0:
108
        mov     a, r0
109
        jnz     fail_p3
110
        mov     a, r1
111
        jnz     fail_p3
112
        mov     a, r2
113
        jnz     fail_p3
114
        mov     a, r3
115
        jnz     fail_p3
116
        mov     a, r4
117
        jnz     fail_p3
118
        mov     a, r5
119
        jnz     fail_p3
120
        mov     a, r6
121
        jnz     fail_p3
122
        mov     a, r7
123
        jnz     fail_p3
124
        ret
125
 
126 57 arniml
        ;; synchronize on interrupt
127
        ;; use r7 for timeout detection
128 12 arniml
sync_on_int:
129 57 arniml
        mov     a, r7           ; save r7
130
        mov     r7, #000H
131
wait_int1:
132
        jni     sync_on_int2
133
        djnz    r7, wait_int1
134
        jmp     fail_p3
135 12 arniml
 
136 57 arniml
sync_on_int2:
137
        mov     r7, #000H
138 12 arniml
wait_int2:
139 57 arniml
        jni     still_int
140
        mov     r7, a           ; restore r7
141 12 arniml
        call    clr_int
142
        retr
143 57 arniml
still_int:
144
        djnz    r7, wait_int2
145
        jmp     fail_p3
146 12 arniml
 
147
clr_int:
148
        ;; clear latched interrupt request with RETR!
149
        retr
150
 
151
check_rb1:
152
        mov     a, #(~0C1H & 0FFH)
153
        add     a, r1
154
        cpl     a
155
        jnz     fail_p3
156
 
157
        mov     a, #(~0C2H & 0FFH)
158
        add     a, r2
159
        cpl     a
160
        jnz     fail_p3
161
 
162
        mov     a, #(~0C3H & 0FFH)
163
        add     a, r3
164
        cpl     a
165
        jnz     fail_p3
166
 
167
        mov     a, #(~0C4H & 0FFH)
168
        add     a, r4
169
        cpl     a
170
        jnz     fail_p3
171
 
172
        mov     a, #(~0C5H & 0FFH)
173
        add     a, r5
174
        cpl     a
175
        jnz     fail_p3
176
 
177
        mov     a, #(~0C6H & 0FFH)
178
        add     a, r6
179
        cpl     a
180
        jnz     fail_p3
181
 
182
        mov     a, #(~0C7H & 0FFH)
183
        add     a, r7
184
        cpl     a
185
        jnz     fail_p3
186
 
187
        ret
188
 
189
check_rb0:
190
        mov     a, #(~0B1H & 0FFH)
191
        add     a, r1
192
        cpl     a
193
        jnz     fail_p3
194
 
195
        mov     a, #(~0B2H & 0FFH)
196
        add     a, r2
197
        cpl     a
198
        jnz     fail_p3
199
 
200
        mov     a, #(~0B3H & 0FFH)
201
        add     a, r3
202
        cpl     a
203
        jnz     fail_p3
204
 
205
        mov     a, #(~0B4H & 0FFH)
206
        add     a, r4
207
        cpl     a
208
        jnz     fail_p3
209
 
210
        mov     a, #(~0B5H & 0FFH)
211
        add     a, r5
212
        cpl     a
213
        jnz     fail_p3
214
 
215
        mov     a, #(~0B6H & 0FFH)
216
        add     a, r6
217
        cpl     a
218
        jnz     fail_p3
219
 
220
        mov     a, #(~0B7H & 0FFH)
221
        add     a, r7
222
        cpl     a
223
        jnz     fail_p3
224
 
225
        ret
226
 
227
fail_p3:
228
        FAIL

powered by: WebSVN 2.1.0

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