; ----------
; 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
GOTO BW1
ENDCODE
-[UNDEFINED] SPACE [IF]
-: SPACE
-$20 EMIT ;
+[UNDEFINED] R> [IF]
+CODE R>
+MOV R6,R0
+ENDCODE
[THEN]
CODE F.
$2C HOLD
#S
R> SIGN #>
- TYPE SPACE
+ TYPE $20 EMIT
;
[THEN]
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 -->