OSDN Git Service

358d913f5db66a854df57f5873fd3647e7b79d27
[fast-forth/master.git] / MSP430-FORTH / LAST.4TH
1
2 ; ---------------------------------
3 ; FF_SPECS.4th for MSP_EXP430FR5994
4 ; ---------------------------------
5
6 CODE ABORT_FF_SPECS
7 SUB #2,R15
8 MOV R14,0(R15)
9 MOV &$180E,R14
10 SUB #308,R14
11 COLON
12 $0D EMIT
13 ABORT" FastForth V3.8 please!"
14 PWR_STATE
15 ;
16
17 ABORT_FF_SPECS
18
19 [UNDEFINED] AND [IF]
20 CODE AND
21 AND @R15+,R14
22 MOV @R13+,R0
23 ENDCODE
24 [THEN]
25
26 [UNDEFINED] DUP [IF]
27 CODE DUP
28 BW1 SUB #2,R15
29     MOV R14,0(R15)
30     MOV @R13+,R0
31 ENDCODE
32
33 CODE ?DUP
34 CMP #0,R14
35 0<> ?GOTO BW1
36 MOV @R13+,R0
37 ENDCODE
38 [THEN]
39
40 [UNDEFINED] OVER [IF]
41 CODE OVER
42 MOV R14,-2(R15)
43 MOV @R15,R14
44 SUB #2,R15
45 MOV @R13+,R0
46 ENDCODE
47 [THEN]
48
49 [UNDEFINED] DROP [IF]
50 CODE DROP
51 MOV @R15+,R14
52 MOV @R13+,R0
53 ENDCODE
54 [THEN]
55
56 [UNDEFINED] SWAP [IF]
57 CODE SWAP
58 MOV @R15,R10
59 MOV R14,0(R15)
60 MOV R10,R14
61 MOV @R13+,R0
62 ENDCODE
63 [THEN]
64
65 [UNDEFINED] ROT [IF]
66 CODE ROT
67 MOV @R15,R10
68 MOV R14,0(R15)
69 MOV 2(R15),R14
70 MOV R10,2(R15)
71 MOV @R13+,R0
72 ENDCODE
73 [THEN]
74
75 [UNDEFINED] >R [IF]
76 CODE >R
77 PUSH R14
78 MOV @R15+,R14
79 MOV @R13+,R0
80 ENDCODE
81 [THEN]
82
83 [UNDEFINED] R> [IF]
84 CODE R>
85 SUB #2,R15
86 MOV R14,0(R15)
87 MOV @R1+,R14
88 MOV @R13+,R0
89 ENDCODE
90 [THEN]
91
92 [UNDEFINED] 0= [IF]
93 CODE 0=
94 SUB #1,R14
95 SUBC R14,R14
96 MOV @R13+,R0
97 ENDCODE
98 [THEN]
99
100 [UNDEFINED] 0< [IF]
101 CODE 0<
102 ADD R14,R14
103 SUBC R14,R14
104 XOR #-1,R14
105 MOV @R13+,R0
106 ENDCODE
107 [THEN]
108
109 [UNDEFINED] = [IF]
110 CODE =
111 SUB @R15+,R14
112 0<> IF
113     AND #0,R14
114     MOV @R13+,R0
115 THEN
116 XOR #-1,R14
117 MOV @R13+,R0
118 ENDCODE
119 [THEN]
120
121 [UNDEFINED] U< [IF]
122 CODE U<
123 SUB @R15+,R14
124 0<> IF
125     MOV #-1,R14
126     U< IF
127         AND #0,R14
128     THEN
129 THEN
130 MOV @R13+,R0
131 ENDCODE
132 [THEN]
133
134 [UNDEFINED] IF [IF]
135 CODE IF
136 SUB #2,R15
137 MOV R14,0(R15)
138 MOV &$1DC6,R14
139 ADD #4,&$1DC6
140 MOV #$4034,0(R14)
141 ADD #2,R14
142 MOV @R13+,R0
143 ENDCODE IMMEDIATE
144
145 CODE THEN
146 MOV &$1DC6,0(R14)
147 MOV @R15+,R14
148 MOV @R13+,R0
149 ENDCODE IMMEDIATE
150 [THEN]
151
152 [UNDEFINED] ELSE [IF]
153 CODE ELSE
154 ADD #4,&$1DC6
155 MOV &$1DC6,R10
156 MOV #$403A,-4(R10)
157 MOV R10,0(R14)
158 SUB #2,R10
159 MOV R10,R14
160 MOV @R13+,R0
161 ENDCODE IMMEDIATE
162 [THEN]
163
164 [UNDEFINED] BEGIN [IF]
165 CODE BEGIN
166     MOV #$4028,R0
167 ENDCODE IMMEDIATE
168 [THEN]
169
170 [UNDEFINED] UNTIL [IF]
171 CODE UNTIL
172     MOV #$4034,R9
173 BW1 ADD #4,&$1DC6
174     MOV &$1DC6,R10
175     MOV R9,-4(R10)
176     MOV R14,-2(R10)
177     MOV @R15+,R14
178     MOV @R13+,R0
179 ENDCODE IMMEDIATE
180
181 CODE AGAIN
182 MOV #$403A,R9
183 GOTO BW1
184 ENDCODE IMMEDIATE
185 [THEN]
186
187 [UNDEFINED] WHILE [IF]
188 : WHILE
189 POSTPONE IF SWAP
190 ; IMMEDIATE
191 [THEN]
192
193 [UNDEFINED] REPEAT [IF]
194 : REPEAT
195 POSTPONE AGAIN POSTPONE THEN
196 ; IMMEDIATE
197 [THEN]
198
199 [UNDEFINED] DO [IF]
200 CODE DO
201 SUB #2,R15
202 MOV R14,0(R15)
203 ADD #2,&$1DC6
204 MOV &$1DC6,R14
205 MOV #$403E,-2(R14)
206 ADD #2,&$1C00
207 MOV &$1C00,R10
208 MOV #0,0(R10)
209 MOV @R13+,R0
210 ENDCODE IMMEDIATE
211
212 CODE LOOP
213     MOV #$4060,R9
214 BW1 ADD #4,&$1DC6
215     MOV &$1DC6,R10
216     MOV R9,-4(R10)
217     MOV R14,-2(R10)
218 BEGIN
219     MOV &$1C00,R14
220     SUB #2,&$1C00
221     MOV @R14,R14
222     CMP #0,R14
223 0<> WHILE
224     MOV R10,0(R14)
225 REPEAT
226     MOV @R15+,R14
227     MOV @R13+,R0
228 ENDCODE IMMEDIATE
229
230 CODE +LOOP
231 MOV #$404E,R9
232 GOTO BW1
233 ENDCODE IMMEDIATE
234 [THEN]
235
236 [UNDEFINED] I [IF]
237 CODE I
238 SUB #2,R15
239 MOV R14,0(R15)
240 MOV @R1,R14
241 SUB 2(R1),R14
242 MOV @R13+,R0
243 ENDCODE
244 [THEN]
245
246 [UNDEFINED] HERE [IF]
247 CODE HERE
248 MOV #$4028,R0
249 ENDCODE
250 [THEN]
251
252 [UNDEFINED] C@ [IF]
253 CODE C@
254 MOV.B @R14,R14
255 MOV @R13+,R0
256 ENDCODE
257 [THEN]
258
259 [UNDEFINED] SPACES [IF]
260 CODE SPACES
261 CMP #0,R14
262 0<> IF
263     PUSH R13
264     BEGIN
265         LO2HI
266         $20 EMIT
267         HI2LO
268         SUB #2,R13 
269         SUB #1,R14
270     0= UNTIL
271     MOV @R1+,R13
272 THEN
273 MOV @R15+,R14
274 MOV @R13+,R0
275 ENDCODE
276 [THEN]
277
278 [UNDEFINED] 1+ [IF]
279 CODE 1+
280 ADD #1,R14
281 MOV @R13+,R0
282 ENDCODE
283 [THEN]
284
285 [UNDEFINED] + [IF]
286 CODE +
287 ADD @R15+,R14
288 MOV @R13+,R0
289 ENDCODE
290 [THEN]
291
292 [UNDEFINED] - [IF]
293 CODE -
294 SUB @R15+,R14
295 XOR #-1,R14
296 ADD #1,R14
297 MOV @R13+,R0
298 ENDCODE
299 [THEN]
300
301 [UNDEFINED] 2* [IF]
302 CODE 2*
303 ADD R14,R14
304 MOV @R13+,R0
305 ENDCODE
306 [THEN]
307
308 [UNDEFINED] UM/MOD [IF]
309 CODE UM/MOD
310     PUSH #DROP
311     MOV #$4066,R0
312 ENDCODE
313 [THEN]
314
315 [UNDEFINED] MOVE [IF]
316 CODE MOVE
317 MOV R14,R10
318 MOV @R15+,R8
319 MOV @R15+,R9
320 MOV @R15+,R14
321 CMP #0,R10
322 0<> IF
323     CMP R9,R8
324     0<> IF
325         U< IF
326             BEGIN
327                 MOV.B @R9+,0(R8)
328                 ADD #1,R8
329                 SUB #1,R10
330             0= UNTIL
331             MOV @R13+,R0
332         THEN
333         ADD R10,R8
334         ADD R10,R9
335         BEGIN
336             SUB #1,R9
337             SUB #1,R8
338             MOV.B @R9,0(R8)
339             SUB #1,R10
340         0= UNTIL
341     THEN
342 THEN
343 MOV @R13+,R0
344 ENDCODE
345 [THEN]
346
347 [UNDEFINED] WORDS [IF]
348 : WORDS
349 CR 
350 $1DCA @ $1CE4
351 $1810 @ 2*
352 MOVE
353 BEGIN
354     0 DUP
355     $1810 @ 2* 0
356         DO
357         DUP I $1CE4 + @
358             U< IF
359                 DROP DROP
360                 I DUP $1CE4 + @
361             THEN
362         2 +LOOP
363     ?DUP
364 WHILE
365     DUP
366     2 - @
367     ROT
368     $1CE4 +
369     !
370     DUP
371     COUNT $7F AND
372     TYPE
373     C@ $0F AND
374     $10 SWAP - SPACES
375 REPEAT
376 DROP
377 ;
378 [THEN]
379
380 [UNDEFINED] CASE [IF]
381 : CASE 0 ; IMMEDIATE
382
383 : OF
384 1+      
385 >R      
386 POSTPONE OVER POSTPONE =
387 POSTPONE IF     
388 POSTPONE DROP   
389 R>      
390 ; IMMEDIATE 
391
392 : ENDOF
393 >R      
394 POSTPONE ELSE 
395 R>      
396 ; IMMEDIATE 
397
398 : ENDCASE
399 POSTPONE DROP
400 0 DO 
401     POSTPONE THEN 
402 LOOP 
403 ; IMMEDIATE 
404 [THEN]
405
406 [UNDEFINED] S_ [IF]
407 CODE S_
408 MOV #0,&$1DB4
409 COLON
410 $4014 ,
411 $20 WORD
412 HI2LO
413 MOV.B @R14,R14
414 ADD #1,R14
415 BIT #1,R14
416 ADDC R14,&$1DC6
417 MOV @R15+,R14
418 MOV @R1+,R13
419 MOV #$20,&$1DB4
420 MOV @R13+,R0
421 ENDCODE IMMEDIATE
422 [THEN]
423
424 [UNDEFINED] ESC [IF]
425 CODE ESC
426 CMP #0,&$1DBE
427 0= IF MOV @R13+,R0
428 THEN
429 COLON          
430 $1B
431 POSTPONE LITERAL
432 POSTPONE EMIT
433 POSTPONE S_
434 POSTPONE TYPE
435 ; IMMEDIATE
436 [THEN]
437
438 : SPECS
439 PWR_STATE
440 ECHO
441 ESC [8;40;80t
442 39 0 DO CR LOOP
443 ESC [H
444 ESC [7m
445 $0D EMIT ." FastForth V"
446 $180E @         
447 0 <# # $08 HOLD # '.' HOLD #S #> TYPE
448 ."  for MSP430FR"
449 HERE
450 $1A04 @
451 CASE
452     $8102   OF  ." 5738,"   $C200   ENDOF 
453     $8103   OF  ." 5739,"   $C200   ENDOF
454     $8160   OF  ." 5948,"   $4400   ENDOF
455     $8169   OF  ." 5969,"   $4400   ENDOF
456     $825D   OF  ." 5972,"   $4400   ENDOF
457     $81A8   OF  ." 6989,"   $4400   ENDOF
458     $810D   OF  ." 5986,"   $4400   ENDOF
459     $81F0   OF  ." 4133,"   $C400   ENDOF
460     $8240   OF  ." 2433,"   $C400   ENDOF
461     $82A1   OF  ." 5994,"   $4000   ENDOF
462     $82A6   OF  ." 5962,"   $4000   ENDOF
463     $830C   OF  ." 2355,"   $8000   ENDOF
464     $830D   OF  ." 2353,"   $C000   ENDOF
465     $831E   OF  ." 2155,"   $8000   ENDOF
466     $831D   OF  ." 2153,"   $C000   ENDOF
467     $832A   OF  ." 2476,"   $8000   ENDOF
468     $832B   OF  ." 2475,"   $8000   ENDOF
469     $833C   OF  ." 2633,"   $C400   ENDOF
470     $833D   OF  ." 2533,"   $C400   ENDOF
471     ABORT" xxxx <-- unrecognized device!"
472 ENDCASE
473 ['] ['] DUP @ $1284 =
474 IF ."  DTC=1," DROP
475 ELSE 2 + @ $1284 =
476     IF ."  DTC=2,"
477     ELSE ."  DTC=3,"
478     THEN
479 THEN
480 $20 EMIT 
481 $1810 @ U. $08 EMIT ." -Entry word set, "
482 $1800 @ 0 1000 UM/MOD U.
483 ?DUP IF $08 EMIT ',' EMIT U.
484 THEN ." MHz, "
485 - U. ." bytes"
486 ESC [0m
487 CR
488 ." /COUNTED-STRING   = 255" CR 
489 ." /HOLD             = 34" CR
490 ." /PAD              = 84" CR
491 ." ADDRESS-UNIT-BITS = 16" CR
492 ." FLOORED           = true" CR
493 ." MAX-CHAR          = 255" CR
494 ." MAX-N             = 32767" CR
495 ." MAX-U             = 65535" CR
496 ." MAX-D             = 2147483647" CR
497 ." MAX-UD            = 4294967295" CR
498 ." STACK-CELLS       = 48" CR
499 ." RETURN-STACK-CELLS= 48" CR
500 ." DeFiNiTiOnS aRe CaSe-InSeNsItIvE" CR
501 CR 
502 ESC [7m ." KERNEL SPECS" ESC [0m
503 CR
504 $1812 @
505     DUP 0< IF ." 32.768kHz XTAL" CR THEN
506 2*  DUP 0< IF ." (4/2) UART TERMINAL" CR 2*
507         ELSE  2* DUP
508             0< IF ." (RTS) UART TERMINAL" CR
509             THEN
510         THEN
511 2*  DUP 0< IF ." (XON/XOFF) UART TERMINAL" CR
512         THEN
513 2*  DUP 0< IF ." Half-Duplex TERMINAL" CR THEN
514 2*  DUP 0< IF ." I2C_Master TERMINAL" CR THEN
515 2*  DUP 0< IF ." Q15.16 input" CR THEN
516 2*  DUP 0< IF ." DOUBLE input" CR THEN
517 2*  DUP 0< IF ." MSP430_X assembler" CR 2* 2*
518         ELSE 2*  DUP
519             0< IF ." MSP430 Assembler"
520                 2*  DUP 0< IF ."  with 20bits address"
521                     THEN CR
522             ELSE 2*
523             THEN
524         THEN
525 2*
526 2*
527 2*
528 2*
529 2* 0< IF
530     [DEFINED] DEFER [IF] ." DEFER word set" CR [THEN]
531     [DEFINED] ALSO  [IF] ." VOCABULARY word set" CR [THEN]
532     [DEFINED] LOAD" [IF] ." SD_CARD Loader" CR [THEN]
533     [DEFINED] BOOT  [IF] ." bootloader" CR [THEN]
534     [DEFINED] READ" [IF] ." SD_CARD Read/Write" CR [THEN]
535     CR 
536     ESC [7m ." OPTIONS" ESC [0m
537     CR
538     [DEFINED] {CORE_ANS}  [IF] ." ANS94 core" CR [THEN]
539     [DEFINED] {DOUBLE}    [IF] ." DOUBLE word set" CR [THEN]
540     [DEFINED] {TOOLS}     [IF] ." UTILITY" CR [THEN]
541     [DEFINED] {FIXPOINT}  [IF] ." Q15.16 ADD SUB MUL DIV" CR [THEN]
542     [DEFINED] {CORDIC}    [IF] ." CORDIC engine" CR [THEN]
543     [DEFINED] {SD_TOOLS}  [IF] ." SD_TOOLS" CR [THEN]
544     [DEFINED] {RTC}       [IF] ." RTC utility" CR [THEN]
545     [DEFINED] {UARTI2CS}  [IF] ." UART to I2C_FastForth bridge" CR [THEN]
546     [DEFINED] ALSO
547     [IF] 
548         CR 
549         ESC [7m ." ASSEMBLER word set" ESC [0m
550         ALSO ASSEMBLER WORDS PREVIOUS
551         CR
552     [THEN]
553 THEN
554 CR
555 ESC [7m ." FORTH word set"  ESC [0m
556 WORDS
557 CR
558 HI2LO
559 MOV #WARM+4,R0
560 ENDCODE
561
562 SPECS