X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=MSP430-FORTH%2FMSP_EXP430FR5994%2FCORDIC.4TH;fp=MSP430-FORTH%2FMSP_EXP430FR5994%2FCORDIC.4TH;h=31bba0e15012b0bf3f4d5613e54798b819c2cef0;hb=7b33a614a2400e45dd1565fdb2c4641e08de23aa;hp=f61fa0ea6bb00b46b169865006dc10da629c3ba7;hpb=0e5d64b40c1f3e8811dec8614e6aa1b99ad97802;p=fast-forth%2Fmaster.git diff --git a/MSP430-FORTH/MSP_EXP430FR5994/CORDIC.4TH b/MSP430-FORTH/MSP_EXP430FR5994/CORDIC.4TH index f61fa0e..31bba0e 100644 --- a/MSP430-FORTH/MSP_EXP430FR5994/CORDIC.4TH +++ b/MSP430-FORTH/MSP_EXP430FR5994/CORDIC.4TH @@ -2,25 +2,164 @@ ; ---------- ; CORDIC.4th ; ---------- +; ----------------------------------------------------------- +; requires FIXPOINT_INPUT kernel addon, see forthMSP430FR.asm +; ----------------------------------------------------------- PWR_STATE [UNDEFINED] {CORDIC} [IF] +[UNDEFINED] MARKER [IF] +: MARKER +CREATE +HI2LO +MOV &$1DC8,0(R10) +SUB #2,R8 +MOV R8,2(R10) +ADD #4,&$1DC6 +LO2HI +DOES> +HI2LO +MOV @R1+,R13 +MOV @R14+,&$180E +MOV @R14,&$180C +MOV @R15+,R14 +MOV #RST_STATE,R0 +ENDCODE +[THEN] + MARKER {CORDIC} +[UNDEFINED] SWAP [IF] +CODE SWAP +MOV @R15,R10 +MOV R14,0(R15) +MOV R10,R14 +MOV @R13+,R0 +ENDCODE +[THEN] + +[UNDEFINED] IF [IF] +CODE IF +SUB #2,R15 +MOV R14,0(R15) +MOV &$1DC6,R14 +ADD #4,&$1DC6 +MOV #$404C,0(R14) +ADD #2,R14 +MOV @R13+,R0 +ENDCODE IMMEDIATE +[THEN] + +[UNDEFINED] THEN [IF] +CODE THEN +MOV &$1DC6,0(R14) +MOV @R15+,R14 +MOV @R13+,R0 +ENDCODE IMMEDIATE +[THEN] + +[UNDEFINED] ELSE [IF] +CODE ELSE +ADD #4,&$1DC6 +MOV &$1DC6,R10 +MOV #$4048,-4(R10) +MOV R10,0(R14) +SUB #2,R10 +MOV R10,R14 +MOV @R13+,R0 +ENDCODE IMMEDIATE +[THEN] + +[UNDEFINED] BEGIN [IF] +CODE BEGIN +MOV #HERE,R0 +ENDCODE IMMEDIATE +[THEN] + +[UNDEFINED] UNTIL [IF] +CODE UNTIL + MOV #$404C,R9 +BW1 ADD #4,&$1DC6 + MOV &$1DC6,R10 + MOV R9,-4(R10) + MOV R14,-2(R10) + MOV @R15+,R14 + MOV @R13+,R0 +ENDCODE IMMEDIATE +[THEN] + +[UNDEFINED] AGAIN [IF] +CODE AGAIN +MOV #$4048,R9 +GOTO BW1 +ENDCODE IMMEDIATE +[THEN] + +[UNDEFINED] WHILE [IF] +: WHILE +POSTPONE IF SWAP +; IMMEDIATE +[THEN] + +[UNDEFINED] REPEAT [IF] +: REPEAT +POSTPONE AGAIN POSTPONE THEN +; IMMEDIATE +[THEN] + +[UNDEFINED] DO [IF] +CODE DO +SUB #2,R15 +MOV R14,0(R15) +ADD #2,&$1DC6 +MOV &$1DC6,R14 +MOV #$4056,-2(R14) +ADD #2,&$1C00 +MOV &$1C00,R10 +MOV #0,0(R10) +MOV @R13+,R0 +ENDCODE IMMEDIATE +[THEN] + +[UNDEFINED] LOOP [IF] +CODE LOOP + MOV #$4078,R9 + ADD #4,&$1DC6 + MOV &$1DC6,R10 + MOV R9,-4(R10) + MOV R14,-2(R10) +BEGIN + MOV &$1C00,R14 + SUB #2,&$1C00 + MOV @R14,R14 + CMP #0,R14 +0<> WHILE + MOV R10,0(R14) +REPEAT + MOV @R15+,R14 + MOV @R13+,R0 +ENDCODE IMMEDIATE +[THEN] + + [UNDEFINED] {FIXPOINT} [IF] [UNDEFINED] DABS [IF] CODE DABS -MOV #1-,R9 -ADD #4,R9 -MOV R9,R0 +AND #-1,R14 +S< IF + XOR #-1,0(R15) + XOR #-1,R14 + ADD #1,0(R15) + ADDC #0,R14 +THEN +MOV @R13+,R0 ENDCODE [THEN] - CODE HOLDS BW1 MOV @R15+,R9 ADD R14,R9 @@ -57,9 +196,10 @@ BEGIN MOV @R15,&$4C0 GOTO BW1 ENDCODE -[UNDEFINED] SPACE [IF] -: SPACE -$20 EMIT ; +[UNDEFINED] R> [IF] +CODE R> +MOV R6,R0 +ENDCODE [THEN] CODE F. @@ -82,7 +222,7 @@ LO2HI $2C HOLD #S R> SIGN #> - TYPE SPACE + TYPE $20 EMIT ; [THEN] @@ -284,6 +424,10 @@ LOOP ECHO +; ----------------------------------------------------------- +; requires FIXPOINT_INPUT kernel addon, see forthMSP430FR.asm +; ----------------------------------------------------------- + 10000 89,0 POL2REC . . ; sin, cos --> 10000 75,0 POL2REC . . ; sin, cos --> 10000 60,0 POL2REC . . ; sin, cos -->