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

Subversion Repositories socgen

[/] [socgen/] [trunk/] [Projects/] [opencores.org/] [Mos6502/] [sw/] [prog_test/] [prog_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
 
12
 
13
        * = $c000  ; assemble at $f000
14
               code
15
 
16
                   jmp .nmi_vec
17
                   jmp .irq_vec
18
.start             nop
19
                   lda #$00
20
                   sta $04
21
                   sta $05
22
                   sta $06
23
                   sta $07
24
                   lda #$00
25
                   sta io_base+io_gpio_0
26
                   lda io_base+io_gpio_0
27
                   lda #$01
28
                   sta io_base+io_gpio_0
29
                   lda io_base+io_gpio_0
30
                   jmp .lab_00
31
                   lda #$00
32
                   jmp .error
33
.lab_00            lda #$01
34
                   sta io_base+io_gpio_0
35
                   lda io_base+io_gpio_0
36
                   lda #$02
37
                   sta io_base+io_gpio_0
38
                   lda io_base+io_gpio_0
39
                   clc
40
                   bcc .lab_01
41
                   lda #$01
42
                   jmp .error
43
.lab_01            lda #$03
44
                   sta io_base+io_gpio_0
45
                   lda io_base+io_gpio_0
46
                   sec
47
                   bcc .lab_02
48
                   jmp .lab_025
49
.lab_02            lda #$02
50
                   jmp .error
51
.lab_025           lda #$04
52
                   sta io_base+io_gpio_0
53
                   lda io_base+io_gpio_0
54
                   sec
55
                   bcs .lab_03
56
                   lda #$01
57
                   jmp .error
58
 
59
.lab_03            clc
60
                   bcs .lab_04
61
                   jmp .lab_045
62
.lab_04            lda #$02
63
                   jmp .error
64
.lab_045           lda #$05
65
                   sta io_base+io_gpio_0
66
                   lda #$05
67
                   cmp #$04
68
                   beq .lab_05
69
                   cmp #$05
70
                   beq .lab_06
71
.lab_05            lda #$03
72
                   jmp .error
73
.lab_06            lda #$06
74
                   sta io_base+io_gpio_0
75
                   lda #$c4
76
                   cmp #$e4
77
                   bne .lab_07
78
                   lda #$04
79
                   jmp .error
80
.lab_07            cmp #$C4
81
                   bne .lab_08
82
                   jmp .lab_085
83
.lab_08            lda #$05
84
                   jmp .error
85
.lab_085           lda #$07
86
                   sta io_base+io_gpio_0
87
                   ldx #$42
88
                   cpx #$32
89
                   beq  .lab_09
90
                   cpx #$42
91
                   beq .lab_10
92
.lab_09            lda #$06
93
                   jmp .error
94
.lab_10            lda #$08
95
                   sta io_base+io_gpio_0
96
                   ldy #$C3
97
                   cpy #$D3
98
                   beq .lab_11
99
                   cpy #$C3
100
                   beq  .lab_12
101
.lab_11            lda #$07
102
                   jmp  .error
103
.lab_12            lda #$09
104
                   sta io_base+io_gpio_0
105
                   ldx #$00
106
                   dex
107
                   cpx #$FF
108
                   beq .lab_13
109
                   lda #$08
110
                   jmp .error
111
.lab_13            lda #$0A
112
                   sta io_base+io_gpio_0
113
                   ldy #$00
114
                   dey
115
                   cpy #$FF
116
                   beq .lab_14
117
                   lda #$09
118
                   jmp .error
119
.lab_14            lda #$0B
120
                   sta io_base+io_gpio_0
121
                   ldx #$0F
122
                   inx
123
                   cpx #$10
124
                   beq  .lab_15
125
                   lda #$10
126
                   jmp .error
127
.lab_15            lda #$0C
128
                   sta io_base+io_gpio_0
129
                   ldy #$7F
130
                   iny
131
                   cpy #$80
132
                   beq  .lab_16
133
                   lda #$11
134
                   jmp .error
135
.lab_16            lda #$0D
136
                   sta io_base+io_gpio_0
137
                   lda #$ED
138
                   jsr  .lab_165
139
                   cmp #$42
140
                   beq  .lab_17
141
                   lda #$12
142
                   jmp .error
143
.lab_165           lda #$42
144
                   rts
145
.lab_17            lda #$0E
146
                   sta io_base+io_gpio_0
147
                   lda #$35
148
                   tax
149
                   cpx #$35
150
                   beq .lab_18
151
                   lda #$12
152
                   jmp .error
153
.lab_18            lda #$0F
154
                   sta io_base+io_gpio_0
155
                   lda #$76
156
                   tay
157
                   cpy #$76
158
                   beq  .lab_19
159
                   lda #$13
160
                   jmp .error
161
.lab_19            lda #$10
162
                   sta io_base+io_gpio_0
163
                   ldx #$52
164
                   txa
165
                   cmp #$52
166
                   beq  .lab_20
167
                   lda #$14
168
                   jmp .error
169
.lab_20            lda #$11
170
                   sta io_base+io_gpio_0
171
                   ldy #$52
172
                   tya
173
                   cmp #$52
174
                   beq  .lab_21
175
                   lda #$15
176
                   jmp .error
177
.lab_21            lda #$12
178
                   sta io_base+io_gpio_0
179
                   clc
180
                   lda #$23
181
                   adc #$45
182
                   cmp #$68
183
                   beq  .lab_22
184
                   lda #$16
185
                   jmp .error
186
.lab_22            sec
187
                   lda #$42
188
                   adc #$63
189
                   cmp #$A6
190
                   beq  .lab_23
191
                   lda #$17
192
                   jmp .error
193
.lab_23            lda #$13
194
                   sta io_base+io_gpio_0
195
                   lda #$36
196
                   and #$f0
197
                   cmp #$30
198
                   beq  .lab_24
199
                   lda #$18
200
                   jmp .error
201
.lab_24            lda #$14
202
                   sta io_base+io_gpio_0
203
                   clc
204
                   lda #$36
205
                   asl a
206
                   cmp #$6C
207
                   beq  .lab_25
208
                   lda #$19
209
                   jmp .error
210
.lab_25            lda #$15
211
                   sta io_base+io_gpio_0
212
                   lda #$89
213
                   eor #$96
214
                   cmp #$1F
215
                   beq  .lab_26
216
                   lda #$20
217
                   jmp .error
218
.lab_26            lda #$16
219
                   sta io_base+io_gpio_0
220
                   clc
221
                   lda #$52
222
                   lsr a
223
                   cmp #$29
224
                   beq  .lab_27
225
                   lda #$21
226
                   jmp .error
227
.lab_27            lda #$17
228
                   sta io_base+io_gpio_0
229
                   lda #$B6
230
                   ora #$4D
231
                   cmp #$FF
232
                   beq  .lab_28
233
                   lda #$22
234
                   jmp .error
235
.lab_28            lda #$18
236
                   sta io_base+io_gpio_0
237
                   clc
238
                   lda #$23
239
                   rol a
240
                   cmp #$46
241
                   beq  .lab_29
242
                   lda #$23
243
                   jmp .error
244
.lab_29            sec
245
                   lda #$42
246
                   rol a
247
                   cmp #$85
248
                   beq  .lab_30
249
                   lda #$24
250
                   jmp .error
251
.lab_30            lda #$19
252
                   sta io_base+io_gpio_0
253
                   clc
254
                   lda #$23
255
                   ror a
256
                   cmp #$11
257
                   beq  .lab_31
258
                   lda #$25
259
                   jmp .error
260
.lab_31            sec
261
                   lda #$42
262
                   ror a
263
                   cmp #$A1
264
                   beq  .lab_32
265
                   lda #$26
266
                   jmp .error
267
.lab_32            lda #$20
268
                   sta io_base+io_gpio_0
269
                   sec
270
                   lda #$86
271
                   sbc #$45
272
                   cmp #$41
273
                   beq  .lab_33
274
                   lda #$27
275
                   jmp .error
276
.lab_33            clc
277
                   lda #$89
278
                   sbc #$23
279
                   cmp #$65
280
                   beq  .lab_34
281
                   lda #$28
282
                   jmp .error
283
.lab_34            lda #$21
284
                   sta io_base+io_gpio_0
285
                   lda #$42
286
                   sta $0200
287
                   lda #$9F
288
                   sta $0201
289
                   lda $0200
290
                   cmp #$42
291
                   beq  .lab_35
292
                   lda #$29
293
                   jmp .error
294
.lab_35            lda $0201
295
                   cmp #$9F
296
                   beq  .lab_36
297
                   lda #$30
298
                   jmp .error
299
.lab_36            lda #$22
300
                   sta io_base+io_gpio_0
301
                   lda #$94
302
                   sta $0201
303
                   lda #$41
304
                   sta $0200
305
                   lda #$53
306
                   clc
307
                   adc $0200
308
                   cmp $0201
309
                   beq .lab_37
310
                   lda #$31
311
                   jmp .error
312
.lab_37            lda #$8D
313
                   sta $0201
314
                   lda #$98
315
                   sta $0200
316
                   lda #$F4
317
                   sec
318
                   adc $0200
319
                   cmp $0201
320
                   beq  .lab_38
321
                   lda #$32
322
                   jmp .error
323
.lab_38            lda #$23
324
                   sta io_base+io_gpio_0
325
                   ldy #$84
326
                   sty $0201
327
                   ldx #$B4
328
                   stx $0200
329
                   lda #$86
330
                   and $0200
331
                   cmp $0201
332
                   beq  .lab_39
333
                   lda #$33
334
                   jmp .error
335
.lab_39            lda #$24
336
                   sta io_base+io_gpio_0
337
                   ldx #$55
338
                   stx $0200
339
                   asl $0200
340
                   lda $0200
341
                   cmp #$AA
342
                   beq  .lab_40
343
                   lda #$34
344
                   jmp .error
345
.lab_40            lda #$25
346
                   sta io_base+io_gpio_0
347
                   lda #$53
348
                   sta $0200
349
                   lda #$00
350
                   ldx #$53
351
                   cpx $0200
352
                   beq  .lab_41
353
                   lda #$35
354
                   jmp .error
355
.lab_41            lda #$26
356
                   sta io_base+io_gpio_0
357
                   lda #$45
358
                   sta $0200
359
                   lda #$00
360
                   ldy #$45
361
                   cpy $0200
362
                   beq  .lab_42
363
                   lda #$36
364
                   jmp .error
365
.lab_42            lda #$27
366
                   sta io_base+io_gpio_0
367
                   lda #$EF
368
                   sta $0200
369
                   dec $0200
370
                   lda #$EE
371
                   cmp $0200
372
                   beq  .lab_43
373
                   lda #$37
374
                   jmp .error
375
.lab_43            lda #$01
376
                   sta $0200
377
                   dec $0200
378
                   beq  .lab_44
379
                   lda #$38
380
                   jmp .error
381
.lab_44            lda #$28
382
                   sta io_base+io_gpio_0
383
                   lda #$EF
384
                   sta $0200
385
                   inc $0200
386
                   lda #$F0
387
                   cmp $0200
388
                   beq  .lab_45
389
                   lda #$39
390
                   jmp .error
391
.lab_45            lda #$FF
392
                   sta $0200
393
                   inc $0200
394
                   beq  .lab_46
395
                   lda #$40
396
                   jmp .error
397
.lab_46            lda #$29
398
                   sta io_base+io_gpio_0
399
                   ldy #$32
400
                   sty $0201
401
                   ldx #$B4
402
                   stx $0200
403
                   lda #$86
404
                   eor $0200
405
                   cmp $0201
406
                   beq  .lab_47
407
                   lda #$41
408
                   jmp .error
409
.lab_47            lda #$2A
410
                   sta io_base+io_gpio_0
411
                   ldy #$B6
412
                   sty $0201
413
                   ldx #$B4
414
                   stx $0200
415
                   lda #$86
416
                   ora $0200
417
                   cmp $0201
418
                   beq  .lab_48
419
                   lda #$42
420
                   jmp .error
421
.lab_48            lda #$2B
422
                   sta io_base+io_gpio_0
423
                   clc
424
                   ldx #$AA
425
                   stx $0200
426
                   rol $0200
427
                   bcs .lab_49
428
                   lda #$43
429
                   jmp .error
430
.lab_49            lda $0200
431
                   cmp #$54
432
                   beq  .lab_50
433
                   lda #$44
434
                   jmp .error
435
.lab_50            lda #$2C
436
                   sta io_base+io_gpio_0
437
                   clc
438
                   ldx #$55
439
                   stx $0200
440
                   ror $0200
441
                   bcs .lab_51
442
                   lda #$45
443
                   jmp .error
444
.lab_51            lda $0200
445
                   cmp #$2A
446
                   beq  .lab_52
447
                   lda #$46
448
                   jmp .error
449
.lab_52            lda #$2D
450
                   sta io_base+io_gpio_0
451
                   ldx #$96
452
                   stx $0200
453
                   lsr $0200
454
                   lda $0200
455
                   cmp #$4B
456
                   beq  .lab_53
457
                   lda #$47
458
                   jmp .error
459
.lab_53            lda #$2E
460
                   sta io_base+io_gpio_0
461
                   ldx #$42
462
                   stx $0200
463
                   ldx #$9F
464
                   stx $0201
465
                   ldx $0200
466
                   cpx #$42
467
                   beq  .lab_54
468
                   lda #$48
469
                   jmp .error
470
.lab_54            ldx $0201
471
                   cpx #$9F
472
                   beq  .lab_55
473
                   lda #$49
474
                   jmp .error
475
.lab_55            lda #$2F
476
                   sta io_base+io_gpio_0
477
                   ldy #$34
478
                   sty $0200
479
                   ldy #$75
480
                   sty $0201
481
                   ldy $0200
482
                   cpy #$34
483
                   beq  .lab_56
484
                   lda #$4A
485
                   jmp .error
486
.lab_56            ldy $0201
487
                   cpy #$75
488
                   beq  .lab_57
489
                   lda #$4B
490
                   jmp .error
491
.lab_57            lda #$30
492
                   sta io_base+io_gpio_0
493
                   lda #$12
494
                   sta $0201
495
                   lda #$41
496
                   sta $0200
497
                   lda #$53
498
                   sec
499
                   sbc $0200
500
                   cmp $0201
501
                   beq  .lab_58
502
                   lda #$4C
503
                   jmp .error
504
.lab_58            lda #$5B
505
                   sta $0201
506
                   lda #$98
507
                   sta $0200
508
                   lda #$F4
509
                   clc
510
                   sbc $0200
511
                   cmp $0201
512
                   beq  .lab_59
513
                   lda #$4D
514
                   jmp .error
515
.lab_59            lda #$31
516
                   sta io_base+io_gpio_0
517
                   lda #$42
518
                   pha
519
                   lda #$ED
520
                   pha
521
                   lda #$BE
522
                   pha
523
                   lda #$00
524
                   pla
525
                   cmp #$BE
526
                   bne .lab_60
527
                   pla
528
                   cmp #$ED
529
                   bne .lab_60
530
                   pla
531
                   cmp #$42
532
                   bne .lab_60
533
                   jmp  .lab_605
534
.lab_60            lda #$4E
535
                   jmp .error
536
.lab_605           lda #$32
537
                   sta io_base+io_gpio_0
538
                   ldx #$00
539
                   clc
540
                   lda #$03
541
                   sta $0200,X
542
                   adc #$07
543
                   inx
544
                   sta $0200,X
545
                   adc #$07
546
                   inx
547
                   sta $0200,X
548
                   adc #$07
549
                   inx
550
                   sta $0200,X
551
                   adc #$07
552
                   inx
553
                   sta $0200,X
554
                   adc #$07
555
                   inx
556
                   sta $0200,X
557
                   adc #$07
558
                   inx
559
                   sta $0200,X
560
                   ldx #$00
561
                   clc
562
                   lda $0200,X
563
                   cmp #$03
564
                   bne .lab_61
565
                   inx
566
                   lda $0200,X
567
                   cmp #$0A
568
                   bne .lab_61
569
                   inx
570
                   lda $0200,X
571
                   cmp #$11
572
                   bne .lab_61
573
                   inx
574
                   lda $0200,X
575
                   cmp #$18
576
                   bne .lab_61
577
                   inx
578
                   lda $0200,X
579
                   cmp #$1F
580
                   bne .lab_61
581
                   inx
582
                   lda $0200,X
583
                   cmp #$26
584
                   bne .lab_61
585
                   inx
586
                   lda $0200,X
587
                   cmp #$2D
588
                   bne .lab_61
589
                   jmp .lab_615
590
.lab_61            lda #$4F
591
                   jmp .error
592
.lab_615           lda #$33
593
                   sta io_base+io_gpio_0
594
                   ldy #$00
595
                   clc
596
                   lda #$03
597
                   sta $0200,Y
598
                   adc #$07
599
                   iny
600
                   sta $0200,Y
601
                   adc #$07
602
                   iny
603
                   sta $0200,Y
604
                   adc #$07
605
                   iny
606
                   sta $0200,Y
607
                   adc #$07
608
                   iny
609
                   sta $0200,Y
610
                   adc #$07
611
                   iny
612
                   sta $0200,Y
613
                   adc #$07
614
                   iny
615
                   sta $0200,Y
616
                   ldy #$00
617
                   clc
618
                   lda $0200,Y
619
                   cmp #$03
620
                   bne .lab_62
621
                   iny
622
                   lda $0200,Y
623
                   cmp #$0A
624
                   bne .lab_62
625
                   iny
626
                   lda $0200,Y
627
                   cmp #$11
628
                   bne .lab_62
629
                   iny
630
                   lda $0200,Y
631
                   cmp #$18
632
                   bne .lab_62
633
                   iny
634
                   lda $0200,Y
635
                   cmp #$1F
636
                   bne .lab_62
637
                   iny
638
                   lda $0200,Y
639
                   cmp #$26
640
                   bne .lab_62
641
                   iny
642
                   lda $0200,Y
643
                   cmp #$2D
644
                   bne .lab_62
645
                   jmp .lab_625
646
.lab_62            lda #$50
647
                   jmp .error
648
.lab_625           lda #$34
649
                   sta io_base+io_gpio_0
650
                   lda #$52
651
                   sta $0200
652
                   lda #$24
653
                   sta $0201
654
                   lda #$78
655
                   sta $0202
656
                   lda #$00
657
                   ldx #$00
658
                   clc
659
                   adc $0200,X
660
                   clc
661
                   inx
662
                   adc $0200,X
663
                   clc
664
                   inx
665
                   adc $0200,X
666
                   cmp #$EE
667
                   beq .lab_63
668
                   lda #$51
669
                   jmp .error
670
.lab_63            lda #$35
671
                   sta io_base+io_gpio_0
672
                   lda #$68
673
                   sta $0200
674
                   lda #$13
675
                   sta $0201
676
                   lda #$95
677
                   sta $0202
678
                   lda #$00
679
                   ldy #$00
680
                   clc
681
                   adc $0200,Y
682
                   clc
683
                   iny
684
                   adc $0200,Y
685
                   clc
686
                   iny
687
                   adc $0200,Y
688
                   cmp #$10
689
                   beq  .lab_64
690
                   lda #$52
691
                   jmp .error
692
.lab_64            lda #$36
693
                   sta io_base+io_gpio_0
694
                   lda #$34
695
                   sta $0200
696
                   lda #$54
697
                   sta $0201
698
                   lda #$97
699
                   sta $0202
700
                   lda #$FF
701
                   ldy #$00
702
                   and $0200,Y
703
                   iny
704
                   and $0200,Y
705
                   iny
706
                   and $0200,Y
707
                   cmp #$14
708
                   beq .lab_65
709
                   lda #$53
710
                   jmp .error
711
.lab_65            lda #$37
712
                   sta io_base+io_gpio_0
713
                   lda #$34
714
                   sta $0200
715
                   lda #$54
716
                   sta $0201
717
                   lda #$97
718
                   sta $0202
719
                   lda #$FF
720
                   ldx #$00
721
                   and $0200,X
722
                   inx
723
                   and $0200,X
724
                   inx
725
                   and $0200,X
726
                   cmp #$14
727
                   beq .lab_66
728
                   lda #$54
729
                   jmp .error
730
.lab_66            lda #$38
731
                   sta io_base+io_gpio_0
732
                   lda #$64
733
                   sta $00
734
                   lda #$39
735
                   clc
736
                   adc $00
737
                   cmp #$9D
738
                   beq  .lab_67
739
                   lda #$55
740
                   jmp .error
741
.lab_67            lda #$39
742
                   sta io_base+io_gpio_0
743
                   lda #$95
744
                   sta $00
745
                   lda #$76
746
                   sta $01
747
                   lda #$45
748
                   sta $02
749
                   ldx #$00
750
                   lda #$00
751
                   clc
752
                   adc  $00,X
753
                   inx
754
                   clc
755
                   adc $00,X
756
                   inx
757
                   clc
758
                   adc $00,X
759
                   cmp #$50
760
                   beq  .lab_68
761
                   lda #$56
762
                   jmp .error
763
.lab_68            lda #$3A
764
                   sta io_base+io_gpio_0
765
                   lda #$64
766
                   sta $00
767
                   lda #$39
768
                   and $00
769
                   cmp #$20
770
                   beq  .lab_69
771
                   lda #$57
772
                   jmp .error
773
.lab_69            lda #$3B
774
                   sta io_base+io_gpio_0
775
                   lda #$95
776
                   sta $00
777
                   lda #$76
778
                   sta $01
779
                   lda #$45
780
                   sta $02
781
                   ldx #$00
782
                   lda #$FF
783
                   and $00,X
784
                   inx
785
                   and $00,X
786
                   inx
787
                   and $00,X
788
                   cmp #$04
789
                   beq  .lab_70
790
                   lda #$58
791
                   jmp .error
792
.lab_70            lda #$3C
793
                   sta io_base+io_gpio_0
794
                   lda #$97
795
                   sta $0200
796
                   lda #$78
797
                   sta $0201
798
                   lda #$45
799
                   sta $0202
800
                   ldx #$00
801
                   lda #$97
802
                   cmp $0200,X
803
                   bne .lab_71
804
                   lda #$78
805
                   inx
806
                   cmp $0200,X
807
                   bne .lab_71
808
                   lda #$45
809
                   inx
810
                   cmp $0200,X
811
                   bne .lab_71
812
                   jmp .lab_715
813
.lab_71            lda #$59
814
                   jmp .error
815
.lab_715           lda #$3D
816
                   sta io_base+io_gpio_0
817
                   lda #$97
818
                   sta $0200
819
                   lda #$78
820
                   sta $0201
821
                   lda #$45
822
                   sta $0202
823
                   ldy #$00
824
                   lda #$97
825
                   cmp  $0200,Y
826
                   bne .lab_72
827
                   lda #$78
828
                   iny
829
                   cmp $0200,Y
830
                   bne .lab_72
831
                   lda #$45
832
                   iny
833
                   cmp $0200,Y
834
                   bne .lab_72
835
                   jmp .lab_725
836
.lab_72            lda #$5A
837
                   jmp .error
838
.lab_725           lda #$3E
839
                   sta io_base+io_gpio_0
840
                   lda #$97
841
                   sta $0200
842
                   lda #$78
843
                   sta $0201
844
                   lda #$45
845
                   sta $0202
846
                   ldx #$00
847
                   lda #$97
848
                   cmp $0200,X
849
                   bne .lab_73
850
                   lda #$78
851
                   inx
852
                   cmp $0200,X
853
                   bne .lab_73
854
                   lda #$45
855
                   inx
856
                   cmp $0200,X
857
                   bne .lab_73
858
                   jmp .lab_735
859
.lab_73            lda #$5B
860
                   jmp .error
861
.lab_735           lda #$3F
862
                   sta io_base+io_gpio_0
863
                   lda #$95
864
                   sta $02
865
                   lda #$00
866
                   lda #$95
867
                   cmp  $02
868
                   beq  .lab_74
869
                   lda #$5C
870
                   jmp .error
871
.lab_74            lda #$75
872
                   sta $02
873
                   lda #$67
874
                   cmp  $02
875
                   bne .lab_75
876
                   lda #$5D
877
                   jmp .error
878
.lab_75            lda #$40
879
                   sta io_base+io_gpio_0
880
                   lda #$36
881
                   sta $02
882
                   lda #$00
883
                   ldx #$36
884
                   cpx $02
885
                   beq  .lab_76
886
                   lda #$5E
887
                   jmp .error
888
.lab_76            lda #$57
889
                   sta $02
890
                   ldx #$39
891
                   cpx $02
892
                   bne .lab_77
893
                   lda #$5F
894
                   jmp .error
895
.lab_77            lda #$41
896
                   sta io_base+io_gpio_0
897
                   lda #$75
898
                   sta $02
899
                   lda #$00
900
                   ldy #$75
901
                   cpy $02
902
                   beq  .lab_78
903
                   lda #$60
904
                   jmp .error
905
.lab_78            lda #$43
906
                   sta $02
907
                   ldy #$24
908
                   cpy $02
909
                   bne .lab_79
910
                   lda #$61
911
                   jmp .error
912
.lab_79            lda #$42
913
                   sta io_base+io_gpio_0
914
                   nop          ; was cli
915
                   lda #$00
916
                   sta $05
917
                   lda #$01
918
                   sta $04
919
                   lda #$10
920
 
921
 
922
                   sta io_base+io_tim0_end
923
                   sta io_base+io_tim0_start
924
                   ldx #$00
925
                   inx
926
                   inx
927
                   inx
928
                   inx
929
                   inx
930
                   inx
931
                   inx
932
                   inx
933
                   inx
934
                   inx
935
                   inx
936
                   inx
937
                   inx
938
                   inx
939
                   inx
940
                   inx
941
                   cpx  #$10
942
                   beq .lab_80
943
                   lda #$62
944
                   jmp .error
945
.lab_80            lda $05
946
                   cmp #$00     ; was 1 if int serviced
947
                   beq  .lab_81
948
                   lda #$63
949
                   jmp .error
950
.lab_81            nop          ;   was sei to disable interrupt
951
                   lda #$00
952
                   sta $05
953
                   lda #$01
954
                   sta $04
955
                   lda #$10
956
                   sta io_base+io_tim0_end
957
                   sta io_base+io_tim0_start
958
                   ldx #$00
959
                   inx
960
                   inx
961
                   inx
962
                   inx
963
                   inx
964
                   inx
965
                   inx
966
                   inx
967
                   inx
968
                   inx
969
                   inx
970
                   inx
971
                   inx
972
                   inx
973
                   inx
974
                   inx
975
                   cpx #$10
976
                   beq .lab_82
977
                   lda #$62
978
                   jmp .error
979
.lab_82            lda $05
980
                   cmp #$00
981
                   beq  .lab_83
982
                   lda #$63
983
                   jmp .error
984
.lab_83            lda #$00
985
                   sta $04
986
                   sta io_base+io_tim0_end
987
                   lda #$43
988
                   sta io_base+io_gpio_0
989
                   lda #$00
990
                   sta $07
991
                   lda #$01
992
                   sta $06
993
                   lda #$10
994
                   sta io_base+io_tim0_end ; change to tim1 for nmi
995
                   sta io_base+io_tim0_start   ; change to tim1 for nmi
996
                   ldx #$00
997
                   inx
998
                   inx
999
                   inx
1000
                   inx
1001
                   inx
1002
                   inx
1003
                   inx
1004
                   inx
1005
                   inx
1006
                   inx
1007
                   inx
1008
                   inx
1009
                   inx
1010
                   inx
1011
                   inx
1012
                   inx
1013
                   cpx  #$10
1014
                   beq  .lab_84
1015
                   lda #$64
1016
                   jmp .error
1017
.lab_84            lda $07
1018
                   cmp #$00     ; change to 1 if nmi serviced
1019
                   beq  .lab_85
1020
                   lda #$65
1021
                   jmp .error
1022
.lab_85            lda #$00
1023
                   sta $06
1024
                   sta io_base+io_tim1_end
1025
                   lda #$44
1026
                   sta io_base+io_gpio_0
1027
                   jmp .lab_865
1028
.lab_86            jmp .lab_866
1029
.lab_865           sec
1030
                   bcs .lab_86
1031
                   nop
1032
                   nop
1033
                   nop
1034
                   lda #$66
1035
                   jmp .error
1036
.lab_866           lda #$45
1037
                   sta io_base+io_gpio_0
1038
                   sec
1039
                   lda #$34
1040
                   sbc #$75
1041
                   bcc .lab_87
1042
                   lda #$67
1043
                   jmp .error
1044
.lab_87            lda #$46
1045
                   sta io_base+io_gpio_0
1046
                   tsx
1047
                   stx $00
1048
                   lda #$42
1049
                   pha
1050
                   lda #$00
1051
                   tsx
1052
                   inx
1053
                   lda $0100,X
1054
                   cmp #$42
1055
                   beq  .lab_88
1056
                   lda #$68
1057
                   jmp .error
1058
.lab_88            lda #$69
1059
                   sta $0112
1060
                   lda #$00
1061
                   ldx #$11
1062
                   txs
1063
                   pla
1064
                   cmp #$69
1065
                   beq  .lab_89
1066
                   lda #$69
1067
                   jmp .error
1068
 
1069
        ;;  Break test
1070
        ;;
1071
.lab_89            ldx $00
1072
                   txs
1073
                   lda #$47
1074
                   sta io_base+io_gpio_0
1075
                   lda #$24     ; keep int disabled
1076
                   pha
1077
                   plp
1078
                   stx $08
1079
                   lda #$00
1080
                   sta $05
1081
                   lda #$01
1082
                   sta $04
1083
                   sta $06
1084
                   ldx #$59
1085
                   brk          ; was brk
1086
                   inx
1087
                   lda #$00
1088
                   sta $04
1089
                   lda $05
1090
                   cmp #$01     ; was 1 if brk taken
1091
                   beq  .lab_92
1092
                   lda #$70
1093
                   jmp .error
1094
 
1095
.lab_92            lda #$48
1096
                   sta io_base+io_gpio_0
1097
                   lda #$53
1098
                   sta $30
1099
                   lda #$00
1100
                   ldx #$40
1101
                   lda $F0,X
1102
                   cmp #$53
1103
                   beq  .lab_93
1104
                   lda #$73
1105
                   jmp .error
1106
.lab_93            lda #$49
1107
                   sta io_base+io_gpio_0
1108
                   clc
1109
                   lda #$FF
1110
                   adc #$01
1111
                   bcs .lab_94
1112
                   lda #$74
1113
                   jmp .error
1114
.lab_94            lda #$4A
1115
                   sta io_base+io_gpio_0
1116
                   sec
1117
                   lda #$7F
1118
                   sbc #$7E
1119
                   bvc  .lab_95
1120
                   lda #$75
1121
                   jmp .error
1122
.lab_95            lda #$4B
1123
                   sta io_base+io_gpio_0
1124
                   lda #$FF
1125
                   pha
1126
                   plp
1127
                   php
1128
                   pla
1129
                   cmp #$FF
1130
                   beq  .lab_96
1131
                   lda #$76
1132
                   jmp .error
1133
.lab_96            lda #$4C
1134
                   sta io_base+io_gpio_0
1135
                   lda #$40
1136
                   ldx #$00
1137
                   sta $0200,X
1138
                   inx
1139
                   lsr a
1140
                   sta $0200,X
1141
                   inx
1142
                   lsr a
1143
                   sta $0200,X
1144
                   inx
1145
                   lsr a
1146
                   sta $0200,X
1147
                   inx
1148
                   lsr a
1149
                   sta $0200,X
1150
                   inx
1151
                   lsr a
1152
                   sta $0200,X
1153
                   inx
1154
                   lsr a
1155
                   sta $0200,X
1156
                   ldx #$00
1157
                   asl $0200,X
1158
                   inx
1159
                   asl $0200,X
1160
                   inx
1161
                   asl $0200,X
1162
                   inx
1163
                   asl $0200,X
1164
                   inx
1165
                   asl $0200,X
1166
                   inx
1167
                   asl $0200,X
1168
                   inx
1169
                   asl $0200,X
1170
                   lda #$00
1171
                   clc
1172
                   cld
1173
                   adc $0200
1174
                   adc $0201
1175
                   adc $0202
1176
                   adc $0203
1177
                   adc $0204
1178
                   adc $0205
1179
                   adc $0206
1180
                   cmp #$FE
1181
                   beq  .lab_97
1182
                   lda #$77
1183
                   jmp  .error
1184
.lab_97            lda #$4D
1185
                   sta io_base+io_gpio_0
1186
                   ldx #$42
1187
                   ldy #$00
1188
                   stx $0200
1189
                   ldx #$9F
1190
                   stx $0201
1191
                   ldx $0200,Y
1192
                   cpx #$42
1193
                   beq  .lab_98
1194
                   lda #$48
1195
                   jmp .error
1196
.lab_98            ldx $0201,Y
1197
                   cpx #$9F
1198
                   beq  .lab_99
1199
                   lda #$78
1200
                   jmp .error
1201
 
1202
 
1203
 
1204
 
1205
 
1206
.lab_99            lda #$4e
1207
                   sta io_base+io_gpio_0
1208
                   ldy #$00
1209
                   ldx #$00
1210
                   lda #$00
1211
                   sta c_test
1212
                   sta n_test
1213
                   sta v_test
1214
                   sta z_test
1215
                   sta pointer
1216
                   lda #$ff
1217
                   sta pointer+1
1218
                   clc
1219
.lab_100           adc (pointer,x)
1220
                   bpl .lab_105
1221
                   bne .lab_103
1222
                   inc n_test
1223
                   inc z_test
1224
                   jmp .lab_110
1225
.lab_103           inc n_test
1226
                   jmp .lab_110
1227
.lab_105           bne .lab_110
1228
                   inc z_test
1229
.lab_110           bcc .lab_115
1230
                   inc c_test
1231
.lab_115           bvc .lab_120
1232
                   inc v_test
1233
.lab_120           inc pointer
1234
                   bne .lab_100
1235
 
1236
                   cmp #$07
1237
                   bne .error
1238
                   lda c_test
1239
                   cmp #$4e
1240
                   bne .error
1241
                   lda n_test
1242
                   cmp #$90
1243
                   bne .error
1244
                   lda v_test
1245
                   cmp #$32
1246
                   bne .error
1247
                   lda z_test
1248
                   cmp #$03
1249
                   bne .error
1250
 
1251
 
1252
 
1253
        ;;  pass end loop
1254
.good              sei
1255
                   lda #$FF
1256
                   sta io_base+io_gpio_0
1257
                   lda #$FF
1258
                   sta io_base+io_gpio_1
1259
                   jmp .end_lp
1260
 
1261
        ;; error  & end loop
1262
.error             sei
1263
                   sta io_base+io_gpio_1
1264
.end_lp            lda #$00
1265
                   pha
1266
                   plp
1267
                   jmp .end_lp
1268
 
1269
 
1270
        ;; Interrupt service routine
1271
.nmi_vec           pha
1272
                   txa
1273
                   pha
1274
                   tya
1275
                   pha
1276
                   tsx
1277
                   inx
1278
                   inx
1279
                   inx
1280
                   inx
1281
                   lda $0100,X
1282
                   sta $08
1283
                   lda $04
1284
                   cmp #$00
1285
                   bne .nmi_001
1286
                   lda #$E0
1287
                   jmp .error
1288
.nmi_001           sta io_base+io_tim0_end
1289
                   inc $05
1290
                   pla
1291
                   tay
1292
                   pla
1293
                   tax
1294
                   pla
1295
                   rti
1296
 
1297
        ;; Interrupt service routine
1298
 
1299
.irq_vec           pha
1300
                   txa
1301
                   pha
1302
                   tya
1303
                   pha
1304
                   lda $06
1305
                   cmp #$00
1306
                   bne .irq_001
1307
                   lda #$E0
1308
                   jmp .error
1309
.irq_001           sta io_base+io_tim1_end
1310
                   inc $07
1311
                   inc $05
1312
                   pla
1313
                   tay
1314
                   pla
1315
                   tax
1316
                   pla
1317
                   rti
1318
 
1319
 
1320
     * = $ce00  ; addition table
1321
 
1322
.table             db $01,$02,$03,$04,$05,$06,$07,$08 ;
1323
                   db $09,$a1,$b2,$c3,$d4,$e5,$f6,$07 ;
1324
                   db $80,$09,$01,$02,$03,$04,$05,$06 ;
1325
                   db $70,$8a,$b9,$c1,$d2,$e3,$f4,$05 ;
1326
                   db $60,$70,$80,$09,$01,$02,$03,$04 ;
1327
                   db $50,$6a,$7b,$8c,$d9,$e1,$02,$03 ;
1328
                   db $40,$50,$60,$70,$80,$09,$f1,$00 ;
1329
                   db $30,$4a,$5b,$6c,$7d,$8e,$09,$01 ;
1330
                   db $20,$30,$40,$50,$60,$70,$8f,$09 ;
1331
                   db $19,$2a,$3b,$4c,$5d,$6e,$70,$80 ;
1332
                   db $08,$19,$20,$30,$40,$50,$6f,$70 ;
1333
                   db $07,$a8,$19,$2c,$3d,$4e,$50,$60 ;
1334
                   db $06,$07,$b8,$19,$20,$30,$4f,$50 ;
1335
                   db $05,$a6,$07,$08,$19,$2e,$30,$40 ;
1336
                   db $04,$05,$b6,$c7,$08,$19,$2f,$30 ;
1337
                   db $03,$a4,$05,$06,$d7,$08,$19,$20 ;
1338
                   db $02,$03,$b4,$c5,$06,$e7,$f8,$19 ;
1339
                   db $00,$a2,$03,$04,$d5,$06,$07,$08 ;
1340
                   db $91,$00,$b2,$c3,$04,$e5,$f6,$07 ;
1341
                   db $80,$91,$00,$02,$d3,$04,$05,$06 ;
1342
                   db $70,$8a,$91,$c0,$02,$e3,$f4,$05 ;
1343
                   db $60,$70,$8b,$91,$d0,$02,$03,$04 ;
1344
                   db $50,$6a,$70,$8c,$91,$e0,$f2,$03 ;
1345
                   db $40,$50,$6b,$70,$80,$91,$00,$02 ;
1346
                   db $30,$4a,$50,$6c,$7d,$8e,$91,$00 ;
1347
                   db $20,$30,$4b,$50,$60,$70,$8f,$91 ;
1348
                   db $00,$2a,$30,$4c,$5d,$6e,$70,$80 ;
1349
                   db $10,$00,$2b,$30,$40,$50,$6f,$70 ;
1350
                   db $00,$1a,$00,$2c,$3d,$4e,$50,$60 ;
1351
                   db $00,$00,$1b,$00,$20,$30,$4f,$50 ;
1352
                   db $00,$0a,$00,$1c,$0d,$2e,$30,$40 ;
1353
                   db $00,$00,$0b,$00,$10,$00,$2f,$00 ;
1354
 
1355
 
1356
     * = $cf00  ; addition table
1357
 
1358
.table2            db $01,$02,$03,$04,$05,$06,$07,$08 ;
1359
                   db $09,$a1,$b2,$c3,$d4,$e5,$f6,$07 ;
1360
                   db $80,$09,$01,$02,$03,$04,$05,$06 ;
1361
                   db $70,$8a,$b9,$c1,$d2,$e3,$f4,$05 ;
1362
                   db $60,$70,$80,$09,$01,$02,$03,$04 ;
1363
                   db $50,$6a,$7b,$8c,$d9,$e1,$02,$03 ;
1364
                   db $40,$50,$60,$70,$80,$09,$f1,$00 ;
1365
                   db $30,$4a,$5b,$6c,$7d,$8e,$09,$01 ;
1366
                   db $20,$30,$40,$50,$60,$70,$8f,$09 ;
1367
                   db $19,$2a,$3b,$4c,$5d,$6e,$70,$80 ;
1368
                   db $08,$19,$20,$30,$40,$50,$6f,$70 ;
1369
                   db $07,$a8,$19,$2c,$3d,$4e,$50,$60 ;
1370
                   db $06,$07,$b8,$19,$20,$30,$4f,$50 ;
1371
                   db $05,$a6,$07,$08,$19,$2e,$30,$40 ;
1372
                   db $04,$05,$b6,$c7,$08,$19,$2f,$30 ;
1373
                   db $03,$a4,$05,$06,$d7,$08,$19,$20 ;
1374
                   db $02,$03,$b4,$c5,$06,$e7,$f8,$19 ;
1375
                   db $00,$a2,$03,$04,$d5,$06,$07,$08 ;
1376
                   db $91,$00,$b2,$c3,$04,$e5,$f6,$07 ;
1377
                   db $80,$91,$00,$02,$d3,$04,$05,$06 ;
1378
                   db $70,$8a,$91,$c0,$02,$e3,$f4,$05 ;
1379
                   db $60,$70,$8b,$91,$d0,$02,$03,$04 ;
1380
                   db $50,$6a,$70,$8c,$91,$e0,$f2,$03 ;
1381
                   db $40,$50,$6b,$70,$80,$91,$00,$02 ;
1382
                   db $30,$4a,$50,$6c,$7d,$8e,$91,$00 ;
1383
                   db $20,$30,$4b,$50,$60,$70,$8f,$91 ;
1384
                   db $00,$2a,$30,$4c,$5d,$6e,$70,$80 ;
1385
                   db $10,$00,$2b,$30,$40,$50,$6f,$70 ;
1386
                   db $00,$1a,$00,$2c,$3d,$4e,$50,$60 ;
1387
                   db $00,$00,$1b,$00,$20,$30,$4f,$50 ;
1388
                   db $00,$0a,$00,$1c,$0d,$2e,$30,$40 ;
1389
                   db $00,$00;
1390
 
1391
 
1392
 
1393
 
1394
 
1395
     * = $cffa  ; vectors
1396
 
1397
 
1398
 
1399
     dw $c000          ;
1400
     dw $c006          ;
1401
     dw $c003          ;
1402
 
1403
 code
1404
 
1405
 
1406
 
1407
 
1408
 
1409
 

powered by: WebSVN 2.1.0

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