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

Subversion Repositories 8051

[/] [8051/] [trunk/] [asm/] [testall.asm] - Blame information for rev 186

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 91 simont
; Program tests all instructions except:
2
; MOVX(1-4) and RETI
3
 
4
        ; Clear RAM
5
        mov  r0,#128
6
ram_clr:
7
        dec  r0
8
        mov  @r0,#0
9
        mov  a,r0
10
        jnz  ram_clr
11
        mov  PSW,#0
12
 
13
;;;;;;;;;;;;;;;;;   INST 1 ;;;;;;;;;;;;;;;;;;;;;;;
14
 
15
;; acall addr11
16
        mov  a,#85
17
        acall testret
18
        inc  a
19
        jc   fail1
20
        subb a,#87
21
        jz   done1
22
fail1:
23
        mov  P1,1
24
        ljmp failed
25
done1:
26
 
27
;;;;;;;;;;;;;;;;   INST 2 ;;;;;;;;;;;;;;;;;;;;;;;
28
 
29
;; add a,Rn (2) -- test if ALU and flag setting works
30
        mov  a,#10
31
        mov  r0,#117
32
        mov  r1,#10
33
        mov  r2,#127
34
        mov  r3,#128
35
        mov  r5,#245
36
        mov  r7,#250
37
 
38
        mov  a,#10
39
        add  a,r0
40
        jc   fail2
41
        subb a,#127
42
        jnz  fail2
43
 
44
        mov  a,#10
45
        add  a,r2
46
        jc   fail2
47
        subb a,#137
48
        jnz  fail2
49
 
50
        mov  a,#10
51
        add  a,r3
52
        jc   fail2
53
        subb a,#138
54
        jnz  fail2
55
 
56
        mov  a,#10
57
        add  a,r5
58
        jc   fail2
59
        subb a,#255
60
        jnz  fail2
61
 
62
        mov  a,#10
63
        add  a,r7
64
        jnc  fail2
65
        clr  c
66
        subb a,#4
67
        jnz  fail2
68
 
69
        mov  a,#117
70
        add  a,r1
71
        jc   fail2
72
        subb a,#127
73
        jnz  fail2
74
 
75
        mov  a,#127
76
        add  a,r1
77
        jc   fail2
78
        subb a,#137
79
        jnz  fail2
80
 
81
        mov  a,#128
82
        add  a,r1
83
        jc   fail2
84
        subb a,#138
85
        jnz  fail2
86
 
87
        mov  a,#245
88
        add  a,r1
89
        jc   fail2
90
        subb a,#255
91
        jnz  fail2
92
 
93
        mov  a,#250
94
        add  a,r1
95
        jnc   fail2
96
        clr  c
97
        subb a,#4
98
        jnz  fail2
99
 
100
        ljmp done2
101
 
102
fail2:
103
        mov  P1,#2
104
        ljmp failed
105
done2:
106
 
107
;;;;;;;;;;;;;;;;   INST 3 ;;;;;;;;;;;;;;;;;;;;;;;
108
 
109
;; add a,direct (3) -- test if ALU and flag setting works
110
 
111
        mov  100,#117
112
        mov  a,#10
113
        add  a,100
114
        jc   fail3
115
        subb a,#127
116
        jnz  fail3
117
 
118
        mov  100,#127
119
        mov  a,#10
120
        add  a,100
121
        jc   fail3
122
        subb a,#137
123
        jnz  fail3
124
 
125
        mov  100,#128
126
        mov  a,#10
127
        add  a,100
128
        jc   fail3
129
        subb a,#138
130
        jnz  fail3
131
 
132
        mov  100,#245
133
        mov  a,#10
134
        add  a,100
135
        jc   fail3
136
        subb a,#255
137
        jnz  fail3
138
 
139
        mov  100,#250
140
        mov  a,#10
141
        add  a,100
142
        jnc   fail3
143
        clr  c
144
        subb a,#4
145
        jnz  fail3
146
 
147
        mov  a,#117
148
        mov  100,#10
149
        add  a,100
150
        jc   fail3
151
        subb a,#127
152
        jnz  fail3
153
 
154
        mov  a,#127
155
        mov  100,#10
156
        add  a,100
157
        jc   fail3
158
        subb a,#137
159
        jnz  fail3
160
 
161
        mov  a,#128
162
        add  a,100
163
        jc   fail3
164
        subb a,#138
165
        jnz  fail3
166
 
167
        mov  a,#245
168
        add  a,100
169
        jc   fail3
170
        subb a,#255
171
        jnz  fail3
172
 
173
        mov  a,#250
174
        add  a,100
175
        jnc  fail3
176
        clr  c
177
        subb a,#4
178
        jnz  fail3
179
 
180
        ljmp done3
181
 
182
fail3:
183
        jz   done3
184
        mov  P1,#3
185
        ljmp failed
186
done3:
187
 
188
;;;;;;;;;;;;;;;;   INST 4 ;;;;;;;;;;;;;;;;;;;;;;;
189
 
190
;; add a,@Ri (4) -- indexed and simple CY
191
        mov  a,#40
192
        mov  r0,#100
193
        mov  100,#10
194
        mov  r1,#101
195
        mov  101,#100
196
 
197
        add  a,@r0
198
        jc   fail4
199
        subb a,#50
200
        jnz  fail4
201
 
202
        mov  a,#40
203
        add  a,@r1
204
        jc   fail4
205
        subb a,#140
206
        jnz  fail4
207
 
208
        mov  a,#10
209
        mov  r1,#102
210
        mov  102,#250
211
        add  a,@r1
212
        jnc   fail4
213
        clr  c
214
        subb a,#4
215
        jnz  fail4
216
        ljmp done4
217
 
218
fail4:
219
        mov  P1,#4
220
        ljmp failed
221
done4:
222
 
223
;;;;;;;;;;;;;;;;   INST 5 ;;;;;;;;;;;;;;;;;;;;;;;
224
 
225
;; add a,#data (5)
226
        mov  a,#10
227
 
228
        add  a,#117
229
        jc   fail5
230
        subb a,#127
231
        jnz  fail5
232
 
233
        mov  a,#10
234
        add  a,#127
235
        jc   fail5
236
        subb a,#137
237
        jnz  fail5
238
 
239
        mov  a,#10
240
        add  a,#128
241
        jc   fail5
242
        subb a,#138
243
        jnz  fail5
244
 
245
        mov  a,#10
246
        add  a,#245
247
        jc   fail5
248
        subb a,#255
249
        jnz  fail5
250
 
251
        mov  a,#10
252
        add  a,#250
253
        jnc   fail5
254
        clr  c
255
        subb a,#4
256
        jnz  fail5
257
 
258
        mov  a,#117
259
        add  a,#10
260
        jc   fail5
261
        subb a,#127
262
        jnz  fail5
263
 
264
        mov  a,#127
265
        add  a,#10
266
        jc   fail5
267
        subb a,#137
268
        jnz  fail5
269
 
270
        mov  a,#128
271
        add  a,#10
272
        jc   fail5
273
        subb a,#138
274
        jnz  fail5
275
 
276
        mov  a,#245
277
        add  a,#10
278
        jc   fail5
279
        subb a,#255
280
        jnz  fail5
281
 
282
        mov  a,#250
283
        add  a,#10
284
        jnc  fail5
285
        clr  c
286
        subb a,#4
287
        jnz  fail5
288
 
289
        ljmp done5
290
 
291
fail5:
292
        jz   done5
293
        mov  P1,#5
294
        ljmp failed
295
        mov  P1,#5
296
        ljmp failed
297
done5:
298
 
299
;;;;;;;;;;;;;;;;   INST 6 ;;;;;;;;;;;;;;;;;;;;;;;
300
 
301
;; addc a,Rn (6)
302
        mov  a,#10
303
        mov  r0,#10
304
 
305
        clr  c
306
        addc a,r0
307
        jc   fail6
308
        subb a,#20
309
        jnz  fail6
310
 
311
        mov  a,#10
312
        setb c
313
        addc a,r0
314
        jc   fail6
315
        subb a,#21
316
        jnz  fail6
317
 
318
        mov  a,#100
319
        clr  c
320
        addc a,r0
321
        jc   fail6
322
        subb a,#110
323
        jnz  fail6
324
 
325
        mov  a,#100
326
        setb c
327
        addc a,r0
328
        jc   fail6
329
        subb a,#111
330
        jnz  fail6
331
 
332
        mov  a,#250
333
        clr  c
334
        addc a,r0
335
        jnc  fail6
336
        clr  c
337
        subb a,#4
338
        jnz  fail6
339
 
340
        mov  a,#250
341
        setb c
342
        addc a,r0
343
        jnc  fail6
344
        clr  c
345
        subb a,#5
346
        jnz  fail6
347
 
348
        ljmp done6
349
fail6:
350
        mov  P1,#6
351
        ljmp failed
352
done6:
353
 
354
;;;;;;;;;;;;;;;;   INST 7 ;;;;;;;;;;;;;;;;;;;;;;;
355
 
356
;; addc a,direct (7)
357
        mov  a,#10
358
        mov  100,#10
359
 
360
        clr  c
361
        addc a,100
362
        jc   fail7
363
        subb a,#20
364
        jnz  fail7
365
 
366
        mov  a,#10
367
        setb c
368
        addc a,100
369
        jc   fail7
370
        subb a,#21
371
        jnz  fail7
372
 
373
        mov  a,#100
374
        clr  c
375
        addc a,100
376
        jc   fail7
377
        subb a,#110
378
        jnz  fail7
379
 
380
        mov  a,#100
381
        setb c
382
        addc a,100
383
        jc   fail7
384
        subb a,#111
385
        jnz  fail7
386
 
387
        mov  a,#250
388
        clr  c
389
        addc a,100
390
        jnc  fail7
391
        clr  c
392
        subb a,#4
393
        jnz  fail7
394
 
395
        mov  a,#250
396
        setb c
397
        addc a,100
398
        jnc  fail7
399
        clr  c
400
        subb a,#5
401
        jnz  fail7
402
 
403
        ljmp done7
404
fail7:
405
        mov  P1,#7
406
        ljmp failed
407
done7:
408
 
409
;;;;;;;;;;;;;;;;   INST 8 ;;;;;;;;;;;;;;;;;;;;;;;
410
 
411
;; addc a,@Ri (8)
412
        mov  a,#10
413
        mov  r0,#100
414
        mov  100,#11
415
 
416
        clr  c
417
        addc a,@r0
418
        jc   fail8
419
        subb a,#21
420
        jnz  fail8
421
 
422
        mov  a,#10
423
        setb c
424
        addc a,@r0
425
        jc   fail8
426
        subb a,#22
427
        jnz  fail8
428
 
429
        mov  a,#100
430
        clr  c
431
        addc a,@r0
432
        jc   fail8
433
        subb a,#111
434
        jnz  fail8
435
 
436
        mov  a,#100
437
        setb c
438
        addc a,@r0
439
        jc   fail8
440
        subb a,#112
441
        jnz  fail8
442
 
443
        mov  a,#250
444
        clr  c
445
        addc a,@r0
446
        jnc  fail8
447
        clr  c
448
        subb a,#5
449
        jnz  fail8
450
 
451
        mov  a,#250
452
        setb c
453
        addc a,@r0
454
        jnc  fail8
455
        clr  c
456
        subb a,#6
457
        jnz  fail8
458
 
459
        ljmp done8
460
fail8:
461
        mov  P1,#8
462
        ljmp failed
463
done8:
464
 
465
 
466
;;;;;;;;;;;;;;;;   INST 9 ;;;;;;;;;;;;;;;;;;;;;;;
467
 
468
;; addc a,#data (9)
469
        mov  a,#14
470
 
471
        clr  c
472
        addc a,#14
473
        jc   fail9
474
        subb a,#28
475
        jnz  fail9
476
 
477
        mov  a,#14
478
        setb c
479
        addc a,#15
480
        jc   fail9
481
        subb a,#30
482
        jnz  fail9
483
 
484
        mov  a,#110
485
        clr  c
486
        addc a,#20
487
        jc   fail9
488
        subb a,#130
489
        jnz  fail9
490
 
491
        mov  a,#110
492
        setb c
493
        addc a,#20
494
        jc   fail9
495
        subb a,#131
496
        jnz  fail9
497
 
498
        mov  a,#250
499
        clr  c
500
        addc a,#11
501
        jnc  fail9
502
        clr  c
503
        subb a,#5
504
        jnz  fail9
505
 
506
        mov  a,#250
507
        setb c
508
        addc a,#11
509
        jnc  fail9
510
        clr  c
511
        subb a,#6
512
        jnz  fail9
513
 
514
        ljmp done9
515
fail9:
516
        mov  P1,#9
517
        ljmp failed
518
done9:
519
 
520
;;;;;;;;;;;;;;;;  INST 10 ;;;;;;;;;;;;;;;;;;;;;;;
521
 
522
;; ajmp (10)
523
        setb c
524
        ajmp done10
525
fail10:
526
        mov  P1,#10
527
        ljmp failed
528
done10:clr  c
529
        jc   fail10
530
 
531
;;;;;;;;;;;;;;;;  INST 11 ;;;;;;;;;;;;;;;;;;;;;;;
532
 
533
;; anl a,Rn (11)
534
        mov  r0,#250
535
        clr  c
536
        clr  a
537
        mov  a,#171
538
        anl  a,r0
539
        jc   fail11
540
        jz   fail11
541
        subb a,#170
542
        jnz  fail11
543
 
544
        mov  r0,#190
545
        mov  a,#84
546
        inc  a
547
        setb c
548
        anl  a,r0
549
        jz   fail11
550
        jnc  fail11
551
        clr  c
552
        subb a,#20
553
        jnz  fail11
554
        ljmp done11
555
 
556
fail11:
557
        mov  P1,#11
558
        ljmp failed
559
done11:
560
 
561
;;;;;;;;;;;;;;;;  INST 12 ;;;;;;;;;;;;;;;;;;;;;;;
562
 
563
;; anl a,direct (12)
564
        mov  127,#250
565
        clr  c
566
        clr  a
567
        mov  a,#171
568
        anl  a,127
569
        jc   fail12
570
        jz   fail12
571
        subb a,#170
572
        jnz  fail12
573
 
574
        mov  127,#190
575
        mov  a,#84
576
        inc  a
577
        setb c
578
        anl  a,127
579
        jz   fail12
580
        jnc  fail12
581
        clr  c
582
        subb a,#20
583
        jnz  fail12
584
        ljmp done12
585
 
586
fail12:
587
        mov  P1,#12
588
        ljmp failed
589
done12:
590
 
591
;;;;;;;;;;;;;;;;  INST 13 ;;;;;;;;;;;;;;;;;;;;;;;
592
 
593
;; anl a,@Ri (13)
594
        mov  r0,#127
595
        clr  c
596
        clr  a
597
        mov  127,#171
598
        mov  a,#250
599
        anl  a,@r0
600
        jc   fail13
601
        jz   fail13
602
        subb a,#170
603
        jnz  fail13
604
 
605
        mov  127,#190
606
        mov  a,#84
607
        inc  a
608
        setb c
609
        anl  a,@r0
610
        jz   fail13
611
        jnc  fail13
612
        clr  c
613
        subb a,#20
614
        jnz  fail13
615
        ljmp done13
616
 
617
fail13:
618
        anl  a,@r0
619
        jz   done13
620
        mov  P1,#13
621
        ljmp failed
622
done13:
623
 
624
;;;;;;;;;;;;;;;;  INST 14 ;;;;;;;;;;;;;;;;;;;;;;;
625
 
626
;; anl a,#data (14)
627
        clr  c
628
        clr  a
629
        mov  a,#250
630
        anl  a,#171
631
        jc   fail14
632
        jz   fail14
633
        subb a,#170
634
        jnz  fail14
635
 
636
        mov  a,#190
637
        mov  a,#84
638
        inc  a
639
        setb c
640
        anl  a,@r0
641
        jz   fail14
642
        jnc  fail14
643
        clr  c
644
        subb a,#20
645
        jnz  fail14
646
        ljmp done14
647
 
648
fail14:
649
        subb a,#255
650
        jz   done14
651
        mov  P1,#14
652
        ljmp failed
653
done14:
654
 
655
;;;;;;;;;;;;;;;;  INST 15 ;;;;;;;;;;;;;;;;;;;;;;;
656
 
657
;; anl direct,a (15)
658
        mov  127,#250
659
        clr  c
660
        clr  a
661
        mov  a,#171
662
        anl  127,a
663
        jc   fail15
664
        mov  a,127
665
        jz   fail15
666
        subb a,#170
667
        jnz  fail15
668
 
669
        mov  127,#190
670
        mov  a,#84
671
        inc  a
672
        setb c
673
        anl  127,a
674
        mov  a,127
675
        jz   fail15
676
        jnc  fail15
677
        clr  c
678
        subb a,#20
679
        jnz  fail15
680
        ljmp done15
681
 
682
fail15:
683
        mov  P1,#15
684
        ljmp failed
685
done15:
686
 
687
;;;;;;;;;;;;;;;;  INST 16 ;;;;;;;;;;;;;;;;;;;;;;;
688
 
689
;; anl direct,#data (16)
690
        mov  127,#250
691
        clr  c
692
        clr  a
693
        anl  127,#171
694
        jc   fail16
695
        mov  a,127
696
        jz   fail16
697
        subb a,#170
698
        jnz  fail16
699
 
700
        mov  127,#190
701
        setb c
702
        anl  127,#85
703
        mov  a,127
704
        jz   fail16
705
        jnc  fail16
706
        clr  c
707
        subb a,#20
708
        jnz  fail16
709
        ljmp done16
710
 
711
fail16:
712
        mov  P1,#16
713
        ljmp failed
714
done16:
715
 
716
;;;;;;;;;;;;;;;;  INST 17 ;;;;;;;;;;;;;;;;;;;;;;;
717
 
718
;; anl c,bit (17)
719
        mov  a,#128
720
        clr  c
721
        anl  c,acc.7
722
        jc   fail17
723
        mov  a,#128
724
        setb c
725
        anl  c,acc.7
726
        jnc  fail17
727
        ljmp done17
728
 
729
fail17:
730
        mov  P1,#17
731
        ljmp failed
732
done17:
733
 
734
;;;;;;;;;;;;;;;;  INST 18 ;;;;;;;;;;;;;;;;;;;;;;;
735
 
736
;; anl c,/bit (18)
737
        mov  a,#128
738
        clr  c
739
        anl  c,/acc.7
740
        jc   fail18
741
        mov  a,#128
742
        setb c
743
        anl  c,/acc.7
744
        jc   fail18
745
        mov  a,#128
746
        setb c
747
        anl  c,/acc.5
748
        jnc  fail18
749
        ljmp done18
750
 
751
fail18:
752
        mov  P1,#18
753
        ljmp failed
754
done18:
755
 
756
;;;;;;;;;;;;;;;;  INST 19 ;;;;;;;;;;;;;;;;;;;;;;;
757
 
758
;; cjne a,direct,rel (19)
759
        mov  a,#228
760
        mov  100,#228
761
        cjne a,100,fail19
762
        jc   fail19
763
 
764
        mov  a,#227
765
        cjne a,100,CHECK_C_19
766
        ljmp fail19
767
CHECK_C_19:     ;Checks that carry was set
768
        jnc  fail19
769
 
770
        mov  a,#229
771
        cjne a,100,CHECK_NC_19
772
        ljmp fail19
773
 
774
CHECK_NC_19:    ;Checks that carry was not set
775
        jc   fail19
776
        ljmp done19
777
 
778
fail19:
779
        mov  P1,#19
780
        ljmp failed
781
done19:
782
 
783
;;;;;;;;;;;;;;;;  INST 20 ;;;;;;;;;;;;;;;;;;;;;;;
784
 
785
;; cjne a,#data,rel (20)
786
        mov  a,#100
787
        cjne a,#100,fail20
788
        jc   fail20
789
 
790
        mov  a,#99
791
        cjne a,#100,CHECK_C_20
792
        ljmp fail20
793
CHECK_C_20:     ;Checks that carry was set
794
        jnc  fail20
795
 
796
        mov  a,#101
797
        cjne a,#100,CHECK_NC_20
798
        ljmp fail20
799
 
800
CHECK_NC_20:    ;Checks that carry was not set
801
        jc   fail20
802
        ljmp done20
803
 
804
fail20:
805
        mov  P1,#20
806
        ljmp failed
807
done20:
808
 
809
;;;;;;;;;;;;;;;;  INST 21 ;;;;;;;;;;;;;;;;;;;;;;;
810
 
811
;; cjne Rn,#data,rel (21)
812
        mov  r1,#100
813
        cjne r1,#100,fail21
814
        jc   fail21
815
 
816
        mov  r1,#99
817
        cjne r1,#100,CHECK_C_21
818
        ljmp fail21
819
CHECK_C_21:     ;Checks that carry was set
820
        jnc  fail21
821
 
822
        mov  r1,#101
823
        cjne r1,#100,CHECK_NC_21
824
        ljmp fail21
825
 
826
CHECK_NC_21:    ;Checks that carry was not set
827
        jc   fail21
828
        ljmp done21
829
 
830
fail21:
831
        mov  P1,#21
832
        ljmp failed
833
done21:
834
 
835
;;;;;;;;;;;;;;;;  INST 22 ;;;;;;;;;;;;;;;;;;;;;;;
836
 
837
;; cjne @Ri,#data,rel (22)
838
        mov  125,#99
839
        mov  126,#100
840
        mov  127,#101
841
        mov  r1,#125
842
        cjne @r1,#100, CHECK_EQ_22
843
  ljmp fail22
844
 
845
CHECK_EQ_22:
846
        jnc  fail22
847
        mov  r1,#126
848
        cjne @r1,#100,fail22
849
        jc   fail22
850
 
851
        mov  r1,#127
852
        cjne @r1,#100,CHECK_NC_22
853
        ljmp fail22
854
 
855
CHECK_NC_22:    ;Checks that carry was not set
856
        jc   fail22
857
        ljmp done22
858
 
859
fail22:
860
        mov  P1,#22
861
        ljmp failed
862
done22:
863
 
864
;;;;;;;;;;;;;;;;  INST 23 ;;;;;;;;;;;;;;;;;;;;;;;
865
 
866
;; clr a (23)
867
        mov  a,#86
868
        clr  a
869
        jnz  fail23
870
        mov  a,#86
871
        clr  a
872
        mov  r0,a
873
        mov  a,r0
874
        jnz  fail23
875
        ljmp done23
876
 
877
fail23:
878
        mov  P1,#23
879
        ljmp failed
880
done23:
881
 
882
;;;;;;;;;;;;;;;;  INST 24 ;;;;;;;;;;;;;;;;;;;;;;;
883
 
884
;; clr c (24)
885
        setb c
886
        clr  c
887
        jc   fail24
888
        clr  c
889
        jc   fail24
890
        ljmp done24
891
 
892
fail24:
893
        mov  P1,#24
894
        ljmp failed
895
done24:
896
 
897
;;;;;;;;;;;;;;;;  INST 25 ;;;;;;;;;;;;;;;;;;;;;;;
898
 
899
;; clr bit (25)
900
        mov  a, #02h
901
        jz   fail25
902
        clr  acc.1
903
        jnz   fail25
904
 
905
        setb 7
906
        mov  c, 7
907
        jc clr1;
908
        ljmp fail25;
909
clr1:
910
        clr  7
911
        mov  c, 7
912
        jc   fail25
913
        clr  7
914
        mov  c, 7
915
        jc   fail25
916
        ljmp done25
917
 
918
fail25:
919
        mov  P1,#25
920
        ljmp failed
921
done25:
922
 
923
;;;;;;;;;;;;;;;;  INST 26 ;;;;;;;;;;;;;;;;;;;;;;;
924
 
925
;; cpl a (26)
926
        mov  a,#255
927
        cpl  a
928
        jnz  fail26
929
 
930
        mov  a,#85
931
        cpl  a
932
        clr  c
933
        subb a,#170
934
        jnz  fail26
935
        ljmp done26
936
 
937
fail26:
938
        mov  P1,#26
939
        ljmp failed
940
done26:
941
 
942
;;;;;;;;;;;;;;;;  INST 27 ;;;;;;;;;;;;;;;;;;;;;;;
943
 
944
;; cpl c (27)
945
        setb c
946
        cpl  c
947
        jc   fail27
948
        clr  c
949
        cpl  c
950
        jnc  fail27
951
        ljmp done27
952
 
953
fail27:
954
        mov  P1,#27
955
        ljmp failed
956
done27:
957
 
958
;;;;;;;;;;;;;;;;  INST 28 ;;;;;;;;;;;;;;;;;;;;;;;
959
 
960
;; cpl bit (28)
961
        clr  a
962
        setb acc.5
963
        cpl  acc.5
964
        jnz  fail28
965
        clr  acc.5
966
        cpl  acc.5
967
        jz   fail28
968
        ljmp done28
969
 
970
fail28:
971
        mov  P1,#28
972
        ljmp failed
973
done28:
974
 
975
;;;;;;;;;;;;;;;;  INST 29 ;;;;;;;;;;;;;;;;;;;;;;;
976
 
977
;; DA a (29)
978
        mov  a,#80h
979
        add  a,#99h
980
        da   a
981
        subb a,#78h     ;Will clr acc if c set
982 155 simont
        jz   tst2
983
 
984
fail_da:
985 91 simont
        mov  P1,#29
986 155 simont
        ljmp failed
987
tst2:
988
        mov psw, #00h
989
        mov r3, #67h
990
        mov a, #56h
991
        addc a, r3
992
        da  a
993
        subb a, #24h
994
        jnz fail_da
995
 
996
        mov psw, #00h
997
        mov a, #30h
998
        addc a, #99h
999
        da  a
1000
        subb a, #28h
1001
        jnz fail_da
1002
 
1003
 
1004 91 simont
done29:
1005
 
1006
 
1007
;;;;;;;;;;;;;;;;;  INST 30 ;;;;;;;;;;;;;;;;;;;;;;
1008
 
1009
;; dec a (30)
1010
        mov  a,#10
1011
        setb c
1012
        dec  a
1013
        jnc  fail30
1014
        clr  c
1015
        subb a,#9
1016
        jnz  fail30
1017
 
1018
        mov  a,#0
1019
        clr  c
1020
        dec  a
1021
        jc   fail30
1022
        subb a,#255
1023
        jnz  fail30
1024
        ljmp done30
1025
 
1026
fail30:
1027
        mov  P1,#30
1028
        ljmp failed
1029
done30:
1030
 
1031
;;;;;;;;;;;;;;;;;  INST 31 ;;;;;;;;;;;;;;;;;;;;;;
1032
 
1033
;; dec Rn (31)
1034
        mov  r2,#10
1035
        setb c
1036
        dec  r2
1037
        jnc  fail31
1038
        clr  c
1039
        mov  a,r2
1040
        subb a,#9
1041
        jnz  fail31
1042
 
1043
        mov  r2,#0
1044
        clr  c
1045
        dec  r2
1046
        jc   fail31
1047
        mov  a,r2
1048
        subb a,#255
1049
        jnz  fail31
1050
        ljmp done31
1051
 
1052
fail31:
1053
        mov  P1,#31
1054
        ljmp failed
1055
done31:
1056
 
1057
;;;;;;;;;;;;;;;;;  INST 32 ;;;;;;;;;;;;;;;;;;;;;;
1058
 
1059
;; dec direct (32)
1060
        mov  127,#10
1061
        setb c
1062
        dec  127
1063
        jnc  fail32
1064
        clr  c
1065
        mov  a,127
1066
        subb a,#9
1067
        jnz  fail32
1068
 
1069
        mov  127,#0
1070
        clr  c
1071
        dec  127
1072
        jc   fail32
1073
        mov  a,127
1074
        subb a,#255
1075
        jnz  fail32
1076
        ljmp done32
1077
 
1078
fail32:
1079
        mov  P1,#32
1080
        ljmp failed
1081
done32:
1082
 
1083
;;;;;;;;;;;;;;;;;  INST 33 ;;;;;;;;;;;;;;;;;;;;;;
1084
 
1085
;; dec @Ri (33)
1086
        mov  r0,#127
1087
        mov  @r0,#10
1088
        setb c
1089
        dec  @r0
1090
        jnc  fail33
1091
        clr  c
1092
        mov  a,@r0
1093
        subb a,#9
1094
        jnz  fail33
1095
 
1096
        mov  @r0,#0
1097
        clr  c
1098
        dec  @r0
1099
        jc   fail33
1100
        mov  a,@r0
1101
        subb a,#255
1102
        jnz  fail33
1103
        ljmp done33
1104
 
1105
fail33:
1106
        mov  P1,#33
1107
        ljmp failed
1108
done33:
1109
 
1110
 
1111
;;;;;;;;;;;;;;;;;  INST 34 ;;;;;;;;;;;;;;;;;;;;;;
1112
 
1113
;; div AB (34)
1114
        mov  a,#251
1115
        mov  B,#18
1116
        div  AB
1117
        jc   fail34
1118
        mov  c,OV
1119
        jc   fail34
1120
        subb a,#13
1121
        jnz  fail34
1122
        mov  a,B
1123
        subb a,#17
1124
        jnz  fail34
1125
 
1126
        mov  a,#180
1127
        mov  B,#15
1128
        div  AB
1129
        jc   fail34
1130
        mov  c,OV
1131
        jc   fail34
1132
        subb a,#12
1133
        jnz  fail34
1134
        mov  a,B
1135
        jnz  fail34
1136
 
1137
        mov  a,#0
1138
        mov  B,#15
1139
        div  AB
1140
        jc   fail34
1141
        mov  c,OV
1142
        jc   fail34
1143
        jnz  fail34
1144
        mov  a,B
1145
        subb a,#15
1146
 
1147
        mov  a,#0
1148
        mov  B,#0
1149
        div  AB
1150
        jc   fail34
1151
        mov  c,OV
1152
        jnc  fail34
1153
 
1154
        mov  a,#170
1155
        mov  B,#0
1156
        div  AB
1157
        jc   fail34
1158
        mov  c,OV
1159
        jnc  fail34
1160
        ljmp done34
1161
fail34:
1162
        mov  P1,#34
1163
        ljmp failed
1164
done34:
1165
 
1166
 
1167
;;;;;;;;;;;;;;;;;  INST 35 ;;;;;;;;;;;;;;;;;;;;;;
1168
 
1169
;; djnz Rn,rel (35)
1170
        mov  r0,#10
1171
        djnz r0,JUMP_35 ;Should jump
1172
        mov  P1,#35
1173
        ljmp failed
1174
JUMP_35:
1175
        mov  r0,#0
1176
        djnz r0,JUMP_35B        ;Should jump
1177
        mov  P1,#35
1178
        ljmp failed
1179
JUMP_35B:
1180
        mov  r0,#1
1181
        djnz r0,NOT_JUMP_35     ;Should not jump
1182
        ajmp done35
1183
NOT_JUMP_35:
1184
        mov  P1,#35
1185
        ljmp failed
1186
done35:
1187
 
1188
;;;;;;;;;;;;;;;;;  INST 36 ;;;;;;;;;;;;;;;;;;;;;;
1189
 
1190
;; djnz direct,rel (36)
1191
        mov  127,#10
1192
        djnz 127,JUMP_36        ;Should jump
1193
        mov  P1,#36
1194
        ljmp failed
1195
JUMP_36:
1196
        mov  127,#0
1197
        djnz 127,JUMP_36B       ;Should jump
1198
        mov  P1,#36
1199
        ljmp failed
1200
JUMP_36B:
1201
        mov  127,#1
1202
        djnz 127,NOT_JUMP_36    ;Should not jump
1203
        ajmp done36
1204
NOT_JUMP_36:
1205
        mov  P1,#36
1206
        ljmp failed
1207
 
1208
done86:
1209
 
1210
;;;;;;;;;;;;;;;;  INST 88 ;;;;;;;;;;;;;;;;;;;;;;;
1211
 
1212
        ljmp done88
1213
        clr  a
1214
testret:             ;; subroutine called from acall and lcall
1215
        inc  a
1216
        ret
1217
        clr  a
1218
 
1219
done36:
1220
 
1221
;;;;;;;;;;;;;;;;;  INST 37 ;;;;;;;;;;;;;;;;;;;;;;
1222
 
1223
;; inc a (37)
1224
        mov  a,#10
1225
        clr  c
1226
        inc  a
1227
        jc   fail37
1228
        subb a,#11
1229
        jnz  fail37
1230
 
1231
        mov  a,#255
1232
        setb c
1233
        inc  a
1234
        jnc  fail37
1235
        jnz  fail37
1236
        ljmp done37
1237
 
1238
fail37:
1239
        mov  P1,#37
1240
        ljmp failed
1241
done37:
1242
 
1243
;;;;;;;;;;;;;;;;;  INST 38 ;;;;;;;;;;;;;;;;;;;;;;
1244
 
1245
;; inc Rn (38)
1246
        mov  r3,#10
1247
        clr  c
1248
        inc  r3
1249
        jc   fail38
1250
        mov  a,r3
1251
        subb a,#11
1252
        jnz  fail38
1253
 
1254
        mov  r4,#255
1255
        setb c
1256
        inc  r4
1257
        jnc  fail38
1258
        mov  a,r4
1259
        jnz  fail38
1260
        ljmp done38
1261
 
1262
fail38:
1263
        mov  P1,#38
1264
        ljmp failed
1265
done38:
1266
 
1267
;;;;;;;;;;;;;;;;;  INST 39 ;;;;;;;;;;;;;;;;;;;;;;
1268
 
1269
;; inc direct (39)
1270
        mov  127,#10
1271
        clr  c
1272
        inc  127
1273
        jc   fail39
1274
        mov  a,127
1275
        subb a,#11
1276
        jnz  fail39
1277
 
1278
        mov  127,#255
1279
        setb c
1280
        inc  127
1281
        jnc  fail39
1282
        mov  a,127
1283
        jnz  fail39
1284
        ljmp done39
1285
 
1286
fail39:
1287
        mov  P1,#39
1288
        ljmp failed
1289
done39:
1290
 
1291
;;;;;;;;;;;;;;;;;  INST 40 ;;;;;;;;;;;;;;;;;;;;;;
1292
 
1293
;; inc @Ri (40)
1294
        mov  r1,#126
1295
        mov  @r1,#10
1296
        clr  c
1297
        inc  @r1
1298
        jc   fail40
1299
        mov  a,@r1
1300
        subb a,#11
1301
        jnz  fail40
1302
 
1303
        mov  @r1,#255
1304
        setb c
1305
        inc  @r1
1306
        jnc  fail40
1307
        mov  a,@r1
1308
        jnz  fail40
1309
        ljmp done40
1310
 
1311
fail40:
1312
        mov  P1,#40
1313
        ljmp failed
1314
done40:
1315
 
1316
 
1317
;;;;;;;;;;;;;;;;;  INST 41 ;;;;;;;;;;;;;;;;;;;;;;
1318
 
1319
;; inc dptr (41)
1320
  clr  c;
1321
        mov  dptr,#12ffh
1322
        inc  dptr
1323
        mov  a,DPH
1324
        subb a,#13h
1325
        jz   DPH_OK_41
1326
        mov  P1,#41
1327
        ljmp failed
1328
DPH_OK_41:
1329
        mov  a,DPL
1330
        jz   done41
1331
        mov  P1,#41
1332
        ljmp failed
1333
done41:
1334
 
1335
 
1336
;;;;;;;;;;;;;;;;;  INST 42 ;;;;;;;;;;;;;;;;;;;;;;
1337
 
1338
;; JB bit,rel (42)
1339
        mov  a,#16
1340
        jb   acc.3,fail42
1341
        jb   acc.4,done42
1342
 
1343
fail42:
1344
        mov  P1,#42
1345
        ljmp failed
1346
done42:
1347
 
1348
 
1349
;;;;;;;;;;;;;;;;;  INST 43 ;;;;;;;;;;;;;;;;;;;;;;
1350
 
1351
;; jbc bit,rel (43)
1352
        mov  a,#8
1353
        jbc  acc.3,CHECK_BIT_43
1354
        mov  P1,#43
1355
        ljmp failed
1356
CHECK_BIT_43:
1357
        jz   done43
1358
        mov  P1,#43
1359
        ljmp failed
1360
done43:
1361
 
1362
;;;;;;;;;;;;;;;;;  INST 44 ;;;;;;;;;;;;;;;;;;;;;;
1363
 
1364
;; jc rel (44)
1365
        clr  c
1366
        jc   fail44
1367
        cpl  c
1368
        jc   done44
1369
fail44:
1370
        mov  P1,#44
1371
        ljmp failed
1372
done44:
1373
 
1374
;;;;;;;;;;;;;;;;;  INST 45 ;;;;;;;;;;;;;;;;;;;;;;
1375
 
1376
;; jmp @a+dptr (45)
1377
        mov  a,#4
1378
        mov  dptr,#JMP_TBL
1379
        jmp  @a+dptr
1380
JMP_TBL:
1381
        ajmp JUMP_0
1382
        ajmp JUMP_2
1383
        ajmp JUMP_4
1384
        ajmp JUMP_6
1385
JUMP_0:
1386
JUMP_2:
1387
JUMP_6:
1388
        mov  P1,#43
1389
        ljmp failed
1390
JUMP_4:
1391
 
1392
;;;;;;;;;;;;;;;;;  INST 46 ;;;;;;;;;;;;;;;;;;;;;;
1393
 
1394
;; jnb bit,rel (46)
1395
        mov  a,#16
1396
        jnb  acc.4,fail42
1397
        jnb  acc.5,done46
1398
fail46:
1399
        mov  P1,#46
1400
        ljmp failed
1401
done46:
1402
 
1403
;;;;;;;;;;;;;;;;;  INST 47 ;;;;;;;;;;;;;;;;;;;;;;
1404
 
1405
;; jnc rel (47)
1406
        setb c
1407
        jnc  fail47
1408
        cpl  c
1409
        jnc  done47
1410
fail47:
1411
        mov  P1,#47
1412
        ljmp failed
1413
 
1414
 
1415
 
1416
done47:
1417
 
1418
;;;;;;;;;;;;;;;;;  INST 48 ;;;;;;;;;;;;;;;;;;;;;;
1419
 
1420
;; jnz rel (48)
1421
        mov  r1,#0
1422
        mov  a,0
1423
        inc  r1
1424
        jnz  fail48
1425
 
1426
        mov  a,#1
1427
        dec  r1
1428
        jnz  done48
1429
fail48:
1430
        mov  P1,#48
1431
        ljmp failed
1432
done48:
1433
 
1434
;;;;;;;;;;;;;;;;;  INST 49 ;;;;;;;;;;;;;;;;;;;;;;
1435
 
1436
;; jz rel (49)
1437
        mov  r1,1
1438
        mov  a,#2
1439
        dec  r1
1440
        jz   fail49
1441
 
1442
        mov  a,#0
1443
        inc  r1
1444
        jz   done49
1445
fail49:
1446
        mov  P1,#49
1447
        ljmp failed
1448
done49:
1449
 
1450
;;;;;;;;;;;;;;;;   INST 50 ;;;;;;;;;;;;;;;;;;;;;;
1451
 
1452
;; lcall addr11
1453
        mov  a,#85
1454
        lcall testret
1455
        inc  a
1456
        jc   fail50
1457
        subb a,#87
1458
        jz   done50
1459
fail50:
1460
        mov  P1,1
1461
        ljmp failed
1462
done50:
1463
;;;;;;;;;;;;;;;;;  INST 51 ;;;;;;;;;;;;;;;;;;;;;;
1464
 
1465
;; ljmp (51)
1466
        ljmp done51
1467
        mov  P1,#51
1468
        ljmp failed
1469
done51:
1470
 
1471
;;;;;;;;;;;;;;;;;  INST 52 ;;;;;;;;;;;;;;;;;;;;;;
1472
 
1473
;; mov a,Rn (52)
1474
        mov  r0,#10
1475
        clr  a
1476
        setb c
1477
        mov  a,r0
1478
        jnc  fail52
1479
  clr  c
1480
        subb a,#10
1481
        jz   done52
1482
fail52:
1483
        mov  P1,#52
1484
        ljmp failed
1485
done52:
1486
 
1487
 
1488
;;;;;;;;;;;;;;;;;  INST 53 ;;;;;;;;;;;;;;;;;;;;;;
1489
 
1490
;; mov a,direct (53)
1491
        mov  127,#10
1492
        clr  a
1493
        setb c
1494
        mov  a,127
1495
        jnc  fail53
1496
  clr  c
1497
        subb a,#10
1498
        jz   done53
1499
fail53:
1500
        mov  P1,#53
1501
        ljmp failed
1502
done53:
1503
 
1504
;;;;;;;;;;;;;;;;;  INST 54 ;;;;;;;;;;;;;;;;;;;;;;
1505
 
1506
;; mov a,@Ri (54)
1507
        mov  r0,#127
1508
        mov  127,#10
1509
        clr  a
1510
        setb c
1511
        mov  a,@r0
1512
        jnc  fail54
1513
  clr  c
1514
        subb a,#10
1515
        jz   done54
1516
fail54:
1517
        mov  P1,#54
1518
        ljmp failed
1519
done54:
1520
 
1521
 
1522
;;;;;;;;;;;;;;;;;  INST 55 ;;;;;;;;;;;;;;;;;;;;;;
1523
 
1524
;; mov a,#data (55)
1525
        clr  a
1526
        setb c
1527
        mov  a,#10
1528
        jnc  fail55
1529
  clr  c
1530
        subb a,#10
1531
        jz   done55
1532
fail55:
1533
        mov  P1,#55
1534
        ljmp failed
1535
done55:
1536
 
1537
;;;;;;;;;;;;;;;;;  INST 56 ;;;;;;;;;;;;;;;;;;;;;;
1538
 
1539
;; mov Rn,a (56)
1540
        mov  a,#10
1541
        mov  r0,#0
1542
        setb c
1543
        mov  r0,a
1544
        jnc  fail56
1545
        clr  a
1546
        mov  a,r0
1547
  clr  c
1548
        subb a,#10
1549
        jz   done56
1550
fail56:
1551
        mov  P1,#56
1552
        ljmp failed
1553
done56:
1554
 
1555
;;;;;;;;;;;;;;;;;  INST 57 ;;;;;;;;;;;;;;;;;;;;;;
1556
 
1557
;; mov Rn,direct (57)
1558
        mov  127,#10
1559
        mov  r0,#0
1560
        setb c
1561
        mov  r0,127
1562
        jnc  fail57
1563
        mov  a,r0
1564
  clr  c
1565
        subb a,#10
1566
        jz   done57
1567
fail57:
1568
        mov  P1,#57
1569
        ljmp failed
1570
done57:
1571
 
1572
;;;;;;;;;;;;;;;;;  INST 58 ;;;;;;;;;;;;;;;;;;;;;;
1573
 
1574
;; mov Rn,#data (58)
1575
        mov  r0,#0
1576
        clr  a
1577
        setb c
1578
        mov  r0,#10
1579
        jnc  fail58
1580
        mov  a,r0
1581
  clr  c
1582
        subb a,#10
1583
        jz   done58
1584
fail58:
1585
        mov  P1,#58
1586
        ljmp failed
1587
done58:
1588
 
1589
;;;;;;;;;;;;;;;;;  INST 59 ;;;;;;;;;;;;;;;;;;;;;;
1590
 
1591
;; mov direct,a (59)
1592
        mov  a,#10
1593
        clr  127
1594
        setb c
1595
        mov  127,a
1596
        jnc  fail59
1597
        clr  a
1598
        mov  a,127
1599
  clr  c
1600
        subb a,#10
1601
        jz   done59
1602
fail59:
1603
        mov  P1,#59
1604
        ljmp failed
1605
done59:
1606
 
1607
;;;;;;;;;;;;;;;;;  INST 60 ;;;;;;;;;;;;;;;;;;;;;;
1608
 
1609
;; mov direct,Rn (60)
1610
        mov  r0,#10
1611
        clr  127
1612
        setb c
1613
        clr  a
1614
        mov  127,r0
1615
        jnz  fail60
1616
        jnc  fail60
1617
        mov  a,127
1618
  clr  c
1619
        subb a,#10
1620
        jz   done60
1621
fail60:
1622
        mov  P1,#60
1623
        ljmp failed
1624
done60:
1625
 
1626
;;;;;;;;;;;;;;;;;  INST 61 ;;;;;;;;;;;;;;;;;;;;;;
1627
 
1628
;; mov direct,direct (61)
1629
        mov  127,#10
1630
        clr  126
1631
        clr  a
1632
        setb c
1633
        mov  126,127
1634
        jnz  fail61
1635
        jnc  fail61
1636
        mov  a,126
1637
  clr  c
1638
        subb a,#10
1639
        jz   done61
1640
fail61:
1641
        mov  P1,#61
1642
        ljmp failed
1643
done61:
1644
 
1645
;;;;;;;;;;;;;;;;;  INST 62 ;;;;;;;;;;;;;;;;;;;;;;
1646
 
1647
;; mov direct,@Ri (62)
1648
        mov  127,#10
1649
        mov  r0,#127
1650
        clr  126
1651
        clr  a
1652
        setb c
1653
        mov  126,@r0
1654
        jnz  fail62
1655
        jnc  fail62
1656
        mov  a,126
1657
  clr  c
1658
        subb a,#10
1659
        jz   done62
1660
fail62:
1661
        mov  P1,#62
1662
        ljmp failed
1663
done62:
1664
 
1665
;;;;;;;;;;;;;;;;;  INST 63 ;;;;;;;;;;;;;;;;;;;;;;
1666
 
1667
;; mov direct,#data (63)
1668
        clr  127
1669
        clr  a
1670
        setb c
1671
        mov  127,#10
1672
        jnz  fail63
1673
        jnc  fail63
1674
        mov  a,127
1675
  clr  c
1676
        subb a,#10
1677
        jz   done63
1678
fail63:
1679
        mov  P1,#63
1680
        ljmp failed
1681
done63:
1682
 
1683
;;;;;;;;;;;;;;;;;  INST 64 ;;;;;;;;;;;;;;;;;;;;;;
1684
 
1685
;; mov @Ri,a (64)
1686
        mov  a,#10
1687
        mov  r0,#127
1688
        mov  @r0,#0
1689
        setb c
1690
        mov  @r0,a
1691
        jnc  fail64
1692
        clr  a
1693
        mov  a,127
1694
  clr  c
1695
        subb a,#10
1696
        jz   done64
1697
fail64:
1698
        mov  P1,#64
1699
        ljmp failed
1700
done64:
1701
 
1702
;;;;;;;;;;;;;;;;;  INST 65 ;;;;;;;;;;;;;;;;;;;;;;
1703
 
1704
;; mov @Ri,direct (65)
1705
        mov  127,#10
1706
        mov  r0,#126
1707
        mov  @r0,#0
1708
        clr  a
1709
        setb c
1710
        mov  @r0,127
1711
        jnc  fail65
1712
        jnz  fail65
1713
        mov  a,126
1714
  clr  c
1715
        subb a,#10
1716
        jz   done65
1717
fail65:
1718
        mov  P1,#65
1719
        ljmp failed
1720
done65:
1721
 
1722
;;;;;;;;;;;;;;;;;  INST 66 ;;;;;;;;;;;;;;;;;;;;;;
1723
 
1724
;; mov @Ri,#data (66)
1725
        mov  r0,#127
1726
        mov  @r0,#0
1727
        clr  a
1728
        setb c
1729
        mov  @r0,#10
1730
        jnz  fail66
1731
        jnc  fail66
1732
        mov  a,127
1733
  clr  c
1734
        subb a,#10
1735
        jz   done66
1736
fail66:
1737
        mov  P1,#66
1738
        ljmp failed
1739
done66:
1740
 
1741
;;;;;;;;;;;;;;;;;  INST 67 ;;;;;;;;;;;;;;;;;;;;;;
1742
 
1743
;; mov c,bit (67)
1744
        mov  a,#1
1745
        clr  c
1746
        mov  c,acc.0
1747
        jnc  fail67
1748
        setb c
1749
        mov  c,acc.1
1750
        jnc  done67
1751
fail67:
1752
        mov  P1,#67
1753
        ljmp failed
1754
done67:
1755
 
1756
;;;;;;;;;;;;;;;;;  INST 68 ;;;;;;;;;;;;;;;;;;;;;;
1757
 
1758
;; mov bit,c (68)
1759
        setb c
1760
        mov  acc.0,c
1761
        cpl  c
1762
        subb a,#1
1763
        jz   done68
1764
        mov  P1,#68
1765
        ljmp failed
1766
done68:
1767
 
1768
;;;;;;;;;;;;;;;;;  INST 69 ;;;;;;;;;;;;;;;;;;;;;;
1769
 
1770
;; mov dptr,#data (69)
1771
        mov  dptr,#1234h
1772
        mov  a,DPH
1773
        subb a,#12h
1774
        jnz  fail69
1775
        mov  a,DPL
1776
        subb a,#34h
1777
        jz   done69
1778
fail69:
1779
        mov  P1,#69
1780
        ljmp failed
1781
done69:
1782
 
1783
 
1784
;;;;;;;;;;;;;;;;;  INST 70 ;;;;;;;;;;;;;;;;;;;;;;
1785
 
1786
;; movc a,@a+dptr (70)
1787
        clr  a
1788
        mov  dptr,#DB_TBL
1789
        movc a,@a+dptr
1790
        subb a,#66h
1791
        jnz  fail70
1792
        mov  a,#1
1793
        movc a,@a+dptr
1794
        subb a,#77h
1795
        jz   done70
1796
        jnz  fail70
1797
DB_TBL:
1798
        db   66h
1799
        db   77h
1800
fail70:
1801
        mov  P1,#70
1802
        ljmp failed
1803
done70:
1804
 
1805
 
1806
;;;;;;;;;;;;;;;;;  INST 71 ;;;;;;;;;;;;;;;;;;;;;;
1807
 
1808
;; movc a,@a+PC (71)
1809
        mov  a,#13
1810
        movc a,@a+pc
1811
        subb a,#66h
1812
        jnz  fail71
1813
        mov  a,#7
1814
        movc a,@a+pc
1815
        subb a,#77h
1816
        jz   done71
1817
        jnz  fail71
1818
        db   66h
1819
        db   77h
1820
fail71:
1821
        mov  P1,#71
1822
        ljmp failed
1823
done71:
1824
 
1825
 
1826
;;;;;;;;;;;;;;;;  INST 76 ;;;;;;;;;;;;;;;;;;;;;;;
1827
 
1828
;; mul AB (76)
1829
        mov  a,#80
1830
        mov  B,#160
1831
        mul  AB ; = 3200h
1832
        jc   fail76
1833
        jnz  fail76
1834
  mov  c, ov
1835
  jnc  fail76
1836
        mov  a,B
1837
        clr  c
1838
        subb a,#32h
1839
        jnz  fail76
1840
 
1841
        mov  a,#111
1842
        mov  B,#87
1843
        mul  AB ; = 25b9h
1844
        jc   fail76
1845
  mov  c, ov
1846
  jnc  fail76
1847
 
1848
        clr  c
1849
        subb a,#0b9h
1850
        jnz  fail76
1851
        mov  a,B
1852
        subb a,#25h
1853
        jnz  fail76
1854
 
1855
        mov  a,#11
1856
        mov  B,#17
1857
        mul  AB ; = 00BBh
1858
        jc   fail76
1859
  mov  c, ov
1860
  jc   fail76
1861
        clr  c
1862
        subb a,#0bbh
1863
        jnz  fail76
1864
        mov  a,B
1865
        jnz  fail76
1866
        ljmp done76
1867
 
1868
fail76:
1869
        mov  P1,#76
1870
        ljmp failed
1871
done76:
1872
 
1873
;;;;;;;;;;;;;;;;  INST 77 ;;;;;;;;;;;;;;;;;;;;;;;
1874
 
1875
;; nop
1876
        mov  a,#85
1877
        setb c
1878
        nop
1879
        jnc  fail77
1880
        subb a,#84
1881
        jnz  fail77
1882
 
1883
        mov  a,#123
1884
        clr  c
1885
        nop
1886
        jc   fail77
1887
        subb a,#123
1888
        jz   done77
1889
fail77:
1890
        mov  P1,#77
1891
        ljmp failed
1892
done77:
1893
 
1894
 
1895
;;;;;;;;;;;;;;;;  INST 78 ;;;;;;;;;;;;;;;;;;;;;;;
1896
 
1897
;; orl a,Rn (78)
1898
        mov  a,#90h
1899
        mov  r0,#09h
1900
        setb c
1901
        orl  a,r0
1902
        jnc  fail78
1903
        clr  c
1904
        subb a,#99h
1905
        jnz  fail78
1906
 
1907
        mov  a,#48h
1908
        mov  r0,#19h
1909
        clr  c
1910
        orl  a,r0
1911
        jc   fail78
1912
        subb a,#59h
1913
        jz   done78
1914
fail78:
1915
        mov  P1,#78
1916
        ljmp failed
1917
done78:
1918
 
1919
;;;;;;;;;;;;;;;;  INST 79 ;;;;;;;;;;;;;;;;;;;;;;;
1920
 
1921
;; orl a,direct (79)
1922
        mov  a,#90h
1923
        mov  127,#09h
1924
        setb c
1925
        orl  a,127
1926
        jnc  fail79
1927
        clr  c
1928
        subb a,#99h
1929
        jnz  fail79
1930
 
1931
        mov  a,#48h
1932
        mov  127,#19h
1933
        clr  c
1934
        orl  a,127
1935
        jc   fail79
1936
        subb a,#59h
1937
        jz   done79
1938
fail79:
1939
        mov  P1,#79
1940
        ljmp failed
1941
done79:
1942
 
1943
;;;;;;;;;;;;;;;;  INST 80 ;;;;;;;;;;;;;;;;;;;;;;;
1944
;; orl a,@Ri (80)
1945
        mov  a,#90h
1946
        mov  r1,#127
1947
        mov  @r1,#09h
1948
        setb c
1949
        orl  a,@r1
1950
        jnc  fail80
1951
        clr  c
1952
        subb a,#99h
1953
        jnz  fail80
1954
 
1955
        mov  a,#48h
1956
        mov  @r1,#19h
1957
        clr  c
1958
        orl  a,@r1
1959
        jc   fail80
1960
        subb a,#59h
1961
        jz   done80
1962
fail80:
1963
        mov  P1,#80
1964
        ljmp failed
1965
done80:
1966
 
1967
;;;;;;;;;;;;;;;;  INST 81 ;;;;;;;;;;;;;;;;;;;;;;;
1968
 
1969
;; orl a,#data (81)
1970
        mov  a,#90h
1971
        setb c
1972
        orl  a,#09h
1973
        jnc  fail81
1974
        clr  c
1975
        subb a,#99h
1976
        jnz  fail81
1977
 
1978
        mov  a,#48h
1979
        clr  c
1980
        orl  a,#19h
1981
        jc   fail81
1982
        subb a,#59h
1983
        jz   done81
1984
fail81:
1985
        mov  P1,#81
1986
        ljmp failed
1987
done81:
1988
 
1989
;;;;;;;;;;;;;;;;  INST 82 ;;;;;;;;;;;;;;;;;;;;;;;
1990
 
1991
;; orl direct,a (82)
1992
        mov  a,#90h
1993
        mov  127,#09h
1994
        setb c
1995
        orl  127,a
1996
        jnc  fail82
1997
        clr  c
1998
        subb a,#90h
1999
        jnz  fail82
2000
        mov  a,127
2001
        clr  c
2002
        subb a,#99h
2003
        jnz  fail82
2004
 
2005
        mov  a,#48h
2006
        mov  127,#19h
2007
        clr  c
2008
        orl  127,a
2009
        jc   fail82
2010
        subb a,#48h
2011
        jnz  fail82
2012
        mov  a,127
2013
        clr  c
2014
        subb a,#59h
2015
        jz   done82
2016
fail82:
2017
        mov  P1,#82
2018
        ljmp failed
2019
done82:
2020
 
2021
;;;;;;;;;;;;;;;;  INST 83 ;;;;;;;;;;;;;;;;;;;;;;;
2022
;; orl direct,#data (83)
2023
        mov  a,#91h
2024
        mov  127,#09h
2025
        setb c
2026
        orl  127,#90h
2027
        jnc  fail83
2028
        clr  c
2029
        subb a,#91h
2030
        jnz  fail83
2031
        mov  a,127
2032
        clr  c
2033
        subb a,#99h
2034
        jnz  fail83
2035
 
2036
        mov  a,#49h
2037
        mov  127,#19h
2038
        clr  c
2039
        orl  127,#48h
2040
        jc   fail83
2041
        subb a,#49h
2042
        jnz  fail83
2043
        mov  a,127
2044
        clr  c
2045
        subb a,#59h
2046
        jz   done83
2047
fail83:
2048
        mov  P1,#83
2049
        ljmp failed
2050
done83:
2051
 
2052
;;;;;;;;;;;;;;;;  INST 84 ;;;;;;;;;;;;;;;;;;;;;;;
2053
 
2054
;; orl c,bit (84)
2055
        mov  a,#1
2056
        orl  c,acc.1
2057
        jc   fail84
2058
        orl  c,acc.0
2059
        jnc  fail84
2060
        orl  c,acc.1
2061
        jc   done84
2062
fail84:
2063
        mov  P1,#84
2064
        ljmp failed
2065
done84:
2066
 
2067
;;;;;;;;;;;;;;;;  INST 85 ;;;;;;;;;;;;;;;;;;;;;;;
2068
 
2069
;; orl c,/bit (85)
2070
        mov  a,#1
2071
  clr  c
2072
        orl  c,/acc.0
2073
        jc   fail85
2074
        orl  c,/acc.1
2075
        jnc  fail85
2076
  setb c
2077
        orl  c,/acc.0
2078
        jc   done85
2079
fail85:
2080
        mov  P1,#85
2081
        ljmp failed
2082
done85:
2083
 
2084
;;;;;;;;;;;;;;;;  INST 86,87 ;;;;;;;;;;;;;;;;;;;;;;;
2085
 
2086
;; push direct (87)
2087
  clr  c
2088
        mov  dptr,#0123h
2089
        mov  127,#8
2090
        push DPL
2091
        push DPH
2092
        push 127
2093
        mov  a,8
2094
        subb a,#23h
2095
        jnz  fail87
2096
        mov  a,9
2097
        subb a,#1
2098
        jnz fail87
2099
        mov  a,10
2100
        subb a,#8
2101
        jz   done87
2102
fail87:
2103
        mov  P1,#87
2104
        ljmp failed
2105
done87:
2106
 
2107
;; pop direct (86)
2108
        pop  SP
2109
        pop  100
2110
        mov  a,100
2111
        subb a,#23h
2112
        jz   done88
2113
        mov  P1,#86
2114
        ljmp failed
2115
 
2116
done88:
2117
 
2118
;;;;;;;;;;;;;;;;  INST 90 ;;;;;;;;;;;;;;;;;;;;;;;
2119
 
2120
;; rl a (90)
2121
        mov  a,#129
2122
        rl   a
2123
        subb a,#3
2124
        jz   done90
2125
        mov  P1,#90
2126
        ljmp failed
2127
done90:
2128
 
2129
;;;;;;;;;;;;;;;;  INST 91 ;;;;;;;;;;;;;;;;;;;;;;;
2130
 
2131
;; rlc a (91)
2132
        setb c
2133
        mov  a,#129
2134
        rlc  a
2135
        subb a,#2       ;a(3)-c(1)-1
2136
        jnz  fail91
2137
        clr  c
2138
        mov  a,#129
2139
        rlc  a
2140
        subb a,#1       ;a(2)-c(1)-1
2141
        jz   done91
2142
fail91:
2143
        mov  P1,#91
2144
        ljmp failed
2145
done91:
2146
 
2147
;;;;;;;;;;;;;;;;  INST 92 ;;;;;;;;;;;;;;;;;;;;;;;
2148
 
2149
;; rr a (92)
2150
        mov  a,#129
2151
        rr   a
2152
        subb a,#192
2153
        jz   done92
2154
        mov  P1,#92
2155
        ljmp failed
2156
done92:
2157
 
2158
 
2159
;;;;;;;;;;;;;;;;  INST 93 ;;;;;;;;;;;;;;;;;;;;;;;
2160
 
2161
;; rrc a (93)
2162
        setb c
2163
        mov  a,#3
2164
        rrc  a
2165
        subb a,#128     ;a(129)-c(1)-0
2166
        jnz  fail93
2167
        clr  c
2168
        mov  a,#3
2169
        rrc  a
2170
        subb a,#0       ;a(1)-c(1)-0
2171
        jz   done93
2172
fail93:
2173
        mov  P1,#93
2174
        ljmp failed
2175
done93:
2176
 
2177
;;;;;;;;;;;;;;;;  INST 94 ;;;;;;;;;;;;;;;;;;;;;;;
2178
 
2179
;; setb c (94)
2180
        clr  c
2181
        setb c
2182
        mov  a,#1
2183
        subb a,#0       ;a(1)-c(1)-0
2184
        jz   done94
2185
        mov  P1,#94
2186
        ljmp failed
2187
done94:
2188
 
2189
;;;;;;;;;;;;;;;;  INST 95 ;;;;;;;;;;;;;;;;;;;;;;;
2190
 
2191
;; setb bit (95)
2192
        clr  a
2193
        setb acc.7
2194
        subb a,#128
2195
        jz   done95
2196
        mov  P1,#95
2197
        ljmp failed
2198
done95:
2199
 
2200
;;;;;;;;;;;;;;;;  INST 96 ;;;;;;;;;;;;;;;;;;;;;;;
2201
 
2202
;; sjmp (96)
2203
        sjmp done96
2204
        mov  P1,#96
2205
        ljmp failed
2206
done96:
2207
 
2208
;;;;;;;;;;;;;;;;  INST 97 ;;;;;;;;;;;;;;;;;;;;;;;
2209
 
2210
;; subb a,Rn (97)
2211
        setb c
2212
        mov  a,#100
2213
        mov  r0,#10
2214
        subb a,r0     ; 100 - 10 - 1 = 89
2215
        jc   fail97
2216
        add  a,#167    ; 167 + 89 = 0
2217
        jnz  fail97
2218
        clr  c
2219
        mov  a,#10
2220
        mov  r0,#100
2221
        subb a,r0     ; 10 - 100 - 0 = 166
2222
        jnc  fail97
2223
        add  a,#90     ; 166 + 90 = 0
2224
        jz   done97
2225
fail97:
2226
        mov  P1,#97
2227
        ljmp failed
2228
done97:
2229
 
2230
;;;;;;;;;;;;;;;;  INST 98 ;;;;;;;;;;;;;;;;;;;;;;;
2231
 
2232
;; subb a,direct (98)
2233
        setb c
2234
        mov  a,#100
2235
        mov  127,#10
2236
        subb a,127    ; 100 - 10 - 1 = 89
2237
        jc   fail98
2238
        add  a,#167    ; 167 + 89 = 0
2239
        jnz  fail98
2240
        clr  c
2241
        mov  a,#10
2242
        mov  127,#100
2243
        subb a,127    ; 10 - 100 - 0 = 166
2244
        jnc  fail98
2245
        add  a,#90     ; 166 + 90 = 0
2246
        jz   done98
2247
fail98:
2248
        mov  P1,#98
2249
        ljmp failed
2250
done98:
2251
 
2252
;;;;;;;;;;;;;;;;  INST 99 ;;;;;;;;;;;;;;;;;;;;;;;
2253
 
2254
;; subb a,@Ri (99)
2255
        setb c
2256
        mov  r0,#126
2257
        mov  a,#100
2258
        mov  @r0,#10
2259
        subb a,@r0    ; 100 - 10 - 1 = 89
2260
        jc   fail99
2261
        add  a,#167    ; 167 + 89 = 0
2262
        jnz  fail99
2263
        clr  c
2264
        mov  a,#10
2265
        mov  @r0,#100
2266
        subb a,@r0    ; 10 - 100 - 0 = 166
2267
        jnc  fail99
2268
        add  a,#90     ; 166 + 90 = 0
2269
        jz   done99
2270
fail99:
2271
        mov  P1,#99
2272
        ljmp failed
2273
done99:
2274
 
2275
 
2276
;;;;;;;;;;;;;;;; INST 100 ;;;;;;;;;;;;;;;;;;;;;;;
2277
 
2278
;; subb a,#data (100)
2279
        setb c
2280
        mov  a,#100
2281
        subb a,#10    ; 100 - 10 - 1 = 89
2282
        jc   fail100
2283
        add  a,#167    ; 167 + 89 = 0
2284
        jnz  fail100
2285
        clr  c
2286
        mov  a,#10
2287
        subb a,#100   ; 10 - 100 - 0 = 166
2288
        jnc  fail100
2289
        add  a,#90     ; 166 + 90 = 0
2290
        jz   done100
2291
fail100:
2292
        mov  P1,#100
2293
        ljmp failed
2294
done100:
2295
 
2296
;;;;;;;;;;;;;;;; INST 101 ;;;;;;;;;;;;;;;;;;;;;;;
2297
 
2298
;; swap a (101)
2299
        clr  c
2300
        mov  a,#23h
2301
        swap a
2302
        jc   fail101
2303
        subb a,#32h
2304
        jnz  fail101
2305
        mov  a,#0C3h
2306
        setb c
2307
        swap a
2308
        jnc  fail101
2309
  clr  c
2310
        subb a,#3Ch
2311
        jz   done101
2312
fail101:
2313
        mov  P1,#101
2314
        ljmp failed
2315
done101:
2316
 
2317
;;;;;;;;;;;;;;;; INST 102 ;;;;;;;;;;;;;;;;;;;;;;;
2318
 
2319
;; xch a,Rn (102)
2320
        mov  a,#10
2321
        mov  r0,#97
2322
        xch  a,r0
2323
        subb a,#97
2324
        jnz  fail102
2325
        mov  a,r0
2326
        subb a,#10
2327
        jz   done102
2328
fail102:
2329
        mov  P1,#102
2330
        ljmp failed
2331
done102:
2332
 
2333
;;;;;;;;;;;;;;;; INST 103 ;;;;;;;;;;;;;;;;;;;;;;;
2334
 
2335
;; xch a,direct (103)
2336
        mov  a,#10
2337
        mov  127,#99
2338
        xch  a,127
2339
        subb a,#99
2340
        jnz  fail103
2341
        mov  a,127
2342
        subb a,#10
2343
        jz   done103
2344
fail103:
2345
        mov  P1,#103
2346
        ljmp failed
2347
done103:
2348
 
2349
;;;;;;;;;;;;;;;; INST 104 ;;;;;;;;;;;;;;;;;;;;;;;
2350
 
2351
;; xch a,@Ri (104)
2352
        mov  a,#10
2353
        mov  r0,#127
2354
        mov  127,#99
2355
        xch  a,@r0
2356
        subb a,#99
2357
        jnz  fail104
2358
        mov  a,127
2359
        subb a,#10
2360
        jz   done104
2361
fail104:
2362
        mov  P1,#104
2363
        ljmp failed
2364
done104:
2365
 
2366
;;;;;;;;;;;;;;;; INST 105 ;;;;;;;;;;;;;;;;;;;;;;;
2367
 
2368
;; xchd a,@Ri (105)
2369
        mov  a,#44h
2370
        mov  r0,#127
2371
        mov  127,#55h
2372
        xchd a,@r0
2373
        subb a,#45h
2374
        jnz  fail105
2375
        mov  a,127
2376
        subb a,#54h
2377
        jz   done105
2378
fail105:
2379
        mov  P1,#105
2380
        ljmp failed
2381
done105:
2382
 
2383
 
2384
;;;;;;;;;;;;;;;; INST 106 ;;;;;;;;;;;;;;;;;;;;;;;
2385
 
2386
;; xrl a,Rn (106)
2387
        mov  a,#35h
2388
        mov  r0,#0C3h
2389
        xrl  a,r0
2390
        subb a,#0F6h
2391
        jz   done106
2392
        mov  P1,#106
2393
        ljmp failed
2394
done106:
2395
 
2396
;;;;;;;;;;;;;;;; INST 107 ;;;;;;;;;;;;;;;;;;;;;;;
2397
 
2398
;; xrl a,direct (107)
2399
        mov  a,#0C3h
2400
        mov  127,#35h
2401
        xrl  a,127
2402
        subb a,#0F6h
2403
        jz   done107
2404
        mov  P1,#107
2405
        ljmp failed
2406
done107:
2407
 
2408
 
2409
;;;;;;;;;;;;;;;; INST 108 ;;;;;;;;;;;;;;;;;;;;;;;
2410
 
2411
;; xrl a,@Ri (108)
2412
        mov  a,#35h
2413
        mov  r0,#127
2414
        mov  127,#0C3h
2415
        xrl  a,@r0
2416
        subb a,#0F6h
2417
        jz   done108
2418
        mov  P1,#108
2419
        ljmp failed
2420
done108:
2421
 
2422
 
2423
;;;;;;;;;;;;;;;; INST 109 ;;;;;;;;;;;;;;;;;;;;;;;
2424
 
2425
;; xrl a,#data (109)
2426
        mov  a,#35h
2427
        xrl  a,#0C3h
2428
        subb a,#0F6h
2429
        jz   done109
2430
        mov  P1,#109
2431
        ljmp failed
2432
done109:
2433
 
2434
 
2435
;;;;;;;;;;;;;;;; INST 110 ;;;;;;;;;;;;;;;;;;;;;;;
2436
 
2437
;; xrl direct,a (110)
2438
        mov  a,#35h
2439
        mov  127,#0C3h
2440
        xrl  127,a
2441
        clr  a
2442
        mov  a,127
2443
        subb a,#0F6h
2444
        jz   done110
2445
        mov  P1,#110
2446
        ljmp failed
2447
done110:
2448
 
2449
 
2450
;;;;;;;;;;;;;;;; INST 111 ;;;;;;;;;;;;;;;;;;;;;;;
2451
 
2452
;; xrl direct,#data (111)
2453
        mov  127,#35h
2454
        xrl  127,#0C3h
2455
        mov  a,127
2456
        subb a,#0F6h
2457
        jz   done111
2458
        mov  P1,#111
2459
        ljmp failed
2460
done111:
2461
 
2462
 
2463
;;;;;;;;;;;;;;;;;  DONE    ;;;;;;;;;;;;;;;;;;;;;;
2464
 
2465
        mov  P1,#127    ; All instructions passed
2466
 
2467
 
2468
failed:
2469
  nop;
2470
  nop;
2471
  sjmp failed;
2472
 
2473 131 simont
end

powered by: WebSVN 2.1.0

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