OSDN Git Service

raz
[fast-forth/master.git] / MSP430-FORTH / SD_MSP_EXP430FR5994 / PROG10k.4th
1 ; -----------------------------------
2 ; prog10k.4th
3 ; -----------------------------------
4
5 PWR_STATE
6
7 PWR_STATE
8 CODE MAX
9             CMP     @R15,R14
10             S<      ?GOTO FW1
11 BW1         ADD     #2,R15
12             MOV     @R13+,R0
13 ENDCODE
14
15 CODE MIN
16             CMP     @R15,R14
17             S<      ?GOTO BW1
18 FW1         MOV     @R15+,R14
19             MOV     @R13+,R0
20 ENDCODE
21
22 : U.R
23   >R  <# 0 # #S #>  
24   R> OVER - 0 MAX SPACES TYPE
25 ;
26
27 CODE 20_US
28 BEGIN
29     MOV     #51,R10
30     BEGIN
31         SUB #1,R10
32     0= UNTIL
33     SUB     #1,R14
34 0= UNTIL
35     MOV     @R15+,R14
36     MOV     @R13+,R0
37 ENDCODE
38
39 CODE TOP_LCD
40     BIS.B #4,&$243
41     BIT.B #1,&$241
42 0= IF
43     AND.B #$0F,R14
44     MOV.B R14,&$222
45     BIC.B #4,&$243
46     MOV @R15+,R14
47     MOV @R13+,R0
48 THEN
49     SUB #2,R15
50     MOV R14,0(R15)
51     BIC.B #4,&$243
52     MOV.B &$220,R14
53     AND.B #$0F,R14
54     MOV @R13+,R0
55 ENDCODE
56
57 CODE LCD_W
58     SUB #2,R15
59     MOV R14,0(R15)
60     RRUM #4,R14
61     BIC.B #1,&$243
62     BIS.B #$0F,&$224
63 COLON
64     TOP_LCD 2 20_US
65     TOP_LCD 2 20_US 
66 ;
67
68 CODE LCD_WrC
69     BIS.B #2,&$243
70     JMP LCD_W 
71 ENDCODE
72
73 CODE LCD_WrF
74     BIC.B #2,&$243
75     JMP LCD_W 
76 ENDCODE
77
78 : LCD_Clear 
79     $01 LCD_WrF 100 20_us
80 ;
81
82 : LCD_Home 
83     $02 LCD_WrF 100 20_us 
84 ;
85
86 ASM WDT_INT
87 BIC #$F8,0(R1)
88 BIT.B #$20,&$240
89 0= IF
90     CMP #38,&$3D6
91     U< IF
92         ADD #1,&$3D6
93     THEN
94 ELSE
95     BIT.B #$40,&$240
96     0= IF
97         CMP #7,&$3D6
98         U>= IF
99             SUB #1,&$3D6
100         THEN
101     THEN
102 THEN
103 RETI
104 ENDASM
105
106 ASM RC5_INT
107 BIC     #$F8,0(R1)
108 MOV     #0,&$360
109 MOV     #1778,R9
110 MOV     #14,R10
111 BEGIN
112     MOV #%1011100100,&$340
113     RRUM    #1,R9
114     MOV     R9,R8
115     RRUM    #1,R8
116     ADD     R9,R8
117     BEGIN   CMP R8,&$350
118     0= UNTIL
119     BIT.B   #4,&$200
120     ADDC    R13,R13
121     MOV     &$200,&$208
122     BIC.B   #4,&$20C
123     SUB     #1,R10
124 0<> WHILE
125     ADD     R9,R8
126     BEGIN
127         CMP     R8,&$350
128         0>= IF
129             BIC  #$30,&$340
130             RETI
131         THEN
132         BIT.B   #4,&$20C
133     0<> UNTIL
134     MOV     &$350,R9
135 REPEAT
136 BIC     #$30,&$340
137 RLAM    #1,R13
138 MOV     @R1,R9
139 RLAM    #4,R9
140 XOR     R13,R9
141 BIT     #$2000,R9
142 0= IF RETI
143 THEN
144 XOR     #$200,0(R1)
145 SUB     #4,R15
146 MOV     &$1DDA,2(R15)
147 MOV     R14,0(R15)
148 MOV.B   R13,R14
149 RRUM    #2,R14
150 BIT     #$4000,R13
151 0= IF   BIS #$40,R14
152 THEN
153 LO2HI
154     ['] LCD_CLEAR IS CR
155     ['] LCD_WrC  IS EMIT
156     $10 $1DDA !
157     CR ." $" 2 U.R
158     ['] (CR) IS CR
159     ['] (EMIT) IS EMIT
160 HI2LO
161 MOV @R15+,&$1DDA
162 RETI
163 ENDASM
164
165 CODE START
166     MOV #%1010010100,&$3C0
167     MOV #0,&$3E0
168     MOV #40,&$3D2
169     MOV #%1100000,&$3C6
170     MOV #25,&$3D6
171     BIS.B #$20,&$204
172     BIS.B #$20,&$20A
173     BIS.B #7,&$245
174     BIC.B #7,&$247
175     BIS.B #$0F,&$224
176     BIC.B #$0F,&$226
177     MOV #$5A5E,&$15C
178     BIS #1,&$100
179     BIS.B #4,&$20A
180     BIC.B #4,&$20C
181     MOV #WDT_INT,&$FFF2
182     MOV #RC5_INT,&$FFDE
183 LO2HI
184     $03E8 20_US
185     $03 TOP_LCD
186     $CD 20_US
187     $03 TOP_LCD
188     $5 20_US
189     $03 TOP_LCD
190     $2 20_US
191     $02 TOP_LCD
192     $2 20_US
193     $28 LCD_WRF
194     $08 LCD_WRF
195     LCD_Clear
196     $06 LCD_WRF
197     $0C LCD_WRF
198     LCD_Clear
199     ['] LCD_HOME IS CR
200     ['] LCD_WRC  IS EMIT
201     CR ." I love you"   
202     ['] (CR) IS CR
203     ['] (EMIT) IS EMIT
204     CR
205     ."    RC5toLCD is running. Type STOP to quit"
206     LIT RECURSE IS WARM
207     (WARM)
208 ;
209
210 : STOP
211     ['] (WARM) IS WARM
212     ECHO COLD
213 ;
214
215 PWR_STATE
216 CODE MAX
217             CMP     @R15,R14
218             S<      ?GOTO FW1
219 BW1         ADD     #2,R15
220             MOV     @R13+,R0
221 ENDCODE
222
223 CODE MIN
224             CMP     @R15,R14
225             S<      ?GOTO BW1
226 FW1         MOV     @R15+,R14
227             MOV     @R13+,R0
228 ENDCODE
229
230 : U.R
231   >R  <# 0 # #S #>  
232   R> OVER - 0 MAX SPACES TYPE
233 ;
234
235 CODE 20_US
236 BEGIN
237     MOV     #51,R10
238     BEGIN
239         SUB #1,R10
240     0= UNTIL
241     SUB     #1,R14
242 0= UNTIL
243     MOV     @R15+,R14
244     MOV     @R13+,R0
245 ENDCODE
246
247 CODE TOP_LCD
248     BIS.B #4,&$243
249     BIT.B #1,&$241
250 0= IF
251     AND.B #$0F,R14
252     MOV.B R14,&$222
253     BIC.B #4,&$243
254     MOV @R15+,R14
255     MOV @R13+,R0
256 THEN
257     SUB #2,R15
258     MOV R14,0(R15)
259     BIC.B #4,&$243
260     MOV.B &$220,R14
261     AND.B #$0F,R14
262     MOV @R13+,R0
263 ENDCODE
264
265 CODE LCD_W
266     SUB #2,R15
267     MOV R14,0(R15)
268     RRUM #4,R14
269     BIC.B #1,&$243
270     BIS.B #$0F,&$224
271 COLON
272     TOP_LCD 2 20_US
273     TOP_LCD 2 20_US 
274 ;
275
276 CODE LCD_WrC
277     BIS.B #2,&$243
278     JMP LCD_W 
279 ENDCODE
280
281 CODE LCD_WrF
282     BIC.B #2,&$243
283     JMP LCD_W 
284 ENDCODE
285
286 : LCD_Clear 
287     $01 LCD_WrF 100 20_us
288 ;
289
290 : LCD_Home 
291     $02 LCD_WrF 100 20_us 
292 ;
293
294 ASM WDT_INT
295 BIC #$F8,0(R1)
296 BIT.B #$20,&$240
297 0= IF
298     CMP #38,&$3D6
299     U< IF
300         ADD #1,&$3D6
301     THEN
302 ELSE
303     BIT.B #$40,&$240
304     0= IF
305         CMP #7,&$3D6
306         U>= IF
307             SUB #1,&$3D6
308         THEN
309     THEN
310 THEN
311 RETI
312 ENDASM
313
314 ASM RC5_INT
315 BIC     #$F8,0(R1)
316 MOV     #0,&$360
317 MOV     #1778,R9
318 MOV     #14,R10
319 BEGIN
320     MOV #%1011100100,&$340
321     RRUM    #1,R9
322     MOV     R9,R8
323     RRUM    #1,R8
324     ADD     R9,R8
325     BEGIN   CMP R8,&$350
326     0= UNTIL
327     BIT.B   #4,&$200
328     ADDC    R13,R13
329     MOV     &$200,&$208
330     BIC.B   #4,&$20C
331     SUB     #1,R10
332 0<> WHILE
333     ADD     R9,R8
334     BEGIN
335         CMP     R8,&$350
336         0>= IF
337             BIC  #$30,&$340
338             RETI
339         THEN
340         BIT.B   #4,&$20C
341     0<> UNTIL
342     MOV     &$350,R9
343 REPEAT
344 BIC     #$30,&$340
345 RLAM    #1,R13
346 MOV     @R1,R9
347 RLAM    #4,R9
348 XOR     R13,R9
349 BIT     #$2000,R9
350 0= IF RETI
351 THEN
352 XOR     #$200,0(R1)
353 SUB     #4,R15
354 MOV     &$1DDA,2(R15)
355 MOV     R14,0(R15)
356 MOV.B   R13,R14
357 RRUM    #2,R14
358 BIT     #$4000,R13
359 0= IF   BIS #$40,R14
360 THEN
361 LO2HI
362     ['] LCD_CLEAR IS CR
363     ['] LCD_WrC  IS EMIT
364     $10 $1DDA !
365     CR ." $" 2 U.R
366     ['] (CR) IS CR
367     ['] (EMIT) IS EMIT
368 HI2LO
369 MOV @R15+,&$1DDA
370 RETI
371 ENDASM
372
373 CODE START
374     MOV #%1010010100,&$3C0
375     MOV #0,&$3E0
376     MOV #40,&$3D2
377     MOV #%1100000,&$3C6
378     MOV #25,&$3D6
379     BIS.B #$20,&$204
380     BIS.B #$20,&$20A
381     BIS.B #7,&$245
382     BIC.B #7,&$247
383     BIS.B #$0F,&$224
384     BIC.B #$0F,&$226
385     MOV #$5A5E,&$15C
386     BIS #1,&$100
387     BIS.B #4,&$20A
388     BIC.B #4,&$20C
389     MOV #WDT_INT,&$FFF2
390     MOV #RC5_INT,&$FFDE
391 LO2HI
392     $03E8 20_US
393     $03 TOP_LCD
394     $CD 20_US
395     $03 TOP_LCD
396     $5 20_US
397     $03 TOP_LCD
398     $2 20_US
399     $02 TOP_LCD
400     $2 20_US
401     $28 LCD_WRF
402     $08 LCD_WRF
403     LCD_Clear
404     $06 LCD_WRF
405     $0C LCD_WRF
406     LCD_Clear
407     ['] LCD_HOME IS CR
408     ['] LCD_WRC  IS EMIT
409     CR ." I love you"   
410     ['] (CR) IS CR
411     ['] (EMIT) IS EMIT
412     CR
413     ."    RC5toLCD is running. Type STOP to quit"
414     LIT RECURSE IS WARM
415     (WARM)
416 ;
417
418 : STOP
419     ['] (WARM) IS WARM
420     ECHO COLD
421 ;
422
423 PWR_STATE
424 CODE MAX
425             CMP     @R15,R14
426             S<      ?GOTO FW1
427 BW1         ADD     #2,R15
428             MOV     @R13+,R0
429 ENDCODE
430
431 CODE MIN
432             CMP     @R15,R14
433             S<      ?GOTO BW1
434 FW1         MOV     @R15+,R14
435             MOV     @R13+,R0
436 ENDCODE
437
438 : U.R
439   >R  <# 0 # #S #>  
440   R> OVER - 0 MAX SPACES TYPE
441 ;
442
443 CODE 20_US
444 BEGIN
445     MOV     #51,R10
446     BEGIN
447         SUB #1,R10
448     0= UNTIL
449     SUB     #1,R14
450 0= UNTIL
451     MOV     @R15+,R14
452     MOV     @R13+,R0
453 ENDCODE
454
455 CODE TOP_LCD
456     BIS.B #4,&$243
457     BIT.B #1,&$241
458 0= IF
459     AND.B #$0F,R14
460     MOV.B R14,&$222
461     BIC.B #4,&$243
462     MOV @R15+,R14
463     MOV @R13+,R0
464 THEN
465     SUB #2,R15
466     MOV R14,0(R15)
467     BIC.B #4,&$243
468     MOV.B &$220,R14
469     AND.B #$0F,R14
470     MOV @R13+,R0
471 ENDCODE
472
473 CODE LCD_W
474     SUB #2,R15
475     MOV R14,0(R15)
476     RRUM #4,R14
477     BIC.B #1,&$243
478     BIS.B #$0F,&$224
479 COLON
480     TOP_LCD 2 20_US
481     TOP_LCD 2 20_US 
482 ;
483
484 CODE LCD_WrC
485     BIS.B #2,&$243
486     JMP LCD_W 
487 ENDCODE
488
489 CODE LCD_WrF
490     BIC.B #2,&$243
491     JMP LCD_W 
492 ENDCODE
493
494 : LCD_Clear 
495     $01 LCD_WrF 100 20_us
496 ;
497
498 : LCD_Home 
499     $02 LCD_WrF 100 20_us 
500 ;
501
502 ASM WDT_INT
503 BIC #$F8,0(R1)
504 BIT.B #$20,&$240
505 0= IF
506     CMP #38,&$3D6
507     U< IF
508         ADD #1,&$3D6
509     THEN
510 ELSE
511     BIT.B #$40,&$240
512     0= IF
513         CMP #7,&$3D6
514         U>= IF
515             SUB #1,&$3D6
516         THEN
517     THEN
518 THEN
519 RETI
520 ENDASM
521
522 ASM RC5_INT
523 BIC     #$F8,0(R1)
524 MOV     #0,&$360
525 MOV     #1778,R9
526 MOV     #14,R10
527 BEGIN
528     MOV #%1011100100,&$340
529     RRUM    #1,R9
530     MOV     R9,R8
531     RRUM    #1,R8
532     ADD     R9,R8
533     BEGIN   CMP R8,&$350
534     0= UNTIL
535     BIT.B   #4,&$200
536     ADDC    R13,R13
537     MOV     &$200,&$208
538     BIC.B   #4,&$20C
539     SUB     #1,R10
540 0<> WHILE
541     ADD     R9,R8
542     BEGIN
543         CMP     R8,&$350
544         0>= IF
545             BIC  #$30,&$340
546             RETI
547         THEN
548         BIT.B   #4,&$20C
549     0<> UNTIL
550     MOV     &$350,R9
551 REPEAT
552 BIC     #$30,&$340
553 RLAM    #1,R13
554 MOV     @R1,R9
555 RLAM    #4,R9
556 XOR     R13,R9
557 BIT     #$2000,R9
558 0= IF RETI
559 THEN
560 XOR     #$200,0(R1)
561 SUB     #4,R15
562 MOV     &$1DDA,2(R15)
563 MOV     R14,0(R15)
564 MOV.B   R13,R14
565 RRUM    #2,R14
566 BIT     #$4000,R13
567 0= IF   BIS #$40,R14
568 THEN
569 LO2HI
570     ['] LCD_CLEAR IS CR
571     ['] LCD_WrC  IS EMIT
572     $10 $1DDA !
573     CR ." $" 2 U.R
574     ['] (CR) IS CR
575     ['] (EMIT) IS EMIT
576 HI2LO
577 MOV @R15+,&$1DDA
578 RETI
579 ENDASM
580
581 CODE START
582     MOV #%1010010100,&$3C0
583     MOV #0,&$3E0
584     MOV #40,&$3D2
585     MOV #%1100000,&$3C6
586     MOV #25,&$3D6
587     BIS.B #$20,&$204
588     BIS.B #$20,&$20A
589     BIS.B #7,&$245
590     BIC.B #7,&$247
591     BIS.B #$0F,&$224
592     BIC.B #$0F,&$226
593     MOV #$5A5E,&$15C
594     BIS #1,&$100
595     BIS.B #4,&$20A
596     BIC.B #4,&$20C
597     MOV #WDT_INT,&$FFF2
598     MOV #RC5_INT,&$FFDE
599 LO2HI
600     $03E8 20_US
601     $03 TOP_LCD
602     $CD 20_US
603     $03 TOP_LCD
604     $5 20_US
605     $03 TOP_LCD
606     $2 20_US
607     $02 TOP_LCD
608     $2 20_US
609     $28 LCD_WRF
610     $08 LCD_WRF
611     LCD_Clear
612     $06 LCD_WRF
613     $0C LCD_WRF
614     LCD_Clear
615     ['] LCD_HOME IS CR
616     ['] LCD_WRC  IS EMIT
617     CR ." I love you"   
618     ['] (CR) IS CR
619     ['] (EMIT) IS EMIT
620     CR
621     ."    RC5toLCD is running. Type STOP to quit"
622     LIT RECURSE IS WARM
623     (WARM)
624 ;
625
626 : STOP
627     ['] (WARM) IS WARM
628     ECHO COLD
629 ;
630
631 PWR_STATE
632 CODE MAX
633             CMP     @R15,R14
634             S<      ?GOTO FW1
635 BW1         ADD     #2,R15
636             MOV     @R13+,R0
637 ENDCODE
638
639 CODE MIN
640             CMP     @R15,R14
641             S<      ?GOTO BW1
642 FW1         MOV     @R15+,R14
643             MOV     @R13+,R0
644 ENDCODE
645
646 : U.R
647   >R  <# 0 # #S #>  
648   R> OVER - 0 MAX SPACES TYPE
649 ;
650
651 CODE 20_US
652 BEGIN
653     MOV     #51,R10
654     BEGIN
655         SUB #1,R10
656     0= UNTIL
657     SUB     #1,R14
658 0= UNTIL
659     MOV     @R15+,R14
660     MOV     @R13+,R0
661 ENDCODE
662
663 CODE TOP_LCD
664     BIS.B #4,&$243
665     BIT.B #1,&$241
666 0= IF
667     AND.B #$0F,R14
668     MOV.B R14,&$222
669     BIC.B #4,&$243
670     MOV @R15+,R14
671     MOV @R13+,R0
672 THEN
673     SUB #2,R15
674     MOV R14,0(R15)
675     BIC.B #4,&$243
676     MOV.B &$220,R14
677     AND.B #$0F,R14
678     MOV @R13+,R0
679 ENDCODE
680
681 CODE LCD_W
682     SUB #2,R15
683     MOV R14,0(R15)
684     RRUM #4,R14
685     BIC.B #1,&$243
686     BIS.B #$0F,&$224
687 COLON
688     TOP_LCD 2 20_US
689     TOP_LCD 2 20_US 
690 ;
691
692 CODE LCD_WrC
693     BIS.B #2,&$243
694     JMP LCD_W 
695 ENDCODE
696
697 CODE LCD_WrF
698     BIC.B #2,&$243
699     JMP LCD_W 
700 ENDCODE
701
702 : LCD_Clear 
703     $01 LCD_WrF 100 20_us
704 ;
705
706 : LCD_Home 
707     $02 LCD_WrF 100 20_us 
708 ;
709
710 ASM WDT_INT
711 BIC #$F8,0(R1)
712 BIT.B #$20,&$240
713 0= IF
714     CMP #38,&$3D6
715     U< IF
716         ADD #1,&$3D6
717     THEN
718 ELSE
719     BIT.B #$40,&$240
720     0= IF
721         CMP #7,&$3D6
722         U>= IF
723             SUB #1,&$3D6
724         THEN
725     THEN
726 THEN
727 RETI
728 ENDASM
729
730 ASM RC5_INT
731 BIC     #$F8,0(R1)
732 MOV     #0,&$360
733 MOV     #1778,R9
734 MOV     #14,R10
735 BEGIN
736     MOV #%1011100100,&$340
737     RRUM    #1,R9
738     MOV     R9,R8
739     RRUM    #1,R8
740     ADD     R9,R8
741     BEGIN   CMP R8,&$350
742     0= UNTIL
743     BIT.B   #4,&$200
744     ADDC    R13,R13
745     MOV     &$200,&$208
746     BIC.B   #4,&$20C
747     SUB     #1,R10
748 0<> WHILE
749     ADD     R9,R8
750     BEGIN
751         CMP     R8,&$350
752         0>= IF
753             BIC  #$30,&$340
754             RETI
755         THEN
756         BIT.B   #4,&$20C
757     0<> UNTIL
758     MOV     &$350,R9
759 REPEAT
760 BIC     #$30,&$340
761 RLAM    #1,R13
762 MOV     @R1,R9
763 RLAM    #4,R9
764 XOR     R13,R9
765 BIT     #$2000,R9
766 0= IF RETI
767 THEN
768 XOR     #$200,0(R1)
769 SUB     #4,R15
770 MOV     &$1DDA,2(R15)
771 MOV     R14,0(R15)
772 MOV.B   R13,R14
773 RRUM    #2,R14
774 BIT     #$4000,R13
775 0= IF   BIS #$40,R14
776 THEN
777 LO2HI
778     ['] LCD_CLEAR IS CR
779     ['] LCD_WrC  IS EMIT
780     $10 $1DDA !
781     CR ." $" 2 U.R
782     ['] (CR) IS CR
783     ['] (EMIT) IS EMIT
784 HI2LO
785 MOV @R15+,&$1DDA
786 RETI
787 ENDASM
788
789 CODE START
790     MOV #%1010010100,&$3C0
791     MOV #0,&$3E0
792     MOV #40,&$3D2
793     MOV #%1100000,&$3C6
794     MOV #25,&$3D6
795     BIS.B #$20,&$204
796     BIS.B #$20,&$20A
797     BIS.B #7,&$245
798     BIC.B #7,&$247
799     BIS.B #$0F,&$224
800     BIC.B #$0F,&$226
801     MOV #$5A5E,&$15C
802     BIS #1,&$100
803     BIS.B #4,&$20A
804     BIC.B #4,&$20C
805     MOV #WDT_INT,&$FFF2
806     MOV #RC5_INT,&$FFDE
807 LO2HI
808     $03E8 20_US
809     $03 TOP_LCD
810     $CD 20_US
811     $03 TOP_LCD
812     $5 20_US
813     $03 TOP_LCD
814     $2 20_US
815     $02 TOP_LCD
816     $2 20_US
817     $28 LCD_WRF
818     $08 LCD_WRF
819     LCD_Clear
820     $06 LCD_WRF
821     $0C LCD_WRF
822     LCD_Clear
823     ['] LCD_HOME IS CR
824     ['] LCD_WRC  IS EMIT
825     CR ." I love you"   
826     ['] (CR) IS CR
827     ['] (EMIT) IS EMIT
828     CR
829     ."    RC5toLCD is running. Type STOP to quit"
830     LIT RECURSE IS WARM
831     (WARM)
832 ;
833
834 : STOP
835     ['] (WARM) IS WARM
836     ECHO COLD
837 ;
838
839 PWR_STATE
840 CODE MAX
841             CMP     @R15,R14
842             S<      ?GOTO FW1
843 BW1         ADD     #2,R15
844             MOV     @R13+,R0
845 ENDCODE
846
847 CODE MIN
848             CMP     @R15,R14
849             S<      ?GOTO BW1
850 FW1         MOV     @R15+,R14
851             MOV     @R13+,R0
852 ENDCODE
853
854 : U.R
855   >R  <# 0 # #S #>  
856   R> OVER - 0 MAX SPACES TYPE
857 ;
858
859 CODE 20_US
860 BEGIN
861     MOV     #51,R10
862     BEGIN
863         SUB #1,R10
864     0= UNTIL
865     SUB     #1,R14
866 0= UNTIL
867     MOV     @R15+,R14
868     MOV     @R13+,R0
869 ENDCODE
870
871 CODE TOP_LCD
872     BIS.B #4,&$243
873     BIT.B #1,&$241
874 0= IF
875     AND.B #$0F,R14
876     MOV.B R14,&$222
877     BIC.B #4,&$243
878     MOV @R15+,R14
879     MOV @R13+,R0
880 THEN
881     SUB #2,R15
882     MOV R14,0(R15)
883     BIC.B #4,&$243
884     MOV.B &$220,R14
885     AND.B #$0F,R14
886     MOV @R13+,R0
887 ENDCODE
888
889 CODE LCD_W
890     SUB #2,R15
891     MOV R14,0(R15)
892     RRUM #4,R14
893     BIC.B #1,&$243
894     BIS.B #$0F,&$224
895 COLON
896     TOP_LCD 2 20_US
897     TOP_LCD 2 20_US 
898 ;
899
900 CODE LCD_WrC
901     BIS.B #2,&$243
902     JMP LCD_W 
903 ENDCODE
904
905 CODE LCD_WrF
906     BIC.B #2,&$243
907     JMP LCD_W 
908 ENDCODE
909
910 : LCD_Clear 
911     $01 LCD_WrF 100 20_us
912 ;
913
914 : LCD_Home 
915     $02 LCD_WrF 100 20_us 
916 ;
917
918 ASM WDT_INT
919 BIC #$F8,0(R1)
920 BIT.B #$20,&$240
921 0= IF
922     CMP #38,&$3D6
923     U< IF
924         ADD #1,&$3D6
925     THEN
926 ELSE
927     BIT.B #$40,&$240
928     0= IF
929         CMP #7,&$3D6
930         U>= IF
931             SUB #1,&$3D6
932         THEN
933     THEN
934 THEN
935 RETI
936 ENDASM
937
938 ASM RC5_INT
939 BIC     #$F8,0(R1)
940 MOV     #0,&$360
941 MOV     #1778,R9
942 MOV     #14,R10
943 BEGIN
944     MOV #%1011100100,&$340
945     RRUM    #1,R9
946     MOV     R9,R8
947     RRUM    #1,R8
948     ADD     R9,R8
949     BEGIN   CMP R8,&$350
950     0= UNTIL
951     BIT.B   #4,&$200
952     ADDC    R13,R13
953     MOV     &$200,&$208
954     BIC.B   #4,&$20C
955     SUB     #1,R10
956 0<> WHILE
957     ADD     R9,R8
958     BEGIN
959         CMP     R8,&$350
960         0>= IF
961             BIC  #$30,&$340
962             RETI
963         THEN
964         BIT.B   #4,&$20C
965     0<> UNTIL
966     MOV     &$350,R9
967 REPEAT
968 BIC     #$30,&$340
969 RLAM    #1,R13
970 MOV     @R1,R9
971 RLAM    #4,R9
972 XOR     R13,R9
973 BIT     #$2000,R9
974 0= IF RETI
975 THEN
976 XOR     #$200,0(R1)
977 SUB     #4,R15
978 MOV     &$1DDA,2(R15)
979 MOV     R14,0(R15)
980 MOV.B   R13,R14
981 RRUM    #2,R14
982 BIT     #$4000,R13
983 0= IF   BIS #$40,R14
984 THEN
985 LO2HI
986     ['] LCD_CLEAR IS CR
987     ['] LCD_WrC  IS EMIT
988     $10 $1DDA !
989     CR ." $" 2 U.R
990     ['] (CR) IS CR
991     ['] (EMIT) IS EMIT
992 HI2LO
993 MOV @R15+,&$1DDA
994 RETI
995 ENDASM
996
997 CODE START
998     MOV #%1010010100,&$3C0
999     MOV #0,&$3E0
1000     MOV #40,&$3D2
1001     MOV #%1100000,&$3C6
1002     MOV #25,&$3D6
1003     BIS.B #$20,&$204
1004     BIS.B #$20,&$20A
1005     BIS.B #7,&$245
1006     BIC.B #7,&$247
1007     BIS.B #$0F,&$224
1008     BIC.B #$0F,&$226
1009     MOV #$5A5E,&$15C
1010     BIS #1,&$100
1011     BIS.B #4,&$20A
1012     BIC.B #4,&$20C
1013     MOV #WDT_INT,&$FFF2
1014     MOV #RC5_INT,&$FFDE
1015 LO2HI
1016     $03E8 20_US
1017     $03 TOP_LCD
1018     $CD 20_US
1019     $03 TOP_LCD
1020     $5 20_US
1021     $03 TOP_LCD
1022     $2 20_US
1023     $02 TOP_LCD
1024     $2 20_US
1025     $28 LCD_WRF
1026     $08 LCD_WRF
1027     LCD_Clear
1028     $06 LCD_WRF
1029     $0C LCD_WRF
1030     LCD_Clear
1031     ['] LCD_HOME IS CR
1032     ['] LCD_WRC  IS EMIT
1033     CR ." I love you"   
1034     ['] (CR) IS CR
1035     ['] (EMIT) IS EMIT
1036     CR
1037     ."    RC5toLCD is running. Type STOP to quit"
1038     LIT RECURSE IS WARM
1039     (WARM)
1040 ;
1041
1042 : STOP
1043     ['] (WARM) IS WARM
1044     ECHO COLD
1045 ;
1046
1047 PWR_STATE
1048 CODE MAX
1049             CMP     @R15,R14
1050             S<      ?GOTO FW1
1051 BW1         ADD     #2,R15
1052             MOV     @R13+,R0
1053 ENDCODE
1054
1055 CODE MIN
1056             CMP     @R15,R14
1057             S<      ?GOTO BW1
1058 FW1         MOV     @R15+,R14
1059             MOV     @R13+,R0
1060 ENDCODE
1061
1062 : U.R
1063   >R  <# 0 # #S #>  
1064   R> OVER - 0 MAX SPACES TYPE
1065 ;
1066
1067 CODE 20_US
1068 BEGIN
1069     MOV     #51,R10
1070     BEGIN
1071         SUB #1,R10
1072     0= UNTIL
1073     SUB     #1,R14
1074 0= UNTIL
1075     MOV     @R15+,R14
1076     MOV     @R13+,R0
1077 ENDCODE
1078
1079 CODE TOP_LCD
1080     BIS.B #4,&$243
1081     BIT.B #1,&$241
1082 0= IF
1083     AND.B #$0F,R14
1084     MOV.B R14,&$222
1085     BIC.B #4,&$243
1086     MOV @R15+,R14
1087     MOV @R13+,R0
1088 THEN
1089     SUB #2,R15
1090     MOV R14,0(R15)
1091     BIC.B #4,&$243
1092     MOV.B &$220,R14
1093     AND.B #$0F,R14
1094     MOV @R13+,R0
1095 ENDCODE
1096
1097 CODE LCD_W
1098     SUB #2,R15
1099     MOV R14,0(R15)
1100     RRUM #4,R14
1101     BIC.B #1,&$243
1102     BIS.B #$0F,&$224
1103 COLON
1104     TOP_LCD 2 20_US
1105     TOP_LCD 2 20_US 
1106 ;
1107
1108 CODE LCD_WrC
1109     BIS.B #2,&$243
1110     JMP LCD_W 
1111 ENDCODE
1112
1113 CODE LCD_WrF
1114     BIC.B #2,&$243
1115     JMP LCD_W 
1116 ENDCODE
1117
1118 : LCD_Clear 
1119     $01 LCD_WrF 100 20_us
1120 ;
1121
1122 : LCD_Home 
1123     $02 LCD_WrF 100 20_us 
1124 ;
1125
1126 ASM WDT_INT
1127 BIC #$F8,0(R1)
1128 BIT.B #$20,&$240
1129 0= IF
1130     CMP #38,&$3D6
1131     U< IF
1132         ADD #1,&$3D6
1133     THEN
1134 ELSE
1135     BIT.B #$40,&$240
1136     0= IF
1137         CMP #7,&$3D6
1138         U>= IF
1139             SUB #1,&$3D6
1140         THEN
1141     THEN
1142 THEN
1143 RETI
1144 ENDASM
1145
1146 ASM RC5_INT
1147 BIC     #$F8,0(R1)
1148 MOV     #0,&$360
1149 MOV     #1778,R9
1150 MOV     #14,R10
1151 BEGIN
1152     MOV #%1011100100,&$340
1153     RRUM    #1,R9
1154     MOV     R9,R8
1155     RRUM    #1,R8
1156     ADD     R9,R8
1157     BEGIN   CMP R8,&$350
1158     0= UNTIL
1159     BIT.B   #4,&$200
1160     ADDC    R13,R13
1161     MOV     &$200,&$208
1162     BIC.B   #4,&$20C
1163     SUB     #1,R10
1164 0<> WHILE
1165     ADD     R9,R8
1166     BEGIN
1167         CMP     R8,&$350
1168         0>= IF
1169             BIC  #$30,&$340
1170             RETI
1171         THEN
1172         BIT.B   #4,&$20C
1173     0<> UNTIL
1174     MOV     &$350,R9
1175 REPEAT
1176 BIC     #$30,&$340
1177 RLAM    #1,R13
1178 MOV     @R1,R9
1179 RLAM    #4,R9
1180 XOR     R13,R9
1181 BIT     #$2000,R9
1182 0= IF RETI
1183 THEN
1184 XOR     #$200,0(R1)
1185 SUB     #4,R15
1186 MOV     &$1DDA,2(R15)
1187 MOV     R14,0(R15)
1188 MOV.B   R13,R14
1189 RRUM    #2,R14
1190 BIT     #$4000,R13
1191 0= IF   BIS #$40,R14
1192 THEN
1193 LO2HI
1194     ['] LCD_CLEAR IS CR
1195     ['] LCD_WrC  IS EMIT
1196     $10 $1DDA !
1197     CR ." $" 2 U.R
1198     ['] (CR) IS CR
1199     ['] (EMIT) IS EMIT
1200 HI2LO
1201 MOV @R15+,&$1DDA
1202 RETI
1203 ENDASM
1204
1205 CODE START
1206     MOV #%1010010100,&$3C0
1207     MOV #0,&$3E0
1208     MOV #40,&$3D2
1209     MOV #%1100000,&$3C6
1210     MOV #25,&$3D6
1211     BIS.B #$20,&$204
1212     BIS.B #$20,&$20A
1213     BIS.B #7,&$245
1214     BIC.B #7,&$247
1215     BIS.B #$0F,&$224
1216     BIC.B #$0F,&$226
1217     MOV #$5A5E,&$15C
1218     BIS #1,&$100
1219     BIS.B #4,&$20A
1220     BIC.B #4,&$20C
1221     MOV #WDT_INT,&$FFF2
1222     MOV #RC5_INT,&$FFDE
1223 LO2HI
1224     $03E8 20_US
1225     $03 TOP_LCD
1226     $CD 20_US
1227     $03 TOP_LCD
1228     $5 20_US
1229     $03 TOP_LCD
1230     $2 20_US
1231     $02 TOP_LCD
1232     $2 20_US
1233     $28 LCD_WRF
1234     $08 LCD_WRF
1235     LCD_Clear
1236     $06 LCD_WRF
1237     $0C LCD_WRF
1238     LCD_Clear
1239     ['] LCD_HOME IS CR
1240     ['] LCD_WRC  IS EMIT
1241     CR ." I love you"   
1242     ['] (CR) IS CR
1243     ['] (EMIT) IS EMIT
1244     CR
1245     ."    RC5toLCD is running. Type STOP to quit"
1246     LIT RECURSE IS WARM
1247     (WARM)
1248 ;
1249
1250 : STOP
1251     ['] (WARM) IS WARM
1252     ECHO COLD
1253 ;
1254
1255 PWR_STATE
1256 CODE MAX
1257             CMP     @R15,R14
1258             S<      ?GOTO FW1
1259 BW1         ADD     #2,R15
1260             MOV     @R13+,R0
1261 ENDCODE
1262
1263 CODE MIN
1264             CMP     @R15,R14
1265             S<      ?GOTO BW1
1266 FW1         MOV     @R15+,R14
1267             MOV     @R13+,R0
1268 ENDCODE
1269
1270 : U.R
1271   >R  <# 0 # #S #>  
1272   R> OVER - 0 MAX SPACES TYPE
1273 ;
1274
1275 CODE 20_US
1276 BEGIN
1277     MOV     #51,R10
1278     BEGIN
1279         SUB #1,R10
1280     0= UNTIL
1281     SUB     #1,R14
1282 0= UNTIL
1283     MOV     @R15+,R14
1284     MOV     @R13+,R0
1285 ENDCODE
1286
1287 CODE TOP_LCD
1288     BIS.B #4,&$243
1289     BIT.B #1,&$241
1290 0= IF
1291     AND.B #$0F,R14
1292     MOV.B R14,&$222
1293     BIC.B #4,&$243
1294     MOV @R15+,R14
1295     MOV @R13+,R0
1296 THEN
1297     SUB #2,R15
1298     MOV R14,0(R15)
1299     BIC.B #4,&$243
1300     MOV.B &$220,R14
1301     AND.B #$0F,R14
1302     MOV @R13+,R0
1303 ENDCODE
1304
1305 CODE LCD_W
1306     SUB #2,R15
1307     MOV R14,0(R15)
1308     RRUM #4,R14
1309     BIC.B #1,&$243
1310     BIS.B #$0F,&$224
1311 COLON
1312     TOP_LCD 2 20_US
1313     TOP_LCD 2 20_US 
1314 ;
1315
1316 CODE LCD_WrC
1317     BIS.B #2,&$243
1318     JMP LCD_W 
1319 ENDCODE
1320
1321 CODE LCD_WrF
1322     BIC.B #2,&$243
1323     JMP LCD_W 
1324 ENDCODE
1325
1326 : LCD_Clear 
1327     $01 LCD_WrF 100 20_us
1328 ;
1329
1330 : LCD_Home 
1331     $02 LCD_WrF 100 20_us 
1332 ;
1333
1334 ASM WDT_INT
1335 BIC #$F8,0(R1)
1336 BIT.B #$20,&$240
1337 0= IF
1338     CMP #38,&$3D6
1339     U< IF
1340         ADD #1,&$3D6
1341     THEN
1342 ELSE
1343     BIT.B #$40,&$240
1344     0= IF
1345         CMP #7,&$3D6
1346         U>= IF
1347             SUB #1,&$3D6
1348         THEN
1349     THEN
1350 THEN
1351 RETI
1352 ENDASM
1353
1354 ASM RC5_INT
1355 BIC     #$F8,0(R1)
1356 MOV     #0,&$360
1357 MOV     #1778,R9
1358 MOV     #14,R10
1359 BEGIN
1360     MOV #%1011100100,&$340
1361     RRUM    #1,R9
1362     MOV     R9,R8
1363     RRUM    #1,R8
1364     ADD     R9,R8
1365     BEGIN   CMP R8,&$350
1366     0= UNTIL
1367     BIT.B   #4,&$200
1368     ADDC    R13,R13
1369     MOV     &$200,&$208
1370     BIC.B   #4,&$20C
1371     SUB     #1,R10
1372 0<> WHILE
1373     ADD     R9,R8
1374     BEGIN
1375         CMP     R8,&$350
1376         0>= IF
1377             BIC  #$30,&$340
1378             RETI
1379         THEN
1380         BIT.B   #4,&$20C
1381     0<> UNTIL
1382     MOV     &$350,R9
1383 REPEAT
1384 BIC     #$30,&$340
1385 RLAM    #1,R13
1386 MOV     @R1,R9
1387 RLAM    #4,R9
1388 XOR     R13,R9
1389 BIT     #$2000,R9
1390 0= IF RETI
1391 THEN
1392 XOR     #$200,0(R1)
1393 SUB     #4,R15
1394 MOV     &$1DDA,2(R15)
1395 MOV     R14,0(R15)
1396 MOV.B   R13,R14
1397 RRUM    #2,R14
1398 BIT     #$4000,R13
1399 0= IF   BIS #$40,R14
1400 THEN
1401 LO2HI
1402     ['] LCD_CLEAR IS CR
1403     ['] LCD_WrC  IS EMIT
1404     $10 $1DDA !
1405     CR ." $" 2 U.R
1406     ['] (CR) IS CR
1407     ['] (EMIT) IS EMIT
1408 HI2LO
1409 MOV @R15+,&$1DDA
1410 RETI
1411 ENDASM
1412
1413 CODE START
1414     MOV #%1010010100,&$3C0
1415     MOV #0,&$3E0
1416     MOV #40,&$3D2
1417     MOV #%1100000,&$3C6
1418     MOV #25,&$3D6
1419     BIS.B #$20,&$204
1420     BIS.B #$20,&$20A
1421     BIS.B #7,&$245
1422     BIC.B #7,&$247
1423     BIS.B #$0F,&$224
1424     BIC.B #$0F,&$226
1425     MOV #$5A5E,&$15C
1426     BIS #1,&$100
1427     BIS.B #4,&$20A
1428     BIC.B #4,&$20C
1429     MOV #WDT_INT,&$FFF2
1430     MOV #RC5_INT,&$FFDE
1431 LO2HI
1432     $03E8 20_US
1433     $03 TOP_LCD
1434     $CD 20_US
1435     $03 TOP_LCD
1436     $5 20_US
1437     $03 TOP_LCD
1438     $2 20_US
1439     $02 TOP_LCD
1440     $2 20_US
1441     $28 LCD_WRF
1442     $08 LCD_WRF
1443     LCD_Clear
1444     $06 LCD_WRF
1445     $0C LCD_WRF
1446     LCD_Clear
1447     ['] LCD_HOME IS CR
1448     ['] LCD_WRC  IS EMIT
1449     CR ." I love you"   
1450     ['] (CR) IS CR
1451     ['] (EMIT) IS EMIT
1452     CR
1453     ."    RC5toLCD is running. Type STOP to quit"
1454     LIT RECURSE IS WARM
1455     (WARM)
1456 ;
1457
1458 : STOP
1459     ['] (WARM) IS WARM
1460     ECHO COLD
1461 ;
1462
1463 PWR_STATE
1464 CODE MAX
1465             CMP     @R15,R14
1466             S<      ?GOTO FW1
1467 BW1         ADD     #2,R15
1468             MOV     @R13+,R0
1469 ENDCODE
1470
1471 CODE MIN
1472             CMP     @R15,R14
1473             S<      ?GOTO BW1
1474 FW1         MOV     @R15+,R14
1475             MOV     @R13+,R0
1476 ENDCODE
1477
1478 : U.R
1479   >R  <# 0 # #S #>  
1480   R> OVER - 0 MAX SPACES TYPE
1481 ;
1482
1483 CODE 20_US
1484 BEGIN
1485     MOV     #51,R10
1486     BEGIN
1487         SUB #1,R10
1488     0= UNTIL
1489     SUB     #1,R14
1490 0= UNTIL
1491     MOV     @R15+,R14
1492     MOV     @R13+,R0
1493 ENDCODE
1494
1495 CODE TOP_LCD
1496     BIS.B #4,&$243
1497     BIT.B #1,&$241
1498 0= IF
1499     AND.B #$0F,R14
1500     MOV.B R14,&$222
1501     BIC.B #4,&$243
1502     MOV @R15+,R14
1503     MOV @R13+,R0
1504 THEN
1505     SUB #2,R15
1506     MOV R14,0(R15)
1507     BIC.B #4,&$243
1508     MOV.B &$220,R14
1509     AND.B #$0F,R14
1510     MOV @R13+,R0
1511 ENDCODE
1512
1513 CODE LCD_W
1514     SUB #2,R15
1515     MOV R14,0(R15)
1516     RRUM #4,R14
1517     BIC.B #1,&$243
1518     BIS.B #$0F,&$224
1519 COLON
1520     TOP_LCD 2 20_US
1521     TOP_LCD 2 20_US 
1522 ;
1523
1524 CODE LCD_WrC
1525     BIS.B #2,&$243
1526     JMP LCD_W 
1527 ENDCODE
1528
1529 CODE LCD_WrF
1530     BIC.B #2,&$243
1531     JMP LCD_W 
1532 ENDCODE
1533
1534 : LCD_Clear 
1535     $01 LCD_WrF 100 20_us
1536 ;
1537
1538 : LCD_Home 
1539     $02 LCD_WrF 100 20_us 
1540 ;
1541
1542 ASM WDT_INT
1543 BIC #$F8,0(R1)
1544 BIT.B #$20,&$240
1545 0= IF
1546     CMP #38,&$3D6
1547     U< IF
1548         ADD #1,&$3D6
1549     THEN
1550 ELSE
1551     BIT.B #$40,&$240
1552     0= IF
1553         CMP #7,&$3D6
1554         U>= IF
1555             SUB #1,&$3D6
1556         THEN
1557     THEN
1558 THEN
1559 RETI
1560 ENDASM
1561
1562 ASM RC5_INT
1563 BIC     #$F8,0(R1)
1564 MOV     #0,&$360
1565 MOV     #1778,R9
1566 MOV     #14,R10
1567 BEGIN
1568     MOV #%1011100100,&$340
1569     RRUM    #1,R9
1570     MOV     R9,R8
1571     RRUM    #1,R8
1572     ADD     R9,R8
1573     BEGIN   CMP R8,&$350
1574     0= UNTIL
1575     BIT.B   #4,&$200
1576     ADDC    R13,R13
1577     MOV     &$200,&$208
1578     BIC.B   #4,&$20C
1579     SUB     #1,R10
1580 0<> WHILE
1581     ADD     R9,R8
1582     BEGIN
1583         CMP     R8,&$350
1584         0>= IF
1585             BIC  #$30,&$340
1586             RETI
1587         THEN
1588         BIT.B   #4,&$20C
1589     0<> UNTIL
1590     MOV     &$350,R9
1591 REPEAT
1592 BIC     #$30,&$340
1593 RLAM    #1,R13
1594 MOV     @R1,R9
1595 RLAM    #4,R9
1596 XOR     R13,R9
1597 BIT     #$2000,R9
1598 0= IF RETI
1599 THEN
1600 XOR     #$200,0(R1)
1601 SUB     #4,R15
1602 MOV     &$1DDA,2(R15)
1603 MOV     R14,0(R15)
1604 MOV.B   R13,R14
1605 RRUM    #2,R14
1606 BIT     #$4000,R13
1607 0= IF   BIS #$40,R14
1608 THEN
1609 LO2HI
1610     ['] LCD_CLEAR IS CR
1611     ['] LCD_WrC  IS EMIT
1612     $10 $1DDA !
1613     CR ." $" 2 U.R
1614     ['] (CR) IS CR
1615     ['] (EMIT) IS EMIT
1616 HI2LO
1617 MOV @R15+,&$1DDA
1618 RETI
1619 ENDASM
1620
1621 CODE START
1622     MOV #%1010010100,&$3C0
1623     MOV #0,&$3E0
1624     MOV #40,&$3D2
1625     MOV #%1100000,&$3C6
1626     MOV #25,&$3D6
1627     BIS.B #$20,&$204
1628     BIS.B #$20,&$20A
1629     BIS.B #7,&$245
1630     BIC.B #7,&$247
1631     BIS.B #$0F,&$224
1632     BIC.B #$0F,&$226
1633     MOV #$5A5E,&$15C
1634     BIS #1,&$100
1635     BIS.B #4,&$20A
1636     BIC.B #4,&$20C
1637     MOV #WDT_INT,&$FFF2
1638     MOV #RC5_INT,&$FFDE
1639 LO2HI
1640     $03E8 20_US
1641     $03 TOP_LCD
1642     $CD 20_US
1643     $03 TOP_LCD
1644     $5 20_US
1645     $03 TOP_LCD
1646     $2 20_US
1647     $02 TOP_LCD
1648     $2 20_US
1649     $28 LCD_WRF
1650     $08 LCD_WRF
1651     LCD_Clear
1652     $06 LCD_WRF
1653     $0C LCD_WRF
1654     LCD_Clear
1655     ['] LCD_HOME IS CR
1656     ['] LCD_WRC  IS EMIT
1657     CR ." I love you"   
1658     ['] (CR) IS CR
1659     ['] (EMIT) IS EMIT
1660     CR
1661     ."    RC5toLCD is running. Type STOP to quit"
1662     LIT RECURSE IS WARM
1663     (WARM)
1664 ;
1665
1666 : STOP
1667     ['] (WARM) IS WARM
1668     ECHO COLD
1669 ;
1670
1671 PWR_STATE
1672 CODE MAX
1673             CMP     @R15,R14
1674             S<      ?GOTO FW1
1675 BW1         ADD     #2,R15
1676             MOV     @R13+,R0
1677 ENDCODE
1678
1679 CODE MIN
1680             CMP     @R15,R14
1681             S<      ?GOTO BW1
1682 FW1         MOV     @R15+,R14
1683             MOV     @R13+,R0
1684 ENDCODE
1685
1686 : U.R
1687   >R  <# 0 # #S #>  
1688   R> OVER - 0 MAX SPACES TYPE
1689 ;
1690
1691 CODE 20_US
1692 BEGIN
1693     MOV     #51,R10
1694     BEGIN
1695         SUB #1,R10
1696     0= UNTIL
1697     SUB     #1,R14
1698 0= UNTIL
1699     MOV     @R15+,R14
1700     MOV     @R13+,R0
1701 ENDCODE
1702
1703 CODE TOP_LCD
1704     BIS.B #4,&$243
1705     BIT.B #1,&$241
1706 0= IF
1707     AND.B #$0F,R14
1708     MOV.B R14,&$222
1709     BIC.B #4,&$243
1710     MOV @R15+,R14
1711     MOV @R13+,R0
1712 THEN
1713     SUB #2,R15
1714     MOV R14,0(R15)
1715     BIC.B #4,&$243
1716     MOV.B &$220,R14
1717     AND.B #$0F,R14
1718     MOV @R13+,R0
1719 ENDCODE
1720
1721 CODE LCD_W
1722     SUB #2,R15
1723     MOV R14,0(R15)
1724     RRUM #4,R14
1725     BIC.B #1,&$243
1726     BIS.B #$0F,&$224
1727 COLON
1728     TOP_LCD 2 20_US
1729     TOP_LCD 2 20_US 
1730 ;
1731
1732 CODE LCD_WrC
1733     BIS.B #2,&$243
1734     JMP LCD_W 
1735 ENDCODE
1736
1737 CODE LCD_WrF
1738     BIC.B #2,&$243
1739     JMP LCD_W 
1740 ENDCODE
1741
1742 : LCD_Clear 
1743     $01 LCD_WrF 100 20_us
1744 ;
1745
1746 : LCD_Home 
1747     $02 LCD_WrF 100 20_us 
1748 ;
1749
1750 ASM WDT_INT
1751 BIC #$F8,0(R1)
1752 BIT.B #$20,&$240
1753 0= IF
1754     CMP #38,&$3D6
1755     U< IF
1756         ADD #1,&$3D6
1757     THEN
1758 ELSE
1759     BIT.B #$40,&$240
1760     0= IF
1761         CMP #7,&$3D6
1762         U>= IF
1763             SUB #1,&$3D6
1764         THEN
1765     THEN
1766 THEN
1767 RETI
1768 ENDASM
1769
1770 ASM RC5_INT
1771 BIC     #$F8,0(R1)
1772 MOV     #0,&$360
1773 MOV     #1778,R9
1774 MOV     #14,R10
1775 BEGIN
1776     MOV #%1011100100,&$340
1777     RRUM    #1,R9
1778     MOV     R9,R8
1779     RRUM    #1,R8
1780     ADD     R9,R8
1781     BEGIN   CMP R8,&$350
1782     0= UNTIL
1783     BIT.B   #4,&$200
1784     ADDC    R13,R13
1785     MOV     &$200,&$208
1786     BIC.B   #4,&$20C
1787     SUB     #1,R10
1788 0<> WHILE
1789     ADD     R9,R8
1790     BEGIN
1791         CMP     R8,&$350
1792         0>= IF
1793             BIC  #$30,&$340
1794             RETI
1795         THEN
1796         BIT.B   #4,&$20C
1797     0<> UNTIL
1798     MOV     &$350,R9
1799 REPEAT
1800 BIC     #$30,&$340
1801 RLAM    #1,R13
1802 MOV     @R1,R9
1803 RLAM    #4,R9
1804 XOR     R13,R9
1805 BIT     #$2000,R9
1806 0= IF RETI
1807 THEN
1808 XOR     #$200,0(R1)
1809 SUB     #4,R15
1810 MOV     &$1DDA,2(R15)
1811 MOV     R14,0(R15)
1812 MOV.B   R13,R14
1813 RRUM    #2,R14
1814 BIT     #$4000,R13
1815 0= IF   BIS #$40,R14
1816 THEN
1817 LO2HI
1818     ['] LCD_CLEAR IS CR
1819     ['] LCD_WrC  IS EMIT
1820     $10 $1DDA !
1821     CR ." $" 2 U.R
1822     ['] (CR) IS CR
1823     ['] (EMIT) IS EMIT
1824 HI2LO
1825 MOV @R15+,&$1DDA
1826 RETI
1827 ENDASM
1828
1829 CODE START
1830     MOV #%1010010100,&$3C0
1831     MOV #0,&$3E0
1832     MOV #40,&$3D2
1833     MOV #%1100000,&$3C6
1834     MOV #25,&$3D6
1835     BIS.B #$20,&$204
1836     BIS.B #$20,&$20A
1837     BIS.B #7,&$245
1838     BIC.B #7,&$247
1839     BIS.B #$0F,&$224
1840     BIC.B #$0F,&$226
1841     MOV #$5A5E,&$15C
1842     BIS #1,&$100
1843     BIS.B #4,&$20A
1844     BIC.B #4,&$20C
1845     MOV #WDT_INT,&$FFF2
1846     MOV #RC5_INT,&$FFDE
1847 LO2HI
1848     $03E8 20_US
1849     $03 TOP_LCD
1850     $CD 20_US
1851     $03 TOP_LCD
1852     $5 20_US
1853     $03 TOP_LCD
1854     $2 20_US
1855     $02 TOP_LCD
1856     $2 20_US
1857     $28 LCD_WRF
1858     $08 LCD_WRF
1859     LCD_Clear
1860     $06 LCD_WRF
1861     $0C LCD_WRF
1862     LCD_Clear
1863     ['] LCD_HOME IS CR
1864     ['] LCD_WRC  IS EMIT
1865     CR ." I love you"   
1866     ['] (CR) IS CR
1867     ['] (EMIT) IS EMIT
1868     CR
1869     ."    RC5toLCD is running. Type STOP to quit"
1870     LIT RECURSE IS WARM
1871     (WARM)
1872 ;
1873
1874 : STOP
1875     ['] (WARM) IS WARM
1876     ECHO COLD
1877 ;
1878
1879 PWR_STATE
1880 CODE MAX
1881             CMP     @R15,R14
1882             S<      ?GOTO FW1
1883 BW1         ADD     #2,R15
1884             MOV     @R13+,R0
1885 ENDCODE
1886
1887 CODE MIN
1888             CMP     @R15,R14
1889             S<      ?GOTO BW1
1890 FW1         MOV     @R15+,R14
1891             MOV     @R13+,R0
1892 ENDCODE
1893
1894 : U.R
1895   >R  <# 0 # #S #>  
1896   R> OVER - 0 MAX SPACES TYPE
1897 ;
1898
1899 CODE 20_US
1900 BEGIN
1901     MOV     #51,R10
1902     BEGIN
1903         SUB #1,R10
1904     0= UNTIL
1905     SUB     #1,R14
1906 0= UNTIL
1907     MOV     @R15+,R14
1908     MOV     @R13+,R0
1909 ENDCODE
1910
1911 CODE TOP_LCD
1912     BIS.B #4,&$243
1913     BIT.B #1,&$241
1914 0= IF
1915     AND.B #$0F,R14
1916     MOV.B R14,&$222
1917     BIC.B #4,&$243
1918     MOV @R15+,R14
1919     MOV @R13+,R0
1920 THEN
1921     SUB #2,R15
1922     MOV R14,0(R15)
1923     BIC.B #4,&$243
1924     MOV.B &$220,R14
1925     AND.B #$0F,R14
1926     MOV @R13+,R0
1927 ENDCODE
1928
1929 CODE LCD_W
1930     SUB #2,R15
1931     MOV R14,0(R15)
1932     RRUM #4,R14
1933     BIC.B #1,&$243
1934     BIS.B #$0F,&$224
1935 COLON
1936     TOP_LCD 2 20_US
1937     TOP_LCD 2 20_US 
1938 ;
1939
1940 CODE LCD_WrC
1941     BIS.B #2,&$243
1942     JMP LCD_W 
1943 ENDCODE
1944
1945 CODE LCD_WrF
1946     BIC.B #2,&$243
1947     JMP LCD_W 
1948 ENDCODE
1949
1950 : LCD_Clear 
1951     $01 LCD_WrF 100 20_us
1952 ;
1953
1954 : LCD_Home 
1955     $02 LCD_WrF 100 20_us 
1956 ;
1957
1958 ASM WDT_INT
1959 BIC #$F8,0(R1)
1960 BIT.B #$20,&$240
1961 0= IF
1962     CMP #38,&$3D6
1963     U< IF
1964         ADD #1,&$3D6
1965     THEN
1966 ELSE
1967     BIT.B #$40,&$240
1968     0= IF
1969         CMP #7,&$3D6
1970         U>= IF
1971             SUB #1,&$3D6
1972         THEN
1973     THEN
1974 THEN
1975 RETI
1976 ENDASM
1977
1978 ASM RC5_INT
1979 BIC     #$F8,0(R1)
1980 MOV     #0,&$360
1981 MOV     #1778,R9
1982 MOV     #14,R10
1983 BEGIN
1984     MOV #%1011100100,&$340
1985     RRUM    #1,R9
1986     MOV     R9,R8
1987     RRUM    #1,R8
1988     ADD     R9,R8
1989     BEGIN   CMP R8,&$350
1990     0= UNTIL
1991     BIT.B   #4,&$200
1992     ADDC    R13,R13
1993     MOV     &$200,&$208
1994     BIC.B   #4,&$20C
1995     SUB     #1,R10
1996 0<> WHILE
1997     ADD     R9,R8
1998     BEGIN
1999         CMP     R8,&$350
2000         0>= IF
2001             BIC  #$30,&$340
2002             RETI
2003         THEN
2004         BIT.B   #4,&$20C
2005     0<> UNTIL
2006     MOV     &$350,R9
2007 REPEAT
2008 BIC     #$30,&$340
2009 RLAM    #1,R13
2010 MOV     @R1,R9
2011 RLAM    #4,R9
2012 XOR     R13,R9
2013 BIT     #$2000,R9
2014 0= IF RETI
2015 THEN
2016 XOR     #$200,0(R1)
2017 SUB     #4,R15
2018 MOV     &$1DDA,2(R15)
2019 MOV     R14,0(R15)
2020 MOV.B   R13,R14
2021 RRUM    #2,R14
2022 BIT     #$4000,R13
2023 0= IF   BIS #$40,R14
2024 THEN
2025 LO2HI
2026     ['] LCD_CLEAR IS CR
2027     ['] LCD_WrC  IS EMIT
2028     $10 $1DDA !
2029     CR ." $" 2 U.R
2030     ['] (CR) IS CR
2031     ['] (EMIT) IS EMIT
2032 HI2LO
2033 MOV @R15+,&$1DDA
2034 RETI
2035 ENDASM
2036
2037 CODE START
2038     MOV #%1010010100,&$3C0
2039     MOV #0,&$3E0
2040     MOV #40,&$3D2
2041     MOV #%1100000,&$3C6
2042     MOV #25,&$3D6
2043     BIS.B #$20,&$204
2044     BIS.B #$20,&$20A
2045     BIS.B #7,&$245
2046     BIC.B #7,&$247
2047     BIS.B #$0F,&$224
2048     BIC.B #$0F,&$226
2049     MOV #$5A5E,&$15C
2050     BIS #1,&$100
2051     BIS.B #4,&$20A
2052     BIC.B #4,&$20C
2053     MOV #WDT_INT,&$FFF2
2054     MOV #RC5_INT,&$FFDE
2055 LO2HI
2056     $03E8 20_US
2057     $03 TOP_LCD
2058     $CD 20_US
2059     $03 TOP_LCD
2060     $5 20_US
2061     $03 TOP_LCD
2062     $2 20_US
2063     $02 TOP_LCD
2064     $2 20_US
2065     $28 LCD_WRF
2066     $08 LCD_WRF
2067     LCD_Clear
2068     $06 LCD_WRF
2069     $0C LCD_WRF
2070     LCD_Clear
2071     ['] LCD_HOME IS CR
2072     ['] LCD_WRC  IS EMIT
2073     CR ." I love you"   
2074     ['] (CR) IS CR
2075     ['] (EMIT) IS EMIT
2076     CR
2077     ."    RC5toLCD is running. Type STOP to quit"
2078     LIT RECURSE IS WARM
2079     (WARM)
2080 ;
2081
2082 : STOP
2083     ['] (WARM) IS WARM
2084     ECHO COLD
2085 ;
2086
2087 PWR_STATE
2088 CODE MAX
2089             CMP     @R15,R14
2090             S<      ?GOTO FW1
2091 BW1         ADD     #2,R15
2092             MOV     @R13+,R0
2093 ENDCODE
2094
2095 CODE MIN
2096             CMP     @R15,R14
2097             S<      ?GOTO BW1
2098 FW1         MOV     @R15+,R14
2099             MOV     @R13+,R0
2100 ENDCODE
2101
2102 : U.R
2103   >R  <# 0 # #S #>  
2104   R> OVER - 0 MAX SPACES TYPE
2105 ;
2106
2107 CODE 20_US
2108 BEGIN
2109     MOV     #51,R10
2110     BEGIN
2111         SUB #1,R10
2112     0= UNTIL
2113     SUB     #1,R14
2114 0= UNTIL
2115     MOV     @R15+,R14
2116     MOV     @R13+,R0
2117 ENDCODE
2118
2119 CODE TOP_LCD
2120     BIS.B #4,&$243
2121     BIT.B #1,&$241
2122 0= IF
2123     AND.B #$0F,R14
2124     MOV.B R14,&$222
2125     BIC.B #4,&$243
2126     MOV @R15+,R14
2127     MOV @R13+,R0
2128 THEN
2129     SUB #2,R15
2130     MOV R14,0(R15)
2131     BIC.B #4,&$243
2132     MOV.B &$220,R14
2133     AND.B #$0F,R14
2134     MOV @R13+,R0
2135 ENDCODE
2136
2137 CODE LCD_W
2138     SUB #2,R15
2139     MOV R14,0(R15)
2140     RRUM #4,R14
2141     BIC.B #1,&$243
2142     BIS.B #$0F,&$224
2143 COLON
2144     TOP_LCD 2 20_US
2145     TOP_LCD 2 20_US 
2146 ;
2147
2148 CODE LCD_WrC
2149     BIS.B #2,&$243
2150     JMP LCD_W 
2151 ENDCODE
2152
2153 CODE LCD_WrF
2154     BIC.B #2,&$243
2155     JMP LCD_W 
2156 ENDCODE
2157
2158 : LCD_Clear 
2159     $01 LCD_WrF 100 20_us
2160 ;
2161
2162 : LCD_Home 
2163     $02 LCD_WrF 100 20_us 
2164 ;
2165
2166 ASM WDT_INT
2167 BIC #$F8,0(R1)
2168 BIT.B #$20,&$240
2169 0= IF
2170     CMP #38,&$3D6
2171     U< IF
2172         ADD #1,&$3D6
2173     THEN
2174 ELSE
2175     BIT.B #$40,&$240
2176     0= IF
2177         CMP #7,&$3D6
2178         U>= IF
2179             SUB #1,&$3D6
2180         THEN
2181     THEN
2182 THEN
2183 RETI
2184 ENDASM
2185
2186 ASM RC5_INT
2187 BIC     #$F8,0(R1)
2188 MOV     #0,&$360
2189 MOV     #1778,R9
2190 MOV     #14,R10
2191 BEGIN
2192     MOV #%1011100100,&$340
2193     RRUM    #1,R9
2194     MOV     R9,R8
2195     RRUM    #1,R8
2196     ADD     R9,R8
2197     BEGIN   CMP R8,&$350
2198     0= UNTIL
2199     BIT.B   #4,&$200
2200     ADDC    R13,R13
2201     MOV     &$200,&$208
2202     BIC.B   #4,&$20C
2203     SUB     #1,R10
2204 0<> WHILE
2205     ADD     R9,R8
2206     BEGIN
2207         CMP     R8,&$350
2208         0>= IF
2209             BIC  #$30,&$340
2210             RETI
2211         THEN
2212         BIT.B   #4,&$20C
2213     0<> UNTIL
2214     MOV     &$350,R9
2215 REPEAT
2216 BIC     #$30,&$340
2217 RLAM    #1,R13
2218 MOV     @R1,R9
2219 RLAM    #4,R9
2220 XOR     R13,R9
2221 BIT     #$2000,R9
2222 0= IF RETI
2223 THEN
2224 XOR     #$200,0(R1)
2225 SUB     #4,R15
2226 MOV     &$1DDA,2(R15)
2227 MOV     R14,0(R15)
2228 MOV.B   R13,R14
2229 RRUM    #2,R14
2230 BIT     #$4000,R13
2231 0= IF   BIS #$40,R14
2232 THEN
2233 LO2HI
2234     ['] LCD_CLEAR IS CR
2235     ['] LCD_WrC  IS EMIT
2236     $10 $1DDA !
2237     CR ." $" 2 U.R
2238     ['] (CR) IS CR
2239     ['] (EMIT) IS EMIT
2240 HI2LO
2241 MOV @R15+,&$1DDA
2242 RETI
2243 ENDASM
2244
2245 CODE START
2246     MOV #%1010010100,&$3C0
2247     MOV #0,&$3E0
2248     MOV #40,&$3D2
2249     MOV #%1100000,&$3C6
2250     MOV #25,&$3D6
2251     BIS.B #$20,&$204
2252     BIS.B #$20,&$20A
2253     BIS.B #7,&$245
2254     BIC.B #7,&$247
2255     BIS.B #$0F,&$224
2256     BIC.B #$0F,&$226
2257     MOV #$5A5E,&$15C
2258     BIS #1,&$100
2259     BIS.B #4,&$20A
2260     BIC.B #4,&$20C
2261     MOV #WDT_INT,&$FFF2
2262     MOV #RC5_INT,&$FFDE
2263 LO2HI
2264     $03E8 20_US
2265     $03 TOP_LCD
2266     $CD 20_US
2267     $03 TOP_LCD
2268     $5 20_US
2269     $03 TOP_LCD
2270     $2 20_US
2271     $02 TOP_LCD
2272     $2 20_US
2273     $28 LCD_WRF
2274     $08 LCD_WRF
2275     LCD_Clear
2276     $06 LCD_WRF
2277     $0C LCD_WRF
2278     LCD_Clear
2279     ['] LCD_HOME IS CR
2280     ['] LCD_WRC  IS EMIT
2281     CR ." I love you"   
2282     ['] (CR) IS CR
2283     ['] (EMIT) IS EMIT
2284     CR
2285     ."    RC5toLCD is running. Type STOP to quit"
2286     LIT RECURSE IS WARM
2287     (WARM)
2288 ;
2289
2290 : STOP
2291     ['] (WARM) IS WARM
2292     ECHO COLD
2293 ;
2294
2295 ECHO
2296             ; download is done
2297 PWR_HERE    ; this app is protected against power ON/OFF,