OSDN Git Service

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