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

Subversion Repositories cpu8080

[/] [cpu8080/] [trunk/] [project/] [test8080.asm] - Blame information for rev 33

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 9 samiam9512
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
2
!                                                                              !
3
!                            8080 CPU INSTRUCTION TEST                         !
4
!                             2006/10/07 Scott Moore                           !
5
!                                                                              !
6
! 8080 CPU instruction test for hardware simulation. The "cpu8080"             !
7
! environment, with its select controller and interrupt controller, is         !
8
! initialized, then we test each instruction type for the 8080. Each register  !
9
! and mode of each instruction is tested, which is possible for the rather     !
10
! small instruction set of the 8080. Each result is written out to memory, if  !
11
! required, so that all results are visible from the outside pins of the 8080. !
12
! This means that the pin states would be a valid basis for a vector test.     !
13
!                                                                              !
14
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
15
 
16
rom:    equ     $0000           ! base address of the instruction ROM
17
romlen: equ     $0400           ! length of ROM
18
ram:    equ     $0400           ! base address of instruction RAM
19
ramlen: equ     $0400           ! length of RAM
20
!
21
! Perform testbench initalize, program select controller to the following:
22
!
23
! Select 1 (ROM): base $0000, length $0400
24
! Select 2 (RAM): base $0400, length $0400
25
!
26
initalize:
27
        mvi     a,$fd           ! enable select 1 to $0000, 1kb
28
        out     $02             ! select 1 mask register
29
        mvi     a,$04           ! enable select 2 to $0400, 1kb
30
        out     $05             ! select 2 compare register
31
        mvi     a,$fd
32
        out     $04
33
        mvi     a,$00           ! exit bootstrap mode
34
        out     $00
35
        lxi     sp,$0800        ! place stack at top of ram
36
!
37
! Instruction test
38
!
39
! You'll find the order of instructions to test in "the Intel 8080 Assembly
40
! language Programming Manual", available online.
41
!
42
instest:
43
!
44
! stc
45
! cmc
46
!
47
        xra     a               ! clear A and flags
48
        push    psw             ! send to bus
49
        pop     psw             ! keep stack neutral
50
        stc                     ! set carry
51
        push    psw             ! send to bus
52
        pop     psw             ! keep stack neutral
53
        cmc                     ! clear carry
54
        push    psw             ! send to bus
55
        pop     psw             ! keep stack neutral
56
!
57
! inr a
58
!
59
        mvi     a,$00           ! a = 0
60
        inr     a               ! a = 1, no zero, no sign, odd parity, no AC,
61
        push    psw             ! send to bus
62
        pop     psw             ! keep stack neutral
63
        inr     a               ! a = 1, no zero, no sign, odd parity, no AC,
64
        push    psw             ! send to bus
65
        pop     psw             ! keep stack neutral
66
        inr     a
67
        inr     a               ! a = 3, no zero, no sign, even parity, no AC,
68
                                ! carry x
69
        push    psw             ! send to bus
70
        pop     psw             ! keep stack neutral
71
        mvi     a,$0f           ! a = $0f
72
        inr     a               ! a = $10, no zero, no sign, odd parity, AC
73
        push    psw             ! send to bus
74
        pop     psw             ! keep stack neutral
75
        mvi     a,$fe           ! a = $fe
76
        inr     a               ! a = $ff, no zero, sign, even parity, no AC
77
        push    psw             ! send to bus
78
        pop     psw             ! keep stack neutral
79
        inr     a               ! a = $00, zero, no sign, even parity, AC
80
        push    psw             ! send to bus
81
        pop     psw             ! keep stack neutral
82
!
83
! inr b
84
!
85
        mvi     b,$00           ! a = 0
86
        inr     b               ! a = 1, no zero, no sign, odd parity, no AC,
87
                                ! carry x
88
        push    psw             ! send to bus
89
        pop     psw             ! keep stack neutral
90
        push    b               ! send to bus
91
        pop     b               ! keep stack neutral
92
        inr     b               ! a = 1, no zero, no sign, odd parity, no AC,
93
                                ! carry x
94
        push    psw             ! send to bus
95
        pop     psw             ! keep stack neutral
96
        push    b               ! send to bus
97
        pop     b               ! keep stack neutral
98
        inr     b
99
        inr     b               ! a = 3, no zero, no sign, even parity, no AC,
100
                                ! carry x
101
        push    psw             ! send to bus
102
        pop     psw             ! keep stack neutral
103
        push    b               ! send to bus
104
        pop     b               ! keep stack neutral
105
        mvi     b,$0f           ! a = $0f
106
        inr     b               ! a = $10, no zero, no sign, odd parity, AC
107
        push    psw             ! send to bus
108
        pop     psw             ! keep stack neutral
109
        push    b               ! send to bus
110
        pop     b               ! keep stack neutral
111
        mvi     b,$fe           ! a = $fe
112
        inr     b               ! a = $ff, no zero, sign, even parity, no AC
113
        push    psw             ! send to bus
114
        pop     psw             ! keep stack neutral
115
        push    b               ! send to bus
116
        pop     b               ! keep stack neutral
117
        inr     b               ! a = $00, zero, no sign, even parity, AC
118
        push    psw             ! send to bus
119
        pop     psw             ! keep stack neutral
120
        push    b               ! send to bus
121
        pop     b               ! keep stack neutral
122
!
123
! inr c
124
!
125
        mvi     c,$00           ! a = 0
126
        inr     c               ! a = 1, no zero, no sign, odd parity, no AC,
127
                                ! carry x
128
        push    psw             ! send to bus
129
        pop     psw             ! keep stack neutral
130
        push    b               ! send to bus
131
        pop     b               ! keep stack neutral
132
        inr     c               ! a = 1, no zero, no sign, odd parity, no AC,
133
                                ! carry x
134
        push    psw             ! send to bus
135
        pop     psw             ! keep stack neutral
136
        push    b               ! send to bus
137
        pop     b               ! keep stack neutral
138
        inr     c
139
        inr     c               ! a = 3, no zero, no sign, even parity, no AC,
140
                                ! carry x
141
        push    psw             ! send to bus
142
        pop     psw             ! keep stack neutral
143
        push    b               ! send to bus
144
        pop     b               ! keep stack neutral
145
        mvi     c,$0f           ! a = $0f
146
        inr     c               ! a = $10, no zero, no sign, odd parity, AC
147
        push    psw             ! send to bus
148
        pop     psw             ! keep stack neutral
149
        push    b               ! send to bus
150
        pop     b               ! keep stack neutral
151
        mvi     c,$fe           ! a = $fe
152
        inr     c               ! a = $ff, no zero, sign, even parity, no AC
153
        push    psw             ! send to bus
154
        pop     psw             ! keep stack neutral
155
        push    b               ! send to bus
156
        pop     b               ! keep stack neutral
157
        inr     c               ! a = $00, zero, no sign, even parity, AC
158
        push    psw             ! send to bus
159
        pop     psw             ! keep stack neutral
160
        push    b               ! send to bus
161
        pop     b               ! keep stack neutral
162
!
163
! inr d
164
!
165
        mvi     d,$00           ! a = 0
166
        inr     d               ! a = 1, no zero, no sign, odd parity, no AC,
167
                                ! carry x
168
        push    psw             ! send to bus
169
        pop     psw             ! keep stack neutral
170
        push    d               ! send to bus
171
        pop     d               ! keep stack neutral
172
        inr     d               ! a = 1, no zero, no sign, odd parity, no AC,
173
                                ! carry x
174
        push    psw             ! send to bus
175
        pop     psw             ! keep stack neutral
176
        push    d               ! send to bus
177
        pop     d               ! keep stack neutral
178
        inr     d
179
        inr     d               ! a = 3, no zero, no sign, even parity, no AC,
180
                                ! carry x
181
        push    psw             ! send to bus
182
        pop     psw             ! keep stack neutral
183
        push    d               ! send to bus
184
        pop     d               ! keep stack neutral
185
        mvi     d,$0f           ! a = $0f
186
        inr     d               ! a = $10, no zero, no sign, odd parity, AC
187
        push    psw             ! send to bus
188
        pop     psw             ! keep stack neutral
189
        push    d               ! send to bus
190
        pop     d               ! keep stack neutral
191
        mvi     d,$fe           ! a = $fe
192
        inr     d               ! a = $ff, no zero, sign, even parity, no AC
193
        push    psw             ! send to bus
194
        pop     psw             ! keep stack neutral
195
        push    d               ! send to bus
196
        pop     d               ! keep stack neutral
197
        inr     d               ! a = $00, zero, no sign, even parity, AC
198
        push    psw             ! send to bus
199
        pop     psw             ! keep stack neutral
200
        push    d               ! send to bus
201
        pop     d               ! keep stack neutral
202
!
203
! inr e
204
!
205
        mvi     e,$00           ! a = 0
206
        inr     e               ! a = 1, no zero, no sign, odd parity, no AC,
207
                                ! carry x
208
        push    psw             ! send to bus
209
        pop     psw             ! keep stack neutral
210
        push    d               ! send to bus
211
        pop     d               ! keep stack neutral
212
        inr     e               ! a = 1, no zero, no sign, odd parity, no AC,
213
                                ! carry x
214
        push    psw             ! send to bus
215
        pop     psw             ! keep stack neutral
216
        push    d               ! send to bus
217
        pop     d               ! keep stack neutral
218
        inr     e
219
        inr     e               ! a = 3, no zero, no sign, even parity, no AC,
220
                                ! carry x
221
        push    psw             ! send to bus
222
        pop     psw             ! keep stack neutral
223
        push    d               ! send to bus
224
        pop     d               ! keep stack neutral
225
        mvi     e,$0f           ! a = $0f
226
        inr     e               ! a = $10, no zero, no sign, odd parity, AC
227
        push    psw             ! send to bus
228
        pop     psw             ! keep stack neutral
229
        push    d               ! send to bus
230
        pop     d               ! keep stack neutral
231
        mvi     e,$fe           ! a = $fe
232
        inr     e               ! a = $ff, no zero, sign, even parity, no AC
233
        push    psw             ! send to bus
234
        pop     psw             ! keep stack neutral
235
        push    d               ! send to bus
236
        pop     d               ! keep stack neutral
237
        inr     e               ! a = $00, zero, no sign, even parity, AC
238
        push    psw             ! send to bus
239
        pop     psw             ! keep stack neutral
240
        push    d               ! send to bus
241
        pop     d               ! keep stack neutral
242
!
243
! inr h
244
!
245
        mvi     h,$00           ! a = 0
246
        inr     h               ! a = 1, no zero, no sign, odd parity, no AC,
247
                                ! carry x
248
        push    psw             ! send to bus
249
        pop     psw             ! keep stack neutral
250
        push    h               ! send to bus
251
        pop     h               ! keep stack neutral
252
        inr     h               ! a = 1, no zero, no sign, odd parity, no AC,
253
                                ! carry x
254
        push    psw             ! send to bus
255
        pop     psw             ! keep stack neutral
256
        push    h               ! send to bus
257
        pop     h               ! keep stack neutral
258
        inr     h
259
        inr     h               ! a = 3, no zero, no sign, even parity, no AC,
260
                                ! carry x
261
        push    psw             ! send to bus
262
        pop     psw             ! keep stack neutral
263
        push    h               ! send to bus
264
        pop     h               ! keep stack neutral
265
        mvi     h,$0f           ! a = $0f
266
        inr     h               ! a = $10, no zero, no sign, odd parity, AC
267
        push    psw             ! send to bus
268
        pop     psw             ! keep stack neutral
269
        push    h               ! send to bus
270
        pop     h               ! keep stack neutral
271
        mvi     h,$fe           ! a = $fe
272
        inr     h               ! a = $ff, no zero, sign, even parity, no AC
273
        push    psw             ! send to bus
274
        pop     psw             ! keep stack neutral
275
        push    h               ! send to bus
276
        pop     h               ! keep stack neutral
277
        inr     h               ! a = $00, zero, no sign, even parity, AC
278
        push    psw             ! send to bus
279
        pop     psw             ! keep stack neutral
280
        push    h               ! send to bus
281
        pop     h               ! keep stack neutral
282
!
283
! inr l
284
!
285
        mvi     l,$00           ! a = 0
286
        inr     l               ! a = 1, no zero, no sign, odd parity, no AC,
287
                                ! carry x
288
        push    psw             ! send to bus
289
        pop     psw             ! keep stack neutral
290
        push    h               ! send to bus
291
        pop     h               ! keep stack neutral
292
        inr     l               ! a = 1, no zero, no sign, odd parity, no AC,
293
                                ! carry x
294
        push    psw             ! send to bus
295
        pop     psw             ! keep stack neutral
296
        push    h               ! send to bus
297
        pop     h               ! keep stack neutral
298
        inr     l
299
        inr     l               ! a = 3, no zero, no sign, even parity, no AC,
300
                                ! carry x
301
        push    psw             ! send to bus
302
        pop     psw             ! keep stack neutral
303
        push    h               ! send to bus
304
        pop     h               ! keep stack neutral
305
        mvi     l,$0f           ! a = $0f
306
        inr     l               ! a = $10, no zero, no sign, odd parity, AC
307
        push    psw             ! send to bus
308
        pop     psw             ! keep stack neutral
309
        push    h               ! send to bus
310
        pop     h               ! keep stack neutral
311
        mvi     l,$fe           ! a = $fe
312
        inr     l               ! a = $ff, no zero, sign, even parity, no AC
313
        push    psw             ! send to bus
314
        pop     psw             ! keep stack neutral
315
        push    h               ! send to bus
316
        pop     h               ! keep stack neutral
317
        inr     l               ! a = $00, zero, no sign, even parity, AC
318
        push    psw             ! send to bus
319
        pop     psw             ! keep stack neutral
320
        push    h               ! send to bus
321
        pop     h               ! keep stack neutral
322
!
323
! dcr a
324
!
325
        mvi     a,$00           ! a = $00
326
        dcr     a               ! a = $ff, no zero, sign, even parity, no AC,
327
                                ! carry x
328
        push    psw             ! send to bus
329
        pop     psw             ! keep stack neutral
330
        dcr     a               ! a = $fe, no zero, sign, odd parity, no AC,
331
        push    psw             ! send to bus
332
        pop     psw             ! keep stack neutral
333
        mvi     a,$10           ! a = $10
334
        dcr     a               ! a = $0f, no zero, no sign, odd parity, AC
335
        push    psw             ! send to bus
336
        pop     psw             ! keep stack neutral
337
        mvi     a,$01           ! a = $01
338
        dcr     a               ! a = $00, zero, no sign, even parity, no AC
339
        push    psw             ! send to bus
340
        pop     psw             ! keep stack neutral
341
 
342
 
343
 
344
 
345
 

powered by: WebSVN 2.1.0

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