OSDN Git Service

la der de der
[fast-forth/master.git] / MSP430-FORTH / SD_430FR5994 / SD_TEST.4TH
1
2 ; --------------------------------
3 ; SD_TEST.4th for MSP_EXP430FR5994
4 ; --------------------------------
5
6     CODE ABORT_SD_TEST
7     SUB #4,R15
8     MOV R14,2(R15)
9     [UNDEFINED] WRITE  
10     [IF]
11         MOV #-1,0(R15)
12     [ELSE]
13         MOV #0,0(R15)
14     [THEN]
15     MOV &$180A,R14
16     SUB #401,R14
17     COLON
18     $0D EMIT
19     ABORT" FastForth V4.1 please!"
20     ABORT" build FastForth with SD_CARD_READ_WRITE addon!"
21     RST_RET
22     ;
23
24     ABORT_SD_TEST
25
26 ; ------------------------------------------------------------------
27 ; first we download the set of definitions we need (from CORE_ANS.4th for MSP_EXP430FR5994)
28 ; ------------------------------------------------------------------
29
30     [UNDEFINED] EXIT
31     [IF]
32     CODE EXIT
33     MOV @R1+,R13
34     MOV @R13+,R0
35     ENDCODE
36     [THEN]
37
38     [UNDEFINED] SWAP
39     [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
49     [IF]
50     CODE >BODY
51     ADD #4,R14
52     MOV @R13+,R0
53     ENDCODE
54     [THEN]
55
56     [UNDEFINED] 0=
57     [IF]
58     CODE 0=
59     SUB #1,R14
60     SUBC R14,R14
61     MOV @R13+,R0
62     ENDCODE
63     [THEN]
64
65     [UNDEFINED] IF
66     [IF]
67     CODE IF
68     SUB #2,R15
69     MOV R14,0(R15)
70     MOV &$1DBE,R14
71     ADD #4,&$1DBE
72     MOV #[THEN]+$52,0(R14)
73     ADD #2,R14
74     MOV @R13+,R0
75     ENDCODE IMMEDIATE
76
77     CODE THEN
78     MOV &$1DBE,0(R14)
79     MOV @R15+,R14
80     MOV @R13+,R0
81     ENDCODE IMMEDIATE
82     [THEN]
83
84     [UNDEFINED] ELSE
85     [IF]
86     CODE ELSE
87     ADD #4,&$1DBE
88     MOV &$1DBE,R10
89     MOV #[THEN]+$58,-4(R10)
90     MOV R10,0(R14)
91     SUB #2,R10
92     MOV R10,R14
93     MOV @R13+,R0
94     ENDCODE IMMEDIATE
95     [THEN]
96
97     [UNDEFINED] BEGIN
98     [IF]
99     CODE BEGIN
100     MOV #BEGIN,R0
101     ENDCODE IMMEDIATE
102
103     CODE UNTIL
104     MOV #[THEN]+$52,R9
105 BW1 ADD #4,&$1DBE
106     MOV &$1DBE,R10
107     MOV R9,-4(R10)
108     MOV R14,-2(R10)
109     MOV @R15+,R14
110     MOV @R13+,R0
111     ENDCODE IMMEDIATE
112
113     CODE AGAIN
114     MOV #[THEN]+$58,R9
115     GOTO BW1
116     ENDCODE IMMEDIATE
117
118     : WHILE
119     POSTPONE IF SWAP
120     ; IMMEDIATE
121
122     : REPEAT
123     POSTPONE AGAIN POSTPONE THEN
124     ; IMMEDIATE
125     [THEN]
126
127     [UNDEFINED] DO
128     [IF]
129     HDNCODE XDO
130     MOV #$8000,R9
131     SUB @R15+,R9
132     MOV R14,R8
133     ADD R9,R8
134     PUSHM #2,R9
135     MOV @R15+,R14
136     MOV @R13+,R0
137     ENDCODE
138
139     CODE DO
140     SUB #2,R15
141     MOV R14,0(R15)
142     ADD #2,&$1DBE
143     MOV &$1DBE,R14
144     MOV #XDO,-2(R14)
145     ADD #2,&$1C00
146     MOV &$1C00,R10
147     MOV #0,0(R10)
148     MOV @R13+,R0
149     ENDCODE IMMEDIATE
150
151     HDNCODE XLOOP
152     ADD #1,0(R1)
153 BW1 BIT #$100,R2
154     0= IF
155         MOV @R13,R13
156         MOV @R13+,R0
157     THEN
158     ADD #4,R1
159     ADD #2,R13
160     MOV @R13+,R0
161     ENDCODE
162
163     CODE LOOP
164     MOV #XLOOP,R9
165 BW2 ADD #4,&$1DBE
166     MOV &$1DBE,R10
167     MOV R9,-4(R10)
168     MOV R14,-2(R10)
169     BEGIN
170         MOV &$1C00,R14
171         SUB #2,&$1C00
172         MOV @R14,R14
173         CMP #0,R14
174     0<> WHILE
175         MOV R10,0(R14)
176     REPEAT
177     MOV @R15+,R14
178     MOV @R13+,R0
179     ENDCODE IMMEDIATE
180
181     HDNCODE XPLOO
182     ADD R14,0(R1)
183     MOV @R15+,R14
184     GOTO BW1
185     ENDCODE
186
187     CODE +LOOP
188     MOV #XPLOO,R9
189     GOTO BW2
190     ENDCODE IMMEDIATE
191     [THEN]
192
193     [UNDEFINED] I
194     [IF]
195     CODE I
196     SUB #2,R15
197     MOV R14,0(R15)
198     MOV @R1,R14
199     SUB 2(R1),R14
200     MOV @R13+,R0
201     ENDCODE
202     [THEN]
203
204     [UNDEFINED] +
205     [IF]
206     CODE +
207     ADD @R15+,R14
208     MOV @R13+,R0
209     ENDCODE
210     [THEN]
211
212     [UNDEFINED] -
213     [IF]
214     CODE -
215     SUB @R15+,R14
216     XOR #-1,R14
217     ADD #1,R14
218     MOV @R13+,R0
219     ENDCODE
220     [THEN]
221
222     [UNDEFINED] MAX
223     [IF]
224     CODE MAX
225     CMP @R15,R14
226     S< ?GOTO FW1
227 BW1 ADD #2,R15
228     MOV @R13+,R0
229     ENDCODE
230
231     CODE MIN
232     CMP @R15,R14
233     S< ?GOTO BW1
234 FW1 MOV @R15+,R14
235     MOV @R13+,R0
236     ENDCODE
237     [THEN]
238
239     [UNDEFINED] C@
240     [IF]
241     CODE C@
242     MOV.B @R14,R14
243     MOV @R13+,R0
244     ENDCODE
245     [THEN]
246
247     [UNDEFINED] SPACE
248     [IF]
249     : SPACE
250     $20 EMIT ;
251     [THEN]
252
253     [UNDEFINED] SPACES
254     [IF]
255     CODE SPACES
256     CMP #0,R14
257     0<> IF
258         PUSH R13
259         BEGIN
260             LO2HI
261             $20 EMIT
262             HI2LO
263             SUB #2,R13
264             SUB #1,R14
265         0= UNTIL
266         MOV @R1+,R13
267     THEN
268     MOV @R15+,R14
269     MOV @R13+,R0
270     ENDCODE
271     [THEN]
272
273     [UNDEFINED] DUP
274     [IF]
275     CODE DUP
276 BW1 SUB #2,R15
277     MOV R14,0(R15)
278     MOV @R13+,R0
279     ENDCODE
280
281     CODE ?DUP
282     CMP #0,R14
283     0<> ?GOTO BW1
284     MOV @R13+,R0
285     ENDCODE
286     [THEN]
287
288     [UNDEFINED] OVER
289     [IF]
290     CODE OVER
291     MOV R14,-2(R15)
292     MOV @R15,R14
293     SUB #2,R15
294     MOV @R13+,R0
295     ENDCODE
296     [THEN]
297
298     [UNDEFINED] >R
299     [IF]
300     CODE >R
301     PUSH R14
302     MOV @R15+,R14
303     MOV @R13+,R0
304     ENDCODE
305     [THEN]
306
307     [UNDEFINED] R>
308     [IF]
309     CODE R>
310     SUB #2,R15
311     MOV R14,0(R15)
312     MOV @R1+,R14
313     MOV @R13+,R0
314     ENDCODE
315     [THEN]
316
317     [UNDEFINED] CONSTANT
318     [IF]
319     : CONSTANT
320     CREATE
321     HI2LO
322     MOV R14,-2(R10)
323     MOV @R15+,R14
324     MOV @R1+,R13
325     MOV @R13+,R0
326     ENDCODE
327     [THEN]
328
329     [UNDEFINED] STATE
330     [IF]
331     $1DB4 CONSTANT STATE
332     [THEN]
333
334     [UNDEFINED] CR
335     [IF]
336
337     CODE CR
338     MOV #[THEN],R0
339     ENDCODE
340
341     :NONAME
342     $0D EMIT $0A EMIT
343     ; IS CR
344     [THEN]
345
346     [UNDEFINED] BASE
347     [IF]
348     $1DB6  CONSTANT BASE
349     [THEN]
350
351     [UNDEFINED] HERE
352     [IF]
353     CODE HERE
354     MOV #BEGIN,R0
355     ENDCODE
356     [THEN]
357
358     [UNDEFINED] DROP
359     [IF]
360     CODE DROP
361     MOV @R15+,R14
362     MOV @R13+,R0
363     ENDCODE
364     [THEN]
365
366     [UNDEFINED] 1+
367     [IF]
368     CODE 1+
369     ADD #1,R14
370     MOV @R13+,R0
371     ENDCODE
372     [THEN]
373
374     [UNDEFINED] =
375     [IF]
376     CODE =
377     SUB @R15+,R14
378     0<> IF
379         AND #0,R14
380         MOV @R13+,R0
381     THEN
382     XOR #-1,R14
383     MOV @R13+,R0
384     ENDCODE
385     [THEN]
386
387     [UNDEFINED] CASE
388     [IF]
389     : CASE
390     0
391     ; IMMEDIATE
392
393     : OF
394     1+  
395     >R  
396     POSTPONE OVER
397     POSTPONE =
398     POSTPONE IF 
399     POSTPONE DROP       
400     R>  
401     ; IMMEDIATE
402
403     : ENDOF
404     >R  
405     POSTPONE ELSE
406     R>  
407     ; IMMEDIATE
408
409     : ENDCASE
410     POSTPONE DROP
411     0 DO
412         POSTPONE THEN
413     LOOP
414     ; IMMEDIATE
415     [THEN]
416
417 ; ------------------------------------------------------------------
418 ; then we download the set of definitions we need (from UTILITY.4th for MSP_EXP430FR5994)
419 ; ------------------------------------------------------------------
420
421     [UNDEFINED] U.R
422     [IF]
423     : U.R
424     >R  <# 0 # #S #>
425     R> OVER - 0 MAX SPACES TYPE
426     ;
427     [THEN]
428
429 ; --------------------------
430 ; end of definitions we need
431 ; --------------------------
432
433     CODE DUMP
434     PUSH R13
435     PUSH &BASE
436     MOV #$10,&BASE
437     ADD @R15,R14
438     LO2HI
439     SWAP
440     DO
441         I 4 U.R SPACE
442         I 8 + I
443         DO I C@ 3 U.R LOOP
444         SPACE
445         I $10 + I 8 +
446         DO I C@ 3 U.R LOOP
447         SPACE SPACE
448         I $10 + I
449         DO I C@ $7E MIN $20 MAX EMIT LOOP
450         CR
451     $10 +LOOP
452     R> BASE !
453     ;
454
455
456     CODE SD_EMIT
457     MOV &$201E,R8
458     MOV.B R14,$1E00(R8)
459     MOV @R15+,R14
460     ADD #1,R8
461     MOV R8,&$201E
462     CMP #$200,R8
463     U>= IF
464         CALL #WRITE+$4
465     THEN
466     MOV @R13+,R0
467     ENDCODE
468
469     : WRITEDUMP        
470     ['] SD_EMIT IS EMIT
471     $4000 HERE OVER - DUMP
472     ['] EMIT >BODY IS EMIT
473     CLOSE
474     ;
475
476     CODE START_TIMER
477     MOV #%01_0010_0100,&$3C0
478     MOV @R13+,R0
479     ENDCODE
480
481     CODE DISPLAY_TIME
482     SUB #6,R15
483     MOV R14,4(R15)
484     MOV &$3D0,2(R15)
485     MOV #0,&$3C0
486     MOV #0,0(R15)
487     MOV #33,R14
488     CALL #<#+8
489     MOV @R15+,R14
490     ADD #2,R15
491     COLON
492     ECHO ." , done in " U. ." ms"
493     ;
494
495     : SD_TEST
496     ECHO
497     $0D EMIT
498     CR
499     ." ----------" CR
500     ." SD_TESTS  " CR
501     ." ----------" CR
502     ." ? Fast Forth Specs" CR
503     ." 0 Set date and time (MSP430FR5xxx)" CR
504     ." 1 Load {UTILITY} words" CR
505     ." 2 Load {SD_TOOLS} words" CR
506     ." 3 Load {CORE_ANS} words" CR
507     ." 4 Execute ANS core tests" CR
508     ." 5 Load a source file to compile 10k program" CR
509     ." 6 Read it only (51k)" CR
510     ." 7 write FORTH dump in YOURFILE.TXT" CR
511     ." 8 append FORTH dump to YOURFILE.TXT" CR
512     ." 9 delete YOURFILE.TXT" CR
513     ." your choice: "
514     KEY DUP $0D = 
515                 IF KEY DROP ." 'CR'"
516                 ELSE DUP EMIT
517                 THEN
518     RST_RET
519     NOECHO
520     CASE
521     '?' OF  CR LOAD" FF_SPECS.4TH"  ENDOF
522     '0' OF  CR LOAD" RTC.4TH"       ENDOF
523     '1' OF  CR LOAD" UTILITY.4TH"   ENDOF
524     '2' OF  CR LOAD" SD_TOOLS.4TH"  ENDOF
525     '3' OF  CR LOAD" CORE_ANS.4TH"  ENDOF
526     '4' OF  CR LOAD" CORETEST.4TH"  ENDOF
527     '5' OF  CR LOAD" PROG10K.4TH"   ENDOF
528
529     '6' OF  START_TIMER
530             READ" PROG10K.4TH"
531             BEGIN READ UNTIL
532             DISPLAY_TIME            ENDOF
533     '7' OF  START_TIMER
534             WRITE" YOURFILE.TXT"
535             WRITEDUMP DISPLAY_TIME  ENDOF
536     '8' OF  START_TIMER
537             APPEND" YOURFILE.TXT"
538             WRITEDUMP DISPLAY_TIME  ENDOF
539     '9' OF  START_TIMER
540             DEL" YOURFILE.TXT"
541             DISPLAY_TIME            ENDOF
542     ENDCASE
543     ;
544
545 SD_TEST