OSDN Git Service

V300 beautified
[fast-forth/master.git] / MSP430-FORTH / MSP_EXP430FR5994 / FIXPOINT.4TH
1
2 ; -----------------------------------------------------
3 ; FIXPOINT.4th
4 ; -----------------------------------------------------
5
6 PWR_STATE
7
8 : DEFINED! ECHO 1 ABORT" already loaded!" ;
9
10 [DEFINED] {FIXPOINT} [IF] DEFINED!
11
12 [ELSE]
13
14 MARKER {FIXPOINT}
15
16
17
18 [UNDEFINED] HOLDS [IF]
19 CODE HOLDS
20             MOV @R15+,R9
21             ADD R14,R9
22             MOV &$1DB2,R8
23 BEGIN       SUB #1,R9
24             SUB #1,R14
25 U>= WHILE   SUB #1,R8
26             MOV.B @R9,0(R8)
27 REPEAT      MOV R8,&$1DB2
28             MOV @R15+,R14
29             MOV @R13+,R0
30 ENDCODE
31 [THEN]
32
33 CODE F+
34     ADD @R15+,2(R15)
35     ADDC @R15+,R14
36     MOV @R13+,R0
37 ENDCODE
38
39 CODE F-
40     SUB @R15+,2(R15)
41     SUBC R14,0(R15)
42     MOV @R15+,R14
43     MOV @R13+,R0
44 ENDCODE
45
46 $1A04 C@ $EF > [IF] ; test tag value MSP430FR413x subfamily without hardware_MPY 
47
48 CODE F/
49             PUSHM #4,R7    
50             MOV @R15+,R6
51             MOV @R15+,R9
52             MOV #0,R10
53             MOV @R15,R8
54             MOV #0,R11
55             MOV R9,R12
56             XOR R14,R12
57             AND #-1,R9
58 S< IF       XOR #-1,R8
59             XOR #-1,R9
60             ADD #1,R8
61             ADDC #0,R9
62 THEN        AND #-1,R14
63 S< IF       XOR #-1,R6
64             XOR #-1,R14
65             ADD #1,R6
66             ADDC #0,R14
67 THEN
68             MOV #32,R5
69 BW1         CMP R14,R10
70     0= IF   CMP R6,R9
71     THEN
72     U>= IF  SUB R6,R9
73             SUBC R14,R10
74     THEN
75 BW2         ADDC R7,R7
76             ADDC R4,R4
77             SUB #1,R5
78             0< ?GOTO FW1
79             ADD R11,R11
80             ADDC R8,R8
81             ADDC R9,R9
82             ADDC R10,R10
83             U< ?GOTO BW1
84             SUB R6,R9
85             SUBC R14,R10
86             BIS #1,R2
87             GOTO BW2
88 FW1
89             MOV R7,0(R15)
90             MOV R4,R14
91             POPM #4,R7
92 BW1         AND #-1,R12
93 S< IF       XOR #-1,0(R15)
94             XOR #-1,R14
95             ADD #1,0(R15)
96             ADDC #0,R14
97 THEN        MOV @R13+,R0
98 ENDCODE
99
100 [UNDEFINED] F#S [IF]
101 CODE F#S 
102             MOV 2(R15),R9
103             MOV @R15,2(R15)
104             MOV R9,0(R15)
105             PUSHM #2,R14
106             MOV #0,R12
107 BEGIN       PUSH R12
108             MOV &BASE,R14
109             LO2HI
110             UM*
111             HI2LO
112             SUB #2,R13
113             CMP #10,R14
114     U>= IF  ADD #7,R14
115     THEN    ADD #$30,R14
116             MOV @R1+,R12
117             MOV.B R14,$1D90(R12)
118             ADD #1,R12
119             CMP 2(R1),R12
120 U>= UNTIL   
121             POPM #2,R14
122             MOV #0,0(R15)
123             SUB #2,R15
124             MOV #$1D90,0(R15)
125             JMP HOLDS
126 ENDCODE
127 [THEN]
128
129 CODE UDM*
130             PUSH R13
131             PUSHM #4,R7
132             MOV 4(R15),R13
133             MOV 2(R15),R11
134             MOV @R15,R10
135             MOV #0,R4
136             MOV #0,R5
137             MOV #0,4(R15)
138             MOV #0,2(R15)
139             MOV #0,R6
140             MOV #0,R7
141             MOV #1,R9
142             MOV #0,R8
143 BEGIN       CMP #0,R9    
144     0<> IF  BIT R9,R10
145     ELSE    BIT R8,R14
146     THEN
147     0<> IF  ADD R13,4(R15)
148             ADDC R11,2(R15)
149             ADDC R4,R6
150             ADDC R5,R7
151     THEN    ADD R13,R13
152             ADDC R11,R11
153             ADDC R4,R4
154             ADDC R5,R5
155             ADD R9,R9
156             ADDC R8,R8
157 U>= UNTIL   MOV R6,0(R15)
158             MOV R7,R14
159             POPM #4,R7
160             MOV @R1+,R13
161             MOV @R13+,R0
162 ENDCODE
163
164 CODE F*
165         MOV 2(R15),R12
166         XOR R14,R12
167         BIT #$8000,2(R15)
168 0<> IF  XOR #-1,2(R15)
169         XOR #-1,4(R15)
170         ADD #1,4(R15)
171         ADDC #0,2(R15)
172 THEN
173         COLON
174         DABS UDM*
175         HI2LO
176         MOV @R1+,R13
177         MOV @R15+,R14
178         MOV @R15+,0(R15)
179         GOTO BW1
180 ENDCODE
181
182 [ELSE]
183
184 CODE F/
185             PUSHM #4,R7
186             MOV @R15+,R6
187             MOV @R15+,R9
188             MOV #0,R10
189             MOV @R15,R8
190             MOV #0,R11
191             MOV R9,R12
192             XOR R14,R12
193             AND #-1,R9
194 S< IF       XOR #-1,R8
195             XOR #-1,R9
196             ADD #1,R8
197             ADDC #0,R9
198 THEN        AND #-1,R14
199 S< IF       XOR #-1,R6
200             XOR #-1,R14
201             ADD #1,R6
202             ADDC #0,R14
203 THEN    
204             MOV #32,R5
205 BW1         CMP R14,R10
206     0= IF   CMP R6,R9
207     THEN
208     U>= IF  SUB R6,R9
209             SUBC R14,R10
210     THEN
211 BW2         ADDC R7,R7
212             ADDC R4,R4
213             SUB #1,R5
214             0< ?GOTO FW1
215             ADD R11,R11
216             ADDC R8,R8
217             ADDC R9,R9
218             ADDC R10,R10
219             U< ?GOTO BW1
220             SUB R6,R9
221             SUBC R14,R10
222             BIS #1,R2
223             GOTO BW2
224 FW1         AND #-1,R12
225 S< IF       XOR #-1,R7
226             XOR #-1,R4
227             ADD #1,R7
228             ADDC #0,R4
229 THEN        MOV R7,0(R15)
230             MOV R4,R14
231             POPM #4,R7
232             MOV @R13+,R0
233 ENDCODE
234
235 [UNDEFINED] F#S [IF]
236 CODE F#S
237             MOV 2(R15),R9
238             MOV @R15,2(R15)
239             MOV R9,0(R15)
240             MOV R14,R11
241             MOV #0,R12
242 BEGIN       MOV @R15,&$4C0
243             MOV &BASE,&$4C8
244             MOV &$4E4,0(R15)
245             MOV &$4E6,R14
246             CMP #10,R14
247     U>= IF  ADD #7,R14
248     THEN    ADD #$30,R14
249             MOV.B R14,$1D90(R12)
250             ADD #1,R12
251             CMP R11,R12
252 0= UNTIL    MOV #0,0(R15)
253             MOV R11,R14
254             SUB #2,R15
255             MOV #$1D90,0(R15)
256             JMP HOLDS
257 ENDCODE
258 [THEN]
259
260 CODE F*
261     MOV 4(R15),&$4D4
262     MOV 2(R15),&$4D6
263     MOV @R15,&$4E0
264     MOV R14,&$4E2
265     ADD #4,R15
266     MOV &$4E6,0(R15)
267     MOV &$4E8,R14
268     MOV @R13+,R0
269 ENDCODE
270
271 [THEN]
272
273 [UNDEFINED] F. [IF]
274 CODE F.
275 MOV R14,R12
276 MOV #4,R11
277 MOV &BASE,R10
278 CMP ##10,R10
279 0= IF
280     ADD #1,R11
281 ELSE
282     CMP #%10,R10
283     0= IF
284         MOV #16,R11
285     THEN
286 THEN
287 PUSHM #3,R13
288 LO2HI
289     <# DABS
290     R> F#S
291     $2C HOLD
292     #S
293     R> SIGN #>
294     TYPE SPACE
295 ;
296
297 CODE S>F
298     SUB #2,R15
299     MOV #0,0(R15)
300     MOV @R13+,R0
301 ENDCODE
302 [THEN]
303
304 [UNDEFINED] 2@ [IF]
305
306 CODE 2@
307 SUB #2,R15
308 MOV 2(R14),0(R15)
309 MOV @R14,R14
310 MOV @R13+,R0
311 ENDCODE
312 [THEN]
313
314 [UNDEFINED] 2CONSTANT [IF]
315 : 2CONSTANT
316 CREATE , ,
317 DOES> 2@
318 ;
319 [THEN]
320
321 RST_HERE
322
323 [THEN]
324
325 ECHO
326
327 ; -----------------------
328 ; (volatile) tests
329 ; -----------------------
330
331
332 3,14159 2CONSTANT PI
333 PI -1,0 F* 2CONSTANT -PI
334
335 $10 BASE !  PI F. 
336            -PI F.
337 %10 BASE !  PI F. 
338            -PI F.
339 #10 BASE !  PI F. 
340            -PI F.
341
342 PI 2,0 F* F.      
343 PI -2,0 F* F.    
344 -PI 2,0 F* F.    
345 -PI -2,0 F* F.    
346
347 PI 2,0 F/ F.      
348 PI -2,0 F/ F.    
349 -PI 2,0 F/ F.    
350 -PI -2,0 F/ F.    
351
352 32767,99999 1,0 f* F. 
353 32767,99999 1,0 f/ F. 
354 32767,99999 2,0 f/ F. 
355 32767,99999 4,0 f/ F. 
356 32767,99999 8,0 f/ F. 
357 32767,99999 16,0 f/ F.
358
359 -32767,0 -1,0 f* F.   
360 -32767,0 -1,0 f/ F.   
361 -32767,0 -2,0 f/ F.   
362 -32767,0 -4,0 f/ F.   
363 -32767,0 -8,0 f/ F.   
364 -32767,0 -16,0 f/ F.  
365 -32767,0 -32,0 f/ F.  
366 -32767,0 -64,0 f/ F.  
367
368 ; sqrt(32768)^2 = 32768
369 181,01933598375 181,01933598375 f* f.  
370 181,01933598375 -181,01933598375 f* f.
371 -181,01933598375 181,01933598375 f* f.
372 -181,01933598375 -181,01933598375 f* f.