OSDN Git Service

Merge framagit.org:Jean-Mi/FAST-FORTH
[fast-forth/master.git] / MSP430-FORTH / SD_for_FR5994 / MISC / TESTASM.4th
1
2 ; -----------------------------------------------------------------------
3 ; File Name Test_Extd_ASM.4th
4 ; -----------------------------------------------------------------------
5
6 CODE TESTPUSHM
7             MOV     #22222,R8
8             MOV     #3,R9
9             MOV     #2,R10
10             MOV     #1,R11
11             MOV     #0,R12
12
13             PUSHM   #4,R13
14             POPM    #4,R13
15             SUB     #10,R15
16             MOV     R14,8(R15)
17             MOV     R12,6(R15)
18             MOV     R11,4(R15)
19             MOV     R10,2(R15)
20             MOV     R9,0(R15)
21             MOV     R8,R14
22             RRAM    #1,R14
23             RLAM    #2,R14
24             RRCM    #1,R14
25             RRUM    #1,R14
26             COLON
27             space . . . . .
28             ;
29
30 TESTPUSHM  ; you should see 11111 3 2 1 0 -->
31
32 CODE TESTPOPM
33             JMP TESTPUSHM
34 ENDCODE
35
36
37 TESTPOPM  ; you should see 11111 3 2 1 0 -->
38
39
40
41 CODE TEST1
42
43             MOV &BASE,&BASE
44             CMP #%10,&BASE
45 0<> IF      MOV #2,&BASE
46 ELSE        MOV #$0A,&BASE
47 THEN        
48             COLON
49             BASE @ U.
50             ;
51
52
53 : TEST2
54             BASE @ U.
55             HI2LO
56
57
58             CMP #2, &BASE
59 0<> IF      MOV #2, &BASE
60 ELSE        MOV #10,&BASE
61 THEN
62             MOV @R1+,R13
63             MOV @R13+,R0
64 ENDCODE
65
66
67 CODE TEST3
68             CMP #2, &BASE
69 0<> IF      MOV #2, &BASE
70 ELSE        MOV #10,&BASE
71 THEN        COLON
72             BASE @  U.
73 ;
74
75
76
77 : TEST5
78             SPACE
79             HI2LO
80             SUB #2,R15
81             MOV R14,0(R15)
82             MOV #%1010,R14
83 BEGIN       SUB #$0001,R14
84             LO2HI
85
86             DUP U.
87             HI2LO
88             CMP #0,R14
89 0= UNTIL    MOV @R15+,R14
90             MOV @R1+,R13
91             MOV @R13+,R0
92 ENDCODE
93
94 TEST5  ; you should see :  9 8 7 6 5 4 3 2 1 0 -->
95
96
97
98 : BYTES_TABLE_IDX
99 CREATE 
100 0 DO I C,
101 LOOP
102 DOES>
103 +
104 ;
105
106 8 BYTES_TABLE_IDX BYTES_TABLE
107
108 2 BYTES_TABLE C@ . ; you should see 2 -->
109
110
111 VARIABLE BYTES_TABLE1
112
113 $0201 BYTES_TABLE1 !
114
115 CODE IDX_TEST1
116     MOV.B   BYTES_TABLE1(R14),R14
117 COLON
118     U. 
119 ;      
120
121 0 IDX_TEST1     ; you should see 1 -->
122
123 CODE TEST6
124             MOV 0(R15),0(R15)
125             MOV @R13+,R0
126 ENDCODE
127
128
129 1 TEST6 .       ; you should see 1 -->
130
131
132
133
134
135 CREATE TABLE0
136 0 C,
137 1 C,
138 2 C,
139 3 C,
140
141
142 CREATE TABLE10
143 $10 C,
144 $11 C,
145 $12 C,
146 $13 C,
147
148
149
150 CREATE TABLE20
151 $20 C,
152 $21 C,
153 $22 C,
154 $23 C,
155
156
157 CREATE TABLE
158
159
160 TABLE 2 - CONSTANT PFA_TABLE
161
162
163 CODE REDIRECT       ; <table> --    redirects TABLE to argument <table>    
164 MOV R14,&PFA_TABLE
165 MOV @R15+,R14
166 MOV @R13+,R0
167 ENDCODE
168
169
170 CODE REDIRECT0      ; --            redirects TABLE to TABLE0        
171 MOV #TABLE0,&PFA_TABLE
172 MOV @R13+,R0
173 ENDCODE
174
175
176 CODE REDIRECT10     ; --            redirects TABLE to TABLE10        
177 MOV #TABLE10,&PFA_TABLE
178 MOV @R13+,R0
179 ENDCODE
180
181
182 CODE REDIRECT20     ; --            redirects TABLE to TABLE20        
183 MOV #TABLE20,&PFA_TABLE
184 MOV @R13+,R0
185 ENDCODE
186
187
188 ' TABLE0 10 DUMP
189
190 ' TABLE10 10 DUMP
191
192 ' TABLE20 10 DUMP
193
194
195 TABLE0 REDIRECT TABLE 10 DUMP
196
197 TABLE10 REDIRECT TABLE 10 DUMP
198
199 TABLE20 REDIRECT TABLE 10 DUMP
200
201
202 REDIRECT0 TABLE 10 DUMP
203
204 REDIRECT10 TABLE 10 DUMP
205
206 REDIRECT20 TABLE 10 DUMP
207
208
209 TABLE0 PFA_TABLE ! TABLE 10 DUMP
210
211 TABLE10 PFA_TABLE ! TABLE 10 DUMP
212
213 TABLE20 PFA_TABLE ! TABLE 10 DUMP
214
215
216
217
218 ; -----------------------------------------------------------------------
219 ; create a primary DEFERred assembly word
220 ; -----------------------------------------------------------------------
221
222 DEFER TRUC              ; here, TRUC is a secondary DEFERred word (i.e. without BODY)
223
224
225 CODENNM                 ; leaves its execution address (CFA) on stack
226     SUB #2,R15
227     MOV R14,0(R15)
228     MOV @R13+,R0
229 ENDCODE IS TRUC         ; TRUC becomes a primary DEFERred word
230                         ; with its default action (DUP) located at its BODY addresse.
231
232 TRUC .                  ; display R14 value -->
233
234
235 ' TRUC >BODY IS TRUC    ; TRUC is reinitialized with its default action
236
237
238 TRUC .                  ; display R14 value --> 
239
240 \ ' DROP IS TRUC          ; TRUC is redirected to DROP
241
242 \ TRUC                   ; The generated error displays stack empty! in reverse video, removes the TRUC definition and restarts the interpretation after the end of the file. And as you see, FastForth is able to display long lines, interesting, doesn't it? --> 
243    
244 \ bla
245 \ bla
246 \ bla
247
248
249
250
251
252
253
254 \ bla
255 \ ...
256
257
258
259