OSDN Git Service

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