X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=MSP430-FORTH%2FTESTXASM.F;fp=MSP430-FORTH%2FTEST_EXTD_ASM.F;h=d534028244ffb3d7144b951e86d3e5d1cbeaf967;hb=a12a018979e361bfc7c3137981ec48f3619ee8ac;hp=c8dc113652cef46138d4c1676e897fbf2b18afc1;hpb=3457934597075b85cfe5dd3f0bd2d28c1f12ba33;p=fast-forth%2Fmaster.git diff --git a/MSP430-FORTH/TEST_EXTD_ASM.F b/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 --- a/MSP430-FORTH/TEST_EXTD_ASM.F +++ b/MSP430-FORTH/TESTXASM.F @@ -1,6 +1,6 @@ ; ----------------------------------------------------------------------- -; File Name Test_Extd_ASM.f +; EXT_ASM.f ; ----------------------------------------------------------------------- \ \ TARGET SELECTION @@ -22,6 +22,10 @@ \ 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}