OSDN Git Service

V 3.2
[fast-forth/master.git] / MSP430-FORTH / MSP_EXP430FR5994 / MISC / TESTASM.4TH
1
2 ; -----------------------------------------------------------------------
3 ; TEST_ASM.4th
4 ; -----------------------------------------------------------------------
5
6 [UNDEFINED] >R [IF]
7 CODE >R
8 PUSH R14
9 MOV @R15+,R14
10 MOV @R13+,R0
11 ENDCODE
12 [THEN]
13
14 [UNDEFINED] R> [IF]
15 CODE R>
16 MOV R6,R0
17 ENDCODE
18 [THEN]
19
20 [UNDEFINED] + [IF]
21 CODE +
22 ADD @R15+,R14
23 MOV @R13+,R0
24 ENDCODE
25 [THEN]
26
27 [UNDEFINED] - [IF]
28 CODE -
29 SUB @R15+,R14
30 XOR #-1,R14
31 ADD #1,R14
32 MOV @R13+,R0
33 ENDCODE
34 [THEN]
35
36 [UNDEFINED] SWAP [IF]
37 CODE SWAP
38 MOV @R15,R10
39 MOV R14,0(R15)
40 MOV R10,R14
41 MOV @R13+,R0
42 ENDCODE
43 [THEN]
44
45 [UNDEFINED] MAX [IF]
46
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
61 [THEN]
62
63 [UNDEFINED] @ [IF]
64 CODE @
65 MOV @R14,R14
66 MOV @R13+,R0
67 ENDCODE
68 [THEN]
69
70 [UNDEFINED] ! [IF]
71 CODE !
72 MOV @R15+,0(R14)
73 MOV @R15+,R14
74 MOV @R13+,R0
75 ENDCODE
76 [THEN]
77
78 [UNDEFINED] C@ [IF]
79 CODE C@
80 MOV.B @R14,R14
81 MOV @R13+,R0
82 ENDCODE
83 [THEN]
84
85 [UNDEFINED] VARIABLE [IF]
86 : VARIABLE 
87 CREATE
88 HI2LO
89 MOV #$1286,-4(R10)
90 MOV @R1+,R13
91 MOV @R13+,R0
92 ENDCODE
93 [THEN]
94
95 [UNDEFINED] CONSTANT [IF]
96 : CONSTANT 
97 CREATE
98 HI2LO
99 MOV R14,-2(R10)
100 MOV @R15+,R14
101 MOV @R1+,R13
102 MOV @R13+,R0
103 ENDCODE
104 [THEN]
105
106 [UNDEFINED] DEFER [IF]
107
108 : DEFER
109 CREATE
110 HI2LO
111 MOV #$4030,-4(R10)
112 MOV #$402C,-2(R10)
113 MOV @R1+,R13
114 MOV @R13+,R0
115 ENDCODE
116 [THEN]
117
118 [UNDEFINED] >BODY [IF]
119 CODE >BODY
120 ADD #4,R14
121 MOV @R13+,R0
122 ENDCODE
123 [THEN]
124
125 [UNDEFINED] SPACE [IF]
126 : SPACE
127 $20 EMIT ;
128 [THEN]
129
130 [UNDEFINED] SPACES [IF]
131 CODE SPACES
132 CMP #0,R14
133 0<> IF
134     PUSH R13
135     BEGIN
136         LO2HI
137         $20 EMIT
138         HI2LO
139         SUB #2,R13 
140         SUB #1,R14
141     0= UNTIL
142     MOV @R1+,R13
143 THEN
144 MOV @R15+,R14
145 MOV @R13+,R0              
146 ENDCODE
147 [THEN]
148
149 [UNDEFINED] DUP [IF]
150 CODE DUP
151 BW1 SUB #2,R15
152     MOV R14,0(R15)
153     MOV @R13+,R0
154 ENDCODE
155
156 [UNDEFINED] OVER [IF]
157 CODE OVER
158 MOV R14,-2(R15)
159 MOV @R15,R14
160 SUB #2,R15
161 MOV @R13+,R0
162 ENDCODE
163 [THEN]
164
165 [UNDEFINED] U.R [IF]
166 : U.R
167   >R  <# 0 # #S #>  
168   R> OVER - 0 MAX SPACES TYPE
169 ;
170 [THEN]
171
172 [UNDEFINED] DO [IF]
173 CODE DO
174 SUB #2,R15
175 MOV R14,0(R15)
176 ADD #2,&$1DC6
177 MOV &$1DC6,R14
178 MOV #$4056,-2(R14)
179 ADD #2,&$1C00
180 MOV &$1C00,R10
181 MOV #0,0(R10)
182 MOV @R13+,R0
183 ENDCODE IMMEDIATE
184 [THEN]
185
186 [UNDEFINED] LOOP [IF]
187 CODE LOOP
188     MOV #$4078,R9
189 BW1 ADD #4,&$1DC6
190     MOV &$1DC6,R10
191     MOV R9,-4(R10)
192     MOV R14,-2(R10)
193 BEGIN
194     MOV &$1C00,R14
195     SUB #2,&$1C00
196     MOV @R14,R14
197     CMP #0,R14
198 0<> WHILE
199     MOV R10,0(R14)
200 REPEAT
201     MOV @R15+,R14
202     MOV @R13+,R0
203 ENDCODE IMMEDIATE
204 [THEN]
205
206 [UNDEFINED] +LOOP [IF]
207 CODE +LOOP
208 MOV #$4066,R9
209 GOTO BW1
210 ENDCODE IMMEDIATE
211 [THEN]
212
213 [UNDEFINED] I [IF]
214 CODE I
215 SUB #2,R15
216 MOV R14,0(R15)
217 MOV @R1,R14
218 SUB 2(R1),R14
219 MOV @R13+,R0
220 ENDCODE
221 [THEN]
222
223 [UNDEFINED] DUMP [IF]
224 CODE DUMP
225 PUSH R13
226 PUSH &$1DDC
227 MOV #$10,&$1DDC
228 ADD @R15,R14
229 LO2HI
230   SWAP
231   DO  CR
232     I 4 U.R SPACE
233       I 8 + I
234       DO I C@ 3 U.R LOOP
235       SPACE
236       I $10 + I 8 +
237       DO I C@ 3 U.R LOOP  
238       SPACE SPACE
239       I $10 + I
240       DO I C@ $7E MIN $20 MAX EMIT LOOP
241   $10 +LOOP
242   R> $1DDC !
243 ;
244 [THEN]
245
246 CODE TESTPUSHM
247 BW1
248             MOV     #22222,R8
249             MOV     #3,R9
250             MOV     #2,R10
251             MOV     #1,R11
252             MOV     #0,R12
253
254             PUSHM   #4,R13
255             POPM    #4,R13
256             SUB     #10,R15
257             MOV     R14,8(R15)
258             MOV     R12,6(R15)
259             MOV     R11,4(R15)
260             MOV     R10,2(R15)
261             MOV     R9,0(R15)
262             MOV     R8,R14
263             RRAM    #1,R14
264             RLAM    #2,R14
265             RRCM    #1,R14
266             RRUM    #1,R14
267             COLON
268             space . . . . .
269             ;
270
271 TESTPUSHM  ; you should see 11111 3 2 1 0 -->
272
273 CODE TESTPOPM
274             GOTO BW1
275 ENDCODE
276
277
278 TESTPOPM  ; you should see 11111 3 2 1 0 -->
279
280
281
282 CODE TEST1
283
284             MOV &$1DDC,&$1DDC
285             CMP #%10,&$1DDC
286 0<> IF      MOV #2,&$1DDC
287 ELSE        MOV #$0A,&$1DDC
288 THEN        
289             COLON
290             $1DDC @ U.
291             ;
292
293
294 : TEST2
295             $1DDC @ U.
296             HI2LO
297
298
299             CMP #2, &$1DDC
300 0<> IF      MOV #2, &$1DDC
301 ELSE        MOV #10,&$1DDC
302 THEN
303             MOV @R1+,R13
304             MOV @R13+,R0
305 ENDCODE
306
307
308 CODE TEST3
309             CMP #2, &$1DDC
310 0<> IF      MOV #2, &$1DDC
311 ELSE        MOV #10,&$1DDC
312 THEN        COLON
313             $1DDC @  U.
314 ;
315
316
317
318 : TEST5
319             SPACE
320             HI2LO
321             SUB #2,R15
322             MOV R14,0(R15)
323             MOV #%1010,R14
324 BEGIN       SUB #$0001,R14
325             LO2HI
326
327             DUP U.
328             HI2LO
329             CMP #0,R14
330 0= UNTIL    MOV @R15+,R14
331             MOV @R1+,R13
332             MOV @R13+,R0
333 ENDCODE
334
335 TEST5  ; you should see :  9 8 7 6 5 4 3 2 1 0 -->
336
337
338
339 [UNDEFINED] C, [IF]
340 CODE C,
341 MOV &$1DC6,R10
342 MOV.B R14,0(R10)
343 ADD #1,&$1DC6
344 MOV @R15+,R14
345 MOV @R13+,R0
346 ENDCODE
347 [THEN]
348
349 [UNDEFINED] C@ [IF]
350 CODE C@
351 MOV.B @R14,R14
352 MOV @R13+,R0
353 ENDCODE
354 [THEN]
355
356 : BYTES_TABLE_IDX
357 CREATE 
358 0 DO I C,
359 LOOP
360 DOES>
361 +
362 ;
363
364 8 BYTES_TABLE_IDX BYTES_TABLE
365
366 2 BYTES_TABLE C@ . ; you should see 2 -->
367
368
369 VARIABLE BYTES_TABLE1
370
371 $0201 BYTES_TABLE1 !
372
373 CODE IDX_TEST1
374     MOV.B   BYTES_TABLE1(R14),R14
375 COLON
376     U. 
377 ;      
378
379 0 IDX_TEST1     ; you should see 1 -->
380
381 CODE TEST6
382             MOV 0(R15),0(R15)
383             MOV @R13+,R0
384 ENDCODE
385
386
387 1 TEST6 .       ; you should see 1 -->
388
389
390
391
392
393 CREATE TABLE0
394 0 C,
395 1 C,
396 2 C,
397 3 C,
398
399
400 CREATE TABLE10
401 $10 C,
402 $11 C,
403 $12 C,
404 $13 C,
405
406
407
408 CREATE TABLE20
409 $20 C,
410 $21 C,
411 $22 C,
412 $23 C,
413
414
415 CREATE TABLE
416
417
418 TABLE 2 - CONSTANT PFA_TABLE
419
420
421 CODE REDIRECT       ; <table> --    redirects TABLE to argument <table>    
422 MOV R14,&PFA_TABLE
423 MOV @R15+,R14
424 MOV @R13+,R0
425 ENDCODE
426
427
428 CODE REDIRECT0      ; --            redirects TABLE to TABLE0        
429 MOV #TABLE0,&PFA_TABLE
430 MOV @R13+,R0
431 ENDCODE
432
433
434 CODE REDIRECT10     ; --            redirects TABLE to TABLE10        
435 MOV #TABLE10,&PFA_TABLE
436 MOV @R13+,R0
437 ENDCODE
438
439
440 CODE REDIRECT20     ; --            redirects TABLE to TABLE20        
441 MOV #TABLE20,&PFA_TABLE
442 MOV @R13+,R0
443 ENDCODE
444
445
446 ' TABLE0 10 DUMP
447
448 ' TABLE10 10 DUMP
449
450 ' TABLE20 10 DUMP
451
452
453 TABLE0 REDIRECT TABLE 10 DUMP
454
455 TABLE10 REDIRECT TABLE 10 DUMP
456
457 TABLE20 REDIRECT TABLE 10 DUMP
458
459
460 REDIRECT0 TABLE 10 DUMP
461
462 REDIRECT10 TABLE 10 DUMP
463
464 REDIRECT20 TABLE 10 DUMP
465
466
467 TABLE0 PFA_TABLE ! TABLE 10 DUMP
468
469 TABLE10 PFA_TABLE ! TABLE 10 DUMP
470
471 TABLE20 PFA_TABLE ! TABLE 10 DUMP
472
473
474
475
476 ; -----------------------------------------------------------------------
477 ; create a primary DEFERred assembly word
478 ; -----------------------------------------------------------------------
479
480
481 DEFER TRUC              ; here, TRUC is a secondary DEFERred word (i.e. without BODY)
482
483
484
485 CODENNM                 ; leaves its execution address (CFA) on stack
486     SUB #2,R15
487     MOV R14,0(R15)
488     MOV @R13+,R0
489 ENDCODE 
490
491 DUP .
492
493 IS TRUC                 ; TRUC becomes a primary DEFERred word
494                         ; with its default action (DUP) located at its BODY addresse.
495
496 TRUC .                  ; display R14 value -->
497
498
499 ' TRUC >BODY IS TRUC    ; TRUC is reinitialzed with its default action
500
501
502 TRUC .                  ; display R14 value --> 
503
504
505
506
507