OSDN Git Service

Ver 301
[fast-forth/master.git] / MSP430-FORTH / MSP_EXP430FR5994 / RC5TOLCD.4TH
1
2 ; -----------------------------------
3 ; RC5TOLCD.4th
4 ; -----------------------------------
5
6 RST_STATE
7
8 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
9
10 MARKER {RC5TOLCD}
11
12 CODE 20_US
13 BEGIN
14     BEGIN
15         BIT #1,&$3C0
16     0<> UNTIL
17     BIC #1,&$3C0
18     SUB #1,R14
19 U< UNTIL
20 MOV @R15+,R14
21 MOV @R13+,R0
22 ENDCODE
23
24 CODE TOP_LCD
25     BIS.B #4,&$243
26     BIT.B #1,&$241
27 0= IF
28     AND.B #$0F,R14
29     MOV.B R14,&$222
30     BIC.B #4,&$243
31     MOV @R15+,R14
32     MOV @R13+,R0
33 THEN
34     SUB #2,R15
35     MOV R14,0(R15)
36     BIC.B #4,&$243
37     MOV.B &$220,R14
38     AND.B #$0F,R14
39     MOV @R13+,R0
40 ENDCODE
41
42 CODE LCD_WRC
43     BIS.B #2,&$243
44 BW1 SUB #2,R15
45     MOV R14,0(R15)
46     RRUM #4,R14
47     BIC.B #1,&$243
48     BIS.B #$0F,&$224
49 COLON
50     TOP_LCD 2 20_US
51     TOP_LCD 2 20_US 
52 ;
53
54 CODE LCD_WRF
55     BIC.B #2,&$243
56     GOTO BW1
57 ENDCODE
58
59 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
60 : LCD_HOME $02 LCD_WRF 100 20_us ;
61
62
63
64 ASM WDT_INT
65 ADD #2,R1
66 BIT.B #$20,&$240
67 0= IF
68     CMP #19,&$3D6
69     U< IF
70         ADD #1,&$3D6
71     THEN
72 ELSE
73     BIT.B #$40,&$240
74     0= IF
75         CMP #3,&$3D6
76         U>= IF
77            SUB #1,&$3D6
78         THEN
79     THEN
80 THEN
81 BW1
82 MOV @R1+,R0
83 ENDASM
84
85 ASM RC5_INT
86 ADD #2,R1
87 $1806 @ 16000 = [IF]
88     MOV #1,&$3A0
89 [THEN]
90 $1806 @ 24000 = [IF]
91     MOV #2,&$3A0
92 [THEN]
93 MOV #1778,R9
94 MOV #14,R10
95 BEGIN
96 MOV #%1011100100,&$380
97     RRUM    #1,R9
98     MOV     R9,R8
99     RRUM    #1,R8
100     ADD     R9,R8
101     BEGIN   CMP R8,&$390
102     U>= UNTIL
103     BIT.B   #4,&$200
104     ADDC    R11,R11
105     MOV.B   &$200,&$208
106     BIC.B   #4,&$20C
107     SUB     #1,R10
108 0<> WHILE
109     ADD R9,R8
110     BEGIN
111         MOV &$390,R9
112         CMP R8,R9
113         U>= IF
114         BIC #$30,&$380
115         GOTO BW1
116         THEN
117         BIT.B #4,&$20C
118     0<> UNTIL
119 REPEAT
120 BIC #$30,&$380
121 RLAM    #1,R11
122 MOV.B   R11,R9
123 RRUM    #2,R9
124 BIT     #$4000,R11
125 0= IF   BIS #$40,R9
126 THEN
127 RRUM    #3,R11
128 XOR     @R1,R11
129 BIT     #$400,R11
130 0= ?GOTO BW1
131 XOR #$400,0(R1)
132 SUB #8,R15
133 MOV R14,6(R15)
134 MOV &$1DDC,4(R15)
135 MOV #$10,&$1DDC
136 MOV R9,0(R15)
137 MOV #0,R14
138 LO2HI
139     LCD_CLEAR
140     <# # #S #36 HOLD #>
141     ['] LCD_WRC IS EMIT
142     TYPE
143     ['] EMIT >BODY IS EMIT
144 HI2LO
145 MOV @R15+,&$1DDC
146 MOV @R15+,R14
147 MOV @R1+,R0
148 ENDASM
149
150 ASM BACKGROUND
151 BEGIN
152     CALL &$1814
153     BIS &$180A,R2
154 AGAIN
155 ENDASM
156
157 CODE STOP
158 BW1 MOV #SLEEP,R9
159     ADD #4,R9
160     MOV R9,-2(R9)
161 COLON
162 ['] WARM >BODY IS WARM
163 ECHO
164 ." RC5toLCD is removed. type START to restart"
165 COLD
166 ;
167
168 CODE APP_INIT
169 MOV #%1011010100,&$3C0
170 $1806 @ 16000 = [IF]
171     MOV #1,&$3E0
172 [THEN]
173 $1806 @ 24000 = [IF]
174     MOV #2,&$3E0
175 [THEN]
176     MOV #19,&$3D2
177     MOV #%01100000,&$3C6
178     MOV #10,&$3D6
179     BIS.B #$20,&$204
180     BIS.B #$20,&$20A
181     BIS.B #7,&$245
182     BIC.B #7,&$247
183     BIS.B #$0F,&$224
184     BIC.B #$0F,&$226
185     BIS.B #4,&$20A
186     BIC.B #4,&$20C
187     MOV #RC5_INT,&$FFDE
188     MOV #%0100010100,&$340
189     MOV ##3276,&$352
190     MOV #%10000,&$342
191     MOV #WDT_INT,&$FFEA
192 BIC #1,&$130
193 BIS.B #3,&$20D
194 MOV &$1808,R8
195 CMP #4,R8
196 0= ?GOTO BW1
197 COLON
198     #1000 20_US
199     %011 TOP_LCD
200     #205 20_US
201     %011 TOP_LCD
202     #5 20_US
203     %011 TOP_LCD
204     #2 20_US
205     %010 TOP_LCD
206     #2 20_US
207     %00101000 LCD_WRF
208     %1000 LCD_WRF
209     LCD_CLEAR
210     %0110 LCD_WRF
211     %1100 LCD_WRF
212     LCD_CLEAR
213     ['] LCD_HOME IS CR
214     ['] LCD_WRC  IS EMIT
215     CR ." I love you"
216     ['] CR >BODY IS CR
217     ['] EMIT >BODY IS EMIT
218     ." RC5toLCD is running. Type STOP to quit"
219     ABORT
220 ;
221
222 CODE START
223 MOV #SLEEP,R9
224 MOV #BACKGROUND,2(R9)
225 MOV #WARM,R9
226 MOV #APP_INIT,2(R9)
227 MOV R9,R0
228 ENDCODE 
229
230 ECHO
231             ; downloading RC5toLCD.4th is done
232 RST_HERE    ; this app is protected against <reset>
233