OSDN Git Service

V 300
[fast-forth/master.git] / MSP430-FORTH / TESTXASM.F
similarity index 59%
rename from MSP430-FORTH/TEST_EXTD_ASM.F
rename to MSP430-FORTH/TESTXASM.F
index c8dc113..d534028 100644 (file)
@@ -1,6 +1,6 @@
 
 ; -----------------------------------------------------------------------
-; File Name Test_Extd_ASM.f
+; EXT_ASM.f
 ; -----------------------------------------------------------------------
 \
 \ TARGET SELECTION
 \ FORTH conditionnal    : 0= 0< = < > U<
 
 ECHO
+[UNDEFINED] {ASMEXT_TEST} [IF]
+
+MARKER {ASMEXT_TEST}
+
 PWR_HERE
 
 ; --------------------------------------------------------------------------------
@@ -398,3 +402,481 @@ HERE OVER - DUMP
 ;     44 33<04 44 55 4D
 PWR_STATE
 
+
+
+: %.
+BASE @ %10 BASE ! SWAP 8 EMIT . BASE !
+;
+
+: %U.
+BASE @ %10 BASE ! SWAP 8 EMIT U. BASE ! ;
+
+PWR_HERE
+
+
+; ================
+; RRUX test
+; ================
+
+
+CODE RRUX_T
+\ MOVX #$F0F0,Y \ don't forget decimal point with MOVX instruction !
+MOVX #$.F0F0,Y
+RRUX Y
+SUB #2,PSP
+MOV TOS,0(PSP)
+MOV Y,TOS
+JMP %.
+ENDCODE
+
+RRUX_T ; you should see %111100001111000 --> %
+
+PWR_STATE
+
+; ================
+; RRUX repeat test
+; ================
+
+
+CODE RRUX_T
+MOV #$F0F0,Y
+RPT #0
+RRUX Y
+SUB #2,PSP
+MOV TOS,0(PSP)
+MOV Y,TOS
+JMP %.
+ENDCODE
+
+RRUX_T ; you should see %111100001111000 --> %
+
+PWR_STATE
+
+CODE RRUX_T
+MOV #$F0F0,Y
+RPT #3
+RRUX Y
+SUB #2,PSP
+MOV TOS,0(PSP)
+MOV Y,TOS
+JMP %.
+ENDCODE
+
+RRUX_T ; you should see %111100001111 --> %
+
+PWR_STATE
+
+CODE RRUX_T
+MOV #$F0F0,Y
+RPT #7
+RRUX Y
+SUB #2,PSP
+MOV TOS,0(PSP)
+MOV Y,TOS
+JMP %.
+ENDCODE
+
+RRUX_T ; you should see %11110000 --> %
+
+PWR_STATE
+
+
+; ================
+; RRCX test
+; ================
+
+
+CODE RRCX_T
+MOV #$8000,Y
+BIC #C,SR
+RRCX Y
+SUB #2,PSP
+MOV TOS,0(PSP)
+MOV Y,TOS
+JMP %U.
+ENDCODE
+
+RRCX_T ; you should see %100000000000000 --> %
+
+PWR_STATE
+
+; ================
+; RRCX repeat test
+; ================
+
+CODE RRCX_T
+MOV #$8000,Y
+BIC #C,SR
+RPT #0
+RRCX Y
+SUB #2,PSP
+MOV TOS,0(PSP)
+MOV Y,TOS
+JMP %U.
+ENDCODE
+
+RRCX_T ; you should see %100000000000000 --> %
+
+PWR_STATE
+
+CODE RRCX_T
+MOV #$8000,Y
+BIC #C,SR
+RPT #7
+RRCX Y
+SUB #2,PSP
+MOV TOS,0(PSP)
+MOV Y,TOS
+JMP %U.
+ENDCODE
+
+RRCX_T ; you should see %10000000 --> %
+
+PWR_STATE
+
+; ================
+; RRAX test
+; ================
+
+
+CODE RRAX_T
+MOV #$8000,Y
+RRAX Y
+SUB #2,PSP
+MOV TOS,0(PSP)
+MOV Y,TOS
+JMP %.
+ENDCODE
+
+RRAX_T ; you should see %-100000000000000 --> %
+
+PWR_STATE
+
+; ================
+; RRAX repeat test
+; ================
+
+
+CODE RRAX_T
+MOV #$8000,Y
+RPT #0
+RRAX Y
+SUB #2,PSP
+MOV TOS,0(PSP)
+MOV Y,TOS
+JMP %.
+ENDCODE
+
+RRAX_T ; you should see %-100000000000000 --> %
+
+PWR_STATE
+
+CODE RRAX_T
+MOV #$8000,Y
+RPT #1
+RRAX Y
+SUB #2,PSP
+MOV TOS,0(PSP)
+MOV Y,TOS
+JMP %.
+ENDCODE
+
+RRAX_T ; you should see %-10000000000000 --> %
+
+PWR_STATE
+
+CODE RRAX_T
+MOV #$8000,Y
+RPT #2
+RRAX Y
+SUB #2,PSP
+MOV TOS,0(PSP)
+MOV Y,TOS
+JMP %.
+ENDCODE
+
+RRAX_T ; you should see %-1000000000000 --> %
+
+PWR_STATE
+
+CODE RRAX_T
+MOV #$8000,Y
+RPT #6
+RRAX Y
+SUB #2,PSP
+MOV TOS,0(PSP)
+MOV Y,TOS
+JMP %.
+ENDCODE
+
+RRAX_T ; you should see %-100000000 --> %
+
+PWR_STATE
+
+; ================
+; RLAX test
+; ================
+
+
+CODE RLAX_T
+MOV #-1,Y
+ADDX Y,Y
+SUB #2,PSP
+MOV TOS,0(PSP)
+MOV Y,TOS
+MOV #.,PC   \ BRANCH to .
+ENDCODE
+
+RLAX_T ; you should see -2 -->
+
+PWR_STATE
+
+; ================
+; RLAX repeat test
+; ================
+
+
+CODE RLAX_T
+MOV #-1,Y
+RPT #0
+ADDX Y,Y
+SUB #2,PSP
+MOV TOS,0(PSP)
+MOV Y,TOS
+MOV #.,PC   \ BRANCH to .
+ENDCODE
+
+RLAX_T ; you should see -2 -->
+
+PWR_STATE
+
+CODE RLAX_T
+MOV #-1,Y
+RPT #1
+ADDX Y,Y
+SUB #2,PSP
+MOV TOS,0(PSP)
+MOV Y,TOS
+MOV #.,PC   \ BRANCH to .
+ENDCODE
+
+RLAX_T ; you should see -4 -->
+
+PWR_STATE
+
+CODE RLAX_T
+MOV #-1,Y
+RPT #2
+ADDX Y,Y
+SUB #2,PSP
+MOV TOS,0(PSP)
+MOV Y,TOS
+MOV #.,PC   \ BRANCH to .
+ENDCODE
+
+RLAX_T ; you should see -8 -->
+
+PWR_STATE
+
+CODE RLAX_T
+MOV #-1,Y
+RPT #7
+ADDX Y,Y
+SUB #2,PSP
+MOV TOS,0(PSP)
+MOV Y,TOS
+MOV #.,PC   \ BRANCH to .
+ENDCODE
+
+RLAX_T ; you should see -256 -->
+
+PWR_STATE
+
+; ================
+; ADDX test
+; ================
+
+
+CODE ADDX_T
+MOV #0,Y
+MOV #-1,X
+ADDX X,Y
+SUB #2,PSP
+MOV TOS,0(PSP)
+MOV Y,TOS
+MOV #.,PC   \ BRANCH to .
+ENDCODE
+
+ADDX_T ; you should see -1 -->
+
+PWR_STATE
+
+; ================
+; ADDX repeat test
+; ================
+
+
+CODE ADDX_T
+MOV #0,Y
+MOV #-1,X
+RPT #0
+ADDX X,Y
+SUB #2,PSP
+MOV TOS,0(PSP)
+MOV Y,TOS
+MOV #.,PC   \ BRANCH to .
+ENDCODE
+
+ADDX_T ; you should see -1 -->
+
+PWR_STATE
+
+CODE ADDX_T
+MOV #0,Y
+MOV #-1,X
+RPT #1
+ADDX X,Y
+SUB #2,PSP
+MOV TOS,0(PSP)
+MOV Y,TOS
+MOV #.,PC   \ BRANCH to .
+ENDCODE
+
+ADDX_T ; you should see -2 -->
+
+PWR_STATE
+
+CODE ADDX_T
+MOV #0,Y
+MOV #-1,X
+RPT #7
+ADDX X,Y
+SUB #2,PSP
+MOV TOS,0(PSP)
+MOV Y,TOS
+MOV #.,PC   \ BRANCH to .
+ENDCODE
+
+ADDX_T ; you should see -8 -->
+
+PWR_STATE
+
+
+; ================
+; SUBX test
+; ================
+
+
+CODE SUBX_T
+MOV #0,Y
+MOV #-1,X
+SUBX X,Y
+SUB #2,PSP
+MOV TOS,0(PSP)
+MOV Y,TOS
+MOV #.,PC   \ BRANCH to .
+ENDCODE
+
+SUBX_T ; you should see 1 -->
+
+PWR_STATE
+
+; ================
+; SUBX repeat test
+; ================
+
+
+CODE SUBX_T
+MOV #0,Y
+MOV #-1,X
+RPT #0
+SUBX X,Y
+SUB #2,PSP
+MOV TOS,0(PSP)
+MOV Y,TOS
+MOV #.,PC   \ BRANCH to .
+ENDCODE
+
+SUBX_T ; you should see 1 -->
+
+PWR_STATE
+
+CODE SUBX_T
+MOV #0,Y
+MOV #-1,X
+RPT #1
+SUBX X,Y
+SUB #2,PSP
+MOV TOS,0(PSP)
+MOV Y,TOS
+MOV #.,PC   \ BRANCH to .
+ENDCODE
+
+SUBX_T ; you should see 2 -->
+
+PWR_STATE
+
+CODE SUBX_T
+MOV #0,Y
+MOV #-1,X
+RPT #7
+SUBX X,Y
+SUB #2,PSP
+MOV TOS,0(PSP)
+MOV Y,TOS
+MOV #.,PC   \ BRANCH to .
+ENDCODE
+
+SUBX_T ; you should see 8 -->
+
+PWR_STATE
+
+CODE SUBX_T     \ W register = R10
+MOV #15,W       \ RPT [W] times, modulo 16 <--> RPT #15
+MOV #0,Y
+MOV #-1,X
+RPT W
+SUBX X,Y
+SUB #2,PSP
+MOV TOS,0(PSP)
+MOV Y,TOS
+MOV #.,PC   \ BRANCH to .
+ENDCODE
+
+SUBX_T ; you should see 16 -->
+
+PWR_STATE
+
+CODE SUBX_T
+MOV #32,W       \ RPT [W] times, modulo 16 <--> RPT #0
+MOV #0,Y
+MOV #-1,X
+RPT W
+SUBX X,Y
+SUB #2,PSP
+MOV TOS,0(PSP)
+MOV Y,TOS
+MOV #.,PC   \ BRANCH to .
+ENDCODE
+
+SUBX_T ; you should see 1 -->
+
+PWR_STATE
+
+CODE SUBX_T
+MOV #33,W       \ RPT [W] times, modulo 16 <--> RPT #1
+MOV #0,Y
+MOV #-1,X
+RPT W
+SUBX X,Y
+SUB #2,PSP
+MOV TOS,0(PSP)
+MOV Y,TOS
+MOV #.,PC   \ BRANCH to .
+ENDCODE
+
+SUBX_T ; you should see 2 -->
+
+PWR_STATE
+
+{ASMEXT_TEST}