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

Subversion Repositories socgen

[/] [socgen/] [trunk/] [Projects/] [opencores.org/] [Mos6502/] [sw/] [irq_2_test/] [irq_2_test.asm] - Blame information for rev 131

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 131 jt_eaton
 
2
  include  ../io_module/io_module.asm
3
 
4
 
5
        ;;  page zero variables used during test
6
c_test         = $40    ;
7
n_test         = $41    ;
8
v_test         = $42    ;
9
z_test         = $43    ;
10
pointer        = $44    ;
11
counter0       = $46    ;
12
counter1       = $48    ;
13
 
14
        * = $f000  ; assemble at $f000
15
               code
16
 
17
 
18
.start             nop
19
                   lda #$00
20
                   sta counter0
21
                   sta counter1
22
                   sta $04
23
                   sta $05
24
                   sta $06
25
                   sta $07
26
                   lda #$00
27
                   sta io_base+io_gpio_0
28
                   lda io_base+io_gpio_0
29
                   lda #$01
30
                   sta io_base+io_gpio_0
31
                   lda io_base+io_gpio_0
32
                   sta io_base+io_pic_irq_en
33
                   lda #$f7
34
                   sta io_base+io_vic_irq_en
35
                   jmp .lab_00
36
                   lda #$00
37
                   jmp .error
38
.lab_00            lda #$01
39
                   sta io_base+io_gpio_0
40
                   lda io_base+io_gpio_0
41
                   lda #$02
42
                   sta io_base+io_gpio_0
43
                   lda io_base+io_gpio_0
44
                   clc
45
                   bcc .lab_44
46
                   lda #$01
47
                   jmp .error
48
 
49
.lab_44            lda #$28
50
                   sta io_base+io_gpio_0
51
                   lda #$EF
52
                   sta $0200
53
                   inc $0200
54
                   lda #$F0
55
                   cmp $0200
56
                   beq  .lab_45
57
                   lda #$39
58
                   jmp .error
59
.lab_45            lda #$FF
60
                   sta $0200
61
                   inc $0200
62
                   beq  .lab_46
63
                   lda #$40
64
                   jmp .error
65
.lab_46            lda #$29
66
                   sta io_base+io_gpio_0
67
                   ldy #$32
68
                   sty $0201
69
                   ldx #$B4
70
                   stx $0200
71
                   lda #$86
72
                   eor $0200
73
                   cmp $0201
74
                   beq  .lab_47
75
                   lda #$41
76
                   jmp .error
77
.lab_47            lda #$2A
78
                   sta io_base+io_gpio_0
79
                   ldy #$B6
80
                   sty $0201
81
                   ldx #$B4
82
                   stx $0200
83
                   lda #$86
84
                   ora $0200
85
                   cmp $0201
86
                   beq  .lab_59
87
                   lda #$42
88
                   jmp .error
89
 
90
 
91
 
92
.lab_59            lda #$31
93
                   sta io_base+io_gpio_0
94
                   lda #$42
95
                   pha
96
                   lda #$ED
97
                   pha
98
                   lda #$BE
99
                   pha
100
                   lda #$00
101
                   pla
102
                   cmp #$BE
103
                   bne .lab_60
104
                   pla
105
                   cmp #$ED
106
                   bne .lab_60
107
                   pla
108
                   cmp #$42
109
                   bne .lab_60
110
                   jmp  .lab_605
111
.lab_60            lda #$4E
112
                   jmp .error
113
.lab_605           lda #$32
114
                   sta io_base+io_gpio_0
115
                   ldx #$00
116
                   clc
117
                   lda #$03
118
                   sta $0200,X
119
                   adc #$07
120
                   inx
121
                   sta $0200,X
122
                   adc #$07
123
                   inx
124
                   sta $0200,X
125
                   adc #$07
126
                   inx
127
                   sta $0200,X
128
                   adc #$07
129
                   inx
130
                   sta $0200,X
131
                   adc #$07
132
                   inx
133
                   sta $0200,X
134
                   adc #$07
135
                   inx
136
                   sta $0200,X
137
                   ldx #$00
138
                   clc
139
                   lda $0200,X
140
                   cmp #$03
141
                   bne .lab_61
142
                   inx
143
                   lda $0200,X
144
                   cmp #$0A
145
                   bne .lab_61
146
                   inx
147
                   lda $0200,X
148
                   cmp #$11
149
                   bne .lab_61
150
                   inx
151
                   lda $0200,X
152
                   cmp #$18
153
                   bne .lab_61
154
                   inx
155
                   lda $0200,X
156
                   cmp #$1F
157
                   bne .lab_61
158
                   inx
159
                   lda $0200,X
160
                   cmp #$26
161
                   bne .lab_61
162
                   inx
163
                   lda $0200,X
164
                   cmp #$2D
165
                   bne .lab_61
166
                   jmp .lab_615
167
.lab_61            lda #$4F
168
                   jmp .error
169
.lab_615           lda #$33
170
                   sta io_base+io_gpio_0
171
                   ldy #$00
172
                   clc
173
                   lda #$03
174
                   sta $0200,Y
175
                   adc #$07
176
                   iny
177
                   sta $0200,Y
178
                   adc #$07
179
                   iny
180
                   sta $0200,Y
181
                   adc #$07
182
                   iny
183
                   sta $0200,Y
184
                   adc #$07
185
                   iny
186
                   sta $0200,Y
187
                   adc #$07
188
                   iny
189
                   sta $0200,Y
190
                   adc #$07
191
                   iny
192
                   sta $0200,Y
193
                   ldy #$00
194
                   clc
195
                   lda $0200,Y
196
                   cmp #$03
197
                   bne .lab_62
198
                   iny
199
                   lda $0200,Y
200
                   cmp #$0A
201
                   bne .lab_62
202
                   iny
203
                   lda $0200,Y
204
                   cmp #$11
205
                   bne .lab_62
206
                   iny
207
                   lda $0200,Y
208
                   cmp #$18
209
                   bne .lab_62
210
                   iny
211
                   lda $0200,Y
212
                   cmp #$1F
213
                   bne .lab_62
214
                   iny
215
                   lda $0200,Y
216
                   cmp #$26
217
                   bne .lab_62
218
                   iny
219
                   lda $0200,Y
220
                   cmp #$2D
221
                   bne .lab_62
222
                   jmp .lab_625
223
.lab_62            lda #$50
224
                   jmp .error
225
.lab_625           lda #$34
226
                   sta io_base+io_gpio_0
227
                   lda #$52
228
                   sta $0200
229
                   lda #$24
230
                   sta $0201
231
                   lda #$78
232
                   sta $0202
233
                   lda #$00
234
                   ldx #$00
235
                   clc
236
                   adc $0200,X
237
                   clc
238
                   inx
239
                   adc $0200,X
240
                   clc
241
                   inx
242
                   adc $0200,X
243
                   cmp #$EE
244
                   beq .lab_63
245
                   lda #$51
246
                   jmp .error
247
.lab_63            lda #$35
248
                   sta io_base+io_gpio_0
249
                   lda #$68
250
                   sta $0200
251
                   lda #$13
252
                   sta $0201
253
                   lda #$95
254
                   sta $0202
255
                   lda #$00
256
                   ldy #$00
257
                   clc
258
                   adc $0200,Y
259
                   clc
260
                   iny
261
                   adc $0200,Y
262
                   clc
263
                   iny
264
                   adc $0200,Y
265
                   cmp #$10
266
                   beq  .lab_64
267
                   lda #$52
268
                   jmp .error
269
.lab_64            lda #$36
270
                   sta io_base+io_gpio_0
271
                   lda #$34
272
                   sta $0200
273
                   lda #$54
274
                   sta $0201
275
                   lda #$97
276
                   sta $0202
277
                   lda #$FF
278
                   ldy #$00
279
                   and $0200,Y
280
                   iny
281
                   and $0200,Y
282
                   iny
283
                   and $0200,Y
284
                   cmp #$14
285
                   beq .lab_65
286
                   lda #$53
287
                   jmp .error
288
.lab_65            lda #$37
289
                   sta io_base+io_gpio_0
290
                   lda #$34
291
                   sta $0200
292
                   lda #$54
293
                   sta $0201
294
                   lda #$97
295
                   sta $0202
296
                   lda #$FF
297
                   ldx #$00
298
                   and $0200,X
299
                   inx
300
                   and $0200,X
301
                   inx
302
                   and $0200,X
303
                   cmp #$14
304
                   beq .lab_66
305
                   lda #$54
306
                   jmp .error
307
.lab_66            lda #$38
308
                   sta io_base+io_gpio_0
309
                   lda #$64
310
                   sta $00
311
                   lda #$39
312
                   clc
313
                   adc $00
314
                   cmp #$9D
315
                   beq  .lab_735
316
                   lda #$55
317
                   jmp .error
318
.lab_735           lda #$3F
319
                   sta io_base+io_gpio_0
320
                   lda #$95
321
                   sta $02
322
                   lda #$00
323
                   lda #$95
324
                   cmp  $02
325
                   beq  .lab_74
326
                   lda #$5C
327
                   jmp .error
328
.lab_74            lda #$75
329
                   sta $02
330
                   lda #$67
331
                   cmp  $02
332
                   bne .lab_75
333
                   lda #$5D
334
                   jmp .error
335
.lab_75            lda #$40
336
                   sta io_base+io_gpio_0
337
                   lda #$36
338
                   sta $02
339
                   lda #$00
340
                   ldx #$36
341
                   cpx $02
342
                   beq  .lab_76
343
                   lda #$5E
344
                   jmp .error
345
.lab_76            lda #$57
346
                   sta $02
347
                   ldx #$39
348
                   cpx $02
349
                   bne .lab_77
350
                   lda #$5F
351
                   jmp .error
352
.lab_77            lda #$41
353
                   sta io_base+io_gpio_0
354
                   lda #$75
355
                   sta $02
356
                   lda #$00
357
                   ldy #$75
358
                   cpy $02
359
                   beq  .lab_78
360
                   lda #$60
361
                   jmp .error
362
.lab_78            lda #$43
363
                   sta $02
364
                   ldy #$24
365
                   cpy $02
366
                   bne .lab_79
367
                   lda #$61
368
                   jmp .error
369
.lab_79            lda #$42
370
                   sta io_base+io_gpio_0
371
                   cli          ; was cli
372
                   lda #$00
373
                   sta $05
374
                   lda #$01
375
                   sta $04
376
                   lda #$10
377
                   sta io_base+io_tim0_end
378
                   sta io_base+io_tim0_start
379
                   ldx #$00
380
                   inx
381
                   inx
382
                   inx
383
                   inx
384
                   inx
385
                   inx
386
                   inx
387
                   inx
388
                   inx
389
                   inx
390
                   inx
391
                   inx
392
                   inx
393
                   inx
394
                   inx
395
                   inx
396
                   cpx  #$10
397
                   beq .lab_80
398
                   lda #$62
399
                   jmp .error
400
.lab_80            lda $05
401
                   cmp #$00     ; was 1 if int serviced
402
                   beq  .lab_81
403
                   lda #$63
404
                   jmp .error
405
.lab_81            nop          ;   was sei to disable interrupt
406
                   lda #$00
407
                   sta $05
408
                   lda #$01
409
                   sta $04
410
                   lda #$10
411
                   sta io_base+io_tim0_end
412
                   sta io_base+io_tim0_start
413
                   ldx #$00
414
                   inx
415
                   inx
416
                   inx
417
                   inx
418
                   inx
419
                   inx
420
                   inx
421
                   inx
422
                   inx
423
                   inx
424
                   inx
425
                   inx
426
                   inx
427
                   inx
428
                   inx
429
                   inx
430
                   cpx #$10
431
                   beq .lab_82
432
                   lda #$62
433
                   jmp .error
434
.lab_82            lda $05
435
                   cmp #$00
436
                   beq  .lab_83
437
                   lda #$63
438
                   jmp .error
439
.lab_83            lda #$00
440
                   sta $04
441
                   sta io_base+io_tim0_end
442
                   lda #$43
443
                   sta io_base+io_gpio_0
444
                   lda #$00
445
                   sta $07
446
                   lda #$01
447
                   sta $06
448
                   lda #$10
449
                   sta io_base+io_tim0_end ; change to tim1 for nmi
450
                   sta io_base+io_tim0_start   ; change to tim1 for nmi
451
                   ldx #$00
452
                   inx
453
                   inx
454
                   inx
455
                   inx
456
                   inx
457
                   inx
458
                   inx
459
                   inx
460
                   inx
461
                   inx
462
                   inx
463
                   inx
464
                   inx
465
                   inx
466
                   inx
467
                   inx
468
                   cpx  #$10
469
                   beq  .lab_84
470
                   lda #$64
471
                   jmp .error
472
.lab_84            lda $07
473
                   cmp #$00     ; change to 1 if nmi serviced
474
                   beq  .lab_85
475
                   lda #$65
476
                   jmp .error
477
.lab_85            lda #$00
478
                   sta $06
479
                   sta io_base+io_tim1_end
480
                   lda #$44
481
                   sta io_base+io_gpio_0
482
                   jmp .lab_865
483
.lab_86            jmp .lab_866
484
.lab_865           sec
485
                   bcs .lab_86
486
                   nop
487
                   nop
488
                   nop
489
                   lda #$66
490
                   jmp .error
491
.lab_866           lda #$45
492
                   sta io_base+io_gpio_0
493
                   sec
494
                   lda #$34
495
                   sbc #$75
496
                   bcc .lab_92
497
                   lda #$67
498
                   jmp .error
499
 
500
.lab_92            lda #$48
501
                   sta io_base+io_gpio_0
502
                   lda #$53
503
                   sta $30
504
                   lda #$00
505
                   ldx #$40
506
                   lda $F0,X
507
                   cmp #$53
508
                   beq  .lab_93
509
                   lda #$73
510
                   jmp .error
511
.lab_93            lda #$49
512
                   sta io_base+io_gpio_0
513
                   clc
514
                   lda #$FF
515
                   adc #$01
516
                   bcs .lab_94
517
                   lda #$74
518
                   jmp .error
519
.lab_94            lda #$4A
520
                   sta io_base+io_gpio_0
521
                   sec
522
                   lda #$7F
523
                   sbc #$7E
524
                   bvc  .good
525
                   lda #$75
526
                   jmp .error
527
 
528
 
529
 
530
        ;;  pass end loop
531
.good              nop
532
                   lda #$FF
533
                   sta io_base+io_gpio_0
534
                   jmp .end_lp
535
 
536
        ;; error  & end loop
537
.error             sei
538
                   sta io_base+io_gpio_1
539
.end_lp            lda #$00
540
                   pha
541
                   plp
542
                   jmp .end_lp
543
 
544
 
545
        ;; Interrupt service routine
546
.nmi_vec           pha
547
                   txa
548
                   pha
549
                   tya
550
                   pha
551
                   lda #$10
552
.nmi_001           sta io_base+io_tim0_end
553
                   inc $05
554
                   pla
555
                   tay
556
                   pla
557
                   tax
558
                   pla
559
                   rti
560
 
561
        ;; Interrupt service routine
562
 
563
.irq_vec           pha
564
                   txa
565
                   pha
566
                   tya
567
                   pha
568
                   lda #$10
569
                   sta io_base+io_tim0_end
570
                   lda #$80
571
.irq_001           sta io_base+io_tim0_start
572
                   inc counter0
573
                   bne .irq_002
574
                   inc counter1
575
                   bne .irq_002
576
                   inc io_base+io_gpio_1
577
.irq_002           pla
578
                   tay
579
                   pla
580
                   tax
581
                   pla
582
                   rti
583
 
584
 
585
 
586
 * = $ffe0  ; vectors
587
 
588
 
589
 
590
     dw .irq_vec               ;
591
 
592
 
593
 
594
 * = $fffa  ; vectors
595
 
596
 
597
 
598
     dw .nmi_vec               ;
599
     dw .start         ;
600
     dw .irq_vec               ;
601
 
602
 
603
 
604
 
605
 
606
 code
607
 
608
 
609
 
610
 
611
 
612
 

powered by: WebSVN 2.1.0

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