OSDN Git Service

la der de der
[fast-forth/master.git] / MSP430-FORTH / SD_430FR5994 / TESTXASM.4TH
1
2 ; -----------------------------------------------------------------------
3 ; TESTXASM.4th for MSP_EXP430FR5994
4 ; -----------------------------------------------------------------------
5
6     CODE ABORT_TEST_ASMX
7     SUB #2,R15
8     MOV R14,0(R15)
9     MOV &$180A,R14
10     SUB #401,R14
11     COLON
12     $0D EMIT
13     ABORT" FastForth V4.1 please!"
14     RST_RET
15     ;
16
17     ABORT_TEST_ASMX
18
19     MARKER {TEST_ASMX}
20
21     [UNDEFINED] +
22     [IF]
23     CODE +
24     ADD @R15+,R14
25     MOV @R13+,R0
26     ENDCODE
27     [THEN]
28
29     [UNDEFINED] -
30     [IF]
31     CODE -
32     SUB @R15+,R14
33     XOR #-1,R14
34     ADD #1,R14
35     MOV @R13+,R0
36     ENDCODE
37     [THEN]
38
39     [UNDEFINED] MAX
40     [IF]
41     CODE MAX
42     CMP @R15,R14
43     S<  ?GOTO FW1
44 BW1 ADD #2,R15
45     MOV @R13+,R0
46     ENDCODE
47
48     CODE MIN
49     CMP @R15,R14
50     S<  ?GOTO BW1
51 FW1 MOV @R15+,R14
52     MOV @R13+,R0
53     ENDCODE
54     [THEN]
55
56     [UNDEFINED] C@
57     [IF]
58     CODE C@
59     MOV.B @R14,R14
60     MOV @R13+,R0
61     ENDCODE
62     [THEN]
63
64     [UNDEFINED] CONSTANT
65     [IF]
66     : CONSTANT
67     CREATE
68     HI2LO
69     MOV R14,-2(R10)
70     MOV @R15+,R14
71     MOV @R1+,R13
72     MOV @R13+,R0
73     ENDCODE
74     [THEN]
75
76     [UNDEFINED] SPACE
77     [IF]
78     : SPACE
79     $20 EMIT ;
80     [THEN]
81
82     [UNDEFINED] SPACES
83     [IF]
84     CODE SPACES
85     CMP #0,R14
86     0<> IF
87         PUSH R13
88         BEGIN
89             LO2HI
90             $20 EMIT
91             HI2LO
92             SUB #2,R13
93             SUB #1,R14
94         0= UNTIL
95         MOV @R1+,R13
96     THEN
97     MOV @R15+,R14
98     MOV @R13+,R0
99     ENDCODE
100     [THEN]
101
102     [UNDEFINED] OVER
103     [IF]
104     CODE OVER
105     MOV R14,-2(R15)
106     MOV @R15,R14
107     SUB #2,R15
108     MOV @R13+,R0
109     ENDCODE
110     [THEN]
111
112     [UNDEFINED] SWAP
113     [IF]
114     CODE SWAP
115     MOV @R15,R10
116     MOV R14,0(R15)
117     MOV R10,R14
118     MOV @R13+,R0
119     ENDCODE
120     [THEN]
121
122     [UNDEFINED] >R
123     [IF]
124     CODE >R
125     PUSH R14
126     MOV @R15+,R14
127     MOV @R13+,R0
128     ENDCODE
129     [THEN]
130
131     [UNDEFINED] R>
132     [IF]
133     CODE R>
134     SUB #2,R15
135     MOV R14,0(R15)
136     MOV @R1+,R14
137     MOV @R13+,R0
138     ENDCODE
139     [THEN]
140
141     [UNDEFINED] U.R
142     [IF]
143     : U.R
144     >R  <# 0 # #S #>
145     R> OVER - 0 MAX SPACES TYPE
146     ;
147     [THEN]
148
149     [UNDEFINED] DO
150     [IF]
151
152     HDNCODE XDO
153     MOV #$8000,R9
154     SUB @R15+,R9
155     MOV R14,R8
156     ADD R9,R8
157     PUSHM #2,R9
158     MOV @R15+,R14
159     MOV @R13+,R0
160     ENDCODE
161
162     CODE DO
163     SUB #2,R15
164     MOV R14,0(R15)
165     ADD #2,&$1DBE
166     MOV &$1DBE,R14
167     MOV #XDO,-2(R14)
168     ADD #2,&$1C00
169     MOV &$1C00,R10
170     MOV #0,0(R10)
171     MOV @R13+,R0
172     ENDCODE IMMEDIATE
173
174     HDNCODE XLOOP
175     ADD #1,0(R1)
176 BW1 BIT #$100,R2
177     0= IF
178         MOV @R13,R13
179         MOV @R13+,R0
180     THEN
181     ADD #4,R1
182     ADD #2,R13
183     MOV @R13+,R0
184     ENDCODE
185
186     CODE LOOP
187     MOV #XLOOP,R9
188 BW2 ADD #4,&$1DBE
189     MOV &$1DBE,R10
190     MOV R9,-4(R10)
191     MOV R14,-2(R10)
192     BEGIN
193         MOV &$1C00,R14
194         SUB #2,&$1C00
195         MOV @R14,R14
196         CMP #0,R14
197     0<> WHILE
198         MOV R10,0(R14)
199     REPEAT
200     MOV @R15+,R14
201     MOV @R13+,R0
202     ENDCODE IMMEDIATE
203
204     HDNCODE XPLOO
205     ADD R14,0(R1)
206     MOV @R15+,R14
207     GOTO BW1
208     ENDCODE
209
210     CODE +LOOP
211     MOV #XPLOO,R9
212     GOTO BW2
213     ENDCODE IMMEDIATE
214     [THEN]
215
216     [UNDEFINED] I
217     [IF]
218     CODE I
219     SUB #2,R15
220     MOV R14,0(R15)
221     MOV @R1,R14
222     SUB 2(R1),R14
223     MOV @R13+,R0
224     ENDCODE
225     [THEN]
226
227     [UNDEFINED] CR
228     [IF]
229     CODE CR
230     MOV #[THEN],R0
231     ENDCODE
232
233     :NONAME
234     $0D EMIT $0A EMIT
235     ; IS CR
236     [THEN]
237
238     [UNDEFINED] BASE
239     [IF]
240     $1DB6  CONSTANT BASE
241     [THEN]
242
243     [UNDEFINED] DUMP
244     [IF]
245     CODE DUMP
246     PUSH R13
247     PUSH &BASE
248     MOV #$10,&BASE
249     ADD @R15,R14
250     LO2HI
251     SWAP
252     DO  CR
253         I 4 U.R SPACE
254         I 8 + I
255         DO I C@ 3 U.R LOOP
256         SPACE
257         I $10 + I 8 +
258         DO I C@ 3 U.R LOOP
259         SPACE SPACE
260         I $10 + I
261         DO I C@ $7E MIN $20 MAX EMIT LOOP
262     $10 +LOOP
263     R> BASE !
264     ;
265     [THEN]
266
267     [UNDEFINED] HERE
268     [IF]
269     CODE HERE
270     MOV #BEGIN,R0
271     ENDCODE
272     [THEN]
273
274     RST_SET
275
276
277     ECHO
278
279 ; -----------------------------------------------------------------------------
280 ; DTCforthMSP430FR5xxx ASSEMBLER: CALLA (without extended word)
281 ; -----------------------------------------------------------------------------
282 ; absolute and immediate instructs. must be written as $x.xxxx (DOUBLE numbers)
283 ; indexed instructions must be written as $xxxx(REG) (single numbers)
284 ; -----------------------------------------------------------------------------
285
286 HERE
287 CODE TT
288 CALLA R10
289 ENDCODE
290 HERE OVER - DUMP
291 ; you should see:       4A 13
292 RST_RET
293
294 HERE
295 CODE TT
296 CALLA $3456(R10)
297 ENDCODE
298 HERE OVER - DUMP
299 ; you should see:       5A 13  56 34
300 RST_RET
301
302 HERE
303 CODE TT
304 CALLA 0(R15)
305 ENDCODE
306 HERE OVER - DUMP
307 ; you should see:       5F 13  00 00
308 RST_RET
309
310 HERE
311 CODE TT
312 CALLA @R10
313 ENDCODE
314 HERE OVER - DUMP
315 ; you should see:       6A 13
316 RST_RET
317
318 HERE
319 CODE TT
320 CALLA @R15
321 ENDCODE
322 HERE OVER - DUMP
323 ; you should see:       6F 13
324 RST_RET
325
326 HERE
327 CODE TT
328 CALLA @R10+
329 ENDCODE
330 HERE OVER - DUMP
331 ; you should see:       7A 13
332 RST_RET
333
334 HERE
335 CODE TT
336 CALLA &$2.3456
337 ENDCODE
338 HERE OVER - DUMP
339 ; you should see:       82 13  56 34
340 RST_RET
341
342 HERE
343 CODE TT
344 CALLA #$5.6789
345 ENDCODE
346 HERE OVER - DUMP
347 ; you should see:       B5 13  89 67
348 RST_RET
349
350 ; -----------------------------------------------------------------------------
351 ; DTCforthMSP430FR5xxx ASSEMBLER, OPCODES IV : Adda|Cmpa|Mova|Suba
352 ; -----------------------------------------------------------------------------
353 ; absolute and immediate instructs. must be written as $x.xxxx (DOUBLE numbers)
354 ; indexed instructions must be written as $xxxx(REG) (single numbers)
355 ; -----------------------------------------------------------------------------
356
357 HERE
358 CODE TT
359 MOVA @R10,R11
360 ENDCODE
361 HERE OVER - DUMP
362 ; you should see:       0B 0A
363 RST_RET
364
365 HERE
366 CODE TT
367 MOVA @R11+,R10
368 ENDCODE
369 HERE OVER - DUMP
370 ; you should see:       1A 0B
371 RST_RET
372
373 HERE
374 CODE TT
375 MOVA &$1.2345,R11
376 ENDCODE
377 HERE OVER - DUMP
378 ; you should see:       2B 01  45 23
379 RST_RET
380
381 HERE
382 CODE TT
383 MOVA 2(R15),R14
384 ENDCODE
385 HERE OVER - DUMP
386 ; you should see:       3E 0F  02 00
387 RST_RET
388
389 HERE
390 CODE TT
391 MOVA $1234(R10),R12
392 ENDCODE
393 HERE OVER - DUMP
394 ; you should see:       3C 0A  34 12
395 RST_RET
396
397 HERE
398 CODE TT
399 MOVA R11,&$1.2345
400 ENDCODE
401 HERE OVER - DUMP
402 ; you should see:       61 0B  45 23
403 RST_RET
404
405 HERE
406 CODE TT
407 MOVA R14,0(R15)
408 ENDCODE
409 HERE OVER - DUMP
410 ; you should see:       7F 0E  00 00
411 RST_RET
412
413 HERE
414 CODE TT
415 MOVA R12,$1234(R10)
416 ENDCODE
417 HERE OVER - DUMP
418 ; you should see:       7A 0C  34 12
419 RST_RET
420
421 HERE
422 CODE TT
423 MOVA #$.1,R12
424 ENDCODE
425 HERE OVER - DUMP
426 ; you should see:       8C 00  01 00
427 RST_RET
428
429 HERE
430 CODE TT
431 CMPA #$1.2345,R12
432 ENDCODE
433 HERE OVER - DUMP
434 ; you should see:       9C 01  45 23
435 RST_RET
436
437 HERE
438 CODE TT
439 ADDA #$2.3456,R12
440 ENDCODE
441 HERE OVER - DUMP
442 ; you should see:       AC 02  56 34
443 RST_RET
444
445 HERE
446 CODE TT
447 SUBA #$3.4567,R12
448 ENDCODE
449 HERE OVER - DUMP
450 ; you should see:       BC 03  67 45
451 RST_RET
452
453 HERE
454 CODE TT
455 MOVA R10,R11
456 ENDCODE
457 HERE OVER - DUMP
458 ; you should see:       CB 0A
459 RST_RET
460
461 HERE
462 CODE TT
463 CMPA R10,R11
464 ENDCODE
465 HERE OVER - DUMP
466 ; you should see:       DB 0A
467 RST_RET
468
469 HERE
470 CODE TT
471 ADDA R10,R11
472 ENDCODE
473 HERE OVER - DUMP
474 ; you should see:       EB 0A
475 RST_RET
476
477 HERE
478 CODE TT
479 SUBA R10,R11
480 ENDCODE
481 HERE OVER - DUMP
482 ; you should see:       FB 0A
483 RST_RET
484
485 ; -----------------------------------------------------------------------------
486 ; DTCforthMSP430FR5xxx ASSEMBLER, OPCODES V extended double operand
487 ; -----------------------------------------------------------------------------
488 ; absolute and immediate instructs. must be written as $x.xxxx (DOUBLE numbers)
489 ; indexed instructions must be written as $.xxxx(REG) (DOUBLE numbers)
490 ; -----------------------------------------------------------------------------
491
492 HERE
493 CODE TT
494 MOV R12,R11
495 MOVX R12,R11
496 ENDCODE
497 HERE OVER - DUMP
498 ; you should see:       0B 4C  40 18 0B 4C
499 RST_RET
500
501 HERE
502 CODE TT
503 ADD R11,R11
504 ADDX.A R11,R11
505 ENDCODE
506 HERE OVER - DUMP
507 ; you should see:       0B 5B  00 18 4B 5B
508 RST_RET
509
510 HERE
511 CODE TT
512 ADD R11,R11
513 RPT R9
514 ADDX.A R11,R11
515 ENDCODE
516 HERE OVER - DUMP
517 ; you should see:       0B 5B  89 18 4B 5B
518 RST_RET
519
520 HERE
521 CODE TT
522 ADD R11,R11
523 RPT #8
524 ADDX.A R11,R11
525 ENDCODE
526 HERE OVER - DUMP
527 ; you should see:       0B 5B  07 18 4B 5B
528 RST_RET
529
530 HERE
531 CODE TT
532 ADDC #$9876,R11
533 ADDCX.A #$5.9876,R11
534 ENDCODE
535 HERE OVER - DUMP
536 ; you should see:       3B 60  76 98 80 1A 7B 60 76 98
537 RST_RET
538
539 HERE
540 CODE TT
541 ADDC &$9876,R11
542 ADDCX.A &$5.9876,R11
543 ENDCODE
544 HERE OVER - DUMP
545 ; you should see:       1B 62  76 98 80 1A 5B 62 76 98
546 RST_RET
547
548 HERE
549 CODE TT
550 XOR.B $5432(R12),R11
551 XORX.B $6.5432(R12),R11
552 ENDCODE
553 HERE OVER - DUMP
554 ; you should see:       5B EC  32 54 46 18 5B EC 32 54
555 RST_RET
556
557 HERE
558 CODE TT
559 SUBC R11,$5432(R12)
560 SUBCX.A R11,$6.5432(R12)
561 ENDCODE
562 HERE OVER - DUMP
563 ; you should see:       8C 7B  32 54 06 18 CC 7B 32 54
564 RST_RET
565
566 HERE
567 CODE TT
568 XOR.B R11,$5432(R12)
569 XORX.B R11,$6.5432(R12)
570 ENDCODE
571 HERE OVER - DUMP
572 ; you should see:       CC EB  32 54 46 18 CC EB 32 54
573 RST_RET
574
575 ; -----------------------------------------------------------------------------
576 ; DTCforthMSP430FR5xxx ASSEMBLER, OPCODES VI extended single operand
577 ; -----------------------------------------------------------------------------
578 ; absolute and immediate instructs. must be written as $x.xxxx (DOUBLE numbers)
579 ; indexed instructions must be written as $.xxxx(REG) (DOUBLE numbers)
580 ; -----------------------------------------------------------------------------
581
582 HERE
583 CODE TT
584 RRA R9
585 RRAX R9
586 ENDCODE
587 HERE OVER - DUMP
588 ; you should see:       09 11  40 18 09 11
589 RST_RET
590
591 HERE
592 CODE TT
593 RRC @R9
594 RRCX.A @R9
595 ENDCODE
596 HERE OVER - DUMP
597 ; you should see:       29 10  00 18 69 10
598 RST_RET
599
600 HERE
601 CODE TT
602 RRC @R12
603 RRCX.A @R12
604 ENDCODE
605 HERE OVER - DUMP
606 ; you should see:       2C 10  00 18 6C 10
607 RST_RET
608
609 HERE
610 CODE TT
611 RRC @R9+
612 RRUX.A @R9+
613 ENDCODE
614 HERE OVER - DUMP
615 ; you should see:       39 10  00 19 79 10
616 RST_RET
617
618 HERE
619 CODE TT
620 RRC R11
621 RPT #9
622 RRUX.A R11
623 ENDCODE
624 HERE OVER - DUMP
625 ; you should see:       0B 10  08 19 4B 10
626 RST_RET
627
628 HERE
629 CODE TT
630 RRC R11
631 RPT R9
632 RRUX.A R11
633 ENDCODE
634 HERE OVER - DUMP
635 ; you should see:       0B 10  89 19 4B 10
636 RST_RET
637
638 HERE
639 CODE TT
640 PUSH #$2345
641 PUSHX #$0.2345
642 ENDCODE
643 HERE OVER - DUMP
644 ; you should see:       30 12  45 23 40 18 30 12 45 23
645 RST_RET
646
647 HERE
648 CODE TT
649 PUSH &$5678
650 PUSHX.A &$4.5678
651 ENDCODE
652 HERE OVER - DUMP
653 ; you should see:       12 12  78 56 00 1A 52 12 78 56
654 RST_RET
655
656 HERE
657 CODE TT
658 PUSH.B &$33
659 PUSHX.B &$.33
660 ENDCODE
661 HERE OVER - DUMP
662 ; you should see:       52 12  33 00 40 18 52 12 33 00
663 RST_RET
664
665 HERE
666 CODE TT
667 PUSH.B $3344(R11)
668 PUSHX.B $.3344(R11)
669 ENDCODE
670 HERE OVER - DUMP
671 ; you should see:       5B 12  44 33 40 18 5B 12 44 33
672 RST_RET
673
674     [UNDEFINED] BASE
675     [IF]
676     ' # 2 +  CONSTANT BASE
677     [THEN]
678
679
680
681 : %.
682 BASE @ %10 BASE ! SWAP 8 EMIT . BASE !
683 RST_RET
684 ;
685
686 : %U.
687 BASE @ %10 BASE ! SWAP 8 EMIT U. BASE !
688 RST_RET
689 ;
690
691 RST_SET
692
693 ; ================
694 ; RRUX test
695 ; ================
696
697
698 CODE RRUX_T
699 MOVX #$.F0F0,R8
700 RRUX R8
701 SUB #2,R15
702 MOV R14,0(R15)
703 MOV R8,R14
704 MOV #%.,R0
705 ENDCODE
706
707 RRUX_T ;            %
708 ; you should see:   %111100001111000
709
710 ; ================
711 ; RRUX repeat test
712 ; ================
713
714
715 CODE RRUX_T
716 MOV #$F0F0,R8
717 RPT #1
718 RRUX R8
719 SUB #2,R15
720 MOV R14,0(R15)
721 MOV R8,R14
722 MOV #%.,R0
723 ENDCODE
724
725 RRUX_T ;            %
726 ; you should see:   %111100001111000
727
728 CODE RRUX_T
729 MOV #$F0F0,R8
730 RPT #4
731 RRUX R8
732 SUB #2,R15
733 MOV R14,0(R15)
734 MOV R8,R14
735 MOV #%.,R0
736 ENDCODE
737
738 RRUX_T ; -->        %
739 ; you should see:   %111100001111
740
741 CODE RRUX_T
742 MOV #$F0F0,R8
743 RPT #8
744 RRUX R8
745 SUB #2,R15
746 MOV R14,0(R15)
747 MOV R8,R14
748 MOV #%.,R0
749 ENDCODE
750
751 RRUX_T ;            %
752 ; you should see:   %11110000
753
754 ; ================
755 ; RRCX test
756 ; ================
757
758 CODE RRCX_T
759 MOV #$8000,R8
760 BIC #1,R2
761 RRCX R8
762 SUB #2,R15
763 MOV R14,0(R15)
764 MOV R8,R14
765 MOV #%U.,R0
766 ENDCODE
767
768 RRCX_T ;            %
769 ; you should see:   %100000000000000
770
771 ; ================
772 ; RRCX repeat test
773 ; ================
774
775 CODE RRCX_T
776 MOV #$8000,R8
777 BIC #1,R2
778 RPT #1
779 RRCX R8
780 SUB #2,R15
781 MOV R14,0(R15)
782 MOV R8,R14
783 MOV #%U.,R0
784 ENDCODE
785
786 RRCX_T ;            %
787 ; you should see:   %100000000000000
788
789 CODE RRCX_T
790 MOV #$8000,R8
791 BIC #1,R2
792 RPT #8
793 RRCX R8
794 SUB #2,R15
795 MOV R14,0(R15)
796 MOV R8,R14
797 MOV #%U.,R0
798 ENDCODE
799
800 RRCX_T ;            %
801 ; you should see:   %10000000
802
803 ; ================
804 ; RRAX test
805 ; ================
806
807 CODE RRAX_T
808 MOV #$8000,R8
809 RRAX R8
810 SUB #2,R15
811 MOV R14,0(R15)
812 MOV R8,R14
813 MOV #%.,R0
814 ENDCODE
815
816 RRAX_T ;            %
817 ; you should see:   %-100000000000000
818
819 ; ================
820 ; RRAX repeat test
821 ; ================
822
823
824 CODE RRAX_T
825 MOV #$8000,R8
826 RPT #1
827 RRAX R8
828 SUB #2,R15
829 MOV R14,0(R15)
830 MOV R8,R14
831 MOV #%.,R0
832 ENDCODE
833
834 RRAX_T ;            %
835 ; you should see:   %-100000000000000
836
837 CODE RRAX_T
838 MOV #$8000,R8
839 RPT #2
840 RRAX R8
841 SUB #2,R15
842 MOV R14,0(R15)
843 MOV R8,R14
844 MOV #%.,R0
845 ENDCODE
846
847 RRAX_T ;            %
848 ; you should see:   %-10000000000000
849
850 CODE RRAX_T
851 MOV #$8000,R8
852 RPT #3
853 RRAX R8
854 SUB #2,R15
855 MOV R14,0(R15)
856 MOV R8,R14
857 MOV #%.,R0
858 ENDCODE
859
860 RRAX_T ;            %
861 ; you should see:   %-1000000000000
862
863 CODE RRAX_T
864 MOV #$8000,R8
865 RPT #7
866 RRAX R8
867 SUB #2,R15
868 MOV R14,0(R15)
869 MOV R8,R14
870 MOV #%.,R0
871 ENDCODE
872
873 RRAX_T ;            %
874 ; you should see:   %-100000000
875
876 ; ================
877 ; RLAX test
878 ; ================
879
880
881 CODE RLAX_T
882 MOV #-1,R8
883 ADDX R8,R8
884 SUB #2,R15
885 MOV R14,0(R15)
886 MOV R8,R14
887 MOV #.,R0
888 ENDCODE
889
890 RLAX_T ; you should see -2 -->
891
892 ; ================
893 ; RLAX repeat test
894 ; ================
895
896
897 CODE RLAX_T
898 MOV #-1,R8
899 RPT #1
900 ADDX R8,R8
901 SUB #2,R15
902 MOV R14,0(R15)
903 MOV R8,R14
904 MOV #.,R0
905 ENDCODE
906
907 RLAX_T ; you should see -2 -->
908
909 CODE RLAX_T
910 MOV #-1,R8
911 RPT #2
912 ADDX R8,R8
913 SUB #2,R15
914 MOV R14,0(R15)
915 MOV R8,R14
916 MOV #.,R0
917 ENDCODE
918
919 RLAX_T ; you should see -4 -->
920
921 CODE RLAX_T
922 MOV #-1,R8
923 RPT #3
924 ADDX R8,R8
925 SUB #2,R15
926 MOV R14,0(R15)
927 MOV R8,R14
928 MOV #.,R0
929 ENDCODE
930
931 RLAX_T ; you should see -8 -->
932
933 CODE RLAX_T
934 MOV #-1,R8
935 RPT #8
936 ADDX R8,R8
937 SUB #2,R15
938 MOV R14,0(R15)
939 MOV R8,R14
940 MOV #.,R0
941 ENDCODE
942
943 RLAX_T ; you should see -256 -->
944
945 ; ================
946 ; ADDX test
947 ; ================
948
949
950 CODE ADDX_T
951 MOV #0,R8
952 MOV #-1,R9
953 ADDX R9,R8
954 SUB #2,R15
955 MOV R14,0(R15)
956 MOV R8,R14
957 MOV #.,R0
958 ENDCODE
959
960 ADDX_T ; you should see -1 -->
961
962 ; ================
963 ; ADDX repeat test
964 ; ================
965
966
967 CODE ADDX_T
968 MOV #0,R8
969 MOV #-1,R9
970 RPT #1
971 ADDX R9,R8
972 SUB #2,R15
973 MOV R14,0(R15)
974 MOV R8,R14
975 MOV #.,R0
976 ENDCODE
977
978 ADDX_T ; you should see -1 -->
979
980 CODE ADDX_T
981 MOV #0,R8
982 MOV #-1,R9
983 RPT #2
984 ADDX R9,R8
985 SUB #2,R15
986 MOV R14,0(R15)
987 MOV R8,R14
988 MOV #.,R0
989 ENDCODE
990
991 ADDX_T ; you should see -2 -->
992
993 CODE ADDX_T
994 MOV #0,R8
995 MOV #-1,R9
996 RPT #8
997 ADDX R9,R8
998 SUB #2,R15
999 MOV R14,0(R15)
1000 MOV R8,R14
1001 MOV #.,R0
1002 ENDCODE
1003
1004 ADDX_T ; you should see -8 -->
1005
1006 ; ================
1007 ; SUBX test
1008 ; ================
1009
1010
1011 CODE SUBX_T
1012 MOV #0,R8
1013 MOV #-1,R9
1014 SUBX R9,R8
1015 SUB #2,R15
1016 MOV R14,0(R15)
1017 MOV R8,R14
1018 MOV #.,R0
1019 ENDCODE
1020
1021 SUBX_T ; you should see 1 -->
1022
1023 ; ================
1024 ; SUBX repeat test
1025 ; ================
1026
1027
1028 CODE SUBX_T
1029 MOV #0,R8
1030 MOV #-1,R9
1031 RPT #1
1032 SUBX R9,R8
1033 SUB #2,R15
1034 MOV R14,0(R15)
1035 MOV R8,R14
1036 MOV #.,R0
1037 ENDCODE
1038
1039 SUBX_T ; you should see 1 -->
1040
1041 CODE SUBX_T
1042 MOV #0,R8
1043 MOV #-1,R9
1044 RPT #2
1045 SUBX R9,R8
1046 SUB #2,R15
1047 MOV R14,0(R15)
1048 MOV R8,R14
1049 MOV #.,R0
1050 ENDCODE
1051
1052 SUBX_T ; you should see 2 -->
1053
1054 CODE SUBX_T
1055 MOV #0,R8
1056 MOV #-1,R9
1057 RPT #8
1058 SUBX R9,R8
1059 SUB #2,R15
1060 MOV R14,0(R15)
1061 MOV R8,R14
1062 MOV #.,R0
1063 ENDCODE
1064
1065 SUBX_T ; you should see 8 -->
1066
1067 CODE SUBX_T
1068 MOV #15,R10
1069 MOV #0,R8
1070 MOV #-1,R9
1071 RPT R10
1072 SUBX R9,R8
1073 SUB #2,R15
1074 MOV R14,0(R15)
1075 MOV R8,R14
1076 MOV #.,R0
1077 ENDCODE
1078
1079 SUBX_T ; you should see 16 -->
1080
1081 CODE SUBX_T
1082 MOV #32,R10
1083 MOV #0,R8
1084 MOV #-1,R9
1085 RPT R10
1086 SUBX R9,R8
1087 SUB #2,R15
1088 MOV R14,0(R15)
1089 MOV R8,R14
1090 MOV #.,R0
1091 ENDCODE
1092
1093 SUBX_T ; you should see 1 -->
1094
1095 CODE SUBX_T
1096 MOV #33,R10
1097 MOV #0,R8
1098 MOV #-1,R9
1099 RPT R10
1100 SUBX R9,R8
1101 SUB #2,R15
1102 MOV R14,0(R15)
1103 MOV R8,R14
1104 MOV #.,R0
1105 ENDCODE
1106
1107 SUBX_T ; you should see 2 -->
1108
1109 {TEST_ASMX}