OSDN Git Service

f629d96499c491ff0307906426591a9ddf73f64a
[fast-forth/master.git] / MSP430-FORTH / MSP_EXP430FR5994 / PROG100k.4TH
1
2 ; -----------------------------------
3 ; PROG100k.4th for MSP_EXP430FR5994 = 76 x RC5toLCD.4th for MSP_EXP430FR5994
4 ; -----------------------------------
5 ; download source file sized to compile 100 kbytes
6 ; -----------------------------------
7
8
9 CODE ABORT_RC5TOLCD
10 SUB #2,R15
11 MOV R14,0(R15)
12 MOV &$180E,R14
13 SUB #308,R14
14 COLON
15 $0D EMIT
16 ABORT" FastForth V3.8 please!"
17 PWR_STATE
18 ;
19
20 ABORT_RC5TOLCD
21
22
23 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
24
25 MARKER {RC5TOLCD}
26 6 ALLOT
27
28
29
30 [UNDEFINED] CONSTANT [IF]
31 : CONSTANT 
32 CREATE
33 HI2LO
34 MOV R14,-2(R10)
35 MOV @R15+,R14
36 MOV @R1+,R13
37 MOV @R13+,R0
38 ENDCODE
39 [THEN]
40
41 [UNDEFINED] STATE [IF]
42 $1DBE CONSTANT STATE
43 [THEN]
44
45 [UNDEFINED] = [IF]
46 CODE =
47 SUB @R15+,R14
48 0<> IF
49     AND #0,R14
50     MOV @R13+,R0
51 THEN
52 XOR #-1,R14
53 MOV @R13+,R0
54 ENDCODE
55 [THEN]
56
57 [UNDEFINED] IF [IF]
58 CODE IF
59 SUB #2,R15
60 MOV R14,0(R15)
61 MOV &$1DC6,R14
62 ADD #4,&$1DC6
63 MOV #$4034,0(R14)
64 ADD #2,R14
65 MOV @R13+,R0
66 ENDCODE IMMEDIATE
67
68 CODE THEN
69 MOV &$1DC6,0(R14)
70 MOV @R15+,R14
71 MOV @R13+,R0
72 ENDCODE IMMEDIATE
73 [THEN]
74
75 [UNDEFINED] ELSE [IF]
76 CODE ELSE
77 ADD #4,&$1DC6
78 MOV &$1DC6,R10
79 MOV #$403A,-4(R10)
80 MOV R10,0(R14)
81 SUB #2,R10
82 MOV R10,R14
83 MOV @R13+,R0
84 ENDCODE IMMEDIATE
85 [THEN]
86
87 [UNDEFINED] IS [IF]
88
89 CODE DEFER!
90 MOV @R15+,2(R14)
91 MOV @R15+,R14
92 MOV @R13+,R0
93 ENDCODE
94
95
96 : IS
97 STATE @
98 IF  POSTPONE ['] POSTPONE DEFER! 
99 ELSE ' DEFER! 
100 THEN
101 ; IMMEDIATE
102 [THEN]
103
104 [UNDEFINED] >BODY [IF]
105 CODE >BODY
106 ADD #4,R14
107 MOV @R13+,R0
108 ENDCODE
109 [THEN]
110
111
112 CODE 20_US
113 BEGIN
114     BEGIN
115         BIT #1,&$3C0
116     0<> UNTIL
117     BIC #1,&$3C0
118     SUB #1,R14
119 U< UNTIL
120 MOV @R15+,R14
121 MOV @R13+,R0
122 ENDCODE
123
124 CODE TOP_LCD
125     BIS.B #4,&$243
126     BIT.B #1,&$241
127 0= IF
128     AND.B #$0F,R14
129     MOV.B R14,&$222
130     BIC.B #4,&$243
131     MOV @R15+,R14
132     MOV @R13+,R0
133 THEN
134     SUB #2,R15
135     MOV R14,0(R15)
136     BIC.B #4,&$243
137     MOV.B &$220,R14
138     AND.B #$0F,R14
139     MOV @R13+,R0
140 ENDCODE
141
142 CODE LCD_WRC
143     BIS.B #2,&$243
144 BW1 SUB #2,R15
145     MOV R14,0(R15)
146     RRUM #4,R14
147     BIC.B #1,&$243
148     BIS.B #$0F,&$224
149 COLON
150     TOP_LCD 2 20_US
151     TOP_LCD 2 20_US 
152 ;
153
154 CODE LCD_WRF
155     BIC.B #2,&$243
156     GOTO BW1
157 ENDCODE
158
159 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
160 : LCD_HOME $02 LCD_WRF 100 20_us ;
161
162
163
164 HDNCODE WDT_INT
165 BIT.B #$20,&$240
166 0= IF
167     CMP #19,&$3D6
168     U< IF
169         ADD #1,&$3D6
170     THEN
171 ELSE
172     BIT.B #$40,&$240
173     0= IF
174         CMP #3,&$3D6
175         U>= IF
176            SUB #1,&$3D6
177         THEN
178     THEN
179 THEN
180 RETI
181 ENDCODE
182
183 HDNCODE RC5_INT
184 $1800 @ 16000 = [IF]
185     MOV #1,&$3A0
186 [THEN]
187 $1800 @ 24000 = [IF]
188     MOV #2,&$3A0
189 [THEN]
190 MOV #1778,R9
191 MOV #14,R10
192 BEGIN
193 MOV #%1011100100,&$380
194     RRUM    #1,R9
195     MOV     R9,R8
196     RRUM    #1,R8
197     ADD     R9,R8
198     BEGIN   CMP R8,&$390
199     U>= UNTIL
200     BIT.B   #4,&$200
201     ADDC    R11,R11
202     MOV.B   &$200,&$208
203     BIC.B   #4,&$20C
204     SUB     #1,R10
205 0<> WHILE
206     ADD R9,R8
207     BEGIN
208         MOV &$390,R9
209         CMP R8,R9
210         U>= IF
211         BIC #$30,&$380
212         GOTO FW1
213         THEN
214         BIT.B #4,&$20C
215     0<> UNTIL
216 REPEAT
217 BIC #$30,&$380
218 RLAM    #1,R11
219 MOV.B   R11,R9
220 RRUM    #2,R9
221 BIT     #$4000,R11
222 0= IF   BIS #$40,R9
223 THEN
224 RRUM    #3,R11
225 XOR     @R1,R11
226 BIT     #$400,R11
227 0= ?GOTO FW2
228 XOR #$400,0(R1)
229 SUB #8,R15
230 MOV R14,6(R15)
231 MOV &$1DDC,4(R15)
232 MOV #$10,&$1DDC
233 MOV R9,0(R15)
234 MOV #0,R14
235 LO2HI
236     LCD_CLEAR
237     <# # #S #36 HOLD #>
238     ['] LCD_WRC IS EMIT
239     TYPE
240     ['] EMIT >BODY IS EMIT
241 HI2LO
242 MOV @R15+,&$1DDC
243 MOV @R15+,R14
244 FW1 FW2
245     MOV @R1+,R2
246     BIC #%1111_1000,R2
247     MOV @R1+,R0
248 ENDCODE
249
250
251 HDNCODE STOP_R2L
252 CMP #$40AA,&{RC5TOLCD}+8
253 0<> IF
254     BIC.B #4,&$20A
255     BIC.B #4,&$20C
256     MOV #0,&$3C0
257     MOV #0,&$340
258     MOV #0,&$342
259     MOV #$40AA,&{RC5TOLCD}+8
260     MOV &{RC5TOLCD}+10,&WARM+2
261     MOV &{RC5TOLCD}+12,&$FFEA
262     MOV &{RC5TOLCD}+14,&$FFDE
263     MOV &{RC5TOLCD}+10,R0
264 THEN 
265 MOV @R1+,R0
266 ENDCODE
267
268 CODE STOP
269 BW1
270 CALL #STOP_R2L
271 COLON
272 ECHO
273 ." RC5toLCD is removed,"
274 ."  type START to restart"
275 ABORT" "
276 ;
277
278 HDNCODE INI_R2L
279 BIC #1,&$130
280 MOV &$1808,R14
281 CMP #$0E,R14
282 0<> IF
283     CMP #$0A,R14
284     U>= ?GOTO BW1
285 THEN
286 BIT.B #$20,&$240
287 0= ?GOTO BW1
288 MOV #0,&$1808
289 MOV #%10_1101_0100,&$3C0
290 $1800 @ 16000 = [IF]
291     MOV #1,&$3E0
292 [THEN]
293 $1800 @ 24000 = [IF]
294     MOV #2,&$3E0
295 [THEN]
296     MOV #19,&$3D2
297 MOV #%0110_0000,&$3C6
298     MOV #10,&$3D6
299     BIS.B #$20,&$204
300     BIS.B #$20,&$20A
301     BIS.B #7,&$245
302     BIC.B #7,&$247
303     BIS.B #$0F,&$224
304     BIC.B #$0F,&$226
305     BIS.B #4,&$20A
306     BIC.B #4,&$20C
307 MOV #%01_0001_0100,&$340
308     MOV ##3276,&$352
309     MOV #%10000,&$342
310 COLON
311     #1000 20_US
312     %011 TOP_LCD
313     #205 20_US
314     %011 TOP_LCD
315     #5 20_US
316     %011 TOP_LCD
317     #2 20_US
318     %010 TOP_LCD
319     #2 20_US
320     %00101000 LCD_WRF
321     %1000 LCD_WRF
322     LCD_CLEAR
323     %0110 LCD_WRF
324     %1100 LCD_WRF
325     LCD_CLEAR
326     ['] LCD_HOME IS CR
327     ['] LCD_WRC  IS EMIT
328     CR ." I love you"
329     ['] CR >BODY IS CR
330     ['] EMIT >BODY IS EMIT
331     ." RC5toLCD is running. Type STOP to quit"
332     ABORT" "
333 ;
334
335 CODE START
336 CMP #$40AA,&{RC5TOLCD}+8
337 0= IF
338     MOV #STOP_R2L,&{RC5TOLCD}+8
339     MOV &WARM+2,&{RC5TOLCD}+10
340     MOV #INI_R2L,&WARM+2
341     MOV &$FFEA,&{RC5TOLCD}+12
342     MOV #WDT_INT,&$FFEA
343     MOV &$FFDE,&{RC5TOLCD}+14
344     MOV #RC5_INT,&$FFDE
345     MOV #INI_R2L,R0
346 THEN
347 MOV @R13+,R0 
348 ENDCODE 
349
350
351 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
352
353 MARKER {RC5TOLCD}
354 6 ALLOT
355
356
357
358 [UNDEFINED] CONSTANT [IF]
359 : CONSTANT 
360 CREATE
361 HI2LO
362 MOV R14,-2(R10)
363 MOV @R15+,R14
364 MOV @R1+,R13
365 MOV @R13+,R0
366 ENDCODE
367 [THEN]
368
369 [UNDEFINED] STATE [IF]
370 $1DBE CONSTANT STATE
371 [THEN]
372
373 [UNDEFINED] = [IF]
374 CODE =
375 SUB @R15+,R14
376 0<> IF
377     AND #0,R14
378     MOV @R13+,R0
379 THEN
380 XOR #-1,R14
381 MOV @R13+,R0
382 ENDCODE
383 [THEN]
384
385 [UNDEFINED] IF [IF]
386 CODE IF
387 SUB #2,R15
388 MOV R14,0(R15)
389 MOV &$1DC6,R14
390 ADD #4,&$1DC6
391 MOV #$4034,0(R14)
392 ADD #2,R14
393 MOV @R13+,R0
394 ENDCODE IMMEDIATE
395
396 CODE THEN
397 MOV &$1DC6,0(R14)
398 MOV @R15+,R14
399 MOV @R13+,R0
400 ENDCODE IMMEDIATE
401 [THEN]
402
403 [UNDEFINED] ELSE [IF]
404 CODE ELSE
405 ADD #4,&$1DC6
406 MOV &$1DC6,R10
407 MOV #$403A,-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 [UNDEFINED] IS [IF]
416
417 CODE DEFER!
418 MOV @R15+,2(R14)
419 MOV @R15+,R14
420 MOV @R13+,R0
421 ENDCODE
422
423
424 : IS
425 STATE @
426 IF  POSTPONE ['] POSTPONE DEFER! 
427 ELSE ' DEFER! 
428 THEN
429 ; IMMEDIATE
430 [THEN]
431
432 [UNDEFINED] >BODY [IF]
433 CODE >BODY
434 ADD #4,R14
435 MOV @R13+,R0
436 ENDCODE
437 [THEN]
438
439
440 CODE 20_US
441 BEGIN
442     BEGIN
443         BIT #1,&$3C0
444     0<> UNTIL
445     BIC #1,&$3C0
446     SUB #1,R14
447 U< UNTIL
448 MOV @R15+,R14
449 MOV @R13+,R0
450 ENDCODE
451
452 CODE TOP_LCD
453     BIS.B #4,&$243
454     BIT.B #1,&$241
455 0= IF
456     AND.B #$0F,R14
457     MOV.B R14,&$222
458     BIC.B #4,&$243
459     MOV @R15+,R14
460     MOV @R13+,R0
461 THEN
462     SUB #2,R15
463     MOV R14,0(R15)
464     BIC.B #4,&$243
465     MOV.B &$220,R14
466     AND.B #$0F,R14
467     MOV @R13+,R0
468 ENDCODE
469
470 CODE LCD_WRC
471     BIS.B #2,&$243
472 BW1 SUB #2,R15
473     MOV R14,0(R15)
474     RRUM #4,R14
475     BIC.B #1,&$243
476     BIS.B #$0F,&$224
477 COLON
478     TOP_LCD 2 20_US
479     TOP_LCD 2 20_US 
480 ;
481
482 CODE LCD_WRF
483     BIC.B #2,&$243
484     GOTO BW1
485 ENDCODE
486
487 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
488 : LCD_HOME $02 LCD_WRF 100 20_us ;
489
490
491
492 HDNCODE WDT_INT
493 BIT.B #$20,&$240
494 0= IF
495     CMP #19,&$3D6
496     U< IF
497         ADD #1,&$3D6
498     THEN
499 ELSE
500     BIT.B #$40,&$240
501     0= IF
502         CMP #3,&$3D6
503         U>= IF
504            SUB #1,&$3D6
505         THEN
506     THEN
507 THEN
508 RETI
509 ENDCODE
510
511 HDNCODE RC5_INT
512 $1800 @ 16000 = [IF]
513     MOV #1,&$3A0
514 [THEN]
515 $1800 @ 24000 = [IF]
516     MOV #2,&$3A0
517 [THEN]
518 MOV #1778,R9
519 MOV #14,R10
520 BEGIN
521 MOV #%1011100100,&$380
522     RRUM    #1,R9
523     MOV     R9,R8
524     RRUM    #1,R8
525     ADD     R9,R8
526     BEGIN   CMP R8,&$390
527     U>= UNTIL
528     BIT.B   #4,&$200
529     ADDC    R11,R11
530     MOV.B   &$200,&$208
531     BIC.B   #4,&$20C
532     SUB     #1,R10
533 0<> WHILE
534     ADD R9,R8
535     BEGIN
536         MOV &$390,R9
537         CMP R8,R9
538         U>= IF
539         BIC #$30,&$380
540         GOTO FW1
541         THEN
542         BIT.B #4,&$20C
543     0<> UNTIL
544 REPEAT
545 BIC #$30,&$380
546 RLAM    #1,R11
547 MOV.B   R11,R9
548 RRUM    #2,R9
549 BIT     #$4000,R11
550 0= IF   BIS #$40,R9
551 THEN
552 RRUM    #3,R11
553 XOR     @R1,R11
554 BIT     #$400,R11
555 0= ?GOTO FW2
556 XOR #$400,0(R1)
557 SUB #8,R15
558 MOV R14,6(R15)
559 MOV &$1DDC,4(R15)
560 MOV #$10,&$1DDC
561 MOV R9,0(R15)
562 MOV #0,R14
563 LO2HI
564     LCD_CLEAR
565     <# # #S #36 HOLD #>
566     ['] LCD_WRC IS EMIT
567     TYPE
568     ['] EMIT >BODY IS EMIT
569 HI2LO
570 MOV @R15+,&$1DDC
571 MOV @R15+,R14
572 FW1 FW2
573     MOV @R1+,R2
574     BIC #%1111_1000,R2
575     MOV @R1+,R0
576 ENDCODE
577
578
579 HDNCODE STOP_R2L
580 CMP #$40AA,&{RC5TOLCD}+8
581 0<> IF
582     BIC.B #4,&$20A
583     BIC.B #4,&$20C
584     MOV #0,&$3C0
585     MOV #0,&$340
586     MOV #0,&$342
587     MOV #$40AA,&{RC5TOLCD}+8
588     MOV &{RC5TOLCD}+10,&WARM+2
589     MOV &{RC5TOLCD}+12,&$FFEA
590     MOV &{RC5TOLCD}+14,&$FFDE
591     MOV &{RC5TOLCD}+10,R0
592 THEN 
593 MOV @R1+,R0
594 ENDCODE
595
596 CODE STOP
597 BW1
598 CALL #STOP_R2L
599 COLON
600 ECHO
601 ." RC5toLCD is removed,"
602 ."  type START to restart"
603 ABORT" "
604 ;
605
606 HDNCODE INI_R2L
607 BIC #1,&$130
608 MOV &$1808,R14
609 CMP #$0E,R14
610 0<> IF
611     CMP #$0A,R14
612     U>= ?GOTO BW1
613 THEN
614 BIT.B #$20,&$240
615 0= ?GOTO BW1
616 MOV #0,&$1808
617 MOV #%10_1101_0100,&$3C0
618 $1800 @ 16000 = [IF]
619     MOV #1,&$3E0
620 [THEN]
621 $1800 @ 24000 = [IF]
622     MOV #2,&$3E0
623 [THEN]
624     MOV #19,&$3D2
625 MOV #%0110_0000,&$3C6
626     MOV #10,&$3D6
627     BIS.B #$20,&$204
628     BIS.B #$20,&$20A
629     BIS.B #7,&$245
630     BIC.B #7,&$247
631     BIS.B #$0F,&$224
632     BIC.B #$0F,&$226
633     BIS.B #4,&$20A
634     BIC.B #4,&$20C
635 MOV #%01_0001_0100,&$340
636     MOV ##3276,&$352
637     MOV #%10000,&$342
638 COLON
639     #1000 20_US
640     %011 TOP_LCD
641     #205 20_US
642     %011 TOP_LCD
643     #5 20_US
644     %011 TOP_LCD
645     #2 20_US
646     %010 TOP_LCD
647     #2 20_US
648     %00101000 LCD_WRF
649     %1000 LCD_WRF
650     LCD_CLEAR
651     %0110 LCD_WRF
652     %1100 LCD_WRF
653     LCD_CLEAR
654     ['] LCD_HOME IS CR
655     ['] LCD_WRC  IS EMIT
656     CR ." I love you"
657     ['] CR >BODY IS CR
658     ['] EMIT >BODY IS EMIT
659     ." RC5toLCD is running. Type STOP to quit"
660     ABORT" "
661 ;
662
663 CODE START
664 CMP #$40AA,&{RC5TOLCD}+8
665 0= IF
666     MOV #STOP_R2L,&{RC5TOLCD}+8
667     MOV &WARM+2,&{RC5TOLCD}+10
668     MOV #INI_R2L,&WARM+2
669     MOV &$FFEA,&{RC5TOLCD}+12
670     MOV #WDT_INT,&$FFEA
671     MOV &$FFDE,&{RC5TOLCD}+14
672     MOV #RC5_INT,&$FFDE
673     MOV #INI_R2L,R0
674 THEN
675 MOV @R13+,R0 
676 ENDCODE 
677
678
679 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
680
681 MARKER {RC5TOLCD}
682 6 ALLOT
683
684
685
686 [UNDEFINED] CONSTANT [IF]
687 : CONSTANT 
688 CREATE
689 HI2LO
690 MOV R14,-2(R10)
691 MOV @R15+,R14
692 MOV @R1+,R13
693 MOV @R13+,R0
694 ENDCODE
695 [THEN]
696
697 [UNDEFINED] STATE [IF]
698 $1DBE CONSTANT STATE
699 [THEN]
700
701 [UNDEFINED] = [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 [IF]
714 CODE IF
715 SUB #2,R15
716 MOV R14,0(R15)
717 MOV &$1DC6,R14
718 ADD #4,&$1DC6
719 MOV #$4034,0(R14)
720 ADD #2,R14
721 MOV @R13+,R0
722 ENDCODE IMMEDIATE
723
724 CODE THEN
725 MOV &$1DC6,0(R14)
726 MOV @R15+,R14
727 MOV @R13+,R0
728 ENDCODE IMMEDIATE
729 [THEN]
730
731 [UNDEFINED] ELSE [IF]
732 CODE ELSE
733 ADD #4,&$1DC6
734 MOV &$1DC6,R10
735 MOV #$403A,-4(R10)
736 MOV R10,0(R14)
737 SUB #2,R10
738 MOV R10,R14
739 MOV @R13+,R0
740 ENDCODE IMMEDIATE
741 [THEN]
742
743 [UNDEFINED] IS [IF]
744
745 CODE DEFER!
746 MOV @R15+,2(R14)
747 MOV @R15+,R14
748 MOV @R13+,R0
749 ENDCODE
750
751
752 : IS
753 STATE @
754 IF  POSTPONE ['] POSTPONE DEFER! 
755 ELSE ' DEFER! 
756 THEN
757 ; IMMEDIATE
758 [THEN]
759
760 [UNDEFINED] >BODY [IF]
761 CODE >BODY
762 ADD #4,R14
763 MOV @R13+,R0
764 ENDCODE
765 [THEN]
766
767
768 CODE 20_US
769 BEGIN
770     BEGIN
771         BIT #1,&$3C0
772     0<> UNTIL
773     BIC #1,&$3C0
774     SUB #1,R14
775 U< UNTIL
776 MOV @R15+,R14
777 MOV @R13+,R0
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
819
820 HDNCODE WDT_INT
821 BIT.B #$20,&$240
822 0= IF
823     CMP #19,&$3D6
824     U< IF
825         ADD #1,&$3D6
826     THEN
827 ELSE
828     BIT.B #$40,&$240
829     0= IF
830         CMP #3,&$3D6
831         U>= IF
832            SUB #1,&$3D6
833         THEN
834     THEN
835 THEN
836 RETI
837 ENDCODE
838
839 HDNCODE RC5_INT
840 $1800 @ 16000 = [IF]
841     MOV #1,&$3A0
842 [THEN]
843 $1800 @ 24000 = [IF]
844     MOV #2,&$3A0
845 [THEN]
846 MOV #1778,R9
847 MOV #14,R10
848 BEGIN
849 MOV #%1011100100,&$380
850     RRUM    #1,R9
851     MOV     R9,R8
852     RRUM    #1,R8
853     ADD     R9,R8
854     BEGIN   CMP R8,&$390
855     U>= UNTIL
856     BIT.B   #4,&$200
857     ADDC    R11,R11
858     MOV.B   &$200,&$208
859     BIC.B   #4,&$20C
860     SUB     #1,R10
861 0<> WHILE
862     ADD R9,R8
863     BEGIN
864         MOV &$390,R9
865         CMP R8,R9
866         U>= IF
867         BIC #$30,&$380
868         GOTO FW1
869         THEN
870         BIT.B #4,&$20C
871     0<> UNTIL
872 REPEAT
873 BIC #$30,&$380
874 RLAM    #1,R11
875 MOV.B   R11,R9
876 RRUM    #2,R9
877 BIT     #$4000,R11
878 0= IF   BIS #$40,R9
879 THEN
880 RRUM    #3,R11
881 XOR     @R1,R11
882 BIT     #$400,R11
883 0= ?GOTO FW2
884 XOR #$400,0(R1)
885 SUB #8,R15
886 MOV R14,6(R15)
887 MOV &$1DDC,4(R15)
888 MOV #$10,&$1DDC
889 MOV R9,0(R15)
890 MOV #0,R14
891 LO2HI
892     LCD_CLEAR
893     <# # #S #36 HOLD #>
894     ['] LCD_WRC IS EMIT
895     TYPE
896     ['] EMIT >BODY IS EMIT
897 HI2LO
898 MOV @R15+,&$1DDC
899 MOV @R15+,R14
900 FW1 FW2
901     MOV @R1+,R2
902     BIC #%1111_1000,R2
903     MOV @R1+,R0
904 ENDCODE
905
906
907 HDNCODE STOP_R2L
908 CMP #$40AA,&{RC5TOLCD}+8
909 0<> IF
910     BIC.B #4,&$20A
911     BIC.B #4,&$20C
912     MOV #0,&$3C0
913     MOV #0,&$340
914     MOV #0,&$342
915     MOV #$40AA,&{RC5TOLCD}+8
916     MOV &{RC5TOLCD}+10,&WARM+2
917     MOV &{RC5TOLCD}+12,&$FFEA
918     MOV &{RC5TOLCD}+14,&$FFDE
919     MOV &{RC5TOLCD}+10,R0
920 THEN 
921 MOV @R1+,R0
922 ENDCODE
923
924 CODE STOP
925 BW1
926 CALL #STOP_R2L
927 COLON
928 ECHO
929 ." RC5toLCD is removed,"
930 ."  type START to restart"
931 ABORT" "
932 ;
933
934 HDNCODE INI_R2L
935 BIC #1,&$130
936 MOV &$1808,R14
937 CMP #$0E,R14
938 0<> IF
939     CMP #$0A,R14
940     U>= ?GOTO BW1
941 THEN
942 BIT.B #$20,&$240
943 0= ?GOTO BW1
944 MOV #0,&$1808
945 MOV #%10_1101_0100,&$3C0
946 $1800 @ 16000 = [IF]
947     MOV #1,&$3E0
948 [THEN]
949 $1800 @ 24000 = [IF]
950     MOV #2,&$3E0
951 [THEN]
952     MOV #19,&$3D2
953 MOV #%0110_0000,&$3C6
954     MOV #10,&$3D6
955     BIS.B #$20,&$204
956     BIS.B #$20,&$20A
957     BIS.B #7,&$245
958     BIC.B #7,&$247
959     BIS.B #$0F,&$224
960     BIC.B #$0F,&$226
961     BIS.B #4,&$20A
962     BIC.B #4,&$20C
963 MOV #%01_0001_0100,&$340
964     MOV ##3276,&$352
965     MOV #%10000,&$342
966 COLON
967     #1000 20_US
968     %011 TOP_LCD
969     #205 20_US
970     %011 TOP_LCD
971     #5 20_US
972     %011 TOP_LCD
973     #2 20_US
974     %010 TOP_LCD
975     #2 20_US
976     %00101000 LCD_WRF
977     %1000 LCD_WRF
978     LCD_CLEAR
979     %0110 LCD_WRF
980     %1100 LCD_WRF
981     LCD_CLEAR
982     ['] LCD_HOME IS CR
983     ['] LCD_WRC  IS EMIT
984     CR ." I love you"
985     ['] CR >BODY IS CR
986     ['] EMIT >BODY IS EMIT
987     ." RC5toLCD is running. Type STOP to quit"
988     ABORT" "
989 ;
990
991 CODE START
992 CMP #$40AA,&{RC5TOLCD}+8
993 0= IF
994     MOV #STOP_R2L,&{RC5TOLCD}+8
995     MOV &WARM+2,&{RC5TOLCD}+10
996     MOV #INI_R2L,&WARM+2
997     MOV &$FFEA,&{RC5TOLCD}+12
998     MOV #WDT_INT,&$FFEA
999     MOV &$FFDE,&{RC5TOLCD}+14
1000     MOV #RC5_INT,&$FFDE
1001     MOV #INI_R2L,R0
1002 THEN
1003 MOV @R13+,R0 
1004 ENDCODE 
1005
1006
1007 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
1008
1009 MARKER {RC5TOLCD}
1010 6 ALLOT
1011
1012
1013
1014 [UNDEFINED] CONSTANT [IF]
1015 : CONSTANT 
1016 CREATE
1017 HI2LO
1018 MOV R14,-2(R10)
1019 MOV @R15+,R14
1020 MOV @R1+,R13
1021 MOV @R13+,R0
1022 ENDCODE
1023 [THEN]
1024
1025 [UNDEFINED] STATE [IF]
1026 $1DBE CONSTANT STATE
1027 [THEN]
1028
1029 [UNDEFINED] = [IF]
1030 CODE =
1031 SUB @R15+,R14
1032 0<> IF
1033     AND #0,R14
1034     MOV @R13+,R0
1035 THEN
1036 XOR #-1,R14
1037 MOV @R13+,R0
1038 ENDCODE
1039 [THEN]
1040
1041 [UNDEFINED] IF [IF]
1042 CODE IF
1043 SUB #2,R15
1044 MOV R14,0(R15)
1045 MOV &$1DC6,R14
1046 ADD #4,&$1DC6
1047 MOV #$4034,0(R14)
1048 ADD #2,R14
1049 MOV @R13+,R0
1050 ENDCODE IMMEDIATE
1051
1052 CODE THEN
1053 MOV &$1DC6,0(R14)
1054 MOV @R15+,R14
1055 MOV @R13+,R0
1056 ENDCODE IMMEDIATE
1057 [THEN]
1058
1059 [UNDEFINED] ELSE [IF]
1060 CODE ELSE
1061 ADD #4,&$1DC6
1062 MOV &$1DC6,R10
1063 MOV #$403A,-4(R10)
1064 MOV R10,0(R14)
1065 SUB #2,R10
1066 MOV R10,R14
1067 MOV @R13+,R0
1068 ENDCODE IMMEDIATE
1069 [THEN]
1070
1071 [UNDEFINED] IS [IF]
1072
1073 CODE DEFER!
1074 MOV @R15+,2(R14)
1075 MOV @R15+,R14
1076 MOV @R13+,R0
1077 ENDCODE
1078
1079
1080 : IS
1081 STATE @
1082 IF  POSTPONE ['] POSTPONE DEFER! 
1083 ELSE ' DEFER! 
1084 THEN
1085 ; IMMEDIATE
1086 [THEN]
1087
1088 [UNDEFINED] >BODY [IF]
1089 CODE >BODY
1090 ADD #4,R14
1091 MOV @R13+,R0
1092 ENDCODE
1093 [THEN]
1094
1095
1096 CODE 20_US
1097 BEGIN
1098     BEGIN
1099         BIT #1,&$3C0
1100     0<> UNTIL
1101     BIC #1,&$3C0
1102     SUB #1,R14
1103 U< UNTIL
1104 MOV @R15+,R14
1105 MOV @R13+,R0
1106 ENDCODE
1107
1108 CODE TOP_LCD
1109     BIS.B #4,&$243
1110     BIT.B #1,&$241
1111 0= IF
1112     AND.B #$0F,R14
1113     MOV.B R14,&$222
1114     BIC.B #4,&$243
1115     MOV @R15+,R14
1116     MOV @R13+,R0
1117 THEN
1118     SUB #2,R15
1119     MOV R14,0(R15)
1120     BIC.B #4,&$243
1121     MOV.B &$220,R14
1122     AND.B #$0F,R14
1123     MOV @R13+,R0
1124 ENDCODE
1125
1126 CODE LCD_WRC
1127     BIS.B #2,&$243
1128 BW1 SUB #2,R15
1129     MOV R14,0(R15)
1130     RRUM #4,R14
1131     BIC.B #1,&$243
1132     BIS.B #$0F,&$224
1133 COLON
1134     TOP_LCD 2 20_US
1135     TOP_LCD 2 20_US 
1136 ;
1137
1138 CODE LCD_WRF
1139     BIC.B #2,&$243
1140     GOTO BW1
1141 ENDCODE
1142
1143 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
1144 : LCD_HOME $02 LCD_WRF 100 20_us ;
1145
1146
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 $1800 @ 16000 = [IF]
1169     MOV #1,&$3A0
1170 [THEN]
1171 $1800 @ 24000 = [IF]
1172     MOV #2,&$3A0
1173 [THEN]
1174 MOV #1778,R9
1175 MOV #14,R10
1176 BEGIN
1177 MOV #%1011100100,&$380
1178     RRUM    #1,R9
1179     MOV     R9,R8
1180     RRUM    #1,R8
1181     ADD     R9,R8
1182     BEGIN   CMP R8,&$390
1183     U>= UNTIL
1184     BIT.B   #4,&$200
1185     ADDC    R11,R11
1186     MOV.B   &$200,&$208
1187     BIC.B   #4,&$20C
1188     SUB     #1,R10
1189 0<> WHILE
1190     ADD R9,R8
1191     BEGIN
1192         MOV &$390,R9
1193         CMP R8,R9
1194         U>= IF
1195         BIC #$30,&$380
1196         GOTO FW1
1197         THEN
1198         BIT.B #4,&$20C
1199     0<> UNTIL
1200 REPEAT
1201 BIC #$30,&$380
1202 RLAM    #1,R11
1203 MOV.B   R11,R9
1204 RRUM    #2,R9
1205 BIT     #$4000,R11
1206 0= IF   BIS #$40,R9
1207 THEN
1208 RRUM    #3,R11
1209 XOR     @R1,R11
1210 BIT     #$400,R11
1211 0= ?GOTO FW2
1212 XOR #$400,0(R1)
1213 SUB #8,R15
1214 MOV R14,6(R15)
1215 MOV &$1DDC,4(R15)
1216 MOV #$10,&$1DDC
1217 MOV R9,0(R15)
1218 MOV #0,R14
1219 LO2HI
1220     LCD_CLEAR
1221     <# # #S #36 HOLD #>
1222     ['] LCD_WRC IS EMIT
1223     TYPE
1224     ['] EMIT >BODY IS EMIT
1225 HI2LO
1226 MOV @R15+,&$1DDC
1227 MOV @R15+,R14
1228 FW1 FW2
1229     MOV @R1+,R2
1230     BIC #%1111_1000,R2
1231     MOV @R1+,R0
1232 ENDCODE
1233
1234
1235 HDNCODE STOP_R2L
1236 CMP #$40AA,&{RC5TOLCD}+8
1237 0<> IF
1238     BIC.B #4,&$20A
1239     BIC.B #4,&$20C
1240     MOV #0,&$3C0
1241     MOV #0,&$340
1242     MOV #0,&$342
1243     MOV #$40AA,&{RC5TOLCD}+8
1244     MOV &{RC5TOLCD}+10,&WARM+2
1245     MOV &{RC5TOLCD}+12,&$FFEA
1246     MOV &{RC5TOLCD}+14,&$FFDE
1247     MOV &{RC5TOLCD}+10,R0
1248 THEN 
1249 MOV @R1+,R0
1250 ENDCODE
1251
1252 CODE STOP
1253 BW1
1254 CALL #STOP_R2L
1255 COLON
1256 ECHO
1257 ." RC5toLCD is removed,"
1258 ."  type START to restart"
1259 ABORT" "
1260 ;
1261
1262 HDNCODE INI_R2L
1263 BIC #1,&$130
1264 MOV &$1808,R14
1265 CMP #$0E,R14
1266 0<> IF
1267     CMP #$0A,R14
1268     U>= ?GOTO BW1
1269 THEN
1270 BIT.B #$20,&$240
1271 0= ?GOTO BW1
1272 MOV #0,&$1808
1273 MOV #%10_1101_0100,&$3C0
1274 $1800 @ 16000 = [IF]
1275     MOV #1,&$3E0
1276 [THEN]
1277 $1800 @ 24000 = [IF]
1278     MOV #2,&$3E0
1279 [THEN]
1280     MOV #19,&$3D2
1281 MOV #%0110_0000,&$3C6
1282     MOV #10,&$3D6
1283     BIS.B #$20,&$204
1284     BIS.B #$20,&$20A
1285     BIS.B #7,&$245
1286     BIC.B #7,&$247
1287     BIS.B #$0F,&$224
1288     BIC.B #$0F,&$226
1289     BIS.B #4,&$20A
1290     BIC.B #4,&$20C
1291 MOV #%01_0001_0100,&$340
1292     MOV ##3276,&$352
1293     MOV #%10000,&$342
1294 COLON
1295     #1000 20_US
1296     %011 TOP_LCD
1297     #205 20_US
1298     %011 TOP_LCD
1299     #5 20_US
1300     %011 TOP_LCD
1301     #2 20_US
1302     %010 TOP_LCD
1303     #2 20_US
1304     %00101000 LCD_WRF
1305     %1000 LCD_WRF
1306     LCD_CLEAR
1307     %0110 LCD_WRF
1308     %1100 LCD_WRF
1309     LCD_CLEAR
1310     ['] LCD_HOME IS CR
1311     ['] LCD_WRC  IS EMIT
1312     CR ." I love you"
1313     ['] CR >BODY IS CR
1314     ['] EMIT >BODY IS EMIT
1315     ." RC5toLCD is running. Type STOP to quit"
1316     ABORT" "
1317 ;
1318
1319 CODE START
1320 CMP #$40AA,&{RC5TOLCD}+8
1321 0= IF
1322     MOV #STOP_R2L,&{RC5TOLCD}+8
1323     MOV &WARM+2,&{RC5TOLCD}+10
1324     MOV #INI_R2L,&WARM+2
1325     MOV &$FFEA,&{RC5TOLCD}+12
1326     MOV #WDT_INT,&$FFEA
1327     MOV &$FFDE,&{RC5TOLCD}+14
1328     MOV #RC5_INT,&$FFDE
1329     MOV #INI_R2L,R0
1330 THEN
1331 MOV @R13+,R0 
1332 ENDCODE 
1333
1334
1335 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
1336
1337 MARKER {RC5TOLCD}
1338 6 ALLOT
1339
1340
1341
1342 [UNDEFINED] CONSTANT [IF]
1343 : CONSTANT 
1344 CREATE
1345 HI2LO
1346 MOV R14,-2(R10)
1347 MOV @R15+,R14
1348 MOV @R1+,R13
1349 MOV @R13+,R0
1350 ENDCODE
1351 [THEN]
1352
1353 [UNDEFINED] STATE [IF]
1354 $1DBE CONSTANT STATE
1355 [THEN]
1356
1357 [UNDEFINED] = [IF]
1358 CODE =
1359 SUB @R15+,R14
1360 0<> IF
1361     AND #0,R14
1362     MOV @R13+,R0
1363 THEN
1364 XOR #-1,R14
1365 MOV @R13+,R0
1366 ENDCODE
1367 [THEN]
1368
1369 [UNDEFINED] IF [IF]
1370 CODE IF
1371 SUB #2,R15
1372 MOV R14,0(R15)
1373 MOV &$1DC6,R14
1374 ADD #4,&$1DC6
1375 MOV #$4034,0(R14)
1376 ADD #2,R14
1377 MOV @R13+,R0
1378 ENDCODE IMMEDIATE
1379
1380 CODE THEN
1381 MOV &$1DC6,0(R14)
1382 MOV @R15+,R14
1383 MOV @R13+,R0
1384 ENDCODE IMMEDIATE
1385 [THEN]
1386
1387 [UNDEFINED] ELSE [IF]
1388 CODE ELSE
1389 ADD #4,&$1DC6
1390 MOV &$1DC6,R10
1391 MOV #$403A,-4(R10)
1392 MOV R10,0(R14)
1393 SUB #2,R10
1394 MOV R10,R14
1395 MOV @R13+,R0
1396 ENDCODE IMMEDIATE
1397 [THEN]
1398
1399 [UNDEFINED] IS [IF]
1400
1401 CODE DEFER!
1402 MOV @R15+,2(R14)
1403 MOV @R15+,R14
1404 MOV @R13+,R0
1405 ENDCODE
1406
1407
1408 : IS
1409 STATE @
1410 IF  POSTPONE ['] POSTPONE DEFER! 
1411 ELSE ' DEFER! 
1412 THEN
1413 ; IMMEDIATE
1414 [THEN]
1415
1416 [UNDEFINED] >BODY [IF]
1417 CODE >BODY
1418 ADD #4,R14
1419 MOV @R13+,R0
1420 ENDCODE
1421 [THEN]
1422
1423
1424 CODE 20_US
1425 BEGIN
1426     BEGIN
1427         BIT #1,&$3C0
1428     0<> UNTIL
1429     BIC #1,&$3C0
1430     SUB #1,R14
1431 U< UNTIL
1432 MOV @R15+,R14
1433 MOV @R13+,R0
1434 ENDCODE
1435
1436 CODE TOP_LCD
1437     BIS.B #4,&$243
1438     BIT.B #1,&$241
1439 0= IF
1440     AND.B #$0F,R14
1441     MOV.B R14,&$222
1442     BIC.B #4,&$243
1443     MOV @R15+,R14
1444     MOV @R13+,R0
1445 THEN
1446     SUB #2,R15
1447     MOV R14,0(R15)
1448     BIC.B #4,&$243
1449     MOV.B &$220,R14
1450     AND.B #$0F,R14
1451     MOV @R13+,R0
1452 ENDCODE
1453
1454 CODE LCD_WRC
1455     BIS.B #2,&$243
1456 BW1 SUB #2,R15
1457     MOV R14,0(R15)
1458     RRUM #4,R14
1459     BIC.B #1,&$243
1460     BIS.B #$0F,&$224
1461 COLON
1462     TOP_LCD 2 20_US
1463     TOP_LCD 2 20_US 
1464 ;
1465
1466 CODE LCD_WRF
1467     BIC.B #2,&$243
1468     GOTO BW1
1469 ENDCODE
1470
1471 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
1472 : LCD_HOME $02 LCD_WRF 100 20_us ;
1473
1474
1475
1476 HDNCODE WDT_INT
1477 BIT.B #$20,&$240
1478 0= IF
1479     CMP #19,&$3D6
1480     U< IF
1481         ADD #1,&$3D6
1482     THEN
1483 ELSE
1484     BIT.B #$40,&$240
1485     0= IF
1486         CMP #3,&$3D6
1487         U>= IF
1488            SUB #1,&$3D6
1489         THEN
1490     THEN
1491 THEN
1492 RETI
1493 ENDCODE
1494
1495 HDNCODE RC5_INT
1496 $1800 @ 16000 = [IF]
1497     MOV #1,&$3A0
1498 [THEN]
1499 $1800 @ 24000 = [IF]
1500     MOV #2,&$3A0
1501 [THEN]
1502 MOV #1778,R9
1503 MOV #14,R10
1504 BEGIN
1505 MOV #%1011100100,&$380
1506     RRUM    #1,R9
1507     MOV     R9,R8
1508     RRUM    #1,R8
1509     ADD     R9,R8
1510     BEGIN   CMP R8,&$390
1511     U>= UNTIL
1512     BIT.B   #4,&$200
1513     ADDC    R11,R11
1514     MOV.B   &$200,&$208
1515     BIC.B   #4,&$20C
1516     SUB     #1,R10
1517 0<> WHILE
1518     ADD R9,R8
1519     BEGIN
1520         MOV &$390,R9
1521         CMP R8,R9
1522         U>= IF
1523         BIC #$30,&$380
1524         GOTO FW1
1525         THEN
1526         BIT.B #4,&$20C
1527     0<> UNTIL
1528 REPEAT
1529 BIC #$30,&$380
1530 RLAM    #1,R11
1531 MOV.B   R11,R9
1532 RRUM    #2,R9
1533 BIT     #$4000,R11
1534 0= IF   BIS #$40,R9
1535 THEN
1536 RRUM    #3,R11
1537 XOR     @R1,R11
1538 BIT     #$400,R11
1539 0= ?GOTO FW2
1540 XOR #$400,0(R1)
1541 SUB #8,R15
1542 MOV R14,6(R15)
1543 MOV &$1DDC,4(R15)
1544 MOV #$10,&$1DDC
1545 MOV R9,0(R15)
1546 MOV #0,R14
1547 LO2HI
1548     LCD_CLEAR
1549     <# # #S #36 HOLD #>
1550     ['] LCD_WRC IS EMIT
1551     TYPE
1552     ['] EMIT >BODY IS EMIT
1553 HI2LO
1554 MOV @R15+,&$1DDC
1555 MOV @R15+,R14
1556 FW1 FW2
1557     MOV @R1+,R2
1558     BIC #%1111_1000,R2
1559     MOV @R1+,R0
1560 ENDCODE
1561
1562
1563 HDNCODE STOP_R2L
1564 CMP #$40AA,&{RC5TOLCD}+8
1565 0<> IF
1566     BIC.B #4,&$20A
1567     BIC.B #4,&$20C
1568     MOV #0,&$3C0
1569     MOV #0,&$340
1570     MOV #0,&$342
1571     MOV #$40AA,&{RC5TOLCD}+8
1572     MOV &{RC5TOLCD}+10,&WARM+2
1573     MOV &{RC5TOLCD}+12,&$FFEA
1574     MOV &{RC5TOLCD}+14,&$FFDE
1575     MOV &{RC5TOLCD}+10,R0
1576 THEN 
1577 MOV @R1+,R0
1578 ENDCODE
1579
1580 CODE STOP
1581 BW1
1582 CALL #STOP_R2L
1583 COLON
1584 ECHO
1585 ." RC5toLCD is removed,"
1586 ."  type START to restart"
1587 ABORT" "
1588 ;
1589
1590 HDNCODE INI_R2L
1591 BIC #1,&$130
1592 MOV &$1808,R14
1593 CMP #$0E,R14
1594 0<> IF
1595     CMP #$0A,R14
1596     U>= ?GOTO BW1
1597 THEN
1598 BIT.B #$20,&$240
1599 0= ?GOTO BW1
1600 MOV #0,&$1808
1601 MOV #%10_1101_0100,&$3C0
1602 $1800 @ 16000 = [IF]
1603     MOV #1,&$3E0
1604 [THEN]
1605 $1800 @ 24000 = [IF]
1606     MOV #2,&$3E0
1607 [THEN]
1608     MOV #19,&$3D2
1609 MOV #%0110_0000,&$3C6
1610     MOV #10,&$3D6
1611     BIS.B #$20,&$204
1612     BIS.B #$20,&$20A
1613     BIS.B #7,&$245
1614     BIC.B #7,&$247
1615     BIS.B #$0F,&$224
1616     BIC.B #$0F,&$226
1617     BIS.B #4,&$20A
1618     BIC.B #4,&$20C
1619 MOV #%01_0001_0100,&$340
1620     MOV ##3276,&$352
1621     MOV #%10000,&$342
1622 COLON
1623     #1000 20_US
1624     %011 TOP_LCD
1625     #205 20_US
1626     %011 TOP_LCD
1627     #5 20_US
1628     %011 TOP_LCD
1629     #2 20_US
1630     %010 TOP_LCD
1631     #2 20_US
1632     %00101000 LCD_WRF
1633     %1000 LCD_WRF
1634     LCD_CLEAR
1635     %0110 LCD_WRF
1636     %1100 LCD_WRF
1637     LCD_CLEAR
1638     ['] LCD_HOME IS CR
1639     ['] LCD_WRC  IS EMIT
1640     CR ." I love you"
1641     ['] CR >BODY IS CR
1642     ['] EMIT >BODY IS EMIT
1643     ." RC5toLCD is running. Type STOP to quit"
1644     ABORT" "
1645 ;
1646
1647 CODE START
1648 CMP #$40AA,&{RC5TOLCD}+8
1649 0= IF
1650     MOV #STOP_R2L,&{RC5TOLCD}+8
1651     MOV &WARM+2,&{RC5TOLCD}+10
1652     MOV #INI_R2L,&WARM+2
1653     MOV &$FFEA,&{RC5TOLCD}+12
1654     MOV #WDT_INT,&$FFEA
1655     MOV &$FFDE,&{RC5TOLCD}+14
1656     MOV #RC5_INT,&$FFDE
1657     MOV #INI_R2L,R0
1658 THEN
1659 MOV @R13+,R0 
1660 ENDCODE 
1661
1662
1663 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
1664
1665 MARKER {RC5TOLCD}
1666 6 ALLOT
1667
1668
1669
1670 [UNDEFINED] CONSTANT [IF]
1671 : CONSTANT 
1672 CREATE
1673 HI2LO
1674 MOV R14,-2(R10)
1675 MOV @R15+,R14
1676 MOV @R1+,R13
1677 MOV @R13+,R0
1678 ENDCODE
1679 [THEN]
1680
1681 [UNDEFINED] STATE [IF]
1682 $1DBE CONSTANT STATE
1683 [THEN]
1684
1685 [UNDEFINED] = [IF]
1686 CODE =
1687 SUB @R15+,R14
1688 0<> IF
1689     AND #0,R14
1690     MOV @R13+,R0
1691 THEN
1692 XOR #-1,R14
1693 MOV @R13+,R0
1694 ENDCODE
1695 [THEN]
1696
1697 [UNDEFINED] IF [IF]
1698 CODE IF
1699 SUB #2,R15
1700 MOV R14,0(R15)
1701 MOV &$1DC6,R14
1702 ADD #4,&$1DC6
1703 MOV #$4034,0(R14)
1704 ADD #2,R14
1705 MOV @R13+,R0
1706 ENDCODE IMMEDIATE
1707
1708 CODE THEN
1709 MOV &$1DC6,0(R14)
1710 MOV @R15+,R14
1711 MOV @R13+,R0
1712 ENDCODE IMMEDIATE
1713 [THEN]
1714
1715 [UNDEFINED] ELSE [IF]
1716 CODE ELSE
1717 ADD #4,&$1DC6
1718 MOV &$1DC6,R10
1719 MOV #$403A,-4(R10)
1720 MOV R10,0(R14)
1721 SUB #2,R10
1722 MOV R10,R14
1723 MOV @R13+,R0
1724 ENDCODE IMMEDIATE
1725 [THEN]
1726
1727 [UNDEFINED] IS [IF]
1728
1729 CODE DEFER!
1730 MOV @R15+,2(R14)
1731 MOV @R15+,R14
1732 MOV @R13+,R0
1733 ENDCODE
1734
1735
1736 : IS
1737 STATE @
1738 IF  POSTPONE ['] POSTPONE DEFER! 
1739 ELSE ' DEFER! 
1740 THEN
1741 ; IMMEDIATE
1742 [THEN]
1743
1744 [UNDEFINED] >BODY [IF]
1745 CODE >BODY
1746 ADD #4,R14
1747 MOV @R13+,R0
1748 ENDCODE
1749 [THEN]
1750
1751
1752 CODE 20_US
1753 BEGIN
1754     BEGIN
1755         BIT #1,&$3C0
1756     0<> UNTIL
1757     BIC #1,&$3C0
1758     SUB #1,R14
1759 U< UNTIL
1760 MOV @R15+,R14
1761 MOV @R13+,R0
1762 ENDCODE
1763
1764 CODE TOP_LCD
1765     BIS.B #4,&$243
1766     BIT.B #1,&$241
1767 0= IF
1768     AND.B #$0F,R14
1769     MOV.B R14,&$222
1770     BIC.B #4,&$243
1771     MOV @R15+,R14
1772     MOV @R13+,R0
1773 THEN
1774     SUB #2,R15
1775     MOV R14,0(R15)
1776     BIC.B #4,&$243
1777     MOV.B &$220,R14
1778     AND.B #$0F,R14
1779     MOV @R13+,R0
1780 ENDCODE
1781
1782 CODE LCD_WRC
1783     BIS.B #2,&$243
1784 BW1 SUB #2,R15
1785     MOV R14,0(R15)
1786     RRUM #4,R14
1787     BIC.B #1,&$243
1788     BIS.B #$0F,&$224
1789 COLON
1790     TOP_LCD 2 20_US
1791     TOP_LCD 2 20_US 
1792 ;
1793
1794 CODE LCD_WRF
1795     BIC.B #2,&$243
1796     GOTO BW1
1797 ENDCODE
1798
1799 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
1800 : LCD_HOME $02 LCD_WRF 100 20_us ;
1801
1802
1803
1804 HDNCODE WDT_INT
1805 BIT.B #$20,&$240
1806 0= IF
1807     CMP #19,&$3D6
1808     U< IF
1809         ADD #1,&$3D6
1810     THEN
1811 ELSE
1812     BIT.B #$40,&$240
1813     0= IF
1814         CMP #3,&$3D6
1815         U>= IF
1816            SUB #1,&$3D6
1817         THEN
1818     THEN
1819 THEN
1820 RETI
1821 ENDCODE
1822
1823 HDNCODE RC5_INT
1824 $1800 @ 16000 = [IF]
1825     MOV #1,&$3A0
1826 [THEN]
1827 $1800 @ 24000 = [IF]
1828     MOV #2,&$3A0
1829 [THEN]
1830 MOV #1778,R9
1831 MOV #14,R10
1832 BEGIN
1833 MOV #%1011100100,&$380
1834     RRUM    #1,R9
1835     MOV     R9,R8
1836     RRUM    #1,R8
1837     ADD     R9,R8
1838     BEGIN   CMP R8,&$390
1839     U>= UNTIL
1840     BIT.B   #4,&$200
1841     ADDC    R11,R11
1842     MOV.B   &$200,&$208
1843     BIC.B   #4,&$20C
1844     SUB     #1,R10
1845 0<> WHILE
1846     ADD R9,R8
1847     BEGIN
1848         MOV &$390,R9
1849         CMP R8,R9
1850         U>= IF
1851         BIC #$30,&$380
1852         GOTO FW1
1853         THEN
1854         BIT.B #4,&$20C
1855     0<> UNTIL
1856 REPEAT
1857 BIC #$30,&$380
1858 RLAM    #1,R11
1859 MOV.B   R11,R9
1860 RRUM    #2,R9
1861 BIT     #$4000,R11
1862 0= IF   BIS #$40,R9
1863 THEN
1864 RRUM    #3,R11
1865 XOR     @R1,R11
1866 BIT     #$400,R11
1867 0= ?GOTO FW2
1868 XOR #$400,0(R1)
1869 SUB #8,R15
1870 MOV R14,6(R15)
1871 MOV &$1DDC,4(R15)
1872 MOV #$10,&$1DDC
1873 MOV R9,0(R15)
1874 MOV #0,R14
1875 LO2HI
1876     LCD_CLEAR
1877     <# # #S #36 HOLD #>
1878     ['] LCD_WRC IS EMIT
1879     TYPE
1880     ['] EMIT >BODY IS EMIT
1881 HI2LO
1882 MOV @R15+,&$1DDC
1883 MOV @R15+,R14
1884 FW1 FW2
1885     MOV @R1+,R2
1886     BIC #%1111_1000,R2
1887     MOV @R1+,R0
1888 ENDCODE
1889
1890
1891 HDNCODE STOP_R2L
1892 CMP #$40AA,&{RC5TOLCD}+8
1893 0<> IF
1894     BIC.B #4,&$20A
1895     BIC.B #4,&$20C
1896     MOV #0,&$3C0
1897     MOV #0,&$340
1898     MOV #0,&$342
1899     MOV #$40AA,&{RC5TOLCD}+8
1900     MOV &{RC5TOLCD}+10,&WARM+2
1901     MOV &{RC5TOLCD}+12,&$FFEA
1902     MOV &{RC5TOLCD}+14,&$FFDE
1903     MOV &{RC5TOLCD}+10,R0
1904 THEN 
1905 MOV @R1+,R0
1906 ENDCODE
1907
1908 CODE STOP
1909 BW1
1910 CALL #STOP_R2L
1911 COLON
1912 ECHO
1913 ." RC5toLCD is removed,"
1914 ."  type START to restart"
1915 ABORT" "
1916 ;
1917
1918 HDNCODE INI_R2L
1919 BIC #1,&$130
1920 MOV &$1808,R14
1921 CMP #$0E,R14
1922 0<> IF
1923     CMP #$0A,R14
1924     U>= ?GOTO BW1
1925 THEN
1926 BIT.B #$20,&$240
1927 0= ?GOTO BW1
1928 MOV #0,&$1808
1929 MOV #%10_1101_0100,&$3C0
1930 $1800 @ 16000 = [IF]
1931     MOV #1,&$3E0
1932 [THEN]
1933 $1800 @ 24000 = [IF]
1934     MOV #2,&$3E0
1935 [THEN]
1936     MOV #19,&$3D2
1937 MOV #%0110_0000,&$3C6
1938     MOV #10,&$3D6
1939     BIS.B #$20,&$204
1940     BIS.B #$20,&$20A
1941     BIS.B #7,&$245
1942     BIC.B #7,&$247
1943     BIS.B #$0F,&$224
1944     BIC.B #$0F,&$226
1945     BIS.B #4,&$20A
1946     BIC.B #4,&$20C
1947 MOV #%01_0001_0100,&$340
1948     MOV ##3276,&$352
1949     MOV #%10000,&$342
1950 COLON
1951     #1000 20_US
1952     %011 TOP_LCD
1953     #205 20_US
1954     %011 TOP_LCD
1955     #5 20_US
1956     %011 TOP_LCD
1957     #2 20_US
1958     %010 TOP_LCD
1959     #2 20_US
1960     %00101000 LCD_WRF
1961     %1000 LCD_WRF
1962     LCD_CLEAR
1963     %0110 LCD_WRF
1964     %1100 LCD_WRF
1965     LCD_CLEAR
1966     ['] LCD_HOME IS CR
1967     ['] LCD_WRC  IS EMIT
1968     CR ." I love you"
1969     ['] CR >BODY IS CR
1970     ['] EMIT >BODY IS EMIT
1971     ." RC5toLCD is running. Type STOP to quit"
1972     ABORT" "
1973 ;
1974
1975 CODE START
1976 CMP #$40AA,&{RC5TOLCD}+8
1977 0= IF
1978     MOV #STOP_R2L,&{RC5TOLCD}+8
1979     MOV &WARM+2,&{RC5TOLCD}+10
1980     MOV #INI_R2L,&WARM+2
1981     MOV &$FFEA,&{RC5TOLCD}+12
1982     MOV #WDT_INT,&$FFEA
1983     MOV &$FFDE,&{RC5TOLCD}+14
1984     MOV #RC5_INT,&$FFDE
1985     MOV #INI_R2L,R0
1986 THEN
1987 MOV @R13+,R0 
1988 ENDCODE 
1989
1990
1991 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
1992
1993 MARKER {RC5TOLCD}
1994 6 ALLOT
1995
1996
1997
1998 [UNDEFINED] CONSTANT [IF]
1999 : CONSTANT 
2000 CREATE
2001 HI2LO
2002 MOV R14,-2(R10)
2003 MOV @R15+,R14
2004 MOV @R1+,R13
2005 MOV @R13+,R0
2006 ENDCODE
2007 [THEN]
2008
2009 [UNDEFINED] STATE [IF]
2010 $1DBE CONSTANT STATE
2011 [THEN]
2012
2013 [UNDEFINED] = [IF]
2014 CODE =
2015 SUB @R15+,R14
2016 0<> IF
2017     AND #0,R14
2018     MOV @R13+,R0
2019 THEN
2020 XOR #-1,R14
2021 MOV @R13+,R0
2022 ENDCODE
2023 [THEN]
2024
2025 [UNDEFINED] IF [IF]
2026 CODE IF
2027 SUB #2,R15
2028 MOV R14,0(R15)
2029 MOV &$1DC6,R14
2030 ADD #4,&$1DC6
2031 MOV #$4034,0(R14)
2032 ADD #2,R14
2033 MOV @R13+,R0
2034 ENDCODE IMMEDIATE
2035
2036 CODE THEN
2037 MOV &$1DC6,0(R14)
2038 MOV @R15+,R14
2039 MOV @R13+,R0
2040 ENDCODE IMMEDIATE
2041 [THEN]
2042
2043 [UNDEFINED] ELSE [IF]
2044 CODE ELSE
2045 ADD #4,&$1DC6
2046 MOV &$1DC6,R10
2047 MOV #$403A,-4(R10)
2048 MOV R10,0(R14)
2049 SUB #2,R10
2050 MOV R10,R14
2051 MOV @R13+,R0
2052 ENDCODE IMMEDIATE
2053 [THEN]
2054
2055 [UNDEFINED] IS [IF]
2056
2057 CODE DEFER!
2058 MOV @R15+,2(R14)
2059 MOV @R15+,R14
2060 MOV @R13+,R0
2061 ENDCODE
2062
2063
2064 : IS
2065 STATE @
2066 IF  POSTPONE ['] POSTPONE DEFER! 
2067 ELSE ' DEFER! 
2068 THEN
2069 ; IMMEDIATE
2070 [THEN]
2071
2072 [UNDEFINED] >BODY [IF]
2073 CODE >BODY
2074 ADD #4,R14
2075 MOV @R13+,R0
2076 ENDCODE
2077 [THEN]
2078
2079
2080 CODE 20_US
2081 BEGIN
2082     BEGIN
2083         BIT #1,&$3C0
2084     0<> UNTIL
2085     BIC #1,&$3C0
2086     SUB #1,R14
2087 U< UNTIL
2088 MOV @R15+,R14
2089 MOV @R13+,R0
2090 ENDCODE
2091
2092 CODE TOP_LCD
2093     BIS.B #4,&$243
2094     BIT.B #1,&$241
2095 0= IF
2096     AND.B #$0F,R14
2097     MOV.B R14,&$222
2098     BIC.B #4,&$243
2099     MOV @R15+,R14
2100     MOV @R13+,R0
2101 THEN
2102     SUB #2,R15
2103     MOV R14,0(R15)
2104     BIC.B #4,&$243
2105     MOV.B &$220,R14
2106     AND.B #$0F,R14
2107     MOV @R13+,R0
2108 ENDCODE
2109
2110 CODE LCD_WRC
2111     BIS.B #2,&$243
2112 BW1 SUB #2,R15
2113     MOV R14,0(R15)
2114     RRUM #4,R14
2115     BIC.B #1,&$243
2116     BIS.B #$0F,&$224
2117 COLON
2118     TOP_LCD 2 20_US
2119     TOP_LCD 2 20_US 
2120 ;
2121
2122 CODE LCD_WRF
2123     BIC.B #2,&$243
2124     GOTO BW1
2125 ENDCODE
2126
2127 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
2128 : LCD_HOME $02 LCD_WRF 100 20_us ;
2129
2130
2131
2132 HDNCODE WDT_INT
2133 BIT.B #$20,&$240
2134 0= IF
2135     CMP #19,&$3D6
2136     U< IF
2137         ADD #1,&$3D6
2138     THEN
2139 ELSE
2140     BIT.B #$40,&$240
2141     0= IF
2142         CMP #3,&$3D6
2143         U>= IF
2144            SUB #1,&$3D6
2145         THEN
2146     THEN
2147 THEN
2148 RETI
2149 ENDCODE
2150
2151 HDNCODE RC5_INT
2152 $1800 @ 16000 = [IF]
2153     MOV #1,&$3A0
2154 [THEN]
2155 $1800 @ 24000 = [IF]
2156     MOV #2,&$3A0
2157 [THEN]
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   CMP R8,&$390
2167     U>= UNTIL
2168     BIT.B   #4,&$200
2169     ADDC    R11,R11
2170     MOV.B   &$200,&$208
2171     BIC.B   #4,&$20C
2172     SUB     #1,R10
2173 0<> WHILE
2174     ADD R9,R8
2175     BEGIN
2176         MOV &$390,R9
2177         CMP R8,R9
2178         U>= IF
2179         BIC #$30,&$380
2180         GOTO FW1
2181         THEN
2182         BIT.B #4,&$20C
2183     0<> UNTIL
2184 REPEAT
2185 BIC #$30,&$380
2186 RLAM    #1,R11
2187 MOV.B   R11,R9
2188 RRUM    #2,R9
2189 BIT     #$4000,R11
2190 0= IF   BIS #$40,R9
2191 THEN
2192 RRUM    #3,R11
2193 XOR     @R1,R11
2194 BIT     #$400,R11
2195 0= ?GOTO FW2
2196 XOR #$400,0(R1)
2197 SUB #8,R15
2198 MOV R14,6(R15)
2199 MOV &$1DDC,4(R15)
2200 MOV #$10,&$1DDC
2201 MOV R9,0(R15)
2202 MOV #0,R14
2203 LO2HI
2204     LCD_CLEAR
2205     <# # #S #36 HOLD #>
2206     ['] LCD_WRC IS EMIT
2207     TYPE
2208     ['] EMIT >BODY IS EMIT
2209 HI2LO
2210 MOV @R15+,&$1DDC
2211 MOV @R15+,R14
2212 FW1 FW2
2213     MOV @R1+,R2
2214     BIC #%1111_1000,R2
2215     MOV @R1+,R0
2216 ENDCODE
2217
2218
2219 HDNCODE STOP_R2L
2220 CMP #$40AA,&{RC5TOLCD}+8
2221 0<> IF
2222     BIC.B #4,&$20A
2223     BIC.B #4,&$20C
2224     MOV #0,&$3C0
2225     MOV #0,&$340
2226     MOV #0,&$342
2227     MOV #$40AA,&{RC5TOLCD}+8
2228     MOV &{RC5TOLCD}+10,&WARM+2
2229     MOV &{RC5TOLCD}+12,&$FFEA
2230     MOV &{RC5TOLCD}+14,&$FFDE
2231     MOV &{RC5TOLCD}+10,R0
2232 THEN 
2233 MOV @R1+,R0
2234 ENDCODE
2235
2236 CODE STOP
2237 BW1
2238 CALL #STOP_R2L
2239 COLON
2240 ECHO
2241 ." RC5toLCD is removed,"
2242 ."  type START to restart"
2243 ABORT" "
2244 ;
2245
2246 HDNCODE INI_R2L
2247 BIC #1,&$130
2248 MOV &$1808,R14
2249 CMP #$0E,R14
2250 0<> IF
2251     CMP #$0A,R14
2252     U>= ?GOTO BW1
2253 THEN
2254 BIT.B #$20,&$240
2255 0= ?GOTO BW1
2256 MOV #0,&$1808
2257 MOV #%10_1101_0100,&$3C0
2258 $1800 @ 16000 = [IF]
2259     MOV #1,&$3E0
2260 [THEN]
2261 $1800 @ 24000 = [IF]
2262     MOV #2,&$3E0
2263 [THEN]
2264     MOV #19,&$3D2
2265 MOV #%0110_0000,&$3C6
2266     MOV #10,&$3D6
2267     BIS.B #$20,&$204
2268     BIS.B #$20,&$20A
2269     BIS.B #7,&$245
2270     BIC.B #7,&$247
2271     BIS.B #$0F,&$224
2272     BIC.B #$0F,&$226
2273     BIS.B #4,&$20A
2274     BIC.B #4,&$20C
2275 MOV #%01_0001_0100,&$340
2276     MOV ##3276,&$352
2277     MOV #%10000,&$342
2278 COLON
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     ['] LCD_HOME IS CR
2295     ['] LCD_WRC  IS EMIT
2296     CR ." I love you"
2297     ['] CR >BODY IS CR
2298     ['] EMIT >BODY IS EMIT
2299     ." RC5toLCD is running. Type STOP to quit"
2300     ABORT" "
2301 ;
2302
2303 CODE START
2304 CMP #$40AA,&{RC5TOLCD}+8
2305 0= IF
2306     MOV #STOP_R2L,&{RC5TOLCD}+8
2307     MOV &WARM+2,&{RC5TOLCD}+10
2308     MOV #INI_R2L,&WARM+2
2309     MOV &$FFEA,&{RC5TOLCD}+12
2310     MOV #WDT_INT,&$FFEA
2311     MOV &$FFDE,&{RC5TOLCD}+14
2312     MOV #RC5_INT,&$FFDE
2313     MOV #INI_R2L,R0
2314 THEN
2315 MOV @R13+,R0 
2316 ENDCODE 
2317
2318
2319 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
2320
2321 MARKER {RC5TOLCD}
2322 6 ALLOT
2323
2324
2325
2326 [UNDEFINED] CONSTANT [IF]
2327 : CONSTANT 
2328 CREATE
2329 HI2LO
2330 MOV R14,-2(R10)
2331 MOV @R15+,R14
2332 MOV @R1+,R13
2333 MOV @R13+,R0
2334 ENDCODE
2335 [THEN]
2336
2337 [UNDEFINED] STATE [IF]
2338 $1DBE CONSTANT STATE
2339 [THEN]
2340
2341 [UNDEFINED] = [IF]
2342 CODE =
2343 SUB @R15+,R14
2344 0<> IF
2345     AND #0,R14
2346     MOV @R13+,R0
2347 THEN
2348 XOR #-1,R14
2349 MOV @R13+,R0
2350 ENDCODE
2351 [THEN]
2352
2353 [UNDEFINED] IF [IF]
2354 CODE IF
2355 SUB #2,R15
2356 MOV R14,0(R15)
2357 MOV &$1DC6,R14
2358 ADD #4,&$1DC6
2359 MOV #$4034,0(R14)
2360 ADD #2,R14
2361 MOV @R13+,R0
2362 ENDCODE IMMEDIATE
2363
2364 CODE THEN
2365 MOV &$1DC6,0(R14)
2366 MOV @R15+,R14
2367 MOV @R13+,R0
2368 ENDCODE IMMEDIATE
2369 [THEN]
2370
2371 [UNDEFINED] ELSE [IF]
2372 CODE ELSE
2373 ADD #4,&$1DC6
2374 MOV &$1DC6,R10
2375 MOV #$403A,-4(R10)
2376 MOV R10,0(R14)
2377 SUB #2,R10
2378 MOV R10,R14
2379 MOV @R13+,R0
2380 ENDCODE IMMEDIATE
2381 [THEN]
2382
2383 [UNDEFINED] IS [IF]
2384
2385 CODE DEFER!
2386 MOV @R15+,2(R14)
2387 MOV @R15+,R14
2388 MOV @R13+,R0
2389 ENDCODE
2390
2391
2392 : IS
2393 STATE @
2394 IF  POSTPONE ['] POSTPONE DEFER! 
2395 ELSE ' DEFER! 
2396 THEN
2397 ; IMMEDIATE
2398 [THEN]
2399
2400 [UNDEFINED] >BODY [IF]
2401 CODE >BODY
2402 ADD #4,R14
2403 MOV @R13+,R0
2404 ENDCODE
2405 [THEN]
2406
2407
2408 CODE 20_US
2409 BEGIN
2410     BEGIN
2411         BIT #1,&$3C0
2412     0<> UNTIL
2413     BIC #1,&$3C0
2414     SUB #1,R14
2415 U< UNTIL
2416 MOV @R15+,R14
2417 MOV @R13+,R0
2418 ENDCODE
2419
2420 CODE TOP_LCD
2421     BIS.B #4,&$243
2422     BIT.B #1,&$241
2423 0= IF
2424     AND.B #$0F,R14
2425     MOV.B R14,&$222
2426     BIC.B #4,&$243
2427     MOV @R15+,R14
2428     MOV @R13+,R0
2429 THEN
2430     SUB #2,R15
2431     MOV R14,0(R15)
2432     BIC.B #4,&$243
2433     MOV.B &$220,R14
2434     AND.B #$0F,R14
2435     MOV @R13+,R0
2436 ENDCODE
2437
2438 CODE LCD_WRC
2439     BIS.B #2,&$243
2440 BW1 SUB #2,R15
2441     MOV R14,0(R15)
2442     RRUM #4,R14
2443     BIC.B #1,&$243
2444     BIS.B #$0F,&$224
2445 COLON
2446     TOP_LCD 2 20_US
2447     TOP_LCD 2 20_US 
2448 ;
2449
2450 CODE LCD_WRF
2451     BIC.B #2,&$243
2452     GOTO BW1
2453 ENDCODE
2454
2455 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
2456 : LCD_HOME $02 LCD_WRF 100 20_us ;
2457
2458
2459
2460 HDNCODE WDT_INT
2461 BIT.B #$20,&$240
2462 0= IF
2463     CMP #19,&$3D6
2464     U< IF
2465         ADD #1,&$3D6
2466     THEN
2467 ELSE
2468     BIT.B #$40,&$240
2469     0= IF
2470         CMP #3,&$3D6
2471         U>= IF
2472            SUB #1,&$3D6
2473         THEN
2474     THEN
2475 THEN
2476 RETI
2477 ENDCODE
2478
2479 HDNCODE RC5_INT
2480 $1800 @ 16000 = [IF]
2481     MOV #1,&$3A0
2482 [THEN]
2483 $1800 @ 24000 = [IF]
2484     MOV #2,&$3A0
2485 [THEN]
2486 MOV #1778,R9
2487 MOV #14,R10
2488 BEGIN
2489 MOV #%1011100100,&$380
2490     RRUM    #1,R9
2491     MOV     R9,R8
2492     RRUM    #1,R8
2493     ADD     R9,R8
2494     BEGIN   CMP R8,&$390
2495     U>= UNTIL
2496     BIT.B   #4,&$200
2497     ADDC    R11,R11
2498     MOV.B   &$200,&$208
2499     BIC.B   #4,&$20C
2500     SUB     #1,R10
2501 0<> WHILE
2502     ADD R9,R8
2503     BEGIN
2504         MOV &$390,R9
2505         CMP R8,R9
2506         U>= IF
2507         BIC #$30,&$380
2508         GOTO FW1
2509         THEN
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 #8,R15
2526 MOV R14,6(R15)
2527 MOV &$1DDC,4(R15)
2528 MOV #$10,&$1DDC
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+,&$1DDC
2539 MOV @R15+,R14
2540 FW1 FW2
2541     MOV @R1+,R2
2542     BIC #%1111_1000,R2
2543     MOV @R1+,R0
2544 ENDCODE
2545
2546
2547 HDNCODE STOP_R2L
2548 CMP #$40AA,&{RC5TOLCD}+8
2549 0<> IF
2550     BIC.B #4,&$20A
2551     BIC.B #4,&$20C
2552     MOV #0,&$3C0
2553     MOV #0,&$340
2554     MOV #0,&$342
2555     MOV #$40AA,&{RC5TOLCD}+8
2556     MOV &{RC5TOLCD}+10,&WARM+2
2557     MOV &{RC5TOLCD}+12,&$FFEA
2558     MOV &{RC5TOLCD}+14,&$FFDE
2559     MOV &{RC5TOLCD}+10,R0
2560 THEN 
2561 MOV @R1+,R0
2562 ENDCODE
2563
2564 CODE STOP
2565 BW1
2566 CALL #STOP_R2L
2567 COLON
2568 ECHO
2569 ." RC5toLCD is removed,"
2570 ."  type START to restart"
2571 ABORT" "
2572 ;
2573
2574 HDNCODE INI_R2L
2575 BIC #1,&$130
2576 MOV &$1808,R14
2577 CMP #$0E,R14
2578 0<> IF
2579     CMP #$0A,R14
2580     U>= ?GOTO BW1
2581 THEN
2582 BIT.B #$20,&$240
2583 0= ?GOTO BW1
2584 MOV #0,&$1808
2585 MOV #%10_1101_0100,&$3C0
2586 $1800 @ 16000 = [IF]
2587     MOV #1,&$3E0
2588 [THEN]
2589 $1800 @ 24000 = [IF]
2590     MOV #2,&$3E0
2591 [THEN]
2592     MOV #19,&$3D2
2593 MOV #%0110_0000,&$3C6
2594     MOV #10,&$3D6
2595     BIS.B #$20,&$204
2596     BIS.B #$20,&$20A
2597     BIS.B #7,&$245
2598     BIC.B #7,&$247
2599     BIS.B #$0F,&$224
2600     BIC.B #$0F,&$226
2601     BIS.B #4,&$20A
2602     BIC.B #4,&$20C
2603 MOV #%01_0001_0100,&$340
2604     MOV ##3276,&$352
2605     MOV #%10000,&$342
2606 COLON
2607     #1000 20_US
2608     %011 TOP_LCD
2609     #205 20_US
2610     %011 TOP_LCD
2611     #5 20_US
2612     %011 TOP_LCD
2613     #2 20_US
2614     %010 TOP_LCD
2615     #2 20_US
2616     %00101000 LCD_WRF
2617     %1000 LCD_WRF
2618     LCD_CLEAR
2619     %0110 LCD_WRF
2620     %1100 LCD_WRF
2621     LCD_CLEAR
2622     ['] LCD_HOME IS CR
2623     ['] LCD_WRC  IS EMIT
2624     CR ." I love you"
2625     ['] CR >BODY IS CR
2626     ['] EMIT >BODY IS EMIT
2627     ." RC5toLCD is running. Type STOP to quit"
2628     ABORT" "
2629 ;
2630
2631 CODE START
2632 CMP #$40AA,&{RC5TOLCD}+8
2633 0= IF
2634     MOV #STOP_R2L,&{RC5TOLCD}+8
2635     MOV &WARM+2,&{RC5TOLCD}+10
2636     MOV #INI_R2L,&WARM+2
2637     MOV &$FFEA,&{RC5TOLCD}+12
2638     MOV #WDT_INT,&$FFEA
2639     MOV &$FFDE,&{RC5TOLCD}+14
2640     MOV #RC5_INT,&$FFDE
2641     MOV #INI_R2L,R0
2642 THEN
2643 MOV @R13+,R0 
2644 ENDCODE 
2645
2646
2647 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
2648
2649 MARKER {RC5TOLCD}
2650 6 ALLOT
2651
2652
2653
2654 [UNDEFINED] CONSTANT [IF]
2655 : CONSTANT 
2656 CREATE
2657 HI2LO
2658 MOV R14,-2(R10)
2659 MOV @R15+,R14
2660 MOV @R1+,R13
2661 MOV @R13+,R0
2662 ENDCODE
2663 [THEN]
2664
2665 [UNDEFINED] STATE [IF]
2666 $1DBE CONSTANT STATE
2667 [THEN]
2668
2669 [UNDEFINED] = [IF]
2670 CODE =
2671 SUB @R15+,R14
2672 0<> IF
2673     AND #0,R14
2674     MOV @R13+,R0
2675 THEN
2676 XOR #-1,R14
2677 MOV @R13+,R0
2678 ENDCODE
2679 [THEN]
2680
2681 [UNDEFINED] IF [IF]
2682 CODE IF
2683 SUB #2,R15
2684 MOV R14,0(R15)
2685 MOV &$1DC6,R14
2686 ADD #4,&$1DC6
2687 MOV #$4034,0(R14)
2688 ADD #2,R14
2689 MOV @R13+,R0
2690 ENDCODE IMMEDIATE
2691
2692 CODE THEN
2693 MOV &$1DC6,0(R14)
2694 MOV @R15+,R14
2695 MOV @R13+,R0
2696 ENDCODE IMMEDIATE
2697 [THEN]
2698
2699 [UNDEFINED] ELSE [IF]
2700 CODE ELSE
2701 ADD #4,&$1DC6
2702 MOV &$1DC6,R10
2703 MOV #$403A,-4(R10)
2704 MOV R10,0(R14)
2705 SUB #2,R10
2706 MOV R10,R14
2707 MOV @R13+,R0
2708 ENDCODE IMMEDIATE
2709 [THEN]
2710
2711 [UNDEFINED] IS [IF]
2712
2713 CODE DEFER!
2714 MOV @R15+,2(R14)
2715 MOV @R15+,R14
2716 MOV @R13+,R0
2717 ENDCODE
2718
2719
2720 : IS
2721 STATE @
2722 IF  POSTPONE ['] POSTPONE DEFER! 
2723 ELSE ' DEFER! 
2724 THEN
2725 ; IMMEDIATE
2726 [THEN]
2727
2728 [UNDEFINED] >BODY [IF]
2729 CODE >BODY
2730 ADD #4,R14
2731 MOV @R13+,R0
2732 ENDCODE
2733 [THEN]
2734
2735
2736 CODE 20_US
2737 BEGIN
2738     BEGIN
2739         BIT #1,&$3C0
2740     0<> UNTIL
2741     BIC #1,&$3C0
2742     SUB #1,R14
2743 U< UNTIL
2744 MOV @R15+,R14
2745 MOV @R13+,R0
2746 ENDCODE
2747
2748 CODE TOP_LCD
2749     BIS.B #4,&$243
2750     BIT.B #1,&$241
2751 0= IF
2752     AND.B #$0F,R14
2753     MOV.B R14,&$222
2754     BIC.B #4,&$243
2755     MOV @R15+,R14
2756     MOV @R13+,R0
2757 THEN
2758     SUB #2,R15
2759     MOV R14,0(R15)
2760     BIC.B #4,&$243
2761     MOV.B &$220,R14
2762     AND.B #$0F,R14
2763     MOV @R13+,R0
2764 ENDCODE
2765
2766 CODE LCD_WRC
2767     BIS.B #2,&$243
2768 BW1 SUB #2,R15
2769     MOV R14,0(R15)
2770     RRUM #4,R14
2771     BIC.B #1,&$243
2772     BIS.B #$0F,&$224
2773 COLON
2774     TOP_LCD 2 20_US
2775     TOP_LCD 2 20_US 
2776 ;
2777
2778 CODE LCD_WRF
2779     BIC.B #2,&$243
2780     GOTO BW1
2781 ENDCODE
2782
2783 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
2784 : LCD_HOME $02 LCD_WRF 100 20_us ;
2785
2786
2787
2788 HDNCODE WDT_INT
2789 BIT.B #$20,&$240
2790 0= IF
2791     CMP #19,&$3D6
2792     U< IF
2793         ADD #1,&$3D6
2794     THEN
2795 ELSE
2796     BIT.B #$40,&$240
2797     0= IF
2798         CMP #3,&$3D6
2799         U>= IF
2800            SUB #1,&$3D6
2801         THEN
2802     THEN
2803 THEN
2804 RETI
2805 ENDCODE
2806
2807 HDNCODE RC5_INT
2808 $1800 @ 16000 = [IF]
2809     MOV #1,&$3A0
2810 [THEN]
2811 $1800 @ 24000 = [IF]
2812     MOV #2,&$3A0
2813 [THEN]
2814 MOV #1778,R9
2815 MOV #14,R10
2816 BEGIN
2817 MOV #%1011100100,&$380
2818     RRUM    #1,R9
2819     MOV     R9,R8
2820     RRUM    #1,R8
2821     ADD     R9,R8
2822     BEGIN   CMP R8,&$390
2823     U>= UNTIL
2824     BIT.B   #4,&$200
2825     ADDC    R11,R11
2826     MOV.B   &$200,&$208
2827     BIC.B   #4,&$20C
2828     SUB     #1,R10
2829 0<> WHILE
2830     ADD R9,R8
2831     BEGIN
2832         MOV &$390,R9
2833         CMP R8,R9
2834         U>= IF
2835         BIC #$30,&$380
2836         GOTO FW1
2837         THEN
2838         BIT.B #4,&$20C
2839     0<> UNTIL
2840 REPEAT
2841 BIC #$30,&$380
2842 RLAM    #1,R11
2843 MOV.B   R11,R9
2844 RRUM    #2,R9
2845 BIT     #$4000,R11
2846 0= IF   BIS #$40,R9
2847 THEN
2848 RRUM    #3,R11
2849 XOR     @R1,R11
2850 BIT     #$400,R11
2851 0= ?GOTO FW2
2852 XOR #$400,0(R1)
2853 SUB #8,R15
2854 MOV R14,6(R15)
2855 MOV &$1DDC,4(R15)
2856 MOV #$10,&$1DDC
2857 MOV R9,0(R15)
2858 MOV #0,R14
2859 LO2HI
2860     LCD_CLEAR
2861     <# # #S #36 HOLD #>
2862     ['] LCD_WRC IS EMIT
2863     TYPE
2864     ['] EMIT >BODY IS EMIT
2865 HI2LO
2866 MOV @R15+,&$1DDC
2867 MOV @R15+,R14
2868 FW1 FW2
2869     MOV @R1+,R2
2870     BIC #%1111_1000,R2
2871     MOV @R1+,R0
2872 ENDCODE
2873
2874
2875 HDNCODE STOP_R2L
2876 CMP #$40AA,&{RC5TOLCD}+8
2877 0<> IF
2878     BIC.B #4,&$20A
2879     BIC.B #4,&$20C
2880     MOV #0,&$3C0
2881     MOV #0,&$340
2882     MOV #0,&$342
2883     MOV #$40AA,&{RC5TOLCD}+8
2884     MOV &{RC5TOLCD}+10,&WARM+2
2885     MOV &{RC5TOLCD}+12,&$FFEA
2886     MOV &{RC5TOLCD}+14,&$FFDE
2887     MOV &{RC5TOLCD}+10,R0
2888 THEN 
2889 MOV @R1+,R0
2890 ENDCODE
2891
2892 CODE STOP
2893 BW1
2894 CALL #STOP_R2L
2895 COLON
2896 ECHO
2897 ." RC5toLCD is removed,"
2898 ."  type START to restart"
2899 ABORT" "
2900 ;
2901
2902 HDNCODE INI_R2L
2903 BIC #1,&$130
2904 MOV &$1808,R14
2905 CMP #$0E,R14
2906 0<> IF
2907     CMP #$0A,R14
2908     U>= ?GOTO BW1
2909 THEN
2910 BIT.B #$20,&$240
2911 0= ?GOTO BW1
2912 MOV #0,&$1808
2913 MOV #%10_1101_0100,&$3C0
2914 $1800 @ 16000 = [IF]
2915     MOV #1,&$3E0
2916 [THEN]
2917 $1800 @ 24000 = [IF]
2918     MOV #2,&$3E0
2919 [THEN]
2920     MOV #19,&$3D2
2921 MOV #%0110_0000,&$3C6
2922     MOV #10,&$3D6
2923     BIS.B #$20,&$204
2924     BIS.B #$20,&$20A
2925     BIS.B #7,&$245
2926     BIC.B #7,&$247
2927     BIS.B #$0F,&$224
2928     BIC.B #$0F,&$226
2929     BIS.B #4,&$20A
2930     BIC.B #4,&$20C
2931 MOV #%01_0001_0100,&$340
2932     MOV ##3276,&$352
2933     MOV #%10000,&$342
2934 COLON
2935     #1000 20_US
2936     %011 TOP_LCD
2937     #205 20_US
2938     %011 TOP_LCD
2939     #5 20_US
2940     %011 TOP_LCD
2941     #2 20_US
2942     %010 TOP_LCD
2943     #2 20_US
2944     %00101000 LCD_WRF
2945     %1000 LCD_WRF
2946     LCD_CLEAR
2947     %0110 LCD_WRF
2948     %1100 LCD_WRF
2949     LCD_CLEAR
2950     ['] LCD_HOME IS CR
2951     ['] LCD_WRC  IS EMIT
2952     CR ." I love you"
2953     ['] CR >BODY IS CR
2954     ['] EMIT >BODY IS EMIT
2955     ." RC5toLCD is running. Type STOP to quit"
2956     ABORT" "
2957 ;
2958
2959 CODE START
2960 CMP #$40AA,&{RC5TOLCD}+8
2961 0= IF
2962     MOV #STOP_R2L,&{RC5TOLCD}+8
2963     MOV &WARM+2,&{RC5TOLCD}+10
2964     MOV #INI_R2L,&WARM+2
2965     MOV &$FFEA,&{RC5TOLCD}+12
2966     MOV #WDT_INT,&$FFEA
2967     MOV &$FFDE,&{RC5TOLCD}+14
2968     MOV #RC5_INT,&$FFDE
2969     MOV #INI_R2L,R0
2970 THEN
2971 MOV @R13+,R0 
2972 ENDCODE 
2973
2974
2975 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
2976
2977 MARKER {RC5TOLCD}
2978 6 ALLOT
2979
2980
2981
2982 [UNDEFINED] CONSTANT [IF]
2983 : CONSTANT 
2984 CREATE
2985 HI2LO
2986 MOV R14,-2(R10)
2987 MOV @R15+,R14
2988 MOV @R1+,R13
2989 MOV @R13+,R0
2990 ENDCODE
2991 [THEN]
2992
2993 [UNDEFINED] STATE [IF]
2994 $1DBE CONSTANT STATE
2995 [THEN]
2996
2997 [UNDEFINED] = [IF]
2998 CODE =
2999 SUB @R15+,R14
3000 0<> IF
3001     AND #0,R14
3002     MOV @R13+,R0
3003 THEN
3004 XOR #-1,R14
3005 MOV @R13+,R0
3006 ENDCODE
3007 [THEN]
3008
3009 [UNDEFINED] IF [IF]
3010 CODE IF
3011 SUB #2,R15
3012 MOV R14,0(R15)
3013 MOV &$1DC6,R14
3014 ADD #4,&$1DC6
3015 MOV #$4034,0(R14)
3016 ADD #2,R14
3017 MOV @R13+,R0
3018 ENDCODE IMMEDIATE
3019
3020 CODE THEN
3021 MOV &$1DC6,0(R14)
3022 MOV @R15+,R14
3023 MOV @R13+,R0
3024 ENDCODE IMMEDIATE
3025 [THEN]
3026
3027 [UNDEFINED] ELSE [IF]
3028 CODE ELSE
3029 ADD #4,&$1DC6
3030 MOV &$1DC6,R10
3031 MOV #$403A,-4(R10)
3032 MOV R10,0(R14)
3033 SUB #2,R10
3034 MOV R10,R14
3035 MOV @R13+,R0
3036 ENDCODE IMMEDIATE
3037 [THEN]
3038
3039 [UNDEFINED] IS [IF]
3040
3041 CODE DEFER!
3042 MOV @R15+,2(R14)
3043 MOV @R15+,R14
3044 MOV @R13+,R0
3045 ENDCODE
3046
3047
3048 : IS
3049 STATE @
3050 IF  POSTPONE ['] POSTPONE DEFER! 
3051 ELSE ' DEFER! 
3052 THEN
3053 ; IMMEDIATE
3054 [THEN]
3055
3056 [UNDEFINED] >BODY [IF]
3057 CODE >BODY
3058 ADD #4,R14
3059 MOV @R13+,R0
3060 ENDCODE
3061 [THEN]
3062
3063
3064 CODE 20_US
3065 BEGIN
3066     BEGIN
3067         BIT #1,&$3C0
3068     0<> UNTIL
3069     BIC #1,&$3C0
3070     SUB #1,R14
3071 U< UNTIL
3072 MOV @R15+,R14
3073 MOV @R13+,R0
3074 ENDCODE
3075
3076 CODE TOP_LCD
3077     BIS.B #4,&$243
3078     BIT.B #1,&$241
3079 0= IF
3080     AND.B #$0F,R14
3081     MOV.B R14,&$222
3082     BIC.B #4,&$243
3083     MOV @R15+,R14
3084     MOV @R13+,R0
3085 THEN
3086     SUB #2,R15
3087     MOV R14,0(R15)
3088     BIC.B #4,&$243
3089     MOV.B &$220,R14
3090     AND.B #$0F,R14
3091     MOV @R13+,R0
3092 ENDCODE
3093
3094 CODE LCD_WRC
3095     BIS.B #2,&$243
3096 BW1 SUB #2,R15
3097     MOV R14,0(R15)
3098     RRUM #4,R14
3099     BIC.B #1,&$243
3100     BIS.B #$0F,&$224
3101 COLON
3102     TOP_LCD 2 20_US
3103     TOP_LCD 2 20_US 
3104 ;
3105
3106 CODE LCD_WRF
3107     BIC.B #2,&$243
3108     GOTO BW1
3109 ENDCODE
3110
3111 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
3112 : LCD_HOME $02 LCD_WRF 100 20_us ;
3113
3114
3115
3116 HDNCODE WDT_INT
3117 BIT.B #$20,&$240
3118 0= IF
3119     CMP #19,&$3D6
3120     U< IF
3121         ADD #1,&$3D6
3122     THEN
3123 ELSE
3124     BIT.B #$40,&$240
3125     0= IF
3126         CMP #3,&$3D6
3127         U>= IF
3128            SUB #1,&$3D6
3129         THEN
3130     THEN
3131 THEN
3132 RETI
3133 ENDCODE
3134
3135 HDNCODE RC5_INT
3136 $1800 @ 16000 = [IF]
3137     MOV #1,&$3A0
3138 [THEN]
3139 $1800 @ 24000 = [IF]
3140     MOV #2,&$3A0
3141 [THEN]
3142 MOV #1778,R9
3143 MOV #14,R10
3144 BEGIN
3145 MOV #%1011100100,&$380
3146     RRUM    #1,R9
3147     MOV     R9,R8
3148     RRUM    #1,R8
3149     ADD     R9,R8
3150     BEGIN   CMP R8,&$390
3151     U>= UNTIL
3152     BIT.B   #4,&$200
3153     ADDC    R11,R11
3154     MOV.B   &$200,&$208
3155     BIC.B   #4,&$20C
3156     SUB     #1,R10
3157 0<> WHILE
3158     ADD R9,R8
3159     BEGIN
3160         MOV &$390,R9
3161         CMP R8,R9
3162         U>= IF
3163         BIC #$30,&$380
3164         GOTO FW1
3165         THEN
3166         BIT.B #4,&$20C
3167     0<> UNTIL
3168 REPEAT
3169 BIC #$30,&$380
3170 RLAM    #1,R11
3171 MOV.B   R11,R9
3172 RRUM    #2,R9
3173 BIT     #$4000,R11
3174 0= IF   BIS #$40,R9
3175 THEN
3176 RRUM    #3,R11
3177 XOR     @R1,R11
3178 BIT     #$400,R11
3179 0= ?GOTO FW2
3180 XOR #$400,0(R1)
3181 SUB #8,R15
3182 MOV R14,6(R15)
3183 MOV &$1DDC,4(R15)
3184 MOV #$10,&$1DDC
3185 MOV R9,0(R15)
3186 MOV #0,R14
3187 LO2HI
3188     LCD_CLEAR
3189     <# # #S #36 HOLD #>
3190     ['] LCD_WRC IS EMIT
3191     TYPE
3192     ['] EMIT >BODY IS EMIT
3193 HI2LO
3194 MOV @R15+,&$1DDC
3195 MOV @R15+,R14
3196 FW1 FW2
3197     MOV @R1+,R2
3198     BIC #%1111_1000,R2
3199     MOV @R1+,R0
3200 ENDCODE
3201
3202
3203 HDNCODE STOP_R2L
3204 CMP #$40AA,&{RC5TOLCD}+8
3205 0<> IF
3206     BIC.B #4,&$20A
3207     BIC.B #4,&$20C
3208     MOV #0,&$3C0
3209     MOV #0,&$340
3210     MOV #0,&$342
3211     MOV #$40AA,&{RC5TOLCD}+8
3212     MOV &{RC5TOLCD}+10,&WARM+2
3213     MOV &{RC5TOLCD}+12,&$FFEA
3214     MOV &{RC5TOLCD}+14,&$FFDE
3215     MOV &{RC5TOLCD}+10,R0
3216 THEN 
3217 MOV @R1+,R0
3218 ENDCODE
3219
3220 CODE STOP
3221 BW1
3222 CALL #STOP_R2L
3223 COLON
3224 ECHO
3225 ." RC5toLCD is removed,"
3226 ."  type START to restart"
3227 ABORT" "
3228 ;
3229
3230 HDNCODE INI_R2L
3231 BIC #1,&$130
3232 MOV &$1808,R14
3233 CMP #$0E,R14
3234 0<> IF
3235     CMP #$0A,R14
3236     U>= ?GOTO BW1
3237 THEN
3238 BIT.B #$20,&$240
3239 0= ?GOTO BW1
3240 MOV #0,&$1808
3241 MOV #%10_1101_0100,&$3C0
3242 $1800 @ 16000 = [IF]
3243     MOV #1,&$3E0
3244 [THEN]
3245 $1800 @ 24000 = [IF]
3246     MOV #2,&$3E0
3247 [THEN]
3248     MOV #19,&$3D2
3249 MOV #%0110_0000,&$3C6
3250     MOV #10,&$3D6
3251     BIS.B #$20,&$204
3252     BIS.B #$20,&$20A
3253     BIS.B #7,&$245
3254     BIC.B #7,&$247
3255     BIS.B #$0F,&$224
3256     BIC.B #$0F,&$226
3257     BIS.B #4,&$20A
3258     BIC.B #4,&$20C
3259 MOV #%01_0001_0100,&$340
3260     MOV ##3276,&$352
3261     MOV #%10000,&$342
3262 COLON
3263     #1000 20_US
3264     %011 TOP_LCD
3265     #205 20_US
3266     %011 TOP_LCD
3267     #5 20_US
3268     %011 TOP_LCD
3269     #2 20_US
3270     %010 TOP_LCD
3271     #2 20_US
3272     %00101000 LCD_WRF
3273     %1000 LCD_WRF
3274     LCD_CLEAR
3275     %0110 LCD_WRF
3276     %1100 LCD_WRF
3277     LCD_CLEAR
3278     ['] LCD_HOME IS CR
3279     ['] LCD_WRC  IS EMIT
3280     CR ." I love you"
3281     ['] CR >BODY IS CR
3282     ['] EMIT >BODY IS EMIT
3283     ." RC5toLCD is running. Type STOP to quit"
3284     ABORT" "
3285 ;
3286
3287 CODE START
3288 CMP #$40AA,&{RC5TOLCD}+8
3289 0= IF
3290     MOV #STOP_R2L,&{RC5TOLCD}+8
3291     MOV &WARM+2,&{RC5TOLCD}+10
3292     MOV #INI_R2L,&WARM+2
3293     MOV &$FFEA,&{RC5TOLCD}+12
3294     MOV #WDT_INT,&$FFEA
3295     MOV &$FFDE,&{RC5TOLCD}+14
3296     MOV #RC5_INT,&$FFDE
3297     MOV #INI_R2L,R0
3298 THEN
3299 MOV @R13+,R0 
3300 ENDCODE 
3301
3302
3303 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
3304
3305 MARKER {RC5TOLCD}
3306 6 ALLOT
3307
3308
3309
3310 [UNDEFINED] CONSTANT [IF]
3311 : CONSTANT 
3312 CREATE
3313 HI2LO
3314 MOV R14,-2(R10)
3315 MOV @R15+,R14
3316 MOV @R1+,R13
3317 MOV @R13+,R0
3318 ENDCODE
3319 [THEN]
3320
3321 [UNDEFINED] STATE [IF]
3322 $1DBE CONSTANT STATE
3323 [THEN]
3324
3325 [UNDEFINED] = [IF]
3326 CODE =
3327 SUB @R15+,R14
3328 0<> IF
3329     AND #0,R14
3330     MOV @R13+,R0
3331 THEN
3332 XOR #-1,R14
3333 MOV @R13+,R0
3334 ENDCODE
3335 [THEN]
3336
3337 [UNDEFINED] IF [IF]
3338 CODE IF
3339 SUB #2,R15
3340 MOV R14,0(R15)
3341 MOV &$1DC6,R14
3342 ADD #4,&$1DC6
3343 MOV #$4034,0(R14)
3344 ADD #2,R14
3345 MOV @R13+,R0
3346 ENDCODE IMMEDIATE
3347
3348 CODE THEN
3349 MOV &$1DC6,0(R14)
3350 MOV @R15+,R14
3351 MOV @R13+,R0
3352 ENDCODE IMMEDIATE
3353 [THEN]
3354
3355 [UNDEFINED] ELSE [IF]
3356 CODE ELSE
3357 ADD #4,&$1DC6
3358 MOV &$1DC6,R10
3359 MOV #$403A,-4(R10)
3360 MOV R10,0(R14)
3361 SUB #2,R10
3362 MOV R10,R14
3363 MOV @R13+,R0
3364 ENDCODE IMMEDIATE
3365 [THEN]
3366
3367 [UNDEFINED] IS [IF]
3368
3369 CODE DEFER!
3370 MOV @R15+,2(R14)
3371 MOV @R15+,R14
3372 MOV @R13+,R0
3373 ENDCODE
3374
3375
3376 : IS
3377 STATE @
3378 IF  POSTPONE ['] POSTPONE DEFER! 
3379 ELSE ' DEFER! 
3380 THEN
3381 ; IMMEDIATE
3382 [THEN]
3383
3384 [UNDEFINED] >BODY [IF]
3385 CODE >BODY
3386 ADD #4,R14
3387 MOV @R13+,R0
3388 ENDCODE
3389 [THEN]
3390
3391
3392 CODE 20_US
3393 BEGIN
3394     BEGIN
3395         BIT #1,&$3C0
3396     0<> UNTIL
3397     BIC #1,&$3C0
3398     SUB #1,R14
3399 U< UNTIL
3400 MOV @R15+,R14
3401 MOV @R13+,R0
3402 ENDCODE
3403
3404 CODE TOP_LCD
3405     BIS.B #4,&$243
3406     BIT.B #1,&$241
3407 0= IF
3408     AND.B #$0F,R14
3409     MOV.B R14,&$222
3410     BIC.B #4,&$243
3411     MOV @R15+,R14
3412     MOV @R13+,R0
3413 THEN
3414     SUB #2,R15
3415     MOV R14,0(R15)
3416     BIC.B #4,&$243
3417     MOV.B &$220,R14
3418     AND.B #$0F,R14
3419     MOV @R13+,R0
3420 ENDCODE
3421
3422 CODE LCD_WRC
3423     BIS.B #2,&$243
3424 BW1 SUB #2,R15
3425     MOV R14,0(R15)
3426     RRUM #4,R14
3427     BIC.B #1,&$243
3428     BIS.B #$0F,&$224
3429 COLON
3430     TOP_LCD 2 20_US
3431     TOP_LCD 2 20_US 
3432 ;
3433
3434 CODE LCD_WRF
3435     BIC.B #2,&$243
3436     GOTO BW1
3437 ENDCODE
3438
3439 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
3440 : LCD_HOME $02 LCD_WRF 100 20_us ;
3441
3442
3443
3444 HDNCODE WDT_INT
3445 BIT.B #$20,&$240
3446 0= IF
3447     CMP #19,&$3D6
3448     U< IF
3449         ADD #1,&$3D6
3450     THEN
3451 ELSE
3452     BIT.B #$40,&$240
3453     0= IF
3454         CMP #3,&$3D6
3455         U>= IF
3456            SUB #1,&$3D6
3457         THEN
3458     THEN
3459 THEN
3460 RETI
3461 ENDCODE
3462
3463 HDNCODE RC5_INT
3464 $1800 @ 16000 = [IF]
3465     MOV #1,&$3A0
3466 [THEN]
3467 $1800 @ 24000 = [IF]
3468     MOV #2,&$3A0
3469 [THEN]
3470 MOV #1778,R9
3471 MOV #14,R10
3472 BEGIN
3473 MOV #%1011100100,&$380
3474     RRUM    #1,R9
3475     MOV     R9,R8
3476     RRUM    #1,R8
3477     ADD     R9,R8
3478     BEGIN   CMP R8,&$390
3479     U>= UNTIL
3480     BIT.B   #4,&$200
3481     ADDC    R11,R11
3482     MOV.B   &$200,&$208
3483     BIC.B   #4,&$20C
3484     SUB     #1,R10
3485 0<> WHILE
3486     ADD R9,R8
3487     BEGIN
3488         MOV &$390,R9
3489         CMP R8,R9
3490         U>= IF
3491         BIC #$30,&$380
3492         GOTO FW1
3493         THEN
3494         BIT.B #4,&$20C
3495     0<> UNTIL
3496 REPEAT
3497 BIC #$30,&$380
3498 RLAM    #1,R11
3499 MOV.B   R11,R9
3500 RRUM    #2,R9
3501 BIT     #$4000,R11
3502 0= IF   BIS #$40,R9
3503 THEN
3504 RRUM    #3,R11
3505 XOR     @R1,R11
3506 BIT     #$400,R11
3507 0= ?GOTO FW2
3508 XOR #$400,0(R1)
3509 SUB #8,R15
3510 MOV R14,6(R15)
3511 MOV &$1DDC,4(R15)
3512 MOV #$10,&$1DDC
3513 MOV R9,0(R15)
3514 MOV #0,R14
3515 LO2HI
3516     LCD_CLEAR
3517     <# # #S #36 HOLD #>
3518     ['] LCD_WRC IS EMIT
3519     TYPE
3520     ['] EMIT >BODY IS EMIT
3521 HI2LO
3522 MOV @R15+,&$1DDC
3523 MOV @R15+,R14
3524 FW1 FW2
3525     MOV @R1+,R2
3526     BIC #%1111_1000,R2
3527     MOV @R1+,R0
3528 ENDCODE
3529
3530
3531 HDNCODE STOP_R2L
3532 CMP #$40AA,&{RC5TOLCD}+8
3533 0<> IF
3534     BIC.B #4,&$20A
3535     BIC.B #4,&$20C
3536     MOV #0,&$3C0
3537     MOV #0,&$340
3538     MOV #0,&$342
3539     MOV #$40AA,&{RC5TOLCD}+8
3540     MOV &{RC5TOLCD}+10,&WARM+2
3541     MOV &{RC5TOLCD}+12,&$FFEA
3542     MOV &{RC5TOLCD}+14,&$FFDE
3543     MOV &{RC5TOLCD}+10,R0
3544 THEN 
3545 MOV @R1+,R0
3546 ENDCODE
3547
3548 CODE STOP
3549 BW1
3550 CALL #STOP_R2L
3551 COLON
3552 ECHO
3553 ." RC5toLCD is removed,"
3554 ."  type START to restart"
3555 ABORT" "
3556 ;
3557
3558 HDNCODE INI_R2L
3559 BIC #1,&$130
3560 MOV &$1808,R14
3561 CMP #$0E,R14
3562 0<> IF
3563     CMP #$0A,R14
3564     U>= ?GOTO BW1
3565 THEN
3566 BIT.B #$20,&$240
3567 0= ?GOTO BW1
3568 MOV #0,&$1808
3569 MOV #%10_1101_0100,&$3C0
3570 $1800 @ 16000 = [IF]
3571     MOV #1,&$3E0
3572 [THEN]
3573 $1800 @ 24000 = [IF]
3574     MOV #2,&$3E0
3575 [THEN]
3576     MOV #19,&$3D2
3577 MOV #%0110_0000,&$3C6
3578     MOV #10,&$3D6
3579     BIS.B #$20,&$204
3580     BIS.B #$20,&$20A
3581     BIS.B #7,&$245
3582     BIC.B #7,&$247
3583     BIS.B #$0F,&$224
3584     BIC.B #$0F,&$226
3585     BIS.B #4,&$20A
3586     BIC.B #4,&$20C
3587 MOV #%01_0001_0100,&$340
3588     MOV ##3276,&$352
3589     MOV #%10000,&$342
3590 COLON
3591     #1000 20_US
3592     %011 TOP_LCD
3593     #205 20_US
3594     %011 TOP_LCD
3595     #5 20_US
3596     %011 TOP_LCD
3597     #2 20_US
3598     %010 TOP_LCD
3599     #2 20_US
3600     %00101000 LCD_WRF
3601     %1000 LCD_WRF
3602     LCD_CLEAR
3603     %0110 LCD_WRF
3604     %1100 LCD_WRF
3605     LCD_CLEAR
3606     ['] LCD_HOME IS CR
3607     ['] LCD_WRC  IS EMIT
3608     CR ." I love you"
3609     ['] CR >BODY IS CR
3610     ['] EMIT >BODY IS EMIT
3611     ." RC5toLCD is running. Type STOP to quit"
3612     ABORT" "
3613 ;
3614
3615 CODE START
3616 CMP #$40AA,&{RC5TOLCD}+8
3617 0= IF
3618     MOV #STOP_R2L,&{RC5TOLCD}+8
3619     MOV &WARM+2,&{RC5TOLCD}+10
3620     MOV #INI_R2L,&WARM+2
3621     MOV &$FFEA,&{RC5TOLCD}+12
3622     MOV #WDT_INT,&$FFEA
3623     MOV &$FFDE,&{RC5TOLCD}+14
3624     MOV #RC5_INT,&$FFDE
3625     MOV #INI_R2L,R0
3626 THEN
3627 MOV @R13+,R0 
3628 ENDCODE 
3629
3630
3631 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
3632
3633 MARKER {RC5TOLCD}
3634 6 ALLOT
3635
3636
3637
3638 [UNDEFINED] CONSTANT [IF]
3639 : CONSTANT 
3640 CREATE
3641 HI2LO
3642 MOV R14,-2(R10)
3643 MOV @R15+,R14
3644 MOV @R1+,R13
3645 MOV @R13+,R0
3646 ENDCODE
3647 [THEN]
3648
3649 [UNDEFINED] STATE [IF]
3650 $1DBE CONSTANT STATE
3651 [THEN]
3652
3653 [UNDEFINED] = [IF]
3654 CODE =
3655 SUB @R15+,R14
3656 0<> IF
3657     AND #0,R14
3658     MOV @R13+,R0
3659 THEN
3660 XOR #-1,R14
3661 MOV @R13+,R0
3662 ENDCODE
3663 [THEN]
3664
3665 [UNDEFINED] IF [IF]
3666 CODE IF
3667 SUB #2,R15
3668 MOV R14,0(R15)
3669 MOV &$1DC6,R14
3670 ADD #4,&$1DC6
3671 MOV #$4034,0(R14)
3672 ADD #2,R14
3673 MOV @R13+,R0
3674 ENDCODE IMMEDIATE
3675
3676 CODE THEN
3677 MOV &$1DC6,0(R14)
3678 MOV @R15+,R14
3679 MOV @R13+,R0
3680 ENDCODE IMMEDIATE
3681 [THEN]
3682
3683 [UNDEFINED] ELSE [IF]
3684 CODE ELSE
3685 ADD #4,&$1DC6
3686 MOV &$1DC6,R10
3687 MOV #$403A,-4(R10)
3688 MOV R10,0(R14)
3689 SUB #2,R10
3690 MOV R10,R14
3691 MOV @R13+,R0
3692 ENDCODE IMMEDIATE
3693 [THEN]
3694
3695 [UNDEFINED] IS [IF]
3696
3697 CODE DEFER!
3698 MOV @R15+,2(R14)
3699 MOV @R15+,R14
3700 MOV @R13+,R0
3701 ENDCODE
3702
3703
3704 : IS
3705 STATE @
3706 IF  POSTPONE ['] POSTPONE DEFER! 
3707 ELSE ' DEFER! 
3708 THEN
3709 ; IMMEDIATE
3710 [THEN]
3711
3712 [UNDEFINED] >BODY [IF]
3713 CODE >BODY
3714 ADD #4,R14
3715 MOV @R13+,R0
3716 ENDCODE
3717 [THEN]
3718
3719
3720 CODE 20_US
3721 BEGIN
3722     BEGIN
3723         BIT #1,&$3C0
3724     0<> UNTIL
3725     BIC #1,&$3C0
3726     SUB #1,R14
3727 U< UNTIL
3728 MOV @R15+,R14
3729 MOV @R13+,R0
3730 ENDCODE
3731
3732 CODE TOP_LCD
3733     BIS.B #4,&$243
3734     BIT.B #1,&$241
3735 0= IF
3736     AND.B #$0F,R14
3737     MOV.B R14,&$222
3738     BIC.B #4,&$243
3739     MOV @R15+,R14
3740     MOV @R13+,R0
3741 THEN
3742     SUB #2,R15
3743     MOV R14,0(R15)
3744     BIC.B #4,&$243
3745     MOV.B &$220,R14
3746     AND.B #$0F,R14
3747     MOV @R13+,R0
3748 ENDCODE
3749
3750 CODE LCD_WRC
3751     BIS.B #2,&$243
3752 BW1 SUB #2,R15
3753     MOV R14,0(R15)
3754     RRUM #4,R14
3755     BIC.B #1,&$243
3756     BIS.B #$0F,&$224
3757 COLON
3758     TOP_LCD 2 20_US
3759     TOP_LCD 2 20_US 
3760 ;
3761
3762 CODE LCD_WRF
3763     BIC.B #2,&$243
3764     GOTO BW1
3765 ENDCODE
3766
3767 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
3768 : LCD_HOME $02 LCD_WRF 100 20_us ;
3769
3770
3771
3772 HDNCODE WDT_INT
3773 BIT.B #$20,&$240
3774 0= IF
3775     CMP #19,&$3D6
3776     U< IF
3777         ADD #1,&$3D6
3778     THEN
3779 ELSE
3780     BIT.B #$40,&$240
3781     0= IF
3782         CMP #3,&$3D6
3783         U>= IF
3784            SUB #1,&$3D6
3785         THEN
3786     THEN
3787 THEN
3788 RETI
3789 ENDCODE
3790
3791 HDNCODE RC5_INT
3792 $1800 @ 16000 = [IF]
3793     MOV #1,&$3A0
3794 [THEN]
3795 $1800 @ 24000 = [IF]
3796     MOV #2,&$3A0
3797 [THEN]
3798 MOV #1778,R9
3799 MOV #14,R10
3800 BEGIN
3801 MOV #%1011100100,&$380
3802     RRUM    #1,R9
3803     MOV     R9,R8
3804     RRUM    #1,R8
3805     ADD     R9,R8
3806     BEGIN   CMP R8,&$390
3807     U>= UNTIL
3808     BIT.B   #4,&$200
3809     ADDC    R11,R11
3810     MOV.B   &$200,&$208
3811     BIC.B   #4,&$20C
3812     SUB     #1,R10
3813 0<> WHILE
3814     ADD R9,R8
3815     BEGIN
3816         MOV &$390,R9
3817         CMP R8,R9
3818         U>= IF
3819         BIC #$30,&$380
3820         GOTO FW1
3821         THEN
3822         BIT.B #4,&$20C
3823     0<> UNTIL
3824 REPEAT
3825 BIC #$30,&$380
3826 RLAM    #1,R11
3827 MOV.B   R11,R9
3828 RRUM    #2,R9
3829 BIT     #$4000,R11
3830 0= IF   BIS #$40,R9
3831 THEN
3832 RRUM    #3,R11
3833 XOR     @R1,R11
3834 BIT     #$400,R11
3835 0= ?GOTO FW2
3836 XOR #$400,0(R1)
3837 SUB #8,R15
3838 MOV R14,6(R15)
3839 MOV &$1DDC,4(R15)
3840 MOV #$10,&$1DDC
3841 MOV R9,0(R15)
3842 MOV #0,R14
3843 LO2HI
3844     LCD_CLEAR
3845     <# # #S #36 HOLD #>
3846     ['] LCD_WRC IS EMIT
3847     TYPE
3848     ['] EMIT >BODY IS EMIT
3849 HI2LO
3850 MOV @R15+,&$1DDC
3851 MOV @R15+,R14
3852 FW1 FW2
3853     MOV @R1+,R2
3854     BIC #%1111_1000,R2
3855     MOV @R1+,R0
3856 ENDCODE
3857
3858
3859 HDNCODE STOP_R2L
3860 CMP #$40AA,&{RC5TOLCD}+8
3861 0<> IF
3862     BIC.B #4,&$20A
3863     BIC.B #4,&$20C
3864     MOV #0,&$3C0
3865     MOV #0,&$340
3866     MOV #0,&$342
3867     MOV #$40AA,&{RC5TOLCD}+8
3868     MOV &{RC5TOLCD}+10,&WARM+2
3869     MOV &{RC5TOLCD}+12,&$FFEA
3870     MOV &{RC5TOLCD}+14,&$FFDE
3871     MOV &{RC5TOLCD}+10,R0
3872 THEN 
3873 MOV @R1+,R0
3874 ENDCODE
3875
3876 CODE STOP
3877 BW1
3878 CALL #STOP_R2L
3879 COLON
3880 ECHO
3881 ." RC5toLCD is removed,"
3882 ."  type START to restart"
3883 ABORT" "
3884 ;
3885
3886 HDNCODE INI_R2L
3887 BIC #1,&$130
3888 MOV &$1808,R14
3889 CMP #$0E,R14
3890 0<> IF
3891     CMP #$0A,R14
3892     U>= ?GOTO BW1
3893 THEN
3894 BIT.B #$20,&$240
3895 0= ?GOTO BW1
3896 MOV #0,&$1808
3897 MOV #%10_1101_0100,&$3C0
3898 $1800 @ 16000 = [IF]
3899     MOV #1,&$3E0
3900 [THEN]
3901 $1800 @ 24000 = [IF]
3902     MOV #2,&$3E0
3903 [THEN]
3904     MOV #19,&$3D2
3905 MOV #%0110_0000,&$3C6
3906     MOV #10,&$3D6
3907     BIS.B #$20,&$204
3908     BIS.B #$20,&$20A
3909     BIS.B #7,&$245
3910     BIC.B #7,&$247
3911     BIS.B #$0F,&$224
3912     BIC.B #$0F,&$226
3913     BIS.B #4,&$20A
3914     BIC.B #4,&$20C
3915 MOV #%01_0001_0100,&$340
3916     MOV ##3276,&$352
3917     MOV #%10000,&$342
3918 COLON
3919     #1000 20_US
3920     %011 TOP_LCD
3921     #205 20_US
3922     %011 TOP_LCD
3923     #5 20_US
3924     %011 TOP_LCD
3925     #2 20_US
3926     %010 TOP_LCD
3927     #2 20_US
3928     %00101000 LCD_WRF
3929     %1000 LCD_WRF
3930     LCD_CLEAR
3931     %0110 LCD_WRF
3932     %1100 LCD_WRF
3933     LCD_CLEAR
3934     ['] LCD_HOME IS CR
3935     ['] LCD_WRC  IS EMIT
3936     CR ." I love you"
3937     ['] CR >BODY IS CR
3938     ['] EMIT >BODY IS EMIT
3939     ." RC5toLCD is running. Type STOP to quit"
3940     ABORT" "
3941 ;
3942
3943 CODE START
3944 CMP #$40AA,&{RC5TOLCD}+8
3945 0= IF
3946     MOV #STOP_R2L,&{RC5TOLCD}+8
3947     MOV &WARM+2,&{RC5TOLCD}+10
3948     MOV #INI_R2L,&WARM+2
3949     MOV &$FFEA,&{RC5TOLCD}+12
3950     MOV #WDT_INT,&$FFEA
3951     MOV &$FFDE,&{RC5TOLCD}+14
3952     MOV #RC5_INT,&$FFDE
3953     MOV #INI_R2L,R0
3954 THEN
3955 MOV @R13+,R0 
3956 ENDCODE 
3957
3958
3959 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
3960
3961 MARKER {RC5TOLCD}
3962 6 ALLOT
3963
3964
3965
3966 [UNDEFINED] CONSTANT [IF]
3967 : CONSTANT 
3968 CREATE
3969 HI2LO
3970 MOV R14,-2(R10)
3971 MOV @R15+,R14
3972 MOV @R1+,R13
3973 MOV @R13+,R0
3974 ENDCODE
3975 [THEN]
3976
3977 [UNDEFINED] STATE [IF]
3978 $1DBE CONSTANT STATE
3979 [THEN]
3980
3981 [UNDEFINED] = [IF]
3982 CODE =
3983 SUB @R15+,R14
3984 0<> IF
3985     AND #0,R14
3986     MOV @R13+,R0
3987 THEN
3988 XOR #-1,R14
3989 MOV @R13+,R0
3990 ENDCODE
3991 [THEN]
3992
3993 [UNDEFINED] IF [IF]
3994 CODE IF
3995 SUB #2,R15
3996 MOV R14,0(R15)
3997 MOV &$1DC6,R14
3998 ADD #4,&$1DC6
3999 MOV #$4034,0(R14)
4000 ADD #2,R14
4001 MOV @R13+,R0
4002 ENDCODE IMMEDIATE
4003
4004 CODE THEN
4005 MOV &$1DC6,0(R14)
4006 MOV @R15+,R14
4007 MOV @R13+,R0
4008 ENDCODE IMMEDIATE
4009 [THEN]
4010
4011 [UNDEFINED] ELSE [IF]
4012 CODE ELSE
4013 ADD #4,&$1DC6
4014 MOV &$1DC6,R10
4015 MOV #$403A,-4(R10)
4016 MOV R10,0(R14)
4017 SUB #2,R10
4018 MOV R10,R14
4019 MOV @R13+,R0
4020 ENDCODE IMMEDIATE
4021 [THEN]
4022
4023 [UNDEFINED] IS [IF]
4024
4025 CODE DEFER!
4026 MOV @R15+,2(R14)
4027 MOV @R15+,R14
4028 MOV @R13+,R0
4029 ENDCODE
4030
4031
4032 : IS
4033 STATE @
4034 IF  POSTPONE ['] POSTPONE DEFER! 
4035 ELSE ' DEFER! 
4036 THEN
4037 ; IMMEDIATE
4038 [THEN]
4039
4040 [UNDEFINED] >BODY [IF]
4041 CODE >BODY
4042 ADD #4,R14
4043 MOV @R13+,R0
4044 ENDCODE
4045 [THEN]
4046
4047
4048 CODE 20_US
4049 BEGIN
4050     BEGIN
4051         BIT #1,&$3C0
4052     0<> UNTIL
4053     BIC #1,&$3C0
4054     SUB #1,R14
4055 U< UNTIL
4056 MOV @R15+,R14
4057 MOV @R13+,R0
4058 ENDCODE
4059
4060 CODE TOP_LCD
4061     BIS.B #4,&$243
4062     BIT.B #1,&$241
4063 0= IF
4064     AND.B #$0F,R14
4065     MOV.B R14,&$222
4066     BIC.B #4,&$243
4067     MOV @R15+,R14
4068     MOV @R13+,R0
4069 THEN
4070     SUB #2,R15
4071     MOV R14,0(R15)
4072     BIC.B #4,&$243
4073     MOV.B &$220,R14
4074     AND.B #$0F,R14
4075     MOV @R13+,R0
4076 ENDCODE
4077
4078 CODE LCD_WRC
4079     BIS.B #2,&$243
4080 BW1 SUB #2,R15
4081     MOV R14,0(R15)
4082     RRUM #4,R14
4083     BIC.B #1,&$243
4084     BIS.B #$0F,&$224
4085 COLON
4086     TOP_LCD 2 20_US
4087     TOP_LCD 2 20_US 
4088 ;
4089
4090 CODE LCD_WRF
4091     BIC.B #2,&$243
4092     GOTO BW1
4093 ENDCODE
4094
4095 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
4096 : LCD_HOME $02 LCD_WRF 100 20_us ;
4097
4098
4099
4100 HDNCODE WDT_INT
4101 BIT.B #$20,&$240
4102 0= IF
4103     CMP #19,&$3D6
4104     U< IF
4105         ADD #1,&$3D6
4106     THEN
4107 ELSE
4108     BIT.B #$40,&$240
4109     0= IF
4110         CMP #3,&$3D6
4111         U>= IF
4112            SUB #1,&$3D6
4113         THEN
4114     THEN
4115 THEN
4116 RETI
4117 ENDCODE
4118
4119 HDNCODE RC5_INT
4120 $1800 @ 16000 = [IF]
4121     MOV #1,&$3A0
4122 [THEN]
4123 $1800 @ 24000 = [IF]
4124     MOV #2,&$3A0
4125 [THEN]
4126 MOV #1778,R9
4127 MOV #14,R10
4128 BEGIN
4129 MOV #%1011100100,&$380
4130     RRUM    #1,R9
4131     MOV     R9,R8
4132     RRUM    #1,R8
4133     ADD     R9,R8
4134     BEGIN   CMP R8,&$390
4135     U>= UNTIL
4136     BIT.B   #4,&$200
4137     ADDC    R11,R11
4138     MOV.B   &$200,&$208
4139     BIC.B   #4,&$20C
4140     SUB     #1,R10
4141 0<> WHILE
4142     ADD R9,R8
4143     BEGIN
4144         MOV &$390,R9
4145         CMP R8,R9
4146         U>= IF
4147         BIC #$30,&$380
4148         GOTO FW1
4149         THEN
4150         BIT.B #4,&$20C
4151     0<> UNTIL
4152 REPEAT
4153 BIC #$30,&$380
4154 RLAM    #1,R11
4155 MOV.B   R11,R9
4156 RRUM    #2,R9
4157 BIT     #$4000,R11
4158 0= IF   BIS #$40,R9
4159 THEN
4160 RRUM    #3,R11
4161 XOR     @R1,R11
4162 BIT     #$400,R11
4163 0= ?GOTO FW2
4164 XOR #$400,0(R1)
4165 SUB #8,R15
4166 MOV R14,6(R15)
4167 MOV &$1DDC,4(R15)
4168 MOV #$10,&$1DDC
4169 MOV R9,0(R15)
4170 MOV #0,R14
4171 LO2HI
4172     LCD_CLEAR
4173     <# # #S #36 HOLD #>
4174     ['] LCD_WRC IS EMIT
4175     TYPE
4176     ['] EMIT >BODY IS EMIT
4177 HI2LO
4178 MOV @R15+,&$1DDC
4179 MOV @R15+,R14
4180 FW1 FW2
4181     MOV @R1+,R2
4182     BIC #%1111_1000,R2
4183     MOV @R1+,R0
4184 ENDCODE
4185
4186
4187 HDNCODE STOP_R2L
4188 CMP #$40AA,&{RC5TOLCD}+8
4189 0<> IF
4190     BIC.B #4,&$20A
4191     BIC.B #4,&$20C
4192     MOV #0,&$3C0
4193     MOV #0,&$340
4194     MOV #0,&$342
4195     MOV #$40AA,&{RC5TOLCD}+8
4196     MOV &{RC5TOLCD}+10,&WARM+2
4197     MOV &{RC5TOLCD}+12,&$FFEA
4198     MOV &{RC5TOLCD}+14,&$FFDE
4199     MOV &{RC5TOLCD}+10,R0
4200 THEN 
4201 MOV @R1+,R0
4202 ENDCODE
4203
4204 CODE STOP
4205 BW1
4206 CALL #STOP_R2L
4207 COLON
4208 ECHO
4209 ." RC5toLCD is removed,"
4210 ."  type START to restart"
4211 ABORT" "
4212 ;
4213
4214 HDNCODE INI_R2L
4215 BIC #1,&$130
4216 MOV &$1808,R14
4217 CMP #$0E,R14
4218 0<> IF
4219     CMP #$0A,R14
4220     U>= ?GOTO BW1
4221 THEN
4222 BIT.B #$20,&$240
4223 0= ?GOTO BW1
4224 MOV #0,&$1808
4225 MOV #%10_1101_0100,&$3C0
4226 $1800 @ 16000 = [IF]
4227     MOV #1,&$3E0
4228 [THEN]
4229 $1800 @ 24000 = [IF]
4230     MOV #2,&$3E0
4231 [THEN]
4232     MOV #19,&$3D2
4233 MOV #%0110_0000,&$3C6
4234     MOV #10,&$3D6
4235     BIS.B #$20,&$204
4236     BIS.B #$20,&$20A
4237     BIS.B #7,&$245
4238     BIC.B #7,&$247
4239     BIS.B #$0F,&$224
4240     BIC.B #$0F,&$226
4241     BIS.B #4,&$20A
4242     BIC.B #4,&$20C
4243 MOV #%01_0001_0100,&$340
4244     MOV ##3276,&$352
4245     MOV #%10000,&$342
4246 COLON
4247     #1000 20_US
4248     %011 TOP_LCD
4249     #205 20_US
4250     %011 TOP_LCD
4251     #5 20_US
4252     %011 TOP_LCD
4253     #2 20_US
4254     %010 TOP_LCD
4255     #2 20_US
4256     %00101000 LCD_WRF
4257     %1000 LCD_WRF
4258     LCD_CLEAR
4259     %0110 LCD_WRF
4260     %1100 LCD_WRF
4261     LCD_CLEAR
4262     ['] LCD_HOME IS CR
4263     ['] LCD_WRC  IS EMIT
4264     CR ." I love you"
4265     ['] CR >BODY IS CR
4266     ['] EMIT >BODY IS EMIT
4267     ." RC5toLCD is running. Type STOP to quit"
4268     ABORT" "
4269 ;
4270
4271 CODE START
4272 CMP #$40AA,&{RC5TOLCD}+8
4273 0= IF
4274     MOV #STOP_R2L,&{RC5TOLCD}+8
4275     MOV &WARM+2,&{RC5TOLCD}+10
4276     MOV #INI_R2L,&WARM+2
4277     MOV &$FFEA,&{RC5TOLCD}+12
4278     MOV #WDT_INT,&$FFEA
4279     MOV &$FFDE,&{RC5TOLCD}+14
4280     MOV #RC5_INT,&$FFDE
4281     MOV #INI_R2L,R0
4282 THEN
4283 MOV @R13+,R0 
4284 ENDCODE 
4285
4286
4287 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
4288
4289 MARKER {RC5TOLCD}
4290 6 ALLOT
4291
4292
4293
4294 [UNDEFINED] CONSTANT [IF]
4295 : CONSTANT 
4296 CREATE
4297 HI2LO
4298 MOV R14,-2(R10)
4299 MOV @R15+,R14
4300 MOV @R1+,R13
4301 MOV @R13+,R0
4302 ENDCODE
4303 [THEN]
4304
4305 [UNDEFINED] STATE [IF]
4306 $1DBE CONSTANT STATE
4307 [THEN]
4308
4309 [UNDEFINED] = [IF]
4310 CODE =
4311 SUB @R15+,R14
4312 0<> IF
4313     AND #0,R14
4314     MOV @R13+,R0
4315 THEN
4316 XOR #-1,R14
4317 MOV @R13+,R0
4318 ENDCODE
4319 [THEN]
4320
4321 [UNDEFINED] IF [IF]
4322 CODE IF
4323 SUB #2,R15
4324 MOV R14,0(R15)
4325 MOV &$1DC6,R14
4326 ADD #4,&$1DC6
4327 MOV #$4034,0(R14)
4328 ADD #2,R14
4329 MOV @R13+,R0
4330 ENDCODE IMMEDIATE
4331
4332 CODE THEN
4333 MOV &$1DC6,0(R14)
4334 MOV @R15+,R14
4335 MOV @R13+,R0
4336 ENDCODE IMMEDIATE
4337 [THEN]
4338
4339 [UNDEFINED] ELSE [IF]
4340 CODE ELSE
4341 ADD #4,&$1DC6
4342 MOV &$1DC6,R10
4343 MOV #$403A,-4(R10)
4344 MOV R10,0(R14)
4345 SUB #2,R10
4346 MOV R10,R14
4347 MOV @R13+,R0
4348 ENDCODE IMMEDIATE
4349 [THEN]
4350
4351 [UNDEFINED] IS [IF]
4352
4353 CODE DEFER!
4354 MOV @R15+,2(R14)
4355 MOV @R15+,R14
4356 MOV @R13+,R0
4357 ENDCODE
4358
4359
4360 : IS
4361 STATE @
4362 IF  POSTPONE ['] POSTPONE DEFER! 
4363 ELSE ' DEFER! 
4364 THEN
4365 ; IMMEDIATE
4366 [THEN]
4367
4368 [UNDEFINED] >BODY [IF]
4369 CODE >BODY
4370 ADD #4,R14
4371 MOV @R13+,R0
4372 ENDCODE
4373 [THEN]
4374
4375
4376 CODE 20_US
4377 BEGIN
4378     BEGIN
4379         BIT #1,&$3C0
4380     0<> UNTIL
4381     BIC #1,&$3C0
4382     SUB #1,R14
4383 U< UNTIL
4384 MOV @R15+,R14
4385 MOV @R13+,R0
4386 ENDCODE
4387
4388 CODE TOP_LCD
4389     BIS.B #4,&$243
4390     BIT.B #1,&$241
4391 0= IF
4392     AND.B #$0F,R14
4393     MOV.B R14,&$222
4394     BIC.B #4,&$243
4395     MOV @R15+,R14
4396     MOV @R13+,R0
4397 THEN
4398     SUB #2,R15
4399     MOV R14,0(R15)
4400     BIC.B #4,&$243
4401     MOV.B &$220,R14
4402     AND.B #$0F,R14
4403     MOV @R13+,R0
4404 ENDCODE
4405
4406 CODE LCD_WRC
4407     BIS.B #2,&$243
4408 BW1 SUB #2,R15
4409     MOV R14,0(R15)
4410     RRUM #4,R14
4411     BIC.B #1,&$243
4412     BIS.B #$0F,&$224
4413 COLON
4414     TOP_LCD 2 20_US
4415     TOP_LCD 2 20_US 
4416 ;
4417
4418 CODE LCD_WRF
4419     BIC.B #2,&$243
4420     GOTO BW1
4421 ENDCODE
4422
4423 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
4424 : LCD_HOME $02 LCD_WRF 100 20_us ;
4425
4426
4427
4428 HDNCODE WDT_INT
4429 BIT.B #$20,&$240
4430 0= IF
4431     CMP #19,&$3D6
4432     U< IF
4433         ADD #1,&$3D6
4434     THEN
4435 ELSE
4436     BIT.B #$40,&$240
4437     0= IF
4438         CMP #3,&$3D6
4439         U>= IF
4440            SUB #1,&$3D6
4441         THEN
4442     THEN
4443 THEN
4444 RETI
4445 ENDCODE
4446
4447 HDNCODE RC5_INT
4448 $1800 @ 16000 = [IF]
4449     MOV #1,&$3A0
4450 [THEN]
4451 $1800 @ 24000 = [IF]
4452     MOV #2,&$3A0
4453 [THEN]
4454 MOV #1778,R9
4455 MOV #14,R10
4456 BEGIN
4457 MOV #%1011100100,&$380
4458     RRUM    #1,R9
4459     MOV     R9,R8
4460     RRUM    #1,R8
4461     ADD     R9,R8
4462     BEGIN   CMP R8,&$390
4463     U>= UNTIL
4464     BIT.B   #4,&$200
4465     ADDC    R11,R11
4466     MOV.B   &$200,&$208
4467     BIC.B   #4,&$20C
4468     SUB     #1,R10
4469 0<> WHILE
4470     ADD R9,R8
4471     BEGIN
4472         MOV &$390,R9
4473         CMP R8,R9
4474         U>= IF
4475         BIC #$30,&$380
4476         GOTO FW1
4477         THEN
4478         BIT.B #4,&$20C
4479     0<> UNTIL
4480 REPEAT
4481 BIC #$30,&$380
4482 RLAM    #1,R11
4483 MOV.B   R11,R9
4484 RRUM    #2,R9
4485 BIT     #$4000,R11
4486 0= IF   BIS #$40,R9
4487 THEN
4488 RRUM    #3,R11
4489 XOR     @R1,R11
4490 BIT     #$400,R11
4491 0= ?GOTO FW2
4492 XOR #$400,0(R1)
4493 SUB #8,R15
4494 MOV R14,6(R15)
4495 MOV &$1DDC,4(R15)
4496 MOV #$10,&$1DDC
4497 MOV R9,0(R15)
4498 MOV #0,R14
4499 LO2HI
4500     LCD_CLEAR
4501     <# # #S #36 HOLD #>
4502     ['] LCD_WRC IS EMIT
4503     TYPE
4504     ['] EMIT >BODY IS EMIT
4505 HI2LO
4506 MOV @R15+,&$1DDC
4507 MOV @R15+,R14
4508 FW1 FW2
4509     MOV @R1+,R2
4510     BIC #%1111_1000,R2
4511     MOV @R1+,R0
4512 ENDCODE
4513
4514
4515 HDNCODE STOP_R2L
4516 CMP #$40AA,&{RC5TOLCD}+8
4517 0<> IF
4518     BIC.B #4,&$20A
4519     BIC.B #4,&$20C
4520     MOV #0,&$3C0
4521     MOV #0,&$340
4522     MOV #0,&$342
4523     MOV #$40AA,&{RC5TOLCD}+8
4524     MOV &{RC5TOLCD}+10,&WARM+2
4525     MOV &{RC5TOLCD}+12,&$FFEA
4526     MOV &{RC5TOLCD}+14,&$FFDE
4527     MOV &{RC5TOLCD}+10,R0
4528 THEN 
4529 MOV @R1+,R0
4530 ENDCODE
4531
4532 CODE STOP
4533 BW1
4534 CALL #STOP_R2L
4535 COLON
4536 ECHO
4537 ." RC5toLCD is removed,"
4538 ."  type START to restart"
4539 ABORT" "
4540 ;
4541
4542 HDNCODE INI_R2L
4543 BIC #1,&$130
4544 MOV &$1808,R14
4545 CMP #$0E,R14
4546 0<> IF
4547     CMP #$0A,R14
4548     U>= ?GOTO BW1
4549 THEN
4550 BIT.B #$20,&$240
4551 0= ?GOTO BW1
4552 MOV #0,&$1808
4553 MOV #%10_1101_0100,&$3C0
4554 $1800 @ 16000 = [IF]
4555     MOV #1,&$3E0
4556 [THEN]
4557 $1800 @ 24000 = [IF]
4558     MOV #2,&$3E0
4559 [THEN]
4560     MOV #19,&$3D2
4561 MOV #%0110_0000,&$3C6
4562     MOV #10,&$3D6
4563     BIS.B #$20,&$204
4564     BIS.B #$20,&$20A
4565     BIS.B #7,&$245
4566     BIC.B #7,&$247
4567     BIS.B #$0F,&$224
4568     BIC.B #$0F,&$226
4569     BIS.B #4,&$20A
4570     BIC.B #4,&$20C
4571 MOV #%01_0001_0100,&$340
4572     MOV ##3276,&$352
4573     MOV #%10000,&$342
4574 COLON
4575     #1000 20_US
4576     %011 TOP_LCD
4577     #205 20_US
4578     %011 TOP_LCD
4579     #5 20_US
4580     %011 TOP_LCD
4581     #2 20_US
4582     %010 TOP_LCD
4583     #2 20_US
4584     %00101000 LCD_WRF
4585     %1000 LCD_WRF
4586     LCD_CLEAR
4587     %0110 LCD_WRF
4588     %1100 LCD_WRF
4589     LCD_CLEAR
4590     ['] LCD_HOME IS CR
4591     ['] LCD_WRC  IS EMIT
4592     CR ." I love you"
4593     ['] CR >BODY IS CR
4594     ['] EMIT >BODY IS EMIT
4595     ." RC5toLCD is running. Type STOP to quit"
4596     ABORT" "
4597 ;
4598
4599 CODE START
4600 CMP #$40AA,&{RC5TOLCD}+8
4601 0= IF
4602     MOV #STOP_R2L,&{RC5TOLCD}+8
4603     MOV &WARM+2,&{RC5TOLCD}+10
4604     MOV #INI_R2L,&WARM+2
4605     MOV &$FFEA,&{RC5TOLCD}+12
4606     MOV #WDT_INT,&$FFEA
4607     MOV &$FFDE,&{RC5TOLCD}+14
4608     MOV #RC5_INT,&$FFDE
4609     MOV #INI_R2L,R0
4610 THEN
4611 MOV @R13+,R0 
4612 ENDCODE 
4613
4614
4615 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
4616
4617 MARKER {RC5TOLCD}
4618 6 ALLOT
4619
4620
4621
4622 [UNDEFINED] CONSTANT [IF]
4623 : CONSTANT 
4624 CREATE
4625 HI2LO
4626 MOV R14,-2(R10)
4627 MOV @R15+,R14
4628 MOV @R1+,R13
4629 MOV @R13+,R0
4630 ENDCODE
4631 [THEN]
4632
4633 [UNDEFINED] STATE [IF]
4634 $1DBE CONSTANT STATE
4635 [THEN]
4636
4637 [UNDEFINED] = [IF]
4638 CODE =
4639 SUB @R15+,R14
4640 0<> IF
4641     AND #0,R14
4642     MOV @R13+,R0
4643 THEN
4644 XOR #-1,R14
4645 MOV @R13+,R0
4646 ENDCODE
4647 [THEN]
4648
4649 [UNDEFINED] IF [IF]
4650 CODE IF
4651 SUB #2,R15
4652 MOV R14,0(R15)
4653 MOV &$1DC6,R14
4654 ADD #4,&$1DC6
4655 MOV #$4034,0(R14)
4656 ADD #2,R14
4657 MOV @R13+,R0
4658 ENDCODE IMMEDIATE
4659
4660 CODE THEN
4661 MOV &$1DC6,0(R14)
4662 MOV @R15+,R14
4663 MOV @R13+,R0
4664 ENDCODE IMMEDIATE
4665 [THEN]
4666
4667 [UNDEFINED] ELSE [IF]
4668 CODE ELSE
4669 ADD #4,&$1DC6
4670 MOV &$1DC6,R10
4671 MOV #$403A,-4(R10)
4672 MOV R10,0(R14)
4673 SUB #2,R10
4674 MOV R10,R14
4675 MOV @R13+,R0
4676 ENDCODE IMMEDIATE
4677 [THEN]
4678
4679 [UNDEFINED] IS [IF]
4680
4681 CODE DEFER!
4682 MOV @R15+,2(R14)
4683 MOV @R15+,R14
4684 MOV @R13+,R0
4685 ENDCODE
4686
4687
4688 : IS
4689 STATE @
4690 IF  POSTPONE ['] POSTPONE DEFER! 
4691 ELSE ' DEFER! 
4692 THEN
4693 ; IMMEDIATE
4694 [THEN]
4695
4696 [UNDEFINED] >BODY [IF]
4697 CODE >BODY
4698 ADD #4,R14
4699 MOV @R13+,R0
4700 ENDCODE
4701 [THEN]
4702
4703
4704 CODE 20_US
4705 BEGIN
4706     BEGIN
4707         BIT #1,&$3C0
4708     0<> UNTIL
4709     BIC #1,&$3C0
4710     SUB #1,R14
4711 U< UNTIL
4712 MOV @R15+,R14
4713 MOV @R13+,R0
4714 ENDCODE
4715
4716 CODE TOP_LCD
4717     BIS.B #4,&$243
4718     BIT.B #1,&$241
4719 0= IF
4720     AND.B #$0F,R14
4721     MOV.B R14,&$222
4722     BIC.B #4,&$243
4723     MOV @R15+,R14
4724     MOV @R13+,R0
4725 THEN
4726     SUB #2,R15
4727     MOV R14,0(R15)
4728     BIC.B #4,&$243
4729     MOV.B &$220,R14
4730     AND.B #$0F,R14
4731     MOV @R13+,R0
4732 ENDCODE
4733
4734 CODE LCD_WRC
4735     BIS.B #2,&$243
4736 BW1 SUB #2,R15
4737     MOV R14,0(R15)
4738     RRUM #4,R14
4739     BIC.B #1,&$243
4740     BIS.B #$0F,&$224
4741 COLON
4742     TOP_LCD 2 20_US
4743     TOP_LCD 2 20_US 
4744 ;
4745
4746 CODE LCD_WRF
4747     BIC.B #2,&$243
4748     GOTO BW1
4749 ENDCODE
4750
4751 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
4752 : LCD_HOME $02 LCD_WRF 100 20_us ;
4753
4754
4755
4756 HDNCODE WDT_INT
4757 BIT.B #$20,&$240
4758 0= IF
4759     CMP #19,&$3D6
4760     U< IF
4761         ADD #1,&$3D6
4762     THEN
4763 ELSE
4764     BIT.B #$40,&$240
4765     0= IF
4766         CMP #3,&$3D6
4767         U>= IF
4768            SUB #1,&$3D6
4769         THEN
4770     THEN
4771 THEN
4772 RETI
4773 ENDCODE
4774
4775 HDNCODE RC5_INT
4776 $1800 @ 16000 = [IF]
4777     MOV #1,&$3A0
4778 [THEN]
4779 $1800 @ 24000 = [IF]
4780     MOV #2,&$3A0
4781 [THEN]
4782 MOV #1778,R9
4783 MOV #14,R10
4784 BEGIN
4785 MOV #%1011100100,&$380
4786     RRUM    #1,R9
4787     MOV     R9,R8
4788     RRUM    #1,R8
4789     ADD     R9,R8
4790     BEGIN   CMP R8,&$390
4791     U>= UNTIL
4792     BIT.B   #4,&$200
4793     ADDC    R11,R11
4794     MOV.B   &$200,&$208
4795     BIC.B   #4,&$20C
4796     SUB     #1,R10
4797 0<> WHILE
4798     ADD R9,R8
4799     BEGIN
4800         MOV &$390,R9
4801         CMP R8,R9
4802         U>= IF
4803         BIC #$30,&$380
4804         GOTO FW1
4805         THEN
4806         BIT.B #4,&$20C
4807     0<> UNTIL
4808 REPEAT
4809 BIC #$30,&$380
4810 RLAM    #1,R11
4811 MOV.B   R11,R9
4812 RRUM    #2,R9
4813 BIT     #$4000,R11
4814 0= IF   BIS #$40,R9
4815 THEN
4816 RRUM    #3,R11
4817 XOR     @R1,R11
4818 BIT     #$400,R11
4819 0= ?GOTO FW2
4820 XOR #$400,0(R1)
4821 SUB #8,R15
4822 MOV R14,6(R15)
4823 MOV &$1DDC,4(R15)
4824 MOV #$10,&$1DDC
4825 MOV R9,0(R15)
4826 MOV #0,R14
4827 LO2HI
4828     LCD_CLEAR
4829     <# # #S #36 HOLD #>
4830     ['] LCD_WRC IS EMIT
4831     TYPE
4832     ['] EMIT >BODY IS EMIT
4833 HI2LO
4834 MOV @R15+,&$1DDC
4835 MOV @R15+,R14
4836 FW1 FW2
4837     MOV @R1+,R2
4838     BIC #%1111_1000,R2
4839     MOV @R1+,R0
4840 ENDCODE
4841
4842
4843 HDNCODE STOP_R2L
4844 CMP #$40AA,&{RC5TOLCD}+8
4845 0<> IF
4846     BIC.B #4,&$20A
4847     BIC.B #4,&$20C
4848     MOV #0,&$3C0
4849     MOV #0,&$340
4850     MOV #0,&$342
4851     MOV #$40AA,&{RC5TOLCD}+8
4852     MOV &{RC5TOLCD}+10,&WARM+2
4853     MOV &{RC5TOLCD}+12,&$FFEA
4854     MOV &{RC5TOLCD}+14,&$FFDE
4855     MOV &{RC5TOLCD}+10,R0
4856 THEN 
4857 MOV @R1+,R0
4858 ENDCODE
4859
4860 CODE STOP
4861 BW1
4862 CALL #STOP_R2L
4863 COLON
4864 ECHO
4865 ." RC5toLCD is removed,"
4866 ."  type START to restart"
4867 ABORT" "
4868 ;
4869
4870 HDNCODE INI_R2L
4871 BIC #1,&$130
4872 MOV &$1808,R14
4873 CMP #$0E,R14
4874 0<> IF
4875     CMP #$0A,R14
4876     U>= ?GOTO BW1
4877 THEN
4878 BIT.B #$20,&$240
4879 0= ?GOTO BW1
4880 MOV #0,&$1808
4881 MOV #%10_1101_0100,&$3C0
4882 $1800 @ 16000 = [IF]
4883     MOV #1,&$3E0
4884 [THEN]
4885 $1800 @ 24000 = [IF]
4886     MOV #2,&$3E0
4887 [THEN]
4888     MOV #19,&$3D2
4889 MOV #%0110_0000,&$3C6
4890     MOV #10,&$3D6
4891     BIS.B #$20,&$204
4892     BIS.B #$20,&$20A
4893     BIS.B #7,&$245
4894     BIC.B #7,&$247
4895     BIS.B #$0F,&$224
4896     BIC.B #$0F,&$226
4897     BIS.B #4,&$20A
4898     BIC.B #4,&$20C
4899 MOV #%01_0001_0100,&$340
4900     MOV ##3276,&$352
4901     MOV #%10000,&$342
4902 COLON
4903     #1000 20_US
4904     %011 TOP_LCD
4905     #205 20_US
4906     %011 TOP_LCD
4907     #5 20_US
4908     %011 TOP_LCD
4909     #2 20_US
4910     %010 TOP_LCD
4911     #2 20_US
4912     %00101000 LCD_WRF
4913     %1000 LCD_WRF
4914     LCD_CLEAR
4915     %0110 LCD_WRF
4916     %1100 LCD_WRF
4917     LCD_CLEAR
4918     ['] LCD_HOME IS CR
4919     ['] LCD_WRC  IS EMIT
4920     CR ." I love you"
4921     ['] CR >BODY IS CR
4922     ['] EMIT >BODY IS EMIT
4923     ." RC5toLCD is running. Type STOP to quit"
4924     ABORT" "
4925 ;
4926
4927 CODE START
4928 CMP #$40AA,&{RC5TOLCD}+8
4929 0= IF
4930     MOV #STOP_R2L,&{RC5TOLCD}+8
4931     MOV &WARM+2,&{RC5TOLCD}+10
4932     MOV #INI_R2L,&WARM+2
4933     MOV &$FFEA,&{RC5TOLCD}+12
4934     MOV #WDT_INT,&$FFEA
4935     MOV &$FFDE,&{RC5TOLCD}+14
4936     MOV #RC5_INT,&$FFDE
4937     MOV #INI_R2L,R0
4938 THEN
4939 MOV @R13+,R0 
4940 ENDCODE 
4941
4942
4943 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
4944
4945 MARKER {RC5TOLCD}
4946 6 ALLOT
4947
4948
4949
4950 [UNDEFINED] CONSTANT [IF]
4951 : CONSTANT 
4952 CREATE
4953 HI2LO
4954 MOV R14,-2(R10)
4955 MOV @R15+,R14
4956 MOV @R1+,R13
4957 MOV @R13+,R0
4958 ENDCODE
4959 [THEN]
4960
4961 [UNDEFINED] STATE [IF]
4962 $1DBE CONSTANT STATE
4963 [THEN]
4964
4965 [UNDEFINED] = [IF]
4966 CODE =
4967 SUB @R15+,R14
4968 0<> IF
4969     AND #0,R14
4970     MOV @R13+,R0
4971 THEN
4972 XOR #-1,R14
4973 MOV @R13+,R0
4974 ENDCODE
4975 [THEN]
4976
4977 [UNDEFINED] IF [IF]
4978 CODE IF
4979 SUB #2,R15
4980 MOV R14,0(R15)
4981 MOV &$1DC6,R14
4982 ADD #4,&$1DC6
4983 MOV #$4034,0(R14)
4984 ADD #2,R14
4985 MOV @R13+,R0
4986 ENDCODE IMMEDIATE
4987
4988 CODE THEN
4989 MOV &$1DC6,0(R14)
4990 MOV @R15+,R14
4991 MOV @R13+,R0
4992 ENDCODE IMMEDIATE
4993 [THEN]
4994
4995 [UNDEFINED] ELSE [IF]
4996 CODE ELSE
4997 ADD #4,&$1DC6
4998 MOV &$1DC6,R10
4999 MOV #$403A,-4(R10)
5000 MOV R10,0(R14)
5001 SUB #2,R10
5002 MOV R10,R14
5003 MOV @R13+,R0
5004 ENDCODE IMMEDIATE
5005 [THEN]
5006
5007 [UNDEFINED] IS [IF]
5008
5009 CODE DEFER!
5010 MOV @R15+,2(R14)
5011 MOV @R15+,R14
5012 MOV @R13+,R0
5013 ENDCODE
5014
5015
5016 : IS
5017 STATE @
5018 IF  POSTPONE ['] POSTPONE DEFER! 
5019 ELSE ' DEFER! 
5020 THEN
5021 ; IMMEDIATE
5022 [THEN]
5023
5024 [UNDEFINED] >BODY [IF]
5025 CODE >BODY
5026 ADD #4,R14
5027 MOV @R13+,R0
5028 ENDCODE
5029 [THEN]
5030
5031
5032 CODE 20_US
5033 BEGIN
5034     BEGIN
5035         BIT #1,&$3C0
5036     0<> UNTIL
5037     BIC #1,&$3C0
5038     SUB #1,R14
5039 U< UNTIL
5040 MOV @R15+,R14
5041 MOV @R13+,R0
5042 ENDCODE
5043
5044 CODE TOP_LCD
5045     BIS.B #4,&$243
5046     BIT.B #1,&$241
5047 0= IF
5048     AND.B #$0F,R14
5049     MOV.B R14,&$222
5050     BIC.B #4,&$243
5051     MOV @R15+,R14
5052     MOV @R13+,R0
5053 THEN
5054     SUB #2,R15
5055     MOV R14,0(R15)
5056     BIC.B #4,&$243
5057     MOV.B &$220,R14
5058     AND.B #$0F,R14
5059     MOV @R13+,R0
5060 ENDCODE
5061
5062 CODE LCD_WRC
5063     BIS.B #2,&$243
5064 BW1 SUB #2,R15
5065     MOV R14,0(R15)
5066     RRUM #4,R14
5067     BIC.B #1,&$243
5068     BIS.B #$0F,&$224
5069 COLON
5070     TOP_LCD 2 20_US
5071     TOP_LCD 2 20_US 
5072 ;
5073
5074 CODE LCD_WRF
5075     BIC.B #2,&$243
5076     GOTO BW1
5077 ENDCODE
5078
5079 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
5080 : LCD_HOME $02 LCD_WRF 100 20_us ;
5081
5082
5083
5084 HDNCODE WDT_INT
5085 BIT.B #$20,&$240
5086 0= IF
5087     CMP #19,&$3D6
5088     U< IF
5089         ADD #1,&$3D6
5090     THEN
5091 ELSE
5092     BIT.B #$40,&$240
5093     0= IF
5094         CMP #3,&$3D6
5095         U>= IF
5096            SUB #1,&$3D6
5097         THEN
5098     THEN
5099 THEN
5100 RETI
5101 ENDCODE
5102
5103 HDNCODE RC5_INT
5104 $1800 @ 16000 = [IF]
5105     MOV #1,&$3A0
5106 [THEN]
5107 $1800 @ 24000 = [IF]
5108     MOV #2,&$3A0
5109 [THEN]
5110 MOV #1778,R9
5111 MOV #14,R10
5112 BEGIN
5113 MOV #%1011100100,&$380
5114     RRUM    #1,R9
5115     MOV     R9,R8
5116     RRUM    #1,R8
5117     ADD     R9,R8
5118     BEGIN   CMP R8,&$390
5119     U>= UNTIL
5120     BIT.B   #4,&$200
5121     ADDC    R11,R11
5122     MOV.B   &$200,&$208
5123     BIC.B   #4,&$20C
5124     SUB     #1,R10
5125 0<> WHILE
5126     ADD R9,R8
5127     BEGIN
5128         MOV &$390,R9
5129         CMP R8,R9
5130         U>= IF
5131         BIC #$30,&$380
5132         GOTO FW1
5133         THEN
5134         BIT.B #4,&$20C
5135     0<> UNTIL
5136 REPEAT
5137 BIC #$30,&$380
5138 RLAM    #1,R11
5139 MOV.B   R11,R9
5140 RRUM    #2,R9
5141 BIT     #$4000,R11
5142 0= IF   BIS #$40,R9
5143 THEN
5144 RRUM    #3,R11
5145 XOR     @R1,R11
5146 BIT     #$400,R11
5147 0= ?GOTO FW2
5148 XOR #$400,0(R1)
5149 SUB #8,R15
5150 MOV R14,6(R15)
5151 MOV &$1DDC,4(R15)
5152 MOV #$10,&$1DDC
5153 MOV R9,0(R15)
5154 MOV #0,R14
5155 LO2HI
5156     LCD_CLEAR
5157     <# # #S #36 HOLD #>
5158     ['] LCD_WRC IS EMIT
5159     TYPE
5160     ['] EMIT >BODY IS EMIT
5161 HI2LO
5162 MOV @R15+,&$1DDC
5163 MOV @R15+,R14
5164 FW1 FW2
5165     MOV @R1+,R2
5166     BIC #%1111_1000,R2
5167     MOV @R1+,R0
5168 ENDCODE
5169
5170
5171 HDNCODE STOP_R2L
5172 CMP #$40AA,&{RC5TOLCD}+8
5173 0<> IF
5174     BIC.B #4,&$20A
5175     BIC.B #4,&$20C
5176     MOV #0,&$3C0
5177     MOV #0,&$340
5178     MOV #0,&$342
5179     MOV #$40AA,&{RC5TOLCD}+8
5180     MOV &{RC5TOLCD}+10,&WARM+2
5181     MOV &{RC5TOLCD}+12,&$FFEA
5182     MOV &{RC5TOLCD}+14,&$FFDE
5183     MOV &{RC5TOLCD}+10,R0
5184 THEN 
5185 MOV @R1+,R0
5186 ENDCODE
5187
5188 CODE STOP
5189 BW1
5190 CALL #STOP_R2L
5191 COLON
5192 ECHO
5193 ." RC5toLCD is removed,"
5194 ."  type START to restart"
5195 ABORT" "
5196 ;
5197
5198 HDNCODE INI_R2L
5199 BIC #1,&$130
5200 MOV &$1808,R14
5201 CMP #$0E,R14
5202 0<> IF
5203     CMP #$0A,R14
5204     U>= ?GOTO BW1
5205 THEN
5206 BIT.B #$20,&$240
5207 0= ?GOTO BW1
5208 MOV #0,&$1808
5209 MOV #%10_1101_0100,&$3C0
5210 $1800 @ 16000 = [IF]
5211     MOV #1,&$3E0
5212 [THEN]
5213 $1800 @ 24000 = [IF]
5214     MOV #2,&$3E0
5215 [THEN]
5216     MOV #19,&$3D2
5217 MOV #%0110_0000,&$3C6
5218     MOV #10,&$3D6
5219     BIS.B #$20,&$204
5220     BIS.B #$20,&$20A
5221     BIS.B #7,&$245
5222     BIC.B #7,&$247
5223     BIS.B #$0F,&$224
5224     BIC.B #$0F,&$226
5225     BIS.B #4,&$20A
5226     BIC.B #4,&$20C
5227 MOV #%01_0001_0100,&$340
5228     MOV ##3276,&$352
5229     MOV #%10000,&$342
5230 COLON
5231     #1000 20_US
5232     %011 TOP_LCD
5233     #205 20_US
5234     %011 TOP_LCD
5235     #5 20_US
5236     %011 TOP_LCD
5237     #2 20_US
5238     %010 TOP_LCD
5239     #2 20_US
5240     %00101000 LCD_WRF
5241     %1000 LCD_WRF
5242     LCD_CLEAR
5243     %0110 LCD_WRF
5244     %1100 LCD_WRF
5245     LCD_CLEAR
5246     ['] LCD_HOME IS CR
5247     ['] LCD_WRC  IS EMIT
5248     CR ." I love you"
5249     ['] CR >BODY IS CR
5250     ['] EMIT >BODY IS EMIT
5251     ." RC5toLCD is running. Type STOP to quit"
5252     ABORT" "
5253 ;
5254
5255 CODE START
5256 CMP #$40AA,&{RC5TOLCD}+8
5257 0= IF
5258     MOV #STOP_R2L,&{RC5TOLCD}+8
5259     MOV &WARM+2,&{RC5TOLCD}+10
5260     MOV #INI_R2L,&WARM+2
5261     MOV &$FFEA,&{RC5TOLCD}+12
5262     MOV #WDT_INT,&$FFEA
5263     MOV &$FFDE,&{RC5TOLCD}+14
5264     MOV #RC5_INT,&$FFDE
5265     MOV #INI_R2L,R0
5266 THEN
5267 MOV @R13+,R0 
5268 ENDCODE 
5269
5270
5271 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
5272
5273 MARKER {RC5TOLCD}
5274 6 ALLOT
5275
5276
5277
5278 [UNDEFINED] CONSTANT [IF]
5279 : CONSTANT 
5280 CREATE
5281 HI2LO
5282 MOV R14,-2(R10)
5283 MOV @R15+,R14
5284 MOV @R1+,R13
5285 MOV @R13+,R0
5286 ENDCODE
5287 [THEN]
5288
5289 [UNDEFINED] STATE [IF]
5290 $1DBE CONSTANT STATE
5291 [THEN]
5292
5293 [UNDEFINED] = [IF]
5294 CODE =
5295 SUB @R15+,R14
5296 0<> IF
5297     AND #0,R14
5298     MOV @R13+,R0
5299 THEN
5300 XOR #-1,R14
5301 MOV @R13+,R0
5302 ENDCODE
5303 [THEN]
5304
5305 [UNDEFINED] IF [IF]
5306 CODE IF
5307 SUB #2,R15
5308 MOV R14,0(R15)
5309 MOV &$1DC6,R14
5310 ADD #4,&$1DC6
5311 MOV #$4034,0(R14)
5312 ADD #2,R14
5313 MOV @R13+,R0
5314 ENDCODE IMMEDIATE
5315
5316 CODE THEN
5317 MOV &$1DC6,0(R14)
5318 MOV @R15+,R14
5319 MOV @R13+,R0
5320 ENDCODE IMMEDIATE
5321 [THEN]
5322
5323 [UNDEFINED] ELSE [IF]
5324 CODE ELSE
5325 ADD #4,&$1DC6
5326 MOV &$1DC6,R10
5327 MOV #$403A,-4(R10)
5328 MOV R10,0(R14)
5329 SUB #2,R10
5330 MOV R10,R14
5331 MOV @R13+,R0
5332 ENDCODE IMMEDIATE
5333 [THEN]
5334
5335 [UNDEFINED] IS [IF]
5336
5337 CODE DEFER!
5338 MOV @R15+,2(R14)
5339 MOV @R15+,R14
5340 MOV @R13+,R0
5341 ENDCODE
5342
5343
5344 : IS
5345 STATE @
5346 IF  POSTPONE ['] POSTPONE DEFER! 
5347 ELSE ' DEFER! 
5348 THEN
5349 ; IMMEDIATE
5350 [THEN]
5351
5352 [UNDEFINED] >BODY [IF]
5353 CODE >BODY
5354 ADD #4,R14
5355 MOV @R13+,R0
5356 ENDCODE
5357 [THEN]
5358
5359
5360 CODE 20_US
5361 BEGIN
5362     BEGIN
5363         BIT #1,&$3C0
5364     0<> UNTIL
5365     BIC #1,&$3C0
5366     SUB #1,R14
5367 U< UNTIL
5368 MOV @R15+,R14
5369 MOV @R13+,R0
5370 ENDCODE
5371
5372 CODE TOP_LCD
5373     BIS.B #4,&$243
5374     BIT.B #1,&$241
5375 0= IF
5376     AND.B #$0F,R14
5377     MOV.B R14,&$222
5378     BIC.B #4,&$243
5379     MOV @R15+,R14
5380     MOV @R13+,R0
5381 THEN
5382     SUB #2,R15
5383     MOV R14,0(R15)
5384     BIC.B #4,&$243
5385     MOV.B &$220,R14
5386     AND.B #$0F,R14
5387     MOV @R13+,R0
5388 ENDCODE
5389
5390 CODE LCD_WRC
5391     BIS.B #2,&$243
5392 BW1 SUB #2,R15
5393     MOV R14,0(R15)
5394     RRUM #4,R14
5395     BIC.B #1,&$243
5396     BIS.B #$0F,&$224
5397 COLON
5398     TOP_LCD 2 20_US
5399     TOP_LCD 2 20_US 
5400 ;
5401
5402 CODE LCD_WRF
5403     BIC.B #2,&$243
5404     GOTO BW1
5405 ENDCODE
5406
5407 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
5408 : LCD_HOME $02 LCD_WRF 100 20_us ;
5409
5410
5411
5412 HDNCODE WDT_INT
5413 BIT.B #$20,&$240
5414 0= IF
5415     CMP #19,&$3D6
5416     U< IF
5417         ADD #1,&$3D6
5418     THEN
5419 ELSE
5420     BIT.B #$40,&$240
5421     0= IF
5422         CMP #3,&$3D6
5423         U>= IF
5424            SUB #1,&$3D6
5425         THEN
5426     THEN
5427 THEN
5428 RETI
5429 ENDCODE
5430
5431 HDNCODE RC5_INT
5432 $1800 @ 16000 = [IF]
5433     MOV #1,&$3A0
5434 [THEN]
5435 $1800 @ 24000 = [IF]
5436     MOV #2,&$3A0
5437 [THEN]
5438 MOV #1778,R9
5439 MOV #14,R10
5440 BEGIN
5441 MOV #%1011100100,&$380
5442     RRUM    #1,R9
5443     MOV     R9,R8
5444     RRUM    #1,R8
5445     ADD     R9,R8
5446     BEGIN   CMP R8,&$390
5447     U>= UNTIL
5448     BIT.B   #4,&$200
5449     ADDC    R11,R11
5450     MOV.B   &$200,&$208
5451     BIC.B   #4,&$20C
5452     SUB     #1,R10
5453 0<> WHILE
5454     ADD R9,R8
5455     BEGIN
5456         MOV &$390,R9
5457         CMP R8,R9
5458         U>= IF
5459         BIC #$30,&$380
5460         GOTO FW1
5461         THEN
5462         BIT.B #4,&$20C
5463     0<> UNTIL
5464 REPEAT
5465 BIC #$30,&$380
5466 RLAM    #1,R11
5467 MOV.B   R11,R9
5468 RRUM    #2,R9
5469 BIT     #$4000,R11
5470 0= IF   BIS #$40,R9
5471 THEN
5472 RRUM    #3,R11
5473 XOR     @R1,R11
5474 BIT     #$400,R11
5475 0= ?GOTO FW2
5476 XOR #$400,0(R1)
5477 SUB #8,R15
5478 MOV R14,6(R15)
5479 MOV &$1DDC,4(R15)
5480 MOV #$10,&$1DDC
5481 MOV R9,0(R15)
5482 MOV #0,R14
5483 LO2HI
5484     LCD_CLEAR
5485     <# # #S #36 HOLD #>
5486     ['] LCD_WRC IS EMIT
5487     TYPE
5488     ['] EMIT >BODY IS EMIT
5489 HI2LO
5490 MOV @R15+,&$1DDC
5491 MOV @R15+,R14
5492 FW1 FW2
5493     MOV @R1+,R2
5494     BIC #%1111_1000,R2
5495     MOV @R1+,R0
5496 ENDCODE
5497
5498
5499 HDNCODE STOP_R2L
5500 CMP #$40AA,&{RC5TOLCD}+8
5501 0<> IF
5502     BIC.B #4,&$20A
5503     BIC.B #4,&$20C
5504     MOV #0,&$3C0
5505     MOV #0,&$340
5506     MOV #0,&$342
5507     MOV #$40AA,&{RC5TOLCD}+8
5508     MOV &{RC5TOLCD}+10,&WARM+2
5509     MOV &{RC5TOLCD}+12,&$FFEA
5510     MOV &{RC5TOLCD}+14,&$FFDE
5511     MOV &{RC5TOLCD}+10,R0
5512 THEN 
5513 MOV @R1+,R0
5514 ENDCODE
5515
5516 CODE STOP
5517 BW1
5518 CALL #STOP_R2L
5519 COLON
5520 ECHO
5521 ." RC5toLCD is removed,"
5522 ."  type START to restart"
5523 ABORT" "
5524 ;
5525
5526 HDNCODE INI_R2L
5527 BIC #1,&$130
5528 MOV &$1808,R14
5529 CMP #$0E,R14
5530 0<> IF
5531     CMP #$0A,R14
5532     U>= ?GOTO BW1
5533 THEN
5534 BIT.B #$20,&$240
5535 0= ?GOTO BW1
5536 MOV #0,&$1808
5537 MOV #%10_1101_0100,&$3C0
5538 $1800 @ 16000 = [IF]
5539     MOV #1,&$3E0
5540 [THEN]
5541 $1800 @ 24000 = [IF]
5542     MOV #2,&$3E0
5543 [THEN]
5544     MOV #19,&$3D2
5545 MOV #%0110_0000,&$3C6
5546     MOV #10,&$3D6
5547     BIS.B #$20,&$204
5548     BIS.B #$20,&$20A
5549     BIS.B #7,&$245
5550     BIC.B #7,&$247
5551     BIS.B #$0F,&$224
5552     BIC.B #$0F,&$226
5553     BIS.B #4,&$20A
5554     BIC.B #4,&$20C
5555 MOV #%01_0001_0100,&$340
5556     MOV ##3276,&$352
5557     MOV #%10000,&$342
5558 COLON
5559     #1000 20_US
5560     %011 TOP_LCD
5561     #205 20_US
5562     %011 TOP_LCD
5563     #5 20_US
5564     %011 TOP_LCD
5565     #2 20_US
5566     %010 TOP_LCD
5567     #2 20_US
5568     %00101000 LCD_WRF
5569     %1000 LCD_WRF
5570     LCD_CLEAR
5571     %0110 LCD_WRF
5572     %1100 LCD_WRF
5573     LCD_CLEAR
5574     ['] LCD_HOME IS CR
5575     ['] LCD_WRC  IS EMIT
5576     CR ." I love you"
5577     ['] CR >BODY IS CR
5578     ['] EMIT >BODY IS EMIT
5579     ." RC5toLCD is running. Type STOP to quit"
5580     ABORT" "
5581 ;
5582
5583 CODE START
5584 CMP #$40AA,&{RC5TOLCD}+8
5585 0= IF
5586     MOV #STOP_R2L,&{RC5TOLCD}+8
5587     MOV &WARM+2,&{RC5TOLCD}+10
5588     MOV #INI_R2L,&WARM+2
5589     MOV &$FFEA,&{RC5TOLCD}+12
5590     MOV #WDT_INT,&$FFEA
5591     MOV &$FFDE,&{RC5TOLCD}+14
5592     MOV #RC5_INT,&$FFDE
5593     MOV #INI_R2L,R0
5594 THEN
5595 MOV @R13+,R0 
5596 ENDCODE 
5597
5598
5599 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
5600
5601 MARKER {RC5TOLCD}
5602 6 ALLOT
5603
5604
5605
5606 [UNDEFINED] CONSTANT [IF]
5607 : CONSTANT 
5608 CREATE
5609 HI2LO
5610 MOV R14,-2(R10)
5611 MOV @R15+,R14
5612 MOV @R1+,R13
5613 MOV @R13+,R0
5614 ENDCODE
5615 [THEN]
5616
5617 [UNDEFINED] STATE [IF]
5618 $1DBE CONSTANT STATE
5619 [THEN]
5620
5621 [UNDEFINED] = [IF]
5622 CODE =
5623 SUB @R15+,R14
5624 0<> IF
5625     AND #0,R14
5626     MOV @R13+,R0
5627 THEN
5628 XOR #-1,R14
5629 MOV @R13+,R0
5630 ENDCODE
5631 [THEN]
5632
5633 [UNDEFINED] IF [IF]
5634 CODE IF
5635 SUB #2,R15
5636 MOV R14,0(R15)
5637 MOV &$1DC6,R14
5638 ADD #4,&$1DC6
5639 MOV #$4034,0(R14)
5640 ADD #2,R14
5641 MOV @R13+,R0
5642 ENDCODE IMMEDIATE
5643
5644 CODE THEN
5645 MOV &$1DC6,0(R14)
5646 MOV @R15+,R14
5647 MOV @R13+,R0
5648 ENDCODE IMMEDIATE
5649 [THEN]
5650
5651 [UNDEFINED] ELSE [IF]
5652 CODE ELSE
5653 ADD #4,&$1DC6
5654 MOV &$1DC6,R10
5655 MOV #$403A,-4(R10)
5656 MOV R10,0(R14)
5657 SUB #2,R10
5658 MOV R10,R14
5659 MOV @R13+,R0
5660 ENDCODE IMMEDIATE
5661 [THEN]
5662
5663 [UNDEFINED] IS [IF]
5664
5665 CODE DEFER!
5666 MOV @R15+,2(R14)
5667 MOV @R15+,R14
5668 MOV @R13+,R0
5669 ENDCODE
5670
5671
5672 : IS
5673 STATE @
5674 IF  POSTPONE ['] POSTPONE DEFER! 
5675 ELSE ' DEFER! 
5676 THEN
5677 ; IMMEDIATE
5678 [THEN]
5679
5680 [UNDEFINED] >BODY [IF]
5681 CODE >BODY
5682 ADD #4,R14
5683 MOV @R13+,R0
5684 ENDCODE
5685 [THEN]
5686
5687
5688 CODE 20_US
5689 BEGIN
5690     BEGIN
5691         BIT #1,&$3C0
5692     0<> UNTIL
5693     BIC #1,&$3C0
5694     SUB #1,R14
5695 U< UNTIL
5696 MOV @R15+,R14
5697 MOV @R13+,R0
5698 ENDCODE
5699
5700 CODE TOP_LCD
5701     BIS.B #4,&$243
5702     BIT.B #1,&$241
5703 0= IF
5704     AND.B #$0F,R14
5705     MOV.B R14,&$222
5706     BIC.B #4,&$243
5707     MOV @R15+,R14
5708     MOV @R13+,R0
5709 THEN
5710     SUB #2,R15
5711     MOV R14,0(R15)
5712     BIC.B #4,&$243
5713     MOV.B &$220,R14
5714     AND.B #$0F,R14
5715     MOV @R13+,R0
5716 ENDCODE
5717
5718 CODE LCD_WRC
5719     BIS.B #2,&$243
5720 BW1 SUB #2,R15
5721     MOV R14,0(R15)
5722     RRUM #4,R14
5723     BIC.B #1,&$243
5724     BIS.B #$0F,&$224
5725 COLON
5726     TOP_LCD 2 20_US
5727     TOP_LCD 2 20_US 
5728 ;
5729
5730 CODE LCD_WRF
5731     BIC.B #2,&$243
5732     GOTO BW1
5733 ENDCODE
5734
5735 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
5736 : LCD_HOME $02 LCD_WRF 100 20_us ;
5737
5738
5739
5740 HDNCODE WDT_INT
5741 BIT.B #$20,&$240
5742 0= IF
5743     CMP #19,&$3D6
5744     U< IF
5745         ADD #1,&$3D6
5746     THEN
5747 ELSE
5748     BIT.B #$40,&$240
5749     0= IF
5750         CMP #3,&$3D6
5751         U>= IF
5752            SUB #1,&$3D6
5753         THEN
5754     THEN
5755 THEN
5756 RETI
5757 ENDCODE
5758
5759 HDNCODE RC5_INT
5760 $1800 @ 16000 = [IF]
5761     MOV #1,&$3A0
5762 [THEN]
5763 $1800 @ 24000 = [IF]
5764     MOV #2,&$3A0
5765 [THEN]
5766 MOV #1778,R9
5767 MOV #14,R10
5768 BEGIN
5769 MOV #%1011100100,&$380
5770     RRUM    #1,R9
5771     MOV     R9,R8
5772     RRUM    #1,R8
5773     ADD     R9,R8
5774     BEGIN   CMP R8,&$390
5775     U>= UNTIL
5776     BIT.B   #4,&$200
5777     ADDC    R11,R11
5778     MOV.B   &$200,&$208
5779     BIC.B   #4,&$20C
5780     SUB     #1,R10
5781 0<> WHILE
5782     ADD R9,R8
5783     BEGIN
5784         MOV &$390,R9
5785         CMP R8,R9
5786         U>= IF
5787         BIC #$30,&$380
5788         GOTO FW1
5789         THEN
5790         BIT.B #4,&$20C
5791     0<> UNTIL
5792 REPEAT
5793 BIC #$30,&$380
5794 RLAM    #1,R11
5795 MOV.B   R11,R9
5796 RRUM    #2,R9
5797 BIT     #$4000,R11
5798 0= IF   BIS #$40,R9
5799 THEN
5800 RRUM    #3,R11
5801 XOR     @R1,R11
5802 BIT     #$400,R11
5803 0= ?GOTO FW2
5804 XOR #$400,0(R1)
5805 SUB #8,R15
5806 MOV R14,6(R15)
5807 MOV &$1DDC,4(R15)
5808 MOV #$10,&$1DDC
5809 MOV R9,0(R15)
5810 MOV #0,R14
5811 LO2HI
5812     LCD_CLEAR
5813     <# # #S #36 HOLD #>
5814     ['] LCD_WRC IS EMIT
5815     TYPE
5816     ['] EMIT >BODY IS EMIT
5817 HI2LO
5818 MOV @R15+,&$1DDC
5819 MOV @R15+,R14
5820 FW1 FW2
5821     MOV @R1+,R2
5822     BIC #%1111_1000,R2
5823     MOV @R1+,R0
5824 ENDCODE
5825
5826
5827 HDNCODE STOP_R2L
5828 CMP #$40AA,&{RC5TOLCD}+8
5829 0<> IF
5830     BIC.B #4,&$20A
5831     BIC.B #4,&$20C
5832     MOV #0,&$3C0
5833     MOV #0,&$340
5834     MOV #0,&$342
5835     MOV #$40AA,&{RC5TOLCD}+8
5836     MOV &{RC5TOLCD}+10,&WARM+2
5837     MOV &{RC5TOLCD}+12,&$FFEA
5838     MOV &{RC5TOLCD}+14,&$FFDE
5839     MOV &{RC5TOLCD}+10,R0
5840 THEN 
5841 MOV @R1+,R0
5842 ENDCODE
5843
5844 CODE STOP
5845 BW1
5846 CALL #STOP_R2L
5847 COLON
5848 ECHO
5849 ." RC5toLCD is removed,"
5850 ."  type START to restart"
5851 ABORT" "
5852 ;
5853
5854 HDNCODE INI_R2L
5855 BIC #1,&$130
5856 MOV &$1808,R14
5857 CMP #$0E,R14
5858 0<> IF
5859     CMP #$0A,R14
5860     U>= ?GOTO BW1
5861 THEN
5862 BIT.B #$20,&$240
5863 0= ?GOTO BW1
5864 MOV #0,&$1808
5865 MOV #%10_1101_0100,&$3C0
5866 $1800 @ 16000 = [IF]
5867     MOV #1,&$3E0
5868 [THEN]
5869 $1800 @ 24000 = [IF]
5870     MOV #2,&$3E0
5871 [THEN]
5872     MOV #19,&$3D2
5873 MOV #%0110_0000,&$3C6
5874     MOV #10,&$3D6
5875     BIS.B #$20,&$204
5876     BIS.B #$20,&$20A
5877     BIS.B #7,&$245
5878     BIC.B #7,&$247
5879     BIS.B #$0F,&$224
5880     BIC.B #$0F,&$226
5881     BIS.B #4,&$20A
5882     BIC.B #4,&$20C
5883 MOV #%01_0001_0100,&$340
5884     MOV ##3276,&$352
5885     MOV #%10000,&$342
5886 COLON
5887     #1000 20_US
5888     %011 TOP_LCD
5889     #205 20_US
5890     %011 TOP_LCD
5891     #5 20_US
5892     %011 TOP_LCD
5893     #2 20_US
5894     %010 TOP_LCD
5895     #2 20_US
5896     %00101000 LCD_WRF
5897     %1000 LCD_WRF
5898     LCD_CLEAR
5899     %0110 LCD_WRF
5900     %1100 LCD_WRF
5901     LCD_CLEAR
5902     ['] LCD_HOME IS CR
5903     ['] LCD_WRC  IS EMIT
5904     CR ." I love you"
5905     ['] CR >BODY IS CR
5906     ['] EMIT >BODY IS EMIT
5907     ." RC5toLCD is running. Type STOP to quit"
5908     ABORT" "
5909 ;
5910
5911 CODE START
5912 CMP #$40AA,&{RC5TOLCD}+8
5913 0= IF
5914     MOV #STOP_R2L,&{RC5TOLCD}+8
5915     MOV &WARM+2,&{RC5TOLCD}+10
5916     MOV #INI_R2L,&WARM+2
5917     MOV &$FFEA,&{RC5TOLCD}+12
5918     MOV #WDT_INT,&$FFEA
5919     MOV &$FFDE,&{RC5TOLCD}+14
5920     MOV #RC5_INT,&$FFDE
5921     MOV #INI_R2L,R0
5922 THEN
5923 MOV @R13+,R0 
5924 ENDCODE 
5925
5926
5927 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
5928
5929 MARKER {RC5TOLCD}
5930 6 ALLOT
5931
5932
5933
5934 [UNDEFINED] CONSTANT [IF]
5935 : CONSTANT 
5936 CREATE
5937 HI2LO
5938 MOV R14,-2(R10)
5939 MOV @R15+,R14
5940 MOV @R1+,R13
5941 MOV @R13+,R0
5942 ENDCODE
5943 [THEN]
5944
5945 [UNDEFINED] STATE [IF]
5946 $1DBE CONSTANT STATE
5947 [THEN]
5948
5949 [UNDEFINED] = [IF]
5950 CODE =
5951 SUB @R15+,R14
5952 0<> IF
5953     AND #0,R14
5954     MOV @R13+,R0
5955 THEN
5956 XOR #-1,R14
5957 MOV @R13+,R0
5958 ENDCODE
5959 [THEN]
5960
5961 [UNDEFINED] IF [IF]
5962 CODE IF
5963 SUB #2,R15
5964 MOV R14,0(R15)
5965 MOV &$1DC6,R14
5966 ADD #4,&$1DC6
5967 MOV #$4034,0(R14)
5968 ADD #2,R14
5969 MOV @R13+,R0
5970 ENDCODE IMMEDIATE
5971
5972 CODE THEN
5973 MOV &$1DC6,0(R14)
5974 MOV @R15+,R14
5975 MOV @R13+,R0
5976 ENDCODE IMMEDIATE
5977 [THEN]
5978
5979 [UNDEFINED] ELSE [IF]
5980 CODE ELSE
5981 ADD #4,&$1DC6
5982 MOV &$1DC6,R10
5983 MOV #$403A,-4(R10)
5984 MOV R10,0(R14)
5985 SUB #2,R10
5986 MOV R10,R14
5987 MOV @R13+,R0
5988 ENDCODE IMMEDIATE
5989 [THEN]
5990
5991 [UNDEFINED] IS [IF]
5992
5993 CODE DEFER!
5994 MOV @R15+,2(R14)
5995 MOV @R15+,R14
5996 MOV @R13+,R0
5997 ENDCODE
5998
5999
6000 : IS
6001 STATE @
6002 IF  POSTPONE ['] POSTPONE DEFER! 
6003 ELSE ' DEFER! 
6004 THEN
6005 ; IMMEDIATE
6006 [THEN]
6007
6008 [UNDEFINED] >BODY [IF]
6009 CODE >BODY
6010 ADD #4,R14
6011 MOV @R13+,R0
6012 ENDCODE
6013 [THEN]
6014
6015
6016 CODE 20_US
6017 BEGIN
6018     BEGIN
6019         BIT #1,&$3C0
6020     0<> UNTIL
6021     BIC #1,&$3C0
6022     SUB #1,R14
6023 U< UNTIL
6024 MOV @R15+,R14
6025 MOV @R13+,R0
6026 ENDCODE
6027
6028 CODE TOP_LCD
6029     BIS.B #4,&$243
6030     BIT.B #1,&$241
6031 0= IF
6032     AND.B #$0F,R14
6033     MOV.B R14,&$222
6034     BIC.B #4,&$243
6035     MOV @R15+,R14
6036     MOV @R13+,R0
6037 THEN
6038     SUB #2,R15
6039     MOV R14,0(R15)
6040     BIC.B #4,&$243
6041     MOV.B &$220,R14
6042     AND.B #$0F,R14
6043     MOV @R13+,R0
6044 ENDCODE
6045
6046 CODE LCD_WRC
6047     BIS.B #2,&$243
6048 BW1 SUB #2,R15
6049     MOV R14,0(R15)
6050     RRUM #4,R14
6051     BIC.B #1,&$243
6052     BIS.B #$0F,&$224
6053 COLON
6054     TOP_LCD 2 20_US
6055     TOP_LCD 2 20_US 
6056 ;
6057
6058 CODE LCD_WRF
6059     BIC.B #2,&$243
6060     GOTO BW1
6061 ENDCODE
6062
6063 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
6064 : LCD_HOME $02 LCD_WRF 100 20_us ;
6065
6066
6067
6068 HDNCODE WDT_INT
6069 BIT.B #$20,&$240
6070 0= IF
6071     CMP #19,&$3D6
6072     U< IF
6073         ADD #1,&$3D6
6074     THEN
6075 ELSE
6076     BIT.B #$40,&$240
6077     0= IF
6078         CMP #3,&$3D6
6079         U>= IF
6080            SUB #1,&$3D6
6081         THEN
6082     THEN
6083 THEN
6084 RETI
6085 ENDCODE
6086
6087 HDNCODE RC5_INT
6088 $1800 @ 16000 = [IF]
6089     MOV #1,&$3A0
6090 [THEN]
6091 $1800 @ 24000 = [IF]
6092     MOV #2,&$3A0
6093 [THEN]
6094 MOV #1778,R9
6095 MOV #14,R10
6096 BEGIN
6097 MOV #%1011100100,&$380
6098     RRUM    #1,R9
6099     MOV     R9,R8
6100     RRUM    #1,R8
6101     ADD     R9,R8
6102     BEGIN   CMP R8,&$390
6103     U>= UNTIL
6104     BIT.B   #4,&$200
6105     ADDC    R11,R11
6106     MOV.B   &$200,&$208
6107     BIC.B   #4,&$20C
6108     SUB     #1,R10
6109 0<> WHILE
6110     ADD R9,R8
6111     BEGIN
6112         MOV &$390,R9
6113         CMP R8,R9
6114         U>= IF
6115         BIC #$30,&$380
6116         GOTO FW1
6117         THEN
6118         BIT.B #4,&$20C
6119     0<> UNTIL
6120 REPEAT
6121 BIC #$30,&$380
6122 RLAM    #1,R11
6123 MOV.B   R11,R9
6124 RRUM    #2,R9
6125 BIT     #$4000,R11
6126 0= IF   BIS #$40,R9
6127 THEN
6128 RRUM    #3,R11
6129 XOR     @R1,R11
6130 BIT     #$400,R11
6131 0= ?GOTO FW2
6132 XOR #$400,0(R1)
6133 SUB #8,R15
6134 MOV R14,6(R15)
6135 MOV &$1DDC,4(R15)
6136 MOV #$10,&$1DDC
6137 MOV R9,0(R15)
6138 MOV #0,R14
6139 LO2HI
6140     LCD_CLEAR
6141     <# # #S #36 HOLD #>
6142     ['] LCD_WRC IS EMIT
6143     TYPE
6144     ['] EMIT >BODY IS EMIT
6145 HI2LO
6146 MOV @R15+,&$1DDC
6147 MOV @R15+,R14
6148 FW1 FW2
6149     MOV @R1+,R2
6150     BIC #%1111_1000,R2
6151     MOV @R1+,R0
6152 ENDCODE
6153
6154
6155 HDNCODE STOP_R2L
6156 CMP #$40AA,&{RC5TOLCD}+8
6157 0<> IF
6158     BIC.B #4,&$20A
6159     BIC.B #4,&$20C
6160     MOV #0,&$3C0
6161     MOV #0,&$340
6162     MOV #0,&$342
6163     MOV #$40AA,&{RC5TOLCD}+8
6164     MOV &{RC5TOLCD}+10,&WARM+2
6165     MOV &{RC5TOLCD}+12,&$FFEA
6166     MOV &{RC5TOLCD}+14,&$FFDE
6167     MOV &{RC5TOLCD}+10,R0
6168 THEN 
6169 MOV @R1+,R0
6170 ENDCODE
6171
6172 CODE STOP
6173 BW1
6174 CALL #STOP_R2L
6175 COLON
6176 ECHO
6177 ." RC5toLCD is removed,"
6178 ."  type START to restart"
6179 ABORT" "
6180 ;
6181
6182 HDNCODE INI_R2L
6183 BIC #1,&$130
6184 MOV &$1808,R14
6185 CMP #$0E,R14
6186 0<> IF
6187     CMP #$0A,R14
6188     U>= ?GOTO BW1
6189 THEN
6190 BIT.B #$20,&$240
6191 0= ?GOTO BW1
6192 MOV #0,&$1808
6193 MOV #%10_1101_0100,&$3C0
6194 $1800 @ 16000 = [IF]
6195     MOV #1,&$3E0
6196 [THEN]
6197 $1800 @ 24000 = [IF]
6198     MOV #2,&$3E0
6199 [THEN]
6200     MOV #19,&$3D2
6201 MOV #%0110_0000,&$3C6
6202     MOV #10,&$3D6
6203     BIS.B #$20,&$204
6204     BIS.B #$20,&$20A
6205     BIS.B #7,&$245
6206     BIC.B #7,&$247
6207     BIS.B #$0F,&$224
6208     BIC.B #$0F,&$226
6209     BIS.B #4,&$20A
6210     BIC.B #4,&$20C
6211 MOV #%01_0001_0100,&$340
6212     MOV ##3276,&$352
6213     MOV #%10000,&$342
6214 COLON
6215     #1000 20_US
6216     %011 TOP_LCD
6217     #205 20_US
6218     %011 TOP_LCD
6219     #5 20_US
6220     %011 TOP_LCD
6221     #2 20_US
6222     %010 TOP_LCD
6223     #2 20_US
6224     %00101000 LCD_WRF
6225     %1000 LCD_WRF
6226     LCD_CLEAR
6227     %0110 LCD_WRF
6228     %1100 LCD_WRF
6229     LCD_CLEAR
6230     ['] LCD_HOME IS CR
6231     ['] LCD_WRC  IS EMIT
6232     CR ." I love you"
6233     ['] CR >BODY IS CR
6234     ['] EMIT >BODY IS EMIT
6235     ." RC5toLCD is running. Type STOP to quit"
6236     ABORT" "
6237 ;
6238
6239 CODE START
6240 CMP #$40AA,&{RC5TOLCD}+8
6241 0= IF
6242     MOV #STOP_R2L,&{RC5TOLCD}+8
6243     MOV &WARM+2,&{RC5TOLCD}+10
6244     MOV #INI_R2L,&WARM+2
6245     MOV &$FFEA,&{RC5TOLCD}+12
6246     MOV #WDT_INT,&$FFEA
6247     MOV &$FFDE,&{RC5TOLCD}+14
6248     MOV #RC5_INT,&$FFDE
6249     MOV #INI_R2L,R0
6250 THEN
6251 MOV @R13+,R0 
6252 ENDCODE 
6253
6254
6255 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
6256
6257 MARKER {RC5TOLCD}
6258 6 ALLOT
6259
6260
6261
6262 [UNDEFINED] CONSTANT [IF]
6263 : CONSTANT 
6264 CREATE
6265 HI2LO
6266 MOV R14,-2(R10)
6267 MOV @R15+,R14
6268 MOV @R1+,R13
6269 MOV @R13+,R0
6270 ENDCODE
6271 [THEN]
6272
6273 [UNDEFINED] STATE [IF]
6274 $1DBE CONSTANT STATE
6275 [THEN]
6276
6277 [UNDEFINED] = [IF]
6278 CODE =
6279 SUB @R15+,R14
6280 0<> IF
6281     AND #0,R14
6282     MOV @R13+,R0
6283 THEN
6284 XOR #-1,R14
6285 MOV @R13+,R0
6286 ENDCODE
6287 [THEN]
6288
6289 [UNDEFINED] IF [IF]
6290 CODE IF
6291 SUB #2,R15
6292 MOV R14,0(R15)
6293 MOV &$1DC6,R14
6294 ADD #4,&$1DC6
6295 MOV #$4034,0(R14)
6296 ADD #2,R14
6297 MOV @R13+,R0
6298 ENDCODE IMMEDIATE
6299
6300 CODE THEN
6301 MOV &$1DC6,0(R14)
6302 MOV @R15+,R14
6303 MOV @R13+,R0
6304 ENDCODE IMMEDIATE
6305 [THEN]
6306
6307 [UNDEFINED] ELSE [IF]
6308 CODE ELSE
6309 ADD #4,&$1DC6
6310 MOV &$1DC6,R10
6311 MOV #$403A,-4(R10)
6312 MOV R10,0(R14)
6313 SUB #2,R10
6314 MOV R10,R14
6315 MOV @R13+,R0
6316 ENDCODE IMMEDIATE
6317 [THEN]
6318
6319 [UNDEFINED] IS [IF]
6320
6321 CODE DEFER!
6322 MOV @R15+,2(R14)
6323 MOV @R15+,R14
6324 MOV @R13+,R0
6325 ENDCODE
6326
6327
6328 : IS
6329 STATE @
6330 IF  POSTPONE ['] POSTPONE DEFER! 
6331 ELSE ' DEFER! 
6332 THEN
6333 ; IMMEDIATE
6334 [THEN]
6335
6336 [UNDEFINED] >BODY [IF]
6337 CODE >BODY
6338 ADD #4,R14
6339 MOV @R13+,R0
6340 ENDCODE
6341 [THEN]
6342
6343
6344 CODE 20_US
6345 BEGIN
6346     BEGIN
6347         BIT #1,&$3C0
6348     0<> UNTIL
6349     BIC #1,&$3C0
6350     SUB #1,R14
6351 U< UNTIL
6352 MOV @R15+,R14
6353 MOV @R13+,R0
6354 ENDCODE
6355
6356 CODE TOP_LCD
6357     BIS.B #4,&$243
6358     BIT.B #1,&$241
6359 0= IF
6360     AND.B #$0F,R14
6361     MOV.B R14,&$222
6362     BIC.B #4,&$243
6363     MOV @R15+,R14
6364     MOV @R13+,R0
6365 THEN
6366     SUB #2,R15
6367     MOV R14,0(R15)
6368     BIC.B #4,&$243
6369     MOV.B &$220,R14
6370     AND.B #$0F,R14
6371     MOV @R13+,R0
6372 ENDCODE
6373
6374 CODE LCD_WRC
6375     BIS.B #2,&$243
6376 BW1 SUB #2,R15
6377     MOV R14,0(R15)
6378     RRUM #4,R14
6379     BIC.B #1,&$243
6380     BIS.B #$0F,&$224
6381 COLON
6382     TOP_LCD 2 20_US
6383     TOP_LCD 2 20_US 
6384 ;
6385
6386 CODE LCD_WRF
6387     BIC.B #2,&$243
6388     GOTO BW1
6389 ENDCODE
6390
6391 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
6392 : LCD_HOME $02 LCD_WRF 100 20_us ;
6393
6394
6395
6396 HDNCODE WDT_INT
6397 BIT.B #$20,&$240
6398 0= IF
6399     CMP #19,&$3D6
6400     U< IF
6401         ADD #1,&$3D6
6402     THEN
6403 ELSE
6404     BIT.B #$40,&$240
6405     0= IF
6406         CMP #3,&$3D6
6407         U>= IF
6408            SUB #1,&$3D6
6409         THEN
6410     THEN
6411 THEN
6412 RETI
6413 ENDCODE
6414
6415 HDNCODE RC5_INT
6416 $1800 @ 16000 = [IF]
6417     MOV #1,&$3A0
6418 [THEN]
6419 $1800 @ 24000 = [IF]
6420     MOV #2,&$3A0
6421 [THEN]
6422 MOV #1778,R9
6423 MOV #14,R10
6424 BEGIN
6425 MOV #%1011100100,&$380
6426     RRUM    #1,R9
6427     MOV     R9,R8
6428     RRUM    #1,R8
6429     ADD     R9,R8
6430     BEGIN   CMP R8,&$390
6431     U>= UNTIL
6432     BIT.B   #4,&$200
6433     ADDC    R11,R11
6434     MOV.B   &$200,&$208
6435     BIC.B   #4,&$20C
6436     SUB     #1,R10
6437 0<> WHILE
6438     ADD R9,R8
6439     BEGIN
6440         MOV &$390,R9
6441         CMP R8,R9
6442         U>= IF
6443         BIC #$30,&$380
6444         GOTO FW1
6445         THEN
6446         BIT.B #4,&$20C
6447     0<> UNTIL
6448 REPEAT
6449 BIC #$30,&$380
6450 RLAM    #1,R11
6451 MOV.B   R11,R9
6452 RRUM    #2,R9
6453 BIT     #$4000,R11
6454 0= IF   BIS #$40,R9
6455 THEN
6456 RRUM    #3,R11
6457 XOR     @R1,R11
6458 BIT     #$400,R11
6459 0= ?GOTO FW2
6460 XOR #$400,0(R1)
6461 SUB #8,R15
6462 MOV R14,6(R15)
6463 MOV &$1DDC,4(R15)
6464 MOV #$10,&$1DDC
6465 MOV R9,0(R15)
6466 MOV #0,R14
6467 LO2HI
6468     LCD_CLEAR
6469     <# # #S #36 HOLD #>
6470     ['] LCD_WRC IS EMIT
6471     TYPE
6472     ['] EMIT >BODY IS EMIT
6473 HI2LO
6474 MOV @R15+,&$1DDC
6475 MOV @R15+,R14
6476 FW1 FW2
6477     MOV @R1+,R2
6478     BIC #%1111_1000,R2
6479     MOV @R1+,R0
6480 ENDCODE
6481
6482
6483 HDNCODE STOP_R2L
6484 CMP #$40AA,&{RC5TOLCD}+8
6485 0<> IF
6486     BIC.B #4,&$20A
6487     BIC.B #4,&$20C
6488     MOV #0,&$3C0
6489     MOV #0,&$340
6490     MOV #0,&$342
6491     MOV #$40AA,&{RC5TOLCD}+8
6492     MOV &{RC5TOLCD}+10,&WARM+2
6493     MOV &{RC5TOLCD}+12,&$FFEA
6494     MOV &{RC5TOLCD}+14,&$FFDE
6495     MOV &{RC5TOLCD}+10,R0
6496 THEN 
6497 MOV @R1+,R0
6498 ENDCODE
6499
6500 CODE STOP
6501 BW1
6502 CALL #STOP_R2L
6503 COLON
6504 ECHO
6505 ." RC5toLCD is removed,"
6506 ."  type START to restart"
6507 ABORT" "
6508 ;
6509
6510 HDNCODE INI_R2L
6511 BIC #1,&$130
6512 MOV &$1808,R14
6513 CMP #$0E,R14
6514 0<> IF
6515     CMP #$0A,R14
6516     U>= ?GOTO BW1
6517 THEN
6518 BIT.B #$20,&$240
6519 0= ?GOTO BW1
6520 MOV #0,&$1808
6521 MOV #%10_1101_0100,&$3C0
6522 $1800 @ 16000 = [IF]
6523     MOV #1,&$3E0
6524 [THEN]
6525 $1800 @ 24000 = [IF]
6526     MOV #2,&$3E0
6527 [THEN]
6528     MOV #19,&$3D2
6529 MOV #%0110_0000,&$3C6
6530     MOV #10,&$3D6
6531     BIS.B #$20,&$204
6532     BIS.B #$20,&$20A
6533     BIS.B #7,&$245
6534     BIC.B #7,&$247
6535     BIS.B #$0F,&$224
6536     BIC.B #$0F,&$226
6537     BIS.B #4,&$20A
6538     BIC.B #4,&$20C
6539 MOV #%01_0001_0100,&$340
6540     MOV ##3276,&$352
6541     MOV #%10000,&$342
6542 COLON
6543     #1000 20_US
6544     %011 TOP_LCD
6545     #205 20_US
6546     %011 TOP_LCD
6547     #5 20_US
6548     %011 TOP_LCD
6549     #2 20_US
6550     %010 TOP_LCD
6551     #2 20_US
6552     %00101000 LCD_WRF
6553     %1000 LCD_WRF
6554     LCD_CLEAR
6555     %0110 LCD_WRF
6556     %1100 LCD_WRF
6557     LCD_CLEAR
6558     ['] LCD_HOME IS CR
6559     ['] LCD_WRC  IS EMIT
6560     CR ." I love you"
6561     ['] CR >BODY IS CR
6562     ['] EMIT >BODY IS EMIT
6563     ." RC5toLCD is running. Type STOP to quit"
6564     ABORT" "
6565 ;
6566
6567 CODE START
6568 CMP #$40AA,&{RC5TOLCD}+8
6569 0= IF
6570     MOV #STOP_R2L,&{RC5TOLCD}+8
6571     MOV &WARM+2,&{RC5TOLCD}+10
6572     MOV #INI_R2L,&WARM+2
6573     MOV &$FFEA,&{RC5TOLCD}+12
6574     MOV #WDT_INT,&$FFEA
6575     MOV &$FFDE,&{RC5TOLCD}+14
6576     MOV #RC5_INT,&$FFDE
6577     MOV #INI_R2L,R0
6578 THEN
6579 MOV @R13+,R0 
6580 ENDCODE 
6581
6582
6583 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
6584
6585 MARKER {RC5TOLCD}
6586 6 ALLOT
6587
6588
6589
6590 [UNDEFINED] CONSTANT [IF]
6591 : CONSTANT 
6592 CREATE
6593 HI2LO
6594 MOV R14,-2(R10)
6595 MOV @R15+,R14
6596 MOV @R1+,R13
6597 MOV @R13+,R0
6598 ENDCODE
6599 [THEN]
6600
6601 [UNDEFINED] STATE [IF]
6602 $1DBE CONSTANT STATE
6603 [THEN]
6604
6605 [UNDEFINED] = [IF]
6606 CODE =
6607 SUB @R15+,R14
6608 0<> IF
6609     AND #0,R14
6610     MOV @R13+,R0
6611 THEN
6612 XOR #-1,R14
6613 MOV @R13+,R0
6614 ENDCODE
6615 [THEN]
6616
6617 [UNDEFINED] IF [IF]
6618 CODE IF
6619 SUB #2,R15
6620 MOV R14,0(R15)
6621 MOV &$1DC6,R14
6622 ADD #4,&$1DC6
6623 MOV #$4034,0(R14)
6624 ADD #2,R14
6625 MOV @R13+,R0
6626 ENDCODE IMMEDIATE
6627
6628 CODE THEN
6629 MOV &$1DC6,0(R14)
6630 MOV @R15+,R14
6631 MOV @R13+,R0
6632 ENDCODE IMMEDIATE
6633 [THEN]
6634
6635 [UNDEFINED] ELSE [IF]
6636 CODE ELSE
6637 ADD #4,&$1DC6
6638 MOV &$1DC6,R10
6639 MOV #$403A,-4(R10)
6640 MOV R10,0(R14)
6641 SUB #2,R10
6642 MOV R10,R14
6643 MOV @R13+,R0
6644 ENDCODE IMMEDIATE
6645 [THEN]
6646
6647 [UNDEFINED] IS [IF]
6648
6649 CODE DEFER!
6650 MOV @R15+,2(R14)
6651 MOV @R15+,R14
6652 MOV @R13+,R0
6653 ENDCODE
6654
6655
6656 : IS
6657 STATE @
6658 IF  POSTPONE ['] POSTPONE DEFER! 
6659 ELSE ' DEFER! 
6660 THEN
6661 ; IMMEDIATE
6662 [THEN]
6663
6664 [UNDEFINED] >BODY [IF]
6665 CODE >BODY
6666 ADD #4,R14
6667 MOV @R13+,R0
6668 ENDCODE
6669 [THEN]
6670
6671
6672 CODE 20_US
6673 BEGIN
6674     BEGIN
6675         BIT #1,&$3C0
6676     0<> UNTIL
6677     BIC #1,&$3C0
6678     SUB #1,R14
6679 U< UNTIL
6680 MOV @R15+,R14
6681 MOV @R13+,R0
6682 ENDCODE
6683
6684 CODE TOP_LCD
6685     BIS.B #4,&$243
6686     BIT.B #1,&$241
6687 0= IF
6688     AND.B #$0F,R14
6689     MOV.B R14,&$222
6690     BIC.B #4,&$243
6691     MOV @R15+,R14
6692     MOV @R13+,R0
6693 THEN
6694     SUB #2,R15
6695     MOV R14,0(R15)
6696     BIC.B #4,&$243
6697     MOV.B &$220,R14
6698     AND.B #$0F,R14
6699     MOV @R13+,R0
6700 ENDCODE
6701
6702 CODE LCD_WRC
6703     BIS.B #2,&$243
6704 BW1 SUB #2,R15
6705     MOV R14,0(R15)
6706     RRUM #4,R14
6707     BIC.B #1,&$243
6708     BIS.B #$0F,&$224
6709 COLON
6710     TOP_LCD 2 20_US
6711     TOP_LCD 2 20_US 
6712 ;
6713
6714 CODE LCD_WRF
6715     BIC.B #2,&$243
6716     GOTO BW1
6717 ENDCODE
6718
6719 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
6720 : LCD_HOME $02 LCD_WRF 100 20_us ;
6721
6722
6723
6724 HDNCODE WDT_INT
6725 BIT.B #$20,&$240
6726 0= IF
6727     CMP #19,&$3D6
6728     U< IF
6729         ADD #1,&$3D6
6730     THEN
6731 ELSE
6732     BIT.B #$40,&$240
6733     0= IF
6734         CMP #3,&$3D6
6735         U>= IF
6736            SUB #1,&$3D6
6737         THEN
6738     THEN
6739 THEN
6740 RETI
6741 ENDCODE
6742
6743 HDNCODE RC5_INT
6744 $1800 @ 16000 = [IF]
6745     MOV #1,&$3A0
6746 [THEN]
6747 $1800 @ 24000 = [IF]
6748     MOV #2,&$3A0
6749 [THEN]
6750 MOV #1778,R9
6751 MOV #14,R10
6752 BEGIN
6753 MOV #%1011100100,&$380
6754     RRUM    #1,R9
6755     MOV     R9,R8
6756     RRUM    #1,R8
6757     ADD     R9,R8
6758     BEGIN   CMP R8,&$390
6759     U>= UNTIL
6760     BIT.B   #4,&$200
6761     ADDC    R11,R11
6762     MOV.B   &$200,&$208
6763     BIC.B   #4,&$20C
6764     SUB     #1,R10
6765 0<> WHILE
6766     ADD R9,R8
6767     BEGIN
6768         MOV &$390,R9
6769         CMP R8,R9
6770         U>= IF
6771         BIC #$30,&$380
6772         GOTO FW1
6773         THEN
6774         BIT.B #4,&$20C
6775     0<> UNTIL
6776 REPEAT
6777 BIC #$30,&$380
6778 RLAM    #1,R11
6779 MOV.B   R11,R9
6780 RRUM    #2,R9
6781 BIT     #$4000,R11
6782 0= IF   BIS #$40,R9
6783 THEN
6784 RRUM    #3,R11
6785 XOR     @R1,R11
6786 BIT     #$400,R11
6787 0= ?GOTO FW2
6788 XOR #$400,0(R1)
6789 SUB #8,R15
6790 MOV R14,6(R15)
6791 MOV &$1DDC,4(R15)
6792 MOV #$10,&$1DDC
6793 MOV R9,0(R15)
6794 MOV #0,R14
6795 LO2HI
6796     LCD_CLEAR
6797     <# # #S #36 HOLD #>
6798     ['] LCD_WRC IS EMIT
6799     TYPE
6800     ['] EMIT >BODY IS EMIT
6801 HI2LO
6802 MOV @R15+,&$1DDC
6803 MOV @R15+,R14
6804 FW1 FW2
6805     MOV @R1+,R2
6806     BIC #%1111_1000,R2
6807     MOV @R1+,R0
6808 ENDCODE
6809
6810
6811 HDNCODE STOP_R2L
6812 CMP #$40AA,&{RC5TOLCD}+8
6813 0<> IF
6814     BIC.B #4,&$20A
6815     BIC.B #4,&$20C
6816     MOV #0,&$3C0
6817     MOV #0,&$340
6818     MOV #0,&$342
6819     MOV #$40AA,&{RC5TOLCD}+8
6820     MOV &{RC5TOLCD}+10,&WARM+2
6821     MOV &{RC5TOLCD}+12,&$FFEA
6822     MOV &{RC5TOLCD}+14,&$FFDE
6823     MOV &{RC5TOLCD}+10,R0
6824 THEN 
6825 MOV @R1+,R0
6826 ENDCODE
6827
6828 CODE STOP
6829 BW1
6830 CALL #STOP_R2L
6831 COLON
6832 ECHO
6833 ." RC5toLCD is removed,"
6834 ."  type START to restart"
6835 ABORT" "
6836 ;
6837
6838 HDNCODE INI_R2L
6839 BIC #1,&$130
6840 MOV &$1808,R14
6841 CMP #$0E,R14
6842 0<> IF
6843     CMP #$0A,R14
6844     U>= ?GOTO BW1
6845 THEN
6846 BIT.B #$20,&$240
6847 0= ?GOTO BW1
6848 MOV #0,&$1808
6849 MOV #%10_1101_0100,&$3C0
6850 $1800 @ 16000 = [IF]
6851     MOV #1,&$3E0
6852 [THEN]
6853 $1800 @ 24000 = [IF]
6854     MOV #2,&$3E0
6855 [THEN]
6856     MOV #19,&$3D2
6857 MOV #%0110_0000,&$3C6
6858     MOV #10,&$3D6
6859     BIS.B #$20,&$204
6860     BIS.B #$20,&$20A
6861     BIS.B #7,&$245
6862     BIC.B #7,&$247
6863     BIS.B #$0F,&$224
6864     BIC.B #$0F,&$226
6865     BIS.B #4,&$20A
6866     BIC.B #4,&$20C
6867 MOV #%01_0001_0100,&$340
6868     MOV ##3276,&$352
6869     MOV #%10000,&$342
6870 COLON
6871     #1000 20_US
6872     %011 TOP_LCD
6873     #205 20_US
6874     %011 TOP_LCD
6875     #5 20_US
6876     %011 TOP_LCD
6877     #2 20_US
6878     %010 TOP_LCD
6879     #2 20_US
6880     %00101000 LCD_WRF
6881     %1000 LCD_WRF
6882     LCD_CLEAR
6883     %0110 LCD_WRF
6884     %1100 LCD_WRF
6885     LCD_CLEAR
6886     ['] LCD_HOME IS CR
6887     ['] LCD_WRC  IS EMIT
6888     CR ." I love you"
6889     ['] CR >BODY IS CR
6890     ['] EMIT >BODY IS EMIT
6891     ." RC5toLCD is running. Type STOP to quit"
6892     ABORT" "
6893 ;
6894
6895 CODE START
6896 CMP #$40AA,&{RC5TOLCD}+8
6897 0= IF
6898     MOV #STOP_R2L,&{RC5TOLCD}+8
6899     MOV &WARM+2,&{RC5TOLCD}+10
6900     MOV #INI_R2L,&WARM+2
6901     MOV &$FFEA,&{RC5TOLCD}+12
6902     MOV #WDT_INT,&$FFEA
6903     MOV &$FFDE,&{RC5TOLCD}+14
6904     MOV #RC5_INT,&$FFDE
6905     MOV #INI_R2L,R0
6906 THEN
6907 MOV @R13+,R0 
6908 ENDCODE 
6909
6910
6911 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
6912
6913 MARKER {RC5TOLCD}
6914 6 ALLOT
6915
6916
6917
6918 [UNDEFINED] CONSTANT [IF]
6919 : CONSTANT 
6920 CREATE
6921 HI2LO
6922 MOV R14,-2(R10)
6923 MOV @R15+,R14
6924 MOV @R1+,R13
6925 MOV @R13+,R0
6926 ENDCODE
6927 [THEN]
6928
6929 [UNDEFINED] STATE [IF]
6930 $1DBE CONSTANT STATE
6931 [THEN]
6932
6933 [UNDEFINED] = [IF]
6934 CODE =
6935 SUB @R15+,R14
6936 0<> IF
6937     AND #0,R14
6938     MOV @R13+,R0
6939 THEN
6940 XOR #-1,R14
6941 MOV @R13+,R0
6942 ENDCODE
6943 [THEN]
6944
6945 [UNDEFINED] IF [IF]
6946 CODE IF
6947 SUB #2,R15
6948 MOV R14,0(R15)
6949 MOV &$1DC6,R14
6950 ADD #4,&$1DC6
6951 MOV #$4034,0(R14)
6952 ADD #2,R14
6953 MOV @R13+,R0
6954 ENDCODE IMMEDIATE
6955
6956 CODE THEN
6957 MOV &$1DC6,0(R14)
6958 MOV @R15+,R14
6959 MOV @R13+,R0
6960 ENDCODE IMMEDIATE
6961 [THEN]
6962
6963 [UNDEFINED] ELSE [IF]
6964 CODE ELSE
6965 ADD #4,&$1DC6
6966 MOV &$1DC6,R10
6967 MOV #$403A,-4(R10)
6968 MOV R10,0(R14)
6969 SUB #2,R10
6970 MOV R10,R14
6971 MOV @R13+,R0
6972 ENDCODE IMMEDIATE
6973 [THEN]
6974
6975 [UNDEFINED] IS [IF]
6976
6977 CODE DEFER!
6978 MOV @R15+,2(R14)
6979 MOV @R15+,R14
6980 MOV @R13+,R0
6981 ENDCODE
6982
6983
6984 : IS
6985 STATE @
6986 IF  POSTPONE ['] POSTPONE DEFER! 
6987 ELSE ' DEFER! 
6988 THEN
6989 ; IMMEDIATE
6990 [THEN]
6991
6992 [UNDEFINED] >BODY [IF]
6993 CODE >BODY
6994 ADD #4,R14
6995 MOV @R13+,R0
6996 ENDCODE
6997 [THEN]
6998
6999
7000 CODE 20_US
7001 BEGIN
7002     BEGIN
7003         BIT #1,&$3C0
7004     0<> UNTIL
7005     BIC #1,&$3C0
7006     SUB #1,R14
7007 U< UNTIL
7008 MOV @R15+,R14
7009 MOV @R13+,R0
7010 ENDCODE
7011
7012 CODE TOP_LCD
7013     BIS.B #4,&$243
7014     BIT.B #1,&$241
7015 0= IF
7016     AND.B #$0F,R14
7017     MOV.B R14,&$222
7018     BIC.B #4,&$243
7019     MOV @R15+,R14
7020     MOV @R13+,R0
7021 THEN
7022     SUB #2,R15
7023     MOV R14,0(R15)
7024     BIC.B #4,&$243
7025     MOV.B &$220,R14
7026     AND.B #$0F,R14
7027     MOV @R13+,R0
7028 ENDCODE
7029
7030 CODE LCD_WRC
7031     BIS.B #2,&$243
7032 BW1 SUB #2,R15
7033     MOV R14,0(R15)
7034     RRUM #4,R14
7035     BIC.B #1,&$243
7036     BIS.B #$0F,&$224
7037 COLON
7038     TOP_LCD 2 20_US
7039     TOP_LCD 2 20_US 
7040 ;
7041
7042 CODE LCD_WRF
7043     BIC.B #2,&$243
7044     GOTO BW1
7045 ENDCODE
7046
7047 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
7048 : LCD_HOME $02 LCD_WRF 100 20_us ;
7049
7050
7051
7052 HDNCODE WDT_INT
7053 BIT.B #$20,&$240
7054 0= IF
7055     CMP #19,&$3D6
7056     U< IF
7057         ADD #1,&$3D6
7058     THEN
7059 ELSE
7060     BIT.B #$40,&$240
7061     0= IF
7062         CMP #3,&$3D6
7063         U>= IF
7064            SUB #1,&$3D6
7065         THEN
7066     THEN
7067 THEN
7068 RETI
7069 ENDCODE
7070
7071 HDNCODE RC5_INT
7072 $1800 @ 16000 = [IF]
7073     MOV #1,&$3A0
7074 [THEN]
7075 $1800 @ 24000 = [IF]
7076     MOV #2,&$3A0
7077 [THEN]
7078 MOV #1778,R9
7079 MOV #14,R10
7080 BEGIN
7081 MOV #%1011100100,&$380
7082     RRUM    #1,R9
7083     MOV     R9,R8
7084     RRUM    #1,R8
7085     ADD     R9,R8
7086     BEGIN   CMP R8,&$390
7087     U>= UNTIL
7088     BIT.B   #4,&$200
7089     ADDC    R11,R11
7090     MOV.B   &$200,&$208
7091     BIC.B   #4,&$20C
7092     SUB     #1,R10
7093 0<> WHILE
7094     ADD R9,R8
7095     BEGIN
7096         MOV &$390,R9
7097         CMP R8,R9
7098         U>= IF
7099         BIC #$30,&$380
7100         GOTO FW1
7101         THEN
7102         BIT.B #4,&$20C
7103     0<> UNTIL
7104 REPEAT
7105 BIC #$30,&$380
7106 RLAM    #1,R11
7107 MOV.B   R11,R9
7108 RRUM    #2,R9
7109 BIT     #$4000,R11
7110 0= IF   BIS #$40,R9
7111 THEN
7112 RRUM    #3,R11
7113 XOR     @R1,R11
7114 BIT     #$400,R11
7115 0= ?GOTO FW2
7116 XOR #$400,0(R1)
7117 SUB #8,R15
7118 MOV R14,6(R15)
7119 MOV &$1DDC,4(R15)
7120 MOV #$10,&$1DDC
7121 MOV R9,0(R15)
7122 MOV #0,R14
7123 LO2HI
7124     LCD_CLEAR
7125     <# # #S #36 HOLD #>
7126     ['] LCD_WRC IS EMIT
7127     TYPE
7128     ['] EMIT >BODY IS EMIT
7129 HI2LO
7130 MOV @R15+,&$1DDC
7131 MOV @R15+,R14
7132 FW1 FW2
7133     MOV @R1+,R2
7134     BIC #%1111_1000,R2
7135     MOV @R1+,R0
7136 ENDCODE
7137
7138
7139 HDNCODE STOP_R2L
7140 CMP #$40AA,&{RC5TOLCD}+8
7141 0<> IF
7142     BIC.B #4,&$20A
7143     BIC.B #4,&$20C
7144     MOV #0,&$3C0
7145     MOV #0,&$340
7146     MOV #0,&$342
7147     MOV #$40AA,&{RC5TOLCD}+8
7148     MOV &{RC5TOLCD}+10,&WARM+2
7149     MOV &{RC5TOLCD}+12,&$FFEA
7150     MOV &{RC5TOLCD}+14,&$FFDE
7151     MOV &{RC5TOLCD}+10,R0
7152 THEN 
7153 MOV @R1+,R0
7154 ENDCODE
7155
7156 CODE STOP
7157 BW1
7158 CALL #STOP_R2L
7159 COLON
7160 ECHO
7161 ." RC5toLCD is removed,"
7162 ."  type START to restart"
7163 ABORT" "
7164 ;
7165
7166 HDNCODE INI_R2L
7167 BIC #1,&$130
7168 MOV &$1808,R14
7169 CMP #$0E,R14
7170 0<> IF
7171     CMP #$0A,R14
7172     U>= ?GOTO BW1
7173 THEN
7174 BIT.B #$20,&$240
7175 0= ?GOTO BW1
7176 MOV #0,&$1808
7177 MOV #%10_1101_0100,&$3C0
7178 $1800 @ 16000 = [IF]
7179     MOV #1,&$3E0
7180 [THEN]
7181 $1800 @ 24000 = [IF]
7182     MOV #2,&$3E0
7183 [THEN]
7184     MOV #19,&$3D2
7185 MOV #%0110_0000,&$3C6
7186     MOV #10,&$3D6
7187     BIS.B #$20,&$204
7188     BIS.B #$20,&$20A
7189     BIS.B #7,&$245
7190     BIC.B #7,&$247
7191     BIS.B #$0F,&$224
7192     BIC.B #$0F,&$226
7193     BIS.B #4,&$20A
7194     BIC.B #4,&$20C
7195 MOV #%01_0001_0100,&$340
7196     MOV ##3276,&$352
7197     MOV #%10000,&$342
7198 COLON
7199     #1000 20_US
7200     %011 TOP_LCD
7201     #205 20_US
7202     %011 TOP_LCD
7203     #5 20_US
7204     %011 TOP_LCD
7205     #2 20_US
7206     %010 TOP_LCD
7207     #2 20_US
7208     %00101000 LCD_WRF
7209     %1000 LCD_WRF
7210     LCD_CLEAR
7211     %0110 LCD_WRF
7212     %1100 LCD_WRF
7213     LCD_CLEAR
7214     ['] LCD_HOME IS CR
7215     ['] LCD_WRC  IS EMIT
7216     CR ." I love you"
7217     ['] CR >BODY IS CR
7218     ['] EMIT >BODY IS EMIT
7219     ." RC5toLCD is running. Type STOP to quit"
7220     ABORT" "
7221 ;
7222
7223 CODE START
7224 CMP #$40AA,&{RC5TOLCD}+8
7225 0= IF
7226     MOV #STOP_R2L,&{RC5TOLCD}+8
7227     MOV &WARM+2,&{RC5TOLCD}+10
7228     MOV #INI_R2L,&WARM+2
7229     MOV &$FFEA,&{RC5TOLCD}+12
7230     MOV #WDT_INT,&$FFEA
7231     MOV &$FFDE,&{RC5TOLCD}+14
7232     MOV #RC5_INT,&$FFDE
7233     MOV #INI_R2L,R0
7234 THEN
7235 MOV @R13+,R0 
7236 ENDCODE 
7237
7238
7239 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
7240
7241 MARKER {RC5TOLCD}
7242 6 ALLOT
7243
7244
7245
7246 [UNDEFINED] CONSTANT [IF]
7247 : CONSTANT 
7248 CREATE
7249 HI2LO
7250 MOV R14,-2(R10)
7251 MOV @R15+,R14
7252 MOV @R1+,R13
7253 MOV @R13+,R0
7254 ENDCODE
7255 [THEN]
7256
7257 [UNDEFINED] STATE [IF]
7258 $1DBE CONSTANT STATE
7259 [THEN]
7260
7261 [UNDEFINED] = [IF]
7262 CODE =
7263 SUB @R15+,R14
7264 0<> IF
7265     AND #0,R14
7266     MOV @R13+,R0
7267 THEN
7268 XOR #-1,R14
7269 MOV @R13+,R0
7270 ENDCODE
7271 [THEN]
7272
7273 [UNDEFINED] IF [IF]
7274 CODE IF
7275 SUB #2,R15
7276 MOV R14,0(R15)
7277 MOV &$1DC6,R14
7278 ADD #4,&$1DC6
7279 MOV #$4034,0(R14)
7280 ADD #2,R14
7281 MOV @R13+,R0
7282 ENDCODE IMMEDIATE
7283
7284 CODE THEN
7285 MOV &$1DC6,0(R14)
7286 MOV @R15+,R14
7287 MOV @R13+,R0
7288 ENDCODE IMMEDIATE
7289 [THEN]
7290
7291 [UNDEFINED] ELSE [IF]
7292 CODE ELSE
7293 ADD #4,&$1DC6
7294 MOV &$1DC6,R10
7295 MOV #$403A,-4(R10)
7296 MOV R10,0(R14)
7297 SUB #2,R10
7298 MOV R10,R14
7299 MOV @R13+,R0
7300 ENDCODE IMMEDIATE
7301 [THEN]
7302
7303 [UNDEFINED] IS [IF]
7304
7305 CODE DEFER!
7306 MOV @R15+,2(R14)
7307 MOV @R15+,R14
7308 MOV @R13+,R0
7309 ENDCODE
7310
7311
7312 : IS
7313 STATE @
7314 IF  POSTPONE ['] POSTPONE DEFER! 
7315 ELSE ' DEFER! 
7316 THEN
7317 ; IMMEDIATE
7318 [THEN]
7319
7320 [UNDEFINED] >BODY [IF]
7321 CODE >BODY
7322 ADD #4,R14
7323 MOV @R13+,R0
7324 ENDCODE
7325 [THEN]
7326
7327
7328 CODE 20_US
7329 BEGIN
7330     BEGIN
7331         BIT #1,&$3C0
7332     0<> UNTIL
7333     BIC #1,&$3C0
7334     SUB #1,R14
7335 U< UNTIL
7336 MOV @R15+,R14
7337 MOV @R13+,R0
7338 ENDCODE
7339
7340 CODE TOP_LCD
7341     BIS.B #4,&$243
7342     BIT.B #1,&$241
7343 0= IF
7344     AND.B #$0F,R14
7345     MOV.B R14,&$222
7346     BIC.B #4,&$243
7347     MOV @R15+,R14
7348     MOV @R13+,R0
7349 THEN
7350     SUB #2,R15
7351     MOV R14,0(R15)
7352     BIC.B #4,&$243
7353     MOV.B &$220,R14
7354     AND.B #$0F,R14
7355     MOV @R13+,R0
7356 ENDCODE
7357
7358 CODE LCD_WRC
7359     BIS.B #2,&$243
7360 BW1 SUB #2,R15
7361     MOV R14,0(R15)
7362     RRUM #4,R14
7363     BIC.B #1,&$243
7364     BIS.B #$0F,&$224
7365 COLON
7366     TOP_LCD 2 20_US
7367     TOP_LCD 2 20_US 
7368 ;
7369
7370 CODE LCD_WRF
7371     BIC.B #2,&$243
7372     GOTO BW1
7373 ENDCODE
7374
7375 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
7376 : LCD_HOME $02 LCD_WRF 100 20_us ;
7377
7378
7379
7380 HDNCODE WDT_INT
7381 BIT.B #$20,&$240
7382 0= IF
7383     CMP #19,&$3D6
7384     U< IF
7385         ADD #1,&$3D6
7386     THEN
7387 ELSE
7388     BIT.B #$40,&$240
7389     0= IF
7390         CMP #3,&$3D6
7391         U>= IF
7392            SUB #1,&$3D6
7393         THEN
7394     THEN
7395 THEN
7396 RETI
7397 ENDCODE
7398
7399 HDNCODE RC5_INT
7400 $1800 @ 16000 = [IF]
7401     MOV #1,&$3A0
7402 [THEN]
7403 $1800 @ 24000 = [IF]
7404     MOV #2,&$3A0
7405 [THEN]
7406 MOV #1778,R9
7407 MOV #14,R10
7408 BEGIN
7409 MOV #%1011100100,&$380
7410     RRUM    #1,R9
7411     MOV     R9,R8
7412     RRUM    #1,R8
7413     ADD     R9,R8
7414     BEGIN   CMP R8,&$390
7415     U>= UNTIL
7416     BIT.B   #4,&$200
7417     ADDC    R11,R11
7418     MOV.B   &$200,&$208
7419     BIC.B   #4,&$20C
7420     SUB     #1,R10
7421 0<> WHILE
7422     ADD R9,R8
7423     BEGIN
7424         MOV &$390,R9
7425         CMP R8,R9
7426         U>= IF
7427         BIC #$30,&$380
7428         GOTO FW1
7429         THEN
7430         BIT.B #4,&$20C
7431     0<> UNTIL
7432 REPEAT
7433 BIC #$30,&$380
7434 RLAM    #1,R11
7435 MOV.B   R11,R9
7436 RRUM    #2,R9
7437 BIT     #$4000,R11
7438 0= IF   BIS #$40,R9
7439 THEN
7440 RRUM    #3,R11
7441 XOR     @R1,R11
7442 BIT     #$400,R11
7443 0= ?GOTO FW2
7444 XOR #$400,0(R1)
7445 SUB #8,R15
7446 MOV R14,6(R15)
7447 MOV &$1DDC,4(R15)
7448 MOV #$10,&$1DDC
7449 MOV R9,0(R15)
7450 MOV #0,R14
7451 LO2HI
7452     LCD_CLEAR
7453     <# # #S #36 HOLD #>
7454     ['] LCD_WRC IS EMIT
7455     TYPE
7456     ['] EMIT >BODY IS EMIT
7457 HI2LO
7458 MOV @R15+,&$1DDC
7459 MOV @R15+,R14
7460 FW1 FW2
7461     MOV @R1+,R2
7462     BIC #%1111_1000,R2
7463     MOV @R1+,R0
7464 ENDCODE
7465
7466
7467 HDNCODE STOP_R2L
7468 CMP #$40AA,&{RC5TOLCD}+8
7469 0<> IF
7470     BIC.B #4,&$20A
7471     BIC.B #4,&$20C
7472     MOV #0,&$3C0
7473     MOV #0,&$340
7474     MOV #0,&$342
7475     MOV #$40AA,&{RC5TOLCD}+8
7476     MOV &{RC5TOLCD}+10,&WARM+2
7477     MOV &{RC5TOLCD}+12,&$FFEA
7478     MOV &{RC5TOLCD}+14,&$FFDE
7479     MOV &{RC5TOLCD}+10,R0
7480 THEN 
7481 MOV @R1+,R0
7482 ENDCODE
7483
7484 CODE STOP
7485 BW1
7486 CALL #STOP_R2L
7487 COLON
7488 ECHO
7489 ." RC5toLCD is removed,"
7490 ."  type START to restart"
7491 ABORT" "
7492 ;
7493
7494 HDNCODE INI_R2L
7495 BIC #1,&$130
7496 MOV &$1808,R14
7497 CMP #$0E,R14
7498 0<> IF
7499     CMP #$0A,R14
7500     U>= ?GOTO BW1
7501 THEN
7502 BIT.B #$20,&$240
7503 0= ?GOTO BW1
7504 MOV #0,&$1808
7505 MOV #%10_1101_0100,&$3C0
7506 $1800 @ 16000 = [IF]
7507     MOV #1,&$3E0
7508 [THEN]
7509 $1800 @ 24000 = [IF]
7510     MOV #2,&$3E0
7511 [THEN]
7512     MOV #19,&$3D2
7513 MOV #%0110_0000,&$3C6
7514     MOV #10,&$3D6
7515     BIS.B #$20,&$204
7516     BIS.B #$20,&$20A
7517     BIS.B #7,&$245
7518     BIC.B #7,&$247
7519     BIS.B #$0F,&$224
7520     BIC.B #$0F,&$226
7521     BIS.B #4,&$20A
7522     BIC.B #4,&$20C
7523 MOV #%01_0001_0100,&$340
7524     MOV ##3276,&$352
7525     MOV #%10000,&$342
7526 COLON
7527     #1000 20_US
7528     %011 TOP_LCD
7529     #205 20_US
7530     %011 TOP_LCD
7531     #5 20_US
7532     %011 TOP_LCD
7533     #2 20_US
7534     %010 TOP_LCD
7535     #2 20_US
7536     %00101000 LCD_WRF
7537     %1000 LCD_WRF
7538     LCD_CLEAR
7539     %0110 LCD_WRF
7540     %1100 LCD_WRF
7541     LCD_CLEAR
7542     ['] LCD_HOME IS CR
7543     ['] LCD_WRC  IS EMIT
7544     CR ." I love you"
7545     ['] CR >BODY IS CR
7546     ['] EMIT >BODY IS EMIT
7547     ." RC5toLCD is running. Type STOP to quit"
7548     ABORT" "
7549 ;
7550
7551 CODE START
7552 CMP #$40AA,&{RC5TOLCD}+8
7553 0= IF
7554     MOV #STOP_R2L,&{RC5TOLCD}+8
7555     MOV &WARM+2,&{RC5TOLCD}+10
7556     MOV #INI_R2L,&WARM+2
7557     MOV &$FFEA,&{RC5TOLCD}+12
7558     MOV #WDT_INT,&$FFEA
7559     MOV &$FFDE,&{RC5TOLCD}+14
7560     MOV #RC5_INT,&$FFDE
7561     MOV #INI_R2L,R0
7562 THEN
7563 MOV @R13+,R0 
7564 ENDCODE 
7565
7566
7567 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
7568
7569 MARKER {RC5TOLCD}
7570 6 ALLOT
7571
7572
7573
7574 [UNDEFINED] CONSTANT [IF]
7575 : CONSTANT 
7576 CREATE
7577 HI2LO
7578 MOV R14,-2(R10)
7579 MOV @R15+,R14
7580 MOV @R1+,R13
7581 MOV @R13+,R0
7582 ENDCODE
7583 [THEN]
7584
7585 [UNDEFINED] STATE [IF]
7586 $1DBE CONSTANT STATE
7587 [THEN]
7588
7589 [UNDEFINED] = [IF]
7590 CODE =
7591 SUB @R15+,R14
7592 0<> IF
7593     AND #0,R14
7594     MOV @R13+,R0
7595 THEN
7596 XOR #-1,R14
7597 MOV @R13+,R0
7598 ENDCODE
7599 [THEN]
7600
7601 [UNDEFINED] IF [IF]
7602 CODE IF
7603 SUB #2,R15
7604 MOV R14,0(R15)
7605 MOV &$1DC6,R14
7606 ADD #4,&$1DC6
7607 MOV #$4034,0(R14)
7608 ADD #2,R14
7609 MOV @R13+,R0
7610 ENDCODE IMMEDIATE
7611
7612 CODE THEN
7613 MOV &$1DC6,0(R14)
7614 MOV @R15+,R14
7615 MOV @R13+,R0
7616 ENDCODE IMMEDIATE
7617 [THEN]
7618
7619 [UNDEFINED] ELSE [IF]
7620 CODE ELSE
7621 ADD #4,&$1DC6
7622 MOV &$1DC6,R10
7623 MOV #$403A,-4(R10)
7624 MOV R10,0(R14)
7625 SUB #2,R10
7626 MOV R10,R14
7627 MOV @R13+,R0
7628 ENDCODE IMMEDIATE
7629 [THEN]
7630
7631 [UNDEFINED] IS [IF]
7632
7633 CODE DEFER!
7634 MOV @R15+,2(R14)
7635 MOV @R15+,R14
7636 MOV @R13+,R0
7637 ENDCODE
7638
7639
7640 : IS
7641 STATE @
7642 IF  POSTPONE ['] POSTPONE DEFER! 
7643 ELSE ' DEFER! 
7644 THEN
7645 ; IMMEDIATE
7646 [THEN]
7647
7648 [UNDEFINED] >BODY [IF]
7649 CODE >BODY
7650 ADD #4,R14
7651 MOV @R13+,R0
7652 ENDCODE
7653 [THEN]
7654
7655
7656 CODE 20_US
7657 BEGIN
7658     BEGIN
7659         BIT #1,&$3C0
7660     0<> UNTIL
7661     BIC #1,&$3C0
7662     SUB #1,R14
7663 U< UNTIL
7664 MOV @R15+,R14
7665 MOV @R13+,R0
7666 ENDCODE
7667
7668 CODE TOP_LCD
7669     BIS.B #4,&$243
7670     BIT.B #1,&$241
7671 0= IF
7672     AND.B #$0F,R14
7673     MOV.B R14,&$222
7674     BIC.B #4,&$243
7675     MOV @R15+,R14
7676     MOV @R13+,R0
7677 THEN
7678     SUB #2,R15
7679     MOV R14,0(R15)
7680     BIC.B #4,&$243
7681     MOV.B &$220,R14
7682     AND.B #$0F,R14
7683     MOV @R13+,R0
7684 ENDCODE
7685
7686 CODE LCD_WRC
7687     BIS.B #2,&$243
7688 BW1 SUB #2,R15
7689     MOV R14,0(R15)
7690     RRUM #4,R14
7691     BIC.B #1,&$243
7692     BIS.B #$0F,&$224
7693 COLON
7694     TOP_LCD 2 20_US
7695     TOP_LCD 2 20_US 
7696 ;
7697
7698 CODE LCD_WRF
7699     BIC.B #2,&$243
7700     GOTO BW1
7701 ENDCODE
7702
7703 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
7704 : LCD_HOME $02 LCD_WRF 100 20_us ;
7705
7706
7707
7708 HDNCODE WDT_INT
7709 BIT.B #$20,&$240
7710 0= IF
7711     CMP #19,&$3D6
7712     U< IF
7713         ADD #1,&$3D6
7714     THEN
7715 ELSE
7716     BIT.B #$40,&$240
7717     0= IF
7718         CMP #3,&$3D6
7719         U>= IF
7720            SUB #1,&$3D6
7721         THEN
7722     THEN
7723 THEN
7724 RETI
7725 ENDCODE
7726
7727 HDNCODE RC5_INT
7728 $1800 @ 16000 = [IF]
7729     MOV #1,&$3A0
7730 [THEN]
7731 $1800 @ 24000 = [IF]
7732     MOV #2,&$3A0
7733 [THEN]
7734 MOV #1778,R9
7735 MOV #14,R10
7736 BEGIN
7737 MOV #%1011100100,&$380
7738     RRUM    #1,R9
7739     MOV     R9,R8
7740     RRUM    #1,R8
7741     ADD     R9,R8
7742     BEGIN   CMP R8,&$390
7743     U>= UNTIL
7744     BIT.B   #4,&$200
7745     ADDC    R11,R11
7746     MOV.B   &$200,&$208
7747     BIC.B   #4,&$20C
7748     SUB     #1,R10
7749 0<> WHILE
7750     ADD R9,R8
7751     BEGIN
7752         MOV &$390,R9
7753         CMP R8,R9
7754         U>= IF
7755         BIC #$30,&$380
7756         GOTO FW1
7757         THEN
7758         BIT.B #4,&$20C
7759     0<> UNTIL
7760 REPEAT
7761 BIC #$30,&$380
7762 RLAM    #1,R11
7763 MOV.B   R11,R9
7764 RRUM    #2,R9
7765 BIT     #$4000,R11
7766 0= IF   BIS #$40,R9
7767 THEN
7768 RRUM    #3,R11
7769 XOR     @R1,R11
7770 BIT     #$400,R11
7771 0= ?GOTO FW2
7772 XOR #$400,0(R1)
7773 SUB #8,R15
7774 MOV R14,6(R15)
7775 MOV &$1DDC,4(R15)
7776 MOV #$10,&$1DDC
7777 MOV R9,0(R15)
7778 MOV #0,R14
7779 LO2HI
7780     LCD_CLEAR
7781     <# # #S #36 HOLD #>
7782     ['] LCD_WRC IS EMIT
7783     TYPE
7784     ['] EMIT >BODY IS EMIT
7785 HI2LO
7786 MOV @R15+,&$1DDC
7787 MOV @R15+,R14
7788 FW1 FW2
7789     MOV @R1+,R2
7790     BIC #%1111_1000,R2
7791     MOV @R1+,R0
7792 ENDCODE
7793
7794
7795 HDNCODE STOP_R2L
7796 CMP #$40AA,&{RC5TOLCD}+8
7797 0<> IF
7798     BIC.B #4,&$20A
7799     BIC.B #4,&$20C
7800     MOV #0,&$3C0
7801     MOV #0,&$340
7802     MOV #0,&$342
7803     MOV #$40AA,&{RC5TOLCD}+8
7804     MOV &{RC5TOLCD}+10,&WARM+2
7805     MOV &{RC5TOLCD}+12,&$FFEA
7806     MOV &{RC5TOLCD}+14,&$FFDE
7807     MOV &{RC5TOLCD}+10,R0
7808 THEN 
7809 MOV @R1+,R0
7810 ENDCODE
7811
7812 CODE STOP
7813 BW1
7814 CALL #STOP_R2L
7815 COLON
7816 ECHO
7817 ." RC5toLCD is removed,"
7818 ."  type START to restart"
7819 ABORT" "
7820 ;
7821
7822 HDNCODE INI_R2L
7823 BIC #1,&$130
7824 MOV &$1808,R14
7825 CMP #$0E,R14
7826 0<> IF
7827     CMP #$0A,R14
7828     U>= ?GOTO BW1
7829 THEN
7830 BIT.B #$20,&$240
7831 0= ?GOTO BW1
7832 MOV #0,&$1808
7833 MOV #%10_1101_0100,&$3C0
7834 $1800 @ 16000 = [IF]
7835     MOV #1,&$3E0
7836 [THEN]
7837 $1800 @ 24000 = [IF]
7838     MOV #2,&$3E0
7839 [THEN]
7840     MOV #19,&$3D2
7841 MOV #%0110_0000,&$3C6
7842     MOV #10,&$3D6
7843     BIS.B #$20,&$204
7844     BIS.B #$20,&$20A
7845     BIS.B #7,&$245
7846     BIC.B #7,&$247
7847     BIS.B #$0F,&$224
7848     BIC.B #$0F,&$226
7849     BIS.B #4,&$20A
7850     BIC.B #4,&$20C
7851 MOV #%01_0001_0100,&$340
7852     MOV ##3276,&$352
7853     MOV #%10000,&$342
7854 COLON
7855     #1000 20_US
7856     %011 TOP_LCD
7857     #205 20_US
7858     %011 TOP_LCD
7859     #5 20_US
7860     %011 TOP_LCD
7861     #2 20_US
7862     %010 TOP_LCD
7863     #2 20_US
7864     %00101000 LCD_WRF
7865     %1000 LCD_WRF
7866     LCD_CLEAR
7867     %0110 LCD_WRF
7868     %1100 LCD_WRF
7869     LCD_CLEAR
7870     ['] LCD_HOME IS CR
7871     ['] LCD_WRC  IS EMIT
7872     CR ." I love you"
7873     ['] CR >BODY IS CR
7874     ['] EMIT >BODY IS EMIT
7875     ." RC5toLCD is running. Type STOP to quit"
7876     ABORT" "
7877 ;
7878
7879 CODE START
7880 CMP #$40AA,&{RC5TOLCD}+8
7881 0= IF
7882     MOV #STOP_R2L,&{RC5TOLCD}+8
7883     MOV &WARM+2,&{RC5TOLCD}+10
7884     MOV #INI_R2L,&WARM+2
7885     MOV &$FFEA,&{RC5TOLCD}+12
7886     MOV #WDT_INT,&$FFEA
7887     MOV &$FFDE,&{RC5TOLCD}+14
7888     MOV #RC5_INT,&$FFDE
7889     MOV #INI_R2L,R0
7890 THEN
7891 MOV @R13+,R0 
7892 ENDCODE 
7893
7894
7895 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
7896
7897 MARKER {RC5TOLCD}
7898 6 ALLOT
7899
7900
7901
7902 [UNDEFINED] CONSTANT [IF]
7903 : CONSTANT 
7904 CREATE
7905 HI2LO
7906 MOV R14,-2(R10)
7907 MOV @R15+,R14
7908 MOV @R1+,R13
7909 MOV @R13+,R0
7910 ENDCODE
7911 [THEN]
7912
7913 [UNDEFINED] STATE [IF]
7914 $1DBE CONSTANT STATE
7915 [THEN]
7916
7917 [UNDEFINED] = [IF]
7918 CODE =
7919 SUB @R15+,R14
7920 0<> IF
7921     AND #0,R14
7922     MOV @R13+,R0
7923 THEN
7924 XOR #-1,R14
7925 MOV @R13+,R0
7926 ENDCODE
7927 [THEN]
7928
7929 [UNDEFINED] IF [IF]
7930 CODE IF
7931 SUB #2,R15
7932 MOV R14,0(R15)
7933 MOV &$1DC6,R14
7934 ADD #4,&$1DC6
7935 MOV #$4034,0(R14)
7936 ADD #2,R14
7937 MOV @R13+,R0
7938 ENDCODE IMMEDIATE
7939
7940 CODE THEN
7941 MOV &$1DC6,0(R14)
7942 MOV @R15+,R14
7943 MOV @R13+,R0
7944 ENDCODE IMMEDIATE
7945 [THEN]
7946
7947 [UNDEFINED] ELSE [IF]
7948 CODE ELSE
7949 ADD #4,&$1DC6
7950 MOV &$1DC6,R10
7951 MOV #$403A,-4(R10)
7952 MOV R10,0(R14)
7953 SUB #2,R10
7954 MOV R10,R14
7955 MOV @R13+,R0
7956 ENDCODE IMMEDIATE
7957 [THEN]
7958
7959 [UNDEFINED] IS [IF]
7960
7961 CODE DEFER!
7962 MOV @R15+,2(R14)
7963 MOV @R15+,R14
7964 MOV @R13+,R0
7965 ENDCODE
7966
7967
7968 : IS
7969 STATE @
7970 IF  POSTPONE ['] POSTPONE DEFER! 
7971 ELSE ' DEFER! 
7972 THEN
7973 ; IMMEDIATE
7974 [THEN]
7975
7976 [UNDEFINED] >BODY [IF]
7977 CODE >BODY
7978 ADD #4,R14
7979 MOV @R13+,R0
7980 ENDCODE
7981 [THEN]
7982
7983
7984 CODE 20_US
7985 BEGIN
7986     BEGIN
7987         BIT #1,&$3C0
7988     0<> UNTIL
7989     BIC #1,&$3C0
7990     SUB #1,R14
7991 U< UNTIL
7992 MOV @R15+,R14
7993 MOV @R13+,R0
7994 ENDCODE
7995
7996 CODE TOP_LCD
7997     BIS.B #4,&$243
7998     BIT.B #1,&$241
7999 0= IF
8000     AND.B #$0F,R14
8001     MOV.B R14,&$222
8002     BIC.B #4,&$243
8003     MOV @R15+,R14
8004     MOV @R13+,R0
8005 THEN
8006     SUB #2,R15
8007     MOV R14,0(R15)
8008     BIC.B #4,&$243
8009     MOV.B &$220,R14
8010     AND.B #$0F,R14
8011     MOV @R13+,R0
8012 ENDCODE
8013
8014 CODE LCD_WRC
8015     BIS.B #2,&$243
8016 BW1 SUB #2,R15
8017     MOV R14,0(R15)
8018     RRUM #4,R14
8019     BIC.B #1,&$243
8020     BIS.B #$0F,&$224
8021 COLON
8022     TOP_LCD 2 20_US
8023     TOP_LCD 2 20_US 
8024 ;
8025
8026 CODE LCD_WRF
8027     BIC.B #2,&$243
8028     GOTO BW1
8029 ENDCODE
8030
8031 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
8032 : LCD_HOME $02 LCD_WRF 100 20_us ;
8033
8034
8035
8036 HDNCODE WDT_INT
8037 BIT.B #$20,&$240
8038 0= IF
8039     CMP #19,&$3D6
8040     U< IF
8041         ADD #1,&$3D6
8042     THEN
8043 ELSE
8044     BIT.B #$40,&$240
8045     0= IF
8046         CMP #3,&$3D6
8047         U>= IF
8048            SUB #1,&$3D6
8049         THEN
8050     THEN
8051 THEN
8052 RETI
8053 ENDCODE
8054
8055 HDNCODE RC5_INT
8056 $1800 @ 16000 = [IF]
8057     MOV #1,&$3A0
8058 [THEN]
8059 $1800 @ 24000 = [IF]
8060     MOV #2,&$3A0
8061 [THEN]
8062 MOV #1778,R9
8063 MOV #14,R10
8064 BEGIN
8065 MOV #%1011100100,&$380
8066     RRUM    #1,R9
8067     MOV     R9,R8
8068     RRUM    #1,R8
8069     ADD     R9,R8
8070     BEGIN   CMP R8,&$390
8071     U>= UNTIL
8072     BIT.B   #4,&$200
8073     ADDC    R11,R11
8074     MOV.B   &$200,&$208
8075     BIC.B   #4,&$20C
8076     SUB     #1,R10
8077 0<> WHILE
8078     ADD R9,R8
8079     BEGIN
8080         MOV &$390,R9
8081         CMP R8,R9
8082         U>= IF
8083         BIC #$30,&$380
8084         GOTO FW1
8085         THEN
8086         BIT.B #4,&$20C
8087     0<> UNTIL
8088 REPEAT
8089 BIC #$30,&$380
8090 RLAM    #1,R11
8091 MOV.B   R11,R9
8092 RRUM    #2,R9
8093 BIT     #$4000,R11
8094 0= IF   BIS #$40,R9
8095 THEN
8096 RRUM    #3,R11
8097 XOR     @R1,R11
8098 BIT     #$400,R11
8099 0= ?GOTO FW2
8100 XOR #$400,0(R1)
8101 SUB #8,R15
8102 MOV R14,6(R15)
8103 MOV &$1DDC,4(R15)
8104 MOV #$10,&$1DDC
8105 MOV R9,0(R15)
8106 MOV #0,R14
8107 LO2HI
8108     LCD_CLEAR
8109     <# # #S #36 HOLD #>
8110     ['] LCD_WRC IS EMIT
8111     TYPE
8112     ['] EMIT >BODY IS EMIT
8113 HI2LO
8114 MOV @R15+,&$1DDC
8115 MOV @R15+,R14
8116 FW1 FW2
8117     MOV @R1+,R2
8118     BIC #%1111_1000,R2
8119     MOV @R1+,R0
8120 ENDCODE
8121
8122
8123 HDNCODE STOP_R2L
8124 CMP #$40AA,&{RC5TOLCD}+8
8125 0<> IF
8126     BIC.B #4,&$20A
8127     BIC.B #4,&$20C
8128     MOV #0,&$3C0
8129     MOV #0,&$340
8130     MOV #0,&$342
8131     MOV #$40AA,&{RC5TOLCD}+8
8132     MOV &{RC5TOLCD}+10,&WARM+2
8133     MOV &{RC5TOLCD}+12,&$FFEA
8134     MOV &{RC5TOLCD}+14,&$FFDE
8135     MOV &{RC5TOLCD}+10,R0
8136 THEN 
8137 MOV @R1+,R0
8138 ENDCODE
8139
8140 CODE STOP
8141 BW1
8142 CALL #STOP_R2L
8143 COLON
8144 ECHO
8145 ." RC5toLCD is removed,"
8146 ."  type START to restart"
8147 ABORT" "
8148 ;
8149
8150 HDNCODE INI_R2L
8151 BIC #1,&$130
8152 MOV &$1808,R14
8153 CMP #$0E,R14
8154 0<> IF
8155     CMP #$0A,R14
8156     U>= ?GOTO BW1
8157 THEN
8158 BIT.B #$20,&$240
8159 0= ?GOTO BW1
8160 MOV #0,&$1808
8161 MOV #%10_1101_0100,&$3C0
8162 $1800 @ 16000 = [IF]
8163     MOV #1,&$3E0
8164 [THEN]
8165 $1800 @ 24000 = [IF]
8166     MOV #2,&$3E0
8167 [THEN]
8168     MOV #19,&$3D2
8169 MOV #%0110_0000,&$3C6
8170     MOV #10,&$3D6
8171     BIS.B #$20,&$204
8172     BIS.B #$20,&$20A
8173     BIS.B #7,&$245
8174     BIC.B #7,&$247
8175     BIS.B #$0F,&$224
8176     BIC.B #$0F,&$226
8177     BIS.B #4,&$20A
8178     BIC.B #4,&$20C
8179 MOV #%01_0001_0100,&$340
8180     MOV ##3276,&$352
8181     MOV #%10000,&$342
8182 COLON
8183     #1000 20_US
8184     %011 TOP_LCD
8185     #205 20_US
8186     %011 TOP_LCD
8187     #5 20_US
8188     %011 TOP_LCD
8189     #2 20_US
8190     %010 TOP_LCD
8191     #2 20_US
8192     %00101000 LCD_WRF
8193     %1000 LCD_WRF
8194     LCD_CLEAR
8195     %0110 LCD_WRF
8196     %1100 LCD_WRF
8197     LCD_CLEAR
8198     ['] LCD_HOME IS CR
8199     ['] LCD_WRC  IS EMIT
8200     CR ." I love you"
8201     ['] CR >BODY IS CR
8202     ['] EMIT >BODY IS EMIT
8203     ." RC5toLCD is running. Type STOP to quit"
8204     ABORT" "
8205 ;
8206
8207 CODE START
8208 CMP #$40AA,&{RC5TOLCD}+8
8209 0= IF
8210     MOV #STOP_R2L,&{RC5TOLCD}+8
8211     MOV &WARM+2,&{RC5TOLCD}+10
8212     MOV #INI_R2L,&WARM+2
8213     MOV &$FFEA,&{RC5TOLCD}+12
8214     MOV #WDT_INT,&$FFEA
8215     MOV &$FFDE,&{RC5TOLCD}+14
8216     MOV #RC5_INT,&$FFDE
8217     MOV #INI_R2L,R0
8218 THEN
8219 MOV @R13+,R0 
8220 ENDCODE 
8221
8222
8223 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
8224
8225 MARKER {RC5TOLCD}
8226 6 ALLOT
8227
8228
8229
8230 [UNDEFINED] CONSTANT [IF]
8231 : CONSTANT 
8232 CREATE
8233 HI2LO
8234 MOV R14,-2(R10)
8235 MOV @R15+,R14
8236 MOV @R1+,R13
8237 MOV @R13+,R0
8238 ENDCODE
8239 [THEN]
8240
8241 [UNDEFINED] STATE [IF]
8242 $1DBE CONSTANT STATE
8243 [THEN]
8244
8245 [UNDEFINED] = [IF]
8246 CODE =
8247 SUB @R15+,R14
8248 0<> IF
8249     AND #0,R14
8250     MOV @R13+,R0
8251 THEN
8252 XOR #-1,R14
8253 MOV @R13+,R0
8254 ENDCODE
8255 [THEN]
8256
8257 [UNDEFINED] IF [IF]
8258 CODE IF
8259 SUB #2,R15
8260 MOV R14,0(R15)
8261 MOV &$1DC6,R14
8262 ADD #4,&$1DC6
8263 MOV #$4034,0(R14)
8264 ADD #2,R14
8265 MOV @R13+,R0
8266 ENDCODE IMMEDIATE
8267
8268 CODE THEN
8269 MOV &$1DC6,0(R14)
8270 MOV @R15+,R14
8271 MOV @R13+,R0
8272 ENDCODE IMMEDIATE
8273 [THEN]
8274
8275 [UNDEFINED] ELSE [IF]
8276 CODE ELSE
8277 ADD #4,&$1DC6
8278 MOV &$1DC6,R10
8279 MOV #$403A,-4(R10)
8280 MOV R10,0(R14)
8281 SUB #2,R10
8282 MOV R10,R14
8283 MOV @R13+,R0
8284 ENDCODE IMMEDIATE
8285 [THEN]
8286
8287 [UNDEFINED] IS [IF]
8288
8289 CODE DEFER!
8290 MOV @R15+,2(R14)
8291 MOV @R15+,R14
8292 MOV @R13+,R0
8293 ENDCODE
8294
8295
8296 : IS
8297 STATE @
8298 IF  POSTPONE ['] POSTPONE DEFER! 
8299 ELSE ' DEFER! 
8300 THEN
8301 ; IMMEDIATE
8302 [THEN]
8303
8304 [UNDEFINED] >BODY [IF]
8305 CODE >BODY
8306 ADD #4,R14
8307 MOV @R13+,R0
8308 ENDCODE
8309 [THEN]
8310
8311
8312 CODE 20_US
8313 BEGIN
8314     BEGIN
8315         BIT #1,&$3C0
8316     0<> UNTIL
8317     BIC #1,&$3C0
8318     SUB #1,R14
8319 U< UNTIL
8320 MOV @R15+,R14
8321 MOV @R13+,R0
8322 ENDCODE
8323
8324 CODE TOP_LCD
8325     BIS.B #4,&$243
8326     BIT.B #1,&$241
8327 0= IF
8328     AND.B #$0F,R14
8329     MOV.B R14,&$222
8330     BIC.B #4,&$243
8331     MOV @R15+,R14
8332     MOV @R13+,R0
8333 THEN
8334     SUB #2,R15
8335     MOV R14,0(R15)
8336     BIC.B #4,&$243
8337     MOV.B &$220,R14
8338     AND.B #$0F,R14
8339     MOV @R13+,R0
8340 ENDCODE
8341
8342 CODE LCD_WRC
8343     BIS.B #2,&$243
8344 BW1 SUB #2,R15
8345     MOV R14,0(R15)
8346     RRUM #4,R14
8347     BIC.B #1,&$243
8348     BIS.B #$0F,&$224
8349 COLON
8350     TOP_LCD 2 20_US
8351     TOP_LCD 2 20_US 
8352 ;
8353
8354 CODE LCD_WRF
8355     BIC.B #2,&$243
8356     GOTO BW1
8357 ENDCODE
8358
8359 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
8360 : LCD_HOME $02 LCD_WRF 100 20_us ;
8361
8362
8363
8364 HDNCODE WDT_INT
8365 BIT.B #$20,&$240
8366 0= IF
8367     CMP #19,&$3D6
8368     U< IF
8369         ADD #1,&$3D6
8370     THEN
8371 ELSE
8372     BIT.B #$40,&$240
8373     0= IF
8374         CMP #3,&$3D6
8375         U>= IF
8376            SUB #1,&$3D6
8377         THEN
8378     THEN
8379 THEN
8380 RETI
8381 ENDCODE
8382
8383 HDNCODE RC5_INT
8384 $1800 @ 16000 = [IF]
8385     MOV #1,&$3A0
8386 [THEN]
8387 $1800 @ 24000 = [IF]
8388     MOV #2,&$3A0
8389 [THEN]
8390 MOV #1778,R9
8391 MOV #14,R10
8392 BEGIN
8393 MOV #%1011100100,&$380
8394     RRUM    #1,R9
8395     MOV     R9,R8
8396     RRUM    #1,R8
8397     ADD     R9,R8
8398     BEGIN   CMP R8,&$390
8399     U>= UNTIL
8400     BIT.B   #4,&$200
8401     ADDC    R11,R11
8402     MOV.B   &$200,&$208
8403     BIC.B   #4,&$20C
8404     SUB     #1,R10
8405 0<> WHILE
8406     ADD R9,R8
8407     BEGIN
8408         MOV &$390,R9
8409         CMP R8,R9
8410         U>= IF
8411         BIC #$30,&$380
8412         GOTO FW1
8413         THEN
8414         BIT.B #4,&$20C
8415     0<> UNTIL
8416 REPEAT
8417 BIC #$30,&$380
8418 RLAM    #1,R11
8419 MOV.B   R11,R9
8420 RRUM    #2,R9
8421 BIT     #$4000,R11
8422 0= IF   BIS #$40,R9
8423 THEN
8424 RRUM    #3,R11
8425 XOR     @R1,R11
8426 BIT     #$400,R11
8427 0= ?GOTO FW2
8428 XOR #$400,0(R1)
8429 SUB #8,R15
8430 MOV R14,6(R15)
8431 MOV &$1DDC,4(R15)
8432 MOV #$10,&$1DDC
8433 MOV R9,0(R15)
8434 MOV #0,R14
8435 LO2HI
8436     LCD_CLEAR
8437     <# # #S #36 HOLD #>
8438     ['] LCD_WRC IS EMIT
8439     TYPE
8440     ['] EMIT >BODY IS EMIT
8441 HI2LO
8442 MOV @R15+,&$1DDC
8443 MOV @R15+,R14
8444 FW1 FW2
8445     MOV @R1+,R2
8446     BIC #%1111_1000,R2
8447     MOV @R1+,R0
8448 ENDCODE
8449
8450
8451 HDNCODE STOP_R2L
8452 CMP #$40AA,&{RC5TOLCD}+8
8453 0<> IF
8454     BIC.B #4,&$20A
8455     BIC.B #4,&$20C
8456     MOV #0,&$3C0
8457     MOV #0,&$340
8458     MOV #0,&$342
8459     MOV #$40AA,&{RC5TOLCD}+8
8460     MOV &{RC5TOLCD}+10,&WARM+2
8461     MOV &{RC5TOLCD}+12,&$FFEA
8462     MOV &{RC5TOLCD}+14,&$FFDE
8463     MOV &{RC5TOLCD}+10,R0
8464 THEN 
8465 MOV @R1+,R0
8466 ENDCODE
8467
8468 CODE STOP
8469 BW1
8470 CALL #STOP_R2L
8471 COLON
8472 ECHO
8473 ." RC5toLCD is removed,"
8474 ."  type START to restart"
8475 ABORT" "
8476 ;
8477
8478 HDNCODE INI_R2L
8479 BIC #1,&$130
8480 MOV &$1808,R14
8481 CMP #$0E,R14
8482 0<> IF
8483     CMP #$0A,R14
8484     U>= ?GOTO BW1
8485 THEN
8486 BIT.B #$20,&$240
8487 0= ?GOTO BW1
8488 MOV #0,&$1808
8489 MOV #%10_1101_0100,&$3C0
8490 $1800 @ 16000 = [IF]
8491     MOV #1,&$3E0
8492 [THEN]
8493 $1800 @ 24000 = [IF]
8494     MOV #2,&$3E0
8495 [THEN]
8496     MOV #19,&$3D2
8497 MOV #%0110_0000,&$3C6
8498     MOV #10,&$3D6
8499     BIS.B #$20,&$204
8500     BIS.B #$20,&$20A
8501     BIS.B #7,&$245
8502     BIC.B #7,&$247
8503     BIS.B #$0F,&$224
8504     BIC.B #$0F,&$226
8505     BIS.B #4,&$20A
8506     BIC.B #4,&$20C
8507 MOV #%01_0001_0100,&$340
8508     MOV ##3276,&$352
8509     MOV #%10000,&$342
8510 COLON
8511     #1000 20_US
8512     %011 TOP_LCD
8513     #205 20_US
8514     %011 TOP_LCD
8515     #5 20_US
8516     %011 TOP_LCD
8517     #2 20_US
8518     %010 TOP_LCD
8519     #2 20_US
8520     %00101000 LCD_WRF
8521     %1000 LCD_WRF
8522     LCD_CLEAR
8523     %0110 LCD_WRF
8524     %1100 LCD_WRF
8525     LCD_CLEAR
8526     ['] LCD_HOME IS CR
8527     ['] LCD_WRC  IS EMIT
8528     CR ." I love you"
8529     ['] CR >BODY IS CR
8530     ['] EMIT >BODY IS EMIT
8531     ." RC5toLCD is running. Type STOP to quit"
8532     ABORT" "
8533 ;
8534
8535 CODE START
8536 CMP #$40AA,&{RC5TOLCD}+8
8537 0= IF
8538     MOV #STOP_R2L,&{RC5TOLCD}+8
8539     MOV &WARM+2,&{RC5TOLCD}+10
8540     MOV #INI_R2L,&WARM+2
8541     MOV &$FFEA,&{RC5TOLCD}+12
8542     MOV #WDT_INT,&$FFEA
8543     MOV &$FFDE,&{RC5TOLCD}+14
8544     MOV #RC5_INT,&$FFDE
8545     MOV #INI_R2L,R0
8546 THEN
8547 MOV @R13+,R0 
8548 ENDCODE 
8549
8550
8551 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
8552
8553 MARKER {RC5TOLCD}
8554 6 ALLOT
8555
8556
8557
8558 [UNDEFINED] CONSTANT [IF]
8559 : CONSTANT 
8560 CREATE
8561 HI2LO
8562 MOV R14,-2(R10)
8563 MOV @R15+,R14
8564 MOV @R1+,R13
8565 MOV @R13+,R0
8566 ENDCODE
8567 [THEN]
8568
8569 [UNDEFINED] STATE [IF]
8570 $1DBE CONSTANT STATE
8571 [THEN]
8572
8573 [UNDEFINED] = [IF]
8574 CODE =
8575 SUB @R15+,R14
8576 0<> IF
8577     AND #0,R14
8578     MOV @R13+,R0
8579 THEN
8580 XOR #-1,R14
8581 MOV @R13+,R0
8582 ENDCODE
8583 [THEN]
8584
8585 [UNDEFINED] IF [IF]
8586 CODE IF
8587 SUB #2,R15
8588 MOV R14,0(R15)
8589 MOV &$1DC6,R14
8590 ADD #4,&$1DC6
8591 MOV #$4034,0(R14)
8592 ADD #2,R14
8593 MOV @R13+,R0
8594 ENDCODE IMMEDIATE
8595
8596 CODE THEN
8597 MOV &$1DC6,0(R14)
8598 MOV @R15+,R14
8599 MOV @R13+,R0
8600 ENDCODE IMMEDIATE
8601 [THEN]
8602
8603 [UNDEFINED] ELSE [IF]
8604 CODE ELSE
8605 ADD #4,&$1DC6
8606 MOV &$1DC6,R10
8607 MOV #$403A,-4(R10)
8608 MOV R10,0(R14)
8609 SUB #2,R10
8610 MOV R10,R14
8611 MOV @R13+,R0
8612 ENDCODE IMMEDIATE
8613 [THEN]
8614
8615 [UNDEFINED] IS [IF]
8616
8617 CODE DEFER!
8618 MOV @R15+,2(R14)
8619 MOV @R15+,R14
8620 MOV @R13+,R0
8621 ENDCODE
8622
8623
8624 : IS
8625 STATE @
8626 IF  POSTPONE ['] POSTPONE DEFER! 
8627 ELSE ' DEFER! 
8628 THEN
8629 ; IMMEDIATE
8630 [THEN]
8631
8632 [UNDEFINED] >BODY [IF]
8633 CODE >BODY
8634 ADD #4,R14
8635 MOV @R13+,R0
8636 ENDCODE
8637 [THEN]
8638
8639
8640 CODE 20_US
8641 BEGIN
8642     BEGIN
8643         BIT #1,&$3C0
8644     0<> UNTIL
8645     BIC #1,&$3C0
8646     SUB #1,R14
8647 U< UNTIL
8648 MOV @R15+,R14
8649 MOV @R13+,R0
8650 ENDCODE
8651
8652 CODE TOP_LCD
8653     BIS.B #4,&$243
8654     BIT.B #1,&$241
8655 0= IF
8656     AND.B #$0F,R14
8657     MOV.B R14,&$222
8658     BIC.B #4,&$243
8659     MOV @R15+,R14
8660     MOV @R13+,R0
8661 THEN
8662     SUB #2,R15
8663     MOV R14,0(R15)
8664     BIC.B #4,&$243
8665     MOV.B &$220,R14
8666     AND.B #$0F,R14
8667     MOV @R13+,R0
8668 ENDCODE
8669
8670 CODE LCD_WRC
8671     BIS.B #2,&$243
8672 BW1 SUB #2,R15
8673     MOV R14,0(R15)
8674     RRUM #4,R14
8675     BIC.B #1,&$243
8676     BIS.B #$0F,&$224
8677 COLON
8678     TOP_LCD 2 20_US
8679     TOP_LCD 2 20_US 
8680 ;
8681
8682 CODE LCD_WRF
8683     BIC.B #2,&$243
8684     GOTO BW1
8685 ENDCODE
8686
8687 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
8688 : LCD_HOME $02 LCD_WRF 100 20_us ;
8689
8690
8691
8692 HDNCODE WDT_INT
8693 BIT.B #$20,&$240
8694 0= IF
8695     CMP #19,&$3D6
8696     U< IF
8697         ADD #1,&$3D6
8698     THEN
8699 ELSE
8700     BIT.B #$40,&$240
8701     0= IF
8702         CMP #3,&$3D6
8703         U>= IF
8704            SUB #1,&$3D6
8705         THEN
8706     THEN
8707 THEN
8708 RETI
8709 ENDCODE
8710
8711 HDNCODE RC5_INT
8712 $1800 @ 16000 = [IF]
8713     MOV #1,&$3A0
8714 [THEN]
8715 $1800 @ 24000 = [IF]
8716     MOV #2,&$3A0
8717 [THEN]
8718 MOV #1778,R9
8719 MOV #14,R10
8720 BEGIN
8721 MOV #%1011100100,&$380
8722     RRUM    #1,R9
8723     MOV     R9,R8
8724     RRUM    #1,R8
8725     ADD     R9,R8
8726     BEGIN   CMP R8,&$390
8727     U>= UNTIL
8728     BIT.B   #4,&$200
8729     ADDC    R11,R11
8730     MOV.B   &$200,&$208
8731     BIC.B   #4,&$20C
8732     SUB     #1,R10
8733 0<> WHILE
8734     ADD R9,R8
8735     BEGIN
8736         MOV &$390,R9
8737         CMP R8,R9
8738         U>= IF
8739         BIC #$30,&$380
8740         GOTO FW1
8741         THEN
8742         BIT.B #4,&$20C
8743     0<> UNTIL
8744 REPEAT
8745 BIC #$30,&$380
8746 RLAM    #1,R11
8747 MOV.B   R11,R9
8748 RRUM    #2,R9
8749 BIT     #$4000,R11
8750 0= IF   BIS #$40,R9
8751 THEN
8752 RRUM    #3,R11
8753 XOR     @R1,R11
8754 BIT     #$400,R11
8755 0= ?GOTO FW2
8756 XOR #$400,0(R1)
8757 SUB #8,R15
8758 MOV R14,6(R15)
8759 MOV &$1DDC,4(R15)
8760 MOV #$10,&$1DDC
8761 MOV R9,0(R15)
8762 MOV #0,R14
8763 LO2HI
8764     LCD_CLEAR
8765     <# # #S #36 HOLD #>
8766     ['] LCD_WRC IS EMIT
8767     TYPE
8768     ['] EMIT >BODY IS EMIT
8769 HI2LO
8770 MOV @R15+,&$1DDC
8771 MOV @R15+,R14
8772 FW1 FW2
8773     MOV @R1+,R2
8774     BIC #%1111_1000,R2
8775     MOV @R1+,R0
8776 ENDCODE
8777
8778
8779 HDNCODE STOP_R2L
8780 CMP #$40AA,&{RC5TOLCD}+8
8781 0<> IF
8782     BIC.B #4,&$20A
8783     BIC.B #4,&$20C
8784     MOV #0,&$3C0
8785     MOV #0,&$340
8786     MOV #0,&$342
8787     MOV #$40AA,&{RC5TOLCD}+8
8788     MOV &{RC5TOLCD}+10,&WARM+2
8789     MOV &{RC5TOLCD}+12,&$FFEA
8790     MOV &{RC5TOLCD}+14,&$FFDE
8791     MOV &{RC5TOLCD}+10,R0
8792 THEN 
8793 MOV @R1+,R0
8794 ENDCODE
8795
8796 CODE STOP
8797 BW1
8798 CALL #STOP_R2L
8799 COLON
8800 ECHO
8801 ." RC5toLCD is removed,"
8802 ."  type START to restart"
8803 ABORT" "
8804 ;
8805
8806 HDNCODE INI_R2L
8807 BIC #1,&$130
8808 MOV &$1808,R14
8809 CMP #$0E,R14
8810 0<> IF
8811     CMP #$0A,R14
8812     U>= ?GOTO BW1
8813 THEN
8814 BIT.B #$20,&$240
8815 0= ?GOTO BW1
8816 MOV #0,&$1808
8817 MOV #%10_1101_0100,&$3C0
8818 $1800 @ 16000 = [IF]
8819     MOV #1,&$3E0
8820 [THEN]
8821 $1800 @ 24000 = [IF]
8822     MOV #2,&$3E0
8823 [THEN]
8824     MOV #19,&$3D2
8825 MOV #%0110_0000,&$3C6
8826     MOV #10,&$3D6
8827     BIS.B #$20,&$204
8828     BIS.B #$20,&$20A
8829     BIS.B #7,&$245
8830     BIC.B #7,&$247
8831     BIS.B #$0F,&$224
8832     BIC.B #$0F,&$226
8833     BIS.B #4,&$20A
8834     BIC.B #4,&$20C
8835 MOV #%01_0001_0100,&$340
8836     MOV ##3276,&$352
8837     MOV #%10000,&$342
8838 COLON
8839     #1000 20_US
8840     %011 TOP_LCD
8841     #205 20_US
8842     %011 TOP_LCD
8843     #5 20_US
8844     %011 TOP_LCD
8845     #2 20_US
8846     %010 TOP_LCD
8847     #2 20_US
8848     %00101000 LCD_WRF
8849     %1000 LCD_WRF
8850     LCD_CLEAR
8851     %0110 LCD_WRF
8852     %1100 LCD_WRF
8853     LCD_CLEAR
8854     ['] LCD_HOME IS CR
8855     ['] LCD_WRC  IS EMIT
8856     CR ." I love you"
8857     ['] CR >BODY IS CR
8858     ['] EMIT >BODY IS EMIT
8859     ." RC5toLCD is running. Type STOP to quit"
8860     ABORT" "
8861 ;
8862
8863 CODE START
8864 CMP #$40AA,&{RC5TOLCD}+8
8865 0= IF
8866     MOV #STOP_R2L,&{RC5TOLCD}+8
8867     MOV &WARM+2,&{RC5TOLCD}+10
8868     MOV #INI_R2L,&WARM+2
8869     MOV &$FFEA,&{RC5TOLCD}+12
8870     MOV #WDT_INT,&$FFEA
8871     MOV &$FFDE,&{RC5TOLCD}+14
8872     MOV #RC5_INT,&$FFDE
8873     MOV #INI_R2L,R0
8874 THEN
8875 MOV @R13+,R0 
8876 ENDCODE 
8877
8878
8879 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
8880
8881 MARKER {RC5TOLCD}
8882 6 ALLOT
8883
8884
8885
8886 [UNDEFINED] CONSTANT [IF]
8887 : CONSTANT 
8888 CREATE
8889 HI2LO
8890 MOV R14,-2(R10)
8891 MOV @R15+,R14
8892 MOV @R1+,R13
8893 MOV @R13+,R0
8894 ENDCODE
8895 [THEN]
8896
8897 [UNDEFINED] STATE [IF]
8898 $1DBE CONSTANT STATE
8899 [THEN]
8900
8901 [UNDEFINED] = [IF]
8902 CODE =
8903 SUB @R15+,R14
8904 0<> IF
8905     AND #0,R14
8906     MOV @R13+,R0
8907 THEN
8908 XOR #-1,R14
8909 MOV @R13+,R0
8910 ENDCODE
8911 [THEN]
8912
8913 [UNDEFINED] IF [IF]
8914 CODE IF
8915 SUB #2,R15
8916 MOV R14,0(R15)
8917 MOV &$1DC6,R14
8918 ADD #4,&$1DC6
8919 MOV #$4034,0(R14)
8920 ADD #2,R14
8921 MOV @R13+,R0
8922 ENDCODE IMMEDIATE
8923
8924 CODE THEN
8925 MOV &$1DC6,0(R14)
8926 MOV @R15+,R14
8927 MOV @R13+,R0
8928 ENDCODE IMMEDIATE
8929 [THEN]
8930
8931 [UNDEFINED] ELSE [IF]
8932 CODE ELSE
8933 ADD #4,&$1DC6
8934 MOV &$1DC6,R10
8935 MOV #$403A,-4(R10)
8936 MOV R10,0(R14)
8937 SUB #2,R10
8938 MOV R10,R14
8939 MOV @R13+,R0
8940 ENDCODE IMMEDIATE
8941 [THEN]
8942
8943 [UNDEFINED] IS [IF]
8944
8945 CODE DEFER!
8946 MOV @R15+,2(R14)
8947 MOV @R15+,R14
8948 MOV @R13+,R0
8949 ENDCODE
8950
8951
8952 : IS
8953 STATE @
8954 IF  POSTPONE ['] POSTPONE DEFER! 
8955 ELSE ' DEFER! 
8956 THEN
8957 ; IMMEDIATE
8958 [THEN]
8959
8960 [UNDEFINED] >BODY [IF]
8961 CODE >BODY
8962 ADD #4,R14
8963 MOV @R13+,R0
8964 ENDCODE
8965 [THEN]
8966
8967
8968 CODE 20_US
8969 BEGIN
8970     BEGIN
8971         BIT #1,&$3C0
8972     0<> UNTIL
8973     BIC #1,&$3C0
8974     SUB #1,R14
8975 U< UNTIL
8976 MOV @R15+,R14
8977 MOV @R13+,R0
8978 ENDCODE
8979
8980 CODE TOP_LCD
8981     BIS.B #4,&$243
8982     BIT.B #1,&$241
8983 0= IF
8984     AND.B #$0F,R14
8985     MOV.B R14,&$222
8986     BIC.B #4,&$243
8987     MOV @R15+,R14
8988     MOV @R13+,R0
8989 THEN
8990     SUB #2,R15
8991     MOV R14,0(R15)
8992     BIC.B #4,&$243
8993     MOV.B &$220,R14
8994     AND.B #$0F,R14
8995     MOV @R13+,R0
8996 ENDCODE
8997
8998 CODE LCD_WRC
8999     BIS.B #2,&$243
9000 BW1 SUB #2,R15
9001     MOV R14,0(R15)
9002     RRUM #4,R14
9003     BIC.B #1,&$243
9004     BIS.B #$0F,&$224
9005 COLON
9006     TOP_LCD 2 20_US
9007     TOP_LCD 2 20_US 
9008 ;
9009
9010 CODE LCD_WRF
9011     BIC.B #2,&$243
9012     GOTO BW1
9013 ENDCODE
9014
9015 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
9016 : LCD_HOME $02 LCD_WRF 100 20_us ;
9017
9018
9019
9020 HDNCODE WDT_INT
9021 BIT.B #$20,&$240
9022 0= IF
9023     CMP #19,&$3D6
9024     U< IF
9025         ADD #1,&$3D6
9026     THEN
9027 ELSE
9028     BIT.B #$40,&$240
9029     0= IF
9030         CMP #3,&$3D6
9031         U>= IF
9032            SUB #1,&$3D6
9033         THEN
9034     THEN
9035 THEN
9036 RETI
9037 ENDCODE
9038
9039 HDNCODE RC5_INT
9040 $1800 @ 16000 = [IF]
9041     MOV #1,&$3A0
9042 [THEN]
9043 $1800 @ 24000 = [IF]
9044     MOV #2,&$3A0
9045 [THEN]
9046 MOV #1778,R9
9047 MOV #14,R10
9048 BEGIN
9049 MOV #%1011100100,&$380
9050     RRUM    #1,R9
9051     MOV     R9,R8
9052     RRUM    #1,R8
9053     ADD     R9,R8
9054     BEGIN   CMP R8,&$390
9055     U>= UNTIL
9056     BIT.B   #4,&$200
9057     ADDC    R11,R11
9058     MOV.B   &$200,&$208
9059     BIC.B   #4,&$20C
9060     SUB     #1,R10
9061 0<> WHILE
9062     ADD R9,R8
9063     BEGIN
9064         MOV &$390,R9
9065         CMP R8,R9
9066         U>= IF
9067         BIC #$30,&$380
9068         GOTO FW1
9069         THEN
9070         BIT.B #4,&$20C
9071     0<> UNTIL
9072 REPEAT
9073 BIC #$30,&$380
9074 RLAM    #1,R11
9075 MOV.B   R11,R9
9076 RRUM    #2,R9
9077 BIT     #$4000,R11
9078 0= IF   BIS #$40,R9
9079 THEN
9080 RRUM    #3,R11
9081 XOR     @R1,R11
9082 BIT     #$400,R11
9083 0= ?GOTO FW2
9084 XOR #$400,0(R1)
9085 SUB #8,R15
9086 MOV R14,6(R15)
9087 MOV &$1DDC,4(R15)
9088 MOV #$10,&$1DDC
9089 MOV R9,0(R15)
9090 MOV #0,R14
9091 LO2HI
9092     LCD_CLEAR
9093     <# # #S #36 HOLD #>
9094     ['] LCD_WRC IS EMIT
9095     TYPE
9096     ['] EMIT >BODY IS EMIT
9097 HI2LO
9098 MOV @R15+,&$1DDC
9099 MOV @R15+,R14
9100 FW1 FW2
9101     MOV @R1+,R2
9102     BIC #%1111_1000,R2
9103     MOV @R1+,R0
9104 ENDCODE
9105
9106
9107 HDNCODE STOP_R2L
9108 CMP #$40AA,&{RC5TOLCD}+8
9109 0<> IF
9110     BIC.B #4,&$20A
9111     BIC.B #4,&$20C
9112     MOV #0,&$3C0
9113     MOV #0,&$340
9114     MOV #0,&$342
9115     MOV #$40AA,&{RC5TOLCD}+8
9116     MOV &{RC5TOLCD}+10,&WARM+2
9117     MOV &{RC5TOLCD}+12,&$FFEA
9118     MOV &{RC5TOLCD}+14,&$FFDE
9119     MOV &{RC5TOLCD}+10,R0
9120 THEN 
9121 MOV @R1+,R0
9122 ENDCODE
9123
9124 CODE STOP
9125 BW1
9126 CALL #STOP_R2L
9127 COLON
9128 ECHO
9129 ." RC5toLCD is removed,"
9130 ."  type START to restart"
9131 ABORT" "
9132 ;
9133
9134 HDNCODE INI_R2L
9135 BIC #1,&$130
9136 MOV &$1808,R14
9137 CMP #$0E,R14
9138 0<> IF
9139     CMP #$0A,R14
9140     U>= ?GOTO BW1
9141 THEN
9142 BIT.B #$20,&$240
9143 0= ?GOTO BW1
9144 MOV #0,&$1808
9145 MOV #%10_1101_0100,&$3C0
9146 $1800 @ 16000 = [IF]
9147     MOV #1,&$3E0
9148 [THEN]
9149 $1800 @ 24000 = [IF]
9150     MOV #2,&$3E0
9151 [THEN]
9152     MOV #19,&$3D2
9153 MOV #%0110_0000,&$3C6
9154     MOV #10,&$3D6
9155     BIS.B #$20,&$204
9156     BIS.B #$20,&$20A
9157     BIS.B #7,&$245
9158     BIC.B #7,&$247
9159     BIS.B #$0F,&$224
9160     BIC.B #$0F,&$226
9161     BIS.B #4,&$20A
9162     BIC.B #4,&$20C
9163 MOV #%01_0001_0100,&$340
9164     MOV ##3276,&$352
9165     MOV #%10000,&$342
9166 COLON
9167     #1000 20_US
9168     %011 TOP_LCD
9169     #205 20_US
9170     %011 TOP_LCD
9171     #5 20_US
9172     %011 TOP_LCD
9173     #2 20_US
9174     %010 TOP_LCD
9175     #2 20_US
9176     %00101000 LCD_WRF
9177     %1000 LCD_WRF
9178     LCD_CLEAR
9179     %0110 LCD_WRF
9180     %1100 LCD_WRF
9181     LCD_CLEAR
9182     ['] LCD_HOME IS CR
9183     ['] LCD_WRC  IS EMIT
9184     CR ." I love you"
9185     ['] CR >BODY IS CR
9186     ['] EMIT >BODY IS EMIT
9187     ." RC5toLCD is running. Type STOP to quit"
9188     ABORT" "
9189 ;
9190
9191 CODE START
9192 CMP #$40AA,&{RC5TOLCD}+8
9193 0= IF
9194     MOV #STOP_R2L,&{RC5TOLCD}+8
9195     MOV &WARM+2,&{RC5TOLCD}+10
9196     MOV #INI_R2L,&WARM+2
9197     MOV &$FFEA,&{RC5TOLCD}+12
9198     MOV #WDT_INT,&$FFEA
9199     MOV &$FFDE,&{RC5TOLCD}+14
9200     MOV #RC5_INT,&$FFDE
9201     MOV #INI_R2L,R0
9202 THEN
9203 MOV @R13+,R0 
9204 ENDCODE 
9205
9206
9207 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
9208
9209 MARKER {RC5TOLCD}
9210 6 ALLOT
9211
9212
9213
9214 [UNDEFINED] CONSTANT [IF]
9215 : CONSTANT 
9216 CREATE
9217 HI2LO
9218 MOV R14,-2(R10)
9219 MOV @R15+,R14
9220 MOV @R1+,R13
9221 MOV @R13+,R0
9222 ENDCODE
9223 [THEN]
9224
9225 [UNDEFINED] STATE [IF]
9226 $1DBE CONSTANT STATE
9227 [THEN]
9228
9229 [UNDEFINED] = [IF]
9230 CODE =
9231 SUB @R15+,R14
9232 0<> IF
9233     AND #0,R14
9234     MOV @R13+,R0
9235 THEN
9236 XOR #-1,R14
9237 MOV @R13+,R0
9238 ENDCODE
9239 [THEN]
9240
9241 [UNDEFINED] IF [IF]
9242 CODE IF
9243 SUB #2,R15
9244 MOV R14,0(R15)
9245 MOV &$1DC6,R14
9246 ADD #4,&$1DC6
9247 MOV #$4034,0(R14)
9248 ADD #2,R14
9249 MOV @R13+,R0
9250 ENDCODE IMMEDIATE
9251
9252 CODE THEN
9253 MOV &$1DC6,0(R14)
9254 MOV @R15+,R14
9255 MOV @R13+,R0
9256 ENDCODE IMMEDIATE
9257 [THEN]
9258
9259 [UNDEFINED] ELSE [IF]
9260 CODE ELSE
9261 ADD #4,&$1DC6
9262 MOV &$1DC6,R10
9263 MOV #$403A,-4(R10)
9264 MOV R10,0(R14)
9265 SUB #2,R10
9266 MOV R10,R14
9267 MOV @R13+,R0
9268 ENDCODE IMMEDIATE
9269 [THEN]
9270
9271 [UNDEFINED] IS [IF]
9272
9273 CODE DEFER!
9274 MOV @R15+,2(R14)
9275 MOV @R15+,R14
9276 MOV @R13+,R0
9277 ENDCODE
9278
9279
9280 : IS
9281 STATE @
9282 IF  POSTPONE ['] POSTPONE DEFER! 
9283 ELSE ' DEFER! 
9284 THEN
9285 ; IMMEDIATE
9286 [THEN]
9287
9288 [UNDEFINED] >BODY [IF]
9289 CODE >BODY
9290 ADD #4,R14
9291 MOV @R13+,R0
9292 ENDCODE
9293 [THEN]
9294
9295
9296 CODE 20_US
9297 BEGIN
9298     BEGIN
9299         BIT #1,&$3C0
9300     0<> UNTIL
9301     BIC #1,&$3C0
9302     SUB #1,R14
9303 U< UNTIL
9304 MOV @R15+,R14
9305 MOV @R13+,R0
9306 ENDCODE
9307
9308 CODE TOP_LCD
9309     BIS.B #4,&$243
9310     BIT.B #1,&$241
9311 0= IF
9312     AND.B #$0F,R14
9313     MOV.B R14,&$222
9314     BIC.B #4,&$243
9315     MOV @R15+,R14
9316     MOV @R13+,R0
9317 THEN
9318     SUB #2,R15
9319     MOV R14,0(R15)
9320     BIC.B #4,&$243
9321     MOV.B &$220,R14
9322     AND.B #$0F,R14
9323     MOV @R13+,R0
9324 ENDCODE
9325
9326 CODE LCD_WRC
9327     BIS.B #2,&$243
9328 BW1 SUB #2,R15
9329     MOV R14,0(R15)
9330     RRUM #4,R14
9331     BIC.B #1,&$243
9332     BIS.B #$0F,&$224
9333 COLON
9334     TOP_LCD 2 20_US
9335     TOP_LCD 2 20_US 
9336 ;
9337
9338 CODE LCD_WRF
9339     BIC.B #2,&$243
9340     GOTO BW1
9341 ENDCODE
9342
9343 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
9344 : LCD_HOME $02 LCD_WRF 100 20_us ;
9345
9346
9347
9348 HDNCODE WDT_INT
9349 BIT.B #$20,&$240
9350 0= IF
9351     CMP #19,&$3D6
9352     U< IF
9353         ADD #1,&$3D6
9354     THEN
9355 ELSE
9356     BIT.B #$40,&$240
9357     0= IF
9358         CMP #3,&$3D6
9359         U>= IF
9360            SUB #1,&$3D6
9361         THEN
9362     THEN
9363 THEN
9364 RETI
9365 ENDCODE
9366
9367 HDNCODE RC5_INT
9368 $1800 @ 16000 = [IF]
9369     MOV #1,&$3A0
9370 [THEN]
9371 $1800 @ 24000 = [IF]
9372     MOV #2,&$3A0
9373 [THEN]
9374 MOV #1778,R9
9375 MOV #14,R10
9376 BEGIN
9377 MOV #%1011100100,&$380
9378     RRUM    #1,R9
9379     MOV     R9,R8
9380     RRUM    #1,R8
9381     ADD     R9,R8
9382     BEGIN   CMP R8,&$390
9383     U>= UNTIL
9384     BIT.B   #4,&$200
9385     ADDC    R11,R11
9386     MOV.B   &$200,&$208
9387     BIC.B   #4,&$20C
9388     SUB     #1,R10
9389 0<> WHILE
9390     ADD R9,R8
9391     BEGIN
9392         MOV &$390,R9
9393         CMP R8,R9
9394         U>= IF
9395         BIC #$30,&$380
9396         GOTO FW1
9397         THEN
9398         BIT.B #4,&$20C
9399     0<> UNTIL
9400 REPEAT
9401 BIC #$30,&$380
9402 RLAM    #1,R11
9403 MOV.B   R11,R9
9404 RRUM    #2,R9
9405 BIT     #$4000,R11
9406 0= IF   BIS #$40,R9
9407 THEN
9408 RRUM    #3,R11
9409 XOR     @R1,R11
9410 BIT     #$400,R11
9411 0= ?GOTO FW2
9412 XOR #$400,0(R1)
9413 SUB #8,R15
9414 MOV R14,6(R15)
9415 MOV &$1DDC,4(R15)
9416 MOV #$10,&$1DDC
9417 MOV R9,0(R15)
9418 MOV #0,R14
9419 LO2HI
9420     LCD_CLEAR
9421     <# # #S #36 HOLD #>
9422     ['] LCD_WRC IS EMIT
9423     TYPE
9424     ['] EMIT >BODY IS EMIT
9425 HI2LO
9426 MOV @R15+,&$1DDC
9427 MOV @R15+,R14
9428 FW1 FW2
9429     MOV @R1+,R2
9430     BIC #%1111_1000,R2
9431     MOV @R1+,R0
9432 ENDCODE
9433
9434
9435 HDNCODE STOP_R2L
9436 CMP #$40AA,&{RC5TOLCD}+8
9437 0<> IF
9438     BIC.B #4,&$20A
9439     BIC.B #4,&$20C
9440     MOV #0,&$3C0
9441     MOV #0,&$340
9442     MOV #0,&$342
9443     MOV #$40AA,&{RC5TOLCD}+8
9444     MOV &{RC5TOLCD}+10,&WARM+2
9445     MOV &{RC5TOLCD}+12,&$FFEA
9446     MOV &{RC5TOLCD}+14,&$FFDE
9447     MOV &{RC5TOLCD}+10,R0
9448 THEN 
9449 MOV @R1+,R0
9450 ENDCODE
9451
9452 CODE STOP
9453 BW1
9454 CALL #STOP_R2L
9455 COLON
9456 ECHO
9457 ." RC5toLCD is removed,"
9458 ."  type START to restart"
9459 ABORT" "
9460 ;
9461
9462 HDNCODE INI_R2L
9463 BIC #1,&$130
9464 MOV &$1808,R14
9465 CMP #$0E,R14
9466 0<> IF
9467     CMP #$0A,R14
9468     U>= ?GOTO BW1
9469 THEN
9470 BIT.B #$20,&$240
9471 0= ?GOTO BW1
9472 MOV #0,&$1808
9473 MOV #%10_1101_0100,&$3C0
9474 $1800 @ 16000 = [IF]
9475     MOV #1,&$3E0
9476 [THEN]
9477 $1800 @ 24000 = [IF]
9478     MOV #2,&$3E0
9479 [THEN]
9480     MOV #19,&$3D2
9481 MOV #%0110_0000,&$3C6
9482     MOV #10,&$3D6
9483     BIS.B #$20,&$204
9484     BIS.B #$20,&$20A
9485     BIS.B #7,&$245
9486     BIC.B #7,&$247
9487     BIS.B #$0F,&$224
9488     BIC.B #$0F,&$226
9489     BIS.B #4,&$20A
9490     BIC.B #4,&$20C
9491 MOV #%01_0001_0100,&$340
9492     MOV ##3276,&$352
9493     MOV #%10000,&$342
9494 COLON
9495     #1000 20_US
9496     %011 TOP_LCD
9497     #205 20_US
9498     %011 TOP_LCD
9499     #5 20_US
9500     %011 TOP_LCD
9501     #2 20_US
9502     %010 TOP_LCD
9503     #2 20_US
9504     %00101000 LCD_WRF
9505     %1000 LCD_WRF
9506     LCD_CLEAR
9507     %0110 LCD_WRF
9508     %1100 LCD_WRF
9509     LCD_CLEAR
9510     ['] LCD_HOME IS CR
9511     ['] LCD_WRC  IS EMIT
9512     CR ." I love you"
9513     ['] CR >BODY IS CR
9514     ['] EMIT >BODY IS EMIT
9515     ." RC5toLCD is running. Type STOP to quit"
9516     ABORT" "
9517 ;
9518
9519 CODE START
9520 CMP #$40AA,&{RC5TOLCD}+8
9521 0= IF
9522     MOV #STOP_R2L,&{RC5TOLCD}+8
9523     MOV &WARM+2,&{RC5TOLCD}+10
9524     MOV #INI_R2L,&WARM+2
9525     MOV &$FFEA,&{RC5TOLCD}+12
9526     MOV #WDT_INT,&$FFEA
9527     MOV &$FFDE,&{RC5TOLCD}+14
9528     MOV #RC5_INT,&$FFDE
9529     MOV #INI_R2L,R0
9530 THEN
9531 MOV @R13+,R0 
9532 ENDCODE 
9533
9534
9535 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
9536
9537 MARKER {RC5TOLCD}
9538 6 ALLOT
9539
9540
9541
9542 [UNDEFINED] CONSTANT [IF]
9543 : CONSTANT 
9544 CREATE
9545 HI2LO
9546 MOV R14,-2(R10)
9547 MOV @R15+,R14
9548 MOV @R1+,R13
9549 MOV @R13+,R0
9550 ENDCODE
9551 [THEN]
9552
9553 [UNDEFINED] STATE [IF]
9554 $1DBE CONSTANT STATE
9555 [THEN]
9556
9557 [UNDEFINED] = [IF]
9558 CODE =
9559 SUB @R15+,R14
9560 0<> IF
9561     AND #0,R14
9562     MOV @R13+,R0
9563 THEN
9564 XOR #-1,R14
9565 MOV @R13+,R0
9566 ENDCODE
9567 [THEN]
9568
9569 [UNDEFINED] IF [IF]
9570 CODE IF
9571 SUB #2,R15
9572 MOV R14,0(R15)
9573 MOV &$1DC6,R14
9574 ADD #4,&$1DC6
9575 MOV #$4034,0(R14)
9576 ADD #2,R14
9577 MOV @R13+,R0
9578 ENDCODE IMMEDIATE
9579
9580 CODE THEN
9581 MOV &$1DC6,0(R14)
9582 MOV @R15+,R14
9583 MOV @R13+,R0
9584 ENDCODE IMMEDIATE
9585 [THEN]
9586
9587 [UNDEFINED] ELSE [IF]
9588 CODE ELSE
9589 ADD #4,&$1DC6
9590 MOV &$1DC6,R10
9591 MOV #$403A,-4(R10)
9592 MOV R10,0(R14)
9593 SUB #2,R10
9594 MOV R10,R14
9595 MOV @R13+,R0
9596 ENDCODE IMMEDIATE
9597 [THEN]
9598
9599 [UNDEFINED] IS [IF]
9600
9601 CODE DEFER!
9602 MOV @R15+,2(R14)
9603 MOV @R15+,R14
9604 MOV @R13+,R0
9605 ENDCODE
9606
9607
9608 : IS
9609 STATE @
9610 IF  POSTPONE ['] POSTPONE DEFER! 
9611 ELSE ' DEFER! 
9612 THEN
9613 ; IMMEDIATE
9614 [THEN]
9615
9616 [UNDEFINED] >BODY [IF]
9617 CODE >BODY
9618 ADD #4,R14
9619 MOV @R13+,R0
9620 ENDCODE
9621 [THEN]
9622
9623
9624 CODE 20_US
9625 BEGIN
9626     BEGIN
9627         BIT #1,&$3C0
9628     0<> UNTIL
9629     BIC #1,&$3C0
9630     SUB #1,R14
9631 U< UNTIL
9632 MOV @R15+,R14
9633 MOV @R13+,R0
9634 ENDCODE
9635
9636 CODE TOP_LCD
9637     BIS.B #4,&$243
9638     BIT.B #1,&$241
9639 0= IF
9640     AND.B #$0F,R14
9641     MOV.B R14,&$222
9642     BIC.B #4,&$243
9643     MOV @R15+,R14
9644     MOV @R13+,R0
9645 THEN
9646     SUB #2,R15
9647     MOV R14,0(R15)
9648     BIC.B #4,&$243
9649     MOV.B &$220,R14
9650     AND.B #$0F,R14
9651     MOV @R13+,R0
9652 ENDCODE
9653
9654 CODE LCD_WRC
9655     BIS.B #2,&$243
9656 BW1 SUB #2,R15
9657     MOV R14,0(R15)
9658     RRUM #4,R14
9659     BIC.B #1,&$243
9660     BIS.B #$0F,&$224
9661 COLON
9662     TOP_LCD 2 20_US
9663     TOP_LCD 2 20_US 
9664 ;
9665
9666 CODE LCD_WRF
9667     BIC.B #2,&$243
9668     GOTO BW1
9669 ENDCODE
9670
9671 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
9672 : LCD_HOME $02 LCD_WRF 100 20_us ;
9673
9674
9675
9676 HDNCODE WDT_INT
9677 BIT.B #$20,&$240
9678 0= IF
9679     CMP #19,&$3D6
9680     U< IF
9681         ADD #1,&$3D6
9682     THEN
9683 ELSE
9684     BIT.B #$40,&$240
9685     0= IF
9686         CMP #3,&$3D6
9687         U>= IF
9688            SUB #1,&$3D6
9689         THEN
9690     THEN
9691 THEN
9692 RETI
9693 ENDCODE
9694
9695 HDNCODE RC5_INT
9696 $1800 @ 16000 = [IF]
9697     MOV #1,&$3A0
9698 [THEN]
9699 $1800 @ 24000 = [IF]
9700     MOV #2,&$3A0
9701 [THEN]
9702 MOV #1778,R9
9703 MOV #14,R10
9704 BEGIN
9705 MOV #%1011100100,&$380
9706     RRUM    #1,R9
9707     MOV     R9,R8
9708     RRUM    #1,R8
9709     ADD     R9,R8
9710     BEGIN   CMP R8,&$390
9711     U>= UNTIL
9712     BIT.B   #4,&$200
9713     ADDC    R11,R11
9714     MOV.B   &$200,&$208
9715     BIC.B   #4,&$20C
9716     SUB     #1,R10
9717 0<> WHILE
9718     ADD R9,R8
9719     BEGIN
9720         MOV &$390,R9
9721         CMP R8,R9
9722         U>= IF
9723         BIC #$30,&$380
9724         GOTO FW1
9725         THEN
9726         BIT.B #4,&$20C
9727     0<> UNTIL
9728 REPEAT
9729 BIC #$30,&$380
9730 RLAM    #1,R11
9731 MOV.B   R11,R9
9732 RRUM    #2,R9
9733 BIT     #$4000,R11
9734 0= IF   BIS #$40,R9
9735 THEN
9736 RRUM    #3,R11
9737 XOR     @R1,R11
9738 BIT     #$400,R11
9739 0= ?GOTO FW2
9740 XOR #$400,0(R1)
9741 SUB #8,R15
9742 MOV R14,6(R15)
9743 MOV &$1DDC,4(R15)
9744 MOV #$10,&$1DDC
9745 MOV R9,0(R15)
9746 MOV #0,R14
9747 LO2HI
9748     LCD_CLEAR
9749     <# # #S #36 HOLD #>
9750     ['] LCD_WRC IS EMIT
9751     TYPE
9752     ['] EMIT >BODY IS EMIT
9753 HI2LO
9754 MOV @R15+,&$1DDC
9755 MOV @R15+,R14
9756 FW1 FW2
9757     MOV @R1+,R2
9758     BIC #%1111_1000,R2
9759     MOV @R1+,R0
9760 ENDCODE
9761
9762
9763 HDNCODE STOP_R2L
9764 CMP #$40AA,&{RC5TOLCD}+8
9765 0<> IF
9766     BIC.B #4,&$20A
9767     BIC.B #4,&$20C
9768     MOV #0,&$3C0
9769     MOV #0,&$340
9770     MOV #0,&$342
9771     MOV #$40AA,&{RC5TOLCD}+8
9772     MOV &{RC5TOLCD}+10,&WARM+2
9773     MOV &{RC5TOLCD}+12,&$FFEA
9774     MOV &{RC5TOLCD}+14,&$FFDE
9775     MOV &{RC5TOLCD}+10,R0
9776 THEN 
9777 MOV @R1+,R0
9778 ENDCODE
9779
9780 CODE STOP
9781 BW1
9782 CALL #STOP_R2L
9783 COLON
9784 ECHO
9785 ." RC5toLCD is removed,"
9786 ."  type START to restart"
9787 ABORT" "
9788 ;
9789
9790 HDNCODE INI_R2L
9791 BIC #1,&$130
9792 MOV &$1808,R14
9793 CMP #$0E,R14
9794 0<> IF
9795     CMP #$0A,R14
9796     U>= ?GOTO BW1
9797 THEN
9798 BIT.B #$20,&$240
9799 0= ?GOTO BW1
9800 MOV #0,&$1808
9801 MOV #%10_1101_0100,&$3C0
9802 $1800 @ 16000 = [IF]
9803     MOV #1,&$3E0
9804 [THEN]
9805 $1800 @ 24000 = [IF]
9806     MOV #2,&$3E0
9807 [THEN]
9808     MOV #19,&$3D2
9809 MOV #%0110_0000,&$3C6
9810     MOV #10,&$3D6
9811     BIS.B #$20,&$204
9812     BIS.B #$20,&$20A
9813     BIS.B #7,&$245
9814     BIC.B #7,&$247
9815     BIS.B #$0F,&$224
9816     BIC.B #$0F,&$226
9817     BIS.B #4,&$20A
9818     BIC.B #4,&$20C
9819 MOV #%01_0001_0100,&$340
9820     MOV ##3276,&$352
9821     MOV #%10000,&$342
9822 COLON
9823     #1000 20_US
9824     %011 TOP_LCD
9825     #205 20_US
9826     %011 TOP_LCD
9827     #5 20_US
9828     %011 TOP_LCD
9829     #2 20_US
9830     %010 TOP_LCD
9831     #2 20_US
9832     %00101000 LCD_WRF
9833     %1000 LCD_WRF
9834     LCD_CLEAR
9835     %0110 LCD_WRF
9836     %1100 LCD_WRF
9837     LCD_CLEAR
9838     ['] LCD_HOME IS CR
9839     ['] LCD_WRC  IS EMIT
9840     CR ." I love you"
9841     ['] CR >BODY IS CR
9842     ['] EMIT >BODY IS EMIT
9843     ." RC5toLCD is running. Type STOP to quit"
9844     ABORT" "
9845 ;
9846
9847 CODE START
9848 CMP #$40AA,&{RC5TOLCD}+8
9849 0= IF
9850     MOV #STOP_R2L,&{RC5TOLCD}+8
9851     MOV &WARM+2,&{RC5TOLCD}+10
9852     MOV #INI_R2L,&WARM+2
9853     MOV &$FFEA,&{RC5TOLCD}+12
9854     MOV #WDT_INT,&$FFEA
9855     MOV &$FFDE,&{RC5TOLCD}+14
9856     MOV #RC5_INT,&$FFDE
9857     MOV #INI_R2L,R0
9858 THEN
9859 MOV @R13+,R0 
9860 ENDCODE 
9861
9862
9863 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
9864
9865 MARKER {RC5TOLCD}
9866 6 ALLOT
9867
9868
9869
9870 [UNDEFINED] CONSTANT [IF]
9871 : CONSTANT 
9872 CREATE
9873 HI2LO
9874 MOV R14,-2(R10)
9875 MOV @R15+,R14
9876 MOV @R1+,R13
9877 MOV @R13+,R0
9878 ENDCODE
9879 [THEN]
9880
9881 [UNDEFINED] STATE [IF]
9882 $1DBE CONSTANT STATE
9883 [THEN]
9884
9885 [UNDEFINED] = [IF]
9886 CODE =
9887 SUB @R15+,R14
9888 0<> IF
9889     AND #0,R14
9890     MOV @R13+,R0
9891 THEN
9892 XOR #-1,R14
9893 MOV @R13+,R0
9894 ENDCODE
9895 [THEN]
9896
9897 [UNDEFINED] IF [IF]
9898 CODE IF
9899 SUB #2,R15
9900 MOV R14,0(R15)
9901 MOV &$1DC6,R14
9902 ADD #4,&$1DC6
9903 MOV #$4034,0(R14)
9904 ADD #2,R14
9905 MOV @R13+,R0
9906 ENDCODE IMMEDIATE
9907
9908 CODE THEN
9909 MOV &$1DC6,0(R14)
9910 MOV @R15+,R14
9911 MOV @R13+,R0
9912 ENDCODE IMMEDIATE
9913 [THEN]
9914
9915 [UNDEFINED] ELSE [IF]
9916 CODE ELSE
9917 ADD #4,&$1DC6
9918 MOV &$1DC6,R10
9919 MOV #$403A,-4(R10)
9920 MOV R10,0(R14)
9921 SUB #2,R10
9922 MOV R10,R14
9923 MOV @R13+,R0
9924 ENDCODE IMMEDIATE
9925 [THEN]
9926
9927 [UNDEFINED] IS [IF]
9928
9929 CODE DEFER!
9930 MOV @R15+,2(R14)
9931 MOV @R15+,R14
9932 MOV @R13+,R0
9933 ENDCODE
9934
9935
9936 : IS
9937 STATE @
9938 IF  POSTPONE ['] POSTPONE DEFER! 
9939 ELSE ' DEFER! 
9940 THEN
9941 ; IMMEDIATE
9942 [THEN]
9943
9944 [UNDEFINED] >BODY [IF]
9945 CODE >BODY
9946 ADD #4,R14
9947 MOV @R13+,R0
9948 ENDCODE
9949 [THEN]
9950
9951
9952 CODE 20_US
9953 BEGIN
9954     BEGIN
9955         BIT #1,&$3C0
9956     0<> UNTIL
9957     BIC #1,&$3C0
9958     SUB #1,R14
9959 U< UNTIL
9960 MOV @R15+,R14
9961 MOV @R13+,R0
9962 ENDCODE
9963
9964 CODE TOP_LCD
9965     BIS.B #4,&$243
9966     BIT.B #1,&$241
9967 0= IF
9968     AND.B #$0F,R14
9969     MOV.B R14,&$222
9970     BIC.B #4,&$243
9971     MOV @R15+,R14
9972     MOV @R13+,R0
9973 THEN
9974     SUB #2,R15
9975     MOV R14,0(R15)
9976     BIC.B #4,&$243
9977     MOV.B &$220,R14
9978     AND.B #$0F,R14
9979     MOV @R13+,R0
9980 ENDCODE
9981
9982 CODE LCD_WRC
9983     BIS.B #2,&$243
9984 BW1 SUB #2,R15
9985     MOV R14,0(R15)
9986     RRUM #4,R14
9987     BIC.B #1,&$243
9988     BIS.B #$0F,&$224
9989 COLON
9990     TOP_LCD 2 20_US
9991     TOP_LCD 2 20_US 
9992 ;
9993
9994 CODE LCD_WRF
9995     BIC.B #2,&$243
9996     GOTO BW1
9997 ENDCODE
9998
9999 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
10000 : LCD_HOME $02 LCD_WRF 100 20_us ;
10001
10002
10003
10004 HDNCODE WDT_INT
10005 BIT.B #$20,&$240
10006 0= IF
10007     CMP #19,&$3D6
10008     U< IF
10009         ADD #1,&$3D6
10010     THEN
10011 ELSE
10012     BIT.B #$40,&$240
10013     0= IF
10014         CMP #3,&$3D6
10015         U>= IF
10016            SUB #1,&$3D6
10017         THEN
10018     THEN
10019 THEN
10020 RETI
10021 ENDCODE
10022
10023 HDNCODE RC5_INT
10024 $1800 @ 16000 = [IF]
10025     MOV #1,&$3A0
10026 [THEN]
10027 $1800 @ 24000 = [IF]
10028     MOV #2,&$3A0
10029 [THEN]
10030 MOV #1778,R9
10031 MOV #14,R10
10032 BEGIN
10033 MOV #%1011100100,&$380
10034     RRUM    #1,R9
10035     MOV     R9,R8
10036     RRUM    #1,R8
10037     ADD     R9,R8
10038     BEGIN   CMP R8,&$390
10039     U>= UNTIL
10040     BIT.B   #4,&$200
10041     ADDC    R11,R11
10042     MOV.B   &$200,&$208
10043     BIC.B   #4,&$20C
10044     SUB     #1,R10
10045 0<> WHILE
10046     ADD R9,R8
10047     BEGIN
10048         MOV &$390,R9
10049         CMP R8,R9
10050         U>= IF
10051         BIC #$30,&$380
10052         GOTO FW1
10053         THEN
10054         BIT.B #4,&$20C
10055     0<> UNTIL
10056 REPEAT
10057 BIC #$30,&$380
10058 RLAM    #1,R11
10059 MOV.B   R11,R9
10060 RRUM    #2,R9
10061 BIT     #$4000,R11
10062 0= IF   BIS #$40,R9
10063 THEN
10064 RRUM    #3,R11
10065 XOR     @R1,R11
10066 BIT     #$400,R11
10067 0= ?GOTO FW2
10068 XOR #$400,0(R1)
10069 SUB #8,R15
10070 MOV R14,6(R15)
10071 MOV &$1DDC,4(R15)
10072 MOV #$10,&$1DDC
10073 MOV R9,0(R15)
10074 MOV #0,R14
10075 LO2HI
10076     LCD_CLEAR
10077     <# # #S #36 HOLD #>
10078     ['] LCD_WRC IS EMIT
10079     TYPE
10080     ['] EMIT >BODY IS EMIT
10081 HI2LO
10082 MOV @R15+,&$1DDC
10083 MOV @R15+,R14
10084 FW1 FW2
10085     MOV @R1+,R2
10086     BIC #%1111_1000,R2
10087     MOV @R1+,R0
10088 ENDCODE
10089
10090
10091 HDNCODE STOP_R2L
10092 CMP #$40AA,&{RC5TOLCD}+8
10093 0<> IF
10094     BIC.B #4,&$20A
10095     BIC.B #4,&$20C
10096     MOV #0,&$3C0
10097     MOV #0,&$340
10098     MOV #0,&$342
10099     MOV #$40AA,&{RC5TOLCD}+8
10100     MOV &{RC5TOLCD}+10,&WARM+2
10101     MOV &{RC5TOLCD}+12,&$FFEA
10102     MOV &{RC5TOLCD}+14,&$FFDE
10103     MOV &{RC5TOLCD}+10,R0
10104 THEN 
10105 MOV @R1+,R0
10106 ENDCODE
10107
10108 CODE STOP
10109 BW1
10110 CALL #STOP_R2L
10111 COLON
10112 ECHO
10113 ." RC5toLCD is removed,"
10114 ."  type START to restart"
10115 ABORT" "
10116 ;
10117
10118 HDNCODE INI_R2L
10119 BIC #1,&$130
10120 MOV &$1808,R14
10121 CMP #$0E,R14
10122 0<> IF
10123     CMP #$0A,R14
10124     U>= ?GOTO BW1
10125 THEN
10126 BIT.B #$20,&$240
10127 0= ?GOTO BW1
10128 MOV #0,&$1808
10129 MOV #%10_1101_0100,&$3C0
10130 $1800 @ 16000 = [IF]
10131     MOV #1,&$3E0
10132 [THEN]
10133 $1800 @ 24000 = [IF]
10134     MOV #2,&$3E0
10135 [THEN]
10136     MOV #19,&$3D2
10137 MOV #%0110_0000,&$3C6
10138     MOV #10,&$3D6
10139     BIS.B #$20,&$204
10140     BIS.B #$20,&$20A
10141     BIS.B #7,&$245
10142     BIC.B #7,&$247
10143     BIS.B #$0F,&$224
10144     BIC.B #$0F,&$226
10145     BIS.B #4,&$20A
10146     BIC.B #4,&$20C
10147 MOV #%01_0001_0100,&$340
10148     MOV ##3276,&$352
10149     MOV #%10000,&$342
10150 COLON
10151     #1000 20_US
10152     %011 TOP_LCD
10153     #205 20_US
10154     %011 TOP_LCD
10155     #5 20_US
10156     %011 TOP_LCD
10157     #2 20_US
10158     %010 TOP_LCD
10159     #2 20_US
10160     %00101000 LCD_WRF
10161     %1000 LCD_WRF
10162     LCD_CLEAR
10163     %0110 LCD_WRF
10164     %1100 LCD_WRF
10165     LCD_CLEAR
10166     ['] LCD_HOME IS CR
10167     ['] LCD_WRC  IS EMIT
10168     CR ." I love you"
10169     ['] CR >BODY IS CR
10170     ['] EMIT >BODY IS EMIT
10171     ." RC5toLCD is running. Type STOP to quit"
10172     ABORT" "
10173 ;
10174
10175 CODE START
10176 CMP #$40AA,&{RC5TOLCD}+8
10177 0= IF
10178     MOV #STOP_R2L,&{RC5TOLCD}+8
10179     MOV &WARM+2,&{RC5TOLCD}+10
10180     MOV #INI_R2L,&WARM+2
10181     MOV &$FFEA,&{RC5TOLCD}+12
10182     MOV #WDT_INT,&$FFEA
10183     MOV &$FFDE,&{RC5TOLCD}+14
10184     MOV #RC5_INT,&$FFDE
10185     MOV #INI_R2L,R0
10186 THEN
10187 MOV @R13+,R0 
10188 ENDCODE 
10189
10190
10191 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
10192
10193 MARKER {RC5TOLCD}
10194 6 ALLOT
10195
10196
10197
10198 [UNDEFINED] CONSTANT [IF]
10199 : CONSTANT 
10200 CREATE
10201 HI2LO
10202 MOV R14,-2(R10)
10203 MOV @R15+,R14
10204 MOV @R1+,R13
10205 MOV @R13+,R0
10206 ENDCODE
10207 [THEN]
10208
10209 [UNDEFINED] STATE [IF]
10210 $1DBE CONSTANT STATE
10211 [THEN]
10212
10213 [UNDEFINED] = [IF]
10214 CODE =
10215 SUB @R15+,R14
10216 0<> IF
10217     AND #0,R14
10218     MOV @R13+,R0
10219 THEN
10220 XOR #-1,R14
10221 MOV @R13+,R0
10222 ENDCODE
10223 [THEN]
10224
10225 [UNDEFINED] IF [IF]
10226 CODE IF
10227 SUB #2,R15
10228 MOV R14,0(R15)
10229 MOV &$1DC6,R14
10230 ADD #4,&$1DC6
10231 MOV #$4034,0(R14)
10232 ADD #2,R14
10233 MOV @R13+,R0
10234 ENDCODE IMMEDIATE
10235
10236 CODE THEN
10237 MOV &$1DC6,0(R14)
10238 MOV @R15+,R14
10239 MOV @R13+,R0
10240 ENDCODE IMMEDIATE
10241 [THEN]
10242
10243 [UNDEFINED] ELSE [IF]
10244 CODE ELSE
10245 ADD #4,&$1DC6
10246 MOV &$1DC6,R10
10247 MOV #$403A,-4(R10)
10248 MOV R10,0(R14)
10249 SUB #2,R10
10250 MOV R10,R14
10251 MOV @R13+,R0
10252 ENDCODE IMMEDIATE
10253 [THEN]
10254
10255 [UNDEFINED] IS [IF]
10256
10257 CODE DEFER!
10258 MOV @R15+,2(R14)
10259 MOV @R15+,R14
10260 MOV @R13+,R0
10261 ENDCODE
10262
10263
10264 : IS
10265 STATE @
10266 IF  POSTPONE ['] POSTPONE DEFER! 
10267 ELSE ' DEFER! 
10268 THEN
10269 ; IMMEDIATE
10270 [THEN]
10271
10272 [UNDEFINED] >BODY [IF]
10273 CODE >BODY
10274 ADD #4,R14
10275 MOV @R13+,R0
10276 ENDCODE
10277 [THEN]
10278
10279
10280 CODE 20_US
10281 BEGIN
10282     BEGIN
10283         BIT #1,&$3C0
10284     0<> UNTIL
10285     BIC #1,&$3C0
10286     SUB #1,R14
10287 U< UNTIL
10288 MOV @R15+,R14
10289 MOV @R13+,R0
10290 ENDCODE
10291
10292 CODE TOP_LCD
10293     BIS.B #4,&$243
10294     BIT.B #1,&$241
10295 0= IF
10296     AND.B #$0F,R14
10297     MOV.B R14,&$222
10298     BIC.B #4,&$243
10299     MOV @R15+,R14
10300     MOV @R13+,R0
10301 THEN
10302     SUB #2,R15
10303     MOV R14,0(R15)
10304     BIC.B #4,&$243
10305     MOV.B &$220,R14
10306     AND.B #$0F,R14
10307     MOV @R13+,R0
10308 ENDCODE
10309
10310 CODE LCD_WRC
10311     BIS.B #2,&$243
10312 BW1 SUB #2,R15
10313     MOV R14,0(R15)
10314     RRUM #4,R14
10315     BIC.B #1,&$243
10316     BIS.B #$0F,&$224
10317 COLON
10318     TOP_LCD 2 20_US
10319     TOP_LCD 2 20_US 
10320 ;
10321
10322 CODE LCD_WRF
10323     BIC.B #2,&$243
10324     GOTO BW1
10325 ENDCODE
10326
10327 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
10328 : LCD_HOME $02 LCD_WRF 100 20_us ;
10329
10330
10331
10332 HDNCODE WDT_INT
10333 BIT.B #$20,&$240
10334 0= IF
10335     CMP #19,&$3D6
10336     U< IF
10337         ADD #1,&$3D6
10338     THEN
10339 ELSE
10340     BIT.B #$40,&$240
10341     0= IF
10342         CMP #3,&$3D6
10343         U>= IF
10344            SUB #1,&$3D6
10345         THEN
10346     THEN
10347 THEN
10348 RETI
10349 ENDCODE
10350
10351 HDNCODE RC5_INT
10352 $1800 @ 16000 = [IF]
10353     MOV #1,&$3A0
10354 [THEN]
10355 $1800 @ 24000 = [IF]
10356     MOV #2,&$3A0
10357 [THEN]
10358 MOV #1778,R9
10359 MOV #14,R10
10360 BEGIN
10361 MOV #%1011100100,&$380
10362     RRUM    #1,R9
10363     MOV     R9,R8
10364     RRUM    #1,R8
10365     ADD     R9,R8
10366     BEGIN   CMP R8,&$390
10367     U>= UNTIL
10368     BIT.B   #4,&$200
10369     ADDC    R11,R11
10370     MOV.B   &$200,&$208
10371     BIC.B   #4,&$20C
10372     SUB     #1,R10
10373 0<> WHILE
10374     ADD R9,R8
10375     BEGIN
10376         MOV &$390,R9
10377         CMP R8,R9
10378         U>= IF
10379         BIC #$30,&$380
10380         GOTO FW1
10381         THEN
10382         BIT.B #4,&$20C
10383     0<> UNTIL
10384 REPEAT
10385 BIC #$30,&$380
10386 RLAM    #1,R11
10387 MOV.B   R11,R9
10388 RRUM    #2,R9
10389 BIT     #$4000,R11
10390 0= IF   BIS #$40,R9
10391 THEN
10392 RRUM    #3,R11
10393 XOR     @R1,R11
10394 BIT     #$400,R11
10395 0= ?GOTO FW2
10396 XOR #$400,0(R1)
10397 SUB #8,R15
10398 MOV R14,6(R15)
10399 MOV &$1DDC,4(R15)
10400 MOV #$10,&$1DDC
10401 MOV R9,0(R15)
10402 MOV #0,R14
10403 LO2HI
10404     LCD_CLEAR
10405     <# # #S #36 HOLD #>
10406     ['] LCD_WRC IS EMIT
10407     TYPE
10408     ['] EMIT >BODY IS EMIT
10409 HI2LO
10410 MOV @R15+,&$1DDC
10411 MOV @R15+,R14
10412 FW1 FW2
10413     MOV @R1+,R2
10414     BIC #%1111_1000,R2
10415     MOV @R1+,R0
10416 ENDCODE
10417
10418
10419 HDNCODE STOP_R2L
10420 CMP #$40AA,&{RC5TOLCD}+8
10421 0<> IF
10422     BIC.B #4,&$20A
10423     BIC.B #4,&$20C
10424     MOV #0,&$3C0
10425     MOV #0,&$340
10426     MOV #0,&$342
10427     MOV #$40AA,&{RC5TOLCD}+8
10428     MOV &{RC5TOLCD}+10,&WARM+2
10429     MOV &{RC5TOLCD}+12,&$FFEA
10430     MOV &{RC5TOLCD}+14,&$FFDE
10431     MOV &{RC5TOLCD}+10,R0
10432 THEN 
10433 MOV @R1+,R0
10434 ENDCODE
10435
10436 CODE STOP
10437 BW1
10438 CALL #STOP_R2L
10439 COLON
10440 ECHO
10441 ." RC5toLCD is removed,"
10442 ."  type START to restart"
10443 ABORT" "
10444 ;
10445
10446 HDNCODE INI_R2L
10447 BIC #1,&$130
10448 MOV &$1808,R14
10449 CMP #$0E,R14
10450 0<> IF
10451     CMP #$0A,R14
10452     U>= ?GOTO BW1
10453 THEN
10454 BIT.B #$20,&$240
10455 0= ?GOTO BW1
10456 MOV #0,&$1808
10457 MOV #%10_1101_0100,&$3C0
10458 $1800 @ 16000 = [IF]
10459     MOV #1,&$3E0
10460 [THEN]
10461 $1800 @ 24000 = [IF]
10462     MOV #2,&$3E0
10463 [THEN]
10464     MOV #19,&$3D2
10465 MOV #%0110_0000,&$3C6
10466     MOV #10,&$3D6
10467     BIS.B #$20,&$204
10468     BIS.B #$20,&$20A
10469     BIS.B #7,&$245
10470     BIC.B #7,&$247
10471     BIS.B #$0F,&$224
10472     BIC.B #$0F,&$226
10473     BIS.B #4,&$20A
10474     BIC.B #4,&$20C
10475 MOV #%01_0001_0100,&$340
10476     MOV ##3276,&$352
10477     MOV #%10000,&$342
10478 COLON
10479     #1000 20_US
10480     %011 TOP_LCD
10481     #205 20_US
10482     %011 TOP_LCD
10483     #5 20_US
10484     %011 TOP_LCD
10485     #2 20_US
10486     %010 TOP_LCD
10487     #2 20_US
10488     %00101000 LCD_WRF
10489     %1000 LCD_WRF
10490     LCD_CLEAR
10491     %0110 LCD_WRF
10492     %1100 LCD_WRF
10493     LCD_CLEAR
10494     ['] LCD_HOME IS CR
10495     ['] LCD_WRC  IS EMIT
10496     CR ." I love you"
10497     ['] CR >BODY IS CR
10498     ['] EMIT >BODY IS EMIT
10499     ." RC5toLCD is running. Type STOP to quit"
10500     ABORT" "
10501 ;
10502
10503 CODE START
10504 CMP #$40AA,&{RC5TOLCD}+8
10505 0= IF
10506     MOV #STOP_R2L,&{RC5TOLCD}+8
10507     MOV &WARM+2,&{RC5TOLCD}+10
10508     MOV #INI_R2L,&WARM+2
10509     MOV &$FFEA,&{RC5TOLCD}+12
10510     MOV #WDT_INT,&$FFEA
10511     MOV &$FFDE,&{RC5TOLCD}+14
10512     MOV #RC5_INT,&$FFDE
10513     MOV #INI_R2L,R0
10514 THEN
10515 MOV @R13+,R0 
10516 ENDCODE 
10517
10518
10519 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
10520
10521 MARKER {RC5TOLCD}
10522 6 ALLOT
10523
10524
10525
10526 [UNDEFINED] CONSTANT [IF]
10527 : CONSTANT 
10528 CREATE
10529 HI2LO
10530 MOV R14,-2(R10)
10531 MOV @R15+,R14
10532 MOV @R1+,R13
10533 MOV @R13+,R0
10534 ENDCODE
10535 [THEN]
10536
10537 [UNDEFINED] STATE [IF]
10538 $1DBE CONSTANT STATE
10539 [THEN]
10540
10541 [UNDEFINED] = [IF]
10542 CODE =
10543 SUB @R15+,R14
10544 0<> IF
10545     AND #0,R14
10546     MOV @R13+,R0
10547 THEN
10548 XOR #-1,R14
10549 MOV @R13+,R0
10550 ENDCODE
10551 [THEN]
10552
10553 [UNDEFINED] IF [IF]
10554 CODE IF
10555 SUB #2,R15
10556 MOV R14,0(R15)
10557 MOV &$1DC6,R14
10558 ADD #4,&$1DC6
10559 MOV #$4034,0(R14)
10560 ADD #2,R14
10561 MOV @R13+,R0
10562 ENDCODE IMMEDIATE
10563
10564 CODE THEN
10565 MOV &$1DC6,0(R14)
10566 MOV @R15+,R14
10567 MOV @R13+,R0
10568 ENDCODE IMMEDIATE
10569 [THEN]
10570
10571 [UNDEFINED] ELSE [IF]
10572 CODE ELSE
10573 ADD #4,&$1DC6
10574 MOV &$1DC6,R10
10575 MOV #$403A,-4(R10)
10576 MOV R10,0(R14)
10577 SUB #2,R10
10578 MOV R10,R14
10579 MOV @R13+,R0
10580 ENDCODE IMMEDIATE
10581 [THEN]
10582
10583 [UNDEFINED] IS [IF]
10584
10585 CODE DEFER!
10586 MOV @R15+,2(R14)
10587 MOV @R15+,R14
10588 MOV @R13+,R0
10589 ENDCODE
10590
10591
10592 : IS
10593 STATE @
10594 IF  POSTPONE ['] POSTPONE DEFER! 
10595 ELSE ' DEFER! 
10596 THEN
10597 ; IMMEDIATE
10598 [THEN]
10599
10600 [UNDEFINED] >BODY [IF]
10601 CODE >BODY
10602 ADD #4,R14
10603 MOV @R13+,R0
10604 ENDCODE
10605 [THEN]
10606
10607
10608 CODE 20_US
10609 BEGIN
10610     BEGIN
10611         BIT #1,&$3C0
10612     0<> UNTIL
10613     BIC #1,&$3C0
10614     SUB #1,R14
10615 U< UNTIL
10616 MOV @R15+,R14
10617 MOV @R13+,R0
10618 ENDCODE
10619
10620 CODE TOP_LCD
10621     BIS.B #4,&$243
10622     BIT.B #1,&$241
10623 0= IF
10624     AND.B #$0F,R14
10625     MOV.B R14,&$222
10626     BIC.B #4,&$243
10627     MOV @R15+,R14
10628     MOV @R13+,R0
10629 THEN
10630     SUB #2,R15
10631     MOV R14,0(R15)
10632     BIC.B #4,&$243
10633     MOV.B &$220,R14
10634     AND.B #$0F,R14
10635     MOV @R13+,R0
10636 ENDCODE
10637
10638 CODE LCD_WRC
10639     BIS.B #2,&$243
10640 BW1 SUB #2,R15
10641     MOV R14,0(R15)
10642     RRUM #4,R14
10643     BIC.B #1,&$243
10644     BIS.B #$0F,&$224
10645 COLON
10646     TOP_LCD 2 20_US
10647     TOP_LCD 2 20_US 
10648 ;
10649
10650 CODE LCD_WRF
10651     BIC.B #2,&$243
10652     GOTO BW1
10653 ENDCODE
10654
10655 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
10656 : LCD_HOME $02 LCD_WRF 100 20_us ;
10657
10658
10659
10660 HDNCODE WDT_INT
10661 BIT.B #$20,&$240
10662 0= IF
10663     CMP #19,&$3D6
10664     U< IF
10665         ADD #1,&$3D6
10666     THEN
10667 ELSE
10668     BIT.B #$40,&$240
10669     0= IF
10670         CMP #3,&$3D6
10671         U>= IF
10672            SUB #1,&$3D6
10673         THEN
10674     THEN
10675 THEN
10676 RETI
10677 ENDCODE
10678
10679 HDNCODE RC5_INT
10680 $1800 @ 16000 = [IF]
10681     MOV #1,&$3A0
10682 [THEN]
10683 $1800 @ 24000 = [IF]
10684     MOV #2,&$3A0
10685 [THEN]
10686 MOV #1778,R9
10687 MOV #14,R10
10688 BEGIN
10689 MOV #%1011100100,&$380
10690     RRUM    #1,R9
10691     MOV     R9,R8
10692     RRUM    #1,R8
10693     ADD     R9,R8
10694     BEGIN   CMP R8,&$390
10695     U>= UNTIL
10696     BIT.B   #4,&$200
10697     ADDC    R11,R11
10698     MOV.B   &$200,&$208
10699     BIC.B   #4,&$20C
10700     SUB     #1,R10
10701 0<> WHILE
10702     ADD R9,R8
10703     BEGIN
10704         MOV &$390,R9
10705         CMP R8,R9
10706         U>= IF
10707         BIC #$30,&$380
10708         GOTO FW1
10709         THEN
10710         BIT.B #4,&$20C
10711     0<> UNTIL
10712 REPEAT
10713 BIC #$30,&$380
10714 RLAM    #1,R11
10715 MOV.B   R11,R9
10716 RRUM    #2,R9
10717 BIT     #$4000,R11
10718 0= IF   BIS #$40,R9
10719 THEN
10720 RRUM    #3,R11
10721 XOR     @R1,R11
10722 BIT     #$400,R11
10723 0= ?GOTO FW2
10724 XOR #$400,0(R1)
10725 SUB #8,R15
10726 MOV R14,6(R15)
10727 MOV &$1DDC,4(R15)
10728 MOV #$10,&$1DDC
10729 MOV R9,0(R15)
10730 MOV #0,R14
10731 LO2HI
10732     LCD_CLEAR
10733     <# # #S #36 HOLD #>
10734     ['] LCD_WRC IS EMIT
10735     TYPE
10736     ['] EMIT >BODY IS EMIT
10737 HI2LO
10738 MOV @R15+,&$1DDC
10739 MOV @R15+,R14
10740 FW1 FW2
10741     MOV @R1+,R2
10742     BIC #%1111_1000,R2
10743     MOV @R1+,R0
10744 ENDCODE
10745
10746
10747 HDNCODE STOP_R2L
10748 CMP #$40AA,&{RC5TOLCD}+8
10749 0<> IF
10750     BIC.B #4,&$20A
10751     BIC.B #4,&$20C
10752     MOV #0,&$3C0
10753     MOV #0,&$340
10754     MOV #0,&$342
10755     MOV #$40AA,&{RC5TOLCD}+8
10756     MOV &{RC5TOLCD}+10,&WARM+2
10757     MOV &{RC5TOLCD}+12,&$FFEA
10758     MOV &{RC5TOLCD}+14,&$FFDE
10759     MOV &{RC5TOLCD}+10,R0
10760 THEN 
10761 MOV @R1+,R0
10762 ENDCODE
10763
10764 CODE STOP
10765 BW1
10766 CALL #STOP_R2L
10767 COLON
10768 ECHO
10769 ." RC5toLCD is removed,"
10770 ."  type START to restart"
10771 ABORT" "
10772 ;
10773
10774 HDNCODE INI_R2L
10775 BIC #1,&$130
10776 MOV &$1808,R14
10777 CMP #$0E,R14
10778 0<> IF
10779     CMP #$0A,R14
10780     U>= ?GOTO BW1
10781 THEN
10782 BIT.B #$20,&$240
10783 0= ?GOTO BW1
10784 MOV #0,&$1808
10785 MOV #%10_1101_0100,&$3C0
10786 $1800 @ 16000 = [IF]
10787     MOV #1,&$3E0
10788 [THEN]
10789 $1800 @ 24000 = [IF]
10790     MOV #2,&$3E0
10791 [THEN]
10792     MOV #19,&$3D2
10793 MOV #%0110_0000,&$3C6
10794     MOV #10,&$3D6
10795     BIS.B #$20,&$204
10796     BIS.B #$20,&$20A
10797     BIS.B #7,&$245
10798     BIC.B #7,&$247
10799     BIS.B #$0F,&$224
10800     BIC.B #$0F,&$226
10801     BIS.B #4,&$20A
10802     BIC.B #4,&$20C
10803 MOV #%01_0001_0100,&$340
10804     MOV ##3276,&$352
10805     MOV #%10000,&$342
10806 COLON
10807     #1000 20_US
10808     %011 TOP_LCD
10809     #205 20_US
10810     %011 TOP_LCD
10811     #5 20_US
10812     %011 TOP_LCD
10813     #2 20_US
10814     %010 TOP_LCD
10815     #2 20_US
10816     %00101000 LCD_WRF
10817     %1000 LCD_WRF
10818     LCD_CLEAR
10819     %0110 LCD_WRF
10820     %1100 LCD_WRF
10821     LCD_CLEAR
10822     ['] LCD_HOME IS CR
10823     ['] LCD_WRC  IS EMIT
10824     CR ." I love you"
10825     ['] CR >BODY IS CR
10826     ['] EMIT >BODY IS EMIT
10827     ." RC5toLCD is running. Type STOP to quit"
10828     ABORT" "
10829 ;
10830
10831 CODE START
10832 CMP #$40AA,&{RC5TOLCD}+8
10833 0= IF
10834     MOV #STOP_R2L,&{RC5TOLCD}+8
10835     MOV &WARM+2,&{RC5TOLCD}+10
10836     MOV #INI_R2L,&WARM+2
10837     MOV &$FFEA,&{RC5TOLCD}+12
10838     MOV #WDT_INT,&$FFEA
10839     MOV &$FFDE,&{RC5TOLCD}+14
10840     MOV #RC5_INT,&$FFDE
10841     MOV #INI_R2L,R0
10842 THEN
10843 MOV @R13+,R0 
10844 ENDCODE 
10845
10846
10847 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
10848
10849 MARKER {RC5TOLCD}
10850 6 ALLOT
10851
10852
10853
10854 [UNDEFINED] CONSTANT [IF]
10855 : CONSTANT 
10856 CREATE
10857 HI2LO
10858 MOV R14,-2(R10)
10859 MOV @R15+,R14
10860 MOV @R1+,R13
10861 MOV @R13+,R0
10862 ENDCODE
10863 [THEN]
10864
10865 [UNDEFINED] STATE [IF]
10866 $1DBE CONSTANT STATE
10867 [THEN]
10868
10869 [UNDEFINED] = [IF]
10870 CODE =
10871 SUB @R15+,R14
10872 0<> IF
10873     AND #0,R14
10874     MOV @R13+,R0
10875 THEN
10876 XOR #-1,R14
10877 MOV @R13+,R0
10878 ENDCODE
10879 [THEN]
10880
10881 [UNDEFINED] IF [IF]
10882 CODE IF
10883 SUB #2,R15
10884 MOV R14,0(R15)
10885 MOV &$1DC6,R14
10886 ADD #4,&$1DC6
10887 MOV #$4034,0(R14)
10888 ADD #2,R14
10889 MOV @R13+,R0
10890 ENDCODE IMMEDIATE
10891
10892 CODE THEN
10893 MOV &$1DC6,0(R14)
10894 MOV @R15+,R14
10895 MOV @R13+,R0
10896 ENDCODE IMMEDIATE
10897 [THEN]
10898
10899 [UNDEFINED] ELSE [IF]
10900 CODE ELSE
10901 ADD #4,&$1DC6
10902 MOV &$1DC6,R10
10903 MOV #$403A,-4(R10)
10904 MOV R10,0(R14)
10905 SUB #2,R10
10906 MOV R10,R14
10907 MOV @R13+,R0
10908 ENDCODE IMMEDIATE
10909 [THEN]
10910
10911 [UNDEFINED] IS [IF]
10912
10913 CODE DEFER!
10914 MOV @R15+,2(R14)
10915 MOV @R15+,R14
10916 MOV @R13+,R0
10917 ENDCODE
10918
10919
10920 : IS
10921 STATE @
10922 IF  POSTPONE ['] POSTPONE DEFER! 
10923 ELSE ' DEFER! 
10924 THEN
10925 ; IMMEDIATE
10926 [THEN]
10927
10928 [UNDEFINED] >BODY [IF]
10929 CODE >BODY
10930 ADD #4,R14
10931 MOV @R13+,R0
10932 ENDCODE
10933 [THEN]
10934
10935
10936 CODE 20_US
10937 BEGIN
10938     BEGIN
10939         BIT #1,&$3C0
10940     0<> UNTIL
10941     BIC #1,&$3C0
10942     SUB #1,R14
10943 U< UNTIL
10944 MOV @R15+,R14
10945 MOV @R13+,R0
10946 ENDCODE
10947
10948 CODE TOP_LCD
10949     BIS.B #4,&$243
10950     BIT.B #1,&$241
10951 0= IF
10952     AND.B #$0F,R14
10953     MOV.B R14,&$222
10954     BIC.B #4,&$243
10955     MOV @R15+,R14
10956     MOV @R13+,R0
10957 THEN
10958     SUB #2,R15
10959     MOV R14,0(R15)
10960     BIC.B #4,&$243
10961     MOV.B &$220,R14
10962     AND.B #$0F,R14
10963     MOV @R13+,R0
10964 ENDCODE
10965
10966 CODE LCD_WRC
10967     BIS.B #2,&$243
10968 BW1 SUB #2,R15
10969     MOV R14,0(R15)
10970     RRUM #4,R14
10971     BIC.B #1,&$243
10972     BIS.B #$0F,&$224
10973 COLON
10974     TOP_LCD 2 20_US
10975     TOP_LCD 2 20_US 
10976 ;
10977
10978 CODE LCD_WRF
10979     BIC.B #2,&$243
10980     GOTO BW1
10981 ENDCODE
10982
10983 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
10984 : LCD_HOME $02 LCD_WRF 100 20_us ;
10985
10986
10987
10988 HDNCODE WDT_INT
10989 BIT.B #$20,&$240
10990 0= IF
10991     CMP #19,&$3D6
10992     U< IF
10993         ADD #1,&$3D6
10994     THEN
10995 ELSE
10996     BIT.B #$40,&$240
10997     0= IF
10998         CMP #3,&$3D6
10999         U>= IF
11000            SUB #1,&$3D6
11001         THEN
11002     THEN
11003 THEN
11004 RETI
11005 ENDCODE
11006
11007 HDNCODE RC5_INT
11008 $1800 @ 16000 = [IF]
11009     MOV #1,&$3A0
11010 [THEN]
11011 $1800 @ 24000 = [IF]
11012     MOV #2,&$3A0
11013 [THEN]
11014 MOV #1778,R9
11015 MOV #14,R10
11016 BEGIN
11017 MOV #%1011100100,&$380
11018     RRUM    #1,R9
11019     MOV     R9,R8
11020     RRUM    #1,R8
11021     ADD     R9,R8
11022     BEGIN   CMP R8,&$390
11023     U>= UNTIL
11024     BIT.B   #4,&$200
11025     ADDC    R11,R11
11026     MOV.B   &$200,&$208
11027     BIC.B   #4,&$20C
11028     SUB     #1,R10
11029 0<> WHILE
11030     ADD R9,R8
11031     BEGIN
11032         MOV &$390,R9
11033         CMP R8,R9
11034         U>= IF
11035         BIC #$30,&$380
11036         GOTO FW1
11037         THEN
11038         BIT.B #4,&$20C
11039     0<> UNTIL
11040 REPEAT
11041 BIC #$30,&$380
11042 RLAM    #1,R11
11043 MOV.B   R11,R9
11044 RRUM    #2,R9
11045 BIT     #$4000,R11
11046 0= IF   BIS #$40,R9
11047 THEN
11048 RRUM    #3,R11
11049 XOR     @R1,R11
11050 BIT     #$400,R11
11051 0= ?GOTO FW2
11052 XOR #$400,0(R1)
11053 SUB #8,R15
11054 MOV R14,6(R15)
11055 MOV &$1DDC,4(R15)
11056 MOV #$10,&$1DDC
11057 MOV R9,0(R15)
11058 MOV #0,R14
11059 LO2HI
11060     LCD_CLEAR
11061     <# # #S #36 HOLD #>
11062     ['] LCD_WRC IS EMIT
11063     TYPE
11064     ['] EMIT >BODY IS EMIT
11065 HI2LO
11066 MOV @R15+,&$1DDC
11067 MOV @R15+,R14
11068 FW1 FW2
11069     MOV @R1+,R2
11070     BIC #%1111_1000,R2
11071     MOV @R1+,R0
11072 ENDCODE
11073
11074
11075 HDNCODE STOP_R2L
11076 CMP #$40AA,&{RC5TOLCD}+8
11077 0<> IF
11078     BIC.B #4,&$20A
11079     BIC.B #4,&$20C
11080     MOV #0,&$3C0
11081     MOV #0,&$340
11082     MOV #0,&$342
11083     MOV #$40AA,&{RC5TOLCD}+8
11084     MOV &{RC5TOLCD}+10,&WARM+2
11085     MOV &{RC5TOLCD}+12,&$FFEA
11086     MOV &{RC5TOLCD}+14,&$FFDE
11087     MOV &{RC5TOLCD}+10,R0
11088 THEN 
11089 MOV @R1+,R0
11090 ENDCODE
11091
11092 CODE STOP
11093 BW1
11094 CALL #STOP_R2L
11095 COLON
11096 ECHO
11097 ." RC5toLCD is removed,"
11098 ."  type START to restart"
11099 ABORT" "
11100 ;
11101
11102 HDNCODE INI_R2L
11103 BIC #1,&$130
11104 MOV &$1808,R14
11105 CMP #$0E,R14
11106 0<> IF
11107     CMP #$0A,R14
11108     U>= ?GOTO BW1
11109 THEN
11110 BIT.B #$20,&$240
11111 0= ?GOTO BW1
11112 MOV #0,&$1808
11113 MOV #%10_1101_0100,&$3C0
11114 $1800 @ 16000 = [IF]
11115     MOV #1,&$3E0
11116 [THEN]
11117 $1800 @ 24000 = [IF]
11118     MOV #2,&$3E0
11119 [THEN]
11120     MOV #19,&$3D2
11121 MOV #%0110_0000,&$3C6
11122     MOV #10,&$3D6
11123     BIS.B #$20,&$204
11124     BIS.B #$20,&$20A
11125     BIS.B #7,&$245
11126     BIC.B #7,&$247
11127     BIS.B #$0F,&$224
11128     BIC.B #$0F,&$226
11129     BIS.B #4,&$20A
11130     BIC.B #4,&$20C
11131 MOV #%01_0001_0100,&$340
11132     MOV ##3276,&$352
11133     MOV #%10000,&$342
11134 COLON
11135     #1000 20_US
11136     %011 TOP_LCD
11137     #205 20_US
11138     %011 TOP_LCD
11139     #5 20_US
11140     %011 TOP_LCD
11141     #2 20_US
11142     %010 TOP_LCD
11143     #2 20_US
11144     %00101000 LCD_WRF
11145     %1000 LCD_WRF
11146     LCD_CLEAR
11147     %0110 LCD_WRF
11148     %1100 LCD_WRF
11149     LCD_CLEAR
11150     ['] LCD_HOME IS CR
11151     ['] LCD_WRC  IS EMIT
11152     CR ." I love you"
11153     ['] CR >BODY IS CR
11154     ['] EMIT >BODY IS EMIT
11155     ." RC5toLCD is running. Type STOP to quit"
11156     ABORT" "
11157 ;
11158
11159 CODE START
11160 CMP #$40AA,&{RC5TOLCD}+8
11161 0= IF
11162     MOV #STOP_R2L,&{RC5TOLCD}+8
11163     MOV &WARM+2,&{RC5TOLCD}+10
11164     MOV #INI_R2L,&WARM+2
11165     MOV &$FFEA,&{RC5TOLCD}+12
11166     MOV #WDT_INT,&$FFEA
11167     MOV &$FFDE,&{RC5TOLCD}+14
11168     MOV #RC5_INT,&$FFDE
11169     MOV #INI_R2L,R0
11170 THEN
11171 MOV @R13+,R0 
11172 ENDCODE 
11173
11174
11175 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
11176
11177 MARKER {RC5TOLCD}
11178 6 ALLOT
11179
11180
11181
11182 [UNDEFINED] CONSTANT [IF]
11183 : CONSTANT 
11184 CREATE
11185 HI2LO
11186 MOV R14,-2(R10)
11187 MOV @R15+,R14
11188 MOV @R1+,R13
11189 MOV @R13+,R0
11190 ENDCODE
11191 [THEN]
11192
11193 [UNDEFINED] STATE [IF]
11194 $1DBE CONSTANT STATE
11195 [THEN]
11196
11197 [UNDEFINED] = [IF]
11198 CODE =
11199 SUB @R15+,R14
11200 0<> IF
11201     AND #0,R14
11202     MOV @R13+,R0
11203 THEN
11204 XOR #-1,R14
11205 MOV @R13+,R0
11206 ENDCODE
11207 [THEN]
11208
11209 [UNDEFINED] IF [IF]
11210 CODE IF
11211 SUB #2,R15
11212 MOV R14,0(R15)
11213 MOV &$1DC6,R14
11214 ADD #4,&$1DC6
11215 MOV #$4034,0(R14)
11216 ADD #2,R14
11217 MOV @R13+,R0
11218 ENDCODE IMMEDIATE
11219
11220 CODE THEN
11221 MOV &$1DC6,0(R14)
11222 MOV @R15+,R14
11223 MOV @R13+,R0
11224 ENDCODE IMMEDIATE
11225 [THEN]
11226
11227 [UNDEFINED] ELSE [IF]
11228 CODE ELSE
11229 ADD #4,&$1DC6
11230 MOV &$1DC6,R10
11231 MOV #$403A,-4(R10)
11232 MOV R10,0(R14)
11233 SUB #2,R10
11234 MOV R10,R14
11235 MOV @R13+,R0
11236 ENDCODE IMMEDIATE
11237 [THEN]
11238
11239 [UNDEFINED] IS [IF]
11240
11241 CODE DEFER!
11242 MOV @R15+,2(R14)
11243 MOV @R15+,R14
11244 MOV @R13+,R0
11245 ENDCODE
11246
11247
11248 : IS
11249 STATE @
11250 IF  POSTPONE ['] POSTPONE DEFER! 
11251 ELSE ' DEFER! 
11252 THEN
11253 ; IMMEDIATE
11254 [THEN]
11255
11256 [UNDEFINED] >BODY [IF]
11257 CODE >BODY
11258 ADD #4,R14
11259 MOV @R13+,R0
11260 ENDCODE
11261 [THEN]
11262
11263
11264 CODE 20_US
11265 BEGIN
11266     BEGIN
11267         BIT #1,&$3C0
11268     0<> UNTIL
11269     BIC #1,&$3C0
11270     SUB #1,R14
11271 U< UNTIL
11272 MOV @R15+,R14
11273 MOV @R13+,R0
11274 ENDCODE
11275
11276 CODE TOP_LCD
11277     BIS.B #4,&$243
11278     BIT.B #1,&$241
11279 0= IF
11280     AND.B #$0F,R14
11281     MOV.B R14,&$222
11282     BIC.B #4,&$243
11283     MOV @R15+,R14
11284     MOV @R13+,R0
11285 THEN
11286     SUB #2,R15
11287     MOV R14,0(R15)
11288     BIC.B #4,&$243
11289     MOV.B &$220,R14
11290     AND.B #$0F,R14
11291     MOV @R13+,R0
11292 ENDCODE
11293
11294 CODE LCD_WRC
11295     BIS.B #2,&$243
11296 BW1 SUB #2,R15
11297     MOV R14,0(R15)
11298     RRUM #4,R14
11299     BIC.B #1,&$243
11300     BIS.B #$0F,&$224
11301 COLON
11302     TOP_LCD 2 20_US
11303     TOP_LCD 2 20_US 
11304 ;
11305
11306 CODE LCD_WRF
11307     BIC.B #2,&$243
11308     GOTO BW1
11309 ENDCODE
11310
11311 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
11312 : LCD_HOME $02 LCD_WRF 100 20_us ;
11313
11314
11315
11316 HDNCODE WDT_INT
11317 BIT.B #$20,&$240
11318 0= IF
11319     CMP #19,&$3D6
11320     U< IF
11321         ADD #1,&$3D6
11322     THEN
11323 ELSE
11324     BIT.B #$40,&$240
11325     0= IF
11326         CMP #3,&$3D6
11327         U>= IF
11328            SUB #1,&$3D6
11329         THEN
11330     THEN
11331 THEN
11332 RETI
11333 ENDCODE
11334
11335 HDNCODE RC5_INT
11336 $1800 @ 16000 = [IF]
11337     MOV #1,&$3A0
11338 [THEN]
11339 $1800 @ 24000 = [IF]
11340     MOV #2,&$3A0
11341 [THEN]
11342 MOV #1778,R9
11343 MOV #14,R10
11344 BEGIN
11345 MOV #%1011100100,&$380
11346     RRUM    #1,R9
11347     MOV     R9,R8
11348     RRUM    #1,R8
11349     ADD     R9,R8
11350     BEGIN   CMP R8,&$390
11351     U>= UNTIL
11352     BIT.B   #4,&$200
11353     ADDC    R11,R11
11354     MOV.B   &$200,&$208
11355     BIC.B   #4,&$20C
11356     SUB     #1,R10
11357 0<> WHILE
11358     ADD R9,R8
11359     BEGIN
11360         MOV &$390,R9
11361         CMP R8,R9
11362         U>= IF
11363         BIC #$30,&$380
11364         GOTO FW1
11365         THEN
11366         BIT.B #4,&$20C
11367     0<> UNTIL
11368 REPEAT
11369 BIC #$30,&$380
11370 RLAM    #1,R11
11371 MOV.B   R11,R9
11372 RRUM    #2,R9
11373 BIT     #$4000,R11
11374 0= IF   BIS #$40,R9
11375 THEN
11376 RRUM    #3,R11
11377 XOR     @R1,R11
11378 BIT     #$400,R11
11379 0= ?GOTO FW2
11380 XOR #$400,0(R1)
11381 SUB #8,R15
11382 MOV R14,6(R15)
11383 MOV &$1DDC,4(R15)
11384 MOV #$10,&$1DDC
11385 MOV R9,0(R15)
11386 MOV #0,R14
11387 LO2HI
11388     LCD_CLEAR
11389     <# # #S #36 HOLD #>
11390     ['] LCD_WRC IS EMIT
11391     TYPE
11392     ['] EMIT >BODY IS EMIT
11393 HI2LO
11394 MOV @R15+,&$1DDC
11395 MOV @R15+,R14
11396 FW1 FW2
11397     MOV @R1+,R2
11398     BIC #%1111_1000,R2
11399     MOV @R1+,R0
11400 ENDCODE
11401
11402
11403 HDNCODE STOP_R2L
11404 CMP #$40AA,&{RC5TOLCD}+8
11405 0<> IF
11406     BIC.B #4,&$20A
11407     BIC.B #4,&$20C
11408     MOV #0,&$3C0
11409     MOV #0,&$340
11410     MOV #0,&$342
11411     MOV #$40AA,&{RC5TOLCD}+8
11412     MOV &{RC5TOLCD}+10,&WARM+2
11413     MOV &{RC5TOLCD}+12,&$FFEA
11414     MOV &{RC5TOLCD}+14,&$FFDE
11415     MOV &{RC5TOLCD}+10,R0
11416 THEN 
11417 MOV @R1+,R0
11418 ENDCODE
11419
11420 CODE STOP
11421 BW1
11422 CALL #STOP_R2L
11423 COLON
11424 ECHO
11425 ." RC5toLCD is removed,"
11426 ."  type START to restart"
11427 ABORT" "
11428 ;
11429
11430 HDNCODE INI_R2L
11431 BIC #1,&$130
11432 MOV &$1808,R14
11433 CMP #$0E,R14
11434 0<> IF
11435     CMP #$0A,R14
11436     U>= ?GOTO BW1
11437 THEN
11438 BIT.B #$20,&$240
11439 0= ?GOTO BW1
11440 MOV #0,&$1808
11441 MOV #%10_1101_0100,&$3C0
11442 $1800 @ 16000 = [IF]
11443     MOV #1,&$3E0
11444 [THEN]
11445 $1800 @ 24000 = [IF]
11446     MOV #2,&$3E0
11447 [THEN]
11448     MOV #19,&$3D2
11449 MOV #%0110_0000,&$3C6
11450     MOV #10,&$3D6
11451     BIS.B #$20,&$204
11452     BIS.B #$20,&$20A
11453     BIS.B #7,&$245
11454     BIC.B #7,&$247
11455     BIS.B #$0F,&$224
11456     BIC.B #$0F,&$226
11457     BIS.B #4,&$20A
11458     BIC.B #4,&$20C
11459 MOV #%01_0001_0100,&$340
11460     MOV ##3276,&$352
11461     MOV #%10000,&$342
11462 COLON
11463     #1000 20_US
11464     %011 TOP_LCD
11465     #205 20_US
11466     %011 TOP_LCD
11467     #5 20_US
11468     %011 TOP_LCD
11469     #2 20_US
11470     %010 TOP_LCD
11471     #2 20_US
11472     %00101000 LCD_WRF
11473     %1000 LCD_WRF
11474     LCD_CLEAR
11475     %0110 LCD_WRF
11476     %1100 LCD_WRF
11477     LCD_CLEAR
11478     ['] LCD_HOME IS CR
11479     ['] LCD_WRC  IS EMIT
11480     CR ." I love you"
11481     ['] CR >BODY IS CR
11482     ['] EMIT >BODY IS EMIT
11483     ." RC5toLCD is running. Type STOP to quit"
11484     ABORT" "
11485 ;
11486
11487 CODE START
11488 CMP #$40AA,&{RC5TOLCD}+8
11489 0= IF
11490     MOV #STOP_R2L,&{RC5TOLCD}+8
11491     MOV &WARM+2,&{RC5TOLCD}+10
11492     MOV #INI_R2L,&WARM+2
11493     MOV &$FFEA,&{RC5TOLCD}+12
11494     MOV #WDT_INT,&$FFEA
11495     MOV &$FFDE,&{RC5TOLCD}+14
11496     MOV #RC5_INT,&$FFDE
11497     MOV #INI_R2L,R0
11498 THEN
11499 MOV @R13+,R0 
11500 ENDCODE 
11501
11502
11503 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
11504
11505 MARKER {RC5TOLCD}
11506 6 ALLOT
11507
11508
11509
11510 [UNDEFINED] CONSTANT [IF]
11511 : CONSTANT 
11512 CREATE
11513 HI2LO
11514 MOV R14,-2(R10)
11515 MOV @R15+,R14
11516 MOV @R1+,R13
11517 MOV @R13+,R0
11518 ENDCODE
11519 [THEN]
11520
11521 [UNDEFINED] STATE [IF]
11522 $1DBE CONSTANT STATE
11523 [THEN]
11524
11525 [UNDEFINED] = [IF]
11526 CODE =
11527 SUB @R15+,R14
11528 0<> IF
11529     AND #0,R14
11530     MOV @R13+,R0
11531 THEN
11532 XOR #-1,R14
11533 MOV @R13+,R0
11534 ENDCODE
11535 [THEN]
11536
11537 [UNDEFINED] IF [IF]
11538 CODE IF
11539 SUB #2,R15
11540 MOV R14,0(R15)
11541 MOV &$1DC6,R14
11542 ADD #4,&$1DC6
11543 MOV #$4034,0(R14)
11544 ADD #2,R14
11545 MOV @R13+,R0
11546 ENDCODE IMMEDIATE
11547
11548 CODE THEN
11549 MOV &$1DC6,0(R14)
11550 MOV @R15+,R14
11551 MOV @R13+,R0
11552 ENDCODE IMMEDIATE
11553 [THEN]
11554
11555 [UNDEFINED] ELSE [IF]
11556 CODE ELSE
11557 ADD #4,&$1DC6
11558 MOV &$1DC6,R10
11559 MOV #$403A,-4(R10)
11560 MOV R10,0(R14)
11561 SUB #2,R10
11562 MOV R10,R14
11563 MOV @R13+,R0
11564 ENDCODE IMMEDIATE
11565 [THEN]
11566
11567 [UNDEFINED] IS [IF]
11568
11569 CODE DEFER!
11570 MOV @R15+,2(R14)
11571 MOV @R15+,R14
11572 MOV @R13+,R0
11573 ENDCODE
11574
11575
11576 : IS
11577 STATE @
11578 IF  POSTPONE ['] POSTPONE DEFER! 
11579 ELSE ' DEFER! 
11580 THEN
11581 ; IMMEDIATE
11582 [THEN]
11583
11584 [UNDEFINED] >BODY [IF]
11585 CODE >BODY
11586 ADD #4,R14
11587 MOV @R13+,R0
11588 ENDCODE
11589 [THEN]
11590
11591
11592 CODE 20_US
11593 BEGIN
11594     BEGIN
11595         BIT #1,&$3C0
11596     0<> UNTIL
11597     BIC #1,&$3C0
11598     SUB #1,R14
11599 U< UNTIL
11600 MOV @R15+,R14
11601 MOV @R13+,R0
11602 ENDCODE
11603
11604 CODE TOP_LCD
11605     BIS.B #4,&$243
11606     BIT.B #1,&$241
11607 0= IF
11608     AND.B #$0F,R14
11609     MOV.B R14,&$222
11610     BIC.B #4,&$243
11611     MOV @R15+,R14
11612     MOV @R13+,R0
11613 THEN
11614     SUB #2,R15
11615     MOV R14,0(R15)
11616     BIC.B #4,&$243
11617     MOV.B &$220,R14
11618     AND.B #$0F,R14
11619     MOV @R13+,R0
11620 ENDCODE
11621
11622 CODE LCD_WRC
11623     BIS.B #2,&$243
11624 BW1 SUB #2,R15
11625     MOV R14,0(R15)
11626     RRUM #4,R14
11627     BIC.B #1,&$243
11628     BIS.B #$0F,&$224
11629 COLON
11630     TOP_LCD 2 20_US
11631     TOP_LCD 2 20_US 
11632 ;
11633
11634 CODE LCD_WRF
11635     BIC.B #2,&$243
11636     GOTO BW1
11637 ENDCODE
11638
11639 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
11640 : LCD_HOME $02 LCD_WRF 100 20_us ;
11641
11642
11643
11644 HDNCODE WDT_INT
11645 BIT.B #$20,&$240
11646 0= IF
11647     CMP #19,&$3D6
11648     U< IF
11649         ADD #1,&$3D6
11650     THEN
11651 ELSE
11652     BIT.B #$40,&$240
11653     0= IF
11654         CMP #3,&$3D6
11655         U>= IF
11656            SUB #1,&$3D6
11657         THEN
11658     THEN
11659 THEN
11660 RETI
11661 ENDCODE
11662
11663 HDNCODE RC5_INT
11664 $1800 @ 16000 = [IF]
11665     MOV #1,&$3A0
11666 [THEN]
11667 $1800 @ 24000 = [IF]
11668     MOV #2,&$3A0
11669 [THEN]
11670 MOV #1778,R9
11671 MOV #14,R10
11672 BEGIN
11673 MOV #%1011100100,&$380
11674     RRUM    #1,R9
11675     MOV     R9,R8
11676     RRUM    #1,R8
11677     ADD     R9,R8
11678     BEGIN   CMP R8,&$390
11679     U>= UNTIL
11680     BIT.B   #4,&$200
11681     ADDC    R11,R11
11682     MOV.B   &$200,&$208
11683     BIC.B   #4,&$20C
11684     SUB     #1,R10
11685 0<> WHILE
11686     ADD R9,R8
11687     BEGIN
11688         MOV &$390,R9
11689         CMP R8,R9
11690         U>= IF
11691         BIC #$30,&$380
11692         GOTO FW1
11693         THEN
11694         BIT.B #4,&$20C
11695     0<> UNTIL
11696 REPEAT
11697 BIC #$30,&$380
11698 RLAM    #1,R11
11699 MOV.B   R11,R9
11700 RRUM    #2,R9
11701 BIT     #$4000,R11
11702 0= IF   BIS #$40,R9
11703 THEN
11704 RRUM    #3,R11
11705 XOR     @R1,R11
11706 BIT     #$400,R11
11707 0= ?GOTO FW2
11708 XOR #$400,0(R1)
11709 SUB #8,R15
11710 MOV R14,6(R15)
11711 MOV &$1DDC,4(R15)
11712 MOV #$10,&$1DDC
11713 MOV R9,0(R15)
11714 MOV #0,R14
11715 LO2HI
11716     LCD_CLEAR
11717     <# # #S #36 HOLD #>
11718     ['] LCD_WRC IS EMIT
11719     TYPE
11720     ['] EMIT >BODY IS EMIT
11721 HI2LO
11722 MOV @R15+,&$1DDC
11723 MOV @R15+,R14
11724 FW1 FW2
11725     MOV @R1+,R2
11726     BIC #%1111_1000,R2
11727     MOV @R1+,R0
11728 ENDCODE
11729
11730
11731 HDNCODE STOP_R2L
11732 CMP #$40AA,&{RC5TOLCD}+8
11733 0<> IF
11734     BIC.B #4,&$20A
11735     BIC.B #4,&$20C
11736     MOV #0,&$3C0
11737     MOV #0,&$340
11738     MOV #0,&$342
11739     MOV #$40AA,&{RC5TOLCD}+8
11740     MOV &{RC5TOLCD}+10,&WARM+2
11741     MOV &{RC5TOLCD}+12,&$FFEA
11742     MOV &{RC5TOLCD}+14,&$FFDE
11743     MOV &{RC5TOLCD}+10,R0
11744 THEN 
11745 MOV @R1+,R0
11746 ENDCODE
11747
11748 CODE STOP
11749 BW1
11750 CALL #STOP_R2L
11751 COLON
11752 ECHO
11753 ." RC5toLCD is removed,"
11754 ."  type START to restart"
11755 ABORT" "
11756 ;
11757
11758 HDNCODE INI_R2L
11759 BIC #1,&$130
11760 MOV &$1808,R14
11761 CMP #$0E,R14
11762 0<> IF
11763     CMP #$0A,R14
11764     U>= ?GOTO BW1
11765 THEN
11766 BIT.B #$20,&$240
11767 0= ?GOTO BW1
11768 MOV #0,&$1808
11769 MOV #%10_1101_0100,&$3C0
11770 $1800 @ 16000 = [IF]
11771     MOV #1,&$3E0
11772 [THEN]
11773 $1800 @ 24000 = [IF]
11774     MOV #2,&$3E0
11775 [THEN]
11776     MOV #19,&$3D2
11777 MOV #%0110_0000,&$3C6
11778     MOV #10,&$3D6
11779     BIS.B #$20,&$204
11780     BIS.B #$20,&$20A
11781     BIS.B #7,&$245
11782     BIC.B #7,&$247
11783     BIS.B #$0F,&$224
11784     BIC.B #$0F,&$226
11785     BIS.B #4,&$20A
11786     BIC.B #4,&$20C
11787 MOV #%01_0001_0100,&$340
11788     MOV ##3276,&$352
11789     MOV #%10000,&$342
11790 COLON
11791     #1000 20_US
11792     %011 TOP_LCD
11793     #205 20_US
11794     %011 TOP_LCD
11795     #5 20_US
11796     %011 TOP_LCD
11797     #2 20_US
11798     %010 TOP_LCD
11799     #2 20_US
11800     %00101000 LCD_WRF
11801     %1000 LCD_WRF
11802     LCD_CLEAR
11803     %0110 LCD_WRF
11804     %1100 LCD_WRF
11805     LCD_CLEAR
11806     ['] LCD_HOME IS CR
11807     ['] LCD_WRC  IS EMIT
11808     CR ." I love you"
11809     ['] CR >BODY IS CR
11810     ['] EMIT >BODY IS EMIT
11811     ." RC5toLCD is running. Type STOP to quit"
11812     ABORT" "
11813 ;
11814
11815 CODE START
11816 CMP #$40AA,&{RC5TOLCD}+8
11817 0= IF
11818     MOV #STOP_R2L,&{RC5TOLCD}+8
11819     MOV &WARM+2,&{RC5TOLCD}+10
11820     MOV #INI_R2L,&WARM+2
11821     MOV &$FFEA,&{RC5TOLCD}+12
11822     MOV #WDT_INT,&$FFEA
11823     MOV &$FFDE,&{RC5TOLCD}+14
11824     MOV #RC5_INT,&$FFDE
11825     MOV #INI_R2L,R0
11826 THEN
11827 MOV @R13+,R0 
11828 ENDCODE 
11829
11830
11831 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
11832
11833 MARKER {RC5TOLCD}
11834 6 ALLOT
11835
11836
11837
11838 [UNDEFINED] CONSTANT [IF]
11839 : CONSTANT 
11840 CREATE
11841 HI2LO
11842 MOV R14,-2(R10)
11843 MOV @R15+,R14
11844 MOV @R1+,R13
11845 MOV @R13+,R0
11846 ENDCODE
11847 [THEN]
11848
11849 [UNDEFINED] STATE [IF]
11850 $1DBE CONSTANT STATE
11851 [THEN]
11852
11853 [UNDEFINED] = [IF]
11854 CODE =
11855 SUB @R15+,R14
11856 0<> IF
11857     AND #0,R14
11858     MOV @R13+,R0
11859 THEN
11860 XOR #-1,R14
11861 MOV @R13+,R0
11862 ENDCODE
11863 [THEN]
11864
11865 [UNDEFINED] IF [IF]
11866 CODE IF
11867 SUB #2,R15
11868 MOV R14,0(R15)
11869 MOV &$1DC6,R14
11870 ADD #4,&$1DC6
11871 MOV #$4034,0(R14)
11872 ADD #2,R14
11873 MOV @R13+,R0
11874 ENDCODE IMMEDIATE
11875
11876 CODE THEN
11877 MOV &$1DC6,0(R14)
11878 MOV @R15+,R14
11879 MOV @R13+,R0
11880 ENDCODE IMMEDIATE
11881 [THEN]
11882
11883 [UNDEFINED] ELSE [IF]
11884 CODE ELSE
11885 ADD #4,&$1DC6
11886 MOV &$1DC6,R10
11887 MOV #$403A,-4(R10)
11888 MOV R10,0(R14)
11889 SUB #2,R10
11890 MOV R10,R14
11891 MOV @R13+,R0
11892 ENDCODE IMMEDIATE
11893 [THEN]
11894
11895 [UNDEFINED] IS [IF]
11896
11897 CODE DEFER!
11898 MOV @R15+,2(R14)
11899 MOV @R15+,R14
11900 MOV @R13+,R0
11901 ENDCODE
11902
11903
11904 : IS
11905 STATE @
11906 IF  POSTPONE ['] POSTPONE DEFER! 
11907 ELSE ' DEFER! 
11908 THEN
11909 ; IMMEDIATE
11910 [THEN]
11911
11912 [UNDEFINED] >BODY [IF]
11913 CODE >BODY
11914 ADD #4,R14
11915 MOV @R13+,R0
11916 ENDCODE
11917 [THEN]
11918
11919
11920 CODE 20_US
11921 BEGIN
11922     BEGIN
11923         BIT #1,&$3C0
11924     0<> UNTIL
11925     BIC #1,&$3C0
11926     SUB #1,R14
11927 U< UNTIL
11928 MOV @R15+,R14
11929 MOV @R13+,R0
11930 ENDCODE
11931
11932 CODE TOP_LCD
11933     BIS.B #4,&$243
11934     BIT.B #1,&$241
11935 0= IF
11936     AND.B #$0F,R14
11937     MOV.B R14,&$222
11938     BIC.B #4,&$243
11939     MOV @R15+,R14
11940     MOV @R13+,R0
11941 THEN
11942     SUB #2,R15
11943     MOV R14,0(R15)
11944     BIC.B #4,&$243
11945     MOV.B &$220,R14
11946     AND.B #$0F,R14
11947     MOV @R13+,R0
11948 ENDCODE
11949
11950 CODE LCD_WRC
11951     BIS.B #2,&$243
11952 BW1 SUB #2,R15
11953     MOV R14,0(R15)
11954     RRUM #4,R14
11955     BIC.B #1,&$243
11956     BIS.B #$0F,&$224
11957 COLON
11958     TOP_LCD 2 20_US
11959     TOP_LCD 2 20_US 
11960 ;
11961
11962 CODE LCD_WRF
11963     BIC.B #2,&$243
11964     GOTO BW1
11965 ENDCODE
11966
11967 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
11968 : LCD_HOME $02 LCD_WRF 100 20_us ;
11969
11970
11971
11972 HDNCODE WDT_INT
11973 BIT.B #$20,&$240
11974 0= IF
11975     CMP #19,&$3D6
11976     U< IF
11977         ADD #1,&$3D6
11978     THEN
11979 ELSE
11980     BIT.B #$40,&$240
11981     0= IF
11982         CMP #3,&$3D6
11983         U>= IF
11984            SUB #1,&$3D6
11985         THEN
11986     THEN
11987 THEN
11988 RETI
11989 ENDCODE
11990
11991 HDNCODE RC5_INT
11992 $1800 @ 16000 = [IF]
11993     MOV #1,&$3A0
11994 [THEN]
11995 $1800 @ 24000 = [IF]
11996     MOV #2,&$3A0
11997 [THEN]
11998 MOV #1778,R9
11999 MOV #14,R10
12000 BEGIN
12001 MOV #%1011100100,&$380
12002     RRUM    #1,R9
12003     MOV     R9,R8
12004     RRUM    #1,R8
12005     ADD     R9,R8
12006     BEGIN   CMP R8,&$390
12007     U>= UNTIL
12008     BIT.B   #4,&$200
12009     ADDC    R11,R11
12010     MOV.B   &$200,&$208
12011     BIC.B   #4,&$20C
12012     SUB     #1,R10
12013 0<> WHILE
12014     ADD R9,R8
12015     BEGIN
12016         MOV &$390,R9
12017         CMP R8,R9
12018         U>= IF
12019         BIC #$30,&$380
12020         GOTO FW1
12021         THEN
12022         BIT.B #4,&$20C
12023     0<> UNTIL
12024 REPEAT
12025 BIC #$30,&$380
12026 RLAM    #1,R11
12027 MOV.B   R11,R9
12028 RRUM    #2,R9
12029 BIT     #$4000,R11
12030 0= IF   BIS #$40,R9
12031 THEN
12032 RRUM    #3,R11
12033 XOR     @R1,R11
12034 BIT     #$400,R11
12035 0= ?GOTO FW2
12036 XOR #$400,0(R1)
12037 SUB #8,R15
12038 MOV R14,6(R15)
12039 MOV &$1DDC,4(R15)
12040 MOV #$10,&$1DDC
12041 MOV R9,0(R15)
12042 MOV #0,R14
12043 LO2HI
12044     LCD_CLEAR
12045     <# # #S #36 HOLD #>
12046     ['] LCD_WRC IS EMIT
12047     TYPE
12048     ['] EMIT >BODY IS EMIT
12049 HI2LO
12050 MOV @R15+,&$1DDC
12051 MOV @R15+,R14
12052 FW1 FW2
12053     MOV @R1+,R2
12054     BIC #%1111_1000,R2
12055     MOV @R1+,R0
12056 ENDCODE
12057
12058
12059 HDNCODE STOP_R2L
12060 CMP #$40AA,&{RC5TOLCD}+8
12061 0<> IF
12062     BIC.B #4,&$20A
12063     BIC.B #4,&$20C
12064     MOV #0,&$3C0
12065     MOV #0,&$340
12066     MOV #0,&$342
12067     MOV #$40AA,&{RC5TOLCD}+8
12068     MOV &{RC5TOLCD}+10,&WARM+2
12069     MOV &{RC5TOLCD}+12,&$FFEA
12070     MOV &{RC5TOLCD}+14,&$FFDE
12071     MOV &{RC5TOLCD}+10,R0
12072 THEN 
12073 MOV @R1+,R0
12074 ENDCODE
12075
12076 CODE STOP
12077 BW1
12078 CALL #STOP_R2L
12079 COLON
12080 ECHO
12081 ." RC5toLCD is removed,"
12082 ."  type START to restart"
12083 ABORT" "
12084 ;
12085
12086 HDNCODE INI_R2L
12087 BIC #1,&$130
12088 MOV &$1808,R14
12089 CMP #$0E,R14
12090 0<> IF
12091     CMP #$0A,R14
12092     U>= ?GOTO BW1
12093 THEN
12094 BIT.B #$20,&$240
12095 0= ?GOTO BW1
12096 MOV #0,&$1808
12097 MOV #%10_1101_0100,&$3C0
12098 $1800 @ 16000 = [IF]
12099     MOV #1,&$3E0
12100 [THEN]
12101 $1800 @ 24000 = [IF]
12102     MOV #2,&$3E0
12103 [THEN]
12104     MOV #19,&$3D2
12105 MOV #%0110_0000,&$3C6
12106     MOV #10,&$3D6
12107     BIS.B #$20,&$204
12108     BIS.B #$20,&$20A
12109     BIS.B #7,&$245
12110     BIC.B #7,&$247
12111     BIS.B #$0F,&$224
12112     BIC.B #$0F,&$226
12113     BIS.B #4,&$20A
12114     BIC.B #4,&$20C
12115 MOV #%01_0001_0100,&$340
12116     MOV ##3276,&$352
12117     MOV #%10000,&$342
12118 COLON
12119     #1000 20_US
12120     %011 TOP_LCD
12121     #205 20_US
12122     %011 TOP_LCD
12123     #5 20_US
12124     %011 TOP_LCD
12125     #2 20_US
12126     %010 TOP_LCD
12127     #2 20_US
12128     %00101000 LCD_WRF
12129     %1000 LCD_WRF
12130     LCD_CLEAR
12131     %0110 LCD_WRF
12132     %1100 LCD_WRF
12133     LCD_CLEAR
12134     ['] LCD_HOME IS CR
12135     ['] LCD_WRC  IS EMIT
12136     CR ." I love you"
12137     ['] CR >BODY IS CR
12138     ['] EMIT >BODY IS EMIT
12139     ." RC5toLCD is running. Type STOP to quit"
12140     ABORT" "
12141 ;
12142
12143 CODE START
12144 CMP #$40AA,&{RC5TOLCD}+8
12145 0= IF
12146     MOV #STOP_R2L,&{RC5TOLCD}+8
12147     MOV &WARM+2,&{RC5TOLCD}+10
12148     MOV #INI_R2L,&WARM+2
12149     MOV &$FFEA,&{RC5TOLCD}+12
12150     MOV #WDT_INT,&$FFEA
12151     MOV &$FFDE,&{RC5TOLCD}+14
12152     MOV #RC5_INT,&$FFDE
12153     MOV #INI_R2L,R0
12154 THEN
12155 MOV @R13+,R0 
12156 ENDCODE 
12157
12158
12159 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
12160
12161 MARKER {RC5TOLCD}
12162 6 ALLOT
12163
12164
12165
12166 [UNDEFINED] CONSTANT [IF]
12167 : CONSTANT 
12168 CREATE
12169 HI2LO
12170 MOV R14,-2(R10)
12171 MOV @R15+,R14
12172 MOV @R1+,R13
12173 MOV @R13+,R0
12174 ENDCODE
12175 [THEN]
12176
12177 [UNDEFINED] STATE [IF]
12178 $1DBE CONSTANT STATE
12179 [THEN]
12180
12181 [UNDEFINED] = [IF]
12182 CODE =
12183 SUB @R15+,R14
12184 0<> IF
12185     AND #0,R14
12186     MOV @R13+,R0
12187 THEN
12188 XOR #-1,R14
12189 MOV @R13+,R0
12190 ENDCODE
12191 [THEN]
12192
12193 [UNDEFINED] IF [IF]
12194 CODE IF
12195 SUB #2,R15
12196 MOV R14,0(R15)
12197 MOV &$1DC6,R14
12198 ADD #4,&$1DC6
12199 MOV #$4034,0(R14)
12200 ADD #2,R14
12201 MOV @R13+,R0
12202 ENDCODE IMMEDIATE
12203
12204 CODE THEN
12205 MOV &$1DC6,0(R14)
12206 MOV @R15+,R14
12207 MOV @R13+,R0
12208 ENDCODE IMMEDIATE
12209 [THEN]
12210
12211 [UNDEFINED] ELSE [IF]
12212 CODE ELSE
12213 ADD #4,&$1DC6
12214 MOV &$1DC6,R10
12215 MOV #$403A,-4(R10)
12216 MOV R10,0(R14)
12217 SUB #2,R10
12218 MOV R10,R14
12219 MOV @R13+,R0
12220 ENDCODE IMMEDIATE
12221 [THEN]
12222
12223 [UNDEFINED] IS [IF]
12224
12225 CODE DEFER!
12226 MOV @R15+,2(R14)
12227 MOV @R15+,R14
12228 MOV @R13+,R0
12229 ENDCODE
12230
12231
12232 : IS
12233 STATE @
12234 IF  POSTPONE ['] POSTPONE DEFER! 
12235 ELSE ' DEFER! 
12236 THEN
12237 ; IMMEDIATE
12238 [THEN]
12239
12240 [UNDEFINED] >BODY [IF]
12241 CODE >BODY
12242 ADD #4,R14
12243 MOV @R13+,R0
12244 ENDCODE
12245 [THEN]
12246
12247
12248 CODE 20_US
12249 BEGIN
12250     BEGIN
12251         BIT #1,&$3C0
12252     0<> UNTIL
12253     BIC #1,&$3C0
12254     SUB #1,R14
12255 U< UNTIL
12256 MOV @R15+,R14
12257 MOV @R13+,R0
12258 ENDCODE
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 CODE LCD_WRC
12279     BIS.B #2,&$243
12280 BW1 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 CODE LCD_WRF
12291     BIC.B #2,&$243
12292     GOTO BW1
12293 ENDCODE
12294
12295 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
12296 : LCD_HOME $02 LCD_WRF 100 20_us ;
12297
12298
12299
12300 HDNCODE WDT_INT
12301 BIT.B #$20,&$240
12302 0= IF
12303     CMP #19,&$3D6
12304     U< IF
12305         ADD #1,&$3D6
12306     THEN
12307 ELSE
12308     BIT.B #$40,&$240
12309     0= IF
12310         CMP #3,&$3D6
12311         U>= IF
12312            SUB #1,&$3D6
12313         THEN
12314     THEN
12315 THEN
12316 RETI
12317 ENDCODE
12318
12319 HDNCODE RC5_INT
12320 $1800 @ 16000 = [IF]
12321     MOV #1,&$3A0
12322 [THEN]
12323 $1800 @ 24000 = [IF]
12324     MOV #2,&$3A0
12325 [THEN]
12326 MOV #1778,R9
12327 MOV #14,R10
12328 BEGIN
12329 MOV #%1011100100,&$380
12330     RRUM    #1,R9
12331     MOV     R9,R8
12332     RRUM    #1,R8
12333     ADD     R9,R8
12334     BEGIN   CMP R8,&$390
12335     U>= UNTIL
12336     BIT.B   #4,&$200
12337     ADDC    R11,R11
12338     MOV.B   &$200,&$208
12339     BIC.B   #4,&$20C
12340     SUB     #1,R10
12341 0<> WHILE
12342     ADD R9,R8
12343     BEGIN
12344         MOV &$390,R9
12345         CMP R8,R9
12346         U>= IF
12347         BIC #$30,&$380
12348         GOTO FW1
12349         THEN
12350         BIT.B #4,&$20C
12351     0<> UNTIL
12352 REPEAT
12353 BIC #$30,&$380
12354 RLAM    #1,R11
12355 MOV.B   R11,R9
12356 RRUM    #2,R9
12357 BIT     #$4000,R11
12358 0= IF   BIS #$40,R9
12359 THEN
12360 RRUM    #3,R11
12361 XOR     @R1,R11
12362 BIT     #$400,R11
12363 0= ?GOTO FW2
12364 XOR #$400,0(R1)
12365 SUB #8,R15
12366 MOV R14,6(R15)
12367 MOV &$1DDC,4(R15)
12368 MOV #$10,&$1DDC
12369 MOV R9,0(R15)
12370 MOV #0,R14
12371 LO2HI
12372     LCD_CLEAR
12373     <# # #S #36 HOLD #>
12374     ['] LCD_WRC IS EMIT
12375     TYPE
12376     ['] EMIT >BODY IS EMIT
12377 HI2LO
12378 MOV @R15+,&$1DDC
12379 MOV @R15+,R14
12380 FW1 FW2
12381     MOV @R1+,R2
12382     BIC #%1111_1000,R2
12383     MOV @R1+,R0
12384 ENDCODE
12385
12386
12387 HDNCODE STOP_R2L
12388 CMP #$40AA,&{RC5TOLCD}+8
12389 0<> IF
12390     BIC.B #4,&$20A
12391     BIC.B #4,&$20C
12392     MOV #0,&$3C0
12393     MOV #0,&$340
12394     MOV #0,&$342
12395     MOV #$40AA,&{RC5TOLCD}+8
12396     MOV &{RC5TOLCD}+10,&WARM+2
12397     MOV &{RC5TOLCD}+12,&$FFEA
12398     MOV &{RC5TOLCD}+14,&$FFDE
12399     MOV &{RC5TOLCD}+10,R0
12400 THEN 
12401 MOV @R1+,R0
12402 ENDCODE
12403
12404 CODE STOP
12405 BW1
12406 CALL #STOP_R2L
12407 COLON
12408 ECHO
12409 ." RC5toLCD is removed,"
12410 ."  type START to restart"
12411 ABORT" "
12412 ;
12413
12414 HDNCODE INI_R2L
12415 BIC #1,&$130
12416 MOV &$1808,R14
12417 CMP #$0E,R14
12418 0<> IF
12419     CMP #$0A,R14
12420     U>= ?GOTO BW1
12421 THEN
12422 BIT.B #$20,&$240
12423 0= ?GOTO BW1
12424 MOV #0,&$1808
12425 MOV #%10_1101_0100,&$3C0
12426 $1800 @ 16000 = [IF]
12427     MOV #1,&$3E0
12428 [THEN]
12429 $1800 @ 24000 = [IF]
12430     MOV #2,&$3E0
12431 [THEN]
12432     MOV #19,&$3D2
12433 MOV #%0110_0000,&$3C6
12434     MOV #10,&$3D6
12435     BIS.B #$20,&$204
12436     BIS.B #$20,&$20A
12437     BIS.B #7,&$245
12438     BIC.B #7,&$247
12439     BIS.B #$0F,&$224
12440     BIC.B #$0F,&$226
12441     BIS.B #4,&$20A
12442     BIC.B #4,&$20C
12443 MOV #%01_0001_0100,&$340
12444     MOV ##3276,&$352
12445     MOV #%10000,&$342
12446 COLON
12447     #1000 20_US
12448     %011 TOP_LCD
12449     #205 20_US
12450     %011 TOP_LCD
12451     #5 20_US
12452     %011 TOP_LCD
12453     #2 20_US
12454     %010 TOP_LCD
12455     #2 20_US
12456     %00101000 LCD_WRF
12457     %1000 LCD_WRF
12458     LCD_CLEAR
12459     %0110 LCD_WRF
12460     %1100 LCD_WRF
12461     LCD_CLEAR
12462     ['] LCD_HOME IS CR
12463     ['] LCD_WRC  IS EMIT
12464     CR ." I love you"
12465     ['] CR >BODY IS CR
12466     ['] EMIT >BODY IS EMIT
12467     ." RC5toLCD is running. Type STOP to quit"
12468     ABORT" "
12469 ;
12470
12471 CODE START
12472 CMP #$40AA,&{RC5TOLCD}+8
12473 0= IF
12474     MOV #STOP_R2L,&{RC5TOLCD}+8
12475     MOV &WARM+2,&{RC5TOLCD}+10
12476     MOV #INI_R2L,&WARM+2
12477     MOV &$FFEA,&{RC5TOLCD}+12
12478     MOV #WDT_INT,&$FFEA
12479     MOV &$FFDE,&{RC5TOLCD}+14
12480     MOV #RC5_INT,&$FFDE
12481     MOV #INI_R2L,R0
12482 THEN
12483 MOV @R13+,R0 
12484 ENDCODE 
12485
12486
12487 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
12488
12489 MARKER {RC5TOLCD}
12490 6 ALLOT
12491
12492
12493
12494 [UNDEFINED] CONSTANT [IF]
12495 : CONSTANT 
12496 CREATE
12497 HI2LO
12498 MOV R14,-2(R10)
12499 MOV @R15+,R14
12500 MOV @R1+,R13
12501 MOV @R13+,R0
12502 ENDCODE
12503 [THEN]
12504
12505 [UNDEFINED] STATE [IF]
12506 $1DBE CONSTANT STATE
12507 [THEN]
12508
12509 [UNDEFINED] = [IF]
12510 CODE =
12511 SUB @R15+,R14
12512 0<> IF
12513     AND #0,R14
12514     MOV @R13+,R0
12515 THEN
12516 XOR #-1,R14
12517 MOV @R13+,R0
12518 ENDCODE
12519 [THEN]
12520
12521 [UNDEFINED] IF [IF]
12522 CODE IF
12523 SUB #2,R15
12524 MOV R14,0(R15)
12525 MOV &$1DC6,R14
12526 ADD #4,&$1DC6
12527 MOV #$4034,0(R14)
12528 ADD #2,R14
12529 MOV @R13+,R0
12530 ENDCODE IMMEDIATE
12531
12532 CODE THEN
12533 MOV &$1DC6,0(R14)
12534 MOV @R15+,R14
12535 MOV @R13+,R0
12536 ENDCODE IMMEDIATE
12537 [THEN]
12538
12539 [UNDEFINED] ELSE [IF]
12540 CODE ELSE
12541 ADD #4,&$1DC6
12542 MOV &$1DC6,R10
12543 MOV #$403A,-4(R10)
12544 MOV R10,0(R14)
12545 SUB #2,R10
12546 MOV R10,R14
12547 MOV @R13+,R0
12548 ENDCODE IMMEDIATE
12549 [THEN]
12550
12551 [UNDEFINED] IS [IF]
12552
12553 CODE DEFER!
12554 MOV @R15+,2(R14)
12555 MOV @R15+,R14
12556 MOV @R13+,R0
12557 ENDCODE
12558
12559
12560 : IS
12561 STATE @
12562 IF  POSTPONE ['] POSTPONE DEFER! 
12563 ELSE ' DEFER! 
12564 THEN
12565 ; IMMEDIATE
12566 [THEN]
12567
12568 [UNDEFINED] >BODY [IF]
12569 CODE >BODY
12570 ADD #4,R14
12571 MOV @R13+,R0
12572 ENDCODE
12573 [THEN]
12574
12575
12576 CODE 20_US
12577 BEGIN
12578     BEGIN
12579         BIT #1,&$3C0
12580     0<> UNTIL
12581     BIC #1,&$3C0
12582     SUB #1,R14
12583 U< UNTIL
12584 MOV @R15+,R14
12585 MOV @R13+,R0
12586 ENDCODE
12587
12588 CODE TOP_LCD
12589     BIS.B #4,&$243
12590     BIT.B #1,&$241
12591 0= IF
12592     AND.B #$0F,R14
12593     MOV.B R14,&$222
12594     BIC.B #4,&$243
12595     MOV @R15+,R14
12596     MOV @R13+,R0
12597 THEN
12598     SUB #2,R15
12599     MOV R14,0(R15)
12600     BIC.B #4,&$243
12601     MOV.B &$220,R14
12602     AND.B #$0F,R14
12603     MOV @R13+,R0
12604 ENDCODE
12605
12606 CODE LCD_WRC
12607     BIS.B #2,&$243
12608 BW1 SUB #2,R15
12609     MOV R14,0(R15)
12610     RRUM #4,R14
12611     BIC.B #1,&$243
12612     BIS.B #$0F,&$224
12613 COLON
12614     TOP_LCD 2 20_US
12615     TOP_LCD 2 20_US 
12616 ;
12617
12618 CODE LCD_WRF
12619     BIC.B #2,&$243
12620     GOTO BW1
12621 ENDCODE
12622
12623 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
12624 : LCD_HOME $02 LCD_WRF 100 20_us ;
12625
12626
12627
12628 HDNCODE WDT_INT
12629 BIT.B #$20,&$240
12630 0= IF
12631     CMP #19,&$3D6
12632     U< IF
12633         ADD #1,&$3D6
12634     THEN
12635 ELSE
12636     BIT.B #$40,&$240
12637     0= IF
12638         CMP #3,&$3D6
12639         U>= IF
12640            SUB #1,&$3D6
12641         THEN
12642     THEN
12643 THEN
12644 RETI
12645 ENDCODE
12646
12647 HDNCODE RC5_INT
12648 $1800 @ 16000 = [IF]
12649     MOV #1,&$3A0
12650 [THEN]
12651 $1800 @ 24000 = [IF]
12652     MOV #2,&$3A0
12653 [THEN]
12654 MOV #1778,R9
12655 MOV #14,R10
12656 BEGIN
12657 MOV #%1011100100,&$380
12658     RRUM    #1,R9
12659     MOV     R9,R8
12660     RRUM    #1,R8
12661     ADD     R9,R8
12662     BEGIN   CMP R8,&$390
12663     U>= UNTIL
12664     BIT.B   #4,&$200
12665     ADDC    R11,R11
12666     MOV.B   &$200,&$208
12667     BIC.B   #4,&$20C
12668     SUB     #1,R10
12669 0<> WHILE
12670     ADD R9,R8
12671     BEGIN
12672         MOV &$390,R9
12673         CMP R8,R9
12674         U>= IF
12675         BIC #$30,&$380
12676         GOTO FW1
12677         THEN
12678         BIT.B #4,&$20C
12679     0<> UNTIL
12680 REPEAT
12681 BIC #$30,&$380
12682 RLAM    #1,R11
12683 MOV.B   R11,R9
12684 RRUM    #2,R9
12685 BIT     #$4000,R11
12686 0= IF   BIS #$40,R9
12687 THEN
12688 RRUM    #3,R11
12689 XOR     @R1,R11
12690 BIT     #$400,R11
12691 0= ?GOTO FW2
12692 XOR #$400,0(R1)
12693 SUB #8,R15
12694 MOV R14,6(R15)
12695 MOV &$1DDC,4(R15)
12696 MOV #$10,&$1DDC
12697 MOV R9,0(R15)
12698 MOV #0,R14
12699 LO2HI
12700     LCD_CLEAR
12701     <# # #S #36 HOLD #>
12702     ['] LCD_WRC IS EMIT
12703     TYPE
12704     ['] EMIT >BODY IS EMIT
12705 HI2LO
12706 MOV @R15+,&$1DDC
12707 MOV @R15+,R14
12708 FW1 FW2
12709     MOV @R1+,R2
12710     BIC #%1111_1000,R2
12711     MOV @R1+,R0
12712 ENDCODE
12713
12714
12715 HDNCODE STOP_R2L
12716 CMP #$40AA,&{RC5TOLCD}+8
12717 0<> IF
12718     BIC.B #4,&$20A
12719     BIC.B #4,&$20C
12720     MOV #0,&$3C0
12721     MOV #0,&$340
12722     MOV #0,&$342
12723     MOV #$40AA,&{RC5TOLCD}+8
12724     MOV &{RC5TOLCD}+10,&WARM+2
12725     MOV &{RC5TOLCD}+12,&$FFEA
12726     MOV &{RC5TOLCD}+14,&$FFDE
12727     MOV &{RC5TOLCD}+10,R0
12728 THEN 
12729 MOV @R1+,R0
12730 ENDCODE
12731
12732 CODE STOP
12733 BW1
12734 CALL #STOP_R2L
12735 COLON
12736 ECHO
12737 ." RC5toLCD is removed,"
12738 ."  type START to restart"
12739 ABORT" "
12740 ;
12741
12742 HDNCODE INI_R2L
12743 BIC #1,&$130
12744 MOV &$1808,R14
12745 CMP #$0E,R14
12746 0<> IF
12747     CMP #$0A,R14
12748     U>= ?GOTO BW1
12749 THEN
12750 BIT.B #$20,&$240
12751 0= ?GOTO BW1
12752 MOV #0,&$1808
12753 MOV #%10_1101_0100,&$3C0
12754 $1800 @ 16000 = [IF]
12755     MOV #1,&$3E0
12756 [THEN]
12757 $1800 @ 24000 = [IF]
12758     MOV #2,&$3E0
12759 [THEN]
12760     MOV #19,&$3D2
12761 MOV #%0110_0000,&$3C6
12762     MOV #10,&$3D6
12763     BIS.B #$20,&$204
12764     BIS.B #$20,&$20A
12765     BIS.B #7,&$245
12766     BIC.B #7,&$247
12767     BIS.B #$0F,&$224
12768     BIC.B #$0F,&$226
12769     BIS.B #4,&$20A
12770     BIC.B #4,&$20C
12771 MOV #%01_0001_0100,&$340
12772     MOV ##3276,&$352
12773     MOV #%10000,&$342
12774 COLON
12775     #1000 20_US
12776     %011 TOP_LCD
12777     #205 20_US
12778     %011 TOP_LCD
12779     #5 20_US
12780     %011 TOP_LCD
12781     #2 20_US
12782     %010 TOP_LCD
12783     #2 20_US
12784     %00101000 LCD_WRF
12785     %1000 LCD_WRF
12786     LCD_CLEAR
12787     %0110 LCD_WRF
12788     %1100 LCD_WRF
12789     LCD_CLEAR
12790     ['] LCD_HOME IS CR
12791     ['] LCD_WRC  IS EMIT
12792     CR ." I love you"
12793     ['] CR >BODY IS CR
12794     ['] EMIT >BODY IS EMIT
12795     ." RC5toLCD is running. Type STOP to quit"
12796     ABORT" "
12797 ;
12798
12799 CODE START
12800 CMP #$40AA,&{RC5TOLCD}+8
12801 0= IF
12802     MOV #STOP_R2L,&{RC5TOLCD}+8
12803     MOV &WARM+2,&{RC5TOLCD}+10
12804     MOV #INI_R2L,&WARM+2
12805     MOV &$FFEA,&{RC5TOLCD}+12
12806     MOV #WDT_INT,&$FFEA
12807     MOV &$FFDE,&{RC5TOLCD}+14
12808     MOV #RC5_INT,&$FFDE
12809     MOV #INI_R2L,R0
12810 THEN
12811 MOV @R13+,R0 
12812 ENDCODE 
12813
12814
12815 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
12816
12817 MARKER {RC5TOLCD}
12818 6 ALLOT
12819
12820
12821
12822 [UNDEFINED] CONSTANT [IF]
12823 : CONSTANT 
12824 CREATE
12825 HI2LO
12826 MOV R14,-2(R10)
12827 MOV @R15+,R14
12828 MOV @R1+,R13
12829 MOV @R13+,R0
12830 ENDCODE
12831 [THEN]
12832
12833 [UNDEFINED] STATE [IF]
12834 $1DBE CONSTANT STATE
12835 [THEN]
12836
12837 [UNDEFINED] = [IF]
12838 CODE =
12839 SUB @R15+,R14
12840 0<> IF
12841     AND #0,R14
12842     MOV @R13+,R0
12843 THEN
12844 XOR #-1,R14
12845 MOV @R13+,R0
12846 ENDCODE
12847 [THEN]
12848
12849 [UNDEFINED] IF [IF]
12850 CODE IF
12851 SUB #2,R15
12852 MOV R14,0(R15)
12853 MOV &$1DC6,R14
12854 ADD #4,&$1DC6
12855 MOV #$4034,0(R14)
12856 ADD #2,R14
12857 MOV @R13+,R0
12858 ENDCODE IMMEDIATE
12859
12860 CODE THEN
12861 MOV &$1DC6,0(R14)
12862 MOV @R15+,R14
12863 MOV @R13+,R0
12864 ENDCODE IMMEDIATE
12865 [THEN]
12866
12867 [UNDEFINED] ELSE [IF]
12868 CODE ELSE
12869 ADD #4,&$1DC6
12870 MOV &$1DC6,R10
12871 MOV #$403A,-4(R10)
12872 MOV R10,0(R14)
12873 SUB #2,R10
12874 MOV R10,R14
12875 MOV @R13+,R0
12876 ENDCODE IMMEDIATE
12877 [THEN]
12878
12879 [UNDEFINED] IS [IF]
12880
12881 CODE DEFER!
12882 MOV @R15+,2(R14)
12883 MOV @R15+,R14
12884 MOV @R13+,R0
12885 ENDCODE
12886
12887
12888 : IS
12889 STATE @
12890 IF  POSTPONE ['] POSTPONE DEFER! 
12891 ELSE ' DEFER! 
12892 THEN
12893 ; IMMEDIATE
12894 [THEN]
12895
12896 [UNDEFINED] >BODY [IF]
12897 CODE >BODY
12898 ADD #4,R14
12899 MOV @R13+,R0
12900 ENDCODE
12901 [THEN]
12902
12903
12904 CODE 20_US
12905 BEGIN
12906     BEGIN
12907         BIT #1,&$3C0
12908     0<> UNTIL
12909     BIC #1,&$3C0
12910     SUB #1,R14
12911 U< UNTIL
12912 MOV @R15+,R14
12913 MOV @R13+,R0
12914 ENDCODE
12915
12916 CODE TOP_LCD
12917     BIS.B #4,&$243
12918     BIT.B #1,&$241
12919 0= IF
12920     AND.B #$0F,R14
12921     MOV.B R14,&$222
12922     BIC.B #4,&$243
12923     MOV @R15+,R14
12924     MOV @R13+,R0
12925 THEN
12926     SUB #2,R15
12927     MOV R14,0(R15)
12928     BIC.B #4,&$243
12929     MOV.B &$220,R14
12930     AND.B #$0F,R14
12931     MOV @R13+,R0
12932 ENDCODE
12933
12934 CODE LCD_WRC
12935     BIS.B #2,&$243
12936 BW1 SUB #2,R15
12937     MOV R14,0(R15)
12938     RRUM #4,R14
12939     BIC.B #1,&$243
12940     BIS.B #$0F,&$224
12941 COLON
12942     TOP_LCD 2 20_US
12943     TOP_LCD 2 20_US 
12944 ;
12945
12946 CODE LCD_WRF
12947     BIC.B #2,&$243
12948     GOTO BW1
12949 ENDCODE
12950
12951 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
12952 : LCD_HOME $02 LCD_WRF 100 20_us ;
12953
12954
12955
12956 HDNCODE WDT_INT
12957 BIT.B #$20,&$240
12958 0= IF
12959     CMP #19,&$3D6
12960     U< IF
12961         ADD #1,&$3D6
12962     THEN
12963 ELSE
12964     BIT.B #$40,&$240
12965     0= IF
12966         CMP #3,&$3D6
12967         U>= IF
12968            SUB #1,&$3D6
12969         THEN
12970     THEN
12971 THEN
12972 RETI
12973 ENDCODE
12974
12975 HDNCODE RC5_INT
12976 $1800 @ 16000 = [IF]
12977     MOV #1,&$3A0
12978 [THEN]
12979 $1800 @ 24000 = [IF]
12980     MOV #2,&$3A0
12981 [THEN]
12982 MOV #1778,R9
12983 MOV #14,R10
12984 BEGIN
12985 MOV #%1011100100,&$380
12986     RRUM    #1,R9
12987     MOV     R9,R8
12988     RRUM    #1,R8
12989     ADD     R9,R8
12990     BEGIN   CMP R8,&$390
12991     U>= UNTIL
12992     BIT.B   #4,&$200
12993     ADDC    R11,R11
12994     MOV.B   &$200,&$208
12995     BIC.B   #4,&$20C
12996     SUB     #1,R10
12997 0<> WHILE
12998     ADD R9,R8
12999     BEGIN
13000         MOV &$390,R9
13001         CMP R8,R9
13002         U>= IF
13003         BIC #$30,&$380
13004         GOTO FW1
13005         THEN
13006         BIT.B #4,&$20C
13007     0<> UNTIL
13008 REPEAT
13009 BIC #$30,&$380
13010 RLAM    #1,R11
13011 MOV.B   R11,R9
13012 RRUM    #2,R9
13013 BIT     #$4000,R11
13014 0= IF   BIS #$40,R9
13015 THEN
13016 RRUM    #3,R11
13017 XOR     @R1,R11
13018 BIT     #$400,R11
13019 0= ?GOTO FW2
13020 XOR #$400,0(R1)
13021 SUB #8,R15
13022 MOV R14,6(R15)
13023 MOV &$1DDC,4(R15)
13024 MOV #$10,&$1DDC
13025 MOV R9,0(R15)
13026 MOV #0,R14
13027 LO2HI
13028     LCD_CLEAR
13029     <# # #S #36 HOLD #>
13030     ['] LCD_WRC IS EMIT
13031     TYPE
13032     ['] EMIT >BODY IS EMIT
13033 HI2LO
13034 MOV @R15+,&$1DDC
13035 MOV @R15+,R14
13036 FW1 FW2
13037     MOV @R1+,R2
13038     BIC #%1111_1000,R2
13039     MOV @R1+,R0
13040 ENDCODE
13041
13042
13043 HDNCODE STOP_R2L
13044 CMP #$40AA,&{RC5TOLCD}+8
13045 0<> IF
13046     BIC.B #4,&$20A
13047     BIC.B #4,&$20C
13048     MOV #0,&$3C0
13049     MOV #0,&$340
13050     MOV #0,&$342
13051     MOV #$40AA,&{RC5TOLCD}+8
13052     MOV &{RC5TOLCD}+10,&WARM+2
13053     MOV &{RC5TOLCD}+12,&$FFEA
13054     MOV &{RC5TOLCD}+14,&$FFDE
13055     MOV &{RC5TOLCD}+10,R0
13056 THEN 
13057 MOV @R1+,R0
13058 ENDCODE
13059
13060 CODE STOP
13061 BW1
13062 CALL #STOP_R2L
13063 COLON
13064 ECHO
13065 ." RC5toLCD is removed,"
13066 ."  type START to restart"
13067 ABORT" "
13068 ;
13069
13070 HDNCODE INI_R2L
13071 BIC #1,&$130
13072 MOV &$1808,R14
13073 CMP #$0E,R14
13074 0<> IF
13075     CMP #$0A,R14
13076     U>= ?GOTO BW1
13077 THEN
13078 BIT.B #$20,&$240
13079 0= ?GOTO BW1
13080 MOV #0,&$1808
13081 MOV #%10_1101_0100,&$3C0
13082 $1800 @ 16000 = [IF]
13083     MOV #1,&$3E0
13084 [THEN]
13085 $1800 @ 24000 = [IF]
13086     MOV #2,&$3E0
13087 [THEN]
13088     MOV #19,&$3D2
13089 MOV #%0110_0000,&$3C6
13090     MOV #10,&$3D6
13091     BIS.B #$20,&$204
13092     BIS.B #$20,&$20A
13093     BIS.B #7,&$245
13094     BIC.B #7,&$247
13095     BIS.B #$0F,&$224
13096     BIC.B #$0F,&$226
13097     BIS.B #4,&$20A
13098     BIC.B #4,&$20C
13099 MOV #%01_0001_0100,&$340
13100     MOV ##3276,&$352
13101     MOV #%10000,&$342
13102 COLON
13103     #1000 20_US
13104     %011 TOP_LCD
13105     #205 20_US
13106     %011 TOP_LCD
13107     #5 20_US
13108     %011 TOP_LCD
13109     #2 20_US
13110     %010 TOP_LCD
13111     #2 20_US
13112     %00101000 LCD_WRF
13113     %1000 LCD_WRF
13114     LCD_CLEAR
13115     %0110 LCD_WRF
13116     %1100 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     ABORT" "
13125 ;
13126
13127 CODE START
13128 CMP #$40AA,&{RC5TOLCD}+8
13129 0= IF
13130     MOV #STOP_R2L,&{RC5TOLCD}+8
13131     MOV &WARM+2,&{RC5TOLCD}+10
13132     MOV #INI_R2L,&WARM+2
13133     MOV &$FFEA,&{RC5TOLCD}+12
13134     MOV #WDT_INT,&$FFEA
13135     MOV &$FFDE,&{RC5TOLCD}+14
13136     MOV #RC5_INT,&$FFDE
13137     MOV #INI_R2L,R0
13138 THEN
13139 MOV @R13+,R0 
13140 ENDCODE 
13141
13142
13143 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
13144
13145 MARKER {RC5TOLCD}
13146 6 ALLOT
13147
13148
13149
13150 [UNDEFINED] CONSTANT [IF]
13151 : CONSTANT 
13152 CREATE
13153 HI2LO
13154 MOV R14,-2(R10)
13155 MOV @R15+,R14
13156 MOV @R1+,R13
13157 MOV @R13+,R0
13158 ENDCODE
13159 [THEN]
13160
13161 [UNDEFINED] STATE [IF]
13162 $1DBE CONSTANT STATE
13163 [THEN]
13164
13165 [UNDEFINED] = [IF]
13166 CODE =
13167 SUB @R15+,R14
13168 0<> IF
13169     AND #0,R14
13170     MOV @R13+,R0
13171 THEN
13172 XOR #-1,R14
13173 MOV @R13+,R0
13174 ENDCODE
13175 [THEN]
13176
13177 [UNDEFINED] IF [IF]
13178 CODE IF
13179 SUB #2,R15
13180 MOV R14,0(R15)
13181 MOV &$1DC6,R14
13182 ADD #4,&$1DC6
13183 MOV #$4034,0(R14)
13184 ADD #2,R14
13185 MOV @R13+,R0
13186 ENDCODE IMMEDIATE
13187
13188 CODE THEN
13189 MOV &$1DC6,0(R14)
13190 MOV @R15+,R14
13191 MOV @R13+,R0
13192 ENDCODE IMMEDIATE
13193 [THEN]
13194
13195 [UNDEFINED] ELSE [IF]
13196 CODE ELSE
13197 ADD #4,&$1DC6
13198 MOV &$1DC6,R10
13199 MOV #$403A,-4(R10)
13200 MOV R10,0(R14)
13201 SUB #2,R10
13202 MOV R10,R14
13203 MOV @R13+,R0
13204 ENDCODE IMMEDIATE
13205 [THEN]
13206
13207 [UNDEFINED] IS [IF]
13208
13209 CODE DEFER!
13210 MOV @R15+,2(R14)
13211 MOV @R15+,R14
13212 MOV @R13+,R0
13213 ENDCODE
13214
13215
13216 : IS
13217 STATE @
13218 IF  POSTPONE ['] POSTPONE DEFER! 
13219 ELSE ' DEFER! 
13220 THEN
13221 ; IMMEDIATE
13222 [THEN]
13223
13224 [UNDEFINED] >BODY [IF]
13225 CODE >BODY
13226 ADD #4,R14
13227 MOV @R13+,R0
13228 ENDCODE
13229 [THEN]
13230
13231
13232 CODE 20_US
13233 BEGIN
13234     BEGIN
13235         BIT #1,&$3C0
13236     0<> UNTIL
13237     BIC #1,&$3C0
13238     SUB #1,R14
13239 U< UNTIL
13240 MOV @R15+,R14
13241 MOV @R13+,R0
13242 ENDCODE
13243
13244 CODE TOP_LCD
13245     BIS.B #4,&$243
13246     BIT.B #1,&$241
13247 0= IF
13248     AND.B #$0F,R14
13249     MOV.B R14,&$222
13250     BIC.B #4,&$243
13251     MOV @R15+,R14
13252     MOV @R13+,R0
13253 THEN
13254     SUB #2,R15
13255     MOV R14,0(R15)
13256     BIC.B #4,&$243
13257     MOV.B &$220,R14
13258     AND.B #$0F,R14
13259     MOV @R13+,R0
13260 ENDCODE
13261
13262 CODE LCD_WRC
13263     BIS.B #2,&$243
13264 BW1 SUB #2,R15
13265     MOV R14,0(R15)
13266     RRUM #4,R14
13267     BIC.B #1,&$243
13268     BIS.B #$0F,&$224
13269 COLON
13270     TOP_LCD 2 20_US
13271     TOP_LCD 2 20_US 
13272 ;
13273
13274 CODE LCD_WRF
13275     BIC.B #2,&$243
13276     GOTO BW1
13277 ENDCODE
13278
13279 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
13280 : LCD_HOME $02 LCD_WRF 100 20_us ;
13281
13282
13283
13284 HDNCODE WDT_INT
13285 BIT.B #$20,&$240
13286 0= IF
13287     CMP #19,&$3D6
13288     U< IF
13289         ADD #1,&$3D6
13290     THEN
13291 ELSE
13292     BIT.B #$40,&$240
13293     0= IF
13294         CMP #3,&$3D6
13295         U>= IF
13296            SUB #1,&$3D6
13297         THEN
13298     THEN
13299 THEN
13300 RETI
13301 ENDCODE
13302
13303 HDNCODE RC5_INT
13304 $1800 @ 16000 = [IF]
13305     MOV #1,&$3A0
13306 [THEN]
13307 $1800 @ 24000 = [IF]
13308     MOV #2,&$3A0
13309 [THEN]
13310 MOV #1778,R9
13311 MOV #14,R10
13312 BEGIN
13313 MOV #%1011100100,&$380
13314     RRUM    #1,R9
13315     MOV     R9,R8
13316     RRUM    #1,R8
13317     ADD     R9,R8
13318     BEGIN   CMP R8,&$390
13319     U>= UNTIL
13320     BIT.B   #4,&$200
13321     ADDC    R11,R11
13322     MOV.B   &$200,&$208
13323     BIC.B   #4,&$20C
13324     SUB     #1,R10
13325 0<> WHILE
13326     ADD R9,R8
13327     BEGIN
13328         MOV &$390,R9
13329         CMP R8,R9
13330         U>= IF
13331         BIC #$30,&$380
13332         GOTO FW1
13333         THEN
13334         BIT.B #4,&$20C
13335     0<> UNTIL
13336 REPEAT
13337 BIC #$30,&$380
13338 RLAM    #1,R11
13339 MOV.B   R11,R9
13340 RRUM    #2,R9
13341 BIT     #$4000,R11
13342 0= IF   BIS #$40,R9
13343 THEN
13344 RRUM    #3,R11
13345 XOR     @R1,R11
13346 BIT     #$400,R11
13347 0= ?GOTO FW2
13348 XOR #$400,0(R1)
13349 SUB #8,R15
13350 MOV R14,6(R15)
13351 MOV &$1DDC,4(R15)
13352 MOV #$10,&$1DDC
13353 MOV R9,0(R15)
13354 MOV #0,R14
13355 LO2HI
13356     LCD_CLEAR
13357     <# # #S #36 HOLD #>
13358     ['] LCD_WRC IS EMIT
13359     TYPE
13360     ['] EMIT >BODY IS EMIT
13361 HI2LO
13362 MOV @R15+,&$1DDC
13363 MOV @R15+,R14
13364 FW1 FW2
13365     MOV @R1+,R2
13366     BIC #%1111_1000,R2
13367     MOV @R1+,R0
13368 ENDCODE
13369
13370
13371 HDNCODE STOP_R2L
13372 CMP #$40AA,&{RC5TOLCD}+8
13373 0<> IF
13374     BIC.B #4,&$20A
13375     BIC.B #4,&$20C
13376     MOV #0,&$3C0
13377     MOV #0,&$340
13378     MOV #0,&$342
13379     MOV #$40AA,&{RC5TOLCD}+8
13380     MOV &{RC5TOLCD}+10,&WARM+2
13381     MOV &{RC5TOLCD}+12,&$FFEA
13382     MOV &{RC5TOLCD}+14,&$FFDE
13383     MOV &{RC5TOLCD}+10,R0
13384 THEN 
13385 MOV @R1+,R0
13386 ENDCODE
13387
13388 CODE STOP
13389 BW1
13390 CALL #STOP_R2L
13391 COLON
13392 ECHO
13393 ." RC5toLCD is removed,"
13394 ."  type START to restart"
13395 ABORT" "
13396 ;
13397
13398 HDNCODE INI_R2L
13399 BIC #1,&$130
13400 MOV &$1808,R14
13401 CMP #$0E,R14
13402 0<> IF
13403     CMP #$0A,R14
13404     U>= ?GOTO BW1
13405 THEN
13406 BIT.B #$20,&$240
13407 0= ?GOTO BW1
13408 MOV #0,&$1808
13409 MOV #%10_1101_0100,&$3C0
13410 $1800 @ 16000 = [IF]
13411     MOV #1,&$3E0
13412 [THEN]
13413 $1800 @ 24000 = [IF]
13414     MOV #2,&$3E0
13415 [THEN]
13416     MOV #19,&$3D2
13417 MOV #%0110_0000,&$3C6
13418     MOV #10,&$3D6
13419     BIS.B #$20,&$204
13420     BIS.B #$20,&$20A
13421     BIS.B #7,&$245
13422     BIC.B #7,&$247
13423     BIS.B #$0F,&$224
13424     BIC.B #$0F,&$226
13425     BIS.B #4,&$20A
13426     BIC.B #4,&$20C
13427 MOV #%01_0001_0100,&$340
13428     MOV ##3276,&$352
13429     MOV #%10000,&$342
13430 COLON
13431     #1000 20_US
13432     %011 TOP_LCD
13433     #205 20_US
13434     %011 TOP_LCD
13435     #5 20_US
13436     %011 TOP_LCD
13437     #2 20_US
13438     %010 TOP_LCD
13439     #2 20_US
13440     %00101000 LCD_WRF
13441     %1000 LCD_WRF
13442     LCD_CLEAR
13443     %0110 LCD_WRF
13444     %1100 LCD_WRF
13445     LCD_CLEAR
13446     ['] LCD_HOME IS CR
13447     ['] LCD_WRC  IS EMIT
13448     CR ." I love you"
13449     ['] CR >BODY IS CR
13450     ['] EMIT >BODY IS EMIT
13451     ." RC5toLCD is running. Type STOP to quit"
13452     ABORT" "
13453 ;
13454
13455 CODE START
13456 CMP #$40AA,&{RC5TOLCD}+8
13457 0= IF
13458     MOV #STOP_R2L,&{RC5TOLCD}+8
13459     MOV &WARM+2,&{RC5TOLCD}+10
13460     MOV #INI_R2L,&WARM+2
13461     MOV &$FFEA,&{RC5TOLCD}+12
13462     MOV #WDT_INT,&$FFEA
13463     MOV &$FFDE,&{RC5TOLCD}+14
13464     MOV #RC5_INT,&$FFDE
13465     MOV #INI_R2L,R0
13466 THEN
13467 MOV @R13+,R0 
13468 ENDCODE 
13469
13470
13471 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
13472
13473 MARKER {RC5TOLCD}
13474 6 ALLOT
13475
13476
13477
13478 [UNDEFINED] CONSTANT [IF]
13479 : CONSTANT 
13480 CREATE
13481 HI2LO
13482 MOV R14,-2(R10)
13483 MOV @R15+,R14
13484 MOV @R1+,R13
13485 MOV @R13+,R0
13486 ENDCODE
13487 [THEN]
13488
13489 [UNDEFINED] STATE [IF]
13490 $1DBE CONSTANT STATE
13491 [THEN]
13492
13493 [UNDEFINED] = [IF]
13494 CODE =
13495 SUB @R15+,R14
13496 0<> IF
13497     AND #0,R14
13498     MOV @R13+,R0
13499 THEN
13500 XOR #-1,R14
13501 MOV @R13+,R0
13502 ENDCODE
13503 [THEN]
13504
13505 [UNDEFINED] IF [IF]
13506 CODE IF
13507 SUB #2,R15
13508 MOV R14,0(R15)
13509 MOV &$1DC6,R14
13510 ADD #4,&$1DC6
13511 MOV #$4034,0(R14)
13512 ADD #2,R14
13513 MOV @R13+,R0
13514 ENDCODE IMMEDIATE
13515
13516 CODE THEN
13517 MOV &$1DC6,0(R14)
13518 MOV @R15+,R14
13519 MOV @R13+,R0
13520 ENDCODE IMMEDIATE
13521 [THEN]
13522
13523 [UNDEFINED] ELSE [IF]
13524 CODE ELSE
13525 ADD #4,&$1DC6
13526 MOV &$1DC6,R10
13527 MOV #$403A,-4(R10)
13528 MOV R10,0(R14)
13529 SUB #2,R10
13530 MOV R10,R14
13531 MOV @R13+,R0
13532 ENDCODE IMMEDIATE
13533 [THEN]
13534
13535 [UNDEFINED] IS [IF]
13536
13537 CODE DEFER!
13538 MOV @R15+,2(R14)
13539 MOV @R15+,R14
13540 MOV @R13+,R0
13541 ENDCODE
13542
13543
13544 : IS
13545 STATE @
13546 IF  POSTPONE ['] POSTPONE DEFER! 
13547 ELSE ' DEFER! 
13548 THEN
13549 ; IMMEDIATE
13550 [THEN]
13551
13552 [UNDEFINED] >BODY [IF]
13553 CODE >BODY
13554 ADD #4,R14
13555 MOV @R13+,R0
13556 ENDCODE
13557 [THEN]
13558
13559
13560 CODE 20_US
13561 BEGIN
13562     BEGIN
13563         BIT #1,&$3C0
13564     0<> UNTIL
13565     BIC #1,&$3C0
13566     SUB #1,R14
13567 U< UNTIL
13568 MOV @R15+,R14
13569 MOV @R13+,R0
13570 ENDCODE
13571
13572 CODE TOP_LCD
13573     BIS.B #4,&$243
13574     BIT.B #1,&$241
13575 0= IF
13576     AND.B #$0F,R14
13577     MOV.B R14,&$222
13578     BIC.B #4,&$243
13579     MOV @R15+,R14
13580     MOV @R13+,R0
13581 THEN
13582     SUB #2,R15
13583     MOV R14,0(R15)
13584     BIC.B #4,&$243
13585     MOV.B &$220,R14
13586     AND.B #$0F,R14
13587     MOV @R13+,R0
13588 ENDCODE
13589
13590 CODE LCD_WRC
13591     BIS.B #2,&$243
13592 BW1 SUB #2,R15
13593     MOV R14,0(R15)
13594     RRUM #4,R14
13595     BIC.B #1,&$243
13596     BIS.B #$0F,&$224
13597 COLON
13598     TOP_LCD 2 20_US
13599     TOP_LCD 2 20_US 
13600 ;
13601
13602 CODE LCD_WRF
13603     BIC.B #2,&$243
13604     GOTO BW1
13605 ENDCODE
13606
13607 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
13608 : LCD_HOME $02 LCD_WRF 100 20_us ;
13609
13610
13611
13612 HDNCODE WDT_INT
13613 BIT.B #$20,&$240
13614 0= IF
13615     CMP #19,&$3D6
13616     U< IF
13617         ADD #1,&$3D6
13618     THEN
13619 ELSE
13620     BIT.B #$40,&$240
13621     0= IF
13622         CMP #3,&$3D6
13623         U>= IF
13624            SUB #1,&$3D6
13625         THEN
13626     THEN
13627 THEN
13628 RETI
13629 ENDCODE
13630
13631 HDNCODE RC5_INT
13632 $1800 @ 16000 = [IF]
13633     MOV #1,&$3A0
13634 [THEN]
13635 $1800 @ 24000 = [IF]
13636     MOV #2,&$3A0
13637 [THEN]
13638 MOV #1778,R9
13639 MOV #14,R10
13640 BEGIN
13641 MOV #%1011100100,&$380
13642     RRUM    #1,R9
13643     MOV     R9,R8
13644     RRUM    #1,R8
13645     ADD     R9,R8
13646     BEGIN   CMP R8,&$390
13647     U>= UNTIL
13648     BIT.B   #4,&$200
13649     ADDC    R11,R11
13650     MOV.B   &$200,&$208
13651     BIC.B   #4,&$20C
13652     SUB     #1,R10
13653 0<> WHILE
13654     ADD R9,R8
13655     BEGIN
13656         MOV &$390,R9
13657         CMP R8,R9
13658         U>= IF
13659         BIC #$30,&$380
13660         GOTO FW1
13661         THEN
13662         BIT.B #4,&$20C
13663     0<> UNTIL
13664 REPEAT
13665 BIC #$30,&$380
13666 RLAM    #1,R11
13667 MOV.B   R11,R9
13668 RRUM    #2,R9
13669 BIT     #$4000,R11
13670 0= IF   BIS #$40,R9
13671 THEN
13672 RRUM    #3,R11
13673 XOR     @R1,R11
13674 BIT     #$400,R11
13675 0= ?GOTO FW2
13676 XOR #$400,0(R1)
13677 SUB #8,R15
13678 MOV R14,6(R15)
13679 MOV &$1DDC,4(R15)
13680 MOV #$10,&$1DDC
13681 MOV R9,0(R15)
13682 MOV #0,R14
13683 LO2HI
13684     LCD_CLEAR
13685     <# # #S #36 HOLD #>
13686     ['] LCD_WRC IS EMIT
13687     TYPE
13688     ['] EMIT >BODY IS EMIT
13689 HI2LO
13690 MOV @R15+,&$1DDC
13691 MOV @R15+,R14
13692 FW1 FW2
13693     MOV @R1+,R2
13694     BIC #%1111_1000,R2
13695     MOV @R1+,R0
13696 ENDCODE
13697
13698
13699 HDNCODE STOP_R2L
13700 CMP #$40AA,&{RC5TOLCD}+8
13701 0<> IF
13702     BIC.B #4,&$20A
13703     BIC.B #4,&$20C
13704     MOV #0,&$3C0
13705     MOV #0,&$340
13706     MOV #0,&$342
13707     MOV #$40AA,&{RC5TOLCD}+8
13708     MOV &{RC5TOLCD}+10,&WARM+2
13709     MOV &{RC5TOLCD}+12,&$FFEA
13710     MOV &{RC5TOLCD}+14,&$FFDE
13711     MOV &{RC5TOLCD}+10,R0
13712 THEN 
13713 MOV @R1+,R0
13714 ENDCODE
13715
13716 CODE STOP
13717 BW1
13718 CALL #STOP_R2L
13719 COLON
13720 ECHO
13721 ." RC5toLCD is removed,"
13722 ."  type START to restart"
13723 ABORT" "
13724 ;
13725
13726 HDNCODE INI_R2L
13727 BIC #1,&$130
13728 MOV &$1808,R14
13729 CMP #$0E,R14
13730 0<> IF
13731     CMP #$0A,R14
13732     U>= ?GOTO BW1
13733 THEN
13734 BIT.B #$20,&$240
13735 0= ?GOTO BW1
13736 MOV #0,&$1808
13737 MOV #%10_1101_0100,&$3C0
13738 $1800 @ 16000 = [IF]
13739     MOV #1,&$3E0
13740 [THEN]
13741 $1800 @ 24000 = [IF]
13742     MOV #2,&$3E0
13743 [THEN]
13744     MOV #19,&$3D2
13745 MOV #%0110_0000,&$3C6
13746     MOV #10,&$3D6
13747     BIS.B #$20,&$204
13748     BIS.B #$20,&$20A
13749     BIS.B #7,&$245
13750     BIC.B #7,&$247
13751     BIS.B #$0F,&$224
13752     BIC.B #$0F,&$226
13753     BIS.B #4,&$20A
13754     BIC.B #4,&$20C
13755 MOV #%01_0001_0100,&$340
13756     MOV ##3276,&$352
13757     MOV #%10000,&$342
13758 COLON
13759     #1000 20_US
13760     %011 TOP_LCD
13761     #205 20_US
13762     %011 TOP_LCD
13763     #5 20_US
13764     %011 TOP_LCD
13765     #2 20_US
13766     %010 TOP_LCD
13767     #2 20_US
13768     %00101000 LCD_WRF
13769     %1000 LCD_WRF
13770     LCD_CLEAR
13771     %0110 LCD_WRF
13772     %1100 LCD_WRF
13773     LCD_CLEAR
13774     ['] LCD_HOME IS CR
13775     ['] LCD_WRC  IS EMIT
13776     CR ." I love you"
13777     ['] CR >BODY IS CR
13778     ['] EMIT >BODY IS EMIT
13779     ." RC5toLCD is running. Type STOP to quit"
13780     ABORT" "
13781 ;
13782
13783 CODE START
13784 CMP #$40AA,&{RC5TOLCD}+8
13785 0= IF
13786     MOV #STOP_R2L,&{RC5TOLCD}+8
13787     MOV &WARM+2,&{RC5TOLCD}+10
13788     MOV #INI_R2L,&WARM+2
13789     MOV &$FFEA,&{RC5TOLCD}+12
13790     MOV #WDT_INT,&$FFEA
13791     MOV &$FFDE,&{RC5TOLCD}+14
13792     MOV #RC5_INT,&$FFDE
13793     MOV #INI_R2L,R0
13794 THEN
13795 MOV @R13+,R0 
13796 ENDCODE 
13797
13798
13799 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
13800
13801 MARKER {RC5TOLCD}
13802 6 ALLOT
13803
13804
13805
13806 [UNDEFINED] CONSTANT [IF]
13807 : CONSTANT 
13808 CREATE
13809 HI2LO
13810 MOV R14,-2(R10)
13811 MOV @R15+,R14
13812 MOV @R1+,R13
13813 MOV @R13+,R0
13814 ENDCODE
13815 [THEN]
13816
13817 [UNDEFINED] STATE [IF]
13818 $1DBE CONSTANT STATE
13819 [THEN]
13820
13821 [UNDEFINED] = [IF]
13822 CODE =
13823 SUB @R15+,R14
13824 0<> IF
13825     AND #0,R14
13826     MOV @R13+,R0
13827 THEN
13828 XOR #-1,R14
13829 MOV @R13+,R0
13830 ENDCODE
13831 [THEN]
13832
13833 [UNDEFINED] IF [IF]
13834 CODE IF
13835 SUB #2,R15
13836 MOV R14,0(R15)
13837 MOV &$1DC6,R14
13838 ADD #4,&$1DC6
13839 MOV #$4034,0(R14)
13840 ADD #2,R14
13841 MOV @R13+,R0
13842 ENDCODE IMMEDIATE
13843
13844 CODE THEN
13845 MOV &$1DC6,0(R14)
13846 MOV @R15+,R14
13847 MOV @R13+,R0
13848 ENDCODE IMMEDIATE
13849 [THEN]
13850
13851 [UNDEFINED] ELSE [IF]
13852 CODE ELSE
13853 ADD #4,&$1DC6
13854 MOV &$1DC6,R10
13855 MOV #$403A,-4(R10)
13856 MOV R10,0(R14)
13857 SUB #2,R10
13858 MOV R10,R14
13859 MOV @R13+,R0
13860 ENDCODE IMMEDIATE
13861 [THEN]
13862
13863 [UNDEFINED] IS [IF]
13864
13865 CODE DEFER!
13866 MOV @R15+,2(R14)
13867 MOV @R15+,R14
13868 MOV @R13+,R0
13869 ENDCODE
13870
13871
13872 : IS
13873 STATE @
13874 IF  POSTPONE ['] POSTPONE DEFER! 
13875 ELSE ' DEFER! 
13876 THEN
13877 ; IMMEDIATE
13878 [THEN]
13879
13880 [UNDEFINED] >BODY [IF]
13881 CODE >BODY
13882 ADD #4,R14
13883 MOV @R13+,R0
13884 ENDCODE
13885 [THEN]
13886
13887
13888 CODE 20_US
13889 BEGIN
13890     BEGIN
13891         BIT #1,&$3C0
13892     0<> UNTIL
13893     BIC #1,&$3C0
13894     SUB #1,R14
13895 U< UNTIL
13896 MOV @R15+,R14
13897 MOV @R13+,R0
13898 ENDCODE
13899
13900 CODE TOP_LCD
13901     BIS.B #4,&$243
13902     BIT.B #1,&$241
13903 0= IF
13904     AND.B #$0F,R14
13905     MOV.B R14,&$222
13906     BIC.B #4,&$243
13907     MOV @R15+,R14
13908     MOV @R13+,R0
13909 THEN
13910     SUB #2,R15
13911     MOV R14,0(R15)
13912     BIC.B #4,&$243
13913     MOV.B &$220,R14
13914     AND.B #$0F,R14
13915     MOV @R13+,R0
13916 ENDCODE
13917
13918 CODE LCD_WRC
13919     BIS.B #2,&$243
13920 BW1 SUB #2,R15
13921     MOV R14,0(R15)
13922     RRUM #4,R14
13923     BIC.B #1,&$243
13924     BIS.B #$0F,&$224
13925 COLON
13926     TOP_LCD 2 20_US
13927     TOP_LCD 2 20_US 
13928 ;
13929
13930 CODE LCD_WRF
13931     BIC.B #2,&$243
13932     GOTO BW1
13933 ENDCODE
13934
13935 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
13936 : LCD_HOME $02 LCD_WRF 100 20_us ;
13937
13938
13939
13940 HDNCODE WDT_INT
13941 BIT.B #$20,&$240
13942 0= IF
13943     CMP #19,&$3D6
13944     U< IF
13945         ADD #1,&$3D6
13946     THEN
13947 ELSE
13948     BIT.B #$40,&$240
13949     0= IF
13950         CMP #3,&$3D6
13951         U>= IF
13952            SUB #1,&$3D6
13953         THEN
13954     THEN
13955 THEN
13956 RETI
13957 ENDCODE
13958
13959 HDNCODE RC5_INT
13960 $1800 @ 16000 = [IF]
13961     MOV #1,&$3A0
13962 [THEN]
13963 $1800 @ 24000 = [IF]
13964     MOV #2,&$3A0
13965 [THEN]
13966 MOV #1778,R9
13967 MOV #14,R10
13968 BEGIN
13969 MOV #%1011100100,&$380
13970     RRUM    #1,R9
13971     MOV     R9,R8
13972     RRUM    #1,R8
13973     ADD     R9,R8
13974     BEGIN   CMP R8,&$390
13975     U>= UNTIL
13976     BIT.B   #4,&$200
13977     ADDC    R11,R11
13978     MOV.B   &$200,&$208
13979     BIC.B   #4,&$20C
13980     SUB     #1,R10
13981 0<> WHILE
13982     ADD R9,R8
13983     BEGIN
13984         MOV &$390,R9
13985         CMP R8,R9
13986         U>= IF
13987         BIC #$30,&$380
13988         GOTO FW1
13989         THEN
13990         BIT.B #4,&$20C
13991     0<> UNTIL
13992 REPEAT
13993 BIC #$30,&$380
13994 RLAM    #1,R11
13995 MOV.B   R11,R9
13996 RRUM    #2,R9
13997 BIT     #$4000,R11
13998 0= IF   BIS #$40,R9
13999 THEN
14000 RRUM    #3,R11
14001 XOR     @R1,R11
14002 BIT     #$400,R11
14003 0= ?GOTO FW2
14004 XOR #$400,0(R1)
14005 SUB #8,R15
14006 MOV R14,6(R15)
14007 MOV &$1DDC,4(R15)
14008 MOV #$10,&$1DDC
14009 MOV R9,0(R15)
14010 MOV #0,R14
14011 LO2HI
14012     LCD_CLEAR
14013     <# # #S #36 HOLD #>
14014     ['] LCD_WRC IS EMIT
14015     TYPE
14016     ['] EMIT >BODY IS EMIT
14017 HI2LO
14018 MOV @R15+,&$1DDC
14019 MOV @R15+,R14
14020 FW1 FW2
14021     MOV @R1+,R2
14022     BIC #%1111_1000,R2
14023     MOV @R1+,R0
14024 ENDCODE
14025
14026
14027 HDNCODE STOP_R2L
14028 CMP #$40AA,&{RC5TOLCD}+8
14029 0<> IF
14030     BIC.B #4,&$20A
14031     BIC.B #4,&$20C
14032     MOV #0,&$3C0
14033     MOV #0,&$340
14034     MOV #0,&$342
14035     MOV #$40AA,&{RC5TOLCD}+8
14036     MOV &{RC5TOLCD}+10,&WARM+2
14037     MOV &{RC5TOLCD}+12,&$FFEA
14038     MOV &{RC5TOLCD}+14,&$FFDE
14039     MOV &{RC5TOLCD}+10,R0
14040 THEN 
14041 MOV @R1+,R0
14042 ENDCODE
14043
14044 CODE STOP
14045 BW1
14046 CALL #STOP_R2L
14047 COLON
14048 ECHO
14049 ." RC5toLCD is removed,"
14050 ."  type START to restart"
14051 ABORT" "
14052 ;
14053
14054 HDNCODE INI_R2L
14055 BIC #1,&$130
14056 MOV &$1808,R14
14057 CMP #$0E,R14
14058 0<> IF
14059     CMP #$0A,R14
14060     U>= ?GOTO BW1
14061 THEN
14062 BIT.B #$20,&$240
14063 0= ?GOTO BW1
14064 MOV #0,&$1808
14065 MOV #%10_1101_0100,&$3C0
14066 $1800 @ 16000 = [IF]
14067     MOV #1,&$3E0
14068 [THEN]
14069 $1800 @ 24000 = [IF]
14070     MOV #2,&$3E0
14071 [THEN]
14072     MOV #19,&$3D2
14073 MOV #%0110_0000,&$3C6
14074     MOV #10,&$3D6
14075     BIS.B #$20,&$204
14076     BIS.B #$20,&$20A
14077     BIS.B #7,&$245
14078     BIC.B #7,&$247
14079     BIS.B #$0F,&$224
14080     BIC.B #$0F,&$226
14081     BIS.B #4,&$20A
14082     BIC.B #4,&$20C
14083 MOV #%01_0001_0100,&$340
14084     MOV ##3276,&$352
14085     MOV #%10000,&$342
14086 COLON
14087     #1000 20_US
14088     %011 TOP_LCD
14089     #205 20_US
14090     %011 TOP_LCD
14091     #5 20_US
14092     %011 TOP_LCD
14093     #2 20_US
14094     %010 TOP_LCD
14095     #2 20_US
14096     %00101000 LCD_WRF
14097     %1000 LCD_WRF
14098     LCD_CLEAR
14099     %0110 LCD_WRF
14100     %1100 LCD_WRF
14101     LCD_CLEAR
14102     ['] LCD_HOME IS CR
14103     ['] LCD_WRC  IS EMIT
14104     CR ." I love you"
14105     ['] CR >BODY IS CR
14106     ['] EMIT >BODY IS EMIT
14107     ." RC5toLCD is running. Type STOP to quit"
14108     ABORT" "
14109 ;
14110
14111 CODE START
14112 CMP #$40AA,&{RC5TOLCD}+8
14113 0= IF
14114     MOV #STOP_R2L,&{RC5TOLCD}+8
14115     MOV &WARM+2,&{RC5TOLCD}+10
14116     MOV #INI_R2L,&WARM+2
14117     MOV &$FFEA,&{RC5TOLCD}+12
14118     MOV #WDT_INT,&$FFEA
14119     MOV &$FFDE,&{RC5TOLCD}+14
14120     MOV #RC5_INT,&$FFDE
14121     MOV #INI_R2L,R0
14122 THEN
14123 MOV @R13+,R0 
14124 ENDCODE 
14125
14126
14127 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
14128
14129 MARKER {RC5TOLCD}
14130 6 ALLOT
14131
14132
14133
14134 [UNDEFINED] CONSTANT [IF]
14135 : CONSTANT 
14136 CREATE
14137 HI2LO
14138 MOV R14,-2(R10)
14139 MOV @R15+,R14
14140 MOV @R1+,R13
14141 MOV @R13+,R0
14142 ENDCODE
14143 [THEN]
14144
14145 [UNDEFINED] STATE [IF]
14146 $1DBE CONSTANT STATE
14147 [THEN]
14148
14149 [UNDEFINED] = [IF]
14150 CODE =
14151 SUB @R15+,R14
14152 0<> IF
14153     AND #0,R14
14154     MOV @R13+,R0
14155 THEN
14156 XOR #-1,R14
14157 MOV @R13+,R0
14158 ENDCODE
14159 [THEN]
14160
14161 [UNDEFINED] IF [IF]
14162 CODE IF
14163 SUB #2,R15
14164 MOV R14,0(R15)
14165 MOV &$1DC6,R14
14166 ADD #4,&$1DC6
14167 MOV #$4034,0(R14)
14168 ADD #2,R14
14169 MOV @R13+,R0
14170 ENDCODE IMMEDIATE
14171
14172 CODE THEN
14173 MOV &$1DC6,0(R14)
14174 MOV @R15+,R14
14175 MOV @R13+,R0
14176 ENDCODE IMMEDIATE
14177 [THEN]
14178
14179 [UNDEFINED] ELSE [IF]
14180 CODE ELSE
14181 ADD #4,&$1DC6
14182 MOV &$1DC6,R10
14183 MOV #$403A,-4(R10)
14184 MOV R10,0(R14)
14185 SUB #2,R10
14186 MOV R10,R14
14187 MOV @R13+,R0
14188 ENDCODE IMMEDIATE
14189 [THEN]
14190
14191 [UNDEFINED] IS [IF]
14192
14193 CODE DEFER!
14194 MOV @R15+,2(R14)
14195 MOV @R15+,R14
14196 MOV @R13+,R0
14197 ENDCODE
14198
14199
14200 : IS
14201 STATE @
14202 IF  POSTPONE ['] POSTPONE DEFER! 
14203 ELSE ' DEFER! 
14204 THEN
14205 ; IMMEDIATE
14206 [THEN]
14207
14208 [UNDEFINED] >BODY [IF]
14209 CODE >BODY
14210 ADD #4,R14
14211 MOV @R13+,R0
14212 ENDCODE
14213 [THEN]
14214
14215
14216 CODE 20_US
14217 BEGIN
14218     BEGIN
14219         BIT #1,&$3C0
14220     0<> UNTIL
14221     BIC #1,&$3C0
14222     SUB #1,R14
14223 U< UNTIL
14224 MOV @R15+,R14
14225 MOV @R13+,R0
14226 ENDCODE
14227
14228 CODE TOP_LCD
14229     BIS.B #4,&$243
14230     BIT.B #1,&$241
14231 0= IF
14232     AND.B #$0F,R14
14233     MOV.B R14,&$222
14234     BIC.B #4,&$243
14235     MOV @R15+,R14
14236     MOV @R13+,R0
14237 THEN
14238     SUB #2,R15
14239     MOV R14,0(R15)
14240     BIC.B #4,&$243
14241     MOV.B &$220,R14
14242     AND.B #$0F,R14
14243     MOV @R13+,R0
14244 ENDCODE
14245
14246 CODE LCD_WRC
14247     BIS.B #2,&$243
14248 BW1 SUB #2,R15
14249     MOV R14,0(R15)
14250     RRUM #4,R14
14251     BIC.B #1,&$243
14252     BIS.B #$0F,&$224
14253 COLON
14254     TOP_LCD 2 20_US
14255     TOP_LCD 2 20_US 
14256 ;
14257
14258 CODE LCD_WRF
14259     BIC.B #2,&$243
14260     GOTO BW1
14261 ENDCODE
14262
14263 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
14264 : LCD_HOME $02 LCD_WRF 100 20_us ;
14265
14266
14267
14268 HDNCODE WDT_INT
14269 BIT.B #$20,&$240
14270 0= IF
14271     CMP #19,&$3D6
14272     U< IF
14273         ADD #1,&$3D6
14274     THEN
14275 ELSE
14276     BIT.B #$40,&$240
14277     0= IF
14278         CMP #3,&$3D6
14279         U>= IF
14280            SUB #1,&$3D6
14281         THEN
14282     THEN
14283 THEN
14284 RETI
14285 ENDCODE
14286
14287 HDNCODE RC5_INT
14288 $1800 @ 16000 = [IF]
14289     MOV #1,&$3A0
14290 [THEN]
14291 $1800 @ 24000 = [IF]
14292     MOV #2,&$3A0
14293 [THEN]
14294 MOV #1778,R9
14295 MOV #14,R10
14296 BEGIN
14297 MOV #%1011100100,&$380
14298     RRUM    #1,R9
14299     MOV     R9,R8
14300     RRUM    #1,R8
14301     ADD     R9,R8
14302     BEGIN   CMP R8,&$390
14303     U>= UNTIL
14304     BIT.B   #4,&$200
14305     ADDC    R11,R11
14306     MOV.B   &$200,&$208
14307     BIC.B   #4,&$20C
14308     SUB     #1,R10
14309 0<> WHILE
14310     ADD R9,R8
14311     BEGIN
14312         MOV &$390,R9
14313         CMP R8,R9
14314         U>= IF
14315         BIC #$30,&$380
14316         GOTO FW1
14317         THEN
14318         BIT.B #4,&$20C
14319     0<> UNTIL
14320 REPEAT
14321 BIC #$30,&$380
14322 RLAM    #1,R11
14323 MOV.B   R11,R9
14324 RRUM    #2,R9
14325 BIT     #$4000,R11
14326 0= IF   BIS #$40,R9
14327 THEN
14328 RRUM    #3,R11
14329 XOR     @R1,R11
14330 BIT     #$400,R11
14331 0= ?GOTO FW2
14332 XOR #$400,0(R1)
14333 SUB #8,R15
14334 MOV R14,6(R15)
14335 MOV &$1DDC,4(R15)
14336 MOV #$10,&$1DDC
14337 MOV R9,0(R15)
14338 MOV #0,R14
14339 LO2HI
14340     LCD_CLEAR
14341     <# # #S #36 HOLD #>
14342     ['] LCD_WRC IS EMIT
14343     TYPE
14344     ['] EMIT >BODY IS EMIT
14345 HI2LO
14346 MOV @R15+,&$1DDC
14347 MOV @R15+,R14
14348 FW1 FW2
14349     MOV @R1+,R2
14350     BIC #%1111_1000,R2
14351     MOV @R1+,R0
14352 ENDCODE
14353
14354
14355 HDNCODE STOP_R2L
14356 CMP #$40AA,&{RC5TOLCD}+8
14357 0<> IF
14358     BIC.B #4,&$20A
14359     BIC.B #4,&$20C
14360     MOV #0,&$3C0
14361     MOV #0,&$340
14362     MOV #0,&$342
14363     MOV #$40AA,&{RC5TOLCD}+8
14364     MOV &{RC5TOLCD}+10,&WARM+2
14365     MOV &{RC5TOLCD}+12,&$FFEA
14366     MOV &{RC5TOLCD}+14,&$FFDE
14367     MOV &{RC5TOLCD}+10,R0
14368 THEN 
14369 MOV @R1+,R0
14370 ENDCODE
14371
14372 CODE STOP
14373 BW1
14374 CALL #STOP_R2L
14375 COLON
14376 ECHO
14377 ." RC5toLCD is removed,"
14378 ."  type START to restart"
14379 ABORT" "
14380 ;
14381
14382 HDNCODE INI_R2L
14383 BIC #1,&$130
14384 MOV &$1808,R14
14385 CMP #$0E,R14
14386 0<> IF
14387     CMP #$0A,R14
14388     U>= ?GOTO BW1
14389 THEN
14390 BIT.B #$20,&$240
14391 0= ?GOTO BW1
14392 MOV #0,&$1808
14393 MOV #%10_1101_0100,&$3C0
14394 $1800 @ 16000 = [IF]
14395     MOV #1,&$3E0
14396 [THEN]
14397 $1800 @ 24000 = [IF]
14398     MOV #2,&$3E0
14399 [THEN]
14400     MOV #19,&$3D2
14401 MOV #%0110_0000,&$3C6
14402     MOV #10,&$3D6
14403     BIS.B #$20,&$204
14404     BIS.B #$20,&$20A
14405     BIS.B #7,&$245
14406     BIC.B #7,&$247
14407     BIS.B #$0F,&$224
14408     BIC.B #$0F,&$226
14409     BIS.B #4,&$20A
14410     BIC.B #4,&$20C
14411 MOV #%01_0001_0100,&$340
14412     MOV ##3276,&$352
14413     MOV #%10000,&$342
14414 COLON
14415     #1000 20_US
14416     %011 TOP_LCD
14417     #205 20_US
14418     %011 TOP_LCD
14419     #5 20_US
14420     %011 TOP_LCD
14421     #2 20_US
14422     %010 TOP_LCD
14423     #2 20_US
14424     %00101000 LCD_WRF
14425     %1000 LCD_WRF
14426     LCD_CLEAR
14427     %0110 LCD_WRF
14428     %1100 LCD_WRF
14429     LCD_CLEAR
14430     ['] LCD_HOME IS CR
14431     ['] LCD_WRC  IS EMIT
14432     CR ." I love you"
14433     ['] CR >BODY IS CR
14434     ['] EMIT >BODY IS EMIT
14435     ." RC5toLCD is running. Type STOP to quit"
14436     ABORT" "
14437 ;
14438
14439 CODE START
14440 CMP #$40AA,&{RC5TOLCD}+8
14441 0= IF
14442     MOV #STOP_R2L,&{RC5TOLCD}+8
14443     MOV &WARM+2,&{RC5TOLCD}+10
14444     MOV #INI_R2L,&WARM+2
14445     MOV &$FFEA,&{RC5TOLCD}+12
14446     MOV #WDT_INT,&$FFEA
14447     MOV &$FFDE,&{RC5TOLCD}+14
14448     MOV #RC5_INT,&$FFDE
14449     MOV #INI_R2L,R0
14450 THEN
14451 MOV @R13+,R0 
14452 ENDCODE 
14453
14454
14455 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
14456
14457 MARKER {RC5TOLCD}
14458 6 ALLOT
14459
14460
14461
14462 [UNDEFINED] CONSTANT [IF]
14463 : CONSTANT 
14464 CREATE
14465 HI2LO
14466 MOV R14,-2(R10)
14467 MOV @R15+,R14
14468 MOV @R1+,R13
14469 MOV @R13+,R0
14470 ENDCODE
14471 [THEN]
14472
14473 [UNDEFINED] STATE [IF]
14474 $1DBE CONSTANT STATE
14475 [THEN]
14476
14477 [UNDEFINED] = [IF]
14478 CODE =
14479 SUB @R15+,R14
14480 0<> IF
14481     AND #0,R14
14482     MOV @R13+,R0
14483 THEN
14484 XOR #-1,R14
14485 MOV @R13+,R0
14486 ENDCODE
14487 [THEN]
14488
14489 [UNDEFINED] IF [IF]
14490 CODE IF
14491 SUB #2,R15
14492 MOV R14,0(R15)
14493 MOV &$1DC6,R14
14494 ADD #4,&$1DC6
14495 MOV #$4034,0(R14)
14496 ADD #2,R14
14497 MOV @R13+,R0
14498 ENDCODE IMMEDIATE
14499
14500 CODE THEN
14501 MOV &$1DC6,0(R14)
14502 MOV @R15+,R14
14503 MOV @R13+,R0
14504 ENDCODE IMMEDIATE
14505 [THEN]
14506
14507 [UNDEFINED] ELSE [IF]
14508 CODE ELSE
14509 ADD #4,&$1DC6
14510 MOV &$1DC6,R10
14511 MOV #$403A,-4(R10)
14512 MOV R10,0(R14)
14513 SUB #2,R10
14514 MOV R10,R14
14515 MOV @R13+,R0
14516 ENDCODE IMMEDIATE
14517 [THEN]
14518
14519 [UNDEFINED] IS [IF]
14520
14521 CODE DEFER!
14522 MOV @R15+,2(R14)
14523 MOV @R15+,R14
14524 MOV @R13+,R0
14525 ENDCODE
14526
14527
14528 : IS
14529 STATE @
14530 IF  POSTPONE ['] POSTPONE DEFER! 
14531 ELSE ' DEFER! 
14532 THEN
14533 ; IMMEDIATE
14534 [THEN]
14535
14536 [UNDEFINED] >BODY [IF]
14537 CODE >BODY
14538 ADD #4,R14
14539 MOV @R13+,R0
14540 ENDCODE
14541 [THEN]
14542
14543
14544 CODE 20_US
14545 BEGIN
14546     BEGIN
14547         BIT #1,&$3C0
14548     0<> UNTIL
14549     BIC #1,&$3C0
14550     SUB #1,R14
14551 U< UNTIL
14552 MOV @R15+,R14
14553 MOV @R13+,R0
14554 ENDCODE
14555
14556 CODE TOP_LCD
14557     BIS.B #4,&$243
14558     BIT.B #1,&$241
14559 0= IF
14560     AND.B #$0F,R14
14561     MOV.B R14,&$222
14562     BIC.B #4,&$243
14563     MOV @R15+,R14
14564     MOV @R13+,R0
14565 THEN
14566     SUB #2,R15
14567     MOV R14,0(R15)
14568     BIC.B #4,&$243
14569     MOV.B &$220,R14
14570     AND.B #$0F,R14
14571     MOV @R13+,R0
14572 ENDCODE
14573
14574 CODE LCD_WRC
14575     BIS.B #2,&$243
14576 BW1 SUB #2,R15
14577     MOV R14,0(R15)
14578     RRUM #4,R14
14579     BIC.B #1,&$243
14580     BIS.B #$0F,&$224
14581 COLON
14582     TOP_LCD 2 20_US
14583     TOP_LCD 2 20_US 
14584 ;
14585
14586 CODE LCD_WRF
14587     BIC.B #2,&$243
14588     GOTO BW1
14589 ENDCODE
14590
14591 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
14592 : LCD_HOME $02 LCD_WRF 100 20_us ;
14593
14594
14595
14596 HDNCODE WDT_INT
14597 BIT.B #$20,&$240
14598 0= IF
14599     CMP #19,&$3D6
14600     U< IF
14601         ADD #1,&$3D6
14602     THEN
14603 ELSE
14604     BIT.B #$40,&$240
14605     0= IF
14606         CMP #3,&$3D6
14607         U>= IF
14608            SUB #1,&$3D6
14609         THEN
14610     THEN
14611 THEN
14612 RETI
14613 ENDCODE
14614
14615 HDNCODE RC5_INT
14616 $1800 @ 16000 = [IF]
14617     MOV #1,&$3A0
14618 [THEN]
14619 $1800 @ 24000 = [IF]
14620     MOV #2,&$3A0
14621 [THEN]
14622 MOV #1778,R9
14623 MOV #14,R10
14624 BEGIN
14625 MOV #%1011100100,&$380
14626     RRUM    #1,R9
14627     MOV     R9,R8
14628     RRUM    #1,R8
14629     ADD     R9,R8
14630     BEGIN   CMP R8,&$390
14631     U>= UNTIL
14632     BIT.B   #4,&$200
14633     ADDC    R11,R11
14634     MOV.B   &$200,&$208
14635     BIC.B   #4,&$20C
14636     SUB     #1,R10
14637 0<> WHILE
14638     ADD R9,R8
14639     BEGIN
14640         MOV &$390,R9
14641         CMP R8,R9
14642         U>= IF
14643         BIC #$30,&$380
14644         GOTO FW1
14645         THEN
14646         BIT.B #4,&$20C
14647     0<> UNTIL
14648 REPEAT
14649 BIC #$30,&$380
14650 RLAM    #1,R11
14651 MOV.B   R11,R9
14652 RRUM    #2,R9
14653 BIT     #$4000,R11
14654 0= IF   BIS #$40,R9
14655 THEN
14656 RRUM    #3,R11
14657 XOR     @R1,R11
14658 BIT     #$400,R11
14659 0= ?GOTO FW2
14660 XOR #$400,0(R1)
14661 SUB #8,R15
14662 MOV R14,6(R15)
14663 MOV &$1DDC,4(R15)
14664 MOV #$10,&$1DDC
14665 MOV R9,0(R15)
14666 MOV #0,R14
14667 LO2HI
14668     LCD_CLEAR
14669     <# # #S #36 HOLD #>
14670     ['] LCD_WRC IS EMIT
14671     TYPE
14672     ['] EMIT >BODY IS EMIT
14673 HI2LO
14674 MOV @R15+,&$1DDC
14675 MOV @R15+,R14
14676 FW1 FW2
14677     MOV @R1+,R2
14678     BIC #%1111_1000,R2
14679     MOV @R1+,R0
14680 ENDCODE
14681
14682
14683 HDNCODE STOP_R2L
14684 CMP #$40AA,&{RC5TOLCD}+8
14685 0<> IF
14686     BIC.B #4,&$20A
14687     BIC.B #4,&$20C
14688     MOV #0,&$3C0
14689     MOV #0,&$340
14690     MOV #0,&$342
14691     MOV #$40AA,&{RC5TOLCD}+8
14692     MOV &{RC5TOLCD}+10,&WARM+2
14693     MOV &{RC5TOLCD}+12,&$FFEA
14694     MOV &{RC5TOLCD}+14,&$FFDE
14695     MOV &{RC5TOLCD}+10,R0
14696 THEN 
14697 MOV @R1+,R0
14698 ENDCODE
14699
14700 CODE STOP
14701 BW1
14702 CALL #STOP_R2L
14703 COLON
14704 ECHO
14705 ." RC5toLCD is removed,"
14706 ."  type START to restart"
14707 ABORT" "
14708 ;
14709
14710 HDNCODE INI_R2L
14711 BIC #1,&$130
14712 MOV &$1808,R14
14713 CMP #$0E,R14
14714 0<> IF
14715     CMP #$0A,R14
14716     U>= ?GOTO BW1
14717 THEN
14718 BIT.B #$20,&$240
14719 0= ?GOTO BW1
14720 MOV #0,&$1808
14721 MOV #%10_1101_0100,&$3C0
14722 $1800 @ 16000 = [IF]
14723     MOV #1,&$3E0
14724 [THEN]
14725 $1800 @ 24000 = [IF]
14726     MOV #2,&$3E0
14727 [THEN]
14728     MOV #19,&$3D2
14729 MOV #%0110_0000,&$3C6
14730     MOV #10,&$3D6
14731     BIS.B #$20,&$204
14732     BIS.B #$20,&$20A
14733     BIS.B #7,&$245
14734     BIC.B #7,&$247
14735     BIS.B #$0F,&$224
14736     BIC.B #$0F,&$226
14737     BIS.B #4,&$20A
14738     BIC.B #4,&$20C
14739 MOV #%01_0001_0100,&$340
14740     MOV ##3276,&$352
14741     MOV #%10000,&$342
14742 COLON
14743     #1000 20_US
14744     %011 TOP_LCD
14745     #205 20_US
14746     %011 TOP_LCD
14747     #5 20_US
14748     %011 TOP_LCD
14749     #2 20_US
14750     %010 TOP_LCD
14751     #2 20_US
14752     %00101000 LCD_WRF
14753     %1000 LCD_WRF
14754     LCD_CLEAR
14755     %0110 LCD_WRF
14756     %1100 LCD_WRF
14757     LCD_CLEAR
14758     ['] LCD_HOME IS CR
14759     ['] LCD_WRC  IS EMIT
14760     CR ." I love you"
14761     ['] CR >BODY IS CR
14762     ['] EMIT >BODY IS EMIT
14763     ." RC5toLCD is running. Type STOP to quit"
14764     ABORT" "
14765 ;
14766
14767 CODE START
14768 CMP #$40AA,&{RC5TOLCD}+8
14769 0= IF
14770     MOV #STOP_R2L,&{RC5TOLCD}+8
14771     MOV &WARM+2,&{RC5TOLCD}+10
14772     MOV #INI_R2L,&WARM+2
14773     MOV &$FFEA,&{RC5TOLCD}+12
14774     MOV #WDT_INT,&$FFEA
14775     MOV &$FFDE,&{RC5TOLCD}+14
14776     MOV #RC5_INT,&$FFDE
14777     MOV #INI_R2L,R0
14778 THEN
14779 MOV @R13+,R0 
14780 ENDCODE 
14781
14782
14783 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
14784
14785 MARKER {RC5TOLCD}
14786 6 ALLOT
14787
14788
14789
14790 [UNDEFINED] CONSTANT [IF]
14791 : CONSTANT 
14792 CREATE
14793 HI2LO
14794 MOV R14,-2(R10)
14795 MOV @R15+,R14
14796 MOV @R1+,R13
14797 MOV @R13+,R0
14798 ENDCODE
14799 [THEN]
14800
14801 [UNDEFINED] STATE [IF]
14802 $1DBE CONSTANT STATE
14803 [THEN]
14804
14805 [UNDEFINED] = [IF]
14806 CODE =
14807 SUB @R15+,R14
14808 0<> IF
14809     AND #0,R14
14810     MOV @R13+,R0
14811 THEN
14812 XOR #-1,R14
14813 MOV @R13+,R0
14814 ENDCODE
14815 [THEN]
14816
14817 [UNDEFINED] IF [IF]
14818 CODE IF
14819 SUB #2,R15
14820 MOV R14,0(R15)
14821 MOV &$1DC6,R14
14822 ADD #4,&$1DC6
14823 MOV #$4034,0(R14)
14824 ADD #2,R14
14825 MOV @R13+,R0
14826 ENDCODE IMMEDIATE
14827
14828 CODE THEN
14829 MOV &$1DC6,0(R14)
14830 MOV @R15+,R14
14831 MOV @R13+,R0
14832 ENDCODE IMMEDIATE
14833 [THEN]
14834
14835 [UNDEFINED] ELSE [IF]
14836 CODE ELSE
14837 ADD #4,&$1DC6
14838 MOV &$1DC6,R10
14839 MOV #$403A,-4(R10)
14840 MOV R10,0(R14)
14841 SUB #2,R10
14842 MOV R10,R14
14843 MOV @R13+,R0
14844 ENDCODE IMMEDIATE
14845 [THEN]
14846
14847 [UNDEFINED] IS [IF]
14848
14849 CODE DEFER!
14850 MOV @R15+,2(R14)
14851 MOV @R15+,R14
14852 MOV @R13+,R0
14853 ENDCODE
14854
14855
14856 : IS
14857 STATE @
14858 IF  POSTPONE ['] POSTPONE DEFER! 
14859 ELSE ' DEFER! 
14860 THEN
14861 ; IMMEDIATE
14862 [THEN]
14863
14864 [UNDEFINED] >BODY [IF]
14865 CODE >BODY
14866 ADD #4,R14
14867 MOV @R13+,R0
14868 ENDCODE
14869 [THEN]
14870
14871
14872 CODE 20_US
14873 BEGIN
14874     BEGIN
14875         BIT #1,&$3C0
14876     0<> UNTIL
14877     BIC #1,&$3C0
14878     SUB #1,R14
14879 U< UNTIL
14880 MOV @R15+,R14
14881 MOV @R13+,R0
14882 ENDCODE
14883
14884 CODE TOP_LCD
14885     BIS.B #4,&$243
14886     BIT.B #1,&$241
14887 0= IF
14888     AND.B #$0F,R14
14889     MOV.B R14,&$222
14890     BIC.B #4,&$243
14891     MOV @R15+,R14
14892     MOV @R13+,R0
14893 THEN
14894     SUB #2,R15
14895     MOV R14,0(R15)
14896     BIC.B #4,&$243
14897     MOV.B &$220,R14
14898     AND.B #$0F,R14
14899     MOV @R13+,R0
14900 ENDCODE
14901
14902 CODE LCD_WRC
14903     BIS.B #2,&$243
14904 BW1 SUB #2,R15
14905     MOV R14,0(R15)
14906     RRUM #4,R14
14907     BIC.B #1,&$243
14908     BIS.B #$0F,&$224
14909 COLON
14910     TOP_LCD 2 20_US
14911     TOP_LCD 2 20_US 
14912 ;
14913
14914 CODE LCD_WRF
14915     BIC.B #2,&$243
14916     GOTO BW1
14917 ENDCODE
14918
14919 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
14920 : LCD_HOME $02 LCD_WRF 100 20_us ;
14921
14922
14923
14924 HDNCODE WDT_INT
14925 BIT.B #$20,&$240
14926 0= IF
14927     CMP #19,&$3D6
14928     U< IF
14929         ADD #1,&$3D6
14930     THEN
14931 ELSE
14932     BIT.B #$40,&$240
14933     0= IF
14934         CMP #3,&$3D6
14935         U>= IF
14936            SUB #1,&$3D6
14937         THEN
14938     THEN
14939 THEN
14940 RETI
14941 ENDCODE
14942
14943 HDNCODE RC5_INT
14944 $1800 @ 16000 = [IF]
14945     MOV #1,&$3A0
14946 [THEN]
14947 $1800 @ 24000 = [IF]
14948     MOV #2,&$3A0
14949 [THEN]
14950 MOV #1778,R9
14951 MOV #14,R10
14952 BEGIN
14953 MOV #%1011100100,&$380
14954     RRUM    #1,R9
14955     MOV     R9,R8
14956     RRUM    #1,R8
14957     ADD     R9,R8
14958     BEGIN   CMP R8,&$390
14959     U>= UNTIL
14960     BIT.B   #4,&$200
14961     ADDC    R11,R11
14962     MOV.B   &$200,&$208
14963     BIC.B   #4,&$20C
14964     SUB     #1,R10
14965 0<> WHILE
14966     ADD R9,R8
14967     BEGIN
14968         MOV &$390,R9
14969         CMP R8,R9
14970         U>= IF
14971         BIC #$30,&$380
14972         GOTO FW1
14973         THEN
14974         BIT.B #4,&$20C
14975     0<> UNTIL
14976 REPEAT
14977 BIC #$30,&$380
14978 RLAM    #1,R11
14979 MOV.B   R11,R9
14980 RRUM    #2,R9
14981 BIT     #$4000,R11
14982 0= IF   BIS #$40,R9
14983 THEN
14984 RRUM    #3,R11
14985 XOR     @R1,R11
14986 BIT     #$400,R11
14987 0= ?GOTO FW2
14988 XOR #$400,0(R1)
14989 SUB #8,R15
14990 MOV R14,6(R15)
14991 MOV &$1DDC,4(R15)
14992 MOV #$10,&$1DDC
14993 MOV R9,0(R15)
14994 MOV #0,R14
14995 LO2HI
14996     LCD_CLEAR
14997     <# # #S #36 HOLD #>
14998     ['] LCD_WRC IS EMIT
14999     TYPE
15000     ['] EMIT >BODY IS EMIT
15001 HI2LO
15002 MOV @R15+,&$1DDC
15003 MOV @R15+,R14
15004 FW1 FW2
15005     MOV @R1+,R2
15006     BIC #%1111_1000,R2
15007     MOV @R1+,R0
15008 ENDCODE
15009
15010
15011 HDNCODE STOP_R2L
15012 CMP #$40AA,&{RC5TOLCD}+8
15013 0<> IF
15014     BIC.B #4,&$20A
15015     BIC.B #4,&$20C
15016     MOV #0,&$3C0
15017     MOV #0,&$340
15018     MOV #0,&$342
15019     MOV #$40AA,&{RC5TOLCD}+8
15020     MOV &{RC5TOLCD}+10,&WARM+2
15021     MOV &{RC5TOLCD}+12,&$FFEA
15022     MOV &{RC5TOLCD}+14,&$FFDE
15023     MOV &{RC5TOLCD}+10,R0
15024 THEN 
15025 MOV @R1+,R0
15026 ENDCODE
15027
15028 CODE STOP
15029 BW1
15030 CALL #STOP_R2L
15031 COLON
15032 ECHO
15033 ." RC5toLCD is removed,"
15034 ."  type START to restart"
15035 ABORT" "
15036 ;
15037
15038 HDNCODE INI_R2L
15039 BIC #1,&$130
15040 MOV &$1808,R14
15041 CMP #$0E,R14
15042 0<> IF
15043     CMP #$0A,R14
15044     U>= ?GOTO BW1
15045 THEN
15046 BIT.B #$20,&$240
15047 0= ?GOTO BW1
15048 MOV #0,&$1808
15049 MOV #%10_1101_0100,&$3C0
15050 $1800 @ 16000 = [IF]
15051     MOV #1,&$3E0
15052 [THEN]
15053 $1800 @ 24000 = [IF]
15054     MOV #2,&$3E0
15055 [THEN]
15056     MOV #19,&$3D2
15057 MOV #%0110_0000,&$3C6
15058     MOV #10,&$3D6
15059     BIS.B #$20,&$204
15060     BIS.B #$20,&$20A
15061     BIS.B #7,&$245
15062     BIC.B #7,&$247
15063     BIS.B #$0F,&$224
15064     BIC.B #$0F,&$226
15065     BIS.B #4,&$20A
15066     BIC.B #4,&$20C
15067 MOV #%01_0001_0100,&$340
15068     MOV ##3276,&$352
15069     MOV #%10000,&$342
15070 COLON
15071     #1000 20_US
15072     %011 TOP_LCD
15073     #205 20_US
15074     %011 TOP_LCD
15075     #5 20_US
15076     %011 TOP_LCD
15077     #2 20_US
15078     %010 TOP_LCD
15079     #2 20_US
15080     %00101000 LCD_WRF
15081     %1000 LCD_WRF
15082     LCD_CLEAR
15083     %0110 LCD_WRF
15084     %1100 LCD_WRF
15085     LCD_CLEAR
15086     ['] LCD_HOME IS CR
15087     ['] LCD_WRC  IS EMIT
15088     CR ." I love you"
15089     ['] CR >BODY IS CR
15090     ['] EMIT >BODY IS EMIT
15091     ." RC5toLCD is running. Type STOP to quit"
15092     ABORT" "
15093 ;
15094
15095 CODE START
15096 CMP #$40AA,&{RC5TOLCD}+8
15097 0= IF
15098     MOV #STOP_R2L,&{RC5TOLCD}+8
15099     MOV &WARM+2,&{RC5TOLCD}+10
15100     MOV #INI_R2L,&WARM+2
15101     MOV &$FFEA,&{RC5TOLCD}+12
15102     MOV #WDT_INT,&$FFEA
15103     MOV &$FFDE,&{RC5TOLCD}+14
15104     MOV #RC5_INT,&$FFDE
15105     MOV #INI_R2L,R0
15106 THEN
15107 MOV @R13+,R0 
15108 ENDCODE 
15109
15110
15111 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
15112
15113 MARKER {RC5TOLCD}
15114 6 ALLOT
15115
15116
15117
15118 [UNDEFINED] CONSTANT [IF]
15119 : CONSTANT 
15120 CREATE
15121 HI2LO
15122 MOV R14,-2(R10)
15123 MOV @R15+,R14
15124 MOV @R1+,R13
15125 MOV @R13+,R0
15126 ENDCODE
15127 [THEN]
15128
15129 [UNDEFINED] STATE [IF]
15130 $1DBE CONSTANT STATE
15131 [THEN]
15132
15133 [UNDEFINED] = [IF]
15134 CODE =
15135 SUB @R15+,R14
15136 0<> IF
15137     AND #0,R14
15138     MOV @R13+,R0
15139 THEN
15140 XOR #-1,R14
15141 MOV @R13+,R0
15142 ENDCODE
15143 [THEN]
15144
15145 [UNDEFINED] IF [IF]
15146 CODE IF
15147 SUB #2,R15
15148 MOV R14,0(R15)
15149 MOV &$1DC6,R14
15150 ADD #4,&$1DC6
15151 MOV #$4034,0(R14)
15152 ADD #2,R14
15153 MOV @R13+,R0
15154 ENDCODE IMMEDIATE
15155
15156 CODE THEN
15157 MOV &$1DC6,0(R14)
15158 MOV @R15+,R14
15159 MOV @R13+,R0
15160 ENDCODE IMMEDIATE
15161 [THEN]
15162
15163 [UNDEFINED] ELSE [IF]
15164 CODE ELSE
15165 ADD #4,&$1DC6
15166 MOV &$1DC6,R10
15167 MOV #$403A,-4(R10)
15168 MOV R10,0(R14)
15169 SUB #2,R10
15170 MOV R10,R14
15171 MOV @R13+,R0
15172 ENDCODE IMMEDIATE
15173 [THEN]
15174
15175 [UNDEFINED] IS [IF]
15176
15177 CODE DEFER!
15178 MOV @R15+,2(R14)
15179 MOV @R15+,R14
15180 MOV @R13+,R0
15181 ENDCODE
15182
15183
15184 : IS
15185 STATE @
15186 IF  POSTPONE ['] POSTPONE DEFER! 
15187 ELSE ' DEFER! 
15188 THEN
15189 ; IMMEDIATE
15190 [THEN]
15191
15192 [UNDEFINED] >BODY [IF]
15193 CODE >BODY
15194 ADD #4,R14
15195 MOV @R13+,R0
15196 ENDCODE
15197 [THEN]
15198
15199
15200 CODE 20_US
15201 BEGIN
15202     BEGIN
15203         BIT #1,&$3C0
15204     0<> UNTIL
15205     BIC #1,&$3C0
15206     SUB #1,R14
15207 U< UNTIL
15208 MOV @R15+,R14
15209 MOV @R13+,R0
15210 ENDCODE
15211
15212 CODE TOP_LCD
15213     BIS.B #4,&$243
15214     BIT.B #1,&$241
15215 0= IF
15216     AND.B #$0F,R14
15217     MOV.B R14,&$222
15218     BIC.B #4,&$243
15219     MOV @R15+,R14
15220     MOV @R13+,R0
15221 THEN
15222     SUB #2,R15
15223     MOV R14,0(R15)
15224     BIC.B #4,&$243
15225     MOV.B &$220,R14
15226     AND.B #$0F,R14
15227     MOV @R13+,R0
15228 ENDCODE
15229
15230 CODE LCD_WRC
15231     BIS.B #2,&$243
15232 BW1 SUB #2,R15
15233     MOV R14,0(R15)
15234     RRUM #4,R14
15235     BIC.B #1,&$243
15236     BIS.B #$0F,&$224
15237 COLON
15238     TOP_LCD 2 20_US
15239     TOP_LCD 2 20_US 
15240 ;
15241
15242 CODE LCD_WRF
15243     BIC.B #2,&$243
15244     GOTO BW1
15245 ENDCODE
15246
15247 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
15248 : LCD_HOME $02 LCD_WRF 100 20_us ;
15249
15250
15251
15252 HDNCODE WDT_INT
15253 BIT.B #$20,&$240
15254 0= IF
15255     CMP #19,&$3D6
15256     U< IF
15257         ADD #1,&$3D6
15258     THEN
15259 ELSE
15260     BIT.B #$40,&$240
15261     0= IF
15262         CMP #3,&$3D6
15263         U>= IF
15264            SUB #1,&$3D6
15265         THEN
15266     THEN
15267 THEN
15268 RETI
15269 ENDCODE
15270
15271 HDNCODE RC5_INT
15272 $1800 @ 16000 = [IF]
15273     MOV #1,&$3A0
15274 [THEN]
15275 $1800 @ 24000 = [IF]
15276     MOV #2,&$3A0
15277 [THEN]
15278 MOV #1778,R9
15279 MOV #14,R10
15280 BEGIN
15281 MOV #%1011100100,&$380
15282     RRUM    #1,R9
15283     MOV     R9,R8
15284     RRUM    #1,R8
15285     ADD     R9,R8
15286     BEGIN   CMP R8,&$390
15287     U>= UNTIL
15288     BIT.B   #4,&$200
15289     ADDC    R11,R11
15290     MOV.B   &$200,&$208
15291     BIC.B   #4,&$20C
15292     SUB     #1,R10
15293 0<> WHILE
15294     ADD R9,R8
15295     BEGIN
15296         MOV &$390,R9
15297         CMP R8,R9
15298         U>= IF
15299         BIC #$30,&$380
15300         GOTO FW1
15301         THEN
15302         BIT.B #4,&$20C
15303     0<> UNTIL
15304 REPEAT
15305 BIC #$30,&$380
15306 RLAM    #1,R11
15307 MOV.B   R11,R9
15308 RRUM    #2,R9
15309 BIT     #$4000,R11
15310 0= IF   BIS #$40,R9
15311 THEN
15312 RRUM    #3,R11
15313 XOR     @R1,R11
15314 BIT     #$400,R11
15315 0= ?GOTO FW2
15316 XOR #$400,0(R1)
15317 SUB #8,R15
15318 MOV R14,6(R15)
15319 MOV &$1DDC,4(R15)
15320 MOV #$10,&$1DDC
15321 MOV R9,0(R15)
15322 MOV #0,R14
15323 LO2HI
15324     LCD_CLEAR
15325     <# # #S #36 HOLD #>
15326     ['] LCD_WRC IS EMIT
15327     TYPE
15328     ['] EMIT >BODY IS EMIT
15329 HI2LO
15330 MOV @R15+,&$1DDC
15331 MOV @R15+,R14
15332 FW1 FW2
15333     MOV @R1+,R2
15334     BIC #%1111_1000,R2
15335     MOV @R1+,R0
15336 ENDCODE
15337
15338
15339 HDNCODE STOP_R2L
15340 CMP #$40AA,&{RC5TOLCD}+8
15341 0<> IF
15342     BIC.B #4,&$20A
15343     BIC.B #4,&$20C
15344     MOV #0,&$3C0
15345     MOV #0,&$340
15346     MOV #0,&$342
15347     MOV #$40AA,&{RC5TOLCD}+8
15348     MOV &{RC5TOLCD}+10,&WARM+2
15349     MOV &{RC5TOLCD}+12,&$FFEA
15350     MOV &{RC5TOLCD}+14,&$FFDE
15351     MOV &{RC5TOLCD}+10,R0
15352 THEN 
15353 MOV @R1+,R0
15354 ENDCODE
15355
15356 CODE STOP
15357 BW1
15358 CALL #STOP_R2L
15359 COLON
15360 ECHO
15361 ." RC5toLCD is removed,"
15362 ."  type START to restart"
15363 ABORT" "
15364 ;
15365
15366 HDNCODE INI_R2L
15367 BIC #1,&$130
15368 MOV &$1808,R14
15369 CMP #$0E,R14
15370 0<> IF
15371     CMP #$0A,R14
15372     U>= ?GOTO BW1
15373 THEN
15374 BIT.B #$20,&$240
15375 0= ?GOTO BW1
15376 MOV #0,&$1808
15377 MOV #%10_1101_0100,&$3C0
15378 $1800 @ 16000 = [IF]
15379     MOV #1,&$3E0
15380 [THEN]
15381 $1800 @ 24000 = [IF]
15382     MOV #2,&$3E0
15383 [THEN]
15384     MOV #19,&$3D2
15385 MOV #%0110_0000,&$3C6
15386     MOV #10,&$3D6
15387     BIS.B #$20,&$204
15388     BIS.B #$20,&$20A
15389     BIS.B #7,&$245
15390     BIC.B #7,&$247
15391     BIS.B #$0F,&$224
15392     BIC.B #$0F,&$226
15393     BIS.B #4,&$20A
15394     BIC.B #4,&$20C
15395 MOV #%01_0001_0100,&$340
15396     MOV ##3276,&$352
15397     MOV #%10000,&$342
15398 COLON
15399     #1000 20_US
15400     %011 TOP_LCD
15401     #205 20_US
15402     %011 TOP_LCD
15403     #5 20_US
15404     %011 TOP_LCD
15405     #2 20_US
15406     %010 TOP_LCD
15407     #2 20_US
15408     %00101000 LCD_WRF
15409     %1000 LCD_WRF
15410     LCD_CLEAR
15411     %0110 LCD_WRF
15412     %1100 LCD_WRF
15413     LCD_CLEAR
15414     ['] LCD_HOME IS CR
15415     ['] LCD_WRC  IS EMIT
15416     CR ." I love you"
15417     ['] CR >BODY IS CR
15418     ['] EMIT >BODY IS EMIT
15419     ." RC5toLCD is running. Type STOP to quit"
15420     ABORT" "
15421 ;
15422
15423 CODE START
15424 CMP #$40AA,&{RC5TOLCD}+8
15425 0= IF
15426     MOV #STOP_R2L,&{RC5TOLCD}+8
15427     MOV &WARM+2,&{RC5TOLCD}+10
15428     MOV #INI_R2L,&WARM+2
15429     MOV &$FFEA,&{RC5TOLCD}+12
15430     MOV #WDT_INT,&$FFEA
15431     MOV &$FFDE,&{RC5TOLCD}+14
15432     MOV #RC5_INT,&$FFDE
15433     MOV #INI_R2L,R0
15434 THEN
15435 MOV @R13+,R0 
15436 ENDCODE 
15437
15438
15439 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
15440
15441 MARKER {RC5TOLCD}
15442 6 ALLOT
15443
15444
15445
15446 [UNDEFINED] CONSTANT [IF]
15447 : CONSTANT 
15448 CREATE
15449 HI2LO
15450 MOV R14,-2(R10)
15451 MOV @R15+,R14
15452 MOV @R1+,R13
15453 MOV @R13+,R0
15454 ENDCODE
15455 [THEN]
15456
15457 [UNDEFINED] STATE [IF]
15458 $1DBE CONSTANT STATE
15459 [THEN]
15460
15461 [UNDEFINED] = [IF]
15462 CODE =
15463 SUB @R15+,R14
15464 0<> IF
15465     AND #0,R14
15466     MOV @R13+,R0
15467 THEN
15468 XOR #-1,R14
15469 MOV @R13+,R0
15470 ENDCODE
15471 [THEN]
15472
15473 [UNDEFINED] IF [IF]
15474 CODE IF
15475 SUB #2,R15
15476 MOV R14,0(R15)
15477 MOV &$1DC6,R14
15478 ADD #4,&$1DC6
15479 MOV #$4034,0(R14)
15480 ADD #2,R14
15481 MOV @R13+,R0
15482 ENDCODE IMMEDIATE
15483
15484 CODE THEN
15485 MOV &$1DC6,0(R14)
15486 MOV @R15+,R14
15487 MOV @R13+,R0
15488 ENDCODE IMMEDIATE
15489 [THEN]
15490
15491 [UNDEFINED] ELSE [IF]
15492 CODE ELSE
15493 ADD #4,&$1DC6
15494 MOV &$1DC6,R10
15495 MOV #$403A,-4(R10)
15496 MOV R10,0(R14)
15497 SUB #2,R10
15498 MOV R10,R14
15499 MOV @R13+,R0
15500 ENDCODE IMMEDIATE
15501 [THEN]
15502
15503 [UNDEFINED] IS [IF]
15504
15505 CODE DEFER!
15506 MOV @R15+,2(R14)
15507 MOV @R15+,R14
15508 MOV @R13+,R0
15509 ENDCODE
15510
15511
15512 : IS
15513 STATE @
15514 IF  POSTPONE ['] POSTPONE DEFER! 
15515 ELSE ' DEFER! 
15516 THEN
15517 ; IMMEDIATE
15518 [THEN]
15519
15520 [UNDEFINED] >BODY [IF]
15521 CODE >BODY
15522 ADD #4,R14
15523 MOV @R13+,R0
15524 ENDCODE
15525 [THEN]
15526
15527
15528 CODE 20_US
15529 BEGIN
15530     BEGIN
15531         BIT #1,&$3C0
15532     0<> UNTIL
15533     BIC #1,&$3C0
15534     SUB #1,R14
15535 U< UNTIL
15536 MOV @R15+,R14
15537 MOV @R13+,R0
15538 ENDCODE
15539
15540 CODE TOP_LCD
15541     BIS.B #4,&$243
15542     BIT.B #1,&$241
15543 0= IF
15544     AND.B #$0F,R14
15545     MOV.B R14,&$222
15546     BIC.B #4,&$243
15547     MOV @R15+,R14
15548     MOV @R13+,R0
15549 THEN
15550     SUB #2,R15
15551     MOV R14,0(R15)
15552     BIC.B #4,&$243
15553     MOV.B &$220,R14
15554     AND.B #$0F,R14
15555     MOV @R13+,R0
15556 ENDCODE
15557
15558 CODE LCD_WRC
15559     BIS.B #2,&$243
15560 BW1 SUB #2,R15
15561     MOV R14,0(R15)
15562     RRUM #4,R14
15563     BIC.B #1,&$243
15564     BIS.B #$0F,&$224
15565 COLON
15566     TOP_LCD 2 20_US
15567     TOP_LCD 2 20_US 
15568 ;
15569
15570 CODE LCD_WRF
15571     BIC.B #2,&$243
15572     GOTO BW1
15573 ENDCODE
15574
15575 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
15576 : LCD_HOME $02 LCD_WRF 100 20_us ;
15577
15578
15579
15580 HDNCODE WDT_INT
15581 BIT.B #$20,&$240
15582 0= IF
15583     CMP #19,&$3D6
15584     U< IF
15585         ADD #1,&$3D6
15586     THEN
15587 ELSE
15588     BIT.B #$40,&$240
15589     0= IF
15590         CMP #3,&$3D6
15591         U>= IF
15592            SUB #1,&$3D6
15593         THEN
15594     THEN
15595 THEN
15596 RETI
15597 ENDCODE
15598
15599 HDNCODE RC5_INT
15600 $1800 @ 16000 = [IF]
15601     MOV #1,&$3A0
15602 [THEN]
15603 $1800 @ 24000 = [IF]
15604     MOV #2,&$3A0
15605 [THEN]
15606 MOV #1778,R9
15607 MOV #14,R10
15608 BEGIN
15609 MOV #%1011100100,&$380
15610     RRUM    #1,R9
15611     MOV     R9,R8
15612     RRUM    #1,R8
15613     ADD     R9,R8
15614     BEGIN   CMP R8,&$390
15615     U>= UNTIL
15616     BIT.B   #4,&$200
15617     ADDC    R11,R11
15618     MOV.B   &$200,&$208
15619     BIC.B   #4,&$20C
15620     SUB     #1,R10
15621 0<> WHILE
15622     ADD R9,R8
15623     BEGIN
15624         MOV &$390,R9
15625         CMP R8,R9
15626         U>= IF
15627         BIC #$30,&$380
15628         GOTO FW1
15629         THEN
15630         BIT.B #4,&$20C
15631     0<> UNTIL
15632 REPEAT
15633 BIC #$30,&$380
15634 RLAM    #1,R11
15635 MOV.B   R11,R9
15636 RRUM    #2,R9
15637 BIT     #$4000,R11
15638 0= IF   BIS #$40,R9
15639 THEN
15640 RRUM    #3,R11
15641 XOR     @R1,R11
15642 BIT     #$400,R11
15643 0= ?GOTO FW2
15644 XOR #$400,0(R1)
15645 SUB #8,R15
15646 MOV R14,6(R15)
15647 MOV &$1DDC,4(R15)
15648 MOV #$10,&$1DDC
15649 MOV R9,0(R15)
15650 MOV #0,R14
15651 LO2HI
15652     LCD_CLEAR
15653     <# # #S #36 HOLD #>
15654     ['] LCD_WRC IS EMIT
15655     TYPE
15656     ['] EMIT >BODY IS EMIT
15657 HI2LO
15658 MOV @R15+,&$1DDC
15659 MOV @R15+,R14
15660 FW1 FW2
15661     MOV @R1+,R2
15662     BIC #%1111_1000,R2
15663     MOV @R1+,R0
15664 ENDCODE
15665
15666
15667 HDNCODE STOP_R2L
15668 CMP #$40AA,&{RC5TOLCD}+8
15669 0<> IF
15670     BIC.B #4,&$20A
15671     BIC.B #4,&$20C
15672     MOV #0,&$3C0
15673     MOV #0,&$340
15674     MOV #0,&$342
15675     MOV #$40AA,&{RC5TOLCD}+8
15676     MOV &{RC5TOLCD}+10,&WARM+2
15677     MOV &{RC5TOLCD}+12,&$FFEA
15678     MOV &{RC5TOLCD}+14,&$FFDE
15679     MOV &{RC5TOLCD}+10,R0
15680 THEN 
15681 MOV @R1+,R0
15682 ENDCODE
15683
15684 CODE STOP
15685 BW1
15686 CALL #STOP_R2L
15687 COLON
15688 ECHO
15689 ." RC5toLCD is removed,"
15690 ."  type START to restart"
15691 ABORT" "
15692 ;
15693
15694 HDNCODE INI_R2L
15695 BIC #1,&$130
15696 MOV &$1808,R14
15697 CMP #$0E,R14
15698 0<> IF
15699     CMP #$0A,R14
15700     U>= ?GOTO BW1
15701 THEN
15702 BIT.B #$20,&$240
15703 0= ?GOTO BW1
15704 MOV #0,&$1808
15705 MOV #%10_1101_0100,&$3C0
15706 $1800 @ 16000 = [IF]
15707     MOV #1,&$3E0
15708 [THEN]
15709 $1800 @ 24000 = [IF]
15710     MOV #2,&$3E0
15711 [THEN]
15712     MOV #19,&$3D2
15713 MOV #%0110_0000,&$3C6
15714     MOV #10,&$3D6
15715     BIS.B #$20,&$204
15716     BIS.B #$20,&$20A
15717     BIS.B #7,&$245
15718     BIC.B #7,&$247
15719     BIS.B #$0F,&$224
15720     BIC.B #$0F,&$226
15721     BIS.B #4,&$20A
15722     BIC.B #4,&$20C
15723 MOV #%01_0001_0100,&$340
15724     MOV ##3276,&$352
15725     MOV #%10000,&$342
15726 COLON
15727     #1000 20_US
15728     %011 TOP_LCD
15729     #205 20_US
15730     %011 TOP_LCD
15731     #5 20_US
15732     %011 TOP_LCD
15733     #2 20_US
15734     %010 TOP_LCD
15735     #2 20_US
15736     %00101000 LCD_WRF
15737     %1000 LCD_WRF
15738     LCD_CLEAR
15739     %0110 LCD_WRF
15740     %1100 LCD_WRF
15741     LCD_CLEAR
15742     ['] LCD_HOME IS CR
15743     ['] LCD_WRC  IS EMIT
15744     CR ." I love you"
15745     ['] CR >BODY IS CR
15746     ['] EMIT >BODY IS EMIT
15747     ." RC5toLCD is running. Type STOP to quit"
15748     ABORT" "
15749 ;
15750
15751 CODE START
15752 CMP #$40AA,&{RC5TOLCD}+8
15753 0= IF
15754     MOV #STOP_R2L,&{RC5TOLCD}+8
15755     MOV &WARM+2,&{RC5TOLCD}+10
15756     MOV #INI_R2L,&WARM+2
15757     MOV &$FFEA,&{RC5TOLCD}+12
15758     MOV #WDT_INT,&$FFEA
15759     MOV &$FFDE,&{RC5TOLCD}+14
15760     MOV #RC5_INT,&$FFDE
15761     MOV #INI_R2L,R0
15762 THEN
15763 MOV @R13+,R0 
15764 ENDCODE 
15765
15766
15767 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
15768
15769 MARKER {RC5TOLCD}
15770 6 ALLOT
15771
15772
15773
15774 [UNDEFINED] CONSTANT [IF]
15775 : CONSTANT 
15776 CREATE
15777 HI2LO
15778 MOV R14,-2(R10)
15779 MOV @R15+,R14
15780 MOV @R1+,R13
15781 MOV @R13+,R0
15782 ENDCODE
15783 [THEN]
15784
15785 [UNDEFINED] STATE [IF]
15786 $1DBE CONSTANT STATE
15787 [THEN]
15788
15789 [UNDEFINED] = [IF]
15790 CODE =
15791 SUB @R15+,R14
15792 0<> IF
15793     AND #0,R14
15794     MOV @R13+,R0
15795 THEN
15796 XOR #-1,R14
15797 MOV @R13+,R0
15798 ENDCODE
15799 [THEN]
15800
15801 [UNDEFINED] IF [IF]
15802 CODE IF
15803 SUB #2,R15
15804 MOV R14,0(R15)
15805 MOV &$1DC6,R14
15806 ADD #4,&$1DC6
15807 MOV #$4034,0(R14)
15808 ADD #2,R14
15809 MOV @R13+,R0
15810 ENDCODE IMMEDIATE
15811
15812 CODE THEN
15813 MOV &$1DC6,0(R14)
15814 MOV @R15+,R14
15815 MOV @R13+,R0
15816 ENDCODE IMMEDIATE
15817 [THEN]
15818
15819 [UNDEFINED] ELSE [IF]
15820 CODE ELSE
15821 ADD #4,&$1DC6
15822 MOV &$1DC6,R10
15823 MOV #$403A,-4(R10)
15824 MOV R10,0(R14)
15825 SUB #2,R10
15826 MOV R10,R14
15827 MOV @R13+,R0
15828 ENDCODE IMMEDIATE
15829 [THEN]
15830
15831 [UNDEFINED] IS [IF]
15832
15833 CODE DEFER!
15834 MOV @R15+,2(R14)
15835 MOV @R15+,R14
15836 MOV @R13+,R0
15837 ENDCODE
15838
15839
15840 : IS
15841 STATE @
15842 IF  POSTPONE ['] POSTPONE DEFER! 
15843 ELSE ' DEFER! 
15844 THEN
15845 ; IMMEDIATE
15846 [THEN]
15847
15848 [UNDEFINED] >BODY [IF]
15849 CODE >BODY
15850 ADD #4,R14
15851 MOV @R13+,R0
15852 ENDCODE
15853 [THEN]
15854
15855
15856 CODE 20_US
15857 BEGIN
15858     BEGIN
15859         BIT #1,&$3C0
15860     0<> UNTIL
15861     BIC #1,&$3C0
15862     SUB #1,R14
15863 U< UNTIL
15864 MOV @R15+,R14
15865 MOV @R13+,R0
15866 ENDCODE
15867
15868 CODE TOP_LCD
15869     BIS.B #4,&$243
15870     BIT.B #1,&$241
15871 0= IF
15872     AND.B #$0F,R14
15873     MOV.B R14,&$222
15874     BIC.B #4,&$243
15875     MOV @R15+,R14
15876     MOV @R13+,R0
15877 THEN
15878     SUB #2,R15
15879     MOV R14,0(R15)
15880     BIC.B #4,&$243
15881     MOV.B &$220,R14
15882     AND.B #$0F,R14
15883     MOV @R13+,R0
15884 ENDCODE
15885
15886 CODE LCD_WRC
15887     BIS.B #2,&$243
15888 BW1 SUB #2,R15
15889     MOV R14,0(R15)
15890     RRUM #4,R14
15891     BIC.B #1,&$243
15892     BIS.B #$0F,&$224
15893 COLON
15894     TOP_LCD 2 20_US
15895     TOP_LCD 2 20_US 
15896 ;
15897
15898 CODE LCD_WRF
15899     BIC.B #2,&$243
15900     GOTO BW1
15901 ENDCODE
15902
15903 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
15904 : LCD_HOME $02 LCD_WRF 100 20_us ;
15905
15906
15907
15908 HDNCODE WDT_INT
15909 BIT.B #$20,&$240
15910 0= IF
15911     CMP #19,&$3D6
15912     U< IF
15913         ADD #1,&$3D6
15914     THEN
15915 ELSE
15916     BIT.B #$40,&$240
15917     0= IF
15918         CMP #3,&$3D6
15919         U>= IF
15920            SUB #1,&$3D6
15921         THEN
15922     THEN
15923 THEN
15924 RETI
15925 ENDCODE
15926
15927 HDNCODE RC5_INT
15928 $1800 @ 16000 = [IF]
15929     MOV #1,&$3A0
15930 [THEN]
15931 $1800 @ 24000 = [IF]
15932     MOV #2,&$3A0
15933 [THEN]
15934 MOV #1778,R9
15935 MOV #14,R10
15936 BEGIN
15937 MOV #%1011100100,&$380
15938     RRUM    #1,R9
15939     MOV     R9,R8
15940     RRUM    #1,R8
15941     ADD     R9,R8
15942     BEGIN   CMP R8,&$390
15943     U>= UNTIL
15944     BIT.B   #4,&$200
15945     ADDC    R11,R11
15946     MOV.B   &$200,&$208
15947     BIC.B   #4,&$20C
15948     SUB     #1,R10
15949 0<> WHILE
15950     ADD R9,R8
15951     BEGIN
15952         MOV &$390,R9
15953         CMP R8,R9
15954         U>= IF
15955         BIC #$30,&$380
15956         GOTO FW1
15957         THEN
15958         BIT.B #4,&$20C
15959     0<> UNTIL
15960 REPEAT
15961 BIC #$30,&$380
15962 RLAM    #1,R11
15963 MOV.B   R11,R9
15964 RRUM    #2,R9
15965 BIT     #$4000,R11
15966 0= IF   BIS #$40,R9
15967 THEN
15968 RRUM    #3,R11
15969 XOR     @R1,R11
15970 BIT     #$400,R11
15971 0= ?GOTO FW2
15972 XOR #$400,0(R1)
15973 SUB #8,R15
15974 MOV R14,6(R15)
15975 MOV &$1DDC,4(R15)
15976 MOV #$10,&$1DDC
15977 MOV R9,0(R15)
15978 MOV #0,R14
15979 LO2HI
15980     LCD_CLEAR
15981     <# # #S #36 HOLD #>
15982     ['] LCD_WRC IS EMIT
15983     TYPE
15984     ['] EMIT >BODY IS EMIT
15985 HI2LO
15986 MOV @R15+,&$1DDC
15987 MOV @R15+,R14
15988 FW1 FW2
15989     MOV @R1+,R2
15990     BIC #%1111_1000,R2
15991     MOV @R1+,R0
15992 ENDCODE
15993
15994
15995 HDNCODE STOP_R2L
15996 CMP #$40AA,&{RC5TOLCD}+8
15997 0<> IF
15998     BIC.B #4,&$20A
15999     BIC.B #4,&$20C
16000     MOV #0,&$3C0
16001     MOV #0,&$340
16002     MOV #0,&$342
16003     MOV #$40AA,&{RC5TOLCD}+8
16004     MOV &{RC5TOLCD}+10,&WARM+2
16005     MOV &{RC5TOLCD}+12,&$FFEA
16006     MOV &{RC5TOLCD}+14,&$FFDE
16007     MOV &{RC5TOLCD}+10,R0
16008 THEN 
16009 MOV @R1+,R0
16010 ENDCODE
16011
16012 CODE STOP
16013 BW1
16014 CALL #STOP_R2L
16015 COLON
16016 ECHO
16017 ." RC5toLCD is removed,"
16018 ."  type START to restart"
16019 ABORT" "
16020 ;
16021
16022 HDNCODE INI_R2L
16023 BIC #1,&$130
16024 MOV &$1808,R14
16025 CMP #$0E,R14
16026 0<> IF
16027     CMP #$0A,R14
16028     U>= ?GOTO BW1
16029 THEN
16030 BIT.B #$20,&$240
16031 0= ?GOTO BW1
16032 MOV #0,&$1808
16033 MOV #%10_1101_0100,&$3C0
16034 $1800 @ 16000 = [IF]
16035     MOV #1,&$3E0
16036 [THEN]
16037 $1800 @ 24000 = [IF]
16038     MOV #2,&$3E0
16039 [THEN]
16040     MOV #19,&$3D2
16041 MOV #%0110_0000,&$3C6
16042     MOV #10,&$3D6
16043     BIS.B #$20,&$204
16044     BIS.B #$20,&$20A
16045     BIS.B #7,&$245
16046     BIC.B #7,&$247
16047     BIS.B #$0F,&$224
16048     BIC.B #$0F,&$226
16049     BIS.B #4,&$20A
16050     BIC.B #4,&$20C
16051 MOV #%01_0001_0100,&$340
16052     MOV ##3276,&$352
16053     MOV #%10000,&$342
16054 COLON
16055     #1000 20_US
16056     %011 TOP_LCD
16057     #205 20_US
16058     %011 TOP_LCD
16059     #5 20_US
16060     %011 TOP_LCD
16061     #2 20_US
16062     %010 TOP_LCD
16063     #2 20_US
16064     %00101000 LCD_WRF
16065     %1000 LCD_WRF
16066     LCD_CLEAR
16067     %0110 LCD_WRF
16068     %1100 LCD_WRF
16069     LCD_CLEAR
16070     ['] LCD_HOME IS CR
16071     ['] LCD_WRC  IS EMIT
16072     CR ." I love you"
16073     ['] CR >BODY IS CR
16074     ['] EMIT >BODY IS EMIT
16075     ." RC5toLCD is running. Type STOP to quit"
16076     ABORT" "
16077 ;
16078
16079 CODE START
16080 CMP #$40AA,&{RC5TOLCD}+8
16081 0= IF
16082     MOV #STOP_R2L,&{RC5TOLCD}+8
16083     MOV &WARM+2,&{RC5TOLCD}+10
16084     MOV #INI_R2L,&WARM+2
16085     MOV &$FFEA,&{RC5TOLCD}+12
16086     MOV #WDT_INT,&$FFEA
16087     MOV &$FFDE,&{RC5TOLCD}+14
16088     MOV #RC5_INT,&$FFDE
16089     MOV #INI_R2L,R0
16090 THEN
16091 MOV @R13+,R0 
16092 ENDCODE 
16093
16094
16095 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
16096
16097 MARKER {RC5TOLCD}
16098 6 ALLOT
16099
16100
16101
16102 [UNDEFINED] CONSTANT [IF]
16103 : CONSTANT 
16104 CREATE
16105 HI2LO
16106 MOV R14,-2(R10)
16107 MOV @R15+,R14
16108 MOV @R1+,R13
16109 MOV @R13+,R0
16110 ENDCODE
16111 [THEN]
16112
16113 [UNDEFINED] STATE [IF]
16114 $1DBE CONSTANT STATE
16115 [THEN]
16116
16117 [UNDEFINED] = [IF]
16118 CODE =
16119 SUB @R15+,R14
16120 0<> IF
16121     AND #0,R14
16122     MOV @R13+,R0
16123 THEN
16124 XOR #-1,R14
16125 MOV @R13+,R0
16126 ENDCODE
16127 [THEN]
16128
16129 [UNDEFINED] IF [IF]
16130 CODE IF
16131 SUB #2,R15
16132 MOV R14,0(R15)
16133 MOV &$1DC6,R14
16134 ADD #4,&$1DC6
16135 MOV #$4034,0(R14)
16136 ADD #2,R14
16137 MOV @R13+,R0
16138 ENDCODE IMMEDIATE
16139
16140 CODE THEN
16141 MOV &$1DC6,0(R14)
16142 MOV @R15+,R14
16143 MOV @R13+,R0
16144 ENDCODE IMMEDIATE
16145 [THEN]
16146
16147 [UNDEFINED] ELSE [IF]
16148 CODE ELSE
16149 ADD #4,&$1DC6
16150 MOV &$1DC6,R10
16151 MOV #$403A,-4(R10)
16152 MOV R10,0(R14)
16153 SUB #2,R10
16154 MOV R10,R14
16155 MOV @R13+,R0
16156 ENDCODE IMMEDIATE
16157 [THEN]
16158
16159 [UNDEFINED] IS [IF]
16160
16161 CODE DEFER!
16162 MOV @R15+,2(R14)
16163 MOV @R15+,R14
16164 MOV @R13+,R0
16165 ENDCODE
16166
16167
16168 : IS
16169 STATE @
16170 IF  POSTPONE ['] POSTPONE DEFER! 
16171 ELSE ' DEFER! 
16172 THEN
16173 ; IMMEDIATE
16174 [THEN]
16175
16176 [UNDEFINED] >BODY [IF]
16177 CODE >BODY
16178 ADD #4,R14
16179 MOV @R13+,R0
16180 ENDCODE
16181 [THEN]
16182
16183
16184 CODE 20_US
16185 BEGIN
16186     BEGIN
16187         BIT #1,&$3C0
16188     0<> UNTIL
16189     BIC #1,&$3C0
16190     SUB #1,R14
16191 U< UNTIL
16192 MOV @R15+,R14
16193 MOV @R13+,R0
16194 ENDCODE
16195
16196 CODE TOP_LCD
16197     BIS.B #4,&$243
16198     BIT.B #1,&$241
16199 0= IF
16200     AND.B #$0F,R14
16201     MOV.B R14,&$222
16202     BIC.B #4,&$243
16203     MOV @R15+,R14
16204     MOV @R13+,R0
16205 THEN
16206     SUB #2,R15
16207     MOV R14,0(R15)
16208     BIC.B #4,&$243
16209     MOV.B &$220,R14
16210     AND.B #$0F,R14
16211     MOV @R13+,R0
16212 ENDCODE
16213
16214 CODE LCD_WRC
16215     BIS.B #2,&$243
16216 BW1 SUB #2,R15
16217     MOV R14,0(R15)
16218     RRUM #4,R14
16219     BIC.B #1,&$243
16220     BIS.B #$0F,&$224
16221 COLON
16222     TOP_LCD 2 20_US
16223     TOP_LCD 2 20_US 
16224 ;
16225
16226 CODE LCD_WRF
16227     BIC.B #2,&$243
16228     GOTO BW1
16229 ENDCODE
16230
16231 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
16232 : LCD_HOME $02 LCD_WRF 100 20_us ;
16233
16234
16235
16236 HDNCODE WDT_INT
16237 BIT.B #$20,&$240
16238 0= IF
16239     CMP #19,&$3D6
16240     U< IF
16241         ADD #1,&$3D6
16242     THEN
16243 ELSE
16244     BIT.B #$40,&$240
16245     0= IF
16246         CMP #3,&$3D6
16247         U>= IF
16248            SUB #1,&$3D6
16249         THEN
16250     THEN
16251 THEN
16252 RETI
16253 ENDCODE
16254
16255 HDNCODE RC5_INT
16256 $1800 @ 16000 = [IF]
16257     MOV #1,&$3A0
16258 [THEN]
16259 $1800 @ 24000 = [IF]
16260     MOV #2,&$3A0
16261 [THEN]
16262 MOV #1778,R9
16263 MOV #14,R10
16264 BEGIN
16265 MOV #%1011100100,&$380
16266     RRUM    #1,R9
16267     MOV     R9,R8
16268     RRUM    #1,R8
16269     ADD     R9,R8
16270     BEGIN   CMP R8,&$390
16271     U>= UNTIL
16272     BIT.B   #4,&$200
16273     ADDC    R11,R11
16274     MOV.B   &$200,&$208
16275     BIC.B   #4,&$20C
16276     SUB     #1,R10
16277 0<> WHILE
16278     ADD R9,R8
16279     BEGIN
16280         MOV &$390,R9
16281         CMP R8,R9
16282         U>= IF
16283         BIC #$30,&$380
16284         GOTO FW1
16285         THEN
16286         BIT.B #4,&$20C
16287     0<> UNTIL
16288 REPEAT
16289 BIC #$30,&$380
16290 RLAM    #1,R11
16291 MOV.B   R11,R9
16292 RRUM    #2,R9
16293 BIT     #$4000,R11
16294 0= IF   BIS #$40,R9
16295 THEN
16296 RRUM    #3,R11
16297 XOR     @R1,R11
16298 BIT     #$400,R11
16299 0= ?GOTO FW2
16300 XOR #$400,0(R1)
16301 SUB #8,R15
16302 MOV R14,6(R15)
16303 MOV &$1DDC,4(R15)
16304 MOV #$10,&$1DDC
16305 MOV R9,0(R15)
16306 MOV #0,R14
16307 LO2HI
16308     LCD_CLEAR
16309     <# # #S #36 HOLD #>
16310     ['] LCD_WRC IS EMIT
16311     TYPE
16312     ['] EMIT >BODY IS EMIT
16313 HI2LO
16314 MOV @R15+,&$1DDC
16315 MOV @R15+,R14
16316 FW1 FW2
16317     MOV @R1+,R2
16318     BIC #%1111_1000,R2
16319     MOV @R1+,R0
16320 ENDCODE
16321
16322
16323 HDNCODE STOP_R2L
16324 CMP #$40AA,&{RC5TOLCD}+8
16325 0<> IF
16326     BIC.B #4,&$20A
16327     BIC.B #4,&$20C
16328     MOV #0,&$3C0
16329     MOV #0,&$340
16330     MOV #0,&$342
16331     MOV #$40AA,&{RC5TOLCD}+8
16332     MOV &{RC5TOLCD}+10,&WARM+2
16333     MOV &{RC5TOLCD}+12,&$FFEA
16334     MOV &{RC5TOLCD}+14,&$FFDE
16335     MOV &{RC5TOLCD}+10,R0
16336 THEN 
16337 MOV @R1+,R0
16338 ENDCODE
16339
16340 CODE STOP
16341 BW1
16342 CALL #STOP_R2L
16343 COLON
16344 ECHO
16345 ." RC5toLCD is removed,"
16346 ."  type START to restart"
16347 ABORT" "
16348 ;
16349
16350 HDNCODE INI_R2L
16351 BIC #1,&$130
16352 MOV &$1808,R14
16353 CMP #$0E,R14
16354 0<> IF
16355     CMP #$0A,R14
16356     U>= ?GOTO BW1
16357 THEN
16358 BIT.B #$20,&$240
16359 0= ?GOTO BW1
16360 MOV #0,&$1808
16361 MOV #%10_1101_0100,&$3C0
16362 $1800 @ 16000 = [IF]
16363     MOV #1,&$3E0
16364 [THEN]
16365 $1800 @ 24000 = [IF]
16366     MOV #2,&$3E0
16367 [THEN]
16368     MOV #19,&$3D2
16369 MOV #%0110_0000,&$3C6
16370     MOV #10,&$3D6
16371     BIS.B #$20,&$204
16372     BIS.B #$20,&$20A
16373     BIS.B #7,&$245
16374     BIC.B #7,&$247
16375     BIS.B #$0F,&$224
16376     BIC.B #$0F,&$226
16377     BIS.B #4,&$20A
16378     BIC.B #4,&$20C
16379 MOV #%01_0001_0100,&$340
16380     MOV ##3276,&$352
16381     MOV #%10000,&$342
16382 COLON
16383     #1000 20_US
16384     %011 TOP_LCD
16385     #205 20_US
16386     %011 TOP_LCD
16387     #5 20_US
16388     %011 TOP_LCD
16389     #2 20_US
16390     %010 TOP_LCD
16391     #2 20_US
16392     %00101000 LCD_WRF
16393     %1000 LCD_WRF
16394     LCD_CLEAR
16395     %0110 LCD_WRF
16396     %1100 LCD_WRF
16397     LCD_CLEAR
16398     ['] LCD_HOME IS CR
16399     ['] LCD_WRC  IS EMIT
16400     CR ." I love you"
16401     ['] CR >BODY IS CR
16402     ['] EMIT >BODY IS EMIT
16403     ." RC5toLCD is running. Type STOP to quit"
16404     ABORT" "
16405 ;
16406
16407 CODE START
16408 CMP #$40AA,&{RC5TOLCD}+8
16409 0= IF
16410     MOV #STOP_R2L,&{RC5TOLCD}+8
16411     MOV &WARM+2,&{RC5TOLCD}+10
16412     MOV #INI_R2L,&WARM+2
16413     MOV &$FFEA,&{RC5TOLCD}+12
16414     MOV #WDT_INT,&$FFEA
16415     MOV &$FFDE,&{RC5TOLCD}+14
16416     MOV #RC5_INT,&$FFDE
16417     MOV #INI_R2L,R0
16418 THEN
16419 MOV @R13+,R0 
16420 ENDCODE 
16421
16422
16423 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
16424
16425 MARKER {RC5TOLCD}
16426 6 ALLOT
16427
16428
16429
16430 [UNDEFINED] CONSTANT [IF]
16431 : CONSTANT 
16432 CREATE
16433 HI2LO
16434 MOV R14,-2(R10)
16435 MOV @R15+,R14
16436 MOV @R1+,R13
16437 MOV @R13+,R0
16438 ENDCODE
16439 [THEN]
16440
16441 [UNDEFINED] STATE [IF]
16442 $1DBE CONSTANT STATE
16443 [THEN]
16444
16445 [UNDEFINED] = [IF]
16446 CODE =
16447 SUB @R15+,R14
16448 0<> IF
16449     AND #0,R14
16450     MOV @R13+,R0
16451 THEN
16452 XOR #-1,R14
16453 MOV @R13+,R0
16454 ENDCODE
16455 [THEN]
16456
16457 [UNDEFINED] IF [IF]
16458 CODE IF
16459 SUB #2,R15
16460 MOV R14,0(R15)
16461 MOV &$1DC6,R14
16462 ADD #4,&$1DC6
16463 MOV #$4034,0(R14)
16464 ADD #2,R14
16465 MOV @R13+,R0
16466 ENDCODE IMMEDIATE
16467
16468 CODE THEN
16469 MOV &$1DC6,0(R14)
16470 MOV @R15+,R14
16471 MOV @R13+,R0
16472 ENDCODE IMMEDIATE
16473 [THEN]
16474
16475 [UNDEFINED] ELSE [IF]
16476 CODE ELSE
16477 ADD #4,&$1DC6
16478 MOV &$1DC6,R10
16479 MOV #$403A,-4(R10)
16480 MOV R10,0(R14)
16481 SUB #2,R10
16482 MOV R10,R14
16483 MOV @R13+,R0
16484 ENDCODE IMMEDIATE
16485 [THEN]
16486
16487 [UNDEFINED] IS [IF]
16488
16489 CODE DEFER!
16490 MOV @R15+,2(R14)
16491 MOV @R15+,R14
16492 MOV @R13+,R0
16493 ENDCODE
16494
16495
16496 : IS
16497 STATE @
16498 IF  POSTPONE ['] POSTPONE DEFER! 
16499 ELSE ' DEFER! 
16500 THEN
16501 ; IMMEDIATE
16502 [THEN]
16503
16504 [UNDEFINED] >BODY [IF]
16505 CODE >BODY
16506 ADD #4,R14
16507 MOV @R13+,R0
16508 ENDCODE
16509 [THEN]
16510
16511
16512 CODE 20_US
16513 BEGIN
16514     BEGIN
16515         BIT #1,&$3C0
16516     0<> UNTIL
16517     BIC #1,&$3C0
16518     SUB #1,R14
16519 U< UNTIL
16520 MOV @R15+,R14
16521 MOV @R13+,R0
16522 ENDCODE
16523
16524 CODE TOP_LCD
16525     BIS.B #4,&$243
16526     BIT.B #1,&$241
16527 0= IF
16528     AND.B #$0F,R14
16529     MOV.B R14,&$222
16530     BIC.B #4,&$243
16531     MOV @R15+,R14
16532     MOV @R13+,R0
16533 THEN
16534     SUB #2,R15
16535     MOV R14,0(R15)
16536     BIC.B #4,&$243
16537     MOV.B &$220,R14
16538     AND.B #$0F,R14
16539     MOV @R13+,R0
16540 ENDCODE
16541
16542 CODE LCD_WRC
16543     BIS.B #2,&$243
16544 BW1 SUB #2,R15
16545     MOV R14,0(R15)
16546     RRUM #4,R14
16547     BIC.B #1,&$243
16548     BIS.B #$0F,&$224
16549 COLON
16550     TOP_LCD 2 20_US
16551     TOP_LCD 2 20_US 
16552 ;
16553
16554 CODE LCD_WRF
16555     BIC.B #2,&$243
16556     GOTO BW1
16557 ENDCODE
16558
16559 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
16560 : LCD_HOME $02 LCD_WRF 100 20_us ;
16561
16562
16563
16564 HDNCODE WDT_INT
16565 BIT.B #$20,&$240
16566 0= IF
16567     CMP #19,&$3D6
16568     U< IF
16569         ADD #1,&$3D6
16570     THEN
16571 ELSE
16572     BIT.B #$40,&$240
16573     0= IF
16574         CMP #3,&$3D6
16575         U>= IF
16576            SUB #1,&$3D6
16577         THEN
16578     THEN
16579 THEN
16580 RETI
16581 ENDCODE
16582
16583 HDNCODE RC5_INT
16584 $1800 @ 16000 = [IF]
16585     MOV #1,&$3A0
16586 [THEN]
16587 $1800 @ 24000 = [IF]
16588     MOV #2,&$3A0
16589 [THEN]
16590 MOV #1778,R9
16591 MOV #14,R10
16592 BEGIN
16593 MOV #%1011100100,&$380
16594     RRUM    #1,R9
16595     MOV     R9,R8
16596     RRUM    #1,R8
16597     ADD     R9,R8
16598     BEGIN   CMP R8,&$390
16599     U>= UNTIL
16600     BIT.B   #4,&$200
16601     ADDC    R11,R11
16602     MOV.B   &$200,&$208
16603     BIC.B   #4,&$20C
16604     SUB     #1,R10
16605 0<> WHILE
16606     ADD R9,R8
16607     BEGIN
16608         MOV &$390,R9
16609         CMP R8,R9
16610         U>= IF
16611         BIC #$30,&$380
16612         GOTO FW1
16613         THEN
16614         BIT.B #4,&$20C
16615     0<> UNTIL
16616 REPEAT
16617 BIC #$30,&$380
16618 RLAM    #1,R11
16619 MOV.B   R11,R9
16620 RRUM    #2,R9
16621 BIT     #$4000,R11
16622 0= IF   BIS #$40,R9
16623 THEN
16624 RRUM    #3,R11
16625 XOR     @R1,R11
16626 BIT     #$400,R11
16627 0= ?GOTO FW2
16628 XOR #$400,0(R1)
16629 SUB #8,R15
16630 MOV R14,6(R15)
16631 MOV &$1DDC,4(R15)
16632 MOV #$10,&$1DDC
16633 MOV R9,0(R15)
16634 MOV #0,R14
16635 LO2HI
16636     LCD_CLEAR
16637     <# # #S #36 HOLD #>
16638     ['] LCD_WRC IS EMIT
16639     TYPE
16640     ['] EMIT >BODY IS EMIT
16641 HI2LO
16642 MOV @R15+,&$1DDC
16643 MOV @R15+,R14
16644 FW1 FW2
16645     MOV @R1+,R2
16646     BIC #%1111_1000,R2
16647     MOV @R1+,R0
16648 ENDCODE
16649
16650
16651 HDNCODE STOP_R2L
16652 CMP #$40AA,&{RC5TOLCD}+8
16653 0<> IF
16654     BIC.B #4,&$20A
16655     BIC.B #4,&$20C
16656     MOV #0,&$3C0
16657     MOV #0,&$340
16658     MOV #0,&$342
16659     MOV #$40AA,&{RC5TOLCD}+8
16660     MOV &{RC5TOLCD}+10,&WARM+2
16661     MOV &{RC5TOLCD}+12,&$FFEA
16662     MOV &{RC5TOLCD}+14,&$FFDE
16663     MOV &{RC5TOLCD}+10,R0
16664 THEN 
16665 MOV @R1+,R0
16666 ENDCODE
16667
16668 CODE STOP
16669 BW1
16670 CALL #STOP_R2L
16671 COLON
16672 ECHO
16673 ." RC5toLCD is removed,"
16674 ."  type START to restart"
16675 ABORT" "
16676 ;
16677
16678 HDNCODE INI_R2L
16679 BIC #1,&$130
16680 MOV &$1808,R14
16681 CMP #$0E,R14
16682 0<> IF
16683     CMP #$0A,R14
16684     U>= ?GOTO BW1
16685 THEN
16686 BIT.B #$20,&$240
16687 0= ?GOTO BW1
16688 MOV #0,&$1808
16689 MOV #%10_1101_0100,&$3C0
16690 $1800 @ 16000 = [IF]
16691     MOV #1,&$3E0
16692 [THEN]
16693 $1800 @ 24000 = [IF]
16694     MOV #2,&$3E0
16695 [THEN]
16696     MOV #19,&$3D2
16697 MOV #%0110_0000,&$3C6
16698     MOV #10,&$3D6
16699     BIS.B #$20,&$204
16700     BIS.B #$20,&$20A
16701     BIS.B #7,&$245
16702     BIC.B #7,&$247
16703     BIS.B #$0F,&$224
16704     BIC.B #$0F,&$226
16705     BIS.B #4,&$20A
16706     BIC.B #4,&$20C
16707 MOV #%01_0001_0100,&$340
16708     MOV ##3276,&$352
16709     MOV #%10000,&$342
16710 COLON
16711     #1000 20_US
16712     %011 TOP_LCD
16713     #205 20_US
16714     %011 TOP_LCD
16715     #5 20_US
16716     %011 TOP_LCD
16717     #2 20_US
16718     %010 TOP_LCD
16719     #2 20_US
16720     %00101000 LCD_WRF
16721     %1000 LCD_WRF
16722     LCD_CLEAR
16723     %0110 LCD_WRF
16724     %1100 LCD_WRF
16725     LCD_CLEAR
16726     ['] LCD_HOME IS CR
16727     ['] LCD_WRC  IS EMIT
16728     CR ." I love you"
16729     ['] CR >BODY IS CR
16730     ['] EMIT >BODY IS EMIT
16731     ." RC5toLCD is running. Type STOP to quit"
16732     ABORT" "
16733 ;
16734
16735 CODE START
16736 CMP #$40AA,&{RC5TOLCD}+8
16737 0= IF
16738     MOV #STOP_R2L,&{RC5TOLCD}+8
16739     MOV &WARM+2,&{RC5TOLCD}+10
16740     MOV #INI_R2L,&WARM+2
16741     MOV &$FFEA,&{RC5TOLCD}+12
16742     MOV #WDT_INT,&$FFEA
16743     MOV &$FFDE,&{RC5TOLCD}+14
16744     MOV #RC5_INT,&$FFDE
16745     MOV #INI_R2L,R0
16746 THEN
16747 MOV @R13+,R0 
16748 ENDCODE 
16749
16750
16751 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
16752
16753 MARKER {RC5TOLCD}
16754 6 ALLOT
16755
16756
16757
16758 [UNDEFINED] CONSTANT [IF]
16759 : CONSTANT 
16760 CREATE
16761 HI2LO
16762 MOV R14,-2(R10)
16763 MOV @R15+,R14
16764 MOV @R1+,R13
16765 MOV @R13+,R0
16766 ENDCODE
16767 [THEN]
16768
16769 [UNDEFINED] STATE [IF]
16770 $1DBE CONSTANT STATE
16771 [THEN]
16772
16773 [UNDEFINED] = [IF]
16774 CODE =
16775 SUB @R15+,R14
16776 0<> IF
16777     AND #0,R14
16778     MOV @R13+,R0
16779 THEN
16780 XOR #-1,R14
16781 MOV @R13+,R0
16782 ENDCODE
16783 [THEN]
16784
16785 [UNDEFINED] IF [IF]
16786 CODE IF
16787 SUB #2,R15
16788 MOV R14,0(R15)
16789 MOV &$1DC6,R14
16790 ADD #4,&$1DC6
16791 MOV #$4034,0(R14)
16792 ADD #2,R14
16793 MOV @R13+,R0
16794 ENDCODE IMMEDIATE
16795
16796 CODE THEN
16797 MOV &$1DC6,0(R14)
16798 MOV @R15+,R14
16799 MOV @R13+,R0
16800 ENDCODE IMMEDIATE
16801 [THEN]
16802
16803 [UNDEFINED] ELSE [IF]
16804 CODE ELSE
16805 ADD #4,&$1DC6
16806 MOV &$1DC6,R10
16807 MOV #$403A,-4(R10)
16808 MOV R10,0(R14)
16809 SUB #2,R10
16810 MOV R10,R14
16811 MOV @R13+,R0
16812 ENDCODE IMMEDIATE
16813 [THEN]
16814
16815 [UNDEFINED] IS [IF]
16816
16817 CODE DEFER!
16818 MOV @R15+,2(R14)
16819 MOV @R15+,R14
16820 MOV @R13+,R0
16821 ENDCODE
16822
16823
16824 : IS
16825 STATE @
16826 IF  POSTPONE ['] POSTPONE DEFER! 
16827 ELSE ' DEFER! 
16828 THEN
16829 ; IMMEDIATE
16830 [THEN]
16831
16832 [UNDEFINED] >BODY [IF]
16833 CODE >BODY
16834 ADD #4,R14
16835 MOV @R13+,R0
16836 ENDCODE
16837 [THEN]
16838
16839
16840 CODE 20_US
16841 BEGIN
16842     BEGIN
16843         BIT #1,&$3C0
16844     0<> UNTIL
16845     BIC #1,&$3C0
16846     SUB #1,R14
16847 U< UNTIL
16848 MOV @R15+,R14
16849 MOV @R13+,R0
16850 ENDCODE
16851
16852 CODE TOP_LCD
16853     BIS.B #4,&$243
16854     BIT.B #1,&$241
16855 0= IF
16856     AND.B #$0F,R14
16857     MOV.B R14,&$222
16858     BIC.B #4,&$243
16859     MOV @R15+,R14
16860     MOV @R13+,R0
16861 THEN
16862     SUB #2,R15
16863     MOV R14,0(R15)
16864     BIC.B #4,&$243
16865     MOV.B &$220,R14
16866     AND.B #$0F,R14
16867     MOV @R13+,R0
16868 ENDCODE
16869
16870 CODE LCD_WRC
16871     BIS.B #2,&$243
16872 BW1 SUB #2,R15
16873     MOV R14,0(R15)
16874     RRUM #4,R14
16875     BIC.B #1,&$243
16876     BIS.B #$0F,&$224
16877 COLON
16878     TOP_LCD 2 20_US
16879     TOP_LCD 2 20_US 
16880 ;
16881
16882 CODE LCD_WRF
16883     BIC.B #2,&$243
16884     GOTO BW1
16885 ENDCODE
16886
16887 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
16888 : LCD_HOME $02 LCD_WRF 100 20_us ;
16889
16890
16891
16892 HDNCODE WDT_INT
16893 BIT.B #$20,&$240
16894 0= IF
16895     CMP #19,&$3D6
16896     U< IF
16897         ADD #1,&$3D6
16898     THEN
16899 ELSE
16900     BIT.B #$40,&$240
16901     0= IF
16902         CMP #3,&$3D6
16903         U>= IF
16904            SUB #1,&$3D6
16905         THEN
16906     THEN
16907 THEN
16908 RETI
16909 ENDCODE
16910
16911 HDNCODE RC5_INT
16912 $1800 @ 16000 = [IF]
16913     MOV #1,&$3A0
16914 [THEN]
16915 $1800 @ 24000 = [IF]
16916     MOV #2,&$3A0
16917 [THEN]
16918 MOV #1778,R9
16919 MOV #14,R10
16920 BEGIN
16921 MOV #%1011100100,&$380
16922     RRUM    #1,R9
16923     MOV     R9,R8
16924     RRUM    #1,R8
16925     ADD     R9,R8
16926     BEGIN   CMP R8,&$390
16927     U>= UNTIL
16928     BIT.B   #4,&$200
16929     ADDC    R11,R11
16930     MOV.B   &$200,&$208
16931     BIC.B   #4,&$20C
16932     SUB     #1,R10
16933 0<> WHILE
16934     ADD R9,R8
16935     BEGIN
16936         MOV &$390,R9
16937         CMP R8,R9
16938         U>= IF
16939         BIC #$30,&$380
16940         GOTO FW1
16941         THEN
16942         BIT.B #4,&$20C
16943     0<> UNTIL
16944 REPEAT
16945 BIC #$30,&$380
16946 RLAM    #1,R11
16947 MOV.B   R11,R9
16948 RRUM    #2,R9
16949 BIT     #$4000,R11
16950 0= IF   BIS #$40,R9
16951 THEN
16952 RRUM    #3,R11
16953 XOR     @R1,R11
16954 BIT     #$400,R11
16955 0= ?GOTO FW2
16956 XOR #$400,0(R1)
16957 SUB #8,R15
16958 MOV R14,6(R15)
16959 MOV &$1DDC,4(R15)
16960 MOV #$10,&$1DDC
16961 MOV R9,0(R15)
16962 MOV #0,R14
16963 LO2HI
16964     LCD_CLEAR
16965     <# # #S #36 HOLD #>
16966     ['] LCD_WRC IS EMIT
16967     TYPE
16968     ['] EMIT >BODY IS EMIT
16969 HI2LO
16970 MOV @R15+,&$1DDC
16971 MOV @R15+,R14
16972 FW1 FW2
16973     MOV @R1+,R2
16974     BIC #%1111_1000,R2
16975     MOV @R1+,R0
16976 ENDCODE
16977
16978
16979 HDNCODE STOP_R2L
16980 CMP #$40AA,&{RC5TOLCD}+8
16981 0<> IF
16982     BIC.B #4,&$20A
16983     BIC.B #4,&$20C
16984     MOV #0,&$3C0
16985     MOV #0,&$340
16986     MOV #0,&$342
16987     MOV #$40AA,&{RC5TOLCD}+8
16988     MOV &{RC5TOLCD}+10,&WARM+2
16989     MOV &{RC5TOLCD}+12,&$FFEA
16990     MOV &{RC5TOLCD}+14,&$FFDE
16991     MOV &{RC5TOLCD}+10,R0
16992 THEN 
16993 MOV @R1+,R0
16994 ENDCODE
16995
16996 CODE STOP
16997 BW1
16998 CALL #STOP_R2L
16999 COLON
17000 ECHO
17001 ." RC5toLCD is removed,"
17002 ."  type START to restart"
17003 ABORT" "
17004 ;
17005
17006 HDNCODE INI_R2L
17007 BIC #1,&$130
17008 MOV &$1808,R14
17009 CMP #$0E,R14
17010 0<> IF
17011     CMP #$0A,R14
17012     U>= ?GOTO BW1
17013 THEN
17014 BIT.B #$20,&$240
17015 0= ?GOTO BW1
17016 MOV #0,&$1808
17017 MOV #%10_1101_0100,&$3C0
17018 $1800 @ 16000 = [IF]
17019     MOV #1,&$3E0
17020 [THEN]
17021 $1800 @ 24000 = [IF]
17022     MOV #2,&$3E0
17023 [THEN]
17024     MOV #19,&$3D2
17025 MOV #%0110_0000,&$3C6
17026     MOV #10,&$3D6
17027     BIS.B #$20,&$204
17028     BIS.B #$20,&$20A
17029     BIS.B #7,&$245
17030     BIC.B #7,&$247
17031     BIS.B #$0F,&$224
17032     BIC.B #$0F,&$226
17033     BIS.B #4,&$20A
17034     BIC.B #4,&$20C
17035 MOV #%01_0001_0100,&$340
17036     MOV ##3276,&$352
17037     MOV #%10000,&$342
17038 COLON
17039     #1000 20_US
17040     %011 TOP_LCD
17041     #205 20_US
17042     %011 TOP_LCD
17043     #5 20_US
17044     %011 TOP_LCD
17045     #2 20_US
17046     %010 TOP_LCD
17047     #2 20_US
17048     %00101000 LCD_WRF
17049     %1000 LCD_WRF
17050     LCD_CLEAR
17051     %0110 LCD_WRF
17052     %1100 LCD_WRF
17053     LCD_CLEAR
17054     ['] LCD_HOME IS CR
17055     ['] LCD_WRC  IS EMIT
17056     CR ." I love you"
17057     ['] CR >BODY IS CR
17058     ['] EMIT >BODY IS EMIT
17059     ." RC5toLCD is running. Type STOP to quit"
17060     ABORT" "
17061 ;
17062
17063 CODE START
17064 CMP #$40AA,&{RC5TOLCD}+8
17065 0= IF
17066     MOV #STOP_R2L,&{RC5TOLCD}+8
17067     MOV &WARM+2,&{RC5TOLCD}+10
17068     MOV #INI_R2L,&WARM+2
17069     MOV &$FFEA,&{RC5TOLCD}+12
17070     MOV #WDT_INT,&$FFEA
17071     MOV &$FFDE,&{RC5TOLCD}+14
17072     MOV #RC5_INT,&$FFDE
17073     MOV #INI_R2L,R0
17074 THEN
17075 MOV @R13+,R0 
17076 ENDCODE 
17077
17078
17079 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
17080
17081 MARKER {RC5TOLCD}
17082 6 ALLOT
17083
17084
17085
17086 [UNDEFINED] CONSTANT [IF]
17087 : CONSTANT 
17088 CREATE
17089 HI2LO
17090 MOV R14,-2(R10)
17091 MOV @R15+,R14
17092 MOV @R1+,R13
17093 MOV @R13+,R0
17094 ENDCODE
17095 [THEN]
17096
17097 [UNDEFINED] STATE [IF]
17098 $1DBE CONSTANT STATE
17099 [THEN]
17100
17101 [UNDEFINED] = [IF]
17102 CODE =
17103 SUB @R15+,R14
17104 0<> IF
17105     AND #0,R14
17106     MOV @R13+,R0
17107 THEN
17108 XOR #-1,R14
17109 MOV @R13+,R0
17110 ENDCODE
17111 [THEN]
17112
17113 [UNDEFINED] IF [IF]
17114 CODE IF
17115 SUB #2,R15
17116 MOV R14,0(R15)
17117 MOV &$1DC6,R14
17118 ADD #4,&$1DC6
17119 MOV #$4034,0(R14)
17120 ADD #2,R14
17121 MOV @R13+,R0
17122 ENDCODE IMMEDIATE
17123
17124 CODE THEN
17125 MOV &$1DC6,0(R14)
17126 MOV @R15+,R14
17127 MOV @R13+,R0
17128 ENDCODE IMMEDIATE
17129 [THEN]
17130
17131 [UNDEFINED] ELSE [IF]
17132 CODE ELSE
17133 ADD #4,&$1DC6
17134 MOV &$1DC6,R10
17135 MOV #$403A,-4(R10)
17136 MOV R10,0(R14)
17137 SUB #2,R10
17138 MOV R10,R14
17139 MOV @R13+,R0
17140 ENDCODE IMMEDIATE
17141 [THEN]
17142
17143 [UNDEFINED] IS [IF]
17144
17145 CODE DEFER!
17146 MOV @R15+,2(R14)
17147 MOV @R15+,R14
17148 MOV @R13+,R0
17149 ENDCODE
17150
17151
17152 : IS
17153 STATE @
17154 IF  POSTPONE ['] POSTPONE DEFER! 
17155 ELSE ' DEFER! 
17156 THEN
17157 ; IMMEDIATE
17158 [THEN]
17159
17160 [UNDEFINED] >BODY [IF]
17161 CODE >BODY
17162 ADD #4,R14
17163 MOV @R13+,R0
17164 ENDCODE
17165 [THEN]
17166
17167
17168 CODE 20_US
17169 BEGIN
17170     BEGIN
17171         BIT #1,&$3C0
17172     0<> UNTIL
17173     BIC #1,&$3C0
17174     SUB #1,R14
17175 U< UNTIL
17176 MOV @R15+,R14
17177 MOV @R13+,R0
17178 ENDCODE
17179
17180 CODE TOP_LCD
17181     BIS.B #4,&$243
17182     BIT.B #1,&$241
17183 0= IF
17184     AND.B #$0F,R14
17185     MOV.B R14,&$222
17186     BIC.B #4,&$243
17187     MOV @R15+,R14
17188     MOV @R13+,R0
17189 THEN
17190     SUB #2,R15
17191     MOV R14,0(R15)
17192     BIC.B #4,&$243
17193     MOV.B &$220,R14
17194     AND.B #$0F,R14
17195     MOV @R13+,R0
17196 ENDCODE
17197
17198 CODE LCD_WRC
17199     BIS.B #2,&$243
17200 BW1 SUB #2,R15
17201     MOV R14,0(R15)
17202     RRUM #4,R14
17203     BIC.B #1,&$243
17204     BIS.B #$0F,&$224
17205 COLON
17206     TOP_LCD 2 20_US
17207     TOP_LCD 2 20_US 
17208 ;
17209
17210 CODE LCD_WRF
17211     BIC.B #2,&$243
17212     GOTO BW1
17213 ENDCODE
17214
17215 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
17216 : LCD_HOME $02 LCD_WRF 100 20_us ;
17217
17218
17219
17220 HDNCODE WDT_INT
17221 BIT.B #$20,&$240
17222 0= IF
17223     CMP #19,&$3D6
17224     U< IF
17225         ADD #1,&$3D6
17226     THEN
17227 ELSE
17228     BIT.B #$40,&$240
17229     0= IF
17230         CMP #3,&$3D6
17231         U>= IF
17232            SUB #1,&$3D6
17233         THEN
17234     THEN
17235 THEN
17236 RETI
17237 ENDCODE
17238
17239 HDNCODE RC5_INT
17240 $1800 @ 16000 = [IF]
17241     MOV #1,&$3A0
17242 [THEN]
17243 $1800 @ 24000 = [IF]
17244     MOV #2,&$3A0
17245 [THEN]
17246 MOV #1778,R9
17247 MOV #14,R10
17248 BEGIN
17249 MOV #%1011100100,&$380
17250     RRUM    #1,R9
17251     MOV     R9,R8
17252     RRUM    #1,R8
17253     ADD     R9,R8
17254     BEGIN   CMP R8,&$390
17255     U>= UNTIL
17256     BIT.B   #4,&$200
17257     ADDC    R11,R11
17258     MOV.B   &$200,&$208
17259     BIC.B   #4,&$20C
17260     SUB     #1,R10
17261 0<> WHILE
17262     ADD R9,R8
17263     BEGIN
17264         MOV &$390,R9
17265         CMP R8,R9
17266         U>= IF
17267         BIC #$30,&$380
17268         GOTO FW1
17269         THEN
17270         BIT.B #4,&$20C
17271     0<> UNTIL
17272 REPEAT
17273 BIC #$30,&$380
17274 RLAM    #1,R11
17275 MOV.B   R11,R9
17276 RRUM    #2,R9
17277 BIT     #$4000,R11
17278 0= IF   BIS #$40,R9
17279 THEN
17280 RRUM    #3,R11
17281 XOR     @R1,R11
17282 BIT     #$400,R11
17283 0= ?GOTO FW2
17284 XOR #$400,0(R1)
17285 SUB #8,R15
17286 MOV R14,6(R15)
17287 MOV &$1DDC,4(R15)
17288 MOV #$10,&$1DDC
17289 MOV R9,0(R15)
17290 MOV #0,R14
17291 LO2HI
17292     LCD_CLEAR
17293     <# # #S #36 HOLD #>
17294     ['] LCD_WRC IS EMIT
17295     TYPE
17296     ['] EMIT >BODY IS EMIT
17297 HI2LO
17298 MOV @R15+,&$1DDC
17299 MOV @R15+,R14
17300 FW1 FW2
17301     MOV @R1+,R2
17302     BIC #%1111_1000,R2
17303     MOV @R1+,R0
17304 ENDCODE
17305
17306
17307 HDNCODE STOP_R2L
17308 CMP #$40AA,&{RC5TOLCD}+8
17309 0<> IF
17310     BIC.B #4,&$20A
17311     BIC.B #4,&$20C
17312     MOV #0,&$3C0
17313     MOV #0,&$340
17314     MOV #0,&$342
17315     MOV #$40AA,&{RC5TOLCD}+8
17316     MOV &{RC5TOLCD}+10,&WARM+2
17317     MOV &{RC5TOLCD}+12,&$FFEA
17318     MOV &{RC5TOLCD}+14,&$FFDE
17319     MOV &{RC5TOLCD}+10,R0
17320 THEN 
17321 MOV @R1+,R0
17322 ENDCODE
17323
17324 CODE STOP
17325 BW1
17326 CALL #STOP_R2L
17327 COLON
17328 ECHO
17329 ." RC5toLCD is removed,"
17330 ."  type START to restart"
17331 ABORT" "
17332 ;
17333
17334 HDNCODE INI_R2L
17335 BIC #1,&$130
17336 MOV &$1808,R14
17337 CMP #$0E,R14
17338 0<> IF
17339     CMP #$0A,R14
17340     U>= ?GOTO BW1
17341 THEN
17342 BIT.B #$20,&$240
17343 0= ?GOTO BW1
17344 MOV #0,&$1808
17345 MOV #%10_1101_0100,&$3C0
17346 $1800 @ 16000 = [IF]
17347     MOV #1,&$3E0
17348 [THEN]
17349 $1800 @ 24000 = [IF]
17350     MOV #2,&$3E0
17351 [THEN]
17352     MOV #19,&$3D2
17353 MOV #%0110_0000,&$3C6
17354     MOV #10,&$3D6
17355     BIS.B #$20,&$204
17356     BIS.B #$20,&$20A
17357     BIS.B #7,&$245
17358     BIC.B #7,&$247
17359     BIS.B #$0F,&$224
17360     BIC.B #$0F,&$226
17361     BIS.B #4,&$20A
17362     BIC.B #4,&$20C
17363 MOV #%01_0001_0100,&$340
17364     MOV ##3276,&$352
17365     MOV #%10000,&$342
17366 COLON
17367     #1000 20_US
17368     %011 TOP_LCD
17369     #205 20_US
17370     %011 TOP_LCD
17371     #5 20_US
17372     %011 TOP_LCD
17373     #2 20_US
17374     %010 TOP_LCD
17375     #2 20_US
17376     %00101000 LCD_WRF
17377     %1000 LCD_WRF
17378     LCD_CLEAR
17379     %0110 LCD_WRF
17380     %1100 LCD_WRF
17381     LCD_CLEAR
17382     ['] LCD_HOME IS CR
17383     ['] LCD_WRC  IS EMIT
17384     CR ." I love you"
17385     ['] CR >BODY IS CR
17386     ['] EMIT >BODY IS EMIT
17387     ." RC5toLCD is running. Type STOP to quit"
17388     ABORT" "
17389 ;
17390
17391 CODE START
17392 CMP #$40AA,&{RC5TOLCD}+8
17393 0= IF
17394     MOV #STOP_R2L,&{RC5TOLCD}+8
17395     MOV &WARM+2,&{RC5TOLCD}+10
17396     MOV #INI_R2L,&WARM+2
17397     MOV &$FFEA,&{RC5TOLCD}+12
17398     MOV #WDT_INT,&$FFEA
17399     MOV &$FFDE,&{RC5TOLCD}+14
17400     MOV #RC5_INT,&$FFDE
17401     MOV #INI_R2L,R0
17402 THEN
17403 MOV @R13+,R0 
17404 ENDCODE 
17405
17406
17407 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
17408
17409 MARKER {RC5TOLCD}
17410 6 ALLOT
17411
17412
17413
17414 [UNDEFINED] CONSTANT [IF]
17415 : CONSTANT 
17416 CREATE
17417 HI2LO
17418 MOV R14,-2(R10)
17419 MOV @R15+,R14
17420 MOV @R1+,R13
17421 MOV @R13+,R0
17422 ENDCODE
17423 [THEN]
17424
17425 [UNDEFINED] STATE [IF]
17426 $1DBE CONSTANT STATE
17427 [THEN]
17428
17429 [UNDEFINED] = [IF]
17430 CODE =
17431 SUB @R15+,R14
17432 0<> IF
17433     AND #0,R14
17434     MOV @R13+,R0
17435 THEN
17436 XOR #-1,R14
17437 MOV @R13+,R0
17438 ENDCODE
17439 [THEN]
17440
17441 [UNDEFINED] IF [IF]
17442 CODE IF
17443 SUB #2,R15
17444 MOV R14,0(R15)
17445 MOV &$1DC6,R14
17446 ADD #4,&$1DC6
17447 MOV #$4034,0(R14)
17448 ADD #2,R14
17449 MOV @R13+,R0
17450 ENDCODE IMMEDIATE
17451
17452 CODE THEN
17453 MOV &$1DC6,0(R14)
17454 MOV @R15+,R14
17455 MOV @R13+,R0
17456 ENDCODE IMMEDIATE
17457 [THEN]
17458
17459 [UNDEFINED] ELSE [IF]
17460 CODE ELSE
17461 ADD #4,&$1DC6
17462 MOV &$1DC6,R10
17463 MOV #$403A,-4(R10)
17464 MOV R10,0(R14)
17465 SUB #2,R10
17466 MOV R10,R14
17467 MOV @R13+,R0
17468 ENDCODE IMMEDIATE
17469 [THEN]
17470
17471 [UNDEFINED] IS [IF]
17472
17473 CODE DEFER!
17474 MOV @R15+,2(R14)
17475 MOV @R15+,R14
17476 MOV @R13+,R0
17477 ENDCODE
17478
17479
17480 : IS
17481 STATE @
17482 IF  POSTPONE ['] POSTPONE DEFER! 
17483 ELSE ' DEFER! 
17484 THEN
17485 ; IMMEDIATE
17486 [THEN]
17487
17488 [UNDEFINED] >BODY [IF]
17489 CODE >BODY
17490 ADD #4,R14
17491 MOV @R13+,R0
17492 ENDCODE
17493 [THEN]
17494
17495
17496 CODE 20_US
17497 BEGIN
17498     BEGIN
17499         BIT #1,&$3C0
17500     0<> UNTIL
17501     BIC #1,&$3C0
17502     SUB #1,R14
17503 U< UNTIL
17504 MOV @R15+,R14
17505 MOV @R13+,R0
17506 ENDCODE
17507
17508 CODE TOP_LCD
17509     BIS.B #4,&$243
17510     BIT.B #1,&$241
17511 0= IF
17512     AND.B #$0F,R14
17513     MOV.B R14,&$222
17514     BIC.B #4,&$243
17515     MOV @R15+,R14
17516     MOV @R13+,R0
17517 THEN
17518     SUB #2,R15
17519     MOV R14,0(R15)
17520     BIC.B #4,&$243
17521     MOV.B &$220,R14
17522     AND.B #$0F,R14
17523     MOV @R13+,R0
17524 ENDCODE
17525
17526 CODE LCD_WRC
17527     BIS.B #2,&$243
17528 BW1 SUB #2,R15
17529     MOV R14,0(R15)
17530     RRUM #4,R14
17531     BIC.B #1,&$243
17532     BIS.B #$0F,&$224
17533 COLON
17534     TOP_LCD 2 20_US
17535     TOP_LCD 2 20_US 
17536 ;
17537
17538 CODE LCD_WRF
17539     BIC.B #2,&$243
17540     GOTO BW1
17541 ENDCODE
17542
17543 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
17544 : LCD_HOME $02 LCD_WRF 100 20_us ;
17545
17546
17547
17548 HDNCODE WDT_INT
17549 BIT.B #$20,&$240
17550 0= IF
17551     CMP #19,&$3D6
17552     U< IF
17553         ADD #1,&$3D6
17554     THEN
17555 ELSE
17556     BIT.B #$40,&$240
17557     0= IF
17558         CMP #3,&$3D6
17559         U>= IF
17560            SUB #1,&$3D6
17561         THEN
17562     THEN
17563 THEN
17564 RETI
17565 ENDCODE
17566
17567 HDNCODE RC5_INT
17568 $1800 @ 16000 = [IF]
17569     MOV #1,&$3A0
17570 [THEN]
17571 $1800 @ 24000 = [IF]
17572     MOV #2,&$3A0
17573 [THEN]
17574 MOV #1778,R9
17575 MOV #14,R10
17576 BEGIN
17577 MOV #%1011100100,&$380
17578     RRUM    #1,R9
17579     MOV     R9,R8
17580     RRUM    #1,R8
17581     ADD     R9,R8
17582     BEGIN   CMP R8,&$390
17583     U>= UNTIL
17584     BIT.B   #4,&$200
17585     ADDC    R11,R11
17586     MOV.B   &$200,&$208
17587     BIC.B   #4,&$20C
17588     SUB     #1,R10
17589 0<> WHILE
17590     ADD R9,R8
17591     BEGIN
17592         MOV &$390,R9
17593         CMP R8,R9
17594         U>= IF
17595         BIC #$30,&$380
17596         GOTO FW1
17597         THEN
17598         BIT.B #4,&$20C
17599     0<> UNTIL
17600 REPEAT
17601 BIC #$30,&$380
17602 RLAM    #1,R11
17603 MOV.B   R11,R9
17604 RRUM    #2,R9
17605 BIT     #$4000,R11
17606 0= IF   BIS #$40,R9
17607 THEN
17608 RRUM    #3,R11
17609 XOR     @R1,R11
17610 BIT     #$400,R11
17611 0= ?GOTO FW2
17612 XOR #$400,0(R1)
17613 SUB #8,R15
17614 MOV R14,6(R15)
17615 MOV &$1DDC,4(R15)
17616 MOV #$10,&$1DDC
17617 MOV R9,0(R15)
17618 MOV #0,R14
17619 LO2HI
17620     LCD_CLEAR
17621     <# # #S #36 HOLD #>
17622     ['] LCD_WRC IS EMIT
17623     TYPE
17624     ['] EMIT >BODY IS EMIT
17625 HI2LO
17626 MOV @R15+,&$1DDC
17627 MOV @R15+,R14
17628 FW1 FW2
17629     MOV @R1+,R2
17630     BIC #%1111_1000,R2
17631     MOV @R1+,R0
17632 ENDCODE
17633
17634
17635 HDNCODE STOP_R2L
17636 CMP #$40AA,&{RC5TOLCD}+8
17637 0<> IF
17638     BIC.B #4,&$20A
17639     BIC.B #4,&$20C
17640     MOV #0,&$3C0
17641     MOV #0,&$340
17642     MOV #0,&$342
17643     MOV #$40AA,&{RC5TOLCD}+8
17644     MOV &{RC5TOLCD}+10,&WARM+2
17645     MOV &{RC5TOLCD}+12,&$FFEA
17646     MOV &{RC5TOLCD}+14,&$FFDE
17647     MOV &{RC5TOLCD}+10,R0
17648 THEN 
17649 MOV @R1+,R0
17650 ENDCODE
17651
17652 CODE STOP
17653 BW1
17654 CALL #STOP_R2L
17655 COLON
17656 ECHO
17657 ." RC5toLCD is removed,"
17658 ."  type START to restart"
17659 ABORT" "
17660 ;
17661
17662 HDNCODE INI_R2L
17663 BIC #1,&$130
17664 MOV &$1808,R14
17665 CMP #$0E,R14
17666 0<> IF
17667     CMP #$0A,R14
17668     U>= ?GOTO BW1
17669 THEN
17670 BIT.B #$20,&$240
17671 0= ?GOTO BW1
17672 MOV #0,&$1808
17673 MOV #%10_1101_0100,&$3C0
17674 $1800 @ 16000 = [IF]
17675     MOV #1,&$3E0
17676 [THEN]
17677 $1800 @ 24000 = [IF]
17678     MOV #2,&$3E0
17679 [THEN]
17680     MOV #19,&$3D2
17681 MOV #%0110_0000,&$3C6
17682     MOV #10,&$3D6
17683     BIS.B #$20,&$204
17684     BIS.B #$20,&$20A
17685     BIS.B #7,&$245
17686     BIC.B #7,&$247
17687     BIS.B #$0F,&$224
17688     BIC.B #$0F,&$226
17689     BIS.B #4,&$20A
17690     BIC.B #4,&$20C
17691 MOV #%01_0001_0100,&$340
17692     MOV ##3276,&$352
17693     MOV #%10000,&$342
17694 COLON
17695     #1000 20_US
17696     %011 TOP_LCD
17697     #205 20_US
17698     %011 TOP_LCD
17699     #5 20_US
17700     %011 TOP_LCD
17701     #2 20_US
17702     %010 TOP_LCD
17703     #2 20_US
17704     %00101000 LCD_WRF
17705     %1000 LCD_WRF
17706     LCD_CLEAR
17707     %0110 LCD_WRF
17708     %1100 LCD_WRF
17709     LCD_CLEAR
17710     ['] LCD_HOME IS CR
17711     ['] LCD_WRC  IS EMIT
17712     CR ." I love you"
17713     ['] CR >BODY IS CR
17714     ['] EMIT >BODY IS EMIT
17715     ." RC5toLCD is running. Type STOP to quit"
17716     ABORT" "
17717 ;
17718
17719 CODE START
17720 CMP #$40AA,&{RC5TOLCD}+8
17721 0= IF
17722     MOV #STOP_R2L,&{RC5TOLCD}+8
17723     MOV &WARM+2,&{RC5TOLCD}+10
17724     MOV #INI_R2L,&WARM+2
17725     MOV &$FFEA,&{RC5TOLCD}+12
17726     MOV #WDT_INT,&$FFEA
17727     MOV &$FFDE,&{RC5TOLCD}+14
17728     MOV #RC5_INT,&$FFDE
17729     MOV #INI_R2L,R0
17730 THEN
17731 MOV @R13+,R0 
17732 ENDCODE 
17733
17734
17735 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
17736
17737 MARKER {RC5TOLCD}
17738 6 ALLOT
17739
17740
17741
17742 [UNDEFINED] CONSTANT [IF]
17743 : CONSTANT 
17744 CREATE
17745 HI2LO
17746 MOV R14,-2(R10)
17747 MOV @R15+,R14
17748 MOV @R1+,R13
17749 MOV @R13+,R0
17750 ENDCODE
17751 [THEN]
17752
17753 [UNDEFINED] STATE [IF]
17754 $1DBE CONSTANT STATE
17755 [THEN]
17756
17757 [UNDEFINED] = [IF]
17758 CODE =
17759 SUB @R15+,R14
17760 0<> IF
17761     AND #0,R14
17762     MOV @R13+,R0
17763 THEN
17764 XOR #-1,R14
17765 MOV @R13+,R0
17766 ENDCODE
17767 [THEN]
17768
17769 [UNDEFINED] IF [IF]
17770 CODE IF
17771 SUB #2,R15
17772 MOV R14,0(R15)
17773 MOV &$1DC6,R14
17774 ADD #4,&$1DC6
17775 MOV #$4034,0(R14)
17776 ADD #2,R14
17777 MOV @R13+,R0
17778 ENDCODE IMMEDIATE
17779
17780 CODE THEN
17781 MOV &$1DC6,0(R14)
17782 MOV @R15+,R14
17783 MOV @R13+,R0
17784 ENDCODE IMMEDIATE
17785 [THEN]
17786
17787 [UNDEFINED] ELSE [IF]
17788 CODE ELSE
17789 ADD #4,&$1DC6
17790 MOV &$1DC6,R10
17791 MOV #$403A,-4(R10)
17792 MOV R10,0(R14)
17793 SUB #2,R10
17794 MOV R10,R14
17795 MOV @R13+,R0
17796 ENDCODE IMMEDIATE
17797 [THEN]
17798
17799 [UNDEFINED] IS [IF]
17800
17801 CODE DEFER!
17802 MOV @R15+,2(R14)
17803 MOV @R15+,R14
17804 MOV @R13+,R0
17805 ENDCODE
17806
17807
17808 : IS
17809 STATE @
17810 IF  POSTPONE ['] POSTPONE DEFER! 
17811 ELSE ' DEFER! 
17812 THEN
17813 ; IMMEDIATE
17814 [THEN]
17815
17816 [UNDEFINED] >BODY [IF]
17817 CODE >BODY
17818 ADD #4,R14
17819 MOV @R13+,R0
17820 ENDCODE
17821 [THEN]
17822
17823
17824 CODE 20_US
17825 BEGIN
17826     BEGIN
17827         BIT #1,&$3C0
17828     0<> UNTIL
17829     BIC #1,&$3C0
17830     SUB #1,R14
17831 U< UNTIL
17832 MOV @R15+,R14
17833 MOV @R13+,R0
17834 ENDCODE
17835
17836 CODE TOP_LCD
17837     BIS.B #4,&$243
17838     BIT.B #1,&$241
17839 0= IF
17840     AND.B #$0F,R14
17841     MOV.B R14,&$222
17842     BIC.B #4,&$243
17843     MOV @R15+,R14
17844     MOV @R13+,R0
17845 THEN
17846     SUB #2,R15
17847     MOV R14,0(R15)
17848     BIC.B #4,&$243
17849     MOV.B &$220,R14
17850     AND.B #$0F,R14
17851     MOV @R13+,R0
17852 ENDCODE
17853
17854 CODE LCD_WRC
17855     BIS.B #2,&$243
17856 BW1 SUB #2,R15
17857     MOV R14,0(R15)
17858     RRUM #4,R14
17859     BIC.B #1,&$243
17860     BIS.B #$0F,&$224
17861 COLON
17862     TOP_LCD 2 20_US
17863     TOP_LCD 2 20_US 
17864 ;
17865
17866 CODE LCD_WRF
17867     BIC.B #2,&$243
17868     GOTO BW1
17869 ENDCODE
17870
17871 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
17872 : LCD_HOME $02 LCD_WRF 100 20_us ;
17873
17874
17875
17876 HDNCODE WDT_INT
17877 BIT.B #$20,&$240
17878 0= IF
17879     CMP #19,&$3D6
17880     U< IF
17881         ADD #1,&$3D6
17882     THEN
17883 ELSE
17884     BIT.B #$40,&$240
17885     0= IF
17886         CMP #3,&$3D6
17887         U>= IF
17888            SUB #1,&$3D6
17889         THEN
17890     THEN
17891 THEN
17892 RETI
17893 ENDCODE
17894
17895 HDNCODE RC5_INT
17896 $1800 @ 16000 = [IF]
17897     MOV #1,&$3A0
17898 [THEN]
17899 $1800 @ 24000 = [IF]
17900     MOV #2,&$3A0
17901 [THEN]
17902 MOV #1778,R9
17903 MOV #14,R10
17904 BEGIN
17905 MOV #%1011100100,&$380
17906     RRUM    #1,R9
17907     MOV     R9,R8
17908     RRUM    #1,R8
17909     ADD     R9,R8
17910     BEGIN   CMP R8,&$390
17911     U>= UNTIL
17912     BIT.B   #4,&$200
17913     ADDC    R11,R11
17914     MOV.B   &$200,&$208
17915     BIC.B   #4,&$20C
17916     SUB     #1,R10
17917 0<> WHILE
17918     ADD R9,R8
17919     BEGIN
17920         MOV &$390,R9
17921         CMP R8,R9
17922         U>= IF
17923         BIC #$30,&$380
17924         GOTO FW1
17925         THEN
17926         BIT.B #4,&$20C
17927     0<> UNTIL
17928 REPEAT
17929 BIC #$30,&$380
17930 RLAM    #1,R11
17931 MOV.B   R11,R9
17932 RRUM    #2,R9
17933 BIT     #$4000,R11
17934 0= IF   BIS #$40,R9
17935 THEN
17936 RRUM    #3,R11
17937 XOR     @R1,R11
17938 BIT     #$400,R11
17939 0= ?GOTO FW2
17940 XOR #$400,0(R1)
17941 SUB #8,R15
17942 MOV R14,6(R15)
17943 MOV &$1DDC,4(R15)
17944 MOV #$10,&$1DDC
17945 MOV R9,0(R15)
17946 MOV #0,R14
17947 LO2HI
17948     LCD_CLEAR
17949     <# # #S #36 HOLD #>
17950     ['] LCD_WRC IS EMIT
17951     TYPE
17952     ['] EMIT >BODY IS EMIT
17953 HI2LO
17954 MOV @R15+,&$1DDC
17955 MOV @R15+,R14
17956 FW1 FW2
17957     MOV @R1+,R2
17958     BIC #%1111_1000,R2
17959     MOV @R1+,R0
17960 ENDCODE
17961
17962
17963 HDNCODE STOP_R2L
17964 CMP #$40AA,&{RC5TOLCD}+8
17965 0<> IF
17966     BIC.B #4,&$20A
17967     BIC.B #4,&$20C
17968     MOV #0,&$3C0
17969     MOV #0,&$340
17970     MOV #0,&$342
17971     MOV #$40AA,&{RC5TOLCD}+8
17972     MOV &{RC5TOLCD}+10,&WARM+2
17973     MOV &{RC5TOLCD}+12,&$FFEA
17974     MOV &{RC5TOLCD}+14,&$FFDE
17975     MOV &{RC5TOLCD}+10,R0
17976 THEN 
17977 MOV @R1+,R0
17978 ENDCODE
17979
17980 CODE STOP
17981 BW1
17982 CALL #STOP_R2L
17983 COLON
17984 ECHO
17985 ." RC5toLCD is removed,"
17986 ."  type START to restart"
17987 ABORT" "
17988 ;
17989
17990 HDNCODE INI_R2L
17991 BIC #1,&$130
17992 MOV &$1808,R14
17993 CMP #$0E,R14
17994 0<> IF
17995     CMP #$0A,R14
17996     U>= ?GOTO BW1
17997 THEN
17998 BIT.B #$20,&$240
17999 0= ?GOTO BW1
18000 MOV #0,&$1808
18001 MOV #%10_1101_0100,&$3C0
18002 $1800 @ 16000 = [IF]
18003     MOV #1,&$3E0
18004 [THEN]
18005 $1800 @ 24000 = [IF]
18006     MOV #2,&$3E0
18007 [THEN]
18008     MOV #19,&$3D2
18009 MOV #%0110_0000,&$3C6
18010     MOV #10,&$3D6
18011     BIS.B #$20,&$204
18012     BIS.B #$20,&$20A
18013     BIS.B #7,&$245
18014     BIC.B #7,&$247
18015     BIS.B #$0F,&$224
18016     BIC.B #$0F,&$226
18017     BIS.B #4,&$20A
18018     BIC.B #4,&$20C
18019 MOV #%01_0001_0100,&$340
18020     MOV ##3276,&$352
18021     MOV #%10000,&$342
18022 COLON
18023     #1000 20_US
18024     %011 TOP_LCD
18025     #205 20_US
18026     %011 TOP_LCD
18027     #5 20_US
18028     %011 TOP_LCD
18029     #2 20_US
18030     %010 TOP_LCD
18031     #2 20_US
18032     %00101000 LCD_WRF
18033     %1000 LCD_WRF
18034     LCD_CLEAR
18035     %0110 LCD_WRF
18036     %1100 LCD_WRF
18037     LCD_CLEAR
18038     ['] LCD_HOME IS CR
18039     ['] LCD_WRC  IS EMIT
18040     CR ." I love you"
18041     ['] CR >BODY IS CR
18042     ['] EMIT >BODY IS EMIT
18043     ." RC5toLCD is running. Type STOP to quit"
18044     ABORT" "
18045 ;
18046
18047 CODE START
18048 CMP #$40AA,&{RC5TOLCD}+8
18049 0= IF
18050     MOV #STOP_R2L,&{RC5TOLCD}+8
18051     MOV &WARM+2,&{RC5TOLCD}+10
18052     MOV #INI_R2L,&WARM+2
18053     MOV &$FFEA,&{RC5TOLCD}+12
18054     MOV #WDT_INT,&$FFEA
18055     MOV &$FFDE,&{RC5TOLCD}+14
18056     MOV #RC5_INT,&$FFDE
18057     MOV #INI_R2L,R0
18058 THEN
18059 MOV @R13+,R0 
18060 ENDCODE 
18061
18062
18063 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
18064
18065 MARKER {RC5TOLCD}
18066 6 ALLOT
18067
18068
18069
18070 [UNDEFINED] CONSTANT [IF]
18071 : CONSTANT 
18072 CREATE
18073 HI2LO
18074 MOV R14,-2(R10)
18075 MOV @R15+,R14
18076 MOV @R1+,R13
18077 MOV @R13+,R0
18078 ENDCODE
18079 [THEN]
18080
18081 [UNDEFINED] STATE [IF]
18082 $1DBE CONSTANT STATE
18083 [THEN]
18084
18085 [UNDEFINED] = [IF]
18086 CODE =
18087 SUB @R15+,R14
18088 0<> IF
18089     AND #0,R14
18090     MOV @R13+,R0
18091 THEN
18092 XOR #-1,R14
18093 MOV @R13+,R0
18094 ENDCODE
18095 [THEN]
18096
18097 [UNDEFINED] IF [IF]
18098 CODE IF
18099 SUB #2,R15
18100 MOV R14,0(R15)
18101 MOV &$1DC6,R14
18102 ADD #4,&$1DC6
18103 MOV #$4034,0(R14)
18104 ADD #2,R14
18105 MOV @R13+,R0
18106 ENDCODE IMMEDIATE
18107
18108 CODE THEN
18109 MOV &$1DC6,0(R14)
18110 MOV @R15+,R14
18111 MOV @R13+,R0
18112 ENDCODE IMMEDIATE
18113 [THEN]
18114
18115 [UNDEFINED] ELSE [IF]
18116 CODE ELSE
18117 ADD #4,&$1DC6
18118 MOV &$1DC6,R10
18119 MOV #$403A,-4(R10)
18120 MOV R10,0(R14)
18121 SUB #2,R10
18122 MOV R10,R14
18123 MOV @R13+,R0
18124 ENDCODE IMMEDIATE
18125 [THEN]
18126
18127 [UNDEFINED] IS [IF]
18128
18129 CODE DEFER!
18130 MOV @R15+,2(R14)
18131 MOV @R15+,R14
18132 MOV @R13+,R0
18133 ENDCODE
18134
18135
18136 : IS
18137 STATE @
18138 IF  POSTPONE ['] POSTPONE DEFER! 
18139 ELSE ' DEFER! 
18140 THEN
18141 ; IMMEDIATE
18142 [THEN]
18143
18144 [UNDEFINED] >BODY [IF]
18145 CODE >BODY
18146 ADD #4,R14
18147 MOV @R13+,R0
18148 ENDCODE
18149 [THEN]
18150
18151
18152 CODE 20_US
18153 BEGIN
18154     BEGIN
18155         BIT #1,&$3C0
18156     0<> UNTIL
18157     BIC #1,&$3C0
18158     SUB #1,R14
18159 U< UNTIL
18160 MOV @R15+,R14
18161 MOV @R13+,R0
18162 ENDCODE
18163
18164 CODE TOP_LCD
18165     BIS.B #4,&$243
18166     BIT.B #1,&$241
18167 0= IF
18168     AND.B #$0F,R14
18169     MOV.B R14,&$222
18170     BIC.B #4,&$243
18171     MOV @R15+,R14
18172     MOV @R13+,R0
18173 THEN
18174     SUB #2,R15
18175     MOV R14,0(R15)
18176     BIC.B #4,&$243
18177     MOV.B &$220,R14
18178     AND.B #$0F,R14
18179     MOV @R13+,R0
18180 ENDCODE
18181
18182 CODE LCD_WRC
18183     BIS.B #2,&$243
18184 BW1 SUB #2,R15
18185     MOV R14,0(R15)
18186     RRUM #4,R14
18187     BIC.B #1,&$243
18188     BIS.B #$0F,&$224
18189 COLON
18190     TOP_LCD 2 20_US
18191     TOP_LCD 2 20_US 
18192 ;
18193
18194 CODE LCD_WRF
18195     BIC.B #2,&$243
18196     GOTO BW1
18197 ENDCODE
18198
18199 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
18200 : LCD_HOME $02 LCD_WRF 100 20_us ;
18201
18202
18203
18204 HDNCODE WDT_INT
18205 BIT.B #$20,&$240
18206 0= IF
18207     CMP #19,&$3D6
18208     U< IF
18209         ADD #1,&$3D6
18210     THEN
18211 ELSE
18212     BIT.B #$40,&$240
18213     0= IF
18214         CMP #3,&$3D6
18215         U>= IF
18216            SUB #1,&$3D6
18217         THEN
18218     THEN
18219 THEN
18220 RETI
18221 ENDCODE
18222
18223 HDNCODE RC5_INT
18224 $1800 @ 16000 = [IF]
18225     MOV #1,&$3A0
18226 [THEN]
18227 $1800 @ 24000 = [IF]
18228     MOV #2,&$3A0
18229 [THEN]
18230 MOV #1778,R9
18231 MOV #14,R10
18232 BEGIN
18233 MOV #%1011100100,&$380
18234     RRUM    #1,R9
18235     MOV     R9,R8
18236     RRUM    #1,R8
18237     ADD     R9,R8
18238     BEGIN   CMP R8,&$390
18239     U>= UNTIL
18240     BIT.B   #4,&$200
18241     ADDC    R11,R11
18242     MOV.B   &$200,&$208
18243     BIC.B   #4,&$20C
18244     SUB     #1,R10
18245 0<> WHILE
18246     ADD R9,R8
18247     BEGIN
18248         MOV &$390,R9
18249         CMP R8,R9
18250         U>= IF
18251         BIC #$30,&$380
18252         GOTO FW1
18253         THEN
18254         BIT.B #4,&$20C
18255     0<> UNTIL
18256 REPEAT
18257 BIC #$30,&$380
18258 RLAM    #1,R11
18259 MOV.B   R11,R9
18260 RRUM    #2,R9
18261 BIT     #$4000,R11
18262 0= IF   BIS #$40,R9
18263 THEN
18264 RRUM    #3,R11
18265 XOR     @R1,R11
18266 BIT     #$400,R11
18267 0= ?GOTO FW2
18268 XOR #$400,0(R1)
18269 SUB #8,R15
18270 MOV R14,6(R15)
18271 MOV &$1DDC,4(R15)
18272 MOV #$10,&$1DDC
18273 MOV R9,0(R15)
18274 MOV #0,R14
18275 LO2HI
18276     LCD_CLEAR
18277     <# # #S #36 HOLD #>
18278     ['] LCD_WRC IS EMIT
18279     TYPE
18280     ['] EMIT >BODY IS EMIT
18281 HI2LO
18282 MOV @R15+,&$1DDC
18283 MOV @R15+,R14
18284 FW1 FW2
18285     MOV @R1+,R2
18286     BIC #%1111_1000,R2
18287     MOV @R1+,R0
18288 ENDCODE
18289
18290
18291 HDNCODE STOP_R2L
18292 CMP #$40AA,&{RC5TOLCD}+8
18293 0<> IF
18294     BIC.B #4,&$20A
18295     BIC.B #4,&$20C
18296     MOV #0,&$3C0
18297     MOV #0,&$340
18298     MOV #0,&$342
18299     MOV #$40AA,&{RC5TOLCD}+8
18300     MOV &{RC5TOLCD}+10,&WARM+2
18301     MOV &{RC5TOLCD}+12,&$FFEA
18302     MOV &{RC5TOLCD}+14,&$FFDE
18303     MOV &{RC5TOLCD}+10,R0
18304 THEN 
18305 MOV @R1+,R0
18306 ENDCODE
18307
18308 CODE STOP
18309 BW1
18310 CALL #STOP_R2L
18311 COLON
18312 ECHO
18313 ." RC5toLCD is removed,"
18314 ."  type START to restart"
18315 ABORT" "
18316 ;
18317
18318 HDNCODE INI_R2L
18319 BIC #1,&$130
18320 MOV &$1808,R14
18321 CMP #$0E,R14
18322 0<> IF
18323     CMP #$0A,R14
18324     U>= ?GOTO BW1
18325 THEN
18326 BIT.B #$20,&$240
18327 0= ?GOTO BW1
18328 MOV #0,&$1808
18329 MOV #%10_1101_0100,&$3C0
18330 $1800 @ 16000 = [IF]
18331     MOV #1,&$3E0
18332 [THEN]
18333 $1800 @ 24000 = [IF]
18334     MOV #2,&$3E0
18335 [THEN]
18336     MOV #19,&$3D2
18337 MOV #%0110_0000,&$3C6
18338     MOV #10,&$3D6
18339     BIS.B #$20,&$204
18340     BIS.B #$20,&$20A
18341     BIS.B #7,&$245
18342     BIC.B #7,&$247
18343     BIS.B #$0F,&$224
18344     BIC.B #$0F,&$226
18345     BIS.B #4,&$20A
18346     BIC.B #4,&$20C
18347 MOV #%01_0001_0100,&$340
18348     MOV ##3276,&$352
18349     MOV #%10000,&$342
18350 COLON
18351     #1000 20_US
18352     %011 TOP_LCD
18353     #205 20_US
18354     %011 TOP_LCD
18355     #5 20_US
18356     %011 TOP_LCD
18357     #2 20_US
18358     %010 TOP_LCD
18359     #2 20_US
18360     %00101000 LCD_WRF
18361     %1000 LCD_WRF
18362     LCD_CLEAR
18363     %0110 LCD_WRF
18364     %1100 LCD_WRF
18365     LCD_CLEAR
18366     ['] LCD_HOME IS CR
18367     ['] LCD_WRC  IS EMIT
18368     CR ." I love you"
18369     ['] CR >BODY IS CR
18370     ['] EMIT >BODY IS EMIT
18371     ." RC5toLCD is running. Type STOP to quit"
18372     ABORT" "
18373 ;
18374
18375 CODE START
18376 CMP #$40AA,&{RC5TOLCD}+8
18377 0= IF
18378     MOV #STOP_R2L,&{RC5TOLCD}+8
18379     MOV &WARM+2,&{RC5TOLCD}+10
18380     MOV #INI_R2L,&WARM+2
18381     MOV &$FFEA,&{RC5TOLCD}+12
18382     MOV #WDT_INT,&$FFEA
18383     MOV &$FFDE,&{RC5TOLCD}+14
18384     MOV #RC5_INT,&$FFDE
18385     MOV #INI_R2L,R0
18386 THEN
18387 MOV @R13+,R0 
18388 ENDCODE 
18389
18390
18391 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
18392
18393 MARKER {RC5TOLCD}
18394 6 ALLOT
18395
18396
18397
18398 [UNDEFINED] CONSTANT [IF]
18399 : CONSTANT 
18400 CREATE
18401 HI2LO
18402 MOV R14,-2(R10)
18403 MOV @R15+,R14
18404 MOV @R1+,R13
18405 MOV @R13+,R0
18406 ENDCODE
18407 [THEN]
18408
18409 [UNDEFINED] STATE [IF]
18410 $1DBE CONSTANT STATE
18411 [THEN]
18412
18413 [UNDEFINED] = [IF]
18414 CODE =
18415 SUB @R15+,R14
18416 0<> IF
18417     AND #0,R14
18418     MOV @R13+,R0
18419 THEN
18420 XOR #-1,R14
18421 MOV @R13+,R0
18422 ENDCODE
18423 [THEN]
18424
18425 [UNDEFINED] IF [IF]
18426 CODE IF
18427 SUB #2,R15
18428 MOV R14,0(R15)
18429 MOV &$1DC6,R14
18430 ADD #4,&$1DC6
18431 MOV #$4034,0(R14)
18432 ADD #2,R14
18433 MOV @R13+,R0
18434 ENDCODE IMMEDIATE
18435
18436 CODE THEN
18437 MOV &$1DC6,0(R14)
18438 MOV @R15+,R14
18439 MOV @R13+,R0
18440 ENDCODE IMMEDIATE
18441 [THEN]
18442
18443 [UNDEFINED] ELSE [IF]
18444 CODE ELSE
18445 ADD #4,&$1DC6
18446 MOV &$1DC6,R10
18447 MOV #$403A,-4(R10)
18448 MOV R10,0(R14)
18449 SUB #2,R10
18450 MOV R10,R14
18451 MOV @R13+,R0
18452 ENDCODE IMMEDIATE
18453 [THEN]
18454
18455 [UNDEFINED] IS [IF]
18456
18457 CODE DEFER!
18458 MOV @R15+,2(R14)
18459 MOV @R15+,R14
18460 MOV @R13+,R0
18461 ENDCODE
18462
18463
18464 : IS
18465 STATE @
18466 IF  POSTPONE ['] POSTPONE DEFER! 
18467 ELSE ' DEFER! 
18468 THEN
18469 ; IMMEDIATE
18470 [THEN]
18471
18472 [UNDEFINED] >BODY [IF]
18473 CODE >BODY
18474 ADD #4,R14
18475 MOV @R13+,R0
18476 ENDCODE
18477 [THEN]
18478
18479
18480 CODE 20_US
18481 BEGIN
18482     BEGIN
18483         BIT #1,&$3C0
18484     0<> UNTIL
18485     BIC #1,&$3C0
18486     SUB #1,R14
18487 U< UNTIL
18488 MOV @R15+,R14
18489 MOV @R13+,R0
18490 ENDCODE
18491
18492 CODE TOP_LCD
18493     BIS.B #4,&$243
18494     BIT.B #1,&$241
18495 0= IF
18496     AND.B #$0F,R14
18497     MOV.B R14,&$222
18498     BIC.B #4,&$243
18499     MOV @R15+,R14
18500     MOV @R13+,R0
18501 THEN
18502     SUB #2,R15
18503     MOV R14,0(R15)
18504     BIC.B #4,&$243
18505     MOV.B &$220,R14
18506     AND.B #$0F,R14
18507     MOV @R13+,R0
18508 ENDCODE
18509
18510 CODE LCD_WRC
18511     BIS.B #2,&$243
18512 BW1 SUB #2,R15
18513     MOV R14,0(R15)
18514     RRUM #4,R14
18515     BIC.B #1,&$243
18516     BIS.B #$0F,&$224
18517 COLON
18518     TOP_LCD 2 20_US
18519     TOP_LCD 2 20_US 
18520 ;
18521
18522 CODE LCD_WRF
18523     BIC.B #2,&$243
18524     GOTO BW1
18525 ENDCODE
18526
18527 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
18528 : LCD_HOME $02 LCD_WRF 100 20_us ;
18529
18530
18531
18532 HDNCODE WDT_INT
18533 BIT.B #$20,&$240
18534 0= IF
18535     CMP #19,&$3D6
18536     U< IF
18537         ADD #1,&$3D6
18538     THEN
18539 ELSE
18540     BIT.B #$40,&$240
18541     0= IF
18542         CMP #3,&$3D6
18543         U>= IF
18544            SUB #1,&$3D6
18545         THEN
18546     THEN
18547 THEN
18548 RETI
18549 ENDCODE
18550
18551 HDNCODE RC5_INT
18552 $1800 @ 16000 = [IF]
18553     MOV #1,&$3A0
18554 [THEN]
18555 $1800 @ 24000 = [IF]
18556     MOV #2,&$3A0
18557 [THEN]
18558 MOV #1778,R9
18559 MOV #14,R10
18560 BEGIN
18561 MOV #%1011100100,&$380
18562     RRUM    #1,R9
18563     MOV     R9,R8
18564     RRUM    #1,R8
18565     ADD     R9,R8
18566     BEGIN   CMP R8,&$390
18567     U>= UNTIL
18568     BIT.B   #4,&$200
18569     ADDC    R11,R11
18570     MOV.B   &$200,&$208
18571     BIC.B   #4,&$20C
18572     SUB     #1,R10
18573 0<> WHILE
18574     ADD R9,R8
18575     BEGIN
18576         MOV &$390,R9
18577         CMP R8,R9
18578         U>= IF
18579         BIC #$30,&$380
18580         GOTO FW1
18581         THEN
18582         BIT.B #4,&$20C
18583     0<> UNTIL
18584 REPEAT
18585 BIC #$30,&$380
18586 RLAM    #1,R11
18587 MOV.B   R11,R9
18588 RRUM    #2,R9
18589 BIT     #$4000,R11
18590 0= IF   BIS #$40,R9
18591 THEN
18592 RRUM    #3,R11
18593 XOR     @R1,R11
18594 BIT     #$400,R11
18595 0= ?GOTO FW2
18596 XOR #$400,0(R1)
18597 SUB #8,R15
18598 MOV R14,6(R15)
18599 MOV &$1DDC,4(R15)
18600 MOV #$10,&$1DDC
18601 MOV R9,0(R15)
18602 MOV #0,R14
18603 LO2HI
18604     LCD_CLEAR
18605     <# # #S #36 HOLD #>
18606     ['] LCD_WRC IS EMIT
18607     TYPE
18608     ['] EMIT >BODY IS EMIT
18609 HI2LO
18610 MOV @R15+,&$1DDC
18611 MOV @R15+,R14
18612 FW1 FW2
18613     MOV @R1+,R2
18614     BIC #%1111_1000,R2
18615     MOV @R1+,R0
18616 ENDCODE
18617
18618
18619 HDNCODE STOP_R2L
18620 CMP #$40AA,&{RC5TOLCD}+8
18621 0<> IF
18622     BIC.B #4,&$20A
18623     BIC.B #4,&$20C
18624     MOV #0,&$3C0
18625     MOV #0,&$340
18626     MOV #0,&$342
18627     MOV #$40AA,&{RC5TOLCD}+8
18628     MOV &{RC5TOLCD}+10,&WARM+2
18629     MOV &{RC5TOLCD}+12,&$FFEA
18630     MOV &{RC5TOLCD}+14,&$FFDE
18631     MOV &{RC5TOLCD}+10,R0
18632 THEN 
18633 MOV @R1+,R0
18634 ENDCODE
18635
18636 CODE STOP
18637 BW1
18638 CALL #STOP_R2L
18639 COLON
18640 ECHO
18641 ." RC5toLCD is removed,"
18642 ."  type START to restart"
18643 ABORT" "
18644 ;
18645
18646 HDNCODE INI_R2L
18647 BIC #1,&$130
18648 MOV &$1808,R14
18649 CMP #$0E,R14
18650 0<> IF
18651     CMP #$0A,R14
18652     U>= ?GOTO BW1
18653 THEN
18654 BIT.B #$20,&$240
18655 0= ?GOTO BW1
18656 MOV #0,&$1808
18657 MOV #%10_1101_0100,&$3C0
18658 $1800 @ 16000 = [IF]
18659     MOV #1,&$3E0
18660 [THEN]
18661 $1800 @ 24000 = [IF]
18662     MOV #2,&$3E0
18663 [THEN]
18664     MOV #19,&$3D2
18665 MOV #%0110_0000,&$3C6
18666     MOV #10,&$3D6
18667     BIS.B #$20,&$204
18668     BIS.B #$20,&$20A
18669     BIS.B #7,&$245
18670     BIC.B #7,&$247
18671     BIS.B #$0F,&$224
18672     BIC.B #$0F,&$226
18673     BIS.B #4,&$20A
18674     BIC.B #4,&$20C
18675 MOV #%01_0001_0100,&$340
18676     MOV ##3276,&$352
18677     MOV #%10000,&$342
18678 COLON
18679     #1000 20_US
18680     %011 TOP_LCD
18681     #205 20_US
18682     %011 TOP_LCD
18683     #5 20_US
18684     %011 TOP_LCD
18685     #2 20_US
18686     %010 TOP_LCD
18687     #2 20_US
18688     %00101000 LCD_WRF
18689     %1000 LCD_WRF
18690     LCD_CLEAR
18691     %0110 LCD_WRF
18692     %1100 LCD_WRF
18693     LCD_CLEAR
18694     ['] LCD_HOME IS CR
18695     ['] LCD_WRC  IS EMIT
18696     CR ." I love you"
18697     ['] CR >BODY IS CR
18698     ['] EMIT >BODY IS EMIT
18699     ." RC5toLCD is running. Type STOP to quit"
18700     ABORT" "
18701 ;
18702
18703 CODE START
18704 CMP #$40AA,&{RC5TOLCD}+8
18705 0= IF
18706     MOV #STOP_R2L,&{RC5TOLCD}+8
18707     MOV &WARM+2,&{RC5TOLCD}+10
18708     MOV #INI_R2L,&WARM+2
18709     MOV &$FFEA,&{RC5TOLCD}+12
18710     MOV #WDT_INT,&$FFEA
18711     MOV &$FFDE,&{RC5TOLCD}+14
18712     MOV #RC5_INT,&$FFDE
18713     MOV #INI_R2L,R0
18714 THEN
18715 MOV @R13+,R0 
18716 ENDCODE 
18717
18718
18719 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
18720
18721 MARKER {RC5TOLCD}
18722 6 ALLOT
18723
18724
18725
18726 [UNDEFINED] CONSTANT [IF]
18727 : CONSTANT 
18728 CREATE
18729 HI2LO
18730 MOV R14,-2(R10)
18731 MOV @R15+,R14
18732 MOV @R1+,R13
18733 MOV @R13+,R0
18734 ENDCODE
18735 [THEN]
18736
18737 [UNDEFINED] STATE [IF]
18738 $1DBE CONSTANT STATE
18739 [THEN]
18740
18741 [UNDEFINED] = [IF]
18742 CODE =
18743 SUB @R15+,R14
18744 0<> IF
18745     AND #0,R14
18746     MOV @R13+,R0
18747 THEN
18748 XOR #-1,R14
18749 MOV @R13+,R0
18750 ENDCODE
18751 [THEN]
18752
18753 [UNDEFINED] IF [IF]
18754 CODE IF
18755 SUB #2,R15
18756 MOV R14,0(R15)
18757 MOV &$1DC6,R14
18758 ADD #4,&$1DC6
18759 MOV #$4034,0(R14)
18760 ADD #2,R14
18761 MOV @R13+,R0
18762 ENDCODE IMMEDIATE
18763
18764 CODE THEN
18765 MOV &$1DC6,0(R14)
18766 MOV @R15+,R14
18767 MOV @R13+,R0
18768 ENDCODE IMMEDIATE
18769 [THEN]
18770
18771 [UNDEFINED] ELSE [IF]
18772 CODE ELSE
18773 ADD #4,&$1DC6
18774 MOV &$1DC6,R10
18775 MOV #$403A,-4(R10)
18776 MOV R10,0(R14)
18777 SUB #2,R10
18778 MOV R10,R14
18779 MOV @R13+,R0
18780 ENDCODE IMMEDIATE
18781 [THEN]
18782
18783 [UNDEFINED] IS [IF]
18784
18785 CODE DEFER!
18786 MOV @R15+,2(R14)
18787 MOV @R15+,R14
18788 MOV @R13+,R0
18789 ENDCODE
18790
18791
18792 : IS
18793 STATE @
18794 IF  POSTPONE ['] POSTPONE DEFER! 
18795 ELSE ' DEFER! 
18796 THEN
18797 ; IMMEDIATE
18798 [THEN]
18799
18800 [UNDEFINED] >BODY [IF]
18801 CODE >BODY
18802 ADD #4,R14
18803 MOV @R13+,R0
18804 ENDCODE
18805 [THEN]
18806
18807
18808 CODE 20_US
18809 BEGIN
18810     BEGIN
18811         BIT #1,&$3C0
18812     0<> UNTIL
18813     BIC #1,&$3C0
18814     SUB #1,R14
18815 U< UNTIL
18816 MOV @R15+,R14
18817 MOV @R13+,R0
18818 ENDCODE
18819
18820 CODE TOP_LCD
18821     BIS.B #4,&$243
18822     BIT.B #1,&$241
18823 0= IF
18824     AND.B #$0F,R14
18825     MOV.B R14,&$222
18826     BIC.B #4,&$243
18827     MOV @R15+,R14
18828     MOV @R13+,R0
18829 THEN
18830     SUB #2,R15
18831     MOV R14,0(R15)
18832     BIC.B #4,&$243
18833     MOV.B &$220,R14
18834     AND.B #$0F,R14
18835     MOV @R13+,R0
18836 ENDCODE
18837
18838 CODE LCD_WRC
18839     BIS.B #2,&$243
18840 BW1 SUB #2,R15
18841     MOV R14,0(R15)
18842     RRUM #4,R14
18843     BIC.B #1,&$243
18844     BIS.B #$0F,&$224
18845 COLON
18846     TOP_LCD 2 20_US
18847     TOP_LCD 2 20_US 
18848 ;
18849
18850 CODE LCD_WRF
18851     BIC.B #2,&$243
18852     GOTO BW1
18853 ENDCODE
18854
18855 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
18856 : LCD_HOME $02 LCD_WRF 100 20_us ;
18857
18858
18859
18860 HDNCODE WDT_INT
18861 BIT.B #$20,&$240
18862 0= IF
18863     CMP #19,&$3D6
18864     U< IF
18865         ADD #1,&$3D6
18866     THEN
18867 ELSE
18868     BIT.B #$40,&$240
18869     0= IF
18870         CMP #3,&$3D6
18871         U>= IF
18872            SUB #1,&$3D6
18873         THEN
18874     THEN
18875 THEN
18876 RETI
18877 ENDCODE
18878
18879 HDNCODE RC5_INT
18880 $1800 @ 16000 = [IF]
18881     MOV #1,&$3A0
18882 [THEN]
18883 $1800 @ 24000 = [IF]
18884     MOV #2,&$3A0
18885 [THEN]
18886 MOV #1778,R9
18887 MOV #14,R10
18888 BEGIN
18889 MOV #%1011100100,&$380
18890     RRUM    #1,R9
18891     MOV     R9,R8
18892     RRUM    #1,R8
18893     ADD     R9,R8
18894     BEGIN   CMP R8,&$390
18895     U>= UNTIL
18896     BIT.B   #4,&$200
18897     ADDC    R11,R11
18898     MOV.B   &$200,&$208
18899     BIC.B   #4,&$20C
18900     SUB     #1,R10
18901 0<> WHILE
18902     ADD R9,R8
18903     BEGIN
18904         MOV &$390,R9
18905         CMP R8,R9
18906         U>= IF
18907         BIC #$30,&$380
18908         GOTO FW1
18909         THEN
18910         BIT.B #4,&$20C
18911     0<> UNTIL
18912 REPEAT
18913 BIC #$30,&$380
18914 RLAM    #1,R11
18915 MOV.B   R11,R9
18916 RRUM    #2,R9
18917 BIT     #$4000,R11
18918 0= IF   BIS #$40,R9
18919 THEN
18920 RRUM    #3,R11
18921 XOR     @R1,R11
18922 BIT     #$400,R11
18923 0= ?GOTO FW2
18924 XOR #$400,0(R1)
18925 SUB #8,R15
18926 MOV R14,6(R15)
18927 MOV &$1DDC,4(R15)
18928 MOV #$10,&$1DDC
18929 MOV R9,0(R15)
18930 MOV #0,R14
18931 LO2HI
18932     LCD_CLEAR
18933     <# # #S #36 HOLD #>
18934     ['] LCD_WRC IS EMIT
18935     TYPE
18936     ['] EMIT >BODY IS EMIT
18937 HI2LO
18938 MOV @R15+,&$1DDC
18939 MOV @R15+,R14
18940 FW1 FW2
18941     MOV @R1+,R2
18942     BIC #%1111_1000,R2
18943     MOV @R1+,R0
18944 ENDCODE
18945
18946
18947 HDNCODE STOP_R2L
18948 CMP #$40AA,&{RC5TOLCD}+8
18949 0<> IF
18950     BIC.B #4,&$20A
18951     BIC.B #4,&$20C
18952     MOV #0,&$3C0
18953     MOV #0,&$340
18954     MOV #0,&$342
18955     MOV #$40AA,&{RC5TOLCD}+8
18956     MOV &{RC5TOLCD}+10,&WARM+2
18957     MOV &{RC5TOLCD}+12,&$FFEA
18958     MOV &{RC5TOLCD}+14,&$FFDE
18959     MOV &{RC5TOLCD}+10,R0
18960 THEN 
18961 MOV @R1+,R0
18962 ENDCODE
18963
18964 CODE STOP
18965 BW1
18966 CALL #STOP_R2L
18967 COLON
18968 ECHO
18969 ." RC5toLCD is removed,"
18970 ."  type START to restart"
18971 ABORT" "
18972 ;
18973
18974 HDNCODE INI_R2L
18975 BIC #1,&$130
18976 MOV &$1808,R14
18977 CMP #$0E,R14
18978 0<> IF
18979     CMP #$0A,R14
18980     U>= ?GOTO BW1
18981 THEN
18982 BIT.B #$20,&$240
18983 0= ?GOTO BW1
18984 MOV #0,&$1808
18985 MOV #%10_1101_0100,&$3C0
18986 $1800 @ 16000 = [IF]
18987     MOV #1,&$3E0
18988 [THEN]
18989 $1800 @ 24000 = [IF]
18990     MOV #2,&$3E0
18991 [THEN]
18992     MOV #19,&$3D2
18993 MOV #%0110_0000,&$3C6
18994     MOV #10,&$3D6
18995     BIS.B #$20,&$204
18996     BIS.B #$20,&$20A
18997     BIS.B #7,&$245
18998     BIC.B #7,&$247
18999     BIS.B #$0F,&$224
19000     BIC.B #$0F,&$226
19001     BIS.B #4,&$20A
19002     BIC.B #4,&$20C
19003 MOV #%01_0001_0100,&$340
19004     MOV ##3276,&$352
19005     MOV #%10000,&$342
19006 COLON
19007     #1000 20_US
19008     %011 TOP_LCD
19009     #205 20_US
19010     %011 TOP_LCD
19011     #5 20_US
19012     %011 TOP_LCD
19013     #2 20_US
19014     %010 TOP_LCD
19015     #2 20_US
19016     %00101000 LCD_WRF
19017     %1000 LCD_WRF
19018     LCD_CLEAR
19019     %0110 LCD_WRF
19020     %1100 LCD_WRF
19021     LCD_CLEAR
19022     ['] LCD_HOME IS CR
19023     ['] LCD_WRC  IS EMIT
19024     CR ." I love you"
19025     ['] CR >BODY IS CR
19026     ['] EMIT >BODY IS EMIT
19027     ." RC5toLCD is running. Type STOP to quit"
19028     ABORT" "
19029 ;
19030
19031 CODE START
19032 CMP #$40AA,&{RC5TOLCD}+8
19033 0= IF
19034     MOV #STOP_R2L,&{RC5TOLCD}+8
19035     MOV &WARM+2,&{RC5TOLCD}+10
19036     MOV #INI_R2L,&WARM+2
19037     MOV &$FFEA,&{RC5TOLCD}+12
19038     MOV #WDT_INT,&$FFEA
19039     MOV &$FFDE,&{RC5TOLCD}+14
19040     MOV #RC5_INT,&$FFDE
19041     MOV #INI_R2L,R0
19042 THEN
19043 MOV @R13+,R0 
19044 ENDCODE 
19045
19046
19047 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
19048
19049 MARKER {RC5TOLCD}
19050 6 ALLOT
19051
19052
19053
19054 [UNDEFINED] CONSTANT [IF]
19055 : CONSTANT 
19056 CREATE
19057 HI2LO
19058 MOV R14,-2(R10)
19059 MOV @R15+,R14
19060 MOV @R1+,R13
19061 MOV @R13+,R0
19062 ENDCODE
19063 [THEN]
19064
19065 [UNDEFINED] STATE [IF]
19066 $1DBE CONSTANT STATE
19067 [THEN]
19068
19069 [UNDEFINED] = [IF]
19070 CODE =
19071 SUB @R15+,R14
19072 0<> IF
19073     AND #0,R14
19074     MOV @R13+,R0
19075 THEN
19076 XOR #-1,R14
19077 MOV @R13+,R0
19078 ENDCODE
19079 [THEN]
19080
19081 [UNDEFINED] IF [IF]
19082 CODE IF
19083 SUB #2,R15
19084 MOV R14,0(R15)
19085 MOV &$1DC6,R14
19086 ADD #4,&$1DC6
19087 MOV #$4034,0(R14)
19088 ADD #2,R14
19089 MOV @R13+,R0
19090 ENDCODE IMMEDIATE
19091
19092 CODE THEN
19093 MOV &$1DC6,0(R14)
19094 MOV @R15+,R14
19095 MOV @R13+,R0
19096 ENDCODE IMMEDIATE
19097 [THEN]
19098
19099 [UNDEFINED] ELSE [IF]
19100 CODE ELSE
19101 ADD #4,&$1DC6
19102 MOV &$1DC6,R10
19103 MOV #$403A,-4(R10)
19104 MOV R10,0(R14)
19105 SUB #2,R10
19106 MOV R10,R14
19107 MOV @R13+,R0
19108 ENDCODE IMMEDIATE
19109 [THEN]
19110
19111 [UNDEFINED] IS [IF]
19112
19113 CODE DEFER!
19114 MOV @R15+,2(R14)
19115 MOV @R15+,R14
19116 MOV @R13+,R0
19117 ENDCODE
19118
19119
19120 : IS
19121 STATE @
19122 IF  POSTPONE ['] POSTPONE DEFER! 
19123 ELSE ' DEFER! 
19124 THEN
19125 ; IMMEDIATE
19126 [THEN]
19127
19128 [UNDEFINED] >BODY [IF]
19129 CODE >BODY
19130 ADD #4,R14
19131 MOV @R13+,R0
19132 ENDCODE
19133 [THEN]
19134
19135
19136 CODE 20_US
19137 BEGIN
19138     BEGIN
19139         BIT #1,&$3C0
19140     0<> UNTIL
19141     BIC #1,&$3C0
19142     SUB #1,R14
19143 U< UNTIL
19144 MOV @R15+,R14
19145 MOV @R13+,R0
19146 ENDCODE
19147
19148 CODE TOP_LCD
19149     BIS.B #4,&$243
19150     BIT.B #1,&$241
19151 0= IF
19152     AND.B #$0F,R14
19153     MOV.B R14,&$222
19154     BIC.B #4,&$243
19155     MOV @R15+,R14
19156     MOV @R13+,R0
19157 THEN
19158     SUB #2,R15
19159     MOV R14,0(R15)
19160     BIC.B #4,&$243
19161     MOV.B &$220,R14
19162     AND.B #$0F,R14
19163     MOV @R13+,R0
19164 ENDCODE
19165
19166 CODE LCD_WRC
19167     BIS.B #2,&$243
19168 BW1 SUB #2,R15
19169     MOV R14,0(R15)
19170     RRUM #4,R14
19171     BIC.B #1,&$243
19172     BIS.B #$0F,&$224
19173 COLON
19174     TOP_LCD 2 20_US
19175     TOP_LCD 2 20_US 
19176 ;
19177
19178 CODE LCD_WRF
19179     BIC.B #2,&$243
19180     GOTO BW1
19181 ENDCODE
19182
19183 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
19184 : LCD_HOME $02 LCD_WRF 100 20_us ;
19185
19186
19187
19188 HDNCODE WDT_INT
19189 BIT.B #$20,&$240
19190 0= IF
19191     CMP #19,&$3D6
19192     U< IF
19193         ADD #1,&$3D6
19194     THEN
19195 ELSE
19196     BIT.B #$40,&$240
19197     0= IF
19198         CMP #3,&$3D6
19199         U>= IF
19200            SUB #1,&$3D6
19201         THEN
19202     THEN
19203 THEN
19204 RETI
19205 ENDCODE
19206
19207 HDNCODE RC5_INT
19208 $1800 @ 16000 = [IF]
19209     MOV #1,&$3A0
19210 [THEN]
19211 $1800 @ 24000 = [IF]
19212     MOV #2,&$3A0
19213 [THEN]
19214 MOV #1778,R9
19215 MOV #14,R10
19216 BEGIN
19217 MOV #%1011100100,&$380
19218     RRUM    #1,R9
19219     MOV     R9,R8
19220     RRUM    #1,R8
19221     ADD     R9,R8
19222     BEGIN   CMP R8,&$390
19223     U>= UNTIL
19224     BIT.B   #4,&$200
19225     ADDC    R11,R11
19226     MOV.B   &$200,&$208
19227     BIC.B   #4,&$20C
19228     SUB     #1,R10
19229 0<> WHILE
19230     ADD R9,R8
19231     BEGIN
19232         MOV &$390,R9
19233         CMP R8,R9
19234         U>= IF
19235         BIC #$30,&$380
19236         GOTO FW1
19237         THEN
19238         BIT.B #4,&$20C
19239     0<> UNTIL
19240 REPEAT
19241 BIC #$30,&$380
19242 RLAM    #1,R11
19243 MOV.B   R11,R9
19244 RRUM    #2,R9
19245 BIT     #$4000,R11
19246 0= IF   BIS #$40,R9
19247 THEN
19248 RRUM    #3,R11
19249 XOR     @R1,R11
19250 BIT     #$400,R11
19251 0= ?GOTO FW2
19252 XOR #$400,0(R1)
19253 SUB #8,R15
19254 MOV R14,6(R15)
19255 MOV &$1DDC,4(R15)
19256 MOV #$10,&$1DDC
19257 MOV R9,0(R15)
19258 MOV #0,R14
19259 LO2HI
19260     LCD_CLEAR
19261     <# # #S #36 HOLD #>
19262     ['] LCD_WRC IS EMIT
19263     TYPE
19264     ['] EMIT >BODY IS EMIT
19265 HI2LO
19266 MOV @R15+,&$1DDC
19267 MOV @R15+,R14
19268 FW1 FW2
19269     MOV @R1+,R2
19270     BIC #%1111_1000,R2
19271     MOV @R1+,R0
19272 ENDCODE
19273
19274
19275 HDNCODE STOP_R2L
19276 CMP #$40AA,&{RC5TOLCD}+8
19277 0<> IF
19278     BIC.B #4,&$20A
19279     BIC.B #4,&$20C
19280     MOV #0,&$3C0
19281     MOV #0,&$340
19282     MOV #0,&$342
19283     MOV #$40AA,&{RC5TOLCD}+8
19284     MOV &{RC5TOLCD}+10,&WARM+2
19285     MOV &{RC5TOLCD}+12,&$FFEA
19286     MOV &{RC5TOLCD}+14,&$FFDE
19287     MOV &{RC5TOLCD}+10,R0
19288 THEN 
19289 MOV @R1+,R0
19290 ENDCODE
19291
19292 CODE STOP
19293 BW1
19294 CALL #STOP_R2L
19295 COLON
19296 ECHO
19297 ." RC5toLCD is removed,"
19298 ."  type START to restart"
19299 ABORT" "
19300 ;
19301
19302 HDNCODE INI_R2L
19303 BIC #1,&$130
19304 MOV &$1808,R14
19305 CMP #$0E,R14
19306 0<> IF
19307     CMP #$0A,R14
19308     U>= ?GOTO BW1
19309 THEN
19310 BIT.B #$20,&$240
19311 0= ?GOTO BW1
19312 MOV #0,&$1808
19313 MOV #%10_1101_0100,&$3C0
19314 $1800 @ 16000 = [IF]
19315     MOV #1,&$3E0
19316 [THEN]
19317 $1800 @ 24000 = [IF]
19318     MOV #2,&$3E0
19319 [THEN]
19320     MOV #19,&$3D2
19321 MOV #%0110_0000,&$3C6
19322     MOV #10,&$3D6
19323     BIS.B #$20,&$204
19324     BIS.B #$20,&$20A
19325     BIS.B #7,&$245
19326     BIC.B #7,&$247
19327     BIS.B #$0F,&$224
19328     BIC.B #$0F,&$226
19329     BIS.B #4,&$20A
19330     BIC.B #4,&$20C
19331 MOV #%01_0001_0100,&$340
19332     MOV ##3276,&$352
19333     MOV #%10000,&$342
19334 COLON
19335     #1000 20_US
19336     %011 TOP_LCD
19337     #205 20_US
19338     %011 TOP_LCD
19339     #5 20_US
19340     %011 TOP_LCD
19341     #2 20_US
19342     %010 TOP_LCD
19343     #2 20_US
19344     %00101000 LCD_WRF
19345     %1000 LCD_WRF
19346     LCD_CLEAR
19347     %0110 LCD_WRF
19348     %1100 LCD_WRF
19349     LCD_CLEAR
19350     ['] LCD_HOME IS CR
19351     ['] LCD_WRC  IS EMIT
19352     CR ." I love you"
19353     ['] CR >BODY IS CR
19354     ['] EMIT >BODY IS EMIT
19355     ." RC5toLCD is running. Type STOP to quit"
19356     ABORT" "
19357 ;
19358
19359 CODE START
19360 CMP #$40AA,&{RC5TOLCD}+8
19361 0= IF
19362     MOV #STOP_R2L,&{RC5TOLCD}+8
19363     MOV &WARM+2,&{RC5TOLCD}+10
19364     MOV #INI_R2L,&WARM+2
19365     MOV &$FFEA,&{RC5TOLCD}+12
19366     MOV #WDT_INT,&$FFEA
19367     MOV &$FFDE,&{RC5TOLCD}+14
19368     MOV #RC5_INT,&$FFDE
19369     MOV #INI_R2L,R0
19370 THEN
19371 MOV @R13+,R0 
19372 ENDCODE 
19373
19374
19375 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
19376
19377 MARKER {RC5TOLCD}
19378 6 ALLOT
19379
19380
19381
19382 [UNDEFINED] CONSTANT [IF]
19383 : CONSTANT 
19384 CREATE
19385 HI2LO
19386 MOV R14,-2(R10)
19387 MOV @R15+,R14
19388 MOV @R1+,R13
19389 MOV @R13+,R0
19390 ENDCODE
19391 [THEN]
19392
19393 [UNDEFINED] STATE [IF]
19394 $1DBE CONSTANT STATE
19395 [THEN]
19396
19397 [UNDEFINED] = [IF]
19398 CODE =
19399 SUB @R15+,R14
19400 0<> IF
19401     AND #0,R14
19402     MOV @R13+,R0
19403 THEN
19404 XOR #-1,R14
19405 MOV @R13+,R0
19406 ENDCODE
19407 [THEN]
19408
19409 [UNDEFINED] IF [IF]
19410 CODE IF
19411 SUB #2,R15
19412 MOV R14,0(R15)
19413 MOV &$1DC6,R14
19414 ADD #4,&$1DC6
19415 MOV #$4034,0(R14)
19416 ADD #2,R14
19417 MOV @R13+,R0
19418 ENDCODE IMMEDIATE
19419
19420 CODE THEN
19421 MOV &$1DC6,0(R14)
19422 MOV @R15+,R14
19423 MOV @R13+,R0
19424 ENDCODE IMMEDIATE
19425 [THEN]
19426
19427 [UNDEFINED] ELSE [IF]
19428 CODE ELSE
19429 ADD #4,&$1DC6
19430 MOV &$1DC6,R10
19431 MOV #$403A,-4(R10)
19432 MOV R10,0(R14)
19433 SUB #2,R10
19434 MOV R10,R14
19435 MOV @R13+,R0
19436 ENDCODE IMMEDIATE
19437 [THEN]
19438
19439 [UNDEFINED] IS [IF]
19440
19441 CODE DEFER!
19442 MOV @R15+,2(R14)
19443 MOV @R15+,R14
19444 MOV @R13+,R0
19445 ENDCODE
19446
19447
19448 : IS
19449 STATE @
19450 IF  POSTPONE ['] POSTPONE DEFER! 
19451 ELSE ' DEFER! 
19452 THEN
19453 ; IMMEDIATE
19454 [THEN]
19455
19456 [UNDEFINED] >BODY [IF]
19457 CODE >BODY
19458 ADD #4,R14
19459 MOV @R13+,R0
19460 ENDCODE
19461 [THEN]
19462
19463
19464 CODE 20_US
19465 BEGIN
19466     BEGIN
19467         BIT #1,&$3C0
19468     0<> UNTIL
19469     BIC #1,&$3C0
19470     SUB #1,R14
19471 U< UNTIL
19472 MOV @R15+,R14
19473 MOV @R13+,R0
19474 ENDCODE
19475
19476 CODE TOP_LCD
19477     BIS.B #4,&$243
19478     BIT.B #1,&$241
19479 0= IF
19480     AND.B #$0F,R14
19481     MOV.B R14,&$222
19482     BIC.B #4,&$243
19483     MOV @R15+,R14
19484     MOV @R13+,R0
19485 THEN
19486     SUB #2,R15
19487     MOV R14,0(R15)
19488     BIC.B #4,&$243
19489     MOV.B &$220,R14
19490     AND.B #$0F,R14
19491     MOV @R13+,R0
19492 ENDCODE
19493
19494 CODE LCD_WRC
19495     BIS.B #2,&$243
19496 BW1 SUB #2,R15
19497     MOV R14,0(R15)
19498     RRUM #4,R14
19499     BIC.B #1,&$243
19500     BIS.B #$0F,&$224
19501 COLON
19502     TOP_LCD 2 20_US
19503     TOP_LCD 2 20_US 
19504 ;
19505
19506 CODE LCD_WRF
19507     BIC.B #2,&$243
19508     GOTO BW1
19509 ENDCODE
19510
19511 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
19512 : LCD_HOME $02 LCD_WRF 100 20_us ;
19513
19514
19515
19516 HDNCODE WDT_INT
19517 BIT.B #$20,&$240
19518 0= IF
19519     CMP #19,&$3D6
19520     U< IF
19521         ADD #1,&$3D6
19522     THEN
19523 ELSE
19524     BIT.B #$40,&$240
19525     0= IF
19526         CMP #3,&$3D6
19527         U>= IF
19528            SUB #1,&$3D6
19529         THEN
19530     THEN
19531 THEN
19532 RETI
19533 ENDCODE
19534
19535 HDNCODE RC5_INT
19536 $1800 @ 16000 = [IF]
19537     MOV #1,&$3A0
19538 [THEN]
19539 $1800 @ 24000 = [IF]
19540     MOV #2,&$3A0
19541 [THEN]
19542 MOV #1778,R9
19543 MOV #14,R10
19544 BEGIN
19545 MOV #%1011100100,&$380
19546     RRUM    #1,R9
19547     MOV     R9,R8
19548     RRUM    #1,R8
19549     ADD     R9,R8
19550     BEGIN   CMP R8,&$390
19551     U>= UNTIL
19552     BIT.B   #4,&$200
19553     ADDC    R11,R11
19554     MOV.B   &$200,&$208
19555     BIC.B   #4,&$20C
19556     SUB     #1,R10
19557 0<> WHILE
19558     ADD R9,R8
19559     BEGIN
19560         MOV &$390,R9
19561         CMP R8,R9
19562         U>= IF
19563         BIC #$30,&$380
19564         GOTO FW1
19565         THEN
19566         BIT.B #4,&$20C
19567     0<> UNTIL
19568 REPEAT
19569 BIC #$30,&$380
19570 RLAM    #1,R11
19571 MOV.B   R11,R9
19572 RRUM    #2,R9
19573 BIT     #$4000,R11
19574 0= IF   BIS #$40,R9
19575 THEN
19576 RRUM    #3,R11
19577 XOR     @R1,R11
19578 BIT     #$400,R11
19579 0= ?GOTO FW2
19580 XOR #$400,0(R1)
19581 SUB #8,R15
19582 MOV R14,6(R15)
19583 MOV &$1DDC,4(R15)
19584 MOV #$10,&$1DDC
19585 MOV R9,0(R15)
19586 MOV #0,R14
19587 LO2HI
19588     LCD_CLEAR
19589     <# # #S #36 HOLD #>
19590     ['] LCD_WRC IS EMIT
19591     TYPE
19592     ['] EMIT >BODY IS EMIT
19593 HI2LO
19594 MOV @R15+,&$1DDC
19595 MOV @R15+,R14
19596 FW1 FW2
19597     MOV @R1+,R2
19598     BIC #%1111_1000,R2
19599     MOV @R1+,R0
19600 ENDCODE
19601
19602
19603 HDNCODE STOP_R2L
19604 CMP #$40AA,&{RC5TOLCD}+8
19605 0<> IF
19606     BIC.B #4,&$20A
19607     BIC.B #4,&$20C
19608     MOV #0,&$3C0
19609     MOV #0,&$340
19610     MOV #0,&$342
19611     MOV #$40AA,&{RC5TOLCD}+8
19612     MOV &{RC5TOLCD}+10,&WARM+2
19613     MOV &{RC5TOLCD}+12,&$FFEA
19614     MOV &{RC5TOLCD}+14,&$FFDE
19615     MOV &{RC5TOLCD}+10,R0
19616 THEN 
19617 MOV @R1+,R0
19618 ENDCODE
19619
19620 CODE STOP
19621 BW1
19622 CALL #STOP_R2L
19623 COLON
19624 ECHO
19625 ." RC5toLCD is removed,"
19626 ."  type START to restart"
19627 ABORT" "
19628 ;
19629
19630 HDNCODE INI_R2L
19631 BIC #1,&$130
19632 MOV &$1808,R14
19633 CMP #$0E,R14
19634 0<> IF
19635     CMP #$0A,R14
19636     U>= ?GOTO BW1
19637 THEN
19638 BIT.B #$20,&$240
19639 0= ?GOTO BW1
19640 MOV #0,&$1808
19641 MOV #%10_1101_0100,&$3C0
19642 $1800 @ 16000 = [IF]
19643     MOV #1,&$3E0
19644 [THEN]
19645 $1800 @ 24000 = [IF]
19646     MOV #2,&$3E0
19647 [THEN]
19648     MOV #19,&$3D2
19649 MOV #%0110_0000,&$3C6
19650     MOV #10,&$3D6
19651     BIS.B #$20,&$204
19652     BIS.B #$20,&$20A
19653     BIS.B #7,&$245
19654     BIC.B #7,&$247
19655     BIS.B #$0F,&$224
19656     BIC.B #$0F,&$226
19657     BIS.B #4,&$20A
19658     BIC.B #4,&$20C
19659 MOV #%01_0001_0100,&$340
19660     MOV ##3276,&$352
19661     MOV #%10000,&$342
19662 COLON
19663     #1000 20_US
19664     %011 TOP_LCD
19665     #205 20_US
19666     %011 TOP_LCD
19667     #5 20_US
19668     %011 TOP_LCD
19669     #2 20_US
19670     %010 TOP_LCD
19671     #2 20_US
19672     %00101000 LCD_WRF
19673     %1000 LCD_WRF
19674     LCD_CLEAR
19675     %0110 LCD_WRF
19676     %1100 LCD_WRF
19677     LCD_CLEAR
19678     ['] LCD_HOME IS CR
19679     ['] LCD_WRC  IS EMIT
19680     CR ." I love you"
19681     ['] CR >BODY IS CR
19682     ['] EMIT >BODY IS EMIT
19683     ." RC5toLCD is running. Type STOP to quit"
19684     ABORT" "
19685 ;
19686
19687 CODE START
19688 CMP #$40AA,&{RC5TOLCD}+8
19689 0= IF
19690     MOV #STOP_R2L,&{RC5TOLCD}+8
19691     MOV &WARM+2,&{RC5TOLCD}+10
19692     MOV #INI_R2L,&WARM+2
19693     MOV &$FFEA,&{RC5TOLCD}+12
19694     MOV #WDT_INT,&$FFEA
19695     MOV &$FFDE,&{RC5TOLCD}+14
19696     MOV #RC5_INT,&$FFDE
19697     MOV #INI_R2L,R0
19698 THEN
19699 MOV @R13+,R0 
19700 ENDCODE 
19701
19702
19703 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
19704
19705 MARKER {RC5TOLCD}
19706 6 ALLOT
19707
19708
19709
19710 [UNDEFINED] CONSTANT [IF]
19711 : CONSTANT 
19712 CREATE
19713 HI2LO
19714 MOV R14,-2(R10)
19715 MOV @R15+,R14
19716 MOV @R1+,R13
19717 MOV @R13+,R0
19718 ENDCODE
19719 [THEN]
19720
19721 [UNDEFINED] STATE [IF]
19722 $1DBE CONSTANT STATE
19723 [THEN]
19724
19725 [UNDEFINED] = [IF]
19726 CODE =
19727 SUB @R15+,R14
19728 0<> IF
19729     AND #0,R14
19730     MOV @R13+,R0
19731 THEN
19732 XOR #-1,R14
19733 MOV @R13+,R0
19734 ENDCODE
19735 [THEN]
19736
19737 [UNDEFINED] IF [IF]
19738 CODE IF
19739 SUB #2,R15
19740 MOV R14,0(R15)
19741 MOV &$1DC6,R14
19742 ADD #4,&$1DC6
19743 MOV #$4034,0(R14)
19744 ADD #2,R14
19745 MOV @R13+,R0
19746 ENDCODE IMMEDIATE
19747
19748 CODE THEN
19749 MOV &$1DC6,0(R14)
19750 MOV @R15+,R14
19751 MOV @R13+,R0
19752 ENDCODE IMMEDIATE
19753 [THEN]
19754
19755 [UNDEFINED] ELSE [IF]
19756 CODE ELSE
19757 ADD #4,&$1DC6
19758 MOV &$1DC6,R10
19759 MOV #$403A,-4(R10)
19760 MOV R10,0(R14)
19761 SUB #2,R10
19762 MOV R10,R14
19763 MOV @R13+,R0
19764 ENDCODE IMMEDIATE
19765 [THEN]
19766
19767 [UNDEFINED] IS [IF]
19768
19769 CODE DEFER!
19770 MOV @R15+,2(R14)
19771 MOV @R15+,R14
19772 MOV @R13+,R0
19773 ENDCODE
19774
19775
19776 : IS
19777 STATE @
19778 IF  POSTPONE ['] POSTPONE DEFER! 
19779 ELSE ' DEFER! 
19780 THEN
19781 ; IMMEDIATE
19782 [THEN]
19783
19784 [UNDEFINED] >BODY [IF]
19785 CODE >BODY
19786 ADD #4,R14
19787 MOV @R13+,R0
19788 ENDCODE
19789 [THEN]
19790
19791
19792 CODE 20_US
19793 BEGIN
19794     BEGIN
19795         BIT #1,&$3C0
19796     0<> UNTIL
19797     BIC #1,&$3C0
19798     SUB #1,R14
19799 U< UNTIL
19800 MOV @R15+,R14
19801 MOV @R13+,R0
19802 ENDCODE
19803
19804 CODE TOP_LCD
19805     BIS.B #4,&$243
19806     BIT.B #1,&$241
19807 0= IF
19808     AND.B #$0F,R14
19809     MOV.B R14,&$222
19810     BIC.B #4,&$243
19811     MOV @R15+,R14
19812     MOV @R13+,R0
19813 THEN
19814     SUB #2,R15
19815     MOV R14,0(R15)
19816     BIC.B #4,&$243
19817     MOV.B &$220,R14
19818     AND.B #$0F,R14
19819     MOV @R13+,R0
19820 ENDCODE
19821
19822 CODE LCD_WRC
19823     BIS.B #2,&$243
19824 BW1 SUB #2,R15
19825     MOV R14,0(R15)
19826     RRUM #4,R14
19827     BIC.B #1,&$243
19828     BIS.B #$0F,&$224
19829 COLON
19830     TOP_LCD 2 20_US
19831     TOP_LCD 2 20_US 
19832 ;
19833
19834 CODE LCD_WRF
19835     BIC.B #2,&$243
19836     GOTO BW1
19837 ENDCODE
19838
19839 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
19840 : LCD_HOME $02 LCD_WRF 100 20_us ;
19841
19842
19843
19844 HDNCODE WDT_INT
19845 BIT.B #$20,&$240
19846 0= IF
19847     CMP #19,&$3D6
19848     U< IF
19849         ADD #1,&$3D6
19850     THEN
19851 ELSE
19852     BIT.B #$40,&$240
19853     0= IF
19854         CMP #3,&$3D6
19855         U>= IF
19856            SUB #1,&$3D6
19857         THEN
19858     THEN
19859 THEN
19860 RETI
19861 ENDCODE
19862
19863 HDNCODE RC5_INT
19864 $1800 @ 16000 = [IF]
19865     MOV #1,&$3A0
19866 [THEN]
19867 $1800 @ 24000 = [IF]
19868     MOV #2,&$3A0
19869 [THEN]
19870 MOV #1778,R9
19871 MOV #14,R10
19872 BEGIN
19873 MOV #%1011100100,&$380
19874     RRUM    #1,R9
19875     MOV     R9,R8
19876     RRUM    #1,R8
19877     ADD     R9,R8
19878     BEGIN   CMP R8,&$390
19879     U>= UNTIL
19880     BIT.B   #4,&$200
19881     ADDC    R11,R11
19882     MOV.B   &$200,&$208
19883     BIC.B   #4,&$20C
19884     SUB     #1,R10
19885 0<> WHILE
19886     ADD R9,R8
19887     BEGIN
19888         MOV &$390,R9
19889         CMP R8,R9
19890         U>= IF
19891         BIC #$30,&$380
19892         GOTO FW1
19893         THEN
19894         BIT.B #4,&$20C
19895     0<> UNTIL
19896 REPEAT
19897 BIC #$30,&$380
19898 RLAM    #1,R11
19899 MOV.B   R11,R9
19900 RRUM    #2,R9
19901 BIT     #$4000,R11
19902 0= IF   BIS #$40,R9
19903 THEN
19904 RRUM    #3,R11
19905 XOR     @R1,R11
19906 BIT     #$400,R11
19907 0= ?GOTO FW2
19908 XOR #$400,0(R1)
19909 SUB #8,R15
19910 MOV R14,6(R15)
19911 MOV &$1DDC,4(R15)
19912 MOV #$10,&$1DDC
19913 MOV R9,0(R15)
19914 MOV #0,R14
19915 LO2HI
19916     LCD_CLEAR
19917     <# # #S #36 HOLD #>
19918     ['] LCD_WRC IS EMIT
19919     TYPE
19920     ['] EMIT >BODY IS EMIT
19921 HI2LO
19922 MOV @R15+,&$1DDC
19923 MOV @R15+,R14
19924 FW1 FW2
19925     MOV @R1+,R2
19926     BIC #%1111_1000,R2
19927     MOV @R1+,R0
19928 ENDCODE
19929
19930
19931 HDNCODE STOP_R2L
19932 CMP #$40AA,&{RC5TOLCD}+8
19933 0<> IF
19934     BIC.B #4,&$20A
19935     BIC.B #4,&$20C
19936     MOV #0,&$3C0
19937     MOV #0,&$340
19938     MOV #0,&$342
19939     MOV #$40AA,&{RC5TOLCD}+8
19940     MOV &{RC5TOLCD}+10,&WARM+2
19941     MOV &{RC5TOLCD}+12,&$FFEA
19942     MOV &{RC5TOLCD}+14,&$FFDE
19943     MOV &{RC5TOLCD}+10,R0
19944 THEN 
19945 MOV @R1+,R0
19946 ENDCODE
19947
19948 CODE STOP
19949 BW1
19950 CALL #STOP_R2L
19951 COLON
19952 ECHO
19953 ." RC5toLCD is removed,"
19954 ."  type START to restart"
19955 ABORT" "
19956 ;
19957
19958 HDNCODE INI_R2L
19959 BIC #1,&$130
19960 MOV &$1808,R14
19961 CMP #$0E,R14
19962 0<> IF
19963     CMP #$0A,R14
19964     U>= ?GOTO BW1
19965 THEN
19966 BIT.B #$20,&$240
19967 0= ?GOTO BW1
19968 MOV #0,&$1808
19969 MOV #%10_1101_0100,&$3C0
19970 $1800 @ 16000 = [IF]
19971     MOV #1,&$3E0
19972 [THEN]
19973 $1800 @ 24000 = [IF]
19974     MOV #2,&$3E0
19975 [THEN]
19976     MOV #19,&$3D2
19977 MOV #%0110_0000,&$3C6
19978     MOV #10,&$3D6
19979     BIS.B #$20,&$204
19980     BIS.B #$20,&$20A
19981     BIS.B #7,&$245
19982     BIC.B #7,&$247
19983     BIS.B #$0F,&$224
19984     BIC.B #$0F,&$226
19985     BIS.B #4,&$20A
19986     BIC.B #4,&$20C
19987 MOV #%01_0001_0100,&$340
19988     MOV ##3276,&$352
19989     MOV #%10000,&$342
19990 COLON
19991     #1000 20_US
19992     %011 TOP_LCD
19993     #205 20_US
19994     %011 TOP_LCD
19995     #5 20_US
19996     %011 TOP_LCD
19997     #2 20_US
19998     %010 TOP_LCD
19999     #2 20_US
20000     %00101000 LCD_WRF
20001     %1000 LCD_WRF
20002     LCD_CLEAR
20003     %0110 LCD_WRF
20004     %1100 LCD_WRF
20005     LCD_CLEAR
20006     ['] LCD_HOME IS CR
20007     ['] LCD_WRC  IS EMIT
20008     CR ." I love you"
20009     ['] CR >BODY IS CR
20010     ['] EMIT >BODY IS EMIT
20011     ." RC5toLCD is running. Type STOP to quit"
20012     ABORT" "
20013 ;
20014
20015 CODE START
20016 CMP #$40AA,&{RC5TOLCD}+8
20017 0= IF
20018     MOV #STOP_R2L,&{RC5TOLCD}+8
20019     MOV &WARM+2,&{RC5TOLCD}+10
20020     MOV #INI_R2L,&WARM+2
20021     MOV &$FFEA,&{RC5TOLCD}+12
20022     MOV #WDT_INT,&$FFEA
20023     MOV &$FFDE,&{RC5TOLCD}+14
20024     MOV #RC5_INT,&$FFDE
20025     MOV #INI_R2L,R0
20026 THEN
20027 MOV @R13+,R0 
20028 ENDCODE 
20029
20030
20031 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
20032
20033 MARKER {RC5TOLCD}
20034 6 ALLOT
20035
20036
20037
20038 [UNDEFINED] CONSTANT [IF]
20039 : CONSTANT 
20040 CREATE
20041 HI2LO
20042 MOV R14,-2(R10)
20043 MOV @R15+,R14
20044 MOV @R1+,R13
20045 MOV @R13+,R0
20046 ENDCODE
20047 [THEN]
20048
20049 [UNDEFINED] STATE [IF]
20050 $1DBE CONSTANT STATE
20051 [THEN]
20052
20053 [UNDEFINED] = [IF]
20054 CODE =
20055 SUB @R15+,R14
20056 0<> IF
20057     AND #0,R14
20058     MOV @R13+,R0
20059 THEN
20060 XOR #-1,R14
20061 MOV @R13+,R0
20062 ENDCODE
20063 [THEN]
20064
20065 [UNDEFINED] IF [IF]
20066 CODE IF
20067 SUB #2,R15
20068 MOV R14,0(R15)
20069 MOV &$1DC6,R14
20070 ADD #4,&$1DC6
20071 MOV #$4034,0(R14)
20072 ADD #2,R14
20073 MOV @R13+,R0
20074 ENDCODE IMMEDIATE
20075
20076 CODE THEN
20077 MOV &$1DC6,0(R14)
20078 MOV @R15+,R14
20079 MOV @R13+,R0
20080 ENDCODE IMMEDIATE
20081 [THEN]
20082
20083 [UNDEFINED] ELSE [IF]
20084 CODE ELSE
20085 ADD #4,&$1DC6
20086 MOV &$1DC6,R10
20087 MOV #$403A,-4(R10)
20088 MOV R10,0(R14)
20089 SUB #2,R10
20090 MOV R10,R14
20091 MOV @R13+,R0
20092 ENDCODE IMMEDIATE
20093 [THEN]
20094
20095 [UNDEFINED] IS [IF]
20096
20097 CODE DEFER!
20098 MOV @R15+,2(R14)
20099 MOV @R15+,R14
20100 MOV @R13+,R0
20101 ENDCODE
20102
20103
20104 : IS
20105 STATE @
20106 IF  POSTPONE ['] POSTPONE DEFER! 
20107 ELSE ' DEFER! 
20108 THEN
20109 ; IMMEDIATE
20110 [THEN]
20111
20112 [UNDEFINED] >BODY [IF]
20113 CODE >BODY
20114 ADD #4,R14
20115 MOV @R13+,R0
20116 ENDCODE
20117 [THEN]
20118
20119
20120 CODE 20_US
20121 BEGIN
20122     BEGIN
20123         BIT #1,&$3C0
20124     0<> UNTIL
20125     BIC #1,&$3C0
20126     SUB #1,R14
20127 U< UNTIL
20128 MOV @R15+,R14
20129 MOV @R13+,R0
20130 ENDCODE
20131
20132 CODE TOP_LCD
20133     BIS.B #4,&$243
20134     BIT.B #1,&$241
20135 0= IF
20136     AND.B #$0F,R14
20137     MOV.B R14,&$222
20138     BIC.B #4,&$243
20139     MOV @R15+,R14
20140     MOV @R13+,R0
20141 THEN
20142     SUB #2,R15
20143     MOV R14,0(R15)
20144     BIC.B #4,&$243
20145     MOV.B &$220,R14
20146     AND.B #$0F,R14
20147     MOV @R13+,R0
20148 ENDCODE
20149
20150 CODE LCD_WRC
20151     BIS.B #2,&$243
20152 BW1 SUB #2,R15
20153     MOV R14,0(R15)
20154     RRUM #4,R14
20155     BIC.B #1,&$243
20156     BIS.B #$0F,&$224
20157 COLON
20158     TOP_LCD 2 20_US
20159     TOP_LCD 2 20_US 
20160 ;
20161
20162 CODE LCD_WRF
20163     BIC.B #2,&$243
20164     GOTO BW1
20165 ENDCODE
20166
20167 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
20168 : LCD_HOME $02 LCD_WRF 100 20_us ;
20169
20170
20171
20172 HDNCODE WDT_INT
20173 BIT.B #$20,&$240
20174 0= IF
20175     CMP #19,&$3D6
20176     U< IF
20177         ADD #1,&$3D6
20178     THEN
20179 ELSE
20180     BIT.B #$40,&$240
20181     0= IF
20182         CMP #3,&$3D6
20183         U>= IF
20184            SUB #1,&$3D6
20185         THEN
20186     THEN
20187 THEN
20188 RETI
20189 ENDCODE
20190
20191 HDNCODE RC5_INT
20192 $1800 @ 16000 = [IF]
20193     MOV #1,&$3A0
20194 [THEN]
20195 $1800 @ 24000 = [IF]
20196     MOV #2,&$3A0
20197 [THEN]
20198 MOV #1778,R9
20199 MOV #14,R10
20200 BEGIN
20201 MOV #%1011100100,&$380
20202     RRUM    #1,R9
20203     MOV     R9,R8
20204     RRUM    #1,R8
20205     ADD     R9,R8
20206     BEGIN   CMP R8,&$390
20207     U>= UNTIL
20208     BIT.B   #4,&$200
20209     ADDC    R11,R11
20210     MOV.B   &$200,&$208
20211     BIC.B   #4,&$20C
20212     SUB     #1,R10
20213 0<> WHILE
20214     ADD R9,R8
20215     BEGIN
20216         MOV &$390,R9
20217         CMP R8,R9
20218         U>= IF
20219         BIC #$30,&$380
20220         GOTO FW1
20221         THEN
20222         BIT.B #4,&$20C
20223     0<> UNTIL
20224 REPEAT
20225 BIC #$30,&$380
20226 RLAM    #1,R11
20227 MOV.B   R11,R9
20228 RRUM    #2,R9
20229 BIT     #$4000,R11
20230 0= IF   BIS #$40,R9
20231 THEN
20232 RRUM    #3,R11
20233 XOR     @R1,R11
20234 BIT     #$400,R11
20235 0= ?GOTO FW2
20236 XOR #$400,0(R1)
20237 SUB #8,R15
20238 MOV R14,6(R15)
20239 MOV &$1DDC,4(R15)
20240 MOV #$10,&$1DDC
20241 MOV R9,0(R15)
20242 MOV #0,R14
20243 LO2HI
20244     LCD_CLEAR
20245     <# # #S #36 HOLD #>
20246     ['] LCD_WRC IS EMIT
20247     TYPE
20248     ['] EMIT >BODY IS EMIT
20249 HI2LO
20250 MOV @R15+,&$1DDC
20251 MOV @R15+,R14
20252 FW1 FW2
20253     MOV @R1+,R2
20254     BIC #%1111_1000,R2
20255     MOV @R1+,R0
20256 ENDCODE
20257
20258
20259 HDNCODE STOP_R2L
20260 CMP #$40AA,&{RC5TOLCD}+8
20261 0<> IF
20262     BIC.B #4,&$20A
20263     BIC.B #4,&$20C
20264     MOV #0,&$3C0
20265     MOV #0,&$340
20266     MOV #0,&$342
20267     MOV #$40AA,&{RC5TOLCD}+8
20268     MOV &{RC5TOLCD}+10,&WARM+2
20269     MOV &{RC5TOLCD}+12,&$FFEA
20270     MOV &{RC5TOLCD}+14,&$FFDE
20271     MOV &{RC5TOLCD}+10,R0
20272 THEN 
20273 MOV @R1+,R0
20274 ENDCODE
20275
20276 CODE STOP
20277 BW1
20278 CALL #STOP_R2L
20279 COLON
20280 ECHO
20281 ." RC5toLCD is removed,"
20282 ."  type START to restart"
20283 ABORT" "
20284 ;
20285
20286 HDNCODE INI_R2L
20287 BIC #1,&$130
20288 MOV &$1808,R14
20289 CMP #$0E,R14
20290 0<> IF
20291     CMP #$0A,R14
20292     U>= ?GOTO BW1
20293 THEN
20294 BIT.B #$20,&$240
20295 0= ?GOTO BW1
20296 MOV #0,&$1808
20297 MOV #%10_1101_0100,&$3C0
20298 $1800 @ 16000 = [IF]
20299     MOV #1,&$3E0
20300 [THEN]
20301 $1800 @ 24000 = [IF]
20302     MOV #2,&$3E0
20303 [THEN]
20304     MOV #19,&$3D2
20305 MOV #%0110_0000,&$3C6
20306     MOV #10,&$3D6
20307     BIS.B #$20,&$204
20308     BIS.B #$20,&$20A
20309     BIS.B #7,&$245
20310     BIC.B #7,&$247
20311     BIS.B #$0F,&$224
20312     BIC.B #$0F,&$226
20313     BIS.B #4,&$20A
20314     BIC.B #4,&$20C
20315 MOV #%01_0001_0100,&$340
20316     MOV ##3276,&$352
20317     MOV #%10000,&$342
20318 COLON
20319     #1000 20_US
20320     %011 TOP_LCD
20321     #205 20_US
20322     %011 TOP_LCD
20323     #5 20_US
20324     %011 TOP_LCD
20325     #2 20_US
20326     %010 TOP_LCD
20327     #2 20_US
20328     %00101000 LCD_WRF
20329     %1000 LCD_WRF
20330     LCD_CLEAR
20331     %0110 LCD_WRF
20332     %1100 LCD_WRF
20333     LCD_CLEAR
20334     ['] LCD_HOME IS CR
20335     ['] LCD_WRC  IS EMIT
20336     CR ." I love you"
20337     ['] CR >BODY IS CR
20338     ['] EMIT >BODY IS EMIT
20339     ." RC5toLCD is running. Type STOP to quit"
20340     ABORT" "
20341 ;
20342
20343 CODE START
20344 CMP #$40AA,&{RC5TOLCD}+8
20345 0= IF
20346     MOV #STOP_R2L,&{RC5TOLCD}+8
20347     MOV &WARM+2,&{RC5TOLCD}+10
20348     MOV #INI_R2L,&WARM+2
20349     MOV &$FFEA,&{RC5TOLCD}+12
20350     MOV #WDT_INT,&$FFEA
20351     MOV &$FFDE,&{RC5TOLCD}+14
20352     MOV #RC5_INT,&$FFDE
20353     MOV #INI_R2L,R0
20354 THEN
20355 MOV @R13+,R0 
20356 ENDCODE 
20357
20358
20359 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
20360
20361 MARKER {RC5TOLCD}
20362 6 ALLOT
20363
20364
20365
20366 [UNDEFINED] CONSTANT [IF]
20367 : CONSTANT 
20368 CREATE
20369 HI2LO
20370 MOV R14,-2(R10)
20371 MOV @R15+,R14
20372 MOV @R1+,R13
20373 MOV @R13+,R0
20374 ENDCODE
20375 [THEN]
20376
20377 [UNDEFINED] STATE [IF]
20378 $1DBE CONSTANT STATE
20379 [THEN]
20380
20381 [UNDEFINED] = [IF]
20382 CODE =
20383 SUB @R15+,R14
20384 0<> IF
20385     AND #0,R14
20386     MOV @R13+,R0
20387 THEN
20388 XOR #-1,R14
20389 MOV @R13+,R0
20390 ENDCODE
20391 [THEN]
20392
20393 [UNDEFINED] IF [IF]
20394 CODE IF
20395 SUB #2,R15
20396 MOV R14,0(R15)
20397 MOV &$1DC6,R14
20398 ADD #4,&$1DC6
20399 MOV #$4034,0(R14)
20400 ADD #2,R14
20401 MOV @R13+,R0
20402 ENDCODE IMMEDIATE
20403
20404 CODE THEN
20405 MOV &$1DC6,0(R14)
20406 MOV @R15+,R14
20407 MOV @R13+,R0
20408 ENDCODE IMMEDIATE
20409 [THEN]
20410
20411 [UNDEFINED] ELSE [IF]
20412 CODE ELSE
20413 ADD #4,&$1DC6
20414 MOV &$1DC6,R10
20415 MOV #$403A,-4(R10)
20416 MOV R10,0(R14)
20417 SUB #2,R10
20418 MOV R10,R14
20419 MOV @R13+,R0
20420 ENDCODE IMMEDIATE
20421 [THEN]
20422
20423 [UNDEFINED] IS [IF]
20424
20425 CODE DEFER!
20426 MOV @R15+,2(R14)
20427 MOV @R15+,R14
20428 MOV @R13+,R0
20429 ENDCODE
20430
20431
20432 : IS
20433 STATE @
20434 IF  POSTPONE ['] POSTPONE DEFER! 
20435 ELSE ' DEFER! 
20436 THEN
20437 ; IMMEDIATE
20438 [THEN]
20439
20440 [UNDEFINED] >BODY [IF]
20441 CODE >BODY
20442 ADD #4,R14
20443 MOV @R13+,R0
20444 ENDCODE
20445 [THEN]
20446
20447
20448 CODE 20_US
20449 BEGIN
20450     BEGIN
20451         BIT #1,&$3C0
20452     0<> UNTIL
20453     BIC #1,&$3C0
20454     SUB #1,R14
20455 U< UNTIL
20456 MOV @R15+,R14
20457 MOV @R13+,R0
20458 ENDCODE
20459
20460 CODE TOP_LCD
20461     BIS.B #4,&$243
20462     BIT.B #1,&$241
20463 0= IF
20464     AND.B #$0F,R14
20465     MOV.B R14,&$222
20466     BIC.B #4,&$243
20467     MOV @R15+,R14
20468     MOV @R13+,R0
20469 THEN
20470     SUB #2,R15
20471     MOV R14,0(R15)
20472     BIC.B #4,&$243
20473     MOV.B &$220,R14
20474     AND.B #$0F,R14
20475     MOV @R13+,R0
20476 ENDCODE
20477
20478 CODE LCD_WRC
20479     BIS.B #2,&$243
20480 BW1 SUB #2,R15
20481     MOV R14,0(R15)
20482     RRUM #4,R14
20483     BIC.B #1,&$243
20484     BIS.B #$0F,&$224
20485 COLON
20486     TOP_LCD 2 20_US
20487     TOP_LCD 2 20_US 
20488 ;
20489
20490 CODE LCD_WRF
20491     BIC.B #2,&$243
20492     GOTO BW1
20493 ENDCODE
20494
20495 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
20496 : LCD_HOME $02 LCD_WRF 100 20_us ;
20497
20498
20499
20500 HDNCODE 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 RETI
20517 ENDCODE
20518
20519 HDNCODE RC5_INT
20520 $1800 @ 16000 = [IF]
20521     MOV #1,&$3A0
20522 [THEN]
20523 $1800 @ 24000 = [IF]
20524     MOV #2,&$3A0
20525 [THEN]
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 FW1
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 FW2
20564 XOR #$400,0(R1)
20565 SUB #8,R15
20566 MOV R14,6(R15)
20567 MOV &$1DDC,4(R15)
20568 MOV #$10,&$1DDC
20569 MOV R9,0(R15)
20570 MOV #0,R14
20571 LO2HI
20572     LCD_CLEAR
20573     <# # #S #36 HOLD #>
20574     ['] LCD_WRC IS EMIT
20575     TYPE
20576     ['] EMIT >BODY IS EMIT
20577 HI2LO
20578 MOV @R15+,&$1DDC
20579 MOV @R15+,R14
20580 FW1 FW2
20581     MOV @R1+,R2
20582     BIC #%1111_1000,R2
20583     MOV @R1+,R0
20584 ENDCODE
20585
20586
20587 HDNCODE STOP_R2L
20588 CMP #$40AA,&{RC5TOLCD}+8
20589 0<> IF
20590     BIC.B #4,&$20A
20591     BIC.B #4,&$20C
20592     MOV #0,&$3C0
20593     MOV #0,&$340
20594     MOV #0,&$342
20595     MOV #$40AA,&{RC5TOLCD}+8
20596     MOV &{RC5TOLCD}+10,&WARM+2
20597     MOV &{RC5TOLCD}+12,&$FFEA
20598     MOV &{RC5TOLCD}+14,&$FFDE
20599     MOV &{RC5TOLCD}+10,R0
20600 THEN 
20601 MOV @R1+,R0
20602 ENDCODE
20603
20604 CODE STOP
20605 BW1
20606 CALL #STOP_R2L
20607 COLON
20608 ECHO
20609 ." RC5toLCD is removed,"
20610 ."  type START to restart"
20611 ABORT" "
20612 ;
20613
20614 HDNCODE INI_R2L
20615 BIC #1,&$130
20616 MOV &$1808,R14
20617 CMP #$0E,R14
20618 0<> IF
20619     CMP #$0A,R14
20620     U>= ?GOTO BW1
20621 THEN
20622 BIT.B #$20,&$240
20623 0= ?GOTO BW1
20624 MOV #0,&$1808
20625 MOV #%10_1101_0100,&$3C0
20626 $1800 @ 16000 = [IF]
20627     MOV #1,&$3E0
20628 [THEN]
20629 $1800 @ 24000 = [IF]
20630     MOV #2,&$3E0
20631 [THEN]
20632     MOV #19,&$3D2
20633 MOV #%0110_0000,&$3C6
20634     MOV #10,&$3D6
20635     BIS.B #$20,&$204
20636     BIS.B #$20,&$20A
20637     BIS.B #7,&$245
20638     BIC.B #7,&$247
20639     BIS.B #$0F,&$224
20640     BIC.B #$0F,&$226
20641     BIS.B #4,&$20A
20642     BIC.B #4,&$20C
20643 MOV #%01_0001_0100,&$340
20644     MOV ##3276,&$352
20645     MOV #%10000,&$342
20646 COLON
20647     #1000 20_US
20648     %011 TOP_LCD
20649     #205 20_US
20650     %011 TOP_LCD
20651     #5 20_US
20652     %011 TOP_LCD
20653     #2 20_US
20654     %010 TOP_LCD
20655     #2 20_US
20656     %00101000 LCD_WRF
20657     %1000 LCD_WRF
20658     LCD_CLEAR
20659     %0110 LCD_WRF
20660     %1100 LCD_WRF
20661     LCD_CLEAR
20662     ['] LCD_HOME IS CR
20663     ['] LCD_WRC  IS EMIT
20664     CR ." I love you"
20665     ['] CR >BODY IS CR
20666     ['] EMIT >BODY IS EMIT
20667     ." RC5toLCD is running. Type STOP to quit"
20668     ABORT" "
20669 ;
20670
20671 CODE START
20672 CMP #$40AA,&{RC5TOLCD}+8
20673 0= IF
20674     MOV #STOP_R2L,&{RC5TOLCD}+8
20675     MOV &WARM+2,&{RC5TOLCD}+10
20676     MOV #INI_R2L,&WARM+2
20677     MOV &$FFEA,&{RC5TOLCD}+12
20678     MOV #WDT_INT,&$FFEA
20679     MOV &$FFDE,&{RC5TOLCD}+14
20680     MOV #RC5_INT,&$FFDE
20681     MOV #INI_R2L,R0
20682 THEN
20683 MOV @R13+,R0 
20684 ENDCODE 
20685
20686
20687 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
20688
20689 MARKER {RC5TOLCD}
20690 6 ALLOT
20691
20692
20693
20694 [UNDEFINED] CONSTANT [IF]
20695 : CONSTANT 
20696 CREATE
20697 HI2LO
20698 MOV R14,-2(R10)
20699 MOV @R15+,R14
20700 MOV @R1+,R13
20701 MOV @R13+,R0
20702 ENDCODE
20703 [THEN]
20704
20705 [UNDEFINED] STATE [IF]
20706 $1DBE CONSTANT STATE
20707 [THEN]
20708
20709 [UNDEFINED] = [IF]
20710 CODE =
20711 SUB @R15+,R14
20712 0<> IF
20713     AND #0,R14
20714     MOV @R13+,R0
20715 THEN
20716 XOR #-1,R14
20717 MOV @R13+,R0
20718 ENDCODE
20719 [THEN]
20720
20721 [UNDEFINED] IF [IF]
20722 CODE IF
20723 SUB #2,R15
20724 MOV R14,0(R15)
20725 MOV &$1DC6,R14
20726 ADD #4,&$1DC6
20727 MOV #$4034,0(R14)
20728 ADD #2,R14
20729 MOV @R13+,R0
20730 ENDCODE IMMEDIATE
20731
20732 CODE THEN
20733 MOV &$1DC6,0(R14)
20734 MOV @R15+,R14
20735 MOV @R13+,R0
20736 ENDCODE IMMEDIATE
20737 [THEN]
20738
20739 [UNDEFINED] ELSE [IF]
20740 CODE ELSE
20741 ADD #4,&$1DC6
20742 MOV &$1DC6,R10
20743 MOV #$403A,-4(R10)
20744 MOV R10,0(R14)
20745 SUB #2,R10
20746 MOV R10,R14
20747 MOV @R13+,R0
20748 ENDCODE IMMEDIATE
20749 [THEN]
20750
20751 [UNDEFINED] IS [IF]
20752
20753 CODE DEFER!
20754 MOV @R15+,2(R14)
20755 MOV @R15+,R14
20756 MOV @R13+,R0
20757 ENDCODE
20758
20759
20760 : IS
20761 STATE @
20762 IF  POSTPONE ['] POSTPONE DEFER! 
20763 ELSE ' DEFER! 
20764 THEN
20765 ; IMMEDIATE
20766 [THEN]
20767
20768 [UNDEFINED] >BODY [IF]
20769 CODE >BODY
20770 ADD #4,R14
20771 MOV @R13+,R0
20772 ENDCODE
20773 [THEN]
20774
20775
20776 CODE 20_US
20777 BEGIN
20778     BEGIN
20779         BIT #1,&$3C0
20780     0<> UNTIL
20781     BIC #1,&$3C0
20782     SUB #1,R14
20783 U< UNTIL
20784 MOV @R15+,R14
20785 MOV @R13+,R0
20786 ENDCODE
20787
20788 CODE TOP_LCD
20789     BIS.B #4,&$243
20790     BIT.B #1,&$241
20791 0= IF
20792     AND.B #$0F,R14
20793     MOV.B R14,&$222
20794     BIC.B #4,&$243
20795     MOV @R15+,R14
20796     MOV @R13+,R0
20797 THEN
20798     SUB #2,R15
20799     MOV R14,0(R15)
20800     BIC.B #4,&$243
20801     MOV.B &$220,R14
20802     AND.B #$0F,R14
20803     MOV @R13+,R0
20804 ENDCODE
20805
20806 CODE LCD_WRC
20807     BIS.B #2,&$243
20808 BW1 SUB #2,R15
20809     MOV R14,0(R15)
20810     RRUM #4,R14
20811     BIC.B #1,&$243
20812     BIS.B #$0F,&$224
20813 COLON
20814     TOP_LCD 2 20_US
20815     TOP_LCD 2 20_US 
20816 ;
20817
20818 CODE LCD_WRF
20819     BIC.B #2,&$243
20820     GOTO BW1
20821 ENDCODE
20822
20823 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
20824 : LCD_HOME $02 LCD_WRF 100 20_us ;
20825
20826
20827
20828 HDNCODE WDT_INT
20829 BIT.B #$20,&$240
20830 0= IF
20831     CMP #19,&$3D6
20832     U< IF
20833         ADD #1,&$3D6
20834     THEN
20835 ELSE
20836     BIT.B #$40,&$240
20837     0= IF
20838         CMP #3,&$3D6
20839         U>= IF
20840            SUB #1,&$3D6
20841         THEN
20842     THEN
20843 THEN
20844 RETI
20845 ENDCODE
20846
20847 HDNCODE RC5_INT
20848 $1800 @ 16000 = [IF]
20849     MOV #1,&$3A0
20850 [THEN]
20851 $1800 @ 24000 = [IF]
20852     MOV #2,&$3A0
20853 [THEN]
20854 MOV #1778,R9
20855 MOV #14,R10
20856 BEGIN
20857 MOV #%1011100100,&$380
20858     RRUM    #1,R9
20859     MOV     R9,R8
20860     RRUM    #1,R8
20861     ADD     R9,R8
20862     BEGIN   CMP R8,&$390
20863     U>= UNTIL
20864     BIT.B   #4,&$200
20865     ADDC    R11,R11
20866     MOV.B   &$200,&$208
20867     BIC.B   #4,&$20C
20868     SUB     #1,R10
20869 0<> WHILE
20870     ADD R9,R8
20871     BEGIN
20872         MOV &$390,R9
20873         CMP R8,R9
20874         U>= IF
20875         BIC #$30,&$380
20876         GOTO FW1
20877         THEN
20878         BIT.B #4,&$20C
20879     0<> UNTIL
20880 REPEAT
20881 BIC #$30,&$380
20882 RLAM    #1,R11
20883 MOV.B   R11,R9
20884 RRUM    #2,R9
20885 BIT     #$4000,R11
20886 0= IF   BIS #$40,R9
20887 THEN
20888 RRUM    #3,R11
20889 XOR     @R1,R11
20890 BIT     #$400,R11
20891 0= ?GOTO FW2
20892 XOR #$400,0(R1)
20893 SUB #8,R15
20894 MOV R14,6(R15)
20895 MOV &$1DDC,4(R15)
20896 MOV #$10,&$1DDC
20897 MOV R9,0(R15)
20898 MOV #0,R14
20899 LO2HI
20900     LCD_CLEAR
20901     <# # #S #36 HOLD #>
20902     ['] LCD_WRC IS EMIT
20903     TYPE
20904     ['] EMIT >BODY IS EMIT
20905 HI2LO
20906 MOV @R15+,&$1DDC
20907 MOV @R15+,R14
20908 FW1 FW2
20909     MOV @R1+,R2
20910     BIC #%1111_1000,R2
20911     MOV @R1+,R0
20912 ENDCODE
20913
20914
20915 HDNCODE STOP_R2L
20916 CMP #$40AA,&{RC5TOLCD}+8
20917 0<> IF
20918     BIC.B #4,&$20A
20919     BIC.B #4,&$20C
20920     MOV #0,&$3C0
20921     MOV #0,&$340
20922     MOV #0,&$342
20923     MOV #$40AA,&{RC5TOLCD}+8
20924     MOV &{RC5TOLCD}+10,&WARM+2
20925     MOV &{RC5TOLCD}+12,&$FFEA
20926     MOV &{RC5TOLCD}+14,&$FFDE
20927     MOV &{RC5TOLCD}+10,R0
20928 THEN 
20929 MOV @R1+,R0
20930 ENDCODE
20931
20932 CODE STOP
20933 BW1
20934 CALL #STOP_R2L
20935 COLON
20936 ECHO
20937 ." RC5toLCD is removed,"
20938 ."  type START to restart"
20939 ABORT" "
20940 ;
20941
20942 HDNCODE INI_R2L
20943 BIC #1,&$130
20944 MOV &$1808,R14
20945 CMP #$0E,R14
20946 0<> IF
20947     CMP #$0A,R14
20948     U>= ?GOTO BW1
20949 THEN
20950 BIT.B #$20,&$240
20951 0= ?GOTO BW1
20952 MOV #0,&$1808
20953 MOV #%10_1101_0100,&$3C0
20954 $1800 @ 16000 = [IF]
20955     MOV #1,&$3E0
20956 [THEN]
20957 $1800 @ 24000 = [IF]
20958     MOV #2,&$3E0
20959 [THEN]
20960     MOV #19,&$3D2
20961 MOV #%0110_0000,&$3C6
20962     MOV #10,&$3D6
20963     BIS.B #$20,&$204
20964     BIS.B #$20,&$20A
20965     BIS.B #7,&$245
20966     BIC.B #7,&$247
20967     BIS.B #$0F,&$224
20968     BIC.B #$0F,&$226
20969     BIS.B #4,&$20A
20970     BIC.B #4,&$20C
20971 MOV #%01_0001_0100,&$340
20972     MOV ##3276,&$352
20973     MOV #%10000,&$342
20974 COLON
20975     #1000 20_US
20976     %011 TOP_LCD
20977     #205 20_US
20978     %011 TOP_LCD
20979     #5 20_US
20980     %011 TOP_LCD
20981     #2 20_US
20982     %010 TOP_LCD
20983     #2 20_US
20984     %00101000 LCD_WRF
20985     %1000 LCD_WRF
20986     LCD_CLEAR
20987     %0110 LCD_WRF
20988     %1100 LCD_WRF
20989     LCD_CLEAR
20990     ['] LCD_HOME IS CR
20991     ['] LCD_WRC  IS EMIT
20992     CR ." I love you"
20993     ['] CR >BODY IS CR
20994     ['] EMIT >BODY IS EMIT
20995     ." RC5toLCD is running. Type STOP to quit"
20996     ABORT" "
20997 ;
20998
20999 CODE START
21000 CMP #$40AA,&{RC5TOLCD}+8
21001 0= IF
21002     MOV #STOP_R2L,&{RC5TOLCD}+8
21003     MOV &WARM+2,&{RC5TOLCD}+10
21004     MOV #INI_R2L,&WARM+2
21005     MOV &$FFEA,&{RC5TOLCD}+12
21006     MOV #WDT_INT,&$FFEA
21007     MOV &$FFDE,&{RC5TOLCD}+14
21008     MOV #RC5_INT,&$FFDE
21009     MOV #INI_R2L,R0
21010 THEN
21011 MOV @R13+,R0 
21012 ENDCODE 
21013
21014
21015 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
21016
21017 MARKER {RC5TOLCD}
21018 6 ALLOT
21019
21020
21021
21022 [UNDEFINED] CONSTANT [IF]
21023 : CONSTANT 
21024 CREATE
21025 HI2LO
21026 MOV R14,-2(R10)
21027 MOV @R15+,R14
21028 MOV @R1+,R13
21029 MOV @R13+,R0
21030 ENDCODE
21031 [THEN]
21032
21033 [UNDEFINED] STATE [IF]
21034 $1DBE CONSTANT STATE
21035 [THEN]
21036
21037 [UNDEFINED] = [IF]
21038 CODE =
21039 SUB @R15+,R14
21040 0<> IF
21041     AND #0,R14
21042     MOV @R13+,R0
21043 THEN
21044 XOR #-1,R14
21045 MOV @R13+,R0
21046 ENDCODE
21047 [THEN]
21048
21049 [UNDEFINED] IF [IF]
21050 CODE IF
21051 SUB #2,R15
21052 MOV R14,0(R15)
21053 MOV &$1DC6,R14
21054 ADD #4,&$1DC6
21055 MOV #$4034,0(R14)
21056 ADD #2,R14
21057 MOV @R13+,R0
21058 ENDCODE IMMEDIATE
21059
21060 CODE THEN
21061 MOV &$1DC6,0(R14)
21062 MOV @R15+,R14
21063 MOV @R13+,R0
21064 ENDCODE IMMEDIATE
21065 [THEN]
21066
21067 [UNDEFINED] ELSE [IF]
21068 CODE ELSE
21069 ADD #4,&$1DC6
21070 MOV &$1DC6,R10
21071 MOV #$403A,-4(R10)
21072 MOV R10,0(R14)
21073 SUB #2,R10
21074 MOV R10,R14
21075 MOV @R13+,R0
21076 ENDCODE IMMEDIATE
21077 [THEN]
21078
21079 [UNDEFINED] IS [IF]
21080
21081 CODE DEFER!
21082 MOV @R15+,2(R14)
21083 MOV @R15+,R14
21084 MOV @R13+,R0
21085 ENDCODE
21086
21087
21088 : IS
21089 STATE @
21090 IF  POSTPONE ['] POSTPONE DEFER! 
21091 ELSE ' DEFER! 
21092 THEN
21093 ; IMMEDIATE
21094 [THEN]
21095
21096 [UNDEFINED] >BODY [IF]
21097 CODE >BODY
21098 ADD #4,R14
21099 MOV @R13+,R0
21100 ENDCODE
21101 [THEN]
21102
21103
21104 CODE 20_US
21105 BEGIN
21106     BEGIN
21107         BIT #1,&$3C0
21108     0<> UNTIL
21109     BIC #1,&$3C0
21110     SUB #1,R14
21111 U< UNTIL
21112 MOV @R15+,R14
21113 MOV @R13+,R0
21114 ENDCODE
21115
21116 CODE TOP_LCD
21117     BIS.B #4,&$243
21118     BIT.B #1,&$241
21119 0= IF
21120     AND.B #$0F,R14
21121     MOV.B R14,&$222
21122     BIC.B #4,&$243
21123     MOV @R15+,R14
21124     MOV @R13+,R0
21125 THEN
21126     SUB #2,R15
21127     MOV R14,0(R15)
21128     BIC.B #4,&$243
21129     MOV.B &$220,R14
21130     AND.B #$0F,R14
21131     MOV @R13+,R0
21132 ENDCODE
21133
21134 CODE LCD_WRC
21135     BIS.B #2,&$243
21136 BW1 SUB #2,R15
21137     MOV R14,0(R15)
21138     RRUM #4,R14
21139     BIC.B #1,&$243
21140     BIS.B #$0F,&$224
21141 COLON
21142     TOP_LCD 2 20_US
21143     TOP_LCD 2 20_US 
21144 ;
21145
21146 CODE LCD_WRF
21147     BIC.B #2,&$243
21148     GOTO BW1
21149 ENDCODE
21150
21151 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
21152 : LCD_HOME $02 LCD_WRF 100 20_us ;
21153
21154
21155
21156 HDNCODE WDT_INT
21157 BIT.B #$20,&$240
21158 0= IF
21159     CMP #19,&$3D6
21160     U< IF
21161         ADD #1,&$3D6
21162     THEN
21163 ELSE
21164     BIT.B #$40,&$240
21165     0= IF
21166         CMP #3,&$3D6
21167         U>= IF
21168            SUB #1,&$3D6
21169         THEN
21170     THEN
21171 THEN
21172 RETI
21173 ENDCODE
21174
21175 HDNCODE RC5_INT
21176 $1800 @ 16000 = [IF]
21177     MOV #1,&$3A0
21178 [THEN]
21179 $1800 @ 24000 = [IF]
21180     MOV #2,&$3A0
21181 [THEN]
21182 MOV #1778,R9
21183 MOV #14,R10
21184 BEGIN
21185 MOV #%1011100100,&$380
21186     RRUM    #1,R9
21187     MOV     R9,R8
21188     RRUM    #1,R8
21189     ADD     R9,R8
21190     BEGIN   CMP R8,&$390
21191     U>= UNTIL
21192     BIT.B   #4,&$200
21193     ADDC    R11,R11
21194     MOV.B   &$200,&$208
21195     BIC.B   #4,&$20C
21196     SUB     #1,R10
21197 0<> WHILE
21198     ADD R9,R8
21199     BEGIN
21200         MOV &$390,R9
21201         CMP R8,R9
21202         U>= IF
21203         BIC #$30,&$380
21204         GOTO FW1
21205         THEN
21206         BIT.B #4,&$20C
21207     0<> UNTIL
21208 REPEAT
21209 BIC #$30,&$380
21210 RLAM    #1,R11
21211 MOV.B   R11,R9
21212 RRUM    #2,R9
21213 BIT     #$4000,R11
21214 0= IF   BIS #$40,R9
21215 THEN
21216 RRUM    #3,R11
21217 XOR     @R1,R11
21218 BIT     #$400,R11
21219 0= ?GOTO FW2
21220 XOR #$400,0(R1)
21221 SUB #8,R15
21222 MOV R14,6(R15)
21223 MOV &$1DDC,4(R15)
21224 MOV #$10,&$1DDC
21225 MOV R9,0(R15)
21226 MOV #0,R14
21227 LO2HI
21228     LCD_CLEAR
21229     <# # #S #36 HOLD #>
21230     ['] LCD_WRC IS EMIT
21231     TYPE
21232     ['] EMIT >BODY IS EMIT
21233 HI2LO
21234 MOV @R15+,&$1DDC
21235 MOV @R15+,R14
21236 FW1 FW2
21237     MOV @R1+,R2
21238     BIC #%1111_1000,R2
21239     MOV @R1+,R0
21240 ENDCODE
21241
21242
21243 HDNCODE STOP_R2L
21244 CMP #$40AA,&{RC5TOLCD}+8
21245 0<> IF
21246     BIC.B #4,&$20A
21247     BIC.B #4,&$20C
21248     MOV #0,&$3C0
21249     MOV #0,&$340
21250     MOV #0,&$342
21251     MOV #$40AA,&{RC5TOLCD}+8
21252     MOV &{RC5TOLCD}+10,&WARM+2
21253     MOV &{RC5TOLCD}+12,&$FFEA
21254     MOV &{RC5TOLCD}+14,&$FFDE
21255     MOV &{RC5TOLCD}+10,R0
21256 THEN 
21257 MOV @R1+,R0
21258 ENDCODE
21259
21260 CODE STOP
21261 BW1
21262 CALL #STOP_R2L
21263 COLON
21264 ECHO
21265 ." RC5toLCD is removed,"
21266 ."  type START to restart"
21267 ABORT" "
21268 ;
21269
21270 HDNCODE INI_R2L
21271 BIC #1,&$130
21272 MOV &$1808,R14
21273 CMP #$0E,R14
21274 0<> IF
21275     CMP #$0A,R14
21276     U>= ?GOTO BW1
21277 THEN
21278 BIT.B #$20,&$240
21279 0= ?GOTO BW1
21280 MOV #0,&$1808
21281 MOV #%10_1101_0100,&$3C0
21282 $1800 @ 16000 = [IF]
21283     MOV #1,&$3E0
21284 [THEN]
21285 $1800 @ 24000 = [IF]
21286     MOV #2,&$3E0
21287 [THEN]
21288     MOV #19,&$3D2
21289 MOV #%0110_0000,&$3C6
21290     MOV #10,&$3D6
21291     BIS.B #$20,&$204
21292     BIS.B #$20,&$20A
21293     BIS.B #7,&$245
21294     BIC.B #7,&$247
21295     BIS.B #$0F,&$224
21296     BIC.B #$0F,&$226
21297     BIS.B #4,&$20A
21298     BIC.B #4,&$20C
21299 MOV #%01_0001_0100,&$340
21300     MOV ##3276,&$352
21301     MOV #%10000,&$342
21302 COLON
21303     #1000 20_US
21304     %011 TOP_LCD
21305     #205 20_US
21306     %011 TOP_LCD
21307     #5 20_US
21308     %011 TOP_LCD
21309     #2 20_US
21310     %010 TOP_LCD
21311     #2 20_US
21312     %00101000 LCD_WRF
21313     %1000 LCD_WRF
21314     LCD_CLEAR
21315     %0110 LCD_WRF
21316     %1100 LCD_WRF
21317     LCD_CLEAR
21318     ['] LCD_HOME IS CR
21319     ['] LCD_WRC  IS EMIT
21320     CR ." I love you"
21321     ['] CR >BODY IS CR
21322     ['] EMIT >BODY IS EMIT
21323     ." RC5toLCD is running. Type STOP to quit"
21324     ABORT" "
21325 ;
21326
21327 CODE START
21328 CMP #$40AA,&{RC5TOLCD}+8
21329 0= IF
21330     MOV #STOP_R2L,&{RC5TOLCD}+8
21331     MOV &WARM+2,&{RC5TOLCD}+10
21332     MOV #INI_R2L,&WARM+2
21333     MOV &$FFEA,&{RC5TOLCD}+12
21334     MOV #WDT_INT,&$FFEA
21335     MOV &$FFDE,&{RC5TOLCD}+14
21336     MOV #RC5_INT,&$FFDE
21337     MOV #INI_R2L,R0
21338 THEN
21339 MOV @R13+,R0 
21340 ENDCODE 
21341
21342
21343 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
21344
21345 MARKER {RC5TOLCD}
21346 6 ALLOT
21347
21348
21349
21350 [UNDEFINED] CONSTANT [IF]
21351 : CONSTANT 
21352 CREATE
21353 HI2LO
21354 MOV R14,-2(R10)
21355 MOV @R15+,R14
21356 MOV @R1+,R13
21357 MOV @R13+,R0
21358 ENDCODE
21359 [THEN]
21360
21361 [UNDEFINED] STATE [IF]
21362 $1DBE CONSTANT STATE
21363 [THEN]
21364
21365 [UNDEFINED] = [IF]
21366 CODE =
21367 SUB @R15+,R14
21368 0<> IF
21369     AND #0,R14
21370     MOV @R13+,R0
21371 THEN
21372 XOR #-1,R14
21373 MOV @R13+,R0
21374 ENDCODE
21375 [THEN]
21376
21377 [UNDEFINED] IF [IF]
21378 CODE IF
21379 SUB #2,R15
21380 MOV R14,0(R15)
21381 MOV &$1DC6,R14
21382 ADD #4,&$1DC6
21383 MOV #$4034,0(R14)
21384 ADD #2,R14
21385 MOV @R13+,R0
21386 ENDCODE IMMEDIATE
21387
21388 CODE THEN
21389 MOV &$1DC6,0(R14)
21390 MOV @R15+,R14
21391 MOV @R13+,R0
21392 ENDCODE IMMEDIATE
21393 [THEN]
21394
21395 [UNDEFINED] ELSE [IF]
21396 CODE ELSE
21397 ADD #4,&$1DC6
21398 MOV &$1DC6,R10
21399 MOV #$403A,-4(R10)
21400 MOV R10,0(R14)
21401 SUB #2,R10
21402 MOV R10,R14
21403 MOV @R13+,R0
21404 ENDCODE IMMEDIATE
21405 [THEN]
21406
21407 [UNDEFINED] IS [IF]
21408
21409 CODE DEFER!
21410 MOV @R15+,2(R14)
21411 MOV @R15+,R14
21412 MOV @R13+,R0
21413 ENDCODE
21414
21415
21416 : IS
21417 STATE @
21418 IF  POSTPONE ['] POSTPONE DEFER! 
21419 ELSE ' DEFER! 
21420 THEN
21421 ; IMMEDIATE
21422 [THEN]
21423
21424 [UNDEFINED] >BODY [IF]
21425 CODE >BODY
21426 ADD #4,R14
21427 MOV @R13+,R0
21428 ENDCODE
21429 [THEN]
21430
21431
21432 CODE 20_US
21433 BEGIN
21434     BEGIN
21435         BIT #1,&$3C0
21436     0<> UNTIL
21437     BIC #1,&$3C0
21438     SUB #1,R14
21439 U< UNTIL
21440 MOV @R15+,R14
21441 MOV @R13+,R0
21442 ENDCODE
21443
21444 CODE TOP_LCD
21445     BIS.B #4,&$243
21446     BIT.B #1,&$241
21447 0= IF
21448     AND.B #$0F,R14
21449     MOV.B R14,&$222
21450     BIC.B #4,&$243
21451     MOV @R15+,R14
21452     MOV @R13+,R0
21453 THEN
21454     SUB #2,R15
21455     MOV R14,0(R15)
21456     BIC.B #4,&$243
21457     MOV.B &$220,R14
21458     AND.B #$0F,R14
21459     MOV @R13+,R0
21460 ENDCODE
21461
21462 CODE LCD_WRC
21463     BIS.B #2,&$243
21464 BW1 SUB #2,R15
21465     MOV R14,0(R15)
21466     RRUM #4,R14
21467     BIC.B #1,&$243
21468     BIS.B #$0F,&$224
21469 COLON
21470     TOP_LCD 2 20_US
21471     TOP_LCD 2 20_US 
21472 ;
21473
21474 CODE LCD_WRF
21475     BIC.B #2,&$243
21476     GOTO BW1
21477 ENDCODE
21478
21479 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
21480 : LCD_HOME $02 LCD_WRF 100 20_us ;
21481
21482
21483
21484 HDNCODE WDT_INT
21485 BIT.B #$20,&$240
21486 0= IF
21487     CMP #19,&$3D6
21488     U< IF
21489         ADD #1,&$3D6
21490     THEN
21491 ELSE
21492     BIT.B #$40,&$240
21493     0= IF
21494         CMP #3,&$3D6
21495         U>= IF
21496            SUB #1,&$3D6
21497         THEN
21498     THEN
21499 THEN
21500 RETI
21501 ENDCODE
21502
21503 HDNCODE RC5_INT
21504 $1800 @ 16000 = [IF]
21505     MOV #1,&$3A0
21506 [THEN]
21507 $1800 @ 24000 = [IF]
21508     MOV #2,&$3A0
21509 [THEN]
21510 MOV #1778,R9
21511 MOV #14,R10
21512 BEGIN
21513 MOV #%1011100100,&$380
21514     RRUM    #1,R9
21515     MOV     R9,R8
21516     RRUM    #1,R8
21517     ADD     R9,R8
21518     BEGIN   CMP R8,&$390
21519     U>= UNTIL
21520     BIT.B   #4,&$200
21521     ADDC    R11,R11
21522     MOV.B   &$200,&$208
21523     BIC.B   #4,&$20C
21524     SUB     #1,R10
21525 0<> WHILE
21526     ADD R9,R8
21527     BEGIN
21528         MOV &$390,R9
21529         CMP R8,R9
21530         U>= IF
21531         BIC #$30,&$380
21532         GOTO FW1
21533         THEN
21534         BIT.B #4,&$20C
21535     0<> UNTIL
21536 REPEAT
21537 BIC #$30,&$380
21538 RLAM    #1,R11
21539 MOV.B   R11,R9
21540 RRUM    #2,R9
21541 BIT     #$4000,R11
21542 0= IF   BIS #$40,R9
21543 THEN
21544 RRUM    #3,R11
21545 XOR     @R1,R11
21546 BIT     #$400,R11
21547 0= ?GOTO FW2
21548 XOR #$400,0(R1)
21549 SUB #8,R15
21550 MOV R14,6(R15)
21551 MOV &$1DDC,4(R15)
21552 MOV #$10,&$1DDC
21553 MOV R9,0(R15)
21554 MOV #0,R14
21555 LO2HI
21556     LCD_CLEAR
21557     <# # #S #36 HOLD #>
21558     ['] LCD_WRC IS EMIT
21559     TYPE
21560     ['] EMIT >BODY IS EMIT
21561 HI2LO
21562 MOV @R15+,&$1DDC
21563 MOV @R15+,R14
21564 FW1 FW2
21565     MOV @R1+,R2
21566     BIC #%1111_1000,R2
21567     MOV @R1+,R0
21568 ENDCODE
21569
21570
21571 HDNCODE STOP_R2L
21572 CMP #$40AA,&{RC5TOLCD}+8
21573 0<> IF
21574     BIC.B #4,&$20A
21575     BIC.B #4,&$20C
21576     MOV #0,&$3C0
21577     MOV #0,&$340
21578     MOV #0,&$342
21579     MOV #$40AA,&{RC5TOLCD}+8
21580     MOV &{RC5TOLCD}+10,&WARM+2
21581     MOV &{RC5TOLCD}+12,&$FFEA
21582     MOV &{RC5TOLCD}+14,&$FFDE
21583     MOV &{RC5TOLCD}+10,R0
21584 THEN 
21585 MOV @R1+,R0
21586 ENDCODE
21587
21588 CODE STOP
21589 BW1
21590 CALL #STOP_R2L
21591 COLON
21592 ECHO
21593 ." RC5toLCD is removed,"
21594 ."  type START to restart"
21595 ABORT" "
21596 ;
21597
21598 HDNCODE INI_R2L
21599 BIC #1,&$130
21600 MOV &$1808,R14
21601 CMP #$0E,R14
21602 0<> IF
21603     CMP #$0A,R14
21604     U>= ?GOTO BW1
21605 THEN
21606 BIT.B #$20,&$240
21607 0= ?GOTO BW1
21608 MOV #0,&$1808
21609 MOV #%10_1101_0100,&$3C0
21610 $1800 @ 16000 = [IF]
21611     MOV #1,&$3E0
21612 [THEN]
21613 $1800 @ 24000 = [IF]
21614     MOV #2,&$3E0
21615 [THEN]
21616     MOV #19,&$3D2
21617 MOV #%0110_0000,&$3C6
21618     MOV #10,&$3D6
21619     BIS.B #$20,&$204
21620     BIS.B #$20,&$20A
21621     BIS.B #7,&$245
21622     BIC.B #7,&$247
21623     BIS.B #$0F,&$224
21624     BIC.B #$0F,&$226
21625     BIS.B #4,&$20A
21626     BIC.B #4,&$20C
21627 MOV #%01_0001_0100,&$340
21628     MOV ##3276,&$352
21629     MOV #%10000,&$342
21630 COLON
21631     #1000 20_US
21632     %011 TOP_LCD
21633     #205 20_US
21634     %011 TOP_LCD
21635     #5 20_US
21636     %011 TOP_LCD
21637     #2 20_US
21638     %010 TOP_LCD
21639     #2 20_US
21640     %00101000 LCD_WRF
21641     %1000 LCD_WRF
21642     LCD_CLEAR
21643     %0110 LCD_WRF
21644     %1100 LCD_WRF
21645     LCD_CLEAR
21646     ['] LCD_HOME IS CR
21647     ['] LCD_WRC  IS EMIT
21648     CR ." I love you"
21649     ['] CR >BODY IS CR
21650     ['] EMIT >BODY IS EMIT
21651     ." RC5toLCD is running. Type STOP to quit"
21652     ABORT" "
21653 ;
21654
21655 CODE START
21656 CMP #$40AA,&{RC5TOLCD}+8
21657 0= IF
21658     MOV #STOP_R2L,&{RC5TOLCD}+8
21659     MOV &WARM+2,&{RC5TOLCD}+10
21660     MOV #INI_R2L,&WARM+2
21661     MOV &$FFEA,&{RC5TOLCD}+12
21662     MOV #WDT_INT,&$FFEA
21663     MOV &$FFDE,&{RC5TOLCD}+14
21664     MOV #RC5_INT,&$FFDE
21665     MOV #INI_R2L,R0
21666 THEN
21667 MOV @R13+,R0 
21668 ENDCODE 
21669
21670
21671 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
21672
21673 MARKER {RC5TOLCD}
21674 6 ALLOT
21675
21676
21677
21678 [UNDEFINED] CONSTANT [IF]
21679 : CONSTANT 
21680 CREATE
21681 HI2LO
21682 MOV R14,-2(R10)
21683 MOV @R15+,R14
21684 MOV @R1+,R13
21685 MOV @R13+,R0
21686 ENDCODE
21687 [THEN]
21688
21689 [UNDEFINED] STATE [IF]
21690 $1DBE CONSTANT STATE
21691 [THEN]
21692
21693 [UNDEFINED] = [IF]
21694 CODE =
21695 SUB @R15+,R14
21696 0<> IF
21697     AND #0,R14
21698     MOV @R13+,R0
21699 THEN
21700 XOR #-1,R14
21701 MOV @R13+,R0
21702 ENDCODE
21703 [THEN]
21704
21705 [UNDEFINED] IF [IF]
21706 CODE IF
21707 SUB #2,R15
21708 MOV R14,0(R15)
21709 MOV &$1DC6,R14
21710 ADD #4,&$1DC6
21711 MOV #$4034,0(R14)
21712 ADD #2,R14
21713 MOV @R13+,R0
21714 ENDCODE IMMEDIATE
21715
21716 CODE THEN
21717 MOV &$1DC6,0(R14)
21718 MOV @R15+,R14
21719 MOV @R13+,R0
21720 ENDCODE IMMEDIATE
21721 [THEN]
21722
21723 [UNDEFINED] ELSE [IF]
21724 CODE ELSE
21725 ADD #4,&$1DC6
21726 MOV &$1DC6,R10
21727 MOV #$403A,-4(R10)
21728 MOV R10,0(R14)
21729 SUB #2,R10
21730 MOV R10,R14
21731 MOV @R13+,R0
21732 ENDCODE IMMEDIATE
21733 [THEN]
21734
21735 [UNDEFINED] IS [IF]
21736
21737 CODE DEFER!
21738 MOV @R15+,2(R14)
21739 MOV @R15+,R14
21740 MOV @R13+,R0
21741 ENDCODE
21742
21743
21744 : IS
21745 STATE @
21746 IF  POSTPONE ['] POSTPONE DEFER! 
21747 ELSE ' DEFER! 
21748 THEN
21749 ; IMMEDIATE
21750 [THEN]
21751
21752 [UNDEFINED] >BODY [IF]
21753 CODE >BODY
21754 ADD #4,R14
21755 MOV @R13+,R0
21756 ENDCODE
21757 [THEN]
21758
21759
21760 CODE 20_US
21761 BEGIN
21762     BEGIN
21763         BIT #1,&$3C0
21764     0<> UNTIL
21765     BIC #1,&$3C0
21766     SUB #1,R14
21767 U< UNTIL
21768 MOV @R15+,R14
21769 MOV @R13+,R0
21770 ENDCODE
21771
21772 CODE TOP_LCD
21773     BIS.B #4,&$243
21774     BIT.B #1,&$241
21775 0= IF
21776     AND.B #$0F,R14
21777     MOV.B R14,&$222
21778     BIC.B #4,&$243
21779     MOV @R15+,R14
21780     MOV @R13+,R0
21781 THEN
21782     SUB #2,R15
21783     MOV R14,0(R15)
21784     BIC.B #4,&$243
21785     MOV.B &$220,R14
21786     AND.B #$0F,R14
21787     MOV @R13+,R0
21788 ENDCODE
21789
21790 CODE LCD_WRC
21791     BIS.B #2,&$243
21792 BW1 SUB #2,R15
21793     MOV R14,0(R15)
21794     RRUM #4,R14
21795     BIC.B #1,&$243
21796     BIS.B #$0F,&$224
21797 COLON
21798     TOP_LCD 2 20_US
21799     TOP_LCD 2 20_US 
21800 ;
21801
21802 CODE LCD_WRF
21803     BIC.B #2,&$243
21804     GOTO BW1
21805 ENDCODE
21806
21807 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
21808 : LCD_HOME $02 LCD_WRF 100 20_us ;
21809
21810
21811
21812 HDNCODE WDT_INT
21813 BIT.B #$20,&$240
21814 0= IF
21815     CMP #19,&$3D6
21816     U< IF
21817         ADD #1,&$3D6
21818     THEN
21819 ELSE
21820     BIT.B #$40,&$240
21821     0= IF
21822         CMP #3,&$3D6
21823         U>= IF
21824            SUB #1,&$3D6
21825         THEN
21826     THEN
21827 THEN
21828 RETI
21829 ENDCODE
21830
21831 HDNCODE RC5_INT
21832 $1800 @ 16000 = [IF]
21833     MOV #1,&$3A0
21834 [THEN]
21835 $1800 @ 24000 = [IF]
21836     MOV #2,&$3A0
21837 [THEN]
21838 MOV #1778,R9
21839 MOV #14,R10
21840 BEGIN
21841 MOV #%1011100100,&$380
21842     RRUM    #1,R9
21843     MOV     R9,R8
21844     RRUM    #1,R8
21845     ADD     R9,R8
21846     BEGIN   CMP R8,&$390
21847     U>= UNTIL
21848     BIT.B   #4,&$200
21849     ADDC    R11,R11
21850     MOV.B   &$200,&$208
21851     BIC.B   #4,&$20C
21852     SUB     #1,R10
21853 0<> WHILE
21854     ADD R9,R8
21855     BEGIN
21856         MOV &$390,R9
21857         CMP R8,R9
21858         U>= IF
21859         BIC #$30,&$380
21860         GOTO FW1
21861         THEN
21862         BIT.B #4,&$20C
21863     0<> UNTIL
21864 REPEAT
21865 BIC #$30,&$380
21866 RLAM    #1,R11
21867 MOV.B   R11,R9
21868 RRUM    #2,R9
21869 BIT     #$4000,R11
21870 0= IF   BIS #$40,R9
21871 THEN
21872 RRUM    #3,R11
21873 XOR     @R1,R11
21874 BIT     #$400,R11
21875 0= ?GOTO FW2
21876 XOR #$400,0(R1)
21877 SUB #8,R15
21878 MOV R14,6(R15)
21879 MOV &$1DDC,4(R15)
21880 MOV #$10,&$1DDC
21881 MOV R9,0(R15)
21882 MOV #0,R14
21883 LO2HI
21884     LCD_CLEAR
21885     <# # #S #36 HOLD #>
21886     ['] LCD_WRC IS EMIT
21887     TYPE
21888     ['] EMIT >BODY IS EMIT
21889 HI2LO
21890 MOV @R15+,&$1DDC
21891 MOV @R15+,R14
21892 FW1 FW2
21893     MOV @R1+,R2
21894     BIC #%1111_1000,R2
21895     MOV @R1+,R0
21896 ENDCODE
21897
21898
21899 HDNCODE STOP_R2L
21900 CMP #$40AA,&{RC5TOLCD}+8
21901 0<> IF
21902     BIC.B #4,&$20A
21903     BIC.B #4,&$20C
21904     MOV #0,&$3C0
21905     MOV #0,&$340
21906     MOV #0,&$342
21907     MOV #$40AA,&{RC5TOLCD}+8
21908     MOV &{RC5TOLCD}+10,&WARM+2
21909     MOV &{RC5TOLCD}+12,&$FFEA
21910     MOV &{RC5TOLCD}+14,&$FFDE
21911     MOV &{RC5TOLCD}+10,R0
21912 THEN 
21913 MOV @R1+,R0
21914 ENDCODE
21915
21916 CODE STOP
21917 BW1
21918 CALL #STOP_R2L
21919 COLON
21920 ECHO
21921 ." RC5toLCD is removed,"
21922 ."  type START to restart"
21923 ABORT" "
21924 ;
21925
21926 HDNCODE INI_R2L
21927 BIC #1,&$130
21928 MOV &$1808,R14
21929 CMP #$0E,R14
21930 0<> IF
21931     CMP #$0A,R14
21932     U>= ?GOTO BW1
21933 THEN
21934 BIT.B #$20,&$240
21935 0= ?GOTO BW1
21936 MOV #0,&$1808
21937 MOV #%10_1101_0100,&$3C0
21938 $1800 @ 16000 = [IF]
21939     MOV #1,&$3E0
21940 [THEN]
21941 $1800 @ 24000 = [IF]
21942     MOV #2,&$3E0
21943 [THEN]
21944     MOV #19,&$3D2
21945 MOV #%0110_0000,&$3C6
21946     MOV #10,&$3D6
21947     BIS.B #$20,&$204
21948     BIS.B #$20,&$20A
21949     BIS.B #7,&$245
21950     BIC.B #7,&$247
21951     BIS.B #$0F,&$224
21952     BIC.B #$0F,&$226
21953     BIS.B #4,&$20A
21954     BIC.B #4,&$20C
21955 MOV #%01_0001_0100,&$340
21956     MOV ##3276,&$352
21957     MOV #%10000,&$342
21958 COLON
21959     #1000 20_US
21960     %011 TOP_LCD
21961     #205 20_US
21962     %011 TOP_LCD
21963     #5 20_US
21964     %011 TOP_LCD
21965     #2 20_US
21966     %010 TOP_LCD
21967     #2 20_US
21968     %00101000 LCD_WRF
21969     %1000 LCD_WRF
21970     LCD_CLEAR
21971     %0110 LCD_WRF
21972     %1100 LCD_WRF
21973     LCD_CLEAR
21974     ['] LCD_HOME IS CR
21975     ['] LCD_WRC  IS EMIT
21976     CR ." I love you"
21977     ['] CR >BODY IS CR
21978     ['] EMIT >BODY IS EMIT
21979     ." RC5toLCD is running. Type STOP to quit"
21980     ABORT" "
21981 ;
21982
21983 CODE START
21984 CMP #$40AA,&{RC5TOLCD}+8
21985 0= IF
21986     MOV #STOP_R2L,&{RC5TOLCD}+8
21987     MOV &WARM+2,&{RC5TOLCD}+10
21988     MOV #INI_R2L,&WARM+2
21989     MOV &$FFEA,&{RC5TOLCD}+12
21990     MOV #WDT_INT,&$FFEA
21991     MOV &$FFDE,&{RC5TOLCD}+14
21992     MOV #RC5_INT,&$FFDE
21993     MOV #INI_R2L,R0
21994 THEN
21995 MOV @R13+,R0 
21996 ENDCODE 
21997
21998
21999 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
22000
22001 MARKER {RC5TOLCD}
22002 6 ALLOT
22003
22004
22005
22006 [UNDEFINED] CONSTANT [IF]
22007 : CONSTANT 
22008 CREATE
22009 HI2LO
22010 MOV R14,-2(R10)
22011 MOV @R15+,R14
22012 MOV @R1+,R13
22013 MOV @R13+,R0
22014 ENDCODE
22015 [THEN]
22016
22017 [UNDEFINED] STATE [IF]
22018 $1DBE CONSTANT STATE
22019 [THEN]
22020
22021 [UNDEFINED] = [IF]
22022 CODE =
22023 SUB @R15+,R14
22024 0<> IF
22025     AND #0,R14
22026     MOV @R13+,R0
22027 THEN
22028 XOR #-1,R14
22029 MOV @R13+,R0
22030 ENDCODE
22031 [THEN]
22032
22033 [UNDEFINED] IF [IF]
22034 CODE IF
22035 SUB #2,R15
22036 MOV R14,0(R15)
22037 MOV &$1DC6,R14
22038 ADD #4,&$1DC6
22039 MOV #$4034,0(R14)
22040 ADD #2,R14
22041 MOV @R13+,R0
22042 ENDCODE IMMEDIATE
22043
22044 CODE THEN
22045 MOV &$1DC6,0(R14)
22046 MOV @R15+,R14
22047 MOV @R13+,R0
22048 ENDCODE IMMEDIATE
22049 [THEN]
22050
22051 [UNDEFINED] ELSE [IF]
22052 CODE ELSE
22053 ADD #4,&$1DC6
22054 MOV &$1DC6,R10
22055 MOV #$403A,-4(R10)
22056 MOV R10,0(R14)
22057 SUB #2,R10
22058 MOV R10,R14
22059 MOV @R13+,R0
22060 ENDCODE IMMEDIATE
22061 [THEN]
22062
22063 [UNDEFINED] IS [IF]
22064
22065 CODE DEFER!
22066 MOV @R15+,2(R14)
22067 MOV @R15+,R14
22068 MOV @R13+,R0
22069 ENDCODE
22070
22071
22072 : IS
22073 STATE @
22074 IF  POSTPONE ['] POSTPONE DEFER! 
22075 ELSE ' DEFER! 
22076 THEN
22077 ; IMMEDIATE
22078 [THEN]
22079
22080 [UNDEFINED] >BODY [IF]
22081 CODE >BODY
22082 ADD #4,R14
22083 MOV @R13+,R0
22084 ENDCODE
22085 [THEN]
22086
22087
22088 CODE 20_US
22089 BEGIN
22090     BEGIN
22091         BIT #1,&$3C0
22092     0<> UNTIL
22093     BIC #1,&$3C0
22094     SUB #1,R14
22095 U< UNTIL
22096 MOV @R15+,R14
22097 MOV @R13+,R0
22098 ENDCODE
22099
22100 CODE TOP_LCD
22101     BIS.B #4,&$243
22102     BIT.B #1,&$241
22103 0= IF
22104     AND.B #$0F,R14
22105     MOV.B R14,&$222
22106     BIC.B #4,&$243
22107     MOV @R15+,R14
22108     MOV @R13+,R0
22109 THEN
22110     SUB #2,R15
22111     MOV R14,0(R15)
22112     BIC.B #4,&$243
22113     MOV.B &$220,R14
22114     AND.B #$0F,R14
22115     MOV @R13+,R0
22116 ENDCODE
22117
22118 CODE LCD_WRC
22119     BIS.B #2,&$243
22120 BW1 SUB #2,R15
22121     MOV R14,0(R15)
22122     RRUM #4,R14
22123     BIC.B #1,&$243
22124     BIS.B #$0F,&$224
22125 COLON
22126     TOP_LCD 2 20_US
22127     TOP_LCD 2 20_US 
22128 ;
22129
22130 CODE LCD_WRF
22131     BIC.B #2,&$243
22132     GOTO BW1
22133 ENDCODE
22134
22135 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
22136 : LCD_HOME $02 LCD_WRF 100 20_us ;
22137
22138
22139
22140 HDNCODE WDT_INT
22141 BIT.B #$20,&$240
22142 0= IF
22143     CMP #19,&$3D6
22144     U< IF
22145         ADD #1,&$3D6
22146     THEN
22147 ELSE
22148     BIT.B #$40,&$240
22149     0= IF
22150         CMP #3,&$3D6
22151         U>= IF
22152            SUB #1,&$3D6
22153         THEN
22154     THEN
22155 THEN
22156 RETI
22157 ENDCODE
22158
22159 HDNCODE RC5_INT
22160 $1800 @ 16000 = [IF]
22161     MOV #1,&$3A0
22162 [THEN]
22163 $1800 @ 24000 = [IF]
22164     MOV #2,&$3A0
22165 [THEN]
22166 MOV #1778,R9
22167 MOV #14,R10
22168 BEGIN
22169 MOV #%1011100100,&$380
22170     RRUM    #1,R9
22171     MOV     R9,R8
22172     RRUM    #1,R8
22173     ADD     R9,R8
22174     BEGIN   CMP R8,&$390
22175     U>= UNTIL
22176     BIT.B   #4,&$200
22177     ADDC    R11,R11
22178     MOV.B   &$200,&$208
22179     BIC.B   #4,&$20C
22180     SUB     #1,R10
22181 0<> WHILE
22182     ADD R9,R8
22183     BEGIN
22184         MOV &$390,R9
22185         CMP R8,R9
22186         U>= IF
22187         BIC #$30,&$380
22188         GOTO FW1
22189         THEN
22190         BIT.B #4,&$20C
22191     0<> UNTIL
22192 REPEAT
22193 BIC #$30,&$380
22194 RLAM    #1,R11
22195 MOV.B   R11,R9
22196 RRUM    #2,R9
22197 BIT     #$4000,R11
22198 0= IF   BIS #$40,R9
22199 THEN
22200 RRUM    #3,R11
22201 XOR     @R1,R11
22202 BIT     #$400,R11
22203 0= ?GOTO FW2
22204 XOR #$400,0(R1)
22205 SUB #8,R15
22206 MOV R14,6(R15)
22207 MOV &$1DDC,4(R15)
22208 MOV #$10,&$1DDC
22209 MOV R9,0(R15)
22210 MOV #0,R14
22211 LO2HI
22212     LCD_CLEAR
22213     <# # #S #36 HOLD #>
22214     ['] LCD_WRC IS EMIT
22215     TYPE
22216     ['] EMIT >BODY IS EMIT
22217 HI2LO
22218 MOV @R15+,&$1DDC
22219 MOV @R15+,R14
22220 FW1 FW2
22221     MOV @R1+,R2
22222     BIC #%1111_1000,R2
22223     MOV @R1+,R0
22224 ENDCODE
22225
22226
22227 HDNCODE STOP_R2L
22228 CMP #$40AA,&{RC5TOLCD}+8
22229 0<> IF
22230     BIC.B #4,&$20A
22231     BIC.B #4,&$20C
22232     MOV #0,&$3C0
22233     MOV #0,&$340
22234     MOV #0,&$342
22235     MOV #$40AA,&{RC5TOLCD}+8
22236     MOV &{RC5TOLCD}+10,&WARM+2
22237     MOV &{RC5TOLCD}+12,&$FFEA
22238     MOV &{RC5TOLCD}+14,&$FFDE
22239     MOV &{RC5TOLCD}+10,R0
22240 THEN 
22241 MOV @R1+,R0
22242 ENDCODE
22243
22244 CODE STOP
22245 BW1
22246 CALL #STOP_R2L
22247 COLON
22248 ECHO
22249 ." RC5toLCD is removed,"
22250 ."  type START to restart"
22251 ABORT" "
22252 ;
22253
22254 HDNCODE INI_R2L
22255 BIC #1,&$130
22256 MOV &$1808,R14
22257 CMP #$0E,R14
22258 0<> IF
22259     CMP #$0A,R14
22260     U>= ?GOTO BW1
22261 THEN
22262 BIT.B #$20,&$240
22263 0= ?GOTO BW1
22264 MOV #0,&$1808
22265 MOV #%10_1101_0100,&$3C0
22266 $1800 @ 16000 = [IF]
22267     MOV #1,&$3E0
22268 [THEN]
22269 $1800 @ 24000 = [IF]
22270     MOV #2,&$3E0
22271 [THEN]
22272     MOV #19,&$3D2
22273 MOV #%0110_0000,&$3C6
22274     MOV #10,&$3D6
22275     BIS.B #$20,&$204
22276     BIS.B #$20,&$20A
22277     BIS.B #7,&$245
22278     BIC.B #7,&$247
22279     BIS.B #$0F,&$224
22280     BIC.B #$0F,&$226
22281     BIS.B #4,&$20A
22282     BIC.B #4,&$20C
22283 MOV #%01_0001_0100,&$340
22284     MOV ##3276,&$352
22285     MOV #%10000,&$342
22286 COLON
22287     #1000 20_US
22288     %011 TOP_LCD
22289     #205 20_US
22290     %011 TOP_LCD
22291     #5 20_US
22292     %011 TOP_LCD
22293     #2 20_US
22294     %010 TOP_LCD
22295     #2 20_US
22296     %00101000 LCD_WRF
22297     %1000 LCD_WRF
22298     LCD_CLEAR
22299     %0110 LCD_WRF
22300     %1100 LCD_WRF
22301     LCD_CLEAR
22302     ['] LCD_HOME IS CR
22303     ['] LCD_WRC  IS EMIT
22304     CR ." I love you"
22305     ['] CR >BODY IS CR
22306     ['] EMIT >BODY IS EMIT
22307     ." RC5toLCD is running. Type STOP to quit"
22308     ABORT" "
22309 ;
22310
22311 CODE START
22312 CMP #$40AA,&{RC5TOLCD}+8
22313 0= IF
22314     MOV #STOP_R2L,&{RC5TOLCD}+8
22315     MOV &WARM+2,&{RC5TOLCD}+10
22316     MOV #INI_R2L,&WARM+2
22317     MOV &$FFEA,&{RC5TOLCD}+12
22318     MOV #WDT_INT,&$FFEA
22319     MOV &$FFDE,&{RC5TOLCD}+14
22320     MOV #RC5_INT,&$FFDE
22321     MOV #INI_R2L,R0
22322 THEN
22323 MOV @R13+,R0 
22324 ENDCODE 
22325
22326
22327 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
22328
22329 MARKER {RC5TOLCD}
22330 6 ALLOT
22331
22332
22333
22334 [UNDEFINED] CONSTANT [IF]
22335 : CONSTANT 
22336 CREATE
22337 HI2LO
22338 MOV R14,-2(R10)
22339 MOV @R15+,R14
22340 MOV @R1+,R13
22341 MOV @R13+,R0
22342 ENDCODE
22343 [THEN]
22344
22345 [UNDEFINED] STATE [IF]
22346 $1DBE CONSTANT STATE
22347 [THEN]
22348
22349 [UNDEFINED] = [IF]
22350 CODE =
22351 SUB @R15+,R14
22352 0<> IF
22353     AND #0,R14
22354     MOV @R13+,R0
22355 THEN
22356 XOR #-1,R14
22357 MOV @R13+,R0
22358 ENDCODE
22359 [THEN]
22360
22361 [UNDEFINED] IF [IF]
22362 CODE IF
22363 SUB #2,R15
22364 MOV R14,0(R15)
22365 MOV &$1DC6,R14
22366 ADD #4,&$1DC6
22367 MOV #$4034,0(R14)
22368 ADD #2,R14
22369 MOV @R13+,R0
22370 ENDCODE IMMEDIATE
22371
22372 CODE THEN
22373 MOV &$1DC6,0(R14)
22374 MOV @R15+,R14
22375 MOV @R13+,R0
22376 ENDCODE IMMEDIATE
22377 [THEN]
22378
22379 [UNDEFINED] ELSE [IF]
22380 CODE ELSE
22381 ADD #4,&$1DC6
22382 MOV &$1DC6,R10
22383 MOV #$403A,-4(R10)
22384 MOV R10,0(R14)
22385 SUB #2,R10
22386 MOV R10,R14
22387 MOV @R13+,R0
22388 ENDCODE IMMEDIATE
22389 [THEN]
22390
22391 [UNDEFINED] IS [IF]
22392
22393 CODE DEFER!
22394 MOV @R15+,2(R14)
22395 MOV @R15+,R14
22396 MOV @R13+,R0
22397 ENDCODE
22398
22399
22400 : IS
22401 STATE @
22402 IF  POSTPONE ['] POSTPONE DEFER! 
22403 ELSE ' DEFER! 
22404 THEN
22405 ; IMMEDIATE
22406 [THEN]
22407
22408 [UNDEFINED] >BODY [IF]
22409 CODE >BODY
22410 ADD #4,R14
22411 MOV @R13+,R0
22412 ENDCODE
22413 [THEN]
22414
22415
22416 CODE 20_US
22417 BEGIN
22418     BEGIN
22419         BIT #1,&$3C0
22420     0<> UNTIL
22421     BIC #1,&$3C0
22422     SUB #1,R14
22423 U< UNTIL
22424 MOV @R15+,R14
22425 MOV @R13+,R0
22426 ENDCODE
22427
22428 CODE TOP_LCD
22429     BIS.B #4,&$243
22430     BIT.B #1,&$241
22431 0= IF
22432     AND.B #$0F,R14
22433     MOV.B R14,&$222
22434     BIC.B #4,&$243
22435     MOV @R15+,R14
22436     MOV @R13+,R0
22437 THEN
22438     SUB #2,R15
22439     MOV R14,0(R15)
22440     BIC.B #4,&$243
22441     MOV.B &$220,R14
22442     AND.B #$0F,R14
22443     MOV @R13+,R0
22444 ENDCODE
22445
22446 CODE LCD_WRC
22447     BIS.B #2,&$243
22448 BW1 SUB #2,R15
22449     MOV R14,0(R15)
22450     RRUM #4,R14
22451     BIC.B #1,&$243
22452     BIS.B #$0F,&$224
22453 COLON
22454     TOP_LCD 2 20_US
22455     TOP_LCD 2 20_US 
22456 ;
22457
22458 CODE LCD_WRF
22459     BIC.B #2,&$243
22460     GOTO BW1
22461 ENDCODE
22462
22463 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
22464 : LCD_HOME $02 LCD_WRF 100 20_us ;
22465
22466
22467
22468 HDNCODE WDT_INT
22469 BIT.B #$20,&$240
22470 0= IF
22471     CMP #19,&$3D6
22472     U< IF
22473         ADD #1,&$3D6
22474     THEN
22475 ELSE
22476     BIT.B #$40,&$240
22477     0= IF
22478         CMP #3,&$3D6
22479         U>= IF
22480            SUB #1,&$3D6
22481         THEN
22482     THEN
22483 THEN
22484 RETI
22485 ENDCODE
22486
22487 HDNCODE RC5_INT
22488 $1800 @ 16000 = [IF]
22489     MOV #1,&$3A0
22490 [THEN]
22491 $1800 @ 24000 = [IF]
22492     MOV #2,&$3A0
22493 [THEN]
22494 MOV #1778,R9
22495 MOV #14,R10
22496 BEGIN
22497 MOV #%1011100100,&$380
22498     RRUM    #1,R9
22499     MOV     R9,R8
22500     RRUM    #1,R8
22501     ADD     R9,R8
22502     BEGIN   CMP R8,&$390
22503     U>= UNTIL
22504     BIT.B   #4,&$200
22505     ADDC    R11,R11
22506     MOV.B   &$200,&$208
22507     BIC.B   #4,&$20C
22508     SUB     #1,R10
22509 0<> WHILE
22510     ADD R9,R8
22511     BEGIN
22512         MOV &$390,R9
22513         CMP R8,R9
22514         U>= IF
22515         BIC #$30,&$380
22516         GOTO FW1
22517         THEN
22518         BIT.B #4,&$20C
22519     0<> UNTIL
22520 REPEAT
22521 BIC #$30,&$380
22522 RLAM    #1,R11
22523 MOV.B   R11,R9
22524 RRUM    #2,R9
22525 BIT     #$4000,R11
22526 0= IF   BIS #$40,R9
22527 THEN
22528 RRUM    #3,R11
22529 XOR     @R1,R11
22530 BIT     #$400,R11
22531 0= ?GOTO FW2
22532 XOR #$400,0(R1)
22533 SUB #8,R15
22534 MOV R14,6(R15)
22535 MOV &$1DDC,4(R15)
22536 MOV #$10,&$1DDC
22537 MOV R9,0(R15)
22538 MOV #0,R14
22539 LO2HI
22540     LCD_CLEAR
22541     <# # #S #36 HOLD #>
22542     ['] LCD_WRC IS EMIT
22543     TYPE
22544     ['] EMIT >BODY IS EMIT
22545 HI2LO
22546 MOV @R15+,&$1DDC
22547 MOV @R15+,R14
22548 FW1 FW2
22549     MOV @R1+,R2
22550     BIC #%1111_1000,R2
22551     MOV @R1+,R0
22552 ENDCODE
22553
22554
22555 HDNCODE STOP_R2L
22556 CMP #$40AA,&{RC5TOLCD}+8
22557 0<> IF
22558     BIC.B #4,&$20A
22559     BIC.B #4,&$20C
22560     MOV #0,&$3C0
22561     MOV #0,&$340
22562     MOV #0,&$342
22563     MOV #$40AA,&{RC5TOLCD}+8
22564     MOV &{RC5TOLCD}+10,&WARM+2
22565     MOV &{RC5TOLCD}+12,&$FFEA
22566     MOV &{RC5TOLCD}+14,&$FFDE
22567     MOV &{RC5TOLCD}+10,R0
22568 THEN 
22569 MOV @R1+,R0
22570 ENDCODE
22571
22572 CODE STOP
22573 BW1
22574 CALL #STOP_R2L
22575 COLON
22576 ECHO
22577 ." RC5toLCD is removed,"
22578 ."  type START to restart"
22579 ABORT" "
22580 ;
22581
22582 HDNCODE INI_R2L
22583 BIC #1,&$130
22584 MOV &$1808,R14
22585 CMP #$0E,R14
22586 0<> IF
22587     CMP #$0A,R14
22588     U>= ?GOTO BW1
22589 THEN
22590 BIT.B #$20,&$240
22591 0= ?GOTO BW1
22592 MOV #0,&$1808
22593 MOV #%10_1101_0100,&$3C0
22594 $1800 @ 16000 = [IF]
22595     MOV #1,&$3E0
22596 [THEN]
22597 $1800 @ 24000 = [IF]
22598     MOV #2,&$3E0
22599 [THEN]
22600     MOV #19,&$3D2
22601 MOV #%0110_0000,&$3C6
22602     MOV #10,&$3D6
22603     BIS.B #$20,&$204
22604     BIS.B #$20,&$20A
22605     BIS.B #7,&$245
22606     BIC.B #7,&$247
22607     BIS.B #$0F,&$224
22608     BIC.B #$0F,&$226
22609     BIS.B #4,&$20A
22610     BIC.B #4,&$20C
22611 MOV #%01_0001_0100,&$340
22612     MOV ##3276,&$352
22613     MOV #%10000,&$342
22614 COLON
22615     #1000 20_US
22616     %011 TOP_LCD
22617     #205 20_US
22618     %011 TOP_LCD
22619     #5 20_US
22620     %011 TOP_LCD
22621     #2 20_US
22622     %010 TOP_LCD
22623     #2 20_US
22624     %00101000 LCD_WRF
22625     %1000 LCD_WRF
22626     LCD_CLEAR
22627     %0110 LCD_WRF
22628     %1100 LCD_WRF
22629     LCD_CLEAR
22630     ['] LCD_HOME IS CR
22631     ['] LCD_WRC  IS EMIT
22632     CR ." I love you"
22633     ['] CR >BODY IS CR
22634     ['] EMIT >BODY IS EMIT
22635     ." RC5toLCD is running. Type STOP to quit"
22636     ABORT" "
22637 ;
22638
22639 CODE START
22640 CMP #$40AA,&{RC5TOLCD}+8
22641 0= IF
22642     MOV #STOP_R2L,&{RC5TOLCD}+8
22643     MOV &WARM+2,&{RC5TOLCD}+10
22644     MOV #INI_R2L,&WARM+2
22645     MOV &$FFEA,&{RC5TOLCD}+12
22646     MOV #WDT_INT,&$FFEA
22647     MOV &$FFDE,&{RC5TOLCD}+14
22648     MOV #RC5_INT,&$FFDE
22649     MOV #INI_R2L,R0
22650 THEN
22651 MOV @R13+,R0 
22652 ENDCODE 
22653
22654
22655 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
22656
22657 MARKER {RC5TOLCD}
22658 6 ALLOT
22659
22660
22661
22662 [UNDEFINED] CONSTANT [IF]
22663 : CONSTANT 
22664 CREATE
22665 HI2LO
22666 MOV R14,-2(R10)
22667 MOV @R15+,R14
22668 MOV @R1+,R13
22669 MOV @R13+,R0
22670 ENDCODE
22671 [THEN]
22672
22673 [UNDEFINED] STATE [IF]
22674 $1DBE CONSTANT STATE
22675 [THEN]
22676
22677 [UNDEFINED] = [IF]
22678 CODE =
22679 SUB @R15+,R14
22680 0<> IF
22681     AND #0,R14
22682     MOV @R13+,R0
22683 THEN
22684 XOR #-1,R14
22685 MOV @R13+,R0
22686 ENDCODE
22687 [THEN]
22688
22689 [UNDEFINED] IF [IF]
22690 CODE IF
22691 SUB #2,R15
22692 MOV R14,0(R15)
22693 MOV &$1DC6,R14
22694 ADD #4,&$1DC6
22695 MOV #$4034,0(R14)
22696 ADD #2,R14
22697 MOV @R13+,R0
22698 ENDCODE IMMEDIATE
22699
22700 CODE THEN
22701 MOV &$1DC6,0(R14)
22702 MOV @R15+,R14
22703 MOV @R13+,R0
22704 ENDCODE IMMEDIATE
22705 [THEN]
22706
22707 [UNDEFINED] ELSE [IF]
22708 CODE ELSE
22709 ADD #4,&$1DC6
22710 MOV &$1DC6,R10
22711 MOV #$403A,-4(R10)
22712 MOV R10,0(R14)
22713 SUB #2,R10
22714 MOV R10,R14
22715 MOV @R13+,R0
22716 ENDCODE IMMEDIATE
22717 [THEN]
22718
22719 [UNDEFINED] IS [IF]
22720
22721 CODE DEFER!
22722 MOV @R15+,2(R14)
22723 MOV @R15+,R14
22724 MOV @R13+,R0
22725 ENDCODE
22726
22727
22728 : IS
22729 STATE @
22730 IF  POSTPONE ['] POSTPONE DEFER! 
22731 ELSE ' DEFER! 
22732 THEN
22733 ; IMMEDIATE
22734 [THEN]
22735
22736 [UNDEFINED] >BODY [IF]
22737 CODE >BODY
22738 ADD #4,R14
22739 MOV @R13+,R0
22740 ENDCODE
22741 [THEN]
22742
22743
22744 CODE 20_US
22745 BEGIN
22746     BEGIN
22747         BIT #1,&$3C0
22748     0<> UNTIL
22749     BIC #1,&$3C0
22750     SUB #1,R14
22751 U< UNTIL
22752 MOV @R15+,R14
22753 MOV @R13+,R0
22754 ENDCODE
22755
22756 CODE TOP_LCD
22757     BIS.B #4,&$243
22758     BIT.B #1,&$241
22759 0= IF
22760     AND.B #$0F,R14
22761     MOV.B R14,&$222
22762     BIC.B #4,&$243
22763     MOV @R15+,R14
22764     MOV @R13+,R0
22765 THEN
22766     SUB #2,R15
22767     MOV R14,0(R15)
22768     BIC.B #4,&$243
22769     MOV.B &$220,R14
22770     AND.B #$0F,R14
22771     MOV @R13+,R0
22772 ENDCODE
22773
22774 CODE LCD_WRC
22775     BIS.B #2,&$243
22776 BW1 SUB #2,R15
22777     MOV R14,0(R15)
22778     RRUM #4,R14
22779     BIC.B #1,&$243
22780     BIS.B #$0F,&$224
22781 COLON
22782     TOP_LCD 2 20_US
22783     TOP_LCD 2 20_US 
22784 ;
22785
22786 CODE LCD_WRF
22787     BIC.B #2,&$243
22788     GOTO BW1
22789 ENDCODE
22790
22791 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
22792 : LCD_HOME $02 LCD_WRF 100 20_us ;
22793
22794
22795
22796 HDNCODE WDT_INT
22797 BIT.B #$20,&$240
22798 0= IF
22799     CMP #19,&$3D6
22800     U< IF
22801         ADD #1,&$3D6
22802     THEN
22803 ELSE
22804     BIT.B #$40,&$240
22805     0= IF
22806         CMP #3,&$3D6
22807         U>= IF
22808            SUB #1,&$3D6
22809         THEN
22810     THEN
22811 THEN
22812 RETI
22813 ENDCODE
22814
22815 HDNCODE RC5_INT
22816 $1800 @ 16000 = [IF]
22817     MOV #1,&$3A0
22818 [THEN]
22819 $1800 @ 24000 = [IF]
22820     MOV #2,&$3A0
22821 [THEN]
22822 MOV #1778,R9
22823 MOV #14,R10
22824 BEGIN
22825 MOV #%1011100100,&$380
22826     RRUM    #1,R9
22827     MOV     R9,R8
22828     RRUM    #1,R8
22829     ADD     R9,R8
22830     BEGIN   CMP R8,&$390
22831     U>= UNTIL
22832     BIT.B   #4,&$200
22833     ADDC    R11,R11
22834     MOV.B   &$200,&$208
22835     BIC.B   #4,&$20C
22836     SUB     #1,R10
22837 0<> WHILE
22838     ADD R9,R8
22839     BEGIN
22840         MOV &$390,R9
22841         CMP R8,R9
22842         U>= IF
22843         BIC #$30,&$380
22844         GOTO FW1
22845         THEN
22846         BIT.B #4,&$20C
22847     0<> UNTIL
22848 REPEAT
22849 BIC #$30,&$380
22850 RLAM    #1,R11
22851 MOV.B   R11,R9
22852 RRUM    #2,R9
22853 BIT     #$4000,R11
22854 0= IF   BIS #$40,R9
22855 THEN
22856 RRUM    #3,R11
22857 XOR     @R1,R11
22858 BIT     #$400,R11
22859 0= ?GOTO FW2
22860 XOR #$400,0(R1)
22861 SUB #8,R15
22862 MOV R14,6(R15)
22863 MOV &$1DDC,4(R15)
22864 MOV #$10,&$1DDC
22865 MOV R9,0(R15)
22866 MOV #0,R14
22867 LO2HI
22868     LCD_CLEAR
22869     <# # #S #36 HOLD #>
22870     ['] LCD_WRC IS EMIT
22871     TYPE
22872     ['] EMIT >BODY IS EMIT
22873 HI2LO
22874 MOV @R15+,&$1DDC
22875 MOV @R15+,R14
22876 FW1 FW2
22877     MOV @R1+,R2
22878     BIC #%1111_1000,R2
22879     MOV @R1+,R0
22880 ENDCODE
22881
22882
22883 HDNCODE STOP_R2L
22884 CMP #$40AA,&{RC5TOLCD}+8
22885 0<> IF
22886     BIC.B #4,&$20A
22887     BIC.B #4,&$20C
22888     MOV #0,&$3C0
22889     MOV #0,&$340
22890     MOV #0,&$342
22891     MOV #$40AA,&{RC5TOLCD}+8
22892     MOV &{RC5TOLCD}+10,&WARM+2
22893     MOV &{RC5TOLCD}+12,&$FFEA
22894     MOV &{RC5TOLCD}+14,&$FFDE
22895     MOV &{RC5TOLCD}+10,R0
22896 THEN 
22897 MOV @R1+,R0
22898 ENDCODE
22899
22900 CODE STOP
22901 BW1
22902 CALL #STOP_R2L
22903 COLON
22904 ECHO
22905 ." RC5toLCD is removed,"
22906 ."  type START to restart"
22907 ABORT" "
22908 ;
22909
22910 HDNCODE INI_R2L
22911 BIC #1,&$130
22912 MOV &$1808,R14
22913 CMP #$0E,R14
22914 0<> IF
22915     CMP #$0A,R14
22916     U>= ?GOTO BW1
22917 THEN
22918 BIT.B #$20,&$240
22919 0= ?GOTO BW1
22920 MOV #0,&$1808
22921 MOV #%10_1101_0100,&$3C0
22922 $1800 @ 16000 = [IF]
22923     MOV #1,&$3E0
22924 [THEN]
22925 $1800 @ 24000 = [IF]
22926     MOV #2,&$3E0
22927 [THEN]
22928     MOV #19,&$3D2
22929 MOV #%0110_0000,&$3C6
22930     MOV #10,&$3D6
22931     BIS.B #$20,&$204
22932     BIS.B #$20,&$20A
22933     BIS.B #7,&$245
22934     BIC.B #7,&$247
22935     BIS.B #$0F,&$224
22936     BIC.B #$0F,&$226
22937     BIS.B #4,&$20A
22938     BIC.B #4,&$20C
22939 MOV #%01_0001_0100,&$340
22940     MOV ##3276,&$352
22941     MOV #%10000,&$342
22942 COLON
22943     #1000 20_US
22944     %011 TOP_LCD
22945     #205 20_US
22946     %011 TOP_LCD
22947     #5 20_US
22948     %011 TOP_LCD
22949     #2 20_US
22950     %010 TOP_LCD
22951     #2 20_US
22952     %00101000 LCD_WRF
22953     %1000 LCD_WRF
22954     LCD_CLEAR
22955     %0110 LCD_WRF
22956     %1100 LCD_WRF
22957     LCD_CLEAR
22958     ['] LCD_HOME IS CR
22959     ['] LCD_WRC  IS EMIT
22960     CR ." I love you"
22961     ['] CR >BODY IS CR
22962     ['] EMIT >BODY IS EMIT
22963     ." RC5toLCD is running. Type STOP to quit"
22964     ABORT" "
22965 ;
22966
22967 CODE START
22968 CMP #$40AA,&{RC5TOLCD}+8
22969 0= IF
22970     MOV #STOP_R2L,&{RC5TOLCD}+8
22971     MOV &WARM+2,&{RC5TOLCD}+10
22972     MOV #INI_R2L,&WARM+2
22973     MOV &$FFEA,&{RC5TOLCD}+12
22974     MOV #WDT_INT,&$FFEA
22975     MOV &$FFDE,&{RC5TOLCD}+14
22976     MOV #RC5_INT,&$FFDE
22977     MOV #INI_R2L,R0
22978 THEN
22979 MOV @R13+,R0 
22980 ENDCODE 
22981
22982
22983 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
22984
22985 MARKER {RC5TOLCD}
22986 6 ALLOT
22987
22988
22989
22990 [UNDEFINED] CONSTANT [IF]
22991 : CONSTANT 
22992 CREATE
22993 HI2LO
22994 MOV R14,-2(R10)
22995 MOV @R15+,R14
22996 MOV @R1+,R13
22997 MOV @R13+,R0
22998 ENDCODE
22999 [THEN]
23000
23001 [UNDEFINED] STATE [IF]
23002 $1DBE CONSTANT STATE
23003 [THEN]
23004
23005 [UNDEFINED] = [IF]
23006 CODE =
23007 SUB @R15+,R14
23008 0<> IF
23009     AND #0,R14
23010     MOV @R13+,R0
23011 THEN
23012 XOR #-1,R14
23013 MOV @R13+,R0
23014 ENDCODE
23015 [THEN]
23016
23017 [UNDEFINED] IF [IF]
23018 CODE IF
23019 SUB #2,R15
23020 MOV R14,0(R15)
23021 MOV &$1DC6,R14
23022 ADD #4,&$1DC6
23023 MOV #$4034,0(R14)
23024 ADD #2,R14
23025 MOV @R13+,R0
23026 ENDCODE IMMEDIATE
23027
23028 CODE THEN
23029 MOV &$1DC6,0(R14)
23030 MOV @R15+,R14
23031 MOV @R13+,R0
23032 ENDCODE IMMEDIATE
23033 [THEN]
23034
23035 [UNDEFINED] ELSE [IF]
23036 CODE ELSE
23037 ADD #4,&$1DC6
23038 MOV &$1DC6,R10
23039 MOV #$403A,-4(R10)
23040 MOV R10,0(R14)
23041 SUB #2,R10
23042 MOV R10,R14
23043 MOV @R13+,R0
23044 ENDCODE IMMEDIATE
23045 [THEN]
23046
23047 [UNDEFINED] IS [IF]
23048
23049 CODE DEFER!
23050 MOV @R15+,2(R14)
23051 MOV @R15+,R14
23052 MOV @R13+,R0
23053 ENDCODE
23054
23055
23056 : IS
23057 STATE @
23058 IF  POSTPONE ['] POSTPONE DEFER! 
23059 ELSE ' DEFER! 
23060 THEN
23061 ; IMMEDIATE
23062 [THEN]
23063
23064 [UNDEFINED] >BODY [IF]
23065 CODE >BODY
23066 ADD #4,R14
23067 MOV @R13+,R0
23068 ENDCODE
23069 [THEN]
23070
23071
23072 CODE 20_US
23073 BEGIN
23074     BEGIN
23075         BIT #1,&$3C0
23076     0<> UNTIL
23077     BIC #1,&$3C0
23078     SUB #1,R14
23079 U< UNTIL
23080 MOV @R15+,R14
23081 MOV @R13+,R0
23082 ENDCODE
23083
23084 CODE TOP_LCD
23085     BIS.B #4,&$243
23086     BIT.B #1,&$241
23087 0= IF
23088     AND.B #$0F,R14
23089     MOV.B R14,&$222
23090     BIC.B #4,&$243
23091     MOV @R15+,R14
23092     MOV @R13+,R0
23093 THEN
23094     SUB #2,R15
23095     MOV R14,0(R15)
23096     BIC.B #4,&$243
23097     MOV.B &$220,R14
23098     AND.B #$0F,R14
23099     MOV @R13+,R0
23100 ENDCODE
23101
23102 CODE LCD_WRC
23103     BIS.B #2,&$243
23104 BW1 SUB #2,R15
23105     MOV R14,0(R15)
23106     RRUM #4,R14
23107     BIC.B #1,&$243
23108     BIS.B #$0F,&$224
23109 COLON
23110     TOP_LCD 2 20_US
23111     TOP_LCD 2 20_US 
23112 ;
23113
23114 CODE LCD_WRF
23115     BIC.B #2,&$243
23116     GOTO BW1
23117 ENDCODE
23118
23119 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
23120 : LCD_HOME $02 LCD_WRF 100 20_us ;
23121
23122
23123
23124 HDNCODE WDT_INT
23125 BIT.B #$20,&$240
23126 0= IF
23127     CMP #19,&$3D6
23128     U< IF
23129         ADD #1,&$3D6
23130     THEN
23131 ELSE
23132     BIT.B #$40,&$240
23133     0= IF
23134         CMP #3,&$3D6
23135         U>= IF
23136            SUB #1,&$3D6
23137         THEN
23138     THEN
23139 THEN
23140 RETI
23141 ENDCODE
23142
23143 HDNCODE RC5_INT
23144 $1800 @ 16000 = [IF]
23145     MOV #1,&$3A0
23146 [THEN]
23147 $1800 @ 24000 = [IF]
23148     MOV #2,&$3A0
23149 [THEN]
23150 MOV #1778,R9
23151 MOV #14,R10
23152 BEGIN
23153 MOV #%1011100100,&$380
23154     RRUM    #1,R9
23155     MOV     R9,R8
23156     RRUM    #1,R8
23157     ADD     R9,R8
23158     BEGIN   CMP R8,&$390
23159     U>= UNTIL
23160     BIT.B   #4,&$200
23161     ADDC    R11,R11
23162     MOV.B   &$200,&$208
23163     BIC.B   #4,&$20C
23164     SUB     #1,R10
23165 0<> WHILE
23166     ADD R9,R8
23167     BEGIN
23168         MOV &$390,R9
23169         CMP R8,R9
23170         U>= IF
23171         BIC #$30,&$380
23172         GOTO FW1
23173         THEN
23174         BIT.B #4,&$20C
23175     0<> UNTIL
23176 REPEAT
23177 BIC #$30,&$380
23178 RLAM    #1,R11
23179 MOV.B   R11,R9
23180 RRUM    #2,R9
23181 BIT     #$4000,R11
23182 0= IF   BIS #$40,R9
23183 THEN
23184 RRUM    #3,R11
23185 XOR     @R1,R11
23186 BIT     #$400,R11
23187 0= ?GOTO FW2
23188 XOR #$400,0(R1)
23189 SUB #8,R15
23190 MOV R14,6(R15)
23191 MOV &$1DDC,4(R15)
23192 MOV #$10,&$1DDC
23193 MOV R9,0(R15)
23194 MOV #0,R14
23195 LO2HI
23196     LCD_CLEAR
23197     <# # #S #36 HOLD #>
23198     ['] LCD_WRC IS EMIT
23199     TYPE
23200     ['] EMIT >BODY IS EMIT
23201 HI2LO
23202 MOV @R15+,&$1DDC
23203 MOV @R15+,R14
23204 FW1 FW2
23205     MOV @R1+,R2
23206     BIC #%1111_1000,R2
23207     MOV @R1+,R0
23208 ENDCODE
23209
23210
23211 HDNCODE STOP_R2L
23212 CMP #$40AA,&{RC5TOLCD}+8
23213 0<> IF
23214     BIC.B #4,&$20A
23215     BIC.B #4,&$20C
23216     MOV #0,&$3C0
23217     MOV #0,&$340
23218     MOV #0,&$342
23219     MOV #$40AA,&{RC5TOLCD}+8
23220     MOV &{RC5TOLCD}+10,&WARM+2
23221     MOV &{RC5TOLCD}+12,&$FFEA
23222     MOV &{RC5TOLCD}+14,&$FFDE
23223     MOV &{RC5TOLCD}+10,R0
23224 THEN 
23225 MOV @R1+,R0
23226 ENDCODE
23227
23228 CODE STOP
23229 BW1
23230 CALL #STOP_R2L
23231 COLON
23232 ECHO
23233 ." RC5toLCD is removed,"
23234 ."  type START to restart"
23235 ABORT" "
23236 ;
23237
23238 HDNCODE INI_R2L
23239 BIC #1,&$130
23240 MOV &$1808,R14
23241 CMP #$0E,R14
23242 0<> IF
23243     CMP #$0A,R14
23244     U>= ?GOTO BW1
23245 THEN
23246 BIT.B #$20,&$240
23247 0= ?GOTO BW1
23248 MOV #0,&$1808
23249 MOV #%10_1101_0100,&$3C0
23250 $1800 @ 16000 = [IF]
23251     MOV #1,&$3E0
23252 [THEN]
23253 $1800 @ 24000 = [IF]
23254     MOV #2,&$3E0
23255 [THEN]
23256     MOV #19,&$3D2
23257 MOV #%0110_0000,&$3C6
23258     MOV #10,&$3D6
23259     BIS.B #$20,&$204
23260     BIS.B #$20,&$20A
23261     BIS.B #7,&$245
23262     BIC.B #7,&$247
23263     BIS.B #$0F,&$224
23264     BIC.B #$0F,&$226
23265     BIS.B #4,&$20A
23266     BIC.B #4,&$20C
23267 MOV #%01_0001_0100,&$340
23268     MOV ##3276,&$352
23269     MOV #%10000,&$342
23270 COLON
23271     #1000 20_US
23272     %011 TOP_LCD
23273     #205 20_US
23274     %011 TOP_LCD
23275     #5 20_US
23276     %011 TOP_LCD
23277     #2 20_US
23278     %010 TOP_LCD
23279     #2 20_US
23280     %00101000 LCD_WRF
23281     %1000 LCD_WRF
23282     LCD_CLEAR
23283     %0110 LCD_WRF
23284     %1100 LCD_WRF
23285     LCD_CLEAR
23286     ['] LCD_HOME IS CR
23287     ['] LCD_WRC  IS EMIT
23288     CR ." I love you"
23289     ['] CR >BODY IS CR
23290     ['] EMIT >BODY IS EMIT
23291     ." RC5toLCD is running. Type STOP to quit"
23292     ABORT" "
23293 ;
23294
23295 CODE START
23296 CMP #$40AA,&{RC5TOLCD}+8
23297 0= IF
23298     MOV #STOP_R2L,&{RC5TOLCD}+8
23299     MOV &WARM+2,&{RC5TOLCD}+10
23300     MOV #INI_R2L,&WARM+2
23301     MOV &$FFEA,&{RC5TOLCD}+12
23302     MOV #WDT_INT,&$FFEA
23303     MOV &$FFDE,&{RC5TOLCD}+14
23304     MOV #RC5_INT,&$FFDE
23305     MOV #INI_R2L,R0
23306 THEN
23307 MOV @R13+,R0 
23308 ENDCODE 
23309
23310
23311 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
23312
23313 MARKER {RC5TOLCD}
23314 6 ALLOT
23315
23316
23317
23318 [UNDEFINED] CONSTANT [IF]
23319 : CONSTANT 
23320 CREATE
23321 HI2LO
23322 MOV R14,-2(R10)
23323 MOV @R15+,R14
23324 MOV @R1+,R13
23325 MOV @R13+,R0
23326 ENDCODE
23327 [THEN]
23328
23329 [UNDEFINED] STATE [IF]
23330 $1DBE CONSTANT STATE
23331 [THEN]
23332
23333 [UNDEFINED] = [IF]
23334 CODE =
23335 SUB @R15+,R14
23336 0<> IF
23337     AND #0,R14
23338     MOV @R13+,R0
23339 THEN
23340 XOR #-1,R14
23341 MOV @R13+,R0
23342 ENDCODE
23343 [THEN]
23344
23345 [UNDEFINED] IF [IF]
23346 CODE IF
23347 SUB #2,R15
23348 MOV R14,0(R15)
23349 MOV &$1DC6,R14
23350 ADD #4,&$1DC6
23351 MOV #$4034,0(R14)
23352 ADD #2,R14
23353 MOV @R13+,R0
23354 ENDCODE IMMEDIATE
23355
23356 CODE THEN
23357 MOV &$1DC6,0(R14)
23358 MOV @R15+,R14
23359 MOV @R13+,R0
23360 ENDCODE IMMEDIATE
23361 [THEN]
23362
23363 [UNDEFINED] ELSE [IF]
23364 CODE ELSE
23365 ADD #4,&$1DC6
23366 MOV &$1DC6,R10
23367 MOV #$403A,-4(R10)
23368 MOV R10,0(R14)
23369 SUB #2,R10
23370 MOV R10,R14
23371 MOV @R13+,R0
23372 ENDCODE IMMEDIATE
23373 [THEN]
23374
23375 [UNDEFINED] IS [IF]
23376
23377 CODE DEFER!
23378 MOV @R15+,2(R14)
23379 MOV @R15+,R14
23380 MOV @R13+,R0
23381 ENDCODE
23382
23383
23384 : IS
23385 STATE @
23386 IF  POSTPONE ['] POSTPONE DEFER! 
23387 ELSE ' DEFER! 
23388 THEN
23389 ; IMMEDIATE
23390 [THEN]
23391
23392 [UNDEFINED] >BODY [IF]
23393 CODE >BODY
23394 ADD #4,R14
23395 MOV @R13+,R0
23396 ENDCODE
23397 [THEN]
23398
23399
23400 CODE 20_US
23401 BEGIN
23402     BEGIN
23403         BIT #1,&$3C0
23404     0<> UNTIL
23405     BIC #1,&$3C0
23406     SUB #1,R14
23407 U< UNTIL
23408 MOV @R15+,R14
23409 MOV @R13+,R0
23410 ENDCODE
23411
23412 CODE TOP_LCD
23413     BIS.B #4,&$243
23414     BIT.B #1,&$241
23415 0= IF
23416     AND.B #$0F,R14
23417     MOV.B R14,&$222
23418     BIC.B #4,&$243
23419     MOV @R15+,R14
23420     MOV @R13+,R0
23421 THEN
23422     SUB #2,R15
23423     MOV R14,0(R15)
23424     BIC.B #4,&$243
23425     MOV.B &$220,R14
23426     AND.B #$0F,R14
23427     MOV @R13+,R0
23428 ENDCODE
23429
23430 CODE LCD_WRC
23431     BIS.B #2,&$243
23432 BW1 SUB #2,R15
23433     MOV R14,0(R15)
23434     RRUM #4,R14
23435     BIC.B #1,&$243
23436     BIS.B #$0F,&$224
23437 COLON
23438     TOP_LCD 2 20_US
23439     TOP_LCD 2 20_US 
23440 ;
23441
23442 CODE LCD_WRF
23443     BIC.B #2,&$243
23444     GOTO BW1
23445 ENDCODE
23446
23447 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
23448 : LCD_HOME $02 LCD_WRF 100 20_us ;
23449
23450
23451
23452 HDNCODE WDT_INT
23453 BIT.B #$20,&$240
23454 0= IF
23455     CMP #19,&$3D6
23456     U< IF
23457         ADD #1,&$3D6
23458     THEN
23459 ELSE
23460     BIT.B #$40,&$240
23461     0= IF
23462         CMP #3,&$3D6
23463         U>= IF
23464            SUB #1,&$3D6
23465         THEN
23466     THEN
23467 THEN
23468 RETI
23469 ENDCODE
23470
23471 HDNCODE RC5_INT
23472 $1800 @ 16000 = [IF]
23473     MOV #1,&$3A0
23474 [THEN]
23475 $1800 @ 24000 = [IF]
23476     MOV #2,&$3A0
23477 [THEN]
23478 MOV #1778,R9
23479 MOV #14,R10
23480 BEGIN
23481 MOV #%1011100100,&$380
23482     RRUM    #1,R9
23483     MOV     R9,R8
23484     RRUM    #1,R8
23485     ADD     R9,R8
23486     BEGIN   CMP R8,&$390
23487     U>= UNTIL
23488     BIT.B   #4,&$200
23489     ADDC    R11,R11
23490     MOV.B   &$200,&$208
23491     BIC.B   #4,&$20C
23492     SUB     #1,R10
23493 0<> WHILE
23494     ADD R9,R8
23495     BEGIN
23496         MOV &$390,R9
23497         CMP R8,R9
23498         U>= IF
23499         BIC #$30,&$380
23500         GOTO FW1
23501         THEN
23502         BIT.B #4,&$20C
23503     0<> UNTIL
23504 REPEAT
23505 BIC #$30,&$380
23506 RLAM    #1,R11
23507 MOV.B   R11,R9
23508 RRUM    #2,R9
23509 BIT     #$4000,R11
23510 0= IF   BIS #$40,R9
23511 THEN
23512 RRUM    #3,R11
23513 XOR     @R1,R11
23514 BIT     #$400,R11
23515 0= ?GOTO FW2
23516 XOR #$400,0(R1)
23517 SUB #8,R15
23518 MOV R14,6(R15)
23519 MOV &$1DDC,4(R15)
23520 MOV #$10,&$1DDC
23521 MOV R9,0(R15)
23522 MOV #0,R14
23523 LO2HI
23524     LCD_CLEAR
23525     <# # #S #36 HOLD #>
23526     ['] LCD_WRC IS EMIT
23527     TYPE
23528     ['] EMIT >BODY IS EMIT
23529 HI2LO
23530 MOV @R15+,&$1DDC
23531 MOV @R15+,R14
23532 FW1 FW2
23533     MOV @R1+,R2
23534     BIC #%1111_1000,R2
23535     MOV @R1+,R0
23536 ENDCODE
23537
23538
23539 HDNCODE STOP_R2L
23540 CMP #$40AA,&{RC5TOLCD}+8
23541 0<> IF
23542     BIC.B #4,&$20A
23543     BIC.B #4,&$20C
23544     MOV #0,&$3C0
23545     MOV #0,&$340
23546     MOV #0,&$342
23547     MOV #$40AA,&{RC5TOLCD}+8
23548     MOV &{RC5TOLCD}+10,&WARM+2
23549     MOV &{RC5TOLCD}+12,&$FFEA
23550     MOV &{RC5TOLCD}+14,&$FFDE
23551     MOV &{RC5TOLCD}+10,R0
23552 THEN 
23553 MOV @R1+,R0
23554 ENDCODE
23555
23556 CODE STOP
23557 BW1
23558 CALL #STOP_R2L
23559 COLON
23560 ECHO
23561 ." RC5toLCD is removed,"
23562 ."  type START to restart"
23563 ABORT" "
23564 ;
23565
23566 HDNCODE INI_R2L
23567 BIC #1,&$130
23568 MOV &$1808,R14
23569 CMP #$0E,R14
23570 0<> IF
23571     CMP #$0A,R14
23572     U>= ?GOTO BW1
23573 THEN
23574 BIT.B #$20,&$240
23575 0= ?GOTO BW1
23576 MOV #0,&$1808
23577 MOV #%10_1101_0100,&$3C0
23578 $1800 @ 16000 = [IF]
23579     MOV #1,&$3E0
23580 [THEN]
23581 $1800 @ 24000 = [IF]
23582     MOV #2,&$3E0
23583 [THEN]
23584     MOV #19,&$3D2
23585 MOV #%0110_0000,&$3C6
23586     MOV #10,&$3D6
23587     BIS.B #$20,&$204
23588     BIS.B #$20,&$20A
23589     BIS.B #7,&$245
23590     BIC.B #7,&$247
23591     BIS.B #$0F,&$224
23592     BIC.B #$0F,&$226
23593     BIS.B #4,&$20A
23594     BIC.B #4,&$20C
23595 MOV #%01_0001_0100,&$340
23596     MOV ##3276,&$352
23597     MOV #%10000,&$342
23598 COLON
23599     #1000 20_US
23600     %011 TOP_LCD
23601     #205 20_US
23602     %011 TOP_LCD
23603     #5 20_US
23604     %011 TOP_LCD
23605     #2 20_US
23606     %010 TOP_LCD
23607     #2 20_US
23608     %00101000 LCD_WRF
23609     %1000 LCD_WRF
23610     LCD_CLEAR
23611     %0110 LCD_WRF
23612     %1100 LCD_WRF
23613     LCD_CLEAR
23614     ['] LCD_HOME IS CR
23615     ['] LCD_WRC  IS EMIT
23616     CR ." I love you"
23617     ['] CR >BODY IS CR
23618     ['] EMIT >BODY IS EMIT
23619     ." RC5toLCD is running. Type STOP to quit"
23620     ABORT" "
23621 ;
23622
23623 CODE START
23624 CMP #$40AA,&{RC5TOLCD}+8
23625 0= IF
23626     MOV #STOP_R2L,&{RC5TOLCD}+8
23627     MOV &WARM+2,&{RC5TOLCD}+10
23628     MOV #INI_R2L,&WARM+2
23629     MOV &$FFEA,&{RC5TOLCD}+12
23630     MOV #WDT_INT,&$FFEA
23631     MOV &$FFDE,&{RC5TOLCD}+14
23632     MOV #RC5_INT,&$FFDE
23633     MOV #INI_R2L,R0
23634 THEN
23635 MOV @R13+,R0 
23636 ENDCODE 
23637
23638
23639 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
23640
23641 MARKER {RC5TOLCD}
23642 6 ALLOT
23643
23644
23645
23646 [UNDEFINED] CONSTANT [IF]
23647 : CONSTANT 
23648 CREATE
23649 HI2LO
23650 MOV R14,-2(R10)
23651 MOV @R15+,R14
23652 MOV @R1+,R13
23653 MOV @R13+,R0
23654 ENDCODE
23655 [THEN]
23656
23657 [UNDEFINED] STATE [IF]
23658 $1DBE CONSTANT STATE
23659 [THEN]
23660
23661 [UNDEFINED] = [IF]
23662 CODE =
23663 SUB @R15+,R14
23664 0<> IF
23665     AND #0,R14
23666     MOV @R13+,R0
23667 THEN
23668 XOR #-1,R14
23669 MOV @R13+,R0
23670 ENDCODE
23671 [THEN]
23672
23673 [UNDEFINED] IF [IF]
23674 CODE IF
23675 SUB #2,R15
23676 MOV R14,0(R15)
23677 MOV &$1DC6,R14
23678 ADD #4,&$1DC6
23679 MOV #$4034,0(R14)
23680 ADD #2,R14
23681 MOV @R13+,R0
23682 ENDCODE IMMEDIATE
23683
23684 CODE THEN
23685 MOV &$1DC6,0(R14)
23686 MOV @R15+,R14
23687 MOV @R13+,R0
23688 ENDCODE IMMEDIATE
23689 [THEN]
23690
23691 [UNDEFINED] ELSE [IF]
23692 CODE ELSE
23693 ADD #4,&$1DC6
23694 MOV &$1DC6,R10
23695 MOV #$403A,-4(R10)
23696 MOV R10,0(R14)
23697 SUB #2,R10
23698 MOV R10,R14
23699 MOV @R13+,R0
23700 ENDCODE IMMEDIATE
23701 [THEN]
23702
23703 [UNDEFINED] IS [IF]
23704
23705 CODE DEFER!
23706 MOV @R15+,2(R14)
23707 MOV @R15+,R14
23708 MOV @R13+,R0
23709 ENDCODE
23710
23711
23712 : IS
23713 STATE @
23714 IF  POSTPONE ['] POSTPONE DEFER! 
23715 ELSE ' DEFER! 
23716 THEN
23717 ; IMMEDIATE
23718 [THEN]
23719
23720 [UNDEFINED] >BODY [IF]
23721 CODE >BODY
23722 ADD #4,R14
23723 MOV @R13+,R0
23724 ENDCODE
23725 [THEN]
23726
23727
23728 CODE 20_US
23729 BEGIN
23730     BEGIN
23731         BIT #1,&$3C0
23732     0<> UNTIL
23733     BIC #1,&$3C0
23734     SUB #1,R14
23735 U< UNTIL
23736 MOV @R15+,R14
23737 MOV @R13+,R0
23738 ENDCODE
23739
23740 CODE TOP_LCD
23741     BIS.B #4,&$243
23742     BIT.B #1,&$241
23743 0= IF
23744     AND.B #$0F,R14
23745     MOV.B R14,&$222
23746     BIC.B #4,&$243
23747     MOV @R15+,R14
23748     MOV @R13+,R0
23749 THEN
23750     SUB #2,R15
23751     MOV R14,0(R15)
23752     BIC.B #4,&$243
23753     MOV.B &$220,R14
23754     AND.B #$0F,R14
23755     MOV @R13+,R0
23756 ENDCODE
23757
23758 CODE LCD_WRC
23759     BIS.B #2,&$243
23760 BW1 SUB #2,R15
23761     MOV R14,0(R15)
23762     RRUM #4,R14
23763     BIC.B #1,&$243
23764     BIS.B #$0F,&$224
23765 COLON
23766     TOP_LCD 2 20_US
23767     TOP_LCD 2 20_US 
23768 ;
23769
23770 CODE LCD_WRF
23771     BIC.B #2,&$243
23772     GOTO BW1
23773 ENDCODE
23774
23775 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
23776 : LCD_HOME $02 LCD_WRF 100 20_us ;
23777
23778
23779
23780 HDNCODE WDT_INT
23781 BIT.B #$20,&$240
23782 0= IF
23783     CMP #19,&$3D6
23784     U< IF
23785         ADD #1,&$3D6
23786     THEN
23787 ELSE
23788     BIT.B #$40,&$240
23789     0= IF
23790         CMP #3,&$3D6
23791         U>= IF
23792            SUB #1,&$3D6
23793         THEN
23794     THEN
23795 THEN
23796 RETI
23797 ENDCODE
23798
23799 HDNCODE RC5_INT
23800 $1800 @ 16000 = [IF]
23801     MOV #1,&$3A0
23802 [THEN]
23803 $1800 @ 24000 = [IF]
23804     MOV #2,&$3A0
23805 [THEN]
23806 MOV #1778,R9
23807 MOV #14,R10
23808 BEGIN
23809 MOV #%1011100100,&$380
23810     RRUM    #1,R9
23811     MOV     R9,R8
23812     RRUM    #1,R8
23813     ADD     R9,R8
23814     BEGIN   CMP R8,&$390
23815     U>= UNTIL
23816     BIT.B   #4,&$200
23817     ADDC    R11,R11
23818     MOV.B   &$200,&$208
23819     BIC.B   #4,&$20C
23820     SUB     #1,R10
23821 0<> WHILE
23822     ADD R9,R8
23823     BEGIN
23824         MOV &$390,R9
23825         CMP R8,R9
23826         U>= IF
23827         BIC #$30,&$380
23828         GOTO FW1
23829         THEN
23830         BIT.B #4,&$20C
23831     0<> UNTIL
23832 REPEAT
23833 BIC #$30,&$380
23834 RLAM    #1,R11
23835 MOV.B   R11,R9
23836 RRUM    #2,R9
23837 BIT     #$4000,R11
23838 0= IF   BIS #$40,R9
23839 THEN
23840 RRUM    #3,R11
23841 XOR     @R1,R11
23842 BIT     #$400,R11
23843 0= ?GOTO FW2
23844 XOR #$400,0(R1)
23845 SUB #8,R15
23846 MOV R14,6(R15)
23847 MOV &$1DDC,4(R15)
23848 MOV #$10,&$1DDC
23849 MOV R9,0(R15)
23850 MOV #0,R14
23851 LO2HI
23852     LCD_CLEAR
23853     <# # #S #36 HOLD #>
23854     ['] LCD_WRC IS EMIT
23855     TYPE
23856     ['] EMIT >BODY IS EMIT
23857 HI2LO
23858 MOV @R15+,&$1DDC
23859 MOV @R15+,R14
23860 FW1 FW2
23861     MOV @R1+,R2
23862     BIC #%1111_1000,R2
23863     MOV @R1+,R0
23864 ENDCODE
23865
23866
23867 HDNCODE STOP_R2L
23868 CMP #$40AA,&{RC5TOLCD}+8
23869 0<> IF
23870     BIC.B #4,&$20A
23871     BIC.B #4,&$20C
23872     MOV #0,&$3C0
23873     MOV #0,&$340
23874     MOV #0,&$342
23875     MOV #$40AA,&{RC5TOLCD}+8
23876     MOV &{RC5TOLCD}+10,&WARM+2
23877     MOV &{RC5TOLCD}+12,&$FFEA
23878     MOV &{RC5TOLCD}+14,&$FFDE
23879     MOV &{RC5TOLCD}+10,R0
23880 THEN 
23881 MOV @R1+,R0
23882 ENDCODE
23883
23884 CODE STOP
23885 BW1
23886 CALL #STOP_R2L
23887 COLON
23888 ECHO
23889 ." RC5toLCD is removed,"
23890 ."  type START to restart"
23891 ABORT" "
23892 ;
23893
23894 HDNCODE INI_R2L
23895 BIC #1,&$130
23896 MOV &$1808,R14
23897 CMP #$0E,R14
23898 0<> IF
23899     CMP #$0A,R14
23900     U>= ?GOTO BW1
23901 THEN
23902 BIT.B #$20,&$240
23903 0= ?GOTO BW1
23904 MOV #0,&$1808
23905 MOV #%10_1101_0100,&$3C0
23906 $1800 @ 16000 = [IF]
23907     MOV #1,&$3E0
23908 [THEN]
23909 $1800 @ 24000 = [IF]
23910     MOV #2,&$3E0
23911 [THEN]
23912     MOV #19,&$3D2
23913 MOV #%0110_0000,&$3C6
23914     MOV #10,&$3D6
23915     BIS.B #$20,&$204
23916     BIS.B #$20,&$20A
23917     BIS.B #7,&$245
23918     BIC.B #7,&$247
23919     BIS.B #$0F,&$224
23920     BIC.B #$0F,&$226
23921     BIS.B #4,&$20A
23922     BIC.B #4,&$20C
23923 MOV #%01_0001_0100,&$340
23924     MOV ##3276,&$352
23925     MOV #%10000,&$342
23926 COLON
23927     #1000 20_US
23928     %011 TOP_LCD
23929     #205 20_US
23930     %011 TOP_LCD
23931     #5 20_US
23932     %011 TOP_LCD
23933     #2 20_US
23934     %010 TOP_LCD
23935     #2 20_US
23936     %00101000 LCD_WRF
23937     %1000 LCD_WRF
23938     LCD_CLEAR
23939     %0110 LCD_WRF
23940     %1100 LCD_WRF
23941     LCD_CLEAR
23942     ['] LCD_HOME IS CR
23943     ['] LCD_WRC  IS EMIT
23944     CR ." I love you"
23945     ['] CR >BODY IS CR
23946     ['] EMIT >BODY IS EMIT
23947     ." RC5toLCD is running. Type STOP to quit"
23948     ABORT" "
23949 ;
23950
23951 CODE START
23952 CMP #$40AA,&{RC5TOLCD}+8
23953 0= IF
23954     MOV #STOP_R2L,&{RC5TOLCD}+8
23955     MOV &WARM+2,&{RC5TOLCD}+10
23956     MOV #INI_R2L,&WARM+2
23957     MOV &$FFEA,&{RC5TOLCD}+12
23958     MOV #WDT_INT,&$FFEA
23959     MOV &$FFDE,&{RC5TOLCD}+14
23960     MOV #RC5_INT,&$FFDE
23961     MOV #INI_R2L,R0
23962 THEN
23963 MOV @R13+,R0 
23964 ENDCODE 
23965
23966
23967 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
23968
23969 MARKER {RC5TOLCD}
23970 6 ALLOT
23971
23972
23973
23974 [UNDEFINED] CONSTANT [IF]
23975 : CONSTANT 
23976 CREATE
23977 HI2LO
23978 MOV R14,-2(R10)
23979 MOV @R15+,R14
23980 MOV @R1+,R13
23981 MOV @R13+,R0
23982 ENDCODE
23983 [THEN]
23984
23985 [UNDEFINED] STATE [IF]
23986 $1DBE CONSTANT STATE
23987 [THEN]
23988
23989 [UNDEFINED] = [IF]
23990 CODE =
23991 SUB @R15+,R14
23992 0<> IF
23993     AND #0,R14
23994     MOV @R13+,R0
23995 THEN
23996 XOR #-1,R14
23997 MOV @R13+,R0
23998 ENDCODE
23999 [THEN]
24000
24001 [UNDEFINED] IF [IF]
24002 CODE IF
24003 SUB #2,R15
24004 MOV R14,0(R15)
24005 MOV &$1DC6,R14
24006 ADD #4,&$1DC6
24007 MOV #$4034,0(R14)
24008 ADD #2,R14
24009 MOV @R13+,R0
24010 ENDCODE IMMEDIATE
24011
24012 CODE THEN
24013 MOV &$1DC6,0(R14)
24014 MOV @R15+,R14
24015 MOV @R13+,R0
24016 ENDCODE IMMEDIATE
24017 [THEN]
24018
24019 [UNDEFINED] ELSE [IF]
24020 CODE ELSE
24021 ADD #4,&$1DC6
24022 MOV &$1DC6,R10
24023 MOV #$403A,-4(R10)
24024 MOV R10,0(R14)
24025 SUB #2,R10
24026 MOV R10,R14
24027 MOV @R13+,R0
24028 ENDCODE IMMEDIATE
24029 [THEN]
24030
24031 [UNDEFINED] IS [IF]
24032
24033 CODE DEFER!
24034 MOV @R15+,2(R14)
24035 MOV @R15+,R14
24036 MOV @R13+,R0
24037 ENDCODE
24038
24039
24040 : IS
24041 STATE @
24042 IF  POSTPONE ['] POSTPONE DEFER! 
24043 ELSE ' DEFER! 
24044 THEN
24045 ; IMMEDIATE
24046 [THEN]
24047
24048 [UNDEFINED] >BODY [IF]
24049 CODE >BODY
24050 ADD #4,R14
24051 MOV @R13+,R0
24052 ENDCODE
24053 [THEN]
24054
24055
24056 CODE 20_US
24057 BEGIN
24058     BEGIN
24059         BIT #1,&$3C0
24060     0<> UNTIL
24061     BIC #1,&$3C0
24062     SUB #1,R14
24063 U< UNTIL
24064 MOV @R15+,R14
24065 MOV @R13+,R0
24066 ENDCODE
24067
24068 CODE TOP_LCD
24069     BIS.B #4,&$243
24070     BIT.B #1,&$241
24071 0= IF
24072     AND.B #$0F,R14
24073     MOV.B R14,&$222
24074     BIC.B #4,&$243
24075     MOV @R15+,R14
24076     MOV @R13+,R0
24077 THEN
24078     SUB #2,R15
24079     MOV R14,0(R15)
24080     BIC.B #4,&$243
24081     MOV.B &$220,R14
24082     AND.B #$0F,R14
24083     MOV @R13+,R0
24084 ENDCODE
24085
24086 CODE LCD_WRC
24087     BIS.B #2,&$243
24088 BW1 SUB #2,R15
24089     MOV R14,0(R15)
24090     RRUM #4,R14
24091     BIC.B #1,&$243
24092     BIS.B #$0F,&$224
24093 COLON
24094     TOP_LCD 2 20_US
24095     TOP_LCD 2 20_US 
24096 ;
24097
24098 CODE LCD_WRF
24099     BIC.B #2,&$243
24100     GOTO BW1
24101 ENDCODE
24102
24103 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
24104 : LCD_HOME $02 LCD_WRF 100 20_us ;
24105
24106
24107
24108 HDNCODE WDT_INT
24109 BIT.B #$20,&$240
24110 0= IF
24111     CMP #19,&$3D6
24112     U< IF
24113         ADD #1,&$3D6
24114     THEN
24115 ELSE
24116     BIT.B #$40,&$240
24117     0= IF
24118         CMP #3,&$3D6
24119         U>= IF
24120            SUB #1,&$3D6
24121         THEN
24122     THEN
24123 THEN
24124 RETI
24125 ENDCODE
24126
24127 HDNCODE RC5_INT
24128 $1800 @ 16000 = [IF]
24129     MOV #1,&$3A0
24130 [THEN]
24131 $1800 @ 24000 = [IF]
24132     MOV #2,&$3A0
24133 [THEN]
24134 MOV #1778,R9
24135 MOV #14,R10
24136 BEGIN
24137 MOV #%1011100100,&$380
24138     RRUM    #1,R9
24139     MOV     R9,R8
24140     RRUM    #1,R8
24141     ADD     R9,R8
24142     BEGIN   CMP R8,&$390
24143     U>= UNTIL
24144     BIT.B   #4,&$200
24145     ADDC    R11,R11
24146     MOV.B   &$200,&$208
24147     BIC.B   #4,&$20C
24148     SUB     #1,R10
24149 0<> WHILE
24150     ADD R9,R8
24151     BEGIN
24152         MOV &$390,R9
24153         CMP R8,R9
24154         U>= IF
24155         BIC #$30,&$380
24156         GOTO FW1
24157         THEN
24158         BIT.B #4,&$20C
24159     0<> UNTIL
24160 REPEAT
24161 BIC #$30,&$380
24162 RLAM    #1,R11
24163 MOV.B   R11,R9
24164 RRUM    #2,R9
24165 BIT     #$4000,R11
24166 0= IF   BIS #$40,R9
24167 THEN
24168 RRUM    #3,R11
24169 XOR     @R1,R11
24170 BIT     #$400,R11
24171 0= ?GOTO FW2
24172 XOR #$400,0(R1)
24173 SUB #8,R15
24174 MOV R14,6(R15)
24175 MOV &$1DDC,4(R15)
24176 MOV #$10,&$1DDC
24177 MOV R9,0(R15)
24178 MOV #0,R14
24179 LO2HI
24180     LCD_CLEAR
24181     <# # #S #36 HOLD #>
24182     ['] LCD_WRC IS EMIT
24183     TYPE
24184     ['] EMIT >BODY IS EMIT
24185 HI2LO
24186 MOV @R15+,&$1DDC
24187 MOV @R15+,R14
24188 FW1 FW2
24189     MOV @R1+,R2
24190     BIC #%1111_1000,R2
24191     MOV @R1+,R0
24192 ENDCODE
24193
24194
24195 HDNCODE STOP_R2L
24196 CMP #$40AA,&{RC5TOLCD}+8
24197 0<> IF
24198     BIC.B #4,&$20A
24199     BIC.B #4,&$20C
24200     MOV #0,&$3C0
24201     MOV #0,&$340
24202     MOV #0,&$342
24203     MOV #$40AA,&{RC5TOLCD}+8
24204     MOV &{RC5TOLCD}+10,&WARM+2
24205     MOV &{RC5TOLCD}+12,&$FFEA
24206     MOV &{RC5TOLCD}+14,&$FFDE
24207     MOV &{RC5TOLCD}+10,R0
24208 THEN 
24209 MOV @R1+,R0
24210 ENDCODE
24211
24212 CODE STOP
24213 BW1
24214 CALL #STOP_R2L
24215 COLON
24216 ECHO
24217 ." RC5toLCD is removed,"
24218 ."  type START to restart"
24219 ABORT" "
24220 ;
24221
24222 HDNCODE INI_R2L
24223 BIC #1,&$130
24224 MOV &$1808,R14
24225 CMP #$0E,R14
24226 0<> IF
24227     CMP #$0A,R14
24228     U>= ?GOTO BW1
24229 THEN
24230 BIT.B #$20,&$240
24231 0= ?GOTO BW1
24232 MOV #0,&$1808
24233 MOV #%10_1101_0100,&$3C0
24234 $1800 @ 16000 = [IF]
24235     MOV #1,&$3E0
24236 [THEN]
24237 $1800 @ 24000 = [IF]
24238     MOV #2,&$3E0
24239 [THEN]
24240     MOV #19,&$3D2
24241 MOV #%0110_0000,&$3C6
24242     MOV #10,&$3D6
24243     BIS.B #$20,&$204
24244     BIS.B #$20,&$20A
24245     BIS.B #7,&$245
24246     BIC.B #7,&$247
24247     BIS.B #$0F,&$224
24248     BIC.B #$0F,&$226
24249     BIS.B #4,&$20A
24250     BIC.B #4,&$20C
24251 MOV #%01_0001_0100,&$340
24252     MOV ##3276,&$352
24253     MOV #%10000,&$342
24254 COLON
24255     #1000 20_US
24256     %011 TOP_LCD
24257     #205 20_US
24258     %011 TOP_LCD
24259     #5 20_US
24260     %011 TOP_LCD
24261     #2 20_US
24262     %010 TOP_LCD
24263     #2 20_US
24264     %00101000 LCD_WRF
24265     %1000 LCD_WRF
24266     LCD_CLEAR
24267     %0110 LCD_WRF
24268     %1100 LCD_WRF
24269     LCD_CLEAR
24270     ['] LCD_HOME IS CR
24271     ['] LCD_WRC  IS EMIT
24272     CR ." I love you"
24273     ['] CR >BODY IS CR
24274     ['] EMIT >BODY IS EMIT
24275     ." RC5toLCD is running. Type STOP to quit"
24276     ABORT" "
24277 ;
24278
24279 CODE START
24280 CMP #$40AA,&{RC5TOLCD}+8
24281 0= IF
24282     MOV #STOP_R2L,&{RC5TOLCD}+8
24283     MOV &WARM+2,&{RC5TOLCD}+10
24284     MOV #INI_R2L,&WARM+2
24285     MOV &$FFEA,&{RC5TOLCD}+12
24286     MOV #WDT_INT,&$FFEA
24287     MOV &$FFDE,&{RC5TOLCD}+14
24288     MOV #RC5_INT,&$FFDE
24289     MOV #INI_R2L,R0
24290 THEN
24291 MOV @R13+,R0 
24292 ENDCODE 
24293
24294
24295 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
24296
24297 MARKER {RC5TOLCD}
24298 6 ALLOT
24299
24300
24301
24302 [UNDEFINED] CONSTANT [IF]
24303 : CONSTANT 
24304 CREATE
24305 HI2LO
24306 MOV R14,-2(R10)
24307 MOV @R15+,R14
24308 MOV @R1+,R13
24309 MOV @R13+,R0
24310 ENDCODE
24311 [THEN]
24312
24313 [UNDEFINED] STATE [IF]
24314 $1DBE CONSTANT STATE
24315 [THEN]
24316
24317 [UNDEFINED] = [IF]
24318 CODE =
24319 SUB @R15+,R14
24320 0<> IF
24321     AND #0,R14
24322     MOV @R13+,R0
24323 THEN
24324 XOR #-1,R14
24325 MOV @R13+,R0
24326 ENDCODE
24327 [THEN]
24328
24329 [UNDEFINED] IF [IF]
24330 CODE IF
24331 SUB #2,R15
24332 MOV R14,0(R15)
24333 MOV &$1DC6,R14
24334 ADD #4,&$1DC6
24335 MOV #$4034,0(R14)
24336 ADD #2,R14
24337 MOV @R13+,R0
24338 ENDCODE IMMEDIATE
24339
24340 CODE THEN
24341 MOV &$1DC6,0(R14)
24342 MOV @R15+,R14
24343 MOV @R13+,R0
24344 ENDCODE IMMEDIATE
24345 [THEN]
24346
24347 [UNDEFINED] ELSE [IF]
24348 CODE ELSE
24349 ADD #4,&$1DC6
24350 MOV &$1DC6,R10
24351 MOV #$403A,-4(R10)
24352 MOV R10,0(R14)
24353 SUB #2,R10
24354 MOV R10,R14
24355 MOV @R13+,R0
24356 ENDCODE IMMEDIATE
24357 [THEN]
24358
24359 [UNDEFINED] IS [IF]
24360
24361 CODE DEFER!
24362 MOV @R15+,2(R14)
24363 MOV @R15+,R14
24364 MOV @R13+,R0
24365 ENDCODE
24366
24367
24368 : IS
24369 STATE @
24370 IF  POSTPONE ['] POSTPONE DEFER! 
24371 ELSE ' DEFER! 
24372 THEN
24373 ; IMMEDIATE
24374 [THEN]
24375
24376 [UNDEFINED] >BODY [IF]
24377 CODE >BODY
24378 ADD #4,R14
24379 MOV @R13+,R0
24380 ENDCODE
24381 [THEN]
24382
24383
24384 CODE 20_US
24385 BEGIN
24386     BEGIN
24387         BIT #1,&$3C0
24388     0<> UNTIL
24389     BIC #1,&$3C0
24390     SUB #1,R14
24391 U< UNTIL
24392 MOV @R15+,R14
24393 MOV @R13+,R0
24394 ENDCODE
24395
24396 CODE TOP_LCD
24397     BIS.B #4,&$243
24398     BIT.B #1,&$241
24399 0= IF
24400     AND.B #$0F,R14
24401     MOV.B R14,&$222
24402     BIC.B #4,&$243
24403     MOV @R15+,R14
24404     MOV @R13+,R0
24405 THEN
24406     SUB #2,R15
24407     MOV R14,0(R15)
24408     BIC.B #4,&$243
24409     MOV.B &$220,R14
24410     AND.B #$0F,R14
24411     MOV @R13+,R0
24412 ENDCODE
24413
24414 CODE LCD_WRC
24415     BIS.B #2,&$243
24416 BW1 SUB #2,R15
24417     MOV R14,0(R15)
24418     RRUM #4,R14
24419     BIC.B #1,&$243
24420     BIS.B #$0F,&$224
24421 COLON
24422     TOP_LCD 2 20_US
24423     TOP_LCD 2 20_US 
24424 ;
24425
24426 CODE LCD_WRF
24427     BIC.B #2,&$243
24428     GOTO BW1
24429 ENDCODE
24430
24431 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
24432 : LCD_HOME $02 LCD_WRF 100 20_us ;
24433
24434
24435
24436 HDNCODE WDT_INT
24437 BIT.B #$20,&$240
24438 0= IF
24439     CMP #19,&$3D6
24440     U< IF
24441         ADD #1,&$3D6
24442     THEN
24443 ELSE
24444     BIT.B #$40,&$240
24445     0= IF
24446         CMP #3,&$3D6
24447         U>= IF
24448            SUB #1,&$3D6
24449         THEN
24450     THEN
24451 THEN
24452 RETI
24453 ENDCODE
24454
24455 HDNCODE RC5_INT
24456 $1800 @ 16000 = [IF]
24457     MOV #1,&$3A0
24458 [THEN]
24459 $1800 @ 24000 = [IF]
24460     MOV #2,&$3A0
24461 [THEN]
24462 MOV #1778,R9
24463 MOV #14,R10
24464 BEGIN
24465 MOV #%1011100100,&$380
24466     RRUM    #1,R9
24467     MOV     R9,R8
24468     RRUM    #1,R8
24469     ADD     R9,R8
24470     BEGIN   CMP R8,&$390
24471     U>= UNTIL
24472     BIT.B   #4,&$200
24473     ADDC    R11,R11
24474     MOV.B   &$200,&$208
24475     BIC.B   #4,&$20C
24476     SUB     #1,R10
24477 0<> WHILE
24478     ADD R9,R8
24479     BEGIN
24480         MOV &$390,R9
24481         CMP R8,R9
24482         U>= IF
24483         BIC #$30,&$380
24484         GOTO FW1
24485         THEN
24486         BIT.B #4,&$20C
24487     0<> UNTIL
24488 REPEAT
24489 BIC #$30,&$380
24490 RLAM    #1,R11
24491 MOV.B   R11,R9
24492 RRUM    #2,R9
24493 BIT     #$4000,R11
24494 0= IF   BIS #$40,R9
24495 THEN
24496 RRUM    #3,R11
24497 XOR     @R1,R11
24498 BIT     #$400,R11
24499 0= ?GOTO FW2
24500 XOR #$400,0(R1)
24501 SUB #8,R15
24502 MOV R14,6(R15)
24503 MOV &$1DDC,4(R15)
24504 MOV #$10,&$1DDC
24505 MOV R9,0(R15)
24506 MOV #0,R14
24507 LO2HI
24508     LCD_CLEAR
24509     <# # #S #36 HOLD #>
24510     ['] LCD_WRC IS EMIT
24511     TYPE
24512     ['] EMIT >BODY IS EMIT
24513 HI2LO
24514 MOV @R15+,&$1DDC
24515 MOV @R15+,R14
24516 FW1 FW2
24517     MOV @R1+,R2
24518     BIC #%1111_1000,R2
24519     MOV @R1+,R0
24520 ENDCODE
24521
24522
24523 HDNCODE STOP_R2L
24524 CMP #$40AA,&{RC5TOLCD}+8
24525 0<> IF
24526     BIC.B #4,&$20A
24527     BIC.B #4,&$20C
24528     MOV #0,&$3C0
24529     MOV #0,&$340
24530     MOV #0,&$342
24531     MOV #$40AA,&{RC5TOLCD}+8
24532     MOV &{RC5TOLCD}+10,&WARM+2
24533     MOV &{RC5TOLCD}+12,&$FFEA
24534     MOV &{RC5TOLCD}+14,&$FFDE
24535     MOV &{RC5TOLCD}+10,R0
24536 THEN 
24537 MOV @R1+,R0
24538 ENDCODE
24539
24540 CODE STOP
24541 BW1
24542 CALL #STOP_R2L
24543 COLON
24544 ECHO
24545 ." RC5toLCD is removed,"
24546 ."  type START to restart"
24547 ABORT" "
24548 ;
24549
24550 HDNCODE INI_R2L
24551 BIC #1,&$130
24552 MOV &$1808,R14
24553 CMP #$0E,R14
24554 0<> IF
24555     CMP #$0A,R14
24556     U>= ?GOTO BW1
24557 THEN
24558 BIT.B #$20,&$240
24559 0= ?GOTO BW1
24560 MOV #0,&$1808
24561 MOV #%10_1101_0100,&$3C0
24562 $1800 @ 16000 = [IF]
24563     MOV #1,&$3E0
24564 [THEN]
24565 $1800 @ 24000 = [IF]
24566     MOV #2,&$3E0
24567 [THEN]
24568     MOV #19,&$3D2
24569 MOV #%0110_0000,&$3C6
24570     MOV #10,&$3D6
24571     BIS.B #$20,&$204
24572     BIS.B #$20,&$20A
24573     BIS.B #7,&$245
24574     BIC.B #7,&$247
24575     BIS.B #$0F,&$224
24576     BIC.B #$0F,&$226
24577     BIS.B #4,&$20A
24578     BIC.B #4,&$20C
24579 MOV #%01_0001_0100,&$340
24580     MOV ##3276,&$352
24581     MOV #%10000,&$342
24582 COLON
24583     #1000 20_US
24584     %011 TOP_LCD
24585     #205 20_US
24586     %011 TOP_LCD
24587     #5 20_US
24588     %011 TOP_LCD
24589     #2 20_US
24590     %010 TOP_LCD
24591     #2 20_US
24592     %00101000 LCD_WRF
24593     %1000 LCD_WRF
24594     LCD_CLEAR
24595     %0110 LCD_WRF
24596     %1100 LCD_WRF
24597     LCD_CLEAR
24598     ['] LCD_HOME IS CR
24599     ['] LCD_WRC  IS EMIT
24600     CR ." I love you"
24601     ['] CR >BODY IS CR
24602     ['] EMIT >BODY IS EMIT
24603     ." RC5toLCD is running. Type STOP to quit"
24604     ABORT" "
24605 ;
24606
24607 CODE START
24608 CMP #$40AA,&{RC5TOLCD}+8
24609 0= IF
24610     MOV #STOP_R2L,&{RC5TOLCD}+8
24611     MOV &WARM+2,&{RC5TOLCD}+10
24612     MOV #INI_R2L,&WARM+2
24613     MOV &$FFEA,&{RC5TOLCD}+12
24614     MOV #WDT_INT,&$FFEA
24615     MOV &$FFDE,&{RC5TOLCD}+14
24616     MOV #RC5_INT,&$FFDE
24617     MOV #INI_R2L,R0
24618 THEN
24619 MOV @R13+,R0 
24620 ENDCODE 
24621
24622
24623 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
24624
24625 MARKER {RC5TOLCD}
24626 6 ALLOT
24627
24628
24629
24630 [UNDEFINED] CONSTANT [IF]
24631 : CONSTANT 
24632 CREATE
24633 HI2LO
24634 MOV R14,-2(R10)
24635 MOV @R15+,R14
24636 MOV @R1+,R13
24637 MOV @R13+,R0
24638 ENDCODE
24639 [THEN]
24640
24641 [UNDEFINED] STATE [IF]
24642 $1DBE CONSTANT STATE
24643 [THEN]
24644
24645 [UNDEFINED] = [IF]
24646 CODE =
24647 SUB @R15+,R14
24648 0<> IF
24649     AND #0,R14
24650     MOV @R13+,R0
24651 THEN
24652 XOR #-1,R14
24653 MOV @R13+,R0
24654 ENDCODE
24655 [THEN]
24656
24657 [UNDEFINED] IF [IF]
24658 CODE IF
24659 SUB #2,R15
24660 MOV R14,0(R15)
24661 MOV &$1DC6,R14
24662 ADD #4,&$1DC6
24663 MOV #$4034,0(R14)
24664 ADD #2,R14
24665 MOV @R13+,R0
24666 ENDCODE IMMEDIATE
24667
24668 CODE THEN
24669 MOV &$1DC6,0(R14)
24670 MOV @R15+,R14
24671 MOV @R13+,R0
24672 ENDCODE IMMEDIATE
24673 [THEN]
24674
24675 [UNDEFINED] ELSE [IF]
24676 CODE ELSE
24677 ADD #4,&$1DC6
24678 MOV &$1DC6,R10
24679 MOV #$403A,-4(R10)
24680 MOV R10,0(R14)
24681 SUB #2,R10
24682 MOV R10,R14
24683 MOV @R13+,R0
24684 ENDCODE IMMEDIATE
24685 [THEN]
24686
24687 [UNDEFINED] IS [IF]
24688
24689 CODE DEFER!
24690 MOV @R15+,2(R14)
24691 MOV @R15+,R14
24692 MOV @R13+,R0
24693 ENDCODE
24694
24695
24696 : IS
24697 STATE @
24698 IF  POSTPONE ['] POSTPONE DEFER! 
24699 ELSE ' DEFER! 
24700 THEN
24701 ; IMMEDIATE
24702 [THEN]
24703
24704 [UNDEFINED] >BODY [IF]
24705 CODE >BODY
24706 ADD #4,R14
24707 MOV @R13+,R0
24708 ENDCODE
24709 [THEN]
24710
24711
24712 CODE 20_US
24713 BEGIN
24714     BEGIN
24715         BIT #1,&$3C0
24716     0<> UNTIL
24717     BIC #1,&$3C0
24718     SUB #1,R14
24719 U< UNTIL
24720 MOV @R15+,R14
24721 MOV @R13+,R0
24722 ENDCODE
24723
24724 CODE TOP_LCD
24725     BIS.B #4,&$243
24726     BIT.B #1,&$241
24727 0= IF
24728     AND.B #$0F,R14
24729     MOV.B R14,&$222
24730     BIC.B #4,&$243
24731     MOV @R15+,R14
24732     MOV @R13+,R0
24733 THEN
24734     SUB #2,R15
24735     MOV R14,0(R15)
24736     BIC.B #4,&$243
24737     MOV.B &$220,R14
24738     AND.B #$0F,R14
24739     MOV @R13+,R0
24740 ENDCODE
24741
24742 CODE LCD_WRC
24743     BIS.B #2,&$243
24744 BW1 SUB #2,R15
24745     MOV R14,0(R15)
24746     RRUM #4,R14
24747     BIC.B #1,&$243
24748     BIS.B #$0F,&$224
24749 COLON
24750     TOP_LCD 2 20_US
24751     TOP_LCD 2 20_US 
24752 ;
24753
24754 CODE LCD_WRF
24755     BIC.B #2,&$243
24756     GOTO BW1
24757 ENDCODE
24758
24759 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
24760 : LCD_HOME $02 LCD_WRF 100 20_us ;
24761
24762
24763
24764 HDNCODE WDT_INT
24765 BIT.B #$20,&$240
24766 0= IF
24767     CMP #19,&$3D6
24768     U< IF
24769         ADD #1,&$3D6
24770     THEN
24771 ELSE
24772     BIT.B #$40,&$240
24773     0= IF
24774         CMP #3,&$3D6
24775         U>= IF
24776            SUB #1,&$3D6
24777         THEN
24778     THEN
24779 THEN
24780 RETI
24781 ENDCODE
24782
24783 HDNCODE RC5_INT
24784 $1800 @ 16000 = [IF]
24785     MOV #1,&$3A0
24786 [THEN]
24787 $1800 @ 24000 = [IF]
24788     MOV #2,&$3A0
24789 [THEN]
24790 MOV #1778,R9
24791 MOV #14,R10
24792 BEGIN
24793 MOV #%1011100100,&$380
24794     RRUM    #1,R9
24795     MOV     R9,R8
24796     RRUM    #1,R8
24797     ADD     R9,R8
24798     BEGIN   CMP R8,&$390
24799     U>= UNTIL
24800     BIT.B   #4,&$200
24801     ADDC    R11,R11
24802     MOV.B   &$200,&$208
24803     BIC.B   #4,&$20C
24804     SUB     #1,R10
24805 0<> WHILE
24806     ADD R9,R8
24807     BEGIN
24808         MOV &$390,R9
24809         CMP R8,R9
24810         U>= IF
24811         BIC #$30,&$380
24812         GOTO FW1
24813         THEN
24814         BIT.B #4,&$20C
24815     0<> UNTIL
24816 REPEAT
24817 BIC #$30,&$380
24818 RLAM    #1,R11
24819 MOV.B   R11,R9
24820 RRUM    #2,R9
24821 BIT     #$4000,R11
24822 0= IF   BIS #$40,R9
24823 THEN
24824 RRUM    #3,R11
24825 XOR     @R1,R11
24826 BIT     #$400,R11
24827 0= ?GOTO FW2
24828 XOR #$400,0(R1)
24829 SUB #8,R15
24830 MOV R14,6(R15)
24831 MOV &$1DDC,4(R15)
24832 MOV #$10,&$1DDC
24833 MOV R9,0(R15)
24834 MOV #0,R14
24835 LO2HI
24836     LCD_CLEAR
24837     <# # #S #36 HOLD #>
24838     ['] LCD_WRC IS EMIT
24839     TYPE
24840     ['] EMIT >BODY IS EMIT
24841 HI2LO
24842 MOV @R15+,&$1DDC
24843 MOV @R15+,R14
24844 FW1 FW2
24845     MOV @R1+,R2
24846     BIC #%1111_1000,R2
24847     MOV @R1+,R0
24848 ENDCODE
24849
24850
24851 HDNCODE STOP_R2L
24852 CMP #$40AA,&{RC5TOLCD}+8
24853 0<> IF
24854     BIC.B #4,&$20A
24855     BIC.B #4,&$20C
24856     MOV #0,&$3C0
24857     MOV #0,&$340
24858     MOV #0,&$342
24859     MOV #$40AA,&{RC5TOLCD}+8
24860     MOV &{RC5TOLCD}+10,&WARM+2
24861     MOV &{RC5TOLCD}+12,&$FFEA
24862     MOV &{RC5TOLCD}+14,&$FFDE
24863     MOV &{RC5TOLCD}+10,R0
24864 THEN 
24865 MOV @R1+,R0
24866 ENDCODE
24867
24868 CODE STOP
24869 BW1
24870 CALL #STOP_R2L
24871 COLON
24872 ECHO
24873 ." RC5toLCD is removed,"
24874 ."  type START to restart"
24875 ABORT" "
24876 ;
24877
24878 HDNCODE INI_R2L
24879 BIC #1,&$130
24880 MOV &$1808,R14
24881 CMP #$0E,R14
24882 0<> IF
24883     CMP #$0A,R14
24884     U>= ?GOTO BW1
24885 THEN
24886 BIT.B #$20,&$240
24887 0= ?GOTO BW1
24888 MOV #0,&$1808
24889 MOV #%10_1101_0100,&$3C0
24890 $1800 @ 16000 = [IF]
24891     MOV #1,&$3E0
24892 [THEN]
24893 $1800 @ 24000 = [IF]
24894     MOV #2,&$3E0
24895 [THEN]
24896     MOV #19,&$3D2
24897 MOV #%0110_0000,&$3C6
24898     MOV #10,&$3D6
24899     BIS.B #$20,&$204
24900     BIS.B #$20,&$20A
24901     BIS.B #7,&$245
24902     BIC.B #7,&$247
24903     BIS.B #$0F,&$224
24904     BIC.B #$0F,&$226
24905     BIS.B #4,&$20A
24906     BIC.B #4,&$20C
24907 MOV #%01_0001_0100,&$340
24908     MOV ##3276,&$352
24909     MOV #%10000,&$342
24910 COLON
24911     #1000 20_US
24912     %011 TOP_LCD
24913     #205 20_US
24914     %011 TOP_LCD
24915     #5 20_US
24916     %011 TOP_LCD
24917     #2 20_US
24918     %010 TOP_LCD
24919     #2 20_US
24920     %00101000 LCD_WRF
24921     %1000 LCD_WRF
24922     LCD_CLEAR
24923     %0110 LCD_WRF
24924     %1100 LCD_WRF
24925     LCD_CLEAR
24926     ['] LCD_HOME IS CR
24927     ['] LCD_WRC  IS EMIT
24928     CR ." I love you"
24929     ['] CR >BODY IS CR
24930     ['] EMIT >BODY IS EMIT
24931     ." RC5toLCD is running. Type STOP to quit"
24932     ABORT" "
24933 ;
24934
24935 CODE START
24936 CMP #$40AA,&{RC5TOLCD}+8
24937 0= IF
24938     MOV #STOP_R2L,&{RC5TOLCD}+8
24939     MOV &WARM+2,&{RC5TOLCD}+10
24940     MOV #INI_R2L,&WARM+2
24941     MOV &$FFEA,&{RC5TOLCD}+12
24942     MOV #WDT_INT,&$FFEA
24943     MOV &$FFDE,&{RC5TOLCD}+14
24944     MOV #RC5_INT,&$FFDE
24945     MOV #INI_R2L,R0
24946 THEN
24947 MOV @R13+,R0 
24948 ENDCODE 
24949
24950
24951
24952 ECHO
24953             ; downloading PROG100k.4th is done
24954 RST_HERE    ; this app is protected against <reset>
24955