OSDN Git Service

ba55cc3f1aba19b6cc2f839a153fe6e216eeb930
[fast-forth/master.git] / MSP430-FORTH / SD_430FR5994 / PROG10k.4TH
1
2 ; -----------------------------------
3 ; PROG10K.4th for MSP_EXP430FR5994
4 ; -----------------------------------
5
6 ; load and compile 10kb (9 x RC52LCD)
7
8
9
10     CODE ABORT_RC5TOLCD
11     SUB #2,R15
12     MOV R14,0(R15)
13     MOV &$180A,R14
14     SUB #400,R14
15     COLON
16     $0D EMIT
17     ABORT" FastForth V4.0 please!"
18     RST_RET
19     ;
20
21     ABORT_RC5TOLCD
22
23     MARKER {RC5TOLCD}
24     8 ALLOT
25
26
27
28
29 ; ------------------------------------------------------------------
30 ; first we download the set of definitions we need (from CORE_ANS.4th for MSP_EXP430FR5994)
31 ; ------------------------------------------------------------------
32
33     [UNDEFINED] =
34     [IF]
35     CODE =
36     SUB @R15+,R14
37     0<> IF
38         AND #0,R14
39         MOV @R13+,R0
40     THEN
41     XOR #-1,R14
42     MOV @R13+,R0
43     ENDCODE
44     [THEN]
45
46     [UNDEFINED] IF
47     [IF]
48     CODE IF
49     SUB #2,R15
50     MOV R14,0(R15)
51     MOV &$1DC0,R14
52     ADD #4,&$1DC0
53     MOV #$4096,0(R14)
54     ADD #2,R14
55     MOV @R13+,R0
56     ENDCODE IMMEDIATE
57
58     CODE THEN
59     MOV &$1DC0,0(R14)
60     MOV @R15+,R14
61     MOV @R13+,R0
62     ENDCODE IMMEDIATE
63     [THEN]
64
65     [UNDEFINED] ELSE
66     [IF]
67     CODE ELSE
68     ADD #4,&$1DC0
69     MOV &$1DC0,R10
70     MOV #$409C,-4(R10)
71     MOV R10,0(R14)
72     SUB #2,R10
73     MOV R10,R14
74     MOV @R13+,R0
75     ENDCODE IMMEDIATE
76     [THEN]
77
78
79     [UNDEFINED] CR
80     [IF]
81     CODE CR
82     MOV #$409E,R0
83     ENDCODE
84
85     :NONAME
86     $0D EMIT $0A EMIT
87     ; IS CR
88     [THEN]
89
90     [UNDEFINED] >BODY
91     [IF]
92     CODE >BODY
93     ADD #4,R14
94     MOV @R13+,R0
95     ENDCODE
96     [THEN]
97
98 ; --------------------------
99 ; end of definitions we need
100 ; --------------------------
101
102     CODE 20_US
103     BEGIN
104         MOV &{RC5TOLCD}+6,R9
105         SUB #2,R9
106         BEGIN
107             MOV #0,R3
108             SUB #1,R9
109         0=  UNTIL
110         MOV #0,R3
111         SUB #1,R14
112     0= UNTIL
113     MOV @R15+,R14
114     MOV @R1+,R13
115     ENDCODE
116
117     CODE TOP_LCD
118     BIS.B #4,&$243
119     BIT.B #1,&$241
120     0= IF
121         AND.B #$0F,R14
122         MOV.B R14,&$222
123         BIC.B #4,&$243
124         MOV @R15+,R14
125         MOV @R13+,R0
126     THEN
127     SUB #2,R15
128     MOV R14,0(R15)
129     BIC.B #4,&$243
130     MOV.B &$220,R14
131     AND.B #$0F,R14
132     MOV @R13+,R0
133     ENDCODE
134
135     CODE LCD_WRC
136     BIS.B #2,&$243
137 BW1 SUB #2,R15
138     MOV R14,0(R15)
139     RRUM #4,R14
140     BIC.B #1,&$243
141     BIS.B #$0F,&$224
142     COLON
143     TOP_LCD 2 20_US
144     TOP_LCD 2 20_US
145     ;
146
147     CODE LCD_WRF
148     BIC.B #2,&$243
149     GOTO BW1
150     ENDCODE
151
152     : LCD_CLEAR $01 LCD_WRF 100 20_us ;
153     : LCD_HOME $02 LCD_WRF 100 20_us ;
154
155     HDNCODE WDT_INT
156     BIT.B #$20,&$240
157     0= IF
158         CMP #19,&$3D6
159         U< IF
160             ADD #1,&$3D6
161         THEN
162     ELSE
163         BIT.B #$40,&$240
164         0= IF
165             CMP #3,&$3D6
166             U>= IF
167             SUB #1,&$3D6
168             THEN
169         THEN
170     THEN
171     RETI
172     ENDCODE
173
174     HDNCODE RC5_INT
175     MOV #1778,R9
176     MOV #14,R10
177     BEGIN
178       MOV #%1011100100,&$380
179         RRUM    #1,R9
180         MOV     R9,R8
181         RRUM    #1,R8
182         ADD     R9,R8
183         BEGIN
184             CMP R8,&$390
185         U>= UNTIL
186         BIT.B   #4,&$200
187         ADDC    R11,R11
188         MOV.B   &$200,&$208
189         BIC.B   #4,&$20C
190         SUB     #1,R10
191     0<> WHILE
192         ADD R9,R8
193         BEGIN
194             MOV &$390,R9
195             CMP R8,R9
196             U>= ?GOTO FW1
197             BIT.B #4,&$20C
198         0<> UNTIL
199     REPEAT
200     BIC #$30,&$380
201     RLAM    #1,R11
202     MOV.B   R11,R9
203     RRUM    #2,R9
204     BIT     #$4000,R11
205     0= IF   BIS #$40,R9
206     THEN
207     RRUM    #3,R11
208     XOR     @R1,R11
209     BIT     #$400,R11
210     0= ?GOTO FW2
211     XOR #$400,0(R1)
212     SUB #6,R15
213     MOV R14,4(R15)
214     MOV &$1DB6,2(R15)
215     MOV #$10,&$1DB6
216     MOV R9,0(R15)
217     MOV #0,R14
218     LO2HI
219     LCD_CLEAR
220     <# # #S #36 HOLD #>
221     ['] LCD_WRC IS EMIT
222     TYPE
223     ['] EMIT >BODY IS EMIT
224     HI2LO
225     MOV @R15+,&$1DB6
226     MOV @R15+,R14
227 FW1 BIC #$30,&$380
228 FW2 BIC #%1111_1000,0(R1)
229     RETI
230     ENDCODE
231
232     HDNCODE STOP_R2L
233     CMP #WDT_INT,&$FFEA
234     0= IF
235         BIC.B #4,&$20A
236         BIC.B #4,&$20C
237         MOV #0,&$3C0
238         MOV #0,&$340
239         MOV #0,&$342
240         MOV #{RC5TOLCD},R10
241         MOV #$406C,-2(R10)
242         MOV @R10+,&$183E
243         MOV @R10+,&$FFEA
244         MOV @R10+,&$FFDE
245     THEN
246     MOV @R1+,R0
247     ENDCODE
248
249     CODE STOP
250 BW1 CALL #STOP_R2L
251     COLON
252     ECHO
253     ." type START to start RC5toLCD"
254     ;
255
256     HDNCODE INIT_R2L
257     MOV #%10_1101_0100,&$3C0
258     $1800 @ 16000 =
259     [IF]
260         MOV #1,&$3A0
261         MOV #1,&$3E0
262     [THEN]
263     $1800 @ 24000 =
264     [IF]
265         MOV #2,&$3A0
266         MOV #2,&$3E0
267     [THEN]
268         MOV #19,&$3D2
269     MOV #%0110_0000,&$3C6
270     MOV #10,&$3D6
271     BIS.B #$20,&$204
272     BIS.B #$20,&$20A
273     BIS.B #7,&$245
274     BIC.B #7,&$247
275     BIS.B #$0F,&$224
276     BIC.B #$0F,&$226
277     BIS.B #4,&$20A
278     BIC.B #4,&$20C
279     MOV #%01_0001_0100,&$340
280     MOV ##3276,&$352
281     MOV #%10000,&$342
282     CALL &{RC5TOLCD}
283     CMP #$0E,R14
284     0<> IF
285         CMP #$0A,R14
286         U>= ?GOTO BW1
287     THEN
288     CMP #4,R14
289     0= ?GOTO BW1
290     LO2HI
291     #1000 20_US
292     %011 TOP_LCD
293     #205 20_US
294     %011 TOP_LCD
295     #5 20_US
296     %011 TOP_LCD
297     #2 20_US
298     %010 TOP_LCD
299     #2 20_US
300     %00101000 LCD_WRF
301     %1000 LCD_WRF
302     LCD_CLEAR
303     %0110 LCD_WRF
304     %1100 LCD_WRF
305     LCD_CLEAR
306     HI2LO
307     MOV @R1+,R0
308     ENDCODE
309
310     CODE START
311     CMP #WDT_INT,&$FFEA
312     0= IF
313         MOV @R13+,R0
314     THEN
315     MOV #STOP_R2L,&{RC5TOLCD}-2
316        MOV &$183E,&{RC5TOLCD}
317        MOV #INIT_R2L,&$183E
318     MOV &$FFEA,&{RC5TOLCD}+2
319     MOV #WDT_INT,&$FFEA
320     MOV &$FFDE,&{RC5TOLCD}+4
321     MOV #RC5_INT,&$FFDE
322     SUB #6,R15
323     MOV R14,4(R15)
324     MOV &$1800,2(R15)
325     MOV #0,0(R15)
326     MOV #200,R14
327     CALL #$4028
328     MOV @R15,&{RC5TOLCD}+6
329     ADD #4,R15
330     MOV @R15+,R14
331     CALL #INIT_R2L
332     LO2HI
333     ." RC5toLCD is running,"
334     ."  Type STOP to quit."
335     HI2LO
336     MOV #ALLOT+$08,R0
337     ENDCODE
338
339 RST_SET 
340
341     MARKER {RC5TOLCD}
342     8 ALLOT
343
344
345
346
347 ; ------------------------------------------------------------------
348 ; first we download the set of definitions we need (from CORE_ANS.4th for MSP_EXP430FR5994)
349 ; ------------------------------------------------------------------
350
351     [UNDEFINED] =
352     [IF]
353     CODE =
354     SUB @R15+,R14
355     0<> IF
356         AND #0,R14
357         MOV @R13+,R0
358     THEN
359     XOR #-1,R14
360     MOV @R13+,R0
361     ENDCODE
362     [THEN]
363
364     [UNDEFINED] IF
365     [IF]
366     CODE IF
367     SUB #2,R15
368     MOV R14,0(R15)
369     MOV &$1DC0,R14
370     ADD #4,&$1DC0
371     MOV #$4096,0(R14)
372     ADD #2,R14
373     MOV @R13+,R0
374     ENDCODE IMMEDIATE
375
376     CODE THEN
377     MOV &$1DC0,0(R14)
378     MOV @R15+,R14
379     MOV @R13+,R0
380     ENDCODE IMMEDIATE
381     [THEN]
382
383     [UNDEFINED] ELSE
384     [IF]
385     CODE ELSE
386     ADD #4,&$1DC0
387     MOV &$1DC0,R10
388     MOV #$409C,-4(R10)
389     MOV R10,0(R14)
390     SUB #2,R10
391     MOV R10,R14
392     MOV @R13+,R0
393     ENDCODE IMMEDIATE
394     [THEN]
395
396
397     [UNDEFINED] CR
398     [IF]
399     CODE CR
400     MOV #$409E,R0
401     ENDCODE
402
403     :NONAME
404     $0D EMIT $0A EMIT
405     ; IS CR
406     [THEN]
407
408     [UNDEFINED] >BODY
409     [IF]
410     CODE >BODY
411     ADD #4,R14
412     MOV @R13+,R0
413     ENDCODE
414     [THEN]
415
416 ; --------------------------
417 ; end of definitions we need
418 ; --------------------------
419
420     CODE 20_US
421     BEGIN
422         MOV &{RC5TOLCD}+6,R9
423         SUB #2,R9
424         BEGIN
425             MOV #0,R3
426             SUB #1,R9
427         0=  UNTIL
428         MOV #0,R3
429         SUB #1,R14
430     0= UNTIL
431     MOV @R15+,R14
432     MOV @R1+,R13
433     ENDCODE
434
435     CODE TOP_LCD
436     BIS.B #4,&$243
437     BIT.B #1,&$241
438     0= IF
439         AND.B #$0F,R14
440         MOV.B R14,&$222
441         BIC.B #4,&$243
442         MOV @R15+,R14
443         MOV @R13+,R0
444     THEN
445     SUB #2,R15
446     MOV R14,0(R15)
447     BIC.B #4,&$243
448     MOV.B &$220,R14
449     AND.B #$0F,R14
450     MOV @R13+,R0
451     ENDCODE
452
453     CODE LCD_WRC
454     BIS.B #2,&$243
455 BW1 SUB #2,R15
456     MOV R14,0(R15)
457     RRUM #4,R14
458     BIC.B #1,&$243
459     BIS.B #$0F,&$224
460     COLON
461     TOP_LCD 2 20_US
462     TOP_LCD 2 20_US
463     ;
464
465     CODE LCD_WRF
466     BIC.B #2,&$243
467     GOTO BW1
468     ENDCODE
469
470     : LCD_CLEAR $01 LCD_WRF 100 20_us ;
471     : LCD_HOME $02 LCD_WRF 100 20_us ;
472
473     HDNCODE WDT_INT
474     BIT.B #$20,&$240
475     0= IF
476         CMP #19,&$3D6
477         U< IF
478             ADD #1,&$3D6
479         THEN
480     ELSE
481         BIT.B #$40,&$240
482         0= IF
483             CMP #3,&$3D6
484             U>= IF
485             SUB #1,&$3D6
486             THEN
487         THEN
488     THEN
489     RETI
490     ENDCODE
491
492     HDNCODE RC5_INT
493     MOV #1778,R9
494     MOV #14,R10
495     BEGIN
496       MOV #%1011100100,&$380
497         RRUM    #1,R9
498         MOV     R9,R8
499         RRUM    #1,R8
500         ADD     R9,R8
501         BEGIN
502             CMP R8,&$390
503         U>= UNTIL
504         BIT.B   #4,&$200
505         ADDC    R11,R11
506         MOV.B   &$200,&$208
507         BIC.B   #4,&$20C
508         SUB     #1,R10
509     0<> WHILE
510         ADD R9,R8
511         BEGIN
512             MOV &$390,R9
513             CMP R8,R9
514             U>= ?GOTO FW1
515             BIT.B #4,&$20C
516         0<> UNTIL
517     REPEAT
518     BIC #$30,&$380
519     RLAM    #1,R11
520     MOV.B   R11,R9
521     RRUM    #2,R9
522     BIT     #$4000,R11
523     0= IF   BIS #$40,R9
524     THEN
525     RRUM    #3,R11
526     XOR     @R1,R11
527     BIT     #$400,R11
528     0= ?GOTO FW2
529     XOR #$400,0(R1)
530     SUB #6,R15
531     MOV R14,4(R15)
532     MOV &$1DB6,2(R15)
533     MOV #$10,&$1DB6
534     MOV R9,0(R15)
535     MOV #0,R14
536     LO2HI
537     LCD_CLEAR
538     <# # #S #36 HOLD #>
539     ['] LCD_WRC IS EMIT
540     TYPE
541     ['] EMIT >BODY IS EMIT
542     HI2LO
543     MOV @R15+,&$1DB6
544     MOV @R15+,R14
545 FW1 BIC #$30,&$380
546 FW2 BIC #%1111_1000,0(R1)
547     RETI
548     ENDCODE
549
550     HDNCODE STOP_R2L
551     CMP #WDT_INT,&$FFEA
552     0= IF
553         BIC.B #4,&$20A
554         BIC.B #4,&$20C
555         MOV #0,&$3C0
556         MOV #0,&$340
557         MOV #0,&$342
558         MOV #{RC5TOLCD},R10
559         MOV #$406C,-2(R10)
560         MOV @R10+,&$183E
561         MOV @R10+,&$FFEA
562         MOV @R10+,&$FFDE
563     THEN
564     MOV @R1+,R0
565     ENDCODE
566
567     CODE STOP
568 BW1 CALL #STOP_R2L
569     COLON
570     ECHO
571     ." type START to start RC5toLCD"
572     ;
573
574     HDNCODE INIT_R2L
575     MOV #%10_1101_0100,&$3C0
576     $1800 @ 16000 =
577     [IF]
578         MOV #1,&$3A0
579         MOV #1,&$3E0
580     [THEN]
581     $1800 @ 24000 =
582     [IF]
583         MOV #2,&$3A0
584         MOV #2,&$3E0
585     [THEN]
586         MOV #19,&$3D2
587     MOV #%0110_0000,&$3C6
588     MOV #10,&$3D6
589     BIS.B #$20,&$204
590     BIS.B #$20,&$20A
591     BIS.B #7,&$245
592     BIC.B #7,&$247
593     BIS.B #$0F,&$224
594     BIC.B #$0F,&$226
595     BIS.B #4,&$20A
596     BIC.B #4,&$20C
597     MOV #%01_0001_0100,&$340
598     MOV ##3276,&$352
599     MOV #%10000,&$342
600     CALL &{RC5TOLCD}
601     CMP #$0E,R14
602     0<> IF
603         CMP #$0A,R14
604         U>= ?GOTO BW1
605     THEN
606     CMP #4,R14
607     0= ?GOTO BW1
608     LO2HI
609     #1000 20_US
610     %011 TOP_LCD
611     #205 20_US
612     %011 TOP_LCD
613     #5 20_US
614     %011 TOP_LCD
615     #2 20_US
616     %010 TOP_LCD
617     #2 20_US
618     %00101000 LCD_WRF
619     %1000 LCD_WRF
620     LCD_CLEAR
621     %0110 LCD_WRF
622     %1100 LCD_WRF
623     LCD_CLEAR
624     HI2LO
625     MOV @R1+,R0
626     ENDCODE
627
628     CODE START
629     CMP #WDT_INT,&$FFEA
630     0= IF
631         MOV @R13+,R0
632     THEN
633     MOV #STOP_R2L,&{RC5TOLCD}-2
634        MOV &$183E,&{RC5TOLCD}
635        MOV #INIT_R2L,&$183E
636     MOV &$FFEA,&{RC5TOLCD}+2
637     MOV #WDT_INT,&$FFEA
638     MOV &$FFDE,&{RC5TOLCD}+4
639     MOV #RC5_INT,&$FFDE
640     SUB #6,R15
641     MOV R14,4(R15)
642     MOV &$1800,2(R15)
643     MOV #0,0(R15)
644     MOV #200,R14
645     CALL #$4028
646     MOV @R15,&{RC5TOLCD}+6
647     ADD #4,R15
648     MOV @R15+,R14
649     CALL #INIT_R2L
650     LO2HI
651     ." RC5toLCD is running,"
652     ."  Type STOP to quit."
653     HI2LO
654     MOV #ALLOT+$08,R0
655     ENDCODE
656
657 RST_SET 
658
659     MARKER {RC5TOLCD}
660     8 ALLOT
661
662
663
664
665 ; ------------------------------------------------------------------
666 ; first we download the set of definitions we need (from CORE_ANS.4th for MSP_EXP430FR5994)
667 ; ------------------------------------------------------------------
668
669     [UNDEFINED] =
670     [IF]
671     CODE =
672     SUB @R15+,R14
673     0<> IF
674         AND #0,R14
675         MOV @R13+,R0
676     THEN
677     XOR #-1,R14
678     MOV @R13+,R0
679     ENDCODE
680     [THEN]
681
682     [UNDEFINED] IF
683     [IF]
684     CODE IF
685     SUB #2,R15
686     MOV R14,0(R15)
687     MOV &$1DC0,R14
688     ADD #4,&$1DC0
689     MOV #$4096,0(R14)
690     ADD #2,R14
691     MOV @R13+,R0
692     ENDCODE IMMEDIATE
693
694     CODE THEN
695     MOV &$1DC0,0(R14)
696     MOV @R15+,R14
697     MOV @R13+,R0
698     ENDCODE IMMEDIATE
699     [THEN]
700
701     [UNDEFINED] ELSE
702     [IF]
703     CODE ELSE
704     ADD #4,&$1DC0
705     MOV &$1DC0,R10
706     MOV #$409C,-4(R10)
707     MOV R10,0(R14)
708     SUB #2,R10
709     MOV R10,R14
710     MOV @R13+,R0
711     ENDCODE IMMEDIATE
712     [THEN]
713
714
715     [UNDEFINED] CR
716     [IF]
717     CODE CR
718     MOV #$409E,R0
719     ENDCODE
720
721     :NONAME
722     $0D EMIT $0A EMIT
723     ; IS CR
724     [THEN]
725
726     [UNDEFINED] >BODY
727     [IF]
728     CODE >BODY
729     ADD #4,R14
730     MOV @R13+,R0
731     ENDCODE
732     [THEN]
733
734 ; --------------------------
735 ; end of definitions we need
736 ; --------------------------
737
738     CODE 20_US
739     BEGIN
740         MOV &{RC5TOLCD}+6,R9
741         SUB #2,R9
742         BEGIN
743             MOV #0,R3
744             SUB #1,R9
745         0=  UNTIL
746         MOV #0,R3
747         SUB #1,R14
748     0= UNTIL
749     MOV @R15+,R14
750     MOV @R1+,R13
751     ENDCODE
752
753     CODE TOP_LCD
754     BIS.B #4,&$243
755     BIT.B #1,&$241
756     0= IF
757         AND.B #$0F,R14
758         MOV.B R14,&$222
759         BIC.B #4,&$243
760         MOV @R15+,R14
761         MOV @R13+,R0
762     THEN
763     SUB #2,R15
764     MOV R14,0(R15)
765     BIC.B #4,&$243
766     MOV.B &$220,R14
767     AND.B #$0F,R14
768     MOV @R13+,R0
769     ENDCODE
770
771     CODE LCD_WRC
772     BIS.B #2,&$243
773 BW1 SUB #2,R15
774     MOV R14,0(R15)
775     RRUM #4,R14
776     BIC.B #1,&$243
777     BIS.B #$0F,&$224
778     COLON
779     TOP_LCD 2 20_US
780     TOP_LCD 2 20_US
781     ;
782
783     CODE LCD_WRF
784     BIC.B #2,&$243
785     GOTO BW1
786     ENDCODE
787
788     : LCD_CLEAR $01 LCD_WRF 100 20_us ;
789     : LCD_HOME $02 LCD_WRF 100 20_us ;
790
791     HDNCODE WDT_INT
792     BIT.B #$20,&$240
793     0= IF
794         CMP #19,&$3D6
795         U< IF
796             ADD #1,&$3D6
797         THEN
798     ELSE
799         BIT.B #$40,&$240
800         0= IF
801             CMP #3,&$3D6
802             U>= IF
803             SUB #1,&$3D6
804             THEN
805         THEN
806     THEN
807     RETI
808     ENDCODE
809
810     HDNCODE RC5_INT
811     MOV #1778,R9
812     MOV #14,R10
813     BEGIN
814       MOV #%1011100100,&$380
815         RRUM    #1,R9
816         MOV     R9,R8
817         RRUM    #1,R8
818         ADD     R9,R8
819         BEGIN
820             CMP R8,&$390
821         U>= UNTIL
822         BIT.B   #4,&$200
823         ADDC    R11,R11
824         MOV.B   &$200,&$208
825         BIC.B   #4,&$20C
826         SUB     #1,R10
827     0<> WHILE
828         ADD R9,R8
829         BEGIN
830             MOV &$390,R9
831             CMP R8,R9
832             U>= ?GOTO FW1
833             BIT.B #4,&$20C
834         0<> UNTIL
835     REPEAT
836     BIC #$30,&$380
837     RLAM    #1,R11
838     MOV.B   R11,R9
839     RRUM    #2,R9
840     BIT     #$4000,R11
841     0= IF   BIS #$40,R9
842     THEN
843     RRUM    #3,R11
844     XOR     @R1,R11
845     BIT     #$400,R11
846     0= ?GOTO FW2
847     XOR #$400,0(R1)
848     SUB #6,R15
849     MOV R14,4(R15)
850     MOV &$1DB6,2(R15)
851     MOV #$10,&$1DB6
852     MOV R9,0(R15)
853     MOV #0,R14
854     LO2HI
855     LCD_CLEAR
856     <# # #S #36 HOLD #>
857     ['] LCD_WRC IS EMIT
858     TYPE
859     ['] EMIT >BODY IS EMIT
860     HI2LO
861     MOV @R15+,&$1DB6
862     MOV @R15+,R14
863 FW1 BIC #$30,&$380
864 FW2 BIC #%1111_1000,0(R1)
865     RETI
866     ENDCODE
867
868     HDNCODE STOP_R2L
869     CMP #WDT_INT,&$FFEA
870     0= IF
871         BIC.B #4,&$20A
872         BIC.B #4,&$20C
873         MOV #0,&$3C0
874         MOV #0,&$340
875         MOV #0,&$342
876         MOV #{RC5TOLCD},R10
877         MOV #$406C,-2(R10)
878         MOV @R10+,&$183E
879         MOV @R10+,&$FFEA
880         MOV @R10+,&$FFDE
881     THEN
882     MOV @R1+,R0
883     ENDCODE
884
885     CODE STOP
886 BW1 CALL #STOP_R2L
887     COLON
888     ECHO
889     ." type START to start RC5toLCD"
890     ;
891
892     HDNCODE INIT_R2L
893     MOV #%10_1101_0100,&$3C0
894     $1800 @ 16000 =
895     [IF]
896         MOV #1,&$3A0
897         MOV #1,&$3E0
898     [THEN]
899     $1800 @ 24000 =
900     [IF]
901         MOV #2,&$3A0
902         MOV #2,&$3E0
903     [THEN]
904         MOV #19,&$3D2
905     MOV #%0110_0000,&$3C6
906     MOV #10,&$3D6
907     BIS.B #$20,&$204
908     BIS.B #$20,&$20A
909     BIS.B #7,&$245
910     BIC.B #7,&$247
911     BIS.B #$0F,&$224
912     BIC.B #$0F,&$226
913     BIS.B #4,&$20A
914     BIC.B #4,&$20C
915     MOV #%01_0001_0100,&$340
916     MOV ##3276,&$352
917     MOV #%10000,&$342
918     CALL &{RC5TOLCD}
919     CMP #$0E,R14
920     0<> IF
921         CMP #$0A,R14
922         U>= ?GOTO BW1
923     THEN
924     CMP #4,R14
925     0= ?GOTO BW1
926     LO2HI
927     #1000 20_US
928     %011 TOP_LCD
929     #205 20_US
930     %011 TOP_LCD
931     #5 20_US
932     %011 TOP_LCD
933     #2 20_US
934     %010 TOP_LCD
935     #2 20_US
936     %00101000 LCD_WRF
937     %1000 LCD_WRF
938     LCD_CLEAR
939     %0110 LCD_WRF
940     %1100 LCD_WRF
941     LCD_CLEAR
942     HI2LO
943     MOV @R1+,R0
944     ENDCODE
945
946     CODE START
947     CMP #WDT_INT,&$FFEA
948     0= IF
949         MOV @R13+,R0
950     THEN
951     MOV #STOP_R2L,&{RC5TOLCD}-2
952        MOV &$183E,&{RC5TOLCD}
953        MOV #INIT_R2L,&$183E
954     MOV &$FFEA,&{RC5TOLCD}+2
955     MOV #WDT_INT,&$FFEA
956     MOV &$FFDE,&{RC5TOLCD}+4
957     MOV #RC5_INT,&$FFDE
958     SUB #6,R15
959     MOV R14,4(R15)
960     MOV &$1800,2(R15)
961     MOV #0,0(R15)
962     MOV #200,R14
963     CALL #$4028
964     MOV @R15,&{RC5TOLCD}+6
965     ADD #4,R15
966     MOV @R15+,R14
967     CALL #INIT_R2L
968     LO2HI
969     ." RC5toLCD is running,"
970     ."  Type STOP to quit."
971     HI2LO
972     MOV #ALLOT+$08,R0
973     ENDCODE
974
975 RST_SET 
976
977     MARKER {RC5TOLCD}
978     8 ALLOT
979
980
981
982
983 ; ------------------------------------------------------------------
984 ; first we download the set of definitions we need (from CORE_ANS.4th for MSP_EXP430FR5994)
985 ; ------------------------------------------------------------------
986
987     [UNDEFINED] =
988     [IF]
989     CODE =
990     SUB @R15+,R14
991     0<> IF
992         AND #0,R14
993         MOV @R13+,R0
994     THEN
995     XOR #-1,R14
996     MOV @R13+,R0
997     ENDCODE
998     [THEN]
999
1000     [UNDEFINED] IF
1001     [IF]
1002     CODE IF
1003     SUB #2,R15
1004     MOV R14,0(R15)
1005     MOV &$1DC0,R14
1006     ADD #4,&$1DC0
1007     MOV #$4096,0(R14)
1008     ADD #2,R14
1009     MOV @R13+,R0
1010     ENDCODE IMMEDIATE
1011
1012     CODE THEN
1013     MOV &$1DC0,0(R14)
1014     MOV @R15+,R14
1015     MOV @R13+,R0
1016     ENDCODE IMMEDIATE
1017     [THEN]
1018
1019     [UNDEFINED] ELSE
1020     [IF]
1021     CODE ELSE
1022     ADD #4,&$1DC0
1023     MOV &$1DC0,R10
1024     MOV #$409C,-4(R10)
1025     MOV R10,0(R14)
1026     SUB #2,R10
1027     MOV R10,R14
1028     MOV @R13+,R0
1029     ENDCODE IMMEDIATE
1030     [THEN]
1031
1032
1033     [UNDEFINED] CR
1034     [IF]
1035     CODE CR
1036     MOV #$409E,R0
1037     ENDCODE
1038
1039     :NONAME
1040     $0D EMIT $0A EMIT
1041     ; IS CR
1042     [THEN]
1043
1044     [UNDEFINED] >BODY
1045     [IF]
1046     CODE >BODY
1047     ADD #4,R14
1048     MOV @R13+,R0
1049     ENDCODE
1050     [THEN]
1051
1052 ; --------------------------
1053 ; end of definitions we need
1054 ; --------------------------
1055
1056     CODE 20_US
1057     BEGIN
1058         MOV &{RC5TOLCD}+6,R9
1059         SUB #2,R9
1060         BEGIN
1061             MOV #0,R3
1062             SUB #1,R9
1063         0=  UNTIL
1064         MOV #0,R3
1065         SUB #1,R14
1066     0= UNTIL
1067     MOV @R15+,R14
1068     MOV @R1+,R13
1069     ENDCODE
1070
1071     CODE TOP_LCD
1072     BIS.B #4,&$243
1073     BIT.B #1,&$241
1074     0= IF
1075         AND.B #$0F,R14
1076         MOV.B R14,&$222
1077         BIC.B #4,&$243
1078         MOV @R15+,R14
1079         MOV @R13+,R0
1080     THEN
1081     SUB #2,R15
1082     MOV R14,0(R15)
1083     BIC.B #4,&$243
1084     MOV.B &$220,R14
1085     AND.B #$0F,R14
1086     MOV @R13+,R0
1087     ENDCODE
1088
1089     CODE LCD_WRC
1090     BIS.B #2,&$243
1091 BW1 SUB #2,R15
1092     MOV R14,0(R15)
1093     RRUM #4,R14
1094     BIC.B #1,&$243
1095     BIS.B #$0F,&$224
1096     COLON
1097     TOP_LCD 2 20_US
1098     TOP_LCD 2 20_US
1099     ;
1100
1101     CODE LCD_WRF
1102     BIC.B #2,&$243
1103     GOTO BW1
1104     ENDCODE
1105
1106     : LCD_CLEAR $01 LCD_WRF 100 20_us ;
1107     : LCD_HOME $02 LCD_WRF 100 20_us ;
1108
1109     HDNCODE WDT_INT
1110     BIT.B #$20,&$240
1111     0= IF
1112         CMP #19,&$3D6
1113         U< IF
1114             ADD #1,&$3D6
1115         THEN
1116     ELSE
1117         BIT.B #$40,&$240
1118         0= IF
1119             CMP #3,&$3D6
1120             U>= IF
1121             SUB #1,&$3D6
1122             THEN
1123         THEN
1124     THEN
1125     RETI
1126     ENDCODE
1127
1128     HDNCODE RC5_INT
1129     MOV #1778,R9
1130     MOV #14,R10
1131     BEGIN
1132       MOV #%1011100100,&$380
1133         RRUM    #1,R9
1134         MOV     R9,R8
1135         RRUM    #1,R8
1136         ADD     R9,R8
1137         BEGIN
1138             CMP R8,&$390
1139         U>= UNTIL
1140         BIT.B   #4,&$200
1141         ADDC    R11,R11
1142         MOV.B   &$200,&$208
1143         BIC.B   #4,&$20C
1144         SUB     #1,R10
1145     0<> WHILE
1146         ADD R9,R8
1147         BEGIN
1148             MOV &$390,R9
1149             CMP R8,R9
1150             U>= ?GOTO FW1
1151             BIT.B #4,&$20C
1152         0<> UNTIL
1153     REPEAT
1154     BIC #$30,&$380
1155     RLAM    #1,R11
1156     MOV.B   R11,R9
1157     RRUM    #2,R9
1158     BIT     #$4000,R11
1159     0= IF   BIS #$40,R9
1160     THEN
1161     RRUM    #3,R11
1162     XOR     @R1,R11
1163     BIT     #$400,R11
1164     0= ?GOTO FW2
1165     XOR #$400,0(R1)
1166     SUB #6,R15
1167     MOV R14,4(R15)
1168     MOV &$1DB6,2(R15)
1169     MOV #$10,&$1DB6
1170     MOV R9,0(R15)
1171     MOV #0,R14
1172     LO2HI
1173     LCD_CLEAR
1174     <# # #S #36 HOLD #>
1175     ['] LCD_WRC IS EMIT
1176     TYPE
1177     ['] EMIT >BODY IS EMIT
1178     HI2LO
1179     MOV @R15+,&$1DB6
1180     MOV @R15+,R14
1181 FW1 BIC #$30,&$380
1182 FW2 BIC #%1111_1000,0(R1)
1183     RETI
1184     ENDCODE
1185
1186     HDNCODE STOP_R2L
1187     CMP #WDT_INT,&$FFEA
1188     0= IF
1189         BIC.B #4,&$20A
1190         BIC.B #4,&$20C
1191         MOV #0,&$3C0
1192         MOV #0,&$340
1193         MOV #0,&$342
1194         MOV #{RC5TOLCD},R10
1195         MOV #$406C,-2(R10)
1196         MOV @R10+,&$183E
1197         MOV @R10+,&$FFEA
1198         MOV @R10+,&$FFDE
1199     THEN
1200     MOV @R1+,R0
1201     ENDCODE
1202
1203     CODE STOP
1204 BW1 CALL #STOP_R2L
1205     COLON
1206     ECHO
1207     ." type START to start RC5toLCD"
1208     ;
1209
1210     HDNCODE INIT_R2L
1211     MOV #%10_1101_0100,&$3C0
1212     $1800 @ 16000 =
1213     [IF]
1214         MOV #1,&$3A0
1215         MOV #1,&$3E0
1216     [THEN]
1217     $1800 @ 24000 =
1218     [IF]
1219         MOV #2,&$3A0
1220         MOV #2,&$3E0
1221     [THEN]
1222         MOV #19,&$3D2
1223     MOV #%0110_0000,&$3C6
1224     MOV #10,&$3D6
1225     BIS.B #$20,&$204
1226     BIS.B #$20,&$20A
1227     BIS.B #7,&$245
1228     BIC.B #7,&$247
1229     BIS.B #$0F,&$224
1230     BIC.B #$0F,&$226
1231     BIS.B #4,&$20A
1232     BIC.B #4,&$20C
1233     MOV #%01_0001_0100,&$340
1234     MOV ##3276,&$352
1235     MOV #%10000,&$342
1236     CALL &{RC5TOLCD}
1237     CMP #$0E,R14
1238     0<> IF
1239         CMP #$0A,R14
1240         U>= ?GOTO BW1
1241     THEN
1242     CMP #4,R14
1243     0= ?GOTO BW1
1244     LO2HI
1245     #1000 20_US
1246     %011 TOP_LCD
1247     #205 20_US
1248     %011 TOP_LCD
1249     #5 20_US
1250     %011 TOP_LCD
1251     #2 20_US
1252     %010 TOP_LCD
1253     #2 20_US
1254     %00101000 LCD_WRF
1255     %1000 LCD_WRF
1256     LCD_CLEAR
1257     %0110 LCD_WRF
1258     %1100 LCD_WRF
1259     LCD_CLEAR
1260     HI2LO
1261     MOV @R1+,R0
1262     ENDCODE
1263
1264     CODE START
1265     CMP #WDT_INT,&$FFEA
1266     0= IF
1267         MOV @R13+,R0
1268     THEN
1269     MOV #STOP_R2L,&{RC5TOLCD}-2
1270        MOV &$183E,&{RC5TOLCD}
1271        MOV #INIT_R2L,&$183E
1272     MOV &$FFEA,&{RC5TOLCD}+2
1273     MOV #WDT_INT,&$FFEA
1274     MOV &$FFDE,&{RC5TOLCD}+4
1275     MOV #RC5_INT,&$FFDE
1276     SUB #6,R15
1277     MOV R14,4(R15)
1278     MOV &$1800,2(R15)
1279     MOV #0,0(R15)
1280     MOV #200,R14
1281     CALL #$4028
1282     MOV @R15,&{RC5TOLCD}+6
1283     ADD #4,R15
1284     MOV @R15+,R14
1285     CALL #INIT_R2L
1286     LO2HI
1287     ." RC5toLCD is running,"
1288     ."  Type STOP to quit."
1289     HI2LO
1290     MOV #ALLOT+$08,R0
1291     ENDCODE
1292
1293 RST_SET 
1294
1295     MARKER {RC5TOLCD}
1296     8 ALLOT
1297
1298
1299
1300
1301 ; ------------------------------------------------------------------
1302 ; first we download the set of definitions we need (from CORE_ANS.4th for MSP_EXP430FR5994)
1303 ; ------------------------------------------------------------------
1304
1305     [UNDEFINED] =
1306     [IF]
1307     CODE =
1308     SUB @R15+,R14
1309     0<> IF
1310         AND #0,R14
1311         MOV @R13+,R0
1312     THEN
1313     XOR #-1,R14
1314     MOV @R13+,R0
1315     ENDCODE
1316     [THEN]
1317
1318     [UNDEFINED] IF
1319     [IF]
1320     CODE IF
1321     SUB #2,R15
1322     MOV R14,0(R15)
1323     MOV &$1DC0,R14
1324     ADD #4,&$1DC0
1325     MOV #$4096,0(R14)
1326     ADD #2,R14
1327     MOV @R13+,R0
1328     ENDCODE IMMEDIATE
1329
1330     CODE THEN
1331     MOV &$1DC0,0(R14)
1332     MOV @R15+,R14
1333     MOV @R13+,R0
1334     ENDCODE IMMEDIATE
1335     [THEN]
1336
1337     [UNDEFINED] ELSE
1338     [IF]
1339     CODE ELSE
1340     ADD #4,&$1DC0
1341     MOV &$1DC0,R10
1342     MOV #$409C,-4(R10)
1343     MOV R10,0(R14)
1344     SUB #2,R10
1345     MOV R10,R14
1346     MOV @R13+,R0
1347     ENDCODE IMMEDIATE
1348     [THEN]
1349
1350
1351     [UNDEFINED] CR
1352     [IF]
1353     CODE CR
1354     MOV #$409E,R0
1355     ENDCODE
1356
1357     :NONAME
1358     $0D EMIT $0A EMIT
1359     ; IS CR
1360     [THEN]
1361
1362     [UNDEFINED] >BODY
1363     [IF]
1364     CODE >BODY
1365     ADD #4,R14
1366     MOV @R13+,R0
1367     ENDCODE
1368     [THEN]
1369
1370 ; --------------------------
1371 ; end of definitions we need
1372 ; --------------------------
1373
1374     CODE 20_US
1375     BEGIN
1376         MOV &{RC5TOLCD}+6,R9
1377         SUB #2,R9
1378         BEGIN
1379             MOV #0,R3
1380             SUB #1,R9
1381         0=  UNTIL
1382         MOV #0,R3
1383         SUB #1,R14
1384     0= UNTIL
1385     MOV @R15+,R14
1386     MOV @R1+,R13
1387     ENDCODE
1388
1389     CODE TOP_LCD
1390     BIS.B #4,&$243
1391     BIT.B #1,&$241
1392     0= IF
1393         AND.B #$0F,R14
1394         MOV.B R14,&$222
1395         BIC.B #4,&$243
1396         MOV @R15+,R14
1397         MOV @R13+,R0
1398     THEN
1399     SUB #2,R15
1400     MOV R14,0(R15)
1401     BIC.B #4,&$243
1402     MOV.B &$220,R14
1403     AND.B #$0F,R14
1404     MOV @R13+,R0
1405     ENDCODE
1406
1407     CODE LCD_WRC
1408     BIS.B #2,&$243
1409 BW1 SUB #2,R15
1410     MOV R14,0(R15)
1411     RRUM #4,R14
1412     BIC.B #1,&$243
1413     BIS.B #$0F,&$224
1414     COLON
1415     TOP_LCD 2 20_US
1416     TOP_LCD 2 20_US
1417     ;
1418
1419     CODE LCD_WRF
1420     BIC.B #2,&$243
1421     GOTO BW1
1422     ENDCODE
1423
1424     : LCD_CLEAR $01 LCD_WRF 100 20_us ;
1425     : LCD_HOME $02 LCD_WRF 100 20_us ;
1426
1427     HDNCODE WDT_INT
1428     BIT.B #$20,&$240
1429     0= IF
1430         CMP #19,&$3D6
1431         U< IF
1432             ADD #1,&$3D6
1433         THEN
1434     ELSE
1435         BIT.B #$40,&$240
1436         0= IF
1437             CMP #3,&$3D6
1438             U>= IF
1439             SUB #1,&$3D6
1440             THEN
1441         THEN
1442     THEN
1443     RETI
1444     ENDCODE
1445
1446     HDNCODE RC5_INT
1447     MOV #1778,R9
1448     MOV #14,R10
1449     BEGIN
1450       MOV #%1011100100,&$380
1451         RRUM    #1,R9
1452         MOV     R9,R8
1453         RRUM    #1,R8
1454         ADD     R9,R8
1455         BEGIN
1456             CMP R8,&$390
1457         U>= UNTIL
1458         BIT.B   #4,&$200
1459         ADDC    R11,R11
1460         MOV.B   &$200,&$208
1461         BIC.B   #4,&$20C
1462         SUB     #1,R10
1463     0<> WHILE
1464         ADD R9,R8
1465         BEGIN
1466             MOV &$390,R9
1467             CMP R8,R9
1468             U>= ?GOTO FW1
1469             BIT.B #4,&$20C
1470         0<> UNTIL
1471     REPEAT
1472     BIC #$30,&$380
1473     RLAM    #1,R11
1474     MOV.B   R11,R9
1475     RRUM    #2,R9
1476     BIT     #$4000,R11
1477     0= IF   BIS #$40,R9
1478     THEN
1479     RRUM    #3,R11
1480     XOR     @R1,R11
1481     BIT     #$400,R11
1482     0= ?GOTO FW2
1483     XOR #$400,0(R1)
1484     SUB #6,R15
1485     MOV R14,4(R15)
1486     MOV &$1DB6,2(R15)
1487     MOV #$10,&$1DB6
1488     MOV R9,0(R15)
1489     MOV #0,R14
1490     LO2HI
1491     LCD_CLEAR
1492     <# # #S #36 HOLD #>
1493     ['] LCD_WRC IS EMIT
1494     TYPE
1495     ['] EMIT >BODY IS EMIT
1496     HI2LO
1497     MOV @R15+,&$1DB6
1498     MOV @R15+,R14
1499 FW1 BIC #$30,&$380
1500 FW2 BIC #%1111_1000,0(R1)
1501     RETI
1502     ENDCODE
1503
1504     HDNCODE STOP_R2L
1505     CMP #WDT_INT,&$FFEA
1506     0= IF
1507         BIC.B #4,&$20A
1508         BIC.B #4,&$20C
1509         MOV #0,&$3C0
1510         MOV #0,&$340
1511         MOV #0,&$342
1512         MOV #{RC5TOLCD},R10
1513         MOV #$406C,-2(R10)
1514         MOV @R10+,&$183E
1515         MOV @R10+,&$FFEA
1516         MOV @R10+,&$FFDE
1517     THEN
1518     MOV @R1+,R0
1519     ENDCODE
1520
1521     CODE STOP
1522 BW1 CALL #STOP_R2L
1523     COLON
1524     ECHO
1525     ." type START to start RC5toLCD"
1526     ;
1527
1528     HDNCODE INIT_R2L
1529     MOV #%10_1101_0100,&$3C0
1530     $1800 @ 16000 =
1531     [IF]
1532         MOV #1,&$3A0
1533         MOV #1,&$3E0
1534     [THEN]
1535     $1800 @ 24000 =
1536     [IF]
1537         MOV #2,&$3A0
1538         MOV #2,&$3E0
1539     [THEN]
1540         MOV #19,&$3D2
1541     MOV #%0110_0000,&$3C6
1542     MOV #10,&$3D6
1543     BIS.B #$20,&$204
1544     BIS.B #$20,&$20A
1545     BIS.B #7,&$245
1546     BIC.B #7,&$247
1547     BIS.B #$0F,&$224
1548     BIC.B #$0F,&$226
1549     BIS.B #4,&$20A
1550     BIC.B #4,&$20C
1551     MOV #%01_0001_0100,&$340
1552     MOV ##3276,&$352
1553     MOV #%10000,&$342
1554     CALL &{RC5TOLCD}
1555     CMP #$0E,R14
1556     0<> IF
1557         CMP #$0A,R14
1558         U>= ?GOTO BW1
1559     THEN
1560     CMP #4,R14
1561     0= ?GOTO BW1
1562     LO2HI
1563     #1000 20_US
1564     %011 TOP_LCD
1565     #205 20_US
1566     %011 TOP_LCD
1567     #5 20_US
1568     %011 TOP_LCD
1569     #2 20_US
1570     %010 TOP_LCD
1571     #2 20_US
1572     %00101000 LCD_WRF
1573     %1000 LCD_WRF
1574     LCD_CLEAR
1575     %0110 LCD_WRF
1576     %1100 LCD_WRF
1577     LCD_CLEAR
1578     HI2LO
1579     MOV @R1+,R0
1580     ENDCODE
1581
1582     CODE START
1583     CMP #WDT_INT,&$FFEA
1584     0= IF
1585         MOV @R13+,R0
1586     THEN
1587     MOV #STOP_R2L,&{RC5TOLCD}-2
1588        MOV &$183E,&{RC5TOLCD}
1589        MOV #INIT_R2L,&$183E
1590     MOV &$FFEA,&{RC5TOLCD}+2
1591     MOV #WDT_INT,&$FFEA
1592     MOV &$FFDE,&{RC5TOLCD}+4
1593     MOV #RC5_INT,&$FFDE
1594     SUB #6,R15
1595     MOV R14,4(R15)
1596     MOV &$1800,2(R15)
1597     MOV #0,0(R15)
1598     MOV #200,R14
1599     CALL #$4028
1600     MOV @R15,&{RC5TOLCD}+6
1601     ADD #4,R15
1602     MOV @R15+,R14
1603     CALL #INIT_R2L
1604     LO2HI
1605     ." RC5toLCD is running,"
1606     ."  Type STOP to quit."
1607     HI2LO
1608     MOV #ALLOT+$08,R0
1609     ENDCODE
1610
1611 RST_SET 
1612
1613     MARKER {RC5TOLCD}
1614     8 ALLOT
1615
1616
1617
1618
1619 ; ------------------------------------------------------------------
1620 ; first we download the set of definitions we need (from CORE_ANS.4th for MSP_EXP430FR5994)
1621 ; ------------------------------------------------------------------
1622
1623     [UNDEFINED] =
1624     [IF]
1625     CODE =
1626     SUB @R15+,R14
1627     0<> IF
1628         AND #0,R14
1629         MOV @R13+,R0
1630     THEN
1631     XOR #-1,R14
1632     MOV @R13+,R0
1633     ENDCODE
1634     [THEN]
1635
1636     [UNDEFINED] IF
1637     [IF]
1638     CODE IF
1639     SUB #2,R15
1640     MOV R14,0(R15)
1641     MOV &$1DC0,R14
1642     ADD #4,&$1DC0
1643     MOV #$4096,0(R14)
1644     ADD #2,R14
1645     MOV @R13+,R0
1646     ENDCODE IMMEDIATE
1647
1648     CODE THEN
1649     MOV &$1DC0,0(R14)
1650     MOV @R15+,R14
1651     MOV @R13+,R0
1652     ENDCODE IMMEDIATE
1653     [THEN]
1654
1655     [UNDEFINED] ELSE
1656     [IF]
1657     CODE ELSE
1658     ADD #4,&$1DC0
1659     MOV &$1DC0,R10
1660     MOV #$409C,-4(R10)
1661     MOV R10,0(R14)
1662     SUB #2,R10
1663     MOV R10,R14
1664     MOV @R13+,R0
1665     ENDCODE IMMEDIATE
1666     [THEN]
1667
1668
1669     [UNDEFINED] CR
1670     [IF]
1671     CODE CR
1672     MOV #$409E,R0
1673     ENDCODE
1674
1675     :NONAME
1676     $0D EMIT $0A EMIT
1677     ; IS CR
1678     [THEN]
1679
1680     [UNDEFINED] >BODY
1681     [IF]
1682     CODE >BODY
1683     ADD #4,R14
1684     MOV @R13+,R0
1685     ENDCODE
1686     [THEN]
1687
1688 ; --------------------------
1689 ; end of definitions we need
1690 ; --------------------------
1691
1692     CODE 20_US
1693     BEGIN
1694         MOV &{RC5TOLCD}+6,R9
1695         SUB #2,R9
1696         BEGIN
1697             MOV #0,R3
1698             SUB #1,R9
1699         0=  UNTIL
1700         MOV #0,R3
1701         SUB #1,R14
1702     0= UNTIL
1703     MOV @R15+,R14
1704     MOV @R1+,R13
1705     ENDCODE
1706
1707     CODE TOP_LCD
1708     BIS.B #4,&$243
1709     BIT.B #1,&$241
1710     0= IF
1711         AND.B #$0F,R14
1712         MOV.B R14,&$222
1713         BIC.B #4,&$243
1714         MOV @R15+,R14
1715         MOV @R13+,R0
1716     THEN
1717     SUB #2,R15
1718     MOV R14,0(R15)
1719     BIC.B #4,&$243
1720     MOV.B &$220,R14
1721     AND.B #$0F,R14
1722     MOV @R13+,R0
1723     ENDCODE
1724
1725     CODE LCD_WRC
1726     BIS.B #2,&$243
1727 BW1 SUB #2,R15
1728     MOV R14,0(R15)
1729     RRUM #4,R14
1730     BIC.B #1,&$243
1731     BIS.B #$0F,&$224
1732     COLON
1733     TOP_LCD 2 20_US
1734     TOP_LCD 2 20_US
1735     ;
1736
1737     CODE LCD_WRF
1738     BIC.B #2,&$243
1739     GOTO BW1
1740     ENDCODE
1741
1742     : LCD_CLEAR $01 LCD_WRF 100 20_us ;
1743     : LCD_HOME $02 LCD_WRF 100 20_us ;
1744
1745     HDNCODE WDT_INT
1746     BIT.B #$20,&$240
1747     0= IF
1748         CMP #19,&$3D6
1749         U< IF
1750             ADD #1,&$3D6
1751         THEN
1752     ELSE
1753         BIT.B #$40,&$240
1754         0= IF
1755             CMP #3,&$3D6
1756             U>= IF
1757             SUB #1,&$3D6
1758             THEN
1759         THEN
1760     THEN
1761     RETI
1762     ENDCODE
1763
1764     HDNCODE RC5_INT
1765     MOV #1778,R9
1766     MOV #14,R10
1767     BEGIN
1768       MOV #%1011100100,&$380
1769         RRUM    #1,R9
1770         MOV     R9,R8
1771         RRUM    #1,R8
1772         ADD     R9,R8
1773         BEGIN
1774             CMP R8,&$390
1775         U>= UNTIL
1776         BIT.B   #4,&$200
1777         ADDC    R11,R11
1778         MOV.B   &$200,&$208
1779         BIC.B   #4,&$20C
1780         SUB     #1,R10
1781     0<> WHILE
1782         ADD R9,R8
1783         BEGIN
1784             MOV &$390,R9
1785             CMP R8,R9
1786             U>= ?GOTO FW1
1787             BIT.B #4,&$20C
1788         0<> UNTIL
1789     REPEAT
1790     BIC #$30,&$380
1791     RLAM    #1,R11
1792     MOV.B   R11,R9
1793     RRUM    #2,R9
1794     BIT     #$4000,R11
1795     0= IF   BIS #$40,R9
1796     THEN
1797     RRUM    #3,R11
1798     XOR     @R1,R11
1799     BIT     #$400,R11
1800     0= ?GOTO FW2
1801     XOR #$400,0(R1)
1802     SUB #6,R15
1803     MOV R14,4(R15)
1804     MOV &$1DB6,2(R15)
1805     MOV #$10,&$1DB6
1806     MOV R9,0(R15)
1807     MOV #0,R14
1808     LO2HI
1809     LCD_CLEAR
1810     <# # #S #36 HOLD #>
1811     ['] LCD_WRC IS EMIT
1812     TYPE
1813     ['] EMIT >BODY IS EMIT
1814     HI2LO
1815     MOV @R15+,&$1DB6
1816     MOV @R15+,R14
1817 FW1 BIC #$30,&$380
1818 FW2 BIC #%1111_1000,0(R1)
1819     RETI
1820     ENDCODE
1821
1822     HDNCODE STOP_R2L
1823     CMP #WDT_INT,&$FFEA
1824     0= IF
1825         BIC.B #4,&$20A
1826         BIC.B #4,&$20C
1827         MOV #0,&$3C0
1828         MOV #0,&$340
1829         MOV #0,&$342
1830         MOV #{RC5TOLCD},R10
1831         MOV #$406C,-2(R10)
1832         MOV @R10+,&$183E
1833         MOV @R10+,&$FFEA
1834         MOV @R10+,&$FFDE
1835     THEN
1836     MOV @R1+,R0
1837     ENDCODE
1838
1839     CODE STOP
1840 BW1 CALL #STOP_R2L
1841     COLON
1842     ECHO
1843     ." type START to start RC5toLCD"
1844     ;
1845
1846     HDNCODE INIT_R2L
1847     MOV #%10_1101_0100,&$3C0
1848     $1800 @ 16000 =
1849     [IF]
1850         MOV #1,&$3A0
1851         MOV #1,&$3E0
1852     [THEN]
1853     $1800 @ 24000 =
1854     [IF]
1855         MOV #2,&$3A0
1856         MOV #2,&$3E0
1857     [THEN]
1858         MOV #19,&$3D2
1859     MOV #%0110_0000,&$3C6
1860     MOV #10,&$3D6
1861     BIS.B #$20,&$204
1862     BIS.B #$20,&$20A
1863     BIS.B #7,&$245
1864     BIC.B #7,&$247
1865     BIS.B #$0F,&$224
1866     BIC.B #$0F,&$226
1867     BIS.B #4,&$20A
1868     BIC.B #4,&$20C
1869     MOV #%01_0001_0100,&$340
1870     MOV ##3276,&$352
1871     MOV #%10000,&$342
1872     CALL &{RC5TOLCD}
1873     CMP #$0E,R14
1874     0<> IF
1875         CMP #$0A,R14
1876         U>= ?GOTO BW1
1877     THEN
1878     CMP #4,R14
1879     0= ?GOTO BW1
1880     LO2HI
1881     #1000 20_US
1882     %011 TOP_LCD
1883     #205 20_US
1884     %011 TOP_LCD
1885     #5 20_US
1886     %011 TOP_LCD
1887     #2 20_US
1888     %010 TOP_LCD
1889     #2 20_US
1890     %00101000 LCD_WRF
1891     %1000 LCD_WRF
1892     LCD_CLEAR
1893     %0110 LCD_WRF
1894     %1100 LCD_WRF
1895     LCD_CLEAR
1896     HI2LO
1897     MOV @R1+,R0
1898     ENDCODE
1899
1900     CODE START
1901     CMP #WDT_INT,&$FFEA
1902     0= IF
1903         MOV @R13+,R0
1904     THEN
1905     MOV #STOP_R2L,&{RC5TOLCD}-2
1906        MOV &$183E,&{RC5TOLCD}
1907        MOV #INIT_R2L,&$183E
1908     MOV &$FFEA,&{RC5TOLCD}+2
1909     MOV #WDT_INT,&$FFEA
1910     MOV &$FFDE,&{RC5TOLCD}+4
1911     MOV #RC5_INT,&$FFDE
1912     SUB #6,R15
1913     MOV R14,4(R15)
1914     MOV &$1800,2(R15)
1915     MOV #0,0(R15)
1916     MOV #200,R14
1917     CALL #$4028
1918     MOV @R15,&{RC5TOLCD}+6
1919     ADD #4,R15
1920     MOV @R15+,R14
1921     CALL #INIT_R2L
1922     LO2HI
1923     ." RC5toLCD is running,"
1924     ."  Type STOP to quit."
1925     HI2LO
1926     MOV #ALLOT+$08,R0
1927     ENDCODE
1928
1929 RST_SET 
1930
1931     MARKER {RC5TOLCD}
1932     8 ALLOT
1933
1934
1935
1936
1937 ; ------------------------------------------------------------------
1938 ; first we download the set of definitions we need (from CORE_ANS.4th for MSP_EXP430FR5994)
1939 ; ------------------------------------------------------------------
1940
1941     [UNDEFINED] =
1942     [IF]
1943     CODE =
1944     SUB @R15+,R14
1945     0<> IF
1946         AND #0,R14
1947         MOV @R13+,R0
1948     THEN
1949     XOR #-1,R14
1950     MOV @R13+,R0
1951     ENDCODE
1952     [THEN]
1953
1954     [UNDEFINED] IF
1955     [IF]
1956     CODE IF
1957     SUB #2,R15
1958     MOV R14,0(R15)
1959     MOV &$1DC0,R14
1960     ADD #4,&$1DC0
1961     MOV #$4096,0(R14)
1962     ADD #2,R14
1963     MOV @R13+,R0
1964     ENDCODE IMMEDIATE
1965
1966     CODE THEN
1967     MOV &$1DC0,0(R14)
1968     MOV @R15+,R14
1969     MOV @R13+,R0
1970     ENDCODE IMMEDIATE
1971     [THEN]
1972
1973     [UNDEFINED] ELSE
1974     [IF]
1975     CODE ELSE
1976     ADD #4,&$1DC0
1977     MOV &$1DC0,R10
1978     MOV #$409C,-4(R10)
1979     MOV R10,0(R14)
1980     SUB #2,R10
1981     MOV R10,R14
1982     MOV @R13+,R0
1983     ENDCODE IMMEDIATE
1984     [THEN]
1985
1986
1987     [UNDEFINED] CR
1988     [IF]
1989     CODE CR
1990     MOV #$409E,R0
1991     ENDCODE
1992
1993     :NONAME
1994     $0D EMIT $0A EMIT
1995     ; IS CR
1996     [THEN]
1997
1998     [UNDEFINED] >BODY
1999     [IF]
2000     CODE >BODY
2001     ADD #4,R14
2002     MOV @R13+,R0
2003     ENDCODE
2004     [THEN]
2005
2006 ; --------------------------
2007 ; end of definitions we need
2008 ; --------------------------
2009
2010     CODE 20_US
2011     BEGIN
2012         MOV &{RC5TOLCD}+6,R9
2013         SUB #2,R9
2014         BEGIN
2015             MOV #0,R3
2016             SUB #1,R9
2017         0=  UNTIL
2018         MOV #0,R3
2019         SUB #1,R14
2020     0= UNTIL
2021     MOV @R15+,R14
2022     MOV @R1+,R13
2023     ENDCODE
2024
2025     CODE TOP_LCD
2026     BIS.B #4,&$243
2027     BIT.B #1,&$241
2028     0= IF
2029         AND.B #$0F,R14
2030         MOV.B R14,&$222
2031         BIC.B #4,&$243
2032         MOV @R15+,R14
2033         MOV @R13+,R0
2034     THEN
2035     SUB #2,R15
2036     MOV R14,0(R15)
2037     BIC.B #4,&$243
2038     MOV.B &$220,R14
2039     AND.B #$0F,R14
2040     MOV @R13+,R0
2041     ENDCODE
2042
2043     CODE LCD_WRC
2044     BIS.B #2,&$243
2045 BW1 SUB #2,R15
2046     MOV R14,0(R15)
2047     RRUM #4,R14
2048     BIC.B #1,&$243
2049     BIS.B #$0F,&$224
2050     COLON
2051     TOP_LCD 2 20_US
2052     TOP_LCD 2 20_US
2053     ;
2054
2055     CODE LCD_WRF
2056     BIC.B #2,&$243
2057     GOTO BW1
2058     ENDCODE
2059
2060     : LCD_CLEAR $01 LCD_WRF 100 20_us ;
2061     : LCD_HOME $02 LCD_WRF 100 20_us ;
2062
2063     HDNCODE WDT_INT
2064     BIT.B #$20,&$240
2065     0= IF
2066         CMP #19,&$3D6
2067         U< IF
2068             ADD #1,&$3D6
2069         THEN
2070     ELSE
2071         BIT.B #$40,&$240
2072         0= IF
2073             CMP #3,&$3D6
2074             U>= IF
2075             SUB #1,&$3D6
2076             THEN
2077         THEN
2078     THEN
2079     RETI
2080     ENDCODE
2081
2082     HDNCODE RC5_INT
2083     MOV #1778,R9
2084     MOV #14,R10
2085     BEGIN
2086       MOV #%1011100100,&$380
2087         RRUM    #1,R9
2088         MOV     R9,R8
2089         RRUM    #1,R8
2090         ADD     R9,R8
2091         BEGIN
2092             CMP R8,&$390
2093         U>= UNTIL
2094         BIT.B   #4,&$200
2095         ADDC    R11,R11
2096         MOV.B   &$200,&$208
2097         BIC.B   #4,&$20C
2098         SUB     #1,R10
2099     0<> WHILE
2100         ADD R9,R8
2101         BEGIN
2102             MOV &$390,R9
2103             CMP R8,R9
2104             U>= ?GOTO FW1
2105             BIT.B #4,&$20C
2106         0<> UNTIL
2107     REPEAT
2108     BIC #$30,&$380
2109     RLAM    #1,R11
2110     MOV.B   R11,R9
2111     RRUM    #2,R9
2112     BIT     #$4000,R11
2113     0= IF   BIS #$40,R9
2114     THEN
2115     RRUM    #3,R11
2116     XOR     @R1,R11
2117     BIT     #$400,R11
2118     0= ?GOTO FW2
2119     XOR #$400,0(R1)
2120     SUB #6,R15
2121     MOV R14,4(R15)
2122     MOV &$1DB6,2(R15)
2123     MOV #$10,&$1DB6
2124     MOV R9,0(R15)
2125     MOV #0,R14
2126     LO2HI
2127     LCD_CLEAR
2128     <# # #S #36 HOLD #>
2129     ['] LCD_WRC IS EMIT
2130     TYPE
2131     ['] EMIT >BODY IS EMIT
2132     HI2LO
2133     MOV @R15+,&$1DB6
2134     MOV @R15+,R14
2135 FW1 BIC #$30,&$380
2136 FW2 BIC #%1111_1000,0(R1)
2137     RETI
2138     ENDCODE
2139
2140     HDNCODE STOP_R2L
2141     CMP #WDT_INT,&$FFEA
2142     0= IF
2143         BIC.B #4,&$20A
2144         BIC.B #4,&$20C
2145         MOV #0,&$3C0
2146         MOV #0,&$340
2147         MOV #0,&$342
2148         MOV #{RC5TOLCD},R10
2149         MOV #$406C,-2(R10)
2150         MOV @R10+,&$183E
2151         MOV @R10+,&$FFEA
2152         MOV @R10+,&$FFDE
2153     THEN
2154     MOV @R1+,R0
2155     ENDCODE
2156
2157     CODE STOP
2158 BW1 CALL #STOP_R2L
2159     COLON
2160     ECHO
2161     ." type START to start RC5toLCD"
2162     ;
2163
2164     HDNCODE INIT_R2L
2165     MOV #%10_1101_0100,&$3C0
2166     $1800 @ 16000 =
2167     [IF]
2168         MOV #1,&$3A0
2169         MOV #1,&$3E0
2170     [THEN]
2171     $1800 @ 24000 =
2172     [IF]
2173         MOV #2,&$3A0
2174         MOV #2,&$3E0
2175     [THEN]
2176         MOV #19,&$3D2
2177     MOV #%0110_0000,&$3C6
2178     MOV #10,&$3D6
2179     BIS.B #$20,&$204
2180     BIS.B #$20,&$20A
2181     BIS.B #7,&$245
2182     BIC.B #7,&$247
2183     BIS.B #$0F,&$224
2184     BIC.B #$0F,&$226
2185     BIS.B #4,&$20A
2186     BIC.B #4,&$20C
2187     MOV #%01_0001_0100,&$340
2188     MOV ##3276,&$352
2189     MOV #%10000,&$342
2190     CALL &{RC5TOLCD}
2191     CMP #$0E,R14
2192     0<> IF
2193         CMP #$0A,R14
2194         U>= ?GOTO BW1
2195     THEN
2196     CMP #4,R14
2197     0= ?GOTO BW1
2198     LO2HI
2199     #1000 20_US
2200     %011 TOP_LCD
2201     #205 20_US
2202     %011 TOP_LCD
2203     #5 20_US
2204     %011 TOP_LCD
2205     #2 20_US
2206     %010 TOP_LCD
2207     #2 20_US
2208     %00101000 LCD_WRF
2209     %1000 LCD_WRF
2210     LCD_CLEAR
2211     %0110 LCD_WRF
2212     %1100 LCD_WRF
2213     LCD_CLEAR
2214     HI2LO
2215     MOV @R1+,R0
2216     ENDCODE
2217
2218     CODE START
2219     CMP #WDT_INT,&$FFEA
2220     0= IF
2221         MOV @R13+,R0
2222     THEN
2223     MOV #STOP_R2L,&{RC5TOLCD}-2
2224        MOV &$183E,&{RC5TOLCD}
2225        MOV #INIT_R2L,&$183E
2226     MOV &$FFEA,&{RC5TOLCD}+2
2227     MOV #WDT_INT,&$FFEA
2228     MOV &$FFDE,&{RC5TOLCD}+4
2229     MOV #RC5_INT,&$FFDE
2230     SUB #6,R15
2231     MOV R14,4(R15)
2232     MOV &$1800,2(R15)
2233     MOV #0,0(R15)
2234     MOV #200,R14
2235     CALL #$4028
2236     MOV @R15,&{RC5TOLCD}+6
2237     ADD #4,R15
2238     MOV @R15+,R14
2239     CALL #INIT_R2L
2240     LO2HI
2241     ." RC5toLCD is running,"
2242     ."  Type STOP to quit."
2243     HI2LO
2244     MOV #ALLOT+$08,R0
2245     ENDCODE
2246
2247 RST_SET 
2248
2249     MARKER {RC5TOLCD}
2250     8 ALLOT
2251
2252
2253
2254
2255 ; ------------------------------------------------------------------
2256 ; first we download the set of definitions we need (from CORE_ANS.4th for MSP_EXP430FR5994)
2257 ; ------------------------------------------------------------------
2258
2259     [UNDEFINED] =
2260     [IF]
2261     CODE =
2262     SUB @R15+,R14
2263     0<> IF
2264         AND #0,R14
2265         MOV @R13+,R0
2266     THEN
2267     XOR #-1,R14
2268     MOV @R13+,R0
2269     ENDCODE
2270     [THEN]
2271
2272     [UNDEFINED] IF
2273     [IF]
2274     CODE IF
2275     SUB #2,R15
2276     MOV R14,0(R15)
2277     MOV &$1DC0,R14
2278     ADD #4,&$1DC0
2279     MOV #$4096,0(R14)
2280     ADD #2,R14
2281     MOV @R13+,R0
2282     ENDCODE IMMEDIATE
2283
2284     CODE THEN
2285     MOV &$1DC0,0(R14)
2286     MOV @R15+,R14
2287     MOV @R13+,R0
2288     ENDCODE IMMEDIATE
2289     [THEN]
2290
2291     [UNDEFINED] ELSE
2292     [IF]
2293     CODE ELSE
2294     ADD #4,&$1DC0
2295     MOV &$1DC0,R10
2296     MOV #$409C,-4(R10)
2297     MOV R10,0(R14)
2298     SUB #2,R10
2299     MOV R10,R14
2300     MOV @R13+,R0
2301     ENDCODE IMMEDIATE
2302     [THEN]
2303
2304
2305     [UNDEFINED] CR
2306     [IF]
2307     CODE CR
2308     MOV #$409E,R0
2309     ENDCODE
2310
2311     :NONAME
2312     $0D EMIT $0A EMIT
2313     ; IS CR
2314     [THEN]
2315
2316     [UNDEFINED] >BODY
2317     [IF]
2318     CODE >BODY
2319     ADD #4,R14
2320     MOV @R13+,R0
2321     ENDCODE
2322     [THEN]
2323
2324 ; --------------------------
2325 ; end of definitions we need
2326 ; --------------------------
2327
2328     CODE 20_US
2329     BEGIN
2330         MOV &{RC5TOLCD}+6,R9
2331         SUB #2,R9
2332         BEGIN
2333             MOV #0,R3
2334             SUB #1,R9
2335         0=  UNTIL
2336         MOV #0,R3
2337         SUB #1,R14
2338     0= UNTIL
2339     MOV @R15+,R14
2340     MOV @R1+,R13
2341     ENDCODE
2342
2343     CODE TOP_LCD
2344     BIS.B #4,&$243
2345     BIT.B #1,&$241
2346     0= IF
2347         AND.B #$0F,R14
2348         MOV.B R14,&$222
2349         BIC.B #4,&$243
2350         MOV @R15+,R14
2351         MOV @R13+,R0
2352     THEN
2353     SUB #2,R15
2354     MOV R14,0(R15)
2355     BIC.B #4,&$243
2356     MOV.B &$220,R14
2357     AND.B #$0F,R14
2358     MOV @R13+,R0
2359     ENDCODE
2360
2361     CODE LCD_WRC
2362     BIS.B #2,&$243
2363 BW1 SUB #2,R15
2364     MOV R14,0(R15)
2365     RRUM #4,R14
2366     BIC.B #1,&$243
2367     BIS.B #$0F,&$224
2368     COLON
2369     TOP_LCD 2 20_US
2370     TOP_LCD 2 20_US
2371     ;
2372
2373     CODE LCD_WRF
2374     BIC.B #2,&$243
2375     GOTO BW1
2376     ENDCODE
2377
2378     : LCD_CLEAR $01 LCD_WRF 100 20_us ;
2379     : LCD_HOME $02 LCD_WRF 100 20_us ;
2380
2381     HDNCODE WDT_INT
2382     BIT.B #$20,&$240
2383     0= IF
2384         CMP #19,&$3D6
2385         U< IF
2386             ADD #1,&$3D6
2387         THEN
2388     ELSE
2389         BIT.B #$40,&$240
2390         0= IF
2391             CMP #3,&$3D6
2392             U>= IF
2393             SUB #1,&$3D6
2394             THEN
2395         THEN
2396     THEN
2397     RETI
2398     ENDCODE
2399
2400     HDNCODE RC5_INT
2401     MOV #1778,R9
2402     MOV #14,R10
2403     BEGIN
2404       MOV #%1011100100,&$380
2405         RRUM    #1,R9
2406         MOV     R9,R8
2407         RRUM    #1,R8
2408         ADD     R9,R8
2409         BEGIN
2410             CMP R8,&$390
2411         U>= UNTIL
2412         BIT.B   #4,&$200
2413         ADDC    R11,R11
2414         MOV.B   &$200,&$208
2415         BIC.B   #4,&$20C
2416         SUB     #1,R10
2417     0<> WHILE
2418         ADD R9,R8
2419         BEGIN
2420             MOV &$390,R9
2421             CMP R8,R9
2422             U>= ?GOTO FW1
2423             BIT.B #4,&$20C
2424         0<> UNTIL
2425     REPEAT
2426     BIC #$30,&$380
2427     RLAM    #1,R11
2428     MOV.B   R11,R9
2429     RRUM    #2,R9
2430     BIT     #$4000,R11
2431     0= IF   BIS #$40,R9
2432     THEN
2433     RRUM    #3,R11
2434     XOR     @R1,R11
2435     BIT     #$400,R11
2436     0= ?GOTO FW2
2437     XOR #$400,0(R1)
2438     SUB #6,R15
2439     MOV R14,4(R15)
2440     MOV &$1DB6,2(R15)
2441     MOV #$10,&$1DB6
2442     MOV R9,0(R15)
2443     MOV #0,R14
2444     LO2HI
2445     LCD_CLEAR
2446     <# # #S #36 HOLD #>
2447     ['] LCD_WRC IS EMIT
2448     TYPE
2449     ['] EMIT >BODY IS EMIT
2450     HI2LO
2451     MOV @R15+,&$1DB6
2452     MOV @R15+,R14
2453 FW1 BIC #$30,&$380
2454 FW2 BIC #%1111_1000,0(R1)
2455     RETI
2456     ENDCODE
2457
2458     HDNCODE STOP_R2L
2459     CMP #WDT_INT,&$FFEA
2460     0= IF
2461         BIC.B #4,&$20A
2462         BIC.B #4,&$20C
2463         MOV #0,&$3C0
2464         MOV #0,&$340
2465         MOV #0,&$342
2466         MOV #{RC5TOLCD},R10
2467         MOV #$406C,-2(R10)
2468         MOV @R10+,&$183E
2469         MOV @R10+,&$FFEA
2470         MOV @R10+,&$FFDE
2471     THEN
2472     MOV @R1+,R0
2473     ENDCODE
2474
2475     CODE STOP
2476 BW1 CALL #STOP_R2L
2477     COLON
2478     ECHO
2479     ." type START to start RC5toLCD"
2480     ;
2481
2482     HDNCODE INIT_R2L
2483     MOV #%10_1101_0100,&$3C0
2484     $1800 @ 16000 =
2485     [IF]
2486         MOV #1,&$3A0
2487         MOV #1,&$3E0
2488     [THEN]
2489     $1800 @ 24000 =
2490     [IF]
2491         MOV #2,&$3A0
2492         MOV #2,&$3E0
2493     [THEN]
2494         MOV #19,&$3D2
2495     MOV #%0110_0000,&$3C6
2496     MOV #10,&$3D6
2497     BIS.B #$20,&$204
2498     BIS.B #$20,&$20A
2499     BIS.B #7,&$245
2500     BIC.B #7,&$247
2501     BIS.B #$0F,&$224
2502     BIC.B #$0F,&$226
2503     BIS.B #4,&$20A
2504     BIC.B #4,&$20C
2505     MOV #%01_0001_0100,&$340
2506     MOV ##3276,&$352
2507     MOV #%10000,&$342
2508     CALL &{RC5TOLCD}
2509     CMP #$0E,R14
2510     0<> IF
2511         CMP #$0A,R14
2512         U>= ?GOTO BW1
2513     THEN
2514     CMP #4,R14
2515     0= ?GOTO BW1
2516     LO2HI
2517     #1000 20_US
2518     %011 TOP_LCD
2519     #205 20_US
2520     %011 TOP_LCD
2521     #5 20_US
2522     %011 TOP_LCD
2523     #2 20_US
2524     %010 TOP_LCD
2525     #2 20_US
2526     %00101000 LCD_WRF
2527     %1000 LCD_WRF
2528     LCD_CLEAR
2529     %0110 LCD_WRF
2530     %1100 LCD_WRF
2531     LCD_CLEAR
2532     HI2LO
2533     MOV @R1+,R0
2534     ENDCODE
2535
2536     CODE START
2537     CMP #WDT_INT,&$FFEA
2538     0= IF
2539         MOV @R13+,R0
2540     THEN
2541     MOV #STOP_R2L,&{RC5TOLCD}-2
2542        MOV &$183E,&{RC5TOLCD}
2543        MOV #INIT_R2L,&$183E
2544     MOV &$FFEA,&{RC5TOLCD}+2
2545     MOV #WDT_INT,&$FFEA
2546     MOV &$FFDE,&{RC5TOLCD}+4
2547     MOV #RC5_INT,&$FFDE
2548     SUB #6,R15
2549     MOV R14,4(R15)
2550     MOV &$1800,2(R15)
2551     MOV #0,0(R15)
2552     MOV #200,R14
2553     CALL #$4028
2554     MOV @R15,&{RC5TOLCD}+6
2555     ADD #4,R15
2556     MOV @R15+,R14
2557     CALL #INIT_R2L
2558     LO2HI
2559     ." RC5toLCD is running,"
2560     ."  Type STOP to quit."
2561     HI2LO
2562     MOV #ALLOT+$08,R0
2563     ENDCODE
2564
2565 RST_SET 
2566
2567     MARKER {RC5TOLCD}
2568     8 ALLOT
2569
2570
2571
2572
2573 ; ------------------------------------------------------------------
2574 ; first we download the set of definitions we need (from CORE_ANS.4th for MSP_EXP430FR5994)
2575 ; ------------------------------------------------------------------
2576
2577     [UNDEFINED] =
2578     [IF]
2579     CODE =
2580     SUB @R15+,R14
2581     0<> IF
2582         AND #0,R14
2583         MOV @R13+,R0
2584     THEN
2585     XOR #-1,R14
2586     MOV @R13+,R0
2587     ENDCODE
2588     [THEN]
2589
2590     [UNDEFINED] IF
2591     [IF]
2592     CODE IF
2593     SUB #2,R15
2594     MOV R14,0(R15)
2595     MOV &$1DC0,R14
2596     ADD #4,&$1DC0
2597     MOV #$4096,0(R14)
2598     ADD #2,R14
2599     MOV @R13+,R0
2600     ENDCODE IMMEDIATE
2601
2602     CODE THEN
2603     MOV &$1DC0,0(R14)
2604     MOV @R15+,R14
2605     MOV @R13+,R0
2606     ENDCODE IMMEDIATE
2607     [THEN]
2608
2609     [UNDEFINED] ELSE
2610     [IF]
2611     CODE ELSE
2612     ADD #4,&$1DC0
2613     MOV &$1DC0,R10
2614     MOV #$409C,-4(R10)
2615     MOV R10,0(R14)
2616     SUB #2,R10
2617     MOV R10,R14
2618     MOV @R13+,R0
2619     ENDCODE IMMEDIATE
2620     [THEN]
2621
2622
2623     [UNDEFINED] CR
2624     [IF]
2625     CODE CR
2626     MOV #$409E,R0
2627     ENDCODE
2628
2629     :NONAME
2630     $0D EMIT $0A EMIT
2631     ; IS CR
2632     [THEN]
2633
2634     [UNDEFINED] >BODY
2635     [IF]
2636     CODE >BODY
2637     ADD #4,R14
2638     MOV @R13+,R0
2639     ENDCODE
2640     [THEN]
2641
2642 ; --------------------------
2643 ; end of definitions we need
2644 ; --------------------------
2645
2646     CODE 20_US
2647     BEGIN
2648         MOV &{RC5TOLCD}+6,R9
2649         SUB #2,R9
2650         BEGIN
2651             MOV #0,R3
2652             SUB #1,R9
2653         0=  UNTIL
2654         MOV #0,R3
2655         SUB #1,R14
2656     0= UNTIL
2657     MOV @R15+,R14
2658     MOV @R1+,R13
2659     ENDCODE
2660
2661     CODE TOP_LCD
2662     BIS.B #4,&$243
2663     BIT.B #1,&$241
2664     0= IF
2665         AND.B #$0F,R14
2666         MOV.B R14,&$222
2667         BIC.B #4,&$243
2668         MOV @R15+,R14
2669         MOV @R13+,R0
2670     THEN
2671     SUB #2,R15
2672     MOV R14,0(R15)
2673     BIC.B #4,&$243
2674     MOV.B &$220,R14
2675     AND.B #$0F,R14
2676     MOV @R13+,R0
2677     ENDCODE
2678
2679     CODE LCD_WRC
2680     BIS.B #2,&$243
2681 BW1 SUB #2,R15
2682     MOV R14,0(R15)
2683     RRUM #4,R14
2684     BIC.B #1,&$243
2685     BIS.B #$0F,&$224
2686     COLON
2687     TOP_LCD 2 20_US
2688     TOP_LCD 2 20_US
2689     ;
2690
2691     CODE LCD_WRF
2692     BIC.B #2,&$243
2693     GOTO BW1
2694     ENDCODE
2695
2696     : LCD_CLEAR $01 LCD_WRF 100 20_us ;
2697     : LCD_HOME $02 LCD_WRF 100 20_us ;
2698
2699     HDNCODE WDT_INT
2700     BIT.B #$20,&$240
2701     0= IF
2702         CMP #19,&$3D6
2703         U< IF
2704             ADD #1,&$3D6
2705         THEN
2706     ELSE
2707         BIT.B #$40,&$240
2708         0= IF
2709             CMP #3,&$3D6
2710             U>= IF
2711             SUB #1,&$3D6
2712             THEN
2713         THEN
2714     THEN
2715     RETI
2716     ENDCODE
2717
2718     HDNCODE RC5_INT
2719     MOV #1778,R9
2720     MOV #14,R10
2721     BEGIN
2722       MOV #%1011100100,&$380
2723         RRUM    #1,R9
2724         MOV     R9,R8
2725         RRUM    #1,R8
2726         ADD     R9,R8
2727         BEGIN
2728             CMP R8,&$390
2729         U>= UNTIL
2730         BIT.B   #4,&$200
2731         ADDC    R11,R11
2732         MOV.B   &$200,&$208
2733         BIC.B   #4,&$20C
2734         SUB     #1,R10
2735     0<> WHILE
2736         ADD R9,R8
2737         BEGIN
2738             MOV &$390,R9
2739             CMP R8,R9
2740             U>= ?GOTO FW1
2741             BIT.B #4,&$20C
2742         0<> UNTIL
2743     REPEAT
2744     BIC #$30,&$380
2745     RLAM    #1,R11
2746     MOV.B   R11,R9
2747     RRUM    #2,R9
2748     BIT     #$4000,R11
2749     0= IF   BIS #$40,R9
2750     THEN
2751     RRUM    #3,R11
2752     XOR     @R1,R11
2753     BIT     #$400,R11
2754     0= ?GOTO FW2
2755     XOR #$400,0(R1)
2756     SUB #6,R15
2757     MOV R14,4(R15)
2758     MOV &$1DB6,2(R15)
2759     MOV #$10,&$1DB6
2760     MOV R9,0(R15)
2761     MOV #0,R14
2762     LO2HI
2763     LCD_CLEAR
2764     <# # #S #36 HOLD #>
2765     ['] LCD_WRC IS EMIT
2766     TYPE
2767     ['] EMIT >BODY IS EMIT
2768     HI2LO
2769     MOV @R15+,&$1DB6
2770     MOV @R15+,R14
2771 FW1 BIC #$30,&$380
2772 FW2 BIC #%1111_1000,0(R1)
2773     RETI
2774     ENDCODE
2775
2776     HDNCODE STOP_R2L
2777     CMP #WDT_INT,&$FFEA
2778     0= IF
2779         BIC.B #4,&$20A
2780         BIC.B #4,&$20C
2781         MOV #0,&$3C0
2782         MOV #0,&$340
2783         MOV #0,&$342
2784         MOV #{RC5TOLCD},R10
2785         MOV #$406C,-2(R10)
2786         MOV @R10+,&$183E
2787         MOV @R10+,&$FFEA
2788         MOV @R10+,&$FFDE
2789     THEN
2790     MOV @R1+,R0
2791     ENDCODE
2792
2793     CODE STOP
2794 BW1 CALL #STOP_R2L
2795     COLON
2796     ECHO
2797     ." type START to start RC5toLCD"
2798     ;
2799
2800     HDNCODE INIT_R2L
2801     MOV #%10_1101_0100,&$3C0
2802     $1800 @ 16000 =
2803     [IF]
2804         MOV #1,&$3A0
2805         MOV #1,&$3E0
2806     [THEN]
2807     $1800 @ 24000 =
2808     [IF]
2809         MOV #2,&$3A0
2810         MOV #2,&$3E0
2811     [THEN]
2812         MOV #19,&$3D2
2813     MOV #%0110_0000,&$3C6
2814     MOV #10,&$3D6
2815     BIS.B #$20,&$204
2816     BIS.B #$20,&$20A
2817     BIS.B #7,&$245
2818     BIC.B #7,&$247
2819     BIS.B #$0F,&$224
2820     BIC.B #$0F,&$226
2821     BIS.B #4,&$20A
2822     BIC.B #4,&$20C
2823     MOV #%01_0001_0100,&$340
2824     MOV ##3276,&$352
2825     MOV #%10000,&$342
2826     CALL &{RC5TOLCD}
2827     CMP #$0E,R14
2828     0<> IF
2829         CMP #$0A,R14
2830         U>= ?GOTO BW1
2831     THEN
2832     CMP #4,R14
2833     0= ?GOTO BW1
2834     LO2HI
2835     #1000 20_US
2836     %011 TOP_LCD
2837     #205 20_US
2838     %011 TOP_LCD
2839     #5 20_US
2840     %011 TOP_LCD
2841     #2 20_US
2842     %010 TOP_LCD
2843     #2 20_US
2844     %00101000 LCD_WRF
2845     %1000 LCD_WRF
2846     LCD_CLEAR
2847     %0110 LCD_WRF
2848     %1100 LCD_WRF
2849     LCD_CLEAR
2850     HI2LO
2851     MOV @R1+,R0
2852     ENDCODE
2853
2854     CODE START
2855     CMP #WDT_INT,&$FFEA
2856     0= IF
2857         MOV @R13+,R0
2858     THEN
2859     MOV #STOP_R2L,&{RC5TOLCD}-2
2860        MOV &$183E,&{RC5TOLCD}
2861        MOV #INIT_R2L,&$183E
2862     MOV &$FFEA,&{RC5TOLCD}+2
2863     MOV #WDT_INT,&$FFEA
2864     MOV &$FFDE,&{RC5TOLCD}+4
2865     MOV #RC5_INT,&$FFDE
2866     SUB #6,R15
2867     MOV R14,4(R15)
2868     MOV &$1800,2(R15)
2869     MOV #0,0(R15)
2870     MOV #200,R14
2871     CALL #$4028
2872     MOV @R15,&{RC5TOLCD}+6
2873     ADD #4,R15
2874     MOV @R15+,R14
2875     CALL #INIT_R2L
2876     LO2HI
2877     ." RC5toLCD is running,"
2878     ."  Type STOP to quit."
2879     HI2LO
2880     MOV #ALLOT+$08,R0
2881     ENDCODE
2882
2883 RST_RET 
2884
2885