-
Notifications
You must be signed in to change notification settings - Fork 15
/
testall.lst
960 lines (959 loc) · 32.3 KB
/
testall.lst
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
ca65 V2.13.2 - (C) Copyright 1998-2005 Ullrich von Bassewitz
Main file : testall.asm
Current file: testall.asm
000000r 1 ; Testing 6502 opcodes.
000000r 1 ; Copied and adapted from AllSuiteA.asm from project hmc-6502:
000000r 1 ; https://code.google.com/archive/p/hmc-6502/
000000r 1 ; EXPECTED FINAL RESULTS: $0210 = FF
000000r 1 ; (any other number will be the test that failed)
000000r 1 ; To build with cl65:
000000r 1 ; cl65 -C testall_cl65.cfg -l --start-addr 16384 -t none -o tall.bin testall.asm
000000r 1 ; then load to simulator from debug console with 'L B TALL.BIN'
000000r 1 ; and execute with 'X 4000'.
000000r 1
000000r 1 .segment "CODE1"
000000r 1
000000r 1 .segment "CODE2"
000000r 1
000000r 1 .ORG $4000
004000 1
004000 1 start:
004000 1 ; initialize:
004000 1 A9 00 LDA #$00
004002 1 8D 10 02 STA $0210
004005 1 ; store each test's expected
004005 1 A9 55 LDA #$55
004007 1 8D 00 02 STA $0200
00400A 1 A9 AA LDA #$AA
00400C 1 8D 01 02 STA $0201
00400F 1 A9 FF LDA #$FF
004011 1 8D 02 02 STA $0202
004014 1 A9 6E LDA #$6E
004016 1 8D 03 02 STA $0203
004019 1 A9 42 LDA #$42
00401B 1 8D 04 02 STA $0204
00401E 1 A9 33 LDA #$33
004020 1 8D 05 02 STA $0205
004023 1 A9 9D LDA #$9D
004025 1 8D 06 02 STA $0206
004028 1 A9 7F LDA #$7F
00402A 1 8D 07 02 STA $0207
00402D 1 A9 A5 LDA #$A5
00402F 1 8D 08 02 STA $0208
004032 1 A9 1F LDA #$1F
004034 1 8D 09 02 STA $0209
004037 1 A9 CE LDA #$CE
004039 1 8D 0A 02 STA $020A
00403C 1 A9 29 LDA #$29
00403E 1 8D 0B 02 STA $020B
004041 1 A9 42 LDA #$42
004043 1 8D 0C 02 STA $020C
004046 1 A9 6C LDA #$6C
004048 1 8D 0D 02 STA $020D
00404B 1 A9 42 LDA #$42
00404D 1 8D 0E 02 STA $020E
004050 1
004050 1
004050 1 ; expected result: $022A = 0x55
004050 1 test00:
004050 1 A9 55 LDA #85
004052 1 A2 2A LDX #42
004054 1 A0 73 LDY #115
004056 1 85 81 STA $81
004058 1 A9 01 LDA #$01
00405A 1 85 61 STA $61
00405C 1 A9 7E LDA #$7E
00405E 1 A5 81 LDA $81
004060 1 8D 10 09 STA $0910
004063 1 A9 7E LDA #$7E
004065 1 AD 10 09 LDA $0910
004068 1 95 56 STA $56,X
00406A 1 A9 7E LDA #$7E
00406C 1 B5 56 LDA $56,X
00406E 1 84 60 STY $60
004070 1 91 60 STA ($60),Y
004072 1 A9 7E LDA #$7E
004074 1 B1 60 LDA ($60),Y
004076 1 9D FF 07 STA $07ff,X
004079 1 A9 7E LDA #$7E
00407B 1 BD FF 07 LDA $07ff,X
00407E 1 99 FF 07 STA $07ff,Y
004081 1 A9 7E LDA #$7E
004083 1 B9 FF 07 LDA $07ff,Y
004086 1 81 36 STA ($36,X)
004088 1 A9 7E LDA #$7E
00408A 1 A1 36 LDA ($36,X)
00408C 1 86 50 STX $50
00408E 1 A6 60 LDX $60
004090 1 A4 50 LDY $50
004092 1 8E 13 09 STX $0913
004095 1 A2 22 LDX #$22
004097 1 AE 13 09 LDX $0913
00409A 1 8C 14 09 STY $0914
00409D 1 A0 99 LDY #$99
00409F 1 AC 14 09 LDY $0914
0040A2 1 94 2D STY $2D,X
0040A4 1 96 77 STX $77,Y
0040A6 1 A0 99 LDY #$99
0040A8 1 B4 2D LDY $2D,X
0040AA 1 A2 22 LDX #$22
0040AC 1 B6 77 LDX $77,Y
0040AE 1 A0 99 LDY #$99
0040B0 1 BC A0 08 LDY $08A0,X
0040B3 1 A2 22 LDX #$22
0040B5 1 BE A1 08 LDX $08A1,Y
0040B8 1 9D 00 02 STA $0200,X
0040BB 1
0040BB 1 ; CHECK test00:
0040BB 1 AD 2A 02 LDA $022A
0040BE 1 CD 00 02 CMP $0200
0040C1 1 F0 03 BEQ test00pass
0040C3 1 4C C0 45 JMP theend
0040C6 1 test00pass:
0040C6 1 A9 FE LDA #$FE
0040C8 1 8D 10 02 STA $0210
0040CB 1
0040CB 1
0040CB 1 ; expected result: $A9 = 0xAA
0040CB 1 test01:
0040CB 1 ; imm
0040CB 1 A9 55 LDA #85
0040CD 1 29 53 AND #83
0040CF 1 09 38 ORA #56
0040D1 1 49 11 EOR #17
0040D3 1
0040D3 1 ; zpg
0040D3 1 85 99 STA $99
0040D5 1 A9 B9 LDA #185
0040D7 1 85 10 STA $10
0040D9 1 A9 E7 LDA #231
0040DB 1 85 11 STA $11
0040DD 1 A9 39 LDA #57
0040DF 1 85 12 STA $12
0040E1 1 A5 99 LDA $99
0040E3 1 25 10 AND $10
0040E5 1 05 11 ORA $11
0040E7 1 45 12 EOR $12
0040E9 1
0040E9 1 ; zpx
0040E9 1 A2 10 LDX #16
0040EB 1 85 99 STA $99
0040ED 1 A9 BC LDA #188
0040EF 1 85 20 STA $20
0040F1 1 A9 31 LDA #49
0040F3 1 85 21 STA $21
0040F5 1 A9 17 LDA #23
0040F7 1 85 22 STA $22
0040F9 1 A5 99 LDA $99
0040FB 1 35 10 AND $10,X
0040FD 1 15 11 ORA $11,X
0040FF 1 55 12 EOR $12,X
004101 1
004101 1 ; abs
004101 1 85 99 STA $99
004103 1 A9 6F LDA #111
004105 1 8D 10 01 STA $0110
004108 1 A9 3C LDA #60
00410A 1 8D 11 01 STA $0111
00410D 1 A9 27 LDA #39
00410F 1 8D 12 01 STA $0112
004112 1 A5 99 LDA $99
004114 1 2D 10 01 AND $0110
004117 1 0D 11 01 ORA $0111
00411A 1 4D 12 01 EOR $0112
00411D 1
00411D 1 ; abx
00411D 1 85 99 STA $99
00411F 1 A9 8A LDA #138
004121 1 8D 20 01 STA $0120
004124 1 A9 47 LDA #71
004126 1 8D 21 01 STA $0121
004129 1 A9 8F LDA #143
00412B 1 8D 22 01 STA $0122
00412E 1 A5 99 LDA $99
004130 1 3D 10 01 AND $0110,X
004133 1 1D 11 01 ORA $0111,X
004136 1 5D 12 01 EOR $0112,X
004139 1
004139 1 ; aby
004139 1 A0 20 LDY #32
00413B 1 85 99 STA $99
00413D 1 A9 73 LDA #115
00413F 1 8D 30 01 STA $0130
004142 1 A9 2A LDA #42
004144 1 8D 31 01 STA $0131
004147 1 A9 F1 LDA #241
004149 1 8D 32 01 STA $0132
00414C 1 A5 99 LDA $99
00414E 1 39 10 01 AND $0110,Y
004151 1 19 11 01 ORA $0111,Y
004154 1 59 12 01 EOR $0112,Y
004157 1
004157 1 ; idx
004157 1 85 99 STA $99
004159 1 A9 70 LDA #112
00415B 1 85 30 STA $30
00415D 1 A9 01 LDA #$01
00415F 1 85 31 STA $31
004161 1 A9 71 LDA #113
004163 1 85 32 STA $32
004165 1 A9 01 LDA #$01
004167 1 85 33 STA $33
004169 1 A9 72 LDA #114
00416B 1 85 34 STA $34
00416D 1 A9 01 LDA #$01
00416F 1 85 35 STA $35
004171 1 A9 C5 LDA #197
004173 1 8D 70 01 STA $0170
004176 1 A9 7C LDA #124
004178 1 8D 71 01 STA $0171
00417B 1 A9 A1 LDA #161
00417D 1 8D 72 01 STA $0172
004180 1 A5 99 LDA $99
004182 1 21 20 AND ($20,X)
004184 1 01 22 ORA ($22,X)
004186 1 41 24 EOR ($24,X)
004188 1
004188 1 ; idy
004188 1 85 99 STA $99
00418A 1 A9 60 LDA #96
00418C 1 85 40 STA $40
00418E 1 A9 01 LDA #$01
004190 1 85 41 STA $41
004192 1 A9 61 LDA #97
004194 1 85 42 STA $42
004196 1 A9 01 LDA #$01
004198 1 85 43 STA $43
00419A 1 A9 62 LDA #98
00419C 1 85 44 STA $44
00419E 1 A9 01 LDA #$01
0041A0 1 85 45 STA $45
0041A2 1 A9 37 LDA #55
0041A4 1 8D 50 02 STA $0250
0041A7 1 A9 23 LDA #35
0041A9 1 8D 51 02 STA $0251
0041AC 1 A9 9D LDA #157
0041AE 1 8D 52 02 STA $0252
0041B1 1 A5 99 LDA $99
0041B3 1 A0 F0 LDY #$F0
0041B5 1 31 40 AND ($40),Y
0041B7 1 11 42 ORA ($42),Y
0041B9 1 51 44 EOR ($44),Y
0041BB 1
0041BB 1 85 A9 STA $A9
0041BD 1
0041BD 1 ; CHECK test01
0041BD 1 A5 A9 LDA $A9
0041BF 1 CD 01 02 CMP $0201
0041C2 1 F0 08 BEQ test02
0041C4 1 A9 01 LDA #$01
0041C6 1 8D 10 02 STA $0210
0041C9 1 4C C0 45 JMP theend
0041CC 1
0041CC 1
0041CC 1 ; expected result: $71 = 0xFF
0041CC 1 test02:
0041CC 1 A9 FF LDA #$FF
0041CE 1 A2 00 LDX #$00
0041D0 1
0041D0 1 85 90 STA $90
0041D2 1 E6 90 INC $90
0041D4 1 E6 90 INC $90
0041D6 1 A5 90 LDA $90
0041D8 1 A6 90 LDX $90
0041DA 1
0041DA 1 95 90 STA $90,X
0041DC 1 F6 90 INC $90,X
0041DE 1 B5 90 LDA $90,X
0041E0 1 A6 91 LDX $91
0041E2 1
0041E2 1 9D 90 01 STA $0190,X
0041E5 1 EE 92 01 INC $0192
0041E8 1 BD 90 01 LDA $0190,X
0041EB 1 AE 92 01 LDX $0192
0041EE 1
0041EE 1 9D 90 01 STA $0190,X
0041F1 1 FE 90 01 INC $0190,X
0041F4 1 BD 90 01 LDA $0190,X
0041F7 1 AE 93 01 LDX $0193
0041FA 1
0041FA 1 9D 70 01 STA $0170,X
0041FD 1 DE 70 01 DEC $0170,X
004200 1 BD 70 01 LDA $0170,X
004203 1 AE 74 01 LDX $0174
004206 1
004206 1 9D 70 01 STA $0170,X
004209 1 CE 73 01 DEC $0173
00420C 1 BD 70 01 LDA $0170,X
00420F 1 AE 73 01 LDX $0173
004212 1
004212 1 95 70 STA $70,X
004214 1 D6 70 DEC $70,X
004216 1 B5 70 LDA $70,X
004218 1 A6 72 LDX $72
00421A 1
00421A 1 95 70 STA $70,X
00421C 1 C6 71 DEC $71
00421E 1 C6 71 DEC $71
004220 1
004220 1 ; CHECK test02
004220 1 A5 71 LDA $71
004222 1 CD 02 02 CMP $0202
004225 1 F0 08 BEQ test03
004227 1 A9 02 LDA #$02
004229 1 8D 10 02 STA $0210
00422C 1 4C C0 45 JMP theend
00422F 1
00422F 1
00422F 1 ; expected result: $01DD = 0x6E
00422F 1 test03:
00422F 1 A9 4B LDA #$4B
004231 1 4A LSR
004232 1 0A ASL
004233 1
004233 1 85 50 STA $50
004235 1 06 50 ASL $50
004237 1 06 50 ASL $50
004239 1 46 50 LSR $50
00423B 1 A5 50 LDA $50
00423D 1
00423D 1 A6 50 LDX $50
00423F 1 09 C9 ORA #$C9
004241 1 85 60 STA $60
004243 1 16 4C ASL $4C,X
004245 1 56 4C LSR $4C,X
004247 1 56 4C LSR $4C,X
004249 1 B5 4C LDA $4C,X
00424B 1
00424B 1 A6 60 LDX $60
00424D 1 09 41 ORA #$41
00424F 1 8D 2E 01 STA $012E
004252 1 5E 00 01 LSR $0100,X
004255 1 5E 00 01 LSR $0100,X
004258 1 1E 00 01 ASL $0100,X
00425B 1 BD 00 01 LDA $0100,X
00425E 1
00425E 1 AE 2E 01 LDX $012E
004261 1 09 81 ORA #$81
004263 1 9D 00 01 STA $0100,X
004266 1 4E 36 01 LSR $0136
004269 1 4E 36 01 LSR $0136
00426C 1 0E 36 01 ASL $0136
00426F 1 BD 00 01 LDA $0100,X
004272 1
004272 1 ; rol & ror
004272 1
004272 1 2A ROL
004273 1 2A ROL
004274 1 6A ROR
004275 1 85 70 STA $70
004277 1
004277 1 A6 70 LDX $70
004279 1 09 03 ORA #$03
00427B 1 95 0C STA $0C,X
00427D 1 26 C0 ROL $C0
00427F 1 66 C0 ROR $C0
004281 1 66 C0 ROR $C0
004283 1 B5 0C LDA $0C,X
004285 1
004285 1 A6 C0 LDX $C0
004287 1 85 D0 STA $D0
004289 1 36 75 ROL $75,X
00428B 1 36 75 ROL $75,X
00428D 1 76 75 ROR $75,X
00428F 1 A5 D0 LDA $D0
004291 1
004291 1 A6 D0 LDX $D0
004293 1 9D 00 01 STA $0100,X
004296 1 2E B7 01 ROL $01B7
004299 1 2E B7 01 ROL $01B7
00429C 1 2E B7 01 ROL $01B7
00429F 1 6E B7 01 ROR $01B7
0042A2 1 BD 00 01 LDA $0100,X
0042A5 1
0042A5 1 AE B7 01 LDX $01B7
0042A8 1 8D DD 01 STA $01DD
0042AB 1 3E 00 01 ROL $0100,X
0042AE 1 7E 00 01 ROR $0100,X
0042B1 1 7E 00 01 ROR $0100,X
0042B4 1
0042B4 1 ; CHECK test03
0042B4 1 AD DD 01 LDA $01DD
0042B7 1 CD 03 02 CMP $0203
0042BA 1 F0 08 BEQ test04
0042BC 1 A9 03 LDA #$03
0042BE 1 8D 10 02 STA $0210
0042C1 1 4C C0 45 JMP theend
0042C4 1
0042C4 1
0042C4 1 ; expected result: $40 = 0x42
0042C4 1 test04:
0042C4 1 A9 E8 LDA #$E8 ;originally:#$7C
0042C6 1 85 20 STA $20
0042C8 1 A9 42 LDA #$42 ;originally:#$02
0042CA 1 85 21 STA $21
0042CC 1 A9 00 LDA #$00
0042CE 1 09 03 ORA #$03
0042D0 1 4C D5 42 JMP jump1
0042D3 1 09 FF ORA #$FF ; not done
0042D5 1 jump1:
0042D5 1 09 30 ORA #$30
0042D7 1 20 E1 42 JSR subr
0042DA 1 09 42 ORA #$42
0042DC 1 6C 20 00 JMP ($0020)
0042DF 1 09 FF ORA #$FF ; not done
0042E1 1 subr:
0042E1 1 85 30 STA $30
0042E3 1 A6 30 LDX $30
0042E5 1 A9 00 LDA #$00
0042E7 1 60 RTS
0042E8 1 final:
0042E8 1 95 0D STA $0D,X
0042EA 1
0042EA 1 ; CHECK test04
0042EA 1 A5 40 LDA $40
0042EC 1 CD 04 02 CMP $0204
0042EF 1 F0 08 BEQ test05
0042F1 1 A9 04 LDA #$04
0042F3 1 8D 10 02 STA $0210
0042F6 1 4C C0 45 JMP theend
0042F9 1
0042F9 1
0042F9 1 ; expected result: $40 = 0x33
0042F9 1 test05:
0042F9 1 A9 35 LDA #$35
0042FB 1
0042FB 1 AA TAX
0042FC 1 CA DEX
0042FD 1 CA DEX
0042FE 1 E8 INX
0042FF 1 8A TXA
004300 1
004300 1 A8 TAY
004301 1 88 DEY
004302 1 88 DEY
004303 1 C8 INY
004304 1 98 TYA
004305 1
004305 1 AA TAX
004306 1 A9 20 LDA #$20
004308 1 9A TXS
004309 1 A2 10 LDX #$10
00430B 1 BA TSX
00430C 1 8A TXA
00430D 1
00430D 1 85 40 STA $40
00430F 1
00430F 1 ; CHECK test05
00430F 1 A5 40 LDA $40
004311 1 CD 05 02 CMP $0205
004314 1 F0 08 BEQ test06
004316 1 A9 05 LDA #$05
004318 1 8D 10 02 STA $0210
00431B 1 4C C0 45 JMP theend
00431E 1
00431E 1
00431E 1 ; expected result: $30 = 9D
00431E 1 test06:
00431E 1
00431E 1 ; RESET TO CARRY FLAG = 0
00431E 1 2A ROL
00431F 1
00431F 1 A9 6A LDA #$6A
004321 1 85 50 STA $50
004323 1 A9 6B LDA #$6B
004325 1 85 51 STA $51
004327 1 A9 A1 LDA #$A1
004329 1 85 60 STA $60
00432B 1 A9 A2 LDA #$A2
00432D 1 85 61 STA $61
00432F 1
00432F 1 A9 FF LDA #$FF
004331 1 69 FF ADC #$FF
004333 1 69 FF ADC #$FF
004335 1 E9 AE SBC #$AE
004337 1
004337 1 85 40 STA $40
004339 1 A6 40 LDX $40
00433B 1 75 00 ADC $00,X
00433D 1 F5 01 SBC $01,X
00433F 1
00433F 1 65 60 ADC $60
004341 1 E5 61 SBC $61
004343 1
004343 1 8D 20 01 STA $0120
004346 1 A9 4D LDA #$4D
004348 1 8D 21 01 STA $0121
00434B 1 A9 23 LDA #$23
00434D 1 6D 20 01 ADC $0120
004350 1 ED 21 01 SBC $0121
004353 1
004353 1 85 F0 STA $F0
004355 1 A6 F0 LDX $F0
004357 1 A9 64 LDA #$64
004359 1 8D 24 01 STA $0124
00435C 1 A9 62 LDA #$62
00435E 1 8D 25 01 STA $0125
004361 1 A9 26 LDA #$26
004363 1 7D 00 01 ADC $0100,X
004366 1 FD 01 01 SBC $0101,X
004369 1
004369 1 85 F1 STA $F1
00436B 1 A4 F1 LDY $F1
00436D 1 A9 E5 LDA #$E5
00436F 1 8D 28 01 STA $0128
004372 1 A9 E9 LDA #$E9
004374 1 8D 29 01 STA $0129
004377 1 A9 34 LDA #$34
004379 1 79 00 01 ADC $0100,Y
00437C 1 F9 01 01 SBC $0101,Y
00437F 1
00437F 1 85 F2 STA $F2
004381 1 A6 F2 LDX $F2
004383 1 A9 20 LDA #$20
004385 1 85 70 STA $70
004387 1 A9 01 LDA #$01
004389 1 85 71 STA $71
00438B 1 A9 24 LDA #$24
00438D 1 85 72 STA $72
00438F 1 A9 01 LDA #$01
004391 1 85 73 STA $73
004393 1 61 41 ADC ($41,X)
004395 1 E1 3F SBC ($3F,X)
004397 1
004397 1 85 F3 STA $F3
004399 1 A4 F3 LDY $F3
00439B 1 A9 DA LDA #$DA
00439D 1 85 80 STA $80
00439F 1 A9 00 LDA #$00
0043A1 1 85 81 STA $81
0043A3 1 A9 DC LDA #$DC
0043A5 1 85 82 STA $82
0043A7 1 A9 00 LDA #$00
0043A9 1 85 83 STA $83
0043AB 1 A9 AA LDA #$AA
0043AD 1 71 80 ADC ($80),Y
0043AF 1 F1 82 SBC ($82),Y
0043B1 1 85 30 STA $30
0043B3 1
0043B3 1 ; CHECK test06
0043B3 1 A5 30 LDA $30
0043B5 1 CD 06 02 CMP $0206
0043B8 1 F0 08 BEQ test07
0043BA 1 A9 06 LDA #$06
0043BC 1 8D 10 02 STA $0210
0043BF 1 4C C0 45 JMP theend
0043C2 1
0043C2 1
0043C2 1 ; expected result: $15 = 0x7F
0043C2 1 test07:
0043C2 1 ; prepare memory
0043C2 1 A9 00 LDA #$00
0043C4 1 85 34 STA $34
0043C6 1 A9 FF LDA #$FF
0043C8 1 8D 30 01 STA $0130
0043CB 1 A9 99 LDA #$99
0043CD 1 8D 9D 01 STA $019D
0043D0 1 A9 DB LDA #$DB
0043D2 1 8D 99 01 STA $0199
0043D5 1 A9 2F LDA #$2F
0043D7 1 85 32 STA $32
0043D9 1 A9 32 LDA #$32
0043DB 1 85 4F STA $4F
0043DD 1 A9 30 LDA #$30
0043DF 1 85 33 STA $33
0043E1 1 A9 70 LDA #$70
0043E3 1 85 AF STA $AF
0043E5 1 A9 18 LDA #$18
0043E7 1 85 30 STA $30
0043E9 1
0043E9 1 ; imm
0043E9 1 C9 18 CMP #$18
0043EB 1 F0 02 BEQ beq1 ; taken
0043ED 1 29 00 AND #$00 ; not done
0043EF 1 beq1:
0043EF 1 ; zpg
0043EF 1 09 01 ORA #$01
0043F1 1 C5 30 CMP $30
0043F3 1 D0 02 BNE bne1 ; taken
0043F5 1 29 00 AND #$00 ; not done
0043F7 1 bne1:
0043F7 1 ; abs
0043F7 1 A2 00 LDX #$00
0043F9 1 CD 30 01 CMP $0130
0043FC 1 F0 04 BEQ beq2 ; not taken
0043FE 1 85 40 STA $40
004400 1 A6 40 LDX $40
004402 1 beq2:
004402 1 ; zpx
004402 1 D5 27 CMP $27,X
004404 1 D0 06 BNE bne2 ; not taken
004406 1 09 84 ORA #$84
004408 1 85 41 STA $41
00440A 1 A6 41 LDX $41
00440C 1 bne2:
00440C 1 ; abx
00440C 1 29 DB AND #$DB
00440E 1 DD 00 01 CMP $0100,X
004411 1 F0 02 BEQ beq3 ; taken
004413 1 29 00 AND #$00 ; not done
004415 1 beq3:
004415 1 ; aby
004415 1 85 42 STA $42
004417 1 A4 42 LDY $42
004419 1 29 00 AND #$00
00441B 1 D9 00 01 CMP $0100,Y
00441E 1 D0 02 BNE bne3 ; taken
004420 1 09 0F ORA #$0F ; not done
004422 1 bne3:
004422 1 ; idx
004422 1 85 43 STA $43
004424 1 A6 43 LDX $43
004426 1 09 24 ORA #$24
004428 1 C1 40 CMP ($40,X)
00442A 1 F0 02 BEQ beq4 ; not taken
00442C 1 09 7F ORA #$7F
00442E 1 beq4:
00442E 1 ; idy
00442E 1 85 44 STA $44
004430 1 A4 44 LDY $44
004432 1 49 0F EOR #$0F
004434 1 D1 33 CMP ($33),Y
004436 1 D0 04 BNE bne4 ; not taken
004438 1 A5 44 LDA $44
00443A 1 85 15 STA $15
00443C 1 bne4:
00443C 1
00443C 1 ; CHECK test07
00443C 1 A5 15 LDA $15
00443E 1 CD 07 02 CMP $0207
004441 1 F0 08 BEQ test08
004443 1 A9 07 LDA #$07
004445 1 8D 10 02 STA $0210
004448 1 4C C0 45 JMP theend
00444B 1
00444B 1
00444B 1 ; expected result: $42 = 0xA5
00444B 1 test08:
00444B 1 ; prepare memory
00444B 1 A9 A5 LDA #$A5
00444D 1 85 20 STA $20
00444F 1 8D 20 01 STA $0120
004452 1 A9 5A LDA #$5A
004454 1 85 21 STA $21
004456 1
004456 1 ; cpx imm...
004456 1 A2 A5 LDX #$A5
004458 1 E0 A5 CPX #$A5
00445A 1 F0 02 BEQ b1 ; taken
00445C 1 A2 01 LDX #$01 ; not done
00445E 1 b1:
00445E 1 ; cpx zpg...
00445E 1 E4 20 CPX $20
004460 1 F0 02 BEQ b2 ; taken
004462 1 A2 02 LDX #$02 ; not done
004464 1 b2:
004464 1 ; cpx abs...
004464 1 EC 20 01 CPX $0120
004467 1 F0 02 BEQ b3 ; taken
004469 1 A2 03 LDX #$03 ; not done
00446B 1 b3:
00446B 1 ; cpy imm...
00446B 1 86 30 STX $30
00446D 1 A4 30 LDY $30
00446F 1 C0 A5 CPY #$A5
004471 1 F0 02 BEQ b4 ; taken
004473 1 A0 04 LDY #$04 ; not done
004475 1 b4:
004475 1 ; cpy zpg...
004475 1 C4 20 CPY $20
004477 1 F0 02 BEQ b5 ; taken
004479 1 A0 05 LDY #$05 ; not done
00447B 1 b5:
00447B 1 ; cpy abs...
00447B 1 CC 20 01 CPY $0120
00447E 1 F0 02 BEQ b6 ; taken
004480 1 A0 06 LDY #$06 ; not done
004482 1 b6:
004482 1 ; bit zpg...
004482 1 84 31 STY $31
004484 1 A5 31 LDA $31
004486 1 24 20 BIT $20
004488 1 D0 02 BNE b7 ; taken
00448A 1 A9 07 LDA #$07 ; not done
00448C 1 b7:
00448C 1 ; bit abs...
00448C 1 2C 20 01 BIT $0120
00448F 1 D0 02 BNE b8 ; taken
004491 1 A9 08 LDA #$08 ; not done
004493 1 b8:
004493 1 24 21 BIT $21
004495 1 D0 02 BNE b9 ; not taken
004497 1 85 42 STA $42
004499 1 b9:
004499 1
004499 1 ; CHECK test08
004499 1 A5 42 LDA $42
00449B 1 CD 08 02 CMP $0208
00449E 1 F0 08 BEQ test09
0044A0 1 A9 08 LDA #$08
0044A2 1 8D 10 02 STA $0210
0044A5 1 4C C0 45 JMP theend
0044A8 1
0044A8 1
0044A8 1 ; expected result: $80 = 0x1F
0044A8 1 test09:
0044A8 1 ; prepare memory
0044A8 1 A9 54 LDA #$54
0044AA 1 85 32 STA $32
0044AC 1 A9 B3 LDA #$B3
0044AE 1 85 A1 STA $A1
0044B0 1 A9 87 LDA #$87
0044B2 1 85 43 STA $43
0044B4 1
0044B4 1 ; BPL
0044B4 1 A2 A1 LDX #$A1
0044B6 1 10 02 BPL bpl1 ; not taken
0044B8 1 A2 32 LDX #$32
0044BA 1 bpl1:
0044BA 1 B4 00 LDY $00,X
0044BC 1 10 04 BPL bpl2 ; taken
0044BE 1 A9 05 LDA #$05 ; not done
0044C0 1 A6 A1 LDX $A1 ; not done
0044C2 1 bpl2:
0044C2 1
0044C2 1 ; BMI
0044C2 1 30 02 BMI bmi1 ; not taken
0044C4 1 E9 03 SBC #$03
0044C6 1 bmi1:
0044C6 1 30 02 BMI bmi2 ; taken
0044C8 1 A9 41 LDA #$41 ; not done
0044CA 1 bmi2:
0044CA 1
0044CA 1 ; BVC
0044CA 1 49 30 EOR #$30
0044CC 1 85 32 STA $32
0044CE 1 75 00 ADC $00,X
0044D0 1 50 02 BVC bvc1 ; not taken
0044D2 1 A9 03 LDA #$03
0044D4 1 bvc1:
0044D4 1 85 54 STA $54
0044D6 1 B6 00 LDX $00,Y
0044D8 1 75 51 ADC $51,X
0044DA 1 50 02 BVC bvc2 ; taken
0044DC 1 A9 E5 LDA #$E5 ; not done
0044DE 1 bvc2:
0044DE 1
0044DE 1 ; BVS
0044DE 1 75 40 ADC $40,X
0044E0 1 70 05 BVS bvs1 ; not taken
0044E2 1 99 01 00 STA $0001,Y
0044E5 1 65 55 ADC $55
0044E7 1 bvs1:
0044E7 1 70 02 BVS bvs2 ; taken
0044E9 1 A9 00 LDA #$00
0044EB 1 bvs2:
0044EB 1
0044EB 1 ; BCC
0044EB 1 69 F0 ADC #$F0
0044ED 1 90 04 BCC bcc1 ; not taken
0044EF 1 85 60 STA $60
0044F1 1 65 43 ADC $43
0044F3 1 bcc1:
0044F3 1 90 02 BCC bcc2 ; taken
0044F5 1 A9 FF LDA #$FF
0044F7 1 bcc2:
0044F7 1
0044F7 1 ; BCS
0044F7 1 65 54 ADC $54
0044F9 1 B0 04 BCS bcs1 ; not taken
0044FB 1 69 87 ADC #$87
0044FD 1 A6 60 LDX $60
0044FF 1 bcs1:
0044FF 1 B0 02 BCS bcs2 ; taken
004501 1 A9 00 LDA #$00 ; not done
004503 1 bcs2:
004503 1 95 73 STA $73,X
004505 1
004505 1 ; CHECK test09
004505 1 A5 80 LDA $80
004507 1 CD 09 02 CMP $0209
00450A 1 F0 08 BEQ test10
00450C 1 A9 09 LDA #$09
00450E 1 8D 10 02 STA $0210
004511 1 4C C0 45 JMP theend
004514 1
004514 1
004514 1 ; expected result: $30 = 0xCE
004514 1 test10:
004514 1
004514 1 ; RESET TO CARRY = 0 & OVERFLOW = 0
004514 1 69 00 ADC #$00
004516 1
004516 1 A9 99 LDA #$99
004518 1 69 87 ADC #$87
00451A 1 18 CLC
00451B 1 EA NOP
00451C 1 90 04 BCC t10bcc1 ; taken
00451E 1 69 60 ADC #$60 ; not done
004520 1 69 93 ADC #$93 ; not done
004522 1 t10bcc1:
004522 1 38 SEC
004523 1 EA NOP
004524 1 90 01 BCC t10bcc2 ; not taken
004526 1 B8 CLV
004527 1 t10bcc2:
004527 1 50 02 BVC t10bvc1 ; taken
004529 1 A9 00 LDA #$00 ; not done
00452B 1 t10bvc1:
00452B 1 69 AD ADC #$AD
00452D 1 EA NOP
00452E 1 85 30 STA $30
004530 1
004530 1 ; CHECK test10
004530 1 A5 30 LDA $30
004532 1 CD 0A 02 CMP $020A
004535 1 F0 08 BEQ test11
004537 1 A9 0A LDA #$0A
004539 1 8D 10 02 STA $0210
00453C 1 4C C0 45 JMP theend
00453F 1
00453F 1
00453F 1 ; expected result: $30 = 0x29
00453F 1 test11:
00453F 1
00453F 1 ; RESET TO CARRY = 0 & ZERO = 0
00453F 1 69 01 ADC #$01
004541 1
004541 1 A9 27 LDA #$27
004543 1 69 01 ADC #$01
004545 1 38 SEC
004546 1 08 PHP
004547 1 18 CLC
004548 1 28 PLP
004549 1 69 00 ADC #$00
00454B 1 48 PHA
00454C 1 A9 00 LDA #$00
00454E 1 68 PLA
00454F 1 85 30 STA $30
004551 1
004551 1 ; CHECK test11
004551 1 A5 30 LDA $30
004553 1 CD 0B 02 CMP $020B
004556 1 F0 08 BEQ test12
004558 1 A9 0B LDA #$0B
00455A 1 8D 10 02 STA $0210
00455D 1 4C C0 45 JMP theend
004560 1
004560 1
004560 1 ; expected result: $33 = 0x42
004560 1 test12:
004560 1 18 CLC
004561 1 A9 42 LDA #$42
004563 1 90 04 BCC runstuff
004565 1 85 33 STA $33
004567 1 B0 0A BCS t12end
004569 1 runstuff:
004569 1 A9 45 LDA #$45
00456B 1 48 PHA
00456C 1 A9 61 LDA #$61
00456E 1 48 PHA
00456F 1 38 SEC
004570 1 08 PHP
004571 1 18 CLC
004572 1 40 RTI
004573 1 t12end:
004573 1
004573 1 ; CHECK test12
004573 1 A5 33 LDA $33
004575 1 CD 0C 02 CMP $020C
004578 1 F0 08 BEQ test13
00457A 1 A9 0C LDA #$0C
00457C 1 8D 10 02 STA $0210
00457F 1 4C C0 45 JMP theend
004582 1
004582 1
004582 1 ; expected result: $21 = 0x6C (simulator)
004582 1 ; $21 = 0x0C (ours)
004582 1 test13:
004582 1
004582 1 ; RESET TO CARRY = 0 & ZERO = 0
004582 1 69 01 ADC #$01
004584 1
004584 1 78 SEI
004585 1 F8 SED
004586 1 08 PHP
004587 1 68 PLA
004588 1 85 20 STA $20
00458A 1 58 CLI
00458B 1 D8 CLD
00458C 1 08 PHP
00458D 1 68 PLA
00458E 1 65 20 ADC $20
004590 1 85 21 STA $21
004592 1
004592 1 ; CHECK test13
004592 1 A5 21 LDA $21
004594 1 CD 0D 02 CMP $020D
004597 1 F0 08 BEQ test14
004599 1 A9 0D LDA #$0D
00459B 1 8D 10 02 STA $0210
00459E 1 4C C0 45 JMP theend
0045A1 1
0045A1 1
0045A1 1 ; expect result: $60 = 0x42
0045A1 1 test14:
0045A1 1 ; !!! NOTICE: BRK doesn't work in this
0045A1 1 ; simulator, so commented instructions
0045A1 1 ; are what should be executed...
0045A1 1 ;JMP pass_intrp
0045A1 1 A9 41 LDA #$41
0045A3 1 85 60 STA $60
0045A5 1 ;RTI
0045A5 1 ;pass_intrp:
0045A5 1 ;LDA #$FF
0045A5 1 ;STA $60
0045A5 1 ;BRK (two bytes)
0045A5 1 E6 60 INC $60
0045A7 1
0045A7 1 ; CHECK test14
0045A7 1 A5 60 LDA $60
0045A9 1 CD 0E 02 CMP $020E
0045AC 1 F0 08 BEQ suiteafinal
0045AE 1 A9 0E LDA #$0E
0045B0 1 8D 10 02 STA $0210
0045B3 1 4C C0 45 JMP theend
0045B6 1
0045B6 1 suiteafinal:
0045B6 1 ; IF $0210 == 0xFE, INCREMENT
0045B6 1 ; (checking that it didn't
0045B6 1 ; happen to wander off and
0045B6 1 ; not run our instructions
0045B6 1 ; to say which tests failed...)
0045B6 1 A9 FE LDA #$FE
0045B8 1 CD 10 02 CMP $0210
0045BB 1 D0 03 BNE theend
0045BD 1 EE 10 02 INC $0210
0045C0 1 theend:
0045C0 1 00 BRK
0045C1 1 00 BRK
0045C2 1 ;JMP theend
0045C2 1 A2 FF LDX #$FF
0045C4 1 9A TXS
0045C5 1 60 RTS
0045C6 1
0045C6 1 .segment "KERN"
0045C6 1
0045C6 1 .ORG $FF00
00FF00 1
00FF00 1 40 RTI
00FF01 1
00FF01 1 .segment "VECT"
00FF01 1
00FF01 1 .ORG $FFFA
00FFFA 1
00FFFA 1 00 FF 00 FF .BYTE $00,$FF,$00,$FF,$00,$FF
00FFFE 1 00 FF
010000 1
010000 1 ;-------------------------- END
010000 1