OSDN Git Service

Merge branch 'master' of https://framagit.org/Jean-Mi/FAST-FORTH
[fast-forth/master.git] / MSP430-FORTH / MSP_EXP430FR5994 / SD_TOOLS.4TH
1
2
3 ; ---------------------------------------------------------------
4 ; SD_TOOLS.4th for MSP_EXP430FR5994 : BASIC TOOLS for SD Card : DIR FAT SECTOR CLUSTER
5 ; ---------------------------------------------------------------
6
7 CODE ABORT_SD_TOOLS
8 SUB #2,R15
9 MOV R14,0(R15)
10 MOV &$180E,R14
11 SUB #308,R14
12 COLON
13 $0D EMIT
14 ABORT" FastForth V3.8 please!"
15 PWR_STATE
16 ;
17
18 ABORT_SD_TOOLS
19
20
21 [DEFINED] {SD_TOOLS} [IF]  {SD_TOOLS} [THEN]
22
23 [UNDEFINED] {SD_TOOLS} [IF]
24
25 MARKER {SD_TOOLS}
26
27 [UNDEFINED] + [IF]
28 CODE +
29 ADD @R15+,R14
30 MOV @R13+,R0
31 ENDCODE
32 [THEN]
33
34 [UNDEFINED] MAX [IF]
35
36 CODE MAX
37     CMP @R15,R14
38     S<  ?GOTO FW1
39 BW1 ADD #2,R15
40     MOV @R13+,R0
41 ENDCODE
42
43 CODE MIN
44     CMP @R15,R14
45     S<  ?GOTO BW1
46 FW1 MOV @R15+,R14
47     MOV @R13+,R0
48 ENDCODE
49
50 [THEN]
51
52 [UNDEFINED] C@ [IF]
53 CODE C@
54 MOV.B @R14,R14
55 MOV @R13+,R0
56 ENDCODE
57 [THEN]
58
59 [UNDEFINED] SPACE [IF]
60 : SPACE
61 $20 EMIT ;
62 [THEN]
63
64 [UNDEFINED] SPACES [IF]
65 CODE SPACES
66 CMP #0,R14
67 0<> IF
68     PUSH R13
69     BEGIN
70         LO2HI
71         $20 EMIT
72         HI2LO
73         SUB #2,R13 
74         SUB #1,R14
75     0= UNTIL
76     MOV @R1+,R13
77 THEN
78 MOV @R15+,R14
79 MOV @R13+,R0              
80 ENDCODE
81 [THEN]
82
83 [UNDEFINED] SWAP [IF]
84 CODE SWAP
85 MOV @R15,R10
86 MOV R14,0(R15)
87 MOV R10,R14
88 MOV @R13+,R0
89 ENDCODE
90 [THEN]
91
92 [UNDEFINED] OVER [IF]
93 CODE OVER
94 MOV R14,-2(R15)
95 MOV @R15,R14
96 SUB #2,R15
97 MOV @R13+,R0
98 ENDCODE
99 [THEN]
100
101 [UNDEFINED] >R [IF]
102 CODE >R
103 PUSH R14
104 MOV @R15+,R14
105 MOV @R13+,R0
106 ENDCODE
107 [THEN]
108
109 [UNDEFINED] R> [IF]
110 CODE R>
111 SUB #2,R15
112 MOV R14,0(R15)
113 MOV @R1+,R14
114 MOV @R13+,R0
115 ENDCODE
116 [THEN]
117
118 [UNDEFINED] - [IF]
119 CODE -
120 SUB @R15+,R14
121 XOR #-1,R14
122 ADD #1,R14
123 MOV @R13+,R0
124 ENDCODE
125 [THEN]
126
127 [UNDEFINED] U.R [IF]
128 : U.R
129   >R  <# 0 # #S #>  
130   R> OVER - 0 MAX SPACES TYPE
131 ;
132 [THEN]
133
134 [UNDEFINED] DO [IF]
135 CODE DO
136 SUB #2,R15
137 MOV R14,0(R15)
138 ADD #2,&$1DC6
139 MOV &$1DC6,R14
140 MOV #$403E,-2(R14)
141 ADD #2,&$1C00
142 MOV &$1C00,R10
143 MOV #0,0(R10)
144 MOV @R13+,R0
145 ENDCODE IMMEDIATE
146
147 CODE LOOP
148     MOV #$4060,R9
149 BW1 ADD #4,&$1DC6
150     MOV &$1DC6,R10
151     MOV R9,-4(R10)
152     MOV R14,-2(R10)
153 BEGIN
154     MOV &$1C00,R14
155     SUB #2,&$1C00
156     MOV @R14,R14
157     CMP #0,R14
158 0<> WHILE
159     MOV R10,0(R14)
160 REPEAT
161     MOV @R15+,R14
162     MOV @R13+,R0
163 ENDCODE IMMEDIATE
164
165 CODE +LOOP
166 MOV #$404E,R9
167 GOTO BW1
168 ENDCODE IMMEDIATE
169 [THEN]
170
171 [UNDEFINED] I [IF]
172 CODE I
173 SUB #2,R15
174 MOV R14,0(R15)
175 MOV @R1,R14
176 SUB 2(R1),R14
177 MOV @R13+,R0
178 ENDCODE
179 [THEN]
180
181 [UNDEFINED] DUMP [IF]
182 CODE DUMP
183 PUSH R13
184 PUSH &$1DDC
185 MOV #$10,&$1DDC
186 ADD @R15,R14
187 LO2HI
188   SWAP
189   DO  CR
190     I 4 U.R SPACE
191       I 8 + I
192       DO I C@ 3 U.R LOOP
193       SPACE
194       I $10 + I 8 +
195       DO I C@ 3 U.R LOOP  
196       SPACE SPACE
197       I $10 + I
198       DO I C@ $7E MIN $20 MAX EMIT LOOP
199   $10 +LOOP
200   R> $1DDC !
201 ;
202 [THEN]
203
204 CODE SECTOR.
205 BW1 MOV     R14,R9
206     MOV     @R15,R10
207     CALL    #READ_SWX
208 COLON
209     <# #S #> TYPE SPACE
210     $1E00 $200 DUMP CR ;
211
212 CODE CLUSTR.
213 BW2 BIT.B   #4,&$260
214     0<> IF
215         MOV #COLD,R0
216     THEN
217     MOV.B &$2012,R10
218     MOV @R15,R9
219     GOTO FW1
220     BEGIN
221         ADD R9,R9
222         ADDC R14,R14
223 FW1     RRA R10
224     U>= UNTIL
225     ADD     &$2010,R9
226     MOV     R9,0(R15)      
227     ADDC    #0,R14
228     GOTO    BW1
229 ENDCODE
230
231 CODE FAT
232     SUB     #4,R15
233     MOV     R14,2(R15)
234     MOV     &$2008,0(R15)
235     MOV     #0,R14
236     GOTO    BW1
237 ENDCODE
238
239 CODE DIR
240     SUB     #4,R15
241     MOV     R14,2(R15)
242     MOV     &$202C,0(R15)
243     MOV     &$202E,R14
244     CMP     #0,R14
245     0<>     ?GOTO BW2
246     CMP     #1,0(R15)
247     0<>     ?GOTO BW2
248     MOV     &$200E,0(R15)
249     GOTO    BW1
250 ENDCODE
251
252
253 RST_HERE
254
255 [THEN]
256 ECHO
257