OSDN Git Service

V309
[fast-forth/master.git] / MSP430-FORTH / SD_430FR5994 / SD_TOOLS.4TH
1
2
3 ; ---------------------------------------------------------------
4 ; SD_TOOLS.4th for MSP_EXP430FR5994
5 ; BASIC TOOLS for SD Card : DIR FAT SECTOR CLUSTER
6 ; ---------------------------------------------------------------
7
8     CODE ABORT_SD_TOOLS
9     SUB #4,R15
10     MOV R14,2(R15)
11     [UNDEFINED] LOAD"       \ "
12     [IF]
13     MOV #-1,0(R15)
14     [ELSE]
15     MOV #0,0(R15)
16     [THEN]
17     MOV &$180A,R14
18     SUB #309,R14
19     COLON
20     $0D EMIT
21     ABORT" FastForth V3.9 please!"
22     ABORT" Builds FastForth with SD_CARD_LOADER addon.."
23     RST_RET
24     ;
25
26     ABORT_SD_TOOLS
27
28     MARKER {SD_TOOLS}
29
30     [UNDEFINED] HERE 
31     [IF]
32     CODE HERE
33     MOV #$4032,R0
34     ENDCODE
35     [THEN]
36
37     [UNDEFINED] + 
38     [IF]
39     CODE +
40     ADD @R15+,R14
41     MOV @R13+,R0
42     ENDCODE
43     [THEN]
44
45     [UNDEFINED] MAX 
46     [IF]
47     CODE MAX
48     CMP @R15,R14
49     S<  ?GOTO FW1
50 BW1 ADD #2,R15
51     MOV @R13+,R0
52     ENDCODE
53
54     CODE MIN
55     CMP @R15,R14
56     S<  ?GOTO BW1
57 FW1 MOV @R15+,R14
58     MOV @R13+,R0
59     ENDCODE
60     [THEN]
61
62     [UNDEFINED] C@ 
63     [IF]
64     CODE C@
65     MOV.B @R14,R14
66     MOV @R13+,R0
67     ENDCODE
68     [THEN]
69
70     [UNDEFINED] SPACE 
71     [IF]
72     : SPACE
73     $20 EMIT ;
74     [THEN]
75
76     [UNDEFINED] SPACES 
77     [IF]
78     CODE SPACES
79     CMP #0,R14
80     0<> IF
81         PUSH R13
82         BEGIN
83             LO2HI
84             $20 EMIT
85             HI2LO
86             SUB #2,R13 
87             SUB #1,R14
88         0= UNTIL
89         MOV @R1+,R13
90     THEN
91     MOV @R15+,R14
92     MOV @R13+,R0              
93     ENDCODE
94     [THEN]
95
96     [UNDEFINED] SWAP 
97     [IF]
98     CODE SWAP
99     MOV @R15,R10
100     MOV R14,0(R15)
101     MOV R10,R14
102     MOV @R13+,R0
103     ENDCODE
104     [THEN]
105
106     [UNDEFINED] OVER 
107     [IF]
108     CODE OVER
109     MOV R14,-2(R15)
110     MOV @R15,R14
111     SUB #2,R15
112     MOV @R13+,R0
113     ENDCODE
114     [THEN]
115
116     [UNDEFINED] >R 
117     [IF]
118     CODE >R
119     PUSH R14
120     MOV @R15+,R14
121     MOV @R13+,R0
122     ENDCODE
123     [THEN]
124
125     [UNDEFINED] R> 
126     [IF]
127     CODE R>
128     SUB #2,R15
129     MOV R14,0(R15)
130     MOV @R1+,R14
131     MOV @R13+,R0
132     ENDCODE
133     [THEN]
134
135     [UNDEFINED] - 
136     [IF]
137     CODE -
138     SUB @R15+,R14
139     XOR #-1,R14
140     ADD #1,R14
141     MOV @R13+,R0
142     ENDCODE
143     [THEN]
144
145     [UNDEFINED] U.R 
146     [IF]
147     : U.R
148     >R  <# 0 # #S #>  
149     R> OVER - 0 MAX SPACES TYPE
150     ;
151     [THEN]
152
153     [UNDEFINED] DO
154     [IF]
155     HDNCODE XDO
156     MOV #$8000,R9
157     SUB @R15+,R9
158     MOV R14,R8
159     ADD R9,R8
160     PUSHM #2,R9
161     MOV @R15+,R14
162     MOV @R13+,R0
163     ENDCODE
164
165     CODE DO            
166     SUB #2,R15
167     MOV R14,0(R15)
168     ADD #2,&$1DC8
169     MOV &$1DC8,R14
170     MOV #XDO,-2(R14)
171     ADD #2,&$1C00
172     MOV &$1C00,R10
173     MOV #0,0(R10)
174     MOV @R13+,R0
175     ENDCODE IMMEDIATE
176
177     HDNCODE XLOOP
178     ADD #1,0(R1)
179 BW1 BIT #$100,R2
180     0= IF
181         MOV @R13,R13
182         MOV @R13+,R0
183     THEN
184     ADD #4,R1
185     ADD #2,R13
186     MOV @R13+,R0
187     ENDCODE
188
189     CODE LOOP
190     MOV #XLOOP,R9
191 BW2 ADD #4,&$1DC8
192     MOV &$1DC8,R10
193     MOV R9,-4(R10)
194     MOV R14,-2(R10)
195     BEGIN
196         MOV &$1C00,R14
197         SUB #2,&$1C00
198         MOV @R14,R14
199         CMP #0,R14
200     0<> WHILE
201         MOV R10,0(R14)
202     REPEAT
203     MOV @R15+,R14
204     MOV @R13+,R0
205     ENDCODE IMMEDIATE
206
207     HDNCODE XPLOO
208     ADD R14,0(R1)
209     MOV @R15+,R14
210     GOTO BW1
211     ENDCODE
212
213     CODE +LOOP
214     MOV #XPLOO,R9
215     GOTO BW2
216     ENDCODE IMMEDIATE
217     [THEN]
218
219
220     [UNDEFINED] I 
221     [IF]
222     CODE I
223     SUB #2,R15
224     MOV R14,0(R15)
225     MOV @R1,R14
226     SUB 2(R1),R14
227     MOV @R13+,R0
228     ENDCODE
229     [THEN]
230
231     [UNDEFINED] CR 
232     [IF]
233     CODE CR
234     MOV #$40B4,R0
235     ENDCODE
236         
237     :NONAME
238     $0D EMIT $0A EMIT
239     ; IS CR
240     [THEN]
241
242     [UNDEFINED] DUMP 
243     [IF]
244     CODE DUMP
245     PUSH R13
246     PUSH &$1DBE
247     MOV #$10,&$1DBE
248     ADD @R15,R14
249     LO2HI
250     SWAP
251     $FFF0 AND
252     DO  CR
253         I 4 U.R SPACE
254         I 8 + I
255         DO I C@ 3 U.R LOOP
256         SPACE
257         I $10 + I 8 +
258         DO I C@ 3 U.R LOOP  
259         SPACE SPACE
260         I $10 + I
261         DO I C@ $7E MIN $20 MAX EMIT LOOP
262     $10 +LOOP
263     R> $1DBE !
264     ;
265     [THEN]
266
267     CODE SECTOR.
268 BW1 MOV     R14,R9
269     MOV     @R15,R10
270     CALL    #R_SECT_WX
271     COLON
272     SPACE <# #S #> TYPE
273     $1E00 $200 DUMP CR ;
274
275     CODE CLUSTER.
276 BW2 BIT.B   #4,&$260
277     0<> IF
278         MOV #SYS+$16,R0
279     THEN
280     MOV.B &$2012,R10
281     MOV @R15,R9
282     BEGIN
283         RRA R10
284     U< WHILE
285         ADD R9,R9
286         ADDC R14,R14
287     REPEAT  
288     ADD     &$2010,R9
289     MOV     R9,0(R15)      
290     ADDC    #0,R14
291     GOTO    BW1
292     ENDCODE
293
294     CODE FAT
295     SUB     #4,R15
296     MOV     R14,2(R15)
297     MOV     &$2008,0(R15)
298     MOV     #0,R14
299     GOTO    BW1
300     ENDCODE
301
302     CODE DIR
303     SUB     #4,R15
304     MOV     R14,2(R15)
305     MOV     &$202C,0(R15)
306     MOV     &$202E,R14
307     GOTO    BW2
308     ENDCODE
309
310     RST_SET ECHO