OSDN Git Service

V205; added MSP-EXP430FR2355.
[fast-forth/master.git] / ForthThreads.mac
1 ; -*- coding: utf-8 -*-
2 ; ForthThreads.mac
3
4 voclink     .set 0                      ; init vocabulary links
5 forthlink   .set 0
6 asmlink     .set 0
7
8
9     .IF THREADS = 1
10
11 FORTHWORD   .MACRO  name
12             .word   forthlink
13 forthlink   .set    $
14             .byte   STRLEN(name),name
15 ;            .align  2
16             .ENDM
17
18 FORTHWORDIMM .MACRO  name
19             .word   forthlink
20 forthlink   .set    $
21             .byte   STRLEN(name)+128,name
22 ;            .align  2
23             .ENDM
24
25 asmword     .MACRO  name
26             .word   asmlink
27 asmlink     .set    $
28             .byte   STRLEN(name),name
29 ;            .align  2
30             .ENDM
31
32     .ELSE
33 forthlink1  .set 0
34 forthlink2  .set 0
35 forthlink3  .set 0
36 forthlink4  .set 0
37 forthlink5  .set 0
38 forthlink6  .set 0
39 forthlink7  .set 0
40 forthlink8  .set 0
41 forthlink9  .set 0
42 forthlink10 .set 0
43 forthlink11 .set 0
44 forthlink12 .set 0
45 forthlink13 .set 0
46 forthlink14 .set 0
47 forthlink15 .set 0
48 forthlink16 .set 0
49 forthlink17 .set 0
50 forthlink18 .set 0
51 forthlink19 .set 0
52 forthlink20 .set 0
53 forthlink21 .set 0
54 forthlink22 .set 0
55 forthlink23 .set 0
56 forthlink24 .set 0
57 forthlink25 .set 0
58 forthlink26 .set 0
59 forthlink27 .set 0
60 forthlink28 .set 0
61 forthlink29 .set 0
62 forthlink30 .set 0
63 forthlink31 .set 0
64
65 asmlink1    .set 0
66 asmlink2    .set 0
67 asmlink3    .set 0
68 asmlink4    .set 0
69 asmlink5    .set 0
70 asmlink6    .set 0
71 asmlink7    .set 0
72 asmlink8    .set 0
73 asmlink9    .set 0
74 asmlink10   .set 0
75 asmlink11   .set 0
76 asmlink12   .set 0
77 asmlink13   .set 0
78 asmlink14   .set 0
79 asmlink15   .set 0
80 asmlink16   .set 0
81 asmlink17   .set 0
82 asmlink18   .set 0
83 asmlink19   .set 0
84 asmlink20   .set 0
85 asmlink21   .set 0
86 asmlink22   .set 0
87 asmlink23   .set 0
88 asmlink24   .set 0
89 asmlink25   .set 0
90 asmlink26   .set 0
91 asmlink27   .set 0
92 asmlink28   .set 0
93 asmlink29   .set 0
94 asmlink30   .set 0
95 asmlink31   .set 0
96
97 ;-------------------------------------------
98 FORTHWORD   .MACRO  name
99 ;-------------------------------------------
100 ; (THREADS-1)*2 = AND mask to define CURRENT offset in vocabulary
101 thread      .set    charfromstr(name,0) &  ((THREADS-1)*2)
102
103
104     .SWITCH thread
105     .case 0
106             .word   forthlink
107 forthlink   .set    $
108     .case 2
109             .word   forthlink1
110 forthlink1  .set    $
111     .case 4
112             .word   forthlink2
113 forthlink2  .set    $
114     .case 6
115             .word   forthlink3
116 forthlink3  .set    $
117     .case 8
118             .word   forthlink4
119 forthlink4  .set    $
120     .case 10
121             .word   forthlink5
122 forthlink5  .set    $
123     .case 12
124             .word   forthlink6
125 forthlink6  .set    $
126     .case 14
127             .word   forthlink7
128 forthlink7  .set    $
129     .case 16
130             .word   forthlink8
131 forthlink8  .set    $
132     .case 18
133             .word   forthlink9
134 forthlink9  .set    $
135     .case 20
136             .word   forthlink10
137 forthlink10 .set    $
138     .case 22
139             .word   forthlink11
140 forthlink11 .set    $
141     .case 24
142             .word   forthlink12
143 forthlink12 .set    $
144     .case 26
145             .word   forthlink13
146 forthlink13 .set    $
147     .case 28
148             .word   forthlink14
149 forthlink14 .set    $
150     .case 30
151             .word   forthlink15
152 forthlink15 .set    $
153     .case 32
154             .word   forthlink16
155 forthlink16 .set    $
156     .case 34
157             .word   forthlink17
158 forthlink17 .set    $
159     .case 36
160             .word   forthlink18
161 forthlink18 .set    $
162     .case 38
163             .word   forthlink19
164 forthlink19 .set    $
165     .case 40
166             .word   forthlink20
167 forthlink20 .set    $
168     .case 42
169             .word   forthlink21
170 forthlink21 .set    $
171     .case 44
172             .word   forthlink22
173 forthlink22 .set    $
174     .case 46
175             .word   forthlink23
176 forthlink23 .set    $
177     .case 48
178             .word   forthlink24
179 forthlink24 .set    $
180     .case 50
181             .word   forthlink25
182 forthlink25 .set    $
183     .case 52
184             .word   forthlink26
185 forthlink26 .set    $
186     .case 54
187             .word   forthlink27
188 forthlink27 .set    $
189     .case 56
190             .word   forthlink28
191 forthlink28 .set    $
192     .case 58
193             .word   forthlink29
194 forthlink29 .set    $
195     .case 60
196             .word   forthlink30
197 forthlink30 .set    $
198     .case 62
199             .word   forthlink31
200 forthlink31 .set    $
201
202     .endcase
203
204             .byte   STRLEN(name),name
205 ;            .align  2
206             .ENDM
207
208
209
210 ;-------------------------------------------
211 FORTHWORDIMM .MACRO  name
212 ;-------------------------------------------
213
214 ; (THREADS-1)*2 = AND mask to define CURRENT offset in vocabulary
215 thread      .set    charfromstr(name,0) &  ((THREADS-1)*2)
216
217
218     .SWITCH thread
219     .case 0
220             .word   forthlink
221 forthlink   .set    $
222     .case 2
223             .word   forthlink1
224 forthlink1  .set    $
225     .case 4
226             .word   forthlink2
227 forthlink2  .set    $
228     .case 6
229             .word   forthlink3
230 forthlink3  .set    $
231     .case 8
232             .word   forthlink4
233 forthlink4  .set    $
234     .case 10
235             .word   forthlink5
236 forthlink5  .set    $
237     .case 12
238             .word   forthlink6
239 forthlink6  .set    $
240     .case 14
241             .word   forthlink7
242 forthlink7  .set    $
243     .case 16
244             .word   forthlink8
245 forthlink8  .set    $
246     .case 18
247             .word   forthlink9
248 forthlink9  .set    $
249     .case 20
250             .word   forthlink10
251 forthlink10 .set    $
252     .case 22
253             .word   forthlink11
254 forthlink11 .set    $
255     .case 24
256             .word   forthlink12
257 forthlink12 .set    $
258     .case 26
259             .word   forthlink13
260 forthlink13 .set    $
261     .case 28
262             .word   forthlink14
263 forthlink14 .set    $
264     .case 30
265             .word   forthlink15
266 forthlink15 .set    $
267     .case 32
268             .word   forthlink16
269 forthlink16 .set    $
270     .case 34
271             .word   forthlink17
272 forthlink17 .set    $
273     .case 36
274             .word   forthlink18
275 forthlink18 .set    $
276     .case 38
277             .word   forthlink19
278 forthlink19 .set    $
279     .case 40
280             .word   forthlink20
281 forthlink20 .set    $
282     .case 42
283             .word   forthlink21
284 forthlink21 .set    $
285     .case 44
286             .word   forthlink22
287 forthlink22 .set    $
288     .case 46
289             .word   forthlink23
290 forthlink23 .set    $
291     .case 48
292             .word   forthlink24
293 forthlink24 .set    $
294     .case 50
295             .word   forthlink25
296 forthlink25 .set    $
297     .case 52
298             .word   forthlink26
299 forthlink26 .set    $
300     .case 54
301             .word   forthlink27
302 forthlink27 .set    $
303     .case 56
304             .word   forthlink28
305 forthlink28 .set    $
306     .case 58
307             .word   forthlink29
308 forthlink29 .set    $
309     .case 60
310             .word   forthlink30
311 forthlink30 .set    $
312     .case 62
313             .word   forthlink31
314 forthlink31 .set    $
315
316
317     .endcase
318
319             .byte   STRLEN(name)+128,name
320 ;            .align  2
321             .ENDM
322
323
324
325 ;-------------------------------------------
326 asmword     .MACRO  name
327 ;-------------------------------------------
328
329 ; (THREADS-1)*2 = AND mask to define CURRENT offset in vocabulary
330 thread      .set    charfromstr(name,0) &  ((THREADS-1)*2)
331
332
333     .SWITCH thread
334     .case 0
335             .word   asmlink
336 asmlink   .set    $
337     .case 2
338             .word   asmlink1
339 asmlink1  .set    $
340     .case 4
341             .word   asmlink2
342 asmlink2  .set    $
343     .case 6
344             .word   asmlink3
345 asmlink3  .set    $
346     .case 8
347             .word   asmlink4
348 asmlink4  .set    $
349     .case 10
350             .word   asmlink5
351 asmlink5  .set    $
352     .case 12
353             .word   asmlink6
354 asmlink6  .set    $
355     .case 14
356             .word   asmlink7
357 asmlink7  .set    $
358     .case 16
359             .word   asmlink8
360 asmlink8  .set    $
361     .case 18
362             .word   asmlink9
363 asmlink9  .set    $
364     .case 20
365             .word   asmlink10
366 asmlink10 .set    $
367     .case 22
368             .word   asmlink11
369 asmlink11 .set    $
370     .case 24
371             .word   asmlink12
372 asmlink12 .set    $
373     .case 26
374             .word   asmlink13
375 asmlink13 .set    $
376     .case 28
377             .word   asmlink14
378 asmlink14 .set    $
379     .case 30
380             .word   asmlink15
381 asmlink15 .set    $
382     .case 32
383             .word   asmlink16
384 asmlink16 .set    $
385     .case 34
386             .word   asmlink17
387 asmlink17 .set    $
388     .case 36
389             .word   asmlink18
390 asmlink18 .set    $
391     .case 38
392             .word   asmlink19
393 asmlink19 .set    $
394     .case 40
395             .word   asmlink20
396 asmlink20 .set    $
397     .case 42
398             .word   asmlink21
399 asmlink21 .set    $
400     .case 44
401             .word   asmlink22
402 asmlink22 .set    $
403     .case 46
404             .word   asmlink23
405 asmlink23 .set    $
406     .case 48
407             .word   asmlink24
408 asmlink24 .set    $
409     .case 50
410             .word   asmlink25
411 asmlink25 .set    $
412     .case 52
413             .word   asmlink26
414 asmlink26 .set    $
415     .case 54
416             .word   asmlink27
417 asmlink27 .set    $
418     .case 56
419             .word   asmlink28
420 asmlink28 .set    $
421     .case 58
422             .word   asmlink29
423 asmlink29 .set    $
424     .case 60
425             .word   asmlink30
426 asmlink30 .set    $
427     .case 62
428             .word   asmlink31
429 asmlink31 .set    $
430
431
432     .endcase ; asmlink
433
434             .byte   STRLEN(name),name
435 ;            .align  2
436             .ENDM
437
438     .endif ; thread case