OSDN Git Service

fixed ASSEMBLER crash
[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 PWR_STATE
10
11 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
12
13 MARKER {RC5TOLCD}
14
15 [UNDEFINED] @ [IF]
16 CODE @
17 MOV @R14,R14
18 MOV @R13+,R0
19 ENDCODE
20 [THEN]
21
22 [UNDEFINED] CONSTANT [IF]
23 : CONSTANT 
24 CREATE
25 HI2LO
26 MOV R14,-2(R10)
27 MOV @R15+,R14
28 MOV @R1+,R13
29 MOV @R13+,R0
30 ENDCODE
31 [THEN]
32
33 [UNDEFINED] STATE [IF]
34 $1DBE CONSTANT STATE
35 [THEN]
36
37 [UNDEFINED] = [IF]
38 CODE =
39 SUB @R15+,R14
40 0<> IF
41     AND #0,R14
42     MOV @R13+,R0
43 THEN
44 XOR #-1,R14
45 MOV @R13+,R0
46 ENDCODE
47 [THEN]
48
49 [UNDEFINED] IF [IF]
50 CODE IF
51 SUB #2,R15
52 MOV R14,0(R15)
53 MOV &$1DC6,R14
54 ADD #4,&$1DC6
55 MOV #$4042,0(R14)
56 ADD #2,R14
57 MOV @R13+,R0
58 ENDCODE IMMEDIATE
59
60 CODE THEN
61 MOV &$1DC6,0(R14)
62 MOV @R15+,R14
63 MOV @R13+,R0
64 ENDCODE IMMEDIATE
65 [THEN]
66
67 [UNDEFINED] ELSE [IF]
68 CODE ELSE
69 ADD #4,&$1DC6
70 MOV &$1DC6,R10
71 MOV #$403E,-4(R10)
72 MOV R10,0(R14)
73 SUB #2,R10
74 MOV R10,R14
75 MOV @R13+,R0
76 ENDCODE IMMEDIATE
77 [THEN]
78
79 [UNDEFINED] IS [IF]
80
81 CODE DEFER!
82 MOV @R15+,2(R14)
83 MOV @R15+,R14
84 MOV @R13+,R0
85 ENDCODE
86
87
88 : IS
89 STATE @
90 IF  POSTPONE ['] POSTPONE DEFER! 
91 ELSE ' DEFER! 
92 THEN
93 ; IMMEDIATE
94 [THEN]
95
96 [UNDEFINED] >BODY [IF]
97 CODE >BODY
98 ADD #4,R14
99 MOV @R13+,R0
100 ENDCODE
101 [THEN]
102
103
104 CODE 20_US
105 BEGIN
106     BEGIN
107         BIT #1,&$3C0
108     0<> UNTIL
109     BIC #1,&$3C0
110     SUB #1,R14
111 U< UNTIL
112 MOV @R15+,R14
113 MOV @R13+,R0
114 ENDCODE
115
116 CODE TOP_LCD
117     BIS.B #4,&$243
118     BIT.B #1,&$241
119 0= IF
120     AND.B #$0F,R14
121     MOV.B R14,&$222
122     BIC.B #4,&$243
123     MOV @R15+,R14
124     MOV @R13+,R0
125 THEN
126     SUB #2,R15
127     MOV R14,0(R15)
128     BIC.B #4,&$243
129     MOV.B &$220,R14
130     AND.B #$0F,R14
131     MOV @R13+,R0
132 ENDCODE
133
134 CODE LCD_WRC
135     BIS.B #2,&$243
136 BW1 SUB #2,R15
137     MOV R14,0(R15)
138     RRUM #4,R14
139     BIC.B #1,&$243
140     BIS.B #$0F,&$224
141 COLON
142     TOP_LCD 2 20_US
143     TOP_LCD 2 20_US 
144 ;
145
146 CODE LCD_WRF
147     BIC.B #2,&$243
148     GOTO BW1
149 ENDCODE
150
151 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
152 : LCD_HOME $02 LCD_WRF 100 20_us ;
153
154
155
156 ASM WDT_INT
157 ADD #2,R1
158 BIT.B #$20,&$240
159 0= IF
160     CMP #19,&$3D6
161     U< IF
162         ADD #1,&$3D6
163     THEN
164 ELSE
165     BIT.B #$40,&$240
166     0= IF
167         CMP #3,&$3D6
168         U>= IF
169            SUB #1,&$3D6
170         THEN
171     THEN
172 THEN
173 BW1
174 MOV @R1+,R0
175 ENDASM
176
177 ASM RC5_INT
178 ADD #2,R1
179 $1806 @ 16000 = [IF]
180     MOV #1,&$3A0
181 [THEN]
182 $1806 @ 24000 = [IF]
183     MOV #2,&$3A0
184 [THEN]
185 MOV #1778,R9
186 MOV #14,R10
187 BEGIN
188 MOV #%1011100100,&$380
189     RRUM    #1,R9
190     MOV     R9,R8
191     RRUM    #1,R8
192     ADD     R9,R8
193     BEGIN   CMP R8,&$390
194     U>= UNTIL
195     BIT.B   #4,&$200
196     ADDC    R11,R11
197     MOV.B   &$200,&$208
198     BIC.B   #4,&$20C
199     SUB     #1,R10
200 0<> WHILE
201     ADD R9,R8
202     BEGIN
203         MOV &$390,R9
204         CMP R8,R9
205         U>= IF
206         BIC #$30,&$380
207         GOTO BW1
208         THEN
209         BIT.B #4,&$20C
210     0<> UNTIL
211 REPEAT
212 BIC #$30,&$380
213 RLAM    #1,R11
214 MOV.B   R11,R9
215 RRUM    #2,R9
216 BIT     #$4000,R11
217 0= IF   BIS #$40,R9
218 THEN
219 RRUM    #3,R11
220 XOR     @R1,R11
221 BIT     #$400,R11
222 0= ?GOTO BW1
223 XOR #$400,0(R1)
224 SUB #8,R15
225 MOV R14,6(R15)
226 MOV &$1DDC,4(R15)
227 MOV #$10,&$1DDC
228 MOV R9,0(R15)
229 MOV #0,R14
230 LO2HI
231     LCD_CLEAR
232     <# # #S #36 HOLD #>
233     ['] LCD_WRC IS EMIT
234     TYPE
235     ['] EMIT >BODY IS EMIT
236 HI2LO
237 MOV @R15+,&$1DDC
238 MOV @R15+,R14
239 MOV @R1+,R0
240 ENDASM
241
242 ASM BACKGROUND
243 BEGIN
244     CALL &$1814
245     BIS &$180A,R2
246 AGAIN
247 ENDASM
248
249 ASM SYS_OUT
250     MOV #WARM,R9
251     ADD #4,R9
252     MOV R9,R0
253 ENDASM
254
255 CODE STOP
256 BW1 MOV #$4000,R9
257     ADD #4,R9
258     MOV R9,-2(R9)
259     MOV #WARM,R9
260     MOV #SYS_OUT,2(R9)
261     BIC.B #4,&$20A
262     BIC.B #4,&$20C
263     MOV #0,&$3C0
264     MOV #0,&$340
265     MOV #0,&$342
266     MOV #COLD,R9
267     MOV R9,&$FFDE
268     MOV R9,&$FFEA
269 COLON
270 ECHO
271 ." RC5toLCD is removed,"
272 ."  type START to restart"
273  WARM
274 ;
275
276 CODE SYS_INIT
277 MOV #%10_1101_0100,&$3C0
278 $1806 @ 16000 = [IF]
279     MOV #1,&$3E0
280 [THEN]
281 $1806 @ 24000 = [IF]
282     MOV #2,&$3E0
283 [THEN]
284     MOV #19,&$3D2
285 MOV #%0110_0000,&$3C6
286     MOV #10,&$3D6
287     BIS.B #$20,&$204
288     BIS.B #$20,&$20A
289     BIS.B #7,&$245
290     BIC.B #7,&$247
291     BIS.B #$0F,&$224
292     BIC.B #$0F,&$226
293     BIS.B #4,&$20A
294     BIC.B #4,&$20C
295     MOV #RC5_INT,&$FFDE
296 MOV #%01_0001_0100,&$340
297     MOV ##3276,&$352
298     MOV #%10000,&$342
299     MOV #WDT_INT,&$FFEA
300 BIC #1,&$130
301 BIS.B #3,&$20D
302 MOV &$1808,R8
303 CMP #4,R8
304 0= ?GOTO BW1
305 COLON
306     #1000 20_US
307     %011 TOP_LCD
308     #205 20_US
309     %011 TOP_LCD
310     #5 20_US
311     %011 TOP_LCD
312     #2 20_US
313     %010 TOP_LCD
314     #2 20_US
315     %00101000 LCD_WRF
316     %1000 LCD_WRF
317     LCD_CLEAR
318     %0110 LCD_WRF
319     %1100 LCD_WRF
320     LCD_CLEAR
321     ['] LCD_HOME IS CR
322     ['] LCD_WRC  IS EMIT
323     CR ." I love you"
324     ['] CR >BODY IS CR
325     ['] EMIT >BODY IS EMIT
326     ." RC5toLCD is running. Type STOP to quit"
327     PWR_STATE ABORT
328 ;
329
330 CODE START
331 MOV #$4000,R9
332 MOV #BACKGROUND,2(R9)
333 MOV #WARM,R9
334 MOV #SYS_INIT,2(R9)
335 MOV R9,R0
336 ENDCODE 
337 PWR_STATE
338
339 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
340
341 MARKER {RC5TOLCD}
342
343 [UNDEFINED] @ [IF]
344 CODE @
345 MOV @R14,R14
346 MOV @R13+,R0
347 ENDCODE
348 [THEN]
349
350 [UNDEFINED] CONSTANT [IF]
351 : CONSTANT 
352 CREATE
353 HI2LO
354 MOV R14,-2(R10)
355 MOV @R15+,R14
356 MOV @R1+,R13
357 MOV @R13+,R0
358 ENDCODE
359 [THEN]
360
361 [UNDEFINED] STATE [IF]
362 $1DBE CONSTANT STATE
363 [THEN]
364
365 [UNDEFINED] = [IF]
366 CODE =
367 SUB @R15+,R14
368 0<> IF
369     AND #0,R14
370     MOV @R13+,R0
371 THEN
372 XOR #-1,R14
373 MOV @R13+,R0
374 ENDCODE
375 [THEN]
376
377 [UNDEFINED] IF [IF]
378 CODE IF
379 SUB #2,R15
380 MOV R14,0(R15)
381 MOV &$1DC6,R14
382 ADD #4,&$1DC6
383 MOV #$4042,0(R14)
384 ADD #2,R14
385 MOV @R13+,R0
386 ENDCODE IMMEDIATE
387
388 CODE THEN
389 MOV &$1DC6,0(R14)
390 MOV @R15+,R14
391 MOV @R13+,R0
392 ENDCODE IMMEDIATE
393 [THEN]
394
395 [UNDEFINED] ELSE [IF]
396 CODE ELSE
397 ADD #4,&$1DC6
398 MOV &$1DC6,R10
399 MOV #$403E,-4(R10)
400 MOV R10,0(R14)
401 SUB #2,R10
402 MOV R10,R14
403 MOV @R13+,R0
404 ENDCODE IMMEDIATE
405 [THEN]
406
407 [UNDEFINED] IS [IF]
408
409 CODE DEFER!
410 MOV @R15+,2(R14)
411 MOV @R15+,R14
412 MOV @R13+,R0
413 ENDCODE
414
415
416 : IS
417 STATE @
418 IF  POSTPONE ['] POSTPONE DEFER! 
419 ELSE ' DEFER! 
420 THEN
421 ; IMMEDIATE
422 [THEN]
423
424 [UNDEFINED] >BODY [IF]
425 CODE >BODY
426 ADD #4,R14
427 MOV @R13+,R0
428 ENDCODE
429 [THEN]
430
431
432 CODE 20_US
433 BEGIN
434     BEGIN
435         BIT #1,&$3C0
436     0<> UNTIL
437     BIC #1,&$3C0
438     SUB #1,R14
439 U< UNTIL
440 MOV @R15+,R14
441 MOV @R13+,R0
442 ENDCODE
443
444 CODE TOP_LCD
445     BIS.B #4,&$243
446     BIT.B #1,&$241
447 0= IF
448     AND.B #$0F,R14
449     MOV.B R14,&$222
450     BIC.B #4,&$243
451     MOV @R15+,R14
452     MOV @R13+,R0
453 THEN
454     SUB #2,R15
455     MOV R14,0(R15)
456     BIC.B #4,&$243
457     MOV.B &$220,R14
458     AND.B #$0F,R14
459     MOV @R13+,R0
460 ENDCODE
461
462 CODE LCD_WRC
463     BIS.B #2,&$243
464 BW1 SUB #2,R15
465     MOV R14,0(R15)
466     RRUM #4,R14
467     BIC.B #1,&$243
468     BIS.B #$0F,&$224
469 COLON
470     TOP_LCD 2 20_US
471     TOP_LCD 2 20_US 
472 ;
473
474 CODE LCD_WRF
475     BIC.B #2,&$243
476     GOTO BW1
477 ENDCODE
478
479 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
480 : LCD_HOME $02 LCD_WRF 100 20_us ;
481
482
483
484 ASM WDT_INT
485 ADD #2,R1
486 BIT.B #$20,&$240
487 0= IF
488     CMP #19,&$3D6
489     U< IF
490         ADD #1,&$3D6
491     THEN
492 ELSE
493     BIT.B #$40,&$240
494     0= IF
495         CMP #3,&$3D6
496         U>= IF
497            SUB #1,&$3D6
498         THEN
499     THEN
500 THEN
501 BW1
502 MOV @R1+,R0
503 ENDASM
504
505 ASM RC5_INT
506 ADD #2,R1
507 $1806 @ 16000 = [IF]
508     MOV #1,&$3A0
509 [THEN]
510 $1806 @ 24000 = [IF]
511     MOV #2,&$3A0
512 [THEN]
513 MOV #1778,R9
514 MOV #14,R10
515 BEGIN
516 MOV #%1011100100,&$380
517     RRUM    #1,R9
518     MOV     R9,R8
519     RRUM    #1,R8
520     ADD     R9,R8
521     BEGIN   CMP R8,&$390
522     U>= UNTIL
523     BIT.B   #4,&$200
524     ADDC    R11,R11
525     MOV.B   &$200,&$208
526     BIC.B   #4,&$20C
527     SUB     #1,R10
528 0<> WHILE
529     ADD R9,R8
530     BEGIN
531         MOV &$390,R9
532         CMP R8,R9
533         U>= IF
534         BIC #$30,&$380
535         GOTO BW1
536         THEN
537         BIT.B #4,&$20C
538     0<> UNTIL
539 REPEAT
540 BIC #$30,&$380
541 RLAM    #1,R11
542 MOV.B   R11,R9
543 RRUM    #2,R9
544 BIT     #$4000,R11
545 0= IF   BIS #$40,R9
546 THEN
547 RRUM    #3,R11
548 XOR     @R1,R11
549 BIT     #$400,R11
550 0= ?GOTO BW1
551 XOR #$400,0(R1)
552 SUB #8,R15
553 MOV R14,6(R15)
554 MOV &$1DDC,4(R15)
555 MOV #$10,&$1DDC
556 MOV R9,0(R15)
557 MOV #0,R14
558 LO2HI
559     LCD_CLEAR
560     <# # #S #36 HOLD #>
561     ['] LCD_WRC IS EMIT
562     TYPE
563     ['] EMIT >BODY IS EMIT
564 HI2LO
565 MOV @R15+,&$1DDC
566 MOV @R15+,R14
567 MOV @R1+,R0
568 ENDASM
569
570 ASM BACKGROUND
571 BEGIN
572     CALL &$1814
573     BIS &$180A,R2
574 AGAIN
575 ENDASM
576
577 ASM SYS_OUT
578     MOV #WARM,R9
579     ADD #4,R9
580     MOV R9,R0
581 ENDASM
582
583 CODE STOP
584 BW1 MOV #$4000,R9
585     ADD #4,R9
586     MOV R9,-2(R9)
587     MOV #WARM,R9
588     MOV #SYS_OUT,2(R9)
589     BIC.B #4,&$20A
590     BIC.B #4,&$20C
591     MOV #0,&$3C0
592     MOV #0,&$340
593     MOV #0,&$342
594     MOV #COLD,R9
595     MOV R9,&$FFDE
596     MOV R9,&$FFEA
597 COLON
598 ECHO
599 ." RC5toLCD is removed,"
600 ."  type START to restart"
601  WARM
602 ;
603
604 CODE SYS_INIT
605 MOV #%10_1101_0100,&$3C0
606 $1806 @ 16000 = [IF]
607     MOV #1,&$3E0
608 [THEN]
609 $1806 @ 24000 = [IF]
610     MOV #2,&$3E0
611 [THEN]
612     MOV #19,&$3D2
613 MOV #%0110_0000,&$3C6
614     MOV #10,&$3D6
615     BIS.B #$20,&$204
616     BIS.B #$20,&$20A
617     BIS.B #7,&$245
618     BIC.B #7,&$247
619     BIS.B #$0F,&$224
620     BIC.B #$0F,&$226
621     BIS.B #4,&$20A
622     BIC.B #4,&$20C
623     MOV #RC5_INT,&$FFDE
624 MOV #%01_0001_0100,&$340
625     MOV ##3276,&$352
626     MOV #%10000,&$342
627     MOV #WDT_INT,&$FFEA
628 BIC #1,&$130
629 BIS.B #3,&$20D
630 MOV &$1808,R8
631 CMP #4,R8
632 0= ?GOTO BW1
633 COLON
634     #1000 20_US
635     %011 TOP_LCD
636     #205 20_US
637     %011 TOP_LCD
638     #5 20_US
639     %011 TOP_LCD
640     #2 20_US
641     %010 TOP_LCD
642     #2 20_US
643     %00101000 LCD_WRF
644     %1000 LCD_WRF
645     LCD_CLEAR
646     %0110 LCD_WRF
647     %1100 LCD_WRF
648     LCD_CLEAR
649     ['] LCD_HOME IS CR
650     ['] LCD_WRC  IS EMIT
651     CR ." I love you"
652     ['] CR >BODY IS CR
653     ['] EMIT >BODY IS EMIT
654     ." RC5toLCD is running. Type STOP to quit"
655     PWR_STATE ABORT
656 ;
657
658 CODE START
659 MOV #$4000,R9
660 MOV #BACKGROUND,2(R9)
661 MOV #WARM,R9
662 MOV #SYS_INIT,2(R9)
663 MOV R9,R0
664 ENDCODE 
665 PWR_STATE
666
667 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
668
669 MARKER {RC5TOLCD}
670
671 [UNDEFINED] @ [IF]
672 CODE @
673 MOV @R14,R14
674 MOV @R13+,R0
675 ENDCODE
676 [THEN]
677
678 [UNDEFINED] CONSTANT [IF]
679 : CONSTANT 
680 CREATE
681 HI2LO
682 MOV R14,-2(R10)
683 MOV @R15+,R14
684 MOV @R1+,R13
685 MOV @R13+,R0
686 ENDCODE
687 [THEN]
688
689 [UNDEFINED] STATE [IF]
690 $1DBE CONSTANT STATE
691 [THEN]
692
693 [UNDEFINED] = [IF]
694 CODE =
695 SUB @R15+,R14
696 0<> IF
697     AND #0,R14
698     MOV @R13+,R0
699 THEN
700 XOR #-1,R14
701 MOV @R13+,R0
702 ENDCODE
703 [THEN]
704
705 [UNDEFINED] IF [IF]
706 CODE IF
707 SUB #2,R15
708 MOV R14,0(R15)
709 MOV &$1DC6,R14
710 ADD #4,&$1DC6
711 MOV #$4042,0(R14)
712 ADD #2,R14
713 MOV @R13+,R0
714 ENDCODE IMMEDIATE
715
716 CODE THEN
717 MOV &$1DC6,0(R14)
718 MOV @R15+,R14
719 MOV @R13+,R0
720 ENDCODE IMMEDIATE
721 [THEN]
722
723 [UNDEFINED] ELSE [IF]
724 CODE ELSE
725 ADD #4,&$1DC6
726 MOV &$1DC6,R10
727 MOV #$403E,-4(R10)
728 MOV R10,0(R14)
729 SUB #2,R10
730 MOV R10,R14
731 MOV @R13+,R0
732 ENDCODE IMMEDIATE
733 [THEN]
734
735 [UNDEFINED] IS [IF]
736
737 CODE DEFER!
738 MOV @R15+,2(R14)
739 MOV @R15+,R14
740 MOV @R13+,R0
741 ENDCODE
742
743
744 : IS
745 STATE @
746 IF  POSTPONE ['] POSTPONE DEFER! 
747 ELSE ' DEFER! 
748 THEN
749 ; IMMEDIATE
750 [THEN]
751
752 [UNDEFINED] >BODY [IF]
753 CODE >BODY
754 ADD #4,R14
755 MOV @R13+,R0
756 ENDCODE
757 [THEN]
758
759
760 CODE 20_US
761 BEGIN
762     BEGIN
763         BIT #1,&$3C0
764     0<> UNTIL
765     BIC #1,&$3C0
766     SUB #1,R14
767 U< UNTIL
768 MOV @R15+,R14
769 MOV @R13+,R0
770 ENDCODE
771
772 CODE TOP_LCD
773     BIS.B #4,&$243
774     BIT.B #1,&$241
775 0= IF
776     AND.B #$0F,R14
777     MOV.B R14,&$222
778     BIC.B #4,&$243
779     MOV @R15+,R14
780     MOV @R13+,R0
781 THEN
782     SUB #2,R15
783     MOV R14,0(R15)
784     BIC.B #4,&$243
785     MOV.B &$220,R14
786     AND.B #$0F,R14
787     MOV @R13+,R0
788 ENDCODE
789
790 CODE LCD_WRC
791     BIS.B #2,&$243
792 BW1 SUB #2,R15
793     MOV R14,0(R15)
794     RRUM #4,R14
795     BIC.B #1,&$243
796     BIS.B #$0F,&$224
797 COLON
798     TOP_LCD 2 20_US
799     TOP_LCD 2 20_US 
800 ;
801
802 CODE LCD_WRF
803     BIC.B #2,&$243
804     GOTO BW1
805 ENDCODE
806
807 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
808 : LCD_HOME $02 LCD_WRF 100 20_us ;
809
810
811
812 ASM WDT_INT
813 ADD #2,R1
814 BIT.B #$20,&$240
815 0= IF
816     CMP #19,&$3D6
817     U< IF
818         ADD #1,&$3D6
819     THEN
820 ELSE
821     BIT.B #$40,&$240
822     0= IF
823         CMP #3,&$3D6
824         U>= IF
825            SUB #1,&$3D6
826         THEN
827     THEN
828 THEN
829 BW1
830 MOV @R1+,R0
831 ENDASM
832
833 ASM RC5_INT
834 ADD #2,R1
835 $1806 @ 16000 = [IF]
836     MOV #1,&$3A0
837 [THEN]
838 $1806 @ 24000 = [IF]
839     MOV #2,&$3A0
840 [THEN]
841 MOV #1778,R9
842 MOV #14,R10
843 BEGIN
844 MOV #%1011100100,&$380
845     RRUM    #1,R9
846     MOV     R9,R8
847     RRUM    #1,R8
848     ADD     R9,R8
849     BEGIN   CMP R8,&$390
850     U>= UNTIL
851     BIT.B   #4,&$200
852     ADDC    R11,R11
853     MOV.B   &$200,&$208
854     BIC.B   #4,&$20C
855     SUB     #1,R10
856 0<> WHILE
857     ADD R9,R8
858     BEGIN
859         MOV &$390,R9
860         CMP R8,R9
861         U>= IF
862         BIC #$30,&$380
863         GOTO BW1
864         THEN
865         BIT.B #4,&$20C
866     0<> UNTIL
867 REPEAT
868 BIC #$30,&$380
869 RLAM    #1,R11
870 MOV.B   R11,R9
871 RRUM    #2,R9
872 BIT     #$4000,R11
873 0= IF   BIS #$40,R9
874 THEN
875 RRUM    #3,R11
876 XOR     @R1,R11
877 BIT     #$400,R11
878 0= ?GOTO BW1
879 XOR #$400,0(R1)
880 SUB #8,R15
881 MOV R14,6(R15)
882 MOV &$1DDC,4(R15)
883 MOV #$10,&$1DDC
884 MOV R9,0(R15)
885 MOV #0,R14
886 LO2HI
887     LCD_CLEAR
888     <# # #S #36 HOLD #>
889     ['] LCD_WRC IS EMIT
890     TYPE
891     ['] EMIT >BODY IS EMIT
892 HI2LO
893 MOV @R15+,&$1DDC
894 MOV @R15+,R14
895 MOV @R1+,R0
896 ENDASM
897
898 ASM BACKGROUND
899 BEGIN
900     CALL &$1814
901     BIS &$180A,R2
902 AGAIN
903 ENDASM
904
905 ASM SYS_OUT
906     MOV #WARM,R9
907     ADD #4,R9
908     MOV R9,R0
909 ENDASM
910
911 CODE STOP
912 BW1 MOV #$4000,R9
913     ADD #4,R9
914     MOV R9,-2(R9)
915     MOV #WARM,R9
916     MOV #SYS_OUT,2(R9)
917     BIC.B #4,&$20A
918     BIC.B #4,&$20C
919     MOV #0,&$3C0
920     MOV #0,&$340
921     MOV #0,&$342
922     MOV #COLD,R9
923     MOV R9,&$FFDE
924     MOV R9,&$FFEA
925 COLON
926 ECHO
927 ." RC5toLCD is removed,"
928 ."  type START to restart"
929  WARM
930 ;
931
932 CODE SYS_INIT
933 MOV #%10_1101_0100,&$3C0
934 $1806 @ 16000 = [IF]
935     MOV #1,&$3E0
936 [THEN]
937 $1806 @ 24000 = [IF]
938     MOV #2,&$3E0
939 [THEN]
940     MOV #19,&$3D2
941 MOV #%0110_0000,&$3C6
942     MOV #10,&$3D6
943     BIS.B #$20,&$204
944     BIS.B #$20,&$20A
945     BIS.B #7,&$245
946     BIC.B #7,&$247
947     BIS.B #$0F,&$224
948     BIC.B #$0F,&$226
949     BIS.B #4,&$20A
950     BIC.B #4,&$20C
951     MOV #RC5_INT,&$FFDE
952 MOV #%01_0001_0100,&$340
953     MOV ##3276,&$352
954     MOV #%10000,&$342
955     MOV #WDT_INT,&$FFEA
956 BIC #1,&$130
957 BIS.B #3,&$20D
958 MOV &$1808,R8
959 CMP #4,R8
960 0= ?GOTO BW1
961 COLON
962     #1000 20_US
963     %011 TOP_LCD
964     #205 20_US
965     %011 TOP_LCD
966     #5 20_US
967     %011 TOP_LCD
968     #2 20_US
969     %010 TOP_LCD
970     #2 20_US
971     %00101000 LCD_WRF
972     %1000 LCD_WRF
973     LCD_CLEAR
974     %0110 LCD_WRF
975     %1100 LCD_WRF
976     LCD_CLEAR
977     ['] LCD_HOME IS CR
978     ['] LCD_WRC  IS EMIT
979     CR ." I love you"
980     ['] CR >BODY IS CR
981     ['] EMIT >BODY IS EMIT
982     ." RC5toLCD is running. Type STOP to quit"
983     PWR_STATE ABORT
984 ;
985
986 CODE START
987 MOV #$4000,R9
988 MOV #BACKGROUND,2(R9)
989 MOV #WARM,R9
990 MOV #SYS_INIT,2(R9)
991 MOV R9,R0
992 ENDCODE 
993 PWR_STATE
994
995 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
996
997 MARKER {RC5TOLCD}
998
999 [UNDEFINED] @ [IF]
1000 CODE @
1001 MOV @R14,R14
1002 MOV @R13+,R0
1003 ENDCODE
1004 [THEN]
1005
1006 [UNDEFINED] CONSTANT [IF]
1007 : CONSTANT 
1008 CREATE
1009 HI2LO
1010 MOV R14,-2(R10)
1011 MOV @R15+,R14
1012 MOV @R1+,R13
1013 MOV @R13+,R0
1014 ENDCODE
1015 [THEN]
1016
1017 [UNDEFINED] STATE [IF]
1018 $1DBE CONSTANT STATE
1019 [THEN]
1020
1021 [UNDEFINED] = [IF]
1022 CODE =
1023 SUB @R15+,R14
1024 0<> IF
1025     AND #0,R14
1026     MOV @R13+,R0
1027 THEN
1028 XOR #-1,R14
1029 MOV @R13+,R0
1030 ENDCODE
1031 [THEN]
1032
1033 [UNDEFINED] IF [IF]
1034 CODE IF
1035 SUB #2,R15
1036 MOV R14,0(R15)
1037 MOV &$1DC6,R14
1038 ADD #4,&$1DC6
1039 MOV #$4042,0(R14)
1040 ADD #2,R14
1041 MOV @R13+,R0
1042 ENDCODE IMMEDIATE
1043
1044 CODE THEN
1045 MOV &$1DC6,0(R14)
1046 MOV @R15+,R14
1047 MOV @R13+,R0
1048 ENDCODE IMMEDIATE
1049 [THEN]
1050
1051 [UNDEFINED] ELSE [IF]
1052 CODE ELSE
1053 ADD #4,&$1DC6
1054 MOV &$1DC6,R10
1055 MOV #$403E,-4(R10)
1056 MOV R10,0(R14)
1057 SUB #2,R10
1058 MOV R10,R14
1059 MOV @R13+,R0
1060 ENDCODE IMMEDIATE
1061 [THEN]
1062
1063 [UNDEFINED] IS [IF]
1064
1065 CODE DEFER!
1066 MOV @R15+,2(R14)
1067 MOV @R15+,R14
1068 MOV @R13+,R0
1069 ENDCODE
1070
1071
1072 : IS
1073 STATE @
1074 IF  POSTPONE ['] POSTPONE DEFER! 
1075 ELSE ' DEFER! 
1076 THEN
1077 ; IMMEDIATE
1078 [THEN]
1079
1080 [UNDEFINED] >BODY [IF]
1081 CODE >BODY
1082 ADD #4,R14
1083 MOV @R13+,R0
1084 ENDCODE
1085 [THEN]
1086
1087
1088 CODE 20_US
1089 BEGIN
1090     BEGIN
1091         BIT #1,&$3C0
1092     0<> UNTIL
1093     BIC #1,&$3C0
1094     SUB #1,R14
1095 U< UNTIL
1096 MOV @R15+,R14
1097 MOV @R13+,R0
1098 ENDCODE
1099
1100 CODE TOP_LCD
1101     BIS.B #4,&$243
1102     BIT.B #1,&$241
1103 0= IF
1104     AND.B #$0F,R14
1105     MOV.B R14,&$222
1106     BIC.B #4,&$243
1107     MOV @R15+,R14
1108     MOV @R13+,R0
1109 THEN
1110     SUB #2,R15
1111     MOV R14,0(R15)
1112     BIC.B #4,&$243
1113     MOV.B &$220,R14
1114     AND.B #$0F,R14
1115     MOV @R13+,R0
1116 ENDCODE
1117
1118 CODE LCD_WRC
1119     BIS.B #2,&$243
1120 BW1 SUB #2,R15
1121     MOV R14,0(R15)
1122     RRUM #4,R14
1123     BIC.B #1,&$243
1124     BIS.B #$0F,&$224
1125 COLON
1126     TOP_LCD 2 20_US
1127     TOP_LCD 2 20_US 
1128 ;
1129
1130 CODE LCD_WRF
1131     BIC.B #2,&$243
1132     GOTO BW1
1133 ENDCODE
1134
1135 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
1136 : LCD_HOME $02 LCD_WRF 100 20_us ;
1137
1138
1139
1140 ASM WDT_INT
1141 ADD #2,R1
1142 BIT.B #$20,&$240
1143 0= IF
1144     CMP #19,&$3D6
1145     U< IF
1146         ADD #1,&$3D6
1147     THEN
1148 ELSE
1149     BIT.B #$40,&$240
1150     0= IF
1151         CMP #3,&$3D6
1152         U>= IF
1153            SUB #1,&$3D6
1154         THEN
1155     THEN
1156 THEN
1157 BW1
1158 MOV @R1+,R0
1159 ENDASM
1160
1161 ASM RC5_INT
1162 ADD #2,R1
1163 $1806 @ 16000 = [IF]
1164     MOV #1,&$3A0
1165 [THEN]
1166 $1806 @ 24000 = [IF]
1167     MOV #2,&$3A0
1168 [THEN]
1169 MOV #1778,R9
1170 MOV #14,R10
1171 BEGIN
1172 MOV #%1011100100,&$380
1173     RRUM    #1,R9
1174     MOV     R9,R8
1175     RRUM    #1,R8
1176     ADD     R9,R8
1177     BEGIN   CMP R8,&$390
1178     U>= UNTIL
1179     BIT.B   #4,&$200
1180     ADDC    R11,R11
1181     MOV.B   &$200,&$208
1182     BIC.B   #4,&$20C
1183     SUB     #1,R10
1184 0<> WHILE
1185     ADD R9,R8
1186     BEGIN
1187         MOV &$390,R9
1188         CMP R8,R9
1189         U>= IF
1190         BIC #$30,&$380
1191         GOTO BW1
1192         THEN
1193         BIT.B #4,&$20C
1194     0<> UNTIL
1195 REPEAT
1196 BIC #$30,&$380
1197 RLAM    #1,R11
1198 MOV.B   R11,R9
1199 RRUM    #2,R9
1200 BIT     #$4000,R11
1201 0= IF   BIS #$40,R9
1202 THEN
1203 RRUM    #3,R11
1204 XOR     @R1,R11
1205 BIT     #$400,R11
1206 0= ?GOTO BW1
1207 XOR #$400,0(R1)
1208 SUB #8,R15
1209 MOV R14,6(R15)
1210 MOV &$1DDC,4(R15)
1211 MOV #$10,&$1DDC
1212 MOV R9,0(R15)
1213 MOV #0,R14
1214 LO2HI
1215     LCD_CLEAR
1216     <# # #S #36 HOLD #>
1217     ['] LCD_WRC IS EMIT
1218     TYPE
1219     ['] EMIT >BODY IS EMIT
1220 HI2LO
1221 MOV @R15+,&$1DDC
1222 MOV @R15+,R14
1223 MOV @R1+,R0
1224 ENDASM
1225
1226 ASM BACKGROUND
1227 BEGIN
1228     CALL &$1814
1229     BIS &$180A,R2
1230 AGAIN
1231 ENDASM
1232
1233 ASM SYS_OUT
1234     MOV #WARM,R9
1235     ADD #4,R9
1236     MOV R9,R0
1237 ENDASM
1238
1239 CODE STOP
1240 BW1 MOV #$4000,R9
1241     ADD #4,R9
1242     MOV R9,-2(R9)
1243     MOV #WARM,R9
1244     MOV #SYS_OUT,2(R9)
1245     BIC.B #4,&$20A
1246     BIC.B #4,&$20C
1247     MOV #0,&$3C0
1248     MOV #0,&$340
1249     MOV #0,&$342
1250     MOV #COLD,R9
1251     MOV R9,&$FFDE
1252     MOV R9,&$FFEA
1253 COLON
1254 ECHO
1255 ." RC5toLCD is removed,"
1256 ."  type START to restart"
1257  WARM
1258 ;
1259
1260 CODE SYS_INIT
1261 MOV #%10_1101_0100,&$3C0
1262 $1806 @ 16000 = [IF]
1263     MOV #1,&$3E0
1264 [THEN]
1265 $1806 @ 24000 = [IF]
1266     MOV #2,&$3E0
1267 [THEN]
1268     MOV #19,&$3D2
1269 MOV #%0110_0000,&$3C6
1270     MOV #10,&$3D6
1271     BIS.B #$20,&$204
1272     BIS.B #$20,&$20A
1273     BIS.B #7,&$245
1274     BIC.B #7,&$247
1275     BIS.B #$0F,&$224
1276     BIC.B #$0F,&$226
1277     BIS.B #4,&$20A
1278     BIC.B #4,&$20C
1279     MOV #RC5_INT,&$FFDE
1280 MOV #%01_0001_0100,&$340
1281     MOV ##3276,&$352
1282     MOV #%10000,&$342
1283     MOV #WDT_INT,&$FFEA
1284 BIC #1,&$130
1285 BIS.B #3,&$20D
1286 MOV &$1808,R8
1287 CMP #4,R8
1288 0= ?GOTO BW1
1289 COLON
1290     #1000 20_US
1291     %011 TOP_LCD
1292     #205 20_US
1293     %011 TOP_LCD
1294     #5 20_US
1295     %011 TOP_LCD
1296     #2 20_US
1297     %010 TOP_LCD
1298     #2 20_US
1299     %00101000 LCD_WRF
1300     %1000 LCD_WRF
1301     LCD_CLEAR
1302     %0110 LCD_WRF
1303     %1100 LCD_WRF
1304     LCD_CLEAR
1305     ['] LCD_HOME IS CR
1306     ['] LCD_WRC  IS EMIT
1307     CR ." I love you"
1308     ['] CR >BODY IS CR
1309     ['] EMIT >BODY IS EMIT
1310     ." RC5toLCD is running. Type STOP to quit"
1311     PWR_STATE ABORT
1312 ;
1313
1314 CODE START
1315 MOV #$4000,R9
1316 MOV #BACKGROUND,2(R9)
1317 MOV #WARM,R9
1318 MOV #SYS_INIT,2(R9)
1319 MOV R9,R0
1320 ENDCODE 
1321 PWR_STATE
1322
1323 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
1324
1325 MARKER {RC5TOLCD}
1326
1327 [UNDEFINED] @ [IF]
1328 CODE @
1329 MOV @R14,R14
1330 MOV @R13+,R0
1331 ENDCODE
1332 [THEN]
1333
1334 [UNDEFINED] CONSTANT [IF]
1335 : CONSTANT 
1336 CREATE
1337 HI2LO
1338 MOV R14,-2(R10)
1339 MOV @R15+,R14
1340 MOV @R1+,R13
1341 MOV @R13+,R0
1342 ENDCODE
1343 [THEN]
1344
1345 [UNDEFINED] STATE [IF]
1346 $1DBE CONSTANT STATE
1347 [THEN]
1348
1349 [UNDEFINED] = [IF]
1350 CODE =
1351 SUB @R15+,R14
1352 0<> IF
1353     AND #0,R14
1354     MOV @R13+,R0
1355 THEN
1356 XOR #-1,R14
1357 MOV @R13+,R0
1358 ENDCODE
1359 [THEN]
1360
1361 [UNDEFINED] IF [IF]
1362 CODE IF
1363 SUB #2,R15
1364 MOV R14,0(R15)
1365 MOV &$1DC6,R14
1366 ADD #4,&$1DC6
1367 MOV #$4042,0(R14)
1368 ADD #2,R14
1369 MOV @R13+,R0
1370 ENDCODE IMMEDIATE
1371
1372 CODE THEN
1373 MOV &$1DC6,0(R14)
1374 MOV @R15+,R14
1375 MOV @R13+,R0
1376 ENDCODE IMMEDIATE
1377 [THEN]
1378
1379 [UNDEFINED] ELSE [IF]
1380 CODE ELSE
1381 ADD #4,&$1DC6
1382 MOV &$1DC6,R10
1383 MOV #$403E,-4(R10)
1384 MOV R10,0(R14)
1385 SUB #2,R10
1386 MOV R10,R14
1387 MOV @R13+,R0
1388 ENDCODE IMMEDIATE
1389 [THEN]
1390
1391 [UNDEFINED] IS [IF]
1392
1393 CODE DEFER!
1394 MOV @R15+,2(R14)
1395 MOV @R15+,R14
1396 MOV @R13+,R0
1397 ENDCODE
1398
1399
1400 : IS
1401 STATE @
1402 IF  POSTPONE ['] POSTPONE DEFER! 
1403 ELSE ' DEFER! 
1404 THEN
1405 ; IMMEDIATE
1406 [THEN]
1407
1408 [UNDEFINED] >BODY [IF]
1409 CODE >BODY
1410 ADD #4,R14
1411 MOV @R13+,R0
1412 ENDCODE
1413 [THEN]
1414
1415
1416 CODE 20_US
1417 BEGIN
1418     BEGIN
1419         BIT #1,&$3C0
1420     0<> UNTIL
1421     BIC #1,&$3C0
1422     SUB #1,R14
1423 U< UNTIL
1424 MOV @R15+,R14
1425 MOV @R13+,R0
1426 ENDCODE
1427
1428 CODE TOP_LCD
1429     BIS.B #4,&$243
1430     BIT.B #1,&$241
1431 0= IF
1432     AND.B #$0F,R14
1433     MOV.B R14,&$222
1434     BIC.B #4,&$243
1435     MOV @R15+,R14
1436     MOV @R13+,R0
1437 THEN
1438     SUB #2,R15
1439     MOV R14,0(R15)
1440     BIC.B #4,&$243
1441     MOV.B &$220,R14
1442     AND.B #$0F,R14
1443     MOV @R13+,R0
1444 ENDCODE
1445
1446 CODE LCD_WRC
1447     BIS.B #2,&$243
1448 BW1 SUB #2,R15
1449     MOV R14,0(R15)
1450     RRUM #4,R14
1451     BIC.B #1,&$243
1452     BIS.B #$0F,&$224
1453 COLON
1454     TOP_LCD 2 20_US
1455     TOP_LCD 2 20_US 
1456 ;
1457
1458 CODE LCD_WRF
1459     BIC.B #2,&$243
1460     GOTO BW1
1461 ENDCODE
1462
1463 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
1464 : LCD_HOME $02 LCD_WRF 100 20_us ;
1465
1466
1467
1468 ASM WDT_INT
1469 ADD #2,R1
1470 BIT.B #$20,&$240
1471 0= IF
1472     CMP #19,&$3D6
1473     U< IF
1474         ADD #1,&$3D6
1475     THEN
1476 ELSE
1477     BIT.B #$40,&$240
1478     0= IF
1479         CMP #3,&$3D6
1480         U>= IF
1481            SUB #1,&$3D6
1482         THEN
1483     THEN
1484 THEN
1485 BW1
1486 MOV @R1+,R0
1487 ENDASM
1488
1489 ASM RC5_INT
1490 ADD #2,R1
1491 $1806 @ 16000 = [IF]
1492     MOV #1,&$3A0
1493 [THEN]
1494 $1806 @ 24000 = [IF]
1495     MOV #2,&$3A0
1496 [THEN]
1497 MOV #1778,R9
1498 MOV #14,R10
1499 BEGIN
1500 MOV #%1011100100,&$380
1501     RRUM    #1,R9
1502     MOV     R9,R8
1503     RRUM    #1,R8
1504     ADD     R9,R8
1505     BEGIN   CMP R8,&$390
1506     U>= UNTIL
1507     BIT.B   #4,&$200
1508     ADDC    R11,R11
1509     MOV.B   &$200,&$208
1510     BIC.B   #4,&$20C
1511     SUB     #1,R10
1512 0<> WHILE
1513     ADD R9,R8
1514     BEGIN
1515         MOV &$390,R9
1516         CMP R8,R9
1517         U>= IF
1518         BIC #$30,&$380
1519         GOTO BW1
1520         THEN
1521         BIT.B #4,&$20C
1522     0<> UNTIL
1523 REPEAT
1524 BIC #$30,&$380
1525 RLAM    #1,R11
1526 MOV.B   R11,R9
1527 RRUM    #2,R9
1528 BIT     #$4000,R11
1529 0= IF   BIS #$40,R9
1530 THEN
1531 RRUM    #3,R11
1532 XOR     @R1,R11
1533 BIT     #$400,R11
1534 0= ?GOTO BW1
1535 XOR #$400,0(R1)
1536 SUB #8,R15
1537 MOV R14,6(R15)
1538 MOV &$1DDC,4(R15)
1539 MOV #$10,&$1DDC
1540 MOV R9,0(R15)
1541 MOV #0,R14
1542 LO2HI
1543     LCD_CLEAR
1544     <# # #S #36 HOLD #>
1545     ['] LCD_WRC IS EMIT
1546     TYPE
1547     ['] EMIT >BODY IS EMIT
1548 HI2LO
1549 MOV @R15+,&$1DDC
1550 MOV @R15+,R14
1551 MOV @R1+,R0
1552 ENDASM
1553
1554 ASM BACKGROUND
1555 BEGIN
1556     CALL &$1814
1557     BIS &$180A,R2
1558 AGAIN
1559 ENDASM
1560
1561 ASM SYS_OUT
1562     MOV #WARM,R9
1563     ADD #4,R9
1564     MOV R9,R0
1565 ENDASM
1566
1567 CODE STOP
1568 BW1 MOV #$4000,R9
1569     ADD #4,R9
1570     MOV R9,-2(R9)
1571     MOV #WARM,R9
1572     MOV #SYS_OUT,2(R9)
1573     BIC.B #4,&$20A
1574     BIC.B #4,&$20C
1575     MOV #0,&$3C0
1576     MOV #0,&$340
1577     MOV #0,&$342
1578     MOV #COLD,R9
1579     MOV R9,&$FFDE
1580     MOV R9,&$FFEA
1581 COLON
1582 ECHO
1583 ." RC5toLCD is removed,"
1584 ."  type START to restart"
1585  WARM
1586 ;
1587
1588 CODE SYS_INIT
1589 MOV #%10_1101_0100,&$3C0
1590 $1806 @ 16000 = [IF]
1591     MOV #1,&$3E0
1592 [THEN]
1593 $1806 @ 24000 = [IF]
1594     MOV #2,&$3E0
1595 [THEN]
1596     MOV #19,&$3D2
1597 MOV #%0110_0000,&$3C6
1598     MOV #10,&$3D6
1599     BIS.B #$20,&$204
1600     BIS.B #$20,&$20A
1601     BIS.B #7,&$245
1602     BIC.B #7,&$247
1603     BIS.B #$0F,&$224
1604     BIC.B #$0F,&$226
1605     BIS.B #4,&$20A
1606     BIC.B #4,&$20C
1607     MOV #RC5_INT,&$FFDE
1608 MOV #%01_0001_0100,&$340
1609     MOV ##3276,&$352
1610     MOV #%10000,&$342
1611     MOV #WDT_INT,&$FFEA
1612 BIC #1,&$130
1613 BIS.B #3,&$20D
1614 MOV &$1808,R8
1615 CMP #4,R8
1616 0= ?GOTO BW1
1617 COLON
1618     #1000 20_US
1619     %011 TOP_LCD
1620     #205 20_US
1621     %011 TOP_LCD
1622     #5 20_US
1623     %011 TOP_LCD
1624     #2 20_US
1625     %010 TOP_LCD
1626     #2 20_US
1627     %00101000 LCD_WRF
1628     %1000 LCD_WRF
1629     LCD_CLEAR
1630     %0110 LCD_WRF
1631     %1100 LCD_WRF
1632     LCD_CLEAR
1633     ['] LCD_HOME IS CR
1634     ['] LCD_WRC  IS EMIT
1635     CR ." I love you"
1636     ['] CR >BODY IS CR
1637     ['] EMIT >BODY IS EMIT
1638     ." RC5toLCD is running. Type STOP to quit"
1639     PWR_STATE ABORT
1640 ;
1641
1642 CODE START
1643 MOV #$4000,R9
1644 MOV #BACKGROUND,2(R9)
1645 MOV #WARM,R9
1646 MOV #SYS_INIT,2(R9)
1647 MOV R9,R0
1648 ENDCODE 
1649 PWR_STATE
1650
1651 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
1652
1653 MARKER {RC5TOLCD}
1654
1655 [UNDEFINED] @ [IF]
1656 CODE @
1657 MOV @R14,R14
1658 MOV @R13+,R0
1659 ENDCODE
1660 [THEN]
1661
1662 [UNDEFINED] CONSTANT [IF]
1663 : CONSTANT 
1664 CREATE
1665 HI2LO
1666 MOV R14,-2(R10)
1667 MOV @R15+,R14
1668 MOV @R1+,R13
1669 MOV @R13+,R0
1670 ENDCODE
1671 [THEN]
1672
1673 [UNDEFINED] STATE [IF]
1674 $1DBE CONSTANT STATE
1675 [THEN]
1676
1677 [UNDEFINED] = [IF]
1678 CODE =
1679 SUB @R15+,R14
1680 0<> IF
1681     AND #0,R14
1682     MOV @R13+,R0
1683 THEN
1684 XOR #-1,R14
1685 MOV @R13+,R0
1686 ENDCODE
1687 [THEN]
1688
1689 [UNDEFINED] IF [IF]
1690 CODE IF
1691 SUB #2,R15
1692 MOV R14,0(R15)
1693 MOV &$1DC6,R14
1694 ADD #4,&$1DC6
1695 MOV #$4042,0(R14)
1696 ADD #2,R14
1697 MOV @R13+,R0
1698 ENDCODE IMMEDIATE
1699
1700 CODE THEN
1701 MOV &$1DC6,0(R14)
1702 MOV @R15+,R14
1703 MOV @R13+,R0
1704 ENDCODE IMMEDIATE
1705 [THEN]
1706
1707 [UNDEFINED] ELSE [IF]
1708 CODE ELSE
1709 ADD #4,&$1DC6
1710 MOV &$1DC6,R10
1711 MOV #$403E,-4(R10)
1712 MOV R10,0(R14)
1713 SUB #2,R10
1714 MOV R10,R14
1715 MOV @R13+,R0
1716 ENDCODE IMMEDIATE
1717 [THEN]
1718
1719 [UNDEFINED] IS [IF]
1720
1721 CODE DEFER!
1722 MOV @R15+,2(R14)
1723 MOV @R15+,R14
1724 MOV @R13+,R0
1725 ENDCODE
1726
1727
1728 : IS
1729 STATE @
1730 IF  POSTPONE ['] POSTPONE DEFER! 
1731 ELSE ' DEFER! 
1732 THEN
1733 ; IMMEDIATE
1734 [THEN]
1735
1736 [UNDEFINED] >BODY [IF]
1737 CODE >BODY
1738 ADD #4,R14
1739 MOV @R13+,R0
1740 ENDCODE
1741 [THEN]
1742
1743
1744 CODE 20_US
1745 BEGIN
1746     BEGIN
1747         BIT #1,&$3C0
1748     0<> UNTIL
1749     BIC #1,&$3C0
1750     SUB #1,R14
1751 U< UNTIL
1752 MOV @R15+,R14
1753 MOV @R13+,R0
1754 ENDCODE
1755
1756 CODE TOP_LCD
1757     BIS.B #4,&$243
1758     BIT.B #1,&$241
1759 0= IF
1760     AND.B #$0F,R14
1761     MOV.B R14,&$222
1762     BIC.B #4,&$243
1763     MOV @R15+,R14
1764     MOV @R13+,R0
1765 THEN
1766     SUB #2,R15
1767     MOV R14,0(R15)
1768     BIC.B #4,&$243
1769     MOV.B &$220,R14
1770     AND.B #$0F,R14
1771     MOV @R13+,R0
1772 ENDCODE
1773
1774 CODE LCD_WRC
1775     BIS.B #2,&$243
1776 BW1 SUB #2,R15
1777     MOV R14,0(R15)
1778     RRUM #4,R14
1779     BIC.B #1,&$243
1780     BIS.B #$0F,&$224
1781 COLON
1782     TOP_LCD 2 20_US
1783     TOP_LCD 2 20_US 
1784 ;
1785
1786 CODE LCD_WRF
1787     BIC.B #2,&$243
1788     GOTO BW1
1789 ENDCODE
1790
1791 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
1792 : LCD_HOME $02 LCD_WRF 100 20_us ;
1793
1794
1795
1796 ASM WDT_INT
1797 ADD #2,R1
1798 BIT.B #$20,&$240
1799 0= IF
1800     CMP #19,&$3D6
1801     U< IF
1802         ADD #1,&$3D6
1803     THEN
1804 ELSE
1805     BIT.B #$40,&$240
1806     0= IF
1807         CMP #3,&$3D6
1808         U>= IF
1809            SUB #1,&$3D6
1810         THEN
1811     THEN
1812 THEN
1813 BW1
1814 MOV @R1+,R0
1815 ENDASM
1816
1817 ASM RC5_INT
1818 ADD #2,R1
1819 $1806 @ 16000 = [IF]
1820     MOV #1,&$3A0
1821 [THEN]
1822 $1806 @ 24000 = [IF]
1823     MOV #2,&$3A0
1824 [THEN]
1825 MOV #1778,R9
1826 MOV #14,R10
1827 BEGIN
1828 MOV #%1011100100,&$380
1829     RRUM    #1,R9
1830     MOV     R9,R8
1831     RRUM    #1,R8
1832     ADD     R9,R8
1833     BEGIN   CMP R8,&$390
1834     U>= UNTIL
1835     BIT.B   #4,&$200
1836     ADDC    R11,R11
1837     MOV.B   &$200,&$208
1838     BIC.B   #4,&$20C
1839     SUB     #1,R10
1840 0<> WHILE
1841     ADD R9,R8
1842     BEGIN
1843         MOV &$390,R9
1844         CMP R8,R9
1845         U>= IF
1846         BIC #$30,&$380
1847         GOTO BW1
1848         THEN
1849         BIT.B #4,&$20C
1850     0<> UNTIL
1851 REPEAT
1852 BIC #$30,&$380
1853 RLAM    #1,R11
1854 MOV.B   R11,R9
1855 RRUM    #2,R9
1856 BIT     #$4000,R11
1857 0= IF   BIS #$40,R9
1858 THEN
1859 RRUM    #3,R11
1860 XOR     @R1,R11
1861 BIT     #$400,R11
1862 0= ?GOTO BW1
1863 XOR #$400,0(R1)
1864 SUB #8,R15
1865 MOV R14,6(R15)
1866 MOV &$1DDC,4(R15)
1867 MOV #$10,&$1DDC
1868 MOV R9,0(R15)
1869 MOV #0,R14
1870 LO2HI
1871     LCD_CLEAR
1872     <# # #S #36 HOLD #>
1873     ['] LCD_WRC IS EMIT
1874     TYPE
1875     ['] EMIT >BODY IS EMIT
1876 HI2LO
1877 MOV @R15+,&$1DDC
1878 MOV @R15+,R14
1879 MOV @R1+,R0
1880 ENDASM
1881
1882 ASM BACKGROUND
1883 BEGIN
1884     CALL &$1814
1885     BIS &$180A,R2
1886 AGAIN
1887 ENDASM
1888
1889 ASM SYS_OUT
1890     MOV #WARM,R9
1891     ADD #4,R9
1892     MOV R9,R0
1893 ENDASM
1894
1895 CODE STOP
1896 BW1 MOV #$4000,R9
1897     ADD #4,R9
1898     MOV R9,-2(R9)
1899     MOV #WARM,R9
1900     MOV #SYS_OUT,2(R9)
1901     BIC.B #4,&$20A
1902     BIC.B #4,&$20C
1903     MOV #0,&$3C0
1904     MOV #0,&$340
1905     MOV #0,&$342
1906     MOV #COLD,R9
1907     MOV R9,&$FFDE
1908     MOV R9,&$FFEA
1909 COLON
1910 ECHO
1911 ." RC5toLCD is removed,"
1912 ."  type START to restart"
1913  WARM
1914 ;
1915
1916 CODE SYS_INIT
1917 MOV #%10_1101_0100,&$3C0
1918 $1806 @ 16000 = [IF]
1919     MOV #1,&$3E0
1920 [THEN]
1921 $1806 @ 24000 = [IF]
1922     MOV #2,&$3E0
1923 [THEN]
1924     MOV #19,&$3D2
1925 MOV #%0110_0000,&$3C6
1926     MOV #10,&$3D6
1927     BIS.B #$20,&$204
1928     BIS.B #$20,&$20A
1929     BIS.B #7,&$245
1930     BIC.B #7,&$247
1931     BIS.B #$0F,&$224
1932     BIC.B #$0F,&$226
1933     BIS.B #4,&$20A
1934     BIC.B #4,&$20C
1935     MOV #RC5_INT,&$FFDE
1936 MOV #%01_0001_0100,&$340
1937     MOV ##3276,&$352
1938     MOV #%10000,&$342
1939     MOV #WDT_INT,&$FFEA
1940 BIC #1,&$130
1941 BIS.B #3,&$20D
1942 MOV &$1808,R8
1943 CMP #4,R8
1944 0= ?GOTO BW1
1945 COLON
1946     #1000 20_US
1947     %011 TOP_LCD
1948     #205 20_US
1949     %011 TOP_LCD
1950     #5 20_US
1951     %011 TOP_LCD
1952     #2 20_US
1953     %010 TOP_LCD
1954     #2 20_US
1955     %00101000 LCD_WRF
1956     %1000 LCD_WRF
1957     LCD_CLEAR
1958     %0110 LCD_WRF
1959     %1100 LCD_WRF
1960     LCD_CLEAR
1961     ['] LCD_HOME IS CR
1962     ['] LCD_WRC  IS EMIT
1963     CR ." I love you"
1964     ['] CR >BODY IS CR
1965     ['] EMIT >BODY IS EMIT
1966     ." RC5toLCD is running. Type STOP to quit"
1967     PWR_STATE ABORT
1968 ;
1969
1970 CODE START
1971 MOV #$4000,R9
1972 MOV #BACKGROUND,2(R9)
1973 MOV #WARM,R9
1974 MOV #SYS_INIT,2(R9)
1975 MOV R9,R0
1976 ENDCODE 
1977 PWR_STATE
1978
1979 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
1980
1981 MARKER {RC5TOLCD}
1982
1983 [UNDEFINED] @ [IF]
1984 CODE @
1985 MOV @R14,R14
1986 MOV @R13+,R0
1987 ENDCODE
1988 [THEN]
1989
1990 [UNDEFINED] CONSTANT [IF]
1991 : CONSTANT 
1992 CREATE
1993 HI2LO
1994 MOV R14,-2(R10)
1995 MOV @R15+,R14
1996 MOV @R1+,R13
1997 MOV @R13+,R0
1998 ENDCODE
1999 [THEN]
2000
2001 [UNDEFINED] STATE [IF]
2002 $1DBE CONSTANT STATE
2003 [THEN]
2004
2005 [UNDEFINED] = [IF]
2006 CODE =
2007 SUB @R15+,R14
2008 0<> IF
2009     AND #0,R14
2010     MOV @R13+,R0
2011 THEN
2012 XOR #-1,R14
2013 MOV @R13+,R0
2014 ENDCODE
2015 [THEN]
2016
2017 [UNDEFINED] IF [IF]
2018 CODE IF
2019 SUB #2,R15
2020 MOV R14,0(R15)
2021 MOV &$1DC6,R14
2022 ADD #4,&$1DC6
2023 MOV #$4042,0(R14)
2024 ADD #2,R14
2025 MOV @R13+,R0
2026 ENDCODE IMMEDIATE
2027
2028 CODE THEN
2029 MOV &$1DC6,0(R14)
2030 MOV @R15+,R14
2031 MOV @R13+,R0
2032 ENDCODE IMMEDIATE
2033 [THEN]
2034
2035 [UNDEFINED] ELSE [IF]
2036 CODE ELSE
2037 ADD #4,&$1DC6
2038 MOV &$1DC6,R10
2039 MOV #$403E,-4(R10)
2040 MOV R10,0(R14)
2041 SUB #2,R10
2042 MOV R10,R14
2043 MOV @R13+,R0
2044 ENDCODE IMMEDIATE
2045 [THEN]
2046
2047 [UNDEFINED] IS [IF]
2048
2049 CODE DEFER!
2050 MOV @R15+,2(R14)
2051 MOV @R15+,R14
2052 MOV @R13+,R0
2053 ENDCODE
2054
2055
2056 : IS
2057 STATE @
2058 IF  POSTPONE ['] POSTPONE DEFER! 
2059 ELSE ' DEFER! 
2060 THEN
2061 ; IMMEDIATE
2062 [THEN]
2063
2064 [UNDEFINED] >BODY [IF]
2065 CODE >BODY
2066 ADD #4,R14
2067 MOV @R13+,R0
2068 ENDCODE
2069 [THEN]
2070
2071
2072 CODE 20_US
2073 BEGIN
2074     BEGIN
2075         BIT #1,&$3C0
2076     0<> UNTIL
2077     BIC #1,&$3C0
2078     SUB #1,R14
2079 U< UNTIL
2080 MOV @R15+,R14
2081 MOV @R13+,R0
2082 ENDCODE
2083
2084 CODE TOP_LCD
2085     BIS.B #4,&$243
2086     BIT.B #1,&$241
2087 0= IF
2088     AND.B #$0F,R14
2089     MOV.B R14,&$222
2090     BIC.B #4,&$243
2091     MOV @R15+,R14
2092     MOV @R13+,R0
2093 THEN
2094     SUB #2,R15
2095     MOV R14,0(R15)
2096     BIC.B #4,&$243
2097     MOV.B &$220,R14
2098     AND.B #$0F,R14
2099     MOV @R13+,R0
2100 ENDCODE
2101
2102 CODE LCD_WRC
2103     BIS.B #2,&$243
2104 BW1 SUB #2,R15
2105     MOV R14,0(R15)
2106     RRUM #4,R14
2107     BIC.B #1,&$243
2108     BIS.B #$0F,&$224
2109 COLON
2110     TOP_LCD 2 20_US
2111     TOP_LCD 2 20_US 
2112 ;
2113
2114 CODE LCD_WRF
2115     BIC.B #2,&$243
2116     GOTO BW1
2117 ENDCODE
2118
2119 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
2120 : LCD_HOME $02 LCD_WRF 100 20_us ;
2121
2122
2123
2124 ASM WDT_INT
2125 ADD #2,R1
2126 BIT.B #$20,&$240
2127 0= IF
2128     CMP #19,&$3D6
2129     U< IF
2130         ADD #1,&$3D6
2131     THEN
2132 ELSE
2133     BIT.B #$40,&$240
2134     0= IF
2135         CMP #3,&$3D6
2136         U>= IF
2137            SUB #1,&$3D6
2138         THEN
2139     THEN
2140 THEN
2141 BW1
2142 MOV @R1+,R0
2143 ENDASM
2144
2145 ASM RC5_INT
2146 ADD #2,R1
2147 $1806 @ 16000 = [IF]
2148     MOV #1,&$3A0
2149 [THEN]
2150 $1806 @ 24000 = [IF]
2151     MOV #2,&$3A0
2152 [THEN]
2153 MOV #1778,R9
2154 MOV #14,R10
2155 BEGIN
2156 MOV #%1011100100,&$380
2157     RRUM    #1,R9
2158     MOV     R9,R8
2159     RRUM    #1,R8
2160     ADD     R9,R8
2161     BEGIN   CMP R8,&$390
2162     U>= UNTIL
2163     BIT.B   #4,&$200
2164     ADDC    R11,R11
2165     MOV.B   &$200,&$208
2166     BIC.B   #4,&$20C
2167     SUB     #1,R10
2168 0<> WHILE
2169     ADD R9,R8
2170     BEGIN
2171         MOV &$390,R9
2172         CMP R8,R9
2173         U>= IF
2174         BIC #$30,&$380
2175         GOTO BW1
2176         THEN
2177         BIT.B #4,&$20C
2178     0<> UNTIL
2179 REPEAT
2180 BIC #$30,&$380
2181 RLAM    #1,R11
2182 MOV.B   R11,R9
2183 RRUM    #2,R9
2184 BIT     #$4000,R11
2185 0= IF   BIS #$40,R9
2186 THEN
2187 RRUM    #3,R11
2188 XOR     @R1,R11
2189 BIT     #$400,R11
2190 0= ?GOTO BW1
2191 XOR #$400,0(R1)
2192 SUB #8,R15
2193 MOV R14,6(R15)
2194 MOV &$1DDC,4(R15)
2195 MOV #$10,&$1DDC
2196 MOV R9,0(R15)
2197 MOV #0,R14
2198 LO2HI
2199     LCD_CLEAR
2200     <# # #S #36 HOLD #>
2201     ['] LCD_WRC IS EMIT
2202     TYPE
2203     ['] EMIT >BODY IS EMIT
2204 HI2LO
2205 MOV @R15+,&$1DDC
2206 MOV @R15+,R14
2207 MOV @R1+,R0
2208 ENDASM
2209
2210 ASM BACKGROUND
2211 BEGIN
2212     CALL &$1814
2213     BIS &$180A,R2
2214 AGAIN
2215 ENDASM
2216
2217 ASM SYS_OUT
2218     MOV #WARM,R9
2219     ADD #4,R9
2220     MOV R9,R0
2221 ENDASM
2222
2223 CODE STOP
2224 BW1 MOV #$4000,R9
2225     ADD #4,R9
2226     MOV R9,-2(R9)
2227     MOV #WARM,R9
2228     MOV #SYS_OUT,2(R9)
2229     BIC.B #4,&$20A
2230     BIC.B #4,&$20C
2231     MOV #0,&$3C0
2232     MOV #0,&$340
2233     MOV #0,&$342
2234     MOV #COLD,R9
2235     MOV R9,&$FFDE
2236     MOV R9,&$FFEA
2237 COLON
2238 ECHO
2239 ." RC5toLCD is removed,"
2240 ."  type START to restart"
2241  WARM
2242 ;
2243
2244 CODE SYS_INIT
2245 MOV #%10_1101_0100,&$3C0
2246 $1806 @ 16000 = [IF]
2247     MOV #1,&$3E0
2248 [THEN]
2249 $1806 @ 24000 = [IF]
2250     MOV #2,&$3E0
2251 [THEN]
2252     MOV #19,&$3D2
2253 MOV #%0110_0000,&$3C6
2254     MOV #10,&$3D6
2255     BIS.B #$20,&$204
2256     BIS.B #$20,&$20A
2257     BIS.B #7,&$245
2258     BIC.B #7,&$247
2259     BIS.B #$0F,&$224
2260     BIC.B #$0F,&$226
2261     BIS.B #4,&$20A
2262     BIC.B #4,&$20C
2263     MOV #RC5_INT,&$FFDE
2264 MOV #%01_0001_0100,&$340
2265     MOV ##3276,&$352
2266     MOV #%10000,&$342
2267     MOV #WDT_INT,&$FFEA
2268 BIC #1,&$130
2269 BIS.B #3,&$20D
2270 MOV &$1808,R8
2271 CMP #4,R8
2272 0= ?GOTO BW1
2273 COLON
2274     #1000 20_US
2275     %011 TOP_LCD
2276     #205 20_US
2277     %011 TOP_LCD
2278     #5 20_US
2279     %011 TOP_LCD
2280     #2 20_US
2281     %010 TOP_LCD
2282     #2 20_US
2283     %00101000 LCD_WRF
2284     %1000 LCD_WRF
2285     LCD_CLEAR
2286     %0110 LCD_WRF
2287     %1100 LCD_WRF
2288     LCD_CLEAR
2289     ['] LCD_HOME IS CR
2290     ['] LCD_WRC  IS EMIT
2291     CR ." I love you"
2292     ['] CR >BODY IS CR
2293     ['] EMIT >BODY IS EMIT
2294     ." RC5toLCD is running. Type STOP to quit"
2295     PWR_STATE ABORT
2296 ;
2297
2298 CODE START
2299 MOV #$4000,R9
2300 MOV #BACKGROUND,2(R9)
2301 MOV #WARM,R9
2302 MOV #SYS_INIT,2(R9)
2303 MOV R9,R0
2304 ENDCODE 
2305 PWR_STATE
2306
2307 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
2308
2309 MARKER {RC5TOLCD}
2310
2311 [UNDEFINED] @ [IF]
2312 CODE @
2313 MOV @R14,R14
2314 MOV @R13+,R0
2315 ENDCODE
2316 [THEN]
2317
2318 [UNDEFINED] CONSTANT [IF]
2319 : CONSTANT 
2320 CREATE
2321 HI2LO
2322 MOV R14,-2(R10)
2323 MOV @R15+,R14
2324 MOV @R1+,R13
2325 MOV @R13+,R0
2326 ENDCODE
2327 [THEN]
2328
2329 [UNDEFINED] STATE [IF]
2330 $1DBE CONSTANT STATE
2331 [THEN]
2332
2333 [UNDEFINED] = [IF]
2334 CODE =
2335 SUB @R15+,R14
2336 0<> IF
2337     AND #0,R14
2338     MOV @R13+,R0
2339 THEN
2340 XOR #-1,R14
2341 MOV @R13+,R0
2342 ENDCODE
2343 [THEN]
2344
2345 [UNDEFINED] IF [IF]
2346 CODE IF
2347 SUB #2,R15
2348 MOV R14,0(R15)
2349 MOV &$1DC6,R14
2350 ADD #4,&$1DC6
2351 MOV #$4042,0(R14)
2352 ADD #2,R14
2353 MOV @R13+,R0
2354 ENDCODE IMMEDIATE
2355
2356 CODE THEN
2357 MOV &$1DC6,0(R14)
2358 MOV @R15+,R14
2359 MOV @R13+,R0
2360 ENDCODE IMMEDIATE
2361 [THEN]
2362
2363 [UNDEFINED] ELSE [IF]
2364 CODE ELSE
2365 ADD #4,&$1DC6
2366 MOV &$1DC6,R10
2367 MOV #$403E,-4(R10)
2368 MOV R10,0(R14)
2369 SUB #2,R10
2370 MOV R10,R14
2371 MOV @R13+,R0
2372 ENDCODE IMMEDIATE
2373 [THEN]
2374
2375 [UNDEFINED] IS [IF]
2376
2377 CODE DEFER!
2378 MOV @R15+,2(R14)
2379 MOV @R15+,R14
2380 MOV @R13+,R0
2381 ENDCODE
2382
2383
2384 : IS
2385 STATE @
2386 IF  POSTPONE ['] POSTPONE DEFER! 
2387 ELSE ' DEFER! 
2388 THEN
2389 ; IMMEDIATE
2390 [THEN]
2391
2392 [UNDEFINED] >BODY [IF]
2393 CODE >BODY
2394 ADD #4,R14
2395 MOV @R13+,R0
2396 ENDCODE
2397 [THEN]
2398
2399
2400 CODE 20_US
2401 BEGIN
2402     BEGIN
2403         BIT #1,&$3C0
2404     0<> UNTIL
2405     BIC #1,&$3C0
2406     SUB #1,R14
2407 U< UNTIL
2408 MOV @R15+,R14
2409 MOV @R13+,R0
2410 ENDCODE
2411
2412 CODE TOP_LCD
2413     BIS.B #4,&$243
2414     BIT.B #1,&$241
2415 0= IF
2416     AND.B #$0F,R14
2417     MOV.B R14,&$222
2418     BIC.B #4,&$243
2419     MOV @R15+,R14
2420     MOV @R13+,R0
2421 THEN
2422     SUB #2,R15
2423     MOV R14,0(R15)
2424     BIC.B #4,&$243
2425     MOV.B &$220,R14
2426     AND.B #$0F,R14
2427     MOV @R13+,R0
2428 ENDCODE
2429
2430 CODE LCD_WRC
2431     BIS.B #2,&$243
2432 BW1 SUB #2,R15
2433     MOV R14,0(R15)
2434     RRUM #4,R14
2435     BIC.B #1,&$243
2436     BIS.B #$0F,&$224
2437 COLON
2438     TOP_LCD 2 20_US
2439     TOP_LCD 2 20_US 
2440 ;
2441
2442 CODE LCD_WRF
2443     BIC.B #2,&$243
2444     GOTO BW1
2445 ENDCODE
2446
2447 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
2448 : LCD_HOME $02 LCD_WRF 100 20_us ;
2449
2450
2451
2452 ASM WDT_INT
2453 ADD #2,R1
2454 BIT.B #$20,&$240
2455 0= IF
2456     CMP #19,&$3D6
2457     U< IF
2458         ADD #1,&$3D6
2459     THEN
2460 ELSE
2461     BIT.B #$40,&$240
2462     0= IF
2463         CMP #3,&$3D6
2464         U>= IF
2465            SUB #1,&$3D6
2466         THEN
2467     THEN
2468 THEN
2469 BW1
2470 MOV @R1+,R0
2471 ENDASM
2472
2473 ASM RC5_INT
2474 ADD #2,R1
2475 $1806 @ 16000 = [IF]
2476     MOV #1,&$3A0
2477 [THEN]
2478 $1806 @ 24000 = [IF]
2479     MOV #2,&$3A0
2480 [THEN]
2481 MOV #1778,R9
2482 MOV #14,R10
2483 BEGIN
2484 MOV #%1011100100,&$380
2485     RRUM    #1,R9
2486     MOV     R9,R8
2487     RRUM    #1,R8
2488     ADD     R9,R8
2489     BEGIN   CMP R8,&$390
2490     U>= UNTIL
2491     BIT.B   #4,&$200
2492     ADDC    R11,R11
2493     MOV.B   &$200,&$208
2494     BIC.B   #4,&$20C
2495     SUB     #1,R10
2496 0<> WHILE
2497     ADD R9,R8
2498     BEGIN
2499         MOV &$390,R9
2500         CMP R8,R9
2501         U>= IF
2502         BIC #$30,&$380
2503         GOTO BW1
2504         THEN
2505         BIT.B #4,&$20C
2506     0<> UNTIL
2507 REPEAT
2508 BIC #$30,&$380
2509 RLAM    #1,R11
2510 MOV.B   R11,R9
2511 RRUM    #2,R9
2512 BIT     #$4000,R11
2513 0= IF   BIS #$40,R9
2514 THEN
2515 RRUM    #3,R11
2516 XOR     @R1,R11
2517 BIT     #$400,R11
2518 0= ?GOTO BW1
2519 XOR #$400,0(R1)
2520 SUB #8,R15
2521 MOV R14,6(R15)
2522 MOV &$1DDC,4(R15)
2523 MOV #$10,&$1DDC
2524 MOV R9,0(R15)
2525 MOV #0,R14
2526 LO2HI
2527     LCD_CLEAR
2528     <# # #S #36 HOLD #>
2529     ['] LCD_WRC IS EMIT
2530     TYPE
2531     ['] EMIT >BODY IS EMIT
2532 HI2LO
2533 MOV @R15+,&$1DDC
2534 MOV @R15+,R14
2535 MOV @R1+,R0
2536 ENDASM
2537
2538 ASM BACKGROUND
2539 BEGIN
2540     CALL &$1814
2541     BIS &$180A,R2
2542 AGAIN
2543 ENDASM
2544
2545 ASM SYS_OUT
2546     MOV #WARM,R9
2547     ADD #4,R9
2548     MOV R9,R0
2549 ENDASM
2550
2551 CODE STOP
2552 BW1 MOV #$4000,R9
2553     ADD #4,R9
2554     MOV R9,-2(R9)
2555     MOV #WARM,R9
2556     MOV #SYS_OUT,2(R9)
2557     BIC.B #4,&$20A
2558     BIC.B #4,&$20C
2559     MOV #0,&$3C0
2560     MOV #0,&$340
2561     MOV #0,&$342
2562     MOV #COLD,R9
2563     MOV R9,&$FFDE
2564     MOV R9,&$FFEA
2565 COLON
2566 ECHO
2567 ." RC5toLCD is removed,"
2568 ."  type START to restart"
2569  WARM
2570 ;
2571
2572 CODE SYS_INIT
2573 MOV #%10_1101_0100,&$3C0
2574 $1806 @ 16000 = [IF]
2575     MOV #1,&$3E0
2576 [THEN]
2577 $1806 @ 24000 = [IF]
2578     MOV #2,&$3E0
2579 [THEN]
2580     MOV #19,&$3D2
2581 MOV #%0110_0000,&$3C6
2582     MOV #10,&$3D6
2583     BIS.B #$20,&$204
2584     BIS.B #$20,&$20A
2585     BIS.B #7,&$245
2586     BIC.B #7,&$247
2587     BIS.B #$0F,&$224
2588     BIC.B #$0F,&$226
2589     BIS.B #4,&$20A
2590     BIC.B #4,&$20C
2591     MOV #RC5_INT,&$FFDE
2592 MOV #%01_0001_0100,&$340
2593     MOV ##3276,&$352
2594     MOV #%10000,&$342
2595     MOV #WDT_INT,&$FFEA
2596 BIC #1,&$130
2597 BIS.B #3,&$20D
2598 MOV &$1808,R8
2599 CMP #4,R8
2600 0= ?GOTO BW1
2601 COLON
2602     #1000 20_US
2603     %011 TOP_LCD
2604     #205 20_US
2605     %011 TOP_LCD
2606     #5 20_US
2607     %011 TOP_LCD
2608     #2 20_US
2609     %010 TOP_LCD
2610     #2 20_US
2611     %00101000 LCD_WRF
2612     %1000 LCD_WRF
2613     LCD_CLEAR
2614     %0110 LCD_WRF
2615     %1100 LCD_WRF
2616     LCD_CLEAR
2617     ['] LCD_HOME IS CR
2618     ['] LCD_WRC  IS EMIT
2619     CR ." I love you"
2620     ['] CR >BODY IS CR
2621     ['] EMIT >BODY IS EMIT
2622     ." RC5toLCD is running. Type STOP to quit"
2623     PWR_STATE ABORT
2624 ;
2625
2626 CODE START
2627 MOV #$4000,R9
2628 MOV #BACKGROUND,2(R9)
2629 MOV #WARM,R9
2630 MOV #SYS_INIT,2(R9)
2631 MOV R9,R0
2632 ENDCODE 
2633 PWR_STATE
2634
2635 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
2636
2637 MARKER {RC5TOLCD}
2638
2639 [UNDEFINED] @ [IF]
2640 CODE @
2641 MOV @R14,R14
2642 MOV @R13+,R0
2643 ENDCODE
2644 [THEN]
2645
2646 [UNDEFINED] CONSTANT [IF]
2647 : CONSTANT 
2648 CREATE
2649 HI2LO
2650 MOV R14,-2(R10)
2651 MOV @R15+,R14
2652 MOV @R1+,R13
2653 MOV @R13+,R0
2654 ENDCODE
2655 [THEN]
2656
2657 [UNDEFINED] STATE [IF]
2658 $1DBE CONSTANT STATE
2659 [THEN]
2660
2661 [UNDEFINED] = [IF]
2662 CODE =
2663 SUB @R15+,R14
2664 0<> IF
2665     AND #0,R14
2666     MOV @R13+,R0
2667 THEN
2668 XOR #-1,R14
2669 MOV @R13+,R0
2670 ENDCODE
2671 [THEN]
2672
2673 [UNDEFINED] IF [IF]
2674 CODE IF
2675 SUB #2,R15
2676 MOV R14,0(R15)
2677 MOV &$1DC6,R14
2678 ADD #4,&$1DC6
2679 MOV #$4042,0(R14)
2680 ADD #2,R14
2681 MOV @R13+,R0
2682 ENDCODE IMMEDIATE
2683
2684 CODE THEN
2685 MOV &$1DC6,0(R14)
2686 MOV @R15+,R14
2687 MOV @R13+,R0
2688 ENDCODE IMMEDIATE
2689 [THEN]
2690
2691 [UNDEFINED] ELSE [IF]
2692 CODE ELSE
2693 ADD #4,&$1DC6
2694 MOV &$1DC6,R10
2695 MOV #$403E,-4(R10)
2696 MOV R10,0(R14)
2697 SUB #2,R10
2698 MOV R10,R14
2699 MOV @R13+,R0
2700 ENDCODE IMMEDIATE
2701 [THEN]
2702
2703 [UNDEFINED] IS [IF]
2704
2705 CODE DEFER!
2706 MOV @R15+,2(R14)
2707 MOV @R15+,R14
2708 MOV @R13+,R0
2709 ENDCODE
2710
2711
2712 : IS
2713 STATE @
2714 IF  POSTPONE ['] POSTPONE DEFER! 
2715 ELSE ' DEFER! 
2716 THEN
2717 ; IMMEDIATE
2718 [THEN]
2719
2720 [UNDEFINED] >BODY [IF]
2721 CODE >BODY
2722 ADD #4,R14
2723 MOV @R13+,R0
2724 ENDCODE
2725 [THEN]
2726
2727
2728 CODE 20_US
2729 BEGIN
2730     BEGIN
2731         BIT #1,&$3C0
2732     0<> UNTIL
2733     BIC #1,&$3C0
2734     SUB #1,R14
2735 U< UNTIL
2736 MOV @R15+,R14
2737 MOV @R13+,R0
2738 ENDCODE
2739
2740 CODE TOP_LCD
2741     BIS.B #4,&$243
2742     BIT.B #1,&$241
2743 0= IF
2744     AND.B #$0F,R14
2745     MOV.B R14,&$222
2746     BIC.B #4,&$243
2747     MOV @R15+,R14
2748     MOV @R13+,R0
2749 THEN
2750     SUB #2,R15
2751     MOV R14,0(R15)
2752     BIC.B #4,&$243
2753     MOV.B &$220,R14
2754     AND.B #$0F,R14
2755     MOV @R13+,R0
2756 ENDCODE
2757
2758 CODE LCD_WRC
2759     BIS.B #2,&$243
2760 BW1 SUB #2,R15
2761     MOV R14,0(R15)
2762     RRUM #4,R14
2763     BIC.B #1,&$243
2764     BIS.B #$0F,&$224
2765 COLON
2766     TOP_LCD 2 20_US
2767     TOP_LCD 2 20_US 
2768 ;
2769
2770 CODE LCD_WRF
2771     BIC.B #2,&$243
2772     GOTO BW1
2773 ENDCODE
2774
2775 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
2776 : LCD_HOME $02 LCD_WRF 100 20_us ;
2777
2778
2779
2780 ASM WDT_INT
2781 ADD #2,R1
2782 BIT.B #$20,&$240
2783 0= IF
2784     CMP #19,&$3D6
2785     U< IF
2786         ADD #1,&$3D6
2787     THEN
2788 ELSE
2789     BIT.B #$40,&$240
2790     0= IF
2791         CMP #3,&$3D6
2792         U>= IF
2793            SUB #1,&$3D6
2794         THEN
2795     THEN
2796 THEN
2797 BW1
2798 MOV @R1+,R0
2799 ENDASM
2800
2801 ASM RC5_INT
2802 ADD #2,R1
2803 $1806 @ 16000 = [IF]
2804     MOV #1,&$3A0
2805 [THEN]
2806 $1806 @ 24000 = [IF]
2807     MOV #2,&$3A0
2808 [THEN]
2809 MOV #1778,R9
2810 MOV #14,R10
2811 BEGIN
2812 MOV #%1011100100,&$380
2813     RRUM    #1,R9
2814     MOV     R9,R8
2815     RRUM    #1,R8
2816     ADD     R9,R8
2817     BEGIN   CMP R8,&$390
2818     U>= UNTIL
2819     BIT.B   #4,&$200
2820     ADDC    R11,R11
2821     MOV.B   &$200,&$208
2822     BIC.B   #4,&$20C
2823     SUB     #1,R10
2824 0<> WHILE
2825     ADD R9,R8
2826     BEGIN
2827         MOV &$390,R9
2828         CMP R8,R9
2829         U>= IF
2830         BIC #$30,&$380
2831         GOTO BW1
2832         THEN
2833         BIT.B #4,&$20C
2834     0<> UNTIL
2835 REPEAT
2836 BIC #$30,&$380
2837 RLAM    #1,R11
2838 MOV.B   R11,R9
2839 RRUM    #2,R9
2840 BIT     #$4000,R11
2841 0= IF   BIS #$40,R9
2842 THEN
2843 RRUM    #3,R11
2844 XOR     @R1,R11
2845 BIT     #$400,R11
2846 0= ?GOTO BW1
2847 XOR #$400,0(R1)
2848 SUB #8,R15
2849 MOV R14,6(R15)
2850 MOV &$1DDC,4(R15)
2851 MOV #$10,&$1DDC
2852 MOV R9,0(R15)
2853 MOV #0,R14
2854 LO2HI
2855     LCD_CLEAR
2856     <# # #S #36 HOLD #>
2857     ['] LCD_WRC IS EMIT
2858     TYPE
2859     ['] EMIT >BODY IS EMIT
2860 HI2LO
2861 MOV @R15+,&$1DDC
2862 MOV @R15+,R14
2863 MOV @R1+,R0
2864 ENDASM
2865
2866 ASM BACKGROUND
2867 BEGIN
2868     CALL &$1814
2869     BIS &$180A,R2
2870 AGAIN
2871 ENDASM
2872
2873 ASM SYS_OUT
2874     MOV #WARM,R9
2875     ADD #4,R9
2876     MOV R9,R0
2877 ENDASM
2878
2879 CODE STOP
2880 BW1 MOV #$4000,R9
2881     ADD #4,R9
2882     MOV R9,-2(R9)
2883     MOV #WARM,R9
2884     MOV #SYS_OUT,2(R9)
2885     BIC.B #4,&$20A
2886     BIC.B #4,&$20C
2887     MOV #0,&$3C0
2888     MOV #0,&$340
2889     MOV #0,&$342
2890     MOV #COLD,R9
2891     MOV R9,&$FFDE
2892     MOV R9,&$FFEA
2893 COLON
2894 ECHO
2895 ." RC5toLCD is removed,"
2896 ."  type START to restart"
2897  WARM
2898 ;
2899
2900 CODE SYS_INIT
2901 MOV #%10_1101_0100,&$3C0
2902 $1806 @ 16000 = [IF]
2903     MOV #1,&$3E0
2904 [THEN]
2905 $1806 @ 24000 = [IF]
2906     MOV #2,&$3E0
2907 [THEN]
2908     MOV #19,&$3D2
2909 MOV #%0110_0000,&$3C6
2910     MOV #10,&$3D6
2911     BIS.B #$20,&$204
2912     BIS.B #$20,&$20A
2913     BIS.B #7,&$245
2914     BIC.B #7,&$247
2915     BIS.B #$0F,&$224
2916     BIC.B #$0F,&$226
2917     BIS.B #4,&$20A
2918     BIC.B #4,&$20C
2919     MOV #RC5_INT,&$FFDE
2920 MOV #%01_0001_0100,&$340
2921     MOV ##3276,&$352
2922     MOV #%10000,&$342
2923     MOV #WDT_INT,&$FFEA
2924 BIC #1,&$130
2925 BIS.B #3,&$20D
2926 MOV &$1808,R8
2927 CMP #4,R8
2928 0= ?GOTO BW1
2929 COLON
2930     #1000 20_US
2931     %011 TOP_LCD
2932     #205 20_US
2933     %011 TOP_LCD
2934     #5 20_US
2935     %011 TOP_LCD
2936     #2 20_US
2937     %010 TOP_LCD
2938     #2 20_US
2939     %00101000 LCD_WRF
2940     %1000 LCD_WRF
2941     LCD_CLEAR
2942     %0110 LCD_WRF
2943     %1100 LCD_WRF
2944     LCD_CLEAR
2945     ['] LCD_HOME IS CR
2946     ['] LCD_WRC  IS EMIT
2947     CR ." I love you"
2948     ['] CR >BODY IS CR
2949     ['] EMIT >BODY IS EMIT
2950     ." RC5toLCD is running. Type STOP to quit"
2951     PWR_STATE ABORT
2952 ;
2953
2954 CODE START
2955 MOV #$4000,R9
2956 MOV #BACKGROUND,2(R9)
2957 MOV #WARM,R9
2958 MOV #SYS_INIT,2(R9)
2959 MOV R9,R0
2960 ENDCODE 
2961 PWR_STATE
2962
2963 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
2964
2965 MARKER {RC5TOLCD}
2966
2967 [UNDEFINED] @ [IF]
2968 CODE @
2969 MOV @R14,R14
2970 MOV @R13+,R0
2971 ENDCODE
2972 [THEN]
2973
2974 [UNDEFINED] CONSTANT [IF]
2975 : CONSTANT 
2976 CREATE
2977 HI2LO
2978 MOV R14,-2(R10)
2979 MOV @R15+,R14
2980 MOV @R1+,R13
2981 MOV @R13+,R0
2982 ENDCODE
2983 [THEN]
2984
2985 [UNDEFINED] STATE [IF]
2986 $1DBE CONSTANT STATE
2987 [THEN]
2988
2989 [UNDEFINED] = [IF]
2990 CODE =
2991 SUB @R15+,R14
2992 0<> IF
2993     AND #0,R14
2994     MOV @R13+,R0
2995 THEN
2996 XOR #-1,R14
2997 MOV @R13+,R0
2998 ENDCODE
2999 [THEN]
3000
3001 [UNDEFINED] IF [IF]
3002 CODE IF
3003 SUB #2,R15
3004 MOV R14,0(R15)
3005 MOV &$1DC6,R14
3006 ADD #4,&$1DC6
3007 MOV #$4042,0(R14)
3008 ADD #2,R14
3009 MOV @R13+,R0
3010 ENDCODE IMMEDIATE
3011
3012 CODE THEN
3013 MOV &$1DC6,0(R14)
3014 MOV @R15+,R14
3015 MOV @R13+,R0
3016 ENDCODE IMMEDIATE
3017 [THEN]
3018
3019 [UNDEFINED] ELSE [IF]
3020 CODE ELSE
3021 ADD #4,&$1DC6
3022 MOV &$1DC6,R10
3023 MOV #$403E,-4(R10)
3024 MOV R10,0(R14)
3025 SUB #2,R10
3026 MOV R10,R14
3027 MOV @R13+,R0
3028 ENDCODE IMMEDIATE
3029 [THEN]
3030
3031 [UNDEFINED] IS [IF]
3032
3033 CODE DEFER!
3034 MOV @R15+,2(R14)
3035 MOV @R15+,R14
3036 MOV @R13+,R0
3037 ENDCODE
3038
3039
3040 : IS
3041 STATE @
3042 IF  POSTPONE ['] POSTPONE DEFER! 
3043 ELSE ' DEFER! 
3044 THEN
3045 ; IMMEDIATE
3046 [THEN]
3047
3048 [UNDEFINED] >BODY [IF]
3049 CODE >BODY
3050 ADD #4,R14
3051 MOV @R13+,R0
3052 ENDCODE
3053 [THEN]
3054
3055
3056 CODE 20_US
3057 BEGIN
3058     BEGIN
3059         BIT #1,&$3C0
3060     0<> UNTIL
3061     BIC #1,&$3C0
3062     SUB #1,R14
3063 U< UNTIL
3064 MOV @R15+,R14
3065 MOV @R13+,R0
3066 ENDCODE
3067
3068 CODE TOP_LCD
3069     BIS.B #4,&$243
3070     BIT.B #1,&$241
3071 0= IF
3072     AND.B #$0F,R14
3073     MOV.B R14,&$222
3074     BIC.B #4,&$243
3075     MOV @R15+,R14
3076     MOV @R13+,R0
3077 THEN
3078     SUB #2,R15
3079     MOV R14,0(R15)
3080     BIC.B #4,&$243
3081     MOV.B &$220,R14
3082     AND.B #$0F,R14
3083     MOV @R13+,R0
3084 ENDCODE
3085
3086 CODE LCD_WRC
3087     BIS.B #2,&$243
3088 BW1 SUB #2,R15
3089     MOV R14,0(R15)
3090     RRUM #4,R14
3091     BIC.B #1,&$243
3092     BIS.B #$0F,&$224
3093 COLON
3094     TOP_LCD 2 20_US
3095     TOP_LCD 2 20_US 
3096 ;
3097
3098 CODE LCD_WRF
3099     BIC.B #2,&$243
3100     GOTO BW1
3101 ENDCODE
3102
3103 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
3104 : LCD_HOME $02 LCD_WRF 100 20_us ;
3105
3106
3107
3108 ASM WDT_INT
3109 ADD #2,R1
3110 BIT.B #$20,&$240
3111 0= IF
3112     CMP #19,&$3D6
3113     U< IF
3114         ADD #1,&$3D6
3115     THEN
3116 ELSE
3117     BIT.B #$40,&$240
3118     0= IF
3119         CMP #3,&$3D6
3120         U>= IF
3121            SUB #1,&$3D6
3122         THEN
3123     THEN
3124 THEN
3125 BW1
3126 MOV @R1+,R0
3127 ENDASM
3128
3129 ASM RC5_INT
3130 ADD #2,R1
3131 $1806 @ 16000 = [IF]
3132     MOV #1,&$3A0
3133 [THEN]
3134 $1806 @ 24000 = [IF]
3135     MOV #2,&$3A0
3136 [THEN]
3137 MOV #1778,R9
3138 MOV #14,R10
3139 BEGIN
3140 MOV #%1011100100,&$380
3141     RRUM    #1,R9
3142     MOV     R9,R8
3143     RRUM    #1,R8
3144     ADD     R9,R8
3145     BEGIN   CMP R8,&$390
3146     U>= UNTIL
3147     BIT.B   #4,&$200
3148     ADDC    R11,R11
3149     MOV.B   &$200,&$208
3150     BIC.B   #4,&$20C
3151     SUB     #1,R10
3152 0<> WHILE
3153     ADD R9,R8
3154     BEGIN
3155         MOV &$390,R9
3156         CMP R8,R9
3157         U>= IF
3158         BIC #$30,&$380
3159         GOTO BW1
3160         THEN
3161         BIT.B #4,&$20C
3162     0<> UNTIL
3163 REPEAT
3164 BIC #$30,&$380
3165 RLAM    #1,R11
3166 MOV.B   R11,R9
3167 RRUM    #2,R9
3168 BIT     #$4000,R11
3169 0= IF   BIS #$40,R9
3170 THEN
3171 RRUM    #3,R11
3172 XOR     @R1,R11
3173 BIT     #$400,R11
3174 0= ?GOTO BW1
3175 XOR #$400,0(R1)
3176 SUB #8,R15
3177 MOV R14,6(R15)
3178 MOV &$1DDC,4(R15)
3179 MOV #$10,&$1DDC
3180 MOV R9,0(R15)
3181 MOV #0,R14
3182 LO2HI
3183     LCD_CLEAR
3184     <# # #S #36 HOLD #>
3185     ['] LCD_WRC IS EMIT
3186     TYPE
3187     ['] EMIT >BODY IS EMIT
3188 HI2LO
3189 MOV @R15+,&$1DDC
3190 MOV @R15+,R14
3191 MOV @R1+,R0
3192 ENDASM
3193
3194 ASM BACKGROUND
3195 BEGIN
3196     CALL &$1814
3197     BIS &$180A,R2
3198 AGAIN
3199 ENDASM
3200
3201 ASM SYS_OUT
3202     MOV #WARM,R9
3203     ADD #4,R9
3204     MOV R9,R0
3205 ENDASM
3206
3207 CODE STOP
3208 BW1 MOV #$4000,R9
3209     ADD #4,R9
3210     MOV R9,-2(R9)
3211     MOV #WARM,R9
3212     MOV #SYS_OUT,2(R9)
3213     BIC.B #4,&$20A
3214     BIC.B #4,&$20C
3215     MOV #0,&$3C0
3216     MOV #0,&$340
3217     MOV #0,&$342
3218     MOV #COLD,R9
3219     MOV R9,&$FFDE
3220     MOV R9,&$FFEA
3221 COLON
3222 ECHO
3223 ." RC5toLCD is removed,"
3224 ."  type START to restart"
3225  WARM
3226 ;
3227
3228 CODE SYS_INIT
3229 MOV #%10_1101_0100,&$3C0
3230 $1806 @ 16000 = [IF]
3231     MOV #1,&$3E0
3232 [THEN]
3233 $1806 @ 24000 = [IF]
3234     MOV #2,&$3E0
3235 [THEN]
3236     MOV #19,&$3D2
3237 MOV #%0110_0000,&$3C6
3238     MOV #10,&$3D6
3239     BIS.B #$20,&$204
3240     BIS.B #$20,&$20A
3241     BIS.B #7,&$245
3242     BIC.B #7,&$247
3243     BIS.B #$0F,&$224
3244     BIC.B #$0F,&$226
3245     BIS.B #4,&$20A
3246     BIC.B #4,&$20C
3247     MOV #RC5_INT,&$FFDE
3248 MOV #%01_0001_0100,&$340
3249     MOV ##3276,&$352
3250     MOV #%10000,&$342
3251     MOV #WDT_INT,&$FFEA
3252 BIC #1,&$130
3253 BIS.B #3,&$20D
3254 MOV &$1808,R8
3255 CMP #4,R8
3256 0= ?GOTO BW1
3257 COLON
3258     #1000 20_US
3259     %011 TOP_LCD
3260     #205 20_US
3261     %011 TOP_LCD
3262     #5 20_US
3263     %011 TOP_LCD
3264     #2 20_US
3265     %010 TOP_LCD
3266     #2 20_US
3267     %00101000 LCD_WRF
3268     %1000 LCD_WRF
3269     LCD_CLEAR
3270     %0110 LCD_WRF
3271     %1100 LCD_WRF
3272     LCD_CLEAR
3273     ['] LCD_HOME IS CR
3274     ['] LCD_WRC  IS EMIT
3275     CR ." I love you"
3276     ['] CR >BODY IS CR
3277     ['] EMIT >BODY IS EMIT
3278     ." RC5toLCD is running. Type STOP to quit"
3279     PWR_STATE ABORT
3280 ;
3281
3282 CODE START
3283 MOV #$4000,R9
3284 MOV #BACKGROUND,2(R9)
3285 MOV #WARM,R9
3286 MOV #SYS_INIT,2(R9)
3287 MOV R9,R0
3288 ENDCODE 
3289 PWR_STATE
3290
3291 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
3292
3293 MARKER {RC5TOLCD}
3294
3295 [UNDEFINED] @ [IF]
3296 CODE @
3297 MOV @R14,R14
3298 MOV @R13+,R0
3299 ENDCODE
3300 [THEN]
3301
3302 [UNDEFINED] CONSTANT [IF]
3303 : CONSTANT 
3304 CREATE
3305 HI2LO
3306 MOV R14,-2(R10)
3307 MOV @R15+,R14
3308 MOV @R1+,R13
3309 MOV @R13+,R0
3310 ENDCODE
3311 [THEN]
3312
3313 [UNDEFINED] STATE [IF]
3314 $1DBE CONSTANT STATE
3315 [THEN]
3316
3317 [UNDEFINED] = [IF]
3318 CODE =
3319 SUB @R15+,R14
3320 0<> IF
3321     AND #0,R14
3322     MOV @R13+,R0
3323 THEN
3324 XOR #-1,R14
3325 MOV @R13+,R0
3326 ENDCODE
3327 [THEN]
3328
3329 [UNDEFINED] IF [IF]
3330 CODE IF
3331 SUB #2,R15
3332 MOV R14,0(R15)
3333 MOV &$1DC6,R14
3334 ADD #4,&$1DC6
3335 MOV #$4042,0(R14)
3336 ADD #2,R14
3337 MOV @R13+,R0
3338 ENDCODE IMMEDIATE
3339
3340 CODE THEN
3341 MOV &$1DC6,0(R14)
3342 MOV @R15+,R14
3343 MOV @R13+,R0
3344 ENDCODE IMMEDIATE
3345 [THEN]
3346
3347 [UNDEFINED] ELSE [IF]
3348 CODE ELSE
3349 ADD #4,&$1DC6
3350 MOV &$1DC6,R10
3351 MOV #$403E,-4(R10)
3352 MOV R10,0(R14)
3353 SUB #2,R10
3354 MOV R10,R14
3355 MOV @R13+,R0
3356 ENDCODE IMMEDIATE
3357 [THEN]
3358
3359 [UNDEFINED] IS [IF]
3360
3361 CODE DEFER!
3362 MOV @R15+,2(R14)
3363 MOV @R15+,R14
3364 MOV @R13+,R0
3365 ENDCODE
3366
3367
3368 : IS
3369 STATE @
3370 IF  POSTPONE ['] POSTPONE DEFER! 
3371 ELSE ' DEFER! 
3372 THEN
3373 ; IMMEDIATE
3374 [THEN]
3375
3376 [UNDEFINED] >BODY [IF]
3377 CODE >BODY
3378 ADD #4,R14
3379 MOV @R13+,R0
3380 ENDCODE
3381 [THEN]
3382
3383
3384 CODE 20_US
3385 BEGIN
3386     BEGIN
3387         BIT #1,&$3C0
3388     0<> UNTIL
3389     BIC #1,&$3C0
3390     SUB #1,R14
3391 U< UNTIL
3392 MOV @R15+,R14
3393 MOV @R13+,R0
3394 ENDCODE
3395
3396 CODE TOP_LCD
3397     BIS.B #4,&$243
3398     BIT.B #1,&$241
3399 0= IF
3400     AND.B #$0F,R14
3401     MOV.B R14,&$222
3402     BIC.B #4,&$243
3403     MOV @R15+,R14
3404     MOV @R13+,R0
3405 THEN
3406     SUB #2,R15
3407     MOV R14,0(R15)
3408     BIC.B #4,&$243
3409     MOV.B &$220,R14
3410     AND.B #$0F,R14
3411     MOV @R13+,R0
3412 ENDCODE
3413
3414 CODE LCD_WRC
3415     BIS.B #2,&$243
3416 BW1 SUB #2,R15
3417     MOV R14,0(R15)
3418     RRUM #4,R14
3419     BIC.B #1,&$243
3420     BIS.B #$0F,&$224
3421 COLON
3422     TOP_LCD 2 20_US
3423     TOP_LCD 2 20_US 
3424 ;
3425
3426 CODE LCD_WRF
3427     BIC.B #2,&$243
3428     GOTO BW1
3429 ENDCODE
3430
3431 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
3432 : LCD_HOME $02 LCD_WRF 100 20_us ;
3433
3434
3435
3436 ASM WDT_INT
3437 ADD #2,R1
3438 BIT.B #$20,&$240
3439 0= IF
3440     CMP #19,&$3D6
3441     U< IF
3442         ADD #1,&$3D6
3443     THEN
3444 ELSE
3445     BIT.B #$40,&$240
3446     0= IF
3447         CMP #3,&$3D6
3448         U>= IF
3449            SUB #1,&$3D6
3450         THEN
3451     THEN
3452 THEN
3453 BW1
3454 MOV @R1+,R0
3455 ENDASM
3456
3457 ASM RC5_INT
3458 ADD #2,R1
3459 $1806 @ 16000 = [IF]
3460     MOV #1,&$3A0
3461 [THEN]
3462 $1806 @ 24000 = [IF]
3463     MOV #2,&$3A0
3464 [THEN]
3465 MOV #1778,R9
3466 MOV #14,R10
3467 BEGIN
3468 MOV #%1011100100,&$380
3469     RRUM    #1,R9
3470     MOV     R9,R8
3471     RRUM    #1,R8
3472     ADD     R9,R8
3473     BEGIN   CMP R8,&$390
3474     U>= UNTIL
3475     BIT.B   #4,&$200
3476     ADDC    R11,R11
3477     MOV.B   &$200,&$208
3478     BIC.B   #4,&$20C
3479     SUB     #1,R10
3480 0<> WHILE
3481     ADD R9,R8
3482     BEGIN
3483         MOV &$390,R9
3484         CMP R8,R9
3485         U>= IF
3486         BIC #$30,&$380
3487         GOTO BW1
3488         THEN
3489         BIT.B #4,&$20C
3490     0<> UNTIL
3491 REPEAT
3492 BIC #$30,&$380
3493 RLAM    #1,R11
3494 MOV.B   R11,R9
3495 RRUM    #2,R9
3496 BIT     #$4000,R11
3497 0= IF   BIS #$40,R9
3498 THEN
3499 RRUM    #3,R11
3500 XOR     @R1,R11
3501 BIT     #$400,R11
3502 0= ?GOTO BW1
3503 XOR #$400,0(R1)
3504 SUB #8,R15
3505 MOV R14,6(R15)
3506 MOV &$1DDC,4(R15)
3507 MOV #$10,&$1DDC
3508 MOV R9,0(R15)
3509 MOV #0,R14
3510 LO2HI
3511     LCD_CLEAR
3512     <# # #S #36 HOLD #>
3513     ['] LCD_WRC IS EMIT
3514     TYPE
3515     ['] EMIT >BODY IS EMIT
3516 HI2LO
3517 MOV @R15+,&$1DDC
3518 MOV @R15+,R14
3519 MOV @R1+,R0
3520 ENDASM
3521
3522 ASM BACKGROUND
3523 BEGIN
3524     CALL &$1814
3525     BIS &$180A,R2
3526 AGAIN
3527 ENDASM
3528
3529 ASM SYS_OUT
3530     MOV #WARM,R9
3531     ADD #4,R9
3532     MOV R9,R0
3533 ENDASM
3534
3535 CODE STOP
3536 BW1 MOV #$4000,R9
3537     ADD #4,R9
3538     MOV R9,-2(R9)
3539     MOV #WARM,R9
3540     MOV #SYS_OUT,2(R9)
3541     BIC.B #4,&$20A
3542     BIC.B #4,&$20C
3543     MOV #0,&$3C0
3544     MOV #0,&$340
3545     MOV #0,&$342
3546     MOV #COLD,R9
3547     MOV R9,&$FFDE
3548     MOV R9,&$FFEA
3549 COLON
3550 ECHO
3551 ." RC5toLCD is removed,"
3552 ."  type START to restart"
3553  WARM
3554 ;
3555
3556 CODE SYS_INIT
3557 MOV #%10_1101_0100,&$3C0
3558 $1806 @ 16000 = [IF]
3559     MOV #1,&$3E0
3560 [THEN]
3561 $1806 @ 24000 = [IF]
3562     MOV #2,&$3E0
3563 [THEN]
3564     MOV #19,&$3D2
3565 MOV #%0110_0000,&$3C6
3566     MOV #10,&$3D6
3567     BIS.B #$20,&$204
3568     BIS.B #$20,&$20A
3569     BIS.B #7,&$245
3570     BIC.B #7,&$247
3571     BIS.B #$0F,&$224
3572     BIC.B #$0F,&$226
3573     BIS.B #4,&$20A
3574     BIC.B #4,&$20C
3575     MOV #RC5_INT,&$FFDE
3576 MOV #%01_0001_0100,&$340
3577     MOV ##3276,&$352
3578     MOV #%10000,&$342
3579     MOV #WDT_INT,&$FFEA
3580 BIC #1,&$130
3581 BIS.B #3,&$20D
3582 MOV &$1808,R8
3583 CMP #4,R8
3584 0= ?GOTO BW1
3585 COLON
3586     #1000 20_US
3587     %011 TOP_LCD
3588     #205 20_US
3589     %011 TOP_LCD
3590     #5 20_US
3591     %011 TOP_LCD
3592     #2 20_US
3593     %010 TOP_LCD
3594     #2 20_US
3595     %00101000 LCD_WRF
3596     %1000 LCD_WRF
3597     LCD_CLEAR
3598     %0110 LCD_WRF
3599     %1100 LCD_WRF
3600     LCD_CLEAR
3601     ['] LCD_HOME IS CR
3602     ['] LCD_WRC  IS EMIT
3603     CR ." I love you"
3604     ['] CR >BODY IS CR
3605     ['] EMIT >BODY IS EMIT
3606     ." RC5toLCD is running. Type STOP to quit"
3607     PWR_STATE ABORT
3608 ;
3609
3610 CODE START
3611 MOV #$4000,R9
3612 MOV #BACKGROUND,2(R9)
3613 MOV #WARM,R9
3614 MOV #SYS_INIT,2(R9)
3615 MOV R9,R0
3616 ENDCODE 
3617 PWR_STATE
3618
3619 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
3620
3621 MARKER {RC5TOLCD}
3622
3623 [UNDEFINED] @ [IF]
3624 CODE @
3625 MOV @R14,R14
3626 MOV @R13+,R0
3627 ENDCODE
3628 [THEN]
3629
3630 [UNDEFINED] CONSTANT [IF]
3631 : CONSTANT 
3632 CREATE
3633 HI2LO
3634 MOV R14,-2(R10)
3635 MOV @R15+,R14
3636 MOV @R1+,R13
3637 MOV @R13+,R0
3638 ENDCODE
3639 [THEN]
3640
3641 [UNDEFINED] STATE [IF]
3642 $1DBE CONSTANT STATE
3643 [THEN]
3644
3645 [UNDEFINED] = [IF]
3646 CODE =
3647 SUB @R15+,R14
3648 0<> IF
3649     AND #0,R14
3650     MOV @R13+,R0
3651 THEN
3652 XOR #-1,R14
3653 MOV @R13+,R0
3654 ENDCODE
3655 [THEN]
3656
3657 [UNDEFINED] IF [IF]
3658 CODE IF
3659 SUB #2,R15
3660 MOV R14,0(R15)
3661 MOV &$1DC6,R14
3662 ADD #4,&$1DC6
3663 MOV #$4042,0(R14)
3664 ADD #2,R14
3665 MOV @R13+,R0
3666 ENDCODE IMMEDIATE
3667
3668 CODE THEN
3669 MOV &$1DC6,0(R14)
3670 MOV @R15+,R14
3671 MOV @R13+,R0
3672 ENDCODE IMMEDIATE
3673 [THEN]
3674
3675 [UNDEFINED] ELSE [IF]
3676 CODE ELSE
3677 ADD #4,&$1DC6
3678 MOV &$1DC6,R10
3679 MOV #$403E,-4(R10)
3680 MOV R10,0(R14)
3681 SUB #2,R10
3682 MOV R10,R14
3683 MOV @R13+,R0
3684 ENDCODE IMMEDIATE
3685 [THEN]
3686
3687 [UNDEFINED] IS [IF]
3688
3689 CODE DEFER!
3690 MOV @R15+,2(R14)
3691 MOV @R15+,R14
3692 MOV @R13+,R0
3693 ENDCODE
3694
3695
3696 : IS
3697 STATE @
3698 IF  POSTPONE ['] POSTPONE DEFER! 
3699 ELSE ' DEFER! 
3700 THEN
3701 ; IMMEDIATE
3702 [THEN]
3703
3704 [UNDEFINED] >BODY [IF]
3705 CODE >BODY
3706 ADD #4,R14
3707 MOV @R13+,R0
3708 ENDCODE
3709 [THEN]
3710
3711
3712 CODE 20_US
3713 BEGIN
3714     BEGIN
3715         BIT #1,&$3C0
3716     0<> UNTIL
3717     BIC #1,&$3C0
3718     SUB #1,R14
3719 U< UNTIL
3720 MOV @R15+,R14
3721 MOV @R13+,R0
3722 ENDCODE
3723
3724 CODE TOP_LCD
3725     BIS.B #4,&$243
3726     BIT.B #1,&$241
3727 0= IF
3728     AND.B #$0F,R14
3729     MOV.B R14,&$222
3730     BIC.B #4,&$243
3731     MOV @R15+,R14
3732     MOV @R13+,R0
3733 THEN
3734     SUB #2,R15
3735     MOV R14,0(R15)
3736     BIC.B #4,&$243
3737     MOV.B &$220,R14
3738     AND.B #$0F,R14
3739     MOV @R13+,R0
3740 ENDCODE
3741
3742 CODE LCD_WRC
3743     BIS.B #2,&$243
3744 BW1 SUB #2,R15
3745     MOV R14,0(R15)
3746     RRUM #4,R14
3747     BIC.B #1,&$243
3748     BIS.B #$0F,&$224
3749 COLON
3750     TOP_LCD 2 20_US
3751     TOP_LCD 2 20_US 
3752 ;
3753
3754 CODE LCD_WRF
3755     BIC.B #2,&$243
3756     GOTO BW1
3757 ENDCODE
3758
3759 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
3760 : LCD_HOME $02 LCD_WRF 100 20_us ;
3761
3762
3763
3764 ASM WDT_INT
3765 ADD #2,R1
3766 BIT.B #$20,&$240
3767 0= IF
3768     CMP #19,&$3D6
3769     U< IF
3770         ADD #1,&$3D6
3771     THEN
3772 ELSE
3773     BIT.B #$40,&$240
3774     0= IF
3775         CMP #3,&$3D6
3776         U>= IF
3777            SUB #1,&$3D6
3778         THEN
3779     THEN
3780 THEN
3781 BW1
3782 MOV @R1+,R0
3783 ENDASM
3784
3785 ASM RC5_INT
3786 ADD #2,R1
3787 $1806 @ 16000 = [IF]
3788     MOV #1,&$3A0
3789 [THEN]
3790 $1806 @ 24000 = [IF]
3791     MOV #2,&$3A0
3792 [THEN]
3793 MOV #1778,R9
3794 MOV #14,R10
3795 BEGIN
3796 MOV #%1011100100,&$380
3797     RRUM    #1,R9
3798     MOV     R9,R8
3799     RRUM    #1,R8
3800     ADD     R9,R8
3801     BEGIN   CMP R8,&$390
3802     U>= UNTIL
3803     BIT.B   #4,&$200
3804     ADDC    R11,R11
3805     MOV.B   &$200,&$208
3806     BIC.B   #4,&$20C
3807     SUB     #1,R10
3808 0<> WHILE
3809     ADD R9,R8
3810     BEGIN
3811         MOV &$390,R9
3812         CMP R8,R9
3813         U>= IF
3814         BIC #$30,&$380
3815         GOTO BW1
3816         THEN
3817         BIT.B #4,&$20C
3818     0<> UNTIL
3819 REPEAT
3820 BIC #$30,&$380
3821 RLAM    #1,R11
3822 MOV.B   R11,R9
3823 RRUM    #2,R9
3824 BIT     #$4000,R11
3825 0= IF   BIS #$40,R9
3826 THEN
3827 RRUM    #3,R11
3828 XOR     @R1,R11
3829 BIT     #$400,R11
3830 0= ?GOTO BW1
3831 XOR #$400,0(R1)
3832 SUB #8,R15
3833 MOV R14,6(R15)
3834 MOV &$1DDC,4(R15)
3835 MOV #$10,&$1DDC
3836 MOV R9,0(R15)
3837 MOV #0,R14
3838 LO2HI
3839     LCD_CLEAR
3840     <# # #S #36 HOLD #>
3841     ['] LCD_WRC IS EMIT
3842     TYPE
3843     ['] EMIT >BODY IS EMIT
3844 HI2LO
3845 MOV @R15+,&$1DDC
3846 MOV @R15+,R14
3847 MOV @R1+,R0
3848 ENDASM
3849
3850 ASM BACKGROUND
3851 BEGIN
3852     CALL &$1814
3853     BIS &$180A,R2
3854 AGAIN
3855 ENDASM
3856
3857 ASM SYS_OUT
3858     MOV #WARM,R9
3859     ADD #4,R9
3860     MOV R9,R0
3861 ENDASM
3862
3863 CODE STOP
3864 BW1 MOV #$4000,R9
3865     ADD #4,R9
3866     MOV R9,-2(R9)
3867     MOV #WARM,R9
3868     MOV #SYS_OUT,2(R9)
3869     BIC.B #4,&$20A
3870     BIC.B #4,&$20C
3871     MOV #0,&$3C0
3872     MOV #0,&$340
3873     MOV #0,&$342
3874     MOV #COLD,R9
3875     MOV R9,&$FFDE
3876     MOV R9,&$FFEA
3877 COLON
3878 ECHO
3879 ." RC5toLCD is removed,"
3880 ."  type START to restart"
3881  WARM
3882 ;
3883
3884 CODE SYS_INIT
3885 MOV #%10_1101_0100,&$3C0
3886 $1806 @ 16000 = [IF]
3887     MOV #1,&$3E0
3888 [THEN]
3889 $1806 @ 24000 = [IF]
3890     MOV #2,&$3E0
3891 [THEN]
3892     MOV #19,&$3D2
3893 MOV #%0110_0000,&$3C6
3894     MOV #10,&$3D6
3895     BIS.B #$20,&$204
3896     BIS.B #$20,&$20A
3897     BIS.B #7,&$245
3898     BIC.B #7,&$247
3899     BIS.B #$0F,&$224
3900     BIC.B #$0F,&$226
3901     BIS.B #4,&$20A
3902     BIC.B #4,&$20C
3903     MOV #RC5_INT,&$FFDE
3904 MOV #%01_0001_0100,&$340
3905     MOV ##3276,&$352
3906     MOV #%10000,&$342
3907     MOV #WDT_INT,&$FFEA
3908 BIC #1,&$130
3909 BIS.B #3,&$20D
3910 MOV &$1808,R8
3911 CMP #4,R8
3912 0= ?GOTO BW1
3913 COLON
3914     #1000 20_US
3915     %011 TOP_LCD
3916     #205 20_US
3917     %011 TOP_LCD
3918     #5 20_US
3919     %011 TOP_LCD
3920     #2 20_US
3921     %010 TOP_LCD
3922     #2 20_US
3923     %00101000 LCD_WRF
3924     %1000 LCD_WRF
3925     LCD_CLEAR
3926     %0110 LCD_WRF
3927     %1100 LCD_WRF
3928     LCD_CLEAR
3929     ['] LCD_HOME IS CR
3930     ['] LCD_WRC  IS EMIT
3931     CR ." I love you"
3932     ['] CR >BODY IS CR
3933     ['] EMIT >BODY IS EMIT
3934     ." RC5toLCD is running. Type STOP to quit"
3935     PWR_STATE ABORT
3936 ;
3937
3938 CODE START
3939 MOV #$4000,R9
3940 MOV #BACKGROUND,2(R9)
3941 MOV #WARM,R9
3942 MOV #SYS_INIT,2(R9)
3943 MOV R9,R0
3944 ENDCODE 
3945 PWR_STATE
3946
3947 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
3948
3949 MARKER {RC5TOLCD}
3950
3951 [UNDEFINED] @ [IF]
3952 CODE @
3953 MOV @R14,R14
3954 MOV @R13+,R0
3955 ENDCODE
3956 [THEN]
3957
3958 [UNDEFINED] CONSTANT [IF]
3959 : CONSTANT 
3960 CREATE
3961 HI2LO
3962 MOV R14,-2(R10)
3963 MOV @R15+,R14
3964 MOV @R1+,R13
3965 MOV @R13+,R0
3966 ENDCODE
3967 [THEN]
3968
3969 [UNDEFINED] STATE [IF]
3970 $1DBE CONSTANT STATE
3971 [THEN]
3972
3973 [UNDEFINED] = [IF]
3974 CODE =
3975 SUB @R15+,R14
3976 0<> IF
3977     AND #0,R14
3978     MOV @R13+,R0
3979 THEN
3980 XOR #-1,R14
3981 MOV @R13+,R0
3982 ENDCODE
3983 [THEN]
3984
3985 [UNDEFINED] IF [IF]
3986 CODE IF
3987 SUB #2,R15
3988 MOV R14,0(R15)
3989 MOV &$1DC6,R14
3990 ADD #4,&$1DC6
3991 MOV #$4042,0(R14)
3992 ADD #2,R14
3993 MOV @R13+,R0
3994 ENDCODE IMMEDIATE
3995
3996 CODE THEN
3997 MOV &$1DC6,0(R14)
3998 MOV @R15+,R14
3999 MOV @R13+,R0
4000 ENDCODE IMMEDIATE
4001 [THEN]
4002
4003 [UNDEFINED] ELSE [IF]
4004 CODE ELSE
4005 ADD #4,&$1DC6
4006 MOV &$1DC6,R10
4007 MOV #$403E,-4(R10)
4008 MOV R10,0(R14)
4009 SUB #2,R10
4010 MOV R10,R14
4011 MOV @R13+,R0
4012 ENDCODE IMMEDIATE
4013 [THEN]
4014
4015 [UNDEFINED] IS [IF]
4016
4017 CODE DEFER!
4018 MOV @R15+,2(R14)
4019 MOV @R15+,R14
4020 MOV @R13+,R0
4021 ENDCODE
4022
4023
4024 : IS
4025 STATE @
4026 IF  POSTPONE ['] POSTPONE DEFER! 
4027 ELSE ' DEFER! 
4028 THEN
4029 ; IMMEDIATE
4030 [THEN]
4031
4032 [UNDEFINED] >BODY [IF]
4033 CODE >BODY
4034 ADD #4,R14
4035 MOV @R13+,R0
4036 ENDCODE
4037 [THEN]
4038
4039
4040 CODE 20_US
4041 BEGIN
4042     BEGIN
4043         BIT #1,&$3C0
4044     0<> UNTIL
4045     BIC #1,&$3C0
4046     SUB #1,R14
4047 U< UNTIL
4048 MOV @R15+,R14
4049 MOV @R13+,R0
4050 ENDCODE
4051
4052 CODE TOP_LCD
4053     BIS.B #4,&$243
4054     BIT.B #1,&$241
4055 0= IF
4056     AND.B #$0F,R14
4057     MOV.B R14,&$222
4058     BIC.B #4,&$243
4059     MOV @R15+,R14
4060     MOV @R13+,R0
4061 THEN
4062     SUB #2,R15
4063     MOV R14,0(R15)
4064     BIC.B #4,&$243
4065     MOV.B &$220,R14
4066     AND.B #$0F,R14
4067     MOV @R13+,R0
4068 ENDCODE
4069
4070 CODE LCD_WRC
4071     BIS.B #2,&$243
4072 BW1 SUB #2,R15
4073     MOV R14,0(R15)
4074     RRUM #4,R14
4075     BIC.B #1,&$243
4076     BIS.B #$0F,&$224
4077 COLON
4078     TOP_LCD 2 20_US
4079     TOP_LCD 2 20_US 
4080 ;
4081
4082 CODE LCD_WRF
4083     BIC.B #2,&$243
4084     GOTO BW1
4085 ENDCODE
4086
4087 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
4088 : LCD_HOME $02 LCD_WRF 100 20_us ;
4089
4090
4091
4092 ASM WDT_INT
4093 ADD #2,R1
4094 BIT.B #$20,&$240
4095 0= IF
4096     CMP #19,&$3D6
4097     U< IF
4098         ADD #1,&$3D6
4099     THEN
4100 ELSE
4101     BIT.B #$40,&$240
4102     0= IF
4103         CMP #3,&$3D6
4104         U>= IF
4105            SUB #1,&$3D6
4106         THEN
4107     THEN
4108 THEN
4109 BW1
4110 MOV @R1+,R0
4111 ENDASM
4112
4113 ASM RC5_INT
4114 ADD #2,R1
4115 $1806 @ 16000 = [IF]
4116     MOV #1,&$3A0
4117 [THEN]
4118 $1806 @ 24000 = [IF]
4119     MOV #2,&$3A0
4120 [THEN]
4121 MOV #1778,R9
4122 MOV #14,R10
4123 BEGIN
4124 MOV #%1011100100,&$380
4125     RRUM    #1,R9
4126     MOV     R9,R8
4127     RRUM    #1,R8
4128     ADD     R9,R8
4129     BEGIN   CMP R8,&$390
4130     U>= UNTIL
4131     BIT.B   #4,&$200
4132     ADDC    R11,R11
4133     MOV.B   &$200,&$208
4134     BIC.B   #4,&$20C
4135     SUB     #1,R10
4136 0<> WHILE
4137     ADD R9,R8
4138     BEGIN
4139         MOV &$390,R9
4140         CMP R8,R9
4141         U>= IF
4142         BIC #$30,&$380
4143         GOTO BW1
4144         THEN
4145         BIT.B #4,&$20C
4146     0<> UNTIL
4147 REPEAT
4148 BIC #$30,&$380
4149 RLAM    #1,R11
4150 MOV.B   R11,R9
4151 RRUM    #2,R9
4152 BIT     #$4000,R11
4153 0= IF   BIS #$40,R9
4154 THEN
4155 RRUM    #3,R11
4156 XOR     @R1,R11
4157 BIT     #$400,R11
4158 0= ?GOTO BW1
4159 XOR #$400,0(R1)
4160 SUB #8,R15
4161 MOV R14,6(R15)
4162 MOV &$1DDC,4(R15)
4163 MOV #$10,&$1DDC
4164 MOV R9,0(R15)
4165 MOV #0,R14
4166 LO2HI
4167     LCD_CLEAR
4168     <# # #S #36 HOLD #>
4169     ['] LCD_WRC IS EMIT
4170     TYPE
4171     ['] EMIT >BODY IS EMIT
4172 HI2LO
4173 MOV @R15+,&$1DDC
4174 MOV @R15+,R14
4175 MOV @R1+,R0
4176 ENDASM
4177
4178 ASM BACKGROUND
4179 BEGIN
4180     CALL &$1814
4181     BIS &$180A,R2
4182 AGAIN
4183 ENDASM
4184
4185 ASM SYS_OUT
4186     MOV #WARM,R9
4187     ADD #4,R9
4188     MOV R9,R0
4189 ENDASM
4190
4191 CODE STOP
4192 BW1 MOV #$4000,R9
4193     ADD #4,R9
4194     MOV R9,-2(R9)
4195     MOV #WARM,R9
4196     MOV #SYS_OUT,2(R9)
4197     BIC.B #4,&$20A
4198     BIC.B #4,&$20C
4199     MOV #0,&$3C0
4200     MOV #0,&$340
4201     MOV #0,&$342
4202     MOV #COLD,R9
4203     MOV R9,&$FFDE
4204     MOV R9,&$FFEA
4205 COLON
4206 ECHO
4207 ." RC5toLCD is removed,"
4208 ."  type START to restart"
4209  WARM
4210 ;
4211
4212 CODE SYS_INIT
4213 MOV #%10_1101_0100,&$3C0
4214 $1806 @ 16000 = [IF]
4215     MOV #1,&$3E0
4216 [THEN]
4217 $1806 @ 24000 = [IF]
4218     MOV #2,&$3E0
4219 [THEN]
4220     MOV #19,&$3D2
4221 MOV #%0110_0000,&$3C6
4222     MOV #10,&$3D6
4223     BIS.B #$20,&$204
4224     BIS.B #$20,&$20A
4225     BIS.B #7,&$245
4226     BIC.B #7,&$247
4227     BIS.B #$0F,&$224
4228     BIC.B #$0F,&$226
4229     BIS.B #4,&$20A
4230     BIC.B #4,&$20C
4231     MOV #RC5_INT,&$FFDE
4232 MOV #%01_0001_0100,&$340
4233     MOV ##3276,&$352
4234     MOV #%10000,&$342
4235     MOV #WDT_INT,&$FFEA
4236 BIC #1,&$130
4237 BIS.B #3,&$20D
4238 MOV &$1808,R8
4239 CMP #4,R8
4240 0= ?GOTO BW1
4241 COLON
4242     #1000 20_US
4243     %011 TOP_LCD
4244     #205 20_US
4245     %011 TOP_LCD
4246     #5 20_US
4247     %011 TOP_LCD
4248     #2 20_US
4249     %010 TOP_LCD
4250     #2 20_US
4251     %00101000 LCD_WRF
4252     %1000 LCD_WRF
4253     LCD_CLEAR
4254     %0110 LCD_WRF
4255     %1100 LCD_WRF
4256     LCD_CLEAR
4257     ['] LCD_HOME IS CR
4258     ['] LCD_WRC  IS EMIT
4259     CR ." I love you"
4260     ['] CR >BODY IS CR
4261     ['] EMIT >BODY IS EMIT
4262     ." RC5toLCD is running. Type STOP to quit"
4263     PWR_STATE ABORT
4264 ;
4265
4266 CODE START
4267 MOV #$4000,R9
4268 MOV #BACKGROUND,2(R9)
4269 MOV #WARM,R9
4270 MOV #SYS_INIT,2(R9)
4271 MOV R9,R0
4272 ENDCODE 
4273 PWR_STATE
4274
4275 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
4276
4277 MARKER {RC5TOLCD}
4278
4279 [UNDEFINED] @ [IF]
4280 CODE @
4281 MOV @R14,R14
4282 MOV @R13+,R0
4283 ENDCODE
4284 [THEN]
4285
4286 [UNDEFINED] CONSTANT [IF]
4287 : CONSTANT 
4288 CREATE
4289 HI2LO
4290 MOV R14,-2(R10)
4291 MOV @R15+,R14
4292 MOV @R1+,R13
4293 MOV @R13+,R0
4294 ENDCODE
4295 [THEN]
4296
4297 [UNDEFINED] STATE [IF]
4298 $1DBE CONSTANT STATE
4299 [THEN]
4300
4301 [UNDEFINED] = [IF]
4302 CODE =
4303 SUB @R15+,R14
4304 0<> IF
4305     AND #0,R14
4306     MOV @R13+,R0
4307 THEN
4308 XOR #-1,R14
4309 MOV @R13+,R0
4310 ENDCODE
4311 [THEN]
4312
4313 [UNDEFINED] IF [IF]
4314 CODE IF
4315 SUB #2,R15
4316 MOV R14,0(R15)
4317 MOV &$1DC6,R14
4318 ADD #4,&$1DC6
4319 MOV #$4042,0(R14)
4320 ADD #2,R14
4321 MOV @R13+,R0
4322 ENDCODE IMMEDIATE
4323
4324 CODE THEN
4325 MOV &$1DC6,0(R14)
4326 MOV @R15+,R14
4327 MOV @R13+,R0
4328 ENDCODE IMMEDIATE
4329 [THEN]
4330
4331 [UNDEFINED] ELSE [IF]
4332 CODE ELSE
4333 ADD #4,&$1DC6
4334 MOV &$1DC6,R10
4335 MOV #$403E,-4(R10)
4336 MOV R10,0(R14)
4337 SUB #2,R10
4338 MOV R10,R14
4339 MOV @R13+,R0
4340 ENDCODE IMMEDIATE
4341 [THEN]
4342
4343 [UNDEFINED] IS [IF]
4344
4345 CODE DEFER!
4346 MOV @R15+,2(R14)
4347 MOV @R15+,R14
4348 MOV @R13+,R0
4349 ENDCODE
4350
4351
4352 : IS
4353 STATE @
4354 IF  POSTPONE ['] POSTPONE DEFER! 
4355 ELSE ' DEFER! 
4356 THEN
4357 ; IMMEDIATE
4358 [THEN]
4359
4360 [UNDEFINED] >BODY [IF]
4361 CODE >BODY
4362 ADD #4,R14
4363 MOV @R13+,R0
4364 ENDCODE
4365 [THEN]
4366
4367
4368 CODE 20_US
4369 BEGIN
4370     BEGIN
4371         BIT #1,&$3C0
4372     0<> UNTIL
4373     BIC #1,&$3C0
4374     SUB #1,R14
4375 U< UNTIL
4376 MOV @R15+,R14
4377 MOV @R13+,R0
4378 ENDCODE
4379
4380 CODE TOP_LCD
4381     BIS.B #4,&$243
4382     BIT.B #1,&$241
4383 0= IF
4384     AND.B #$0F,R14
4385     MOV.B R14,&$222
4386     BIC.B #4,&$243
4387     MOV @R15+,R14
4388     MOV @R13+,R0
4389 THEN
4390     SUB #2,R15
4391     MOV R14,0(R15)
4392     BIC.B #4,&$243
4393     MOV.B &$220,R14
4394     AND.B #$0F,R14
4395     MOV @R13+,R0
4396 ENDCODE
4397
4398 CODE LCD_WRC
4399     BIS.B #2,&$243
4400 BW1 SUB #2,R15
4401     MOV R14,0(R15)
4402     RRUM #4,R14
4403     BIC.B #1,&$243
4404     BIS.B #$0F,&$224
4405 COLON
4406     TOP_LCD 2 20_US
4407     TOP_LCD 2 20_US 
4408 ;
4409
4410 CODE LCD_WRF
4411     BIC.B #2,&$243
4412     GOTO BW1
4413 ENDCODE
4414
4415 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
4416 : LCD_HOME $02 LCD_WRF 100 20_us ;
4417
4418
4419
4420 ASM WDT_INT
4421 ADD #2,R1
4422 BIT.B #$20,&$240
4423 0= IF
4424     CMP #19,&$3D6
4425     U< IF
4426         ADD #1,&$3D6
4427     THEN
4428 ELSE
4429     BIT.B #$40,&$240
4430     0= IF
4431         CMP #3,&$3D6
4432         U>= IF
4433            SUB #1,&$3D6
4434         THEN
4435     THEN
4436 THEN
4437 BW1
4438 MOV @R1+,R0
4439 ENDASM
4440
4441 ASM RC5_INT
4442 ADD #2,R1
4443 $1806 @ 16000 = [IF]
4444     MOV #1,&$3A0
4445 [THEN]
4446 $1806 @ 24000 = [IF]
4447     MOV #2,&$3A0
4448 [THEN]
4449 MOV #1778,R9
4450 MOV #14,R10
4451 BEGIN
4452 MOV #%1011100100,&$380
4453     RRUM    #1,R9
4454     MOV     R9,R8
4455     RRUM    #1,R8
4456     ADD     R9,R8
4457     BEGIN   CMP R8,&$390
4458     U>= UNTIL
4459     BIT.B   #4,&$200
4460     ADDC    R11,R11
4461     MOV.B   &$200,&$208
4462     BIC.B   #4,&$20C
4463     SUB     #1,R10
4464 0<> WHILE
4465     ADD R9,R8
4466     BEGIN
4467         MOV &$390,R9
4468         CMP R8,R9
4469         U>= IF
4470         BIC #$30,&$380
4471         GOTO BW1
4472         THEN
4473         BIT.B #4,&$20C
4474     0<> UNTIL
4475 REPEAT
4476 BIC #$30,&$380
4477 RLAM    #1,R11
4478 MOV.B   R11,R9
4479 RRUM    #2,R9
4480 BIT     #$4000,R11
4481 0= IF   BIS #$40,R9
4482 THEN
4483 RRUM    #3,R11
4484 XOR     @R1,R11
4485 BIT     #$400,R11
4486 0= ?GOTO BW1
4487 XOR #$400,0(R1)
4488 SUB #8,R15
4489 MOV R14,6(R15)
4490 MOV &$1DDC,4(R15)
4491 MOV #$10,&$1DDC
4492 MOV R9,0(R15)
4493 MOV #0,R14
4494 LO2HI
4495     LCD_CLEAR
4496     <# # #S #36 HOLD #>
4497     ['] LCD_WRC IS EMIT
4498     TYPE
4499     ['] EMIT >BODY IS EMIT
4500 HI2LO
4501 MOV @R15+,&$1DDC
4502 MOV @R15+,R14
4503 MOV @R1+,R0
4504 ENDASM
4505
4506 ASM BACKGROUND
4507 BEGIN
4508     CALL &$1814
4509     BIS &$180A,R2
4510 AGAIN
4511 ENDASM
4512
4513 ASM SYS_OUT
4514     MOV #WARM,R9
4515     ADD #4,R9
4516     MOV R9,R0
4517 ENDASM
4518
4519 CODE STOP
4520 BW1 MOV #$4000,R9
4521     ADD #4,R9
4522     MOV R9,-2(R9)
4523     MOV #WARM,R9
4524     MOV #SYS_OUT,2(R9)
4525     BIC.B #4,&$20A
4526     BIC.B #4,&$20C
4527     MOV #0,&$3C0
4528     MOV #0,&$340
4529     MOV #0,&$342
4530     MOV #COLD,R9
4531     MOV R9,&$FFDE
4532     MOV R9,&$FFEA
4533 COLON
4534 ECHO
4535 ." RC5toLCD is removed,"
4536 ."  type START to restart"
4537  WARM
4538 ;
4539
4540 CODE SYS_INIT
4541 MOV #%10_1101_0100,&$3C0
4542 $1806 @ 16000 = [IF]
4543     MOV #1,&$3E0
4544 [THEN]
4545 $1806 @ 24000 = [IF]
4546     MOV #2,&$3E0
4547 [THEN]
4548     MOV #19,&$3D2
4549 MOV #%0110_0000,&$3C6
4550     MOV #10,&$3D6
4551     BIS.B #$20,&$204
4552     BIS.B #$20,&$20A
4553     BIS.B #7,&$245
4554     BIC.B #7,&$247
4555     BIS.B #$0F,&$224
4556     BIC.B #$0F,&$226
4557     BIS.B #4,&$20A
4558     BIC.B #4,&$20C
4559     MOV #RC5_INT,&$FFDE
4560 MOV #%01_0001_0100,&$340
4561     MOV ##3276,&$352
4562     MOV #%10000,&$342
4563     MOV #WDT_INT,&$FFEA
4564 BIC #1,&$130
4565 BIS.B #3,&$20D
4566 MOV &$1808,R8
4567 CMP #4,R8
4568 0= ?GOTO BW1
4569 COLON
4570     #1000 20_US
4571     %011 TOP_LCD
4572     #205 20_US
4573     %011 TOP_LCD
4574     #5 20_US
4575     %011 TOP_LCD
4576     #2 20_US
4577     %010 TOP_LCD
4578     #2 20_US
4579     %00101000 LCD_WRF
4580     %1000 LCD_WRF
4581     LCD_CLEAR
4582     %0110 LCD_WRF
4583     %1100 LCD_WRF
4584     LCD_CLEAR
4585     ['] LCD_HOME IS CR
4586     ['] LCD_WRC  IS EMIT
4587     CR ." I love you"
4588     ['] CR >BODY IS CR
4589     ['] EMIT >BODY IS EMIT
4590     ." RC5toLCD is running. Type STOP to quit"
4591     PWR_STATE ABORT
4592 ;
4593
4594 CODE START
4595 MOV #$4000,R9
4596 MOV #BACKGROUND,2(R9)
4597 MOV #WARM,R9
4598 MOV #SYS_INIT,2(R9)
4599 MOV R9,R0
4600 ENDCODE 
4601 PWR_STATE
4602
4603 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
4604
4605 MARKER {RC5TOLCD}
4606
4607 [UNDEFINED] @ [IF]
4608 CODE @
4609 MOV @R14,R14
4610 MOV @R13+,R0
4611 ENDCODE
4612 [THEN]
4613
4614 [UNDEFINED] CONSTANT [IF]
4615 : CONSTANT 
4616 CREATE
4617 HI2LO
4618 MOV R14,-2(R10)
4619 MOV @R15+,R14
4620 MOV @R1+,R13
4621 MOV @R13+,R0
4622 ENDCODE
4623 [THEN]
4624
4625 [UNDEFINED] STATE [IF]
4626 $1DBE CONSTANT STATE
4627 [THEN]
4628
4629 [UNDEFINED] = [IF]
4630 CODE =
4631 SUB @R15+,R14
4632 0<> IF
4633     AND #0,R14
4634     MOV @R13+,R0
4635 THEN
4636 XOR #-1,R14
4637 MOV @R13+,R0
4638 ENDCODE
4639 [THEN]
4640
4641 [UNDEFINED] IF [IF]
4642 CODE IF
4643 SUB #2,R15
4644 MOV R14,0(R15)
4645 MOV &$1DC6,R14
4646 ADD #4,&$1DC6
4647 MOV #$4042,0(R14)
4648 ADD #2,R14
4649 MOV @R13+,R0
4650 ENDCODE IMMEDIATE
4651
4652 CODE THEN
4653 MOV &$1DC6,0(R14)
4654 MOV @R15+,R14
4655 MOV @R13+,R0
4656 ENDCODE IMMEDIATE
4657 [THEN]
4658
4659 [UNDEFINED] ELSE [IF]
4660 CODE ELSE
4661 ADD #4,&$1DC6
4662 MOV &$1DC6,R10
4663 MOV #$403E,-4(R10)
4664 MOV R10,0(R14)
4665 SUB #2,R10
4666 MOV R10,R14
4667 MOV @R13+,R0
4668 ENDCODE IMMEDIATE
4669 [THEN]
4670
4671 [UNDEFINED] IS [IF]
4672
4673 CODE DEFER!
4674 MOV @R15+,2(R14)
4675 MOV @R15+,R14
4676 MOV @R13+,R0
4677 ENDCODE
4678
4679
4680 : IS
4681 STATE @
4682 IF  POSTPONE ['] POSTPONE DEFER! 
4683 ELSE ' DEFER! 
4684 THEN
4685 ; IMMEDIATE
4686 [THEN]
4687
4688 [UNDEFINED] >BODY [IF]
4689 CODE >BODY
4690 ADD #4,R14
4691 MOV @R13+,R0
4692 ENDCODE
4693 [THEN]
4694
4695
4696 CODE 20_US
4697 BEGIN
4698     BEGIN
4699         BIT #1,&$3C0
4700     0<> UNTIL
4701     BIC #1,&$3C0
4702     SUB #1,R14
4703 U< UNTIL
4704 MOV @R15+,R14
4705 MOV @R13+,R0
4706 ENDCODE
4707
4708 CODE TOP_LCD
4709     BIS.B #4,&$243
4710     BIT.B #1,&$241
4711 0= IF
4712     AND.B #$0F,R14
4713     MOV.B R14,&$222
4714     BIC.B #4,&$243
4715     MOV @R15+,R14
4716     MOV @R13+,R0
4717 THEN
4718     SUB #2,R15
4719     MOV R14,0(R15)
4720     BIC.B #4,&$243
4721     MOV.B &$220,R14
4722     AND.B #$0F,R14
4723     MOV @R13+,R0
4724 ENDCODE
4725
4726 CODE LCD_WRC
4727     BIS.B #2,&$243
4728 BW1 SUB #2,R15
4729     MOV R14,0(R15)
4730     RRUM #4,R14
4731     BIC.B #1,&$243
4732     BIS.B #$0F,&$224
4733 COLON
4734     TOP_LCD 2 20_US
4735     TOP_LCD 2 20_US 
4736 ;
4737
4738 CODE LCD_WRF
4739     BIC.B #2,&$243
4740     GOTO BW1
4741 ENDCODE
4742
4743 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
4744 : LCD_HOME $02 LCD_WRF 100 20_us ;
4745
4746
4747
4748 ASM WDT_INT
4749 ADD #2,R1
4750 BIT.B #$20,&$240
4751 0= IF
4752     CMP #19,&$3D6
4753     U< IF
4754         ADD #1,&$3D6
4755     THEN
4756 ELSE
4757     BIT.B #$40,&$240
4758     0= IF
4759         CMP #3,&$3D6
4760         U>= IF
4761            SUB #1,&$3D6
4762         THEN
4763     THEN
4764 THEN
4765 BW1
4766 MOV @R1+,R0
4767 ENDASM
4768
4769 ASM RC5_INT
4770 ADD #2,R1
4771 $1806 @ 16000 = [IF]
4772     MOV #1,&$3A0
4773 [THEN]
4774 $1806 @ 24000 = [IF]
4775     MOV #2,&$3A0
4776 [THEN]
4777 MOV #1778,R9
4778 MOV #14,R10
4779 BEGIN
4780 MOV #%1011100100,&$380
4781     RRUM    #1,R9
4782     MOV     R9,R8
4783     RRUM    #1,R8
4784     ADD     R9,R8
4785     BEGIN   CMP R8,&$390
4786     U>= UNTIL
4787     BIT.B   #4,&$200
4788     ADDC    R11,R11
4789     MOV.B   &$200,&$208
4790     BIC.B   #4,&$20C
4791     SUB     #1,R10
4792 0<> WHILE
4793     ADD R9,R8
4794     BEGIN
4795         MOV &$390,R9
4796         CMP R8,R9
4797         U>= IF
4798         BIC #$30,&$380
4799         GOTO BW1
4800         THEN
4801         BIT.B #4,&$20C
4802     0<> UNTIL
4803 REPEAT
4804 BIC #$30,&$380
4805 RLAM    #1,R11
4806 MOV.B   R11,R9
4807 RRUM    #2,R9
4808 BIT     #$4000,R11
4809 0= IF   BIS #$40,R9
4810 THEN
4811 RRUM    #3,R11
4812 XOR     @R1,R11
4813 BIT     #$400,R11
4814 0= ?GOTO BW1
4815 XOR #$400,0(R1)
4816 SUB #8,R15
4817 MOV R14,6(R15)
4818 MOV &$1DDC,4(R15)
4819 MOV #$10,&$1DDC
4820 MOV R9,0(R15)
4821 MOV #0,R14
4822 LO2HI
4823     LCD_CLEAR
4824     <# # #S #36 HOLD #>
4825     ['] LCD_WRC IS EMIT
4826     TYPE
4827     ['] EMIT >BODY IS EMIT
4828 HI2LO
4829 MOV @R15+,&$1DDC
4830 MOV @R15+,R14
4831 MOV @R1+,R0
4832 ENDASM
4833
4834 ASM BACKGROUND
4835 BEGIN
4836     CALL &$1814
4837     BIS &$180A,R2
4838 AGAIN
4839 ENDASM
4840
4841 ASM SYS_OUT
4842     MOV #WARM,R9
4843     ADD #4,R9
4844     MOV R9,R0
4845 ENDASM
4846
4847 CODE STOP
4848 BW1 MOV #$4000,R9
4849     ADD #4,R9
4850     MOV R9,-2(R9)
4851     MOV #WARM,R9
4852     MOV #SYS_OUT,2(R9)
4853     BIC.B #4,&$20A
4854     BIC.B #4,&$20C
4855     MOV #0,&$3C0
4856     MOV #0,&$340
4857     MOV #0,&$342
4858     MOV #COLD,R9
4859     MOV R9,&$FFDE
4860     MOV R9,&$FFEA
4861 COLON
4862 ECHO
4863 ." RC5toLCD is removed,"
4864 ."  type START to restart"
4865  WARM
4866 ;
4867
4868 CODE SYS_INIT
4869 MOV #%10_1101_0100,&$3C0
4870 $1806 @ 16000 = [IF]
4871     MOV #1,&$3E0
4872 [THEN]
4873 $1806 @ 24000 = [IF]
4874     MOV #2,&$3E0
4875 [THEN]
4876     MOV #19,&$3D2
4877 MOV #%0110_0000,&$3C6
4878     MOV #10,&$3D6
4879     BIS.B #$20,&$204
4880     BIS.B #$20,&$20A
4881     BIS.B #7,&$245
4882     BIC.B #7,&$247
4883     BIS.B #$0F,&$224
4884     BIC.B #$0F,&$226
4885     BIS.B #4,&$20A
4886     BIC.B #4,&$20C
4887     MOV #RC5_INT,&$FFDE
4888 MOV #%01_0001_0100,&$340
4889     MOV ##3276,&$352
4890     MOV #%10000,&$342
4891     MOV #WDT_INT,&$FFEA
4892 BIC #1,&$130
4893 BIS.B #3,&$20D
4894 MOV &$1808,R8
4895 CMP #4,R8
4896 0= ?GOTO BW1
4897 COLON
4898     #1000 20_US
4899     %011 TOP_LCD
4900     #205 20_US
4901     %011 TOP_LCD
4902     #5 20_US
4903     %011 TOP_LCD
4904     #2 20_US
4905     %010 TOP_LCD
4906     #2 20_US
4907     %00101000 LCD_WRF
4908     %1000 LCD_WRF
4909     LCD_CLEAR
4910     %0110 LCD_WRF
4911     %1100 LCD_WRF
4912     LCD_CLEAR
4913     ['] LCD_HOME IS CR
4914     ['] LCD_WRC  IS EMIT
4915     CR ." I love you"
4916     ['] CR >BODY IS CR
4917     ['] EMIT >BODY IS EMIT
4918     ." RC5toLCD is running. Type STOP to quit"
4919     PWR_STATE ABORT
4920 ;
4921
4922 CODE START
4923 MOV #$4000,R9
4924 MOV #BACKGROUND,2(R9)
4925 MOV #WARM,R9
4926 MOV #SYS_INIT,2(R9)
4927 MOV R9,R0
4928 ENDCODE 
4929 PWR_STATE
4930
4931 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
4932
4933 MARKER {RC5TOLCD}
4934
4935 [UNDEFINED] @ [IF]
4936 CODE @
4937 MOV @R14,R14
4938 MOV @R13+,R0
4939 ENDCODE
4940 [THEN]
4941
4942 [UNDEFINED] CONSTANT [IF]
4943 : CONSTANT 
4944 CREATE
4945 HI2LO
4946 MOV R14,-2(R10)
4947 MOV @R15+,R14
4948 MOV @R1+,R13
4949 MOV @R13+,R0
4950 ENDCODE
4951 [THEN]
4952
4953 [UNDEFINED] STATE [IF]
4954 $1DBE CONSTANT STATE
4955 [THEN]
4956
4957 [UNDEFINED] = [IF]
4958 CODE =
4959 SUB @R15+,R14
4960 0<> IF
4961     AND #0,R14
4962     MOV @R13+,R0
4963 THEN
4964 XOR #-1,R14
4965 MOV @R13+,R0
4966 ENDCODE
4967 [THEN]
4968
4969 [UNDEFINED] IF [IF]
4970 CODE IF
4971 SUB #2,R15
4972 MOV R14,0(R15)
4973 MOV &$1DC6,R14
4974 ADD #4,&$1DC6
4975 MOV #$4042,0(R14)
4976 ADD #2,R14
4977 MOV @R13+,R0
4978 ENDCODE IMMEDIATE
4979
4980 CODE THEN
4981 MOV &$1DC6,0(R14)
4982 MOV @R15+,R14
4983 MOV @R13+,R0
4984 ENDCODE IMMEDIATE
4985 [THEN]
4986
4987 [UNDEFINED] ELSE [IF]
4988 CODE ELSE
4989 ADD #4,&$1DC6
4990 MOV &$1DC6,R10
4991 MOV #$403E,-4(R10)
4992 MOV R10,0(R14)
4993 SUB #2,R10
4994 MOV R10,R14
4995 MOV @R13+,R0
4996 ENDCODE IMMEDIATE
4997 [THEN]
4998
4999 [UNDEFINED] IS [IF]
5000
5001 CODE DEFER!
5002 MOV @R15+,2(R14)
5003 MOV @R15+,R14
5004 MOV @R13+,R0
5005 ENDCODE
5006
5007
5008 : IS
5009 STATE @
5010 IF  POSTPONE ['] POSTPONE DEFER! 
5011 ELSE ' DEFER! 
5012 THEN
5013 ; IMMEDIATE
5014 [THEN]
5015
5016 [UNDEFINED] >BODY [IF]
5017 CODE >BODY
5018 ADD #4,R14
5019 MOV @R13+,R0
5020 ENDCODE
5021 [THEN]
5022
5023
5024 CODE 20_US
5025 BEGIN
5026     BEGIN
5027         BIT #1,&$3C0
5028     0<> UNTIL
5029     BIC #1,&$3C0
5030     SUB #1,R14
5031 U< UNTIL
5032 MOV @R15+,R14
5033 MOV @R13+,R0
5034 ENDCODE
5035
5036 CODE TOP_LCD
5037     BIS.B #4,&$243
5038     BIT.B #1,&$241
5039 0= IF
5040     AND.B #$0F,R14
5041     MOV.B R14,&$222
5042     BIC.B #4,&$243
5043     MOV @R15+,R14
5044     MOV @R13+,R0
5045 THEN
5046     SUB #2,R15
5047     MOV R14,0(R15)
5048     BIC.B #4,&$243
5049     MOV.B &$220,R14
5050     AND.B #$0F,R14
5051     MOV @R13+,R0
5052 ENDCODE
5053
5054 CODE LCD_WRC
5055     BIS.B #2,&$243
5056 BW1 SUB #2,R15
5057     MOV R14,0(R15)
5058     RRUM #4,R14
5059     BIC.B #1,&$243
5060     BIS.B #$0F,&$224
5061 COLON
5062     TOP_LCD 2 20_US
5063     TOP_LCD 2 20_US 
5064 ;
5065
5066 CODE LCD_WRF
5067     BIC.B #2,&$243
5068     GOTO BW1
5069 ENDCODE
5070
5071 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
5072 : LCD_HOME $02 LCD_WRF 100 20_us ;
5073
5074
5075
5076 ASM WDT_INT
5077 ADD #2,R1
5078 BIT.B #$20,&$240
5079 0= IF
5080     CMP #19,&$3D6
5081     U< IF
5082         ADD #1,&$3D6
5083     THEN
5084 ELSE
5085     BIT.B #$40,&$240
5086     0= IF
5087         CMP #3,&$3D6
5088         U>= IF
5089            SUB #1,&$3D6
5090         THEN
5091     THEN
5092 THEN
5093 BW1
5094 MOV @R1+,R0
5095 ENDASM
5096
5097 ASM RC5_INT
5098 ADD #2,R1
5099 $1806 @ 16000 = [IF]
5100     MOV #1,&$3A0
5101 [THEN]
5102 $1806 @ 24000 = [IF]
5103     MOV #2,&$3A0
5104 [THEN]
5105 MOV #1778,R9
5106 MOV #14,R10
5107 BEGIN
5108 MOV #%1011100100,&$380
5109     RRUM    #1,R9
5110     MOV     R9,R8
5111     RRUM    #1,R8
5112     ADD     R9,R8
5113     BEGIN   CMP R8,&$390
5114     U>= UNTIL
5115     BIT.B   #4,&$200
5116     ADDC    R11,R11
5117     MOV.B   &$200,&$208
5118     BIC.B   #4,&$20C
5119     SUB     #1,R10
5120 0<> WHILE
5121     ADD R9,R8
5122     BEGIN
5123         MOV &$390,R9
5124         CMP R8,R9
5125         U>= IF
5126         BIC #$30,&$380
5127         GOTO BW1
5128         THEN
5129         BIT.B #4,&$20C
5130     0<> UNTIL
5131 REPEAT
5132 BIC #$30,&$380
5133 RLAM    #1,R11
5134 MOV.B   R11,R9
5135 RRUM    #2,R9
5136 BIT     #$4000,R11
5137 0= IF   BIS #$40,R9
5138 THEN
5139 RRUM    #3,R11
5140 XOR     @R1,R11
5141 BIT     #$400,R11
5142 0= ?GOTO BW1
5143 XOR #$400,0(R1)
5144 SUB #8,R15
5145 MOV R14,6(R15)
5146 MOV &$1DDC,4(R15)
5147 MOV #$10,&$1DDC
5148 MOV R9,0(R15)
5149 MOV #0,R14
5150 LO2HI
5151     LCD_CLEAR
5152     <# # #S #36 HOLD #>
5153     ['] LCD_WRC IS EMIT
5154     TYPE
5155     ['] EMIT >BODY IS EMIT
5156 HI2LO
5157 MOV @R15+,&$1DDC
5158 MOV @R15+,R14
5159 MOV @R1+,R0
5160 ENDASM
5161
5162 ASM BACKGROUND
5163 BEGIN
5164     CALL &$1814
5165     BIS &$180A,R2
5166 AGAIN
5167 ENDASM
5168
5169 ASM SYS_OUT
5170     MOV #WARM,R9
5171     ADD #4,R9
5172     MOV R9,R0
5173 ENDASM
5174
5175 CODE STOP
5176 BW1 MOV #$4000,R9
5177     ADD #4,R9
5178     MOV R9,-2(R9)
5179     MOV #WARM,R9
5180     MOV #SYS_OUT,2(R9)
5181     BIC.B #4,&$20A
5182     BIC.B #4,&$20C
5183     MOV #0,&$3C0
5184     MOV #0,&$340
5185     MOV #0,&$342
5186     MOV #COLD,R9
5187     MOV R9,&$FFDE
5188     MOV R9,&$FFEA
5189 COLON
5190 ECHO
5191 ." RC5toLCD is removed,"
5192 ."  type START to restart"
5193  WARM
5194 ;
5195
5196 CODE SYS_INIT
5197 MOV #%10_1101_0100,&$3C0
5198 $1806 @ 16000 = [IF]
5199     MOV #1,&$3E0
5200 [THEN]
5201 $1806 @ 24000 = [IF]
5202     MOV #2,&$3E0
5203 [THEN]
5204     MOV #19,&$3D2
5205 MOV #%0110_0000,&$3C6
5206     MOV #10,&$3D6
5207     BIS.B #$20,&$204
5208     BIS.B #$20,&$20A
5209     BIS.B #7,&$245
5210     BIC.B #7,&$247
5211     BIS.B #$0F,&$224
5212     BIC.B #$0F,&$226
5213     BIS.B #4,&$20A
5214     BIC.B #4,&$20C
5215     MOV #RC5_INT,&$FFDE
5216 MOV #%01_0001_0100,&$340
5217     MOV ##3276,&$352
5218     MOV #%10000,&$342
5219     MOV #WDT_INT,&$FFEA
5220 BIC #1,&$130
5221 BIS.B #3,&$20D
5222 MOV &$1808,R8
5223 CMP #4,R8
5224 0= ?GOTO BW1
5225 COLON
5226     #1000 20_US
5227     %011 TOP_LCD
5228     #205 20_US
5229     %011 TOP_LCD
5230     #5 20_US
5231     %011 TOP_LCD
5232     #2 20_US
5233     %010 TOP_LCD
5234     #2 20_US
5235     %00101000 LCD_WRF
5236     %1000 LCD_WRF
5237     LCD_CLEAR
5238     %0110 LCD_WRF
5239     %1100 LCD_WRF
5240     LCD_CLEAR
5241     ['] LCD_HOME IS CR
5242     ['] LCD_WRC  IS EMIT
5243     CR ." I love you"
5244     ['] CR >BODY IS CR
5245     ['] EMIT >BODY IS EMIT
5246     ." RC5toLCD is running. Type STOP to quit"
5247     PWR_STATE ABORT
5248 ;
5249
5250 CODE START
5251 MOV #$4000,R9
5252 MOV #BACKGROUND,2(R9)
5253 MOV #WARM,R9
5254 MOV #SYS_INIT,2(R9)
5255 MOV R9,R0
5256 ENDCODE 
5257 PWR_STATE
5258
5259 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
5260
5261 MARKER {RC5TOLCD}
5262
5263 [UNDEFINED] @ [IF]
5264 CODE @
5265 MOV @R14,R14
5266 MOV @R13+,R0
5267 ENDCODE
5268 [THEN]
5269
5270 [UNDEFINED] CONSTANT [IF]
5271 : CONSTANT 
5272 CREATE
5273 HI2LO
5274 MOV R14,-2(R10)
5275 MOV @R15+,R14
5276 MOV @R1+,R13
5277 MOV @R13+,R0
5278 ENDCODE
5279 [THEN]
5280
5281 [UNDEFINED] STATE [IF]
5282 $1DBE CONSTANT STATE
5283 [THEN]
5284
5285 [UNDEFINED] = [IF]
5286 CODE =
5287 SUB @R15+,R14
5288 0<> IF
5289     AND #0,R14
5290     MOV @R13+,R0
5291 THEN
5292 XOR #-1,R14
5293 MOV @R13+,R0
5294 ENDCODE
5295 [THEN]
5296
5297 [UNDEFINED] IF [IF]
5298 CODE IF
5299 SUB #2,R15
5300 MOV R14,0(R15)
5301 MOV &$1DC6,R14
5302 ADD #4,&$1DC6
5303 MOV #$4042,0(R14)
5304 ADD #2,R14
5305 MOV @R13+,R0
5306 ENDCODE IMMEDIATE
5307
5308 CODE THEN
5309 MOV &$1DC6,0(R14)
5310 MOV @R15+,R14
5311 MOV @R13+,R0
5312 ENDCODE IMMEDIATE
5313 [THEN]
5314
5315 [UNDEFINED] ELSE [IF]
5316 CODE ELSE
5317 ADD #4,&$1DC6
5318 MOV &$1DC6,R10
5319 MOV #$403E,-4(R10)
5320 MOV R10,0(R14)
5321 SUB #2,R10
5322 MOV R10,R14
5323 MOV @R13+,R0
5324 ENDCODE IMMEDIATE
5325 [THEN]
5326
5327 [UNDEFINED] IS [IF]
5328
5329 CODE DEFER!
5330 MOV @R15+,2(R14)
5331 MOV @R15+,R14
5332 MOV @R13+,R0
5333 ENDCODE
5334
5335
5336 : IS
5337 STATE @
5338 IF  POSTPONE ['] POSTPONE DEFER! 
5339 ELSE ' DEFER! 
5340 THEN
5341 ; IMMEDIATE
5342 [THEN]
5343
5344 [UNDEFINED] >BODY [IF]
5345 CODE >BODY
5346 ADD #4,R14
5347 MOV @R13+,R0
5348 ENDCODE
5349 [THEN]
5350
5351
5352 CODE 20_US
5353 BEGIN
5354     BEGIN
5355         BIT #1,&$3C0
5356     0<> UNTIL
5357     BIC #1,&$3C0
5358     SUB #1,R14
5359 U< UNTIL
5360 MOV @R15+,R14
5361 MOV @R13+,R0
5362 ENDCODE
5363
5364 CODE TOP_LCD
5365     BIS.B #4,&$243
5366     BIT.B #1,&$241
5367 0= IF
5368     AND.B #$0F,R14
5369     MOV.B R14,&$222
5370     BIC.B #4,&$243
5371     MOV @R15+,R14
5372     MOV @R13+,R0
5373 THEN
5374     SUB #2,R15
5375     MOV R14,0(R15)
5376     BIC.B #4,&$243
5377     MOV.B &$220,R14
5378     AND.B #$0F,R14
5379     MOV @R13+,R0
5380 ENDCODE
5381
5382 CODE LCD_WRC
5383     BIS.B #2,&$243
5384 BW1 SUB #2,R15
5385     MOV R14,0(R15)
5386     RRUM #4,R14
5387     BIC.B #1,&$243
5388     BIS.B #$0F,&$224
5389 COLON
5390     TOP_LCD 2 20_US
5391     TOP_LCD 2 20_US 
5392 ;
5393
5394 CODE LCD_WRF
5395     BIC.B #2,&$243
5396     GOTO BW1
5397 ENDCODE
5398
5399 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
5400 : LCD_HOME $02 LCD_WRF 100 20_us ;
5401
5402
5403
5404 ASM WDT_INT
5405 ADD #2,R1
5406 BIT.B #$20,&$240
5407 0= IF
5408     CMP #19,&$3D6
5409     U< IF
5410         ADD #1,&$3D6
5411     THEN
5412 ELSE
5413     BIT.B #$40,&$240
5414     0= IF
5415         CMP #3,&$3D6
5416         U>= IF
5417            SUB #1,&$3D6
5418         THEN
5419     THEN
5420 THEN
5421 BW1
5422 MOV @R1+,R0
5423 ENDASM
5424
5425 ASM RC5_INT
5426 ADD #2,R1
5427 $1806 @ 16000 = [IF]
5428     MOV #1,&$3A0
5429 [THEN]
5430 $1806 @ 24000 = [IF]
5431     MOV #2,&$3A0
5432 [THEN]
5433 MOV #1778,R9
5434 MOV #14,R10
5435 BEGIN
5436 MOV #%1011100100,&$380
5437     RRUM    #1,R9
5438     MOV     R9,R8
5439     RRUM    #1,R8
5440     ADD     R9,R8
5441     BEGIN   CMP R8,&$390
5442     U>= UNTIL
5443     BIT.B   #4,&$200
5444     ADDC    R11,R11
5445     MOV.B   &$200,&$208
5446     BIC.B   #4,&$20C
5447     SUB     #1,R10
5448 0<> WHILE
5449     ADD R9,R8
5450     BEGIN
5451         MOV &$390,R9
5452         CMP R8,R9
5453         U>= IF
5454         BIC #$30,&$380
5455         GOTO BW1
5456         THEN
5457         BIT.B #4,&$20C
5458     0<> UNTIL
5459 REPEAT
5460 BIC #$30,&$380
5461 RLAM    #1,R11
5462 MOV.B   R11,R9
5463 RRUM    #2,R9
5464 BIT     #$4000,R11
5465 0= IF   BIS #$40,R9
5466 THEN
5467 RRUM    #3,R11
5468 XOR     @R1,R11
5469 BIT     #$400,R11
5470 0= ?GOTO BW1
5471 XOR #$400,0(R1)
5472 SUB #8,R15
5473 MOV R14,6(R15)
5474 MOV &$1DDC,4(R15)
5475 MOV #$10,&$1DDC
5476 MOV R9,0(R15)
5477 MOV #0,R14
5478 LO2HI
5479     LCD_CLEAR
5480     <# # #S #36 HOLD #>
5481     ['] LCD_WRC IS EMIT
5482     TYPE
5483     ['] EMIT >BODY IS EMIT
5484 HI2LO
5485 MOV @R15+,&$1DDC
5486 MOV @R15+,R14
5487 MOV @R1+,R0
5488 ENDASM
5489
5490 ASM BACKGROUND
5491 BEGIN
5492     CALL &$1814
5493     BIS &$180A,R2
5494 AGAIN
5495 ENDASM
5496
5497 ASM SYS_OUT
5498     MOV #WARM,R9
5499     ADD #4,R9
5500     MOV R9,R0
5501 ENDASM
5502
5503 CODE STOP
5504 BW1 MOV #$4000,R9
5505     ADD #4,R9
5506     MOV R9,-2(R9)
5507     MOV #WARM,R9
5508     MOV #SYS_OUT,2(R9)
5509     BIC.B #4,&$20A
5510     BIC.B #4,&$20C
5511     MOV #0,&$3C0
5512     MOV #0,&$340
5513     MOV #0,&$342
5514     MOV #COLD,R9
5515     MOV R9,&$FFDE
5516     MOV R9,&$FFEA
5517 COLON
5518 ECHO
5519 ." RC5toLCD is removed,"
5520 ."  type START to restart"
5521  WARM
5522 ;
5523
5524 CODE SYS_INIT
5525 MOV #%10_1101_0100,&$3C0
5526 $1806 @ 16000 = [IF]
5527     MOV #1,&$3E0
5528 [THEN]
5529 $1806 @ 24000 = [IF]
5530     MOV #2,&$3E0
5531 [THEN]
5532     MOV #19,&$3D2
5533 MOV #%0110_0000,&$3C6
5534     MOV #10,&$3D6
5535     BIS.B #$20,&$204
5536     BIS.B #$20,&$20A
5537     BIS.B #7,&$245
5538     BIC.B #7,&$247
5539     BIS.B #$0F,&$224
5540     BIC.B #$0F,&$226
5541     BIS.B #4,&$20A
5542     BIC.B #4,&$20C
5543     MOV #RC5_INT,&$FFDE
5544 MOV #%01_0001_0100,&$340
5545     MOV ##3276,&$352
5546     MOV #%10000,&$342
5547     MOV #WDT_INT,&$FFEA
5548 BIC #1,&$130
5549 BIS.B #3,&$20D
5550 MOV &$1808,R8
5551 CMP #4,R8
5552 0= ?GOTO BW1
5553 COLON
5554     #1000 20_US
5555     %011 TOP_LCD
5556     #205 20_US
5557     %011 TOP_LCD
5558     #5 20_US
5559     %011 TOP_LCD
5560     #2 20_US
5561     %010 TOP_LCD
5562     #2 20_US
5563     %00101000 LCD_WRF
5564     %1000 LCD_WRF
5565     LCD_CLEAR
5566     %0110 LCD_WRF
5567     %1100 LCD_WRF
5568     LCD_CLEAR
5569     ['] LCD_HOME IS CR
5570     ['] LCD_WRC  IS EMIT
5571     CR ." I love you"
5572     ['] CR >BODY IS CR
5573     ['] EMIT >BODY IS EMIT
5574     ." RC5toLCD is running. Type STOP to quit"
5575     PWR_STATE ABORT
5576 ;
5577
5578 CODE START
5579 MOV #$4000,R9
5580 MOV #BACKGROUND,2(R9)
5581 MOV #WARM,R9
5582 MOV #SYS_INIT,2(R9)
5583 MOV R9,R0
5584 ENDCODE 
5585 PWR_STATE
5586
5587 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
5588
5589 MARKER {RC5TOLCD}
5590
5591 [UNDEFINED] @ [IF]
5592 CODE @
5593 MOV @R14,R14
5594 MOV @R13+,R0
5595 ENDCODE
5596 [THEN]
5597
5598 [UNDEFINED] CONSTANT [IF]
5599 : CONSTANT 
5600 CREATE
5601 HI2LO
5602 MOV R14,-2(R10)
5603 MOV @R15+,R14
5604 MOV @R1+,R13
5605 MOV @R13+,R0
5606 ENDCODE
5607 [THEN]
5608
5609 [UNDEFINED] STATE [IF]
5610 $1DBE CONSTANT STATE
5611 [THEN]
5612
5613 [UNDEFINED] = [IF]
5614 CODE =
5615 SUB @R15+,R14
5616 0<> IF
5617     AND #0,R14
5618     MOV @R13+,R0
5619 THEN
5620 XOR #-1,R14
5621 MOV @R13+,R0
5622 ENDCODE
5623 [THEN]
5624
5625 [UNDEFINED] IF [IF]
5626 CODE IF
5627 SUB #2,R15
5628 MOV R14,0(R15)
5629 MOV &$1DC6,R14
5630 ADD #4,&$1DC6
5631 MOV #$4042,0(R14)
5632 ADD #2,R14
5633 MOV @R13+,R0
5634 ENDCODE IMMEDIATE
5635
5636 CODE THEN
5637 MOV &$1DC6,0(R14)
5638 MOV @R15+,R14
5639 MOV @R13+,R0
5640 ENDCODE IMMEDIATE
5641 [THEN]
5642
5643 [UNDEFINED] ELSE [IF]
5644 CODE ELSE
5645 ADD #4,&$1DC6
5646 MOV &$1DC6,R10
5647 MOV #$403E,-4(R10)
5648 MOV R10,0(R14)
5649 SUB #2,R10
5650 MOV R10,R14
5651 MOV @R13+,R0
5652 ENDCODE IMMEDIATE
5653 [THEN]
5654
5655 [UNDEFINED] IS [IF]
5656
5657 CODE DEFER!
5658 MOV @R15+,2(R14)
5659 MOV @R15+,R14
5660 MOV @R13+,R0
5661 ENDCODE
5662
5663
5664 : IS
5665 STATE @
5666 IF  POSTPONE ['] POSTPONE DEFER! 
5667 ELSE ' DEFER! 
5668 THEN
5669 ; IMMEDIATE
5670 [THEN]
5671
5672 [UNDEFINED] >BODY [IF]
5673 CODE >BODY
5674 ADD #4,R14
5675 MOV @R13+,R0
5676 ENDCODE
5677 [THEN]
5678
5679
5680 CODE 20_US
5681 BEGIN
5682     BEGIN
5683         BIT #1,&$3C0
5684     0<> UNTIL
5685     BIC #1,&$3C0
5686     SUB #1,R14
5687 U< UNTIL
5688 MOV @R15+,R14
5689 MOV @R13+,R0
5690 ENDCODE
5691
5692 CODE TOP_LCD
5693     BIS.B #4,&$243
5694     BIT.B #1,&$241
5695 0= IF
5696     AND.B #$0F,R14
5697     MOV.B R14,&$222
5698     BIC.B #4,&$243
5699     MOV @R15+,R14
5700     MOV @R13+,R0
5701 THEN
5702     SUB #2,R15
5703     MOV R14,0(R15)
5704     BIC.B #4,&$243
5705     MOV.B &$220,R14
5706     AND.B #$0F,R14
5707     MOV @R13+,R0
5708 ENDCODE
5709
5710 CODE LCD_WRC
5711     BIS.B #2,&$243
5712 BW1 SUB #2,R15
5713     MOV R14,0(R15)
5714     RRUM #4,R14
5715     BIC.B #1,&$243
5716     BIS.B #$0F,&$224
5717 COLON
5718     TOP_LCD 2 20_US
5719     TOP_LCD 2 20_US 
5720 ;
5721
5722 CODE LCD_WRF
5723     BIC.B #2,&$243
5724     GOTO BW1
5725 ENDCODE
5726
5727 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
5728 : LCD_HOME $02 LCD_WRF 100 20_us ;
5729
5730
5731
5732 ASM WDT_INT
5733 ADD #2,R1
5734 BIT.B #$20,&$240
5735 0= IF
5736     CMP #19,&$3D6
5737     U< IF
5738         ADD #1,&$3D6
5739     THEN
5740 ELSE
5741     BIT.B #$40,&$240
5742     0= IF
5743         CMP #3,&$3D6
5744         U>= IF
5745            SUB #1,&$3D6
5746         THEN
5747     THEN
5748 THEN
5749 BW1
5750 MOV @R1+,R0
5751 ENDASM
5752
5753 ASM RC5_INT
5754 ADD #2,R1
5755 $1806 @ 16000 = [IF]
5756     MOV #1,&$3A0
5757 [THEN]
5758 $1806 @ 24000 = [IF]
5759     MOV #2,&$3A0
5760 [THEN]
5761 MOV #1778,R9
5762 MOV #14,R10
5763 BEGIN
5764 MOV #%1011100100,&$380
5765     RRUM    #1,R9
5766     MOV     R9,R8
5767     RRUM    #1,R8
5768     ADD     R9,R8
5769     BEGIN   CMP R8,&$390
5770     U>= UNTIL
5771     BIT.B   #4,&$200
5772     ADDC    R11,R11
5773     MOV.B   &$200,&$208
5774     BIC.B   #4,&$20C
5775     SUB     #1,R10
5776 0<> WHILE
5777     ADD R9,R8
5778     BEGIN
5779         MOV &$390,R9
5780         CMP R8,R9
5781         U>= IF
5782         BIC #$30,&$380
5783         GOTO BW1
5784         THEN
5785         BIT.B #4,&$20C
5786     0<> UNTIL
5787 REPEAT
5788 BIC #$30,&$380
5789 RLAM    #1,R11
5790 MOV.B   R11,R9
5791 RRUM    #2,R9
5792 BIT     #$4000,R11
5793 0= IF   BIS #$40,R9
5794 THEN
5795 RRUM    #3,R11
5796 XOR     @R1,R11
5797 BIT     #$400,R11
5798 0= ?GOTO BW1
5799 XOR #$400,0(R1)
5800 SUB #8,R15
5801 MOV R14,6(R15)
5802 MOV &$1DDC,4(R15)
5803 MOV #$10,&$1DDC
5804 MOV R9,0(R15)
5805 MOV #0,R14
5806 LO2HI
5807     LCD_CLEAR
5808     <# # #S #36 HOLD #>
5809     ['] LCD_WRC IS EMIT
5810     TYPE
5811     ['] EMIT >BODY IS EMIT
5812 HI2LO
5813 MOV @R15+,&$1DDC
5814 MOV @R15+,R14
5815 MOV @R1+,R0
5816 ENDASM
5817
5818 ASM BACKGROUND
5819 BEGIN
5820     CALL &$1814
5821     BIS &$180A,R2
5822 AGAIN
5823 ENDASM
5824
5825 ASM SYS_OUT
5826     MOV #WARM,R9
5827     ADD #4,R9
5828     MOV R9,R0
5829 ENDASM
5830
5831 CODE STOP
5832 BW1 MOV #$4000,R9
5833     ADD #4,R9
5834     MOV R9,-2(R9)
5835     MOV #WARM,R9
5836     MOV #SYS_OUT,2(R9)
5837     BIC.B #4,&$20A
5838     BIC.B #4,&$20C
5839     MOV #0,&$3C0
5840     MOV #0,&$340
5841     MOV #0,&$342
5842     MOV #COLD,R9
5843     MOV R9,&$FFDE
5844     MOV R9,&$FFEA
5845 COLON
5846 ECHO
5847 ." RC5toLCD is removed,"
5848 ."  type START to restart"
5849  WARM
5850 ;
5851
5852 CODE SYS_INIT
5853 MOV #%10_1101_0100,&$3C0
5854 $1806 @ 16000 = [IF]
5855     MOV #1,&$3E0
5856 [THEN]
5857 $1806 @ 24000 = [IF]
5858     MOV #2,&$3E0
5859 [THEN]
5860     MOV #19,&$3D2
5861 MOV #%0110_0000,&$3C6
5862     MOV #10,&$3D6
5863     BIS.B #$20,&$204
5864     BIS.B #$20,&$20A
5865     BIS.B #7,&$245
5866     BIC.B #7,&$247
5867     BIS.B #$0F,&$224
5868     BIC.B #$0F,&$226
5869     BIS.B #4,&$20A
5870     BIC.B #4,&$20C
5871     MOV #RC5_INT,&$FFDE
5872 MOV #%01_0001_0100,&$340
5873     MOV ##3276,&$352
5874     MOV #%10000,&$342
5875     MOV #WDT_INT,&$FFEA
5876 BIC #1,&$130
5877 BIS.B #3,&$20D
5878 MOV &$1808,R8
5879 CMP #4,R8
5880 0= ?GOTO BW1
5881 COLON
5882     #1000 20_US
5883     %011 TOP_LCD
5884     #205 20_US
5885     %011 TOP_LCD
5886     #5 20_US
5887     %011 TOP_LCD
5888     #2 20_US
5889     %010 TOP_LCD
5890     #2 20_US
5891     %00101000 LCD_WRF
5892     %1000 LCD_WRF
5893     LCD_CLEAR
5894     %0110 LCD_WRF
5895     %1100 LCD_WRF
5896     LCD_CLEAR
5897     ['] LCD_HOME IS CR
5898     ['] LCD_WRC  IS EMIT
5899     CR ." I love you"
5900     ['] CR >BODY IS CR
5901     ['] EMIT >BODY IS EMIT
5902     ." RC5toLCD is running. Type STOP to quit"
5903     PWR_STATE ABORT
5904 ;
5905
5906 CODE START
5907 MOV #$4000,R9
5908 MOV #BACKGROUND,2(R9)
5909 MOV #WARM,R9
5910 MOV #SYS_INIT,2(R9)
5911 MOV R9,R0
5912 ENDCODE 
5913 PWR_STATE
5914
5915 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
5916
5917 MARKER {RC5TOLCD}
5918
5919 [UNDEFINED] @ [IF]
5920 CODE @
5921 MOV @R14,R14
5922 MOV @R13+,R0
5923 ENDCODE
5924 [THEN]
5925
5926 [UNDEFINED] CONSTANT [IF]
5927 : CONSTANT 
5928 CREATE
5929 HI2LO
5930 MOV R14,-2(R10)
5931 MOV @R15+,R14
5932 MOV @R1+,R13
5933 MOV @R13+,R0
5934 ENDCODE
5935 [THEN]
5936
5937 [UNDEFINED] STATE [IF]
5938 $1DBE CONSTANT STATE
5939 [THEN]
5940
5941 [UNDEFINED] = [IF]
5942 CODE =
5943 SUB @R15+,R14
5944 0<> IF
5945     AND #0,R14
5946     MOV @R13+,R0
5947 THEN
5948 XOR #-1,R14
5949 MOV @R13+,R0
5950 ENDCODE
5951 [THEN]
5952
5953 [UNDEFINED] IF [IF]
5954 CODE IF
5955 SUB #2,R15
5956 MOV R14,0(R15)
5957 MOV &$1DC6,R14
5958 ADD #4,&$1DC6
5959 MOV #$4042,0(R14)
5960 ADD #2,R14
5961 MOV @R13+,R0
5962 ENDCODE IMMEDIATE
5963
5964 CODE THEN
5965 MOV &$1DC6,0(R14)
5966 MOV @R15+,R14
5967 MOV @R13+,R0
5968 ENDCODE IMMEDIATE
5969 [THEN]
5970
5971 [UNDEFINED] ELSE [IF]
5972 CODE ELSE
5973 ADD #4,&$1DC6
5974 MOV &$1DC6,R10
5975 MOV #$403E,-4(R10)
5976 MOV R10,0(R14)
5977 SUB #2,R10
5978 MOV R10,R14
5979 MOV @R13+,R0
5980 ENDCODE IMMEDIATE
5981 [THEN]
5982
5983 [UNDEFINED] IS [IF]
5984
5985 CODE DEFER!
5986 MOV @R15+,2(R14)
5987 MOV @R15+,R14
5988 MOV @R13+,R0
5989 ENDCODE
5990
5991
5992 : IS
5993 STATE @
5994 IF  POSTPONE ['] POSTPONE DEFER! 
5995 ELSE ' DEFER! 
5996 THEN
5997 ; IMMEDIATE
5998 [THEN]
5999
6000 [UNDEFINED] >BODY [IF]
6001 CODE >BODY
6002 ADD #4,R14
6003 MOV @R13+,R0
6004 ENDCODE
6005 [THEN]
6006
6007
6008 CODE 20_US
6009 BEGIN
6010     BEGIN
6011         BIT #1,&$3C0
6012     0<> UNTIL
6013     BIC #1,&$3C0
6014     SUB #1,R14
6015 U< UNTIL
6016 MOV @R15+,R14
6017 MOV @R13+,R0
6018 ENDCODE
6019
6020 CODE TOP_LCD
6021     BIS.B #4,&$243
6022     BIT.B #1,&$241
6023 0= IF
6024     AND.B #$0F,R14
6025     MOV.B R14,&$222
6026     BIC.B #4,&$243
6027     MOV @R15+,R14
6028     MOV @R13+,R0
6029 THEN
6030     SUB #2,R15
6031     MOV R14,0(R15)
6032     BIC.B #4,&$243
6033     MOV.B &$220,R14
6034     AND.B #$0F,R14
6035     MOV @R13+,R0
6036 ENDCODE
6037
6038 CODE LCD_WRC
6039     BIS.B #2,&$243
6040 BW1 SUB #2,R15
6041     MOV R14,0(R15)
6042     RRUM #4,R14
6043     BIC.B #1,&$243
6044     BIS.B #$0F,&$224
6045 COLON
6046     TOP_LCD 2 20_US
6047     TOP_LCD 2 20_US 
6048 ;
6049
6050 CODE LCD_WRF
6051     BIC.B #2,&$243
6052     GOTO BW1
6053 ENDCODE
6054
6055 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
6056 : LCD_HOME $02 LCD_WRF 100 20_us ;
6057
6058
6059
6060 ASM WDT_INT
6061 ADD #2,R1
6062 BIT.B #$20,&$240
6063 0= IF
6064     CMP #19,&$3D6
6065     U< IF
6066         ADD #1,&$3D6
6067     THEN
6068 ELSE
6069     BIT.B #$40,&$240
6070     0= IF
6071         CMP #3,&$3D6
6072         U>= IF
6073            SUB #1,&$3D6
6074         THEN
6075     THEN
6076 THEN
6077 BW1
6078 MOV @R1+,R0
6079 ENDASM
6080
6081 ASM RC5_INT
6082 ADD #2,R1
6083 $1806 @ 16000 = [IF]
6084     MOV #1,&$3A0
6085 [THEN]
6086 $1806 @ 24000 = [IF]
6087     MOV #2,&$3A0
6088 [THEN]
6089 MOV #1778,R9
6090 MOV #14,R10
6091 BEGIN
6092 MOV #%1011100100,&$380
6093     RRUM    #1,R9
6094     MOV     R9,R8
6095     RRUM    #1,R8
6096     ADD     R9,R8
6097     BEGIN   CMP R8,&$390
6098     U>= UNTIL
6099     BIT.B   #4,&$200
6100     ADDC    R11,R11
6101     MOV.B   &$200,&$208
6102     BIC.B   #4,&$20C
6103     SUB     #1,R10
6104 0<> WHILE
6105     ADD R9,R8
6106     BEGIN
6107         MOV &$390,R9
6108         CMP R8,R9
6109         U>= IF
6110         BIC #$30,&$380
6111         GOTO BW1
6112         THEN
6113         BIT.B #4,&$20C
6114     0<> UNTIL
6115 REPEAT
6116 BIC #$30,&$380
6117 RLAM    #1,R11
6118 MOV.B   R11,R9
6119 RRUM    #2,R9
6120 BIT     #$4000,R11
6121 0= IF   BIS #$40,R9
6122 THEN
6123 RRUM    #3,R11
6124 XOR     @R1,R11
6125 BIT     #$400,R11
6126 0= ?GOTO BW1
6127 XOR #$400,0(R1)
6128 SUB #8,R15
6129 MOV R14,6(R15)
6130 MOV &$1DDC,4(R15)
6131 MOV #$10,&$1DDC
6132 MOV R9,0(R15)
6133 MOV #0,R14
6134 LO2HI
6135     LCD_CLEAR
6136     <# # #S #36 HOLD #>
6137     ['] LCD_WRC IS EMIT
6138     TYPE
6139     ['] EMIT >BODY IS EMIT
6140 HI2LO
6141 MOV @R15+,&$1DDC
6142 MOV @R15+,R14
6143 MOV @R1+,R0
6144 ENDASM
6145
6146 ASM BACKGROUND
6147 BEGIN
6148     CALL &$1814
6149     BIS &$180A,R2
6150 AGAIN
6151 ENDASM
6152
6153 ASM SYS_OUT
6154     MOV #WARM,R9
6155     ADD #4,R9
6156     MOV R9,R0
6157 ENDASM
6158
6159 CODE STOP
6160 BW1 MOV #$4000,R9
6161     ADD #4,R9
6162     MOV R9,-2(R9)
6163     MOV #WARM,R9
6164     MOV #SYS_OUT,2(R9)
6165     BIC.B #4,&$20A
6166     BIC.B #4,&$20C
6167     MOV #0,&$3C0
6168     MOV #0,&$340
6169     MOV #0,&$342
6170     MOV #COLD,R9
6171     MOV R9,&$FFDE
6172     MOV R9,&$FFEA
6173 COLON
6174 ECHO
6175 ." RC5toLCD is removed,"
6176 ."  type START to restart"
6177  WARM
6178 ;
6179
6180 CODE SYS_INIT
6181 MOV #%10_1101_0100,&$3C0
6182 $1806 @ 16000 = [IF]
6183     MOV #1,&$3E0
6184 [THEN]
6185 $1806 @ 24000 = [IF]
6186     MOV #2,&$3E0
6187 [THEN]
6188     MOV #19,&$3D2
6189 MOV #%0110_0000,&$3C6
6190     MOV #10,&$3D6
6191     BIS.B #$20,&$204
6192     BIS.B #$20,&$20A
6193     BIS.B #7,&$245
6194     BIC.B #7,&$247
6195     BIS.B #$0F,&$224
6196     BIC.B #$0F,&$226
6197     BIS.B #4,&$20A
6198     BIC.B #4,&$20C
6199     MOV #RC5_INT,&$FFDE
6200 MOV #%01_0001_0100,&$340
6201     MOV ##3276,&$352
6202     MOV #%10000,&$342
6203     MOV #WDT_INT,&$FFEA
6204 BIC #1,&$130
6205 BIS.B #3,&$20D
6206 MOV &$1808,R8
6207 CMP #4,R8
6208 0= ?GOTO BW1
6209 COLON
6210     #1000 20_US
6211     %011 TOP_LCD
6212     #205 20_US
6213     %011 TOP_LCD
6214     #5 20_US
6215     %011 TOP_LCD
6216     #2 20_US
6217     %010 TOP_LCD
6218     #2 20_US
6219     %00101000 LCD_WRF
6220     %1000 LCD_WRF
6221     LCD_CLEAR
6222     %0110 LCD_WRF
6223     %1100 LCD_WRF
6224     LCD_CLEAR
6225     ['] LCD_HOME IS CR
6226     ['] LCD_WRC  IS EMIT
6227     CR ." I love you"
6228     ['] CR >BODY IS CR
6229     ['] EMIT >BODY IS EMIT
6230     ." RC5toLCD is running. Type STOP to quit"
6231     PWR_STATE ABORT
6232 ;
6233
6234 CODE START
6235 MOV #$4000,R9
6236 MOV #BACKGROUND,2(R9)
6237 MOV #WARM,R9
6238 MOV #SYS_INIT,2(R9)
6239 MOV R9,R0
6240 ENDCODE 
6241 PWR_STATE
6242
6243 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
6244
6245 MARKER {RC5TOLCD}
6246
6247 [UNDEFINED] @ [IF]
6248 CODE @
6249 MOV @R14,R14
6250 MOV @R13+,R0
6251 ENDCODE
6252 [THEN]
6253
6254 [UNDEFINED] CONSTANT [IF]
6255 : CONSTANT 
6256 CREATE
6257 HI2LO
6258 MOV R14,-2(R10)
6259 MOV @R15+,R14
6260 MOV @R1+,R13
6261 MOV @R13+,R0
6262 ENDCODE
6263 [THEN]
6264
6265 [UNDEFINED] STATE [IF]
6266 $1DBE CONSTANT STATE
6267 [THEN]
6268
6269 [UNDEFINED] = [IF]
6270 CODE =
6271 SUB @R15+,R14
6272 0<> IF
6273     AND #0,R14
6274     MOV @R13+,R0
6275 THEN
6276 XOR #-1,R14
6277 MOV @R13+,R0
6278 ENDCODE
6279 [THEN]
6280
6281 [UNDEFINED] IF [IF]
6282 CODE IF
6283 SUB #2,R15
6284 MOV R14,0(R15)
6285 MOV &$1DC6,R14
6286 ADD #4,&$1DC6
6287 MOV #$4042,0(R14)
6288 ADD #2,R14
6289 MOV @R13+,R0
6290 ENDCODE IMMEDIATE
6291
6292 CODE THEN
6293 MOV &$1DC6,0(R14)
6294 MOV @R15+,R14
6295 MOV @R13+,R0
6296 ENDCODE IMMEDIATE
6297 [THEN]
6298
6299 [UNDEFINED] ELSE [IF]
6300 CODE ELSE
6301 ADD #4,&$1DC6
6302 MOV &$1DC6,R10
6303 MOV #$403E,-4(R10)
6304 MOV R10,0(R14)
6305 SUB #2,R10
6306 MOV R10,R14
6307 MOV @R13+,R0
6308 ENDCODE IMMEDIATE
6309 [THEN]
6310
6311 [UNDEFINED] IS [IF]
6312
6313 CODE DEFER!
6314 MOV @R15+,2(R14)
6315 MOV @R15+,R14
6316 MOV @R13+,R0
6317 ENDCODE
6318
6319
6320 : IS
6321 STATE @
6322 IF  POSTPONE ['] POSTPONE DEFER! 
6323 ELSE ' DEFER! 
6324 THEN
6325 ; IMMEDIATE
6326 [THEN]
6327
6328 [UNDEFINED] >BODY [IF]
6329 CODE >BODY
6330 ADD #4,R14
6331 MOV @R13+,R0
6332 ENDCODE
6333 [THEN]
6334
6335
6336 CODE 20_US
6337 BEGIN
6338     BEGIN
6339         BIT #1,&$3C0
6340     0<> UNTIL
6341     BIC #1,&$3C0
6342     SUB #1,R14
6343 U< UNTIL
6344 MOV @R15+,R14
6345 MOV @R13+,R0
6346 ENDCODE
6347
6348 CODE TOP_LCD
6349     BIS.B #4,&$243
6350     BIT.B #1,&$241
6351 0= IF
6352     AND.B #$0F,R14
6353     MOV.B R14,&$222
6354     BIC.B #4,&$243
6355     MOV @R15+,R14
6356     MOV @R13+,R0
6357 THEN
6358     SUB #2,R15
6359     MOV R14,0(R15)
6360     BIC.B #4,&$243
6361     MOV.B &$220,R14
6362     AND.B #$0F,R14
6363     MOV @R13+,R0
6364 ENDCODE
6365
6366 CODE LCD_WRC
6367     BIS.B #2,&$243
6368 BW1 SUB #2,R15
6369     MOV R14,0(R15)
6370     RRUM #4,R14
6371     BIC.B #1,&$243
6372     BIS.B #$0F,&$224
6373 COLON
6374     TOP_LCD 2 20_US
6375     TOP_LCD 2 20_US 
6376 ;
6377
6378 CODE LCD_WRF
6379     BIC.B #2,&$243
6380     GOTO BW1
6381 ENDCODE
6382
6383 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
6384 : LCD_HOME $02 LCD_WRF 100 20_us ;
6385
6386
6387
6388 ASM WDT_INT
6389 ADD #2,R1
6390 BIT.B #$20,&$240
6391 0= IF
6392     CMP #19,&$3D6
6393     U< IF
6394         ADD #1,&$3D6
6395     THEN
6396 ELSE
6397     BIT.B #$40,&$240
6398     0= IF
6399         CMP #3,&$3D6
6400         U>= IF
6401            SUB #1,&$3D6
6402         THEN
6403     THEN
6404 THEN
6405 BW1
6406 MOV @R1+,R0
6407 ENDASM
6408
6409 ASM RC5_INT
6410 ADD #2,R1
6411 $1806 @ 16000 = [IF]
6412     MOV #1,&$3A0
6413 [THEN]
6414 $1806 @ 24000 = [IF]
6415     MOV #2,&$3A0
6416 [THEN]
6417 MOV #1778,R9
6418 MOV #14,R10
6419 BEGIN
6420 MOV #%1011100100,&$380
6421     RRUM    #1,R9
6422     MOV     R9,R8
6423     RRUM    #1,R8
6424     ADD     R9,R8
6425     BEGIN   CMP R8,&$390
6426     U>= UNTIL
6427     BIT.B   #4,&$200
6428     ADDC    R11,R11
6429     MOV.B   &$200,&$208
6430     BIC.B   #4,&$20C
6431     SUB     #1,R10
6432 0<> WHILE
6433     ADD R9,R8
6434     BEGIN
6435         MOV &$390,R9
6436         CMP R8,R9
6437         U>= IF
6438         BIC #$30,&$380
6439         GOTO BW1
6440         THEN
6441         BIT.B #4,&$20C
6442     0<> UNTIL
6443 REPEAT
6444 BIC #$30,&$380
6445 RLAM    #1,R11
6446 MOV.B   R11,R9
6447 RRUM    #2,R9
6448 BIT     #$4000,R11
6449 0= IF   BIS #$40,R9
6450 THEN
6451 RRUM    #3,R11
6452 XOR     @R1,R11
6453 BIT     #$400,R11
6454 0= ?GOTO BW1
6455 XOR #$400,0(R1)
6456 SUB #8,R15
6457 MOV R14,6(R15)
6458 MOV &$1DDC,4(R15)
6459 MOV #$10,&$1DDC
6460 MOV R9,0(R15)
6461 MOV #0,R14
6462 LO2HI
6463     LCD_CLEAR
6464     <# # #S #36 HOLD #>
6465     ['] LCD_WRC IS EMIT
6466     TYPE
6467     ['] EMIT >BODY IS EMIT
6468 HI2LO
6469 MOV @R15+,&$1DDC
6470 MOV @R15+,R14
6471 MOV @R1+,R0
6472 ENDASM
6473
6474 ASM BACKGROUND
6475 BEGIN
6476     CALL &$1814
6477     BIS &$180A,R2
6478 AGAIN
6479 ENDASM
6480
6481 ASM SYS_OUT
6482     MOV #WARM,R9
6483     ADD #4,R9
6484     MOV R9,R0
6485 ENDASM
6486
6487 CODE STOP
6488 BW1 MOV #$4000,R9
6489     ADD #4,R9
6490     MOV R9,-2(R9)
6491     MOV #WARM,R9
6492     MOV #SYS_OUT,2(R9)
6493     BIC.B #4,&$20A
6494     BIC.B #4,&$20C
6495     MOV #0,&$3C0
6496     MOV #0,&$340
6497     MOV #0,&$342
6498     MOV #COLD,R9
6499     MOV R9,&$FFDE
6500     MOV R9,&$FFEA
6501 COLON
6502 ECHO
6503 ." RC5toLCD is removed,"
6504 ."  type START to restart"
6505  WARM
6506 ;
6507
6508 CODE SYS_INIT
6509 MOV #%10_1101_0100,&$3C0
6510 $1806 @ 16000 = [IF]
6511     MOV #1,&$3E0
6512 [THEN]
6513 $1806 @ 24000 = [IF]
6514     MOV #2,&$3E0
6515 [THEN]
6516     MOV #19,&$3D2
6517 MOV #%0110_0000,&$3C6
6518     MOV #10,&$3D6
6519     BIS.B #$20,&$204
6520     BIS.B #$20,&$20A
6521     BIS.B #7,&$245
6522     BIC.B #7,&$247
6523     BIS.B #$0F,&$224
6524     BIC.B #$0F,&$226
6525     BIS.B #4,&$20A
6526     BIC.B #4,&$20C
6527     MOV #RC5_INT,&$FFDE
6528 MOV #%01_0001_0100,&$340
6529     MOV ##3276,&$352
6530     MOV #%10000,&$342
6531     MOV #WDT_INT,&$FFEA
6532 BIC #1,&$130
6533 BIS.B #3,&$20D
6534 MOV &$1808,R8
6535 CMP #4,R8
6536 0= ?GOTO BW1
6537 COLON
6538     #1000 20_US
6539     %011 TOP_LCD
6540     #205 20_US
6541     %011 TOP_LCD
6542     #5 20_US
6543     %011 TOP_LCD
6544     #2 20_US
6545     %010 TOP_LCD
6546     #2 20_US
6547     %00101000 LCD_WRF
6548     %1000 LCD_WRF
6549     LCD_CLEAR
6550     %0110 LCD_WRF
6551     %1100 LCD_WRF
6552     LCD_CLEAR
6553     ['] LCD_HOME IS CR
6554     ['] LCD_WRC  IS EMIT
6555     CR ." I love you"
6556     ['] CR >BODY IS CR
6557     ['] EMIT >BODY IS EMIT
6558     ." RC5toLCD is running. Type STOP to quit"
6559     PWR_STATE ABORT
6560 ;
6561
6562 CODE START
6563 MOV #$4000,R9
6564 MOV #BACKGROUND,2(R9)
6565 MOV #WARM,R9
6566 MOV #SYS_INIT,2(R9)
6567 MOV R9,R0
6568 ENDCODE 
6569 PWR_STATE
6570
6571 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
6572
6573 MARKER {RC5TOLCD}
6574
6575 [UNDEFINED] @ [IF]
6576 CODE @
6577 MOV @R14,R14
6578 MOV @R13+,R0
6579 ENDCODE
6580 [THEN]
6581
6582 [UNDEFINED] CONSTANT [IF]
6583 : CONSTANT 
6584 CREATE
6585 HI2LO
6586 MOV R14,-2(R10)
6587 MOV @R15+,R14
6588 MOV @R1+,R13
6589 MOV @R13+,R0
6590 ENDCODE
6591 [THEN]
6592
6593 [UNDEFINED] STATE [IF]
6594 $1DBE CONSTANT STATE
6595 [THEN]
6596
6597 [UNDEFINED] = [IF]
6598 CODE =
6599 SUB @R15+,R14
6600 0<> IF
6601     AND #0,R14
6602     MOV @R13+,R0
6603 THEN
6604 XOR #-1,R14
6605 MOV @R13+,R0
6606 ENDCODE
6607 [THEN]
6608
6609 [UNDEFINED] IF [IF]
6610 CODE IF
6611 SUB #2,R15
6612 MOV R14,0(R15)
6613 MOV &$1DC6,R14
6614 ADD #4,&$1DC6
6615 MOV #$4042,0(R14)
6616 ADD #2,R14
6617 MOV @R13+,R0
6618 ENDCODE IMMEDIATE
6619
6620 CODE THEN
6621 MOV &$1DC6,0(R14)
6622 MOV @R15+,R14
6623 MOV @R13+,R0
6624 ENDCODE IMMEDIATE
6625 [THEN]
6626
6627 [UNDEFINED] ELSE [IF]
6628 CODE ELSE
6629 ADD #4,&$1DC6
6630 MOV &$1DC6,R10
6631 MOV #$403E,-4(R10)
6632 MOV R10,0(R14)
6633 SUB #2,R10
6634 MOV R10,R14
6635 MOV @R13+,R0
6636 ENDCODE IMMEDIATE
6637 [THEN]
6638
6639 [UNDEFINED] IS [IF]
6640
6641 CODE DEFER!
6642 MOV @R15+,2(R14)
6643 MOV @R15+,R14
6644 MOV @R13+,R0
6645 ENDCODE
6646
6647
6648 : IS
6649 STATE @
6650 IF  POSTPONE ['] POSTPONE DEFER! 
6651 ELSE ' DEFER! 
6652 THEN
6653 ; IMMEDIATE
6654 [THEN]
6655
6656 [UNDEFINED] >BODY [IF]
6657 CODE >BODY
6658 ADD #4,R14
6659 MOV @R13+,R0
6660 ENDCODE
6661 [THEN]
6662
6663
6664 CODE 20_US
6665 BEGIN
6666     BEGIN
6667         BIT #1,&$3C0
6668     0<> UNTIL
6669     BIC #1,&$3C0
6670     SUB #1,R14
6671 U< UNTIL
6672 MOV @R15+,R14
6673 MOV @R13+,R0
6674 ENDCODE
6675
6676 CODE TOP_LCD
6677     BIS.B #4,&$243
6678     BIT.B #1,&$241
6679 0= IF
6680     AND.B #$0F,R14
6681     MOV.B R14,&$222
6682     BIC.B #4,&$243
6683     MOV @R15+,R14
6684     MOV @R13+,R0
6685 THEN
6686     SUB #2,R15
6687     MOV R14,0(R15)
6688     BIC.B #4,&$243
6689     MOV.B &$220,R14
6690     AND.B #$0F,R14
6691     MOV @R13+,R0
6692 ENDCODE
6693
6694 CODE LCD_WRC
6695     BIS.B #2,&$243
6696 BW1 SUB #2,R15
6697     MOV R14,0(R15)
6698     RRUM #4,R14
6699     BIC.B #1,&$243
6700     BIS.B #$0F,&$224
6701 COLON
6702     TOP_LCD 2 20_US
6703     TOP_LCD 2 20_US 
6704 ;
6705
6706 CODE LCD_WRF
6707     BIC.B #2,&$243
6708     GOTO BW1
6709 ENDCODE
6710
6711 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
6712 : LCD_HOME $02 LCD_WRF 100 20_us ;
6713
6714
6715
6716 ASM WDT_INT
6717 ADD #2,R1
6718 BIT.B #$20,&$240
6719 0= IF
6720     CMP #19,&$3D6
6721     U< IF
6722         ADD #1,&$3D6
6723     THEN
6724 ELSE
6725     BIT.B #$40,&$240
6726     0= IF
6727         CMP #3,&$3D6
6728         U>= IF
6729            SUB #1,&$3D6
6730         THEN
6731     THEN
6732 THEN
6733 BW1
6734 MOV @R1+,R0
6735 ENDASM
6736
6737 ASM RC5_INT
6738 ADD #2,R1
6739 $1806 @ 16000 = [IF]
6740     MOV #1,&$3A0
6741 [THEN]
6742 $1806 @ 24000 = [IF]
6743     MOV #2,&$3A0
6744 [THEN]
6745 MOV #1778,R9
6746 MOV #14,R10
6747 BEGIN
6748 MOV #%1011100100,&$380
6749     RRUM    #1,R9
6750     MOV     R9,R8
6751     RRUM    #1,R8
6752     ADD     R9,R8
6753     BEGIN   CMP R8,&$390
6754     U>= UNTIL
6755     BIT.B   #4,&$200
6756     ADDC    R11,R11
6757     MOV.B   &$200,&$208
6758     BIC.B   #4,&$20C
6759     SUB     #1,R10
6760 0<> WHILE
6761     ADD R9,R8
6762     BEGIN
6763         MOV &$390,R9
6764         CMP R8,R9
6765         U>= IF
6766         BIC #$30,&$380
6767         GOTO BW1
6768         THEN
6769         BIT.B #4,&$20C
6770     0<> UNTIL
6771 REPEAT
6772 BIC #$30,&$380
6773 RLAM    #1,R11
6774 MOV.B   R11,R9
6775 RRUM    #2,R9
6776 BIT     #$4000,R11
6777 0= IF   BIS #$40,R9
6778 THEN
6779 RRUM    #3,R11
6780 XOR     @R1,R11
6781 BIT     #$400,R11
6782 0= ?GOTO BW1
6783 XOR #$400,0(R1)
6784 SUB #8,R15
6785 MOV R14,6(R15)
6786 MOV &$1DDC,4(R15)
6787 MOV #$10,&$1DDC
6788 MOV R9,0(R15)
6789 MOV #0,R14
6790 LO2HI
6791     LCD_CLEAR
6792     <# # #S #36 HOLD #>
6793     ['] LCD_WRC IS EMIT
6794     TYPE
6795     ['] EMIT >BODY IS EMIT
6796 HI2LO
6797 MOV @R15+,&$1DDC
6798 MOV @R15+,R14
6799 MOV @R1+,R0
6800 ENDASM
6801
6802 ASM BACKGROUND
6803 BEGIN
6804     CALL &$1814
6805     BIS &$180A,R2
6806 AGAIN
6807 ENDASM
6808
6809 ASM SYS_OUT
6810     MOV #WARM,R9
6811     ADD #4,R9
6812     MOV R9,R0
6813 ENDASM
6814
6815 CODE STOP
6816 BW1 MOV #$4000,R9
6817     ADD #4,R9
6818     MOV R9,-2(R9)
6819     MOV #WARM,R9
6820     MOV #SYS_OUT,2(R9)
6821     BIC.B #4,&$20A
6822     BIC.B #4,&$20C
6823     MOV #0,&$3C0
6824     MOV #0,&$340
6825     MOV #0,&$342
6826     MOV #COLD,R9
6827     MOV R9,&$FFDE
6828     MOV R9,&$FFEA
6829 COLON
6830 ECHO
6831 ." RC5toLCD is removed,"
6832 ."  type START to restart"
6833  WARM
6834 ;
6835
6836 CODE SYS_INIT
6837 MOV #%10_1101_0100,&$3C0
6838 $1806 @ 16000 = [IF]
6839     MOV #1,&$3E0
6840 [THEN]
6841 $1806 @ 24000 = [IF]
6842     MOV #2,&$3E0
6843 [THEN]
6844     MOV #19,&$3D2
6845 MOV #%0110_0000,&$3C6
6846     MOV #10,&$3D6
6847     BIS.B #$20,&$204
6848     BIS.B #$20,&$20A
6849     BIS.B #7,&$245
6850     BIC.B #7,&$247
6851     BIS.B #$0F,&$224
6852     BIC.B #$0F,&$226
6853     BIS.B #4,&$20A
6854     BIC.B #4,&$20C
6855     MOV #RC5_INT,&$FFDE
6856 MOV #%01_0001_0100,&$340
6857     MOV ##3276,&$352
6858     MOV #%10000,&$342
6859     MOV #WDT_INT,&$FFEA
6860 BIC #1,&$130
6861 BIS.B #3,&$20D
6862 MOV &$1808,R8
6863 CMP #4,R8
6864 0= ?GOTO BW1
6865 COLON
6866     #1000 20_US
6867     %011 TOP_LCD
6868     #205 20_US
6869     %011 TOP_LCD
6870     #5 20_US
6871     %011 TOP_LCD
6872     #2 20_US
6873     %010 TOP_LCD
6874     #2 20_US
6875     %00101000 LCD_WRF
6876     %1000 LCD_WRF
6877     LCD_CLEAR
6878     %0110 LCD_WRF
6879     %1100 LCD_WRF
6880     LCD_CLEAR
6881     ['] LCD_HOME IS CR
6882     ['] LCD_WRC  IS EMIT
6883     CR ." I love you"
6884     ['] CR >BODY IS CR
6885     ['] EMIT >BODY IS EMIT
6886     ." RC5toLCD is running. Type STOP to quit"
6887     PWR_STATE ABORT
6888 ;
6889
6890 CODE START
6891 MOV #$4000,R9
6892 MOV #BACKGROUND,2(R9)
6893 MOV #WARM,R9
6894 MOV #SYS_INIT,2(R9)
6895 MOV R9,R0
6896 ENDCODE 
6897 PWR_STATE
6898
6899 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
6900
6901 MARKER {RC5TOLCD}
6902
6903 [UNDEFINED] @ [IF]
6904 CODE @
6905 MOV @R14,R14
6906 MOV @R13+,R0
6907 ENDCODE
6908 [THEN]
6909
6910 [UNDEFINED] CONSTANT [IF]
6911 : CONSTANT 
6912 CREATE
6913 HI2LO
6914 MOV R14,-2(R10)
6915 MOV @R15+,R14
6916 MOV @R1+,R13
6917 MOV @R13+,R0
6918 ENDCODE
6919 [THEN]
6920
6921 [UNDEFINED] STATE [IF]
6922 $1DBE CONSTANT STATE
6923 [THEN]
6924
6925 [UNDEFINED] = [IF]
6926 CODE =
6927 SUB @R15+,R14
6928 0<> IF
6929     AND #0,R14
6930     MOV @R13+,R0
6931 THEN
6932 XOR #-1,R14
6933 MOV @R13+,R0
6934 ENDCODE
6935 [THEN]
6936
6937 [UNDEFINED] IF [IF]
6938 CODE IF
6939 SUB #2,R15
6940 MOV R14,0(R15)
6941 MOV &$1DC6,R14
6942 ADD #4,&$1DC6
6943 MOV #$4042,0(R14)
6944 ADD #2,R14
6945 MOV @R13+,R0
6946 ENDCODE IMMEDIATE
6947
6948 CODE THEN
6949 MOV &$1DC6,0(R14)
6950 MOV @R15+,R14
6951 MOV @R13+,R0
6952 ENDCODE IMMEDIATE
6953 [THEN]
6954
6955 [UNDEFINED] ELSE [IF]
6956 CODE ELSE
6957 ADD #4,&$1DC6
6958 MOV &$1DC6,R10
6959 MOV #$403E,-4(R10)
6960 MOV R10,0(R14)
6961 SUB #2,R10
6962 MOV R10,R14
6963 MOV @R13+,R0
6964 ENDCODE IMMEDIATE
6965 [THEN]
6966
6967 [UNDEFINED] IS [IF]
6968
6969 CODE DEFER!
6970 MOV @R15+,2(R14)
6971 MOV @R15+,R14
6972 MOV @R13+,R0
6973 ENDCODE
6974
6975
6976 : IS
6977 STATE @
6978 IF  POSTPONE ['] POSTPONE DEFER! 
6979 ELSE ' DEFER! 
6980 THEN
6981 ; IMMEDIATE
6982 [THEN]
6983
6984 [UNDEFINED] >BODY [IF]
6985 CODE >BODY
6986 ADD #4,R14
6987 MOV @R13+,R0
6988 ENDCODE
6989 [THEN]
6990
6991
6992 CODE 20_US
6993 BEGIN
6994     BEGIN
6995         BIT #1,&$3C0
6996     0<> UNTIL
6997     BIC #1,&$3C0
6998     SUB #1,R14
6999 U< UNTIL
7000 MOV @R15+,R14
7001 MOV @R13+,R0
7002 ENDCODE
7003
7004 CODE TOP_LCD
7005     BIS.B #4,&$243
7006     BIT.B #1,&$241
7007 0= IF
7008     AND.B #$0F,R14
7009     MOV.B R14,&$222
7010     BIC.B #4,&$243
7011     MOV @R15+,R14
7012     MOV @R13+,R0
7013 THEN
7014     SUB #2,R15
7015     MOV R14,0(R15)
7016     BIC.B #4,&$243
7017     MOV.B &$220,R14
7018     AND.B #$0F,R14
7019     MOV @R13+,R0
7020 ENDCODE
7021
7022 CODE LCD_WRC
7023     BIS.B #2,&$243
7024 BW1 SUB #2,R15
7025     MOV R14,0(R15)
7026     RRUM #4,R14
7027     BIC.B #1,&$243
7028     BIS.B #$0F,&$224
7029 COLON
7030     TOP_LCD 2 20_US
7031     TOP_LCD 2 20_US 
7032 ;
7033
7034 CODE LCD_WRF
7035     BIC.B #2,&$243
7036     GOTO BW1
7037 ENDCODE
7038
7039 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
7040 : LCD_HOME $02 LCD_WRF 100 20_us ;
7041
7042
7043
7044 ASM WDT_INT
7045 ADD #2,R1
7046 BIT.B #$20,&$240
7047 0= IF
7048     CMP #19,&$3D6
7049     U< IF
7050         ADD #1,&$3D6
7051     THEN
7052 ELSE
7053     BIT.B #$40,&$240
7054     0= IF
7055         CMP #3,&$3D6
7056         U>= IF
7057            SUB #1,&$3D6
7058         THEN
7059     THEN
7060 THEN
7061 BW1
7062 MOV @R1+,R0
7063 ENDASM
7064
7065 ASM RC5_INT
7066 ADD #2,R1
7067 $1806 @ 16000 = [IF]
7068     MOV #1,&$3A0
7069 [THEN]
7070 $1806 @ 24000 = [IF]
7071     MOV #2,&$3A0
7072 [THEN]
7073 MOV #1778,R9
7074 MOV #14,R10
7075 BEGIN
7076 MOV #%1011100100,&$380
7077     RRUM    #1,R9
7078     MOV     R9,R8
7079     RRUM    #1,R8
7080     ADD     R9,R8
7081     BEGIN   CMP R8,&$390
7082     U>= UNTIL
7083     BIT.B   #4,&$200
7084     ADDC    R11,R11
7085     MOV.B   &$200,&$208
7086     BIC.B   #4,&$20C
7087     SUB     #1,R10
7088 0<> WHILE
7089     ADD R9,R8
7090     BEGIN
7091         MOV &$390,R9
7092         CMP R8,R9
7093         U>= IF
7094         BIC #$30,&$380
7095         GOTO BW1
7096         THEN
7097         BIT.B #4,&$20C
7098     0<> UNTIL
7099 REPEAT
7100 BIC #$30,&$380
7101 RLAM    #1,R11
7102 MOV.B   R11,R9
7103 RRUM    #2,R9
7104 BIT     #$4000,R11
7105 0= IF   BIS #$40,R9
7106 THEN
7107 RRUM    #3,R11
7108 XOR     @R1,R11
7109 BIT     #$400,R11
7110 0= ?GOTO BW1
7111 XOR #$400,0(R1)
7112 SUB #8,R15
7113 MOV R14,6(R15)
7114 MOV &$1DDC,4(R15)
7115 MOV #$10,&$1DDC
7116 MOV R9,0(R15)
7117 MOV #0,R14
7118 LO2HI
7119     LCD_CLEAR
7120     <# # #S #36 HOLD #>
7121     ['] LCD_WRC IS EMIT
7122     TYPE
7123     ['] EMIT >BODY IS EMIT
7124 HI2LO
7125 MOV @R15+,&$1DDC
7126 MOV @R15+,R14
7127 MOV @R1+,R0
7128 ENDASM
7129
7130 ASM BACKGROUND
7131 BEGIN
7132     CALL &$1814
7133     BIS &$180A,R2
7134 AGAIN
7135 ENDASM
7136
7137 ASM SYS_OUT
7138     MOV #WARM,R9
7139     ADD #4,R9
7140     MOV R9,R0
7141 ENDASM
7142
7143 CODE STOP
7144 BW1 MOV #$4000,R9
7145     ADD #4,R9
7146     MOV R9,-2(R9)
7147     MOV #WARM,R9
7148     MOV #SYS_OUT,2(R9)
7149     BIC.B #4,&$20A
7150     BIC.B #4,&$20C
7151     MOV #0,&$3C0
7152     MOV #0,&$340
7153     MOV #0,&$342
7154     MOV #COLD,R9
7155     MOV R9,&$FFDE
7156     MOV R9,&$FFEA
7157 COLON
7158 ECHO
7159 ." RC5toLCD is removed,"
7160 ."  type START to restart"
7161  WARM
7162 ;
7163
7164 CODE SYS_INIT
7165 MOV #%10_1101_0100,&$3C0
7166 $1806 @ 16000 = [IF]
7167     MOV #1,&$3E0
7168 [THEN]
7169 $1806 @ 24000 = [IF]
7170     MOV #2,&$3E0
7171 [THEN]
7172     MOV #19,&$3D2
7173 MOV #%0110_0000,&$3C6
7174     MOV #10,&$3D6
7175     BIS.B #$20,&$204
7176     BIS.B #$20,&$20A
7177     BIS.B #7,&$245
7178     BIC.B #7,&$247
7179     BIS.B #$0F,&$224
7180     BIC.B #$0F,&$226
7181     BIS.B #4,&$20A
7182     BIC.B #4,&$20C
7183     MOV #RC5_INT,&$FFDE
7184 MOV #%01_0001_0100,&$340
7185     MOV ##3276,&$352
7186     MOV #%10000,&$342
7187     MOV #WDT_INT,&$FFEA
7188 BIC #1,&$130
7189 BIS.B #3,&$20D
7190 MOV &$1808,R8
7191 CMP #4,R8
7192 0= ?GOTO BW1
7193 COLON
7194     #1000 20_US
7195     %011 TOP_LCD
7196     #205 20_US
7197     %011 TOP_LCD
7198     #5 20_US
7199     %011 TOP_LCD
7200     #2 20_US
7201     %010 TOP_LCD
7202     #2 20_US
7203     %00101000 LCD_WRF
7204     %1000 LCD_WRF
7205     LCD_CLEAR
7206     %0110 LCD_WRF
7207     %1100 LCD_WRF
7208     LCD_CLEAR
7209     ['] LCD_HOME IS CR
7210     ['] LCD_WRC  IS EMIT
7211     CR ." I love you"
7212     ['] CR >BODY IS CR
7213     ['] EMIT >BODY IS EMIT
7214     ." RC5toLCD is running. Type STOP to quit"
7215     PWR_STATE ABORT
7216 ;
7217
7218 CODE START
7219 MOV #$4000,R9
7220 MOV #BACKGROUND,2(R9)
7221 MOV #WARM,R9
7222 MOV #SYS_INIT,2(R9)
7223 MOV R9,R0
7224 ENDCODE 
7225 PWR_STATE
7226
7227 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
7228
7229 MARKER {RC5TOLCD}
7230
7231 [UNDEFINED] @ [IF]
7232 CODE @
7233 MOV @R14,R14
7234 MOV @R13+,R0
7235 ENDCODE
7236 [THEN]
7237
7238 [UNDEFINED] CONSTANT [IF]
7239 : CONSTANT 
7240 CREATE
7241 HI2LO
7242 MOV R14,-2(R10)
7243 MOV @R15+,R14
7244 MOV @R1+,R13
7245 MOV @R13+,R0
7246 ENDCODE
7247 [THEN]
7248
7249 [UNDEFINED] STATE [IF]
7250 $1DBE CONSTANT STATE
7251 [THEN]
7252
7253 [UNDEFINED] = [IF]
7254 CODE =
7255 SUB @R15+,R14
7256 0<> IF
7257     AND #0,R14
7258     MOV @R13+,R0
7259 THEN
7260 XOR #-1,R14
7261 MOV @R13+,R0
7262 ENDCODE
7263 [THEN]
7264
7265 [UNDEFINED] IF [IF]
7266 CODE IF
7267 SUB #2,R15
7268 MOV R14,0(R15)
7269 MOV &$1DC6,R14
7270 ADD #4,&$1DC6
7271 MOV #$4042,0(R14)
7272 ADD #2,R14
7273 MOV @R13+,R0
7274 ENDCODE IMMEDIATE
7275
7276 CODE THEN
7277 MOV &$1DC6,0(R14)
7278 MOV @R15+,R14
7279 MOV @R13+,R0
7280 ENDCODE IMMEDIATE
7281 [THEN]
7282
7283 [UNDEFINED] ELSE [IF]
7284 CODE ELSE
7285 ADD #4,&$1DC6
7286 MOV &$1DC6,R10
7287 MOV #$403E,-4(R10)
7288 MOV R10,0(R14)
7289 SUB #2,R10
7290 MOV R10,R14
7291 MOV @R13+,R0
7292 ENDCODE IMMEDIATE
7293 [THEN]
7294
7295 [UNDEFINED] IS [IF]
7296
7297 CODE DEFER!
7298 MOV @R15+,2(R14)
7299 MOV @R15+,R14
7300 MOV @R13+,R0
7301 ENDCODE
7302
7303
7304 : IS
7305 STATE @
7306 IF  POSTPONE ['] POSTPONE DEFER! 
7307 ELSE ' DEFER! 
7308 THEN
7309 ; IMMEDIATE
7310 [THEN]
7311
7312 [UNDEFINED] >BODY [IF]
7313 CODE >BODY
7314 ADD #4,R14
7315 MOV @R13+,R0
7316 ENDCODE
7317 [THEN]
7318
7319
7320 CODE 20_US
7321 BEGIN
7322     BEGIN
7323         BIT #1,&$3C0
7324     0<> UNTIL
7325     BIC #1,&$3C0
7326     SUB #1,R14
7327 U< UNTIL
7328 MOV @R15+,R14
7329 MOV @R13+,R0
7330 ENDCODE
7331
7332 CODE TOP_LCD
7333     BIS.B #4,&$243
7334     BIT.B #1,&$241
7335 0= IF
7336     AND.B #$0F,R14
7337     MOV.B R14,&$222
7338     BIC.B #4,&$243
7339     MOV @R15+,R14
7340     MOV @R13+,R0
7341 THEN
7342     SUB #2,R15
7343     MOV R14,0(R15)
7344     BIC.B #4,&$243
7345     MOV.B &$220,R14
7346     AND.B #$0F,R14
7347     MOV @R13+,R0
7348 ENDCODE
7349
7350 CODE LCD_WRC
7351     BIS.B #2,&$243
7352 BW1 SUB #2,R15
7353     MOV R14,0(R15)
7354     RRUM #4,R14
7355     BIC.B #1,&$243
7356     BIS.B #$0F,&$224
7357 COLON
7358     TOP_LCD 2 20_US
7359     TOP_LCD 2 20_US 
7360 ;
7361
7362 CODE LCD_WRF
7363     BIC.B #2,&$243
7364     GOTO BW1
7365 ENDCODE
7366
7367 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
7368 : LCD_HOME $02 LCD_WRF 100 20_us ;
7369
7370
7371
7372 ASM WDT_INT
7373 ADD #2,R1
7374 BIT.B #$20,&$240
7375 0= IF
7376     CMP #19,&$3D6
7377     U< IF
7378         ADD #1,&$3D6
7379     THEN
7380 ELSE
7381     BIT.B #$40,&$240
7382     0= IF
7383         CMP #3,&$3D6
7384         U>= IF
7385            SUB #1,&$3D6
7386         THEN
7387     THEN
7388 THEN
7389 BW1
7390 MOV @R1+,R0
7391 ENDASM
7392
7393 ASM RC5_INT
7394 ADD #2,R1
7395 $1806 @ 16000 = [IF]
7396     MOV #1,&$3A0
7397 [THEN]
7398 $1806 @ 24000 = [IF]
7399     MOV #2,&$3A0
7400 [THEN]
7401 MOV #1778,R9
7402 MOV #14,R10
7403 BEGIN
7404 MOV #%1011100100,&$380
7405     RRUM    #1,R9
7406     MOV     R9,R8
7407     RRUM    #1,R8
7408     ADD     R9,R8
7409     BEGIN   CMP R8,&$390
7410     U>= UNTIL
7411     BIT.B   #4,&$200
7412     ADDC    R11,R11
7413     MOV.B   &$200,&$208
7414     BIC.B   #4,&$20C
7415     SUB     #1,R10
7416 0<> WHILE
7417     ADD R9,R8
7418     BEGIN
7419         MOV &$390,R9
7420         CMP R8,R9
7421         U>= IF
7422         BIC #$30,&$380
7423         GOTO BW1
7424         THEN
7425         BIT.B #4,&$20C
7426     0<> UNTIL
7427 REPEAT
7428 BIC #$30,&$380
7429 RLAM    #1,R11
7430 MOV.B   R11,R9
7431 RRUM    #2,R9
7432 BIT     #$4000,R11
7433 0= IF   BIS #$40,R9
7434 THEN
7435 RRUM    #3,R11
7436 XOR     @R1,R11
7437 BIT     #$400,R11
7438 0= ?GOTO BW1
7439 XOR #$400,0(R1)
7440 SUB #8,R15
7441 MOV R14,6(R15)
7442 MOV &$1DDC,4(R15)
7443 MOV #$10,&$1DDC
7444 MOV R9,0(R15)
7445 MOV #0,R14
7446 LO2HI
7447     LCD_CLEAR
7448     <# # #S #36 HOLD #>
7449     ['] LCD_WRC IS EMIT
7450     TYPE
7451     ['] EMIT >BODY IS EMIT
7452 HI2LO
7453 MOV @R15+,&$1DDC
7454 MOV @R15+,R14
7455 MOV @R1+,R0
7456 ENDASM
7457
7458 ASM BACKGROUND
7459 BEGIN
7460     CALL &$1814
7461     BIS &$180A,R2
7462 AGAIN
7463 ENDASM
7464
7465 ASM SYS_OUT
7466     MOV #WARM,R9
7467     ADD #4,R9
7468     MOV R9,R0
7469 ENDASM
7470
7471 CODE STOP
7472 BW1 MOV #$4000,R9
7473     ADD #4,R9
7474     MOV R9,-2(R9)
7475     MOV #WARM,R9
7476     MOV #SYS_OUT,2(R9)
7477     BIC.B #4,&$20A
7478     BIC.B #4,&$20C
7479     MOV #0,&$3C0
7480     MOV #0,&$340
7481     MOV #0,&$342
7482     MOV #COLD,R9
7483     MOV R9,&$FFDE
7484     MOV R9,&$FFEA
7485 COLON
7486 ECHO
7487 ." RC5toLCD is removed,"
7488 ."  type START to restart"
7489  WARM
7490 ;
7491
7492 CODE SYS_INIT
7493 MOV #%10_1101_0100,&$3C0
7494 $1806 @ 16000 = [IF]
7495     MOV #1,&$3E0
7496 [THEN]
7497 $1806 @ 24000 = [IF]
7498     MOV #2,&$3E0
7499 [THEN]
7500     MOV #19,&$3D2
7501 MOV #%0110_0000,&$3C6
7502     MOV #10,&$3D6
7503     BIS.B #$20,&$204
7504     BIS.B #$20,&$20A
7505     BIS.B #7,&$245
7506     BIC.B #7,&$247
7507     BIS.B #$0F,&$224
7508     BIC.B #$0F,&$226
7509     BIS.B #4,&$20A
7510     BIC.B #4,&$20C
7511     MOV #RC5_INT,&$FFDE
7512 MOV #%01_0001_0100,&$340
7513     MOV ##3276,&$352
7514     MOV #%10000,&$342
7515     MOV #WDT_INT,&$FFEA
7516 BIC #1,&$130
7517 BIS.B #3,&$20D
7518 MOV &$1808,R8
7519 CMP #4,R8
7520 0= ?GOTO BW1
7521 COLON
7522     #1000 20_US
7523     %011 TOP_LCD
7524     #205 20_US
7525     %011 TOP_LCD
7526     #5 20_US
7527     %011 TOP_LCD
7528     #2 20_US
7529     %010 TOP_LCD
7530     #2 20_US
7531     %00101000 LCD_WRF
7532     %1000 LCD_WRF
7533     LCD_CLEAR
7534     %0110 LCD_WRF
7535     %1100 LCD_WRF
7536     LCD_CLEAR
7537     ['] LCD_HOME IS CR
7538     ['] LCD_WRC  IS EMIT
7539     CR ." I love you"
7540     ['] CR >BODY IS CR
7541     ['] EMIT >BODY IS EMIT
7542     ." RC5toLCD is running. Type STOP to quit"
7543     PWR_STATE ABORT
7544 ;
7545
7546 CODE START
7547 MOV #$4000,R9
7548 MOV #BACKGROUND,2(R9)
7549 MOV #WARM,R9
7550 MOV #SYS_INIT,2(R9)
7551 MOV R9,R0
7552 ENDCODE 
7553 PWR_STATE
7554
7555 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
7556
7557 MARKER {RC5TOLCD}
7558
7559 [UNDEFINED] @ [IF]
7560 CODE @
7561 MOV @R14,R14
7562 MOV @R13+,R0
7563 ENDCODE
7564 [THEN]
7565
7566 [UNDEFINED] CONSTANT [IF]
7567 : CONSTANT 
7568 CREATE
7569 HI2LO
7570 MOV R14,-2(R10)
7571 MOV @R15+,R14
7572 MOV @R1+,R13
7573 MOV @R13+,R0
7574 ENDCODE
7575 [THEN]
7576
7577 [UNDEFINED] STATE [IF]
7578 $1DBE CONSTANT STATE
7579 [THEN]
7580
7581 [UNDEFINED] = [IF]
7582 CODE =
7583 SUB @R15+,R14
7584 0<> IF
7585     AND #0,R14
7586     MOV @R13+,R0
7587 THEN
7588 XOR #-1,R14
7589 MOV @R13+,R0
7590 ENDCODE
7591 [THEN]
7592
7593 [UNDEFINED] IF [IF]
7594 CODE IF
7595 SUB #2,R15
7596 MOV R14,0(R15)
7597 MOV &$1DC6,R14
7598 ADD #4,&$1DC6
7599 MOV #$4042,0(R14)
7600 ADD #2,R14
7601 MOV @R13+,R0
7602 ENDCODE IMMEDIATE
7603
7604 CODE THEN
7605 MOV &$1DC6,0(R14)
7606 MOV @R15+,R14
7607 MOV @R13+,R0
7608 ENDCODE IMMEDIATE
7609 [THEN]
7610
7611 [UNDEFINED] ELSE [IF]
7612 CODE ELSE
7613 ADD #4,&$1DC6
7614 MOV &$1DC6,R10
7615 MOV #$403E,-4(R10)
7616 MOV R10,0(R14)
7617 SUB #2,R10
7618 MOV R10,R14
7619 MOV @R13+,R0
7620 ENDCODE IMMEDIATE
7621 [THEN]
7622
7623 [UNDEFINED] IS [IF]
7624
7625 CODE DEFER!
7626 MOV @R15+,2(R14)
7627 MOV @R15+,R14
7628 MOV @R13+,R0
7629 ENDCODE
7630
7631
7632 : IS
7633 STATE @
7634 IF  POSTPONE ['] POSTPONE DEFER! 
7635 ELSE ' DEFER! 
7636 THEN
7637 ; IMMEDIATE
7638 [THEN]
7639
7640 [UNDEFINED] >BODY [IF]
7641 CODE >BODY
7642 ADD #4,R14
7643 MOV @R13+,R0
7644 ENDCODE
7645 [THEN]
7646
7647
7648 CODE 20_US
7649 BEGIN
7650     BEGIN
7651         BIT #1,&$3C0
7652     0<> UNTIL
7653     BIC #1,&$3C0
7654     SUB #1,R14
7655 U< UNTIL
7656 MOV @R15+,R14
7657 MOV @R13+,R0
7658 ENDCODE
7659
7660 CODE TOP_LCD
7661     BIS.B #4,&$243
7662     BIT.B #1,&$241
7663 0= IF
7664     AND.B #$0F,R14
7665     MOV.B R14,&$222
7666     BIC.B #4,&$243
7667     MOV @R15+,R14
7668     MOV @R13+,R0
7669 THEN
7670     SUB #2,R15
7671     MOV R14,0(R15)
7672     BIC.B #4,&$243
7673     MOV.B &$220,R14
7674     AND.B #$0F,R14
7675     MOV @R13+,R0
7676 ENDCODE
7677
7678 CODE LCD_WRC
7679     BIS.B #2,&$243
7680 BW1 SUB #2,R15
7681     MOV R14,0(R15)
7682     RRUM #4,R14
7683     BIC.B #1,&$243
7684     BIS.B #$0F,&$224
7685 COLON
7686     TOP_LCD 2 20_US
7687     TOP_LCD 2 20_US 
7688 ;
7689
7690 CODE LCD_WRF
7691     BIC.B #2,&$243
7692     GOTO BW1
7693 ENDCODE
7694
7695 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
7696 : LCD_HOME $02 LCD_WRF 100 20_us ;
7697
7698
7699
7700 ASM WDT_INT
7701 ADD #2,R1
7702 BIT.B #$20,&$240
7703 0= IF
7704     CMP #19,&$3D6
7705     U< IF
7706         ADD #1,&$3D6
7707     THEN
7708 ELSE
7709     BIT.B #$40,&$240
7710     0= IF
7711         CMP #3,&$3D6
7712         U>= IF
7713            SUB #1,&$3D6
7714         THEN
7715     THEN
7716 THEN
7717 BW1
7718 MOV @R1+,R0
7719 ENDASM
7720
7721 ASM RC5_INT
7722 ADD #2,R1
7723 $1806 @ 16000 = [IF]
7724     MOV #1,&$3A0
7725 [THEN]
7726 $1806 @ 24000 = [IF]
7727     MOV #2,&$3A0
7728 [THEN]
7729 MOV #1778,R9
7730 MOV #14,R10
7731 BEGIN
7732 MOV #%1011100100,&$380
7733     RRUM    #1,R9
7734     MOV     R9,R8
7735     RRUM    #1,R8
7736     ADD     R9,R8
7737     BEGIN   CMP R8,&$390
7738     U>= UNTIL
7739     BIT.B   #4,&$200
7740     ADDC    R11,R11
7741     MOV.B   &$200,&$208
7742     BIC.B   #4,&$20C
7743     SUB     #1,R10
7744 0<> WHILE
7745     ADD R9,R8
7746     BEGIN
7747         MOV &$390,R9
7748         CMP R8,R9
7749         U>= IF
7750         BIC #$30,&$380
7751         GOTO BW1
7752         THEN
7753         BIT.B #4,&$20C
7754     0<> UNTIL
7755 REPEAT
7756 BIC #$30,&$380
7757 RLAM    #1,R11
7758 MOV.B   R11,R9
7759 RRUM    #2,R9
7760 BIT     #$4000,R11
7761 0= IF   BIS #$40,R9
7762 THEN
7763 RRUM    #3,R11
7764 XOR     @R1,R11
7765 BIT     #$400,R11
7766 0= ?GOTO BW1
7767 XOR #$400,0(R1)
7768 SUB #8,R15
7769 MOV R14,6(R15)
7770 MOV &$1DDC,4(R15)
7771 MOV #$10,&$1DDC
7772 MOV R9,0(R15)
7773 MOV #0,R14
7774 LO2HI
7775     LCD_CLEAR
7776     <# # #S #36 HOLD #>
7777     ['] LCD_WRC IS EMIT
7778     TYPE
7779     ['] EMIT >BODY IS EMIT
7780 HI2LO
7781 MOV @R15+,&$1DDC
7782 MOV @R15+,R14
7783 MOV @R1+,R0
7784 ENDASM
7785
7786 ASM BACKGROUND
7787 BEGIN
7788     CALL &$1814
7789     BIS &$180A,R2
7790 AGAIN
7791 ENDASM
7792
7793 ASM SYS_OUT
7794     MOV #WARM,R9
7795     ADD #4,R9
7796     MOV R9,R0
7797 ENDASM
7798
7799 CODE STOP
7800 BW1 MOV #$4000,R9
7801     ADD #4,R9
7802     MOV R9,-2(R9)
7803     MOV #WARM,R9
7804     MOV #SYS_OUT,2(R9)
7805     BIC.B #4,&$20A
7806     BIC.B #4,&$20C
7807     MOV #0,&$3C0
7808     MOV #0,&$340
7809     MOV #0,&$342
7810     MOV #COLD,R9
7811     MOV R9,&$FFDE
7812     MOV R9,&$FFEA
7813 COLON
7814 ECHO
7815 ." RC5toLCD is removed,"
7816 ."  type START to restart"
7817  WARM
7818 ;
7819
7820 CODE SYS_INIT
7821 MOV #%10_1101_0100,&$3C0
7822 $1806 @ 16000 = [IF]
7823     MOV #1,&$3E0
7824 [THEN]
7825 $1806 @ 24000 = [IF]
7826     MOV #2,&$3E0
7827 [THEN]
7828     MOV #19,&$3D2
7829 MOV #%0110_0000,&$3C6
7830     MOV #10,&$3D6
7831     BIS.B #$20,&$204
7832     BIS.B #$20,&$20A
7833     BIS.B #7,&$245
7834     BIC.B #7,&$247
7835     BIS.B #$0F,&$224
7836     BIC.B #$0F,&$226
7837     BIS.B #4,&$20A
7838     BIC.B #4,&$20C
7839     MOV #RC5_INT,&$FFDE
7840 MOV #%01_0001_0100,&$340
7841     MOV ##3276,&$352
7842     MOV #%10000,&$342
7843     MOV #WDT_INT,&$FFEA
7844 BIC #1,&$130
7845 BIS.B #3,&$20D
7846 MOV &$1808,R8
7847 CMP #4,R8
7848 0= ?GOTO BW1
7849 COLON
7850     #1000 20_US
7851     %011 TOP_LCD
7852     #205 20_US
7853     %011 TOP_LCD
7854     #5 20_US
7855     %011 TOP_LCD
7856     #2 20_US
7857     %010 TOP_LCD
7858     #2 20_US
7859     %00101000 LCD_WRF
7860     %1000 LCD_WRF
7861     LCD_CLEAR
7862     %0110 LCD_WRF
7863     %1100 LCD_WRF
7864     LCD_CLEAR
7865     ['] LCD_HOME IS CR
7866     ['] LCD_WRC  IS EMIT
7867     CR ." I love you"
7868     ['] CR >BODY IS CR
7869     ['] EMIT >BODY IS EMIT
7870     ." RC5toLCD is running. Type STOP to quit"
7871     PWR_STATE ABORT
7872 ;
7873
7874 CODE START
7875 MOV #$4000,R9
7876 MOV #BACKGROUND,2(R9)
7877 MOV #WARM,R9
7878 MOV #SYS_INIT,2(R9)
7879 MOV R9,R0
7880 ENDCODE 
7881 PWR_STATE
7882
7883 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
7884
7885 MARKER {RC5TOLCD}
7886
7887 [UNDEFINED] @ [IF]
7888 CODE @
7889 MOV @R14,R14
7890 MOV @R13+,R0
7891 ENDCODE
7892 [THEN]
7893
7894 [UNDEFINED] CONSTANT [IF]
7895 : CONSTANT 
7896 CREATE
7897 HI2LO
7898 MOV R14,-2(R10)
7899 MOV @R15+,R14
7900 MOV @R1+,R13
7901 MOV @R13+,R0
7902 ENDCODE
7903 [THEN]
7904
7905 [UNDEFINED] STATE [IF]
7906 $1DBE CONSTANT STATE
7907 [THEN]
7908
7909 [UNDEFINED] = [IF]
7910 CODE =
7911 SUB @R15+,R14
7912 0<> IF
7913     AND #0,R14
7914     MOV @R13+,R0
7915 THEN
7916 XOR #-1,R14
7917 MOV @R13+,R0
7918 ENDCODE
7919 [THEN]
7920
7921 [UNDEFINED] IF [IF]
7922 CODE IF
7923 SUB #2,R15
7924 MOV R14,0(R15)
7925 MOV &$1DC6,R14
7926 ADD #4,&$1DC6
7927 MOV #$4042,0(R14)
7928 ADD #2,R14
7929 MOV @R13+,R0
7930 ENDCODE IMMEDIATE
7931
7932 CODE THEN
7933 MOV &$1DC6,0(R14)
7934 MOV @R15+,R14
7935 MOV @R13+,R0
7936 ENDCODE IMMEDIATE
7937 [THEN]
7938
7939 [UNDEFINED] ELSE [IF]
7940 CODE ELSE
7941 ADD #4,&$1DC6
7942 MOV &$1DC6,R10
7943 MOV #$403E,-4(R10)
7944 MOV R10,0(R14)
7945 SUB #2,R10
7946 MOV R10,R14
7947 MOV @R13+,R0
7948 ENDCODE IMMEDIATE
7949 [THEN]
7950
7951 [UNDEFINED] IS [IF]
7952
7953 CODE DEFER!
7954 MOV @R15+,2(R14)
7955 MOV @R15+,R14
7956 MOV @R13+,R0
7957 ENDCODE
7958
7959
7960 : IS
7961 STATE @
7962 IF  POSTPONE ['] POSTPONE DEFER! 
7963 ELSE ' DEFER! 
7964 THEN
7965 ; IMMEDIATE
7966 [THEN]
7967
7968 [UNDEFINED] >BODY [IF]
7969 CODE >BODY
7970 ADD #4,R14
7971 MOV @R13+,R0
7972 ENDCODE
7973 [THEN]
7974
7975
7976 CODE 20_US
7977 BEGIN
7978     BEGIN
7979         BIT #1,&$3C0
7980     0<> UNTIL
7981     BIC #1,&$3C0
7982     SUB #1,R14
7983 U< UNTIL
7984 MOV @R15+,R14
7985 MOV @R13+,R0
7986 ENDCODE
7987
7988 CODE TOP_LCD
7989     BIS.B #4,&$243
7990     BIT.B #1,&$241
7991 0= IF
7992     AND.B #$0F,R14
7993     MOV.B R14,&$222
7994     BIC.B #4,&$243
7995     MOV @R15+,R14
7996     MOV @R13+,R0
7997 THEN
7998     SUB #2,R15
7999     MOV R14,0(R15)
8000     BIC.B #4,&$243
8001     MOV.B &$220,R14
8002     AND.B #$0F,R14
8003     MOV @R13+,R0
8004 ENDCODE
8005
8006 CODE LCD_WRC
8007     BIS.B #2,&$243
8008 BW1 SUB #2,R15
8009     MOV R14,0(R15)
8010     RRUM #4,R14
8011     BIC.B #1,&$243
8012     BIS.B #$0F,&$224
8013 COLON
8014     TOP_LCD 2 20_US
8015     TOP_LCD 2 20_US 
8016 ;
8017
8018 CODE LCD_WRF
8019     BIC.B #2,&$243
8020     GOTO BW1
8021 ENDCODE
8022
8023 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
8024 : LCD_HOME $02 LCD_WRF 100 20_us ;
8025
8026
8027
8028 ASM WDT_INT
8029 ADD #2,R1
8030 BIT.B #$20,&$240
8031 0= IF
8032     CMP #19,&$3D6
8033     U< IF
8034         ADD #1,&$3D6
8035     THEN
8036 ELSE
8037     BIT.B #$40,&$240
8038     0= IF
8039         CMP #3,&$3D6
8040         U>= IF
8041            SUB #1,&$3D6
8042         THEN
8043     THEN
8044 THEN
8045 BW1
8046 MOV @R1+,R0
8047 ENDASM
8048
8049 ASM RC5_INT
8050 ADD #2,R1
8051 $1806 @ 16000 = [IF]
8052     MOV #1,&$3A0
8053 [THEN]
8054 $1806 @ 24000 = [IF]
8055     MOV #2,&$3A0
8056 [THEN]
8057 MOV #1778,R9
8058 MOV #14,R10
8059 BEGIN
8060 MOV #%1011100100,&$380
8061     RRUM    #1,R9
8062     MOV     R9,R8
8063     RRUM    #1,R8
8064     ADD     R9,R8
8065     BEGIN   CMP R8,&$390
8066     U>= UNTIL
8067     BIT.B   #4,&$200
8068     ADDC    R11,R11
8069     MOV.B   &$200,&$208
8070     BIC.B   #4,&$20C
8071     SUB     #1,R10
8072 0<> WHILE
8073     ADD R9,R8
8074     BEGIN
8075         MOV &$390,R9
8076         CMP R8,R9
8077         U>= IF
8078         BIC #$30,&$380
8079         GOTO BW1
8080         THEN
8081         BIT.B #4,&$20C
8082     0<> UNTIL
8083 REPEAT
8084 BIC #$30,&$380
8085 RLAM    #1,R11
8086 MOV.B   R11,R9
8087 RRUM    #2,R9
8088 BIT     #$4000,R11
8089 0= IF   BIS #$40,R9
8090 THEN
8091 RRUM    #3,R11
8092 XOR     @R1,R11
8093 BIT     #$400,R11
8094 0= ?GOTO BW1
8095 XOR #$400,0(R1)
8096 SUB #8,R15
8097 MOV R14,6(R15)
8098 MOV &$1DDC,4(R15)
8099 MOV #$10,&$1DDC
8100 MOV R9,0(R15)
8101 MOV #0,R14
8102 LO2HI
8103     LCD_CLEAR
8104     <# # #S #36 HOLD #>
8105     ['] LCD_WRC IS EMIT
8106     TYPE
8107     ['] EMIT >BODY IS EMIT
8108 HI2LO
8109 MOV @R15+,&$1DDC
8110 MOV @R15+,R14
8111 MOV @R1+,R0
8112 ENDASM
8113
8114 ASM BACKGROUND
8115 BEGIN
8116     CALL &$1814
8117     BIS &$180A,R2
8118 AGAIN
8119 ENDASM
8120
8121 ASM SYS_OUT
8122     MOV #WARM,R9
8123     ADD #4,R9
8124     MOV R9,R0
8125 ENDASM
8126
8127 CODE STOP
8128 BW1 MOV #$4000,R9
8129     ADD #4,R9
8130     MOV R9,-2(R9)
8131     MOV #WARM,R9
8132     MOV #SYS_OUT,2(R9)
8133     BIC.B #4,&$20A
8134     BIC.B #4,&$20C
8135     MOV #0,&$3C0
8136     MOV #0,&$340
8137     MOV #0,&$342
8138     MOV #COLD,R9
8139     MOV R9,&$FFDE
8140     MOV R9,&$FFEA
8141 COLON
8142 ECHO
8143 ." RC5toLCD is removed,"
8144 ."  type START to restart"
8145  WARM
8146 ;
8147
8148 CODE SYS_INIT
8149 MOV #%10_1101_0100,&$3C0
8150 $1806 @ 16000 = [IF]
8151     MOV #1,&$3E0
8152 [THEN]
8153 $1806 @ 24000 = [IF]
8154     MOV #2,&$3E0
8155 [THEN]
8156     MOV #19,&$3D2
8157 MOV #%0110_0000,&$3C6
8158     MOV #10,&$3D6
8159     BIS.B #$20,&$204
8160     BIS.B #$20,&$20A
8161     BIS.B #7,&$245
8162     BIC.B #7,&$247
8163     BIS.B #$0F,&$224
8164     BIC.B #$0F,&$226
8165     BIS.B #4,&$20A
8166     BIC.B #4,&$20C
8167     MOV #RC5_INT,&$FFDE
8168 MOV #%01_0001_0100,&$340
8169     MOV ##3276,&$352
8170     MOV #%10000,&$342
8171     MOV #WDT_INT,&$FFEA
8172 BIC #1,&$130
8173 BIS.B #3,&$20D
8174 MOV &$1808,R8
8175 CMP #4,R8
8176 0= ?GOTO BW1
8177 COLON
8178     #1000 20_US
8179     %011 TOP_LCD
8180     #205 20_US
8181     %011 TOP_LCD
8182     #5 20_US
8183     %011 TOP_LCD
8184     #2 20_US
8185     %010 TOP_LCD
8186     #2 20_US
8187     %00101000 LCD_WRF
8188     %1000 LCD_WRF
8189     LCD_CLEAR
8190     %0110 LCD_WRF
8191     %1100 LCD_WRF
8192     LCD_CLEAR
8193     ['] LCD_HOME IS CR
8194     ['] LCD_WRC  IS EMIT
8195     CR ." I love you"
8196     ['] CR >BODY IS CR
8197     ['] EMIT >BODY IS EMIT
8198     ." RC5toLCD is running. Type STOP to quit"
8199     PWR_STATE ABORT
8200 ;
8201
8202 CODE START
8203 MOV #$4000,R9
8204 MOV #BACKGROUND,2(R9)
8205 MOV #WARM,R9
8206 MOV #SYS_INIT,2(R9)
8207 MOV R9,R0
8208 ENDCODE 
8209 PWR_STATE
8210
8211 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
8212
8213 MARKER {RC5TOLCD}
8214
8215 [UNDEFINED] @ [IF]
8216 CODE @
8217 MOV @R14,R14
8218 MOV @R13+,R0
8219 ENDCODE
8220 [THEN]
8221
8222 [UNDEFINED] CONSTANT [IF]
8223 : CONSTANT 
8224 CREATE
8225 HI2LO
8226 MOV R14,-2(R10)
8227 MOV @R15+,R14
8228 MOV @R1+,R13
8229 MOV @R13+,R0
8230 ENDCODE
8231 [THEN]
8232
8233 [UNDEFINED] STATE [IF]
8234 $1DBE CONSTANT STATE
8235 [THEN]
8236
8237 [UNDEFINED] = [IF]
8238 CODE =
8239 SUB @R15+,R14
8240 0<> IF
8241     AND #0,R14
8242     MOV @R13+,R0
8243 THEN
8244 XOR #-1,R14
8245 MOV @R13+,R0
8246 ENDCODE
8247 [THEN]
8248
8249 [UNDEFINED] IF [IF]
8250 CODE IF
8251 SUB #2,R15
8252 MOV R14,0(R15)
8253 MOV &$1DC6,R14
8254 ADD #4,&$1DC6
8255 MOV #$4042,0(R14)
8256 ADD #2,R14
8257 MOV @R13+,R0
8258 ENDCODE IMMEDIATE
8259
8260 CODE THEN
8261 MOV &$1DC6,0(R14)
8262 MOV @R15+,R14
8263 MOV @R13+,R0
8264 ENDCODE IMMEDIATE
8265 [THEN]
8266
8267 [UNDEFINED] ELSE [IF]
8268 CODE ELSE
8269 ADD #4,&$1DC6
8270 MOV &$1DC6,R10
8271 MOV #$403E,-4(R10)
8272 MOV R10,0(R14)
8273 SUB #2,R10
8274 MOV R10,R14
8275 MOV @R13+,R0
8276 ENDCODE IMMEDIATE
8277 [THEN]
8278
8279 [UNDEFINED] IS [IF]
8280
8281 CODE DEFER!
8282 MOV @R15+,2(R14)
8283 MOV @R15+,R14
8284 MOV @R13+,R0
8285 ENDCODE
8286
8287
8288 : IS
8289 STATE @
8290 IF  POSTPONE ['] POSTPONE DEFER! 
8291 ELSE ' DEFER! 
8292 THEN
8293 ; IMMEDIATE
8294 [THEN]
8295
8296 [UNDEFINED] >BODY [IF]
8297 CODE >BODY
8298 ADD #4,R14
8299 MOV @R13+,R0
8300 ENDCODE
8301 [THEN]
8302
8303
8304 CODE 20_US
8305 BEGIN
8306     BEGIN
8307         BIT #1,&$3C0
8308     0<> UNTIL
8309     BIC #1,&$3C0
8310     SUB #1,R14
8311 U< UNTIL
8312 MOV @R15+,R14
8313 MOV @R13+,R0
8314 ENDCODE
8315
8316 CODE TOP_LCD
8317     BIS.B #4,&$243
8318     BIT.B #1,&$241
8319 0= IF
8320     AND.B #$0F,R14
8321     MOV.B R14,&$222
8322     BIC.B #4,&$243
8323     MOV @R15+,R14
8324     MOV @R13+,R0
8325 THEN
8326     SUB #2,R15
8327     MOV R14,0(R15)
8328     BIC.B #4,&$243
8329     MOV.B &$220,R14
8330     AND.B #$0F,R14
8331     MOV @R13+,R0
8332 ENDCODE
8333
8334 CODE LCD_WRC
8335     BIS.B #2,&$243
8336 BW1 SUB #2,R15
8337     MOV R14,0(R15)
8338     RRUM #4,R14
8339     BIC.B #1,&$243
8340     BIS.B #$0F,&$224
8341 COLON
8342     TOP_LCD 2 20_US
8343     TOP_LCD 2 20_US 
8344 ;
8345
8346 CODE LCD_WRF
8347     BIC.B #2,&$243
8348     GOTO BW1
8349 ENDCODE
8350
8351 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
8352 : LCD_HOME $02 LCD_WRF 100 20_us ;
8353
8354
8355
8356 ASM WDT_INT
8357 ADD #2,R1
8358 BIT.B #$20,&$240
8359 0= IF
8360     CMP #19,&$3D6
8361     U< IF
8362         ADD #1,&$3D6
8363     THEN
8364 ELSE
8365     BIT.B #$40,&$240
8366     0= IF
8367         CMP #3,&$3D6
8368         U>= IF
8369            SUB #1,&$3D6
8370         THEN
8371     THEN
8372 THEN
8373 BW1
8374 MOV @R1+,R0
8375 ENDASM
8376
8377 ASM RC5_INT
8378 ADD #2,R1
8379 $1806 @ 16000 = [IF]
8380     MOV #1,&$3A0
8381 [THEN]
8382 $1806 @ 24000 = [IF]
8383     MOV #2,&$3A0
8384 [THEN]
8385 MOV #1778,R9
8386 MOV #14,R10
8387 BEGIN
8388 MOV #%1011100100,&$380
8389     RRUM    #1,R9
8390     MOV     R9,R8
8391     RRUM    #1,R8
8392     ADD     R9,R8
8393     BEGIN   CMP R8,&$390
8394     U>= UNTIL
8395     BIT.B   #4,&$200
8396     ADDC    R11,R11
8397     MOV.B   &$200,&$208
8398     BIC.B   #4,&$20C
8399     SUB     #1,R10
8400 0<> WHILE
8401     ADD R9,R8
8402     BEGIN
8403         MOV &$390,R9
8404         CMP R8,R9
8405         U>= IF
8406         BIC #$30,&$380
8407         GOTO BW1
8408         THEN
8409         BIT.B #4,&$20C
8410     0<> UNTIL
8411 REPEAT
8412 BIC #$30,&$380
8413 RLAM    #1,R11
8414 MOV.B   R11,R9
8415 RRUM    #2,R9
8416 BIT     #$4000,R11
8417 0= IF   BIS #$40,R9
8418 THEN
8419 RRUM    #3,R11
8420 XOR     @R1,R11
8421 BIT     #$400,R11
8422 0= ?GOTO BW1
8423 XOR #$400,0(R1)
8424 SUB #8,R15
8425 MOV R14,6(R15)
8426 MOV &$1DDC,4(R15)
8427 MOV #$10,&$1DDC
8428 MOV R9,0(R15)
8429 MOV #0,R14
8430 LO2HI
8431     LCD_CLEAR
8432     <# # #S #36 HOLD #>
8433     ['] LCD_WRC IS EMIT
8434     TYPE
8435     ['] EMIT >BODY IS EMIT
8436 HI2LO
8437 MOV @R15+,&$1DDC
8438 MOV @R15+,R14
8439 MOV @R1+,R0
8440 ENDASM
8441
8442 ASM BACKGROUND
8443 BEGIN
8444     CALL &$1814
8445     BIS &$180A,R2
8446 AGAIN
8447 ENDASM
8448
8449 ASM SYS_OUT
8450     MOV #WARM,R9
8451     ADD #4,R9
8452     MOV R9,R0
8453 ENDASM
8454
8455 CODE STOP
8456 BW1 MOV #$4000,R9
8457     ADD #4,R9
8458     MOV R9,-2(R9)
8459     MOV #WARM,R9
8460     MOV #SYS_OUT,2(R9)
8461     BIC.B #4,&$20A
8462     BIC.B #4,&$20C
8463     MOV #0,&$3C0
8464     MOV #0,&$340
8465     MOV #0,&$342
8466     MOV #COLD,R9
8467     MOV R9,&$FFDE
8468     MOV R9,&$FFEA
8469 COLON
8470 ECHO
8471 ." RC5toLCD is removed,"
8472 ."  type START to restart"
8473  WARM
8474 ;
8475
8476 CODE SYS_INIT
8477 MOV #%10_1101_0100,&$3C0
8478 $1806 @ 16000 = [IF]
8479     MOV #1,&$3E0
8480 [THEN]
8481 $1806 @ 24000 = [IF]
8482     MOV #2,&$3E0
8483 [THEN]
8484     MOV #19,&$3D2
8485 MOV #%0110_0000,&$3C6
8486     MOV #10,&$3D6
8487     BIS.B #$20,&$204
8488     BIS.B #$20,&$20A
8489     BIS.B #7,&$245
8490     BIC.B #7,&$247
8491     BIS.B #$0F,&$224
8492     BIC.B #$0F,&$226
8493     BIS.B #4,&$20A
8494     BIC.B #4,&$20C
8495     MOV #RC5_INT,&$FFDE
8496 MOV #%01_0001_0100,&$340
8497     MOV ##3276,&$352
8498     MOV #%10000,&$342
8499     MOV #WDT_INT,&$FFEA
8500 BIC #1,&$130
8501 BIS.B #3,&$20D
8502 MOV &$1808,R8
8503 CMP #4,R8
8504 0= ?GOTO BW1
8505 COLON
8506     #1000 20_US
8507     %011 TOP_LCD
8508     #205 20_US
8509     %011 TOP_LCD
8510     #5 20_US
8511     %011 TOP_LCD
8512     #2 20_US
8513     %010 TOP_LCD
8514     #2 20_US
8515     %00101000 LCD_WRF
8516     %1000 LCD_WRF
8517     LCD_CLEAR
8518     %0110 LCD_WRF
8519     %1100 LCD_WRF
8520     LCD_CLEAR
8521     ['] LCD_HOME IS CR
8522     ['] LCD_WRC  IS EMIT
8523     CR ." I love you"
8524     ['] CR >BODY IS CR
8525     ['] EMIT >BODY IS EMIT
8526     ." RC5toLCD is running. Type STOP to quit"
8527     PWR_STATE ABORT
8528 ;
8529
8530 CODE START
8531 MOV #$4000,R9
8532 MOV #BACKGROUND,2(R9)
8533 MOV #WARM,R9
8534 MOV #SYS_INIT,2(R9)
8535 MOV R9,R0
8536 ENDCODE 
8537 PWR_STATE
8538
8539 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
8540
8541 MARKER {RC5TOLCD}
8542
8543 [UNDEFINED] @ [IF]
8544 CODE @
8545 MOV @R14,R14
8546 MOV @R13+,R0
8547 ENDCODE
8548 [THEN]
8549
8550 [UNDEFINED] CONSTANT [IF]
8551 : CONSTANT 
8552 CREATE
8553 HI2LO
8554 MOV R14,-2(R10)
8555 MOV @R15+,R14
8556 MOV @R1+,R13
8557 MOV @R13+,R0
8558 ENDCODE
8559 [THEN]
8560
8561 [UNDEFINED] STATE [IF]
8562 $1DBE CONSTANT STATE
8563 [THEN]
8564
8565 [UNDEFINED] = [IF]
8566 CODE =
8567 SUB @R15+,R14
8568 0<> IF
8569     AND #0,R14
8570     MOV @R13+,R0
8571 THEN
8572 XOR #-1,R14
8573 MOV @R13+,R0
8574 ENDCODE
8575 [THEN]
8576
8577 [UNDEFINED] IF [IF]
8578 CODE IF
8579 SUB #2,R15
8580 MOV R14,0(R15)
8581 MOV &$1DC6,R14
8582 ADD #4,&$1DC6
8583 MOV #$4042,0(R14)
8584 ADD #2,R14
8585 MOV @R13+,R0
8586 ENDCODE IMMEDIATE
8587
8588 CODE THEN
8589 MOV &$1DC6,0(R14)
8590 MOV @R15+,R14
8591 MOV @R13+,R0
8592 ENDCODE IMMEDIATE
8593 [THEN]
8594
8595 [UNDEFINED] ELSE [IF]
8596 CODE ELSE
8597 ADD #4,&$1DC6
8598 MOV &$1DC6,R10
8599 MOV #$403E,-4(R10)
8600 MOV R10,0(R14)
8601 SUB #2,R10
8602 MOV R10,R14
8603 MOV @R13+,R0
8604 ENDCODE IMMEDIATE
8605 [THEN]
8606
8607 [UNDEFINED] IS [IF]
8608
8609 CODE DEFER!
8610 MOV @R15+,2(R14)
8611 MOV @R15+,R14
8612 MOV @R13+,R0
8613 ENDCODE
8614
8615
8616 : IS
8617 STATE @
8618 IF  POSTPONE ['] POSTPONE DEFER! 
8619 ELSE ' DEFER! 
8620 THEN
8621 ; IMMEDIATE
8622 [THEN]
8623
8624 [UNDEFINED] >BODY [IF]
8625 CODE >BODY
8626 ADD #4,R14
8627 MOV @R13+,R0
8628 ENDCODE
8629 [THEN]
8630
8631
8632 CODE 20_US
8633 BEGIN
8634     BEGIN
8635         BIT #1,&$3C0
8636     0<> UNTIL
8637     BIC #1,&$3C0
8638     SUB #1,R14
8639 U< UNTIL
8640 MOV @R15+,R14
8641 MOV @R13+,R0
8642 ENDCODE
8643
8644 CODE TOP_LCD
8645     BIS.B #4,&$243
8646     BIT.B #1,&$241
8647 0= IF
8648     AND.B #$0F,R14
8649     MOV.B R14,&$222
8650     BIC.B #4,&$243
8651     MOV @R15+,R14
8652     MOV @R13+,R0
8653 THEN
8654     SUB #2,R15
8655     MOV R14,0(R15)
8656     BIC.B #4,&$243
8657     MOV.B &$220,R14
8658     AND.B #$0F,R14
8659     MOV @R13+,R0
8660 ENDCODE
8661
8662 CODE LCD_WRC
8663     BIS.B #2,&$243
8664 BW1 SUB #2,R15
8665     MOV R14,0(R15)
8666     RRUM #4,R14
8667     BIC.B #1,&$243
8668     BIS.B #$0F,&$224
8669 COLON
8670     TOP_LCD 2 20_US
8671     TOP_LCD 2 20_US 
8672 ;
8673
8674 CODE LCD_WRF
8675     BIC.B #2,&$243
8676     GOTO BW1
8677 ENDCODE
8678
8679 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
8680 : LCD_HOME $02 LCD_WRF 100 20_us ;
8681
8682
8683
8684 ASM WDT_INT
8685 ADD #2,R1
8686 BIT.B #$20,&$240
8687 0= IF
8688     CMP #19,&$3D6
8689     U< IF
8690         ADD #1,&$3D6
8691     THEN
8692 ELSE
8693     BIT.B #$40,&$240
8694     0= IF
8695         CMP #3,&$3D6
8696         U>= IF
8697            SUB #1,&$3D6
8698         THEN
8699     THEN
8700 THEN
8701 BW1
8702 MOV @R1+,R0
8703 ENDASM
8704
8705 ASM RC5_INT
8706 ADD #2,R1
8707 $1806 @ 16000 = [IF]
8708     MOV #1,&$3A0
8709 [THEN]
8710 $1806 @ 24000 = [IF]
8711     MOV #2,&$3A0
8712 [THEN]
8713 MOV #1778,R9
8714 MOV #14,R10
8715 BEGIN
8716 MOV #%1011100100,&$380
8717     RRUM    #1,R9
8718     MOV     R9,R8
8719     RRUM    #1,R8
8720     ADD     R9,R8
8721     BEGIN   CMP R8,&$390
8722     U>= UNTIL
8723     BIT.B   #4,&$200
8724     ADDC    R11,R11
8725     MOV.B   &$200,&$208
8726     BIC.B   #4,&$20C
8727     SUB     #1,R10
8728 0<> WHILE
8729     ADD R9,R8
8730     BEGIN
8731         MOV &$390,R9
8732         CMP R8,R9
8733         U>= IF
8734         BIC #$30,&$380
8735         GOTO BW1
8736         THEN
8737         BIT.B #4,&$20C
8738     0<> UNTIL
8739 REPEAT
8740 BIC #$30,&$380
8741 RLAM    #1,R11
8742 MOV.B   R11,R9
8743 RRUM    #2,R9
8744 BIT     #$4000,R11
8745 0= IF   BIS #$40,R9
8746 THEN
8747 RRUM    #3,R11
8748 XOR     @R1,R11
8749 BIT     #$400,R11
8750 0= ?GOTO BW1
8751 XOR #$400,0(R1)
8752 SUB #8,R15
8753 MOV R14,6(R15)
8754 MOV &$1DDC,4(R15)
8755 MOV #$10,&$1DDC
8756 MOV R9,0(R15)
8757 MOV #0,R14
8758 LO2HI
8759     LCD_CLEAR
8760     <# # #S #36 HOLD #>
8761     ['] LCD_WRC IS EMIT
8762     TYPE
8763     ['] EMIT >BODY IS EMIT
8764 HI2LO
8765 MOV @R15+,&$1DDC
8766 MOV @R15+,R14
8767 MOV @R1+,R0
8768 ENDASM
8769
8770 ASM BACKGROUND
8771 BEGIN
8772     CALL &$1814
8773     BIS &$180A,R2
8774 AGAIN
8775 ENDASM
8776
8777 ASM SYS_OUT
8778     MOV #WARM,R9
8779     ADD #4,R9
8780     MOV R9,R0
8781 ENDASM
8782
8783 CODE STOP
8784 BW1 MOV #$4000,R9
8785     ADD #4,R9
8786     MOV R9,-2(R9)
8787     MOV #WARM,R9
8788     MOV #SYS_OUT,2(R9)
8789     BIC.B #4,&$20A
8790     BIC.B #4,&$20C
8791     MOV #0,&$3C0
8792     MOV #0,&$340
8793     MOV #0,&$342
8794     MOV #COLD,R9
8795     MOV R9,&$FFDE
8796     MOV R9,&$FFEA
8797 COLON
8798 ECHO
8799 ." RC5toLCD is removed,"
8800 ."  type START to restart"
8801  WARM
8802 ;
8803
8804 CODE SYS_INIT
8805 MOV #%10_1101_0100,&$3C0
8806 $1806 @ 16000 = [IF]
8807     MOV #1,&$3E0
8808 [THEN]
8809 $1806 @ 24000 = [IF]
8810     MOV #2,&$3E0
8811 [THEN]
8812     MOV #19,&$3D2
8813 MOV #%0110_0000,&$3C6
8814     MOV #10,&$3D6
8815     BIS.B #$20,&$204
8816     BIS.B #$20,&$20A
8817     BIS.B #7,&$245
8818     BIC.B #7,&$247
8819     BIS.B #$0F,&$224
8820     BIC.B #$0F,&$226
8821     BIS.B #4,&$20A
8822     BIC.B #4,&$20C
8823     MOV #RC5_INT,&$FFDE
8824 MOV #%01_0001_0100,&$340
8825     MOV ##3276,&$352
8826     MOV #%10000,&$342
8827     MOV #WDT_INT,&$FFEA
8828 BIC #1,&$130
8829 BIS.B #3,&$20D
8830 MOV &$1808,R8
8831 CMP #4,R8
8832 0= ?GOTO BW1
8833 COLON
8834     #1000 20_US
8835     %011 TOP_LCD
8836     #205 20_US
8837     %011 TOP_LCD
8838     #5 20_US
8839     %011 TOP_LCD
8840     #2 20_US
8841     %010 TOP_LCD
8842     #2 20_US
8843     %00101000 LCD_WRF
8844     %1000 LCD_WRF
8845     LCD_CLEAR
8846     %0110 LCD_WRF
8847     %1100 LCD_WRF
8848     LCD_CLEAR
8849     ['] LCD_HOME IS CR
8850     ['] LCD_WRC  IS EMIT
8851     CR ." I love you"
8852     ['] CR >BODY IS CR
8853     ['] EMIT >BODY IS EMIT
8854     ." RC5toLCD is running. Type STOP to quit"
8855     PWR_STATE ABORT
8856 ;
8857
8858 CODE START
8859 MOV #$4000,R9
8860 MOV #BACKGROUND,2(R9)
8861 MOV #WARM,R9
8862 MOV #SYS_INIT,2(R9)
8863 MOV R9,R0
8864 ENDCODE 
8865 PWR_STATE
8866
8867 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
8868
8869 MARKER {RC5TOLCD}
8870
8871 [UNDEFINED] @ [IF]
8872 CODE @
8873 MOV @R14,R14
8874 MOV @R13+,R0
8875 ENDCODE
8876 [THEN]
8877
8878 [UNDEFINED] CONSTANT [IF]
8879 : CONSTANT 
8880 CREATE
8881 HI2LO
8882 MOV R14,-2(R10)
8883 MOV @R15+,R14
8884 MOV @R1+,R13
8885 MOV @R13+,R0
8886 ENDCODE
8887 [THEN]
8888
8889 [UNDEFINED] STATE [IF]
8890 $1DBE CONSTANT STATE
8891 [THEN]
8892
8893 [UNDEFINED] = [IF]
8894 CODE =
8895 SUB @R15+,R14
8896 0<> IF
8897     AND #0,R14
8898     MOV @R13+,R0
8899 THEN
8900 XOR #-1,R14
8901 MOV @R13+,R0
8902 ENDCODE
8903 [THEN]
8904
8905 [UNDEFINED] IF [IF]
8906 CODE IF
8907 SUB #2,R15
8908 MOV R14,0(R15)
8909 MOV &$1DC6,R14
8910 ADD #4,&$1DC6
8911 MOV #$4042,0(R14)
8912 ADD #2,R14
8913 MOV @R13+,R0
8914 ENDCODE IMMEDIATE
8915
8916 CODE THEN
8917 MOV &$1DC6,0(R14)
8918 MOV @R15+,R14
8919 MOV @R13+,R0
8920 ENDCODE IMMEDIATE
8921 [THEN]
8922
8923 [UNDEFINED] ELSE [IF]
8924 CODE ELSE
8925 ADD #4,&$1DC6
8926 MOV &$1DC6,R10
8927 MOV #$403E,-4(R10)
8928 MOV R10,0(R14)
8929 SUB #2,R10
8930 MOV R10,R14
8931 MOV @R13+,R0
8932 ENDCODE IMMEDIATE
8933 [THEN]
8934
8935 [UNDEFINED] IS [IF]
8936
8937 CODE DEFER!
8938 MOV @R15+,2(R14)
8939 MOV @R15+,R14
8940 MOV @R13+,R0
8941 ENDCODE
8942
8943
8944 : IS
8945 STATE @
8946 IF  POSTPONE ['] POSTPONE DEFER! 
8947 ELSE ' DEFER! 
8948 THEN
8949 ; IMMEDIATE
8950 [THEN]
8951
8952 [UNDEFINED] >BODY [IF]
8953 CODE >BODY
8954 ADD #4,R14
8955 MOV @R13+,R0
8956 ENDCODE
8957 [THEN]
8958
8959
8960 CODE 20_US
8961 BEGIN
8962     BEGIN
8963         BIT #1,&$3C0
8964     0<> UNTIL
8965     BIC #1,&$3C0
8966     SUB #1,R14
8967 U< UNTIL
8968 MOV @R15+,R14
8969 MOV @R13+,R0
8970 ENDCODE
8971
8972 CODE TOP_LCD
8973     BIS.B #4,&$243
8974     BIT.B #1,&$241
8975 0= IF
8976     AND.B #$0F,R14
8977     MOV.B R14,&$222
8978     BIC.B #4,&$243
8979     MOV @R15+,R14
8980     MOV @R13+,R0
8981 THEN
8982     SUB #2,R15
8983     MOV R14,0(R15)
8984     BIC.B #4,&$243
8985     MOV.B &$220,R14
8986     AND.B #$0F,R14
8987     MOV @R13+,R0
8988 ENDCODE
8989
8990 CODE LCD_WRC
8991     BIS.B #2,&$243
8992 BW1 SUB #2,R15
8993     MOV R14,0(R15)
8994     RRUM #4,R14
8995     BIC.B #1,&$243
8996     BIS.B #$0F,&$224
8997 COLON
8998     TOP_LCD 2 20_US
8999     TOP_LCD 2 20_US 
9000 ;
9001
9002 CODE LCD_WRF
9003     BIC.B #2,&$243
9004     GOTO BW1
9005 ENDCODE
9006
9007 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
9008 : LCD_HOME $02 LCD_WRF 100 20_us ;
9009
9010
9011
9012 ASM WDT_INT
9013 ADD #2,R1
9014 BIT.B #$20,&$240
9015 0= IF
9016     CMP #19,&$3D6
9017     U< IF
9018         ADD #1,&$3D6
9019     THEN
9020 ELSE
9021     BIT.B #$40,&$240
9022     0= IF
9023         CMP #3,&$3D6
9024         U>= IF
9025            SUB #1,&$3D6
9026         THEN
9027     THEN
9028 THEN
9029 BW1
9030 MOV @R1+,R0
9031 ENDASM
9032
9033 ASM RC5_INT
9034 ADD #2,R1
9035 $1806 @ 16000 = [IF]
9036     MOV #1,&$3A0
9037 [THEN]
9038 $1806 @ 24000 = [IF]
9039     MOV #2,&$3A0
9040 [THEN]
9041 MOV #1778,R9
9042 MOV #14,R10
9043 BEGIN
9044 MOV #%1011100100,&$380
9045     RRUM    #1,R9
9046     MOV     R9,R8
9047     RRUM    #1,R8
9048     ADD     R9,R8
9049     BEGIN   CMP R8,&$390
9050     U>= UNTIL
9051     BIT.B   #4,&$200
9052     ADDC    R11,R11
9053     MOV.B   &$200,&$208
9054     BIC.B   #4,&$20C
9055     SUB     #1,R10
9056 0<> WHILE
9057     ADD R9,R8
9058     BEGIN
9059         MOV &$390,R9
9060         CMP R8,R9
9061         U>= IF
9062         BIC #$30,&$380
9063         GOTO BW1
9064         THEN
9065         BIT.B #4,&$20C
9066     0<> UNTIL
9067 REPEAT
9068 BIC #$30,&$380
9069 RLAM    #1,R11
9070 MOV.B   R11,R9
9071 RRUM    #2,R9
9072 BIT     #$4000,R11
9073 0= IF   BIS #$40,R9
9074 THEN
9075 RRUM    #3,R11
9076 XOR     @R1,R11
9077 BIT     #$400,R11
9078 0= ?GOTO BW1
9079 XOR #$400,0(R1)
9080 SUB #8,R15
9081 MOV R14,6(R15)
9082 MOV &$1DDC,4(R15)
9083 MOV #$10,&$1DDC
9084 MOV R9,0(R15)
9085 MOV #0,R14
9086 LO2HI
9087     LCD_CLEAR
9088     <# # #S #36 HOLD #>
9089     ['] LCD_WRC IS EMIT
9090     TYPE
9091     ['] EMIT >BODY IS EMIT
9092 HI2LO
9093 MOV @R15+,&$1DDC
9094 MOV @R15+,R14
9095 MOV @R1+,R0
9096 ENDASM
9097
9098 ASM BACKGROUND
9099 BEGIN
9100     CALL &$1814
9101     BIS &$180A,R2
9102 AGAIN
9103 ENDASM
9104
9105 ASM SYS_OUT
9106     MOV #WARM,R9
9107     ADD #4,R9
9108     MOV R9,R0
9109 ENDASM
9110
9111 CODE STOP
9112 BW1 MOV #$4000,R9
9113     ADD #4,R9
9114     MOV R9,-2(R9)
9115     MOV #WARM,R9
9116     MOV #SYS_OUT,2(R9)
9117     BIC.B #4,&$20A
9118     BIC.B #4,&$20C
9119     MOV #0,&$3C0
9120     MOV #0,&$340
9121     MOV #0,&$342
9122     MOV #COLD,R9
9123     MOV R9,&$FFDE
9124     MOV R9,&$FFEA
9125 COLON
9126 ECHO
9127 ." RC5toLCD is removed,"
9128 ."  type START to restart"
9129  WARM
9130 ;
9131
9132 CODE SYS_INIT
9133 MOV #%10_1101_0100,&$3C0
9134 $1806 @ 16000 = [IF]
9135     MOV #1,&$3E0
9136 [THEN]
9137 $1806 @ 24000 = [IF]
9138     MOV #2,&$3E0
9139 [THEN]
9140     MOV #19,&$3D2
9141 MOV #%0110_0000,&$3C6
9142     MOV #10,&$3D6
9143     BIS.B #$20,&$204
9144     BIS.B #$20,&$20A
9145     BIS.B #7,&$245
9146     BIC.B #7,&$247
9147     BIS.B #$0F,&$224
9148     BIC.B #$0F,&$226
9149     BIS.B #4,&$20A
9150     BIC.B #4,&$20C
9151     MOV #RC5_INT,&$FFDE
9152 MOV #%01_0001_0100,&$340
9153     MOV ##3276,&$352
9154     MOV #%10000,&$342
9155     MOV #WDT_INT,&$FFEA
9156 BIC #1,&$130
9157 BIS.B #3,&$20D
9158 MOV &$1808,R8
9159 CMP #4,R8
9160 0= ?GOTO BW1
9161 COLON
9162     #1000 20_US
9163     %011 TOP_LCD
9164     #205 20_US
9165     %011 TOP_LCD
9166     #5 20_US
9167     %011 TOP_LCD
9168     #2 20_US
9169     %010 TOP_LCD
9170     #2 20_US
9171     %00101000 LCD_WRF
9172     %1000 LCD_WRF
9173     LCD_CLEAR
9174     %0110 LCD_WRF
9175     %1100 LCD_WRF
9176     LCD_CLEAR
9177     ['] LCD_HOME IS CR
9178     ['] LCD_WRC  IS EMIT
9179     CR ." I love you"
9180     ['] CR >BODY IS CR
9181     ['] EMIT >BODY IS EMIT
9182     ." RC5toLCD is running. Type STOP to quit"
9183     PWR_STATE ABORT
9184 ;
9185
9186 CODE START
9187 MOV #$4000,R9
9188 MOV #BACKGROUND,2(R9)
9189 MOV #WARM,R9
9190 MOV #SYS_INIT,2(R9)
9191 MOV R9,R0
9192 ENDCODE 
9193 PWR_STATE
9194
9195 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
9196
9197 MARKER {RC5TOLCD}
9198
9199 [UNDEFINED] @ [IF]
9200 CODE @
9201 MOV @R14,R14
9202 MOV @R13+,R0
9203 ENDCODE
9204 [THEN]
9205
9206 [UNDEFINED] CONSTANT [IF]
9207 : CONSTANT 
9208 CREATE
9209 HI2LO
9210 MOV R14,-2(R10)
9211 MOV @R15+,R14
9212 MOV @R1+,R13
9213 MOV @R13+,R0
9214 ENDCODE
9215 [THEN]
9216
9217 [UNDEFINED] STATE [IF]
9218 $1DBE CONSTANT STATE
9219 [THEN]
9220
9221 [UNDEFINED] = [IF]
9222 CODE =
9223 SUB @R15+,R14
9224 0<> IF
9225     AND #0,R14
9226     MOV @R13+,R0
9227 THEN
9228 XOR #-1,R14
9229 MOV @R13+,R0
9230 ENDCODE
9231 [THEN]
9232
9233 [UNDEFINED] IF [IF]
9234 CODE IF
9235 SUB #2,R15
9236 MOV R14,0(R15)
9237 MOV &$1DC6,R14
9238 ADD #4,&$1DC6
9239 MOV #$4042,0(R14)
9240 ADD #2,R14
9241 MOV @R13+,R0
9242 ENDCODE IMMEDIATE
9243
9244 CODE THEN
9245 MOV &$1DC6,0(R14)
9246 MOV @R15+,R14
9247 MOV @R13+,R0
9248 ENDCODE IMMEDIATE
9249 [THEN]
9250
9251 [UNDEFINED] ELSE [IF]
9252 CODE ELSE
9253 ADD #4,&$1DC6
9254 MOV &$1DC6,R10
9255 MOV #$403E,-4(R10)
9256 MOV R10,0(R14)
9257 SUB #2,R10
9258 MOV R10,R14
9259 MOV @R13+,R0
9260 ENDCODE IMMEDIATE
9261 [THEN]
9262
9263 [UNDEFINED] IS [IF]
9264
9265 CODE DEFER!
9266 MOV @R15+,2(R14)
9267 MOV @R15+,R14
9268 MOV @R13+,R0
9269 ENDCODE
9270
9271
9272 : IS
9273 STATE @
9274 IF  POSTPONE ['] POSTPONE DEFER! 
9275 ELSE ' DEFER! 
9276 THEN
9277 ; IMMEDIATE
9278 [THEN]
9279
9280 [UNDEFINED] >BODY [IF]
9281 CODE >BODY
9282 ADD #4,R14
9283 MOV @R13+,R0
9284 ENDCODE
9285 [THEN]
9286
9287
9288 CODE 20_US
9289 BEGIN
9290     BEGIN
9291         BIT #1,&$3C0
9292     0<> UNTIL
9293     BIC #1,&$3C0
9294     SUB #1,R14
9295 U< UNTIL
9296 MOV @R15+,R14
9297 MOV @R13+,R0
9298 ENDCODE
9299
9300 CODE TOP_LCD
9301     BIS.B #4,&$243
9302     BIT.B #1,&$241
9303 0= IF
9304     AND.B #$0F,R14
9305     MOV.B R14,&$222
9306     BIC.B #4,&$243
9307     MOV @R15+,R14
9308     MOV @R13+,R0
9309 THEN
9310     SUB #2,R15
9311     MOV R14,0(R15)
9312     BIC.B #4,&$243
9313     MOV.B &$220,R14
9314     AND.B #$0F,R14
9315     MOV @R13+,R0
9316 ENDCODE
9317
9318 CODE LCD_WRC
9319     BIS.B #2,&$243
9320 BW1 SUB #2,R15
9321     MOV R14,0(R15)
9322     RRUM #4,R14
9323     BIC.B #1,&$243
9324     BIS.B #$0F,&$224
9325 COLON
9326     TOP_LCD 2 20_US
9327     TOP_LCD 2 20_US 
9328 ;
9329
9330 CODE LCD_WRF
9331     BIC.B #2,&$243
9332     GOTO BW1
9333 ENDCODE
9334
9335 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
9336 : LCD_HOME $02 LCD_WRF 100 20_us ;
9337
9338
9339
9340 ASM WDT_INT
9341 ADD #2,R1
9342 BIT.B #$20,&$240
9343 0= IF
9344     CMP #19,&$3D6
9345     U< IF
9346         ADD #1,&$3D6
9347     THEN
9348 ELSE
9349     BIT.B #$40,&$240
9350     0= IF
9351         CMP #3,&$3D6
9352         U>= IF
9353            SUB #1,&$3D6
9354         THEN
9355     THEN
9356 THEN
9357 BW1
9358 MOV @R1+,R0
9359 ENDASM
9360
9361 ASM RC5_INT
9362 ADD #2,R1
9363 $1806 @ 16000 = [IF]
9364     MOV #1,&$3A0
9365 [THEN]
9366 $1806 @ 24000 = [IF]
9367     MOV #2,&$3A0
9368 [THEN]
9369 MOV #1778,R9
9370 MOV #14,R10
9371 BEGIN
9372 MOV #%1011100100,&$380
9373     RRUM    #1,R9
9374     MOV     R9,R8
9375     RRUM    #1,R8
9376     ADD     R9,R8
9377     BEGIN   CMP R8,&$390
9378     U>= UNTIL
9379     BIT.B   #4,&$200
9380     ADDC    R11,R11
9381     MOV.B   &$200,&$208
9382     BIC.B   #4,&$20C
9383     SUB     #1,R10
9384 0<> WHILE
9385     ADD R9,R8
9386     BEGIN
9387         MOV &$390,R9
9388         CMP R8,R9
9389         U>= IF
9390         BIC #$30,&$380
9391         GOTO BW1
9392         THEN
9393         BIT.B #4,&$20C
9394     0<> UNTIL
9395 REPEAT
9396 BIC #$30,&$380
9397 RLAM    #1,R11
9398 MOV.B   R11,R9
9399 RRUM    #2,R9
9400 BIT     #$4000,R11
9401 0= IF   BIS #$40,R9
9402 THEN
9403 RRUM    #3,R11
9404 XOR     @R1,R11
9405 BIT     #$400,R11
9406 0= ?GOTO BW1
9407 XOR #$400,0(R1)
9408 SUB #8,R15
9409 MOV R14,6(R15)
9410 MOV &$1DDC,4(R15)
9411 MOV #$10,&$1DDC
9412 MOV R9,0(R15)
9413 MOV #0,R14
9414 LO2HI
9415     LCD_CLEAR
9416     <# # #S #36 HOLD #>
9417     ['] LCD_WRC IS EMIT
9418     TYPE
9419     ['] EMIT >BODY IS EMIT
9420 HI2LO
9421 MOV @R15+,&$1DDC
9422 MOV @R15+,R14
9423 MOV @R1+,R0
9424 ENDASM
9425
9426 ASM BACKGROUND
9427 BEGIN
9428     CALL &$1814
9429     BIS &$180A,R2
9430 AGAIN
9431 ENDASM
9432
9433 ASM SYS_OUT
9434     MOV #WARM,R9
9435     ADD #4,R9
9436     MOV R9,R0
9437 ENDASM
9438
9439 CODE STOP
9440 BW1 MOV #$4000,R9
9441     ADD #4,R9
9442     MOV R9,-2(R9)
9443     MOV #WARM,R9
9444     MOV #SYS_OUT,2(R9)
9445     BIC.B #4,&$20A
9446     BIC.B #4,&$20C
9447     MOV #0,&$3C0
9448     MOV #0,&$340
9449     MOV #0,&$342
9450     MOV #COLD,R9
9451     MOV R9,&$FFDE
9452     MOV R9,&$FFEA
9453 COLON
9454 ECHO
9455 ." RC5toLCD is removed,"
9456 ."  type START to restart"
9457  WARM
9458 ;
9459
9460 CODE SYS_INIT
9461 MOV #%10_1101_0100,&$3C0
9462 $1806 @ 16000 = [IF]
9463     MOV #1,&$3E0
9464 [THEN]
9465 $1806 @ 24000 = [IF]
9466     MOV #2,&$3E0
9467 [THEN]
9468     MOV #19,&$3D2
9469 MOV #%0110_0000,&$3C6
9470     MOV #10,&$3D6
9471     BIS.B #$20,&$204
9472     BIS.B #$20,&$20A
9473     BIS.B #7,&$245
9474     BIC.B #7,&$247
9475     BIS.B #$0F,&$224
9476     BIC.B #$0F,&$226
9477     BIS.B #4,&$20A
9478     BIC.B #4,&$20C
9479     MOV #RC5_INT,&$FFDE
9480 MOV #%01_0001_0100,&$340
9481     MOV ##3276,&$352
9482     MOV #%10000,&$342
9483     MOV #WDT_INT,&$FFEA
9484 BIC #1,&$130
9485 BIS.B #3,&$20D
9486 MOV &$1808,R8
9487 CMP #4,R8
9488 0= ?GOTO BW1
9489 COLON
9490     #1000 20_US
9491     %011 TOP_LCD
9492     #205 20_US
9493     %011 TOP_LCD
9494     #5 20_US
9495     %011 TOP_LCD
9496     #2 20_US
9497     %010 TOP_LCD
9498     #2 20_US
9499     %00101000 LCD_WRF
9500     %1000 LCD_WRF
9501     LCD_CLEAR
9502     %0110 LCD_WRF
9503     %1100 LCD_WRF
9504     LCD_CLEAR
9505     ['] LCD_HOME IS CR
9506     ['] LCD_WRC  IS EMIT
9507     CR ." I love you"
9508     ['] CR >BODY IS CR
9509     ['] EMIT >BODY IS EMIT
9510     ." RC5toLCD is running. Type STOP to quit"
9511     PWR_STATE ABORT
9512 ;
9513
9514 CODE START
9515 MOV #$4000,R9
9516 MOV #BACKGROUND,2(R9)
9517 MOV #WARM,R9
9518 MOV #SYS_INIT,2(R9)
9519 MOV R9,R0
9520 ENDCODE 
9521 PWR_STATE
9522
9523 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
9524
9525 MARKER {RC5TOLCD}
9526
9527 [UNDEFINED] @ [IF]
9528 CODE @
9529 MOV @R14,R14
9530 MOV @R13+,R0
9531 ENDCODE
9532 [THEN]
9533
9534 [UNDEFINED] CONSTANT [IF]
9535 : CONSTANT 
9536 CREATE
9537 HI2LO
9538 MOV R14,-2(R10)
9539 MOV @R15+,R14
9540 MOV @R1+,R13
9541 MOV @R13+,R0
9542 ENDCODE
9543 [THEN]
9544
9545 [UNDEFINED] STATE [IF]
9546 $1DBE CONSTANT STATE
9547 [THEN]
9548
9549 [UNDEFINED] = [IF]
9550 CODE =
9551 SUB @R15+,R14
9552 0<> IF
9553     AND #0,R14
9554     MOV @R13+,R0
9555 THEN
9556 XOR #-1,R14
9557 MOV @R13+,R0
9558 ENDCODE
9559 [THEN]
9560
9561 [UNDEFINED] IF [IF]
9562 CODE IF
9563 SUB #2,R15
9564 MOV R14,0(R15)
9565 MOV &$1DC6,R14
9566 ADD #4,&$1DC6
9567 MOV #$4042,0(R14)
9568 ADD #2,R14
9569 MOV @R13+,R0
9570 ENDCODE IMMEDIATE
9571
9572 CODE THEN
9573 MOV &$1DC6,0(R14)
9574 MOV @R15+,R14
9575 MOV @R13+,R0
9576 ENDCODE IMMEDIATE
9577 [THEN]
9578
9579 [UNDEFINED] ELSE [IF]
9580 CODE ELSE
9581 ADD #4,&$1DC6
9582 MOV &$1DC6,R10
9583 MOV #$403E,-4(R10)
9584 MOV R10,0(R14)
9585 SUB #2,R10
9586 MOV R10,R14
9587 MOV @R13+,R0
9588 ENDCODE IMMEDIATE
9589 [THEN]
9590
9591 [UNDEFINED] IS [IF]
9592
9593 CODE DEFER!
9594 MOV @R15+,2(R14)
9595 MOV @R15+,R14
9596 MOV @R13+,R0
9597 ENDCODE
9598
9599
9600 : IS
9601 STATE @
9602 IF  POSTPONE ['] POSTPONE DEFER! 
9603 ELSE ' DEFER! 
9604 THEN
9605 ; IMMEDIATE
9606 [THEN]
9607
9608 [UNDEFINED] >BODY [IF]
9609 CODE >BODY
9610 ADD #4,R14
9611 MOV @R13+,R0
9612 ENDCODE
9613 [THEN]
9614
9615
9616 CODE 20_US
9617 BEGIN
9618     BEGIN
9619         BIT #1,&$3C0
9620     0<> UNTIL
9621     BIC #1,&$3C0
9622     SUB #1,R14
9623 U< UNTIL
9624 MOV @R15+,R14
9625 MOV @R13+,R0
9626 ENDCODE
9627
9628 CODE TOP_LCD
9629     BIS.B #4,&$243
9630     BIT.B #1,&$241
9631 0= IF
9632     AND.B #$0F,R14
9633     MOV.B R14,&$222
9634     BIC.B #4,&$243
9635     MOV @R15+,R14
9636     MOV @R13+,R0
9637 THEN
9638     SUB #2,R15
9639     MOV R14,0(R15)
9640     BIC.B #4,&$243
9641     MOV.B &$220,R14
9642     AND.B #$0F,R14
9643     MOV @R13+,R0
9644 ENDCODE
9645
9646 CODE LCD_WRC
9647     BIS.B #2,&$243
9648 BW1 SUB #2,R15
9649     MOV R14,0(R15)
9650     RRUM #4,R14
9651     BIC.B #1,&$243
9652     BIS.B #$0F,&$224
9653 COLON
9654     TOP_LCD 2 20_US
9655     TOP_LCD 2 20_US 
9656 ;
9657
9658 CODE LCD_WRF
9659     BIC.B #2,&$243
9660     GOTO BW1
9661 ENDCODE
9662
9663 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
9664 : LCD_HOME $02 LCD_WRF 100 20_us ;
9665
9666
9667
9668 ASM WDT_INT
9669 ADD #2,R1
9670 BIT.B #$20,&$240
9671 0= IF
9672     CMP #19,&$3D6
9673     U< IF
9674         ADD #1,&$3D6
9675     THEN
9676 ELSE
9677     BIT.B #$40,&$240
9678     0= IF
9679         CMP #3,&$3D6
9680         U>= IF
9681            SUB #1,&$3D6
9682         THEN
9683     THEN
9684 THEN
9685 BW1
9686 MOV @R1+,R0
9687 ENDASM
9688
9689 ASM RC5_INT
9690 ADD #2,R1
9691 $1806 @ 16000 = [IF]
9692     MOV #1,&$3A0
9693 [THEN]
9694 $1806 @ 24000 = [IF]
9695     MOV #2,&$3A0
9696 [THEN]
9697 MOV #1778,R9
9698 MOV #14,R10
9699 BEGIN
9700 MOV #%1011100100,&$380
9701     RRUM    #1,R9
9702     MOV     R9,R8
9703     RRUM    #1,R8
9704     ADD     R9,R8
9705     BEGIN   CMP R8,&$390
9706     U>= UNTIL
9707     BIT.B   #4,&$200
9708     ADDC    R11,R11
9709     MOV.B   &$200,&$208
9710     BIC.B   #4,&$20C
9711     SUB     #1,R10
9712 0<> WHILE
9713     ADD R9,R8
9714     BEGIN
9715         MOV &$390,R9
9716         CMP R8,R9
9717         U>= IF
9718         BIC #$30,&$380
9719         GOTO BW1
9720         THEN
9721         BIT.B #4,&$20C
9722     0<> UNTIL
9723 REPEAT
9724 BIC #$30,&$380
9725 RLAM    #1,R11
9726 MOV.B   R11,R9
9727 RRUM    #2,R9
9728 BIT     #$4000,R11
9729 0= IF   BIS #$40,R9
9730 THEN
9731 RRUM    #3,R11
9732 XOR     @R1,R11
9733 BIT     #$400,R11
9734 0= ?GOTO BW1
9735 XOR #$400,0(R1)
9736 SUB #8,R15
9737 MOV R14,6(R15)
9738 MOV &$1DDC,4(R15)
9739 MOV #$10,&$1DDC
9740 MOV R9,0(R15)
9741 MOV #0,R14
9742 LO2HI
9743     LCD_CLEAR
9744     <# # #S #36 HOLD #>
9745     ['] LCD_WRC IS EMIT
9746     TYPE
9747     ['] EMIT >BODY IS EMIT
9748 HI2LO
9749 MOV @R15+,&$1DDC
9750 MOV @R15+,R14
9751 MOV @R1+,R0
9752 ENDASM
9753
9754 ASM BACKGROUND
9755 BEGIN
9756     CALL &$1814
9757     BIS &$180A,R2
9758 AGAIN
9759 ENDASM
9760
9761 ASM SYS_OUT
9762     MOV #WARM,R9
9763     ADD #4,R9
9764     MOV R9,R0
9765 ENDASM
9766
9767 CODE STOP
9768 BW1 MOV #$4000,R9
9769     ADD #4,R9
9770     MOV R9,-2(R9)
9771     MOV #WARM,R9
9772     MOV #SYS_OUT,2(R9)
9773     BIC.B #4,&$20A
9774     BIC.B #4,&$20C
9775     MOV #0,&$3C0
9776     MOV #0,&$340
9777     MOV #0,&$342
9778     MOV #COLD,R9
9779     MOV R9,&$FFDE
9780     MOV R9,&$FFEA
9781 COLON
9782 ECHO
9783 ." RC5toLCD is removed,"
9784 ."  type START to restart"
9785  WARM
9786 ;
9787
9788 CODE SYS_INIT
9789 MOV #%10_1101_0100,&$3C0
9790 $1806 @ 16000 = [IF]
9791     MOV #1,&$3E0
9792 [THEN]
9793 $1806 @ 24000 = [IF]
9794     MOV #2,&$3E0
9795 [THEN]
9796     MOV #19,&$3D2
9797 MOV #%0110_0000,&$3C6
9798     MOV #10,&$3D6
9799     BIS.B #$20,&$204
9800     BIS.B #$20,&$20A
9801     BIS.B #7,&$245
9802     BIC.B #7,&$247
9803     BIS.B #$0F,&$224
9804     BIC.B #$0F,&$226
9805     BIS.B #4,&$20A
9806     BIC.B #4,&$20C
9807     MOV #RC5_INT,&$FFDE
9808 MOV #%01_0001_0100,&$340
9809     MOV ##3276,&$352
9810     MOV #%10000,&$342
9811     MOV #WDT_INT,&$FFEA
9812 BIC #1,&$130
9813 BIS.B #3,&$20D
9814 MOV &$1808,R8
9815 CMP #4,R8
9816 0= ?GOTO BW1
9817 COLON
9818     #1000 20_US
9819     %011 TOP_LCD
9820     #205 20_US
9821     %011 TOP_LCD
9822     #5 20_US
9823     %011 TOP_LCD
9824     #2 20_US
9825     %010 TOP_LCD
9826     #2 20_US
9827     %00101000 LCD_WRF
9828     %1000 LCD_WRF
9829     LCD_CLEAR
9830     %0110 LCD_WRF
9831     %1100 LCD_WRF
9832     LCD_CLEAR
9833     ['] LCD_HOME IS CR
9834     ['] LCD_WRC  IS EMIT
9835     CR ." I love you"
9836     ['] CR >BODY IS CR
9837     ['] EMIT >BODY IS EMIT
9838     ." RC5toLCD is running. Type STOP to quit"
9839     PWR_STATE ABORT
9840 ;
9841
9842 CODE START
9843 MOV #$4000,R9
9844 MOV #BACKGROUND,2(R9)
9845 MOV #WARM,R9
9846 MOV #SYS_INIT,2(R9)
9847 MOV R9,R0
9848 ENDCODE 
9849 PWR_STATE
9850
9851 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
9852
9853 MARKER {RC5TOLCD}
9854
9855 [UNDEFINED] @ [IF]
9856 CODE @
9857 MOV @R14,R14
9858 MOV @R13+,R0
9859 ENDCODE
9860 [THEN]
9861
9862 [UNDEFINED] CONSTANT [IF]
9863 : CONSTANT 
9864 CREATE
9865 HI2LO
9866 MOV R14,-2(R10)
9867 MOV @R15+,R14
9868 MOV @R1+,R13
9869 MOV @R13+,R0
9870 ENDCODE
9871 [THEN]
9872
9873 [UNDEFINED] STATE [IF]
9874 $1DBE CONSTANT STATE
9875 [THEN]
9876
9877 [UNDEFINED] = [IF]
9878 CODE =
9879 SUB @R15+,R14
9880 0<> IF
9881     AND #0,R14
9882     MOV @R13+,R0
9883 THEN
9884 XOR #-1,R14
9885 MOV @R13+,R0
9886 ENDCODE
9887 [THEN]
9888
9889 [UNDEFINED] IF [IF]
9890 CODE IF
9891 SUB #2,R15
9892 MOV R14,0(R15)
9893 MOV &$1DC6,R14
9894 ADD #4,&$1DC6
9895 MOV #$4042,0(R14)
9896 ADD #2,R14
9897 MOV @R13+,R0
9898 ENDCODE IMMEDIATE
9899
9900 CODE THEN
9901 MOV &$1DC6,0(R14)
9902 MOV @R15+,R14
9903 MOV @R13+,R0
9904 ENDCODE IMMEDIATE
9905 [THEN]
9906
9907 [UNDEFINED] ELSE [IF]
9908 CODE ELSE
9909 ADD #4,&$1DC6
9910 MOV &$1DC6,R10
9911 MOV #$403E,-4(R10)
9912 MOV R10,0(R14)
9913 SUB #2,R10
9914 MOV R10,R14
9915 MOV @R13+,R0
9916 ENDCODE IMMEDIATE
9917 [THEN]
9918
9919 [UNDEFINED] IS [IF]
9920
9921 CODE DEFER!
9922 MOV @R15+,2(R14)
9923 MOV @R15+,R14
9924 MOV @R13+,R0
9925 ENDCODE
9926
9927
9928 : IS
9929 STATE @
9930 IF  POSTPONE ['] POSTPONE DEFER! 
9931 ELSE ' DEFER! 
9932 THEN
9933 ; IMMEDIATE
9934 [THEN]
9935
9936 [UNDEFINED] >BODY [IF]
9937 CODE >BODY
9938 ADD #4,R14
9939 MOV @R13+,R0
9940 ENDCODE
9941 [THEN]
9942
9943
9944 CODE 20_US
9945 BEGIN
9946     BEGIN
9947         BIT #1,&$3C0
9948     0<> UNTIL
9949     BIC #1,&$3C0
9950     SUB #1,R14
9951 U< UNTIL
9952 MOV @R15+,R14
9953 MOV @R13+,R0
9954 ENDCODE
9955
9956 CODE TOP_LCD
9957     BIS.B #4,&$243
9958     BIT.B #1,&$241
9959 0= IF
9960     AND.B #$0F,R14
9961     MOV.B R14,&$222
9962     BIC.B #4,&$243
9963     MOV @R15+,R14
9964     MOV @R13+,R0
9965 THEN
9966     SUB #2,R15
9967     MOV R14,0(R15)
9968     BIC.B #4,&$243
9969     MOV.B &$220,R14
9970     AND.B #$0F,R14
9971     MOV @R13+,R0
9972 ENDCODE
9973
9974 CODE LCD_WRC
9975     BIS.B #2,&$243
9976 BW1 SUB #2,R15
9977     MOV R14,0(R15)
9978     RRUM #4,R14
9979     BIC.B #1,&$243
9980     BIS.B #$0F,&$224
9981 COLON
9982     TOP_LCD 2 20_US
9983     TOP_LCD 2 20_US 
9984 ;
9985
9986 CODE LCD_WRF
9987     BIC.B #2,&$243
9988     GOTO BW1
9989 ENDCODE
9990
9991 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
9992 : LCD_HOME $02 LCD_WRF 100 20_us ;
9993
9994
9995
9996 ASM WDT_INT
9997 ADD #2,R1
9998 BIT.B #$20,&$240
9999 0= IF
10000     CMP #19,&$3D6
10001     U< IF
10002         ADD #1,&$3D6
10003     THEN
10004 ELSE
10005     BIT.B #$40,&$240
10006     0= IF
10007         CMP #3,&$3D6
10008         U>= IF
10009            SUB #1,&$3D6
10010         THEN
10011     THEN
10012 THEN
10013 BW1
10014 MOV @R1+,R0
10015 ENDASM
10016
10017 ASM RC5_INT
10018 ADD #2,R1
10019 $1806 @ 16000 = [IF]
10020     MOV #1,&$3A0
10021 [THEN]
10022 $1806 @ 24000 = [IF]
10023     MOV #2,&$3A0
10024 [THEN]
10025 MOV #1778,R9
10026 MOV #14,R10
10027 BEGIN
10028 MOV #%1011100100,&$380
10029     RRUM    #1,R9
10030     MOV     R9,R8
10031     RRUM    #1,R8
10032     ADD     R9,R8
10033     BEGIN   CMP R8,&$390
10034     U>= UNTIL
10035     BIT.B   #4,&$200
10036     ADDC    R11,R11
10037     MOV.B   &$200,&$208
10038     BIC.B   #4,&$20C
10039     SUB     #1,R10
10040 0<> WHILE
10041     ADD R9,R8
10042     BEGIN
10043         MOV &$390,R9
10044         CMP R8,R9
10045         U>= IF
10046         BIC #$30,&$380
10047         GOTO BW1
10048         THEN
10049         BIT.B #4,&$20C
10050     0<> UNTIL
10051 REPEAT
10052 BIC #$30,&$380
10053 RLAM    #1,R11
10054 MOV.B   R11,R9
10055 RRUM    #2,R9
10056 BIT     #$4000,R11
10057 0= IF   BIS #$40,R9
10058 THEN
10059 RRUM    #3,R11
10060 XOR     @R1,R11
10061 BIT     #$400,R11
10062 0= ?GOTO BW1
10063 XOR #$400,0(R1)
10064 SUB #8,R15
10065 MOV R14,6(R15)
10066 MOV &$1DDC,4(R15)
10067 MOV #$10,&$1DDC
10068 MOV R9,0(R15)
10069 MOV #0,R14
10070 LO2HI
10071     LCD_CLEAR
10072     <# # #S #36 HOLD #>
10073     ['] LCD_WRC IS EMIT
10074     TYPE
10075     ['] EMIT >BODY IS EMIT
10076 HI2LO
10077 MOV @R15+,&$1DDC
10078 MOV @R15+,R14
10079 MOV @R1+,R0
10080 ENDASM
10081
10082 ASM BACKGROUND
10083 BEGIN
10084     CALL &$1814
10085     BIS &$180A,R2
10086 AGAIN
10087 ENDASM
10088
10089 ASM SYS_OUT
10090     MOV #WARM,R9
10091     ADD #4,R9
10092     MOV R9,R0
10093 ENDASM
10094
10095 CODE STOP
10096 BW1 MOV #$4000,R9
10097     ADD #4,R9
10098     MOV R9,-2(R9)
10099     MOV #WARM,R9
10100     MOV #SYS_OUT,2(R9)
10101     BIC.B #4,&$20A
10102     BIC.B #4,&$20C
10103     MOV #0,&$3C0
10104     MOV #0,&$340
10105     MOV #0,&$342
10106     MOV #COLD,R9
10107     MOV R9,&$FFDE
10108     MOV R9,&$FFEA
10109 COLON
10110 ECHO
10111 ." RC5toLCD is removed,"
10112 ."  type START to restart"
10113  WARM
10114 ;
10115
10116 CODE SYS_INIT
10117 MOV #%10_1101_0100,&$3C0
10118 $1806 @ 16000 = [IF]
10119     MOV #1,&$3E0
10120 [THEN]
10121 $1806 @ 24000 = [IF]
10122     MOV #2,&$3E0
10123 [THEN]
10124     MOV #19,&$3D2
10125 MOV #%0110_0000,&$3C6
10126     MOV #10,&$3D6
10127     BIS.B #$20,&$204
10128     BIS.B #$20,&$20A
10129     BIS.B #7,&$245
10130     BIC.B #7,&$247
10131     BIS.B #$0F,&$224
10132     BIC.B #$0F,&$226
10133     BIS.B #4,&$20A
10134     BIC.B #4,&$20C
10135     MOV #RC5_INT,&$FFDE
10136 MOV #%01_0001_0100,&$340
10137     MOV ##3276,&$352
10138     MOV #%10000,&$342
10139     MOV #WDT_INT,&$FFEA
10140 BIC #1,&$130
10141 BIS.B #3,&$20D
10142 MOV &$1808,R8
10143 CMP #4,R8
10144 0= ?GOTO BW1
10145 COLON
10146     #1000 20_US
10147     %011 TOP_LCD
10148     #205 20_US
10149     %011 TOP_LCD
10150     #5 20_US
10151     %011 TOP_LCD
10152     #2 20_US
10153     %010 TOP_LCD
10154     #2 20_US
10155     %00101000 LCD_WRF
10156     %1000 LCD_WRF
10157     LCD_CLEAR
10158     %0110 LCD_WRF
10159     %1100 LCD_WRF
10160     LCD_CLEAR
10161     ['] LCD_HOME IS CR
10162     ['] LCD_WRC  IS EMIT
10163     CR ." I love you"
10164     ['] CR >BODY IS CR
10165     ['] EMIT >BODY IS EMIT
10166     ." RC5toLCD is running. Type STOP to quit"
10167     PWR_STATE ABORT
10168 ;
10169
10170 CODE START
10171 MOV #$4000,R9
10172 MOV #BACKGROUND,2(R9)
10173 MOV #WARM,R9
10174 MOV #SYS_INIT,2(R9)
10175 MOV R9,R0
10176 ENDCODE 
10177 PWR_STATE
10178
10179 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
10180
10181 MARKER {RC5TOLCD}
10182
10183 [UNDEFINED] @ [IF]
10184 CODE @
10185 MOV @R14,R14
10186 MOV @R13+,R0
10187 ENDCODE
10188 [THEN]
10189
10190 [UNDEFINED] CONSTANT [IF]
10191 : CONSTANT 
10192 CREATE
10193 HI2LO
10194 MOV R14,-2(R10)
10195 MOV @R15+,R14
10196 MOV @R1+,R13
10197 MOV @R13+,R0
10198 ENDCODE
10199 [THEN]
10200
10201 [UNDEFINED] STATE [IF]
10202 $1DBE CONSTANT STATE
10203 [THEN]
10204
10205 [UNDEFINED] = [IF]
10206 CODE =
10207 SUB @R15+,R14
10208 0<> IF
10209     AND #0,R14
10210     MOV @R13+,R0
10211 THEN
10212 XOR #-1,R14
10213 MOV @R13+,R0
10214 ENDCODE
10215 [THEN]
10216
10217 [UNDEFINED] IF [IF]
10218 CODE IF
10219 SUB #2,R15
10220 MOV R14,0(R15)
10221 MOV &$1DC6,R14
10222 ADD #4,&$1DC6
10223 MOV #$4042,0(R14)
10224 ADD #2,R14
10225 MOV @R13+,R0
10226 ENDCODE IMMEDIATE
10227
10228 CODE THEN
10229 MOV &$1DC6,0(R14)
10230 MOV @R15+,R14
10231 MOV @R13+,R0
10232 ENDCODE IMMEDIATE
10233 [THEN]
10234
10235 [UNDEFINED] ELSE [IF]
10236 CODE ELSE
10237 ADD #4,&$1DC6
10238 MOV &$1DC6,R10
10239 MOV #$403E,-4(R10)
10240 MOV R10,0(R14)
10241 SUB #2,R10
10242 MOV R10,R14
10243 MOV @R13+,R0
10244 ENDCODE IMMEDIATE
10245 [THEN]
10246
10247 [UNDEFINED] IS [IF]
10248
10249 CODE DEFER!
10250 MOV @R15+,2(R14)
10251 MOV @R15+,R14
10252 MOV @R13+,R0
10253 ENDCODE
10254
10255
10256 : IS
10257 STATE @
10258 IF  POSTPONE ['] POSTPONE DEFER! 
10259 ELSE ' DEFER! 
10260 THEN
10261 ; IMMEDIATE
10262 [THEN]
10263
10264 [UNDEFINED] >BODY [IF]
10265 CODE >BODY
10266 ADD #4,R14
10267 MOV @R13+,R0
10268 ENDCODE
10269 [THEN]
10270
10271
10272 CODE 20_US
10273 BEGIN
10274     BEGIN
10275         BIT #1,&$3C0
10276     0<> UNTIL
10277     BIC #1,&$3C0
10278     SUB #1,R14
10279 U< UNTIL
10280 MOV @R15+,R14
10281 MOV @R13+,R0
10282 ENDCODE
10283
10284 CODE TOP_LCD
10285     BIS.B #4,&$243
10286     BIT.B #1,&$241
10287 0= IF
10288     AND.B #$0F,R14
10289     MOV.B R14,&$222
10290     BIC.B #4,&$243
10291     MOV @R15+,R14
10292     MOV @R13+,R0
10293 THEN
10294     SUB #2,R15
10295     MOV R14,0(R15)
10296     BIC.B #4,&$243
10297     MOV.B &$220,R14
10298     AND.B #$0F,R14
10299     MOV @R13+,R0
10300 ENDCODE
10301
10302 CODE LCD_WRC
10303     BIS.B #2,&$243
10304 BW1 SUB #2,R15
10305     MOV R14,0(R15)
10306     RRUM #4,R14
10307     BIC.B #1,&$243
10308     BIS.B #$0F,&$224
10309 COLON
10310     TOP_LCD 2 20_US
10311     TOP_LCD 2 20_US 
10312 ;
10313
10314 CODE LCD_WRF
10315     BIC.B #2,&$243
10316     GOTO BW1
10317 ENDCODE
10318
10319 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
10320 : LCD_HOME $02 LCD_WRF 100 20_us ;
10321
10322
10323
10324 ASM WDT_INT
10325 ADD #2,R1
10326 BIT.B #$20,&$240
10327 0= IF
10328     CMP #19,&$3D6
10329     U< IF
10330         ADD #1,&$3D6
10331     THEN
10332 ELSE
10333     BIT.B #$40,&$240
10334     0= IF
10335         CMP #3,&$3D6
10336         U>= IF
10337            SUB #1,&$3D6
10338         THEN
10339     THEN
10340 THEN
10341 BW1
10342 MOV @R1+,R0
10343 ENDASM
10344
10345 ASM RC5_INT
10346 ADD #2,R1
10347 $1806 @ 16000 = [IF]
10348     MOV #1,&$3A0
10349 [THEN]
10350 $1806 @ 24000 = [IF]
10351     MOV #2,&$3A0
10352 [THEN]
10353 MOV #1778,R9
10354 MOV #14,R10
10355 BEGIN
10356 MOV #%1011100100,&$380
10357     RRUM    #1,R9
10358     MOV     R9,R8
10359     RRUM    #1,R8
10360     ADD     R9,R8
10361     BEGIN   CMP R8,&$390
10362     U>= UNTIL
10363     BIT.B   #4,&$200
10364     ADDC    R11,R11
10365     MOV.B   &$200,&$208
10366     BIC.B   #4,&$20C
10367     SUB     #1,R10
10368 0<> WHILE
10369     ADD R9,R8
10370     BEGIN
10371         MOV &$390,R9
10372         CMP R8,R9
10373         U>= IF
10374         BIC #$30,&$380
10375         GOTO BW1
10376         THEN
10377         BIT.B #4,&$20C
10378     0<> UNTIL
10379 REPEAT
10380 BIC #$30,&$380
10381 RLAM    #1,R11
10382 MOV.B   R11,R9
10383 RRUM    #2,R9
10384 BIT     #$4000,R11
10385 0= IF   BIS #$40,R9
10386 THEN
10387 RRUM    #3,R11
10388 XOR     @R1,R11
10389 BIT     #$400,R11
10390 0= ?GOTO BW1
10391 XOR #$400,0(R1)
10392 SUB #8,R15
10393 MOV R14,6(R15)
10394 MOV &$1DDC,4(R15)
10395 MOV #$10,&$1DDC
10396 MOV R9,0(R15)
10397 MOV #0,R14
10398 LO2HI
10399     LCD_CLEAR
10400     <# # #S #36 HOLD #>
10401     ['] LCD_WRC IS EMIT
10402     TYPE
10403     ['] EMIT >BODY IS EMIT
10404 HI2LO
10405 MOV @R15+,&$1DDC
10406 MOV @R15+,R14
10407 MOV @R1+,R0
10408 ENDASM
10409
10410 ASM BACKGROUND
10411 BEGIN
10412     CALL &$1814
10413     BIS &$180A,R2
10414 AGAIN
10415 ENDASM
10416
10417 ASM SYS_OUT
10418     MOV #WARM,R9
10419     ADD #4,R9
10420     MOV R9,R0
10421 ENDASM
10422
10423 CODE STOP
10424 BW1 MOV #$4000,R9
10425     ADD #4,R9
10426     MOV R9,-2(R9)
10427     MOV #WARM,R9
10428     MOV #SYS_OUT,2(R9)
10429     BIC.B #4,&$20A
10430     BIC.B #4,&$20C
10431     MOV #0,&$3C0
10432     MOV #0,&$340
10433     MOV #0,&$342
10434     MOV #COLD,R9
10435     MOV R9,&$FFDE
10436     MOV R9,&$FFEA
10437 COLON
10438 ECHO
10439 ." RC5toLCD is removed,"
10440 ."  type START to restart"
10441  WARM
10442 ;
10443
10444 CODE SYS_INIT
10445 MOV #%10_1101_0100,&$3C0
10446 $1806 @ 16000 = [IF]
10447     MOV #1,&$3E0
10448 [THEN]
10449 $1806 @ 24000 = [IF]
10450     MOV #2,&$3E0
10451 [THEN]
10452     MOV #19,&$3D2
10453 MOV #%0110_0000,&$3C6
10454     MOV #10,&$3D6
10455     BIS.B #$20,&$204
10456     BIS.B #$20,&$20A
10457     BIS.B #7,&$245
10458     BIC.B #7,&$247
10459     BIS.B #$0F,&$224
10460     BIC.B #$0F,&$226
10461     BIS.B #4,&$20A
10462     BIC.B #4,&$20C
10463     MOV #RC5_INT,&$FFDE
10464 MOV #%01_0001_0100,&$340
10465     MOV ##3276,&$352
10466     MOV #%10000,&$342
10467     MOV #WDT_INT,&$FFEA
10468 BIC #1,&$130
10469 BIS.B #3,&$20D
10470 MOV &$1808,R8
10471 CMP #4,R8
10472 0= ?GOTO BW1
10473 COLON
10474     #1000 20_US
10475     %011 TOP_LCD
10476     #205 20_US
10477     %011 TOP_LCD
10478     #5 20_US
10479     %011 TOP_LCD
10480     #2 20_US
10481     %010 TOP_LCD
10482     #2 20_US
10483     %00101000 LCD_WRF
10484     %1000 LCD_WRF
10485     LCD_CLEAR
10486     %0110 LCD_WRF
10487     %1100 LCD_WRF
10488     LCD_CLEAR
10489     ['] LCD_HOME IS CR
10490     ['] LCD_WRC  IS EMIT
10491     CR ." I love you"
10492     ['] CR >BODY IS CR
10493     ['] EMIT >BODY IS EMIT
10494     ." RC5toLCD is running. Type STOP to quit"
10495     PWR_STATE ABORT
10496 ;
10497
10498 CODE START
10499 MOV #$4000,R9
10500 MOV #BACKGROUND,2(R9)
10501 MOV #WARM,R9
10502 MOV #SYS_INIT,2(R9)
10503 MOV R9,R0
10504 ENDCODE 
10505 PWR_STATE
10506
10507 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
10508
10509 MARKER {RC5TOLCD}
10510
10511 [UNDEFINED] @ [IF]
10512 CODE @
10513 MOV @R14,R14
10514 MOV @R13+,R0
10515 ENDCODE
10516 [THEN]
10517
10518 [UNDEFINED] CONSTANT [IF]
10519 : CONSTANT 
10520 CREATE
10521 HI2LO
10522 MOV R14,-2(R10)
10523 MOV @R15+,R14
10524 MOV @R1+,R13
10525 MOV @R13+,R0
10526 ENDCODE
10527 [THEN]
10528
10529 [UNDEFINED] STATE [IF]
10530 $1DBE CONSTANT STATE
10531 [THEN]
10532
10533 [UNDEFINED] = [IF]
10534 CODE =
10535 SUB @R15+,R14
10536 0<> IF
10537     AND #0,R14
10538     MOV @R13+,R0
10539 THEN
10540 XOR #-1,R14
10541 MOV @R13+,R0
10542 ENDCODE
10543 [THEN]
10544
10545 [UNDEFINED] IF [IF]
10546 CODE IF
10547 SUB #2,R15
10548 MOV R14,0(R15)
10549 MOV &$1DC6,R14
10550 ADD #4,&$1DC6
10551 MOV #$4042,0(R14)
10552 ADD #2,R14
10553 MOV @R13+,R0
10554 ENDCODE IMMEDIATE
10555
10556 CODE THEN
10557 MOV &$1DC6,0(R14)
10558 MOV @R15+,R14
10559 MOV @R13+,R0
10560 ENDCODE IMMEDIATE
10561 [THEN]
10562
10563 [UNDEFINED] ELSE [IF]
10564 CODE ELSE
10565 ADD #4,&$1DC6
10566 MOV &$1DC6,R10
10567 MOV #$403E,-4(R10)
10568 MOV R10,0(R14)
10569 SUB #2,R10
10570 MOV R10,R14
10571 MOV @R13+,R0
10572 ENDCODE IMMEDIATE
10573 [THEN]
10574
10575 [UNDEFINED] IS [IF]
10576
10577 CODE DEFER!
10578 MOV @R15+,2(R14)
10579 MOV @R15+,R14
10580 MOV @R13+,R0
10581 ENDCODE
10582
10583
10584 : IS
10585 STATE @
10586 IF  POSTPONE ['] POSTPONE DEFER! 
10587 ELSE ' DEFER! 
10588 THEN
10589 ; IMMEDIATE
10590 [THEN]
10591
10592 [UNDEFINED] >BODY [IF]
10593 CODE >BODY
10594 ADD #4,R14
10595 MOV @R13+,R0
10596 ENDCODE
10597 [THEN]
10598
10599
10600 CODE 20_US
10601 BEGIN
10602     BEGIN
10603         BIT #1,&$3C0
10604     0<> UNTIL
10605     BIC #1,&$3C0
10606     SUB #1,R14
10607 U< UNTIL
10608 MOV @R15+,R14
10609 MOV @R13+,R0
10610 ENDCODE
10611
10612 CODE TOP_LCD
10613     BIS.B #4,&$243
10614     BIT.B #1,&$241
10615 0= IF
10616     AND.B #$0F,R14
10617     MOV.B R14,&$222
10618     BIC.B #4,&$243
10619     MOV @R15+,R14
10620     MOV @R13+,R0
10621 THEN
10622     SUB #2,R15
10623     MOV R14,0(R15)
10624     BIC.B #4,&$243
10625     MOV.B &$220,R14
10626     AND.B #$0F,R14
10627     MOV @R13+,R0
10628 ENDCODE
10629
10630 CODE LCD_WRC
10631     BIS.B #2,&$243
10632 BW1 SUB #2,R15
10633     MOV R14,0(R15)
10634     RRUM #4,R14
10635     BIC.B #1,&$243
10636     BIS.B #$0F,&$224
10637 COLON
10638     TOP_LCD 2 20_US
10639     TOP_LCD 2 20_US 
10640 ;
10641
10642 CODE LCD_WRF
10643     BIC.B #2,&$243
10644     GOTO BW1
10645 ENDCODE
10646
10647 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
10648 : LCD_HOME $02 LCD_WRF 100 20_us ;
10649
10650
10651
10652 ASM WDT_INT
10653 ADD #2,R1
10654 BIT.B #$20,&$240
10655 0= IF
10656     CMP #19,&$3D6
10657     U< IF
10658         ADD #1,&$3D6
10659     THEN
10660 ELSE
10661     BIT.B #$40,&$240
10662     0= IF
10663         CMP #3,&$3D6
10664         U>= IF
10665            SUB #1,&$3D6
10666         THEN
10667     THEN
10668 THEN
10669 BW1
10670 MOV @R1+,R0
10671 ENDASM
10672
10673 ASM RC5_INT
10674 ADD #2,R1
10675 $1806 @ 16000 = [IF]
10676     MOV #1,&$3A0
10677 [THEN]
10678 $1806 @ 24000 = [IF]
10679     MOV #2,&$3A0
10680 [THEN]
10681 MOV #1778,R9
10682 MOV #14,R10
10683 BEGIN
10684 MOV #%1011100100,&$380
10685     RRUM    #1,R9
10686     MOV     R9,R8
10687     RRUM    #1,R8
10688     ADD     R9,R8
10689     BEGIN   CMP R8,&$390
10690     U>= UNTIL
10691     BIT.B   #4,&$200
10692     ADDC    R11,R11
10693     MOV.B   &$200,&$208
10694     BIC.B   #4,&$20C
10695     SUB     #1,R10
10696 0<> WHILE
10697     ADD R9,R8
10698     BEGIN
10699         MOV &$390,R9
10700         CMP R8,R9
10701         U>= IF
10702         BIC #$30,&$380
10703         GOTO BW1
10704         THEN
10705         BIT.B #4,&$20C
10706     0<> UNTIL
10707 REPEAT
10708 BIC #$30,&$380
10709 RLAM    #1,R11
10710 MOV.B   R11,R9
10711 RRUM    #2,R9
10712 BIT     #$4000,R11
10713 0= IF   BIS #$40,R9
10714 THEN
10715 RRUM    #3,R11
10716 XOR     @R1,R11
10717 BIT     #$400,R11
10718 0= ?GOTO BW1
10719 XOR #$400,0(R1)
10720 SUB #8,R15
10721 MOV R14,6(R15)
10722 MOV &$1DDC,4(R15)
10723 MOV #$10,&$1DDC
10724 MOV R9,0(R15)
10725 MOV #0,R14
10726 LO2HI
10727     LCD_CLEAR
10728     <# # #S #36 HOLD #>
10729     ['] LCD_WRC IS EMIT
10730     TYPE
10731     ['] EMIT >BODY IS EMIT
10732 HI2LO
10733 MOV @R15+,&$1DDC
10734 MOV @R15+,R14
10735 MOV @R1+,R0
10736 ENDASM
10737
10738 ASM BACKGROUND
10739 BEGIN
10740     CALL &$1814
10741     BIS &$180A,R2
10742 AGAIN
10743 ENDASM
10744
10745 ASM SYS_OUT
10746     MOV #WARM,R9
10747     ADD #4,R9
10748     MOV R9,R0
10749 ENDASM
10750
10751 CODE STOP
10752 BW1 MOV #$4000,R9
10753     ADD #4,R9
10754     MOV R9,-2(R9)
10755     MOV #WARM,R9
10756     MOV #SYS_OUT,2(R9)
10757     BIC.B #4,&$20A
10758     BIC.B #4,&$20C
10759     MOV #0,&$3C0
10760     MOV #0,&$340
10761     MOV #0,&$342
10762     MOV #COLD,R9
10763     MOV R9,&$FFDE
10764     MOV R9,&$FFEA
10765 COLON
10766 ECHO
10767 ." RC5toLCD is removed,"
10768 ."  type START to restart"
10769  WARM
10770 ;
10771
10772 CODE SYS_INIT
10773 MOV #%10_1101_0100,&$3C0
10774 $1806 @ 16000 = [IF]
10775     MOV #1,&$3E0
10776 [THEN]
10777 $1806 @ 24000 = [IF]
10778     MOV #2,&$3E0
10779 [THEN]
10780     MOV #19,&$3D2
10781 MOV #%0110_0000,&$3C6
10782     MOV #10,&$3D6
10783     BIS.B #$20,&$204
10784     BIS.B #$20,&$20A
10785     BIS.B #7,&$245
10786     BIC.B #7,&$247
10787     BIS.B #$0F,&$224
10788     BIC.B #$0F,&$226
10789     BIS.B #4,&$20A
10790     BIC.B #4,&$20C
10791     MOV #RC5_INT,&$FFDE
10792 MOV #%01_0001_0100,&$340
10793     MOV ##3276,&$352
10794     MOV #%10000,&$342
10795     MOV #WDT_INT,&$FFEA
10796 BIC #1,&$130
10797 BIS.B #3,&$20D
10798 MOV &$1808,R8
10799 CMP #4,R8
10800 0= ?GOTO BW1
10801 COLON
10802     #1000 20_US
10803     %011 TOP_LCD
10804     #205 20_US
10805     %011 TOP_LCD
10806     #5 20_US
10807     %011 TOP_LCD
10808     #2 20_US
10809     %010 TOP_LCD
10810     #2 20_US
10811     %00101000 LCD_WRF
10812     %1000 LCD_WRF
10813     LCD_CLEAR
10814     %0110 LCD_WRF
10815     %1100 LCD_WRF
10816     LCD_CLEAR
10817     ['] LCD_HOME IS CR
10818     ['] LCD_WRC  IS EMIT
10819     CR ." I love you"
10820     ['] CR >BODY IS CR
10821     ['] EMIT >BODY IS EMIT
10822     ." RC5toLCD is running. Type STOP to quit"
10823     PWR_STATE ABORT
10824 ;
10825
10826 CODE START
10827 MOV #$4000,R9
10828 MOV #BACKGROUND,2(R9)
10829 MOV #WARM,R9
10830 MOV #SYS_INIT,2(R9)
10831 MOV R9,R0
10832 ENDCODE 
10833 PWR_STATE
10834
10835 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
10836
10837 MARKER {RC5TOLCD}
10838
10839 [UNDEFINED] @ [IF]
10840 CODE @
10841 MOV @R14,R14
10842 MOV @R13+,R0
10843 ENDCODE
10844 [THEN]
10845
10846 [UNDEFINED] CONSTANT [IF]
10847 : CONSTANT 
10848 CREATE
10849 HI2LO
10850 MOV R14,-2(R10)
10851 MOV @R15+,R14
10852 MOV @R1+,R13
10853 MOV @R13+,R0
10854 ENDCODE
10855 [THEN]
10856
10857 [UNDEFINED] STATE [IF]
10858 $1DBE CONSTANT STATE
10859 [THEN]
10860
10861 [UNDEFINED] = [IF]
10862 CODE =
10863 SUB @R15+,R14
10864 0<> IF
10865     AND #0,R14
10866     MOV @R13+,R0
10867 THEN
10868 XOR #-1,R14
10869 MOV @R13+,R0
10870 ENDCODE
10871 [THEN]
10872
10873 [UNDEFINED] IF [IF]
10874 CODE IF
10875 SUB #2,R15
10876 MOV R14,0(R15)
10877 MOV &$1DC6,R14
10878 ADD #4,&$1DC6
10879 MOV #$4042,0(R14)
10880 ADD #2,R14
10881 MOV @R13+,R0
10882 ENDCODE IMMEDIATE
10883
10884 CODE THEN
10885 MOV &$1DC6,0(R14)
10886 MOV @R15+,R14
10887 MOV @R13+,R0
10888 ENDCODE IMMEDIATE
10889 [THEN]
10890
10891 [UNDEFINED] ELSE [IF]
10892 CODE ELSE
10893 ADD #4,&$1DC6
10894 MOV &$1DC6,R10
10895 MOV #$403E,-4(R10)
10896 MOV R10,0(R14)
10897 SUB #2,R10
10898 MOV R10,R14
10899 MOV @R13+,R0
10900 ENDCODE IMMEDIATE
10901 [THEN]
10902
10903 [UNDEFINED] IS [IF]
10904
10905 CODE DEFER!
10906 MOV @R15+,2(R14)
10907 MOV @R15+,R14
10908 MOV @R13+,R0
10909 ENDCODE
10910
10911
10912 : IS
10913 STATE @
10914 IF  POSTPONE ['] POSTPONE DEFER! 
10915 ELSE ' DEFER! 
10916 THEN
10917 ; IMMEDIATE
10918 [THEN]
10919
10920 [UNDEFINED] >BODY [IF]
10921 CODE >BODY
10922 ADD #4,R14
10923 MOV @R13+,R0
10924 ENDCODE
10925 [THEN]
10926
10927
10928 CODE 20_US
10929 BEGIN
10930     BEGIN
10931         BIT #1,&$3C0
10932     0<> UNTIL
10933     BIC #1,&$3C0
10934     SUB #1,R14
10935 U< UNTIL
10936 MOV @R15+,R14
10937 MOV @R13+,R0
10938 ENDCODE
10939
10940 CODE TOP_LCD
10941     BIS.B #4,&$243
10942     BIT.B #1,&$241
10943 0= IF
10944     AND.B #$0F,R14
10945     MOV.B R14,&$222
10946     BIC.B #4,&$243
10947     MOV @R15+,R14
10948     MOV @R13+,R0
10949 THEN
10950     SUB #2,R15
10951     MOV R14,0(R15)
10952     BIC.B #4,&$243
10953     MOV.B &$220,R14
10954     AND.B #$0F,R14
10955     MOV @R13+,R0
10956 ENDCODE
10957
10958 CODE LCD_WRC
10959     BIS.B #2,&$243
10960 BW1 SUB #2,R15
10961     MOV R14,0(R15)
10962     RRUM #4,R14
10963     BIC.B #1,&$243
10964     BIS.B #$0F,&$224
10965 COLON
10966     TOP_LCD 2 20_US
10967     TOP_LCD 2 20_US 
10968 ;
10969
10970 CODE LCD_WRF
10971     BIC.B #2,&$243
10972     GOTO BW1
10973 ENDCODE
10974
10975 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
10976 : LCD_HOME $02 LCD_WRF 100 20_us ;
10977
10978
10979
10980 ASM WDT_INT
10981 ADD #2,R1
10982 BIT.B #$20,&$240
10983 0= IF
10984     CMP #19,&$3D6
10985     U< IF
10986         ADD #1,&$3D6
10987     THEN
10988 ELSE
10989     BIT.B #$40,&$240
10990     0= IF
10991         CMP #3,&$3D6
10992         U>= IF
10993            SUB #1,&$3D6
10994         THEN
10995     THEN
10996 THEN
10997 BW1
10998 MOV @R1+,R0
10999 ENDASM
11000
11001 ASM RC5_INT
11002 ADD #2,R1
11003 $1806 @ 16000 = [IF]
11004     MOV #1,&$3A0
11005 [THEN]
11006 $1806 @ 24000 = [IF]
11007     MOV #2,&$3A0
11008 [THEN]
11009 MOV #1778,R9
11010 MOV #14,R10
11011 BEGIN
11012 MOV #%1011100100,&$380
11013     RRUM    #1,R9
11014     MOV     R9,R8
11015     RRUM    #1,R8
11016     ADD     R9,R8
11017     BEGIN   CMP R8,&$390
11018     U>= UNTIL
11019     BIT.B   #4,&$200
11020     ADDC    R11,R11
11021     MOV.B   &$200,&$208
11022     BIC.B   #4,&$20C
11023     SUB     #1,R10
11024 0<> WHILE
11025     ADD R9,R8
11026     BEGIN
11027         MOV &$390,R9
11028         CMP R8,R9
11029         U>= IF
11030         BIC #$30,&$380
11031         GOTO BW1
11032         THEN
11033         BIT.B #4,&$20C
11034     0<> UNTIL
11035 REPEAT
11036 BIC #$30,&$380
11037 RLAM    #1,R11
11038 MOV.B   R11,R9
11039 RRUM    #2,R9
11040 BIT     #$4000,R11
11041 0= IF   BIS #$40,R9
11042 THEN
11043 RRUM    #3,R11
11044 XOR     @R1,R11
11045 BIT     #$400,R11
11046 0= ?GOTO BW1
11047 XOR #$400,0(R1)
11048 SUB #8,R15
11049 MOV R14,6(R15)
11050 MOV &$1DDC,4(R15)
11051 MOV #$10,&$1DDC
11052 MOV R9,0(R15)
11053 MOV #0,R14
11054 LO2HI
11055     LCD_CLEAR
11056     <# # #S #36 HOLD #>
11057     ['] LCD_WRC IS EMIT
11058     TYPE
11059     ['] EMIT >BODY IS EMIT
11060 HI2LO
11061 MOV @R15+,&$1DDC
11062 MOV @R15+,R14
11063 MOV @R1+,R0
11064 ENDASM
11065
11066 ASM BACKGROUND
11067 BEGIN
11068     CALL &$1814
11069     BIS &$180A,R2
11070 AGAIN
11071 ENDASM
11072
11073 ASM SYS_OUT
11074     MOV #WARM,R9
11075     ADD #4,R9
11076     MOV R9,R0
11077 ENDASM
11078
11079 CODE STOP
11080 BW1 MOV #$4000,R9
11081     ADD #4,R9
11082     MOV R9,-2(R9)
11083     MOV #WARM,R9
11084     MOV #SYS_OUT,2(R9)
11085     BIC.B #4,&$20A
11086     BIC.B #4,&$20C
11087     MOV #0,&$3C0
11088     MOV #0,&$340
11089     MOV #0,&$342
11090     MOV #COLD,R9
11091     MOV R9,&$FFDE
11092     MOV R9,&$FFEA
11093 COLON
11094 ECHO
11095 ." RC5toLCD is removed,"
11096 ."  type START to restart"
11097  WARM
11098 ;
11099
11100 CODE SYS_INIT
11101 MOV #%10_1101_0100,&$3C0
11102 $1806 @ 16000 = [IF]
11103     MOV #1,&$3E0
11104 [THEN]
11105 $1806 @ 24000 = [IF]
11106     MOV #2,&$3E0
11107 [THEN]
11108     MOV #19,&$3D2
11109 MOV #%0110_0000,&$3C6
11110     MOV #10,&$3D6
11111     BIS.B #$20,&$204
11112     BIS.B #$20,&$20A
11113     BIS.B #7,&$245
11114     BIC.B #7,&$247
11115     BIS.B #$0F,&$224
11116     BIC.B #$0F,&$226
11117     BIS.B #4,&$20A
11118     BIC.B #4,&$20C
11119     MOV #RC5_INT,&$FFDE
11120 MOV #%01_0001_0100,&$340
11121     MOV ##3276,&$352
11122     MOV #%10000,&$342
11123     MOV #WDT_INT,&$FFEA
11124 BIC #1,&$130
11125 BIS.B #3,&$20D
11126 MOV &$1808,R8
11127 CMP #4,R8
11128 0= ?GOTO BW1
11129 COLON
11130     #1000 20_US
11131     %011 TOP_LCD
11132     #205 20_US
11133     %011 TOP_LCD
11134     #5 20_US
11135     %011 TOP_LCD
11136     #2 20_US
11137     %010 TOP_LCD
11138     #2 20_US
11139     %00101000 LCD_WRF
11140     %1000 LCD_WRF
11141     LCD_CLEAR
11142     %0110 LCD_WRF
11143     %1100 LCD_WRF
11144     LCD_CLEAR
11145     ['] LCD_HOME IS CR
11146     ['] LCD_WRC  IS EMIT
11147     CR ." I love you"
11148     ['] CR >BODY IS CR
11149     ['] EMIT >BODY IS EMIT
11150     ." RC5toLCD is running. Type STOP to quit"
11151     PWR_STATE ABORT
11152 ;
11153
11154 CODE START
11155 MOV #$4000,R9
11156 MOV #BACKGROUND,2(R9)
11157 MOV #WARM,R9
11158 MOV #SYS_INIT,2(R9)
11159 MOV R9,R0
11160 ENDCODE 
11161 PWR_STATE
11162
11163 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
11164
11165 MARKER {RC5TOLCD}
11166
11167 [UNDEFINED] @ [IF]
11168 CODE @
11169 MOV @R14,R14
11170 MOV @R13+,R0
11171 ENDCODE
11172 [THEN]
11173
11174 [UNDEFINED] CONSTANT [IF]
11175 : CONSTANT 
11176 CREATE
11177 HI2LO
11178 MOV R14,-2(R10)
11179 MOV @R15+,R14
11180 MOV @R1+,R13
11181 MOV @R13+,R0
11182 ENDCODE
11183 [THEN]
11184
11185 [UNDEFINED] STATE [IF]
11186 $1DBE CONSTANT STATE
11187 [THEN]
11188
11189 [UNDEFINED] = [IF]
11190 CODE =
11191 SUB @R15+,R14
11192 0<> IF
11193     AND #0,R14
11194     MOV @R13+,R0
11195 THEN
11196 XOR #-1,R14
11197 MOV @R13+,R0
11198 ENDCODE
11199 [THEN]
11200
11201 [UNDEFINED] IF [IF]
11202 CODE IF
11203 SUB #2,R15
11204 MOV R14,0(R15)
11205 MOV &$1DC6,R14
11206 ADD #4,&$1DC6
11207 MOV #$4042,0(R14)
11208 ADD #2,R14
11209 MOV @R13+,R0
11210 ENDCODE IMMEDIATE
11211
11212 CODE THEN
11213 MOV &$1DC6,0(R14)
11214 MOV @R15+,R14
11215 MOV @R13+,R0
11216 ENDCODE IMMEDIATE
11217 [THEN]
11218
11219 [UNDEFINED] ELSE [IF]
11220 CODE ELSE
11221 ADD #4,&$1DC6
11222 MOV &$1DC6,R10
11223 MOV #$403E,-4(R10)
11224 MOV R10,0(R14)
11225 SUB #2,R10
11226 MOV R10,R14
11227 MOV @R13+,R0
11228 ENDCODE IMMEDIATE
11229 [THEN]
11230
11231 [UNDEFINED] IS [IF]
11232
11233 CODE DEFER!
11234 MOV @R15+,2(R14)
11235 MOV @R15+,R14
11236 MOV @R13+,R0
11237 ENDCODE
11238
11239
11240 : IS
11241 STATE @
11242 IF  POSTPONE ['] POSTPONE DEFER! 
11243 ELSE ' DEFER! 
11244 THEN
11245 ; IMMEDIATE
11246 [THEN]
11247
11248 [UNDEFINED] >BODY [IF]
11249 CODE >BODY
11250 ADD #4,R14
11251 MOV @R13+,R0
11252 ENDCODE
11253 [THEN]
11254
11255
11256 CODE 20_US
11257 BEGIN
11258     BEGIN
11259         BIT #1,&$3C0
11260     0<> UNTIL
11261     BIC #1,&$3C0
11262     SUB #1,R14
11263 U< UNTIL
11264 MOV @R15+,R14
11265 MOV @R13+,R0
11266 ENDCODE
11267
11268 CODE TOP_LCD
11269     BIS.B #4,&$243
11270     BIT.B #1,&$241
11271 0= IF
11272     AND.B #$0F,R14
11273     MOV.B R14,&$222
11274     BIC.B #4,&$243
11275     MOV @R15+,R14
11276     MOV @R13+,R0
11277 THEN
11278     SUB #2,R15
11279     MOV R14,0(R15)
11280     BIC.B #4,&$243
11281     MOV.B &$220,R14
11282     AND.B #$0F,R14
11283     MOV @R13+,R0
11284 ENDCODE
11285
11286 CODE LCD_WRC
11287     BIS.B #2,&$243
11288 BW1 SUB #2,R15
11289     MOV R14,0(R15)
11290     RRUM #4,R14
11291     BIC.B #1,&$243
11292     BIS.B #$0F,&$224
11293 COLON
11294     TOP_LCD 2 20_US
11295     TOP_LCD 2 20_US 
11296 ;
11297
11298 CODE LCD_WRF
11299     BIC.B #2,&$243
11300     GOTO BW1
11301 ENDCODE
11302
11303 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
11304 : LCD_HOME $02 LCD_WRF 100 20_us ;
11305
11306
11307
11308 ASM WDT_INT
11309 ADD #2,R1
11310 BIT.B #$20,&$240
11311 0= IF
11312     CMP #19,&$3D6
11313     U< IF
11314         ADD #1,&$3D6
11315     THEN
11316 ELSE
11317     BIT.B #$40,&$240
11318     0= IF
11319         CMP #3,&$3D6
11320         U>= IF
11321            SUB #1,&$3D6
11322         THEN
11323     THEN
11324 THEN
11325 BW1
11326 MOV @R1+,R0
11327 ENDASM
11328
11329 ASM RC5_INT
11330 ADD #2,R1
11331 $1806 @ 16000 = [IF]
11332     MOV #1,&$3A0
11333 [THEN]
11334 $1806 @ 24000 = [IF]
11335     MOV #2,&$3A0
11336 [THEN]
11337 MOV #1778,R9
11338 MOV #14,R10
11339 BEGIN
11340 MOV #%1011100100,&$380
11341     RRUM    #1,R9
11342     MOV     R9,R8
11343     RRUM    #1,R8
11344     ADD     R9,R8
11345     BEGIN   CMP R8,&$390
11346     U>= UNTIL
11347     BIT.B   #4,&$200
11348     ADDC    R11,R11
11349     MOV.B   &$200,&$208
11350     BIC.B   #4,&$20C
11351     SUB     #1,R10
11352 0<> WHILE
11353     ADD R9,R8
11354     BEGIN
11355         MOV &$390,R9
11356         CMP R8,R9
11357         U>= IF
11358         BIC #$30,&$380
11359         GOTO BW1
11360         THEN
11361         BIT.B #4,&$20C
11362     0<> UNTIL
11363 REPEAT
11364 BIC #$30,&$380
11365 RLAM    #1,R11
11366 MOV.B   R11,R9
11367 RRUM    #2,R9
11368 BIT     #$4000,R11
11369 0= IF   BIS #$40,R9
11370 THEN
11371 RRUM    #3,R11
11372 XOR     @R1,R11
11373 BIT     #$400,R11
11374 0= ?GOTO BW1
11375 XOR #$400,0(R1)
11376 SUB #8,R15
11377 MOV R14,6(R15)
11378 MOV &$1DDC,4(R15)
11379 MOV #$10,&$1DDC
11380 MOV R9,0(R15)
11381 MOV #0,R14
11382 LO2HI
11383     LCD_CLEAR
11384     <# # #S #36 HOLD #>
11385     ['] LCD_WRC IS EMIT
11386     TYPE
11387     ['] EMIT >BODY IS EMIT
11388 HI2LO
11389 MOV @R15+,&$1DDC
11390 MOV @R15+,R14
11391 MOV @R1+,R0
11392 ENDASM
11393
11394 ASM BACKGROUND
11395 BEGIN
11396     CALL &$1814
11397     BIS &$180A,R2
11398 AGAIN
11399 ENDASM
11400
11401 ASM SYS_OUT
11402     MOV #WARM,R9
11403     ADD #4,R9
11404     MOV R9,R0
11405 ENDASM
11406
11407 CODE STOP
11408 BW1 MOV #$4000,R9
11409     ADD #4,R9
11410     MOV R9,-2(R9)
11411     MOV #WARM,R9
11412     MOV #SYS_OUT,2(R9)
11413     BIC.B #4,&$20A
11414     BIC.B #4,&$20C
11415     MOV #0,&$3C0
11416     MOV #0,&$340
11417     MOV #0,&$342
11418     MOV #COLD,R9
11419     MOV R9,&$FFDE
11420     MOV R9,&$FFEA
11421 COLON
11422 ECHO
11423 ." RC5toLCD is removed,"
11424 ."  type START to restart"
11425  WARM
11426 ;
11427
11428 CODE SYS_INIT
11429 MOV #%10_1101_0100,&$3C0
11430 $1806 @ 16000 = [IF]
11431     MOV #1,&$3E0
11432 [THEN]
11433 $1806 @ 24000 = [IF]
11434     MOV #2,&$3E0
11435 [THEN]
11436     MOV #19,&$3D2
11437 MOV #%0110_0000,&$3C6
11438     MOV #10,&$3D6
11439     BIS.B #$20,&$204
11440     BIS.B #$20,&$20A
11441     BIS.B #7,&$245
11442     BIC.B #7,&$247
11443     BIS.B #$0F,&$224
11444     BIC.B #$0F,&$226
11445     BIS.B #4,&$20A
11446     BIC.B #4,&$20C
11447     MOV #RC5_INT,&$FFDE
11448 MOV #%01_0001_0100,&$340
11449     MOV ##3276,&$352
11450     MOV #%10000,&$342
11451     MOV #WDT_INT,&$FFEA
11452 BIC #1,&$130
11453 BIS.B #3,&$20D
11454 MOV &$1808,R8
11455 CMP #4,R8
11456 0= ?GOTO BW1
11457 COLON
11458     #1000 20_US
11459     %011 TOP_LCD
11460     #205 20_US
11461     %011 TOP_LCD
11462     #5 20_US
11463     %011 TOP_LCD
11464     #2 20_US
11465     %010 TOP_LCD
11466     #2 20_US
11467     %00101000 LCD_WRF
11468     %1000 LCD_WRF
11469     LCD_CLEAR
11470     %0110 LCD_WRF
11471     %1100 LCD_WRF
11472     LCD_CLEAR
11473     ['] LCD_HOME IS CR
11474     ['] LCD_WRC  IS EMIT
11475     CR ." I love you"
11476     ['] CR >BODY IS CR
11477     ['] EMIT >BODY IS EMIT
11478     ." RC5toLCD is running. Type STOP to quit"
11479     PWR_STATE ABORT
11480 ;
11481
11482 CODE START
11483 MOV #$4000,R9
11484 MOV #BACKGROUND,2(R9)
11485 MOV #WARM,R9
11486 MOV #SYS_INIT,2(R9)
11487 MOV R9,R0
11488 ENDCODE 
11489 PWR_STATE
11490
11491 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
11492
11493 MARKER {RC5TOLCD}
11494
11495 [UNDEFINED] @ [IF]
11496 CODE @
11497 MOV @R14,R14
11498 MOV @R13+,R0
11499 ENDCODE
11500 [THEN]
11501
11502 [UNDEFINED] CONSTANT [IF]
11503 : CONSTANT 
11504 CREATE
11505 HI2LO
11506 MOV R14,-2(R10)
11507 MOV @R15+,R14
11508 MOV @R1+,R13
11509 MOV @R13+,R0
11510 ENDCODE
11511 [THEN]
11512
11513 [UNDEFINED] STATE [IF]
11514 $1DBE CONSTANT STATE
11515 [THEN]
11516
11517 [UNDEFINED] = [IF]
11518 CODE =
11519 SUB @R15+,R14
11520 0<> IF
11521     AND #0,R14
11522     MOV @R13+,R0
11523 THEN
11524 XOR #-1,R14
11525 MOV @R13+,R0
11526 ENDCODE
11527 [THEN]
11528
11529 [UNDEFINED] IF [IF]
11530 CODE IF
11531 SUB #2,R15
11532 MOV R14,0(R15)
11533 MOV &$1DC6,R14
11534 ADD #4,&$1DC6
11535 MOV #$4042,0(R14)
11536 ADD #2,R14
11537 MOV @R13+,R0
11538 ENDCODE IMMEDIATE
11539
11540 CODE THEN
11541 MOV &$1DC6,0(R14)
11542 MOV @R15+,R14
11543 MOV @R13+,R0
11544 ENDCODE IMMEDIATE
11545 [THEN]
11546
11547 [UNDEFINED] ELSE [IF]
11548 CODE ELSE
11549 ADD #4,&$1DC6
11550 MOV &$1DC6,R10
11551 MOV #$403E,-4(R10)
11552 MOV R10,0(R14)
11553 SUB #2,R10
11554 MOV R10,R14
11555 MOV @R13+,R0
11556 ENDCODE IMMEDIATE
11557 [THEN]
11558
11559 [UNDEFINED] IS [IF]
11560
11561 CODE DEFER!
11562 MOV @R15+,2(R14)
11563 MOV @R15+,R14
11564 MOV @R13+,R0
11565 ENDCODE
11566
11567
11568 : IS
11569 STATE @
11570 IF  POSTPONE ['] POSTPONE DEFER! 
11571 ELSE ' DEFER! 
11572 THEN
11573 ; IMMEDIATE
11574 [THEN]
11575
11576 [UNDEFINED] >BODY [IF]
11577 CODE >BODY
11578 ADD #4,R14
11579 MOV @R13+,R0
11580 ENDCODE
11581 [THEN]
11582
11583
11584 CODE 20_US
11585 BEGIN
11586     BEGIN
11587         BIT #1,&$3C0
11588     0<> UNTIL
11589     BIC #1,&$3C0
11590     SUB #1,R14
11591 U< UNTIL
11592 MOV @R15+,R14
11593 MOV @R13+,R0
11594 ENDCODE
11595
11596 CODE TOP_LCD
11597     BIS.B #4,&$243
11598     BIT.B #1,&$241
11599 0= IF
11600     AND.B #$0F,R14
11601     MOV.B R14,&$222
11602     BIC.B #4,&$243
11603     MOV @R15+,R14
11604     MOV @R13+,R0
11605 THEN
11606     SUB #2,R15
11607     MOV R14,0(R15)
11608     BIC.B #4,&$243
11609     MOV.B &$220,R14
11610     AND.B #$0F,R14
11611     MOV @R13+,R0
11612 ENDCODE
11613
11614 CODE LCD_WRC
11615     BIS.B #2,&$243
11616 BW1 SUB #2,R15
11617     MOV R14,0(R15)
11618     RRUM #4,R14
11619     BIC.B #1,&$243
11620     BIS.B #$0F,&$224
11621 COLON
11622     TOP_LCD 2 20_US
11623     TOP_LCD 2 20_US 
11624 ;
11625
11626 CODE LCD_WRF
11627     BIC.B #2,&$243
11628     GOTO BW1
11629 ENDCODE
11630
11631 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
11632 : LCD_HOME $02 LCD_WRF 100 20_us ;
11633
11634
11635
11636 ASM WDT_INT
11637 ADD #2,R1
11638 BIT.B #$20,&$240
11639 0= IF
11640     CMP #19,&$3D6
11641     U< IF
11642         ADD #1,&$3D6
11643     THEN
11644 ELSE
11645     BIT.B #$40,&$240
11646     0= IF
11647         CMP #3,&$3D6
11648         U>= IF
11649            SUB #1,&$3D6
11650         THEN
11651     THEN
11652 THEN
11653 BW1
11654 MOV @R1+,R0
11655 ENDASM
11656
11657 ASM RC5_INT
11658 ADD #2,R1
11659 $1806 @ 16000 = [IF]
11660     MOV #1,&$3A0
11661 [THEN]
11662 $1806 @ 24000 = [IF]
11663     MOV #2,&$3A0
11664 [THEN]
11665 MOV #1778,R9
11666 MOV #14,R10
11667 BEGIN
11668 MOV #%1011100100,&$380
11669     RRUM    #1,R9
11670     MOV     R9,R8
11671     RRUM    #1,R8
11672     ADD     R9,R8
11673     BEGIN   CMP R8,&$390
11674     U>= UNTIL
11675     BIT.B   #4,&$200
11676     ADDC    R11,R11
11677     MOV.B   &$200,&$208
11678     BIC.B   #4,&$20C
11679     SUB     #1,R10
11680 0<> WHILE
11681     ADD R9,R8
11682     BEGIN
11683         MOV &$390,R9
11684         CMP R8,R9
11685         U>= IF
11686         BIC #$30,&$380
11687         GOTO BW1
11688         THEN
11689         BIT.B #4,&$20C
11690     0<> UNTIL
11691 REPEAT
11692 BIC #$30,&$380
11693 RLAM    #1,R11
11694 MOV.B   R11,R9
11695 RRUM    #2,R9
11696 BIT     #$4000,R11
11697 0= IF   BIS #$40,R9
11698 THEN
11699 RRUM    #3,R11
11700 XOR     @R1,R11
11701 BIT     #$400,R11
11702 0= ?GOTO BW1
11703 XOR #$400,0(R1)
11704 SUB #8,R15
11705 MOV R14,6(R15)
11706 MOV &$1DDC,4(R15)
11707 MOV #$10,&$1DDC
11708 MOV R9,0(R15)
11709 MOV #0,R14
11710 LO2HI
11711     LCD_CLEAR
11712     <# # #S #36 HOLD #>
11713     ['] LCD_WRC IS EMIT
11714     TYPE
11715     ['] EMIT >BODY IS EMIT
11716 HI2LO
11717 MOV @R15+,&$1DDC
11718 MOV @R15+,R14
11719 MOV @R1+,R0
11720 ENDASM
11721
11722 ASM BACKGROUND
11723 BEGIN
11724     CALL &$1814
11725     BIS &$180A,R2
11726 AGAIN
11727 ENDASM
11728
11729 ASM SYS_OUT
11730     MOV #WARM,R9
11731     ADD #4,R9
11732     MOV R9,R0
11733 ENDASM
11734
11735 CODE STOP
11736 BW1 MOV #$4000,R9
11737     ADD #4,R9
11738     MOV R9,-2(R9)
11739     MOV #WARM,R9
11740     MOV #SYS_OUT,2(R9)
11741     BIC.B #4,&$20A
11742     BIC.B #4,&$20C
11743     MOV #0,&$3C0
11744     MOV #0,&$340
11745     MOV #0,&$342
11746     MOV #COLD,R9
11747     MOV R9,&$FFDE
11748     MOV R9,&$FFEA
11749 COLON
11750 ECHO
11751 ." RC5toLCD is removed,"
11752 ."  type START to restart"
11753  WARM
11754 ;
11755
11756 CODE SYS_INIT
11757 MOV #%10_1101_0100,&$3C0
11758 $1806 @ 16000 = [IF]
11759     MOV #1,&$3E0
11760 [THEN]
11761 $1806 @ 24000 = [IF]
11762     MOV #2,&$3E0
11763 [THEN]
11764     MOV #19,&$3D2
11765 MOV #%0110_0000,&$3C6
11766     MOV #10,&$3D6
11767     BIS.B #$20,&$204
11768     BIS.B #$20,&$20A
11769     BIS.B #7,&$245
11770     BIC.B #7,&$247
11771     BIS.B #$0F,&$224
11772     BIC.B #$0F,&$226
11773     BIS.B #4,&$20A
11774     BIC.B #4,&$20C
11775     MOV #RC5_INT,&$FFDE
11776 MOV #%01_0001_0100,&$340
11777     MOV ##3276,&$352
11778     MOV #%10000,&$342
11779     MOV #WDT_INT,&$FFEA
11780 BIC #1,&$130
11781 BIS.B #3,&$20D
11782 MOV &$1808,R8
11783 CMP #4,R8
11784 0= ?GOTO BW1
11785 COLON
11786     #1000 20_US
11787     %011 TOP_LCD
11788     #205 20_US
11789     %011 TOP_LCD
11790     #5 20_US
11791     %011 TOP_LCD
11792     #2 20_US
11793     %010 TOP_LCD
11794     #2 20_US
11795     %00101000 LCD_WRF
11796     %1000 LCD_WRF
11797     LCD_CLEAR
11798     %0110 LCD_WRF
11799     %1100 LCD_WRF
11800     LCD_CLEAR
11801     ['] LCD_HOME IS CR
11802     ['] LCD_WRC  IS EMIT
11803     CR ." I love you"
11804     ['] CR >BODY IS CR
11805     ['] EMIT >BODY IS EMIT
11806     ." RC5toLCD is running. Type STOP to quit"
11807     PWR_STATE ABORT
11808 ;
11809
11810 CODE START
11811 MOV #$4000,R9
11812 MOV #BACKGROUND,2(R9)
11813 MOV #WARM,R9
11814 MOV #SYS_INIT,2(R9)
11815 MOV R9,R0
11816 ENDCODE 
11817 PWR_STATE
11818
11819 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
11820
11821 MARKER {RC5TOLCD}
11822
11823 [UNDEFINED] @ [IF]
11824 CODE @
11825 MOV @R14,R14
11826 MOV @R13+,R0
11827 ENDCODE
11828 [THEN]
11829
11830 [UNDEFINED] CONSTANT [IF]
11831 : CONSTANT 
11832 CREATE
11833 HI2LO
11834 MOV R14,-2(R10)
11835 MOV @R15+,R14
11836 MOV @R1+,R13
11837 MOV @R13+,R0
11838 ENDCODE
11839 [THEN]
11840
11841 [UNDEFINED] STATE [IF]
11842 $1DBE CONSTANT STATE
11843 [THEN]
11844
11845 [UNDEFINED] = [IF]
11846 CODE =
11847 SUB @R15+,R14
11848 0<> IF
11849     AND #0,R14
11850     MOV @R13+,R0
11851 THEN
11852 XOR #-1,R14
11853 MOV @R13+,R0
11854 ENDCODE
11855 [THEN]
11856
11857 [UNDEFINED] IF [IF]
11858 CODE IF
11859 SUB #2,R15
11860 MOV R14,0(R15)
11861 MOV &$1DC6,R14
11862 ADD #4,&$1DC6
11863 MOV #$4042,0(R14)
11864 ADD #2,R14
11865 MOV @R13+,R0
11866 ENDCODE IMMEDIATE
11867
11868 CODE THEN
11869 MOV &$1DC6,0(R14)
11870 MOV @R15+,R14
11871 MOV @R13+,R0
11872 ENDCODE IMMEDIATE
11873 [THEN]
11874
11875 [UNDEFINED] ELSE [IF]
11876 CODE ELSE
11877 ADD #4,&$1DC6
11878 MOV &$1DC6,R10
11879 MOV #$403E,-4(R10)
11880 MOV R10,0(R14)
11881 SUB #2,R10
11882 MOV R10,R14
11883 MOV @R13+,R0
11884 ENDCODE IMMEDIATE
11885 [THEN]
11886
11887 [UNDEFINED] IS [IF]
11888
11889 CODE DEFER!
11890 MOV @R15+,2(R14)
11891 MOV @R15+,R14
11892 MOV @R13+,R0
11893 ENDCODE
11894
11895
11896 : IS
11897 STATE @
11898 IF  POSTPONE ['] POSTPONE DEFER! 
11899 ELSE ' DEFER! 
11900 THEN
11901 ; IMMEDIATE
11902 [THEN]
11903
11904 [UNDEFINED] >BODY [IF]
11905 CODE >BODY
11906 ADD #4,R14
11907 MOV @R13+,R0
11908 ENDCODE
11909 [THEN]
11910
11911
11912 CODE 20_US
11913 BEGIN
11914     BEGIN
11915         BIT #1,&$3C0
11916     0<> UNTIL
11917     BIC #1,&$3C0
11918     SUB #1,R14
11919 U< UNTIL
11920 MOV @R15+,R14
11921 MOV @R13+,R0
11922 ENDCODE
11923
11924 CODE TOP_LCD
11925     BIS.B #4,&$243
11926     BIT.B #1,&$241
11927 0= IF
11928     AND.B #$0F,R14
11929     MOV.B R14,&$222
11930     BIC.B #4,&$243
11931     MOV @R15+,R14
11932     MOV @R13+,R0
11933 THEN
11934     SUB #2,R15
11935     MOV R14,0(R15)
11936     BIC.B #4,&$243
11937     MOV.B &$220,R14
11938     AND.B #$0F,R14
11939     MOV @R13+,R0
11940 ENDCODE
11941
11942 CODE LCD_WRC
11943     BIS.B #2,&$243
11944 BW1 SUB #2,R15
11945     MOV R14,0(R15)
11946     RRUM #4,R14
11947     BIC.B #1,&$243
11948     BIS.B #$0F,&$224
11949 COLON
11950     TOP_LCD 2 20_US
11951     TOP_LCD 2 20_US 
11952 ;
11953
11954 CODE LCD_WRF
11955     BIC.B #2,&$243
11956     GOTO BW1
11957 ENDCODE
11958
11959 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
11960 : LCD_HOME $02 LCD_WRF 100 20_us ;
11961
11962
11963
11964 ASM WDT_INT
11965 ADD #2,R1
11966 BIT.B #$20,&$240
11967 0= IF
11968     CMP #19,&$3D6
11969     U< IF
11970         ADD #1,&$3D6
11971     THEN
11972 ELSE
11973     BIT.B #$40,&$240
11974     0= IF
11975         CMP #3,&$3D6
11976         U>= IF
11977            SUB #1,&$3D6
11978         THEN
11979     THEN
11980 THEN
11981 BW1
11982 MOV @R1+,R0
11983 ENDASM
11984
11985 ASM RC5_INT
11986 ADD #2,R1
11987 $1806 @ 16000 = [IF]
11988     MOV #1,&$3A0
11989 [THEN]
11990 $1806 @ 24000 = [IF]
11991     MOV #2,&$3A0
11992 [THEN]
11993 MOV #1778,R9
11994 MOV #14,R10
11995 BEGIN
11996 MOV #%1011100100,&$380
11997     RRUM    #1,R9
11998     MOV     R9,R8
11999     RRUM    #1,R8
12000     ADD     R9,R8
12001     BEGIN   CMP R8,&$390
12002     U>= UNTIL
12003     BIT.B   #4,&$200
12004     ADDC    R11,R11
12005     MOV.B   &$200,&$208
12006     BIC.B   #4,&$20C
12007     SUB     #1,R10
12008 0<> WHILE
12009     ADD R9,R8
12010     BEGIN
12011         MOV &$390,R9
12012         CMP R8,R9
12013         U>= IF
12014         BIC #$30,&$380
12015         GOTO BW1
12016         THEN
12017         BIT.B #4,&$20C
12018     0<> UNTIL
12019 REPEAT
12020 BIC #$30,&$380
12021 RLAM    #1,R11
12022 MOV.B   R11,R9
12023 RRUM    #2,R9
12024 BIT     #$4000,R11
12025 0= IF   BIS #$40,R9
12026 THEN
12027 RRUM    #3,R11
12028 XOR     @R1,R11
12029 BIT     #$400,R11
12030 0= ?GOTO BW1
12031 XOR #$400,0(R1)
12032 SUB #8,R15
12033 MOV R14,6(R15)
12034 MOV &$1DDC,4(R15)
12035 MOV #$10,&$1DDC
12036 MOV R9,0(R15)
12037 MOV #0,R14
12038 LO2HI
12039     LCD_CLEAR
12040     <# # #S #36 HOLD #>
12041     ['] LCD_WRC IS EMIT
12042     TYPE
12043     ['] EMIT >BODY IS EMIT
12044 HI2LO
12045 MOV @R15+,&$1DDC
12046 MOV @R15+,R14
12047 MOV @R1+,R0
12048 ENDASM
12049
12050 ASM BACKGROUND
12051 BEGIN
12052     CALL &$1814
12053     BIS &$180A,R2
12054 AGAIN
12055 ENDASM
12056
12057 ASM SYS_OUT
12058     MOV #WARM,R9
12059     ADD #4,R9
12060     MOV R9,R0
12061 ENDASM
12062
12063 CODE STOP
12064 BW1 MOV #$4000,R9
12065     ADD #4,R9
12066     MOV R9,-2(R9)
12067     MOV #WARM,R9
12068     MOV #SYS_OUT,2(R9)
12069     BIC.B #4,&$20A
12070     BIC.B #4,&$20C
12071     MOV #0,&$3C0
12072     MOV #0,&$340
12073     MOV #0,&$342
12074     MOV #COLD,R9
12075     MOV R9,&$FFDE
12076     MOV R9,&$FFEA
12077 COLON
12078 ECHO
12079 ." RC5toLCD is removed,"
12080 ."  type START to restart"
12081  WARM
12082 ;
12083
12084 CODE SYS_INIT
12085 MOV #%10_1101_0100,&$3C0
12086 $1806 @ 16000 = [IF]
12087     MOV #1,&$3E0
12088 [THEN]
12089 $1806 @ 24000 = [IF]
12090     MOV #2,&$3E0
12091 [THEN]
12092     MOV #19,&$3D2
12093 MOV #%0110_0000,&$3C6
12094     MOV #10,&$3D6
12095     BIS.B #$20,&$204
12096     BIS.B #$20,&$20A
12097     BIS.B #7,&$245
12098     BIC.B #7,&$247
12099     BIS.B #$0F,&$224
12100     BIC.B #$0F,&$226
12101     BIS.B #4,&$20A
12102     BIC.B #4,&$20C
12103     MOV #RC5_INT,&$FFDE
12104 MOV #%01_0001_0100,&$340
12105     MOV ##3276,&$352
12106     MOV #%10000,&$342
12107     MOV #WDT_INT,&$FFEA
12108 BIC #1,&$130
12109 BIS.B #3,&$20D
12110 MOV &$1808,R8
12111 CMP #4,R8
12112 0= ?GOTO BW1
12113 COLON
12114     #1000 20_US
12115     %011 TOP_LCD
12116     #205 20_US
12117     %011 TOP_LCD
12118     #5 20_US
12119     %011 TOP_LCD
12120     #2 20_US
12121     %010 TOP_LCD
12122     #2 20_US
12123     %00101000 LCD_WRF
12124     %1000 LCD_WRF
12125     LCD_CLEAR
12126     %0110 LCD_WRF
12127     %1100 LCD_WRF
12128     LCD_CLEAR
12129     ['] LCD_HOME IS CR
12130     ['] LCD_WRC  IS EMIT
12131     CR ." I love you"
12132     ['] CR >BODY IS CR
12133     ['] EMIT >BODY IS EMIT
12134     ." RC5toLCD is running. Type STOP to quit"
12135     PWR_STATE ABORT
12136 ;
12137
12138 CODE START
12139 MOV #$4000,R9
12140 MOV #BACKGROUND,2(R9)
12141 MOV #WARM,R9
12142 MOV #SYS_INIT,2(R9)
12143 MOV R9,R0
12144 ENDCODE 
12145 PWR_STATE
12146
12147 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
12148
12149 MARKER {RC5TOLCD}
12150
12151 [UNDEFINED] @ [IF]
12152 CODE @
12153 MOV @R14,R14
12154 MOV @R13+,R0
12155 ENDCODE
12156 [THEN]
12157
12158 [UNDEFINED] CONSTANT [IF]
12159 : CONSTANT 
12160 CREATE
12161 HI2LO
12162 MOV R14,-2(R10)
12163 MOV @R15+,R14
12164 MOV @R1+,R13
12165 MOV @R13+,R0
12166 ENDCODE
12167 [THEN]
12168
12169 [UNDEFINED] STATE [IF]
12170 $1DBE CONSTANT STATE
12171 [THEN]
12172
12173 [UNDEFINED] = [IF]
12174 CODE =
12175 SUB @R15+,R14
12176 0<> IF
12177     AND #0,R14
12178     MOV @R13+,R0
12179 THEN
12180 XOR #-1,R14
12181 MOV @R13+,R0
12182 ENDCODE
12183 [THEN]
12184
12185 [UNDEFINED] IF [IF]
12186 CODE IF
12187 SUB #2,R15
12188 MOV R14,0(R15)
12189 MOV &$1DC6,R14
12190 ADD #4,&$1DC6
12191 MOV #$4042,0(R14)
12192 ADD #2,R14
12193 MOV @R13+,R0
12194 ENDCODE IMMEDIATE
12195
12196 CODE THEN
12197 MOV &$1DC6,0(R14)
12198 MOV @R15+,R14
12199 MOV @R13+,R0
12200 ENDCODE IMMEDIATE
12201 [THEN]
12202
12203 [UNDEFINED] ELSE [IF]
12204 CODE ELSE
12205 ADD #4,&$1DC6
12206 MOV &$1DC6,R10
12207 MOV #$403E,-4(R10)
12208 MOV R10,0(R14)
12209 SUB #2,R10
12210 MOV R10,R14
12211 MOV @R13+,R0
12212 ENDCODE IMMEDIATE
12213 [THEN]
12214
12215 [UNDEFINED] IS [IF]
12216
12217 CODE DEFER!
12218 MOV @R15+,2(R14)
12219 MOV @R15+,R14
12220 MOV @R13+,R0
12221 ENDCODE
12222
12223
12224 : IS
12225 STATE @
12226 IF  POSTPONE ['] POSTPONE DEFER! 
12227 ELSE ' DEFER! 
12228 THEN
12229 ; IMMEDIATE
12230 [THEN]
12231
12232 [UNDEFINED] >BODY [IF]
12233 CODE >BODY
12234 ADD #4,R14
12235 MOV @R13+,R0
12236 ENDCODE
12237 [THEN]
12238
12239
12240 CODE 20_US
12241 BEGIN
12242     BEGIN
12243         BIT #1,&$3C0
12244     0<> UNTIL
12245     BIC #1,&$3C0
12246     SUB #1,R14
12247 U< UNTIL
12248 MOV @R15+,R14
12249 MOV @R13+,R0
12250 ENDCODE
12251
12252 CODE TOP_LCD
12253     BIS.B #4,&$243
12254     BIT.B #1,&$241
12255 0= IF
12256     AND.B #$0F,R14
12257     MOV.B R14,&$222
12258     BIC.B #4,&$243
12259     MOV @R15+,R14
12260     MOV @R13+,R0
12261 THEN
12262     SUB #2,R15
12263     MOV R14,0(R15)
12264     BIC.B #4,&$243
12265     MOV.B &$220,R14
12266     AND.B #$0F,R14
12267     MOV @R13+,R0
12268 ENDCODE
12269
12270 CODE LCD_WRC
12271     BIS.B #2,&$243
12272 BW1 SUB #2,R15
12273     MOV R14,0(R15)
12274     RRUM #4,R14
12275     BIC.B #1,&$243
12276     BIS.B #$0F,&$224
12277 COLON
12278     TOP_LCD 2 20_US
12279     TOP_LCD 2 20_US 
12280 ;
12281
12282 CODE LCD_WRF
12283     BIC.B #2,&$243
12284     GOTO BW1
12285 ENDCODE
12286
12287 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
12288 : LCD_HOME $02 LCD_WRF 100 20_us ;
12289
12290
12291
12292 ASM WDT_INT
12293 ADD #2,R1
12294 BIT.B #$20,&$240
12295 0= IF
12296     CMP #19,&$3D6
12297     U< IF
12298         ADD #1,&$3D6
12299     THEN
12300 ELSE
12301     BIT.B #$40,&$240
12302     0= IF
12303         CMP #3,&$3D6
12304         U>= IF
12305            SUB #1,&$3D6
12306         THEN
12307     THEN
12308 THEN
12309 BW1
12310 MOV @R1+,R0
12311 ENDASM
12312
12313 ASM RC5_INT
12314 ADD #2,R1
12315 $1806 @ 16000 = [IF]
12316     MOV #1,&$3A0
12317 [THEN]
12318 $1806 @ 24000 = [IF]
12319     MOV #2,&$3A0
12320 [THEN]
12321 MOV #1778,R9
12322 MOV #14,R10
12323 BEGIN
12324 MOV #%1011100100,&$380
12325     RRUM    #1,R9
12326     MOV     R9,R8
12327     RRUM    #1,R8
12328     ADD     R9,R8
12329     BEGIN   CMP R8,&$390
12330     U>= UNTIL
12331     BIT.B   #4,&$200
12332     ADDC    R11,R11
12333     MOV.B   &$200,&$208
12334     BIC.B   #4,&$20C
12335     SUB     #1,R10
12336 0<> WHILE
12337     ADD R9,R8
12338     BEGIN
12339         MOV &$390,R9
12340         CMP R8,R9
12341         U>= IF
12342         BIC #$30,&$380
12343         GOTO BW1
12344         THEN
12345         BIT.B #4,&$20C
12346     0<> UNTIL
12347 REPEAT
12348 BIC #$30,&$380
12349 RLAM    #1,R11
12350 MOV.B   R11,R9
12351 RRUM    #2,R9
12352 BIT     #$4000,R11
12353 0= IF   BIS #$40,R9
12354 THEN
12355 RRUM    #3,R11
12356 XOR     @R1,R11
12357 BIT     #$400,R11
12358 0= ?GOTO BW1
12359 XOR #$400,0(R1)
12360 SUB #8,R15
12361 MOV R14,6(R15)
12362 MOV &$1DDC,4(R15)
12363 MOV #$10,&$1DDC
12364 MOV R9,0(R15)
12365 MOV #0,R14
12366 LO2HI
12367     LCD_CLEAR
12368     <# # #S #36 HOLD #>
12369     ['] LCD_WRC IS EMIT
12370     TYPE
12371     ['] EMIT >BODY IS EMIT
12372 HI2LO
12373 MOV @R15+,&$1DDC
12374 MOV @R15+,R14
12375 MOV @R1+,R0
12376 ENDASM
12377
12378 ASM BACKGROUND
12379 BEGIN
12380     CALL &$1814
12381     BIS &$180A,R2
12382 AGAIN
12383 ENDASM
12384
12385 ASM SYS_OUT
12386     MOV #WARM,R9
12387     ADD #4,R9
12388     MOV R9,R0
12389 ENDASM
12390
12391 CODE STOP
12392 BW1 MOV #$4000,R9
12393     ADD #4,R9
12394     MOV R9,-2(R9)
12395     MOV #WARM,R9
12396     MOV #SYS_OUT,2(R9)
12397     BIC.B #4,&$20A
12398     BIC.B #4,&$20C
12399     MOV #0,&$3C0
12400     MOV #0,&$340
12401     MOV #0,&$342
12402     MOV #COLD,R9
12403     MOV R9,&$FFDE
12404     MOV R9,&$FFEA
12405 COLON
12406 ECHO
12407 ." RC5toLCD is removed,"
12408 ."  type START to restart"
12409  WARM
12410 ;
12411
12412 CODE SYS_INIT
12413 MOV #%10_1101_0100,&$3C0
12414 $1806 @ 16000 = [IF]
12415     MOV #1,&$3E0
12416 [THEN]
12417 $1806 @ 24000 = [IF]
12418     MOV #2,&$3E0
12419 [THEN]
12420     MOV #19,&$3D2
12421 MOV #%0110_0000,&$3C6
12422     MOV #10,&$3D6
12423     BIS.B #$20,&$204
12424     BIS.B #$20,&$20A
12425     BIS.B #7,&$245
12426     BIC.B #7,&$247
12427     BIS.B #$0F,&$224
12428     BIC.B #$0F,&$226
12429     BIS.B #4,&$20A
12430     BIC.B #4,&$20C
12431     MOV #RC5_INT,&$FFDE
12432 MOV #%01_0001_0100,&$340
12433     MOV ##3276,&$352
12434     MOV #%10000,&$342
12435     MOV #WDT_INT,&$FFEA
12436 BIC #1,&$130
12437 BIS.B #3,&$20D
12438 MOV &$1808,R8
12439 CMP #4,R8
12440 0= ?GOTO BW1
12441 COLON
12442     #1000 20_US
12443     %011 TOP_LCD
12444     #205 20_US
12445     %011 TOP_LCD
12446     #5 20_US
12447     %011 TOP_LCD
12448     #2 20_US
12449     %010 TOP_LCD
12450     #2 20_US
12451     %00101000 LCD_WRF
12452     %1000 LCD_WRF
12453     LCD_CLEAR
12454     %0110 LCD_WRF
12455     %1100 LCD_WRF
12456     LCD_CLEAR
12457     ['] LCD_HOME IS CR
12458     ['] LCD_WRC  IS EMIT
12459     CR ." I love you"
12460     ['] CR >BODY IS CR
12461     ['] EMIT >BODY IS EMIT
12462     ." RC5toLCD is running. Type STOP to quit"
12463     PWR_STATE ABORT
12464 ;
12465
12466 CODE START
12467 MOV #$4000,R9
12468 MOV #BACKGROUND,2(R9)
12469 MOV #WARM,R9
12470 MOV #SYS_INIT,2(R9)
12471 MOV R9,R0
12472 ENDCODE 
12473 PWR_STATE
12474
12475 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
12476
12477 MARKER {RC5TOLCD}
12478
12479 [UNDEFINED] @ [IF]
12480 CODE @
12481 MOV @R14,R14
12482 MOV @R13+,R0
12483 ENDCODE
12484 [THEN]
12485
12486 [UNDEFINED] CONSTANT [IF]
12487 : CONSTANT 
12488 CREATE
12489 HI2LO
12490 MOV R14,-2(R10)
12491 MOV @R15+,R14
12492 MOV @R1+,R13
12493 MOV @R13+,R0
12494 ENDCODE
12495 [THEN]
12496
12497 [UNDEFINED] STATE [IF]
12498 $1DBE CONSTANT STATE
12499 [THEN]
12500
12501 [UNDEFINED] = [IF]
12502 CODE =
12503 SUB @R15+,R14
12504 0<> IF
12505     AND #0,R14
12506     MOV @R13+,R0
12507 THEN
12508 XOR #-1,R14
12509 MOV @R13+,R0
12510 ENDCODE
12511 [THEN]
12512
12513 [UNDEFINED] IF [IF]
12514 CODE IF
12515 SUB #2,R15
12516 MOV R14,0(R15)
12517 MOV &$1DC6,R14
12518 ADD #4,&$1DC6
12519 MOV #$4042,0(R14)
12520 ADD #2,R14
12521 MOV @R13+,R0
12522 ENDCODE IMMEDIATE
12523
12524 CODE THEN
12525 MOV &$1DC6,0(R14)
12526 MOV @R15+,R14
12527 MOV @R13+,R0
12528 ENDCODE IMMEDIATE
12529 [THEN]
12530
12531 [UNDEFINED] ELSE [IF]
12532 CODE ELSE
12533 ADD #4,&$1DC6
12534 MOV &$1DC6,R10
12535 MOV #$403E,-4(R10)
12536 MOV R10,0(R14)
12537 SUB #2,R10
12538 MOV R10,R14
12539 MOV @R13+,R0
12540 ENDCODE IMMEDIATE
12541 [THEN]
12542
12543 [UNDEFINED] IS [IF]
12544
12545 CODE DEFER!
12546 MOV @R15+,2(R14)
12547 MOV @R15+,R14
12548 MOV @R13+,R0
12549 ENDCODE
12550
12551
12552 : IS
12553 STATE @
12554 IF  POSTPONE ['] POSTPONE DEFER! 
12555 ELSE ' DEFER! 
12556 THEN
12557 ; IMMEDIATE
12558 [THEN]
12559
12560 [UNDEFINED] >BODY [IF]
12561 CODE >BODY
12562 ADD #4,R14
12563 MOV @R13+,R0
12564 ENDCODE
12565 [THEN]
12566
12567
12568 CODE 20_US
12569 BEGIN
12570     BEGIN
12571         BIT #1,&$3C0
12572     0<> UNTIL
12573     BIC #1,&$3C0
12574     SUB #1,R14
12575 U< UNTIL
12576 MOV @R15+,R14
12577 MOV @R13+,R0
12578 ENDCODE
12579
12580 CODE TOP_LCD
12581     BIS.B #4,&$243
12582     BIT.B #1,&$241
12583 0= IF
12584     AND.B #$0F,R14
12585     MOV.B R14,&$222
12586     BIC.B #4,&$243
12587     MOV @R15+,R14
12588     MOV @R13+,R0
12589 THEN
12590     SUB #2,R15
12591     MOV R14,0(R15)
12592     BIC.B #4,&$243
12593     MOV.B &$220,R14
12594     AND.B #$0F,R14
12595     MOV @R13+,R0
12596 ENDCODE
12597
12598 CODE LCD_WRC
12599     BIS.B #2,&$243
12600 BW1 SUB #2,R15
12601     MOV R14,0(R15)
12602     RRUM #4,R14
12603     BIC.B #1,&$243
12604     BIS.B #$0F,&$224
12605 COLON
12606     TOP_LCD 2 20_US
12607     TOP_LCD 2 20_US 
12608 ;
12609
12610 CODE LCD_WRF
12611     BIC.B #2,&$243
12612     GOTO BW1
12613 ENDCODE
12614
12615 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
12616 : LCD_HOME $02 LCD_WRF 100 20_us ;
12617
12618
12619
12620 ASM WDT_INT
12621 ADD #2,R1
12622 BIT.B #$20,&$240
12623 0= IF
12624     CMP #19,&$3D6
12625     U< IF
12626         ADD #1,&$3D6
12627     THEN
12628 ELSE
12629     BIT.B #$40,&$240
12630     0= IF
12631         CMP #3,&$3D6
12632         U>= IF
12633            SUB #1,&$3D6
12634         THEN
12635     THEN
12636 THEN
12637 BW1
12638 MOV @R1+,R0
12639 ENDASM
12640
12641 ASM RC5_INT
12642 ADD #2,R1
12643 $1806 @ 16000 = [IF]
12644     MOV #1,&$3A0
12645 [THEN]
12646 $1806 @ 24000 = [IF]
12647     MOV #2,&$3A0
12648 [THEN]
12649 MOV #1778,R9
12650 MOV #14,R10
12651 BEGIN
12652 MOV #%1011100100,&$380
12653     RRUM    #1,R9
12654     MOV     R9,R8
12655     RRUM    #1,R8
12656     ADD     R9,R8
12657     BEGIN   CMP R8,&$390
12658     U>= UNTIL
12659     BIT.B   #4,&$200
12660     ADDC    R11,R11
12661     MOV.B   &$200,&$208
12662     BIC.B   #4,&$20C
12663     SUB     #1,R10
12664 0<> WHILE
12665     ADD R9,R8
12666     BEGIN
12667         MOV &$390,R9
12668         CMP R8,R9
12669         U>= IF
12670         BIC #$30,&$380
12671         GOTO BW1
12672         THEN
12673         BIT.B #4,&$20C
12674     0<> UNTIL
12675 REPEAT
12676 BIC #$30,&$380
12677 RLAM    #1,R11
12678 MOV.B   R11,R9
12679 RRUM    #2,R9
12680 BIT     #$4000,R11
12681 0= IF   BIS #$40,R9
12682 THEN
12683 RRUM    #3,R11
12684 XOR     @R1,R11
12685 BIT     #$400,R11
12686 0= ?GOTO BW1
12687 XOR #$400,0(R1)
12688 SUB #8,R15
12689 MOV R14,6(R15)
12690 MOV &$1DDC,4(R15)
12691 MOV #$10,&$1DDC
12692 MOV R9,0(R15)
12693 MOV #0,R14
12694 LO2HI
12695     LCD_CLEAR
12696     <# # #S #36 HOLD #>
12697     ['] LCD_WRC IS EMIT
12698     TYPE
12699     ['] EMIT >BODY IS EMIT
12700 HI2LO
12701 MOV @R15+,&$1DDC
12702 MOV @R15+,R14
12703 MOV @R1+,R0
12704 ENDASM
12705
12706 ASM BACKGROUND
12707 BEGIN
12708     CALL &$1814
12709     BIS &$180A,R2
12710 AGAIN
12711 ENDASM
12712
12713 ASM SYS_OUT
12714     MOV #WARM,R9
12715     ADD #4,R9
12716     MOV R9,R0
12717 ENDASM
12718
12719 CODE STOP
12720 BW1 MOV #$4000,R9
12721     ADD #4,R9
12722     MOV R9,-2(R9)
12723     MOV #WARM,R9
12724     MOV #SYS_OUT,2(R9)
12725     BIC.B #4,&$20A
12726     BIC.B #4,&$20C
12727     MOV #0,&$3C0
12728     MOV #0,&$340
12729     MOV #0,&$342
12730     MOV #COLD,R9
12731     MOV R9,&$FFDE
12732     MOV R9,&$FFEA
12733 COLON
12734 ECHO
12735 ." RC5toLCD is removed,"
12736 ."  type START to restart"
12737  WARM
12738 ;
12739
12740 CODE SYS_INIT
12741 MOV #%10_1101_0100,&$3C0
12742 $1806 @ 16000 = [IF]
12743     MOV #1,&$3E0
12744 [THEN]
12745 $1806 @ 24000 = [IF]
12746     MOV #2,&$3E0
12747 [THEN]
12748     MOV #19,&$3D2
12749 MOV #%0110_0000,&$3C6
12750     MOV #10,&$3D6
12751     BIS.B #$20,&$204
12752     BIS.B #$20,&$20A
12753     BIS.B #7,&$245
12754     BIC.B #7,&$247
12755     BIS.B #$0F,&$224
12756     BIC.B #$0F,&$226
12757     BIS.B #4,&$20A
12758     BIC.B #4,&$20C
12759     MOV #RC5_INT,&$FFDE
12760 MOV #%01_0001_0100,&$340
12761     MOV ##3276,&$352
12762     MOV #%10000,&$342
12763     MOV #WDT_INT,&$FFEA
12764 BIC #1,&$130
12765 BIS.B #3,&$20D
12766 MOV &$1808,R8
12767 CMP #4,R8
12768 0= ?GOTO BW1
12769 COLON
12770     #1000 20_US
12771     %011 TOP_LCD
12772     #205 20_US
12773     %011 TOP_LCD
12774     #5 20_US
12775     %011 TOP_LCD
12776     #2 20_US
12777     %010 TOP_LCD
12778     #2 20_US
12779     %00101000 LCD_WRF
12780     %1000 LCD_WRF
12781     LCD_CLEAR
12782     %0110 LCD_WRF
12783     %1100 LCD_WRF
12784     LCD_CLEAR
12785     ['] LCD_HOME IS CR
12786     ['] LCD_WRC  IS EMIT
12787     CR ." I love you"
12788     ['] CR >BODY IS CR
12789     ['] EMIT >BODY IS EMIT
12790     ." RC5toLCD is running. Type STOP to quit"
12791     PWR_STATE ABORT
12792 ;
12793
12794 CODE START
12795 MOV #$4000,R9
12796 MOV #BACKGROUND,2(R9)
12797 MOV #WARM,R9
12798 MOV #SYS_INIT,2(R9)
12799 MOV R9,R0
12800 ENDCODE 
12801 PWR_STATE
12802
12803 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
12804
12805 MARKER {RC5TOLCD}
12806
12807 [UNDEFINED] @ [IF]
12808 CODE @
12809 MOV @R14,R14
12810 MOV @R13+,R0
12811 ENDCODE
12812 [THEN]
12813
12814 [UNDEFINED] CONSTANT [IF]
12815 : CONSTANT 
12816 CREATE
12817 HI2LO
12818 MOV R14,-2(R10)
12819 MOV @R15+,R14
12820 MOV @R1+,R13
12821 MOV @R13+,R0
12822 ENDCODE
12823 [THEN]
12824
12825 [UNDEFINED] STATE [IF]
12826 $1DBE CONSTANT STATE
12827 [THEN]
12828
12829 [UNDEFINED] = [IF]
12830 CODE =
12831 SUB @R15+,R14
12832 0<> IF
12833     AND #0,R14
12834     MOV @R13+,R0
12835 THEN
12836 XOR #-1,R14
12837 MOV @R13+,R0
12838 ENDCODE
12839 [THEN]
12840
12841 [UNDEFINED] IF [IF]
12842 CODE IF
12843 SUB #2,R15
12844 MOV R14,0(R15)
12845 MOV &$1DC6,R14
12846 ADD #4,&$1DC6
12847 MOV #$4042,0(R14)
12848 ADD #2,R14
12849 MOV @R13+,R0
12850 ENDCODE IMMEDIATE
12851
12852 CODE THEN
12853 MOV &$1DC6,0(R14)
12854 MOV @R15+,R14
12855 MOV @R13+,R0
12856 ENDCODE IMMEDIATE
12857 [THEN]
12858
12859 [UNDEFINED] ELSE [IF]
12860 CODE ELSE
12861 ADD #4,&$1DC6
12862 MOV &$1DC6,R10
12863 MOV #$403E,-4(R10)
12864 MOV R10,0(R14)
12865 SUB #2,R10
12866 MOV R10,R14
12867 MOV @R13+,R0
12868 ENDCODE IMMEDIATE
12869 [THEN]
12870
12871 [UNDEFINED] IS [IF]
12872
12873 CODE DEFER!
12874 MOV @R15+,2(R14)
12875 MOV @R15+,R14
12876 MOV @R13+,R0
12877 ENDCODE
12878
12879
12880 : IS
12881 STATE @
12882 IF  POSTPONE ['] POSTPONE DEFER! 
12883 ELSE ' DEFER! 
12884 THEN
12885 ; IMMEDIATE
12886 [THEN]
12887
12888 [UNDEFINED] >BODY [IF]
12889 CODE >BODY
12890 ADD #4,R14
12891 MOV @R13+,R0
12892 ENDCODE
12893 [THEN]
12894
12895
12896 CODE 20_US
12897 BEGIN
12898     BEGIN
12899         BIT #1,&$3C0
12900     0<> UNTIL
12901     BIC #1,&$3C0
12902     SUB #1,R14
12903 U< UNTIL
12904 MOV @R15+,R14
12905 MOV @R13+,R0
12906 ENDCODE
12907
12908 CODE TOP_LCD
12909     BIS.B #4,&$243
12910     BIT.B #1,&$241
12911 0= IF
12912     AND.B #$0F,R14
12913     MOV.B R14,&$222
12914     BIC.B #4,&$243
12915     MOV @R15+,R14
12916     MOV @R13+,R0
12917 THEN
12918     SUB #2,R15
12919     MOV R14,0(R15)
12920     BIC.B #4,&$243
12921     MOV.B &$220,R14
12922     AND.B #$0F,R14
12923     MOV @R13+,R0
12924 ENDCODE
12925
12926 CODE LCD_WRC
12927     BIS.B #2,&$243
12928 BW1 SUB #2,R15
12929     MOV R14,0(R15)
12930     RRUM #4,R14
12931     BIC.B #1,&$243
12932     BIS.B #$0F,&$224
12933 COLON
12934     TOP_LCD 2 20_US
12935     TOP_LCD 2 20_US 
12936 ;
12937
12938 CODE LCD_WRF
12939     BIC.B #2,&$243
12940     GOTO BW1
12941 ENDCODE
12942
12943 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
12944 : LCD_HOME $02 LCD_WRF 100 20_us ;
12945
12946
12947
12948 ASM WDT_INT
12949 ADD #2,R1
12950 BIT.B #$20,&$240
12951 0= IF
12952     CMP #19,&$3D6
12953     U< IF
12954         ADD #1,&$3D6
12955     THEN
12956 ELSE
12957     BIT.B #$40,&$240
12958     0= IF
12959         CMP #3,&$3D6
12960         U>= IF
12961            SUB #1,&$3D6
12962         THEN
12963     THEN
12964 THEN
12965 BW1
12966 MOV @R1+,R0
12967 ENDASM
12968
12969 ASM RC5_INT
12970 ADD #2,R1
12971 $1806 @ 16000 = [IF]
12972     MOV #1,&$3A0
12973 [THEN]
12974 $1806 @ 24000 = [IF]
12975     MOV #2,&$3A0
12976 [THEN]
12977 MOV #1778,R9
12978 MOV #14,R10
12979 BEGIN
12980 MOV #%1011100100,&$380
12981     RRUM    #1,R9
12982     MOV     R9,R8
12983     RRUM    #1,R8
12984     ADD     R9,R8
12985     BEGIN   CMP R8,&$390
12986     U>= UNTIL
12987     BIT.B   #4,&$200
12988     ADDC    R11,R11
12989     MOV.B   &$200,&$208
12990     BIC.B   #4,&$20C
12991     SUB     #1,R10
12992 0<> WHILE
12993     ADD R9,R8
12994     BEGIN
12995         MOV &$390,R9
12996         CMP R8,R9
12997         U>= IF
12998         BIC #$30,&$380
12999         GOTO BW1
13000         THEN
13001         BIT.B #4,&$20C
13002     0<> UNTIL
13003 REPEAT
13004 BIC #$30,&$380
13005 RLAM    #1,R11
13006 MOV.B   R11,R9
13007 RRUM    #2,R9
13008 BIT     #$4000,R11
13009 0= IF   BIS #$40,R9
13010 THEN
13011 RRUM    #3,R11
13012 XOR     @R1,R11
13013 BIT     #$400,R11
13014 0= ?GOTO BW1
13015 XOR #$400,0(R1)
13016 SUB #8,R15
13017 MOV R14,6(R15)
13018 MOV &$1DDC,4(R15)
13019 MOV #$10,&$1DDC
13020 MOV R9,0(R15)
13021 MOV #0,R14
13022 LO2HI
13023     LCD_CLEAR
13024     <# # #S #36 HOLD #>
13025     ['] LCD_WRC IS EMIT
13026     TYPE
13027     ['] EMIT >BODY IS EMIT
13028 HI2LO
13029 MOV @R15+,&$1DDC
13030 MOV @R15+,R14
13031 MOV @R1+,R0
13032 ENDASM
13033
13034 ASM BACKGROUND
13035 BEGIN
13036     CALL &$1814
13037     BIS &$180A,R2
13038 AGAIN
13039 ENDASM
13040
13041 ASM SYS_OUT
13042     MOV #WARM,R9
13043     ADD #4,R9
13044     MOV R9,R0
13045 ENDASM
13046
13047 CODE STOP
13048 BW1 MOV #$4000,R9
13049     ADD #4,R9
13050     MOV R9,-2(R9)
13051     MOV #WARM,R9
13052     MOV #SYS_OUT,2(R9)
13053     BIC.B #4,&$20A
13054     BIC.B #4,&$20C
13055     MOV #0,&$3C0
13056     MOV #0,&$340
13057     MOV #0,&$342
13058     MOV #COLD,R9
13059     MOV R9,&$FFDE
13060     MOV R9,&$FFEA
13061 COLON
13062 ECHO
13063 ." RC5toLCD is removed,"
13064 ."  type START to restart"
13065  WARM
13066 ;
13067
13068 CODE SYS_INIT
13069 MOV #%10_1101_0100,&$3C0
13070 $1806 @ 16000 = [IF]
13071     MOV #1,&$3E0
13072 [THEN]
13073 $1806 @ 24000 = [IF]
13074     MOV #2,&$3E0
13075 [THEN]
13076     MOV #19,&$3D2
13077 MOV #%0110_0000,&$3C6
13078     MOV #10,&$3D6
13079     BIS.B #$20,&$204
13080     BIS.B #$20,&$20A
13081     BIS.B #7,&$245
13082     BIC.B #7,&$247
13083     BIS.B #$0F,&$224
13084     BIC.B #$0F,&$226
13085     BIS.B #4,&$20A
13086     BIC.B #4,&$20C
13087     MOV #RC5_INT,&$FFDE
13088 MOV #%01_0001_0100,&$340
13089     MOV ##3276,&$352
13090     MOV #%10000,&$342
13091     MOV #WDT_INT,&$FFEA
13092 BIC #1,&$130
13093 BIS.B #3,&$20D
13094 MOV &$1808,R8
13095 CMP #4,R8
13096 0= ?GOTO BW1
13097 COLON
13098     #1000 20_US
13099     %011 TOP_LCD
13100     #205 20_US
13101     %011 TOP_LCD
13102     #5 20_US
13103     %011 TOP_LCD
13104     #2 20_US
13105     %010 TOP_LCD
13106     #2 20_US
13107     %00101000 LCD_WRF
13108     %1000 LCD_WRF
13109     LCD_CLEAR
13110     %0110 LCD_WRF
13111     %1100 LCD_WRF
13112     LCD_CLEAR
13113     ['] LCD_HOME IS CR
13114     ['] LCD_WRC  IS EMIT
13115     CR ." I love you"
13116     ['] CR >BODY IS CR
13117     ['] EMIT >BODY IS EMIT
13118     ." RC5toLCD is running. Type STOP to quit"
13119     PWR_STATE ABORT
13120 ;
13121
13122 CODE START
13123 MOV #$4000,R9
13124 MOV #BACKGROUND,2(R9)
13125 MOV #WARM,R9
13126 MOV #SYS_INIT,2(R9)
13127 MOV R9,R0
13128 ENDCODE 
13129 PWR_STATE
13130
13131 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
13132
13133 MARKER {RC5TOLCD}
13134
13135 [UNDEFINED] @ [IF]
13136 CODE @
13137 MOV @R14,R14
13138 MOV @R13+,R0
13139 ENDCODE
13140 [THEN]
13141
13142 [UNDEFINED] CONSTANT [IF]
13143 : CONSTANT 
13144 CREATE
13145 HI2LO
13146 MOV R14,-2(R10)
13147 MOV @R15+,R14
13148 MOV @R1+,R13
13149 MOV @R13+,R0
13150 ENDCODE
13151 [THEN]
13152
13153 [UNDEFINED] STATE [IF]
13154 $1DBE CONSTANT STATE
13155 [THEN]
13156
13157 [UNDEFINED] = [IF]
13158 CODE =
13159 SUB @R15+,R14
13160 0<> IF
13161     AND #0,R14
13162     MOV @R13+,R0
13163 THEN
13164 XOR #-1,R14
13165 MOV @R13+,R0
13166 ENDCODE
13167 [THEN]
13168
13169 [UNDEFINED] IF [IF]
13170 CODE IF
13171 SUB #2,R15
13172 MOV R14,0(R15)
13173 MOV &$1DC6,R14
13174 ADD #4,&$1DC6
13175 MOV #$4042,0(R14)
13176 ADD #2,R14
13177 MOV @R13+,R0
13178 ENDCODE IMMEDIATE
13179
13180 CODE THEN
13181 MOV &$1DC6,0(R14)
13182 MOV @R15+,R14
13183 MOV @R13+,R0
13184 ENDCODE IMMEDIATE
13185 [THEN]
13186
13187 [UNDEFINED] ELSE [IF]
13188 CODE ELSE
13189 ADD #4,&$1DC6
13190 MOV &$1DC6,R10
13191 MOV #$403E,-4(R10)
13192 MOV R10,0(R14)
13193 SUB #2,R10
13194 MOV R10,R14
13195 MOV @R13+,R0
13196 ENDCODE IMMEDIATE
13197 [THEN]
13198
13199 [UNDEFINED] IS [IF]
13200
13201 CODE DEFER!
13202 MOV @R15+,2(R14)
13203 MOV @R15+,R14
13204 MOV @R13+,R0
13205 ENDCODE
13206
13207
13208 : IS
13209 STATE @
13210 IF  POSTPONE ['] POSTPONE DEFER! 
13211 ELSE ' DEFER! 
13212 THEN
13213 ; IMMEDIATE
13214 [THEN]
13215
13216 [UNDEFINED] >BODY [IF]
13217 CODE >BODY
13218 ADD #4,R14
13219 MOV @R13+,R0
13220 ENDCODE
13221 [THEN]
13222
13223
13224 CODE 20_US
13225 BEGIN
13226     BEGIN
13227         BIT #1,&$3C0
13228     0<> UNTIL
13229     BIC #1,&$3C0
13230     SUB #1,R14
13231 U< UNTIL
13232 MOV @R15+,R14
13233 MOV @R13+,R0
13234 ENDCODE
13235
13236 CODE TOP_LCD
13237     BIS.B #4,&$243
13238     BIT.B #1,&$241
13239 0= IF
13240     AND.B #$0F,R14
13241     MOV.B R14,&$222
13242     BIC.B #4,&$243
13243     MOV @R15+,R14
13244     MOV @R13+,R0
13245 THEN
13246     SUB #2,R15
13247     MOV R14,0(R15)
13248     BIC.B #4,&$243
13249     MOV.B &$220,R14
13250     AND.B #$0F,R14
13251     MOV @R13+,R0
13252 ENDCODE
13253
13254 CODE LCD_WRC
13255     BIS.B #2,&$243
13256 BW1 SUB #2,R15
13257     MOV R14,0(R15)
13258     RRUM #4,R14
13259     BIC.B #1,&$243
13260     BIS.B #$0F,&$224
13261 COLON
13262     TOP_LCD 2 20_US
13263     TOP_LCD 2 20_US 
13264 ;
13265
13266 CODE LCD_WRF
13267     BIC.B #2,&$243
13268     GOTO BW1
13269 ENDCODE
13270
13271 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
13272 : LCD_HOME $02 LCD_WRF 100 20_us ;
13273
13274
13275
13276 ASM WDT_INT
13277 ADD #2,R1
13278 BIT.B #$20,&$240
13279 0= IF
13280     CMP #19,&$3D6
13281     U< IF
13282         ADD #1,&$3D6
13283     THEN
13284 ELSE
13285     BIT.B #$40,&$240
13286     0= IF
13287         CMP #3,&$3D6
13288         U>= IF
13289            SUB #1,&$3D6
13290         THEN
13291     THEN
13292 THEN
13293 BW1
13294 MOV @R1+,R0
13295 ENDASM
13296
13297 ASM RC5_INT
13298 ADD #2,R1
13299 $1806 @ 16000 = [IF]
13300     MOV #1,&$3A0
13301 [THEN]
13302 $1806 @ 24000 = [IF]
13303     MOV #2,&$3A0
13304 [THEN]
13305 MOV #1778,R9
13306 MOV #14,R10
13307 BEGIN
13308 MOV #%1011100100,&$380
13309     RRUM    #1,R9
13310     MOV     R9,R8
13311     RRUM    #1,R8
13312     ADD     R9,R8
13313     BEGIN   CMP R8,&$390
13314     U>= UNTIL
13315     BIT.B   #4,&$200
13316     ADDC    R11,R11
13317     MOV.B   &$200,&$208
13318     BIC.B   #4,&$20C
13319     SUB     #1,R10
13320 0<> WHILE
13321     ADD R9,R8
13322     BEGIN
13323         MOV &$390,R9
13324         CMP R8,R9
13325         U>= IF
13326         BIC #$30,&$380
13327         GOTO BW1
13328         THEN
13329         BIT.B #4,&$20C
13330     0<> UNTIL
13331 REPEAT
13332 BIC #$30,&$380
13333 RLAM    #1,R11
13334 MOV.B   R11,R9
13335 RRUM    #2,R9
13336 BIT     #$4000,R11
13337 0= IF   BIS #$40,R9
13338 THEN
13339 RRUM    #3,R11
13340 XOR     @R1,R11
13341 BIT     #$400,R11
13342 0= ?GOTO BW1
13343 XOR #$400,0(R1)
13344 SUB #8,R15
13345 MOV R14,6(R15)
13346 MOV &$1DDC,4(R15)
13347 MOV #$10,&$1DDC
13348 MOV R9,0(R15)
13349 MOV #0,R14
13350 LO2HI
13351     LCD_CLEAR
13352     <# # #S #36 HOLD #>
13353     ['] LCD_WRC IS EMIT
13354     TYPE
13355     ['] EMIT >BODY IS EMIT
13356 HI2LO
13357 MOV @R15+,&$1DDC
13358 MOV @R15+,R14
13359 MOV @R1+,R0
13360 ENDASM
13361
13362 ASM BACKGROUND
13363 BEGIN
13364     CALL &$1814
13365     BIS &$180A,R2
13366 AGAIN
13367 ENDASM
13368
13369 ASM SYS_OUT
13370     MOV #WARM,R9
13371     ADD #4,R9
13372     MOV R9,R0
13373 ENDASM
13374
13375 CODE STOP
13376 BW1 MOV #$4000,R9
13377     ADD #4,R9
13378     MOV R9,-2(R9)
13379     MOV #WARM,R9
13380     MOV #SYS_OUT,2(R9)
13381     BIC.B #4,&$20A
13382     BIC.B #4,&$20C
13383     MOV #0,&$3C0
13384     MOV #0,&$340
13385     MOV #0,&$342
13386     MOV #COLD,R9
13387     MOV R9,&$FFDE
13388     MOV R9,&$FFEA
13389 COLON
13390 ECHO
13391 ." RC5toLCD is removed,"
13392 ."  type START to restart"
13393  WARM
13394 ;
13395
13396 CODE SYS_INIT
13397 MOV #%10_1101_0100,&$3C0
13398 $1806 @ 16000 = [IF]
13399     MOV #1,&$3E0
13400 [THEN]
13401 $1806 @ 24000 = [IF]
13402     MOV #2,&$3E0
13403 [THEN]
13404     MOV #19,&$3D2
13405 MOV #%0110_0000,&$3C6
13406     MOV #10,&$3D6
13407     BIS.B #$20,&$204
13408     BIS.B #$20,&$20A
13409     BIS.B #7,&$245
13410     BIC.B #7,&$247
13411     BIS.B #$0F,&$224
13412     BIC.B #$0F,&$226
13413     BIS.B #4,&$20A
13414     BIC.B #4,&$20C
13415     MOV #RC5_INT,&$FFDE
13416 MOV #%01_0001_0100,&$340
13417     MOV ##3276,&$352
13418     MOV #%10000,&$342
13419     MOV #WDT_INT,&$FFEA
13420 BIC #1,&$130
13421 BIS.B #3,&$20D
13422 MOV &$1808,R8
13423 CMP #4,R8
13424 0= ?GOTO BW1
13425 COLON
13426     #1000 20_US
13427     %011 TOP_LCD
13428     #205 20_US
13429     %011 TOP_LCD
13430     #5 20_US
13431     %011 TOP_LCD
13432     #2 20_US
13433     %010 TOP_LCD
13434     #2 20_US
13435     %00101000 LCD_WRF
13436     %1000 LCD_WRF
13437     LCD_CLEAR
13438     %0110 LCD_WRF
13439     %1100 LCD_WRF
13440     LCD_CLEAR
13441     ['] LCD_HOME IS CR
13442     ['] LCD_WRC  IS EMIT
13443     CR ." I love you"
13444     ['] CR >BODY IS CR
13445     ['] EMIT >BODY IS EMIT
13446     ." RC5toLCD is running. Type STOP to quit"
13447     PWR_STATE ABORT
13448 ;
13449
13450 CODE START
13451 MOV #$4000,R9
13452 MOV #BACKGROUND,2(R9)
13453 MOV #WARM,R9
13454 MOV #SYS_INIT,2(R9)
13455 MOV R9,R0
13456 ENDCODE 
13457 PWR_STATE
13458
13459 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
13460
13461 MARKER {RC5TOLCD}
13462
13463 [UNDEFINED] @ [IF]
13464 CODE @
13465 MOV @R14,R14
13466 MOV @R13+,R0
13467 ENDCODE
13468 [THEN]
13469
13470 [UNDEFINED] CONSTANT [IF]
13471 : CONSTANT 
13472 CREATE
13473 HI2LO
13474 MOV R14,-2(R10)
13475 MOV @R15+,R14
13476 MOV @R1+,R13
13477 MOV @R13+,R0
13478 ENDCODE
13479 [THEN]
13480
13481 [UNDEFINED] STATE [IF]
13482 $1DBE CONSTANT STATE
13483 [THEN]
13484
13485 [UNDEFINED] = [IF]
13486 CODE =
13487 SUB @R15+,R14
13488 0<> IF
13489     AND #0,R14
13490     MOV @R13+,R0
13491 THEN
13492 XOR #-1,R14
13493 MOV @R13+,R0
13494 ENDCODE
13495 [THEN]
13496
13497 [UNDEFINED] IF [IF]
13498 CODE IF
13499 SUB #2,R15
13500 MOV R14,0(R15)
13501 MOV &$1DC6,R14
13502 ADD #4,&$1DC6
13503 MOV #$4042,0(R14)
13504 ADD #2,R14
13505 MOV @R13+,R0
13506 ENDCODE IMMEDIATE
13507
13508 CODE THEN
13509 MOV &$1DC6,0(R14)
13510 MOV @R15+,R14
13511 MOV @R13+,R0
13512 ENDCODE IMMEDIATE
13513 [THEN]
13514
13515 [UNDEFINED] ELSE [IF]
13516 CODE ELSE
13517 ADD #4,&$1DC6
13518 MOV &$1DC6,R10
13519 MOV #$403E,-4(R10)
13520 MOV R10,0(R14)
13521 SUB #2,R10
13522 MOV R10,R14
13523 MOV @R13+,R0
13524 ENDCODE IMMEDIATE
13525 [THEN]
13526
13527 [UNDEFINED] IS [IF]
13528
13529 CODE DEFER!
13530 MOV @R15+,2(R14)
13531 MOV @R15+,R14
13532 MOV @R13+,R0
13533 ENDCODE
13534
13535
13536 : IS
13537 STATE @
13538 IF  POSTPONE ['] POSTPONE DEFER! 
13539 ELSE ' DEFER! 
13540 THEN
13541 ; IMMEDIATE
13542 [THEN]
13543
13544 [UNDEFINED] >BODY [IF]
13545 CODE >BODY
13546 ADD #4,R14
13547 MOV @R13+,R0
13548 ENDCODE
13549 [THEN]
13550
13551
13552 CODE 20_US
13553 BEGIN
13554     BEGIN
13555         BIT #1,&$3C0
13556     0<> UNTIL
13557     BIC #1,&$3C0
13558     SUB #1,R14
13559 U< UNTIL
13560 MOV @R15+,R14
13561 MOV @R13+,R0
13562 ENDCODE
13563
13564 CODE TOP_LCD
13565     BIS.B #4,&$243
13566     BIT.B #1,&$241
13567 0= IF
13568     AND.B #$0F,R14
13569     MOV.B R14,&$222
13570     BIC.B #4,&$243
13571     MOV @R15+,R14
13572     MOV @R13+,R0
13573 THEN
13574     SUB #2,R15
13575     MOV R14,0(R15)
13576     BIC.B #4,&$243
13577     MOV.B &$220,R14
13578     AND.B #$0F,R14
13579     MOV @R13+,R0
13580 ENDCODE
13581
13582 CODE LCD_WRC
13583     BIS.B #2,&$243
13584 BW1 SUB #2,R15
13585     MOV R14,0(R15)
13586     RRUM #4,R14
13587     BIC.B #1,&$243
13588     BIS.B #$0F,&$224
13589 COLON
13590     TOP_LCD 2 20_US
13591     TOP_LCD 2 20_US 
13592 ;
13593
13594 CODE LCD_WRF
13595     BIC.B #2,&$243
13596     GOTO BW1
13597 ENDCODE
13598
13599 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
13600 : LCD_HOME $02 LCD_WRF 100 20_us ;
13601
13602
13603
13604 ASM WDT_INT
13605 ADD #2,R1
13606 BIT.B #$20,&$240
13607 0= IF
13608     CMP #19,&$3D6
13609     U< IF
13610         ADD #1,&$3D6
13611     THEN
13612 ELSE
13613     BIT.B #$40,&$240
13614     0= IF
13615         CMP #3,&$3D6
13616         U>= IF
13617            SUB #1,&$3D6
13618         THEN
13619     THEN
13620 THEN
13621 BW1
13622 MOV @R1+,R0
13623 ENDASM
13624
13625 ASM RC5_INT
13626 ADD #2,R1
13627 $1806 @ 16000 = [IF]
13628     MOV #1,&$3A0
13629 [THEN]
13630 $1806 @ 24000 = [IF]
13631     MOV #2,&$3A0
13632 [THEN]
13633 MOV #1778,R9
13634 MOV #14,R10
13635 BEGIN
13636 MOV #%1011100100,&$380
13637     RRUM    #1,R9
13638     MOV     R9,R8
13639     RRUM    #1,R8
13640     ADD     R9,R8
13641     BEGIN   CMP R8,&$390
13642     U>= UNTIL
13643     BIT.B   #4,&$200
13644     ADDC    R11,R11
13645     MOV.B   &$200,&$208
13646     BIC.B   #4,&$20C
13647     SUB     #1,R10
13648 0<> WHILE
13649     ADD R9,R8
13650     BEGIN
13651         MOV &$390,R9
13652         CMP R8,R9
13653         U>= IF
13654         BIC #$30,&$380
13655         GOTO BW1
13656         THEN
13657         BIT.B #4,&$20C
13658     0<> UNTIL
13659 REPEAT
13660 BIC #$30,&$380
13661 RLAM    #1,R11
13662 MOV.B   R11,R9
13663 RRUM    #2,R9
13664 BIT     #$4000,R11
13665 0= IF   BIS #$40,R9
13666 THEN
13667 RRUM    #3,R11
13668 XOR     @R1,R11
13669 BIT     #$400,R11
13670 0= ?GOTO BW1
13671 XOR #$400,0(R1)
13672 SUB #8,R15
13673 MOV R14,6(R15)
13674 MOV &$1DDC,4(R15)
13675 MOV #$10,&$1DDC
13676 MOV R9,0(R15)
13677 MOV #0,R14
13678 LO2HI
13679     LCD_CLEAR
13680     <# # #S #36 HOLD #>
13681     ['] LCD_WRC IS EMIT
13682     TYPE
13683     ['] EMIT >BODY IS EMIT
13684 HI2LO
13685 MOV @R15+,&$1DDC
13686 MOV @R15+,R14
13687 MOV @R1+,R0
13688 ENDASM
13689
13690 ASM BACKGROUND
13691 BEGIN
13692     CALL &$1814
13693     BIS &$180A,R2
13694 AGAIN
13695 ENDASM
13696
13697 ASM SYS_OUT
13698     MOV #WARM,R9
13699     ADD #4,R9
13700     MOV R9,R0
13701 ENDASM
13702
13703 CODE STOP
13704 BW1 MOV #$4000,R9
13705     ADD #4,R9
13706     MOV R9,-2(R9)
13707     MOV #WARM,R9
13708     MOV #SYS_OUT,2(R9)
13709     BIC.B #4,&$20A
13710     BIC.B #4,&$20C
13711     MOV #0,&$3C0
13712     MOV #0,&$340
13713     MOV #0,&$342
13714     MOV #COLD,R9
13715     MOV R9,&$FFDE
13716     MOV R9,&$FFEA
13717 COLON
13718 ECHO
13719 ." RC5toLCD is removed,"
13720 ."  type START to restart"
13721  WARM
13722 ;
13723
13724 CODE SYS_INIT
13725 MOV #%10_1101_0100,&$3C0
13726 $1806 @ 16000 = [IF]
13727     MOV #1,&$3E0
13728 [THEN]
13729 $1806 @ 24000 = [IF]
13730     MOV #2,&$3E0
13731 [THEN]
13732     MOV #19,&$3D2
13733 MOV #%0110_0000,&$3C6
13734     MOV #10,&$3D6
13735     BIS.B #$20,&$204
13736     BIS.B #$20,&$20A
13737     BIS.B #7,&$245
13738     BIC.B #7,&$247
13739     BIS.B #$0F,&$224
13740     BIC.B #$0F,&$226
13741     BIS.B #4,&$20A
13742     BIC.B #4,&$20C
13743     MOV #RC5_INT,&$FFDE
13744 MOV #%01_0001_0100,&$340
13745     MOV ##3276,&$352
13746     MOV #%10000,&$342
13747     MOV #WDT_INT,&$FFEA
13748 BIC #1,&$130
13749 BIS.B #3,&$20D
13750 MOV &$1808,R8
13751 CMP #4,R8
13752 0= ?GOTO BW1
13753 COLON
13754     #1000 20_US
13755     %011 TOP_LCD
13756     #205 20_US
13757     %011 TOP_LCD
13758     #5 20_US
13759     %011 TOP_LCD
13760     #2 20_US
13761     %010 TOP_LCD
13762     #2 20_US
13763     %00101000 LCD_WRF
13764     %1000 LCD_WRF
13765     LCD_CLEAR
13766     %0110 LCD_WRF
13767     %1100 LCD_WRF
13768     LCD_CLEAR
13769     ['] LCD_HOME IS CR
13770     ['] LCD_WRC  IS EMIT
13771     CR ." I love you"
13772     ['] CR >BODY IS CR
13773     ['] EMIT >BODY IS EMIT
13774     ." RC5toLCD is running. Type STOP to quit"
13775     PWR_STATE ABORT
13776 ;
13777
13778 CODE START
13779 MOV #$4000,R9
13780 MOV #BACKGROUND,2(R9)
13781 MOV #WARM,R9
13782 MOV #SYS_INIT,2(R9)
13783 MOV R9,R0
13784 ENDCODE 
13785 PWR_STATE
13786
13787 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
13788
13789 MARKER {RC5TOLCD}
13790
13791 [UNDEFINED] @ [IF]
13792 CODE @
13793 MOV @R14,R14
13794 MOV @R13+,R0
13795 ENDCODE
13796 [THEN]
13797
13798 [UNDEFINED] CONSTANT [IF]
13799 : CONSTANT 
13800 CREATE
13801 HI2LO
13802 MOV R14,-2(R10)
13803 MOV @R15+,R14
13804 MOV @R1+,R13
13805 MOV @R13+,R0
13806 ENDCODE
13807 [THEN]
13808
13809 [UNDEFINED] STATE [IF]
13810 $1DBE CONSTANT STATE
13811 [THEN]
13812
13813 [UNDEFINED] = [IF]
13814 CODE =
13815 SUB @R15+,R14
13816 0<> IF
13817     AND #0,R14
13818     MOV @R13+,R0
13819 THEN
13820 XOR #-1,R14
13821 MOV @R13+,R0
13822 ENDCODE
13823 [THEN]
13824
13825 [UNDEFINED] IF [IF]
13826 CODE IF
13827 SUB #2,R15
13828 MOV R14,0(R15)
13829 MOV &$1DC6,R14
13830 ADD #4,&$1DC6
13831 MOV #$4042,0(R14)
13832 ADD #2,R14
13833 MOV @R13+,R0
13834 ENDCODE IMMEDIATE
13835
13836 CODE THEN
13837 MOV &$1DC6,0(R14)
13838 MOV @R15+,R14
13839 MOV @R13+,R0
13840 ENDCODE IMMEDIATE
13841 [THEN]
13842
13843 [UNDEFINED] ELSE [IF]
13844 CODE ELSE
13845 ADD #4,&$1DC6
13846 MOV &$1DC6,R10
13847 MOV #$403E,-4(R10)
13848 MOV R10,0(R14)
13849 SUB #2,R10
13850 MOV R10,R14
13851 MOV @R13+,R0
13852 ENDCODE IMMEDIATE
13853 [THEN]
13854
13855 [UNDEFINED] IS [IF]
13856
13857 CODE DEFER!
13858 MOV @R15+,2(R14)
13859 MOV @R15+,R14
13860 MOV @R13+,R0
13861 ENDCODE
13862
13863
13864 : IS
13865 STATE @
13866 IF  POSTPONE ['] POSTPONE DEFER! 
13867 ELSE ' DEFER! 
13868 THEN
13869 ; IMMEDIATE
13870 [THEN]
13871
13872 [UNDEFINED] >BODY [IF]
13873 CODE >BODY
13874 ADD #4,R14
13875 MOV @R13+,R0
13876 ENDCODE
13877 [THEN]
13878
13879
13880 CODE 20_US
13881 BEGIN
13882     BEGIN
13883         BIT #1,&$3C0
13884     0<> UNTIL
13885     BIC #1,&$3C0
13886     SUB #1,R14
13887 U< UNTIL
13888 MOV @R15+,R14
13889 MOV @R13+,R0
13890 ENDCODE
13891
13892 CODE TOP_LCD
13893     BIS.B #4,&$243
13894     BIT.B #1,&$241
13895 0= IF
13896     AND.B #$0F,R14
13897     MOV.B R14,&$222
13898     BIC.B #4,&$243
13899     MOV @R15+,R14
13900     MOV @R13+,R0
13901 THEN
13902     SUB #2,R15
13903     MOV R14,0(R15)
13904     BIC.B #4,&$243
13905     MOV.B &$220,R14
13906     AND.B #$0F,R14
13907     MOV @R13+,R0
13908 ENDCODE
13909
13910 CODE LCD_WRC
13911     BIS.B #2,&$243
13912 BW1 SUB #2,R15
13913     MOV R14,0(R15)
13914     RRUM #4,R14
13915     BIC.B #1,&$243
13916     BIS.B #$0F,&$224
13917 COLON
13918     TOP_LCD 2 20_US
13919     TOP_LCD 2 20_US 
13920 ;
13921
13922 CODE LCD_WRF
13923     BIC.B #2,&$243
13924     GOTO BW1
13925 ENDCODE
13926
13927 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
13928 : LCD_HOME $02 LCD_WRF 100 20_us ;
13929
13930
13931
13932 ASM WDT_INT
13933 ADD #2,R1
13934 BIT.B #$20,&$240
13935 0= IF
13936     CMP #19,&$3D6
13937     U< IF
13938         ADD #1,&$3D6
13939     THEN
13940 ELSE
13941     BIT.B #$40,&$240
13942     0= IF
13943         CMP #3,&$3D6
13944         U>= IF
13945            SUB #1,&$3D6
13946         THEN
13947     THEN
13948 THEN
13949 BW1
13950 MOV @R1+,R0
13951 ENDASM
13952
13953 ASM RC5_INT
13954 ADD #2,R1
13955 $1806 @ 16000 = [IF]
13956     MOV #1,&$3A0
13957 [THEN]
13958 $1806 @ 24000 = [IF]
13959     MOV #2,&$3A0
13960 [THEN]
13961 MOV #1778,R9
13962 MOV #14,R10
13963 BEGIN
13964 MOV #%1011100100,&$380
13965     RRUM    #1,R9
13966     MOV     R9,R8
13967     RRUM    #1,R8
13968     ADD     R9,R8
13969     BEGIN   CMP R8,&$390
13970     U>= UNTIL
13971     BIT.B   #4,&$200
13972     ADDC    R11,R11
13973     MOV.B   &$200,&$208
13974     BIC.B   #4,&$20C
13975     SUB     #1,R10
13976 0<> WHILE
13977     ADD R9,R8
13978     BEGIN
13979         MOV &$390,R9
13980         CMP R8,R9
13981         U>= IF
13982         BIC #$30,&$380
13983         GOTO BW1
13984         THEN
13985         BIT.B #4,&$20C
13986     0<> UNTIL
13987 REPEAT
13988 BIC #$30,&$380
13989 RLAM    #1,R11
13990 MOV.B   R11,R9
13991 RRUM    #2,R9
13992 BIT     #$4000,R11
13993 0= IF   BIS #$40,R9
13994 THEN
13995 RRUM    #3,R11
13996 XOR     @R1,R11
13997 BIT     #$400,R11
13998 0= ?GOTO BW1
13999 XOR #$400,0(R1)
14000 SUB #8,R15
14001 MOV R14,6(R15)
14002 MOV &$1DDC,4(R15)
14003 MOV #$10,&$1DDC
14004 MOV R9,0(R15)
14005 MOV #0,R14
14006 LO2HI
14007     LCD_CLEAR
14008     <# # #S #36 HOLD #>
14009     ['] LCD_WRC IS EMIT
14010     TYPE
14011     ['] EMIT >BODY IS EMIT
14012 HI2LO
14013 MOV @R15+,&$1DDC
14014 MOV @R15+,R14
14015 MOV @R1+,R0
14016 ENDASM
14017
14018 ASM BACKGROUND
14019 BEGIN
14020     CALL &$1814
14021     BIS &$180A,R2
14022 AGAIN
14023 ENDASM
14024
14025 ASM SYS_OUT
14026     MOV #WARM,R9
14027     ADD #4,R9
14028     MOV R9,R0
14029 ENDASM
14030
14031 CODE STOP
14032 BW1 MOV #$4000,R9
14033     ADD #4,R9
14034     MOV R9,-2(R9)
14035     MOV #WARM,R9
14036     MOV #SYS_OUT,2(R9)
14037     BIC.B #4,&$20A
14038     BIC.B #4,&$20C
14039     MOV #0,&$3C0
14040     MOV #0,&$340
14041     MOV #0,&$342
14042     MOV #COLD,R9
14043     MOV R9,&$FFDE
14044     MOV R9,&$FFEA
14045 COLON
14046 ECHO
14047 ." RC5toLCD is removed,"
14048 ."  type START to restart"
14049  WARM
14050 ;
14051
14052 CODE SYS_INIT
14053 MOV #%10_1101_0100,&$3C0
14054 $1806 @ 16000 = [IF]
14055     MOV #1,&$3E0
14056 [THEN]
14057 $1806 @ 24000 = [IF]
14058     MOV #2,&$3E0
14059 [THEN]
14060     MOV #19,&$3D2
14061 MOV #%0110_0000,&$3C6
14062     MOV #10,&$3D6
14063     BIS.B #$20,&$204
14064     BIS.B #$20,&$20A
14065     BIS.B #7,&$245
14066     BIC.B #7,&$247
14067     BIS.B #$0F,&$224
14068     BIC.B #$0F,&$226
14069     BIS.B #4,&$20A
14070     BIC.B #4,&$20C
14071     MOV #RC5_INT,&$FFDE
14072 MOV #%01_0001_0100,&$340
14073     MOV ##3276,&$352
14074     MOV #%10000,&$342
14075     MOV #WDT_INT,&$FFEA
14076 BIC #1,&$130
14077 BIS.B #3,&$20D
14078 MOV &$1808,R8
14079 CMP #4,R8
14080 0= ?GOTO BW1
14081 COLON
14082     #1000 20_US
14083     %011 TOP_LCD
14084     #205 20_US
14085     %011 TOP_LCD
14086     #5 20_US
14087     %011 TOP_LCD
14088     #2 20_US
14089     %010 TOP_LCD
14090     #2 20_US
14091     %00101000 LCD_WRF
14092     %1000 LCD_WRF
14093     LCD_CLEAR
14094     %0110 LCD_WRF
14095     %1100 LCD_WRF
14096     LCD_CLEAR
14097     ['] LCD_HOME IS CR
14098     ['] LCD_WRC  IS EMIT
14099     CR ." I love you"
14100     ['] CR >BODY IS CR
14101     ['] EMIT >BODY IS EMIT
14102     ." RC5toLCD is running. Type STOP to quit"
14103     PWR_STATE ABORT
14104 ;
14105
14106 CODE START
14107 MOV #$4000,R9
14108 MOV #BACKGROUND,2(R9)
14109 MOV #WARM,R9
14110 MOV #SYS_INIT,2(R9)
14111 MOV R9,R0
14112 ENDCODE 
14113 PWR_STATE
14114
14115 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
14116
14117 MARKER {RC5TOLCD}
14118
14119 [UNDEFINED] @ [IF]
14120 CODE @
14121 MOV @R14,R14
14122 MOV @R13+,R0
14123 ENDCODE
14124 [THEN]
14125
14126 [UNDEFINED] CONSTANT [IF]
14127 : CONSTANT 
14128 CREATE
14129 HI2LO
14130 MOV R14,-2(R10)
14131 MOV @R15+,R14
14132 MOV @R1+,R13
14133 MOV @R13+,R0
14134 ENDCODE
14135 [THEN]
14136
14137 [UNDEFINED] STATE [IF]
14138 $1DBE CONSTANT STATE
14139 [THEN]
14140
14141 [UNDEFINED] = [IF]
14142 CODE =
14143 SUB @R15+,R14
14144 0<> IF
14145     AND #0,R14
14146     MOV @R13+,R0
14147 THEN
14148 XOR #-1,R14
14149 MOV @R13+,R0
14150 ENDCODE
14151 [THEN]
14152
14153 [UNDEFINED] IF [IF]
14154 CODE IF
14155 SUB #2,R15
14156 MOV R14,0(R15)
14157 MOV &$1DC6,R14
14158 ADD #4,&$1DC6
14159 MOV #$4042,0(R14)
14160 ADD #2,R14
14161 MOV @R13+,R0
14162 ENDCODE IMMEDIATE
14163
14164 CODE THEN
14165 MOV &$1DC6,0(R14)
14166 MOV @R15+,R14
14167 MOV @R13+,R0
14168 ENDCODE IMMEDIATE
14169 [THEN]
14170
14171 [UNDEFINED] ELSE [IF]
14172 CODE ELSE
14173 ADD #4,&$1DC6
14174 MOV &$1DC6,R10
14175 MOV #$403E,-4(R10)
14176 MOV R10,0(R14)
14177 SUB #2,R10
14178 MOV R10,R14
14179 MOV @R13+,R0
14180 ENDCODE IMMEDIATE
14181 [THEN]
14182
14183 [UNDEFINED] IS [IF]
14184
14185 CODE DEFER!
14186 MOV @R15+,2(R14)
14187 MOV @R15+,R14
14188 MOV @R13+,R0
14189 ENDCODE
14190
14191
14192 : IS
14193 STATE @
14194 IF  POSTPONE ['] POSTPONE DEFER! 
14195 ELSE ' DEFER! 
14196 THEN
14197 ; IMMEDIATE
14198 [THEN]
14199
14200 [UNDEFINED] >BODY [IF]
14201 CODE >BODY
14202 ADD #4,R14
14203 MOV @R13+,R0
14204 ENDCODE
14205 [THEN]
14206
14207
14208 CODE 20_US
14209 BEGIN
14210     BEGIN
14211         BIT #1,&$3C0
14212     0<> UNTIL
14213     BIC #1,&$3C0
14214     SUB #1,R14
14215 U< UNTIL
14216 MOV @R15+,R14
14217 MOV @R13+,R0
14218 ENDCODE
14219
14220 CODE TOP_LCD
14221     BIS.B #4,&$243
14222     BIT.B #1,&$241
14223 0= IF
14224     AND.B #$0F,R14
14225     MOV.B R14,&$222
14226     BIC.B #4,&$243
14227     MOV @R15+,R14
14228     MOV @R13+,R0
14229 THEN
14230     SUB #2,R15
14231     MOV R14,0(R15)
14232     BIC.B #4,&$243
14233     MOV.B &$220,R14
14234     AND.B #$0F,R14
14235     MOV @R13+,R0
14236 ENDCODE
14237
14238 CODE LCD_WRC
14239     BIS.B #2,&$243
14240 BW1 SUB #2,R15
14241     MOV R14,0(R15)
14242     RRUM #4,R14
14243     BIC.B #1,&$243
14244     BIS.B #$0F,&$224
14245 COLON
14246     TOP_LCD 2 20_US
14247     TOP_LCD 2 20_US 
14248 ;
14249
14250 CODE LCD_WRF
14251     BIC.B #2,&$243
14252     GOTO BW1
14253 ENDCODE
14254
14255 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
14256 : LCD_HOME $02 LCD_WRF 100 20_us ;
14257
14258
14259
14260 ASM WDT_INT
14261 ADD #2,R1
14262 BIT.B #$20,&$240
14263 0= IF
14264     CMP #19,&$3D6
14265     U< IF
14266         ADD #1,&$3D6
14267     THEN
14268 ELSE
14269     BIT.B #$40,&$240
14270     0= IF
14271         CMP #3,&$3D6
14272         U>= IF
14273            SUB #1,&$3D6
14274         THEN
14275     THEN
14276 THEN
14277 BW1
14278 MOV @R1+,R0
14279 ENDASM
14280
14281 ASM RC5_INT
14282 ADD #2,R1
14283 $1806 @ 16000 = [IF]
14284     MOV #1,&$3A0
14285 [THEN]
14286 $1806 @ 24000 = [IF]
14287     MOV #2,&$3A0
14288 [THEN]
14289 MOV #1778,R9
14290 MOV #14,R10
14291 BEGIN
14292 MOV #%1011100100,&$380
14293     RRUM    #1,R9
14294     MOV     R9,R8
14295     RRUM    #1,R8
14296     ADD     R9,R8
14297     BEGIN   CMP R8,&$390
14298     U>= UNTIL
14299     BIT.B   #4,&$200
14300     ADDC    R11,R11
14301     MOV.B   &$200,&$208
14302     BIC.B   #4,&$20C
14303     SUB     #1,R10
14304 0<> WHILE
14305     ADD R9,R8
14306     BEGIN
14307         MOV &$390,R9
14308         CMP R8,R9
14309         U>= IF
14310         BIC #$30,&$380
14311         GOTO BW1
14312         THEN
14313         BIT.B #4,&$20C
14314     0<> UNTIL
14315 REPEAT
14316 BIC #$30,&$380
14317 RLAM    #1,R11
14318 MOV.B   R11,R9
14319 RRUM    #2,R9
14320 BIT     #$4000,R11
14321 0= IF   BIS #$40,R9
14322 THEN
14323 RRUM    #3,R11
14324 XOR     @R1,R11
14325 BIT     #$400,R11
14326 0= ?GOTO BW1
14327 XOR #$400,0(R1)
14328 SUB #8,R15
14329 MOV R14,6(R15)
14330 MOV &$1DDC,4(R15)
14331 MOV #$10,&$1DDC
14332 MOV R9,0(R15)
14333 MOV #0,R14
14334 LO2HI
14335     LCD_CLEAR
14336     <# # #S #36 HOLD #>
14337     ['] LCD_WRC IS EMIT
14338     TYPE
14339     ['] EMIT >BODY IS EMIT
14340 HI2LO
14341 MOV @R15+,&$1DDC
14342 MOV @R15+,R14
14343 MOV @R1+,R0
14344 ENDASM
14345
14346 ASM BACKGROUND
14347 BEGIN
14348     CALL &$1814
14349     BIS &$180A,R2
14350 AGAIN
14351 ENDASM
14352
14353 ASM SYS_OUT
14354     MOV #WARM,R9
14355     ADD #4,R9
14356     MOV R9,R0
14357 ENDASM
14358
14359 CODE STOP
14360 BW1 MOV #$4000,R9
14361     ADD #4,R9
14362     MOV R9,-2(R9)
14363     MOV #WARM,R9
14364     MOV #SYS_OUT,2(R9)
14365     BIC.B #4,&$20A
14366     BIC.B #4,&$20C
14367     MOV #0,&$3C0
14368     MOV #0,&$340
14369     MOV #0,&$342
14370     MOV #COLD,R9
14371     MOV R9,&$FFDE
14372     MOV R9,&$FFEA
14373 COLON
14374 ECHO
14375 ." RC5toLCD is removed,"
14376 ."  type START to restart"
14377  WARM
14378 ;
14379
14380 CODE SYS_INIT
14381 MOV #%10_1101_0100,&$3C0
14382 $1806 @ 16000 = [IF]
14383     MOV #1,&$3E0
14384 [THEN]
14385 $1806 @ 24000 = [IF]
14386     MOV #2,&$3E0
14387 [THEN]
14388     MOV #19,&$3D2
14389 MOV #%0110_0000,&$3C6
14390     MOV #10,&$3D6
14391     BIS.B #$20,&$204
14392     BIS.B #$20,&$20A
14393     BIS.B #7,&$245
14394     BIC.B #7,&$247
14395     BIS.B #$0F,&$224
14396     BIC.B #$0F,&$226
14397     BIS.B #4,&$20A
14398     BIC.B #4,&$20C
14399     MOV #RC5_INT,&$FFDE
14400 MOV #%01_0001_0100,&$340
14401     MOV ##3276,&$352
14402     MOV #%10000,&$342
14403     MOV #WDT_INT,&$FFEA
14404 BIC #1,&$130
14405 BIS.B #3,&$20D
14406 MOV &$1808,R8
14407 CMP #4,R8
14408 0= ?GOTO BW1
14409 COLON
14410     #1000 20_US
14411     %011 TOP_LCD
14412     #205 20_US
14413     %011 TOP_LCD
14414     #5 20_US
14415     %011 TOP_LCD
14416     #2 20_US
14417     %010 TOP_LCD
14418     #2 20_US
14419     %00101000 LCD_WRF
14420     %1000 LCD_WRF
14421     LCD_CLEAR
14422     %0110 LCD_WRF
14423     %1100 LCD_WRF
14424     LCD_CLEAR
14425     ['] LCD_HOME IS CR
14426     ['] LCD_WRC  IS EMIT
14427     CR ." I love you"
14428     ['] CR >BODY IS CR
14429     ['] EMIT >BODY IS EMIT
14430     ." RC5toLCD is running. Type STOP to quit"
14431     PWR_STATE ABORT
14432 ;
14433
14434 CODE START
14435 MOV #$4000,R9
14436 MOV #BACKGROUND,2(R9)
14437 MOV #WARM,R9
14438 MOV #SYS_INIT,2(R9)
14439 MOV R9,R0
14440 ENDCODE 
14441 PWR_STATE
14442
14443 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
14444
14445 MARKER {RC5TOLCD}
14446
14447 [UNDEFINED] @ [IF]
14448 CODE @
14449 MOV @R14,R14
14450 MOV @R13+,R0
14451 ENDCODE
14452 [THEN]
14453
14454 [UNDEFINED] CONSTANT [IF]
14455 : CONSTANT 
14456 CREATE
14457 HI2LO
14458 MOV R14,-2(R10)
14459 MOV @R15+,R14
14460 MOV @R1+,R13
14461 MOV @R13+,R0
14462 ENDCODE
14463 [THEN]
14464
14465 [UNDEFINED] STATE [IF]
14466 $1DBE CONSTANT STATE
14467 [THEN]
14468
14469 [UNDEFINED] = [IF]
14470 CODE =
14471 SUB @R15+,R14
14472 0<> IF
14473     AND #0,R14
14474     MOV @R13+,R0
14475 THEN
14476 XOR #-1,R14
14477 MOV @R13+,R0
14478 ENDCODE
14479 [THEN]
14480
14481 [UNDEFINED] IF [IF]
14482 CODE IF
14483 SUB #2,R15
14484 MOV R14,0(R15)
14485 MOV &$1DC6,R14
14486 ADD #4,&$1DC6
14487 MOV #$4042,0(R14)
14488 ADD #2,R14
14489 MOV @R13+,R0
14490 ENDCODE IMMEDIATE
14491
14492 CODE THEN
14493 MOV &$1DC6,0(R14)
14494 MOV @R15+,R14
14495 MOV @R13+,R0
14496 ENDCODE IMMEDIATE
14497 [THEN]
14498
14499 [UNDEFINED] ELSE [IF]
14500 CODE ELSE
14501 ADD #4,&$1DC6
14502 MOV &$1DC6,R10
14503 MOV #$403E,-4(R10)
14504 MOV R10,0(R14)
14505 SUB #2,R10
14506 MOV R10,R14
14507 MOV @R13+,R0
14508 ENDCODE IMMEDIATE
14509 [THEN]
14510
14511 [UNDEFINED] IS [IF]
14512
14513 CODE DEFER!
14514 MOV @R15+,2(R14)
14515 MOV @R15+,R14
14516 MOV @R13+,R0
14517 ENDCODE
14518
14519
14520 : IS
14521 STATE @
14522 IF  POSTPONE ['] POSTPONE DEFER! 
14523 ELSE ' DEFER! 
14524 THEN
14525 ; IMMEDIATE
14526 [THEN]
14527
14528 [UNDEFINED] >BODY [IF]
14529 CODE >BODY
14530 ADD #4,R14
14531 MOV @R13+,R0
14532 ENDCODE
14533 [THEN]
14534
14535
14536 CODE 20_US
14537 BEGIN
14538     BEGIN
14539         BIT #1,&$3C0
14540     0<> UNTIL
14541     BIC #1,&$3C0
14542     SUB #1,R14
14543 U< UNTIL
14544 MOV @R15+,R14
14545 MOV @R13+,R0
14546 ENDCODE
14547
14548 CODE TOP_LCD
14549     BIS.B #4,&$243
14550     BIT.B #1,&$241
14551 0= IF
14552     AND.B #$0F,R14
14553     MOV.B R14,&$222
14554     BIC.B #4,&$243
14555     MOV @R15+,R14
14556     MOV @R13+,R0
14557 THEN
14558     SUB #2,R15
14559     MOV R14,0(R15)
14560     BIC.B #4,&$243
14561     MOV.B &$220,R14
14562     AND.B #$0F,R14
14563     MOV @R13+,R0
14564 ENDCODE
14565
14566 CODE LCD_WRC
14567     BIS.B #2,&$243
14568 BW1 SUB #2,R15
14569     MOV R14,0(R15)
14570     RRUM #4,R14
14571     BIC.B #1,&$243
14572     BIS.B #$0F,&$224
14573 COLON
14574     TOP_LCD 2 20_US
14575     TOP_LCD 2 20_US 
14576 ;
14577
14578 CODE LCD_WRF
14579     BIC.B #2,&$243
14580     GOTO BW1
14581 ENDCODE
14582
14583 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
14584 : LCD_HOME $02 LCD_WRF 100 20_us ;
14585
14586
14587
14588 ASM WDT_INT
14589 ADD #2,R1
14590 BIT.B #$20,&$240
14591 0= IF
14592     CMP #19,&$3D6
14593     U< IF
14594         ADD #1,&$3D6
14595     THEN
14596 ELSE
14597     BIT.B #$40,&$240
14598     0= IF
14599         CMP #3,&$3D6
14600         U>= IF
14601            SUB #1,&$3D6
14602         THEN
14603     THEN
14604 THEN
14605 BW1
14606 MOV @R1+,R0
14607 ENDASM
14608
14609 ASM RC5_INT
14610 ADD #2,R1
14611 $1806 @ 16000 = [IF]
14612     MOV #1,&$3A0
14613 [THEN]
14614 $1806 @ 24000 = [IF]
14615     MOV #2,&$3A0
14616 [THEN]
14617 MOV #1778,R9
14618 MOV #14,R10
14619 BEGIN
14620 MOV #%1011100100,&$380
14621     RRUM    #1,R9
14622     MOV     R9,R8
14623     RRUM    #1,R8
14624     ADD     R9,R8
14625     BEGIN   CMP R8,&$390
14626     U>= UNTIL
14627     BIT.B   #4,&$200
14628     ADDC    R11,R11
14629     MOV.B   &$200,&$208
14630     BIC.B   #4,&$20C
14631     SUB     #1,R10
14632 0<> WHILE
14633     ADD R9,R8
14634     BEGIN
14635         MOV &$390,R9
14636         CMP R8,R9
14637         U>= IF
14638         BIC #$30,&$380
14639         GOTO BW1
14640         THEN
14641         BIT.B #4,&$20C
14642     0<> UNTIL
14643 REPEAT
14644 BIC #$30,&$380
14645 RLAM    #1,R11
14646 MOV.B   R11,R9
14647 RRUM    #2,R9
14648 BIT     #$4000,R11
14649 0= IF   BIS #$40,R9
14650 THEN
14651 RRUM    #3,R11
14652 XOR     @R1,R11
14653 BIT     #$400,R11
14654 0= ?GOTO BW1
14655 XOR #$400,0(R1)
14656 SUB #8,R15
14657 MOV R14,6(R15)
14658 MOV &$1DDC,4(R15)
14659 MOV #$10,&$1DDC
14660 MOV R9,0(R15)
14661 MOV #0,R14
14662 LO2HI
14663     LCD_CLEAR
14664     <# # #S #36 HOLD #>
14665     ['] LCD_WRC IS EMIT
14666     TYPE
14667     ['] EMIT >BODY IS EMIT
14668 HI2LO
14669 MOV @R15+,&$1DDC
14670 MOV @R15+,R14
14671 MOV @R1+,R0
14672 ENDASM
14673
14674 ASM BACKGROUND
14675 BEGIN
14676     CALL &$1814
14677     BIS &$180A,R2
14678 AGAIN
14679 ENDASM
14680
14681 ASM SYS_OUT
14682     MOV #WARM,R9
14683     ADD #4,R9
14684     MOV R9,R0
14685 ENDASM
14686
14687 CODE STOP
14688 BW1 MOV #$4000,R9
14689     ADD #4,R9
14690     MOV R9,-2(R9)
14691     MOV #WARM,R9
14692     MOV #SYS_OUT,2(R9)
14693     BIC.B #4,&$20A
14694     BIC.B #4,&$20C
14695     MOV #0,&$3C0
14696     MOV #0,&$340
14697     MOV #0,&$342
14698     MOV #COLD,R9
14699     MOV R9,&$FFDE
14700     MOV R9,&$FFEA
14701 COLON
14702 ECHO
14703 ." RC5toLCD is removed,"
14704 ."  type START to restart"
14705  WARM
14706 ;
14707
14708 CODE SYS_INIT
14709 MOV #%10_1101_0100,&$3C0
14710 $1806 @ 16000 = [IF]
14711     MOV #1,&$3E0
14712 [THEN]
14713 $1806 @ 24000 = [IF]
14714     MOV #2,&$3E0
14715 [THEN]
14716     MOV #19,&$3D2
14717 MOV #%0110_0000,&$3C6
14718     MOV #10,&$3D6
14719     BIS.B #$20,&$204
14720     BIS.B #$20,&$20A
14721     BIS.B #7,&$245
14722     BIC.B #7,&$247
14723     BIS.B #$0F,&$224
14724     BIC.B #$0F,&$226
14725     BIS.B #4,&$20A
14726     BIC.B #4,&$20C
14727     MOV #RC5_INT,&$FFDE
14728 MOV #%01_0001_0100,&$340
14729     MOV ##3276,&$352
14730     MOV #%10000,&$342
14731     MOV #WDT_INT,&$FFEA
14732 BIC #1,&$130
14733 BIS.B #3,&$20D
14734 MOV &$1808,R8
14735 CMP #4,R8
14736 0= ?GOTO BW1
14737 COLON
14738     #1000 20_US
14739     %011 TOP_LCD
14740     #205 20_US
14741     %011 TOP_LCD
14742     #5 20_US
14743     %011 TOP_LCD
14744     #2 20_US
14745     %010 TOP_LCD
14746     #2 20_US
14747     %00101000 LCD_WRF
14748     %1000 LCD_WRF
14749     LCD_CLEAR
14750     %0110 LCD_WRF
14751     %1100 LCD_WRF
14752     LCD_CLEAR
14753     ['] LCD_HOME IS CR
14754     ['] LCD_WRC  IS EMIT
14755     CR ." I love you"
14756     ['] CR >BODY IS CR
14757     ['] EMIT >BODY IS EMIT
14758     ." RC5toLCD is running. Type STOP to quit"
14759     PWR_STATE ABORT
14760 ;
14761
14762 CODE START
14763 MOV #$4000,R9
14764 MOV #BACKGROUND,2(R9)
14765 MOV #WARM,R9
14766 MOV #SYS_INIT,2(R9)
14767 MOV R9,R0
14768 ENDCODE 
14769 PWR_STATE
14770
14771 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
14772
14773 MARKER {RC5TOLCD}
14774
14775 [UNDEFINED] @ [IF]
14776 CODE @
14777 MOV @R14,R14
14778 MOV @R13+,R0
14779 ENDCODE
14780 [THEN]
14781
14782 [UNDEFINED] CONSTANT [IF]
14783 : CONSTANT 
14784 CREATE
14785 HI2LO
14786 MOV R14,-2(R10)
14787 MOV @R15+,R14
14788 MOV @R1+,R13
14789 MOV @R13+,R0
14790 ENDCODE
14791 [THEN]
14792
14793 [UNDEFINED] STATE [IF]
14794 $1DBE CONSTANT STATE
14795 [THEN]
14796
14797 [UNDEFINED] = [IF]
14798 CODE =
14799 SUB @R15+,R14
14800 0<> IF
14801     AND #0,R14
14802     MOV @R13+,R0
14803 THEN
14804 XOR #-1,R14
14805 MOV @R13+,R0
14806 ENDCODE
14807 [THEN]
14808
14809 [UNDEFINED] IF [IF]
14810 CODE IF
14811 SUB #2,R15
14812 MOV R14,0(R15)
14813 MOV &$1DC6,R14
14814 ADD #4,&$1DC6
14815 MOV #$4042,0(R14)
14816 ADD #2,R14
14817 MOV @R13+,R0
14818 ENDCODE IMMEDIATE
14819
14820 CODE THEN
14821 MOV &$1DC6,0(R14)
14822 MOV @R15+,R14
14823 MOV @R13+,R0
14824 ENDCODE IMMEDIATE
14825 [THEN]
14826
14827 [UNDEFINED] ELSE [IF]
14828 CODE ELSE
14829 ADD #4,&$1DC6
14830 MOV &$1DC6,R10
14831 MOV #$403E,-4(R10)
14832 MOV R10,0(R14)
14833 SUB #2,R10
14834 MOV R10,R14
14835 MOV @R13+,R0
14836 ENDCODE IMMEDIATE
14837 [THEN]
14838
14839 [UNDEFINED] IS [IF]
14840
14841 CODE DEFER!
14842 MOV @R15+,2(R14)
14843 MOV @R15+,R14
14844 MOV @R13+,R0
14845 ENDCODE
14846
14847
14848 : IS
14849 STATE @
14850 IF  POSTPONE ['] POSTPONE DEFER! 
14851 ELSE ' DEFER! 
14852 THEN
14853 ; IMMEDIATE
14854 [THEN]
14855
14856 [UNDEFINED] >BODY [IF]
14857 CODE >BODY
14858 ADD #4,R14
14859 MOV @R13+,R0
14860 ENDCODE
14861 [THEN]
14862
14863
14864 CODE 20_US
14865 BEGIN
14866     BEGIN
14867         BIT #1,&$3C0
14868     0<> UNTIL
14869     BIC #1,&$3C0
14870     SUB #1,R14
14871 U< UNTIL
14872 MOV @R15+,R14
14873 MOV @R13+,R0
14874 ENDCODE
14875
14876 CODE TOP_LCD
14877     BIS.B #4,&$243
14878     BIT.B #1,&$241
14879 0= IF
14880     AND.B #$0F,R14
14881     MOV.B R14,&$222
14882     BIC.B #4,&$243
14883     MOV @R15+,R14
14884     MOV @R13+,R0
14885 THEN
14886     SUB #2,R15
14887     MOV R14,0(R15)
14888     BIC.B #4,&$243
14889     MOV.B &$220,R14
14890     AND.B #$0F,R14
14891     MOV @R13+,R0
14892 ENDCODE
14893
14894 CODE LCD_WRC
14895     BIS.B #2,&$243
14896 BW1 SUB #2,R15
14897     MOV R14,0(R15)
14898     RRUM #4,R14
14899     BIC.B #1,&$243
14900     BIS.B #$0F,&$224
14901 COLON
14902     TOP_LCD 2 20_US
14903     TOP_LCD 2 20_US 
14904 ;
14905
14906 CODE LCD_WRF
14907     BIC.B #2,&$243
14908     GOTO BW1
14909 ENDCODE
14910
14911 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
14912 : LCD_HOME $02 LCD_WRF 100 20_us ;
14913
14914
14915
14916 ASM WDT_INT
14917 ADD #2,R1
14918 BIT.B #$20,&$240
14919 0= IF
14920     CMP #19,&$3D6
14921     U< IF
14922         ADD #1,&$3D6
14923     THEN
14924 ELSE
14925     BIT.B #$40,&$240
14926     0= IF
14927         CMP #3,&$3D6
14928         U>= IF
14929            SUB #1,&$3D6
14930         THEN
14931     THEN
14932 THEN
14933 BW1
14934 MOV @R1+,R0
14935 ENDASM
14936
14937 ASM RC5_INT
14938 ADD #2,R1
14939 $1806 @ 16000 = [IF]
14940     MOV #1,&$3A0
14941 [THEN]
14942 $1806 @ 24000 = [IF]
14943     MOV #2,&$3A0
14944 [THEN]
14945 MOV #1778,R9
14946 MOV #14,R10
14947 BEGIN
14948 MOV #%1011100100,&$380
14949     RRUM    #1,R9
14950     MOV     R9,R8
14951     RRUM    #1,R8
14952     ADD     R9,R8
14953     BEGIN   CMP R8,&$390
14954     U>= UNTIL
14955     BIT.B   #4,&$200
14956     ADDC    R11,R11
14957     MOV.B   &$200,&$208
14958     BIC.B   #4,&$20C
14959     SUB     #1,R10
14960 0<> WHILE
14961     ADD R9,R8
14962     BEGIN
14963         MOV &$390,R9
14964         CMP R8,R9
14965         U>= IF
14966         BIC #$30,&$380
14967         GOTO BW1
14968         THEN
14969         BIT.B #4,&$20C
14970     0<> UNTIL
14971 REPEAT
14972 BIC #$30,&$380
14973 RLAM    #1,R11
14974 MOV.B   R11,R9
14975 RRUM    #2,R9
14976 BIT     #$4000,R11
14977 0= IF   BIS #$40,R9
14978 THEN
14979 RRUM    #3,R11
14980 XOR     @R1,R11
14981 BIT     #$400,R11
14982 0= ?GOTO BW1
14983 XOR #$400,0(R1)
14984 SUB #8,R15
14985 MOV R14,6(R15)
14986 MOV &$1DDC,4(R15)
14987 MOV #$10,&$1DDC
14988 MOV R9,0(R15)
14989 MOV #0,R14
14990 LO2HI
14991     LCD_CLEAR
14992     <# # #S #36 HOLD #>
14993     ['] LCD_WRC IS EMIT
14994     TYPE
14995     ['] EMIT >BODY IS EMIT
14996 HI2LO
14997 MOV @R15+,&$1DDC
14998 MOV @R15+,R14
14999 MOV @R1+,R0
15000 ENDASM
15001
15002 ASM BACKGROUND
15003 BEGIN
15004     CALL &$1814
15005     BIS &$180A,R2
15006 AGAIN
15007 ENDASM
15008
15009 ASM SYS_OUT
15010     MOV #WARM,R9
15011     ADD #4,R9
15012     MOV R9,R0
15013 ENDASM
15014
15015 CODE STOP
15016 BW1 MOV #$4000,R9
15017     ADD #4,R9
15018     MOV R9,-2(R9)
15019     MOV #WARM,R9
15020     MOV #SYS_OUT,2(R9)
15021     BIC.B #4,&$20A
15022     BIC.B #4,&$20C
15023     MOV #0,&$3C0
15024     MOV #0,&$340
15025     MOV #0,&$342
15026     MOV #COLD,R9
15027     MOV R9,&$FFDE
15028     MOV R9,&$FFEA
15029 COLON
15030 ECHO
15031 ." RC5toLCD is removed,"
15032 ."  type START to restart"
15033  WARM
15034 ;
15035
15036 CODE SYS_INIT
15037 MOV #%10_1101_0100,&$3C0
15038 $1806 @ 16000 = [IF]
15039     MOV #1,&$3E0
15040 [THEN]
15041 $1806 @ 24000 = [IF]
15042     MOV #2,&$3E0
15043 [THEN]
15044     MOV #19,&$3D2
15045 MOV #%0110_0000,&$3C6
15046     MOV #10,&$3D6
15047     BIS.B #$20,&$204
15048     BIS.B #$20,&$20A
15049     BIS.B #7,&$245
15050     BIC.B #7,&$247
15051     BIS.B #$0F,&$224
15052     BIC.B #$0F,&$226
15053     BIS.B #4,&$20A
15054     BIC.B #4,&$20C
15055     MOV #RC5_INT,&$FFDE
15056 MOV #%01_0001_0100,&$340
15057     MOV ##3276,&$352
15058     MOV #%10000,&$342
15059     MOV #WDT_INT,&$FFEA
15060 BIC #1,&$130
15061 BIS.B #3,&$20D
15062 MOV &$1808,R8
15063 CMP #4,R8
15064 0= ?GOTO BW1
15065 COLON
15066     #1000 20_US
15067     %011 TOP_LCD
15068     #205 20_US
15069     %011 TOP_LCD
15070     #5 20_US
15071     %011 TOP_LCD
15072     #2 20_US
15073     %010 TOP_LCD
15074     #2 20_US
15075     %00101000 LCD_WRF
15076     %1000 LCD_WRF
15077     LCD_CLEAR
15078     %0110 LCD_WRF
15079     %1100 LCD_WRF
15080     LCD_CLEAR
15081     ['] LCD_HOME IS CR
15082     ['] LCD_WRC  IS EMIT
15083     CR ." I love you"
15084     ['] CR >BODY IS CR
15085     ['] EMIT >BODY IS EMIT
15086     ." RC5toLCD is running. Type STOP to quit"
15087     PWR_STATE ABORT
15088 ;
15089
15090 CODE START
15091 MOV #$4000,R9
15092 MOV #BACKGROUND,2(R9)
15093 MOV #WARM,R9
15094 MOV #SYS_INIT,2(R9)
15095 MOV R9,R0
15096 ENDCODE 
15097 PWR_STATE
15098
15099 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
15100
15101 MARKER {RC5TOLCD}
15102
15103 [UNDEFINED] @ [IF]
15104 CODE @
15105 MOV @R14,R14
15106 MOV @R13+,R0
15107 ENDCODE
15108 [THEN]
15109
15110 [UNDEFINED] CONSTANT [IF]
15111 : CONSTANT 
15112 CREATE
15113 HI2LO
15114 MOV R14,-2(R10)
15115 MOV @R15+,R14
15116 MOV @R1+,R13
15117 MOV @R13+,R0
15118 ENDCODE
15119 [THEN]
15120
15121 [UNDEFINED] STATE [IF]
15122 $1DBE CONSTANT STATE
15123 [THEN]
15124
15125 [UNDEFINED] = [IF]
15126 CODE =
15127 SUB @R15+,R14
15128 0<> IF
15129     AND #0,R14
15130     MOV @R13+,R0
15131 THEN
15132 XOR #-1,R14
15133 MOV @R13+,R0
15134 ENDCODE
15135 [THEN]
15136
15137 [UNDEFINED] IF [IF]
15138 CODE IF
15139 SUB #2,R15
15140 MOV R14,0(R15)
15141 MOV &$1DC6,R14
15142 ADD #4,&$1DC6
15143 MOV #$4042,0(R14)
15144 ADD #2,R14
15145 MOV @R13+,R0
15146 ENDCODE IMMEDIATE
15147
15148 CODE THEN
15149 MOV &$1DC6,0(R14)
15150 MOV @R15+,R14
15151 MOV @R13+,R0
15152 ENDCODE IMMEDIATE
15153 [THEN]
15154
15155 [UNDEFINED] ELSE [IF]
15156 CODE ELSE
15157 ADD #4,&$1DC6
15158 MOV &$1DC6,R10
15159 MOV #$403E,-4(R10)
15160 MOV R10,0(R14)
15161 SUB #2,R10
15162 MOV R10,R14
15163 MOV @R13+,R0
15164 ENDCODE IMMEDIATE
15165 [THEN]
15166
15167 [UNDEFINED] IS [IF]
15168
15169 CODE DEFER!
15170 MOV @R15+,2(R14)
15171 MOV @R15+,R14
15172 MOV @R13+,R0
15173 ENDCODE
15174
15175
15176 : IS
15177 STATE @
15178 IF  POSTPONE ['] POSTPONE DEFER! 
15179 ELSE ' DEFER! 
15180 THEN
15181 ; IMMEDIATE
15182 [THEN]
15183
15184 [UNDEFINED] >BODY [IF]
15185 CODE >BODY
15186 ADD #4,R14
15187 MOV @R13+,R0
15188 ENDCODE
15189 [THEN]
15190
15191
15192 CODE 20_US
15193 BEGIN
15194     BEGIN
15195         BIT #1,&$3C0
15196     0<> UNTIL
15197     BIC #1,&$3C0
15198     SUB #1,R14
15199 U< UNTIL
15200 MOV @R15+,R14
15201 MOV @R13+,R0
15202 ENDCODE
15203
15204 CODE TOP_LCD
15205     BIS.B #4,&$243
15206     BIT.B #1,&$241
15207 0= IF
15208     AND.B #$0F,R14
15209     MOV.B R14,&$222
15210     BIC.B #4,&$243
15211     MOV @R15+,R14
15212     MOV @R13+,R0
15213 THEN
15214     SUB #2,R15
15215     MOV R14,0(R15)
15216     BIC.B #4,&$243
15217     MOV.B &$220,R14
15218     AND.B #$0F,R14
15219     MOV @R13+,R0
15220 ENDCODE
15221
15222 CODE LCD_WRC
15223     BIS.B #2,&$243
15224 BW1 SUB #2,R15
15225     MOV R14,0(R15)
15226     RRUM #4,R14
15227     BIC.B #1,&$243
15228     BIS.B #$0F,&$224
15229 COLON
15230     TOP_LCD 2 20_US
15231     TOP_LCD 2 20_US 
15232 ;
15233
15234 CODE LCD_WRF
15235     BIC.B #2,&$243
15236     GOTO BW1
15237 ENDCODE
15238
15239 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
15240 : LCD_HOME $02 LCD_WRF 100 20_us ;
15241
15242
15243
15244 ASM WDT_INT
15245 ADD #2,R1
15246 BIT.B #$20,&$240
15247 0= IF
15248     CMP #19,&$3D6
15249     U< IF
15250         ADD #1,&$3D6
15251     THEN
15252 ELSE
15253     BIT.B #$40,&$240
15254     0= IF
15255         CMP #3,&$3D6
15256         U>= IF
15257            SUB #1,&$3D6
15258         THEN
15259     THEN
15260 THEN
15261 BW1
15262 MOV @R1+,R0
15263 ENDASM
15264
15265 ASM RC5_INT
15266 ADD #2,R1
15267 $1806 @ 16000 = [IF]
15268     MOV #1,&$3A0
15269 [THEN]
15270 $1806 @ 24000 = [IF]
15271     MOV #2,&$3A0
15272 [THEN]
15273 MOV #1778,R9
15274 MOV #14,R10
15275 BEGIN
15276 MOV #%1011100100,&$380
15277     RRUM    #1,R9
15278     MOV     R9,R8
15279     RRUM    #1,R8
15280     ADD     R9,R8
15281     BEGIN   CMP R8,&$390
15282     U>= UNTIL
15283     BIT.B   #4,&$200
15284     ADDC    R11,R11
15285     MOV.B   &$200,&$208
15286     BIC.B   #4,&$20C
15287     SUB     #1,R10
15288 0<> WHILE
15289     ADD R9,R8
15290     BEGIN
15291         MOV &$390,R9
15292         CMP R8,R9
15293         U>= IF
15294         BIC #$30,&$380
15295         GOTO BW1
15296         THEN
15297         BIT.B #4,&$20C
15298     0<> UNTIL
15299 REPEAT
15300 BIC #$30,&$380
15301 RLAM    #1,R11
15302 MOV.B   R11,R9
15303 RRUM    #2,R9
15304 BIT     #$4000,R11
15305 0= IF   BIS #$40,R9
15306 THEN
15307 RRUM    #3,R11
15308 XOR     @R1,R11
15309 BIT     #$400,R11
15310 0= ?GOTO BW1
15311 XOR #$400,0(R1)
15312 SUB #8,R15
15313 MOV R14,6(R15)
15314 MOV &$1DDC,4(R15)
15315 MOV #$10,&$1DDC
15316 MOV R9,0(R15)
15317 MOV #0,R14
15318 LO2HI
15319     LCD_CLEAR
15320     <# # #S #36 HOLD #>
15321     ['] LCD_WRC IS EMIT
15322     TYPE
15323     ['] EMIT >BODY IS EMIT
15324 HI2LO
15325 MOV @R15+,&$1DDC
15326 MOV @R15+,R14
15327 MOV @R1+,R0
15328 ENDASM
15329
15330 ASM BACKGROUND
15331 BEGIN
15332     CALL &$1814
15333     BIS &$180A,R2
15334 AGAIN
15335 ENDASM
15336
15337 ASM SYS_OUT
15338     MOV #WARM,R9
15339     ADD #4,R9
15340     MOV R9,R0
15341 ENDASM
15342
15343 CODE STOP
15344 BW1 MOV #$4000,R9
15345     ADD #4,R9
15346     MOV R9,-2(R9)
15347     MOV #WARM,R9
15348     MOV #SYS_OUT,2(R9)
15349     BIC.B #4,&$20A
15350     BIC.B #4,&$20C
15351     MOV #0,&$3C0
15352     MOV #0,&$340
15353     MOV #0,&$342
15354     MOV #COLD,R9
15355     MOV R9,&$FFDE
15356     MOV R9,&$FFEA
15357 COLON
15358 ECHO
15359 ." RC5toLCD is removed,"
15360 ."  type START to restart"
15361  WARM
15362 ;
15363
15364 CODE SYS_INIT
15365 MOV #%10_1101_0100,&$3C0
15366 $1806 @ 16000 = [IF]
15367     MOV #1,&$3E0
15368 [THEN]
15369 $1806 @ 24000 = [IF]
15370     MOV #2,&$3E0
15371 [THEN]
15372     MOV #19,&$3D2
15373 MOV #%0110_0000,&$3C6
15374     MOV #10,&$3D6
15375     BIS.B #$20,&$204
15376     BIS.B #$20,&$20A
15377     BIS.B #7,&$245
15378     BIC.B #7,&$247
15379     BIS.B #$0F,&$224
15380     BIC.B #$0F,&$226
15381     BIS.B #4,&$20A
15382     BIC.B #4,&$20C
15383     MOV #RC5_INT,&$FFDE
15384 MOV #%01_0001_0100,&$340
15385     MOV ##3276,&$352
15386     MOV #%10000,&$342
15387     MOV #WDT_INT,&$FFEA
15388 BIC #1,&$130
15389 BIS.B #3,&$20D
15390 MOV &$1808,R8
15391 CMP #4,R8
15392 0= ?GOTO BW1
15393 COLON
15394     #1000 20_US
15395     %011 TOP_LCD
15396     #205 20_US
15397     %011 TOP_LCD
15398     #5 20_US
15399     %011 TOP_LCD
15400     #2 20_US
15401     %010 TOP_LCD
15402     #2 20_US
15403     %00101000 LCD_WRF
15404     %1000 LCD_WRF
15405     LCD_CLEAR
15406     %0110 LCD_WRF
15407     %1100 LCD_WRF
15408     LCD_CLEAR
15409     ['] LCD_HOME IS CR
15410     ['] LCD_WRC  IS EMIT
15411     CR ." I love you"
15412     ['] CR >BODY IS CR
15413     ['] EMIT >BODY IS EMIT
15414     ." RC5toLCD is running. Type STOP to quit"
15415     PWR_STATE ABORT
15416 ;
15417
15418 CODE START
15419 MOV #$4000,R9
15420 MOV #BACKGROUND,2(R9)
15421 MOV #WARM,R9
15422 MOV #SYS_INIT,2(R9)
15423 MOV R9,R0
15424 ENDCODE 
15425 PWR_STATE
15426
15427 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
15428
15429 MARKER {RC5TOLCD}
15430
15431 [UNDEFINED] @ [IF]
15432 CODE @
15433 MOV @R14,R14
15434 MOV @R13+,R0
15435 ENDCODE
15436 [THEN]
15437
15438 [UNDEFINED] CONSTANT [IF]
15439 : CONSTANT 
15440 CREATE
15441 HI2LO
15442 MOV R14,-2(R10)
15443 MOV @R15+,R14
15444 MOV @R1+,R13
15445 MOV @R13+,R0
15446 ENDCODE
15447 [THEN]
15448
15449 [UNDEFINED] STATE [IF]
15450 $1DBE CONSTANT STATE
15451 [THEN]
15452
15453 [UNDEFINED] = [IF]
15454 CODE =
15455 SUB @R15+,R14
15456 0<> IF
15457     AND #0,R14
15458     MOV @R13+,R0
15459 THEN
15460 XOR #-1,R14
15461 MOV @R13+,R0
15462 ENDCODE
15463 [THEN]
15464
15465 [UNDEFINED] IF [IF]
15466 CODE IF
15467 SUB #2,R15
15468 MOV R14,0(R15)
15469 MOV &$1DC6,R14
15470 ADD #4,&$1DC6
15471 MOV #$4042,0(R14)
15472 ADD #2,R14
15473 MOV @R13+,R0
15474 ENDCODE IMMEDIATE
15475
15476 CODE THEN
15477 MOV &$1DC6,0(R14)
15478 MOV @R15+,R14
15479 MOV @R13+,R0
15480 ENDCODE IMMEDIATE
15481 [THEN]
15482
15483 [UNDEFINED] ELSE [IF]
15484 CODE ELSE
15485 ADD #4,&$1DC6
15486 MOV &$1DC6,R10
15487 MOV #$403E,-4(R10)
15488 MOV R10,0(R14)
15489 SUB #2,R10
15490 MOV R10,R14
15491 MOV @R13+,R0
15492 ENDCODE IMMEDIATE
15493 [THEN]
15494
15495 [UNDEFINED] IS [IF]
15496
15497 CODE DEFER!
15498 MOV @R15+,2(R14)
15499 MOV @R15+,R14
15500 MOV @R13+,R0
15501 ENDCODE
15502
15503
15504 : IS
15505 STATE @
15506 IF  POSTPONE ['] POSTPONE DEFER! 
15507 ELSE ' DEFER! 
15508 THEN
15509 ; IMMEDIATE
15510 [THEN]
15511
15512 [UNDEFINED] >BODY [IF]
15513 CODE >BODY
15514 ADD #4,R14
15515 MOV @R13+,R0
15516 ENDCODE
15517 [THEN]
15518
15519
15520 CODE 20_US
15521 BEGIN
15522     BEGIN
15523         BIT #1,&$3C0
15524     0<> UNTIL
15525     BIC #1,&$3C0
15526     SUB #1,R14
15527 U< UNTIL
15528 MOV @R15+,R14
15529 MOV @R13+,R0
15530 ENDCODE
15531
15532 CODE TOP_LCD
15533     BIS.B #4,&$243
15534     BIT.B #1,&$241
15535 0= IF
15536     AND.B #$0F,R14
15537     MOV.B R14,&$222
15538     BIC.B #4,&$243
15539     MOV @R15+,R14
15540     MOV @R13+,R0
15541 THEN
15542     SUB #2,R15
15543     MOV R14,0(R15)
15544     BIC.B #4,&$243
15545     MOV.B &$220,R14
15546     AND.B #$0F,R14
15547     MOV @R13+,R0
15548 ENDCODE
15549
15550 CODE LCD_WRC
15551     BIS.B #2,&$243
15552 BW1 SUB #2,R15
15553     MOV R14,0(R15)
15554     RRUM #4,R14
15555     BIC.B #1,&$243
15556     BIS.B #$0F,&$224
15557 COLON
15558     TOP_LCD 2 20_US
15559     TOP_LCD 2 20_US 
15560 ;
15561
15562 CODE LCD_WRF
15563     BIC.B #2,&$243
15564     GOTO BW1
15565 ENDCODE
15566
15567 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
15568 : LCD_HOME $02 LCD_WRF 100 20_us ;
15569
15570
15571
15572 ASM WDT_INT
15573 ADD #2,R1
15574 BIT.B #$20,&$240
15575 0= IF
15576     CMP #19,&$3D6
15577     U< IF
15578         ADD #1,&$3D6
15579     THEN
15580 ELSE
15581     BIT.B #$40,&$240
15582     0= IF
15583         CMP #3,&$3D6
15584         U>= IF
15585            SUB #1,&$3D6
15586         THEN
15587     THEN
15588 THEN
15589 BW1
15590 MOV @R1+,R0
15591 ENDASM
15592
15593 ASM RC5_INT
15594 ADD #2,R1
15595 $1806 @ 16000 = [IF]
15596     MOV #1,&$3A0
15597 [THEN]
15598 $1806 @ 24000 = [IF]
15599     MOV #2,&$3A0
15600 [THEN]
15601 MOV #1778,R9
15602 MOV #14,R10
15603 BEGIN
15604 MOV #%1011100100,&$380
15605     RRUM    #1,R9
15606     MOV     R9,R8
15607     RRUM    #1,R8
15608     ADD     R9,R8
15609     BEGIN   CMP R8,&$390
15610     U>= UNTIL
15611     BIT.B   #4,&$200
15612     ADDC    R11,R11
15613     MOV.B   &$200,&$208
15614     BIC.B   #4,&$20C
15615     SUB     #1,R10
15616 0<> WHILE
15617     ADD R9,R8
15618     BEGIN
15619         MOV &$390,R9
15620         CMP R8,R9
15621         U>= IF
15622         BIC #$30,&$380
15623         GOTO BW1
15624         THEN
15625         BIT.B #4,&$20C
15626     0<> UNTIL
15627 REPEAT
15628 BIC #$30,&$380
15629 RLAM    #1,R11
15630 MOV.B   R11,R9
15631 RRUM    #2,R9
15632 BIT     #$4000,R11
15633 0= IF   BIS #$40,R9
15634 THEN
15635 RRUM    #3,R11
15636 XOR     @R1,R11
15637 BIT     #$400,R11
15638 0= ?GOTO BW1
15639 XOR #$400,0(R1)
15640 SUB #8,R15
15641 MOV R14,6(R15)
15642 MOV &$1DDC,4(R15)
15643 MOV #$10,&$1DDC
15644 MOV R9,0(R15)
15645 MOV #0,R14
15646 LO2HI
15647     LCD_CLEAR
15648     <# # #S #36 HOLD #>
15649     ['] LCD_WRC IS EMIT
15650     TYPE
15651     ['] EMIT >BODY IS EMIT
15652 HI2LO
15653 MOV @R15+,&$1DDC
15654 MOV @R15+,R14
15655 MOV @R1+,R0
15656 ENDASM
15657
15658 ASM BACKGROUND
15659 BEGIN
15660     CALL &$1814
15661     BIS &$180A,R2
15662 AGAIN
15663 ENDASM
15664
15665 ASM SYS_OUT
15666     MOV #WARM,R9
15667     ADD #4,R9
15668     MOV R9,R0
15669 ENDASM
15670
15671 CODE STOP
15672 BW1 MOV #$4000,R9
15673     ADD #4,R9
15674     MOV R9,-2(R9)
15675     MOV #WARM,R9
15676     MOV #SYS_OUT,2(R9)
15677     BIC.B #4,&$20A
15678     BIC.B #4,&$20C
15679     MOV #0,&$3C0
15680     MOV #0,&$340
15681     MOV #0,&$342
15682     MOV #COLD,R9
15683     MOV R9,&$FFDE
15684     MOV R9,&$FFEA
15685 COLON
15686 ECHO
15687 ." RC5toLCD is removed,"
15688 ."  type START to restart"
15689  WARM
15690 ;
15691
15692 CODE SYS_INIT
15693 MOV #%10_1101_0100,&$3C0
15694 $1806 @ 16000 = [IF]
15695     MOV #1,&$3E0
15696 [THEN]
15697 $1806 @ 24000 = [IF]
15698     MOV #2,&$3E0
15699 [THEN]
15700     MOV #19,&$3D2
15701 MOV #%0110_0000,&$3C6
15702     MOV #10,&$3D6
15703     BIS.B #$20,&$204
15704     BIS.B #$20,&$20A
15705     BIS.B #7,&$245
15706     BIC.B #7,&$247
15707     BIS.B #$0F,&$224
15708     BIC.B #$0F,&$226
15709     BIS.B #4,&$20A
15710     BIC.B #4,&$20C
15711     MOV #RC5_INT,&$FFDE
15712 MOV #%01_0001_0100,&$340
15713     MOV ##3276,&$352
15714     MOV #%10000,&$342
15715     MOV #WDT_INT,&$FFEA
15716 BIC #1,&$130
15717 BIS.B #3,&$20D
15718 MOV &$1808,R8
15719 CMP #4,R8
15720 0= ?GOTO BW1
15721 COLON
15722     #1000 20_US
15723     %011 TOP_LCD
15724     #205 20_US
15725     %011 TOP_LCD
15726     #5 20_US
15727     %011 TOP_LCD
15728     #2 20_US
15729     %010 TOP_LCD
15730     #2 20_US
15731     %00101000 LCD_WRF
15732     %1000 LCD_WRF
15733     LCD_CLEAR
15734     %0110 LCD_WRF
15735     %1100 LCD_WRF
15736     LCD_CLEAR
15737     ['] LCD_HOME IS CR
15738     ['] LCD_WRC  IS EMIT
15739     CR ." I love you"
15740     ['] CR >BODY IS CR
15741     ['] EMIT >BODY IS EMIT
15742     ." RC5toLCD is running. Type STOP to quit"
15743     PWR_STATE ABORT
15744 ;
15745
15746 CODE START
15747 MOV #$4000,R9
15748 MOV #BACKGROUND,2(R9)
15749 MOV #WARM,R9
15750 MOV #SYS_INIT,2(R9)
15751 MOV R9,R0
15752 ENDCODE 
15753 PWR_STATE
15754
15755 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
15756
15757 MARKER {RC5TOLCD}
15758
15759 [UNDEFINED] @ [IF]
15760 CODE @
15761 MOV @R14,R14
15762 MOV @R13+,R0
15763 ENDCODE
15764 [THEN]
15765
15766 [UNDEFINED] CONSTANT [IF]
15767 : CONSTANT 
15768 CREATE
15769 HI2LO
15770 MOV R14,-2(R10)
15771 MOV @R15+,R14
15772 MOV @R1+,R13
15773 MOV @R13+,R0
15774 ENDCODE
15775 [THEN]
15776
15777 [UNDEFINED] STATE [IF]
15778 $1DBE CONSTANT STATE
15779 [THEN]
15780
15781 [UNDEFINED] = [IF]
15782 CODE =
15783 SUB @R15+,R14
15784 0<> IF
15785     AND #0,R14
15786     MOV @R13+,R0
15787 THEN
15788 XOR #-1,R14
15789 MOV @R13+,R0
15790 ENDCODE
15791 [THEN]
15792
15793 [UNDEFINED] IF [IF]
15794 CODE IF
15795 SUB #2,R15
15796 MOV R14,0(R15)
15797 MOV &$1DC6,R14
15798 ADD #4,&$1DC6
15799 MOV #$4042,0(R14)
15800 ADD #2,R14
15801 MOV @R13+,R0
15802 ENDCODE IMMEDIATE
15803
15804 CODE THEN
15805 MOV &$1DC6,0(R14)
15806 MOV @R15+,R14
15807 MOV @R13+,R0
15808 ENDCODE IMMEDIATE
15809 [THEN]
15810
15811 [UNDEFINED] ELSE [IF]
15812 CODE ELSE
15813 ADD #4,&$1DC6
15814 MOV &$1DC6,R10
15815 MOV #$403E,-4(R10)
15816 MOV R10,0(R14)
15817 SUB #2,R10
15818 MOV R10,R14
15819 MOV @R13+,R0
15820 ENDCODE IMMEDIATE
15821 [THEN]
15822
15823 [UNDEFINED] IS [IF]
15824
15825 CODE DEFER!
15826 MOV @R15+,2(R14)
15827 MOV @R15+,R14
15828 MOV @R13+,R0
15829 ENDCODE
15830
15831
15832 : IS
15833 STATE @
15834 IF  POSTPONE ['] POSTPONE DEFER! 
15835 ELSE ' DEFER! 
15836 THEN
15837 ; IMMEDIATE
15838 [THEN]
15839
15840 [UNDEFINED] >BODY [IF]
15841 CODE >BODY
15842 ADD #4,R14
15843 MOV @R13+,R0
15844 ENDCODE
15845 [THEN]
15846
15847
15848 CODE 20_US
15849 BEGIN
15850     BEGIN
15851         BIT #1,&$3C0
15852     0<> UNTIL
15853     BIC #1,&$3C0
15854     SUB #1,R14
15855 U< UNTIL
15856 MOV @R15+,R14
15857 MOV @R13+,R0
15858 ENDCODE
15859
15860 CODE TOP_LCD
15861     BIS.B #4,&$243
15862     BIT.B #1,&$241
15863 0= IF
15864     AND.B #$0F,R14
15865     MOV.B R14,&$222
15866     BIC.B #4,&$243
15867     MOV @R15+,R14
15868     MOV @R13+,R0
15869 THEN
15870     SUB #2,R15
15871     MOV R14,0(R15)
15872     BIC.B #4,&$243
15873     MOV.B &$220,R14
15874     AND.B #$0F,R14
15875     MOV @R13+,R0
15876 ENDCODE
15877
15878 CODE LCD_WRC
15879     BIS.B #2,&$243
15880 BW1 SUB #2,R15
15881     MOV R14,0(R15)
15882     RRUM #4,R14
15883     BIC.B #1,&$243
15884     BIS.B #$0F,&$224
15885 COLON
15886     TOP_LCD 2 20_US
15887     TOP_LCD 2 20_US 
15888 ;
15889
15890 CODE LCD_WRF
15891     BIC.B #2,&$243
15892     GOTO BW1
15893 ENDCODE
15894
15895 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
15896 : LCD_HOME $02 LCD_WRF 100 20_us ;
15897
15898
15899
15900 ASM WDT_INT
15901 ADD #2,R1
15902 BIT.B #$20,&$240
15903 0= IF
15904     CMP #19,&$3D6
15905     U< IF
15906         ADD #1,&$3D6
15907     THEN
15908 ELSE
15909     BIT.B #$40,&$240
15910     0= IF
15911         CMP #3,&$3D6
15912         U>= IF
15913            SUB #1,&$3D6
15914         THEN
15915     THEN
15916 THEN
15917 BW1
15918 MOV @R1+,R0
15919 ENDASM
15920
15921 ASM RC5_INT
15922 ADD #2,R1
15923 $1806 @ 16000 = [IF]
15924     MOV #1,&$3A0
15925 [THEN]
15926 $1806 @ 24000 = [IF]
15927     MOV #2,&$3A0
15928 [THEN]
15929 MOV #1778,R9
15930 MOV #14,R10
15931 BEGIN
15932 MOV #%1011100100,&$380
15933     RRUM    #1,R9
15934     MOV     R9,R8
15935     RRUM    #1,R8
15936     ADD     R9,R8
15937     BEGIN   CMP R8,&$390
15938     U>= UNTIL
15939     BIT.B   #4,&$200
15940     ADDC    R11,R11
15941     MOV.B   &$200,&$208
15942     BIC.B   #4,&$20C
15943     SUB     #1,R10
15944 0<> WHILE
15945     ADD R9,R8
15946     BEGIN
15947         MOV &$390,R9
15948         CMP R8,R9
15949         U>= IF
15950         BIC #$30,&$380
15951         GOTO BW1
15952         THEN
15953         BIT.B #4,&$20C
15954     0<> UNTIL
15955 REPEAT
15956 BIC #$30,&$380
15957 RLAM    #1,R11
15958 MOV.B   R11,R9
15959 RRUM    #2,R9
15960 BIT     #$4000,R11
15961 0= IF   BIS #$40,R9
15962 THEN
15963 RRUM    #3,R11
15964 XOR     @R1,R11
15965 BIT     #$400,R11
15966 0= ?GOTO BW1
15967 XOR #$400,0(R1)
15968 SUB #8,R15
15969 MOV R14,6(R15)
15970 MOV &$1DDC,4(R15)
15971 MOV #$10,&$1DDC
15972 MOV R9,0(R15)
15973 MOV #0,R14
15974 LO2HI
15975     LCD_CLEAR
15976     <# # #S #36 HOLD #>
15977     ['] LCD_WRC IS EMIT
15978     TYPE
15979     ['] EMIT >BODY IS EMIT
15980 HI2LO
15981 MOV @R15+,&$1DDC
15982 MOV @R15+,R14
15983 MOV @R1+,R0
15984 ENDASM
15985
15986 ASM BACKGROUND
15987 BEGIN
15988     CALL &$1814
15989     BIS &$180A,R2
15990 AGAIN
15991 ENDASM
15992
15993 ASM SYS_OUT
15994     MOV #WARM,R9
15995     ADD #4,R9
15996     MOV R9,R0
15997 ENDASM
15998
15999 CODE STOP
16000 BW1 MOV #$4000,R9
16001     ADD #4,R9
16002     MOV R9,-2(R9)
16003     MOV #WARM,R9
16004     MOV #SYS_OUT,2(R9)
16005     BIC.B #4,&$20A
16006     BIC.B #4,&$20C
16007     MOV #0,&$3C0
16008     MOV #0,&$340
16009     MOV #0,&$342
16010     MOV #COLD,R9
16011     MOV R9,&$FFDE
16012     MOV R9,&$FFEA
16013 COLON
16014 ECHO
16015 ." RC5toLCD is removed,"
16016 ."  type START to restart"
16017  WARM
16018 ;
16019
16020 CODE SYS_INIT
16021 MOV #%10_1101_0100,&$3C0
16022 $1806 @ 16000 = [IF]
16023     MOV #1,&$3E0
16024 [THEN]
16025 $1806 @ 24000 = [IF]
16026     MOV #2,&$3E0
16027 [THEN]
16028     MOV #19,&$3D2
16029 MOV #%0110_0000,&$3C6
16030     MOV #10,&$3D6
16031     BIS.B #$20,&$204
16032     BIS.B #$20,&$20A
16033     BIS.B #7,&$245
16034     BIC.B #7,&$247
16035     BIS.B #$0F,&$224
16036     BIC.B #$0F,&$226
16037     BIS.B #4,&$20A
16038     BIC.B #4,&$20C
16039     MOV #RC5_INT,&$FFDE
16040 MOV #%01_0001_0100,&$340
16041     MOV ##3276,&$352
16042     MOV #%10000,&$342
16043     MOV #WDT_INT,&$FFEA
16044 BIC #1,&$130
16045 BIS.B #3,&$20D
16046 MOV &$1808,R8
16047 CMP #4,R8
16048 0= ?GOTO BW1
16049 COLON
16050     #1000 20_US
16051     %011 TOP_LCD
16052     #205 20_US
16053     %011 TOP_LCD
16054     #5 20_US
16055     %011 TOP_LCD
16056     #2 20_US
16057     %010 TOP_LCD
16058     #2 20_US
16059     %00101000 LCD_WRF
16060     %1000 LCD_WRF
16061     LCD_CLEAR
16062     %0110 LCD_WRF
16063     %1100 LCD_WRF
16064     LCD_CLEAR
16065     ['] LCD_HOME IS CR
16066     ['] LCD_WRC  IS EMIT
16067     CR ." I love you"
16068     ['] CR >BODY IS CR
16069     ['] EMIT >BODY IS EMIT
16070     ." RC5toLCD is running. Type STOP to quit"
16071     PWR_STATE ABORT
16072 ;
16073
16074 CODE START
16075 MOV #$4000,R9
16076 MOV #BACKGROUND,2(R9)
16077 MOV #WARM,R9
16078 MOV #SYS_INIT,2(R9)
16079 MOV R9,R0
16080 ENDCODE 
16081 PWR_STATE
16082
16083 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
16084
16085 MARKER {RC5TOLCD}
16086
16087 [UNDEFINED] @ [IF]
16088 CODE @
16089 MOV @R14,R14
16090 MOV @R13+,R0
16091 ENDCODE
16092 [THEN]
16093
16094 [UNDEFINED] CONSTANT [IF]
16095 : CONSTANT 
16096 CREATE
16097 HI2LO
16098 MOV R14,-2(R10)
16099 MOV @R15+,R14
16100 MOV @R1+,R13
16101 MOV @R13+,R0
16102 ENDCODE
16103 [THEN]
16104
16105 [UNDEFINED] STATE [IF]
16106 $1DBE CONSTANT STATE
16107 [THEN]
16108
16109 [UNDEFINED] = [IF]
16110 CODE =
16111 SUB @R15+,R14
16112 0<> IF
16113     AND #0,R14
16114     MOV @R13+,R0
16115 THEN
16116 XOR #-1,R14
16117 MOV @R13+,R0
16118 ENDCODE
16119 [THEN]
16120
16121 [UNDEFINED] IF [IF]
16122 CODE IF
16123 SUB #2,R15
16124 MOV R14,0(R15)
16125 MOV &$1DC6,R14
16126 ADD #4,&$1DC6
16127 MOV #$4042,0(R14)
16128 ADD #2,R14
16129 MOV @R13+,R0
16130 ENDCODE IMMEDIATE
16131
16132 CODE THEN
16133 MOV &$1DC6,0(R14)
16134 MOV @R15+,R14
16135 MOV @R13+,R0
16136 ENDCODE IMMEDIATE
16137 [THEN]
16138
16139 [UNDEFINED] ELSE [IF]
16140 CODE ELSE
16141 ADD #4,&$1DC6
16142 MOV &$1DC6,R10
16143 MOV #$403E,-4(R10)
16144 MOV R10,0(R14)
16145 SUB #2,R10
16146 MOV R10,R14
16147 MOV @R13+,R0
16148 ENDCODE IMMEDIATE
16149 [THEN]
16150
16151 [UNDEFINED] IS [IF]
16152
16153 CODE DEFER!
16154 MOV @R15+,2(R14)
16155 MOV @R15+,R14
16156 MOV @R13+,R0
16157 ENDCODE
16158
16159
16160 : IS
16161 STATE @
16162 IF  POSTPONE ['] POSTPONE DEFER! 
16163 ELSE ' DEFER! 
16164 THEN
16165 ; IMMEDIATE
16166 [THEN]
16167
16168 [UNDEFINED] >BODY [IF]
16169 CODE >BODY
16170 ADD #4,R14
16171 MOV @R13+,R0
16172 ENDCODE
16173 [THEN]
16174
16175
16176 CODE 20_US
16177 BEGIN
16178     BEGIN
16179         BIT #1,&$3C0
16180     0<> UNTIL
16181     BIC #1,&$3C0
16182     SUB #1,R14
16183 U< UNTIL
16184 MOV @R15+,R14
16185 MOV @R13+,R0
16186 ENDCODE
16187
16188 CODE TOP_LCD
16189     BIS.B #4,&$243
16190     BIT.B #1,&$241
16191 0= IF
16192     AND.B #$0F,R14
16193     MOV.B R14,&$222
16194     BIC.B #4,&$243
16195     MOV @R15+,R14
16196     MOV @R13+,R0
16197 THEN
16198     SUB #2,R15
16199     MOV R14,0(R15)
16200     BIC.B #4,&$243
16201     MOV.B &$220,R14
16202     AND.B #$0F,R14
16203     MOV @R13+,R0
16204 ENDCODE
16205
16206 CODE LCD_WRC
16207     BIS.B #2,&$243
16208 BW1 SUB #2,R15
16209     MOV R14,0(R15)
16210     RRUM #4,R14
16211     BIC.B #1,&$243
16212     BIS.B #$0F,&$224
16213 COLON
16214     TOP_LCD 2 20_US
16215     TOP_LCD 2 20_US 
16216 ;
16217
16218 CODE LCD_WRF
16219     BIC.B #2,&$243
16220     GOTO BW1
16221 ENDCODE
16222
16223 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
16224 : LCD_HOME $02 LCD_WRF 100 20_us ;
16225
16226
16227
16228 ASM WDT_INT
16229 ADD #2,R1
16230 BIT.B #$20,&$240
16231 0= IF
16232     CMP #19,&$3D6
16233     U< IF
16234         ADD #1,&$3D6
16235     THEN
16236 ELSE
16237     BIT.B #$40,&$240
16238     0= IF
16239         CMP #3,&$3D6
16240         U>= IF
16241            SUB #1,&$3D6
16242         THEN
16243     THEN
16244 THEN
16245 BW1
16246 MOV @R1+,R0
16247 ENDASM
16248
16249 ASM RC5_INT
16250 ADD #2,R1
16251 $1806 @ 16000 = [IF]
16252     MOV #1,&$3A0
16253 [THEN]
16254 $1806 @ 24000 = [IF]
16255     MOV #2,&$3A0
16256 [THEN]
16257 MOV #1778,R9
16258 MOV #14,R10
16259 BEGIN
16260 MOV #%1011100100,&$380
16261     RRUM    #1,R9
16262     MOV     R9,R8
16263     RRUM    #1,R8
16264     ADD     R9,R8
16265     BEGIN   CMP R8,&$390
16266     U>= UNTIL
16267     BIT.B   #4,&$200
16268     ADDC    R11,R11
16269     MOV.B   &$200,&$208
16270     BIC.B   #4,&$20C
16271     SUB     #1,R10
16272 0<> WHILE
16273     ADD R9,R8
16274     BEGIN
16275         MOV &$390,R9
16276         CMP R8,R9
16277         U>= IF
16278         BIC #$30,&$380
16279         GOTO BW1
16280         THEN
16281         BIT.B #4,&$20C
16282     0<> UNTIL
16283 REPEAT
16284 BIC #$30,&$380
16285 RLAM    #1,R11
16286 MOV.B   R11,R9
16287 RRUM    #2,R9
16288 BIT     #$4000,R11
16289 0= IF   BIS #$40,R9
16290 THEN
16291 RRUM    #3,R11
16292 XOR     @R1,R11
16293 BIT     #$400,R11
16294 0= ?GOTO BW1
16295 XOR #$400,0(R1)
16296 SUB #8,R15
16297 MOV R14,6(R15)
16298 MOV &$1DDC,4(R15)
16299 MOV #$10,&$1DDC
16300 MOV R9,0(R15)
16301 MOV #0,R14
16302 LO2HI
16303     LCD_CLEAR
16304     <# # #S #36 HOLD #>
16305     ['] LCD_WRC IS EMIT
16306     TYPE
16307     ['] EMIT >BODY IS EMIT
16308 HI2LO
16309 MOV @R15+,&$1DDC
16310 MOV @R15+,R14
16311 MOV @R1+,R0
16312 ENDASM
16313
16314 ASM BACKGROUND
16315 BEGIN
16316     CALL &$1814
16317     BIS &$180A,R2
16318 AGAIN
16319 ENDASM
16320
16321 ASM SYS_OUT
16322     MOV #WARM,R9
16323     ADD #4,R9
16324     MOV R9,R0
16325 ENDASM
16326
16327 CODE STOP
16328 BW1 MOV #$4000,R9
16329     ADD #4,R9
16330     MOV R9,-2(R9)
16331     MOV #WARM,R9
16332     MOV #SYS_OUT,2(R9)
16333     BIC.B #4,&$20A
16334     BIC.B #4,&$20C
16335     MOV #0,&$3C0
16336     MOV #0,&$340
16337     MOV #0,&$342
16338     MOV #COLD,R9
16339     MOV R9,&$FFDE
16340     MOV R9,&$FFEA
16341 COLON
16342 ECHO
16343 ." RC5toLCD is removed,"
16344 ."  type START to restart"
16345  WARM
16346 ;
16347
16348 CODE SYS_INIT
16349 MOV #%10_1101_0100,&$3C0
16350 $1806 @ 16000 = [IF]
16351     MOV #1,&$3E0
16352 [THEN]
16353 $1806 @ 24000 = [IF]
16354     MOV #2,&$3E0
16355 [THEN]
16356     MOV #19,&$3D2
16357 MOV #%0110_0000,&$3C6
16358     MOV #10,&$3D6
16359     BIS.B #$20,&$204
16360     BIS.B #$20,&$20A
16361     BIS.B #7,&$245
16362     BIC.B #7,&$247
16363     BIS.B #$0F,&$224
16364     BIC.B #$0F,&$226
16365     BIS.B #4,&$20A
16366     BIC.B #4,&$20C
16367     MOV #RC5_INT,&$FFDE
16368 MOV #%01_0001_0100,&$340
16369     MOV ##3276,&$352
16370     MOV #%10000,&$342
16371     MOV #WDT_INT,&$FFEA
16372 BIC #1,&$130
16373 BIS.B #3,&$20D
16374 MOV &$1808,R8
16375 CMP #4,R8
16376 0= ?GOTO BW1
16377 COLON
16378     #1000 20_US
16379     %011 TOP_LCD
16380     #205 20_US
16381     %011 TOP_LCD
16382     #5 20_US
16383     %011 TOP_LCD
16384     #2 20_US
16385     %010 TOP_LCD
16386     #2 20_US
16387     %00101000 LCD_WRF
16388     %1000 LCD_WRF
16389     LCD_CLEAR
16390     %0110 LCD_WRF
16391     %1100 LCD_WRF
16392     LCD_CLEAR
16393     ['] LCD_HOME IS CR
16394     ['] LCD_WRC  IS EMIT
16395     CR ." I love you"
16396     ['] CR >BODY IS CR
16397     ['] EMIT >BODY IS EMIT
16398     ." RC5toLCD is running. Type STOP to quit"
16399     PWR_STATE ABORT
16400 ;
16401
16402 CODE START
16403 MOV #$4000,R9
16404 MOV #BACKGROUND,2(R9)
16405 MOV #WARM,R9
16406 MOV #SYS_INIT,2(R9)
16407 MOV R9,R0
16408 ENDCODE 
16409 PWR_STATE
16410
16411 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
16412
16413 MARKER {RC5TOLCD}
16414
16415 [UNDEFINED] @ [IF]
16416 CODE @
16417 MOV @R14,R14
16418 MOV @R13+,R0
16419 ENDCODE
16420 [THEN]
16421
16422 [UNDEFINED] CONSTANT [IF]
16423 : CONSTANT 
16424 CREATE
16425 HI2LO
16426 MOV R14,-2(R10)
16427 MOV @R15+,R14
16428 MOV @R1+,R13
16429 MOV @R13+,R0
16430 ENDCODE
16431 [THEN]
16432
16433 [UNDEFINED] STATE [IF]
16434 $1DBE CONSTANT STATE
16435 [THEN]
16436
16437 [UNDEFINED] = [IF]
16438 CODE =
16439 SUB @R15+,R14
16440 0<> IF
16441     AND #0,R14
16442     MOV @R13+,R0
16443 THEN
16444 XOR #-1,R14
16445 MOV @R13+,R0
16446 ENDCODE
16447 [THEN]
16448
16449 [UNDEFINED] IF [IF]
16450 CODE IF
16451 SUB #2,R15
16452 MOV R14,0(R15)
16453 MOV &$1DC6,R14
16454 ADD #4,&$1DC6
16455 MOV #$4042,0(R14)
16456 ADD #2,R14
16457 MOV @R13+,R0
16458 ENDCODE IMMEDIATE
16459
16460 CODE THEN
16461 MOV &$1DC6,0(R14)
16462 MOV @R15+,R14
16463 MOV @R13+,R0
16464 ENDCODE IMMEDIATE
16465 [THEN]
16466
16467 [UNDEFINED] ELSE [IF]
16468 CODE ELSE
16469 ADD #4,&$1DC6
16470 MOV &$1DC6,R10
16471 MOV #$403E,-4(R10)
16472 MOV R10,0(R14)
16473 SUB #2,R10
16474 MOV R10,R14
16475 MOV @R13+,R0
16476 ENDCODE IMMEDIATE
16477 [THEN]
16478
16479 [UNDEFINED] IS [IF]
16480
16481 CODE DEFER!
16482 MOV @R15+,2(R14)
16483 MOV @R15+,R14
16484 MOV @R13+,R0
16485 ENDCODE
16486
16487
16488 : IS
16489 STATE @
16490 IF  POSTPONE ['] POSTPONE DEFER! 
16491 ELSE ' DEFER! 
16492 THEN
16493 ; IMMEDIATE
16494 [THEN]
16495
16496 [UNDEFINED] >BODY [IF]
16497 CODE >BODY
16498 ADD #4,R14
16499 MOV @R13+,R0
16500 ENDCODE
16501 [THEN]
16502
16503
16504 CODE 20_US
16505 BEGIN
16506     BEGIN
16507         BIT #1,&$3C0
16508     0<> UNTIL
16509     BIC #1,&$3C0
16510     SUB #1,R14
16511 U< UNTIL
16512 MOV @R15+,R14
16513 MOV @R13+,R0
16514 ENDCODE
16515
16516 CODE TOP_LCD
16517     BIS.B #4,&$243
16518     BIT.B #1,&$241
16519 0= IF
16520     AND.B #$0F,R14
16521     MOV.B R14,&$222
16522     BIC.B #4,&$243
16523     MOV @R15+,R14
16524     MOV @R13+,R0
16525 THEN
16526     SUB #2,R15
16527     MOV R14,0(R15)
16528     BIC.B #4,&$243
16529     MOV.B &$220,R14
16530     AND.B #$0F,R14
16531     MOV @R13+,R0
16532 ENDCODE
16533
16534 CODE LCD_WRC
16535     BIS.B #2,&$243
16536 BW1 SUB #2,R15
16537     MOV R14,0(R15)
16538     RRUM #4,R14
16539     BIC.B #1,&$243
16540     BIS.B #$0F,&$224
16541 COLON
16542     TOP_LCD 2 20_US
16543     TOP_LCD 2 20_US 
16544 ;
16545
16546 CODE LCD_WRF
16547     BIC.B #2,&$243
16548     GOTO BW1
16549 ENDCODE
16550
16551 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
16552 : LCD_HOME $02 LCD_WRF 100 20_us ;
16553
16554
16555
16556 ASM WDT_INT
16557 ADD #2,R1
16558 BIT.B #$20,&$240
16559 0= IF
16560     CMP #19,&$3D6
16561     U< IF
16562         ADD #1,&$3D6
16563     THEN
16564 ELSE
16565     BIT.B #$40,&$240
16566     0= IF
16567         CMP #3,&$3D6
16568         U>= IF
16569            SUB #1,&$3D6
16570         THEN
16571     THEN
16572 THEN
16573 BW1
16574 MOV @R1+,R0
16575 ENDASM
16576
16577 ASM RC5_INT
16578 ADD #2,R1
16579 $1806 @ 16000 = [IF]
16580     MOV #1,&$3A0
16581 [THEN]
16582 $1806 @ 24000 = [IF]
16583     MOV #2,&$3A0
16584 [THEN]
16585 MOV #1778,R9
16586 MOV #14,R10
16587 BEGIN
16588 MOV #%1011100100,&$380
16589     RRUM    #1,R9
16590     MOV     R9,R8
16591     RRUM    #1,R8
16592     ADD     R9,R8
16593     BEGIN   CMP R8,&$390
16594     U>= UNTIL
16595     BIT.B   #4,&$200
16596     ADDC    R11,R11
16597     MOV.B   &$200,&$208
16598     BIC.B   #4,&$20C
16599     SUB     #1,R10
16600 0<> WHILE
16601     ADD R9,R8
16602     BEGIN
16603         MOV &$390,R9
16604         CMP R8,R9
16605         U>= IF
16606         BIC #$30,&$380
16607         GOTO BW1
16608         THEN
16609         BIT.B #4,&$20C
16610     0<> UNTIL
16611 REPEAT
16612 BIC #$30,&$380
16613 RLAM    #1,R11
16614 MOV.B   R11,R9
16615 RRUM    #2,R9
16616 BIT     #$4000,R11
16617 0= IF   BIS #$40,R9
16618 THEN
16619 RRUM    #3,R11
16620 XOR     @R1,R11
16621 BIT     #$400,R11
16622 0= ?GOTO BW1
16623 XOR #$400,0(R1)
16624 SUB #8,R15
16625 MOV R14,6(R15)
16626 MOV &$1DDC,4(R15)
16627 MOV #$10,&$1DDC
16628 MOV R9,0(R15)
16629 MOV #0,R14
16630 LO2HI
16631     LCD_CLEAR
16632     <# # #S #36 HOLD #>
16633     ['] LCD_WRC IS EMIT
16634     TYPE
16635     ['] EMIT >BODY IS EMIT
16636 HI2LO
16637 MOV @R15+,&$1DDC
16638 MOV @R15+,R14
16639 MOV @R1+,R0
16640 ENDASM
16641
16642 ASM BACKGROUND
16643 BEGIN
16644     CALL &$1814
16645     BIS &$180A,R2
16646 AGAIN
16647 ENDASM
16648
16649 ASM SYS_OUT
16650     MOV #WARM,R9
16651     ADD #4,R9
16652     MOV R9,R0
16653 ENDASM
16654
16655 CODE STOP
16656 BW1 MOV #$4000,R9
16657     ADD #4,R9
16658     MOV R9,-2(R9)
16659     MOV #WARM,R9
16660     MOV #SYS_OUT,2(R9)
16661     BIC.B #4,&$20A
16662     BIC.B #4,&$20C
16663     MOV #0,&$3C0
16664     MOV #0,&$340
16665     MOV #0,&$342
16666     MOV #COLD,R9
16667     MOV R9,&$FFDE
16668     MOV R9,&$FFEA
16669 COLON
16670 ECHO
16671 ." RC5toLCD is removed,"
16672 ."  type START to restart"
16673  WARM
16674 ;
16675
16676 CODE SYS_INIT
16677 MOV #%10_1101_0100,&$3C0
16678 $1806 @ 16000 = [IF]
16679     MOV #1,&$3E0
16680 [THEN]
16681 $1806 @ 24000 = [IF]
16682     MOV #2,&$3E0
16683 [THEN]
16684     MOV #19,&$3D2
16685 MOV #%0110_0000,&$3C6
16686     MOV #10,&$3D6
16687     BIS.B #$20,&$204
16688     BIS.B #$20,&$20A
16689     BIS.B #7,&$245
16690     BIC.B #7,&$247
16691     BIS.B #$0F,&$224
16692     BIC.B #$0F,&$226
16693     BIS.B #4,&$20A
16694     BIC.B #4,&$20C
16695     MOV #RC5_INT,&$FFDE
16696 MOV #%01_0001_0100,&$340
16697     MOV ##3276,&$352
16698     MOV #%10000,&$342
16699     MOV #WDT_INT,&$FFEA
16700 BIC #1,&$130
16701 BIS.B #3,&$20D
16702 MOV &$1808,R8
16703 CMP #4,R8
16704 0= ?GOTO BW1
16705 COLON
16706     #1000 20_US
16707     %011 TOP_LCD
16708     #205 20_US
16709     %011 TOP_LCD
16710     #5 20_US
16711     %011 TOP_LCD
16712     #2 20_US
16713     %010 TOP_LCD
16714     #2 20_US
16715     %00101000 LCD_WRF
16716     %1000 LCD_WRF
16717     LCD_CLEAR
16718     %0110 LCD_WRF
16719     %1100 LCD_WRF
16720     LCD_CLEAR
16721     ['] LCD_HOME IS CR
16722     ['] LCD_WRC  IS EMIT
16723     CR ." I love you"
16724     ['] CR >BODY IS CR
16725     ['] EMIT >BODY IS EMIT
16726     ." RC5toLCD is running. Type STOP to quit"
16727     PWR_STATE ABORT
16728 ;
16729
16730 CODE START
16731 MOV #$4000,R9
16732 MOV #BACKGROUND,2(R9)
16733 MOV #WARM,R9
16734 MOV #SYS_INIT,2(R9)
16735 MOV R9,R0
16736 ENDCODE 
16737 PWR_STATE
16738
16739 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
16740
16741 MARKER {RC5TOLCD}
16742
16743 [UNDEFINED] @ [IF]
16744 CODE @
16745 MOV @R14,R14
16746 MOV @R13+,R0
16747 ENDCODE
16748 [THEN]
16749
16750 [UNDEFINED] CONSTANT [IF]
16751 : CONSTANT 
16752 CREATE
16753 HI2LO
16754 MOV R14,-2(R10)
16755 MOV @R15+,R14
16756 MOV @R1+,R13
16757 MOV @R13+,R0
16758 ENDCODE
16759 [THEN]
16760
16761 [UNDEFINED] STATE [IF]
16762 $1DBE CONSTANT STATE
16763 [THEN]
16764
16765 [UNDEFINED] = [IF]
16766 CODE =
16767 SUB @R15+,R14
16768 0<> IF
16769     AND #0,R14
16770     MOV @R13+,R0
16771 THEN
16772 XOR #-1,R14
16773 MOV @R13+,R0
16774 ENDCODE
16775 [THEN]
16776
16777 [UNDEFINED] IF [IF]
16778 CODE IF
16779 SUB #2,R15
16780 MOV R14,0(R15)
16781 MOV &$1DC6,R14
16782 ADD #4,&$1DC6
16783 MOV #$4042,0(R14)
16784 ADD #2,R14
16785 MOV @R13+,R0
16786 ENDCODE IMMEDIATE
16787
16788 CODE THEN
16789 MOV &$1DC6,0(R14)
16790 MOV @R15+,R14
16791 MOV @R13+,R0
16792 ENDCODE IMMEDIATE
16793 [THEN]
16794
16795 [UNDEFINED] ELSE [IF]
16796 CODE ELSE
16797 ADD #4,&$1DC6
16798 MOV &$1DC6,R10
16799 MOV #$403E,-4(R10)
16800 MOV R10,0(R14)
16801 SUB #2,R10
16802 MOV R10,R14
16803 MOV @R13+,R0
16804 ENDCODE IMMEDIATE
16805 [THEN]
16806
16807 [UNDEFINED] IS [IF]
16808
16809 CODE DEFER!
16810 MOV @R15+,2(R14)
16811 MOV @R15+,R14
16812 MOV @R13+,R0
16813 ENDCODE
16814
16815
16816 : IS
16817 STATE @
16818 IF  POSTPONE ['] POSTPONE DEFER! 
16819 ELSE ' DEFER! 
16820 THEN
16821 ; IMMEDIATE
16822 [THEN]
16823
16824 [UNDEFINED] >BODY [IF]
16825 CODE >BODY
16826 ADD #4,R14
16827 MOV @R13+,R0
16828 ENDCODE
16829 [THEN]
16830
16831
16832 CODE 20_US
16833 BEGIN
16834     BEGIN
16835         BIT #1,&$3C0
16836     0<> UNTIL
16837     BIC #1,&$3C0
16838     SUB #1,R14
16839 U< UNTIL
16840 MOV @R15+,R14
16841 MOV @R13+,R0
16842 ENDCODE
16843
16844 CODE TOP_LCD
16845     BIS.B #4,&$243
16846     BIT.B #1,&$241
16847 0= IF
16848     AND.B #$0F,R14
16849     MOV.B R14,&$222
16850     BIC.B #4,&$243
16851     MOV @R15+,R14
16852     MOV @R13+,R0
16853 THEN
16854     SUB #2,R15
16855     MOV R14,0(R15)
16856     BIC.B #4,&$243
16857     MOV.B &$220,R14
16858     AND.B #$0F,R14
16859     MOV @R13+,R0
16860 ENDCODE
16861
16862 CODE LCD_WRC
16863     BIS.B #2,&$243
16864 BW1 SUB #2,R15
16865     MOV R14,0(R15)
16866     RRUM #4,R14
16867     BIC.B #1,&$243
16868     BIS.B #$0F,&$224
16869 COLON
16870     TOP_LCD 2 20_US
16871     TOP_LCD 2 20_US 
16872 ;
16873
16874 CODE LCD_WRF
16875     BIC.B #2,&$243
16876     GOTO BW1
16877 ENDCODE
16878
16879 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
16880 : LCD_HOME $02 LCD_WRF 100 20_us ;
16881
16882
16883
16884 ASM WDT_INT
16885 ADD #2,R1
16886 BIT.B #$20,&$240
16887 0= IF
16888     CMP #19,&$3D6
16889     U< IF
16890         ADD #1,&$3D6
16891     THEN
16892 ELSE
16893     BIT.B #$40,&$240
16894     0= IF
16895         CMP #3,&$3D6
16896         U>= IF
16897            SUB #1,&$3D6
16898         THEN
16899     THEN
16900 THEN
16901 BW1
16902 MOV @R1+,R0
16903 ENDASM
16904
16905 ASM RC5_INT
16906 ADD #2,R1
16907 $1806 @ 16000 = [IF]
16908     MOV #1,&$3A0
16909 [THEN]
16910 $1806 @ 24000 = [IF]
16911     MOV #2,&$3A0
16912 [THEN]
16913 MOV #1778,R9
16914 MOV #14,R10
16915 BEGIN
16916 MOV #%1011100100,&$380
16917     RRUM    #1,R9
16918     MOV     R9,R8
16919     RRUM    #1,R8
16920     ADD     R9,R8
16921     BEGIN   CMP R8,&$390
16922     U>= UNTIL
16923     BIT.B   #4,&$200
16924     ADDC    R11,R11
16925     MOV.B   &$200,&$208
16926     BIC.B   #4,&$20C
16927     SUB     #1,R10
16928 0<> WHILE
16929     ADD R9,R8
16930     BEGIN
16931         MOV &$390,R9
16932         CMP R8,R9
16933         U>= IF
16934         BIC #$30,&$380
16935         GOTO BW1
16936         THEN
16937         BIT.B #4,&$20C
16938     0<> UNTIL
16939 REPEAT
16940 BIC #$30,&$380
16941 RLAM    #1,R11
16942 MOV.B   R11,R9
16943 RRUM    #2,R9
16944 BIT     #$4000,R11
16945 0= IF   BIS #$40,R9
16946 THEN
16947 RRUM    #3,R11
16948 XOR     @R1,R11
16949 BIT     #$400,R11
16950 0= ?GOTO BW1
16951 XOR #$400,0(R1)
16952 SUB #8,R15
16953 MOV R14,6(R15)
16954 MOV &$1DDC,4(R15)
16955 MOV #$10,&$1DDC
16956 MOV R9,0(R15)
16957 MOV #0,R14
16958 LO2HI
16959     LCD_CLEAR
16960     <# # #S #36 HOLD #>
16961     ['] LCD_WRC IS EMIT
16962     TYPE
16963     ['] EMIT >BODY IS EMIT
16964 HI2LO
16965 MOV @R15+,&$1DDC
16966 MOV @R15+,R14
16967 MOV @R1+,R0
16968 ENDASM
16969
16970 ASM BACKGROUND
16971 BEGIN
16972     CALL &$1814
16973     BIS &$180A,R2
16974 AGAIN
16975 ENDASM
16976
16977 ASM SYS_OUT
16978     MOV #WARM,R9
16979     ADD #4,R9
16980     MOV R9,R0
16981 ENDASM
16982
16983 CODE STOP
16984 BW1 MOV #$4000,R9
16985     ADD #4,R9
16986     MOV R9,-2(R9)
16987     MOV #WARM,R9
16988     MOV #SYS_OUT,2(R9)
16989     BIC.B #4,&$20A
16990     BIC.B #4,&$20C
16991     MOV #0,&$3C0
16992     MOV #0,&$340
16993     MOV #0,&$342
16994     MOV #COLD,R9
16995     MOV R9,&$FFDE
16996     MOV R9,&$FFEA
16997 COLON
16998 ECHO
16999 ." RC5toLCD is removed,"
17000 ."  type START to restart"
17001  WARM
17002 ;
17003
17004 CODE SYS_INIT
17005 MOV #%10_1101_0100,&$3C0
17006 $1806 @ 16000 = [IF]
17007     MOV #1,&$3E0
17008 [THEN]
17009 $1806 @ 24000 = [IF]
17010     MOV #2,&$3E0
17011 [THEN]
17012     MOV #19,&$3D2
17013 MOV #%0110_0000,&$3C6
17014     MOV #10,&$3D6
17015     BIS.B #$20,&$204
17016     BIS.B #$20,&$20A
17017     BIS.B #7,&$245
17018     BIC.B #7,&$247
17019     BIS.B #$0F,&$224
17020     BIC.B #$0F,&$226
17021     BIS.B #4,&$20A
17022     BIC.B #4,&$20C
17023     MOV #RC5_INT,&$FFDE
17024 MOV #%01_0001_0100,&$340
17025     MOV ##3276,&$352
17026     MOV #%10000,&$342
17027     MOV #WDT_INT,&$FFEA
17028 BIC #1,&$130
17029 BIS.B #3,&$20D
17030 MOV &$1808,R8
17031 CMP #4,R8
17032 0= ?GOTO BW1
17033 COLON
17034     #1000 20_US
17035     %011 TOP_LCD
17036     #205 20_US
17037     %011 TOP_LCD
17038     #5 20_US
17039     %011 TOP_LCD
17040     #2 20_US
17041     %010 TOP_LCD
17042     #2 20_US
17043     %00101000 LCD_WRF
17044     %1000 LCD_WRF
17045     LCD_CLEAR
17046     %0110 LCD_WRF
17047     %1100 LCD_WRF
17048     LCD_CLEAR
17049     ['] LCD_HOME IS CR
17050     ['] LCD_WRC  IS EMIT
17051     CR ." I love you"
17052     ['] CR >BODY IS CR
17053     ['] EMIT >BODY IS EMIT
17054     ." RC5toLCD is running. Type STOP to quit"
17055     PWR_STATE ABORT
17056 ;
17057
17058 CODE START
17059 MOV #$4000,R9
17060 MOV #BACKGROUND,2(R9)
17061 MOV #WARM,R9
17062 MOV #SYS_INIT,2(R9)
17063 MOV R9,R0
17064 ENDCODE 
17065 PWR_STATE
17066
17067 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
17068
17069 MARKER {RC5TOLCD}
17070
17071 [UNDEFINED] @ [IF]
17072 CODE @
17073 MOV @R14,R14
17074 MOV @R13+,R0
17075 ENDCODE
17076 [THEN]
17077
17078 [UNDEFINED] CONSTANT [IF]
17079 : CONSTANT 
17080 CREATE
17081 HI2LO
17082 MOV R14,-2(R10)
17083 MOV @R15+,R14
17084 MOV @R1+,R13
17085 MOV @R13+,R0
17086 ENDCODE
17087 [THEN]
17088
17089 [UNDEFINED] STATE [IF]
17090 $1DBE CONSTANT STATE
17091 [THEN]
17092
17093 [UNDEFINED] = [IF]
17094 CODE =
17095 SUB @R15+,R14
17096 0<> IF
17097     AND #0,R14
17098     MOV @R13+,R0
17099 THEN
17100 XOR #-1,R14
17101 MOV @R13+,R0
17102 ENDCODE
17103 [THEN]
17104
17105 [UNDEFINED] IF [IF]
17106 CODE IF
17107 SUB #2,R15
17108 MOV R14,0(R15)
17109 MOV &$1DC6,R14
17110 ADD #4,&$1DC6
17111 MOV #$4042,0(R14)
17112 ADD #2,R14
17113 MOV @R13+,R0
17114 ENDCODE IMMEDIATE
17115
17116 CODE THEN
17117 MOV &$1DC6,0(R14)
17118 MOV @R15+,R14
17119 MOV @R13+,R0
17120 ENDCODE IMMEDIATE
17121 [THEN]
17122
17123 [UNDEFINED] ELSE [IF]
17124 CODE ELSE
17125 ADD #4,&$1DC6
17126 MOV &$1DC6,R10
17127 MOV #$403E,-4(R10)
17128 MOV R10,0(R14)
17129 SUB #2,R10
17130 MOV R10,R14
17131 MOV @R13+,R0
17132 ENDCODE IMMEDIATE
17133 [THEN]
17134
17135 [UNDEFINED] IS [IF]
17136
17137 CODE DEFER!
17138 MOV @R15+,2(R14)
17139 MOV @R15+,R14
17140 MOV @R13+,R0
17141 ENDCODE
17142
17143
17144 : IS
17145 STATE @
17146 IF  POSTPONE ['] POSTPONE DEFER! 
17147 ELSE ' DEFER! 
17148 THEN
17149 ; IMMEDIATE
17150 [THEN]
17151
17152 [UNDEFINED] >BODY [IF]
17153 CODE >BODY
17154 ADD #4,R14
17155 MOV @R13+,R0
17156 ENDCODE
17157 [THEN]
17158
17159
17160 CODE 20_US
17161 BEGIN
17162     BEGIN
17163         BIT #1,&$3C0
17164     0<> UNTIL
17165     BIC #1,&$3C0
17166     SUB #1,R14
17167 U< UNTIL
17168 MOV @R15+,R14
17169 MOV @R13+,R0
17170 ENDCODE
17171
17172 CODE TOP_LCD
17173     BIS.B #4,&$243
17174     BIT.B #1,&$241
17175 0= IF
17176     AND.B #$0F,R14
17177     MOV.B R14,&$222
17178     BIC.B #4,&$243
17179     MOV @R15+,R14
17180     MOV @R13+,R0
17181 THEN
17182     SUB #2,R15
17183     MOV R14,0(R15)
17184     BIC.B #4,&$243
17185     MOV.B &$220,R14
17186     AND.B #$0F,R14
17187     MOV @R13+,R0
17188 ENDCODE
17189
17190 CODE LCD_WRC
17191     BIS.B #2,&$243
17192 BW1 SUB #2,R15
17193     MOV R14,0(R15)
17194     RRUM #4,R14
17195     BIC.B #1,&$243
17196     BIS.B #$0F,&$224
17197 COLON
17198     TOP_LCD 2 20_US
17199     TOP_LCD 2 20_US 
17200 ;
17201
17202 CODE LCD_WRF
17203     BIC.B #2,&$243
17204     GOTO BW1
17205 ENDCODE
17206
17207 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
17208 : LCD_HOME $02 LCD_WRF 100 20_us ;
17209
17210
17211
17212 ASM WDT_INT
17213 ADD #2,R1
17214 BIT.B #$20,&$240
17215 0= IF
17216     CMP #19,&$3D6
17217     U< IF
17218         ADD #1,&$3D6
17219     THEN
17220 ELSE
17221     BIT.B #$40,&$240
17222     0= IF
17223         CMP #3,&$3D6
17224         U>= IF
17225            SUB #1,&$3D6
17226         THEN
17227     THEN
17228 THEN
17229 BW1
17230 MOV @R1+,R0
17231 ENDASM
17232
17233 ASM RC5_INT
17234 ADD #2,R1
17235 $1806 @ 16000 = [IF]
17236     MOV #1,&$3A0
17237 [THEN]
17238 $1806 @ 24000 = [IF]
17239     MOV #2,&$3A0
17240 [THEN]
17241 MOV #1778,R9
17242 MOV #14,R10
17243 BEGIN
17244 MOV #%1011100100,&$380
17245     RRUM    #1,R9
17246     MOV     R9,R8
17247     RRUM    #1,R8
17248     ADD     R9,R8
17249     BEGIN   CMP R8,&$390
17250     U>= UNTIL
17251     BIT.B   #4,&$200
17252     ADDC    R11,R11
17253     MOV.B   &$200,&$208
17254     BIC.B   #4,&$20C
17255     SUB     #1,R10
17256 0<> WHILE
17257     ADD R9,R8
17258     BEGIN
17259         MOV &$390,R9
17260         CMP R8,R9
17261         U>= IF
17262         BIC #$30,&$380
17263         GOTO BW1
17264         THEN
17265         BIT.B #4,&$20C
17266     0<> UNTIL
17267 REPEAT
17268 BIC #$30,&$380
17269 RLAM    #1,R11
17270 MOV.B   R11,R9
17271 RRUM    #2,R9
17272 BIT     #$4000,R11
17273 0= IF   BIS #$40,R9
17274 THEN
17275 RRUM    #3,R11
17276 XOR     @R1,R11
17277 BIT     #$400,R11
17278 0= ?GOTO BW1
17279 XOR #$400,0(R1)
17280 SUB #8,R15
17281 MOV R14,6(R15)
17282 MOV &$1DDC,4(R15)
17283 MOV #$10,&$1DDC
17284 MOV R9,0(R15)
17285 MOV #0,R14
17286 LO2HI
17287     LCD_CLEAR
17288     <# # #S #36 HOLD #>
17289     ['] LCD_WRC IS EMIT
17290     TYPE
17291     ['] EMIT >BODY IS EMIT
17292 HI2LO
17293 MOV @R15+,&$1DDC
17294 MOV @R15+,R14
17295 MOV @R1+,R0
17296 ENDASM
17297
17298 ASM BACKGROUND
17299 BEGIN
17300     CALL &$1814
17301     BIS &$180A,R2
17302 AGAIN
17303 ENDASM
17304
17305 ASM SYS_OUT
17306     MOV #WARM,R9
17307     ADD #4,R9
17308     MOV R9,R0
17309 ENDASM
17310
17311 CODE STOP
17312 BW1 MOV #$4000,R9
17313     ADD #4,R9
17314     MOV R9,-2(R9)
17315     MOV #WARM,R9
17316     MOV #SYS_OUT,2(R9)
17317     BIC.B #4,&$20A
17318     BIC.B #4,&$20C
17319     MOV #0,&$3C0
17320     MOV #0,&$340
17321     MOV #0,&$342
17322     MOV #COLD,R9
17323     MOV R9,&$FFDE
17324     MOV R9,&$FFEA
17325 COLON
17326 ECHO
17327 ." RC5toLCD is removed,"
17328 ."  type START to restart"
17329  WARM
17330 ;
17331
17332 CODE SYS_INIT
17333 MOV #%10_1101_0100,&$3C0
17334 $1806 @ 16000 = [IF]
17335     MOV #1,&$3E0
17336 [THEN]
17337 $1806 @ 24000 = [IF]
17338     MOV #2,&$3E0
17339 [THEN]
17340     MOV #19,&$3D2
17341 MOV #%0110_0000,&$3C6
17342     MOV #10,&$3D6
17343     BIS.B #$20,&$204
17344     BIS.B #$20,&$20A
17345     BIS.B #7,&$245
17346     BIC.B #7,&$247
17347     BIS.B #$0F,&$224
17348     BIC.B #$0F,&$226
17349     BIS.B #4,&$20A
17350     BIC.B #4,&$20C
17351     MOV #RC5_INT,&$FFDE
17352 MOV #%01_0001_0100,&$340
17353     MOV ##3276,&$352
17354     MOV #%10000,&$342
17355     MOV #WDT_INT,&$FFEA
17356 BIC #1,&$130
17357 BIS.B #3,&$20D
17358 MOV &$1808,R8
17359 CMP #4,R8
17360 0= ?GOTO BW1
17361 COLON
17362     #1000 20_US
17363     %011 TOP_LCD
17364     #205 20_US
17365     %011 TOP_LCD
17366     #5 20_US
17367     %011 TOP_LCD
17368     #2 20_US
17369     %010 TOP_LCD
17370     #2 20_US
17371     %00101000 LCD_WRF
17372     %1000 LCD_WRF
17373     LCD_CLEAR
17374     %0110 LCD_WRF
17375     %1100 LCD_WRF
17376     LCD_CLEAR
17377     ['] LCD_HOME IS CR
17378     ['] LCD_WRC  IS EMIT
17379     CR ." I love you"
17380     ['] CR >BODY IS CR
17381     ['] EMIT >BODY IS EMIT
17382     ." RC5toLCD is running. Type STOP to quit"
17383     PWR_STATE ABORT
17384 ;
17385
17386 CODE START
17387 MOV #$4000,R9
17388 MOV #BACKGROUND,2(R9)
17389 MOV #WARM,R9
17390 MOV #SYS_INIT,2(R9)
17391 MOV R9,R0
17392 ENDCODE 
17393 PWR_STATE
17394
17395 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
17396
17397 MARKER {RC5TOLCD}
17398
17399 [UNDEFINED] @ [IF]
17400 CODE @
17401 MOV @R14,R14
17402 MOV @R13+,R0
17403 ENDCODE
17404 [THEN]
17405
17406 [UNDEFINED] CONSTANT [IF]
17407 : CONSTANT 
17408 CREATE
17409 HI2LO
17410 MOV R14,-2(R10)
17411 MOV @R15+,R14
17412 MOV @R1+,R13
17413 MOV @R13+,R0
17414 ENDCODE
17415 [THEN]
17416
17417 [UNDEFINED] STATE [IF]
17418 $1DBE CONSTANT STATE
17419 [THEN]
17420
17421 [UNDEFINED] = [IF]
17422 CODE =
17423 SUB @R15+,R14
17424 0<> IF
17425     AND #0,R14
17426     MOV @R13+,R0
17427 THEN
17428 XOR #-1,R14
17429 MOV @R13+,R0
17430 ENDCODE
17431 [THEN]
17432
17433 [UNDEFINED] IF [IF]
17434 CODE IF
17435 SUB #2,R15
17436 MOV R14,0(R15)
17437 MOV &$1DC6,R14
17438 ADD #4,&$1DC6
17439 MOV #$4042,0(R14)
17440 ADD #2,R14
17441 MOV @R13+,R0
17442 ENDCODE IMMEDIATE
17443
17444 CODE THEN
17445 MOV &$1DC6,0(R14)
17446 MOV @R15+,R14
17447 MOV @R13+,R0
17448 ENDCODE IMMEDIATE
17449 [THEN]
17450
17451 [UNDEFINED] ELSE [IF]
17452 CODE ELSE
17453 ADD #4,&$1DC6
17454 MOV &$1DC6,R10
17455 MOV #$403E,-4(R10)
17456 MOV R10,0(R14)
17457 SUB #2,R10
17458 MOV R10,R14
17459 MOV @R13+,R0
17460 ENDCODE IMMEDIATE
17461 [THEN]
17462
17463 [UNDEFINED] IS [IF]
17464
17465 CODE DEFER!
17466 MOV @R15+,2(R14)
17467 MOV @R15+,R14
17468 MOV @R13+,R0
17469 ENDCODE
17470
17471
17472 : IS
17473 STATE @
17474 IF  POSTPONE ['] POSTPONE DEFER! 
17475 ELSE ' DEFER! 
17476 THEN
17477 ; IMMEDIATE
17478 [THEN]
17479
17480 [UNDEFINED] >BODY [IF]
17481 CODE >BODY
17482 ADD #4,R14
17483 MOV @R13+,R0
17484 ENDCODE
17485 [THEN]
17486
17487
17488 CODE 20_US
17489 BEGIN
17490     BEGIN
17491         BIT #1,&$3C0
17492     0<> UNTIL
17493     BIC #1,&$3C0
17494     SUB #1,R14
17495 U< UNTIL
17496 MOV @R15+,R14
17497 MOV @R13+,R0
17498 ENDCODE
17499
17500 CODE TOP_LCD
17501     BIS.B #4,&$243
17502     BIT.B #1,&$241
17503 0= IF
17504     AND.B #$0F,R14
17505     MOV.B R14,&$222
17506     BIC.B #4,&$243
17507     MOV @R15+,R14
17508     MOV @R13+,R0
17509 THEN
17510     SUB #2,R15
17511     MOV R14,0(R15)
17512     BIC.B #4,&$243
17513     MOV.B &$220,R14
17514     AND.B #$0F,R14
17515     MOV @R13+,R0
17516 ENDCODE
17517
17518 CODE LCD_WRC
17519     BIS.B #2,&$243
17520 BW1 SUB #2,R15
17521     MOV R14,0(R15)
17522     RRUM #4,R14
17523     BIC.B #1,&$243
17524     BIS.B #$0F,&$224
17525 COLON
17526     TOP_LCD 2 20_US
17527     TOP_LCD 2 20_US 
17528 ;
17529
17530 CODE LCD_WRF
17531     BIC.B #2,&$243
17532     GOTO BW1
17533 ENDCODE
17534
17535 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
17536 : LCD_HOME $02 LCD_WRF 100 20_us ;
17537
17538
17539
17540 ASM WDT_INT
17541 ADD #2,R1
17542 BIT.B #$20,&$240
17543 0= IF
17544     CMP #19,&$3D6
17545     U< IF
17546         ADD #1,&$3D6
17547     THEN
17548 ELSE
17549     BIT.B #$40,&$240
17550     0= IF
17551         CMP #3,&$3D6
17552         U>= IF
17553            SUB #1,&$3D6
17554         THEN
17555     THEN
17556 THEN
17557 BW1
17558 MOV @R1+,R0
17559 ENDASM
17560
17561 ASM RC5_INT
17562 ADD #2,R1
17563 $1806 @ 16000 = [IF]
17564     MOV #1,&$3A0
17565 [THEN]
17566 $1806 @ 24000 = [IF]
17567     MOV #2,&$3A0
17568 [THEN]
17569 MOV #1778,R9
17570 MOV #14,R10
17571 BEGIN
17572 MOV #%1011100100,&$380
17573     RRUM    #1,R9
17574     MOV     R9,R8
17575     RRUM    #1,R8
17576     ADD     R9,R8
17577     BEGIN   CMP R8,&$390
17578     U>= UNTIL
17579     BIT.B   #4,&$200
17580     ADDC    R11,R11
17581     MOV.B   &$200,&$208
17582     BIC.B   #4,&$20C
17583     SUB     #1,R10
17584 0<> WHILE
17585     ADD R9,R8
17586     BEGIN
17587         MOV &$390,R9
17588         CMP R8,R9
17589         U>= IF
17590         BIC #$30,&$380
17591         GOTO BW1
17592         THEN
17593         BIT.B #4,&$20C
17594     0<> UNTIL
17595 REPEAT
17596 BIC #$30,&$380
17597 RLAM    #1,R11
17598 MOV.B   R11,R9
17599 RRUM    #2,R9
17600 BIT     #$4000,R11
17601 0= IF   BIS #$40,R9
17602 THEN
17603 RRUM    #3,R11
17604 XOR     @R1,R11
17605 BIT     #$400,R11
17606 0= ?GOTO BW1
17607 XOR #$400,0(R1)
17608 SUB #8,R15
17609 MOV R14,6(R15)
17610 MOV &$1DDC,4(R15)
17611 MOV #$10,&$1DDC
17612 MOV R9,0(R15)
17613 MOV #0,R14
17614 LO2HI
17615     LCD_CLEAR
17616     <# # #S #36 HOLD #>
17617     ['] LCD_WRC IS EMIT
17618     TYPE
17619     ['] EMIT >BODY IS EMIT
17620 HI2LO
17621 MOV @R15+,&$1DDC
17622 MOV @R15+,R14
17623 MOV @R1+,R0
17624 ENDASM
17625
17626 ASM BACKGROUND
17627 BEGIN
17628     CALL &$1814
17629     BIS &$180A,R2
17630 AGAIN
17631 ENDASM
17632
17633 ASM SYS_OUT
17634     MOV #WARM,R9
17635     ADD #4,R9
17636     MOV R9,R0
17637 ENDASM
17638
17639 CODE STOP
17640 BW1 MOV #$4000,R9
17641     ADD #4,R9
17642     MOV R9,-2(R9)
17643     MOV #WARM,R9
17644     MOV #SYS_OUT,2(R9)
17645     BIC.B #4,&$20A
17646     BIC.B #4,&$20C
17647     MOV #0,&$3C0
17648     MOV #0,&$340
17649     MOV #0,&$342
17650     MOV #COLD,R9
17651     MOV R9,&$FFDE
17652     MOV R9,&$FFEA
17653 COLON
17654 ECHO
17655 ." RC5toLCD is removed,"
17656 ."  type START to restart"
17657  WARM
17658 ;
17659
17660 CODE SYS_INIT
17661 MOV #%10_1101_0100,&$3C0
17662 $1806 @ 16000 = [IF]
17663     MOV #1,&$3E0
17664 [THEN]
17665 $1806 @ 24000 = [IF]
17666     MOV #2,&$3E0
17667 [THEN]
17668     MOV #19,&$3D2
17669 MOV #%0110_0000,&$3C6
17670     MOV #10,&$3D6
17671     BIS.B #$20,&$204
17672     BIS.B #$20,&$20A
17673     BIS.B #7,&$245
17674     BIC.B #7,&$247
17675     BIS.B #$0F,&$224
17676     BIC.B #$0F,&$226
17677     BIS.B #4,&$20A
17678     BIC.B #4,&$20C
17679     MOV #RC5_INT,&$FFDE
17680 MOV #%01_0001_0100,&$340
17681     MOV ##3276,&$352
17682     MOV #%10000,&$342
17683     MOV #WDT_INT,&$FFEA
17684 BIC #1,&$130
17685 BIS.B #3,&$20D
17686 MOV &$1808,R8
17687 CMP #4,R8
17688 0= ?GOTO BW1
17689 COLON
17690     #1000 20_US
17691     %011 TOP_LCD
17692     #205 20_US
17693     %011 TOP_LCD
17694     #5 20_US
17695     %011 TOP_LCD
17696     #2 20_US
17697     %010 TOP_LCD
17698     #2 20_US
17699     %00101000 LCD_WRF
17700     %1000 LCD_WRF
17701     LCD_CLEAR
17702     %0110 LCD_WRF
17703     %1100 LCD_WRF
17704     LCD_CLEAR
17705     ['] LCD_HOME IS CR
17706     ['] LCD_WRC  IS EMIT
17707     CR ." I love you"
17708     ['] CR >BODY IS CR
17709     ['] EMIT >BODY IS EMIT
17710     ." RC5toLCD is running. Type STOP to quit"
17711     PWR_STATE ABORT
17712 ;
17713
17714 CODE START
17715 MOV #$4000,R9
17716 MOV #BACKGROUND,2(R9)
17717 MOV #WARM,R9
17718 MOV #SYS_INIT,2(R9)
17719 MOV R9,R0
17720 ENDCODE 
17721 PWR_STATE
17722
17723 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
17724
17725 MARKER {RC5TOLCD}
17726
17727 [UNDEFINED] @ [IF]
17728 CODE @
17729 MOV @R14,R14
17730 MOV @R13+,R0
17731 ENDCODE
17732 [THEN]
17733
17734 [UNDEFINED] CONSTANT [IF]
17735 : CONSTANT 
17736 CREATE
17737 HI2LO
17738 MOV R14,-2(R10)
17739 MOV @R15+,R14
17740 MOV @R1+,R13
17741 MOV @R13+,R0
17742 ENDCODE
17743 [THEN]
17744
17745 [UNDEFINED] STATE [IF]
17746 $1DBE CONSTANT STATE
17747 [THEN]
17748
17749 [UNDEFINED] = [IF]
17750 CODE =
17751 SUB @R15+,R14
17752 0<> IF
17753     AND #0,R14
17754     MOV @R13+,R0
17755 THEN
17756 XOR #-1,R14
17757 MOV @R13+,R0
17758 ENDCODE
17759 [THEN]
17760
17761 [UNDEFINED] IF [IF]
17762 CODE IF
17763 SUB #2,R15
17764 MOV R14,0(R15)
17765 MOV &$1DC6,R14
17766 ADD #4,&$1DC6
17767 MOV #$4042,0(R14)
17768 ADD #2,R14
17769 MOV @R13+,R0
17770 ENDCODE IMMEDIATE
17771
17772 CODE THEN
17773 MOV &$1DC6,0(R14)
17774 MOV @R15+,R14
17775 MOV @R13+,R0
17776 ENDCODE IMMEDIATE
17777 [THEN]
17778
17779 [UNDEFINED] ELSE [IF]
17780 CODE ELSE
17781 ADD #4,&$1DC6
17782 MOV &$1DC6,R10
17783 MOV #$403E,-4(R10)
17784 MOV R10,0(R14)
17785 SUB #2,R10
17786 MOV R10,R14
17787 MOV @R13+,R0
17788 ENDCODE IMMEDIATE
17789 [THEN]
17790
17791 [UNDEFINED] IS [IF]
17792
17793 CODE DEFER!
17794 MOV @R15+,2(R14)
17795 MOV @R15+,R14
17796 MOV @R13+,R0
17797 ENDCODE
17798
17799
17800 : IS
17801 STATE @
17802 IF  POSTPONE ['] POSTPONE DEFER! 
17803 ELSE ' DEFER! 
17804 THEN
17805 ; IMMEDIATE
17806 [THEN]
17807
17808 [UNDEFINED] >BODY [IF]
17809 CODE >BODY
17810 ADD #4,R14
17811 MOV @R13+,R0
17812 ENDCODE
17813 [THEN]
17814
17815
17816 CODE 20_US
17817 BEGIN
17818     BEGIN
17819         BIT #1,&$3C0
17820     0<> UNTIL
17821     BIC #1,&$3C0
17822     SUB #1,R14
17823 U< UNTIL
17824 MOV @R15+,R14
17825 MOV @R13+,R0
17826 ENDCODE
17827
17828 CODE TOP_LCD
17829     BIS.B #4,&$243
17830     BIT.B #1,&$241
17831 0= IF
17832     AND.B #$0F,R14
17833     MOV.B R14,&$222
17834     BIC.B #4,&$243
17835     MOV @R15+,R14
17836     MOV @R13+,R0
17837 THEN
17838     SUB #2,R15
17839     MOV R14,0(R15)
17840     BIC.B #4,&$243
17841     MOV.B &$220,R14
17842     AND.B #$0F,R14
17843     MOV @R13+,R0
17844 ENDCODE
17845
17846 CODE LCD_WRC
17847     BIS.B #2,&$243
17848 BW1 SUB #2,R15
17849     MOV R14,0(R15)
17850     RRUM #4,R14
17851     BIC.B #1,&$243
17852     BIS.B #$0F,&$224
17853 COLON
17854     TOP_LCD 2 20_US
17855     TOP_LCD 2 20_US 
17856 ;
17857
17858 CODE LCD_WRF
17859     BIC.B #2,&$243
17860     GOTO BW1
17861 ENDCODE
17862
17863 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
17864 : LCD_HOME $02 LCD_WRF 100 20_us ;
17865
17866
17867
17868 ASM WDT_INT
17869 ADD #2,R1
17870 BIT.B #$20,&$240
17871 0= IF
17872     CMP #19,&$3D6
17873     U< IF
17874         ADD #1,&$3D6
17875     THEN
17876 ELSE
17877     BIT.B #$40,&$240
17878     0= IF
17879         CMP #3,&$3D6
17880         U>= IF
17881            SUB #1,&$3D6
17882         THEN
17883     THEN
17884 THEN
17885 BW1
17886 MOV @R1+,R0
17887 ENDASM
17888
17889 ASM RC5_INT
17890 ADD #2,R1
17891 $1806 @ 16000 = [IF]
17892     MOV #1,&$3A0
17893 [THEN]
17894 $1806 @ 24000 = [IF]
17895     MOV #2,&$3A0
17896 [THEN]
17897 MOV #1778,R9
17898 MOV #14,R10
17899 BEGIN
17900 MOV #%1011100100,&$380
17901     RRUM    #1,R9
17902     MOV     R9,R8
17903     RRUM    #1,R8
17904     ADD     R9,R8
17905     BEGIN   CMP R8,&$390
17906     U>= UNTIL
17907     BIT.B   #4,&$200
17908     ADDC    R11,R11
17909     MOV.B   &$200,&$208
17910     BIC.B   #4,&$20C
17911     SUB     #1,R10
17912 0<> WHILE
17913     ADD R9,R8
17914     BEGIN
17915         MOV &$390,R9
17916         CMP R8,R9
17917         U>= IF
17918         BIC #$30,&$380
17919         GOTO BW1
17920         THEN
17921         BIT.B #4,&$20C
17922     0<> UNTIL
17923 REPEAT
17924 BIC #$30,&$380
17925 RLAM    #1,R11
17926 MOV.B   R11,R9
17927 RRUM    #2,R9
17928 BIT     #$4000,R11
17929 0= IF   BIS #$40,R9
17930 THEN
17931 RRUM    #3,R11
17932 XOR     @R1,R11
17933 BIT     #$400,R11
17934 0= ?GOTO BW1
17935 XOR #$400,0(R1)
17936 SUB #8,R15
17937 MOV R14,6(R15)
17938 MOV &$1DDC,4(R15)
17939 MOV #$10,&$1DDC
17940 MOV R9,0(R15)
17941 MOV #0,R14
17942 LO2HI
17943     LCD_CLEAR
17944     <# # #S #36 HOLD #>
17945     ['] LCD_WRC IS EMIT
17946     TYPE
17947     ['] EMIT >BODY IS EMIT
17948 HI2LO
17949 MOV @R15+,&$1DDC
17950 MOV @R15+,R14
17951 MOV @R1+,R0
17952 ENDASM
17953
17954 ASM BACKGROUND
17955 BEGIN
17956     CALL &$1814
17957     BIS &$180A,R2
17958 AGAIN
17959 ENDASM
17960
17961 ASM SYS_OUT
17962     MOV #WARM,R9
17963     ADD #4,R9
17964     MOV R9,R0
17965 ENDASM
17966
17967 CODE STOP
17968 BW1 MOV #$4000,R9
17969     ADD #4,R9
17970     MOV R9,-2(R9)
17971     MOV #WARM,R9
17972     MOV #SYS_OUT,2(R9)
17973     BIC.B #4,&$20A
17974     BIC.B #4,&$20C
17975     MOV #0,&$3C0
17976     MOV #0,&$340
17977     MOV #0,&$342
17978     MOV #COLD,R9
17979     MOV R9,&$FFDE
17980     MOV R9,&$FFEA
17981 COLON
17982 ECHO
17983 ." RC5toLCD is removed,"
17984 ."  type START to restart"
17985  WARM
17986 ;
17987
17988 CODE SYS_INIT
17989 MOV #%10_1101_0100,&$3C0
17990 $1806 @ 16000 = [IF]
17991     MOV #1,&$3E0
17992 [THEN]
17993 $1806 @ 24000 = [IF]
17994     MOV #2,&$3E0
17995 [THEN]
17996     MOV #19,&$3D2
17997 MOV #%0110_0000,&$3C6
17998     MOV #10,&$3D6
17999     BIS.B #$20,&$204
18000     BIS.B #$20,&$20A
18001     BIS.B #7,&$245
18002     BIC.B #7,&$247
18003     BIS.B #$0F,&$224
18004     BIC.B #$0F,&$226
18005     BIS.B #4,&$20A
18006     BIC.B #4,&$20C
18007     MOV #RC5_INT,&$FFDE
18008 MOV #%01_0001_0100,&$340
18009     MOV ##3276,&$352
18010     MOV #%10000,&$342
18011     MOV #WDT_INT,&$FFEA
18012 BIC #1,&$130
18013 BIS.B #3,&$20D
18014 MOV &$1808,R8
18015 CMP #4,R8
18016 0= ?GOTO BW1
18017 COLON
18018     #1000 20_US
18019     %011 TOP_LCD
18020     #205 20_US
18021     %011 TOP_LCD
18022     #5 20_US
18023     %011 TOP_LCD
18024     #2 20_US
18025     %010 TOP_LCD
18026     #2 20_US
18027     %00101000 LCD_WRF
18028     %1000 LCD_WRF
18029     LCD_CLEAR
18030     %0110 LCD_WRF
18031     %1100 LCD_WRF
18032     LCD_CLEAR
18033     ['] LCD_HOME IS CR
18034     ['] LCD_WRC  IS EMIT
18035     CR ." I love you"
18036     ['] CR >BODY IS CR
18037     ['] EMIT >BODY IS EMIT
18038     ." RC5toLCD is running. Type STOP to quit"
18039     PWR_STATE ABORT
18040 ;
18041
18042 CODE START
18043 MOV #$4000,R9
18044 MOV #BACKGROUND,2(R9)
18045 MOV #WARM,R9
18046 MOV #SYS_INIT,2(R9)
18047 MOV R9,R0
18048 ENDCODE 
18049 PWR_STATE
18050
18051 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
18052
18053 MARKER {RC5TOLCD}
18054
18055 [UNDEFINED] @ [IF]
18056 CODE @
18057 MOV @R14,R14
18058 MOV @R13+,R0
18059 ENDCODE
18060 [THEN]
18061
18062 [UNDEFINED] CONSTANT [IF]
18063 : CONSTANT 
18064 CREATE
18065 HI2LO
18066 MOV R14,-2(R10)
18067 MOV @R15+,R14
18068 MOV @R1+,R13
18069 MOV @R13+,R0
18070 ENDCODE
18071 [THEN]
18072
18073 [UNDEFINED] STATE [IF]
18074 $1DBE CONSTANT STATE
18075 [THEN]
18076
18077 [UNDEFINED] = [IF]
18078 CODE =
18079 SUB @R15+,R14
18080 0<> IF
18081     AND #0,R14
18082     MOV @R13+,R0
18083 THEN
18084 XOR #-1,R14
18085 MOV @R13+,R0
18086 ENDCODE
18087 [THEN]
18088
18089 [UNDEFINED] IF [IF]
18090 CODE IF
18091 SUB #2,R15
18092 MOV R14,0(R15)
18093 MOV &$1DC6,R14
18094 ADD #4,&$1DC6
18095 MOV #$4042,0(R14)
18096 ADD #2,R14
18097 MOV @R13+,R0
18098 ENDCODE IMMEDIATE
18099
18100 CODE THEN
18101 MOV &$1DC6,0(R14)
18102 MOV @R15+,R14
18103 MOV @R13+,R0
18104 ENDCODE IMMEDIATE
18105 [THEN]
18106
18107 [UNDEFINED] ELSE [IF]
18108 CODE ELSE
18109 ADD #4,&$1DC6
18110 MOV &$1DC6,R10
18111 MOV #$403E,-4(R10)
18112 MOV R10,0(R14)
18113 SUB #2,R10
18114 MOV R10,R14
18115 MOV @R13+,R0
18116 ENDCODE IMMEDIATE
18117 [THEN]
18118
18119 [UNDEFINED] IS [IF]
18120
18121 CODE DEFER!
18122 MOV @R15+,2(R14)
18123 MOV @R15+,R14
18124 MOV @R13+,R0
18125 ENDCODE
18126
18127
18128 : IS
18129 STATE @
18130 IF  POSTPONE ['] POSTPONE DEFER! 
18131 ELSE ' DEFER! 
18132 THEN
18133 ; IMMEDIATE
18134 [THEN]
18135
18136 [UNDEFINED] >BODY [IF]
18137 CODE >BODY
18138 ADD #4,R14
18139 MOV @R13+,R0
18140 ENDCODE
18141 [THEN]
18142
18143
18144 CODE 20_US
18145 BEGIN
18146     BEGIN
18147         BIT #1,&$3C0
18148     0<> UNTIL
18149     BIC #1,&$3C0
18150     SUB #1,R14
18151 U< UNTIL
18152 MOV @R15+,R14
18153 MOV @R13+,R0
18154 ENDCODE
18155
18156 CODE TOP_LCD
18157     BIS.B #4,&$243
18158     BIT.B #1,&$241
18159 0= IF
18160     AND.B #$0F,R14
18161     MOV.B R14,&$222
18162     BIC.B #4,&$243
18163     MOV @R15+,R14
18164     MOV @R13+,R0
18165 THEN
18166     SUB #2,R15
18167     MOV R14,0(R15)
18168     BIC.B #4,&$243
18169     MOV.B &$220,R14
18170     AND.B #$0F,R14
18171     MOV @R13+,R0
18172 ENDCODE
18173
18174 CODE LCD_WRC
18175     BIS.B #2,&$243
18176 BW1 SUB #2,R15
18177     MOV R14,0(R15)
18178     RRUM #4,R14
18179     BIC.B #1,&$243
18180     BIS.B #$0F,&$224
18181 COLON
18182     TOP_LCD 2 20_US
18183     TOP_LCD 2 20_US 
18184 ;
18185
18186 CODE LCD_WRF
18187     BIC.B #2,&$243
18188     GOTO BW1
18189 ENDCODE
18190
18191 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
18192 : LCD_HOME $02 LCD_WRF 100 20_us ;
18193
18194
18195
18196 ASM WDT_INT
18197 ADD #2,R1
18198 BIT.B #$20,&$240
18199 0= IF
18200     CMP #19,&$3D6
18201     U< IF
18202         ADD #1,&$3D6
18203     THEN
18204 ELSE
18205     BIT.B #$40,&$240
18206     0= IF
18207         CMP #3,&$3D6
18208         U>= IF
18209            SUB #1,&$3D6
18210         THEN
18211     THEN
18212 THEN
18213 BW1
18214 MOV @R1+,R0
18215 ENDASM
18216
18217 ASM RC5_INT
18218 ADD #2,R1
18219 $1806 @ 16000 = [IF]
18220     MOV #1,&$3A0
18221 [THEN]
18222 $1806 @ 24000 = [IF]
18223     MOV #2,&$3A0
18224 [THEN]
18225 MOV #1778,R9
18226 MOV #14,R10
18227 BEGIN
18228 MOV #%1011100100,&$380
18229     RRUM    #1,R9
18230     MOV     R9,R8
18231     RRUM    #1,R8
18232     ADD     R9,R8
18233     BEGIN   CMP R8,&$390
18234     U>= UNTIL
18235     BIT.B   #4,&$200
18236     ADDC    R11,R11
18237     MOV.B   &$200,&$208
18238     BIC.B   #4,&$20C
18239     SUB     #1,R10
18240 0<> WHILE
18241     ADD R9,R8
18242     BEGIN
18243         MOV &$390,R9
18244         CMP R8,R9
18245         U>= IF
18246         BIC #$30,&$380
18247         GOTO BW1
18248         THEN
18249         BIT.B #4,&$20C
18250     0<> UNTIL
18251 REPEAT
18252 BIC #$30,&$380
18253 RLAM    #1,R11
18254 MOV.B   R11,R9
18255 RRUM    #2,R9
18256 BIT     #$4000,R11
18257 0= IF   BIS #$40,R9
18258 THEN
18259 RRUM    #3,R11
18260 XOR     @R1,R11
18261 BIT     #$400,R11
18262 0= ?GOTO BW1
18263 XOR #$400,0(R1)
18264 SUB #8,R15
18265 MOV R14,6(R15)
18266 MOV &$1DDC,4(R15)
18267 MOV #$10,&$1DDC
18268 MOV R9,0(R15)
18269 MOV #0,R14
18270 LO2HI
18271     LCD_CLEAR
18272     <# # #S #36 HOLD #>
18273     ['] LCD_WRC IS EMIT
18274     TYPE
18275     ['] EMIT >BODY IS EMIT
18276 HI2LO
18277 MOV @R15+,&$1DDC
18278 MOV @R15+,R14
18279 MOV @R1+,R0
18280 ENDASM
18281
18282 ASM BACKGROUND
18283 BEGIN
18284     CALL &$1814
18285     BIS &$180A,R2
18286 AGAIN
18287 ENDASM
18288
18289 ASM SYS_OUT
18290     MOV #WARM,R9
18291     ADD #4,R9
18292     MOV R9,R0
18293 ENDASM
18294
18295 CODE STOP
18296 BW1 MOV #$4000,R9
18297     ADD #4,R9
18298     MOV R9,-2(R9)
18299     MOV #WARM,R9
18300     MOV #SYS_OUT,2(R9)
18301     BIC.B #4,&$20A
18302     BIC.B #4,&$20C
18303     MOV #0,&$3C0
18304     MOV #0,&$340
18305     MOV #0,&$342
18306     MOV #COLD,R9
18307     MOV R9,&$FFDE
18308     MOV R9,&$FFEA
18309 COLON
18310 ECHO
18311 ." RC5toLCD is removed,"
18312 ."  type START to restart"
18313  WARM
18314 ;
18315
18316 CODE SYS_INIT
18317 MOV #%10_1101_0100,&$3C0
18318 $1806 @ 16000 = [IF]
18319     MOV #1,&$3E0
18320 [THEN]
18321 $1806 @ 24000 = [IF]
18322     MOV #2,&$3E0
18323 [THEN]
18324     MOV #19,&$3D2
18325 MOV #%0110_0000,&$3C6
18326     MOV #10,&$3D6
18327     BIS.B #$20,&$204
18328     BIS.B #$20,&$20A
18329     BIS.B #7,&$245
18330     BIC.B #7,&$247
18331     BIS.B #$0F,&$224
18332     BIC.B #$0F,&$226
18333     BIS.B #4,&$20A
18334     BIC.B #4,&$20C
18335     MOV #RC5_INT,&$FFDE
18336 MOV #%01_0001_0100,&$340
18337     MOV ##3276,&$352
18338     MOV #%10000,&$342
18339     MOV #WDT_INT,&$FFEA
18340 BIC #1,&$130
18341 BIS.B #3,&$20D
18342 MOV &$1808,R8
18343 CMP #4,R8
18344 0= ?GOTO BW1
18345 COLON
18346     #1000 20_US
18347     %011 TOP_LCD
18348     #205 20_US
18349     %011 TOP_LCD
18350     #5 20_US
18351     %011 TOP_LCD
18352     #2 20_US
18353     %010 TOP_LCD
18354     #2 20_US
18355     %00101000 LCD_WRF
18356     %1000 LCD_WRF
18357     LCD_CLEAR
18358     %0110 LCD_WRF
18359     %1100 LCD_WRF
18360     LCD_CLEAR
18361     ['] LCD_HOME IS CR
18362     ['] LCD_WRC  IS EMIT
18363     CR ." I love you"
18364     ['] CR >BODY IS CR
18365     ['] EMIT >BODY IS EMIT
18366     ." RC5toLCD is running. Type STOP to quit"
18367     PWR_STATE ABORT
18368 ;
18369
18370 CODE START
18371 MOV #$4000,R9
18372 MOV #BACKGROUND,2(R9)
18373 MOV #WARM,R9
18374 MOV #SYS_INIT,2(R9)
18375 MOV R9,R0
18376 ENDCODE 
18377 PWR_STATE
18378
18379 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
18380
18381 MARKER {RC5TOLCD}
18382
18383 [UNDEFINED] @ [IF]
18384 CODE @
18385 MOV @R14,R14
18386 MOV @R13+,R0
18387 ENDCODE
18388 [THEN]
18389
18390 [UNDEFINED] CONSTANT [IF]
18391 : CONSTANT 
18392 CREATE
18393 HI2LO
18394 MOV R14,-2(R10)
18395 MOV @R15+,R14
18396 MOV @R1+,R13
18397 MOV @R13+,R0
18398 ENDCODE
18399 [THEN]
18400
18401 [UNDEFINED] STATE [IF]
18402 $1DBE CONSTANT STATE
18403 [THEN]
18404
18405 [UNDEFINED] = [IF]
18406 CODE =
18407 SUB @R15+,R14
18408 0<> IF
18409     AND #0,R14
18410     MOV @R13+,R0
18411 THEN
18412 XOR #-1,R14
18413 MOV @R13+,R0
18414 ENDCODE
18415 [THEN]
18416
18417 [UNDEFINED] IF [IF]
18418 CODE IF
18419 SUB #2,R15
18420 MOV R14,0(R15)
18421 MOV &$1DC6,R14
18422 ADD #4,&$1DC6
18423 MOV #$4042,0(R14)
18424 ADD #2,R14
18425 MOV @R13+,R0
18426 ENDCODE IMMEDIATE
18427
18428 CODE THEN
18429 MOV &$1DC6,0(R14)
18430 MOV @R15+,R14
18431 MOV @R13+,R0
18432 ENDCODE IMMEDIATE
18433 [THEN]
18434
18435 [UNDEFINED] ELSE [IF]
18436 CODE ELSE
18437 ADD #4,&$1DC6
18438 MOV &$1DC6,R10
18439 MOV #$403E,-4(R10)
18440 MOV R10,0(R14)
18441 SUB #2,R10
18442 MOV R10,R14
18443 MOV @R13+,R0
18444 ENDCODE IMMEDIATE
18445 [THEN]
18446
18447 [UNDEFINED] IS [IF]
18448
18449 CODE DEFER!
18450 MOV @R15+,2(R14)
18451 MOV @R15+,R14
18452 MOV @R13+,R0
18453 ENDCODE
18454
18455
18456 : IS
18457 STATE @
18458 IF  POSTPONE ['] POSTPONE DEFER! 
18459 ELSE ' DEFER! 
18460 THEN
18461 ; IMMEDIATE
18462 [THEN]
18463
18464 [UNDEFINED] >BODY [IF]
18465 CODE >BODY
18466 ADD #4,R14
18467 MOV @R13+,R0
18468 ENDCODE
18469 [THEN]
18470
18471
18472 CODE 20_US
18473 BEGIN
18474     BEGIN
18475         BIT #1,&$3C0
18476     0<> UNTIL
18477     BIC #1,&$3C0
18478     SUB #1,R14
18479 U< UNTIL
18480 MOV @R15+,R14
18481 MOV @R13+,R0
18482 ENDCODE
18483
18484 CODE TOP_LCD
18485     BIS.B #4,&$243
18486     BIT.B #1,&$241
18487 0= IF
18488     AND.B #$0F,R14
18489     MOV.B R14,&$222
18490     BIC.B #4,&$243
18491     MOV @R15+,R14
18492     MOV @R13+,R0
18493 THEN
18494     SUB #2,R15
18495     MOV R14,0(R15)
18496     BIC.B #4,&$243
18497     MOV.B &$220,R14
18498     AND.B #$0F,R14
18499     MOV @R13+,R0
18500 ENDCODE
18501
18502 CODE LCD_WRC
18503     BIS.B #2,&$243
18504 BW1 SUB #2,R15
18505     MOV R14,0(R15)
18506     RRUM #4,R14
18507     BIC.B #1,&$243
18508     BIS.B #$0F,&$224
18509 COLON
18510     TOP_LCD 2 20_US
18511     TOP_LCD 2 20_US 
18512 ;
18513
18514 CODE LCD_WRF
18515     BIC.B #2,&$243
18516     GOTO BW1
18517 ENDCODE
18518
18519 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
18520 : LCD_HOME $02 LCD_WRF 100 20_us ;
18521
18522
18523
18524 ASM WDT_INT
18525 ADD #2,R1
18526 BIT.B #$20,&$240
18527 0= IF
18528     CMP #19,&$3D6
18529     U< IF
18530         ADD #1,&$3D6
18531     THEN
18532 ELSE
18533     BIT.B #$40,&$240
18534     0= IF
18535         CMP #3,&$3D6
18536         U>= IF
18537            SUB #1,&$3D6
18538         THEN
18539     THEN
18540 THEN
18541 BW1
18542 MOV @R1+,R0
18543 ENDASM
18544
18545 ASM RC5_INT
18546 ADD #2,R1
18547 $1806 @ 16000 = [IF]
18548     MOV #1,&$3A0
18549 [THEN]
18550 $1806 @ 24000 = [IF]
18551     MOV #2,&$3A0
18552 [THEN]
18553 MOV #1778,R9
18554 MOV #14,R10
18555 BEGIN
18556 MOV #%1011100100,&$380
18557     RRUM    #1,R9
18558     MOV     R9,R8
18559     RRUM    #1,R8
18560     ADD     R9,R8
18561     BEGIN   CMP R8,&$390
18562     U>= UNTIL
18563     BIT.B   #4,&$200
18564     ADDC    R11,R11
18565     MOV.B   &$200,&$208
18566     BIC.B   #4,&$20C
18567     SUB     #1,R10
18568 0<> WHILE
18569     ADD R9,R8
18570     BEGIN
18571         MOV &$390,R9
18572         CMP R8,R9
18573         U>= IF
18574         BIC #$30,&$380
18575         GOTO BW1
18576         THEN
18577         BIT.B #4,&$20C
18578     0<> UNTIL
18579 REPEAT
18580 BIC #$30,&$380
18581 RLAM    #1,R11
18582 MOV.B   R11,R9
18583 RRUM    #2,R9
18584 BIT     #$4000,R11
18585 0= IF   BIS #$40,R9
18586 THEN
18587 RRUM    #3,R11
18588 XOR     @R1,R11
18589 BIT     #$400,R11
18590 0= ?GOTO BW1
18591 XOR #$400,0(R1)
18592 SUB #8,R15
18593 MOV R14,6(R15)
18594 MOV &$1DDC,4(R15)
18595 MOV #$10,&$1DDC
18596 MOV R9,0(R15)
18597 MOV #0,R14
18598 LO2HI
18599     LCD_CLEAR
18600     <# # #S #36 HOLD #>
18601     ['] LCD_WRC IS EMIT
18602     TYPE
18603     ['] EMIT >BODY IS EMIT
18604 HI2LO
18605 MOV @R15+,&$1DDC
18606 MOV @R15+,R14
18607 MOV @R1+,R0
18608 ENDASM
18609
18610 ASM BACKGROUND
18611 BEGIN
18612     CALL &$1814
18613     BIS &$180A,R2
18614 AGAIN
18615 ENDASM
18616
18617 ASM SYS_OUT
18618     MOV #WARM,R9
18619     ADD #4,R9
18620     MOV R9,R0
18621 ENDASM
18622
18623 CODE STOP
18624 BW1 MOV #$4000,R9
18625     ADD #4,R9
18626     MOV R9,-2(R9)
18627     MOV #WARM,R9
18628     MOV #SYS_OUT,2(R9)
18629     BIC.B #4,&$20A
18630     BIC.B #4,&$20C
18631     MOV #0,&$3C0
18632     MOV #0,&$340
18633     MOV #0,&$342
18634     MOV #COLD,R9
18635     MOV R9,&$FFDE
18636     MOV R9,&$FFEA
18637 COLON
18638 ECHO
18639 ." RC5toLCD is removed,"
18640 ."  type START to restart"
18641  WARM
18642 ;
18643
18644 CODE SYS_INIT
18645 MOV #%10_1101_0100,&$3C0
18646 $1806 @ 16000 = [IF]
18647     MOV #1,&$3E0
18648 [THEN]
18649 $1806 @ 24000 = [IF]
18650     MOV #2,&$3E0
18651 [THEN]
18652     MOV #19,&$3D2
18653 MOV #%0110_0000,&$3C6
18654     MOV #10,&$3D6
18655     BIS.B #$20,&$204
18656     BIS.B #$20,&$20A
18657     BIS.B #7,&$245
18658     BIC.B #7,&$247
18659     BIS.B #$0F,&$224
18660     BIC.B #$0F,&$226
18661     BIS.B #4,&$20A
18662     BIC.B #4,&$20C
18663     MOV #RC5_INT,&$FFDE
18664 MOV #%01_0001_0100,&$340
18665     MOV ##3276,&$352
18666     MOV #%10000,&$342
18667     MOV #WDT_INT,&$FFEA
18668 BIC #1,&$130
18669 BIS.B #3,&$20D
18670 MOV &$1808,R8
18671 CMP #4,R8
18672 0= ?GOTO BW1
18673 COLON
18674     #1000 20_US
18675     %011 TOP_LCD
18676     #205 20_US
18677     %011 TOP_LCD
18678     #5 20_US
18679     %011 TOP_LCD
18680     #2 20_US
18681     %010 TOP_LCD
18682     #2 20_US
18683     %00101000 LCD_WRF
18684     %1000 LCD_WRF
18685     LCD_CLEAR
18686     %0110 LCD_WRF
18687     %1100 LCD_WRF
18688     LCD_CLEAR
18689     ['] LCD_HOME IS CR
18690     ['] LCD_WRC  IS EMIT
18691     CR ." I love you"
18692     ['] CR >BODY IS CR
18693     ['] EMIT >BODY IS EMIT
18694     ." RC5toLCD is running. Type STOP to quit"
18695     PWR_STATE ABORT
18696 ;
18697
18698 CODE START
18699 MOV #$4000,R9
18700 MOV #BACKGROUND,2(R9)
18701 MOV #WARM,R9
18702 MOV #SYS_INIT,2(R9)
18703 MOV R9,R0
18704 ENDCODE 
18705 PWR_STATE
18706
18707 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
18708
18709 MARKER {RC5TOLCD}
18710
18711 [UNDEFINED] @ [IF]
18712 CODE @
18713 MOV @R14,R14
18714 MOV @R13+,R0
18715 ENDCODE
18716 [THEN]
18717
18718 [UNDEFINED] CONSTANT [IF]
18719 : CONSTANT 
18720 CREATE
18721 HI2LO
18722 MOV R14,-2(R10)
18723 MOV @R15+,R14
18724 MOV @R1+,R13
18725 MOV @R13+,R0
18726 ENDCODE
18727 [THEN]
18728
18729 [UNDEFINED] STATE [IF]
18730 $1DBE CONSTANT STATE
18731 [THEN]
18732
18733 [UNDEFINED] = [IF]
18734 CODE =
18735 SUB @R15+,R14
18736 0<> IF
18737     AND #0,R14
18738     MOV @R13+,R0
18739 THEN
18740 XOR #-1,R14
18741 MOV @R13+,R0
18742 ENDCODE
18743 [THEN]
18744
18745 [UNDEFINED] IF [IF]
18746 CODE IF
18747 SUB #2,R15
18748 MOV R14,0(R15)
18749 MOV &$1DC6,R14
18750 ADD #4,&$1DC6
18751 MOV #$4042,0(R14)
18752 ADD #2,R14
18753 MOV @R13+,R0
18754 ENDCODE IMMEDIATE
18755
18756 CODE THEN
18757 MOV &$1DC6,0(R14)
18758 MOV @R15+,R14
18759 MOV @R13+,R0
18760 ENDCODE IMMEDIATE
18761 [THEN]
18762
18763 [UNDEFINED] ELSE [IF]
18764 CODE ELSE
18765 ADD #4,&$1DC6
18766 MOV &$1DC6,R10
18767 MOV #$403E,-4(R10)
18768 MOV R10,0(R14)
18769 SUB #2,R10
18770 MOV R10,R14
18771 MOV @R13+,R0
18772 ENDCODE IMMEDIATE
18773 [THEN]
18774
18775 [UNDEFINED] IS [IF]
18776
18777 CODE DEFER!
18778 MOV @R15+,2(R14)
18779 MOV @R15+,R14
18780 MOV @R13+,R0
18781 ENDCODE
18782
18783
18784 : IS
18785 STATE @
18786 IF  POSTPONE ['] POSTPONE DEFER! 
18787 ELSE ' DEFER! 
18788 THEN
18789 ; IMMEDIATE
18790 [THEN]
18791
18792 [UNDEFINED] >BODY [IF]
18793 CODE >BODY
18794 ADD #4,R14
18795 MOV @R13+,R0
18796 ENDCODE
18797 [THEN]
18798
18799
18800 CODE 20_US
18801 BEGIN
18802     BEGIN
18803         BIT #1,&$3C0
18804     0<> UNTIL
18805     BIC #1,&$3C0
18806     SUB #1,R14
18807 U< UNTIL
18808 MOV @R15+,R14
18809 MOV @R13+,R0
18810 ENDCODE
18811
18812 CODE TOP_LCD
18813     BIS.B #4,&$243
18814     BIT.B #1,&$241
18815 0= IF
18816     AND.B #$0F,R14
18817     MOV.B R14,&$222
18818     BIC.B #4,&$243
18819     MOV @R15+,R14
18820     MOV @R13+,R0
18821 THEN
18822     SUB #2,R15
18823     MOV R14,0(R15)
18824     BIC.B #4,&$243
18825     MOV.B &$220,R14
18826     AND.B #$0F,R14
18827     MOV @R13+,R0
18828 ENDCODE
18829
18830 CODE LCD_WRC
18831     BIS.B #2,&$243
18832 BW1 SUB #2,R15
18833     MOV R14,0(R15)
18834     RRUM #4,R14
18835     BIC.B #1,&$243
18836     BIS.B #$0F,&$224
18837 COLON
18838     TOP_LCD 2 20_US
18839     TOP_LCD 2 20_US 
18840 ;
18841
18842 CODE LCD_WRF
18843     BIC.B #2,&$243
18844     GOTO BW1
18845 ENDCODE
18846
18847 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
18848 : LCD_HOME $02 LCD_WRF 100 20_us ;
18849
18850
18851
18852 ASM WDT_INT
18853 ADD #2,R1
18854 BIT.B #$20,&$240
18855 0= IF
18856     CMP #19,&$3D6
18857     U< IF
18858         ADD #1,&$3D6
18859     THEN
18860 ELSE
18861     BIT.B #$40,&$240
18862     0= IF
18863         CMP #3,&$3D6
18864         U>= IF
18865            SUB #1,&$3D6
18866         THEN
18867     THEN
18868 THEN
18869 BW1
18870 MOV @R1+,R0
18871 ENDASM
18872
18873 ASM RC5_INT
18874 ADD #2,R1
18875 $1806 @ 16000 = [IF]
18876     MOV #1,&$3A0
18877 [THEN]
18878 $1806 @ 24000 = [IF]
18879     MOV #2,&$3A0
18880 [THEN]
18881 MOV #1778,R9
18882 MOV #14,R10
18883 BEGIN
18884 MOV #%1011100100,&$380
18885     RRUM    #1,R9
18886     MOV     R9,R8
18887     RRUM    #1,R8
18888     ADD     R9,R8
18889     BEGIN   CMP R8,&$390
18890     U>= UNTIL
18891     BIT.B   #4,&$200
18892     ADDC    R11,R11
18893     MOV.B   &$200,&$208
18894     BIC.B   #4,&$20C
18895     SUB     #1,R10
18896 0<> WHILE
18897     ADD R9,R8
18898     BEGIN
18899         MOV &$390,R9
18900         CMP R8,R9
18901         U>= IF
18902         BIC #$30,&$380
18903         GOTO BW1
18904         THEN
18905         BIT.B #4,&$20C
18906     0<> UNTIL
18907 REPEAT
18908 BIC #$30,&$380
18909 RLAM    #1,R11
18910 MOV.B   R11,R9
18911 RRUM    #2,R9
18912 BIT     #$4000,R11
18913 0= IF   BIS #$40,R9
18914 THEN
18915 RRUM    #3,R11
18916 XOR     @R1,R11
18917 BIT     #$400,R11
18918 0= ?GOTO BW1
18919 XOR #$400,0(R1)
18920 SUB #8,R15
18921 MOV R14,6(R15)
18922 MOV &$1DDC,4(R15)
18923 MOV #$10,&$1DDC
18924 MOV R9,0(R15)
18925 MOV #0,R14
18926 LO2HI
18927     LCD_CLEAR
18928     <# # #S #36 HOLD #>
18929     ['] LCD_WRC IS EMIT
18930     TYPE
18931     ['] EMIT >BODY IS EMIT
18932 HI2LO
18933 MOV @R15+,&$1DDC
18934 MOV @R15+,R14
18935 MOV @R1+,R0
18936 ENDASM
18937
18938 ASM BACKGROUND
18939 BEGIN
18940     CALL &$1814
18941     BIS &$180A,R2
18942 AGAIN
18943 ENDASM
18944
18945 ASM SYS_OUT
18946     MOV #WARM,R9
18947     ADD #4,R9
18948     MOV R9,R0
18949 ENDASM
18950
18951 CODE STOP
18952 BW1 MOV #$4000,R9
18953     ADD #4,R9
18954     MOV R9,-2(R9)
18955     MOV #WARM,R9
18956     MOV #SYS_OUT,2(R9)
18957     BIC.B #4,&$20A
18958     BIC.B #4,&$20C
18959     MOV #0,&$3C0
18960     MOV #0,&$340
18961     MOV #0,&$342
18962     MOV #COLD,R9
18963     MOV R9,&$FFDE
18964     MOV R9,&$FFEA
18965 COLON
18966 ECHO
18967 ." RC5toLCD is removed,"
18968 ."  type START to restart"
18969  WARM
18970 ;
18971
18972 CODE SYS_INIT
18973 MOV #%10_1101_0100,&$3C0
18974 $1806 @ 16000 = [IF]
18975     MOV #1,&$3E0
18976 [THEN]
18977 $1806 @ 24000 = [IF]
18978     MOV #2,&$3E0
18979 [THEN]
18980     MOV #19,&$3D2
18981 MOV #%0110_0000,&$3C6
18982     MOV #10,&$3D6
18983     BIS.B #$20,&$204
18984     BIS.B #$20,&$20A
18985     BIS.B #7,&$245
18986     BIC.B #7,&$247
18987     BIS.B #$0F,&$224
18988     BIC.B #$0F,&$226
18989     BIS.B #4,&$20A
18990     BIC.B #4,&$20C
18991     MOV #RC5_INT,&$FFDE
18992 MOV #%01_0001_0100,&$340
18993     MOV ##3276,&$352
18994     MOV #%10000,&$342
18995     MOV #WDT_INT,&$FFEA
18996 BIC #1,&$130
18997 BIS.B #3,&$20D
18998 MOV &$1808,R8
18999 CMP #4,R8
19000 0= ?GOTO BW1
19001 COLON
19002     #1000 20_US
19003     %011 TOP_LCD
19004     #205 20_US
19005     %011 TOP_LCD
19006     #5 20_US
19007     %011 TOP_LCD
19008     #2 20_US
19009     %010 TOP_LCD
19010     #2 20_US
19011     %00101000 LCD_WRF
19012     %1000 LCD_WRF
19013     LCD_CLEAR
19014     %0110 LCD_WRF
19015     %1100 LCD_WRF
19016     LCD_CLEAR
19017     ['] LCD_HOME IS CR
19018     ['] LCD_WRC  IS EMIT
19019     CR ." I love you"
19020     ['] CR >BODY IS CR
19021     ['] EMIT >BODY IS EMIT
19022     ." RC5toLCD is running. Type STOP to quit"
19023     PWR_STATE ABORT
19024 ;
19025
19026 CODE START
19027 MOV #$4000,R9
19028 MOV #BACKGROUND,2(R9)
19029 MOV #WARM,R9
19030 MOV #SYS_INIT,2(R9)
19031 MOV R9,R0
19032 ENDCODE 
19033 PWR_STATE
19034
19035 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
19036
19037 MARKER {RC5TOLCD}
19038
19039 [UNDEFINED] @ [IF]
19040 CODE @
19041 MOV @R14,R14
19042 MOV @R13+,R0
19043 ENDCODE
19044 [THEN]
19045
19046 [UNDEFINED] CONSTANT [IF]
19047 : CONSTANT 
19048 CREATE
19049 HI2LO
19050 MOV R14,-2(R10)
19051 MOV @R15+,R14
19052 MOV @R1+,R13
19053 MOV @R13+,R0
19054 ENDCODE
19055 [THEN]
19056
19057 [UNDEFINED] STATE [IF]
19058 $1DBE CONSTANT STATE
19059 [THEN]
19060
19061 [UNDEFINED] = [IF]
19062 CODE =
19063 SUB @R15+,R14
19064 0<> IF
19065     AND #0,R14
19066     MOV @R13+,R0
19067 THEN
19068 XOR #-1,R14
19069 MOV @R13+,R0
19070 ENDCODE
19071 [THEN]
19072
19073 [UNDEFINED] IF [IF]
19074 CODE IF
19075 SUB #2,R15
19076 MOV R14,0(R15)
19077 MOV &$1DC6,R14
19078 ADD #4,&$1DC6
19079 MOV #$4042,0(R14)
19080 ADD #2,R14
19081 MOV @R13+,R0
19082 ENDCODE IMMEDIATE
19083
19084 CODE THEN
19085 MOV &$1DC6,0(R14)
19086 MOV @R15+,R14
19087 MOV @R13+,R0
19088 ENDCODE IMMEDIATE
19089 [THEN]
19090
19091 [UNDEFINED] ELSE [IF]
19092 CODE ELSE
19093 ADD #4,&$1DC6
19094 MOV &$1DC6,R10
19095 MOV #$403E,-4(R10)
19096 MOV R10,0(R14)
19097 SUB #2,R10
19098 MOV R10,R14
19099 MOV @R13+,R0
19100 ENDCODE IMMEDIATE
19101 [THEN]
19102
19103 [UNDEFINED] IS [IF]
19104
19105 CODE DEFER!
19106 MOV @R15+,2(R14)
19107 MOV @R15+,R14
19108 MOV @R13+,R0
19109 ENDCODE
19110
19111
19112 : IS
19113 STATE @
19114 IF  POSTPONE ['] POSTPONE DEFER! 
19115 ELSE ' DEFER! 
19116 THEN
19117 ; IMMEDIATE
19118 [THEN]
19119
19120 [UNDEFINED] >BODY [IF]
19121 CODE >BODY
19122 ADD #4,R14
19123 MOV @R13+,R0
19124 ENDCODE
19125 [THEN]
19126
19127
19128 CODE 20_US
19129 BEGIN
19130     BEGIN
19131         BIT #1,&$3C0
19132     0<> UNTIL
19133     BIC #1,&$3C0
19134     SUB #1,R14
19135 U< UNTIL
19136 MOV @R15+,R14
19137 MOV @R13+,R0
19138 ENDCODE
19139
19140 CODE TOP_LCD
19141     BIS.B #4,&$243
19142     BIT.B #1,&$241
19143 0= IF
19144     AND.B #$0F,R14
19145     MOV.B R14,&$222
19146     BIC.B #4,&$243
19147     MOV @R15+,R14
19148     MOV @R13+,R0
19149 THEN
19150     SUB #2,R15
19151     MOV R14,0(R15)
19152     BIC.B #4,&$243
19153     MOV.B &$220,R14
19154     AND.B #$0F,R14
19155     MOV @R13+,R0
19156 ENDCODE
19157
19158 CODE LCD_WRC
19159     BIS.B #2,&$243
19160 BW1 SUB #2,R15
19161     MOV R14,0(R15)
19162     RRUM #4,R14
19163     BIC.B #1,&$243
19164     BIS.B #$0F,&$224
19165 COLON
19166     TOP_LCD 2 20_US
19167     TOP_LCD 2 20_US 
19168 ;
19169
19170 CODE LCD_WRF
19171     BIC.B #2,&$243
19172     GOTO BW1
19173 ENDCODE
19174
19175 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
19176 : LCD_HOME $02 LCD_WRF 100 20_us ;
19177
19178
19179
19180 ASM WDT_INT
19181 ADD #2,R1
19182 BIT.B #$20,&$240
19183 0= IF
19184     CMP #19,&$3D6
19185     U< IF
19186         ADD #1,&$3D6
19187     THEN
19188 ELSE
19189     BIT.B #$40,&$240
19190     0= IF
19191         CMP #3,&$3D6
19192         U>= IF
19193            SUB #1,&$3D6
19194         THEN
19195     THEN
19196 THEN
19197 BW1
19198 MOV @R1+,R0
19199 ENDASM
19200
19201 ASM RC5_INT
19202 ADD #2,R1
19203 $1806 @ 16000 = [IF]
19204     MOV #1,&$3A0
19205 [THEN]
19206 $1806 @ 24000 = [IF]
19207     MOV #2,&$3A0
19208 [THEN]
19209 MOV #1778,R9
19210 MOV #14,R10
19211 BEGIN
19212 MOV #%1011100100,&$380
19213     RRUM    #1,R9
19214     MOV     R9,R8
19215     RRUM    #1,R8
19216     ADD     R9,R8
19217     BEGIN   CMP R8,&$390
19218     U>= UNTIL
19219     BIT.B   #4,&$200
19220     ADDC    R11,R11
19221     MOV.B   &$200,&$208
19222     BIC.B   #4,&$20C
19223     SUB     #1,R10
19224 0<> WHILE
19225     ADD R9,R8
19226     BEGIN
19227         MOV &$390,R9
19228         CMP R8,R9
19229         U>= IF
19230         BIC #$30,&$380
19231         GOTO BW1
19232         THEN
19233         BIT.B #4,&$20C
19234     0<> UNTIL
19235 REPEAT
19236 BIC #$30,&$380
19237 RLAM    #1,R11
19238 MOV.B   R11,R9
19239 RRUM    #2,R9
19240 BIT     #$4000,R11
19241 0= IF   BIS #$40,R9
19242 THEN
19243 RRUM    #3,R11
19244 XOR     @R1,R11
19245 BIT     #$400,R11
19246 0= ?GOTO BW1
19247 XOR #$400,0(R1)
19248 SUB #8,R15
19249 MOV R14,6(R15)
19250 MOV &$1DDC,4(R15)
19251 MOV #$10,&$1DDC
19252 MOV R9,0(R15)
19253 MOV #0,R14
19254 LO2HI
19255     LCD_CLEAR
19256     <# # #S #36 HOLD #>
19257     ['] LCD_WRC IS EMIT
19258     TYPE
19259     ['] EMIT >BODY IS EMIT
19260 HI2LO
19261 MOV @R15+,&$1DDC
19262 MOV @R15+,R14
19263 MOV @R1+,R0
19264 ENDASM
19265
19266 ASM BACKGROUND
19267 BEGIN
19268     CALL &$1814
19269     BIS &$180A,R2
19270 AGAIN
19271 ENDASM
19272
19273 ASM SYS_OUT
19274     MOV #WARM,R9
19275     ADD #4,R9
19276     MOV R9,R0
19277 ENDASM
19278
19279 CODE STOP
19280 BW1 MOV #$4000,R9
19281     ADD #4,R9
19282     MOV R9,-2(R9)
19283     MOV #WARM,R9
19284     MOV #SYS_OUT,2(R9)
19285     BIC.B #4,&$20A
19286     BIC.B #4,&$20C
19287     MOV #0,&$3C0
19288     MOV #0,&$340
19289     MOV #0,&$342
19290     MOV #COLD,R9
19291     MOV R9,&$FFDE
19292     MOV R9,&$FFEA
19293 COLON
19294 ECHO
19295 ." RC5toLCD is removed,"
19296 ."  type START to restart"
19297  WARM
19298 ;
19299
19300 CODE SYS_INIT
19301 MOV #%10_1101_0100,&$3C0
19302 $1806 @ 16000 = [IF]
19303     MOV #1,&$3E0
19304 [THEN]
19305 $1806 @ 24000 = [IF]
19306     MOV #2,&$3E0
19307 [THEN]
19308     MOV #19,&$3D2
19309 MOV #%0110_0000,&$3C6
19310     MOV #10,&$3D6
19311     BIS.B #$20,&$204
19312     BIS.B #$20,&$20A
19313     BIS.B #7,&$245
19314     BIC.B #7,&$247
19315     BIS.B #$0F,&$224
19316     BIC.B #$0F,&$226
19317     BIS.B #4,&$20A
19318     BIC.B #4,&$20C
19319     MOV #RC5_INT,&$FFDE
19320 MOV #%01_0001_0100,&$340
19321     MOV ##3276,&$352
19322     MOV #%10000,&$342
19323     MOV #WDT_INT,&$FFEA
19324 BIC #1,&$130
19325 BIS.B #3,&$20D
19326 MOV &$1808,R8
19327 CMP #4,R8
19328 0= ?GOTO BW1
19329 COLON
19330     #1000 20_US
19331     %011 TOP_LCD
19332     #205 20_US
19333     %011 TOP_LCD
19334     #5 20_US
19335     %011 TOP_LCD
19336     #2 20_US
19337     %010 TOP_LCD
19338     #2 20_US
19339     %00101000 LCD_WRF
19340     %1000 LCD_WRF
19341     LCD_CLEAR
19342     %0110 LCD_WRF
19343     %1100 LCD_WRF
19344     LCD_CLEAR
19345     ['] LCD_HOME IS CR
19346     ['] LCD_WRC  IS EMIT
19347     CR ." I love you"
19348     ['] CR >BODY IS CR
19349     ['] EMIT >BODY IS EMIT
19350     ." RC5toLCD is running. Type STOP to quit"
19351     PWR_STATE ABORT
19352 ;
19353
19354 CODE START
19355 MOV #$4000,R9
19356 MOV #BACKGROUND,2(R9)
19357 MOV #WARM,R9
19358 MOV #SYS_INIT,2(R9)
19359 MOV R9,R0
19360 ENDCODE 
19361 PWR_STATE
19362
19363 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
19364
19365 MARKER {RC5TOLCD}
19366
19367 [UNDEFINED] @ [IF]
19368 CODE @
19369 MOV @R14,R14
19370 MOV @R13+,R0
19371 ENDCODE
19372 [THEN]
19373
19374 [UNDEFINED] CONSTANT [IF]
19375 : CONSTANT 
19376 CREATE
19377 HI2LO
19378 MOV R14,-2(R10)
19379 MOV @R15+,R14
19380 MOV @R1+,R13
19381 MOV @R13+,R0
19382 ENDCODE
19383 [THEN]
19384
19385 [UNDEFINED] STATE [IF]
19386 $1DBE CONSTANT STATE
19387 [THEN]
19388
19389 [UNDEFINED] = [IF]
19390 CODE =
19391 SUB @R15+,R14
19392 0<> IF
19393     AND #0,R14
19394     MOV @R13+,R0
19395 THEN
19396 XOR #-1,R14
19397 MOV @R13+,R0
19398 ENDCODE
19399 [THEN]
19400
19401 [UNDEFINED] IF [IF]
19402 CODE IF
19403 SUB #2,R15
19404 MOV R14,0(R15)
19405 MOV &$1DC6,R14
19406 ADD #4,&$1DC6
19407 MOV #$4042,0(R14)
19408 ADD #2,R14
19409 MOV @R13+,R0
19410 ENDCODE IMMEDIATE
19411
19412 CODE THEN
19413 MOV &$1DC6,0(R14)
19414 MOV @R15+,R14
19415 MOV @R13+,R0
19416 ENDCODE IMMEDIATE
19417 [THEN]
19418
19419 [UNDEFINED] ELSE [IF]
19420 CODE ELSE
19421 ADD #4,&$1DC6
19422 MOV &$1DC6,R10
19423 MOV #$403E,-4(R10)
19424 MOV R10,0(R14)
19425 SUB #2,R10
19426 MOV R10,R14
19427 MOV @R13+,R0
19428 ENDCODE IMMEDIATE
19429 [THEN]
19430
19431 [UNDEFINED] IS [IF]
19432
19433 CODE DEFER!
19434 MOV @R15+,2(R14)
19435 MOV @R15+,R14
19436 MOV @R13+,R0
19437 ENDCODE
19438
19439
19440 : IS
19441 STATE @
19442 IF  POSTPONE ['] POSTPONE DEFER! 
19443 ELSE ' DEFER! 
19444 THEN
19445 ; IMMEDIATE
19446 [THEN]
19447
19448 [UNDEFINED] >BODY [IF]
19449 CODE >BODY
19450 ADD #4,R14
19451 MOV @R13+,R0
19452 ENDCODE
19453 [THEN]
19454
19455
19456 CODE 20_US
19457 BEGIN
19458     BEGIN
19459         BIT #1,&$3C0
19460     0<> UNTIL
19461     BIC #1,&$3C0
19462     SUB #1,R14
19463 U< UNTIL
19464 MOV @R15+,R14
19465 MOV @R13+,R0
19466 ENDCODE
19467
19468 CODE TOP_LCD
19469     BIS.B #4,&$243
19470     BIT.B #1,&$241
19471 0= IF
19472     AND.B #$0F,R14
19473     MOV.B R14,&$222
19474     BIC.B #4,&$243
19475     MOV @R15+,R14
19476     MOV @R13+,R0
19477 THEN
19478     SUB #2,R15
19479     MOV R14,0(R15)
19480     BIC.B #4,&$243
19481     MOV.B &$220,R14
19482     AND.B #$0F,R14
19483     MOV @R13+,R0
19484 ENDCODE
19485
19486 CODE LCD_WRC
19487     BIS.B #2,&$243
19488 BW1 SUB #2,R15
19489     MOV R14,0(R15)
19490     RRUM #4,R14
19491     BIC.B #1,&$243
19492     BIS.B #$0F,&$224
19493 COLON
19494     TOP_LCD 2 20_US
19495     TOP_LCD 2 20_US 
19496 ;
19497
19498 CODE LCD_WRF
19499     BIC.B #2,&$243
19500     GOTO BW1
19501 ENDCODE
19502
19503 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
19504 : LCD_HOME $02 LCD_WRF 100 20_us ;
19505
19506
19507
19508 ASM WDT_INT
19509 ADD #2,R1
19510 BIT.B #$20,&$240
19511 0= IF
19512     CMP #19,&$3D6
19513     U< IF
19514         ADD #1,&$3D6
19515     THEN
19516 ELSE
19517     BIT.B #$40,&$240
19518     0= IF
19519         CMP #3,&$3D6
19520         U>= IF
19521            SUB #1,&$3D6
19522         THEN
19523     THEN
19524 THEN
19525 BW1
19526 MOV @R1+,R0
19527 ENDASM
19528
19529 ASM RC5_INT
19530 ADD #2,R1
19531 $1806 @ 16000 = [IF]
19532     MOV #1,&$3A0
19533 [THEN]
19534 $1806 @ 24000 = [IF]
19535     MOV #2,&$3A0
19536 [THEN]
19537 MOV #1778,R9
19538 MOV #14,R10
19539 BEGIN
19540 MOV #%1011100100,&$380
19541     RRUM    #1,R9
19542     MOV     R9,R8
19543     RRUM    #1,R8
19544     ADD     R9,R8
19545     BEGIN   CMP R8,&$390
19546     U>= UNTIL
19547     BIT.B   #4,&$200
19548     ADDC    R11,R11
19549     MOV.B   &$200,&$208
19550     BIC.B   #4,&$20C
19551     SUB     #1,R10
19552 0<> WHILE
19553     ADD R9,R8
19554     BEGIN
19555         MOV &$390,R9
19556         CMP R8,R9
19557         U>= IF
19558         BIC #$30,&$380
19559         GOTO BW1
19560         THEN
19561         BIT.B #4,&$20C
19562     0<> UNTIL
19563 REPEAT
19564 BIC #$30,&$380
19565 RLAM    #1,R11
19566 MOV.B   R11,R9
19567 RRUM    #2,R9
19568 BIT     #$4000,R11
19569 0= IF   BIS #$40,R9
19570 THEN
19571 RRUM    #3,R11
19572 XOR     @R1,R11
19573 BIT     #$400,R11
19574 0= ?GOTO BW1
19575 XOR #$400,0(R1)
19576 SUB #8,R15
19577 MOV R14,6(R15)
19578 MOV &$1DDC,4(R15)
19579 MOV #$10,&$1DDC
19580 MOV R9,0(R15)
19581 MOV #0,R14
19582 LO2HI
19583     LCD_CLEAR
19584     <# # #S #36 HOLD #>
19585     ['] LCD_WRC IS EMIT
19586     TYPE
19587     ['] EMIT >BODY IS EMIT
19588 HI2LO
19589 MOV @R15+,&$1DDC
19590 MOV @R15+,R14
19591 MOV @R1+,R0
19592 ENDASM
19593
19594 ASM BACKGROUND
19595 BEGIN
19596     CALL &$1814
19597     BIS &$180A,R2
19598 AGAIN
19599 ENDASM
19600
19601 ASM SYS_OUT
19602     MOV #WARM,R9
19603     ADD #4,R9
19604     MOV R9,R0
19605 ENDASM
19606
19607 CODE STOP
19608 BW1 MOV #$4000,R9
19609     ADD #4,R9
19610     MOV R9,-2(R9)
19611     MOV #WARM,R9
19612     MOV #SYS_OUT,2(R9)
19613     BIC.B #4,&$20A
19614     BIC.B #4,&$20C
19615     MOV #0,&$3C0
19616     MOV #0,&$340
19617     MOV #0,&$342
19618     MOV #COLD,R9
19619     MOV R9,&$FFDE
19620     MOV R9,&$FFEA
19621 COLON
19622 ECHO
19623 ." RC5toLCD is removed,"
19624 ."  type START to restart"
19625  WARM
19626 ;
19627
19628 CODE SYS_INIT
19629 MOV #%10_1101_0100,&$3C0
19630 $1806 @ 16000 = [IF]
19631     MOV #1,&$3E0
19632 [THEN]
19633 $1806 @ 24000 = [IF]
19634     MOV #2,&$3E0
19635 [THEN]
19636     MOV #19,&$3D2
19637 MOV #%0110_0000,&$3C6
19638     MOV #10,&$3D6
19639     BIS.B #$20,&$204
19640     BIS.B #$20,&$20A
19641     BIS.B #7,&$245
19642     BIC.B #7,&$247
19643     BIS.B #$0F,&$224
19644     BIC.B #$0F,&$226
19645     BIS.B #4,&$20A
19646     BIC.B #4,&$20C
19647     MOV #RC5_INT,&$FFDE
19648 MOV #%01_0001_0100,&$340
19649     MOV ##3276,&$352
19650     MOV #%10000,&$342
19651     MOV #WDT_INT,&$FFEA
19652 BIC #1,&$130
19653 BIS.B #3,&$20D
19654 MOV &$1808,R8
19655 CMP #4,R8
19656 0= ?GOTO BW1
19657 COLON
19658     #1000 20_US
19659     %011 TOP_LCD
19660     #205 20_US
19661     %011 TOP_LCD
19662     #5 20_US
19663     %011 TOP_LCD
19664     #2 20_US
19665     %010 TOP_LCD
19666     #2 20_US
19667     %00101000 LCD_WRF
19668     %1000 LCD_WRF
19669     LCD_CLEAR
19670     %0110 LCD_WRF
19671     %1100 LCD_WRF
19672     LCD_CLEAR
19673     ['] LCD_HOME IS CR
19674     ['] LCD_WRC  IS EMIT
19675     CR ." I love you"
19676     ['] CR >BODY IS CR
19677     ['] EMIT >BODY IS EMIT
19678     ." RC5toLCD is running. Type STOP to quit"
19679     PWR_STATE ABORT
19680 ;
19681
19682 CODE START
19683 MOV #$4000,R9
19684 MOV #BACKGROUND,2(R9)
19685 MOV #WARM,R9
19686 MOV #SYS_INIT,2(R9)
19687 MOV R9,R0
19688 ENDCODE 
19689 PWR_STATE
19690
19691 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
19692
19693 MARKER {RC5TOLCD}
19694
19695 [UNDEFINED] @ [IF]
19696 CODE @
19697 MOV @R14,R14
19698 MOV @R13+,R0
19699 ENDCODE
19700 [THEN]
19701
19702 [UNDEFINED] CONSTANT [IF]
19703 : CONSTANT 
19704 CREATE
19705 HI2LO
19706 MOV R14,-2(R10)
19707 MOV @R15+,R14
19708 MOV @R1+,R13
19709 MOV @R13+,R0
19710 ENDCODE
19711 [THEN]
19712
19713 [UNDEFINED] STATE [IF]
19714 $1DBE CONSTANT STATE
19715 [THEN]
19716
19717 [UNDEFINED] = [IF]
19718 CODE =
19719 SUB @R15+,R14
19720 0<> IF
19721     AND #0,R14
19722     MOV @R13+,R0
19723 THEN
19724 XOR #-1,R14
19725 MOV @R13+,R0
19726 ENDCODE
19727 [THEN]
19728
19729 [UNDEFINED] IF [IF]
19730 CODE IF
19731 SUB #2,R15
19732 MOV R14,0(R15)
19733 MOV &$1DC6,R14
19734 ADD #4,&$1DC6
19735 MOV #$4042,0(R14)
19736 ADD #2,R14
19737 MOV @R13+,R0
19738 ENDCODE IMMEDIATE
19739
19740 CODE THEN
19741 MOV &$1DC6,0(R14)
19742 MOV @R15+,R14
19743 MOV @R13+,R0
19744 ENDCODE IMMEDIATE
19745 [THEN]
19746
19747 [UNDEFINED] ELSE [IF]
19748 CODE ELSE
19749 ADD #4,&$1DC6
19750 MOV &$1DC6,R10
19751 MOV #$403E,-4(R10)
19752 MOV R10,0(R14)
19753 SUB #2,R10
19754 MOV R10,R14
19755 MOV @R13+,R0
19756 ENDCODE IMMEDIATE
19757 [THEN]
19758
19759 [UNDEFINED] IS [IF]
19760
19761 CODE DEFER!
19762 MOV @R15+,2(R14)
19763 MOV @R15+,R14
19764 MOV @R13+,R0
19765 ENDCODE
19766
19767
19768 : IS
19769 STATE @
19770 IF  POSTPONE ['] POSTPONE DEFER! 
19771 ELSE ' DEFER! 
19772 THEN
19773 ; IMMEDIATE
19774 [THEN]
19775
19776 [UNDEFINED] >BODY [IF]
19777 CODE >BODY
19778 ADD #4,R14
19779 MOV @R13+,R0
19780 ENDCODE
19781 [THEN]
19782
19783
19784 CODE 20_US
19785 BEGIN
19786     BEGIN
19787         BIT #1,&$3C0
19788     0<> UNTIL
19789     BIC #1,&$3C0
19790     SUB #1,R14
19791 U< UNTIL
19792 MOV @R15+,R14
19793 MOV @R13+,R0
19794 ENDCODE
19795
19796 CODE TOP_LCD
19797     BIS.B #4,&$243
19798     BIT.B #1,&$241
19799 0= IF
19800     AND.B #$0F,R14
19801     MOV.B R14,&$222
19802     BIC.B #4,&$243
19803     MOV @R15+,R14
19804     MOV @R13+,R0
19805 THEN
19806     SUB #2,R15
19807     MOV R14,0(R15)
19808     BIC.B #4,&$243
19809     MOV.B &$220,R14
19810     AND.B #$0F,R14
19811     MOV @R13+,R0
19812 ENDCODE
19813
19814 CODE LCD_WRC
19815     BIS.B #2,&$243
19816 BW1 SUB #2,R15
19817     MOV R14,0(R15)
19818     RRUM #4,R14
19819     BIC.B #1,&$243
19820     BIS.B #$0F,&$224
19821 COLON
19822     TOP_LCD 2 20_US
19823     TOP_LCD 2 20_US 
19824 ;
19825
19826 CODE LCD_WRF
19827     BIC.B #2,&$243
19828     GOTO BW1
19829 ENDCODE
19830
19831 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
19832 : LCD_HOME $02 LCD_WRF 100 20_us ;
19833
19834
19835
19836 ASM WDT_INT
19837 ADD #2,R1
19838 BIT.B #$20,&$240
19839 0= IF
19840     CMP #19,&$3D6
19841     U< IF
19842         ADD #1,&$3D6
19843     THEN
19844 ELSE
19845     BIT.B #$40,&$240
19846     0= IF
19847         CMP #3,&$3D6
19848         U>= IF
19849            SUB #1,&$3D6
19850         THEN
19851     THEN
19852 THEN
19853 BW1
19854 MOV @R1+,R0
19855 ENDASM
19856
19857 ASM RC5_INT
19858 ADD #2,R1
19859 $1806 @ 16000 = [IF]
19860     MOV #1,&$3A0
19861 [THEN]
19862 $1806 @ 24000 = [IF]
19863     MOV #2,&$3A0
19864 [THEN]
19865 MOV #1778,R9
19866 MOV #14,R10
19867 BEGIN
19868 MOV #%1011100100,&$380
19869     RRUM    #1,R9
19870     MOV     R9,R8
19871     RRUM    #1,R8
19872     ADD     R9,R8
19873     BEGIN   CMP R8,&$390
19874     U>= UNTIL
19875     BIT.B   #4,&$200
19876     ADDC    R11,R11
19877     MOV.B   &$200,&$208
19878     BIC.B   #4,&$20C
19879     SUB     #1,R10
19880 0<> WHILE
19881     ADD R9,R8
19882     BEGIN
19883         MOV &$390,R9
19884         CMP R8,R9
19885         U>= IF
19886         BIC #$30,&$380
19887         GOTO BW1
19888         THEN
19889         BIT.B #4,&$20C
19890     0<> UNTIL
19891 REPEAT
19892 BIC #$30,&$380
19893 RLAM    #1,R11
19894 MOV.B   R11,R9
19895 RRUM    #2,R9
19896 BIT     #$4000,R11
19897 0= IF   BIS #$40,R9
19898 THEN
19899 RRUM    #3,R11
19900 XOR     @R1,R11
19901 BIT     #$400,R11
19902 0= ?GOTO BW1
19903 XOR #$400,0(R1)
19904 SUB #8,R15
19905 MOV R14,6(R15)
19906 MOV &$1DDC,4(R15)
19907 MOV #$10,&$1DDC
19908 MOV R9,0(R15)
19909 MOV #0,R14
19910 LO2HI
19911     LCD_CLEAR
19912     <# # #S #36 HOLD #>
19913     ['] LCD_WRC IS EMIT
19914     TYPE
19915     ['] EMIT >BODY IS EMIT
19916 HI2LO
19917 MOV @R15+,&$1DDC
19918 MOV @R15+,R14
19919 MOV @R1+,R0
19920 ENDASM
19921
19922 ASM BACKGROUND
19923 BEGIN
19924     CALL &$1814
19925     BIS &$180A,R2
19926 AGAIN
19927 ENDASM
19928
19929 ASM SYS_OUT
19930     MOV #WARM,R9
19931     ADD #4,R9
19932     MOV R9,R0
19933 ENDASM
19934
19935 CODE STOP
19936 BW1 MOV #$4000,R9
19937     ADD #4,R9
19938     MOV R9,-2(R9)
19939     MOV #WARM,R9
19940     MOV #SYS_OUT,2(R9)
19941     BIC.B #4,&$20A
19942     BIC.B #4,&$20C
19943     MOV #0,&$3C0
19944     MOV #0,&$340
19945     MOV #0,&$342
19946     MOV #COLD,R9
19947     MOV R9,&$FFDE
19948     MOV R9,&$FFEA
19949 COLON
19950 ECHO
19951 ." RC5toLCD is removed,"
19952 ."  type START to restart"
19953  WARM
19954 ;
19955
19956 CODE SYS_INIT
19957 MOV #%10_1101_0100,&$3C0
19958 $1806 @ 16000 = [IF]
19959     MOV #1,&$3E0
19960 [THEN]
19961 $1806 @ 24000 = [IF]
19962     MOV #2,&$3E0
19963 [THEN]
19964     MOV #19,&$3D2
19965 MOV #%0110_0000,&$3C6
19966     MOV #10,&$3D6
19967     BIS.B #$20,&$204
19968     BIS.B #$20,&$20A
19969     BIS.B #7,&$245
19970     BIC.B #7,&$247
19971     BIS.B #$0F,&$224
19972     BIC.B #$0F,&$226
19973     BIS.B #4,&$20A
19974     BIC.B #4,&$20C
19975     MOV #RC5_INT,&$FFDE
19976 MOV #%01_0001_0100,&$340
19977     MOV ##3276,&$352
19978     MOV #%10000,&$342
19979     MOV #WDT_INT,&$FFEA
19980 BIC #1,&$130
19981 BIS.B #3,&$20D
19982 MOV &$1808,R8
19983 CMP #4,R8
19984 0= ?GOTO BW1
19985 COLON
19986     #1000 20_US
19987     %011 TOP_LCD
19988     #205 20_US
19989     %011 TOP_LCD
19990     #5 20_US
19991     %011 TOP_LCD
19992     #2 20_US
19993     %010 TOP_LCD
19994     #2 20_US
19995     %00101000 LCD_WRF
19996     %1000 LCD_WRF
19997     LCD_CLEAR
19998     %0110 LCD_WRF
19999     %1100 LCD_WRF
20000     LCD_CLEAR
20001     ['] LCD_HOME IS CR
20002     ['] LCD_WRC  IS EMIT
20003     CR ." I love you"
20004     ['] CR >BODY IS CR
20005     ['] EMIT >BODY IS EMIT
20006     ." RC5toLCD is running. Type STOP to quit"
20007     PWR_STATE ABORT
20008 ;
20009
20010 CODE START
20011 MOV #$4000,R9
20012 MOV #BACKGROUND,2(R9)
20013 MOV #WARM,R9
20014 MOV #SYS_INIT,2(R9)
20015 MOV R9,R0
20016 ENDCODE 
20017 PWR_STATE
20018
20019 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
20020
20021 MARKER {RC5TOLCD}
20022
20023 [UNDEFINED] @ [IF]
20024 CODE @
20025 MOV @R14,R14
20026 MOV @R13+,R0
20027 ENDCODE
20028 [THEN]
20029
20030 [UNDEFINED] CONSTANT [IF]
20031 : CONSTANT 
20032 CREATE
20033 HI2LO
20034 MOV R14,-2(R10)
20035 MOV @R15+,R14
20036 MOV @R1+,R13
20037 MOV @R13+,R0
20038 ENDCODE
20039 [THEN]
20040
20041 [UNDEFINED] STATE [IF]
20042 $1DBE CONSTANT STATE
20043 [THEN]
20044
20045 [UNDEFINED] = [IF]
20046 CODE =
20047 SUB @R15+,R14
20048 0<> IF
20049     AND #0,R14
20050     MOV @R13+,R0
20051 THEN
20052 XOR #-1,R14
20053 MOV @R13+,R0
20054 ENDCODE
20055 [THEN]
20056
20057 [UNDEFINED] IF [IF]
20058 CODE IF
20059 SUB #2,R15
20060 MOV R14,0(R15)
20061 MOV &$1DC6,R14
20062 ADD #4,&$1DC6
20063 MOV #$4042,0(R14)
20064 ADD #2,R14
20065 MOV @R13+,R0
20066 ENDCODE IMMEDIATE
20067
20068 CODE THEN
20069 MOV &$1DC6,0(R14)
20070 MOV @R15+,R14
20071 MOV @R13+,R0
20072 ENDCODE IMMEDIATE
20073 [THEN]
20074
20075 [UNDEFINED] ELSE [IF]
20076 CODE ELSE
20077 ADD #4,&$1DC6
20078 MOV &$1DC6,R10
20079 MOV #$403E,-4(R10)
20080 MOV R10,0(R14)
20081 SUB #2,R10
20082 MOV R10,R14
20083 MOV @R13+,R0
20084 ENDCODE IMMEDIATE
20085 [THEN]
20086
20087 [UNDEFINED] IS [IF]
20088
20089 CODE DEFER!
20090 MOV @R15+,2(R14)
20091 MOV @R15+,R14
20092 MOV @R13+,R0
20093 ENDCODE
20094
20095
20096 : IS
20097 STATE @
20098 IF  POSTPONE ['] POSTPONE DEFER! 
20099 ELSE ' DEFER! 
20100 THEN
20101 ; IMMEDIATE
20102 [THEN]
20103
20104 [UNDEFINED] >BODY [IF]
20105 CODE >BODY
20106 ADD #4,R14
20107 MOV @R13+,R0
20108 ENDCODE
20109 [THEN]
20110
20111
20112 CODE 20_US
20113 BEGIN
20114     BEGIN
20115         BIT #1,&$3C0
20116     0<> UNTIL
20117     BIC #1,&$3C0
20118     SUB #1,R14
20119 U< UNTIL
20120 MOV @R15+,R14
20121 MOV @R13+,R0
20122 ENDCODE
20123
20124 CODE TOP_LCD
20125     BIS.B #4,&$243
20126     BIT.B #1,&$241
20127 0= IF
20128     AND.B #$0F,R14
20129     MOV.B R14,&$222
20130     BIC.B #4,&$243
20131     MOV @R15+,R14
20132     MOV @R13+,R0
20133 THEN
20134     SUB #2,R15
20135     MOV R14,0(R15)
20136     BIC.B #4,&$243
20137     MOV.B &$220,R14
20138     AND.B #$0F,R14
20139     MOV @R13+,R0
20140 ENDCODE
20141
20142 CODE LCD_WRC
20143     BIS.B #2,&$243
20144 BW1 SUB #2,R15
20145     MOV R14,0(R15)
20146     RRUM #4,R14
20147     BIC.B #1,&$243
20148     BIS.B #$0F,&$224
20149 COLON
20150     TOP_LCD 2 20_US
20151     TOP_LCD 2 20_US 
20152 ;
20153
20154 CODE LCD_WRF
20155     BIC.B #2,&$243
20156     GOTO BW1
20157 ENDCODE
20158
20159 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
20160 : LCD_HOME $02 LCD_WRF 100 20_us ;
20161
20162
20163
20164 ASM WDT_INT
20165 ADD #2,R1
20166 BIT.B #$20,&$240
20167 0= IF
20168     CMP #19,&$3D6
20169     U< IF
20170         ADD #1,&$3D6
20171     THEN
20172 ELSE
20173     BIT.B #$40,&$240
20174     0= IF
20175         CMP #3,&$3D6
20176         U>= IF
20177            SUB #1,&$3D6
20178         THEN
20179     THEN
20180 THEN
20181 BW1
20182 MOV @R1+,R0
20183 ENDASM
20184
20185 ASM RC5_INT
20186 ADD #2,R1
20187 $1806 @ 16000 = [IF]
20188     MOV #1,&$3A0
20189 [THEN]
20190 $1806 @ 24000 = [IF]
20191     MOV #2,&$3A0
20192 [THEN]
20193 MOV #1778,R9
20194 MOV #14,R10
20195 BEGIN
20196 MOV #%1011100100,&$380
20197     RRUM    #1,R9
20198     MOV     R9,R8
20199     RRUM    #1,R8
20200     ADD     R9,R8
20201     BEGIN   CMP R8,&$390
20202     U>= UNTIL
20203     BIT.B   #4,&$200
20204     ADDC    R11,R11
20205     MOV.B   &$200,&$208
20206     BIC.B   #4,&$20C
20207     SUB     #1,R10
20208 0<> WHILE
20209     ADD R9,R8
20210     BEGIN
20211         MOV &$390,R9
20212         CMP R8,R9
20213         U>= IF
20214         BIC #$30,&$380
20215         GOTO BW1
20216         THEN
20217         BIT.B #4,&$20C
20218     0<> UNTIL
20219 REPEAT
20220 BIC #$30,&$380
20221 RLAM    #1,R11
20222 MOV.B   R11,R9
20223 RRUM    #2,R9
20224 BIT     #$4000,R11
20225 0= IF   BIS #$40,R9
20226 THEN
20227 RRUM    #3,R11
20228 XOR     @R1,R11
20229 BIT     #$400,R11
20230 0= ?GOTO BW1
20231 XOR #$400,0(R1)
20232 SUB #8,R15
20233 MOV R14,6(R15)
20234 MOV &$1DDC,4(R15)
20235 MOV #$10,&$1DDC
20236 MOV R9,0(R15)
20237 MOV #0,R14
20238 LO2HI
20239     LCD_CLEAR
20240     <# # #S #36 HOLD #>
20241     ['] LCD_WRC IS EMIT
20242     TYPE
20243     ['] EMIT >BODY IS EMIT
20244 HI2LO
20245 MOV @R15+,&$1DDC
20246 MOV @R15+,R14
20247 MOV @R1+,R0
20248 ENDASM
20249
20250 ASM BACKGROUND
20251 BEGIN
20252     CALL &$1814
20253     BIS &$180A,R2
20254 AGAIN
20255 ENDASM
20256
20257 ASM SYS_OUT
20258     MOV #WARM,R9
20259     ADD #4,R9
20260     MOV R9,R0
20261 ENDASM
20262
20263 CODE STOP
20264 BW1 MOV #$4000,R9
20265     ADD #4,R9
20266     MOV R9,-2(R9)
20267     MOV #WARM,R9
20268     MOV #SYS_OUT,2(R9)
20269     BIC.B #4,&$20A
20270     BIC.B #4,&$20C
20271     MOV #0,&$3C0
20272     MOV #0,&$340
20273     MOV #0,&$342
20274     MOV #COLD,R9
20275     MOV R9,&$FFDE
20276     MOV R9,&$FFEA
20277 COLON
20278 ECHO
20279 ." RC5toLCD is removed,"
20280 ."  type START to restart"
20281  WARM
20282 ;
20283
20284 CODE SYS_INIT
20285 MOV #%10_1101_0100,&$3C0
20286 $1806 @ 16000 = [IF]
20287     MOV #1,&$3E0
20288 [THEN]
20289 $1806 @ 24000 = [IF]
20290     MOV #2,&$3E0
20291 [THEN]
20292     MOV #19,&$3D2
20293 MOV #%0110_0000,&$3C6
20294     MOV #10,&$3D6
20295     BIS.B #$20,&$204
20296     BIS.B #$20,&$20A
20297     BIS.B #7,&$245
20298     BIC.B #7,&$247
20299     BIS.B #$0F,&$224
20300     BIC.B #$0F,&$226
20301     BIS.B #4,&$20A
20302     BIC.B #4,&$20C
20303     MOV #RC5_INT,&$FFDE
20304 MOV #%01_0001_0100,&$340
20305     MOV ##3276,&$352
20306     MOV #%10000,&$342
20307     MOV #WDT_INT,&$FFEA
20308 BIC #1,&$130
20309 BIS.B #3,&$20D
20310 MOV &$1808,R8
20311 CMP #4,R8
20312 0= ?GOTO BW1
20313 COLON
20314     #1000 20_US
20315     %011 TOP_LCD
20316     #205 20_US
20317     %011 TOP_LCD
20318     #5 20_US
20319     %011 TOP_LCD
20320     #2 20_US
20321     %010 TOP_LCD
20322     #2 20_US
20323     %00101000 LCD_WRF
20324     %1000 LCD_WRF
20325     LCD_CLEAR
20326     %0110 LCD_WRF
20327     %1100 LCD_WRF
20328     LCD_CLEAR
20329     ['] LCD_HOME IS CR
20330     ['] LCD_WRC  IS EMIT
20331     CR ." I love you"
20332     ['] CR >BODY IS CR
20333     ['] EMIT >BODY IS EMIT
20334     ." RC5toLCD is running. Type STOP to quit"
20335     PWR_STATE ABORT
20336 ;
20337
20338 CODE START
20339 MOV #$4000,R9
20340 MOV #BACKGROUND,2(R9)
20341 MOV #WARM,R9
20342 MOV #SYS_INIT,2(R9)
20343 MOV R9,R0
20344 ENDCODE 
20345 PWR_STATE
20346
20347 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
20348
20349 MARKER {RC5TOLCD}
20350
20351 [UNDEFINED] @ [IF]
20352 CODE @
20353 MOV @R14,R14
20354 MOV @R13+,R0
20355 ENDCODE
20356 [THEN]
20357
20358 [UNDEFINED] CONSTANT [IF]
20359 : CONSTANT 
20360 CREATE
20361 HI2LO
20362 MOV R14,-2(R10)
20363 MOV @R15+,R14
20364 MOV @R1+,R13
20365 MOV @R13+,R0
20366 ENDCODE
20367 [THEN]
20368
20369 [UNDEFINED] STATE [IF]
20370 $1DBE CONSTANT STATE
20371 [THEN]
20372
20373 [UNDEFINED] = [IF]
20374 CODE =
20375 SUB @R15+,R14
20376 0<> IF
20377     AND #0,R14
20378     MOV @R13+,R0
20379 THEN
20380 XOR #-1,R14
20381 MOV @R13+,R0
20382 ENDCODE
20383 [THEN]
20384
20385 [UNDEFINED] IF [IF]
20386 CODE IF
20387 SUB #2,R15
20388 MOV R14,0(R15)
20389 MOV &$1DC6,R14
20390 ADD #4,&$1DC6
20391 MOV #$4042,0(R14)
20392 ADD #2,R14
20393 MOV @R13+,R0
20394 ENDCODE IMMEDIATE
20395
20396 CODE THEN
20397 MOV &$1DC6,0(R14)
20398 MOV @R15+,R14
20399 MOV @R13+,R0
20400 ENDCODE IMMEDIATE
20401 [THEN]
20402
20403 [UNDEFINED] ELSE [IF]
20404 CODE ELSE
20405 ADD #4,&$1DC6
20406 MOV &$1DC6,R10
20407 MOV #$403E,-4(R10)
20408 MOV R10,0(R14)
20409 SUB #2,R10
20410 MOV R10,R14
20411 MOV @R13+,R0
20412 ENDCODE IMMEDIATE
20413 [THEN]
20414
20415 [UNDEFINED] IS [IF]
20416
20417 CODE DEFER!
20418 MOV @R15+,2(R14)
20419 MOV @R15+,R14
20420 MOV @R13+,R0
20421 ENDCODE
20422
20423
20424 : IS
20425 STATE @
20426 IF  POSTPONE ['] POSTPONE DEFER! 
20427 ELSE ' DEFER! 
20428 THEN
20429 ; IMMEDIATE
20430 [THEN]
20431
20432 [UNDEFINED] >BODY [IF]
20433 CODE >BODY
20434 ADD #4,R14
20435 MOV @R13+,R0
20436 ENDCODE
20437 [THEN]
20438
20439
20440 CODE 20_US
20441 BEGIN
20442     BEGIN
20443         BIT #1,&$3C0
20444     0<> UNTIL
20445     BIC #1,&$3C0
20446     SUB #1,R14
20447 U< UNTIL
20448 MOV @R15+,R14
20449 MOV @R13+,R0
20450 ENDCODE
20451
20452 CODE TOP_LCD
20453     BIS.B #4,&$243
20454     BIT.B #1,&$241
20455 0= IF
20456     AND.B #$0F,R14
20457     MOV.B R14,&$222
20458     BIC.B #4,&$243
20459     MOV @R15+,R14
20460     MOV @R13+,R0
20461 THEN
20462     SUB #2,R15
20463     MOV R14,0(R15)
20464     BIC.B #4,&$243
20465     MOV.B &$220,R14
20466     AND.B #$0F,R14
20467     MOV @R13+,R0
20468 ENDCODE
20469
20470 CODE LCD_WRC
20471     BIS.B #2,&$243
20472 BW1 SUB #2,R15
20473     MOV R14,0(R15)
20474     RRUM #4,R14
20475     BIC.B #1,&$243
20476     BIS.B #$0F,&$224
20477 COLON
20478     TOP_LCD 2 20_US
20479     TOP_LCD 2 20_US 
20480 ;
20481
20482 CODE LCD_WRF
20483     BIC.B #2,&$243
20484     GOTO BW1
20485 ENDCODE
20486
20487 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
20488 : LCD_HOME $02 LCD_WRF 100 20_us ;
20489
20490
20491
20492 ASM WDT_INT
20493 ADD #2,R1
20494 BIT.B #$20,&$240
20495 0= IF
20496     CMP #19,&$3D6
20497     U< IF
20498         ADD #1,&$3D6
20499     THEN
20500 ELSE
20501     BIT.B #$40,&$240
20502     0= IF
20503         CMP #3,&$3D6
20504         U>= IF
20505            SUB #1,&$3D6
20506         THEN
20507     THEN
20508 THEN
20509 BW1
20510 MOV @R1+,R0
20511 ENDASM
20512
20513 ASM RC5_INT
20514 ADD #2,R1
20515 $1806 @ 16000 = [IF]
20516     MOV #1,&$3A0
20517 [THEN]
20518 $1806 @ 24000 = [IF]
20519     MOV #2,&$3A0
20520 [THEN]
20521 MOV #1778,R9
20522 MOV #14,R10
20523 BEGIN
20524 MOV #%1011100100,&$380
20525     RRUM    #1,R9
20526     MOV     R9,R8
20527     RRUM    #1,R8
20528     ADD     R9,R8
20529     BEGIN   CMP R8,&$390
20530     U>= UNTIL
20531     BIT.B   #4,&$200
20532     ADDC    R11,R11
20533     MOV.B   &$200,&$208
20534     BIC.B   #4,&$20C
20535     SUB     #1,R10
20536 0<> WHILE
20537     ADD R9,R8
20538     BEGIN
20539         MOV &$390,R9
20540         CMP R8,R9
20541         U>= IF
20542         BIC #$30,&$380
20543         GOTO BW1
20544         THEN
20545         BIT.B #4,&$20C
20546     0<> UNTIL
20547 REPEAT
20548 BIC #$30,&$380
20549 RLAM    #1,R11
20550 MOV.B   R11,R9
20551 RRUM    #2,R9
20552 BIT     #$4000,R11
20553 0= IF   BIS #$40,R9
20554 THEN
20555 RRUM    #3,R11
20556 XOR     @R1,R11
20557 BIT     #$400,R11
20558 0= ?GOTO BW1
20559 XOR #$400,0(R1)
20560 SUB #8,R15
20561 MOV R14,6(R15)
20562 MOV &$1DDC,4(R15)
20563 MOV #$10,&$1DDC
20564 MOV R9,0(R15)
20565 MOV #0,R14
20566 LO2HI
20567     LCD_CLEAR
20568     <# # #S #36 HOLD #>
20569     ['] LCD_WRC IS EMIT
20570     TYPE
20571     ['] EMIT >BODY IS EMIT
20572 HI2LO
20573 MOV @R15+,&$1DDC
20574 MOV @R15+,R14
20575 MOV @R1+,R0
20576 ENDASM
20577
20578 ASM BACKGROUND
20579 BEGIN
20580     CALL &$1814
20581     BIS &$180A,R2
20582 AGAIN
20583 ENDASM
20584
20585 ASM SYS_OUT
20586     MOV #WARM,R9
20587     ADD #4,R9
20588     MOV R9,R0
20589 ENDASM
20590
20591 CODE STOP
20592 BW1 MOV #$4000,R9
20593     ADD #4,R9
20594     MOV R9,-2(R9)
20595     MOV #WARM,R9
20596     MOV #SYS_OUT,2(R9)
20597     BIC.B #4,&$20A
20598     BIC.B #4,&$20C
20599     MOV #0,&$3C0
20600     MOV #0,&$340
20601     MOV #0,&$342
20602     MOV #COLD,R9
20603     MOV R9,&$FFDE
20604     MOV R9,&$FFEA
20605 COLON
20606 ECHO
20607 ." RC5toLCD is removed,"
20608 ."  type START to restart"
20609  WARM
20610 ;
20611
20612 CODE SYS_INIT
20613 MOV #%10_1101_0100,&$3C0
20614 $1806 @ 16000 = [IF]
20615     MOV #1,&$3E0
20616 [THEN]
20617 $1806 @ 24000 = [IF]
20618     MOV #2,&$3E0
20619 [THEN]
20620     MOV #19,&$3D2
20621 MOV #%0110_0000,&$3C6
20622     MOV #10,&$3D6
20623     BIS.B #$20,&$204
20624     BIS.B #$20,&$20A
20625     BIS.B #7,&$245
20626     BIC.B #7,&$247
20627     BIS.B #$0F,&$224
20628     BIC.B #$0F,&$226
20629     BIS.B #4,&$20A
20630     BIC.B #4,&$20C
20631     MOV #RC5_INT,&$FFDE
20632 MOV #%01_0001_0100,&$340
20633     MOV ##3276,&$352
20634     MOV #%10000,&$342
20635     MOV #WDT_INT,&$FFEA
20636 BIC #1,&$130
20637 BIS.B #3,&$20D
20638 MOV &$1808,R8
20639 CMP #4,R8
20640 0= ?GOTO BW1
20641 COLON
20642     #1000 20_US
20643     %011 TOP_LCD
20644     #205 20_US
20645     %011 TOP_LCD
20646     #5 20_US
20647     %011 TOP_LCD
20648     #2 20_US
20649     %010 TOP_LCD
20650     #2 20_US
20651     %00101000 LCD_WRF
20652     %1000 LCD_WRF
20653     LCD_CLEAR
20654     %0110 LCD_WRF
20655     %1100 LCD_WRF
20656     LCD_CLEAR
20657     ['] LCD_HOME IS CR
20658     ['] LCD_WRC  IS EMIT
20659     CR ." I love you"
20660     ['] CR >BODY IS CR
20661     ['] EMIT >BODY IS EMIT
20662     ." RC5toLCD is running. Type STOP to quit"
20663     PWR_STATE ABORT
20664 ;
20665
20666 CODE START
20667 MOV #$4000,R9
20668 MOV #BACKGROUND,2(R9)
20669 MOV #WARM,R9
20670 MOV #SYS_INIT,2(R9)
20671 MOV R9,R0
20672 ENDCODE 
20673 PWR_STATE
20674
20675 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
20676
20677 MARKER {RC5TOLCD}
20678
20679 [UNDEFINED] @ [IF]
20680 CODE @
20681 MOV @R14,R14
20682 MOV @R13+,R0
20683 ENDCODE
20684 [THEN]
20685
20686 [UNDEFINED] CONSTANT [IF]
20687 : CONSTANT 
20688 CREATE
20689 HI2LO
20690 MOV R14,-2(R10)
20691 MOV @R15+,R14
20692 MOV @R1+,R13
20693 MOV @R13+,R0
20694 ENDCODE
20695 [THEN]
20696
20697 [UNDEFINED] STATE [IF]
20698 $1DBE CONSTANT STATE
20699 [THEN]
20700
20701 [UNDEFINED] = [IF]
20702 CODE =
20703 SUB @R15+,R14
20704 0<> IF
20705     AND #0,R14
20706     MOV @R13+,R0
20707 THEN
20708 XOR #-1,R14
20709 MOV @R13+,R0
20710 ENDCODE
20711 [THEN]
20712
20713 [UNDEFINED] IF [IF]
20714 CODE IF
20715 SUB #2,R15
20716 MOV R14,0(R15)
20717 MOV &$1DC6,R14
20718 ADD #4,&$1DC6
20719 MOV #$4042,0(R14)
20720 ADD #2,R14
20721 MOV @R13+,R0
20722 ENDCODE IMMEDIATE
20723
20724 CODE THEN
20725 MOV &$1DC6,0(R14)
20726 MOV @R15+,R14
20727 MOV @R13+,R0
20728 ENDCODE IMMEDIATE
20729 [THEN]
20730
20731 [UNDEFINED] ELSE [IF]
20732 CODE ELSE
20733 ADD #4,&$1DC6
20734 MOV &$1DC6,R10
20735 MOV #$403E,-4(R10)
20736 MOV R10,0(R14)
20737 SUB #2,R10
20738 MOV R10,R14
20739 MOV @R13+,R0
20740 ENDCODE IMMEDIATE
20741 [THEN]
20742
20743 [UNDEFINED] IS [IF]
20744
20745 CODE DEFER!
20746 MOV @R15+,2(R14)
20747 MOV @R15+,R14
20748 MOV @R13+,R0
20749 ENDCODE
20750
20751
20752 : IS
20753 STATE @
20754 IF  POSTPONE ['] POSTPONE DEFER! 
20755 ELSE ' DEFER! 
20756 THEN
20757 ; IMMEDIATE
20758 [THEN]
20759
20760 [UNDEFINED] >BODY [IF]
20761 CODE >BODY
20762 ADD #4,R14
20763 MOV @R13+,R0
20764 ENDCODE
20765 [THEN]
20766
20767
20768 CODE 20_US
20769 BEGIN
20770     BEGIN
20771         BIT #1,&$3C0
20772     0<> UNTIL
20773     BIC #1,&$3C0
20774     SUB #1,R14
20775 U< UNTIL
20776 MOV @R15+,R14
20777 MOV @R13+,R0
20778 ENDCODE
20779
20780 CODE TOP_LCD
20781     BIS.B #4,&$243
20782     BIT.B #1,&$241
20783 0= IF
20784     AND.B #$0F,R14
20785     MOV.B R14,&$222
20786     BIC.B #4,&$243
20787     MOV @R15+,R14
20788     MOV @R13+,R0
20789 THEN
20790     SUB #2,R15
20791     MOV R14,0(R15)
20792     BIC.B #4,&$243
20793     MOV.B &$220,R14
20794     AND.B #$0F,R14
20795     MOV @R13+,R0
20796 ENDCODE
20797
20798 CODE LCD_WRC
20799     BIS.B #2,&$243
20800 BW1 SUB #2,R15
20801     MOV R14,0(R15)
20802     RRUM #4,R14
20803     BIC.B #1,&$243
20804     BIS.B #$0F,&$224
20805 COLON
20806     TOP_LCD 2 20_US
20807     TOP_LCD 2 20_US 
20808 ;
20809
20810 CODE LCD_WRF
20811     BIC.B #2,&$243
20812     GOTO BW1
20813 ENDCODE
20814
20815 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
20816 : LCD_HOME $02 LCD_WRF 100 20_us ;
20817
20818
20819
20820 ASM WDT_INT
20821 ADD #2,R1
20822 BIT.B #$20,&$240
20823 0= IF
20824     CMP #19,&$3D6
20825     U< IF
20826         ADD #1,&$3D6
20827     THEN
20828 ELSE
20829     BIT.B #$40,&$240
20830     0= IF
20831         CMP #3,&$3D6
20832         U>= IF
20833            SUB #1,&$3D6
20834         THEN
20835     THEN
20836 THEN
20837 BW1
20838 MOV @R1+,R0
20839 ENDASM
20840
20841 ASM RC5_INT
20842 ADD #2,R1
20843 $1806 @ 16000 = [IF]
20844     MOV #1,&$3A0
20845 [THEN]
20846 $1806 @ 24000 = [IF]
20847     MOV #2,&$3A0
20848 [THEN]
20849 MOV #1778,R9
20850 MOV #14,R10
20851 BEGIN
20852 MOV #%1011100100,&$380
20853     RRUM    #1,R9
20854     MOV     R9,R8
20855     RRUM    #1,R8
20856     ADD     R9,R8
20857     BEGIN   CMP R8,&$390
20858     U>= UNTIL
20859     BIT.B   #4,&$200
20860     ADDC    R11,R11
20861     MOV.B   &$200,&$208
20862     BIC.B   #4,&$20C
20863     SUB     #1,R10
20864 0<> WHILE
20865     ADD R9,R8
20866     BEGIN
20867         MOV &$390,R9
20868         CMP R8,R9
20869         U>= IF
20870         BIC #$30,&$380
20871         GOTO BW1
20872         THEN
20873         BIT.B #4,&$20C
20874     0<> UNTIL
20875 REPEAT
20876 BIC #$30,&$380
20877 RLAM    #1,R11
20878 MOV.B   R11,R9
20879 RRUM    #2,R9
20880 BIT     #$4000,R11
20881 0= IF   BIS #$40,R9
20882 THEN
20883 RRUM    #3,R11
20884 XOR     @R1,R11
20885 BIT     #$400,R11
20886 0= ?GOTO BW1
20887 XOR #$400,0(R1)
20888 SUB #8,R15
20889 MOV R14,6(R15)
20890 MOV &$1DDC,4(R15)
20891 MOV #$10,&$1DDC
20892 MOV R9,0(R15)
20893 MOV #0,R14
20894 LO2HI
20895     LCD_CLEAR
20896     <# # #S #36 HOLD #>
20897     ['] LCD_WRC IS EMIT
20898     TYPE
20899     ['] EMIT >BODY IS EMIT
20900 HI2LO
20901 MOV @R15+,&$1DDC
20902 MOV @R15+,R14
20903 MOV @R1+,R0
20904 ENDASM
20905
20906 ASM BACKGROUND
20907 BEGIN
20908     CALL &$1814
20909     BIS &$180A,R2
20910 AGAIN
20911 ENDASM
20912
20913 ASM SYS_OUT
20914     MOV #WARM,R9
20915     ADD #4,R9
20916     MOV R9,R0
20917 ENDASM
20918
20919 CODE STOP
20920 BW1 MOV #$4000,R9
20921     ADD #4,R9
20922     MOV R9,-2(R9)
20923     MOV #WARM,R9
20924     MOV #SYS_OUT,2(R9)
20925     BIC.B #4,&$20A
20926     BIC.B #4,&$20C
20927     MOV #0,&$3C0
20928     MOV #0,&$340
20929     MOV #0,&$342
20930     MOV #COLD,R9
20931     MOV R9,&$FFDE
20932     MOV R9,&$FFEA
20933 COLON
20934 ECHO
20935 ." RC5toLCD is removed,"
20936 ."  type START to restart"
20937  WARM
20938 ;
20939
20940 CODE SYS_INIT
20941 MOV #%10_1101_0100,&$3C0
20942 $1806 @ 16000 = [IF]
20943     MOV #1,&$3E0
20944 [THEN]
20945 $1806 @ 24000 = [IF]
20946     MOV #2,&$3E0
20947 [THEN]
20948     MOV #19,&$3D2
20949 MOV #%0110_0000,&$3C6
20950     MOV #10,&$3D6
20951     BIS.B #$20,&$204
20952     BIS.B #$20,&$20A
20953     BIS.B #7,&$245
20954     BIC.B #7,&$247
20955     BIS.B #$0F,&$224
20956     BIC.B #$0F,&$226
20957     BIS.B #4,&$20A
20958     BIC.B #4,&$20C
20959     MOV #RC5_INT,&$FFDE
20960 MOV #%01_0001_0100,&$340
20961     MOV ##3276,&$352
20962     MOV #%10000,&$342
20963     MOV #WDT_INT,&$FFEA
20964 BIC #1,&$130
20965 BIS.B #3,&$20D
20966 MOV &$1808,R8
20967 CMP #4,R8
20968 0= ?GOTO BW1
20969 COLON
20970     #1000 20_US
20971     %011 TOP_LCD
20972     #205 20_US
20973     %011 TOP_LCD
20974     #5 20_US
20975     %011 TOP_LCD
20976     #2 20_US
20977     %010 TOP_LCD
20978     #2 20_US
20979     %00101000 LCD_WRF
20980     %1000 LCD_WRF
20981     LCD_CLEAR
20982     %0110 LCD_WRF
20983     %1100 LCD_WRF
20984     LCD_CLEAR
20985     ['] LCD_HOME IS CR
20986     ['] LCD_WRC  IS EMIT
20987     CR ." I love you"
20988     ['] CR >BODY IS CR
20989     ['] EMIT >BODY IS EMIT
20990     ." RC5toLCD is running. Type STOP to quit"
20991     PWR_STATE ABORT
20992 ;
20993
20994 CODE START
20995 MOV #$4000,R9
20996 MOV #BACKGROUND,2(R9)
20997 MOV #WARM,R9
20998 MOV #SYS_INIT,2(R9)
20999 MOV R9,R0
21000 ENDCODE 
21001 PWR_STATE
21002
21003 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
21004
21005 MARKER {RC5TOLCD}
21006
21007 [UNDEFINED] @ [IF]
21008 CODE @
21009 MOV @R14,R14
21010 MOV @R13+,R0
21011 ENDCODE
21012 [THEN]
21013
21014 [UNDEFINED] CONSTANT [IF]
21015 : CONSTANT 
21016 CREATE
21017 HI2LO
21018 MOV R14,-2(R10)
21019 MOV @R15+,R14
21020 MOV @R1+,R13
21021 MOV @R13+,R0
21022 ENDCODE
21023 [THEN]
21024
21025 [UNDEFINED] STATE [IF]
21026 $1DBE CONSTANT STATE
21027 [THEN]
21028
21029 [UNDEFINED] = [IF]
21030 CODE =
21031 SUB @R15+,R14
21032 0<> IF
21033     AND #0,R14
21034     MOV @R13+,R0
21035 THEN
21036 XOR #-1,R14
21037 MOV @R13+,R0
21038 ENDCODE
21039 [THEN]
21040
21041 [UNDEFINED] IF [IF]
21042 CODE IF
21043 SUB #2,R15
21044 MOV R14,0(R15)
21045 MOV &$1DC6,R14
21046 ADD #4,&$1DC6
21047 MOV #$4042,0(R14)
21048 ADD #2,R14
21049 MOV @R13+,R0
21050 ENDCODE IMMEDIATE
21051
21052 CODE THEN
21053 MOV &$1DC6,0(R14)
21054 MOV @R15+,R14
21055 MOV @R13+,R0
21056 ENDCODE IMMEDIATE
21057 [THEN]
21058
21059 [UNDEFINED] ELSE [IF]
21060 CODE ELSE
21061 ADD #4,&$1DC6
21062 MOV &$1DC6,R10
21063 MOV #$403E,-4(R10)
21064 MOV R10,0(R14)
21065 SUB #2,R10
21066 MOV R10,R14
21067 MOV @R13+,R0
21068 ENDCODE IMMEDIATE
21069 [THEN]
21070
21071 [UNDEFINED] IS [IF]
21072
21073 CODE DEFER!
21074 MOV @R15+,2(R14)
21075 MOV @R15+,R14
21076 MOV @R13+,R0
21077 ENDCODE
21078
21079
21080 : IS
21081 STATE @
21082 IF  POSTPONE ['] POSTPONE DEFER! 
21083 ELSE ' DEFER! 
21084 THEN
21085 ; IMMEDIATE
21086 [THEN]
21087
21088 [UNDEFINED] >BODY [IF]
21089 CODE >BODY
21090 ADD #4,R14
21091 MOV @R13+,R0
21092 ENDCODE
21093 [THEN]
21094
21095
21096 CODE 20_US
21097 BEGIN
21098     BEGIN
21099         BIT #1,&$3C0
21100     0<> UNTIL
21101     BIC #1,&$3C0
21102     SUB #1,R14
21103 U< UNTIL
21104 MOV @R15+,R14
21105 MOV @R13+,R0
21106 ENDCODE
21107
21108 CODE TOP_LCD
21109     BIS.B #4,&$243
21110     BIT.B #1,&$241
21111 0= IF
21112     AND.B #$0F,R14
21113     MOV.B R14,&$222
21114     BIC.B #4,&$243
21115     MOV @R15+,R14
21116     MOV @R13+,R0
21117 THEN
21118     SUB #2,R15
21119     MOV R14,0(R15)
21120     BIC.B #4,&$243
21121     MOV.B &$220,R14
21122     AND.B #$0F,R14
21123     MOV @R13+,R0
21124 ENDCODE
21125
21126 CODE LCD_WRC
21127     BIS.B #2,&$243
21128 BW1 SUB #2,R15
21129     MOV R14,0(R15)
21130     RRUM #4,R14
21131     BIC.B #1,&$243
21132     BIS.B #$0F,&$224
21133 COLON
21134     TOP_LCD 2 20_US
21135     TOP_LCD 2 20_US 
21136 ;
21137
21138 CODE LCD_WRF
21139     BIC.B #2,&$243
21140     GOTO BW1
21141 ENDCODE
21142
21143 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
21144 : LCD_HOME $02 LCD_WRF 100 20_us ;
21145
21146
21147
21148 ASM WDT_INT
21149 ADD #2,R1
21150 BIT.B #$20,&$240
21151 0= IF
21152     CMP #19,&$3D6
21153     U< IF
21154         ADD #1,&$3D6
21155     THEN
21156 ELSE
21157     BIT.B #$40,&$240
21158     0= IF
21159         CMP #3,&$3D6
21160         U>= IF
21161            SUB #1,&$3D6
21162         THEN
21163     THEN
21164 THEN
21165 BW1
21166 MOV @R1+,R0
21167 ENDASM
21168
21169 ASM RC5_INT
21170 ADD #2,R1
21171 $1806 @ 16000 = [IF]
21172     MOV #1,&$3A0
21173 [THEN]
21174 $1806 @ 24000 = [IF]
21175     MOV #2,&$3A0
21176 [THEN]
21177 MOV #1778,R9
21178 MOV #14,R10
21179 BEGIN
21180 MOV #%1011100100,&$380
21181     RRUM    #1,R9
21182     MOV     R9,R8
21183     RRUM    #1,R8
21184     ADD     R9,R8
21185     BEGIN   CMP R8,&$390
21186     U>= UNTIL
21187     BIT.B   #4,&$200
21188     ADDC    R11,R11
21189     MOV.B   &$200,&$208
21190     BIC.B   #4,&$20C
21191     SUB     #1,R10
21192 0<> WHILE
21193     ADD R9,R8
21194     BEGIN
21195         MOV &$390,R9
21196         CMP R8,R9
21197         U>= IF
21198         BIC #$30,&$380
21199         GOTO BW1
21200         THEN
21201         BIT.B #4,&$20C
21202     0<> UNTIL
21203 REPEAT
21204 BIC #$30,&$380
21205 RLAM    #1,R11
21206 MOV.B   R11,R9
21207 RRUM    #2,R9
21208 BIT     #$4000,R11
21209 0= IF   BIS #$40,R9
21210 THEN
21211 RRUM    #3,R11
21212 XOR     @R1,R11
21213 BIT     #$400,R11
21214 0= ?GOTO BW1
21215 XOR #$400,0(R1)
21216 SUB #8,R15
21217 MOV R14,6(R15)
21218 MOV &$1DDC,4(R15)
21219 MOV #$10,&$1DDC
21220 MOV R9,0(R15)
21221 MOV #0,R14
21222 LO2HI
21223     LCD_CLEAR
21224     <# # #S #36 HOLD #>
21225     ['] LCD_WRC IS EMIT
21226     TYPE
21227     ['] EMIT >BODY IS EMIT
21228 HI2LO
21229 MOV @R15+,&$1DDC
21230 MOV @R15+,R14
21231 MOV @R1+,R0
21232 ENDASM
21233
21234 ASM BACKGROUND
21235 BEGIN
21236     CALL &$1814
21237     BIS &$180A,R2
21238 AGAIN
21239 ENDASM
21240
21241 ASM SYS_OUT
21242     MOV #WARM,R9
21243     ADD #4,R9
21244     MOV R9,R0
21245 ENDASM
21246
21247 CODE STOP
21248 BW1 MOV #$4000,R9
21249     ADD #4,R9
21250     MOV R9,-2(R9)
21251     MOV #WARM,R9
21252     MOV #SYS_OUT,2(R9)
21253     BIC.B #4,&$20A
21254     BIC.B #4,&$20C
21255     MOV #0,&$3C0
21256     MOV #0,&$340
21257     MOV #0,&$342
21258     MOV #COLD,R9
21259     MOV R9,&$FFDE
21260     MOV R9,&$FFEA
21261 COLON
21262 ECHO
21263 ." RC5toLCD is removed,"
21264 ."  type START to restart"
21265  WARM
21266 ;
21267
21268 CODE SYS_INIT
21269 MOV #%10_1101_0100,&$3C0
21270 $1806 @ 16000 = [IF]
21271     MOV #1,&$3E0
21272 [THEN]
21273 $1806 @ 24000 = [IF]
21274     MOV #2,&$3E0
21275 [THEN]
21276     MOV #19,&$3D2
21277 MOV #%0110_0000,&$3C6
21278     MOV #10,&$3D6
21279     BIS.B #$20,&$204
21280     BIS.B #$20,&$20A
21281     BIS.B #7,&$245
21282     BIC.B #7,&$247
21283     BIS.B #$0F,&$224
21284     BIC.B #$0F,&$226
21285     BIS.B #4,&$20A
21286     BIC.B #4,&$20C
21287     MOV #RC5_INT,&$FFDE
21288 MOV #%01_0001_0100,&$340
21289     MOV ##3276,&$352
21290     MOV #%10000,&$342
21291     MOV #WDT_INT,&$FFEA
21292 BIC #1,&$130
21293 BIS.B #3,&$20D
21294 MOV &$1808,R8
21295 CMP #4,R8
21296 0= ?GOTO BW1
21297 COLON
21298     #1000 20_US
21299     %011 TOP_LCD
21300     #205 20_US
21301     %011 TOP_LCD
21302     #5 20_US
21303     %011 TOP_LCD
21304     #2 20_US
21305     %010 TOP_LCD
21306     #2 20_US
21307     %00101000 LCD_WRF
21308     %1000 LCD_WRF
21309     LCD_CLEAR
21310     %0110 LCD_WRF
21311     %1100 LCD_WRF
21312     LCD_CLEAR
21313     ['] LCD_HOME IS CR
21314     ['] LCD_WRC  IS EMIT
21315     CR ." I love you"
21316     ['] CR >BODY IS CR
21317     ['] EMIT >BODY IS EMIT
21318     ." RC5toLCD is running. Type STOP to quit"
21319     PWR_STATE ABORT
21320 ;
21321
21322 CODE START
21323 MOV #$4000,R9
21324 MOV #BACKGROUND,2(R9)
21325 MOV #WARM,R9
21326 MOV #SYS_INIT,2(R9)
21327 MOV R9,R0
21328 ENDCODE 
21329 PWR_STATE
21330
21331 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
21332
21333 MARKER {RC5TOLCD}
21334
21335 [UNDEFINED] @ [IF]
21336 CODE @
21337 MOV @R14,R14
21338 MOV @R13+,R0
21339 ENDCODE
21340 [THEN]
21341
21342 [UNDEFINED] CONSTANT [IF]
21343 : CONSTANT 
21344 CREATE
21345 HI2LO
21346 MOV R14,-2(R10)
21347 MOV @R15+,R14
21348 MOV @R1+,R13
21349 MOV @R13+,R0
21350 ENDCODE
21351 [THEN]
21352
21353 [UNDEFINED] STATE [IF]
21354 $1DBE CONSTANT STATE
21355 [THEN]
21356
21357 [UNDEFINED] = [IF]
21358 CODE =
21359 SUB @R15+,R14
21360 0<> IF
21361     AND #0,R14
21362     MOV @R13+,R0
21363 THEN
21364 XOR #-1,R14
21365 MOV @R13+,R0
21366 ENDCODE
21367 [THEN]
21368
21369 [UNDEFINED] IF [IF]
21370 CODE IF
21371 SUB #2,R15
21372 MOV R14,0(R15)
21373 MOV &$1DC6,R14
21374 ADD #4,&$1DC6
21375 MOV #$4042,0(R14)
21376 ADD #2,R14
21377 MOV @R13+,R0
21378 ENDCODE IMMEDIATE
21379
21380 CODE THEN
21381 MOV &$1DC6,0(R14)
21382 MOV @R15+,R14
21383 MOV @R13+,R0
21384 ENDCODE IMMEDIATE
21385 [THEN]
21386
21387 [UNDEFINED] ELSE [IF]
21388 CODE ELSE
21389 ADD #4,&$1DC6
21390 MOV &$1DC6,R10
21391 MOV #$403E,-4(R10)
21392 MOV R10,0(R14)
21393 SUB #2,R10
21394 MOV R10,R14
21395 MOV @R13+,R0
21396 ENDCODE IMMEDIATE
21397 [THEN]
21398
21399 [UNDEFINED] IS [IF]
21400
21401 CODE DEFER!
21402 MOV @R15+,2(R14)
21403 MOV @R15+,R14
21404 MOV @R13+,R0
21405 ENDCODE
21406
21407
21408 : IS
21409 STATE @
21410 IF  POSTPONE ['] POSTPONE DEFER! 
21411 ELSE ' DEFER! 
21412 THEN
21413 ; IMMEDIATE
21414 [THEN]
21415
21416 [UNDEFINED] >BODY [IF]
21417 CODE >BODY
21418 ADD #4,R14
21419 MOV @R13+,R0
21420 ENDCODE
21421 [THEN]
21422
21423
21424 CODE 20_US
21425 BEGIN
21426     BEGIN
21427         BIT #1,&$3C0
21428     0<> UNTIL
21429     BIC #1,&$3C0
21430     SUB #1,R14
21431 U< UNTIL
21432 MOV @R15+,R14
21433 MOV @R13+,R0
21434 ENDCODE
21435
21436 CODE TOP_LCD
21437     BIS.B #4,&$243
21438     BIT.B #1,&$241
21439 0= IF
21440     AND.B #$0F,R14
21441     MOV.B R14,&$222
21442     BIC.B #4,&$243
21443     MOV @R15+,R14
21444     MOV @R13+,R0
21445 THEN
21446     SUB #2,R15
21447     MOV R14,0(R15)
21448     BIC.B #4,&$243
21449     MOV.B &$220,R14
21450     AND.B #$0F,R14
21451     MOV @R13+,R0
21452 ENDCODE
21453
21454 CODE LCD_WRC
21455     BIS.B #2,&$243
21456 BW1 SUB #2,R15
21457     MOV R14,0(R15)
21458     RRUM #4,R14
21459     BIC.B #1,&$243
21460     BIS.B #$0F,&$224
21461 COLON
21462     TOP_LCD 2 20_US
21463     TOP_LCD 2 20_US 
21464 ;
21465
21466 CODE LCD_WRF
21467     BIC.B #2,&$243
21468     GOTO BW1
21469 ENDCODE
21470
21471 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
21472 : LCD_HOME $02 LCD_WRF 100 20_us ;
21473
21474
21475
21476 ASM WDT_INT
21477 ADD #2,R1
21478 BIT.B #$20,&$240
21479 0= IF
21480     CMP #19,&$3D6
21481     U< IF
21482         ADD #1,&$3D6
21483     THEN
21484 ELSE
21485     BIT.B #$40,&$240
21486     0= IF
21487         CMP #3,&$3D6
21488         U>= IF
21489            SUB #1,&$3D6
21490         THEN
21491     THEN
21492 THEN
21493 BW1
21494 MOV @R1+,R0
21495 ENDASM
21496
21497 ASM RC5_INT
21498 ADD #2,R1
21499 $1806 @ 16000 = [IF]
21500     MOV #1,&$3A0
21501 [THEN]
21502 $1806 @ 24000 = [IF]
21503     MOV #2,&$3A0
21504 [THEN]
21505 MOV #1778,R9
21506 MOV #14,R10
21507 BEGIN
21508 MOV #%1011100100,&$380
21509     RRUM    #1,R9
21510     MOV     R9,R8
21511     RRUM    #1,R8
21512     ADD     R9,R8
21513     BEGIN   CMP R8,&$390
21514     U>= UNTIL
21515     BIT.B   #4,&$200
21516     ADDC    R11,R11
21517     MOV.B   &$200,&$208
21518     BIC.B   #4,&$20C
21519     SUB     #1,R10
21520 0<> WHILE
21521     ADD R9,R8
21522     BEGIN
21523         MOV &$390,R9
21524         CMP R8,R9
21525         U>= IF
21526         BIC #$30,&$380
21527         GOTO BW1
21528         THEN
21529         BIT.B #4,&$20C
21530     0<> UNTIL
21531 REPEAT
21532 BIC #$30,&$380
21533 RLAM    #1,R11
21534 MOV.B   R11,R9
21535 RRUM    #2,R9
21536 BIT     #$4000,R11
21537 0= IF   BIS #$40,R9
21538 THEN
21539 RRUM    #3,R11
21540 XOR     @R1,R11
21541 BIT     #$400,R11
21542 0= ?GOTO BW1
21543 XOR #$400,0(R1)
21544 SUB #8,R15
21545 MOV R14,6(R15)
21546 MOV &$1DDC,4(R15)
21547 MOV #$10,&$1DDC
21548 MOV R9,0(R15)
21549 MOV #0,R14
21550 LO2HI
21551     LCD_CLEAR
21552     <# # #S #36 HOLD #>
21553     ['] LCD_WRC IS EMIT
21554     TYPE
21555     ['] EMIT >BODY IS EMIT
21556 HI2LO
21557 MOV @R15+,&$1DDC
21558 MOV @R15+,R14
21559 MOV @R1+,R0
21560 ENDASM
21561
21562 ASM BACKGROUND
21563 BEGIN
21564     CALL &$1814
21565     BIS &$180A,R2
21566 AGAIN
21567 ENDASM
21568
21569 ASM SYS_OUT
21570     MOV #WARM,R9
21571     ADD #4,R9
21572     MOV R9,R0
21573 ENDASM
21574
21575 CODE STOP
21576 BW1 MOV #$4000,R9
21577     ADD #4,R9
21578     MOV R9,-2(R9)
21579     MOV #WARM,R9
21580     MOV #SYS_OUT,2(R9)
21581     BIC.B #4,&$20A
21582     BIC.B #4,&$20C
21583     MOV #0,&$3C0
21584     MOV #0,&$340
21585     MOV #0,&$342
21586     MOV #COLD,R9
21587     MOV R9,&$FFDE
21588     MOV R9,&$FFEA
21589 COLON
21590 ECHO
21591 ." RC5toLCD is removed,"
21592 ."  type START to restart"
21593  WARM
21594 ;
21595
21596 CODE SYS_INIT
21597 MOV #%10_1101_0100,&$3C0
21598 $1806 @ 16000 = [IF]
21599     MOV #1,&$3E0
21600 [THEN]
21601 $1806 @ 24000 = [IF]
21602     MOV #2,&$3E0
21603 [THEN]
21604     MOV #19,&$3D2
21605 MOV #%0110_0000,&$3C6
21606     MOV #10,&$3D6
21607     BIS.B #$20,&$204
21608     BIS.B #$20,&$20A
21609     BIS.B #7,&$245
21610     BIC.B #7,&$247
21611     BIS.B #$0F,&$224
21612     BIC.B #$0F,&$226
21613     BIS.B #4,&$20A
21614     BIC.B #4,&$20C
21615     MOV #RC5_INT,&$FFDE
21616 MOV #%01_0001_0100,&$340
21617     MOV ##3276,&$352
21618     MOV #%10000,&$342
21619     MOV #WDT_INT,&$FFEA
21620 BIC #1,&$130
21621 BIS.B #3,&$20D
21622 MOV &$1808,R8
21623 CMP #4,R8
21624 0= ?GOTO BW1
21625 COLON
21626     #1000 20_US
21627     %011 TOP_LCD
21628     #205 20_US
21629     %011 TOP_LCD
21630     #5 20_US
21631     %011 TOP_LCD
21632     #2 20_US
21633     %010 TOP_LCD
21634     #2 20_US
21635     %00101000 LCD_WRF
21636     %1000 LCD_WRF
21637     LCD_CLEAR
21638     %0110 LCD_WRF
21639     %1100 LCD_WRF
21640     LCD_CLEAR
21641     ['] LCD_HOME IS CR
21642     ['] LCD_WRC  IS EMIT
21643     CR ." I love you"
21644     ['] CR >BODY IS CR
21645     ['] EMIT >BODY IS EMIT
21646     ." RC5toLCD is running. Type STOP to quit"
21647     PWR_STATE ABORT
21648 ;
21649
21650 CODE START
21651 MOV #$4000,R9
21652 MOV #BACKGROUND,2(R9)
21653 MOV #WARM,R9
21654 MOV #SYS_INIT,2(R9)
21655 MOV R9,R0
21656 ENDCODE 
21657 PWR_STATE
21658
21659 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
21660
21661 MARKER {RC5TOLCD}
21662
21663 [UNDEFINED] @ [IF]
21664 CODE @
21665 MOV @R14,R14
21666 MOV @R13+,R0
21667 ENDCODE
21668 [THEN]
21669
21670 [UNDEFINED] CONSTANT [IF]
21671 : CONSTANT 
21672 CREATE
21673 HI2LO
21674 MOV R14,-2(R10)
21675 MOV @R15+,R14
21676 MOV @R1+,R13
21677 MOV @R13+,R0
21678 ENDCODE
21679 [THEN]
21680
21681 [UNDEFINED] STATE [IF]
21682 $1DBE CONSTANT STATE
21683 [THEN]
21684
21685 [UNDEFINED] = [IF]
21686 CODE =
21687 SUB @R15+,R14
21688 0<> IF
21689     AND #0,R14
21690     MOV @R13+,R0
21691 THEN
21692 XOR #-1,R14
21693 MOV @R13+,R0
21694 ENDCODE
21695 [THEN]
21696
21697 [UNDEFINED] IF [IF]
21698 CODE IF
21699 SUB #2,R15
21700 MOV R14,0(R15)
21701 MOV &$1DC6,R14
21702 ADD #4,&$1DC6
21703 MOV #$4042,0(R14)
21704 ADD #2,R14
21705 MOV @R13+,R0
21706 ENDCODE IMMEDIATE
21707
21708 CODE THEN
21709 MOV &$1DC6,0(R14)
21710 MOV @R15+,R14
21711 MOV @R13+,R0
21712 ENDCODE IMMEDIATE
21713 [THEN]
21714
21715 [UNDEFINED] ELSE [IF]
21716 CODE ELSE
21717 ADD #4,&$1DC6
21718 MOV &$1DC6,R10
21719 MOV #$403E,-4(R10)
21720 MOV R10,0(R14)
21721 SUB #2,R10
21722 MOV R10,R14
21723 MOV @R13+,R0
21724 ENDCODE IMMEDIATE
21725 [THEN]
21726
21727 [UNDEFINED] IS [IF]
21728
21729 CODE DEFER!
21730 MOV @R15+,2(R14)
21731 MOV @R15+,R14
21732 MOV @R13+,R0
21733 ENDCODE
21734
21735
21736 : IS
21737 STATE @
21738 IF  POSTPONE ['] POSTPONE DEFER! 
21739 ELSE ' DEFER! 
21740 THEN
21741 ; IMMEDIATE
21742 [THEN]
21743
21744 [UNDEFINED] >BODY [IF]
21745 CODE >BODY
21746 ADD #4,R14
21747 MOV @R13+,R0
21748 ENDCODE
21749 [THEN]
21750
21751
21752 CODE 20_US
21753 BEGIN
21754     BEGIN
21755         BIT #1,&$3C0
21756     0<> UNTIL
21757     BIC #1,&$3C0
21758     SUB #1,R14
21759 U< UNTIL
21760 MOV @R15+,R14
21761 MOV @R13+,R0
21762 ENDCODE
21763
21764 CODE TOP_LCD
21765     BIS.B #4,&$243
21766     BIT.B #1,&$241
21767 0= IF
21768     AND.B #$0F,R14
21769     MOV.B R14,&$222
21770     BIC.B #4,&$243
21771     MOV @R15+,R14
21772     MOV @R13+,R0
21773 THEN
21774     SUB #2,R15
21775     MOV R14,0(R15)
21776     BIC.B #4,&$243
21777     MOV.B &$220,R14
21778     AND.B #$0F,R14
21779     MOV @R13+,R0
21780 ENDCODE
21781
21782 CODE LCD_WRC
21783     BIS.B #2,&$243
21784 BW1 SUB #2,R15
21785     MOV R14,0(R15)
21786     RRUM #4,R14
21787     BIC.B #1,&$243
21788     BIS.B #$0F,&$224
21789 COLON
21790     TOP_LCD 2 20_US
21791     TOP_LCD 2 20_US 
21792 ;
21793
21794 CODE LCD_WRF
21795     BIC.B #2,&$243
21796     GOTO BW1
21797 ENDCODE
21798
21799 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
21800 : LCD_HOME $02 LCD_WRF 100 20_us ;
21801
21802
21803
21804 ASM WDT_INT
21805 ADD #2,R1
21806 BIT.B #$20,&$240
21807 0= IF
21808     CMP #19,&$3D6
21809     U< IF
21810         ADD #1,&$3D6
21811     THEN
21812 ELSE
21813     BIT.B #$40,&$240
21814     0= IF
21815         CMP #3,&$3D6
21816         U>= IF
21817            SUB #1,&$3D6
21818         THEN
21819     THEN
21820 THEN
21821 BW1
21822 MOV @R1+,R0
21823 ENDASM
21824
21825 ASM RC5_INT
21826 ADD #2,R1
21827 $1806 @ 16000 = [IF]
21828     MOV #1,&$3A0
21829 [THEN]
21830 $1806 @ 24000 = [IF]
21831     MOV #2,&$3A0
21832 [THEN]
21833 MOV #1778,R9
21834 MOV #14,R10
21835 BEGIN
21836 MOV #%1011100100,&$380
21837     RRUM    #1,R9
21838     MOV     R9,R8
21839     RRUM    #1,R8
21840     ADD     R9,R8
21841     BEGIN   CMP R8,&$390
21842     U>= UNTIL
21843     BIT.B   #4,&$200
21844     ADDC    R11,R11
21845     MOV.B   &$200,&$208
21846     BIC.B   #4,&$20C
21847     SUB     #1,R10
21848 0<> WHILE
21849     ADD R9,R8
21850     BEGIN
21851         MOV &$390,R9
21852         CMP R8,R9
21853         U>= IF
21854         BIC #$30,&$380
21855         GOTO BW1
21856         THEN
21857         BIT.B #4,&$20C
21858     0<> UNTIL
21859 REPEAT
21860 BIC #$30,&$380
21861 RLAM    #1,R11
21862 MOV.B   R11,R9
21863 RRUM    #2,R9
21864 BIT     #$4000,R11
21865 0= IF   BIS #$40,R9
21866 THEN
21867 RRUM    #3,R11
21868 XOR     @R1,R11
21869 BIT     #$400,R11
21870 0= ?GOTO BW1
21871 XOR #$400,0(R1)
21872 SUB #8,R15
21873 MOV R14,6(R15)
21874 MOV &$1DDC,4(R15)
21875 MOV #$10,&$1DDC
21876 MOV R9,0(R15)
21877 MOV #0,R14
21878 LO2HI
21879     LCD_CLEAR
21880     <# # #S #36 HOLD #>
21881     ['] LCD_WRC IS EMIT
21882     TYPE
21883     ['] EMIT >BODY IS EMIT
21884 HI2LO
21885 MOV @R15+,&$1DDC
21886 MOV @R15+,R14
21887 MOV @R1+,R0
21888 ENDASM
21889
21890 ASM BACKGROUND
21891 BEGIN
21892     CALL &$1814
21893     BIS &$180A,R2
21894 AGAIN
21895 ENDASM
21896
21897 ASM SYS_OUT
21898     MOV #WARM,R9
21899     ADD #4,R9
21900     MOV R9,R0
21901 ENDASM
21902
21903 CODE STOP
21904 BW1 MOV #$4000,R9
21905     ADD #4,R9
21906     MOV R9,-2(R9)
21907     MOV #WARM,R9
21908     MOV #SYS_OUT,2(R9)
21909     BIC.B #4,&$20A
21910     BIC.B #4,&$20C
21911     MOV #0,&$3C0
21912     MOV #0,&$340
21913     MOV #0,&$342
21914     MOV #COLD,R9
21915     MOV R9,&$FFDE
21916     MOV R9,&$FFEA
21917 COLON
21918 ECHO
21919 ." RC5toLCD is removed,"
21920 ."  type START to restart"
21921  WARM
21922 ;
21923
21924 CODE SYS_INIT
21925 MOV #%10_1101_0100,&$3C0
21926 $1806 @ 16000 = [IF]
21927     MOV #1,&$3E0
21928 [THEN]
21929 $1806 @ 24000 = [IF]
21930     MOV #2,&$3E0
21931 [THEN]
21932     MOV #19,&$3D2
21933 MOV #%0110_0000,&$3C6
21934     MOV #10,&$3D6
21935     BIS.B #$20,&$204
21936     BIS.B #$20,&$20A
21937     BIS.B #7,&$245
21938     BIC.B #7,&$247
21939     BIS.B #$0F,&$224
21940     BIC.B #$0F,&$226
21941     BIS.B #4,&$20A
21942     BIC.B #4,&$20C
21943     MOV #RC5_INT,&$FFDE
21944 MOV #%01_0001_0100,&$340
21945     MOV ##3276,&$352
21946     MOV #%10000,&$342
21947     MOV #WDT_INT,&$FFEA
21948 BIC #1,&$130
21949 BIS.B #3,&$20D
21950 MOV &$1808,R8
21951 CMP #4,R8
21952 0= ?GOTO BW1
21953 COLON
21954     #1000 20_US
21955     %011 TOP_LCD
21956     #205 20_US
21957     %011 TOP_LCD
21958     #5 20_US
21959     %011 TOP_LCD
21960     #2 20_US
21961     %010 TOP_LCD
21962     #2 20_US
21963     %00101000 LCD_WRF
21964     %1000 LCD_WRF
21965     LCD_CLEAR
21966     %0110 LCD_WRF
21967     %1100 LCD_WRF
21968     LCD_CLEAR
21969     ['] LCD_HOME IS CR
21970     ['] LCD_WRC  IS EMIT
21971     CR ." I love you"
21972     ['] CR >BODY IS CR
21973     ['] EMIT >BODY IS EMIT
21974     ." RC5toLCD is running. Type STOP to quit"
21975     PWR_STATE ABORT
21976 ;
21977
21978 CODE START
21979 MOV #$4000,R9
21980 MOV #BACKGROUND,2(R9)
21981 MOV #WARM,R9
21982 MOV #SYS_INIT,2(R9)
21983 MOV R9,R0
21984 ENDCODE 
21985 PWR_STATE
21986
21987 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
21988
21989 MARKER {RC5TOLCD}
21990
21991 [UNDEFINED] @ [IF]
21992 CODE @
21993 MOV @R14,R14
21994 MOV @R13+,R0
21995 ENDCODE
21996 [THEN]
21997
21998 [UNDEFINED] CONSTANT [IF]
21999 : CONSTANT 
22000 CREATE
22001 HI2LO
22002 MOV R14,-2(R10)
22003 MOV @R15+,R14
22004 MOV @R1+,R13
22005 MOV @R13+,R0
22006 ENDCODE
22007 [THEN]
22008
22009 [UNDEFINED] STATE [IF]
22010 $1DBE CONSTANT STATE
22011 [THEN]
22012
22013 [UNDEFINED] = [IF]
22014 CODE =
22015 SUB @R15+,R14
22016 0<> IF
22017     AND #0,R14
22018     MOV @R13+,R0
22019 THEN
22020 XOR #-1,R14
22021 MOV @R13+,R0
22022 ENDCODE
22023 [THEN]
22024
22025 [UNDEFINED] IF [IF]
22026 CODE IF
22027 SUB #2,R15
22028 MOV R14,0(R15)
22029 MOV &$1DC6,R14
22030 ADD #4,&$1DC6
22031 MOV #$4042,0(R14)
22032 ADD #2,R14
22033 MOV @R13+,R0
22034 ENDCODE IMMEDIATE
22035
22036 CODE THEN
22037 MOV &$1DC6,0(R14)
22038 MOV @R15+,R14
22039 MOV @R13+,R0
22040 ENDCODE IMMEDIATE
22041 [THEN]
22042
22043 [UNDEFINED] ELSE [IF]
22044 CODE ELSE
22045 ADD #4,&$1DC6
22046 MOV &$1DC6,R10
22047 MOV #$403E,-4(R10)
22048 MOV R10,0(R14)
22049 SUB #2,R10
22050 MOV R10,R14
22051 MOV @R13+,R0
22052 ENDCODE IMMEDIATE
22053 [THEN]
22054
22055 [UNDEFINED] IS [IF]
22056
22057 CODE DEFER!
22058 MOV @R15+,2(R14)
22059 MOV @R15+,R14
22060 MOV @R13+,R0
22061 ENDCODE
22062
22063
22064 : IS
22065 STATE @
22066 IF  POSTPONE ['] POSTPONE DEFER! 
22067 ELSE ' DEFER! 
22068 THEN
22069 ; IMMEDIATE
22070 [THEN]
22071
22072 [UNDEFINED] >BODY [IF]
22073 CODE >BODY
22074 ADD #4,R14
22075 MOV @R13+,R0
22076 ENDCODE
22077 [THEN]
22078
22079
22080 CODE 20_US
22081 BEGIN
22082     BEGIN
22083         BIT #1,&$3C0
22084     0<> UNTIL
22085     BIC #1,&$3C0
22086     SUB #1,R14
22087 U< UNTIL
22088 MOV @R15+,R14
22089 MOV @R13+,R0
22090 ENDCODE
22091
22092 CODE TOP_LCD
22093     BIS.B #4,&$243
22094     BIT.B #1,&$241
22095 0= IF
22096     AND.B #$0F,R14
22097     MOV.B R14,&$222
22098     BIC.B #4,&$243
22099     MOV @R15+,R14
22100     MOV @R13+,R0
22101 THEN
22102     SUB #2,R15
22103     MOV R14,0(R15)
22104     BIC.B #4,&$243
22105     MOV.B &$220,R14
22106     AND.B #$0F,R14
22107     MOV @R13+,R0
22108 ENDCODE
22109
22110 CODE LCD_WRC
22111     BIS.B #2,&$243
22112 BW1 SUB #2,R15
22113     MOV R14,0(R15)
22114     RRUM #4,R14
22115     BIC.B #1,&$243
22116     BIS.B #$0F,&$224
22117 COLON
22118     TOP_LCD 2 20_US
22119     TOP_LCD 2 20_US 
22120 ;
22121
22122 CODE LCD_WRF
22123     BIC.B #2,&$243
22124     GOTO BW1
22125 ENDCODE
22126
22127 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
22128 : LCD_HOME $02 LCD_WRF 100 20_us ;
22129
22130
22131
22132 ASM WDT_INT
22133 ADD #2,R1
22134 BIT.B #$20,&$240
22135 0= IF
22136     CMP #19,&$3D6
22137     U< IF
22138         ADD #1,&$3D6
22139     THEN
22140 ELSE
22141     BIT.B #$40,&$240
22142     0= IF
22143         CMP #3,&$3D6
22144         U>= IF
22145            SUB #1,&$3D6
22146         THEN
22147     THEN
22148 THEN
22149 BW1
22150 MOV @R1+,R0
22151 ENDASM
22152
22153 ASM RC5_INT
22154 ADD #2,R1
22155 $1806 @ 16000 = [IF]
22156     MOV #1,&$3A0
22157 [THEN]
22158 $1806 @ 24000 = [IF]
22159     MOV #2,&$3A0
22160 [THEN]
22161 MOV #1778,R9
22162 MOV #14,R10
22163 BEGIN
22164 MOV #%1011100100,&$380
22165     RRUM    #1,R9
22166     MOV     R9,R8
22167     RRUM    #1,R8
22168     ADD     R9,R8
22169     BEGIN   CMP R8,&$390
22170     U>= UNTIL
22171     BIT.B   #4,&$200
22172     ADDC    R11,R11
22173     MOV.B   &$200,&$208
22174     BIC.B   #4,&$20C
22175     SUB     #1,R10
22176 0<> WHILE
22177     ADD R9,R8
22178     BEGIN
22179         MOV &$390,R9
22180         CMP R8,R9
22181         U>= IF
22182         BIC #$30,&$380
22183         GOTO BW1
22184         THEN
22185         BIT.B #4,&$20C
22186     0<> UNTIL
22187 REPEAT
22188 BIC #$30,&$380
22189 RLAM    #1,R11
22190 MOV.B   R11,R9
22191 RRUM    #2,R9
22192 BIT     #$4000,R11
22193 0= IF   BIS #$40,R9
22194 THEN
22195 RRUM    #3,R11
22196 XOR     @R1,R11
22197 BIT     #$400,R11
22198 0= ?GOTO BW1
22199 XOR #$400,0(R1)
22200 SUB #8,R15
22201 MOV R14,6(R15)
22202 MOV &$1DDC,4(R15)
22203 MOV #$10,&$1DDC
22204 MOV R9,0(R15)
22205 MOV #0,R14
22206 LO2HI
22207     LCD_CLEAR
22208     <# # #S #36 HOLD #>
22209     ['] LCD_WRC IS EMIT
22210     TYPE
22211     ['] EMIT >BODY IS EMIT
22212 HI2LO
22213 MOV @R15+,&$1DDC
22214 MOV @R15+,R14
22215 MOV @R1+,R0
22216 ENDASM
22217
22218 ASM BACKGROUND
22219 BEGIN
22220     CALL &$1814
22221     BIS &$180A,R2
22222 AGAIN
22223 ENDASM
22224
22225 ASM SYS_OUT
22226     MOV #WARM,R9
22227     ADD #4,R9
22228     MOV R9,R0
22229 ENDASM
22230
22231 CODE STOP
22232 BW1 MOV #$4000,R9
22233     ADD #4,R9
22234     MOV R9,-2(R9)
22235     MOV #WARM,R9
22236     MOV #SYS_OUT,2(R9)
22237     BIC.B #4,&$20A
22238     BIC.B #4,&$20C
22239     MOV #0,&$3C0
22240     MOV #0,&$340
22241     MOV #0,&$342
22242     MOV #COLD,R9
22243     MOV R9,&$FFDE
22244     MOV R9,&$FFEA
22245 COLON
22246 ECHO
22247 ." RC5toLCD is removed,"
22248 ."  type START to restart"
22249  WARM
22250 ;
22251
22252 CODE SYS_INIT
22253 MOV #%10_1101_0100,&$3C0
22254 $1806 @ 16000 = [IF]
22255     MOV #1,&$3E0
22256 [THEN]
22257 $1806 @ 24000 = [IF]
22258     MOV #2,&$3E0
22259 [THEN]
22260     MOV #19,&$3D2
22261 MOV #%0110_0000,&$3C6
22262     MOV #10,&$3D6
22263     BIS.B #$20,&$204
22264     BIS.B #$20,&$20A
22265     BIS.B #7,&$245
22266     BIC.B #7,&$247
22267     BIS.B #$0F,&$224
22268     BIC.B #$0F,&$226
22269     BIS.B #4,&$20A
22270     BIC.B #4,&$20C
22271     MOV #RC5_INT,&$FFDE
22272 MOV #%01_0001_0100,&$340
22273     MOV ##3276,&$352
22274     MOV #%10000,&$342
22275     MOV #WDT_INT,&$FFEA
22276 BIC #1,&$130
22277 BIS.B #3,&$20D
22278 MOV &$1808,R8
22279 CMP #4,R8
22280 0= ?GOTO BW1
22281 COLON
22282     #1000 20_US
22283     %011 TOP_LCD
22284     #205 20_US
22285     %011 TOP_LCD
22286     #5 20_US
22287     %011 TOP_LCD
22288     #2 20_US
22289     %010 TOP_LCD
22290     #2 20_US
22291     %00101000 LCD_WRF
22292     %1000 LCD_WRF
22293     LCD_CLEAR
22294     %0110 LCD_WRF
22295     %1100 LCD_WRF
22296     LCD_CLEAR
22297     ['] LCD_HOME IS CR
22298     ['] LCD_WRC  IS EMIT
22299     CR ." I love you"
22300     ['] CR >BODY IS CR
22301     ['] EMIT >BODY IS EMIT
22302     ." RC5toLCD is running. Type STOP to quit"
22303     PWR_STATE ABORT
22304 ;
22305
22306 CODE START
22307 MOV #$4000,R9
22308 MOV #BACKGROUND,2(R9)
22309 MOV #WARM,R9
22310 MOV #SYS_INIT,2(R9)
22311 MOV R9,R0
22312 ENDCODE 
22313 PWR_STATE
22314
22315 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
22316
22317 MARKER {RC5TOLCD}
22318
22319 [UNDEFINED] @ [IF]
22320 CODE @
22321 MOV @R14,R14
22322 MOV @R13+,R0
22323 ENDCODE
22324 [THEN]
22325
22326 [UNDEFINED] CONSTANT [IF]
22327 : CONSTANT 
22328 CREATE
22329 HI2LO
22330 MOV R14,-2(R10)
22331 MOV @R15+,R14
22332 MOV @R1+,R13
22333 MOV @R13+,R0
22334 ENDCODE
22335 [THEN]
22336
22337 [UNDEFINED] STATE [IF]
22338 $1DBE CONSTANT STATE
22339 [THEN]
22340
22341 [UNDEFINED] = [IF]
22342 CODE =
22343 SUB @R15+,R14
22344 0<> IF
22345     AND #0,R14
22346     MOV @R13+,R0
22347 THEN
22348 XOR #-1,R14
22349 MOV @R13+,R0
22350 ENDCODE
22351 [THEN]
22352
22353 [UNDEFINED] IF [IF]
22354 CODE IF
22355 SUB #2,R15
22356 MOV R14,0(R15)
22357 MOV &$1DC6,R14
22358 ADD #4,&$1DC6
22359 MOV #$4042,0(R14)
22360 ADD #2,R14
22361 MOV @R13+,R0
22362 ENDCODE IMMEDIATE
22363
22364 CODE THEN
22365 MOV &$1DC6,0(R14)
22366 MOV @R15+,R14
22367 MOV @R13+,R0
22368 ENDCODE IMMEDIATE
22369 [THEN]
22370
22371 [UNDEFINED] ELSE [IF]
22372 CODE ELSE
22373 ADD #4,&$1DC6
22374 MOV &$1DC6,R10
22375 MOV #$403E,-4(R10)
22376 MOV R10,0(R14)
22377 SUB #2,R10
22378 MOV R10,R14
22379 MOV @R13+,R0
22380 ENDCODE IMMEDIATE
22381 [THEN]
22382
22383 [UNDEFINED] IS [IF]
22384
22385 CODE DEFER!
22386 MOV @R15+,2(R14)
22387 MOV @R15+,R14
22388 MOV @R13+,R0
22389 ENDCODE
22390
22391
22392 : IS
22393 STATE @
22394 IF  POSTPONE ['] POSTPONE DEFER! 
22395 ELSE ' DEFER! 
22396 THEN
22397 ; IMMEDIATE
22398 [THEN]
22399
22400 [UNDEFINED] >BODY [IF]
22401 CODE >BODY
22402 ADD #4,R14
22403 MOV @R13+,R0
22404 ENDCODE
22405 [THEN]
22406
22407
22408 CODE 20_US
22409 BEGIN
22410     BEGIN
22411         BIT #1,&$3C0
22412     0<> UNTIL
22413     BIC #1,&$3C0
22414     SUB #1,R14
22415 U< UNTIL
22416 MOV @R15+,R14
22417 MOV @R13+,R0
22418 ENDCODE
22419
22420 CODE TOP_LCD
22421     BIS.B #4,&$243
22422     BIT.B #1,&$241
22423 0= IF
22424     AND.B #$0F,R14
22425     MOV.B R14,&$222
22426     BIC.B #4,&$243
22427     MOV @R15+,R14
22428     MOV @R13+,R0
22429 THEN
22430     SUB #2,R15
22431     MOV R14,0(R15)
22432     BIC.B #4,&$243
22433     MOV.B &$220,R14
22434     AND.B #$0F,R14
22435     MOV @R13+,R0
22436 ENDCODE
22437
22438 CODE LCD_WRC
22439     BIS.B #2,&$243
22440 BW1 SUB #2,R15
22441     MOV R14,0(R15)
22442     RRUM #4,R14
22443     BIC.B #1,&$243
22444     BIS.B #$0F,&$224
22445 COLON
22446     TOP_LCD 2 20_US
22447     TOP_LCD 2 20_US 
22448 ;
22449
22450 CODE LCD_WRF
22451     BIC.B #2,&$243
22452     GOTO BW1
22453 ENDCODE
22454
22455 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
22456 : LCD_HOME $02 LCD_WRF 100 20_us ;
22457
22458
22459
22460 ASM WDT_INT
22461 ADD #2,R1
22462 BIT.B #$20,&$240
22463 0= IF
22464     CMP #19,&$3D6
22465     U< IF
22466         ADD #1,&$3D6
22467     THEN
22468 ELSE
22469     BIT.B #$40,&$240
22470     0= IF
22471         CMP #3,&$3D6
22472         U>= IF
22473            SUB #1,&$3D6
22474         THEN
22475     THEN
22476 THEN
22477 BW1
22478 MOV @R1+,R0
22479 ENDASM
22480
22481 ASM RC5_INT
22482 ADD #2,R1
22483 $1806 @ 16000 = [IF]
22484     MOV #1,&$3A0
22485 [THEN]
22486 $1806 @ 24000 = [IF]
22487     MOV #2,&$3A0
22488 [THEN]
22489 MOV #1778,R9
22490 MOV #14,R10
22491 BEGIN
22492 MOV #%1011100100,&$380
22493     RRUM    #1,R9
22494     MOV     R9,R8
22495     RRUM    #1,R8
22496     ADD     R9,R8
22497     BEGIN   CMP R8,&$390
22498     U>= UNTIL
22499     BIT.B   #4,&$200
22500     ADDC    R11,R11
22501     MOV.B   &$200,&$208
22502     BIC.B   #4,&$20C
22503     SUB     #1,R10
22504 0<> WHILE
22505     ADD R9,R8
22506     BEGIN
22507         MOV &$390,R9
22508         CMP R8,R9
22509         U>= IF
22510         BIC #$30,&$380
22511         GOTO BW1
22512         THEN
22513         BIT.B #4,&$20C
22514     0<> UNTIL
22515 REPEAT
22516 BIC #$30,&$380
22517 RLAM    #1,R11
22518 MOV.B   R11,R9
22519 RRUM    #2,R9
22520 BIT     #$4000,R11
22521 0= IF   BIS #$40,R9
22522 THEN
22523 RRUM    #3,R11
22524 XOR     @R1,R11
22525 BIT     #$400,R11
22526 0= ?GOTO BW1
22527 XOR #$400,0(R1)
22528 SUB #8,R15
22529 MOV R14,6(R15)
22530 MOV &$1DDC,4(R15)
22531 MOV #$10,&$1DDC
22532 MOV R9,0(R15)
22533 MOV #0,R14
22534 LO2HI
22535     LCD_CLEAR
22536     <# # #S #36 HOLD #>
22537     ['] LCD_WRC IS EMIT
22538     TYPE
22539     ['] EMIT >BODY IS EMIT
22540 HI2LO
22541 MOV @R15+,&$1DDC
22542 MOV @R15+,R14
22543 MOV @R1+,R0
22544 ENDASM
22545
22546 ASM BACKGROUND
22547 BEGIN
22548     CALL &$1814
22549     BIS &$180A,R2
22550 AGAIN
22551 ENDASM
22552
22553 ASM SYS_OUT
22554     MOV #WARM,R9
22555     ADD #4,R9
22556     MOV R9,R0
22557 ENDASM
22558
22559 CODE STOP
22560 BW1 MOV #$4000,R9
22561     ADD #4,R9
22562     MOV R9,-2(R9)
22563     MOV #WARM,R9
22564     MOV #SYS_OUT,2(R9)
22565     BIC.B #4,&$20A
22566     BIC.B #4,&$20C
22567     MOV #0,&$3C0
22568     MOV #0,&$340
22569     MOV #0,&$342
22570     MOV #COLD,R9
22571     MOV R9,&$FFDE
22572     MOV R9,&$FFEA
22573 COLON
22574 ECHO
22575 ." RC5toLCD is removed,"
22576 ."  type START to restart"
22577  WARM
22578 ;
22579
22580 CODE SYS_INIT
22581 MOV #%10_1101_0100,&$3C0
22582 $1806 @ 16000 = [IF]
22583     MOV #1,&$3E0
22584 [THEN]
22585 $1806 @ 24000 = [IF]
22586     MOV #2,&$3E0
22587 [THEN]
22588     MOV #19,&$3D2
22589 MOV #%0110_0000,&$3C6
22590     MOV #10,&$3D6
22591     BIS.B #$20,&$204
22592     BIS.B #$20,&$20A
22593     BIS.B #7,&$245
22594     BIC.B #7,&$247
22595     BIS.B #$0F,&$224
22596     BIC.B #$0F,&$226
22597     BIS.B #4,&$20A
22598     BIC.B #4,&$20C
22599     MOV #RC5_INT,&$FFDE
22600 MOV #%01_0001_0100,&$340
22601     MOV ##3276,&$352
22602     MOV #%10000,&$342
22603     MOV #WDT_INT,&$FFEA
22604 BIC #1,&$130
22605 BIS.B #3,&$20D
22606 MOV &$1808,R8
22607 CMP #4,R8
22608 0= ?GOTO BW1
22609 COLON
22610     #1000 20_US
22611     %011 TOP_LCD
22612     #205 20_US
22613     %011 TOP_LCD
22614     #5 20_US
22615     %011 TOP_LCD
22616     #2 20_US
22617     %010 TOP_LCD
22618     #2 20_US
22619     %00101000 LCD_WRF
22620     %1000 LCD_WRF
22621     LCD_CLEAR
22622     %0110 LCD_WRF
22623     %1100 LCD_WRF
22624     LCD_CLEAR
22625     ['] LCD_HOME IS CR
22626     ['] LCD_WRC  IS EMIT
22627     CR ." I love you"
22628     ['] CR >BODY IS CR
22629     ['] EMIT >BODY IS EMIT
22630     ." RC5toLCD is running. Type STOP to quit"
22631     PWR_STATE ABORT
22632 ;
22633
22634 CODE START
22635 MOV #$4000,R9
22636 MOV #BACKGROUND,2(R9)
22637 MOV #WARM,R9
22638 MOV #SYS_INIT,2(R9)
22639 MOV R9,R0
22640 ENDCODE 
22641 PWR_STATE
22642
22643 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
22644
22645 MARKER {RC5TOLCD}
22646
22647 [UNDEFINED] @ [IF]
22648 CODE @
22649 MOV @R14,R14
22650 MOV @R13+,R0
22651 ENDCODE
22652 [THEN]
22653
22654 [UNDEFINED] CONSTANT [IF]
22655 : CONSTANT 
22656 CREATE
22657 HI2LO
22658 MOV R14,-2(R10)
22659 MOV @R15+,R14
22660 MOV @R1+,R13
22661 MOV @R13+,R0
22662 ENDCODE
22663 [THEN]
22664
22665 [UNDEFINED] STATE [IF]
22666 $1DBE CONSTANT STATE
22667 [THEN]
22668
22669 [UNDEFINED] = [IF]
22670 CODE =
22671 SUB @R15+,R14
22672 0<> IF
22673     AND #0,R14
22674     MOV @R13+,R0
22675 THEN
22676 XOR #-1,R14
22677 MOV @R13+,R0
22678 ENDCODE
22679 [THEN]
22680
22681 [UNDEFINED] IF [IF]
22682 CODE IF
22683 SUB #2,R15
22684 MOV R14,0(R15)
22685 MOV &$1DC6,R14
22686 ADD #4,&$1DC6
22687 MOV #$4042,0(R14)
22688 ADD #2,R14
22689 MOV @R13+,R0
22690 ENDCODE IMMEDIATE
22691
22692 CODE THEN
22693 MOV &$1DC6,0(R14)
22694 MOV @R15+,R14
22695 MOV @R13+,R0
22696 ENDCODE IMMEDIATE
22697 [THEN]
22698
22699 [UNDEFINED] ELSE [IF]
22700 CODE ELSE
22701 ADD #4,&$1DC6
22702 MOV &$1DC6,R10
22703 MOV #$403E,-4(R10)
22704 MOV R10,0(R14)
22705 SUB #2,R10
22706 MOV R10,R14
22707 MOV @R13+,R0
22708 ENDCODE IMMEDIATE
22709 [THEN]
22710
22711 [UNDEFINED] IS [IF]
22712
22713 CODE DEFER!
22714 MOV @R15+,2(R14)
22715 MOV @R15+,R14
22716 MOV @R13+,R0
22717 ENDCODE
22718
22719
22720 : IS
22721 STATE @
22722 IF  POSTPONE ['] POSTPONE DEFER! 
22723 ELSE ' DEFER! 
22724 THEN
22725 ; IMMEDIATE
22726 [THEN]
22727
22728 [UNDEFINED] >BODY [IF]
22729 CODE >BODY
22730 ADD #4,R14
22731 MOV @R13+,R0
22732 ENDCODE
22733 [THEN]
22734
22735
22736 CODE 20_US
22737 BEGIN
22738     BEGIN
22739         BIT #1,&$3C0
22740     0<> UNTIL
22741     BIC #1,&$3C0
22742     SUB #1,R14
22743 U< UNTIL
22744 MOV @R15+,R14
22745 MOV @R13+,R0
22746 ENDCODE
22747
22748 CODE TOP_LCD
22749     BIS.B #4,&$243
22750     BIT.B #1,&$241
22751 0= IF
22752     AND.B #$0F,R14
22753     MOV.B R14,&$222
22754     BIC.B #4,&$243
22755     MOV @R15+,R14
22756     MOV @R13+,R0
22757 THEN
22758     SUB #2,R15
22759     MOV R14,0(R15)
22760     BIC.B #4,&$243
22761     MOV.B &$220,R14
22762     AND.B #$0F,R14
22763     MOV @R13+,R0
22764 ENDCODE
22765
22766 CODE LCD_WRC
22767     BIS.B #2,&$243
22768 BW1 SUB #2,R15
22769     MOV R14,0(R15)
22770     RRUM #4,R14
22771     BIC.B #1,&$243
22772     BIS.B #$0F,&$224
22773 COLON
22774     TOP_LCD 2 20_US
22775     TOP_LCD 2 20_US 
22776 ;
22777
22778 CODE LCD_WRF
22779     BIC.B #2,&$243
22780     GOTO BW1
22781 ENDCODE
22782
22783 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
22784 : LCD_HOME $02 LCD_WRF 100 20_us ;
22785
22786
22787
22788 ASM WDT_INT
22789 ADD #2,R1
22790 BIT.B #$20,&$240
22791 0= IF
22792     CMP #19,&$3D6
22793     U< IF
22794         ADD #1,&$3D6
22795     THEN
22796 ELSE
22797     BIT.B #$40,&$240
22798     0= IF
22799         CMP #3,&$3D6
22800         U>= IF
22801            SUB #1,&$3D6
22802         THEN
22803     THEN
22804 THEN
22805 BW1
22806 MOV @R1+,R0
22807 ENDASM
22808
22809 ASM RC5_INT
22810 ADD #2,R1
22811 $1806 @ 16000 = [IF]
22812     MOV #1,&$3A0
22813 [THEN]
22814 $1806 @ 24000 = [IF]
22815     MOV #2,&$3A0
22816 [THEN]
22817 MOV #1778,R9
22818 MOV #14,R10
22819 BEGIN
22820 MOV #%1011100100,&$380
22821     RRUM    #1,R9
22822     MOV     R9,R8
22823     RRUM    #1,R8
22824     ADD     R9,R8
22825     BEGIN   CMP R8,&$390
22826     U>= UNTIL
22827     BIT.B   #4,&$200
22828     ADDC    R11,R11
22829     MOV.B   &$200,&$208
22830     BIC.B   #4,&$20C
22831     SUB     #1,R10
22832 0<> WHILE
22833     ADD R9,R8
22834     BEGIN
22835         MOV &$390,R9
22836         CMP R8,R9
22837         U>= IF
22838         BIC #$30,&$380
22839         GOTO BW1
22840         THEN
22841         BIT.B #4,&$20C
22842     0<> UNTIL
22843 REPEAT
22844 BIC #$30,&$380
22845 RLAM    #1,R11
22846 MOV.B   R11,R9
22847 RRUM    #2,R9
22848 BIT     #$4000,R11
22849 0= IF   BIS #$40,R9
22850 THEN
22851 RRUM    #3,R11
22852 XOR     @R1,R11
22853 BIT     #$400,R11
22854 0= ?GOTO BW1
22855 XOR #$400,0(R1)
22856 SUB #8,R15
22857 MOV R14,6(R15)
22858 MOV &$1DDC,4(R15)
22859 MOV #$10,&$1DDC
22860 MOV R9,0(R15)
22861 MOV #0,R14
22862 LO2HI
22863     LCD_CLEAR
22864     <# # #S #36 HOLD #>
22865     ['] LCD_WRC IS EMIT
22866     TYPE
22867     ['] EMIT >BODY IS EMIT
22868 HI2LO
22869 MOV @R15+,&$1DDC
22870 MOV @R15+,R14
22871 MOV @R1+,R0
22872 ENDASM
22873
22874 ASM BACKGROUND
22875 BEGIN
22876     CALL &$1814
22877     BIS &$180A,R2
22878 AGAIN
22879 ENDASM
22880
22881 ASM SYS_OUT
22882     MOV #WARM,R9
22883     ADD #4,R9
22884     MOV R9,R0
22885 ENDASM
22886
22887 CODE STOP
22888 BW1 MOV #$4000,R9
22889     ADD #4,R9
22890     MOV R9,-2(R9)
22891     MOV #WARM,R9
22892     MOV #SYS_OUT,2(R9)
22893     BIC.B #4,&$20A
22894     BIC.B #4,&$20C
22895     MOV #0,&$3C0
22896     MOV #0,&$340
22897     MOV #0,&$342
22898     MOV #COLD,R9
22899     MOV R9,&$FFDE
22900     MOV R9,&$FFEA
22901 COLON
22902 ECHO
22903 ." RC5toLCD is removed,"
22904 ."  type START to restart"
22905  WARM
22906 ;
22907
22908 CODE SYS_INIT
22909 MOV #%10_1101_0100,&$3C0
22910 $1806 @ 16000 = [IF]
22911     MOV #1,&$3E0
22912 [THEN]
22913 $1806 @ 24000 = [IF]
22914     MOV #2,&$3E0
22915 [THEN]
22916     MOV #19,&$3D2
22917 MOV #%0110_0000,&$3C6
22918     MOV #10,&$3D6
22919     BIS.B #$20,&$204
22920     BIS.B #$20,&$20A
22921     BIS.B #7,&$245
22922     BIC.B #7,&$247
22923     BIS.B #$0F,&$224
22924     BIC.B #$0F,&$226
22925     BIS.B #4,&$20A
22926     BIC.B #4,&$20C
22927     MOV #RC5_INT,&$FFDE
22928 MOV #%01_0001_0100,&$340
22929     MOV ##3276,&$352
22930     MOV #%10000,&$342
22931     MOV #WDT_INT,&$FFEA
22932 BIC #1,&$130
22933 BIS.B #3,&$20D
22934 MOV &$1808,R8
22935 CMP #4,R8
22936 0= ?GOTO BW1
22937 COLON
22938     #1000 20_US
22939     %011 TOP_LCD
22940     #205 20_US
22941     %011 TOP_LCD
22942     #5 20_US
22943     %011 TOP_LCD
22944     #2 20_US
22945     %010 TOP_LCD
22946     #2 20_US
22947     %00101000 LCD_WRF
22948     %1000 LCD_WRF
22949     LCD_CLEAR
22950     %0110 LCD_WRF
22951     %1100 LCD_WRF
22952     LCD_CLEAR
22953     ['] LCD_HOME IS CR
22954     ['] LCD_WRC  IS EMIT
22955     CR ." I love you"
22956     ['] CR >BODY IS CR
22957     ['] EMIT >BODY IS EMIT
22958     ." RC5toLCD is running. Type STOP to quit"
22959     PWR_STATE ABORT
22960 ;
22961
22962 CODE START
22963 MOV #$4000,R9
22964 MOV #BACKGROUND,2(R9)
22965 MOV #WARM,R9
22966 MOV #SYS_INIT,2(R9)
22967 MOV R9,R0
22968 ENDCODE 
22969 PWR_STATE
22970
22971 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
22972
22973 MARKER {RC5TOLCD}
22974
22975 [UNDEFINED] @ [IF]
22976 CODE @
22977 MOV @R14,R14
22978 MOV @R13+,R0
22979 ENDCODE
22980 [THEN]
22981
22982 [UNDEFINED] CONSTANT [IF]
22983 : CONSTANT 
22984 CREATE
22985 HI2LO
22986 MOV R14,-2(R10)
22987 MOV @R15+,R14
22988 MOV @R1+,R13
22989 MOV @R13+,R0
22990 ENDCODE
22991 [THEN]
22992
22993 [UNDEFINED] STATE [IF]
22994 $1DBE CONSTANT STATE
22995 [THEN]
22996
22997 [UNDEFINED] = [IF]
22998 CODE =
22999 SUB @R15+,R14
23000 0<> IF
23001     AND #0,R14
23002     MOV @R13+,R0
23003 THEN
23004 XOR #-1,R14
23005 MOV @R13+,R0
23006 ENDCODE
23007 [THEN]
23008
23009 [UNDEFINED] IF [IF]
23010 CODE IF
23011 SUB #2,R15
23012 MOV R14,0(R15)
23013 MOV &$1DC6,R14
23014 ADD #4,&$1DC6
23015 MOV #$4042,0(R14)
23016 ADD #2,R14
23017 MOV @R13+,R0
23018 ENDCODE IMMEDIATE
23019
23020 CODE THEN
23021 MOV &$1DC6,0(R14)
23022 MOV @R15+,R14
23023 MOV @R13+,R0
23024 ENDCODE IMMEDIATE
23025 [THEN]
23026
23027 [UNDEFINED] ELSE [IF]
23028 CODE ELSE
23029 ADD #4,&$1DC6
23030 MOV &$1DC6,R10
23031 MOV #$403E,-4(R10)
23032 MOV R10,0(R14)
23033 SUB #2,R10
23034 MOV R10,R14
23035 MOV @R13+,R0
23036 ENDCODE IMMEDIATE
23037 [THEN]
23038
23039 [UNDEFINED] IS [IF]
23040
23041 CODE DEFER!
23042 MOV @R15+,2(R14)
23043 MOV @R15+,R14
23044 MOV @R13+,R0
23045 ENDCODE
23046
23047
23048 : IS
23049 STATE @
23050 IF  POSTPONE ['] POSTPONE DEFER! 
23051 ELSE ' DEFER! 
23052 THEN
23053 ; IMMEDIATE
23054 [THEN]
23055
23056 [UNDEFINED] >BODY [IF]
23057 CODE >BODY
23058 ADD #4,R14
23059 MOV @R13+,R0
23060 ENDCODE
23061 [THEN]
23062
23063
23064 CODE 20_US
23065 BEGIN
23066     BEGIN
23067         BIT #1,&$3C0
23068     0<> UNTIL
23069     BIC #1,&$3C0
23070     SUB #1,R14
23071 U< UNTIL
23072 MOV @R15+,R14
23073 MOV @R13+,R0
23074 ENDCODE
23075
23076 CODE TOP_LCD
23077     BIS.B #4,&$243
23078     BIT.B #1,&$241
23079 0= IF
23080     AND.B #$0F,R14
23081     MOV.B R14,&$222
23082     BIC.B #4,&$243
23083     MOV @R15+,R14
23084     MOV @R13+,R0
23085 THEN
23086     SUB #2,R15
23087     MOV R14,0(R15)
23088     BIC.B #4,&$243
23089     MOV.B &$220,R14
23090     AND.B #$0F,R14
23091     MOV @R13+,R0
23092 ENDCODE
23093
23094 CODE LCD_WRC
23095     BIS.B #2,&$243
23096 BW1 SUB #2,R15
23097     MOV R14,0(R15)
23098     RRUM #4,R14
23099     BIC.B #1,&$243
23100     BIS.B #$0F,&$224
23101 COLON
23102     TOP_LCD 2 20_US
23103     TOP_LCD 2 20_US 
23104 ;
23105
23106 CODE LCD_WRF
23107     BIC.B #2,&$243
23108     GOTO BW1
23109 ENDCODE
23110
23111 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
23112 : LCD_HOME $02 LCD_WRF 100 20_us ;
23113
23114
23115
23116 ASM WDT_INT
23117 ADD #2,R1
23118 BIT.B #$20,&$240
23119 0= IF
23120     CMP #19,&$3D6
23121     U< IF
23122         ADD #1,&$3D6
23123     THEN
23124 ELSE
23125     BIT.B #$40,&$240
23126     0= IF
23127         CMP #3,&$3D6
23128         U>= IF
23129            SUB #1,&$3D6
23130         THEN
23131     THEN
23132 THEN
23133 BW1
23134 MOV @R1+,R0
23135 ENDASM
23136
23137 ASM RC5_INT
23138 ADD #2,R1
23139 $1806 @ 16000 = [IF]
23140     MOV #1,&$3A0
23141 [THEN]
23142 $1806 @ 24000 = [IF]
23143     MOV #2,&$3A0
23144 [THEN]
23145 MOV #1778,R9
23146 MOV #14,R10
23147 BEGIN
23148 MOV #%1011100100,&$380
23149     RRUM    #1,R9
23150     MOV     R9,R8
23151     RRUM    #1,R8
23152     ADD     R9,R8
23153     BEGIN   CMP R8,&$390
23154     U>= UNTIL
23155     BIT.B   #4,&$200
23156     ADDC    R11,R11
23157     MOV.B   &$200,&$208
23158     BIC.B   #4,&$20C
23159     SUB     #1,R10
23160 0<> WHILE
23161     ADD R9,R8
23162     BEGIN
23163         MOV &$390,R9
23164         CMP R8,R9
23165         U>= IF
23166         BIC #$30,&$380
23167         GOTO BW1
23168         THEN
23169         BIT.B #4,&$20C
23170     0<> UNTIL
23171 REPEAT
23172 BIC #$30,&$380
23173 RLAM    #1,R11
23174 MOV.B   R11,R9
23175 RRUM    #2,R9
23176 BIT     #$4000,R11
23177 0= IF   BIS #$40,R9
23178 THEN
23179 RRUM    #3,R11
23180 XOR     @R1,R11
23181 BIT     #$400,R11
23182 0= ?GOTO BW1
23183 XOR #$400,0(R1)
23184 SUB #8,R15
23185 MOV R14,6(R15)
23186 MOV &$1DDC,4(R15)
23187 MOV #$10,&$1DDC
23188 MOV R9,0(R15)
23189 MOV #0,R14
23190 LO2HI
23191     LCD_CLEAR
23192     <# # #S #36 HOLD #>
23193     ['] LCD_WRC IS EMIT
23194     TYPE
23195     ['] EMIT >BODY IS EMIT
23196 HI2LO
23197 MOV @R15+,&$1DDC
23198 MOV @R15+,R14
23199 MOV @R1+,R0
23200 ENDASM
23201
23202 ASM BACKGROUND
23203 BEGIN
23204     CALL &$1814
23205     BIS &$180A,R2
23206 AGAIN
23207 ENDASM
23208
23209 ASM SYS_OUT
23210     MOV #WARM,R9
23211     ADD #4,R9
23212     MOV R9,R0
23213 ENDASM
23214
23215 CODE STOP
23216 BW1 MOV #$4000,R9
23217     ADD #4,R9
23218     MOV R9,-2(R9)
23219     MOV #WARM,R9
23220     MOV #SYS_OUT,2(R9)
23221     BIC.B #4,&$20A
23222     BIC.B #4,&$20C
23223     MOV #0,&$3C0
23224     MOV #0,&$340
23225     MOV #0,&$342
23226     MOV #COLD,R9
23227     MOV R9,&$FFDE
23228     MOV R9,&$FFEA
23229 COLON
23230 ECHO
23231 ." RC5toLCD is removed,"
23232 ."  type START to restart"
23233  WARM
23234 ;
23235
23236 CODE SYS_INIT
23237 MOV #%10_1101_0100,&$3C0
23238 $1806 @ 16000 = [IF]
23239     MOV #1,&$3E0
23240 [THEN]
23241 $1806 @ 24000 = [IF]
23242     MOV #2,&$3E0
23243 [THEN]
23244     MOV #19,&$3D2
23245 MOV #%0110_0000,&$3C6
23246     MOV #10,&$3D6
23247     BIS.B #$20,&$204
23248     BIS.B #$20,&$20A
23249     BIS.B #7,&$245
23250     BIC.B #7,&$247
23251     BIS.B #$0F,&$224
23252     BIC.B #$0F,&$226
23253     BIS.B #4,&$20A
23254     BIC.B #4,&$20C
23255     MOV #RC5_INT,&$FFDE
23256 MOV #%01_0001_0100,&$340
23257     MOV ##3276,&$352
23258     MOV #%10000,&$342
23259     MOV #WDT_INT,&$FFEA
23260 BIC #1,&$130
23261 BIS.B #3,&$20D
23262 MOV &$1808,R8
23263 CMP #4,R8
23264 0= ?GOTO BW1
23265 COLON
23266     #1000 20_US
23267     %011 TOP_LCD
23268     #205 20_US
23269     %011 TOP_LCD
23270     #5 20_US
23271     %011 TOP_LCD
23272     #2 20_US
23273     %010 TOP_LCD
23274     #2 20_US
23275     %00101000 LCD_WRF
23276     %1000 LCD_WRF
23277     LCD_CLEAR
23278     %0110 LCD_WRF
23279     %1100 LCD_WRF
23280     LCD_CLEAR
23281     ['] LCD_HOME IS CR
23282     ['] LCD_WRC  IS EMIT
23283     CR ." I love you"
23284     ['] CR >BODY IS CR
23285     ['] EMIT >BODY IS EMIT
23286     ." RC5toLCD is running. Type STOP to quit"
23287     PWR_STATE ABORT
23288 ;
23289
23290 CODE START
23291 MOV #$4000,R9
23292 MOV #BACKGROUND,2(R9)
23293 MOV #WARM,R9
23294 MOV #SYS_INIT,2(R9)
23295 MOV R9,R0
23296 ENDCODE 
23297 PWR_STATE
23298
23299 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
23300
23301 MARKER {RC5TOLCD}
23302
23303 [UNDEFINED] @ [IF]
23304 CODE @
23305 MOV @R14,R14
23306 MOV @R13+,R0
23307 ENDCODE
23308 [THEN]
23309
23310 [UNDEFINED] CONSTANT [IF]
23311 : CONSTANT 
23312 CREATE
23313 HI2LO
23314 MOV R14,-2(R10)
23315 MOV @R15+,R14
23316 MOV @R1+,R13
23317 MOV @R13+,R0
23318 ENDCODE
23319 [THEN]
23320
23321 [UNDEFINED] STATE [IF]
23322 $1DBE CONSTANT STATE
23323 [THEN]
23324
23325 [UNDEFINED] = [IF]
23326 CODE =
23327 SUB @R15+,R14
23328 0<> IF
23329     AND #0,R14
23330     MOV @R13+,R0
23331 THEN
23332 XOR #-1,R14
23333 MOV @R13+,R0
23334 ENDCODE
23335 [THEN]
23336
23337 [UNDEFINED] IF [IF]
23338 CODE IF
23339 SUB #2,R15
23340 MOV R14,0(R15)
23341 MOV &$1DC6,R14
23342 ADD #4,&$1DC6
23343 MOV #$4042,0(R14)
23344 ADD #2,R14
23345 MOV @R13+,R0
23346 ENDCODE IMMEDIATE
23347
23348 CODE THEN
23349 MOV &$1DC6,0(R14)
23350 MOV @R15+,R14
23351 MOV @R13+,R0
23352 ENDCODE IMMEDIATE
23353 [THEN]
23354
23355 [UNDEFINED] ELSE [IF]
23356 CODE ELSE
23357 ADD #4,&$1DC6
23358 MOV &$1DC6,R10
23359 MOV #$403E,-4(R10)
23360 MOV R10,0(R14)
23361 SUB #2,R10
23362 MOV R10,R14
23363 MOV @R13+,R0
23364 ENDCODE IMMEDIATE
23365 [THEN]
23366
23367 [UNDEFINED] IS [IF]
23368
23369 CODE DEFER!
23370 MOV @R15+,2(R14)
23371 MOV @R15+,R14
23372 MOV @R13+,R0
23373 ENDCODE
23374
23375
23376 : IS
23377 STATE @
23378 IF  POSTPONE ['] POSTPONE DEFER! 
23379 ELSE ' DEFER! 
23380 THEN
23381 ; IMMEDIATE
23382 [THEN]
23383
23384 [UNDEFINED] >BODY [IF]
23385 CODE >BODY
23386 ADD #4,R14
23387 MOV @R13+,R0
23388 ENDCODE
23389 [THEN]
23390
23391
23392 CODE 20_US
23393 BEGIN
23394     BEGIN
23395         BIT #1,&$3C0
23396     0<> UNTIL
23397     BIC #1,&$3C0
23398     SUB #1,R14
23399 U< UNTIL
23400 MOV @R15+,R14
23401 MOV @R13+,R0
23402 ENDCODE
23403
23404 CODE TOP_LCD
23405     BIS.B #4,&$243
23406     BIT.B #1,&$241
23407 0= IF
23408     AND.B #$0F,R14
23409     MOV.B R14,&$222
23410     BIC.B #4,&$243
23411     MOV @R15+,R14
23412     MOV @R13+,R0
23413 THEN
23414     SUB #2,R15
23415     MOV R14,0(R15)
23416     BIC.B #4,&$243
23417     MOV.B &$220,R14
23418     AND.B #$0F,R14
23419     MOV @R13+,R0
23420 ENDCODE
23421
23422 CODE LCD_WRC
23423     BIS.B #2,&$243
23424 BW1 SUB #2,R15
23425     MOV R14,0(R15)
23426     RRUM #4,R14
23427     BIC.B #1,&$243
23428     BIS.B #$0F,&$224
23429 COLON
23430     TOP_LCD 2 20_US
23431     TOP_LCD 2 20_US 
23432 ;
23433
23434 CODE LCD_WRF
23435     BIC.B #2,&$243
23436     GOTO BW1
23437 ENDCODE
23438
23439 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
23440 : LCD_HOME $02 LCD_WRF 100 20_us ;
23441
23442
23443
23444 ASM WDT_INT
23445 ADD #2,R1
23446 BIT.B #$20,&$240
23447 0= IF
23448     CMP #19,&$3D6
23449     U< IF
23450         ADD #1,&$3D6
23451     THEN
23452 ELSE
23453     BIT.B #$40,&$240
23454     0= IF
23455         CMP #3,&$3D6
23456         U>= IF
23457            SUB #1,&$3D6
23458         THEN
23459     THEN
23460 THEN
23461 BW1
23462 MOV @R1+,R0
23463 ENDASM
23464
23465 ASM RC5_INT
23466 ADD #2,R1
23467 $1806 @ 16000 = [IF]
23468     MOV #1,&$3A0
23469 [THEN]
23470 $1806 @ 24000 = [IF]
23471     MOV #2,&$3A0
23472 [THEN]
23473 MOV #1778,R9
23474 MOV #14,R10
23475 BEGIN
23476 MOV #%1011100100,&$380
23477     RRUM    #1,R9
23478     MOV     R9,R8
23479     RRUM    #1,R8
23480     ADD     R9,R8
23481     BEGIN   CMP R8,&$390
23482     U>= UNTIL
23483     BIT.B   #4,&$200
23484     ADDC    R11,R11
23485     MOV.B   &$200,&$208
23486     BIC.B   #4,&$20C
23487     SUB     #1,R10
23488 0<> WHILE
23489     ADD R9,R8
23490     BEGIN
23491         MOV &$390,R9
23492         CMP R8,R9
23493         U>= IF
23494         BIC #$30,&$380
23495         GOTO BW1
23496         THEN
23497         BIT.B #4,&$20C
23498     0<> UNTIL
23499 REPEAT
23500 BIC #$30,&$380
23501 RLAM    #1,R11
23502 MOV.B   R11,R9
23503 RRUM    #2,R9
23504 BIT     #$4000,R11
23505 0= IF   BIS #$40,R9
23506 THEN
23507 RRUM    #3,R11
23508 XOR     @R1,R11
23509 BIT     #$400,R11
23510 0= ?GOTO BW1
23511 XOR #$400,0(R1)
23512 SUB #8,R15
23513 MOV R14,6(R15)
23514 MOV &$1DDC,4(R15)
23515 MOV #$10,&$1DDC
23516 MOV R9,0(R15)
23517 MOV #0,R14
23518 LO2HI
23519     LCD_CLEAR
23520     <# # #S #36 HOLD #>
23521     ['] LCD_WRC IS EMIT
23522     TYPE
23523     ['] EMIT >BODY IS EMIT
23524 HI2LO
23525 MOV @R15+,&$1DDC
23526 MOV @R15+,R14
23527 MOV @R1+,R0
23528 ENDASM
23529
23530 ASM BACKGROUND
23531 BEGIN
23532     CALL &$1814
23533     BIS &$180A,R2
23534 AGAIN
23535 ENDASM
23536
23537 ASM SYS_OUT
23538     MOV #WARM,R9
23539     ADD #4,R9
23540     MOV R9,R0
23541 ENDASM
23542
23543 CODE STOP
23544 BW1 MOV #$4000,R9
23545     ADD #4,R9
23546     MOV R9,-2(R9)
23547     MOV #WARM,R9
23548     MOV #SYS_OUT,2(R9)
23549     BIC.B #4,&$20A
23550     BIC.B #4,&$20C
23551     MOV #0,&$3C0
23552     MOV #0,&$340
23553     MOV #0,&$342
23554     MOV #COLD,R9
23555     MOV R9,&$FFDE
23556     MOV R9,&$FFEA
23557 COLON
23558 ECHO
23559 ." RC5toLCD is removed,"
23560 ."  type START to restart"
23561  WARM
23562 ;
23563
23564 CODE SYS_INIT
23565 MOV #%10_1101_0100,&$3C0
23566 $1806 @ 16000 = [IF]
23567     MOV #1,&$3E0
23568 [THEN]
23569 $1806 @ 24000 = [IF]
23570     MOV #2,&$3E0
23571 [THEN]
23572     MOV #19,&$3D2
23573 MOV #%0110_0000,&$3C6
23574     MOV #10,&$3D6
23575     BIS.B #$20,&$204
23576     BIS.B #$20,&$20A
23577     BIS.B #7,&$245
23578     BIC.B #7,&$247
23579     BIS.B #$0F,&$224
23580     BIC.B #$0F,&$226
23581     BIS.B #4,&$20A
23582     BIC.B #4,&$20C
23583     MOV #RC5_INT,&$FFDE
23584 MOV #%01_0001_0100,&$340
23585     MOV ##3276,&$352
23586     MOV #%10000,&$342
23587     MOV #WDT_INT,&$FFEA
23588 BIC #1,&$130
23589 BIS.B #3,&$20D
23590 MOV &$1808,R8
23591 CMP #4,R8
23592 0= ?GOTO BW1
23593 COLON
23594     #1000 20_US
23595     %011 TOP_LCD
23596     #205 20_US
23597     %011 TOP_LCD
23598     #5 20_US
23599     %011 TOP_LCD
23600     #2 20_US
23601     %010 TOP_LCD
23602     #2 20_US
23603     %00101000 LCD_WRF
23604     %1000 LCD_WRF
23605     LCD_CLEAR
23606     %0110 LCD_WRF
23607     %1100 LCD_WRF
23608     LCD_CLEAR
23609     ['] LCD_HOME IS CR
23610     ['] LCD_WRC  IS EMIT
23611     CR ." I love you"
23612     ['] CR >BODY IS CR
23613     ['] EMIT >BODY IS EMIT
23614     ." RC5toLCD is running. Type STOP to quit"
23615     PWR_STATE ABORT
23616 ;
23617
23618 CODE START
23619 MOV #$4000,R9
23620 MOV #BACKGROUND,2(R9)
23621 MOV #WARM,R9
23622 MOV #SYS_INIT,2(R9)
23623 MOV R9,R0
23624 ENDCODE 
23625 PWR_STATE
23626
23627 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
23628
23629 MARKER {RC5TOLCD}
23630
23631 [UNDEFINED] @ [IF]
23632 CODE @
23633 MOV @R14,R14
23634 MOV @R13+,R0
23635 ENDCODE
23636 [THEN]
23637
23638 [UNDEFINED] CONSTANT [IF]
23639 : CONSTANT 
23640 CREATE
23641 HI2LO
23642 MOV R14,-2(R10)
23643 MOV @R15+,R14
23644 MOV @R1+,R13
23645 MOV @R13+,R0
23646 ENDCODE
23647 [THEN]
23648
23649 [UNDEFINED] STATE [IF]
23650 $1DBE CONSTANT STATE
23651 [THEN]
23652
23653 [UNDEFINED] = [IF]
23654 CODE =
23655 SUB @R15+,R14
23656 0<> IF
23657     AND #0,R14
23658     MOV @R13+,R0
23659 THEN
23660 XOR #-1,R14
23661 MOV @R13+,R0
23662 ENDCODE
23663 [THEN]
23664
23665 [UNDEFINED] IF [IF]
23666 CODE IF
23667 SUB #2,R15
23668 MOV R14,0(R15)
23669 MOV &$1DC6,R14
23670 ADD #4,&$1DC6
23671 MOV #$4042,0(R14)
23672 ADD #2,R14
23673 MOV @R13+,R0
23674 ENDCODE IMMEDIATE
23675
23676 CODE THEN
23677 MOV &$1DC6,0(R14)
23678 MOV @R15+,R14
23679 MOV @R13+,R0
23680 ENDCODE IMMEDIATE
23681 [THEN]
23682
23683 [UNDEFINED] ELSE [IF]
23684 CODE ELSE
23685 ADD #4,&$1DC6
23686 MOV &$1DC6,R10
23687 MOV #$403E,-4(R10)
23688 MOV R10,0(R14)
23689 SUB #2,R10
23690 MOV R10,R14
23691 MOV @R13+,R0
23692 ENDCODE IMMEDIATE
23693 [THEN]
23694
23695 [UNDEFINED] IS [IF]
23696
23697 CODE DEFER!
23698 MOV @R15+,2(R14)
23699 MOV @R15+,R14
23700 MOV @R13+,R0
23701 ENDCODE
23702
23703
23704 : IS
23705 STATE @
23706 IF  POSTPONE ['] POSTPONE DEFER! 
23707 ELSE ' DEFER! 
23708 THEN
23709 ; IMMEDIATE
23710 [THEN]
23711
23712 [UNDEFINED] >BODY [IF]
23713 CODE >BODY
23714 ADD #4,R14
23715 MOV @R13+,R0
23716 ENDCODE
23717 [THEN]
23718
23719
23720 CODE 20_US
23721 BEGIN
23722     BEGIN
23723         BIT #1,&$3C0
23724     0<> UNTIL
23725     BIC #1,&$3C0
23726     SUB #1,R14
23727 U< UNTIL
23728 MOV @R15+,R14
23729 MOV @R13+,R0
23730 ENDCODE
23731
23732 CODE TOP_LCD
23733     BIS.B #4,&$243
23734     BIT.B #1,&$241
23735 0= IF
23736     AND.B #$0F,R14
23737     MOV.B R14,&$222
23738     BIC.B #4,&$243
23739     MOV @R15+,R14
23740     MOV @R13+,R0
23741 THEN
23742     SUB #2,R15
23743     MOV R14,0(R15)
23744     BIC.B #4,&$243
23745     MOV.B &$220,R14
23746     AND.B #$0F,R14
23747     MOV @R13+,R0
23748 ENDCODE
23749
23750 CODE LCD_WRC
23751     BIS.B #2,&$243
23752 BW1 SUB #2,R15
23753     MOV R14,0(R15)
23754     RRUM #4,R14
23755     BIC.B #1,&$243
23756     BIS.B #$0F,&$224
23757 COLON
23758     TOP_LCD 2 20_US
23759     TOP_LCD 2 20_US 
23760 ;
23761
23762 CODE LCD_WRF
23763     BIC.B #2,&$243
23764     GOTO BW1
23765 ENDCODE
23766
23767 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
23768 : LCD_HOME $02 LCD_WRF 100 20_us ;
23769
23770
23771
23772 ASM WDT_INT
23773 ADD #2,R1
23774 BIT.B #$20,&$240
23775 0= IF
23776     CMP #19,&$3D6
23777     U< IF
23778         ADD #1,&$3D6
23779     THEN
23780 ELSE
23781     BIT.B #$40,&$240
23782     0= IF
23783         CMP #3,&$3D6
23784         U>= IF
23785            SUB #1,&$3D6
23786         THEN
23787     THEN
23788 THEN
23789 BW1
23790 MOV @R1+,R0
23791 ENDASM
23792
23793 ASM RC5_INT
23794 ADD #2,R1
23795 $1806 @ 16000 = [IF]
23796     MOV #1,&$3A0
23797 [THEN]
23798 $1806 @ 24000 = [IF]
23799     MOV #2,&$3A0
23800 [THEN]
23801 MOV #1778,R9
23802 MOV #14,R10
23803 BEGIN
23804 MOV #%1011100100,&$380
23805     RRUM    #1,R9
23806     MOV     R9,R8
23807     RRUM    #1,R8
23808     ADD     R9,R8
23809     BEGIN   CMP R8,&$390
23810     U>= UNTIL
23811     BIT.B   #4,&$200
23812     ADDC    R11,R11
23813     MOV.B   &$200,&$208
23814     BIC.B   #4,&$20C
23815     SUB     #1,R10
23816 0<> WHILE
23817     ADD R9,R8
23818     BEGIN
23819         MOV &$390,R9
23820         CMP R8,R9
23821         U>= IF
23822         BIC #$30,&$380
23823         GOTO BW1
23824         THEN
23825         BIT.B #4,&$20C
23826     0<> UNTIL
23827 REPEAT
23828 BIC #$30,&$380
23829 RLAM    #1,R11
23830 MOV.B   R11,R9
23831 RRUM    #2,R9
23832 BIT     #$4000,R11
23833 0= IF   BIS #$40,R9
23834 THEN
23835 RRUM    #3,R11
23836 XOR     @R1,R11
23837 BIT     #$400,R11
23838 0= ?GOTO BW1
23839 XOR #$400,0(R1)
23840 SUB #8,R15
23841 MOV R14,6(R15)
23842 MOV &$1DDC,4(R15)
23843 MOV #$10,&$1DDC
23844 MOV R9,0(R15)
23845 MOV #0,R14
23846 LO2HI
23847     LCD_CLEAR
23848     <# # #S #36 HOLD #>
23849     ['] LCD_WRC IS EMIT
23850     TYPE
23851     ['] EMIT >BODY IS EMIT
23852 HI2LO
23853 MOV @R15+,&$1DDC
23854 MOV @R15+,R14
23855 MOV @R1+,R0
23856 ENDASM
23857
23858 ASM BACKGROUND
23859 BEGIN
23860     CALL &$1814
23861     BIS &$180A,R2
23862 AGAIN
23863 ENDASM
23864
23865 ASM SYS_OUT
23866     MOV #WARM,R9
23867     ADD #4,R9
23868     MOV R9,R0
23869 ENDASM
23870
23871 CODE STOP
23872 BW1 MOV #$4000,R9
23873     ADD #4,R9
23874     MOV R9,-2(R9)
23875     MOV #WARM,R9
23876     MOV #SYS_OUT,2(R9)
23877     BIC.B #4,&$20A
23878     BIC.B #4,&$20C
23879     MOV #0,&$3C0
23880     MOV #0,&$340
23881     MOV #0,&$342
23882     MOV #COLD,R9
23883     MOV R9,&$FFDE
23884     MOV R9,&$FFEA
23885 COLON
23886 ECHO
23887 ." RC5toLCD is removed,"
23888 ."  type START to restart"
23889  WARM
23890 ;
23891
23892 CODE SYS_INIT
23893 MOV #%10_1101_0100,&$3C0
23894 $1806 @ 16000 = [IF]
23895     MOV #1,&$3E0
23896 [THEN]
23897 $1806 @ 24000 = [IF]
23898     MOV #2,&$3E0
23899 [THEN]
23900     MOV #19,&$3D2
23901 MOV #%0110_0000,&$3C6
23902     MOV #10,&$3D6
23903     BIS.B #$20,&$204
23904     BIS.B #$20,&$20A
23905     BIS.B #7,&$245
23906     BIC.B #7,&$247
23907     BIS.B #$0F,&$224
23908     BIC.B #$0F,&$226
23909     BIS.B #4,&$20A
23910     BIC.B #4,&$20C
23911     MOV #RC5_INT,&$FFDE
23912 MOV #%01_0001_0100,&$340
23913     MOV ##3276,&$352
23914     MOV #%10000,&$342
23915     MOV #WDT_INT,&$FFEA
23916 BIC #1,&$130
23917 BIS.B #3,&$20D
23918 MOV &$1808,R8
23919 CMP #4,R8
23920 0= ?GOTO BW1
23921 COLON
23922     #1000 20_US
23923     %011 TOP_LCD
23924     #205 20_US
23925     %011 TOP_LCD
23926     #5 20_US
23927     %011 TOP_LCD
23928     #2 20_US
23929     %010 TOP_LCD
23930     #2 20_US
23931     %00101000 LCD_WRF
23932     %1000 LCD_WRF
23933     LCD_CLEAR
23934     %0110 LCD_WRF
23935     %1100 LCD_WRF
23936     LCD_CLEAR
23937     ['] LCD_HOME IS CR
23938     ['] LCD_WRC  IS EMIT
23939     CR ." I love you"
23940     ['] CR >BODY IS CR
23941     ['] EMIT >BODY IS EMIT
23942     ." RC5toLCD is running. Type STOP to quit"
23943     PWR_STATE ABORT
23944 ;
23945
23946 CODE START
23947 MOV #$4000,R9
23948 MOV #BACKGROUND,2(R9)
23949 MOV #WARM,R9
23950 MOV #SYS_INIT,2(R9)
23951 MOV R9,R0
23952 ENDCODE 
23953 PWR_STATE
23954
23955 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
23956
23957 MARKER {RC5TOLCD}
23958
23959 [UNDEFINED] @ [IF]
23960 CODE @
23961 MOV @R14,R14
23962 MOV @R13+,R0
23963 ENDCODE
23964 [THEN]
23965
23966 [UNDEFINED] CONSTANT [IF]
23967 : CONSTANT 
23968 CREATE
23969 HI2LO
23970 MOV R14,-2(R10)
23971 MOV @R15+,R14
23972 MOV @R1+,R13
23973 MOV @R13+,R0
23974 ENDCODE
23975 [THEN]
23976
23977 [UNDEFINED] STATE [IF]
23978 $1DBE CONSTANT STATE
23979 [THEN]
23980
23981 [UNDEFINED] = [IF]
23982 CODE =
23983 SUB @R15+,R14
23984 0<> IF
23985     AND #0,R14
23986     MOV @R13+,R0
23987 THEN
23988 XOR #-1,R14
23989 MOV @R13+,R0
23990 ENDCODE
23991 [THEN]
23992
23993 [UNDEFINED] IF [IF]
23994 CODE IF
23995 SUB #2,R15
23996 MOV R14,0(R15)
23997 MOV &$1DC6,R14
23998 ADD #4,&$1DC6
23999 MOV #$4042,0(R14)
24000 ADD #2,R14
24001 MOV @R13+,R0
24002 ENDCODE IMMEDIATE
24003
24004 CODE THEN
24005 MOV &$1DC6,0(R14)
24006 MOV @R15+,R14
24007 MOV @R13+,R0
24008 ENDCODE IMMEDIATE
24009 [THEN]
24010
24011 [UNDEFINED] ELSE [IF]
24012 CODE ELSE
24013 ADD #4,&$1DC6
24014 MOV &$1DC6,R10
24015 MOV #$403E,-4(R10)
24016 MOV R10,0(R14)
24017 SUB #2,R10
24018 MOV R10,R14
24019 MOV @R13+,R0
24020 ENDCODE IMMEDIATE
24021 [THEN]
24022
24023 [UNDEFINED] IS [IF]
24024
24025 CODE DEFER!
24026 MOV @R15+,2(R14)
24027 MOV @R15+,R14
24028 MOV @R13+,R0
24029 ENDCODE
24030
24031
24032 : IS
24033 STATE @
24034 IF  POSTPONE ['] POSTPONE DEFER! 
24035 ELSE ' DEFER! 
24036 THEN
24037 ; IMMEDIATE
24038 [THEN]
24039
24040 [UNDEFINED] >BODY [IF]
24041 CODE >BODY
24042 ADD #4,R14
24043 MOV @R13+,R0
24044 ENDCODE
24045 [THEN]
24046
24047
24048 CODE 20_US
24049 BEGIN
24050     BEGIN
24051         BIT #1,&$3C0
24052     0<> UNTIL
24053     BIC #1,&$3C0
24054     SUB #1,R14
24055 U< UNTIL
24056 MOV @R15+,R14
24057 MOV @R13+,R0
24058 ENDCODE
24059
24060 CODE TOP_LCD
24061     BIS.B #4,&$243
24062     BIT.B #1,&$241
24063 0= IF
24064     AND.B #$0F,R14
24065     MOV.B R14,&$222
24066     BIC.B #4,&$243
24067     MOV @R15+,R14
24068     MOV @R13+,R0
24069 THEN
24070     SUB #2,R15
24071     MOV R14,0(R15)
24072     BIC.B #4,&$243
24073     MOV.B &$220,R14
24074     AND.B #$0F,R14
24075     MOV @R13+,R0
24076 ENDCODE
24077
24078 CODE LCD_WRC
24079     BIS.B #2,&$243
24080 BW1 SUB #2,R15
24081     MOV R14,0(R15)
24082     RRUM #4,R14
24083     BIC.B #1,&$243
24084     BIS.B #$0F,&$224
24085 COLON
24086     TOP_LCD 2 20_US
24087     TOP_LCD 2 20_US 
24088 ;
24089
24090 CODE LCD_WRF
24091     BIC.B #2,&$243
24092     GOTO BW1
24093 ENDCODE
24094
24095 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
24096 : LCD_HOME $02 LCD_WRF 100 20_us ;
24097
24098
24099
24100 ASM WDT_INT
24101 ADD #2,R1
24102 BIT.B #$20,&$240
24103 0= IF
24104     CMP #19,&$3D6
24105     U< IF
24106         ADD #1,&$3D6
24107     THEN
24108 ELSE
24109     BIT.B #$40,&$240
24110     0= IF
24111         CMP #3,&$3D6
24112         U>= IF
24113            SUB #1,&$3D6
24114         THEN
24115     THEN
24116 THEN
24117 BW1
24118 MOV @R1+,R0
24119 ENDASM
24120
24121 ASM RC5_INT
24122 ADD #2,R1
24123 $1806 @ 16000 = [IF]
24124     MOV #1,&$3A0
24125 [THEN]
24126 $1806 @ 24000 = [IF]
24127     MOV #2,&$3A0
24128 [THEN]
24129 MOV #1778,R9
24130 MOV #14,R10
24131 BEGIN
24132 MOV #%1011100100,&$380
24133     RRUM    #1,R9
24134     MOV     R9,R8
24135     RRUM    #1,R8
24136     ADD     R9,R8
24137     BEGIN   CMP R8,&$390
24138     U>= UNTIL
24139     BIT.B   #4,&$200
24140     ADDC    R11,R11
24141     MOV.B   &$200,&$208
24142     BIC.B   #4,&$20C
24143     SUB     #1,R10
24144 0<> WHILE
24145     ADD R9,R8
24146     BEGIN
24147         MOV &$390,R9
24148         CMP R8,R9
24149         U>= IF
24150         BIC #$30,&$380
24151         GOTO BW1
24152         THEN
24153         BIT.B #4,&$20C
24154     0<> UNTIL
24155 REPEAT
24156 BIC #$30,&$380
24157 RLAM    #1,R11
24158 MOV.B   R11,R9
24159 RRUM    #2,R9
24160 BIT     #$4000,R11
24161 0= IF   BIS #$40,R9
24162 THEN
24163 RRUM    #3,R11
24164 XOR     @R1,R11
24165 BIT     #$400,R11
24166 0= ?GOTO BW1
24167 XOR #$400,0(R1)
24168 SUB #8,R15
24169 MOV R14,6(R15)
24170 MOV &$1DDC,4(R15)
24171 MOV #$10,&$1DDC
24172 MOV R9,0(R15)
24173 MOV #0,R14
24174 LO2HI
24175     LCD_CLEAR
24176     <# # #S #36 HOLD #>
24177     ['] LCD_WRC IS EMIT
24178     TYPE
24179     ['] EMIT >BODY IS EMIT
24180 HI2LO
24181 MOV @R15+,&$1DDC
24182 MOV @R15+,R14
24183 MOV @R1+,R0
24184 ENDASM
24185
24186 ASM BACKGROUND
24187 BEGIN
24188     CALL &$1814
24189     BIS &$180A,R2
24190 AGAIN
24191 ENDASM
24192
24193 ASM SYS_OUT
24194     MOV #WARM,R9
24195     ADD #4,R9
24196     MOV R9,R0
24197 ENDASM
24198
24199 CODE STOP
24200 BW1 MOV #$4000,R9
24201     ADD #4,R9
24202     MOV R9,-2(R9)
24203     MOV #WARM,R9
24204     MOV #SYS_OUT,2(R9)
24205     BIC.B #4,&$20A
24206     BIC.B #4,&$20C
24207     MOV #0,&$3C0
24208     MOV #0,&$340
24209     MOV #0,&$342
24210     MOV #COLD,R9
24211     MOV R9,&$FFDE
24212     MOV R9,&$FFEA
24213 COLON
24214 ECHO
24215 ." RC5toLCD is removed,"
24216 ."  type START to restart"
24217  WARM
24218 ;
24219
24220 CODE SYS_INIT
24221 MOV #%10_1101_0100,&$3C0
24222 $1806 @ 16000 = [IF]
24223     MOV #1,&$3E0
24224 [THEN]
24225 $1806 @ 24000 = [IF]
24226     MOV #2,&$3E0
24227 [THEN]
24228     MOV #19,&$3D2
24229 MOV #%0110_0000,&$3C6
24230     MOV #10,&$3D6
24231     BIS.B #$20,&$204
24232     BIS.B #$20,&$20A
24233     BIS.B #7,&$245
24234     BIC.B #7,&$247
24235     BIS.B #$0F,&$224
24236     BIC.B #$0F,&$226
24237     BIS.B #4,&$20A
24238     BIC.B #4,&$20C
24239     MOV #RC5_INT,&$FFDE
24240 MOV #%01_0001_0100,&$340
24241     MOV ##3276,&$352
24242     MOV #%10000,&$342
24243     MOV #WDT_INT,&$FFEA
24244 BIC #1,&$130
24245 BIS.B #3,&$20D
24246 MOV &$1808,R8
24247 CMP #4,R8
24248 0= ?GOTO BW1
24249 COLON
24250     #1000 20_US
24251     %011 TOP_LCD
24252     #205 20_US
24253     %011 TOP_LCD
24254     #5 20_US
24255     %011 TOP_LCD
24256     #2 20_US
24257     %010 TOP_LCD
24258     #2 20_US
24259     %00101000 LCD_WRF
24260     %1000 LCD_WRF
24261     LCD_CLEAR
24262     %0110 LCD_WRF
24263     %1100 LCD_WRF
24264     LCD_CLEAR
24265     ['] LCD_HOME IS CR
24266     ['] LCD_WRC  IS EMIT
24267     CR ." I love you"
24268     ['] CR >BODY IS CR
24269     ['] EMIT >BODY IS EMIT
24270     ." RC5toLCD is running. Type STOP to quit"
24271     PWR_STATE ABORT
24272 ;
24273
24274 CODE START
24275 MOV #$4000,R9
24276 MOV #BACKGROUND,2(R9)
24277 MOV #WARM,R9
24278 MOV #SYS_INIT,2(R9)
24279 MOV R9,R0
24280 ENDCODE 
24281 PWR_STATE
24282
24283 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
24284
24285 MARKER {RC5TOLCD}
24286
24287 [UNDEFINED] @ [IF]
24288 CODE @
24289 MOV @R14,R14
24290 MOV @R13+,R0
24291 ENDCODE
24292 [THEN]
24293
24294 [UNDEFINED] CONSTANT [IF]
24295 : CONSTANT 
24296 CREATE
24297 HI2LO
24298 MOV R14,-2(R10)
24299 MOV @R15+,R14
24300 MOV @R1+,R13
24301 MOV @R13+,R0
24302 ENDCODE
24303 [THEN]
24304
24305 [UNDEFINED] STATE [IF]
24306 $1DBE CONSTANT STATE
24307 [THEN]
24308
24309 [UNDEFINED] = [IF]
24310 CODE =
24311 SUB @R15+,R14
24312 0<> IF
24313     AND #0,R14
24314     MOV @R13+,R0
24315 THEN
24316 XOR #-1,R14
24317 MOV @R13+,R0
24318 ENDCODE
24319 [THEN]
24320
24321 [UNDEFINED] IF [IF]
24322 CODE IF
24323 SUB #2,R15
24324 MOV R14,0(R15)
24325 MOV &$1DC6,R14
24326 ADD #4,&$1DC6
24327 MOV #$4042,0(R14)
24328 ADD #2,R14
24329 MOV @R13+,R0
24330 ENDCODE IMMEDIATE
24331
24332 CODE THEN
24333 MOV &$1DC6,0(R14)
24334 MOV @R15+,R14
24335 MOV @R13+,R0
24336 ENDCODE IMMEDIATE
24337 [THEN]
24338
24339 [UNDEFINED] ELSE [IF]
24340 CODE ELSE
24341 ADD #4,&$1DC6
24342 MOV &$1DC6,R10
24343 MOV #$403E,-4(R10)
24344 MOV R10,0(R14)
24345 SUB #2,R10
24346 MOV R10,R14
24347 MOV @R13+,R0
24348 ENDCODE IMMEDIATE
24349 [THEN]
24350
24351 [UNDEFINED] IS [IF]
24352
24353 CODE DEFER!
24354 MOV @R15+,2(R14)
24355 MOV @R15+,R14
24356 MOV @R13+,R0
24357 ENDCODE
24358
24359
24360 : IS
24361 STATE @
24362 IF  POSTPONE ['] POSTPONE DEFER! 
24363 ELSE ' DEFER! 
24364 THEN
24365 ; IMMEDIATE
24366 [THEN]
24367
24368 [UNDEFINED] >BODY [IF]
24369 CODE >BODY
24370 ADD #4,R14
24371 MOV @R13+,R0
24372 ENDCODE
24373 [THEN]
24374
24375
24376 CODE 20_US
24377 BEGIN
24378     BEGIN
24379         BIT #1,&$3C0
24380     0<> UNTIL
24381     BIC #1,&$3C0
24382     SUB #1,R14
24383 U< UNTIL
24384 MOV @R15+,R14
24385 MOV @R13+,R0
24386 ENDCODE
24387
24388 CODE TOP_LCD
24389     BIS.B #4,&$243
24390     BIT.B #1,&$241
24391 0= IF
24392     AND.B #$0F,R14
24393     MOV.B R14,&$222
24394     BIC.B #4,&$243
24395     MOV @R15+,R14
24396     MOV @R13+,R0
24397 THEN
24398     SUB #2,R15
24399     MOV R14,0(R15)
24400     BIC.B #4,&$243
24401     MOV.B &$220,R14
24402     AND.B #$0F,R14
24403     MOV @R13+,R0
24404 ENDCODE
24405
24406 CODE LCD_WRC
24407     BIS.B #2,&$243
24408 BW1 SUB #2,R15
24409     MOV R14,0(R15)
24410     RRUM #4,R14
24411     BIC.B #1,&$243
24412     BIS.B #$0F,&$224
24413 COLON
24414     TOP_LCD 2 20_US
24415     TOP_LCD 2 20_US 
24416 ;
24417
24418 CODE LCD_WRF
24419     BIC.B #2,&$243
24420     GOTO BW1
24421 ENDCODE
24422
24423 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
24424 : LCD_HOME $02 LCD_WRF 100 20_us ;
24425
24426
24427
24428 ASM WDT_INT
24429 ADD #2,R1
24430 BIT.B #$20,&$240
24431 0= IF
24432     CMP #19,&$3D6
24433     U< IF
24434         ADD #1,&$3D6
24435     THEN
24436 ELSE
24437     BIT.B #$40,&$240
24438     0= IF
24439         CMP #3,&$3D6
24440         U>= IF
24441            SUB #1,&$3D6
24442         THEN
24443     THEN
24444 THEN
24445 BW1
24446 MOV @R1+,R0
24447 ENDASM
24448
24449 ASM RC5_INT
24450 ADD #2,R1
24451 $1806 @ 16000 = [IF]
24452     MOV #1,&$3A0
24453 [THEN]
24454 $1806 @ 24000 = [IF]
24455     MOV #2,&$3A0
24456 [THEN]
24457 MOV #1778,R9
24458 MOV #14,R10
24459 BEGIN
24460 MOV #%1011100100,&$380
24461     RRUM    #1,R9
24462     MOV     R9,R8
24463     RRUM    #1,R8
24464     ADD     R9,R8
24465     BEGIN   CMP R8,&$390
24466     U>= UNTIL
24467     BIT.B   #4,&$200
24468     ADDC    R11,R11
24469     MOV.B   &$200,&$208
24470     BIC.B   #4,&$20C
24471     SUB     #1,R10
24472 0<> WHILE
24473     ADD R9,R8
24474     BEGIN
24475         MOV &$390,R9
24476         CMP R8,R9
24477         U>= IF
24478         BIC #$30,&$380
24479         GOTO BW1
24480         THEN
24481         BIT.B #4,&$20C
24482     0<> UNTIL
24483 REPEAT
24484 BIC #$30,&$380
24485 RLAM    #1,R11
24486 MOV.B   R11,R9
24487 RRUM    #2,R9
24488 BIT     #$4000,R11
24489 0= IF   BIS #$40,R9
24490 THEN
24491 RRUM    #3,R11
24492 XOR     @R1,R11
24493 BIT     #$400,R11
24494 0= ?GOTO BW1
24495 XOR #$400,0(R1)
24496 SUB #8,R15
24497 MOV R14,6(R15)
24498 MOV &$1DDC,4(R15)
24499 MOV #$10,&$1DDC
24500 MOV R9,0(R15)
24501 MOV #0,R14
24502 LO2HI
24503     LCD_CLEAR
24504     <# # #S #36 HOLD #>
24505     ['] LCD_WRC IS EMIT
24506     TYPE
24507     ['] EMIT >BODY IS EMIT
24508 HI2LO
24509 MOV @R15+,&$1DDC
24510 MOV @R15+,R14
24511 MOV @R1+,R0
24512 ENDASM
24513
24514 ASM BACKGROUND
24515 BEGIN
24516     CALL &$1814
24517     BIS &$180A,R2
24518 AGAIN
24519 ENDASM
24520
24521 ASM SYS_OUT
24522     MOV #WARM,R9
24523     ADD #4,R9
24524     MOV R9,R0
24525 ENDASM
24526
24527 CODE STOP
24528 BW1 MOV #$4000,R9
24529     ADD #4,R9
24530     MOV R9,-2(R9)
24531     MOV #WARM,R9
24532     MOV #SYS_OUT,2(R9)
24533     BIC.B #4,&$20A
24534     BIC.B #4,&$20C
24535     MOV #0,&$3C0
24536     MOV #0,&$340
24537     MOV #0,&$342
24538     MOV #COLD,R9
24539     MOV R9,&$FFDE
24540     MOV R9,&$FFEA
24541 COLON
24542 ECHO
24543 ." RC5toLCD is removed,"
24544 ."  type START to restart"
24545  WARM
24546 ;
24547
24548 CODE SYS_INIT
24549 MOV #%10_1101_0100,&$3C0
24550 $1806 @ 16000 = [IF]
24551     MOV #1,&$3E0
24552 [THEN]
24553 $1806 @ 24000 = [IF]
24554     MOV #2,&$3E0
24555 [THEN]
24556     MOV #19,&$3D2
24557 MOV #%0110_0000,&$3C6
24558     MOV #10,&$3D6
24559     BIS.B #$20,&$204
24560     BIS.B #$20,&$20A
24561     BIS.B #7,&$245
24562     BIC.B #7,&$247
24563     BIS.B #$0F,&$224
24564     BIC.B #$0F,&$226
24565     BIS.B #4,&$20A
24566     BIC.B #4,&$20C
24567     MOV #RC5_INT,&$FFDE
24568 MOV #%01_0001_0100,&$340
24569     MOV ##3276,&$352
24570     MOV #%10000,&$342
24571     MOV #WDT_INT,&$FFEA
24572 BIC #1,&$130
24573 BIS.B #3,&$20D
24574 MOV &$1808,R8
24575 CMP #4,R8
24576 0= ?GOTO BW1
24577 COLON
24578     #1000 20_US
24579     %011 TOP_LCD
24580     #205 20_US
24581     %011 TOP_LCD
24582     #5 20_US
24583     %011 TOP_LCD
24584     #2 20_US
24585     %010 TOP_LCD
24586     #2 20_US
24587     %00101000 LCD_WRF
24588     %1000 LCD_WRF
24589     LCD_CLEAR
24590     %0110 LCD_WRF
24591     %1100 LCD_WRF
24592     LCD_CLEAR
24593     ['] LCD_HOME IS CR
24594     ['] LCD_WRC  IS EMIT
24595     CR ." I love you"
24596     ['] CR >BODY IS CR
24597     ['] EMIT >BODY IS EMIT
24598     ." RC5toLCD is running. Type STOP to quit"
24599     PWR_STATE ABORT
24600 ;
24601
24602 CODE START
24603 MOV #$4000,R9
24604 MOV #BACKGROUND,2(R9)
24605 MOV #WARM,R9
24606 MOV #SYS_INIT,2(R9)
24607 MOV R9,R0
24608 ENDCODE 
24609 PWR_STATE
24610
24611 [DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]
24612
24613 MARKER {RC5TOLCD}
24614
24615 [UNDEFINED] @ [IF]
24616 CODE @
24617 MOV @R14,R14
24618 MOV @R13+,R0
24619 ENDCODE
24620 [THEN]
24621
24622 [UNDEFINED] CONSTANT [IF]
24623 : CONSTANT 
24624 CREATE
24625 HI2LO
24626 MOV R14,-2(R10)
24627 MOV @R15+,R14
24628 MOV @R1+,R13
24629 MOV @R13+,R0
24630 ENDCODE
24631 [THEN]
24632
24633 [UNDEFINED] STATE [IF]
24634 $1DBE CONSTANT STATE
24635 [THEN]
24636
24637 [UNDEFINED] = [IF]
24638 CODE =
24639 SUB @R15+,R14
24640 0<> IF
24641     AND #0,R14
24642     MOV @R13+,R0
24643 THEN
24644 XOR #-1,R14
24645 MOV @R13+,R0
24646 ENDCODE
24647 [THEN]
24648
24649 [UNDEFINED] IF [IF]
24650 CODE IF
24651 SUB #2,R15
24652 MOV R14,0(R15)
24653 MOV &$1DC6,R14
24654 ADD #4,&$1DC6
24655 MOV #$4042,0(R14)
24656 ADD #2,R14
24657 MOV @R13+,R0
24658 ENDCODE IMMEDIATE
24659
24660 CODE THEN
24661 MOV &$1DC6,0(R14)
24662 MOV @R15+,R14
24663 MOV @R13+,R0
24664 ENDCODE IMMEDIATE
24665 [THEN]
24666
24667 [UNDEFINED] ELSE [IF]
24668 CODE ELSE
24669 ADD #4,&$1DC6
24670 MOV &$1DC6,R10
24671 MOV #$403E,-4(R10)
24672 MOV R10,0(R14)
24673 SUB #2,R10
24674 MOV R10,R14
24675 MOV @R13+,R0
24676 ENDCODE IMMEDIATE
24677 [THEN]
24678
24679 [UNDEFINED] IS [IF]
24680
24681 CODE DEFER!
24682 MOV @R15+,2(R14)
24683 MOV @R15+,R14
24684 MOV @R13+,R0
24685 ENDCODE
24686
24687
24688 : IS
24689 STATE @
24690 IF  POSTPONE ['] POSTPONE DEFER! 
24691 ELSE ' DEFER! 
24692 THEN
24693 ; IMMEDIATE
24694 [THEN]
24695
24696 [UNDEFINED] >BODY [IF]
24697 CODE >BODY
24698 ADD #4,R14
24699 MOV @R13+,R0
24700 ENDCODE
24701 [THEN]
24702
24703
24704 CODE 20_US
24705 BEGIN
24706     BEGIN
24707         BIT #1,&$3C0
24708     0<> UNTIL
24709     BIC #1,&$3C0
24710     SUB #1,R14
24711 U< UNTIL
24712 MOV @R15+,R14
24713 MOV @R13+,R0
24714 ENDCODE
24715
24716 CODE TOP_LCD
24717     BIS.B #4,&$243
24718     BIT.B #1,&$241
24719 0= IF
24720     AND.B #$0F,R14
24721     MOV.B R14,&$222
24722     BIC.B #4,&$243
24723     MOV @R15+,R14
24724     MOV @R13+,R0
24725 THEN
24726     SUB #2,R15
24727     MOV R14,0(R15)
24728     BIC.B #4,&$243
24729     MOV.B &$220,R14
24730     AND.B #$0F,R14
24731     MOV @R13+,R0
24732 ENDCODE
24733
24734 CODE LCD_WRC
24735     BIS.B #2,&$243
24736 BW1 SUB #2,R15
24737     MOV R14,0(R15)
24738     RRUM #4,R14
24739     BIC.B #1,&$243
24740     BIS.B #$0F,&$224
24741 COLON
24742     TOP_LCD 2 20_US
24743     TOP_LCD 2 20_US 
24744 ;
24745
24746 CODE LCD_WRF
24747     BIC.B #2,&$243
24748     GOTO BW1
24749 ENDCODE
24750
24751 : LCD_CLEAR $01 LCD_WRF 100 20_us ;
24752 : LCD_HOME $02 LCD_WRF 100 20_us ;
24753
24754
24755
24756 ASM WDT_INT
24757 ADD #2,R1
24758 BIT.B #$20,&$240
24759 0= IF
24760     CMP #19,&$3D6
24761     U< IF
24762         ADD #1,&$3D6
24763     THEN
24764 ELSE
24765     BIT.B #$40,&$240
24766     0= IF
24767         CMP #3,&$3D6
24768         U>= IF
24769            SUB #1,&$3D6
24770         THEN
24771     THEN
24772 THEN
24773 BW1
24774 MOV @R1+,R0
24775 ENDASM
24776
24777 ASM RC5_INT
24778 ADD #2,R1
24779 $1806 @ 16000 = [IF]
24780     MOV #1,&$3A0
24781 [THEN]
24782 $1806 @ 24000 = [IF]
24783     MOV #2,&$3A0
24784 [THEN]
24785 MOV #1778,R9
24786 MOV #14,R10
24787 BEGIN
24788 MOV #%1011100100,&$380
24789     RRUM    #1,R9
24790     MOV     R9,R8
24791     RRUM    #1,R8
24792     ADD     R9,R8
24793     BEGIN   CMP R8,&$390
24794     U>= UNTIL
24795     BIT.B   #4,&$200
24796     ADDC    R11,R11
24797     MOV.B   &$200,&$208
24798     BIC.B   #4,&$20C
24799     SUB     #1,R10
24800 0<> WHILE
24801     ADD R9,R8
24802     BEGIN
24803         MOV &$390,R9
24804         CMP R8,R9
24805         U>= IF
24806         BIC #$30,&$380
24807         GOTO BW1
24808         THEN
24809         BIT.B #4,&$20C
24810     0<> UNTIL
24811 REPEAT
24812 BIC #$30,&$380
24813 RLAM    #1,R11
24814 MOV.B   R11,R9
24815 RRUM    #2,R9
24816 BIT     #$4000,R11
24817 0= IF   BIS #$40,R9
24818 THEN
24819 RRUM    #3,R11
24820 XOR     @R1,R11
24821 BIT     #$400,R11
24822 0= ?GOTO BW1
24823 XOR #$400,0(R1)
24824 SUB #8,R15
24825 MOV R14,6(R15)
24826 MOV &$1DDC,4(R15)
24827 MOV #$10,&$1DDC
24828 MOV R9,0(R15)
24829 MOV #0,R14
24830 LO2HI
24831     LCD_CLEAR
24832     <# # #S #36 HOLD #>
24833     ['] LCD_WRC IS EMIT
24834     TYPE
24835     ['] EMIT >BODY IS EMIT
24836 HI2LO
24837 MOV @R15+,&$1DDC
24838 MOV @R15+,R14
24839 MOV @R1+,R0
24840 ENDASM
24841
24842 ASM BACKGROUND
24843 BEGIN
24844     CALL &$1814
24845     BIS &$180A,R2
24846 AGAIN
24847 ENDASM
24848
24849 ASM SYS_OUT
24850     MOV #WARM,R9
24851     ADD #4,R9
24852     MOV R9,R0
24853 ENDASM
24854
24855 CODE STOP
24856 BW1 MOV #$4000,R9
24857     ADD #4,R9
24858     MOV R9,-2(R9)
24859     MOV #WARM,R9
24860     MOV #SYS_OUT,2(R9)
24861     BIC.B #4,&$20A
24862     BIC.B #4,&$20C
24863     MOV #0,&$3C0
24864     MOV #0,&$340
24865     MOV #0,&$342
24866     MOV #COLD,R9
24867     MOV R9,&$FFDE
24868     MOV R9,&$FFEA
24869 COLON
24870 ECHO
24871 ." RC5toLCD is removed,"
24872 ."  type START to restart"
24873  WARM
24874 ;
24875
24876 CODE SYS_INIT
24877 MOV #%10_1101_0100,&$3C0
24878 $1806 @ 16000 = [IF]
24879     MOV #1,&$3E0
24880 [THEN]
24881 $1806 @ 24000 = [IF]
24882     MOV #2,&$3E0
24883 [THEN]
24884     MOV #19,&$3D2
24885 MOV #%0110_0000,&$3C6
24886     MOV #10,&$3D6
24887     BIS.B #$20,&$204
24888     BIS.B #$20,&$20A
24889     BIS.B #7,&$245
24890     BIC.B #7,&$247
24891     BIS.B #$0F,&$224
24892     BIC.B #$0F,&$226
24893     BIS.B #4,&$20A
24894     BIC.B #4,&$20C
24895     MOV #RC5_INT,&$FFDE
24896 MOV #%01_0001_0100,&$340
24897     MOV ##3276,&$352
24898     MOV #%10000,&$342
24899     MOV #WDT_INT,&$FFEA
24900 BIC #1,&$130
24901 BIS.B #3,&$20D
24902 MOV &$1808,R8
24903 CMP #4,R8
24904 0= ?GOTO BW1
24905 COLON
24906     #1000 20_US
24907     %011 TOP_LCD
24908     #205 20_US
24909     %011 TOP_LCD
24910     #5 20_US
24911     %011 TOP_LCD
24912     #2 20_US
24913     %010 TOP_LCD
24914     #2 20_US
24915     %00101000 LCD_WRF
24916     %1000 LCD_WRF
24917     LCD_CLEAR
24918     %0110 LCD_WRF
24919     %1100 LCD_WRF
24920     LCD_CLEAR
24921     ['] LCD_HOME IS CR
24922     ['] LCD_WRC  IS EMIT
24923     CR ." I love you"
24924     ['] CR >BODY IS CR
24925     ['] EMIT >BODY IS EMIT
24926     ." RC5toLCD is running. Type STOP to quit"
24927     PWR_STATE ABORT
24928 ;
24929
24930 CODE START
24931 MOV #$4000,R9
24932 MOV #BACKGROUND,2(R9)
24933 MOV #WARM,R9
24934 MOV #SYS_INIT,2(R9)
24935 MOV R9,R0
24936 ENDCODE 
24937
24938 ECHO
24939             ; downloading RC5toLCD.4th is done
24940 RST_HERE    ; this app is protected against <reset>
24941