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

Subversion Repositories ag_6502

[/] [ag_6502/] [trunk/] [testsuite/] [AllSuiteA.asm] - Blame information for rev 9

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 9 olegodints
; Source project: http://code.google.com/p/hmc-6502/
2
;
3
        .ORG $4000
4
start:
5
; EXPECTED FINAL RESULTS: $0210 = FF
6
; (any other number will be the
7
;  test that failed)
8
 
9
; initialize:
10
        LDA #$00
11
        STA $0210
12
        ; store each test's expected
13
        LDA #$55
14
        STA $0200
15
        LDA #$AA
16
        STA $0201
17
        LDA #$FF
18
        STA $0202
19
        LDA #$6E
20
        STA $0203
21
        LDA #$42
22
        STA $0204
23
        LDA #$33
24
        STA $0205
25
        LDA #$9D
26
        STA $0206
27
        LDA #$7F
28
        STA $0207
29
        LDA #$A5
30
        STA $0208
31
        LDA #$1F
32
        STA $0209
33
        LDA #$CE
34
        STA $020A
35
        LDA #$29
36
        STA $020B
37
        LDA #$42
38
        STA $020C
39
        LDA #$6C
40
        STA $020D
41
        LDA #$42
42
        STA $020E
43
 
44
 
45
; expected result: $022A = 0x55
46
test00:
47
        LDA #85
48
        LDX #42
49
        LDY #115
50
        STA $81
51
        LDA #$01
52
        STA $61
53
        LDA #$7E
54
        LDA $81
55
        STA $0910
56
        LDA #$7E
57
        LDA $0910
58
        STA $56,X
59
        LDA #$7E
60
        LDA $56,X
61
        STY $60
62
        STA ($60),Y
63
        LDA #$7E
64
        LDA ($60),Y
65
        STA $07ff,X
66
        LDA #$7E
67
        LDA $07ff,X
68
        STA $07ff,Y
69
        LDA #$7E
70
        LDA $07ff,Y
71
        STA ($36,X)
72
        LDA #$7E
73
        LDA ($36,X)
74
        STX $50
75
        LDX $60
76
        LDY $50
77
        STX $0913
78
        LDX #$22
79
        LDX $0913
80
        STY $0914
81
        LDY #$99
82
        LDY $0914
83
        STY $2D,X
84
        STX $77,Y
85
        LDY #$99
86
        LDY $2D,X
87
        LDX #$22
88
        LDX $77,Y
89
        LDY #$99
90
        LDY $08A0,X
91
        LDX #$22
92
        LDX $08A1,Y
93
        STA $0200,X
94
 
95
; CHECK test00:
96
        LDA $022A
97
        CMP $0200
98
        BEQ test00pass
99
        JMP theend
100
test00pass:
101
        LDA #$FE
102
        STA $0210
103
 
104
 
105
; expected result: $A9 = 0xAA
106
test01:
107
        ; imm
108
        LDA #85
109
        AND #83
110
        ORA #56
111
        EOR #17
112
 
113
        ; zpg
114
        STA $99
115
        LDA #185
116
        STA $10
117
        LDA #231
118
        STA $11
119
        LDA #57
120
        STA $12
121
        LDA $99
122
        AND $10
123
        ORA $11
124
        EOR $12
125
 
126
        ; zpx
127
        LDX #16
128
        STA $99
129
        LDA #188
130
        STA $20
131
        LDA #49
132
        STA $21
133
        LDA #23
134
        STA $22
135
        LDA $99
136
        AND $10,X
137
        ORA $11,X
138
        EOR $12,X
139
 
140
        ; abs
141
        STA $99
142
        LDA #111
143
        STA $0110
144
        LDA #60
145
        STA $0111
146
        LDA #39
147
        STA $0112
148
        LDA $99
149
        AND $0110
150
        ORA $0111
151
        EOR $0112
152
 
153
        ; abx
154
        STA $99
155
        LDA #138
156
        STA $0120
157
        LDA #71
158
        STA $0121
159
        LDA #143
160
        STA $0122
161
        LDA $99
162
        AND $0110,X
163
        ORA $0111,X
164
        EOR $0112,X
165
 
166
        ; aby
167
        LDY #32
168
        STA $99
169
        LDA #115
170
        STA $0130
171
        LDA #42
172
        STA $0131
173
        LDA #241
174
        STA $0132
175
        LDA $99
176
        AND $0110,Y
177
        ORA $0111,Y
178
        EOR $0112,Y
179
 
180
        ; idx
181
        STA $99
182
        LDA #112
183
        STA $30
184
        LDA #$01
185
        STA $31
186
        LDA #113
187
        STA $32
188
        LDA #$01
189
        STA $33
190
        LDA #114
191
        STA $34
192
        LDA #$01
193
        STA $35
194
        LDA #197
195
        STA $0170
196
        LDA #124
197
        STA $0171
198
        LDA #161
199
        STA $0172
200
        LDA $99
201
        AND ($20,X)
202
        ORA ($22,X)
203
        EOR ($24,X)
204
 
205
        ; idy
206
        STA $99
207
        LDA #96
208
        STA $40
209
        LDA #$01
210
        STA $41
211
        LDA #97
212
        STA $42
213
        LDA #$01
214
        STA $43
215
        LDA #98
216
        STA $44
217
        LDA #$01
218
        STA $45
219
        LDA #55
220
        STA $0250
221
        LDA #35
222
        STA $0251
223
        LDA #157
224
        STA $0252
225
        LDA $99
226
        LDY #$F0
227
        AND ($40),Y
228
        ORA ($42),Y
229
        EOR ($44),Y
230
 
231
        STA $A9
232
 
233
; CHECK test01
234
        LDA $A9
235
        CMP $0201
236
        BEQ test02
237
        LDA #$01
238
        STA $0210
239
        JMP theend
240
 
241
 
242
; expected result: $71 = 0xFF
243
test02:
244
        LDA #$FF
245
        LDX #$00
246
 
247
        STA $90
248
        INC $90
249
        INC $90
250
        LDA $90
251
        LDX $90
252
 
253
        STA $90,X
254
        INC $90,X
255
        LDA $90,X
256
        LDX $91
257
 
258
        STA $0190,X
259
        INC $0192
260
        LDA $0190,X
261
        LDX $0192
262
 
263
        STA $0190,X
264
        INC $0190,X
265
        LDA $0190,X
266
        LDX $0193
267
 
268
        STA $0170,X
269
        DEC $0170,X
270
        LDA $0170,X
271
        LDX $0174
272
 
273
        STA $0170,X
274
        DEC $0173
275
        LDA $0170,X
276
        LDX $0173
277
 
278
        STA $70,X
279
        DEC $70,X
280
        LDA $70,X
281
        LDX $72
282
 
283
        STA $70,X
284
        DEC $71
285
        DEC $71
286
 
287
; CHECK test02
288
        LDA $71
289
        CMP $0202
290
        BEQ test03
291
        LDA #$02
292
        STA $0210
293
        JMP theend
294
 
295
 
296
; expected result: $01DD = 0x6E
297
test03:
298
        LDA #$4B
299
        LSR A
300
        ASL A
301
 
302
        STA $50
303
        ASL $50
304
        ASL $50
305
        LSR $50
306
        LDA $50
307
 
308
        LDX $50
309
        ORA #$C9
310
        STA $60
311
        ASL $4C,X
312
        LSR $4C,X
313
        LSR $4C,X
314
        LDA $4C,X
315
 
316
        LDX $60
317
        ORA #$41
318
        STA $012E
319
        LSR $0100,X
320
        LSR $0100,X
321
        ASL $0100,X
322
        LDA $0100,X
323
 
324
        LDX $012E
325
        ORA #$81
326
        STA $0100,X
327
        LSR $0136
328
        LSR $0136
329
        ASL $0136
330
        LDA $0100,X
331
 
332
        ; rol & ror
333
 
334
        ROL A
335
        ROL A
336
        ROR A
337
        STA $70
338
 
339
        LDX $70
340
        ORA #$03
341
        STA $0C,X
342
        ROL $C0
343
        ROR $C0
344
        ROR $C0
345
        LDA $0C,X
346
 
347
        LDX $C0
348
        STA $D0
349
        ROL $75,X
350
        ROL $75,X
351
        ROR $75,X
352
        LDA $D0
353
 
354
        LDX $D0
355
        STA $0100,X
356
        ROL $01B7
357
        ROL $01B7
358
        ROL $01B7
359
        ROR $01B7
360
        LDA $0100,X
361
 
362
        LDX $01B7
363
        STA $01DD
364
        ROL $0100,X
365
        ROR $0100,X
366
        ROR $0100,X
367
 
368
; CHECK test03
369
        LDA $01DD
370
        CMP $0203
371
        BEQ test04
372
        LDA #$03
373
        STA $0210
374
        JMP theend
375
 
376
 
377
; expected result: $40 = 0x42
378
test04:
379
        LDA #$E8 ;originally:#$7C
380
        STA $20
381
        LDA #$42 ;originally:#$02
382
        STA $21
383
        LDA #$00
384
        ORA #$03
385
        JMP jump1
386
        ORA #$FF ; not done
387
jump1:
388
        ORA #$30
389
        JSR subr
390
        ORA #$42
391
        JMP ($0020)
392
        ORA #$FF ; not done
393
subr:
394
        STA $30
395
        LDX $30
396
        LDA #$00
397
        RTS
398
final:
399
        STA $0D,X
400
 
401
; CHECK test04
402
        LDA $40
403
        CMP $0204
404
        BEQ test05
405
        LDA #$04
406
        STA $0210
407
        JMP theend
408
 
409
 
410
; expected result: $40 = 0x33
411
test05:
412
        LDA #$35
413
 
414
        TAX
415
        DEX
416
        DEX
417
        INX
418
        TXA
419
 
420
        TAY
421
        DEY
422
        DEY
423
        INY
424
        TYA
425
 
426
        TAX
427
        LDA #$20
428
        TXS
429
        LDX #$10
430
        TSX
431
        TXA
432
 
433
        STA $40
434
 
435
; CHECK test05
436
        LDA $40
437
        CMP $0205
438
        BEQ test06
439
        LDA #$05
440
        STA $0210
441
        JMP theend
442
 
443
 
444
; expected result: $30 = 9D
445
test06:
446
 
447
; RESET TO CARRY FLAG = 0
448
        ROL A
449
 
450
        LDA #$6A
451
        STA $50
452
        LDA #$6B
453
        STA $51
454
        LDA #$A1
455
        STA $60
456
        LDA #$A2
457
        STA $61
458
 
459
        LDA #$FF
460
        ADC #$FF
461
        ADC #$FF
462
        SBC #$AE
463
 
464
        STA $40
465
        LDX $40
466
        ADC $00,X
467
        SBC $01,X
468
 
469
        ADC $60
470
        SBC $61
471
 
472
        STA $0120
473
        LDA #$4D
474
        STA $0121
475
        LDA #$23
476
        ADC $0120
477
        SBC $0121
478
 
479
        STA $F0
480
        LDX $F0
481
        LDA #$64
482
        STA $0124
483
        LDA #$62
484
        STA $0125
485
        LDA #$26
486
        ADC $0100,X
487
        SBC $0101,X
488
 
489
        STA $F1
490
        LDY $F1
491
        LDA #$E5
492
        STA $0128
493
        LDA #$E9
494
        STA $0129
495
        LDA #$34
496
        ADC $0100,Y
497
        SBC $0101,Y
498
 
499
        STA $F2
500
        LDX $F2
501
        LDA #$20
502
        STA $70
503
        LDA #$01
504
        STA $71
505
        LDA #$24
506
        STA $72
507
        LDA #$01
508
        STA $73
509
        ADC ($41,X)
510
        SBC ($3F,X)
511
 
512
        STA $F3
513
        LDY $F3
514
        LDA #$DA
515
        STA $80
516
        LDA #$00
517
        STA $81
518
        LDA #$DC
519
        STA $82
520
        LDA #$00
521
        STA $83
522
        LDA #$AA
523
        ADC ($80),Y
524
        SBC ($82),Y
525
        STA $30
526
 
527
; CHECK test06
528
        LDA $30
529
        CMP $0206
530
        BEQ test07
531
        LDA #$06
532
        STA $0210
533
        JMP theend
534
 
535
 
536
; expected result: $15 = 0x7F
537
test07:
538
        ; prepare memory
539
        LDA #$00
540
        STA $34
541
        LDA #$FF
542
        STA $0130
543
        LDA #$99
544
        STA $019D
545
        LDA #$DB
546
        STA $0199
547
        LDA #$2F
548
        STA $32
549
        LDA #$32
550
        STA $4F
551
        LDA #$30
552
        STA $33
553
        LDA #$70
554
        STA $AF
555
        LDA #$18
556
        STA $30
557
 
558
        ; imm
559
        CMP #$18
560
        BEQ beq1 ; taken
561
        AND #$00 ; not done
562
beq1:
563
        ; zpg
564
        ORA #$01
565
        CMP $30
566
        BNE bne1 ; taken
567
        AND #$00 ; not done
568
bne1:
569
        ; abs
570
        LDX #$00
571
        CMP $0130
572
        BEQ beq2 ; not taken
573
        STA $40
574
        LDX $40
575
beq2:
576
        ; zpx
577
        CMP $27,X
578
        BNE bne2 ; not taken
579
        ORA #$84
580
        STA $41
581
        LDX $41
582
bne2:
583
        ; abx
584
        AND #$DB
585
        CMP $0100,X
586
        BEQ beq3 ; taken
587
        AND #$00 ; not done
588
beq3:
589
        ; aby
590
        STA $42
591
        LDY $42
592
        AND #$00
593
        CMP $0100,Y
594
        BNE bne3 ; taken
595
        ORA #$0F ; not done
596
bne3:
597
        ; idx
598
        STA $43
599
        LDX $43
600
        ORA #$24
601
        CMP ($40,X)
602
        BEQ beq4 ; not taken
603
        ORA #$7F
604
beq4:
605
        ; idy
606
        STA $44
607
        LDY $44
608
        EOR #$0F
609
        CMP ($33),Y
610
        BNE bne4 ; not taken
611
        LDA $44
612
        STA $15
613
bne4:
614
 
615
; CHECK test07
616
        LDA $15
617
        CMP $0207
618
        BEQ test08
619
        LDA #$07
620
        STA $0210
621
        JMP theend
622
 
623
 
624
; expected result: $42 = 0xA5
625
test08:
626
        ; prepare memory
627
        LDA #$A5
628
        STA $20
629
        STA $0120
630
        LDA #$5A
631
        STA $21
632
 
633
        ; cpx imm...
634
        LDX #$A5
635
        CPX #$A5
636
        BEQ b1 ; taken
637
        LDX #$01 ; not done
638
b1:
639
        ; cpx zpg...
640
        CPX $20
641
        BEQ b2 ; taken
642
        LDX #$02 ; not done
643
b2:
644
        ; cpx abs...
645
        CPX $0120
646
        BEQ b3 ; taken
647
        LDX #$03 ; not done
648
b3:
649
        ; cpy imm...
650
        STX $30
651
        LDY $30
652
        CPY #$A5
653
        BEQ b4 ; taken
654
        LDY #$04 ; not done
655
b4:
656
        ; cpy zpg...
657
        CPY $20
658
        BEQ b5 ; taken
659
        LDY #$05 ; not done
660
b5:
661
        ; cpy abs...
662
        CPY $0120
663
        BEQ b6 ; taken
664
        LDY #$06 ; not done
665
b6:
666
        ; bit zpg...
667
        STY $31
668
        LDA $31
669
        BIT $20
670
        BNE b7 ; taken
671
        LDA #$07 ; not done
672
b7:
673
        ; bit abs...
674
        BIT $0120
675
        BNE b8 ; taken
676
        LDA #$08 ; not done
677
b8:
678
        BIT $21
679
        BNE b9 ; not taken
680
        STA $42
681
b9:
682
 
683
; CHECK test08
684
        LDA $42
685
        CMP $0208
686
        BEQ test09
687
        LDA #$08
688
        STA $0210
689
        JMP theend
690
 
691
 
692
; expected result: $80 = 0x1F
693
test09:
694
        ; prepare memory
695
        LDA #$54
696
        STA $32
697
        LDA #$B3
698
        STA $A1
699
        LDA #$87
700
        STA $43
701
 
702
        ; BPL
703
        LDX #$A1
704
        BPL bpl1 ; not taken
705
        LDX #$32
706
bpl1:
707
        LDY $00,X
708
        BPL bpl2 ; taken
709
        LDA #$05 ; not done
710
        LDX $A1 ; not done
711
bpl2:
712
 
713
        ; BMI
714
        BMI bmi1 ; not taken
715
        SBC #$03
716
bmi1:
717
        BMI bmi2 ; taken
718
        LDA #$41 ; not done
719
bmi2:
720
 
721
        ; BVC
722
        EOR #$30
723
        STA $32
724
        ADC $00,X
725
        BVC bvc1 ; not taken
726
        LDA #$03
727
bvc1:
728
        STA $54
729
        LDX $00,Y
730
        ADC $51,X
731
        BVC bvc2 ; taken
732
        LDA #$E5 ; not done
733
bvc2:
734
 
735
        ; BVS
736
        ADC $40,X
737
        BVS bvs1 ; not taken
738
        STA $0001,Y
739
        ADC $55
740
bvs1:
741
        BVS bvs2 ; taken
742
        LDA #$00
743
bvs2:
744
 
745
        ; BCC
746
        ADC #$F0
747
        BCC bcc1 ; not taken
748
        STA $60
749
        ADC $43
750
bcc1:
751
        BCC bcc2 ; taken
752
        LDA #$FF
753
bcc2:
754
 
755
        ; BCS
756
        ADC $54
757
        BCS bcs1 ; not taken
758
        ADC #$87
759
        LDX $60
760
bcs1:
761
        BCS bcs2 ; taken
762
        LDA #$00 ; not done
763
bcs2:
764
        STA $73,X
765
 
766
; CHECK test09
767
        LDA $80
768
        CMP $0209
769
        BEQ test10
770
        LDA #$09
771
        STA $0210
772
        JMP theend
773
 
774
 
775
; expected result: $30 = 0xCE
776
test10:
777
 
778
; RESET TO CARRY = 0 & OVERFLOW = 0
779
        ADC #$00
780
 
781
        LDA #$99
782
        ADC #$87
783
        CLC
784
        NOP
785
        BCC t10bcc1 ; taken
786
        ADC #$60 ; not done
787
        ADC #$93 ; not done
788
t10bcc1:
789
        SEC
790
        NOP
791
        BCC t10bcc2 ; not taken
792
        CLV
793
t10bcc2:
794
        BVC t10bvc1 ; taken
795
        LDA #$00 ; not done
796
t10bvc1:
797
        ADC #$AD
798
        NOP
799
        STA $30
800
 
801
; CHECK test10
802
        LDA $30
803
        CMP $020A
804
        BEQ test11
805
        LDA #$0A
806
        STA $0210
807
        JMP theend
808
 
809
 
810
; expected result: $30 = 0x29
811
test11:
812
 
813
; RESET TO CARRY = 0 & ZERO = 0
814
        ADC #$01
815
 
816
        LDA #$27
817
        ADC #$01
818
        SEC
819
        PHP
820
        CLC
821
        PLP
822
        ADC #$00
823
        PHA
824
        LDA #$00
825
        PLA
826
        STA $30
827
 
828
; CHECK test11
829
        LDA $30
830
        CMP $020B
831
        BEQ test12
832
        LDA #$0B
833
        STA $0210
834
        JMP theend
835
 
836
 
837
; expected result: $33 = 0x42
838
test12:
839
        CLC
840
        LDA #$42
841
        BCC runstuff
842
        STA $33
843
        BCS t12end
844
runstuff:
845
        LDA #$45
846
        PHA
847
        LDA #$61
848
        PHA
849
        SEC
850
        PHP
851
        CLC
852
        RTI
853
t12end:
854
 
855
; CHECK test12
856
        LDA $33
857
        CMP $020C
858
        BEQ test13
859
        LDA #$0C
860
        STA $0210
861
        JMP theend
862
 
863
 
864
; expected result: $21 = 0x6C (simulator)
865
;                  $21 = 0x0C (ours)
866
test13:
867
 
868
; RESET TO CARRY = 0 & ZERO = 0
869
        ADC #$01
870
 
871
        SEI
872
        SED
873
        PHP
874
        PLA
875
        STA $20
876
        CLI
877
        CLD
878
        PHP
879
        PLA
880
        ADC $20
881
        STA $21
882
 
883
; CHECK test13
884
        LDA $21
885
        CMP $020D
886
        BEQ test14
887
        LDA #$0D
888
        STA $0210
889
        JMP theend
890
 
891
 
892
; expect result: $60 = 0x42
893
test14:
894
        ; !!! NOTICE: BRK doesn't work in this
895
        ; simulator, so commented instructions
896
        ; are what should be executed...
897
        ;JMP pass_intrp
898
        LDA #$41
899
        STA $60
900
        ;RTI
901
        ;pass_intrp:
902
        ;LDA #$FF
903
        ;STA $60
904
        ;BRK (two bytes)
905
        INC $60
906
 
907
; CHECK test14
908
        LDA $60
909
        CMP $020E
910
        BEQ suiteafinal
911
        LDA #$0E
912
        STA $0210
913
        JMP theend
914
 
915
suiteafinal:
916
        ; IF $0210 == 0xFE, INCREMENT
917
        ; (checking that it didn't
918
        ;  happen to wander off and
919
        ;  not run our instructions
920
        ;  to say which tests failed...)
921
        LDA #$FE
922
        CMP $0210
923
        BNE theend
924
        INC $0210
925
theend:
926
        JMP theend

powered by: WebSVN 2.1.0

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