OSDN Git Service

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