OSDN Git Service

V308
[fast-forth/master.git] / MSP430-FORTH / MSP_EXP430FR5994 / SD_TEST.4TH
1
2 ; -----------
3 ; SD_TEST.4th for MSP_EXP430FR5994
4 ; -----------
5
6 CODE ABORT_SD_TEST
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_SD_TEST
18
19 PWR_STATE
20
21 [DEFINED] {SD_TEST} [IF]  {SD_TEST} [THEN]
22
23 MARKER {SD_TEST}
24
25 [UNDEFINED] EXIT [IF]
26 CODE EXIT
27 MOV @R1+,R13
28 MOV @R13+,R0
29
30 ENDCODE
31 [THEN]
32
33 [UNDEFINED] SWAP [IF]
34 CODE SWAP
35 MOV @R15,R10
36 MOV R14,0(R15)
37 MOV R10,R14
38 MOV @R13+,R0
39 ENDCODE
40 [THEN]
41
42 [UNDEFINED] >BODY [IF]
43 CODE >BODY
44 ADD #4,R14
45 MOV @R13+,R0
46 ENDCODE
47 [THEN]
48
49 [UNDEFINED] 0= [IF]
50 CODE 0=
51 SUB #1,R14
52 SUBC R14,R14
53 MOV @R13+,R0
54 ENDCODE
55 [THEN]
56
57 [UNDEFINED] IF [IF]
58 CODE IF
59 SUB #2,R15
60 MOV R14,0(R15)
61 MOV &$1DC6,R14
62 ADD #4,&$1DC6
63 MOV #$4034,0(R14)
64 ADD #2,R14
65 MOV @R13+,R0
66 ENDCODE IMMEDIATE
67
68 CODE THEN
69 MOV &$1DC6,0(R14)
70 MOV @R15+,R14
71 MOV @R13+,R0
72 ENDCODE IMMEDIATE
73 [THEN]
74
75 [UNDEFINED] ELSE [IF]
76 CODE ELSE
77 ADD #4,&$1DC6
78 MOV &$1DC6,R10
79 MOV #$403A,-4(R10)
80 MOV R10,0(R14)
81 SUB #2,R10
82 MOV R10,R14
83 MOV @R13+,R0
84 ENDCODE IMMEDIATE
85 [THEN]
86
87 [UNDEFINED] BEGIN [IF]
88 CODE BEGIN
89     MOV #$4028,R0
90 ENDCODE IMMEDIATE
91
92 CODE UNTIL
93     MOV #$4034,R9
94 BW1 ADD #4,&$1DC6
95     MOV &$1DC6,R10
96     MOV R9,-4(R10)
97     MOV R14,-2(R10)
98     MOV @R15+,R14
99     MOV @R13+,R0
100 ENDCODE IMMEDIATE
101
102 CODE AGAIN
103 MOV #$403A,R9
104 GOTO BW1
105 ENDCODE IMMEDIATE
106
107 : WHILE
108 POSTPONE IF SWAP
109 ; IMMEDIATE
110
111 : REPEAT
112 POSTPONE AGAIN POSTPONE THEN
113 ; IMMEDIATE
114 [THEN]
115
116 [UNDEFINED] DO [IF]
117 CODE DO
118 SUB #2,R15
119 MOV R14,0(R15)
120 ADD #2,&$1DC6
121 MOV &$1DC6,R14
122 MOV #$403E,-2(R14)
123 ADD #2,&$1C00
124 MOV &$1C00,R10
125 MOV #0,0(R10)
126 MOV @R13+,R0
127 ENDCODE IMMEDIATE
128
129 CODE LOOP
130     MOV #$4060,R9
131 BW1 ADD #4,&$1DC6
132     MOV &$1DC6,R10
133     MOV R9,-4(R10)
134     MOV R14,-2(R10)
135 BEGIN
136     MOV &$1C00,R14
137     SUB #2,&$1C00
138     MOV @R14,R14
139     CMP #0,R14
140 0<> WHILE
141     MOV R10,0(R14)
142 REPEAT
143     MOV @R15+,R14
144     MOV @R13+,R0
145 ENDCODE IMMEDIATE
146
147 CODE +LOOP
148 MOV #$404E,R9
149 GOTO BW1
150 ENDCODE IMMEDIATE
151 [THEN]
152
153 [UNDEFINED] I [IF]
154 CODE I
155 SUB #2,R15
156 MOV R14,0(R15)
157 MOV @R1,R14
158 SUB 2(R1),R14
159 MOV @R13+,R0
160 ENDCODE
161 [THEN]
162
163 [UNDEFINED] + [IF]
164 CODE +
165 ADD @R15+,R14
166 MOV @R13+,R0
167 ENDCODE
168 [THEN]
169
170 [UNDEFINED] - [IF]
171 CODE -
172 SUB @R15+,R14
173 XOR #-1,R14
174 ADD #1,R14
175 MOV @R13+,R0
176 ENDCODE
177 [THEN]
178
179 [UNDEFINED] MAX [IF]
180     CODE MAX
181         CMP @R15,R14
182         S< ?GOTO FW1
183 BW1     ADD #2,R15
184         MOV @R13+,R0
185     ENDCODE
186
187     CODE MIN
188         CMP @R15,R14
189         S< ?GOTO BW1
190 FW1     MOV @R15+,R14
191         MOV @R13+,R0
192     ENDCODE
193 [THEN]
194
195 [UNDEFINED] C@ [IF]
196 CODE C@
197 MOV.B @R14,R14
198 MOV @R13+,R0
199 ENDCODE
200 [THEN]
201
202 [UNDEFINED] SPACE [IF]
203 : SPACE
204 $20 EMIT ;
205 [THEN]
206
207 [UNDEFINED] SPACES [IF]
208 CODE SPACES
209 CMP #0,R14
210 0<> IF
211     PUSH R13
212     BEGIN
213         LO2HI
214         $20 EMIT
215         HI2LO
216         SUB #2,R13 
217         SUB #1,R14
218     0= UNTIL
219     MOV @R1+,R13
220 THEN
221 MOV @R15+,R14
222 MOV @R13+,R0              
223 ENDCODE
224 [THEN]
225
226 [UNDEFINED] DUP [IF]
227 CODE DUP
228 BW1 SUB #2,R15
229     MOV R14,0(R15)
230     MOV @R13+,R0
231 ENDCODE
232
233 CODE ?DUP
234 CMP #0,R14
235 0<> ?GOTO BW1
236 MOV @R13+,R0
237 ENDCODE
238 [THEN]
239
240 [UNDEFINED] OVER [IF]
241 CODE OVER
242 MOV R14,-2(R15)
243 MOV @R15,R14
244 SUB #2,R15
245 MOV @R13+,R0
246 ENDCODE
247 [THEN]
248
249 [UNDEFINED] >R [IF]
250 CODE >R
251 PUSH R14
252 MOV @R15+,R14
253 MOV @R13+,R0
254 ENDCODE
255 [THEN]
256
257 [UNDEFINED] R> [IF]
258 CODE R>
259 SUB #2,R15
260 MOV R14,0(R15)
261 MOV @R1+,R14
262 MOV @R13+,R0
263 ENDCODE
264 [THEN]
265
266 [UNDEFINED] CONSTANT [IF]
267 : CONSTANT 
268 CREATE
269 HI2LO
270 MOV R14,-2(R10)
271 MOV @R15+,R14
272 MOV @R1+,R13
273 MOV @R13+,R0
274 ENDCODE
275 [THEN]
276
277 [UNDEFINED] STATE [IF]
278 $1DBE CONSTANT STATE
279 [THEN]
280
281 [UNDEFINED] IS [IF]
282 CODE DEFER!
283 MOV @R15+,2(R14)
284 MOV @R15+,R14
285 MOV @R13+,R0
286 ENDCODE
287
288 : IS
289 STATE @
290 IF  POSTPONE ['] POSTPONE DEFER! 
291 ELSE ' DEFER! 
292 THEN
293 ; IMMEDIATE
294 [THEN]
295
296 [UNDEFINED] U.R [IF]
297 : U.R
298 >R  <# 0 # #S #>  
299 R> OVER - 0 MAX SPACES TYPE
300 ;
301 [THEN]
302
303 [UNDEFINED] DUMP [IF]
304 CODE DUMP
305 PUSH R13
306 PUSH &$1DDC
307 MOV #$10,&$1DDC
308 ADD @R15,R14
309 LO2HI
310   SWAP
311   DO  CR
312     I 4 U.R SPACE
313       I 8 + I
314       DO I C@ 3 U.R LOOP
315       SPACE
316       I $10 + I 8 +
317       DO I C@ 3 U.R LOOP  
318       SPACE SPACE
319       I $10 + I
320       DO I C@ $7E MIN $20 MAX EMIT LOOP
321   $10 +LOOP
322   R> $1DDC !
323 ;
324 [THEN]
325
326 [UNDEFINED] HERE [IF]
327 CODE HERE
328 MOV #BEGIN,R0
329 ENDCODE
330 [THEN]
331
332
333 CODE SD_EMIT
334 CMP #512,&$201E
335 U>= IF
336     MOV #WRITE,R9
337     CALL 2(R9)
338 THEN
339 MOV &$201E,R8
340 MOV.B R14,$1E00(R8)
341 ADD #1,&$201E
342 MOV @R15+,R14
343 MOV @R13+,R0
344 ENDCODE
345
346 : SD_TEST
347 PWR_HERE
348 CR
349 ." 0 Set date and time" CR
350 ." 1 Load {TOOLS} words" CR
351 ." 2 Load {SD_TOOLS} words" CR
352 ." 3 Load {CORE_COMP} words" CR
353 ." 4 Load ANS core tests" CR
354 ." 5 Load a 100k program " CR
355 ." 6 Read only this source file" CR
356 ." 7 append a dump of FORTH to YOURFILE.TXT" CR
357 ." 8 delete YOURFILE.TXT" CR
358 ." 9 Load TST_WORDS" CR
359 ." your choice : "
360 KEY
361 48 - ?DUP
362 0= IF
363     ." LOAD RTC.4TH" CR
364     LOAD" RTC.4TH"
365 ELSE 1 - ?DUP
366     0= IF
367         ." LOAD UTILITY.4TH" CR
368         LOAD" UTILITY.4TH"
369     ELSE 1 - ?DUP
370         0= IF
371             ." LOAD SD_TOOLS.4TH" CR
372             LOAD" SD_TOOLS.4TH"
373         ELSE 1 - ?DUP
374             0= IF
375                 ." LOAD CORE_ANS.4TH" CR
376                 LOAD" CORE_ANS.4TH"
377             ELSE 1 - ?DUP
378                 0= IF
379                     ." LOAD CORETEST.4TH" CR
380                     LOAD" CORETEST.4TH"
381                     PWR_STATE
382                 ELSE 1 - ?DUP
383                     0= IF
384                         ." LOAD PROG100K.4TH" CR
385                         NOECHO
386                         LOAD" PROG100K.4TH"
387                     ELSE 1 - ?DUP
388                         0= IF
389                             ." READ PROG100K.4TH" CR
390                             READ" PROG100K.4TH"
391                             BEGIN
392                                 READ
393                             UNTIL
394                         ELSE 1 - ?DUP
395                             0= IF
396                                 ." WRITE YOURFILE.TXT" CR
397                                 WRITE" YOURFILE.TXT"
398                                 ['] SD_EMIT IS EMIT
399                                 $4000 HERE OVER - DUMP
400                                 ['] EMIT >BODY IS EMIT
401                                 CLOSE
402                             ELSE 1 - ?DUP
403                                 0= IF
404                                     ." DEL YOURFILE.TXT" CR
405                                     DEL" YOURFILE.TXT"
406                                 ELSE 1 - ?DUP
407                                     0= IF
408                                         ." LOAD TSTWORDS.4TH" CR
409                                         LOAD" TSTWORDS.4TH"
410                                     ELSE
411                                         ." abort" ABORT" "
412                                     THEN                                        
413                                 THEN
414                             THEN
415                         THEN
416                     THEN
417                 THEN
418             THEN
419         THEN
420     THEN
421 THEN
422 ;
423
424
425
426 RST_HERE
427
428 [THEN]
429
430 ECHO SD_TEST