OSDN Git Service

V3 prerelease added extended assembler
[fast-forth/master.git] / MSP430-FORTH / TESTXASM.F
1
2 ; -----------------------------------------------------------------------
3 ; EXT_ASM.f
4 ; -----------------------------------------------------------------------
5 \
6 \ TARGET SELECTION
7 \ MSP_EXP430FR5969    MSP_EXP430FR5994    MSP_EXP430FR6989
8 \
9 \ PUSHM order : PSP,TOS, IP,  S,  T,  W,  X,  Y, rEXIT,rDOVAR,rDOCON, rDODOES, R3, SR,RSP, PC
10 \ PUSHM order : R15,R14,R13,R12,R11,R10, R9, R8,  R7  ,  R6  ,  R5  ,   R4   , R3, R2, R1, R0
11 \
12 \ example : PUSHM #6,IP pushes IP,S,T,W,X,Y registers to return stack
13 \
14 \ POPM  order :  PC,RSP, SR, R3, rDODOES,rDOCON,rDOVAR,rEXIT,  Y,  X,  W,  T,  S, IP,TOS,PSP
15 \ POPM  order :  R0, R1, R2, R3,   R4   ,  R5  ,  R6  ,  R7 , R8, R9,R10,R11,R12,R13,R14,R15
16 \
17 \ example : POPM #6,IP   pop Y,X,W,T,S,IP registers from return stack
18 \
19 \ ASSEMBLER conditionnal usage after IF UNTIL WHILE : S< S>= U< U>= 0= 0<> 0>=
20 \ ASSEMBLER conditionnal usage before ?JMP ?GOTO    : S< S>= U< U>= 0= 0<> 0< 
21 \
22 \ FORTH conditionnal    : 0= 0< = < > U<
23
24 ECHO
25 [UNDEFINED] {ASMEXT_TEST} [IF]
26
27 MARKER {ASMEXT_TEST}
28
29 PWR_HERE
30
31 ; --------------------------------------------------------------------------------
32 ; DTCforthMSP430FR5xxx ASSEMBLER, OPCODES IV : Adda|Cmpa|Mova|Suba (without extended word)
33 ; --------------------------------------------------------------------------------
34 ; absolute and immediate instructions must be written as $x.xxxx  (DOUBLE numbers)
35 ; indexed instructions must be written as $.xxxx(REG) (DOUBLE numbers)
36 ; --------------------------------------------------------------------------------
37
38 HERE
39 CODE TEST
40 MOVA @W,T
41 ENDCODE
42 HERE OVER - DUMP
43 ; you should see: 45 53 54 52>0B 0A<04 44 55 4D 50 4F
44 PWR_STATE
45
46 HERE
47 CODE TEST
48 MOVA @T+,W
49 ENDCODE
50 HERE OVER - DUMP
51 ; you should see: 45 53 54 52>1A 0B<04 44 55 4D 50 4F
52 PWR_STATE
53
54 HERE
55 CODE TEST
56 MOVA &$1.2345,T
57 ENDCODE
58 HERE OVER - DUMP
59 ; you should see: 45 53 54 52>2B 01 45 23<04 44 55 4D
60 PWR_STATE
61
62 HERE
63 CODE TEST
64 MOVA $.1234(W),S
65 ENDCODE
66 HERE OVER - DUMP
67 ; you should see: 45 53 54 52>3C 0A 34 12<04 44 55 4D
68 PWR_STATE
69
70 HERE
71 CODE TEST
72 MOVA T,&$1.2345
73 ENDCODE
74 HERE OVER - DUMP
75 ; you should see: 45 53 54 52>61 0B 45 23<04 44 55 4D
76 PWR_STATE
77
78 HERE
79 CODE TEST
80 MOVA S,$.1234(W)
81 ENDCODE
82 HERE OVER - DUMP
83 ; you should see: 45 53 54 52>7A 0C 34 12<04 44 55 4D
84 PWR_STATE
85
86 HERE
87 CODE TEST
88 MOVA #$0.1,S
89 ENDCODE
90 HERE OVER - DUMP
91 ; you should see: 45 53 54 52>8C 00 01 00<04 44 55 4D
92 PWR_STATE
93
94 HERE
95 CODE TEST
96 CMPA #$1.2345,S
97 ENDCODE
98 HERE OVER - DUMP
99 ; you should see: 45 53 54 52>9C 01 45 23<04 44 55 4D
100 PWR_STATE
101
102 HERE
103 CODE TEST
104 ADDA #$2.3456,S
105 ENDCODE
106 HERE OVER - DUMP
107 ; you should see: 45 53 54 52>AC 02 56 34<04 44 55 4D
108 PWR_STATE
109
110 HERE
111 CODE TEST
112 SUBA #$3.4567,S
113 ENDCODE
114 HERE OVER - DUMP
115 ; you should see: 45 53 54 52>BC 03 67 45<04 44 55 4D
116 PWR_STATE
117
118
119
120 HERE
121 CODE TEST
122 MOVA W,T
123 ENDCODE
124 HERE OVER - DUMP
125 ; you should see: 45 53 54 52>CB 0A<04 44 55 4D 50 4F
126 PWR_STATE
127
128 HERE
129 CODE TEST
130 CMPA W,T
131 ENDCODE
132 HERE OVER - DUMP
133 ; you should see: 45 53 54 52>DB 0A<04 44 55 4D 50 4F
134 PWR_STATE
135
136 HERE
137 CODE TEST
138 ADDA W,T
139 ENDCODE
140 HERE OVER - DUMP
141 ; you should see: 45 53 54 52>EB 0A<04 44 55 4D 50 4F
142 PWR_STATE
143
144 HERE
145 CODE TEST
146 SUBA W,T
147 ENDCODE
148 HERE OVER - DUMP
149 ; you should see: 45 53 54 52>FB 0A<04 44 55 4D 50 4F
150 PWR_STATE
151
152 ; --------------------------------------------------------------------------------
153 ; DTCforthMSP430FR5xxx ASSEMBLER: CALLA (without extended word)
154 ; --------------------------------------------------------------------------------
155 ; absolute and immediate instructions must be written as $x.xxxx  (DOUBLE numbers)
156 ; indexed instructions must be written as $.xxxx(REG) (DOUBLE numbers)
157 ; --------------------------------------------------------------------------------
158
159 HERE
160 CODE TEST
161 CALLA W
162 ENDCODE
163 HERE OVER - DUMP
164 ; you should see: 45 53 54 52>4A 13<04 44 55 4D 50 4F
165 PWR_STATE
166
167 HERE
168 CODE TEST
169 CALLA $.3456(W)
170 ENDCODE
171 HERE OVER - DUMP
172 ; you should see: 45 53 54 52>5A 13 56 34<04 44 55 4D
173 PWR_STATE
174
175 HERE
176 CODE TEST
177 CALLA @W
178 ENDCODE
179 HERE OVER - DUMP
180 ; you should see: 45 53 54 52>6A 13<04 44 55 4D 50 4F
181 PWR_STATE
182
183 HERE
184 CODE TEST
185 CALLA @W+
186 ENDCODE
187 HERE OVER - DUMP
188 ; you should see: 45 53 54 52>7A 13<04 44 55 4D 50 4F
189 PWR_STATE
190
191 HERE
192 CODE TEST
193 CALLA &$2.3456
194 ENDCODE
195 HERE OVER - DUMP
196 ; you should see: 45 53 54 52>82 13 56 34<04 44 55 4D
197 PWR_STATE
198
199 HERE
200 CODE TEST
201 CALLA #$5.6789
202 ENDCODE
203 HERE OVER - DUMP
204 ; you should see: 45 53 54 52>B5 13 89 67<04 44 55 4D
205 PWR_STATE
206
207 ; --------------------------------------------------------------------------------
208 ; DTCforthMSP430FR5xxx ASSEMBLER, OPCODES V extended double operand
209 ; --------------------------------------------------------------------------------
210 ; absolute and immediate instructions must be written as $x.xxxx  (DOUBLE numbers)
211 ; indexed instructions must be written as $.xxxx(REG) (DOUBLE numbers)
212 ; --------------------------------------------------------------------------------
213
214 HERE
215 CODE TEST
216 MOV S,T
217 MOVX S,T
218 ENDCODE
219 HERE OVER - DUMP
220 ; you should see: 45 53 54 52>0B 4C 40 18 0B 4C<04 44
221 PWR_STATE
222
223 HERE
224 CODE TEST
225 ADD T,T
226 ADDX.A T,T
227 ENDCODE
228 HERE OVER - DUMP
229 ; you should see: 45 53 54 52>0B 5B 00 18 4B 5B<04 44
230 PWR_STATE
231
232 HERE
233 CODE TEST
234 ADD T,T
235 RPT X
236 ADDX.A T,T
237 ENDCODE
238 HERE OVER - DUMP
239 ; you should see: 45 53 54 52>0B 5B 89 18 4B 5B<04 44
240 PWR_STATE
241
242 HERE
243 CODE TEST
244 ADD T,T
245 RPT #8
246 ADDX.A T,T
247 ENDCODE
248 HERE OVER - DUMP
249 ; you should see: 45 53 54 52>0B 5B 07 18 4B 5B<04 44
250 PWR_STATE
251
252 HERE
253 CODE TEST
254 ADDC #$9876,T
255 ADDCX.A #$5.9876,T
256 ENDCODE
257 HERE OVER - DUMP
258 ; you should see: 45 53 54 52>3B 60 76 98 80 1A 7B 60
259 ;     76 98<04 44 55 4D
260 PWR_STATE
261
262 HERE
263 CODE TEST
264 ADDC &$9876,T
265 ADDCX.A &$5.9876,T
266 ENDCODE
267 HERE OVER - DUMP
268 ; you should see: 45 53 54 52>1B 62 76 98 80 1A 5B 62
269 ;     76 98<04 44 55 4D
270 PWR_STATE
271
272 HERE
273 CODE TEST
274 XOR.B $5432(S),T
275 XORX.B $6.5432(S),T
276 ENDCODE
277 HERE OVER - DUMP
278 ; you should see: 45 53 54 52>5B EC 32 54 46 18 5B EC
279 ;     32 54<04 44 55 4D
280 PWR_STATE
281
282 HERE
283 CODE TEST
284 SUBC T,$5432(S)
285 SUBCX.A T,$6.5432(S)
286 ENDCODE
287 HERE OVER - DUMP
288 ; you should see: 45 53 54 52>8C 7B 32 54 06 18 CC 7B
289 ;     32 54<04 44 55 4D
290 PWR_STATE
291
292 HERE
293 CODE TEST
294 XOR.B T,$5432(S)
295 XORX.B T,$6.5432(S)
296 ENDCODE
297 HERE OVER - DUMP
298 ; you should see: 45 53 54 52>CC EB 32 54 46 18 CC EB
299 ;     32 54<04 44 55 4D
300 PWR_STATE
301
302 ; --------------------------------------------------------------------------------
303 ; DTCforthMSP430FR5xxx ASSEMBLER, OPCODES VI extended single operand (take count of RPT)
304 ; --------------------------------------------------------------------------------
305 ; absolute and immediate instructions must be written as $x.xxxx  (DOUBLE numbers)
306 ; indexed instructions must be written as $.xxxx(REG) (DOUBLE numbers)
307 ; --------------------------------------------------------------------------------
308
309 HERE
310 CODE TEST
311 RRA X
312 RRAX X
313 ENDCODE
314 HERE OVER - DUMP
315 ; you should see: 45 53 54 52>09 11 40 18 09 11<04 44
316 PWR_STATE
317
318 HERE
319 CODE TEST
320 RRC @X
321 RRCX.A @X
322 ENDCODE
323 HERE OVER - DUMP
324 ; you should see: 45 53 54 52>29 10 00 18 69 10<04 44
325 PWR_STATE
326
327 HERE
328 CODE TEST
329 RRC @S
330 RRCX.A @S
331 ENDCODE
332 HERE OVER - DUMP
333 ; you should see: 45 53 54 52>2C 10 00 18 6C 10<04 44
334 PWR_STATE
335
336 HERE
337 CODE TEST
338 RRC @X+
339 RRUX.A @X+
340 ENDCODE
341 HERE OVER - DUMP
342 ; you should see: 45 53 54 52>39 10 00 19 79 10<04 44
343 PWR_STATE
344
345 HERE
346 CODE TEST
347 RRC T
348 RPT #9
349 RRUX.A T
350 ENDCODE
351 HERE OVER - DUMP
352 ; you should see: 45 53 54 52>0B 10 08 19 4B 10<04 44
353 PWR_STATE
354
355 HERE
356 CODE TEST
357 RRC T
358 RPT X
359 RRUX.A T
360 ENDCODE
361 HERE OVER - DUMP
362 ; you should see: 45 53 54 52>0B 10 89 19 4B 10<04 44
363 PWR_STATE
364
365 HERE
366 CODE TEST
367 PUSH #$2345
368 PUSHX #$0.2345
369 ENDCODE
370 HERE OVER - DUMP
371 ; you should see: 45 53 54 52>30 12 45 23 40 18 30 12
372 ;     45 23<04 44 55 4D
373 PWR_STATE
374
375 HERE
376 CODE TEST
377 PUSH &$5678
378 PUSHX.A &$4.5678
379 ENDCODE
380 HERE OVER - DUMP
381 ; you should see: 45 53 54 52>12 12 78 56 00 1A 52 12
382 ;     78 56<04 44 55 4D
383 PWR_STATE
384
385 HERE
386 CODE TEST
387 PUSH.B &$33
388 PUSHX.B &$.33
389 ENDCODE
390 HERE OVER - DUMP
391 ; you should see: 45 53 54 52>52 12 33 00 40 18 52 12
392 ;     33 00<04 44 55 4D
393 PWR_STATE
394
395 HERE
396 CODE TEST
397 PUSH.B $3344(T)
398 PUSHX.B $.3344(T)
399 ENDCODE
400 HERE OVER - DUMP
401 ; you should see: 45 53 54 52>5B 12 44 33 40 18 5B 12
402 ;     44 33<04 44 55 4D
403 PWR_STATE
404
405
406
407 : %.
408 BASE @ %10 BASE ! SWAP 8 EMIT . BASE !
409 ;
410
411 : %U.
412 BASE @ %10 BASE ! SWAP 8 EMIT U. BASE ! ;
413
414 PWR_HERE
415
416
417 ; ================
418 ; RRUX test
419 ; ================
420
421
422 CODE RRUX_T
423 \ MOVX #$F0F0,Y \ don't forget decimal point with MOVX instruction !
424 MOVX #$.F0F0,Y
425 RRUX Y
426 SUB #2,PSP
427 MOV TOS,0(PSP)
428 MOV Y,TOS
429 JMP %.
430 ENDCODE
431
432 RRUX_T ; you should see %111100001111000 --> %
433
434 PWR_STATE
435
436 ; ================
437 ; RRUX repeat test
438 ; ================
439
440
441 CODE RRUX_T
442 MOV #$F0F0,Y
443 RPT #0
444 RRUX Y
445 SUB #2,PSP
446 MOV TOS,0(PSP)
447 MOV Y,TOS
448 JMP %.
449 ENDCODE
450
451 RRUX_T ; you should see %111100001111000 --> %
452
453 PWR_STATE
454
455 CODE RRUX_T
456 MOV #$F0F0,Y
457 RPT #3
458 RRUX Y
459 SUB #2,PSP
460 MOV TOS,0(PSP)
461 MOV Y,TOS
462 JMP %.
463 ENDCODE
464
465 RRUX_T ; you should see %111100001111 --> %
466
467 PWR_STATE
468
469 CODE RRUX_T
470 MOV #$F0F0,Y
471 RPT #7
472 RRUX Y
473 SUB #2,PSP
474 MOV TOS,0(PSP)
475 MOV Y,TOS
476 JMP %.
477 ENDCODE
478
479 RRUX_T ; you should see %11110000 --> %
480
481 PWR_STATE
482
483
484 ; ================
485 ; RRCX test
486 ; ================
487
488
489 CODE RRCX_T
490 MOV #$8000,Y
491 BIC #C,SR
492 RRCX Y
493 SUB #2,PSP
494 MOV TOS,0(PSP)
495 MOV Y,TOS
496 JMP %U.
497 ENDCODE
498
499 RRCX_T ; you should see %100000000000000 --> %
500
501 PWR_STATE
502
503 ; ================
504 ; RRCX repeat test
505 ; ================
506
507 CODE RRCX_T
508 MOV #$8000,Y
509 BIC #C,SR
510 RPT #0
511 RRCX Y
512 SUB #2,PSP
513 MOV TOS,0(PSP)
514 MOV Y,TOS
515 JMP %U.
516 ENDCODE
517
518 RRCX_T ; you should see %100000000000000 --> %
519
520 PWR_STATE
521
522 CODE RRCX_T
523 MOV #$8000,Y
524 BIC #C,SR
525 RPT #7
526 RRCX Y
527 SUB #2,PSP
528 MOV TOS,0(PSP)
529 MOV Y,TOS
530 JMP %U.
531 ENDCODE
532
533 RRCX_T ; you should see %10000000 --> %
534
535 PWR_STATE
536
537 ; ================
538 ; RRAX test
539 ; ================
540
541
542 CODE RRAX_T
543 MOV #$8000,Y
544 RRAX Y
545 SUB #2,PSP
546 MOV TOS,0(PSP)
547 MOV Y,TOS
548 JMP %.
549 ENDCODE
550
551 RRAX_T ; you should see %-100000000000000 --> %
552
553 PWR_STATE
554
555 ; ================
556 ; RRAX repeat test
557 ; ================
558
559
560 CODE RRAX_T
561 MOV #$8000,Y
562 RPT #0
563 RRAX Y
564 SUB #2,PSP
565 MOV TOS,0(PSP)
566 MOV Y,TOS
567 JMP %.
568 ENDCODE
569
570 RRAX_T ; you should see %-100000000000000 --> %
571
572 PWR_STATE
573
574 CODE RRAX_T
575 MOV #$8000,Y
576 RPT #1
577 RRAX Y
578 SUB #2,PSP
579 MOV TOS,0(PSP)
580 MOV Y,TOS
581 JMP %.
582 ENDCODE
583
584 RRAX_T ; you should see %-10000000000000 --> %
585
586 PWR_STATE
587
588 CODE RRAX_T
589 MOV #$8000,Y
590 RPT #2
591 RRAX Y
592 SUB #2,PSP
593 MOV TOS,0(PSP)
594 MOV Y,TOS
595 JMP %.
596 ENDCODE
597
598 RRAX_T ; you should see %-1000000000000 --> %
599
600 PWR_STATE
601
602 CODE RRAX_T
603 MOV #$8000,Y
604 RPT #6
605 RRAX Y
606 SUB #2,PSP
607 MOV TOS,0(PSP)
608 MOV Y,TOS
609 JMP %.
610 ENDCODE
611
612 RRAX_T ; you should see %-100000000 --> %
613
614 PWR_STATE
615
616 ; ================
617 ; RLAX test
618 ; ================
619
620
621 CODE RLAX_T
622 MOV #-1,Y
623 ADDX Y,Y
624 SUB #2,PSP
625 MOV TOS,0(PSP)
626 MOV Y,TOS
627 MOV #.,PC   \ BRANCH to .
628 ENDCODE
629
630 RLAX_T ; you should see -2 -->
631
632 PWR_STATE
633
634 ; ================
635 ; RLAX repeat test
636 ; ================
637
638
639 CODE RLAX_T
640 MOV #-1,Y
641 RPT #0
642 ADDX Y,Y
643 SUB #2,PSP
644 MOV TOS,0(PSP)
645 MOV Y,TOS
646 MOV #.,PC   \ BRANCH to .
647 ENDCODE
648
649 RLAX_T ; you should see -2 -->
650
651 PWR_STATE
652
653 CODE RLAX_T
654 MOV #-1,Y
655 RPT #1
656 ADDX Y,Y
657 SUB #2,PSP
658 MOV TOS,0(PSP)
659 MOV Y,TOS
660 MOV #.,PC   \ BRANCH to .
661 ENDCODE
662
663 RLAX_T ; you should see -4 -->
664
665 PWR_STATE
666
667 CODE RLAX_T
668 MOV #-1,Y
669 RPT #2
670 ADDX Y,Y
671 SUB #2,PSP
672 MOV TOS,0(PSP)
673 MOV Y,TOS
674 MOV #.,PC   \ BRANCH to .
675 ENDCODE
676
677 RLAX_T ; you should see -8 -->
678
679 PWR_STATE
680
681 CODE RLAX_T
682 MOV #-1,Y
683 RPT #7
684 ADDX Y,Y
685 SUB #2,PSP
686 MOV TOS,0(PSP)
687 MOV Y,TOS
688 MOV #.,PC   \ BRANCH to .
689 ENDCODE
690
691 RLAX_T ; you should see -256 -->
692
693 PWR_STATE
694
695 ; ================
696 ; ADDX test
697 ; ================
698
699
700 CODE ADDX_T
701 MOV #0,Y
702 MOV #-1,X
703 ADDX X,Y
704 SUB #2,PSP
705 MOV TOS,0(PSP)
706 MOV Y,TOS
707 MOV #.,PC   \ BRANCH to .
708 ENDCODE
709
710 ADDX_T ; you should see -1 -->
711
712 PWR_STATE
713
714 ; ================
715 ; ADDX repeat test
716 ; ================
717
718
719 CODE ADDX_T
720 MOV #0,Y
721 MOV #-1,X
722 RPT #0
723 ADDX X,Y
724 SUB #2,PSP
725 MOV TOS,0(PSP)
726 MOV Y,TOS
727 MOV #.,PC   \ BRANCH to .
728 ENDCODE
729
730 ADDX_T ; you should see -1 -->
731
732 PWR_STATE
733
734 CODE ADDX_T
735 MOV #0,Y
736 MOV #-1,X
737 RPT #1
738 ADDX X,Y
739 SUB #2,PSP
740 MOV TOS,0(PSP)
741 MOV Y,TOS
742 MOV #.,PC   \ BRANCH to .
743 ENDCODE
744
745 ADDX_T ; you should see -2 -->
746
747 PWR_STATE
748
749 CODE ADDX_T
750 MOV #0,Y
751 MOV #-1,X
752 RPT #7
753 ADDX X,Y
754 SUB #2,PSP
755 MOV TOS,0(PSP)
756 MOV Y,TOS
757 MOV #.,PC   \ BRANCH to .
758 ENDCODE
759
760 ADDX_T ; you should see -8 -->
761
762 PWR_STATE
763
764
765 ; ================
766 ; SUBX test
767 ; ================
768
769
770 CODE SUBX_T
771 MOV #0,Y
772 MOV #-1,X
773 SUBX X,Y
774 SUB #2,PSP
775 MOV TOS,0(PSP)
776 MOV Y,TOS
777 MOV #.,PC   \ BRANCH to .
778 ENDCODE
779
780 SUBX_T ; you should see 1 -->
781
782 PWR_STATE
783
784 ; ================
785 ; SUBX repeat test
786 ; ================
787
788
789 CODE SUBX_T
790 MOV #0,Y
791 MOV #-1,X
792 RPT #0
793 SUBX X,Y
794 SUB #2,PSP
795 MOV TOS,0(PSP)
796 MOV Y,TOS
797 MOV #.,PC   \ BRANCH to .
798 ENDCODE
799
800 SUBX_T ; you should see 1 -->
801
802 PWR_STATE
803
804 CODE SUBX_T
805 MOV #0,Y
806 MOV #-1,X
807 RPT #1
808 SUBX X,Y
809 SUB #2,PSP
810 MOV TOS,0(PSP)
811 MOV Y,TOS
812 MOV #.,PC   \ BRANCH to .
813 ENDCODE
814
815 SUBX_T ; you should see 2 -->
816
817 PWR_STATE
818
819 CODE SUBX_T
820 MOV #0,Y
821 MOV #-1,X
822 RPT #7
823 SUBX X,Y
824 SUB #2,PSP
825 MOV TOS,0(PSP)
826 MOV Y,TOS
827 MOV #.,PC   \ BRANCH to .
828 ENDCODE
829
830 SUBX_T ; you should see 8 -->
831
832 PWR_STATE
833
834 CODE SUBX_T     \ W register = R10
835 MOV #15,W       \ RPT [W] times, modulo 16 <--> RPT #15
836 MOV #0,Y
837 MOV #-1,X
838 RPT W
839 SUBX X,Y
840 SUB #2,PSP
841 MOV TOS,0(PSP)
842 MOV Y,TOS
843 MOV #.,PC   \ BRANCH to .
844 ENDCODE
845
846 SUBX_T ; you should see 16 -->
847
848 PWR_STATE
849
850 CODE SUBX_T
851 MOV #32,W       \ RPT [W] times, modulo 16 <--> RPT #0
852 MOV #0,Y
853 MOV #-1,X
854 RPT W
855 SUBX X,Y
856 SUB #2,PSP
857 MOV TOS,0(PSP)
858 MOV Y,TOS
859 MOV #.,PC   \ BRANCH to .
860 ENDCODE
861
862 SUBX_T ; you should see 1 -->
863
864 PWR_STATE
865
866 CODE SUBX_T
867 MOV #33,W       \ RPT [W] times, modulo 16 <--> RPT #1
868 MOV #0,Y
869 MOV #-1,X
870 RPT W
871 SUBX X,Y
872 SUB #2,PSP
873 MOV TOS,0(PSP)
874 MOV Y,TOS
875 MOV #.,PC   \ BRANCH to .
876 ENDCODE
877
878 SUBX_T ; you should see 2 -->
879
880 PWR_STATE
881
882 {ASMEXT_TEST}