OSDN Git Service

fixed ASSEMBLER crash
[fast-forth/master.git] / MSP430-FORTH / MSP_EXP430FR5994 / RC5TOLCD.4TH
1
2 ; -----------------------------------
3 ; RC5TOLCD.4th for MSP_EXP430FR5994
4 ; -----------------------------------
5
6
7 PWR_STATE
8
9 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
10
11 MARKER {RC5TOLCD}
12
13 [UNDEFINED] @ [IF]
14 CODE @
15 MOV @R14,R14
16 MOV @R13+,R0
17 ENDCODE
18 [THEN]
19
20 [UNDEFINED] CONSTANT [IF]
21 : CONSTANT 
22 CREATE
23 HI2LO
24 MOV R14,-2(R10)
25 MOV @R15+,R14
26 MOV @R1+,R13
27 MOV @R13+,R0
28 ENDCODE
29 [THEN]
30
31 [UNDEFINED] STATE [IF]
32 $1DBE CONSTANT STATE
33 [THEN]
34
35 [UNDEFINED] = [IF]
36 CODE =
37 SUB @R15+,R14
38 0<> IF
39     AND #0,R14
40     MOV @R13+,R0
41 THEN
42 XOR #-1,R14
43 MOV @R13+,R0
44 ENDCODE
45 [THEN]
46
47 [UNDEFINED] IF [IF]
48 CODE IF
49 SUB #2,R15
50 MOV R14,0(R15)
51 MOV &$1DC6,R14
52 ADD #4,&$1DC6
53 MOV #$4042,0(R14)
54 ADD #2,R14
55 MOV @R13+,R0
56 ENDCODE IMMEDIATE
57
58 CODE THEN
59 MOV &$1DC6,0(R14)
60 MOV @R15+,R14
61 MOV @R13+,R0
62 ENDCODE IMMEDIATE
63 [THEN]
64
65 [UNDEFINED] ELSE [IF]
66 CODE ELSE
67 ADD #4,&$1DC6
68 MOV &$1DC6,R10
69 MOV #$403E,-4(R10)
70 MOV R10,0(R14)
71 SUB #2,R10
72 MOV R10,R14
73 MOV @R13+,R0
74 ENDCODE IMMEDIATE
75 [THEN]
76
77 [UNDEFINED] IS [IF]
78
79 CODE DEFER!
80 MOV @R15+,2(R14)
81 MOV @R15+,R14
82 MOV @R13+,R0
83 ENDCODE
84
85
86 : IS
87 STATE @
88 IF  POSTPONE ['] POSTPONE DEFER! 
89 ELSE ' DEFER! 
90 THEN
91 ; IMMEDIATE
92 [THEN]
93
94 [UNDEFINED] >BODY [IF]
95 CODE >BODY
96 ADD #4,R14
97 MOV @R13+,R0
98 ENDCODE
99 [THEN]
100
101
102 CODE 20_US
103 BEGIN
104     BEGIN
105         BIT #1,&$3C0
106     0<> UNTIL
107     BIC #1,&$3C0
108     SUB #1,R14
109 U< UNTIL
110 MOV @R15+,R14
111 MOV @R13+,R0
112 ENDCODE
113
114 CODE TOP_LCD
115     BIS.B #4,&$243
116     BIT.B #1,&$241
117 0= IF
118     AND.B #$0F,R14
119     MOV.B R14,&$222
120     BIC.B #4,&$243
121     MOV @R15+,R14
122     MOV @R13+,R0
123 THEN
124     SUB #2,R15
125     MOV R14,0(R15)
126     BIC.B #4,&$243
127     MOV.B &$220,R14
128     AND.B #$0F,R14
129     MOV @R13+,R0
130 ENDCODE
131
132 CODE LCD_WRC
133     BIS.B #2,&$243
134 BW1 SUB #2,R15
135     MOV R14,0(R15)
136     RRUM #4,R14
137     BIC.B #1,&$243
138     BIS.B #$0F,&$224
139 COLON
140     TOP_LCD 2 20_US
141     TOP_LCD 2 20_US 
142 ;
143
144 CODE LCD_WRF
145     BIC.B #2,&$243
146     GOTO BW1
147 ENDCODE
148
149 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
150 : LCD_HOME $02 LCD_WRF 100 20_us ;
151
152
153
154 ASM WDT_INT
155 BIT.B #$20,&$240
156 0= IF
157     CMP #19,&$3D6
158     U< IF
159         ADD #1,&$3D6
160     THEN
161 ELSE
162     BIT.B #$40,&$240
163     0= IF
164         CMP #3,&$3D6
165         U>= IF
166            SUB #1,&$3D6
167         THEN
168     THEN
169 THEN
170 BW1
171 RETI
172 ENDASM
173
174 ASM RC5_INT
175 $1806 @ 16000 = [IF]
176     MOV #1,&$3A0
177 [THEN]
178 $1806 @ 24000 = [IF]
179     MOV #2,&$3A0
180 [THEN]
181 MOV #1778,R9
182 MOV #14,R10
183 BEGIN
184 MOV #%1011100100,&$380
185     RRUM    #1,R9
186     MOV     R9,R8
187     RRUM    #1,R8
188     ADD     R9,R8
189     BEGIN   CMP R8,&$390
190     U>= UNTIL
191     BIT.B   #4,&$200
192     ADDC    R11,R11
193     MOV.B   &$200,&$208
194     BIC.B   #4,&$20C
195     SUB     #1,R10
196 0<> WHILE
197     ADD R9,R8
198     BEGIN
199         MOV &$390,R9
200         CMP R8,R9
201         U>= IF
202         BIC #$30,&$380
203         GOTO BW1
204         THEN
205         BIT.B #4,&$20C
206     0<> UNTIL
207 REPEAT
208 BIC #$30,&$380
209 RLAM    #1,R11
210 MOV.B   R11,R9
211 RRUM    #2,R9
212 BIT     #$4000,R11
213 0= IF   BIS #$40,R9
214 THEN
215 RRUM    #3,R11
216 XOR     @R1,R11
217 BIT     #$400,R11
218 0= ?GOTO BW1
219 XOR #$400,0(R1)
220 SUB #8,R15
221 MOV R14,6(R15)
222 MOV &$1DDC,4(R15)
223 MOV #$10,&$1DDC
224 MOV R9,0(R15)
225 MOV #0,R14
226 LO2HI
227     LCD_CLEAR
228     <# # #S #36 HOLD #>
229     ['] LCD_WRC IS EMIT
230     TYPE
231     ['] EMIT >BODY IS EMIT
232 HI2LO
233 MOV @R15+,&$1DDC
234 MOV @R15+,R14
235 RETI
236 ENDASM
237
238 ASM BACKGROUND
239 BEGIN
240     CALL &$1814
241     BIS &$180A,R2
242 AGAIN
243 ENDASM
244
245 ASM SYS_OUT
246     MOV #WARM,R9
247     ADD #4,R9
248     MOV R9,R0
249 ENDASM
250
251 CODE STOP
252 BW1 MOV #$4000,R9
253     ADD #4,R9
254     MOV R9,-2(R9)
255     MOV #WARM,R9
256     MOV #SYS_OUT,2(R9)
257     BIC.B #4,&$20A
258     BIC.B #4,&$20C
259     MOV #0,&$3C0
260     MOV #0,&$340
261     MOV #0,&$342
262     MOV #COLD,R9
263     MOV R9,&$FFDE
264     MOV R9,&$FFEA
265 COLON
266 ECHO
267 ." RC5toLCD is removed,"
268 ."  type START to restart"
269  WARM
270 ;
271
272 CODE SYS_INIT
273 MOV #%10_1101_0100,&$3C0
274 $1806 @ 16000 = [IF]
275     MOV #1,&$3E0
276 [THEN]
277 $1806 @ 24000 = [IF]
278     MOV #2,&$3E0
279 [THEN]
280     MOV #19,&$3D2
281 MOV #%0110_0000,&$3C6
282     MOV #10,&$3D6
283     BIS.B #$20,&$204
284     BIS.B #$20,&$20A
285     BIS.B #7,&$245
286     BIC.B #7,&$247
287     BIS.B #$0F,&$224
288     BIC.B #$0F,&$226
289     BIS.B #4,&$20A
290     BIC.B #4,&$20C
291     MOV #RC5_INT,&$FFDE
292 MOV #%01_0001_0100,&$340
293     MOV ##3276,&$352
294     MOV #%10000,&$342
295     MOV #WDT_INT,&$FFEA
296 BIC #1,&$130
297 MOV &$1808,R8
298 CMP #4,R8
299 0= ?GOTO BW1
300 COLON
301     #1000 20_US
302     %011 TOP_LCD
303     #205 20_US
304     %011 TOP_LCD
305     #5 20_US
306     %011 TOP_LCD
307     #2 20_US
308     %010 TOP_LCD
309     #2 20_US
310     %00101000 LCD_WRF
311     %1000 LCD_WRF
312     LCD_CLEAR
313     %0110 LCD_WRF
314     %1100 LCD_WRF
315     LCD_CLEAR
316     ['] LCD_HOME IS CR
317     ['] LCD_WRC  IS EMIT
318     CR ." I love you"
319     ['] CR >BODY IS CR
320     ['] EMIT >BODY IS EMIT
321     ." RC5toLCD is running. Type STOP to quit"
322     PWR_STATE ABORT
323 ;
324
325 CODE START
326 MOV #$4000,R9
327 MOV #BACKGROUND,2(R9)
328 MOV #WARM,R9
329 MOV #SYS_INIT,2(R9)
330 MOV R9,R0
331 ENDCODE 
332
333 ECHO
334             ; downloading RC5toLCD.4th is done
335 RST_HERE    ; this app is protected against <reset>
336
337 START