OSDN Git Service

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