OSDN Git Service

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