OSDN Git Service

Merge framagit.org:Jean-Mi/FAST-FORTH
[fast-forth/master.git] / MSP430-FORTH / MSP_EXP430FR5994 / PROG100K.4TH
1 ; -----------------------------------
2 ; PROG100k.4th = 110 x RC5toLCD.4th
3 ; -----------------------------------
4
5
6 PWR_STATE
7
8 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
9
10 MARKER {RC5TOLCD}
11
12 [UNDEFINED] MAX [IF]
13
14 CODE MAX
15     CMP @R15,R14
16     S<  ?GOTO FW1
17 BW1 ADD #2,R15
18     MOV @R13+,R0
19 ENDCODE
20
21 CODE MIN
22     CMP @R15,R14
23     S<  ?GOTO BW1
24 FW1 MOV @R15+,R14
25     MOV @R13+,R0
26 ENDCODE
27
28 [THEN]
29
30
31 [UNDEFINED] U.R [IF]
32 : U.R
33   >R  <# 0 # #S #>  
34   R> OVER - 0 MAX SPACES TYPE
35 ;
36 [THEN]
37
38
39
40 CODE 20_US
41 BEGIN
42     BEGIN
43         BIT #1,&$3C0
44     0<> UNTIL
45     BIC #1,&$3C0
46     SUB #1,R14
47 U< UNTIL
48 MOV @R15+,R14
49 MOV @R13+,R0
50 ENDCODE
51
52
53 CODE TOP_LCD
54     BIS.B #4,&$243
55     BIT.B #1,&$241
56 0= IF
57     AND.B #$0F,R14
58     MOV.B R14,&$222
59     BIC.B #4,&$243
60     MOV @R15+,R14
61     MOV @R13+,R0
62 THEN
63     SUB #2,R15
64     MOV R14,0(R15)
65     BIC.B #4,&$243
66     MOV.B &$220,R14
67     AND.B #$0F,R14
68     MOV @R13+,R0
69 ENDCODE
70
71
72 CODE LCD_W
73     SUB #2,R15
74     MOV R14,0(R15)
75     RRUM #4,R14
76     BIC.B #1,&$243
77     BIS.B #$0F,&$224
78 COLON
79     TOP_LCD 2 20_US
80     TOP_LCD 2 20_US 
81 ;
82
83
84 CODE LCD_WrC
85     BIS.B #2,&$243
86     JMP LCD_W 
87 ENDCODE
88
89
90 CODE LCD_WrF
91     BIC.B #2,&$243
92     JMP LCD_W 
93 ENDCODE
94
95
96 : LCD_Clear 
97     $01 LCD_WrF 100 20_us
98 ;
99
100
101 : LCD_Home 
102     $02 LCD_WrF 100 20_us 
103 ;
104
105
106 [UNDEFINED] OR [IF]
107
108 CODE OR
109 BIS @R15+,R14
110 MOV @R13+,R0
111 ENDCODE
112
113
114 [THEN]
115
116 : LCD_Entry_set     $04 OR LCD_WrF ;
117
118 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
119
120 : LCD_DSP_Shift     $10 OR LCD_WrF ;
121
122 : LCD_Fn_Set        $20 OR LCD_WrF ;
123
124 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
125
126 : LCD_Goto          $80 OR LCD_WrF ;
127
128 CODE LCD_R
129     BIC.B #$0F,&$224
130     BIS.B #1,&$243
131 COLON
132     TOP_LCD 2 20_us
133     TOP_LCD 2 20_us
134 HI2LO
135     RLAM #4,0(R15)
136     ADD.B @R15+,R14
137     MOV @R1+,R13
138     MOV @R13+,R0
139 ENDCODE
140
141
142 CODE LCD_RdS
143     BIC.B #2,&$243
144     JMP LCD_R
145 ENDCODE
146
147
148 CODE LCD_RdC
149     BIS.B #2,&$243
150     JMP LCD_R
151 ENDCODE
152
153
154
155 ASM 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 BW1
172 BW2
173 BW3
174 BIC #$78,0(R1)
175 RETI
176 ENDASM
177
178
179 ASM RC5_INT
180   MOV #1,&$3A0
181 MOV #1778,R9
182 MOV #14,R10
183 BEGIN
184 MOV #%1011100100,&$380
185     RRUM    #1,R9
186     MOV     R9,R8
187     RRUM    #1,R8
188     ADD     R9,R8
189     BEGIN   CMP R8,&$390
190     U>= UNTIL
191     BIT.B   #4,&$200
192     ADDC    R11,R11
193     MOV.B   &$200,&$208
194     BIC.B   #4,&$20C
195     SUB     #1,R10
196 0<> WHILE
197     ADD R9,R8
198     BEGIN
199         MOV &$390,R9
200         CMP R8,R9
201         U>= IF
202         BIC #$30,&$380
203         GOTO BW1
204         THEN
205         BIT.B #4,&$20C
206     0<> UNTIL
207 REPEAT
208 BIC #$30,&$380
209 RLAM    #1,R11
210 MOV.B   R11,R9
211 RRUM    #2,R9
212 BIT     #$4000,R11
213 0= IF   BIS #$40,R9
214 THEN
215 RRUM    #3,R11
216 XOR     @R1,R11
217 BIT     #$400,R11
218 0= ?GOTO BW2
219 XOR #$400,0(R1)
220 SUB #4,R15
221 MOV &BASE,2(R15)
222 MOV #$10,&BASE
223 MOV R14,0(R15)
224 MOV R9,R14
225 LO2HI
226     ['] LCD_CLEAR IS CR
227     ['] LCD_WrC  IS EMIT
228     CR ." $" 2 U.R
229     ['] CR >BODY IS CR
230     ['] EMIT >BODY IS EMIT
231 HI2LO
232 MOV R14,&BASE
233 MOV @R15+,R14
234 GOTO BW3
235 ENDASM
236
237
238 ASM BACKGROUND
239 MOV #SLEEP,R9
240 ADD #4,R9
241 MOV R9,R0
242 ENDASM
243
244
245 CODE START
246     MOV #%1011010100,&$3C0
247     MOV #1,&$3E0
248     MOV #19,&$3D2
249     MOV #%01100000,&$3C6
250     MOV #10,&$3D6
251     BIS.B #$20,&$204
252     BIS.B #$20,&$20A
253     BIS.B #7,&$245
254     BIC.B #7,&$247
255     BIS.B #$0F,&$224
256     BIC.B #$0F,&$226
257     BIS.B #4,&$20A
258     BIC.B #4,&$20C
259     MOV #RC5_INT,&$FFDE
260     MOV #%0100010100,&$340
261     MOV ##1638,&$352
262     MOV #%10000,&$342
263     MOV #WDT_INT,&$FFEA
264
265     MOV #SLEEP,R9
266     MOV #BACKGROUND,2(R9)
267
268 LO2HI
269
270     $03E8 20_US
271     $03 TOP_LCD
272     $CD 20_US
273     $03 TOP_LCD
274     $5 20_US
275     $03 TOP_LCD
276     $2 20_US
277     $02 TOP_LCD
278     $2 20_US
279     $28 LCD_WRF
280     $08 LCD_WRF
281     LCD_Clear
282     $06 LCD_WRF
283     $0C LCD_WRF
284     LCD_Clear
285     ['] LCD_HOME IS CR
286     ['] LCD_WRC  IS EMIT
287     CR ." I love you"   
288     ['] CR >BODY IS CR
289     ['] EMIT >BODY IS EMIT
290     ." RC5toLCD is running. Type STOP to quit"
291     LIT RECURSE IS WARM
292     ABORT
293 ;
294
295
296 CODE STOP
297     MOV #SLEEP,R9
298     ADD #4,R9
299     MOV R9,-2(R9)
300
301 COLON
302     ['] WARM >BODY IS WARM
303
304     COLD
305 ;
306
307
308
309             ; downloading RC5toLCD.4th is done
310 RST_HERE    ; this app is protected against <reset>
311
312 [THEN]
313
314
315
316
317
318 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
319
320 [DEFINED] ASM [IF]
321
322 MARKER {RC5TOLCD}
323
324 [UNDEFINED] MAX [IF]
325
326 CODE MAX
327     CMP @R15,R14
328     S<  ?GOTO FW1
329 BW1 ADD #2,R15
330     MOV @R13+,R0
331 ENDCODE
332
333
334 CODE MIN
335     CMP @R15,R14
336     S<  ?GOTO BW1
337 FW1 MOV @R15+,R14
338     MOV @R13+,R0
339 ENDCODE
340
341 [THEN]
342
343
344 [UNDEFINED] U.R [IF]
345 : U.R
346   >R  <# 0 # #S #>  
347   R> OVER - 0 MAX SPACES TYPE
348 ;
349 [THEN]
350
351
352
353 CODE 20_US
354 BEGIN
355     BEGIN
356         BIT #1,&$3C0
357     0<> UNTIL
358     BIC #1,&$3C0
359     SUB #1,R14
360 U< UNTIL
361 MOV @R15+,R14
362 MOV @R13+,R0
363 ENDCODE
364
365
366 CODE TOP_LCD
367     BIS.B #4,&$243
368     BIT.B #1,&$241
369 0= IF
370     AND.B #$0F,R14
371     MOV.B R14,&$222
372     BIC.B #4,&$243
373     MOV @R15+,R14
374     MOV @R13+,R0
375 THEN
376     SUB #2,R15
377     MOV R14,0(R15)
378     BIC.B #4,&$243
379     MOV.B &$220,R14
380     AND.B #$0F,R14
381     MOV @R13+,R0
382 ENDCODE
383
384
385 CODE LCD_W
386     SUB #2,R15
387     MOV R14,0(R15)
388     RRUM #4,R14
389     BIC.B #1,&$243
390     BIS.B #$0F,&$224
391 COLON
392     TOP_LCD 2 20_US
393     TOP_LCD 2 20_US 
394 ;
395
396
397 CODE LCD_WrC
398     BIS.B #2,&$243
399     JMP LCD_W 
400 ENDCODE
401
402
403 CODE LCD_WrF
404     BIC.B #2,&$243
405     JMP LCD_W 
406 ENDCODE
407
408
409 : LCD_Clear 
410     $01 LCD_WrF 100 20_us
411 ;
412
413
414 : LCD_Home 
415     $02 LCD_WrF 100 20_us 
416 ;
417
418
419 [UNDEFINED] OR [IF]
420
421 CODE OR
422 BIS @R15+,R14
423 MOV @R13+,R0
424 ENDCODE
425
426
427 [THEN]
428
429 : LCD_Entry_set     $04 OR LCD_WrF ;
430
431 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
432
433 : LCD_DSP_Shift     $10 OR LCD_WrF ;
434
435 : LCD_Fn_Set        $20 OR LCD_WrF ;
436
437 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
438
439 : LCD_Goto          $80 OR LCD_WrF ;
440
441 CODE LCD_R
442     BIC.B #$0F,&$224
443     BIS.B #1,&$243
444 COLON
445     TOP_LCD 2 20_us
446     TOP_LCD 2 20_us
447 HI2LO
448     RLAM #4,0(R15)
449     ADD.B @R15+,R14
450     MOV @R1+,R13
451     MOV @R13+,R0
452 ENDCODE
453
454
455 CODE LCD_RdS
456     BIC.B #2,&$243
457     JMP LCD_R
458 ENDCODE
459
460
461 CODE LCD_RdC
462     BIS.B #2,&$243
463     JMP LCD_R
464 ENDCODE
465
466
467
468 ASM WDT_INT
469 BIT.B #$20,&$240
470 0= IF
471     CMP #19,&$3D6
472     U< IF
473         ADD #1,&$3D6
474     THEN
475 ELSE
476     BIT.B #$40,&$240
477     0= IF
478         CMP #3,&$3D6
479         U>= IF
480            SUB #1,&$3D6
481         THEN
482     THEN
483 THEN
484 BW1
485 BW2
486 BW3
487 BIC #$78,0(R1)
488 RETI
489 ENDASM
490
491
492 ASM RC5_INT
493   MOV #1,&$3A0
494 MOV #1778,R9
495 MOV #14,R10
496 BEGIN
497 MOV #%1011100100,&$380
498     RRUM    #1,R9
499     MOV     R9,R8
500     RRUM    #1,R8
501     ADD     R9,R8
502     BEGIN   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>= IF
515         BIC #$30,&$380
516         GOTO BW1
517         THEN
518         BIT.B #4,&$20C
519     0<> UNTIL
520 REPEAT
521 BIC #$30,&$380
522 RLAM    #1,R11
523 MOV.B   R11,R9
524 RRUM    #2,R9
525 BIT     #$4000,R11
526 0= IF   BIS #$40,R9
527 THEN
528 RRUM    #3,R11
529 XOR     @R1,R11
530 BIT     #$400,R11
531 0= ?GOTO BW2
532 XOR #$400,0(R1)
533 SUB #4,R15
534 MOV &BASE,2(R15)
535 MOV #$10,&BASE
536 MOV R14,0(R15)
537 MOV R9,R14
538 LO2HI
539     ['] LCD_CLEAR IS CR
540     ['] LCD_WrC  IS EMIT
541     CR ." $" 2 U.R
542     ['] CR >BODY IS CR
543     ['] EMIT >BODY IS EMIT
544 HI2LO
545 MOV R14,&BASE
546 MOV @R15+,R14
547 GOTO BW3
548 ENDASM
549
550
551 ASM BACKGROUND
552 MOV #SLEEP,R9
553 ADD #4,R9
554 MOV R9,R0
555 ENDASM
556
557
558 CODE START
559     MOV #%1011010100,&$3C0
560     MOV #1,&$3E0
561     MOV #19,&$3D2
562     MOV #%01100000,&$3C6
563     MOV #10,&$3D6
564     BIS.B #$20,&$204
565     BIS.B #$20,&$20A
566     BIS.B #7,&$245
567     BIC.B #7,&$247
568     BIS.B #$0F,&$224
569     BIC.B #$0F,&$226
570     BIS.B #4,&$20A
571     BIC.B #4,&$20C
572     MOV #RC5_INT,&$FFDE
573     MOV #%0100010100,&$340
574     MOV ##1638,&$352
575     MOV #%10000,&$342
576     MOV #WDT_INT,&$FFEA
577
578     MOV #SLEEP,R9
579     MOV #BACKGROUND,2(R9)
580
581 LO2HI
582
583     $03E8 20_US
584     $03 TOP_LCD
585     $CD 20_US
586     $03 TOP_LCD
587     $5 20_US
588     $03 TOP_LCD
589     $2 20_US
590     $02 TOP_LCD
591     $2 20_US
592     $28 LCD_WRF
593     $08 LCD_WRF
594     LCD_Clear
595     $06 LCD_WRF
596     $0C LCD_WRF
597     LCD_Clear
598     ['] LCD_HOME IS CR
599     ['] LCD_WRC  IS EMIT
600     CR ." I love you"   
601     ['] CR >BODY IS CR
602     ['] EMIT >BODY IS EMIT
603     ." RC5toLCD is running. Type STOP to quit"
604     LIT RECURSE IS WARM
605     ABORT
606 ;
607
608
609 CODE STOP
610     MOV #SLEEP,R9
611     ADD #4,R9
612     MOV R9,-2(R9)
613
614 COLON
615     ['] WARM >BODY IS WARM
616
617     COLD
618 ;
619
620
621
622             ; downloading RC5toLCD.4th is done
623 RST_HERE    ; this app is protected against <reset>
624
625 [THEN]
626
627
628
629
630
631 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
632
633 [DEFINED] ASM [IF]
634
635 MARKER {RC5TOLCD}
636
637 [UNDEFINED] MAX [IF]
638
639 CODE MAX
640     CMP @R15,R14
641     S<  ?GOTO FW1
642 BW1 ADD #2,R15
643     MOV @R13+,R0
644 ENDCODE
645
646
647 CODE MIN
648     CMP @R15,R14
649     S<  ?GOTO BW1
650 FW1 MOV @R15+,R14
651     MOV @R13+,R0
652 ENDCODE
653
654 [THEN]
655
656
657 [UNDEFINED] U.R [IF]
658 : U.R
659   >R  <# 0 # #S #>  
660   R> OVER - 0 MAX SPACES TYPE
661 ;
662 [THEN]
663
664
665
666 CODE 20_US
667 BEGIN
668     BEGIN
669         BIT #1,&$3C0
670     0<> UNTIL
671     BIC #1,&$3C0
672     SUB #1,R14
673 U< UNTIL
674 MOV @R15+,R14
675 MOV @R13+,R0
676 ENDCODE
677
678
679 CODE TOP_LCD
680     BIS.B #4,&$243
681     BIT.B #1,&$241
682 0= IF
683     AND.B #$0F,R14
684     MOV.B R14,&$222
685     BIC.B #4,&$243
686     MOV @R15+,R14
687     MOV @R13+,R0
688 THEN
689     SUB #2,R15
690     MOV R14,0(R15)
691     BIC.B #4,&$243
692     MOV.B &$220,R14
693     AND.B #$0F,R14
694     MOV @R13+,R0
695 ENDCODE
696
697
698 CODE LCD_W
699     SUB #2,R15
700     MOV R14,0(R15)
701     RRUM #4,R14
702     BIC.B #1,&$243
703     BIS.B #$0F,&$224
704 COLON
705     TOP_LCD 2 20_US
706     TOP_LCD 2 20_US 
707 ;
708
709
710 CODE LCD_WrC
711     BIS.B #2,&$243
712     JMP LCD_W 
713 ENDCODE
714
715
716 CODE LCD_WrF
717     BIC.B #2,&$243
718     JMP LCD_W 
719 ENDCODE
720
721
722 : LCD_Clear 
723     $01 LCD_WrF 100 20_us
724 ;
725
726
727 : LCD_Home 
728     $02 LCD_WrF 100 20_us 
729 ;
730
731
732 [UNDEFINED] OR [IF]
733
734 CODE OR
735 BIS @R15+,R14
736 MOV @R13+,R0
737 ENDCODE
738
739
740 [THEN]
741
742 : LCD_Entry_set     $04 OR LCD_WrF ;
743
744 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
745
746 : LCD_DSP_Shift     $10 OR LCD_WrF ;
747
748 : LCD_Fn_Set        $20 OR LCD_WrF ;
749
750 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
751
752 : LCD_Goto          $80 OR LCD_WrF ;
753
754 CODE LCD_R
755     BIC.B #$0F,&$224
756     BIS.B #1,&$243
757 COLON
758     TOP_LCD 2 20_us
759     TOP_LCD 2 20_us
760 HI2LO
761     RLAM #4,0(R15)
762     ADD.B @R15+,R14
763     MOV @R1+,R13
764     MOV @R13+,R0
765 ENDCODE
766
767
768 CODE LCD_RdS
769     BIC.B #2,&$243
770     JMP LCD_R
771 ENDCODE
772
773
774 CODE LCD_RdC
775     BIS.B #2,&$243
776     JMP LCD_R
777 ENDCODE
778
779
780
781 ASM WDT_INT
782 BIT.B #$20,&$240
783 0= IF
784     CMP #19,&$3D6
785     U< IF
786         ADD #1,&$3D6
787     THEN
788 ELSE
789     BIT.B #$40,&$240
790     0= IF
791         CMP #3,&$3D6
792         U>= IF
793            SUB #1,&$3D6
794         THEN
795     THEN
796 THEN
797 BW1
798 BW2
799 BW3
800 BIC #$78,0(R1)
801 RETI
802 ENDASM
803
804
805 ASM RC5_INT
806   MOV #1,&$3A0
807 MOV #1778,R9
808 MOV #14,R10
809 BEGIN
810 MOV #%1011100100,&$380
811     RRUM    #1,R9
812     MOV     R9,R8
813     RRUM    #1,R8
814     ADD     R9,R8
815     BEGIN   CMP R8,&$390
816     U>= UNTIL
817     BIT.B   #4,&$200
818     ADDC    R11,R11
819     MOV.B   &$200,&$208
820     BIC.B   #4,&$20C
821     SUB     #1,R10
822 0<> WHILE
823     ADD R9,R8
824     BEGIN
825         MOV &$390,R9
826         CMP R8,R9
827         U>= IF
828         BIC #$30,&$380
829         GOTO BW1
830         THEN
831         BIT.B #4,&$20C
832     0<> UNTIL
833 REPEAT
834 BIC #$30,&$380
835 RLAM    #1,R11
836 MOV.B   R11,R9
837 RRUM    #2,R9
838 BIT     #$4000,R11
839 0= IF   BIS #$40,R9
840 THEN
841 RRUM    #3,R11
842 XOR     @R1,R11
843 BIT     #$400,R11
844 0= ?GOTO BW2
845 XOR #$400,0(R1)
846 SUB #4,R15
847 MOV &BASE,2(R15)
848 MOV #$10,&BASE
849 MOV R14,0(R15)
850 MOV R9,R14
851 LO2HI
852     ['] LCD_CLEAR IS CR
853     ['] LCD_WrC  IS EMIT
854     CR ." $" 2 U.R
855     ['] CR >BODY IS CR
856     ['] EMIT >BODY IS EMIT
857 HI2LO
858 MOV R14,&BASE
859 MOV @R15+,R14
860 GOTO BW3
861 ENDASM
862
863
864 ASM BACKGROUND
865 MOV #SLEEP,R9
866 ADD #4,R9
867 MOV R9,R0
868 ENDASM
869
870
871 CODE START
872     MOV #%1011010100,&$3C0
873     MOV #1,&$3E0
874     MOV #19,&$3D2
875     MOV #%01100000,&$3C6
876     MOV #10,&$3D6
877     BIS.B #$20,&$204
878     BIS.B #$20,&$20A
879     BIS.B #7,&$245
880     BIC.B #7,&$247
881     BIS.B #$0F,&$224
882     BIC.B #$0F,&$226
883     BIS.B #4,&$20A
884     BIC.B #4,&$20C
885     MOV #RC5_INT,&$FFDE
886     MOV #%0100010100,&$340
887     MOV ##1638,&$352
888     MOV #%10000,&$342
889     MOV #WDT_INT,&$FFEA
890
891     MOV #SLEEP,R9
892     MOV #BACKGROUND,2(R9)
893
894 LO2HI
895
896     $03E8 20_US
897     $03 TOP_LCD
898     $CD 20_US
899     $03 TOP_LCD
900     $5 20_US
901     $03 TOP_LCD
902     $2 20_US
903     $02 TOP_LCD
904     $2 20_US
905     $28 LCD_WRF
906     $08 LCD_WRF
907     LCD_Clear
908     $06 LCD_WRF
909     $0C LCD_WRF
910     LCD_Clear
911     ['] LCD_HOME IS CR
912     ['] LCD_WRC  IS EMIT
913     CR ." I love you"   
914     ['] CR >BODY IS CR
915     ['] EMIT >BODY IS EMIT
916     ." RC5toLCD is running. Type STOP to quit"
917     LIT RECURSE IS WARM
918     ABORT
919 ;
920
921
922 CODE STOP
923     MOV #SLEEP,R9
924     ADD #4,R9
925     MOV R9,-2(R9)
926
927 COLON
928     ['] WARM >BODY IS WARM
929
930     COLD
931 ;
932
933
934
935             ; downloading RC5toLCD.4th is done
936 RST_HERE    ; this app is protected against <reset>
937
938 [THEN]
939
940
941
942
943
944 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
945
946 [DEFINED] ASM [IF]
947
948 MARKER {RC5TOLCD}
949
950 [UNDEFINED] MAX [IF]
951
952 CODE MAX
953     CMP @R15,R14
954     S<  ?GOTO FW1
955 BW1 ADD #2,R15
956     MOV @R13+,R0
957 ENDCODE
958
959
960 CODE MIN
961     CMP @R15,R14
962     S<  ?GOTO BW1
963 FW1 MOV @R15+,R14
964     MOV @R13+,R0
965 ENDCODE
966
967 [THEN]
968
969
970 [UNDEFINED] U.R [IF]
971 : U.R
972   >R  <# 0 # #S #>  
973   R> OVER - 0 MAX SPACES TYPE
974 ;
975 [THEN]
976
977
978
979 CODE 20_US
980 BEGIN
981     BEGIN
982         BIT #1,&$3C0
983     0<> UNTIL
984     BIC #1,&$3C0
985     SUB #1,R14
986 U< UNTIL
987 MOV @R15+,R14
988 MOV @R13+,R0
989 ENDCODE
990
991
992 CODE TOP_LCD
993     BIS.B #4,&$243
994     BIT.B #1,&$241
995 0= IF
996     AND.B #$0F,R14
997     MOV.B R14,&$222
998     BIC.B #4,&$243
999     MOV @R15+,R14
1000     MOV @R13+,R0
1001 THEN
1002     SUB #2,R15
1003     MOV R14,0(R15)
1004     BIC.B #4,&$243
1005     MOV.B &$220,R14
1006     AND.B #$0F,R14
1007     MOV @R13+,R0
1008 ENDCODE
1009
1010
1011 CODE LCD_W
1012     SUB #2,R15
1013     MOV R14,0(R15)
1014     RRUM #4,R14
1015     BIC.B #1,&$243
1016     BIS.B #$0F,&$224
1017 COLON
1018     TOP_LCD 2 20_US
1019     TOP_LCD 2 20_US 
1020 ;
1021
1022
1023 CODE LCD_WrC
1024     BIS.B #2,&$243
1025     JMP LCD_W 
1026 ENDCODE
1027
1028
1029 CODE LCD_WrF
1030     BIC.B #2,&$243
1031     JMP LCD_W 
1032 ENDCODE
1033
1034
1035 : LCD_Clear 
1036     $01 LCD_WrF 100 20_us
1037 ;
1038
1039
1040 : LCD_Home 
1041     $02 LCD_WrF 100 20_us 
1042 ;
1043
1044
1045 [UNDEFINED] OR [IF]
1046
1047 CODE OR
1048 BIS @R15+,R14
1049 MOV @R13+,R0
1050 ENDCODE
1051
1052
1053 [THEN]
1054
1055 : LCD_Entry_set     $04 OR LCD_WrF ;
1056
1057 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
1058
1059 : LCD_DSP_Shift     $10 OR LCD_WrF ;
1060
1061 : LCD_Fn_Set        $20 OR LCD_WrF ;
1062
1063 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
1064
1065 : LCD_Goto          $80 OR LCD_WrF ;
1066
1067 CODE LCD_R
1068     BIC.B #$0F,&$224
1069     BIS.B #1,&$243
1070 COLON
1071     TOP_LCD 2 20_us
1072     TOP_LCD 2 20_us
1073 HI2LO
1074     RLAM #4,0(R15)
1075     ADD.B @R15+,R14
1076     MOV @R1+,R13
1077     MOV @R13+,R0
1078 ENDCODE
1079
1080
1081 CODE LCD_RdS
1082     BIC.B #2,&$243
1083     JMP LCD_R
1084 ENDCODE
1085
1086
1087 CODE LCD_RdC
1088     BIS.B #2,&$243
1089     JMP LCD_R
1090 ENDCODE
1091
1092
1093
1094 ASM WDT_INT
1095 BIT.B #$20,&$240
1096 0= IF
1097     CMP #19,&$3D6
1098     U< IF
1099         ADD #1,&$3D6
1100     THEN
1101 ELSE
1102     BIT.B #$40,&$240
1103     0= IF
1104         CMP #3,&$3D6
1105         U>= IF
1106            SUB #1,&$3D6
1107         THEN
1108     THEN
1109 THEN
1110 BW1
1111 BW2
1112 BW3
1113 BIC #$78,0(R1)
1114 RETI
1115 ENDASM
1116
1117
1118 ASM RC5_INT
1119   MOV #1,&$3A0
1120 MOV #1778,R9
1121 MOV #14,R10
1122 BEGIN
1123 MOV #%1011100100,&$380
1124     RRUM    #1,R9
1125     MOV     R9,R8
1126     RRUM    #1,R8
1127     ADD     R9,R8
1128     BEGIN   CMP R8,&$390
1129     U>= UNTIL
1130     BIT.B   #4,&$200
1131     ADDC    R11,R11
1132     MOV.B   &$200,&$208
1133     BIC.B   #4,&$20C
1134     SUB     #1,R10
1135 0<> WHILE
1136     ADD R9,R8
1137     BEGIN
1138         MOV &$390,R9
1139         CMP R8,R9
1140         U>= IF
1141         BIC #$30,&$380
1142         GOTO BW1
1143         THEN
1144         BIT.B #4,&$20C
1145     0<> UNTIL
1146 REPEAT
1147 BIC #$30,&$380
1148 RLAM    #1,R11
1149 MOV.B   R11,R9
1150 RRUM    #2,R9
1151 BIT     #$4000,R11
1152 0= IF   BIS #$40,R9
1153 THEN
1154 RRUM    #3,R11
1155 XOR     @R1,R11
1156 BIT     #$400,R11
1157 0= ?GOTO BW2
1158 XOR #$400,0(R1)
1159 SUB #4,R15
1160 MOV &BASE,2(R15)
1161 MOV #$10,&BASE
1162 MOV R14,0(R15)
1163 MOV R9,R14
1164 LO2HI
1165     ['] LCD_CLEAR IS CR
1166     ['] LCD_WrC  IS EMIT
1167     CR ." $" 2 U.R
1168     ['] CR >BODY IS CR
1169     ['] EMIT >BODY IS EMIT
1170 HI2LO
1171 MOV R14,&BASE
1172 MOV @R15+,R14
1173 GOTO BW3
1174 ENDASM
1175
1176
1177 ASM BACKGROUND
1178 MOV #SLEEP,R9
1179 ADD #4,R9
1180 MOV R9,R0
1181 ENDASM
1182
1183
1184 CODE START
1185     MOV #%1011010100,&$3C0
1186     MOV #1,&$3E0
1187     MOV #19,&$3D2
1188     MOV #%01100000,&$3C6
1189     MOV #10,&$3D6
1190     BIS.B #$20,&$204
1191     BIS.B #$20,&$20A
1192     BIS.B #7,&$245
1193     BIC.B #7,&$247
1194     BIS.B #$0F,&$224
1195     BIC.B #$0F,&$226
1196     BIS.B #4,&$20A
1197     BIC.B #4,&$20C
1198     MOV #RC5_INT,&$FFDE
1199     MOV #%0100010100,&$340
1200     MOV ##1638,&$352
1201     MOV #%10000,&$342
1202     MOV #WDT_INT,&$FFEA
1203
1204     MOV #SLEEP,R9
1205     MOV #BACKGROUND,2(R9)
1206
1207 LO2HI
1208
1209     $03E8 20_US
1210     $03 TOP_LCD
1211     $CD 20_US
1212     $03 TOP_LCD
1213     $5 20_US
1214     $03 TOP_LCD
1215     $2 20_US
1216     $02 TOP_LCD
1217     $2 20_US
1218     $28 LCD_WRF
1219     $08 LCD_WRF
1220     LCD_Clear
1221     $06 LCD_WRF
1222     $0C LCD_WRF
1223     LCD_Clear
1224     ['] LCD_HOME IS CR
1225     ['] LCD_WRC  IS EMIT
1226     CR ." I love you"   
1227     ['] CR >BODY IS CR
1228     ['] EMIT >BODY IS EMIT
1229     ." RC5toLCD is running. Type STOP to quit"
1230     LIT RECURSE IS WARM
1231     ABORT
1232 ;
1233
1234
1235 CODE STOP
1236     MOV #SLEEP,R9
1237     ADD #4,R9
1238     MOV R9,-2(R9)
1239
1240 COLON
1241     ['] WARM >BODY IS WARM
1242
1243     COLD
1244 ;
1245
1246
1247
1248             ; downloading RC5toLCD.4th is done
1249 RST_HERE    ; this app is protected against <reset>
1250
1251 [THEN]
1252
1253
1254
1255
1256
1257 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
1258
1259 [DEFINED] ASM [IF]
1260
1261 MARKER {RC5TOLCD}
1262
1263 [UNDEFINED] MAX [IF]
1264
1265 CODE MAX
1266     CMP @R15,R14
1267     S<  ?GOTO FW1
1268 BW1 ADD #2,R15
1269     MOV @R13+,R0
1270 ENDCODE
1271
1272
1273 CODE MIN
1274     CMP @R15,R14
1275     S<  ?GOTO BW1
1276 FW1 MOV @R15+,R14
1277     MOV @R13+,R0
1278 ENDCODE
1279
1280 [THEN]
1281
1282
1283 [UNDEFINED] U.R [IF]
1284 : U.R
1285   >R  <# 0 # #S #>  
1286   R> OVER - 0 MAX SPACES TYPE
1287 ;
1288 [THEN]
1289
1290
1291
1292 CODE 20_US
1293 BEGIN
1294     BEGIN
1295         BIT #1,&$3C0
1296     0<> UNTIL
1297     BIC #1,&$3C0
1298     SUB #1,R14
1299 U< UNTIL
1300 MOV @R15+,R14
1301 MOV @R13+,R0
1302 ENDCODE
1303
1304
1305 CODE TOP_LCD
1306     BIS.B #4,&$243
1307     BIT.B #1,&$241
1308 0= IF
1309     AND.B #$0F,R14
1310     MOV.B R14,&$222
1311     BIC.B #4,&$243
1312     MOV @R15+,R14
1313     MOV @R13+,R0
1314 THEN
1315     SUB #2,R15
1316     MOV R14,0(R15)
1317     BIC.B #4,&$243
1318     MOV.B &$220,R14
1319     AND.B #$0F,R14
1320     MOV @R13+,R0
1321 ENDCODE
1322
1323
1324 CODE LCD_W
1325     SUB #2,R15
1326     MOV R14,0(R15)
1327     RRUM #4,R14
1328     BIC.B #1,&$243
1329     BIS.B #$0F,&$224
1330 COLON
1331     TOP_LCD 2 20_US
1332     TOP_LCD 2 20_US 
1333 ;
1334
1335
1336 CODE LCD_WrC
1337     BIS.B #2,&$243
1338     JMP LCD_W 
1339 ENDCODE
1340
1341
1342 CODE LCD_WrF
1343     BIC.B #2,&$243
1344     JMP LCD_W 
1345 ENDCODE
1346
1347
1348 : LCD_Clear 
1349     $01 LCD_WrF 100 20_us
1350 ;
1351
1352
1353 : LCD_Home 
1354     $02 LCD_WrF 100 20_us 
1355 ;
1356
1357
1358 [UNDEFINED] OR [IF]
1359
1360 CODE OR
1361 BIS @R15+,R14
1362 MOV @R13+,R0
1363 ENDCODE
1364
1365
1366 [THEN]
1367
1368 : LCD_Entry_set     $04 OR LCD_WrF ;
1369
1370 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
1371
1372 : LCD_DSP_Shift     $10 OR LCD_WrF ;
1373
1374 : LCD_Fn_Set        $20 OR LCD_WrF ;
1375
1376 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
1377
1378 : LCD_Goto          $80 OR LCD_WrF ;
1379
1380 CODE LCD_R
1381     BIC.B #$0F,&$224
1382     BIS.B #1,&$243
1383 COLON
1384     TOP_LCD 2 20_us
1385     TOP_LCD 2 20_us
1386 HI2LO
1387     RLAM #4,0(R15)
1388     ADD.B @R15+,R14
1389     MOV @R1+,R13
1390     MOV @R13+,R0
1391 ENDCODE
1392
1393
1394 CODE LCD_RdS
1395     BIC.B #2,&$243
1396     JMP LCD_R
1397 ENDCODE
1398
1399
1400 CODE LCD_RdC
1401     BIS.B #2,&$243
1402     JMP LCD_R
1403 ENDCODE
1404
1405
1406
1407 ASM WDT_INT
1408 BIT.B #$20,&$240
1409 0= IF
1410     CMP #19,&$3D6
1411     U< IF
1412         ADD #1,&$3D6
1413     THEN
1414 ELSE
1415     BIT.B #$40,&$240
1416     0= IF
1417         CMP #3,&$3D6
1418         U>= IF
1419            SUB #1,&$3D6
1420         THEN
1421     THEN
1422 THEN
1423 BW1
1424 BW2
1425 BW3
1426 BIC #$78,0(R1)
1427 RETI
1428 ENDASM
1429
1430
1431 ASM RC5_INT
1432   MOV #1,&$3A0
1433 MOV #1778,R9
1434 MOV #14,R10
1435 BEGIN
1436 MOV #%1011100100,&$380
1437     RRUM    #1,R9
1438     MOV     R9,R8
1439     RRUM    #1,R8
1440     ADD     R9,R8
1441     BEGIN   CMP R8,&$390
1442     U>= UNTIL
1443     BIT.B   #4,&$200
1444     ADDC    R11,R11
1445     MOV.B   &$200,&$208
1446     BIC.B   #4,&$20C
1447     SUB     #1,R10
1448 0<> WHILE
1449     ADD R9,R8
1450     BEGIN
1451         MOV &$390,R9
1452         CMP R8,R9
1453         U>= IF
1454         BIC #$30,&$380
1455         GOTO BW1
1456         THEN
1457         BIT.B #4,&$20C
1458     0<> UNTIL
1459 REPEAT
1460 BIC #$30,&$380
1461 RLAM    #1,R11
1462 MOV.B   R11,R9
1463 RRUM    #2,R9
1464 BIT     #$4000,R11
1465 0= IF   BIS #$40,R9
1466 THEN
1467 RRUM    #3,R11
1468 XOR     @R1,R11
1469 BIT     #$400,R11
1470 0= ?GOTO BW2
1471 XOR #$400,0(R1)
1472 SUB #4,R15
1473 MOV &BASE,2(R15)
1474 MOV #$10,&BASE
1475 MOV R14,0(R15)
1476 MOV R9,R14
1477 LO2HI
1478     ['] LCD_CLEAR IS CR
1479     ['] LCD_WrC  IS EMIT
1480     CR ." $" 2 U.R
1481     ['] CR >BODY IS CR
1482     ['] EMIT >BODY IS EMIT
1483 HI2LO
1484 MOV R14,&BASE
1485 MOV @R15+,R14
1486 GOTO BW3
1487 ENDASM
1488
1489
1490 ASM BACKGROUND
1491 MOV #SLEEP,R9
1492 ADD #4,R9
1493 MOV R9,R0
1494 ENDASM
1495
1496
1497 CODE START
1498     MOV #%1011010100,&$3C0
1499     MOV #1,&$3E0
1500     MOV #19,&$3D2
1501     MOV #%01100000,&$3C6
1502     MOV #10,&$3D6
1503     BIS.B #$20,&$204
1504     BIS.B #$20,&$20A
1505     BIS.B #7,&$245
1506     BIC.B #7,&$247
1507     BIS.B #$0F,&$224
1508     BIC.B #$0F,&$226
1509     BIS.B #4,&$20A
1510     BIC.B #4,&$20C
1511     MOV #RC5_INT,&$FFDE
1512     MOV #%0100010100,&$340
1513     MOV ##1638,&$352
1514     MOV #%10000,&$342
1515     MOV #WDT_INT,&$FFEA
1516
1517     MOV #SLEEP,R9
1518     MOV #BACKGROUND,2(R9)
1519
1520 LO2HI
1521
1522     $03E8 20_US
1523     $03 TOP_LCD
1524     $CD 20_US
1525     $03 TOP_LCD
1526     $5 20_US
1527     $03 TOP_LCD
1528     $2 20_US
1529     $02 TOP_LCD
1530     $2 20_US
1531     $28 LCD_WRF
1532     $08 LCD_WRF
1533     LCD_Clear
1534     $06 LCD_WRF
1535     $0C LCD_WRF
1536     LCD_Clear
1537     ['] LCD_HOME IS CR
1538     ['] LCD_WRC  IS EMIT
1539     CR ." I love you"   
1540     ['] CR >BODY IS CR
1541     ['] EMIT >BODY IS EMIT
1542     ." RC5toLCD is running. Type STOP to quit"
1543     LIT RECURSE IS WARM
1544     ABORT
1545 ;
1546
1547
1548 CODE STOP
1549     MOV #SLEEP,R9
1550     ADD #4,R9
1551     MOV R9,-2(R9)
1552
1553 COLON
1554     ['] WARM >BODY IS WARM
1555
1556     COLD
1557 ;
1558
1559
1560
1561             ; downloading RC5toLCD.4th is done
1562 RST_HERE    ; this app is protected against <reset>
1563
1564 [THEN]
1565
1566
1567
1568
1569
1570 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
1571
1572 [DEFINED] ASM [IF]
1573
1574 MARKER {RC5TOLCD}
1575
1576 [UNDEFINED] MAX [IF]
1577
1578 CODE MAX
1579     CMP @R15,R14
1580     S<  ?GOTO FW1
1581 BW1 ADD #2,R15
1582     MOV @R13+,R0
1583 ENDCODE
1584
1585
1586 CODE MIN
1587     CMP @R15,R14
1588     S<  ?GOTO BW1
1589 FW1 MOV @R15+,R14
1590     MOV @R13+,R0
1591 ENDCODE
1592
1593 [THEN]
1594
1595
1596 [UNDEFINED] U.R [IF]
1597 : U.R
1598   >R  <# 0 # #S #>  
1599   R> OVER - 0 MAX SPACES TYPE
1600 ;
1601 [THEN]
1602
1603
1604
1605 CODE 20_US
1606 BEGIN
1607     BEGIN
1608         BIT #1,&$3C0
1609     0<> UNTIL
1610     BIC #1,&$3C0
1611     SUB #1,R14
1612 U< UNTIL
1613 MOV @R15+,R14
1614 MOV @R13+,R0
1615 ENDCODE
1616
1617
1618 CODE TOP_LCD
1619     BIS.B #4,&$243
1620     BIT.B #1,&$241
1621 0= IF
1622     AND.B #$0F,R14
1623     MOV.B R14,&$222
1624     BIC.B #4,&$243
1625     MOV @R15+,R14
1626     MOV @R13+,R0
1627 THEN
1628     SUB #2,R15
1629     MOV R14,0(R15)
1630     BIC.B #4,&$243
1631     MOV.B &$220,R14
1632     AND.B #$0F,R14
1633     MOV @R13+,R0
1634 ENDCODE
1635
1636
1637 CODE LCD_W
1638     SUB #2,R15
1639     MOV R14,0(R15)
1640     RRUM #4,R14
1641     BIC.B #1,&$243
1642     BIS.B #$0F,&$224
1643 COLON
1644     TOP_LCD 2 20_US
1645     TOP_LCD 2 20_US 
1646 ;
1647
1648
1649 CODE LCD_WrC
1650     BIS.B #2,&$243
1651     JMP LCD_W 
1652 ENDCODE
1653
1654
1655 CODE LCD_WrF
1656     BIC.B #2,&$243
1657     JMP LCD_W 
1658 ENDCODE
1659
1660
1661 : LCD_Clear 
1662     $01 LCD_WrF 100 20_us
1663 ;
1664
1665
1666 : LCD_Home 
1667     $02 LCD_WrF 100 20_us 
1668 ;
1669
1670
1671 [UNDEFINED] OR [IF]
1672
1673 CODE OR
1674 BIS @R15+,R14
1675 MOV @R13+,R0
1676 ENDCODE
1677
1678
1679 [THEN]
1680
1681 : LCD_Entry_set     $04 OR LCD_WrF ;
1682
1683 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
1684
1685 : LCD_DSP_Shift     $10 OR LCD_WrF ;
1686
1687 : LCD_Fn_Set        $20 OR LCD_WrF ;
1688
1689 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
1690
1691 : LCD_Goto          $80 OR LCD_WrF ;
1692
1693 CODE LCD_R
1694     BIC.B #$0F,&$224
1695     BIS.B #1,&$243
1696 COLON
1697     TOP_LCD 2 20_us
1698     TOP_LCD 2 20_us
1699 HI2LO
1700     RLAM #4,0(R15)
1701     ADD.B @R15+,R14
1702     MOV @R1+,R13
1703     MOV @R13+,R0
1704 ENDCODE
1705
1706
1707 CODE LCD_RdS
1708     BIC.B #2,&$243
1709     JMP LCD_R
1710 ENDCODE
1711
1712
1713 CODE LCD_RdC
1714     BIS.B #2,&$243
1715     JMP LCD_R
1716 ENDCODE
1717
1718
1719
1720 ASM WDT_INT
1721 BIT.B #$20,&$240
1722 0= IF
1723     CMP #19,&$3D6
1724     U< IF
1725         ADD #1,&$3D6
1726     THEN
1727 ELSE
1728     BIT.B #$40,&$240
1729     0= IF
1730         CMP #3,&$3D6
1731         U>= IF
1732            SUB #1,&$3D6
1733         THEN
1734     THEN
1735 THEN
1736 BW1
1737 BW2
1738 BW3
1739 BIC #$78,0(R1)
1740 RETI
1741 ENDASM
1742
1743
1744 ASM RC5_INT
1745   MOV #1,&$3A0
1746 MOV #1778,R9
1747 MOV #14,R10
1748 BEGIN
1749 MOV #%1011100100,&$380
1750     RRUM    #1,R9
1751     MOV     R9,R8
1752     RRUM    #1,R8
1753     ADD     R9,R8
1754     BEGIN   CMP R8,&$390
1755     U>= UNTIL
1756     BIT.B   #4,&$200
1757     ADDC    R11,R11
1758     MOV.B   &$200,&$208
1759     BIC.B   #4,&$20C
1760     SUB     #1,R10
1761 0<> WHILE
1762     ADD R9,R8
1763     BEGIN
1764         MOV &$390,R9
1765         CMP R8,R9
1766         U>= IF
1767         BIC #$30,&$380
1768         GOTO BW1
1769         THEN
1770         BIT.B #4,&$20C
1771     0<> UNTIL
1772 REPEAT
1773 BIC #$30,&$380
1774 RLAM    #1,R11
1775 MOV.B   R11,R9
1776 RRUM    #2,R9
1777 BIT     #$4000,R11
1778 0= IF   BIS #$40,R9
1779 THEN
1780 RRUM    #3,R11
1781 XOR     @R1,R11
1782 BIT     #$400,R11
1783 0= ?GOTO BW2
1784 XOR #$400,0(R1)
1785 SUB #4,R15
1786 MOV &BASE,2(R15)
1787 MOV #$10,&BASE
1788 MOV R14,0(R15)
1789 MOV R9,R14
1790 LO2HI
1791     ['] LCD_CLEAR IS CR
1792     ['] LCD_WrC  IS EMIT
1793     CR ." $" 2 U.R
1794     ['] CR >BODY IS CR
1795     ['] EMIT >BODY IS EMIT
1796 HI2LO
1797 MOV R14,&BASE
1798 MOV @R15+,R14
1799 GOTO BW3
1800 ENDASM
1801
1802
1803 ASM BACKGROUND
1804 MOV #SLEEP,R9
1805 ADD #4,R9
1806 MOV R9,R0
1807 ENDASM
1808
1809
1810 CODE START
1811     MOV #%1011010100,&$3C0
1812     MOV #1,&$3E0
1813     MOV #19,&$3D2
1814     MOV #%01100000,&$3C6
1815     MOV #10,&$3D6
1816     BIS.B #$20,&$204
1817     BIS.B #$20,&$20A
1818     BIS.B #7,&$245
1819     BIC.B #7,&$247
1820     BIS.B #$0F,&$224
1821     BIC.B #$0F,&$226
1822     BIS.B #4,&$20A
1823     BIC.B #4,&$20C
1824     MOV #RC5_INT,&$FFDE
1825     MOV #%0100010100,&$340
1826     MOV ##1638,&$352
1827     MOV #%10000,&$342
1828     MOV #WDT_INT,&$FFEA
1829
1830     MOV #SLEEP,R9
1831     MOV #BACKGROUND,2(R9)
1832
1833 LO2HI
1834
1835     $03E8 20_US
1836     $03 TOP_LCD
1837     $CD 20_US
1838     $03 TOP_LCD
1839     $5 20_US
1840     $03 TOP_LCD
1841     $2 20_US
1842     $02 TOP_LCD
1843     $2 20_US
1844     $28 LCD_WRF
1845     $08 LCD_WRF
1846     LCD_Clear
1847     $06 LCD_WRF
1848     $0C LCD_WRF
1849     LCD_Clear
1850     ['] LCD_HOME IS CR
1851     ['] LCD_WRC  IS EMIT
1852     CR ." I love you"   
1853     ['] CR >BODY IS CR
1854     ['] EMIT >BODY IS EMIT
1855     ." RC5toLCD is running. Type STOP to quit"
1856     LIT RECURSE IS WARM
1857     ABORT
1858 ;
1859
1860
1861 CODE STOP
1862     MOV #SLEEP,R9
1863     ADD #4,R9
1864     MOV R9,-2(R9)
1865
1866 COLON
1867     ['] WARM >BODY IS WARM
1868
1869     COLD
1870 ;
1871
1872
1873
1874             ; downloading RC5toLCD.4th is done
1875 RST_HERE    ; this app is protected against <reset>
1876
1877 [THEN]
1878
1879
1880
1881
1882
1883 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
1884
1885 [DEFINED] ASM [IF]
1886
1887 MARKER {RC5TOLCD}
1888
1889 [UNDEFINED] MAX [IF]
1890
1891 CODE MAX
1892     CMP @R15,R14
1893     S<  ?GOTO FW1
1894 BW1 ADD #2,R15
1895     MOV @R13+,R0
1896 ENDCODE
1897
1898
1899 CODE MIN
1900     CMP @R15,R14
1901     S<  ?GOTO BW1
1902 FW1 MOV @R15+,R14
1903     MOV @R13+,R0
1904 ENDCODE
1905
1906 [THEN]
1907
1908
1909 [UNDEFINED] U.R [IF]
1910 : U.R
1911   >R  <# 0 # #S #>  
1912   R> OVER - 0 MAX SPACES TYPE
1913 ;
1914 [THEN]
1915
1916
1917
1918 CODE 20_US
1919 BEGIN
1920     BEGIN
1921         BIT #1,&$3C0
1922     0<> UNTIL
1923     BIC #1,&$3C0
1924     SUB #1,R14
1925 U< UNTIL
1926 MOV @R15+,R14
1927 MOV @R13+,R0
1928 ENDCODE
1929
1930
1931 CODE TOP_LCD
1932     BIS.B #4,&$243
1933     BIT.B #1,&$241
1934 0= IF
1935     AND.B #$0F,R14
1936     MOV.B R14,&$222
1937     BIC.B #4,&$243
1938     MOV @R15+,R14
1939     MOV @R13+,R0
1940 THEN
1941     SUB #2,R15
1942     MOV R14,0(R15)
1943     BIC.B #4,&$243
1944     MOV.B &$220,R14
1945     AND.B #$0F,R14
1946     MOV @R13+,R0
1947 ENDCODE
1948
1949
1950 CODE LCD_W
1951     SUB #2,R15
1952     MOV R14,0(R15)
1953     RRUM #4,R14
1954     BIC.B #1,&$243
1955     BIS.B #$0F,&$224
1956 COLON
1957     TOP_LCD 2 20_US
1958     TOP_LCD 2 20_US 
1959 ;
1960
1961
1962 CODE LCD_WrC
1963     BIS.B #2,&$243
1964     JMP LCD_W 
1965 ENDCODE
1966
1967
1968 CODE LCD_WrF
1969     BIC.B #2,&$243
1970     JMP LCD_W 
1971 ENDCODE
1972
1973
1974 : LCD_Clear 
1975     $01 LCD_WrF 100 20_us
1976 ;
1977
1978
1979 : LCD_Home 
1980     $02 LCD_WrF 100 20_us 
1981 ;
1982
1983
1984 [UNDEFINED] OR [IF]
1985
1986 CODE OR
1987 BIS @R15+,R14
1988 MOV @R13+,R0
1989 ENDCODE
1990
1991
1992 [THEN]
1993
1994 : LCD_Entry_set     $04 OR LCD_WrF ;
1995
1996 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
1997
1998 : LCD_DSP_Shift     $10 OR LCD_WrF ;
1999
2000 : LCD_Fn_Set        $20 OR LCD_WrF ;
2001
2002 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
2003
2004 : LCD_Goto          $80 OR LCD_WrF ;
2005
2006 CODE LCD_R
2007     BIC.B #$0F,&$224
2008     BIS.B #1,&$243
2009 COLON
2010     TOP_LCD 2 20_us
2011     TOP_LCD 2 20_us
2012 HI2LO
2013     RLAM #4,0(R15)
2014     ADD.B @R15+,R14
2015     MOV @R1+,R13
2016     MOV @R13+,R0
2017 ENDCODE
2018
2019
2020 CODE LCD_RdS
2021     BIC.B #2,&$243
2022     JMP LCD_R
2023 ENDCODE
2024
2025
2026 CODE LCD_RdC
2027     BIS.B #2,&$243
2028     JMP LCD_R
2029 ENDCODE
2030
2031
2032
2033 ASM WDT_INT
2034 BIT.B #$20,&$240
2035 0= IF
2036     CMP #19,&$3D6
2037     U< IF
2038         ADD #1,&$3D6
2039     THEN
2040 ELSE
2041     BIT.B #$40,&$240
2042     0= IF
2043         CMP #3,&$3D6
2044         U>= IF
2045            SUB #1,&$3D6
2046         THEN
2047     THEN
2048 THEN
2049 BW1
2050 BW2
2051 BW3
2052 BIC #$78,0(R1)
2053 RETI
2054 ENDASM
2055
2056
2057 ASM RC5_INT
2058   MOV #1,&$3A0
2059 MOV #1778,R9
2060 MOV #14,R10
2061 BEGIN
2062 MOV #%1011100100,&$380
2063     RRUM    #1,R9
2064     MOV     R9,R8
2065     RRUM    #1,R8
2066     ADD     R9,R8
2067     BEGIN   CMP R8,&$390
2068     U>= UNTIL
2069     BIT.B   #4,&$200
2070     ADDC    R11,R11
2071     MOV.B   &$200,&$208
2072     BIC.B   #4,&$20C
2073     SUB     #1,R10
2074 0<> WHILE
2075     ADD R9,R8
2076     BEGIN
2077         MOV &$390,R9
2078         CMP R8,R9
2079         U>= IF
2080         BIC #$30,&$380
2081         GOTO BW1
2082         THEN
2083         BIT.B #4,&$20C
2084     0<> UNTIL
2085 REPEAT
2086 BIC #$30,&$380
2087 RLAM    #1,R11
2088 MOV.B   R11,R9
2089 RRUM    #2,R9
2090 BIT     #$4000,R11
2091 0= IF   BIS #$40,R9
2092 THEN
2093 RRUM    #3,R11
2094 XOR     @R1,R11
2095 BIT     #$400,R11
2096 0= ?GOTO BW2
2097 XOR #$400,0(R1)
2098 SUB #4,R15
2099 MOV &BASE,2(R15)
2100 MOV #$10,&BASE
2101 MOV R14,0(R15)
2102 MOV R9,R14
2103 LO2HI
2104     ['] LCD_CLEAR IS CR
2105     ['] LCD_WrC  IS EMIT
2106     CR ." $" 2 U.R
2107     ['] CR >BODY IS CR
2108     ['] EMIT >BODY IS EMIT
2109 HI2LO
2110 MOV R14,&BASE
2111 MOV @R15+,R14
2112 GOTO BW3
2113 ENDASM
2114
2115
2116 ASM BACKGROUND
2117 MOV #SLEEP,R9
2118 ADD #4,R9
2119 MOV R9,R0
2120 ENDASM
2121
2122
2123 CODE START
2124     MOV #%1011010100,&$3C0
2125     MOV #1,&$3E0
2126     MOV #19,&$3D2
2127     MOV #%01100000,&$3C6
2128     MOV #10,&$3D6
2129     BIS.B #$20,&$204
2130     BIS.B #$20,&$20A
2131     BIS.B #7,&$245
2132     BIC.B #7,&$247
2133     BIS.B #$0F,&$224
2134     BIC.B #$0F,&$226
2135     BIS.B #4,&$20A
2136     BIC.B #4,&$20C
2137     MOV #RC5_INT,&$FFDE
2138     MOV #%0100010100,&$340
2139     MOV ##1638,&$352
2140     MOV #%10000,&$342
2141     MOV #WDT_INT,&$FFEA
2142
2143     MOV #SLEEP,R9
2144     MOV #BACKGROUND,2(R9)
2145
2146 LO2HI
2147
2148     $03E8 20_US
2149     $03 TOP_LCD
2150     $CD 20_US
2151     $03 TOP_LCD
2152     $5 20_US
2153     $03 TOP_LCD
2154     $2 20_US
2155     $02 TOP_LCD
2156     $2 20_US
2157     $28 LCD_WRF
2158     $08 LCD_WRF
2159     LCD_Clear
2160     $06 LCD_WRF
2161     $0C LCD_WRF
2162     LCD_Clear
2163     ['] LCD_HOME IS CR
2164     ['] LCD_WRC  IS EMIT
2165     CR ." I love you"   
2166     ['] CR >BODY IS CR
2167     ['] EMIT >BODY IS EMIT
2168     ." RC5toLCD is running. Type STOP to quit"
2169     LIT RECURSE IS WARM
2170     ABORT
2171 ;
2172
2173
2174 CODE STOP
2175     MOV #SLEEP,R9
2176     ADD #4,R9
2177     MOV R9,-2(R9)
2178
2179 COLON
2180     ['] WARM >BODY IS WARM
2181
2182     COLD
2183 ;
2184
2185
2186
2187             ; downloading RC5toLCD.4th is done
2188 RST_HERE    ; this app is protected against <reset>
2189
2190 [THEN]
2191
2192
2193
2194
2195
2196 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
2197
2198 [DEFINED] ASM [IF]
2199
2200 MARKER {RC5TOLCD}
2201
2202 [UNDEFINED] MAX [IF]
2203
2204 CODE MAX
2205     CMP @R15,R14
2206     S<  ?GOTO FW1
2207 BW1 ADD #2,R15
2208     MOV @R13+,R0
2209 ENDCODE
2210
2211
2212 CODE MIN
2213     CMP @R15,R14
2214     S<  ?GOTO BW1
2215 FW1 MOV @R15+,R14
2216     MOV @R13+,R0
2217 ENDCODE
2218
2219 [THEN]
2220
2221
2222 [UNDEFINED] U.R [IF]
2223 : U.R
2224   >R  <# 0 # #S #>  
2225   R> OVER - 0 MAX SPACES TYPE
2226 ;
2227 [THEN]
2228
2229
2230
2231 CODE 20_US
2232 BEGIN
2233     BEGIN
2234         BIT #1,&$3C0
2235     0<> UNTIL
2236     BIC #1,&$3C0
2237     SUB #1,R14
2238 U< UNTIL
2239 MOV @R15+,R14
2240 MOV @R13+,R0
2241 ENDCODE
2242
2243
2244 CODE TOP_LCD
2245     BIS.B #4,&$243
2246     BIT.B #1,&$241
2247 0= IF
2248     AND.B #$0F,R14
2249     MOV.B R14,&$222
2250     BIC.B #4,&$243
2251     MOV @R15+,R14
2252     MOV @R13+,R0
2253 THEN
2254     SUB #2,R15
2255     MOV R14,0(R15)
2256     BIC.B #4,&$243
2257     MOV.B &$220,R14
2258     AND.B #$0F,R14
2259     MOV @R13+,R0
2260 ENDCODE
2261
2262
2263 CODE LCD_W
2264     SUB #2,R15
2265     MOV R14,0(R15)
2266     RRUM #4,R14
2267     BIC.B #1,&$243
2268     BIS.B #$0F,&$224
2269 COLON
2270     TOP_LCD 2 20_US
2271     TOP_LCD 2 20_US 
2272 ;
2273
2274
2275 CODE LCD_WrC
2276     BIS.B #2,&$243
2277     JMP LCD_W 
2278 ENDCODE
2279
2280
2281 CODE LCD_WrF
2282     BIC.B #2,&$243
2283     JMP LCD_W 
2284 ENDCODE
2285
2286
2287 : LCD_Clear 
2288     $01 LCD_WrF 100 20_us
2289 ;
2290
2291
2292 : LCD_Home 
2293     $02 LCD_WrF 100 20_us 
2294 ;
2295
2296
2297 [UNDEFINED] OR [IF]
2298
2299 CODE OR
2300 BIS @R15+,R14
2301 MOV @R13+,R0
2302 ENDCODE
2303
2304
2305 [THEN]
2306
2307 : LCD_Entry_set     $04 OR LCD_WrF ;
2308
2309 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
2310
2311 : LCD_DSP_Shift     $10 OR LCD_WrF ;
2312
2313 : LCD_Fn_Set        $20 OR LCD_WrF ;
2314
2315 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
2316
2317 : LCD_Goto          $80 OR LCD_WrF ;
2318
2319 CODE LCD_R
2320     BIC.B #$0F,&$224
2321     BIS.B #1,&$243
2322 COLON
2323     TOP_LCD 2 20_us
2324     TOP_LCD 2 20_us
2325 HI2LO
2326     RLAM #4,0(R15)
2327     ADD.B @R15+,R14
2328     MOV @R1+,R13
2329     MOV @R13+,R0
2330 ENDCODE
2331
2332
2333 CODE LCD_RdS
2334     BIC.B #2,&$243
2335     JMP LCD_R
2336 ENDCODE
2337
2338
2339 CODE LCD_RdC
2340     BIS.B #2,&$243
2341     JMP LCD_R
2342 ENDCODE
2343
2344
2345
2346 ASM WDT_INT
2347 BIT.B #$20,&$240
2348 0= IF
2349     CMP #19,&$3D6
2350     U< IF
2351         ADD #1,&$3D6
2352     THEN
2353 ELSE
2354     BIT.B #$40,&$240
2355     0= IF
2356         CMP #3,&$3D6
2357         U>= IF
2358            SUB #1,&$3D6
2359         THEN
2360     THEN
2361 THEN
2362 BW1
2363 BW2
2364 BW3
2365 BIC #$78,0(R1)
2366 RETI
2367 ENDASM
2368
2369
2370 ASM RC5_INT
2371   MOV #1,&$3A0
2372 MOV #1778,R9
2373 MOV #14,R10
2374 BEGIN
2375 MOV #%1011100100,&$380
2376     RRUM    #1,R9
2377     MOV     R9,R8
2378     RRUM    #1,R8
2379     ADD     R9,R8
2380     BEGIN   CMP R8,&$390
2381     U>= UNTIL
2382     BIT.B   #4,&$200
2383     ADDC    R11,R11
2384     MOV.B   &$200,&$208
2385     BIC.B   #4,&$20C
2386     SUB     #1,R10
2387 0<> WHILE
2388     ADD R9,R8
2389     BEGIN
2390         MOV &$390,R9
2391         CMP R8,R9
2392         U>= IF
2393         BIC #$30,&$380
2394         GOTO BW1
2395         THEN
2396         BIT.B #4,&$20C
2397     0<> UNTIL
2398 REPEAT
2399 BIC #$30,&$380
2400 RLAM    #1,R11
2401 MOV.B   R11,R9
2402 RRUM    #2,R9
2403 BIT     #$4000,R11
2404 0= IF   BIS #$40,R9
2405 THEN
2406 RRUM    #3,R11
2407 XOR     @R1,R11
2408 BIT     #$400,R11
2409 0= ?GOTO BW2
2410 XOR #$400,0(R1)
2411 SUB #4,R15
2412 MOV &BASE,2(R15)
2413 MOV #$10,&BASE
2414 MOV R14,0(R15)
2415 MOV R9,R14
2416 LO2HI
2417     ['] LCD_CLEAR IS CR
2418     ['] LCD_WrC  IS EMIT
2419     CR ." $" 2 U.R
2420     ['] CR >BODY IS CR
2421     ['] EMIT >BODY IS EMIT
2422 HI2LO
2423 MOV R14,&BASE
2424 MOV @R15+,R14
2425 GOTO BW3
2426 ENDASM
2427
2428
2429 ASM BACKGROUND
2430 MOV #SLEEP,R9
2431 ADD #4,R9
2432 MOV R9,R0
2433 ENDASM
2434
2435
2436 CODE START
2437     MOV #%1011010100,&$3C0
2438     MOV #1,&$3E0
2439     MOV #19,&$3D2
2440     MOV #%01100000,&$3C6
2441     MOV #10,&$3D6
2442     BIS.B #$20,&$204
2443     BIS.B #$20,&$20A
2444     BIS.B #7,&$245
2445     BIC.B #7,&$247
2446     BIS.B #$0F,&$224
2447     BIC.B #$0F,&$226
2448     BIS.B #4,&$20A
2449     BIC.B #4,&$20C
2450     MOV #RC5_INT,&$FFDE
2451     MOV #%0100010100,&$340
2452     MOV ##1638,&$352
2453     MOV #%10000,&$342
2454     MOV #WDT_INT,&$FFEA
2455
2456     MOV #SLEEP,R9
2457     MOV #BACKGROUND,2(R9)
2458
2459 LO2HI
2460
2461     $03E8 20_US
2462     $03 TOP_LCD
2463     $CD 20_US
2464     $03 TOP_LCD
2465     $5 20_US
2466     $03 TOP_LCD
2467     $2 20_US
2468     $02 TOP_LCD
2469     $2 20_US
2470     $28 LCD_WRF
2471     $08 LCD_WRF
2472     LCD_Clear
2473     $06 LCD_WRF
2474     $0C LCD_WRF
2475     LCD_Clear
2476     ['] LCD_HOME IS CR
2477     ['] LCD_WRC  IS EMIT
2478     CR ." I love you"   
2479     ['] CR >BODY IS CR
2480     ['] EMIT >BODY IS EMIT
2481     ." RC5toLCD is running. Type STOP to quit"
2482     LIT RECURSE IS WARM
2483     ABORT
2484 ;
2485
2486
2487 CODE STOP
2488     MOV #SLEEP,R9
2489     ADD #4,R9
2490     MOV R9,-2(R9)
2491
2492 COLON
2493     ['] WARM >BODY IS WARM
2494
2495     COLD
2496 ;
2497
2498
2499
2500             ; downloading RC5toLCD.4th is done
2501 RST_HERE    ; this app is protected against <reset>
2502
2503 [THEN]
2504
2505
2506
2507
2508
2509 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
2510
2511 [DEFINED] ASM [IF]
2512
2513 MARKER {RC5TOLCD}
2514
2515 [UNDEFINED] MAX [IF]
2516
2517 CODE MAX
2518     CMP @R15,R14
2519     S<  ?GOTO FW1
2520 BW1 ADD #2,R15
2521     MOV @R13+,R0
2522 ENDCODE
2523
2524
2525 CODE MIN
2526     CMP @R15,R14
2527     S<  ?GOTO BW1
2528 FW1 MOV @R15+,R14
2529     MOV @R13+,R0
2530 ENDCODE
2531
2532 [THEN]
2533
2534
2535 [UNDEFINED] U.R [IF]
2536 : U.R
2537   >R  <# 0 # #S #>  
2538   R> OVER - 0 MAX SPACES TYPE
2539 ;
2540 [THEN]
2541
2542
2543
2544 CODE 20_US
2545 BEGIN
2546     BEGIN
2547         BIT #1,&$3C0
2548     0<> UNTIL
2549     BIC #1,&$3C0
2550     SUB #1,R14
2551 U< UNTIL
2552 MOV @R15+,R14
2553 MOV @R13+,R0
2554 ENDCODE
2555
2556
2557 CODE TOP_LCD
2558     BIS.B #4,&$243
2559     BIT.B #1,&$241
2560 0= IF
2561     AND.B #$0F,R14
2562     MOV.B R14,&$222
2563     BIC.B #4,&$243
2564     MOV @R15+,R14
2565     MOV @R13+,R0
2566 THEN
2567     SUB #2,R15
2568     MOV R14,0(R15)
2569     BIC.B #4,&$243
2570     MOV.B &$220,R14
2571     AND.B #$0F,R14
2572     MOV @R13+,R0
2573 ENDCODE
2574
2575
2576 CODE LCD_W
2577     SUB #2,R15
2578     MOV R14,0(R15)
2579     RRUM #4,R14
2580     BIC.B #1,&$243
2581     BIS.B #$0F,&$224
2582 COLON
2583     TOP_LCD 2 20_US
2584     TOP_LCD 2 20_US 
2585 ;
2586
2587
2588 CODE LCD_WrC
2589     BIS.B #2,&$243
2590     JMP LCD_W 
2591 ENDCODE
2592
2593
2594 CODE LCD_WrF
2595     BIC.B #2,&$243
2596     JMP LCD_W 
2597 ENDCODE
2598
2599
2600 : LCD_Clear 
2601     $01 LCD_WrF 100 20_us
2602 ;
2603
2604
2605 : LCD_Home 
2606     $02 LCD_WrF 100 20_us 
2607 ;
2608
2609
2610 [UNDEFINED] OR [IF]
2611
2612 CODE OR
2613 BIS @R15+,R14
2614 MOV @R13+,R0
2615 ENDCODE
2616
2617
2618 [THEN]
2619
2620 : LCD_Entry_set     $04 OR LCD_WrF ;
2621
2622 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
2623
2624 : LCD_DSP_Shift     $10 OR LCD_WrF ;
2625
2626 : LCD_Fn_Set        $20 OR LCD_WrF ;
2627
2628 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
2629
2630 : LCD_Goto          $80 OR LCD_WrF ;
2631
2632 CODE LCD_R
2633     BIC.B #$0F,&$224
2634     BIS.B #1,&$243
2635 COLON
2636     TOP_LCD 2 20_us
2637     TOP_LCD 2 20_us
2638 HI2LO
2639     RLAM #4,0(R15)
2640     ADD.B @R15+,R14
2641     MOV @R1+,R13
2642     MOV @R13+,R0
2643 ENDCODE
2644
2645
2646 CODE LCD_RdS
2647     BIC.B #2,&$243
2648     JMP LCD_R
2649 ENDCODE
2650
2651
2652 CODE LCD_RdC
2653     BIS.B #2,&$243
2654     JMP LCD_R
2655 ENDCODE
2656
2657
2658
2659 ASM WDT_INT
2660 BIT.B #$20,&$240
2661 0= IF
2662     CMP #19,&$3D6
2663     U< IF
2664         ADD #1,&$3D6
2665     THEN
2666 ELSE
2667     BIT.B #$40,&$240
2668     0= IF
2669         CMP #3,&$3D6
2670         U>= IF
2671            SUB #1,&$3D6
2672         THEN
2673     THEN
2674 THEN
2675 BW1
2676 BW2
2677 BW3
2678 BIC #$78,0(R1)
2679 RETI
2680 ENDASM
2681
2682
2683 ASM RC5_INT
2684   MOV #1,&$3A0
2685 MOV #1778,R9
2686 MOV #14,R10
2687 BEGIN
2688 MOV #%1011100100,&$380
2689     RRUM    #1,R9
2690     MOV     R9,R8
2691     RRUM    #1,R8
2692     ADD     R9,R8
2693     BEGIN   CMP R8,&$390
2694     U>= UNTIL
2695     BIT.B   #4,&$200
2696     ADDC    R11,R11
2697     MOV.B   &$200,&$208
2698     BIC.B   #4,&$20C
2699     SUB     #1,R10
2700 0<> WHILE
2701     ADD R9,R8
2702     BEGIN
2703         MOV &$390,R9
2704         CMP R8,R9
2705         U>= IF
2706         BIC #$30,&$380
2707         GOTO BW1
2708         THEN
2709         BIT.B #4,&$20C
2710     0<> UNTIL
2711 REPEAT
2712 BIC #$30,&$380
2713 RLAM    #1,R11
2714 MOV.B   R11,R9
2715 RRUM    #2,R9
2716 BIT     #$4000,R11
2717 0= IF   BIS #$40,R9
2718 THEN
2719 RRUM    #3,R11
2720 XOR     @R1,R11
2721 BIT     #$400,R11
2722 0= ?GOTO BW2
2723 XOR #$400,0(R1)
2724 SUB #4,R15
2725 MOV &BASE,2(R15)
2726 MOV #$10,&BASE
2727 MOV R14,0(R15)
2728 MOV R9,R14
2729 LO2HI
2730     ['] LCD_CLEAR IS CR
2731     ['] LCD_WrC  IS EMIT
2732     CR ." $" 2 U.R
2733     ['] CR >BODY IS CR
2734     ['] EMIT >BODY IS EMIT
2735 HI2LO
2736 MOV R14,&BASE
2737 MOV @R15+,R14
2738 GOTO BW3
2739 ENDASM
2740
2741
2742 ASM BACKGROUND
2743 MOV #SLEEP,R9
2744 ADD #4,R9
2745 MOV R9,R0
2746 ENDASM
2747
2748
2749 CODE START
2750     MOV #%1011010100,&$3C0
2751     MOV #1,&$3E0
2752     MOV #19,&$3D2
2753     MOV #%01100000,&$3C6
2754     MOV #10,&$3D6
2755     BIS.B #$20,&$204
2756     BIS.B #$20,&$20A
2757     BIS.B #7,&$245
2758     BIC.B #7,&$247
2759     BIS.B #$0F,&$224
2760     BIC.B #$0F,&$226
2761     BIS.B #4,&$20A
2762     BIC.B #4,&$20C
2763     MOV #RC5_INT,&$FFDE
2764     MOV #%0100010100,&$340
2765     MOV ##1638,&$352
2766     MOV #%10000,&$342
2767     MOV #WDT_INT,&$FFEA
2768
2769     MOV #SLEEP,R9
2770     MOV #BACKGROUND,2(R9)
2771
2772 LO2HI
2773
2774     $03E8 20_US
2775     $03 TOP_LCD
2776     $CD 20_US
2777     $03 TOP_LCD
2778     $5 20_US
2779     $03 TOP_LCD
2780     $2 20_US
2781     $02 TOP_LCD
2782     $2 20_US
2783     $28 LCD_WRF
2784     $08 LCD_WRF
2785     LCD_Clear
2786     $06 LCD_WRF
2787     $0C LCD_WRF
2788     LCD_Clear
2789     ['] LCD_HOME IS CR
2790     ['] LCD_WRC  IS EMIT
2791     CR ." I love you"   
2792     ['] CR >BODY IS CR
2793     ['] EMIT >BODY IS EMIT
2794     ." RC5toLCD is running. Type STOP to quit"
2795     LIT RECURSE IS WARM
2796     ABORT
2797 ;
2798
2799
2800 CODE STOP
2801     MOV #SLEEP,R9
2802     ADD #4,R9
2803     MOV R9,-2(R9)
2804
2805 COLON
2806     ['] WARM >BODY IS WARM
2807
2808     COLD
2809 ;
2810
2811
2812
2813             ; downloading RC5toLCD.4th is done
2814 RST_HERE    ; this app is protected against <reset>
2815
2816 [THEN]
2817
2818
2819
2820
2821
2822 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
2823
2824 [DEFINED] ASM [IF]
2825
2826 MARKER {RC5TOLCD}
2827
2828 [UNDEFINED] MAX [IF]
2829
2830 CODE MAX
2831     CMP @R15,R14
2832     S<  ?GOTO FW1
2833 BW1 ADD #2,R15
2834     MOV @R13+,R0
2835 ENDCODE
2836
2837
2838 CODE MIN
2839     CMP @R15,R14
2840     S<  ?GOTO BW1
2841 FW1 MOV @R15+,R14
2842     MOV @R13+,R0
2843 ENDCODE
2844
2845 [THEN]
2846
2847
2848 [UNDEFINED] U.R [IF]
2849 : U.R
2850   >R  <# 0 # #S #>  
2851   R> OVER - 0 MAX SPACES TYPE
2852 ;
2853 [THEN]
2854
2855
2856
2857 CODE 20_US
2858 BEGIN
2859     BEGIN
2860         BIT #1,&$3C0
2861     0<> UNTIL
2862     BIC #1,&$3C0
2863     SUB #1,R14
2864 U< UNTIL
2865 MOV @R15+,R14
2866 MOV @R13+,R0
2867 ENDCODE
2868
2869
2870 CODE TOP_LCD
2871     BIS.B #4,&$243
2872     BIT.B #1,&$241
2873 0= IF
2874     AND.B #$0F,R14
2875     MOV.B R14,&$222
2876     BIC.B #4,&$243
2877     MOV @R15+,R14
2878     MOV @R13+,R0
2879 THEN
2880     SUB #2,R15
2881     MOV R14,0(R15)
2882     BIC.B #4,&$243
2883     MOV.B &$220,R14
2884     AND.B #$0F,R14
2885     MOV @R13+,R0
2886 ENDCODE
2887
2888
2889 CODE LCD_W
2890     SUB #2,R15
2891     MOV R14,0(R15)
2892     RRUM #4,R14
2893     BIC.B #1,&$243
2894     BIS.B #$0F,&$224
2895 COLON
2896     TOP_LCD 2 20_US
2897     TOP_LCD 2 20_US 
2898 ;
2899
2900
2901 CODE LCD_WrC
2902     BIS.B #2,&$243
2903     JMP LCD_W 
2904 ENDCODE
2905
2906
2907 CODE LCD_WrF
2908     BIC.B #2,&$243
2909     JMP LCD_W 
2910 ENDCODE
2911
2912
2913 : LCD_Clear 
2914     $01 LCD_WrF 100 20_us
2915 ;
2916
2917
2918 : LCD_Home 
2919     $02 LCD_WrF 100 20_us 
2920 ;
2921
2922
2923 [UNDEFINED] OR [IF]
2924
2925 CODE OR
2926 BIS @R15+,R14
2927 MOV @R13+,R0
2928 ENDCODE
2929
2930
2931 [THEN]
2932
2933 : LCD_Entry_set     $04 OR LCD_WrF ;
2934
2935 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
2936
2937 : LCD_DSP_Shift     $10 OR LCD_WrF ;
2938
2939 : LCD_Fn_Set        $20 OR LCD_WrF ;
2940
2941 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
2942
2943 : LCD_Goto          $80 OR LCD_WrF ;
2944
2945 CODE LCD_R
2946     BIC.B #$0F,&$224
2947     BIS.B #1,&$243
2948 COLON
2949     TOP_LCD 2 20_us
2950     TOP_LCD 2 20_us
2951 HI2LO
2952     RLAM #4,0(R15)
2953     ADD.B @R15+,R14
2954     MOV @R1+,R13
2955     MOV @R13+,R0
2956 ENDCODE
2957
2958
2959 CODE LCD_RdS
2960     BIC.B #2,&$243
2961     JMP LCD_R
2962 ENDCODE
2963
2964
2965 CODE LCD_RdC
2966     BIS.B #2,&$243
2967     JMP LCD_R
2968 ENDCODE
2969
2970
2971
2972 ASM WDT_INT
2973 BIT.B #$20,&$240
2974 0= IF
2975     CMP #19,&$3D6
2976     U< IF
2977         ADD #1,&$3D6
2978     THEN
2979 ELSE
2980     BIT.B #$40,&$240
2981     0= IF
2982         CMP #3,&$3D6
2983         U>= IF
2984            SUB #1,&$3D6
2985         THEN
2986     THEN
2987 THEN
2988 BW1
2989 BW2
2990 BW3
2991 BIC #$78,0(R1)
2992 RETI
2993 ENDASM
2994
2995
2996 ASM RC5_INT
2997   MOV #1,&$3A0
2998 MOV #1778,R9
2999 MOV #14,R10
3000 BEGIN
3001 MOV #%1011100100,&$380
3002     RRUM    #1,R9
3003     MOV     R9,R8
3004     RRUM    #1,R8
3005     ADD     R9,R8
3006     BEGIN   CMP R8,&$390
3007     U>= UNTIL
3008     BIT.B   #4,&$200
3009     ADDC    R11,R11
3010     MOV.B   &$200,&$208
3011     BIC.B   #4,&$20C
3012     SUB     #1,R10
3013 0<> WHILE
3014     ADD R9,R8
3015     BEGIN
3016         MOV &$390,R9
3017         CMP R8,R9
3018         U>= IF
3019         BIC #$30,&$380
3020         GOTO BW1
3021         THEN
3022         BIT.B #4,&$20C
3023     0<> UNTIL
3024 REPEAT
3025 BIC #$30,&$380
3026 RLAM    #1,R11
3027 MOV.B   R11,R9
3028 RRUM    #2,R9
3029 BIT     #$4000,R11
3030 0= IF   BIS #$40,R9
3031 THEN
3032 RRUM    #3,R11
3033 XOR     @R1,R11
3034 BIT     #$400,R11
3035 0= ?GOTO BW2
3036 XOR #$400,0(R1)
3037 SUB #4,R15
3038 MOV &BASE,2(R15)
3039 MOV #$10,&BASE
3040 MOV R14,0(R15)
3041 MOV R9,R14
3042 LO2HI
3043     ['] LCD_CLEAR IS CR
3044     ['] LCD_WrC  IS EMIT
3045     CR ." $" 2 U.R
3046     ['] CR >BODY IS CR
3047     ['] EMIT >BODY IS EMIT
3048 HI2LO
3049 MOV R14,&BASE
3050 MOV @R15+,R14
3051 GOTO BW3
3052 ENDASM
3053
3054
3055 ASM BACKGROUND
3056 MOV #SLEEP,R9
3057 ADD #4,R9
3058 MOV R9,R0
3059 ENDASM
3060
3061
3062 CODE START
3063     MOV #%1011010100,&$3C0
3064     MOV #1,&$3E0
3065     MOV #19,&$3D2
3066     MOV #%01100000,&$3C6
3067     MOV #10,&$3D6
3068     BIS.B #$20,&$204
3069     BIS.B #$20,&$20A
3070     BIS.B #7,&$245
3071     BIC.B #7,&$247
3072     BIS.B #$0F,&$224
3073     BIC.B #$0F,&$226
3074     BIS.B #4,&$20A
3075     BIC.B #4,&$20C
3076     MOV #RC5_INT,&$FFDE
3077     MOV #%0100010100,&$340
3078     MOV ##1638,&$352
3079     MOV #%10000,&$342
3080     MOV #WDT_INT,&$FFEA
3081
3082     MOV #SLEEP,R9
3083     MOV #BACKGROUND,2(R9)
3084
3085 LO2HI
3086
3087     $03E8 20_US
3088     $03 TOP_LCD
3089     $CD 20_US
3090     $03 TOP_LCD
3091     $5 20_US
3092     $03 TOP_LCD
3093     $2 20_US
3094     $02 TOP_LCD
3095     $2 20_US
3096     $28 LCD_WRF
3097     $08 LCD_WRF
3098     LCD_Clear
3099     $06 LCD_WRF
3100     $0C LCD_WRF
3101     LCD_Clear
3102     ['] LCD_HOME IS CR
3103     ['] LCD_WRC  IS EMIT
3104     CR ." I love you"   
3105     ['] CR >BODY IS CR
3106     ['] EMIT >BODY IS EMIT
3107     ." RC5toLCD is running. Type STOP to quit"
3108     LIT RECURSE IS WARM
3109     ABORT
3110 ;
3111
3112
3113 CODE STOP
3114     MOV #SLEEP,R9
3115     ADD #4,R9
3116     MOV R9,-2(R9)
3117
3118 COLON
3119     ['] WARM >BODY IS WARM
3120
3121     COLD
3122 ;
3123
3124
3125
3126             ; downloading RC5toLCD.4th is done
3127 RST_HERE    ; this app is protected against <reset>
3128
3129 [THEN]
3130
3131
3132
3133
3134
3135 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
3136
3137 [DEFINED] ASM [IF]
3138
3139 MARKER {RC5TOLCD}
3140
3141 [UNDEFINED] MAX [IF]
3142
3143 CODE MAX
3144     CMP @R15,R14
3145     S<  ?GOTO FW1
3146 BW1 ADD #2,R15
3147     MOV @R13+,R0
3148 ENDCODE
3149
3150
3151 CODE MIN
3152     CMP @R15,R14
3153     S<  ?GOTO BW1
3154 FW1 MOV @R15+,R14
3155     MOV @R13+,R0
3156 ENDCODE
3157
3158 [THEN]
3159
3160
3161 [UNDEFINED] U.R [IF]
3162 : U.R
3163   >R  <# 0 # #S #>  
3164   R> OVER - 0 MAX SPACES TYPE
3165 ;
3166 [THEN]
3167
3168
3169
3170 CODE 20_US
3171 BEGIN
3172     BEGIN
3173         BIT #1,&$3C0
3174     0<> UNTIL
3175     BIC #1,&$3C0
3176     SUB #1,R14
3177 U< UNTIL
3178 MOV @R15+,R14
3179 MOV @R13+,R0
3180 ENDCODE
3181
3182
3183 CODE TOP_LCD
3184     BIS.B #4,&$243
3185     BIT.B #1,&$241
3186 0= IF
3187     AND.B #$0F,R14
3188     MOV.B R14,&$222
3189     BIC.B #4,&$243
3190     MOV @R15+,R14
3191     MOV @R13+,R0
3192 THEN
3193     SUB #2,R15
3194     MOV R14,0(R15)
3195     BIC.B #4,&$243
3196     MOV.B &$220,R14
3197     AND.B #$0F,R14
3198     MOV @R13+,R0
3199 ENDCODE
3200
3201
3202 CODE LCD_W
3203     SUB #2,R15
3204     MOV R14,0(R15)
3205     RRUM #4,R14
3206     BIC.B #1,&$243
3207     BIS.B #$0F,&$224
3208 COLON
3209     TOP_LCD 2 20_US
3210     TOP_LCD 2 20_US 
3211 ;
3212
3213
3214 CODE LCD_WrC
3215     BIS.B #2,&$243
3216     JMP LCD_W 
3217 ENDCODE
3218
3219
3220 CODE LCD_WrF
3221     BIC.B #2,&$243
3222     JMP LCD_W 
3223 ENDCODE
3224
3225
3226 : LCD_Clear 
3227     $01 LCD_WrF 100 20_us
3228 ;
3229
3230
3231 : LCD_Home 
3232     $02 LCD_WrF 100 20_us 
3233 ;
3234
3235
3236 [UNDEFINED] OR [IF]
3237
3238 CODE OR
3239 BIS @R15+,R14
3240 MOV @R13+,R0
3241 ENDCODE
3242
3243
3244 [THEN]
3245
3246 : LCD_Entry_set     $04 OR LCD_WrF ;
3247
3248 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
3249
3250 : LCD_DSP_Shift     $10 OR LCD_WrF ;
3251
3252 : LCD_Fn_Set        $20 OR LCD_WrF ;
3253
3254 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
3255
3256 : LCD_Goto          $80 OR LCD_WrF ;
3257
3258 CODE LCD_R
3259     BIC.B #$0F,&$224
3260     BIS.B #1,&$243
3261 COLON
3262     TOP_LCD 2 20_us
3263     TOP_LCD 2 20_us
3264 HI2LO
3265     RLAM #4,0(R15)
3266     ADD.B @R15+,R14
3267     MOV @R1+,R13
3268     MOV @R13+,R0
3269 ENDCODE
3270
3271
3272 CODE LCD_RdS
3273     BIC.B #2,&$243
3274     JMP LCD_R
3275 ENDCODE
3276
3277
3278 CODE LCD_RdC
3279     BIS.B #2,&$243
3280     JMP LCD_R
3281 ENDCODE
3282
3283
3284
3285 ASM WDT_INT
3286 BIT.B #$20,&$240
3287 0= IF
3288     CMP #19,&$3D6
3289     U< IF
3290         ADD #1,&$3D6
3291     THEN
3292 ELSE
3293     BIT.B #$40,&$240
3294     0= IF
3295         CMP #3,&$3D6
3296         U>= IF
3297            SUB #1,&$3D6
3298         THEN
3299     THEN
3300 THEN
3301 BW1
3302 BW2
3303 BW3
3304 BIC #$78,0(R1)
3305 RETI
3306 ENDASM
3307
3308
3309 ASM RC5_INT
3310   MOV #1,&$3A0
3311 MOV #1778,R9
3312 MOV #14,R10
3313 BEGIN
3314 MOV #%1011100100,&$380
3315     RRUM    #1,R9
3316     MOV     R9,R8
3317     RRUM    #1,R8
3318     ADD     R9,R8
3319     BEGIN   CMP R8,&$390
3320     U>= UNTIL
3321     BIT.B   #4,&$200
3322     ADDC    R11,R11
3323     MOV.B   &$200,&$208
3324     BIC.B   #4,&$20C
3325     SUB     #1,R10
3326 0<> WHILE
3327     ADD R9,R8
3328     BEGIN
3329         MOV &$390,R9
3330         CMP R8,R9
3331         U>= IF
3332         BIC #$30,&$380
3333         GOTO BW1
3334         THEN
3335         BIT.B #4,&$20C
3336     0<> UNTIL
3337 REPEAT
3338 BIC #$30,&$380
3339 RLAM    #1,R11
3340 MOV.B   R11,R9
3341 RRUM    #2,R9
3342 BIT     #$4000,R11
3343 0= IF   BIS #$40,R9
3344 THEN
3345 RRUM    #3,R11
3346 XOR     @R1,R11
3347 BIT     #$400,R11
3348 0= ?GOTO BW2
3349 XOR #$400,0(R1)
3350 SUB #4,R15
3351 MOV &BASE,2(R15)
3352 MOV #$10,&BASE
3353 MOV R14,0(R15)
3354 MOV R9,R14
3355 LO2HI
3356     ['] LCD_CLEAR IS CR
3357     ['] LCD_WrC  IS EMIT
3358     CR ." $" 2 U.R
3359     ['] CR >BODY IS CR
3360     ['] EMIT >BODY IS EMIT
3361 HI2LO
3362 MOV R14,&BASE
3363 MOV @R15+,R14
3364 GOTO BW3
3365 ENDASM
3366
3367
3368 ASM BACKGROUND
3369 MOV #SLEEP,R9
3370 ADD #4,R9
3371 MOV R9,R0
3372 ENDASM
3373
3374
3375 CODE START
3376     MOV #%1011010100,&$3C0
3377     MOV #1,&$3E0
3378     MOV #19,&$3D2
3379     MOV #%01100000,&$3C6
3380     MOV #10,&$3D6
3381     BIS.B #$20,&$204
3382     BIS.B #$20,&$20A
3383     BIS.B #7,&$245
3384     BIC.B #7,&$247
3385     BIS.B #$0F,&$224
3386     BIC.B #$0F,&$226
3387     BIS.B #4,&$20A
3388     BIC.B #4,&$20C
3389     MOV #RC5_INT,&$FFDE
3390     MOV #%0100010100,&$340
3391     MOV ##1638,&$352
3392     MOV #%10000,&$342
3393     MOV #WDT_INT,&$FFEA
3394
3395     MOV #SLEEP,R9
3396     MOV #BACKGROUND,2(R9)
3397
3398 LO2HI
3399
3400     $03E8 20_US
3401     $03 TOP_LCD
3402     $CD 20_US
3403     $03 TOP_LCD
3404     $5 20_US
3405     $03 TOP_LCD
3406     $2 20_US
3407     $02 TOP_LCD
3408     $2 20_US
3409     $28 LCD_WRF
3410     $08 LCD_WRF
3411     LCD_Clear
3412     $06 LCD_WRF
3413     $0C LCD_WRF
3414     LCD_Clear
3415     ['] LCD_HOME IS CR
3416     ['] LCD_WRC  IS EMIT
3417     CR ." I love you"   
3418     ['] CR >BODY IS CR
3419     ['] EMIT >BODY IS EMIT
3420     ." RC5toLCD is running. Type STOP to quit"
3421     LIT RECURSE IS WARM
3422     ABORT
3423 ;
3424
3425
3426 CODE STOP
3427     MOV #SLEEP,R9
3428     ADD #4,R9
3429     MOV R9,-2(R9)
3430
3431 COLON
3432     ['] WARM >BODY IS WARM
3433
3434     COLD
3435 ;
3436
3437
3438
3439             ; downloading RC5toLCD.4th is done
3440 RST_HERE    ; this app is protected against <reset>
3441
3442 [THEN]
3443
3444
3445
3446
3447
3448 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
3449
3450 [DEFINED] ASM [IF]
3451
3452 MARKER {RC5TOLCD}
3453
3454 [UNDEFINED] MAX [IF]
3455
3456 CODE MAX
3457     CMP @R15,R14
3458     S<  ?GOTO FW1
3459 BW1 ADD #2,R15
3460     MOV @R13+,R0
3461 ENDCODE
3462
3463
3464 CODE MIN
3465     CMP @R15,R14
3466     S<  ?GOTO BW1
3467 FW1 MOV @R15+,R14
3468     MOV @R13+,R0
3469 ENDCODE
3470
3471 [THEN]
3472
3473
3474 [UNDEFINED] U.R [IF]
3475 : U.R
3476   >R  <# 0 # #S #>  
3477   R> OVER - 0 MAX SPACES TYPE
3478 ;
3479 [THEN]
3480
3481
3482
3483 CODE 20_US
3484 BEGIN
3485     BEGIN
3486         BIT #1,&$3C0
3487     0<> UNTIL
3488     BIC #1,&$3C0
3489     SUB #1,R14
3490 U< UNTIL
3491 MOV @R15+,R14
3492 MOV @R13+,R0
3493 ENDCODE
3494
3495
3496 CODE TOP_LCD
3497     BIS.B #4,&$243
3498     BIT.B #1,&$241
3499 0= IF
3500     AND.B #$0F,R14
3501     MOV.B R14,&$222
3502     BIC.B #4,&$243
3503     MOV @R15+,R14
3504     MOV @R13+,R0
3505 THEN
3506     SUB #2,R15
3507     MOV R14,0(R15)
3508     BIC.B #4,&$243
3509     MOV.B &$220,R14
3510     AND.B #$0F,R14
3511     MOV @R13+,R0
3512 ENDCODE
3513
3514
3515 CODE LCD_W
3516     SUB #2,R15
3517     MOV R14,0(R15)
3518     RRUM #4,R14
3519     BIC.B #1,&$243
3520     BIS.B #$0F,&$224
3521 COLON
3522     TOP_LCD 2 20_US
3523     TOP_LCD 2 20_US 
3524 ;
3525
3526
3527 CODE LCD_WrC
3528     BIS.B #2,&$243
3529     JMP LCD_W 
3530 ENDCODE
3531
3532
3533 CODE LCD_WrF
3534     BIC.B #2,&$243
3535     JMP LCD_W 
3536 ENDCODE
3537
3538
3539 : LCD_Clear 
3540     $01 LCD_WrF 100 20_us
3541 ;
3542
3543
3544 : LCD_Home 
3545     $02 LCD_WrF 100 20_us 
3546 ;
3547
3548
3549 [UNDEFINED] OR [IF]
3550
3551 CODE OR
3552 BIS @R15+,R14
3553 MOV @R13+,R0
3554 ENDCODE
3555
3556
3557 [THEN]
3558
3559 : LCD_Entry_set     $04 OR LCD_WrF ;
3560
3561 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
3562
3563 : LCD_DSP_Shift     $10 OR LCD_WrF ;
3564
3565 : LCD_Fn_Set        $20 OR LCD_WrF ;
3566
3567 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
3568
3569 : LCD_Goto          $80 OR LCD_WrF ;
3570
3571 CODE LCD_R
3572     BIC.B #$0F,&$224
3573     BIS.B #1,&$243
3574 COLON
3575     TOP_LCD 2 20_us
3576     TOP_LCD 2 20_us
3577 HI2LO
3578     RLAM #4,0(R15)
3579     ADD.B @R15+,R14
3580     MOV @R1+,R13
3581     MOV @R13+,R0
3582 ENDCODE
3583
3584
3585 CODE LCD_RdS
3586     BIC.B #2,&$243
3587     JMP LCD_R
3588 ENDCODE
3589
3590
3591 CODE LCD_RdC
3592     BIS.B #2,&$243
3593     JMP LCD_R
3594 ENDCODE
3595
3596
3597
3598 ASM WDT_INT
3599 BIT.B #$20,&$240
3600 0= IF
3601     CMP #19,&$3D6
3602     U< IF
3603         ADD #1,&$3D6
3604     THEN
3605 ELSE
3606     BIT.B #$40,&$240
3607     0= IF
3608         CMP #3,&$3D6
3609         U>= IF
3610            SUB #1,&$3D6
3611         THEN
3612     THEN
3613 THEN
3614 BW1
3615 BW2
3616 BW3
3617 BIC #$78,0(R1)
3618 RETI
3619 ENDASM
3620
3621
3622 ASM RC5_INT
3623   MOV #1,&$3A0
3624 MOV #1778,R9
3625 MOV #14,R10
3626 BEGIN
3627 MOV #%1011100100,&$380
3628     RRUM    #1,R9
3629     MOV     R9,R8
3630     RRUM    #1,R8
3631     ADD     R9,R8
3632     BEGIN   CMP R8,&$390
3633     U>= UNTIL
3634     BIT.B   #4,&$200
3635     ADDC    R11,R11
3636     MOV.B   &$200,&$208
3637     BIC.B   #4,&$20C
3638     SUB     #1,R10
3639 0<> WHILE
3640     ADD R9,R8
3641     BEGIN
3642         MOV &$390,R9
3643         CMP R8,R9
3644         U>= IF
3645         BIC #$30,&$380
3646         GOTO BW1
3647         THEN
3648         BIT.B #4,&$20C
3649     0<> UNTIL
3650 REPEAT
3651 BIC #$30,&$380
3652 RLAM    #1,R11
3653 MOV.B   R11,R9
3654 RRUM    #2,R9
3655 BIT     #$4000,R11
3656 0= IF   BIS #$40,R9
3657 THEN
3658 RRUM    #3,R11
3659 XOR     @R1,R11
3660 BIT     #$400,R11
3661 0= ?GOTO BW2
3662 XOR #$400,0(R1)
3663 SUB #4,R15
3664 MOV &BASE,2(R15)
3665 MOV #$10,&BASE
3666 MOV R14,0(R15)
3667 MOV R9,R14
3668 LO2HI
3669     ['] LCD_CLEAR IS CR
3670     ['] LCD_WrC  IS EMIT
3671     CR ." $" 2 U.R
3672     ['] CR >BODY IS CR
3673     ['] EMIT >BODY IS EMIT
3674 HI2LO
3675 MOV R14,&BASE
3676 MOV @R15+,R14
3677 GOTO BW3
3678 ENDASM
3679
3680
3681 ASM BACKGROUND
3682 MOV #SLEEP,R9
3683 ADD #4,R9
3684 MOV R9,R0
3685 ENDASM
3686
3687
3688 CODE START
3689     MOV #%1011010100,&$3C0
3690     MOV #1,&$3E0
3691     MOV #19,&$3D2
3692     MOV #%01100000,&$3C6
3693     MOV #10,&$3D6
3694     BIS.B #$20,&$204
3695     BIS.B #$20,&$20A
3696     BIS.B #7,&$245
3697     BIC.B #7,&$247
3698     BIS.B #$0F,&$224
3699     BIC.B #$0F,&$226
3700     BIS.B #4,&$20A
3701     BIC.B #4,&$20C
3702     MOV #RC5_INT,&$FFDE
3703     MOV #%0100010100,&$340
3704     MOV ##1638,&$352
3705     MOV #%10000,&$342
3706     MOV #WDT_INT,&$FFEA
3707
3708     MOV #SLEEP,R9
3709     MOV #BACKGROUND,2(R9)
3710
3711 LO2HI
3712
3713     $03E8 20_US
3714     $03 TOP_LCD
3715     $CD 20_US
3716     $03 TOP_LCD
3717     $5 20_US
3718     $03 TOP_LCD
3719     $2 20_US
3720     $02 TOP_LCD
3721     $2 20_US
3722     $28 LCD_WRF
3723     $08 LCD_WRF
3724     LCD_Clear
3725     $06 LCD_WRF
3726     $0C LCD_WRF
3727     LCD_Clear
3728     ['] LCD_HOME IS CR
3729     ['] LCD_WRC  IS EMIT
3730     CR ." I love you"   
3731     ['] CR >BODY IS CR
3732     ['] EMIT >BODY IS EMIT
3733     ." RC5toLCD is running. Type STOP to quit"
3734     LIT RECURSE IS WARM
3735     ABORT
3736 ;
3737
3738
3739 CODE STOP
3740     MOV #SLEEP,R9
3741     ADD #4,R9
3742     MOV R9,-2(R9)
3743
3744 COLON
3745     ['] WARM >BODY IS WARM
3746
3747     COLD
3748 ;
3749
3750
3751
3752             ; downloading RC5toLCD.4th is done
3753 RST_HERE    ; this app is protected against <reset>
3754
3755 [THEN]
3756
3757
3758
3759
3760
3761 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
3762
3763 [DEFINED] ASM [IF]
3764
3765 MARKER {RC5TOLCD}
3766
3767 [UNDEFINED] MAX [IF]
3768
3769 CODE MAX
3770     CMP @R15,R14
3771     S<  ?GOTO FW1
3772 BW1 ADD #2,R15
3773     MOV @R13+,R0
3774 ENDCODE
3775
3776
3777 CODE MIN
3778     CMP @R15,R14
3779     S<  ?GOTO BW1
3780 FW1 MOV @R15+,R14
3781     MOV @R13+,R0
3782 ENDCODE
3783
3784 [THEN]
3785
3786
3787 [UNDEFINED] U.R [IF]
3788 : U.R
3789   >R  <# 0 # #S #>  
3790   R> OVER - 0 MAX SPACES TYPE
3791 ;
3792 [THEN]
3793
3794
3795
3796 CODE 20_US
3797 BEGIN
3798     BEGIN
3799         BIT #1,&$3C0
3800     0<> UNTIL
3801     BIC #1,&$3C0
3802     SUB #1,R14
3803 U< UNTIL
3804 MOV @R15+,R14
3805 MOV @R13+,R0
3806 ENDCODE
3807
3808
3809 CODE TOP_LCD
3810     BIS.B #4,&$243
3811     BIT.B #1,&$241
3812 0= IF
3813     AND.B #$0F,R14
3814     MOV.B R14,&$222
3815     BIC.B #4,&$243
3816     MOV @R15+,R14
3817     MOV @R13+,R0
3818 THEN
3819     SUB #2,R15
3820     MOV R14,0(R15)
3821     BIC.B #4,&$243
3822     MOV.B &$220,R14
3823     AND.B #$0F,R14
3824     MOV @R13+,R0
3825 ENDCODE
3826
3827
3828 CODE LCD_W
3829     SUB #2,R15
3830     MOV R14,0(R15)
3831     RRUM #4,R14
3832     BIC.B #1,&$243
3833     BIS.B #$0F,&$224
3834 COLON
3835     TOP_LCD 2 20_US
3836     TOP_LCD 2 20_US 
3837 ;
3838
3839
3840 CODE LCD_WrC
3841     BIS.B #2,&$243
3842     JMP LCD_W 
3843 ENDCODE
3844
3845
3846 CODE LCD_WrF
3847     BIC.B #2,&$243
3848     JMP LCD_W 
3849 ENDCODE
3850
3851
3852 : LCD_Clear 
3853     $01 LCD_WrF 100 20_us
3854 ;
3855
3856
3857 : LCD_Home 
3858     $02 LCD_WrF 100 20_us 
3859 ;
3860
3861
3862 [UNDEFINED] OR [IF]
3863
3864 CODE OR
3865 BIS @R15+,R14
3866 MOV @R13+,R0
3867 ENDCODE
3868
3869
3870 [THEN]
3871
3872 : LCD_Entry_set     $04 OR LCD_WrF ;
3873
3874 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
3875
3876 : LCD_DSP_Shift     $10 OR LCD_WrF ;
3877
3878 : LCD_Fn_Set        $20 OR LCD_WrF ;
3879
3880 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
3881
3882 : LCD_Goto          $80 OR LCD_WrF ;
3883
3884 CODE LCD_R
3885     BIC.B #$0F,&$224
3886     BIS.B #1,&$243
3887 COLON
3888     TOP_LCD 2 20_us
3889     TOP_LCD 2 20_us
3890 HI2LO
3891     RLAM #4,0(R15)
3892     ADD.B @R15+,R14
3893     MOV @R1+,R13
3894     MOV @R13+,R0
3895 ENDCODE
3896
3897
3898 CODE LCD_RdS
3899     BIC.B #2,&$243
3900     JMP LCD_R
3901 ENDCODE
3902
3903
3904 CODE LCD_RdC
3905     BIS.B #2,&$243
3906     JMP LCD_R
3907 ENDCODE
3908
3909
3910
3911 ASM WDT_INT
3912 BIT.B #$20,&$240
3913 0= IF
3914     CMP #19,&$3D6
3915     U< IF
3916         ADD #1,&$3D6
3917     THEN
3918 ELSE
3919     BIT.B #$40,&$240
3920     0= IF
3921         CMP #3,&$3D6
3922         U>= IF
3923            SUB #1,&$3D6
3924         THEN
3925     THEN
3926 THEN
3927 BW1
3928 BW2
3929 BW3
3930 BIC #$78,0(R1)
3931 RETI
3932 ENDASM
3933
3934
3935 ASM RC5_INT
3936   MOV #1,&$3A0
3937 MOV #1778,R9
3938 MOV #14,R10
3939 BEGIN
3940 MOV #%1011100100,&$380
3941     RRUM    #1,R9
3942     MOV     R9,R8
3943     RRUM    #1,R8
3944     ADD     R9,R8
3945     BEGIN   CMP R8,&$390
3946     U>= UNTIL
3947     BIT.B   #4,&$200
3948     ADDC    R11,R11
3949     MOV.B   &$200,&$208
3950     BIC.B   #4,&$20C
3951     SUB     #1,R10
3952 0<> WHILE
3953     ADD R9,R8
3954     BEGIN
3955         MOV &$390,R9
3956         CMP R8,R9
3957         U>= IF
3958         BIC #$30,&$380
3959         GOTO BW1
3960         THEN
3961         BIT.B #4,&$20C
3962     0<> UNTIL
3963 REPEAT
3964 BIC #$30,&$380
3965 RLAM    #1,R11
3966 MOV.B   R11,R9
3967 RRUM    #2,R9
3968 BIT     #$4000,R11
3969 0= IF   BIS #$40,R9
3970 THEN
3971 RRUM    #3,R11
3972 XOR     @R1,R11
3973 BIT     #$400,R11
3974 0= ?GOTO BW2
3975 XOR #$400,0(R1)
3976 SUB #4,R15
3977 MOV &BASE,2(R15)
3978 MOV #$10,&BASE
3979 MOV R14,0(R15)
3980 MOV R9,R14
3981 LO2HI
3982     ['] LCD_CLEAR IS CR
3983     ['] LCD_WrC  IS EMIT
3984     CR ." $" 2 U.R
3985     ['] CR >BODY IS CR
3986     ['] EMIT >BODY IS EMIT
3987 HI2LO
3988 MOV R14,&BASE
3989 MOV @R15+,R14
3990 GOTO BW3
3991 ENDASM
3992
3993
3994 ASM BACKGROUND
3995 MOV #SLEEP,R9
3996 ADD #4,R9
3997 MOV R9,R0
3998 ENDASM
3999
4000
4001 CODE START
4002     MOV #%1011010100,&$3C0
4003     MOV #1,&$3E0
4004     MOV #19,&$3D2
4005     MOV #%01100000,&$3C6
4006     MOV #10,&$3D6
4007     BIS.B #$20,&$204
4008     BIS.B #$20,&$20A
4009     BIS.B #7,&$245
4010     BIC.B #7,&$247
4011     BIS.B #$0F,&$224
4012     BIC.B #$0F,&$226
4013     BIS.B #4,&$20A
4014     BIC.B #4,&$20C
4015     MOV #RC5_INT,&$FFDE
4016     MOV #%0100010100,&$340
4017     MOV ##1638,&$352
4018     MOV #%10000,&$342
4019     MOV #WDT_INT,&$FFEA
4020
4021     MOV #SLEEP,R9
4022     MOV #BACKGROUND,2(R9)
4023
4024 LO2HI
4025
4026     $03E8 20_US
4027     $03 TOP_LCD
4028     $CD 20_US
4029     $03 TOP_LCD
4030     $5 20_US
4031     $03 TOP_LCD
4032     $2 20_US
4033     $02 TOP_LCD
4034     $2 20_US
4035     $28 LCD_WRF
4036     $08 LCD_WRF
4037     LCD_Clear
4038     $06 LCD_WRF
4039     $0C LCD_WRF
4040     LCD_Clear
4041     ['] LCD_HOME IS CR
4042     ['] LCD_WRC  IS EMIT
4043     CR ." I love you"   
4044     ['] CR >BODY IS CR
4045     ['] EMIT >BODY IS EMIT
4046     ." RC5toLCD is running. Type STOP to quit"
4047     LIT RECURSE IS WARM
4048     ABORT
4049 ;
4050
4051
4052 CODE STOP
4053     MOV #SLEEP,R9
4054     ADD #4,R9
4055     MOV R9,-2(R9)
4056
4057 COLON
4058     ['] WARM >BODY IS WARM
4059
4060     COLD
4061 ;
4062
4063
4064
4065             ; downloading RC5toLCD.4th is done
4066 RST_HERE    ; this app is protected against <reset>
4067
4068 [THEN]
4069
4070
4071
4072
4073
4074 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
4075
4076 [DEFINED] ASM [IF]
4077
4078 MARKER {RC5TOLCD}
4079
4080 [UNDEFINED] MAX [IF]
4081
4082 CODE MAX
4083     CMP @R15,R14
4084     S<  ?GOTO FW1
4085 BW1 ADD #2,R15
4086     MOV @R13+,R0
4087 ENDCODE
4088
4089
4090 CODE MIN
4091     CMP @R15,R14
4092     S<  ?GOTO BW1
4093 FW1 MOV @R15+,R14
4094     MOV @R13+,R0
4095 ENDCODE
4096
4097 [THEN]
4098
4099
4100 [UNDEFINED] U.R [IF]
4101 : U.R
4102   >R  <# 0 # #S #>  
4103   R> OVER - 0 MAX SPACES TYPE
4104 ;
4105 [THEN]
4106
4107
4108
4109 CODE 20_US
4110 BEGIN
4111     BEGIN
4112         BIT #1,&$3C0
4113     0<> UNTIL
4114     BIC #1,&$3C0
4115     SUB #1,R14
4116 U< UNTIL
4117 MOV @R15+,R14
4118 MOV @R13+,R0
4119 ENDCODE
4120
4121
4122 CODE TOP_LCD
4123     BIS.B #4,&$243
4124     BIT.B #1,&$241
4125 0= IF
4126     AND.B #$0F,R14
4127     MOV.B R14,&$222
4128     BIC.B #4,&$243
4129     MOV @R15+,R14
4130     MOV @R13+,R0
4131 THEN
4132     SUB #2,R15
4133     MOV R14,0(R15)
4134     BIC.B #4,&$243
4135     MOV.B &$220,R14
4136     AND.B #$0F,R14
4137     MOV @R13+,R0
4138 ENDCODE
4139
4140
4141 CODE LCD_W
4142     SUB #2,R15
4143     MOV R14,0(R15)
4144     RRUM #4,R14
4145     BIC.B #1,&$243
4146     BIS.B #$0F,&$224
4147 COLON
4148     TOP_LCD 2 20_US
4149     TOP_LCD 2 20_US 
4150 ;
4151
4152
4153 CODE LCD_WrC
4154     BIS.B #2,&$243
4155     JMP LCD_W 
4156 ENDCODE
4157
4158
4159 CODE LCD_WrF
4160     BIC.B #2,&$243
4161     JMP LCD_W 
4162 ENDCODE
4163
4164
4165 : LCD_Clear 
4166     $01 LCD_WrF 100 20_us
4167 ;
4168
4169
4170 : LCD_Home 
4171     $02 LCD_WrF 100 20_us 
4172 ;
4173
4174
4175 [UNDEFINED] OR [IF]
4176
4177 CODE OR
4178 BIS @R15+,R14
4179 MOV @R13+,R0
4180 ENDCODE
4181
4182
4183 [THEN]
4184
4185 : LCD_Entry_set     $04 OR LCD_WrF ;
4186
4187 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
4188
4189 : LCD_DSP_Shift     $10 OR LCD_WrF ;
4190
4191 : LCD_Fn_Set        $20 OR LCD_WrF ;
4192
4193 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
4194
4195 : LCD_Goto          $80 OR LCD_WrF ;
4196
4197 CODE LCD_R
4198     BIC.B #$0F,&$224
4199     BIS.B #1,&$243
4200 COLON
4201     TOP_LCD 2 20_us
4202     TOP_LCD 2 20_us
4203 HI2LO
4204     RLAM #4,0(R15)
4205     ADD.B @R15+,R14
4206     MOV @R1+,R13
4207     MOV @R13+,R0
4208 ENDCODE
4209
4210
4211 CODE LCD_RdS
4212     BIC.B #2,&$243
4213     JMP LCD_R
4214 ENDCODE
4215
4216
4217 CODE LCD_RdC
4218     BIS.B #2,&$243
4219     JMP LCD_R
4220 ENDCODE
4221
4222
4223
4224 ASM WDT_INT
4225 BIT.B #$20,&$240
4226 0= IF
4227     CMP #19,&$3D6
4228     U< IF
4229         ADD #1,&$3D6
4230     THEN
4231 ELSE
4232     BIT.B #$40,&$240
4233     0= IF
4234         CMP #3,&$3D6
4235         U>= IF
4236            SUB #1,&$3D6
4237         THEN
4238     THEN
4239 THEN
4240 BW1
4241 BW2
4242 BW3
4243 BIC #$78,0(R1)
4244 RETI
4245 ENDASM
4246
4247
4248 ASM RC5_INT
4249   MOV #1,&$3A0
4250 MOV #1778,R9
4251 MOV #14,R10
4252 BEGIN
4253 MOV #%1011100100,&$380
4254     RRUM    #1,R9
4255     MOV     R9,R8
4256     RRUM    #1,R8
4257     ADD     R9,R8
4258     BEGIN   CMP R8,&$390
4259     U>= UNTIL
4260     BIT.B   #4,&$200
4261     ADDC    R11,R11
4262     MOV.B   &$200,&$208
4263     BIC.B   #4,&$20C
4264     SUB     #1,R10
4265 0<> WHILE
4266     ADD R9,R8
4267     BEGIN
4268         MOV &$390,R9
4269         CMP R8,R9
4270         U>= IF
4271         BIC #$30,&$380
4272         GOTO BW1
4273         THEN
4274         BIT.B #4,&$20C
4275     0<> UNTIL
4276 REPEAT
4277 BIC #$30,&$380
4278 RLAM    #1,R11
4279 MOV.B   R11,R9
4280 RRUM    #2,R9
4281 BIT     #$4000,R11
4282 0= IF   BIS #$40,R9
4283 THEN
4284 RRUM    #3,R11
4285 XOR     @R1,R11
4286 BIT     #$400,R11
4287 0= ?GOTO BW2
4288 XOR #$400,0(R1)
4289 SUB #4,R15
4290 MOV &BASE,2(R15)
4291 MOV #$10,&BASE
4292 MOV R14,0(R15)
4293 MOV R9,R14
4294 LO2HI
4295     ['] LCD_CLEAR IS CR
4296     ['] LCD_WrC  IS EMIT
4297     CR ." $" 2 U.R
4298     ['] CR >BODY IS CR
4299     ['] EMIT >BODY IS EMIT
4300 HI2LO
4301 MOV R14,&BASE
4302 MOV @R15+,R14
4303 GOTO BW3
4304 ENDASM
4305
4306
4307 ASM BACKGROUND
4308 MOV #SLEEP,R9
4309 ADD #4,R9
4310 MOV R9,R0
4311 ENDASM
4312
4313
4314 CODE START
4315     MOV #%1011010100,&$3C0
4316     MOV #1,&$3E0
4317     MOV #19,&$3D2
4318     MOV #%01100000,&$3C6
4319     MOV #10,&$3D6
4320     BIS.B #$20,&$204
4321     BIS.B #$20,&$20A
4322     BIS.B #7,&$245
4323     BIC.B #7,&$247
4324     BIS.B #$0F,&$224
4325     BIC.B #$0F,&$226
4326     BIS.B #4,&$20A
4327     BIC.B #4,&$20C
4328     MOV #RC5_INT,&$FFDE
4329     MOV #%0100010100,&$340
4330     MOV ##1638,&$352
4331     MOV #%10000,&$342
4332     MOV #WDT_INT,&$FFEA
4333
4334     MOV #SLEEP,R9
4335     MOV #BACKGROUND,2(R9)
4336
4337 LO2HI
4338
4339     $03E8 20_US
4340     $03 TOP_LCD
4341     $CD 20_US
4342     $03 TOP_LCD
4343     $5 20_US
4344     $03 TOP_LCD
4345     $2 20_US
4346     $02 TOP_LCD
4347     $2 20_US
4348     $28 LCD_WRF
4349     $08 LCD_WRF
4350     LCD_Clear
4351     $06 LCD_WRF
4352     $0C LCD_WRF
4353     LCD_Clear
4354     ['] LCD_HOME IS CR
4355     ['] LCD_WRC  IS EMIT
4356     CR ." I love you"   
4357     ['] CR >BODY IS CR
4358     ['] EMIT >BODY IS EMIT
4359     ." RC5toLCD is running. Type STOP to quit"
4360     LIT RECURSE IS WARM
4361     ABORT
4362 ;
4363
4364
4365 CODE STOP
4366     MOV #SLEEP,R9
4367     ADD #4,R9
4368     MOV R9,-2(R9)
4369
4370 COLON
4371     ['] WARM >BODY IS WARM
4372
4373     COLD
4374 ;
4375
4376
4377
4378             ; downloading RC5toLCD.4th is done
4379 RST_HERE    ; this app is protected against <reset>
4380
4381 [THEN]
4382
4383
4384
4385
4386
4387 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
4388
4389 [DEFINED] ASM [IF]
4390
4391 MARKER {RC5TOLCD}
4392
4393 [UNDEFINED] MAX [IF]
4394
4395 CODE MAX
4396     CMP @R15,R14
4397     S<  ?GOTO FW1
4398 BW1 ADD #2,R15
4399     MOV @R13+,R0
4400 ENDCODE
4401
4402
4403 CODE MIN
4404     CMP @R15,R14
4405     S<  ?GOTO BW1
4406 FW1 MOV @R15+,R14
4407     MOV @R13+,R0
4408 ENDCODE
4409
4410 [THEN]
4411
4412
4413 [UNDEFINED] U.R [IF]
4414 : U.R
4415   >R  <# 0 # #S #>  
4416   R> OVER - 0 MAX SPACES TYPE
4417 ;
4418 [THEN]
4419
4420
4421
4422 CODE 20_US
4423 BEGIN
4424     BEGIN
4425         BIT #1,&$3C0
4426     0<> UNTIL
4427     BIC #1,&$3C0
4428     SUB #1,R14
4429 U< UNTIL
4430 MOV @R15+,R14
4431 MOV @R13+,R0
4432 ENDCODE
4433
4434
4435 CODE TOP_LCD
4436     BIS.B #4,&$243
4437     BIT.B #1,&$241
4438 0= IF
4439     AND.B #$0F,R14
4440     MOV.B R14,&$222
4441     BIC.B #4,&$243
4442     MOV @R15+,R14
4443     MOV @R13+,R0
4444 THEN
4445     SUB #2,R15
4446     MOV R14,0(R15)
4447     BIC.B #4,&$243
4448     MOV.B &$220,R14
4449     AND.B #$0F,R14
4450     MOV @R13+,R0
4451 ENDCODE
4452
4453
4454 CODE LCD_W
4455     SUB #2,R15
4456     MOV R14,0(R15)
4457     RRUM #4,R14
4458     BIC.B #1,&$243
4459     BIS.B #$0F,&$224
4460 COLON
4461     TOP_LCD 2 20_US
4462     TOP_LCD 2 20_US 
4463 ;
4464
4465
4466 CODE LCD_WrC
4467     BIS.B #2,&$243
4468     JMP LCD_W 
4469 ENDCODE
4470
4471
4472 CODE LCD_WrF
4473     BIC.B #2,&$243
4474     JMP LCD_W 
4475 ENDCODE
4476
4477
4478 : LCD_Clear 
4479     $01 LCD_WrF 100 20_us
4480 ;
4481
4482
4483 : LCD_Home 
4484     $02 LCD_WrF 100 20_us 
4485 ;
4486
4487
4488 [UNDEFINED] OR [IF]
4489
4490 CODE OR
4491 BIS @R15+,R14
4492 MOV @R13+,R0
4493 ENDCODE
4494
4495
4496 [THEN]
4497
4498 : LCD_Entry_set     $04 OR LCD_WrF ;
4499
4500 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
4501
4502 : LCD_DSP_Shift     $10 OR LCD_WrF ;
4503
4504 : LCD_Fn_Set        $20 OR LCD_WrF ;
4505
4506 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
4507
4508 : LCD_Goto          $80 OR LCD_WrF ;
4509
4510 CODE LCD_R
4511     BIC.B #$0F,&$224
4512     BIS.B #1,&$243
4513 COLON
4514     TOP_LCD 2 20_us
4515     TOP_LCD 2 20_us
4516 HI2LO
4517     RLAM #4,0(R15)
4518     ADD.B @R15+,R14
4519     MOV @R1+,R13
4520     MOV @R13+,R0
4521 ENDCODE
4522
4523
4524 CODE LCD_RdS
4525     BIC.B #2,&$243
4526     JMP LCD_R
4527 ENDCODE
4528
4529
4530 CODE LCD_RdC
4531     BIS.B #2,&$243
4532     JMP LCD_R
4533 ENDCODE
4534
4535
4536
4537 ASM WDT_INT
4538 BIT.B #$20,&$240
4539 0= IF
4540     CMP #19,&$3D6
4541     U< IF
4542         ADD #1,&$3D6
4543     THEN
4544 ELSE
4545     BIT.B #$40,&$240
4546     0= IF
4547         CMP #3,&$3D6
4548         U>= IF
4549            SUB #1,&$3D6
4550         THEN
4551     THEN
4552 THEN
4553 BW1
4554 BW2
4555 BW3
4556 BIC #$78,0(R1)
4557 RETI
4558 ENDASM
4559
4560
4561 ASM RC5_INT
4562   MOV #1,&$3A0
4563 MOV #1778,R9
4564 MOV #14,R10
4565 BEGIN
4566 MOV #%1011100100,&$380
4567     RRUM    #1,R9
4568     MOV     R9,R8
4569     RRUM    #1,R8
4570     ADD     R9,R8
4571     BEGIN   CMP R8,&$390
4572     U>= UNTIL
4573     BIT.B   #4,&$200
4574     ADDC    R11,R11
4575     MOV.B   &$200,&$208
4576     BIC.B   #4,&$20C
4577     SUB     #1,R10
4578 0<> WHILE
4579     ADD R9,R8
4580     BEGIN
4581         MOV &$390,R9
4582         CMP R8,R9
4583         U>= IF
4584         BIC #$30,&$380
4585         GOTO BW1
4586         THEN
4587         BIT.B #4,&$20C
4588     0<> UNTIL
4589 REPEAT
4590 BIC #$30,&$380
4591 RLAM    #1,R11
4592 MOV.B   R11,R9
4593 RRUM    #2,R9
4594 BIT     #$4000,R11
4595 0= IF   BIS #$40,R9
4596 THEN
4597 RRUM    #3,R11
4598 XOR     @R1,R11
4599 BIT     #$400,R11
4600 0= ?GOTO BW2
4601 XOR #$400,0(R1)
4602 SUB #4,R15
4603 MOV &BASE,2(R15)
4604 MOV #$10,&BASE
4605 MOV R14,0(R15)
4606 MOV R9,R14
4607 LO2HI
4608     ['] LCD_CLEAR IS CR
4609     ['] LCD_WrC  IS EMIT
4610     CR ." $" 2 U.R
4611     ['] CR >BODY IS CR
4612     ['] EMIT >BODY IS EMIT
4613 HI2LO
4614 MOV R14,&BASE
4615 MOV @R15+,R14
4616 GOTO BW3
4617 ENDASM
4618
4619
4620 ASM BACKGROUND
4621 MOV #SLEEP,R9
4622 ADD #4,R9
4623 MOV R9,R0
4624 ENDASM
4625
4626
4627 CODE START
4628     MOV #%1011010100,&$3C0
4629     MOV #1,&$3E0
4630     MOV #19,&$3D2
4631     MOV #%01100000,&$3C6
4632     MOV #10,&$3D6
4633     BIS.B #$20,&$204
4634     BIS.B #$20,&$20A
4635     BIS.B #7,&$245
4636     BIC.B #7,&$247
4637     BIS.B #$0F,&$224
4638     BIC.B #$0F,&$226
4639     BIS.B #4,&$20A
4640     BIC.B #4,&$20C
4641     MOV #RC5_INT,&$FFDE
4642     MOV #%0100010100,&$340
4643     MOV ##1638,&$352
4644     MOV #%10000,&$342
4645     MOV #WDT_INT,&$FFEA
4646
4647     MOV #SLEEP,R9
4648     MOV #BACKGROUND,2(R9)
4649
4650 LO2HI
4651
4652     $03E8 20_US
4653     $03 TOP_LCD
4654     $CD 20_US
4655     $03 TOP_LCD
4656     $5 20_US
4657     $03 TOP_LCD
4658     $2 20_US
4659     $02 TOP_LCD
4660     $2 20_US
4661     $28 LCD_WRF
4662     $08 LCD_WRF
4663     LCD_Clear
4664     $06 LCD_WRF
4665     $0C LCD_WRF
4666     LCD_Clear
4667     ['] LCD_HOME IS CR
4668     ['] LCD_WRC  IS EMIT
4669     CR ." I love you"   
4670     ['] CR >BODY IS CR
4671     ['] EMIT >BODY IS EMIT
4672     ." RC5toLCD is running. Type STOP to quit"
4673     LIT RECURSE IS WARM
4674     ABORT
4675 ;
4676
4677
4678 CODE STOP
4679     MOV #SLEEP,R9
4680     ADD #4,R9
4681     MOV R9,-2(R9)
4682
4683 COLON
4684     ['] WARM >BODY IS WARM
4685
4686     COLD
4687 ;
4688
4689
4690
4691             ; downloading RC5toLCD.4th is done
4692 RST_HERE    ; this app is protected against <reset>
4693
4694 [THEN]
4695
4696
4697
4698
4699
4700 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
4701
4702 [DEFINED] ASM [IF]
4703
4704 MARKER {RC5TOLCD}
4705
4706 [UNDEFINED] MAX [IF]
4707
4708 CODE MAX
4709     CMP @R15,R14
4710     S<  ?GOTO FW1
4711 BW1 ADD #2,R15
4712     MOV @R13+,R0
4713 ENDCODE
4714
4715
4716 CODE MIN
4717     CMP @R15,R14
4718     S<  ?GOTO BW1
4719 FW1 MOV @R15+,R14
4720     MOV @R13+,R0
4721 ENDCODE
4722
4723 [THEN]
4724
4725
4726 [UNDEFINED] U.R [IF]
4727 : U.R
4728   >R  <# 0 # #S #>  
4729   R> OVER - 0 MAX SPACES TYPE
4730 ;
4731 [THEN]
4732
4733
4734
4735 CODE 20_US
4736 BEGIN
4737     BEGIN
4738         BIT #1,&$3C0
4739     0<> UNTIL
4740     BIC #1,&$3C0
4741     SUB #1,R14
4742 U< UNTIL
4743 MOV @R15+,R14
4744 MOV @R13+,R0
4745 ENDCODE
4746
4747
4748 CODE TOP_LCD
4749     BIS.B #4,&$243
4750     BIT.B #1,&$241
4751 0= IF
4752     AND.B #$0F,R14
4753     MOV.B R14,&$222
4754     BIC.B #4,&$243
4755     MOV @R15+,R14
4756     MOV @R13+,R0
4757 THEN
4758     SUB #2,R15
4759     MOV R14,0(R15)
4760     BIC.B #4,&$243
4761     MOV.B &$220,R14
4762     AND.B #$0F,R14
4763     MOV @R13+,R0
4764 ENDCODE
4765
4766
4767 CODE LCD_W
4768     SUB #2,R15
4769     MOV R14,0(R15)
4770     RRUM #4,R14
4771     BIC.B #1,&$243
4772     BIS.B #$0F,&$224
4773 COLON
4774     TOP_LCD 2 20_US
4775     TOP_LCD 2 20_US 
4776 ;
4777
4778
4779 CODE LCD_WrC
4780     BIS.B #2,&$243
4781     JMP LCD_W 
4782 ENDCODE
4783
4784
4785 CODE LCD_WrF
4786     BIC.B #2,&$243
4787     JMP LCD_W 
4788 ENDCODE
4789
4790
4791 : LCD_Clear 
4792     $01 LCD_WrF 100 20_us
4793 ;
4794
4795
4796 : LCD_Home 
4797     $02 LCD_WrF 100 20_us 
4798 ;
4799
4800
4801 [UNDEFINED] OR [IF]
4802
4803 CODE OR
4804 BIS @R15+,R14
4805 MOV @R13+,R0
4806 ENDCODE
4807
4808
4809 [THEN]
4810
4811 : LCD_Entry_set     $04 OR LCD_WrF ;
4812
4813 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
4814
4815 : LCD_DSP_Shift     $10 OR LCD_WrF ;
4816
4817 : LCD_Fn_Set        $20 OR LCD_WrF ;
4818
4819 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
4820
4821 : LCD_Goto          $80 OR LCD_WrF ;
4822
4823 CODE LCD_R
4824     BIC.B #$0F,&$224
4825     BIS.B #1,&$243
4826 COLON
4827     TOP_LCD 2 20_us
4828     TOP_LCD 2 20_us
4829 HI2LO
4830     RLAM #4,0(R15)
4831     ADD.B @R15+,R14
4832     MOV @R1+,R13
4833     MOV @R13+,R0
4834 ENDCODE
4835
4836
4837 CODE LCD_RdS
4838     BIC.B #2,&$243
4839     JMP LCD_R
4840 ENDCODE
4841
4842
4843 CODE LCD_RdC
4844     BIS.B #2,&$243
4845     JMP LCD_R
4846 ENDCODE
4847
4848
4849
4850 ASM WDT_INT
4851 BIT.B #$20,&$240
4852 0= IF
4853     CMP #19,&$3D6
4854     U< IF
4855         ADD #1,&$3D6
4856     THEN
4857 ELSE
4858     BIT.B #$40,&$240
4859     0= IF
4860         CMP #3,&$3D6
4861         U>= IF
4862            SUB #1,&$3D6
4863         THEN
4864     THEN
4865 THEN
4866 BW1
4867 BW2
4868 BW3
4869 BIC #$78,0(R1)
4870 RETI
4871 ENDASM
4872
4873
4874 ASM RC5_INT
4875   MOV #1,&$3A0
4876 MOV #1778,R9
4877 MOV #14,R10
4878 BEGIN
4879 MOV #%1011100100,&$380
4880     RRUM    #1,R9
4881     MOV     R9,R8
4882     RRUM    #1,R8
4883     ADD     R9,R8
4884     BEGIN   CMP R8,&$390
4885     U>= UNTIL
4886     BIT.B   #4,&$200
4887     ADDC    R11,R11
4888     MOV.B   &$200,&$208
4889     BIC.B   #4,&$20C
4890     SUB     #1,R10
4891 0<> WHILE
4892     ADD R9,R8
4893     BEGIN
4894         MOV &$390,R9
4895         CMP R8,R9
4896         U>= IF
4897         BIC #$30,&$380
4898         GOTO BW1
4899         THEN
4900         BIT.B #4,&$20C
4901     0<> UNTIL
4902 REPEAT
4903 BIC #$30,&$380
4904 RLAM    #1,R11
4905 MOV.B   R11,R9
4906 RRUM    #2,R9
4907 BIT     #$4000,R11
4908 0= IF   BIS #$40,R9
4909 THEN
4910 RRUM    #3,R11
4911 XOR     @R1,R11
4912 BIT     #$400,R11
4913 0= ?GOTO BW2
4914 XOR #$400,0(R1)
4915 SUB #4,R15
4916 MOV &BASE,2(R15)
4917 MOV #$10,&BASE
4918 MOV R14,0(R15)
4919 MOV R9,R14
4920 LO2HI
4921     ['] LCD_CLEAR IS CR
4922     ['] LCD_WrC  IS EMIT
4923     CR ." $" 2 U.R
4924     ['] CR >BODY IS CR
4925     ['] EMIT >BODY IS EMIT
4926 HI2LO
4927 MOV R14,&BASE
4928 MOV @R15+,R14
4929 GOTO BW3
4930 ENDASM
4931
4932
4933 ASM BACKGROUND
4934 MOV #SLEEP,R9
4935 ADD #4,R9
4936 MOV R9,R0
4937 ENDASM
4938
4939
4940 CODE START
4941     MOV #%1011010100,&$3C0
4942     MOV #1,&$3E0
4943     MOV #19,&$3D2
4944     MOV #%01100000,&$3C6
4945     MOV #10,&$3D6
4946     BIS.B #$20,&$204
4947     BIS.B #$20,&$20A
4948     BIS.B #7,&$245
4949     BIC.B #7,&$247
4950     BIS.B #$0F,&$224
4951     BIC.B #$0F,&$226
4952     BIS.B #4,&$20A
4953     BIC.B #4,&$20C
4954     MOV #RC5_INT,&$FFDE
4955     MOV #%0100010100,&$340
4956     MOV ##1638,&$352
4957     MOV #%10000,&$342
4958     MOV #WDT_INT,&$FFEA
4959
4960     MOV #SLEEP,R9
4961     MOV #BACKGROUND,2(R9)
4962
4963 LO2HI
4964
4965     $03E8 20_US
4966     $03 TOP_LCD
4967     $CD 20_US
4968     $03 TOP_LCD
4969     $5 20_US
4970     $03 TOP_LCD
4971     $2 20_US
4972     $02 TOP_LCD
4973     $2 20_US
4974     $28 LCD_WRF
4975     $08 LCD_WRF
4976     LCD_Clear
4977     $06 LCD_WRF
4978     $0C LCD_WRF
4979     LCD_Clear
4980     ['] LCD_HOME IS CR
4981     ['] LCD_WRC  IS EMIT
4982     CR ." I love you"   
4983     ['] CR >BODY IS CR
4984     ['] EMIT >BODY IS EMIT
4985     ." RC5toLCD is running. Type STOP to quit"
4986     LIT RECURSE IS WARM
4987     ABORT
4988 ;
4989
4990
4991 CODE STOP
4992     MOV #SLEEP,R9
4993     ADD #4,R9
4994     MOV R9,-2(R9)
4995
4996 COLON
4997     ['] WARM >BODY IS WARM
4998
4999     COLD
5000 ;
5001
5002
5003
5004             ; downloading RC5toLCD.4th is done
5005 RST_HERE    ; this app is protected against <reset>
5006
5007 [THEN]
5008
5009
5010
5011
5012
5013 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
5014
5015 [DEFINED] ASM [IF]
5016
5017 MARKER {RC5TOLCD}
5018
5019 [UNDEFINED] MAX [IF]
5020
5021 CODE MAX
5022     CMP @R15,R14
5023     S<  ?GOTO FW1
5024 BW1 ADD #2,R15
5025     MOV @R13+,R0
5026 ENDCODE
5027
5028
5029 CODE MIN
5030     CMP @R15,R14
5031     S<  ?GOTO BW1
5032 FW1 MOV @R15+,R14
5033     MOV @R13+,R0
5034 ENDCODE
5035
5036 [THEN]
5037
5038
5039 [UNDEFINED] U.R [IF]
5040 : U.R
5041   >R  <# 0 # #S #>  
5042   R> OVER - 0 MAX SPACES TYPE
5043 ;
5044 [THEN]
5045
5046
5047
5048 CODE 20_US
5049 BEGIN
5050     BEGIN
5051         BIT #1,&$3C0
5052     0<> UNTIL
5053     BIC #1,&$3C0
5054     SUB #1,R14
5055 U< UNTIL
5056 MOV @R15+,R14
5057 MOV @R13+,R0
5058 ENDCODE
5059
5060
5061 CODE TOP_LCD
5062     BIS.B #4,&$243
5063     BIT.B #1,&$241
5064 0= IF
5065     AND.B #$0F,R14
5066     MOV.B R14,&$222
5067     BIC.B #4,&$243
5068     MOV @R15+,R14
5069     MOV @R13+,R0
5070 THEN
5071     SUB #2,R15
5072     MOV R14,0(R15)
5073     BIC.B #4,&$243
5074     MOV.B &$220,R14
5075     AND.B #$0F,R14
5076     MOV @R13+,R0
5077 ENDCODE
5078
5079
5080 CODE LCD_W
5081     SUB #2,R15
5082     MOV R14,0(R15)
5083     RRUM #4,R14
5084     BIC.B #1,&$243
5085     BIS.B #$0F,&$224
5086 COLON
5087     TOP_LCD 2 20_US
5088     TOP_LCD 2 20_US 
5089 ;
5090
5091
5092 CODE LCD_WrC
5093     BIS.B #2,&$243
5094     JMP LCD_W 
5095 ENDCODE
5096
5097
5098 CODE LCD_WrF
5099     BIC.B #2,&$243
5100     JMP LCD_W 
5101 ENDCODE
5102
5103
5104 : LCD_Clear 
5105     $01 LCD_WrF 100 20_us
5106 ;
5107
5108
5109 : LCD_Home 
5110     $02 LCD_WrF 100 20_us 
5111 ;
5112
5113
5114 [UNDEFINED] OR [IF]
5115
5116 CODE OR
5117 BIS @R15+,R14
5118 MOV @R13+,R0
5119 ENDCODE
5120
5121
5122 [THEN]
5123
5124 : LCD_Entry_set     $04 OR LCD_WrF ;
5125
5126 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
5127
5128 : LCD_DSP_Shift     $10 OR LCD_WrF ;
5129
5130 : LCD_Fn_Set        $20 OR LCD_WrF ;
5131
5132 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
5133
5134 : LCD_Goto          $80 OR LCD_WrF ;
5135
5136 CODE LCD_R
5137     BIC.B #$0F,&$224
5138     BIS.B #1,&$243
5139 COLON
5140     TOP_LCD 2 20_us
5141     TOP_LCD 2 20_us
5142 HI2LO
5143     RLAM #4,0(R15)
5144     ADD.B @R15+,R14
5145     MOV @R1+,R13
5146     MOV @R13+,R0
5147 ENDCODE
5148
5149
5150 CODE LCD_RdS
5151     BIC.B #2,&$243
5152     JMP LCD_R
5153 ENDCODE
5154
5155
5156 CODE LCD_RdC
5157     BIS.B #2,&$243
5158     JMP LCD_R
5159 ENDCODE
5160
5161
5162
5163 ASM WDT_INT
5164 BIT.B #$20,&$240
5165 0= IF
5166     CMP #19,&$3D6
5167     U< IF
5168         ADD #1,&$3D6
5169     THEN
5170 ELSE
5171     BIT.B #$40,&$240
5172     0= IF
5173         CMP #3,&$3D6
5174         U>= IF
5175            SUB #1,&$3D6
5176         THEN
5177     THEN
5178 THEN
5179 BW1
5180 BW2
5181 BW3
5182 BIC #$78,0(R1)
5183 RETI
5184 ENDASM
5185
5186
5187 ASM RC5_INT
5188   MOV #1,&$3A0
5189 MOV #1778,R9
5190 MOV #14,R10
5191 BEGIN
5192 MOV #%1011100100,&$380
5193     RRUM    #1,R9
5194     MOV     R9,R8
5195     RRUM    #1,R8
5196     ADD     R9,R8
5197     BEGIN   CMP R8,&$390
5198     U>= UNTIL
5199     BIT.B   #4,&$200
5200     ADDC    R11,R11
5201     MOV.B   &$200,&$208
5202     BIC.B   #4,&$20C
5203     SUB     #1,R10
5204 0<> WHILE
5205     ADD R9,R8
5206     BEGIN
5207         MOV &$390,R9
5208         CMP R8,R9
5209         U>= IF
5210         BIC #$30,&$380
5211         GOTO BW1
5212         THEN
5213         BIT.B #4,&$20C
5214     0<> UNTIL
5215 REPEAT
5216 BIC #$30,&$380
5217 RLAM    #1,R11
5218 MOV.B   R11,R9
5219 RRUM    #2,R9
5220 BIT     #$4000,R11
5221 0= IF   BIS #$40,R9
5222 THEN
5223 RRUM    #3,R11
5224 XOR     @R1,R11
5225 BIT     #$400,R11
5226 0= ?GOTO BW2
5227 XOR #$400,0(R1)
5228 SUB #4,R15
5229 MOV &BASE,2(R15)
5230 MOV #$10,&BASE
5231 MOV R14,0(R15)
5232 MOV R9,R14
5233 LO2HI
5234     ['] LCD_CLEAR IS CR
5235     ['] LCD_WrC  IS EMIT
5236     CR ." $" 2 U.R
5237     ['] CR >BODY IS CR
5238     ['] EMIT >BODY IS EMIT
5239 HI2LO
5240 MOV R14,&BASE
5241 MOV @R15+,R14
5242 GOTO BW3
5243 ENDASM
5244
5245
5246 ASM BACKGROUND
5247 MOV #SLEEP,R9
5248 ADD #4,R9
5249 MOV R9,R0
5250 ENDASM
5251
5252
5253 CODE START
5254     MOV #%1011010100,&$3C0
5255     MOV #1,&$3E0
5256     MOV #19,&$3D2
5257     MOV #%01100000,&$3C6
5258     MOV #10,&$3D6
5259     BIS.B #$20,&$204
5260     BIS.B #$20,&$20A
5261     BIS.B #7,&$245
5262     BIC.B #7,&$247
5263     BIS.B #$0F,&$224
5264     BIC.B #$0F,&$226
5265     BIS.B #4,&$20A
5266     BIC.B #4,&$20C
5267     MOV #RC5_INT,&$FFDE
5268     MOV #%0100010100,&$340
5269     MOV ##1638,&$352
5270     MOV #%10000,&$342
5271     MOV #WDT_INT,&$FFEA
5272
5273     MOV #SLEEP,R9
5274     MOV #BACKGROUND,2(R9)
5275
5276 LO2HI
5277
5278     $03E8 20_US
5279     $03 TOP_LCD
5280     $CD 20_US
5281     $03 TOP_LCD
5282     $5 20_US
5283     $03 TOP_LCD
5284     $2 20_US
5285     $02 TOP_LCD
5286     $2 20_US
5287     $28 LCD_WRF
5288     $08 LCD_WRF
5289     LCD_Clear
5290     $06 LCD_WRF
5291     $0C LCD_WRF
5292     LCD_Clear
5293     ['] LCD_HOME IS CR
5294     ['] LCD_WRC  IS EMIT
5295     CR ." I love you"   
5296     ['] CR >BODY IS CR
5297     ['] EMIT >BODY IS EMIT
5298     ." RC5toLCD is running. Type STOP to quit"
5299     LIT RECURSE IS WARM
5300     ABORT
5301 ;
5302
5303
5304 CODE STOP
5305     MOV #SLEEP,R9
5306     ADD #4,R9
5307     MOV R9,-2(R9)
5308
5309 COLON
5310     ['] WARM >BODY IS WARM
5311
5312     COLD
5313 ;
5314
5315
5316
5317             ; downloading RC5toLCD.4th is done
5318 RST_HERE    ; this app is protected against <reset>
5319
5320 [THEN]
5321
5322
5323
5324
5325
5326 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
5327
5328 [DEFINED] ASM [IF]
5329
5330 MARKER {RC5TOLCD}
5331
5332 [UNDEFINED] MAX [IF]
5333
5334 CODE MAX
5335     CMP @R15,R14
5336     S<  ?GOTO FW1
5337 BW1 ADD #2,R15
5338     MOV @R13+,R0
5339 ENDCODE
5340
5341
5342 CODE MIN
5343     CMP @R15,R14
5344     S<  ?GOTO BW1
5345 FW1 MOV @R15+,R14
5346     MOV @R13+,R0
5347 ENDCODE
5348
5349 [THEN]
5350
5351
5352 [UNDEFINED] U.R [IF]
5353 : U.R
5354   >R  <# 0 # #S #>  
5355   R> OVER - 0 MAX SPACES TYPE
5356 ;
5357 [THEN]
5358
5359
5360
5361 CODE 20_US
5362 BEGIN
5363     BEGIN
5364         BIT #1,&$3C0
5365     0<> UNTIL
5366     BIC #1,&$3C0
5367     SUB #1,R14
5368 U< UNTIL
5369 MOV @R15+,R14
5370 MOV @R13+,R0
5371 ENDCODE
5372
5373
5374 CODE TOP_LCD
5375     BIS.B #4,&$243
5376     BIT.B #1,&$241
5377 0= IF
5378     AND.B #$0F,R14
5379     MOV.B R14,&$222
5380     BIC.B #4,&$243
5381     MOV @R15+,R14
5382     MOV @R13+,R0
5383 THEN
5384     SUB #2,R15
5385     MOV R14,0(R15)
5386     BIC.B #4,&$243
5387     MOV.B &$220,R14
5388     AND.B #$0F,R14
5389     MOV @R13+,R0
5390 ENDCODE
5391
5392
5393 CODE LCD_W
5394     SUB #2,R15
5395     MOV R14,0(R15)
5396     RRUM #4,R14
5397     BIC.B #1,&$243
5398     BIS.B #$0F,&$224
5399 COLON
5400     TOP_LCD 2 20_US
5401     TOP_LCD 2 20_US 
5402 ;
5403
5404
5405 CODE LCD_WrC
5406     BIS.B #2,&$243
5407     JMP LCD_W 
5408 ENDCODE
5409
5410
5411 CODE LCD_WrF
5412     BIC.B #2,&$243
5413     JMP LCD_W 
5414 ENDCODE
5415
5416
5417 : LCD_Clear 
5418     $01 LCD_WrF 100 20_us
5419 ;
5420
5421
5422 : LCD_Home 
5423     $02 LCD_WrF 100 20_us 
5424 ;
5425
5426
5427 [UNDEFINED] OR [IF]
5428
5429 CODE OR
5430 BIS @R15+,R14
5431 MOV @R13+,R0
5432 ENDCODE
5433
5434
5435 [THEN]
5436
5437 : LCD_Entry_set     $04 OR LCD_WrF ;
5438
5439 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
5440
5441 : LCD_DSP_Shift     $10 OR LCD_WrF ;
5442
5443 : LCD_Fn_Set        $20 OR LCD_WrF ;
5444
5445 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
5446
5447 : LCD_Goto          $80 OR LCD_WrF ;
5448
5449 CODE LCD_R
5450     BIC.B #$0F,&$224
5451     BIS.B #1,&$243
5452 COLON
5453     TOP_LCD 2 20_us
5454     TOP_LCD 2 20_us
5455 HI2LO
5456     RLAM #4,0(R15)
5457     ADD.B @R15+,R14
5458     MOV @R1+,R13
5459     MOV @R13+,R0
5460 ENDCODE
5461
5462
5463 CODE LCD_RdS
5464     BIC.B #2,&$243
5465     JMP LCD_R
5466 ENDCODE
5467
5468
5469 CODE LCD_RdC
5470     BIS.B #2,&$243
5471     JMP LCD_R
5472 ENDCODE
5473
5474
5475
5476 ASM WDT_INT
5477 BIT.B #$20,&$240
5478 0= IF
5479     CMP #19,&$3D6
5480     U< IF
5481         ADD #1,&$3D6
5482     THEN
5483 ELSE
5484     BIT.B #$40,&$240
5485     0= IF
5486         CMP #3,&$3D6
5487         U>= IF
5488            SUB #1,&$3D6
5489         THEN
5490     THEN
5491 THEN
5492 BW1
5493 BW2
5494 BW3
5495 BIC #$78,0(R1)
5496 RETI
5497 ENDASM
5498
5499
5500 ASM RC5_INT
5501   MOV #1,&$3A0
5502 MOV #1778,R9
5503 MOV #14,R10
5504 BEGIN
5505 MOV #%1011100100,&$380
5506     RRUM    #1,R9
5507     MOV     R9,R8
5508     RRUM    #1,R8
5509     ADD     R9,R8
5510     BEGIN   CMP R8,&$390
5511     U>= UNTIL
5512     BIT.B   #4,&$200
5513     ADDC    R11,R11
5514     MOV.B   &$200,&$208
5515     BIC.B   #4,&$20C
5516     SUB     #1,R10
5517 0<> WHILE
5518     ADD R9,R8
5519     BEGIN
5520         MOV &$390,R9
5521         CMP R8,R9
5522         U>= IF
5523         BIC #$30,&$380
5524         GOTO BW1
5525         THEN
5526         BIT.B #4,&$20C
5527     0<> UNTIL
5528 REPEAT
5529 BIC #$30,&$380
5530 RLAM    #1,R11
5531 MOV.B   R11,R9
5532 RRUM    #2,R9
5533 BIT     #$4000,R11
5534 0= IF   BIS #$40,R9
5535 THEN
5536 RRUM    #3,R11
5537 XOR     @R1,R11
5538 BIT     #$400,R11
5539 0= ?GOTO BW2
5540 XOR #$400,0(R1)
5541 SUB #4,R15
5542 MOV &BASE,2(R15)
5543 MOV #$10,&BASE
5544 MOV R14,0(R15)
5545 MOV R9,R14
5546 LO2HI
5547     ['] LCD_CLEAR IS CR
5548     ['] LCD_WrC  IS EMIT
5549     CR ." $" 2 U.R
5550     ['] CR >BODY IS CR
5551     ['] EMIT >BODY IS EMIT
5552 HI2LO
5553 MOV R14,&BASE
5554 MOV @R15+,R14
5555 GOTO BW3
5556 ENDASM
5557
5558
5559 ASM BACKGROUND
5560 MOV #SLEEP,R9
5561 ADD #4,R9
5562 MOV R9,R0
5563 ENDASM
5564
5565
5566 CODE START
5567     MOV #%1011010100,&$3C0
5568     MOV #1,&$3E0
5569     MOV #19,&$3D2
5570     MOV #%01100000,&$3C6
5571     MOV #10,&$3D6
5572     BIS.B #$20,&$204
5573     BIS.B #$20,&$20A
5574     BIS.B #7,&$245
5575     BIC.B #7,&$247
5576     BIS.B #$0F,&$224
5577     BIC.B #$0F,&$226
5578     BIS.B #4,&$20A
5579     BIC.B #4,&$20C
5580     MOV #RC5_INT,&$FFDE
5581     MOV #%0100010100,&$340
5582     MOV ##1638,&$352
5583     MOV #%10000,&$342
5584     MOV #WDT_INT,&$FFEA
5585
5586     MOV #SLEEP,R9
5587     MOV #BACKGROUND,2(R9)
5588
5589 LO2HI
5590
5591     $03E8 20_US
5592     $03 TOP_LCD
5593     $CD 20_US
5594     $03 TOP_LCD
5595     $5 20_US
5596     $03 TOP_LCD
5597     $2 20_US
5598     $02 TOP_LCD
5599     $2 20_US
5600     $28 LCD_WRF
5601     $08 LCD_WRF
5602     LCD_Clear
5603     $06 LCD_WRF
5604     $0C LCD_WRF
5605     LCD_Clear
5606     ['] LCD_HOME IS CR
5607     ['] LCD_WRC  IS EMIT
5608     CR ." I love you"   
5609     ['] CR >BODY IS CR
5610     ['] EMIT >BODY IS EMIT
5611     ." RC5toLCD is running. Type STOP to quit"
5612     LIT RECURSE IS WARM
5613     ABORT
5614 ;
5615
5616
5617 CODE STOP
5618     MOV #SLEEP,R9
5619     ADD #4,R9
5620     MOV R9,-2(R9)
5621
5622 COLON
5623     ['] WARM >BODY IS WARM
5624
5625     COLD
5626 ;
5627
5628
5629
5630             ; downloading RC5toLCD.4th is done
5631 RST_HERE    ; this app is protected against <reset>
5632
5633 [THEN]
5634
5635
5636
5637
5638
5639 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
5640
5641 [DEFINED] ASM [IF]
5642
5643 MARKER {RC5TOLCD}
5644
5645 [UNDEFINED] MAX [IF]
5646
5647 CODE MAX
5648     CMP @R15,R14
5649     S<  ?GOTO FW1
5650 BW1 ADD #2,R15
5651     MOV @R13+,R0
5652 ENDCODE
5653
5654
5655 CODE MIN
5656     CMP @R15,R14
5657     S<  ?GOTO BW1
5658 FW1 MOV @R15+,R14
5659     MOV @R13+,R0
5660 ENDCODE
5661
5662 [THEN]
5663
5664
5665 [UNDEFINED] U.R [IF]
5666 : U.R
5667   >R  <# 0 # #S #>  
5668   R> OVER - 0 MAX SPACES TYPE
5669 ;
5670 [THEN]
5671
5672
5673
5674 CODE 20_US
5675 BEGIN
5676     BEGIN
5677         BIT #1,&$3C0
5678     0<> UNTIL
5679     BIC #1,&$3C0
5680     SUB #1,R14
5681 U< UNTIL
5682 MOV @R15+,R14
5683 MOV @R13+,R0
5684 ENDCODE
5685
5686
5687 CODE TOP_LCD
5688     BIS.B #4,&$243
5689     BIT.B #1,&$241
5690 0= IF
5691     AND.B #$0F,R14
5692     MOV.B R14,&$222
5693     BIC.B #4,&$243
5694     MOV @R15+,R14
5695     MOV @R13+,R0
5696 THEN
5697     SUB #2,R15
5698     MOV R14,0(R15)
5699     BIC.B #4,&$243
5700     MOV.B &$220,R14
5701     AND.B #$0F,R14
5702     MOV @R13+,R0
5703 ENDCODE
5704
5705
5706 CODE LCD_W
5707     SUB #2,R15
5708     MOV R14,0(R15)
5709     RRUM #4,R14
5710     BIC.B #1,&$243
5711     BIS.B #$0F,&$224
5712 COLON
5713     TOP_LCD 2 20_US
5714     TOP_LCD 2 20_US 
5715 ;
5716
5717
5718 CODE LCD_WrC
5719     BIS.B #2,&$243
5720     JMP LCD_W 
5721 ENDCODE
5722
5723
5724 CODE LCD_WrF
5725     BIC.B #2,&$243
5726     JMP LCD_W 
5727 ENDCODE
5728
5729
5730 : LCD_Clear 
5731     $01 LCD_WrF 100 20_us
5732 ;
5733
5734
5735 : LCD_Home 
5736     $02 LCD_WrF 100 20_us 
5737 ;
5738
5739
5740 [UNDEFINED] OR [IF]
5741
5742 CODE OR
5743 BIS @R15+,R14
5744 MOV @R13+,R0
5745 ENDCODE
5746
5747
5748 [THEN]
5749
5750 : LCD_Entry_set     $04 OR LCD_WrF ;
5751
5752 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
5753
5754 : LCD_DSP_Shift     $10 OR LCD_WrF ;
5755
5756 : LCD_Fn_Set        $20 OR LCD_WrF ;
5757
5758 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
5759
5760 : LCD_Goto          $80 OR LCD_WrF ;
5761
5762 CODE LCD_R
5763     BIC.B #$0F,&$224
5764     BIS.B #1,&$243
5765 COLON
5766     TOP_LCD 2 20_us
5767     TOP_LCD 2 20_us
5768 HI2LO
5769     RLAM #4,0(R15)
5770     ADD.B @R15+,R14
5771     MOV @R1+,R13
5772     MOV @R13+,R0
5773 ENDCODE
5774
5775
5776 CODE LCD_RdS
5777     BIC.B #2,&$243
5778     JMP LCD_R
5779 ENDCODE
5780
5781
5782 CODE LCD_RdC
5783     BIS.B #2,&$243
5784     JMP LCD_R
5785 ENDCODE
5786
5787
5788
5789 ASM WDT_INT
5790 BIT.B #$20,&$240
5791 0= IF
5792     CMP #19,&$3D6
5793     U< IF
5794         ADD #1,&$3D6
5795     THEN
5796 ELSE
5797     BIT.B #$40,&$240
5798     0= IF
5799         CMP #3,&$3D6
5800         U>= IF
5801            SUB #1,&$3D6
5802         THEN
5803     THEN
5804 THEN
5805 BW1
5806 BW2
5807 BW3
5808 BIC #$78,0(R1)
5809 RETI
5810 ENDASM
5811
5812
5813 ASM RC5_INT
5814   MOV #1,&$3A0
5815 MOV #1778,R9
5816 MOV #14,R10
5817 BEGIN
5818 MOV #%1011100100,&$380
5819     RRUM    #1,R9
5820     MOV     R9,R8
5821     RRUM    #1,R8
5822     ADD     R9,R8
5823     BEGIN   CMP R8,&$390
5824     U>= UNTIL
5825     BIT.B   #4,&$200
5826     ADDC    R11,R11
5827     MOV.B   &$200,&$208
5828     BIC.B   #4,&$20C
5829     SUB     #1,R10
5830 0<> WHILE
5831     ADD R9,R8
5832     BEGIN
5833         MOV &$390,R9
5834         CMP R8,R9
5835         U>= IF
5836         BIC #$30,&$380
5837         GOTO BW1
5838         THEN
5839         BIT.B #4,&$20C
5840     0<> UNTIL
5841 REPEAT
5842 BIC #$30,&$380
5843 RLAM    #1,R11
5844 MOV.B   R11,R9
5845 RRUM    #2,R9
5846 BIT     #$4000,R11
5847 0= IF   BIS #$40,R9
5848 THEN
5849 RRUM    #3,R11
5850 XOR     @R1,R11
5851 BIT     #$400,R11
5852 0= ?GOTO BW2
5853 XOR #$400,0(R1)
5854 SUB #4,R15
5855 MOV &BASE,2(R15)
5856 MOV #$10,&BASE
5857 MOV R14,0(R15)
5858 MOV R9,R14
5859 LO2HI
5860     ['] LCD_CLEAR IS CR
5861     ['] LCD_WrC  IS EMIT
5862     CR ." $" 2 U.R
5863     ['] CR >BODY IS CR
5864     ['] EMIT >BODY IS EMIT
5865 HI2LO
5866 MOV R14,&BASE
5867 MOV @R15+,R14
5868 GOTO BW3
5869 ENDASM
5870
5871
5872 ASM BACKGROUND
5873 MOV #SLEEP,R9
5874 ADD #4,R9
5875 MOV R9,R0
5876 ENDASM
5877
5878
5879 CODE START
5880     MOV #%1011010100,&$3C0
5881     MOV #1,&$3E0
5882     MOV #19,&$3D2
5883     MOV #%01100000,&$3C6
5884     MOV #10,&$3D6
5885     BIS.B #$20,&$204
5886     BIS.B #$20,&$20A
5887     BIS.B #7,&$245
5888     BIC.B #7,&$247
5889     BIS.B #$0F,&$224
5890     BIC.B #$0F,&$226
5891     BIS.B #4,&$20A
5892     BIC.B #4,&$20C
5893     MOV #RC5_INT,&$FFDE
5894     MOV #%0100010100,&$340
5895     MOV ##1638,&$352
5896     MOV #%10000,&$342
5897     MOV #WDT_INT,&$FFEA
5898
5899     MOV #SLEEP,R9
5900     MOV #BACKGROUND,2(R9)
5901
5902 LO2HI
5903
5904     $03E8 20_US
5905     $03 TOP_LCD
5906     $CD 20_US
5907     $03 TOP_LCD
5908     $5 20_US
5909     $03 TOP_LCD
5910     $2 20_US
5911     $02 TOP_LCD
5912     $2 20_US
5913     $28 LCD_WRF
5914     $08 LCD_WRF
5915     LCD_Clear
5916     $06 LCD_WRF
5917     $0C LCD_WRF
5918     LCD_Clear
5919     ['] LCD_HOME IS CR
5920     ['] LCD_WRC  IS EMIT
5921     CR ." I love you"   
5922     ['] CR >BODY IS CR
5923     ['] EMIT >BODY IS EMIT
5924     ." RC5toLCD is running. Type STOP to quit"
5925     LIT RECURSE IS WARM
5926     ABORT
5927 ;
5928
5929
5930 CODE STOP
5931     MOV #SLEEP,R9
5932     ADD #4,R9
5933     MOV R9,-2(R9)
5934
5935 COLON
5936     ['] WARM >BODY IS WARM
5937
5938     COLD
5939 ;
5940
5941
5942
5943             ; downloading RC5toLCD.4th is done
5944 RST_HERE    ; this app is protected against <reset>
5945
5946 [THEN]
5947
5948
5949
5950
5951
5952 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
5953
5954 [DEFINED] ASM [IF]
5955
5956 MARKER {RC5TOLCD}
5957
5958 [UNDEFINED] MAX [IF]
5959
5960 CODE MAX
5961     CMP @R15,R14
5962     S<  ?GOTO FW1
5963 BW1 ADD #2,R15
5964     MOV @R13+,R0
5965 ENDCODE
5966
5967
5968 CODE MIN
5969     CMP @R15,R14
5970     S<  ?GOTO BW1
5971 FW1 MOV @R15+,R14
5972     MOV @R13+,R0
5973 ENDCODE
5974
5975 [THEN]
5976
5977
5978 [UNDEFINED] U.R [IF]
5979 : U.R
5980   >R  <# 0 # #S #>  
5981   R> OVER - 0 MAX SPACES TYPE
5982 ;
5983 [THEN]
5984
5985
5986
5987 CODE 20_US
5988 BEGIN
5989     BEGIN
5990         BIT #1,&$3C0
5991     0<> UNTIL
5992     BIC #1,&$3C0
5993     SUB #1,R14
5994 U< UNTIL
5995 MOV @R15+,R14
5996 MOV @R13+,R0
5997 ENDCODE
5998
5999
6000 CODE TOP_LCD
6001     BIS.B #4,&$243
6002     BIT.B #1,&$241
6003 0= IF
6004     AND.B #$0F,R14
6005     MOV.B R14,&$222
6006     BIC.B #4,&$243
6007     MOV @R15+,R14
6008     MOV @R13+,R0
6009 THEN
6010     SUB #2,R15
6011     MOV R14,0(R15)
6012     BIC.B #4,&$243
6013     MOV.B &$220,R14
6014     AND.B #$0F,R14
6015     MOV @R13+,R0
6016 ENDCODE
6017
6018
6019 CODE LCD_W
6020     SUB #2,R15
6021     MOV R14,0(R15)
6022     RRUM #4,R14
6023     BIC.B #1,&$243
6024     BIS.B #$0F,&$224
6025 COLON
6026     TOP_LCD 2 20_US
6027     TOP_LCD 2 20_US 
6028 ;
6029
6030
6031 CODE LCD_WrC
6032     BIS.B #2,&$243
6033     JMP LCD_W 
6034 ENDCODE
6035
6036
6037 CODE LCD_WrF
6038     BIC.B #2,&$243
6039     JMP LCD_W 
6040 ENDCODE
6041
6042
6043 : LCD_Clear 
6044     $01 LCD_WrF 100 20_us
6045 ;
6046
6047
6048 : LCD_Home 
6049     $02 LCD_WrF 100 20_us 
6050 ;
6051
6052
6053 [UNDEFINED] OR [IF]
6054
6055 CODE OR
6056 BIS @R15+,R14
6057 MOV @R13+,R0
6058 ENDCODE
6059
6060
6061 [THEN]
6062
6063 : LCD_Entry_set     $04 OR LCD_WrF ;
6064
6065 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
6066
6067 : LCD_DSP_Shift     $10 OR LCD_WrF ;
6068
6069 : LCD_Fn_Set        $20 OR LCD_WrF ;
6070
6071 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
6072
6073 : LCD_Goto          $80 OR LCD_WrF ;
6074
6075 CODE LCD_R
6076     BIC.B #$0F,&$224
6077     BIS.B #1,&$243
6078 COLON
6079     TOP_LCD 2 20_us
6080     TOP_LCD 2 20_us
6081 HI2LO
6082     RLAM #4,0(R15)
6083     ADD.B @R15+,R14
6084     MOV @R1+,R13
6085     MOV @R13+,R0
6086 ENDCODE
6087
6088
6089 CODE LCD_RdS
6090     BIC.B #2,&$243
6091     JMP LCD_R
6092 ENDCODE
6093
6094
6095 CODE LCD_RdC
6096     BIS.B #2,&$243
6097     JMP LCD_R
6098 ENDCODE
6099
6100
6101
6102 ASM WDT_INT
6103 BIT.B #$20,&$240
6104 0= IF
6105     CMP #19,&$3D6
6106     U< IF
6107         ADD #1,&$3D6
6108     THEN
6109 ELSE
6110     BIT.B #$40,&$240
6111     0= IF
6112         CMP #3,&$3D6
6113         U>= IF
6114            SUB #1,&$3D6
6115         THEN
6116     THEN
6117 THEN
6118 BW1
6119 BW2
6120 BW3
6121 BIC #$78,0(R1)
6122 RETI
6123 ENDASM
6124
6125
6126 ASM RC5_INT
6127   MOV #1,&$3A0
6128 MOV #1778,R9
6129 MOV #14,R10
6130 BEGIN
6131 MOV #%1011100100,&$380
6132     RRUM    #1,R9
6133     MOV     R9,R8
6134     RRUM    #1,R8
6135     ADD     R9,R8
6136     BEGIN   CMP R8,&$390
6137     U>= UNTIL
6138     BIT.B   #4,&$200
6139     ADDC    R11,R11
6140     MOV.B   &$200,&$208
6141     BIC.B   #4,&$20C
6142     SUB     #1,R10
6143 0<> WHILE
6144     ADD R9,R8
6145     BEGIN
6146         MOV &$390,R9
6147         CMP R8,R9
6148         U>= IF
6149         BIC #$30,&$380
6150         GOTO BW1
6151         THEN
6152         BIT.B #4,&$20C
6153     0<> UNTIL
6154 REPEAT
6155 BIC #$30,&$380
6156 RLAM    #1,R11
6157 MOV.B   R11,R9
6158 RRUM    #2,R9
6159 BIT     #$4000,R11
6160 0= IF   BIS #$40,R9
6161 THEN
6162 RRUM    #3,R11
6163 XOR     @R1,R11
6164 BIT     #$400,R11
6165 0= ?GOTO BW2
6166 XOR #$400,0(R1)
6167 SUB #4,R15
6168 MOV &BASE,2(R15)
6169 MOV #$10,&BASE
6170 MOV R14,0(R15)
6171 MOV R9,R14
6172 LO2HI
6173     ['] LCD_CLEAR IS CR
6174     ['] LCD_WrC  IS EMIT
6175     CR ." $" 2 U.R
6176     ['] CR >BODY IS CR
6177     ['] EMIT >BODY IS EMIT
6178 HI2LO
6179 MOV R14,&BASE
6180 MOV @R15+,R14
6181 GOTO BW3
6182 ENDASM
6183
6184
6185 ASM BACKGROUND
6186 MOV #SLEEP,R9
6187 ADD #4,R9
6188 MOV R9,R0
6189 ENDASM
6190
6191
6192 CODE START
6193     MOV #%1011010100,&$3C0
6194     MOV #1,&$3E0
6195     MOV #19,&$3D2
6196     MOV #%01100000,&$3C6
6197     MOV #10,&$3D6
6198     BIS.B #$20,&$204
6199     BIS.B #$20,&$20A
6200     BIS.B #7,&$245
6201     BIC.B #7,&$247
6202     BIS.B #$0F,&$224
6203     BIC.B #$0F,&$226
6204     BIS.B #4,&$20A
6205     BIC.B #4,&$20C
6206     MOV #RC5_INT,&$FFDE
6207     MOV #%0100010100,&$340
6208     MOV ##1638,&$352
6209     MOV #%10000,&$342
6210     MOV #WDT_INT,&$FFEA
6211
6212     MOV #SLEEP,R9
6213     MOV #BACKGROUND,2(R9)
6214
6215 LO2HI
6216
6217     $03E8 20_US
6218     $03 TOP_LCD
6219     $CD 20_US
6220     $03 TOP_LCD
6221     $5 20_US
6222     $03 TOP_LCD
6223     $2 20_US
6224     $02 TOP_LCD
6225     $2 20_US
6226     $28 LCD_WRF
6227     $08 LCD_WRF
6228     LCD_Clear
6229     $06 LCD_WRF
6230     $0C LCD_WRF
6231     LCD_Clear
6232     ['] LCD_HOME IS CR
6233     ['] LCD_WRC  IS EMIT
6234     CR ." I love you"   
6235     ['] CR >BODY IS CR
6236     ['] EMIT >BODY IS EMIT
6237     ." RC5toLCD is running. Type STOP to quit"
6238     LIT RECURSE IS WARM
6239     ABORT
6240 ;
6241
6242
6243 CODE STOP
6244     MOV #SLEEP,R9
6245     ADD #4,R9
6246     MOV R9,-2(R9)
6247
6248 COLON
6249     ['] WARM >BODY IS WARM
6250
6251     COLD
6252 ;
6253
6254
6255
6256             ; downloading RC5toLCD.4th is done
6257 RST_HERE    ; this app is protected against <reset>
6258
6259 [THEN]
6260
6261
6262
6263
6264
6265 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
6266
6267 [DEFINED] ASM [IF]
6268
6269 MARKER {RC5TOLCD}
6270
6271 [UNDEFINED] MAX [IF]
6272
6273 CODE MAX
6274     CMP @R15,R14
6275     S<  ?GOTO FW1
6276 BW1 ADD #2,R15
6277     MOV @R13+,R0
6278 ENDCODE
6279
6280
6281 CODE MIN
6282     CMP @R15,R14
6283     S<  ?GOTO BW1
6284 FW1 MOV @R15+,R14
6285     MOV @R13+,R0
6286 ENDCODE
6287
6288 [THEN]
6289
6290
6291 [UNDEFINED] U.R [IF]
6292 : U.R
6293   >R  <# 0 # #S #>  
6294   R> OVER - 0 MAX SPACES TYPE
6295 ;
6296 [THEN]
6297
6298
6299
6300 CODE 20_US
6301 BEGIN
6302     BEGIN
6303         BIT #1,&$3C0
6304     0<> UNTIL
6305     BIC #1,&$3C0
6306     SUB #1,R14
6307 U< UNTIL
6308 MOV @R15+,R14
6309 MOV @R13+,R0
6310 ENDCODE
6311
6312
6313 CODE TOP_LCD
6314     BIS.B #4,&$243
6315     BIT.B #1,&$241
6316 0= IF
6317     AND.B #$0F,R14
6318     MOV.B R14,&$222
6319     BIC.B #4,&$243
6320     MOV @R15+,R14
6321     MOV @R13+,R0
6322 THEN
6323     SUB #2,R15
6324     MOV R14,0(R15)
6325     BIC.B #4,&$243
6326     MOV.B &$220,R14
6327     AND.B #$0F,R14
6328     MOV @R13+,R0
6329 ENDCODE
6330
6331
6332 CODE LCD_W
6333     SUB #2,R15
6334     MOV R14,0(R15)
6335     RRUM #4,R14
6336     BIC.B #1,&$243
6337     BIS.B #$0F,&$224
6338 COLON
6339     TOP_LCD 2 20_US
6340     TOP_LCD 2 20_US 
6341 ;
6342
6343
6344 CODE LCD_WrC
6345     BIS.B #2,&$243
6346     JMP LCD_W 
6347 ENDCODE
6348
6349
6350 CODE LCD_WrF
6351     BIC.B #2,&$243
6352     JMP LCD_W 
6353 ENDCODE
6354
6355
6356 : LCD_Clear 
6357     $01 LCD_WrF 100 20_us
6358 ;
6359
6360
6361 : LCD_Home 
6362     $02 LCD_WrF 100 20_us 
6363 ;
6364
6365
6366 [UNDEFINED] OR [IF]
6367
6368 CODE OR
6369 BIS @R15+,R14
6370 MOV @R13+,R0
6371 ENDCODE
6372
6373
6374 [THEN]
6375
6376 : LCD_Entry_set     $04 OR LCD_WrF ;
6377
6378 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
6379
6380 : LCD_DSP_Shift     $10 OR LCD_WrF ;
6381
6382 : LCD_Fn_Set        $20 OR LCD_WrF ;
6383
6384 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
6385
6386 : LCD_Goto          $80 OR LCD_WrF ;
6387
6388 CODE LCD_R
6389     BIC.B #$0F,&$224
6390     BIS.B #1,&$243
6391 COLON
6392     TOP_LCD 2 20_us
6393     TOP_LCD 2 20_us
6394 HI2LO
6395     RLAM #4,0(R15)
6396     ADD.B @R15+,R14
6397     MOV @R1+,R13
6398     MOV @R13+,R0
6399 ENDCODE
6400
6401
6402 CODE LCD_RdS
6403     BIC.B #2,&$243
6404     JMP LCD_R
6405 ENDCODE
6406
6407
6408 CODE LCD_RdC
6409     BIS.B #2,&$243
6410     JMP LCD_R
6411 ENDCODE
6412
6413
6414
6415 ASM WDT_INT
6416 BIT.B #$20,&$240
6417 0= IF
6418     CMP #19,&$3D6
6419     U< IF
6420         ADD #1,&$3D6
6421     THEN
6422 ELSE
6423     BIT.B #$40,&$240
6424     0= IF
6425         CMP #3,&$3D6
6426         U>= IF
6427            SUB #1,&$3D6
6428         THEN
6429     THEN
6430 THEN
6431 BW1
6432 BW2
6433 BW3
6434 BIC #$78,0(R1)
6435 RETI
6436 ENDASM
6437
6438
6439 ASM RC5_INT
6440   MOV #1,&$3A0
6441 MOV #1778,R9
6442 MOV #14,R10
6443 BEGIN
6444 MOV #%1011100100,&$380
6445     RRUM    #1,R9
6446     MOV     R9,R8
6447     RRUM    #1,R8
6448     ADD     R9,R8
6449     BEGIN   CMP R8,&$390
6450     U>= UNTIL
6451     BIT.B   #4,&$200
6452     ADDC    R11,R11
6453     MOV.B   &$200,&$208
6454     BIC.B   #4,&$20C
6455     SUB     #1,R10
6456 0<> WHILE
6457     ADD R9,R8
6458     BEGIN
6459         MOV &$390,R9
6460         CMP R8,R9
6461         U>= IF
6462         BIC #$30,&$380
6463         GOTO BW1
6464         THEN
6465         BIT.B #4,&$20C
6466     0<> UNTIL
6467 REPEAT
6468 BIC #$30,&$380
6469 RLAM    #1,R11
6470 MOV.B   R11,R9
6471 RRUM    #2,R9
6472 BIT     #$4000,R11
6473 0= IF   BIS #$40,R9
6474 THEN
6475 RRUM    #3,R11
6476 XOR     @R1,R11
6477 BIT     #$400,R11
6478 0= ?GOTO BW2
6479 XOR #$400,0(R1)
6480 SUB #4,R15
6481 MOV &BASE,2(R15)
6482 MOV #$10,&BASE
6483 MOV R14,0(R15)
6484 MOV R9,R14
6485 LO2HI
6486     ['] LCD_CLEAR IS CR
6487     ['] LCD_WrC  IS EMIT
6488     CR ." $" 2 U.R
6489     ['] CR >BODY IS CR
6490     ['] EMIT >BODY IS EMIT
6491 HI2LO
6492 MOV R14,&BASE
6493 MOV @R15+,R14
6494 GOTO BW3
6495 ENDASM
6496
6497
6498 ASM BACKGROUND
6499 MOV #SLEEP,R9
6500 ADD #4,R9
6501 MOV R9,R0
6502 ENDASM
6503
6504
6505 CODE START
6506     MOV #%1011010100,&$3C0
6507     MOV #1,&$3E0
6508     MOV #19,&$3D2
6509     MOV #%01100000,&$3C6
6510     MOV #10,&$3D6
6511     BIS.B #$20,&$204
6512     BIS.B #$20,&$20A
6513     BIS.B #7,&$245
6514     BIC.B #7,&$247
6515     BIS.B #$0F,&$224
6516     BIC.B #$0F,&$226
6517     BIS.B #4,&$20A
6518     BIC.B #4,&$20C
6519     MOV #RC5_INT,&$FFDE
6520     MOV #%0100010100,&$340
6521     MOV ##1638,&$352
6522     MOV #%10000,&$342
6523     MOV #WDT_INT,&$FFEA
6524
6525     MOV #SLEEP,R9
6526     MOV #BACKGROUND,2(R9)
6527
6528 LO2HI
6529
6530     $03E8 20_US
6531     $03 TOP_LCD
6532     $CD 20_US
6533     $03 TOP_LCD
6534     $5 20_US
6535     $03 TOP_LCD
6536     $2 20_US
6537     $02 TOP_LCD
6538     $2 20_US
6539     $28 LCD_WRF
6540     $08 LCD_WRF
6541     LCD_Clear
6542     $06 LCD_WRF
6543     $0C LCD_WRF
6544     LCD_Clear
6545     ['] LCD_HOME IS CR
6546     ['] LCD_WRC  IS EMIT
6547     CR ." I love you"   
6548     ['] CR >BODY IS CR
6549     ['] EMIT >BODY IS EMIT
6550     ." RC5toLCD is running. Type STOP to quit"
6551     LIT RECURSE IS WARM
6552     ABORT
6553 ;
6554
6555
6556 CODE STOP
6557     MOV #SLEEP,R9
6558     ADD #4,R9
6559     MOV R9,-2(R9)
6560
6561 COLON
6562     ['] WARM >BODY IS WARM
6563
6564     COLD
6565 ;
6566
6567
6568
6569             ; downloading RC5toLCD.4th is done
6570 RST_HERE    ; this app is protected against <reset>
6571
6572 [THEN]
6573
6574
6575
6576
6577
6578 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
6579
6580 [DEFINED] ASM [IF]
6581
6582 MARKER {RC5TOLCD}
6583
6584 [UNDEFINED] MAX [IF]
6585
6586 CODE MAX
6587     CMP @R15,R14
6588     S<  ?GOTO FW1
6589 BW1 ADD #2,R15
6590     MOV @R13+,R0
6591 ENDCODE
6592
6593
6594 CODE MIN
6595     CMP @R15,R14
6596     S<  ?GOTO BW1
6597 FW1 MOV @R15+,R14
6598     MOV @R13+,R0
6599 ENDCODE
6600
6601 [THEN]
6602
6603
6604 [UNDEFINED] U.R [IF]
6605 : U.R
6606   >R  <# 0 # #S #>  
6607   R> OVER - 0 MAX SPACES TYPE
6608 ;
6609 [THEN]
6610
6611
6612
6613 CODE 20_US
6614 BEGIN
6615     BEGIN
6616         BIT #1,&$3C0
6617     0<> UNTIL
6618     BIC #1,&$3C0
6619     SUB #1,R14
6620 U< UNTIL
6621 MOV @R15+,R14
6622 MOV @R13+,R0
6623 ENDCODE
6624
6625
6626 CODE TOP_LCD
6627     BIS.B #4,&$243
6628     BIT.B #1,&$241
6629 0= IF
6630     AND.B #$0F,R14
6631     MOV.B R14,&$222
6632     BIC.B #4,&$243
6633     MOV @R15+,R14
6634     MOV @R13+,R0
6635 THEN
6636     SUB #2,R15
6637     MOV R14,0(R15)
6638     BIC.B #4,&$243
6639     MOV.B &$220,R14
6640     AND.B #$0F,R14
6641     MOV @R13+,R0
6642 ENDCODE
6643
6644
6645 CODE LCD_W
6646     SUB #2,R15
6647     MOV R14,0(R15)
6648     RRUM #4,R14
6649     BIC.B #1,&$243
6650     BIS.B #$0F,&$224
6651 COLON
6652     TOP_LCD 2 20_US
6653     TOP_LCD 2 20_US 
6654 ;
6655
6656
6657 CODE LCD_WrC
6658     BIS.B #2,&$243
6659     JMP LCD_W 
6660 ENDCODE
6661
6662
6663 CODE LCD_WrF
6664     BIC.B #2,&$243
6665     JMP LCD_W 
6666 ENDCODE
6667
6668
6669 : LCD_Clear 
6670     $01 LCD_WrF 100 20_us
6671 ;
6672
6673
6674 : LCD_Home 
6675     $02 LCD_WrF 100 20_us 
6676 ;
6677
6678
6679 [UNDEFINED] OR [IF]
6680
6681 CODE OR
6682 BIS @R15+,R14
6683 MOV @R13+,R0
6684 ENDCODE
6685
6686
6687 [THEN]
6688
6689 : LCD_Entry_set     $04 OR LCD_WrF ;
6690
6691 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
6692
6693 : LCD_DSP_Shift     $10 OR LCD_WrF ;
6694
6695 : LCD_Fn_Set        $20 OR LCD_WrF ;
6696
6697 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
6698
6699 : LCD_Goto          $80 OR LCD_WrF ;
6700
6701 CODE LCD_R
6702     BIC.B #$0F,&$224
6703     BIS.B #1,&$243
6704 COLON
6705     TOP_LCD 2 20_us
6706     TOP_LCD 2 20_us
6707 HI2LO
6708     RLAM #4,0(R15)
6709     ADD.B @R15+,R14
6710     MOV @R1+,R13
6711     MOV @R13+,R0
6712 ENDCODE
6713
6714
6715 CODE LCD_RdS
6716     BIC.B #2,&$243
6717     JMP LCD_R
6718 ENDCODE
6719
6720
6721 CODE LCD_RdC
6722     BIS.B #2,&$243
6723     JMP LCD_R
6724 ENDCODE
6725
6726
6727
6728 ASM WDT_INT
6729 BIT.B #$20,&$240
6730 0= IF
6731     CMP #19,&$3D6
6732     U< IF
6733         ADD #1,&$3D6
6734     THEN
6735 ELSE
6736     BIT.B #$40,&$240
6737     0= IF
6738         CMP #3,&$3D6
6739         U>= IF
6740            SUB #1,&$3D6
6741         THEN
6742     THEN
6743 THEN
6744 BW1
6745 BW2
6746 BW3
6747 BIC #$78,0(R1)
6748 RETI
6749 ENDASM
6750
6751
6752 ASM RC5_INT
6753   MOV #1,&$3A0
6754 MOV #1778,R9
6755 MOV #14,R10
6756 BEGIN
6757 MOV #%1011100100,&$380
6758     RRUM    #1,R9
6759     MOV     R9,R8
6760     RRUM    #1,R8
6761     ADD     R9,R8
6762     BEGIN   CMP R8,&$390
6763     U>= UNTIL
6764     BIT.B   #4,&$200
6765     ADDC    R11,R11
6766     MOV.B   &$200,&$208
6767     BIC.B   #4,&$20C
6768     SUB     #1,R10
6769 0<> WHILE
6770     ADD R9,R8
6771     BEGIN
6772         MOV &$390,R9
6773         CMP R8,R9
6774         U>= IF
6775         BIC #$30,&$380
6776         GOTO BW1
6777         THEN
6778         BIT.B #4,&$20C
6779     0<> UNTIL
6780 REPEAT
6781 BIC #$30,&$380
6782 RLAM    #1,R11
6783 MOV.B   R11,R9
6784 RRUM    #2,R9
6785 BIT     #$4000,R11
6786 0= IF   BIS #$40,R9
6787 THEN
6788 RRUM    #3,R11
6789 XOR     @R1,R11
6790 BIT     #$400,R11
6791 0= ?GOTO BW2
6792 XOR #$400,0(R1)
6793 SUB #4,R15
6794 MOV &BASE,2(R15)
6795 MOV #$10,&BASE
6796 MOV R14,0(R15)
6797 MOV R9,R14
6798 LO2HI
6799     ['] LCD_CLEAR IS CR
6800     ['] LCD_WrC  IS EMIT
6801     CR ." $" 2 U.R
6802     ['] CR >BODY IS CR
6803     ['] EMIT >BODY IS EMIT
6804 HI2LO
6805 MOV R14,&BASE
6806 MOV @R15+,R14
6807 GOTO BW3
6808 ENDASM
6809
6810
6811 ASM BACKGROUND
6812 MOV #SLEEP,R9
6813 ADD #4,R9
6814 MOV R9,R0
6815 ENDASM
6816
6817
6818 CODE START
6819     MOV #%1011010100,&$3C0
6820     MOV #1,&$3E0
6821     MOV #19,&$3D2
6822     MOV #%01100000,&$3C6
6823     MOV #10,&$3D6
6824     BIS.B #$20,&$204
6825     BIS.B #$20,&$20A
6826     BIS.B #7,&$245
6827     BIC.B #7,&$247
6828     BIS.B #$0F,&$224
6829     BIC.B #$0F,&$226
6830     BIS.B #4,&$20A
6831     BIC.B #4,&$20C
6832     MOV #RC5_INT,&$FFDE
6833     MOV #%0100010100,&$340
6834     MOV ##1638,&$352
6835     MOV #%10000,&$342
6836     MOV #WDT_INT,&$FFEA
6837
6838     MOV #SLEEP,R9
6839     MOV #BACKGROUND,2(R9)
6840
6841 LO2HI
6842
6843     $03E8 20_US
6844     $03 TOP_LCD
6845     $CD 20_US
6846     $03 TOP_LCD
6847     $5 20_US
6848     $03 TOP_LCD
6849     $2 20_US
6850     $02 TOP_LCD
6851     $2 20_US
6852     $28 LCD_WRF
6853     $08 LCD_WRF
6854     LCD_Clear
6855     $06 LCD_WRF
6856     $0C LCD_WRF
6857     LCD_Clear
6858     ['] LCD_HOME IS CR
6859     ['] LCD_WRC  IS EMIT
6860     CR ." I love you"   
6861     ['] CR >BODY IS CR
6862     ['] EMIT >BODY IS EMIT
6863     ." RC5toLCD is running. Type STOP to quit"
6864     LIT RECURSE IS WARM
6865     ABORT
6866 ;
6867
6868
6869 CODE STOP
6870     MOV #SLEEP,R9
6871     ADD #4,R9
6872     MOV R9,-2(R9)
6873
6874 COLON
6875     ['] WARM >BODY IS WARM
6876
6877     COLD
6878 ;
6879
6880
6881
6882             ; downloading RC5toLCD.4th is done
6883 RST_HERE    ; this app is protected against <reset>
6884
6885 [THEN]
6886
6887
6888
6889
6890
6891 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
6892
6893 [DEFINED] ASM [IF]
6894
6895 MARKER {RC5TOLCD}
6896
6897 [UNDEFINED] MAX [IF]
6898
6899 CODE MAX
6900     CMP @R15,R14
6901     S<  ?GOTO FW1
6902 BW1 ADD #2,R15
6903     MOV @R13+,R0
6904 ENDCODE
6905
6906
6907 CODE MIN
6908     CMP @R15,R14
6909     S<  ?GOTO BW1
6910 FW1 MOV @R15+,R14
6911     MOV @R13+,R0
6912 ENDCODE
6913
6914 [THEN]
6915
6916
6917 [UNDEFINED] U.R [IF]
6918 : U.R
6919   >R  <# 0 # #S #>  
6920   R> OVER - 0 MAX SPACES TYPE
6921 ;
6922 [THEN]
6923
6924
6925
6926 CODE 20_US
6927 BEGIN
6928     BEGIN
6929         BIT #1,&$3C0
6930     0<> UNTIL
6931     BIC #1,&$3C0
6932     SUB #1,R14
6933 U< UNTIL
6934 MOV @R15+,R14
6935 MOV @R13+,R0
6936 ENDCODE
6937
6938
6939 CODE TOP_LCD
6940     BIS.B #4,&$243
6941     BIT.B #1,&$241
6942 0= IF
6943     AND.B #$0F,R14
6944     MOV.B R14,&$222
6945     BIC.B #4,&$243
6946     MOV @R15+,R14
6947     MOV @R13+,R0
6948 THEN
6949     SUB #2,R15
6950     MOV R14,0(R15)
6951     BIC.B #4,&$243
6952     MOV.B &$220,R14
6953     AND.B #$0F,R14
6954     MOV @R13+,R0
6955 ENDCODE
6956
6957
6958 CODE LCD_W
6959     SUB #2,R15
6960     MOV R14,0(R15)
6961     RRUM #4,R14
6962     BIC.B #1,&$243
6963     BIS.B #$0F,&$224
6964 COLON
6965     TOP_LCD 2 20_US
6966     TOP_LCD 2 20_US 
6967 ;
6968
6969
6970 CODE LCD_WrC
6971     BIS.B #2,&$243
6972     JMP LCD_W 
6973 ENDCODE
6974
6975
6976 CODE LCD_WrF
6977     BIC.B #2,&$243
6978     JMP LCD_W 
6979 ENDCODE
6980
6981
6982 : LCD_Clear 
6983     $01 LCD_WrF 100 20_us
6984 ;
6985
6986
6987 : LCD_Home 
6988     $02 LCD_WrF 100 20_us 
6989 ;
6990
6991
6992 [UNDEFINED] OR [IF]
6993
6994 CODE OR
6995 BIS @R15+,R14
6996 MOV @R13+,R0
6997 ENDCODE
6998
6999
7000 [THEN]
7001
7002 : LCD_Entry_set     $04 OR LCD_WrF ;
7003
7004 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
7005
7006 : LCD_DSP_Shift     $10 OR LCD_WrF ;
7007
7008 : LCD_Fn_Set        $20 OR LCD_WrF ;
7009
7010 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
7011
7012 : LCD_Goto          $80 OR LCD_WrF ;
7013
7014 CODE LCD_R
7015     BIC.B #$0F,&$224
7016     BIS.B #1,&$243
7017 COLON
7018     TOP_LCD 2 20_us
7019     TOP_LCD 2 20_us
7020 HI2LO
7021     RLAM #4,0(R15)
7022     ADD.B @R15+,R14
7023     MOV @R1+,R13
7024     MOV @R13+,R0
7025 ENDCODE
7026
7027
7028 CODE LCD_RdS
7029     BIC.B #2,&$243
7030     JMP LCD_R
7031 ENDCODE
7032
7033
7034 CODE LCD_RdC
7035     BIS.B #2,&$243
7036     JMP LCD_R
7037 ENDCODE
7038
7039
7040
7041 ASM WDT_INT
7042 BIT.B #$20,&$240
7043 0= IF
7044     CMP #19,&$3D6
7045     U< IF
7046         ADD #1,&$3D6
7047     THEN
7048 ELSE
7049     BIT.B #$40,&$240
7050     0= IF
7051         CMP #3,&$3D6
7052         U>= IF
7053            SUB #1,&$3D6
7054         THEN
7055     THEN
7056 THEN
7057 BW1
7058 BW2
7059 BW3
7060 BIC #$78,0(R1)
7061 RETI
7062 ENDASM
7063
7064
7065 ASM RC5_INT
7066   MOV #1,&$3A0
7067 MOV #1778,R9
7068 MOV #14,R10
7069 BEGIN
7070 MOV #%1011100100,&$380
7071     RRUM    #1,R9
7072     MOV     R9,R8
7073     RRUM    #1,R8
7074     ADD     R9,R8
7075     BEGIN   CMP R8,&$390
7076     U>= UNTIL
7077     BIT.B   #4,&$200
7078     ADDC    R11,R11
7079     MOV.B   &$200,&$208
7080     BIC.B   #4,&$20C
7081     SUB     #1,R10
7082 0<> WHILE
7083     ADD R9,R8
7084     BEGIN
7085         MOV &$390,R9
7086         CMP R8,R9
7087         U>= IF
7088         BIC #$30,&$380
7089         GOTO BW1
7090         THEN
7091         BIT.B #4,&$20C
7092     0<> UNTIL
7093 REPEAT
7094 BIC #$30,&$380
7095 RLAM    #1,R11
7096 MOV.B   R11,R9
7097 RRUM    #2,R9
7098 BIT     #$4000,R11
7099 0= IF   BIS #$40,R9
7100 THEN
7101 RRUM    #3,R11
7102 XOR     @R1,R11
7103 BIT     #$400,R11
7104 0= ?GOTO BW2
7105 XOR #$400,0(R1)
7106 SUB #4,R15
7107 MOV &BASE,2(R15)
7108 MOV #$10,&BASE
7109 MOV R14,0(R15)
7110 MOV R9,R14
7111 LO2HI
7112     ['] LCD_CLEAR IS CR
7113     ['] LCD_WrC  IS EMIT
7114     CR ." $" 2 U.R
7115     ['] CR >BODY IS CR
7116     ['] EMIT >BODY IS EMIT
7117 HI2LO
7118 MOV R14,&BASE
7119 MOV @R15+,R14
7120 GOTO BW3
7121 ENDASM
7122
7123
7124 ASM BACKGROUND
7125 MOV #SLEEP,R9
7126 ADD #4,R9
7127 MOV R9,R0
7128 ENDASM
7129
7130
7131 CODE START
7132     MOV #%1011010100,&$3C0
7133     MOV #1,&$3E0
7134     MOV #19,&$3D2
7135     MOV #%01100000,&$3C6
7136     MOV #10,&$3D6
7137     BIS.B #$20,&$204
7138     BIS.B #$20,&$20A
7139     BIS.B #7,&$245
7140     BIC.B #7,&$247
7141     BIS.B #$0F,&$224
7142     BIC.B #$0F,&$226
7143     BIS.B #4,&$20A
7144     BIC.B #4,&$20C
7145     MOV #RC5_INT,&$FFDE
7146     MOV #%0100010100,&$340
7147     MOV ##1638,&$352
7148     MOV #%10000,&$342
7149     MOV #WDT_INT,&$FFEA
7150
7151     MOV #SLEEP,R9
7152     MOV #BACKGROUND,2(R9)
7153
7154 LO2HI
7155
7156     $03E8 20_US
7157     $03 TOP_LCD
7158     $CD 20_US
7159     $03 TOP_LCD
7160     $5 20_US
7161     $03 TOP_LCD
7162     $2 20_US
7163     $02 TOP_LCD
7164     $2 20_US
7165     $28 LCD_WRF
7166     $08 LCD_WRF
7167     LCD_Clear
7168     $06 LCD_WRF
7169     $0C LCD_WRF
7170     LCD_Clear
7171     ['] LCD_HOME IS CR
7172     ['] LCD_WRC  IS EMIT
7173     CR ." I love you"   
7174     ['] CR >BODY IS CR
7175     ['] EMIT >BODY IS EMIT
7176     ." RC5toLCD is running. Type STOP to quit"
7177     LIT RECURSE IS WARM
7178     ABORT
7179 ;
7180
7181
7182 CODE STOP
7183     MOV #SLEEP,R9
7184     ADD #4,R9
7185     MOV R9,-2(R9)
7186
7187 COLON
7188     ['] WARM >BODY IS WARM
7189
7190     COLD
7191 ;
7192
7193
7194
7195             ; downloading RC5toLCD.4th is done
7196 RST_HERE    ; this app is protected against <reset>
7197
7198 [THEN]
7199
7200
7201
7202
7203
7204 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
7205
7206 [DEFINED] ASM [IF]
7207
7208 MARKER {RC5TOLCD}
7209
7210 [UNDEFINED] MAX [IF]
7211
7212 CODE MAX
7213     CMP @R15,R14
7214     S<  ?GOTO FW1
7215 BW1 ADD #2,R15
7216     MOV @R13+,R0
7217 ENDCODE
7218
7219
7220 CODE MIN
7221     CMP @R15,R14
7222     S<  ?GOTO BW1
7223 FW1 MOV @R15+,R14
7224     MOV @R13+,R0
7225 ENDCODE
7226
7227 [THEN]
7228
7229
7230 [UNDEFINED] U.R [IF]
7231 : U.R
7232   >R  <# 0 # #S #>  
7233   R> OVER - 0 MAX SPACES TYPE
7234 ;
7235 [THEN]
7236
7237
7238
7239 CODE 20_US
7240 BEGIN
7241     BEGIN
7242         BIT #1,&$3C0
7243     0<> UNTIL
7244     BIC #1,&$3C0
7245     SUB #1,R14
7246 U< UNTIL
7247 MOV @R15+,R14
7248 MOV @R13+,R0
7249 ENDCODE
7250
7251
7252 CODE TOP_LCD
7253     BIS.B #4,&$243
7254     BIT.B #1,&$241
7255 0= IF
7256     AND.B #$0F,R14
7257     MOV.B R14,&$222
7258     BIC.B #4,&$243
7259     MOV @R15+,R14
7260     MOV @R13+,R0
7261 THEN
7262     SUB #2,R15
7263     MOV R14,0(R15)
7264     BIC.B #4,&$243
7265     MOV.B &$220,R14
7266     AND.B #$0F,R14
7267     MOV @R13+,R0
7268 ENDCODE
7269
7270
7271 CODE LCD_W
7272     SUB #2,R15
7273     MOV R14,0(R15)
7274     RRUM #4,R14
7275     BIC.B #1,&$243
7276     BIS.B #$0F,&$224
7277 COLON
7278     TOP_LCD 2 20_US
7279     TOP_LCD 2 20_US 
7280 ;
7281
7282
7283 CODE LCD_WrC
7284     BIS.B #2,&$243
7285     JMP LCD_W 
7286 ENDCODE
7287
7288
7289 CODE LCD_WrF
7290     BIC.B #2,&$243
7291     JMP LCD_W 
7292 ENDCODE
7293
7294
7295 : LCD_Clear 
7296     $01 LCD_WrF 100 20_us
7297 ;
7298
7299
7300 : LCD_Home 
7301     $02 LCD_WrF 100 20_us 
7302 ;
7303
7304
7305 [UNDEFINED] OR [IF]
7306
7307 CODE OR
7308 BIS @R15+,R14
7309 MOV @R13+,R0
7310 ENDCODE
7311
7312
7313 [THEN]
7314
7315 : LCD_Entry_set     $04 OR LCD_WrF ;
7316
7317 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
7318
7319 : LCD_DSP_Shift     $10 OR LCD_WrF ;
7320
7321 : LCD_Fn_Set        $20 OR LCD_WrF ;
7322
7323 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
7324
7325 : LCD_Goto          $80 OR LCD_WrF ;
7326
7327 CODE LCD_R
7328     BIC.B #$0F,&$224
7329     BIS.B #1,&$243
7330 COLON
7331     TOP_LCD 2 20_us
7332     TOP_LCD 2 20_us
7333 HI2LO
7334     RLAM #4,0(R15)
7335     ADD.B @R15+,R14
7336     MOV @R1+,R13
7337     MOV @R13+,R0
7338 ENDCODE
7339
7340
7341 CODE LCD_RdS
7342     BIC.B #2,&$243
7343     JMP LCD_R
7344 ENDCODE
7345
7346
7347 CODE LCD_RdC
7348     BIS.B #2,&$243
7349     JMP LCD_R
7350 ENDCODE
7351
7352
7353
7354 ASM WDT_INT
7355 BIT.B #$20,&$240
7356 0= IF
7357     CMP #19,&$3D6
7358     U< IF
7359         ADD #1,&$3D6
7360     THEN
7361 ELSE
7362     BIT.B #$40,&$240
7363     0= IF
7364         CMP #3,&$3D6
7365         U>= IF
7366            SUB #1,&$3D6
7367         THEN
7368     THEN
7369 THEN
7370 BW1
7371 BW2
7372 BW3
7373 BIC #$78,0(R1)
7374 RETI
7375 ENDASM
7376
7377
7378 ASM RC5_INT
7379   MOV #1,&$3A0
7380 MOV #1778,R9
7381 MOV #14,R10
7382 BEGIN
7383 MOV #%1011100100,&$380
7384     RRUM    #1,R9
7385     MOV     R9,R8
7386     RRUM    #1,R8
7387     ADD     R9,R8
7388     BEGIN   CMP R8,&$390
7389     U>= UNTIL
7390     BIT.B   #4,&$200
7391     ADDC    R11,R11
7392     MOV.B   &$200,&$208
7393     BIC.B   #4,&$20C
7394     SUB     #1,R10
7395 0<> WHILE
7396     ADD R9,R8
7397     BEGIN
7398         MOV &$390,R9
7399         CMP R8,R9
7400         U>= IF
7401         BIC #$30,&$380
7402         GOTO BW1
7403         THEN
7404         BIT.B #4,&$20C
7405     0<> UNTIL
7406 REPEAT
7407 BIC #$30,&$380
7408 RLAM    #1,R11
7409 MOV.B   R11,R9
7410 RRUM    #2,R9
7411 BIT     #$4000,R11
7412 0= IF   BIS #$40,R9
7413 THEN
7414 RRUM    #3,R11
7415 XOR     @R1,R11
7416 BIT     #$400,R11
7417 0= ?GOTO BW2
7418 XOR #$400,0(R1)
7419 SUB #4,R15
7420 MOV &BASE,2(R15)
7421 MOV #$10,&BASE
7422 MOV R14,0(R15)
7423 MOV R9,R14
7424 LO2HI
7425     ['] LCD_CLEAR IS CR
7426     ['] LCD_WrC  IS EMIT
7427     CR ." $" 2 U.R
7428     ['] CR >BODY IS CR
7429     ['] EMIT >BODY IS EMIT
7430 HI2LO
7431 MOV R14,&BASE
7432 MOV @R15+,R14
7433 GOTO BW3
7434 ENDASM
7435
7436
7437 ASM BACKGROUND
7438 MOV #SLEEP,R9
7439 ADD #4,R9
7440 MOV R9,R0
7441 ENDASM
7442
7443
7444 CODE START
7445     MOV #%1011010100,&$3C0
7446     MOV #1,&$3E0
7447     MOV #19,&$3D2
7448     MOV #%01100000,&$3C6
7449     MOV #10,&$3D6
7450     BIS.B #$20,&$204
7451     BIS.B #$20,&$20A
7452     BIS.B #7,&$245
7453     BIC.B #7,&$247
7454     BIS.B #$0F,&$224
7455     BIC.B #$0F,&$226
7456     BIS.B #4,&$20A
7457     BIC.B #4,&$20C
7458     MOV #RC5_INT,&$FFDE
7459     MOV #%0100010100,&$340
7460     MOV ##1638,&$352
7461     MOV #%10000,&$342
7462     MOV #WDT_INT,&$FFEA
7463
7464     MOV #SLEEP,R9
7465     MOV #BACKGROUND,2(R9)
7466
7467 LO2HI
7468
7469     $03E8 20_US
7470     $03 TOP_LCD
7471     $CD 20_US
7472     $03 TOP_LCD
7473     $5 20_US
7474     $03 TOP_LCD
7475     $2 20_US
7476     $02 TOP_LCD
7477     $2 20_US
7478     $28 LCD_WRF
7479     $08 LCD_WRF
7480     LCD_Clear
7481     $06 LCD_WRF
7482     $0C LCD_WRF
7483     LCD_Clear
7484     ['] LCD_HOME IS CR
7485     ['] LCD_WRC  IS EMIT
7486     CR ." I love you"   
7487     ['] CR >BODY IS CR
7488     ['] EMIT >BODY IS EMIT
7489     ." RC5toLCD is running. Type STOP to quit"
7490     LIT RECURSE IS WARM
7491     ABORT
7492 ;
7493
7494
7495 CODE STOP
7496     MOV #SLEEP,R9
7497     ADD #4,R9
7498     MOV R9,-2(R9)
7499
7500 COLON
7501     ['] WARM >BODY IS WARM
7502
7503     COLD
7504 ;
7505
7506
7507
7508             ; downloading RC5toLCD.4th is done
7509 RST_HERE    ; this app is protected against <reset>
7510
7511 [THEN]
7512
7513
7514
7515
7516
7517 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
7518
7519 [DEFINED] ASM [IF]
7520
7521 MARKER {RC5TOLCD}
7522
7523 [UNDEFINED] MAX [IF]
7524
7525 CODE MAX
7526     CMP @R15,R14
7527     S<  ?GOTO FW1
7528 BW1 ADD #2,R15
7529     MOV @R13+,R0
7530 ENDCODE
7531
7532
7533 CODE MIN
7534     CMP @R15,R14
7535     S<  ?GOTO BW1
7536 FW1 MOV @R15+,R14
7537     MOV @R13+,R0
7538 ENDCODE
7539
7540 [THEN]
7541
7542
7543 [UNDEFINED] U.R [IF]
7544 : U.R
7545   >R  <# 0 # #S #>  
7546   R> OVER - 0 MAX SPACES TYPE
7547 ;
7548 [THEN]
7549
7550
7551
7552 CODE 20_US
7553 BEGIN
7554     BEGIN
7555         BIT #1,&$3C0
7556     0<> UNTIL
7557     BIC #1,&$3C0
7558     SUB #1,R14
7559 U< UNTIL
7560 MOV @R15+,R14
7561 MOV @R13+,R0
7562 ENDCODE
7563
7564
7565 CODE TOP_LCD
7566     BIS.B #4,&$243
7567     BIT.B #1,&$241
7568 0= IF
7569     AND.B #$0F,R14
7570     MOV.B R14,&$222
7571     BIC.B #4,&$243
7572     MOV @R15+,R14
7573     MOV @R13+,R0
7574 THEN
7575     SUB #2,R15
7576     MOV R14,0(R15)
7577     BIC.B #4,&$243
7578     MOV.B &$220,R14
7579     AND.B #$0F,R14
7580     MOV @R13+,R0
7581 ENDCODE
7582
7583
7584 CODE LCD_W
7585     SUB #2,R15
7586     MOV R14,0(R15)
7587     RRUM #4,R14
7588     BIC.B #1,&$243
7589     BIS.B #$0F,&$224
7590 COLON
7591     TOP_LCD 2 20_US
7592     TOP_LCD 2 20_US 
7593 ;
7594
7595
7596 CODE LCD_WrC
7597     BIS.B #2,&$243
7598     JMP LCD_W 
7599 ENDCODE
7600
7601
7602 CODE LCD_WrF
7603     BIC.B #2,&$243
7604     JMP LCD_W 
7605 ENDCODE
7606
7607
7608 : LCD_Clear 
7609     $01 LCD_WrF 100 20_us
7610 ;
7611
7612
7613 : LCD_Home 
7614     $02 LCD_WrF 100 20_us 
7615 ;
7616
7617
7618 [UNDEFINED] OR [IF]
7619
7620 CODE OR
7621 BIS @R15+,R14
7622 MOV @R13+,R0
7623 ENDCODE
7624
7625
7626 [THEN]
7627
7628 : LCD_Entry_set     $04 OR LCD_WrF ;
7629
7630 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
7631
7632 : LCD_DSP_Shift     $10 OR LCD_WrF ;
7633
7634 : LCD_Fn_Set        $20 OR LCD_WrF ;
7635
7636 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
7637
7638 : LCD_Goto          $80 OR LCD_WrF ;
7639
7640 CODE LCD_R
7641     BIC.B #$0F,&$224
7642     BIS.B #1,&$243
7643 COLON
7644     TOP_LCD 2 20_us
7645     TOP_LCD 2 20_us
7646 HI2LO
7647     RLAM #4,0(R15)
7648     ADD.B @R15+,R14
7649     MOV @R1+,R13
7650     MOV @R13+,R0
7651 ENDCODE
7652
7653
7654 CODE LCD_RdS
7655     BIC.B #2,&$243
7656     JMP LCD_R
7657 ENDCODE
7658
7659
7660 CODE LCD_RdC
7661     BIS.B #2,&$243
7662     JMP LCD_R
7663 ENDCODE
7664
7665
7666
7667 ASM WDT_INT
7668 BIT.B #$20,&$240
7669 0= IF
7670     CMP #19,&$3D6
7671     U< IF
7672         ADD #1,&$3D6
7673     THEN
7674 ELSE
7675     BIT.B #$40,&$240
7676     0= IF
7677         CMP #3,&$3D6
7678         U>= IF
7679            SUB #1,&$3D6
7680         THEN
7681     THEN
7682 THEN
7683 BW1
7684 BW2
7685 BW3
7686 BIC #$78,0(R1)
7687 RETI
7688 ENDASM
7689
7690
7691 ASM RC5_INT
7692   MOV #1,&$3A0
7693 MOV #1778,R9
7694 MOV #14,R10
7695 BEGIN
7696 MOV #%1011100100,&$380
7697     RRUM    #1,R9
7698     MOV     R9,R8
7699     RRUM    #1,R8
7700     ADD     R9,R8
7701     BEGIN   CMP R8,&$390
7702     U>= UNTIL
7703     BIT.B   #4,&$200
7704     ADDC    R11,R11
7705     MOV.B   &$200,&$208
7706     BIC.B   #4,&$20C
7707     SUB     #1,R10
7708 0<> WHILE
7709     ADD R9,R8
7710     BEGIN
7711         MOV &$390,R9
7712         CMP R8,R9
7713         U>= IF
7714         BIC #$30,&$380
7715         GOTO BW1
7716         THEN
7717         BIT.B #4,&$20C
7718     0<> UNTIL
7719 REPEAT
7720 BIC #$30,&$380
7721 RLAM    #1,R11
7722 MOV.B   R11,R9
7723 RRUM    #2,R9
7724 BIT     #$4000,R11
7725 0= IF   BIS #$40,R9
7726 THEN
7727 RRUM    #3,R11
7728 XOR     @R1,R11
7729 BIT     #$400,R11
7730 0= ?GOTO BW2
7731 XOR #$400,0(R1)
7732 SUB #4,R15
7733 MOV &BASE,2(R15)
7734 MOV #$10,&BASE
7735 MOV R14,0(R15)
7736 MOV R9,R14
7737 LO2HI
7738     ['] LCD_CLEAR IS CR
7739     ['] LCD_WrC  IS EMIT
7740     CR ." $" 2 U.R
7741     ['] CR >BODY IS CR
7742     ['] EMIT >BODY IS EMIT
7743 HI2LO
7744 MOV R14,&BASE
7745 MOV @R15+,R14
7746 GOTO BW3
7747 ENDASM
7748
7749
7750 ASM BACKGROUND
7751 MOV #SLEEP,R9
7752 ADD #4,R9
7753 MOV R9,R0
7754 ENDASM
7755
7756
7757 CODE START
7758     MOV #%1011010100,&$3C0
7759     MOV #1,&$3E0
7760     MOV #19,&$3D2
7761     MOV #%01100000,&$3C6
7762     MOV #10,&$3D6
7763     BIS.B #$20,&$204
7764     BIS.B #$20,&$20A
7765     BIS.B #7,&$245
7766     BIC.B #7,&$247
7767     BIS.B #$0F,&$224
7768     BIC.B #$0F,&$226
7769     BIS.B #4,&$20A
7770     BIC.B #4,&$20C
7771     MOV #RC5_INT,&$FFDE
7772     MOV #%0100010100,&$340
7773     MOV ##1638,&$352
7774     MOV #%10000,&$342
7775     MOV #WDT_INT,&$FFEA
7776
7777     MOV #SLEEP,R9
7778     MOV #BACKGROUND,2(R9)
7779
7780 LO2HI
7781
7782     $03E8 20_US
7783     $03 TOP_LCD
7784     $CD 20_US
7785     $03 TOP_LCD
7786     $5 20_US
7787     $03 TOP_LCD
7788     $2 20_US
7789     $02 TOP_LCD
7790     $2 20_US
7791     $28 LCD_WRF
7792     $08 LCD_WRF
7793     LCD_Clear
7794     $06 LCD_WRF
7795     $0C LCD_WRF
7796     LCD_Clear
7797     ['] LCD_HOME IS CR
7798     ['] LCD_WRC  IS EMIT
7799     CR ." I love you"   
7800     ['] CR >BODY IS CR
7801     ['] EMIT >BODY IS EMIT
7802     ." RC5toLCD is running. Type STOP to quit"
7803     LIT RECURSE IS WARM
7804     ABORT
7805 ;
7806
7807
7808 CODE STOP
7809     MOV #SLEEP,R9
7810     ADD #4,R9
7811     MOV R9,-2(R9)
7812
7813 COLON
7814     ['] WARM >BODY IS WARM
7815
7816     COLD
7817 ;
7818
7819
7820
7821             ; downloading RC5toLCD.4th is done
7822 RST_HERE    ; this app is protected against <reset>
7823
7824 [THEN]
7825
7826
7827
7828
7829
7830 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
7831
7832 [DEFINED] ASM [IF]
7833
7834 MARKER {RC5TOLCD}
7835
7836 [UNDEFINED] MAX [IF]
7837
7838 CODE MAX
7839     CMP @R15,R14
7840     S<  ?GOTO FW1
7841 BW1 ADD #2,R15
7842     MOV @R13+,R0
7843 ENDCODE
7844
7845
7846 CODE MIN
7847     CMP @R15,R14
7848     S<  ?GOTO BW1
7849 FW1 MOV @R15+,R14
7850     MOV @R13+,R0
7851 ENDCODE
7852
7853 [THEN]
7854
7855
7856 [UNDEFINED] U.R [IF]
7857 : U.R
7858   >R  <# 0 # #S #>  
7859   R> OVER - 0 MAX SPACES TYPE
7860 ;
7861 [THEN]
7862
7863
7864
7865 CODE 20_US
7866 BEGIN
7867     BEGIN
7868         BIT #1,&$3C0
7869     0<> UNTIL
7870     BIC #1,&$3C0
7871     SUB #1,R14
7872 U< UNTIL
7873 MOV @R15+,R14
7874 MOV @R13+,R0
7875 ENDCODE
7876
7877
7878 CODE TOP_LCD
7879     BIS.B #4,&$243
7880     BIT.B #1,&$241
7881 0= IF
7882     AND.B #$0F,R14
7883     MOV.B R14,&$222
7884     BIC.B #4,&$243
7885     MOV @R15+,R14
7886     MOV @R13+,R0
7887 THEN
7888     SUB #2,R15
7889     MOV R14,0(R15)
7890     BIC.B #4,&$243
7891     MOV.B &$220,R14
7892     AND.B #$0F,R14
7893     MOV @R13+,R0
7894 ENDCODE
7895
7896
7897 CODE LCD_W
7898     SUB #2,R15
7899     MOV R14,0(R15)
7900     RRUM #4,R14
7901     BIC.B #1,&$243
7902     BIS.B #$0F,&$224
7903 COLON
7904     TOP_LCD 2 20_US
7905     TOP_LCD 2 20_US 
7906 ;
7907
7908
7909 CODE LCD_WrC
7910     BIS.B #2,&$243
7911     JMP LCD_W 
7912 ENDCODE
7913
7914
7915 CODE LCD_WrF
7916     BIC.B #2,&$243
7917     JMP LCD_W 
7918 ENDCODE
7919
7920
7921 : LCD_Clear 
7922     $01 LCD_WrF 100 20_us
7923 ;
7924
7925
7926 : LCD_Home 
7927     $02 LCD_WrF 100 20_us 
7928 ;
7929
7930
7931 [UNDEFINED] OR [IF]
7932
7933 CODE OR
7934 BIS @R15+,R14
7935 MOV @R13+,R0
7936 ENDCODE
7937
7938
7939 [THEN]
7940
7941 : LCD_Entry_set     $04 OR LCD_WrF ;
7942
7943 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
7944
7945 : LCD_DSP_Shift     $10 OR LCD_WrF ;
7946
7947 : LCD_Fn_Set        $20 OR LCD_WrF ;
7948
7949 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
7950
7951 : LCD_Goto          $80 OR LCD_WrF ;
7952
7953 CODE LCD_R
7954     BIC.B #$0F,&$224
7955     BIS.B #1,&$243
7956 COLON
7957     TOP_LCD 2 20_us
7958     TOP_LCD 2 20_us
7959 HI2LO
7960     RLAM #4,0(R15)
7961     ADD.B @R15+,R14
7962     MOV @R1+,R13
7963     MOV @R13+,R0
7964 ENDCODE
7965
7966
7967 CODE LCD_RdS
7968     BIC.B #2,&$243
7969     JMP LCD_R
7970 ENDCODE
7971
7972
7973 CODE LCD_RdC
7974     BIS.B #2,&$243
7975     JMP LCD_R
7976 ENDCODE
7977
7978
7979
7980 ASM WDT_INT
7981 BIT.B #$20,&$240
7982 0= IF
7983     CMP #19,&$3D6
7984     U< IF
7985         ADD #1,&$3D6
7986     THEN
7987 ELSE
7988     BIT.B #$40,&$240
7989     0= IF
7990         CMP #3,&$3D6
7991         U>= IF
7992            SUB #1,&$3D6
7993         THEN
7994     THEN
7995 THEN
7996 BW1
7997 BW2
7998 BW3
7999 BIC #$78,0(R1)
8000 RETI
8001 ENDASM
8002
8003
8004 ASM RC5_INT
8005   MOV #1,&$3A0
8006 MOV #1778,R9
8007 MOV #14,R10
8008 BEGIN
8009 MOV #%1011100100,&$380
8010     RRUM    #1,R9
8011     MOV     R9,R8
8012     RRUM    #1,R8
8013     ADD     R9,R8
8014     BEGIN   CMP R8,&$390
8015     U>= UNTIL
8016     BIT.B   #4,&$200
8017     ADDC    R11,R11
8018     MOV.B   &$200,&$208
8019     BIC.B   #4,&$20C
8020     SUB     #1,R10
8021 0<> WHILE
8022     ADD R9,R8
8023     BEGIN
8024         MOV &$390,R9
8025         CMP R8,R9
8026         U>= IF
8027         BIC #$30,&$380
8028         GOTO BW1
8029         THEN
8030         BIT.B #4,&$20C
8031     0<> UNTIL
8032 REPEAT
8033 BIC #$30,&$380
8034 RLAM    #1,R11
8035 MOV.B   R11,R9
8036 RRUM    #2,R9
8037 BIT     #$4000,R11
8038 0= IF   BIS #$40,R9
8039 THEN
8040 RRUM    #3,R11
8041 XOR     @R1,R11
8042 BIT     #$400,R11
8043 0= ?GOTO BW2
8044 XOR #$400,0(R1)
8045 SUB #4,R15
8046 MOV &BASE,2(R15)
8047 MOV #$10,&BASE
8048 MOV R14,0(R15)
8049 MOV R9,R14
8050 LO2HI
8051     ['] LCD_CLEAR IS CR
8052     ['] LCD_WrC  IS EMIT
8053     CR ." $" 2 U.R
8054     ['] CR >BODY IS CR
8055     ['] EMIT >BODY IS EMIT
8056 HI2LO
8057 MOV R14,&BASE
8058 MOV @R15+,R14
8059 GOTO BW3
8060 ENDASM
8061
8062
8063 ASM BACKGROUND
8064 MOV #SLEEP,R9
8065 ADD #4,R9
8066 MOV R9,R0
8067 ENDASM
8068
8069
8070 CODE START
8071     MOV #%1011010100,&$3C0
8072     MOV #1,&$3E0
8073     MOV #19,&$3D2
8074     MOV #%01100000,&$3C6
8075     MOV #10,&$3D6
8076     BIS.B #$20,&$204
8077     BIS.B #$20,&$20A
8078     BIS.B #7,&$245
8079     BIC.B #7,&$247
8080     BIS.B #$0F,&$224
8081     BIC.B #$0F,&$226
8082     BIS.B #4,&$20A
8083     BIC.B #4,&$20C
8084     MOV #RC5_INT,&$FFDE
8085     MOV #%0100010100,&$340
8086     MOV ##1638,&$352
8087     MOV #%10000,&$342
8088     MOV #WDT_INT,&$FFEA
8089
8090     MOV #SLEEP,R9
8091     MOV #BACKGROUND,2(R9)
8092
8093 LO2HI
8094
8095     $03E8 20_US
8096     $03 TOP_LCD
8097     $CD 20_US
8098     $03 TOP_LCD
8099     $5 20_US
8100     $03 TOP_LCD
8101     $2 20_US
8102     $02 TOP_LCD
8103     $2 20_US
8104     $28 LCD_WRF
8105     $08 LCD_WRF
8106     LCD_Clear
8107     $06 LCD_WRF
8108     $0C LCD_WRF
8109     LCD_Clear
8110     ['] LCD_HOME IS CR
8111     ['] LCD_WRC  IS EMIT
8112     CR ." I love you"   
8113     ['] CR >BODY IS CR
8114     ['] EMIT >BODY IS EMIT
8115     ." RC5toLCD is running. Type STOP to quit"
8116     LIT RECURSE IS WARM
8117     ABORT
8118 ;
8119
8120
8121 CODE STOP
8122     MOV #SLEEP,R9
8123     ADD #4,R9
8124     MOV R9,-2(R9)
8125
8126 COLON
8127     ['] WARM >BODY IS WARM
8128
8129     COLD
8130 ;
8131
8132
8133
8134             ; downloading RC5toLCD.4th is done
8135 RST_HERE    ; this app is protected against <reset>
8136
8137 [THEN]
8138
8139
8140
8141
8142
8143 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
8144
8145 [DEFINED] ASM [IF]
8146
8147 MARKER {RC5TOLCD}
8148
8149 [UNDEFINED] MAX [IF]
8150
8151 CODE MAX
8152     CMP @R15,R14
8153     S<  ?GOTO FW1
8154 BW1 ADD #2,R15
8155     MOV @R13+,R0
8156 ENDCODE
8157
8158
8159 CODE MIN
8160     CMP @R15,R14
8161     S<  ?GOTO BW1
8162 FW1 MOV @R15+,R14
8163     MOV @R13+,R0
8164 ENDCODE
8165
8166 [THEN]
8167
8168
8169 [UNDEFINED] U.R [IF]
8170 : U.R
8171   >R  <# 0 # #S #>  
8172   R> OVER - 0 MAX SPACES TYPE
8173 ;
8174 [THEN]
8175
8176
8177
8178 CODE 20_US
8179 BEGIN
8180     BEGIN
8181         BIT #1,&$3C0
8182     0<> UNTIL
8183     BIC #1,&$3C0
8184     SUB #1,R14
8185 U< UNTIL
8186 MOV @R15+,R14
8187 MOV @R13+,R0
8188 ENDCODE
8189
8190
8191 CODE TOP_LCD
8192     BIS.B #4,&$243
8193     BIT.B #1,&$241
8194 0= IF
8195     AND.B #$0F,R14
8196     MOV.B R14,&$222
8197     BIC.B #4,&$243
8198     MOV @R15+,R14
8199     MOV @R13+,R0
8200 THEN
8201     SUB #2,R15
8202     MOV R14,0(R15)
8203     BIC.B #4,&$243
8204     MOV.B &$220,R14
8205     AND.B #$0F,R14
8206     MOV @R13+,R0
8207 ENDCODE
8208
8209
8210 CODE LCD_W
8211     SUB #2,R15
8212     MOV R14,0(R15)
8213     RRUM #4,R14
8214     BIC.B #1,&$243
8215     BIS.B #$0F,&$224
8216 COLON
8217     TOP_LCD 2 20_US
8218     TOP_LCD 2 20_US 
8219 ;
8220
8221
8222 CODE LCD_WrC
8223     BIS.B #2,&$243
8224     JMP LCD_W 
8225 ENDCODE
8226
8227
8228 CODE LCD_WrF
8229     BIC.B #2,&$243
8230     JMP LCD_W 
8231 ENDCODE
8232
8233
8234 : LCD_Clear 
8235     $01 LCD_WrF 100 20_us
8236 ;
8237
8238
8239 : LCD_Home 
8240     $02 LCD_WrF 100 20_us 
8241 ;
8242
8243
8244 [UNDEFINED] OR [IF]
8245
8246 CODE OR
8247 BIS @R15+,R14
8248 MOV @R13+,R0
8249 ENDCODE
8250
8251
8252 [THEN]
8253
8254 : LCD_Entry_set     $04 OR LCD_WrF ;
8255
8256 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
8257
8258 : LCD_DSP_Shift     $10 OR LCD_WrF ;
8259
8260 : LCD_Fn_Set        $20 OR LCD_WrF ;
8261
8262 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
8263
8264 : LCD_Goto          $80 OR LCD_WrF ;
8265
8266 CODE LCD_R
8267     BIC.B #$0F,&$224
8268     BIS.B #1,&$243
8269 COLON
8270     TOP_LCD 2 20_us
8271     TOP_LCD 2 20_us
8272 HI2LO
8273     RLAM #4,0(R15)
8274     ADD.B @R15+,R14
8275     MOV @R1+,R13
8276     MOV @R13+,R0
8277 ENDCODE
8278
8279
8280 CODE LCD_RdS
8281     BIC.B #2,&$243
8282     JMP LCD_R
8283 ENDCODE
8284
8285
8286 CODE LCD_RdC
8287     BIS.B #2,&$243
8288     JMP LCD_R
8289 ENDCODE
8290
8291
8292
8293 ASM WDT_INT
8294 BIT.B #$20,&$240
8295 0= IF
8296     CMP #19,&$3D6
8297     U< IF
8298         ADD #1,&$3D6
8299     THEN
8300 ELSE
8301     BIT.B #$40,&$240
8302     0= IF
8303         CMP #3,&$3D6
8304         U>= IF
8305            SUB #1,&$3D6
8306         THEN
8307     THEN
8308 THEN
8309 BW1
8310 BW2
8311 BW3
8312 BIC #$78,0(R1)
8313 RETI
8314 ENDASM
8315
8316
8317 ASM RC5_INT
8318   MOV #1,&$3A0
8319 MOV #1778,R9
8320 MOV #14,R10
8321 BEGIN
8322 MOV #%1011100100,&$380
8323     RRUM    #1,R9
8324     MOV     R9,R8
8325     RRUM    #1,R8
8326     ADD     R9,R8
8327     BEGIN   CMP R8,&$390
8328     U>= UNTIL
8329     BIT.B   #4,&$200
8330     ADDC    R11,R11
8331     MOV.B   &$200,&$208
8332     BIC.B   #4,&$20C
8333     SUB     #1,R10
8334 0<> WHILE
8335     ADD R9,R8
8336     BEGIN
8337         MOV &$390,R9
8338         CMP R8,R9
8339         U>= IF
8340         BIC #$30,&$380
8341         GOTO BW1
8342         THEN
8343         BIT.B #4,&$20C
8344     0<> UNTIL
8345 REPEAT
8346 BIC #$30,&$380
8347 RLAM    #1,R11
8348 MOV.B   R11,R9
8349 RRUM    #2,R9
8350 BIT     #$4000,R11
8351 0= IF   BIS #$40,R9
8352 THEN
8353 RRUM    #3,R11
8354 XOR     @R1,R11
8355 BIT     #$400,R11
8356 0= ?GOTO BW2
8357 XOR #$400,0(R1)
8358 SUB #4,R15
8359 MOV &BASE,2(R15)
8360 MOV #$10,&BASE
8361 MOV R14,0(R15)
8362 MOV R9,R14
8363 LO2HI
8364     ['] LCD_CLEAR IS CR
8365     ['] LCD_WrC  IS EMIT
8366     CR ." $" 2 U.R
8367     ['] CR >BODY IS CR
8368     ['] EMIT >BODY IS EMIT
8369 HI2LO
8370 MOV R14,&BASE
8371 MOV @R15+,R14
8372 GOTO BW3
8373 ENDASM
8374
8375
8376 ASM BACKGROUND
8377 MOV #SLEEP,R9
8378 ADD #4,R9
8379 MOV R9,R0
8380 ENDASM
8381
8382
8383 CODE START
8384     MOV #%1011010100,&$3C0
8385     MOV #1,&$3E0
8386     MOV #19,&$3D2
8387     MOV #%01100000,&$3C6
8388     MOV #10,&$3D6
8389     BIS.B #$20,&$204
8390     BIS.B #$20,&$20A
8391     BIS.B #7,&$245
8392     BIC.B #7,&$247
8393     BIS.B #$0F,&$224
8394     BIC.B #$0F,&$226
8395     BIS.B #4,&$20A
8396     BIC.B #4,&$20C
8397     MOV #RC5_INT,&$FFDE
8398     MOV #%0100010100,&$340
8399     MOV ##1638,&$352
8400     MOV #%10000,&$342
8401     MOV #WDT_INT,&$FFEA
8402
8403     MOV #SLEEP,R9
8404     MOV #BACKGROUND,2(R9)
8405
8406 LO2HI
8407
8408     $03E8 20_US
8409     $03 TOP_LCD
8410     $CD 20_US
8411     $03 TOP_LCD
8412     $5 20_US
8413     $03 TOP_LCD
8414     $2 20_US
8415     $02 TOP_LCD
8416     $2 20_US
8417     $28 LCD_WRF
8418     $08 LCD_WRF
8419     LCD_Clear
8420     $06 LCD_WRF
8421     $0C LCD_WRF
8422     LCD_Clear
8423     ['] LCD_HOME IS CR
8424     ['] LCD_WRC  IS EMIT
8425     CR ." I love you"   
8426     ['] CR >BODY IS CR
8427     ['] EMIT >BODY IS EMIT
8428     ." RC5toLCD is running. Type STOP to quit"
8429     LIT RECURSE IS WARM
8430     ABORT
8431 ;
8432
8433
8434 CODE STOP
8435     MOV #SLEEP,R9
8436     ADD #4,R9
8437     MOV R9,-2(R9)
8438
8439 COLON
8440     ['] WARM >BODY IS WARM
8441
8442     COLD
8443 ;
8444
8445
8446
8447             ; downloading RC5toLCD.4th is done
8448 RST_HERE    ; this app is protected against <reset>
8449
8450 [THEN]
8451
8452
8453
8454
8455
8456 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
8457
8458 [DEFINED] ASM [IF]
8459
8460 MARKER {RC5TOLCD}
8461
8462 [UNDEFINED] MAX [IF]
8463
8464 CODE MAX
8465     CMP @R15,R14
8466     S<  ?GOTO FW1
8467 BW1 ADD #2,R15
8468     MOV @R13+,R0
8469 ENDCODE
8470
8471
8472 CODE MIN
8473     CMP @R15,R14
8474     S<  ?GOTO BW1
8475 FW1 MOV @R15+,R14
8476     MOV @R13+,R0
8477 ENDCODE
8478
8479 [THEN]
8480
8481
8482 [UNDEFINED] U.R [IF]
8483 : U.R
8484   >R  <# 0 # #S #>  
8485   R> OVER - 0 MAX SPACES TYPE
8486 ;
8487 [THEN]
8488
8489
8490
8491 CODE 20_US
8492 BEGIN
8493     BEGIN
8494         BIT #1,&$3C0
8495     0<> UNTIL
8496     BIC #1,&$3C0
8497     SUB #1,R14
8498 U< UNTIL
8499 MOV @R15+,R14
8500 MOV @R13+,R0
8501 ENDCODE
8502
8503
8504 CODE TOP_LCD
8505     BIS.B #4,&$243
8506     BIT.B #1,&$241
8507 0= IF
8508     AND.B #$0F,R14
8509     MOV.B R14,&$222
8510     BIC.B #4,&$243
8511     MOV @R15+,R14
8512     MOV @R13+,R0
8513 THEN
8514     SUB #2,R15
8515     MOV R14,0(R15)
8516     BIC.B #4,&$243
8517     MOV.B &$220,R14
8518     AND.B #$0F,R14
8519     MOV @R13+,R0
8520 ENDCODE
8521
8522
8523 CODE LCD_W
8524     SUB #2,R15
8525     MOV R14,0(R15)
8526     RRUM #4,R14
8527     BIC.B #1,&$243
8528     BIS.B #$0F,&$224
8529 COLON
8530     TOP_LCD 2 20_US
8531     TOP_LCD 2 20_US 
8532 ;
8533
8534
8535 CODE LCD_WrC
8536     BIS.B #2,&$243
8537     JMP LCD_W 
8538 ENDCODE
8539
8540
8541 CODE LCD_WrF
8542     BIC.B #2,&$243
8543     JMP LCD_W 
8544 ENDCODE
8545
8546
8547 : LCD_Clear 
8548     $01 LCD_WrF 100 20_us
8549 ;
8550
8551
8552 : LCD_Home 
8553     $02 LCD_WrF 100 20_us 
8554 ;
8555
8556
8557 [UNDEFINED] OR [IF]
8558
8559 CODE OR
8560 BIS @R15+,R14
8561 MOV @R13+,R0
8562 ENDCODE
8563
8564
8565 [THEN]
8566
8567 : LCD_Entry_set     $04 OR LCD_WrF ;
8568
8569 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
8570
8571 : LCD_DSP_Shift     $10 OR LCD_WrF ;
8572
8573 : LCD_Fn_Set        $20 OR LCD_WrF ;
8574
8575 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
8576
8577 : LCD_Goto          $80 OR LCD_WrF ;
8578
8579 CODE LCD_R
8580     BIC.B #$0F,&$224
8581     BIS.B #1,&$243
8582 COLON
8583     TOP_LCD 2 20_us
8584     TOP_LCD 2 20_us
8585 HI2LO
8586     RLAM #4,0(R15)
8587     ADD.B @R15+,R14
8588     MOV @R1+,R13
8589     MOV @R13+,R0
8590 ENDCODE
8591
8592
8593 CODE LCD_RdS
8594     BIC.B #2,&$243
8595     JMP LCD_R
8596 ENDCODE
8597
8598
8599 CODE LCD_RdC
8600     BIS.B #2,&$243
8601     JMP LCD_R
8602 ENDCODE
8603
8604
8605
8606 ASM WDT_INT
8607 BIT.B #$20,&$240
8608 0= IF
8609     CMP #19,&$3D6
8610     U< IF
8611         ADD #1,&$3D6
8612     THEN
8613 ELSE
8614     BIT.B #$40,&$240
8615     0= IF
8616         CMP #3,&$3D6
8617         U>= IF
8618            SUB #1,&$3D6
8619         THEN
8620     THEN
8621 THEN
8622 BW1
8623 BW2
8624 BW3
8625 BIC #$78,0(R1)
8626 RETI
8627 ENDASM
8628
8629
8630 ASM RC5_INT
8631   MOV #1,&$3A0
8632 MOV #1778,R9
8633 MOV #14,R10
8634 BEGIN
8635 MOV #%1011100100,&$380
8636     RRUM    #1,R9
8637     MOV     R9,R8
8638     RRUM    #1,R8
8639     ADD     R9,R8
8640     BEGIN   CMP R8,&$390
8641     U>= UNTIL
8642     BIT.B   #4,&$200
8643     ADDC    R11,R11
8644     MOV.B   &$200,&$208
8645     BIC.B   #4,&$20C
8646     SUB     #1,R10
8647 0<> WHILE
8648     ADD R9,R8
8649     BEGIN
8650         MOV &$390,R9
8651         CMP R8,R9
8652         U>= IF
8653         BIC #$30,&$380
8654         GOTO BW1
8655         THEN
8656         BIT.B #4,&$20C
8657     0<> UNTIL
8658 REPEAT
8659 BIC #$30,&$380
8660 RLAM    #1,R11
8661 MOV.B   R11,R9
8662 RRUM    #2,R9
8663 BIT     #$4000,R11
8664 0= IF   BIS #$40,R9
8665 THEN
8666 RRUM    #3,R11
8667 XOR     @R1,R11
8668 BIT     #$400,R11
8669 0= ?GOTO BW2
8670 XOR #$400,0(R1)
8671 SUB #4,R15
8672 MOV &BASE,2(R15)
8673 MOV #$10,&BASE
8674 MOV R14,0(R15)
8675 MOV R9,R14
8676 LO2HI
8677     ['] LCD_CLEAR IS CR
8678     ['] LCD_WrC  IS EMIT
8679     CR ." $" 2 U.R
8680     ['] CR >BODY IS CR
8681     ['] EMIT >BODY IS EMIT
8682 HI2LO
8683 MOV R14,&BASE
8684 MOV @R15+,R14
8685 GOTO BW3
8686 ENDASM
8687
8688
8689 ASM BACKGROUND
8690 MOV #SLEEP,R9
8691 ADD #4,R9
8692 MOV R9,R0
8693 ENDASM
8694
8695
8696 CODE START
8697     MOV #%1011010100,&$3C0
8698     MOV #1,&$3E0
8699     MOV #19,&$3D2
8700     MOV #%01100000,&$3C6
8701     MOV #10,&$3D6
8702     BIS.B #$20,&$204
8703     BIS.B #$20,&$20A
8704     BIS.B #7,&$245
8705     BIC.B #7,&$247
8706     BIS.B #$0F,&$224
8707     BIC.B #$0F,&$226
8708     BIS.B #4,&$20A
8709     BIC.B #4,&$20C
8710     MOV #RC5_INT,&$FFDE
8711     MOV #%0100010100,&$340
8712     MOV ##1638,&$352
8713     MOV #%10000,&$342
8714     MOV #WDT_INT,&$FFEA
8715
8716     MOV #SLEEP,R9
8717     MOV #BACKGROUND,2(R9)
8718
8719 LO2HI
8720
8721     $03E8 20_US
8722     $03 TOP_LCD
8723     $CD 20_US
8724     $03 TOP_LCD
8725     $5 20_US
8726     $03 TOP_LCD
8727     $2 20_US
8728     $02 TOP_LCD
8729     $2 20_US
8730     $28 LCD_WRF
8731     $08 LCD_WRF
8732     LCD_Clear
8733     $06 LCD_WRF
8734     $0C LCD_WRF
8735     LCD_Clear
8736     ['] LCD_HOME IS CR
8737     ['] LCD_WRC  IS EMIT
8738     CR ." I love you"   
8739     ['] CR >BODY IS CR
8740     ['] EMIT >BODY IS EMIT
8741     ." RC5toLCD is running. Type STOP to quit"
8742     LIT RECURSE IS WARM
8743     ABORT
8744 ;
8745
8746
8747 CODE STOP
8748     MOV #SLEEP,R9
8749     ADD #4,R9
8750     MOV R9,-2(R9)
8751
8752 COLON
8753     ['] WARM >BODY IS WARM
8754
8755     COLD
8756 ;
8757
8758
8759
8760             ; downloading RC5toLCD.4th is done
8761 RST_HERE    ; this app is protected against <reset>
8762
8763 [THEN]
8764
8765
8766
8767
8768
8769 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
8770
8771 [DEFINED] ASM [IF]
8772
8773 MARKER {RC5TOLCD}
8774
8775 [UNDEFINED] MAX [IF]
8776
8777 CODE MAX
8778     CMP @R15,R14
8779     S<  ?GOTO FW1
8780 BW1 ADD #2,R15
8781     MOV @R13+,R0
8782 ENDCODE
8783
8784
8785 CODE MIN
8786     CMP @R15,R14
8787     S<  ?GOTO BW1
8788 FW1 MOV @R15+,R14
8789     MOV @R13+,R0
8790 ENDCODE
8791
8792 [THEN]
8793
8794
8795 [UNDEFINED] U.R [IF]
8796 : U.R
8797   >R  <# 0 # #S #>  
8798   R> OVER - 0 MAX SPACES TYPE
8799 ;
8800 [THEN]
8801
8802
8803
8804 CODE 20_US
8805 BEGIN
8806     BEGIN
8807         BIT #1,&$3C0
8808     0<> UNTIL
8809     BIC #1,&$3C0
8810     SUB #1,R14
8811 U< UNTIL
8812 MOV @R15+,R14
8813 MOV @R13+,R0
8814 ENDCODE
8815
8816
8817 CODE TOP_LCD
8818     BIS.B #4,&$243
8819     BIT.B #1,&$241
8820 0= IF
8821     AND.B #$0F,R14
8822     MOV.B R14,&$222
8823     BIC.B #4,&$243
8824     MOV @R15+,R14
8825     MOV @R13+,R0
8826 THEN
8827     SUB #2,R15
8828     MOV R14,0(R15)
8829     BIC.B #4,&$243
8830     MOV.B &$220,R14
8831     AND.B #$0F,R14
8832     MOV @R13+,R0
8833 ENDCODE
8834
8835
8836 CODE LCD_W
8837     SUB #2,R15
8838     MOV R14,0(R15)
8839     RRUM #4,R14
8840     BIC.B #1,&$243
8841     BIS.B #$0F,&$224
8842 COLON
8843     TOP_LCD 2 20_US
8844     TOP_LCD 2 20_US 
8845 ;
8846
8847
8848 CODE LCD_WrC
8849     BIS.B #2,&$243
8850     JMP LCD_W 
8851 ENDCODE
8852
8853
8854 CODE LCD_WrF
8855     BIC.B #2,&$243
8856     JMP LCD_W 
8857 ENDCODE
8858
8859
8860 : LCD_Clear 
8861     $01 LCD_WrF 100 20_us
8862 ;
8863
8864
8865 : LCD_Home 
8866     $02 LCD_WrF 100 20_us 
8867 ;
8868
8869
8870 [UNDEFINED] OR [IF]
8871
8872 CODE OR
8873 BIS @R15+,R14
8874 MOV @R13+,R0
8875 ENDCODE
8876
8877
8878 [THEN]
8879
8880 : LCD_Entry_set     $04 OR LCD_WrF ;
8881
8882 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
8883
8884 : LCD_DSP_Shift     $10 OR LCD_WrF ;
8885
8886 : LCD_Fn_Set        $20 OR LCD_WrF ;
8887
8888 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
8889
8890 : LCD_Goto          $80 OR LCD_WrF ;
8891
8892 CODE LCD_R
8893     BIC.B #$0F,&$224
8894     BIS.B #1,&$243
8895 COLON
8896     TOP_LCD 2 20_us
8897     TOP_LCD 2 20_us
8898 HI2LO
8899     RLAM #4,0(R15)
8900     ADD.B @R15+,R14
8901     MOV @R1+,R13
8902     MOV @R13+,R0
8903 ENDCODE
8904
8905
8906 CODE LCD_RdS
8907     BIC.B #2,&$243
8908     JMP LCD_R
8909 ENDCODE
8910
8911
8912 CODE LCD_RdC
8913     BIS.B #2,&$243
8914     JMP LCD_R
8915 ENDCODE
8916
8917
8918
8919 ASM WDT_INT
8920 BIT.B #$20,&$240
8921 0= IF
8922     CMP #19,&$3D6
8923     U< IF
8924         ADD #1,&$3D6
8925     THEN
8926 ELSE
8927     BIT.B #$40,&$240
8928     0= IF
8929         CMP #3,&$3D6
8930         U>= IF
8931            SUB #1,&$3D6
8932         THEN
8933     THEN
8934 THEN
8935 BW1
8936 BW2
8937 BW3
8938 BIC #$78,0(R1)
8939 RETI
8940 ENDASM
8941
8942
8943 ASM RC5_INT
8944   MOV #1,&$3A0
8945 MOV #1778,R9
8946 MOV #14,R10
8947 BEGIN
8948 MOV #%1011100100,&$380
8949     RRUM    #1,R9
8950     MOV     R9,R8
8951     RRUM    #1,R8
8952     ADD     R9,R8
8953     BEGIN   CMP R8,&$390
8954     U>= UNTIL
8955     BIT.B   #4,&$200
8956     ADDC    R11,R11
8957     MOV.B   &$200,&$208
8958     BIC.B   #4,&$20C
8959     SUB     #1,R10
8960 0<> WHILE
8961     ADD R9,R8
8962     BEGIN
8963         MOV &$390,R9
8964         CMP R8,R9
8965         U>= IF
8966         BIC #$30,&$380
8967         GOTO BW1
8968         THEN
8969         BIT.B #4,&$20C
8970     0<> UNTIL
8971 REPEAT
8972 BIC #$30,&$380
8973 RLAM    #1,R11
8974 MOV.B   R11,R9
8975 RRUM    #2,R9
8976 BIT     #$4000,R11
8977 0= IF   BIS #$40,R9
8978 THEN
8979 RRUM    #3,R11
8980 XOR     @R1,R11
8981 BIT     #$400,R11
8982 0= ?GOTO BW2
8983 XOR #$400,0(R1)
8984 SUB #4,R15
8985 MOV &BASE,2(R15)
8986 MOV #$10,&BASE
8987 MOV R14,0(R15)
8988 MOV R9,R14
8989 LO2HI
8990     ['] LCD_CLEAR IS CR
8991     ['] LCD_WrC  IS EMIT
8992     CR ." $" 2 U.R
8993     ['] CR >BODY IS CR
8994     ['] EMIT >BODY IS EMIT
8995 HI2LO
8996 MOV R14,&BASE
8997 MOV @R15+,R14
8998 GOTO BW3
8999 ENDASM
9000
9001
9002 ASM BACKGROUND
9003 MOV #SLEEP,R9
9004 ADD #4,R9
9005 MOV R9,R0
9006 ENDASM
9007
9008
9009 CODE START
9010     MOV #%1011010100,&$3C0
9011     MOV #1,&$3E0
9012     MOV #19,&$3D2
9013     MOV #%01100000,&$3C6
9014     MOV #10,&$3D6
9015     BIS.B #$20,&$204
9016     BIS.B #$20,&$20A
9017     BIS.B #7,&$245
9018     BIC.B #7,&$247
9019     BIS.B #$0F,&$224
9020     BIC.B #$0F,&$226
9021     BIS.B #4,&$20A
9022     BIC.B #4,&$20C
9023     MOV #RC5_INT,&$FFDE
9024     MOV #%0100010100,&$340
9025     MOV ##1638,&$352
9026     MOV #%10000,&$342
9027     MOV #WDT_INT,&$FFEA
9028
9029     MOV #SLEEP,R9
9030     MOV #BACKGROUND,2(R9)
9031
9032 LO2HI
9033
9034     $03E8 20_US
9035     $03 TOP_LCD
9036     $CD 20_US
9037     $03 TOP_LCD
9038     $5 20_US
9039     $03 TOP_LCD
9040     $2 20_US
9041     $02 TOP_LCD
9042     $2 20_US
9043     $28 LCD_WRF
9044     $08 LCD_WRF
9045     LCD_Clear
9046     $06 LCD_WRF
9047     $0C LCD_WRF
9048     LCD_Clear
9049     ['] LCD_HOME IS CR
9050     ['] LCD_WRC  IS EMIT
9051     CR ." I love you"   
9052     ['] CR >BODY IS CR
9053     ['] EMIT >BODY IS EMIT
9054     ." RC5toLCD is running. Type STOP to quit"
9055     LIT RECURSE IS WARM
9056     ABORT
9057 ;
9058
9059
9060 CODE STOP
9061     MOV #SLEEP,R9
9062     ADD #4,R9
9063     MOV R9,-2(R9)
9064
9065 COLON
9066     ['] WARM >BODY IS WARM
9067
9068     COLD
9069 ;
9070
9071
9072
9073             ; downloading RC5toLCD.4th is done
9074 RST_HERE    ; this app is protected against <reset>
9075
9076 [THEN]
9077
9078
9079
9080
9081
9082 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
9083
9084 [DEFINED] ASM [IF]
9085
9086 MARKER {RC5TOLCD}
9087
9088 [UNDEFINED] MAX [IF]
9089
9090 CODE MAX
9091     CMP @R15,R14
9092     S<  ?GOTO FW1
9093 BW1 ADD #2,R15
9094     MOV @R13+,R0
9095 ENDCODE
9096
9097
9098 CODE MIN
9099     CMP @R15,R14
9100     S<  ?GOTO BW1
9101 FW1 MOV @R15+,R14
9102     MOV @R13+,R0
9103 ENDCODE
9104
9105 [THEN]
9106
9107
9108 [UNDEFINED] U.R [IF]
9109 : U.R
9110   >R  <# 0 # #S #>  
9111   R> OVER - 0 MAX SPACES TYPE
9112 ;
9113 [THEN]
9114
9115
9116
9117 CODE 20_US
9118 BEGIN
9119     BEGIN
9120         BIT #1,&$3C0
9121     0<> UNTIL
9122     BIC #1,&$3C0
9123     SUB #1,R14
9124 U< UNTIL
9125 MOV @R15+,R14
9126 MOV @R13+,R0
9127 ENDCODE
9128
9129
9130 CODE TOP_LCD
9131     BIS.B #4,&$243
9132     BIT.B #1,&$241
9133 0= IF
9134     AND.B #$0F,R14
9135     MOV.B R14,&$222
9136     BIC.B #4,&$243
9137     MOV @R15+,R14
9138     MOV @R13+,R0
9139 THEN
9140     SUB #2,R15
9141     MOV R14,0(R15)
9142     BIC.B #4,&$243
9143     MOV.B &$220,R14
9144     AND.B #$0F,R14
9145     MOV @R13+,R0
9146 ENDCODE
9147
9148
9149 CODE LCD_W
9150     SUB #2,R15
9151     MOV R14,0(R15)
9152     RRUM #4,R14
9153     BIC.B #1,&$243
9154     BIS.B #$0F,&$224
9155 COLON
9156     TOP_LCD 2 20_US
9157     TOP_LCD 2 20_US 
9158 ;
9159
9160
9161 CODE LCD_WrC
9162     BIS.B #2,&$243
9163     JMP LCD_W 
9164 ENDCODE
9165
9166
9167 CODE LCD_WrF
9168     BIC.B #2,&$243
9169     JMP LCD_W 
9170 ENDCODE
9171
9172
9173 : LCD_Clear 
9174     $01 LCD_WrF 100 20_us
9175 ;
9176
9177
9178 : LCD_Home 
9179     $02 LCD_WrF 100 20_us 
9180 ;
9181
9182
9183 [UNDEFINED] OR [IF]
9184
9185 CODE OR
9186 BIS @R15+,R14
9187 MOV @R13+,R0
9188 ENDCODE
9189
9190
9191 [THEN]
9192
9193 : LCD_Entry_set     $04 OR LCD_WrF ;
9194
9195 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
9196
9197 : LCD_DSP_Shift     $10 OR LCD_WrF ;
9198
9199 : LCD_Fn_Set        $20 OR LCD_WrF ;
9200
9201 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
9202
9203 : LCD_Goto          $80 OR LCD_WrF ;
9204
9205 CODE LCD_R
9206     BIC.B #$0F,&$224
9207     BIS.B #1,&$243
9208 COLON
9209     TOP_LCD 2 20_us
9210     TOP_LCD 2 20_us
9211 HI2LO
9212     RLAM #4,0(R15)
9213     ADD.B @R15+,R14
9214     MOV @R1+,R13
9215     MOV @R13+,R0
9216 ENDCODE
9217
9218
9219 CODE LCD_RdS
9220     BIC.B #2,&$243
9221     JMP LCD_R
9222 ENDCODE
9223
9224
9225 CODE LCD_RdC
9226     BIS.B #2,&$243
9227     JMP LCD_R
9228 ENDCODE
9229
9230
9231
9232 ASM WDT_INT
9233 BIT.B #$20,&$240
9234 0= IF
9235     CMP #19,&$3D6
9236     U< IF
9237         ADD #1,&$3D6
9238     THEN
9239 ELSE
9240     BIT.B #$40,&$240
9241     0= IF
9242         CMP #3,&$3D6
9243         U>= IF
9244            SUB #1,&$3D6
9245         THEN
9246     THEN
9247 THEN
9248 BW1
9249 BW2
9250 BW3
9251 BIC #$78,0(R1)
9252 RETI
9253 ENDASM
9254
9255
9256 ASM RC5_INT
9257   MOV #1,&$3A0
9258 MOV #1778,R9
9259 MOV #14,R10
9260 BEGIN
9261 MOV #%1011100100,&$380
9262     RRUM    #1,R9
9263     MOV     R9,R8
9264     RRUM    #1,R8
9265     ADD     R9,R8
9266     BEGIN   CMP R8,&$390
9267     U>= UNTIL
9268     BIT.B   #4,&$200
9269     ADDC    R11,R11
9270     MOV.B   &$200,&$208
9271     BIC.B   #4,&$20C
9272     SUB     #1,R10
9273 0<> WHILE
9274     ADD R9,R8
9275     BEGIN
9276         MOV &$390,R9
9277         CMP R8,R9
9278         U>= IF
9279         BIC #$30,&$380
9280         GOTO BW1
9281         THEN
9282         BIT.B #4,&$20C
9283     0<> UNTIL
9284 REPEAT
9285 BIC #$30,&$380
9286 RLAM    #1,R11
9287 MOV.B   R11,R9
9288 RRUM    #2,R9
9289 BIT     #$4000,R11
9290 0= IF   BIS #$40,R9
9291 THEN
9292 RRUM    #3,R11
9293 XOR     @R1,R11
9294 BIT     #$400,R11
9295 0= ?GOTO BW2
9296 XOR #$400,0(R1)
9297 SUB #4,R15
9298 MOV &BASE,2(R15)
9299 MOV #$10,&BASE
9300 MOV R14,0(R15)
9301 MOV R9,R14
9302 LO2HI
9303     ['] LCD_CLEAR IS CR
9304     ['] LCD_WrC  IS EMIT
9305     CR ." $" 2 U.R
9306     ['] CR >BODY IS CR
9307     ['] EMIT >BODY IS EMIT
9308 HI2LO
9309 MOV R14,&BASE
9310 MOV @R15+,R14
9311 GOTO BW3
9312 ENDASM
9313
9314
9315 ASM BACKGROUND
9316 MOV #SLEEP,R9
9317 ADD #4,R9
9318 MOV R9,R0
9319 ENDASM
9320
9321
9322 CODE START
9323     MOV #%1011010100,&$3C0
9324     MOV #1,&$3E0
9325     MOV #19,&$3D2
9326     MOV #%01100000,&$3C6
9327     MOV #10,&$3D6
9328     BIS.B #$20,&$204
9329     BIS.B #$20,&$20A
9330     BIS.B #7,&$245
9331     BIC.B #7,&$247
9332     BIS.B #$0F,&$224
9333     BIC.B #$0F,&$226
9334     BIS.B #4,&$20A
9335     BIC.B #4,&$20C
9336     MOV #RC5_INT,&$FFDE
9337     MOV #%0100010100,&$340
9338     MOV ##1638,&$352
9339     MOV #%10000,&$342
9340     MOV #WDT_INT,&$FFEA
9341
9342     MOV #SLEEP,R9
9343     MOV #BACKGROUND,2(R9)
9344
9345 LO2HI
9346
9347     $03E8 20_US
9348     $03 TOP_LCD
9349     $CD 20_US
9350     $03 TOP_LCD
9351     $5 20_US
9352     $03 TOP_LCD
9353     $2 20_US
9354     $02 TOP_LCD
9355     $2 20_US
9356     $28 LCD_WRF
9357     $08 LCD_WRF
9358     LCD_Clear
9359     $06 LCD_WRF
9360     $0C LCD_WRF
9361     LCD_Clear
9362     ['] LCD_HOME IS CR
9363     ['] LCD_WRC  IS EMIT
9364     CR ." I love you"   
9365     ['] CR >BODY IS CR
9366     ['] EMIT >BODY IS EMIT
9367     ." RC5toLCD is running. Type STOP to quit"
9368     LIT RECURSE IS WARM
9369     ABORT
9370 ;
9371
9372
9373 CODE STOP
9374     MOV #SLEEP,R9
9375     ADD #4,R9
9376     MOV R9,-2(R9)
9377
9378 COLON
9379     ['] WARM >BODY IS WARM
9380
9381     COLD
9382 ;
9383
9384
9385
9386             ; downloading RC5toLCD.4th is done
9387 RST_HERE    ; this app is protected against <reset>
9388
9389 [THEN]
9390
9391
9392
9393
9394
9395 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
9396
9397 [DEFINED] ASM [IF]
9398
9399 MARKER {RC5TOLCD}
9400
9401 [UNDEFINED] MAX [IF]
9402
9403 CODE MAX
9404     CMP @R15,R14
9405     S<  ?GOTO FW1
9406 BW1 ADD #2,R15
9407     MOV @R13+,R0
9408 ENDCODE
9409
9410
9411 CODE MIN
9412     CMP @R15,R14
9413     S<  ?GOTO BW1
9414 FW1 MOV @R15+,R14
9415     MOV @R13+,R0
9416 ENDCODE
9417
9418 [THEN]
9419
9420
9421 [UNDEFINED] U.R [IF]
9422 : U.R
9423   >R  <# 0 # #S #>  
9424   R> OVER - 0 MAX SPACES TYPE
9425 ;
9426 [THEN]
9427
9428
9429
9430 CODE 20_US
9431 BEGIN
9432     BEGIN
9433         BIT #1,&$3C0
9434     0<> UNTIL
9435     BIC #1,&$3C0
9436     SUB #1,R14
9437 U< UNTIL
9438 MOV @R15+,R14
9439 MOV @R13+,R0
9440 ENDCODE
9441
9442
9443 CODE TOP_LCD
9444     BIS.B #4,&$243
9445     BIT.B #1,&$241
9446 0= IF
9447     AND.B #$0F,R14
9448     MOV.B R14,&$222
9449     BIC.B #4,&$243
9450     MOV @R15+,R14
9451     MOV @R13+,R0
9452 THEN
9453     SUB #2,R15
9454     MOV R14,0(R15)
9455     BIC.B #4,&$243
9456     MOV.B &$220,R14
9457     AND.B #$0F,R14
9458     MOV @R13+,R0
9459 ENDCODE
9460
9461
9462 CODE LCD_W
9463     SUB #2,R15
9464     MOV R14,0(R15)
9465     RRUM #4,R14
9466     BIC.B #1,&$243
9467     BIS.B #$0F,&$224
9468 COLON
9469     TOP_LCD 2 20_US
9470     TOP_LCD 2 20_US 
9471 ;
9472
9473
9474 CODE LCD_WrC
9475     BIS.B #2,&$243
9476     JMP LCD_W 
9477 ENDCODE
9478
9479
9480 CODE LCD_WrF
9481     BIC.B #2,&$243
9482     JMP LCD_W 
9483 ENDCODE
9484
9485
9486 : LCD_Clear 
9487     $01 LCD_WrF 100 20_us
9488 ;
9489
9490
9491 : LCD_Home 
9492     $02 LCD_WrF 100 20_us 
9493 ;
9494
9495
9496 [UNDEFINED] OR [IF]
9497
9498 CODE OR
9499 BIS @R15+,R14
9500 MOV @R13+,R0
9501 ENDCODE
9502
9503
9504 [THEN]
9505
9506 : LCD_Entry_set     $04 OR LCD_WrF ;
9507
9508 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
9509
9510 : LCD_DSP_Shift     $10 OR LCD_WrF ;
9511
9512 : LCD_Fn_Set        $20 OR LCD_WrF ;
9513
9514 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
9515
9516 : LCD_Goto          $80 OR LCD_WrF ;
9517
9518 CODE LCD_R
9519     BIC.B #$0F,&$224
9520     BIS.B #1,&$243
9521 COLON
9522     TOP_LCD 2 20_us
9523     TOP_LCD 2 20_us
9524 HI2LO
9525     RLAM #4,0(R15)
9526     ADD.B @R15+,R14
9527     MOV @R1+,R13
9528     MOV @R13+,R0
9529 ENDCODE
9530
9531
9532 CODE LCD_RdS
9533     BIC.B #2,&$243
9534     JMP LCD_R
9535 ENDCODE
9536
9537
9538 CODE LCD_RdC
9539     BIS.B #2,&$243
9540     JMP LCD_R
9541 ENDCODE
9542
9543
9544
9545 ASM WDT_INT
9546 BIT.B #$20,&$240
9547 0= IF
9548     CMP #19,&$3D6
9549     U< IF
9550         ADD #1,&$3D6
9551     THEN
9552 ELSE
9553     BIT.B #$40,&$240
9554     0= IF
9555         CMP #3,&$3D6
9556         U>= IF
9557            SUB #1,&$3D6
9558         THEN
9559     THEN
9560 THEN
9561 BW1
9562 BW2
9563 BW3
9564 BIC #$78,0(R1)
9565 RETI
9566 ENDASM
9567
9568
9569 ASM RC5_INT
9570   MOV #1,&$3A0
9571 MOV #1778,R9
9572 MOV #14,R10
9573 BEGIN
9574 MOV #%1011100100,&$380
9575     RRUM    #1,R9
9576     MOV     R9,R8
9577     RRUM    #1,R8
9578     ADD     R9,R8
9579     BEGIN   CMP R8,&$390
9580     U>= UNTIL
9581     BIT.B   #4,&$200
9582     ADDC    R11,R11
9583     MOV.B   &$200,&$208
9584     BIC.B   #4,&$20C
9585     SUB     #1,R10
9586 0<> WHILE
9587     ADD R9,R8
9588     BEGIN
9589         MOV &$390,R9
9590         CMP R8,R9
9591         U>= IF
9592         BIC #$30,&$380
9593         GOTO BW1
9594         THEN
9595         BIT.B #4,&$20C
9596     0<> UNTIL
9597 REPEAT
9598 BIC #$30,&$380
9599 RLAM    #1,R11
9600 MOV.B   R11,R9
9601 RRUM    #2,R9
9602 BIT     #$4000,R11
9603 0= IF   BIS #$40,R9
9604 THEN
9605 RRUM    #3,R11
9606 XOR     @R1,R11
9607 BIT     #$400,R11
9608 0= ?GOTO BW2
9609 XOR #$400,0(R1)
9610 SUB #4,R15
9611 MOV &BASE,2(R15)
9612 MOV #$10,&BASE
9613 MOV R14,0(R15)
9614 MOV R9,R14
9615 LO2HI
9616     ['] LCD_CLEAR IS CR
9617     ['] LCD_WrC  IS EMIT
9618     CR ." $" 2 U.R
9619     ['] CR >BODY IS CR
9620     ['] EMIT >BODY IS EMIT
9621 HI2LO
9622 MOV R14,&BASE
9623 MOV @R15+,R14
9624 GOTO BW3
9625 ENDASM
9626
9627
9628 ASM BACKGROUND
9629 MOV #SLEEP,R9
9630 ADD #4,R9
9631 MOV R9,R0
9632 ENDASM
9633
9634
9635 CODE START
9636     MOV #%1011010100,&$3C0
9637     MOV #1,&$3E0
9638     MOV #19,&$3D2
9639     MOV #%01100000,&$3C6
9640     MOV #10,&$3D6
9641     BIS.B #$20,&$204
9642     BIS.B #$20,&$20A
9643     BIS.B #7,&$245
9644     BIC.B #7,&$247
9645     BIS.B #$0F,&$224
9646     BIC.B #$0F,&$226
9647     BIS.B #4,&$20A
9648     BIC.B #4,&$20C
9649     MOV #RC5_INT,&$FFDE
9650     MOV #%0100010100,&$340
9651     MOV ##1638,&$352
9652     MOV #%10000,&$342
9653     MOV #WDT_INT,&$FFEA
9654
9655     MOV #SLEEP,R9
9656     MOV #BACKGROUND,2(R9)
9657
9658 LO2HI
9659
9660     $03E8 20_US
9661     $03 TOP_LCD
9662     $CD 20_US
9663     $03 TOP_LCD
9664     $5 20_US
9665     $03 TOP_LCD
9666     $2 20_US
9667     $02 TOP_LCD
9668     $2 20_US
9669     $28 LCD_WRF
9670     $08 LCD_WRF
9671     LCD_Clear
9672     $06 LCD_WRF
9673     $0C LCD_WRF
9674     LCD_Clear
9675     ['] LCD_HOME IS CR
9676     ['] LCD_WRC  IS EMIT
9677     CR ." I love you"   
9678     ['] CR >BODY IS CR
9679     ['] EMIT >BODY IS EMIT
9680     ." RC5toLCD is running. Type STOP to quit"
9681     LIT RECURSE IS WARM
9682     ABORT
9683 ;
9684
9685
9686 CODE STOP
9687     MOV #SLEEP,R9
9688     ADD #4,R9
9689     MOV R9,-2(R9)
9690
9691 COLON
9692     ['] WARM >BODY IS WARM
9693
9694     COLD
9695 ;
9696
9697
9698
9699             ; downloading RC5toLCD.4th is done
9700 RST_HERE    ; this app is protected against <reset>
9701
9702 [THEN]
9703
9704
9705
9706
9707
9708 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
9709
9710 [DEFINED] ASM [IF]
9711
9712 MARKER {RC5TOLCD}
9713
9714 [UNDEFINED] MAX [IF]
9715
9716 CODE MAX
9717     CMP @R15,R14
9718     S<  ?GOTO FW1
9719 BW1 ADD #2,R15
9720     MOV @R13+,R0
9721 ENDCODE
9722
9723
9724 CODE MIN
9725     CMP @R15,R14
9726     S<  ?GOTO BW1
9727 FW1 MOV @R15+,R14
9728     MOV @R13+,R0
9729 ENDCODE
9730
9731 [THEN]
9732
9733
9734 [UNDEFINED] U.R [IF]
9735 : U.R
9736   >R  <# 0 # #S #>  
9737   R> OVER - 0 MAX SPACES TYPE
9738 ;
9739 [THEN]
9740
9741
9742
9743 CODE 20_US
9744 BEGIN
9745     BEGIN
9746         BIT #1,&$3C0
9747     0<> UNTIL
9748     BIC #1,&$3C0
9749     SUB #1,R14
9750 U< UNTIL
9751 MOV @R15+,R14
9752 MOV @R13+,R0
9753 ENDCODE
9754
9755
9756 CODE TOP_LCD
9757     BIS.B #4,&$243
9758     BIT.B #1,&$241
9759 0= IF
9760     AND.B #$0F,R14
9761     MOV.B R14,&$222
9762     BIC.B #4,&$243
9763     MOV @R15+,R14
9764     MOV @R13+,R0
9765 THEN
9766     SUB #2,R15
9767     MOV R14,0(R15)
9768     BIC.B #4,&$243
9769     MOV.B &$220,R14
9770     AND.B #$0F,R14
9771     MOV @R13+,R0
9772 ENDCODE
9773
9774
9775 CODE LCD_W
9776     SUB #2,R15
9777     MOV R14,0(R15)
9778     RRUM #4,R14
9779     BIC.B #1,&$243
9780     BIS.B #$0F,&$224
9781 COLON
9782     TOP_LCD 2 20_US
9783     TOP_LCD 2 20_US 
9784 ;
9785
9786
9787 CODE LCD_WrC
9788     BIS.B #2,&$243
9789     JMP LCD_W 
9790 ENDCODE
9791
9792
9793 CODE LCD_WrF
9794     BIC.B #2,&$243
9795     JMP LCD_W 
9796 ENDCODE
9797
9798
9799 : LCD_Clear 
9800     $01 LCD_WrF 100 20_us
9801 ;
9802
9803
9804 : LCD_Home 
9805     $02 LCD_WrF 100 20_us 
9806 ;
9807
9808
9809 [UNDEFINED] OR [IF]
9810
9811 CODE OR
9812 BIS @R15+,R14
9813 MOV @R13+,R0
9814 ENDCODE
9815
9816
9817 [THEN]
9818
9819 : LCD_Entry_set     $04 OR LCD_WrF ;
9820
9821 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
9822
9823 : LCD_DSP_Shift     $10 OR LCD_WrF ;
9824
9825 : LCD_Fn_Set        $20 OR LCD_WrF ;
9826
9827 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
9828
9829 : LCD_Goto          $80 OR LCD_WrF ;
9830
9831 CODE LCD_R
9832     BIC.B #$0F,&$224
9833     BIS.B #1,&$243
9834 COLON
9835     TOP_LCD 2 20_us
9836     TOP_LCD 2 20_us
9837 HI2LO
9838     RLAM #4,0(R15)
9839     ADD.B @R15+,R14
9840     MOV @R1+,R13
9841     MOV @R13+,R0
9842 ENDCODE
9843
9844
9845 CODE LCD_RdS
9846     BIC.B #2,&$243
9847     JMP LCD_R
9848 ENDCODE
9849
9850
9851 CODE LCD_RdC
9852     BIS.B #2,&$243
9853     JMP LCD_R
9854 ENDCODE
9855
9856
9857
9858 ASM WDT_INT
9859 BIT.B #$20,&$240
9860 0= IF
9861     CMP #19,&$3D6
9862     U< IF
9863         ADD #1,&$3D6
9864     THEN
9865 ELSE
9866     BIT.B #$40,&$240
9867     0= IF
9868         CMP #3,&$3D6
9869         U>= IF
9870            SUB #1,&$3D6
9871         THEN
9872     THEN
9873 THEN
9874 BW1
9875 BW2
9876 BW3
9877 BIC #$78,0(R1)
9878 RETI
9879 ENDASM
9880
9881
9882 ASM RC5_INT
9883   MOV #1,&$3A0
9884 MOV #1778,R9
9885 MOV #14,R10
9886 BEGIN
9887 MOV #%1011100100,&$380
9888     RRUM    #1,R9
9889     MOV     R9,R8
9890     RRUM    #1,R8
9891     ADD     R9,R8
9892     BEGIN   CMP R8,&$390
9893     U>= UNTIL
9894     BIT.B   #4,&$200
9895     ADDC    R11,R11
9896     MOV.B   &$200,&$208
9897     BIC.B   #4,&$20C
9898     SUB     #1,R10
9899 0<> WHILE
9900     ADD R9,R8
9901     BEGIN
9902         MOV &$390,R9
9903         CMP R8,R9
9904         U>= IF
9905         BIC #$30,&$380
9906         GOTO BW1
9907         THEN
9908         BIT.B #4,&$20C
9909     0<> UNTIL
9910 REPEAT
9911 BIC #$30,&$380
9912 RLAM    #1,R11
9913 MOV.B   R11,R9
9914 RRUM    #2,R9
9915 BIT     #$4000,R11
9916 0= IF   BIS #$40,R9
9917 THEN
9918 RRUM    #3,R11
9919 XOR     @R1,R11
9920 BIT     #$400,R11
9921 0= ?GOTO BW2
9922 XOR #$400,0(R1)
9923 SUB #4,R15
9924 MOV &BASE,2(R15)
9925 MOV #$10,&BASE
9926 MOV R14,0(R15)
9927 MOV R9,R14
9928 LO2HI
9929     ['] LCD_CLEAR IS CR
9930     ['] LCD_WrC  IS EMIT
9931     CR ." $" 2 U.R
9932     ['] CR >BODY IS CR
9933     ['] EMIT >BODY IS EMIT
9934 HI2LO
9935 MOV R14,&BASE
9936 MOV @R15+,R14
9937 GOTO BW3
9938 ENDASM
9939
9940
9941 ASM BACKGROUND
9942 MOV #SLEEP,R9
9943 ADD #4,R9
9944 MOV R9,R0
9945 ENDASM
9946
9947
9948 CODE START
9949     MOV #%1011010100,&$3C0
9950     MOV #1,&$3E0
9951     MOV #19,&$3D2
9952     MOV #%01100000,&$3C6
9953     MOV #10,&$3D6
9954     BIS.B #$20,&$204
9955     BIS.B #$20,&$20A
9956     BIS.B #7,&$245
9957     BIC.B #7,&$247
9958     BIS.B #$0F,&$224
9959     BIC.B #$0F,&$226
9960     BIS.B #4,&$20A
9961     BIC.B #4,&$20C
9962     MOV #RC5_INT,&$FFDE
9963     MOV #%0100010100,&$340
9964     MOV ##1638,&$352
9965     MOV #%10000,&$342
9966     MOV #WDT_INT,&$FFEA
9967
9968     MOV #SLEEP,R9
9969     MOV #BACKGROUND,2(R9)
9970
9971 LO2HI
9972
9973     $03E8 20_US
9974     $03 TOP_LCD
9975     $CD 20_US
9976     $03 TOP_LCD
9977     $5 20_US
9978     $03 TOP_LCD
9979     $2 20_US
9980     $02 TOP_LCD
9981     $2 20_US
9982     $28 LCD_WRF
9983     $08 LCD_WRF
9984     LCD_Clear
9985     $06 LCD_WRF
9986     $0C LCD_WRF
9987     LCD_Clear
9988     ['] LCD_HOME IS CR
9989     ['] LCD_WRC  IS EMIT
9990     CR ." I love you"   
9991     ['] CR >BODY IS CR
9992     ['] EMIT >BODY IS EMIT
9993     ." RC5toLCD is running. Type STOP to quit"
9994     LIT RECURSE IS WARM
9995     ABORT
9996 ;
9997
9998
9999 CODE STOP
10000     MOV #SLEEP,R9
10001     ADD #4,R9
10002     MOV R9,-2(R9)
10003
10004 COLON
10005     ['] WARM >BODY IS WARM
10006
10007     COLD
10008 ;
10009
10010
10011
10012             ; downloading RC5toLCD.4th is done
10013 RST_HERE    ; this app is protected against <reset>
10014
10015 [THEN]
10016
10017
10018
10019
10020
10021 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
10022
10023 [DEFINED] ASM [IF]
10024
10025 MARKER {RC5TOLCD}
10026
10027 [UNDEFINED] MAX [IF]
10028
10029 CODE MAX
10030     CMP @R15,R14
10031     S<  ?GOTO FW1
10032 BW1 ADD #2,R15
10033     MOV @R13+,R0
10034 ENDCODE
10035
10036
10037 CODE MIN
10038     CMP @R15,R14
10039     S<  ?GOTO BW1
10040 FW1 MOV @R15+,R14
10041     MOV @R13+,R0
10042 ENDCODE
10043
10044 [THEN]
10045
10046
10047 [UNDEFINED] U.R [IF]
10048 : U.R
10049   >R  <# 0 # #S #>  
10050   R> OVER - 0 MAX SPACES TYPE
10051 ;
10052 [THEN]
10053
10054
10055
10056 CODE 20_US
10057 BEGIN
10058     BEGIN
10059         BIT #1,&$3C0
10060     0<> UNTIL
10061     BIC #1,&$3C0
10062     SUB #1,R14
10063 U< UNTIL
10064 MOV @R15+,R14
10065 MOV @R13+,R0
10066 ENDCODE
10067
10068
10069 CODE TOP_LCD
10070     BIS.B #4,&$243
10071     BIT.B #1,&$241
10072 0= IF
10073     AND.B #$0F,R14
10074     MOV.B R14,&$222
10075     BIC.B #4,&$243
10076     MOV @R15+,R14
10077     MOV @R13+,R0
10078 THEN
10079     SUB #2,R15
10080     MOV R14,0(R15)
10081     BIC.B #4,&$243
10082     MOV.B &$220,R14
10083     AND.B #$0F,R14
10084     MOV @R13+,R0
10085 ENDCODE
10086
10087
10088 CODE LCD_W
10089     SUB #2,R15
10090     MOV R14,0(R15)
10091     RRUM #4,R14
10092     BIC.B #1,&$243
10093     BIS.B #$0F,&$224
10094 COLON
10095     TOP_LCD 2 20_US
10096     TOP_LCD 2 20_US 
10097 ;
10098
10099
10100 CODE LCD_WrC
10101     BIS.B #2,&$243
10102     JMP LCD_W 
10103 ENDCODE
10104
10105
10106 CODE LCD_WrF
10107     BIC.B #2,&$243
10108     JMP LCD_W 
10109 ENDCODE
10110
10111
10112 : LCD_Clear 
10113     $01 LCD_WrF 100 20_us
10114 ;
10115
10116
10117 : LCD_Home 
10118     $02 LCD_WrF 100 20_us 
10119 ;
10120
10121
10122 [UNDEFINED] OR [IF]
10123
10124 CODE OR
10125 BIS @R15+,R14
10126 MOV @R13+,R0
10127 ENDCODE
10128
10129
10130 [THEN]
10131
10132 : LCD_Entry_set     $04 OR LCD_WrF ;
10133
10134 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
10135
10136 : LCD_DSP_Shift     $10 OR LCD_WrF ;
10137
10138 : LCD_Fn_Set        $20 OR LCD_WrF ;
10139
10140 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
10141
10142 : LCD_Goto          $80 OR LCD_WrF ;
10143
10144 CODE LCD_R
10145     BIC.B #$0F,&$224
10146     BIS.B #1,&$243
10147 COLON
10148     TOP_LCD 2 20_us
10149     TOP_LCD 2 20_us
10150 HI2LO
10151     RLAM #4,0(R15)
10152     ADD.B @R15+,R14
10153     MOV @R1+,R13
10154     MOV @R13+,R0
10155 ENDCODE
10156
10157
10158 CODE LCD_RdS
10159     BIC.B #2,&$243
10160     JMP LCD_R
10161 ENDCODE
10162
10163
10164 CODE LCD_RdC
10165     BIS.B #2,&$243
10166     JMP LCD_R
10167 ENDCODE
10168
10169
10170
10171 ASM WDT_INT
10172 BIT.B #$20,&$240
10173 0= IF
10174     CMP #19,&$3D6
10175     U< IF
10176         ADD #1,&$3D6
10177     THEN
10178 ELSE
10179     BIT.B #$40,&$240
10180     0= IF
10181         CMP #3,&$3D6
10182         U>= IF
10183            SUB #1,&$3D6
10184         THEN
10185     THEN
10186 THEN
10187 BW1
10188 BW2
10189 BW3
10190 BIC #$78,0(R1)
10191 RETI
10192 ENDASM
10193
10194
10195 ASM RC5_INT
10196   MOV #1,&$3A0
10197 MOV #1778,R9
10198 MOV #14,R10
10199 BEGIN
10200 MOV #%1011100100,&$380
10201     RRUM    #1,R9
10202     MOV     R9,R8
10203     RRUM    #1,R8
10204     ADD     R9,R8
10205     BEGIN   CMP R8,&$390
10206     U>= UNTIL
10207     BIT.B   #4,&$200
10208     ADDC    R11,R11
10209     MOV.B   &$200,&$208
10210     BIC.B   #4,&$20C
10211     SUB     #1,R10
10212 0<> WHILE
10213     ADD R9,R8
10214     BEGIN
10215         MOV &$390,R9
10216         CMP R8,R9
10217         U>= IF
10218         BIC #$30,&$380
10219         GOTO BW1
10220         THEN
10221         BIT.B #4,&$20C
10222     0<> UNTIL
10223 REPEAT
10224 BIC #$30,&$380
10225 RLAM    #1,R11
10226 MOV.B   R11,R9
10227 RRUM    #2,R9
10228 BIT     #$4000,R11
10229 0= IF   BIS #$40,R9
10230 THEN
10231 RRUM    #3,R11
10232 XOR     @R1,R11
10233 BIT     #$400,R11
10234 0= ?GOTO BW2
10235 XOR #$400,0(R1)
10236 SUB #4,R15
10237 MOV &BASE,2(R15)
10238 MOV #$10,&BASE
10239 MOV R14,0(R15)
10240 MOV R9,R14
10241 LO2HI
10242     ['] LCD_CLEAR IS CR
10243     ['] LCD_WrC  IS EMIT
10244     CR ." $" 2 U.R
10245     ['] CR >BODY IS CR
10246     ['] EMIT >BODY IS EMIT
10247 HI2LO
10248 MOV R14,&BASE
10249 MOV @R15+,R14
10250 GOTO BW3
10251 ENDASM
10252
10253
10254 ASM BACKGROUND
10255 MOV #SLEEP,R9
10256 ADD #4,R9
10257 MOV R9,R0
10258 ENDASM
10259
10260
10261 CODE START
10262     MOV #%1011010100,&$3C0
10263     MOV #1,&$3E0
10264     MOV #19,&$3D2
10265     MOV #%01100000,&$3C6
10266     MOV #10,&$3D6
10267     BIS.B #$20,&$204
10268     BIS.B #$20,&$20A
10269     BIS.B #7,&$245
10270     BIC.B #7,&$247
10271     BIS.B #$0F,&$224
10272     BIC.B #$0F,&$226
10273     BIS.B #4,&$20A
10274     BIC.B #4,&$20C
10275     MOV #RC5_INT,&$FFDE
10276     MOV #%0100010100,&$340
10277     MOV ##1638,&$352
10278     MOV #%10000,&$342
10279     MOV #WDT_INT,&$FFEA
10280
10281     MOV #SLEEP,R9
10282     MOV #BACKGROUND,2(R9)
10283
10284 LO2HI
10285
10286     $03E8 20_US
10287     $03 TOP_LCD
10288     $CD 20_US
10289     $03 TOP_LCD
10290     $5 20_US
10291     $03 TOP_LCD
10292     $2 20_US
10293     $02 TOP_LCD
10294     $2 20_US
10295     $28 LCD_WRF
10296     $08 LCD_WRF
10297     LCD_Clear
10298     $06 LCD_WRF
10299     $0C LCD_WRF
10300     LCD_Clear
10301     ['] LCD_HOME IS CR
10302     ['] LCD_WRC  IS EMIT
10303     CR ." I love you"   
10304     ['] CR >BODY IS CR
10305     ['] EMIT >BODY IS EMIT
10306     ." RC5toLCD is running. Type STOP to quit"
10307     LIT RECURSE IS WARM
10308     ABORT
10309 ;
10310
10311
10312 CODE STOP
10313     MOV #SLEEP,R9
10314     ADD #4,R9
10315     MOV R9,-2(R9)
10316
10317 COLON
10318     ['] WARM >BODY IS WARM
10319
10320     COLD
10321 ;
10322
10323
10324
10325             ; downloading RC5toLCD.4th is done
10326 RST_HERE    ; this app is protected against <reset>
10327
10328 [THEN]
10329
10330
10331
10332
10333
10334 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
10335
10336 [DEFINED] ASM [IF]
10337
10338 MARKER {RC5TOLCD}
10339
10340 [UNDEFINED] MAX [IF]
10341
10342 CODE MAX
10343     CMP @R15,R14
10344     S<  ?GOTO FW1
10345 BW1 ADD #2,R15
10346     MOV @R13+,R0
10347 ENDCODE
10348
10349
10350 CODE MIN
10351     CMP @R15,R14
10352     S<  ?GOTO BW1
10353 FW1 MOV @R15+,R14
10354     MOV @R13+,R0
10355 ENDCODE
10356
10357 [THEN]
10358
10359
10360 [UNDEFINED] U.R [IF]
10361 : U.R
10362   >R  <# 0 # #S #>  
10363   R> OVER - 0 MAX SPACES TYPE
10364 ;
10365 [THEN]
10366
10367
10368
10369 CODE 20_US
10370 BEGIN
10371     BEGIN
10372         BIT #1,&$3C0
10373     0<> UNTIL
10374     BIC #1,&$3C0
10375     SUB #1,R14
10376 U< UNTIL
10377 MOV @R15+,R14
10378 MOV @R13+,R0
10379 ENDCODE
10380
10381
10382 CODE TOP_LCD
10383     BIS.B #4,&$243
10384     BIT.B #1,&$241
10385 0= IF
10386     AND.B #$0F,R14
10387     MOV.B R14,&$222
10388     BIC.B #4,&$243
10389     MOV @R15+,R14
10390     MOV @R13+,R0
10391 THEN
10392     SUB #2,R15
10393     MOV R14,0(R15)
10394     BIC.B #4,&$243
10395     MOV.B &$220,R14
10396     AND.B #$0F,R14
10397     MOV @R13+,R0
10398 ENDCODE
10399
10400
10401 CODE LCD_W
10402     SUB #2,R15
10403     MOV R14,0(R15)
10404     RRUM #4,R14
10405     BIC.B #1,&$243
10406     BIS.B #$0F,&$224
10407 COLON
10408     TOP_LCD 2 20_US
10409     TOP_LCD 2 20_US 
10410 ;
10411
10412
10413 CODE LCD_WrC
10414     BIS.B #2,&$243
10415     JMP LCD_W 
10416 ENDCODE
10417
10418
10419 CODE LCD_WrF
10420     BIC.B #2,&$243
10421     JMP LCD_W 
10422 ENDCODE
10423
10424
10425 : LCD_Clear 
10426     $01 LCD_WrF 100 20_us
10427 ;
10428
10429
10430 : LCD_Home 
10431     $02 LCD_WrF 100 20_us 
10432 ;
10433
10434
10435 [UNDEFINED] OR [IF]
10436
10437 CODE OR
10438 BIS @R15+,R14
10439 MOV @R13+,R0
10440 ENDCODE
10441
10442
10443 [THEN]
10444
10445 : LCD_Entry_set     $04 OR LCD_WrF ;
10446
10447 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
10448
10449 : LCD_DSP_Shift     $10 OR LCD_WrF ;
10450
10451 : LCD_Fn_Set        $20 OR LCD_WrF ;
10452
10453 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
10454
10455 : LCD_Goto          $80 OR LCD_WrF ;
10456
10457 CODE LCD_R
10458     BIC.B #$0F,&$224
10459     BIS.B #1,&$243
10460 COLON
10461     TOP_LCD 2 20_us
10462     TOP_LCD 2 20_us
10463 HI2LO
10464     RLAM #4,0(R15)
10465     ADD.B @R15+,R14
10466     MOV @R1+,R13
10467     MOV @R13+,R0
10468 ENDCODE
10469
10470
10471 CODE LCD_RdS
10472     BIC.B #2,&$243
10473     JMP LCD_R
10474 ENDCODE
10475
10476
10477 CODE LCD_RdC
10478     BIS.B #2,&$243
10479     JMP LCD_R
10480 ENDCODE
10481
10482
10483
10484 ASM WDT_INT
10485 BIT.B #$20,&$240
10486 0= IF
10487     CMP #19,&$3D6
10488     U< IF
10489         ADD #1,&$3D6
10490     THEN
10491 ELSE
10492     BIT.B #$40,&$240
10493     0= IF
10494         CMP #3,&$3D6
10495         U>= IF
10496            SUB #1,&$3D6
10497         THEN
10498     THEN
10499 THEN
10500 BW1
10501 BW2
10502 BW3
10503 BIC #$78,0(R1)
10504 RETI
10505 ENDASM
10506
10507
10508 ASM RC5_INT
10509   MOV #1,&$3A0
10510 MOV #1778,R9
10511 MOV #14,R10
10512 BEGIN
10513 MOV #%1011100100,&$380
10514     RRUM    #1,R9
10515     MOV     R9,R8
10516     RRUM    #1,R8
10517     ADD     R9,R8
10518     BEGIN   CMP R8,&$390
10519     U>= UNTIL
10520     BIT.B   #4,&$200
10521     ADDC    R11,R11
10522     MOV.B   &$200,&$208
10523     BIC.B   #4,&$20C
10524     SUB     #1,R10
10525 0<> WHILE
10526     ADD R9,R8
10527     BEGIN
10528         MOV &$390,R9
10529         CMP R8,R9
10530         U>= IF
10531         BIC #$30,&$380
10532         GOTO BW1
10533         THEN
10534         BIT.B #4,&$20C
10535     0<> UNTIL
10536 REPEAT
10537 BIC #$30,&$380
10538 RLAM    #1,R11
10539 MOV.B   R11,R9
10540 RRUM    #2,R9
10541 BIT     #$4000,R11
10542 0= IF   BIS #$40,R9
10543 THEN
10544 RRUM    #3,R11
10545 XOR     @R1,R11
10546 BIT     #$400,R11
10547 0= ?GOTO BW2
10548 XOR #$400,0(R1)
10549 SUB #4,R15
10550 MOV &BASE,2(R15)
10551 MOV #$10,&BASE
10552 MOV R14,0(R15)
10553 MOV R9,R14
10554 LO2HI
10555     ['] LCD_CLEAR IS CR
10556     ['] LCD_WrC  IS EMIT
10557     CR ." $" 2 U.R
10558     ['] CR >BODY IS CR
10559     ['] EMIT >BODY IS EMIT
10560 HI2LO
10561 MOV R14,&BASE
10562 MOV @R15+,R14
10563 GOTO BW3
10564 ENDASM
10565
10566
10567 ASM BACKGROUND
10568 MOV #SLEEP,R9
10569 ADD #4,R9
10570 MOV R9,R0
10571 ENDASM
10572
10573
10574 CODE START
10575     MOV #%1011010100,&$3C0
10576     MOV #1,&$3E0
10577     MOV #19,&$3D2
10578     MOV #%01100000,&$3C6
10579     MOV #10,&$3D6
10580     BIS.B #$20,&$204
10581     BIS.B #$20,&$20A
10582     BIS.B #7,&$245
10583     BIC.B #7,&$247
10584     BIS.B #$0F,&$224
10585     BIC.B #$0F,&$226
10586     BIS.B #4,&$20A
10587     BIC.B #4,&$20C
10588     MOV #RC5_INT,&$FFDE
10589     MOV #%0100010100,&$340
10590     MOV ##1638,&$352
10591     MOV #%10000,&$342
10592     MOV #WDT_INT,&$FFEA
10593
10594     MOV #SLEEP,R9
10595     MOV #BACKGROUND,2(R9)
10596
10597 LO2HI
10598
10599     $03E8 20_US
10600     $03 TOP_LCD
10601     $CD 20_US
10602     $03 TOP_LCD
10603     $5 20_US
10604     $03 TOP_LCD
10605     $2 20_US
10606     $02 TOP_LCD
10607     $2 20_US
10608     $28 LCD_WRF
10609     $08 LCD_WRF
10610     LCD_Clear
10611     $06 LCD_WRF
10612     $0C LCD_WRF
10613     LCD_Clear
10614     ['] LCD_HOME IS CR
10615     ['] LCD_WRC  IS EMIT
10616     CR ." I love you"   
10617     ['] CR >BODY IS CR
10618     ['] EMIT >BODY IS EMIT
10619     ." RC5toLCD is running. Type STOP to quit"
10620     LIT RECURSE IS WARM
10621     ABORT
10622 ;
10623
10624
10625 CODE STOP
10626     MOV #SLEEP,R9
10627     ADD #4,R9
10628     MOV R9,-2(R9)
10629
10630 COLON
10631     ['] WARM >BODY IS WARM
10632
10633     COLD
10634 ;
10635
10636
10637
10638             ; downloading RC5toLCD.4th is done
10639 RST_HERE    ; this app is protected against <reset>
10640
10641 [THEN]
10642
10643
10644
10645
10646
10647 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
10648
10649 [DEFINED] ASM [IF]
10650
10651 MARKER {RC5TOLCD}
10652
10653 [UNDEFINED] MAX [IF]
10654
10655 CODE MAX
10656     CMP @R15,R14
10657     S<  ?GOTO FW1
10658 BW1 ADD #2,R15
10659     MOV @R13+,R0
10660 ENDCODE
10661
10662
10663 CODE MIN
10664     CMP @R15,R14
10665     S<  ?GOTO BW1
10666 FW1 MOV @R15+,R14
10667     MOV @R13+,R0
10668 ENDCODE
10669
10670 [THEN]
10671
10672
10673 [UNDEFINED] U.R [IF]
10674 : U.R
10675   >R  <# 0 # #S #>  
10676   R> OVER - 0 MAX SPACES TYPE
10677 ;
10678 [THEN]
10679
10680
10681
10682 CODE 20_US
10683 BEGIN
10684     BEGIN
10685         BIT #1,&$3C0
10686     0<> UNTIL
10687     BIC #1,&$3C0
10688     SUB #1,R14
10689 U< UNTIL
10690 MOV @R15+,R14
10691 MOV @R13+,R0
10692 ENDCODE
10693
10694
10695 CODE TOP_LCD
10696     BIS.B #4,&$243
10697     BIT.B #1,&$241
10698 0= IF
10699     AND.B #$0F,R14
10700     MOV.B R14,&$222
10701     BIC.B #4,&$243
10702     MOV @R15+,R14
10703     MOV @R13+,R0
10704 THEN
10705     SUB #2,R15
10706     MOV R14,0(R15)
10707     BIC.B #4,&$243
10708     MOV.B &$220,R14
10709     AND.B #$0F,R14
10710     MOV @R13+,R0
10711 ENDCODE
10712
10713
10714 CODE LCD_W
10715     SUB #2,R15
10716     MOV R14,0(R15)
10717     RRUM #4,R14
10718     BIC.B #1,&$243
10719     BIS.B #$0F,&$224
10720 COLON
10721     TOP_LCD 2 20_US
10722     TOP_LCD 2 20_US 
10723 ;
10724
10725
10726 CODE LCD_WrC
10727     BIS.B #2,&$243
10728     JMP LCD_W 
10729 ENDCODE
10730
10731
10732 CODE LCD_WrF
10733     BIC.B #2,&$243
10734     JMP LCD_W 
10735 ENDCODE
10736
10737
10738 : LCD_Clear 
10739     $01 LCD_WrF 100 20_us
10740 ;
10741
10742
10743 : LCD_Home 
10744     $02 LCD_WrF 100 20_us 
10745 ;
10746
10747
10748 [UNDEFINED] OR [IF]
10749
10750 CODE OR
10751 BIS @R15+,R14
10752 MOV @R13+,R0
10753 ENDCODE
10754
10755
10756 [THEN]
10757
10758 : LCD_Entry_set     $04 OR LCD_WrF ;
10759
10760 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
10761
10762 : LCD_DSP_Shift     $10 OR LCD_WrF ;
10763
10764 : LCD_Fn_Set        $20 OR LCD_WrF ;
10765
10766 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
10767
10768 : LCD_Goto          $80 OR LCD_WrF ;
10769
10770 CODE LCD_R
10771     BIC.B #$0F,&$224
10772     BIS.B #1,&$243
10773 COLON
10774     TOP_LCD 2 20_us
10775     TOP_LCD 2 20_us
10776 HI2LO
10777     RLAM #4,0(R15)
10778     ADD.B @R15+,R14
10779     MOV @R1+,R13
10780     MOV @R13+,R0
10781 ENDCODE
10782
10783
10784 CODE LCD_RdS
10785     BIC.B #2,&$243
10786     JMP LCD_R
10787 ENDCODE
10788
10789
10790 CODE LCD_RdC
10791     BIS.B #2,&$243
10792     JMP LCD_R
10793 ENDCODE
10794
10795
10796
10797 ASM WDT_INT
10798 BIT.B #$20,&$240
10799 0= IF
10800     CMP #19,&$3D6
10801     U< IF
10802         ADD #1,&$3D6
10803     THEN
10804 ELSE
10805     BIT.B #$40,&$240
10806     0= IF
10807         CMP #3,&$3D6
10808         U>= IF
10809            SUB #1,&$3D6
10810         THEN
10811     THEN
10812 THEN
10813 BW1
10814 BW2
10815 BW3
10816 BIC #$78,0(R1)
10817 RETI
10818 ENDASM
10819
10820
10821 ASM RC5_INT
10822   MOV #1,&$3A0
10823 MOV #1778,R9
10824 MOV #14,R10
10825 BEGIN
10826 MOV #%1011100100,&$380
10827     RRUM    #1,R9
10828     MOV     R9,R8
10829     RRUM    #1,R8
10830     ADD     R9,R8
10831     BEGIN   CMP R8,&$390
10832     U>= UNTIL
10833     BIT.B   #4,&$200
10834     ADDC    R11,R11
10835     MOV.B   &$200,&$208
10836     BIC.B   #4,&$20C
10837     SUB     #1,R10
10838 0<> WHILE
10839     ADD R9,R8
10840     BEGIN
10841         MOV &$390,R9
10842         CMP R8,R9
10843         U>= IF
10844         BIC #$30,&$380
10845         GOTO BW1
10846         THEN
10847         BIT.B #4,&$20C
10848     0<> UNTIL
10849 REPEAT
10850 BIC #$30,&$380
10851 RLAM    #1,R11
10852 MOV.B   R11,R9
10853 RRUM    #2,R9
10854 BIT     #$4000,R11
10855 0= IF   BIS #$40,R9
10856 THEN
10857 RRUM    #3,R11
10858 XOR     @R1,R11
10859 BIT     #$400,R11
10860 0= ?GOTO BW2
10861 XOR #$400,0(R1)
10862 SUB #4,R15
10863 MOV &BASE,2(R15)
10864 MOV #$10,&BASE
10865 MOV R14,0(R15)
10866 MOV R9,R14
10867 LO2HI
10868     ['] LCD_CLEAR IS CR
10869     ['] LCD_WrC  IS EMIT
10870     CR ." $" 2 U.R
10871     ['] CR >BODY IS CR
10872     ['] EMIT >BODY IS EMIT
10873 HI2LO
10874 MOV R14,&BASE
10875 MOV @R15+,R14
10876 GOTO BW3
10877 ENDASM
10878
10879
10880 ASM BACKGROUND
10881 MOV #SLEEP,R9
10882 ADD #4,R9
10883 MOV R9,R0
10884 ENDASM
10885
10886
10887 CODE START
10888     MOV #%1011010100,&$3C0
10889     MOV #1,&$3E0
10890     MOV #19,&$3D2
10891     MOV #%01100000,&$3C6
10892     MOV #10,&$3D6
10893     BIS.B #$20,&$204
10894     BIS.B #$20,&$20A
10895     BIS.B #7,&$245
10896     BIC.B #7,&$247
10897     BIS.B #$0F,&$224
10898     BIC.B #$0F,&$226
10899     BIS.B #4,&$20A
10900     BIC.B #4,&$20C
10901     MOV #RC5_INT,&$FFDE
10902     MOV #%0100010100,&$340
10903     MOV ##1638,&$352
10904     MOV #%10000,&$342
10905     MOV #WDT_INT,&$FFEA
10906
10907     MOV #SLEEP,R9
10908     MOV #BACKGROUND,2(R9)
10909
10910 LO2HI
10911
10912     $03E8 20_US
10913     $03 TOP_LCD
10914     $CD 20_US
10915     $03 TOP_LCD
10916     $5 20_US
10917     $03 TOP_LCD
10918     $2 20_US
10919     $02 TOP_LCD
10920     $2 20_US
10921     $28 LCD_WRF
10922     $08 LCD_WRF
10923     LCD_Clear
10924     $06 LCD_WRF
10925     $0C LCD_WRF
10926     LCD_Clear
10927     ['] LCD_HOME IS CR
10928     ['] LCD_WRC  IS EMIT
10929     CR ." I love you"   
10930     ['] CR >BODY IS CR
10931     ['] EMIT >BODY IS EMIT
10932     ." RC5toLCD is running. Type STOP to quit"
10933     LIT RECURSE IS WARM
10934     ABORT
10935 ;
10936
10937
10938 CODE STOP
10939     MOV #SLEEP,R9
10940     ADD #4,R9
10941     MOV R9,-2(R9)
10942
10943 COLON
10944     ['] WARM >BODY IS WARM
10945
10946     COLD
10947 ;
10948
10949
10950
10951             ; downloading RC5toLCD.4th is done
10952 RST_HERE    ; this app is protected against <reset>
10953
10954 [THEN]
10955
10956
10957
10958
10959
10960 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
10961
10962 [DEFINED] ASM [IF]
10963
10964 MARKER {RC5TOLCD}
10965
10966 [UNDEFINED] MAX [IF]
10967
10968 CODE MAX
10969     CMP @R15,R14
10970     S<  ?GOTO FW1
10971 BW1 ADD #2,R15
10972     MOV @R13+,R0
10973 ENDCODE
10974
10975
10976 CODE MIN
10977     CMP @R15,R14
10978     S<  ?GOTO BW1
10979 FW1 MOV @R15+,R14
10980     MOV @R13+,R0
10981 ENDCODE
10982
10983 [THEN]
10984
10985
10986 [UNDEFINED] U.R [IF]
10987 : U.R
10988   >R  <# 0 # #S #>  
10989   R> OVER - 0 MAX SPACES TYPE
10990 ;
10991 [THEN]
10992
10993
10994
10995 CODE 20_US
10996 BEGIN
10997     BEGIN
10998         BIT #1,&$3C0
10999     0<> UNTIL
11000     BIC #1,&$3C0
11001     SUB #1,R14
11002 U< UNTIL
11003 MOV @R15+,R14
11004 MOV @R13+,R0
11005 ENDCODE
11006
11007
11008 CODE TOP_LCD
11009     BIS.B #4,&$243
11010     BIT.B #1,&$241
11011 0= IF
11012     AND.B #$0F,R14
11013     MOV.B R14,&$222
11014     BIC.B #4,&$243
11015     MOV @R15+,R14
11016     MOV @R13+,R0
11017 THEN
11018     SUB #2,R15
11019     MOV R14,0(R15)
11020     BIC.B #4,&$243
11021     MOV.B &$220,R14
11022     AND.B #$0F,R14
11023     MOV @R13+,R0
11024 ENDCODE
11025
11026
11027 CODE LCD_W
11028     SUB #2,R15
11029     MOV R14,0(R15)
11030     RRUM #4,R14
11031     BIC.B #1,&$243
11032     BIS.B #$0F,&$224
11033 COLON
11034     TOP_LCD 2 20_US
11035     TOP_LCD 2 20_US 
11036 ;
11037
11038
11039 CODE LCD_WrC
11040     BIS.B #2,&$243
11041     JMP LCD_W 
11042 ENDCODE
11043
11044
11045 CODE LCD_WrF
11046     BIC.B #2,&$243
11047     JMP LCD_W 
11048 ENDCODE
11049
11050
11051 : LCD_Clear 
11052     $01 LCD_WrF 100 20_us
11053 ;
11054
11055
11056 : LCD_Home 
11057     $02 LCD_WrF 100 20_us 
11058 ;
11059
11060
11061 [UNDEFINED] OR [IF]
11062
11063 CODE OR
11064 BIS @R15+,R14
11065 MOV @R13+,R0
11066 ENDCODE
11067
11068
11069 [THEN]
11070
11071 : LCD_Entry_set     $04 OR LCD_WrF ;
11072
11073 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
11074
11075 : LCD_DSP_Shift     $10 OR LCD_WrF ;
11076
11077 : LCD_Fn_Set        $20 OR LCD_WrF ;
11078
11079 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
11080
11081 : LCD_Goto          $80 OR LCD_WrF ;
11082
11083 CODE LCD_R
11084     BIC.B #$0F,&$224
11085     BIS.B #1,&$243
11086 COLON
11087     TOP_LCD 2 20_us
11088     TOP_LCD 2 20_us
11089 HI2LO
11090     RLAM #4,0(R15)
11091     ADD.B @R15+,R14
11092     MOV @R1+,R13
11093     MOV @R13+,R0
11094 ENDCODE
11095
11096
11097 CODE LCD_RdS
11098     BIC.B #2,&$243
11099     JMP LCD_R
11100 ENDCODE
11101
11102
11103 CODE LCD_RdC
11104     BIS.B #2,&$243
11105     JMP LCD_R
11106 ENDCODE
11107
11108
11109
11110 ASM WDT_INT
11111 BIT.B #$20,&$240
11112 0= IF
11113     CMP #19,&$3D6
11114     U< IF
11115         ADD #1,&$3D6
11116     THEN
11117 ELSE
11118     BIT.B #$40,&$240
11119     0= IF
11120         CMP #3,&$3D6
11121         U>= IF
11122            SUB #1,&$3D6
11123         THEN
11124     THEN
11125 THEN
11126 BW1
11127 BW2
11128 BW3
11129 BIC #$78,0(R1)
11130 RETI
11131 ENDASM
11132
11133
11134 ASM RC5_INT
11135   MOV #1,&$3A0
11136 MOV #1778,R9
11137 MOV #14,R10
11138 BEGIN
11139 MOV #%1011100100,&$380
11140     RRUM    #1,R9
11141     MOV     R9,R8
11142     RRUM    #1,R8
11143     ADD     R9,R8
11144     BEGIN   CMP R8,&$390
11145     U>= UNTIL
11146     BIT.B   #4,&$200
11147     ADDC    R11,R11
11148     MOV.B   &$200,&$208
11149     BIC.B   #4,&$20C
11150     SUB     #1,R10
11151 0<> WHILE
11152     ADD R9,R8
11153     BEGIN
11154         MOV &$390,R9
11155         CMP R8,R9
11156         U>= IF
11157         BIC #$30,&$380
11158         GOTO BW1
11159         THEN
11160         BIT.B #4,&$20C
11161     0<> UNTIL
11162 REPEAT
11163 BIC #$30,&$380
11164 RLAM    #1,R11
11165 MOV.B   R11,R9
11166 RRUM    #2,R9
11167 BIT     #$4000,R11
11168 0= IF   BIS #$40,R9
11169 THEN
11170 RRUM    #3,R11
11171 XOR     @R1,R11
11172 BIT     #$400,R11
11173 0= ?GOTO BW2
11174 XOR #$400,0(R1)
11175 SUB #4,R15
11176 MOV &BASE,2(R15)
11177 MOV #$10,&BASE
11178 MOV R14,0(R15)
11179 MOV R9,R14
11180 LO2HI
11181     ['] LCD_CLEAR IS CR
11182     ['] LCD_WrC  IS EMIT
11183     CR ." $" 2 U.R
11184     ['] CR >BODY IS CR
11185     ['] EMIT >BODY IS EMIT
11186 HI2LO
11187 MOV R14,&BASE
11188 MOV @R15+,R14
11189 GOTO BW3
11190 ENDASM
11191
11192
11193 ASM BACKGROUND
11194 MOV #SLEEP,R9
11195 ADD #4,R9
11196 MOV R9,R0
11197 ENDASM
11198
11199
11200 CODE START
11201     MOV #%1011010100,&$3C0
11202     MOV #1,&$3E0
11203     MOV #19,&$3D2
11204     MOV #%01100000,&$3C6
11205     MOV #10,&$3D6
11206     BIS.B #$20,&$204
11207     BIS.B #$20,&$20A
11208     BIS.B #7,&$245
11209     BIC.B #7,&$247
11210     BIS.B #$0F,&$224
11211     BIC.B #$0F,&$226
11212     BIS.B #4,&$20A
11213     BIC.B #4,&$20C
11214     MOV #RC5_INT,&$FFDE
11215     MOV #%0100010100,&$340
11216     MOV ##1638,&$352
11217     MOV #%10000,&$342
11218     MOV #WDT_INT,&$FFEA
11219
11220     MOV #SLEEP,R9
11221     MOV #BACKGROUND,2(R9)
11222
11223 LO2HI
11224
11225     $03E8 20_US
11226     $03 TOP_LCD
11227     $CD 20_US
11228     $03 TOP_LCD
11229     $5 20_US
11230     $03 TOP_LCD
11231     $2 20_US
11232     $02 TOP_LCD
11233     $2 20_US
11234     $28 LCD_WRF
11235     $08 LCD_WRF
11236     LCD_Clear
11237     $06 LCD_WRF
11238     $0C LCD_WRF
11239     LCD_Clear
11240     ['] LCD_HOME IS CR
11241     ['] LCD_WRC  IS EMIT
11242     CR ." I love you"   
11243     ['] CR >BODY IS CR
11244     ['] EMIT >BODY IS EMIT
11245     ." RC5toLCD is running. Type STOP to quit"
11246     LIT RECURSE IS WARM
11247     ABORT
11248 ;
11249
11250
11251 CODE STOP
11252     MOV #SLEEP,R9
11253     ADD #4,R9
11254     MOV R9,-2(R9)
11255
11256 COLON
11257     ['] WARM >BODY IS WARM
11258
11259     COLD
11260 ;
11261
11262
11263
11264             ; downloading RC5toLCD.4th is done
11265 RST_HERE    ; this app is protected against <reset>
11266
11267 [THEN]
11268
11269
11270
11271
11272
11273 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
11274
11275 [DEFINED] ASM [IF]
11276
11277 MARKER {RC5TOLCD}
11278
11279 [UNDEFINED] MAX [IF]
11280
11281 CODE MAX
11282     CMP @R15,R14
11283     S<  ?GOTO FW1
11284 BW1 ADD #2,R15
11285     MOV @R13+,R0
11286 ENDCODE
11287
11288
11289 CODE MIN
11290     CMP @R15,R14
11291     S<  ?GOTO BW1
11292 FW1 MOV @R15+,R14
11293     MOV @R13+,R0
11294 ENDCODE
11295
11296 [THEN]
11297
11298
11299 [UNDEFINED] U.R [IF]
11300 : U.R
11301   >R  <# 0 # #S #>  
11302   R> OVER - 0 MAX SPACES TYPE
11303 ;
11304 [THEN]
11305
11306
11307
11308 CODE 20_US
11309 BEGIN
11310     BEGIN
11311         BIT #1,&$3C0
11312     0<> UNTIL
11313     BIC #1,&$3C0
11314     SUB #1,R14
11315 U< UNTIL
11316 MOV @R15+,R14
11317 MOV @R13+,R0
11318 ENDCODE
11319
11320
11321 CODE TOP_LCD
11322     BIS.B #4,&$243
11323     BIT.B #1,&$241
11324 0= IF
11325     AND.B #$0F,R14
11326     MOV.B R14,&$222
11327     BIC.B #4,&$243
11328     MOV @R15+,R14
11329     MOV @R13+,R0
11330 THEN
11331     SUB #2,R15
11332     MOV R14,0(R15)
11333     BIC.B #4,&$243
11334     MOV.B &$220,R14
11335     AND.B #$0F,R14
11336     MOV @R13+,R0
11337 ENDCODE
11338
11339
11340 CODE LCD_W
11341     SUB #2,R15
11342     MOV R14,0(R15)
11343     RRUM #4,R14
11344     BIC.B #1,&$243
11345     BIS.B #$0F,&$224
11346 COLON
11347     TOP_LCD 2 20_US
11348     TOP_LCD 2 20_US 
11349 ;
11350
11351
11352 CODE LCD_WrC
11353     BIS.B #2,&$243
11354     JMP LCD_W 
11355 ENDCODE
11356
11357
11358 CODE LCD_WrF
11359     BIC.B #2,&$243
11360     JMP LCD_W 
11361 ENDCODE
11362
11363
11364 : LCD_Clear 
11365     $01 LCD_WrF 100 20_us
11366 ;
11367
11368
11369 : LCD_Home 
11370     $02 LCD_WrF 100 20_us 
11371 ;
11372
11373
11374 [UNDEFINED] OR [IF]
11375
11376 CODE OR
11377 BIS @R15+,R14
11378 MOV @R13+,R0
11379 ENDCODE
11380
11381
11382 [THEN]
11383
11384 : LCD_Entry_set     $04 OR LCD_WrF ;
11385
11386 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
11387
11388 : LCD_DSP_Shift     $10 OR LCD_WrF ;
11389
11390 : LCD_Fn_Set        $20 OR LCD_WrF ;
11391
11392 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
11393
11394 : LCD_Goto          $80 OR LCD_WrF ;
11395
11396 CODE LCD_R
11397     BIC.B #$0F,&$224
11398     BIS.B #1,&$243
11399 COLON
11400     TOP_LCD 2 20_us
11401     TOP_LCD 2 20_us
11402 HI2LO
11403     RLAM #4,0(R15)
11404     ADD.B @R15+,R14
11405     MOV @R1+,R13
11406     MOV @R13+,R0
11407 ENDCODE
11408
11409
11410 CODE LCD_RdS
11411     BIC.B #2,&$243
11412     JMP LCD_R
11413 ENDCODE
11414
11415
11416 CODE LCD_RdC
11417     BIS.B #2,&$243
11418     JMP LCD_R
11419 ENDCODE
11420
11421
11422
11423 ASM WDT_INT
11424 BIT.B #$20,&$240
11425 0= IF
11426     CMP #19,&$3D6
11427     U< IF
11428         ADD #1,&$3D6
11429     THEN
11430 ELSE
11431     BIT.B #$40,&$240
11432     0= IF
11433         CMP #3,&$3D6
11434         U>= IF
11435            SUB #1,&$3D6
11436         THEN
11437     THEN
11438 THEN
11439 BW1
11440 BW2
11441 BW3
11442 BIC #$78,0(R1)
11443 RETI
11444 ENDASM
11445
11446
11447 ASM RC5_INT
11448   MOV #1,&$3A0
11449 MOV #1778,R9
11450 MOV #14,R10
11451 BEGIN
11452 MOV #%1011100100,&$380
11453     RRUM    #1,R9
11454     MOV     R9,R8
11455     RRUM    #1,R8
11456     ADD     R9,R8
11457     BEGIN   CMP R8,&$390
11458     U>= UNTIL
11459     BIT.B   #4,&$200
11460     ADDC    R11,R11
11461     MOV.B   &$200,&$208
11462     BIC.B   #4,&$20C
11463     SUB     #1,R10
11464 0<> WHILE
11465     ADD R9,R8
11466     BEGIN
11467         MOV &$390,R9
11468         CMP R8,R9
11469         U>= IF
11470         BIC #$30,&$380
11471         GOTO BW1
11472         THEN
11473         BIT.B #4,&$20C
11474     0<> UNTIL
11475 REPEAT
11476 BIC #$30,&$380
11477 RLAM    #1,R11
11478 MOV.B   R11,R9
11479 RRUM    #2,R9
11480 BIT     #$4000,R11
11481 0= IF   BIS #$40,R9
11482 THEN
11483 RRUM    #3,R11
11484 XOR     @R1,R11
11485 BIT     #$400,R11
11486 0= ?GOTO BW2
11487 XOR #$400,0(R1)
11488 SUB #4,R15
11489 MOV &BASE,2(R15)
11490 MOV #$10,&BASE
11491 MOV R14,0(R15)
11492 MOV R9,R14
11493 LO2HI
11494     ['] LCD_CLEAR IS CR
11495     ['] LCD_WrC  IS EMIT
11496     CR ." $" 2 U.R
11497     ['] CR >BODY IS CR
11498     ['] EMIT >BODY IS EMIT
11499 HI2LO
11500 MOV R14,&BASE
11501 MOV @R15+,R14
11502 GOTO BW3
11503 ENDASM
11504
11505
11506 ASM BACKGROUND
11507 MOV #SLEEP,R9
11508 ADD #4,R9
11509 MOV R9,R0
11510 ENDASM
11511
11512
11513 CODE START
11514     MOV #%1011010100,&$3C0
11515     MOV #1,&$3E0
11516     MOV #19,&$3D2
11517     MOV #%01100000,&$3C6
11518     MOV #10,&$3D6
11519     BIS.B #$20,&$204
11520     BIS.B #$20,&$20A
11521     BIS.B #7,&$245
11522     BIC.B #7,&$247
11523     BIS.B #$0F,&$224
11524     BIC.B #$0F,&$226
11525     BIS.B #4,&$20A
11526     BIC.B #4,&$20C
11527     MOV #RC5_INT,&$FFDE
11528     MOV #%0100010100,&$340
11529     MOV ##1638,&$352
11530     MOV #%10000,&$342
11531     MOV #WDT_INT,&$FFEA
11532
11533     MOV #SLEEP,R9
11534     MOV #BACKGROUND,2(R9)
11535
11536 LO2HI
11537
11538     $03E8 20_US
11539     $03 TOP_LCD
11540     $CD 20_US
11541     $03 TOP_LCD
11542     $5 20_US
11543     $03 TOP_LCD
11544     $2 20_US
11545     $02 TOP_LCD
11546     $2 20_US
11547     $28 LCD_WRF
11548     $08 LCD_WRF
11549     LCD_Clear
11550     $06 LCD_WRF
11551     $0C LCD_WRF
11552     LCD_Clear
11553     ['] LCD_HOME IS CR
11554     ['] LCD_WRC  IS EMIT
11555     CR ." I love you"   
11556     ['] CR >BODY IS CR
11557     ['] EMIT >BODY IS EMIT
11558     ." RC5toLCD is running. Type STOP to quit"
11559     LIT RECURSE IS WARM
11560     ABORT
11561 ;
11562
11563
11564 CODE STOP
11565     MOV #SLEEP,R9
11566     ADD #4,R9
11567     MOV R9,-2(R9)
11568
11569 COLON
11570     ['] WARM >BODY IS WARM
11571
11572     COLD
11573 ;
11574
11575
11576
11577             ; downloading RC5toLCD.4th is done
11578 RST_HERE    ; this app is protected against <reset>
11579
11580 [THEN]
11581
11582
11583
11584
11585
11586 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
11587
11588 [DEFINED] ASM [IF]
11589
11590 MARKER {RC5TOLCD}
11591
11592 [UNDEFINED] MAX [IF]
11593
11594 CODE MAX
11595     CMP @R15,R14
11596     S<  ?GOTO FW1
11597 BW1 ADD #2,R15
11598     MOV @R13+,R0
11599 ENDCODE
11600
11601
11602 CODE MIN
11603     CMP @R15,R14
11604     S<  ?GOTO BW1
11605 FW1 MOV @R15+,R14
11606     MOV @R13+,R0
11607 ENDCODE
11608
11609 [THEN]
11610
11611
11612 [UNDEFINED] U.R [IF]
11613 : U.R
11614   >R  <# 0 # #S #>  
11615   R> OVER - 0 MAX SPACES TYPE
11616 ;
11617 [THEN]
11618
11619
11620
11621 CODE 20_US
11622 BEGIN
11623     BEGIN
11624         BIT #1,&$3C0
11625     0<> UNTIL
11626     BIC #1,&$3C0
11627     SUB #1,R14
11628 U< UNTIL
11629 MOV @R15+,R14
11630 MOV @R13+,R0
11631 ENDCODE
11632
11633
11634 CODE TOP_LCD
11635     BIS.B #4,&$243
11636     BIT.B #1,&$241
11637 0= IF
11638     AND.B #$0F,R14
11639     MOV.B R14,&$222
11640     BIC.B #4,&$243
11641     MOV @R15+,R14
11642     MOV @R13+,R0
11643 THEN
11644     SUB #2,R15
11645     MOV R14,0(R15)
11646     BIC.B #4,&$243
11647     MOV.B &$220,R14
11648     AND.B #$0F,R14
11649     MOV @R13+,R0
11650 ENDCODE
11651
11652
11653 CODE LCD_W
11654     SUB #2,R15
11655     MOV R14,0(R15)
11656     RRUM #4,R14
11657     BIC.B #1,&$243
11658     BIS.B #$0F,&$224
11659 COLON
11660     TOP_LCD 2 20_US
11661     TOP_LCD 2 20_US 
11662 ;
11663
11664
11665 CODE LCD_WrC
11666     BIS.B #2,&$243
11667     JMP LCD_W 
11668 ENDCODE
11669
11670
11671 CODE LCD_WrF
11672     BIC.B #2,&$243
11673     JMP LCD_W 
11674 ENDCODE
11675
11676
11677 : LCD_Clear 
11678     $01 LCD_WrF 100 20_us
11679 ;
11680
11681
11682 : LCD_Home 
11683     $02 LCD_WrF 100 20_us 
11684 ;
11685
11686
11687 [UNDEFINED] OR [IF]
11688
11689 CODE OR
11690 BIS @R15+,R14
11691 MOV @R13+,R0
11692 ENDCODE
11693
11694
11695 [THEN]
11696
11697 : LCD_Entry_set     $04 OR LCD_WrF ;
11698
11699 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
11700
11701 : LCD_DSP_Shift     $10 OR LCD_WrF ;
11702
11703 : LCD_Fn_Set        $20 OR LCD_WrF ;
11704
11705 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
11706
11707 : LCD_Goto          $80 OR LCD_WrF ;
11708
11709 CODE LCD_R
11710     BIC.B #$0F,&$224
11711     BIS.B #1,&$243
11712 COLON
11713     TOP_LCD 2 20_us
11714     TOP_LCD 2 20_us
11715 HI2LO
11716     RLAM #4,0(R15)
11717     ADD.B @R15+,R14
11718     MOV @R1+,R13
11719     MOV @R13+,R0
11720 ENDCODE
11721
11722
11723 CODE LCD_RdS
11724     BIC.B #2,&$243
11725     JMP LCD_R
11726 ENDCODE
11727
11728
11729 CODE LCD_RdC
11730     BIS.B #2,&$243
11731     JMP LCD_R
11732 ENDCODE
11733
11734
11735
11736 ASM WDT_INT
11737 BIT.B #$20,&$240
11738 0= IF
11739     CMP #19,&$3D6
11740     U< IF
11741         ADD #1,&$3D6
11742     THEN
11743 ELSE
11744     BIT.B #$40,&$240
11745     0= IF
11746         CMP #3,&$3D6
11747         U>= IF
11748            SUB #1,&$3D6
11749         THEN
11750     THEN
11751 THEN
11752 BW1
11753 BW2
11754 BW3
11755 BIC #$78,0(R1)
11756 RETI
11757 ENDASM
11758
11759
11760 ASM RC5_INT
11761   MOV #1,&$3A0
11762 MOV #1778,R9
11763 MOV #14,R10
11764 BEGIN
11765 MOV #%1011100100,&$380
11766     RRUM    #1,R9
11767     MOV     R9,R8
11768     RRUM    #1,R8
11769     ADD     R9,R8
11770     BEGIN   CMP R8,&$390
11771     U>= UNTIL
11772     BIT.B   #4,&$200
11773     ADDC    R11,R11
11774     MOV.B   &$200,&$208
11775     BIC.B   #4,&$20C
11776     SUB     #1,R10
11777 0<> WHILE
11778     ADD R9,R8
11779     BEGIN
11780         MOV &$390,R9
11781         CMP R8,R9
11782         U>= IF
11783         BIC #$30,&$380
11784         GOTO BW1
11785         THEN
11786         BIT.B #4,&$20C
11787     0<> UNTIL
11788 REPEAT
11789 BIC #$30,&$380
11790 RLAM    #1,R11
11791 MOV.B   R11,R9
11792 RRUM    #2,R9
11793 BIT     #$4000,R11
11794 0= IF   BIS #$40,R9
11795 THEN
11796 RRUM    #3,R11
11797 XOR     @R1,R11
11798 BIT     #$400,R11
11799 0= ?GOTO BW2
11800 XOR #$400,0(R1)
11801 SUB #4,R15
11802 MOV &BASE,2(R15)
11803 MOV #$10,&BASE
11804 MOV R14,0(R15)
11805 MOV R9,R14
11806 LO2HI
11807     ['] LCD_CLEAR IS CR
11808     ['] LCD_WrC  IS EMIT
11809     CR ." $" 2 U.R
11810     ['] CR >BODY IS CR
11811     ['] EMIT >BODY IS EMIT
11812 HI2LO
11813 MOV R14,&BASE
11814 MOV @R15+,R14
11815 GOTO BW3
11816 ENDASM
11817
11818
11819 ASM BACKGROUND
11820 MOV #SLEEP,R9
11821 ADD #4,R9
11822 MOV R9,R0
11823 ENDASM
11824
11825
11826 CODE START
11827     MOV #%1011010100,&$3C0
11828     MOV #1,&$3E0
11829     MOV #19,&$3D2
11830     MOV #%01100000,&$3C6
11831     MOV #10,&$3D6
11832     BIS.B #$20,&$204
11833     BIS.B #$20,&$20A
11834     BIS.B #7,&$245
11835     BIC.B #7,&$247
11836     BIS.B #$0F,&$224
11837     BIC.B #$0F,&$226
11838     BIS.B #4,&$20A
11839     BIC.B #4,&$20C
11840     MOV #RC5_INT,&$FFDE
11841     MOV #%0100010100,&$340
11842     MOV ##1638,&$352
11843     MOV #%10000,&$342
11844     MOV #WDT_INT,&$FFEA
11845
11846     MOV #SLEEP,R9
11847     MOV #BACKGROUND,2(R9)
11848
11849 LO2HI
11850
11851     $03E8 20_US
11852     $03 TOP_LCD
11853     $CD 20_US
11854     $03 TOP_LCD
11855     $5 20_US
11856     $03 TOP_LCD
11857     $2 20_US
11858     $02 TOP_LCD
11859     $2 20_US
11860     $28 LCD_WRF
11861     $08 LCD_WRF
11862     LCD_Clear
11863     $06 LCD_WRF
11864     $0C LCD_WRF
11865     LCD_Clear
11866     ['] LCD_HOME IS CR
11867     ['] LCD_WRC  IS EMIT
11868     CR ." I love you"   
11869     ['] CR >BODY IS CR
11870     ['] EMIT >BODY IS EMIT
11871     ." RC5toLCD is running. Type STOP to quit"
11872     LIT RECURSE IS WARM
11873     ABORT
11874 ;
11875
11876
11877 CODE STOP
11878     MOV #SLEEP,R9
11879     ADD #4,R9
11880     MOV R9,-2(R9)
11881
11882 COLON
11883     ['] WARM >BODY IS WARM
11884
11885     COLD
11886 ;
11887
11888
11889
11890             ; downloading RC5toLCD.4th is done
11891 RST_HERE    ; this app is protected against <reset>
11892
11893 [THEN]
11894
11895
11896
11897
11898
11899 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
11900
11901 [DEFINED] ASM [IF]
11902
11903 MARKER {RC5TOLCD}
11904
11905 [UNDEFINED] MAX [IF]
11906
11907 CODE MAX
11908     CMP @R15,R14
11909     S<  ?GOTO FW1
11910 BW1 ADD #2,R15
11911     MOV @R13+,R0
11912 ENDCODE
11913
11914
11915 CODE MIN
11916     CMP @R15,R14
11917     S<  ?GOTO BW1
11918 FW1 MOV @R15+,R14
11919     MOV @R13+,R0
11920 ENDCODE
11921
11922 [THEN]
11923
11924
11925 [UNDEFINED] U.R [IF]
11926 : U.R
11927   >R  <# 0 # #S #>  
11928   R> OVER - 0 MAX SPACES TYPE
11929 ;
11930 [THEN]
11931
11932
11933
11934 CODE 20_US
11935 BEGIN
11936     BEGIN
11937         BIT #1,&$3C0
11938     0<> UNTIL
11939     BIC #1,&$3C0
11940     SUB #1,R14
11941 U< UNTIL
11942 MOV @R15+,R14
11943 MOV @R13+,R0
11944 ENDCODE
11945
11946
11947 CODE TOP_LCD
11948     BIS.B #4,&$243
11949     BIT.B #1,&$241
11950 0= IF
11951     AND.B #$0F,R14
11952     MOV.B R14,&$222
11953     BIC.B #4,&$243
11954     MOV @R15+,R14
11955     MOV @R13+,R0
11956 THEN
11957     SUB #2,R15
11958     MOV R14,0(R15)
11959     BIC.B #4,&$243
11960     MOV.B &$220,R14
11961     AND.B #$0F,R14
11962     MOV @R13+,R0
11963 ENDCODE
11964
11965
11966 CODE LCD_W
11967     SUB #2,R15
11968     MOV R14,0(R15)
11969     RRUM #4,R14
11970     BIC.B #1,&$243
11971     BIS.B #$0F,&$224
11972 COLON
11973     TOP_LCD 2 20_US
11974     TOP_LCD 2 20_US 
11975 ;
11976
11977
11978 CODE LCD_WrC
11979     BIS.B #2,&$243
11980     JMP LCD_W 
11981 ENDCODE
11982
11983
11984 CODE LCD_WrF
11985     BIC.B #2,&$243
11986     JMP LCD_W 
11987 ENDCODE
11988
11989
11990 : LCD_Clear 
11991     $01 LCD_WrF 100 20_us
11992 ;
11993
11994
11995 : LCD_Home 
11996     $02 LCD_WrF 100 20_us 
11997 ;
11998
11999
12000 [UNDEFINED] OR [IF]
12001
12002 CODE OR
12003 BIS @R15+,R14
12004 MOV @R13+,R0
12005 ENDCODE
12006
12007
12008 [THEN]
12009
12010 : LCD_Entry_set     $04 OR LCD_WrF ;
12011
12012 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
12013
12014 : LCD_DSP_Shift     $10 OR LCD_WrF ;
12015
12016 : LCD_Fn_Set        $20 OR LCD_WrF ;
12017
12018 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
12019
12020 : LCD_Goto          $80 OR LCD_WrF ;
12021
12022 CODE LCD_R
12023     BIC.B #$0F,&$224
12024     BIS.B #1,&$243
12025 COLON
12026     TOP_LCD 2 20_us
12027     TOP_LCD 2 20_us
12028 HI2LO
12029     RLAM #4,0(R15)
12030     ADD.B @R15+,R14
12031     MOV @R1+,R13
12032     MOV @R13+,R0
12033 ENDCODE
12034
12035
12036 CODE LCD_RdS
12037     BIC.B #2,&$243
12038     JMP LCD_R
12039 ENDCODE
12040
12041
12042 CODE LCD_RdC
12043     BIS.B #2,&$243
12044     JMP LCD_R
12045 ENDCODE
12046
12047
12048
12049 ASM WDT_INT
12050 BIT.B #$20,&$240
12051 0= IF
12052     CMP #19,&$3D6
12053     U< IF
12054         ADD #1,&$3D6
12055     THEN
12056 ELSE
12057     BIT.B #$40,&$240
12058     0= IF
12059         CMP #3,&$3D6
12060         U>= IF
12061            SUB #1,&$3D6
12062         THEN
12063     THEN
12064 THEN
12065 BW1
12066 BW2
12067 BW3
12068 BIC #$78,0(R1)
12069 RETI
12070 ENDASM
12071
12072
12073 ASM RC5_INT
12074   MOV #1,&$3A0
12075 MOV #1778,R9
12076 MOV #14,R10
12077 BEGIN
12078 MOV #%1011100100,&$380
12079     RRUM    #1,R9
12080     MOV     R9,R8
12081     RRUM    #1,R8
12082     ADD     R9,R8
12083     BEGIN   CMP R8,&$390
12084     U>= UNTIL
12085     BIT.B   #4,&$200
12086     ADDC    R11,R11
12087     MOV.B   &$200,&$208
12088     BIC.B   #4,&$20C
12089     SUB     #1,R10
12090 0<> WHILE
12091     ADD R9,R8
12092     BEGIN
12093         MOV &$390,R9
12094         CMP R8,R9
12095         U>= IF
12096         BIC #$30,&$380
12097         GOTO BW1
12098         THEN
12099         BIT.B #4,&$20C
12100     0<> UNTIL
12101 REPEAT
12102 BIC #$30,&$380
12103 RLAM    #1,R11
12104 MOV.B   R11,R9
12105 RRUM    #2,R9
12106 BIT     #$4000,R11
12107 0= IF   BIS #$40,R9
12108 THEN
12109 RRUM    #3,R11
12110 XOR     @R1,R11
12111 BIT     #$400,R11
12112 0= ?GOTO BW2
12113 XOR #$400,0(R1)
12114 SUB #4,R15
12115 MOV &BASE,2(R15)
12116 MOV #$10,&BASE
12117 MOV R14,0(R15)
12118 MOV R9,R14
12119 LO2HI
12120     ['] LCD_CLEAR IS CR
12121     ['] LCD_WrC  IS EMIT
12122     CR ." $" 2 U.R
12123     ['] CR >BODY IS CR
12124     ['] EMIT >BODY IS EMIT
12125 HI2LO
12126 MOV R14,&BASE
12127 MOV @R15+,R14
12128 GOTO BW3
12129 ENDASM
12130
12131
12132 ASM BACKGROUND
12133 MOV #SLEEP,R9
12134 ADD #4,R9
12135 MOV R9,R0
12136 ENDASM
12137
12138
12139 CODE START
12140     MOV #%1011010100,&$3C0
12141     MOV #1,&$3E0
12142     MOV #19,&$3D2
12143     MOV #%01100000,&$3C6
12144     MOV #10,&$3D6
12145     BIS.B #$20,&$204
12146     BIS.B #$20,&$20A
12147     BIS.B #7,&$245
12148     BIC.B #7,&$247
12149     BIS.B #$0F,&$224
12150     BIC.B #$0F,&$226
12151     BIS.B #4,&$20A
12152     BIC.B #4,&$20C
12153     MOV #RC5_INT,&$FFDE
12154     MOV #%0100010100,&$340
12155     MOV ##1638,&$352
12156     MOV #%10000,&$342
12157     MOV #WDT_INT,&$FFEA
12158
12159     MOV #SLEEP,R9
12160     MOV #BACKGROUND,2(R9)
12161
12162 LO2HI
12163
12164     $03E8 20_US
12165     $03 TOP_LCD
12166     $CD 20_US
12167     $03 TOP_LCD
12168     $5 20_US
12169     $03 TOP_LCD
12170     $2 20_US
12171     $02 TOP_LCD
12172     $2 20_US
12173     $28 LCD_WRF
12174     $08 LCD_WRF
12175     LCD_Clear
12176     $06 LCD_WRF
12177     $0C LCD_WRF
12178     LCD_Clear
12179     ['] LCD_HOME IS CR
12180     ['] LCD_WRC  IS EMIT
12181     CR ." I love you"   
12182     ['] CR >BODY IS CR
12183     ['] EMIT >BODY IS EMIT
12184     ." RC5toLCD is running. Type STOP to quit"
12185     LIT RECURSE IS WARM
12186     ABORT
12187 ;
12188
12189
12190 CODE STOP
12191     MOV #SLEEP,R9
12192     ADD #4,R9
12193     MOV R9,-2(R9)
12194
12195 COLON
12196     ['] WARM >BODY IS WARM
12197
12198     COLD
12199 ;
12200
12201
12202
12203             ; downloading RC5toLCD.4th is done
12204 RST_HERE    ; this app is protected against <reset>
12205
12206 [THEN]
12207
12208
12209
12210
12211
12212 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
12213
12214 [DEFINED] ASM [IF]
12215
12216 MARKER {RC5TOLCD}
12217
12218 [UNDEFINED] MAX [IF]
12219
12220 CODE MAX
12221     CMP @R15,R14
12222     S<  ?GOTO FW1
12223 BW1 ADD #2,R15
12224     MOV @R13+,R0
12225 ENDCODE
12226
12227
12228 CODE MIN
12229     CMP @R15,R14
12230     S<  ?GOTO BW1
12231 FW1 MOV @R15+,R14
12232     MOV @R13+,R0
12233 ENDCODE
12234
12235 [THEN]
12236
12237
12238 [UNDEFINED] U.R [IF]
12239 : U.R
12240   >R  <# 0 # #S #>  
12241   R> OVER - 0 MAX SPACES TYPE
12242 ;
12243 [THEN]
12244
12245
12246
12247 CODE 20_US
12248 BEGIN
12249     BEGIN
12250         BIT #1,&$3C0
12251     0<> UNTIL
12252     BIC #1,&$3C0
12253     SUB #1,R14
12254 U< UNTIL
12255 MOV @R15+,R14
12256 MOV @R13+,R0
12257 ENDCODE
12258
12259
12260 CODE TOP_LCD
12261     BIS.B #4,&$243
12262     BIT.B #1,&$241
12263 0= IF
12264     AND.B #$0F,R14
12265     MOV.B R14,&$222
12266     BIC.B #4,&$243
12267     MOV @R15+,R14
12268     MOV @R13+,R0
12269 THEN
12270     SUB #2,R15
12271     MOV R14,0(R15)
12272     BIC.B #4,&$243
12273     MOV.B &$220,R14
12274     AND.B #$0F,R14
12275     MOV @R13+,R0
12276 ENDCODE
12277
12278
12279 CODE LCD_W
12280     SUB #2,R15
12281     MOV R14,0(R15)
12282     RRUM #4,R14
12283     BIC.B #1,&$243
12284     BIS.B #$0F,&$224
12285 COLON
12286     TOP_LCD 2 20_US
12287     TOP_LCD 2 20_US 
12288 ;
12289
12290
12291 CODE LCD_WrC
12292     BIS.B #2,&$243
12293     JMP LCD_W 
12294 ENDCODE
12295
12296
12297 CODE LCD_WrF
12298     BIC.B #2,&$243
12299     JMP LCD_W 
12300 ENDCODE
12301
12302
12303 : LCD_Clear 
12304     $01 LCD_WrF 100 20_us
12305 ;
12306
12307
12308 : LCD_Home 
12309     $02 LCD_WrF 100 20_us 
12310 ;
12311
12312
12313 [UNDEFINED] OR [IF]
12314
12315 CODE OR
12316 BIS @R15+,R14
12317 MOV @R13+,R0
12318 ENDCODE
12319
12320
12321 [THEN]
12322
12323 : LCD_Entry_set     $04 OR LCD_WrF ;
12324
12325 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
12326
12327 : LCD_DSP_Shift     $10 OR LCD_WrF ;
12328
12329 : LCD_Fn_Set        $20 OR LCD_WrF ;
12330
12331 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
12332
12333 : LCD_Goto          $80 OR LCD_WrF ;
12334
12335 CODE LCD_R
12336     BIC.B #$0F,&$224
12337     BIS.B #1,&$243
12338 COLON
12339     TOP_LCD 2 20_us
12340     TOP_LCD 2 20_us
12341 HI2LO
12342     RLAM #4,0(R15)
12343     ADD.B @R15+,R14
12344     MOV @R1+,R13
12345     MOV @R13+,R0
12346 ENDCODE
12347
12348
12349 CODE LCD_RdS
12350     BIC.B #2,&$243
12351     JMP LCD_R
12352 ENDCODE
12353
12354
12355 CODE LCD_RdC
12356     BIS.B #2,&$243
12357     JMP LCD_R
12358 ENDCODE
12359
12360
12361
12362 ASM WDT_INT
12363 BIT.B #$20,&$240
12364 0= IF
12365     CMP #19,&$3D6
12366     U< IF
12367         ADD #1,&$3D6
12368     THEN
12369 ELSE
12370     BIT.B #$40,&$240
12371     0= IF
12372         CMP #3,&$3D6
12373         U>= IF
12374            SUB #1,&$3D6
12375         THEN
12376     THEN
12377 THEN
12378 BW1
12379 BW2
12380 BW3
12381 BIC #$78,0(R1)
12382 RETI
12383 ENDASM
12384
12385
12386 ASM RC5_INT
12387   MOV #1,&$3A0
12388 MOV #1778,R9
12389 MOV #14,R10
12390 BEGIN
12391 MOV #%1011100100,&$380
12392     RRUM    #1,R9
12393     MOV     R9,R8
12394     RRUM    #1,R8
12395     ADD     R9,R8
12396     BEGIN   CMP R8,&$390
12397     U>= UNTIL
12398     BIT.B   #4,&$200
12399     ADDC    R11,R11
12400     MOV.B   &$200,&$208
12401     BIC.B   #4,&$20C
12402     SUB     #1,R10
12403 0<> WHILE
12404     ADD R9,R8
12405     BEGIN
12406         MOV &$390,R9
12407         CMP R8,R9
12408         U>= IF
12409         BIC #$30,&$380
12410         GOTO BW1
12411         THEN
12412         BIT.B #4,&$20C
12413     0<> UNTIL
12414 REPEAT
12415 BIC #$30,&$380
12416 RLAM    #1,R11
12417 MOV.B   R11,R9
12418 RRUM    #2,R9
12419 BIT     #$4000,R11
12420 0= IF   BIS #$40,R9
12421 THEN
12422 RRUM    #3,R11
12423 XOR     @R1,R11
12424 BIT     #$400,R11
12425 0= ?GOTO BW2
12426 XOR #$400,0(R1)
12427 SUB #4,R15
12428 MOV &BASE,2(R15)
12429 MOV #$10,&BASE
12430 MOV R14,0(R15)
12431 MOV R9,R14
12432 LO2HI
12433     ['] LCD_CLEAR IS CR
12434     ['] LCD_WrC  IS EMIT
12435     CR ." $" 2 U.R
12436     ['] CR >BODY IS CR
12437     ['] EMIT >BODY IS EMIT
12438 HI2LO
12439 MOV R14,&BASE
12440 MOV @R15+,R14
12441 GOTO BW3
12442 ENDASM
12443
12444
12445 ASM BACKGROUND
12446 MOV #SLEEP,R9
12447 ADD #4,R9
12448 MOV R9,R0
12449 ENDASM
12450
12451
12452 CODE START
12453     MOV #%1011010100,&$3C0
12454     MOV #1,&$3E0
12455     MOV #19,&$3D2
12456     MOV #%01100000,&$3C6
12457     MOV #10,&$3D6
12458     BIS.B #$20,&$204
12459     BIS.B #$20,&$20A
12460     BIS.B #7,&$245
12461     BIC.B #7,&$247
12462     BIS.B #$0F,&$224
12463     BIC.B #$0F,&$226
12464     BIS.B #4,&$20A
12465     BIC.B #4,&$20C
12466     MOV #RC5_INT,&$FFDE
12467     MOV #%0100010100,&$340
12468     MOV ##1638,&$352
12469     MOV #%10000,&$342
12470     MOV #WDT_INT,&$FFEA
12471
12472     MOV #SLEEP,R9
12473     MOV #BACKGROUND,2(R9)
12474
12475 LO2HI
12476
12477     $03E8 20_US
12478     $03 TOP_LCD
12479     $CD 20_US
12480     $03 TOP_LCD
12481     $5 20_US
12482     $03 TOP_LCD
12483     $2 20_US
12484     $02 TOP_LCD
12485     $2 20_US
12486     $28 LCD_WRF
12487     $08 LCD_WRF
12488     LCD_Clear
12489     $06 LCD_WRF
12490     $0C LCD_WRF
12491     LCD_Clear
12492     ['] LCD_HOME IS CR
12493     ['] LCD_WRC  IS EMIT
12494     CR ." I love you"   
12495     ['] CR >BODY IS CR
12496     ['] EMIT >BODY IS EMIT
12497     ." RC5toLCD is running. Type STOP to quit"
12498     LIT RECURSE IS WARM
12499     ABORT
12500 ;
12501
12502
12503 CODE STOP
12504     MOV #SLEEP,R9
12505     ADD #4,R9
12506     MOV R9,-2(R9)
12507
12508 COLON
12509     ['] WARM >BODY IS WARM
12510
12511     COLD
12512 ;
12513
12514
12515
12516             ; downloading RC5toLCD.4th is done
12517 RST_HERE    ; this app is protected against <reset>
12518
12519 [THEN]
12520
12521
12522
12523
12524
12525 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
12526
12527 [DEFINED] ASM [IF]
12528
12529 MARKER {RC5TOLCD}
12530
12531 [UNDEFINED] MAX [IF]
12532
12533 CODE MAX
12534     CMP @R15,R14
12535     S<  ?GOTO FW1
12536 BW1 ADD #2,R15
12537     MOV @R13+,R0
12538 ENDCODE
12539
12540
12541 CODE MIN
12542     CMP @R15,R14
12543     S<  ?GOTO BW1
12544 FW1 MOV @R15+,R14
12545     MOV @R13+,R0
12546 ENDCODE
12547
12548 [THEN]
12549
12550
12551 [UNDEFINED] U.R [IF]
12552 : U.R
12553   >R  <# 0 # #S #>  
12554   R> OVER - 0 MAX SPACES TYPE
12555 ;
12556 [THEN]
12557
12558
12559
12560 CODE 20_US
12561 BEGIN
12562     BEGIN
12563         BIT #1,&$3C0
12564     0<> UNTIL
12565     BIC #1,&$3C0
12566     SUB #1,R14
12567 U< UNTIL
12568 MOV @R15+,R14
12569 MOV @R13+,R0
12570 ENDCODE
12571
12572
12573 CODE TOP_LCD
12574     BIS.B #4,&$243
12575     BIT.B #1,&$241
12576 0= IF
12577     AND.B #$0F,R14
12578     MOV.B R14,&$222
12579     BIC.B #4,&$243
12580     MOV @R15+,R14
12581     MOV @R13+,R0
12582 THEN
12583     SUB #2,R15
12584     MOV R14,0(R15)
12585     BIC.B #4,&$243
12586     MOV.B &$220,R14
12587     AND.B #$0F,R14
12588     MOV @R13+,R0
12589 ENDCODE
12590
12591
12592 CODE LCD_W
12593     SUB #2,R15
12594     MOV R14,0(R15)
12595     RRUM #4,R14
12596     BIC.B #1,&$243
12597     BIS.B #$0F,&$224
12598 COLON
12599     TOP_LCD 2 20_US
12600     TOP_LCD 2 20_US 
12601 ;
12602
12603
12604 CODE LCD_WrC
12605     BIS.B #2,&$243
12606     JMP LCD_W 
12607 ENDCODE
12608
12609
12610 CODE LCD_WrF
12611     BIC.B #2,&$243
12612     JMP LCD_W 
12613 ENDCODE
12614
12615
12616 : LCD_Clear 
12617     $01 LCD_WrF 100 20_us
12618 ;
12619
12620
12621 : LCD_Home 
12622     $02 LCD_WrF 100 20_us 
12623 ;
12624
12625
12626 [UNDEFINED] OR [IF]
12627
12628 CODE OR
12629 BIS @R15+,R14
12630 MOV @R13+,R0
12631 ENDCODE
12632
12633
12634 [THEN]
12635
12636 : LCD_Entry_set     $04 OR LCD_WrF ;
12637
12638 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
12639
12640 : LCD_DSP_Shift     $10 OR LCD_WrF ;
12641
12642 : LCD_Fn_Set        $20 OR LCD_WrF ;
12643
12644 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
12645
12646 : LCD_Goto          $80 OR LCD_WrF ;
12647
12648 CODE LCD_R
12649     BIC.B #$0F,&$224
12650     BIS.B #1,&$243
12651 COLON
12652     TOP_LCD 2 20_us
12653     TOP_LCD 2 20_us
12654 HI2LO
12655     RLAM #4,0(R15)
12656     ADD.B @R15+,R14
12657     MOV @R1+,R13
12658     MOV @R13+,R0
12659 ENDCODE
12660
12661
12662 CODE LCD_RdS
12663     BIC.B #2,&$243
12664     JMP LCD_R
12665 ENDCODE
12666
12667
12668 CODE LCD_RdC
12669     BIS.B #2,&$243
12670     JMP LCD_R
12671 ENDCODE
12672
12673
12674
12675 ASM WDT_INT
12676 BIT.B #$20,&$240
12677 0= IF
12678     CMP #19,&$3D6
12679     U< IF
12680         ADD #1,&$3D6
12681     THEN
12682 ELSE
12683     BIT.B #$40,&$240
12684     0= IF
12685         CMP #3,&$3D6
12686         U>= IF
12687            SUB #1,&$3D6
12688         THEN
12689     THEN
12690 THEN
12691 BW1
12692 BW2
12693 BW3
12694 BIC #$78,0(R1)
12695 RETI
12696 ENDASM
12697
12698
12699 ASM RC5_INT
12700   MOV #1,&$3A0
12701 MOV #1778,R9
12702 MOV #14,R10
12703 BEGIN
12704 MOV #%1011100100,&$380
12705     RRUM    #1,R9
12706     MOV     R9,R8
12707     RRUM    #1,R8
12708     ADD     R9,R8
12709     BEGIN   CMP R8,&$390
12710     U>= UNTIL
12711     BIT.B   #4,&$200
12712     ADDC    R11,R11
12713     MOV.B   &$200,&$208
12714     BIC.B   #4,&$20C
12715     SUB     #1,R10
12716 0<> WHILE
12717     ADD R9,R8
12718     BEGIN
12719         MOV &$390,R9
12720         CMP R8,R9
12721         U>= IF
12722         BIC #$30,&$380
12723         GOTO BW1
12724         THEN
12725         BIT.B #4,&$20C
12726     0<> UNTIL
12727 REPEAT
12728 BIC #$30,&$380
12729 RLAM    #1,R11
12730 MOV.B   R11,R9
12731 RRUM    #2,R9
12732 BIT     #$4000,R11
12733 0= IF   BIS #$40,R9
12734 THEN
12735 RRUM    #3,R11
12736 XOR     @R1,R11
12737 BIT     #$400,R11
12738 0= ?GOTO BW2
12739 XOR #$400,0(R1)
12740 SUB #4,R15
12741 MOV &BASE,2(R15)
12742 MOV #$10,&BASE
12743 MOV R14,0(R15)
12744 MOV R9,R14
12745 LO2HI
12746     ['] LCD_CLEAR IS CR
12747     ['] LCD_WrC  IS EMIT
12748     CR ." $" 2 U.R
12749     ['] CR >BODY IS CR
12750     ['] EMIT >BODY IS EMIT
12751 HI2LO
12752 MOV R14,&BASE
12753 MOV @R15+,R14
12754 GOTO BW3
12755 ENDASM
12756
12757
12758 ASM BACKGROUND
12759 MOV #SLEEP,R9
12760 ADD #4,R9
12761 MOV R9,R0
12762 ENDASM
12763
12764
12765 CODE START
12766     MOV #%1011010100,&$3C0
12767     MOV #1,&$3E0
12768     MOV #19,&$3D2
12769     MOV #%01100000,&$3C6
12770     MOV #10,&$3D6
12771     BIS.B #$20,&$204
12772     BIS.B #$20,&$20A
12773     BIS.B #7,&$245
12774     BIC.B #7,&$247
12775     BIS.B #$0F,&$224
12776     BIC.B #$0F,&$226
12777     BIS.B #4,&$20A
12778     BIC.B #4,&$20C
12779     MOV #RC5_INT,&$FFDE
12780     MOV #%0100010100,&$340
12781     MOV ##1638,&$352
12782     MOV #%10000,&$342
12783     MOV #WDT_INT,&$FFEA
12784
12785     MOV #SLEEP,R9
12786     MOV #BACKGROUND,2(R9)
12787
12788 LO2HI
12789
12790     $03E8 20_US
12791     $03 TOP_LCD
12792     $CD 20_US
12793     $03 TOP_LCD
12794     $5 20_US
12795     $03 TOP_LCD
12796     $2 20_US
12797     $02 TOP_LCD
12798     $2 20_US
12799     $28 LCD_WRF
12800     $08 LCD_WRF
12801     LCD_Clear
12802     $06 LCD_WRF
12803     $0C LCD_WRF
12804     LCD_Clear
12805     ['] LCD_HOME IS CR
12806     ['] LCD_WRC  IS EMIT
12807     CR ." I love you"   
12808     ['] CR >BODY IS CR
12809     ['] EMIT >BODY IS EMIT
12810     ." RC5toLCD is running. Type STOP to quit"
12811     LIT RECURSE IS WARM
12812     ABORT
12813 ;
12814
12815
12816 CODE STOP
12817     MOV #SLEEP,R9
12818     ADD #4,R9
12819     MOV R9,-2(R9)
12820
12821 COLON
12822     ['] WARM >BODY IS WARM
12823
12824     COLD
12825 ;
12826
12827
12828
12829             ; downloading RC5toLCD.4th is done
12830 RST_HERE    ; this app is protected against <reset>
12831
12832 [THEN]
12833
12834
12835
12836
12837
12838 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
12839
12840 [DEFINED] ASM [IF]
12841
12842 MARKER {RC5TOLCD}
12843
12844 [UNDEFINED] MAX [IF]
12845
12846 CODE MAX
12847     CMP @R15,R14
12848     S<  ?GOTO FW1
12849 BW1 ADD #2,R15
12850     MOV @R13+,R0
12851 ENDCODE
12852
12853
12854 CODE MIN
12855     CMP @R15,R14
12856     S<  ?GOTO BW1
12857 FW1 MOV @R15+,R14
12858     MOV @R13+,R0
12859 ENDCODE
12860
12861 [THEN]
12862
12863
12864 [UNDEFINED] U.R [IF]
12865 : U.R
12866   >R  <# 0 # #S #>  
12867   R> OVER - 0 MAX SPACES TYPE
12868 ;
12869 [THEN]
12870
12871
12872
12873 CODE 20_US
12874 BEGIN
12875     BEGIN
12876         BIT #1,&$3C0
12877     0<> UNTIL
12878     BIC #1,&$3C0
12879     SUB #1,R14
12880 U< UNTIL
12881 MOV @R15+,R14
12882 MOV @R13+,R0
12883 ENDCODE
12884
12885
12886 CODE TOP_LCD
12887     BIS.B #4,&$243
12888     BIT.B #1,&$241
12889 0= IF
12890     AND.B #$0F,R14
12891     MOV.B R14,&$222
12892     BIC.B #4,&$243
12893     MOV @R15+,R14
12894     MOV @R13+,R0
12895 THEN
12896     SUB #2,R15
12897     MOV R14,0(R15)
12898     BIC.B #4,&$243
12899     MOV.B &$220,R14
12900     AND.B #$0F,R14
12901     MOV @R13+,R0
12902 ENDCODE
12903
12904
12905 CODE LCD_W
12906     SUB #2,R15
12907     MOV R14,0(R15)
12908     RRUM #4,R14
12909     BIC.B #1,&$243
12910     BIS.B #$0F,&$224
12911 COLON
12912     TOP_LCD 2 20_US
12913     TOP_LCD 2 20_US 
12914 ;
12915
12916
12917 CODE LCD_WrC
12918     BIS.B #2,&$243
12919     JMP LCD_W 
12920 ENDCODE
12921
12922
12923 CODE LCD_WrF
12924     BIC.B #2,&$243
12925     JMP LCD_W 
12926 ENDCODE
12927
12928
12929 : LCD_Clear 
12930     $01 LCD_WrF 100 20_us
12931 ;
12932
12933
12934 : LCD_Home 
12935     $02 LCD_WrF 100 20_us 
12936 ;
12937
12938
12939 [UNDEFINED] OR [IF]
12940
12941 CODE OR
12942 BIS @R15+,R14
12943 MOV @R13+,R0
12944 ENDCODE
12945
12946
12947 [THEN]
12948
12949 : LCD_Entry_set     $04 OR LCD_WrF ;
12950
12951 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
12952
12953 : LCD_DSP_Shift     $10 OR LCD_WrF ;
12954
12955 : LCD_Fn_Set        $20 OR LCD_WrF ;
12956
12957 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
12958
12959 : LCD_Goto          $80 OR LCD_WrF ;
12960
12961 CODE LCD_R
12962     BIC.B #$0F,&$224
12963     BIS.B #1,&$243
12964 COLON
12965     TOP_LCD 2 20_us
12966     TOP_LCD 2 20_us
12967 HI2LO
12968     RLAM #4,0(R15)
12969     ADD.B @R15+,R14
12970     MOV @R1+,R13
12971     MOV @R13+,R0
12972 ENDCODE
12973
12974
12975 CODE LCD_RdS
12976     BIC.B #2,&$243
12977     JMP LCD_R
12978 ENDCODE
12979
12980
12981 CODE LCD_RdC
12982     BIS.B #2,&$243
12983     JMP LCD_R
12984 ENDCODE
12985
12986
12987
12988 ASM WDT_INT
12989 BIT.B #$20,&$240
12990 0= IF
12991     CMP #19,&$3D6
12992     U< IF
12993         ADD #1,&$3D6
12994     THEN
12995 ELSE
12996     BIT.B #$40,&$240
12997     0= IF
12998         CMP #3,&$3D6
12999         U>= IF
13000            SUB #1,&$3D6
13001         THEN
13002     THEN
13003 THEN
13004 BW1
13005 BW2
13006 BW3
13007 BIC #$78,0(R1)
13008 RETI
13009 ENDASM
13010
13011
13012 ASM RC5_INT
13013   MOV #1,&$3A0
13014 MOV #1778,R9
13015 MOV #14,R10
13016 BEGIN
13017 MOV #%1011100100,&$380
13018     RRUM    #1,R9
13019     MOV     R9,R8
13020     RRUM    #1,R8
13021     ADD     R9,R8
13022     BEGIN   CMP R8,&$390
13023     U>= UNTIL
13024     BIT.B   #4,&$200
13025     ADDC    R11,R11
13026     MOV.B   &$200,&$208
13027     BIC.B   #4,&$20C
13028     SUB     #1,R10
13029 0<> WHILE
13030     ADD R9,R8
13031     BEGIN
13032         MOV &$390,R9
13033         CMP R8,R9
13034         U>= IF
13035         BIC #$30,&$380
13036         GOTO BW1
13037         THEN
13038         BIT.B #4,&$20C
13039     0<> UNTIL
13040 REPEAT
13041 BIC #$30,&$380
13042 RLAM    #1,R11
13043 MOV.B   R11,R9
13044 RRUM    #2,R9
13045 BIT     #$4000,R11
13046 0= IF   BIS #$40,R9
13047 THEN
13048 RRUM    #3,R11
13049 XOR     @R1,R11
13050 BIT     #$400,R11
13051 0= ?GOTO BW2
13052 XOR #$400,0(R1)
13053 SUB #4,R15
13054 MOV &BASE,2(R15)
13055 MOV #$10,&BASE
13056 MOV R14,0(R15)
13057 MOV R9,R14
13058 LO2HI
13059     ['] LCD_CLEAR IS CR
13060     ['] LCD_WrC  IS EMIT
13061     CR ." $" 2 U.R
13062     ['] CR >BODY IS CR
13063     ['] EMIT >BODY IS EMIT
13064 HI2LO
13065 MOV R14,&BASE
13066 MOV @R15+,R14
13067 GOTO BW3
13068 ENDASM
13069
13070
13071 ASM BACKGROUND
13072 MOV #SLEEP,R9
13073 ADD #4,R9
13074 MOV R9,R0
13075 ENDASM
13076
13077
13078 CODE START
13079     MOV #%1011010100,&$3C0
13080     MOV #1,&$3E0
13081     MOV #19,&$3D2
13082     MOV #%01100000,&$3C6
13083     MOV #10,&$3D6
13084     BIS.B #$20,&$204
13085     BIS.B #$20,&$20A
13086     BIS.B #7,&$245
13087     BIC.B #7,&$247
13088     BIS.B #$0F,&$224
13089     BIC.B #$0F,&$226
13090     BIS.B #4,&$20A
13091     BIC.B #4,&$20C
13092     MOV #RC5_INT,&$FFDE
13093     MOV #%0100010100,&$340
13094     MOV ##1638,&$352
13095     MOV #%10000,&$342
13096     MOV #WDT_INT,&$FFEA
13097
13098     MOV #SLEEP,R9
13099     MOV #BACKGROUND,2(R9)
13100
13101 LO2HI
13102
13103     $03E8 20_US
13104     $03 TOP_LCD
13105     $CD 20_US
13106     $03 TOP_LCD
13107     $5 20_US
13108     $03 TOP_LCD
13109     $2 20_US
13110     $02 TOP_LCD
13111     $2 20_US
13112     $28 LCD_WRF
13113     $08 LCD_WRF
13114     LCD_Clear
13115     $06 LCD_WRF
13116     $0C LCD_WRF
13117     LCD_Clear
13118     ['] LCD_HOME IS CR
13119     ['] LCD_WRC  IS EMIT
13120     CR ." I love you"   
13121     ['] CR >BODY IS CR
13122     ['] EMIT >BODY IS EMIT
13123     ." RC5toLCD is running. Type STOP to quit"
13124     LIT RECURSE IS WARM
13125     ABORT
13126 ;
13127
13128
13129 CODE STOP
13130     MOV #SLEEP,R9
13131     ADD #4,R9
13132     MOV R9,-2(R9)
13133
13134 COLON
13135     ['] WARM >BODY IS WARM
13136
13137     COLD
13138 ;
13139
13140
13141
13142             ; downloading RC5toLCD.4th is done
13143 RST_HERE    ; this app is protected against <reset>
13144
13145 [THEN]
13146
13147
13148
13149
13150
13151 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
13152
13153 [DEFINED] ASM [IF]
13154
13155 MARKER {RC5TOLCD}
13156
13157 [UNDEFINED] MAX [IF]
13158
13159 CODE MAX
13160     CMP @R15,R14
13161     S<  ?GOTO FW1
13162 BW1 ADD #2,R15
13163     MOV @R13+,R0
13164 ENDCODE
13165
13166
13167 CODE MIN
13168     CMP @R15,R14
13169     S<  ?GOTO BW1
13170 FW1 MOV @R15+,R14
13171     MOV @R13+,R0
13172 ENDCODE
13173
13174 [THEN]
13175
13176
13177 [UNDEFINED] U.R [IF]
13178 : U.R
13179   >R  <# 0 # #S #>  
13180   R> OVER - 0 MAX SPACES TYPE
13181 ;
13182 [THEN]
13183
13184
13185
13186 CODE 20_US
13187 BEGIN
13188     BEGIN
13189         BIT #1,&$3C0
13190     0<> UNTIL
13191     BIC #1,&$3C0
13192     SUB #1,R14
13193 U< UNTIL
13194 MOV @R15+,R14
13195 MOV @R13+,R0
13196 ENDCODE
13197
13198
13199 CODE TOP_LCD
13200     BIS.B #4,&$243
13201     BIT.B #1,&$241
13202 0= IF
13203     AND.B #$0F,R14
13204     MOV.B R14,&$222
13205     BIC.B #4,&$243
13206     MOV @R15+,R14
13207     MOV @R13+,R0
13208 THEN
13209     SUB #2,R15
13210     MOV R14,0(R15)
13211     BIC.B #4,&$243
13212     MOV.B &$220,R14
13213     AND.B #$0F,R14
13214     MOV @R13+,R0
13215 ENDCODE
13216
13217
13218 CODE LCD_W
13219     SUB #2,R15
13220     MOV R14,0(R15)
13221     RRUM #4,R14
13222     BIC.B #1,&$243
13223     BIS.B #$0F,&$224
13224 COLON
13225     TOP_LCD 2 20_US
13226     TOP_LCD 2 20_US 
13227 ;
13228
13229
13230 CODE LCD_WrC
13231     BIS.B #2,&$243
13232     JMP LCD_W 
13233 ENDCODE
13234
13235
13236 CODE LCD_WrF
13237     BIC.B #2,&$243
13238     JMP LCD_W 
13239 ENDCODE
13240
13241
13242 : LCD_Clear 
13243     $01 LCD_WrF 100 20_us
13244 ;
13245
13246
13247 : LCD_Home 
13248     $02 LCD_WrF 100 20_us 
13249 ;
13250
13251
13252 [UNDEFINED] OR [IF]
13253
13254 CODE OR
13255 BIS @R15+,R14
13256 MOV @R13+,R0
13257 ENDCODE
13258
13259
13260 [THEN]
13261
13262 : LCD_Entry_set     $04 OR LCD_WrF ;
13263
13264 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
13265
13266 : LCD_DSP_Shift     $10 OR LCD_WrF ;
13267
13268 : LCD_Fn_Set        $20 OR LCD_WrF ;
13269
13270 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
13271
13272 : LCD_Goto          $80 OR LCD_WrF ;
13273
13274 CODE LCD_R
13275     BIC.B #$0F,&$224
13276     BIS.B #1,&$243
13277 COLON
13278     TOP_LCD 2 20_us
13279     TOP_LCD 2 20_us
13280 HI2LO
13281     RLAM #4,0(R15)
13282     ADD.B @R15+,R14
13283     MOV @R1+,R13
13284     MOV @R13+,R0
13285 ENDCODE
13286
13287
13288 CODE LCD_RdS
13289     BIC.B #2,&$243
13290     JMP LCD_R
13291 ENDCODE
13292
13293
13294 CODE LCD_RdC
13295     BIS.B #2,&$243
13296     JMP LCD_R
13297 ENDCODE
13298
13299
13300
13301 ASM WDT_INT
13302 BIT.B #$20,&$240
13303 0= IF
13304     CMP #19,&$3D6
13305     U< IF
13306         ADD #1,&$3D6
13307     THEN
13308 ELSE
13309     BIT.B #$40,&$240
13310     0= IF
13311         CMP #3,&$3D6
13312         U>= IF
13313            SUB #1,&$3D6
13314         THEN
13315     THEN
13316 THEN
13317 BW1
13318 BW2
13319 BW3
13320 BIC #$78,0(R1)
13321 RETI
13322 ENDASM
13323
13324
13325 ASM RC5_INT
13326   MOV #1,&$3A0
13327 MOV #1778,R9
13328 MOV #14,R10
13329 BEGIN
13330 MOV #%1011100100,&$380
13331     RRUM    #1,R9
13332     MOV     R9,R8
13333     RRUM    #1,R8
13334     ADD     R9,R8
13335     BEGIN   CMP R8,&$390
13336     U>= UNTIL
13337     BIT.B   #4,&$200
13338     ADDC    R11,R11
13339     MOV.B   &$200,&$208
13340     BIC.B   #4,&$20C
13341     SUB     #1,R10
13342 0<> WHILE
13343     ADD R9,R8
13344     BEGIN
13345         MOV &$390,R9
13346         CMP R8,R9
13347         U>= IF
13348         BIC #$30,&$380
13349         GOTO BW1
13350         THEN
13351         BIT.B #4,&$20C
13352     0<> UNTIL
13353 REPEAT
13354 BIC #$30,&$380
13355 RLAM    #1,R11
13356 MOV.B   R11,R9
13357 RRUM    #2,R9
13358 BIT     #$4000,R11
13359 0= IF   BIS #$40,R9
13360 THEN
13361 RRUM    #3,R11
13362 XOR     @R1,R11
13363 BIT     #$400,R11
13364 0= ?GOTO BW2
13365 XOR #$400,0(R1)
13366 SUB #4,R15
13367 MOV &BASE,2(R15)
13368 MOV #$10,&BASE
13369 MOV R14,0(R15)
13370 MOV R9,R14
13371 LO2HI
13372     ['] LCD_CLEAR IS CR
13373     ['] LCD_WrC  IS EMIT
13374     CR ." $" 2 U.R
13375     ['] CR >BODY IS CR
13376     ['] EMIT >BODY IS EMIT
13377 HI2LO
13378 MOV R14,&BASE
13379 MOV @R15+,R14
13380 GOTO BW3
13381 ENDASM
13382
13383
13384 ASM BACKGROUND
13385 MOV #SLEEP,R9
13386 ADD #4,R9
13387 MOV R9,R0
13388 ENDASM
13389
13390
13391 CODE START
13392     MOV #%1011010100,&$3C0
13393     MOV #1,&$3E0
13394     MOV #19,&$3D2
13395     MOV #%01100000,&$3C6
13396     MOV #10,&$3D6
13397     BIS.B #$20,&$204
13398     BIS.B #$20,&$20A
13399     BIS.B #7,&$245
13400     BIC.B #7,&$247
13401     BIS.B #$0F,&$224
13402     BIC.B #$0F,&$226
13403     BIS.B #4,&$20A
13404     BIC.B #4,&$20C
13405     MOV #RC5_INT,&$FFDE
13406     MOV #%0100010100,&$340
13407     MOV ##1638,&$352
13408     MOV #%10000,&$342
13409     MOV #WDT_INT,&$FFEA
13410
13411     MOV #SLEEP,R9
13412     MOV #BACKGROUND,2(R9)
13413
13414 LO2HI
13415
13416     $03E8 20_US
13417     $03 TOP_LCD
13418     $CD 20_US
13419     $03 TOP_LCD
13420     $5 20_US
13421     $03 TOP_LCD
13422     $2 20_US
13423     $02 TOP_LCD
13424     $2 20_US
13425     $28 LCD_WRF
13426     $08 LCD_WRF
13427     LCD_Clear
13428     $06 LCD_WRF
13429     $0C LCD_WRF
13430     LCD_Clear
13431     ['] LCD_HOME IS CR
13432     ['] LCD_WRC  IS EMIT
13433     CR ." I love you"   
13434     ['] CR >BODY IS CR
13435     ['] EMIT >BODY IS EMIT
13436     ." RC5toLCD is running. Type STOP to quit"
13437     LIT RECURSE IS WARM
13438     ABORT
13439 ;
13440
13441
13442 CODE STOP
13443     MOV #SLEEP,R9
13444     ADD #4,R9
13445     MOV R9,-2(R9)
13446
13447 COLON
13448     ['] WARM >BODY IS WARM
13449
13450     COLD
13451 ;
13452
13453
13454
13455             ; downloading RC5toLCD.4th is done
13456 RST_HERE    ; this app is protected against <reset>
13457
13458 [THEN]
13459
13460
13461
13462
13463
13464 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
13465
13466 [DEFINED] ASM [IF]
13467
13468 MARKER {RC5TOLCD}
13469
13470 [UNDEFINED] MAX [IF]
13471
13472 CODE MAX
13473     CMP @R15,R14
13474     S<  ?GOTO FW1
13475 BW1 ADD #2,R15
13476     MOV @R13+,R0
13477 ENDCODE
13478
13479
13480 CODE MIN
13481     CMP @R15,R14
13482     S<  ?GOTO BW1
13483 FW1 MOV @R15+,R14
13484     MOV @R13+,R0
13485 ENDCODE
13486
13487 [THEN]
13488
13489
13490 [UNDEFINED] U.R [IF]
13491 : U.R
13492   >R  <# 0 # #S #>  
13493   R> OVER - 0 MAX SPACES TYPE
13494 ;
13495 [THEN]
13496
13497
13498
13499 CODE 20_US
13500 BEGIN
13501     BEGIN
13502         BIT #1,&$3C0
13503     0<> UNTIL
13504     BIC #1,&$3C0
13505     SUB #1,R14
13506 U< UNTIL
13507 MOV @R15+,R14
13508 MOV @R13+,R0
13509 ENDCODE
13510
13511
13512 CODE TOP_LCD
13513     BIS.B #4,&$243
13514     BIT.B #1,&$241
13515 0= IF
13516     AND.B #$0F,R14
13517     MOV.B R14,&$222
13518     BIC.B #4,&$243
13519     MOV @R15+,R14
13520     MOV @R13+,R0
13521 THEN
13522     SUB #2,R15
13523     MOV R14,0(R15)
13524     BIC.B #4,&$243
13525     MOV.B &$220,R14
13526     AND.B #$0F,R14
13527     MOV @R13+,R0
13528 ENDCODE
13529
13530
13531 CODE LCD_W
13532     SUB #2,R15
13533     MOV R14,0(R15)
13534     RRUM #4,R14
13535     BIC.B #1,&$243
13536     BIS.B #$0F,&$224
13537 COLON
13538     TOP_LCD 2 20_US
13539     TOP_LCD 2 20_US 
13540 ;
13541
13542
13543 CODE LCD_WrC
13544     BIS.B #2,&$243
13545     JMP LCD_W 
13546 ENDCODE
13547
13548
13549 CODE LCD_WrF
13550     BIC.B #2,&$243
13551     JMP LCD_W 
13552 ENDCODE
13553
13554
13555 : LCD_Clear 
13556     $01 LCD_WrF 100 20_us
13557 ;
13558
13559
13560 : LCD_Home 
13561     $02 LCD_WrF 100 20_us 
13562 ;
13563
13564
13565 [UNDEFINED] OR [IF]
13566
13567 CODE OR
13568 BIS @R15+,R14
13569 MOV @R13+,R0
13570 ENDCODE
13571
13572
13573 [THEN]
13574
13575 : LCD_Entry_set     $04 OR LCD_WrF ;
13576
13577 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
13578
13579 : LCD_DSP_Shift     $10 OR LCD_WrF ;
13580
13581 : LCD_Fn_Set        $20 OR LCD_WrF ;
13582
13583 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
13584
13585 : LCD_Goto          $80 OR LCD_WrF ;
13586
13587 CODE LCD_R
13588     BIC.B #$0F,&$224
13589     BIS.B #1,&$243
13590 COLON
13591     TOP_LCD 2 20_us
13592     TOP_LCD 2 20_us
13593 HI2LO
13594     RLAM #4,0(R15)
13595     ADD.B @R15+,R14
13596     MOV @R1+,R13
13597     MOV @R13+,R0
13598 ENDCODE
13599
13600
13601 CODE LCD_RdS
13602     BIC.B #2,&$243
13603     JMP LCD_R
13604 ENDCODE
13605
13606
13607 CODE LCD_RdC
13608     BIS.B #2,&$243
13609     JMP LCD_R
13610 ENDCODE
13611
13612
13613
13614 ASM WDT_INT
13615 BIT.B #$20,&$240
13616 0= IF
13617     CMP #19,&$3D6
13618     U< IF
13619         ADD #1,&$3D6
13620     THEN
13621 ELSE
13622     BIT.B #$40,&$240
13623     0= IF
13624         CMP #3,&$3D6
13625         U>= IF
13626            SUB #1,&$3D6
13627         THEN
13628     THEN
13629 THEN
13630 BW1
13631 BW2
13632 BW3
13633 BIC #$78,0(R1)
13634 RETI
13635 ENDASM
13636
13637
13638 ASM RC5_INT
13639   MOV #1,&$3A0
13640 MOV #1778,R9
13641 MOV #14,R10
13642 BEGIN
13643 MOV #%1011100100,&$380
13644     RRUM    #1,R9
13645     MOV     R9,R8
13646     RRUM    #1,R8
13647     ADD     R9,R8
13648     BEGIN   CMP R8,&$390
13649     U>= UNTIL
13650     BIT.B   #4,&$200
13651     ADDC    R11,R11
13652     MOV.B   &$200,&$208
13653     BIC.B   #4,&$20C
13654     SUB     #1,R10
13655 0<> WHILE
13656     ADD R9,R8
13657     BEGIN
13658         MOV &$390,R9
13659         CMP R8,R9
13660         U>= IF
13661         BIC #$30,&$380
13662         GOTO BW1
13663         THEN
13664         BIT.B #4,&$20C
13665     0<> UNTIL
13666 REPEAT
13667 BIC #$30,&$380
13668 RLAM    #1,R11
13669 MOV.B   R11,R9
13670 RRUM    #2,R9
13671 BIT     #$4000,R11
13672 0= IF   BIS #$40,R9
13673 THEN
13674 RRUM    #3,R11
13675 XOR     @R1,R11
13676 BIT     #$400,R11
13677 0= ?GOTO BW2
13678 XOR #$400,0(R1)
13679 SUB #4,R15
13680 MOV &BASE,2(R15)
13681 MOV #$10,&BASE
13682 MOV R14,0(R15)
13683 MOV R9,R14
13684 LO2HI
13685     ['] LCD_CLEAR IS CR
13686     ['] LCD_WrC  IS EMIT
13687     CR ." $" 2 U.R
13688     ['] CR >BODY IS CR
13689     ['] EMIT >BODY IS EMIT
13690 HI2LO
13691 MOV R14,&BASE
13692 MOV @R15+,R14
13693 GOTO BW3
13694 ENDASM
13695
13696
13697 ASM BACKGROUND
13698 MOV #SLEEP,R9
13699 ADD #4,R9
13700 MOV R9,R0
13701 ENDASM
13702
13703
13704 CODE START
13705     MOV #%1011010100,&$3C0
13706     MOV #1,&$3E0
13707     MOV #19,&$3D2
13708     MOV #%01100000,&$3C6
13709     MOV #10,&$3D6
13710     BIS.B #$20,&$204
13711     BIS.B #$20,&$20A
13712     BIS.B #7,&$245
13713     BIC.B #7,&$247
13714     BIS.B #$0F,&$224
13715     BIC.B #$0F,&$226
13716     BIS.B #4,&$20A
13717     BIC.B #4,&$20C
13718     MOV #RC5_INT,&$FFDE
13719     MOV #%0100010100,&$340
13720     MOV ##1638,&$352
13721     MOV #%10000,&$342
13722     MOV #WDT_INT,&$FFEA
13723
13724     MOV #SLEEP,R9
13725     MOV #BACKGROUND,2(R9)
13726
13727 LO2HI
13728
13729     $03E8 20_US
13730     $03 TOP_LCD
13731     $CD 20_US
13732     $03 TOP_LCD
13733     $5 20_US
13734     $03 TOP_LCD
13735     $2 20_US
13736     $02 TOP_LCD
13737     $2 20_US
13738     $28 LCD_WRF
13739     $08 LCD_WRF
13740     LCD_Clear
13741     $06 LCD_WRF
13742     $0C LCD_WRF
13743     LCD_Clear
13744     ['] LCD_HOME IS CR
13745     ['] LCD_WRC  IS EMIT
13746     CR ." I love you"   
13747     ['] CR >BODY IS CR
13748     ['] EMIT >BODY IS EMIT
13749     ." RC5toLCD is running. Type STOP to quit"
13750     LIT RECURSE IS WARM
13751     ABORT
13752 ;
13753
13754
13755 CODE STOP
13756     MOV #SLEEP,R9
13757     ADD #4,R9
13758     MOV R9,-2(R9)
13759
13760 COLON
13761     ['] WARM >BODY IS WARM
13762
13763     COLD
13764 ;
13765
13766
13767
13768             ; downloading RC5toLCD.4th is done
13769 RST_HERE    ; this app is protected against <reset>
13770
13771 [THEN]
13772
13773
13774
13775
13776
13777 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
13778
13779 [DEFINED] ASM [IF]
13780
13781 MARKER {RC5TOLCD}
13782
13783 [UNDEFINED] MAX [IF]
13784
13785 CODE MAX
13786     CMP @R15,R14
13787     S<  ?GOTO FW1
13788 BW1 ADD #2,R15
13789     MOV @R13+,R0
13790 ENDCODE
13791
13792
13793 CODE MIN
13794     CMP @R15,R14
13795     S<  ?GOTO BW1
13796 FW1 MOV @R15+,R14
13797     MOV @R13+,R0
13798 ENDCODE
13799
13800 [THEN]
13801
13802
13803 [UNDEFINED] U.R [IF]
13804 : U.R
13805   >R  <# 0 # #S #>  
13806   R> OVER - 0 MAX SPACES TYPE
13807 ;
13808 [THEN]
13809
13810
13811
13812 CODE 20_US
13813 BEGIN
13814     BEGIN
13815         BIT #1,&$3C0
13816     0<> UNTIL
13817     BIC #1,&$3C0
13818     SUB #1,R14
13819 U< UNTIL
13820 MOV @R15+,R14
13821 MOV @R13+,R0
13822 ENDCODE
13823
13824
13825 CODE TOP_LCD
13826     BIS.B #4,&$243
13827     BIT.B #1,&$241
13828 0= IF
13829     AND.B #$0F,R14
13830     MOV.B R14,&$222
13831     BIC.B #4,&$243
13832     MOV @R15+,R14
13833     MOV @R13+,R0
13834 THEN
13835     SUB #2,R15
13836     MOV R14,0(R15)
13837     BIC.B #4,&$243
13838     MOV.B &$220,R14
13839     AND.B #$0F,R14
13840     MOV @R13+,R0
13841 ENDCODE
13842
13843
13844 CODE LCD_W
13845     SUB #2,R15
13846     MOV R14,0(R15)
13847     RRUM #4,R14
13848     BIC.B #1,&$243
13849     BIS.B #$0F,&$224
13850 COLON
13851     TOP_LCD 2 20_US
13852     TOP_LCD 2 20_US 
13853 ;
13854
13855
13856 CODE LCD_WrC
13857     BIS.B #2,&$243
13858     JMP LCD_W 
13859 ENDCODE
13860
13861
13862 CODE LCD_WrF
13863     BIC.B #2,&$243
13864     JMP LCD_W 
13865 ENDCODE
13866
13867
13868 : LCD_Clear 
13869     $01 LCD_WrF 100 20_us
13870 ;
13871
13872
13873 : LCD_Home 
13874     $02 LCD_WrF 100 20_us 
13875 ;
13876
13877
13878 [UNDEFINED] OR [IF]
13879
13880 CODE OR
13881 BIS @R15+,R14
13882 MOV @R13+,R0
13883 ENDCODE
13884
13885
13886 [THEN]
13887
13888 : LCD_Entry_set     $04 OR LCD_WrF ;
13889
13890 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
13891
13892 : LCD_DSP_Shift     $10 OR LCD_WrF ;
13893
13894 : LCD_Fn_Set        $20 OR LCD_WrF ;
13895
13896 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
13897
13898 : LCD_Goto          $80 OR LCD_WrF ;
13899
13900 CODE LCD_R
13901     BIC.B #$0F,&$224
13902     BIS.B #1,&$243
13903 COLON
13904     TOP_LCD 2 20_us
13905     TOP_LCD 2 20_us
13906 HI2LO
13907     RLAM #4,0(R15)
13908     ADD.B @R15+,R14
13909     MOV @R1+,R13
13910     MOV @R13+,R0
13911 ENDCODE
13912
13913
13914 CODE LCD_RdS
13915     BIC.B #2,&$243
13916     JMP LCD_R
13917 ENDCODE
13918
13919
13920 CODE LCD_RdC
13921     BIS.B #2,&$243
13922     JMP LCD_R
13923 ENDCODE
13924
13925
13926
13927 ASM WDT_INT
13928 BIT.B #$20,&$240
13929 0= IF
13930     CMP #19,&$3D6
13931     U< IF
13932         ADD #1,&$3D6
13933     THEN
13934 ELSE
13935     BIT.B #$40,&$240
13936     0= IF
13937         CMP #3,&$3D6
13938         U>= IF
13939            SUB #1,&$3D6
13940         THEN
13941     THEN
13942 THEN
13943 BW1
13944 BW2
13945 BW3
13946 BIC #$78,0(R1)
13947 RETI
13948 ENDASM
13949
13950
13951 ASM RC5_INT
13952   MOV #1,&$3A0
13953 MOV #1778,R9
13954 MOV #14,R10
13955 BEGIN
13956 MOV #%1011100100,&$380
13957     RRUM    #1,R9
13958     MOV     R9,R8
13959     RRUM    #1,R8
13960     ADD     R9,R8
13961     BEGIN   CMP R8,&$390
13962     U>= UNTIL
13963     BIT.B   #4,&$200
13964     ADDC    R11,R11
13965     MOV.B   &$200,&$208
13966     BIC.B   #4,&$20C
13967     SUB     #1,R10
13968 0<> WHILE
13969     ADD R9,R8
13970     BEGIN
13971         MOV &$390,R9
13972         CMP R8,R9
13973         U>= IF
13974         BIC #$30,&$380
13975         GOTO BW1
13976         THEN
13977         BIT.B #4,&$20C
13978     0<> UNTIL
13979 REPEAT
13980 BIC #$30,&$380
13981 RLAM    #1,R11
13982 MOV.B   R11,R9
13983 RRUM    #2,R9
13984 BIT     #$4000,R11
13985 0= IF   BIS #$40,R9
13986 THEN
13987 RRUM    #3,R11
13988 XOR     @R1,R11
13989 BIT     #$400,R11
13990 0= ?GOTO BW2
13991 XOR #$400,0(R1)
13992 SUB #4,R15
13993 MOV &BASE,2(R15)
13994 MOV #$10,&BASE
13995 MOV R14,0(R15)
13996 MOV R9,R14
13997 LO2HI
13998     ['] LCD_CLEAR IS CR
13999     ['] LCD_WrC  IS EMIT
14000     CR ." $" 2 U.R
14001     ['] CR >BODY IS CR
14002     ['] EMIT >BODY IS EMIT
14003 HI2LO
14004 MOV R14,&BASE
14005 MOV @R15+,R14
14006 GOTO BW3
14007 ENDASM
14008
14009
14010 ASM BACKGROUND
14011 MOV #SLEEP,R9
14012 ADD #4,R9
14013 MOV R9,R0
14014 ENDASM
14015
14016
14017 CODE START
14018     MOV #%1011010100,&$3C0
14019     MOV #1,&$3E0
14020     MOV #19,&$3D2
14021     MOV #%01100000,&$3C6
14022     MOV #10,&$3D6
14023     BIS.B #$20,&$204
14024     BIS.B #$20,&$20A
14025     BIS.B #7,&$245
14026     BIC.B #7,&$247
14027     BIS.B #$0F,&$224
14028     BIC.B #$0F,&$226
14029     BIS.B #4,&$20A
14030     BIC.B #4,&$20C
14031     MOV #RC5_INT,&$FFDE
14032     MOV #%0100010100,&$340
14033     MOV ##1638,&$352
14034     MOV #%10000,&$342
14035     MOV #WDT_INT,&$FFEA
14036
14037     MOV #SLEEP,R9
14038     MOV #BACKGROUND,2(R9)
14039
14040 LO2HI
14041
14042     $03E8 20_US
14043     $03 TOP_LCD
14044     $CD 20_US
14045     $03 TOP_LCD
14046     $5 20_US
14047     $03 TOP_LCD
14048     $2 20_US
14049     $02 TOP_LCD
14050     $2 20_US
14051     $28 LCD_WRF
14052     $08 LCD_WRF
14053     LCD_Clear
14054     $06 LCD_WRF
14055     $0C LCD_WRF
14056     LCD_Clear
14057     ['] LCD_HOME IS CR
14058     ['] LCD_WRC  IS EMIT
14059     CR ." I love you"   
14060     ['] CR >BODY IS CR
14061     ['] EMIT >BODY IS EMIT
14062     ." RC5toLCD is running. Type STOP to quit"
14063     LIT RECURSE IS WARM
14064     ABORT
14065 ;
14066
14067
14068 CODE STOP
14069     MOV #SLEEP,R9
14070     ADD #4,R9
14071     MOV R9,-2(R9)
14072
14073 COLON
14074     ['] WARM >BODY IS WARM
14075
14076     COLD
14077 ;
14078
14079
14080
14081             ; downloading RC5toLCD.4th is done
14082 RST_HERE    ; this app is protected against <reset>
14083
14084 [THEN]
14085
14086
14087
14088
14089
14090 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
14091
14092 [DEFINED] ASM [IF]
14093
14094 MARKER {RC5TOLCD}
14095
14096 [UNDEFINED] MAX [IF]
14097
14098 CODE MAX
14099     CMP @R15,R14
14100     S<  ?GOTO FW1
14101 BW1 ADD #2,R15
14102     MOV @R13+,R0
14103 ENDCODE
14104
14105
14106 CODE MIN
14107     CMP @R15,R14
14108     S<  ?GOTO BW1
14109 FW1 MOV @R15+,R14
14110     MOV @R13+,R0
14111 ENDCODE
14112
14113 [THEN]
14114
14115
14116 [UNDEFINED] U.R [IF]
14117 : U.R
14118   >R  <# 0 # #S #>  
14119   R> OVER - 0 MAX SPACES TYPE
14120 ;
14121 [THEN]
14122
14123
14124
14125 CODE 20_US
14126 BEGIN
14127     BEGIN
14128         BIT #1,&$3C0
14129     0<> UNTIL
14130     BIC #1,&$3C0
14131     SUB #1,R14
14132 U< UNTIL
14133 MOV @R15+,R14
14134 MOV @R13+,R0
14135 ENDCODE
14136
14137
14138 CODE TOP_LCD
14139     BIS.B #4,&$243
14140     BIT.B #1,&$241
14141 0= IF
14142     AND.B #$0F,R14
14143     MOV.B R14,&$222
14144     BIC.B #4,&$243
14145     MOV @R15+,R14
14146     MOV @R13+,R0
14147 THEN
14148     SUB #2,R15
14149     MOV R14,0(R15)
14150     BIC.B #4,&$243
14151     MOV.B &$220,R14
14152     AND.B #$0F,R14
14153     MOV @R13+,R0
14154 ENDCODE
14155
14156
14157 CODE LCD_W
14158     SUB #2,R15
14159     MOV R14,0(R15)
14160     RRUM #4,R14
14161     BIC.B #1,&$243
14162     BIS.B #$0F,&$224
14163 COLON
14164     TOP_LCD 2 20_US
14165     TOP_LCD 2 20_US 
14166 ;
14167
14168
14169 CODE LCD_WrC
14170     BIS.B #2,&$243
14171     JMP LCD_W 
14172 ENDCODE
14173
14174
14175 CODE LCD_WrF
14176     BIC.B #2,&$243
14177     JMP LCD_W 
14178 ENDCODE
14179
14180
14181 : LCD_Clear 
14182     $01 LCD_WrF 100 20_us
14183 ;
14184
14185
14186 : LCD_Home 
14187     $02 LCD_WrF 100 20_us 
14188 ;
14189
14190
14191 [UNDEFINED] OR [IF]
14192
14193 CODE OR
14194 BIS @R15+,R14
14195 MOV @R13+,R0
14196 ENDCODE
14197
14198
14199 [THEN]
14200
14201 : LCD_Entry_set     $04 OR LCD_WrF ;
14202
14203 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
14204
14205 : LCD_DSP_Shift     $10 OR LCD_WrF ;
14206
14207 : LCD_Fn_Set        $20 OR LCD_WrF ;
14208
14209 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
14210
14211 : LCD_Goto          $80 OR LCD_WrF ;
14212
14213 CODE LCD_R
14214     BIC.B #$0F,&$224
14215     BIS.B #1,&$243
14216 COLON
14217     TOP_LCD 2 20_us
14218     TOP_LCD 2 20_us
14219 HI2LO
14220     RLAM #4,0(R15)
14221     ADD.B @R15+,R14
14222     MOV @R1+,R13
14223     MOV @R13+,R0
14224 ENDCODE
14225
14226
14227 CODE LCD_RdS
14228     BIC.B #2,&$243
14229     JMP LCD_R
14230 ENDCODE
14231
14232
14233 CODE LCD_RdC
14234     BIS.B #2,&$243
14235     JMP LCD_R
14236 ENDCODE
14237
14238
14239
14240 ASM WDT_INT
14241 BIT.B #$20,&$240
14242 0= IF
14243     CMP #19,&$3D6
14244     U< IF
14245         ADD #1,&$3D6
14246     THEN
14247 ELSE
14248     BIT.B #$40,&$240
14249     0= IF
14250         CMP #3,&$3D6
14251         U>= IF
14252            SUB #1,&$3D6
14253         THEN
14254     THEN
14255 THEN
14256 BW1
14257 BW2
14258 BW3
14259 BIC #$78,0(R1)
14260 RETI
14261 ENDASM
14262
14263
14264 ASM RC5_INT
14265   MOV #1,&$3A0
14266 MOV #1778,R9
14267 MOV #14,R10
14268 BEGIN
14269 MOV #%1011100100,&$380
14270     RRUM    #1,R9
14271     MOV     R9,R8
14272     RRUM    #1,R8
14273     ADD     R9,R8
14274     BEGIN   CMP R8,&$390
14275     U>= UNTIL
14276     BIT.B   #4,&$200
14277     ADDC    R11,R11
14278     MOV.B   &$200,&$208
14279     BIC.B   #4,&$20C
14280     SUB     #1,R10
14281 0<> WHILE
14282     ADD R9,R8
14283     BEGIN
14284         MOV &$390,R9
14285         CMP R8,R9
14286         U>= IF
14287         BIC #$30,&$380
14288         GOTO BW1
14289         THEN
14290         BIT.B #4,&$20C
14291     0<> UNTIL
14292 REPEAT
14293 BIC #$30,&$380
14294 RLAM    #1,R11
14295 MOV.B   R11,R9
14296 RRUM    #2,R9
14297 BIT     #$4000,R11
14298 0= IF   BIS #$40,R9
14299 THEN
14300 RRUM    #3,R11
14301 XOR     @R1,R11
14302 BIT     #$400,R11
14303 0= ?GOTO BW2
14304 XOR #$400,0(R1)
14305 SUB #4,R15
14306 MOV &BASE,2(R15)
14307 MOV #$10,&BASE
14308 MOV R14,0(R15)
14309 MOV R9,R14
14310 LO2HI
14311     ['] LCD_CLEAR IS CR
14312     ['] LCD_WrC  IS EMIT
14313     CR ." $" 2 U.R
14314     ['] CR >BODY IS CR
14315     ['] EMIT >BODY IS EMIT
14316 HI2LO
14317 MOV R14,&BASE
14318 MOV @R15+,R14
14319 GOTO BW3
14320 ENDASM
14321
14322
14323 ASM BACKGROUND
14324 MOV #SLEEP,R9
14325 ADD #4,R9
14326 MOV R9,R0
14327 ENDASM
14328
14329
14330 CODE START
14331     MOV #%1011010100,&$3C0
14332     MOV #1,&$3E0
14333     MOV #19,&$3D2
14334     MOV #%01100000,&$3C6
14335     MOV #10,&$3D6
14336     BIS.B #$20,&$204
14337     BIS.B #$20,&$20A
14338     BIS.B #7,&$245
14339     BIC.B #7,&$247
14340     BIS.B #$0F,&$224
14341     BIC.B #$0F,&$226
14342     BIS.B #4,&$20A
14343     BIC.B #4,&$20C
14344     MOV #RC5_INT,&$FFDE
14345     MOV #%0100010100,&$340
14346     MOV ##1638,&$352
14347     MOV #%10000,&$342
14348     MOV #WDT_INT,&$FFEA
14349
14350     MOV #SLEEP,R9
14351     MOV #BACKGROUND,2(R9)
14352
14353 LO2HI
14354
14355     $03E8 20_US
14356     $03 TOP_LCD
14357     $CD 20_US
14358     $03 TOP_LCD
14359     $5 20_US
14360     $03 TOP_LCD
14361     $2 20_US
14362     $02 TOP_LCD
14363     $2 20_US
14364     $28 LCD_WRF
14365     $08 LCD_WRF
14366     LCD_Clear
14367     $06 LCD_WRF
14368     $0C LCD_WRF
14369     LCD_Clear
14370     ['] LCD_HOME IS CR
14371     ['] LCD_WRC  IS EMIT
14372     CR ." I love you"   
14373     ['] CR >BODY IS CR
14374     ['] EMIT >BODY IS EMIT
14375     ." RC5toLCD is running. Type STOP to quit"
14376     LIT RECURSE IS WARM
14377     ABORT
14378 ;
14379
14380
14381 CODE STOP
14382     MOV #SLEEP,R9
14383     ADD #4,R9
14384     MOV R9,-2(R9)
14385
14386 COLON
14387     ['] WARM >BODY IS WARM
14388
14389     COLD
14390 ;
14391
14392
14393
14394             ; downloading RC5toLCD.4th is done
14395 RST_HERE    ; this app is protected against <reset>
14396
14397 [THEN]
14398
14399
14400
14401
14402
14403 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
14404
14405 [DEFINED] ASM [IF]
14406
14407 MARKER {RC5TOLCD}
14408
14409 [UNDEFINED] MAX [IF]
14410
14411 CODE MAX
14412     CMP @R15,R14
14413     S<  ?GOTO FW1
14414 BW1 ADD #2,R15
14415     MOV @R13+,R0
14416 ENDCODE
14417
14418
14419 CODE MIN
14420     CMP @R15,R14
14421     S<  ?GOTO BW1
14422 FW1 MOV @R15+,R14
14423     MOV @R13+,R0
14424 ENDCODE
14425
14426 [THEN]
14427
14428
14429 [UNDEFINED] U.R [IF]
14430 : U.R
14431   >R  <# 0 # #S #>  
14432   R> OVER - 0 MAX SPACES TYPE
14433 ;
14434 [THEN]
14435
14436
14437
14438 CODE 20_US
14439 BEGIN
14440     BEGIN
14441         BIT #1,&$3C0
14442     0<> UNTIL
14443     BIC #1,&$3C0
14444     SUB #1,R14
14445 U< UNTIL
14446 MOV @R15+,R14
14447 MOV @R13+,R0
14448 ENDCODE
14449
14450
14451 CODE TOP_LCD
14452     BIS.B #4,&$243
14453     BIT.B #1,&$241
14454 0= IF
14455     AND.B #$0F,R14
14456     MOV.B R14,&$222
14457     BIC.B #4,&$243
14458     MOV @R15+,R14
14459     MOV @R13+,R0
14460 THEN
14461     SUB #2,R15
14462     MOV R14,0(R15)
14463     BIC.B #4,&$243
14464     MOV.B &$220,R14
14465     AND.B #$0F,R14
14466     MOV @R13+,R0
14467 ENDCODE
14468
14469
14470 CODE LCD_W
14471     SUB #2,R15
14472     MOV R14,0(R15)
14473     RRUM #4,R14
14474     BIC.B #1,&$243
14475     BIS.B #$0F,&$224
14476 COLON
14477     TOP_LCD 2 20_US
14478     TOP_LCD 2 20_US 
14479 ;
14480
14481
14482 CODE LCD_WrC
14483     BIS.B #2,&$243
14484     JMP LCD_W 
14485 ENDCODE
14486
14487
14488 CODE LCD_WrF
14489     BIC.B #2,&$243
14490     JMP LCD_W 
14491 ENDCODE
14492
14493
14494 : LCD_Clear 
14495     $01 LCD_WrF 100 20_us
14496 ;
14497
14498
14499 : LCD_Home 
14500     $02 LCD_WrF 100 20_us 
14501 ;
14502
14503
14504 [UNDEFINED] OR [IF]
14505
14506 CODE OR
14507 BIS @R15+,R14
14508 MOV @R13+,R0
14509 ENDCODE
14510
14511
14512 [THEN]
14513
14514 : LCD_Entry_set     $04 OR LCD_WrF ;
14515
14516 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
14517
14518 : LCD_DSP_Shift     $10 OR LCD_WrF ;
14519
14520 : LCD_Fn_Set        $20 OR LCD_WrF ;
14521
14522 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
14523
14524 : LCD_Goto          $80 OR LCD_WrF ;
14525
14526 CODE LCD_R
14527     BIC.B #$0F,&$224
14528     BIS.B #1,&$243
14529 COLON
14530     TOP_LCD 2 20_us
14531     TOP_LCD 2 20_us
14532 HI2LO
14533     RLAM #4,0(R15)
14534     ADD.B @R15+,R14
14535     MOV @R1+,R13
14536     MOV @R13+,R0
14537 ENDCODE
14538
14539
14540 CODE LCD_RdS
14541     BIC.B #2,&$243
14542     JMP LCD_R
14543 ENDCODE
14544
14545
14546 CODE LCD_RdC
14547     BIS.B #2,&$243
14548     JMP LCD_R
14549 ENDCODE
14550
14551
14552
14553 ASM WDT_INT
14554 BIT.B #$20,&$240
14555 0= IF
14556     CMP #19,&$3D6
14557     U< IF
14558         ADD #1,&$3D6
14559     THEN
14560 ELSE
14561     BIT.B #$40,&$240
14562     0= IF
14563         CMP #3,&$3D6
14564         U>= IF
14565            SUB #1,&$3D6
14566         THEN
14567     THEN
14568 THEN
14569 BW1
14570 BW2
14571 BW3
14572 BIC #$78,0(R1)
14573 RETI
14574 ENDASM
14575
14576
14577 ASM RC5_INT
14578   MOV #1,&$3A0
14579 MOV #1778,R9
14580 MOV #14,R10
14581 BEGIN
14582 MOV #%1011100100,&$380
14583     RRUM    #1,R9
14584     MOV     R9,R8
14585     RRUM    #1,R8
14586     ADD     R9,R8
14587     BEGIN   CMP R8,&$390
14588     U>= UNTIL
14589     BIT.B   #4,&$200
14590     ADDC    R11,R11
14591     MOV.B   &$200,&$208
14592     BIC.B   #4,&$20C
14593     SUB     #1,R10
14594 0<> WHILE
14595     ADD R9,R8
14596     BEGIN
14597         MOV &$390,R9
14598         CMP R8,R9
14599         U>= IF
14600         BIC #$30,&$380
14601         GOTO BW1
14602         THEN
14603         BIT.B #4,&$20C
14604     0<> UNTIL
14605 REPEAT
14606 BIC #$30,&$380
14607 RLAM    #1,R11
14608 MOV.B   R11,R9
14609 RRUM    #2,R9
14610 BIT     #$4000,R11
14611 0= IF   BIS #$40,R9
14612 THEN
14613 RRUM    #3,R11
14614 XOR     @R1,R11
14615 BIT     #$400,R11
14616 0= ?GOTO BW2
14617 XOR #$400,0(R1)
14618 SUB #4,R15
14619 MOV &BASE,2(R15)
14620 MOV #$10,&BASE
14621 MOV R14,0(R15)
14622 MOV R9,R14
14623 LO2HI
14624     ['] LCD_CLEAR IS CR
14625     ['] LCD_WrC  IS EMIT
14626     CR ." $" 2 U.R
14627     ['] CR >BODY IS CR
14628     ['] EMIT >BODY IS EMIT
14629 HI2LO
14630 MOV R14,&BASE
14631 MOV @R15+,R14
14632 GOTO BW3
14633 ENDASM
14634
14635
14636 ASM BACKGROUND
14637 MOV #SLEEP,R9
14638 ADD #4,R9
14639 MOV R9,R0
14640 ENDASM
14641
14642
14643 CODE START
14644     MOV #%1011010100,&$3C0
14645     MOV #1,&$3E0
14646     MOV #19,&$3D2
14647     MOV #%01100000,&$3C6
14648     MOV #10,&$3D6
14649     BIS.B #$20,&$204
14650     BIS.B #$20,&$20A
14651     BIS.B #7,&$245
14652     BIC.B #7,&$247
14653     BIS.B #$0F,&$224
14654     BIC.B #$0F,&$226
14655     BIS.B #4,&$20A
14656     BIC.B #4,&$20C
14657     MOV #RC5_INT,&$FFDE
14658     MOV #%0100010100,&$340
14659     MOV ##1638,&$352
14660     MOV #%10000,&$342
14661     MOV #WDT_INT,&$FFEA
14662
14663     MOV #SLEEP,R9
14664     MOV #BACKGROUND,2(R9)
14665
14666 LO2HI
14667
14668     $03E8 20_US
14669     $03 TOP_LCD
14670     $CD 20_US
14671     $03 TOP_LCD
14672     $5 20_US
14673     $03 TOP_LCD
14674     $2 20_US
14675     $02 TOP_LCD
14676     $2 20_US
14677     $28 LCD_WRF
14678     $08 LCD_WRF
14679     LCD_Clear
14680     $06 LCD_WRF
14681     $0C LCD_WRF
14682     LCD_Clear
14683     ['] LCD_HOME IS CR
14684     ['] LCD_WRC  IS EMIT
14685     CR ." I love you"   
14686     ['] CR >BODY IS CR
14687     ['] EMIT >BODY IS EMIT
14688     ." RC5toLCD is running. Type STOP to quit"
14689     LIT RECURSE IS WARM
14690     ABORT
14691 ;
14692
14693
14694 CODE STOP
14695     MOV #SLEEP,R9
14696     ADD #4,R9
14697     MOV R9,-2(R9)
14698
14699 COLON
14700     ['] WARM >BODY IS WARM
14701
14702     COLD
14703 ;
14704
14705
14706
14707             ; downloading RC5toLCD.4th is done
14708 RST_HERE    ; this app is protected against <reset>
14709
14710 [THEN]
14711
14712
14713
14714
14715
14716 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
14717
14718 [DEFINED] ASM [IF]
14719
14720 MARKER {RC5TOLCD}
14721
14722 [UNDEFINED] MAX [IF]
14723
14724 CODE MAX
14725     CMP @R15,R14
14726     S<  ?GOTO FW1
14727 BW1 ADD #2,R15
14728     MOV @R13+,R0
14729 ENDCODE
14730
14731
14732 CODE MIN
14733     CMP @R15,R14
14734     S<  ?GOTO BW1
14735 FW1 MOV @R15+,R14
14736     MOV @R13+,R0
14737 ENDCODE
14738
14739 [THEN]
14740
14741
14742 [UNDEFINED] U.R [IF]
14743 : U.R
14744   >R  <# 0 # #S #>  
14745   R> OVER - 0 MAX SPACES TYPE
14746 ;
14747 [THEN]
14748
14749
14750
14751 CODE 20_US
14752 BEGIN
14753     BEGIN
14754         BIT #1,&$3C0
14755     0<> UNTIL
14756     BIC #1,&$3C0
14757     SUB #1,R14
14758 U< UNTIL
14759 MOV @R15+,R14
14760 MOV @R13+,R0
14761 ENDCODE
14762
14763
14764 CODE TOP_LCD
14765     BIS.B #4,&$243
14766     BIT.B #1,&$241
14767 0= IF
14768     AND.B #$0F,R14
14769     MOV.B R14,&$222
14770     BIC.B #4,&$243
14771     MOV @R15+,R14
14772     MOV @R13+,R0
14773 THEN
14774     SUB #2,R15
14775     MOV R14,0(R15)
14776     BIC.B #4,&$243
14777     MOV.B &$220,R14
14778     AND.B #$0F,R14
14779     MOV @R13+,R0
14780 ENDCODE
14781
14782
14783 CODE LCD_W
14784     SUB #2,R15
14785     MOV R14,0(R15)
14786     RRUM #4,R14
14787     BIC.B #1,&$243
14788     BIS.B #$0F,&$224
14789 COLON
14790     TOP_LCD 2 20_US
14791     TOP_LCD 2 20_US 
14792 ;
14793
14794
14795 CODE LCD_WrC
14796     BIS.B #2,&$243
14797     JMP LCD_W 
14798 ENDCODE
14799
14800
14801 CODE LCD_WrF
14802     BIC.B #2,&$243
14803     JMP LCD_W 
14804 ENDCODE
14805
14806
14807 : LCD_Clear 
14808     $01 LCD_WrF 100 20_us
14809 ;
14810
14811
14812 : LCD_Home 
14813     $02 LCD_WrF 100 20_us 
14814 ;
14815
14816
14817 [UNDEFINED] OR [IF]
14818
14819 CODE OR
14820 BIS @R15+,R14
14821 MOV @R13+,R0
14822 ENDCODE
14823
14824
14825 [THEN]
14826
14827 : LCD_Entry_set     $04 OR LCD_WrF ;
14828
14829 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
14830
14831 : LCD_DSP_Shift     $10 OR LCD_WrF ;
14832
14833 : LCD_Fn_Set        $20 OR LCD_WrF ;
14834
14835 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
14836
14837 : LCD_Goto          $80 OR LCD_WrF ;
14838
14839 CODE LCD_R
14840     BIC.B #$0F,&$224
14841     BIS.B #1,&$243
14842 COLON
14843     TOP_LCD 2 20_us
14844     TOP_LCD 2 20_us
14845 HI2LO
14846     RLAM #4,0(R15)
14847     ADD.B @R15+,R14
14848     MOV @R1+,R13
14849     MOV @R13+,R0
14850 ENDCODE
14851
14852
14853 CODE LCD_RdS
14854     BIC.B #2,&$243
14855     JMP LCD_R
14856 ENDCODE
14857
14858
14859 CODE LCD_RdC
14860     BIS.B #2,&$243
14861     JMP LCD_R
14862 ENDCODE
14863
14864
14865
14866 ASM WDT_INT
14867 BIT.B #$20,&$240
14868 0= IF
14869     CMP #19,&$3D6
14870     U< IF
14871         ADD #1,&$3D6
14872     THEN
14873 ELSE
14874     BIT.B #$40,&$240
14875     0= IF
14876         CMP #3,&$3D6
14877         U>= IF
14878            SUB #1,&$3D6
14879         THEN
14880     THEN
14881 THEN
14882 BW1
14883 BW2
14884 BW3
14885 BIC #$78,0(R1)
14886 RETI
14887 ENDASM
14888
14889
14890 ASM RC5_INT
14891   MOV #1,&$3A0
14892 MOV #1778,R9
14893 MOV #14,R10
14894 BEGIN
14895 MOV #%1011100100,&$380
14896     RRUM    #1,R9
14897     MOV     R9,R8
14898     RRUM    #1,R8
14899     ADD     R9,R8
14900     BEGIN   CMP R8,&$390
14901     U>= UNTIL
14902     BIT.B   #4,&$200
14903     ADDC    R11,R11
14904     MOV.B   &$200,&$208
14905     BIC.B   #4,&$20C
14906     SUB     #1,R10
14907 0<> WHILE
14908     ADD R9,R8
14909     BEGIN
14910         MOV &$390,R9
14911         CMP R8,R9
14912         U>= IF
14913         BIC #$30,&$380
14914         GOTO BW1
14915         THEN
14916         BIT.B #4,&$20C
14917     0<> UNTIL
14918 REPEAT
14919 BIC #$30,&$380
14920 RLAM    #1,R11
14921 MOV.B   R11,R9
14922 RRUM    #2,R9
14923 BIT     #$4000,R11
14924 0= IF   BIS #$40,R9
14925 THEN
14926 RRUM    #3,R11
14927 XOR     @R1,R11
14928 BIT     #$400,R11
14929 0= ?GOTO BW2
14930 XOR #$400,0(R1)
14931 SUB #4,R15
14932 MOV &BASE,2(R15)
14933 MOV #$10,&BASE
14934 MOV R14,0(R15)
14935 MOV R9,R14
14936 LO2HI
14937     ['] LCD_CLEAR IS CR
14938     ['] LCD_WrC  IS EMIT
14939     CR ." $" 2 U.R
14940     ['] CR >BODY IS CR
14941     ['] EMIT >BODY IS EMIT
14942 HI2LO
14943 MOV R14,&BASE
14944 MOV @R15+,R14
14945 GOTO BW3
14946 ENDASM
14947
14948
14949 ASM BACKGROUND
14950 MOV #SLEEP,R9
14951 ADD #4,R9
14952 MOV R9,R0
14953 ENDASM
14954
14955
14956 CODE START
14957     MOV #%1011010100,&$3C0
14958     MOV #1,&$3E0
14959     MOV #19,&$3D2
14960     MOV #%01100000,&$3C6
14961     MOV #10,&$3D6
14962     BIS.B #$20,&$204
14963     BIS.B #$20,&$20A
14964     BIS.B #7,&$245
14965     BIC.B #7,&$247
14966     BIS.B #$0F,&$224
14967     BIC.B #$0F,&$226
14968     BIS.B #4,&$20A
14969     BIC.B #4,&$20C
14970     MOV #RC5_INT,&$FFDE
14971     MOV #%0100010100,&$340
14972     MOV ##1638,&$352
14973     MOV #%10000,&$342
14974     MOV #WDT_INT,&$FFEA
14975
14976     MOV #SLEEP,R9
14977     MOV #BACKGROUND,2(R9)
14978
14979 LO2HI
14980
14981     $03E8 20_US
14982     $03 TOP_LCD
14983     $CD 20_US
14984     $03 TOP_LCD
14985     $5 20_US
14986     $03 TOP_LCD
14987     $2 20_US
14988     $02 TOP_LCD
14989     $2 20_US
14990     $28 LCD_WRF
14991     $08 LCD_WRF
14992     LCD_Clear
14993     $06 LCD_WRF
14994     $0C LCD_WRF
14995     LCD_Clear
14996     ['] LCD_HOME IS CR
14997     ['] LCD_WRC  IS EMIT
14998     CR ." I love you"   
14999     ['] CR >BODY IS CR
15000     ['] EMIT >BODY IS EMIT
15001     ." RC5toLCD is running. Type STOP to quit"
15002     LIT RECURSE IS WARM
15003     ABORT
15004 ;
15005
15006
15007 CODE STOP
15008     MOV #SLEEP,R9
15009     ADD #4,R9
15010     MOV R9,-2(R9)
15011
15012 COLON
15013     ['] WARM >BODY IS WARM
15014
15015     COLD
15016 ;
15017
15018
15019
15020             ; downloading RC5toLCD.4th is done
15021 RST_HERE    ; this app is protected against <reset>
15022
15023 [THEN]
15024
15025
15026
15027
15028
15029 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
15030
15031 [DEFINED] ASM [IF]
15032
15033 MARKER {RC5TOLCD}
15034
15035 [UNDEFINED] MAX [IF]
15036
15037 CODE MAX
15038     CMP @R15,R14
15039     S<  ?GOTO FW1
15040 BW1 ADD #2,R15
15041     MOV @R13+,R0
15042 ENDCODE
15043
15044
15045 CODE MIN
15046     CMP @R15,R14
15047     S<  ?GOTO BW1
15048 FW1 MOV @R15+,R14
15049     MOV @R13+,R0
15050 ENDCODE
15051
15052 [THEN]
15053
15054
15055 [UNDEFINED] U.R [IF]
15056 : U.R
15057   >R  <# 0 # #S #>  
15058   R> OVER - 0 MAX SPACES TYPE
15059 ;
15060 [THEN]
15061
15062
15063
15064 CODE 20_US
15065 BEGIN
15066     BEGIN
15067         BIT #1,&$3C0
15068     0<> UNTIL
15069     BIC #1,&$3C0
15070     SUB #1,R14
15071 U< UNTIL
15072 MOV @R15+,R14
15073 MOV @R13+,R0
15074 ENDCODE
15075
15076
15077 CODE TOP_LCD
15078     BIS.B #4,&$243
15079     BIT.B #1,&$241
15080 0= IF
15081     AND.B #$0F,R14
15082     MOV.B R14,&$222
15083     BIC.B #4,&$243
15084     MOV @R15+,R14
15085     MOV @R13+,R0
15086 THEN
15087     SUB #2,R15
15088     MOV R14,0(R15)
15089     BIC.B #4,&$243
15090     MOV.B &$220,R14
15091     AND.B #$0F,R14
15092     MOV @R13+,R0
15093 ENDCODE
15094
15095
15096 CODE LCD_W
15097     SUB #2,R15
15098     MOV R14,0(R15)
15099     RRUM #4,R14
15100     BIC.B #1,&$243
15101     BIS.B #$0F,&$224
15102 COLON
15103     TOP_LCD 2 20_US
15104     TOP_LCD 2 20_US 
15105 ;
15106
15107
15108 CODE LCD_WrC
15109     BIS.B #2,&$243
15110     JMP LCD_W 
15111 ENDCODE
15112
15113
15114 CODE LCD_WrF
15115     BIC.B #2,&$243
15116     JMP LCD_W 
15117 ENDCODE
15118
15119
15120 : LCD_Clear 
15121     $01 LCD_WrF 100 20_us
15122 ;
15123
15124
15125 : LCD_Home 
15126     $02 LCD_WrF 100 20_us 
15127 ;
15128
15129
15130 [UNDEFINED] OR [IF]
15131
15132 CODE OR
15133 BIS @R15+,R14
15134 MOV @R13+,R0
15135 ENDCODE
15136
15137
15138 [THEN]
15139
15140 : LCD_Entry_set     $04 OR LCD_WrF ;
15141
15142 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
15143
15144 : LCD_DSP_Shift     $10 OR LCD_WrF ;
15145
15146 : LCD_Fn_Set        $20 OR LCD_WrF ;
15147
15148 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
15149
15150 : LCD_Goto          $80 OR LCD_WrF ;
15151
15152 CODE LCD_R
15153     BIC.B #$0F,&$224
15154     BIS.B #1,&$243
15155 COLON
15156     TOP_LCD 2 20_us
15157     TOP_LCD 2 20_us
15158 HI2LO
15159     RLAM #4,0(R15)
15160     ADD.B @R15+,R14
15161     MOV @R1+,R13
15162     MOV @R13+,R0
15163 ENDCODE
15164
15165
15166 CODE LCD_RdS
15167     BIC.B #2,&$243
15168     JMP LCD_R
15169 ENDCODE
15170
15171
15172 CODE LCD_RdC
15173     BIS.B #2,&$243
15174     JMP LCD_R
15175 ENDCODE
15176
15177
15178
15179 ASM WDT_INT
15180 BIT.B #$20,&$240
15181 0= IF
15182     CMP #19,&$3D6
15183     U< IF
15184         ADD #1,&$3D6
15185     THEN
15186 ELSE
15187     BIT.B #$40,&$240
15188     0= IF
15189         CMP #3,&$3D6
15190         U>= IF
15191            SUB #1,&$3D6
15192         THEN
15193     THEN
15194 THEN
15195 BW1
15196 BW2
15197 BW3
15198 BIC #$78,0(R1)
15199 RETI
15200 ENDASM
15201
15202
15203 ASM RC5_INT
15204   MOV #1,&$3A0
15205 MOV #1778,R9
15206 MOV #14,R10
15207 BEGIN
15208 MOV #%1011100100,&$380
15209     RRUM    #1,R9
15210     MOV     R9,R8
15211     RRUM    #1,R8
15212     ADD     R9,R8
15213     BEGIN   CMP R8,&$390
15214     U>= UNTIL
15215     BIT.B   #4,&$200
15216     ADDC    R11,R11
15217     MOV.B   &$200,&$208
15218     BIC.B   #4,&$20C
15219     SUB     #1,R10
15220 0<> WHILE
15221     ADD R9,R8
15222     BEGIN
15223         MOV &$390,R9
15224         CMP R8,R9
15225         U>= IF
15226         BIC #$30,&$380
15227         GOTO BW1
15228         THEN
15229         BIT.B #4,&$20C
15230     0<> UNTIL
15231 REPEAT
15232 BIC #$30,&$380
15233 RLAM    #1,R11
15234 MOV.B   R11,R9
15235 RRUM    #2,R9
15236 BIT     #$4000,R11
15237 0= IF   BIS #$40,R9
15238 THEN
15239 RRUM    #3,R11
15240 XOR     @R1,R11
15241 BIT     #$400,R11
15242 0= ?GOTO BW2
15243 XOR #$400,0(R1)
15244 SUB #4,R15
15245 MOV &BASE,2(R15)
15246 MOV #$10,&BASE
15247 MOV R14,0(R15)
15248 MOV R9,R14
15249 LO2HI
15250     ['] LCD_CLEAR IS CR
15251     ['] LCD_WrC  IS EMIT
15252     CR ." $" 2 U.R
15253     ['] CR >BODY IS CR
15254     ['] EMIT >BODY IS EMIT
15255 HI2LO
15256 MOV R14,&BASE
15257 MOV @R15+,R14
15258 GOTO BW3
15259 ENDASM
15260
15261
15262 ASM BACKGROUND
15263 MOV #SLEEP,R9
15264 ADD #4,R9
15265 MOV R9,R0
15266 ENDASM
15267
15268
15269 CODE START
15270     MOV #%1011010100,&$3C0
15271     MOV #1,&$3E0
15272     MOV #19,&$3D2
15273     MOV #%01100000,&$3C6
15274     MOV #10,&$3D6
15275     BIS.B #$20,&$204
15276     BIS.B #$20,&$20A
15277     BIS.B #7,&$245
15278     BIC.B #7,&$247
15279     BIS.B #$0F,&$224
15280     BIC.B #$0F,&$226
15281     BIS.B #4,&$20A
15282     BIC.B #4,&$20C
15283     MOV #RC5_INT,&$FFDE
15284     MOV #%0100010100,&$340
15285     MOV ##1638,&$352
15286     MOV #%10000,&$342
15287     MOV #WDT_INT,&$FFEA
15288
15289     MOV #SLEEP,R9
15290     MOV #BACKGROUND,2(R9)
15291
15292 LO2HI
15293
15294     $03E8 20_US
15295     $03 TOP_LCD
15296     $CD 20_US
15297     $03 TOP_LCD
15298     $5 20_US
15299     $03 TOP_LCD
15300     $2 20_US
15301     $02 TOP_LCD
15302     $2 20_US
15303     $28 LCD_WRF
15304     $08 LCD_WRF
15305     LCD_Clear
15306     $06 LCD_WRF
15307     $0C LCD_WRF
15308     LCD_Clear
15309     ['] LCD_HOME IS CR
15310     ['] LCD_WRC  IS EMIT
15311     CR ." I love you"   
15312     ['] CR >BODY IS CR
15313     ['] EMIT >BODY IS EMIT
15314     ." RC5toLCD is running. Type STOP to quit"
15315     LIT RECURSE IS WARM
15316     ABORT
15317 ;
15318
15319
15320 CODE STOP
15321     MOV #SLEEP,R9
15322     ADD #4,R9
15323     MOV R9,-2(R9)
15324
15325 COLON
15326     ['] WARM >BODY IS WARM
15327
15328     COLD
15329 ;
15330
15331
15332
15333             ; downloading RC5toLCD.4th is done
15334 RST_HERE    ; this app is protected against <reset>
15335
15336 [THEN]
15337
15338
15339
15340
15341
15342 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
15343
15344 [DEFINED] ASM [IF]
15345
15346 MARKER {RC5TOLCD}
15347
15348 [UNDEFINED] MAX [IF]
15349
15350 CODE MAX
15351     CMP @R15,R14
15352     S<  ?GOTO FW1
15353 BW1 ADD #2,R15
15354     MOV @R13+,R0
15355 ENDCODE
15356
15357
15358 CODE MIN
15359     CMP @R15,R14
15360     S<  ?GOTO BW1
15361 FW1 MOV @R15+,R14
15362     MOV @R13+,R0
15363 ENDCODE
15364
15365 [THEN]
15366
15367
15368 [UNDEFINED] U.R [IF]
15369 : U.R
15370   >R  <# 0 # #S #>  
15371   R> OVER - 0 MAX SPACES TYPE
15372 ;
15373 [THEN]
15374
15375
15376
15377 CODE 20_US
15378 BEGIN
15379     BEGIN
15380         BIT #1,&$3C0
15381     0<> UNTIL
15382     BIC #1,&$3C0
15383     SUB #1,R14
15384 U< UNTIL
15385 MOV @R15+,R14
15386 MOV @R13+,R0
15387 ENDCODE
15388
15389
15390 CODE TOP_LCD
15391     BIS.B #4,&$243
15392     BIT.B #1,&$241
15393 0= IF
15394     AND.B #$0F,R14
15395     MOV.B R14,&$222
15396     BIC.B #4,&$243
15397     MOV @R15+,R14
15398     MOV @R13+,R0
15399 THEN
15400     SUB #2,R15
15401     MOV R14,0(R15)
15402     BIC.B #4,&$243
15403     MOV.B &$220,R14
15404     AND.B #$0F,R14
15405     MOV @R13+,R0
15406 ENDCODE
15407
15408
15409 CODE LCD_W
15410     SUB #2,R15
15411     MOV R14,0(R15)
15412     RRUM #4,R14
15413     BIC.B #1,&$243
15414     BIS.B #$0F,&$224
15415 COLON
15416     TOP_LCD 2 20_US
15417     TOP_LCD 2 20_US 
15418 ;
15419
15420
15421 CODE LCD_WrC
15422     BIS.B #2,&$243
15423     JMP LCD_W 
15424 ENDCODE
15425
15426
15427 CODE LCD_WrF
15428     BIC.B #2,&$243
15429     JMP LCD_W 
15430 ENDCODE
15431
15432
15433 : LCD_Clear 
15434     $01 LCD_WrF 100 20_us
15435 ;
15436
15437
15438 : LCD_Home 
15439     $02 LCD_WrF 100 20_us 
15440 ;
15441
15442
15443 [UNDEFINED] OR [IF]
15444
15445 CODE OR
15446 BIS @R15+,R14
15447 MOV @R13+,R0
15448 ENDCODE
15449
15450
15451 [THEN]
15452
15453 : LCD_Entry_set     $04 OR LCD_WrF ;
15454
15455 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
15456
15457 : LCD_DSP_Shift     $10 OR LCD_WrF ;
15458
15459 : LCD_Fn_Set        $20 OR LCD_WrF ;
15460
15461 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
15462
15463 : LCD_Goto          $80 OR LCD_WrF ;
15464
15465 CODE LCD_R
15466     BIC.B #$0F,&$224
15467     BIS.B #1,&$243
15468 COLON
15469     TOP_LCD 2 20_us
15470     TOP_LCD 2 20_us
15471 HI2LO
15472     RLAM #4,0(R15)
15473     ADD.B @R15+,R14
15474     MOV @R1+,R13
15475     MOV @R13+,R0
15476 ENDCODE
15477
15478
15479 CODE LCD_RdS
15480     BIC.B #2,&$243
15481     JMP LCD_R
15482 ENDCODE
15483
15484
15485 CODE LCD_RdC
15486     BIS.B #2,&$243
15487     JMP LCD_R
15488 ENDCODE
15489
15490
15491
15492 ASM WDT_INT
15493 BIT.B #$20,&$240
15494 0= IF
15495     CMP #19,&$3D6
15496     U< IF
15497         ADD #1,&$3D6
15498     THEN
15499 ELSE
15500     BIT.B #$40,&$240
15501     0= IF
15502         CMP #3,&$3D6
15503         U>= IF
15504            SUB #1,&$3D6
15505         THEN
15506     THEN
15507 THEN
15508 BW1
15509 BW2
15510 BW3
15511 BIC #$78,0(R1)
15512 RETI
15513 ENDASM
15514
15515
15516 ASM RC5_INT
15517   MOV #1,&$3A0
15518 MOV #1778,R9
15519 MOV #14,R10
15520 BEGIN
15521 MOV #%1011100100,&$380
15522     RRUM    #1,R9
15523     MOV     R9,R8
15524     RRUM    #1,R8
15525     ADD     R9,R8
15526     BEGIN   CMP R8,&$390
15527     U>= UNTIL
15528     BIT.B   #4,&$200
15529     ADDC    R11,R11
15530     MOV.B   &$200,&$208
15531     BIC.B   #4,&$20C
15532     SUB     #1,R10
15533 0<> WHILE
15534     ADD R9,R8
15535     BEGIN
15536         MOV &$390,R9
15537         CMP R8,R9
15538         U>= IF
15539         BIC #$30,&$380
15540         GOTO BW1
15541         THEN
15542         BIT.B #4,&$20C
15543     0<> UNTIL
15544 REPEAT
15545 BIC #$30,&$380
15546 RLAM    #1,R11
15547 MOV.B   R11,R9
15548 RRUM    #2,R9
15549 BIT     #$4000,R11
15550 0= IF   BIS #$40,R9
15551 THEN
15552 RRUM    #3,R11
15553 XOR     @R1,R11
15554 BIT     #$400,R11
15555 0= ?GOTO BW2
15556 XOR #$400,0(R1)
15557 SUB #4,R15
15558 MOV &BASE,2(R15)
15559 MOV #$10,&BASE
15560 MOV R14,0(R15)
15561 MOV R9,R14
15562 LO2HI
15563     ['] LCD_CLEAR IS CR
15564     ['] LCD_WrC  IS EMIT
15565     CR ." $" 2 U.R
15566     ['] CR >BODY IS CR
15567     ['] EMIT >BODY IS EMIT
15568 HI2LO
15569 MOV R14,&BASE
15570 MOV @R15+,R14
15571 GOTO BW3
15572 ENDASM
15573
15574
15575 ASM BACKGROUND
15576 MOV #SLEEP,R9
15577 ADD #4,R9
15578 MOV R9,R0
15579 ENDASM
15580
15581
15582 CODE START
15583     MOV #%1011010100,&$3C0
15584     MOV #1,&$3E0
15585     MOV #19,&$3D2
15586     MOV #%01100000,&$3C6
15587     MOV #10,&$3D6
15588     BIS.B #$20,&$204
15589     BIS.B #$20,&$20A
15590     BIS.B #7,&$245
15591     BIC.B #7,&$247
15592     BIS.B #$0F,&$224
15593     BIC.B #$0F,&$226
15594     BIS.B #4,&$20A
15595     BIC.B #4,&$20C
15596     MOV #RC5_INT,&$FFDE
15597     MOV #%0100010100,&$340
15598     MOV ##1638,&$352
15599     MOV #%10000,&$342
15600     MOV #WDT_INT,&$FFEA
15601
15602     MOV #SLEEP,R9
15603     MOV #BACKGROUND,2(R9)
15604
15605 LO2HI
15606
15607     $03E8 20_US
15608     $03 TOP_LCD
15609     $CD 20_US
15610     $03 TOP_LCD
15611     $5 20_US
15612     $03 TOP_LCD
15613     $2 20_US
15614     $02 TOP_LCD
15615     $2 20_US
15616     $28 LCD_WRF
15617     $08 LCD_WRF
15618     LCD_Clear
15619     $06 LCD_WRF
15620     $0C LCD_WRF
15621     LCD_Clear
15622     ['] LCD_HOME IS CR
15623     ['] LCD_WRC  IS EMIT
15624     CR ." I love you"   
15625     ['] CR >BODY IS CR
15626     ['] EMIT >BODY IS EMIT
15627     ." RC5toLCD is running. Type STOP to quit"
15628     LIT RECURSE IS WARM
15629     ABORT
15630 ;
15631
15632
15633 CODE STOP
15634     MOV #SLEEP,R9
15635     ADD #4,R9
15636     MOV R9,-2(R9)
15637
15638 COLON
15639     ['] WARM >BODY IS WARM
15640
15641     COLD
15642 ;
15643
15644
15645
15646             ; downloading RC5toLCD.4th is done
15647 RST_HERE    ; this app is protected against <reset>
15648
15649 [THEN]
15650
15651
15652
15653
15654
15655 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
15656
15657 [DEFINED] ASM [IF]
15658
15659 MARKER {RC5TOLCD}
15660
15661 [UNDEFINED] MAX [IF]
15662
15663 CODE MAX
15664     CMP @R15,R14
15665     S<  ?GOTO FW1
15666 BW1 ADD #2,R15
15667     MOV @R13+,R0
15668 ENDCODE
15669
15670
15671 CODE MIN
15672     CMP @R15,R14
15673     S<  ?GOTO BW1
15674 FW1 MOV @R15+,R14
15675     MOV @R13+,R0
15676 ENDCODE
15677
15678 [THEN]
15679
15680
15681 [UNDEFINED] U.R [IF]
15682 : U.R
15683   >R  <# 0 # #S #>  
15684   R> OVER - 0 MAX SPACES TYPE
15685 ;
15686 [THEN]
15687
15688
15689
15690 CODE 20_US
15691 BEGIN
15692     BEGIN
15693         BIT #1,&$3C0
15694     0<> UNTIL
15695     BIC #1,&$3C0
15696     SUB #1,R14
15697 U< UNTIL
15698 MOV @R15+,R14
15699 MOV @R13+,R0
15700 ENDCODE
15701
15702
15703 CODE TOP_LCD
15704     BIS.B #4,&$243
15705     BIT.B #1,&$241
15706 0= IF
15707     AND.B #$0F,R14
15708     MOV.B R14,&$222
15709     BIC.B #4,&$243
15710     MOV @R15+,R14
15711     MOV @R13+,R0
15712 THEN
15713     SUB #2,R15
15714     MOV R14,0(R15)
15715     BIC.B #4,&$243
15716     MOV.B &$220,R14
15717     AND.B #$0F,R14
15718     MOV @R13+,R0
15719 ENDCODE
15720
15721
15722 CODE LCD_W
15723     SUB #2,R15
15724     MOV R14,0(R15)
15725     RRUM #4,R14
15726     BIC.B #1,&$243
15727     BIS.B #$0F,&$224
15728 COLON
15729     TOP_LCD 2 20_US
15730     TOP_LCD 2 20_US 
15731 ;
15732
15733
15734 CODE LCD_WrC
15735     BIS.B #2,&$243
15736     JMP LCD_W 
15737 ENDCODE
15738
15739
15740 CODE LCD_WrF
15741     BIC.B #2,&$243
15742     JMP LCD_W 
15743 ENDCODE
15744
15745
15746 : LCD_Clear 
15747     $01 LCD_WrF 100 20_us
15748 ;
15749
15750
15751 : LCD_Home 
15752     $02 LCD_WrF 100 20_us 
15753 ;
15754
15755
15756 [UNDEFINED] OR [IF]
15757
15758 CODE OR
15759 BIS @R15+,R14
15760 MOV @R13+,R0
15761 ENDCODE
15762
15763
15764 [THEN]
15765
15766 : LCD_Entry_set     $04 OR LCD_WrF ;
15767
15768 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
15769
15770 : LCD_DSP_Shift     $10 OR LCD_WrF ;
15771
15772 : LCD_Fn_Set        $20 OR LCD_WrF ;
15773
15774 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
15775
15776 : LCD_Goto          $80 OR LCD_WrF ;
15777
15778 CODE LCD_R
15779     BIC.B #$0F,&$224
15780     BIS.B #1,&$243
15781 COLON
15782     TOP_LCD 2 20_us
15783     TOP_LCD 2 20_us
15784 HI2LO
15785     RLAM #4,0(R15)
15786     ADD.B @R15+,R14
15787     MOV @R1+,R13
15788     MOV @R13+,R0
15789 ENDCODE
15790
15791
15792 CODE LCD_RdS
15793     BIC.B #2,&$243
15794     JMP LCD_R
15795 ENDCODE
15796
15797
15798 CODE LCD_RdC
15799     BIS.B #2,&$243
15800     JMP LCD_R
15801 ENDCODE
15802
15803
15804
15805 ASM WDT_INT
15806 BIT.B #$20,&$240
15807 0= IF
15808     CMP #19,&$3D6
15809     U< IF
15810         ADD #1,&$3D6
15811     THEN
15812 ELSE
15813     BIT.B #$40,&$240
15814     0= IF
15815         CMP #3,&$3D6
15816         U>= IF
15817            SUB #1,&$3D6
15818         THEN
15819     THEN
15820 THEN
15821 BW1
15822 BW2
15823 BW3
15824 BIC #$78,0(R1)
15825 RETI
15826 ENDASM
15827
15828
15829 ASM RC5_INT
15830   MOV #1,&$3A0
15831 MOV #1778,R9
15832 MOV #14,R10
15833 BEGIN
15834 MOV #%1011100100,&$380
15835     RRUM    #1,R9
15836     MOV     R9,R8
15837     RRUM    #1,R8
15838     ADD     R9,R8
15839     BEGIN   CMP R8,&$390
15840     U>= UNTIL
15841     BIT.B   #4,&$200
15842     ADDC    R11,R11
15843     MOV.B   &$200,&$208
15844     BIC.B   #4,&$20C
15845     SUB     #1,R10
15846 0<> WHILE
15847     ADD R9,R8
15848     BEGIN
15849         MOV &$390,R9
15850         CMP R8,R9
15851         U>= IF
15852         BIC #$30,&$380
15853         GOTO BW1
15854         THEN
15855         BIT.B #4,&$20C
15856     0<> UNTIL
15857 REPEAT
15858 BIC #$30,&$380
15859 RLAM    #1,R11
15860 MOV.B   R11,R9
15861 RRUM    #2,R9
15862 BIT     #$4000,R11
15863 0= IF   BIS #$40,R9
15864 THEN
15865 RRUM    #3,R11
15866 XOR     @R1,R11
15867 BIT     #$400,R11
15868 0= ?GOTO BW2
15869 XOR #$400,0(R1)
15870 SUB #4,R15
15871 MOV &BASE,2(R15)
15872 MOV #$10,&BASE
15873 MOV R14,0(R15)
15874 MOV R9,R14
15875 LO2HI
15876     ['] LCD_CLEAR IS CR
15877     ['] LCD_WrC  IS EMIT
15878     CR ." $" 2 U.R
15879     ['] CR >BODY IS CR
15880     ['] EMIT >BODY IS EMIT
15881 HI2LO
15882 MOV R14,&BASE
15883 MOV @R15+,R14
15884 GOTO BW3
15885 ENDASM
15886
15887
15888 ASM BACKGROUND
15889 MOV #SLEEP,R9
15890 ADD #4,R9
15891 MOV R9,R0
15892 ENDASM
15893
15894
15895 CODE START
15896     MOV #%1011010100,&$3C0
15897     MOV #1,&$3E0
15898     MOV #19,&$3D2
15899     MOV #%01100000,&$3C6
15900     MOV #10,&$3D6
15901     BIS.B #$20,&$204
15902     BIS.B #$20,&$20A
15903     BIS.B #7,&$245
15904     BIC.B #7,&$247
15905     BIS.B #$0F,&$224
15906     BIC.B #$0F,&$226
15907     BIS.B #4,&$20A
15908     BIC.B #4,&$20C
15909     MOV #RC5_INT,&$FFDE
15910     MOV #%0100010100,&$340
15911     MOV ##1638,&$352
15912     MOV #%10000,&$342
15913     MOV #WDT_INT,&$FFEA
15914
15915     MOV #SLEEP,R9
15916     MOV #BACKGROUND,2(R9)
15917
15918 LO2HI
15919
15920     $03E8 20_US
15921     $03 TOP_LCD
15922     $CD 20_US
15923     $03 TOP_LCD
15924     $5 20_US
15925     $03 TOP_LCD
15926     $2 20_US
15927     $02 TOP_LCD
15928     $2 20_US
15929     $28 LCD_WRF
15930     $08 LCD_WRF
15931     LCD_Clear
15932     $06 LCD_WRF
15933     $0C LCD_WRF
15934     LCD_Clear
15935     ['] LCD_HOME IS CR
15936     ['] LCD_WRC  IS EMIT
15937     CR ." I love you"   
15938     ['] CR >BODY IS CR
15939     ['] EMIT >BODY IS EMIT
15940     ." RC5toLCD is running. Type STOP to quit"
15941     LIT RECURSE IS WARM
15942     ABORT
15943 ;
15944
15945
15946 CODE STOP
15947     MOV #SLEEP,R9
15948     ADD #4,R9
15949     MOV R9,-2(R9)
15950
15951 COLON
15952     ['] WARM >BODY IS WARM
15953
15954     COLD
15955 ;
15956
15957
15958
15959             ; downloading RC5toLCD.4th is done
15960 RST_HERE    ; this app is protected against <reset>
15961
15962 [THEN]
15963
15964
15965
15966
15967
15968 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
15969
15970 [DEFINED] ASM [IF]
15971
15972 MARKER {RC5TOLCD}
15973
15974 [UNDEFINED] MAX [IF]
15975
15976 CODE MAX
15977     CMP @R15,R14
15978     S<  ?GOTO FW1
15979 BW1 ADD #2,R15
15980     MOV @R13+,R0
15981 ENDCODE
15982
15983
15984 CODE MIN
15985     CMP @R15,R14
15986     S<  ?GOTO BW1
15987 FW1 MOV @R15+,R14
15988     MOV @R13+,R0
15989 ENDCODE
15990
15991 [THEN]
15992
15993
15994 [UNDEFINED] U.R [IF]
15995 : U.R
15996   >R  <# 0 # #S #>  
15997   R> OVER - 0 MAX SPACES TYPE
15998 ;
15999 [THEN]
16000
16001
16002
16003 CODE 20_US
16004 BEGIN
16005     BEGIN
16006         BIT #1,&$3C0
16007     0<> UNTIL
16008     BIC #1,&$3C0
16009     SUB #1,R14
16010 U< UNTIL
16011 MOV @R15+,R14
16012 MOV @R13+,R0
16013 ENDCODE
16014
16015
16016 CODE TOP_LCD
16017     BIS.B #4,&$243
16018     BIT.B #1,&$241
16019 0= IF
16020     AND.B #$0F,R14
16021     MOV.B R14,&$222
16022     BIC.B #4,&$243
16023     MOV @R15+,R14
16024     MOV @R13+,R0
16025 THEN
16026     SUB #2,R15
16027     MOV R14,0(R15)
16028     BIC.B #4,&$243
16029     MOV.B &$220,R14
16030     AND.B #$0F,R14
16031     MOV @R13+,R0
16032 ENDCODE
16033
16034
16035 CODE LCD_W
16036     SUB #2,R15
16037     MOV R14,0(R15)
16038     RRUM #4,R14
16039     BIC.B #1,&$243
16040     BIS.B #$0F,&$224
16041 COLON
16042     TOP_LCD 2 20_US
16043     TOP_LCD 2 20_US 
16044 ;
16045
16046
16047 CODE LCD_WrC
16048     BIS.B #2,&$243
16049     JMP LCD_W 
16050 ENDCODE
16051
16052
16053 CODE LCD_WrF
16054     BIC.B #2,&$243
16055     JMP LCD_W 
16056 ENDCODE
16057
16058
16059 : LCD_Clear 
16060     $01 LCD_WrF 100 20_us
16061 ;
16062
16063
16064 : LCD_Home 
16065     $02 LCD_WrF 100 20_us 
16066 ;
16067
16068
16069 [UNDEFINED] OR [IF]
16070
16071 CODE OR
16072 BIS @R15+,R14
16073 MOV @R13+,R0
16074 ENDCODE
16075
16076
16077 [THEN]
16078
16079 : LCD_Entry_set     $04 OR LCD_WrF ;
16080
16081 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
16082
16083 : LCD_DSP_Shift     $10 OR LCD_WrF ;
16084
16085 : LCD_Fn_Set        $20 OR LCD_WrF ;
16086
16087 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
16088
16089 : LCD_Goto          $80 OR LCD_WrF ;
16090
16091 CODE LCD_R
16092     BIC.B #$0F,&$224
16093     BIS.B #1,&$243
16094 COLON
16095     TOP_LCD 2 20_us
16096     TOP_LCD 2 20_us
16097 HI2LO
16098     RLAM #4,0(R15)
16099     ADD.B @R15+,R14
16100     MOV @R1+,R13
16101     MOV @R13+,R0
16102 ENDCODE
16103
16104
16105 CODE LCD_RdS
16106     BIC.B #2,&$243
16107     JMP LCD_R
16108 ENDCODE
16109
16110
16111 CODE LCD_RdC
16112     BIS.B #2,&$243
16113     JMP LCD_R
16114 ENDCODE
16115
16116
16117
16118 ASM WDT_INT
16119 BIT.B #$20,&$240
16120 0= IF
16121     CMP #19,&$3D6
16122     U< IF
16123         ADD #1,&$3D6
16124     THEN
16125 ELSE
16126     BIT.B #$40,&$240
16127     0= IF
16128         CMP #3,&$3D6
16129         U>= IF
16130            SUB #1,&$3D6
16131         THEN
16132     THEN
16133 THEN
16134 BW1
16135 BW2
16136 BW3
16137 BIC #$78,0(R1)
16138 RETI
16139 ENDASM
16140
16141
16142 ASM RC5_INT
16143   MOV #1,&$3A0
16144 MOV #1778,R9
16145 MOV #14,R10
16146 BEGIN
16147 MOV #%1011100100,&$380
16148     RRUM    #1,R9
16149     MOV     R9,R8
16150     RRUM    #1,R8
16151     ADD     R9,R8
16152     BEGIN   CMP R8,&$390
16153     U>= UNTIL
16154     BIT.B   #4,&$200
16155     ADDC    R11,R11
16156     MOV.B   &$200,&$208
16157     BIC.B   #4,&$20C
16158     SUB     #1,R10
16159 0<> WHILE
16160     ADD R9,R8
16161     BEGIN
16162         MOV &$390,R9
16163         CMP R8,R9
16164         U>= IF
16165         BIC #$30,&$380
16166         GOTO BW1
16167         THEN
16168         BIT.B #4,&$20C
16169     0<> UNTIL
16170 REPEAT
16171 BIC #$30,&$380
16172 RLAM    #1,R11
16173 MOV.B   R11,R9
16174 RRUM    #2,R9
16175 BIT     #$4000,R11
16176 0= IF   BIS #$40,R9
16177 THEN
16178 RRUM    #3,R11
16179 XOR     @R1,R11
16180 BIT     #$400,R11
16181 0= ?GOTO BW2
16182 XOR #$400,0(R1)
16183 SUB #4,R15
16184 MOV &BASE,2(R15)
16185 MOV #$10,&BASE
16186 MOV R14,0(R15)
16187 MOV R9,R14
16188 LO2HI
16189     ['] LCD_CLEAR IS CR
16190     ['] LCD_WrC  IS EMIT
16191     CR ." $" 2 U.R
16192     ['] CR >BODY IS CR
16193     ['] EMIT >BODY IS EMIT
16194 HI2LO
16195 MOV R14,&BASE
16196 MOV @R15+,R14
16197 GOTO BW3
16198 ENDASM
16199
16200
16201 ASM BACKGROUND
16202 MOV #SLEEP,R9
16203 ADD #4,R9
16204 MOV R9,R0
16205 ENDASM
16206
16207
16208 CODE START
16209     MOV #%1011010100,&$3C0
16210     MOV #1,&$3E0
16211     MOV #19,&$3D2
16212     MOV #%01100000,&$3C6
16213     MOV #10,&$3D6
16214     BIS.B #$20,&$204
16215     BIS.B #$20,&$20A
16216     BIS.B #7,&$245
16217     BIC.B #7,&$247
16218     BIS.B #$0F,&$224
16219     BIC.B #$0F,&$226
16220     BIS.B #4,&$20A
16221     BIC.B #4,&$20C
16222     MOV #RC5_INT,&$FFDE
16223     MOV #%0100010100,&$340
16224     MOV ##1638,&$352
16225     MOV #%10000,&$342
16226     MOV #WDT_INT,&$FFEA
16227
16228     MOV #SLEEP,R9
16229     MOV #BACKGROUND,2(R9)
16230
16231 LO2HI
16232
16233     $03E8 20_US
16234     $03 TOP_LCD
16235     $CD 20_US
16236     $03 TOP_LCD
16237     $5 20_US
16238     $03 TOP_LCD
16239     $2 20_US
16240     $02 TOP_LCD
16241     $2 20_US
16242     $28 LCD_WRF
16243     $08 LCD_WRF
16244     LCD_Clear
16245     $06 LCD_WRF
16246     $0C LCD_WRF
16247     LCD_Clear
16248     ['] LCD_HOME IS CR
16249     ['] LCD_WRC  IS EMIT
16250     CR ." I love you"   
16251     ['] CR >BODY IS CR
16252     ['] EMIT >BODY IS EMIT
16253     ." RC5toLCD is running. Type STOP to quit"
16254     LIT RECURSE IS WARM
16255     ABORT
16256 ;
16257
16258
16259 CODE STOP
16260     MOV #SLEEP,R9
16261     ADD #4,R9
16262     MOV R9,-2(R9)
16263
16264 COLON
16265     ['] WARM >BODY IS WARM
16266
16267     COLD
16268 ;
16269
16270
16271
16272             ; downloading RC5toLCD.4th is done
16273 RST_HERE    ; this app is protected against <reset>
16274
16275 [THEN]
16276
16277
16278
16279
16280
16281 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
16282
16283 [DEFINED] ASM [IF]
16284
16285 MARKER {RC5TOLCD}
16286
16287 [UNDEFINED] MAX [IF]
16288
16289 CODE MAX
16290     CMP @R15,R14
16291     S<  ?GOTO FW1
16292 BW1 ADD #2,R15
16293     MOV @R13+,R0
16294 ENDCODE
16295
16296
16297 CODE MIN
16298     CMP @R15,R14
16299     S<  ?GOTO BW1
16300 FW1 MOV @R15+,R14
16301     MOV @R13+,R0
16302 ENDCODE
16303
16304 [THEN]
16305
16306
16307 [UNDEFINED] U.R [IF]
16308 : U.R
16309   >R  <# 0 # #S #>  
16310   R> OVER - 0 MAX SPACES TYPE
16311 ;
16312 [THEN]
16313
16314
16315
16316 CODE 20_US
16317 BEGIN
16318     BEGIN
16319         BIT #1,&$3C0
16320     0<> UNTIL
16321     BIC #1,&$3C0
16322     SUB #1,R14
16323 U< UNTIL
16324 MOV @R15+,R14
16325 MOV @R13+,R0
16326 ENDCODE
16327
16328
16329 CODE TOP_LCD
16330     BIS.B #4,&$243
16331     BIT.B #1,&$241
16332 0= IF
16333     AND.B #$0F,R14
16334     MOV.B R14,&$222
16335     BIC.B #4,&$243
16336     MOV @R15+,R14
16337     MOV @R13+,R0
16338 THEN
16339     SUB #2,R15
16340     MOV R14,0(R15)
16341     BIC.B #4,&$243
16342     MOV.B &$220,R14
16343     AND.B #$0F,R14
16344     MOV @R13+,R0
16345 ENDCODE
16346
16347
16348 CODE LCD_W
16349     SUB #2,R15
16350     MOV R14,0(R15)
16351     RRUM #4,R14
16352     BIC.B #1,&$243
16353     BIS.B #$0F,&$224
16354 COLON
16355     TOP_LCD 2 20_US
16356     TOP_LCD 2 20_US 
16357 ;
16358
16359
16360 CODE LCD_WrC
16361     BIS.B #2,&$243
16362     JMP LCD_W 
16363 ENDCODE
16364
16365
16366 CODE LCD_WrF
16367     BIC.B #2,&$243
16368     JMP LCD_W 
16369 ENDCODE
16370
16371
16372 : LCD_Clear 
16373     $01 LCD_WrF 100 20_us
16374 ;
16375
16376
16377 : LCD_Home 
16378     $02 LCD_WrF 100 20_us 
16379 ;
16380
16381
16382 [UNDEFINED] OR [IF]
16383
16384 CODE OR
16385 BIS @R15+,R14
16386 MOV @R13+,R0
16387 ENDCODE
16388
16389
16390 [THEN]
16391
16392 : LCD_Entry_set     $04 OR LCD_WrF ;
16393
16394 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
16395
16396 : LCD_DSP_Shift     $10 OR LCD_WrF ;
16397
16398 : LCD_Fn_Set        $20 OR LCD_WrF ;
16399
16400 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
16401
16402 : LCD_Goto          $80 OR LCD_WrF ;
16403
16404 CODE LCD_R
16405     BIC.B #$0F,&$224
16406     BIS.B #1,&$243
16407 COLON
16408     TOP_LCD 2 20_us
16409     TOP_LCD 2 20_us
16410 HI2LO
16411     RLAM #4,0(R15)
16412     ADD.B @R15+,R14
16413     MOV @R1+,R13
16414     MOV @R13+,R0
16415 ENDCODE
16416
16417
16418 CODE LCD_RdS
16419     BIC.B #2,&$243
16420     JMP LCD_R
16421 ENDCODE
16422
16423
16424 CODE LCD_RdC
16425     BIS.B #2,&$243
16426     JMP LCD_R
16427 ENDCODE
16428
16429
16430
16431 ASM WDT_INT
16432 BIT.B #$20,&$240
16433 0= IF
16434     CMP #19,&$3D6
16435     U< IF
16436         ADD #1,&$3D6
16437     THEN
16438 ELSE
16439     BIT.B #$40,&$240
16440     0= IF
16441         CMP #3,&$3D6
16442         U>= IF
16443            SUB #1,&$3D6
16444         THEN
16445     THEN
16446 THEN
16447 BW1
16448 BW2
16449 BW3
16450 BIC #$78,0(R1)
16451 RETI
16452 ENDASM
16453
16454
16455 ASM RC5_INT
16456   MOV #1,&$3A0
16457 MOV #1778,R9
16458 MOV #14,R10
16459 BEGIN
16460 MOV #%1011100100,&$380
16461     RRUM    #1,R9
16462     MOV     R9,R8
16463     RRUM    #1,R8
16464     ADD     R9,R8
16465     BEGIN   CMP R8,&$390
16466     U>= UNTIL
16467     BIT.B   #4,&$200
16468     ADDC    R11,R11
16469     MOV.B   &$200,&$208
16470     BIC.B   #4,&$20C
16471     SUB     #1,R10
16472 0<> WHILE
16473     ADD R9,R8
16474     BEGIN
16475         MOV &$390,R9
16476         CMP R8,R9
16477         U>= IF
16478         BIC #$30,&$380
16479         GOTO BW1
16480         THEN
16481         BIT.B #4,&$20C
16482     0<> UNTIL
16483 REPEAT
16484 BIC #$30,&$380
16485 RLAM    #1,R11
16486 MOV.B   R11,R9
16487 RRUM    #2,R9
16488 BIT     #$4000,R11
16489 0= IF   BIS #$40,R9
16490 THEN
16491 RRUM    #3,R11
16492 XOR     @R1,R11
16493 BIT     #$400,R11
16494 0= ?GOTO BW2
16495 XOR #$400,0(R1)
16496 SUB #4,R15
16497 MOV &BASE,2(R15)
16498 MOV #$10,&BASE
16499 MOV R14,0(R15)
16500 MOV R9,R14
16501 LO2HI
16502     ['] LCD_CLEAR IS CR
16503     ['] LCD_WrC  IS EMIT
16504     CR ." $" 2 U.R
16505     ['] CR >BODY IS CR
16506     ['] EMIT >BODY IS EMIT
16507 HI2LO
16508 MOV R14,&BASE
16509 MOV @R15+,R14
16510 GOTO BW3
16511 ENDASM
16512
16513
16514 ASM BACKGROUND
16515 MOV #SLEEP,R9
16516 ADD #4,R9
16517 MOV R9,R0
16518 ENDASM
16519
16520
16521 CODE START
16522     MOV #%1011010100,&$3C0
16523     MOV #1,&$3E0
16524     MOV #19,&$3D2
16525     MOV #%01100000,&$3C6
16526     MOV #10,&$3D6
16527     BIS.B #$20,&$204
16528     BIS.B #$20,&$20A
16529     BIS.B #7,&$245
16530     BIC.B #7,&$247
16531     BIS.B #$0F,&$224
16532     BIC.B #$0F,&$226
16533     BIS.B #4,&$20A
16534     BIC.B #4,&$20C
16535     MOV #RC5_INT,&$FFDE
16536     MOV #%0100010100,&$340
16537     MOV ##1638,&$352
16538     MOV #%10000,&$342
16539     MOV #WDT_INT,&$FFEA
16540
16541     MOV #SLEEP,R9
16542     MOV #BACKGROUND,2(R9)
16543
16544 LO2HI
16545
16546     $03E8 20_US
16547     $03 TOP_LCD
16548     $CD 20_US
16549     $03 TOP_LCD
16550     $5 20_US
16551     $03 TOP_LCD
16552     $2 20_US
16553     $02 TOP_LCD
16554     $2 20_US
16555     $28 LCD_WRF
16556     $08 LCD_WRF
16557     LCD_Clear
16558     $06 LCD_WRF
16559     $0C LCD_WRF
16560     LCD_Clear
16561     ['] LCD_HOME IS CR
16562     ['] LCD_WRC  IS EMIT
16563     CR ." I love you"   
16564     ['] CR >BODY IS CR
16565     ['] EMIT >BODY IS EMIT
16566     ." RC5toLCD is running. Type STOP to quit"
16567     LIT RECURSE IS WARM
16568     ABORT
16569 ;
16570
16571
16572 CODE STOP
16573     MOV #SLEEP,R9
16574     ADD #4,R9
16575     MOV R9,-2(R9)
16576
16577 COLON
16578     ['] WARM >BODY IS WARM
16579
16580     COLD
16581 ;
16582
16583
16584
16585             ; downloading RC5toLCD.4th is done
16586 RST_HERE    ; this app is protected against <reset>
16587
16588 [THEN]
16589
16590
16591
16592
16593
16594 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
16595
16596 [DEFINED] ASM [IF]
16597
16598 MARKER {RC5TOLCD}
16599
16600 [UNDEFINED] MAX [IF]
16601
16602 CODE MAX
16603     CMP @R15,R14
16604     S<  ?GOTO FW1
16605 BW1 ADD #2,R15
16606     MOV @R13+,R0
16607 ENDCODE
16608
16609
16610 CODE MIN
16611     CMP @R15,R14
16612     S<  ?GOTO BW1
16613 FW1 MOV @R15+,R14
16614     MOV @R13+,R0
16615 ENDCODE
16616
16617 [THEN]
16618
16619
16620 [UNDEFINED] U.R [IF]
16621 : U.R
16622   >R  <# 0 # #S #>  
16623   R> OVER - 0 MAX SPACES TYPE
16624 ;
16625 [THEN]
16626
16627
16628
16629 CODE 20_US
16630 BEGIN
16631     BEGIN
16632         BIT #1,&$3C0
16633     0<> UNTIL
16634     BIC #1,&$3C0
16635     SUB #1,R14
16636 U< UNTIL
16637 MOV @R15+,R14
16638 MOV @R13+,R0
16639 ENDCODE
16640
16641
16642 CODE TOP_LCD
16643     BIS.B #4,&$243
16644     BIT.B #1,&$241
16645 0= IF
16646     AND.B #$0F,R14
16647     MOV.B R14,&$222
16648     BIC.B #4,&$243
16649     MOV @R15+,R14
16650     MOV @R13+,R0
16651 THEN
16652     SUB #2,R15
16653     MOV R14,0(R15)
16654     BIC.B #4,&$243
16655     MOV.B &$220,R14
16656     AND.B #$0F,R14
16657     MOV @R13+,R0
16658 ENDCODE
16659
16660
16661 CODE LCD_W
16662     SUB #2,R15
16663     MOV R14,0(R15)
16664     RRUM #4,R14
16665     BIC.B #1,&$243
16666     BIS.B #$0F,&$224
16667 COLON
16668     TOP_LCD 2 20_US
16669     TOP_LCD 2 20_US 
16670 ;
16671
16672
16673 CODE LCD_WrC
16674     BIS.B #2,&$243
16675     JMP LCD_W 
16676 ENDCODE
16677
16678
16679 CODE LCD_WrF
16680     BIC.B #2,&$243
16681     JMP LCD_W 
16682 ENDCODE
16683
16684
16685 : LCD_Clear 
16686     $01 LCD_WrF 100 20_us
16687 ;
16688
16689
16690 : LCD_Home 
16691     $02 LCD_WrF 100 20_us 
16692 ;
16693
16694
16695 [UNDEFINED] OR [IF]
16696
16697 CODE OR
16698 BIS @R15+,R14
16699 MOV @R13+,R0
16700 ENDCODE
16701
16702
16703 [THEN]
16704
16705 : LCD_Entry_set     $04 OR LCD_WrF ;
16706
16707 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
16708
16709 : LCD_DSP_Shift     $10 OR LCD_WrF ;
16710
16711 : LCD_Fn_Set        $20 OR LCD_WrF ;
16712
16713 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
16714
16715 : LCD_Goto          $80 OR LCD_WrF ;
16716
16717 CODE LCD_R
16718     BIC.B #$0F,&$224
16719     BIS.B #1,&$243
16720 COLON
16721     TOP_LCD 2 20_us
16722     TOP_LCD 2 20_us
16723 HI2LO
16724     RLAM #4,0(R15)
16725     ADD.B @R15+,R14
16726     MOV @R1+,R13
16727     MOV @R13+,R0
16728 ENDCODE
16729
16730
16731 CODE LCD_RdS
16732     BIC.B #2,&$243
16733     JMP LCD_R
16734 ENDCODE
16735
16736
16737 CODE LCD_RdC
16738     BIS.B #2,&$243
16739     JMP LCD_R
16740 ENDCODE
16741
16742
16743
16744 ASM WDT_INT
16745 BIT.B #$20,&$240
16746 0= IF
16747     CMP #19,&$3D6
16748     U< IF
16749         ADD #1,&$3D6
16750     THEN
16751 ELSE
16752     BIT.B #$40,&$240
16753     0= IF
16754         CMP #3,&$3D6
16755         U>= IF
16756            SUB #1,&$3D6
16757         THEN
16758     THEN
16759 THEN
16760 BW1
16761 BW2
16762 BW3
16763 BIC #$78,0(R1)
16764 RETI
16765 ENDASM
16766
16767
16768 ASM RC5_INT
16769   MOV #1,&$3A0
16770 MOV #1778,R9
16771 MOV #14,R10
16772 BEGIN
16773 MOV #%1011100100,&$380
16774     RRUM    #1,R9
16775     MOV     R9,R8
16776     RRUM    #1,R8
16777     ADD     R9,R8
16778     BEGIN   CMP R8,&$390
16779     U>= UNTIL
16780     BIT.B   #4,&$200
16781     ADDC    R11,R11
16782     MOV.B   &$200,&$208
16783     BIC.B   #4,&$20C
16784     SUB     #1,R10
16785 0<> WHILE
16786     ADD R9,R8
16787     BEGIN
16788         MOV &$390,R9
16789         CMP R8,R9
16790         U>= IF
16791         BIC #$30,&$380
16792         GOTO BW1
16793         THEN
16794         BIT.B #4,&$20C
16795     0<> UNTIL
16796 REPEAT
16797 BIC #$30,&$380
16798 RLAM    #1,R11
16799 MOV.B   R11,R9
16800 RRUM    #2,R9
16801 BIT     #$4000,R11
16802 0= IF   BIS #$40,R9
16803 THEN
16804 RRUM    #3,R11
16805 XOR     @R1,R11
16806 BIT     #$400,R11
16807 0= ?GOTO BW2
16808 XOR #$400,0(R1)
16809 SUB #4,R15
16810 MOV &BASE,2(R15)
16811 MOV #$10,&BASE
16812 MOV R14,0(R15)
16813 MOV R9,R14
16814 LO2HI
16815     ['] LCD_CLEAR IS CR
16816     ['] LCD_WrC  IS EMIT
16817     CR ." $" 2 U.R
16818     ['] CR >BODY IS CR
16819     ['] EMIT >BODY IS EMIT
16820 HI2LO
16821 MOV R14,&BASE
16822 MOV @R15+,R14
16823 GOTO BW3
16824 ENDASM
16825
16826
16827 ASM BACKGROUND
16828 MOV #SLEEP,R9
16829 ADD #4,R9
16830 MOV R9,R0
16831 ENDASM
16832
16833
16834 CODE START
16835     MOV #%1011010100,&$3C0
16836     MOV #1,&$3E0
16837     MOV #19,&$3D2
16838     MOV #%01100000,&$3C6
16839     MOV #10,&$3D6
16840     BIS.B #$20,&$204
16841     BIS.B #$20,&$20A
16842     BIS.B #7,&$245
16843     BIC.B #7,&$247
16844     BIS.B #$0F,&$224
16845     BIC.B #$0F,&$226
16846     BIS.B #4,&$20A
16847     BIC.B #4,&$20C
16848     MOV #RC5_INT,&$FFDE
16849     MOV #%0100010100,&$340
16850     MOV ##1638,&$352
16851     MOV #%10000,&$342
16852     MOV #WDT_INT,&$FFEA
16853
16854     MOV #SLEEP,R9
16855     MOV #BACKGROUND,2(R9)
16856
16857 LO2HI
16858
16859     $03E8 20_US
16860     $03 TOP_LCD
16861     $CD 20_US
16862     $03 TOP_LCD
16863     $5 20_US
16864     $03 TOP_LCD
16865     $2 20_US
16866     $02 TOP_LCD
16867     $2 20_US
16868     $28 LCD_WRF
16869     $08 LCD_WRF
16870     LCD_Clear
16871     $06 LCD_WRF
16872     $0C LCD_WRF
16873     LCD_Clear
16874     ['] LCD_HOME IS CR
16875     ['] LCD_WRC  IS EMIT
16876     CR ." I love you"   
16877     ['] CR >BODY IS CR
16878     ['] EMIT >BODY IS EMIT
16879     ." RC5toLCD is running. Type STOP to quit"
16880     LIT RECURSE IS WARM
16881     ABORT
16882 ;
16883
16884
16885 CODE STOP
16886     MOV #SLEEP,R9
16887     ADD #4,R9
16888     MOV R9,-2(R9)
16889
16890 COLON
16891     ['] WARM >BODY IS WARM
16892
16893     COLD
16894 ;
16895
16896
16897
16898             ; downloading RC5toLCD.4th is done
16899 RST_HERE    ; this app is protected against <reset>
16900
16901 [THEN]
16902
16903
16904
16905
16906
16907 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
16908
16909 [DEFINED] ASM [IF]
16910
16911 MARKER {RC5TOLCD}
16912
16913 [UNDEFINED] MAX [IF]
16914
16915 CODE MAX
16916     CMP @R15,R14
16917     S<  ?GOTO FW1
16918 BW1 ADD #2,R15
16919     MOV @R13+,R0
16920 ENDCODE
16921
16922
16923 CODE MIN
16924     CMP @R15,R14
16925     S<  ?GOTO BW1
16926 FW1 MOV @R15+,R14
16927     MOV @R13+,R0
16928 ENDCODE
16929
16930 [THEN]
16931
16932
16933 [UNDEFINED] U.R [IF]
16934 : U.R
16935   >R  <# 0 # #S #>  
16936   R> OVER - 0 MAX SPACES TYPE
16937 ;
16938 [THEN]
16939
16940
16941
16942 CODE 20_US
16943 BEGIN
16944     BEGIN
16945         BIT #1,&$3C0
16946     0<> UNTIL
16947     BIC #1,&$3C0
16948     SUB #1,R14
16949 U< UNTIL
16950 MOV @R15+,R14
16951 MOV @R13+,R0
16952 ENDCODE
16953
16954
16955 CODE TOP_LCD
16956     BIS.B #4,&$243
16957     BIT.B #1,&$241
16958 0= IF
16959     AND.B #$0F,R14
16960     MOV.B R14,&$222
16961     BIC.B #4,&$243
16962     MOV @R15+,R14
16963     MOV @R13+,R0
16964 THEN
16965     SUB #2,R15
16966     MOV R14,0(R15)
16967     BIC.B #4,&$243
16968     MOV.B &$220,R14
16969     AND.B #$0F,R14
16970     MOV @R13+,R0
16971 ENDCODE
16972
16973
16974 CODE LCD_W
16975     SUB #2,R15
16976     MOV R14,0(R15)
16977     RRUM #4,R14
16978     BIC.B #1,&$243
16979     BIS.B #$0F,&$224
16980 COLON
16981     TOP_LCD 2 20_US
16982     TOP_LCD 2 20_US 
16983 ;
16984
16985
16986 CODE LCD_WrC
16987     BIS.B #2,&$243
16988     JMP LCD_W 
16989 ENDCODE
16990
16991
16992 CODE LCD_WrF
16993     BIC.B #2,&$243
16994     JMP LCD_W 
16995 ENDCODE
16996
16997
16998 : LCD_Clear 
16999     $01 LCD_WrF 100 20_us
17000 ;
17001
17002
17003 : LCD_Home 
17004     $02 LCD_WrF 100 20_us 
17005 ;
17006
17007
17008 [UNDEFINED] OR [IF]
17009
17010 CODE OR
17011 BIS @R15+,R14
17012 MOV @R13+,R0
17013 ENDCODE
17014
17015
17016 [THEN]
17017
17018 : LCD_Entry_set     $04 OR LCD_WrF ;
17019
17020 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
17021
17022 : LCD_DSP_Shift     $10 OR LCD_WrF ;
17023
17024 : LCD_Fn_Set        $20 OR LCD_WrF ;
17025
17026 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
17027
17028 : LCD_Goto          $80 OR LCD_WrF ;
17029
17030 CODE LCD_R
17031     BIC.B #$0F,&$224
17032     BIS.B #1,&$243
17033 COLON
17034     TOP_LCD 2 20_us
17035     TOP_LCD 2 20_us
17036 HI2LO
17037     RLAM #4,0(R15)
17038     ADD.B @R15+,R14
17039     MOV @R1+,R13
17040     MOV @R13+,R0
17041 ENDCODE
17042
17043
17044 CODE LCD_RdS
17045     BIC.B #2,&$243
17046     JMP LCD_R
17047 ENDCODE
17048
17049
17050 CODE LCD_RdC
17051     BIS.B #2,&$243
17052     JMP LCD_R
17053 ENDCODE
17054
17055
17056
17057 ASM WDT_INT
17058 BIT.B #$20,&$240
17059 0= IF
17060     CMP #19,&$3D6
17061     U< IF
17062         ADD #1,&$3D6
17063     THEN
17064 ELSE
17065     BIT.B #$40,&$240
17066     0= IF
17067         CMP #3,&$3D6
17068         U>= IF
17069            SUB #1,&$3D6
17070         THEN
17071     THEN
17072 THEN
17073 BW1
17074 BW2
17075 BW3
17076 BIC #$78,0(R1)
17077 RETI
17078 ENDASM
17079
17080
17081 ASM RC5_INT
17082   MOV #1,&$3A0
17083 MOV #1778,R9
17084 MOV #14,R10
17085 BEGIN
17086 MOV #%1011100100,&$380
17087     RRUM    #1,R9
17088     MOV     R9,R8
17089     RRUM    #1,R8
17090     ADD     R9,R8
17091     BEGIN   CMP R8,&$390
17092     U>= UNTIL
17093     BIT.B   #4,&$200
17094     ADDC    R11,R11
17095     MOV.B   &$200,&$208
17096     BIC.B   #4,&$20C
17097     SUB     #1,R10
17098 0<> WHILE
17099     ADD R9,R8
17100     BEGIN
17101         MOV &$390,R9
17102         CMP R8,R9
17103         U>= IF
17104         BIC #$30,&$380
17105         GOTO BW1
17106         THEN
17107         BIT.B #4,&$20C
17108     0<> UNTIL
17109 REPEAT
17110 BIC #$30,&$380
17111 RLAM    #1,R11
17112 MOV.B   R11,R9
17113 RRUM    #2,R9
17114 BIT     #$4000,R11
17115 0= IF   BIS #$40,R9
17116 THEN
17117 RRUM    #3,R11
17118 XOR     @R1,R11
17119 BIT     #$400,R11
17120 0= ?GOTO BW2
17121 XOR #$400,0(R1)
17122 SUB #4,R15
17123 MOV &BASE,2(R15)
17124 MOV #$10,&BASE
17125 MOV R14,0(R15)
17126 MOV R9,R14
17127 LO2HI
17128     ['] LCD_CLEAR IS CR
17129     ['] LCD_WrC  IS EMIT
17130     CR ." $" 2 U.R
17131     ['] CR >BODY IS CR
17132     ['] EMIT >BODY IS EMIT
17133 HI2LO
17134 MOV R14,&BASE
17135 MOV @R15+,R14
17136 GOTO BW3
17137 ENDASM
17138
17139
17140 ASM BACKGROUND
17141 MOV #SLEEP,R9
17142 ADD #4,R9
17143 MOV R9,R0
17144 ENDASM
17145
17146
17147 CODE START
17148     MOV #%1011010100,&$3C0
17149     MOV #1,&$3E0
17150     MOV #19,&$3D2
17151     MOV #%01100000,&$3C6
17152     MOV #10,&$3D6
17153     BIS.B #$20,&$204
17154     BIS.B #$20,&$20A
17155     BIS.B #7,&$245
17156     BIC.B #7,&$247
17157     BIS.B #$0F,&$224
17158     BIC.B #$0F,&$226
17159     BIS.B #4,&$20A
17160     BIC.B #4,&$20C
17161     MOV #RC5_INT,&$FFDE
17162     MOV #%0100010100,&$340
17163     MOV ##1638,&$352
17164     MOV #%10000,&$342
17165     MOV #WDT_INT,&$FFEA
17166
17167     MOV #SLEEP,R9
17168     MOV #BACKGROUND,2(R9)
17169
17170 LO2HI
17171
17172     $03E8 20_US
17173     $03 TOP_LCD
17174     $CD 20_US
17175     $03 TOP_LCD
17176     $5 20_US
17177     $03 TOP_LCD
17178     $2 20_US
17179     $02 TOP_LCD
17180     $2 20_US
17181     $28 LCD_WRF
17182     $08 LCD_WRF
17183     LCD_Clear
17184     $06 LCD_WRF
17185     $0C LCD_WRF
17186     LCD_Clear
17187     ['] LCD_HOME IS CR
17188     ['] LCD_WRC  IS EMIT
17189     CR ." I love you"   
17190     ['] CR >BODY IS CR
17191     ['] EMIT >BODY IS EMIT
17192     ." RC5toLCD is running. Type STOP to quit"
17193     LIT RECURSE IS WARM
17194     ABORT
17195 ;
17196
17197
17198 CODE STOP
17199     MOV #SLEEP,R9
17200     ADD #4,R9
17201     MOV R9,-2(R9)
17202
17203 COLON
17204     ['] WARM >BODY IS WARM
17205
17206     COLD
17207 ;
17208
17209
17210
17211             ; downloading RC5toLCD.4th is done
17212 RST_HERE    ; this app is protected against <reset>
17213
17214 [THEN]
17215
17216
17217
17218
17219
17220 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
17221
17222 [DEFINED] ASM [IF]
17223
17224 MARKER {RC5TOLCD}
17225
17226 [UNDEFINED] MAX [IF]
17227
17228 CODE MAX
17229     CMP @R15,R14
17230     S<  ?GOTO FW1
17231 BW1 ADD #2,R15
17232     MOV @R13+,R0
17233 ENDCODE
17234
17235
17236 CODE MIN
17237     CMP @R15,R14
17238     S<  ?GOTO BW1
17239 FW1 MOV @R15+,R14
17240     MOV @R13+,R0
17241 ENDCODE
17242
17243 [THEN]
17244
17245
17246 [UNDEFINED] U.R [IF]
17247 : U.R
17248   >R  <# 0 # #S #>  
17249   R> OVER - 0 MAX SPACES TYPE
17250 ;
17251 [THEN]
17252
17253
17254
17255 CODE 20_US
17256 BEGIN
17257     BEGIN
17258         BIT #1,&$3C0
17259     0<> UNTIL
17260     BIC #1,&$3C0
17261     SUB #1,R14
17262 U< UNTIL
17263 MOV @R15+,R14
17264 MOV @R13+,R0
17265 ENDCODE
17266
17267
17268 CODE TOP_LCD
17269     BIS.B #4,&$243
17270     BIT.B #1,&$241
17271 0= IF
17272     AND.B #$0F,R14
17273     MOV.B R14,&$222
17274     BIC.B #4,&$243
17275     MOV @R15+,R14
17276     MOV @R13+,R0
17277 THEN
17278     SUB #2,R15
17279     MOV R14,0(R15)
17280     BIC.B #4,&$243
17281     MOV.B &$220,R14
17282     AND.B #$0F,R14
17283     MOV @R13+,R0
17284 ENDCODE
17285
17286
17287 CODE LCD_W
17288     SUB #2,R15
17289     MOV R14,0(R15)
17290     RRUM #4,R14
17291     BIC.B #1,&$243
17292     BIS.B #$0F,&$224
17293 COLON
17294     TOP_LCD 2 20_US
17295     TOP_LCD 2 20_US 
17296 ;
17297
17298
17299 CODE LCD_WrC
17300     BIS.B #2,&$243
17301     JMP LCD_W 
17302 ENDCODE
17303
17304
17305 CODE LCD_WrF
17306     BIC.B #2,&$243
17307     JMP LCD_W 
17308 ENDCODE
17309
17310
17311 : LCD_Clear 
17312     $01 LCD_WrF 100 20_us
17313 ;
17314
17315
17316 : LCD_Home 
17317     $02 LCD_WrF 100 20_us 
17318 ;
17319
17320
17321 [UNDEFINED] OR [IF]
17322
17323 CODE OR
17324 BIS @R15+,R14
17325 MOV @R13+,R0
17326 ENDCODE
17327
17328
17329 [THEN]
17330
17331 : LCD_Entry_set     $04 OR LCD_WrF ;
17332
17333 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
17334
17335 : LCD_DSP_Shift     $10 OR LCD_WrF ;
17336
17337 : LCD_Fn_Set        $20 OR LCD_WrF ;
17338
17339 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
17340
17341 : LCD_Goto          $80 OR LCD_WrF ;
17342
17343 CODE LCD_R
17344     BIC.B #$0F,&$224
17345     BIS.B #1,&$243
17346 COLON
17347     TOP_LCD 2 20_us
17348     TOP_LCD 2 20_us
17349 HI2LO
17350     RLAM #4,0(R15)
17351     ADD.B @R15+,R14
17352     MOV @R1+,R13
17353     MOV @R13+,R0
17354 ENDCODE
17355
17356
17357 CODE LCD_RdS
17358     BIC.B #2,&$243
17359     JMP LCD_R
17360 ENDCODE
17361
17362
17363 CODE LCD_RdC
17364     BIS.B #2,&$243
17365     JMP LCD_R
17366 ENDCODE
17367
17368
17369
17370 ASM WDT_INT
17371 BIT.B #$20,&$240
17372 0= IF
17373     CMP #19,&$3D6
17374     U< IF
17375         ADD #1,&$3D6
17376     THEN
17377 ELSE
17378     BIT.B #$40,&$240
17379     0= IF
17380         CMP #3,&$3D6
17381         U>= IF
17382            SUB #1,&$3D6
17383         THEN
17384     THEN
17385 THEN
17386 BW1
17387 BW2
17388 BW3
17389 BIC #$78,0(R1)
17390 RETI
17391 ENDASM
17392
17393
17394 ASM RC5_INT
17395   MOV #1,&$3A0
17396 MOV #1778,R9
17397 MOV #14,R10
17398 BEGIN
17399 MOV #%1011100100,&$380
17400     RRUM    #1,R9
17401     MOV     R9,R8
17402     RRUM    #1,R8
17403     ADD     R9,R8
17404     BEGIN   CMP R8,&$390
17405     U>= UNTIL
17406     BIT.B   #4,&$200
17407     ADDC    R11,R11
17408     MOV.B   &$200,&$208
17409     BIC.B   #4,&$20C
17410     SUB     #1,R10
17411 0<> WHILE
17412     ADD R9,R8
17413     BEGIN
17414         MOV &$390,R9
17415         CMP R8,R9
17416         U>= IF
17417         BIC #$30,&$380
17418         GOTO BW1
17419         THEN
17420         BIT.B #4,&$20C
17421     0<> UNTIL
17422 REPEAT
17423 BIC #$30,&$380
17424 RLAM    #1,R11
17425 MOV.B   R11,R9
17426 RRUM    #2,R9
17427 BIT     #$4000,R11
17428 0= IF   BIS #$40,R9
17429 THEN
17430 RRUM    #3,R11
17431 XOR     @R1,R11
17432 BIT     #$400,R11
17433 0= ?GOTO BW2
17434 XOR #$400,0(R1)
17435 SUB #4,R15
17436 MOV &BASE,2(R15)
17437 MOV #$10,&BASE
17438 MOV R14,0(R15)
17439 MOV R9,R14
17440 LO2HI
17441     ['] LCD_CLEAR IS CR
17442     ['] LCD_WrC  IS EMIT
17443     CR ." $" 2 U.R
17444     ['] CR >BODY IS CR
17445     ['] EMIT >BODY IS EMIT
17446 HI2LO
17447 MOV R14,&BASE
17448 MOV @R15+,R14
17449 GOTO BW3
17450 ENDASM
17451
17452
17453 ASM BACKGROUND
17454 MOV #SLEEP,R9
17455 ADD #4,R9
17456 MOV R9,R0
17457 ENDASM
17458
17459
17460 CODE START
17461     MOV #%1011010100,&$3C0
17462     MOV #1,&$3E0
17463     MOV #19,&$3D2
17464     MOV #%01100000,&$3C6
17465     MOV #10,&$3D6
17466     BIS.B #$20,&$204
17467     BIS.B #$20,&$20A
17468     BIS.B #7,&$245
17469     BIC.B #7,&$247
17470     BIS.B #$0F,&$224
17471     BIC.B #$0F,&$226
17472     BIS.B #4,&$20A
17473     BIC.B #4,&$20C
17474     MOV #RC5_INT,&$FFDE
17475     MOV #%0100010100,&$340
17476     MOV ##1638,&$352
17477     MOV #%10000,&$342
17478     MOV #WDT_INT,&$FFEA
17479
17480     MOV #SLEEP,R9
17481     MOV #BACKGROUND,2(R9)
17482
17483 LO2HI
17484
17485     $03E8 20_US
17486     $03 TOP_LCD
17487     $CD 20_US
17488     $03 TOP_LCD
17489     $5 20_US
17490     $03 TOP_LCD
17491     $2 20_US
17492     $02 TOP_LCD
17493     $2 20_US
17494     $28 LCD_WRF
17495     $08 LCD_WRF
17496     LCD_Clear
17497     $06 LCD_WRF
17498     $0C LCD_WRF
17499     LCD_Clear
17500     ['] LCD_HOME IS CR
17501     ['] LCD_WRC  IS EMIT
17502     CR ." I love you"   
17503     ['] CR >BODY IS CR
17504     ['] EMIT >BODY IS EMIT
17505     ." RC5toLCD is running. Type STOP to quit"
17506     LIT RECURSE IS WARM
17507     ABORT
17508 ;
17509
17510
17511 CODE STOP
17512     MOV #SLEEP,R9
17513     ADD #4,R9
17514     MOV R9,-2(R9)
17515
17516 COLON
17517     ['] WARM >BODY IS WARM
17518
17519     COLD
17520 ;
17521
17522
17523
17524             ; downloading RC5toLCD.4th is done
17525 RST_HERE    ; this app is protected against <reset>
17526
17527 [THEN]
17528
17529
17530
17531
17532
17533 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
17534
17535 [DEFINED] ASM [IF]
17536
17537 MARKER {RC5TOLCD}
17538
17539 [UNDEFINED] MAX [IF]
17540
17541 CODE MAX
17542     CMP @R15,R14
17543     S<  ?GOTO FW1
17544 BW1 ADD #2,R15
17545     MOV @R13+,R0
17546 ENDCODE
17547
17548
17549 CODE MIN
17550     CMP @R15,R14
17551     S<  ?GOTO BW1
17552 FW1 MOV @R15+,R14
17553     MOV @R13+,R0
17554 ENDCODE
17555
17556 [THEN]
17557
17558
17559 [UNDEFINED] U.R [IF]
17560 : U.R
17561   >R  <# 0 # #S #>  
17562   R> OVER - 0 MAX SPACES TYPE
17563 ;
17564 [THEN]
17565
17566
17567
17568 CODE 20_US
17569 BEGIN
17570     BEGIN
17571         BIT #1,&$3C0
17572     0<> UNTIL
17573     BIC #1,&$3C0
17574     SUB #1,R14
17575 U< UNTIL
17576 MOV @R15+,R14
17577 MOV @R13+,R0
17578 ENDCODE
17579
17580
17581 CODE TOP_LCD
17582     BIS.B #4,&$243
17583     BIT.B #1,&$241
17584 0= IF
17585     AND.B #$0F,R14
17586     MOV.B R14,&$222
17587     BIC.B #4,&$243
17588     MOV @R15+,R14
17589     MOV @R13+,R0
17590 THEN
17591     SUB #2,R15
17592     MOV R14,0(R15)
17593     BIC.B #4,&$243
17594     MOV.B &$220,R14
17595     AND.B #$0F,R14
17596     MOV @R13+,R0
17597 ENDCODE
17598
17599
17600 CODE LCD_W
17601     SUB #2,R15
17602     MOV R14,0(R15)
17603     RRUM #4,R14
17604     BIC.B #1,&$243
17605     BIS.B #$0F,&$224
17606 COLON
17607     TOP_LCD 2 20_US
17608     TOP_LCD 2 20_US 
17609 ;
17610
17611
17612 CODE LCD_WrC
17613     BIS.B #2,&$243
17614     JMP LCD_W 
17615 ENDCODE
17616
17617
17618 CODE LCD_WrF
17619     BIC.B #2,&$243
17620     JMP LCD_W 
17621 ENDCODE
17622
17623
17624 : LCD_Clear 
17625     $01 LCD_WrF 100 20_us
17626 ;
17627
17628
17629 : LCD_Home 
17630     $02 LCD_WrF 100 20_us 
17631 ;
17632
17633
17634 [UNDEFINED] OR [IF]
17635
17636 CODE OR
17637 BIS @R15+,R14
17638 MOV @R13+,R0
17639 ENDCODE
17640
17641
17642 [THEN]
17643
17644 : LCD_Entry_set     $04 OR LCD_WrF ;
17645
17646 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
17647
17648 : LCD_DSP_Shift     $10 OR LCD_WrF ;
17649
17650 : LCD_Fn_Set        $20 OR LCD_WrF ;
17651
17652 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
17653
17654 : LCD_Goto          $80 OR LCD_WrF ;
17655
17656 CODE LCD_R
17657     BIC.B #$0F,&$224
17658     BIS.B #1,&$243
17659 COLON
17660     TOP_LCD 2 20_us
17661     TOP_LCD 2 20_us
17662 HI2LO
17663     RLAM #4,0(R15)
17664     ADD.B @R15+,R14
17665     MOV @R1+,R13
17666     MOV @R13+,R0
17667 ENDCODE
17668
17669
17670 CODE LCD_RdS
17671     BIC.B #2,&$243
17672     JMP LCD_R
17673 ENDCODE
17674
17675
17676 CODE LCD_RdC
17677     BIS.B #2,&$243
17678     JMP LCD_R
17679 ENDCODE
17680
17681
17682
17683 ASM WDT_INT
17684 BIT.B #$20,&$240
17685 0= IF
17686     CMP #19,&$3D6
17687     U< IF
17688         ADD #1,&$3D6
17689     THEN
17690 ELSE
17691     BIT.B #$40,&$240
17692     0= IF
17693         CMP #3,&$3D6
17694         U>= IF
17695            SUB #1,&$3D6
17696         THEN
17697     THEN
17698 THEN
17699 BW1
17700 BW2
17701 BW3
17702 BIC #$78,0(R1)
17703 RETI
17704 ENDASM
17705
17706
17707 ASM RC5_INT
17708   MOV #1,&$3A0
17709 MOV #1778,R9
17710 MOV #14,R10
17711 BEGIN
17712 MOV #%1011100100,&$380
17713     RRUM    #1,R9
17714     MOV     R9,R8
17715     RRUM    #1,R8
17716     ADD     R9,R8
17717     BEGIN   CMP R8,&$390
17718     U>= UNTIL
17719     BIT.B   #4,&$200
17720     ADDC    R11,R11
17721     MOV.B   &$200,&$208
17722     BIC.B   #4,&$20C
17723     SUB     #1,R10
17724 0<> WHILE
17725     ADD R9,R8
17726     BEGIN
17727         MOV &$390,R9
17728         CMP R8,R9
17729         U>= IF
17730         BIC #$30,&$380
17731         GOTO BW1
17732         THEN
17733         BIT.B #4,&$20C
17734     0<> UNTIL
17735 REPEAT
17736 BIC #$30,&$380
17737 RLAM    #1,R11
17738 MOV.B   R11,R9
17739 RRUM    #2,R9
17740 BIT     #$4000,R11
17741 0= IF   BIS #$40,R9
17742 THEN
17743 RRUM    #3,R11
17744 XOR     @R1,R11
17745 BIT     #$400,R11
17746 0= ?GOTO BW2
17747 XOR #$400,0(R1)
17748 SUB #4,R15
17749 MOV &BASE,2(R15)
17750 MOV #$10,&BASE
17751 MOV R14,0(R15)
17752 MOV R9,R14
17753 LO2HI
17754     ['] LCD_CLEAR IS CR
17755     ['] LCD_WrC  IS EMIT
17756     CR ." $" 2 U.R
17757     ['] CR >BODY IS CR
17758     ['] EMIT >BODY IS EMIT
17759 HI2LO
17760 MOV R14,&BASE
17761 MOV @R15+,R14
17762 GOTO BW3
17763 ENDASM
17764
17765
17766 ASM BACKGROUND
17767 MOV #SLEEP,R9
17768 ADD #4,R9
17769 MOV R9,R0
17770 ENDASM
17771
17772
17773 CODE START
17774     MOV #%1011010100,&$3C0
17775     MOV #1,&$3E0
17776     MOV #19,&$3D2
17777     MOV #%01100000,&$3C6
17778     MOV #10,&$3D6
17779     BIS.B #$20,&$204
17780     BIS.B #$20,&$20A
17781     BIS.B #7,&$245
17782     BIC.B #7,&$247
17783     BIS.B #$0F,&$224
17784     BIC.B #$0F,&$226
17785     BIS.B #4,&$20A
17786     BIC.B #4,&$20C
17787     MOV #RC5_INT,&$FFDE
17788     MOV #%0100010100,&$340
17789     MOV ##1638,&$352
17790     MOV #%10000,&$342
17791     MOV #WDT_INT,&$FFEA
17792
17793     MOV #SLEEP,R9
17794     MOV #BACKGROUND,2(R9)
17795
17796 LO2HI
17797
17798     $03E8 20_US
17799     $03 TOP_LCD
17800     $CD 20_US
17801     $03 TOP_LCD
17802     $5 20_US
17803     $03 TOP_LCD
17804     $2 20_US
17805     $02 TOP_LCD
17806     $2 20_US
17807     $28 LCD_WRF
17808     $08 LCD_WRF
17809     LCD_Clear
17810     $06 LCD_WRF
17811     $0C LCD_WRF
17812     LCD_Clear
17813     ['] LCD_HOME IS CR
17814     ['] LCD_WRC  IS EMIT
17815     CR ." I love you"   
17816     ['] CR >BODY IS CR
17817     ['] EMIT >BODY IS EMIT
17818     ." RC5toLCD is running. Type STOP to quit"
17819     LIT RECURSE IS WARM
17820     ABORT
17821 ;
17822
17823
17824 CODE STOP
17825     MOV #SLEEP,R9
17826     ADD #4,R9
17827     MOV R9,-2(R9)
17828
17829 COLON
17830     ['] WARM >BODY IS WARM
17831
17832     COLD
17833 ;
17834
17835
17836
17837             ; downloading RC5toLCD.4th is done
17838 RST_HERE    ; this app is protected against <reset>
17839
17840 [THEN]
17841
17842
17843
17844
17845
17846 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
17847
17848 [DEFINED] ASM [IF]
17849
17850 MARKER {RC5TOLCD}
17851
17852 [UNDEFINED] MAX [IF]
17853
17854 CODE MAX
17855     CMP @R15,R14
17856     S<  ?GOTO FW1
17857 BW1 ADD #2,R15
17858     MOV @R13+,R0
17859 ENDCODE
17860
17861
17862 CODE MIN
17863     CMP @R15,R14
17864     S<  ?GOTO BW1
17865 FW1 MOV @R15+,R14
17866     MOV @R13+,R0
17867 ENDCODE
17868
17869 [THEN]
17870
17871
17872 [UNDEFINED] U.R [IF]
17873 : U.R
17874   >R  <# 0 # #S #>  
17875   R> OVER - 0 MAX SPACES TYPE
17876 ;
17877 [THEN]
17878
17879
17880
17881 CODE 20_US
17882 BEGIN
17883     BEGIN
17884         BIT #1,&$3C0
17885     0<> UNTIL
17886     BIC #1,&$3C0
17887     SUB #1,R14
17888 U< UNTIL
17889 MOV @R15+,R14
17890 MOV @R13+,R0
17891 ENDCODE
17892
17893
17894 CODE TOP_LCD
17895     BIS.B #4,&$243
17896     BIT.B #1,&$241
17897 0= IF
17898     AND.B #$0F,R14
17899     MOV.B R14,&$222
17900     BIC.B #4,&$243
17901     MOV @R15+,R14
17902     MOV @R13+,R0
17903 THEN
17904     SUB #2,R15
17905     MOV R14,0(R15)
17906     BIC.B #4,&$243
17907     MOV.B &$220,R14
17908     AND.B #$0F,R14
17909     MOV @R13+,R0
17910 ENDCODE
17911
17912
17913 CODE LCD_W
17914     SUB #2,R15
17915     MOV R14,0(R15)
17916     RRUM #4,R14
17917     BIC.B #1,&$243
17918     BIS.B #$0F,&$224
17919 COLON
17920     TOP_LCD 2 20_US
17921     TOP_LCD 2 20_US 
17922 ;
17923
17924
17925 CODE LCD_WrC
17926     BIS.B #2,&$243
17927     JMP LCD_W 
17928 ENDCODE
17929
17930
17931 CODE LCD_WrF
17932     BIC.B #2,&$243
17933     JMP LCD_W 
17934 ENDCODE
17935
17936
17937 : LCD_Clear 
17938     $01 LCD_WrF 100 20_us
17939 ;
17940
17941
17942 : LCD_Home 
17943     $02 LCD_WrF 100 20_us 
17944 ;
17945
17946
17947 [UNDEFINED] OR [IF]
17948
17949 CODE OR
17950 BIS @R15+,R14
17951 MOV @R13+,R0
17952 ENDCODE
17953
17954
17955 [THEN]
17956
17957 : LCD_Entry_set     $04 OR LCD_WrF ;
17958
17959 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
17960
17961 : LCD_DSP_Shift     $10 OR LCD_WrF ;
17962
17963 : LCD_Fn_Set        $20 OR LCD_WrF ;
17964
17965 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
17966
17967 : LCD_Goto          $80 OR LCD_WrF ;
17968
17969 CODE LCD_R
17970     BIC.B #$0F,&$224
17971     BIS.B #1,&$243
17972 COLON
17973     TOP_LCD 2 20_us
17974     TOP_LCD 2 20_us
17975 HI2LO
17976     RLAM #4,0(R15)
17977     ADD.B @R15+,R14
17978     MOV @R1+,R13
17979     MOV @R13+,R0
17980 ENDCODE
17981
17982
17983 CODE LCD_RdS
17984     BIC.B #2,&$243
17985     JMP LCD_R
17986 ENDCODE
17987
17988
17989 CODE LCD_RdC
17990     BIS.B #2,&$243
17991     JMP LCD_R
17992 ENDCODE
17993
17994
17995
17996 ASM WDT_INT
17997 BIT.B #$20,&$240
17998 0= IF
17999     CMP #19,&$3D6
18000     U< IF
18001         ADD #1,&$3D6
18002     THEN
18003 ELSE
18004     BIT.B #$40,&$240
18005     0= IF
18006         CMP #3,&$3D6
18007         U>= IF
18008            SUB #1,&$3D6
18009         THEN
18010     THEN
18011 THEN
18012 BW1
18013 BW2
18014 BW3
18015 BIC #$78,0(R1)
18016 RETI
18017 ENDASM
18018
18019
18020 ASM RC5_INT
18021   MOV #1,&$3A0
18022 MOV #1778,R9
18023 MOV #14,R10
18024 BEGIN
18025 MOV #%1011100100,&$380
18026     RRUM    #1,R9
18027     MOV     R9,R8
18028     RRUM    #1,R8
18029     ADD     R9,R8
18030     BEGIN   CMP R8,&$390
18031     U>= UNTIL
18032     BIT.B   #4,&$200
18033     ADDC    R11,R11
18034     MOV.B   &$200,&$208
18035     BIC.B   #4,&$20C
18036     SUB     #1,R10
18037 0<> WHILE
18038     ADD R9,R8
18039     BEGIN
18040         MOV &$390,R9
18041         CMP R8,R9
18042         U>= IF
18043         BIC #$30,&$380
18044         GOTO BW1
18045         THEN
18046         BIT.B #4,&$20C
18047     0<> UNTIL
18048 REPEAT
18049 BIC #$30,&$380
18050 RLAM    #1,R11
18051 MOV.B   R11,R9
18052 RRUM    #2,R9
18053 BIT     #$4000,R11
18054 0= IF   BIS #$40,R9
18055 THEN
18056 RRUM    #3,R11
18057 XOR     @R1,R11
18058 BIT     #$400,R11
18059 0= ?GOTO BW2
18060 XOR #$400,0(R1)
18061 SUB #4,R15
18062 MOV &BASE,2(R15)
18063 MOV #$10,&BASE
18064 MOV R14,0(R15)
18065 MOV R9,R14
18066 LO2HI
18067     ['] LCD_CLEAR IS CR
18068     ['] LCD_WrC  IS EMIT
18069     CR ." $" 2 U.R
18070     ['] CR >BODY IS CR
18071     ['] EMIT >BODY IS EMIT
18072 HI2LO
18073 MOV R14,&BASE
18074 MOV @R15+,R14
18075 GOTO BW3
18076 ENDASM
18077
18078
18079 ASM BACKGROUND
18080 MOV #SLEEP,R9
18081 ADD #4,R9
18082 MOV R9,R0
18083 ENDASM
18084
18085
18086 CODE START
18087     MOV #%1011010100,&$3C0
18088     MOV #1,&$3E0
18089     MOV #19,&$3D2
18090     MOV #%01100000,&$3C6
18091     MOV #10,&$3D6
18092     BIS.B #$20,&$204
18093     BIS.B #$20,&$20A
18094     BIS.B #7,&$245
18095     BIC.B #7,&$247
18096     BIS.B #$0F,&$224
18097     BIC.B #$0F,&$226
18098     BIS.B #4,&$20A
18099     BIC.B #4,&$20C
18100     MOV #RC5_INT,&$FFDE
18101     MOV #%0100010100,&$340
18102     MOV ##1638,&$352
18103     MOV #%10000,&$342
18104     MOV #WDT_INT,&$FFEA
18105
18106     MOV #SLEEP,R9
18107     MOV #BACKGROUND,2(R9)
18108
18109 LO2HI
18110
18111     $03E8 20_US
18112     $03 TOP_LCD
18113     $CD 20_US
18114     $03 TOP_LCD
18115     $5 20_US
18116     $03 TOP_LCD
18117     $2 20_US
18118     $02 TOP_LCD
18119     $2 20_US
18120     $28 LCD_WRF
18121     $08 LCD_WRF
18122     LCD_Clear
18123     $06 LCD_WRF
18124     $0C LCD_WRF
18125     LCD_Clear
18126     ['] LCD_HOME IS CR
18127     ['] LCD_WRC  IS EMIT
18128     CR ." I love you"   
18129     ['] CR >BODY IS CR
18130     ['] EMIT >BODY IS EMIT
18131     ." RC5toLCD is running. Type STOP to quit"
18132     LIT RECURSE IS WARM
18133     ABORT
18134 ;
18135
18136
18137 CODE STOP
18138     MOV #SLEEP,R9
18139     ADD #4,R9
18140     MOV R9,-2(R9)
18141
18142 COLON
18143     ['] WARM >BODY IS WARM
18144
18145     COLD
18146 ;
18147
18148
18149
18150             ; downloading RC5toLCD.4th is done
18151 RST_HERE    ; this app is protected against <reset>
18152
18153 [THEN]
18154
18155
18156
18157
18158
18159 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
18160
18161 [DEFINED] ASM [IF]
18162
18163 MARKER {RC5TOLCD}
18164
18165 [UNDEFINED] MAX [IF]
18166
18167 CODE MAX
18168     CMP @R15,R14
18169     S<  ?GOTO FW1
18170 BW1 ADD #2,R15
18171     MOV @R13+,R0
18172 ENDCODE
18173
18174
18175 CODE MIN
18176     CMP @R15,R14
18177     S<  ?GOTO BW1
18178 FW1 MOV @R15+,R14
18179     MOV @R13+,R0
18180 ENDCODE
18181
18182 [THEN]
18183
18184
18185 [UNDEFINED] U.R [IF]
18186 : U.R
18187   >R  <# 0 # #S #>  
18188   R> OVER - 0 MAX SPACES TYPE
18189 ;
18190 [THEN]
18191
18192
18193
18194 CODE 20_US
18195 BEGIN
18196     BEGIN
18197         BIT #1,&$3C0
18198     0<> UNTIL
18199     BIC #1,&$3C0
18200     SUB #1,R14
18201 U< UNTIL
18202 MOV @R15+,R14
18203 MOV @R13+,R0
18204 ENDCODE
18205
18206
18207 CODE TOP_LCD
18208     BIS.B #4,&$243
18209     BIT.B #1,&$241
18210 0= IF
18211     AND.B #$0F,R14
18212     MOV.B R14,&$222
18213     BIC.B #4,&$243
18214     MOV @R15+,R14
18215     MOV @R13+,R0
18216 THEN
18217     SUB #2,R15
18218     MOV R14,0(R15)
18219     BIC.B #4,&$243
18220     MOV.B &$220,R14
18221     AND.B #$0F,R14
18222     MOV @R13+,R0
18223 ENDCODE
18224
18225
18226 CODE LCD_W
18227     SUB #2,R15
18228     MOV R14,0(R15)
18229     RRUM #4,R14
18230     BIC.B #1,&$243
18231     BIS.B #$0F,&$224
18232 COLON
18233     TOP_LCD 2 20_US
18234     TOP_LCD 2 20_US 
18235 ;
18236
18237
18238 CODE LCD_WrC
18239     BIS.B #2,&$243
18240     JMP LCD_W 
18241 ENDCODE
18242
18243
18244 CODE LCD_WrF
18245     BIC.B #2,&$243
18246     JMP LCD_W 
18247 ENDCODE
18248
18249
18250 : LCD_Clear 
18251     $01 LCD_WrF 100 20_us
18252 ;
18253
18254
18255 : LCD_Home 
18256     $02 LCD_WrF 100 20_us 
18257 ;
18258
18259
18260 [UNDEFINED] OR [IF]
18261
18262 CODE OR
18263 BIS @R15+,R14
18264 MOV @R13+,R0
18265 ENDCODE
18266
18267
18268 [THEN]
18269
18270 : LCD_Entry_set     $04 OR LCD_WrF ;
18271
18272 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
18273
18274 : LCD_DSP_Shift     $10 OR LCD_WrF ;
18275
18276 : LCD_Fn_Set        $20 OR LCD_WrF ;
18277
18278 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
18279
18280 : LCD_Goto          $80 OR LCD_WrF ;
18281
18282 CODE LCD_R
18283     BIC.B #$0F,&$224
18284     BIS.B #1,&$243
18285 COLON
18286     TOP_LCD 2 20_us
18287     TOP_LCD 2 20_us
18288 HI2LO
18289     RLAM #4,0(R15)
18290     ADD.B @R15+,R14
18291     MOV @R1+,R13
18292     MOV @R13+,R0
18293 ENDCODE
18294
18295
18296 CODE LCD_RdS
18297     BIC.B #2,&$243
18298     JMP LCD_R
18299 ENDCODE
18300
18301
18302 CODE LCD_RdC
18303     BIS.B #2,&$243
18304     JMP LCD_R
18305 ENDCODE
18306
18307
18308
18309 ASM WDT_INT
18310 BIT.B #$20,&$240
18311 0= IF
18312     CMP #19,&$3D6
18313     U< IF
18314         ADD #1,&$3D6
18315     THEN
18316 ELSE
18317     BIT.B #$40,&$240
18318     0= IF
18319         CMP #3,&$3D6
18320         U>= IF
18321            SUB #1,&$3D6
18322         THEN
18323     THEN
18324 THEN
18325 BW1
18326 BW2
18327 BW3
18328 BIC #$78,0(R1)
18329 RETI
18330 ENDASM
18331
18332
18333 ASM RC5_INT
18334   MOV #1,&$3A0
18335 MOV #1778,R9
18336 MOV #14,R10
18337 BEGIN
18338 MOV #%1011100100,&$380
18339     RRUM    #1,R9
18340     MOV     R9,R8
18341     RRUM    #1,R8
18342     ADD     R9,R8
18343     BEGIN   CMP R8,&$390
18344     U>= UNTIL
18345     BIT.B   #4,&$200
18346     ADDC    R11,R11
18347     MOV.B   &$200,&$208
18348     BIC.B   #4,&$20C
18349     SUB     #1,R10
18350 0<> WHILE
18351     ADD R9,R8
18352     BEGIN
18353         MOV &$390,R9
18354         CMP R8,R9
18355         U>= IF
18356         BIC #$30,&$380
18357         GOTO BW1
18358         THEN
18359         BIT.B #4,&$20C
18360     0<> UNTIL
18361 REPEAT
18362 BIC #$30,&$380
18363 RLAM    #1,R11
18364 MOV.B   R11,R9
18365 RRUM    #2,R9
18366 BIT     #$4000,R11
18367 0= IF   BIS #$40,R9
18368 THEN
18369 RRUM    #3,R11
18370 XOR     @R1,R11
18371 BIT     #$400,R11
18372 0= ?GOTO BW2
18373 XOR #$400,0(R1)
18374 SUB #4,R15
18375 MOV &BASE,2(R15)
18376 MOV #$10,&BASE
18377 MOV R14,0(R15)
18378 MOV R9,R14
18379 LO2HI
18380     ['] LCD_CLEAR IS CR
18381     ['] LCD_WrC  IS EMIT
18382     CR ." $" 2 U.R
18383     ['] CR >BODY IS CR
18384     ['] EMIT >BODY IS EMIT
18385 HI2LO
18386 MOV R14,&BASE
18387 MOV @R15+,R14
18388 GOTO BW3
18389 ENDASM
18390
18391
18392 ASM BACKGROUND
18393 MOV #SLEEP,R9
18394 ADD #4,R9
18395 MOV R9,R0
18396 ENDASM
18397
18398
18399 CODE START
18400     MOV #%1011010100,&$3C0
18401     MOV #1,&$3E0
18402     MOV #19,&$3D2
18403     MOV #%01100000,&$3C6
18404     MOV #10,&$3D6
18405     BIS.B #$20,&$204
18406     BIS.B #$20,&$20A
18407     BIS.B #7,&$245
18408     BIC.B #7,&$247
18409     BIS.B #$0F,&$224
18410     BIC.B #$0F,&$226
18411     BIS.B #4,&$20A
18412     BIC.B #4,&$20C
18413     MOV #RC5_INT,&$FFDE
18414     MOV #%0100010100,&$340
18415     MOV ##1638,&$352
18416     MOV #%10000,&$342
18417     MOV #WDT_INT,&$FFEA
18418
18419     MOV #SLEEP,R9
18420     MOV #BACKGROUND,2(R9)
18421
18422 LO2HI
18423
18424     $03E8 20_US
18425     $03 TOP_LCD
18426     $CD 20_US
18427     $03 TOP_LCD
18428     $5 20_US
18429     $03 TOP_LCD
18430     $2 20_US
18431     $02 TOP_LCD
18432     $2 20_US
18433     $28 LCD_WRF
18434     $08 LCD_WRF
18435     LCD_Clear
18436     $06 LCD_WRF
18437     $0C LCD_WRF
18438     LCD_Clear
18439     ['] LCD_HOME IS CR
18440     ['] LCD_WRC  IS EMIT
18441     CR ." I love you"   
18442     ['] CR >BODY IS CR
18443     ['] EMIT >BODY IS EMIT
18444     ." RC5toLCD is running. Type STOP to quit"
18445     LIT RECURSE IS WARM
18446     ABORT
18447 ;
18448
18449
18450 CODE STOP
18451     MOV #SLEEP,R9
18452     ADD #4,R9
18453     MOV R9,-2(R9)
18454
18455 COLON
18456     ['] WARM >BODY IS WARM
18457
18458     COLD
18459 ;
18460
18461
18462
18463             ; downloading RC5toLCD.4th is done
18464 RST_HERE    ; this app is protected against <reset>
18465
18466 [THEN]
18467
18468
18469
18470
18471
18472 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
18473
18474 [DEFINED] ASM [IF]
18475
18476 MARKER {RC5TOLCD}
18477
18478 [UNDEFINED] MAX [IF]
18479
18480 CODE MAX
18481     CMP @R15,R14
18482     S<  ?GOTO FW1
18483 BW1 ADD #2,R15
18484     MOV @R13+,R0
18485 ENDCODE
18486
18487
18488 CODE MIN
18489     CMP @R15,R14
18490     S<  ?GOTO BW1
18491 FW1 MOV @R15+,R14
18492     MOV @R13+,R0
18493 ENDCODE
18494
18495 [THEN]
18496
18497
18498 [UNDEFINED] U.R [IF]
18499 : U.R
18500   >R  <# 0 # #S #>  
18501   R> OVER - 0 MAX SPACES TYPE
18502 ;
18503 [THEN]
18504
18505
18506
18507 CODE 20_US
18508 BEGIN
18509     BEGIN
18510         BIT #1,&$3C0
18511     0<> UNTIL
18512     BIC #1,&$3C0
18513     SUB #1,R14
18514 U< UNTIL
18515 MOV @R15+,R14
18516 MOV @R13+,R0
18517 ENDCODE
18518
18519
18520 CODE TOP_LCD
18521     BIS.B #4,&$243
18522     BIT.B #1,&$241
18523 0= IF
18524     AND.B #$0F,R14
18525     MOV.B R14,&$222
18526     BIC.B #4,&$243
18527     MOV @R15+,R14
18528     MOV @R13+,R0
18529 THEN
18530     SUB #2,R15
18531     MOV R14,0(R15)
18532     BIC.B #4,&$243
18533     MOV.B &$220,R14
18534     AND.B #$0F,R14
18535     MOV @R13+,R0
18536 ENDCODE
18537
18538
18539 CODE LCD_W
18540     SUB #2,R15
18541     MOV R14,0(R15)
18542     RRUM #4,R14
18543     BIC.B #1,&$243
18544     BIS.B #$0F,&$224
18545 COLON
18546     TOP_LCD 2 20_US
18547     TOP_LCD 2 20_US 
18548 ;
18549
18550
18551 CODE LCD_WrC
18552     BIS.B #2,&$243
18553     JMP LCD_W 
18554 ENDCODE
18555
18556
18557 CODE LCD_WrF
18558     BIC.B #2,&$243
18559     JMP LCD_W 
18560 ENDCODE
18561
18562
18563 : LCD_Clear 
18564     $01 LCD_WrF 100 20_us
18565 ;
18566
18567
18568 : LCD_Home 
18569     $02 LCD_WrF 100 20_us 
18570 ;
18571
18572
18573 [UNDEFINED] OR [IF]
18574
18575 CODE OR
18576 BIS @R15+,R14
18577 MOV @R13+,R0
18578 ENDCODE
18579
18580
18581 [THEN]
18582
18583 : LCD_Entry_set     $04 OR LCD_WrF ;
18584
18585 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
18586
18587 : LCD_DSP_Shift     $10 OR LCD_WrF ;
18588
18589 : LCD_Fn_Set        $20 OR LCD_WrF ;
18590
18591 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
18592
18593 : LCD_Goto          $80 OR LCD_WrF ;
18594
18595 CODE LCD_R
18596     BIC.B #$0F,&$224
18597     BIS.B #1,&$243
18598 COLON
18599     TOP_LCD 2 20_us
18600     TOP_LCD 2 20_us
18601 HI2LO
18602     RLAM #4,0(R15)
18603     ADD.B @R15+,R14
18604     MOV @R1+,R13
18605     MOV @R13+,R0
18606 ENDCODE
18607
18608
18609 CODE LCD_RdS
18610     BIC.B #2,&$243
18611     JMP LCD_R
18612 ENDCODE
18613
18614
18615 CODE LCD_RdC
18616     BIS.B #2,&$243
18617     JMP LCD_R
18618 ENDCODE
18619
18620
18621
18622 ASM WDT_INT
18623 BIT.B #$20,&$240
18624 0= IF
18625     CMP #19,&$3D6
18626     U< IF
18627         ADD #1,&$3D6
18628     THEN
18629 ELSE
18630     BIT.B #$40,&$240
18631     0= IF
18632         CMP #3,&$3D6
18633         U>= IF
18634            SUB #1,&$3D6
18635         THEN
18636     THEN
18637 THEN
18638 BW1
18639 BW2
18640 BW3
18641 BIC #$78,0(R1)
18642 RETI
18643 ENDASM
18644
18645
18646 ASM RC5_INT
18647   MOV #1,&$3A0
18648 MOV #1778,R9
18649 MOV #14,R10
18650 BEGIN
18651 MOV #%1011100100,&$380
18652     RRUM    #1,R9
18653     MOV     R9,R8
18654     RRUM    #1,R8
18655     ADD     R9,R8
18656     BEGIN   CMP R8,&$390
18657     U>= UNTIL
18658     BIT.B   #4,&$200
18659     ADDC    R11,R11
18660     MOV.B   &$200,&$208
18661     BIC.B   #4,&$20C
18662     SUB     #1,R10
18663 0<> WHILE
18664     ADD R9,R8
18665     BEGIN
18666         MOV &$390,R9
18667         CMP R8,R9
18668         U>= IF
18669         BIC #$30,&$380
18670         GOTO BW1
18671         THEN
18672         BIT.B #4,&$20C
18673     0<> UNTIL
18674 REPEAT
18675 BIC #$30,&$380
18676 RLAM    #1,R11
18677 MOV.B   R11,R9
18678 RRUM    #2,R9
18679 BIT     #$4000,R11
18680 0= IF   BIS #$40,R9
18681 THEN
18682 RRUM    #3,R11
18683 XOR     @R1,R11
18684 BIT     #$400,R11
18685 0= ?GOTO BW2
18686 XOR #$400,0(R1)
18687 SUB #4,R15
18688 MOV &BASE,2(R15)
18689 MOV #$10,&BASE
18690 MOV R14,0(R15)
18691 MOV R9,R14
18692 LO2HI
18693     ['] LCD_CLEAR IS CR
18694     ['] LCD_WrC  IS EMIT
18695     CR ." $" 2 U.R
18696     ['] CR >BODY IS CR
18697     ['] EMIT >BODY IS EMIT
18698 HI2LO
18699 MOV R14,&BASE
18700 MOV @R15+,R14
18701 GOTO BW3
18702 ENDASM
18703
18704
18705 ASM BACKGROUND
18706 MOV #SLEEP,R9
18707 ADD #4,R9
18708 MOV R9,R0
18709 ENDASM
18710
18711
18712 CODE START
18713     MOV #%1011010100,&$3C0
18714     MOV #1,&$3E0
18715     MOV #19,&$3D2
18716     MOV #%01100000,&$3C6
18717     MOV #10,&$3D6
18718     BIS.B #$20,&$204
18719     BIS.B #$20,&$20A
18720     BIS.B #7,&$245
18721     BIC.B #7,&$247
18722     BIS.B #$0F,&$224
18723     BIC.B #$0F,&$226
18724     BIS.B #4,&$20A
18725     BIC.B #4,&$20C
18726     MOV #RC5_INT,&$FFDE
18727     MOV #%0100010100,&$340
18728     MOV ##1638,&$352
18729     MOV #%10000,&$342
18730     MOV #WDT_INT,&$FFEA
18731
18732     MOV #SLEEP,R9
18733     MOV #BACKGROUND,2(R9)
18734
18735 LO2HI
18736
18737     $03E8 20_US
18738     $03 TOP_LCD
18739     $CD 20_US
18740     $03 TOP_LCD
18741     $5 20_US
18742     $03 TOP_LCD
18743     $2 20_US
18744     $02 TOP_LCD
18745     $2 20_US
18746     $28 LCD_WRF
18747     $08 LCD_WRF
18748     LCD_Clear
18749     $06 LCD_WRF
18750     $0C LCD_WRF
18751     LCD_Clear
18752     ['] LCD_HOME IS CR
18753     ['] LCD_WRC  IS EMIT
18754     CR ." I love you"   
18755     ['] CR >BODY IS CR
18756     ['] EMIT >BODY IS EMIT
18757     ." RC5toLCD is running. Type STOP to quit"
18758     LIT RECURSE IS WARM
18759     ABORT
18760 ;
18761
18762
18763 CODE STOP
18764     MOV #SLEEP,R9
18765     ADD #4,R9
18766     MOV R9,-2(R9)
18767
18768 COLON
18769     ['] WARM >BODY IS WARM
18770
18771     COLD
18772 ;
18773
18774
18775
18776             ; downloading RC5toLCD.4th is done
18777 RST_HERE    ; this app is protected against <reset>
18778
18779 [THEN]
18780
18781
18782
18783
18784
18785 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
18786
18787 [DEFINED] ASM [IF]
18788
18789 MARKER {RC5TOLCD}
18790
18791 [UNDEFINED] MAX [IF]
18792
18793 CODE MAX
18794     CMP @R15,R14
18795     S<  ?GOTO FW1
18796 BW1 ADD #2,R15
18797     MOV @R13+,R0
18798 ENDCODE
18799
18800
18801 CODE MIN
18802     CMP @R15,R14
18803     S<  ?GOTO BW1
18804 FW1 MOV @R15+,R14
18805     MOV @R13+,R0
18806 ENDCODE
18807
18808 [THEN]
18809
18810
18811 [UNDEFINED] U.R [IF]
18812 : U.R
18813   >R  <# 0 # #S #>  
18814   R> OVER - 0 MAX SPACES TYPE
18815 ;
18816 [THEN]
18817
18818
18819
18820 CODE 20_US
18821 BEGIN
18822     BEGIN
18823         BIT #1,&$3C0
18824     0<> UNTIL
18825     BIC #1,&$3C0
18826     SUB #1,R14
18827 U< UNTIL
18828 MOV @R15+,R14
18829 MOV @R13+,R0
18830 ENDCODE
18831
18832
18833 CODE TOP_LCD
18834     BIS.B #4,&$243
18835     BIT.B #1,&$241
18836 0= IF
18837     AND.B #$0F,R14
18838     MOV.B R14,&$222
18839     BIC.B #4,&$243
18840     MOV @R15+,R14
18841     MOV @R13+,R0
18842 THEN
18843     SUB #2,R15
18844     MOV R14,0(R15)
18845     BIC.B #4,&$243
18846     MOV.B &$220,R14
18847     AND.B #$0F,R14
18848     MOV @R13+,R0
18849 ENDCODE
18850
18851
18852 CODE LCD_W
18853     SUB #2,R15
18854     MOV R14,0(R15)
18855     RRUM #4,R14
18856     BIC.B #1,&$243
18857     BIS.B #$0F,&$224
18858 COLON
18859     TOP_LCD 2 20_US
18860     TOP_LCD 2 20_US 
18861 ;
18862
18863
18864 CODE LCD_WrC
18865     BIS.B #2,&$243
18866     JMP LCD_W 
18867 ENDCODE
18868
18869
18870 CODE LCD_WrF
18871     BIC.B #2,&$243
18872     JMP LCD_W 
18873 ENDCODE
18874
18875
18876 : LCD_Clear 
18877     $01 LCD_WrF 100 20_us
18878 ;
18879
18880
18881 : LCD_Home 
18882     $02 LCD_WrF 100 20_us 
18883 ;
18884
18885
18886 [UNDEFINED] OR [IF]
18887
18888 CODE OR
18889 BIS @R15+,R14
18890 MOV @R13+,R0
18891 ENDCODE
18892
18893
18894 [THEN]
18895
18896 : LCD_Entry_set     $04 OR LCD_WrF ;
18897
18898 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
18899
18900 : LCD_DSP_Shift     $10 OR LCD_WrF ;
18901
18902 : LCD_Fn_Set        $20 OR LCD_WrF ;
18903
18904 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
18905
18906 : LCD_Goto          $80 OR LCD_WrF ;
18907
18908 CODE LCD_R
18909     BIC.B #$0F,&$224
18910     BIS.B #1,&$243
18911 COLON
18912     TOP_LCD 2 20_us
18913     TOP_LCD 2 20_us
18914 HI2LO
18915     RLAM #4,0(R15)
18916     ADD.B @R15+,R14
18917     MOV @R1+,R13
18918     MOV @R13+,R0
18919 ENDCODE
18920
18921
18922 CODE LCD_RdS
18923     BIC.B #2,&$243
18924     JMP LCD_R
18925 ENDCODE
18926
18927
18928 CODE LCD_RdC
18929     BIS.B #2,&$243
18930     JMP LCD_R
18931 ENDCODE
18932
18933
18934
18935 ASM WDT_INT
18936 BIT.B #$20,&$240
18937 0= IF
18938     CMP #19,&$3D6
18939     U< IF
18940         ADD #1,&$3D6
18941     THEN
18942 ELSE
18943     BIT.B #$40,&$240
18944     0= IF
18945         CMP #3,&$3D6
18946         U>= IF
18947            SUB #1,&$3D6
18948         THEN
18949     THEN
18950 THEN
18951 BW1
18952 BW2
18953 BW3
18954 BIC #$78,0(R1)
18955 RETI
18956 ENDASM
18957
18958
18959 ASM RC5_INT
18960   MOV #1,&$3A0
18961 MOV #1778,R9
18962 MOV #14,R10
18963 BEGIN
18964 MOV #%1011100100,&$380
18965     RRUM    #1,R9
18966     MOV     R9,R8
18967     RRUM    #1,R8
18968     ADD     R9,R8
18969     BEGIN   CMP R8,&$390
18970     U>= UNTIL
18971     BIT.B   #4,&$200
18972     ADDC    R11,R11
18973     MOV.B   &$200,&$208
18974     BIC.B   #4,&$20C
18975     SUB     #1,R10
18976 0<> WHILE
18977     ADD R9,R8
18978     BEGIN
18979         MOV &$390,R9
18980         CMP R8,R9
18981         U>= IF
18982         BIC #$30,&$380
18983         GOTO BW1
18984         THEN
18985         BIT.B #4,&$20C
18986     0<> UNTIL
18987 REPEAT
18988 BIC #$30,&$380
18989 RLAM    #1,R11
18990 MOV.B   R11,R9
18991 RRUM    #2,R9
18992 BIT     #$4000,R11
18993 0= IF   BIS #$40,R9
18994 THEN
18995 RRUM    #3,R11
18996 XOR     @R1,R11
18997 BIT     #$400,R11
18998 0= ?GOTO BW2
18999 XOR #$400,0(R1)
19000 SUB #4,R15
19001 MOV &BASE,2(R15)
19002 MOV #$10,&BASE
19003 MOV R14,0(R15)
19004 MOV R9,R14
19005 LO2HI
19006     ['] LCD_CLEAR IS CR
19007     ['] LCD_WrC  IS EMIT
19008     CR ." $" 2 U.R
19009     ['] CR >BODY IS CR
19010     ['] EMIT >BODY IS EMIT
19011 HI2LO
19012 MOV R14,&BASE
19013 MOV @R15+,R14
19014 GOTO BW3
19015 ENDASM
19016
19017
19018 ASM BACKGROUND
19019 MOV #SLEEP,R9
19020 ADD #4,R9
19021 MOV R9,R0
19022 ENDASM
19023
19024
19025 CODE START
19026     MOV #%1011010100,&$3C0
19027     MOV #1,&$3E0
19028     MOV #19,&$3D2
19029     MOV #%01100000,&$3C6
19030     MOV #10,&$3D6
19031     BIS.B #$20,&$204
19032     BIS.B #$20,&$20A
19033     BIS.B #7,&$245
19034     BIC.B #7,&$247
19035     BIS.B #$0F,&$224
19036     BIC.B #$0F,&$226
19037     BIS.B #4,&$20A
19038     BIC.B #4,&$20C
19039     MOV #RC5_INT,&$FFDE
19040     MOV #%0100010100,&$340
19041     MOV ##1638,&$352
19042     MOV #%10000,&$342
19043     MOV #WDT_INT,&$FFEA
19044
19045     MOV #SLEEP,R9
19046     MOV #BACKGROUND,2(R9)
19047
19048 LO2HI
19049
19050     $03E8 20_US
19051     $03 TOP_LCD
19052     $CD 20_US
19053     $03 TOP_LCD
19054     $5 20_US
19055     $03 TOP_LCD
19056     $2 20_US
19057     $02 TOP_LCD
19058     $2 20_US
19059     $28 LCD_WRF
19060     $08 LCD_WRF
19061     LCD_Clear
19062     $06 LCD_WRF
19063     $0C LCD_WRF
19064     LCD_Clear
19065     ['] LCD_HOME IS CR
19066     ['] LCD_WRC  IS EMIT
19067     CR ." I love you"   
19068     ['] CR >BODY IS CR
19069     ['] EMIT >BODY IS EMIT
19070     ." RC5toLCD is running. Type STOP to quit"
19071     LIT RECURSE IS WARM
19072     ABORT
19073 ;
19074
19075
19076 CODE STOP
19077     MOV #SLEEP,R9
19078     ADD #4,R9
19079     MOV R9,-2(R9)
19080
19081 COLON
19082     ['] WARM >BODY IS WARM
19083
19084     COLD
19085 ;
19086
19087
19088
19089             ; downloading RC5toLCD.4th is done
19090 RST_HERE    ; this app is protected against <reset>
19091
19092 [THEN]
19093
19094
19095
19096
19097
19098 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
19099
19100 [DEFINED] ASM [IF]
19101
19102 MARKER {RC5TOLCD}
19103
19104 [UNDEFINED] MAX [IF]
19105
19106 CODE MAX
19107     CMP @R15,R14
19108     S<  ?GOTO FW1
19109 BW1 ADD #2,R15
19110     MOV @R13+,R0
19111 ENDCODE
19112
19113
19114 CODE MIN
19115     CMP @R15,R14
19116     S<  ?GOTO BW1
19117 FW1 MOV @R15+,R14
19118     MOV @R13+,R0
19119 ENDCODE
19120
19121 [THEN]
19122
19123
19124 [UNDEFINED] U.R [IF]
19125 : U.R
19126   >R  <# 0 # #S #>  
19127   R> OVER - 0 MAX SPACES TYPE
19128 ;
19129 [THEN]
19130
19131
19132
19133 CODE 20_US
19134 BEGIN
19135     BEGIN
19136         BIT #1,&$3C0
19137     0<> UNTIL
19138     BIC #1,&$3C0
19139     SUB #1,R14
19140 U< UNTIL
19141 MOV @R15+,R14
19142 MOV @R13+,R0
19143 ENDCODE
19144
19145
19146 CODE TOP_LCD
19147     BIS.B #4,&$243
19148     BIT.B #1,&$241
19149 0= IF
19150     AND.B #$0F,R14
19151     MOV.B R14,&$222
19152     BIC.B #4,&$243
19153     MOV @R15+,R14
19154     MOV @R13+,R0
19155 THEN
19156     SUB #2,R15
19157     MOV R14,0(R15)
19158     BIC.B #4,&$243
19159     MOV.B &$220,R14
19160     AND.B #$0F,R14
19161     MOV @R13+,R0
19162 ENDCODE
19163
19164
19165 CODE LCD_W
19166     SUB #2,R15
19167     MOV R14,0(R15)
19168     RRUM #4,R14
19169     BIC.B #1,&$243
19170     BIS.B #$0F,&$224
19171 COLON
19172     TOP_LCD 2 20_US
19173     TOP_LCD 2 20_US 
19174 ;
19175
19176
19177 CODE LCD_WrC
19178     BIS.B #2,&$243
19179     JMP LCD_W 
19180 ENDCODE
19181
19182
19183 CODE LCD_WrF
19184     BIC.B #2,&$243
19185     JMP LCD_W 
19186 ENDCODE
19187
19188
19189 : LCD_Clear 
19190     $01 LCD_WrF 100 20_us
19191 ;
19192
19193
19194 : LCD_Home 
19195     $02 LCD_WrF 100 20_us 
19196 ;
19197
19198
19199 [UNDEFINED] OR [IF]
19200
19201 CODE OR
19202 BIS @R15+,R14
19203 MOV @R13+,R0
19204 ENDCODE
19205
19206
19207 [THEN]
19208
19209 : LCD_Entry_set     $04 OR LCD_WrF ;
19210
19211 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
19212
19213 : LCD_DSP_Shift     $10 OR LCD_WrF ;
19214
19215 : LCD_Fn_Set        $20 OR LCD_WrF ;
19216
19217 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
19218
19219 : LCD_Goto          $80 OR LCD_WrF ;
19220
19221 CODE LCD_R
19222     BIC.B #$0F,&$224
19223     BIS.B #1,&$243
19224 COLON
19225     TOP_LCD 2 20_us
19226     TOP_LCD 2 20_us
19227 HI2LO
19228     RLAM #4,0(R15)
19229     ADD.B @R15+,R14
19230     MOV @R1+,R13
19231     MOV @R13+,R0
19232 ENDCODE
19233
19234
19235 CODE LCD_RdS
19236     BIC.B #2,&$243
19237     JMP LCD_R
19238 ENDCODE
19239
19240
19241 CODE LCD_RdC
19242     BIS.B #2,&$243
19243     JMP LCD_R
19244 ENDCODE
19245
19246
19247
19248 ASM WDT_INT
19249 BIT.B #$20,&$240
19250 0= IF
19251     CMP #19,&$3D6
19252     U< IF
19253         ADD #1,&$3D6
19254     THEN
19255 ELSE
19256     BIT.B #$40,&$240
19257     0= IF
19258         CMP #3,&$3D6
19259         U>= IF
19260            SUB #1,&$3D6
19261         THEN
19262     THEN
19263 THEN
19264 BW1
19265 BW2
19266 BW3
19267 BIC #$78,0(R1)
19268 RETI
19269 ENDASM
19270
19271
19272 ASM RC5_INT
19273   MOV #1,&$3A0
19274 MOV #1778,R9
19275 MOV #14,R10
19276 BEGIN
19277 MOV #%1011100100,&$380
19278     RRUM    #1,R9
19279     MOV     R9,R8
19280     RRUM    #1,R8
19281     ADD     R9,R8
19282     BEGIN   CMP R8,&$390
19283     U>= UNTIL
19284     BIT.B   #4,&$200
19285     ADDC    R11,R11
19286     MOV.B   &$200,&$208
19287     BIC.B   #4,&$20C
19288     SUB     #1,R10
19289 0<> WHILE
19290     ADD R9,R8
19291     BEGIN
19292         MOV &$390,R9
19293         CMP R8,R9
19294         U>= IF
19295         BIC #$30,&$380
19296         GOTO BW1
19297         THEN
19298         BIT.B #4,&$20C
19299     0<> UNTIL
19300 REPEAT
19301 BIC #$30,&$380
19302 RLAM    #1,R11
19303 MOV.B   R11,R9
19304 RRUM    #2,R9
19305 BIT     #$4000,R11
19306 0= IF   BIS #$40,R9
19307 THEN
19308 RRUM    #3,R11
19309 XOR     @R1,R11
19310 BIT     #$400,R11
19311 0= ?GOTO BW2
19312 XOR #$400,0(R1)
19313 SUB #4,R15
19314 MOV &BASE,2(R15)
19315 MOV #$10,&BASE
19316 MOV R14,0(R15)
19317 MOV R9,R14
19318 LO2HI
19319     ['] LCD_CLEAR IS CR
19320     ['] LCD_WrC  IS EMIT
19321     CR ." $" 2 U.R
19322     ['] CR >BODY IS CR
19323     ['] EMIT >BODY IS EMIT
19324 HI2LO
19325 MOV R14,&BASE
19326 MOV @R15+,R14
19327 GOTO BW3
19328 ENDASM
19329
19330
19331 ASM BACKGROUND
19332 MOV #SLEEP,R9
19333 ADD #4,R9
19334 MOV R9,R0
19335 ENDASM
19336
19337
19338 CODE START
19339     MOV #%1011010100,&$3C0
19340     MOV #1,&$3E0
19341     MOV #19,&$3D2
19342     MOV #%01100000,&$3C6
19343     MOV #10,&$3D6
19344     BIS.B #$20,&$204
19345     BIS.B #$20,&$20A
19346     BIS.B #7,&$245
19347     BIC.B #7,&$247
19348     BIS.B #$0F,&$224
19349     BIC.B #$0F,&$226
19350     BIS.B #4,&$20A
19351     BIC.B #4,&$20C
19352     MOV #RC5_INT,&$FFDE
19353     MOV #%0100010100,&$340
19354     MOV ##1638,&$352
19355     MOV #%10000,&$342
19356     MOV #WDT_INT,&$FFEA
19357
19358     MOV #SLEEP,R9
19359     MOV #BACKGROUND,2(R9)
19360
19361 LO2HI
19362
19363     $03E8 20_US
19364     $03 TOP_LCD
19365     $CD 20_US
19366     $03 TOP_LCD
19367     $5 20_US
19368     $03 TOP_LCD
19369     $2 20_US
19370     $02 TOP_LCD
19371     $2 20_US
19372     $28 LCD_WRF
19373     $08 LCD_WRF
19374     LCD_Clear
19375     $06 LCD_WRF
19376     $0C LCD_WRF
19377     LCD_Clear
19378     ['] LCD_HOME IS CR
19379     ['] LCD_WRC  IS EMIT
19380     CR ." I love you"   
19381     ['] CR >BODY IS CR
19382     ['] EMIT >BODY IS EMIT
19383     ." RC5toLCD is running. Type STOP to quit"
19384     LIT RECURSE IS WARM
19385     ABORT
19386 ;
19387
19388
19389 CODE STOP
19390     MOV #SLEEP,R9
19391     ADD #4,R9
19392     MOV R9,-2(R9)
19393
19394 COLON
19395     ['] WARM >BODY IS WARM
19396
19397     COLD
19398 ;
19399
19400
19401
19402             ; downloading RC5toLCD.4th is done
19403 RST_HERE    ; this app is protected against <reset>
19404
19405 [THEN]
19406
19407
19408
19409
19410
19411 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
19412
19413 [DEFINED] ASM [IF]
19414
19415 MARKER {RC5TOLCD}
19416
19417 [UNDEFINED] MAX [IF]
19418
19419 CODE MAX
19420     CMP @R15,R14
19421     S<  ?GOTO FW1
19422 BW1 ADD #2,R15
19423     MOV @R13+,R0
19424 ENDCODE
19425
19426
19427 CODE MIN
19428     CMP @R15,R14
19429     S<  ?GOTO BW1
19430 FW1 MOV @R15+,R14
19431     MOV @R13+,R0
19432 ENDCODE
19433
19434 [THEN]
19435
19436
19437 [UNDEFINED] U.R [IF]
19438 : U.R
19439   >R  <# 0 # #S #>  
19440   R> OVER - 0 MAX SPACES TYPE
19441 ;
19442 [THEN]
19443
19444
19445
19446 CODE 20_US
19447 BEGIN
19448     BEGIN
19449         BIT #1,&$3C0
19450     0<> UNTIL
19451     BIC #1,&$3C0
19452     SUB #1,R14
19453 U< UNTIL
19454 MOV @R15+,R14
19455 MOV @R13+,R0
19456 ENDCODE
19457
19458
19459 CODE TOP_LCD
19460     BIS.B #4,&$243
19461     BIT.B #1,&$241
19462 0= IF
19463     AND.B #$0F,R14
19464     MOV.B R14,&$222
19465     BIC.B #4,&$243
19466     MOV @R15+,R14
19467     MOV @R13+,R0
19468 THEN
19469     SUB #2,R15
19470     MOV R14,0(R15)
19471     BIC.B #4,&$243
19472     MOV.B &$220,R14
19473     AND.B #$0F,R14
19474     MOV @R13+,R0
19475 ENDCODE
19476
19477
19478 CODE LCD_W
19479     SUB #2,R15
19480     MOV R14,0(R15)
19481     RRUM #4,R14
19482     BIC.B #1,&$243
19483     BIS.B #$0F,&$224
19484 COLON
19485     TOP_LCD 2 20_US
19486     TOP_LCD 2 20_US 
19487 ;
19488
19489
19490 CODE LCD_WrC
19491     BIS.B #2,&$243
19492     JMP LCD_W 
19493 ENDCODE
19494
19495
19496 CODE LCD_WrF
19497     BIC.B #2,&$243
19498     JMP LCD_W 
19499 ENDCODE
19500
19501
19502 : LCD_Clear 
19503     $01 LCD_WrF 100 20_us
19504 ;
19505
19506
19507 : LCD_Home 
19508     $02 LCD_WrF 100 20_us 
19509 ;
19510
19511
19512 [UNDEFINED] OR [IF]
19513
19514 CODE OR
19515 BIS @R15+,R14
19516 MOV @R13+,R0
19517 ENDCODE
19518
19519
19520 [THEN]
19521
19522 : LCD_Entry_set     $04 OR LCD_WrF ;
19523
19524 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
19525
19526 : LCD_DSP_Shift     $10 OR LCD_WrF ;
19527
19528 : LCD_Fn_Set        $20 OR LCD_WrF ;
19529
19530 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
19531
19532 : LCD_Goto          $80 OR LCD_WrF ;
19533
19534 CODE LCD_R
19535     BIC.B #$0F,&$224
19536     BIS.B #1,&$243
19537 COLON
19538     TOP_LCD 2 20_us
19539     TOP_LCD 2 20_us
19540 HI2LO
19541     RLAM #4,0(R15)
19542     ADD.B @R15+,R14
19543     MOV @R1+,R13
19544     MOV @R13+,R0
19545 ENDCODE
19546
19547
19548 CODE LCD_RdS
19549     BIC.B #2,&$243
19550     JMP LCD_R
19551 ENDCODE
19552
19553
19554 CODE LCD_RdC
19555     BIS.B #2,&$243
19556     JMP LCD_R
19557 ENDCODE
19558
19559
19560
19561 ASM WDT_INT
19562 BIT.B #$20,&$240
19563 0= IF
19564     CMP #19,&$3D6
19565     U< IF
19566         ADD #1,&$3D6
19567     THEN
19568 ELSE
19569     BIT.B #$40,&$240
19570     0= IF
19571         CMP #3,&$3D6
19572         U>= IF
19573            SUB #1,&$3D6
19574         THEN
19575     THEN
19576 THEN
19577 BW1
19578 BW2
19579 BW3
19580 BIC #$78,0(R1)
19581 RETI
19582 ENDASM
19583
19584
19585 ASM RC5_INT
19586   MOV #1,&$3A0
19587 MOV #1778,R9
19588 MOV #14,R10
19589 BEGIN
19590 MOV #%1011100100,&$380
19591     RRUM    #1,R9
19592     MOV     R9,R8
19593     RRUM    #1,R8
19594     ADD     R9,R8
19595     BEGIN   CMP R8,&$390
19596     U>= UNTIL
19597     BIT.B   #4,&$200
19598     ADDC    R11,R11
19599     MOV.B   &$200,&$208
19600     BIC.B   #4,&$20C
19601     SUB     #1,R10
19602 0<> WHILE
19603     ADD R9,R8
19604     BEGIN
19605         MOV &$390,R9
19606         CMP R8,R9
19607         U>= IF
19608         BIC #$30,&$380
19609         GOTO BW1
19610         THEN
19611         BIT.B #4,&$20C
19612     0<> UNTIL
19613 REPEAT
19614 BIC #$30,&$380
19615 RLAM    #1,R11
19616 MOV.B   R11,R9
19617 RRUM    #2,R9
19618 BIT     #$4000,R11
19619 0= IF   BIS #$40,R9
19620 THEN
19621 RRUM    #3,R11
19622 XOR     @R1,R11
19623 BIT     #$400,R11
19624 0= ?GOTO BW2
19625 XOR #$400,0(R1)
19626 SUB #4,R15
19627 MOV &BASE,2(R15)
19628 MOV #$10,&BASE
19629 MOV R14,0(R15)
19630 MOV R9,R14
19631 LO2HI
19632     ['] LCD_CLEAR IS CR
19633     ['] LCD_WrC  IS EMIT
19634     CR ." $" 2 U.R
19635     ['] CR >BODY IS CR
19636     ['] EMIT >BODY IS EMIT
19637 HI2LO
19638 MOV R14,&BASE
19639 MOV @R15+,R14
19640 GOTO BW3
19641 ENDASM
19642
19643
19644 ASM BACKGROUND
19645 MOV #SLEEP,R9
19646 ADD #4,R9
19647 MOV R9,R0
19648 ENDASM
19649
19650
19651 CODE START
19652     MOV #%1011010100,&$3C0
19653     MOV #1,&$3E0
19654     MOV #19,&$3D2
19655     MOV #%01100000,&$3C6
19656     MOV #10,&$3D6
19657     BIS.B #$20,&$204
19658     BIS.B #$20,&$20A
19659     BIS.B #7,&$245
19660     BIC.B #7,&$247
19661     BIS.B #$0F,&$224
19662     BIC.B #$0F,&$226
19663     BIS.B #4,&$20A
19664     BIC.B #4,&$20C
19665     MOV #RC5_INT,&$FFDE
19666     MOV #%0100010100,&$340
19667     MOV ##1638,&$352
19668     MOV #%10000,&$342
19669     MOV #WDT_INT,&$FFEA
19670
19671     MOV #SLEEP,R9
19672     MOV #BACKGROUND,2(R9)
19673
19674 LO2HI
19675
19676     $03E8 20_US
19677     $03 TOP_LCD
19678     $CD 20_US
19679     $03 TOP_LCD
19680     $5 20_US
19681     $03 TOP_LCD
19682     $2 20_US
19683     $02 TOP_LCD
19684     $2 20_US
19685     $28 LCD_WRF
19686     $08 LCD_WRF
19687     LCD_Clear
19688     $06 LCD_WRF
19689     $0C LCD_WRF
19690     LCD_Clear
19691     ['] LCD_HOME IS CR
19692     ['] LCD_WRC  IS EMIT
19693     CR ." I love you"   
19694     ['] CR >BODY IS CR
19695     ['] EMIT >BODY IS EMIT
19696     ." RC5toLCD is running. Type STOP to quit"
19697     LIT RECURSE IS WARM
19698     ABORT
19699 ;
19700
19701
19702 CODE STOP
19703     MOV #SLEEP,R9
19704     ADD #4,R9
19705     MOV R9,-2(R9)
19706
19707 COLON
19708     ['] WARM >BODY IS WARM
19709
19710     COLD
19711 ;
19712
19713
19714
19715             ; downloading RC5toLCD.4th is done
19716 RST_HERE    ; this app is protected against <reset>
19717
19718 [THEN]
19719
19720
19721
19722
19723
19724 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
19725
19726 [DEFINED] ASM [IF]
19727
19728 MARKER {RC5TOLCD}
19729
19730 [UNDEFINED] MAX [IF]
19731
19732 CODE MAX
19733     CMP @R15,R14
19734     S<  ?GOTO FW1
19735 BW1 ADD #2,R15
19736     MOV @R13+,R0
19737 ENDCODE
19738
19739
19740 CODE MIN
19741     CMP @R15,R14
19742     S<  ?GOTO BW1
19743 FW1 MOV @R15+,R14
19744     MOV @R13+,R0
19745 ENDCODE
19746
19747 [THEN]
19748
19749
19750 [UNDEFINED] U.R [IF]
19751 : U.R
19752   >R  <# 0 # #S #>  
19753   R> OVER - 0 MAX SPACES TYPE
19754 ;
19755 [THEN]
19756
19757
19758
19759 CODE 20_US
19760 BEGIN
19761     BEGIN
19762         BIT #1,&$3C0
19763     0<> UNTIL
19764     BIC #1,&$3C0
19765     SUB #1,R14
19766 U< UNTIL
19767 MOV @R15+,R14
19768 MOV @R13+,R0
19769 ENDCODE
19770
19771
19772 CODE TOP_LCD
19773     BIS.B #4,&$243
19774     BIT.B #1,&$241
19775 0= IF
19776     AND.B #$0F,R14
19777     MOV.B R14,&$222
19778     BIC.B #4,&$243
19779     MOV @R15+,R14
19780     MOV @R13+,R0
19781 THEN
19782     SUB #2,R15
19783     MOV R14,0(R15)
19784     BIC.B #4,&$243
19785     MOV.B &$220,R14
19786     AND.B #$0F,R14
19787     MOV @R13+,R0
19788 ENDCODE
19789
19790
19791 CODE LCD_W
19792     SUB #2,R15
19793     MOV R14,0(R15)
19794     RRUM #4,R14
19795     BIC.B #1,&$243
19796     BIS.B #$0F,&$224
19797 COLON
19798     TOP_LCD 2 20_US
19799     TOP_LCD 2 20_US 
19800 ;
19801
19802
19803 CODE LCD_WrC
19804     BIS.B #2,&$243
19805     JMP LCD_W 
19806 ENDCODE
19807
19808
19809 CODE LCD_WrF
19810     BIC.B #2,&$243
19811     JMP LCD_W 
19812 ENDCODE
19813
19814
19815 : LCD_Clear 
19816     $01 LCD_WrF 100 20_us
19817 ;
19818
19819
19820 : LCD_Home 
19821     $02 LCD_WrF 100 20_us 
19822 ;
19823
19824
19825 [UNDEFINED] OR [IF]
19826
19827 CODE OR
19828 BIS @R15+,R14
19829 MOV @R13+,R0
19830 ENDCODE
19831
19832
19833 [THEN]
19834
19835 : LCD_Entry_set     $04 OR LCD_WrF ;
19836
19837 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
19838
19839 : LCD_DSP_Shift     $10 OR LCD_WrF ;
19840
19841 : LCD_Fn_Set        $20 OR LCD_WrF ;
19842
19843 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
19844
19845 : LCD_Goto          $80 OR LCD_WrF ;
19846
19847 CODE LCD_R
19848     BIC.B #$0F,&$224
19849     BIS.B #1,&$243
19850 COLON
19851     TOP_LCD 2 20_us
19852     TOP_LCD 2 20_us
19853 HI2LO
19854     RLAM #4,0(R15)
19855     ADD.B @R15+,R14
19856     MOV @R1+,R13
19857     MOV @R13+,R0
19858 ENDCODE
19859
19860
19861 CODE LCD_RdS
19862     BIC.B #2,&$243
19863     JMP LCD_R
19864 ENDCODE
19865
19866
19867 CODE LCD_RdC
19868     BIS.B #2,&$243
19869     JMP LCD_R
19870 ENDCODE
19871
19872
19873
19874 ASM WDT_INT
19875 BIT.B #$20,&$240
19876 0= IF
19877     CMP #19,&$3D6
19878     U< IF
19879         ADD #1,&$3D6
19880     THEN
19881 ELSE
19882     BIT.B #$40,&$240
19883     0= IF
19884         CMP #3,&$3D6
19885         U>= IF
19886            SUB #1,&$3D6
19887         THEN
19888     THEN
19889 THEN
19890 BW1
19891 BW2
19892 BW3
19893 BIC #$78,0(R1)
19894 RETI
19895 ENDASM
19896
19897
19898 ASM RC5_INT
19899   MOV #1,&$3A0
19900 MOV #1778,R9
19901 MOV #14,R10
19902 BEGIN
19903 MOV #%1011100100,&$380
19904     RRUM    #1,R9
19905     MOV     R9,R8
19906     RRUM    #1,R8
19907     ADD     R9,R8
19908     BEGIN   CMP R8,&$390
19909     U>= UNTIL
19910     BIT.B   #4,&$200
19911     ADDC    R11,R11
19912     MOV.B   &$200,&$208
19913     BIC.B   #4,&$20C
19914     SUB     #1,R10
19915 0<> WHILE
19916     ADD R9,R8
19917     BEGIN
19918         MOV &$390,R9
19919         CMP R8,R9
19920         U>= IF
19921         BIC #$30,&$380
19922         GOTO BW1
19923         THEN
19924         BIT.B #4,&$20C
19925     0<> UNTIL
19926 REPEAT
19927 BIC #$30,&$380
19928 RLAM    #1,R11
19929 MOV.B   R11,R9
19930 RRUM    #2,R9
19931 BIT     #$4000,R11
19932 0= IF   BIS #$40,R9
19933 THEN
19934 RRUM    #3,R11
19935 XOR     @R1,R11
19936 BIT     #$400,R11
19937 0= ?GOTO BW2
19938 XOR #$400,0(R1)
19939 SUB #4,R15
19940 MOV &BASE,2(R15)
19941 MOV #$10,&BASE
19942 MOV R14,0(R15)
19943 MOV R9,R14
19944 LO2HI
19945     ['] LCD_CLEAR IS CR
19946     ['] LCD_WrC  IS EMIT
19947     CR ." $" 2 U.R
19948     ['] CR >BODY IS CR
19949     ['] EMIT >BODY IS EMIT
19950 HI2LO
19951 MOV R14,&BASE
19952 MOV @R15+,R14
19953 GOTO BW3
19954 ENDASM
19955
19956
19957 ASM BACKGROUND
19958 MOV #SLEEP,R9
19959 ADD #4,R9
19960 MOV R9,R0
19961 ENDASM
19962
19963
19964 CODE START
19965     MOV #%1011010100,&$3C0
19966     MOV #1,&$3E0
19967     MOV #19,&$3D2
19968     MOV #%01100000,&$3C6
19969     MOV #10,&$3D6
19970     BIS.B #$20,&$204
19971     BIS.B #$20,&$20A
19972     BIS.B #7,&$245
19973     BIC.B #7,&$247
19974     BIS.B #$0F,&$224
19975     BIC.B #$0F,&$226
19976     BIS.B #4,&$20A
19977     BIC.B #4,&$20C
19978     MOV #RC5_INT,&$FFDE
19979     MOV #%0100010100,&$340
19980     MOV ##1638,&$352
19981     MOV #%10000,&$342
19982     MOV #WDT_INT,&$FFEA
19983
19984     MOV #SLEEP,R9
19985     MOV #BACKGROUND,2(R9)
19986
19987 LO2HI
19988
19989     $03E8 20_US
19990     $03 TOP_LCD
19991     $CD 20_US
19992     $03 TOP_LCD
19993     $5 20_US
19994     $03 TOP_LCD
19995     $2 20_US
19996     $02 TOP_LCD
19997     $2 20_US
19998     $28 LCD_WRF
19999     $08 LCD_WRF
20000     LCD_Clear
20001     $06 LCD_WRF
20002     $0C LCD_WRF
20003     LCD_Clear
20004     ['] LCD_HOME IS CR
20005     ['] LCD_WRC  IS EMIT
20006     CR ." I love you"   
20007     ['] CR >BODY IS CR
20008     ['] EMIT >BODY IS EMIT
20009     ." RC5toLCD is running. Type STOP to quit"
20010     LIT RECURSE IS WARM
20011     ABORT
20012 ;
20013
20014
20015 CODE STOP
20016     MOV #SLEEP,R9
20017     ADD #4,R9
20018     MOV R9,-2(R9)
20019
20020 COLON
20021     ['] WARM >BODY IS WARM
20022
20023     COLD
20024 ;
20025
20026
20027
20028             ; downloading RC5toLCD.4th is done
20029 RST_HERE    ; this app is protected against <reset>
20030
20031 [THEN]
20032
20033
20034
20035
20036
20037 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
20038
20039 [DEFINED] ASM [IF]
20040
20041 MARKER {RC5TOLCD}
20042
20043 [UNDEFINED] MAX [IF]
20044
20045 CODE MAX
20046     CMP @R15,R14
20047     S<  ?GOTO FW1
20048 BW1 ADD #2,R15
20049     MOV @R13+,R0
20050 ENDCODE
20051
20052
20053 CODE MIN
20054     CMP @R15,R14
20055     S<  ?GOTO BW1
20056 FW1 MOV @R15+,R14
20057     MOV @R13+,R0
20058 ENDCODE
20059
20060 [THEN]
20061
20062
20063 [UNDEFINED] U.R [IF]
20064 : U.R
20065   >R  <# 0 # #S #>  
20066   R> OVER - 0 MAX SPACES TYPE
20067 ;
20068 [THEN]
20069
20070
20071
20072 CODE 20_US
20073 BEGIN
20074     BEGIN
20075         BIT #1,&$3C0
20076     0<> UNTIL
20077     BIC #1,&$3C0
20078     SUB #1,R14
20079 U< UNTIL
20080 MOV @R15+,R14
20081 MOV @R13+,R0
20082 ENDCODE
20083
20084
20085 CODE TOP_LCD
20086     BIS.B #4,&$243
20087     BIT.B #1,&$241
20088 0= IF
20089     AND.B #$0F,R14
20090     MOV.B R14,&$222
20091     BIC.B #4,&$243
20092     MOV @R15+,R14
20093     MOV @R13+,R0
20094 THEN
20095     SUB #2,R15
20096     MOV R14,0(R15)
20097     BIC.B #4,&$243
20098     MOV.B &$220,R14
20099     AND.B #$0F,R14
20100     MOV @R13+,R0
20101 ENDCODE
20102
20103
20104 CODE LCD_W
20105     SUB #2,R15
20106     MOV R14,0(R15)
20107     RRUM #4,R14
20108     BIC.B #1,&$243
20109     BIS.B #$0F,&$224
20110 COLON
20111     TOP_LCD 2 20_US
20112     TOP_LCD 2 20_US 
20113 ;
20114
20115
20116 CODE LCD_WrC
20117     BIS.B #2,&$243
20118     JMP LCD_W 
20119 ENDCODE
20120
20121
20122 CODE LCD_WrF
20123     BIC.B #2,&$243
20124     JMP LCD_W 
20125 ENDCODE
20126
20127
20128 : LCD_Clear 
20129     $01 LCD_WrF 100 20_us
20130 ;
20131
20132
20133 : LCD_Home 
20134     $02 LCD_WrF 100 20_us 
20135 ;
20136
20137
20138 [UNDEFINED] OR [IF]
20139
20140 CODE OR
20141 BIS @R15+,R14
20142 MOV @R13+,R0
20143 ENDCODE
20144
20145
20146 [THEN]
20147
20148 : LCD_Entry_set     $04 OR LCD_WrF ;
20149
20150 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
20151
20152 : LCD_DSP_Shift     $10 OR LCD_WrF ;
20153
20154 : LCD_Fn_Set        $20 OR LCD_WrF ;
20155
20156 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
20157
20158 : LCD_Goto          $80 OR LCD_WrF ;
20159
20160 CODE LCD_R
20161     BIC.B #$0F,&$224
20162     BIS.B #1,&$243
20163 COLON
20164     TOP_LCD 2 20_us
20165     TOP_LCD 2 20_us
20166 HI2LO
20167     RLAM #4,0(R15)
20168     ADD.B @R15+,R14
20169     MOV @R1+,R13
20170     MOV @R13+,R0
20171 ENDCODE
20172
20173
20174 CODE LCD_RdS
20175     BIC.B #2,&$243
20176     JMP LCD_R
20177 ENDCODE
20178
20179
20180 CODE LCD_RdC
20181     BIS.B #2,&$243
20182     JMP LCD_R
20183 ENDCODE
20184
20185
20186
20187 ASM WDT_INT
20188 BIT.B #$20,&$240
20189 0= IF
20190     CMP #19,&$3D6
20191     U< IF
20192         ADD #1,&$3D6
20193     THEN
20194 ELSE
20195     BIT.B #$40,&$240
20196     0= IF
20197         CMP #3,&$3D6
20198         U>= IF
20199            SUB #1,&$3D6
20200         THEN
20201     THEN
20202 THEN
20203 BW1
20204 BW2
20205 BW3
20206 BIC #$78,0(R1)
20207 RETI
20208 ENDASM
20209
20210
20211 ASM RC5_INT
20212   MOV #1,&$3A0
20213 MOV #1778,R9
20214 MOV #14,R10
20215 BEGIN
20216 MOV #%1011100100,&$380
20217     RRUM    #1,R9
20218     MOV     R9,R8
20219     RRUM    #1,R8
20220     ADD     R9,R8
20221     BEGIN   CMP R8,&$390
20222     U>= UNTIL
20223     BIT.B   #4,&$200
20224     ADDC    R11,R11
20225     MOV.B   &$200,&$208
20226     BIC.B   #4,&$20C
20227     SUB     #1,R10
20228 0<> WHILE
20229     ADD R9,R8
20230     BEGIN
20231         MOV &$390,R9
20232         CMP R8,R9
20233         U>= IF
20234         BIC #$30,&$380
20235         GOTO BW1
20236         THEN
20237         BIT.B #4,&$20C
20238     0<> UNTIL
20239 REPEAT
20240 BIC #$30,&$380
20241 RLAM    #1,R11
20242 MOV.B   R11,R9
20243 RRUM    #2,R9
20244 BIT     #$4000,R11
20245 0= IF   BIS #$40,R9
20246 THEN
20247 RRUM    #3,R11
20248 XOR     @R1,R11
20249 BIT     #$400,R11
20250 0= ?GOTO BW2
20251 XOR #$400,0(R1)
20252 SUB #4,R15
20253 MOV &BASE,2(R15)
20254 MOV #$10,&BASE
20255 MOV R14,0(R15)
20256 MOV R9,R14
20257 LO2HI
20258     ['] LCD_CLEAR IS CR
20259     ['] LCD_WrC  IS EMIT
20260     CR ." $" 2 U.R
20261     ['] CR >BODY IS CR
20262     ['] EMIT >BODY IS EMIT
20263 HI2LO
20264 MOV R14,&BASE
20265 MOV @R15+,R14
20266 GOTO BW3
20267 ENDASM
20268
20269
20270 ASM BACKGROUND
20271 MOV #SLEEP,R9
20272 ADD #4,R9
20273 MOV R9,R0
20274 ENDASM
20275
20276
20277 CODE START
20278     MOV #%1011010100,&$3C0
20279     MOV #1,&$3E0
20280     MOV #19,&$3D2
20281     MOV #%01100000,&$3C6
20282     MOV #10,&$3D6
20283     BIS.B #$20,&$204
20284     BIS.B #$20,&$20A
20285     BIS.B #7,&$245
20286     BIC.B #7,&$247
20287     BIS.B #$0F,&$224
20288     BIC.B #$0F,&$226
20289     BIS.B #4,&$20A
20290     BIC.B #4,&$20C
20291     MOV #RC5_INT,&$FFDE
20292     MOV #%0100010100,&$340
20293     MOV ##1638,&$352
20294     MOV #%10000,&$342
20295     MOV #WDT_INT,&$FFEA
20296
20297     MOV #SLEEP,R9
20298     MOV #BACKGROUND,2(R9)
20299
20300 LO2HI
20301
20302     $03E8 20_US
20303     $03 TOP_LCD
20304     $CD 20_US
20305     $03 TOP_LCD
20306     $5 20_US
20307     $03 TOP_LCD
20308     $2 20_US
20309     $02 TOP_LCD
20310     $2 20_US
20311     $28 LCD_WRF
20312     $08 LCD_WRF
20313     LCD_Clear
20314     $06 LCD_WRF
20315     $0C LCD_WRF
20316     LCD_Clear
20317     ['] LCD_HOME IS CR
20318     ['] LCD_WRC  IS EMIT
20319     CR ." I love you"   
20320     ['] CR >BODY IS CR
20321     ['] EMIT >BODY IS EMIT
20322     ." RC5toLCD is running. Type STOP to quit"
20323     LIT RECURSE IS WARM
20324     ABORT
20325 ;
20326
20327
20328 CODE STOP
20329     MOV #SLEEP,R9
20330     ADD #4,R9
20331     MOV R9,-2(R9)
20332
20333 COLON
20334     ['] WARM >BODY IS WARM
20335
20336     COLD
20337 ;
20338
20339
20340
20341             ; downloading RC5toLCD.4th is done
20342 RST_HERE    ; this app is protected against <reset>
20343
20344 [THEN]
20345
20346
20347
20348
20349
20350 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
20351
20352 [DEFINED] ASM [IF]
20353
20354 MARKER {RC5TOLCD}
20355
20356 [UNDEFINED] MAX [IF]
20357
20358 CODE MAX
20359     CMP @R15,R14
20360     S<  ?GOTO FW1
20361 BW1 ADD #2,R15
20362     MOV @R13+,R0
20363 ENDCODE
20364
20365
20366 CODE MIN
20367     CMP @R15,R14
20368     S<  ?GOTO BW1
20369 FW1 MOV @R15+,R14
20370     MOV @R13+,R0
20371 ENDCODE
20372
20373 [THEN]
20374
20375
20376 [UNDEFINED] U.R [IF]
20377 : U.R
20378   >R  <# 0 # #S #>  
20379   R> OVER - 0 MAX SPACES TYPE
20380 ;
20381 [THEN]
20382
20383
20384
20385 CODE 20_US
20386 BEGIN
20387     BEGIN
20388         BIT #1,&$3C0
20389     0<> UNTIL
20390     BIC #1,&$3C0
20391     SUB #1,R14
20392 U< UNTIL
20393 MOV @R15+,R14
20394 MOV @R13+,R0
20395 ENDCODE
20396
20397
20398 CODE TOP_LCD
20399     BIS.B #4,&$243
20400     BIT.B #1,&$241
20401 0= IF
20402     AND.B #$0F,R14
20403     MOV.B R14,&$222
20404     BIC.B #4,&$243
20405     MOV @R15+,R14
20406     MOV @R13+,R0
20407 THEN
20408     SUB #2,R15
20409     MOV R14,0(R15)
20410     BIC.B #4,&$243
20411     MOV.B &$220,R14
20412     AND.B #$0F,R14
20413     MOV @R13+,R0
20414 ENDCODE
20415
20416
20417 CODE LCD_W
20418     SUB #2,R15
20419     MOV R14,0(R15)
20420     RRUM #4,R14
20421     BIC.B #1,&$243
20422     BIS.B #$0F,&$224
20423 COLON
20424     TOP_LCD 2 20_US
20425     TOP_LCD 2 20_US 
20426 ;
20427
20428
20429 CODE LCD_WrC
20430     BIS.B #2,&$243
20431     JMP LCD_W 
20432 ENDCODE
20433
20434
20435 CODE LCD_WrF
20436     BIC.B #2,&$243
20437     JMP LCD_W 
20438 ENDCODE
20439
20440
20441 : LCD_Clear 
20442     $01 LCD_WrF 100 20_us
20443 ;
20444
20445
20446 : LCD_Home 
20447     $02 LCD_WrF 100 20_us 
20448 ;
20449
20450
20451 [UNDEFINED] OR [IF]
20452
20453 CODE OR
20454 BIS @R15+,R14
20455 MOV @R13+,R0
20456 ENDCODE
20457
20458
20459 [THEN]
20460
20461 : LCD_Entry_set     $04 OR LCD_WrF ;
20462
20463 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
20464
20465 : LCD_DSP_Shift     $10 OR LCD_WrF ;
20466
20467 : LCD_Fn_Set        $20 OR LCD_WrF ;
20468
20469 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
20470
20471 : LCD_Goto          $80 OR LCD_WrF ;
20472
20473 CODE LCD_R
20474     BIC.B #$0F,&$224
20475     BIS.B #1,&$243
20476 COLON
20477     TOP_LCD 2 20_us
20478     TOP_LCD 2 20_us
20479 HI2LO
20480     RLAM #4,0(R15)
20481     ADD.B @R15+,R14
20482     MOV @R1+,R13
20483     MOV @R13+,R0
20484 ENDCODE
20485
20486
20487 CODE LCD_RdS
20488     BIC.B #2,&$243
20489     JMP LCD_R
20490 ENDCODE
20491
20492
20493 CODE LCD_RdC
20494     BIS.B #2,&$243
20495     JMP LCD_R
20496 ENDCODE
20497
20498
20499
20500 ASM WDT_INT
20501 BIT.B #$20,&$240
20502 0= IF
20503     CMP #19,&$3D6
20504     U< IF
20505         ADD #1,&$3D6
20506     THEN
20507 ELSE
20508     BIT.B #$40,&$240
20509     0= IF
20510         CMP #3,&$3D6
20511         U>= IF
20512            SUB #1,&$3D6
20513         THEN
20514     THEN
20515 THEN
20516 BW1
20517 BW2
20518 BW3
20519 BIC #$78,0(R1)
20520 RETI
20521 ENDASM
20522
20523
20524 ASM RC5_INT
20525   MOV #1,&$3A0
20526 MOV #1778,R9
20527 MOV #14,R10
20528 BEGIN
20529 MOV #%1011100100,&$380
20530     RRUM    #1,R9
20531     MOV     R9,R8
20532     RRUM    #1,R8
20533     ADD     R9,R8
20534     BEGIN   CMP R8,&$390
20535     U>= UNTIL
20536     BIT.B   #4,&$200
20537     ADDC    R11,R11
20538     MOV.B   &$200,&$208
20539     BIC.B   #4,&$20C
20540     SUB     #1,R10
20541 0<> WHILE
20542     ADD R9,R8
20543     BEGIN
20544         MOV &$390,R9
20545         CMP R8,R9
20546         U>= IF
20547         BIC #$30,&$380
20548         GOTO BW1
20549         THEN
20550         BIT.B #4,&$20C
20551     0<> UNTIL
20552 REPEAT
20553 BIC #$30,&$380
20554 RLAM    #1,R11
20555 MOV.B   R11,R9
20556 RRUM    #2,R9
20557 BIT     #$4000,R11
20558 0= IF   BIS #$40,R9
20559 THEN
20560 RRUM    #3,R11
20561 XOR     @R1,R11
20562 BIT     #$400,R11
20563 0= ?GOTO BW2
20564 XOR #$400,0(R1)
20565 SUB #4,R15
20566 MOV &BASE,2(R15)
20567 MOV #$10,&BASE
20568 MOV R14,0(R15)
20569 MOV R9,R14
20570 LO2HI
20571     ['] LCD_CLEAR IS CR
20572     ['] LCD_WrC  IS EMIT
20573     CR ." $" 2 U.R
20574     ['] CR >BODY IS CR
20575     ['] EMIT >BODY IS EMIT
20576 HI2LO
20577 MOV R14,&BASE
20578 MOV @R15+,R14
20579 GOTO BW3
20580 ENDASM
20581
20582
20583 ASM BACKGROUND
20584 MOV #SLEEP,R9
20585 ADD #4,R9
20586 MOV R9,R0
20587 ENDASM
20588
20589
20590 CODE START
20591     MOV #%1011010100,&$3C0
20592     MOV #1,&$3E0
20593     MOV #19,&$3D2
20594     MOV #%01100000,&$3C6
20595     MOV #10,&$3D6
20596     BIS.B #$20,&$204
20597     BIS.B #$20,&$20A
20598     BIS.B #7,&$245
20599     BIC.B #7,&$247
20600     BIS.B #$0F,&$224
20601     BIC.B #$0F,&$226
20602     BIS.B #4,&$20A
20603     BIC.B #4,&$20C
20604     MOV #RC5_INT,&$FFDE
20605     MOV #%0100010100,&$340
20606     MOV ##1638,&$352
20607     MOV #%10000,&$342
20608     MOV #WDT_INT,&$FFEA
20609
20610     MOV #SLEEP,R9
20611     MOV #BACKGROUND,2(R9)
20612
20613 LO2HI
20614
20615     $03E8 20_US
20616     $03 TOP_LCD
20617     $CD 20_US
20618     $03 TOP_LCD
20619     $5 20_US
20620     $03 TOP_LCD
20621     $2 20_US
20622     $02 TOP_LCD
20623     $2 20_US
20624     $28 LCD_WRF
20625     $08 LCD_WRF
20626     LCD_Clear
20627     $06 LCD_WRF
20628     $0C LCD_WRF
20629     LCD_Clear
20630     ['] LCD_HOME IS CR
20631     ['] LCD_WRC  IS EMIT
20632     CR ." I love you"   
20633     ['] CR >BODY IS CR
20634     ['] EMIT >BODY IS EMIT
20635     ." RC5toLCD is running. Type STOP to quit"
20636     LIT RECURSE IS WARM
20637     ABORT
20638 ;
20639
20640
20641 CODE STOP
20642     MOV #SLEEP,R9
20643     ADD #4,R9
20644     MOV R9,-2(R9)
20645
20646 COLON
20647     ['] WARM >BODY IS WARM
20648
20649     COLD
20650 ;
20651
20652
20653
20654             ; downloading RC5toLCD.4th is done
20655 RST_HERE    ; this app is protected against <reset>
20656
20657 [THEN]
20658
20659
20660
20661
20662
20663 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
20664
20665 [DEFINED] ASM [IF]
20666
20667 MARKER {RC5TOLCD}
20668
20669 [UNDEFINED] MAX [IF]
20670
20671 CODE MAX
20672     CMP @R15,R14
20673     S<  ?GOTO FW1
20674 BW1 ADD #2,R15
20675     MOV @R13+,R0
20676 ENDCODE
20677
20678
20679 CODE MIN
20680     CMP @R15,R14
20681     S<  ?GOTO BW1
20682 FW1 MOV @R15+,R14
20683     MOV @R13+,R0
20684 ENDCODE
20685
20686 [THEN]
20687
20688
20689 [UNDEFINED] U.R [IF]
20690 : U.R
20691   >R  <# 0 # #S #>  
20692   R> OVER - 0 MAX SPACES TYPE
20693 ;
20694 [THEN]
20695
20696
20697
20698 CODE 20_US
20699 BEGIN
20700     BEGIN
20701         BIT #1,&$3C0
20702     0<> UNTIL
20703     BIC #1,&$3C0
20704     SUB #1,R14
20705 U< UNTIL
20706 MOV @R15+,R14
20707 MOV @R13+,R0
20708 ENDCODE
20709
20710
20711 CODE TOP_LCD
20712     BIS.B #4,&$243
20713     BIT.B #1,&$241
20714 0= IF
20715     AND.B #$0F,R14
20716     MOV.B R14,&$222
20717     BIC.B #4,&$243
20718     MOV @R15+,R14
20719     MOV @R13+,R0
20720 THEN
20721     SUB #2,R15
20722     MOV R14,0(R15)
20723     BIC.B #4,&$243
20724     MOV.B &$220,R14
20725     AND.B #$0F,R14
20726     MOV @R13+,R0
20727 ENDCODE
20728
20729
20730 CODE LCD_W
20731     SUB #2,R15
20732     MOV R14,0(R15)
20733     RRUM #4,R14
20734     BIC.B #1,&$243
20735     BIS.B #$0F,&$224
20736 COLON
20737     TOP_LCD 2 20_US
20738     TOP_LCD 2 20_US 
20739 ;
20740
20741
20742 CODE LCD_WrC
20743     BIS.B #2,&$243
20744     JMP LCD_W 
20745 ENDCODE
20746
20747
20748 CODE LCD_WrF
20749     BIC.B #2,&$243
20750     JMP LCD_W 
20751 ENDCODE
20752
20753
20754 : LCD_Clear 
20755     $01 LCD_WrF 100 20_us
20756 ;
20757
20758
20759 : LCD_Home 
20760     $02 LCD_WrF 100 20_us 
20761 ;
20762
20763
20764 [UNDEFINED] OR [IF]
20765
20766 CODE OR
20767 BIS @R15+,R14
20768 MOV @R13+,R0
20769 ENDCODE
20770
20771
20772 [THEN]
20773
20774 : LCD_Entry_set     $04 OR LCD_WrF ;
20775
20776 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
20777
20778 : LCD_DSP_Shift     $10 OR LCD_WrF ;
20779
20780 : LCD_Fn_Set        $20 OR LCD_WrF ;
20781
20782 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
20783
20784 : LCD_Goto          $80 OR LCD_WrF ;
20785
20786 CODE LCD_R
20787     BIC.B #$0F,&$224
20788     BIS.B #1,&$243
20789 COLON
20790     TOP_LCD 2 20_us
20791     TOP_LCD 2 20_us
20792 HI2LO
20793     RLAM #4,0(R15)
20794     ADD.B @R15+,R14
20795     MOV @R1+,R13
20796     MOV @R13+,R0
20797 ENDCODE
20798
20799
20800 CODE LCD_RdS
20801     BIC.B #2,&$243
20802     JMP LCD_R
20803 ENDCODE
20804
20805
20806 CODE LCD_RdC
20807     BIS.B #2,&$243
20808     JMP LCD_R
20809 ENDCODE
20810
20811
20812
20813 ASM WDT_INT
20814 BIT.B #$20,&$240
20815 0= IF
20816     CMP #19,&$3D6
20817     U< IF
20818         ADD #1,&$3D6
20819     THEN
20820 ELSE
20821     BIT.B #$40,&$240
20822     0= IF
20823         CMP #3,&$3D6
20824         U>= IF
20825            SUB #1,&$3D6
20826         THEN
20827     THEN
20828 THEN
20829 BW1
20830 BW2
20831 BW3
20832 BIC #$78,0(R1)
20833 RETI
20834 ENDASM
20835
20836
20837 ASM RC5_INT
20838   MOV #1,&$3A0
20839 MOV #1778,R9
20840 MOV #14,R10
20841 BEGIN
20842 MOV #%1011100100,&$380
20843     RRUM    #1,R9
20844     MOV     R9,R8
20845     RRUM    #1,R8
20846     ADD     R9,R8
20847     BEGIN   CMP R8,&$390
20848     U>= UNTIL
20849     BIT.B   #4,&$200
20850     ADDC    R11,R11
20851     MOV.B   &$200,&$208
20852     BIC.B   #4,&$20C
20853     SUB     #1,R10
20854 0<> WHILE
20855     ADD R9,R8
20856     BEGIN
20857         MOV &$390,R9
20858         CMP R8,R9
20859         U>= IF
20860         BIC #$30,&$380
20861         GOTO BW1
20862         THEN
20863         BIT.B #4,&$20C
20864     0<> UNTIL
20865 REPEAT
20866 BIC #$30,&$380
20867 RLAM    #1,R11
20868 MOV.B   R11,R9
20869 RRUM    #2,R9
20870 BIT     #$4000,R11
20871 0= IF   BIS #$40,R9
20872 THEN
20873 RRUM    #3,R11
20874 XOR     @R1,R11
20875 BIT     #$400,R11
20876 0= ?GOTO BW2
20877 XOR #$400,0(R1)
20878 SUB #4,R15
20879 MOV &BASE,2(R15)
20880 MOV #$10,&BASE
20881 MOV R14,0(R15)
20882 MOV R9,R14
20883 LO2HI
20884     ['] LCD_CLEAR IS CR
20885     ['] LCD_WrC  IS EMIT
20886     CR ." $" 2 U.R
20887     ['] CR >BODY IS CR
20888     ['] EMIT >BODY IS EMIT
20889 HI2LO
20890 MOV R14,&BASE
20891 MOV @R15+,R14
20892 GOTO BW3
20893 ENDASM
20894
20895
20896 ASM BACKGROUND
20897 MOV #SLEEP,R9
20898 ADD #4,R9
20899 MOV R9,R0
20900 ENDASM
20901
20902
20903 CODE START
20904     MOV #%1011010100,&$3C0
20905     MOV #1,&$3E0
20906     MOV #19,&$3D2
20907     MOV #%01100000,&$3C6
20908     MOV #10,&$3D6
20909     BIS.B #$20,&$204
20910     BIS.B #$20,&$20A
20911     BIS.B #7,&$245
20912     BIC.B #7,&$247
20913     BIS.B #$0F,&$224
20914     BIC.B #$0F,&$226
20915     BIS.B #4,&$20A
20916     BIC.B #4,&$20C
20917     MOV #RC5_INT,&$FFDE
20918     MOV #%0100010100,&$340
20919     MOV ##1638,&$352
20920     MOV #%10000,&$342
20921     MOV #WDT_INT,&$FFEA
20922
20923     MOV #SLEEP,R9
20924     MOV #BACKGROUND,2(R9)
20925
20926 LO2HI
20927
20928     $03E8 20_US
20929     $03 TOP_LCD
20930     $CD 20_US
20931     $03 TOP_LCD
20932     $5 20_US
20933     $03 TOP_LCD
20934     $2 20_US
20935     $02 TOP_LCD
20936     $2 20_US
20937     $28 LCD_WRF
20938     $08 LCD_WRF
20939     LCD_Clear
20940     $06 LCD_WRF
20941     $0C LCD_WRF
20942     LCD_Clear
20943     ['] LCD_HOME IS CR
20944     ['] LCD_WRC  IS EMIT
20945     CR ." I love you"   
20946     ['] CR >BODY IS CR
20947     ['] EMIT >BODY IS EMIT
20948     ." RC5toLCD is running. Type STOP to quit"
20949     LIT RECURSE IS WARM
20950     ABORT
20951 ;
20952
20953
20954 CODE STOP
20955     MOV #SLEEP,R9
20956     ADD #4,R9
20957     MOV R9,-2(R9)
20958
20959 COLON
20960     ['] WARM >BODY IS WARM
20961
20962     COLD
20963 ;
20964
20965
20966
20967             ; downloading RC5toLCD.4th is done
20968 RST_HERE    ; this app is protected against <reset>
20969
20970 [THEN]
20971
20972
20973
20974
20975
20976 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
20977
20978 [DEFINED] ASM [IF]
20979
20980 MARKER {RC5TOLCD}
20981
20982 [UNDEFINED] MAX [IF]
20983
20984 CODE MAX
20985     CMP @R15,R14
20986     S<  ?GOTO FW1
20987 BW1 ADD #2,R15
20988     MOV @R13+,R0
20989 ENDCODE
20990
20991
20992 CODE MIN
20993     CMP @R15,R14
20994     S<  ?GOTO BW1
20995 FW1 MOV @R15+,R14
20996     MOV @R13+,R0
20997 ENDCODE
20998
20999 [THEN]
21000
21001
21002 [UNDEFINED] U.R [IF]
21003 : U.R
21004   >R  <# 0 # #S #>  
21005   R> OVER - 0 MAX SPACES TYPE
21006 ;
21007 [THEN]
21008
21009
21010
21011 CODE 20_US
21012 BEGIN
21013     BEGIN
21014         BIT #1,&$3C0
21015     0<> UNTIL
21016     BIC #1,&$3C0
21017     SUB #1,R14
21018 U< UNTIL
21019 MOV @R15+,R14
21020 MOV @R13+,R0
21021 ENDCODE
21022
21023
21024 CODE TOP_LCD
21025     BIS.B #4,&$243
21026     BIT.B #1,&$241
21027 0= IF
21028     AND.B #$0F,R14
21029     MOV.B R14,&$222
21030     BIC.B #4,&$243
21031     MOV @R15+,R14
21032     MOV @R13+,R0
21033 THEN
21034     SUB #2,R15
21035     MOV R14,0(R15)
21036     BIC.B #4,&$243
21037     MOV.B &$220,R14
21038     AND.B #$0F,R14
21039     MOV @R13+,R0
21040 ENDCODE
21041
21042
21043 CODE LCD_W
21044     SUB #2,R15
21045     MOV R14,0(R15)
21046     RRUM #4,R14
21047     BIC.B #1,&$243
21048     BIS.B #$0F,&$224
21049 COLON
21050     TOP_LCD 2 20_US
21051     TOP_LCD 2 20_US 
21052 ;
21053
21054
21055 CODE LCD_WrC
21056     BIS.B #2,&$243
21057     JMP LCD_W 
21058 ENDCODE
21059
21060
21061 CODE LCD_WrF
21062     BIC.B #2,&$243
21063     JMP LCD_W 
21064 ENDCODE
21065
21066
21067 : LCD_Clear 
21068     $01 LCD_WrF 100 20_us
21069 ;
21070
21071
21072 : LCD_Home 
21073     $02 LCD_WrF 100 20_us 
21074 ;
21075
21076
21077 [UNDEFINED] OR [IF]
21078
21079 CODE OR
21080 BIS @R15+,R14
21081 MOV @R13+,R0
21082 ENDCODE
21083
21084
21085 [THEN]
21086
21087 : LCD_Entry_set     $04 OR LCD_WrF ;
21088
21089 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
21090
21091 : LCD_DSP_Shift     $10 OR LCD_WrF ;
21092
21093 : LCD_Fn_Set        $20 OR LCD_WrF ;
21094
21095 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
21096
21097 : LCD_Goto          $80 OR LCD_WrF ;
21098
21099 CODE LCD_R
21100     BIC.B #$0F,&$224
21101     BIS.B #1,&$243
21102 COLON
21103     TOP_LCD 2 20_us
21104     TOP_LCD 2 20_us
21105 HI2LO
21106     RLAM #4,0(R15)
21107     ADD.B @R15+,R14
21108     MOV @R1+,R13
21109     MOV @R13+,R0
21110 ENDCODE
21111
21112
21113 CODE LCD_RdS
21114     BIC.B #2,&$243
21115     JMP LCD_R
21116 ENDCODE
21117
21118
21119 CODE LCD_RdC
21120     BIS.B #2,&$243
21121     JMP LCD_R
21122 ENDCODE
21123
21124
21125
21126 ASM WDT_INT
21127 BIT.B #$20,&$240
21128 0= IF
21129     CMP #19,&$3D6
21130     U< IF
21131         ADD #1,&$3D6
21132     THEN
21133 ELSE
21134     BIT.B #$40,&$240
21135     0= IF
21136         CMP #3,&$3D6
21137         U>= IF
21138            SUB #1,&$3D6
21139         THEN
21140     THEN
21141 THEN
21142 BW1
21143 BW2
21144 BW3
21145 BIC #$78,0(R1)
21146 RETI
21147 ENDASM
21148
21149
21150 ASM RC5_INT
21151   MOV #1,&$3A0
21152 MOV #1778,R9
21153 MOV #14,R10
21154 BEGIN
21155 MOV #%1011100100,&$380
21156     RRUM    #1,R9
21157     MOV     R9,R8
21158     RRUM    #1,R8
21159     ADD     R9,R8
21160     BEGIN   CMP R8,&$390
21161     U>= UNTIL
21162     BIT.B   #4,&$200
21163     ADDC    R11,R11
21164     MOV.B   &$200,&$208
21165     BIC.B   #4,&$20C
21166     SUB     #1,R10
21167 0<> WHILE
21168     ADD R9,R8
21169     BEGIN
21170         MOV &$390,R9
21171         CMP R8,R9
21172         U>= IF
21173         BIC #$30,&$380
21174         GOTO BW1
21175         THEN
21176         BIT.B #4,&$20C
21177     0<> UNTIL
21178 REPEAT
21179 BIC #$30,&$380
21180 RLAM    #1,R11
21181 MOV.B   R11,R9
21182 RRUM    #2,R9
21183 BIT     #$4000,R11
21184 0= IF   BIS #$40,R9
21185 THEN
21186 RRUM    #3,R11
21187 XOR     @R1,R11
21188 BIT     #$400,R11
21189 0= ?GOTO BW2
21190 XOR #$400,0(R1)
21191 SUB #4,R15
21192 MOV &BASE,2(R15)
21193 MOV #$10,&BASE
21194 MOV R14,0(R15)
21195 MOV R9,R14
21196 LO2HI
21197     ['] LCD_CLEAR IS CR
21198     ['] LCD_WrC  IS EMIT
21199     CR ." $" 2 U.R
21200     ['] CR >BODY IS CR
21201     ['] EMIT >BODY IS EMIT
21202 HI2LO
21203 MOV R14,&BASE
21204 MOV @R15+,R14
21205 GOTO BW3
21206 ENDASM
21207
21208
21209 ASM BACKGROUND
21210 MOV #SLEEP,R9
21211 ADD #4,R9
21212 MOV R9,R0
21213 ENDASM
21214
21215
21216 CODE START
21217     MOV #%1011010100,&$3C0
21218     MOV #1,&$3E0
21219     MOV #19,&$3D2
21220     MOV #%01100000,&$3C6
21221     MOV #10,&$3D6
21222     BIS.B #$20,&$204
21223     BIS.B #$20,&$20A
21224     BIS.B #7,&$245
21225     BIC.B #7,&$247
21226     BIS.B #$0F,&$224
21227     BIC.B #$0F,&$226
21228     BIS.B #4,&$20A
21229     BIC.B #4,&$20C
21230     MOV #RC5_INT,&$FFDE
21231     MOV #%0100010100,&$340
21232     MOV ##1638,&$352
21233     MOV #%10000,&$342
21234     MOV #WDT_INT,&$FFEA
21235
21236     MOV #SLEEP,R9
21237     MOV #BACKGROUND,2(R9)
21238
21239 LO2HI
21240
21241     $03E8 20_US
21242     $03 TOP_LCD
21243     $CD 20_US
21244     $03 TOP_LCD
21245     $5 20_US
21246     $03 TOP_LCD
21247     $2 20_US
21248     $02 TOP_LCD
21249     $2 20_US
21250     $28 LCD_WRF
21251     $08 LCD_WRF
21252     LCD_Clear
21253     $06 LCD_WRF
21254     $0C LCD_WRF
21255     LCD_Clear
21256     ['] LCD_HOME IS CR
21257     ['] LCD_WRC  IS EMIT
21258     CR ." I love you"   
21259     ['] CR >BODY IS CR
21260     ['] EMIT >BODY IS EMIT
21261     ." RC5toLCD is running. Type STOP to quit"
21262     LIT RECURSE IS WARM
21263     ABORT
21264 ;
21265
21266
21267 CODE STOP
21268     MOV #SLEEP,R9
21269     ADD #4,R9
21270     MOV R9,-2(R9)
21271
21272 COLON
21273     ['] WARM >BODY IS WARM
21274
21275     COLD
21276 ;
21277
21278
21279
21280             ; downloading RC5toLCD.4th is done
21281 RST_HERE    ; this app is protected against <reset>
21282
21283 [THEN]
21284
21285
21286
21287
21288
21289 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
21290
21291 [DEFINED] ASM [IF]
21292
21293 MARKER {RC5TOLCD}
21294
21295 [UNDEFINED] MAX [IF]
21296
21297 CODE MAX
21298     CMP @R15,R14
21299     S<  ?GOTO FW1
21300 BW1 ADD #2,R15
21301     MOV @R13+,R0
21302 ENDCODE
21303
21304
21305 CODE MIN
21306     CMP @R15,R14
21307     S<  ?GOTO BW1
21308 FW1 MOV @R15+,R14
21309     MOV @R13+,R0
21310 ENDCODE
21311
21312 [THEN]
21313
21314
21315 [UNDEFINED] U.R [IF]
21316 : U.R
21317   >R  <# 0 # #S #>  
21318   R> OVER - 0 MAX SPACES TYPE
21319 ;
21320 [THEN]
21321
21322
21323
21324 CODE 20_US
21325 BEGIN
21326     BEGIN
21327         BIT #1,&$3C0
21328     0<> UNTIL
21329     BIC #1,&$3C0
21330     SUB #1,R14
21331 U< UNTIL
21332 MOV @R15+,R14
21333 MOV @R13+,R0
21334 ENDCODE
21335
21336
21337 CODE TOP_LCD
21338     BIS.B #4,&$243
21339     BIT.B #1,&$241
21340 0= IF
21341     AND.B #$0F,R14
21342     MOV.B R14,&$222
21343     BIC.B #4,&$243
21344     MOV @R15+,R14
21345     MOV @R13+,R0
21346 THEN
21347     SUB #2,R15
21348     MOV R14,0(R15)
21349     BIC.B #4,&$243
21350     MOV.B &$220,R14
21351     AND.B #$0F,R14
21352     MOV @R13+,R0
21353 ENDCODE
21354
21355
21356 CODE LCD_W
21357     SUB #2,R15
21358     MOV R14,0(R15)
21359     RRUM #4,R14
21360     BIC.B #1,&$243
21361     BIS.B #$0F,&$224
21362 COLON
21363     TOP_LCD 2 20_US
21364     TOP_LCD 2 20_US 
21365 ;
21366
21367
21368 CODE LCD_WrC
21369     BIS.B #2,&$243
21370     JMP LCD_W 
21371 ENDCODE
21372
21373
21374 CODE LCD_WrF
21375     BIC.B #2,&$243
21376     JMP LCD_W 
21377 ENDCODE
21378
21379
21380 : LCD_Clear 
21381     $01 LCD_WrF 100 20_us
21382 ;
21383
21384
21385 : LCD_Home 
21386     $02 LCD_WrF 100 20_us 
21387 ;
21388
21389
21390 [UNDEFINED] OR [IF]
21391
21392 CODE OR
21393 BIS @R15+,R14
21394 MOV @R13+,R0
21395 ENDCODE
21396
21397
21398 [THEN]
21399
21400 : LCD_Entry_set     $04 OR LCD_WrF ;
21401
21402 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
21403
21404 : LCD_DSP_Shift     $10 OR LCD_WrF ;
21405
21406 : LCD_Fn_Set        $20 OR LCD_WrF ;
21407
21408 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
21409
21410 : LCD_Goto          $80 OR LCD_WrF ;
21411
21412 CODE LCD_R
21413     BIC.B #$0F,&$224
21414     BIS.B #1,&$243
21415 COLON
21416     TOP_LCD 2 20_us
21417     TOP_LCD 2 20_us
21418 HI2LO
21419     RLAM #4,0(R15)
21420     ADD.B @R15+,R14
21421     MOV @R1+,R13
21422     MOV @R13+,R0
21423 ENDCODE
21424
21425
21426 CODE LCD_RdS
21427     BIC.B #2,&$243
21428     JMP LCD_R
21429 ENDCODE
21430
21431
21432 CODE LCD_RdC
21433     BIS.B #2,&$243
21434     JMP LCD_R
21435 ENDCODE
21436
21437
21438
21439 ASM WDT_INT
21440 BIT.B #$20,&$240
21441 0= IF
21442     CMP #19,&$3D6
21443     U< IF
21444         ADD #1,&$3D6
21445     THEN
21446 ELSE
21447     BIT.B #$40,&$240
21448     0= IF
21449         CMP #3,&$3D6
21450         U>= IF
21451            SUB #1,&$3D6
21452         THEN
21453     THEN
21454 THEN
21455 BW1
21456 BW2
21457 BW3
21458 BIC #$78,0(R1)
21459 RETI
21460 ENDASM
21461
21462
21463 ASM RC5_INT
21464   MOV #1,&$3A0
21465 MOV #1778,R9
21466 MOV #14,R10
21467 BEGIN
21468 MOV #%1011100100,&$380
21469     RRUM    #1,R9
21470     MOV     R9,R8
21471     RRUM    #1,R8
21472     ADD     R9,R8
21473     BEGIN   CMP R8,&$390
21474     U>= UNTIL
21475     BIT.B   #4,&$200
21476     ADDC    R11,R11
21477     MOV.B   &$200,&$208
21478     BIC.B   #4,&$20C
21479     SUB     #1,R10
21480 0<> WHILE
21481     ADD R9,R8
21482     BEGIN
21483         MOV &$390,R9
21484         CMP R8,R9
21485         U>= IF
21486         BIC #$30,&$380
21487         GOTO BW1
21488         THEN
21489         BIT.B #4,&$20C
21490     0<> UNTIL
21491 REPEAT
21492 BIC #$30,&$380
21493 RLAM    #1,R11
21494 MOV.B   R11,R9
21495 RRUM    #2,R9
21496 BIT     #$4000,R11
21497 0= IF   BIS #$40,R9
21498 THEN
21499 RRUM    #3,R11
21500 XOR     @R1,R11
21501 BIT     #$400,R11
21502 0= ?GOTO BW2
21503 XOR #$400,0(R1)
21504 SUB #4,R15
21505 MOV &BASE,2(R15)
21506 MOV #$10,&BASE
21507 MOV R14,0(R15)
21508 MOV R9,R14
21509 LO2HI
21510     ['] LCD_CLEAR IS CR
21511     ['] LCD_WrC  IS EMIT
21512     CR ." $" 2 U.R
21513     ['] CR >BODY IS CR
21514     ['] EMIT >BODY IS EMIT
21515 HI2LO
21516 MOV R14,&BASE
21517 MOV @R15+,R14
21518 GOTO BW3
21519 ENDASM
21520
21521
21522 ASM BACKGROUND
21523 MOV #SLEEP,R9
21524 ADD #4,R9
21525 MOV R9,R0
21526 ENDASM
21527
21528
21529 CODE START
21530     MOV #%1011010100,&$3C0
21531     MOV #1,&$3E0
21532     MOV #19,&$3D2
21533     MOV #%01100000,&$3C6
21534     MOV #10,&$3D6
21535     BIS.B #$20,&$204
21536     BIS.B #$20,&$20A
21537     BIS.B #7,&$245
21538     BIC.B #7,&$247
21539     BIS.B #$0F,&$224
21540     BIC.B #$0F,&$226
21541     BIS.B #4,&$20A
21542     BIC.B #4,&$20C
21543     MOV #RC5_INT,&$FFDE
21544     MOV #%0100010100,&$340
21545     MOV ##1638,&$352
21546     MOV #%10000,&$342
21547     MOV #WDT_INT,&$FFEA
21548
21549     MOV #SLEEP,R9
21550     MOV #BACKGROUND,2(R9)
21551
21552 LO2HI
21553
21554     $03E8 20_US
21555     $03 TOP_LCD
21556     $CD 20_US
21557     $03 TOP_LCD
21558     $5 20_US
21559     $03 TOP_LCD
21560     $2 20_US
21561     $02 TOP_LCD
21562     $2 20_US
21563     $28 LCD_WRF
21564     $08 LCD_WRF
21565     LCD_Clear
21566     $06 LCD_WRF
21567     $0C LCD_WRF
21568     LCD_Clear
21569     ['] LCD_HOME IS CR
21570     ['] LCD_WRC  IS EMIT
21571     CR ." I love you"   
21572     ['] CR >BODY IS CR
21573     ['] EMIT >BODY IS EMIT
21574     ." RC5toLCD is running. Type STOP to quit"
21575     LIT RECURSE IS WARM
21576     ABORT
21577 ;
21578
21579
21580 CODE STOP
21581     MOV #SLEEP,R9
21582     ADD #4,R9
21583     MOV R9,-2(R9)
21584
21585 COLON
21586     ['] WARM >BODY IS WARM
21587
21588     COLD
21589 ;
21590
21591
21592
21593             ; downloading RC5toLCD.4th is done
21594 RST_HERE    ; this app is protected against <reset>
21595
21596 [THEN]
21597
21598
21599
21600
21601
21602 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
21603
21604 [DEFINED] ASM [IF]
21605
21606 MARKER {RC5TOLCD}
21607
21608 [UNDEFINED] MAX [IF]
21609
21610 CODE MAX
21611     CMP @R15,R14
21612     S<  ?GOTO FW1
21613 BW1 ADD #2,R15
21614     MOV @R13+,R0
21615 ENDCODE
21616
21617
21618 CODE MIN
21619     CMP @R15,R14
21620     S<  ?GOTO BW1
21621 FW1 MOV @R15+,R14
21622     MOV @R13+,R0
21623 ENDCODE
21624
21625 [THEN]
21626
21627
21628 [UNDEFINED] U.R [IF]
21629 : U.R
21630   >R  <# 0 # #S #>  
21631   R> OVER - 0 MAX SPACES TYPE
21632 ;
21633 [THEN]
21634
21635
21636
21637 CODE 20_US
21638 BEGIN
21639     BEGIN
21640         BIT #1,&$3C0
21641     0<> UNTIL
21642     BIC #1,&$3C0
21643     SUB #1,R14
21644 U< UNTIL
21645 MOV @R15+,R14
21646 MOV @R13+,R0
21647 ENDCODE
21648
21649
21650 CODE TOP_LCD
21651     BIS.B #4,&$243
21652     BIT.B #1,&$241
21653 0= IF
21654     AND.B #$0F,R14
21655     MOV.B R14,&$222
21656     BIC.B #4,&$243
21657     MOV @R15+,R14
21658     MOV @R13+,R0
21659 THEN
21660     SUB #2,R15
21661     MOV R14,0(R15)
21662     BIC.B #4,&$243
21663     MOV.B &$220,R14
21664     AND.B #$0F,R14
21665     MOV @R13+,R0
21666 ENDCODE
21667
21668
21669 CODE LCD_W
21670     SUB #2,R15
21671     MOV R14,0(R15)
21672     RRUM #4,R14
21673     BIC.B #1,&$243
21674     BIS.B #$0F,&$224
21675 COLON
21676     TOP_LCD 2 20_US
21677     TOP_LCD 2 20_US 
21678 ;
21679
21680
21681 CODE LCD_WrC
21682     BIS.B #2,&$243
21683     JMP LCD_W 
21684 ENDCODE
21685
21686
21687 CODE LCD_WrF
21688     BIC.B #2,&$243
21689     JMP LCD_W 
21690 ENDCODE
21691
21692
21693 : LCD_Clear 
21694     $01 LCD_WrF 100 20_us
21695 ;
21696
21697
21698 : LCD_Home 
21699     $02 LCD_WrF 100 20_us 
21700 ;
21701
21702
21703 [UNDEFINED] OR [IF]
21704
21705 CODE OR
21706 BIS @R15+,R14
21707 MOV @R13+,R0
21708 ENDCODE
21709
21710
21711 [THEN]
21712
21713 : LCD_Entry_set     $04 OR LCD_WrF ;
21714
21715 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
21716
21717 : LCD_DSP_Shift     $10 OR LCD_WrF ;
21718
21719 : LCD_Fn_Set        $20 OR LCD_WrF ;
21720
21721 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
21722
21723 : LCD_Goto          $80 OR LCD_WrF ;
21724
21725 CODE LCD_R
21726     BIC.B #$0F,&$224
21727     BIS.B #1,&$243
21728 COLON
21729     TOP_LCD 2 20_us
21730     TOP_LCD 2 20_us
21731 HI2LO
21732     RLAM #4,0(R15)
21733     ADD.B @R15+,R14
21734     MOV @R1+,R13
21735     MOV @R13+,R0
21736 ENDCODE
21737
21738
21739 CODE LCD_RdS
21740     BIC.B #2,&$243
21741     JMP LCD_R
21742 ENDCODE
21743
21744
21745 CODE LCD_RdC
21746     BIS.B #2,&$243
21747     JMP LCD_R
21748 ENDCODE
21749
21750
21751
21752 ASM WDT_INT
21753 BIT.B #$20,&$240
21754 0= IF
21755     CMP #19,&$3D6
21756     U< IF
21757         ADD #1,&$3D6
21758     THEN
21759 ELSE
21760     BIT.B #$40,&$240
21761     0= IF
21762         CMP #3,&$3D6
21763         U>= IF
21764            SUB #1,&$3D6
21765         THEN
21766     THEN
21767 THEN
21768 BW1
21769 BW2
21770 BW3
21771 BIC #$78,0(R1)
21772 RETI
21773 ENDASM
21774
21775
21776 ASM RC5_INT
21777   MOV #1,&$3A0
21778 MOV #1778,R9
21779 MOV #14,R10
21780 BEGIN
21781 MOV #%1011100100,&$380
21782     RRUM    #1,R9
21783     MOV     R9,R8
21784     RRUM    #1,R8
21785     ADD     R9,R8
21786     BEGIN   CMP R8,&$390
21787     U>= UNTIL
21788     BIT.B   #4,&$200
21789     ADDC    R11,R11
21790     MOV.B   &$200,&$208
21791     BIC.B   #4,&$20C
21792     SUB     #1,R10
21793 0<> WHILE
21794     ADD R9,R8
21795     BEGIN
21796         MOV &$390,R9
21797         CMP R8,R9
21798         U>= IF
21799         BIC #$30,&$380
21800         GOTO BW1
21801         THEN
21802         BIT.B #4,&$20C
21803     0<> UNTIL
21804 REPEAT
21805 BIC #$30,&$380
21806 RLAM    #1,R11
21807 MOV.B   R11,R9
21808 RRUM    #2,R9
21809 BIT     #$4000,R11
21810 0= IF   BIS #$40,R9
21811 THEN
21812 RRUM    #3,R11
21813 XOR     @R1,R11
21814 BIT     #$400,R11
21815 0= ?GOTO BW2
21816 XOR #$400,0(R1)
21817 SUB #4,R15
21818 MOV &BASE,2(R15)
21819 MOV #$10,&BASE
21820 MOV R14,0(R15)
21821 MOV R9,R14
21822 LO2HI
21823     ['] LCD_CLEAR IS CR
21824     ['] LCD_WrC  IS EMIT
21825     CR ." $" 2 U.R
21826     ['] CR >BODY IS CR
21827     ['] EMIT >BODY IS EMIT
21828 HI2LO
21829 MOV R14,&BASE
21830 MOV @R15+,R14
21831 GOTO BW3
21832 ENDASM
21833
21834
21835 ASM BACKGROUND
21836 MOV #SLEEP,R9
21837 ADD #4,R9
21838 MOV R9,R0
21839 ENDASM
21840
21841
21842 CODE START
21843     MOV #%1011010100,&$3C0
21844     MOV #1,&$3E0
21845     MOV #19,&$3D2
21846     MOV #%01100000,&$3C6
21847     MOV #10,&$3D6
21848     BIS.B #$20,&$204
21849     BIS.B #$20,&$20A
21850     BIS.B #7,&$245
21851     BIC.B #7,&$247
21852     BIS.B #$0F,&$224
21853     BIC.B #$0F,&$226
21854     BIS.B #4,&$20A
21855     BIC.B #4,&$20C
21856     MOV #RC5_INT,&$FFDE
21857     MOV #%0100010100,&$340
21858     MOV ##1638,&$352
21859     MOV #%10000,&$342
21860     MOV #WDT_INT,&$FFEA
21861
21862     MOV #SLEEP,R9
21863     MOV #BACKGROUND,2(R9)
21864
21865 LO2HI
21866
21867     $03E8 20_US
21868     $03 TOP_LCD
21869     $CD 20_US
21870     $03 TOP_LCD
21871     $5 20_US
21872     $03 TOP_LCD
21873     $2 20_US
21874     $02 TOP_LCD
21875     $2 20_US
21876     $28 LCD_WRF
21877     $08 LCD_WRF
21878     LCD_Clear
21879     $06 LCD_WRF
21880     $0C LCD_WRF
21881     LCD_Clear
21882     ['] LCD_HOME IS CR
21883     ['] LCD_WRC  IS EMIT
21884     CR ." I love you"   
21885     ['] CR >BODY IS CR
21886     ['] EMIT >BODY IS EMIT
21887     ." RC5toLCD is running. Type STOP to quit"
21888     LIT RECURSE IS WARM
21889     ABORT
21890 ;
21891
21892
21893 CODE STOP
21894     MOV #SLEEP,R9
21895     ADD #4,R9
21896     MOV R9,-2(R9)
21897
21898 COLON
21899     ['] WARM >BODY IS WARM
21900
21901     COLD
21902 ;
21903
21904
21905
21906             ; downloading RC5toLCD.4th is done
21907 RST_HERE    ; this app is protected against <reset>
21908
21909 [THEN]
21910
21911
21912
21913
21914
21915 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
21916
21917 [DEFINED] ASM [IF]
21918
21919 MARKER {RC5TOLCD}
21920
21921 [UNDEFINED] MAX [IF]
21922
21923 CODE MAX
21924     CMP @R15,R14
21925     S<  ?GOTO FW1
21926 BW1 ADD #2,R15
21927     MOV @R13+,R0
21928 ENDCODE
21929
21930
21931 CODE MIN
21932     CMP @R15,R14
21933     S<  ?GOTO BW1
21934 FW1 MOV @R15+,R14
21935     MOV @R13+,R0
21936 ENDCODE
21937
21938 [THEN]
21939
21940
21941 [UNDEFINED] U.R [IF]
21942 : U.R
21943   >R  <# 0 # #S #>  
21944   R> OVER - 0 MAX SPACES TYPE
21945 ;
21946 [THEN]
21947
21948
21949
21950 CODE 20_US
21951 BEGIN
21952     BEGIN
21953         BIT #1,&$3C0
21954     0<> UNTIL
21955     BIC #1,&$3C0
21956     SUB #1,R14
21957 U< UNTIL
21958 MOV @R15+,R14
21959 MOV @R13+,R0
21960 ENDCODE
21961
21962
21963 CODE TOP_LCD
21964     BIS.B #4,&$243
21965     BIT.B #1,&$241
21966 0= IF
21967     AND.B #$0F,R14
21968     MOV.B R14,&$222
21969     BIC.B #4,&$243
21970     MOV @R15+,R14
21971     MOV @R13+,R0
21972 THEN
21973     SUB #2,R15
21974     MOV R14,0(R15)
21975     BIC.B #4,&$243
21976     MOV.B &$220,R14
21977     AND.B #$0F,R14
21978     MOV @R13+,R0
21979 ENDCODE
21980
21981
21982 CODE LCD_W
21983     SUB #2,R15
21984     MOV R14,0(R15)
21985     RRUM #4,R14
21986     BIC.B #1,&$243
21987     BIS.B #$0F,&$224
21988 COLON
21989     TOP_LCD 2 20_US
21990     TOP_LCD 2 20_US 
21991 ;
21992
21993
21994 CODE LCD_WrC
21995     BIS.B #2,&$243
21996     JMP LCD_W 
21997 ENDCODE
21998
21999
22000 CODE LCD_WrF
22001     BIC.B #2,&$243
22002     JMP LCD_W 
22003 ENDCODE
22004
22005
22006 : LCD_Clear 
22007     $01 LCD_WrF 100 20_us
22008 ;
22009
22010
22011 : LCD_Home 
22012     $02 LCD_WrF 100 20_us 
22013 ;
22014
22015
22016 [UNDEFINED] OR [IF]
22017
22018 CODE OR
22019 BIS @R15+,R14
22020 MOV @R13+,R0
22021 ENDCODE
22022
22023
22024 [THEN]
22025
22026 : LCD_Entry_set     $04 OR LCD_WrF ;
22027
22028 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
22029
22030 : LCD_DSP_Shift     $10 OR LCD_WrF ;
22031
22032 : LCD_Fn_Set        $20 OR LCD_WrF ;
22033
22034 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
22035
22036 : LCD_Goto          $80 OR LCD_WrF ;
22037
22038 CODE LCD_R
22039     BIC.B #$0F,&$224
22040     BIS.B #1,&$243
22041 COLON
22042     TOP_LCD 2 20_us
22043     TOP_LCD 2 20_us
22044 HI2LO
22045     RLAM #4,0(R15)
22046     ADD.B @R15+,R14
22047     MOV @R1+,R13
22048     MOV @R13+,R0
22049 ENDCODE
22050
22051
22052 CODE LCD_RdS
22053     BIC.B #2,&$243
22054     JMP LCD_R
22055 ENDCODE
22056
22057
22058 CODE LCD_RdC
22059     BIS.B #2,&$243
22060     JMP LCD_R
22061 ENDCODE
22062
22063
22064
22065 ASM WDT_INT
22066 BIT.B #$20,&$240
22067 0= IF
22068     CMP #19,&$3D6
22069     U< IF
22070         ADD #1,&$3D6
22071     THEN
22072 ELSE
22073     BIT.B #$40,&$240
22074     0= IF
22075         CMP #3,&$3D6
22076         U>= IF
22077            SUB #1,&$3D6
22078         THEN
22079     THEN
22080 THEN
22081 BW1
22082 BW2
22083 BW3
22084 BIC #$78,0(R1)
22085 RETI
22086 ENDASM
22087
22088
22089 ASM RC5_INT
22090   MOV #1,&$3A0
22091 MOV #1778,R9
22092 MOV #14,R10
22093 BEGIN
22094 MOV #%1011100100,&$380
22095     RRUM    #1,R9
22096     MOV     R9,R8
22097     RRUM    #1,R8
22098     ADD     R9,R8
22099     BEGIN   CMP R8,&$390
22100     U>= UNTIL
22101     BIT.B   #4,&$200
22102     ADDC    R11,R11
22103     MOV.B   &$200,&$208
22104     BIC.B   #4,&$20C
22105     SUB     #1,R10
22106 0<> WHILE
22107     ADD R9,R8
22108     BEGIN
22109         MOV &$390,R9
22110         CMP R8,R9
22111         U>= IF
22112         BIC #$30,&$380
22113         GOTO BW1
22114         THEN
22115         BIT.B #4,&$20C
22116     0<> UNTIL
22117 REPEAT
22118 BIC #$30,&$380
22119 RLAM    #1,R11
22120 MOV.B   R11,R9
22121 RRUM    #2,R9
22122 BIT     #$4000,R11
22123 0= IF   BIS #$40,R9
22124 THEN
22125 RRUM    #3,R11
22126 XOR     @R1,R11
22127 BIT     #$400,R11
22128 0= ?GOTO BW2
22129 XOR #$400,0(R1)
22130 SUB #4,R15
22131 MOV &BASE,2(R15)
22132 MOV #$10,&BASE
22133 MOV R14,0(R15)
22134 MOV R9,R14
22135 LO2HI
22136     ['] LCD_CLEAR IS CR
22137     ['] LCD_WrC  IS EMIT
22138     CR ." $" 2 U.R
22139     ['] CR >BODY IS CR
22140     ['] EMIT >BODY IS EMIT
22141 HI2LO
22142 MOV R14,&BASE
22143 MOV @R15+,R14
22144 GOTO BW3
22145 ENDASM
22146
22147
22148 ASM BACKGROUND
22149 MOV #SLEEP,R9
22150 ADD #4,R9
22151 MOV R9,R0
22152 ENDASM
22153
22154
22155 CODE START
22156     MOV #%1011010100,&$3C0
22157     MOV #1,&$3E0
22158     MOV #19,&$3D2
22159     MOV #%01100000,&$3C6
22160     MOV #10,&$3D6
22161     BIS.B #$20,&$204
22162     BIS.B #$20,&$20A
22163     BIS.B #7,&$245
22164     BIC.B #7,&$247
22165     BIS.B #$0F,&$224
22166     BIC.B #$0F,&$226
22167     BIS.B #4,&$20A
22168     BIC.B #4,&$20C
22169     MOV #RC5_INT,&$FFDE
22170     MOV #%0100010100,&$340
22171     MOV ##1638,&$352
22172     MOV #%10000,&$342
22173     MOV #WDT_INT,&$FFEA
22174
22175     MOV #SLEEP,R9
22176     MOV #BACKGROUND,2(R9)
22177
22178 LO2HI
22179
22180     $03E8 20_US
22181     $03 TOP_LCD
22182     $CD 20_US
22183     $03 TOP_LCD
22184     $5 20_US
22185     $03 TOP_LCD
22186     $2 20_US
22187     $02 TOP_LCD
22188     $2 20_US
22189     $28 LCD_WRF
22190     $08 LCD_WRF
22191     LCD_Clear
22192     $06 LCD_WRF
22193     $0C LCD_WRF
22194     LCD_Clear
22195     ['] LCD_HOME IS CR
22196     ['] LCD_WRC  IS EMIT
22197     CR ." I love you"   
22198     ['] CR >BODY IS CR
22199     ['] EMIT >BODY IS EMIT
22200     ." RC5toLCD is running. Type STOP to quit"
22201     LIT RECURSE IS WARM
22202     ABORT
22203 ;
22204
22205
22206 CODE STOP
22207     MOV #SLEEP,R9
22208     ADD #4,R9
22209     MOV R9,-2(R9)
22210
22211 COLON
22212     ['] WARM >BODY IS WARM
22213
22214     COLD
22215 ;
22216
22217
22218
22219             ; downloading RC5toLCD.4th is done
22220 RST_HERE    ; this app is protected against <reset>
22221
22222 [THEN]
22223
22224
22225
22226
22227
22228 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
22229
22230 [DEFINED] ASM [IF]
22231
22232 MARKER {RC5TOLCD}
22233
22234 [UNDEFINED] MAX [IF]
22235
22236 CODE MAX
22237     CMP @R15,R14
22238     S<  ?GOTO FW1
22239 BW1 ADD #2,R15
22240     MOV @R13+,R0
22241 ENDCODE
22242
22243
22244 CODE MIN
22245     CMP @R15,R14
22246     S<  ?GOTO BW1
22247 FW1 MOV @R15+,R14
22248     MOV @R13+,R0
22249 ENDCODE
22250
22251 [THEN]
22252
22253
22254 [UNDEFINED] U.R [IF]
22255 : U.R
22256   >R  <# 0 # #S #>  
22257   R> OVER - 0 MAX SPACES TYPE
22258 ;
22259 [THEN]
22260
22261
22262
22263 CODE 20_US
22264 BEGIN
22265     BEGIN
22266         BIT #1,&$3C0
22267     0<> UNTIL
22268     BIC #1,&$3C0
22269     SUB #1,R14
22270 U< UNTIL
22271 MOV @R15+,R14
22272 MOV @R13+,R0
22273 ENDCODE
22274
22275
22276 CODE TOP_LCD
22277     BIS.B #4,&$243
22278     BIT.B #1,&$241
22279 0= IF
22280     AND.B #$0F,R14
22281     MOV.B R14,&$222
22282     BIC.B #4,&$243
22283     MOV @R15+,R14
22284     MOV @R13+,R0
22285 THEN
22286     SUB #2,R15
22287     MOV R14,0(R15)
22288     BIC.B #4,&$243
22289     MOV.B &$220,R14
22290     AND.B #$0F,R14
22291     MOV @R13+,R0
22292 ENDCODE
22293
22294
22295 CODE LCD_W
22296     SUB #2,R15
22297     MOV R14,0(R15)
22298     RRUM #4,R14
22299     BIC.B #1,&$243
22300     BIS.B #$0F,&$224
22301 COLON
22302     TOP_LCD 2 20_US
22303     TOP_LCD 2 20_US 
22304 ;
22305
22306
22307 CODE LCD_WrC
22308     BIS.B #2,&$243
22309     JMP LCD_W 
22310 ENDCODE
22311
22312
22313 CODE LCD_WrF
22314     BIC.B #2,&$243
22315     JMP LCD_W 
22316 ENDCODE
22317
22318
22319 : LCD_Clear 
22320     $01 LCD_WrF 100 20_us
22321 ;
22322
22323
22324 : LCD_Home 
22325     $02 LCD_WrF 100 20_us 
22326 ;
22327
22328
22329 [UNDEFINED] OR [IF]
22330
22331 CODE OR
22332 BIS @R15+,R14
22333 MOV @R13+,R0
22334 ENDCODE
22335
22336
22337 [THEN]
22338
22339 : LCD_Entry_set     $04 OR LCD_WrF ;
22340
22341 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
22342
22343 : LCD_DSP_Shift     $10 OR LCD_WrF ;
22344
22345 : LCD_Fn_Set        $20 OR LCD_WrF ;
22346
22347 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
22348
22349 : LCD_Goto          $80 OR LCD_WrF ;
22350
22351 CODE LCD_R
22352     BIC.B #$0F,&$224
22353     BIS.B #1,&$243
22354 COLON
22355     TOP_LCD 2 20_us
22356     TOP_LCD 2 20_us
22357 HI2LO
22358     RLAM #4,0(R15)
22359     ADD.B @R15+,R14
22360     MOV @R1+,R13
22361     MOV @R13+,R0
22362 ENDCODE
22363
22364
22365 CODE LCD_RdS
22366     BIC.B #2,&$243
22367     JMP LCD_R
22368 ENDCODE
22369
22370
22371 CODE LCD_RdC
22372     BIS.B #2,&$243
22373     JMP LCD_R
22374 ENDCODE
22375
22376
22377
22378 ASM WDT_INT
22379 BIT.B #$20,&$240
22380 0= IF
22381     CMP #19,&$3D6
22382     U< IF
22383         ADD #1,&$3D6
22384     THEN
22385 ELSE
22386     BIT.B #$40,&$240
22387     0= IF
22388         CMP #3,&$3D6
22389         U>= IF
22390            SUB #1,&$3D6
22391         THEN
22392     THEN
22393 THEN
22394 BW1
22395 BW2
22396 BW3
22397 BIC #$78,0(R1)
22398 RETI
22399 ENDASM
22400
22401
22402 ASM RC5_INT
22403   MOV #1,&$3A0
22404 MOV #1778,R9
22405 MOV #14,R10
22406 BEGIN
22407 MOV #%1011100100,&$380
22408     RRUM    #1,R9
22409     MOV     R9,R8
22410     RRUM    #1,R8
22411     ADD     R9,R8
22412     BEGIN   CMP R8,&$390
22413     U>= UNTIL
22414     BIT.B   #4,&$200
22415     ADDC    R11,R11
22416     MOV.B   &$200,&$208
22417     BIC.B   #4,&$20C
22418     SUB     #1,R10
22419 0<> WHILE
22420     ADD R9,R8
22421     BEGIN
22422         MOV &$390,R9
22423         CMP R8,R9
22424         U>= IF
22425         BIC #$30,&$380
22426         GOTO BW1
22427         THEN
22428         BIT.B #4,&$20C
22429     0<> UNTIL
22430 REPEAT
22431 BIC #$30,&$380
22432 RLAM    #1,R11
22433 MOV.B   R11,R9
22434 RRUM    #2,R9
22435 BIT     #$4000,R11
22436 0= IF   BIS #$40,R9
22437 THEN
22438 RRUM    #3,R11
22439 XOR     @R1,R11
22440 BIT     #$400,R11
22441 0= ?GOTO BW2
22442 XOR #$400,0(R1)
22443 SUB #4,R15
22444 MOV &BASE,2(R15)
22445 MOV #$10,&BASE
22446 MOV R14,0(R15)
22447 MOV R9,R14
22448 LO2HI
22449     ['] LCD_CLEAR IS CR
22450     ['] LCD_WrC  IS EMIT
22451     CR ." $" 2 U.R
22452     ['] CR >BODY IS CR
22453     ['] EMIT >BODY IS EMIT
22454 HI2LO
22455 MOV R14,&BASE
22456 MOV @R15+,R14
22457 GOTO BW3
22458 ENDASM
22459
22460
22461 ASM BACKGROUND
22462 MOV #SLEEP,R9
22463 ADD #4,R9
22464 MOV R9,R0
22465 ENDASM
22466
22467
22468 CODE START
22469     MOV #%1011010100,&$3C0
22470     MOV #1,&$3E0
22471     MOV #19,&$3D2
22472     MOV #%01100000,&$3C6
22473     MOV #10,&$3D6
22474     BIS.B #$20,&$204
22475     BIS.B #$20,&$20A
22476     BIS.B #7,&$245
22477     BIC.B #7,&$247
22478     BIS.B #$0F,&$224
22479     BIC.B #$0F,&$226
22480     BIS.B #4,&$20A
22481     BIC.B #4,&$20C
22482     MOV #RC5_INT,&$FFDE
22483     MOV #%0100010100,&$340
22484     MOV ##1638,&$352
22485     MOV #%10000,&$342
22486     MOV #WDT_INT,&$FFEA
22487
22488     MOV #SLEEP,R9
22489     MOV #BACKGROUND,2(R9)
22490
22491 LO2HI
22492
22493     $03E8 20_US
22494     $03 TOP_LCD
22495     $CD 20_US
22496     $03 TOP_LCD
22497     $5 20_US
22498     $03 TOP_LCD
22499     $2 20_US
22500     $02 TOP_LCD
22501     $2 20_US
22502     $28 LCD_WRF
22503     $08 LCD_WRF
22504     LCD_Clear
22505     $06 LCD_WRF
22506     $0C LCD_WRF
22507     LCD_Clear
22508     ['] LCD_HOME IS CR
22509     ['] LCD_WRC  IS EMIT
22510     CR ." I love you"   
22511     ['] CR >BODY IS CR
22512     ['] EMIT >BODY IS EMIT
22513     ." RC5toLCD is running. Type STOP to quit"
22514     LIT RECURSE IS WARM
22515     ABORT
22516 ;
22517
22518
22519 CODE STOP
22520     MOV #SLEEP,R9
22521     ADD #4,R9
22522     MOV R9,-2(R9)
22523
22524 COLON
22525     ['] WARM >BODY IS WARM
22526
22527     COLD
22528 ;
22529
22530
22531
22532             ; downloading RC5toLCD.4th is done
22533 RST_HERE    ; this app is protected against <reset>
22534
22535 [THEN]
22536
22537
22538
22539
22540
22541 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
22542
22543 [DEFINED] ASM [IF]
22544
22545 MARKER {RC5TOLCD}
22546
22547 [UNDEFINED] MAX [IF]
22548
22549 CODE MAX
22550     CMP @R15,R14
22551     S<  ?GOTO FW1
22552 BW1 ADD #2,R15
22553     MOV @R13+,R0
22554 ENDCODE
22555
22556
22557 CODE MIN
22558     CMP @R15,R14
22559     S<  ?GOTO BW1
22560 FW1 MOV @R15+,R14
22561     MOV @R13+,R0
22562 ENDCODE
22563
22564 [THEN]
22565
22566
22567 [UNDEFINED] U.R [IF]
22568 : U.R
22569   >R  <# 0 # #S #>  
22570   R> OVER - 0 MAX SPACES TYPE
22571 ;
22572 [THEN]
22573
22574
22575
22576 CODE 20_US
22577 BEGIN
22578     BEGIN
22579         BIT #1,&$3C0
22580     0<> UNTIL
22581     BIC #1,&$3C0
22582     SUB #1,R14
22583 U< UNTIL
22584 MOV @R15+,R14
22585 MOV @R13+,R0
22586 ENDCODE
22587
22588
22589 CODE TOP_LCD
22590     BIS.B #4,&$243
22591     BIT.B #1,&$241
22592 0= IF
22593     AND.B #$0F,R14
22594     MOV.B R14,&$222
22595     BIC.B #4,&$243
22596     MOV @R15+,R14
22597     MOV @R13+,R0
22598 THEN
22599     SUB #2,R15
22600     MOV R14,0(R15)
22601     BIC.B #4,&$243
22602     MOV.B &$220,R14
22603     AND.B #$0F,R14
22604     MOV @R13+,R0
22605 ENDCODE
22606
22607
22608 CODE LCD_W
22609     SUB #2,R15
22610     MOV R14,0(R15)
22611     RRUM #4,R14
22612     BIC.B #1,&$243
22613     BIS.B #$0F,&$224
22614 COLON
22615     TOP_LCD 2 20_US
22616     TOP_LCD 2 20_US 
22617 ;
22618
22619
22620 CODE LCD_WrC
22621     BIS.B #2,&$243
22622     JMP LCD_W 
22623 ENDCODE
22624
22625
22626 CODE LCD_WrF
22627     BIC.B #2,&$243
22628     JMP LCD_W 
22629 ENDCODE
22630
22631
22632 : LCD_Clear 
22633     $01 LCD_WrF 100 20_us
22634 ;
22635
22636
22637 : LCD_Home 
22638     $02 LCD_WrF 100 20_us 
22639 ;
22640
22641
22642 [UNDEFINED] OR [IF]
22643
22644 CODE OR
22645 BIS @R15+,R14
22646 MOV @R13+,R0
22647 ENDCODE
22648
22649
22650 [THEN]
22651
22652 : LCD_Entry_set     $04 OR LCD_WrF ;
22653
22654 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
22655
22656 : LCD_DSP_Shift     $10 OR LCD_WrF ;
22657
22658 : LCD_Fn_Set        $20 OR LCD_WrF ;
22659
22660 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
22661
22662 : LCD_Goto          $80 OR LCD_WrF ;
22663
22664 CODE LCD_R
22665     BIC.B #$0F,&$224
22666     BIS.B #1,&$243
22667 COLON
22668     TOP_LCD 2 20_us
22669     TOP_LCD 2 20_us
22670 HI2LO
22671     RLAM #4,0(R15)
22672     ADD.B @R15+,R14
22673     MOV @R1+,R13
22674     MOV @R13+,R0
22675 ENDCODE
22676
22677
22678 CODE LCD_RdS
22679     BIC.B #2,&$243
22680     JMP LCD_R
22681 ENDCODE
22682
22683
22684 CODE LCD_RdC
22685     BIS.B #2,&$243
22686     JMP LCD_R
22687 ENDCODE
22688
22689
22690
22691 ASM WDT_INT
22692 BIT.B #$20,&$240
22693 0= IF
22694     CMP #19,&$3D6
22695     U< IF
22696         ADD #1,&$3D6
22697     THEN
22698 ELSE
22699     BIT.B #$40,&$240
22700     0= IF
22701         CMP #3,&$3D6
22702         U>= IF
22703            SUB #1,&$3D6
22704         THEN
22705     THEN
22706 THEN
22707 BW1
22708 BW2
22709 BW3
22710 BIC #$78,0(R1)
22711 RETI
22712 ENDASM
22713
22714
22715 ASM RC5_INT
22716   MOV #1,&$3A0
22717 MOV #1778,R9
22718 MOV #14,R10
22719 BEGIN
22720 MOV #%1011100100,&$380
22721     RRUM    #1,R9
22722     MOV     R9,R8
22723     RRUM    #1,R8
22724     ADD     R9,R8
22725     BEGIN   CMP R8,&$390
22726     U>= UNTIL
22727     BIT.B   #4,&$200
22728     ADDC    R11,R11
22729     MOV.B   &$200,&$208
22730     BIC.B   #4,&$20C
22731     SUB     #1,R10
22732 0<> WHILE
22733     ADD R9,R8
22734     BEGIN
22735         MOV &$390,R9
22736         CMP R8,R9
22737         U>= IF
22738         BIC #$30,&$380
22739         GOTO BW1
22740         THEN
22741         BIT.B #4,&$20C
22742     0<> UNTIL
22743 REPEAT
22744 BIC #$30,&$380
22745 RLAM    #1,R11
22746 MOV.B   R11,R9
22747 RRUM    #2,R9
22748 BIT     #$4000,R11
22749 0= IF   BIS #$40,R9
22750 THEN
22751 RRUM    #3,R11
22752 XOR     @R1,R11
22753 BIT     #$400,R11
22754 0= ?GOTO BW2
22755 XOR #$400,0(R1)
22756 SUB #4,R15
22757 MOV &BASE,2(R15)
22758 MOV #$10,&BASE
22759 MOV R14,0(R15)
22760 MOV R9,R14
22761 LO2HI
22762     ['] LCD_CLEAR IS CR
22763     ['] LCD_WrC  IS EMIT
22764     CR ." $" 2 U.R
22765     ['] CR >BODY IS CR
22766     ['] EMIT >BODY IS EMIT
22767 HI2LO
22768 MOV R14,&BASE
22769 MOV @R15+,R14
22770 GOTO BW3
22771 ENDASM
22772
22773
22774 ASM BACKGROUND
22775 MOV #SLEEP,R9
22776 ADD #4,R9
22777 MOV R9,R0
22778 ENDASM
22779
22780
22781 CODE START
22782     MOV #%1011010100,&$3C0
22783     MOV #1,&$3E0
22784     MOV #19,&$3D2
22785     MOV #%01100000,&$3C6
22786     MOV #10,&$3D6
22787     BIS.B #$20,&$204
22788     BIS.B #$20,&$20A
22789     BIS.B #7,&$245
22790     BIC.B #7,&$247
22791     BIS.B #$0F,&$224
22792     BIC.B #$0F,&$226
22793     BIS.B #4,&$20A
22794     BIC.B #4,&$20C
22795     MOV #RC5_INT,&$FFDE
22796     MOV #%0100010100,&$340
22797     MOV ##1638,&$352
22798     MOV #%10000,&$342
22799     MOV #WDT_INT,&$FFEA
22800
22801     MOV #SLEEP,R9
22802     MOV #BACKGROUND,2(R9)
22803
22804 LO2HI
22805
22806     $03E8 20_US
22807     $03 TOP_LCD
22808     $CD 20_US
22809     $03 TOP_LCD
22810     $5 20_US
22811     $03 TOP_LCD
22812     $2 20_US
22813     $02 TOP_LCD
22814     $2 20_US
22815     $28 LCD_WRF
22816     $08 LCD_WRF
22817     LCD_Clear
22818     $06 LCD_WRF
22819     $0C LCD_WRF
22820     LCD_Clear
22821     ['] LCD_HOME IS CR
22822     ['] LCD_WRC  IS EMIT
22823     CR ." I love you"   
22824     ['] CR >BODY IS CR
22825     ['] EMIT >BODY IS EMIT
22826     ." RC5toLCD is running. Type STOP to quit"
22827     LIT RECURSE IS WARM
22828     ABORT
22829 ;
22830
22831
22832 CODE STOP
22833     MOV #SLEEP,R9
22834     ADD #4,R9
22835     MOV R9,-2(R9)
22836
22837 COLON
22838     ['] WARM >BODY IS WARM
22839
22840     COLD
22841 ;
22842
22843
22844
22845             ; downloading RC5toLCD.4th is done
22846 RST_HERE    ; this app is protected against <reset>
22847
22848 [THEN]
22849
22850
22851
22852
22853
22854 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
22855
22856 [DEFINED] ASM [IF]
22857
22858 MARKER {RC5TOLCD}
22859
22860 [UNDEFINED] MAX [IF]
22861
22862 CODE MAX
22863     CMP @R15,R14
22864     S<  ?GOTO FW1
22865 BW1 ADD #2,R15
22866     MOV @R13+,R0
22867 ENDCODE
22868
22869
22870 CODE MIN
22871     CMP @R15,R14
22872     S<  ?GOTO BW1
22873 FW1 MOV @R15+,R14
22874     MOV @R13+,R0
22875 ENDCODE
22876
22877 [THEN]
22878
22879
22880 [UNDEFINED] U.R [IF]
22881 : U.R
22882   >R  <# 0 # #S #>  
22883   R> OVER - 0 MAX SPACES TYPE
22884 ;
22885 [THEN]
22886
22887
22888
22889 CODE 20_US
22890 BEGIN
22891     BEGIN
22892         BIT #1,&$3C0
22893     0<> UNTIL
22894     BIC #1,&$3C0
22895     SUB #1,R14
22896 U< UNTIL
22897 MOV @R15+,R14
22898 MOV @R13+,R0
22899 ENDCODE
22900
22901
22902 CODE TOP_LCD
22903     BIS.B #4,&$243
22904     BIT.B #1,&$241
22905 0= IF
22906     AND.B #$0F,R14
22907     MOV.B R14,&$222
22908     BIC.B #4,&$243
22909     MOV @R15+,R14
22910     MOV @R13+,R0
22911 THEN
22912     SUB #2,R15
22913     MOV R14,0(R15)
22914     BIC.B #4,&$243
22915     MOV.B &$220,R14
22916     AND.B #$0F,R14
22917     MOV @R13+,R0
22918 ENDCODE
22919
22920
22921 CODE LCD_W
22922     SUB #2,R15
22923     MOV R14,0(R15)
22924     RRUM #4,R14
22925     BIC.B #1,&$243
22926     BIS.B #$0F,&$224
22927 COLON
22928     TOP_LCD 2 20_US
22929     TOP_LCD 2 20_US 
22930 ;
22931
22932
22933 CODE LCD_WrC
22934     BIS.B #2,&$243
22935     JMP LCD_W 
22936 ENDCODE
22937
22938
22939 CODE LCD_WrF
22940     BIC.B #2,&$243
22941     JMP LCD_W 
22942 ENDCODE
22943
22944
22945 : LCD_Clear 
22946     $01 LCD_WrF 100 20_us
22947 ;
22948
22949
22950 : LCD_Home 
22951     $02 LCD_WrF 100 20_us 
22952 ;
22953
22954
22955 [UNDEFINED] OR [IF]
22956
22957 CODE OR
22958 BIS @R15+,R14
22959 MOV @R13+,R0
22960 ENDCODE
22961
22962
22963 [THEN]
22964
22965 : LCD_Entry_set     $04 OR LCD_WrF ;
22966
22967 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
22968
22969 : LCD_DSP_Shift     $10 OR LCD_WrF ;
22970
22971 : LCD_Fn_Set        $20 OR LCD_WrF ;
22972
22973 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
22974
22975 : LCD_Goto          $80 OR LCD_WrF ;
22976
22977 CODE LCD_R
22978     BIC.B #$0F,&$224
22979     BIS.B #1,&$243
22980 COLON
22981     TOP_LCD 2 20_us
22982     TOP_LCD 2 20_us
22983 HI2LO
22984     RLAM #4,0(R15)
22985     ADD.B @R15+,R14
22986     MOV @R1+,R13
22987     MOV @R13+,R0
22988 ENDCODE
22989
22990
22991 CODE LCD_RdS
22992     BIC.B #2,&$243
22993     JMP LCD_R
22994 ENDCODE
22995
22996
22997 CODE LCD_RdC
22998     BIS.B #2,&$243
22999     JMP LCD_R
23000 ENDCODE
23001
23002
23003
23004 ASM WDT_INT
23005 BIT.B #$20,&$240
23006 0= IF
23007     CMP #19,&$3D6
23008     U< IF
23009         ADD #1,&$3D6
23010     THEN
23011 ELSE
23012     BIT.B #$40,&$240
23013     0= IF
23014         CMP #3,&$3D6
23015         U>= IF
23016            SUB #1,&$3D6
23017         THEN
23018     THEN
23019 THEN
23020 BW1
23021 BW2
23022 BW3
23023 BIC #$78,0(R1)
23024 RETI
23025 ENDASM
23026
23027
23028 ASM RC5_INT
23029   MOV #1,&$3A0
23030 MOV #1778,R9
23031 MOV #14,R10
23032 BEGIN
23033 MOV #%1011100100,&$380
23034     RRUM    #1,R9
23035     MOV     R9,R8
23036     RRUM    #1,R8
23037     ADD     R9,R8
23038     BEGIN   CMP R8,&$390
23039     U>= UNTIL
23040     BIT.B   #4,&$200
23041     ADDC    R11,R11
23042     MOV.B   &$200,&$208
23043     BIC.B   #4,&$20C
23044     SUB     #1,R10
23045 0<> WHILE
23046     ADD R9,R8
23047     BEGIN
23048         MOV &$390,R9
23049         CMP R8,R9
23050         U>= IF
23051         BIC #$30,&$380
23052         GOTO BW1
23053         THEN
23054         BIT.B #4,&$20C
23055     0<> UNTIL
23056 REPEAT
23057 BIC #$30,&$380
23058 RLAM    #1,R11
23059 MOV.B   R11,R9
23060 RRUM    #2,R9
23061 BIT     #$4000,R11
23062 0= IF   BIS #$40,R9
23063 THEN
23064 RRUM    #3,R11
23065 XOR     @R1,R11
23066 BIT     #$400,R11
23067 0= ?GOTO BW2
23068 XOR #$400,0(R1)
23069 SUB #4,R15
23070 MOV &BASE,2(R15)
23071 MOV #$10,&BASE
23072 MOV R14,0(R15)
23073 MOV R9,R14
23074 LO2HI
23075     ['] LCD_CLEAR IS CR
23076     ['] LCD_WrC  IS EMIT
23077     CR ." $" 2 U.R
23078     ['] CR >BODY IS CR
23079     ['] EMIT >BODY IS EMIT
23080 HI2LO
23081 MOV R14,&BASE
23082 MOV @R15+,R14
23083 GOTO BW3
23084 ENDASM
23085
23086
23087 ASM BACKGROUND
23088 MOV #SLEEP,R9
23089 ADD #4,R9
23090 MOV R9,R0
23091 ENDASM
23092
23093
23094 CODE START
23095     MOV #%1011010100,&$3C0
23096     MOV #1,&$3E0
23097     MOV #19,&$3D2
23098     MOV #%01100000,&$3C6
23099     MOV #10,&$3D6
23100     BIS.B #$20,&$204
23101     BIS.B #$20,&$20A
23102     BIS.B #7,&$245
23103     BIC.B #7,&$247
23104     BIS.B #$0F,&$224
23105     BIC.B #$0F,&$226
23106     BIS.B #4,&$20A
23107     BIC.B #4,&$20C
23108     MOV #RC5_INT,&$FFDE
23109     MOV #%0100010100,&$340
23110     MOV ##1638,&$352
23111     MOV #%10000,&$342
23112     MOV #WDT_INT,&$FFEA
23113
23114     MOV #SLEEP,R9
23115     MOV #BACKGROUND,2(R9)
23116
23117 LO2HI
23118
23119     $03E8 20_US
23120     $03 TOP_LCD
23121     $CD 20_US
23122     $03 TOP_LCD
23123     $5 20_US
23124     $03 TOP_LCD
23125     $2 20_US
23126     $02 TOP_LCD
23127     $2 20_US
23128     $28 LCD_WRF
23129     $08 LCD_WRF
23130     LCD_Clear
23131     $06 LCD_WRF
23132     $0C LCD_WRF
23133     LCD_Clear
23134     ['] LCD_HOME IS CR
23135     ['] LCD_WRC  IS EMIT
23136     CR ." I love you"   
23137     ['] CR >BODY IS CR
23138     ['] EMIT >BODY IS EMIT
23139     ." RC5toLCD is running. Type STOP to quit"
23140     LIT RECURSE IS WARM
23141     ABORT
23142 ;
23143
23144
23145 CODE STOP
23146     MOV #SLEEP,R9
23147     ADD #4,R9
23148     MOV R9,-2(R9)
23149
23150 COLON
23151     ['] WARM >BODY IS WARM
23152
23153     COLD
23154 ;
23155
23156
23157
23158             ; downloading RC5toLCD.4th is done
23159 RST_HERE    ; this app is protected against <reset>
23160
23161 [THEN]
23162
23163
23164
23165
23166
23167 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
23168
23169 [DEFINED] ASM [IF]
23170
23171 MARKER {RC5TOLCD}
23172
23173 [UNDEFINED] MAX [IF]
23174
23175 CODE MAX
23176     CMP @R15,R14
23177     S<  ?GOTO FW1
23178 BW1 ADD #2,R15
23179     MOV @R13+,R0
23180 ENDCODE
23181
23182
23183 CODE MIN
23184     CMP @R15,R14
23185     S<  ?GOTO BW1
23186 FW1 MOV @R15+,R14
23187     MOV @R13+,R0
23188 ENDCODE
23189
23190 [THEN]
23191
23192
23193 [UNDEFINED] U.R [IF]
23194 : U.R
23195   >R  <# 0 # #S #>  
23196   R> OVER - 0 MAX SPACES TYPE
23197 ;
23198 [THEN]
23199
23200
23201
23202 CODE 20_US
23203 BEGIN
23204     BEGIN
23205         BIT #1,&$3C0
23206     0<> UNTIL
23207     BIC #1,&$3C0
23208     SUB #1,R14
23209 U< UNTIL
23210 MOV @R15+,R14
23211 MOV @R13+,R0
23212 ENDCODE
23213
23214
23215 CODE TOP_LCD
23216     BIS.B #4,&$243
23217     BIT.B #1,&$241
23218 0= IF
23219     AND.B #$0F,R14
23220     MOV.B R14,&$222
23221     BIC.B #4,&$243
23222     MOV @R15+,R14
23223     MOV @R13+,R0
23224 THEN
23225     SUB #2,R15
23226     MOV R14,0(R15)
23227     BIC.B #4,&$243
23228     MOV.B &$220,R14
23229     AND.B #$0F,R14
23230     MOV @R13+,R0
23231 ENDCODE
23232
23233
23234 CODE LCD_W
23235     SUB #2,R15
23236     MOV R14,0(R15)
23237     RRUM #4,R14
23238     BIC.B #1,&$243
23239     BIS.B #$0F,&$224
23240 COLON
23241     TOP_LCD 2 20_US
23242     TOP_LCD 2 20_US 
23243 ;
23244
23245
23246 CODE LCD_WrC
23247     BIS.B #2,&$243
23248     JMP LCD_W 
23249 ENDCODE
23250
23251
23252 CODE LCD_WrF
23253     BIC.B #2,&$243
23254     JMP LCD_W 
23255 ENDCODE
23256
23257
23258 : LCD_Clear 
23259     $01 LCD_WrF 100 20_us
23260 ;
23261
23262
23263 : LCD_Home 
23264     $02 LCD_WrF 100 20_us 
23265 ;
23266
23267
23268 [UNDEFINED] OR [IF]
23269
23270 CODE OR
23271 BIS @R15+,R14
23272 MOV @R13+,R0
23273 ENDCODE
23274
23275
23276 [THEN]
23277
23278 : LCD_Entry_set     $04 OR LCD_WrF ;
23279
23280 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
23281
23282 : LCD_DSP_Shift     $10 OR LCD_WrF ;
23283
23284 : LCD_Fn_Set        $20 OR LCD_WrF ;
23285
23286 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
23287
23288 : LCD_Goto          $80 OR LCD_WrF ;
23289
23290 CODE LCD_R
23291     BIC.B #$0F,&$224
23292     BIS.B #1,&$243
23293 COLON
23294     TOP_LCD 2 20_us
23295     TOP_LCD 2 20_us
23296 HI2LO
23297     RLAM #4,0(R15)
23298     ADD.B @R15+,R14
23299     MOV @R1+,R13
23300     MOV @R13+,R0
23301 ENDCODE
23302
23303
23304 CODE LCD_RdS
23305     BIC.B #2,&$243
23306     JMP LCD_R
23307 ENDCODE
23308
23309
23310 CODE LCD_RdC
23311     BIS.B #2,&$243
23312     JMP LCD_R
23313 ENDCODE
23314
23315
23316
23317 ASM WDT_INT
23318 BIT.B #$20,&$240
23319 0= IF
23320     CMP #19,&$3D6
23321     U< IF
23322         ADD #1,&$3D6
23323     THEN
23324 ELSE
23325     BIT.B #$40,&$240
23326     0= IF
23327         CMP #3,&$3D6
23328         U>= IF
23329            SUB #1,&$3D6
23330         THEN
23331     THEN
23332 THEN
23333 BW1
23334 BW2
23335 BW3
23336 BIC #$78,0(R1)
23337 RETI
23338 ENDASM
23339
23340
23341 ASM RC5_INT
23342   MOV #1,&$3A0
23343 MOV #1778,R9
23344 MOV #14,R10
23345 BEGIN
23346 MOV #%1011100100,&$380
23347     RRUM    #1,R9
23348     MOV     R9,R8
23349     RRUM    #1,R8
23350     ADD     R9,R8
23351     BEGIN   CMP R8,&$390
23352     U>= UNTIL
23353     BIT.B   #4,&$200
23354     ADDC    R11,R11
23355     MOV.B   &$200,&$208
23356     BIC.B   #4,&$20C
23357     SUB     #1,R10
23358 0<> WHILE
23359     ADD R9,R8
23360     BEGIN
23361         MOV &$390,R9
23362         CMP R8,R9
23363         U>= IF
23364         BIC #$30,&$380
23365         GOTO BW1
23366         THEN
23367         BIT.B #4,&$20C
23368     0<> UNTIL
23369 REPEAT
23370 BIC #$30,&$380
23371 RLAM    #1,R11
23372 MOV.B   R11,R9
23373 RRUM    #2,R9
23374 BIT     #$4000,R11
23375 0= IF   BIS #$40,R9
23376 THEN
23377 RRUM    #3,R11
23378 XOR     @R1,R11
23379 BIT     #$400,R11
23380 0= ?GOTO BW2
23381 XOR #$400,0(R1)
23382 SUB #4,R15
23383 MOV &BASE,2(R15)
23384 MOV #$10,&BASE
23385 MOV R14,0(R15)
23386 MOV R9,R14
23387 LO2HI
23388     ['] LCD_CLEAR IS CR
23389     ['] LCD_WrC  IS EMIT
23390     CR ." $" 2 U.R
23391     ['] CR >BODY IS CR
23392     ['] EMIT >BODY IS EMIT
23393 HI2LO
23394 MOV R14,&BASE
23395 MOV @R15+,R14
23396 GOTO BW3
23397 ENDASM
23398
23399
23400 ASM BACKGROUND
23401 MOV #SLEEP,R9
23402 ADD #4,R9
23403 MOV R9,R0
23404 ENDASM
23405
23406
23407 CODE START
23408     MOV #%1011010100,&$3C0
23409     MOV #1,&$3E0
23410     MOV #19,&$3D2
23411     MOV #%01100000,&$3C6
23412     MOV #10,&$3D6
23413     BIS.B #$20,&$204
23414     BIS.B #$20,&$20A
23415     BIS.B #7,&$245
23416     BIC.B #7,&$247
23417     BIS.B #$0F,&$224
23418     BIC.B #$0F,&$226
23419     BIS.B #4,&$20A
23420     BIC.B #4,&$20C
23421     MOV #RC5_INT,&$FFDE
23422     MOV #%0100010100,&$340
23423     MOV ##1638,&$352
23424     MOV #%10000,&$342
23425     MOV #WDT_INT,&$FFEA
23426
23427     MOV #SLEEP,R9
23428     MOV #BACKGROUND,2(R9)
23429
23430 LO2HI
23431
23432     $03E8 20_US
23433     $03 TOP_LCD
23434     $CD 20_US
23435     $03 TOP_LCD
23436     $5 20_US
23437     $03 TOP_LCD
23438     $2 20_US
23439     $02 TOP_LCD
23440     $2 20_US
23441     $28 LCD_WRF
23442     $08 LCD_WRF
23443     LCD_Clear
23444     $06 LCD_WRF
23445     $0C LCD_WRF
23446     LCD_Clear
23447     ['] LCD_HOME IS CR
23448     ['] LCD_WRC  IS EMIT
23449     CR ." I love you"   
23450     ['] CR >BODY IS CR
23451     ['] EMIT >BODY IS EMIT
23452     ." RC5toLCD is running. Type STOP to quit"
23453     LIT RECURSE IS WARM
23454     ABORT
23455 ;
23456
23457
23458 CODE STOP
23459     MOV #SLEEP,R9
23460     ADD #4,R9
23461     MOV R9,-2(R9)
23462
23463 COLON
23464     ['] WARM >BODY IS WARM
23465
23466     COLD
23467 ;
23468
23469
23470
23471             ; downloading RC5toLCD.4th is done
23472 RST_HERE    ; this app is protected against <reset>
23473
23474 [THEN]
23475
23476
23477
23478
23479
23480 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
23481
23482 [DEFINED] ASM [IF]
23483
23484 MARKER {RC5TOLCD}
23485
23486 [UNDEFINED] MAX [IF]
23487
23488 CODE MAX
23489     CMP @R15,R14
23490     S<  ?GOTO FW1
23491 BW1 ADD #2,R15
23492     MOV @R13+,R0
23493 ENDCODE
23494
23495
23496 CODE MIN
23497     CMP @R15,R14
23498     S<  ?GOTO BW1
23499 FW1 MOV @R15+,R14
23500     MOV @R13+,R0
23501 ENDCODE
23502
23503 [THEN]
23504
23505
23506 [UNDEFINED] U.R [IF]
23507 : U.R
23508   >R  <# 0 # #S #>  
23509   R> OVER - 0 MAX SPACES TYPE
23510 ;
23511 [THEN]
23512
23513
23514
23515 CODE 20_US
23516 BEGIN
23517     BEGIN
23518         BIT #1,&$3C0
23519     0<> UNTIL
23520     BIC #1,&$3C0
23521     SUB #1,R14
23522 U< UNTIL
23523 MOV @R15+,R14
23524 MOV @R13+,R0
23525 ENDCODE
23526
23527
23528 CODE TOP_LCD
23529     BIS.B #4,&$243
23530     BIT.B #1,&$241
23531 0= IF
23532     AND.B #$0F,R14
23533     MOV.B R14,&$222
23534     BIC.B #4,&$243
23535     MOV @R15+,R14
23536     MOV @R13+,R0
23537 THEN
23538     SUB #2,R15
23539     MOV R14,0(R15)
23540     BIC.B #4,&$243
23541     MOV.B &$220,R14
23542     AND.B #$0F,R14
23543     MOV @R13+,R0
23544 ENDCODE
23545
23546
23547 CODE LCD_W
23548     SUB #2,R15
23549     MOV R14,0(R15)
23550     RRUM #4,R14
23551     BIC.B #1,&$243
23552     BIS.B #$0F,&$224
23553 COLON
23554     TOP_LCD 2 20_US
23555     TOP_LCD 2 20_US 
23556 ;
23557
23558
23559 CODE LCD_WrC
23560     BIS.B #2,&$243
23561     JMP LCD_W 
23562 ENDCODE
23563
23564
23565 CODE LCD_WrF
23566     BIC.B #2,&$243
23567     JMP LCD_W 
23568 ENDCODE
23569
23570
23571 : LCD_Clear 
23572     $01 LCD_WrF 100 20_us
23573 ;
23574
23575
23576 : LCD_Home 
23577     $02 LCD_WrF 100 20_us 
23578 ;
23579
23580
23581 [UNDEFINED] OR [IF]
23582
23583 CODE OR
23584 BIS @R15+,R14
23585 MOV @R13+,R0
23586 ENDCODE
23587
23588
23589 [THEN]
23590
23591 : LCD_Entry_set     $04 OR LCD_WrF ;
23592
23593 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
23594
23595 : LCD_DSP_Shift     $10 OR LCD_WrF ;
23596
23597 : LCD_Fn_Set        $20 OR LCD_WrF ;
23598
23599 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
23600
23601 : LCD_Goto          $80 OR LCD_WrF ;
23602
23603 CODE LCD_R
23604     BIC.B #$0F,&$224
23605     BIS.B #1,&$243
23606 COLON
23607     TOP_LCD 2 20_us
23608     TOP_LCD 2 20_us
23609 HI2LO
23610     RLAM #4,0(R15)
23611     ADD.B @R15+,R14
23612     MOV @R1+,R13
23613     MOV @R13+,R0
23614 ENDCODE
23615
23616
23617 CODE LCD_RdS
23618     BIC.B #2,&$243
23619     JMP LCD_R
23620 ENDCODE
23621
23622
23623 CODE LCD_RdC
23624     BIS.B #2,&$243
23625     JMP LCD_R
23626 ENDCODE
23627
23628
23629
23630 ASM WDT_INT
23631 BIT.B #$20,&$240
23632 0= IF
23633     CMP #19,&$3D6
23634     U< IF
23635         ADD #1,&$3D6
23636     THEN
23637 ELSE
23638     BIT.B #$40,&$240
23639     0= IF
23640         CMP #3,&$3D6
23641         U>= IF
23642            SUB #1,&$3D6
23643         THEN
23644     THEN
23645 THEN
23646 BW1
23647 BW2
23648 BW3
23649 BIC #$78,0(R1)
23650 RETI
23651 ENDASM
23652
23653
23654 ASM RC5_INT
23655   MOV #1,&$3A0
23656 MOV #1778,R9
23657 MOV #14,R10
23658 BEGIN
23659 MOV #%1011100100,&$380
23660     RRUM    #1,R9
23661     MOV     R9,R8
23662     RRUM    #1,R8
23663     ADD     R9,R8
23664     BEGIN   CMP R8,&$390
23665     U>= UNTIL
23666     BIT.B   #4,&$200
23667     ADDC    R11,R11
23668     MOV.B   &$200,&$208
23669     BIC.B   #4,&$20C
23670     SUB     #1,R10
23671 0<> WHILE
23672     ADD R9,R8
23673     BEGIN
23674         MOV &$390,R9
23675         CMP R8,R9
23676         U>= IF
23677         BIC #$30,&$380
23678         GOTO BW1
23679         THEN
23680         BIT.B #4,&$20C
23681     0<> UNTIL
23682 REPEAT
23683 BIC #$30,&$380
23684 RLAM    #1,R11
23685 MOV.B   R11,R9
23686 RRUM    #2,R9
23687 BIT     #$4000,R11
23688 0= IF   BIS #$40,R9
23689 THEN
23690 RRUM    #3,R11
23691 XOR     @R1,R11
23692 BIT     #$400,R11
23693 0= ?GOTO BW2
23694 XOR #$400,0(R1)
23695 SUB #4,R15
23696 MOV &BASE,2(R15)
23697 MOV #$10,&BASE
23698 MOV R14,0(R15)
23699 MOV R9,R14
23700 LO2HI
23701     ['] LCD_CLEAR IS CR
23702     ['] LCD_WrC  IS EMIT
23703     CR ." $" 2 U.R
23704     ['] CR >BODY IS CR
23705     ['] EMIT >BODY IS EMIT
23706 HI2LO
23707 MOV R14,&BASE
23708 MOV @R15+,R14
23709 GOTO BW3
23710 ENDASM
23711
23712
23713 ASM BACKGROUND
23714 MOV #SLEEP,R9
23715 ADD #4,R9
23716 MOV R9,R0
23717 ENDASM
23718
23719
23720 CODE START
23721     MOV #%1011010100,&$3C0
23722     MOV #1,&$3E0
23723     MOV #19,&$3D2
23724     MOV #%01100000,&$3C6
23725     MOV #10,&$3D6
23726     BIS.B #$20,&$204
23727     BIS.B #$20,&$20A
23728     BIS.B #7,&$245
23729     BIC.B #7,&$247
23730     BIS.B #$0F,&$224
23731     BIC.B #$0F,&$226
23732     BIS.B #4,&$20A
23733     BIC.B #4,&$20C
23734     MOV #RC5_INT,&$FFDE
23735     MOV #%0100010100,&$340
23736     MOV ##1638,&$352
23737     MOV #%10000,&$342
23738     MOV #WDT_INT,&$FFEA
23739
23740     MOV #SLEEP,R9
23741     MOV #BACKGROUND,2(R9)
23742
23743 LO2HI
23744
23745     $03E8 20_US
23746     $03 TOP_LCD
23747     $CD 20_US
23748     $03 TOP_LCD
23749     $5 20_US
23750     $03 TOP_LCD
23751     $2 20_US
23752     $02 TOP_LCD
23753     $2 20_US
23754     $28 LCD_WRF
23755     $08 LCD_WRF
23756     LCD_Clear
23757     $06 LCD_WRF
23758     $0C LCD_WRF
23759     LCD_Clear
23760     ['] LCD_HOME IS CR
23761     ['] LCD_WRC  IS EMIT
23762     CR ." I love you"   
23763     ['] CR >BODY IS CR
23764     ['] EMIT >BODY IS EMIT
23765     ." RC5toLCD is running. Type STOP to quit"
23766     LIT RECURSE IS WARM
23767     ABORT
23768 ;
23769
23770
23771 CODE STOP
23772     MOV #SLEEP,R9
23773     ADD #4,R9
23774     MOV R9,-2(R9)
23775
23776 COLON
23777     ['] WARM >BODY IS WARM
23778
23779     COLD
23780 ;
23781
23782
23783
23784             ; downloading RC5toLCD.4th is done
23785 RST_HERE    ; this app is protected against <reset>
23786
23787 [THEN]
23788
23789
23790
23791
23792
23793 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
23794
23795 [DEFINED] ASM [IF]
23796
23797 MARKER {RC5TOLCD}
23798
23799 [UNDEFINED] MAX [IF]
23800
23801 CODE MAX
23802     CMP @R15,R14
23803     S<  ?GOTO FW1
23804 BW1 ADD #2,R15
23805     MOV @R13+,R0
23806 ENDCODE
23807
23808
23809 CODE MIN
23810     CMP @R15,R14
23811     S<  ?GOTO BW1
23812 FW1 MOV @R15+,R14
23813     MOV @R13+,R0
23814 ENDCODE
23815
23816 [THEN]
23817
23818
23819 [UNDEFINED] U.R [IF]
23820 : U.R
23821   >R  <# 0 # #S #>  
23822   R> OVER - 0 MAX SPACES TYPE
23823 ;
23824 [THEN]
23825
23826
23827
23828 CODE 20_US
23829 BEGIN
23830     BEGIN
23831         BIT #1,&$3C0
23832     0<> UNTIL
23833     BIC #1,&$3C0
23834     SUB #1,R14
23835 U< UNTIL
23836 MOV @R15+,R14
23837 MOV @R13+,R0
23838 ENDCODE
23839
23840
23841 CODE TOP_LCD
23842     BIS.B #4,&$243
23843     BIT.B #1,&$241
23844 0= IF
23845     AND.B #$0F,R14
23846     MOV.B R14,&$222
23847     BIC.B #4,&$243
23848     MOV @R15+,R14
23849     MOV @R13+,R0
23850 THEN
23851     SUB #2,R15
23852     MOV R14,0(R15)
23853     BIC.B #4,&$243
23854     MOV.B &$220,R14
23855     AND.B #$0F,R14
23856     MOV @R13+,R0
23857 ENDCODE
23858
23859
23860 CODE LCD_W
23861     SUB #2,R15
23862     MOV R14,0(R15)
23863     RRUM #4,R14
23864     BIC.B #1,&$243
23865     BIS.B #$0F,&$224
23866 COLON
23867     TOP_LCD 2 20_US
23868     TOP_LCD 2 20_US 
23869 ;
23870
23871
23872 CODE LCD_WrC
23873     BIS.B #2,&$243
23874     JMP LCD_W 
23875 ENDCODE
23876
23877
23878 CODE LCD_WrF
23879     BIC.B #2,&$243
23880     JMP LCD_W 
23881 ENDCODE
23882
23883
23884 : LCD_Clear 
23885     $01 LCD_WrF 100 20_us
23886 ;
23887
23888
23889 : LCD_Home 
23890     $02 LCD_WrF 100 20_us 
23891 ;
23892
23893
23894 [UNDEFINED] OR [IF]
23895
23896 CODE OR
23897 BIS @R15+,R14
23898 MOV @R13+,R0
23899 ENDCODE
23900
23901
23902 [THEN]
23903
23904 : LCD_Entry_set     $04 OR LCD_WrF ;
23905
23906 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
23907
23908 : LCD_DSP_Shift     $10 OR LCD_WrF ;
23909
23910 : LCD_Fn_Set        $20 OR LCD_WrF ;
23911
23912 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
23913
23914 : LCD_Goto          $80 OR LCD_WrF ;
23915
23916 CODE LCD_R
23917     BIC.B #$0F,&$224
23918     BIS.B #1,&$243
23919 COLON
23920     TOP_LCD 2 20_us
23921     TOP_LCD 2 20_us
23922 HI2LO
23923     RLAM #4,0(R15)
23924     ADD.B @R15+,R14
23925     MOV @R1+,R13
23926     MOV @R13+,R0
23927 ENDCODE
23928
23929
23930 CODE LCD_RdS
23931     BIC.B #2,&$243
23932     JMP LCD_R
23933 ENDCODE
23934
23935
23936 CODE LCD_RdC
23937     BIS.B #2,&$243
23938     JMP LCD_R
23939 ENDCODE
23940
23941
23942
23943 ASM WDT_INT
23944 BIT.B #$20,&$240
23945 0= IF
23946     CMP #19,&$3D6
23947     U< IF
23948         ADD #1,&$3D6
23949     THEN
23950 ELSE
23951     BIT.B #$40,&$240
23952     0= IF
23953         CMP #3,&$3D6
23954         U>= IF
23955            SUB #1,&$3D6
23956         THEN
23957     THEN
23958 THEN
23959 BW1
23960 BW2
23961 BW3
23962 BIC #$78,0(R1)
23963 RETI
23964 ENDASM
23965
23966
23967 ASM RC5_INT
23968   MOV #1,&$3A0
23969 MOV #1778,R9
23970 MOV #14,R10
23971 BEGIN
23972 MOV #%1011100100,&$380
23973     RRUM    #1,R9
23974     MOV     R9,R8
23975     RRUM    #1,R8
23976     ADD     R9,R8
23977     BEGIN   CMP R8,&$390
23978     U>= UNTIL
23979     BIT.B   #4,&$200
23980     ADDC    R11,R11
23981     MOV.B   &$200,&$208
23982     BIC.B   #4,&$20C
23983     SUB     #1,R10
23984 0<> WHILE
23985     ADD R9,R8
23986     BEGIN
23987         MOV &$390,R9
23988         CMP R8,R9
23989         U>= IF
23990         BIC #$30,&$380
23991         GOTO BW1
23992         THEN
23993         BIT.B #4,&$20C
23994     0<> UNTIL
23995 REPEAT
23996 BIC #$30,&$380
23997 RLAM    #1,R11
23998 MOV.B   R11,R9
23999 RRUM    #2,R9
24000 BIT     #$4000,R11
24001 0= IF   BIS #$40,R9
24002 THEN
24003 RRUM    #3,R11
24004 XOR     @R1,R11
24005 BIT     #$400,R11
24006 0= ?GOTO BW2
24007 XOR #$400,0(R1)
24008 SUB #4,R15
24009 MOV &BASE,2(R15)
24010 MOV #$10,&BASE
24011 MOV R14,0(R15)
24012 MOV R9,R14
24013 LO2HI
24014     ['] LCD_CLEAR IS CR
24015     ['] LCD_WrC  IS EMIT
24016     CR ." $" 2 U.R
24017     ['] CR >BODY IS CR
24018     ['] EMIT >BODY IS EMIT
24019 HI2LO
24020 MOV R14,&BASE
24021 MOV @R15+,R14
24022 GOTO BW3
24023 ENDASM
24024
24025
24026 ASM BACKGROUND
24027 MOV #SLEEP,R9
24028 ADD #4,R9
24029 MOV R9,R0
24030 ENDASM
24031
24032
24033 CODE START
24034     MOV #%1011010100,&$3C0
24035     MOV #1,&$3E0
24036     MOV #19,&$3D2
24037     MOV #%01100000,&$3C6
24038     MOV #10,&$3D6
24039     BIS.B #$20,&$204
24040     BIS.B #$20,&$20A
24041     BIS.B #7,&$245
24042     BIC.B #7,&$247
24043     BIS.B #$0F,&$224
24044     BIC.B #$0F,&$226
24045     BIS.B #4,&$20A
24046     BIC.B #4,&$20C
24047     MOV #RC5_INT,&$FFDE
24048     MOV #%0100010100,&$340
24049     MOV ##1638,&$352
24050     MOV #%10000,&$342
24051     MOV #WDT_INT,&$FFEA
24052
24053     MOV #SLEEP,R9
24054     MOV #BACKGROUND,2(R9)
24055
24056 LO2HI
24057
24058     $03E8 20_US
24059     $03 TOP_LCD
24060     $CD 20_US
24061     $03 TOP_LCD
24062     $5 20_US
24063     $03 TOP_LCD
24064     $2 20_US
24065     $02 TOP_LCD
24066     $2 20_US
24067     $28 LCD_WRF
24068     $08 LCD_WRF
24069     LCD_Clear
24070     $06 LCD_WRF
24071     $0C LCD_WRF
24072     LCD_Clear
24073     ['] LCD_HOME IS CR
24074     ['] LCD_WRC  IS EMIT
24075     CR ." I love you"   
24076     ['] CR >BODY IS CR
24077     ['] EMIT >BODY IS EMIT
24078     ." RC5toLCD is running. Type STOP to quit"
24079     LIT RECURSE IS WARM
24080     ABORT
24081 ;
24082
24083
24084 CODE STOP
24085     MOV #SLEEP,R9
24086     ADD #4,R9
24087     MOV R9,-2(R9)
24088
24089 COLON
24090     ['] WARM >BODY IS WARM
24091
24092     COLD
24093 ;
24094
24095
24096
24097             ; downloading RC5toLCD.4th is done
24098 RST_HERE    ; this app is protected against <reset>
24099
24100 [THEN]
24101
24102
24103
24104
24105
24106 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
24107
24108 [DEFINED] ASM [IF]
24109
24110 MARKER {RC5TOLCD}
24111
24112 [UNDEFINED] MAX [IF]
24113
24114 CODE MAX
24115     CMP @R15,R14
24116     S<  ?GOTO FW1
24117 BW1 ADD #2,R15
24118     MOV @R13+,R0
24119 ENDCODE
24120
24121
24122 CODE MIN
24123     CMP @R15,R14
24124     S<  ?GOTO BW1
24125 FW1 MOV @R15+,R14
24126     MOV @R13+,R0
24127 ENDCODE
24128
24129 [THEN]
24130
24131
24132 [UNDEFINED] U.R [IF]
24133 : U.R
24134   >R  <# 0 # #S #>  
24135   R> OVER - 0 MAX SPACES TYPE
24136 ;
24137 [THEN]
24138
24139
24140
24141 CODE 20_US
24142 BEGIN
24143     BEGIN
24144         BIT #1,&$3C0
24145     0<> UNTIL
24146     BIC #1,&$3C0
24147     SUB #1,R14
24148 U< UNTIL
24149 MOV @R15+,R14
24150 MOV @R13+,R0
24151 ENDCODE
24152
24153
24154 CODE TOP_LCD
24155     BIS.B #4,&$243
24156     BIT.B #1,&$241
24157 0= IF
24158     AND.B #$0F,R14
24159     MOV.B R14,&$222
24160     BIC.B #4,&$243
24161     MOV @R15+,R14
24162     MOV @R13+,R0
24163 THEN
24164     SUB #2,R15
24165     MOV R14,0(R15)
24166     BIC.B #4,&$243
24167     MOV.B &$220,R14
24168     AND.B #$0F,R14
24169     MOV @R13+,R0
24170 ENDCODE
24171
24172
24173 CODE LCD_W
24174     SUB #2,R15
24175     MOV R14,0(R15)
24176     RRUM #4,R14
24177     BIC.B #1,&$243
24178     BIS.B #$0F,&$224
24179 COLON
24180     TOP_LCD 2 20_US
24181     TOP_LCD 2 20_US 
24182 ;
24183
24184
24185 CODE LCD_WrC
24186     BIS.B #2,&$243
24187     JMP LCD_W 
24188 ENDCODE
24189
24190
24191 CODE LCD_WrF
24192     BIC.B #2,&$243
24193     JMP LCD_W 
24194 ENDCODE
24195
24196
24197 : LCD_Clear 
24198     $01 LCD_WrF 100 20_us
24199 ;
24200
24201
24202 : LCD_Home 
24203     $02 LCD_WrF 100 20_us 
24204 ;
24205
24206
24207 [UNDEFINED] OR [IF]
24208
24209 CODE OR
24210 BIS @R15+,R14
24211 MOV @R13+,R0
24212 ENDCODE
24213
24214
24215 [THEN]
24216
24217 : LCD_Entry_set     $04 OR LCD_WrF ;
24218
24219 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
24220
24221 : LCD_DSP_Shift     $10 OR LCD_WrF ;
24222
24223 : LCD_Fn_Set        $20 OR LCD_WrF ;
24224
24225 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
24226
24227 : LCD_Goto          $80 OR LCD_WrF ;
24228
24229 CODE LCD_R
24230     BIC.B #$0F,&$224
24231     BIS.B #1,&$243
24232 COLON
24233     TOP_LCD 2 20_us
24234     TOP_LCD 2 20_us
24235 HI2LO
24236     RLAM #4,0(R15)
24237     ADD.B @R15+,R14
24238     MOV @R1+,R13
24239     MOV @R13+,R0
24240 ENDCODE
24241
24242
24243 CODE LCD_RdS
24244     BIC.B #2,&$243
24245     JMP LCD_R
24246 ENDCODE
24247
24248
24249 CODE LCD_RdC
24250     BIS.B #2,&$243
24251     JMP LCD_R
24252 ENDCODE
24253
24254
24255
24256 ASM WDT_INT
24257 BIT.B #$20,&$240
24258 0= IF
24259     CMP #19,&$3D6
24260     U< IF
24261         ADD #1,&$3D6
24262     THEN
24263 ELSE
24264     BIT.B #$40,&$240
24265     0= IF
24266         CMP #3,&$3D6
24267         U>= IF
24268            SUB #1,&$3D6
24269         THEN
24270     THEN
24271 THEN
24272 BW1
24273 BW2
24274 BW3
24275 BIC #$78,0(R1)
24276 RETI
24277 ENDASM
24278
24279
24280 ASM RC5_INT
24281   MOV #1,&$3A0
24282 MOV #1778,R9
24283 MOV #14,R10
24284 BEGIN
24285 MOV #%1011100100,&$380
24286     RRUM    #1,R9
24287     MOV     R9,R8
24288     RRUM    #1,R8
24289     ADD     R9,R8
24290     BEGIN   CMP R8,&$390
24291     U>= UNTIL
24292     BIT.B   #4,&$200
24293     ADDC    R11,R11
24294     MOV.B   &$200,&$208
24295     BIC.B   #4,&$20C
24296     SUB     #1,R10
24297 0<> WHILE
24298     ADD R9,R8
24299     BEGIN
24300         MOV &$390,R9
24301         CMP R8,R9
24302         U>= IF
24303         BIC #$30,&$380
24304         GOTO BW1
24305         THEN
24306         BIT.B #4,&$20C
24307     0<> UNTIL
24308 REPEAT
24309 BIC #$30,&$380
24310 RLAM    #1,R11
24311 MOV.B   R11,R9
24312 RRUM    #2,R9
24313 BIT     #$4000,R11
24314 0= IF   BIS #$40,R9
24315 THEN
24316 RRUM    #3,R11
24317 XOR     @R1,R11
24318 BIT     #$400,R11
24319 0= ?GOTO BW2
24320 XOR #$400,0(R1)
24321 SUB #4,R15
24322 MOV &BASE,2(R15)
24323 MOV #$10,&BASE
24324 MOV R14,0(R15)
24325 MOV R9,R14
24326 LO2HI
24327     ['] LCD_CLEAR IS CR
24328     ['] LCD_WrC  IS EMIT
24329     CR ." $" 2 U.R
24330     ['] CR >BODY IS CR
24331     ['] EMIT >BODY IS EMIT
24332 HI2LO
24333 MOV R14,&BASE
24334 MOV @R15+,R14
24335 GOTO BW3
24336 ENDASM
24337
24338
24339 ASM BACKGROUND
24340 MOV #SLEEP,R9
24341 ADD #4,R9
24342 MOV R9,R0
24343 ENDASM
24344
24345
24346 CODE START
24347     MOV #%1011010100,&$3C0
24348     MOV #1,&$3E0
24349     MOV #19,&$3D2
24350     MOV #%01100000,&$3C6
24351     MOV #10,&$3D6
24352     BIS.B #$20,&$204
24353     BIS.B #$20,&$20A
24354     BIS.B #7,&$245
24355     BIC.B #7,&$247
24356     BIS.B #$0F,&$224
24357     BIC.B #$0F,&$226
24358     BIS.B #4,&$20A
24359     BIC.B #4,&$20C
24360     MOV #RC5_INT,&$FFDE
24361     MOV #%0100010100,&$340
24362     MOV ##1638,&$352
24363     MOV #%10000,&$342
24364     MOV #WDT_INT,&$FFEA
24365
24366     MOV #SLEEP,R9
24367     MOV #BACKGROUND,2(R9)
24368
24369 LO2HI
24370
24371     $03E8 20_US
24372     $03 TOP_LCD
24373     $CD 20_US
24374     $03 TOP_LCD
24375     $5 20_US
24376     $03 TOP_LCD
24377     $2 20_US
24378     $02 TOP_LCD
24379     $2 20_US
24380     $28 LCD_WRF
24381     $08 LCD_WRF
24382     LCD_Clear
24383     $06 LCD_WRF
24384     $0C LCD_WRF
24385     LCD_Clear
24386     ['] LCD_HOME IS CR
24387     ['] LCD_WRC  IS EMIT
24388     CR ." I love you"   
24389     ['] CR >BODY IS CR
24390     ['] EMIT >BODY IS EMIT
24391     ." RC5toLCD is running. Type STOP to quit"
24392     LIT RECURSE IS WARM
24393     ABORT
24394 ;
24395
24396
24397 CODE STOP
24398     MOV #SLEEP,R9
24399     ADD #4,R9
24400     MOV R9,-2(R9)
24401
24402 COLON
24403     ['] WARM >BODY IS WARM
24404
24405     COLD
24406 ;
24407
24408
24409
24410             ; downloading RC5toLCD.4th is done
24411 RST_HERE    ; this app is protected against <reset>
24412
24413 [THEN]
24414
24415
24416
24417
24418
24419 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
24420
24421 [DEFINED] ASM [IF]
24422
24423 MARKER {RC5TOLCD}
24424
24425 [UNDEFINED] MAX [IF]
24426
24427 CODE MAX
24428     CMP @R15,R14
24429     S<  ?GOTO FW1
24430 BW1 ADD #2,R15
24431     MOV @R13+,R0
24432 ENDCODE
24433
24434
24435 CODE MIN
24436     CMP @R15,R14
24437     S<  ?GOTO BW1
24438 FW1 MOV @R15+,R14
24439     MOV @R13+,R0
24440 ENDCODE
24441
24442 [THEN]
24443
24444
24445 [UNDEFINED] U.R [IF]
24446 : U.R
24447   >R  <# 0 # #S #>  
24448   R> OVER - 0 MAX SPACES TYPE
24449 ;
24450 [THEN]
24451
24452
24453
24454 CODE 20_US
24455 BEGIN
24456     BEGIN
24457         BIT #1,&$3C0
24458     0<> UNTIL
24459     BIC #1,&$3C0
24460     SUB #1,R14
24461 U< UNTIL
24462 MOV @R15+,R14
24463 MOV @R13+,R0
24464 ENDCODE
24465
24466
24467 CODE TOP_LCD
24468     BIS.B #4,&$243
24469     BIT.B #1,&$241
24470 0= IF
24471     AND.B #$0F,R14
24472     MOV.B R14,&$222
24473     BIC.B #4,&$243
24474     MOV @R15+,R14
24475     MOV @R13+,R0
24476 THEN
24477     SUB #2,R15
24478     MOV R14,0(R15)
24479     BIC.B #4,&$243
24480     MOV.B &$220,R14
24481     AND.B #$0F,R14
24482     MOV @R13+,R0
24483 ENDCODE
24484
24485
24486 CODE LCD_W
24487     SUB #2,R15
24488     MOV R14,0(R15)
24489     RRUM #4,R14
24490     BIC.B #1,&$243
24491     BIS.B #$0F,&$224
24492 COLON
24493     TOP_LCD 2 20_US
24494     TOP_LCD 2 20_US 
24495 ;
24496
24497
24498 CODE LCD_WrC
24499     BIS.B #2,&$243
24500     JMP LCD_W 
24501 ENDCODE
24502
24503
24504 CODE LCD_WrF
24505     BIC.B #2,&$243
24506     JMP LCD_W 
24507 ENDCODE
24508
24509
24510 : LCD_Clear 
24511     $01 LCD_WrF 100 20_us
24512 ;
24513
24514
24515 : LCD_Home 
24516     $02 LCD_WrF 100 20_us 
24517 ;
24518
24519
24520 [UNDEFINED] OR [IF]
24521
24522 CODE OR
24523 BIS @R15+,R14
24524 MOV @R13+,R0
24525 ENDCODE
24526
24527
24528 [THEN]
24529
24530 : LCD_Entry_set     $04 OR LCD_WrF ;
24531
24532 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
24533
24534 : LCD_DSP_Shift     $10 OR LCD_WrF ;
24535
24536 : LCD_Fn_Set        $20 OR LCD_WrF ;
24537
24538 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
24539
24540 : LCD_Goto          $80 OR LCD_WrF ;
24541
24542 CODE LCD_R
24543     BIC.B #$0F,&$224
24544     BIS.B #1,&$243
24545 COLON
24546     TOP_LCD 2 20_us
24547     TOP_LCD 2 20_us
24548 HI2LO
24549     RLAM #4,0(R15)
24550     ADD.B @R15+,R14
24551     MOV @R1+,R13
24552     MOV @R13+,R0
24553 ENDCODE
24554
24555
24556 CODE LCD_RdS
24557     BIC.B #2,&$243
24558     JMP LCD_R
24559 ENDCODE
24560
24561
24562 CODE LCD_RdC
24563     BIS.B #2,&$243
24564     JMP LCD_R
24565 ENDCODE
24566
24567
24568
24569 ASM WDT_INT
24570 BIT.B #$20,&$240
24571 0= IF
24572     CMP #19,&$3D6
24573     U< IF
24574         ADD #1,&$3D6
24575     THEN
24576 ELSE
24577     BIT.B #$40,&$240
24578     0= IF
24579         CMP #3,&$3D6
24580         U>= IF
24581            SUB #1,&$3D6
24582         THEN
24583     THEN
24584 THEN
24585 BW1
24586 BW2
24587 BW3
24588 BIC #$78,0(R1)
24589 RETI
24590 ENDASM
24591
24592
24593 ASM RC5_INT
24594   MOV #1,&$3A0
24595 MOV #1778,R9
24596 MOV #14,R10
24597 BEGIN
24598 MOV #%1011100100,&$380
24599     RRUM    #1,R9
24600     MOV     R9,R8
24601     RRUM    #1,R8
24602     ADD     R9,R8
24603     BEGIN   CMP R8,&$390
24604     U>= UNTIL
24605     BIT.B   #4,&$200
24606     ADDC    R11,R11
24607     MOV.B   &$200,&$208
24608     BIC.B   #4,&$20C
24609     SUB     #1,R10
24610 0<> WHILE
24611     ADD R9,R8
24612     BEGIN
24613         MOV &$390,R9
24614         CMP R8,R9
24615         U>= IF
24616         BIC #$30,&$380
24617         GOTO BW1
24618         THEN
24619         BIT.B #4,&$20C
24620     0<> UNTIL
24621 REPEAT
24622 BIC #$30,&$380
24623 RLAM    #1,R11
24624 MOV.B   R11,R9
24625 RRUM    #2,R9
24626 BIT     #$4000,R11
24627 0= IF   BIS #$40,R9
24628 THEN
24629 RRUM    #3,R11
24630 XOR     @R1,R11
24631 BIT     #$400,R11
24632 0= ?GOTO BW2
24633 XOR #$400,0(R1)
24634 SUB #4,R15
24635 MOV &BASE,2(R15)
24636 MOV #$10,&BASE
24637 MOV R14,0(R15)
24638 MOV R9,R14
24639 LO2HI
24640     ['] LCD_CLEAR IS CR
24641     ['] LCD_WrC  IS EMIT
24642     CR ." $" 2 U.R
24643     ['] CR >BODY IS CR
24644     ['] EMIT >BODY IS EMIT
24645 HI2LO
24646 MOV R14,&BASE
24647 MOV @R15+,R14
24648 GOTO BW3
24649 ENDASM
24650
24651
24652 ASM BACKGROUND
24653 MOV #SLEEP,R9
24654 ADD #4,R9
24655 MOV R9,R0
24656 ENDASM
24657
24658
24659 CODE START
24660     MOV #%1011010100,&$3C0
24661     MOV #1,&$3E0
24662     MOV #19,&$3D2
24663     MOV #%01100000,&$3C6
24664     MOV #10,&$3D6
24665     BIS.B #$20,&$204
24666     BIS.B #$20,&$20A
24667     BIS.B #7,&$245
24668     BIC.B #7,&$247
24669     BIS.B #$0F,&$224
24670     BIC.B #$0F,&$226
24671     BIS.B #4,&$20A
24672     BIC.B #4,&$20C
24673     MOV #RC5_INT,&$FFDE
24674     MOV #%0100010100,&$340
24675     MOV ##1638,&$352
24676     MOV #%10000,&$342
24677     MOV #WDT_INT,&$FFEA
24678
24679     MOV #SLEEP,R9
24680     MOV #BACKGROUND,2(R9)
24681
24682 LO2HI
24683
24684     $03E8 20_US
24685     $03 TOP_LCD
24686     $CD 20_US
24687     $03 TOP_LCD
24688     $5 20_US
24689     $03 TOP_LCD
24690     $2 20_US
24691     $02 TOP_LCD
24692     $2 20_US
24693     $28 LCD_WRF
24694     $08 LCD_WRF
24695     LCD_Clear
24696     $06 LCD_WRF
24697     $0C LCD_WRF
24698     LCD_Clear
24699     ['] LCD_HOME IS CR
24700     ['] LCD_WRC  IS EMIT
24701     CR ." I love you"   
24702     ['] CR >BODY IS CR
24703     ['] EMIT >BODY IS EMIT
24704     ." RC5toLCD is running. Type STOP to quit"
24705     LIT RECURSE IS WARM
24706     ABORT
24707 ;
24708
24709
24710 CODE STOP
24711     MOV #SLEEP,R9
24712     ADD #4,R9
24713     MOV R9,-2(R9)
24714
24715 COLON
24716     ['] WARM >BODY IS WARM
24717
24718     COLD
24719 ;
24720
24721
24722
24723             ; downloading RC5toLCD.4th is done
24724 RST_HERE    ; this app is protected against <reset>
24725
24726 [THEN]
24727
24728
24729
24730
24731
24732 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
24733
24734 [DEFINED] ASM [IF]
24735
24736 MARKER {RC5TOLCD}
24737
24738 [UNDEFINED] MAX [IF]
24739
24740 CODE MAX
24741     CMP @R15,R14
24742     S<  ?GOTO FW1
24743 BW1 ADD #2,R15
24744     MOV @R13+,R0
24745 ENDCODE
24746
24747
24748 CODE MIN
24749     CMP @R15,R14
24750     S<  ?GOTO BW1
24751 FW1 MOV @R15+,R14
24752     MOV @R13+,R0
24753 ENDCODE
24754
24755 [THEN]
24756
24757
24758 [UNDEFINED] U.R [IF]
24759 : U.R
24760   >R  <# 0 # #S #>  
24761   R> OVER - 0 MAX SPACES TYPE
24762 ;
24763 [THEN]
24764
24765
24766
24767 CODE 20_US
24768 BEGIN
24769     BEGIN
24770         BIT #1,&$3C0
24771     0<> UNTIL
24772     BIC #1,&$3C0
24773     SUB #1,R14
24774 U< UNTIL
24775 MOV @R15+,R14
24776 MOV @R13+,R0
24777 ENDCODE
24778
24779
24780 CODE TOP_LCD
24781     BIS.B #4,&$243
24782     BIT.B #1,&$241
24783 0= IF
24784     AND.B #$0F,R14
24785     MOV.B R14,&$222
24786     BIC.B #4,&$243
24787     MOV @R15+,R14
24788     MOV @R13+,R0
24789 THEN
24790     SUB #2,R15
24791     MOV R14,0(R15)
24792     BIC.B #4,&$243
24793     MOV.B &$220,R14
24794     AND.B #$0F,R14
24795     MOV @R13+,R0
24796 ENDCODE
24797
24798
24799 CODE LCD_W
24800     SUB #2,R15
24801     MOV R14,0(R15)
24802     RRUM #4,R14
24803     BIC.B #1,&$243
24804     BIS.B #$0F,&$224
24805 COLON
24806     TOP_LCD 2 20_US
24807     TOP_LCD 2 20_US 
24808 ;
24809
24810
24811 CODE LCD_WrC
24812     BIS.B #2,&$243
24813     JMP LCD_W 
24814 ENDCODE
24815
24816
24817 CODE LCD_WrF
24818     BIC.B #2,&$243
24819     JMP LCD_W 
24820 ENDCODE
24821
24822
24823 : LCD_Clear 
24824     $01 LCD_WrF 100 20_us
24825 ;
24826
24827
24828 : LCD_Home 
24829     $02 LCD_WrF 100 20_us 
24830 ;
24831
24832
24833 [UNDEFINED] OR [IF]
24834
24835 CODE OR
24836 BIS @R15+,R14
24837 MOV @R13+,R0
24838 ENDCODE
24839
24840
24841 [THEN]
24842
24843 : LCD_Entry_set     $04 OR LCD_WrF ;
24844
24845 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
24846
24847 : LCD_DSP_Shift     $10 OR LCD_WrF ;
24848
24849 : LCD_Fn_Set        $20 OR LCD_WrF ;
24850
24851 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
24852
24853 : LCD_Goto          $80 OR LCD_WrF ;
24854
24855 CODE LCD_R
24856     BIC.B #$0F,&$224
24857     BIS.B #1,&$243
24858 COLON
24859     TOP_LCD 2 20_us
24860     TOP_LCD 2 20_us
24861 HI2LO
24862     RLAM #4,0(R15)
24863     ADD.B @R15+,R14
24864     MOV @R1+,R13
24865     MOV @R13+,R0
24866 ENDCODE
24867
24868
24869 CODE LCD_RdS
24870     BIC.B #2,&$243
24871     JMP LCD_R
24872 ENDCODE
24873
24874
24875 CODE LCD_RdC
24876     BIS.B #2,&$243
24877     JMP LCD_R
24878 ENDCODE
24879
24880
24881
24882 ASM WDT_INT
24883 BIT.B #$20,&$240
24884 0= IF
24885     CMP #19,&$3D6
24886     U< IF
24887         ADD #1,&$3D6
24888     THEN
24889 ELSE
24890     BIT.B #$40,&$240
24891     0= IF
24892         CMP #3,&$3D6
24893         U>= IF
24894            SUB #1,&$3D6
24895         THEN
24896     THEN
24897 THEN
24898 BW1
24899 BW2
24900 BW3
24901 BIC #$78,0(R1)
24902 RETI
24903 ENDASM
24904
24905
24906 ASM RC5_INT
24907   MOV #1,&$3A0
24908 MOV #1778,R9
24909 MOV #14,R10
24910 BEGIN
24911 MOV #%1011100100,&$380
24912     RRUM    #1,R9
24913     MOV     R9,R8
24914     RRUM    #1,R8
24915     ADD     R9,R8
24916     BEGIN   CMP R8,&$390
24917     U>= UNTIL
24918     BIT.B   #4,&$200
24919     ADDC    R11,R11
24920     MOV.B   &$200,&$208
24921     BIC.B   #4,&$20C
24922     SUB     #1,R10
24923 0<> WHILE
24924     ADD R9,R8
24925     BEGIN
24926         MOV &$390,R9
24927         CMP R8,R9
24928         U>= IF
24929         BIC #$30,&$380
24930         GOTO BW1
24931         THEN
24932         BIT.B #4,&$20C
24933     0<> UNTIL
24934 REPEAT
24935 BIC #$30,&$380
24936 RLAM    #1,R11
24937 MOV.B   R11,R9
24938 RRUM    #2,R9
24939 BIT     #$4000,R11
24940 0= IF   BIS #$40,R9
24941 THEN
24942 RRUM    #3,R11
24943 XOR     @R1,R11
24944 BIT     #$400,R11
24945 0= ?GOTO BW2
24946 XOR #$400,0(R1)
24947 SUB #4,R15
24948 MOV &BASE,2(R15)
24949 MOV #$10,&BASE
24950 MOV R14,0(R15)
24951 MOV R9,R14
24952 LO2HI
24953     ['] LCD_CLEAR IS CR
24954     ['] LCD_WrC  IS EMIT
24955     CR ." $" 2 U.R
24956     ['] CR >BODY IS CR
24957     ['] EMIT >BODY IS EMIT
24958 HI2LO
24959 MOV R14,&BASE
24960 MOV @R15+,R14
24961 GOTO BW3
24962 ENDASM
24963
24964
24965 ASM BACKGROUND
24966 MOV #SLEEP,R9
24967 ADD #4,R9
24968 MOV R9,R0
24969 ENDASM
24970
24971
24972 CODE START
24973     MOV #%1011010100,&$3C0
24974     MOV #1,&$3E0
24975     MOV #19,&$3D2
24976     MOV #%01100000,&$3C6
24977     MOV #10,&$3D6
24978     BIS.B #$20,&$204
24979     BIS.B #$20,&$20A
24980     BIS.B #7,&$245
24981     BIC.B #7,&$247
24982     BIS.B #$0F,&$224
24983     BIC.B #$0F,&$226
24984     BIS.B #4,&$20A
24985     BIC.B #4,&$20C
24986     MOV #RC5_INT,&$FFDE
24987     MOV #%0100010100,&$340
24988     MOV ##1638,&$352
24989     MOV #%10000,&$342
24990     MOV #WDT_INT,&$FFEA
24991
24992     MOV #SLEEP,R9
24993     MOV #BACKGROUND,2(R9)
24994
24995 LO2HI
24996
24997     $03E8 20_US
24998     $03 TOP_LCD
24999     $CD 20_US
25000     $03 TOP_LCD
25001     $5 20_US
25002     $03 TOP_LCD
25003     $2 20_US
25004     $02 TOP_LCD
25005     $2 20_US
25006     $28 LCD_WRF
25007     $08 LCD_WRF
25008     LCD_Clear
25009     $06 LCD_WRF
25010     $0C LCD_WRF
25011     LCD_Clear
25012     ['] LCD_HOME IS CR
25013     ['] LCD_WRC  IS EMIT
25014     CR ." I love you"   
25015     ['] CR >BODY IS CR
25016     ['] EMIT >BODY IS EMIT
25017     ." RC5toLCD is running. Type STOP to quit"
25018     LIT RECURSE IS WARM
25019     ABORT
25020 ;
25021
25022
25023 CODE STOP
25024     MOV #SLEEP,R9
25025     ADD #4,R9
25026     MOV R9,-2(R9)
25027
25028 COLON
25029     ['] WARM >BODY IS WARM
25030
25031     COLD
25032 ;
25033
25034
25035
25036             ; downloading RC5toLCD.4th is done
25037 RST_HERE    ; this app is protected against <reset>
25038
25039 [THEN]
25040
25041
25042
25043
25044
25045 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
25046
25047 [DEFINED] ASM [IF]
25048
25049 MARKER {RC5TOLCD}
25050
25051 [UNDEFINED] MAX [IF]
25052
25053 CODE MAX
25054     CMP @R15,R14
25055     S<  ?GOTO FW1
25056 BW1 ADD #2,R15
25057     MOV @R13+,R0
25058 ENDCODE
25059
25060
25061 CODE MIN
25062     CMP @R15,R14
25063     S<  ?GOTO BW1
25064 FW1 MOV @R15+,R14
25065     MOV @R13+,R0
25066 ENDCODE
25067
25068 [THEN]
25069
25070
25071 [UNDEFINED] U.R [IF]
25072 : U.R
25073   >R  <# 0 # #S #>  
25074   R> OVER - 0 MAX SPACES TYPE
25075 ;
25076 [THEN]
25077
25078
25079
25080 CODE 20_US
25081 BEGIN
25082     BEGIN
25083         BIT #1,&$3C0
25084     0<> UNTIL
25085     BIC #1,&$3C0
25086     SUB #1,R14
25087 U< UNTIL
25088 MOV @R15+,R14
25089 MOV @R13+,R0
25090 ENDCODE
25091
25092
25093 CODE TOP_LCD
25094     BIS.B #4,&$243
25095     BIT.B #1,&$241
25096 0= IF
25097     AND.B #$0F,R14
25098     MOV.B R14,&$222
25099     BIC.B #4,&$243
25100     MOV @R15+,R14
25101     MOV @R13+,R0
25102 THEN
25103     SUB #2,R15
25104     MOV R14,0(R15)
25105     BIC.B #4,&$243
25106     MOV.B &$220,R14
25107     AND.B #$0F,R14
25108     MOV @R13+,R0
25109 ENDCODE
25110
25111
25112 CODE LCD_W
25113     SUB #2,R15
25114     MOV R14,0(R15)
25115     RRUM #4,R14
25116     BIC.B #1,&$243
25117     BIS.B #$0F,&$224
25118 COLON
25119     TOP_LCD 2 20_US
25120     TOP_LCD 2 20_US 
25121 ;
25122
25123
25124 CODE LCD_WrC
25125     BIS.B #2,&$243
25126     JMP LCD_W 
25127 ENDCODE
25128
25129
25130 CODE LCD_WrF
25131     BIC.B #2,&$243
25132     JMP LCD_W 
25133 ENDCODE
25134
25135
25136 : LCD_Clear 
25137     $01 LCD_WrF 100 20_us
25138 ;
25139
25140
25141 : LCD_Home 
25142     $02 LCD_WrF 100 20_us 
25143 ;
25144
25145
25146 [UNDEFINED] OR [IF]
25147
25148 CODE OR
25149 BIS @R15+,R14
25150 MOV @R13+,R0
25151 ENDCODE
25152
25153
25154 [THEN]
25155
25156 : LCD_Entry_set     $04 OR LCD_WrF ;
25157
25158 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
25159
25160 : LCD_DSP_Shift     $10 OR LCD_WrF ;
25161
25162 : LCD_Fn_Set        $20 OR LCD_WrF ;
25163
25164 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
25165
25166 : LCD_Goto          $80 OR LCD_WrF ;
25167
25168 CODE LCD_R
25169     BIC.B #$0F,&$224
25170     BIS.B #1,&$243
25171 COLON
25172     TOP_LCD 2 20_us
25173     TOP_LCD 2 20_us
25174 HI2LO
25175     RLAM #4,0(R15)
25176     ADD.B @R15+,R14
25177     MOV @R1+,R13
25178     MOV @R13+,R0
25179 ENDCODE
25180
25181
25182 CODE LCD_RdS
25183     BIC.B #2,&$243
25184     JMP LCD_R
25185 ENDCODE
25186
25187
25188 CODE LCD_RdC
25189     BIS.B #2,&$243
25190     JMP LCD_R
25191 ENDCODE
25192
25193
25194
25195 ASM WDT_INT
25196 BIT.B #$20,&$240
25197 0= IF
25198     CMP #19,&$3D6
25199     U< IF
25200         ADD #1,&$3D6
25201     THEN
25202 ELSE
25203     BIT.B #$40,&$240
25204     0= IF
25205         CMP #3,&$3D6
25206         U>= IF
25207            SUB #1,&$3D6
25208         THEN
25209     THEN
25210 THEN
25211 BW1
25212 BW2
25213 BW3
25214 BIC #$78,0(R1)
25215 RETI
25216 ENDASM
25217
25218
25219 ASM RC5_INT
25220   MOV #1,&$3A0
25221 MOV #1778,R9
25222 MOV #14,R10
25223 BEGIN
25224 MOV #%1011100100,&$380
25225     RRUM    #1,R9
25226     MOV     R9,R8
25227     RRUM    #1,R8
25228     ADD     R9,R8
25229     BEGIN   CMP R8,&$390
25230     U>= UNTIL
25231     BIT.B   #4,&$200
25232     ADDC    R11,R11
25233     MOV.B   &$200,&$208
25234     BIC.B   #4,&$20C
25235     SUB     #1,R10
25236 0<> WHILE
25237     ADD R9,R8
25238     BEGIN
25239         MOV &$390,R9
25240         CMP R8,R9
25241         U>= IF
25242         BIC #$30,&$380
25243         GOTO BW1
25244         THEN
25245         BIT.B #4,&$20C
25246     0<> UNTIL
25247 REPEAT
25248 BIC #$30,&$380
25249 RLAM    #1,R11
25250 MOV.B   R11,R9
25251 RRUM    #2,R9
25252 BIT     #$4000,R11
25253 0= IF   BIS #$40,R9
25254 THEN
25255 RRUM    #3,R11
25256 XOR     @R1,R11
25257 BIT     #$400,R11
25258 0= ?GOTO BW2
25259 XOR #$400,0(R1)
25260 SUB #4,R15
25261 MOV &BASE,2(R15)
25262 MOV #$10,&BASE
25263 MOV R14,0(R15)
25264 MOV R9,R14
25265 LO2HI
25266     ['] LCD_CLEAR IS CR
25267     ['] LCD_WrC  IS EMIT
25268     CR ." $" 2 U.R
25269     ['] CR >BODY IS CR
25270     ['] EMIT >BODY IS EMIT
25271 HI2LO
25272 MOV R14,&BASE
25273 MOV @R15+,R14
25274 GOTO BW3
25275 ENDASM
25276
25277
25278 ASM BACKGROUND
25279 MOV #SLEEP,R9
25280 ADD #4,R9
25281 MOV R9,R0
25282 ENDASM
25283
25284
25285 CODE START
25286     MOV #%1011010100,&$3C0
25287     MOV #1,&$3E0
25288     MOV #19,&$3D2
25289     MOV #%01100000,&$3C6
25290     MOV #10,&$3D6
25291     BIS.B #$20,&$204
25292     BIS.B #$20,&$20A
25293     BIS.B #7,&$245
25294     BIC.B #7,&$247
25295     BIS.B #$0F,&$224
25296     BIC.B #$0F,&$226
25297     BIS.B #4,&$20A
25298     BIC.B #4,&$20C
25299     MOV #RC5_INT,&$FFDE
25300     MOV #%0100010100,&$340
25301     MOV ##1638,&$352
25302     MOV #%10000,&$342
25303     MOV #WDT_INT,&$FFEA
25304
25305     MOV #SLEEP,R9
25306     MOV #BACKGROUND,2(R9)
25307
25308 LO2HI
25309
25310     $03E8 20_US
25311     $03 TOP_LCD
25312     $CD 20_US
25313     $03 TOP_LCD
25314     $5 20_US
25315     $03 TOP_LCD
25316     $2 20_US
25317     $02 TOP_LCD
25318     $2 20_US
25319     $28 LCD_WRF
25320     $08 LCD_WRF
25321     LCD_Clear
25322     $06 LCD_WRF
25323     $0C LCD_WRF
25324     LCD_Clear
25325     ['] LCD_HOME IS CR
25326     ['] LCD_WRC  IS EMIT
25327     CR ." I love you"   
25328     ['] CR >BODY IS CR
25329     ['] EMIT >BODY IS EMIT
25330     ." RC5toLCD is running. Type STOP to quit"
25331     LIT RECURSE IS WARM
25332     ABORT
25333 ;
25334
25335
25336 CODE STOP
25337     MOV #SLEEP,R9
25338     ADD #4,R9
25339     MOV R9,-2(R9)
25340
25341 COLON
25342     ['] WARM >BODY IS WARM
25343
25344     COLD
25345 ;
25346
25347
25348
25349             ; downloading RC5toLCD.4th is done
25350 RST_HERE    ; this app is protected against <reset>
25351
25352 [THEN]
25353
25354
25355
25356
25357
25358 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
25359
25360 [DEFINED] ASM [IF]
25361
25362 MARKER {RC5TOLCD}
25363
25364 [UNDEFINED] MAX [IF]
25365
25366 CODE MAX
25367     CMP @R15,R14
25368     S<  ?GOTO FW1
25369 BW1 ADD #2,R15
25370     MOV @R13+,R0
25371 ENDCODE
25372
25373
25374 CODE MIN
25375     CMP @R15,R14
25376     S<  ?GOTO BW1
25377 FW1 MOV @R15+,R14
25378     MOV @R13+,R0
25379 ENDCODE
25380
25381 [THEN]
25382
25383
25384 [UNDEFINED] U.R [IF]
25385 : U.R
25386   >R  <# 0 # #S #>  
25387   R> OVER - 0 MAX SPACES TYPE
25388 ;
25389 [THEN]
25390
25391
25392
25393 CODE 20_US
25394 BEGIN
25395     BEGIN
25396         BIT #1,&$3C0
25397     0<> UNTIL
25398     BIC #1,&$3C0
25399     SUB #1,R14
25400 U< UNTIL
25401 MOV @R15+,R14
25402 MOV @R13+,R0
25403 ENDCODE
25404
25405
25406 CODE TOP_LCD
25407     BIS.B #4,&$243
25408     BIT.B #1,&$241
25409 0= IF
25410     AND.B #$0F,R14
25411     MOV.B R14,&$222
25412     BIC.B #4,&$243
25413     MOV @R15+,R14
25414     MOV @R13+,R0
25415 THEN
25416     SUB #2,R15
25417     MOV R14,0(R15)
25418     BIC.B #4,&$243
25419     MOV.B &$220,R14
25420     AND.B #$0F,R14
25421     MOV @R13+,R0
25422 ENDCODE
25423
25424
25425 CODE LCD_W
25426     SUB #2,R15
25427     MOV R14,0(R15)
25428     RRUM #4,R14
25429     BIC.B #1,&$243
25430     BIS.B #$0F,&$224
25431 COLON
25432     TOP_LCD 2 20_US
25433     TOP_LCD 2 20_US 
25434 ;
25435
25436
25437 CODE LCD_WrC
25438     BIS.B #2,&$243
25439     JMP LCD_W 
25440 ENDCODE
25441
25442
25443 CODE LCD_WrF
25444     BIC.B #2,&$243
25445     JMP LCD_W 
25446 ENDCODE
25447
25448
25449 : LCD_Clear 
25450     $01 LCD_WrF 100 20_us
25451 ;
25452
25453
25454 : LCD_Home 
25455     $02 LCD_WrF 100 20_us 
25456 ;
25457
25458
25459 [UNDEFINED] OR [IF]
25460
25461 CODE OR
25462 BIS @R15+,R14
25463 MOV @R13+,R0
25464 ENDCODE
25465
25466
25467 [THEN]
25468
25469 : LCD_Entry_set     $04 OR LCD_WrF ;
25470
25471 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
25472
25473 : LCD_DSP_Shift     $10 OR LCD_WrF ;
25474
25475 : LCD_Fn_Set        $20 OR LCD_WrF ;
25476
25477 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
25478
25479 : LCD_Goto          $80 OR LCD_WrF ;
25480
25481 CODE LCD_R
25482     BIC.B #$0F,&$224
25483     BIS.B #1,&$243
25484 COLON
25485     TOP_LCD 2 20_us
25486     TOP_LCD 2 20_us
25487 HI2LO
25488     RLAM #4,0(R15)
25489     ADD.B @R15+,R14
25490     MOV @R1+,R13
25491     MOV @R13+,R0
25492 ENDCODE
25493
25494
25495 CODE LCD_RdS
25496     BIC.B #2,&$243
25497     JMP LCD_R
25498 ENDCODE
25499
25500
25501 CODE LCD_RdC
25502     BIS.B #2,&$243
25503     JMP LCD_R
25504 ENDCODE
25505
25506
25507
25508 ASM WDT_INT
25509 BIT.B #$20,&$240
25510 0= IF
25511     CMP #19,&$3D6
25512     U< IF
25513         ADD #1,&$3D6
25514     THEN
25515 ELSE
25516     BIT.B #$40,&$240
25517     0= IF
25518         CMP #3,&$3D6
25519         U>= IF
25520            SUB #1,&$3D6
25521         THEN
25522     THEN
25523 THEN
25524 BW1
25525 BW2
25526 BW3
25527 BIC #$78,0(R1)
25528 RETI
25529 ENDASM
25530
25531
25532 ASM RC5_INT
25533   MOV #1,&$3A0
25534 MOV #1778,R9
25535 MOV #14,R10
25536 BEGIN
25537 MOV #%1011100100,&$380
25538     RRUM    #1,R9
25539     MOV     R9,R8
25540     RRUM    #1,R8
25541     ADD     R9,R8
25542     BEGIN   CMP R8,&$390
25543     U>= UNTIL
25544     BIT.B   #4,&$200
25545     ADDC    R11,R11
25546     MOV.B   &$200,&$208
25547     BIC.B   #4,&$20C
25548     SUB     #1,R10
25549 0<> WHILE
25550     ADD R9,R8
25551     BEGIN
25552         MOV &$390,R9
25553         CMP R8,R9
25554         U>= IF
25555         BIC #$30,&$380
25556         GOTO BW1
25557         THEN
25558         BIT.B #4,&$20C
25559     0<> UNTIL
25560 REPEAT
25561 BIC #$30,&$380
25562 RLAM    #1,R11
25563 MOV.B   R11,R9
25564 RRUM    #2,R9
25565 BIT     #$4000,R11
25566 0= IF   BIS #$40,R9
25567 THEN
25568 RRUM    #3,R11
25569 XOR     @R1,R11
25570 BIT     #$400,R11
25571 0= ?GOTO BW2
25572 XOR #$400,0(R1)
25573 SUB #4,R15
25574 MOV &BASE,2(R15)
25575 MOV #$10,&BASE
25576 MOV R14,0(R15)
25577 MOV R9,R14
25578 LO2HI
25579     ['] LCD_CLEAR IS CR
25580     ['] LCD_WrC  IS EMIT
25581     CR ." $" 2 U.R
25582     ['] CR >BODY IS CR
25583     ['] EMIT >BODY IS EMIT
25584 HI2LO
25585 MOV R14,&BASE
25586 MOV @R15+,R14
25587 GOTO BW3
25588 ENDASM
25589
25590
25591 ASM BACKGROUND
25592 MOV #SLEEP,R9
25593 ADD #4,R9
25594 MOV R9,R0
25595 ENDASM
25596
25597
25598 CODE START
25599     MOV #%1011010100,&$3C0
25600     MOV #1,&$3E0
25601     MOV #19,&$3D2
25602     MOV #%01100000,&$3C6
25603     MOV #10,&$3D6
25604     BIS.B #$20,&$204
25605     BIS.B #$20,&$20A
25606     BIS.B #7,&$245
25607     BIC.B #7,&$247
25608     BIS.B #$0F,&$224
25609     BIC.B #$0F,&$226
25610     BIS.B #4,&$20A
25611     BIC.B #4,&$20C
25612     MOV #RC5_INT,&$FFDE
25613     MOV #%0100010100,&$340
25614     MOV ##1638,&$352
25615     MOV #%10000,&$342
25616     MOV #WDT_INT,&$FFEA
25617
25618     MOV #SLEEP,R9
25619     MOV #BACKGROUND,2(R9)
25620
25621 LO2HI
25622
25623     $03E8 20_US
25624     $03 TOP_LCD
25625     $CD 20_US
25626     $03 TOP_LCD
25627     $5 20_US
25628     $03 TOP_LCD
25629     $2 20_US
25630     $02 TOP_LCD
25631     $2 20_US
25632     $28 LCD_WRF
25633     $08 LCD_WRF
25634     LCD_Clear
25635     $06 LCD_WRF
25636     $0C LCD_WRF
25637     LCD_Clear
25638     ['] LCD_HOME IS CR
25639     ['] LCD_WRC  IS EMIT
25640     CR ." I love you"   
25641     ['] CR >BODY IS CR
25642     ['] EMIT >BODY IS EMIT
25643     ." RC5toLCD is running. Type STOP to quit"
25644     LIT RECURSE IS WARM
25645     ABORT
25646 ;
25647
25648
25649 CODE STOP
25650     MOV #SLEEP,R9
25651     ADD #4,R9
25652     MOV R9,-2(R9)
25653
25654 COLON
25655     ['] WARM >BODY IS WARM
25656
25657     COLD
25658 ;
25659
25660
25661
25662             ; downloading RC5toLCD.4th is done
25663 RST_HERE    ; this app is protected against <reset>
25664
25665 [THEN]
25666
25667
25668
25669
25670
25671 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
25672
25673 [DEFINED] ASM [IF]
25674
25675 MARKER {RC5TOLCD}
25676
25677 [UNDEFINED] MAX [IF]
25678
25679 CODE MAX
25680     CMP @R15,R14
25681     S<  ?GOTO FW1
25682 BW1 ADD #2,R15
25683     MOV @R13+,R0
25684 ENDCODE
25685
25686
25687 CODE MIN
25688     CMP @R15,R14
25689     S<  ?GOTO BW1
25690 FW1 MOV @R15+,R14
25691     MOV @R13+,R0
25692 ENDCODE
25693
25694 [THEN]
25695
25696
25697 [UNDEFINED] U.R [IF]
25698 : U.R
25699   >R  <# 0 # #S #>  
25700   R> OVER - 0 MAX SPACES TYPE
25701 ;
25702 [THEN]
25703
25704
25705
25706 CODE 20_US
25707 BEGIN
25708     BEGIN
25709         BIT #1,&$3C0
25710     0<> UNTIL
25711     BIC #1,&$3C0
25712     SUB #1,R14
25713 U< UNTIL
25714 MOV @R15+,R14
25715 MOV @R13+,R0
25716 ENDCODE
25717
25718
25719 CODE TOP_LCD
25720     BIS.B #4,&$243
25721     BIT.B #1,&$241
25722 0= IF
25723     AND.B #$0F,R14
25724     MOV.B R14,&$222
25725     BIC.B #4,&$243
25726     MOV @R15+,R14
25727     MOV @R13+,R0
25728 THEN
25729     SUB #2,R15
25730     MOV R14,0(R15)
25731     BIC.B #4,&$243
25732     MOV.B &$220,R14
25733     AND.B #$0F,R14
25734     MOV @R13+,R0
25735 ENDCODE
25736
25737
25738 CODE LCD_W
25739     SUB #2,R15
25740     MOV R14,0(R15)
25741     RRUM #4,R14
25742     BIC.B #1,&$243
25743     BIS.B #$0F,&$224
25744 COLON
25745     TOP_LCD 2 20_US
25746     TOP_LCD 2 20_US 
25747 ;
25748
25749
25750 CODE LCD_WrC
25751     BIS.B #2,&$243
25752     JMP LCD_W 
25753 ENDCODE
25754
25755
25756 CODE LCD_WrF
25757     BIC.B #2,&$243
25758     JMP LCD_W 
25759 ENDCODE
25760
25761
25762 : LCD_Clear 
25763     $01 LCD_WrF 100 20_us
25764 ;
25765
25766
25767 : LCD_Home 
25768     $02 LCD_WrF 100 20_us 
25769 ;
25770
25771
25772 [UNDEFINED] OR [IF]
25773
25774 CODE OR
25775 BIS @R15+,R14
25776 MOV @R13+,R0
25777 ENDCODE
25778
25779
25780 [THEN]
25781
25782 : LCD_Entry_set     $04 OR LCD_WrF ;
25783
25784 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
25785
25786 : LCD_DSP_Shift     $10 OR LCD_WrF ;
25787
25788 : LCD_Fn_Set        $20 OR LCD_WrF ;
25789
25790 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
25791
25792 : LCD_Goto          $80 OR LCD_WrF ;
25793
25794 CODE LCD_R
25795     BIC.B #$0F,&$224
25796     BIS.B #1,&$243
25797 COLON
25798     TOP_LCD 2 20_us
25799     TOP_LCD 2 20_us
25800 HI2LO
25801     RLAM #4,0(R15)
25802     ADD.B @R15+,R14
25803     MOV @R1+,R13
25804     MOV @R13+,R0
25805 ENDCODE
25806
25807
25808 CODE LCD_RdS
25809     BIC.B #2,&$243
25810     JMP LCD_R
25811 ENDCODE
25812
25813
25814 CODE LCD_RdC
25815     BIS.B #2,&$243
25816     JMP LCD_R
25817 ENDCODE
25818
25819
25820
25821 ASM WDT_INT
25822 BIT.B #$20,&$240
25823 0= IF
25824     CMP #19,&$3D6
25825     U< IF
25826         ADD #1,&$3D6
25827     THEN
25828 ELSE
25829     BIT.B #$40,&$240
25830     0= IF
25831         CMP #3,&$3D6
25832         U>= IF
25833            SUB #1,&$3D6
25834         THEN
25835     THEN
25836 THEN
25837 BW1
25838 BW2
25839 BW3
25840 BIC #$78,0(R1)
25841 RETI
25842 ENDASM
25843
25844
25845 ASM RC5_INT
25846   MOV #1,&$3A0
25847 MOV #1778,R9
25848 MOV #14,R10
25849 BEGIN
25850 MOV #%1011100100,&$380
25851     RRUM    #1,R9
25852     MOV     R9,R8
25853     RRUM    #1,R8
25854     ADD     R9,R8
25855     BEGIN   CMP R8,&$390
25856     U>= UNTIL
25857     BIT.B   #4,&$200
25858     ADDC    R11,R11
25859     MOV.B   &$200,&$208
25860     BIC.B   #4,&$20C
25861     SUB     #1,R10
25862 0<> WHILE
25863     ADD R9,R8
25864     BEGIN
25865         MOV &$390,R9
25866         CMP R8,R9
25867         U>= IF
25868         BIC #$30,&$380
25869         GOTO BW1
25870         THEN
25871         BIT.B #4,&$20C
25872     0<> UNTIL
25873 REPEAT
25874 BIC #$30,&$380
25875 RLAM    #1,R11
25876 MOV.B   R11,R9
25877 RRUM    #2,R9
25878 BIT     #$4000,R11
25879 0= IF   BIS #$40,R9
25880 THEN
25881 RRUM    #3,R11
25882 XOR     @R1,R11
25883 BIT     #$400,R11
25884 0= ?GOTO BW2
25885 XOR #$400,0(R1)
25886 SUB #4,R15
25887 MOV &BASE,2(R15)
25888 MOV #$10,&BASE
25889 MOV R14,0(R15)
25890 MOV R9,R14
25891 LO2HI
25892     ['] LCD_CLEAR IS CR
25893     ['] LCD_WrC  IS EMIT
25894     CR ." $" 2 U.R
25895     ['] CR >BODY IS CR
25896     ['] EMIT >BODY IS EMIT
25897 HI2LO
25898 MOV R14,&BASE
25899 MOV @R15+,R14
25900 GOTO BW3
25901 ENDASM
25902
25903
25904 ASM BACKGROUND
25905 MOV #SLEEP,R9
25906 ADD #4,R9
25907 MOV R9,R0
25908 ENDASM
25909
25910
25911 CODE START
25912     MOV #%1011010100,&$3C0
25913     MOV #1,&$3E0
25914     MOV #19,&$3D2
25915     MOV #%01100000,&$3C6
25916     MOV #10,&$3D6
25917     BIS.B #$20,&$204
25918     BIS.B #$20,&$20A
25919     BIS.B #7,&$245
25920     BIC.B #7,&$247
25921     BIS.B #$0F,&$224
25922     BIC.B #$0F,&$226
25923     BIS.B #4,&$20A
25924     BIC.B #4,&$20C
25925     MOV #RC5_INT,&$FFDE
25926     MOV #%0100010100,&$340
25927     MOV ##1638,&$352
25928     MOV #%10000,&$342
25929     MOV #WDT_INT,&$FFEA
25930
25931     MOV #SLEEP,R9
25932     MOV #BACKGROUND,2(R9)
25933
25934 LO2HI
25935
25936     $03E8 20_US
25937     $03 TOP_LCD
25938     $CD 20_US
25939     $03 TOP_LCD
25940     $5 20_US
25941     $03 TOP_LCD
25942     $2 20_US
25943     $02 TOP_LCD
25944     $2 20_US
25945     $28 LCD_WRF
25946     $08 LCD_WRF
25947     LCD_Clear
25948     $06 LCD_WRF
25949     $0C LCD_WRF
25950     LCD_Clear
25951     ['] LCD_HOME IS CR
25952     ['] LCD_WRC  IS EMIT
25953     CR ." I love you"   
25954     ['] CR >BODY IS CR
25955     ['] EMIT >BODY IS EMIT
25956     ." RC5toLCD is running. Type STOP to quit"
25957     LIT RECURSE IS WARM
25958     ABORT
25959 ;
25960
25961
25962 CODE STOP
25963     MOV #SLEEP,R9
25964     ADD #4,R9
25965     MOV R9,-2(R9)
25966
25967 COLON
25968     ['] WARM >BODY IS WARM
25969
25970     COLD
25971 ;
25972
25973
25974
25975             ; downloading RC5toLCD.4th is done
25976 RST_HERE    ; this app is protected against <reset>
25977
25978 [THEN]
25979
25980
25981
25982
25983
25984 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
25985
25986 [DEFINED] ASM [IF]
25987
25988 MARKER {RC5TOLCD}
25989
25990 [UNDEFINED] MAX [IF]
25991
25992 CODE MAX
25993     CMP @R15,R14
25994     S<  ?GOTO FW1
25995 BW1 ADD #2,R15
25996     MOV @R13+,R0
25997 ENDCODE
25998
25999
26000 CODE MIN
26001     CMP @R15,R14
26002     S<  ?GOTO BW1
26003 FW1 MOV @R15+,R14
26004     MOV @R13+,R0
26005 ENDCODE
26006
26007 [THEN]
26008
26009
26010 [UNDEFINED] U.R [IF]
26011 : U.R
26012   >R  <# 0 # #S #>  
26013   R> OVER - 0 MAX SPACES TYPE
26014 ;
26015 [THEN]
26016
26017
26018
26019 CODE 20_US
26020 BEGIN
26021     BEGIN
26022         BIT #1,&$3C0
26023     0<> UNTIL
26024     BIC #1,&$3C0
26025     SUB #1,R14
26026 U< UNTIL
26027 MOV @R15+,R14
26028 MOV @R13+,R0
26029 ENDCODE
26030
26031
26032 CODE TOP_LCD
26033     BIS.B #4,&$243
26034     BIT.B #1,&$241
26035 0= IF
26036     AND.B #$0F,R14
26037     MOV.B R14,&$222
26038     BIC.B #4,&$243
26039     MOV @R15+,R14
26040     MOV @R13+,R0
26041 THEN
26042     SUB #2,R15
26043     MOV R14,0(R15)
26044     BIC.B #4,&$243
26045     MOV.B &$220,R14
26046     AND.B #$0F,R14
26047     MOV @R13+,R0
26048 ENDCODE
26049
26050
26051 CODE LCD_W
26052     SUB #2,R15
26053     MOV R14,0(R15)
26054     RRUM #4,R14
26055     BIC.B #1,&$243
26056     BIS.B #$0F,&$224
26057 COLON
26058     TOP_LCD 2 20_US
26059     TOP_LCD 2 20_US 
26060 ;
26061
26062
26063 CODE LCD_WrC
26064     BIS.B #2,&$243
26065     JMP LCD_W 
26066 ENDCODE
26067
26068
26069 CODE LCD_WrF
26070     BIC.B #2,&$243
26071     JMP LCD_W 
26072 ENDCODE
26073
26074
26075 : LCD_Clear 
26076     $01 LCD_WrF 100 20_us
26077 ;
26078
26079
26080 : LCD_Home 
26081     $02 LCD_WrF 100 20_us 
26082 ;
26083
26084
26085 [UNDEFINED] OR [IF]
26086
26087 CODE OR
26088 BIS @R15+,R14
26089 MOV @R13+,R0
26090 ENDCODE
26091
26092
26093 [THEN]
26094
26095 : LCD_Entry_set     $04 OR LCD_WrF ;
26096
26097 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
26098
26099 : LCD_DSP_Shift     $10 OR LCD_WrF ;
26100
26101 : LCD_Fn_Set        $20 OR LCD_WrF ;
26102
26103 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
26104
26105 : LCD_Goto          $80 OR LCD_WrF ;
26106
26107 CODE LCD_R
26108     BIC.B #$0F,&$224
26109     BIS.B #1,&$243
26110 COLON
26111     TOP_LCD 2 20_us
26112     TOP_LCD 2 20_us
26113 HI2LO
26114     RLAM #4,0(R15)
26115     ADD.B @R15+,R14
26116     MOV @R1+,R13
26117     MOV @R13+,R0
26118 ENDCODE
26119
26120
26121 CODE LCD_RdS
26122     BIC.B #2,&$243
26123     JMP LCD_R
26124 ENDCODE
26125
26126
26127 CODE LCD_RdC
26128     BIS.B #2,&$243
26129     JMP LCD_R
26130 ENDCODE
26131
26132
26133
26134 ASM WDT_INT
26135 BIT.B #$20,&$240
26136 0= IF
26137     CMP #19,&$3D6
26138     U< IF
26139         ADD #1,&$3D6
26140     THEN
26141 ELSE
26142     BIT.B #$40,&$240
26143     0= IF
26144         CMP #3,&$3D6
26145         U>= IF
26146            SUB #1,&$3D6
26147         THEN
26148     THEN
26149 THEN
26150 BW1
26151 BW2
26152 BW3
26153 BIC #$78,0(R1)
26154 RETI
26155 ENDASM
26156
26157
26158 ASM RC5_INT
26159   MOV #1,&$3A0
26160 MOV #1778,R9
26161 MOV #14,R10
26162 BEGIN
26163 MOV #%1011100100,&$380
26164     RRUM    #1,R9
26165     MOV     R9,R8
26166     RRUM    #1,R8
26167     ADD     R9,R8
26168     BEGIN   CMP R8,&$390
26169     U>= UNTIL
26170     BIT.B   #4,&$200
26171     ADDC    R11,R11
26172     MOV.B   &$200,&$208
26173     BIC.B   #4,&$20C
26174     SUB     #1,R10
26175 0<> WHILE
26176     ADD R9,R8
26177     BEGIN
26178         MOV &$390,R9
26179         CMP R8,R9
26180         U>= IF
26181         BIC #$30,&$380
26182         GOTO BW1
26183         THEN
26184         BIT.B #4,&$20C
26185     0<> UNTIL
26186 REPEAT
26187 BIC #$30,&$380
26188 RLAM    #1,R11
26189 MOV.B   R11,R9
26190 RRUM    #2,R9
26191 BIT     #$4000,R11
26192 0= IF   BIS #$40,R9
26193 THEN
26194 RRUM    #3,R11
26195 XOR     @R1,R11
26196 BIT     #$400,R11
26197 0= ?GOTO BW2
26198 XOR #$400,0(R1)
26199 SUB #4,R15
26200 MOV &BASE,2(R15)
26201 MOV #$10,&BASE
26202 MOV R14,0(R15)
26203 MOV R9,R14
26204 LO2HI
26205     ['] LCD_CLEAR IS CR
26206     ['] LCD_WrC  IS EMIT
26207     CR ." $" 2 U.R
26208     ['] CR >BODY IS CR
26209     ['] EMIT >BODY IS EMIT
26210 HI2LO
26211 MOV R14,&BASE
26212 MOV @R15+,R14
26213 GOTO BW3
26214 ENDASM
26215
26216
26217 ASM BACKGROUND
26218 MOV #SLEEP,R9
26219 ADD #4,R9
26220 MOV R9,R0
26221 ENDASM
26222
26223
26224 CODE START
26225     MOV #%1011010100,&$3C0
26226     MOV #1,&$3E0
26227     MOV #19,&$3D2
26228     MOV #%01100000,&$3C6
26229     MOV #10,&$3D6
26230     BIS.B #$20,&$204
26231     BIS.B #$20,&$20A
26232     BIS.B #7,&$245
26233     BIC.B #7,&$247
26234     BIS.B #$0F,&$224
26235     BIC.B #$0F,&$226
26236     BIS.B #4,&$20A
26237     BIC.B #4,&$20C
26238     MOV #RC5_INT,&$FFDE
26239     MOV #%0100010100,&$340
26240     MOV ##1638,&$352
26241     MOV #%10000,&$342
26242     MOV #WDT_INT,&$FFEA
26243
26244     MOV #SLEEP,R9
26245     MOV #BACKGROUND,2(R9)
26246
26247 LO2HI
26248
26249     $03E8 20_US
26250     $03 TOP_LCD
26251     $CD 20_US
26252     $03 TOP_LCD
26253     $5 20_US
26254     $03 TOP_LCD
26255     $2 20_US
26256     $02 TOP_LCD
26257     $2 20_US
26258     $28 LCD_WRF
26259     $08 LCD_WRF
26260     LCD_Clear
26261     $06 LCD_WRF
26262     $0C LCD_WRF
26263     LCD_Clear
26264     ['] LCD_HOME IS CR
26265     ['] LCD_WRC  IS EMIT
26266     CR ." I love you"   
26267     ['] CR >BODY IS CR
26268     ['] EMIT >BODY IS EMIT
26269     ." RC5toLCD is running. Type STOP to quit"
26270     LIT RECURSE IS WARM
26271     ABORT
26272 ;
26273
26274
26275 CODE STOP
26276     MOV #SLEEP,R9
26277     ADD #4,R9
26278     MOV R9,-2(R9)
26279
26280 COLON
26281     ['] WARM >BODY IS WARM
26282
26283     COLD
26284 ;
26285
26286
26287
26288             ; downloading RC5toLCD.4th is done
26289 RST_HERE    ; this app is protected against <reset>
26290
26291 [THEN]
26292
26293
26294
26295
26296
26297 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
26298
26299 [DEFINED] ASM [IF]
26300
26301 MARKER {RC5TOLCD}
26302
26303 [UNDEFINED] MAX [IF]
26304
26305 CODE MAX
26306     CMP @R15,R14
26307     S<  ?GOTO FW1
26308 BW1 ADD #2,R15
26309     MOV @R13+,R0
26310 ENDCODE
26311
26312
26313 CODE MIN
26314     CMP @R15,R14
26315     S<  ?GOTO BW1
26316 FW1 MOV @R15+,R14
26317     MOV @R13+,R0
26318 ENDCODE
26319
26320 [THEN]
26321
26322
26323 [UNDEFINED] U.R [IF]
26324 : U.R
26325   >R  <# 0 # #S #>  
26326   R> OVER - 0 MAX SPACES TYPE
26327 ;
26328 [THEN]
26329
26330
26331
26332 CODE 20_US
26333 BEGIN
26334     BEGIN
26335         BIT #1,&$3C0
26336     0<> UNTIL
26337     BIC #1,&$3C0
26338     SUB #1,R14
26339 U< UNTIL
26340 MOV @R15+,R14
26341 MOV @R13+,R0
26342 ENDCODE
26343
26344
26345 CODE TOP_LCD
26346     BIS.B #4,&$243
26347     BIT.B #1,&$241
26348 0= IF
26349     AND.B #$0F,R14
26350     MOV.B R14,&$222
26351     BIC.B #4,&$243
26352     MOV @R15+,R14
26353     MOV @R13+,R0
26354 THEN
26355     SUB #2,R15
26356     MOV R14,0(R15)
26357     BIC.B #4,&$243
26358     MOV.B &$220,R14
26359     AND.B #$0F,R14
26360     MOV @R13+,R0
26361 ENDCODE
26362
26363
26364 CODE LCD_W
26365     SUB #2,R15
26366     MOV R14,0(R15)
26367     RRUM #4,R14
26368     BIC.B #1,&$243
26369     BIS.B #$0F,&$224
26370 COLON
26371     TOP_LCD 2 20_US
26372     TOP_LCD 2 20_US 
26373 ;
26374
26375
26376 CODE LCD_WrC
26377     BIS.B #2,&$243
26378     JMP LCD_W 
26379 ENDCODE
26380
26381
26382 CODE LCD_WrF
26383     BIC.B #2,&$243
26384     JMP LCD_W 
26385 ENDCODE
26386
26387
26388 : LCD_Clear 
26389     $01 LCD_WrF 100 20_us
26390 ;
26391
26392
26393 : LCD_Home 
26394     $02 LCD_WrF 100 20_us 
26395 ;
26396
26397
26398 [UNDEFINED] OR [IF]
26399
26400 CODE OR
26401 BIS @R15+,R14
26402 MOV @R13+,R0
26403 ENDCODE
26404
26405
26406 [THEN]
26407
26408 : LCD_Entry_set     $04 OR LCD_WrF ;
26409
26410 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
26411
26412 : LCD_DSP_Shift     $10 OR LCD_WrF ;
26413
26414 : LCD_Fn_Set        $20 OR LCD_WrF ;
26415
26416 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
26417
26418 : LCD_Goto          $80 OR LCD_WrF ;
26419
26420 CODE LCD_R
26421     BIC.B #$0F,&$224
26422     BIS.B #1,&$243
26423 COLON
26424     TOP_LCD 2 20_us
26425     TOP_LCD 2 20_us
26426 HI2LO
26427     RLAM #4,0(R15)
26428     ADD.B @R15+,R14
26429     MOV @R1+,R13
26430     MOV @R13+,R0
26431 ENDCODE
26432
26433
26434 CODE LCD_RdS
26435     BIC.B #2,&$243
26436     JMP LCD_R
26437 ENDCODE
26438
26439
26440 CODE LCD_RdC
26441     BIS.B #2,&$243
26442     JMP LCD_R
26443 ENDCODE
26444
26445
26446
26447 ASM WDT_INT
26448 BIT.B #$20,&$240
26449 0= IF
26450     CMP #19,&$3D6
26451     U< IF
26452         ADD #1,&$3D6
26453     THEN
26454 ELSE
26455     BIT.B #$40,&$240
26456     0= IF
26457         CMP #3,&$3D6
26458         U>= IF
26459            SUB #1,&$3D6
26460         THEN
26461     THEN
26462 THEN
26463 BW1
26464 BW2
26465 BW3
26466 BIC #$78,0(R1)
26467 RETI
26468 ENDASM
26469
26470
26471 ASM RC5_INT
26472   MOV #1,&$3A0
26473 MOV #1778,R9
26474 MOV #14,R10
26475 BEGIN
26476 MOV #%1011100100,&$380
26477     RRUM    #1,R9
26478     MOV     R9,R8
26479     RRUM    #1,R8
26480     ADD     R9,R8
26481     BEGIN   CMP R8,&$390
26482     U>= UNTIL
26483     BIT.B   #4,&$200
26484     ADDC    R11,R11
26485     MOV.B   &$200,&$208
26486     BIC.B   #4,&$20C
26487     SUB     #1,R10
26488 0<> WHILE
26489     ADD R9,R8
26490     BEGIN
26491         MOV &$390,R9
26492         CMP R8,R9
26493         U>= IF
26494         BIC #$30,&$380
26495         GOTO BW1
26496         THEN
26497         BIT.B #4,&$20C
26498     0<> UNTIL
26499 REPEAT
26500 BIC #$30,&$380
26501 RLAM    #1,R11
26502 MOV.B   R11,R9
26503 RRUM    #2,R9
26504 BIT     #$4000,R11
26505 0= IF   BIS #$40,R9
26506 THEN
26507 RRUM    #3,R11
26508 XOR     @R1,R11
26509 BIT     #$400,R11
26510 0= ?GOTO BW2
26511 XOR #$400,0(R1)
26512 SUB #4,R15
26513 MOV &BASE,2(R15)
26514 MOV #$10,&BASE
26515 MOV R14,0(R15)
26516 MOV R9,R14
26517 LO2HI
26518     ['] LCD_CLEAR IS CR
26519     ['] LCD_WrC  IS EMIT
26520     CR ." $" 2 U.R
26521     ['] CR >BODY IS CR
26522     ['] EMIT >BODY IS EMIT
26523 HI2LO
26524 MOV R14,&BASE
26525 MOV @R15+,R14
26526 GOTO BW3
26527 ENDASM
26528
26529
26530 ASM BACKGROUND
26531 MOV #SLEEP,R9
26532 ADD #4,R9
26533 MOV R9,R0
26534 ENDASM
26535
26536
26537 CODE START
26538     MOV #%1011010100,&$3C0
26539     MOV #1,&$3E0
26540     MOV #19,&$3D2
26541     MOV #%01100000,&$3C6
26542     MOV #10,&$3D6
26543     BIS.B #$20,&$204
26544     BIS.B #$20,&$20A
26545     BIS.B #7,&$245
26546     BIC.B #7,&$247
26547     BIS.B #$0F,&$224
26548     BIC.B #$0F,&$226
26549     BIS.B #4,&$20A
26550     BIC.B #4,&$20C
26551     MOV #RC5_INT,&$FFDE
26552     MOV #%0100010100,&$340
26553     MOV ##1638,&$352
26554     MOV #%10000,&$342
26555     MOV #WDT_INT,&$FFEA
26556
26557     MOV #SLEEP,R9
26558     MOV #BACKGROUND,2(R9)
26559
26560 LO2HI
26561
26562     $03E8 20_US
26563     $03 TOP_LCD
26564     $CD 20_US
26565     $03 TOP_LCD
26566     $5 20_US
26567     $03 TOP_LCD
26568     $2 20_US
26569     $02 TOP_LCD
26570     $2 20_US
26571     $28 LCD_WRF
26572     $08 LCD_WRF
26573     LCD_Clear
26574     $06 LCD_WRF
26575     $0C LCD_WRF
26576     LCD_Clear
26577     ['] LCD_HOME IS CR
26578     ['] LCD_WRC  IS EMIT
26579     CR ." I love you"   
26580     ['] CR >BODY IS CR
26581     ['] EMIT >BODY IS EMIT
26582     ." RC5toLCD is running. Type STOP to quit"
26583     LIT RECURSE IS WARM
26584     ABORT
26585 ;
26586
26587
26588 CODE STOP
26589     MOV #SLEEP,R9
26590     ADD #4,R9
26591     MOV R9,-2(R9)
26592
26593 COLON
26594     ['] WARM >BODY IS WARM
26595
26596     COLD
26597 ;
26598
26599
26600
26601             ; downloading RC5toLCD.4th is done
26602 RST_HERE    ; this app is protected against <reset>
26603
26604 [THEN]
26605
26606
26607
26608
26609
26610 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
26611
26612 [DEFINED] ASM [IF]
26613
26614 MARKER {RC5TOLCD}
26615
26616 [UNDEFINED] MAX [IF]
26617
26618 CODE MAX
26619     CMP @R15,R14
26620     S<  ?GOTO FW1
26621 BW1 ADD #2,R15
26622     MOV @R13+,R0
26623 ENDCODE
26624
26625
26626 CODE MIN
26627     CMP @R15,R14
26628     S<  ?GOTO BW1
26629 FW1 MOV @R15+,R14
26630     MOV @R13+,R0
26631 ENDCODE
26632
26633 [THEN]
26634
26635
26636 [UNDEFINED] U.R [IF]
26637 : U.R
26638   >R  <# 0 # #S #>  
26639   R> OVER - 0 MAX SPACES TYPE
26640 ;
26641 [THEN]
26642
26643
26644
26645 CODE 20_US
26646 BEGIN
26647     BEGIN
26648         BIT #1,&$3C0
26649     0<> UNTIL
26650     BIC #1,&$3C0
26651     SUB #1,R14
26652 U< UNTIL
26653 MOV @R15+,R14
26654 MOV @R13+,R0
26655 ENDCODE
26656
26657
26658 CODE TOP_LCD
26659     BIS.B #4,&$243
26660     BIT.B #1,&$241
26661 0= IF
26662     AND.B #$0F,R14
26663     MOV.B R14,&$222
26664     BIC.B #4,&$243
26665     MOV @R15+,R14
26666     MOV @R13+,R0
26667 THEN
26668     SUB #2,R15
26669     MOV R14,0(R15)
26670     BIC.B #4,&$243
26671     MOV.B &$220,R14
26672     AND.B #$0F,R14
26673     MOV @R13+,R0
26674 ENDCODE
26675
26676
26677 CODE LCD_W
26678     SUB #2,R15
26679     MOV R14,0(R15)
26680     RRUM #4,R14
26681     BIC.B #1,&$243
26682     BIS.B #$0F,&$224
26683 COLON
26684     TOP_LCD 2 20_US
26685     TOP_LCD 2 20_US 
26686 ;
26687
26688
26689 CODE LCD_WrC
26690     BIS.B #2,&$243
26691     JMP LCD_W 
26692 ENDCODE
26693
26694
26695 CODE LCD_WrF
26696     BIC.B #2,&$243
26697     JMP LCD_W 
26698 ENDCODE
26699
26700
26701 : LCD_Clear 
26702     $01 LCD_WrF 100 20_us
26703 ;
26704
26705
26706 : LCD_Home 
26707     $02 LCD_WrF 100 20_us 
26708 ;
26709
26710
26711 [UNDEFINED] OR [IF]
26712
26713 CODE OR
26714 BIS @R15+,R14
26715 MOV @R13+,R0
26716 ENDCODE
26717
26718
26719 [THEN]
26720
26721 : LCD_Entry_set     $04 OR LCD_WrF ;
26722
26723 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
26724
26725 : LCD_DSP_Shift     $10 OR LCD_WrF ;
26726
26727 : LCD_Fn_Set        $20 OR LCD_WrF ;
26728
26729 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
26730
26731 : LCD_Goto          $80 OR LCD_WrF ;
26732
26733 CODE LCD_R
26734     BIC.B #$0F,&$224
26735     BIS.B #1,&$243
26736 COLON
26737     TOP_LCD 2 20_us
26738     TOP_LCD 2 20_us
26739 HI2LO
26740     RLAM #4,0(R15)
26741     ADD.B @R15+,R14
26742     MOV @R1+,R13
26743     MOV @R13+,R0
26744 ENDCODE
26745
26746
26747 CODE LCD_RdS
26748     BIC.B #2,&$243
26749     JMP LCD_R
26750 ENDCODE
26751
26752
26753 CODE LCD_RdC
26754     BIS.B #2,&$243
26755     JMP LCD_R
26756 ENDCODE
26757
26758
26759
26760 ASM WDT_INT
26761 BIT.B #$20,&$240
26762 0= IF
26763     CMP #19,&$3D6
26764     U< IF
26765         ADD #1,&$3D6
26766     THEN
26767 ELSE
26768     BIT.B #$40,&$240
26769     0= IF
26770         CMP #3,&$3D6
26771         U>= IF
26772            SUB #1,&$3D6
26773         THEN
26774     THEN
26775 THEN
26776 BW1
26777 BW2
26778 BW3
26779 BIC #$78,0(R1)
26780 RETI
26781 ENDASM
26782
26783
26784 ASM RC5_INT
26785   MOV #1,&$3A0
26786 MOV #1778,R9
26787 MOV #14,R10
26788 BEGIN
26789 MOV #%1011100100,&$380
26790     RRUM    #1,R9
26791     MOV     R9,R8
26792     RRUM    #1,R8
26793     ADD     R9,R8
26794     BEGIN   CMP R8,&$390
26795     U>= UNTIL
26796     BIT.B   #4,&$200
26797     ADDC    R11,R11
26798     MOV.B   &$200,&$208
26799     BIC.B   #4,&$20C
26800     SUB     #1,R10
26801 0<> WHILE
26802     ADD R9,R8
26803     BEGIN
26804         MOV &$390,R9
26805         CMP R8,R9
26806         U>= IF
26807         BIC #$30,&$380
26808         GOTO BW1
26809         THEN
26810         BIT.B #4,&$20C
26811     0<> UNTIL
26812 REPEAT
26813 BIC #$30,&$380
26814 RLAM    #1,R11
26815 MOV.B   R11,R9
26816 RRUM    #2,R9
26817 BIT     #$4000,R11
26818 0= IF   BIS #$40,R9
26819 THEN
26820 RRUM    #3,R11
26821 XOR     @R1,R11
26822 BIT     #$400,R11
26823 0= ?GOTO BW2
26824 XOR #$400,0(R1)
26825 SUB #4,R15
26826 MOV &BASE,2(R15)
26827 MOV #$10,&BASE
26828 MOV R14,0(R15)
26829 MOV R9,R14
26830 LO2HI
26831     ['] LCD_CLEAR IS CR
26832     ['] LCD_WrC  IS EMIT
26833     CR ." $" 2 U.R
26834     ['] CR >BODY IS CR
26835     ['] EMIT >BODY IS EMIT
26836 HI2LO
26837 MOV R14,&BASE
26838 MOV @R15+,R14
26839 GOTO BW3
26840 ENDASM
26841
26842
26843 ASM BACKGROUND
26844 MOV #SLEEP,R9
26845 ADD #4,R9
26846 MOV R9,R0
26847 ENDASM
26848
26849
26850 CODE START
26851     MOV #%1011010100,&$3C0
26852     MOV #1,&$3E0
26853     MOV #19,&$3D2
26854     MOV #%01100000,&$3C6
26855     MOV #10,&$3D6
26856     BIS.B #$20,&$204
26857     BIS.B #$20,&$20A
26858     BIS.B #7,&$245
26859     BIC.B #7,&$247
26860     BIS.B #$0F,&$224
26861     BIC.B #$0F,&$226
26862     BIS.B #4,&$20A
26863     BIC.B #4,&$20C
26864     MOV #RC5_INT,&$FFDE
26865     MOV #%0100010100,&$340
26866     MOV ##1638,&$352
26867     MOV #%10000,&$342
26868     MOV #WDT_INT,&$FFEA
26869
26870     MOV #SLEEP,R9
26871     MOV #BACKGROUND,2(R9)
26872
26873 LO2HI
26874
26875     $03E8 20_US
26876     $03 TOP_LCD
26877     $CD 20_US
26878     $03 TOP_LCD
26879     $5 20_US
26880     $03 TOP_LCD
26881     $2 20_US
26882     $02 TOP_LCD
26883     $2 20_US
26884     $28 LCD_WRF
26885     $08 LCD_WRF
26886     LCD_Clear
26887     $06 LCD_WRF
26888     $0C LCD_WRF
26889     LCD_Clear
26890     ['] LCD_HOME IS CR
26891     ['] LCD_WRC  IS EMIT
26892     CR ." I love you"   
26893     ['] CR >BODY IS CR
26894     ['] EMIT >BODY IS EMIT
26895     ." RC5toLCD is running. Type STOP to quit"
26896     LIT RECURSE IS WARM
26897     ABORT
26898 ;
26899
26900
26901 CODE STOP
26902     MOV #SLEEP,R9
26903     ADD #4,R9
26904     MOV R9,-2(R9)
26905
26906 COLON
26907     ['] WARM >BODY IS WARM
26908
26909     COLD
26910 ;
26911
26912
26913
26914             ; downloading RC5toLCD.4th is done
26915 RST_HERE    ; this app is protected against <reset>
26916
26917 [THEN]
26918
26919
26920
26921
26922
26923 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
26924
26925 [DEFINED] ASM [IF]
26926
26927 MARKER {RC5TOLCD}
26928
26929 [UNDEFINED] MAX [IF]
26930
26931 CODE MAX
26932     CMP @R15,R14
26933     S<  ?GOTO FW1
26934 BW1 ADD #2,R15
26935     MOV @R13+,R0
26936 ENDCODE
26937
26938
26939 CODE MIN
26940     CMP @R15,R14
26941     S<  ?GOTO BW1
26942 FW1 MOV @R15+,R14
26943     MOV @R13+,R0
26944 ENDCODE
26945
26946 [THEN]
26947
26948
26949 [UNDEFINED] U.R [IF]
26950 : U.R
26951   >R  <# 0 # #S #>  
26952   R> OVER - 0 MAX SPACES TYPE
26953 ;
26954 [THEN]
26955
26956
26957
26958 CODE 20_US
26959 BEGIN
26960     BEGIN
26961         BIT #1,&$3C0
26962     0<> UNTIL
26963     BIC #1,&$3C0
26964     SUB #1,R14
26965 U< UNTIL
26966 MOV @R15+,R14
26967 MOV @R13+,R0
26968 ENDCODE
26969
26970
26971 CODE TOP_LCD
26972     BIS.B #4,&$243
26973     BIT.B #1,&$241
26974 0= IF
26975     AND.B #$0F,R14
26976     MOV.B R14,&$222
26977     BIC.B #4,&$243
26978     MOV @R15+,R14
26979     MOV @R13+,R0
26980 THEN
26981     SUB #2,R15
26982     MOV R14,0(R15)
26983     BIC.B #4,&$243
26984     MOV.B &$220,R14
26985     AND.B #$0F,R14
26986     MOV @R13+,R0
26987 ENDCODE
26988
26989
26990 CODE LCD_W
26991     SUB #2,R15
26992     MOV R14,0(R15)
26993     RRUM #4,R14
26994     BIC.B #1,&$243
26995     BIS.B #$0F,&$224
26996 COLON
26997     TOP_LCD 2 20_US
26998     TOP_LCD 2 20_US 
26999 ;
27000
27001
27002 CODE LCD_WrC
27003     BIS.B #2,&$243
27004     JMP LCD_W 
27005 ENDCODE
27006
27007
27008 CODE LCD_WrF
27009     BIC.B #2,&$243
27010     JMP LCD_W 
27011 ENDCODE
27012
27013
27014 : LCD_Clear 
27015     $01 LCD_WrF 100 20_us
27016 ;
27017
27018
27019 : LCD_Home 
27020     $02 LCD_WrF 100 20_us 
27021 ;
27022
27023
27024 [UNDEFINED] OR [IF]
27025
27026 CODE OR
27027 BIS @R15+,R14
27028 MOV @R13+,R0
27029 ENDCODE
27030
27031
27032 [THEN]
27033
27034 : LCD_Entry_set     $04 OR LCD_WrF ;
27035
27036 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
27037
27038 : LCD_DSP_Shift     $10 OR LCD_WrF ;
27039
27040 : LCD_Fn_Set        $20 OR LCD_WrF ;
27041
27042 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
27043
27044 : LCD_Goto          $80 OR LCD_WrF ;
27045
27046 CODE LCD_R
27047     BIC.B #$0F,&$224
27048     BIS.B #1,&$243
27049 COLON
27050     TOP_LCD 2 20_us
27051     TOP_LCD 2 20_us
27052 HI2LO
27053     RLAM #4,0(R15)
27054     ADD.B @R15+,R14
27055     MOV @R1+,R13
27056     MOV @R13+,R0
27057 ENDCODE
27058
27059
27060 CODE LCD_RdS
27061     BIC.B #2,&$243
27062     JMP LCD_R
27063 ENDCODE
27064
27065
27066 CODE LCD_RdC
27067     BIS.B #2,&$243
27068     JMP LCD_R
27069 ENDCODE
27070
27071
27072
27073 ASM WDT_INT
27074 BIT.B #$20,&$240
27075 0= IF
27076     CMP #19,&$3D6
27077     U< IF
27078         ADD #1,&$3D6
27079     THEN
27080 ELSE
27081     BIT.B #$40,&$240
27082     0= IF
27083         CMP #3,&$3D6
27084         U>= IF
27085            SUB #1,&$3D6
27086         THEN
27087     THEN
27088 THEN
27089 BW1
27090 BW2
27091 BW3
27092 BIC #$78,0(R1)
27093 RETI
27094 ENDASM
27095
27096
27097 ASM RC5_INT
27098   MOV #1,&$3A0
27099 MOV #1778,R9
27100 MOV #14,R10
27101 BEGIN
27102 MOV #%1011100100,&$380
27103     RRUM    #1,R9
27104     MOV     R9,R8
27105     RRUM    #1,R8
27106     ADD     R9,R8
27107     BEGIN   CMP R8,&$390
27108     U>= UNTIL
27109     BIT.B   #4,&$200
27110     ADDC    R11,R11
27111     MOV.B   &$200,&$208
27112     BIC.B   #4,&$20C
27113     SUB     #1,R10
27114 0<> WHILE
27115     ADD R9,R8
27116     BEGIN
27117         MOV &$390,R9
27118         CMP R8,R9
27119         U>= IF
27120         BIC #$30,&$380
27121         GOTO BW1
27122         THEN
27123         BIT.B #4,&$20C
27124     0<> UNTIL
27125 REPEAT
27126 BIC #$30,&$380
27127 RLAM    #1,R11
27128 MOV.B   R11,R9
27129 RRUM    #2,R9
27130 BIT     #$4000,R11
27131 0= IF   BIS #$40,R9
27132 THEN
27133 RRUM    #3,R11
27134 XOR     @R1,R11
27135 BIT     #$400,R11
27136 0= ?GOTO BW2
27137 XOR #$400,0(R1)
27138 SUB #4,R15
27139 MOV &BASE,2(R15)
27140 MOV #$10,&BASE
27141 MOV R14,0(R15)
27142 MOV R9,R14
27143 LO2HI
27144     ['] LCD_CLEAR IS CR
27145     ['] LCD_WrC  IS EMIT
27146     CR ." $" 2 U.R
27147     ['] CR >BODY IS CR
27148     ['] EMIT >BODY IS EMIT
27149 HI2LO
27150 MOV R14,&BASE
27151 MOV @R15+,R14
27152 GOTO BW3
27153 ENDASM
27154
27155
27156 ASM BACKGROUND
27157 MOV #SLEEP,R9
27158 ADD #4,R9
27159 MOV R9,R0
27160 ENDASM
27161
27162
27163 CODE START
27164     MOV #%1011010100,&$3C0
27165     MOV #1,&$3E0
27166     MOV #19,&$3D2
27167     MOV #%01100000,&$3C6
27168     MOV #10,&$3D6
27169     BIS.B #$20,&$204
27170     BIS.B #$20,&$20A
27171     BIS.B #7,&$245
27172     BIC.B #7,&$247
27173     BIS.B #$0F,&$224
27174     BIC.B #$0F,&$226
27175     BIS.B #4,&$20A
27176     BIC.B #4,&$20C
27177     MOV #RC5_INT,&$FFDE
27178     MOV #%0100010100,&$340
27179     MOV ##1638,&$352
27180     MOV #%10000,&$342
27181     MOV #WDT_INT,&$FFEA
27182
27183     MOV #SLEEP,R9
27184     MOV #BACKGROUND,2(R9)
27185
27186 LO2HI
27187
27188     $03E8 20_US
27189     $03 TOP_LCD
27190     $CD 20_US
27191     $03 TOP_LCD
27192     $5 20_US
27193     $03 TOP_LCD
27194     $2 20_US
27195     $02 TOP_LCD
27196     $2 20_US
27197     $28 LCD_WRF
27198     $08 LCD_WRF
27199     LCD_Clear
27200     $06 LCD_WRF
27201     $0C LCD_WRF
27202     LCD_Clear
27203     ['] LCD_HOME IS CR
27204     ['] LCD_WRC  IS EMIT
27205     CR ." I love you"   
27206     ['] CR >BODY IS CR
27207     ['] EMIT >BODY IS EMIT
27208     ." RC5toLCD is running. Type STOP to quit"
27209     LIT RECURSE IS WARM
27210     ABORT
27211 ;
27212
27213
27214 CODE STOP
27215     MOV #SLEEP,R9
27216     ADD #4,R9
27217     MOV R9,-2(R9)
27218
27219 COLON
27220     ['] WARM >BODY IS WARM
27221
27222     COLD
27223 ;
27224
27225
27226
27227             ; downloading RC5toLCD.4th is done
27228 RST_HERE    ; this app is protected against <reset>
27229
27230 [THEN]
27231
27232
27233
27234
27235
27236 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
27237
27238 [DEFINED] ASM [IF]
27239
27240 MARKER {RC5TOLCD}
27241
27242 [UNDEFINED] MAX [IF]
27243
27244 CODE MAX
27245     CMP @R15,R14
27246     S<  ?GOTO FW1
27247 BW1 ADD #2,R15
27248     MOV @R13+,R0
27249 ENDCODE
27250
27251
27252 CODE MIN
27253     CMP @R15,R14
27254     S<  ?GOTO BW1
27255 FW1 MOV @R15+,R14
27256     MOV @R13+,R0
27257 ENDCODE
27258
27259 [THEN]
27260
27261
27262 [UNDEFINED] U.R [IF]
27263 : U.R
27264   >R  <# 0 # #S #>  
27265   R> OVER - 0 MAX SPACES TYPE
27266 ;
27267 [THEN]
27268
27269
27270
27271 CODE 20_US
27272 BEGIN
27273     BEGIN
27274         BIT #1,&$3C0
27275     0<> UNTIL
27276     BIC #1,&$3C0
27277     SUB #1,R14
27278 U< UNTIL
27279 MOV @R15+,R14
27280 MOV @R13+,R0
27281 ENDCODE
27282
27283
27284 CODE TOP_LCD
27285     BIS.B #4,&$243
27286     BIT.B #1,&$241
27287 0= IF
27288     AND.B #$0F,R14
27289     MOV.B R14,&$222
27290     BIC.B #4,&$243
27291     MOV @R15+,R14
27292     MOV @R13+,R0
27293 THEN
27294     SUB #2,R15
27295     MOV R14,0(R15)
27296     BIC.B #4,&$243
27297     MOV.B &$220,R14
27298     AND.B #$0F,R14
27299     MOV @R13+,R0
27300 ENDCODE
27301
27302
27303 CODE LCD_W
27304     SUB #2,R15
27305     MOV R14,0(R15)
27306     RRUM #4,R14
27307     BIC.B #1,&$243
27308     BIS.B #$0F,&$224
27309 COLON
27310     TOP_LCD 2 20_US
27311     TOP_LCD 2 20_US 
27312 ;
27313
27314
27315 CODE LCD_WrC
27316     BIS.B #2,&$243
27317     JMP LCD_W 
27318 ENDCODE
27319
27320
27321 CODE LCD_WrF
27322     BIC.B #2,&$243
27323     JMP LCD_W 
27324 ENDCODE
27325
27326
27327 : LCD_Clear 
27328     $01 LCD_WrF 100 20_us
27329 ;
27330
27331
27332 : LCD_Home 
27333     $02 LCD_WrF 100 20_us 
27334 ;
27335
27336
27337 [UNDEFINED] OR [IF]
27338
27339 CODE OR
27340 BIS @R15+,R14
27341 MOV @R13+,R0
27342 ENDCODE
27343
27344
27345 [THEN]
27346
27347 : LCD_Entry_set     $04 OR LCD_WrF ;
27348
27349 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
27350
27351 : LCD_DSP_Shift     $10 OR LCD_WrF ;
27352
27353 : LCD_Fn_Set        $20 OR LCD_WrF ;
27354
27355 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
27356
27357 : LCD_Goto          $80 OR LCD_WrF ;
27358
27359 CODE LCD_R
27360     BIC.B #$0F,&$224
27361     BIS.B #1,&$243
27362 COLON
27363     TOP_LCD 2 20_us
27364     TOP_LCD 2 20_us
27365 HI2LO
27366     RLAM #4,0(R15)
27367     ADD.B @R15+,R14
27368     MOV @R1+,R13
27369     MOV @R13+,R0
27370 ENDCODE
27371
27372
27373 CODE LCD_RdS
27374     BIC.B #2,&$243
27375     JMP LCD_R
27376 ENDCODE
27377
27378
27379 CODE LCD_RdC
27380     BIS.B #2,&$243
27381     JMP LCD_R
27382 ENDCODE
27383
27384
27385
27386 ASM WDT_INT
27387 BIT.B #$20,&$240
27388 0= IF
27389     CMP #19,&$3D6
27390     U< IF
27391         ADD #1,&$3D6
27392     THEN
27393 ELSE
27394     BIT.B #$40,&$240
27395     0= IF
27396         CMP #3,&$3D6
27397         U>= IF
27398            SUB #1,&$3D6
27399         THEN
27400     THEN
27401 THEN
27402 BW1
27403 BW2
27404 BW3
27405 BIC #$78,0(R1)
27406 RETI
27407 ENDASM
27408
27409
27410 ASM RC5_INT
27411   MOV #1,&$3A0
27412 MOV #1778,R9
27413 MOV #14,R10
27414 BEGIN
27415 MOV #%1011100100,&$380
27416     RRUM    #1,R9
27417     MOV     R9,R8
27418     RRUM    #1,R8
27419     ADD     R9,R8
27420     BEGIN   CMP R8,&$390
27421     U>= UNTIL
27422     BIT.B   #4,&$200
27423     ADDC    R11,R11
27424     MOV.B   &$200,&$208
27425     BIC.B   #4,&$20C
27426     SUB     #1,R10
27427 0<> WHILE
27428     ADD R9,R8
27429     BEGIN
27430         MOV &$390,R9
27431         CMP R8,R9
27432         U>= IF
27433         BIC #$30,&$380
27434         GOTO BW1
27435         THEN
27436         BIT.B #4,&$20C
27437     0<> UNTIL
27438 REPEAT
27439 BIC #$30,&$380
27440 RLAM    #1,R11
27441 MOV.B   R11,R9
27442 RRUM    #2,R9
27443 BIT     #$4000,R11
27444 0= IF   BIS #$40,R9
27445 THEN
27446 RRUM    #3,R11
27447 XOR     @R1,R11
27448 BIT     #$400,R11
27449 0= ?GOTO BW2
27450 XOR #$400,0(R1)
27451 SUB #4,R15
27452 MOV &BASE,2(R15)
27453 MOV #$10,&BASE
27454 MOV R14,0(R15)
27455 MOV R9,R14
27456 LO2HI
27457     ['] LCD_CLEAR IS CR
27458     ['] LCD_WrC  IS EMIT
27459     CR ." $" 2 U.R
27460     ['] CR >BODY IS CR
27461     ['] EMIT >BODY IS EMIT
27462 HI2LO
27463 MOV R14,&BASE
27464 MOV @R15+,R14
27465 GOTO BW3
27466 ENDASM
27467
27468
27469 ASM BACKGROUND
27470 MOV #SLEEP,R9
27471 ADD #4,R9
27472 MOV R9,R0
27473 ENDASM
27474
27475
27476 CODE START
27477     MOV #%1011010100,&$3C0
27478     MOV #1,&$3E0
27479     MOV #19,&$3D2
27480     MOV #%01100000,&$3C6
27481     MOV #10,&$3D6
27482     BIS.B #$20,&$204
27483     BIS.B #$20,&$20A
27484     BIS.B #7,&$245
27485     BIC.B #7,&$247
27486     BIS.B #$0F,&$224
27487     BIC.B #$0F,&$226
27488     BIS.B #4,&$20A
27489     BIC.B #4,&$20C
27490     MOV #RC5_INT,&$FFDE
27491     MOV #%0100010100,&$340
27492     MOV ##1638,&$352
27493     MOV #%10000,&$342
27494     MOV #WDT_INT,&$FFEA
27495
27496     MOV #SLEEP,R9
27497     MOV #BACKGROUND,2(R9)
27498
27499 LO2HI
27500
27501     $03E8 20_US
27502     $03 TOP_LCD
27503     $CD 20_US
27504     $03 TOP_LCD
27505     $5 20_US
27506     $03 TOP_LCD
27507     $2 20_US
27508     $02 TOP_LCD
27509     $2 20_US
27510     $28 LCD_WRF
27511     $08 LCD_WRF
27512     LCD_Clear
27513     $06 LCD_WRF
27514     $0C LCD_WRF
27515     LCD_Clear
27516     ['] LCD_HOME IS CR
27517     ['] LCD_WRC  IS EMIT
27518     CR ." I love you"   
27519     ['] CR >BODY IS CR
27520     ['] EMIT >BODY IS EMIT
27521     ." RC5toLCD is running. Type STOP to quit"
27522     LIT RECURSE IS WARM
27523     ABORT
27524 ;
27525
27526
27527 CODE STOP
27528     MOV #SLEEP,R9
27529     ADD #4,R9
27530     MOV R9,-2(R9)
27531
27532 COLON
27533     ['] WARM >BODY IS WARM
27534
27535     COLD
27536 ;
27537
27538
27539
27540             ; downloading RC5toLCD.4th is done
27541 RST_HERE    ; this app is protected against <reset>
27542
27543 [THEN]
27544
27545
27546
27547
27548
27549 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
27550
27551 [DEFINED] ASM [IF]
27552
27553 MARKER {RC5TOLCD}
27554
27555 [UNDEFINED] MAX [IF]
27556
27557 CODE MAX
27558     CMP @R15,R14
27559     S<  ?GOTO FW1
27560 BW1 ADD #2,R15
27561     MOV @R13+,R0
27562 ENDCODE
27563
27564
27565 CODE MIN
27566     CMP @R15,R14
27567     S<  ?GOTO BW1
27568 FW1 MOV @R15+,R14
27569     MOV @R13+,R0
27570 ENDCODE
27571
27572 [THEN]
27573
27574
27575 [UNDEFINED] U.R [IF]
27576 : U.R
27577   >R  <# 0 # #S #>  
27578   R> OVER - 0 MAX SPACES TYPE
27579 ;
27580 [THEN]
27581
27582
27583
27584 CODE 20_US
27585 BEGIN
27586     BEGIN
27587         BIT #1,&$3C0
27588     0<> UNTIL
27589     BIC #1,&$3C0
27590     SUB #1,R14
27591 U< UNTIL
27592 MOV @R15+,R14
27593 MOV @R13+,R0
27594 ENDCODE
27595
27596
27597 CODE TOP_LCD
27598     BIS.B #4,&$243
27599     BIT.B #1,&$241
27600 0= IF
27601     AND.B #$0F,R14
27602     MOV.B R14,&$222
27603     BIC.B #4,&$243
27604     MOV @R15+,R14
27605     MOV @R13+,R0
27606 THEN
27607     SUB #2,R15
27608     MOV R14,0(R15)
27609     BIC.B #4,&$243
27610     MOV.B &$220,R14
27611     AND.B #$0F,R14
27612     MOV @R13+,R0
27613 ENDCODE
27614
27615
27616 CODE LCD_W
27617     SUB #2,R15
27618     MOV R14,0(R15)
27619     RRUM #4,R14
27620     BIC.B #1,&$243
27621     BIS.B #$0F,&$224
27622 COLON
27623     TOP_LCD 2 20_US
27624     TOP_LCD 2 20_US 
27625 ;
27626
27627
27628 CODE LCD_WrC
27629     BIS.B #2,&$243
27630     JMP LCD_W 
27631 ENDCODE
27632
27633
27634 CODE LCD_WrF
27635     BIC.B #2,&$243
27636     JMP LCD_W 
27637 ENDCODE
27638
27639
27640 : LCD_Clear 
27641     $01 LCD_WrF 100 20_us
27642 ;
27643
27644
27645 : LCD_Home 
27646     $02 LCD_WrF 100 20_us 
27647 ;
27648
27649
27650 [UNDEFINED] OR [IF]
27651
27652 CODE OR
27653 BIS @R15+,R14
27654 MOV @R13+,R0
27655 ENDCODE
27656
27657
27658 [THEN]
27659
27660 : LCD_Entry_set     $04 OR LCD_WrF ;
27661
27662 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
27663
27664 : LCD_DSP_Shift     $10 OR LCD_WrF ;
27665
27666 : LCD_Fn_Set        $20 OR LCD_WrF ;
27667
27668 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
27669
27670 : LCD_Goto          $80 OR LCD_WrF ;
27671
27672 CODE LCD_R
27673     BIC.B #$0F,&$224
27674     BIS.B #1,&$243
27675 COLON
27676     TOP_LCD 2 20_us
27677     TOP_LCD 2 20_us
27678 HI2LO
27679     RLAM #4,0(R15)
27680     ADD.B @R15+,R14
27681     MOV @R1+,R13
27682     MOV @R13+,R0
27683 ENDCODE
27684
27685
27686 CODE LCD_RdS
27687     BIC.B #2,&$243
27688     JMP LCD_R
27689 ENDCODE
27690
27691
27692 CODE LCD_RdC
27693     BIS.B #2,&$243
27694     JMP LCD_R
27695 ENDCODE
27696
27697
27698
27699 ASM WDT_INT
27700 BIT.B #$20,&$240
27701 0= IF
27702     CMP #19,&$3D6
27703     U< IF
27704         ADD #1,&$3D6
27705     THEN
27706 ELSE
27707     BIT.B #$40,&$240
27708     0= IF
27709         CMP #3,&$3D6
27710         U>= IF
27711            SUB #1,&$3D6
27712         THEN
27713     THEN
27714 THEN
27715 BW1
27716 BW2
27717 BW3
27718 BIC #$78,0(R1)
27719 RETI
27720 ENDASM
27721
27722
27723 ASM RC5_INT
27724   MOV #1,&$3A0
27725 MOV #1778,R9
27726 MOV #14,R10
27727 BEGIN
27728 MOV #%1011100100,&$380
27729     RRUM    #1,R9
27730     MOV     R9,R8
27731     RRUM    #1,R8
27732     ADD     R9,R8
27733     BEGIN   CMP R8,&$390
27734     U>= UNTIL
27735     BIT.B   #4,&$200
27736     ADDC    R11,R11
27737     MOV.B   &$200,&$208
27738     BIC.B   #4,&$20C
27739     SUB     #1,R10
27740 0<> WHILE
27741     ADD R9,R8
27742     BEGIN
27743         MOV &$390,R9
27744         CMP R8,R9
27745         U>= IF
27746         BIC #$30,&$380
27747         GOTO BW1
27748         THEN
27749         BIT.B #4,&$20C
27750     0<> UNTIL
27751 REPEAT
27752 BIC #$30,&$380
27753 RLAM    #1,R11
27754 MOV.B   R11,R9
27755 RRUM    #2,R9
27756 BIT     #$4000,R11
27757 0= IF   BIS #$40,R9
27758 THEN
27759 RRUM    #3,R11
27760 XOR     @R1,R11
27761 BIT     #$400,R11
27762 0= ?GOTO BW2
27763 XOR #$400,0(R1)
27764 SUB #4,R15
27765 MOV &BASE,2(R15)
27766 MOV #$10,&BASE
27767 MOV R14,0(R15)
27768 MOV R9,R14
27769 LO2HI
27770     ['] LCD_CLEAR IS CR
27771     ['] LCD_WrC  IS EMIT
27772     CR ." $" 2 U.R
27773     ['] CR >BODY IS CR
27774     ['] EMIT >BODY IS EMIT
27775 HI2LO
27776 MOV R14,&BASE
27777 MOV @R15+,R14
27778 GOTO BW3
27779 ENDASM
27780
27781
27782 ASM BACKGROUND
27783 MOV #SLEEP,R9
27784 ADD #4,R9
27785 MOV R9,R0
27786 ENDASM
27787
27788
27789 CODE START
27790     MOV #%1011010100,&$3C0
27791     MOV #1,&$3E0
27792     MOV #19,&$3D2
27793     MOV #%01100000,&$3C6
27794     MOV #10,&$3D6
27795     BIS.B #$20,&$204
27796     BIS.B #$20,&$20A
27797     BIS.B #7,&$245
27798     BIC.B #7,&$247
27799     BIS.B #$0F,&$224
27800     BIC.B #$0F,&$226
27801     BIS.B #4,&$20A
27802     BIC.B #4,&$20C
27803     MOV #RC5_INT,&$FFDE
27804     MOV #%0100010100,&$340
27805     MOV ##1638,&$352
27806     MOV #%10000,&$342
27807     MOV #WDT_INT,&$FFEA
27808
27809     MOV #SLEEP,R9
27810     MOV #BACKGROUND,2(R9)
27811
27812 LO2HI
27813
27814     $03E8 20_US
27815     $03 TOP_LCD
27816     $CD 20_US
27817     $03 TOP_LCD
27818     $5 20_US
27819     $03 TOP_LCD
27820     $2 20_US
27821     $02 TOP_LCD
27822     $2 20_US
27823     $28 LCD_WRF
27824     $08 LCD_WRF
27825     LCD_Clear
27826     $06 LCD_WRF
27827     $0C LCD_WRF
27828     LCD_Clear
27829     ['] LCD_HOME IS CR
27830     ['] LCD_WRC  IS EMIT
27831     CR ." I love you"   
27832     ['] CR >BODY IS CR
27833     ['] EMIT >BODY IS EMIT
27834     ." RC5toLCD is running. Type STOP to quit"
27835     LIT RECURSE IS WARM
27836     ABORT
27837 ;
27838
27839
27840 CODE STOP
27841     MOV #SLEEP,R9
27842     ADD #4,R9
27843     MOV R9,-2(R9)
27844
27845 COLON
27846     ['] WARM >BODY IS WARM
27847
27848     COLD
27849 ;
27850
27851
27852
27853             ; downloading RC5toLCD.4th is done
27854 RST_HERE    ; this app is protected against <reset>
27855
27856 [THEN]
27857
27858
27859
27860
27861
27862 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
27863
27864 [DEFINED] ASM [IF]
27865
27866 MARKER {RC5TOLCD}
27867
27868 [UNDEFINED] MAX [IF]
27869
27870 CODE MAX
27871     CMP @R15,R14
27872     S<  ?GOTO FW1
27873 BW1 ADD #2,R15
27874     MOV @R13+,R0
27875 ENDCODE
27876
27877
27878 CODE MIN
27879     CMP @R15,R14
27880     S<  ?GOTO BW1
27881 FW1 MOV @R15+,R14
27882     MOV @R13+,R0
27883 ENDCODE
27884
27885 [THEN]
27886
27887
27888 [UNDEFINED] U.R [IF]
27889 : U.R
27890   >R  <# 0 # #S #>  
27891   R> OVER - 0 MAX SPACES TYPE
27892 ;
27893 [THEN]
27894
27895
27896
27897 CODE 20_US
27898 BEGIN
27899     BEGIN
27900         BIT #1,&$3C0
27901     0<> UNTIL
27902     BIC #1,&$3C0
27903     SUB #1,R14
27904 U< UNTIL
27905 MOV @R15+,R14
27906 MOV @R13+,R0
27907 ENDCODE
27908
27909
27910 CODE TOP_LCD
27911     BIS.B #4,&$243
27912     BIT.B #1,&$241
27913 0= IF
27914     AND.B #$0F,R14
27915     MOV.B R14,&$222
27916     BIC.B #4,&$243
27917     MOV @R15+,R14
27918     MOV @R13+,R0
27919 THEN
27920     SUB #2,R15
27921     MOV R14,0(R15)
27922     BIC.B #4,&$243
27923     MOV.B &$220,R14
27924     AND.B #$0F,R14
27925     MOV @R13+,R0
27926 ENDCODE
27927
27928
27929 CODE LCD_W
27930     SUB #2,R15
27931     MOV R14,0(R15)
27932     RRUM #4,R14
27933     BIC.B #1,&$243
27934     BIS.B #$0F,&$224
27935 COLON
27936     TOP_LCD 2 20_US
27937     TOP_LCD 2 20_US 
27938 ;
27939
27940
27941 CODE LCD_WrC
27942     BIS.B #2,&$243
27943     JMP LCD_W 
27944 ENDCODE
27945
27946
27947 CODE LCD_WrF
27948     BIC.B #2,&$243
27949     JMP LCD_W 
27950 ENDCODE
27951
27952
27953 : LCD_Clear 
27954     $01 LCD_WrF 100 20_us
27955 ;
27956
27957
27958 : LCD_Home 
27959     $02 LCD_WrF 100 20_us 
27960 ;
27961
27962
27963 [UNDEFINED] OR [IF]
27964
27965 CODE OR
27966 BIS @R15+,R14
27967 MOV @R13+,R0
27968 ENDCODE
27969
27970
27971 [THEN]
27972
27973 : LCD_Entry_set     $04 OR LCD_WrF ;
27974
27975 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
27976
27977 : LCD_DSP_Shift     $10 OR LCD_WrF ;
27978
27979 : LCD_Fn_Set        $20 OR LCD_WrF ;
27980
27981 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
27982
27983 : LCD_Goto          $80 OR LCD_WrF ;
27984
27985 CODE LCD_R
27986     BIC.B #$0F,&$224
27987     BIS.B #1,&$243
27988 COLON
27989     TOP_LCD 2 20_us
27990     TOP_LCD 2 20_us
27991 HI2LO
27992     RLAM #4,0(R15)
27993     ADD.B @R15+,R14
27994     MOV @R1+,R13
27995     MOV @R13+,R0
27996 ENDCODE
27997
27998
27999 CODE LCD_RdS
28000     BIC.B #2,&$243
28001     JMP LCD_R
28002 ENDCODE
28003
28004
28005 CODE LCD_RdC
28006     BIS.B #2,&$243
28007     JMP LCD_R
28008 ENDCODE
28009
28010
28011
28012 ASM WDT_INT
28013 BIT.B #$20,&$240
28014 0= IF
28015     CMP #19,&$3D6
28016     U< IF
28017         ADD #1,&$3D6
28018     THEN
28019 ELSE
28020     BIT.B #$40,&$240
28021     0= IF
28022         CMP #3,&$3D6
28023         U>= IF
28024            SUB #1,&$3D6
28025         THEN
28026     THEN
28027 THEN
28028 BW1
28029 BW2
28030 BW3
28031 BIC #$78,0(R1)
28032 RETI
28033 ENDASM
28034
28035
28036 ASM RC5_INT
28037   MOV #1,&$3A0
28038 MOV #1778,R9
28039 MOV #14,R10
28040 BEGIN
28041 MOV #%1011100100,&$380
28042     RRUM    #1,R9
28043     MOV     R9,R8
28044     RRUM    #1,R8
28045     ADD     R9,R8
28046     BEGIN   CMP R8,&$390
28047     U>= UNTIL
28048     BIT.B   #4,&$200
28049     ADDC    R11,R11
28050     MOV.B   &$200,&$208
28051     BIC.B   #4,&$20C
28052     SUB     #1,R10
28053 0<> WHILE
28054     ADD R9,R8
28055     BEGIN
28056         MOV &$390,R9
28057         CMP R8,R9
28058         U>= IF
28059         BIC #$30,&$380
28060         GOTO BW1
28061         THEN
28062         BIT.B #4,&$20C
28063     0<> UNTIL
28064 REPEAT
28065 BIC #$30,&$380
28066 RLAM    #1,R11
28067 MOV.B   R11,R9
28068 RRUM    #2,R9
28069 BIT     #$4000,R11
28070 0= IF   BIS #$40,R9
28071 THEN
28072 RRUM    #3,R11
28073 XOR     @R1,R11
28074 BIT     #$400,R11
28075 0= ?GOTO BW2
28076 XOR #$400,0(R1)
28077 SUB #4,R15
28078 MOV &BASE,2(R15)
28079 MOV #$10,&BASE
28080 MOV R14,0(R15)
28081 MOV R9,R14
28082 LO2HI
28083     ['] LCD_CLEAR IS CR
28084     ['] LCD_WrC  IS EMIT
28085     CR ." $" 2 U.R
28086     ['] CR >BODY IS CR
28087     ['] EMIT >BODY IS EMIT
28088 HI2LO
28089 MOV R14,&BASE
28090 MOV @R15+,R14
28091 GOTO BW3
28092 ENDASM
28093
28094
28095 ASM BACKGROUND
28096 MOV #SLEEP,R9
28097 ADD #4,R9
28098 MOV R9,R0
28099 ENDASM
28100
28101
28102 CODE START
28103     MOV #%1011010100,&$3C0
28104     MOV #1,&$3E0
28105     MOV #19,&$3D2
28106     MOV #%01100000,&$3C6
28107     MOV #10,&$3D6
28108     BIS.B #$20,&$204
28109     BIS.B #$20,&$20A
28110     BIS.B #7,&$245
28111     BIC.B #7,&$247
28112     BIS.B #$0F,&$224
28113     BIC.B #$0F,&$226
28114     BIS.B #4,&$20A
28115     BIC.B #4,&$20C
28116     MOV #RC5_INT,&$FFDE
28117     MOV #%0100010100,&$340
28118     MOV ##1638,&$352
28119     MOV #%10000,&$342
28120     MOV #WDT_INT,&$FFEA
28121
28122     MOV #SLEEP,R9
28123     MOV #BACKGROUND,2(R9)
28124
28125 LO2HI
28126
28127     $03E8 20_US
28128     $03 TOP_LCD
28129     $CD 20_US
28130     $03 TOP_LCD
28131     $5 20_US
28132     $03 TOP_LCD
28133     $2 20_US
28134     $02 TOP_LCD
28135     $2 20_US
28136     $28 LCD_WRF
28137     $08 LCD_WRF
28138     LCD_Clear
28139     $06 LCD_WRF
28140     $0C LCD_WRF
28141     LCD_Clear
28142     ['] LCD_HOME IS CR
28143     ['] LCD_WRC  IS EMIT
28144     CR ." I love you"   
28145     ['] CR >BODY IS CR
28146     ['] EMIT >BODY IS EMIT
28147     ." RC5toLCD is running. Type STOP to quit"
28148     LIT RECURSE IS WARM
28149     ABORT
28150 ;
28151
28152
28153 CODE STOP
28154     MOV #SLEEP,R9
28155     ADD #4,R9
28156     MOV R9,-2(R9)
28157
28158 COLON
28159     ['] WARM >BODY IS WARM
28160
28161     COLD
28162 ;
28163
28164
28165
28166             ; downloading RC5toLCD.4th is done
28167 RST_HERE    ; this app is protected against <reset>
28168
28169 [THEN]
28170
28171
28172
28173
28174
28175 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
28176
28177 [DEFINED] ASM [IF]
28178
28179 MARKER {RC5TOLCD}
28180
28181 [UNDEFINED] MAX [IF]
28182
28183 CODE MAX
28184     CMP @R15,R14
28185     S<  ?GOTO FW1
28186 BW1 ADD #2,R15
28187     MOV @R13+,R0
28188 ENDCODE
28189
28190
28191 CODE MIN
28192     CMP @R15,R14
28193     S<  ?GOTO BW1
28194 FW1 MOV @R15+,R14
28195     MOV @R13+,R0
28196 ENDCODE
28197
28198 [THEN]
28199
28200
28201 [UNDEFINED] U.R [IF]
28202 : U.R
28203   >R  <# 0 # #S #>  
28204   R> OVER - 0 MAX SPACES TYPE
28205 ;
28206 [THEN]
28207
28208
28209
28210 CODE 20_US
28211 BEGIN
28212     BEGIN
28213         BIT #1,&$3C0
28214     0<> UNTIL
28215     BIC #1,&$3C0
28216     SUB #1,R14
28217 U< UNTIL
28218 MOV @R15+,R14
28219 MOV @R13+,R0
28220 ENDCODE
28221
28222
28223 CODE TOP_LCD
28224     BIS.B #4,&$243
28225     BIT.B #1,&$241
28226 0= IF
28227     AND.B #$0F,R14
28228     MOV.B R14,&$222
28229     BIC.B #4,&$243
28230     MOV @R15+,R14
28231     MOV @R13+,R0
28232 THEN
28233     SUB #2,R15
28234     MOV R14,0(R15)
28235     BIC.B #4,&$243
28236     MOV.B &$220,R14
28237     AND.B #$0F,R14
28238     MOV @R13+,R0
28239 ENDCODE
28240
28241
28242 CODE LCD_W
28243     SUB #2,R15
28244     MOV R14,0(R15)
28245     RRUM #4,R14
28246     BIC.B #1,&$243
28247     BIS.B #$0F,&$224
28248 COLON
28249     TOP_LCD 2 20_US
28250     TOP_LCD 2 20_US 
28251 ;
28252
28253
28254 CODE LCD_WrC
28255     BIS.B #2,&$243
28256     JMP LCD_W 
28257 ENDCODE
28258
28259
28260 CODE LCD_WrF
28261     BIC.B #2,&$243
28262     JMP LCD_W 
28263 ENDCODE
28264
28265
28266 : LCD_Clear 
28267     $01 LCD_WrF 100 20_us
28268 ;
28269
28270
28271 : LCD_Home 
28272     $02 LCD_WrF 100 20_us 
28273 ;
28274
28275
28276 [UNDEFINED] OR [IF]
28277
28278 CODE OR
28279 BIS @R15+,R14
28280 MOV @R13+,R0
28281 ENDCODE
28282
28283
28284 [THEN]
28285
28286 : LCD_Entry_set     $04 OR LCD_WrF ;
28287
28288 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
28289
28290 : LCD_DSP_Shift     $10 OR LCD_WrF ;
28291
28292 : LCD_Fn_Set        $20 OR LCD_WrF ;
28293
28294 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
28295
28296 : LCD_Goto          $80 OR LCD_WrF ;
28297
28298 CODE LCD_R
28299     BIC.B #$0F,&$224
28300     BIS.B #1,&$243
28301 COLON
28302     TOP_LCD 2 20_us
28303     TOP_LCD 2 20_us
28304 HI2LO
28305     RLAM #4,0(R15)
28306     ADD.B @R15+,R14
28307     MOV @R1+,R13
28308     MOV @R13+,R0
28309 ENDCODE
28310
28311
28312 CODE LCD_RdS
28313     BIC.B #2,&$243
28314     JMP LCD_R
28315 ENDCODE
28316
28317
28318 CODE LCD_RdC
28319     BIS.B #2,&$243
28320     JMP LCD_R
28321 ENDCODE
28322
28323
28324
28325 ASM WDT_INT
28326 BIT.B #$20,&$240
28327 0= IF
28328     CMP #19,&$3D6
28329     U< IF
28330         ADD #1,&$3D6
28331     THEN
28332 ELSE
28333     BIT.B #$40,&$240
28334     0= IF
28335         CMP #3,&$3D6
28336         U>= IF
28337            SUB #1,&$3D6
28338         THEN
28339     THEN
28340 THEN
28341 BW1
28342 BW2
28343 BW3
28344 BIC #$78,0(R1)
28345 RETI
28346 ENDASM
28347
28348
28349 ASM RC5_INT
28350   MOV #1,&$3A0
28351 MOV #1778,R9
28352 MOV #14,R10
28353 BEGIN
28354 MOV #%1011100100,&$380
28355     RRUM    #1,R9
28356     MOV     R9,R8
28357     RRUM    #1,R8
28358     ADD     R9,R8
28359     BEGIN   CMP R8,&$390
28360     U>= UNTIL
28361     BIT.B   #4,&$200
28362     ADDC    R11,R11
28363     MOV.B   &$200,&$208
28364     BIC.B   #4,&$20C
28365     SUB     #1,R10
28366 0<> WHILE
28367     ADD R9,R8
28368     BEGIN
28369         MOV &$390,R9
28370         CMP R8,R9
28371         U>= IF
28372         BIC #$30,&$380
28373         GOTO BW1
28374         THEN
28375         BIT.B #4,&$20C
28376     0<> UNTIL
28377 REPEAT
28378 BIC #$30,&$380
28379 RLAM    #1,R11
28380 MOV.B   R11,R9
28381 RRUM    #2,R9
28382 BIT     #$4000,R11
28383 0= IF   BIS #$40,R9
28384 THEN
28385 RRUM    #3,R11
28386 XOR     @R1,R11
28387 BIT     #$400,R11
28388 0= ?GOTO BW2
28389 XOR #$400,0(R1)
28390 SUB #4,R15
28391 MOV &BASE,2(R15)
28392 MOV #$10,&BASE
28393 MOV R14,0(R15)
28394 MOV R9,R14
28395 LO2HI
28396     ['] LCD_CLEAR IS CR
28397     ['] LCD_WrC  IS EMIT
28398     CR ." $" 2 U.R
28399     ['] CR >BODY IS CR
28400     ['] EMIT >BODY IS EMIT
28401 HI2LO
28402 MOV R14,&BASE
28403 MOV @R15+,R14
28404 GOTO BW3
28405 ENDASM
28406
28407
28408 ASM BACKGROUND
28409 MOV #SLEEP,R9
28410 ADD #4,R9
28411 MOV R9,R0
28412 ENDASM
28413
28414
28415 CODE START
28416     MOV #%1011010100,&$3C0
28417     MOV #1,&$3E0
28418     MOV #19,&$3D2
28419     MOV #%01100000,&$3C6
28420     MOV #10,&$3D6
28421     BIS.B #$20,&$204
28422     BIS.B #$20,&$20A
28423     BIS.B #7,&$245
28424     BIC.B #7,&$247
28425     BIS.B #$0F,&$224
28426     BIC.B #$0F,&$226
28427     BIS.B #4,&$20A
28428     BIC.B #4,&$20C
28429     MOV #RC5_INT,&$FFDE
28430     MOV #%0100010100,&$340
28431     MOV ##1638,&$352
28432     MOV #%10000,&$342
28433     MOV #WDT_INT,&$FFEA
28434
28435     MOV #SLEEP,R9
28436     MOV #BACKGROUND,2(R9)
28437
28438 LO2HI
28439
28440     $03E8 20_US
28441     $03 TOP_LCD
28442     $CD 20_US
28443     $03 TOP_LCD
28444     $5 20_US
28445     $03 TOP_LCD
28446     $2 20_US
28447     $02 TOP_LCD
28448     $2 20_US
28449     $28 LCD_WRF
28450     $08 LCD_WRF
28451     LCD_Clear
28452     $06 LCD_WRF
28453     $0C LCD_WRF
28454     LCD_Clear
28455     ['] LCD_HOME IS CR
28456     ['] LCD_WRC  IS EMIT
28457     CR ." I love you"   
28458     ['] CR >BODY IS CR
28459     ['] EMIT >BODY IS EMIT
28460     ." RC5toLCD is running. Type STOP to quit"
28461     LIT RECURSE IS WARM
28462     ABORT
28463 ;
28464
28465
28466 CODE STOP
28467     MOV #SLEEP,R9
28468     ADD #4,R9
28469     MOV R9,-2(R9)
28470
28471 COLON
28472     ['] WARM >BODY IS WARM
28473
28474     COLD
28475 ;
28476
28477
28478
28479             ; downloading RC5toLCD.4th is done
28480 RST_HERE    ; this app is protected against <reset>
28481
28482 [THEN]
28483
28484
28485
28486
28487
28488 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
28489
28490 [DEFINED] ASM [IF]
28491
28492 MARKER {RC5TOLCD}
28493
28494 [UNDEFINED] MAX [IF]
28495
28496 CODE MAX
28497     CMP @R15,R14
28498     S<  ?GOTO FW1
28499 BW1 ADD #2,R15
28500     MOV @R13+,R0
28501 ENDCODE
28502
28503
28504 CODE MIN
28505     CMP @R15,R14
28506     S<  ?GOTO BW1
28507 FW1 MOV @R15+,R14
28508     MOV @R13+,R0
28509 ENDCODE
28510
28511 [THEN]
28512
28513
28514 [UNDEFINED] U.R [IF]
28515 : U.R
28516   >R  <# 0 # #S #>  
28517   R> OVER - 0 MAX SPACES TYPE
28518 ;
28519 [THEN]
28520
28521
28522
28523 CODE 20_US
28524 BEGIN
28525     BEGIN
28526         BIT #1,&$3C0
28527     0<> UNTIL
28528     BIC #1,&$3C0
28529     SUB #1,R14
28530 U< UNTIL
28531 MOV @R15+,R14
28532 MOV @R13+,R0
28533 ENDCODE
28534
28535
28536 CODE TOP_LCD
28537     BIS.B #4,&$243
28538     BIT.B #1,&$241
28539 0= IF
28540     AND.B #$0F,R14
28541     MOV.B R14,&$222
28542     BIC.B #4,&$243
28543     MOV @R15+,R14
28544     MOV @R13+,R0
28545 THEN
28546     SUB #2,R15
28547     MOV R14,0(R15)
28548     BIC.B #4,&$243
28549     MOV.B &$220,R14
28550     AND.B #$0F,R14
28551     MOV @R13+,R0
28552 ENDCODE
28553
28554
28555 CODE LCD_W
28556     SUB #2,R15
28557     MOV R14,0(R15)
28558     RRUM #4,R14
28559     BIC.B #1,&$243
28560     BIS.B #$0F,&$224
28561 COLON
28562     TOP_LCD 2 20_US
28563     TOP_LCD 2 20_US 
28564 ;
28565
28566
28567 CODE LCD_WrC
28568     BIS.B #2,&$243
28569     JMP LCD_W 
28570 ENDCODE
28571
28572
28573 CODE LCD_WrF
28574     BIC.B #2,&$243
28575     JMP LCD_W 
28576 ENDCODE
28577
28578
28579 : LCD_Clear 
28580     $01 LCD_WrF 100 20_us
28581 ;
28582
28583
28584 : LCD_Home 
28585     $02 LCD_WrF 100 20_us 
28586 ;
28587
28588
28589 [UNDEFINED] OR [IF]
28590
28591 CODE OR
28592 BIS @R15+,R14
28593 MOV @R13+,R0
28594 ENDCODE
28595
28596
28597 [THEN]
28598
28599 : LCD_Entry_set     $04 OR LCD_WrF ;
28600
28601 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
28602
28603 : LCD_DSP_Shift     $10 OR LCD_WrF ;
28604
28605 : LCD_Fn_Set        $20 OR LCD_WrF ;
28606
28607 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
28608
28609 : LCD_Goto          $80 OR LCD_WrF ;
28610
28611 CODE LCD_R
28612     BIC.B #$0F,&$224
28613     BIS.B #1,&$243
28614 COLON
28615     TOP_LCD 2 20_us
28616     TOP_LCD 2 20_us
28617 HI2LO
28618     RLAM #4,0(R15)
28619     ADD.B @R15+,R14
28620     MOV @R1+,R13
28621     MOV @R13+,R0
28622 ENDCODE
28623
28624
28625 CODE LCD_RdS
28626     BIC.B #2,&$243
28627     JMP LCD_R
28628 ENDCODE
28629
28630
28631 CODE LCD_RdC
28632     BIS.B #2,&$243
28633     JMP LCD_R
28634 ENDCODE
28635
28636
28637
28638 ASM WDT_INT
28639 BIT.B #$20,&$240
28640 0= IF
28641     CMP #19,&$3D6
28642     U< IF
28643         ADD #1,&$3D6
28644     THEN
28645 ELSE
28646     BIT.B #$40,&$240
28647     0= IF
28648         CMP #3,&$3D6
28649         U>= IF
28650            SUB #1,&$3D6
28651         THEN
28652     THEN
28653 THEN
28654 BW1
28655 BW2
28656 BW3
28657 BIC #$78,0(R1)
28658 RETI
28659 ENDASM
28660
28661
28662 ASM RC5_INT
28663   MOV #1,&$3A0
28664 MOV #1778,R9
28665 MOV #14,R10
28666 BEGIN
28667 MOV #%1011100100,&$380
28668     RRUM    #1,R9
28669     MOV     R9,R8
28670     RRUM    #1,R8
28671     ADD     R9,R8
28672     BEGIN   CMP R8,&$390
28673     U>= UNTIL
28674     BIT.B   #4,&$200
28675     ADDC    R11,R11
28676     MOV.B   &$200,&$208
28677     BIC.B   #4,&$20C
28678     SUB     #1,R10
28679 0<> WHILE
28680     ADD R9,R8
28681     BEGIN
28682         MOV &$390,R9
28683         CMP R8,R9
28684         U>= IF
28685         BIC #$30,&$380
28686         GOTO BW1
28687         THEN
28688         BIT.B #4,&$20C
28689     0<> UNTIL
28690 REPEAT
28691 BIC #$30,&$380
28692 RLAM    #1,R11
28693 MOV.B   R11,R9
28694 RRUM    #2,R9
28695 BIT     #$4000,R11
28696 0= IF   BIS #$40,R9
28697 THEN
28698 RRUM    #3,R11
28699 XOR     @R1,R11
28700 BIT     #$400,R11
28701 0= ?GOTO BW2
28702 XOR #$400,0(R1)
28703 SUB #4,R15
28704 MOV &BASE,2(R15)
28705 MOV #$10,&BASE
28706 MOV R14,0(R15)
28707 MOV R9,R14
28708 LO2HI
28709     ['] LCD_CLEAR IS CR
28710     ['] LCD_WrC  IS EMIT
28711     CR ." $" 2 U.R
28712     ['] CR >BODY IS CR
28713     ['] EMIT >BODY IS EMIT
28714 HI2LO
28715 MOV R14,&BASE
28716 MOV @R15+,R14
28717 GOTO BW3
28718 ENDASM
28719
28720
28721 ASM BACKGROUND
28722 MOV #SLEEP,R9
28723 ADD #4,R9
28724 MOV R9,R0
28725 ENDASM
28726
28727
28728 CODE START
28729     MOV #%1011010100,&$3C0
28730     MOV #1,&$3E0
28731     MOV #19,&$3D2
28732     MOV #%01100000,&$3C6
28733     MOV #10,&$3D6
28734     BIS.B #$20,&$204
28735     BIS.B #$20,&$20A
28736     BIS.B #7,&$245
28737     BIC.B #7,&$247
28738     BIS.B #$0F,&$224
28739     BIC.B #$0F,&$226
28740     BIS.B #4,&$20A
28741     BIC.B #4,&$20C
28742     MOV #RC5_INT,&$FFDE
28743     MOV #%0100010100,&$340
28744     MOV ##1638,&$352
28745     MOV #%10000,&$342
28746     MOV #WDT_INT,&$FFEA
28747
28748     MOV #SLEEP,R9
28749     MOV #BACKGROUND,2(R9)
28750
28751 LO2HI
28752
28753     $03E8 20_US
28754     $03 TOP_LCD
28755     $CD 20_US
28756     $03 TOP_LCD
28757     $5 20_US
28758     $03 TOP_LCD
28759     $2 20_US
28760     $02 TOP_LCD
28761     $2 20_US
28762     $28 LCD_WRF
28763     $08 LCD_WRF
28764     LCD_Clear
28765     $06 LCD_WRF
28766     $0C LCD_WRF
28767     LCD_Clear
28768     ['] LCD_HOME IS CR
28769     ['] LCD_WRC  IS EMIT
28770     CR ." I love you"   
28771     ['] CR >BODY IS CR
28772     ['] EMIT >BODY IS EMIT
28773     ." RC5toLCD is running. Type STOP to quit"
28774     LIT RECURSE IS WARM
28775     ABORT
28776 ;
28777
28778
28779 CODE STOP
28780     MOV #SLEEP,R9
28781     ADD #4,R9
28782     MOV R9,-2(R9)
28783
28784 COLON
28785     ['] WARM >BODY IS WARM
28786
28787     COLD
28788 ;
28789
28790
28791
28792             ; downloading RC5toLCD.4th is done
28793 RST_HERE    ; this app is protected against <reset>
28794
28795 [THEN]
28796
28797
28798
28799
28800
28801 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
28802
28803 [DEFINED] ASM [IF]
28804
28805 MARKER {RC5TOLCD}
28806
28807 [UNDEFINED] MAX [IF]
28808
28809 CODE MAX
28810     CMP @R15,R14
28811     S<  ?GOTO FW1
28812 BW1 ADD #2,R15
28813     MOV @R13+,R0
28814 ENDCODE
28815
28816
28817 CODE MIN
28818     CMP @R15,R14
28819     S<  ?GOTO BW1
28820 FW1 MOV @R15+,R14
28821     MOV @R13+,R0
28822 ENDCODE
28823
28824 [THEN]
28825
28826
28827 [UNDEFINED] U.R [IF]
28828 : U.R
28829   >R  <# 0 # #S #>  
28830   R> OVER - 0 MAX SPACES TYPE
28831 ;
28832 [THEN]
28833
28834
28835
28836 CODE 20_US
28837 BEGIN
28838     BEGIN
28839         BIT #1,&$3C0
28840     0<> UNTIL
28841     BIC #1,&$3C0
28842     SUB #1,R14
28843 U< UNTIL
28844 MOV @R15+,R14
28845 MOV @R13+,R0
28846 ENDCODE
28847
28848
28849 CODE TOP_LCD
28850     BIS.B #4,&$243
28851     BIT.B #1,&$241
28852 0= IF
28853     AND.B #$0F,R14
28854     MOV.B R14,&$222
28855     BIC.B #4,&$243
28856     MOV @R15+,R14
28857     MOV @R13+,R0
28858 THEN
28859     SUB #2,R15
28860     MOV R14,0(R15)
28861     BIC.B #4,&$243
28862     MOV.B &$220,R14
28863     AND.B #$0F,R14
28864     MOV @R13+,R0
28865 ENDCODE
28866
28867
28868 CODE LCD_W
28869     SUB #2,R15
28870     MOV R14,0(R15)
28871     RRUM #4,R14
28872     BIC.B #1,&$243
28873     BIS.B #$0F,&$224
28874 COLON
28875     TOP_LCD 2 20_US
28876     TOP_LCD 2 20_US 
28877 ;
28878
28879
28880 CODE LCD_WrC
28881     BIS.B #2,&$243
28882     JMP LCD_W 
28883 ENDCODE
28884
28885
28886 CODE LCD_WrF
28887     BIC.B #2,&$243
28888     JMP LCD_W 
28889 ENDCODE
28890
28891
28892 : LCD_Clear 
28893     $01 LCD_WrF 100 20_us
28894 ;
28895
28896
28897 : LCD_Home 
28898     $02 LCD_WrF 100 20_us 
28899 ;
28900
28901
28902 [UNDEFINED] OR [IF]
28903
28904 CODE OR
28905 BIS @R15+,R14
28906 MOV @R13+,R0
28907 ENDCODE
28908
28909
28910 [THEN]
28911
28912 : LCD_Entry_set     $04 OR LCD_WrF ;
28913
28914 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
28915
28916 : LCD_DSP_Shift     $10 OR LCD_WrF ;
28917
28918 : LCD_Fn_Set        $20 OR LCD_WrF ;
28919
28920 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
28921
28922 : LCD_Goto          $80 OR LCD_WrF ;
28923
28924 CODE LCD_R
28925     BIC.B #$0F,&$224
28926     BIS.B #1,&$243
28927 COLON
28928     TOP_LCD 2 20_us
28929     TOP_LCD 2 20_us
28930 HI2LO
28931     RLAM #4,0(R15)
28932     ADD.B @R15+,R14
28933     MOV @R1+,R13
28934     MOV @R13+,R0
28935 ENDCODE
28936
28937
28938 CODE LCD_RdS
28939     BIC.B #2,&$243
28940     JMP LCD_R
28941 ENDCODE
28942
28943
28944 CODE LCD_RdC
28945     BIS.B #2,&$243
28946     JMP LCD_R
28947 ENDCODE
28948
28949
28950
28951 ASM WDT_INT
28952 BIT.B #$20,&$240
28953 0= IF
28954     CMP #19,&$3D6
28955     U< IF
28956         ADD #1,&$3D6
28957     THEN
28958 ELSE
28959     BIT.B #$40,&$240
28960     0= IF
28961         CMP #3,&$3D6
28962         U>= IF
28963            SUB #1,&$3D6
28964         THEN
28965     THEN
28966 THEN
28967 BW1
28968 BW2
28969 BW3
28970 BIC #$78,0(R1)
28971 RETI
28972 ENDASM
28973
28974
28975 ASM RC5_INT
28976   MOV #1,&$3A0
28977 MOV #1778,R9
28978 MOV #14,R10
28979 BEGIN
28980 MOV #%1011100100,&$380
28981     RRUM    #1,R9
28982     MOV     R9,R8
28983     RRUM    #1,R8
28984     ADD     R9,R8
28985     BEGIN   CMP R8,&$390
28986     U>= UNTIL
28987     BIT.B   #4,&$200
28988     ADDC    R11,R11
28989     MOV.B   &$200,&$208
28990     BIC.B   #4,&$20C
28991     SUB     #1,R10
28992 0<> WHILE
28993     ADD R9,R8
28994     BEGIN
28995         MOV &$390,R9
28996         CMP R8,R9
28997         U>= IF
28998         BIC #$30,&$380
28999         GOTO BW1
29000         THEN
29001         BIT.B #4,&$20C
29002     0<> UNTIL
29003 REPEAT
29004 BIC #$30,&$380
29005 RLAM    #1,R11
29006 MOV.B   R11,R9
29007 RRUM    #2,R9
29008 BIT     #$4000,R11
29009 0= IF   BIS #$40,R9
29010 THEN
29011 RRUM    #3,R11
29012 XOR     @R1,R11
29013 BIT     #$400,R11
29014 0= ?GOTO BW2
29015 XOR #$400,0(R1)
29016 SUB #4,R15
29017 MOV &BASE,2(R15)
29018 MOV #$10,&BASE
29019 MOV R14,0(R15)
29020 MOV R9,R14
29021 LO2HI
29022     ['] LCD_CLEAR IS CR
29023     ['] LCD_WrC  IS EMIT
29024     CR ." $" 2 U.R
29025     ['] CR >BODY IS CR
29026     ['] EMIT >BODY IS EMIT
29027 HI2LO
29028 MOV R14,&BASE
29029 MOV @R15+,R14
29030 GOTO BW3
29031 ENDASM
29032
29033
29034 ASM BACKGROUND
29035 MOV #SLEEP,R9
29036 ADD #4,R9
29037 MOV R9,R0
29038 ENDASM
29039
29040
29041 CODE START
29042     MOV #%1011010100,&$3C0
29043     MOV #1,&$3E0
29044     MOV #19,&$3D2
29045     MOV #%01100000,&$3C6
29046     MOV #10,&$3D6
29047     BIS.B #$20,&$204
29048     BIS.B #$20,&$20A
29049     BIS.B #7,&$245
29050     BIC.B #7,&$247
29051     BIS.B #$0F,&$224
29052     BIC.B #$0F,&$226
29053     BIS.B #4,&$20A
29054     BIC.B #4,&$20C
29055     MOV #RC5_INT,&$FFDE
29056     MOV #%0100010100,&$340
29057     MOV ##1638,&$352
29058     MOV #%10000,&$342
29059     MOV #WDT_INT,&$FFEA
29060
29061     MOV #SLEEP,R9
29062     MOV #BACKGROUND,2(R9)
29063
29064 LO2HI
29065
29066     $03E8 20_US
29067     $03 TOP_LCD
29068     $CD 20_US
29069     $03 TOP_LCD
29070     $5 20_US
29071     $03 TOP_LCD
29072     $2 20_US
29073     $02 TOP_LCD
29074     $2 20_US
29075     $28 LCD_WRF
29076     $08 LCD_WRF
29077     LCD_Clear
29078     $06 LCD_WRF
29079     $0C LCD_WRF
29080     LCD_Clear
29081     ['] LCD_HOME IS CR
29082     ['] LCD_WRC  IS EMIT
29083     CR ." I love you"   
29084     ['] CR >BODY IS CR
29085     ['] EMIT >BODY IS EMIT
29086     ." RC5toLCD is running. Type STOP to quit"
29087     LIT RECURSE IS WARM
29088     ABORT
29089 ;
29090
29091
29092 CODE STOP
29093     MOV #SLEEP,R9
29094     ADD #4,R9
29095     MOV R9,-2(R9)
29096
29097 COLON
29098     ['] WARM >BODY IS WARM
29099
29100     COLD
29101 ;
29102
29103
29104
29105             ; downloading RC5toLCD.4th is done
29106 RST_HERE    ; this app is protected against <reset>
29107
29108 [THEN]
29109
29110
29111
29112
29113
29114 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
29115
29116 [DEFINED] ASM [IF]
29117
29118 MARKER {RC5TOLCD}
29119
29120 [UNDEFINED] MAX [IF]
29121
29122 CODE MAX
29123     CMP @R15,R14
29124     S<  ?GOTO FW1
29125 BW1 ADD #2,R15
29126     MOV @R13+,R0
29127 ENDCODE
29128
29129
29130 CODE MIN
29131     CMP @R15,R14
29132     S<  ?GOTO BW1
29133 FW1 MOV @R15+,R14
29134     MOV @R13+,R0
29135 ENDCODE
29136
29137 [THEN]
29138
29139
29140 [UNDEFINED] U.R [IF]
29141 : U.R
29142   >R  <# 0 # #S #>  
29143   R> OVER - 0 MAX SPACES TYPE
29144 ;
29145 [THEN]
29146
29147
29148
29149 CODE 20_US
29150 BEGIN
29151     BEGIN
29152         BIT #1,&$3C0
29153     0<> UNTIL
29154     BIC #1,&$3C0
29155     SUB #1,R14
29156 U< UNTIL
29157 MOV @R15+,R14
29158 MOV @R13+,R0
29159 ENDCODE
29160
29161
29162 CODE TOP_LCD
29163     BIS.B #4,&$243
29164     BIT.B #1,&$241
29165 0= IF
29166     AND.B #$0F,R14
29167     MOV.B R14,&$222
29168     BIC.B #4,&$243
29169     MOV @R15+,R14
29170     MOV @R13+,R0
29171 THEN
29172     SUB #2,R15
29173     MOV R14,0(R15)
29174     BIC.B #4,&$243
29175     MOV.B &$220,R14
29176     AND.B #$0F,R14
29177     MOV @R13+,R0
29178 ENDCODE
29179
29180
29181 CODE LCD_W
29182     SUB #2,R15
29183     MOV R14,0(R15)
29184     RRUM #4,R14
29185     BIC.B #1,&$243
29186     BIS.B #$0F,&$224
29187 COLON
29188     TOP_LCD 2 20_US
29189     TOP_LCD 2 20_US 
29190 ;
29191
29192
29193 CODE LCD_WrC
29194     BIS.B #2,&$243
29195     JMP LCD_W 
29196 ENDCODE
29197
29198
29199 CODE LCD_WrF
29200     BIC.B #2,&$243
29201     JMP LCD_W 
29202 ENDCODE
29203
29204
29205 : LCD_Clear 
29206     $01 LCD_WrF 100 20_us
29207 ;
29208
29209
29210 : LCD_Home 
29211     $02 LCD_WrF 100 20_us 
29212 ;
29213
29214
29215 [UNDEFINED] OR [IF]
29216
29217 CODE OR
29218 BIS @R15+,R14
29219 MOV @R13+,R0
29220 ENDCODE
29221
29222
29223 [THEN]
29224
29225 : LCD_Entry_set     $04 OR LCD_WrF ;
29226
29227 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
29228
29229 : LCD_DSP_Shift     $10 OR LCD_WrF ;
29230
29231 : LCD_Fn_Set        $20 OR LCD_WrF ;
29232
29233 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
29234
29235 : LCD_Goto          $80 OR LCD_WrF ;
29236
29237 CODE LCD_R
29238     BIC.B #$0F,&$224
29239     BIS.B #1,&$243
29240 COLON
29241     TOP_LCD 2 20_us
29242     TOP_LCD 2 20_us
29243 HI2LO
29244     RLAM #4,0(R15)
29245     ADD.B @R15+,R14
29246     MOV @R1+,R13
29247     MOV @R13+,R0
29248 ENDCODE
29249
29250
29251 CODE LCD_RdS
29252     BIC.B #2,&$243
29253     JMP LCD_R
29254 ENDCODE
29255
29256
29257 CODE LCD_RdC
29258     BIS.B #2,&$243
29259     JMP LCD_R
29260 ENDCODE
29261
29262
29263
29264 ASM WDT_INT
29265 BIT.B #$20,&$240
29266 0= IF
29267     CMP #19,&$3D6
29268     U< IF
29269         ADD #1,&$3D6
29270     THEN
29271 ELSE
29272     BIT.B #$40,&$240
29273     0= IF
29274         CMP #3,&$3D6
29275         U>= IF
29276            SUB #1,&$3D6
29277         THEN
29278     THEN
29279 THEN
29280 BW1
29281 BW2
29282 BW3
29283 BIC #$78,0(R1)
29284 RETI
29285 ENDASM
29286
29287
29288 ASM RC5_INT
29289   MOV #1,&$3A0
29290 MOV #1778,R9
29291 MOV #14,R10
29292 BEGIN
29293 MOV #%1011100100,&$380
29294     RRUM    #1,R9
29295     MOV     R9,R8
29296     RRUM    #1,R8
29297     ADD     R9,R8
29298     BEGIN   CMP R8,&$390
29299     U>= UNTIL
29300     BIT.B   #4,&$200
29301     ADDC    R11,R11
29302     MOV.B   &$200,&$208
29303     BIC.B   #4,&$20C
29304     SUB     #1,R10
29305 0<> WHILE
29306     ADD R9,R8
29307     BEGIN
29308         MOV &$390,R9
29309         CMP R8,R9
29310         U>= IF
29311         BIC #$30,&$380
29312         GOTO BW1
29313         THEN
29314         BIT.B #4,&$20C
29315     0<> UNTIL
29316 REPEAT
29317 BIC #$30,&$380
29318 RLAM    #1,R11
29319 MOV.B   R11,R9
29320 RRUM    #2,R9
29321 BIT     #$4000,R11
29322 0= IF   BIS #$40,R9
29323 THEN
29324 RRUM    #3,R11
29325 XOR     @R1,R11
29326 BIT     #$400,R11
29327 0= ?GOTO BW2
29328 XOR #$400,0(R1)
29329 SUB #4,R15
29330 MOV &BASE,2(R15)
29331 MOV #$10,&BASE
29332 MOV R14,0(R15)
29333 MOV R9,R14
29334 LO2HI
29335     ['] LCD_CLEAR IS CR
29336     ['] LCD_WrC  IS EMIT
29337     CR ." $" 2 U.R
29338     ['] CR >BODY IS CR
29339     ['] EMIT >BODY IS EMIT
29340 HI2LO
29341 MOV R14,&BASE
29342 MOV @R15+,R14
29343 GOTO BW3
29344 ENDASM
29345
29346
29347 ASM BACKGROUND
29348 MOV #SLEEP,R9
29349 ADD #4,R9
29350 MOV R9,R0
29351 ENDASM
29352
29353
29354 CODE START
29355     MOV #%1011010100,&$3C0
29356     MOV #1,&$3E0
29357     MOV #19,&$3D2
29358     MOV #%01100000,&$3C6
29359     MOV #10,&$3D6
29360     BIS.B #$20,&$204
29361     BIS.B #$20,&$20A
29362     BIS.B #7,&$245
29363     BIC.B #7,&$247
29364     BIS.B #$0F,&$224
29365     BIC.B #$0F,&$226
29366     BIS.B #4,&$20A
29367     BIC.B #4,&$20C
29368     MOV #RC5_INT,&$FFDE
29369     MOV #%0100010100,&$340
29370     MOV ##1638,&$352
29371     MOV #%10000,&$342
29372     MOV #WDT_INT,&$FFEA
29373
29374     MOV #SLEEP,R9
29375     MOV #BACKGROUND,2(R9)
29376
29377 LO2HI
29378
29379     $03E8 20_US
29380     $03 TOP_LCD
29381     $CD 20_US
29382     $03 TOP_LCD
29383     $5 20_US
29384     $03 TOP_LCD
29385     $2 20_US
29386     $02 TOP_LCD
29387     $2 20_US
29388     $28 LCD_WRF
29389     $08 LCD_WRF
29390     LCD_Clear
29391     $06 LCD_WRF
29392     $0C LCD_WRF
29393     LCD_Clear
29394     ['] LCD_HOME IS CR
29395     ['] LCD_WRC  IS EMIT
29396     CR ." I love you"   
29397     ['] CR >BODY IS CR
29398     ['] EMIT >BODY IS EMIT
29399     ." RC5toLCD is running. Type STOP to quit"
29400     LIT RECURSE IS WARM
29401     ABORT
29402 ;
29403
29404
29405 CODE STOP
29406     MOV #SLEEP,R9
29407     ADD #4,R9
29408     MOV R9,-2(R9)
29409
29410 COLON
29411     ['] WARM >BODY IS WARM
29412
29413     COLD
29414 ;
29415
29416
29417
29418             ; downloading RC5toLCD.4th is done
29419 RST_HERE    ; this app is protected against <reset>
29420
29421 [THEN]
29422
29423
29424
29425
29426
29427 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
29428
29429 [DEFINED] ASM [IF]
29430
29431 MARKER {RC5TOLCD}
29432
29433 [UNDEFINED] MAX [IF]
29434
29435 CODE MAX
29436     CMP @R15,R14
29437     S<  ?GOTO FW1
29438 BW1 ADD #2,R15
29439     MOV @R13+,R0
29440 ENDCODE
29441
29442
29443 CODE MIN
29444     CMP @R15,R14
29445     S<  ?GOTO BW1
29446 FW1 MOV @R15+,R14
29447     MOV @R13+,R0
29448 ENDCODE
29449
29450 [THEN]
29451
29452
29453 [UNDEFINED] U.R [IF]
29454 : U.R
29455   >R  <# 0 # #S #>  
29456   R> OVER - 0 MAX SPACES TYPE
29457 ;
29458 [THEN]
29459
29460
29461
29462 CODE 20_US
29463 BEGIN
29464     BEGIN
29465         BIT #1,&$3C0
29466     0<> UNTIL
29467     BIC #1,&$3C0
29468     SUB #1,R14
29469 U< UNTIL
29470 MOV @R15+,R14
29471 MOV @R13+,R0
29472 ENDCODE
29473
29474
29475 CODE TOP_LCD
29476     BIS.B #4,&$243
29477     BIT.B #1,&$241
29478 0= IF
29479     AND.B #$0F,R14
29480     MOV.B R14,&$222
29481     BIC.B #4,&$243
29482     MOV @R15+,R14
29483     MOV @R13+,R0
29484 THEN
29485     SUB #2,R15
29486     MOV R14,0(R15)
29487     BIC.B #4,&$243
29488     MOV.B &$220,R14
29489     AND.B #$0F,R14
29490     MOV @R13+,R0
29491 ENDCODE
29492
29493
29494 CODE LCD_W
29495     SUB #2,R15
29496     MOV R14,0(R15)
29497     RRUM #4,R14
29498     BIC.B #1,&$243
29499     BIS.B #$0F,&$224
29500 COLON
29501     TOP_LCD 2 20_US
29502     TOP_LCD 2 20_US 
29503 ;
29504
29505
29506 CODE LCD_WrC
29507     BIS.B #2,&$243
29508     JMP LCD_W 
29509 ENDCODE
29510
29511
29512 CODE LCD_WrF
29513     BIC.B #2,&$243
29514     JMP LCD_W 
29515 ENDCODE
29516
29517
29518 : LCD_Clear 
29519     $01 LCD_WrF 100 20_us
29520 ;
29521
29522
29523 : LCD_Home 
29524     $02 LCD_WrF 100 20_us 
29525 ;
29526
29527
29528 [UNDEFINED] OR [IF]
29529
29530 CODE OR
29531 BIS @R15+,R14
29532 MOV @R13+,R0
29533 ENDCODE
29534
29535
29536 [THEN]
29537
29538 : LCD_Entry_set     $04 OR LCD_WrF ;
29539
29540 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
29541
29542 : LCD_DSP_Shift     $10 OR LCD_WrF ;
29543
29544 : LCD_Fn_Set        $20 OR LCD_WrF ;
29545
29546 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
29547
29548 : LCD_Goto          $80 OR LCD_WrF ;
29549
29550 CODE LCD_R
29551     BIC.B #$0F,&$224
29552     BIS.B #1,&$243
29553 COLON
29554     TOP_LCD 2 20_us
29555     TOP_LCD 2 20_us
29556 HI2LO
29557     RLAM #4,0(R15)
29558     ADD.B @R15+,R14
29559     MOV @R1+,R13
29560     MOV @R13+,R0
29561 ENDCODE
29562
29563
29564 CODE LCD_RdS
29565     BIC.B #2,&$243
29566     JMP LCD_R
29567 ENDCODE
29568
29569
29570 CODE LCD_RdC
29571     BIS.B #2,&$243
29572     JMP LCD_R
29573 ENDCODE
29574
29575
29576
29577 ASM WDT_INT
29578 BIT.B #$20,&$240
29579 0= IF
29580     CMP #19,&$3D6
29581     U< IF
29582         ADD #1,&$3D6
29583     THEN
29584 ELSE
29585     BIT.B #$40,&$240
29586     0= IF
29587         CMP #3,&$3D6
29588         U>= IF
29589            SUB #1,&$3D6
29590         THEN
29591     THEN
29592 THEN
29593 BW1
29594 BW2
29595 BW3
29596 BIC #$78,0(R1)
29597 RETI
29598 ENDASM
29599
29600
29601 ASM RC5_INT
29602   MOV #1,&$3A0
29603 MOV #1778,R9
29604 MOV #14,R10
29605 BEGIN
29606 MOV #%1011100100,&$380
29607     RRUM    #1,R9
29608     MOV     R9,R8
29609     RRUM    #1,R8
29610     ADD     R9,R8
29611     BEGIN   CMP R8,&$390
29612     U>= UNTIL
29613     BIT.B   #4,&$200
29614     ADDC    R11,R11
29615     MOV.B   &$200,&$208
29616     BIC.B   #4,&$20C
29617     SUB     #1,R10
29618 0<> WHILE
29619     ADD R9,R8
29620     BEGIN
29621         MOV &$390,R9
29622         CMP R8,R9
29623         U>= IF
29624         BIC #$30,&$380
29625         GOTO BW1
29626         THEN
29627         BIT.B #4,&$20C
29628     0<> UNTIL
29629 REPEAT
29630 BIC #$30,&$380
29631 RLAM    #1,R11
29632 MOV.B   R11,R9
29633 RRUM    #2,R9
29634 BIT     #$4000,R11
29635 0= IF   BIS #$40,R9
29636 THEN
29637 RRUM    #3,R11
29638 XOR     @R1,R11
29639 BIT     #$400,R11
29640 0= ?GOTO BW2
29641 XOR #$400,0(R1)
29642 SUB #4,R15
29643 MOV &BASE,2(R15)
29644 MOV #$10,&BASE
29645 MOV R14,0(R15)
29646 MOV R9,R14
29647 LO2HI
29648     ['] LCD_CLEAR IS CR
29649     ['] LCD_WrC  IS EMIT
29650     CR ." $" 2 U.R
29651     ['] CR >BODY IS CR
29652     ['] EMIT >BODY IS EMIT
29653 HI2LO
29654 MOV R14,&BASE
29655 MOV @R15+,R14
29656 GOTO BW3
29657 ENDASM
29658
29659
29660 ASM BACKGROUND
29661 MOV #SLEEP,R9
29662 ADD #4,R9
29663 MOV R9,R0
29664 ENDASM
29665
29666
29667 CODE START
29668     MOV #%1011010100,&$3C0
29669     MOV #1,&$3E0
29670     MOV #19,&$3D2
29671     MOV #%01100000,&$3C6
29672     MOV #10,&$3D6
29673     BIS.B #$20,&$204
29674     BIS.B #$20,&$20A
29675     BIS.B #7,&$245
29676     BIC.B #7,&$247
29677     BIS.B #$0F,&$224
29678     BIC.B #$0F,&$226
29679     BIS.B #4,&$20A
29680     BIC.B #4,&$20C
29681     MOV #RC5_INT,&$FFDE
29682     MOV #%0100010100,&$340
29683     MOV ##1638,&$352
29684     MOV #%10000,&$342
29685     MOV #WDT_INT,&$FFEA
29686
29687     MOV #SLEEP,R9
29688     MOV #BACKGROUND,2(R9)
29689
29690 LO2HI
29691
29692     $03E8 20_US
29693     $03 TOP_LCD
29694     $CD 20_US
29695     $03 TOP_LCD
29696     $5 20_US
29697     $03 TOP_LCD
29698     $2 20_US
29699     $02 TOP_LCD
29700     $2 20_US
29701     $28 LCD_WRF
29702     $08 LCD_WRF
29703     LCD_Clear
29704     $06 LCD_WRF
29705     $0C LCD_WRF
29706     LCD_Clear
29707     ['] LCD_HOME IS CR
29708     ['] LCD_WRC  IS EMIT
29709     CR ." I love you"   
29710     ['] CR >BODY IS CR
29711     ['] EMIT >BODY IS EMIT
29712     ." RC5toLCD is running. Type STOP to quit"
29713     LIT RECURSE IS WARM
29714     ABORT
29715 ;
29716
29717
29718 CODE STOP
29719     MOV #SLEEP,R9
29720     ADD #4,R9
29721     MOV R9,-2(R9)
29722
29723 COLON
29724     ['] WARM >BODY IS WARM
29725
29726     COLD
29727 ;
29728
29729
29730
29731             ; downloading RC5toLCD.4th is done
29732 RST_HERE    ; this app is protected against <reset>
29733
29734 [THEN]
29735
29736
29737
29738
29739
29740 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
29741
29742 [DEFINED] ASM [IF]
29743
29744 MARKER {RC5TOLCD}
29745
29746 [UNDEFINED] MAX [IF]
29747
29748 CODE MAX
29749     CMP @R15,R14
29750     S<  ?GOTO FW1
29751 BW1 ADD #2,R15
29752     MOV @R13+,R0
29753 ENDCODE
29754
29755
29756 CODE MIN
29757     CMP @R15,R14
29758     S<  ?GOTO BW1
29759 FW1 MOV @R15+,R14
29760     MOV @R13+,R0
29761 ENDCODE
29762
29763 [THEN]
29764
29765
29766 [UNDEFINED] U.R [IF]
29767 : U.R
29768   >R  <# 0 # #S #>  
29769   R> OVER - 0 MAX SPACES TYPE
29770 ;
29771 [THEN]
29772
29773
29774
29775 CODE 20_US
29776 BEGIN
29777     BEGIN
29778         BIT #1,&$3C0
29779     0<> UNTIL
29780     BIC #1,&$3C0
29781     SUB #1,R14
29782 U< UNTIL
29783 MOV @R15+,R14
29784 MOV @R13+,R0
29785 ENDCODE
29786
29787
29788 CODE TOP_LCD
29789     BIS.B #4,&$243
29790     BIT.B #1,&$241
29791 0= IF
29792     AND.B #$0F,R14
29793     MOV.B R14,&$222
29794     BIC.B #4,&$243
29795     MOV @R15+,R14
29796     MOV @R13+,R0
29797 THEN
29798     SUB #2,R15
29799     MOV R14,0(R15)
29800     BIC.B #4,&$243
29801     MOV.B &$220,R14
29802     AND.B #$0F,R14
29803     MOV @R13+,R0
29804 ENDCODE
29805
29806
29807 CODE LCD_W
29808     SUB #2,R15
29809     MOV R14,0(R15)
29810     RRUM #4,R14
29811     BIC.B #1,&$243
29812     BIS.B #$0F,&$224
29813 COLON
29814     TOP_LCD 2 20_US
29815     TOP_LCD 2 20_US 
29816 ;
29817
29818
29819 CODE LCD_WrC
29820     BIS.B #2,&$243
29821     JMP LCD_W 
29822 ENDCODE
29823
29824
29825 CODE LCD_WrF
29826     BIC.B #2,&$243
29827     JMP LCD_W 
29828 ENDCODE
29829
29830
29831 : LCD_Clear 
29832     $01 LCD_WrF 100 20_us
29833 ;
29834
29835
29836 : LCD_Home 
29837     $02 LCD_WrF 100 20_us 
29838 ;
29839
29840
29841 [UNDEFINED] OR [IF]
29842
29843 CODE OR
29844 BIS @R15+,R14
29845 MOV @R13+,R0
29846 ENDCODE
29847
29848
29849 [THEN]
29850
29851 : LCD_Entry_set     $04 OR LCD_WrF ;
29852
29853 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
29854
29855 : LCD_DSP_Shift     $10 OR LCD_WrF ;
29856
29857 : LCD_Fn_Set        $20 OR LCD_WrF ;
29858
29859 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
29860
29861 : LCD_Goto          $80 OR LCD_WrF ;
29862
29863 CODE LCD_R
29864     BIC.B #$0F,&$224
29865     BIS.B #1,&$243
29866 COLON
29867     TOP_LCD 2 20_us
29868     TOP_LCD 2 20_us
29869 HI2LO
29870     RLAM #4,0(R15)
29871     ADD.B @R15+,R14
29872     MOV @R1+,R13
29873     MOV @R13+,R0
29874 ENDCODE
29875
29876
29877 CODE LCD_RdS
29878     BIC.B #2,&$243
29879     JMP LCD_R
29880 ENDCODE
29881
29882
29883 CODE LCD_RdC
29884     BIS.B #2,&$243
29885     JMP LCD_R
29886 ENDCODE
29887
29888
29889
29890 ASM WDT_INT
29891 BIT.B #$20,&$240
29892 0= IF
29893     CMP #19,&$3D6
29894     U< IF
29895         ADD #1,&$3D6
29896     THEN
29897 ELSE
29898     BIT.B #$40,&$240
29899     0= IF
29900         CMP #3,&$3D6
29901         U>= IF
29902            SUB #1,&$3D6
29903         THEN
29904     THEN
29905 THEN
29906 BW1
29907 BW2
29908 BW3
29909 BIC #$78,0(R1)
29910 RETI
29911 ENDASM
29912
29913
29914 ASM RC5_INT
29915   MOV #1,&$3A0
29916 MOV #1778,R9
29917 MOV #14,R10
29918 BEGIN
29919 MOV #%1011100100,&$380
29920     RRUM    #1,R9
29921     MOV     R9,R8
29922     RRUM    #1,R8
29923     ADD     R9,R8
29924     BEGIN   CMP R8,&$390
29925     U>= UNTIL
29926     BIT.B   #4,&$200
29927     ADDC    R11,R11
29928     MOV.B   &$200,&$208
29929     BIC.B   #4,&$20C
29930     SUB     #1,R10
29931 0<> WHILE
29932     ADD R9,R8
29933     BEGIN
29934         MOV &$390,R9
29935         CMP R8,R9
29936         U>= IF
29937         BIC #$30,&$380
29938         GOTO BW1
29939         THEN
29940         BIT.B #4,&$20C
29941     0<> UNTIL
29942 REPEAT
29943 BIC #$30,&$380
29944 RLAM    #1,R11
29945 MOV.B   R11,R9
29946 RRUM    #2,R9
29947 BIT     #$4000,R11
29948 0= IF   BIS #$40,R9
29949 THEN
29950 RRUM    #3,R11
29951 XOR     @R1,R11
29952 BIT     #$400,R11
29953 0= ?GOTO BW2
29954 XOR #$400,0(R1)
29955 SUB #4,R15
29956 MOV &BASE,2(R15)
29957 MOV #$10,&BASE
29958 MOV R14,0(R15)
29959 MOV R9,R14
29960 LO2HI
29961     ['] LCD_CLEAR IS CR
29962     ['] LCD_WrC  IS EMIT
29963     CR ." $" 2 U.R
29964     ['] CR >BODY IS CR
29965     ['] EMIT >BODY IS EMIT
29966 HI2LO
29967 MOV R14,&BASE
29968 MOV @R15+,R14
29969 GOTO BW3
29970 ENDASM
29971
29972
29973 ASM BACKGROUND
29974 MOV #SLEEP,R9
29975 ADD #4,R9
29976 MOV R9,R0
29977 ENDASM
29978
29979
29980 CODE START
29981     MOV #%1011010100,&$3C0
29982     MOV #1,&$3E0
29983     MOV #19,&$3D2
29984     MOV #%01100000,&$3C6
29985     MOV #10,&$3D6
29986     BIS.B #$20,&$204
29987     BIS.B #$20,&$20A
29988     BIS.B #7,&$245
29989     BIC.B #7,&$247
29990     BIS.B #$0F,&$224
29991     BIC.B #$0F,&$226
29992     BIS.B #4,&$20A
29993     BIC.B #4,&$20C
29994     MOV #RC5_INT,&$FFDE
29995     MOV #%0100010100,&$340
29996     MOV ##1638,&$352
29997     MOV #%10000,&$342
29998     MOV #WDT_INT,&$FFEA
29999
30000     MOV #SLEEP,R9
30001     MOV #BACKGROUND,2(R9)
30002
30003 LO2HI
30004
30005     $03E8 20_US
30006     $03 TOP_LCD
30007     $CD 20_US
30008     $03 TOP_LCD
30009     $5 20_US
30010     $03 TOP_LCD
30011     $2 20_US
30012     $02 TOP_LCD
30013     $2 20_US
30014     $28 LCD_WRF
30015     $08 LCD_WRF
30016     LCD_Clear
30017     $06 LCD_WRF
30018     $0C LCD_WRF
30019     LCD_Clear
30020     ['] LCD_HOME IS CR
30021     ['] LCD_WRC  IS EMIT
30022     CR ." I love you"   
30023     ['] CR >BODY IS CR
30024     ['] EMIT >BODY IS EMIT
30025     ." RC5toLCD is running. Type STOP to quit"
30026     LIT RECURSE IS WARM
30027     ABORT
30028 ;
30029
30030
30031 CODE STOP
30032     MOV #SLEEP,R9
30033     ADD #4,R9
30034     MOV R9,-2(R9)
30035
30036 COLON
30037     ['] WARM >BODY IS WARM
30038
30039     COLD
30040 ;
30041
30042
30043
30044             ; downloading RC5toLCD.4th is done
30045 RST_HERE    ; this app is protected against <reset>
30046
30047 [THEN]
30048
30049
30050
30051
30052
30053 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
30054
30055 [DEFINED] ASM [IF]
30056
30057 MARKER {RC5TOLCD}
30058
30059 [UNDEFINED] MAX [IF]
30060
30061 CODE MAX
30062     CMP @R15,R14
30063     S<  ?GOTO FW1
30064 BW1 ADD #2,R15
30065     MOV @R13+,R0
30066 ENDCODE
30067
30068
30069 CODE MIN
30070     CMP @R15,R14
30071     S<  ?GOTO BW1
30072 FW1 MOV @R15+,R14
30073     MOV @R13+,R0
30074 ENDCODE
30075
30076 [THEN]
30077
30078
30079 [UNDEFINED] U.R [IF]
30080 : U.R
30081   >R  <# 0 # #S #>  
30082   R> OVER - 0 MAX SPACES TYPE
30083 ;
30084 [THEN]
30085
30086
30087
30088 CODE 20_US
30089 BEGIN
30090     BEGIN
30091         BIT #1,&$3C0
30092     0<> UNTIL
30093     BIC #1,&$3C0
30094     SUB #1,R14
30095 U< UNTIL
30096 MOV @R15+,R14
30097 MOV @R13+,R0
30098 ENDCODE
30099
30100
30101 CODE TOP_LCD
30102     BIS.B #4,&$243
30103     BIT.B #1,&$241
30104 0= IF
30105     AND.B #$0F,R14
30106     MOV.B R14,&$222
30107     BIC.B #4,&$243
30108     MOV @R15+,R14
30109     MOV @R13+,R0
30110 THEN
30111     SUB #2,R15
30112     MOV R14,0(R15)
30113     BIC.B #4,&$243
30114     MOV.B &$220,R14
30115     AND.B #$0F,R14
30116     MOV @R13+,R0
30117 ENDCODE
30118
30119
30120 CODE LCD_W
30121     SUB #2,R15
30122     MOV R14,0(R15)
30123     RRUM #4,R14
30124     BIC.B #1,&$243
30125     BIS.B #$0F,&$224
30126 COLON
30127     TOP_LCD 2 20_US
30128     TOP_LCD 2 20_US 
30129 ;
30130
30131
30132 CODE LCD_WrC
30133     BIS.B #2,&$243
30134     JMP LCD_W 
30135 ENDCODE
30136
30137
30138 CODE LCD_WrF
30139     BIC.B #2,&$243
30140     JMP LCD_W 
30141 ENDCODE
30142
30143
30144 : LCD_Clear 
30145     $01 LCD_WrF 100 20_us
30146 ;
30147
30148
30149 : LCD_Home 
30150     $02 LCD_WrF 100 20_us 
30151 ;
30152
30153
30154 [UNDEFINED] OR [IF]
30155
30156 CODE OR
30157 BIS @R15+,R14
30158 MOV @R13+,R0
30159 ENDCODE
30160
30161
30162 [THEN]
30163
30164 : LCD_Entry_set     $04 OR LCD_WrF ;
30165
30166 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
30167
30168 : LCD_DSP_Shift     $10 OR LCD_WrF ;
30169
30170 : LCD_Fn_Set        $20 OR LCD_WrF ;
30171
30172 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
30173
30174 : LCD_Goto          $80 OR LCD_WrF ;
30175
30176 CODE LCD_R
30177     BIC.B #$0F,&$224
30178     BIS.B #1,&$243
30179 COLON
30180     TOP_LCD 2 20_us
30181     TOP_LCD 2 20_us
30182 HI2LO
30183     RLAM #4,0(R15)
30184     ADD.B @R15+,R14
30185     MOV @R1+,R13
30186     MOV @R13+,R0
30187 ENDCODE
30188
30189
30190 CODE LCD_RdS
30191     BIC.B #2,&$243
30192     JMP LCD_R
30193 ENDCODE
30194
30195
30196 CODE LCD_RdC
30197     BIS.B #2,&$243
30198     JMP LCD_R
30199 ENDCODE
30200
30201
30202
30203 ASM WDT_INT
30204 BIT.B #$20,&$240
30205 0= IF
30206     CMP #19,&$3D6
30207     U< IF
30208         ADD #1,&$3D6
30209     THEN
30210 ELSE
30211     BIT.B #$40,&$240
30212     0= IF
30213         CMP #3,&$3D6
30214         U>= IF
30215            SUB #1,&$3D6
30216         THEN
30217     THEN
30218 THEN
30219 BW1
30220 BW2
30221 BW3
30222 BIC #$78,0(R1)
30223 RETI
30224 ENDASM
30225
30226
30227 ASM RC5_INT
30228   MOV #1,&$3A0
30229 MOV #1778,R9
30230 MOV #14,R10
30231 BEGIN
30232 MOV #%1011100100,&$380
30233     RRUM    #1,R9
30234     MOV     R9,R8
30235     RRUM    #1,R8
30236     ADD     R9,R8
30237     BEGIN   CMP R8,&$390
30238     U>= UNTIL
30239     BIT.B   #4,&$200
30240     ADDC    R11,R11
30241     MOV.B   &$200,&$208
30242     BIC.B   #4,&$20C
30243     SUB     #1,R10
30244 0<> WHILE
30245     ADD R9,R8
30246     BEGIN
30247         MOV &$390,R9
30248         CMP R8,R9
30249         U>= IF
30250         BIC #$30,&$380
30251         GOTO BW1
30252         THEN
30253         BIT.B #4,&$20C
30254     0<> UNTIL
30255 REPEAT
30256 BIC #$30,&$380
30257 RLAM    #1,R11
30258 MOV.B   R11,R9
30259 RRUM    #2,R9
30260 BIT     #$4000,R11
30261 0= IF   BIS #$40,R9
30262 THEN
30263 RRUM    #3,R11
30264 XOR     @R1,R11
30265 BIT     #$400,R11
30266 0= ?GOTO BW2
30267 XOR #$400,0(R1)
30268 SUB #4,R15
30269 MOV &BASE,2(R15)
30270 MOV #$10,&BASE
30271 MOV R14,0(R15)
30272 MOV R9,R14
30273 LO2HI
30274     ['] LCD_CLEAR IS CR
30275     ['] LCD_WrC  IS EMIT
30276     CR ." $" 2 U.R
30277     ['] CR >BODY IS CR
30278     ['] EMIT >BODY IS EMIT
30279 HI2LO
30280 MOV R14,&BASE
30281 MOV @R15+,R14
30282 GOTO BW3
30283 ENDASM
30284
30285
30286 ASM BACKGROUND
30287 MOV #SLEEP,R9
30288 ADD #4,R9
30289 MOV R9,R0
30290 ENDASM
30291
30292
30293 CODE START
30294     MOV #%1011010100,&$3C0
30295     MOV #1,&$3E0
30296     MOV #19,&$3D2
30297     MOV #%01100000,&$3C6
30298     MOV #10,&$3D6
30299     BIS.B #$20,&$204
30300     BIS.B #$20,&$20A
30301     BIS.B #7,&$245
30302     BIC.B #7,&$247
30303     BIS.B #$0F,&$224
30304     BIC.B #$0F,&$226
30305     BIS.B #4,&$20A
30306     BIC.B #4,&$20C
30307     MOV #RC5_INT,&$FFDE
30308     MOV #%0100010100,&$340
30309     MOV ##1638,&$352
30310     MOV #%10000,&$342
30311     MOV #WDT_INT,&$FFEA
30312
30313     MOV #SLEEP,R9
30314     MOV #BACKGROUND,2(R9)
30315
30316 LO2HI
30317
30318     $03E8 20_US
30319     $03 TOP_LCD
30320     $CD 20_US
30321     $03 TOP_LCD
30322     $5 20_US
30323     $03 TOP_LCD
30324     $2 20_US
30325     $02 TOP_LCD
30326     $2 20_US
30327     $28 LCD_WRF
30328     $08 LCD_WRF
30329     LCD_Clear
30330     $06 LCD_WRF
30331     $0C LCD_WRF
30332     LCD_Clear
30333     ['] LCD_HOME IS CR
30334     ['] LCD_WRC  IS EMIT
30335     CR ." I love you"   
30336     ['] CR >BODY IS CR
30337     ['] EMIT >BODY IS EMIT
30338     ." RC5toLCD is running. Type STOP to quit"
30339     LIT RECURSE IS WARM
30340     ABORT
30341 ;
30342
30343
30344 CODE STOP
30345     MOV #SLEEP,R9
30346     ADD #4,R9
30347     MOV R9,-2(R9)
30348
30349 COLON
30350     ['] WARM >BODY IS WARM
30351
30352     COLD
30353 ;
30354
30355
30356
30357             ; downloading RC5toLCD.4th is done
30358 RST_HERE    ; this app is protected against <reset>
30359
30360 [THEN]
30361
30362
30363
30364
30365
30366 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
30367
30368 [DEFINED] ASM [IF]
30369
30370 MARKER {RC5TOLCD}
30371
30372 [UNDEFINED] MAX [IF]
30373
30374 CODE MAX
30375     CMP @R15,R14
30376     S<  ?GOTO FW1
30377 BW1 ADD #2,R15
30378     MOV @R13+,R0
30379 ENDCODE
30380
30381
30382 CODE MIN
30383     CMP @R15,R14
30384     S<  ?GOTO BW1
30385 FW1 MOV @R15+,R14
30386     MOV @R13+,R0
30387 ENDCODE
30388
30389 [THEN]
30390
30391
30392 [UNDEFINED] U.R [IF]
30393 : U.R
30394   >R  <# 0 # #S #>  
30395   R> OVER - 0 MAX SPACES TYPE
30396 ;
30397 [THEN]
30398
30399
30400
30401 CODE 20_US
30402 BEGIN
30403     BEGIN
30404         BIT #1,&$3C0
30405     0<> UNTIL
30406     BIC #1,&$3C0
30407     SUB #1,R14
30408 U< UNTIL
30409 MOV @R15+,R14
30410 MOV @R13+,R0
30411 ENDCODE
30412
30413
30414 CODE TOP_LCD
30415     BIS.B #4,&$243
30416     BIT.B #1,&$241
30417 0= IF
30418     AND.B #$0F,R14
30419     MOV.B R14,&$222
30420     BIC.B #4,&$243
30421     MOV @R15+,R14
30422     MOV @R13+,R0
30423 THEN
30424     SUB #2,R15
30425     MOV R14,0(R15)
30426     BIC.B #4,&$243
30427     MOV.B &$220,R14
30428     AND.B #$0F,R14
30429     MOV @R13+,R0
30430 ENDCODE
30431
30432
30433 CODE LCD_W
30434     SUB #2,R15
30435     MOV R14,0(R15)
30436     RRUM #4,R14
30437     BIC.B #1,&$243
30438     BIS.B #$0F,&$224
30439 COLON
30440     TOP_LCD 2 20_US
30441     TOP_LCD 2 20_US 
30442 ;
30443
30444
30445 CODE LCD_WrC
30446     BIS.B #2,&$243
30447     JMP LCD_W 
30448 ENDCODE
30449
30450
30451 CODE LCD_WrF
30452     BIC.B #2,&$243
30453     JMP LCD_W 
30454 ENDCODE
30455
30456
30457 : LCD_Clear 
30458     $01 LCD_WrF 100 20_us
30459 ;
30460
30461
30462 : LCD_Home 
30463     $02 LCD_WrF 100 20_us 
30464 ;
30465
30466
30467 [UNDEFINED] OR [IF]
30468
30469 CODE OR
30470 BIS @R15+,R14
30471 MOV @R13+,R0
30472 ENDCODE
30473
30474
30475 [THEN]
30476
30477 : LCD_Entry_set     $04 OR LCD_WrF ;
30478
30479 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
30480
30481 : LCD_DSP_Shift     $10 OR LCD_WrF ;
30482
30483 : LCD_Fn_Set        $20 OR LCD_WrF ;
30484
30485 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
30486
30487 : LCD_Goto          $80 OR LCD_WrF ;
30488
30489 CODE LCD_R
30490     BIC.B #$0F,&$224
30491     BIS.B #1,&$243
30492 COLON
30493     TOP_LCD 2 20_us
30494     TOP_LCD 2 20_us
30495 HI2LO
30496     RLAM #4,0(R15)
30497     ADD.B @R15+,R14
30498     MOV @R1+,R13
30499     MOV @R13+,R0
30500 ENDCODE
30501
30502
30503 CODE LCD_RdS
30504     BIC.B #2,&$243
30505     JMP LCD_R
30506 ENDCODE
30507
30508
30509 CODE LCD_RdC
30510     BIS.B #2,&$243
30511     JMP LCD_R
30512 ENDCODE
30513
30514
30515
30516 ASM WDT_INT
30517 BIT.B #$20,&$240
30518 0= IF
30519     CMP #19,&$3D6
30520     U< IF
30521         ADD #1,&$3D6
30522     THEN
30523 ELSE
30524     BIT.B #$40,&$240
30525     0= IF
30526         CMP #3,&$3D6
30527         U>= IF
30528            SUB #1,&$3D6
30529         THEN
30530     THEN
30531 THEN
30532 BW1
30533 BW2
30534 BW3
30535 BIC #$78,0(R1)
30536 RETI
30537 ENDASM
30538
30539
30540 ASM RC5_INT
30541   MOV #1,&$3A0
30542 MOV #1778,R9
30543 MOV #14,R10
30544 BEGIN
30545 MOV #%1011100100,&$380
30546     RRUM    #1,R9
30547     MOV     R9,R8
30548     RRUM    #1,R8
30549     ADD     R9,R8
30550     BEGIN   CMP R8,&$390
30551     U>= UNTIL
30552     BIT.B   #4,&$200
30553     ADDC    R11,R11
30554     MOV.B   &$200,&$208
30555     BIC.B   #4,&$20C
30556     SUB     #1,R10
30557 0<> WHILE
30558     ADD R9,R8
30559     BEGIN
30560         MOV &$390,R9
30561         CMP R8,R9
30562         U>= IF
30563         BIC #$30,&$380
30564         GOTO BW1
30565         THEN
30566         BIT.B #4,&$20C
30567     0<> UNTIL
30568 REPEAT
30569 BIC #$30,&$380
30570 RLAM    #1,R11
30571 MOV.B   R11,R9
30572 RRUM    #2,R9
30573 BIT     #$4000,R11
30574 0= IF   BIS #$40,R9
30575 THEN
30576 RRUM    #3,R11
30577 XOR     @R1,R11
30578 BIT     #$400,R11
30579 0= ?GOTO BW2
30580 XOR #$400,0(R1)
30581 SUB #4,R15
30582 MOV &BASE,2(R15)
30583 MOV #$10,&BASE
30584 MOV R14,0(R15)
30585 MOV R9,R14
30586 LO2HI
30587     ['] LCD_CLEAR IS CR
30588     ['] LCD_WrC  IS EMIT
30589     CR ." $" 2 U.R
30590     ['] CR >BODY IS CR
30591     ['] EMIT >BODY IS EMIT
30592 HI2LO
30593 MOV R14,&BASE
30594 MOV @R15+,R14
30595 GOTO BW3
30596 ENDASM
30597
30598
30599 ASM BACKGROUND
30600 MOV #SLEEP,R9
30601 ADD #4,R9
30602 MOV R9,R0
30603 ENDASM
30604
30605
30606 CODE START
30607     MOV #%1011010100,&$3C0
30608     MOV #1,&$3E0
30609     MOV #19,&$3D2
30610     MOV #%01100000,&$3C6
30611     MOV #10,&$3D6
30612     BIS.B #$20,&$204
30613     BIS.B #$20,&$20A
30614     BIS.B #7,&$245
30615     BIC.B #7,&$247
30616     BIS.B #$0F,&$224
30617     BIC.B #$0F,&$226
30618     BIS.B #4,&$20A
30619     BIC.B #4,&$20C
30620     MOV #RC5_INT,&$FFDE
30621     MOV #%0100010100,&$340
30622     MOV ##1638,&$352
30623     MOV #%10000,&$342
30624     MOV #WDT_INT,&$FFEA
30625
30626     MOV #SLEEP,R9
30627     MOV #BACKGROUND,2(R9)
30628
30629 LO2HI
30630
30631     $03E8 20_US
30632     $03 TOP_LCD
30633     $CD 20_US
30634     $03 TOP_LCD
30635     $5 20_US
30636     $03 TOP_LCD
30637     $2 20_US
30638     $02 TOP_LCD
30639     $2 20_US
30640     $28 LCD_WRF
30641     $08 LCD_WRF
30642     LCD_Clear
30643     $06 LCD_WRF
30644     $0C LCD_WRF
30645     LCD_Clear
30646     ['] LCD_HOME IS CR
30647     ['] LCD_WRC  IS EMIT
30648     CR ." I love you"   
30649     ['] CR >BODY IS CR
30650     ['] EMIT >BODY IS EMIT
30651     ." RC5toLCD is running. Type STOP to quit"
30652     LIT RECURSE IS WARM
30653     ABORT
30654 ;
30655
30656
30657 CODE STOP
30658     MOV #SLEEP,R9
30659     ADD #4,R9
30660     MOV R9,-2(R9)
30661
30662 COLON
30663     ['] WARM >BODY IS WARM
30664
30665     COLD
30666 ;
30667
30668
30669
30670             ; downloading RC5toLCD.4th is done
30671 RST_HERE    ; this app is protected against <reset>
30672
30673 [THEN]
30674
30675
30676
30677
30678
30679 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
30680
30681 [DEFINED] ASM [IF]
30682
30683 MARKER {RC5TOLCD}
30684
30685 [UNDEFINED] MAX [IF]
30686
30687 CODE MAX
30688     CMP @R15,R14
30689     S<  ?GOTO FW1
30690 BW1 ADD #2,R15
30691     MOV @R13+,R0
30692 ENDCODE
30693
30694
30695 CODE MIN
30696     CMP @R15,R14
30697     S<  ?GOTO BW1
30698 FW1 MOV @R15+,R14
30699     MOV @R13+,R0
30700 ENDCODE
30701
30702 [THEN]
30703
30704
30705 [UNDEFINED] U.R [IF]
30706 : U.R
30707   >R  <# 0 # #S #>  
30708   R> OVER - 0 MAX SPACES TYPE
30709 ;
30710 [THEN]
30711
30712
30713
30714 CODE 20_US
30715 BEGIN
30716     BEGIN
30717         BIT #1,&$3C0
30718     0<> UNTIL
30719     BIC #1,&$3C0
30720     SUB #1,R14
30721 U< UNTIL
30722 MOV @R15+,R14
30723 MOV @R13+,R0
30724 ENDCODE
30725
30726
30727 CODE TOP_LCD
30728     BIS.B #4,&$243
30729     BIT.B #1,&$241
30730 0= IF
30731     AND.B #$0F,R14
30732     MOV.B R14,&$222
30733     BIC.B #4,&$243
30734     MOV @R15+,R14
30735     MOV @R13+,R0
30736 THEN
30737     SUB #2,R15
30738     MOV R14,0(R15)
30739     BIC.B #4,&$243
30740     MOV.B &$220,R14
30741     AND.B #$0F,R14
30742     MOV @R13+,R0
30743 ENDCODE
30744
30745
30746 CODE LCD_W
30747     SUB #2,R15
30748     MOV R14,0(R15)
30749     RRUM #4,R14
30750     BIC.B #1,&$243
30751     BIS.B #$0F,&$224
30752 COLON
30753     TOP_LCD 2 20_US
30754     TOP_LCD 2 20_US 
30755 ;
30756
30757
30758 CODE LCD_WrC
30759     BIS.B #2,&$243
30760     JMP LCD_W 
30761 ENDCODE
30762
30763
30764 CODE LCD_WrF
30765     BIC.B #2,&$243
30766     JMP LCD_W 
30767 ENDCODE
30768
30769
30770 : LCD_Clear 
30771     $01 LCD_WrF 100 20_us
30772 ;
30773
30774
30775 : LCD_Home 
30776     $02 LCD_WrF 100 20_us 
30777 ;
30778
30779
30780 [UNDEFINED] OR [IF]
30781
30782 CODE OR
30783 BIS @R15+,R14
30784 MOV @R13+,R0
30785 ENDCODE
30786
30787
30788 [THEN]
30789
30790 : LCD_Entry_set     $04 OR LCD_WrF ;
30791
30792 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
30793
30794 : LCD_DSP_Shift     $10 OR LCD_WrF ;
30795
30796 : LCD_Fn_Set        $20 OR LCD_WrF ;
30797
30798 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
30799
30800 : LCD_Goto          $80 OR LCD_WrF ;
30801
30802 CODE LCD_R
30803     BIC.B #$0F,&$224
30804     BIS.B #1,&$243
30805 COLON
30806     TOP_LCD 2 20_us
30807     TOP_LCD 2 20_us
30808 HI2LO
30809     RLAM #4,0(R15)
30810     ADD.B @R15+,R14
30811     MOV @R1+,R13
30812     MOV @R13+,R0
30813 ENDCODE
30814
30815
30816 CODE LCD_RdS
30817     BIC.B #2,&$243
30818     JMP LCD_R
30819 ENDCODE
30820
30821
30822 CODE LCD_RdC
30823     BIS.B #2,&$243
30824     JMP LCD_R
30825 ENDCODE
30826
30827
30828
30829 ASM WDT_INT
30830 BIT.B #$20,&$240
30831 0= IF
30832     CMP #19,&$3D6
30833     U< IF
30834         ADD #1,&$3D6
30835     THEN
30836 ELSE
30837     BIT.B #$40,&$240
30838     0= IF
30839         CMP #3,&$3D6
30840         U>= IF
30841            SUB #1,&$3D6
30842         THEN
30843     THEN
30844 THEN
30845 BW1
30846 BW2
30847 BW3
30848 BIC #$78,0(R1)
30849 RETI
30850 ENDASM
30851
30852
30853 ASM RC5_INT
30854   MOV #1,&$3A0
30855 MOV #1778,R9
30856 MOV #14,R10
30857 BEGIN
30858 MOV #%1011100100,&$380
30859     RRUM    #1,R9
30860     MOV     R9,R8
30861     RRUM    #1,R8
30862     ADD     R9,R8
30863     BEGIN   CMP R8,&$390
30864     U>= UNTIL
30865     BIT.B   #4,&$200
30866     ADDC    R11,R11
30867     MOV.B   &$200,&$208
30868     BIC.B   #4,&$20C
30869     SUB     #1,R10
30870 0<> WHILE
30871     ADD R9,R8
30872     BEGIN
30873         MOV &$390,R9
30874         CMP R8,R9
30875         U>= IF
30876         BIC #$30,&$380
30877         GOTO BW1
30878         THEN
30879         BIT.B #4,&$20C
30880     0<> UNTIL
30881 REPEAT
30882 BIC #$30,&$380
30883 RLAM    #1,R11
30884 MOV.B   R11,R9
30885 RRUM    #2,R9
30886 BIT     #$4000,R11
30887 0= IF   BIS #$40,R9
30888 THEN
30889 RRUM    #3,R11
30890 XOR     @R1,R11
30891 BIT     #$400,R11
30892 0= ?GOTO BW2
30893 XOR #$400,0(R1)
30894 SUB #4,R15
30895 MOV &BASE,2(R15)
30896 MOV #$10,&BASE
30897 MOV R14,0(R15)
30898 MOV R9,R14
30899 LO2HI
30900     ['] LCD_CLEAR IS CR
30901     ['] LCD_WrC  IS EMIT
30902     CR ." $" 2 U.R
30903     ['] CR >BODY IS CR
30904     ['] EMIT >BODY IS EMIT
30905 HI2LO
30906 MOV R14,&BASE
30907 MOV @R15+,R14
30908 GOTO BW3
30909 ENDASM
30910
30911
30912 ASM BACKGROUND
30913 MOV #SLEEP,R9
30914 ADD #4,R9
30915 MOV R9,R0
30916 ENDASM
30917
30918
30919 CODE START
30920     MOV #%1011010100,&$3C0
30921     MOV #1,&$3E0
30922     MOV #19,&$3D2
30923     MOV #%01100000,&$3C6
30924     MOV #10,&$3D6
30925     BIS.B #$20,&$204
30926     BIS.B #$20,&$20A
30927     BIS.B #7,&$245
30928     BIC.B #7,&$247
30929     BIS.B #$0F,&$224
30930     BIC.B #$0F,&$226
30931     BIS.B #4,&$20A
30932     BIC.B #4,&$20C
30933     MOV #RC5_INT,&$FFDE
30934     MOV #%0100010100,&$340
30935     MOV ##1638,&$352
30936     MOV #%10000,&$342
30937     MOV #WDT_INT,&$FFEA
30938
30939     MOV #SLEEP,R9
30940     MOV #BACKGROUND,2(R9)
30941
30942 LO2HI
30943
30944     $03E8 20_US
30945     $03 TOP_LCD
30946     $CD 20_US
30947     $03 TOP_LCD
30948     $5 20_US
30949     $03 TOP_LCD
30950     $2 20_US
30951     $02 TOP_LCD
30952     $2 20_US
30953     $28 LCD_WRF
30954     $08 LCD_WRF
30955     LCD_Clear
30956     $06 LCD_WRF
30957     $0C LCD_WRF
30958     LCD_Clear
30959     ['] LCD_HOME IS CR
30960     ['] LCD_WRC  IS EMIT
30961     CR ." I love you"   
30962     ['] CR >BODY IS CR
30963     ['] EMIT >BODY IS EMIT
30964     ." RC5toLCD is running. Type STOP to quit"
30965     LIT RECURSE IS WARM
30966     ABORT
30967 ;
30968
30969
30970 CODE STOP
30971     MOV #SLEEP,R9
30972     ADD #4,R9
30973     MOV R9,-2(R9)
30974
30975 COLON
30976     ['] WARM >BODY IS WARM
30977
30978     COLD
30979 ;
30980
30981
30982
30983             ; downloading RC5toLCD.4th is done
30984 RST_HERE    ; this app is protected against <reset>
30985
30986 [THEN]
30987
30988
30989
30990
30991
30992 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
30993
30994 [DEFINED] ASM [IF]
30995
30996 MARKER {RC5TOLCD}
30997
30998 [UNDEFINED] MAX [IF]
30999
31000 CODE MAX
31001     CMP @R15,R14
31002     S<  ?GOTO FW1
31003 BW1 ADD #2,R15
31004     MOV @R13+,R0
31005 ENDCODE
31006
31007
31008 CODE MIN
31009     CMP @R15,R14
31010     S<  ?GOTO BW1
31011 FW1 MOV @R15+,R14
31012     MOV @R13+,R0
31013 ENDCODE
31014
31015 [THEN]
31016
31017
31018 [UNDEFINED] U.R [IF]
31019 : U.R
31020   >R  <# 0 # #S #>  
31021   R> OVER - 0 MAX SPACES TYPE
31022 ;
31023 [THEN]
31024
31025
31026
31027 CODE 20_US
31028 BEGIN
31029     BEGIN
31030         BIT #1,&$3C0
31031     0<> UNTIL
31032     BIC #1,&$3C0
31033     SUB #1,R14
31034 U< UNTIL
31035 MOV @R15+,R14
31036 MOV @R13+,R0
31037 ENDCODE
31038
31039
31040 CODE TOP_LCD
31041     BIS.B #4,&$243
31042     BIT.B #1,&$241
31043 0= IF
31044     AND.B #$0F,R14
31045     MOV.B R14,&$222
31046     BIC.B #4,&$243
31047     MOV @R15+,R14
31048     MOV @R13+,R0
31049 THEN
31050     SUB #2,R15
31051     MOV R14,0(R15)
31052     BIC.B #4,&$243
31053     MOV.B &$220,R14
31054     AND.B #$0F,R14
31055     MOV @R13+,R0
31056 ENDCODE
31057
31058
31059 CODE LCD_W
31060     SUB #2,R15
31061     MOV R14,0(R15)
31062     RRUM #4,R14
31063     BIC.B #1,&$243
31064     BIS.B #$0F,&$224
31065 COLON
31066     TOP_LCD 2 20_US
31067     TOP_LCD 2 20_US 
31068 ;
31069
31070
31071 CODE LCD_WrC
31072     BIS.B #2,&$243
31073     JMP LCD_W 
31074 ENDCODE
31075
31076
31077 CODE LCD_WrF
31078     BIC.B #2,&$243
31079     JMP LCD_W 
31080 ENDCODE
31081
31082
31083 : LCD_Clear 
31084     $01 LCD_WrF 100 20_us
31085 ;
31086
31087
31088 : LCD_Home 
31089     $02 LCD_WrF 100 20_us 
31090 ;
31091
31092
31093 [UNDEFINED] OR [IF]
31094
31095 CODE OR
31096 BIS @R15+,R14
31097 MOV @R13+,R0
31098 ENDCODE
31099
31100
31101 [THEN]
31102
31103 : LCD_Entry_set     $04 OR LCD_WrF ;
31104
31105 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
31106
31107 : LCD_DSP_Shift     $10 OR LCD_WrF ;
31108
31109 : LCD_Fn_Set        $20 OR LCD_WrF ;
31110
31111 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
31112
31113 : LCD_Goto          $80 OR LCD_WrF ;
31114
31115 CODE LCD_R
31116     BIC.B #$0F,&$224
31117     BIS.B #1,&$243
31118 COLON
31119     TOP_LCD 2 20_us
31120     TOP_LCD 2 20_us
31121 HI2LO
31122     RLAM #4,0(R15)
31123     ADD.B @R15+,R14
31124     MOV @R1+,R13
31125     MOV @R13+,R0
31126 ENDCODE
31127
31128
31129 CODE LCD_RdS
31130     BIC.B #2,&$243
31131     JMP LCD_R
31132 ENDCODE
31133
31134
31135 CODE LCD_RdC
31136     BIS.B #2,&$243
31137     JMP LCD_R
31138 ENDCODE
31139
31140
31141
31142 ASM WDT_INT
31143 BIT.B #$20,&$240
31144 0= IF
31145     CMP #19,&$3D6
31146     U< IF
31147         ADD #1,&$3D6
31148     THEN
31149 ELSE
31150     BIT.B #$40,&$240
31151     0= IF
31152         CMP #3,&$3D6
31153         U>= IF
31154            SUB #1,&$3D6
31155         THEN
31156     THEN
31157 THEN
31158 BW1
31159 BW2
31160 BW3
31161 BIC #$78,0(R1)
31162 RETI
31163 ENDASM
31164
31165
31166 ASM RC5_INT
31167   MOV #1,&$3A0
31168 MOV #1778,R9
31169 MOV #14,R10
31170 BEGIN
31171 MOV #%1011100100,&$380
31172     RRUM    #1,R9
31173     MOV     R9,R8
31174     RRUM    #1,R8
31175     ADD     R9,R8
31176     BEGIN   CMP R8,&$390
31177     U>= UNTIL
31178     BIT.B   #4,&$200
31179     ADDC    R11,R11
31180     MOV.B   &$200,&$208
31181     BIC.B   #4,&$20C
31182     SUB     #1,R10
31183 0<> WHILE
31184     ADD R9,R8
31185     BEGIN
31186         MOV &$390,R9
31187         CMP R8,R9
31188         U>= IF
31189         BIC #$30,&$380
31190         GOTO BW1
31191         THEN
31192         BIT.B #4,&$20C
31193     0<> UNTIL
31194 REPEAT
31195 BIC #$30,&$380
31196 RLAM    #1,R11
31197 MOV.B   R11,R9
31198 RRUM    #2,R9
31199 BIT     #$4000,R11
31200 0= IF   BIS #$40,R9
31201 THEN
31202 RRUM    #3,R11
31203 XOR     @R1,R11
31204 BIT     #$400,R11
31205 0= ?GOTO BW2
31206 XOR #$400,0(R1)
31207 SUB #4,R15
31208 MOV &BASE,2(R15)
31209 MOV #$10,&BASE
31210 MOV R14,0(R15)
31211 MOV R9,R14
31212 LO2HI
31213     ['] LCD_CLEAR IS CR
31214     ['] LCD_WrC  IS EMIT
31215     CR ." $" 2 U.R
31216     ['] CR >BODY IS CR
31217     ['] EMIT >BODY IS EMIT
31218 HI2LO
31219 MOV R14,&BASE
31220 MOV @R15+,R14
31221 GOTO BW3
31222 ENDASM
31223
31224
31225 ASM BACKGROUND
31226 MOV #SLEEP,R9
31227 ADD #4,R9
31228 MOV R9,R0
31229 ENDASM
31230
31231
31232 CODE START
31233     MOV #%1011010100,&$3C0
31234     MOV #1,&$3E0
31235     MOV #19,&$3D2
31236     MOV #%01100000,&$3C6
31237     MOV #10,&$3D6
31238     BIS.B #$20,&$204
31239     BIS.B #$20,&$20A
31240     BIS.B #7,&$245
31241     BIC.B #7,&$247
31242     BIS.B #$0F,&$224
31243     BIC.B #$0F,&$226
31244     BIS.B #4,&$20A
31245     BIC.B #4,&$20C
31246     MOV #RC5_INT,&$FFDE
31247     MOV #%0100010100,&$340
31248     MOV ##1638,&$352
31249     MOV #%10000,&$342
31250     MOV #WDT_INT,&$FFEA
31251
31252     MOV #SLEEP,R9
31253     MOV #BACKGROUND,2(R9)
31254
31255 LO2HI
31256
31257     $03E8 20_US
31258     $03 TOP_LCD
31259     $CD 20_US
31260     $03 TOP_LCD
31261     $5 20_US
31262     $03 TOP_LCD
31263     $2 20_US
31264     $02 TOP_LCD
31265     $2 20_US
31266     $28 LCD_WRF
31267     $08 LCD_WRF
31268     LCD_Clear
31269     $06 LCD_WRF
31270     $0C LCD_WRF
31271     LCD_Clear
31272     ['] LCD_HOME IS CR
31273     ['] LCD_WRC  IS EMIT
31274     CR ." I love you"   
31275     ['] CR >BODY IS CR
31276     ['] EMIT >BODY IS EMIT
31277     ." RC5toLCD is running. Type STOP to quit"
31278     LIT RECURSE IS WARM
31279     ABORT
31280 ;
31281
31282
31283 CODE STOP
31284     MOV #SLEEP,R9
31285     ADD #4,R9
31286     MOV R9,-2(R9)
31287
31288 COLON
31289     ['] WARM >BODY IS WARM
31290
31291     COLD
31292 ;
31293
31294
31295
31296             ; downloading RC5toLCD.4th is done
31297 RST_HERE    ; this app is protected against <reset>
31298
31299 [THEN]
31300
31301
31302
31303
31304
31305 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
31306
31307 [DEFINED] ASM [IF]
31308
31309 MARKER {RC5TOLCD}
31310
31311 [UNDEFINED] MAX [IF]
31312
31313 CODE MAX
31314     CMP @R15,R14
31315     S<  ?GOTO FW1
31316 BW1 ADD #2,R15
31317     MOV @R13+,R0
31318 ENDCODE
31319
31320
31321 CODE MIN
31322     CMP @R15,R14
31323     S<  ?GOTO BW1
31324 FW1 MOV @R15+,R14
31325     MOV @R13+,R0
31326 ENDCODE
31327
31328 [THEN]
31329
31330
31331 [UNDEFINED] U.R [IF]
31332 : U.R
31333   >R  <# 0 # #S #>  
31334   R> OVER - 0 MAX SPACES TYPE
31335 ;
31336 [THEN]
31337
31338
31339
31340 CODE 20_US
31341 BEGIN
31342     BEGIN
31343         BIT #1,&$3C0
31344     0<> UNTIL
31345     BIC #1,&$3C0
31346     SUB #1,R14
31347 U< UNTIL
31348 MOV @R15+,R14
31349 MOV @R13+,R0
31350 ENDCODE
31351
31352
31353 CODE TOP_LCD
31354     BIS.B #4,&$243
31355     BIT.B #1,&$241
31356 0= IF
31357     AND.B #$0F,R14
31358     MOV.B R14,&$222
31359     BIC.B #4,&$243
31360     MOV @R15+,R14
31361     MOV @R13+,R0
31362 THEN
31363     SUB #2,R15
31364     MOV R14,0(R15)
31365     BIC.B #4,&$243
31366     MOV.B &$220,R14
31367     AND.B #$0F,R14
31368     MOV @R13+,R0
31369 ENDCODE
31370
31371
31372 CODE LCD_W
31373     SUB #2,R15
31374     MOV R14,0(R15)
31375     RRUM #4,R14
31376     BIC.B #1,&$243
31377     BIS.B #$0F,&$224
31378 COLON
31379     TOP_LCD 2 20_US
31380     TOP_LCD 2 20_US 
31381 ;
31382
31383
31384 CODE LCD_WrC
31385     BIS.B #2,&$243
31386     JMP LCD_W 
31387 ENDCODE
31388
31389
31390 CODE LCD_WrF
31391     BIC.B #2,&$243
31392     JMP LCD_W 
31393 ENDCODE
31394
31395
31396 : LCD_Clear 
31397     $01 LCD_WrF 100 20_us
31398 ;
31399
31400
31401 : LCD_Home 
31402     $02 LCD_WrF 100 20_us 
31403 ;
31404
31405
31406 [UNDEFINED] OR [IF]
31407
31408 CODE OR
31409 BIS @R15+,R14
31410 MOV @R13+,R0
31411 ENDCODE
31412
31413
31414 [THEN]
31415
31416 : LCD_Entry_set     $04 OR LCD_WrF ;
31417
31418 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
31419
31420 : LCD_DSP_Shift     $10 OR LCD_WrF ;
31421
31422 : LCD_Fn_Set        $20 OR LCD_WrF ;
31423
31424 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
31425
31426 : LCD_Goto          $80 OR LCD_WrF ;
31427
31428 CODE LCD_R
31429     BIC.B #$0F,&$224
31430     BIS.B #1,&$243
31431 COLON
31432     TOP_LCD 2 20_us
31433     TOP_LCD 2 20_us
31434 HI2LO
31435     RLAM #4,0(R15)
31436     ADD.B @R15+,R14
31437     MOV @R1+,R13
31438     MOV @R13+,R0
31439 ENDCODE
31440
31441
31442 CODE LCD_RdS
31443     BIC.B #2,&$243
31444     JMP LCD_R
31445 ENDCODE
31446
31447
31448 CODE LCD_RdC
31449     BIS.B #2,&$243
31450     JMP LCD_R
31451 ENDCODE
31452
31453
31454
31455 ASM WDT_INT
31456 BIT.B #$20,&$240
31457 0= IF
31458     CMP #19,&$3D6
31459     U< IF
31460         ADD #1,&$3D6
31461     THEN
31462 ELSE
31463     BIT.B #$40,&$240
31464     0= IF
31465         CMP #3,&$3D6
31466         U>= IF
31467            SUB #1,&$3D6
31468         THEN
31469     THEN
31470 THEN
31471 BW1
31472 BW2
31473 BW3
31474 BIC #$78,0(R1)
31475 RETI
31476 ENDASM
31477
31478
31479 ASM RC5_INT
31480   MOV #1,&$3A0
31481 MOV #1778,R9
31482 MOV #14,R10
31483 BEGIN
31484 MOV #%1011100100,&$380
31485     RRUM    #1,R9
31486     MOV     R9,R8
31487     RRUM    #1,R8
31488     ADD     R9,R8
31489     BEGIN   CMP R8,&$390
31490     U>= UNTIL
31491     BIT.B   #4,&$200
31492     ADDC    R11,R11
31493     MOV.B   &$200,&$208
31494     BIC.B   #4,&$20C
31495     SUB     #1,R10
31496 0<> WHILE
31497     ADD R9,R8
31498     BEGIN
31499         MOV &$390,R9
31500         CMP R8,R9
31501         U>= IF
31502         BIC #$30,&$380
31503         GOTO BW1
31504         THEN
31505         BIT.B #4,&$20C
31506     0<> UNTIL
31507 REPEAT
31508 BIC #$30,&$380
31509 RLAM    #1,R11
31510 MOV.B   R11,R9
31511 RRUM    #2,R9
31512 BIT     #$4000,R11
31513 0= IF   BIS #$40,R9
31514 THEN
31515 RRUM    #3,R11
31516 XOR     @R1,R11
31517 BIT     #$400,R11
31518 0= ?GOTO BW2
31519 XOR #$400,0(R1)
31520 SUB #4,R15
31521 MOV &BASE,2(R15)
31522 MOV #$10,&BASE
31523 MOV R14,0(R15)
31524 MOV R9,R14
31525 LO2HI
31526     ['] LCD_CLEAR IS CR
31527     ['] LCD_WrC  IS EMIT
31528     CR ." $" 2 U.R
31529     ['] CR >BODY IS CR
31530     ['] EMIT >BODY IS EMIT
31531 HI2LO
31532 MOV R14,&BASE
31533 MOV @R15+,R14
31534 GOTO BW3
31535 ENDASM
31536
31537
31538 ASM BACKGROUND
31539 MOV #SLEEP,R9
31540 ADD #4,R9
31541 MOV R9,R0
31542 ENDASM
31543
31544
31545 CODE START
31546     MOV #%1011010100,&$3C0
31547     MOV #1,&$3E0
31548     MOV #19,&$3D2
31549     MOV #%01100000,&$3C6
31550     MOV #10,&$3D6
31551     BIS.B #$20,&$204
31552     BIS.B #$20,&$20A
31553     BIS.B #7,&$245
31554     BIC.B #7,&$247
31555     BIS.B #$0F,&$224
31556     BIC.B #$0F,&$226
31557     BIS.B #4,&$20A
31558     BIC.B #4,&$20C
31559     MOV #RC5_INT,&$FFDE
31560     MOV #%0100010100,&$340
31561     MOV ##1638,&$352
31562     MOV #%10000,&$342
31563     MOV #WDT_INT,&$FFEA
31564
31565     MOV #SLEEP,R9
31566     MOV #BACKGROUND,2(R9)
31567
31568 LO2HI
31569
31570     $03E8 20_US
31571     $03 TOP_LCD
31572     $CD 20_US
31573     $03 TOP_LCD
31574     $5 20_US
31575     $03 TOP_LCD
31576     $2 20_US
31577     $02 TOP_LCD
31578     $2 20_US
31579     $28 LCD_WRF
31580     $08 LCD_WRF
31581     LCD_Clear
31582     $06 LCD_WRF
31583     $0C LCD_WRF
31584     LCD_Clear
31585     ['] LCD_HOME IS CR
31586     ['] LCD_WRC  IS EMIT
31587     CR ." I love you"   
31588     ['] CR >BODY IS CR
31589     ['] EMIT >BODY IS EMIT
31590     ." RC5toLCD is running. Type STOP to quit"
31591     LIT RECURSE IS WARM
31592     ABORT
31593 ;
31594
31595
31596 CODE STOP
31597     MOV #SLEEP,R9
31598     ADD #4,R9
31599     MOV R9,-2(R9)
31600
31601 COLON
31602     ['] WARM >BODY IS WARM
31603
31604     COLD
31605 ;
31606
31607
31608
31609             ; downloading RC5toLCD.4th is done
31610 RST_HERE    ; this app is protected against <reset>
31611
31612 [THEN]
31613
31614
31615
31616
31617
31618 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
31619
31620 [DEFINED] ASM [IF]
31621
31622 MARKER {RC5TOLCD}
31623
31624 [UNDEFINED] MAX [IF]
31625
31626 CODE MAX
31627     CMP @R15,R14
31628     S<  ?GOTO FW1
31629 BW1 ADD #2,R15
31630     MOV @R13+,R0
31631 ENDCODE
31632
31633
31634 CODE MIN
31635     CMP @R15,R14
31636     S<  ?GOTO BW1
31637 FW1 MOV @R15+,R14
31638     MOV @R13+,R0
31639 ENDCODE
31640
31641 [THEN]
31642
31643
31644 [UNDEFINED] U.R [IF]
31645 : U.R
31646   >R  <# 0 # #S #>  
31647   R> OVER - 0 MAX SPACES TYPE
31648 ;
31649 [THEN]
31650
31651
31652
31653 CODE 20_US
31654 BEGIN
31655     BEGIN
31656         BIT #1,&$3C0
31657     0<> UNTIL
31658     BIC #1,&$3C0
31659     SUB #1,R14
31660 U< UNTIL
31661 MOV @R15+,R14
31662 MOV @R13+,R0
31663 ENDCODE
31664
31665
31666 CODE TOP_LCD
31667     BIS.B #4,&$243
31668     BIT.B #1,&$241
31669 0= IF
31670     AND.B #$0F,R14
31671     MOV.B R14,&$222
31672     BIC.B #4,&$243
31673     MOV @R15+,R14
31674     MOV @R13+,R0
31675 THEN
31676     SUB #2,R15
31677     MOV R14,0(R15)
31678     BIC.B #4,&$243
31679     MOV.B &$220,R14
31680     AND.B #$0F,R14
31681     MOV @R13+,R0
31682 ENDCODE
31683
31684
31685 CODE LCD_W
31686     SUB #2,R15
31687     MOV R14,0(R15)
31688     RRUM #4,R14
31689     BIC.B #1,&$243
31690     BIS.B #$0F,&$224
31691 COLON
31692     TOP_LCD 2 20_US
31693     TOP_LCD 2 20_US 
31694 ;
31695
31696
31697 CODE LCD_WrC
31698     BIS.B #2,&$243
31699     JMP LCD_W 
31700 ENDCODE
31701
31702
31703 CODE LCD_WrF
31704     BIC.B #2,&$243
31705     JMP LCD_W 
31706 ENDCODE
31707
31708
31709 : LCD_Clear 
31710     $01 LCD_WrF 100 20_us
31711 ;
31712
31713
31714 : LCD_Home 
31715     $02 LCD_WrF 100 20_us 
31716 ;
31717
31718
31719 [UNDEFINED] OR [IF]
31720
31721 CODE OR
31722 BIS @R15+,R14
31723 MOV @R13+,R0
31724 ENDCODE
31725
31726
31727 [THEN]
31728
31729 : LCD_Entry_set     $04 OR LCD_WrF ;
31730
31731 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
31732
31733 : LCD_DSP_Shift     $10 OR LCD_WrF ;
31734
31735 : LCD_Fn_Set        $20 OR LCD_WrF ;
31736
31737 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
31738
31739 : LCD_Goto          $80 OR LCD_WrF ;
31740
31741 CODE LCD_R
31742     BIC.B #$0F,&$224
31743     BIS.B #1,&$243
31744 COLON
31745     TOP_LCD 2 20_us
31746     TOP_LCD 2 20_us
31747 HI2LO
31748     RLAM #4,0(R15)
31749     ADD.B @R15+,R14
31750     MOV @R1+,R13
31751     MOV @R13+,R0
31752 ENDCODE
31753
31754
31755 CODE LCD_RdS
31756     BIC.B #2,&$243
31757     JMP LCD_R
31758 ENDCODE
31759
31760
31761 CODE LCD_RdC
31762     BIS.B #2,&$243
31763     JMP LCD_R
31764 ENDCODE
31765
31766
31767
31768 ASM WDT_INT
31769 BIT.B #$20,&$240
31770 0= IF
31771     CMP #19,&$3D6
31772     U< IF
31773         ADD #1,&$3D6
31774     THEN
31775 ELSE
31776     BIT.B #$40,&$240
31777     0= IF
31778         CMP #3,&$3D6
31779         U>= IF
31780            SUB #1,&$3D6
31781         THEN
31782     THEN
31783 THEN
31784 BW1
31785 BW2
31786 BW3
31787 BIC #$78,0(R1)
31788 RETI
31789 ENDASM
31790
31791
31792 ASM RC5_INT
31793   MOV #1,&$3A0
31794 MOV #1778,R9
31795 MOV #14,R10
31796 BEGIN
31797 MOV #%1011100100,&$380
31798     RRUM    #1,R9
31799     MOV     R9,R8
31800     RRUM    #1,R8
31801     ADD     R9,R8
31802     BEGIN   CMP R8,&$390
31803     U>= UNTIL
31804     BIT.B   #4,&$200
31805     ADDC    R11,R11
31806     MOV.B   &$200,&$208
31807     BIC.B   #4,&$20C
31808     SUB     #1,R10
31809 0<> WHILE
31810     ADD R9,R8
31811     BEGIN
31812         MOV &$390,R9
31813         CMP R8,R9
31814         U>= IF
31815         BIC #$30,&$380
31816         GOTO BW1
31817         THEN
31818         BIT.B #4,&$20C
31819     0<> UNTIL
31820 REPEAT
31821 BIC #$30,&$380
31822 RLAM    #1,R11
31823 MOV.B   R11,R9
31824 RRUM    #2,R9
31825 BIT     #$4000,R11
31826 0= IF   BIS #$40,R9
31827 THEN
31828 RRUM    #3,R11
31829 XOR     @R1,R11
31830 BIT     #$400,R11
31831 0= ?GOTO BW2
31832 XOR #$400,0(R1)
31833 SUB #4,R15
31834 MOV &BASE,2(R15)
31835 MOV #$10,&BASE
31836 MOV R14,0(R15)
31837 MOV R9,R14
31838 LO2HI
31839     ['] LCD_CLEAR IS CR
31840     ['] LCD_WrC  IS EMIT
31841     CR ." $" 2 U.R
31842     ['] CR >BODY IS CR
31843     ['] EMIT >BODY IS EMIT
31844 HI2LO
31845 MOV R14,&BASE
31846 MOV @R15+,R14
31847 GOTO BW3
31848 ENDASM
31849
31850
31851 ASM BACKGROUND
31852 MOV #SLEEP,R9
31853 ADD #4,R9
31854 MOV R9,R0
31855 ENDASM
31856
31857
31858 CODE START
31859     MOV #%1011010100,&$3C0
31860     MOV #1,&$3E0
31861     MOV #19,&$3D2
31862     MOV #%01100000,&$3C6
31863     MOV #10,&$3D6
31864     BIS.B #$20,&$204
31865     BIS.B #$20,&$20A
31866     BIS.B #7,&$245
31867     BIC.B #7,&$247
31868     BIS.B #$0F,&$224
31869     BIC.B #$0F,&$226
31870     BIS.B #4,&$20A
31871     BIC.B #4,&$20C
31872     MOV #RC5_INT,&$FFDE
31873     MOV #%0100010100,&$340
31874     MOV ##1638,&$352
31875     MOV #%10000,&$342
31876     MOV #WDT_INT,&$FFEA
31877
31878     MOV #SLEEP,R9
31879     MOV #BACKGROUND,2(R9)
31880
31881 LO2HI
31882
31883     $03E8 20_US
31884     $03 TOP_LCD
31885     $CD 20_US
31886     $03 TOP_LCD
31887     $5 20_US
31888     $03 TOP_LCD
31889     $2 20_US
31890     $02 TOP_LCD
31891     $2 20_US
31892     $28 LCD_WRF
31893     $08 LCD_WRF
31894     LCD_Clear
31895     $06 LCD_WRF
31896     $0C LCD_WRF
31897     LCD_Clear
31898     ['] LCD_HOME IS CR
31899     ['] LCD_WRC  IS EMIT
31900     CR ." I love you"   
31901     ['] CR >BODY IS CR
31902     ['] EMIT >BODY IS EMIT
31903     ." RC5toLCD is running. Type STOP to quit"
31904     LIT RECURSE IS WARM
31905     ABORT
31906 ;
31907
31908
31909 CODE STOP
31910     MOV #SLEEP,R9
31911     ADD #4,R9
31912     MOV R9,-2(R9)
31913
31914 COLON
31915     ['] WARM >BODY IS WARM
31916
31917     COLD
31918 ;
31919
31920
31921
31922             ; downloading RC5toLCD.4th is done
31923 RST_HERE    ; this app is protected against <reset>
31924
31925 [THEN]
31926
31927
31928
31929
31930
31931 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
31932
31933 [DEFINED] ASM [IF]
31934
31935 MARKER {RC5TOLCD}
31936
31937 [UNDEFINED] MAX [IF]
31938
31939 CODE MAX
31940     CMP @R15,R14
31941     S<  ?GOTO FW1
31942 BW1 ADD #2,R15
31943     MOV @R13+,R0
31944 ENDCODE
31945
31946
31947 CODE MIN
31948     CMP @R15,R14
31949     S<  ?GOTO BW1
31950 FW1 MOV @R15+,R14
31951     MOV @R13+,R0
31952 ENDCODE
31953
31954 [THEN]
31955
31956
31957 [UNDEFINED] U.R [IF]
31958 : U.R
31959   >R  <# 0 # #S #>  
31960   R> OVER - 0 MAX SPACES TYPE
31961 ;
31962 [THEN]
31963
31964
31965
31966 CODE 20_US
31967 BEGIN
31968     BEGIN
31969         BIT #1,&$3C0
31970     0<> UNTIL
31971     BIC #1,&$3C0
31972     SUB #1,R14
31973 U< UNTIL
31974 MOV @R15+,R14
31975 MOV @R13+,R0
31976 ENDCODE
31977
31978
31979 CODE TOP_LCD
31980     BIS.B #4,&$243
31981     BIT.B #1,&$241
31982 0= IF
31983     AND.B #$0F,R14
31984     MOV.B R14,&$222
31985     BIC.B #4,&$243
31986     MOV @R15+,R14
31987     MOV @R13+,R0
31988 THEN
31989     SUB #2,R15
31990     MOV R14,0(R15)
31991     BIC.B #4,&$243
31992     MOV.B &$220,R14
31993     AND.B #$0F,R14
31994     MOV @R13+,R0
31995 ENDCODE
31996
31997
31998 CODE LCD_W
31999     SUB #2,R15
32000     MOV R14,0(R15)
32001     RRUM #4,R14
32002     BIC.B #1,&$243
32003     BIS.B #$0F,&$224
32004 COLON
32005     TOP_LCD 2 20_US
32006     TOP_LCD 2 20_US 
32007 ;
32008
32009
32010 CODE LCD_WrC
32011     BIS.B #2,&$243
32012     JMP LCD_W 
32013 ENDCODE
32014
32015
32016 CODE LCD_WrF
32017     BIC.B #2,&$243
32018     JMP LCD_W 
32019 ENDCODE
32020
32021
32022 : LCD_Clear 
32023     $01 LCD_WrF 100 20_us
32024 ;
32025
32026
32027 : LCD_Home 
32028     $02 LCD_WrF 100 20_us 
32029 ;
32030
32031
32032 [UNDEFINED] OR [IF]
32033
32034 CODE OR
32035 BIS @R15+,R14
32036 MOV @R13+,R0
32037 ENDCODE
32038
32039
32040 [THEN]
32041
32042 : LCD_Entry_set     $04 OR LCD_WrF ;
32043
32044 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
32045
32046 : LCD_DSP_Shift     $10 OR LCD_WrF ;
32047
32048 : LCD_Fn_Set        $20 OR LCD_WrF ;
32049
32050 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
32051
32052 : LCD_Goto          $80 OR LCD_WrF ;
32053
32054 CODE LCD_R
32055     BIC.B #$0F,&$224
32056     BIS.B #1,&$243
32057 COLON
32058     TOP_LCD 2 20_us
32059     TOP_LCD 2 20_us
32060 HI2LO
32061     RLAM #4,0(R15)
32062     ADD.B @R15+,R14
32063     MOV @R1+,R13
32064     MOV @R13+,R0
32065 ENDCODE
32066
32067
32068 CODE LCD_RdS
32069     BIC.B #2,&$243
32070     JMP LCD_R
32071 ENDCODE
32072
32073
32074 CODE LCD_RdC
32075     BIS.B #2,&$243
32076     JMP LCD_R
32077 ENDCODE
32078
32079
32080
32081 ASM WDT_INT
32082 BIT.B #$20,&$240
32083 0= IF
32084     CMP #19,&$3D6
32085     U< IF
32086         ADD #1,&$3D6
32087     THEN
32088 ELSE
32089     BIT.B #$40,&$240
32090     0= IF
32091         CMP #3,&$3D6
32092         U>= IF
32093            SUB #1,&$3D6
32094         THEN
32095     THEN
32096 THEN
32097 BW1
32098 BW2
32099 BW3
32100 BIC #$78,0(R1)
32101 RETI
32102 ENDASM
32103
32104
32105 ASM RC5_INT
32106   MOV #1,&$3A0
32107 MOV #1778,R9
32108 MOV #14,R10
32109 BEGIN
32110 MOV #%1011100100,&$380
32111     RRUM    #1,R9
32112     MOV     R9,R8
32113     RRUM    #1,R8
32114     ADD     R9,R8
32115     BEGIN   CMP R8,&$390
32116     U>= UNTIL
32117     BIT.B   #4,&$200
32118     ADDC    R11,R11
32119     MOV.B   &$200,&$208
32120     BIC.B   #4,&$20C
32121     SUB     #1,R10
32122 0<> WHILE
32123     ADD R9,R8
32124     BEGIN
32125         MOV &$390,R9
32126         CMP R8,R9
32127         U>= IF
32128         BIC #$30,&$380
32129         GOTO BW1
32130         THEN
32131         BIT.B #4,&$20C
32132     0<> UNTIL
32133 REPEAT
32134 BIC #$30,&$380
32135 RLAM    #1,R11
32136 MOV.B   R11,R9
32137 RRUM    #2,R9
32138 BIT     #$4000,R11
32139 0= IF   BIS #$40,R9
32140 THEN
32141 RRUM    #3,R11
32142 XOR     @R1,R11
32143 BIT     #$400,R11
32144 0= ?GOTO BW2
32145 XOR #$400,0(R1)
32146 SUB #4,R15
32147 MOV &BASE,2(R15)
32148 MOV #$10,&BASE
32149 MOV R14,0(R15)
32150 MOV R9,R14
32151 LO2HI
32152     ['] LCD_CLEAR IS CR
32153     ['] LCD_WrC  IS EMIT
32154     CR ." $" 2 U.R
32155     ['] CR >BODY IS CR
32156     ['] EMIT >BODY IS EMIT
32157 HI2LO
32158 MOV R14,&BASE
32159 MOV @R15+,R14
32160 GOTO BW3
32161 ENDASM
32162
32163
32164 ASM BACKGROUND
32165 MOV #SLEEP,R9
32166 ADD #4,R9
32167 MOV R9,R0
32168 ENDASM
32169
32170
32171 CODE START
32172     MOV #%1011010100,&$3C0
32173     MOV #1,&$3E0
32174     MOV #19,&$3D2
32175     MOV #%01100000,&$3C6
32176     MOV #10,&$3D6
32177     BIS.B #$20,&$204
32178     BIS.B #$20,&$20A
32179     BIS.B #7,&$245
32180     BIC.B #7,&$247
32181     BIS.B #$0F,&$224
32182     BIC.B #$0F,&$226
32183     BIS.B #4,&$20A
32184     BIC.B #4,&$20C
32185     MOV #RC5_INT,&$FFDE
32186     MOV #%0100010100,&$340
32187     MOV ##1638,&$352
32188     MOV #%10000,&$342
32189     MOV #WDT_INT,&$FFEA
32190
32191     MOV #SLEEP,R9
32192     MOV #BACKGROUND,2(R9)
32193
32194 LO2HI
32195
32196     $03E8 20_US
32197     $03 TOP_LCD
32198     $CD 20_US
32199     $03 TOP_LCD
32200     $5 20_US
32201     $03 TOP_LCD
32202     $2 20_US
32203     $02 TOP_LCD
32204     $2 20_US
32205     $28 LCD_WRF
32206     $08 LCD_WRF
32207     LCD_Clear
32208     $06 LCD_WRF
32209     $0C LCD_WRF
32210     LCD_Clear
32211     ['] LCD_HOME IS CR
32212     ['] LCD_WRC  IS EMIT
32213     CR ." I love you"   
32214     ['] CR >BODY IS CR
32215     ['] EMIT >BODY IS EMIT
32216     ." RC5toLCD is running. Type STOP to quit"
32217     LIT RECURSE IS WARM
32218     ABORT
32219 ;
32220
32221
32222 CODE STOP
32223     MOV #SLEEP,R9
32224     ADD #4,R9
32225     MOV R9,-2(R9)
32226
32227 COLON
32228     ['] WARM >BODY IS WARM
32229
32230     COLD
32231 ;
32232
32233
32234
32235             ; downloading RC5toLCD.4th is done
32236 RST_HERE    ; this app is protected against <reset>
32237
32238 [THEN]
32239
32240
32241
32242
32243
32244 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
32245
32246 [DEFINED] ASM [IF]
32247
32248 MARKER {RC5TOLCD}
32249
32250 [UNDEFINED] MAX [IF]
32251
32252 CODE MAX
32253     CMP @R15,R14
32254     S<  ?GOTO FW1
32255 BW1 ADD #2,R15
32256     MOV @R13+,R0
32257 ENDCODE
32258
32259
32260 CODE MIN
32261     CMP @R15,R14
32262     S<  ?GOTO BW1
32263 FW1 MOV @R15+,R14
32264     MOV @R13+,R0
32265 ENDCODE
32266
32267 [THEN]
32268
32269
32270 [UNDEFINED] U.R [IF]
32271 : U.R
32272   >R  <# 0 # #S #>  
32273   R> OVER - 0 MAX SPACES TYPE
32274 ;
32275 [THEN]
32276
32277
32278
32279 CODE 20_US
32280 BEGIN
32281     BEGIN
32282         BIT #1,&$3C0
32283     0<> UNTIL
32284     BIC #1,&$3C0
32285     SUB #1,R14
32286 U< UNTIL
32287 MOV @R15+,R14
32288 MOV @R13+,R0
32289 ENDCODE
32290
32291
32292 CODE TOP_LCD
32293     BIS.B #4,&$243
32294     BIT.B #1,&$241
32295 0= IF
32296     AND.B #$0F,R14
32297     MOV.B R14,&$222
32298     BIC.B #4,&$243
32299     MOV @R15+,R14
32300     MOV @R13+,R0
32301 THEN
32302     SUB #2,R15
32303     MOV R14,0(R15)
32304     BIC.B #4,&$243
32305     MOV.B &$220,R14
32306     AND.B #$0F,R14
32307     MOV @R13+,R0
32308 ENDCODE
32309
32310
32311 CODE LCD_W
32312     SUB #2,R15
32313     MOV R14,0(R15)
32314     RRUM #4,R14
32315     BIC.B #1,&$243
32316     BIS.B #$0F,&$224
32317 COLON
32318     TOP_LCD 2 20_US
32319     TOP_LCD 2 20_US 
32320 ;
32321
32322
32323 CODE LCD_WrC
32324     BIS.B #2,&$243
32325     JMP LCD_W 
32326 ENDCODE
32327
32328
32329 CODE LCD_WrF
32330     BIC.B #2,&$243
32331     JMP LCD_W 
32332 ENDCODE
32333
32334
32335 : LCD_Clear 
32336     $01 LCD_WrF 100 20_us
32337 ;
32338
32339
32340 : LCD_Home 
32341     $02 LCD_WrF 100 20_us 
32342 ;
32343
32344
32345 [UNDEFINED] OR [IF]
32346
32347 CODE OR
32348 BIS @R15+,R14
32349 MOV @R13+,R0
32350 ENDCODE
32351
32352
32353 [THEN]
32354
32355 : LCD_Entry_set     $04 OR LCD_WrF ;
32356
32357 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
32358
32359 : LCD_DSP_Shift     $10 OR LCD_WrF ;
32360
32361 : LCD_Fn_Set        $20 OR LCD_WrF ;
32362
32363 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
32364
32365 : LCD_Goto          $80 OR LCD_WrF ;
32366
32367 CODE LCD_R
32368     BIC.B #$0F,&$224
32369     BIS.B #1,&$243
32370 COLON
32371     TOP_LCD 2 20_us
32372     TOP_LCD 2 20_us
32373 HI2LO
32374     RLAM #4,0(R15)
32375     ADD.B @R15+,R14
32376     MOV @R1+,R13
32377     MOV @R13+,R0
32378 ENDCODE
32379
32380
32381 CODE LCD_RdS
32382     BIC.B #2,&$243
32383     JMP LCD_R
32384 ENDCODE
32385
32386
32387 CODE LCD_RdC
32388     BIS.B #2,&$243
32389     JMP LCD_R
32390 ENDCODE
32391
32392
32393
32394 ASM WDT_INT
32395 BIT.B #$20,&$240
32396 0= IF
32397     CMP #19,&$3D6
32398     U< IF
32399         ADD #1,&$3D6
32400     THEN
32401 ELSE
32402     BIT.B #$40,&$240
32403     0= IF
32404         CMP #3,&$3D6
32405         U>= IF
32406            SUB #1,&$3D6
32407         THEN
32408     THEN
32409 THEN
32410 BW1
32411 BW2
32412 BW3
32413 BIC #$78,0(R1)
32414 RETI
32415 ENDASM
32416
32417
32418 ASM RC5_INT
32419   MOV #1,&$3A0
32420 MOV #1778,R9
32421 MOV #14,R10
32422 BEGIN
32423 MOV #%1011100100,&$380
32424     RRUM    #1,R9
32425     MOV     R9,R8
32426     RRUM    #1,R8
32427     ADD     R9,R8
32428     BEGIN   CMP R8,&$390
32429     U>= UNTIL
32430     BIT.B   #4,&$200
32431     ADDC    R11,R11
32432     MOV.B   &$200,&$208
32433     BIC.B   #4,&$20C
32434     SUB     #1,R10
32435 0<> WHILE
32436     ADD R9,R8
32437     BEGIN
32438         MOV &$390,R9
32439         CMP R8,R9
32440         U>= IF
32441         BIC #$30,&$380
32442         GOTO BW1
32443         THEN
32444         BIT.B #4,&$20C
32445     0<> UNTIL
32446 REPEAT
32447 BIC #$30,&$380
32448 RLAM    #1,R11
32449 MOV.B   R11,R9
32450 RRUM    #2,R9
32451 BIT     #$4000,R11
32452 0= IF   BIS #$40,R9
32453 THEN
32454 RRUM    #3,R11
32455 XOR     @R1,R11
32456 BIT     #$400,R11
32457 0= ?GOTO BW2
32458 XOR #$400,0(R1)
32459 SUB #4,R15
32460 MOV &BASE,2(R15)
32461 MOV #$10,&BASE
32462 MOV R14,0(R15)
32463 MOV R9,R14
32464 LO2HI
32465     ['] LCD_CLEAR IS CR
32466     ['] LCD_WrC  IS EMIT
32467     CR ." $" 2 U.R
32468     ['] CR >BODY IS CR
32469     ['] EMIT >BODY IS EMIT
32470 HI2LO
32471 MOV R14,&BASE
32472 MOV @R15+,R14
32473 GOTO BW3
32474 ENDASM
32475
32476
32477 ASM BACKGROUND
32478 MOV #SLEEP,R9
32479 ADD #4,R9
32480 MOV R9,R0
32481 ENDASM
32482
32483
32484 CODE START
32485     MOV #%1011010100,&$3C0
32486     MOV #1,&$3E0
32487     MOV #19,&$3D2
32488     MOV #%01100000,&$3C6
32489     MOV #10,&$3D6
32490     BIS.B #$20,&$204
32491     BIS.B #$20,&$20A
32492     BIS.B #7,&$245
32493     BIC.B #7,&$247
32494     BIS.B #$0F,&$224
32495     BIC.B #$0F,&$226
32496     BIS.B #4,&$20A
32497     BIC.B #4,&$20C
32498     MOV #RC5_INT,&$FFDE
32499     MOV #%0100010100,&$340
32500     MOV ##1638,&$352
32501     MOV #%10000,&$342
32502     MOV #WDT_INT,&$FFEA
32503
32504     MOV #SLEEP,R9
32505     MOV #BACKGROUND,2(R9)
32506
32507 LO2HI
32508
32509     $03E8 20_US
32510     $03 TOP_LCD
32511     $CD 20_US
32512     $03 TOP_LCD
32513     $5 20_US
32514     $03 TOP_LCD
32515     $2 20_US
32516     $02 TOP_LCD
32517     $2 20_US
32518     $28 LCD_WRF
32519     $08 LCD_WRF
32520     LCD_Clear
32521     $06 LCD_WRF
32522     $0C LCD_WRF
32523     LCD_Clear
32524     ['] LCD_HOME IS CR
32525     ['] LCD_WRC  IS EMIT
32526     CR ." I love you"   
32527     ['] CR >BODY IS CR
32528     ['] EMIT >BODY IS EMIT
32529     ." RC5toLCD is running. Type STOP to quit"
32530     LIT RECURSE IS WARM
32531     ABORT
32532 ;
32533
32534
32535 CODE STOP
32536     MOV #SLEEP,R9
32537     ADD #4,R9
32538     MOV R9,-2(R9)
32539
32540 COLON
32541     ['] WARM >BODY IS WARM
32542
32543     COLD
32544 ;
32545
32546
32547
32548             ; downloading RC5toLCD.4th is done
32549 RST_HERE    ; this app is protected against <reset>
32550
32551 [THEN]
32552
32553
32554
32555
32556
32557 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
32558
32559 [DEFINED] ASM [IF]
32560
32561 MARKER {RC5TOLCD}
32562
32563 [UNDEFINED] MAX [IF]
32564
32565 CODE MAX
32566     CMP @R15,R14
32567     S<  ?GOTO FW1
32568 BW1 ADD #2,R15
32569     MOV @R13+,R0
32570 ENDCODE
32571
32572
32573 CODE MIN
32574     CMP @R15,R14
32575     S<  ?GOTO BW1
32576 FW1 MOV @R15+,R14
32577     MOV @R13+,R0
32578 ENDCODE
32579
32580 [THEN]
32581
32582
32583 [UNDEFINED] U.R [IF]
32584 : U.R
32585   >R  <# 0 # #S #>  
32586   R> OVER - 0 MAX SPACES TYPE
32587 ;
32588 [THEN]
32589
32590
32591
32592 CODE 20_US
32593 BEGIN
32594     BEGIN
32595         BIT #1,&$3C0
32596     0<> UNTIL
32597     BIC #1,&$3C0
32598     SUB #1,R14
32599 U< UNTIL
32600 MOV @R15+,R14
32601 MOV @R13+,R0
32602 ENDCODE
32603
32604
32605 CODE TOP_LCD
32606     BIS.B #4,&$243
32607     BIT.B #1,&$241
32608 0= IF
32609     AND.B #$0F,R14
32610     MOV.B R14,&$222
32611     BIC.B #4,&$243
32612     MOV @R15+,R14
32613     MOV @R13+,R0
32614 THEN
32615     SUB #2,R15
32616     MOV R14,0(R15)
32617     BIC.B #4,&$243
32618     MOV.B &$220,R14
32619     AND.B #$0F,R14
32620     MOV @R13+,R0
32621 ENDCODE
32622
32623
32624 CODE LCD_W
32625     SUB #2,R15
32626     MOV R14,0(R15)
32627     RRUM #4,R14
32628     BIC.B #1,&$243
32629     BIS.B #$0F,&$224
32630 COLON
32631     TOP_LCD 2 20_US
32632     TOP_LCD 2 20_US 
32633 ;
32634
32635
32636 CODE LCD_WrC
32637     BIS.B #2,&$243
32638     JMP LCD_W 
32639 ENDCODE
32640
32641
32642 CODE LCD_WrF
32643     BIC.B #2,&$243
32644     JMP LCD_W 
32645 ENDCODE
32646
32647
32648 : LCD_Clear 
32649     $01 LCD_WrF 100 20_us
32650 ;
32651
32652
32653 : LCD_Home 
32654     $02 LCD_WrF 100 20_us 
32655 ;
32656
32657
32658 [UNDEFINED] OR [IF]
32659
32660 CODE OR
32661 BIS @R15+,R14
32662 MOV @R13+,R0
32663 ENDCODE
32664
32665
32666 [THEN]
32667
32668 : LCD_Entry_set     $04 OR LCD_WrF ;
32669
32670 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
32671
32672 : LCD_DSP_Shift     $10 OR LCD_WrF ;
32673
32674 : LCD_Fn_Set        $20 OR LCD_WrF ;
32675
32676 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
32677
32678 : LCD_Goto          $80 OR LCD_WrF ;
32679
32680 CODE LCD_R
32681     BIC.B #$0F,&$224
32682     BIS.B #1,&$243
32683 COLON
32684     TOP_LCD 2 20_us
32685     TOP_LCD 2 20_us
32686 HI2LO
32687     RLAM #4,0(R15)
32688     ADD.B @R15+,R14
32689     MOV @R1+,R13
32690     MOV @R13+,R0
32691 ENDCODE
32692
32693
32694 CODE LCD_RdS
32695     BIC.B #2,&$243
32696     JMP LCD_R
32697 ENDCODE
32698
32699
32700 CODE LCD_RdC
32701     BIS.B #2,&$243
32702     JMP LCD_R
32703 ENDCODE
32704
32705
32706
32707 ASM WDT_INT
32708 BIT.B #$20,&$240
32709 0= IF
32710     CMP #19,&$3D6
32711     U< IF
32712         ADD #1,&$3D6
32713     THEN
32714 ELSE
32715     BIT.B #$40,&$240
32716     0= IF
32717         CMP #3,&$3D6
32718         U>= IF
32719            SUB #1,&$3D6
32720         THEN
32721     THEN
32722 THEN
32723 BW1
32724 BW2
32725 BW3
32726 BIC #$78,0(R1)
32727 RETI
32728 ENDASM
32729
32730
32731 ASM RC5_INT
32732   MOV #1,&$3A0
32733 MOV #1778,R9
32734 MOV #14,R10
32735 BEGIN
32736 MOV #%1011100100,&$380
32737     RRUM    #1,R9
32738     MOV     R9,R8
32739     RRUM    #1,R8
32740     ADD     R9,R8
32741     BEGIN   CMP R8,&$390
32742     U>= UNTIL
32743     BIT.B   #4,&$200
32744     ADDC    R11,R11
32745     MOV.B   &$200,&$208
32746     BIC.B   #4,&$20C
32747     SUB     #1,R10
32748 0<> WHILE
32749     ADD R9,R8
32750     BEGIN
32751         MOV &$390,R9
32752         CMP R8,R9
32753         U>= IF
32754         BIC #$30,&$380
32755         GOTO BW1
32756         THEN
32757         BIT.B #4,&$20C
32758     0<> UNTIL
32759 REPEAT
32760 BIC #$30,&$380
32761 RLAM    #1,R11
32762 MOV.B   R11,R9
32763 RRUM    #2,R9
32764 BIT     #$4000,R11
32765 0= IF   BIS #$40,R9
32766 THEN
32767 RRUM    #3,R11
32768 XOR     @R1,R11
32769 BIT     #$400,R11
32770 0= ?GOTO BW2
32771 XOR #$400,0(R1)
32772 SUB #4,R15
32773 MOV &BASE,2(R15)
32774 MOV #$10,&BASE
32775 MOV R14,0(R15)
32776 MOV R9,R14
32777 LO2HI
32778     ['] LCD_CLEAR IS CR
32779     ['] LCD_WrC  IS EMIT
32780     CR ." $" 2 U.R
32781     ['] CR >BODY IS CR
32782     ['] EMIT >BODY IS EMIT
32783 HI2LO
32784 MOV R14,&BASE
32785 MOV @R15+,R14
32786 GOTO BW3
32787 ENDASM
32788
32789
32790 ASM BACKGROUND
32791 MOV #SLEEP,R9
32792 ADD #4,R9
32793 MOV R9,R0
32794 ENDASM
32795
32796
32797 CODE START
32798     MOV #%1011010100,&$3C0
32799     MOV #1,&$3E0
32800     MOV #19,&$3D2
32801     MOV #%01100000,&$3C6
32802     MOV #10,&$3D6
32803     BIS.B #$20,&$204
32804     BIS.B #$20,&$20A
32805     BIS.B #7,&$245
32806     BIC.B #7,&$247
32807     BIS.B #$0F,&$224
32808     BIC.B #$0F,&$226
32809     BIS.B #4,&$20A
32810     BIC.B #4,&$20C
32811     MOV #RC5_INT,&$FFDE
32812     MOV #%0100010100,&$340
32813     MOV ##1638,&$352
32814     MOV #%10000,&$342
32815     MOV #WDT_INT,&$FFEA
32816
32817     MOV #SLEEP,R9
32818     MOV #BACKGROUND,2(R9)
32819
32820 LO2HI
32821
32822     $03E8 20_US
32823     $03 TOP_LCD
32824     $CD 20_US
32825     $03 TOP_LCD
32826     $5 20_US
32827     $03 TOP_LCD
32828     $2 20_US
32829     $02 TOP_LCD
32830     $2 20_US
32831     $28 LCD_WRF
32832     $08 LCD_WRF
32833     LCD_Clear
32834     $06 LCD_WRF
32835     $0C LCD_WRF
32836     LCD_Clear
32837     ['] LCD_HOME IS CR
32838     ['] LCD_WRC  IS EMIT
32839     CR ." I love you"   
32840     ['] CR >BODY IS CR
32841     ['] EMIT >BODY IS EMIT
32842     ." RC5toLCD is running. Type STOP to quit"
32843     LIT RECURSE IS WARM
32844     ABORT
32845 ;
32846
32847
32848 CODE STOP
32849     MOV #SLEEP,R9
32850     ADD #4,R9
32851     MOV R9,-2(R9)
32852
32853 COLON
32854     ['] WARM >BODY IS WARM
32855
32856     COLD
32857 ;
32858
32859
32860
32861             ; downloading RC5toLCD.4th is done
32862 RST_HERE    ; this app is protected against <reset>
32863
32864 [THEN]
32865
32866
32867
32868
32869
32870 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
32871
32872 [DEFINED] ASM [IF]
32873
32874 MARKER {RC5TOLCD}
32875
32876 [UNDEFINED] MAX [IF]
32877
32878 CODE MAX
32879     CMP @R15,R14
32880     S<  ?GOTO FW1
32881 BW1 ADD #2,R15
32882     MOV @R13+,R0
32883 ENDCODE
32884
32885
32886 CODE MIN
32887     CMP @R15,R14
32888     S<  ?GOTO BW1
32889 FW1 MOV @R15+,R14
32890     MOV @R13+,R0
32891 ENDCODE
32892
32893 [THEN]
32894
32895
32896 [UNDEFINED] U.R [IF]
32897 : U.R
32898   >R  <# 0 # #S #>  
32899   R> OVER - 0 MAX SPACES TYPE
32900 ;
32901 [THEN]
32902
32903
32904
32905 CODE 20_US
32906 BEGIN
32907     BEGIN
32908         BIT #1,&$3C0
32909     0<> UNTIL
32910     BIC #1,&$3C0
32911     SUB #1,R14
32912 U< UNTIL
32913 MOV @R15+,R14
32914 MOV @R13+,R0
32915 ENDCODE
32916
32917
32918 CODE TOP_LCD
32919     BIS.B #4,&$243
32920     BIT.B #1,&$241
32921 0= IF
32922     AND.B #$0F,R14
32923     MOV.B R14,&$222
32924     BIC.B #4,&$243
32925     MOV @R15+,R14
32926     MOV @R13+,R0
32927 THEN
32928     SUB #2,R15
32929     MOV R14,0(R15)
32930     BIC.B #4,&$243
32931     MOV.B &$220,R14
32932     AND.B #$0F,R14
32933     MOV @R13+,R0
32934 ENDCODE
32935
32936
32937 CODE LCD_W
32938     SUB #2,R15
32939     MOV R14,0(R15)
32940     RRUM #4,R14
32941     BIC.B #1,&$243
32942     BIS.B #$0F,&$224
32943 COLON
32944     TOP_LCD 2 20_US
32945     TOP_LCD 2 20_US 
32946 ;
32947
32948
32949 CODE LCD_WrC
32950     BIS.B #2,&$243
32951     JMP LCD_W 
32952 ENDCODE
32953
32954
32955 CODE LCD_WrF
32956     BIC.B #2,&$243
32957     JMP LCD_W 
32958 ENDCODE
32959
32960
32961 : LCD_Clear 
32962     $01 LCD_WrF 100 20_us
32963 ;
32964
32965
32966 : LCD_Home 
32967     $02 LCD_WrF 100 20_us 
32968 ;
32969
32970
32971 [UNDEFINED] OR [IF]
32972
32973 CODE OR
32974 BIS @R15+,R14
32975 MOV @R13+,R0
32976 ENDCODE
32977
32978
32979 [THEN]
32980
32981 : LCD_Entry_set     $04 OR LCD_WrF ;
32982
32983 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
32984
32985 : LCD_DSP_Shift     $10 OR LCD_WrF ;
32986
32987 : LCD_Fn_Set        $20 OR LCD_WrF ;
32988
32989 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
32990
32991 : LCD_Goto          $80 OR LCD_WrF ;
32992
32993 CODE LCD_R
32994     BIC.B #$0F,&$224
32995     BIS.B #1,&$243
32996 COLON
32997     TOP_LCD 2 20_us
32998     TOP_LCD 2 20_us
32999 HI2LO
33000     RLAM #4,0(R15)
33001     ADD.B @R15+,R14
33002     MOV @R1+,R13
33003     MOV @R13+,R0
33004 ENDCODE
33005
33006
33007 CODE LCD_RdS
33008     BIC.B #2,&$243
33009     JMP LCD_R
33010 ENDCODE
33011
33012
33013 CODE LCD_RdC
33014     BIS.B #2,&$243
33015     JMP LCD_R
33016 ENDCODE
33017
33018
33019
33020 ASM WDT_INT
33021 BIT.B #$20,&$240
33022 0= IF
33023     CMP #19,&$3D6
33024     U< IF
33025         ADD #1,&$3D6
33026     THEN
33027 ELSE
33028     BIT.B #$40,&$240
33029     0= IF
33030         CMP #3,&$3D6
33031         U>= IF
33032            SUB #1,&$3D6
33033         THEN
33034     THEN
33035 THEN
33036 BW1
33037 BW2
33038 BW3
33039 BIC #$78,0(R1)
33040 RETI
33041 ENDASM
33042
33043
33044 ASM RC5_INT
33045   MOV #1,&$3A0
33046 MOV #1778,R9
33047 MOV #14,R10
33048 BEGIN
33049 MOV #%1011100100,&$380
33050     RRUM    #1,R9
33051     MOV     R9,R8
33052     RRUM    #1,R8
33053     ADD     R9,R8
33054     BEGIN   CMP R8,&$390
33055     U>= UNTIL
33056     BIT.B   #4,&$200
33057     ADDC    R11,R11
33058     MOV.B   &$200,&$208
33059     BIC.B   #4,&$20C
33060     SUB     #1,R10
33061 0<> WHILE
33062     ADD R9,R8
33063     BEGIN
33064         MOV &$390,R9
33065         CMP R8,R9
33066         U>= IF
33067         BIC #$30,&$380
33068         GOTO BW1
33069         THEN
33070         BIT.B #4,&$20C
33071     0<> UNTIL
33072 REPEAT
33073 BIC #$30,&$380
33074 RLAM    #1,R11
33075 MOV.B   R11,R9
33076 RRUM    #2,R9
33077 BIT     #$4000,R11
33078 0= IF   BIS #$40,R9
33079 THEN
33080 RRUM    #3,R11
33081 XOR     @R1,R11
33082 BIT     #$400,R11
33083 0= ?GOTO BW2
33084 XOR #$400,0(R1)
33085 SUB #4,R15
33086 MOV &BASE,2(R15)
33087 MOV #$10,&BASE
33088 MOV R14,0(R15)
33089 MOV R9,R14
33090 LO2HI
33091     ['] LCD_CLEAR IS CR
33092     ['] LCD_WrC  IS EMIT
33093     CR ." $" 2 U.R
33094     ['] CR >BODY IS CR
33095     ['] EMIT >BODY IS EMIT
33096 HI2LO
33097 MOV R14,&BASE
33098 MOV @R15+,R14
33099 GOTO BW3
33100 ENDASM
33101
33102
33103 ASM BACKGROUND
33104 MOV #SLEEP,R9
33105 ADD #4,R9
33106 MOV R9,R0
33107 ENDASM
33108
33109
33110 CODE START
33111     MOV #%1011010100,&$3C0
33112     MOV #1,&$3E0
33113     MOV #19,&$3D2
33114     MOV #%01100000,&$3C6
33115     MOV #10,&$3D6
33116     BIS.B #$20,&$204
33117     BIS.B #$20,&$20A
33118     BIS.B #7,&$245
33119     BIC.B #7,&$247
33120     BIS.B #$0F,&$224
33121     BIC.B #$0F,&$226
33122     BIS.B #4,&$20A
33123     BIC.B #4,&$20C
33124     MOV #RC5_INT,&$FFDE
33125     MOV #%0100010100,&$340
33126     MOV ##1638,&$352
33127     MOV #%10000,&$342
33128     MOV #WDT_INT,&$FFEA
33129
33130     MOV #SLEEP,R9
33131     MOV #BACKGROUND,2(R9)
33132
33133 LO2HI
33134
33135     $03E8 20_US
33136     $03 TOP_LCD
33137     $CD 20_US
33138     $03 TOP_LCD
33139     $5 20_US
33140     $03 TOP_LCD
33141     $2 20_US
33142     $02 TOP_LCD
33143     $2 20_US
33144     $28 LCD_WRF
33145     $08 LCD_WRF
33146     LCD_Clear
33147     $06 LCD_WRF
33148     $0C LCD_WRF
33149     LCD_Clear
33150     ['] LCD_HOME IS CR
33151     ['] LCD_WRC  IS EMIT
33152     CR ." I love you"   
33153     ['] CR >BODY IS CR
33154     ['] EMIT >BODY IS EMIT
33155     ." RC5toLCD is running. Type STOP to quit"
33156     LIT RECURSE IS WARM
33157     ABORT
33158 ;
33159
33160
33161 CODE STOP
33162     MOV #SLEEP,R9
33163     ADD #4,R9
33164     MOV R9,-2(R9)
33165
33166 COLON
33167     ['] WARM >BODY IS WARM
33168
33169     COLD
33170 ;
33171
33172
33173
33174             ; downloading RC5toLCD.4th is done
33175 RST_HERE    ; this app is protected against <reset>
33176
33177 [THEN]
33178
33179
33180
33181
33182
33183 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
33184
33185 [DEFINED] ASM [IF]
33186
33187 MARKER {RC5TOLCD}
33188
33189 [UNDEFINED] MAX [IF]
33190
33191 CODE MAX
33192     CMP @R15,R14
33193     S<  ?GOTO FW1
33194 BW1 ADD #2,R15
33195     MOV @R13+,R0
33196 ENDCODE
33197
33198
33199 CODE MIN
33200     CMP @R15,R14
33201     S<  ?GOTO BW1
33202 FW1 MOV @R15+,R14
33203     MOV @R13+,R0
33204 ENDCODE
33205
33206 [THEN]
33207
33208
33209 [UNDEFINED] U.R [IF]
33210 : U.R
33211   >R  <# 0 # #S #>  
33212   R> OVER - 0 MAX SPACES TYPE
33213 ;
33214 [THEN]
33215
33216
33217
33218 CODE 20_US
33219 BEGIN
33220     BEGIN
33221         BIT #1,&$3C0
33222     0<> UNTIL
33223     BIC #1,&$3C0
33224     SUB #1,R14
33225 U< UNTIL
33226 MOV @R15+,R14
33227 MOV @R13+,R0
33228 ENDCODE
33229
33230
33231 CODE TOP_LCD
33232     BIS.B #4,&$243
33233     BIT.B #1,&$241
33234 0= IF
33235     AND.B #$0F,R14
33236     MOV.B R14,&$222
33237     BIC.B #4,&$243
33238     MOV @R15+,R14
33239     MOV @R13+,R0
33240 THEN
33241     SUB #2,R15
33242     MOV R14,0(R15)
33243     BIC.B #4,&$243
33244     MOV.B &$220,R14
33245     AND.B #$0F,R14
33246     MOV @R13+,R0
33247 ENDCODE
33248
33249
33250 CODE LCD_W
33251     SUB #2,R15
33252     MOV R14,0(R15)
33253     RRUM #4,R14
33254     BIC.B #1,&$243
33255     BIS.B #$0F,&$224
33256 COLON
33257     TOP_LCD 2 20_US
33258     TOP_LCD 2 20_US 
33259 ;
33260
33261
33262 CODE LCD_WrC
33263     BIS.B #2,&$243
33264     JMP LCD_W 
33265 ENDCODE
33266
33267
33268 CODE LCD_WrF
33269     BIC.B #2,&$243
33270     JMP LCD_W 
33271 ENDCODE
33272
33273
33274 : LCD_Clear 
33275     $01 LCD_WrF 100 20_us
33276 ;
33277
33278
33279 : LCD_Home 
33280     $02 LCD_WrF 100 20_us 
33281 ;
33282
33283
33284 [UNDEFINED] OR [IF]
33285
33286 CODE OR
33287 BIS @R15+,R14
33288 MOV @R13+,R0
33289 ENDCODE
33290
33291
33292 [THEN]
33293
33294 : LCD_Entry_set     $04 OR LCD_WrF ;
33295
33296 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
33297
33298 : LCD_DSP_Shift     $10 OR LCD_WrF ;
33299
33300 : LCD_Fn_Set        $20 OR LCD_WrF ;
33301
33302 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
33303
33304 : LCD_Goto          $80 OR LCD_WrF ;
33305
33306 CODE LCD_R
33307     BIC.B #$0F,&$224
33308     BIS.B #1,&$243
33309 COLON
33310     TOP_LCD 2 20_us
33311     TOP_LCD 2 20_us
33312 HI2LO
33313     RLAM #4,0(R15)
33314     ADD.B @R15+,R14
33315     MOV @R1+,R13
33316     MOV @R13+,R0
33317 ENDCODE
33318
33319
33320 CODE LCD_RdS
33321     BIC.B #2,&$243
33322     JMP LCD_R
33323 ENDCODE
33324
33325
33326 CODE LCD_RdC
33327     BIS.B #2,&$243
33328     JMP LCD_R
33329 ENDCODE
33330
33331
33332
33333 ASM WDT_INT
33334 BIT.B #$20,&$240
33335 0= IF
33336     CMP #19,&$3D6
33337     U< IF
33338         ADD #1,&$3D6
33339     THEN
33340 ELSE
33341     BIT.B #$40,&$240
33342     0= IF
33343         CMP #3,&$3D6
33344         U>= IF
33345            SUB #1,&$3D6
33346         THEN
33347     THEN
33348 THEN
33349 BW1
33350 BW2
33351 BW3
33352 BIC #$78,0(R1)
33353 RETI
33354 ENDASM
33355
33356
33357 ASM RC5_INT
33358   MOV #1,&$3A0
33359 MOV #1778,R9
33360 MOV #14,R10
33361 BEGIN
33362 MOV #%1011100100,&$380
33363     RRUM    #1,R9
33364     MOV     R9,R8
33365     RRUM    #1,R8
33366     ADD     R9,R8
33367     BEGIN   CMP R8,&$390
33368     U>= UNTIL
33369     BIT.B   #4,&$200
33370     ADDC    R11,R11
33371     MOV.B   &$200,&$208
33372     BIC.B   #4,&$20C
33373     SUB     #1,R10
33374 0<> WHILE
33375     ADD R9,R8
33376     BEGIN
33377         MOV &$390,R9
33378         CMP R8,R9
33379         U>= IF
33380         BIC #$30,&$380
33381         GOTO BW1
33382         THEN
33383         BIT.B #4,&$20C
33384     0<> UNTIL
33385 REPEAT
33386 BIC #$30,&$380
33387 RLAM    #1,R11
33388 MOV.B   R11,R9
33389 RRUM    #2,R9
33390 BIT     #$4000,R11
33391 0= IF   BIS #$40,R9
33392 THEN
33393 RRUM    #3,R11
33394 XOR     @R1,R11
33395 BIT     #$400,R11
33396 0= ?GOTO BW2
33397 XOR #$400,0(R1)
33398 SUB #4,R15
33399 MOV &BASE,2(R15)
33400 MOV #$10,&BASE
33401 MOV R14,0(R15)
33402 MOV R9,R14
33403 LO2HI
33404     ['] LCD_CLEAR IS CR
33405     ['] LCD_WrC  IS EMIT
33406     CR ." $" 2 U.R
33407     ['] CR >BODY IS CR
33408     ['] EMIT >BODY IS EMIT
33409 HI2LO
33410 MOV R14,&BASE
33411 MOV @R15+,R14
33412 GOTO BW3
33413 ENDASM
33414
33415
33416 ASM BACKGROUND
33417 MOV #SLEEP,R9
33418 ADD #4,R9
33419 MOV R9,R0
33420 ENDASM
33421
33422
33423 CODE START
33424     MOV #%1011010100,&$3C0
33425     MOV #1,&$3E0
33426     MOV #19,&$3D2
33427     MOV #%01100000,&$3C6
33428     MOV #10,&$3D6
33429     BIS.B #$20,&$204
33430     BIS.B #$20,&$20A
33431     BIS.B #7,&$245
33432     BIC.B #7,&$247
33433     BIS.B #$0F,&$224
33434     BIC.B #$0F,&$226
33435     BIS.B #4,&$20A
33436     BIC.B #4,&$20C
33437     MOV #RC5_INT,&$FFDE
33438     MOV #%0100010100,&$340
33439     MOV ##1638,&$352
33440     MOV #%10000,&$342
33441     MOV #WDT_INT,&$FFEA
33442
33443     MOV #SLEEP,R9
33444     MOV #BACKGROUND,2(R9)
33445
33446 LO2HI
33447
33448     $03E8 20_US
33449     $03 TOP_LCD
33450     $CD 20_US
33451     $03 TOP_LCD
33452     $5 20_US
33453     $03 TOP_LCD
33454     $2 20_US
33455     $02 TOP_LCD
33456     $2 20_US
33457     $28 LCD_WRF
33458     $08 LCD_WRF
33459     LCD_Clear
33460     $06 LCD_WRF
33461     $0C LCD_WRF
33462     LCD_Clear
33463     ['] LCD_HOME IS CR
33464     ['] LCD_WRC  IS EMIT
33465     CR ." I love you"   
33466     ['] CR >BODY IS CR
33467     ['] EMIT >BODY IS EMIT
33468     ." RC5toLCD is running. Type STOP to quit"
33469     LIT RECURSE IS WARM
33470     ABORT
33471 ;
33472
33473
33474 CODE STOP
33475     MOV #SLEEP,R9
33476     ADD #4,R9
33477     MOV R9,-2(R9)
33478
33479 COLON
33480     ['] WARM >BODY IS WARM
33481
33482     COLD
33483 ;
33484
33485
33486
33487             ; downloading RC5toLCD.4th is done
33488 RST_HERE    ; this app is protected against <reset>
33489
33490 [THEN]
33491
33492
33493
33494
33495
33496 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
33497
33498 [DEFINED] ASM [IF]
33499
33500 MARKER {RC5TOLCD}
33501
33502 [UNDEFINED] MAX [IF]
33503
33504 CODE MAX
33505     CMP @R15,R14
33506     S<  ?GOTO FW1
33507 BW1 ADD #2,R15
33508     MOV @R13+,R0
33509 ENDCODE
33510
33511
33512 CODE MIN
33513     CMP @R15,R14
33514     S<  ?GOTO BW1
33515 FW1 MOV @R15+,R14
33516     MOV @R13+,R0
33517 ENDCODE
33518
33519 [THEN]
33520
33521
33522 [UNDEFINED] U.R [IF]
33523 : U.R
33524   >R  <# 0 # #S #>  
33525   R> OVER - 0 MAX SPACES TYPE
33526 ;
33527 [THEN]
33528
33529
33530
33531 CODE 20_US
33532 BEGIN
33533     BEGIN
33534         BIT #1,&$3C0
33535     0<> UNTIL
33536     BIC #1,&$3C0
33537     SUB #1,R14
33538 U< UNTIL
33539 MOV @R15+,R14
33540 MOV @R13+,R0
33541 ENDCODE
33542
33543
33544 CODE TOP_LCD
33545     BIS.B #4,&$243
33546     BIT.B #1,&$241
33547 0= IF
33548     AND.B #$0F,R14
33549     MOV.B R14,&$222
33550     BIC.B #4,&$243
33551     MOV @R15+,R14
33552     MOV @R13+,R0
33553 THEN
33554     SUB #2,R15
33555     MOV R14,0(R15)
33556     BIC.B #4,&$243
33557     MOV.B &$220,R14
33558     AND.B #$0F,R14
33559     MOV @R13+,R0
33560 ENDCODE
33561
33562
33563 CODE LCD_W
33564     SUB #2,R15
33565     MOV R14,0(R15)
33566     RRUM #4,R14
33567     BIC.B #1,&$243
33568     BIS.B #$0F,&$224
33569 COLON
33570     TOP_LCD 2 20_US
33571     TOP_LCD 2 20_US 
33572 ;
33573
33574
33575 CODE LCD_WrC
33576     BIS.B #2,&$243
33577     JMP LCD_W 
33578 ENDCODE
33579
33580
33581 CODE LCD_WrF
33582     BIC.B #2,&$243
33583     JMP LCD_W 
33584 ENDCODE
33585
33586
33587 : LCD_Clear 
33588     $01 LCD_WrF 100 20_us
33589 ;
33590
33591
33592 : LCD_Home 
33593     $02 LCD_WrF 100 20_us 
33594 ;
33595
33596
33597 [UNDEFINED] OR [IF]
33598
33599 CODE OR
33600 BIS @R15+,R14
33601 MOV @R13+,R0
33602 ENDCODE
33603
33604
33605 [THEN]
33606
33607 : LCD_Entry_set     $04 OR LCD_WrF ;
33608
33609 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
33610
33611 : LCD_DSP_Shift     $10 OR LCD_WrF ;
33612
33613 : LCD_Fn_Set        $20 OR LCD_WrF ;
33614
33615 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
33616
33617 : LCD_Goto          $80 OR LCD_WrF ;
33618
33619 CODE LCD_R
33620     BIC.B #$0F,&$224
33621     BIS.B #1,&$243
33622 COLON
33623     TOP_LCD 2 20_us
33624     TOP_LCD 2 20_us
33625 HI2LO
33626     RLAM #4,0(R15)
33627     ADD.B @R15+,R14
33628     MOV @R1+,R13
33629     MOV @R13+,R0
33630 ENDCODE
33631
33632
33633 CODE LCD_RdS
33634     BIC.B #2,&$243
33635     JMP LCD_R
33636 ENDCODE
33637
33638
33639 CODE LCD_RdC
33640     BIS.B #2,&$243
33641     JMP LCD_R
33642 ENDCODE
33643
33644
33645
33646 ASM WDT_INT
33647 BIT.B #$20,&$240
33648 0= IF
33649     CMP #19,&$3D6
33650     U< IF
33651         ADD #1,&$3D6
33652     THEN
33653 ELSE
33654     BIT.B #$40,&$240
33655     0= IF
33656         CMP #3,&$3D6
33657         U>= IF
33658            SUB #1,&$3D6
33659         THEN
33660     THEN
33661 THEN
33662 BW1
33663 BW2
33664 BW3
33665 BIC #$78,0(R1)
33666 RETI
33667 ENDASM
33668
33669
33670 ASM RC5_INT
33671   MOV #1,&$3A0
33672 MOV #1778,R9
33673 MOV #14,R10
33674 BEGIN
33675 MOV #%1011100100,&$380
33676     RRUM    #1,R9
33677     MOV     R9,R8
33678     RRUM    #1,R8
33679     ADD     R9,R8
33680     BEGIN   CMP R8,&$390
33681     U>= UNTIL
33682     BIT.B   #4,&$200
33683     ADDC    R11,R11
33684     MOV.B   &$200,&$208
33685     BIC.B   #4,&$20C
33686     SUB     #1,R10
33687 0<> WHILE
33688     ADD R9,R8
33689     BEGIN
33690         MOV &$390,R9
33691         CMP R8,R9
33692         U>= IF
33693         BIC #$30,&$380
33694         GOTO BW1
33695         THEN
33696         BIT.B #4,&$20C
33697     0<> UNTIL
33698 REPEAT
33699 BIC #$30,&$380
33700 RLAM    #1,R11
33701 MOV.B   R11,R9
33702 RRUM    #2,R9
33703 BIT     #$4000,R11
33704 0= IF   BIS #$40,R9
33705 THEN
33706 RRUM    #3,R11
33707 XOR     @R1,R11
33708 BIT     #$400,R11
33709 0= ?GOTO BW2
33710 XOR #$400,0(R1)
33711 SUB #4,R15
33712 MOV &BASE,2(R15)
33713 MOV #$10,&BASE
33714 MOV R14,0(R15)
33715 MOV R9,R14
33716 LO2HI
33717     ['] LCD_CLEAR IS CR
33718     ['] LCD_WrC  IS EMIT
33719     CR ." $" 2 U.R
33720     ['] CR >BODY IS CR
33721     ['] EMIT >BODY IS EMIT
33722 HI2LO
33723 MOV R14,&BASE
33724 MOV @R15+,R14
33725 GOTO BW3
33726 ENDASM
33727
33728
33729 ASM BACKGROUND
33730 MOV #SLEEP,R9
33731 ADD #4,R9
33732 MOV R9,R0
33733 ENDASM
33734
33735
33736 CODE START
33737     MOV #%1011010100,&$3C0
33738     MOV #1,&$3E0
33739     MOV #19,&$3D2
33740     MOV #%01100000,&$3C6
33741     MOV #10,&$3D6
33742     BIS.B #$20,&$204
33743     BIS.B #$20,&$20A
33744     BIS.B #7,&$245
33745     BIC.B #7,&$247
33746     BIS.B #$0F,&$224
33747     BIC.B #$0F,&$226
33748     BIS.B #4,&$20A
33749     BIC.B #4,&$20C
33750     MOV #RC5_INT,&$FFDE
33751     MOV #%0100010100,&$340
33752     MOV ##1638,&$352
33753     MOV #%10000,&$342
33754     MOV #WDT_INT,&$FFEA
33755
33756     MOV #SLEEP,R9
33757     MOV #BACKGROUND,2(R9)
33758
33759 LO2HI
33760
33761     $03E8 20_US
33762     $03 TOP_LCD
33763     $CD 20_US
33764     $03 TOP_LCD
33765     $5 20_US
33766     $03 TOP_LCD
33767     $2 20_US
33768     $02 TOP_LCD
33769     $2 20_US
33770     $28 LCD_WRF
33771     $08 LCD_WRF
33772     LCD_Clear
33773     $06 LCD_WRF
33774     $0C LCD_WRF
33775     LCD_Clear
33776     ['] LCD_HOME IS CR
33777     ['] LCD_WRC  IS EMIT
33778     CR ." I love you"   
33779     ['] CR >BODY IS CR
33780     ['] EMIT >BODY IS EMIT
33781     ." RC5toLCD is running. Type STOP to quit"
33782     LIT RECURSE IS WARM
33783     ABORT
33784 ;
33785
33786
33787 CODE STOP
33788     MOV #SLEEP,R9
33789     ADD #4,R9
33790     MOV R9,-2(R9)
33791
33792 COLON
33793     ['] WARM >BODY IS WARM
33794
33795     COLD
33796 ;
33797
33798
33799
33800             ; downloading RC5toLCD.4th is done
33801 RST_HERE    ; this app is protected against <reset>
33802
33803 [THEN]
33804
33805
33806
33807
33808
33809 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
33810
33811 [DEFINED] ASM [IF]
33812
33813 MARKER {RC5TOLCD}
33814
33815 [UNDEFINED] MAX [IF]
33816
33817 CODE MAX
33818     CMP @R15,R14
33819     S<  ?GOTO FW1
33820 BW1 ADD #2,R15
33821     MOV @R13+,R0
33822 ENDCODE
33823
33824
33825 CODE MIN
33826     CMP @R15,R14
33827     S<  ?GOTO BW1
33828 FW1 MOV @R15+,R14
33829     MOV @R13+,R0
33830 ENDCODE
33831
33832 [THEN]
33833
33834
33835 [UNDEFINED] U.R [IF]
33836 : U.R
33837   >R  <# 0 # #S #>  
33838   R> OVER - 0 MAX SPACES TYPE
33839 ;
33840 [THEN]
33841
33842
33843
33844 CODE 20_US
33845 BEGIN
33846     BEGIN
33847         BIT #1,&$3C0
33848     0<> UNTIL
33849     BIC #1,&$3C0
33850     SUB #1,R14
33851 U< UNTIL
33852 MOV @R15+,R14
33853 MOV @R13+,R0
33854 ENDCODE
33855
33856
33857 CODE TOP_LCD
33858     BIS.B #4,&$243
33859     BIT.B #1,&$241
33860 0= IF
33861     AND.B #$0F,R14
33862     MOV.B R14,&$222
33863     BIC.B #4,&$243
33864     MOV @R15+,R14
33865     MOV @R13+,R0
33866 THEN
33867     SUB #2,R15
33868     MOV R14,0(R15)
33869     BIC.B #4,&$243
33870     MOV.B &$220,R14
33871     AND.B #$0F,R14
33872     MOV @R13+,R0
33873 ENDCODE
33874
33875
33876 CODE LCD_W
33877     SUB #2,R15
33878     MOV R14,0(R15)
33879     RRUM #4,R14
33880     BIC.B #1,&$243
33881     BIS.B #$0F,&$224
33882 COLON
33883     TOP_LCD 2 20_US
33884     TOP_LCD 2 20_US 
33885 ;
33886
33887
33888 CODE LCD_WrC
33889     BIS.B #2,&$243
33890     JMP LCD_W 
33891 ENDCODE
33892
33893
33894 CODE LCD_WrF
33895     BIC.B #2,&$243
33896     JMP LCD_W 
33897 ENDCODE
33898
33899
33900 : LCD_Clear 
33901     $01 LCD_WrF 100 20_us
33902 ;
33903
33904
33905 : LCD_Home 
33906     $02 LCD_WrF 100 20_us 
33907 ;
33908
33909
33910 [UNDEFINED] OR [IF]
33911
33912 CODE OR
33913 BIS @R15+,R14
33914 MOV @R13+,R0
33915 ENDCODE
33916
33917
33918 [THEN]
33919
33920 : LCD_Entry_set     $04 OR LCD_WrF ;
33921
33922 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
33923
33924 : LCD_DSP_Shift     $10 OR LCD_WrF ;
33925
33926 : LCD_Fn_Set        $20 OR LCD_WrF ;
33927
33928 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
33929
33930 : LCD_Goto          $80 OR LCD_WrF ;
33931
33932 CODE LCD_R
33933     BIC.B #$0F,&$224
33934     BIS.B #1,&$243
33935 COLON
33936     TOP_LCD 2 20_us
33937     TOP_LCD 2 20_us
33938 HI2LO
33939     RLAM #4,0(R15)
33940     ADD.B @R15+,R14
33941     MOV @R1+,R13
33942     MOV @R13+,R0
33943 ENDCODE
33944
33945
33946 CODE LCD_RdS
33947     BIC.B #2,&$243
33948     JMP LCD_R
33949 ENDCODE
33950
33951
33952 CODE LCD_RdC
33953     BIS.B #2,&$243
33954     JMP LCD_R
33955 ENDCODE
33956
33957
33958
33959 ASM WDT_INT
33960 BIT.B #$20,&$240
33961 0= IF
33962     CMP #19,&$3D6
33963     U< IF
33964         ADD #1,&$3D6
33965     THEN
33966 ELSE
33967     BIT.B #$40,&$240
33968     0= IF
33969         CMP #3,&$3D6
33970         U>= IF
33971            SUB #1,&$3D6
33972         THEN
33973     THEN
33974 THEN
33975 BW1
33976 BW2
33977 BW3
33978 BIC #$78,0(R1)
33979 RETI
33980 ENDASM
33981
33982
33983 ASM RC5_INT
33984   MOV #1,&$3A0
33985 MOV #1778,R9
33986 MOV #14,R10
33987 BEGIN
33988 MOV #%1011100100,&$380
33989     RRUM    #1,R9
33990     MOV     R9,R8
33991     RRUM    #1,R8
33992     ADD     R9,R8
33993     BEGIN   CMP R8,&$390
33994     U>= UNTIL
33995     BIT.B   #4,&$200
33996     ADDC    R11,R11
33997     MOV.B   &$200,&$208
33998     BIC.B   #4,&$20C
33999     SUB     #1,R10
34000 0<> WHILE
34001     ADD R9,R8
34002     BEGIN
34003         MOV &$390,R9
34004         CMP R8,R9
34005         U>= IF
34006         BIC #$30,&$380
34007         GOTO BW1
34008         THEN
34009         BIT.B #4,&$20C
34010     0<> UNTIL
34011 REPEAT
34012 BIC #$30,&$380
34013 RLAM    #1,R11
34014 MOV.B   R11,R9
34015 RRUM    #2,R9
34016 BIT     #$4000,R11
34017 0= IF   BIS #$40,R9
34018 THEN
34019 RRUM    #3,R11
34020 XOR     @R1,R11
34021 BIT     #$400,R11
34022 0= ?GOTO BW2
34023 XOR #$400,0(R1)
34024 SUB #4,R15
34025 MOV &BASE,2(R15)
34026 MOV #$10,&BASE
34027 MOV R14,0(R15)
34028 MOV R9,R14
34029 LO2HI
34030     ['] LCD_CLEAR IS CR
34031     ['] LCD_WrC  IS EMIT
34032     CR ." $" 2 U.R
34033     ['] CR >BODY IS CR
34034     ['] EMIT >BODY IS EMIT
34035 HI2LO
34036 MOV R14,&BASE
34037 MOV @R15+,R14
34038 GOTO BW3
34039 ENDASM
34040
34041
34042 ASM BACKGROUND
34043 MOV #SLEEP,R9
34044 ADD #4,R9
34045 MOV R9,R0
34046 ENDASM
34047
34048
34049 CODE START
34050     MOV #%1011010100,&$3C0
34051     MOV #1,&$3E0
34052     MOV #19,&$3D2
34053     MOV #%01100000,&$3C6
34054     MOV #10,&$3D6
34055     BIS.B #$20,&$204
34056     BIS.B #$20,&$20A
34057     BIS.B #7,&$245
34058     BIC.B #7,&$247
34059     BIS.B #$0F,&$224
34060     BIC.B #$0F,&$226
34061     BIS.B #4,&$20A
34062     BIC.B #4,&$20C
34063     MOV #RC5_INT,&$FFDE
34064     MOV #%0100010100,&$340
34065     MOV ##1638,&$352
34066     MOV #%10000,&$342
34067     MOV #WDT_INT,&$FFEA
34068
34069     MOV #SLEEP,R9
34070     MOV #BACKGROUND,2(R9)
34071
34072 LO2HI
34073
34074     $03E8 20_US
34075     $03 TOP_LCD
34076     $CD 20_US
34077     $03 TOP_LCD
34078     $5 20_US
34079     $03 TOP_LCD
34080     $2 20_US
34081     $02 TOP_LCD
34082     $2 20_US
34083     $28 LCD_WRF
34084     $08 LCD_WRF
34085     LCD_Clear
34086     $06 LCD_WRF
34087     $0C LCD_WRF
34088     LCD_Clear
34089     ['] LCD_HOME IS CR
34090     ['] LCD_WRC  IS EMIT
34091     CR ." I love you"   
34092     ['] CR >BODY IS CR
34093     ['] EMIT >BODY IS EMIT
34094     ." RC5toLCD is running. Type STOP to quit"
34095     LIT RECURSE IS WARM
34096     ABORT
34097 ;
34098
34099
34100 CODE STOP
34101     MOV #SLEEP,R9
34102     ADD #4,R9
34103     MOV R9,-2(R9)
34104
34105 COLON
34106     ['] WARM >BODY IS WARM
34107
34108     COLD
34109 ;
34110
34111
34112
34113             ; downloading RC5toLCD.4th is done
34114 RST_HERE    ; this app is protected against <reset>
34115
34116 [THEN]
34117
34118
34119
34120
34121
34122 ; -----------------------------------
34123 ; RC5toLCD.4th
34124 ; -----------------------------------
34125
34126
34127 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
34128
34129 [DEFINED] ASM [IF]
34130
34131 MARKER {RC5TOLCD}
34132
34133 [UNDEFINED] MAX [IF]
34134
34135 CODE MAX
34136     CMP @R15,R14
34137     S<  ?GOTO FW1
34138 BW1 ADD #2,R15
34139     MOV @R13+,R0
34140 ENDCODE
34141
34142 CODE MIN
34143     CMP @R15,R14
34144     S<  ?GOTO BW1
34145 FW1 MOV @R15+,R14
34146     MOV @R13+,R0
34147 ENDCODE
34148
34149 [THEN]
34150
34151 [UNDEFINED] U.R [IF]
34152 : U.R
34153   >R  <# 0 # #S #>  
34154   R> OVER - 0 MAX SPACES TYPE
34155 ;
34156 [THEN]
34157
34158 CODE 20_US
34159 BEGIN
34160     BEGIN
34161         BIT #1,&$3C0
34162     0<> UNTIL
34163     BIC #1,&$3C0
34164     SUB #1,R14
34165 U< UNTIL
34166 MOV @R15+,R14
34167 MOV @R13+,R0
34168 ENDCODE
34169
34170 CODE TOP_LCD
34171     BIS.B #4,&$243
34172     BIT.B #1,&$241
34173 0= IF
34174     AND.B #$0F,R14
34175     MOV.B R14,&$222
34176     BIC.B #4,&$243
34177     MOV @R15+,R14
34178     MOV @R13+,R0
34179 THEN
34180     SUB #2,R15
34181     MOV R14,0(R15)
34182     BIC.B #4,&$243
34183     MOV.B &$220,R14
34184     AND.B #$0F,R14
34185     MOV @R13+,R0
34186 ENDCODE
34187
34188 CODE LCD_W
34189     SUB #2,R15
34190     MOV R14,0(R15)
34191     RRUM #4,R14
34192     BIC.B #1,&$243
34193     BIS.B #$0F,&$224
34194 COLON
34195     TOP_LCD 2 20_US
34196     TOP_LCD 2 20_US 
34197 ;
34198
34199 CODE LCD_WrC
34200     BIS.B #2,&$243
34201     JMP LCD_W 
34202 ENDCODE
34203
34204 CODE LCD_WrF
34205     BIC.B #2,&$243
34206     JMP LCD_W 
34207 ENDCODE
34208
34209 : LCD_Clear 
34210     $01 LCD_WrF 100 20_us
34211 ;
34212
34213 : LCD_Home 
34214     $02 LCD_WrF 100 20_us 
34215 ;
34216
34217 [UNDEFINED] OR [IF]
34218
34219 CODE OR
34220 BIS @R15+,R14
34221 MOV @R13+,R0
34222 ENDCODE
34223
34224 [THEN]
34225
34226 : LCD_Entry_set     $04 OR LCD_WrF ;
34227
34228 : LCD_DSP_Ctrl      $08 OR LCD_WrF ;
34229
34230 : LCD_DSP_Shift     $10 OR LCD_WrF ;
34231
34232 : LCD_Fn_Set        $20 OR LCD_WrF ;
34233
34234 : LCD_CGRAM_Set     $40 OR LCD_WrF ;
34235
34236 : LCD_Goto          $80 OR LCD_WrF ;
34237
34238 CODE LCD_R
34239     BIC.B #$0F,&$224
34240     BIS.B #1,&$243
34241 COLON
34242     TOP_LCD 2 20_us
34243     TOP_LCD 2 20_us
34244 HI2LO
34245     RLAM #4,0(R15)
34246     ADD.B @R15+,R14
34247     MOV @R1+,R13
34248     MOV @R13+,R0
34249 ENDCODE
34250
34251 CODE LCD_RdS
34252     BIC.B #2,&$243
34253     JMP LCD_R
34254 ENDCODE
34255
34256 CODE LCD_RdC
34257     BIS.B #2,&$243
34258     JMP LCD_R
34259 ENDCODE
34260
34261
34262 ASM WDT_INT
34263 BIT.B #$20,&$240
34264 0= IF
34265     CMP #19,&$3D6
34266     U< IF
34267         ADD #1,&$3D6
34268     THEN
34269 ELSE
34270     BIT.B #$40,&$240
34271     0= IF
34272         CMP #3,&$3D6
34273         U>= IF
34274            SUB #1,&$3D6
34275         THEN
34276     THEN
34277 THEN
34278 BW1
34279 BW2
34280 BW3
34281 BIC #$78,0(R1)
34282 RETI
34283 ENDASM
34284
34285 ASM RC5_INT
34286 $1806 @ 16000 = [IF]
34287     MOV #1,&$3A0
34288 [THEN]
34289 $1806 @ 24000 = [IF]
34290     MOV #2,&$3A0
34291 [THEN]
34292 MOV #1778,R9
34293 MOV #14,R10
34294 BEGIN
34295 MOV #%1011100100,&$380
34296     RRUM    #1,R9
34297     MOV     R9,R8
34298     RRUM    #1,R8
34299     ADD     R9,R8
34300     BEGIN   CMP R8,&$390
34301     U>= UNTIL
34302     BIT.B   #4,&$200
34303     ADDC    R11,R11
34304     MOV.B   &$200,&$208
34305     BIC.B   #4,&$20C
34306     SUB     #1,R10
34307 0<> WHILE
34308     ADD R9,R8
34309     BEGIN
34310         MOV &$390,R9
34311         CMP R8,R9
34312         U>= IF
34313         BIC #$30,&$380
34314         GOTO BW1
34315         THEN
34316         BIT.B #4,&$20C
34317     0<> UNTIL
34318 REPEAT
34319 BIC #$30,&$380
34320 RLAM    #1,R11
34321 MOV.B   R11,R9
34322 RRUM    #2,R9
34323 BIT     #$4000,R11
34324 0= IF   BIS #$40,R9
34325 THEN
34326 RRUM    #3,R11
34327 XOR     @R1,R11
34328 BIT     #$400,R11
34329 0= ?GOTO BW2
34330 XOR #$400,0(R1)
34331 SUB #4,R15
34332 MOV &BASE,2(R15)
34333 MOV #$10,&BASE
34334 MOV R14,0(R15)
34335 MOV R9,R14
34336 LO2HI
34337     ['] LCD_CLEAR IS CR
34338     ['] LCD_WrC  IS EMIT
34339     CR ." $" 2 U.R
34340     ['] CR >BODY IS CR
34341     ['] EMIT >BODY IS EMIT
34342 HI2LO
34343 MOV R14,&BASE
34344 MOV @R15+,R14
34345 GOTO BW3
34346 ENDASM
34347
34348 ASM BACKGROUND
34349 BIS #$180A,R2
34350 ENDASM
34351 CODENNM
34352 JMP BACKGROUND
34353 ENDCODE DROP
34354
34355
34356
34357 CODE STOP
34358     MOV #SLEEP,R9
34359     ADD #4,R9
34360     MOV R9,-2(R9)
34361 COLON
34362 ['] WARM >BODY IS WARM
34363 ECHO
34364 ." RC5toLCD is removed." CR
34365 ."    type START to restart"
34366 COLD
34367 ;
34368
34369 CODE START
34370 MOV #%1011010100,&$3C0
34371 $1806 @ 16000 = [IF]
34372     MOV #1,&$3E0
34373 [THEN]
34374 $1806 @ 24000 = [IF]
34375     MOV #2,&$3E0
34376 [THEN]
34377     MOV #19,&$3D2
34378     MOV #%01100000,&$3C6
34379     MOV #10,&$3D6
34380     BIS.B #$20,&$204
34381     BIS.B #$20,&$20A
34382     BIS.B #7,&$245
34383     BIC.B #7,&$247
34384     BIS.B #$0F,&$224
34385     BIC.B #$0F,&$226
34386     BIS.B #4,&$20A
34387     BIC.B #4,&$20C
34388     MOV #RC5_INT,&$FFDE
34389     MOV #%0100010100,&$340
34390     MOV ##1638,&$352
34391     MOV #%10000,&$342
34392     MOV #WDT_INT,&$FFEA
34393     MOV #SLEEP,R9
34394     MOV #BACKGROUND,2(R9)
34395 BIC #1,&$130
34396 BIS.B #3,&$20D
34397 MOV &$1808,R8
34398 CMP #4,R8
34399 0= ?JMP STOP
34400 COLON
34401     $03E8 20_US
34402     $03 TOP_LCD
34403     $CD 20_US
34404     $03 TOP_LCD
34405     $5 20_US
34406     $03 TOP_LCD
34407     $2 20_US
34408     $02 TOP_LCD
34409     $2 20_US
34410     $28 LCD_WRF
34411     $08 LCD_WRF
34412     LCD_Clear
34413     $06 LCD_WRF
34414     $0C LCD_WRF
34415     LCD_Clear
34416     ['] LCD_HOME IS CR
34417     ['] LCD_WRC  IS EMIT
34418     CR ." I love you"
34419     ['] CR >BODY IS CR
34420     ['] EMIT >BODY IS EMIT
34421     ." RC5toLCD is running. Type STOP to quit"
34422     LIT RECURSE IS WARM
34423     ABORT
34424 ;
34425
34426 ECHO
34427             ; downloading RC5toLCD.4th is done
34428 RST_HERE    ; this app is protected against <reset>
34429